changeset 125:49f3d3878413 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author fubar
date Sat, 05 Oct 2024 23:58:05 +0000
parents 137e08517410
children
files __pycache__/jbrowse2.cpython-312.pyc foo jbrowse2.xml test-data/bw/m:e.r.l .i-n.bw x/bedscoreplugin.js x/build_env_setup.sh x/conda_build.sh x/config.json x/galaxy.xml x/index.html x/jb2_webserver.py x/manifest.json x/me.r.l.i-n.bw_0 x/merlin.fa.fa.gz x/merlin.fa.fa.gz.fai x/merlin.fa.fa.gz.gzi x/metadata_conda_debug.yaml x/static/css/3120.6d3f3959.chunk.css x/static/css/3120.6d3f3959.chunk.css.map x/static/js/1012.a7d14de3.chunk.js x/static/js/1029.8c806427.chunk.js x/static/js/1051.8e1641e2.chunk.js x/static/js/1051.8e1641e2.chunk.js.map x/static/js/1110.702cba94.chunk.js x/static/js/1110.702cba94.chunk.js.map x/static/js/1157.c0d4652e.chunk.js x/static/js/1157.c0d4652e.chunk.js.map x/static/js/1189.f18c6e1f.chunk.js x/static/js/1189.f18c6e1f.chunk.js.map x/static/js/12.c0c7bdf9.chunk.js x/static/js/12.c0c7bdf9.chunk.js.map x/static/js/120.a447052d.chunk.js x/static/js/1260.ee4ecbf4.chunk.js x/static/js/1260.ee4ecbf4.chunk.js.map x/static/js/1266.cd6d9354.chunk.js x/static/js/1266.cd6d9354.chunk.js.map x/static/js/1281.1d836fc4.chunk.js x/static/js/1281.1d836fc4.chunk.js.map x/static/js/1304.a512b560.chunk.js x/static/js/1304.a512b560.chunk.js.map x/static/js/1310.8a044016.chunk.js x/static/js/1326.19289940.chunk.js x/static/js/1326.19289940.chunk.js.map x/static/js/1345.aaaaf175.chunk.js x/static/js/1345.aaaaf175.chunk.js.map x/static/js/1354.ded982ce.chunk.js x/static/js/14.b9913d1d.chunk.js x/static/js/14.b9913d1d.chunk.js.map x/static/js/1503.cc48d25a.chunk.js x/static/js/1503.cc48d25a.chunk.js.map x/static/js/1516.ca4ab8f0.chunk.js x/static/js/1516.ca4ab8f0.chunk.js.map x/static/js/1537.4fdb4e95.chunk.js x/static/js/1537.4fdb4e95.chunk.js.map x/static/js/1598.3b48685f.chunk.js x/static/js/1598.3b48685f.chunk.js.map x/static/js/1637.21a8cf01.chunk.js x/static/js/1696.8a290cef.chunk.js x/static/js/1696.8a290cef.chunk.js.map x/static/js/1725.795fc4d3.chunk.js x/static/js/1725.795fc4d3.chunk.js.map x/static/js/1752.a727a500.chunk.js x/static/js/1752.a727a500.chunk.js.map x/static/js/1757.a6d05bc3.chunk.js x/static/js/1811.7cfd8419.chunk.js x/static/js/1811.7cfd8419.chunk.js.map x/static/js/1822.2cbe112a.chunk.js x/static/js/1822.2cbe112a.chunk.js.map x/static/js/1824.c2ed4bca.chunk.js x/static/js/1978.1faf7d31.chunk.js x/static/js/1996.a37d9ec7.chunk.js x/static/js/1999.2554e815.chunk.js x/static/js/2018.9ce7fb06.chunk.js x/static/js/2018.9ce7fb06.chunk.js.map x/static/js/2047.b1e80504.chunk.js x/static/js/2047.b1e80504.chunk.js.map x/static/js/2062.a28f26f8.chunk.js x/static/js/2062.a28f26f8.chunk.js.map x/static/js/2141.d36fb4a8.chunk.js x/static/js/2141.d36fb4a8.chunk.js.map x/static/js/2189.3c65daf8.chunk.js x/static/js/2189.3c65daf8.chunk.js.map x/static/js/2197.a5134ce4.chunk.js x/static/js/2212.116fbbf4.chunk.js x/static/js/2241.3d359b22.chunk.js x/static/js/2241.3d359b22.chunk.js.map x/static/js/2246.e5e65a4f.chunk.js x/static/js/2246.e5e65a4f.chunk.js.map x/static/js/2249.b91f0bb3.chunk.js x/static/js/2249.b91f0bb3.chunk.js.map x/static/js/2306.f8d640f4.chunk.js x/static/js/2306.f8d640f4.chunk.js.map x/static/js/2321.ef211da9.chunk.js x/static/js/2398.731eb1c6.chunk.js x/static/js/2412.10574f7d.chunk.js x/static/js/2412.10574f7d.chunk.js.map x/static/js/2418.0b1f308b.chunk.js x/static/js/2418.0b1f308b.chunk.js.map x/static/js/2424.7cd6703f.chunk.js x/static/js/2424.7cd6703f.chunk.js.map x/static/js/246.9848bd41.chunk.js x/static/js/246.9848bd41.chunk.js.map x/static/js/2493.20e8e76c.chunk.js x/static/js/2583.db78b17f.chunk.js x/static/js/26.604133d9.chunk.js x/static/js/2627.300bea43.chunk.js x/static/js/2627.300bea43.chunk.js.map x/static/js/2645.4b79a04c.chunk.js x/static/js/2645.4b79a04c.chunk.js.map x/static/js/266.94eb2bf9.chunk.js x/static/js/266.94eb2bf9.chunk.js.map x/static/js/2697.4ab94d07.chunk.js x/static/js/2697.4ab94d07.chunk.js.map x/static/js/2729.9660c29b.chunk.js x/static/js/2775.e25b4dd4.chunk.js x/static/js/2777.56f29f41.chunk.js x/static/js/2777.56f29f41.chunk.js.map x/static/js/2820.3c0e09be.chunk.js x/static/js/2820.3c0e09be.chunk.js.map x/static/js/2847.009c96ee.chunk.js x/static/js/2847.009c96ee.chunk.js.LICENSE.txt x/static/js/2847.009c96ee.chunk.js.map x/static/js/2861.aa6cd5b7.chunk.js x/static/js/2872.5129bbd8.chunk.js x/static/js/2872.5129bbd8.chunk.js.map x/static/js/2885.8a30e856.chunk.js x/static/js/2885.8a30e856.chunk.js.map x/static/js/2928.4ac8c386.chunk.js x/static/js/2928.4ac8c386.chunk.js.map x/static/js/2968.4d90773a.chunk.js x/static/js/2968.4d90773a.chunk.js.map x/static/js/2977.aa562b03.chunk.js x/static/js/2977.aa562b03.chunk.js.map x/static/js/2989.031b43a0.chunk.js x/static/js/2989.031b43a0.chunk.js.map x/static/js/3003.0f0cbacd.chunk.js x/static/js/3011.9da53e7c.chunk.js x/static/js/3011.9da53e7c.chunk.js.map x/static/js/3012.9940fd01.chunk.js x/static/js/3012.9940fd01.chunk.js.map x/static/js/3029.cd8dcca2.chunk.js x/static/js/3103.4dfe3f78.chunk.js x/static/js/3103.4dfe3f78.chunk.js.map x/static/js/3106.e1981605.chunk.js x/static/js/3106.e1981605.chunk.js.map x/static/js/3109.3173f682.chunk.js x/static/js/3109.3173f682.chunk.js.map x/static/js/311.2c004784.chunk.js x/static/js/311.2c004784.chunk.js.map x/static/js/3116.fa0100fd.chunk.js x/static/js/3116.fa0100fd.chunk.js.map x/static/js/3120.3940249f.chunk.js x/static/js/3120.3940249f.chunk.js.map x/static/js/3162.eb9bf76d.chunk.js x/static/js/3162.eb9bf76d.chunk.js.map x/static/js/3167.312d0953.chunk.js x/static/js/3167.312d0953.chunk.js.map x/static/js/3175.af2c93a5.chunk.js x/static/js/3175.af2c93a5.chunk.js.map x/static/js/3199.a36b17a7.chunk.js x/static/js/3199.a36b17a7.chunk.js.map x/static/js/3266.accbd4dc.chunk.js x/static/js/3266.accbd4dc.chunk.js.map x/static/js/3274.053c3df5.chunk.js x/static/js/3274.053c3df5.chunk.js.map x/static/js/3301.db457761.chunk.js x/static/js/3301.db457761.chunk.js.LICENSE.txt x/static/js/3301.db457761.chunk.js.map x/static/js/3304.65e5d8dd.chunk.js x/static/js/3304.65e5d8dd.chunk.js.map x/static/js/3311.92fac4a6.chunk.js x/static/js/3311.92fac4a6.chunk.js.map x/static/js/3368.6e9b017b.chunk.js x/static/js/3384.e146a796.chunk.js x/static/js/3384.e146a796.chunk.js.map x/static/js/3416.f7c72cbe.chunk.js x/static/js/3416.f7c72cbe.chunk.js.map x/static/js/3425.be85a6ad.chunk.js x/static/js/3425.be85a6ad.chunk.js.map x/static/js/3474.8c1888be.chunk.js x/static/js/3474.8c1888be.chunk.js.map x/static/js/3497.9db6611b.chunk.js x/static/js/3497.9db6611b.chunk.js.map x/static/js/3525.e74d3ff0.chunk.js x/static/js/3525.e74d3ff0.chunk.js.map x/static/js/3550.089089a8.chunk.js x/static/js/3550.089089a8.chunk.js.map x/static/js/3578.058bdae5.chunk.js x/static/js/3578.058bdae5.chunk.js.map x/static/js/3614.af493134.chunk.js x/static/js/3614.af493134.chunk.js.map x/static/js/366.b00bf6ca.chunk.js x/static/js/366.b00bf6ca.chunk.js.map x/static/js/3682.840e721c.chunk.js x/static/js/3682.840e721c.chunk.js.map x/static/js/3728.99a63442.chunk.js x/static/js/3778.e18101e6.chunk.js x/static/js/3778.e18101e6.chunk.js.map x/static/js/3795.0386c297.chunk.js x/static/js/3795.0386c297.chunk.js.map x/static/js/3862.9fd8e870.chunk.js x/static/js/3862.9fd8e870.chunk.js.map x/static/js/3902.69c7ff0c.chunk.js x/static/js/3902.69c7ff0c.chunk.js.LICENSE.txt x/static/js/3902.69c7ff0c.chunk.js.map x/static/js/3940.c8b3da50.chunk.js x/static/js/3940.c8b3da50.chunk.js.map x/static/js/399.e36b7683.chunk.js x/static/js/399.e36b7683.chunk.js.map x/static/js/4033.df8ecd0d.chunk.js x/static/js/4033.df8ecd0d.chunk.js.map x/static/js/4060.8757dbe8.chunk.js x/static/js/4060.8757dbe8.chunk.js.map x/static/js/4133.451f5e47.chunk.js x/static/js/4133.451f5e47.chunk.js.map x/static/js/4138.57ad92a3.chunk.js x/static/js/4138.57ad92a3.chunk.js.map x/static/js/419.021427b6.chunk.js x/static/js/419.021427b6.chunk.js.map x/static/js/4234.63e1ba57.chunk.js x/static/js/4234.63e1ba57.chunk.js.map x/static/js/4284.61dbc58f.chunk.js x/static/js/4284.61dbc58f.chunk.js.map x/static/js/4345.0a9072cc.chunk.js x/static/js/4345.0a9072cc.chunk.js.map x/static/js/439.bdc14632.chunk.js x/static/js/439.bdc14632.chunk.js.map x/static/js/4395.8fda7b8b.chunk.js x/static/js/4414.7f4caeab.chunk.js x/static/js/4435.a57cabe2.chunk.js x/static/js/4435.a57cabe2.chunk.js.map x/static/js/4456.93a06b74.chunk.js x/static/js/4456.93a06b74.chunk.js.map x/static/js/4499.3f0b2e70.chunk.js x/static/js/4499.3f0b2e70.chunk.js.map x/static/js/457.6d7b716d.chunk.js x/static/js/457.6d7b716d.chunk.js.map x/static/js/4615.dc35870f.chunk.js x/static/js/4629.1f1a55a3.chunk.js x/static/js/4629.1f1a55a3.chunk.js.map x/static/js/4630.f0bdb9f0.chunk.js x/static/js/4630.f0bdb9f0.chunk.js.map x/static/js/4659.b65d8547.chunk.js x/static/js/4704.9b3995ff.chunk.js x/static/js/4704.9b3995ff.chunk.js.map x/static/js/4741.5a289f5d.chunk.js x/static/js/4741.5a289f5d.chunk.js.map x/static/js/4753.834007ba.chunk.js x/static/js/4753.834007ba.chunk.js.map x/static/js/4755.8d938db2.chunk.js x/static/js/4755.8d938db2.chunk.js.map x/static/js/4770.3d757d6b.chunk.js x/static/js/4770.3d757d6b.chunk.js.map x/static/js/4773.6cd74b80.chunk.js x/static/js/4773.6cd74b80.chunk.js.map x/static/js/4806.7e497d7a.chunk.js x/static/js/4806.7e497d7a.chunk.js.map x/static/js/4861.6244e4c0.chunk.js x/static/js/4863.9dfed19c.chunk.js x/static/js/4863.9dfed19c.chunk.js.map x/static/js/4864.28cfc358.chunk.js x/static/js/4864.28cfc358.chunk.js.map x/static/js/489.43cb4a5f.chunk.js x/static/js/489.43cb4a5f.chunk.js.map x/static/js/4902.452e575b.chunk.js x/static/js/4902.452e575b.chunk.js.map x/static/js/491.0011d1ad.chunk.js x/static/js/491.0011d1ad.chunk.js.map x/static/js/4947.2e80fd2d.chunk.js x/static/js/4947.2e80fd2d.chunk.js.map x/static/js/4974.cf97ef5b.chunk.js x/static/js/4974.cf97ef5b.chunk.js.map x/static/js/5008.f8d32f92.chunk.js x/static/js/5008.f8d32f92.chunk.js.map x/static/js/5031.6eccfd35.chunk.js x/static/js/5031.6eccfd35.chunk.js.map x/static/js/5090.bc77ac67.chunk.js x/static/js/5099.14f82444.chunk.js x/static/js/5099.14f82444.chunk.js.LICENSE.txt x/static/js/5099.14f82444.chunk.js.map x/static/js/5101.993a6b6e.chunk.js x/static/js/5101.993a6b6e.chunk.js.map x/static/js/5132.00a31df0.chunk.js x/static/js/5132.00a31df0.chunk.js.map x/static/js/5156.75195722.chunk.js x/static/js/518.7222a328.chunk.js x/static/js/518.7222a328.chunk.js.map x/static/js/5189.3e22269d.chunk.js x/static/js/5189.3e22269d.chunk.js.map x/static/js/5243.9de20396.chunk.js x/static/js/5243.9de20396.chunk.js.map x/static/js/5255.af554ced.chunk.js x/static/js/5255.af554ced.chunk.js.LICENSE.txt x/static/js/5255.af554ced.chunk.js.map x/static/js/5260.e7b7aeb6.chunk.js x/static/js/5260.e7b7aeb6.chunk.js.map x/static/js/5327.8f1dcfc1.chunk.js x/static/js/5331.28d667f0.chunk.js x/static/js/5331.28d667f0.chunk.js.map x/static/js/5369.993afa3f.chunk.js x/static/js/5369.993afa3f.chunk.js.map x/static/js/5461.5c8cf5d1.chunk.js x/static/js/5461.5c8cf5d1.chunk.js.map x/static/js/5484.3ceeebff.chunk.js x/static/js/5484.3ceeebff.chunk.js.map x/static/js/5511.154ce441.chunk.js x/static/js/5515.671905b2.chunk.js x/static/js/5515.671905b2.chunk.js.map x/static/js/5595.b4517d69.chunk.js x/static/js/5595.b4517d69.chunk.js.LICENSE.txt x/static/js/5595.b4517d69.chunk.js.map x/static/js/5608.1b8d39e1.chunk.js x/static/js/5608.1b8d39e1.chunk.js.map x/static/js/561.8b38948f.chunk.js x/static/js/561.8b38948f.chunk.js.map x/static/js/5640.33b8306c.chunk.js x/static/js/5640.33b8306c.chunk.js.map x/static/js/5668.73016b9c.chunk.js x/static/js/5668.73016b9c.chunk.js.map x/static/js/5676.818528e8.chunk.js x/static/js/5676.818528e8.chunk.js.map x/static/js/5677.28a25579.chunk.js x/static/js/5677.28a25579.chunk.js.map x/static/js/5682.ea285a50.chunk.js x/static/js/5682.ea285a50.chunk.js.map x/static/js/5727.f7a524b6.chunk.js x/static/js/5727.f7a524b6.chunk.js.map x/static/js/5736.48705208.chunk.js x/static/js/5736.48705208.chunk.js.map x/static/js/5746.39e4296b.chunk.js x/static/js/5746.39e4296b.chunk.js.map x/static/js/5763.48010c9a.chunk.js x/static/js/5763.48010c9a.chunk.js.map x/static/js/5896.622b5e88.chunk.js x/static/js/5896.622b5e88.chunk.js.map x/static/js/5903.9145cef7.chunk.js x/static/js/5903.9145cef7.chunk.js.map x/static/js/5904.240caa72.chunk.js x/static/js/5904.240caa72.chunk.js.map x/static/js/5930.0ffd2546.chunk.js x/static/js/5930.0ffd2546.chunk.js.map x/static/js/5951.251be759.chunk.js x/static/js/5951.251be759.chunk.js.map x/static/js/596.84c38eb7.chunk.js x/static/js/596.84c38eb7.chunk.js.map x/static/js/5998.22bd8296.chunk.js x/static/js/5998.22bd8296.chunk.js.map x/static/js/6021.21769087.chunk.js x/static/js/6021.21769087.chunk.js.map x/static/js/6043.e402bf73.chunk.js x/static/js/6043.e402bf73.chunk.js.map x/static/js/6054.e0881c55.chunk.js x/static/js/6054.e0881c55.chunk.js.map x/static/js/6149.c6c4af73.chunk.js x/static/js/6157.96f40683.chunk.js x/static/js/6157.96f40683.chunk.js.map x/static/js/6205.903f897d.chunk.js x/static/js/6205.903f897d.chunk.js.map x/static/js/6214.0ed0ac32.chunk.js x/static/js/6214.0ed0ac32.chunk.js.map x/static/js/6235.93768761.chunk.js x/static/js/6235.93768761.chunk.js.map x/static/js/6310.ae82dc58.chunk.js x/static/js/6310.ae82dc58.chunk.js.map x/static/js/6323.1c706a2d.chunk.js x/static/js/6342.62a02e7b.chunk.js x/static/js/6391.aabba4a1.chunk.js x/static/js/6391.aabba4a1.chunk.js.map x/static/js/6395.f6027b24.chunk.js x/static/js/6395.f6027b24.chunk.js.map x/static/js/6397.8fc250af.chunk.js x/static/js/6423.1e8da08b.chunk.js x/static/js/6435.b4633aa1.chunk.js x/static/js/6435.b4633aa1.chunk.js.map x/static/js/6499.aac79904.chunk.js x/static/js/6499.aac79904.chunk.js.map x/static/js/6514.d36ecbb8.chunk.js x/static/js/6514.d36ecbb8.chunk.js.map x/static/js/6526.b2c8fd93.chunk.js x/static/js/6621.cf64e54c.chunk.js x/static/js/6621.cf64e54c.chunk.js.map x/static/js/6658.fe512b5a.chunk.js x/static/js/6658.fe512b5a.chunk.js.map x/static/js/6683.2a35f0fe.chunk.js x/static/js/6683.2a35f0fe.chunk.js.map x/static/js/6703.faa93a20.chunk.js x/static/js/6703.faa93a20.chunk.js.map x/static/js/6746.8d3f75be.chunk.js x/static/js/6746.8d3f75be.chunk.js.map x/static/js/6785.07d4b66b.chunk.js x/static/js/6799.754a77ae.chunk.js x/static/js/6823.6e35b0cf.chunk.js x/static/js/6823.6e35b0cf.chunk.js.map x/static/js/6833.c77c5928.chunk.js x/static/js/6833.c77c5928.chunk.js.map x/static/js/6834.bc9e9f2b.chunk.js x/static/js/6834.bc9e9f2b.chunk.js.map x/static/js/6837.a706c464.chunk.js x/static/js/6837.a706c464.chunk.js.map x/static/js/6861.66a2e4c0.chunk.js x/static/js/6861.66a2e4c0.chunk.js.map x/static/js/6932.a37ea756.chunk.js x/static/js/6932.a37ea756.chunk.js.map x/static/js/6946.dd09a891.chunk.js x/static/js/6946.dd09a891.chunk.js.map x/static/js/6999.3486cca0.chunk.js x/static/js/6999.3486cca0.chunk.js.map x/static/js/7013.5240d550.chunk.js x/static/js/7013.5240d550.chunk.js.map x/static/js/7067.e9508417.chunk.js x/static/js/7087.79101e8e.chunk.js x/static/js/7087.79101e8e.chunk.js.map x/static/js/7117.b3239756.chunk.js x/static/js/7117.b3239756.chunk.js.map x/static/js/7126.b4b7d70b.chunk.js x/static/js/7126.b4b7d70b.chunk.js.map x/static/js/7181.938de865.chunk.js x/static/js/7181.938de865.chunk.js.map x/static/js/7203.03e2b86a.chunk.js x/static/js/7203.03e2b86a.chunk.js.map x/static/js/722.4329bc98.chunk.js x/static/js/722.4329bc98.chunk.js.map x/static/js/7309.f9d18abb.chunk.js x/static/js/7309.f9d18abb.chunk.js.map x/static/js/7348.40afbdc0.chunk.js x/static/js/7348.40afbdc0.chunk.js.map x/static/js/7374.932d083d.chunk.js x/static/js/7374.932d083d.chunk.js.map x/static/js/7389.fa6a1eb0.chunk.js x/static/js/7389.fa6a1eb0.chunk.js.map x/static/js/7407.4421929d.chunk.js x/static/js/7407.4421929d.chunk.js.map x/static/js/7409.8e71acc1.chunk.js x/static/js/7409.8e71acc1.chunk.js.map x/static/js/741.a9772d36.chunk.js x/static/js/741.a9772d36.chunk.js.map x/static/js/7418.2ac24978.chunk.js x/static/js/7418.2ac24978.chunk.js.map x/static/js/7428.1e6f676f.chunk.js x/static/js/7428.1e6f676f.chunk.js.map x/static/js/7489.b8a76d29.chunk.js x/static/js/7489.b8a76d29.chunk.js.map x/static/js/7564.3a461e67.chunk.js x/static/js/7564.3a461e67.chunk.js.map x/static/js/7579.1b98701c.chunk.js x/static/js/7579.1b98701c.chunk.js.map x/static/js/7584.a162e3d6.chunk.js x/static/js/759.9c32be0d.chunk.js x/static/js/759.9c32be0d.chunk.js.map x/static/js/7627.31dfd44e.chunk.js x/static/js/7627.31dfd44e.chunk.js.map x/static/js/765.20669bca.chunk.js x/static/js/765.20669bca.chunk.js.map x/static/js/7663.e79b053a.chunk.js x/static/js/7663.e79b053a.chunk.js.map x/static/js/7706.430ce07e.chunk.js x/static/js/7706.430ce07e.chunk.js.map x/static/js/772.83c2d2db.chunk.js x/static/js/772.83c2d2db.chunk.js.map x/static/js/7753.87963fd9.chunk.js x/static/js/7753.87963fd9.chunk.js.map x/static/js/7761.0cf7cf29.chunk.js x/static/js/7761.0cf7cf29.chunk.js.map x/static/js/7773.7e072552.chunk.js x/static/js/7790.3790bece.chunk.js x/static/js/7790.3790bece.chunk.js.map x/static/js/7809.eb2c5f08.chunk.js x/static/js/7809.eb2c5f08.chunk.js.map x/static/js/7812.6bb31bfb.chunk.js x/static/js/7831.cfcb0221.chunk.js x/static/js/7831.cfcb0221.chunk.js.map x/static/js/7842.cbff451c.chunk.js x/static/js/7842.cbff451c.chunk.js.map x/static/js/7864.59d0de32.chunk.js x/static/js/7864.59d0de32.chunk.js.map x/static/js/7865.e02aee95.chunk.js x/static/js/7865.e02aee95.chunk.js.map x/static/js/7902.f48e3002.chunk.js x/static/js/7902.f48e3002.chunk.js.map x/static/js/7909.8f1d759d.chunk.js x/static/js/7911.764ec401.chunk.js x/static/js/7911.764ec401.chunk.js.LICENSE.txt x/static/js/7911.764ec401.chunk.js.map x/static/js/7974.3f19c570.chunk.js x/static/js/7974.3f19c570.chunk.js.map x/static/js/7991.5d96c772.chunk.js x/static/js/7991.5d96c772.chunk.js.map x/static/js/8007.3025c802.chunk.js x/static/js/8007.3025c802.chunk.js.LICENSE.txt x/static/js/8007.3025c802.chunk.js.map x/static/js/8009.a65f1b78.chunk.js x/static/js/8009.a65f1b78.chunk.js.map x/static/js/8052.7d772984.chunk.js x/static/js/8076.fc478e91.chunk.js x/static/js/8076.fc478e91.chunk.js.map x/static/js/8105.4fd35586.chunk.js x/static/js/8105.4fd35586.chunk.js.map x/static/js/8109.344e1845.chunk.js x/static/js/8109.344e1845.chunk.js.map x/static/js/8114.eb856986.chunk.js x/static/js/8120.85042513.chunk.js x/static/js/8120.85042513.chunk.js.map x/static/js/8150.09c54606.chunk.js x/static/js/8165.d07843b4.chunk.js x/static/js/8165.d07843b4.chunk.js.map x/static/js/8187.383aefbf.chunk.js x/static/js/8187.383aefbf.chunk.js.map x/static/js/8216.16f39607.chunk.js x/static/js/8301.877076ce.chunk.js x/static/js/8301.877076ce.chunk.js.map x/static/js/8341.fa84fa67.chunk.js x/static/js/8341.fa84fa67.chunk.js.map x/static/js/8343.dd515382.chunk.js x/static/js/8343.dd515382.chunk.js.map x/static/js/8408.2e2896bf.chunk.js x/static/js/8408.2e2896bf.chunk.js.map x/static/js/8424.a1a3e663.chunk.js x/static/js/8424.a1a3e663.chunk.js.map x/static/js/8435.484d30f8.chunk.js x/static/js/8435.484d30f8.chunk.js.map x/static/js/8483.7fadf4ea.chunk.js x/static/js/8483.7fadf4ea.chunk.js.map x/static/js/8526.5dd9c712.chunk.js x/static/js/8526.5dd9c712.chunk.js.map x/static/js/8528.f68ff14f.chunk.js x/static/js/8528.f68ff14f.chunk.js.map x/static/js/8535.189d090a.chunk.js x/static/js/8535.189d090a.chunk.js.map x/static/js/8546.0a89cbee.chunk.js x/static/js/8546.0a89cbee.chunk.js.map x/static/js/8556.0053a402.chunk.js x/static/js/8556.0053a402.chunk.js.map x/static/js/8565.c4ea9980.chunk.js x/static/js/8565.c4ea9980.chunk.js.map x/static/js/8582.9b93fffc.chunk.js x/static/js/8615.0950a86f.chunk.js x/static/js/8615.0950a86f.chunk.js.map x/static/js/8624.190dd7af.chunk.js x/static/js/8624.190dd7af.chunk.js.map x/static/js/8678.8424d5dc.chunk.js x/static/js/8678.8424d5dc.chunk.js.map x/static/js/8704.ae4808df.chunk.js x/static/js/8704.ae4808df.chunk.js.map x/static/js/8762.3d2b9142.chunk.js x/static/js/8762.3d2b9142.chunk.js.map x/static/js/8797.3168365d.chunk.js x/static/js/8797.3168365d.chunk.js.map x/static/js/8856.4593419f.chunk.js x/static/js/8856.4593419f.chunk.js.map x/static/js/8859.efb2561f.chunk.js x/static/js/8859.efb2561f.chunk.js.map x/static/js/8869.74066774.chunk.js x/static/js/8869.74066774.chunk.js.map x/static/js/8876.24bf6aed.chunk.js x/static/js/8876.24bf6aed.chunk.js.map x/static/js/8880.6ae9d985.chunk.js x/static/js/8880.6ae9d985.chunk.js.map x/static/js/8929.70ce258f.chunk.js x/static/js/8929.70ce258f.chunk.js.map x/static/js/8965.51db703f.chunk.js x/static/js/8965.51db703f.chunk.js.map x/static/js/8984.1a816123.chunk.js x/static/js/8984.1a816123.chunk.js.map x/static/js/9028.12f6efe2.chunk.js x/static/js/9028.12f6efe2.chunk.js.map x/static/js/9032.b54e1975.chunk.js x/static/js/9032.b54e1975.chunk.js.map x/static/js/9037.03715b7f.chunk.js x/static/js/9067.1cc02121.chunk.js x/static/js/9067.1cc02121.chunk.js.map x/static/js/9070.d49de235.chunk.js x/static/js/9070.d49de235.chunk.js.map x/static/js/9086.035adaa3.chunk.js x/static/js/9086.035adaa3.chunk.js.map x/static/js/9088.9fbbeb5c.chunk.js x/static/js/9088.9fbbeb5c.chunk.js.map x/static/js/9106.b274c701.chunk.js x/static/js/9106.b274c701.chunk.js.map x/static/js/9114.d412d44e.chunk.js x/static/js/9114.d412d44e.chunk.js.map x/static/js/9168.6afdec67.chunk.js x/static/js/9168.6afdec67.chunk.js.map x/static/js/9206.bbf34514.chunk.js x/static/js/9206.bbf34514.chunk.js.map x/static/js/9245.d882c265.chunk.js x/static/js/9245.d882c265.chunk.js.map x/static/js/9280.6e897b98.chunk.js x/static/js/9280.6e897b98.chunk.js.map x/static/js/9292.96b77fb0.chunk.js x/static/js/9292.96b77fb0.chunk.js.map x/static/js/9305.4d748fb5.chunk.js x/static/js/9305.4d748fb5.chunk.js.map x/static/js/9314.3e43d34c.chunk.js x/static/js/9314.3e43d34c.chunk.js.map x/static/js/9329.c269472b.chunk.js x/static/js/937.4f610bdf.chunk.js x/static/js/937.4f610bdf.chunk.js.map x/static/js/9372.67d6f914.chunk.js x/static/js/9372.67d6f914.chunk.js.map x/static/js/9374.8ac7e6d7.chunk.js x/static/js/9374.8ac7e6d7.chunk.js.map x/static/js/9384.a4e7a69a.chunk.js x/static/js/9384.a4e7a69a.chunk.js.map x/static/js/9409.c7569196.chunk.js x/static/js/9409.c7569196.chunk.js.map x/static/js/9449.2e1d2652.chunk.js x/static/js/9449.2e1d2652.chunk.js.map x/static/js/9458.07f0ae54.chunk.js x/static/js/9458.07f0ae54.chunk.js.map x/static/js/946.245d7df9.chunk.js x/static/js/946.245d7df9.chunk.js.map x/static/js/9589.9087e0ea.chunk.js x/static/js/9589.9087e0ea.chunk.js.map x/static/js/965.8524fdac.chunk.js x/static/js/965.8524fdac.chunk.js.map x/static/js/9657.0cccd5bf.chunk.js x/static/js/9657.0cccd5bf.chunk.js.map x/static/js/9658.33669a59.chunk.js x/static/js/9658.33669a59.chunk.js.map x/static/js/9675.b4f16970.chunk.js x/static/js/9675.b4f16970.chunk.js.map x/static/js/9690.0cd8a2c8.chunk.js x/static/js/972.c0d17685.chunk.js x/static/js/972.c0d17685.chunk.js.map x/static/js/9756.4ac80c37.chunk.js x/static/js/9756.4ac80c37.chunk.js.map x/static/js/9824.b9ece376.chunk.js x/static/js/9824.b9ece376.chunk.js.map x/static/js/9831.de8b3aa9.chunk.js x/static/js/9831.de8b3aa9.chunk.js.map x/static/js/9870.f395e633.chunk.js x/static/js/9870.f395e633.chunk.js.map x/static/js/9943.d3ab0f18.chunk.js x/static/js/main.1532dd54.js x/static/js/main.1532dd54.js.LICENSE.txt x/static/js/main.1532dd54.js.map x/static/media/roboto-cyrillic-400-normal.5d2930082227d172f62c.woff x/static/media/roboto-cyrillic-400-normal.a9e19870cf6c4b973427.woff2 x/static/media/roboto-cyrillic-ext-400-normal.135d076fa32aa0b4d105.woff x/static/media/roboto-cyrillic-ext-400-normal.5cec61a21cc20180fbe1.woff2 x/static/media/roboto-greek-400-normal.160a791a8e4f46bca3cc.woff x/static/media/roboto-greek-400-normal.2c32b1315be61477013a.woff2 x/static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff x/static/media/roboto-greek-ext-400-normal.1df4abad55796d11a0c8.woff2 x/static/media/roboto-latin-400-normal.047a7839f69b209db815.woff x/static/media/roboto-latin-400-normal.297d48e1b5a10c0831a9.woff2 x/static/media/roboto-latin-ext-400-normal.27da5b36b6d3a16f53f4.woff x/static/media/roboto-latin-ext-400-normal.2eeae187764baf05867d.woff2 x/static/media/roboto-vietnamese-400-normal.0dc97c66f9b542d6fa17.woff x/static/media/roboto-vietnamese-400-normal.d3f8e26d6c27de8102b6.woff2
diffstat 650 files changed, 3125 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file __pycache__/jbrowse2.cpython-312.pyc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foo	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,7 @@
+import xml.etree.ElementTree as ET
+import string
+removeMe = string.punctuation.replace('.', ' ').replace('/', '').replace('-', '')
+nopunct = str.maketrans(dict.fromkeys(removeMe))
+xmlstr = '<foo><bar key="!::{}////foo \\~~~~ bar">text</bar></foo>'
+root = ET.fromstring(xmlstr)
+print(root[0].attrib['key'],'=',root[0].attrib['key'].translate(nopunct))
--- a/jbrowse2.xml	Fri Oct 04 23:32:20 2024 +0000
+++ b/jbrowse2.xml	Sat Oct 05 23:58:05 2024 +0000
@@ -1128,6 +1128,45 @@
                     </has_archive_member>
                 </assert_contents>
             </output>
+        </test> 
+        <test>
+            <repeat name="assemblies">
+                <conditional name="reference_genome">
+                    <param name="genome_type_select" value="history"/>
+                    <param name="genome" value="merlin.fa"/>
+                    <param name="genome.ext" value="fasta"/>
+                    <param name="genome.name" value="Merlin"/>
+                </conditional>
+                <repeat name="track_groups">
+                    <param name="category" value="Default"/>
+                    <repeat name="data_tracks">
+                        <conditional name="data_format">
+                            <param name="data_format_select" value="bigwig"/>
+                            <conditional name="useuri">
+                                <param name="annotation" value="bw/m:e.r.l .i-n.bw"/>
+                                <param name="insource" value="history"/>
+                            </conditional>
+                        </conditional>
+                    </repeat>
+                </repeat>
+            </repeat>
+            <section name="jbgen">
+                <param name="zipOut" value="true"/>
+            </section>
+            <output name="output">
+                <assert_contents>
+                    <has_archive_member path="config.json">
+                        <has_text text="QuantitativeTrack"/>
+                        <has_text text="trackId"/>
+                        <has_text text="me.r.l.i-n.bw_0"/>
+                        <has_text text="name"/>
+                        <has_text text="Default"/>
+                        <has_text text="name"/>
+                        <has_text text="assemblyName"/>
+                        <has_text text="merlin.fa"/>
+                    </has_archive_member>
+                </assert_contents>
+            </output>
         </test>
     </tests>
     <help><![CDATA[
Binary file test-data/bw/m:e.r.l .i-n.bw has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/bedscoreplugin.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,26 @@
+// colour bed regions according to score - must have columns and score as part of the adapter setup
+;(function () {
+  class Plugin {
+    name = 'BedScorePlugin';
+    version = '1.0';
+
+    install(pluginManager) {
+      pluginManager.jexl.addFunction('customColor', feature => {
+        if (Number(feature.get('score')) > 0) {
+          return 'red';
+        } else {
+          return 'blue';
+        }
+      })
+    }
+
+    configure(pluginManager) {}
+  }
+
+  // the plugin will be included in both the main thread and web worker, so
+  // install plugin to either window or self (webworker global scope)
+  ;(typeof self !== 'undefined' ? self : window).JBrowsePluginBedScorePlugin =
+    {
+      default: Plugin,
+    }
+})()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/build_env_setup.sh	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,396 @@
+export CONDA_BUILD="1"
+export PYTHONNOUSERSITE="1"
+export CONDA_DEFAULT_ENV="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881"
+export ARCH="64"
+export PREFIX="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881"
+export BUILD_PREFIX="/opt/conda/conda-bld/jbrowse2_1726856947541/_build_env"
+export SYS_PREFIX="/opt/conda"
+export SYS_PYTHON="/opt/conda/bin/python"
+export SUBDIR="linux-64"
+export build_platform="linux-64"
+export SRC_DIR="/opt/conda/conda-bld/jbrowse2_1726856947541/work"
+export ROOT="/opt/conda"
+export CONDA_PY="312"
+export PY3K="1"
+export PY_VER="3.12"
+export STDLIB_DIR="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881/lib/python3.12"
+export SP_DIR="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881/lib/python3.12/site-packages"
+export NPY_VER="1.26"
+export CONDA_NPY="126"
+export NPY_DISTUTILS_APPEND_FLAGS="1"
+export PERL_VER="5.32"
+export CONDA_PERL="5.32"
+export LUA_VER="5"
+export CONDA_LUA="5"
+export R_VER="4.3.*"
+export CONDA_R="4.3.*"
+export PKG_NAME="jbrowse2"
+export PKG_VERSION="2.15.4"
+export PKG_BUILDNUM="0"
+export PKG_BUILD_STRING="placeholder"
+export PKG_HASH="1234567"
+export RECIPE_DIR="/opt/recipe"
+export CPU_COUNT="2"
+export LANG="C.UTF-8"
+export SHLIB_EXT=".so"
+export PATH="/opt/conda/conda-bld/jbrowse2_1726856947541/_build_env/bin:/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881/bin:/opt/conda/bin:/opt/conda/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/conda/bin"
+export HOME="/home/conda"
+export PKG_CONFIG_PATH="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881/lib/pkgconfig"
+export CMAKE_GENERATOR="Unix Makefiles"
+export LD_RUN_PATH="/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881/lib"
+export BUILD="x86_64-conda_cos6-linux-gnu"
+export zip_keys="[['c_compiler_version', 'cxx_compiler_version', 'fortran_compiler_version'], ['arrow_cpp', 'libarrow', 'libarrow_all'], ['python', 'numpy', 'python_impl'], ['c_stdlib_version', 'cdt_name']]"
+export pin_run_as_build="OrderedDict([('python', {'min_pin': 'x.x', 'max_pin': 'x.x'}), ('r-base', {'max_pin': 'x.x', 'min_pin': 'x.x'}), ('flann', {'max_pin': 'x.x.x'}), ('graphviz', {'max_pin': 'x'}), ('libsvm', {'max_pin': 'x'}), ('netcdf-cxx4', {'max_pin': 'x.x'}), ('occt', {'max_pin': 'x.x'}), ('poppler', {'max_pin': 'x.x'}), ('vlfeat', {'max_pin': 'x.x.x'})])"
+export extend_keys="{'ignore_version', 'pin_run_as_build', 'extend_keys', 'ignore_build_only_deps'}"
+export ignore_build_only_deps="{'python', 'numpy'}"
+export libyarp="3.9.0"
+export libintervalxt="3"
+export tk="8.6"
+export libmatio="1.5.26"
+export qt="5.15"
+export coin_or_cgl="0.60"
+export coincbc="2.10"
+export pixman="0"
+export libhugetlbfs="2"
+export libopencv="4.9.0"
+export ccr="1.3"
+export superlu_dist="8"
+export libsoup="3"
+export pyqtwebengine="5.15"
+export hdf4="4.2.15"
+export gst_plugins_base="1.22"
+export eclib="20231211"
+export google_cloud_cpp_common="0.25.0"
+export dcap="2.47"
+export slepc4py="3.21"
+export scotch="7.0.4"
+export snappy="1.2"
+export suitesparse="5"
+export libblitz="1.0.2"
+export libabseil_static="20220623.0"
+export libflatsurf="3"
+export pulseaudio="17.0"
+export libcblas="3.9 *netlib"
+export libgoogle_cloud_dlp_devel="2.24"
+export rocksdb="9.1"
+export _libgcc_mutex="0.1 conda_forge"
+export gnuradio_core="3.10.10"
+export librdkafka="2.4"
+export libdap4="3.20.6"
+export aws_c_auth="0.7.22"
+export channel_targets="bioconda main"
+export libhwloc="2.10.0"
+export pyqt="5.15"
+export cpu_optimization_target="nocona"
+export assimp="5.3.1"
+export mpfr="4"
+export pcre2="10.43"
+export gsl="2.7"
+export ptscotch="7.0.4"
+export xrootd="5"
+export arpack="3.8"
+export cxx_compiler="gxx"
+export sdl2_net="2"
+export target_goos="linux"
+export elfutils="0.191"
+export libhwy="1.1"
+export uhd="4.6.0"
+export petsc="3.21"
+export pulseaudio_daemon="17.0"
+export libeantic="2"
+export libopentelemetry_cpp="1.15"
+export bamtools="2.5.2"
+export openblas="0.3.*"
+export icu="73"
+export libiio="0"
+export x264="1!164.*"
+export mpich="4"
+export pybind11_abi="4"
+export nettle="3.9"
+export libwebp_base="1"
+export abseil_cpp="20220623.0"
+export thrift_cpp="0.18.1"
+export openmpi="4"
+export coin_or_cbc="2.10"
+export openslide="4"
+export libscotch="7.0.4"
+export sdl2_mixer="2"
+export fontconfig="2"
+export libgoogle_cloud_oauth2_devel="2.24"
+export grpc_cpp="1.52"
+export libmatio_cpp="0.2.5"
+export libboost_python_devel="1.82"
+export openh264="2.4.1"
+export pcre="8"
+export vlfeat="0.9.21"
+export mumps_seq="5.7.1"
+export gct="6.2.1705709074"
+export openssl="3"
+export dbus="1"
+export googleapis_cpp="0.10"
+export xz="5"
+export coin_or_clp="1.17"
+export libcurl="8"
+export aws_checksums="0.1.18"
+export libtensorflow="2.15"
+export libidn2="2"
+export aws_c_common="0.9.19"
+export google_cloud_cpp="2.24"
+export libsqlite="3"
+export libthrift="0.20.0"
+export ucx="1.16.0"
+export re2="2023.09.01"
+export c_compiler="gcc"
+export zlib="1.2"
+export gnutls="3.7"
+export aws_sdk_cpp="1.11.267"
+export mpg123="1.32"
+export libevent="2.1.12"
+export go_compiler="go-nocgo"
+export libarchive="3.7"
+export msgpack_c="6"
+export ntl="11.4.3"
+export davix="0.8"
+export libev="4.33"
+export ruby="2.6"
+export glog="0.6"
+export libopenvino_dev="2024.1.0"
+export exiv2="0.28"
+export libpng="1.6"
+export ncurses="6"
+export lz4_c="1.9.3"
+export libzip="1"
+export sqlite="3"
+export postgresql_plpython="16"
+export libprotobuf="4.25.3"
+export gdal="3.8"
+export libcint="5.5"
+export geos="3.12.1"
+export qt6_main="6.7"
+export libgdal="3.8"
+export occt="7.7.2"
+export lcms2="2"
+export librsvg="2"
+export libgoogle_cloud_bigquery_devel="2.24"
+export libffi="3.4"
+export tinyxml2="10"
+export zstd="1.5"
+export fmt="10"
+export libframel="8.41"
+export libgoogle_cloud_dialogflow_cx_devel="2.24"
+export jsoncpp="1.9.5"
+export libgoogle_cloud_dialogflow_es_devel="2.24"
+export target_platform="linux-64"
+export gflags="2.2"
+export aws_c_sdkutils="0.1.16"
+export aws_c_http="0.8.1"
+export netcdf_cxx4="4.3"
+export libjpeg_turbo="3"
+export sox="14.4.2"
+export VERBOSE_CM="VERBOSE=1"
+export jasper="4"
+export coin_or_osi="0.108"
+export spdlog="1.12"
+export libgoogle_cloud_automl_devel="2.24"
+export libtorch="2.1"
+export libgrpc="1.62"
+export libgit2="1.8"
+export readline="8"
+export jpeg="9"
+export libmicrohttpd="1.0"
+export pari="2.15.* *_pthread"
+export libv8="8.9.83"
+export cuda_compiler_version="None"
+export openexr="3.2"
+export nspr="4"
+export libssh2="1"
+export urdfdom="4.0"
+export tiledb="2.23"
+export aws_c_compression="0.2.18"
+export coin_or_utils="2.11"
+export zeromq="4.3.5"
+export libgoogle_cloud_policytroubleshooter_devel="2.24"
+export metis="5.1.0"
+export libraw="0.21"
+export libpq="16"
+export mimalloc="2.1.7"
+export svt_av1="2.1.0"
+export libpcap="1.10"
+export curl="8"
+export lzo="2"
+export idyntree="12"
+export x265="3.5"
+export c_blosc2="2.14"
+export libiconv="1"
+export slepc="3.21"
+export libflint="2.9"
+export libgoogle_cloud_compute_devel="2.24"
+export libvips="8"
+export nlopt="2.7"
+export gstreamer="1.22"
+export libtensorflow_cc="2.15"
+export cutensor="2"
+export aws_c_s3="0.5.9"
+export c_stdlib="sysroot"
+export libode="0.16.2"
+export zlib_ng="2.0"
+export geotiff="1.7.1"
+export libsecret="0.18"
+export libabseil="20240116"
+export hdf5="1.14.3"
+export libmed="4.1"
+export netcdf_fortran="4.6"
+export libptscotch="7.0.4"
+export libcrc32c="1.1"
+export glew="2.1"
+export kealib="1.5"
+export sdl2_image="2"
+export channel_sources="conda-forge,bioconda"
+export harfbuzz="8"
+export nodejs="18"
+export libduckdb_devel="0.9.2"
+export pytorch="2.1"
+export pulseaudio_client="17.0"
+export aws_crt_cpp="0.26.9"
+export pango="1.50"
+export alsa_lib="1.2"
+export bzip2="1"
+export tbb="2021"
+export root_base="6.28.10"
+export libnetcdf="4.9.2"
+export cran_mirror="https://cran.r-project.org"
+export wxwidgets="3.2"
+export orc="2.0.1"
+export singular="4.3.2.p8"
+export libspatialindex="1.9.3"
+export p11_kit="0.24"
+export cuda_compiler="None"
+export log4cxx="1.2.0"
+export cuda_compiler_version_min="11.8"
+export msgpack_cxx="6"
+export libxml2="2"
+export fftw="3"
+export libuuid="2"
+export wcslib="8"
+export VERBOSE_AT="V=1"
+export cudnn="8"
+export mkl="2023"
+export ldas_tools_framecpp="2.9"
+export libgoogle_cloud_aiplatform_devel="2.24"
+export pyqtchart="5.15"
+export qtkeychain="0.14"
+export blas_impl="blis"
+export nss="3"
+export gdk_pixbuf="2"
+export gf2x="1.3"
+export tensorflow="2.15"
+export liblapacke="3.9 *netlib"
+export libgoogle_cloud_spanner_devel="2.24"
+export pcl="1.14.0"
+export krb5="1.21"
+export libsvm="332"
+export libexactreal="4"
+export cgo_compiler="go-cgo"
+export petsc4py="3.21"
+export poppler="24.04"
+export aws_c_event_stream="0.4.2"
+export vtk="9.2.6"
+export libkml="1.3"
+export libssh="0.10"
+export flann="1.9.2"
+export gfal2="2.22"
+export cfitsio="4.3.0"
+export s2n="1.4.15"
+export rdma_core="51"
+export json_c="0.17"
+export zfp="1.0"
+export libgoogle_cloud_devel="2.24"
+export giflib="5.2"
+export soapysdr="0.8"
+export libblas="3.9 *netlib"
+export openjpeg="2"
+export mkl_devel="2023"
+export imath="3.1.11"
+export glib="2"
+export libboost_devel="1.82"
+export target_gobin="${PREFIX}/bin/"
+export libsentencepiece="0.2.0"
+export pugixml="1.14"
+export antic="0.2"
+export libgoogle_cloud_bigtable_devel="2.24"
+export sdl2="2"
+export ipopt="3.14.16"
+export mumps_mpi="5.7.1"
+export qt_main="5.15"
+export c_ares="1"
+export volk="3.1"
+export libgoogle_cloud_pubsub_devel="2.24"
+export aws_c_cal="0.6.14"
+export ffmpeg="6"
+export libunwind="1.6"
+export gmp="6"
+export sdl2_ttf="2"
+export capnproto="1.0.2"
+export isl="0.26"
+export libgoogle_cloud_iam_devel="2.24"
+export libaec="1"
+export tbb_devel="2021"
+export xerces_c="3.2"
+export liblapack="3.9 *netlib"
+export cairo="1"
+export libtiff="4.6"
+export aws_c_io="0.14.8"
+export dav1d="1.2.1"
+export lerc="4"
+export target_goarch="amd64"
+export proj="9.3.1"
+export arb="2.23"
+export aws_c_mqtt="0.10.4"
+export libgoogle_cloud_speech_devel="2.24"
+export expat="2"
+export bullet_cpp="3.25"
+export srm_ifce="1.24.6"
+export libgoogle_cloud_storage_devel="2.24"
+export libavif="1"
+export postgresql="16"
+export glpk="5.0"
+export graphviz="9"
+export lmdb="0.9.29"
+export flatbuffers="24.3.25"
+export libxsmm="1"
+export freetype="2"
+export console_bridge="1.0"
+export libgoogle_cloud="2.24"
+export aom="3.8"
+export rust_compiler="rust"
+export libgoogle_cloud_all_devel="2.24"
+export libdeflate="1.20"
+export nccl="2"
+export libgoogle_cloud_discoveryengine_devel="2.24"
+export attr="2.5"
+export gsoap="2.8.123"
+export starlink_ast="9.2.7"
+export fortran_compiler="gfortran"
+export r_base="4.3.*"
+export libwebp="1"
+export libsndfile="1.2"
+export poco="1.13.3"
+export libosqp="0.6.3"
+export arrow_cpp="15"
+export libarrow="15"
+export libarrow_all="15"
+export python_impl="cpython"
+export c_stdlib_version="2.17"
+export cdt_name="cos6"
+export c_compiler_version="12"
+export cxx_compiler_version="12"
+export fortran_compiler_version="12"
+export CONDA_BUILD_STATE="BUILD"
+export PIP_NO_BUILD_ISOLATION="False"
+export PIP_NO_DEPENDENCIES="True"
+export PIP_IGNORE_INSTALLED="True"
+export PIP_CACHE_DIR="/opt/conda/conda-bld/jbrowse2_1726856947541/pip_cache"
+export PIP_NO_INDEX="True"
+eval "$('/opt/conda/bin/python' -m conda shell.bash hook)"
+conda activate "/home/ross/miniconda3/envs/mulled-v1-ead19212d339c2197ed3232dcd8366627d23ccb1cf4fb8ae3186545effdca881"
+conda activate --stack "/opt/conda/conda-bld/jbrowse2_1726856947541/_build_env"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/conda_build.sh	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,20 @@
+if [ -z ${CONDA_BUILD+x} ]; then
+    source /opt/conda/conda-bld/jbrowse2_1726856947541/work/build_env_setup.sh
+fi
+#!/bin/bash
+
+# Place the jbrowse2 www content in the conda package
+mkdir -p $PREFIX/opt/jbrowse2/
+cp -r * $PREFIX/opt/jbrowse2/
+
+# Set an env var for people willing to find the jbrowse2 www content
+mkdir -p $PREFIX/etc/conda/activate.d/
+echo "export JBROWSE2_SOURCE_DIR=$PREFIX/opt/jbrowse2" > $PREFIX/etc/conda/activate.d/jbrowse2-sourcedir.sh
+chmod a+x $PREFIX/etc/conda/activate.d/jbrowse2-sourcedir.sh
+
+mkdir -p $PREFIX/etc/conda/deactivate.d/
+echo "unset JBROWSE2_SOURCE_DIR" > $PREFIX/etc/conda/deactivate.d/jbrowse2-sourcedir.sh
+chmod a+x $PREFIX/etc/conda/deactivate.d/jbrowse2-sourcedir.sh
+
+# Install the CLI
+npm install --prefix=${PREFIX} -g @jbrowse/cli@${PKG_VERSION}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/config.json	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,132 @@
+{
+  "configuration": {
+    "disableAnalytics": false,
+    "theme": {
+      "palette": {
+        "primary": {
+          "main": "#0d233f"
+        },
+        "secondary": {
+          "main": "#721e63"
+        },
+        "tertiary": {
+          "main": "#135560"
+        },
+        "quaternary": {
+          "main": "#ffb11d"
+        }
+      },
+      "typography": {
+        "fontSize": 10
+      }
+    }
+  },
+  "defaultSession": {
+    "name": "New JBrowse2 session",
+    "views": [
+      {
+        "type": "LinearGenomeView",
+        "offsetPx": 0,
+        "bpPerPx": 50,
+        "minimized": false,
+        "tracks": [
+          {
+            "type": "QuantitativeTrack",
+            "configuration": "me.r.l.i-n.bw_0",
+            "displays": [
+              {
+                "type": "LinearWiggleDisplay",
+                "displayId": "me.r.l.i-n.bw_0-LinearWiggleDisplay",
+                "color": "#135560",
+                "autoscale": "globalsd",
+                "resolution": 1,
+                "summaryScoreMode": "whiskers",
+                "filled": false,
+                "scaleType": "linear",
+                "displayCrossHatches": false,
+                "configuration": "me.r.l.i-n.bw_0-LinearWiggleDisplay"
+              }
+            ]
+          }
+        ],
+        "displayedRegions": [
+          {
+            "reversed": false,
+            "assemblyName": "merlin.fa",
+            "refName": "Merlin",
+            "start": 0,
+            "end": 172788
+          }
+        ]
+      }
+    ]
+  },
+  "tracks": [
+    {
+      "type": "QuantitativeTrack",
+      "trackId": "me.r.l.i-n.bw_0",
+      "name": "me.r.l.i-n.bw_0",
+      "category": [
+        "Default"
+      ],
+      "assemblyNames": [
+        "merlin.fa"
+      ],
+      "adapter": {
+        "type": "BigWigAdapter",
+        "bigWigLocation": {
+          "uri": "me.r.l.i-n.bw_0"
+        }
+      },
+      "displays": [
+        {
+          "type": "LinearWiggleDisplay",
+          "displayId": "me.r.l.i-n.bw_0-LinearWiggleDisplay"
+        }
+      ],
+      "style": {
+        "type": "LinearWiggleDisplay",
+        "displayId": "me.r.l.i-n.bw_0-LinearWiggleDisplay",
+        "color": "#135560",
+        "autoscale": "globalsd",
+        "resolution": 1,
+        "summaryScoreMode": "whiskers",
+        "filled": false,
+        "scaleType": "linear",
+        "displayCrossHatches": false,
+        "configuration": "me.r.l.i-n.bw_0-LinearWiggleDisplay"
+      }
+    }
+  ],
+  "assemblies": [
+    {
+      "name": "merlin.fa",
+      "sequence": {
+        "type": "ReferenceSequenceTrack",
+        "trackId": "merlin.fa",
+        "adapter": {
+          "type": "BgzipFastaAdapter",
+          "fastaLocation": {
+            "uri": "merlin.fa.fa.gz"
+          },
+          "faiLocation": {
+            "uri": "merlin.fa.fa.gz.fai"
+          },
+          "gziLocation": {
+            "uri": "merlin.fa.fa.gz.gzi"
+          }
+        }
+      },
+      "displays": [
+        {
+          "type": "LinearReferenceSequenceDisplay",
+          "displayId": "merlin.fa-LinearReferenceSequenceDisplay"
+        },
+        {
+          "type": "LinearGCContentDisplay",
+          "displayId": "merlin.fa-LinearGCContentDisplay"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/galaxy.xml	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<root>
+    <metadata>
+        <general>
+            <defaultLocation></defaultLocation>
+            <zipOut>true</zipOut>
+            <bpPerPx>50</bpPerPx>
+            <analytics>false</analytics>
+            <primary_color>#0d233f</primary_color>
+            <secondary_color>#721e63</secondary_color>
+            <tertiary_color>#135560</tertiary_color>
+            <quaternary_color>#ffb11d</quaternary_color>
+            <font_size>10</font_size>
+            <session_name>New JBrowse2 session</session_name>
+        </general>
+        <galaxyUrl>http://localhost:8080</galaxyUrl>
+    </metadata>
+    <assembly>
+        <metadata>
+            <genomes>
+                  <genome path="/tmp/tmp1o397r1c/files/0/8/7/dataset_087ee618-c1bb-44f5-8154-b99f36c6c9d0.dat" label="merlin.fa" useuri="no">
+                    <metadata>
+
+                      <dataset id="8209a7ce5c994d06"
+                          hid="1"
+                          size="171.6 KB"
+                          edam_format="format_1929"
+                          file_ext="fasta"
+                          dname = "merlin.fa"
+                          />
+                      <history
+                          user_email="planemo@galaxyproject.org"
+                          user_id="1"
+                          display_name="Tool Test History for jbrowse2/2.15.4+galaxy4-0"/>
+                          id="8209a7ce5c994d06"
+                          />
+                      <metadata
+                              dbkey="?"
+                              data_lines="2881"
+                              sequences="1"
+                          />
+                      <tool
+                          tool_id="upload1"
+                          tool_version="1.1.7"
+                          />
+                    </metadata>
+                  </genome>
+            </genomes>
+    </metadata>
+    <tracks>
+                    <track cat="Default" format="bigwig" visibility="default_on">
+                    <files>
+                              <trackFile path="/tmp/tmp1o397r1c/files/6/d/0/dataset_6d084510-481a-476e-b695-007342a696de.dat" ext="bigwig" label="m:e.r.l .i-n.bw" useuri="no">
+                                <metadata>
+                                  <dataset id="5bf1d76d98c8e935" hid="2"
+                                      size="81.6 KB"
+                                      edam_format="format_3006"
+                                      file_ext="bigwig" />
+                                  <history id="8209a7ce5c994d06"
+                                      user_email="planemo@galaxyproject.org"
+                                      user_id="1"
+                                      display_name="Tool Test History for jbrowse2/2.15.4+galaxy4-0"/>
+                                  <metadata
+                                        dbkey="?"
+                                      />
+                                  <tool
+                                      tool_id="upload1"
+                                      tool_version="1.1.7"
+                                      />
+                                </metadata>
+                              </trackFile>
+                    </files>
+                      <options>
+                        <style>
+                                <type>LinearWiggleDisplay</type>
+                                <color>#135560</color>
+                                <autoscale>globalsd</autoscale>
+                                <resolution>1</resolution>
+                                <summaryScoreMode>whiskers</summaryScoreMode>
+                                <filled>true</filled>
+                                <scaleType>linear</scaleType>
+                                <displayCrossHatches>true</displayCrossHatches>
+                                <minScore></minScore>
+                                <maxScore></maxScore>
+                        </style>
+                        </options>
+                  </track>
+    </tracks>
+    </assembly>
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/index.html	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="A fast and flexible genome browser"/><link rel="manifest" href="./manifest.json"/><title>JBrowse</title><script defer="defer" src="static/js/main.1532dd54.js"></script></head><body style="overscroll-behavior:none"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/jb2_webserver.py	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,187 @@
+#!/usr/bin/env python3
+# spec: simplest python web server with range support and multithreading that takes root path,
+# port and bind address as command line arguments; by default uses the current dir as webroot,
+# port 8000 and bind address of 0.0.0.0
+# borrowed from https://github.com/danvk/RangeHTTPServer
+# and reborrowed from https://gist.github.com/glowinthedark/b99900abe935e4ab4857314d647a9068
+#
+# The Apache 2.0 license copy in this repository is distributed with this code in accordance with that licence.
+# https://www.apache.org/licenses/LICENSE-2.0.txt
+# This part is not MIT licenced like the other components.
+
+# APPENDIX: How to apply the Apache License to your work.
+
+# To apply the Apache License to your work, attach the following
+# boilerplate notice, with the fields enclosed by brackets "[]"
+# replaced with your own identifying information. (Don't include
+# the brackets!)  The text should be enclosed in the appropriate
+# comment syntax for the file format. We also recommend that a
+# file or class name and description of purpose be included on the
+# same "printed page" as the copyright notice for easier
+# identification within third-party archives.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import argparse
+import functools
+import os
+import re
+import socketserver
+import webbrowser
+from http.server import SimpleHTTPRequestHandler
+
+
+DEFAULT_PORT = 8081
+
+
+def copy_byte_range(infile, outfile, start=None, stop=None, bufsize=16 * 1024):
+    """Like shutil.copyfileobj, but only copy a range of the streams.
+
+    Both start and stop are inclusive.
+    """
+    if start is not None:
+        infile.seek(start)
+    while 1:
+        to_read = min(bufsize, stop + 1 - infile.tell() if stop else bufsize)
+        buf = infile.read(to_read)
+        if not buf:
+            break
+        outfile.write(buf)
+
+
+BYTE_RANGE_RE = re.compile(r"bytes=(\d+)-(\d+)?$")
+
+
+def parse_byte_range(byte_range):
+    """Returns the two numbers in 'bytes=123-456' or throws ValueError.
+
+    The last number or both numbers may be None.
+    """
+    if byte_range.strip() == "":
+        return None, None
+
+    m = BYTE_RANGE_RE.match(byte_range)
+    if not m:
+        raise ValueError("Invalid byte range %s" % byte_range)
+
+    first, last = [x and int(x) for x in m.groups()]
+    if last and last < first:
+        raise ValueError("Invalid byte range %s" % byte_range)
+    return first, last
+
+
+class RangeRequestHandler(SimpleHTTPRequestHandler):
+    """Adds support for HTTP 'Range' requests to SimpleHTTPRequestHandler
+
+    The approach is to:
+    - Override send_head to look for 'Range' and respond appropriately.
+    - Override copyfile to only transmit a range when requested.
+    """
+
+    def handle(self):
+        try:
+            SimpleHTTPRequestHandler.handle(self)
+        except Exception:
+            # ignored, thrown whenever the client aborts streaming (broken pipe)
+            pass
+
+    def send_head(self):
+        if "Range" not in self.headers:
+            self.range = None
+            return SimpleHTTPRequestHandler.send_head(self)
+        try:
+            self.range = parse_byte_range(self.headers["Range"])
+        except ValueError:
+            self.send_error(400, "Invalid byte range")
+            return None
+        first, last = self.range
+
+        # Mirroring SimpleHTTPServer.py here
+        path = self.translate_path(self.path)
+        f = None
+        ctype = self.guess_type(path)
+        try:
+            f = open(path, "rb")
+        except IOError:
+            self.send_error(404, "File not found")
+            return None
+
+        fs = os.fstat(f.fileno())
+        file_len = fs[6]
+        if first >= file_len:
+            self.send_error(416, "Requested Range Not Satisfiable")
+            return None
+
+        self.send_response(206)
+        self.send_header("Content-type", ctype)
+
+        if last is None or last >= file_len:
+            last = file_len - 1
+        response_length = last - first + 1
+
+        self.send_header("Content-Range", "bytes %s-%s/%s" % (first, last, file_len))
+        self.send_header("Content-Length", str(response_length))
+        self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
+        self.end_headers()
+        return f
+
+    def end_headers(self):
+        self.send_header("Accept-Ranges", "bytes")
+        return SimpleHTTPRequestHandler.end_headers(self)
+
+    def copyfile(self, source, outputfile):
+        if not self.range:
+            return SimpleHTTPRequestHandler.copyfile(self, source, outputfile)
+
+        # SimpleHTTPRequestHandler uses shutil.copyfileobj, which doesn't let
+        # you stop the copying before the end of the file.
+        start, stop = self.range  # set in send_head()
+        copy_byte_range(source, outputfile, start, stop)
+
+
+class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
+    allow_reuse_address = True
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="Tiny Python Web Server supporting range requests, for local viewing of unzipped Galaxy JBrowse2 configurations"
+    )
+    parser.add_argument(
+        "--root",
+        default=os.getcwd(),
+        help="Root path to serve files from (default: current working directory)",
+    )
+    parser.add_argument(
+        "--port",
+        type=int,
+        default=DEFAULT_PORT,
+        help=f"Port to listen on (default: {DEFAULT_PORT})",
+    )
+    parser.add_argument(
+        "--bind",
+        default="127.0.0.1",
+        help="IP address to bind to (default: 127.0.0.1 - use 0.0.0.0 to allow access on your network)",
+    )
+    args = parser.parse_args()
+
+    handler = functools.partial(RangeRequestHandler, directory=args.root)
+
+    webbrowser.open(f"http://{args.bind}:{args.port}")
+
+    with ThreadedTCPServer((args.bind, args.port), handler) as httpd:
+        print(
+            f"Serving HTTP on {args.bind} port {args.port} (http://{args.bind}:{args.port}/)"
+        )
+        httpd.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/manifest.json	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,15 @@
+{
+  "short_name": "JBrowse",
+  "name": "JBrowse",
+  "icons": [
+    {
+      "src": "favicon.ico",
+      "sizes": "64x64 48x48 32x32 24x24 16x16",
+      "type": "image/x-icon"
+    }
+  ],
+  "start_url": ".",
+  "display": "standalone",
+  "theme_color": "#396494",
+  "background_color": "#fafafa"
+}
Binary file x/me.r.l.i-n.bw_0 has changed
Binary file x/merlin.fa.fa.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/merlin.fa.fa.gz.fai	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+Merlin	172788	8	60	61
Binary file x/merlin.fa.fa.gz.gzi has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/metadata_conda_debug.yaml	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,33 @@
+package:
+  name: jbrowse2
+  version: 2.15.4
+source:
+  sha256: fa0a6163dab65d1705c1968cc41adc0f6b035a8fbc572b7ddff12721b5b58642
+  url: https://github.com/GMOD/jbrowse-components/releases/download/v2.15.4/jbrowse-web-v2.15.4.zip
+build:
+  noarch: generic
+  number: '0'
+  run_exports:
+    - jbrowse2
+requirements:
+  host:
+    - nodejs
+  run:
+    - nodejs
+    - bcftools
+    - gff3sort
+    - htslib
+    - samtools
+test:
+  commands:
+    - jbrowse help | grep "command line tool for working with JBrowse"
+about:
+  home: https://jbrowse.org/
+  license: Apache-2.0
+  license_family: Apache
+  summary: The JBrowse 2 Genome Browser
+extra:
+  final: false
+  identifiers:
+    - biotools:jbrowse
+    - doi:10.1101/gr.094607.109
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/css/3120.6d3f3959.chunk.css	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,71 @@
+/* roboto-cyrillic-ext-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-cyrillic-ext-400-normal.5cec61a21cc20180fbe1.woff2) format('woff2'), url(../../static/media/roboto-cyrillic-ext-400-normal.135d076fa32aa0b4d105.woff) format('woff');
+  unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* roboto-cyrillic-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-cyrillic-400-normal.a9e19870cf6c4b973427.woff2) format('woff2'), url(../../static/media/roboto-cyrillic-400-normal.5d2930082227d172f62c.woff) format('woff');
+  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* roboto-greek-ext-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-greek-ext-400-normal.1df4abad55796d11a0c8.woff2) format('woff2'), url(../../static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff) format('woff');
+  unicode-range: U+1F00-1FFF;
+}
+
+/* roboto-greek-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-greek-400-normal.2c32b1315be61477013a.woff2) format('woff2'), url(../../static/media/roboto-greek-400-normal.160a791a8e4f46bca3cc.woff) format('woff');
+  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
+}
+
+/* roboto-vietnamese-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-vietnamese-400-normal.d3f8e26d6c27de8102b6.woff2) format('woff2'), url(../../static/media/roboto-vietnamese-400-normal.0dc97c66f9b542d6fa17.woff) format('woff');
+  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
+}
+
+/* roboto-latin-ext-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-latin-ext-400-normal.2eeae187764baf05867d.woff2) format('woff2'), url(../../static/media/roboto-latin-ext-400-normal.27da5b36b6d3a16f53f4.woff) format('woff');
+  unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* roboto-latin-400-normal */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-display: swap;
+  font-weight: 400;
+  src: url(../../static/media/roboto-latin-400-normal.297d48e1b5a10c0831a9.woff2) format('woff2'), url(../../static/media/roboto-latin-400-normal.047a7839f69b209db815.woff) format('woff');
+  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
+
+/*# sourceMappingURL=3120.6d3f3959.chunk.css.map*/
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/css/3120.6d3f3959.chunk.css.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/css/3120.6d3f3959.chunk.css","mappings":"AAAA,mCAAmC;AACnC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oHAAuI;EACvI,iFAAiF;AACnF;;AAEA,+BAA+B;AAC/B;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oHAA+H;EAC/H,gEAAgE;AAClE;;AAEA,gCAAgC;AAChC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oHAAiI;EACjI,0BAA0B;AAC5B;;AAEA,4BAA4B;AAC5B;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oHAAyH;EACzH,iFAAiF;AACnF;;AAEA,iCAAiC;AACjC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oHAAmI;EACnI,2JAA2J;AAC7J;;AAEA,gCAAgC;AAChC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,sHAAiI;EACjI,qIAAqI;AACvI;;AAEA,4BAA4B;AAC5B;EACE,qBAAqB;EACrB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,sHAAyH;EACzH,8KAA8K;AAChL,C","sources":["../../../node_modules/@fontsource/roboto/index.css"],"sourcesContent":["/* roboto-cyrillic-ext-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff');\n  unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* roboto-cyrillic-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff');\n  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* roboto-greek-ext-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff');\n  unicode-range: U+1F00-1FFF;\n}\n\n/* roboto-greek-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff');\n  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* roboto-vietnamese-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff');\n  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* roboto-latin-ext-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff');\n  unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* roboto-latin-400-normal */\n@font-face {\n  font-family: 'Roboto';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 400;\n  src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff');\n  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}"],"names":[],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1012.a7d14de3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1012],{21012:(e,s,t)=>{t.r(s),t.d(s,{default:()=>l.A,getToggleButtonGroupUtilityClass:()=>o.y,toggleButtonGroupClasses:()=>o.A});var l=t(43787),o=t(67647)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1029.8c806427.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1029],{41029:(s,a,e)=>{e.r(a),e.d(a,{default:()=>l.A,dialogClasses:()=>b.A,getDialogUtilityClass:()=>b.f});var l=e(40985),b=e(23113)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1051.8e1641e2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1051],{21051:(e,t,l)=>{l.r(t),l.d(t,{default:()=>o});var n=l(7552),r=l(68446),c=l(9236),i=l(90257);const o=(0,r.observer)((function({model:e,mouserect:t,mouserectClient:l,xdistance:r}){const{hview:o,vview:s,viewHeight:u}=e;return t?n.createElement(c.default,{placement:r<0?"left":"right",clientPoint:l?{x:l[0],y:l[1]}:void 0},`x - ${(0,i.wJ)(t[0],o)}`,n.createElement("br",null),`y - ${(0,i.wJ)(u-t[1],s)}`,n.createElement("br",null)):null}))}}]);
+//# sourceMappingURL=1051.8e1641e2.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1051.8e1641e2.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1051.8e1641e2.chunk.js","mappings":"qMAUA,MA4BA,GA5BgCA,EAAAA,EAAAA,WAAS,UAAU,MACjDC,EAAK,UACLC,EAAS,gBACTC,EAAe,UACfC,IAOA,MAAM,MAAEC,EAAK,MAAEC,EAAK,WAAEC,GAAeN,EACrC,OAAOC,EACLM,EAAAA,cAACC,EAAAA,QAAW,CACVC,UAAWN,EAAY,EAAI,OAAS,QACpCO,YACER,EACI,CAAES,EAAGT,EAAgB,GAAIU,EAAGV,EAAgB,SAC5CW,GAGL,QAAOC,EAAAA,EAAAA,IAAOb,EAAU,GAAIG,KAC7BG,EAAAA,cAAA,WACC,QAAOO,EAAAA,EAAAA,IAAOR,EAAaL,EAAU,GAAII,KAC1CE,EAAAA,cAAA,YAEA,IACN,G","sources":["../../../plugins/dotplot-view/src/DotplotView/components/DotplotTooltipMouseover.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport BaseTooltip from '@jbrowse/core/ui/BaseTooltip'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport { locstr } from './util'\n\ntype Coord = [number, number] | undefined\n\nconst DotplotTooltipMouseover = observer(function ({\n  model,\n  mouserect,\n  mouserectClient,\n  xdistance,\n}: {\n  model: DotplotViewModel\n  mouserect: Coord\n  mouserectClient: Coord\n  xdistance: number\n}) {\n  const { hview, vview, viewHeight } = model\n  return mouserect ? (\n    <BaseTooltip\n      placement={xdistance < 0 ? 'left' : 'right'}\n      clientPoint={\n        mouserectClient\n          ? { x: mouserectClient[0], y: mouserectClient[1] }\n          : undefined\n      }\n    >\n      {`x - ${locstr(mouserect[0], hview)}`}\n      <br />\n      {`y - ${locstr(viewHeight - mouserect[1], vview)}`}\n      <br />\n    </BaseTooltip>\n  ) : null\n})\nexport default DotplotTooltipMouseover\n"],"names":["observer","model","mouserect","mouserectClient","xdistance","hview","vview","viewHeight","React","BaseTooltip","placement","clientPoint","x","y","undefined","locstr"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1110.702cba94.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1110],{91110:(e,t,o)=>{o.r(t),o.d(t,{default:()=>Y,getTabsUtilityClass:()=>I,tabsClasses:()=>T});var r=o(7552),l=(o(19487),o(93878)),n=o(70799),s=o(93876),a=o(1045),i=o(51148),c=o(48231),d=o(60129),u=o(4785),b=o(987);function f(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}var h=o(82910),p=o(46689),v=o(69500);const S={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};var m=o(129),w=o(20168),y=o(48054),A=o(33761),g=o(85693);function B(e){return(0,g.Ay)("MuiTabScrollButton",e)}const x=(0,A.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),C=(0,i.Ay)(y.A,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.orientation&&t[o.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${x.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),M=r.forwardRef((function(e,t){const o=(0,u.b)({props:e,name:"MuiTabScrollButton"}),{className:r,slots:i={},slotProps:c={},direction:d,orientation:b,disabled:f,...h}=o,p=(0,s.I)(),S={isRtl:p,...o},y=(e=>{const{classes:t,orientation:o,disabled:r}=e,l={root:["root",o,r&&"disabled"]};return(0,n.A)(l,B,t)})(S),A=i.StartScrollButtonIcon??m.A,g=i.EndScrollButtonIcon??w.A,x=(0,a.A)({elementType:A,externalSlotProps:c.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S}),M=(0,a.A)({elementType:g,externalSlotProps:c.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S});return(0,v.jsx)(C,{component:"div",className:(0,l.A)(y.root,r),ref:t,role:null,ownerState:S,tabIndex:null,...h,style:{...h.style,..."vertical"===b&&{"--TabScrollButton-svgRotate":`rotate(${p?-90:90}deg)`}},children:"left"===d?(0,v.jsx)(A,{...x}):(0,v.jsx)(g,{...M})})}));var E=o(87422);function I(e){return(0,g.Ay)("MuiTabs",e)}const T=(0,A.A)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]);var R=o(6676);const k=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,z=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,L=(e,t,o)=>{let r=!1,l=o(e,t);for(;l;){if(l===e.firstChild){if(r)return;r=!0}const t=l.disabled||"true"===l.getAttribute("aria-disabled");if(l.hasAttribute("tabindex")&&!t)return void l.focus();l=o(e,l)}},j=(0,i.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[{[`& .${T.scrollButtons}`]:t.scrollButtons},{[`& .${T.scrollButtons}`]:o.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,o.vertical&&t.vertical]}})((0,d.A)((({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.scrollButtonsHideMobile,style:{[`& .${T.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]})))),N=(0,i.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.scroller,o.fixed&&t.fixed,o.hideScrollbar&&t.hideScrollbar,o.scrollableX&&t.scrollableX,o.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),P=(0,i.Ay)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.flexContainer,o.vertical&&t.flexContainerVertical,o.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),X=(0,i.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})((0,d.A)((({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:e})=>e.vertical,style:{height:"100%",width:2,right:0}}]})))),H=(0,i.Ay)((function(e){const{onChange:t,...o}=e,l=r.useRef(),n=r.useRef(null),s=()=>{l.current=n.current.offsetHeight-n.current.clientHeight};return(0,h.A)((()=>{const e=(0,b.A)((()=>{const e=l.current;s(),e!==l.current&&t(l.current)})),o=(0,p.A)(n.current);return o.addEventListener("resize",e),()=>{e.clear(),o.removeEventListener("resize",e)}}),[t]),r.useEffect((()=>{s(),t(l.current)}),[t]),(0,v.jsx)("div",{style:S,ref:n,...o})}))({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),W={},Y=r.forwardRef((function(e,t){const o=(0,u.b)({props:e,name:"MuiTabs"}),i=(0,c.A)(),d=(0,s.I)(),{"aria-label":h,"aria-labelledby":S,action:m,centered:w=!1,children:y,className:A,component:g="div",allowScrollButtonsMobile:B=!1,indicatorColor:x="primary",onChange:C,orientation:T="horizontal",ScrollButtonComponent:Y=M,scrollButtons:D="auto",selectionFollowsFocus:F,slots:O={},slotProps:$={},TabIndicatorProps:V={},TabScrollButtonProps:_={},textColor:q="primary",value:K,variant:U="standard",visibleScrollbar:G=!1,...J}=o,Q="scrollable"===U,Z="vertical"===T,ee=Z?"scrollTop":"scrollLeft",te=Z?"top":"left",oe=Z?"bottom":"right",re=Z?"clientHeight":"clientWidth",le=Z?"height":"width",ne={...o,component:g,allowScrollButtonsMobile:B,indicatorColor:x,orientation:T,vertical:Z,scrollButtons:D,textColor:q,variant:U,visibleScrollbar:G,fixed:!Q,hideScrollbar:Q&&!G,scrollableX:Q&&!Z,scrollableY:Q&&Z,centered:w&&!Q,scrollButtonsHideMobile:!B},se=(e=>{const{vertical:t,fixed:o,hideScrollbar:r,scrollableX:l,scrollableY:s,centered:a,scrollButtonsHideMobile:i,classes:c}=e,d={root:["root",t&&"vertical"],scroller:["scroller",o&&"fixed",r&&"hideScrollbar",l&&"scrollableX",s&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",a&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",i&&"scrollButtonsHideMobile"],scrollableX:[l&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]};return(0,n.A)(d,I,c)})(ne),ae=(0,a.A)({elementType:O.StartScrollButtonIcon,externalSlotProps:$.startScrollButtonIcon,ownerState:ne}),ie=(0,a.A)({elementType:O.EndScrollButtonIcon,externalSlotProps:$.endScrollButtonIcon,ownerState:ne}),[ce,de]=r.useState(!1),[ue,be]=r.useState(W),[fe,he]=r.useState(!1),[pe,ve]=r.useState(!1),[Se,me]=r.useState(!1),[we,ye]=r.useState({overflow:"hidden",scrollbarWidth:0}),Ae=new Map,ge=r.useRef(null),Be=r.useRef(null),xe=()=>{const e=ge.current;let t,o;if(e){const o=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollWidth:e.scrollWidth,top:o.top,bottom:o.bottom,left:o.left,right:o.right}}if(e&&!1!==K){const e=Be.current.children;if(e.length>0){const t=e[Ae.get(K)];o=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:o}},Ce=(0,E.A)((()=>{const{tabsMeta:e,tabMeta:t}=xe();let o,r=0;Z?(o="top",t&&e&&(r=t.top-e.top+e.scrollTop)):(o=d?"right":"left",t&&e&&(r=(d?-1:1)*(t[o]-e[o]+e.scrollLeft)));const l={[o]:r,[le]:t?t[le]:0};if("number"!=typeof ue[o]||"number"!=typeof ue[le])be(l);else{const e=Math.abs(ue[o]-l[o]),t=Math.abs(ue[le]-l[le]);(e>=1||t>=1)&&be(l)}})),Me=(e,{animation:t=!0}={})=>{t?function(e,t,o,r={},l=()=>{}){const{ease:n=f,duration:s=300}=r;let a=null;const i=t[e];let c=!1;const d=r=>{if(c)return void l(new Error("Animation cancelled"));null===a&&(a=r);const u=Math.min(1,(r-a)/s);t[e]=n(u)*(o-i)+i,u>=1?requestAnimationFrame((()=>{l(null)})):requestAnimationFrame(d)};i===o?l(new Error("Element already at target position")):requestAnimationFrame(d)}(ee,ge.current,e,{duration:i.transitions.duration.standard}):ge.current[ee]=e},Ee=e=>{let t=ge.current[ee];t+=Z?e:e*(d?-1:1),Me(t)},Ie=()=>{const e=ge.current[re];let t=0;const o=Array.from(Be.current.children);for(let r=0;r<o.length;r+=1){const l=o[r];if(t+l[re]>e){0===r&&(t=e);break}t+=l[re]}return t},Te=()=>{Ee(-1*Ie())},Re=()=>{Ee(Ie())},ke=r.useCallback((e=>{ye({overflow:null,scrollbarWidth:e})}),[]),ze=(0,E.A)((e=>{const{tabsMeta:t,tabMeta:o}=xe();if(o&&t)if(o[te]<t[te]){const r=t[ee]+(o[te]-t[te]);Me(r,{animation:e})}else if(o[oe]>t[oe]){const r=t[ee]+(o[oe]-t[oe]);Me(r,{animation:e})}})),Le=(0,E.A)((()=>{Q&&!1!==D&&me(!Se)}));r.useEffect((()=>{const e=(0,b.A)((()=>{ge.current&&Ce()}));let t;const o=(0,p.A)(ge.current);let r;return o.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(Be.current.children).forEach((e=>{t.observe(e)}))),"undefined"!=typeof MutationObserver&&(r=new MutationObserver((o=>{o.forEach((e=>{e.removedNodes.forEach((e=>{t?.unobserve(e)})),e.addedNodes.forEach((e=>{t?.observe(e)}))})),e(),Le()})),r.observe(Be.current,{childList:!0})),()=>{e.clear(),o.removeEventListener("resize",e),r?.disconnect(),t?.disconnect()}}),[Ce,Le]),r.useEffect((()=>{const e=Array.from(Be.current.children),t=e.length;if("undefined"!=typeof IntersectionObserver&&t>0&&Q&&!1!==D){const o=e[0],r=e[t-1],l={root:ge.current,threshold:.99},n=new IntersectionObserver((e=>{he(!e[0].isIntersecting)}),l);n.observe(o);const s=new IntersectionObserver((e=>{ve(!e[0].isIntersecting)}),l);return s.observe(r),()=>{n.disconnect(),s.disconnect()}}}),[Q,D,Se,y?.length]),r.useEffect((()=>{de(!0)}),[]),r.useEffect((()=>{Ce()})),r.useEffect((()=>{ze(W!==ue)}),[ze,ue]),r.useImperativeHandle(m,(()=>({updateIndicator:Ce,updateScrollButtons:Le})),[Ce,Le]);const je=(0,v.jsx)(X,{...V,className:(0,l.A)(se.indicator,V.className),ownerState:ne,style:{...ue,...V.style}});let Ne=0;const Pe=r.Children.map(y,(e=>{if(!r.isValidElement(e))return null;const t=void 0===e.props.value?Ne:e.props.value;Ae.set(t,Ne);const o=t===K;return Ne+=1,r.cloneElement(e,{fullWidth:"fullWidth"===U,indicator:o&&!ce&&je,selected:o,selectionFollowsFocus:F,onChange:C,textColor:q,value:t,...1!==Ne||!1!==K||e.props.tabIndex?{}:{tabIndex:0}})})),Xe=(()=>{const e={};e.scrollbarSizeListener=Q?(0,v.jsx)(H,{onChange:ke,className:(0,l.A)(se.scrollableX,se.hideScrollbar)}):null;const t=Q&&("auto"===D&&(fe||pe)||!0===D);return e.scrollButtonStart=t?(0,v.jsx)(Y,{slots:{StartScrollButtonIcon:O.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:ae},orientation:T,direction:d?"right":"left",onClick:Te,disabled:!fe,..._,className:(0,l.A)(se.scrollButtons,_.className)}):null,e.scrollButtonEnd=t?(0,v.jsx)(Y,{slots:{EndScrollButtonIcon:O.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:ie},orientation:T,direction:d?"left":"right",onClick:Re,disabled:!pe,..._,className:(0,l.A)(se.scrollButtons,_.className)}):null,e})();return(0,v.jsxs)(j,{className:(0,l.A)(se.root,A),ownerState:ne,ref:t,as:g,...J,children:[Xe.scrollButtonStart,Xe.scrollbarSizeListener,(0,v.jsxs)(N,{className:se.scroller,ownerState:ne,style:{overflow:we.overflow,[Z?"margin"+(d?"Left":"Right"):"marginBottom"]:G?void 0:-we.scrollbarWidth},ref:ge,children:[(0,v.jsx)(P,{"aria-label":h,"aria-labelledby":S,"aria-orientation":"vertical"===T?"vertical":null,className:se.flexContainer,ownerState:ne,onKeyDown:e=>{const t=Be.current,o=(0,R.A)(t).activeElement;if("tab"!==o.getAttribute("role"))return;let r="horizontal"===T?"ArrowLeft":"ArrowUp",l="horizontal"===T?"ArrowRight":"ArrowDown";switch("horizontal"===T&&d&&(r="ArrowRight",l="ArrowLeft"),e.key){case r:e.preventDefault(),L(t,o,z);break;case l:e.preventDefault(),L(t,o,k);break;case"Home":e.preventDefault(),L(t,null,k);break;case"End":e.preventDefault(),L(t,null,z)}},ref:Be,role:"tablist",children:Pe}),ce&&je]}),Xe.scrollButtonEnd]})}))},129:(e,t,o)=>{o.d(t,{A:()=>n}),o(7552);var r=o(74893),l=o(69500);const n=(0,r.A)((0,l.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft")},20168:(e,t,o)=>{o.d(t,{A:()=>n}),o(7552);var r=o(74893),l=o(69500);const n=(0,r.A)((0,l.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight")}}]);
+//# sourceMappingURL=1110.702cba94.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1110.702cba94.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1110.702cba94.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/animate.js","../../../node_modules/@mui/material/Tabs/ScrollbarSize.js","../../../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../../../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../../../node_modules/@mui/material/Tabs/tabsClasses.js","../../../node_modules/@mui/material/Tabs/Tabs.js","../../../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../../../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js"],"sourcesContent":["function easeInOutSin(time) {\n  return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n  const {\n    ease = easeInOutSin,\n    duration = 300 // standard\n  } = options;\n  let start = null;\n  const from = element[property];\n  let cancelled = false;\n  const cancel = () => {\n    cancelled = true;\n  };\n  const step = timestamp => {\n    if (cancelled) {\n      cb(new Error('Animation cancelled'));\n      return;\n    }\n    if (start === null) {\n      start = timestamp;\n    }\n    const time = Math.min(1, (timestamp - start) / duration);\n    element[property] = ease(time) * (to - from) + from;\n    if (time >= 1) {\n      requestAnimationFrame(() => {\n        cb(null);\n      });\n      return;\n    }\n    requestAnimationFrame(step);\n  };\n  if (from === to) {\n    cb(new Error('Element already at target position'));\n    return cancel;\n  }\n  requestAnimationFrame(step);\n  return cancel;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from \"../utils/debounce.js\";\nimport { ownerWindow, unstable_useEnhancedEffect as useEnhancedEffect } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  width: 99,\n  height: 99,\n  position: 'absolute',\n  top: -9999,\n  overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nexport default function ScrollbarSize(props) {\n  const {\n    onChange,\n    ...other\n  } = props;\n  const scrollbarHeight = React.useRef();\n  const nodeRef = React.useRef(null);\n  const setMeasurements = () => {\n    scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n  };\n  useEnhancedEffect(() => {\n    const handleResize = debounce(() => {\n      const prevHeight = scrollbarHeight.current;\n      setMeasurements();\n      if (prevHeight !== scrollbarHeight.current) {\n        onChange(scrollbarHeight.current);\n      }\n    });\n    const containerWindow = ownerWindow(nodeRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [onChange]);\n  React.useEffect(() => {\n    setMeasurements();\n    onChange(scrollbarHeight.current);\n  }, [onChange]);\n  return /*#__PURE__*/_jsx(\"div\", {\n    style: styles,\n    ref: nodeRef,\n    ...other\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n  onChange: PropTypes.func.isRequired\n} : void 0;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabScrollButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;","'use client';\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport KeyboardArrowLeft from \"../internal/svg-icons/KeyboardArrowLeft.js\";\nimport KeyboardArrowRight from \"../internal/svg-icons/KeyboardArrowRight.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from \"./tabScrollButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, disabled && 'disabled']\n  };\n  return composeClasses(slots, getTabScrollButtonUtilityClass, classes);\n};\nconst TabScrollButtonRoot = styled(ButtonBase, {\n  name: 'MuiTabScrollButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n  }\n})({\n  width: 40,\n  flexShrink: 0,\n  opacity: 0.8,\n  [`&.${tabScrollButtonClasses.disabled}`]: {\n    opacity: 0\n  },\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      width: '100%',\n      height: 40,\n      '& svg': {\n        transform: 'var(--TabScrollButton-svgRotate)'\n      }\n    }\n  }]\n});\nconst TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTabScrollButton'\n  });\n  const {\n    className,\n    slots = {},\n    slotProps = {},\n    direction,\n    orientation,\n    disabled,\n    ...other\n  } = props;\n  const isRtl = useRtl();\n  const ownerState = {\n    isRtl,\n    ...props\n  };\n  const classes = useUtilityClasses(ownerState);\n  const StartButtonIcon = slots.StartScrollButtonIcon ?? KeyboardArrowLeft;\n  const EndButtonIcon = slots.EndScrollButtonIcon ?? KeyboardArrowRight;\n  const startButtonIconProps = useSlotProps({\n    elementType: StartButtonIcon,\n    externalSlotProps: slotProps.startScrollButtonIcon,\n    additionalProps: {\n      fontSize: 'small'\n    },\n    ownerState\n  });\n  const endButtonIconProps = useSlotProps({\n    elementType: EndButtonIcon,\n    externalSlotProps: slotProps.endScrollButtonIcon,\n    additionalProps: {\n      fontSize: 'small'\n    },\n    ownerState\n  });\n  return /*#__PURE__*/_jsx(TabScrollButtonRoot, {\n    component: \"div\",\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: null,\n    ownerState: ownerState,\n    tabIndex: null,\n    ...other,\n    style: {\n      ...other.style,\n      ...(orientation === 'vertical' && {\n        '--TabScrollButton-svgRotate': `rotate(${isRtl ? -90 : 90}deg)`\n      })\n    },\n    children: direction === 'left' ? /*#__PURE__*/_jsx(StartButtonIcon, {\n      ...startButtonIconProps\n    }) : /*#__PURE__*/_jsx(EndButtonIcon, {\n      ...endButtonIconProps\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The direction the button should indicate.\n   */\n  direction: PropTypes.oneOf(['left', 'right']).isRequired,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The component orientation (layout flow direction).\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    EndScrollButtonIcon: PropTypes.elementType,\n    StartScrollButtonIcon: PropTypes.elementType\n  }),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TabScrollButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabsUtilityClass(slot) {\n  return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport debounce from \"../utils/debounce.js\";\nimport animate from \"../internal/animate.js\";\nimport ScrollbarSize from \"./ScrollbarSize.js\";\nimport TabScrollButton from \"../TabScrollButton/index.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport tabsClasses, { getTabsUtilityClass } from \"./tabsClasses.js\";\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport ownerWindow from \"../utils/ownerWindow.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return list.firstChild;\n};\nconst previousItem = (list, item) => {\n  if (list === item) {\n    return list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus);\n    } else {\n      nextFocus.focus();\n      return;\n    }\n  }\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    vertical,\n    fixed,\n    hideScrollbar,\n    scrollableX,\n    scrollableY,\n    centered,\n    scrollButtonsHideMobile,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', vertical && 'vertical'],\n    scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n    flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n    indicator: ['indicator'],\n    scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n    scrollableX: [scrollableX && 'scrollableX'],\n    hideScrollbar: [hideScrollbar && 'hideScrollbar']\n  };\n  return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n    }, {\n      [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n    }, styles.root, ownerState.vertical && styles.vertical];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  minHeight: 48,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  display: 'flex',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.vertical,\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.scrollButtonsHideMobile,\n    style: {\n      [`& .${tabsClasses.scrollButtons}`]: {\n        [theme.breakpoints.down('sm')]: {\n          display: 'none'\n        }\n      }\n    }\n  }]\n})));\nconst TabsScroller = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Scroller',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n  }\n})({\n  position: 'relative',\n  display: 'inline-block',\n  flex: '1 1 auto',\n  whiteSpace: 'nowrap',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.fixed,\n    style: {\n      overflowX: 'hidden',\n      width: '100%'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hideScrollbar,\n    style: {\n      // Hide dimensionless scrollbar on macOS\n      scrollbarWidth: 'none',\n      // Firefox\n      '&::-webkit-scrollbar': {\n        display: 'none' // Safari + Chrome\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.scrollableX,\n    style: {\n      overflowX: 'auto',\n      overflowY: 'hidden'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.scrollableY,\n    style: {\n      overflowY: 'auto',\n      overflowX: 'hidden'\n    }\n  }]\n});\nconst FlexContainer = styled('div', {\n  name: 'MuiTabs',\n  slot: 'FlexContainer',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n  }\n})({\n  display: 'flex',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.vertical,\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.centered,\n    style: {\n      justifyContent: 'center'\n    }\n  }]\n});\nconst TabsIndicator = styled('span', {\n  name: 'MuiTabs',\n  slot: 'Indicator',\n  overridesResolver: (props, styles) => styles.indicator\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  height: 2,\n  bottom: 0,\n  width: '100%',\n  transition: theme.transitions.create(),\n  variants: [{\n    props: {\n      indicatorColor: 'primary'\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette.primary.main\n    }\n  }, {\n    props: {\n      indicatorColor: 'secondary'\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette.secondary.main\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.vertical,\n    style: {\n      height: '100%',\n      width: 2,\n      right: 0\n    }\n  }]\n})));\nconst TabsScrollbarSize = styled(ScrollbarSize)({\n  overflowX: 'auto',\n  overflowY: 'hidden',\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n});\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTabs'\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const {\n    'aria-label': ariaLabel,\n    'aria-labelledby': ariaLabelledBy,\n    action,\n    centered = false,\n    children: childrenProp,\n    className,\n    component = 'div',\n    allowScrollButtonsMobile = false,\n    indicatorColor = 'primary',\n    onChange,\n    orientation = 'horizontal',\n    ScrollButtonComponent = TabScrollButton,\n    scrollButtons = 'auto',\n    selectionFollowsFocus,\n    slots = {},\n    slotProps = {},\n    TabIndicatorProps = {},\n    TabScrollButtonProps = {},\n    textColor = 'primary',\n    value,\n    variant = 'standard',\n    visibleScrollbar = false,\n    ...other\n  } = props;\n  const scrollable = variant === 'scrollable';\n  const vertical = orientation === 'vertical';\n  const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  const start = vertical ? 'top' : 'left';\n  const end = vertical ? 'bottom' : 'right';\n  const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  const size = vertical ? 'height' : 'width';\n  const ownerState = {\n    ...props,\n    component,\n    allowScrollButtonsMobile,\n    indicatorColor,\n    orientation,\n    vertical,\n    scrollButtons,\n    textColor,\n    variant,\n    visibleScrollbar,\n    fixed: !scrollable,\n    hideScrollbar: scrollable && !visibleScrollbar,\n    scrollableX: scrollable && !vertical,\n    scrollableY: scrollable && vertical,\n    centered: centered && !scrollable,\n    scrollButtonsHideMobile: !allowScrollButtonsMobile\n  };\n  const classes = useUtilityClasses(ownerState);\n  const startScrollButtonIconProps = useSlotProps({\n    elementType: slots.StartScrollButtonIcon,\n    externalSlotProps: slotProps.startScrollButtonIcon,\n    ownerState\n  });\n  const endScrollButtonIconProps = useSlotProps({\n    elementType: slots.EndScrollButtonIcon,\n    externalSlotProps: slotProps.endScrollButtonIcon,\n    ownerState\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n  const [mounted, setMounted] = React.useState(false);\n  const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n  const [displayStartScroll, setDisplayStartScroll] = React.useState(false);\n  const [displayEndScroll, setDisplayEndScroll] = React.useState(false);\n  const [updateScrollObserver, setUpdateScrollObserver] = React.useState(false);\n  const [scrollerStyle, setScrollerStyle] = React.useState({\n    overflow: 'hidden',\n    scrollbarWidth: 0\n  });\n  const valueToIndex = new Map();\n  const tabsRef = React.useRef(null);\n  const tabListRef = React.useRef(null);\n  const getTabsMeta = () => {\n    const tabsNode = tabsRef.current;\n    let tabsMeta;\n    if (tabsNode) {\n      const rect = tabsNode.getBoundingClientRect();\n      // create a new object with ClientRect class props + scrollLeft\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n    let tabMeta;\n    if (tabsNode && value !== false) {\n      const children = tabListRef.current.children;\n      if (children.length > 0) {\n        const tab = children[valueToIndex.get(value)];\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n          }\n        }\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n        if (process.env.NODE_ENV !== 'production') {\n          if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n          // if the whole Tabs component is hidden, don't warn\n          tabsMeta.clientWidth !== 0) {\n            tabsMeta = null;\n            console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n            warnedOnceTabPresent = true;\n          }\n        }\n      }\n    }\n    return {\n      tabsMeta,\n      tabMeta\n    };\n  };\n  const updateIndicatorState = useEventCallback(() => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    let startValue = 0;\n    let startIndicator;\n    if (vertical) {\n      startIndicator = 'top';\n      if (tabMeta && tabsMeta) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      }\n    } else {\n      startIndicator = isRtl ? 'right' : 'left';\n      if (tabMeta && tabsMeta) {\n        startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + tabsMeta.scrollLeft);\n      }\n    }\n    const newIndicatorStyle = {\n      [startIndicator]: startValue,\n      // May be wrong until the font is loaded.\n      [size]: tabMeta ? tabMeta[size] : 0\n    };\n    if (typeof indicatorStyle[startIndicator] !== 'number' || typeof indicatorStyle[size] !== 'number') {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n      const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n  const scroll = (scrollValue, {\n    animation = true\n  } = {}) => {\n    if (animation) {\n      animate(scrollStart, tabsRef.current, scrollValue, {\n        duration: theme.transitions.duration.standard\n      });\n    } else {\n      tabsRef.current[scrollStart] = scrollValue;\n    }\n  };\n  const moveTabsScroll = delta => {\n    let scrollValue = tabsRef.current[scrollStart];\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1);\n    }\n    scroll(scrollValue);\n  };\n  const getScrollSize = () => {\n    const containerSize = tabsRef.current[clientSize];\n    let totalSize = 0;\n    const children = Array.from(tabListRef.current.children);\n    for (let i = 0; i < children.length; i += 1) {\n      const tab = children[i];\n      if (totalSize + tab[clientSize] > containerSize) {\n        // If the first item is longer than the container size, then only scroll\n        // by the container size.\n        if (i === 0) {\n          totalSize = containerSize;\n        }\n        break;\n      }\n      totalSize += tab[clientSize];\n    }\n    return totalSize;\n  };\n  const handleStartScrollClick = () => {\n    moveTabsScroll(-1 * getScrollSize());\n  };\n  const handleEndScrollClick = () => {\n    moveTabsScroll(getScrollSize());\n  };\n\n  // TODO Remove <ScrollbarSize /> as browser support for hiding the scrollbar\n  // with CSS improves.\n  const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n    setScrollerStyle({\n      overflow: null,\n      scrollbarWidth\n    });\n  }, []);\n  const getConditionalElements = () => {\n    const conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n      onChange: handleScrollbarSizeChange,\n      className: clsx(classes.scrollableX, classes.hideScrollbar)\n    }) : null;\n    const scrollButtonsActive = displayStartScroll || displayEndScroll;\n    const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, {\n      slots: {\n        StartScrollButtonIcon: slots.StartScrollButtonIcon\n      },\n      slotProps: {\n        startScrollButtonIcon: startScrollButtonIconProps\n      },\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayStartScroll,\n      ...TabScrollButtonProps,\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    }) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, {\n      slots: {\n        EndScrollButtonIcon: slots.EndScrollButtonIcon\n      },\n      slotProps: {\n        endScrollButtonIcon: endScrollButtonIconProps\n      },\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayEndScroll,\n      ...TabScrollButtonProps,\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    }) : null;\n    return conditionalElements;\n  };\n  const scrollSelectedIntoView = useEventCallback(animation => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    }\n  });\n  const updateScrollButtonState = useEventCallback(() => {\n    if (scrollable && scrollButtons !== false) {\n      setUpdateScrollObserver(!updateScrollObserver);\n    }\n  });\n  React.useEffect(() => {\n    const handleResize = debounce(() => {\n      // If the Tabs component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/33276\n      // TODO: Add tests that will ensure the component is not failing when\n      // replaced by Suspense with a fallback, once React is updated to version 18\n      if (tabsRef.current) {\n        updateIndicatorState();\n      }\n    });\n    let resizeObserver;\n\n    /**\n     * @type {MutationCallback}\n     */\n    const handleMutation = records => {\n      records.forEach(record => {\n        record.removedNodes.forEach(item => {\n          resizeObserver?.unobserve(item);\n        });\n        record.addedNodes.forEach(item => {\n          resizeObserver?.observe(item);\n        });\n      });\n      handleResize();\n      updateScrollButtonState();\n    };\n    const win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    let mutationObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      Array.from(tabListRef.current.children).forEach(child => {\n        resizeObserver.observe(child);\n      });\n    }\n    if (typeof MutationObserver !== 'undefined') {\n      mutationObserver = new MutationObserver(handleMutation);\n      mutationObserver.observe(tabListRef.current, {\n        childList: true\n      });\n    }\n    return () => {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n      mutationObserver?.disconnect();\n      resizeObserver?.disconnect();\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n\n  /**\n   * Toggle visibility of start and end scroll buttons\n   * Using IntersectionObserver on first and last Tabs.\n   */\n  React.useEffect(() => {\n    const tabListChildren = Array.from(tabListRef.current.children);\n    const length = tabListChildren.length;\n    if (typeof IntersectionObserver !== 'undefined' && length > 0 && scrollable && scrollButtons !== false) {\n      const firstTab = tabListChildren[0];\n      const lastTab = tabListChildren[length - 1];\n      const observerOptions = {\n        root: tabsRef.current,\n        threshold: 0.99\n      };\n      const handleScrollButtonStart = entries => {\n        setDisplayStartScroll(!entries[0].isIntersecting);\n      };\n      const firstObserver = new IntersectionObserver(handleScrollButtonStart, observerOptions);\n      firstObserver.observe(firstTab);\n      const handleScrollButtonEnd = entries => {\n        setDisplayEndScroll(!entries[0].isIntersecting);\n      };\n      const lastObserver = new IntersectionObserver(handleScrollButtonEnd, observerOptions);\n      lastObserver.observe(lastTab);\n      return () => {\n        firstObserver.disconnect();\n        lastObserver.disconnect();\n      };\n    }\n    return undefined;\n  }, [scrollable, scrollButtons, updateScrollObserver, childrenProp?.length]);\n  React.useEffect(() => {\n    setMounted(true);\n  }, []);\n  React.useEffect(() => {\n    updateIndicatorState();\n  });\n  React.useEffect(() => {\n    // Don't animate on the first render.\n    scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, () => ({\n    updateIndicator: updateIndicatorState,\n    updateScrollButtons: updateScrollButtonState\n  }), [updateIndicatorState, updateScrollButtonState]);\n  const indicator = /*#__PURE__*/_jsx(TabsIndicator, {\n    ...TabIndicatorProps,\n    className: clsx(classes.indicator, TabIndicatorProps.className),\n    ownerState: ownerState,\n    style: {\n      ...indicatorStyle,\n      ...TabIndicatorProps.style\n    }\n  });\n  let childIndex = 0;\n  const children = React.Children.map(childrenProp, child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    const childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    const selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, {\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected,\n      selectionFollowsFocus,\n      onChange,\n      textColor,\n      value: childValue,\n      ...(childIndex === 1 && value === false && !child.props.tabIndex ? {\n        tabIndex: 0\n      } : {})\n    });\n  });\n  const handleKeyDown = event => {\n    const list = tabListRef.current;\n    const currentFocus = ownerDocument(list).activeElement;\n    // Keyboard navigation assumes that [role=\"tab\"] are siblings\n    // though we might warn in the future about nested, interactive elements\n    // as a a11y violation\n    const role = currentFocus.getAttribute('role');\n    if (role !== 'tab') {\n      return;\n    }\n    let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n    let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n    if (orientation === 'horizontal' && isRtl) {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n    switch (event.key) {\n      case previousItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, previousItem);\n        break;\n      case nextItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, nextItem);\n        break;\n      case 'Home':\n        event.preventDefault();\n        moveFocus(list, null, nextItem);\n        break;\n      case 'End':\n        event.preventDefault();\n        moveFocus(list, null, previousItem);\n        break;\n      default:\n        break;\n    }\n  };\n  const conditionalElements = getConditionalElements();\n  return /*#__PURE__*/_jsxs(TabsRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    as: component,\n    ...other,\n    children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n      className: classes.scroller,\n      ownerState: ownerState,\n      style: {\n        overflow: scrollerStyle.overflow,\n        [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n      },\n      ref: tabsRef,\n      children: [/*#__PURE__*/_jsx(FlexContainer, {\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n        className: classes.flexContainer,\n        ownerState: ownerState,\n        onKeyDown: handleKeyDown,\n        ref: tabListRef,\n        role: \"tablist\",\n        children: children\n      }), mounted && indicator]\n    }), conditionalElements.scrollButtonEnd]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: refType,\n  /**\n   * If `true`, the scroll buttons aren't forced hidden on mobile.\n   * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n   * @default false\n   */\n  allowScrollButtonsMobile: PropTypes.bool,\n  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * If `true`, the tabs are centered.\n   * This prop is intended for large views.\n   * @default false\n   */\n  centered: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Determines the color of the indicator.\n   * @default 'primary'\n   */\n  indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The component used to render the scroll buttons.\n   * @default TabScrollButton\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n  /**\n   * Determine behavior of scroll buttons when tabs are set to scroll:\n   *\n   * - `auto` will only present them when not all the items are visible.\n   * - `true` will always present them.\n   * - `false` will never present them.\n   *\n   * By default the scroll buttons are hidden on mobile.\n   * This behavior can be disabled with `allowScrollButtonsMobile`.\n   * @default 'auto'\n   */\n  scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    EndScrollButtonIcon: PropTypes.elementType,\n    StartScrollButtonIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Props applied to the tab indicator element.\n   * @default  {}\n   */\n  TabIndicatorProps: PropTypes.object,\n  /**\n   * Props applied to the [`TabScrollButton`](https://mui.com/material-ui/api/tab-scroll-button/) element.\n   * @default {}\n   */\n  TabScrollButtonProps: PropTypes.object,\n  /**\n   * Determines the color of the `Tab`.\n   * @default 'primary'\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this prop to `false`.\n   */\n  value: PropTypes.any,\n  /**\n   * Determines additional display behavior of the tabs:\n   *\n   *  - `scrollable` will invoke scrolling properties and allow for horizontally\n   *  scrolling (or swiping) of the tab bar.\n   *  - `fullWidth` will make the tabs grow to use all the available space,\n   *  which should be used for small views, like on mobile.\n   *  - `standard` will render the default state.\n   * @default 'standard'\n   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n  /**\n   * If `true`, the scrollbar is visible. It can be useful when displaying\n   * a long vertical list of tabs.\n   * @default false\n   */\n  visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');"],"names":["easeInOutSin","time","Math","sin","PI","styles","width","height","position","top","overflow","getTabScrollButtonUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TabScrollButtonRoot","styled","ButtonBase","name","overridesResolver","props","ownerState","root","orientation","flexShrink","opacity","disabled","variants","style","transform","inProps","ref","className","slots","slotProps","direction","other","isRtl","classes","composeClasses","useUtilityClasses","StartButtonIcon","StartScrollButtonIcon","KeyboardArrowLeft","EndButtonIcon","EndScrollButtonIcon","KeyboardArrowRight","startButtonIconProps","useSlotProps","elementType","externalSlotProps","startScrollButtonIcon","additionalProps","fontSize","endButtonIconProps","endScrollButtonIcon","component","clsx","role","tabIndex","children","getTabsUtilityClass","nextItem","list","item","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocus","nextFocusDisabled","getAttribute","hasAttribute","focus","TabsRoot","scrollButtons","scrollButtonsHideMobile","vertical","memoTheme","theme","minHeight","WebkitOverflowScrolling","display","flexDirection","breakpoints","down","TabsScroller","scroller","fixed","hideScrollbar","scrollableX","scrollableY","flex","whiteSpace","overflowX","scrollbarWidth","overflowY","FlexContainer","flexContainer","flexContainerVertical","centered","justifyContent","TabsIndicator","indicator","bottom","transition","transitions","create","indicatorColor","backgroundColor","vars","palette","primary","main","secondary","right","TabsScrollbarSize","onChange","scrollbarHeight","nodeRef","setMeasurements","current","offsetHeight","clientHeight","useEnhancedEffect","handleResize","debounce","prevHeight","containerWindow","ownerWindow","addEventListener","clear","removeEventListener","defaultIndicatorStyle","useTheme","ariaLabel","ariaLabelledBy","action","childrenProp","allowScrollButtonsMobile","ScrollButtonComponent","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar","scrollable","scrollStart","start","end","clientSize","size","startScrollButtonIconProps","endScrollButtonIconProps","mounted","setMounted","indicatorStyle","setIndicatorStyle","displayStartScroll","setDisplayStartScroll","displayEndScroll","setDisplayEndScroll","updateScrollObserver","setUpdateScrollObserver","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsNode","tabsMeta","tabMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","scrollTop","scrollWidth","left","length","tab","get","updateIndicatorState","useEventCallback","startIndicator","startValue","newIndicatorStyle","dStart","abs","dSize","scroll","scrollValue","animation","property","element","to","options","cb","ease","duration","from","cancelled","step","timestamp","Error","min","requestAnimationFrame","animate","standard","moveTabsScroll","delta","getScrollSize","containerSize","totalSize","Array","i","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","nextScrollStart","updateScrollButtonState","resizeObserver","win","mutationObserver","ResizeObserver","forEach","child","observe","MutationObserver","records","record","removedNodes","unobserve","addedNodes","childList","disconnect","tabListChildren","IntersectionObserver","firstTab","lastTab","observerOptions","threshold","firstObserver","entries","isIntersecting","lastObserver","updateIndicator","updateScrollButtons","childIndex","map","childValue","undefined","set","selected","fullWidth","conditionalElements","scrollbarSizeListener","showScrollButtons","scrollButtonStart","onClick","scrollButtonEnd","getConditionalElements","as","onKeyDown","event","ownerDocument","activeElement","previousItemKey","nextItemKey","key","preventDefault","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1157.c0d4652e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1157],{75653:(t,e,i)=>{i.d(e,{A:()=>W});var a=i(7552),s=i(93878),n=i(85693),r=i(70799),o=i(33283),d=i(82081),u=i(24959),m=i(72861),x=i(69500);const h=(0,m.A)(),p=(0,u.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:i}=t;return[e.root,e[`maxWidth${(0,o.A)(String(i.maxWidth))}`],i.fixed&&e.fixed,i.disableGutters&&e.disableGutters]}}),l=t=>(0,d.A)({props:t,name:"MuiContainer",defaultTheme:h});var b=i(15622),c=i(51148),g=i(31049);const f=function(t={}){const{createStyledComponent:e=p,useThemeProps:i=l,componentName:d="MuiContainer"}=t,u=e((({theme:t,ownerState:e})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!e.disableGutters&&{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}}})),(({theme:t,ownerState:e})=>e.fixed&&Object.keys(t.breakpoints.values).reduce(((e,i)=>{const a=i,s=t.breakpoints.values[a];return 0!==s&&(e[t.breakpoints.up(a)]={maxWidth:`${s}${t.breakpoints.unit}`}),e}),{})),(({theme:t,ownerState:e})=>({..."xs"===e.maxWidth&&{[t.breakpoints.up("xs")]:{maxWidth:Math.max(t.breakpoints.values.xs,444)}},...e.maxWidth&&"xs"!==e.maxWidth&&{[t.breakpoints.up(e.maxWidth)]:{maxWidth:`${t.breakpoints.values[e.maxWidth]}${t.breakpoints.unit}`}}}))),m=a.forwardRef((function(t,e){const a=i(t),{className:m,component:h="div",disableGutters:p=!1,fixed:l=!1,maxWidth:b="lg",classes:c,...g}=a,f={...a,component:h,disableGutters:p,fixed:l,maxWidth:b},W=((t,e)=>{const{classes:i,fixed:a,disableGutters:s,maxWidth:d}=t,u={root:["root",d&&`maxWidth${(0,o.A)(String(d))}`,a&&"fixed",s&&"disableGutters"]};return(0,r.A)(u,(t=>(0,n.Ay)(e,t)),i)})(f,d);return(0,x.jsx)(u,{as:h,ownerState:f,className:(0,s.A)(W.root,m),ref:e,...g})}));return m}({createStyledComponent:(0,c.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:i}=t;return[e.root,e[`maxWidth${(0,b.A)(String(i.maxWidth))}`],i.fixed&&e.fixed,i.disableGutters&&e.disableGutters]}}),useThemeProps:t=>(0,g.A)({props:t,name:"MuiContainer"})}),W=f},61157:(t,e,i)=>{i.r(e),i.d(e,{containerClasses:()=>o,default:()=>a.A,getContainerUtilityClass:()=>r});var a=i(75653),s=i(33761),n=i(85693);function r(t){return(0,n.Ay)("MuiContainer",t)}const o=(0,s.A)("MuiContainer",["root","disableGutters","fixed","maxWidthXs","maxWidthSm","maxWidthMd","maxWidthLg","maxWidthXl"])},24959:(t,e,i)=>{i.d(e,{A:()=>a});const a=(0,i(15543).Ay)()}}]);
+//# sourceMappingURL=1157.c0d4652e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1157.c0d4652e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1157.c0d4652e.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/material/Container/containerClasses.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiContainer', slot);\n}\nconst containerClasses = generateUtilityClasses('MuiContainer', ['root', 'disableGutters', 'fixed', 'maxWidthXs', 'maxWidthSm', 'maxWidthMd', 'maxWidthLg', 'maxWidthXl']);\nexport default containerClasses;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["defaultTheme","createTheme","defaultCreateStyledComponent","name","slot","overridesResolver","props","styles","ownerState","root","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","inProps","useThemeProps","Container","options","createStyledComponent","componentName","ContainerRoot","theme","width","marginLeft","boxSizing","marginRight","paddingLeft","spacing","paddingRight","breakpoints","up","Object","keys","values","reduce","acc","breakpointValueKey","breakpoint","value","unit","Math","max","xs","ref","className","component","classes","classesProp","other","slots","composeClasses","generateUtilityClass","useUtilityClasses","as","clsx","createContainer","getContainerUtilityClass","generateUtilityClasses"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1189.f18c6e1f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1189],{21189:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var n=a(7552),c=a(943),r=a(36715),l=a(5401),o=a(75785),s=a(68446),i=a(90542);const p=(0,o.n9)()((e=>({note:{textAlign:"center",paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},top:{zIndex:1e3}}))),m=(0,s.observer)((function({model:e}){const{classes:t}=p(),{hideNoTracksActive:a}=e;return n.createElement(c.A,{className:t.note},a?n.createElement("div",{style:{height:"48px"}}):n.createElement(n.Fragment,null,n.createElement(r.A,null,"No tracks active."),n.createElement(l.A,{variant:"contained",color:"primary",onClick:()=>e.activateTrackSelector(),className:t.top,startIcon:n.createElement(i.xU,null)},"Open track selector")))}))}}]);
+//# sourceMappingURL=1189.f18c6e1f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1189.f18c6e1f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1189.f18c6e1f.chunk.js","mappings":"oOAWA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,KAAM,CACJC,UAAW,SACXC,WAAYH,EAAMI,QAAQ,GAC1BC,cAAeL,EAAMI,QAAQ,IAE/BE,IAAK,CACHC,OAAQ,SAiCZ,GA7B6BC,EAAAA,EAAAA,WAAS,UAAU,MAC9CC,IAIA,MAAM,QAAEC,GAAYZ,KACd,mBAAEa,GAAuBF,EAC/B,OACEG,EAAAA,cAACC,EAAAA,EAAK,CAACC,UAAWJ,EAAQT,MACtBU,EAcAC,EAAAA,cAAA,OAAKG,MAAO,CAAEC,OAAQ,UAbtBJ,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACK,EAAAA,EAAU,KAAC,qBACZL,EAAAA,cAACM,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,UACNC,QAASA,IAAMZ,EAAMa,wBACrBR,UAAWJ,EAAQJ,IACnBiB,UAAWX,EAAAA,cAACY,EAAAA,GAAiB,OAC9B,wBASX,G","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/NoTracksActiveButton.tsx"],"sourcesContent":["import React from 'react'\nimport { Button, Paper, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()(theme => ({\n  note: {\n    textAlign: 'center',\n    paddingTop: theme.spacing(1),\n    paddingBottom: theme.spacing(1),\n  },\n  top: {\n    zIndex: 1000,\n  },\n}))\n\nconst NoTracksActiveButton = observer(function ({\n  model,\n}: {\n  model: LinearGenomeViewModel\n}) {\n  const { classes } = useStyles()\n  const { hideNoTracksActive } = model\n  return (\n    <Paper className={classes.note}>\n      {!hideNoTracksActive ? (\n        <>\n          <Typography>No tracks active.</Typography>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            onClick={() => model.activateTrackSelector()}\n            className={classes.top}\n            startIcon={<TrackSelectorIcon />}\n          >\n            Open track selector\n          </Button>\n        </>\n      ) : (\n        <div style={{ height: '48px' }} />\n      )}\n    </Paper>\n  )\n})\n\nexport default NoTracksActiveButton\n"],"names":["useStyles","makeStyles","theme","note","textAlign","paddingTop","spacing","paddingBottom","top","zIndex","observer","model","classes","hideNoTracksActive","React","Paper","className","style","height","Typography","Button","variant","color","onClick","activateTrackSelector","startIcon","TrackSelectorIcon"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/12.c0c7bdf9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[12],{60012:(o,e,t)=>{t.r(e),t.d(e,{default:()=>z,getIconUtilityClass:()=>S,iconClasses:()=>h});var r=t(7552),n=t(93878),i=t(70799),s=t(15622),l=t(51148),a=t(60129),c=t(58520),p=t(4785),f=t(33761),m=t(85693);function S(o){return(0,m.Ay)("MuiIcon",o)}const h=(0,f.A)("MuiIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var d=t(69500);const u=(0,l.Ay)("span",{name:"MuiIcon",slot:"Root",overridesResolver:(o,e)=>{const{ownerState:t}=o;return[e.root,"inherit"!==t.color&&e[`color${(0,s.A)(t.color)}`],e[`fontSize${(0,s.A)(t.fontSize)}`]]}})((0,a.A)((({theme:o})=>({userSelect:"none",width:"1em",height:"1em",overflow:"hidden",display:"inline-block",textAlign:"center",flexShrink:0,variants:[{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:o.typography.pxToRem(20)}},{props:{fontSize:"medium"},style:{fontSize:o.typography.pxToRem(24)}},{props:{fontSize:"large"},style:{fontSize:o.typography.pxToRem(36)}},{props:{color:"action"},style:{color:(o.vars||o).palette.action.active}},{props:{color:"disabled"},style:{color:(o.vars||o).palette.action.disabled}},{props:{color:"inherit"},style:{color:void 0}},...Object.entries(o.palette).filter((0,c.A)()).map((([e])=>({props:{color:e},style:{color:(o.vars||o).palette[e].main}})))]})))),y=r.forwardRef((function(o,e){const t=(0,p.b)({props:o,name:"MuiIcon"}),{baseClassName:r="material-icons",className:l,color:a="inherit",component:c="span",fontSize:f="medium",...m}=t,h={...t,baseClassName:r,color:a,component:c,fontSize:f},y=(o=>{const{color:e,fontSize:t,classes:r}=o,n={root:["root","inherit"!==e&&`color${(0,s.A)(e)}`,`fontSize${(0,s.A)(t)}`]};return(0,i.A)(n,S,r)})(h);return(0,d.jsx)(u,{as:c,className:(0,n.A)(r,"notranslate",y.root,l),ownerState:h,"aria-hidden":!0,ref:e,...m})}));y&&(y.muiName="Icon");const z=y}}]);
+//# sourceMappingURL=12.c0c7bdf9.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/12.c0c7bdf9.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/12.c0c7bdf9.chunk.js","mappings":"iTAEO,SAASA,EAAoBC,GAClC,OAAO,EAAAC,EAAA,IAAqB,UAAWD,EACzC,CACA,MACA,GADoB,EAAAE,EAAA,GAAuB,UAAW,CAAC,OAAQ,eAAgB,iBAAkB,cAAe,aAAc,gBAAiB,kBAAmB,gBAAiB,iBAAkB,kB,eCQrM,MAWMC,GAAW,EAAAC,EAAA,IAAO,OAAQ,CAC9BC,KAAM,UACNL,KAAM,OACNM,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAA2B,YAArBD,EAAWE,OAAuBH,EAAO,SAAQ,EAAAI,EAAA,GAAWH,EAAWE,UAAWH,EAAO,YAAW,EAAAI,EAAA,GAAWH,EAAWI,aAAa,GAP/I,EASd,EAAAC,EAAA,IAAU,EACXC,YACI,CACJC,WAAY,OACZC,MAAO,MACPC,OAAQ,MAGRC,SAAU,SACVC,QAAS,eAETC,UAAW,SAEXC,WAAY,EACZC,SAAU,CAAC,CACThB,MAAO,CACLM,SAAU,WAEZW,MAAO,CACLX,SAAU,YAEX,CACDN,MAAO,CACLM,SAAU,SAEZW,MAAO,CACLX,SAAUE,EAAMU,WAAWC,QAAQ,MAEpC,CACDnB,MAAO,CACLM,SAAU,UAEZW,MAAO,CACLX,SAAUE,EAAMU,WAAWC,QAAQ,MAEpC,CACDnB,MAAO,CACLM,SAAU,SAEZW,MAAO,CACLX,SAAUE,EAAMU,WAAWC,QAAQ,MAEpC,CACDnB,MAAO,CACLI,MAAO,UAETa,MAAO,CACLb,OAAQI,EAAMY,MAAQZ,GAAOa,QAAQC,OAAOC,SAE7C,CACDvB,MAAO,CACLI,MAAO,YAETa,MAAO,CACLb,OAAQI,EAAMY,MAAQZ,GAAOa,QAAQC,OAAOE,WAE7C,CACDxB,MAAO,CACLI,MAAO,WAETa,MAAO,CACLb,WAAOqB,OAELC,OAAOC,QAAQnB,EAAMa,SAASO,QAAO,EAAAC,EAAA,MAAkCC,KAAI,EAAE1B,MAAW,CAC5FJ,MAAO,CACLI,SAEFa,MAAO,CACLb,OAAQI,EAAMY,MAAQZ,GAAOa,QAAQjB,GAAO2B,gBAI5CC,EAAoB,cAAiB,SAAcC,EAASC,GAChE,MAAMlC,GAAQ,OAAgB,CAC5BA,MAAOiC,EACPnC,KAAM,aAEF,cACJqC,EAAgB,iBAAgB,UAChCC,EAAS,MACThC,EAAQ,UACRiC,UAAWC,EAAY,OAAM,SAC7BhC,EAAW,YACRiC,GACDvC,EACEE,EAAa,IACdF,EACHmC,gBACA/B,QACAiC,UAAWC,EACXhC,YAEIkC,EAhHkBtC,KACxB,MAAM,MACJE,EAAK,SACLE,EAAQ,QACRkC,GACEtC,EACEuC,EAAQ,CACZtC,KAAM,CAAC,OAAkB,YAAVC,GAAuB,SAAQ,EAAAC,EAAA,GAAWD,KAAU,YAAW,EAAAC,EAAA,GAAWC,OAE3F,OAAO,EAAAoC,EAAA,GAAeD,EAAOjD,EAAqBgD,EAAQ,EAuG1CG,CAAkBzC,GAClC,OAAoB,SAAKN,EAAU,CACjCgD,GAAIN,EACJF,WAAW,EAAAS,EAAA,GAAKV,EAGhB,cAAeK,EAAQrC,KAAMiC,GAC7BlC,WAAYA,EACZ,eAAe,EACfgC,IAAKA,KACFK,GAEP,IA8CIP,IACFA,EAAKc,QAAU,QAEjB,S","sources":["../../../node_modules/@mui/material/Icon/iconClasses.js","../../../node_modules/@mui/material/Icon/Icon.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getIconUtilityClass(slot) {\n  return generateUtilityClass('MuiIcon', slot);\n}\nconst iconClasses = generateUtilityClasses('MuiIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default iconClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getIconUtilityClass } from \"./iconClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n  };\n  return composeClasses(slots, getIconUtilityClass, classes);\n};\nconst IconRoot = styled('span', {\n  name: 'MuiIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  userSelect: 'none',\n  width: '1em',\n  height: '1em',\n  // Chrome fix for https://bugs.chromium.org/p/chromium/issues/detail?id=820541\n  // To remove at some point.\n  overflow: 'hidden',\n  display: 'inline-block',\n  // allow overflow hidden to take action\n  textAlign: 'center',\n  // support non-square icon\n  flexShrink: 0,\n  variants: [{\n    props: {\n      fontSize: 'inherit'\n    },\n    style: {\n      fontSize: 'inherit'\n    }\n  }, {\n    props: {\n      fontSize: 'small'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(20)\n    }\n  }, {\n    props: {\n      fontSize: 'medium'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(24)\n    }\n  }, {\n    props: {\n      fontSize: 'large'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(36)\n    }\n  }, {\n    props: {\n      color: 'action'\n    },\n    style: {\n      color: (theme.vars || theme).palette.action.active\n    }\n  }, {\n    props: {\n      color: 'disabled'\n    },\n    style: {\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: undefined\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst Icon = /*#__PURE__*/React.forwardRef(function Icon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiIcon'\n  });\n  const {\n    baseClassName = 'material-icons',\n    className,\n    color = 'inherit',\n    component: Component = 'span',\n    fontSize = 'medium',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    baseClassName,\n    color,\n    component: Component,\n    fontSize\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(IconRoot, {\n    as: Component,\n    className: clsx(baseClassName,\n    // Prevent the translation of the text content.\n    // The font relies on the exact text content to render the icon.\n    'notranslate', classes.root, className),\n    ownerState: ownerState,\n    \"aria-hidden\": true,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Icon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The base class applied to the icon. Defaults to 'material-icons', but can be changed to any\n   * other base class that suits the icon font you're using (for example material-icons-rounded, fas, etc).\n   * @default 'material-icons'\n   */\n  baseClassName: PropTypes.string,\n  /**\n   * The name of the icon font ligature.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'inherit'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nif (Icon) {\n  Icon.muiName = 'Icon';\n}\nexport default Icon;"],"names":["getIconUtilityClass","slot","generateUtilityClass","generateUtilityClasses","IconRoot","styled","name","overridesResolver","props","styles","ownerState","root","color","capitalize","fontSize","memoTheme","theme","userSelect","width","height","overflow","display","textAlign","flexShrink","variants","style","typography","pxToRem","vars","palette","action","active","disabled","undefined","Object","entries","filter","createSimplePaletteValueFilter","map","main","Icon","inProps","ref","baseClassName","className","component","Component","other","classes","slots","composeClasses","useUtilityClasses","as","clsx","muiName"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/120.a447052d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[120],{70120:(e,s,l)=>{l.r(s),l.d(s,{default:()=>r.A,formHelperTextClasses:()=>a.A,getFormHelperTextUtilityClasses:()=>a.h});var r=l(25467),a=l(18735)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1260.ee4ecbf4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1260],{54617:(e,t,o)=>{o.d(t,{A:()=>S});var n=o(7552),r=o(93878),s=o(78745),a=o(85693),c=o(70799),i=o(24959),l=o(82081),u=o(8455),p=o(72861),d=o(43059),m=o(34901),k=o(69500);const f=(0,p.A)(),b=(0,i.A)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function h(e){return(0,l.A)({props:e,name:"MuiStack",defaultTheme:f})}function v(e,t){const o=n.Children.toArray(e).filter(Boolean);return o.reduce(((e,r,s)=>(e.push(r),s<o.length-1&&e.push(n.cloneElement(t,{key:`separator-${s}`})),e)),[])}const y=({ownerState:e,theme:t})=>{let o={display:"flex",flexDirection:"column",...(0,d.NI)({theme:t},(0,d.kW)({values:e.direction,breakpoints:t.breakpoints.values}),(e=>({flexDirection:e})))};if(e.spacing){const n=(0,m.LX)(t),r=Object.keys(t.breakpoints.values).reduce(((t,o)=>(("object"==typeof e.spacing&&null!=e.spacing[o]||"object"==typeof e.direction&&null!=e.direction[o])&&(t[o]=!0),t)),{}),a=(0,d.kW)({values:e.direction,base:r}),c=(0,d.kW)({values:e.spacing,base:r});"object"==typeof a&&Object.keys(a).forEach(((e,t,o)=>{if(!a[e]){const n=t>0?a[o[t-1]]:"column";a[e]=n}}));const i=(t,o)=>{return e.useFlexGap?{gap:(0,m._W)(n,t)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{[`margin${r=o?a[o]:e.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[r]}`]:(0,m._W)(n,t)}};var r};o=(0,s.A)(o,(0,d.NI)({theme:t},c,i))}return o=(0,d.iZ)(t.breakpoints,o),o};var A=o(51148),g=o(31049);const w=function(e={}){const{createStyledComponent:t=b,useThemeProps:o=h,componentName:s="MuiStack"}=e,i=t(y),l=n.forwardRef((function(e,t){const n=o(e),l=(0,u.A)(n),{component:p="div",direction:d="column",spacing:m=0,divider:f,children:b,className:h,useFlexGap:y=!1,...A}=l,g={direction:d,spacing:m,useFlexGap:y},w=(0,c.A)({root:["root"]},(e=>(0,a.Ay)(s,e)),{});return(0,k.jsx)(i,{as:p,ownerState:g,ref:t,className:(0,r.A)(w.root,h),...A,children:f?v(b,f):b})}));return l}({createStyledComponent:(0,A.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,g.A)({props:e,name:"MuiStack"})}),S=w},11260:(e,t,o)=>{o.r(t),o.d(t,{default:()=>n.A,stackClasses:()=>r});var n=o(54617);const r=(0,o(33761).A)("MuiStack",["root"])},24959:(e,t,o)=>{o.d(t,{A:()=>n});const n=(0,o(15543).Ay)()}}]);
+//# sourceMappingURL=1260.ee4ecbf4.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1260.ee4ecbf4.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1260.ee4ecbf4.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/system/Stack/createStack.js","../../../node_modules/@mui/material/Stack/Stack.js","../../../node_modules/@mui/material/Stack/stackClasses.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport systemStyled from \"../styled/index.js\";\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from \"../breakpoints/index.js\";\nimport { createUnarySpacing, getValue } from \"../spacing/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiStack',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n  return useThemePropsSystem({\n    props,\n    name: 'MuiStack',\n    defaultTheme\n  });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  return childrenArray.reduce((output, child, index) => {\n    output.push(child);\n    if (index < childrenArray.length - 1) {\n      output.push(/*#__PURE__*/React.cloneElement(separator, {\n        key: `separator-${index}`\n      }));\n    }\n    return output;\n  }, []);\n}\nconst getSideFromDirection = direction => {\n  return {\n    row: 'Left',\n    'row-reverse': 'Right',\n    column: 'Top',\n    'column-reverse': 'Bottom'\n  }[direction];\n};\nexport const style = ({\n  ownerState,\n  theme\n}) => {\n  let styles = {\n    display: 'flex',\n    flexDirection: 'column',\n    ...handleBreakpoints({\n      theme\n    }, resolveBreakpointValues({\n      values: ownerState.direction,\n      breakpoints: theme.breakpoints.values\n    }), propValue => ({\n      flexDirection: propValue\n    }))\n  };\n  if (ownerState.spacing) {\n    const transformer = createUnarySpacing(theme);\n    const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n      if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n        acc[breakpoint] = true;\n      }\n      return acc;\n    }, {});\n    const directionValues = resolveBreakpointValues({\n      values: ownerState.direction,\n      base\n    });\n    const spacingValues = resolveBreakpointValues({\n      values: ownerState.spacing,\n      base\n    });\n    if (typeof directionValues === 'object') {\n      Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n        const directionValue = directionValues[breakpoint];\n        if (!directionValue) {\n          const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n          directionValues[breakpoint] = previousDirectionValue;\n        }\n      });\n    }\n    const styleFromPropValue = (propValue, breakpoint) => {\n      if (ownerState.useFlexGap) {\n        return {\n          gap: getValue(transformer, propValue)\n        };\n      }\n      return {\n        // The useFlexGap={false} implement relies on each child to give up control of the margin.\n        // We need to reset the margin to avoid double spacing.\n        '& > :not(style):not(style)': {\n          margin: 0\n        },\n        '& > :not(style) ~ :not(style)': {\n          [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n        }\n      };\n    };\n    styles = deepmerge(styles, handleBreakpoints({\n      theme\n    }, spacingValues, styleFromPropValue));\n  }\n  styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n  return styles;\n};\nexport default function createStack(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiStack'\n  } = options;\n  const useUtilityClasses = () => {\n    const slots = {\n      root: ['root']\n    };\n    return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n  };\n  const StackRoot = createStyledComponent(style);\n  const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n    const themeProps = useThemeProps(inProps);\n    const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n    const {\n      component = 'div',\n      direction = 'column',\n      spacing = 0,\n      divider,\n      children,\n      className,\n      useFlexGap = false,\n      ...other\n    } = props;\n    const ownerState = {\n      direction,\n      spacing,\n      useFlexGap\n    };\n    const classes = useUtilityClasses();\n    return /*#__PURE__*/_jsx(StackRoot, {\n      as: component,\n      ownerState: ownerState,\n      ref: ref,\n      className: clsx(classes.root, className),\n      ...other,\n      children: divider ? joinChildren(children, divider) : children\n    });\n  });\n  process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n    divider: PropTypes.node,\n    spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Stack = createStack({\n  createStyledComponent: styled('div', {\n    name: 'MuiStack',\n    slot: 'Root',\n    overridesResolver: (props, styles) => styles.root\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiStack'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * Add an element between each child.\n   */\n  divider: PropTypes.node,\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n   *\n   * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n   * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n   *\n   * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n   * @default false\n   */\n  useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStackUtilityClass(slot) {\n  return generateUtilityClass('MuiStack', slot);\n}\nconst stackClasses = generateUtilityClasses('MuiStack', ['root']);\nexport default stackClasses;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["defaultTheme","createTheme","defaultCreateStyledComponent","name","slot","overridesResolver","props","styles","root","useThemePropsDefault","useThemeProps","joinChildren","children","separator","childrenArray","toArray","filter","Boolean","reduce","output","child","index","push","length","key","style","ownerState","theme","display","flexDirection","values","direction","breakpoints","propValue","spacing","transformer","base","Object","keys","acc","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","styleFromPropValue","useFlexGap","gap","margin","row","column","deepmerge","Stack","options","createStyledComponent","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","component","divider","className","other","classes","composeClasses","generateUtilityClass","as","clsx","createStack"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1266.cd6d9354.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1266],{91392:(e,t,r)=>{r.d(t,{KM:()=>f,en:()=>p,kb:()=>x,se:()=>g});var n=r(7552),a=r(75785),l=r(68446),o=r(36422),i=r(99546),s=r(95095),c=r(48231),m=r(90257);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},h.apply(null,arguments)}const d=(0,a.n9)()((()=>({vtext:{gridColumn:"1/2",gridRow:"1/2",pointerEvents:"none",userSelect:"none"},htext:{gridColumn:"2/2",gridRow:"2/2",pointerEvents:"none",userSelect:"none"}}))),f=(0,l.observer)((function({model:e}){const{viewWidth:t,borderY:r}=e,{classes:a}=d();return n.createElement("svg",{width:t,height:r,className:a.htext},n.createElement(g,{model:e}))})),g=(0,l.observer)((function({model:e}){const{viewWidth:t,borderX:r,borderY:a,hview:l,htextRotation:d,hticks:f}=e,{offsetPx:g,width:p,dynamicBlocks:x,bpPerPx:y}=l,u=x.contentBlocks,w=(0,m.rQ)(u,t,g),k=(0,c.A)(),v={...(0,o.getSnapshot)(l),width:p,staticBlocks:l.staticBlocks},P=f.map((e=>[e,(0,s.eB)({refName:e.refName,coord:e.base,self:v})?.offsetPx])).filter((e=>void 0!==e[1])).map((e=>[e[0],e[1]-g]));return n.createElement(n.Fragment,null,u.filter((e=>!w.has(e.key))).map((e=>{const t=e.offsetPx,r=Math.floor(t-l.offsetPx);return n.createElement("text",h({transform:`rotate(${d},${r},0)`,key:JSON.stringify(e),x:r,y:1,fontSize:11,dominantBaseline:"hanging",textAnchor:"end"},(0,i.getFillProps)(k.palette.text.primary)),e.refName)})),P.map((([e,t])=>t>0&&t<p?n.createElement("line",h({key:`line-${JSON.stringify(e)}`,x1:t,x2:t,y1:0,y2:"major"===e.type?6:4,strokeWidth:1},(0,i.getFillProps)(k.palette.text.primary))):null)),P.filter((e=>"major"===e[0].type)).map((([e,t])=>t>10&&t<p?n.createElement("text",h({x:t-7,y:0,transform:`rotate(${d},${t},0)`,key:`text-${JSON.stringify(e)}`,fontSize:11,dominantBaseline:"middle",textAnchor:"end"},(0,i.getFillProps)(k.palette.text.primary)),(0,i.getTickDisplayStr)(e.base+1,y)):null)),n.createElement("text",h({y:a-12,x:(t-r)/2,textAnchor:"middle",fontSize:11,dominantBaseline:"hanging"},(0,i.getFillProps)(k.palette.text.primary)),l.assemblyNames.join(",")))})),p=(0,l.observer)((function({model:e}){const{borderX:t,viewHeight:r}=e,{classes:a}=d();return n.createElement("svg",{className:a.vtext,width:t,height:r},n.createElement(x,{model:e}))})),x=(0,l.observer)((function({model:e}){const{viewHeight:t,borderX:r,borderY:a,vview:l,vtextRotation:d,vticks:f}=e,{offsetPx:g,width:p,dynamicBlocks:x,bpPerPx:y}=l,u=x.contentBlocks,w=(0,m.rQ)(u,t,g),k=(0,c.A)(),v={...(0,o.getSnapshot)(l),width:p,staticBlocks:l.staticBlocks},P=f.map((e=>[e,(0,s.eB)({refName:e.refName,coord:e.base,self:v})?.offsetPx])).filter((e=>void 0!==e[1])).map((e=>[e[0],e[1]-g]));return n.createElement(n.Fragment,null,u.filter((e=>!w.has(e.key))).map((e=>{const a=e.offsetPx,l=r,o=Math.floor(t-a+g);return n.createElement("text",h({transform:`rotate(${d},${l},${a})`,key:JSON.stringify(e),x:l,y:o,fontSize:11,textAnchor:"end"},(0,i.getFillProps)(k.palette.text.primary)),e.refName)})),P.map((([e,a])=>a>0?n.createElement("line",h({key:`line-${JSON.stringify(e)}`,y1:t-a,y2:t-a,x1:r,x2:r-("major"===e.type?6:4),strokeWidth:1},(0,i.getStrokeProps)(k.palette.grey[400]))):null)),P.filter((e=>"major"===e[0].type)).map((([e,a])=>a>10&&a<t?n.createElement("text",h({y:t-a-3,x:r-7,key:`text-${JSON.stringify(e)}`,textAnchor:"end",dominantBaseline:"hanging",fontSize:11},(0,i.getFillProps)(k.palette.text.primary)),(0,i.getTickDisplayStr)(e.base+1,y)):null)),n.createElement("text",h({y:(t-a)/2,x:12,transform:`rotate(-90,12,${(t-a)/2})`,textAnchor:"middle",fontSize:11},(0,i.getFillProps)(k.palette.text.primary)),l.assemblyNames.join(",")))}))},86495:(e,t,r)=>{r.d(t,{A:()=>c,z:()=>s});var n=r(7552),a=r(68446),l=r(48231),o=r(99546);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},i.apply(null,arguments)}const s=(0,a.observer)((function({model:e,children:t}){const{viewWidth:r,viewHeight:a,hview:s,vview:c}=e,m=s.dynamicBlocks.contentBlocks,h=c.dynamicBlocks.contentBlocks;if(!m.length||!h.length)return null;const d=s.displayedRegionsTotalPx-s.offsetPx,f=c.displayedRegionsTotalPx-c.offsetPx,g=m[0].offsetPx-s.offsetPx,p=h[0].offsetPx-c.offsetPx,x=(0,l.A)(),y=x.palette.divider,u=Math.max(g,0),w=Math.max(a-f,0),k=Math.min(d-g,r),v=Math.min(a-p-w,a);let P=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY;return n.createElement(n.Fragment,null,n.createElement("rect",i({x:u,y:w,width:k,height:v},(0,o.getFillProps)(x.palette.background.default))),n.createElement("g",null,m.map((e=>{const t=e.offsetPx-s.offsetPx,r=Math.floor(t)!==Math.floor(P);return r&&(P=t),r?n.createElement("line",i({key:JSON.stringify(e),x1:t,y1:0,x2:t,y2:a},(0,o.getStrokeProps)(y))):null})),h.map((e=>{const t=a-(e.offsetPx-c.offsetPx),l=Math.floor(t)!==Math.floor(b);return l&&(b=t),l?n.createElement("line",i({key:JSON.stringify(e),x1:0,y1:t,x2:r,y2:t},(0,o.getStrokeProps)(y))):null})),n.createElement("line",i({x1:d,y1:0,x2:d,y2:a},(0,o.getStrokeProps)(y))),n.createElement("line",i({x1:0,y1:a-f,x2:r,y2:a-f},(0,o.getStrokeProps)(y)))),t)}));function c({model:e,children:t}){const{viewWidth:r,viewHeight:a}=e;return n.createElement("svg",{width:r,height:a,style:{background:"rgba(0,0,0,0.12)"}},n.createElement(s,{model:e},t))}},11266:(e,t,r)=>{r.d(t,{renderToSvg:()=>f});var n=r(7552),a=r(42489),l=r(99546),o=r(20139),i=r(49823),s=r(36422),c=r(86495),m=r(91392),h=r(48231);function d({width:e,height:t}){const r=(0,h.A)();return n.createElement("rect",{x:0,y:0,width:e,height:t,fill:(0,l.stripAlpha)(r.palette.background.default)})}async function f(e,t){await(0,a.when)((()=>e.initialized));const{themeName:r="default",Wrapper:h=({children:e})=>e}=t,{createRootFn:f}=(0,s.getRoot)(e),g=(0,l.getSession)(e),p=g.allThemes?.()[r],{width:x,borderX:y,viewWidth:u,viewHeight:w,tracks:k,height:v}=e,P=await Promise.all(k.map((async e=>{const r=e.displays[0];return await(0,a.when)((()=>void 0===r.ready||r.ready)),{track:e,result:await r.renderSvg({...t,theme:p})}}))),b=x+100;return(0,l.renderToStaticMarkup)(n.createElement(o.A,{theme:(0,i.createJBrowseTheme)(p)},n.createElement(h,null,n.createElement("svg",{width:x,height:v,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:[0,0,b,v].toString()},n.createElement(d,{width:b,height:v}),n.createElement(m.kb,{model:e}),n.createElement("g",{transform:`translate(${y} 0)`},n.createElement(c.z,{model:e}),n.createElement("defs",null,n.createElement("clipPath",{id:"clip-ruler"},n.createElement("rect",{x:0,y:0,width:u,height:w}))),n.createElement("g",{clipPath:"url(#clip-ruler)"},P.map((({result:e},t)=>n.createElement("g",{key:t},e))))),n.createElement("g",{transform:`translate(${y} ${w})`},n.createElement(m.se,{model:e}))))),f)}}}]);
+//# sourceMappingURL=1266.cd6d9354.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1266.cd6d9354.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1266.cd6d9354.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotView/components/Axes.tsx","../../../plugins/dotplot-view/src/DotplotView/components/Grid.tsx","../../../plugins/dotplot-view/src/DotplotView/svgcomponents/SVGBackground.tsx","../../../plugins/dotplot-view/src/DotplotView/svgcomponents/SVGDotplotView.tsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport {\n  getFillProps,\n  getStrokeProps,\n  getTickDisplayStr,\n} from '@jbrowse/core/util'\nimport { bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { getBlockLabelKeysToHide } from './util'\nimport { DotplotViewModel } from '../model'\n\nconst useStyles = makeStyles()(() => ({\n  vtext: {\n    gridColumn: '1/2',\n    gridRow: '1/2',\n    pointerEvents: 'none',\n    userSelect: 'none',\n  },\n  htext: {\n    gridColumn: '2/2',\n    gridRow: '2/2',\n    pointerEvents: 'none',\n    userSelect: 'none',\n  },\n}))\nexport const HorizontalAxis = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewWidth, borderY } = model\n  const { classes } = useStyles()\n  return (\n    <svg width={viewWidth} height={borderY} className={classes.htext}>\n      <HorizontalAxisRaw model={model} />\n    </svg>\n  )\n})\n\nexport const HorizontalAxisRaw = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewWidth, borderX, borderY, hview, htextRotation, hticks } = model\n  const { offsetPx, width, dynamicBlocks, bpPerPx } = hview\n  const dblocks = dynamicBlocks.contentBlocks\n  const hide = getBlockLabelKeysToHide(dblocks, viewWidth, offsetPx)\n  const theme = useTheme()\n  const hviewSnap = {\n    ...getSnapshot(hview),\n    width,\n    staticBlocks: hview.staticBlocks,\n  }\n\n  const ticks = hticks\n    .map(\n      tick =>\n        [\n          tick,\n          bpToPx({\n            refName: tick.refName,\n            coord: tick.base,\n            self: hviewSnap,\n          })?.offsetPx,\n        ] as const,\n    )\n    .filter(f => f[1] !== undefined)\n    .map(f => [f[0], f[1]! - offsetPx] as const)\n\n  return (\n    <>\n      {dblocks\n        .filter(region => !hide.has(region.key))\n        .map(region => {\n          const x = region.offsetPx\n          const y = 0\n          const xoff = Math.floor(x - hview.offsetPx)\n\n          return (\n            <text\n              transform={`rotate(${htextRotation},${xoff},${y})`}\n              key={JSON.stringify(region)}\n              x={xoff}\n              y={y + 1}\n              fontSize={11}\n              dominantBaseline=\"hanging\"\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {region.refName}\n            </text>\n          )\n        })}\n      {ticks.map(([tick, x]) =>\n        x > 0 && x < width ? (\n          <line\n            key={`line-${JSON.stringify(tick)}`}\n            x1={x}\n            x2={x}\n            y1={0}\n            y2={tick.type === 'major' ? 6 : 4}\n            strokeWidth={1}\n            {...getFillProps(theme.palette.text.primary)}\n          />\n        ) : null,\n      )}\n      {ticks\n        .filter(t => t[0].type === 'major')\n        .map(([tick, x]) =>\n          x > 10 && x < width ? (\n            <text\n              x={x - 7}\n              y={0}\n              transform={`rotate(${htextRotation},${x},0)`}\n              key={`text-${JSON.stringify(tick)}`}\n              fontSize={11}\n              dominantBaseline=\"middle\"\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {getTickDisplayStr(tick.base + 1, bpPerPx)}\n            </text>\n          ) : null,\n        )}\n      <text\n        y={borderY - 12}\n        x={(viewWidth - borderX) / 2}\n        textAnchor=\"middle\"\n        fontSize={11}\n        dominantBaseline=\"hanging\"\n        {...getFillProps(theme.palette.text.primary)}\n      >\n        {hview.assemblyNames.join(',')}\n      </text>\n    </>\n  )\n})\nexport const VerticalAxis = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { borderX, viewHeight } = model\n  const { classes } = useStyles()\n  return (\n    <svg className={classes.vtext} width={borderX} height={viewHeight}>\n      <VerticalAxisRaw model={model} />\n    </svg>\n  )\n})\n\nexport const VerticalAxisRaw = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewHeight, borderX, borderY, vview, vtextRotation, vticks } = model\n  const { offsetPx, width, dynamicBlocks, bpPerPx } = vview\n  const dblocks = dynamicBlocks.contentBlocks\n  const hide = getBlockLabelKeysToHide(dblocks, viewHeight, offsetPx)\n  const theme = useTheme()\n  const vviewSnap = {\n    ...getSnapshot(vview),\n    width,\n    staticBlocks: vview.staticBlocks,\n  }\n  const ticks = vticks\n    .map(\n      tick =>\n        [\n          tick,\n          bpToPx({\n            refName: tick.refName,\n            coord: tick.base,\n            self: vviewSnap,\n          })?.offsetPx,\n        ] as const,\n    )\n    .filter(f => f[1] !== undefined)\n    .map(f => [f[0], f[1]! - offsetPx] as const)\n\n  return (\n    <>\n      {dblocks\n        .filter(region => !hide.has(region.key))\n        .map(region => {\n          const y = region.offsetPx\n          const x = borderX\n          const yoff = Math.floor(viewHeight - y + offsetPx)\n\n          return (\n            <text\n              transform={`rotate(${vtextRotation},${x},${y})`}\n              key={JSON.stringify(region)}\n              x={x}\n              y={yoff}\n              fontSize={11}\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {region.refName}\n            </text>\n          )\n        })}\n      {ticks.map(([tick, y]) =>\n        y > 0 ? (\n          <line\n            key={`line-${JSON.stringify(tick)}`}\n            y1={viewHeight - y}\n            y2={viewHeight - y}\n            x1={borderX}\n            x2={borderX - (tick.type === 'major' ? 6 : 4)}\n            strokeWidth={1}\n            {...getStrokeProps(theme.palette.grey[400])}\n          />\n        ) : null,\n      )}\n      {ticks\n        .filter(t => t[0].type === 'major')\n        .map(([tick, y]) =>\n          y > 10 && y < viewHeight ? (\n            <text\n              y={viewHeight - y - 3}\n              x={borderX - 7}\n              key={`text-${JSON.stringify(tick)}`}\n              textAnchor=\"end\"\n              dominantBaseline=\"hanging\"\n              fontSize={11}\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {getTickDisplayStr(tick.base + 1, bpPerPx)}\n            </text>\n          ) : null,\n        )}\n      <text\n        y={(viewHeight - borderY) / 2}\n        x={12}\n        transform={`rotate(-90,12,${(viewHeight - borderY) / 2})`}\n        textAnchor=\"middle\"\n        fontSize={11}\n        {...getFillProps(theme.palette.text.primary)}\n      >\n        {vview.assemblyNames.join(',')}\n      </text>\n    </>\n  )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport { getFillProps, getStrokeProps } from '@jbrowse/core/util'\n\nexport const GridRaw = observer(function ({\n  model,\n  children,\n}: {\n  model: DotplotViewModel\n  children?: React.ReactNode\n}) {\n  const { viewWidth, viewHeight, hview, vview } = model\n  const hblocks = hview.dynamicBlocks.contentBlocks\n  const vblocks = vview.dynamicBlocks.contentBlocks\n  if (!hblocks.length || !vblocks.length) {\n    return null\n  }\n  const htop = hview.displayedRegionsTotalPx - hview.offsetPx\n  const vtop = vview.displayedRegionsTotalPx - vview.offsetPx\n  const hbottom = hblocks[0]!.offsetPx - hview.offsetPx\n  const vbottom = vblocks[0]!.offsetPx - vview.offsetPx\n  const theme = useTheme()\n  const stroke = theme.palette.divider\n\n  // Uses math.max/min avoid making very large SVG rect offscreen element,\n  // which can sometimes fail to draw\n  const rx = Math.max(hbottom, 0)\n  const ry = Math.max(viewHeight - vtop, 0)\n  const w = Math.min(htop - hbottom, viewWidth)\n  const h = Math.min(viewHeight - vbottom - ry, viewHeight)\n\n  let lastx = Number.POSITIVE_INFINITY\n  let lasty = Number.POSITIVE_INFINITY\n  return (\n    <>\n      <rect\n        x={rx}\n        y={ry}\n        width={w}\n        height={h}\n        {...getFillProps(theme.palette.background.default)}\n      />\n      <g>\n        {hblocks.map(region => {\n          const x = region.offsetPx - hview.offsetPx\n          const render = Math.floor(x) !== Math.floor(lastx)\n          if (render) {\n            lastx = x\n          }\n          return render ? (\n            <line\n              key={JSON.stringify(region)}\n              x1={x}\n              y1={0}\n              x2={x}\n              y2={viewHeight}\n              {...getStrokeProps(stroke)}\n            />\n          ) : null\n        })}\n        {vblocks.map(region => {\n          const y = viewHeight - (region.offsetPx - vview.offsetPx)\n          const render = Math.floor(y) !== Math.floor(lasty)\n          if (render) {\n            lasty = y\n          }\n          return render ? (\n            <line\n              key={JSON.stringify(region)}\n              x1={0}\n              y1={y}\n              x2={viewWidth}\n              y2={y}\n              {...getStrokeProps(stroke)}\n            />\n          ) : null\n        })}\n        <line\n          x1={htop}\n          y1={0}\n          x2={htop}\n          y2={viewHeight}\n          {...getStrokeProps(stroke)}\n        />\n        <line\n          x1={0}\n          y1={viewHeight - vtop}\n          x2={viewWidth}\n          y2={viewHeight - vtop}\n          {...getStrokeProps(stroke)}\n        />\n      </g>\n      {children}\n    </>\n  )\n})\n\nexport default function Grid({\n  model,\n  children,\n}: {\n  model: DotplotViewModel\n  children?: React.ReactNode\n}) {\n  const { viewWidth, viewHeight } = model\n  return (\n    <svg\n      width={viewWidth}\n      height={viewHeight}\n      style={{ background: 'rgba(0,0,0,0.12)' }}\n    >\n      <GridRaw model={model}>{children}</GridRaw>\n    </svg>\n  )\n}\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n}: {\n  width: number\n  height: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      x={0}\n      y={0}\n      width={width}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\nimport { when } from 'mobx'\nimport { getSession, renderToStaticMarkup } from '@jbrowse/core/util'\nimport { ThemeProvider } from '@mui/material'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getRoot } from 'mobx-state-tree'\n\n// locals\nimport { DotplotViewModel, ExportSvgOptions } from '../model'\nimport { GridRaw } from '../components/Grid'\nimport { HorizontalAxisRaw, VerticalAxisRaw } from '../components/Axes'\nimport SVGBackground from './SVGBackground'\n\n// render LGV to SVG\nexport async function renderToSvg(\n  model: DotplotViewModel,\n  opts: ExportSvgOptions,\n) {\n  await when(() => model.initialized)\n  const { themeName = 'default', Wrapper = ({ children }) => children } = opts\n\n  const { createRootFn } = getRoot<any>(model)\n  const session = getSession(model)\n  const theme = session.allThemes?.()[themeName]\n  const { width, borderX, viewWidth, viewHeight, tracks, height } = model\n  const shift = 50\n  const displayResults = await Promise.all(\n    tracks.map(async track => {\n      const display = track.displays[0]\n      await when(() => (display.ready !== undefined ? display.ready : true))\n      return { track, result: await display.renderSvg({ ...opts, theme }) }\n    }),\n  )\n  const w = width + shift * 2\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={createJBrowseTheme(theme)}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={height}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, w, height].toString()}\n        >\n          <SVGBackground width={w} height={height} />\n          <VerticalAxisRaw model={model} />\n          <g transform={`translate(${borderX} 0)`}>\n            <GridRaw model={model} />\n            <defs>\n              <clipPath id=\"clip-ruler\">\n                <rect x={0} y={0} width={viewWidth} height={viewHeight} />\n              </clipPath>\n            </defs>\n            <g clipPath=\"url(#clip-ruler)\">\n              {displayResults.map(({ result }, i) => (\n                /* biome-ignore lint/suspicious/noArrayIndexKey: */\n                <g key={i}>{result}</g>\n              ))}\n            </g>\n          </g>\n          <g transform={`translate(${borderX} ${viewHeight})`}>\n            <HorizontalAxisRaw model={model} />\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n"],"names":["useStyles","makeStyles","vtext","gridColumn","gridRow","pointerEvents","userSelect","htext","HorizontalAxis","observer","model","viewWidth","borderY","classes","React","width","height","className","HorizontalAxisRaw","borderX","hview","htextRotation","hticks","offsetPx","dynamicBlocks","bpPerPx","dblocks","contentBlocks","hide","getBlockLabelKeysToHide","theme","useTheme","hviewSnap","getSnapshot","staticBlocks","ticks","map","tick","bpToPx","refName","coord","base","self","filter","f","undefined","region","has","key","x","xoff","Math","floor","_extends","transform","JSON","stringify","y","fontSize","dominantBaseline","textAnchor","getFillProps","palette","text","primary","x1","x2","y1","y2","type","strokeWidth","t","getTickDisplayStr","assemblyNames","join","VerticalAxis","viewHeight","VerticalAxisRaw","vview","vtextRotation","vticks","vviewSnap","yoff","getStrokeProps","grey","GridRaw","children","hblocks","vblocks","length","htop","displayedRegionsTotalPx","vtop","hbottom","vbottom","stroke","divider","rx","max","ry","w","min","h","lastx","Number","POSITIVE_INFINITY","lasty","background","default","render","Grid","style","SVGBackground","fill","stripAlpha","async","renderToSvg","opts","when","initialized","themeName","Wrapper","createRootFn","getRoot","session","getSession","allThemes","tracks","displayResults","Promise","all","display","track","displays","ready","result","renderSvg","shift","renderToStaticMarkup","ThemeProvider","createJBrowseTheme","xmlns","xmlnsXlink","viewBox","toString","id","clipPath","i"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1281.1d836fc4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1281],{61281:(e,t,a)=>{a.r(t),a.d(t,{default:()=>k});var n=a(7552),r=a(29499),c=a(36715),s=a(1343),l=a(83867),o=a(33371),h=a(32808),i=a(58507),u=a(5401),d=a(49823),m=a(36422),g=a(75785),p=a(68446),A=a(99546);const b=(0,g.n9)()({dialogContent:{width:"40em"}}),k=(0,p.observer)((function({model:e,handleClose:t}){const{classes:a}=b(),[g,p]=(0,n.useState)(""),[k,C]=(0,n.useState)(!0),[E,S]=(0,n.useState)(!0),[w,y]=(0,n.useState)(!0);let v;try{new RegExp(g)}catch(e){v=e}return n.createElement(d.Dialog,{maxWidth:"xl",open:!0,onClose:t,title:"Sequence search"},n.createElement(r.A,{className:a.dialogContent},n.createElement(c.A,null,"Supply a sequence to search for. A track will be created with the resulting matches once submitted. You can also supply regex style expressions e.g. AACT(C|T)."),n.createElement(s.A,{value:g,onChange:e=>{p(e.target.value)},helperText:"Sequence search pattern"}),n.createElement(l.A,null,n.createElement(o.A,{control:n.createElement(h.A,{checked:k,onChange:e=>{C(e.target.checked)}}),label:"Search forward strand"}),n.createElement(o.A,{control:n.createElement(h.A,{checked:E,onChange:e=>{S(e.target.checked)}}),label:"Search reverse strand"}),n.createElement(o.A,{control:n.createElement(h.A,{checked:w,onChange:e=>{y(e.target.checked)}}),label:"Case insensitive"})),v?n.createElement(c.A,{color:"error"},`${v}`):null),n.createElement(i.A,null,n.createElement(u.A,{onClick:()=>{if(g){const t="sequence_search_"+ +Date.now(),a=(0,A.getSession)(e),{assemblyManager:n}=a,r=e.assemblyNames[0];(0,A.isSessionWithAddTracks)(a)&&(a.addTrackConf({trackId:t,name:`Sequence search ${g}`,assemblyNames:[r],type:"FeatureTrack",adapter:{type:"SequenceSearchAdapter",search:g,searchForward:k,searchReverse:E,caseInsensitive:w,sequenceAdapter:(0,m.getSnapshot)(n.get(r)?.configuration.sequence.adapter)}}),e.showTrack(t))}t()},variant:"contained",color:"primary"},"Submit"),n.createElement(u.A,{onClick:()=>{t()},variant:"contained",color:"secondary"},"Close")))}))}}]);
+//# sourceMappingURL=1281.1d836fc4.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1281.1d836fc4.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1281.1d836fc4.chunk.js","mappings":"kTAiBA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,cAAe,CACbC,MAAO,UAmIX,GA/H6BC,EAAAA,EAAAA,WAAS,UAAU,MAC9CC,EAAK,YACLC,IAQA,MAAM,QAAEC,GAAYP,KACbQ,EAAOC,IAAYC,EAAAA,EAAAA,UAAS,KAC5BC,EAAeC,IAAoBF,EAAAA,EAAAA,WAAS,IAC5CG,EAAeC,IAAoBJ,EAAAA,EAAAA,WAAS,IAC5CK,EAAiBC,IAAsBN,EAAAA,EAAAA,WAAS,GAEvD,IAAIO,EAEJ,IACE,IAAIC,OAAOV,EACb,CAAE,MAAOW,GACPF,EAAQE,CACV,CAEA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,SAAS,KAAKC,MAAI,EAACC,QAASlB,EAAamB,MAAM,mBACrDL,EAAAA,cAACM,EAAAA,EAAa,CAACC,UAAWpB,EAAQL,eAChCkB,EAAAA,cAACQ,EAAAA,EAAU,KAAC,mKAKZR,EAAAA,cAACS,EAAAA,EAAS,CACRrB,MAAOA,EACPsB,SAAUX,IACRV,EAASU,EAAEY,OAAOvB,MAAM,EAE1BwB,WAAW,4BAEbZ,EAAAA,cAACa,EAAAA,EAAS,KACRb,EAAAA,cAACc,EAAAA,EAAgB,CACfC,QACEf,EAAAA,cAACgB,EAAAA,EAAQ,CACPC,QAAS1B,EACTmB,SAAUQ,IACR1B,EAAiB0B,EAAMP,OAAOM,QAAQ,IAI5CE,MAAM,0BAERnB,EAAAA,cAACc,EAAAA,EAAgB,CACfC,QACEf,EAAAA,cAACgB,EAAAA,EAAQ,CACPC,QAASxB,EACTiB,SAAUQ,IACRxB,EAAiBwB,EAAMP,OAAOM,QAAQ,IAI5CE,MAAM,0BAERnB,EAAAA,cAACc,EAAAA,EAAgB,CACfC,QACEf,EAAAA,cAACgB,EAAAA,EAAQ,CACPC,QAAStB,EACTe,SAAUQ,IACRtB,EAAmBsB,EAAMP,OAAOM,QAAQ,IAI9CE,MAAM,sBAGTtB,EAAQG,EAAAA,cAACQ,EAAAA,EAAU,CAACY,MAAM,SAAS,GAAGvB,KAAwB,MAEjEG,EAAAA,cAACqB,EAAAA,EAAa,KACZrB,EAAAA,cAACsB,EAAAA,EAAM,CACLC,QAASA,KACP,GAAInC,EAAO,CACT,MAAMoC,EAAU,qBAAoBC,KAAKC,MACnCC,GAAUC,EAAAA,EAAAA,YAAW3C,IACrB,gBAAE4C,GAAoBF,EACtBG,EAAe7C,EAAM8C,cAAc,IACrCC,EAAAA,EAAAA,wBAAuBL,KACzBA,EAAQM,aAAa,CACnBT,UACAU,KAAM,mBAAmB9C,IACzB2C,cAAe,CAACD,GAChBK,KAAM,eACNC,QAAS,CACPD,KAAM,wBACNE,OAAQjD,EACRG,gBACAE,gBACAE,kBACA2C,iBAAiBC,EAAAA,EAAAA,aACfV,EAAgBW,IAAIV,IAAeW,cAAcC,SAC9CN,YAITnD,EAAM0D,UAAUnB,GAEpB,CACAtC,GAAa,EAEf0D,QAAQ,YACRxB,MAAM,WACP,UAIDpB,EAAAA,cAACsB,EAAAA,EAAM,CACLC,QAASA,KACPrC,GAAa,EAEf0D,QAAQ,YACRxB,MAAM,aACP,UAMT,G","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/SequenceSearchDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  DialogActions,\n  DialogContent,\n  FormGroup,\n  FormControlLabel,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()({\n  dialogContent: {\n    width: '40em',\n  },\n})\n\nconst SequenceSearchDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    assemblyNames: string[]\n    showTrack: (trackId: string) => void\n  }\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const [value, setValue] = useState('')\n  const [searchForward, setSearchForward] = useState(true)\n  const [searchReverse, setSearchReverse] = useState(true)\n  const [caseInsensitive, setCaseInsensitive] = useState(true)\n\n  let error: unknown\n\n  try {\n    new RegExp(value)\n  } catch (e) {\n    error = e\n  }\n\n  return (\n    <Dialog maxWidth=\"xl\" open onClose={handleClose} title=\"Sequence search\">\n      <DialogContent className={classes.dialogContent}>\n        <Typography>\n          Supply a sequence to search for. A track will be created with the\n          resulting matches once submitted. You can also supply regex style\n          expressions e.g. AACT(C|T).\n        </Typography>\n        <TextField\n          value={value}\n          onChange={e => {\n            setValue(e.target.value)\n          }}\n          helperText=\"Sequence search pattern\"\n        />\n        <FormGroup>\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={searchForward}\n                onChange={event => {\n                  setSearchForward(event.target.checked)\n                }}\n              />\n            }\n            label=\"Search forward strand\"\n          />\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={searchReverse}\n                onChange={event => {\n                  setSearchReverse(event.target.checked)\n                }}\n              />\n            }\n            label=\"Search reverse strand\"\n          />\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={caseInsensitive}\n                onChange={event => {\n                  setCaseInsensitive(event.target.checked)\n                }}\n              />\n            }\n            label=\"Case insensitive\"\n          />\n        </FormGroup>\n        {error ? <Typography color=\"error\">{`${error}`}</Typography> : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            if (value) {\n              const trackId = `sequence_search_${+Date.now()}`\n              const session = getSession(model)\n              const { assemblyManager } = session\n              const assemblyName = model.assemblyNames[0]!\n              if (isSessionWithAddTracks(session)) {\n                session.addTrackConf({\n                  trackId,\n                  name: `Sequence search ${value}`,\n                  assemblyNames: [assemblyName],\n                  type: 'FeatureTrack',\n                  adapter: {\n                    type: 'SequenceSearchAdapter',\n                    search: value,\n                    searchForward,\n                    searchReverse,\n                    caseInsensitive,\n                    sequenceAdapter: getSnapshot(\n                      assemblyManager.get(assemblyName)?.configuration.sequence\n                        .adapter,\n                    ),\n                  },\n                })\n                model.showTrack(trackId)\n              }\n            }\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n        >\n          Submit\n        </Button>\n\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"secondary\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SequenceSearchDialog\n"],"names":["useStyles","makeStyles","dialogContent","width","observer","model","handleClose","classes","value","setValue","useState","searchForward","setSearchForward","searchReverse","setSearchReverse","caseInsensitive","setCaseInsensitive","error","RegExp","e","React","Dialog","maxWidth","open","onClose","title","DialogContent","className","Typography","TextField","onChange","target","helperText","FormGroup","FormControlLabel","control","Checkbox","checked","event","label","color","DialogActions","Button","onClick","trackId","Date","now","session","getSession","assemblyManager","assemblyName","assemblyNames","isSessionWithAddTracks","addTrackConf","name","type","adapter","search","sequenceAdapter","getSnapshot","get","configuration","sequence","showTrack","variant"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1304.a512b560.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1304],{81304:(e,t,l)=>{l.r(t),l.d(t,{DotplotTooltipClick:()=>i,default:()=>r});var n=l(7552),o=l(68446),a=l(9236),s=l(90257);const i=(0,o.observer)((function({model:e,mousedown:t,mousedownClient:l,xdistance:o,ydistance:i}){const{hview:r,vview:b,viewHeight:c}=e,u=(l?.[0]||0)-0,w=(l?.[1]||0)-0;return t&&Math.abs(o)>3&&Math.abs(i)>3?n.createElement(a.default,{clientPoint:{x:u,y:w}},`x - ${(0,s.wJ)(t[0],r)}`,n.createElement("br",null),`y - ${(0,s.wJ)(c-t[1],b)}`,n.createElement("br",null)):null})),r=i}}]);
+//# sourceMappingURL=1304.a512b560.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1304.a512b560.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1304.a512b560.chunk.js","mappings":"+NASO,MAAMA,GAAsBC,EAAAA,EAAAA,WAAS,UAAU,MACpDC,EAAK,UACLC,EAAS,gBACTC,EAAe,UACfC,EAAS,UACTC,IAQA,MAAM,MAAEC,EAAK,MAAEC,EAAK,WAAEC,GAAeP,EAC/BQ,GAAKN,IAAkB,IAAM,GAAsB,EACnDO,GAAKP,IAAkB,IAAM,GAAsB,EAEzD,OAAOD,GAAaS,KAAKC,IAAIR,GAAa,GAAKO,KAAKC,IAAIP,GAAa,EACnEQ,EAAAA,cAACC,EAAAA,QAAW,CAACC,YAAa,CAAEN,IAAGC,MAC5B,QAAOM,EAAAA,EAAAA,IAAOd,EAAU,GAAII,KAC7BO,EAAAA,cAAA,WACC,QAAOG,EAAAA,EAAAA,IAAOR,EAAaN,EAAU,GAAIK,KAC1CM,EAAAA,cAAA,YAEA,IACN,IAEA,G","sources":["../../../plugins/dotplot-view/src/DotplotView/components/DotplotTooltipClick.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport BaseTooltip from '@jbrowse/core/ui/BaseTooltip'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport { locstr } from './util'\n\ntype Coord = [number, number] | undefined\nexport const DotplotTooltipClick = observer(function ({\n  model,\n  mousedown,\n  mousedownClient,\n  xdistance,\n  ydistance,\n}: {\n  model: DotplotViewModel\n  mousedown: Coord\n  mousedownClient: Coord\n  xdistance: number\n  ydistance: number\n}) {\n  const { hview, vview, viewHeight } = model\n  const x = (mousedownClient?.[0] || 0) - (xdistance < 0 ? 0 : 0)\n  const y = (mousedownClient?.[1] || 0) - (ydistance < 0 ? 0 : 0)\n\n  return mousedown && Math.abs(xdistance) > 3 && Math.abs(ydistance) > 3 ? (\n    <BaseTooltip clientPoint={{ x, y }}>\n      {`x - ${locstr(mousedown[0], hview)}`}\n      <br />\n      {`y - ${locstr(viewHeight - mousedown[1], vview)}`}\n      <br />\n    </BaseTooltip>\n  ) : null\n})\n\nexport default DotplotTooltipClick\n"],"names":["DotplotTooltipClick","observer","model","mousedown","mousedownClient","xdistance","ydistance","hview","vview","viewHeight","x","y","Math","abs","React","BaseTooltip","clientPoint","locstr"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1310.8a044016.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1310],{81310:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.A});var a=s(6679)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1326.19289940.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1326],{11326:(e,t,l)=>{l.r(t),l.d(t,{default:()=>m});var o=l(7552),n=l(68446),a=l(29499),r=l(36715),i=l(9937),c=l(58507),s=l(5401),h=l(49823),k=l(66395);const m=(0,n.observer)((function({onClose:e,model:t}){const{selectedBookmarks:l}=t,n=0===l.length,[m,u]=(0,o.useState)(l[0]?.highlight??"rgba(247, 129, 192, 0.35)");return o.createElement(h.Dialog,{open:!0,onClose:e,title:"Highlight bookmarks"},o.createElement(a.A,null,o.createElement(r.A,{variant:"h6"},"Bulk highlight selector"),o.createElement(i.A,{severity:"info"},n?o.createElement("span",null,"Use the checkboxes to select individual bookmarks to edit."):"Only selected bookmarks will be edited."),n?null:o.createElement(k.sk,{color:m,onChange:e=>{u(e)}})),o.createElement(c.A,null,o.createElement(s.A,{variant:"contained",color:"secondary",onClick:()=>{e()}},"Cancel"),o.createElement(s.A,{variant:"contained",color:"primary",onClick:()=>{t.updateBulkBookmarkHighlights(m),e()}},"Confirm")))}))}}]);
+//# sourceMappingURL=1326.19289940.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1326.19289940.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1326.19289940.chunk.js","mappings":"2PAeA,MA4DA,GA5DiCA,EAAAA,EAAAA,WAAS,UAAU,QAClDC,EAAO,MACPC,IAKA,MAAM,kBAAEC,GAAsBD,EACxBE,EAAwC,IAA7BD,EAAkBE,QAC5BC,EAAOC,IAAYC,EAAAA,EAAAA,UACxBL,EAAkB,IAAIM,WAAa,6BAGrC,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACX,QAASA,EAASY,MAAM,uBACnCH,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAU,CAACC,QAAQ,MAAK,2BACzBN,EAAAA,cAACO,EAAAA,EAAK,CAACC,SAAS,QACbd,EACCM,EAAAA,cAAA,YAAM,8DAIN,2CAGFN,EAOE,KANFM,EAAAA,cAACS,EAAAA,GAAW,CACVb,MAAOA,EACPc,SAAUC,IACRd,EAASc,EAAM,KAKvBX,EAAAA,cAACY,EAAAA,EAAa,KACZZ,EAAAA,cAACa,EAAAA,EAAM,CACLP,QAAQ,YACRV,MAAM,YACNkB,QAASA,KACPvB,GAAS,GAEZ,UAGDS,EAAAA,cAACa,EAAAA,EAAM,CACLP,QAAQ,YACRV,MAAM,UACNkB,QAASA,KACPtB,EAAMuB,6BAA6BnB,GACnCL,GAAS,GAEZ,YAMT,G","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  Alert,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { ColorPicker } from '@jbrowse/core/ui/ColorPicker'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\n\nconst EditHighlightColorDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: GridBookmarkModel\n}) {\n  const { selectedBookmarks } = model\n  const editNone = selectedBookmarks.length === 0\n  const [color, setColor] = useState(\n    selectedBookmarks[0]?.highlight ?? 'rgba(247, 129, 192, 0.35)',\n  )\n\n  return (\n    <Dialog open onClose={onClose} title=\"Highlight bookmarks\">\n      <DialogContent>\n        <Typography variant=\"h6\">Bulk highlight selector</Typography>\n        <Alert severity=\"info\">\n          {editNone ? (\n            <span>\n              Use the checkboxes to select individual bookmarks to edit.\n            </span>\n          ) : (\n            'Only selected bookmarks will be edited.'\n          )}\n        </Alert>\n        {!editNone ? (\n          <ColorPicker\n            color={color}\n            onChange={event => {\n              setColor(event)\n            }}\n          />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            onClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            model.updateBulkBookmarkHighlights(color)\n            onClose()\n          }}\n        >\n          Confirm\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default EditHighlightColorDialog\n"],"names":["observer","onClose","model","selectedBookmarks","editNone","length","color","setColor","useState","highlight","React","Dialog","open","title","DialogContent","Typography","variant","Alert","severity","ColorPicker","onChange","event","DialogActions","Button","onClick","updateBulkBookmarkHighlights"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1345.aaaaf175.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1345],{61345:(t,e,s)=>{s.r(e),s.d(e,{default:()=>A,getListItemAvatarUtilityClass:()=>I,listItemAvatarClasses:()=>c});var a=s(7552),r=s(93878),o=s(70799),i=s(57406),n=s(51148),l=s(4785),m=s(33761),u=s(85693);function I(t){return(0,u.Ay)("MuiListItemAvatar",t)}const c=(0,m.A)("MuiListItemAvatar",["root","alignItemsFlexStart"]);var g=s(69500);const v=(0,n.Ay)("div",{name:"MuiListItemAvatar",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:s}=t;return[e.root,"flex-start"===s.alignItems&&e.alignItemsFlexStart]}})({minWidth:56,flexShrink:0,variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}),A=a.forwardRef((function(t,e){const s=(0,l.b)({props:t,name:"MuiListItemAvatar"}),{className:n,...m}=s,u=a.useContext(i.A),c={...s,alignItems:u.alignItems},A=(t=>{const{alignItems:e,classes:s}=t,a={root:["root","flex-start"===e&&"alignItemsFlexStart"]};return(0,o.A)(a,I,s)})(c);return(0,g.jsx)(v,{className:(0,r.A)(A.root,n),ownerState:c,ref:e,...m})}))}}]);
+//# sourceMappingURL=1345.aaaaf175.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1345.aaaaf175.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1345.aaaaf175.chunk.js","mappings":"iTAEO,SAASA,EAA8BC,GAC5C,OAAO,EAAAC,EAAA,IAAqB,oBAAqBD,EACnD,CACA,MACA,GAD8B,EAAAE,EAAA,GAAuB,oBAAqB,CAAC,OAAQ,wB,eCMnF,MAUMC,GAAqB,EAAAC,EAAA,IAAO,MAAO,CACvCC,KAAM,oBACNL,KAAM,OACNM,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAgC,eAA1BD,EAAWE,YAA+BH,EAAOI,oBAAoB,GAPnE,CASxB,CACDC,SAAU,GACVC,WAAY,EACZC,SAAU,CAAC,CACTR,MAAO,CACLI,WAAY,cAEdK,MAAO,CACLC,UAAW,OAoDjB,EA5CoC,cAAiB,SAAwBC,EAASC,GACpF,MAAMZ,GAAQ,OAAgB,CAC5BA,MAAOW,EACPb,KAAM,uBAEF,UACJe,KACGC,GACDd,EACEe,EAAU,aAAiBC,EAAA,GAC3Bd,EAAa,IACdF,EACHI,WAAYW,EAAQX,YAEhBa,EAjDkBf,KACxB,MAAM,WACJE,EAAU,QACVa,GACEf,EACEgB,EAAQ,CACZf,KAAM,CAAC,OAAuB,eAAfC,GAA+B,wBAEhD,OAAO,EAAAe,EAAA,GAAeD,EAAO1B,EAA+ByB,EAAQ,EAyCpDG,CAAkBlB,GAClC,OAAoB,SAAKN,EAAoB,CAC3CiB,WAAW,EAAAQ,EAAA,GAAKJ,EAAQd,KAAMU,GAC9BX,WAAYA,EACZU,IAAKA,KACFE,GAEP,G","sources":["../../../node_modules/@mui/material/ListItemAvatar/listItemAvatarClasses.js","../../../node_modules/@mui/material/ListItemAvatar/ListItemAvatar.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemAvatar', slot);\n}\nconst listItemAvatarClasses = generateUtilityClasses('MuiListItemAvatar', ['root', 'alignItemsFlexStart']);\nexport default listItemAvatarClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ListContext from \"../List/ListContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getListItemAvatarUtilityClass } from \"./listItemAvatarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n  };\n  return composeClasses(slots, getListItemAvatarUtilityClass, classes);\n};\nconst ListItemAvatarRoot = styled('div', {\n  name: 'MuiListItemAvatar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n  }\n})({\n  minWidth: 56,\n  flexShrink: 0,\n  variants: [{\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      marginTop: 8\n    }\n  }]\n});\n\n/**\n * A simple wrapper to apply `List` styles to an `Avatar`.\n */\nconst ListItemAvatar = /*#__PURE__*/React.forwardRef(function ListItemAvatar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemAvatar'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    alignItems: context.alignItems\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemAvatarRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemAvatar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `Avatar`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemAvatar;"],"names":["getListItemAvatarUtilityClass","slot","generateUtilityClass","generateUtilityClasses","ListItemAvatarRoot","styled","name","overridesResolver","props","styles","ownerState","root","alignItems","alignItemsFlexStart","minWidth","flexShrink","variants","style","marginTop","inProps","ref","className","other","context","ListContext","classes","slots","composeClasses","useUtilityClasses","clsx"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1354.ded982ce.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1354],{91354:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.A});var a=s(4407)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/14.b9913d1d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[14],{10014:(e,t,a)=>{a.r(t),a.d(t,{default:()=>d,featureData:()=>h});var s=a(46377),r=a(99834),n=a(66885),i=a(99546),o=a(32598),c=a(7706);const l=new Set(["DUP","TRA","INV","CNV","DEL"]);function h(e,t,a,s){const r=e.split("\t"),n=r[a?3:0],o=+r[a?4:1],c=+r[a?5:2],h=r[a?0:3],d=+r[a?1:4],f=+r[a?2:5],p=r[6],m=+r[7],w=u(r[8]),g=u(r[9]),b=r.slice(10),T=s?Object.fromEntries(s.slice(10).map(((e,t)=>[e,b[t]]))):b,D=l.has(b[0])?`<${b[0]}>`:void 0;return new i.SimpleFeature({...T,start:o,end:c,type:"paired_feature",refName:n,strand:w,name:p,score:m,uniqueId:t,mate:{refName:h,start:d,end:f,strand:g},...D?{ALT:[D]}:{}})}function u(e){return"+"===e?1:"-"===e?-1:"."===e?0:void 0}class d extends s.BaseFeatureDataAdapter{intervalTrees={};static capabilities=["getFeatures","getRefNames"];async loadDataP(e={}){const t=this.pluginManager,a=this.getConf("bedpeLocation"),s=await(0,r.openLocation)(a,t).readFile(e),n=(0,i.isGzip)(s)?await(0,c.unzip)(s):s;if(n.length>536870888)throw new Error("Data exceeds maximum string length (512MB)");const o=new TextDecoder("utf8",{fatal:!0}).decode(n).split(/\n|\r\n|\r/).filter((e=>!!e)),l=[];let h=0;for(;h<o.length&&o[h].startsWith("#");h++)l.push(o[h]);const u=l.join("\n"),d={},f={};for(;h<o.length;h++){const e=o[h],t=e.split("\t"),a=t[0],s=t[3];d[a]||(d[a]=[]),f[s]||(f[s]=[]),d[a].push(e),f[s].push(e)}return{header:u,feats1:d,feats2:f,columnNames:this.getConf("columnNames")}}async loadData(e={}){return this.bedpeFeatures||(this.bedpeFeatures=this.loadDataP(e).catch((e=>{throw this.bedpeFeatures=void 0,e}))),this.bedpeFeatures}async getRefNames(e={}){const{feats1:t,feats2:a}=await this.loadData(e);return[...new Set([...Object.keys(t),...Object.keys(a)])]}async getHeader(e={}){const{header:t}=await this.loadData(e);return t}async getNames(){const{header:e,columnNames:t}=await this.loadData();if(t.length)return t;const a=e.split(/\n|\r\n|\r/).filter((e=>!!e)).at(-1);return a?.includes("\t")?a.slice(1).split("\t").map((e=>e.trim())):void 0}async loadFeatureTreeP(e){const{feats1:t,feats2:a}=await this.loadData(),s=await this.getNames(),r=new o.Ay,n=t[e]?.map(((t,a)=>h(t,`${this.id}-${e}-${a}-r1`,!1,s)))??[],i=a[e]?.map(((t,a)=>h(t,`${this.id}-${e}-${a}-r2`,!0,s)))??[];for(const e of[...n,...i])r.insert([e.get("start"),e.get("end")],e);return r}async loadFeatureTree(e){return this.intervalTrees[e]||(this.intervalTrees[e]=this.loadFeatureTreeP(e).catch((t=>{throw this.intervalTrees[e]=void 0,t}))),this.intervalTrees[e]}getFeatures(e,t={}){return(0,n.ObservableCreate)((async t=>{const{start:a,end:s,refName:r}=e,n=await this.loadFeatureTree(r);n?.search([a,s]).forEach((e=>{t.next(e)})),t.complete()}),t.signal)}freeResources(){}}}}]);
+//# sourceMappingURL=14.b9913d1d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/14.b9913d1d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/14.b9913d1d.chunk.js","mappings":"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","sources":["../../../plugins/bed/src/BedpeAdapter/BedpeAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Region, Feature, SimpleFeature, isGzip } from '@jbrowse/core/util'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport { unzip } from '@gmod/bgzf-filehandle'\n\nconst svTypes = new Set(['DUP', 'TRA', 'INV', 'CNV', 'DEL'])\n\nexport function featureData(\n  line: string,\n  uniqueId: string,\n  flip: boolean,\n  names?: string[],\n) {\n  const l = line.split('\\t')\n  const ref1 = l[flip ? 3 : 0]!\n  const start1 = +l[flip ? 4 : 1]!\n  const end1 = +l[flip ? 5 : 2]!\n  const ref2 = l[!flip ? 3 : 0]!\n  const start2 = +l[!flip ? 4 : 1]!\n  const end2 = +l[!flip ? 5 : 2]!\n  const name = l[6]!\n  const score = +l[7]!\n  const strand1 = parseStrand(l[8]!)\n  const strand2 = parseStrand(l[9]!)\n  const extra = l.slice(10)\n  const rest = names\n    ? Object.fromEntries(names.slice(10).map((n, idx) => [n, extra[idx]]))\n    : extra\n  const ALT = svTypes.has(extra[0]!) ? `<${extra[0]}>` : undefined\n\n  return new SimpleFeature({\n    ...rest,\n    start: start1,\n    end: end1,\n    type: 'paired_feature',\n    refName: ref1,\n    strand: strand1,\n    name,\n    score,\n    uniqueId,\n    mate: {\n      refName: ref2,\n      start: start2,\n      end: end2,\n      strand: strand2,\n    },\n    ...(ALT ? { ALT: [ALT] } : {}), // ALT is an array in VCF\n  })\n}\n\nfunction parseStrand(strand: string) {\n  if (strand === '+') {\n    return 1\n  }\n  if (strand === '-') {\n    return -1\n  }\n  if (strand === '.') {\n    return 0\n  }\n  return undefined\n}\n\nexport default class BedpeAdapter extends BaseFeatureDataAdapter {\n  protected bedpeFeatures?: Promise<{\n    header: string\n    feats1: Record<string, string[]>\n    feats2: Record<string, string[]>\n    columnNames: string[]\n  }>\n\n  protected intervalTrees: Record<\n    string,\n    Promise<IntervalTree | undefined> | undefined\n  > = {}\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  private async loadDataP(opts: BaseOptions = {}) {\n    const pm = this.pluginManager\n    const bedLoc = this.getConf('bedpeLocation')\n    const buf = await openLocation(bedLoc, pm).readFile(opts)\n    const buffer = isGzip(buf) ? await unzip(buf) : buf\n    // 512MB  max chrome string length is 512MB\n    if (buffer.length > 536_870_888) {\n      throw new Error('Data exceeds maximum string length (512MB)')\n    }\n    const data = new TextDecoder('utf8', { fatal: true }).decode(buffer)\n    const lines = data.split(/\\n|\\r\\n|\\r/).filter(f => !!f)\n    const headerLines = []\n    let i = 0\n    for (; i < lines.length && lines[i]!.startsWith('#'); i++) {\n      headerLines.push(lines[i])\n    }\n    const header = headerLines.join('\\n')\n    const feats1 = {} as Record<string, string[]>\n    const feats2 = {} as Record<string, string[]>\n    for (; i < lines.length; i++) {\n      const line = lines[i]!\n      const cols = line.split('\\t')\n      const r1 = cols[0]!\n      const r2 = cols[3]!\n      if (!feats1[r1]) {\n        feats1[r1] = []\n      }\n      if (!feats2[r2]) {\n        feats2[r2] = []\n      }\n      feats1[r1].push(line)\n      feats2[r2].push(line)\n    }\n    const columnNames = this.getConf('columnNames')\n\n    return {\n      header,\n      feats1,\n      feats2,\n      columnNames,\n    }\n  }\n\n  private async loadData(opts: BaseOptions = {}) {\n    if (!this.bedpeFeatures) {\n      this.bedpeFeatures = this.loadDataP(opts).catch((e: unknown) => {\n        this.bedpeFeatures = undefined\n        throw e\n      })\n    }\n\n    return this.bedpeFeatures\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    const { feats1, feats2 } = await this.loadData(opts)\n    return [...new Set([...Object.keys(feats1), ...Object.keys(feats2)])]\n  }\n\n  async getHeader(opts: BaseOptions = {}) {\n    const { header } = await this.loadData(opts)\n    return header\n  }\n\n  async getNames() {\n    const { header, columnNames } = await this.loadData()\n    if (columnNames.length) {\n      return columnNames\n    }\n    const defs = header.split(/\\n|\\r\\n|\\r/).filter(f => !!f)\n    const defline = defs.at(-1)\n    return defline?.includes('\\t')\n      ? defline\n          .slice(1)\n          .split('\\t')\n          .map(field => field.trim())\n      : undefined\n  }\n\n  private async loadFeatureTreeP(refName: string) {\n    const { feats1, feats2 } = await this.loadData()\n    const names = await this.getNames()\n    const intervalTree = new IntervalTree()\n    const ret1 =\n      feats1[refName]?.map((f, i) =>\n        featureData(f, `${this.id}-${refName}-${i}-r1`, false, names),\n      ) ?? []\n    const ret2 =\n      feats2[refName]?.map((f, i) =>\n        featureData(f, `${this.id}-${refName}-${i}-r2`, true, names),\n      ) ?? []\n\n    for (const obj of [...ret1, ...ret2]) {\n      intervalTree.insert([obj.get('start'), obj.get('end')], obj)\n    }\n\n    return intervalTree\n  }\n\n  private async loadFeatureTree(refName: string) {\n    if (!this.intervalTrees[refName]) {\n      this.intervalTrees[refName] = this.loadFeatureTreeP(refName).catch(\n        (e: unknown) => {\n          this.intervalTrees[refName] = undefined\n          throw e\n        },\n      )\n    }\n    return this.intervalTrees[refName]\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { start, end, refName } = query\n      const intervalTree = await this.loadFeatureTree(refName)\n      intervalTree?.search([start, end]).forEach(f => {\n        observer.next(f)\n      })\n      observer.complete()\n    }, opts.signal)\n  }\n\n  public freeResources(): void {}\n}\n"],"names":["svTypes","Set","featureData","line","uniqueId","flip","names","l","split","ref1","start1","end1","ref2","start2","end2","name","score","strand1","parseStrand","strand2","extra","slice","rest","Object","fromEntries","map","n","idx","ALT","has","undefined","SimpleFeature","start","end","type","refName","strand","mate","BedpeAdapter","BaseFeatureDataAdapter","intervalTrees","loadDataP","opts","pm","this","pluginManager","bedLoc","getConf","buf","openLocation","readFile","buffer","isGzip","unzip","length","Error","lines","TextDecoder","fatal","decode","filter","f","headerLines","i","startsWith","push","header","join","feats1","feats2","cols","r1","r2","columnNames","loadData","bedpeFeatures","catch","e","getRefNames","keys","getHeader","getNames","defline","at","includes","field","trim","loadFeatureTreeP","intervalTree","IntervalTree","ret1","id","ret2","obj","insert","get","loadFeatureTree","getFeatures","query","ObservableCreate","async","search","forEach","observer","next","complete","signal","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1503.cc48d25a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1503],{61503:(e,t,r)=>{r.r(t),r.d(t,{default:()=>y});var n=r(46377),s=r(99834),a=r(66885),i=r(32598),o=r(99546),c=r(7706);const l=["seq_name","source","featureType","start","end","score","strand","frame","attributes"];function u(e){return null===e?null:String(e).replace(/%([0-9A-Fa-f]{2})/g,((e,t)=>String.fromCharCode(parseInt(t,16))))}function f(e,t){return String(t).replace(e,(e=>{let t=e.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=`0${t}`),`%${t}`}))}function h(e){return f(/[\n;\r\t=%&,\x00-\x1f\x7f-\xff]/g,e)}const d=["-",".","+"];function p(e,t){const r=null===e.attributes||void 0===e.attributes?".":function(e){const t=[];return Object.keys(e).forEach((r=>{const n=e[r];let s;s=n.hasOwnProperty("toString")?h(n.toString()):Array.isArray(n.values)?n.values.map(h).join(","):Array.isArray(n)?n.map(h).join(","):h(n),t.push(`${h(r)} ${s}`)})),t.length?t.join("; ").concat(";"):"."}(e.attributes),n=[];for(let t=0;t<8;t+=1){const r=e[l[t]];n[t]=6===t?null==r?".":d[r+1]||r:null==r?".":f(/[\n\r\t%\x00-\x1f\x7f-\xff]/g,String(r))}n[8]=r;const s=`${n.join("\t")}\n`;return t[s]?"":(t[s]=!0,s)}function m(e,t){if(Array.isArray(e))return e.map((e=>m(e,t))).join("");const r=[p(e,t)];return["child_features","derived_features"].forEach((n=>{e[n]&&r.push(...e[n].map((e=>m(e,t))))})),r.join("")}function _(e){return m(e,{})}const b={Parent:"child_features",Derives_from:"derived_features"};class v{constructor(e){const t=()=>{};Object.assign(this,{featureCallback:e.featureCallback||t,endCallback:e.endCallback||t,commentCallback:e.commentCallback||t,errorCallback:e.errorCallback||t,directiveCallback:e.directiveCallback||t,sequenceCallback:e.sequenceCallback||t,bufferSize:void 0===e.bufferSize?1e3:e.bufferSize,_underConstructionTopLevel:[],_underConstructionById:{},_completedReferences:{},_underConstructionOrphans:{},eof:!1,lineNumber:0})}addLine(e){if(this.eof)return;if(this.lineNumber+=1,/^\s*[^#\s>]/.test(e))return void this._bufferLine(e);const t=/^\s*(#+)(.*)/.exec(e);if(t){let[,r,n]=t;if(3===r.length)this._emitAllUnderConstructionFeatures();else if(2===r.length){const t=function(e){const t=/^\s*##\s*(\S+)\s*(.*)/.exec(e);if(!t)return null;const r=t[1];let n=t[2];const s={directive:r};if(n.length&&(n=n.replace(/\r?\n$/,""),s.value=n),"sequence-region"===r){const[e,t,r]=n.split(/\s+/,3);s.seq_id=e,s.start=t&&t.replace(/\D/g,""),s.end=r&&r.replace(/\D/g,"")}else if("genome-build"===r){const[e,t]=n.split(/\s+/,2);s.source=e,s.buildname=t}return s}(e);this._emitItem(t)}else n=n.replace(/\s*/,""),this._emitItem({comment:n})}else if(!/^\s*$/.test(e)){const t=e.replace(/\r?\n?$/g,"");throw new Error(`GTF parse error.  Cannot parse '${t}'.`)}}_emitItem(e){e[0]?this.featureCallback(e):e.directive?this.directiveCallback(e):e.comment&&this.commentCallback(e)}finish(){this._emitAllUnderConstructionFeatures(),this.endCallback()}_enforceBufferSizeLimit(e=0){const t=e=>{var r,n,s;(null===(s=null===(n=null===(r=null==e?void 0:e[0])||void 0===r?void 0:r.attributes)||void 0===n?void 0:n.ID)||void 0===s?void 0:s[0])&&(e[0].attributes.ID.forEach((e=>{delete this._underConstructionById[e],delete this._completedReferences[e]})),e.forEach((e=>{e.child_features&&e.child_features.forEach((e=>{t(e)})),e.derived_features&&e.derived_features.forEach((e=>{t(e)}))})))};for(;this._underConstructionTopLevel.length+e>this.bufferSize;){const e=this._underConstructionTopLevel.shift();this._emitItem(e),t(e)}}_emitAllUnderConstructionFeatures(){if(this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},Object.values(this._underConstructionOrphans).filter((e=>Object.keys(e).length)).length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${JSON.stringify(this._underConstructionOrphans)}`)}_bufferLine(e){const t=function(e){const t=e.split("\t").map((e=>"."===e?null:e));t[0]=u(t[0]),t[1]=u(t[1]),t[2]=u(t[2]),t[8]=function(e){if(!e||!e.length||"."===e)return{};const t={};return e.replace(/\r?\n$/,"").slice(0,-1).split(";").forEach((e=>{if(!e)return;const r=e.trim().split(" ");if(!r[1]||!r[1].length)return;r[0]=r[0].trim();let n=t[r[0].trim()];n||(n=[],t[r[0]]=n),n.push(...r[1].split(",").map((e=>e.trim())).map(u))})),t}(t[8]);const r={};for(let e=0;e<l.length;e+=1)r[l[e]]="."===t[e]?null:t[e];return null!==r.start&&(r.start=parseInt(r.start,10)),null!==r.end&&(r.end=parseInt(r.end,10)),null!==r.score&&(r.score=parseFloat(r.score,10)),null!=r.strand&&(r.strand=r.strand),r}(e);t.child_features=[],t.derived_features=[];const r=this.lineNumber,n="transcript"===t.featureType,s=n?t.attributes.transcript_id||[]:[r],a=n?[]:t.attributes.transcript_id||[],i=t.attributes.Derives_from||[];if(!s.length&&!a.length&&!i.length)return void this._emitItem([t]);let o;a.forEach((e=>{this._underConstructionById[e]||this._bufferLine(function(e){const t=JSON.parse(JSON.stringify(e));return t.featureType="transcript",_(t)}(t))})),s.forEach((e=>{const r=this._underConstructionById[e];r?(r.push(t),o=r):(o=[t],this._enforceBufferSizeLimit(1),a.length||i.length||this._underConstructionTopLevel.push(o),this._underConstructionById[e]=o,this._resolveReferencesTo(o,e))})),this._resolveReferencesFrom(o||[t],{Parent:a,Derives_from:i},s)}_resolveReferencesTo(e,t){const r=this._underConstructionOrphans[t];r&&Object.keys(r).forEach((t=>{const n=b[t]||t.toLowerCase();e.forEach((e=>{e[n].push(...r[t]),delete r[t]}))}))}_parseError(e){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${e}`)}_resolveReferencesFrom(e,t,r){Object.entries(t).forEach((([t,n])=>{let s;n.forEach((n=>{const a=this._underConstructionById[n];var i,o;a?(o=e,(i=a)[0].start=Math.min(i[0].start,o[0].start),i[0].end=Math.max(i[0].end,o[0].end),s||(s=b[t]||t.toLowerCase()),r.filter((e=>function(e,t,r){let n=e[t];n||(n={},e[t]=n);const s=n[r]||!1;return n[r]=!0,s}(this._completedReferences,e,`${t},${n}`))).length||a.forEach((t=>{t[s].push(e)}))):(this._underConstructionOrphans[n]||(this._underConstructionOrphans[n]={}),this._underConstructionOrphans[n][t]||(this._underConstructionOrphans[n][t]=[]),this._underConstructionOrphans[n][t].push(e))}))}))}}function g(e){const t={...e};t.start-=1,t.strand={"+":1,"-":-1,".":0,"?":void 0}[e.strand],t.phase=Number(e.frame),t.refName=e.seq_name,null===e.score&&(t.score=void 0),null===e.frame&&(t.score=void 0);const r=new Set(["start","end","seq_name","score","featureType","source","frame","strand"]);for(const n of Object.keys(e.attributes)){let s=n.toLowerCase();if(r.has(s)&&(s+="2"),e.attributes[n]){let r=e.attributes[n];Array.isArray(r)&&1===r.length&&(r=r[0].replaceAll(/^"|"$/g,"")),t[s]=r}}return t.refName=t.seq_name,t.type=t.featureType,e.child_features&&e.child_features.length>0&&(t.subfeatures=e.child_features.flatMap((e=>e.map((e=>g(e)))))),t.child_features=void 0,t.data=void 0,t.derived_features=void 0,t._linehash=void 0,t.attributes=void 0,t.seq_name=void 0,t.featureType=void 0,t.frame=void 0,t.transcript_id&&(t.name=t.transcript_id),t}const C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;class y extends n.BaseFeatureDataAdapter{calculatedIntervalTreeMap={};async loadDataP(e){const{statusCallback:t=()=>{}}=e||{},r=await(0,s.openLocation)(this.getConf("gtfLocation"),this.pluginManager).readFile(e),n=(0,o.isGzip)(r)?await(0,o.updateStatus)("Unzipping",t,(()=>(0,c.unzip)(r))):r,a=[],l={};let u=0,f=0;for(;u<n.length;){const e=n.indexOf("\n",u),r=-1===e?n.subarray(u):n.subarray(u,e),s=(C?.decode(r)||r.toString()).trim();if(s)if(s.startsWith("#"))a.push(s);else{if(s.startsWith(">"))break;{const e=s.indexOf("\t"),t=s.slice(0,e);l[t]||(l[t]=""),l[t]+=`${s}\n`}}f++%1e4==0&&t(`Loading ${Math.floor(u/1e6).toLocaleString("en-US")}/${Math.floor(n.length/1e6).toLocaleString("en-US")} MB`),u=e+1}const h=Object.fromEntries(Object.entries(l).map((([e,t])=>[e,r=>{if(!this.calculatedIntervalTreeMap[e]){r?.("Parsing GTF data");const n=new i.Ay;(function(e){if(!e)return[];const t=[],r=new v({featureCallback:e=>t.push(e),errorCallback:e=>{throw e}});for(const t of e.split(/\r?\n/))r.addLine(t);return r.finish(),t})(t).flat().map(((t,r)=>new o.SimpleFeature({data:g(t),id:`${this.id}-${e}-${r}`}))).forEach((e=>n.insert([e.get("start"),e.get("end")],e))),this.calculatedIntervalTreeMap[e]=n}return this.calculatedIntervalTreeMap[e]}])));return{header:a.join("\n"),intervalTreeMap:h}}async loadData(e={}){return this.gtfFeatures||(this.gtfFeatures=this.loadDataP(e).catch((e=>{throw this.gtfFeatures=void 0,e}))),this.gtfFeatures}async getRefNames(e={}){const{intervalTreeMap:t}=await this.loadData(e);return Object.keys(t)}async getHeader(e={}){const{header:t}=await this.loadData(e);return t}getFeatures(e,t={}){return(0,a.ObservableCreate)((async r=>{try{const{start:n,end:s,refName:a}=e,{intervalTreeMap:i}=await this.loadData(t);i[a]?.(t.statusCallback).search([n,s]).forEach((e=>{r.next(e)})),r.complete()}catch(e){r.error(e)}}),t.signal)}freeResources(){}}}}]);
+//# sourceMappingURL=1503.cc48d25a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1503.cc48d25a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1503.cc48d25a.chunk.js","mappings":"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","sources":["../../../node_modules/gtf-nostream/src/util.ts","../../../node_modules/gtf-nostream/src/parse.ts","../../../plugins/gtf/src/util.ts","../../../plugins/gtf/src/GtfAdapter/GtfAdapter.ts","../../../node_modules/gtf-nostream/src/api.ts"],"sourcesContent":["//@ts-nocheck\n/** @module util */\n\n// Forks @gmod/gff-js and adapts it to parse and format GTF.\n\nconst fieldNames = [\n  'seq_name',\n  'source',\n  'featureType',\n  'start',\n  'end',\n  'score',\n  'strand',\n  'frame',\n  'attributes',\n]\n\n// TODO: check about enconding/escaping in gtf 9th column\n/**\n * Unescape a string/text value used in a GTF attribute.\n * Textual attributes should be surrounded by double quotes\n * source info:\n * https://mblab.wustl.edu/GTF22.html\n * https://en.wikipedia.org/wiki/Gene_transfer_format\n *\n * @param {String} s\n * @returns {String}\n */\nexport function unescape(s) {\n  if (s === null) {\n    return null\n  }\n  return String(s).replace(/%([0-9A-Fa-f]{2})/g, (_, seq) =>\n    String.fromCharCode(parseInt(seq, 16)),\n  )\n}\n\n/**\n * Escape a value for use in a GTF attribute value.\n *\n * @param {String} s\n * @returns {String}\n */\nfunction _escape(regex, s) {\n  return String(s).replace(regex, ch => {\n    let hex = ch.charCodeAt(0).toString(16).toUpperCase()\n\n    // lol, apparently there's no native function for fixed-width hex output\n    if (hex.length < 2) {\n      hex = `0${hex}`\n    }\n    return `%${hex}`\n  })\n}\n\nexport function escape(s) {\n  // eslint-disable-next-line no-control-regex\n  return _escape(/[\\n;\\r\\t=%&,\\x00-\\x1f\\x7f-\\xff]/g, s)\n}\n\n/**\n * Escape a value for use in a GTF column value.\n *\n * @param {String} s\n * @returns {String}\n */\nexport function escapeColumn(s) {\n  // eslint-disable-next-line no-control-regex\n  return _escape(/[\\n\\r\\t%\\x00-\\x1f\\x7f-\\xff]/g, s)\n}\n\n/**\n * Parse the 9th column (attributes) of a GTF feature line.\n *\n * @param {String} attrString\n * @returns {Object}\n */\nexport function parseAttributes(attrString) {\n  if (!(attrString && attrString.length) || attrString === '.') {\n    return {}\n  }\n\n  const attrs = {}\n\n  attrString\n    .replace(/\\r?\\n$/, '')\n    .slice(0, -1) // need to remove the last semicolon in the attributes\n    .split(';')\n    .forEach(attribute => {\n      if (!attribute) {\n        return\n      }\n      const attr = attribute.trim().split(' ')\n      if (!(attr[1] && attr[1].length)) {\n        return\n      }\n\n      attr[0] = attr[0].trim()\n      let arec = attrs[attr[0].trim()]\n      if (!arec) {\n        arec = []\n        attrs[attr[0]] = arec\n      }\n\n      // arec.push(unescape(attr[1].trim()))\n      arec.push(\n        ...attr[1]\n          .split(',')\n          .map(s => s.trim())\n          .map(unescape),\n      )\n    })\n  return attrs\n}\n\n/**\n * Parse a GTF feature line.\n *\n * @param {String} line\n * returns the parsed line in an object\n */\nexport function parseFeature(line) {\n  // assumed that there are no comments at the end of a line\n  // split the line into columns and replace '.' with null in each column\n  const f = line.split('\\t').map(a => (a === '.' ? null : a))\n\n  // unescape only the seq_name, source, and feature columns\n  f[0] = unescape(f[0])\n  f[1] = unescape(f[1])\n  f[2] = unescape(f[2])\n\n  f[8] = parseAttributes(f[8])\n  const parsed = {}\n  for (let i = 0; i < fieldNames.length; i += 1) {\n    parsed[fieldNames[i]] = f[i] === '.' ? null : f[i]\n  }\n  if (parsed.start !== null) {\n    parsed.start = parseInt(parsed.start, 10)\n  }\n  if (parsed.end !== null) {\n    parsed.end = parseInt(parsed.end, 10)\n  }\n  if (parsed.score !== null) {\n    parsed.score = parseFloat(parsed.score, 10)\n  }\n  if (parsed.strand != null) {\n    parsed.strand = parsed.strand\n  }\n  return parsed\n}\n\n/**\n * Parse a GTF directive/comment line.\n *\n * @param {String} line\n * @returns {Object} the information in the directive\n */\nexport function parseDirective(line) {\n  const match = /^\\s*##\\s*(\\S+)\\s*(.*)/.exec(line)\n  // const match = /^\\s*\\#\\#\\s*(\\S+)\\s*(.*)/.exec(line)\n  if (!match) {\n    return null\n  }\n\n  // let [, name, contents] = match\n  const name = match[1]\n  let contents = match[2]\n  const parsed = { directive: name }\n  if (contents.length) {\n    contents = contents.replace(/\\r?\\n$/, '')\n    parsed.value = contents\n  }\n\n  // do a little additional parsing for sequence-region and genome-build directives\n  if (name === 'sequence-region') {\n    const [seqId, contentStart, contentEnd] = contents.split(/\\s+/, 3)\n    parsed.seq_id = seqId\n    parsed.start = contentStart && contentStart.replace(/\\D/g, '')\n    parsed.end = contentEnd && contentEnd.replace(/\\D/g, '')\n  } else if (name === 'genome-build') {\n    const [source, buildname] = contents.split(/\\s+/, 2)\n    parsed.source = source\n    parsed.buildname = buildname\n  }\n\n  return parsed\n}\n\n/**\n * Format an attributes object into a string suitable for the 9th column of GTF.\n *\n * @param {Object} attrs\n */\nexport function formatAttributes(attrs) {\n  const attrOrder = []\n  Object.keys(attrs).forEach(tag => {\n    const val = attrs[tag]\n    let valstring\n    // eslint-disable-next-line no-prototype-builtins\n    if (val.hasOwnProperty('toString')) {\n      valstring = escape(val.toString())\n    } else if (Array.isArray(val.values)) {\n      valstring = val.values.map(escape).join(',')\n    } else if (Array.isArray(val)) {\n      valstring = val.map(escape).join(',')\n    } else {\n      valstring = escape(val)\n    }\n    attrOrder.push(`${escape(tag)} ${valstring}`)\n  })\n  return attrOrder.length ? attrOrder.join('; ').concat(';') : '.'\n}\n\nconst translateStrand = ['-', '.', '+']\n\nfunction _formatSingleFeature(f, seenFeature) {\n  const attrString =\n    f.attributes === null || f.attributes === undefined\n      ? '.'\n      : formatAttributes(f.attributes)\n\n  const fields = []\n  for (let i = 0; i < 8; i += 1) {\n    const val = f[fieldNames[i]]\n    // deserialize strand\n    if (i === 6) {\n      fields[i] =\n        val === null || val === undefined\n          ? '.'\n          : translateStrand[val + 1] || val\n    } else {\n      fields[i] =\n        val === null || val === undefined ? '.' : escapeColumn(String(val))\n    }\n  }\n  fields[8] = attrString\n\n  const formattedString = `${fields.join('\\t')}\\n`\n\n  // if we have already output this exact feature, skip it\n  if (seenFeature[formattedString]) {\n    return ''\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  seenFeature[formattedString] = true\n  return formattedString\n}\n\nfunction _formatFeature(feature, seenFeature) {\n  if (Array.isArray(feature)) {\n    return feature.map(f => _formatFeature(f, seenFeature)).join('')\n  }\n\n  const strings = [_formatSingleFeature(feature, seenFeature)]\n  ;['child_features', 'derived_features'].forEach(multiSlot => {\n    if (feature[multiSlot]) {\n      strings.push(\n        ...feature[multiSlot].map(f => _formatFeature(f, seenFeature)),\n      )\n    }\n  })\n  return strings.join('')\n}\n\n/**\n * Format a feature object or array of\n * feature objects into one or more lines of GTF.\n *\n * @param {Object|Array[Object]} featureOrFeatures\n */\nexport function formatFeature(featureOrFeatures) {\n  const seen = {}\n  return _formatFeature(featureOrFeatures, seen)\n}\n\n/**\n * Format a directive into a line of GTF.\n *\n * @param {Object} directive\n * @returns {String}\n */\nexport function formatDirective(directive) {\n  let str = `##${directive.directive}`\n  if (directive.value) {\n    str += ` ${directive.value}`\n  }\n  str += '\\n'\n  return str\n}\n\n/**\n * Format a comment into a GTF comment.\n * Yes I know this is just adding a # and a newline.\n *\n * @param {Object} comment\n * @returns {String}\n */\nexport function formatComment(comment) {\n  return `# ${comment.comment}\\n`\n}\n\n/**\n * Format a sequence object as FASTA\n *\n * @param {Object} seq\n * @returns {String} formatted single FASTA sequence\n */\nexport function formatSequence(seq) {\n  return `>${seq.id}${seq.description ? ` ${seq.description}` : ''}\\n${\n    seq.sequence\n  }\\n`\n}\n\n/**\n * Format a directive, comment, or feature,\n * or array of such items, into one or more lines of GTF.\n *\n * @param {Object|Array} itemOrItems\n */\nexport function formatItem(itemOrItems) {\n  function formatSingleItem(item) {\n    if (item[0] || item.attributes) {\n      return formatFeature(item)\n    }\n    if (item.directive) {\n      return formatDirective(item)\n    }\n    if (item.sequence) {\n      return formatSequence(item)\n    }\n    if (item.comment) {\n      return formatComment(item)\n    }\n    return '# (invalid item found during format)\\n'\n  }\n\n  if (Array.isArray(itemOrItems)) {\n    return itemOrItems.map(item => formatSingleItem(item))\n  }\n  return formatSingleItem(itemOrItems)\n}\n","//@ts-nocheck\nimport * as GTF from './util'\n\nconst containerAttributes = {\n  Parent: 'child_features',\n  Derives_from: 'derived_features',\n}\n\nexport default class Parser {\n  constructor(args) {\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    const nullFunc = () => {}\n\n    Object.assign(this, {\n      featureCallback: args.featureCallback || nullFunc,\n      endCallback: args.endCallback || nullFunc,\n      commentCallback: args.commentCallback || nullFunc,\n      errorCallback: args.errorCallback || nullFunc,\n      directiveCallback: args.directiveCallback || nullFunc,\n      sequenceCallback: args.sequenceCallback || nullFunc,\n\n      // number of lines to buffer\n      bufferSize: args.bufferSize === undefined ? 1000 : args.bufferSize,\n\n      // features that we have to keep on hand for now because they\n      // might be referenced by something else\n      _underConstructionTopLevel: [],\n      // index of the above by ID\n      _underConstructionById: {},\n\n      _completedReferences: {},\n\n      // features that reference something we have not seen yet\n      // structured as:\n      // {  'some_id' : {\n      //     'Parent' : [ orphans that have a Parent attr referencing it ],\n      //     'Derives_from' : [ orphans that have a Derives_from attr referencing it ],\n      //    }\n      // }\n      _underConstructionOrphans: {},\n\n      // if this is true, the parser ignores the\n      // rest of the lines in the file.\n      eof: false,\n\n      lineNumber: 0,\n    })\n  }\n\n  addLine(line) {\n    if (this.eof) {\n      // otherwise, if we are done, ignore this line\n      return\n    }\n\n    this.lineNumber += 1\n\n    if (/^\\s*[^#\\s>]/.test(line)) {\n      // feature line, most common case\n      this._bufferLine(line)\n      return\n    }\n\n    const match = /^\\s*(#+)(.*)/.exec(line)\n    if (match) {\n      // directive or comment\n      // eslint-disable-next-line prefer-const\n      let [, hashsigns, contents] = match\n\n      if (hashsigns.length === 3) {\n        // sync directive, all forward-references are resolved.\n        this._emitAllUnderConstructionFeatures()\n      } else if (hashsigns.length === 2) {\n        const directive = GTF.parseDirective(line)\n\n        this._emitItem(directive)\n      } else {\n        contents = contents.replace(/\\s*/, '')\n        this._emitItem({ comment: contents })\n      }\n    } else if (/^\\s*$/.test(line)) {\n      // blank line, do nothing\n    } else {\n      // it's a parse error\n      const errLine = line.replace(/\\r?\\n?$/g, '')\n      throw new Error(`GTF parse error.  Cannot parse '${errLine}'.`)\n    }\n  }\n\n  _emitItem(i) {\n    if (i[0]) {\n      this.featureCallback(i)\n    } else if (i.directive) {\n      this.directiveCallback(i)\n    } else if (i.comment) {\n      this.commentCallback(i)\n    }\n  }\n\n  finish() {\n    this._emitAllUnderConstructionFeatures()\n    this.endCallback()\n  }\n\n  _enforceBufferSizeLimit(additionalItemCount = 0) {\n    const _unbufferItem = item => {\n      if (\n        item?.[0]?.attributes?.ID?.[0]\n      ) {\n        const ids = item[0].attributes.ID\n        ids.forEach(id => {\n          delete this._underConstructionById[id]\n          delete this._completedReferences[id]\n        })\n        item.forEach(i => {\n          if (i.child_features) {\n            i.child_features.forEach(c => { _unbufferItem(c) })\n          }\n          if (i.derived_features) {\n            i.derived_features.forEach(d => { _unbufferItem(d) })\n          }\n        })\n      }\n    }\n\n    while (\n      this._underConstructionTopLevel.length + additionalItemCount >\n      this.bufferSize\n    ) {\n      const item = this._underConstructionTopLevel.shift()\n      this._emitItem(item)\n      _unbufferItem(item)\n    }\n  }\n\n  /**\n   * return all under-construction features, called when we know\n   * there will be no additional data to attach to them\n   * @private\n   */\n  _emitAllUnderConstructionFeatures() {\n    this._underConstructionTopLevel.forEach(this._emitItem.bind(this))\n\n    this._underConstructionTopLevel = []\n    this._underConstructionById = {}\n    this._completedReferences = {}\n\n    // if we have any orphans hanging around still, this is a\n    // problem. die with a parse error\n    if (\n      Object.values(this._underConstructionOrphans).filter(\n        entry => Object.keys(entry).length,\n      ).length\n    ) {\n      throw new Error(\n        `some features reference other features that do not exist in the file (or in the same '###' scope). ${JSON.stringify(\n          this._underConstructionOrphans,\n        )}`,\n      )\n    }\n  }\n\n  // do the right thing with a newly-parsed feature line\n  _bufferLine(line) {\n    const featureLine = GTF.parseFeature(line)\n    featureLine.child_features = []\n    featureLine.derived_features = []\n    // featureLine._lineNumber = this.lineNumber //< debugging aid\n\n    const featureNumber = this.lineNumber // no such thing as unique ID in GTF. make one up.\n    const isTranscript = featureLine.featureType === 'transcript' // trying to support the Cufflinks convention of adding a transcript line\n    // NOTE: a feature is an arrayref of one or more feature lines.\n    const ids = isTranscript\n      ? featureLine.attributes.transcript_id || []\n      : [featureNumber]\n    const parents = isTranscript\n      ? []\n      : featureLine.attributes.transcript_id || []\n    const derives = featureLine.attributes.Derives_from || []\n\n    if (!ids.length && !parents.length && !derives.length) {\n      // if it has no IDs and does not refer to anything, we can just\n      // output it\n      this._emitItem([featureLine])\n      return\n    }\n\n    function createTranscript(feature) {\n      const result = JSON.parse(JSON.stringify(feature))\n      result.featureType = 'transcript'\n      return GTF.formatFeature(result)\n    }\n\n    parents.forEach(parent => {\n      const underConst = this._underConstructionById[parent]\n      if (!underConst) {\n        this._bufferLine(createTranscript(featureLine))\n      }\n    })\n\n    let feature\n    ids.forEach(id => {\n      const existing = this._underConstructionById[id]\n      if (existing) {\n        existing.push(featureLine)\n        feature = existing\n      } else {\n        // haven't seen it yet, so buffer it so we can attach\n        // child features to it\n        feature = [featureLine]\n\n        this._enforceBufferSizeLimit(1)\n        if (!parents.length && !derives.length) {\n          this._underConstructionTopLevel.push(feature)\n        }\n        this._underConstructionById[id] = feature\n\n        // see if we have anything buffered that refers to it\n        this._resolveReferencesTo(feature, id)\n      }\n    })\n\n    // try to resolve all its references\n    this._resolveReferencesFrom(\n      feature || [featureLine],\n      { Parent: parents, Derives_from: derives },\n      ids,\n    )\n  }\n\n  _resolveReferencesTo(feature, id) {\n    const references = this._underConstructionOrphans[id]\n    if (!references) {\n      return\n    }\n\n    Object.keys(references).forEach(attrname => {\n      const pname = containerAttributes[attrname] || attrname.toLowerCase()\n      feature.forEach(loc => {\n        loc[pname].push(...references[attrname])\n        delete references[attrname]\n      })\n    })\n  }\n\n  _parseError(message) {\n    this.eof = true\n    this.errorCallback(`${this.lineNumber}: ${message}`)\n  }\n\n  _resolveReferencesFrom(feature, references, ids) {\n    // this is all a bit more awkward in javascript than it was in perl\n    function postSet(obj, slot1, slot2) {\n      let subObj = obj[slot1]\n      if (!subObj) {\n        subObj = {}\n         \n        obj[slot1] = subObj\n      }\n      const returnVal = subObj[slot2] || false\n      subObj[slot2] = true\n      return returnVal\n    }\n\n    function expandFeature(parentFeature, childFeature) {\n       \n      parentFeature[0].start = Math.min(\n        parentFeature[0].start,\n        childFeature[0].start,\n      )\n       \n      parentFeature[0].end = Math.max(parentFeature[0].end, childFeature[0].end)\n    }\n\n    Object.entries(references).forEach(([attrname, toIds]) => {\n      let pname\n      toIds.forEach(toId => {\n        const otherFeature = this._underConstructionById[toId]\n        if (otherFeature) {\n          expandFeature(otherFeature, feature)\n          if (!pname) {\n            pname = containerAttributes[attrname] || attrname.toLowerCase()\n          }\n\n          if (\n            !ids.filter(id =>\n              postSet(this._completedReferences, id, `${attrname},${toId}`),\n            ).length\n          ) {\n            otherFeature.forEach(location => {\n              location[pname].push(feature)\n            })\n          }\n        } else {\n          if (!this._underConstructionOrphans[toId]) {\n            this._underConstructionOrphans[toId] = {}\n          }\n          if (!this._underConstructionOrphans[toId][attrname]) {\n            this._underConstructionOrphans[toId][attrname] = []\n          }\n          this._underConstructionOrphans[toId][attrname].push(feature)\n        }\n      })\n    })\n  }\n}\n","export type Strand = '+' | '-' | '.' | '?'\nexport interface FeatureLoc {\n  [key: string]: unknown\n  start: number\n  end: number\n  strand: Strand\n  seq_name: string\n  child_features?: FeatureLoc[][]\n  data: unknown\n  derived_features: unknown\n  attributes: Record<string, unknown[]>\n}\n\nexport function featureData(data: FeatureLoc) {\n  const f: Record<string, unknown> = { ...data }\n  ;(f.start as number) -= 1 // convert to interbase\n  f.strand = { '+': 1, '-': -1, '.': 0, '?': undefined }[data.strand] // convert strand\n  f.phase = Number(data.frame)\n  f.refName = data.seq_name\n  if (data.score === null) {\n    f.score = undefined\n  }\n  if (data.frame === null) {\n    f.score = undefined\n  }\n  const defaultFields = new Set([\n    'start',\n    'end',\n    'seq_name',\n    'score',\n    'featureType',\n    'source',\n    'frame',\n    'strand',\n  ])\n  for (const a of Object.keys(data.attributes)) {\n    let b = a.toLowerCase()\n    if (defaultFields.has(b)) {\n      // add \"suffix\" to tag name if it already exists\n      // reproduces behavior of NCList\n      b += '2'\n    }\n    if (data.attributes[a]) {\n      let attr = data.attributes[a] as string[] | string\n      if (Array.isArray(attr) && attr.length === 1) {\n        // gtf uses double quotes for text values in the attributes column,\n        // remove them\n        attr = attr[0]!.replaceAll(/^\"|\"$/g, '')\n      }\n      f[b] = attr\n    }\n  }\n  f.refName = f.seq_name\n  f.type = f.featureType\n\n  // the SimpleFeature constructor takes care of recursively inflating subfeatures\n  if (data.child_features && data.child_features.length > 0) {\n    f.subfeatures = data.child_features.flatMap(childLocs =>\n      childLocs.map(childLoc => featureData(childLoc)),\n    )\n  }\n\n  f.child_features = undefined\n  f.data = undefined\n  f.derived_features = undefined\n  f._linehash = undefined\n  f.attributes = undefined\n  f.seq_name = undefined\n  f.featureType = undefined\n  f.frame = undefined\n\n  if (f.transcript_id) {\n    f.name = f.transcript_id\n  }\n  return f\n}\n","import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport {\n  SimpleFeature,\n  Feature,\n  updateStatus,\n  isGzip,\n} from '@jbrowse/core/util'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { parseStringSync } from 'gtf-nostream'\nimport type { Buffer } from 'buffer'\n\n// locals\nimport { FeatureLoc, featureData } from '../util'\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\ntype StatusCallback = (arg: string) => void\n\nexport default class GtfAdapter extends BaseFeatureDataAdapter {\n  calculatedIntervalTreeMap: Record<string, IntervalTree> = {}\n\n  gtfFeatures?: Promise<{\n    header: string\n    intervalTreeMap: Record<string, (sc?: StatusCallback) => IntervalTree>\n  }>\n\n  private async loadDataP(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const buf = (await openLocation(\n      this.getConf('gtfLocation'),\n      this.pluginManager,\n    ).readFile(opts)) as Buffer\n\n    const buffer = isGzip(buf)\n      ? await updateStatus('Unzipping', statusCallback, () => unzip(buf))\n      : buf\n    const headerLines = []\n    const featureMap = {} as Record<string, string>\n    let blockStart = 0\n\n    let i = 0\n    while (blockStart < buffer.length) {\n      const n = buffer.indexOf('\\n', blockStart)\n      // could be a non-newline ended file, so slice to end of file if n===-1\n      const b =\n        n === -1 ? buffer.subarray(blockStart) : buffer.subarray(blockStart, n)\n      const line = (decoder?.decode(b) || b.toString()).trim()\n      if (line) {\n        if (line.startsWith('#')) {\n          headerLines.push(line)\n        } else if (line.startsWith('>')) {\n          break\n        } else {\n          const ret = line.indexOf('\\t')\n          const refName = line.slice(0, ret)\n          if (!featureMap[refName]) {\n            featureMap[refName] = ''\n          }\n          featureMap[refName] += `${line}\\n`\n        }\n      }\n      if (i++ % 10_000 === 0) {\n        statusCallback(\n          `Loading ${Math.floor(blockStart / 1_000_000).toLocaleString('en-US')}/${Math.floor(buffer.length / 1_000_000).toLocaleString('en-US')} MB`,\n        )\n      }\n\n      blockStart = n + 1\n    }\n\n    const intervalTreeMap = Object.fromEntries(\n      Object.entries(featureMap).map(([refName, lines]) => [\n        refName,\n        (sc?: (arg: string) => void) => {\n          if (!this.calculatedIntervalTreeMap[refName]) {\n            sc?.('Parsing GTF data')\n            const intervalTree = new IntervalTree()\n            ;(parseStringSync(lines) as FeatureLoc[][])\n              .flat()\n              .map(\n                (f, i) =>\n                  new SimpleFeature({\n                    data: featureData(f),\n                    id: `${this.id}-${refName}-${i}`,\n                  }),\n              )\n              .forEach(obj =>\n                intervalTree.insert([obj.get('start'), obj.get('end')], obj),\n              )\n            this.calculatedIntervalTreeMap[refName] = intervalTree\n          }\n          return this.calculatedIntervalTreeMap[refName]\n        },\n      ]),\n    )\n\n    return {\n      header: headerLines.join('\\n'),\n      intervalTreeMap,\n    }\n  }\n\n  private async loadData(opts: BaseOptions = {}) {\n    if (!this.gtfFeatures) {\n      this.gtfFeatures = this.loadDataP(opts).catch((e: unknown) => {\n        this.gtfFeatures = undefined\n        throw e\n      })\n    }\n\n    return this.gtfFeatures\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    const { intervalTreeMap } = await this.loadData(opts)\n    return Object.keys(intervalTreeMap)\n  }\n\n  public async getHeader(opts: BaseOptions = {}) {\n    const { header } = await this.loadData(opts)\n    return header\n  }\n\n  public getFeatures(query: NoAssemblyRegion, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      try {\n        const { start, end, refName } = query\n        const { intervalTreeMap } = await this.loadData(opts)\n        intervalTreeMap[refName]?.(opts.statusCallback)\n          .search([start, end])\n          .forEach(f => {\n            observer.next(f)\n          })\n        observer.complete()\n      } catch (e) {\n        observer.error(e)\n      }\n    }, opts.signal)\n  }\n  public freeResources(/* { region } */) {}\n}\n","import Parser from './parse'\n\nexport function parseStringSync(str: string): unknown[] {\n  if (!str) {\n    return []\n  }\n\n  const items: unknown[] = []\n\n  const parser = new Parser({\n    // @ts-expect-error\n    featureCallback: item => items.push(item),\n    // @ts-expect-error\n    errorCallback: err => {\n      throw err\n    },\n  })\n\n  for (const line of str.split(/\\r?\\n/)) {\n    parser.addLine(line)\n  }\n  parser.finish()\n\n  return items\n}\n"],"names":["fieldNames","s","String","replace","_","seq","fromCharCode","parseInt","_escape","regex","ch","hex","charCodeAt","toString","toUpperCase","length","translateStrand","_formatSingleFeature","f","seenFeature","attrString","attributes","undefined","attrs","attrOrder","Object","keys","forEach","tag","val","valstring","hasOwnProperty","Array","isArray","values","map","join","push","concat","formatAttributes","fields","i","formattedString","_formatFeature","feature","strings","multiSlot","formatFeature","featureOrFeatures","containerAttributes","Parent","Derives_from","Parser","constructor","args","nullFunc","assign","this","featureCallback","endCallback","commentCallback","errorCallback","directiveCallback","sequenceCallback","bufferSize","_underConstructionTopLevel","_underConstructionById","_completedReferences","_underConstructionOrphans","eof","lineNumber","addLine","line","test","_bufferLine","match","exec","hashsigns","contents","_emitAllUnderConstructionFeatures","directive","name","parsed","value","seqId","contentStart","contentEnd","split","seq_id","start","end","source","buildname","_emitItem","comment","errLine","Error","finish","_enforceBufferSizeLimit","additionalItemCount","_unbufferItem","item","ID","id","child_features","c","derived_features","d","shift","bind","filter","entry","JSON","stringify","featureLine","a","slice","attribute","attr","trim","arec","parseAttributes","score","parseFloat","strand","featureNumber","isTranscript","featureType","ids","transcript_id","parents","derives","parent","result","parse","createTranscript","existing","_resolveReferencesTo","_resolveReferencesFrom","references","attrname","pname","toLowerCase","loc","_parseError","message","entries","toIds","toId","otherFeature","parentFeature","childFeature","Math","min","max","obj","slot1","slot2","subObj","returnVal","postSet","location","featureData","data","phase","Number","frame","refName","seq_name","defaultFields","Set","b","has","replaceAll","type","subfeatures","flatMap","childLocs","childLoc","_linehash","decoder","TextDecoder","GtfAdapter","BaseFeatureDataAdapter","calculatedIntervalTreeMap","loadDataP","opts","statusCallback","buf","openLocation","getConf","pluginManager","readFile","buffer","isGzip","updateStatus","unzip","headerLines","featureMap","blockStart","n","indexOf","subarray","decode","startsWith","ret","floor","toLocaleString","intervalTreeMap","fromEntries","lines","sc","intervalTree","IntervalTree","str","items","parser","err","parseStringSync","flat","SimpleFeature","insert","get","header","loadData","gtfFeatures","catch","e","getRefNames","getHeader","getFeatures","query","ObservableCreate","async","search","observer","next","complete","error","signal","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1516.ca4ab8f0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1516],{51516:(e,t,a)=>{a.r(t),a.d(t,{default:()=>y,getPaginationUtilityClass:()=>l,paginationClasses:()=>p});var o=a(7552),r=a(93878),i=a(70799),s=a(33761),n=a(85693);function l(e){return(0,n.Ay)("MuiPagination",e)}const p=(0,s.A)("MuiPagination",["root","ul","outlined","text"]);var d=a(97609),c=a(35960),u=a(51148),v=a(4785),g=a(69500);const m=(0,u.Ay)("nav",{name:"MuiPagination",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant]]}})({}),b=(0,u.Ay)("ul",{name:"MuiPagination",slot:"Ul",overridesResolver:(e,t)=>t.ul})({display:"flex",flexWrap:"wrap",alignItems:"center",padding:0,margin:0,listStyle:"none"});function h(e,t,a){return"page"===e?`${a?"":"Go to "}page ${t}`:`Go to ${e} page`}const y=o.forwardRef((function(e,t){const a=(0,v.b)({props:e,name:"MuiPagination"}),{boundaryCount:o=1,className:s,color:n="standard",count:p=1,defaultPage:u=1,disabled:y=!1,getItemAriaLabel:x=h,hideNextButton:A=!1,hidePrevButton:f=!1,onChange:$,page:C,renderItem:P=e=>(0,g.jsx)(c.A,{...e}),shape:w="circular",showFirstButton:z=!1,showLastButton:k=!1,siblingCount:M=1,size:R="medium",variant:O="text",...S}=a,{items:L}=function(e={}){const{boundaryCount:t=1,componentName:a="usePagination",count:o=1,defaultPage:r=1,disabled:i=!1,hideNextButton:s=!1,hidePrevButton:n=!1,onChange:l,page:p,showFirstButton:c=!1,showLastButton:u=!1,siblingCount:v=1,...g}=e,[m,b]=(0,d.A)({controlled:p,default:r,name:a,state:"page"}),h=(e,t)=>{p||b(t),l&&l(e,t)},y=(e,t)=>{const a=t-e+1;return Array.from({length:a},((t,a)=>e+a))},x=y(1,Math.min(t,o)),A=y(Math.max(o-t+1,t+1),o),f=Math.max(Math.min(m-v,o-t-2*v-1),t+2),$=Math.min(Math.max(m+v,t+2*v+2),o-t-1),C=[...c?["first"]:[],...n?[]:["previous"],...x,...f>t+2?["start-ellipsis"]:t+1<o-t?[t+1]:[],...y(f,$),...$<o-t-1?["end-ellipsis"]:o-t>t?[o-t]:[],...A,...s?[]:["next"],...u?["last"]:[]],P=e=>{switch(e){case"first":return 1;case"previous":return m-1;case"next":return m+1;case"last":return o;default:return null}};return{items:C.map((e=>"number"==typeof e?{onClick:t=>{h(t,e)},type:"page",page:e,selected:e===m,disabled:i,"aria-current":e===m?"true":void 0}:{onClick:t=>{h(t,P(e))},type:e,page:P(e),selected:!1,disabled:i||!e.includes("ellipsis")&&("next"===e||"last"===e?m>=o:m<=1)})),...g}}({...a,componentName:"Pagination"}),N={...a,boundaryCount:o,color:n,count:p,defaultPage:u,disabled:y,getItemAriaLabel:x,hideNextButton:A,hidePrevButton:f,renderItem:P,shape:w,showFirstButton:z,showLastButton:k,siblingCount:M,size:R,variant:O},j=(e=>{const{classes:t,variant:a}=e,o={root:["root",a],ul:["ul"]};return(0,i.A)(o,l,t)})(N);return(0,g.jsx)(m,{"aria-label":"pagination navigation",className:(0,r.A)(j.root,s),ownerState:N,ref:t,...S,children:(0,g.jsx)(b,{className:j.ul,ownerState:N,children:L.map(((e,t)=>(0,g.jsx)("li",{children:P({...e,color:n,"aria-label":x(e.type,e.page,e.selected),shape:w,size:R,variant:O})},t)))})})}))},35960:(e,t,a)=>{a.d(t,{A:()=>z});var o=a(7552),r=a(93878),i=a(70799),s=a(72639),n=a(93876),l=a(9547),p=a(48054),d=a(15622),c=a(58520),u=a(30627),v=a(27103),g=a(74893),m=a(69500);const b=(0,g.A)((0,m.jsx)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"NavigateBefore"),h=(0,g.A)((0,m.jsx)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"NavigateNext");var y=a(43045),x=a(51148),A=a(60129),f=a(4785);const $=(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant],t[`size${(0,d.A)(a.size)}`],"text"===a.variant&&t[`text${(0,d.A)(a.color)}`],"outlined"===a.variant&&t[`outlined${(0,d.A)(a.color)}`],"rounded"===a.shape&&t.rounded,"page"===a.type&&t.page,("start-ellipsis"===a.type||"end-ellipsis"===a.type)&&t.ellipsis,("previous"===a.type||"next"===a.type)&&t.previousNext,("first"===a.type||"last"===a.type)&&t.firstLast]},C=(0,x.Ay)("div",{name:"MuiPaginationItem",slot:"Root",overridesResolver:$})((0,A.A)((({theme:e})=>({...e.typography.body2,borderRadius:16,textAlign:"center",boxSizing:"border-box",minWidth:32,padding:"0 6px",margin:"0 3px",color:(e.vars||e).palette.text.primary,height:"auto",[`&.${l.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},variants:[{props:{size:"small"},style:{minWidth:26,borderRadius:13,margin:"0 1px",padding:"0 4px"}},{props:{size:"large"},style:{minWidth:40,borderRadius:20,padding:"0 10px",fontSize:e.typography.pxToRem(15)}}]})))),P=(0,x.Ay)(p.A,{name:"MuiPaginationItem",slot:"Root",overridesResolver:$})((0,A.A)((({theme:e})=>({...e.typography.body2,borderRadius:16,textAlign:"center",boxSizing:"border-box",minWidth:32,height:32,padding:"0 6px",margin:"0 3px",color:(e.vars||e).palette.text.primary,[`&.${l.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${l.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},transition:e.transitions.create(["color","background-color"],{duration:e.transitions.duration.short}),"&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${l.A.selected}`]:{backgroundColor:(e.vars||e).palette.action.selected,"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,s.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(e.vars||e).palette.action.selected}},[`&.${l.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,s.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)},[`&.${l.A.disabled}`]:{opacity:1,color:(e.vars||e).palette.action.disabled,backgroundColor:(e.vars||e).palette.action.selected}},variants:[{props:{size:"small"},style:{minWidth:26,height:26,borderRadius:13,margin:"0 1px",padding:"0 4px"}},{props:{size:"large"},style:{minWidth:40,height:40,borderRadius:20,padding:"0 10px",fontSize:e.typography.pxToRem(15)}},{props:{shape:"rounded"},style:{borderRadius:(e.vars||e).shape.borderRadius}},{props:{variant:"outlined"},style:{border:e.vars?`1px solid rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${l.A.selected}`]:{[`&.${l.A.disabled}`]:{borderColor:(e.vars||e).palette.action.disabledBackground,color:(e.vars||e).palette.action.disabled}}}},{props:{variant:"text"},style:{[`&.${l.A.selected}`]:{[`&.${l.A.disabled}`]:{color:(e.vars||e).palette.action.disabled}}}},...Object.entries(e.palette).filter((0,c.A)(["dark","contrastText"])).map((([t])=>({props:{variant:"text",color:t},style:{[`&.${l.A.selected}`]:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}},[`&.${l.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette[t].dark},[`&.${l.A.disabled}`]:{color:(e.vars||e).palette.action.disabled}}}}))),...Object.entries(e.palette).filter((0,c.A)(["light"])).map((([t])=>({props:{variant:"outlined",color:t},style:{[`&.${l.A.selected}`]:{color:(e.vars||e).palette[t].main,border:`1px solid ${e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.5)`:(0,s.X4)(e.palette[t].main,.5)}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.activatedOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.activatedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / calc(${e.vars.palette.action.activatedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,s.X4)(e.palette[t].main,e.palette.action.activatedOpacity+e.palette.action.focusOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${l.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / calc(${e.vars.palette.action.activatedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,s.X4)(e.palette[t].main,e.palette.action.activatedOpacity+e.palette.action.focusOpacity)}}}})))]})))),w=(0,x.Ay)("div",{name:"MuiPaginationItem",slot:"Icon",overridesResolver:(e,t)=>t.icon})((0,A.A)((({theme:e})=>({fontSize:e.typography.pxToRem(20),margin:"0 -8px",variants:[{props:{size:"small"},style:{fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{fontSize:e.typography.pxToRem(22)}}]})))),z=o.forwardRef((function(e,t){const a=(0,f.b)({props:e,name:"MuiPaginationItem"}),{className:o,color:s="standard",component:p,components:c={},disabled:g=!1,page:x,selected:A=!1,shape:$="circular",size:z="medium",slots:k={},slotProps:M={},type:R="page",variant:O="text",...S}=a,L={...a,color:s,disabled:g,selected:A,shape:$,size:z,type:R,variant:O},N=(0,n.I)(),j=(e=>{const{classes:t,color:a,disabled:o,selected:r,size:s,shape:n,type:p,variant:c}=e,u={root:["root",`size${(0,d.A)(s)}`,c,n,"standard"!==a&&`color${(0,d.A)(a)}`,"standard"!==a&&`${c}${(0,d.A)(a)}`,o&&"disabled",r&&"selected",{page:"page",first:"firstLast",last:"firstLast","start-ellipsis":"ellipsis","end-ellipsis":"ellipsis",previous:"previousNext",next:"previousNext"}[p]],icon:["icon"]};return(0,i.A)(u,l.q,t)})(L),B={slots:{previous:k.previous??c.previous,next:k.next??c.next,first:k.first??c.first,last:k.last??c.last},slotProps:M},[I,T]=(0,y.A)("previous",{elementType:b,externalForwardedProps:B,ownerState:L}),[F,W]=(0,y.A)("next",{elementType:h,externalForwardedProps:B,ownerState:L}),[X,V]=(0,y.A)("first",{elementType:u.A,externalForwardedProps:B,ownerState:L}),[_,q]=(0,y.A)("last",{elementType:v.A,externalForwardedProps:B,ownerState:L}),G=N?{previous:"next",next:"previous",first:"last",last:"first"}[R]:R,U={previous:I,next:F,first:X,last:_}[G],H={previous:T,next:W,first:V,last:q}[G];return"start-ellipsis"===R||"end-ellipsis"===R?(0,m.jsx)(C,{ref:t,ownerState:L,className:(0,r.A)(j.root,o),children:"…"}):(0,m.jsxs)(P,{ref:t,ownerState:L,component:p,disabled:g,className:(0,r.A)(j.root,o),...S,children:["page"===R&&x,U?(0,m.jsx)(w,{...H,className:j.icon,as:U}):null]})}))},9547:(e,t,a)=>{a.d(t,{A:()=>s,q:()=>i});var o=a(33761),r=a(85693);function i(e){return(0,r.Ay)("MuiPaginationItem",e)}const s=(0,o.A)("MuiPaginationItem",["root","page","sizeSmall","sizeLarge","text","textPrimary","textSecondary","outlined","outlinedPrimary","outlinedSecondary","rounded","ellipsis","firstLast","previousNext","focusVisible","disabled","selected","icon","colorPrimary","colorSecondary"])},30627:(e,t,a)=>{a.d(t,{A:()=>i}),a(7552);var o=a(74893),r=a(69500);const i=(0,o.A)((0,r.jsx)("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"}),"FirstPage")},27103:(e,t,a)=>{a.d(t,{A:()=>i}),a(7552);var o=a(74893),r=a(69500);const i=(0,o.A)((0,r.jsx)("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"}),"LastPage")}}]);
+//# sourceMappingURL=1516.ca4ab8f0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1516.ca4ab8f0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1516.ca4ab8f0.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Pagination/paginationClasses.js","../../../node_modules/@mui/material/Pagination/Pagination.js","../../../node_modules/@mui/material/usePagination/usePagination.js","../../../node_modules/@mui/material/internal/svg-icons/NavigateBefore.js","../../../node_modules/@mui/material/internal/svg-icons/NavigateNext.js","../../../node_modules/@mui/material/PaginationItem/PaginationItem.js","../../../node_modules/@mui/material/PaginationItem/paginationItemClasses.js","../../../node_modules/@mui/material/internal/svg-icons/FirstPage.js","../../../node_modules/@mui/material/internal/svg-icons/LastPage.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaginationUtilityClass(slot) {\n  return generateUtilityClass('MuiPagination', slot);\n}\nconst paginationClasses = generateUtilityClasses('MuiPagination', ['root', 'ul', 'outlined', 'text']);\nexport default paginationClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport integerPropType from '@mui/utils/integerPropType';\nimport { getPaginationUtilityClass } from \"./paginationClasses.js\";\nimport usePagination from \"../usePagination/index.js\";\nimport PaginationItem from \"../PaginationItem/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant],\n    ul: ['ul']\n  };\n  return composeClasses(slots, getPaginationUtilityClass, classes);\n};\nconst PaginationRoot = styled('nav', {\n  name: 'MuiPagination',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant]];\n  }\n})({});\nconst PaginationUl = styled('ul', {\n  name: 'MuiPagination',\n  slot: 'Ul',\n  overridesResolver: (props, styles) => styles.ul\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  alignItems: 'center',\n  padding: 0,\n  margin: 0,\n  listStyle: 'none'\n});\nfunction defaultGetAriaLabel(type, page, selected) {\n  if (type === 'page') {\n    return `${selected ? '' : 'Go to '}page ${page}`;\n  }\n  return `Go to ${type} page`;\n}\nconst Pagination = /*#__PURE__*/React.forwardRef(function Pagination(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPagination'\n  });\n  const {\n    boundaryCount = 1,\n    className,\n    color = 'standard',\n    count = 1,\n    defaultPage = 1,\n    disabled = false,\n    getItemAriaLabel = defaultGetAriaLabel,\n    hideNextButton = false,\n    hidePrevButton = false,\n    onChange,\n    page,\n    renderItem = item => /*#__PURE__*/_jsx(PaginationItem, {\n      ...item\n    }),\n    shape = 'circular',\n    showFirstButton = false,\n    showLastButton = false,\n    siblingCount = 1,\n    size = 'medium',\n    variant = 'text',\n    ...other\n  } = props;\n  const {\n    items\n  } = usePagination({\n    ...props,\n    componentName: 'Pagination'\n  });\n  const ownerState = {\n    ...props,\n    boundaryCount,\n    color,\n    count,\n    defaultPage,\n    disabled,\n    getItemAriaLabel,\n    hideNextButton,\n    hidePrevButton,\n    renderItem,\n    shape,\n    showFirstButton,\n    showLastButton,\n    siblingCount,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(PaginationRoot, {\n    \"aria-label\": \"pagination navigation\",\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: /*#__PURE__*/_jsx(PaginationUl, {\n      className: classes.ul,\n      ownerState: ownerState,\n      children: items.map((item, index) => /*#__PURE__*/_jsx(\"li\", {\n        children: renderItem({\n          ...item,\n          color,\n          'aria-label': getItemAriaLabel(item.type, item.page, item.selected),\n          shape,\n          size,\n          variant\n        })\n      }, index))\n    })\n  });\n});\n\n// @default tags synced with default values from usePagination\n\nprocess.env.NODE_ENV !== \"production\" ? Pagination.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Number of always visible pages at the beginning and end.\n   * @default 1\n   */\n  boundaryCount: integerPropType,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The active color.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'standard']), PropTypes.string]),\n  /**\n   * The total number of pages.\n   * @default 1\n   */\n  count: integerPropType,\n  /**\n   * The page selected by default when the component is uncontrolled.\n   * @default 1\n   */\n  defaultPage: integerPropType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   * This is important for screen reader users.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous' | 'start-ellipsis' | 'end-ellipsis'). Defaults to 'page'.\n   * @param {number | null} page The page number to format.\n   * @param {boolean} selected If true, the current page is selected.\n   * @returns {string}\n   */\n  getItemAriaLabel: PropTypes.func,\n  /**\n   * If `true`, hide the next-page button.\n   * @default false\n   */\n  hideNextButton: PropTypes.bool,\n  /**\n   * If `true`, hide the previous-page button.\n   * @default false\n   */\n  hidePrevButton: PropTypes.bool,\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {React.ChangeEvent<unknown>} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * The current page. Unlike `TablePagination`, which starts numbering from `0`, this pagination starts from `1`.\n   */\n  page: integerPropType,\n  /**\n   * Render the item.\n   * @param {PaginationRenderItemParams} params The props to spread on a PaginationItem.\n   * @returns {ReactNode}\n   * @default (item) => <PaginationItem {...item} />\n   */\n  renderItem: PropTypes.func,\n  /**\n   * The shape of the pagination items.\n   * @default 'circular'\n   */\n  shape: PropTypes.oneOf(['circular', 'rounded']),\n  /**\n   * If `true`, show the first-page button.\n   * @default false\n   */\n  showFirstButton: PropTypes.bool,\n  /**\n   * If `true`, show the last-page button.\n   * @default false\n   */\n  showLastButton: PropTypes.bool,\n  /**\n   * Number of always visible pages before and after the current page.\n   * @default 1\n   */\n  siblingCount: integerPropType,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Pagination;","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default function usePagination(props = {}) {\n  // keep default values in sync with @default tags in Pagination.propTypes\n  const {\n    boundaryCount = 1,\n    componentName = 'usePagination',\n    count = 1,\n    defaultPage = 1,\n    disabled = false,\n    hideNextButton = false,\n    hidePrevButton = false,\n    onChange: handleChange,\n    page: pageProp,\n    showFirstButton = false,\n    showLastButton = false,\n    siblingCount = 1,\n    ...other\n  } = props;\n  const [page, setPageState] = useControlled({\n    controlled: pageProp,\n    default: defaultPage,\n    name: componentName,\n    state: 'page'\n  });\n  const handleClick = (event, value) => {\n    if (!pageProp) {\n      setPageState(value);\n    }\n    if (handleChange) {\n      handleChange(event, value);\n    }\n  };\n\n  // https://dev.to/namirsab/comment/2050\n  const range = (start, end) => {\n    const length = end - start + 1;\n    return Array.from({\n      length\n    }, (_, i) => start + i);\n  };\n  const startPages = range(1, Math.min(boundaryCount, count));\n  const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n  const siblingsStart = Math.max(Math.min(\n  // Natural start\n  page - siblingCount,\n  // Lower boundary when page is high\n  count - boundaryCount - siblingCount * 2 - 1),\n  // Greater than startPages\n  boundaryCount + 2);\n  const siblingsEnd = Math.min(Math.max(\n  // Natural end\n  page + siblingCount,\n  // Upper boundary when page is low\n  boundaryCount + siblingCount * 2 + 2),\n  // Less than endPages\n  count - boundaryCount - 1);\n\n  // Basic list of items to render\n  // for example itemList = ['first', 'previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next', 'last']\n  const itemList = [...(showFirstButton ? ['first'] : []), ...(hidePrevButton ? [] : ['previous']), ...startPages,\n  // Start ellipsis\n  // eslint-disable-next-line no-nested-ternary\n  ...(siblingsStart > boundaryCount + 2 ? ['start-ellipsis'] : boundaryCount + 1 < count - boundaryCount ? [boundaryCount + 1] : []),\n  // Sibling pages\n  ...range(siblingsStart, siblingsEnd),\n  // End ellipsis\n  // eslint-disable-next-line no-nested-ternary\n  ...(siblingsEnd < count - boundaryCount - 1 ? ['end-ellipsis'] : count - boundaryCount > boundaryCount ? [count - boundaryCount] : []), ...endPages, ...(hideNextButton ? [] : ['next']), ...(showLastButton ? ['last'] : [])];\n\n  // Map the button type to its page number\n  const buttonPage = type => {\n    switch (type) {\n      case 'first':\n        return 1;\n      case 'previous':\n        return page - 1;\n      case 'next':\n        return page + 1;\n      case 'last':\n        return count;\n      default:\n        return null;\n    }\n  };\n\n  // Convert the basic item list to PaginationItem props objects\n  const items = itemList.map(item => {\n    return typeof item === 'number' ? {\n      onClick: event => {\n        handleClick(event, item);\n      },\n      type: 'page',\n      page: item,\n      selected: item === page,\n      disabled,\n      'aria-current': item === page ? 'true' : undefined\n    } : {\n      onClick: event => {\n        handleClick(event, buttonPage(item));\n      },\n      type: item,\n      page: buttonPage(item),\n      selected: false,\n      disabled: disabled || !item.includes('ellipsis') && (item === 'next' || item === 'last' ? page >= count : page <= 1)\n    };\n  });\n  return {\n    items,\n    ...other\n  };\n}","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'NavigateBefore');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'NavigateNext');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport paginationItemClasses, { getPaginationItemUtilityClass } from \"./paginationItemClasses.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport FirstPageIcon from \"../internal/svg-icons/FirstPage.js\";\nimport LastPageIcon from \"../internal/svg-icons/LastPage.js\";\nimport NavigateBeforeIcon from \"../internal/svg-icons/NavigateBefore.js\";\nimport NavigateNextIcon from \"../internal/svg-icons/NavigateNext.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.variant === 'text' && styles[`text${capitalize(ownerState.color)}`], ownerState.variant === 'outlined' && styles[`outlined${capitalize(ownerState.color)}`], ownerState.shape === 'rounded' && styles.rounded, ownerState.type === 'page' && styles.page, (ownerState.type === 'start-ellipsis' || ownerState.type === 'end-ellipsis') && styles.ellipsis, (ownerState.type === 'previous' || ownerState.type === 'next') && styles.previousNext, (ownerState.type === 'first' || ownerState.type === 'last') && styles.firstLast];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    selected,\n    size,\n    shape,\n    type,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', `size${capitalize(size)}`, variant, shape, color !== 'standard' && `color${capitalize(color)}`, color !== 'standard' && `${variant}${capitalize(color)}`, disabled && 'disabled', selected && 'selected', {\n      page: 'page',\n      first: 'firstLast',\n      last: 'firstLast',\n      'start-ellipsis': 'ellipsis',\n      'end-ellipsis': 'ellipsis',\n      previous: 'previousNext',\n      next: 'previousNext'\n    }[type]],\n    icon: ['icon']\n  };\n  return composeClasses(slots, getPaginationItemUtilityClass, classes);\n};\nconst PaginationItemEllipsis = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  height: 'auto',\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      minWidth: 26,\n      borderRadius: 26 / 2,\n      margin: '0 1px',\n      padding: '0 4px'\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      minWidth: 40,\n      borderRadius: 40 / 2,\n      padding: '0 10px',\n      fontSize: theme.typography.pxToRem(15)\n    }\n  }]\n})));\nconst PaginationItemPage = styled(ButtonBase, {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  height: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  [`&.${paginationItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  transition: theme.transitions.create(['color', 'background-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${paginationItemClasses.selected}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette.action.selected\n      }\n    },\n    [`&.${paginationItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    },\n    [`&.${paginationItemClasses.disabled}`]: {\n      opacity: 1,\n      color: (theme.vars || theme).palette.action.disabled,\n      backgroundColor: (theme.vars || theme).palette.action.selected\n    }\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      minWidth: 26,\n      height: 26,\n      borderRadius: 26 / 2,\n      margin: '0 1px',\n      padding: '0 4px'\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      minWidth: 40,\n      height: 40,\n      borderRadius: 40 / 2,\n      padding: '0 10px',\n      fontSize: theme.typography.pxToRem(15)\n    }\n  }, {\n    props: {\n      shape: 'rounded'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      border: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n      [`&.${paginationItemClasses.selected}`]: {\n        [`&.${paginationItemClasses.disabled}`]: {\n          borderColor: (theme.vars || theme).palette.action.disabledBackground,\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  }, {\n    props: {\n      variant: 'text'\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        [`&.${paginationItemClasses.disabled}`]: {\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])).map(([color]) => ({\n    props: {\n      variant: 'text',\n      color\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        color: (theme.vars || theme).palette[color].contrastText,\n        backgroundColor: (theme.vars || theme).palette[color].main,\n        '&:hover': {\n          backgroundColor: (theme.vars || theme).palette[color].dark,\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: (theme.vars || theme).palette[color].main\n          }\n        },\n        [`&.${paginationItemClasses.focusVisible}`]: {\n          backgroundColor: (theme.vars || theme).palette[color].dark\n        },\n        [`&.${paginationItemClasses.disabled}`]: {\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])).map(([color]) => ({\n    props: {\n      variant: 'outlined',\n      color\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.5)` : alpha(theme.palette[color].main, 0.5)}`,\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.activatedOpacity})` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity),\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity),\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: 'transparent'\n          }\n        },\n        [`&.${paginationItemClasses.focusVisible}`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity)\n        }\n      }\n    }\n  }))]\n})));\nconst PaginationItemPageIcon = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})(memoTheme(({\n  theme\n}) => ({\n  fontSize: theme.typography.pxToRem(20),\n  margin: '0 -8px',\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(18)\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(22)\n    }\n  }]\n})));\nconst PaginationItem = /*#__PURE__*/React.forwardRef(function PaginationItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPaginationItem'\n  });\n  const {\n    className,\n    color = 'standard',\n    component,\n    components = {},\n    disabled = false,\n    page,\n    selected = false,\n    shape = 'circular',\n    size = 'medium',\n    slots = {},\n    slotProps = {},\n    type = 'page',\n    variant = 'text',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disabled,\n    selected,\n    shape,\n    size,\n    type,\n    variant\n  };\n  const isRtl = useRtl();\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: {\n      previous: slots.previous ?? components.previous,\n      next: slots.next ?? components.next,\n      first: slots.first ?? components.first,\n      last: slots.last ?? components.last\n    },\n    slotProps\n  };\n  const [PreviousSlot, previousSlotProps] = useSlot('previous', {\n    elementType: NavigateBeforeIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [NextSlot, nextSlotProps] = useSlot('next', {\n    elementType: NavigateNextIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [FirstSlot, firstSlotProps] = useSlot('first', {\n    elementType: FirstPageIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [LastSlot, lastSlotProps] = useSlot('last', {\n    elementType: LastPageIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const rtlAwareType = isRtl ? {\n    previous: 'next',\n    next: 'previous',\n    first: 'last',\n    last: 'first'\n  }[type] : type;\n  const IconSlot = {\n    previous: PreviousSlot,\n    next: NextSlot,\n    first: FirstSlot,\n    last: LastSlot\n  }[rtlAwareType];\n  const iconSlotProps = {\n    previous: previousSlotProps,\n    next: nextSlotProps,\n    first: firstSlotProps,\n    last: lastSlotProps\n  }[rtlAwareType];\n  return type === 'start-ellipsis' || type === 'end-ellipsis' ? /*#__PURE__*/_jsx(PaginationItemEllipsis, {\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    children: \"\\u2026\"\n  }) : /*#__PURE__*/_jsxs(PaginationItemPage, {\n    ref: ref,\n    ownerState: ownerState,\n    component: component,\n    disabled: disabled,\n    className: clsx(classes.root, className),\n    ...other,\n    children: [type === 'page' && page, IconSlot ? /*#__PURE__*/_jsx(PaginationItemPageIcon, {\n      ...iconSlotProps,\n      className: classes.icon,\n      as: IconSlot\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? PaginationItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The active color.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'standard']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  components: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The current page number.\n   */\n  page: PropTypes.node,\n  /**\n   * If `true` the pagination item is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The shape of the pagination item.\n   * @default 'circular'\n   */\n  shape: PropTypes.oneOf(['circular', 'rounded']),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    first: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    last: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    next: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    previous: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of pagination item.\n   * @default 'page'\n   */\n  type: PropTypes.oneOf(['end-ellipsis', 'first', 'last', 'next', 'page', 'previous', 'start-ellipsis']),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default PaginationItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaginationItemUtilityClass(slot) {\n  return generateUtilityClass('MuiPaginationItem', slot);\n}\nconst paginationItemClasses = generateUtilityClasses('MuiPaginationItem', ['root', 'page', 'sizeSmall', 'sizeLarge', 'text', 'textPrimary', 'textSecondary', 'outlined', 'outlinedPrimary', 'outlinedSecondary', 'rounded', 'ellipsis', 'firstLast', 'previousNext', 'focusVisible', 'disabled', 'selected', 'icon', 'colorPrimary', 'colorSecondary']);\nexport default paginationItemClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"\n}), 'FirstPage');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"\n}), 'LastPage');"],"names":["getPaginationUtilityClass","slot","generateUtilityClass","generateUtilityClasses","PaginationRoot","styled","name","overridesResolver","props","styles","ownerState","root","variant","PaginationUl","ul","display","flexWrap","alignItems","padding","margin","listStyle","defaultGetAriaLabel","type","page","selected","inProps","ref","boundaryCount","className","color","count","defaultPage","disabled","getItemAriaLabel","hideNextButton","hidePrevButton","onChange","renderItem","item","PaginationItem","shape","showFirstButton","showLastButton","siblingCount","size","other","items","componentName","handleChange","pageProp","setPageState","useControlled","controlled","default","state","handleClick","event","value","range","start","end","length","Array","from","_","i","startPages","Math","min","endPages","max","siblingsStart","siblingsEnd","itemList","buttonPage","map","onClick","undefined","includes","usePagination","classes","slots","composeClasses","useUtilityClasses","clsx","children","index","createSvgIcon","d","capitalize","rounded","ellipsis","previousNext","firstLast","PaginationItemEllipsis","memoTheme","theme","typography","body2","borderRadius","textAlign","boxSizing","minWidth","vars","palette","text","primary","height","paginationItemClasses","opacity","action","disabledOpacity","variants","style","fontSize","pxToRem","PaginationItemPage","ButtonBase","focusVisible","backgroundColor","focus","transition","transitions","create","duration","short","hover","selectedChannel","selectedOpacity","hoverOpacity","focusOpacity","border","common","onBackgroundChannel","mode","borderColor","disabledBackground","Object","entries","filter","createSimplePaletteValueFilter","contrastText","main","dark","mainChannel","activatedOpacity","PaginationItemPageIcon","icon","component","components","slotProps","isRtl","first","last","previous","next","externalForwardedProps","PreviousSlot","previousSlotProps","useSlot","elementType","NavigateBefore","NextSlot","nextSlotProps","NavigateNext","FirstSlot","firstSlotProps","FirstPage","LastSlot","lastSlotProps","LastPage","rtlAwareType","IconSlot","iconSlotProps","as","getPaginationItemUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1537.4fdb4e95.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1537],{7720:(e,t,o)=>{o.d(t,{A:()=>n});var r=o(74893),a=o(69500);const n=(0,r.A)((0,a.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},63165:(e,t,o)=>{o.d(t,{A:()=>p});var r=o(7552),a=o(93878),n=o(70799),s=o(51148),i=o(60129),d=o(4785),c=o(79509),l=o(69500);const u=(0,s.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>({padding:e.spacing(1,2,2)})))),p=r.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiAccordionDetails"}),{className:r,...s}=o,i=o,p=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},c.n,t)})(i);return(0,l.jsx)(u,{className:(0,a.A)(p.root,r),ref:t,ownerState:i,...s})}))},79509:(e,t,o)=>{o.d(t,{A:()=>s,n:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiAccordionDetails",e)}const s=(0,r.A)("MuiAccordionDetails",["root"])},41578:(e,t,o)=>{o.d(t,{A:()=>x});var r=o(7552),a=o(93878),n=o(70799),s=o(51148),i=o(60129),d=o(4785),c=o(48054),l=o(51132),u=o(33761),p=o(85693);function m(e){return(0,p.Ay)("MuiAccordionSummary",e)}const A=(0,u.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var v=o(69500);const b=(0,s.Ay)(c.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>{const t={duration:e.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create(["min-height","background-color"],t),[`&.${A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${A.disabled})`]:{cursor:"pointer"},variants:[{props:e=>!e.disableGutters,style:{[`&.${A.expanded}`]:{minHeight:64}}}]}}))),h=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(e,t)=>t.content})((0,i.A)((({theme:e})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create(["margin"],{duration:e.transitions.duration.shortest}),[`&.${A.expanded}`]:{margin:"20px 0"}}}]})))),f=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(e,t)=>t.expandIconWrapper})((0,i.A)((({theme:e})=>({display:"flex",color:(e.vars||e).palette.action.active,transform:"rotate(0deg)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest}),[`&.${A.expanded}`]:{transform:"rotate(180deg)"}})))),x=r.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiAccordionSummary"}),{children:s,className:i,expandIcon:c,focusVisibleClassName:u,onClick:p,...A}=o,{disabled:x=!1,disableGutters:y,expanded:g,toggle:C}=r.useContext(l.A),M={...o,expanded:g,disabled:x,disableGutters:y},w=(e=>{const{classes:t,expanded:o,disabled:r,disableGutters:a}=e,s={root:["root",o&&"expanded",r&&"disabled",!a&&"gutters"],focusVisible:["focusVisible"],content:["content",o&&"expanded",!a&&"contentGutters"],expandIconWrapper:["expandIconWrapper",o&&"expanded"]};return(0,n.A)(s,m,t)})(M);return(0,v.jsxs)(b,{focusRipple:!1,disableRipple:!0,disabled:x,component:"div","aria-expanded":g,className:(0,a.A)(w.root,i),focusVisibleClassName:(0,a.A)(w.focusVisible,u),onClick:e=>{C&&C(e),p&&p(e)},ref:t,ownerState:M,...A,children:[(0,v.jsx)(h,{className:w.content,ownerState:M,children:s}),c&&(0,v.jsx)(f,{className:w.expandIconWrapper,ownerState:M,children:c})]})}))},1773:(e,t,o)=>{o.d(t,{A:()=>p});var r=o(7552),a=o(93878),n=o(70799),s=o(51148),i=o(4785),d=o(943),c=o(50885),l=o(69500);const u=(0,s.Ay)(d.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),p=r.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCard"}),{className:r,raised:s=!1,...d}=o,p={...o,raised:s},m=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},c.T,t)})(p);return(0,l.jsx)(u,{className:(0,a.A)(m.root,r),elevation:s?8:void 0,ref:t,ownerState:p,...d})}))},50885:(e,t,o)=>{o.d(t,{A:()=>s,T:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiCard",e)}const s=(0,r.A)("MuiCard",["root"])},25355:(e,t,o)=>{o.d(t,{A:()=>u});var r=o(7552),a=o(93878),n=o(70799),s=o(51148),i=o(4785),d=o(61823),c=o(69500);const l=(0,s.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:16,"&:last-child":{paddingBottom:24}}),u=r.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCardContent"}),{className:r,component:s="div",...u}=o,p={...o,component:s},m=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},d.h,t)})(p);return(0,c.jsx)(l,{as:s,className:(0,a.A)(m.root,r),ownerState:p,ref:t,...u})}))},61823:(e,t,o)=>{o.d(t,{A:()=>s,h:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiCardContent",e)}const s=(0,r.A)("MuiCardContent",["root"])},26875:(e,t,o)=>{o.d(t,{A:()=>b});var r=o(7552),a=o(93878),n=o(70799),s=o(90175),i=o(36715),d=o(51148),c=o(4785),l=o(63439),u=o(69500);const p=(0,d.Ay)("div",{name:"MuiCardHeader",slot:"Root",overridesResolver:(e,t)=>({[`& .${l.A.title}`]:t.title,[`& .${l.A.subheader}`]:t.subheader,...t.root})})({display:"flex",alignItems:"center",padding:16}),m=(0,d.Ay)("div",{name:"MuiCardHeader",slot:"Avatar",overridesResolver:(e,t)=>t.avatar})({display:"flex",flex:"0 0 auto",marginRight:16}),A=(0,d.Ay)("div",{name:"MuiCardHeader",slot:"Action",overridesResolver:(e,t)=>t.action})({flex:"0 0 auto",alignSelf:"flex-start",marginTop:-4,marginRight:-8,marginBottom:-4}),v=(0,d.Ay)("div",{name:"MuiCardHeader",slot:"Content",overridesResolver:(e,t)=>t.content})({flex:"1 1 auto",[`.${s.A.root}:where(& .${l.A.title})`]:{display:"block"},[`.${s.A.root}:where(& .${l.A.subheader})`]:{display:"block"}}),b=r.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiCardHeader"}),{action:r,avatar:s,className:d,component:b="div",disableTypography:h=!1,subheader:f,subheaderTypographyProps:x,title:y,titleTypographyProps:g,...C}=o,M={...o,component:b,disableTypography:h},w=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"],avatar:["avatar"],action:["action"],content:["content"],title:["title"],subheader:["subheader"]},l.u,t)})(M);let R=y;null==R||R.type===i.A||h||(R=(0,u.jsx)(i.A,{variant:s?"body2":"h5",className:w.title,component:"span",...g,children:R}));let N=f;return null==N||N.type===i.A||h||(N=(0,u.jsx)(i.A,{variant:s?"body2":"body1",className:w.subheader,color:"textSecondary",component:"span",...x,children:N})),(0,u.jsxs)(p,{className:(0,a.A)(w.root,d),as:b,ref:t,ownerState:M,...C,children:[s&&(0,u.jsx)(m,{className:w.avatar,ownerState:M,children:s}),(0,u.jsxs)(v,{className:w.content,ownerState:M,children:[R,N]}),r&&(0,u.jsx)(A,{className:w.action,ownerState:M,children:r})]})}))},63439:(e,t,o)=>{o.d(t,{A:()=>s,u:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiCardHeader",e)}const s=(0,r.A)("MuiCardHeader",["root","avatar","action","content","title","subheader"])}}]);
+//# sourceMappingURL=1537.4fdb4e95.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1537.4fdb4e95.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1537.4fdb4e95.chunk.js","mappings":"mKAIA,SAAe,QAA4B,SAAK,OAAQ,CACtDA,EAAG,iDACD,a,6HCKJ,MASMC,GAAuB,QAAO,MAAO,CACzCC,KAAM,sBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHlB,EAI1B,QAAU,EACXC,YACI,CACJC,QAASD,EAAME,QAAQ,EAAG,EAAG,QA0C/B,EAxCsC,cAAiB,SAA0BC,EAASC,GACxF,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,yBAEF,UACJW,KACGC,GACDT,EACEU,EAAaV,EACbW,EA5BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAAiCS,EAAQ,EAqBtDC,CAAkBF,GAClC,OAAoB,SAAKd,EAAsB,CAC7CY,WAAW,OAAKG,EAAQT,KAAMM,GAC9BD,IAAKA,EACLG,WAAYA,KACTD,GAEP,G,qEC5CO,SAASI,EAAgCf,GAC9C,OAAO,QAAqB,sBAAuBA,EACrD,CACA,MACA,GADgC,OAAuB,sBAAuB,CAAC,Q,mJCHxE,SAASgB,EAAgChB,GAC9C,OAAO,EAAAiB,EAAA,IAAqB,sBAAuBjB,EACrD,CACA,MACA,GADgC,EAAAkB,EAAA,GAAuB,sBAAuB,CAAC,OAAQ,WAAY,eAAgB,WAAY,UAAW,iBAAkB,UAAW,sB,eCQvK,MAeMC,GAAuB,EAAAC,EAAA,IAAOC,EAAA,EAAY,CAC9CtB,KAAM,sBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHlB,EAI1B,EAAAkB,EAAA,IAAU,EACXjB,YAEA,MAAMkB,EAAa,CACjBC,SAAUnB,EAAMoB,YAAYD,SAASE,UAEvC,MAAO,CACLC,QAAS,OACTC,UAAW,GACXtB,QAASD,EAAME,QAAQ,EAAG,GAC1BgB,WAAYlB,EAAMoB,YAAYI,OAAO,CAAC,aAAc,oBAAqBN,GACzE,CAAC,KAAK,EAAwBO,gBAAiB,CAC7CC,iBAAkB1B,EAAM2B,MAAQ3B,GAAO4B,QAAQC,OAAOC,OAExD,CAAC,KAAK,EAAwBC,YAAa,CACzCC,SAAUhC,EAAM2B,MAAQ3B,GAAO4B,QAAQC,OAAOI,iBAEhD,CAAC,gBAAgB,EAAwBF,aAAc,CACrDG,OAAQ,WAEVC,SAAU,CAAC,CACTtC,MAAOA,IAAUA,EAAMuC,eACvBC,MAAO,CACL,CAAC,KAAK,EAAwBC,YAAa,CACzCf,UAAW,OAIlB,KAEGgB,GAA0B,EAAAxB,EAAA,IAAO,MAAO,CAC5CrB,KAAM,sBACNC,KAAM,UACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO0C,SAHf,EAI7B,EAAAvB,EAAA,IAAU,EACXjB,YACI,CACJsB,QAAS,OACTmB,SAAU,EACVC,OAAQ,SACRP,SAAU,CAAC,CACTtC,MAAOA,IAAUA,EAAMuC,eACvBC,MAAO,CACLnB,WAAYlB,EAAMoB,YAAYI,OAAO,CAAC,UAAW,CAC/CL,SAAUnB,EAAMoB,YAAYD,SAASE,WAEvC,CAAC,KAAK,EAAwBiB,YAAa,CACzCI,OAAQ,kBAKVC,GAAoC,EAAA5B,EAAA,IAAO,MAAO,CACtDrB,KAAM,sBACNC,KAAM,oBACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO8C,mBAHL,EAIvC,EAAA3B,EAAA,IAAU,EACXjB,YACI,CACJsB,QAAS,OACTuB,OAAQ7C,EAAM2B,MAAQ3B,GAAO4B,QAAQC,OAAOiB,OAC5CC,UAAW,eACX7B,WAAYlB,EAAMoB,YAAYI,OAAO,YAAa,CAChDL,SAAUnB,EAAMoB,YAAYD,SAASE,WAEvC,CAAC,KAAK,EAAwBiB,YAAa,CACzCS,UAAW,uBAmGf,EAhGsC,cAAiB,SAA0B5C,EAASC,GACxF,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,yBAEF,SACJsD,EAAQ,UACR3C,EAAS,WACT4C,EAAU,sBACVC,EAAqB,QACrBC,KACG7C,GACDT,GACE,SACJkC,GAAW,EAAK,eAChBK,EAAc,SACdE,EAAQ,OACRc,GACE,aAAiBC,EAAAC,GASf/C,EAAa,IACdV,EACHyC,WACAP,WACAK,kBAEI5B,EAzHkBD,KACxB,MAAM,QACJC,EAAO,SACP8B,EAAQ,SACRP,EAAQ,eACRK,GACE7B,EACEgD,EAAQ,CACZxD,KAAM,CAAC,OAAQuC,GAAY,WAAYP,GAAY,YAAaK,GAAkB,WAClFX,aAAc,CAAC,gBACfe,QAAS,CAAC,UAAWF,GAAY,YAAaF,GAAkB,kBAChEQ,kBAAmB,CAAC,oBAAqBN,GAAY,aAEvD,OAAO,EAAAkB,EAAA,GAAeD,EAAO5C,EAAiCH,EAAQ,EA4GtDC,CAAkBF,GAClC,OAAoB,UAAMO,EAAsB,CAC9C2C,aAAa,EACbC,eAAe,EACf3B,SAAUA,EACV4B,UAAW,MACX,gBAAiBrB,EACjBjC,WAAW,EAAAuD,EAAA,GAAKpD,EAAQT,KAAMM,GAC9B6C,uBAAuB,EAAAU,EAAA,GAAKpD,EAAQiB,aAAcyB,GAClDC,QAvBmBU,IACfT,GACFA,EAAOS,GAELV,GACFA,EAAQU,EACV,EAkBAzD,IAAKA,EACLG,WAAYA,KACTD,EACH0C,SAAU,EAAc,SAAKT,EAAyB,CACpDlC,UAAWG,EAAQgC,QACnBjC,WAAYA,EACZyC,SAAUA,IACRC,IAA2B,SAAKN,EAAmC,CACrEtC,UAAWG,EAAQoC,kBACnBrC,WAAYA,EACZyC,SAAUC,MAGhB,G,0HCjJA,MASMa,GAAW,QAAO,IAAO,CAC7BpE,KAAM,UACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAH9B,CAId,CACDgE,SAAU,WAyDZ,EAvD0B,cAAiB,SAAc5D,EAASC,GAChE,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,aAEF,UACJW,EAAS,OACT2D,GAAS,KACN1D,GACDT,EACEU,EAAa,IACdV,EACHmE,UAEIxD,EA9BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAAqBS,EAAQ,EAuB1CC,CAAkBF,GAClC,OAAoB,SAAKuD,EAAU,CACjCzD,WAAW,OAAKG,EAAQT,KAAMM,GAC9B4D,UAAWD,EAAS,OAAIE,EACxB9D,IAAKA,EACLG,WAAYA,KACTD,GAEP,G,qEChDO,SAAS6D,EAAoBxE,GAClC,OAAO,QAAqB,UAAWA,EACzC,CACA,MACA,GADoB,OAAuB,UAAW,CAAC,Q,kHCKvD,MASMyE,GAAkB,QAAO,MAAO,CACpC1E,KAAM,iBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHvB,CAIrB,CACDE,QAAS,GACT,eAAgB,CACdoE,cAAe,MAqDnB,EAlDiC,cAAiB,SAAqBlE,EAASC,GAC9E,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,oBAEF,UACJW,EAAS,UACTsD,EAAY,SACTrD,GACDT,EACEU,EAAa,IACdV,EACH8D,aAEInD,EAjCkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAA4BS,EAAQ,EA0BjDC,CAAkBF,GAClC,OAAoB,SAAK6D,EAAiB,CACxCE,GAAIX,EACJtD,WAAW,OAAKG,EAAQT,KAAMM,GAC9BE,WAAYA,EACZH,IAAKA,KACFE,GAEP,G,qECjDO,SAASiE,EAA2B5E,GACzC,OAAO,QAAqB,iBAAkBA,EAChD,CACA,MACA,GAD2B,OAAuB,iBAAkB,CAAC,Q,wICMrE,MAcM6E,GAAiB,QAAO,MAAO,CACnC9E,KAAM,gBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KAAW,CACpC,CAAC,MAAM,IAAkB2E,SAAU3E,EAAO2E,MAC1C,CAAC,MAAM,IAAkBC,aAAc5E,EAAO4E,aAC3C5E,EAAOC,QANS,CAQpB,CACDuB,QAAS,OACTqD,WAAY,SACZ1E,QAAS,KAEL2E,GAAmB,QAAO,MAAO,CACrClF,KAAM,gBACNC,KAAM,SACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO+E,QAHtB,CAItB,CACDvD,QAAS,OACTwD,KAAM,WACNC,YAAa,KAETC,GAAmB,QAAO,MAAO,CACrCtF,KAAM,gBACNC,KAAM,SACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO+B,QAHtB,CAItB,CACDiD,KAAM,WACNG,UAAW,aACXC,WAAY,EACZH,aAAc,EACdI,cAAe,IAEXC,GAAoB,QAAO,MAAO,CACtC1F,KAAM,gBACNC,KAAM,UACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO0C,SAHrB,CAIvB,CACDsC,KAAM,WACN,CAAC,IAAI,IAAkB/E,iBAAiB,IAAkB0E,UAAW,CACnEnD,QAAS,SAEX,CAAC,IAAI,IAAkBvB,iBAAiB,IAAkB2E,cAAe,CACvEpD,QAAS,WAiIb,EA9HgC,cAAiB,SAAoBnB,EAASC,GAC5E,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,mBAEF,OACJmC,EAAM,OACNgD,EAAM,UACNxE,EAAS,UACTsD,EAAY,MAAK,kBACjB0B,GAAoB,EACpBX,UAAWY,EAAa,yBACxBC,EACAd,MAAOe,EAAS,qBAChBC,KACGnF,GACDT,EACEU,EAAa,IACdV,EACH8D,YACA0B,qBAEI7E,EAlFkBD,KACxB,MAAM,QACJC,GACED,EASJ,OAAO,OARO,CACZR,KAAM,CAAC,QACP8E,OAAQ,CAAC,UACThD,OAAQ,CAAC,UACTW,QAAS,CAAC,WACViC,MAAO,CAAC,SACRC,UAAW,CAAC,cAEe,IAA2BlE,EAAQ,EAsEhDC,CAAkBF,GAClC,IAAIkE,EAAQe,EACC,MAATf,GAAiBA,EAAMiB,OAAS,KAAeL,IACjDZ,GAAqB,SAAK,IAAY,CACpCkB,QAASd,EAAS,QAAU,KAC5BxE,UAAWG,EAAQiE,MACnBd,UAAW,UACR8B,EACHzC,SAAUyB,KAGd,IAAIC,EAAYY,EAWhB,OAViB,MAAbZ,GAAqBA,EAAUgB,OAAS,KAAeL,IACzDX,GAAyB,SAAK,IAAY,CACxCiB,QAASd,EAAS,QAAU,QAC5BxE,UAAWG,EAAQkE,UACnB7B,MAAO,gBACPc,UAAW,UACR4B,EACHvC,SAAU0B,MAGM,UAAMF,EAAgB,CACxCnE,WAAW,OAAKG,EAAQT,KAAMM,GAC9BiE,GAAIX,EACJvD,IAAKA,EACLG,WAAYA,KACTD,EACH0C,SAAU,CAAC6B,IAAuB,SAAKD,EAAkB,CACvDvE,UAAWG,EAAQqE,OACnBtE,WAAYA,EACZyC,SAAU6B,KACK,UAAMO,EAAmB,CACxC/E,UAAWG,EAAQgC,QACnBjC,WAAYA,EACZyC,SAAU,CAACyB,EAAOC,KAChB7C,IAAuB,SAAKmD,EAAkB,CAChD3E,UAAWG,EAAQqB,OACnBtB,WAAYA,EACZyC,SAAUnB,MAGhB,G,qECrIO,SAAS+D,EAA0BjG,GACxC,OAAO,QAAqB,gBAAiBA,EAC/C,CACA,MACA,GAD0B,OAAuB,gBAAiB,CAAC,OAAQ,SAAU,SAAU,UAAW,QAAS,a","sources":["../../../node_modules/@mui/icons-material/esm/ExpandMore.js","../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../../../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js","../../../node_modules/@mui/material/CardContent/CardContent.js","../../../node_modules/@mui/material/CardContent/cardContentClasses.js","../../../node_modules/@mui/material/CardHeader/CardHeader.js","../../../node_modules/@mui/material/CardHeader/cardHeaderClasses.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getAccordionDetailsUtilityClass } from \"./accordionDetailsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n})));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionDetailsRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport AccordionContext from \"../Accordion/AccordionContext.js\";\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from \"./accordionSummaryClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    },\n    variants: [{\n      props: props => !props.disableGutters,\n      style: {\n        [`&.${accordionSummaryClasses.expanded}`]: {\n          minHeight: 64\n        }\n      }\n    }]\n  };\n}));\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0',\n  variants: [{\n    props: props => !props.disableGutters,\n    style: {\n      transition: theme.transitions.create(['margin'], {\n        duration: theme.transitions.duration.shortest\n      }),\n      [`&.${accordionSummaryClasses.expanded}`]: {\n        margin: '20px 0'\n      }\n    }\n  }]\n})));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n})));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n    children,\n    className,\n    expandIcon,\n    focusVisibleClassName,\n    onClick,\n    ...other\n  } = props;\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    expanded,\n    disabled,\n    disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, {\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 16,\n  '&:last-child': {\n    paddingBottom: 24\n  }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography, { typographyClasses } from \"../Typography/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from \"./cardHeaderClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    avatar: ['avatar'],\n    action: ['action'],\n    content: ['content'],\n    title: ['title'],\n    subheader: ['subheader']\n  };\n  return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\nconst CardHeaderRoot = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => ({\n    [`& .${cardHeaderClasses.title}`]: styles.title,\n    [`& .${cardHeaderClasses.subheader}`]: styles.subheader,\n    ...styles.root\n  })\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Avatar',\n  overridesResolver: (props, styles) => styles.avatar\n})({\n  display: 'flex',\n  flex: '0 0 auto',\n  marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  flex: '0 0 auto',\n  alignSelf: 'flex-start',\n  marginTop: -4,\n  marginRight: -8,\n  marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})({\n  flex: '1 1 auto',\n  [`.${typographyClasses.root}:where(& .${cardHeaderClasses.title})`]: {\n    display: 'block'\n  },\n  [`.${typographyClasses.root}:where(& .${cardHeaderClasses.subheader})`]: {\n    display: 'block'\n  }\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardHeader'\n  });\n  const {\n    action,\n    avatar,\n    className,\n    component = 'div',\n    disableTypography = false,\n    subheader: subheaderProp,\n    subheaderTypographyProps,\n    title: titleProp,\n    titleTypographyProps,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableTypography\n  };\n  const classes = useUtilityClasses(ownerState);\n  let title = titleProp;\n  if (title != null && title.type !== Typography && !disableTypography) {\n    title = /*#__PURE__*/_jsx(Typography, {\n      variant: avatar ? 'body2' : 'h5',\n      className: classes.title,\n      component: \"span\",\n      ...titleTypographyProps,\n      children: title\n    });\n  }\n  let subheader = subheaderProp;\n  if (subheader != null && subheader.type !== Typography && !disableTypography) {\n    subheader = /*#__PURE__*/_jsx(Typography, {\n      variant: avatar ? 'body2' : 'body1',\n      className: classes.subheader,\n      color: \"textSecondary\",\n      component: \"span\",\n      ...subheaderTypographyProps,\n      children: subheader\n    });\n  }\n  return /*#__PURE__*/_jsxs(CardHeaderRoot, {\n    className: clsx(classes.root, className),\n    as: component,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n      className: classes.avatar,\n      ownerState: ownerState,\n      children: avatar\n    }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: [title, subheader]\n    }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n      className: classes.action,\n      ownerState: ownerState,\n      children: action\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display in the card header.\n   */\n  action: PropTypes.node,\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.node,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `title` text, and optional `subheader` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  subheader: PropTypes.node,\n  /**\n   * These props will be forwarded to the subheader\n   * (as long as disableTypography is not `true`).\n   */\n  subheaderTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The content of the component.\n   */\n  title: PropTypes.node,\n  /**\n   * These props will be forwarded to the title\n   * (as long as disableTypography is not `true`).\n   */\n  titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n  return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;"],"names":["d","AccordionDetailsRoot","name","slot","overridesResolver","props","styles","root","theme","padding","spacing","inProps","ref","className","other","ownerState","classes","useUtilityClasses","getAccordionDetailsUtilityClass","getAccordionSummaryUtilityClass","generateUtilityClass","generateUtilityClasses","AccordionSummaryRoot","styled","ButtonBase","memoTheme","transition","duration","transitions","shortest","display","minHeight","create","focusVisible","backgroundColor","vars","palette","action","focus","disabled","opacity","disabledOpacity","cursor","variants","disableGutters","style","expanded","AccordionSummaryContent","content","flexGrow","margin","AccordionSummaryExpandIconWrapper","expandIconWrapper","color","active","transform","children","expandIcon","focusVisibleClassName","onClick","toggle","AccordionContext","A","slots","composeClasses","focusRipple","disableRipple","component","clsx","event","CardRoot","overflow","raised","elevation","undefined","getCardUtilityClass","CardContentRoot","paddingBottom","as","getCardContentUtilityClass","CardHeaderRoot","title","subheader","alignItems","CardHeaderAvatar","avatar","flex","marginRight","CardHeaderAction","alignSelf","marginTop","marginBottom","CardHeaderContent","disableTypography","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","type","variant","getCardHeaderUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1598.3b48685f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1598],{26875:(e,a,t)=>{t.d(a,{A:()=>y});var r=t(7552),o=t(93878),s=t(70799),n=t(90175),l=t(36715),i=t(51148),d=t(4785),c=t(63439),u=t(69500);const h=(0,i.Ay)("div",{name:"MuiCardHeader",slot:"Root",overridesResolver:(e,a)=>({[`& .${c.A.title}`]:a.title,[`& .${c.A.subheader}`]:a.subheader,...a.root})})({display:"flex",alignItems:"center",padding:16}),p=(0,i.Ay)("div",{name:"MuiCardHeader",slot:"Avatar",overridesResolver:(e,a)=>a.avatar})({display:"flex",flex:"0 0 auto",marginRight:16}),b=(0,i.Ay)("div",{name:"MuiCardHeader",slot:"Action",overridesResolver:(e,a)=>a.action})({flex:"0 0 auto",alignSelf:"flex-start",marginTop:-4,marginRight:-8,marginBottom:-4}),v=(0,i.Ay)("div",{name:"MuiCardHeader",slot:"Content",overridesResolver:(e,a)=>a.content})({flex:"1 1 auto",[`.${n.A.root}:where(& .${c.A.title})`]:{display:"block"},[`.${n.A.root}:where(& .${c.A.subheader})`]:{display:"block"}}),y=r.forwardRef((function(e,a){const t=(0,d.b)({props:e,name:"MuiCardHeader"}),{action:r,avatar:n,className:i,component:y="div",disableTypography:A=!1,subheader:m,subheaderTypographyProps:g,title:f,titleTypographyProps:w,...x}=t,C={...t,component:y,disableTypography:A},H=(e=>{const{classes:a}=e;return(0,s.A)({root:["root"],avatar:["avatar"],action:["action"],content:["content"],title:["title"],subheader:["subheader"]},c.u,a)})(C);let j=f;null==j||j.type===l.A||A||(j=(0,u.jsx)(l.A,{variant:n?"body2":"h5",className:H.title,component:"span",...w,children:j}));let R=m;return null==R||R.type===l.A||A||(R=(0,u.jsx)(l.A,{variant:n?"body2":"body1",className:H.subheader,color:"textSecondary",component:"span",...g,children:R})),(0,u.jsxs)(h,{className:(0,o.A)(H.root,i),as:y,ref:a,ownerState:C,...x,children:[n&&(0,u.jsx)(p,{className:H.avatar,ownerState:C,children:n}),(0,u.jsxs)(v,{className:H.content,ownerState:C,children:[j,R]}),r&&(0,u.jsx)(b,{className:H.action,ownerState:C,children:r})]})}))},63439:(e,a,t)=>{t.d(a,{A:()=>n,u:()=>s});var r=t(33761),o=t(85693);function s(e){return(0,o.Ay)("MuiCardHeader",e)}const n=(0,r.A)("MuiCardHeader",["root","avatar","action","content","title","subheader"])},31598:(e,a,t)=>{t.r(a),t.d(a,{cardHeaderClasses:()=>o.A,default:()=>r.A,getCardHeaderUtilityClass:()=>o.u});var r=t(26875),o=t(63439)}}]);
+//# sourceMappingURL=1598.3b48685f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1598.3b48685f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1598.3b48685f.chunk.js","mappings":"+OAWA,MAcMA,GAAiB,QAAO,MAAO,CACnCC,KAAM,gBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KAAW,CACpC,CAAC,MAAM,IAAkBC,SAAUD,EAAOC,MAC1C,CAAC,MAAM,IAAkBC,aAAcF,EAAOE,aAC3CF,EAAOG,QANS,CAQpB,CACDC,QAAS,OACTC,WAAY,SACZC,QAAS,KAELC,GAAmB,QAAO,MAAO,CACrCX,KAAM,gBACNC,KAAM,SACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOQ,QAHtB,CAItB,CACDJ,QAAS,OACTK,KAAM,WACNC,YAAa,KAETC,GAAmB,QAAO,MAAO,CACrCf,KAAM,gBACNC,KAAM,SACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOY,QAHtB,CAItB,CACDH,KAAM,WACNI,UAAW,aACXC,WAAY,EACZJ,aAAc,EACdK,cAAe,IAEXC,GAAoB,QAAO,MAAO,CACtCpB,KAAM,gBACNC,KAAM,UACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOiB,SAHrB,CAIvB,CACDR,KAAM,WACN,CAAC,IAAI,IAAkBN,iBAAiB,IAAkBF,UAAW,CACnEG,QAAS,SAEX,CAAC,IAAI,IAAkBD,iBAAiB,IAAkBD,cAAe,CACvEE,QAAS,WAiIb,EA9HgC,cAAiB,SAAoBc,EAASC,GAC5E,MAAMpB,GAAQ,OAAgB,CAC5BA,MAAOmB,EACPtB,KAAM,mBAEF,OACJgB,EAAM,OACNJ,EAAM,UACNY,EAAS,UACTC,EAAY,MAAK,kBACjBC,GAAoB,EACpBpB,UAAWqB,EAAa,yBACxBC,EACAvB,MAAOwB,EAAS,qBAChBC,KACGC,GACD5B,EACE6B,EAAa,IACd7B,EACHsB,YACAC,qBAEIO,EAlFkBD,KACxB,MAAM,QACJC,GACED,EASJ,OAAO,OARO,CACZzB,KAAM,CAAC,QACPK,OAAQ,CAAC,UACTI,OAAQ,CAAC,UACTK,QAAS,CAAC,WACVhB,MAAO,CAAC,SACRC,UAAW,CAAC,cAEe,IAA2B2B,EAAQ,EAsEhDC,CAAkBF,GAClC,IAAI3B,EAAQwB,EACC,MAATxB,GAAiBA,EAAM8B,OAAS,KAAeT,IACjDrB,GAAqB,SAAK,IAAY,CACpC+B,QAASxB,EAAS,QAAU,KAC5BY,UAAWS,EAAQ5B,MACnBoB,UAAW,UACRK,EACHO,SAAUhC,KAGd,IAAIC,EAAYqB,EAWhB,OAViB,MAAbrB,GAAqBA,EAAU6B,OAAS,KAAeT,IACzDpB,GAAyB,SAAK,IAAY,CACxC8B,QAASxB,EAAS,QAAU,QAC5BY,UAAWS,EAAQ3B,UACnBgC,MAAO,gBACPb,UAAW,UACRG,EACHS,SAAU/B,MAGM,UAAMP,EAAgB,CACxCyB,WAAW,OAAKS,EAAQ1B,KAAMiB,GAC9Be,GAAId,EACJF,IAAKA,EACLS,WAAYA,KACTD,EACHM,SAAU,CAACzB,IAAuB,SAAKD,EAAkB,CACvDa,UAAWS,EAAQrB,OACnBoB,WAAYA,EACZK,SAAUzB,KACK,UAAMQ,EAAmB,CACxCI,UAAWS,EAAQZ,QACnBW,WAAYA,EACZK,SAAU,CAAChC,EAAOC,KAChBU,IAAuB,SAAKD,EAAkB,CAChDS,UAAWS,EAAQjB,OACnBgB,WAAYA,EACZK,SAAUrB,MAGhB,G,qECrIO,SAASwB,EAA0BvC,GACxC,OAAO,QAAqB,gBAAiBA,EAC/C,CACA,MACA,GAD0B,OAAuB,gBAAiB,CAAC,OAAQ,SAAU,SAAU,UAAW,QAAS,a","sources":["../../../node_modules/@mui/material/CardHeader/CardHeader.js","../../../node_modules/@mui/material/CardHeader/cardHeaderClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography, { typographyClasses } from \"../Typography/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from \"./cardHeaderClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    avatar: ['avatar'],\n    action: ['action'],\n    content: ['content'],\n    title: ['title'],\n    subheader: ['subheader']\n  };\n  return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\nconst CardHeaderRoot = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => ({\n    [`& .${cardHeaderClasses.title}`]: styles.title,\n    [`& .${cardHeaderClasses.subheader}`]: styles.subheader,\n    ...styles.root\n  })\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Avatar',\n  overridesResolver: (props, styles) => styles.avatar\n})({\n  display: 'flex',\n  flex: '0 0 auto',\n  marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  flex: '0 0 auto',\n  alignSelf: 'flex-start',\n  marginTop: -4,\n  marginRight: -8,\n  marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})({\n  flex: '1 1 auto',\n  [`.${typographyClasses.root}:where(& .${cardHeaderClasses.title})`]: {\n    display: 'block'\n  },\n  [`.${typographyClasses.root}:where(& .${cardHeaderClasses.subheader})`]: {\n    display: 'block'\n  }\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardHeader'\n  });\n  const {\n    action,\n    avatar,\n    className,\n    component = 'div',\n    disableTypography = false,\n    subheader: subheaderProp,\n    subheaderTypographyProps,\n    title: titleProp,\n    titleTypographyProps,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableTypography\n  };\n  const classes = useUtilityClasses(ownerState);\n  let title = titleProp;\n  if (title != null && title.type !== Typography && !disableTypography) {\n    title = /*#__PURE__*/_jsx(Typography, {\n      variant: avatar ? 'body2' : 'h5',\n      className: classes.title,\n      component: \"span\",\n      ...titleTypographyProps,\n      children: title\n    });\n  }\n  let subheader = subheaderProp;\n  if (subheader != null && subheader.type !== Typography && !disableTypography) {\n    subheader = /*#__PURE__*/_jsx(Typography, {\n      variant: avatar ? 'body2' : 'body1',\n      className: classes.subheader,\n      color: \"textSecondary\",\n      component: \"span\",\n      ...subheaderTypographyProps,\n      children: subheader\n    });\n  }\n  return /*#__PURE__*/_jsxs(CardHeaderRoot, {\n    className: clsx(classes.root, className),\n    as: component,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n      className: classes.avatar,\n      ownerState: ownerState,\n      children: avatar\n    }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: [title, subheader]\n    }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n      className: classes.action,\n      ownerState: ownerState,\n      children: action\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display in the card header.\n   */\n  action: PropTypes.node,\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.node,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `title` text, and optional `subheader` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  subheader: PropTypes.node,\n  /**\n   * These props will be forwarded to the subheader\n   * (as long as disableTypography is not `true`).\n   */\n  subheaderTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The content of the component.\n   */\n  title: PropTypes.node,\n  /**\n   * These props will be forwarded to the title\n   * (as long as disableTypography is not `true`).\n   */\n  titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n  return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;"],"names":["CardHeaderRoot","name","slot","overridesResolver","props","styles","title","subheader","root","display","alignItems","padding","CardHeaderAvatar","avatar","flex","marginRight","CardHeaderAction","action","alignSelf","marginTop","marginBottom","CardHeaderContent","content","inProps","ref","className","component","disableTypography","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","other","ownerState","classes","useUtilityClasses","type","variant","children","color","as","getCardHeaderUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1637.21a8cf01.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1637],{1637:(e,a,b)=>{b.r(a),b.d(a,{default:()=>s.BaseCard});var s=b(68984)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1696.8a290cef.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1696],{1696:(e,t,r)=>{r.r(t),r.d(t,{default:()=>h});var i=r(7552),o=r(68446),a=r(29499),n=r(36715),s=r(59705),l=r(58507),c=r(5401),d=r(49823);const m=(0,r(75785).n9)()((e=>({table:{border:"1px solid #888",margin:e.spacing(4),"& td":{padding:e.spacing(1)}}})));function u({modifications:e}){const{classes:t}=m();return i.createElement("table",{className:t.table},i.createElement("tbody",null,e.map((([e,t])=>i.createElement("tr",{key:e},i.createElement("td",null,e),i.createElement("td",null,t),i.createElement("td",{style:{width:"1em",background:t}}))))))}const h=(0,o.observer)((function({model:e,handleClose:t}){const{colorBy:r,modificationTagMap:o}=e,m=[...o.entries()];return i.createElement(d.Dialog,{open:!0,onClose:t,title:"Color by modifications"},i.createElement(a.A,null,i.createElement(n.A,null,"You can choose to color the modifications in the BAM/CRAM MM/ML specification using this dialog. Choosing modifications colors the modified positions and can color multiple modification types. Choosing the methylation setting colors methylated and unmethylated CpG."),i.createElement(n.A,null,"Note: you can revisit this dialog to see the current mapping of colors to modification type for the modification coloring mode"),i.createElement("div",{style:{margin:20}},"modifications"===r?.type?i.createElement("div",null,m.length?i.createElement(i.Fragment,null,"Current modification-type-to-color mapping",i.createElement(u,{modifications:[...o.entries()]})):i.createElement(i.Fragment,null,i.createElement(n.A,null,"Note: color by modifications is already enabled. Loading current modifications..."),i.createElement(s.A,{size:15}))):null,"methylation"===r?.type?i.createElement(u,{modifications:[["methylated","red"],["unmethylated","blue"]]}):null),i.createElement(l.A,null,i.createElement(c.A,{variant:"contained",onClick:()=>{e.setColorScheme({type:"modifications"}),t()}},"Modifications"),i.createElement(c.A,{variant:"contained",onClick:()=>{e.setColorScheme({type:"methylation"}),t()}},"Methylation"),i.createElement(c.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"))))}))},59705:(e,t,r)=>{r.d(t,{A:()=>A});var i=r(7552),o=r(93878),a=r(70799),n=r(64761),s=r(51148),l=r(60129),c=r(4785),d=r(15622),m=r(58520),u=r(72489),h=r(69500);const p=n.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=n.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,y="string"!=typeof p?n.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?n.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,v=(0,s.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,d.A)(r.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:y||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,m.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),b=(0,s.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,s.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,d.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),A=i.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:i,color:n="primary",disableShrink:s=!1,size:l=40,style:m,thickness:p=3.6,value:f=0,variant:y="indeterminate",...g}=r,A={...r,color:n,disableShrink:s,size:l,thickness:p,value:f,variant:y},C=(e=>{const{classes:t,variant:r,color:i,disableShrink:o}=e,n={root:["root",r,`color${(0,d.A)(i)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(r)}`,o&&"circleDisableShrink"]};return(0,a.A)(n,u.b,t)})(A),E={},x={},S={};if("determinate"===y){const e=2*Math.PI*((44-p)/2);E.strokeDasharray=e.toFixed(3),S["aria-valuenow"]=Math.round(f),E.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,x.transform="rotate(-90deg)"}return(0,h.jsx)(v,{className:(0,o.A)(C.root,i),style:{width:l,height:l,...x,...m},ownerState:A,ref:t,role:"progressbar",...S,...g,children:(0,h.jsx)(b,{className:C.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,h.jsx)(k,{className:C.circle,style:E,ownerState:A,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>n,b:()=>a});var i=r(33761),o=r(85693);function a(e){return(0,o.Ay)("MuiCircularProgress",e)}const n=(0,i.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=1696.8a290cef.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1696.8a290cef.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1696.8a290cef.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/ModificationsTable.tsx","../../../plugins/alignments/src/LinearPileupDisplay/components/ColorByModificationsDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()(theme => ({\n  table: {\n    border: '1px solid #888',\n    margin: theme.spacing(4),\n    '& td': {\n      padding: theme.spacing(1),\n    },\n  },\n}))\n\nexport default function ModificationTable({\n  modifications,\n}: {\n  modifications: [string, string | undefined][]\n}) {\n  const { classes } = useStyles()\n  return (\n    <table className={classes.table}>\n      <tbody>\n        {modifications.map(([key, value]) => (\n          <tr key={key}>\n            <td>{key}</td>\n            <td>{value}</td>\n            <td\n              style={{\n                width: '1em',\n                background: value,\n              }}\n            />\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ObservableMap } from 'mobx'\nimport {\n  Button,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport ModificationTable from './ModificationsTable'\n\nconst ColorByModificationsDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    setColorScheme: (arg: { type: string }) => void\n    modificationTagMap: ObservableMap<string, string>\n    colorBy?: { type: string }\n  }\n  handleClose: () => void\n}) {\n  const { colorBy, modificationTagMap } = model\n\n  const modifications = [...modificationTagMap.entries()]\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Color by modifications\">\n      <DialogContent>\n        <Typography>\n          You can choose to color the modifications in the BAM/CRAM MM/ML\n          specification using this dialog. Choosing modifications colors the\n          modified positions and can color multiple modification types. Choosing\n          the methylation setting colors methylated and unmethylated CpG.\n        </Typography>\n        <Typography>\n          Note: you can revisit this dialog to see the current mapping of colors\n          to modification type for the modification coloring mode\n        </Typography>\n        <div style={{ margin: 20 }}>\n          {colorBy?.type === 'modifications' ? (\n            <div>\n              {modifications.length ? (\n                <>\n                  Current modification-type-to-color mapping\n                  <ModificationTable\n                    modifications={[...modificationTagMap.entries()]}\n                  />\n                </>\n              ) : (\n                <>\n                  <Typography>\n                    Note: color by modifications is already enabled. Loading\n                    current modifications...\n                  </Typography>\n                  <CircularProgress size={15} />\n                </>\n              )}\n            </div>\n          ) : null}\n          {colorBy?.type === 'methylation' ? (\n            <ModificationTable\n              modifications={[\n                ['methylated', 'red'],\n                ['unmethylated', 'blue'],\n              ]}\n            />\n          ) : null}\n        </div>\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            onClick={() => {\n              model.setColorScheme({ type: 'modifications' })\n              handleClose()\n            }}\n          >\n            Modifications\n          </Button>\n          <Button\n            variant=\"contained\"\n            onClick={() => {\n              model.setColorScheme({ type: 'methylation' })\n              handleClose()\n            }}\n          >\n            Methylation\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default ColorByModificationsDialog\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["useStyles","makeStyles","theme","table","border","margin","spacing","padding","ModificationTable","modifications","classes","React","className","map","key","value","style","width","background","observer","model","handleClose","colorBy","modificationTagMap","entries","Dialog","open","onClose","title","DialogContent","Typography","type","length","CircularProgress","size","DialogActions","Button","variant","onClick","setColorScheme","color","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","display","variants","transition","transitions","create","animation","Object","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1725.795fc4d3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1725],{1114:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Grade")},69833:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History")},922:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu")},30476:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreHoriz")},7215:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2M1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2"}),"ShoppingCart")},1185:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star")},84181:(e,t,r)=>{r.d(t,{A:()=>o});var i=r(74893),n=r(69500);const o=(0,i.A)((0,n.jsx)("path",{d:"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z"}),"StarBorderOutlined")},84885:(e,t,r)=>{r.d(t,{A:()=>v});var i=r(7552),n=r(93878),o=r(43583),a=r(70799),s=r(1045);var l=r(51148),c=r(60129),d=r(58520),u=r(4785),h=r(15622),p=r(47839),f=r(69500);const g=(0,l.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(e,t)=>t.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),m=(0,l.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.badge,t[r.variant],t[`anchorOrigin${(0,h.A)(r.anchorOrigin.vertical)}${(0,h.A)(r.anchorOrigin.horizontal)}${(0,h.A)(r.overlap)}`],"default"!==r.color&&t[`color${(0,h.A)(r.color)}`],r.invisible&&t.invisible]}})((0,c.A)((({theme:e})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:e.typography.fontFamily,fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.enteringScreen}),variants:[...Object.entries(e.palette).filter((0,d.A)(["contrastText"])).map((([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main,color:(e.vars||e).palette[t].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.leavingScreen})}}]})))),v=i.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiBadge"}),{anchorOrigin:i={vertical:"top",horizontal:"right"},className:l,classes:c,component:d,components:v={},componentsProps:_={},children:b,overlap:z="rectangular",color:S="default",invisible:y=!1,max:w=99,badgeContent:O,slots:x,slotProps:A,showZero:R=!1,variant:I="standard",...C}=r,{badgeContent:T,invisible:M,max:L,displayValue:W}=function(e){const{badgeContent:t,invisible:r=!1,max:i=99,showZero:n=!1}=e,a=(0,o.A)({badgeContent:t,max:i});let s=r;!1!==r||0!==t||n||(s=!0);const{badgeContent:l,max:c=i}=s?a:e;return{badgeContent:l,invisible:s,max:c,displayValue:l&&Number(l)>c?`${c}+`:l}}({max:w,invisible:y,badgeContent:O,showZero:R}),k=(0,o.A)({anchorOrigin:i,color:S,overlap:z,variant:I,badgeContent:O}),E=M||null==T&&"dot"!==I,{color:D=S,overlap:N=z,anchorOrigin:H=i,variant:F=I}=E?k:r,P="dot"!==F?W:void 0,$={...r,badgeContent:T,invisible:E,max:L,displayValue:P,showZero:R,anchorOrigin:H,color:D,overlap:N,variant:F},B=(e=>{const{color:t,anchorOrigin:r,invisible:i,overlap:n,variant:o,classes:s={}}=e,l={root:["root"],badge:["badge",o,i&&"invisible",`anchorOrigin${(0,h.A)(r.vertical)}${(0,h.A)(r.horizontal)}`,`anchorOrigin${(0,h.A)(r.vertical)}${(0,h.A)(r.horizontal)}${(0,h.A)(n)}`,`overlap${(0,h.A)(n)}`,"default"!==t&&`color${(0,h.A)(t)}`]};return(0,a.A)(l,p.w,s)})($),j=x?.root??v.Root??g,q=x?.badge??v.Badge??m,V=A?.root??_.root,U=A?.badge??_.badge,Z=(0,s.A)({elementType:j,externalSlotProps:V,externalForwardedProps:C,additionalProps:{ref:t,as:d},ownerState:$,className:(0,n.A)(V?.className,B.root,l)}),K=(0,s.A)({elementType:q,externalSlotProps:U,ownerState:$,className:(0,n.A)(B.badge,U?.className)});return(0,f.jsxs)(j,{...Z,children:[b,(0,f.jsx)(q,{...K,children:P})]})}))},47839:(e,t,r)=>{r.d(t,{A:()=>a,w:()=>o});var i=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiBadge",e)}const a=(0,i.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},62859:(e,t,r)=>{r.d(t,{A:()=>m});var i=r(7552),n=r(93878),o=r(70799),a=r(48054),s=r(15622),l=r(1791),c=r(55270),d=r(51148),u=r(60129),h=r(58520),p=r(4785),f=r(69500);const g=(0,d.Ay)(a.A,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,c.A)(e)||"classes"===e,overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`size${(0,s.A)(r.size)}`],"inherit"===r.color&&t.colorInherit,t[(0,s.A)(r.size)],t[r.color]]}})((0,u.A)((({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${l.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}))),(0,u.A)((({theme:e})=>({variants:[...Object.entries(e.palette).filter((0,h.A)(["dark","contrastText"])).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}})))]}))),(0,u.A)((({theme:e})=>({[`&.${l.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})))),m=i.forwardRef((function(e,t){const r=(0,p.b)({props:e,name:"MuiFab"}),{children:i,className:a,color:c="default",component:d="button",disabled:u=!1,disableFocusRipple:h=!1,focusVisibleClassName:m,size:v="large",variant:_="circular",...b}=r,z={...r,color:c,component:d,disabled:u,disableFocusRipple:h,size:v,variant:_},S=(e=>{const{color:t,variant:r,classes:i,size:n}=e,a={root:["root",r,`size${(0,s.A)(n)}`,"inherit"===t?"colorInherit":t]},c=(0,o.A)(a,l.C,i);return{...i,...c}})(z);return(0,f.jsx)(g,{className:(0,n.A)(S.root,a),component:d,disabled:u,focusRipple:!h,focusVisibleClassName:(0,n.A)(S.focusVisible,m),ownerState:z,ref:t,...b,classes:S,children:i})}))},1791:(e,t,r)=>{r.d(t,{A:()=>a,C:()=>o});var i=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiFab",e)}const a=(0,i.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"])},28685:(e,t,r)=>{r.d(t,{Ay:()=>u});var i=r(7552);let n;n="undefined"!=typeof window?window:"undefined"!=typeof self?self:r.g;let o=null,a=null;const s=n.clearTimeout,l=n.setTimeout,c=n.cancelAnimationFrame||n.mozCancelAnimationFrame||n.webkitCancelAnimationFrame,d=n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame;null==c||null==d?(o=s,a=function(e){return l(e,20)}):(o=function([e,t]){c(e),s(t)},a=function(e){const t=d((function(){s(r),e()})),r=l((function(){c(t),e()}),20);return[t,r]});class u extends i.Component{constructor(...e){super(...e),this.state={height:this.props.defaultHeight||0,scaledHeight:this.props.defaultHeight||0,scaledWidth:this.props.defaultWidth||0,width:this.props.defaultWidth||0},this._autoSizer=null,this._detectElementResize=null,this._parentNode=null,this._resizeObserver=null,this._timeoutId=null,this._onResize=()=>{this._timeoutId=null;const{disableHeight:e,disableWidth:t,onResize:r}=this.props;if(this._parentNode){const i=window.getComputedStyle(this._parentNode)||{},n=parseFloat(i.paddingLeft||"0"),o=parseFloat(i.paddingRight||"0"),a=parseFloat(i.paddingTop||"0"),s=parseFloat(i.paddingBottom||"0"),l=this._parentNode.getBoundingClientRect(),c=l.height-a-s,d=l.width-n-o,u=this._parentNode.offsetHeight-a-s,h=this._parentNode.offsetWidth-n-o;(e||this.state.height===u&&this.state.scaledHeight===c)&&(t||this.state.width===h&&this.state.scaledWidth===d)||(this.setState({height:u,width:h,scaledHeight:c,scaledWidth:d}),"function"==typeof r&&r({height:u,scaledHeight:c,scaledWidth:d,width:h}))}},this._setRef=e=>{this._autoSizer=e}}componentDidMount(){const{nonce:e}=this.props,t=this._autoSizer?this._autoSizer.parentNode:null;if(null!=t&&t.ownerDocument&&t.ownerDocument.defaultView&&t instanceof t.ownerDocument.defaultView.HTMLElement){this._parentNode=t;const r=t.ownerDocument.defaultView.ResizeObserver;null!=r?(this._resizeObserver=new r((()=>{this._timeoutId=setTimeout(this._onResize,0)})),this._resizeObserver.observe(t)):(this._detectElementResize=function(e){let t,r,i,s,l,c,d;const u="undefined"!=typeof document&&document.attachEvent;if(!u){c=function(e){const t=e.__resizeTriggers__,r=t.firstElementChild,i=t.lastElementChild,n=r.firstElementChild;i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight,n.style.width=r.offsetWidth+1+"px",n.style.height=r.offsetHeight+1+"px",r.scrollLeft=r.scrollWidth,r.scrollTop=r.scrollHeight},l=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},d=function(e){if(e.target.className&&"function"==typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)return;const t=this;c(this),this.__resizeRAF__&&o(this.__resizeRAF__),this.__resizeRAF__=a((function(){l(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(r){r.call(t,e)})))}))};let e=!1,n="";i="animationstart";const u="Webkit Moz O ms".split(" ");let h="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),p="";{const t=document.createElement("fakeelement");if(void 0!==t.style.animationName&&(e=!0),!1===e)for(let r=0;r<u.length;r++)if(void 0!==t.style[u[r]+"AnimationName"]){p=u[r],n="-"+p.toLowerCase()+"-",i=h[r],e=!0;break}}r="resizeanim",t="@"+n+"keyframes "+r+" { from { opacity: 0; } to { opacity: 0; } } ",s=n+"animation: 1ms "+r+"; "}return{addResizeListener:function(o,a){if(u)o.attachEvent("onresize",a);else{if(!o.__resizeTriggers__){const a=o.ownerDocument,l=n.getComputedStyle(o);l&&"static"===l.position&&(o.style.position="relative"),function(r){if(!r.getElementById("detectElementResize")){const i=(t||"")+".resize-triggers { "+(s||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',n=r.head||r.getElementsByTagName("head")[0],o=r.createElement("style");o.id="detectElementResize",o.type="text/css",null!=e&&o.setAttribute("nonce",e),o.styleSheet?o.styleSheet.cssText=i:o.appendChild(r.createTextNode(i)),n.appendChild(o)}}(a),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=a.createElement("div")).className="resize-triggers";const u=a.createElement("div");u.className="expand-trigger",u.appendChild(a.createElement("div"));const h=a.createElement("div");h.className="contract-trigger",o.__resizeTriggers__.appendChild(u),o.__resizeTriggers__.appendChild(h),o.appendChild(o.__resizeTriggers__),c(o),o.addEventListener("scroll",d,!0),i&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===r&&c(o)},o.__resizeTriggers__.addEventListener(i,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(a)}},removeResizeListener:function(e,t){if(u)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",d,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(i,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(e){}}}}}(e),this._detectElementResize.addResizeListener(t,this._onResize)),this._onResize()}}componentWillUnmount(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),null!==this._timeoutId&&clearTimeout(this._timeoutId),this._resizeObserver&&this._resizeObserver.disconnect())}render(){const{children:e,defaultHeight:t,defaultWidth:r,disableHeight:n=!1,disableWidth:o=!1,doNotBailOutOnEmptyChildren:a=!1,nonce:s,onResize:l,style:c={},tagName:d="div",...u}=this.props,{height:h,scaledHeight:p,scaledWidth:f,width:g}=this.state,m={overflow:"visible"},v={};let _=!1;return n||(0===h&&(_=!0),m.height=0,v.height=h,v.scaledHeight=p),o||(0===g&&(_=!0),m.width=0,v.width=g,v.scaledWidth=f),a&&(_=!1),(0,i.createElement)(d,{ref:this._setRef,style:{...m,...c},...u},!_&&e(v))}}},32296:(e,t,r)=>{r.d(t,{SS:()=>M});var i=r(7552),n=r(6614),o=r(60191),a=r(80467);var s=function(){},l=function(e,t){return void 0===t&&(t=null),{child:null,isShown:!t||t.public.isOpen&&t.isShown,parent:t,public:e,sibling:null,visited:!1}},c=function(e,t){return(0,t.getRecordData)(e).data.id},d=function(e){return function(t,r,i){return i.refresh?function(e,t,r){var i=e.createRecord,n=t.buildingTaskTimeout,o=t.placeholder,a=t.async,s=void 0!==a&&a,l=t.treeWalker,c=s&&void 0!==r.records,d=r.records,u=[],h=new Map,p=n?{timeout:n}:void 0,f=new WeakMap,g=l(),m=g.next().value,v=i(m.data,r,void 0,c?d.get(m.data.id):void 0);h.set(v.public.data.id,v),f.set(v,m);var _=v,b=!0,z=v,S=void 0!==o&&!(null===o&&!r.order),y=S?function(e){return e.timeRemaining()>0}:function(){return!0},w=function e(t){for(;null!==_;){if(!y(t))return void requestIdleCallback(e,p);if(_.visited)_.visited=!1,_=null!==_.sibling?_.sibling:_.parent,z=_;else{var n=g.next(f.get(_)).value;if(void 0===n){b?b=!1:(_.isShown&&u.push(_.public.data.id),_.visited=null!==_.child,_=null!==_.child?_.child:null!==_.sibling?_.sibling:_.parent),z=_;continue}var o=i(n.data,r,b?void 0:_,c?d.get(n.data.id):void 0);h.set(o.public.data.id,o),f.set(o,n),b||z!==_?z.sibling=o:z.child=o,z=o}}S&&r.setState({order:u,records:h,updateRequest:{}})};return S?requestIdleCallback(w,p):w(),void 0!==o&&s&&r.order?r:{order:u,records:h}}(e,t,r):function(e,t){var r=e.order,i=e.records,n=t.opennessState;if("object"!=typeof n)return null;for(var o in n)if(i.has(o)){var a=n[o],l=i.get(o),c="boolean"==typeof a?{open:a}:a,d=c.open,u=c.subtreeCallback,h=void 0===u?s:u,p=s,f=s;l.isShown&&(d?function(){for(var e=r.indexOf(o),t=l;null!==t;){if(null!==t.sibling){t=t.sibling;break}t=t.parent}var i=null===t?r.length-1-e:r.indexOf(t.public.data.id)-1-e,n=[[e+1,i]];p=function(t){if(t.isShown=!t.parent||t.parent.public.isOpen&&t.parent.isShown,t.isShown){var r=n[n.length-1];r.push(t.public.data.id),32770===r.length&&n.push([e+1+32768*n.length,0])}},f=function(){for(var e=0;e<n.length;e++){var t;(t=r).splice.apply(t,n[e])}}}():l.public.isOpen&&function(){var e=r.indexOf(o),t=0;p=function(e){e.isShown&&(t+=1),e.isShown=!e.parent||e.parent.public.isOpen&&e.parent.isShown},f=function(){r.splice(e+1,t)}}());for(var g=l;null!==g;)g.visited?(g.visited=!1,g=g===l?null:null!==g.sibling?g.sibling:g.parent):(g.public.isOpen=g===l?d:g.public.isOpen,h(g.public,l.public),g!==l&&p(g),g.visited=null!==g.child,g=null!==g.child?g.child:g===l?null:null!==g.sibling?g.sibling:g.parent);f()}return{order:r,records:i,updateRequest:{}}}(r,i)}},u=function(e){function t(t,r){var n;return(n=e.call(this,t,r)||this).getRecordData=n.getRecordData.bind((0,o.A)(n)),n.state={list:(0,i.createRef)(),recomputeTree:n.recomputeTree.bind((0,o.A)(n)),setState:n.setState.bind((0,o.A)(n))},n}(0,a.A)(t,e),t.getDerivedStateFromProps=function(e,t){var r,i=e.listRef,o=void 0===i?null:i,a=e.treeWalker,s=t.computeTree,l=t.list,c=t.order,d=t.treeWalker;return(0,n.A)({attachRefs:(r=[l,o],function(e){r.forEach((function(t){"function"==typeof t?t(e):null!=t&&(t.current=e)}))})},a===d&&c?null:s(e,t,{refresh:!0}),{treeWalker:a})};var r=t.prototype;return r.getItemData=function(){var e=this.props,t=e.children,r=e.itemData;return{component:t,getRecordData:this.getRecordData,treeData:r}},r.getRecordData=function(e){var t=this.state,r=t.order;return t.records.get(r[e]).public},r.recomputeTree=function(e){var t=this;return new Promise((function(r){t.setState((function(r){return r.computeTree(t.props,r,{opennessState:e})}),r)}))},r.scrollTo=function(e){var t;null==(t=this.state.list.current)||t.scrollTo(e)},r.scrollToItem=function(e,t){var r;null==(r=this.state.list.current)||r.scrollToItem(this.state.order.indexOf(e),t)},t}(i.PureComponent);u.defaultProps={rowComponent:function(e){var t=e.index,r=e.data,n=r.component,o=r.getRecordData,a=r.treeData,s=e.style,l=e.isScrolling,c=o(t);return i.createElement(n,Object.assign({isScrolling:l,style:s,treeData:a},c))}};const h=u;d({createRecord:function(e,t,r,i){var n=t.recomputeTree;return l({data:e,isOpen:i?i.public.isOpen:e.isOpenByDefault,setOpen:function(t){var r;return n(((r={})[e.id]=t,r))}},r)}});var p=r(83673),f=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function g(e,t){if(e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(!((i=e[r])===(n=t[r])||f(i)&&f(n)))return!1;var i,n;return!0}const m=function(e,t){var r;void 0===t&&(t=g);var i,n=[],o=!1;return function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return o&&r===this&&t(a,n)||(i=e.apply(this,a),o=!0,r=this,n=a),i}};var v="object"==typeof performance&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()};function _(e){cancelAnimationFrame(e.id)}var b=-1;function z(e){if(void 0===e&&(e=!1),-1===b||e){var t=document.createElement("div"),r=t.style;r.width="50px",r.height="50px",r.overflow="scroll",document.body.appendChild(t),b=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return b}var S=null;function y(e){if(void 0===e&&(e=!1),null===S||e){var t=document.createElement("div"),r=t.style;r.width="50px",r.height="50px",r.overflow="scroll",r.direction="rtl";var i=document.createElement("div"),n=i.style;return n.width="100px",n.height="100px",t.appendChild(i),document.body.appendChild(t),t.scrollLeft>0?S="positive-descending":(t.scrollLeft=1,S=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),S}return S}var w=function(e,t){return e};function O(e){var t,r=e.getItemOffset,s=e.getEstimatedTotalSize,l=e.getItemSize,c=e.getOffsetForIndexAndAlignment,d=e.getStartIndexForOffset,u=e.getStopIndexForStartIndex,h=e.initInstanceProps,p=e.shouldResetStyleCacheOnItemSizeChange,f=e.validateProps;return t=function(e){function t(t){var i;return(i=e.call(this,t)||this)._instanceProps=h(i.props,(0,o.A)(i)),i._outerRef=void 0,i._resetIsScrollingTimeoutId=null,i.state={instance:(0,o.A)(i),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"==typeof i.props.initialScrollOffset?i.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},i._callOnItemsRendered=void 0,i._callOnItemsRendered=m((function(e,t,r,n){return i.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:r,visibleStopIndex:n})})),i._callOnScroll=void 0,i._callOnScroll=m((function(e,t,r){return i.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:r})})),i._getItemStyle=void 0,i._getItemStyle=function(e){var t,n=i.props,o=n.direction,a=n.itemSize,s=n.layout,c=i._getItemStyleCache(p&&a,p&&s,p&&o);if(c.hasOwnProperty(e))t=c[e];else{var d=r(i.props,e,i._instanceProps),u=l(i.props,e,i._instanceProps),h="horizontal"===o||"horizontal"===s,f="rtl"===o,g=h?d:0;c[e]=t={position:"absolute",left:f?void 0:g,right:f?g:void 0,top:h?0:d,height:h?"100%":u,width:h?u:"100%"}}return t},i._getItemStyleCache=void 0,i._getItemStyleCache=m((function(e,t,r){return{}})),i._onScrollHorizontal=function(e){var t=e.currentTarget,r=t.clientWidth,n=t.scrollLeft,o=t.scrollWidth;i.setState((function(e){if(e.scrollOffset===n)return null;var t=i.props.direction,a=n;if("rtl"===t)switch(y()){case"negative":a=-n;break;case"positive-descending":a=o-r-n}return a=Math.max(0,Math.min(a,o-r)),{isScrolling:!0,scrollDirection:e.scrollOffset<a?"forward":"backward",scrollOffset:a,scrollUpdateWasRequested:!1}}),i._resetIsScrollingDebounced)},i._onScrollVertical=function(e){var t=e.currentTarget,r=t.clientHeight,n=t.scrollHeight,o=t.scrollTop;i.setState((function(e){if(e.scrollOffset===o)return null;var t=Math.max(0,Math.min(o,n-r));return{isScrolling:!0,scrollDirection:e.scrollOffset<t?"forward":"backward",scrollOffset:t,scrollUpdateWasRequested:!1}}),i._resetIsScrollingDebounced)},i._outerRefSetter=function(e){var t=i.props.outerRef;i._outerRef=e,"function"==typeof t?t(e):null!=t&&"object"==typeof t&&t.hasOwnProperty("current")&&(t.current=e)},i._resetIsScrollingDebounced=function(){var e,t,r,n;null!==i._resetIsScrollingTimeoutId&&_(i._resetIsScrollingTimeoutId),i._resetIsScrollingTimeoutId=(e=i._resetIsScrolling,t=150,r=v(),n={id:requestAnimationFrame((function i(){v()-r>=t?e.call(null):n.id=requestAnimationFrame(i)}))})},i._resetIsScrolling=function(){i._resetIsScrollingTimeoutId=null,i.setState({isScrolling:!1},(function(){i._getItemStyleCache(-1,null)}))},i}(0,a.A)(t,e),t.getDerivedStateFromProps=function(e,t){return x(e,t),f(e),null};var g=t.prototype;return g.scrollTo=function(e){e=Math.max(0,e),this.setState((function(t){return t.scrollOffset===e?null:{scrollDirection:t.scrollOffset<e?"forward":"backward",scrollOffset:e,scrollUpdateWasRequested:!0}}),this._resetIsScrollingDebounced)},g.scrollToItem=function(e,t){void 0===t&&(t="auto");var r=this.props,i=r.itemCount,n=r.layout,o=this.state.scrollOffset;e=Math.max(0,Math.min(e,i-1));var a=0;if(this._outerRef){var s=this._outerRef;a="vertical"===n?s.scrollWidth>s.clientWidth?z():0:s.scrollHeight>s.clientHeight?z():0}this.scrollTo(c(this.props,e,t,o,this._instanceProps,a))},g.componentDidMount=function(){var e=this.props,t=e.direction,r=e.initialScrollOffset,i=e.layout;if("number"==typeof r&&null!=this._outerRef){var n=this._outerRef;"horizontal"===t||"horizontal"===i?n.scrollLeft=r:n.scrollTop=r}this._callPropsCallbacks()},g.componentDidUpdate=function(){var e=this.props,t=e.direction,r=e.layout,i=this.state,n=i.scrollOffset;if(i.scrollUpdateWasRequested&&null!=this._outerRef){var o=this._outerRef;if("horizontal"===t||"horizontal"===r)if("rtl"===t)switch(y()){case"negative":o.scrollLeft=-n;break;case"positive-ascending":o.scrollLeft=n;break;default:var a=o.clientWidth,s=o.scrollWidth;o.scrollLeft=s-a-n}else o.scrollLeft=n;else o.scrollTop=n}this._callPropsCallbacks()},g.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&_(this._resetIsScrollingTimeoutId)},g.render=function(){var e=this.props,t=e.children,r=e.className,o=e.direction,a=e.height,l=e.innerRef,c=e.innerElementType,d=e.innerTagName,u=e.itemCount,h=e.itemData,p=e.itemKey,f=void 0===p?w:p,g=e.layout,m=e.outerElementType,v=e.outerTagName,_=e.style,b=e.useIsScrolling,z=e.width,S=this.state.isScrolling,y="horizontal"===o||"horizontal"===g,O=y?this._onScrollHorizontal:this._onScrollVertical,x=this._getRangeToRender(),A=x[0],R=x[1],I=[];if(u>0)for(var C=A;C<=R;C++)I.push((0,i.createElement)(t,{data:h,key:f(C,h),index:C,isScrolling:b?S:void 0,style:this._getItemStyle(C)}));var T=s(this.props,this._instanceProps);return(0,i.createElement)(m||v||"div",{className:r,onScroll:O,ref:this._outerRefSetter,style:(0,n.A)({position:"relative",height:a,width:z,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},_)},(0,i.createElement)(c||d||"div",{children:I,ref:l,style:{height:y?"100%":T,pointerEvents:S?"none":void 0,width:y?T:"100%"}}))},g._callPropsCallbacks=function(){if("function"==typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],r=e[1],i=e[2],n=e[3];this._callOnItemsRendered(t,r,i,n)}if("function"==typeof this.props.onScroll){var o=this.state,a=o.scrollDirection,s=o.scrollOffset,l=o.scrollUpdateWasRequested;this._callOnScroll(a,s,l)}},g._getRangeToRender=function(){var e=this.props,t=e.itemCount,r=e.overscanCount,i=this.state,n=i.isScrolling,o=i.scrollDirection,a=i.scrollOffset;if(0===t)return[0,0,0,0];var s=d(this.props,a,this._instanceProps),l=u(this.props,s,a,this._instanceProps),c=n&&"backward"!==o?1:Math.max(1,r),h=n&&"forward"!==o?1:Math.max(1,r);return[Math.max(0,s-c),Math.max(0,Math.min(t-1,l+h)),s,l]},t}(i.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var x=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},A=function(e,t,r){var i=e.itemSize,n=r.itemMetadataMap,o=r.lastMeasuredIndex;if(t>o){var a=0;if(o>=0){var s=n[o];a=s.offset+s.size}for(var l=o+1;l<=t;l++){var c=i(l);n[l]={offset:a,size:c},a+=c}r.lastMeasuredIndex=t}return n[t]},R=function(e,t,r,i,n){for(;i<=r;){var o=i+Math.floor((r-i)/2),a=A(e,o,t).offset;if(a===n)return o;a<n?i=o+1:a>n&&(r=o-1)}return i>0?i-1:0},I=function(e,t){var r=e.itemCount,i=t.itemMetadataMap,n=t.estimatedItemSize,o=t.lastMeasuredIndex,a=0;if(o>=r&&(o=r-1),o>=0){var s=i[o];a=s.offset+s.size}return a+(r-o-1)*n},C=O({getItemOffset:function(e,t,r){return A(e,t,r).offset},getItemSize:function(e,t,r){return r.itemMetadataMap[t].size},getEstimatedTotalSize:I,getOffsetForIndexAndAlignment:function(e,t,r,i,n,o){var a=e.direction,s=e.height,l=e.layout,c=e.width,d="horizontal"===a||"horizontal"===l?c:s,u=A(e,t,n),h=I(e,n),p=Math.max(0,Math.min(h-d,u.offset)),f=Math.max(0,u.offset-d+u.size+o);switch("smart"===r&&(r=i>=f-d&&i<=p+d?"auto":"center"),r){case"start":return p;case"end":return f;case"center":return Math.round(f+(p-f)/2);default:return i>=f&&i<=p?i:i<f?f:p}},getStartIndexForOffset:function(e,t,r){return function(e,t,r){var i=t.itemMetadataMap,n=t.lastMeasuredIndex;return(n>0?i[n].offset:0)>=r?R(e,t,n,0,r):function(e,t,r,i){for(var n=e.itemCount,o=1;r<n&&A(e,r,t).offset<i;)r+=o,o*=2;return R(e,t,Math.min(r,n-1),Math.floor(r/2),i)}(e,t,Math.max(0,n),r)}(e,r,t)},getStopIndexForStartIndex:function(e,t,r,i){for(var n=e.direction,o=e.height,a=e.itemCount,s=e.layout,l=e.width,c="horizontal"===n||"horizontal"===s?l:o,d=A(e,t,i),u=r+c,h=d.offset+d.size,p=t;p<a-1&&h<u;)p++,h+=A(e,p,i).size;return p},initInstanceProps:function(e,t){var r={itemMetadataMap:{},estimatedItemSize:e.estimatedItemSize||50,lastMeasuredIndex:-1};return t.resetAfterIndex=function(e,i){void 0===i&&(i=!0),r.lastMeasuredIndex=Math.min(r.lastMeasuredIndex,e-1),t._getItemStyleCache(-1),i&&t.forceUpdate()},r},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(e){e.itemSize}}),T=d({createRecord:function(e,t,r,i){var n=t.recomputeTree,o=t.resetAfterId,a=l({data:e,height:i?i.public.height:e.defaultHeight,isOpen:i?i.public.isOpen:e.isOpenByDefault,resize:function(e,t){a.public.height=e,o(a.public.data.id,t)},setOpen:function(t){var r;return n(((r={})[e.id]=t,r))}},r);return a}}),M=function(e){function t(t,r){var i;return(i=e.call(this,t,r)||this).getItemSize=i.getItemSize.bind((0,o.A)(i)),i.state=(0,n.A)({},i.state,{computeTree:T,resetAfterId:i.resetAfterId.bind((0,o.A)(i))}),i}(0,a.A)(t,e);var r=t.prototype;return r.resetAfterId=function(e,t){var r;void 0===t&&(t=!1);var i=this.state,n=i.list,o=i.order;null==(r=n.current)||r.resetAfterIndex(o.indexOf(e),t)},r.recomputeTree=function(t){var r=this;return e.prototype.recomputeTree.call(this,t).then((function(){var e;null==(e=r.state.list.current)||e.resetAfterIndex(0,!0)}))},r.render=function(){var e=this.props,t=(e.children,e.placeholder),r=e.itemSize,n=e.rowComponent,o=(e.treeWalker,(0,p.A)(e,["children","placeholder","itemSize","rowComponent","treeWalker"])),a=this.state,s=a.attachRefs,l=a.order;return t&&0===l.length?t:i.createElement(C,Object.assign({},o,{itemCount:l.length,itemData:this.getItemData(),itemKey:c,itemSize:null!=r?r:this.getItemSize,ref:s}),n)},r.getItemSize=function(e){return this.getRecordData(e).height},t}(h)}}]);
+//# sourceMappingURL=1725.795fc4d3.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1725.795fc4d3.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1725.795fc4d3.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/Grade.js","../../../node_modules/@mui/icons-material/esm/History.js","../../../node_modules/@mui/icons-material/esm/Menu.js","../../../node_modules/@mui/icons-material/esm/MoreHoriz.js","../../../node_modules/@mui/icons-material/esm/ShoppingCart.js","../../../node_modules/@mui/icons-material/esm/Star.js","../../../node_modules/@mui/icons-material/esm/StarBorderOutlined.js","../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/Fab/Fab.js","../../../node_modules/@mui/material/Fab/fabClasses.js","../../../node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","../../../node_modules/react-vtree/dist/es/utils.js","../../../node_modules/react-vtree/dist/es/Tree.js","../../../node_modules/react-merge-refs/src/index.tsx","../../../node_modules/react-vtree/dist/es/FixedSizeTree.js","../../../node_modules/memoize-one/dist/memoize-one.esm.js","../../../node_modules/react-window/src/timer.js","../../../node_modules/react-window/src/domHelpers.js","../../../node_modules/react-window/src/createGridComponent.js","../../../node_modules/react-window/src/createListComponent.js","../../../node_modules/react-window/src/VariableSizeList.js","../../../node_modules/react-vtree/dist/es/VariableSizeTree.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n}), 'Grade');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z\"\n}), 'History');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"\n}), 'MoreHoriz');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2M1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2\"\n}), 'ShoppingCart');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n}), 'Star');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z\"\n}), 'StarBorderOutlined');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  minHeight: 36,\n  transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  borderRadius: '50%',\n  padding: 0,\n  minWidth: 0,\n  width: 56,\n  height: 56,\n  zIndex: (theme.vars || theme).zIndex.fab,\n  boxShadow: (theme.vars || theme).shadows[6],\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[12]\n  },\n  color: theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText?.(theme.palette.grey[300]),\n  backgroundColor: (theme.vars || theme).palette.grey[300],\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.grey.A100,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette.grey[300]\n    },\n    textDecoration: 'none'\n  },\n  [`&.${fabClasses.focusVisible}`]: {\n    boxShadow: (theme.vars || theme).shadows[6]\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      size: 'medium'\n    },\n    style: {\n      width: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended'\n    },\n    style: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'small'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 8px',\n      borderRadius: 34 / 2,\n      minWidth: 34,\n      height: 34\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'medium'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 16px',\n      borderRadius: 40 / 2,\n      minWidth: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].contrastText,\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      '&:hover': {\n        backgroundColor: (theme.vars || theme).palette[color].dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }\n  }))]\n})), memoTheme(({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n})));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n    children,\n    className,\n    color = 'default',\n    component = 'button',\n    disabled = false,\n    disableFocusRipple = false,\n    focusVisibleClassName,\n    size = 'large',\n    variant = 'circular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, {\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    classes: classes,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n  windowObject = window;\n\n  // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n  // eslint-disable-next-line no-restricted-globals\n  windowObject = self;\n} else {\n  windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n  // For environments that don't support animation frame,\n  // fallback to a setTimeout based approach.\n  cancelFrame = clearTimeoutFn;\n  requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n    return setTimeoutFn(callback, TIMEOUT_DURATION);\n  };\n} else {\n  // Counter intuitively, environments that support animation frames can be trickier.\n  // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n  // In this case, we should fallback to a setTimeout() implementation.\n  cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n    cancelAnimationFrameFn(animationFrameID);\n    clearTimeoutFn(timeoutID);\n  };\n  requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n    const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n      clearTimeoutFn(timeoutID);\n      callback();\n    });\n    const timeoutID = setTimeoutFn(function timeoutCallback() {\n      cancelAnimationFrameFn(animationFrameID);\n      callback();\n    }, TIMEOUT_DURATION);\n    return [animationFrameID, timeoutID];\n  };\n}\nfunction createDetectElementResize(nonce) {\n  let animationKeyframes;\n  let animationName;\n  let animationStartEvent;\n  let animationStyle;\n  let checkTriggers;\n  let resetTriggers;\n  let scrollListener;\n  const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n  if (!attachEvent) {\n    resetTriggers = function (element) {\n      const triggers = element.__resizeTriggers__,\n        expand = triggers.firstElementChild,\n        contract = triggers.lastElementChild,\n        expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n      expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n    checkTriggers = function (element) {\n      return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n    };\n    scrollListener = function (e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n        return;\n      }\n      const element = this;\n      resetTriggers(this);\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n      this.__resizeRAF__ = requestFrame(function animationFrame() {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n          element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n\n    /* Detect CSS Animations support to detect element display/re-attach */\n    let animation = false;\n    let keyframeprefix = \"\";\n    animationStartEvent = \"animationstart\";\n    const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n    let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n    let pfx = \"\";\n    {\n      const elm = document.createElement(\"fakeelement\");\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n      if (animation === false) {\n        for (let i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n            animationStartEvent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n    animationName = \"resizeanim\";\n    animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n    animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n  }\n  const createStyles = function (doc) {\n    if (!doc.getElementById(\"detectElementResize\")) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n        head = doc.head || doc.getElementsByTagName(\"head\")[0],\n        style = doc.createElement(\"style\");\n      style.id = \"detectElementResize\";\n      style.type = \"text/css\";\n      if (nonce != null) {\n        style.setAttribute(\"nonce\", nonce);\n      }\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n      head.appendChild(style);\n    }\n  };\n  const addResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.attachEvent(\"onresize\", fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        const doc = element.ownerDocument;\n        const elementStyle = windowObject.getComputedStyle(element);\n        if (elementStyle && elementStyle.position === \"static\") {\n          element.style.position = \"relative\";\n        }\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n        const expandTrigger = doc.createElement(\"div\");\n        expandTrigger.className = \"expand-trigger\";\n        expandTrigger.appendChild(doc.createElement(\"div\"));\n        const contractTrigger = doc.createElement(\"div\");\n        contractTrigger.className = \"contract-trigger\";\n        element.__resizeTriggers__.appendChild(expandTrigger);\n        element.__resizeTriggers__.appendChild(contractTrigger);\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener(\"scroll\", scrollListener, true);\n\n        /* Listen for a css animation to detect element display/re-attach */\n        if (animationStartEvent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName === animationName) {\n              resetTriggers(element);\n            }\n          };\n          element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n      element.__resizeListeners__.push(fn);\n    }\n  };\n  const removeResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.detachEvent(\"onresize\", fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener(\"scroll\", scrollListener, true);\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {\n          // Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n  return {\n    addResizeListener,\n    removeResizeListener\n  };\n}\n\nclass AutoSizer extends Component {\n  constructor(...args) {\n    super(...args);\n    this.state = {\n      height: this.props.defaultHeight || 0,\n      scaledHeight: this.props.defaultHeight || 0,\n      scaledWidth: this.props.defaultWidth || 0,\n      width: this.props.defaultWidth || 0\n    };\n    this._autoSizer = null;\n    this._detectElementResize = null;\n    this._parentNode = null;\n    this._resizeObserver = null;\n    this._timeoutId = null;\n    this._onResize = () => {\n      this._timeoutId = null;\n      const {\n        disableHeight,\n        disableWidth,\n        onResize\n      } = this.props;\n      if (this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n\n        const style = window.getComputedStyle(this._parentNode) || {};\n        const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n        const paddingRight = parseFloat(style.paddingRight || \"0\");\n        const paddingTop = parseFloat(style.paddingTop || \"0\");\n        const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n        const rect = this._parentNode.getBoundingClientRect();\n        const scaledHeight = rect.height - paddingTop - paddingBottom;\n        const scaledWidth = rect.width - paddingLeft - paddingRight;\n        const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n        const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n        if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n          this.setState({\n            height,\n            width,\n            scaledHeight,\n            scaledWidth\n          });\n          if (typeof onResize === \"function\") {\n            onResize({\n              height,\n              scaledHeight,\n              scaledWidth,\n              width\n            });\n          }\n        }\n      }\n    };\n    this._setRef = autoSizer => {\n      this._autoSizer = autoSizer;\n    };\n  }\n  componentDidMount() {\n    const {\n      nonce\n    } = this.props;\n    const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n    if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n      // Delay access of parentNode until mount.\n      // This handles edge-cases where the component has already been unmounted before its ref has been set,\n      // As well as libraries like react-lite which have a slightly different lifecycle.\n      this._parentNode = parentNode;\n\n      // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n      // Using just global can result into onResize events not being emitted in cases with multiple realms\n      const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n      if (ResizeObserverInstance != null) {\n        this._resizeObserver = new ResizeObserverInstance(() => {\n          // Guard against \"ResizeObserver loop limit exceeded\" error;\n          // could be triggered if the state update causes the ResizeObserver handler to run long.\n          // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n          this._timeoutId = setTimeout(this._onResize, 0);\n        });\n        this._resizeObserver.observe(parentNode);\n      } else {\n        // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n        this._detectElementResize = createDetectElementResize(nonce);\n        this._detectElementResize.addResizeListener(parentNode, this._onResize);\n      }\n      this._onResize();\n    }\n  }\n  componentWillUnmount() {\n    if (this._parentNode) {\n      if (this._detectElementResize) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n      if (this._timeoutId !== null) {\n        clearTimeout(this._timeoutId);\n      }\n      if (this._resizeObserver) {\n        this._resizeObserver.disconnect();\n      }\n    }\n  }\n  render() {\n    const {\n      children,\n      defaultHeight,\n      defaultWidth,\n      disableHeight = false,\n      disableWidth = false,\n      doNotBailOutOnEmptyChildren = false,\n      nonce,\n      onResize,\n      style = {},\n      tagName = \"div\",\n      ...rest\n    } = this.props;\n    const {\n      height,\n      scaledHeight,\n      scaledWidth,\n      width\n    } = this.state;\n\n    // Outer div should not force width/height since that may prevent containers from shrinking.\n    // Inner component should overflow and use calculated width/height.\n    // See issue #68 for more information.\n    const outerStyle = {\n      overflow: \"visible\"\n    };\n    const childParams = {};\n\n    // Avoid rendering children before the initial measurements have been collected.\n    // At best this would just be wasting cycles.\n    let bailoutOnChildren = false;\n    if (!disableHeight) {\n      if (height === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.height = 0;\n      childParams.height = height;\n      childParams.scaledHeight = scaledHeight;\n    }\n    if (!disableWidth) {\n      if (width === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.width = 0;\n      childParams.width = width;\n      childParams.scaledWidth = scaledWidth;\n    }\n    if (doNotBailOutOnEmptyChildren) {\n      bailoutOnChildren = false;\n    }\n    return createElement(tagName, {\n      ref: this._setRef,\n      style: {\n        ...outerStyle,\n        ...style\n      },\n      ...rest\n    }, !bailoutOnChildren && children(childParams));\n  }\n}\n\nfunction isHeightAndWidthProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n  return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n","// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport var noop = function noop() {};\nexport var identity = function identity(value) {\n  return value;\n};\nexport var createBasicRecord = function createBasicRecord(pub, parent) {\n  if (parent === void 0) {\n    parent = null;\n  }\n\n  return {\n    child: null,\n    isShown: parent ? parent.public.isOpen && parent.isShown : true,\n    parent: parent,\n    public: pub,\n    sibling: null,\n    visited: false\n  };\n};\nexport var getIdByIndex = function getIdByIndex(index, _ref) {\n  var getRecordData = _ref.getRecordData;\n\n  var _getRecordData = getRecordData(index),\n      id = _getRecordData.data.id;\n\n  return id;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\n\n/* eslint-disable no-labels,max-depth,complexity */\nimport React, { createRef, PureComponent } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { noop } from './utils';\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/prefer-readonly-parameter-types\nexport var Row = function Row(_ref) {\n  var index = _ref.index,\n      _ref$data = _ref.data,\n      Node = _ref$data.component,\n      getRecordData = _ref$data.getRecordData,\n      treeData = _ref$data.treeData,\n      style = _ref.style,\n      isScrolling = _ref.isScrolling;\n  var data = getRecordData(index);\n  return /*#__PURE__*/React.createElement(Node, Object.assign({\n    isScrolling: isScrolling,\n    style: style,\n    treeData: treeData\n  }, data));\n};\n\n// If refresh is required, we will run the TreeWalker. It will completely\n// update all requests and reset every state to default.\nvar generateNewTree = function generateNewTree(_ref2, _ref3, state) {\n  var createRecord = _ref2.createRecord;\n  var buildingTaskTimeout = _ref3.buildingTaskTimeout,\n      placeholder = _ref3.placeholder,\n      _ref3$async = _ref3.async,\n      async = _ref3$async === void 0 ? false : _ref3$async,\n      treeWalker = _ref3.treeWalker;\n  var shouldPreservePreviousState = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  async && state.records !== undefined;\n  var previousRecords = state.records;\n  var order = [];\n  var records = new Map();\n  var requestIdleCallbackOptions = buildingTaskTimeout ? {\n    timeout: buildingTaskTimeout\n  } : undefined;\n  var meta = new WeakMap();\n  var iter = treeWalker();\n\n  var _iter$next = iter.next(),\n      root = _iter$next.value; // Each record has a link to a parent, the next sibling and the next child.\n  // Having this info, we can perform a depth-first traverse.\n\n\n  var rootRecord = createRecord(root.data, state, undefined, shouldPreservePreviousState ? previousRecords.get(root.data.id) : undefined);\n  records.set(rootRecord.public.data.id, rootRecord);\n  meta.set(rootRecord, root);\n  var currentRecord = rootRecord;\n  var isTraversingRoot = true;\n  var tempRecord = rootRecord;\n  var useIdleCallback = typeof 'requestIdleCallback' !== 'undefined' && placeholder !== undefined && // If placeholder is set to null and this is the first build, idle callback\n  // won't be used. It is necessary for trees with async data which can be\n  // extremely complex but the first build is quite easy. During the following\n  // idle callbacks the old tree will be shown.\n  !(placeholder === null && !state.order);\n  var hasTime = useIdleCallback ? function (deadline) {\n    return deadline.timeRemaining() > 0;\n  } : function () {\n    return true;\n  };\n\n  var task = function task(deadline) {\n    while (currentRecord !== null) {\n      if (!hasTime(deadline)) {\n        requestIdleCallback(task, requestIdleCallbackOptions);\n        return;\n      }\n\n      if (!currentRecord.visited) {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        var _iter$next2 = iter.next(meta.get(currentRecord)),\n            child = _iter$next2.value; // When the generator returns the undefined value we consider that all\n        // children are already sent and we need to select the new parent\n        // element to get its children.\n\n\n        if (child === undefined) {\n          if (isTraversingRoot) {\n            isTraversingRoot = false;\n          } else {\n            if (currentRecord.isShown) {\n              order.push(currentRecord.public.data.id);\n            }\n\n            currentRecord.visited = currentRecord.child !== null;\n            currentRecord = currentRecord.child !== null ? currentRecord.child : currentRecord.sibling !== null ? currentRecord.sibling : currentRecord.parent;\n          }\n\n          tempRecord = currentRecord;\n          continue;\n        }\n\n        var childRecord = createRecord(child.data, state, isTraversingRoot ? undefined : currentRecord, shouldPreservePreviousState ? previousRecords.get(child.data.id) : undefined);\n        records.set(childRecord.public.data.id, childRecord);\n        meta.set(childRecord, child);\n\n        if (!isTraversingRoot && tempRecord === currentRecord) {\n          tempRecord.child = childRecord;\n        } else {\n          tempRecord.sibling = childRecord;\n        }\n\n        tempRecord = childRecord;\n      } else {\n        currentRecord.visited = false;\n        currentRecord = currentRecord.sibling !== null ? currentRecord.sibling : currentRecord.parent;\n        tempRecord = currentRecord;\n      }\n    }\n\n    if (useIdleCallback) {\n      state.setState({\n        order: order,\n        records: records,\n        updateRequest: {}\n      });\n    }\n  };\n\n  if (useIdleCallback) {\n    requestIdleCallback(task, requestIdleCallbackOptions);\n  } else {\n    task();\n  } // If we want to preserve the previous state and use the requestIdleCallback,\n  // we need to return the old state.\n\n\n  return placeholder !== undefined && async && state.order ? state : {\n    order: order,\n    records: records\n  };\n};\n\nvar MAX_FUNCTION_ARGUMENTS = 32768;\nvar SPLICE_DEFAULT_ARGUMENTS_NUMBER = 2; // If we need to perform only the update, treeWalker won't be used. Update will\n// work internally, traversing only the subtree of elements that require\n// update through the opennessState option.\n\nvar updateExistingTree = function updateExistingTree(_ref4, _ref5) {\n  var order = _ref4.order,\n      records = _ref4.records;\n  var opennessState = _ref5.opennessState;\n\n  if (typeof opennessState !== 'object') {\n    return null;\n  }\n\n  for (var id in opennessState) {\n    if (!records.has(id)) {\n      continue;\n    }\n\n    var opts = opennessState[id];\n    var ownerRecord = records.get(id); // Here we unify the shape of openness state options\n\n    var _ref6 = typeof opts === 'boolean' ? {\n      open: opts\n    } : opts,\n        open = _ref6.open,\n        _ref6$subtreeCallback = _ref6.subtreeCallback,\n        subtreeCallback = _ref6$subtreeCallback === void 0 ? noop : _ref6$subtreeCallback;\n\n    var update = noop;\n    var apply = noop;\n\n    if (ownerRecord.isShown) {\n      if (open) {\n        (function () {\n          // If received rules require us to open the subtree, we have 2 cases:\n          // 1. The node is not opened yet. In this case we simply have to\n          // calculate and add new ids.\n          // 2. The node is opened already. In this case we have to remove all\n          // existing ids and replace them with new ids.\n          var index = order.indexOf(id); // Here we calculate a count of visible subtree nodes to remove from\n          // `order`. Then we will replace the gap with the updated list of\n          // subtree nodes.\n\n          var recordNextToSubtree = ownerRecord;\n\n          while (recordNextToSubtree !== null) {\n            if (recordNextToSubtree.sibling !== null) {\n              recordNextToSubtree = recordNextToSubtree.sibling;\n              break;\n            }\n\n            recordNextToSubtree = recordNextToSubtree.parent;\n          }\n\n          var countToRemove = recordNextToSubtree === null ? order.length - 1 - index : order.indexOf(recordNextToSubtree.public.data.id) - 1 - index;\n          var orderParts = [[index + 1, countToRemove]]; // Unfortunately, splice cannot work with big arrays. If array exceeds\n          // some length it may fire an exception. The length is specific for\n          // each engine; e.g., MDN says about 65536 for Webkit. So, to avoid this\n          // overflow, I split `order` parts to chunks by 32768 elements in each\n          // one. These chunks will be sent as arguments to the `splice` method.\n          //\n          // To avoid array concatenations which may cause Major GC, I set two\n          // first arguments as `splice`'s `start` and `deleteCount` arguments.\n\n          update = function update(record) {\n            // We have to consider only the newly shown elements that are not in\n            // the order list yet. We should do it AFTER the visibility update\n            // happens because otherwise we won't be able to distinguish if the\n            // element should be included in the order list.\n            // Update record visibility\n            record.isShown = record.parent ? record.parent.public.isOpen && record.parent.isShown : true;\n\n            if (record.isShown) {\n              var currentOrderPart = orderParts[orderParts.length - 1];\n              currentOrderPart.push(record.public.data.id);\n\n              if (currentOrderPart.length === MAX_FUNCTION_ARGUMENTS + SPLICE_DEFAULT_ARGUMENTS_NUMBER) {\n                orderParts.push([index + 1 + MAX_FUNCTION_ARGUMENTS * orderParts.length, 0]);\n              }\n            }\n          };\n\n          apply = function apply() {\n            for (var i = 0; i < orderParts.length; i++) {\n              var _ref7;\n\n              // @ts-expect-error: too generic for TS\n              (_ref7 = order).splice.apply(_ref7, orderParts[i]);\n            }\n          };\n        })();\n      } else if (ownerRecord.public.isOpen) {\n        (function () {\n          // If received rules require us to close the subtree, we have to remove\n          // all subtree ids from the order list.\n          var index = order.indexOf(id);\n          var count = 0;\n\n          update = function update(record) {\n            // We have to consider only currently visible subtree nodes BEFORE\n            // their visibility is updated. Otherwise we will have incorrect\n            // number of items to remove: we cannot remove elements that are not\n            // in the order list.\n            //\n            // If we do it after the visibility update, we will be unable to\n            // understand if the element is still in the order list.\n            if (record.isShown) {\n              count += 1;\n            } // Update record visibility\n\n\n            record.isShown = record.parent ? record.parent.public.isOpen && record.parent.isShown : true;\n          };\n\n          apply = function apply() {\n            // Remove data after element with index\n            order.splice(index + 1, count);\n          };\n        })();\n      }\n    }\n\n    var currentRecord = ownerRecord;\n\n    while (currentRecord !== null) {\n      if (!currentRecord.visited) {\n        currentRecord.public.isOpen = currentRecord === ownerRecord ? open : currentRecord.public.isOpen;\n        subtreeCallback(currentRecord.public, ownerRecord.public);\n\n        if (currentRecord !== ownerRecord) {\n          update(currentRecord);\n        }\n\n        currentRecord.visited = currentRecord.child !== null; // This algorithm is a bit different from the visit algorithm in the\n        // tree generator. We are restricted with the bounds of a subtree and\n        // shouldn't go over it. So we cannot search for the ownerRecord's\n        // parent or sibling because it will lead us out of the subtree.\n\n        currentRecord = // Look for child in any case\n        currentRecord.child !== null ? currentRecord.child : // Stop looking for next element if currentRecord is root.\n        currentRecord === ownerRecord ? null : // Otherwise, look for sibling or parent\n        currentRecord.sibling !== null ? currentRecord.sibling : currentRecord.parent;\n      } else {\n        currentRecord.visited = false;\n        currentRecord = currentRecord === ownerRecord ? null : currentRecord.sibling !== null ? currentRecord.sibling : currentRecord.parent;\n      }\n    }\n\n    apply();\n  }\n\n  return {\n    order: order,\n    records: records,\n    updateRequest: {}\n  };\n};\n\nexport var createTreeComputer = function createTreeComputer(creatorOptions) {\n  return function (props, state, options) {\n    return options.refresh ? generateNewTree(creatorOptions, props, state) : updateExistingTree(state, options);\n  };\n};\n\nvar Tree = /*#__PURE__*/function (_PureComponent) {\n  _inheritsLoose(Tree, _PureComponent);\n\n  Tree.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n    var _props$listRef = props.listRef,\n        listRef = _props$listRef === void 0 ? null : _props$listRef,\n        treeWalker = props.treeWalker;\n    var computeTree = state.computeTree,\n        list = state.list,\n        order = state.order,\n        oldTreeWalker = state.treeWalker;\n    return _extends({\n      attachRefs: mergeRefs([list, listRef])\n    }, treeWalker !== oldTreeWalker || !order ? computeTree(props, state, {\n      refresh: true\n    }) : null, {\n      treeWalker: treeWalker\n    });\n  };\n\n  function Tree(props, context) {\n    var _this;\n\n    _this = _PureComponent.call(this, props, context) || this;\n    _this.getRecordData = _this.getRecordData.bind(_assertThisInitialized(_this));\n    /* eslint-disable react/no-unused-state,@typescript-eslint/consistent-type-assertions */\n\n    _this.state = {\n      list: /*#__PURE__*/createRef(),\n      recomputeTree: _this.recomputeTree.bind(_assertThisInitialized(_this)),\n      setState: _this.setState.bind(_assertThisInitialized(_this))\n    };\n    /* eslint-enable react/no-unused-state,@typescript-eslint/consistent-type-assertions */\n\n    return _this;\n  }\n\n  var _proto = Tree.prototype;\n\n  _proto.getItemData = function getItemData() {\n    var _this$props = this.props,\n        component = _this$props.children,\n        treeData = _this$props.itemData;\n    return {\n      component: component,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      getRecordData: this.getRecordData,\n      treeData: treeData\n    };\n  };\n\n  _proto.getRecordData = function getRecordData(index) {\n    var _this$state = this.state,\n        order = _this$state.order,\n        records = _this$state.records;\n    return records.get(order[index]).public;\n  };\n\n  _proto.recomputeTree = function recomputeTree(state) {\n    var _this2 = this;\n\n    return new Promise(function (resolve) {\n      _this2.setState(function (prevState) {\n        return prevState.computeTree(_this2.props, prevState, {\n          opennessState: state\n        });\n      }, resolve);\n    });\n  };\n\n  _proto.scrollTo = function scrollTo(scrollOffset) {\n    var _this$state$list$curr;\n\n    // eslint-disable-next-line react/destructuring-assignment\n    (_this$state$list$curr = this.state.list.current) == null ? void 0 : _this$state$list$curr.scrollTo(scrollOffset);\n  };\n\n  _proto.scrollToItem = function scrollToItem(id, align) {\n    var _this$state$list$curr2;\n\n    // eslint-disable-next-line react/destructuring-assignment\n    (_this$state$list$curr2 = this.state.list.current) == null ? void 0 : _this$state$list$curr2.scrollToItem(this.state.order.indexOf(id), align);\n  };\n\n  return Tree;\n}(PureComponent);\n\nTree.defaultProps = {\n  rowComponent: Row\n};\nexport default Tree;","import * as React from \"react\";\n\nexport default function mergeRefs<T = any>(\n  refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>\n): React.RefCallback<T> {\n  return (value) => {\n    refs.forEach((ref) => {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        (ref as React.MutableRefObject<T | null>).current = value;\n      }\n    });\n  };\n}\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport React from 'react';\nimport { FixedSizeList } from 'react-window';\nimport Tree, { createTreeComputer } from './Tree';\nimport { createBasicRecord, getIdByIndex } from './utils';\nvar computeTree = createTreeComputer({\n  createRecord: function createRecord(data, _ref, parent, previousRecord) {\n    var recomputeTree = _ref.recomputeTree;\n    return createBasicRecord({\n      data: data,\n      isOpen: previousRecord ? previousRecord.public.isOpen : data.isOpenByDefault,\n      setOpen: function setOpen(state) {\n        var _recomputeTree;\n\n        return recomputeTree((_recomputeTree = {}, _recomputeTree[data.id] = state, _recomputeTree));\n      }\n    }, parent);\n  }\n});\nexport var FixedSizeTree = /*#__PURE__*/function (_Tree) {\n  _inheritsLoose(FixedSizeTree, _Tree);\n\n  function FixedSizeTree(props, context) {\n    var _this;\n\n    _this = _Tree.call(this, props, context) || this;\n    _this.state = _extends({}, _this.state, {\n      computeTree: computeTree\n    });\n    return _this;\n  }\n\n  var _proto = FixedSizeTree.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        listRef = _this$props.listRef,\n        placeholder = _this$props.placeholder,\n        treeWalker = _this$props.treeWalker,\n        rowComponent = _this$props.rowComponent,\n        rest = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"listRef\", \"placeholder\", \"treeWalker\", \"rowComponent\"]);\n\n    var _this$state = this.state,\n        attachRefs = _this$state.attachRefs,\n        order = _this$state.order;\n    return placeholder && order.length === 0 ? placeholder : /*#__PURE__*/React.createElement(FixedSizeList, Object.assign({}, rest, {\n      itemCount: order.length,\n      itemData: this.getItemData() // eslint-disable-next-line @typescript-eslint/unbound-method\n      ,\n      itemKey: getIdByIndex // eslint-disable-next-line @typescript-eslint/unbound-method\n      ,\n      ref: attachRefs\n    }), rowComponent);\n  };\n\n  return FixedSizeTree;\n}(Tree);","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n  typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n  ? () => performance.now()\n  : () => Date.now();\n\nexport type TimeoutID = {|\n  id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n  cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n  const start = now();\n\n  function tick() {\n    if (now() - start >= delay) {\n      callback.call(null);\n    } else {\n      timeoutID.id = requestAnimationFrame(tick);\n    }\n  }\n\n  const timeoutID: TimeoutID = {\n    id: requestAnimationFrame(tick),\n  };\n\n  return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n  if (size === -1 || recalculate) {\n    const div = document.createElement('div');\n    const style = div.style;\n    style.width = '50px';\n    style.height = '50px';\n    style.overflow = 'scroll';\n\n    ((document.body: any): HTMLBodyElement).appendChild(div);\n\n    size = div.offsetWidth - div.clientWidth;\n\n    ((document.body: any): HTMLBodyElement).removeChild(div);\n  }\n\n  return size;\n}\n\nexport type RTLOffsetType =\n  | 'negative'\n  | 'positive-descending'\n  | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n  if (cachedRTLResult === null || recalculate) {\n    const outerDiv = document.createElement('div');\n    const outerStyle = outerDiv.style;\n    outerStyle.width = '50px';\n    outerStyle.height = '50px';\n    outerStyle.overflow = 'scroll';\n    outerStyle.direction = 'rtl';\n\n    const innerDiv = document.createElement('div');\n    const innerStyle = innerDiv.style;\n    innerStyle.width = '100px';\n    innerStyle.height = '100px';\n\n    outerDiv.appendChild(innerDiv);\n\n    ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n    if (outerDiv.scrollLeft > 0) {\n      cachedRTLResult = 'positive-descending';\n    } else {\n      outerDiv.scrollLeft = 1;\n      if (outerDiv.scrollLeft === 0) {\n        cachedRTLResult = 'negative';\n      } else {\n        cachedRTLResult = 'positive-ascending';\n      }\n    }\n\n    ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n    return cachedRTLResult;\n  }\n\n  return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps<T> = {|\n  columnIndex: number,\n  data: T,\n  isScrolling?: boolean,\n  rowIndex: number,\n  style: Object,\n|};\nexport type RenderComponent<T> = React$ComponentType<\n  $Shape<RenderComponentProps<T>>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n  overscanColumnStartIndex: number,\n  overscanColumnStopIndex: number,\n  overscanRowStartIndex: number,\n  overscanRowStopIndex: number,\n  visibleColumnStartIndex: number,\n  visibleColumnStopIndex: number,\n  visibleRowStartIndex: number,\n  visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n  horizontalScrollDirection: ScrollDirection,\n  scrollLeft: number,\n  scrollTop: number,\n  scrollUpdateWasRequested: boolean,\n  verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n  children: React$Node,\n  className: string | void,\n  onScroll: ScrollEvent => void,\n  style: {\n    [string]: mixed,\n  },\n|};\n\ntype InnerProps = {|\n  children: React$Node,\n  style: {\n    [string]: mixed,\n  },\n|};\n\nexport type Props<T> = {|\n  children: RenderComponent<T>,\n  className?: string,\n  columnCount: number,\n  columnWidth: itemSize,\n  direction: Direction,\n  height: number,\n  initialScrollLeft?: number,\n  initialScrollTop?: number,\n  innerRef?: any,\n  innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n  innerTagName?: string, // deprecated\n  itemData: T,\n  itemKey?: (params: {|\n    columnIndex: number,\n    data: T,\n    rowIndex: number,\n  |}) => any,\n  onItemsRendered?: OnItemsRenderedCallback,\n  onScroll?: OnScrollCallback,\n  outerRef?: any,\n  outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n  outerTagName?: string, // deprecated\n  overscanColumnCount?: number,\n  overscanColumnsCount?: number, // deprecated\n  overscanCount?: number, // deprecated\n  overscanRowCount?: number,\n  overscanRowsCount?: number, // deprecated\n  rowCount: number,\n  rowHeight: itemSize,\n  style?: Object,\n  useIsScrolling: boolean,\n  width: number,\n|};\n\ntype State = {|\n  instance: any,\n  isScrolling: boolean,\n  horizontalScrollDirection: ScrollDirection,\n  scrollLeft: number,\n  scrollTop: number,\n  scrollUpdateWasRequested: boolean,\n  verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype getItemSize = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n  props: Props<any>,\n  index: number,\n  align: ScrollToAlign,\n  scrollOffset: number,\n  instanceProps: any,\n  scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n  props: Props<any>,\n  offset: number,\n  instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n  props: Props<any>,\n  startIndex: number,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n  `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsOverscanCount = new WeakSet();\n    devWarningsOverscanRowsColumnsCount = new WeakSet();\n    devWarningsTagName = new WeakSet();\n  }\n}\n\nexport default function createGridComponent({\n  getColumnOffset,\n  getColumnStartIndexForOffset,\n  getColumnStopIndexForStartIndex,\n  getColumnWidth,\n  getEstimatedTotalHeight,\n  getEstimatedTotalWidth,\n  getOffsetForColumnAndAlignment,\n  getOffsetForRowAndAlignment,\n  getRowHeight,\n  getRowOffset,\n  getRowStartIndexForOffset,\n  getRowStopIndexForStartIndex,\n  initInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange,\n  validateProps,\n}: {|\n  getColumnOffset: getItemOffset,\n  getColumnStartIndexForOffset: GetStartIndexForOffset,\n  getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n  getColumnWidth: getItemSize,\n  getEstimatedTotalHeight: getEstimatedTotalSize,\n  getEstimatedTotalWidth: getEstimatedTotalSize,\n  getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n  getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n  getRowOffset: getItemOffset,\n  getRowHeight: getItemSize,\n  getRowStartIndexForOffset: GetStartIndexForOffset,\n  getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n  initInstanceProps: InitInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange: boolean,\n  validateProps: ValidateProps,\n|}) {\n  return class Grid<T> extends PureComponent<Props<T>, State> {\n    _instanceProps: any = initInstanceProps(this.props, this);\n    _resetIsScrollingTimeoutId: TimeoutID | null = null;\n    _outerRef: ?HTMLDivElement;\n\n    static defaultProps = {\n      direction: 'ltr',\n      itemData: undefined,\n      useIsScrolling: false,\n    };\n\n    state: State = {\n      instance: this,\n      isScrolling: false,\n      horizontalScrollDirection: 'forward',\n      scrollLeft:\n        typeof this.props.initialScrollLeft === 'number'\n          ? this.props.initialScrollLeft\n          : 0,\n      scrollTop:\n        typeof this.props.initialScrollTop === 'number'\n          ? this.props.initialScrollTop\n          : 0,\n      scrollUpdateWasRequested: false,\n      verticalScrollDirection: 'forward',\n    };\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    constructor(props: Props<T>) {\n      super(props);\n    }\n\n    static getDerivedStateFromProps(\n      nextProps: Props<T>,\n      prevState: State\n    ): $Shape<State> | null {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    }\n\n    scrollTo({\n      scrollLeft,\n      scrollTop,\n    }: {\n      scrollLeft: number,\n      scrollTop: number,\n    }): void {\n      if (scrollLeft !== undefined) {\n        scrollLeft = Math.max(0, scrollLeft);\n      }\n      if (scrollTop !== undefined) {\n        scrollTop = Math.max(0, scrollTop);\n      }\n\n      this.setState(prevState => {\n        if (scrollLeft === undefined) {\n          scrollLeft = prevState.scrollLeft;\n        }\n        if (scrollTop === undefined) {\n          scrollTop = prevState.scrollTop;\n        }\n\n        if (\n          prevState.scrollLeft === scrollLeft &&\n          prevState.scrollTop === scrollTop\n        ) {\n          return null;\n        }\n\n        return {\n          horizontalScrollDirection:\n            prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          scrollUpdateWasRequested: true,\n          verticalScrollDirection:\n            prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n        };\n      }, this._resetIsScrollingDebounced);\n    }\n\n    scrollToItem({\n      align = 'auto',\n      columnIndex,\n      rowIndex,\n    }: {\n      align: ScrollToAlign,\n      columnIndex?: number,\n      rowIndex?: number,\n    }): void {\n      const { columnCount, height, rowCount, width } = this.props;\n      const { scrollLeft, scrollTop } = this.state;\n      const scrollbarSize = getScrollbarSize();\n\n      if (columnIndex !== undefined) {\n        columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n      }\n      if (rowIndex !== undefined) {\n        rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n      }\n\n      const estimatedTotalHeight = getEstimatedTotalHeight(\n        this.props,\n        this._instanceProps\n      );\n      const estimatedTotalWidth = getEstimatedTotalWidth(\n        this.props,\n        this._instanceProps\n      );\n\n      // The scrollbar size should be considered when scrolling an item into view,\n      // to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n      const horizontalScrollbarSize =\n        estimatedTotalWidth > width ? scrollbarSize : 0;\n      const verticalScrollbarSize =\n        estimatedTotalHeight > height ? scrollbarSize : 0;\n\n      this.scrollTo({\n        scrollLeft:\n          columnIndex !== undefined\n            ? getOffsetForColumnAndAlignment(\n                this.props,\n                columnIndex,\n                align,\n                scrollLeft,\n                this._instanceProps,\n                verticalScrollbarSize\n              )\n            : scrollLeft,\n        scrollTop:\n          rowIndex !== undefined\n            ? getOffsetForRowAndAlignment(\n                this.props,\n                rowIndex,\n                align,\n                scrollTop,\n                this._instanceProps,\n                horizontalScrollbarSize\n              )\n            : scrollTop,\n      });\n    }\n\n    componentDidMount() {\n      const { initialScrollLeft, initialScrollTop } = this.props;\n\n      if (this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (typeof initialScrollLeft === 'number') {\n          outerRef.scrollLeft = initialScrollLeft;\n        }\n        if (typeof initialScrollTop === 'number') {\n          outerRef.scrollTop = initialScrollTop;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentDidUpdate() {\n      const { direction } = this.props;\n      const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // So we need to determine which browser behavior we're dealing with, and mimic it.\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              outerRef.scrollLeft = -scrollLeft;\n              break;\n            case 'positive-ascending':\n              outerRef.scrollLeft = scrollLeft;\n              break;\n            default:\n              const { clientWidth, scrollWidth } = outerRef;\n              outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        } else {\n          outerRef.scrollLeft = Math.max(0, scrollLeft);\n        }\n\n        outerRef.scrollTop = Math.max(0, scrollTop);\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    }\n\n    render() {\n      const {\n        children,\n        className,\n        columnCount,\n        direction,\n        height,\n        innerRef,\n        innerElementType,\n        innerTagName,\n        itemData,\n        itemKey = defaultItemKey,\n        outerElementType,\n        outerTagName,\n        rowCount,\n        style,\n        useIsScrolling,\n        width,\n      } = this.props;\n      const { isScrolling } = this.state;\n\n      const [\n        columnStartIndex,\n        columnStopIndex,\n      ] = this._getHorizontalRangeToRender();\n      const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n      const items = [];\n      if (columnCount > 0 && rowCount) {\n        for (\n          let rowIndex = rowStartIndex;\n          rowIndex <= rowStopIndex;\n          rowIndex++\n        ) {\n          for (\n            let columnIndex = columnStartIndex;\n            columnIndex <= columnStopIndex;\n            columnIndex++\n          ) {\n            items.push(\n              createElement(children, {\n                columnIndex,\n                data: itemData,\n                isScrolling: useIsScrolling ? isScrolling : undefined,\n                key: itemKey({ columnIndex, data: itemData, rowIndex }),\n                rowIndex,\n                style: this._getItemStyle(rowIndex, columnIndex),\n              })\n            );\n          }\n        }\n      }\n\n      // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n      const estimatedTotalHeight = getEstimatedTotalHeight(\n        this.props,\n        this._instanceProps\n      );\n      const estimatedTotalWidth = getEstimatedTotalWidth(\n        this.props,\n        this._instanceProps\n      );\n\n      return createElement(\n        outerElementType || outerTagName || 'div',\n        {\n          className,\n          onScroll: this._onScroll,\n          ref: this._outerRefSetter,\n          style: {\n            position: 'relative',\n            height,\n            width,\n            overflow: 'auto',\n            WebkitOverflowScrolling: 'touch',\n            willChange: 'transform',\n            direction,\n            ...style,\n          },\n        },\n        createElement(innerElementType || innerTagName || 'div', {\n          children: items,\n          ref: innerRef,\n          style: {\n            height: estimatedTotalHeight,\n            pointerEvents: isScrolling ? 'none' : undefined,\n            width: estimatedTotalWidth,\n          },\n        })\n      );\n    }\n\n    _callOnItemsRendered: (\n      overscanColumnStartIndex: number,\n      overscanColumnStopIndex: number,\n      overscanRowStartIndex: number,\n      overscanRowStopIndex: number,\n      visibleColumnStartIndex: number,\n      visibleColumnStopIndex: number,\n      visibleRowStartIndex: number,\n      visibleRowStopIndex: number\n    ) => void;\n    _callOnItemsRendered = memoizeOne(\n      (\n        overscanColumnStartIndex: number,\n        overscanColumnStopIndex: number,\n        overscanRowStartIndex: number,\n        overscanRowStopIndex: number,\n        visibleColumnStartIndex: number,\n        visibleColumnStopIndex: number,\n        visibleRowStartIndex: number,\n        visibleRowStopIndex: number\n      ) =>\n        ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n          overscanColumnStartIndex,\n          overscanColumnStopIndex,\n          overscanRowStartIndex,\n          overscanRowStopIndex,\n          visibleColumnStartIndex,\n          visibleColumnStopIndex,\n          visibleRowStartIndex,\n          visibleRowStopIndex,\n        })\n    );\n\n    _callOnScroll: (\n      scrollLeft: number,\n      scrollTop: number,\n      horizontalScrollDirection: ScrollDirection,\n      verticalScrollDirection: ScrollDirection,\n      scrollUpdateWasRequested: boolean\n    ) => void;\n    _callOnScroll = memoizeOne(\n      (\n        scrollLeft: number,\n        scrollTop: number,\n        horizontalScrollDirection: ScrollDirection,\n        verticalScrollDirection: ScrollDirection,\n        scrollUpdateWasRequested: boolean\n      ) =>\n        ((this.props.onScroll: any): OnScrollCallback)({\n          horizontalScrollDirection,\n          scrollLeft,\n          scrollTop,\n          verticalScrollDirection,\n          scrollUpdateWasRequested,\n        })\n    );\n\n    _callPropsCallbacks() {\n      const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n      if (typeof onItemsRendered === 'function') {\n        if (columnCount > 0 && rowCount > 0) {\n          const [\n            overscanColumnStartIndex,\n            overscanColumnStopIndex,\n            visibleColumnStartIndex,\n            visibleColumnStopIndex,\n          ] = this._getHorizontalRangeToRender();\n          const [\n            overscanRowStartIndex,\n            overscanRowStopIndex,\n            visibleRowStartIndex,\n            visibleRowStopIndex,\n          ] = this._getVerticalRangeToRender();\n          this._callOnItemsRendered(\n            overscanColumnStartIndex,\n            overscanColumnStopIndex,\n            overscanRowStartIndex,\n            overscanRowStopIndex,\n            visibleColumnStartIndex,\n            visibleColumnStopIndex,\n            visibleRowStartIndex,\n            visibleRowStopIndex\n          );\n        }\n      }\n\n      if (typeof onScroll === 'function') {\n        const {\n          horizontalScrollDirection,\n          scrollLeft,\n          scrollTop,\n          scrollUpdateWasRequested,\n          verticalScrollDirection,\n        } = this.state;\n        this._callOnScroll(\n          scrollLeft,\n          scrollTop,\n          horizontalScrollDirection,\n          verticalScrollDirection,\n          scrollUpdateWasRequested\n        );\n      }\n    }\n\n    // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n    _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n      const { columnWidth, direction, rowHeight } = this.props;\n\n      const itemStyleCache = this._getItemStyleCache(\n        shouldResetStyleCacheOnItemSizeChange && columnWidth,\n        shouldResetStyleCacheOnItemSizeChange && direction,\n        shouldResetStyleCacheOnItemSizeChange && rowHeight\n      );\n\n      const key = `${rowIndex}:${columnIndex}`;\n\n      let style;\n      if (itemStyleCache.hasOwnProperty(key)) {\n        style = itemStyleCache[key];\n      } else {\n        const offset = getColumnOffset(\n          this.props,\n          columnIndex,\n          this._instanceProps\n        );\n        const isRtl = direction === 'rtl';\n        itemStyleCache[key] = style = {\n          position: 'absolute',\n          left: isRtl ? undefined : offset,\n          right: isRtl ? offset : undefined,\n          top: getRowOffset(this.props, rowIndex, this._instanceProps),\n          height: getRowHeight(this.props, rowIndex, this._instanceProps),\n          width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n        };\n      }\n\n      return style;\n    };\n\n    _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n    _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n    _getHorizontalRangeToRender(): [number, number, number, number] {\n      const {\n        columnCount,\n        overscanColumnCount,\n        overscanColumnsCount,\n        overscanCount,\n        rowCount,\n      } = this.props;\n      const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n      const overscanCountResolved: number =\n        overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getColumnStartIndexForOffset(\n        this.props,\n        scrollLeft,\n        this._instanceProps\n      );\n      const stopIndex = getColumnStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollLeft,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || horizontalScrollDirection === 'backward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n      const overscanForward =\n        !isScrolling || horizontalScrollDirection === 'forward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _getVerticalRangeToRender(): [number, number, number, number] {\n      const {\n        columnCount,\n        overscanCount,\n        overscanRowCount,\n        overscanRowsCount,\n        rowCount,\n      } = this.props;\n      const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n      const overscanCountResolved: number =\n        overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getRowStartIndexForOffset(\n        this.props,\n        scrollTop,\n        this._instanceProps\n      );\n      const stopIndex = getRowStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollTop,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || verticalScrollDirection === 'backward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n      const overscanForward =\n        !isScrolling || verticalScrollDirection === 'forward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _onScroll = (event: ScrollEvent): void => {\n      const {\n        clientHeight,\n        clientWidth,\n        scrollLeft,\n        scrollTop,\n        scrollHeight,\n        scrollWidth,\n      } = event.currentTarget;\n      this.setState(prevState => {\n        if (\n          prevState.scrollLeft === scrollLeft &&\n          prevState.scrollTop === scrollTop\n        ) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        const { direction } = this.props;\n\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n        // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n        let calculatedScrollLeft = scrollLeft;\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              calculatedScrollLeft = -scrollLeft;\n              break;\n            case 'positive-descending':\n              calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        calculatedScrollLeft = Math.max(\n          0,\n          Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n        );\n        const calculatedScrollTop = Math.max(\n          0,\n          Math.min(scrollTop, scrollHeight - clientHeight)\n        );\n\n        return {\n          isScrolling: true,\n          horizontalScrollDirection:\n            prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: calculatedScrollLeft,\n          scrollTop: calculatedScrollTop,\n          verticalScrollDirection:\n            prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _outerRefSetter = (ref: any): void => {\n      const { outerRef } = this.props;\n\n      this._outerRef = ((ref: any): HTMLDivElement);\n\n      if (typeof outerRef === 'function') {\n        outerRef(ref);\n      } else if (\n        outerRef != null &&\n        typeof outerRef === 'object' &&\n        outerRef.hasOwnProperty('current')\n      ) {\n        outerRef.current = ref;\n      }\n    };\n\n    _resetIsScrollingDebounced = () => {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n\n      this._resetIsScrollingTimeoutId = requestTimeout(\n        this._resetIsScrolling,\n        IS_SCROLLING_DEBOUNCE_INTERVAL\n      );\n    };\n\n    _resetIsScrolling = () => {\n      this._resetIsScrollingTimeoutId = null;\n\n      this.setState({ isScrolling: false }, () => {\n        // Clear style cache after state update has been committed.\n        // This way we don't break pure sCU for items that don't use isScrolling param.\n        this._getItemStyleCache(-1);\n      });\n    };\n  };\n}\n\nconst validateSharedProps = (\n  {\n    children,\n    direction,\n    height,\n    innerTagName,\n    outerTagName,\n    overscanColumnsCount,\n    overscanCount,\n    overscanRowsCount,\n    width,\n  }: Props<any>,\n  { instance }: State\n): void => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof overscanCount === 'number') {\n      if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n        devWarningsOverscanCount.add(instance);\n        console.warn(\n          'The overscanCount prop has been deprecated. ' +\n            'Please use the overscanColumnCount and overscanRowCount props instead.'\n        );\n      }\n    }\n\n    if (\n      typeof overscanColumnsCount === 'number' ||\n      typeof overscanRowsCount === 'number'\n    ) {\n      if (\n        devWarningsOverscanRowsColumnsCount &&\n        !devWarningsOverscanRowsColumnsCount.has(instance)\n      ) {\n        devWarningsOverscanRowsColumnsCount.add(instance);\n        console.warn(\n          'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n            'Please use the overscanColumnCount and overscanRowCount props instead.'\n        );\n      }\n    }\n\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn(\n          'The innerTagName and outerTagName props have been deprecated. ' +\n            'Please use the innerElementType and outerElementType props instead.'\n        );\n      }\n    }\n\n    if (children == null) {\n      throw Error(\n        'An invalid \"children\" prop has been specified. ' +\n          'Value should be a React component. ' +\n          `\"${children === null ? 'null' : typeof children}\" was specified.`\n      );\n    }\n\n    switch (direction) {\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"direction\" prop has been specified. ' +\n            'Value should be either \"ltr\" or \"rtl\". ' +\n            `\"${direction}\" was specified.`\n        );\n    }\n\n    if (typeof width !== 'number') {\n      throw Error(\n        'An invalid \"width\" prop has been specified. ' +\n          'Grids must specify a number for width. ' +\n          `\"${width === null ? 'null' : typeof width}\" was specified.`\n      );\n    }\n\n    if (typeof height !== 'number') {\n      throw Error(\n        'An invalid \"height\" prop has been specified. ' +\n          'Grids must specify a number for height. ' +\n          `\"${height === null ? 'null' : typeof height}\" was specified.`\n      );\n    }\n  }\n};\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps<T> = {|\n  data: T,\n  index: number,\n  isScrolling?: boolean,\n  style: Object,\n|};\ntype RenderComponent<T> = React$ComponentType<$Shape<RenderComponentProps<T>>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n  overscanStartIndex: number,\n  overscanStopIndex: number,\n  visibleStartIndex: number,\n  visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n  scrollDirection: ScrollDirection,\n  scrollOffset: number,\n  scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n  children: React$Node,\n  className: string | void,\n  onScroll: ScrollEvent => void,\n  style: {\n    [string]: mixed,\n  },\n|};\n\ntype InnerProps = {|\n  children: React$Node,\n  style: {\n    [string]: mixed,\n  },\n|};\n\nexport type Props<T> = {|\n  children: RenderComponent<T>,\n  className?: string,\n  direction: Direction,\n  height: number | string,\n  initialScrollOffset?: number,\n  innerRef?: any,\n  innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n  innerTagName?: string, // deprecated\n  itemCount: number,\n  itemData: T,\n  itemKey?: (index: number, data: T) => any,\n  itemSize: itemSize,\n  layout: Layout,\n  onItemsRendered?: onItemsRenderedCallback,\n  onScroll?: onScrollCallback,\n  outerRef?: any,\n  outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n  outerTagName?: string, // deprecated\n  overscanCount: number,\n  style?: Object,\n  useIsScrolling: boolean,\n  width: number | string,\n|};\n\ntype State = {|\n  instance: any,\n  isScrolling: boolean,\n  scrollDirection: ScrollDirection,\n  scrollOffset: number,\n  scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype GetItemSize = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n  props: Props<any>,\n  index: number,\n  align: ScrollToAlign,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n  props: Props<any>,\n  offset: number,\n  instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n  props: Props<any>,\n  startIndex: number,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsDirection = new WeakSet();\n    devWarningsTagName = new WeakSet();\n  }\n}\n\nexport default function createListComponent({\n  getItemOffset,\n  getEstimatedTotalSize,\n  getItemSize,\n  getOffsetForIndexAndAlignment,\n  getStartIndexForOffset,\n  getStopIndexForStartIndex,\n  initInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange,\n  validateProps,\n}: {|\n  getItemOffset: GetItemOffset,\n  getEstimatedTotalSize: GetEstimatedTotalSize,\n  getItemSize: GetItemSize,\n  getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n  getStartIndexForOffset: GetStartIndexForOffset,\n  getStopIndexForStartIndex: GetStopIndexForStartIndex,\n  initInstanceProps: InitInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange: boolean,\n  validateProps: ValidateProps,\n|}) {\n  return class List<T> extends PureComponent<Props<T>, State> {\n    _instanceProps: any = initInstanceProps(this.props, this);\n    _outerRef: ?HTMLDivElement;\n    _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n    static defaultProps = {\n      direction: 'ltr',\n      itemData: undefined,\n      layout: 'vertical',\n      overscanCount: 2,\n      useIsScrolling: false,\n    };\n\n    state: State = {\n      instance: this,\n      isScrolling: false,\n      scrollDirection: 'forward',\n      scrollOffset:\n        typeof this.props.initialScrollOffset === 'number'\n          ? this.props.initialScrollOffset\n          : 0,\n      scrollUpdateWasRequested: false,\n    };\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    constructor(props: Props<T>) {\n      super(props);\n    }\n\n    static getDerivedStateFromProps(\n      nextProps: Props<T>,\n      prevState: State\n    ): $Shape<State> | null {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    }\n\n    scrollTo(scrollOffset: number): void {\n      scrollOffset = Math.max(0, scrollOffset);\n\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollOffset) {\n          return null;\n        }\n        return {\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: true,\n        };\n      }, this._resetIsScrollingDebounced);\n    }\n\n    scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n      const { itemCount, layout } = this.props;\n      const { scrollOffset } = this.state;\n\n      index = Math.max(0, Math.min(index, itemCount - 1));\n\n      // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n      // This is an edge case for lists; normally they only scroll in the dominant direction.\n      let scrollbarSize = 0;\n      if (this._outerRef) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (layout === 'vertical') {\n          scrollbarSize =\n            outerRef.scrollWidth > outerRef.clientWidth\n              ? getScrollbarSize()\n              : 0;\n        } else {\n          scrollbarSize =\n            outerRef.scrollHeight > outerRef.clientHeight\n              ? getScrollbarSize()\n              : 0;\n        }\n      }\n\n      this.scrollTo(\n        getOffsetForIndexAndAlignment(\n          this.props,\n          index,\n          align,\n          scrollOffset,\n          this._instanceProps,\n          scrollbarSize\n        )\n      );\n    }\n\n    componentDidMount() {\n      const { direction, initialScrollOffset, layout } = this.props;\n\n      if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        // TODO Deprecate direction \"horizontal\"\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          outerRef.scrollLeft = initialScrollOffset;\n        } else {\n          outerRef.scrollTop = initialScrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentDidUpdate() {\n      const { direction, layout } = this.props;\n      const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n\n        // TODO Deprecate direction \"horizontal\"\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // So we need to determine which browser behavior we're dealing with, and mimic it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                outerRef.scrollLeft = -scrollOffset;\n                break;\n              case 'positive-ascending':\n                outerRef.scrollLeft = scrollOffset;\n                break;\n              default:\n                const { clientWidth, scrollWidth } = outerRef;\n                outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n                break;\n            }\n          } else {\n            outerRef.scrollLeft = scrollOffset;\n          }\n        } else {\n          outerRef.scrollTop = scrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    }\n\n    render() {\n      const {\n        children,\n        className,\n        direction,\n        height,\n        innerRef,\n        innerElementType,\n        innerTagName,\n        itemCount,\n        itemData,\n        itemKey = defaultItemKey,\n        layout,\n        outerElementType,\n        outerTagName,\n        style,\n        useIsScrolling,\n        width,\n      } = this.props;\n      const { isScrolling } = this.state;\n\n      // TODO Deprecate direction \"horizontal\"\n      const isHorizontal =\n        direction === 'horizontal' || layout === 'horizontal';\n\n      const onScroll = isHorizontal\n        ? this._onScrollHorizontal\n        : this._onScrollVertical;\n\n      const [startIndex, stopIndex] = this._getRangeToRender();\n\n      const items = [];\n      if (itemCount > 0) {\n        for (let index = startIndex; index <= stopIndex; index++) {\n          items.push(\n            createElement(children, {\n              data: itemData,\n              key: itemKey(index, itemData),\n              index,\n              isScrolling: useIsScrolling ? isScrolling : undefined,\n              style: this._getItemStyle(index),\n            })\n          );\n        }\n      }\n\n      // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n      const estimatedTotalSize = getEstimatedTotalSize(\n        this.props,\n        this._instanceProps\n      );\n\n      return createElement(\n        outerElementType || outerTagName || 'div',\n        {\n          className,\n          onScroll,\n          ref: this._outerRefSetter,\n          style: {\n            position: 'relative',\n            height,\n            width,\n            overflow: 'auto',\n            WebkitOverflowScrolling: 'touch',\n            willChange: 'transform',\n            direction,\n            ...style,\n          },\n        },\n        createElement(innerElementType || innerTagName || 'div', {\n          children: items,\n          ref: innerRef,\n          style: {\n            height: isHorizontal ? '100%' : estimatedTotalSize,\n            pointerEvents: isScrolling ? 'none' : undefined,\n            width: isHorizontal ? estimatedTotalSize : '100%',\n          },\n        })\n      );\n    }\n\n    _callOnItemsRendered: (\n      overscanStartIndex: number,\n      overscanStopIndex: number,\n      visibleStartIndex: number,\n      visibleStopIndex: number\n    ) => void;\n    _callOnItemsRendered = memoizeOne(\n      (\n        overscanStartIndex: number,\n        overscanStopIndex: number,\n        visibleStartIndex: number,\n        visibleStopIndex: number\n      ) =>\n        ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n          overscanStartIndex,\n          overscanStopIndex,\n          visibleStartIndex,\n          visibleStopIndex,\n        })\n    );\n\n    _callOnScroll: (\n      scrollDirection: ScrollDirection,\n      scrollOffset: number,\n      scrollUpdateWasRequested: boolean\n    ) => void;\n    _callOnScroll = memoizeOne(\n      (\n        scrollDirection: ScrollDirection,\n        scrollOffset: number,\n        scrollUpdateWasRequested: boolean\n      ) =>\n        ((this.props.onScroll: any): onScrollCallback)({\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested,\n        })\n    );\n\n    _callPropsCallbacks() {\n      if (typeof this.props.onItemsRendered === 'function') {\n        const { itemCount } = this.props;\n        if (itemCount > 0) {\n          const [\n            overscanStartIndex,\n            overscanStopIndex,\n            visibleStartIndex,\n            visibleStopIndex,\n          ] = this._getRangeToRender();\n          this._callOnItemsRendered(\n            overscanStartIndex,\n            overscanStopIndex,\n            visibleStartIndex,\n            visibleStopIndex\n          );\n        }\n      }\n\n      if (typeof this.props.onScroll === 'function') {\n        const {\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested,\n        } = this.state;\n        this._callOnScroll(\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested\n        );\n      }\n    }\n\n    // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    _getItemStyle: (index: number) => Object;\n    _getItemStyle = (index: number): Object => {\n      const { direction, itemSize, layout } = this.props;\n\n      const itemStyleCache = this._getItemStyleCache(\n        shouldResetStyleCacheOnItemSizeChange && itemSize,\n        shouldResetStyleCacheOnItemSizeChange && layout,\n        shouldResetStyleCacheOnItemSizeChange && direction\n      );\n\n      let style;\n      if (itemStyleCache.hasOwnProperty(index)) {\n        style = itemStyleCache[index];\n      } else {\n        const offset = getItemOffset(this.props, index, this._instanceProps);\n        const size = getItemSize(this.props, index, this._instanceProps);\n\n        // TODO Deprecate direction \"horizontal\"\n        const isHorizontal =\n          direction === 'horizontal' || layout === 'horizontal';\n\n        const isRtl = direction === 'rtl';\n        const offsetHorizontal = isHorizontal ? offset : 0;\n        itemStyleCache[index] = style = {\n          position: 'absolute',\n          left: isRtl ? undefined : offsetHorizontal,\n          right: isRtl ? offsetHorizontal : undefined,\n          top: !isHorizontal ? offset : 0,\n          height: !isHorizontal ? size : '100%',\n          width: isHorizontal ? size : '100%',\n        };\n      }\n\n      return style;\n    };\n\n    _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n    _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n    _getRangeToRender(): [number, number, number, number] {\n      const { itemCount, overscanCount } = this.props;\n      const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n      if (itemCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getStartIndexForOffset(\n        this.props,\n        scrollOffset,\n        this._instanceProps\n      );\n      const stopIndex = getStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollOffset,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || scrollDirection === 'backward'\n          ? Math.max(1, overscanCount)\n          : 1;\n      const overscanForward =\n        !isScrolling || scrollDirection === 'forward'\n          ? Math.max(1, overscanCount)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _onScrollHorizontal = (event: ScrollEvent): void => {\n      const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollLeft) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        const { direction } = this.props;\n\n        let scrollOffset = scrollLeft;\n        if (direction === 'rtl') {\n          // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n          // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n          // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n          // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              scrollOffset = -scrollLeft;\n              break;\n            case 'positive-descending':\n              scrollOffset = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        scrollOffset = Math.max(\n          0,\n          Math.min(scrollOffset, scrollWidth - clientWidth)\n        );\n\n        return {\n          isScrolling: true,\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset,\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _onScrollVertical = (event: ScrollEvent): void => {\n      const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollTop) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        const scrollOffset = Math.max(\n          0,\n          Math.min(scrollTop, scrollHeight - clientHeight)\n        );\n\n        return {\n          isScrolling: true,\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset,\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _outerRefSetter = (ref: any): void => {\n      const { outerRef } = this.props;\n\n      this._outerRef = ((ref: any): HTMLDivElement);\n\n      if (typeof outerRef === 'function') {\n        outerRef(ref);\n      } else if (\n        outerRef != null &&\n        typeof outerRef === 'object' &&\n        outerRef.hasOwnProperty('current')\n      ) {\n        outerRef.current = ref;\n      }\n    };\n\n    _resetIsScrollingDebounced = () => {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n\n      this._resetIsScrollingTimeoutId = requestTimeout(\n        this._resetIsScrolling,\n        IS_SCROLLING_DEBOUNCE_INTERVAL\n      );\n    };\n\n    _resetIsScrolling = () => {\n      this._resetIsScrollingTimeoutId = null;\n\n      this.setState({ isScrolling: false }, () => {\n        // Clear style cache after state update has been committed.\n        // This way we don't break pure sCU for items that don't use isScrolling param.\n        this._getItemStyleCache(-1, null);\n      });\n    };\n  };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n  {\n    children,\n    direction,\n    height,\n    layout,\n    innerTagName,\n    outerTagName,\n    width,\n  }: Props<any>,\n  { instance }: State\n): void => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn(\n          'The innerTagName and outerTagName props have been deprecated. ' +\n            'Please use the innerElementType and outerElementType props instead.'\n        );\n      }\n    }\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n    switch (direction) {\n      case 'horizontal':\n      case 'vertical':\n        if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n          devWarningsDirection.add(instance);\n          console.warn(\n            'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n              'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n          );\n        }\n        break;\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"direction\" prop has been specified. ' +\n            'Value should be either \"ltr\" or \"rtl\". ' +\n            `\"${direction}\" was specified.`\n        );\n    }\n\n    switch (layout) {\n      case 'horizontal':\n      case 'vertical':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"layout\" prop has been specified. ' +\n            'Value should be either \"horizontal\" or \"vertical\". ' +\n            `\"${layout}\" was specified.`\n        );\n    }\n\n    if (children == null) {\n      throw Error(\n        'An invalid \"children\" prop has been specified. ' +\n          'Value should be a React component. ' +\n          `\"${children === null ? 'null' : typeof children}\" was specified.`\n      );\n    }\n\n    if (isHorizontal && typeof width !== 'number') {\n      throw Error(\n        'An invalid \"width\" prop has been specified. ' +\n          'Horizontal lists must specify a number for width. ' +\n          `\"${width === null ? 'null' : typeof width}\" was specified.`\n      );\n    } else if (!isHorizontal && typeof height !== 'number') {\n      throw Error(\n        'An invalid \"height\" prop has been specified. ' +\n          'Vertical lists must specify a number for height. ' +\n          `\"${height === null ? 'null' : typeof height}\" was specified.`\n      );\n    }\n  }\n};\n","// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\ntype VariableSizeProps = {|\n  estimatedItemSize: number,\n  ...Props<any>,\n|};\n\ntype itemSizeGetter = (index: number) => number;\n\ntype ItemMetadata = {|\n  offset: number,\n  size: number,\n|};\ntype InstanceProps = {|\n  itemMetadataMap: { [index: number]: ItemMetadata },\n  estimatedItemSize: number,\n  lastMeasuredIndex: number,\n|};\n\nconst getItemMetadata = (\n  props: Props<any>,\n  index: number,\n  instanceProps: InstanceProps\n): ItemMetadata => {\n  const { itemSize } = ((props: any): VariableSizeProps);\n  const { itemMetadataMap, lastMeasuredIndex } = instanceProps;\n\n  if (index > lastMeasuredIndex) {\n    let offset = 0;\n    if (lastMeasuredIndex >= 0) {\n      const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (let i = lastMeasuredIndex + 1; i <= index; i++) {\n      let size = ((itemSize: any): itemSizeGetter)(i);\n\n      itemMetadataMap[i] = {\n        offset,\n        size,\n      };\n\n      offset += size;\n    }\n\n    instanceProps.lastMeasuredIndex = index;\n  }\n\n  return itemMetadataMap[index];\n};\n\nconst findNearestItem = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  offset: number\n) => {\n  const { itemMetadataMap, lastMeasuredIndex } = instanceProps;\n\n  const lastMeasuredItemOffset =\n    lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch(\n      props,\n      instanceProps,\n      lastMeasuredIndex,\n      0,\n      offset\n    );\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch(\n      props,\n      instanceProps,\n      Math.max(0, lastMeasuredIndex),\n      offset\n    );\n  }\n};\n\nconst findNearestItemBinarySearch = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  high: number,\n  low: number,\n  offset: number\n): number => {\n  while (low <= high) {\n    const middle = low + Math.floor((high - low) / 2);\n    const currentOffset = getItemMetadata(props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nconst findNearestItemExponentialSearch = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  index: number,\n  offset: number\n): number => {\n  const { itemCount } = props;\n  let interval = 1;\n\n  while (\n    index < itemCount &&\n    getItemMetadata(props, index, instanceProps).offset < offset\n  ) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch(\n    props,\n    instanceProps,\n    Math.min(index, itemCount - 1),\n    Math.floor(index / 2),\n    offset\n  );\n};\n\nconst getEstimatedTotalSize = (\n  { itemCount }: Props<any>,\n  { itemMetadataMap, estimatedItemSize, lastMeasuredIndex }: InstanceProps\n) => {\n  let totalSizeOfMeasuredItems = 0;\n\n  // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n  if (lastMeasuredIndex >= itemCount) {\n    lastMeasuredIndex = itemCount - 1;\n  }\n\n  if (lastMeasuredIndex >= 0) {\n    const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n    totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n  }\n\n  const numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n  const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n\n  return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nconst VariableSizeList = createListComponent({\n  getItemOffset: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => getItemMetadata(props, index, instanceProps).offset,\n\n  getItemSize: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => instanceProps.itemMetadataMap[index].size,\n\n  getEstimatedTotalSize,\n\n  getOffsetForIndexAndAlignment: (\n    props: Props<any>,\n    index: number,\n    align: ScrollToAlign,\n    scrollOffset: number,\n    instanceProps: InstanceProps,\n    scrollbarSize: number\n  ): number => {\n    const { direction, height, layout, width } = props;\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const size = (((isHorizontal ? width : height): any): number);\n    const itemMetadata = getItemMetadata(props, index, instanceProps);\n\n    // Get estimated total size after ItemMetadata is computed,\n    // To ensure it reflects actual measurements instead of just estimates.\n    const estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n\n    const maxOffset = Math.max(\n      0,\n      Math.min(estimatedTotalSize - size, itemMetadata.offset)\n    );\n    const minOffset = Math.max(\n      0,\n      itemMetadata.offset - size + itemMetadata.size + scrollbarSize\n    );\n\n    if (align === 'smart') {\n      if (\n        scrollOffset >= minOffset - size &&\n        scrollOffset <= maxOffset + size\n      ) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n      case 'end':\n        return minOffset;\n      case 'center':\n        return Math.round(minOffset + (maxOffset - minOffset) / 2);\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n    }\n  },\n\n  getStartIndexForOffset: (\n    props: Props<any>,\n    offset: number,\n    instanceProps: InstanceProps\n  ): number => findNearestItem(props, instanceProps, offset),\n\n  getStopIndexForStartIndex: (\n    props: Props<any>,\n    startIndex: number,\n    scrollOffset: number,\n    instanceProps: InstanceProps\n  ): number => {\n    const { direction, height, itemCount, layout, width } = props;\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const size = (((isHorizontal ? width : height): any): number);\n    const itemMetadata = getItemMetadata(props, startIndex, instanceProps);\n    const maxOffset = scrollOffset + size;\n\n    let offset = itemMetadata.offset + itemMetadata.size;\n    let stopIndex = startIndex;\n\n    while (stopIndex < itemCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata(props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n\n  initInstanceProps(props: Props<any>, instance: any): InstanceProps {\n    const { estimatedItemSize } = ((props: any): VariableSizeProps);\n\n    const instanceProps = {\n      itemMetadataMap: {},\n      estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE,\n      lastMeasuredIndex: -1,\n    };\n\n    instance.resetAfterIndex = (\n      index: number,\n      shouldForceUpdate?: boolean = true\n    ) => {\n      instanceProps.lastMeasuredIndex = Math.min(\n        instanceProps.lastMeasuredIndex,\n        index - 1\n      );\n\n      // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n\n  shouldResetStyleCacheOnItemSizeChange: false,\n\n  validateProps: ({ itemSize }: Props<any>): void => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'function') {\n        throw Error(\n          'An invalid \"itemSize\" prop has been specified. ' +\n            'Value should be a function. ' +\n            `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n        );\n      }\n    }\n  },\n});\n\nexport default VariableSizeList;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport React from 'react';\nimport { VariableSizeList } from 'react-window';\nimport Tree, { createTreeComputer } from './Tree';\nimport { createBasicRecord, getIdByIndex } from './utils';\nvar computeTree = createTreeComputer({\n  createRecord: function createRecord(data, _ref, parent, previousRecord) {\n    var recomputeTree = _ref.recomputeTree,\n        resetAfterId = _ref.resetAfterId;\n    var record = createBasicRecord({\n      data: data,\n      height: previousRecord ? previousRecord.public.height : data.defaultHeight,\n      isOpen: previousRecord ? previousRecord.public.isOpen : data.isOpenByDefault,\n      resize: function resize(height, shouldForceUpdate) {\n        record.public.height = height;\n        resetAfterId(record.public.data.id, shouldForceUpdate);\n      },\n      setOpen: function setOpen(state) {\n        var _recomputeTree;\n\n        return recomputeTree((_recomputeTree = {}, _recomputeTree[data.id] = state, _recomputeTree));\n      }\n    }, parent);\n    return record;\n  }\n});\nexport var VariableSizeTree = /*#__PURE__*/function (_Tree) {\n  _inheritsLoose(VariableSizeTree, _Tree);\n\n  function VariableSizeTree(props, context) {\n    var _this;\n\n    _this = _Tree.call(this, props, context) || this;\n    _this.getItemSize = _this.getItemSize.bind(_assertThisInitialized(_this));\n    _this.state = _extends({}, _this.state, {\n      computeTree: computeTree,\n      resetAfterId: _this.resetAfterId.bind(_assertThisInitialized(_this))\n    });\n    return _this;\n  }\n\n  var _proto = VariableSizeTree.prototype;\n\n  _proto.resetAfterId = function resetAfterId(id, shouldForceUpdate) {\n    var _list$current;\n\n    if (shouldForceUpdate === void 0) {\n      shouldForceUpdate = false;\n    }\n\n    var _this$state = this.state,\n        list = _this$state.list,\n        order = _this$state.order;\n    (_list$current = list.current) == null ? void 0 : _list$current.resetAfterIndex(order.indexOf(id), shouldForceUpdate);\n  };\n\n  _proto.recomputeTree = function recomputeTree(state) {\n    var _this2 = this;\n\n    return _Tree.prototype.recomputeTree.call(this, state).then(function () {\n      var _this2$state$list$cur;\n\n      (_this2$state$list$cur = _this2.state.list.current) == null ? void 0 : _this2$state$list$cur.resetAfterIndex(0, true);\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        placeholder = _this$props.placeholder,\n        itemSize = _this$props.itemSize,\n        rowComponent = _this$props.rowComponent,\n        treeWalker = _this$props.treeWalker,\n        rest = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"placeholder\", \"itemSize\", \"rowComponent\", \"treeWalker\"]);\n\n    var _this$state2 = this.state,\n        attachRefs = _this$state2.attachRefs,\n        order = _this$state2.order;\n    return placeholder && order.length === 0 ? placeholder : /*#__PURE__*/React.createElement(VariableSizeList, Object.assign({}, rest, {\n      itemCount: order.length,\n      itemData: this.getItemData() // eslint-disable-next-line @typescript-eslint/unbound-method\n      ,\n      itemKey: getIdByIndex // eslint-disable-next-line @typescript-eslint/unbound-method\n      ,\n      itemSize: itemSize != null ? itemSize : this.getItemSize // eslint-disable-next-line @typescript-eslint/unbound-method\n      ,\n      ref: attachRefs\n    }), rowComponent);\n  };\n\n  _proto.getItemSize = function getItemSize(index) {\n    return this.getRecordData(index).height;\n  };\n\n  return VariableSizeTree;\n}(Tree);"],"names":["d","BadgeRoot","styled","name","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","padding","height","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","map","style","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","className","classes","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass","FabRoot","shouldForwardProp","prop","size","colorInherit","button","minHeight","short","width","fab","boxShadow","shadows","text","primary","getContrastText","grey","A100","textDecoration","focusVisible","dark","disabled","action","disabledBackground","disableFocusRipple","focusVisibleClassName","composedClasses","focusRipple","getFabUtilityClass","windowObject","window","self","g","cancelFrame","requestFrame","clearTimeoutFn","clearTimeout","setTimeoutFn","setTimeout","cancelAnimationFrameFn","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","callback","animationFrameID","timeoutID","AutoSizer","Component","constructor","args","super","this","state","defaultHeight","scaledHeight","scaledWidth","defaultWidth","_autoSizer","_detectElementResize","_parentNode","_resizeObserver","_timeoutId","_onResize","disableHeight","disableWidth","onResize","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","rect","getBoundingClientRect","offsetHeight","offsetWidth","setState","_setRef","autoSizer","componentDidMount","nonce","parentNode","ownerDocument","defaultView","HTMLElement","ResizeObserverInstance","ResizeObserver","observe","animationKeyframes","animationName","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","attachEvent","document","element","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","scrollTop","scrollHeight","__resizeLast__","e","target","indexOf","__resizeRAF__","__resizeListeners__","forEach","fn","call","animation","keyframeprefix","domPrefixes","split","startEvents","pfx","elm","createElement","i","length","toLowerCase","addResizeListener","doc","elementStyle","getElementById","css","head","getElementsByTagName","id","type","setAttribute","styleSheet","cssText","appendChild","createTextNode","createStyles","expandTrigger","contractTrigger","addEventListener","__animationListener__","push","removeResizeListener","detachEvent","splice","removeEventListener","removeChild","createDetectElementResize","componentWillUnmount","disconnect","render","doNotBailOutOnEmptyChildren","tagName","rest","outerStyle","overflow","childParams","bailoutOnChildren","noop","createBasicRecord","pub","parent","child","isShown","public","isOpen","sibling","visited","index","_ref","getRecordData","data","createTreeComputer","creatorOptions","options","refresh","_ref2","_ref3","createRecord","buildingTaskTimeout","placeholder","_ref3$async","async","treeWalker","shouldPreservePreviousState","records","previousRecords","order","Map","requestIdleCallbackOptions","timeout","meta","WeakMap","iter","next","value","rootRecord","get","set","currentRecord","isTraversingRoot","tempRecord","useIdleCallback","hasTime","deadline","timeRemaining","task","requestIdleCallback","childRecord","updateRequest","generateNewTree","_ref4","_ref5","opennessState","has","opts","ownerRecord","_ref6","open","_ref6$subtreeCallback","subtreeCallback","update","apply","recordNextToSubtree","countToRemove","orderParts","record","currentOrderPart","MAX_FUNCTION_ARGUMENTS","_ref7","count","updateExistingTree","_PureComponent","Tree","context","_this","bind","list","createRef","recomputeTree","getDerivedStateFromProps","refs","_props$listRef","listRef","computeTree","oldTreeWalker","attachRefs","current","_proto","prototype","getItemData","_this$props","treeData","itemData","_this$state","_this2","Promise","resolve","prevState","scrollTo","scrollOffset","_this$state$list$curr","scrollToItem","align","_this$state$list$curr2","PureComponent","defaultProps","rowComponent","_ref$data","Node","isScrolling","assign","previousRecord","isOpenByDefault","setOpen","_recomputeTree","safeIsNaN","isNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","arguments","now","performance","Date","cancelTimeout","getScrollbarSize","recalculate","div","body","clientWidth","cachedRTLResult","getRTLOffsetType","outerDiv","direction","innerDiv","innerStyle","defaultItemKey","createListComponent","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","instance","scrollDirection","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","memoizeOne","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","onScroll","_getItemStyle","itemSize","layout","itemStyleCache","_getItemStyleCache","hasOwnProperty","offset","isHorizontal","isRtl","offsetHorizontal","_","__","___","_onScrollHorizontal","event","currentTarget","Math","min","_resetIsScrollingDebounced","_onScrollVertical","clientHeight","_outerRefSetter","outerRef","delay","start","_resetIsScrolling","tick","nextProps","validateSharedProps","itemCount","scrollbarSize","_callPropsCallbacks","componentDidUpdate","innerRef","innerElementType","innerTagName","itemKey","outerElementType","outerTagName","useIsScrolling","_getRangeToRender","startIndex","stopIndex","items","key","estimatedTotalSize","WebkitOverflowScrolling","willChange","pointerEvents","overscanCount","overscanBackward","overscanForward","getItemMetadata","instanceProps","itemMetadataMap","lastMeasuredIndex","itemMetadata","findNearestItemBinarySearch","high","low","middle","floor","currentOffset","estimatedItemSize","totalSizeOfMeasuredItems","VariableSizeList","maxOffset","minOffset","round","interval","findNearestItemExponentialSearch","findNearestItem","resetAfterIndex","shouldForceUpdate","forceUpdate","resetAfterId","resize","VariableSizeTree","_Tree","_list$current","then","_this2$state$list$cur","_this$state2"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1752.a727a500.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1752],{31752:(e,t,a)=>{a.d(t,{drawDotplot:()=>u});var o=a(68584),r=a(95095),s=a(36422),n=a(82727),f=a(49823);const{parseCigar:c}=n.aF,l="fell outside of range due to CIGAR string",i="(less than min coordinate of feature)",d="(greater than max coordinate of feature)",g=1;function h(e,t,a,o=1){e.beginPath(),e.arc(t,a,o/2,0,2*Math.PI),e.fill()}async function u(e,t){const{config:a,views:n,height:u,drawCigar:m,theme:p}=t,b=(0,o.readConfObject)(a,"color"),$=(0,o.readConfObject)(a,"posColor"),k=(0,o.readConfObject)(a,"negColor"),C=(0,o.readConfObject)(a,"colorBy"),w=(0,o.readConfObject)(a,"lineWidth"),P=(0,o.readConfObject)(a,"thresholds"),B=(0,o.readConfObject)(a,"thresholdsPalette"),y=a.color.isCallback,N=n[0],j=n[1],v=N.dynamicBlocks.contentBlocks[0]?.offsetPx,x=j.dynamicBlocks.contentBlocks[0]?.offsetPx,O=[];e.lineWidth=w;const{bpPerPx:T}=N,{bpPerPx:M}=j;function I(e,t,a,o){const r=o.get("strand")||1;if(-1===r&&([a,t]=[t,a]),e<t-g){let e=o.get("start"),a=o.get("end");const s=o.get("refName");return-1===r&&([a,e]=[e,a]),O.push({message:`feature at (X ${s}:${e}-${a}) ${l} ${i}`,effect:"clipped the feature"}),t}if(e>a+g){const e=o.get("strand")||1,t=1===e?o.get("start"):o.get("end"),r=1===e?o.get("end"):o.get("start"),s=o.get("refName");return O.push({message:`feature at (X ${s}:${t}-${r}) ${l} ${d}`,effect:"clipped the feature"}),a}return e}function S(e,t,a,o){if(e<t-g){const e=o.get("mate"),{refName:a,start:r,end:s}=e;return O.push({message:`feature at (Y ${a}:${r}-${s}) ${l} ${i}`,effect:"clipped the feature"}),t}if(e>a+g){const e=o.get("mate"),{refName:t,start:r,end:s}=e;return O.push({message:`feature at (Y ${t}:${r}-${s}) ${l} ${d}`,effect:"clipped the feature"}),a}return e}const X={...(0,s.getSnapshot)(N),staticBlocks:N.staticBlocks,width:N.width},_={...(0,s.getSnapshot)(j),staticBlocks:j.staticBlocks,width:j.width},Q=(0,f.createJBrowseTheme)(p);for(const t of N.features||[]){const s=t.get("strand")||1,n=1===s?t.get("start"):t.get("end"),f=1===s?t.get("end"):t.get("start"),l=t.get("refName"),i=t.get("mate"),d=i.refName;let g="black";if("identity"===C){const e=t.get("identity");for(let t=0;t<P.length;t++)if(e>+P[t]){g=B[t]||"black";break}}else"meanQueryIdentity"===C?g=`hsl(${200*t.get("meanScore")},100%,40%)`:"mappingQuality"===C?g=`hsl(${t.get("mappingQual")},100%,40%)`:"strand"===C?g=-1===s?k:$:"default"===C&&(g=y?(0,o.readConfObject)(a,"color",{feature:t}):"#f0f"===b?Q.palette.text.primary:b);e.fillStyle=g,e.strokeStyle=g;const p=(0,r.eB)({self:X,refName:l,coord:n}),N=(0,r.eB)({self:X,refName:l,coord:f}),j=(0,r.eB)({self:_,refName:d,coord:i.start}),Y=(0,r.eB)({self:_,refName:d,coord:i.end});if(void 0!==p&&void 0!==N&&void 0!==j&&void 0!==Y){const a=p.offsetPx-v,o=N.offsetPx-v,r=j.offsetPx-x,n=Y.offsetPx-x;if(Math.abs(a-o)<=4&&Math.abs(r-n)<=4)h(e,a,u-r,w);else{let f=a,l=r;const i=t.get("CIGAR");if(m&&i){const d=c(i);e.beginPath(),e.moveTo(f,u-l);let g=f,h=f;for(let c=0;c<d.length;c+=2){const i=+d[c],m=d[c+1];"M"===m||"="===m||"X"===m?(f+=i/T*s,l+=i/M):"D"===m||"N"===m?f+=i/T*s:"I"===m&&(l+=i/M),f=I(f,a,o,t),l=S(l,r,n,t),(Math.abs(f-g)>.5||Math.abs(l-h)>.5)&&(e.lineTo(f,u-l),g=f,h=l)}e.stroke()}else e.beginPath(),e.moveTo(a,u-r),e.lineTo(o,u-n),e.stroke()}}else O.length<=5&&(void 0===p||void 0===N?O.push({message:`feature at (X ${l}:${n}-${f}) not plotted, fell outside of range`,effect:"feature not rendered"}):O.push({message:`feature at (Y ${d}:${i.start}-${i.end}) not plotted, fell outside of range`,effect:"feature not rendered"}))}return{warnings:O}}}}]);
+//# sourceMappingURL=1752.a727a500.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1752.a727a500.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1752.a727a500.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotRenderer/drawDotplot.ts"],"sourcesContent":["import {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\nimport { bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { RenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/ComparativeServerSideRendererType'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\n\n// locals\nimport { Dotplot1DViewModel } from '../DotplotView/model'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\n\nconst { parseCigar } = MismatchParser\n\nexport interface DotplotRenderArgsDeserialized extends RenderArgsDeserialized {\n  adapterConfig: AnyConfigurationModel\n  height: number\n  width: number\n  highResolutionScaling: number\n  view: {\n    hview: Dotplot1DViewModel\n    vview: Dotplot1DViewModel\n  }\n}\n\nconst r = 'fell outside of range due to CIGAR string'\nconst lt = '(less than min coordinate of feature)'\nconst gt = '(greater than max coordinate of feature)'\nconst fudgeFactor = 1 // allow 1px fuzzyness before warn\n\nfunction drawCir(ctx: CanvasRenderingContext2D, x: number, y: number, r = 1) {\n  ctx.beginPath()\n  ctx.arc(x, y, r / 2, 0, 2 * Math.PI)\n  ctx.fill()\n}\n\nexport async function drawDotplot(\n  ctx: CanvasRenderingContext2D,\n  props: DotplotRenderArgsDeserialized & { views: Dotplot1DViewModel[] },\n) {\n  const { config, views, height, drawCigar, theme } = props\n  const color = readConfObject(config, 'color')\n  const posColor = readConfObject(config, 'posColor')\n  const negColor = readConfObject(config, 'negColor')\n  const colorBy = readConfObject(config, 'colorBy')\n  const lineWidth = readConfObject(config, 'lineWidth')\n  const thresholds = readConfObject(config, 'thresholds')\n  const palette = readConfObject(config, 'thresholdsPalette') as string[]\n  const isCallback = config.color.isCallback\n  const hview = views[0]!\n  const vview = views[1]!\n  const db1 = hview.dynamicBlocks.contentBlocks[0]?.offsetPx\n  const db2 = vview.dynamicBlocks.contentBlocks[0]?.offsetPx\n  const warnings = [] as { message: string; effect: string }[]\n  ctx.lineWidth = lineWidth\n\n  // we operate on snapshots of these attributes of the hview/vview because\n  // it is significantly faster than accessing the mobx objects\n  const { bpPerPx: hBpPerPx } = hview\n  const { bpPerPx: vBpPerPx } = vview\n\n  function clampWithWarnX(\n    num: number,\n    min: number,\n    max: number,\n    feature: Feature,\n  ) {\n    const strand = feature.get('strand') || 1\n    if (strand === -1) {\n      ;[max, min] = [min, max]\n    }\n    if (num < min - fudgeFactor) {\n      let start = feature.get('start')\n      let end = feature.get('end')\n      const refName = feature.get('refName')\n      if (strand === -1) {\n        ;[end, start] = [start, end]\n      }\n\n      warnings.push({\n        message: `feature at (X ${refName}:${start}-${end}) ${r} ${lt}`,\n        effect: 'clipped the feature',\n      })\n      return min\n    }\n    if (num > max + fudgeFactor) {\n      const strand = feature.get('strand') || 1\n      const start = strand === 1 ? feature.get('start') : feature.get('end')\n      const end = strand === 1 ? feature.get('end') : feature.get('start')\n      const refName = feature.get('refName')\n\n      warnings.push({\n        message: `feature at (X ${refName}:${start}-${end}) ${r} ${gt}`,\n        effect: 'clipped the feature',\n      })\n      return max\n    }\n    return num\n  }\n\n  function clampWithWarnY(\n    num: number,\n    min: number,\n    max: number,\n    feature: Feature,\n  ) {\n    if (num < min - fudgeFactor) {\n      const mate = feature.get('mate')\n      const { refName, start, end } = mate\n      warnings.push({\n        message: `feature at (Y ${refName}:${start}-${end}) ${r} ${lt}`,\n        effect: 'clipped the feature',\n      })\n      return min\n    }\n    if (num > max + fudgeFactor) {\n      const mate = feature.get('mate')\n      const { refName, start, end } = mate\n\n      warnings.push({\n        message: `feature at (Y ${refName}:${start}-${end}) ${r} ${gt}`,\n        effect: 'clipped the feature',\n      })\n      return max\n    }\n    return num\n  }\n\n  const hsnap = {\n    ...getSnapshot(hview),\n    staticBlocks: hview.staticBlocks,\n    width: hview.width,\n  }\n  const vsnap = {\n    ...getSnapshot(vview),\n    staticBlocks: vview.staticBlocks,\n    width: vview.width,\n  }\n  const t = createJBrowseTheme(theme)\n  for (const feature of hview.features || []) {\n    const strand = feature.get('strand') || 1\n    const start = strand === 1 ? feature.get('start') : feature.get('end')\n    const end = strand === 1 ? feature.get('end') : feature.get('start')\n    const refName = feature.get('refName')\n    const mate = feature.get('mate')\n    const mateRef = mate.refName\n\n    let r = 'black'\n    if (colorBy === 'identity') {\n      const identity = feature.get('identity')\n      for (let i = 0; i < thresholds.length; i++) {\n        if (identity > +thresholds[i]) {\n          r = palette[i] || 'black'\n          break\n        }\n      }\n    } else if (colorBy === 'meanQueryIdentity') {\n      r = `hsl(${feature.get('meanScore') * 200},100%,40%)`\n    } else if (colorBy === 'mappingQuality') {\n      r = `hsl(${feature.get('mappingQual')},100%,40%)`\n    } else if (colorBy === 'strand') {\n      r = strand === -1 ? negColor : posColor\n    } else if (colorBy === 'default') {\n      r = isCallback\n        ? readConfObject(config, 'color', { feature })\n        : color === '#f0f'\n          ? t.palette.text.primary\n          : color\n    }\n    ctx.fillStyle = r\n    ctx.strokeStyle = r\n\n    const b10 = bpToPx({ self: hsnap, refName, coord: start })\n    const b20 = bpToPx({ self: hsnap, refName, coord: end })\n    const e10 = bpToPx({ self: vsnap, refName: mateRef, coord: mate.start })\n    const e20 = bpToPx({ self: vsnap, refName: mateRef, coord: mate.end })\n    if (\n      b10 !== undefined &&\n      b20 !== undefined &&\n      e10 !== undefined &&\n      e20 !== undefined\n    ) {\n      const b1 = b10.offsetPx - db1!\n      const b2 = b20.offsetPx - db1!\n      const e1 = e10.offsetPx - db2!\n      const e2 = e20.offsetPx - db2!\n      if (Math.abs(b1 - b2) <= 4 && Math.abs(e1 - e2) <= 4) {\n        drawCir(ctx, b1, height - e1, lineWidth)\n      } else {\n        let currX = b1\n        let currY = e1\n        const cigar = feature.get('CIGAR')\n        if (drawCigar && cigar) {\n          const cigarOps = parseCigar(cigar)\n\n          ctx.beginPath()\n          ctx.moveTo(currX, height - currY)\n\n          let lastDrawnX = currX\n          let lastDrawnY = currX\n          for (let i = 0; i < cigarOps.length; i += 2) {\n            const val = +cigarOps[i]!\n            const op = cigarOps[i + 1]!\n            if (op === 'M' || op === '=' || op === 'X') {\n              currX += (val / hBpPerPx) * strand\n              currY += val / vBpPerPx\n            } else if (op === 'D' || op === 'N') {\n              currX += (val / hBpPerPx) * strand\n            } else if (op === 'I') {\n              currY += val / vBpPerPx\n            }\n            currX = clampWithWarnX(currX, b1, b2, feature)\n            currY = clampWithWarnY(currY, e1, e2, feature)\n\n            // only draw a line segment if it is bigger than 0.5px\n            if (\n              Math.abs(currX - lastDrawnX) > 0.5 ||\n              Math.abs(currY - lastDrawnY) > 0.5\n            ) {\n              ctx.lineTo(currX, height - currY)\n              lastDrawnX = currX\n              lastDrawnY = currY\n            }\n          }\n\n          ctx.stroke()\n        } else {\n          ctx.beginPath()\n          ctx.moveTo(b1, height - e1)\n          ctx.lineTo(b2, height - e2)\n          ctx.stroke()\n        }\n      }\n    } else {\n      if (warnings.length <= 5) {\n        if (b10 === undefined || b20 === undefined) {\n          warnings.push({\n            message: `feature at (X ${refName}:${start}-${end}) not plotted, fell outside of range`,\n            effect: 'feature not rendered',\n          })\n        } else {\n          warnings.push({\n            message: `feature at (Y ${mateRef}:${mate.start}-${mate.end}) not plotted, fell outside of range`,\n            effect: 'feature not rendered',\n          })\n        }\n      }\n    }\n  }\n\n  return { warnings }\n}\n"],"names":["parseCigar","MismatchParser","r","lt","gt","fudgeFactor","drawCir","ctx","x","y","beginPath","arc","Math","PI","fill","async","drawDotplot","props","config","views","height","drawCigar","theme","color","readConfObject","posColor","negColor","colorBy","lineWidth","thresholds","palette","isCallback","hview","vview","db1","dynamicBlocks","contentBlocks","offsetPx","db2","warnings","bpPerPx","hBpPerPx","vBpPerPx","clampWithWarnX","num","min","max","feature","strand","get","start","end","refName","push","message","effect","clampWithWarnY","mate","hsnap","getSnapshot","staticBlocks","width","vsnap","t","createJBrowseTheme","features","mateRef","identity","i","length","text","primary","fillStyle","strokeStyle","b10","bpToPx","self","coord","b20","e10","e20","undefined","b1","b2","e1","e2","abs","currX","currY","cigar","cigarOps","moveTo","lastDrawnX","lastDrawnY","val","op","lineTo","stroke"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1757.a6d05bc3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1757],{61757:(e,s,t)=>{t.r(s),t.d(s,{default:()=>b.A,getListItemTextUtilityClass:()=>l.b,listItemTextClasses:()=>l.A});var b=t(81453),l=t(69285)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1811.7cfd8419.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1811],{71811:(e,l,t)=>{t.r(l),t.d(l,{default:()=>k});var n=t(7552),o=t(68446),a=t(29499),r=t(9937),c=t(58507),s=t(5401),i=t(49823);const k=(0,o.observer)((function({onClose:e,model:l}){const{selectedBookmarks:t}=l,o=0===t.length;return n.createElement(i.Dialog,{open:!0,onClose:e,title:"Delete bookmarks"},n.createElement(a.A,null,n.createElement(r.A,{severity:"warning"},o?n.createElement(n.Fragment,null,n.createElement("span",null,"All bookmarks will be deleted."),n.createElement("br",null),n.createElement("span",null,"Use the checkboxes to select individual bookmarks to delete.")):"Only selected bookmarks will be deleted.")),n.createElement(c.A,null,n.createElement(s.A,{variant:"contained",color:"secondary",onClick:()=>{e()}},"Cancel"),n.createElement(s.A,{variant:"contained",color:"primary",onClick:()=>{o&&l.clearAllBookmarks(),l.clearSelectedBookmarks(),e()}},"Confirm")))}))}}]);
+//# sourceMappingURL=1811.7cfd8419.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1811.7cfd8419.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1811.7cfd8419.chunk.js","mappings":"qOAQA,MAwDA,GAxD8BA,EAAAA,EAAAA,WAAS,UAAU,QAC/CC,EAAO,MACPC,IAKA,MAAM,kBAAEC,GAAsBD,EACxBE,EAAyC,IAA7BD,EAAkBE,OAEpC,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACP,QAASA,EAASQ,MAAM,oBACnCH,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAK,CAACC,SAAS,WACbR,EACCE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,YAAM,kCACNA,EAAAA,cAAA,WACAA,EAAAA,cAAA,YAAM,iEAKR,6CAINA,EAAAA,cAACO,EAAAA,EAAa,KACZP,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,YACNC,QAASA,KACPhB,GAAS,GAEZ,UAGDK,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,UACNC,QAASA,KACHb,GACFF,EAAMgB,oBAGRhB,EAAMiB,yBACNlB,GAAS,GAEZ,YAMT,G","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogContent, DialogActions, Alert } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\n\nconst DeleteBookmarksDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: GridBookmarkModel\n}) {\n  const { selectedBookmarks } = model\n  const deleteAll = selectedBookmarks.length === 0\n\n  return (\n    <Dialog open onClose={onClose} title=\"Delete bookmarks\">\n      <DialogContent>\n        <Alert severity=\"warning\">\n          {deleteAll ? (\n            <>\n              <span>All bookmarks will be deleted.</span>\n              <br />\n              <span>\n                Use the checkboxes to select individual bookmarks to delete.\n              </span>\n            </>\n          ) : (\n            'Only selected bookmarks will be deleted.'\n          )}\n        </Alert>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            onClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            if (deleteAll) {\n              model.clearAllBookmarks()\n            }\n\n            model.clearSelectedBookmarks()\n            onClose()\n          }}\n        >\n          Confirm\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default DeleteBookmarksDialog\n"],"names":["observer","onClose","model","selectedBookmarks","deleteAll","length","React","Dialog","open","title","DialogContent","Alert","severity","DialogActions","Button","variant","color","onClick","clearAllBookmarks","clearSelectedBookmarks"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1822.2cbe112a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1822],{31822:(e,a,t)=>{t.r(a),t.d(a,{default:()=>u});var s=t(46377),r=t(66885),i=t(99546),n=t(62718),o=t(34796);function c(e){const a=e.slice(e.lastIndexOf("/")+1);return a.slice(0,a.lastIndexOf("."))}class u extends s.BaseFeatureDataAdapter{static capabilities=["hasResolution","hasLocalStats","hasGlobalStats"];async getAdapters(){const e=this.getSubAdapter;if(!e)throw new Error("no getSubAdapter available");let a=this.getConf("subadapters");return a?.length||(a=this.getConf("bigWigs").map((e=>({type:"BigWigAdapter",source:c(e),bigWigLocation:{uri:e}})))),Promise.all(a.map((async a=>{const t=(await e(a)).dataAdapter;return{source:a.name||t.id,...a,dataAdapter:t}})))}async getRefNames(e){const a=await this.getAdapters(),t=await Promise.all(a.map((a=>a.dataAdapter.getRefNames(e))));return[...new Set(t.flat())]}async getGlobalStats(e){const a=await this.getAdapters(),t=(await Promise.all(a.map((a=>a.dataAdapter.getGlobalStats?.(e))))).filter((e=>!!e));return{scoreMin:(0,i.min)(t.map((e=>e.scoreMin))),scoreMax:(0,i.max)(t.map((e=>e.scoreMax)))}}getFeatures(e,a={}){return(0,r.ObservableCreate)((async t=>{const s=await this.getAdapters();(0,n.h)(...s.map((t=>t.dataAdapter.getFeatures(e,a).pipe((0,o.T)((e=>e.get("source")?e:new i.SimpleFeature({...e.toJSON(),uniqueId:`${t.source}-${e.id()}`,source:t.source}))))))).subscribe(t)}),a.signal)}async getMultiRegionFeatureDensityStats(e){return{featureDensity:0}}async getSources(){return(await this.getAdapters()).map((({dataAdapter:e,source:a,name:t,...s})=>({name:a,__name:t,...s})))}freeResources(){}}}}]);
+//# sourceMappingURL=1822.2cbe112a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1822.2cbe112a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/1822.2cbe112a.chunk.js","mappings":"kNAcA,SAASA,EAAYC,GACnB,MAAMC,EAAWD,EAAIE,MAAMF,EAAIG,YAAY,KAAO,GAClD,OAAOF,EAASC,MAAM,EAAGD,EAASE,YAAY,KAChD,CAUe,MAAMC,UAA2BC,EAAAA,uBAC9C,oBAA6B,CAC3B,gBACA,gBACA,kBAGF,iBAAaC,GACX,MAAMC,EAAgBC,KAAKD,cAC3B,IAAKA,EACH,MAAM,IAAIE,MAAM,8BAElB,IAAIC,EAAWF,KAAKG,QAAQ,eAY5B,OAXKD,GAAUE,SAEbF,EADgBF,KAAKG,QAAQ,WACVE,KAAIC,IAAS,CAC9BC,KAAM,gBACNC,OAAQjB,EAAYe,GACpBG,eAAgB,CACdjB,IAAKc,QAKJI,QAAQC,IACbT,EAASG,KAAIO,UACX,MAAMC,SAAqBd,EAAce,IACtCD,YACH,MAAO,CACLL,OAAQM,EAAKC,MAAQF,EAAYG,MAC9BF,EACHD,cACD,IAGP,CAGA,iBAAaI,CAAYC,GACvB,MAAMC,QAAiBnB,KAAKF,cACtBsB,QAAiBV,QAAQC,IAC7BQ,EAASd,KAAIgB,GAAKA,EAAER,YAAYI,YAAYC,MAE9C,MAAO,IAAI,IAAII,IAAIF,EAASG,QAC9B,CAEA,oBAAaC,CAAeN,GAC1B,MAAMC,QAAiBnB,KAAKF,cACtB2B,SACGf,QAAQC,IAEbQ,EAASd,KAAIqB,GAAOA,EAAIb,YAAYW,iBAAiBN,OAEvDS,QAAOC,KAAOA,IAGhB,MAAO,CAAEC,UAFQC,EAAAA,EAAAA,KAAIL,EAAMpB,KAAI0B,GAAKA,EAAEF,YAEnBG,UADFC,EAAAA,EAAAA,KAAIR,EAAMpB,KAAI0B,GAAKA,EAAEC,YAExC,CAEOE,WAAAA,CAAYC,EAAgBjB,EAAsB,CAAC,GACxD,OAAOkB,EAAAA,EAAAA,mBAA0BxB,UAC/B,MAAMO,QAAiBnB,KAAKF,eAC5BuC,EAAAA,EAAAA,MACKlB,EAASd,KAAIqB,GACdA,EAAIb,YAAYqB,YAAYC,EAAQjB,GAAMoB,MACxCjC,EAAAA,EAAAA,IAAIkC,GAEFA,EAAEC,IAAI,UACFD,EACA,IAAIE,EAAAA,cAAc,IACbF,EAAEG,SACLC,SAAU,GAAGjB,EAAIlB,UAAU+B,EAAEvB,OAC7BR,OAAQkB,EAAIlB,eAKxBoC,UAAUC,EAAS,GACpB3B,EAAK4B,OACV,CAGA,uCAAMC,CAAkCC,GACtC,MAAO,CAAEC,eAAgB,EAC3B,CAIA,gBAAMC,GAEJ,aADuBlD,KAAKF,eACZO,KAAI,EAAGQ,cAAaL,SAAQO,UAASoC,MAAW,CAC9DpC,KAAMP,EACN4C,OAAQrC,KACLoC,KAEP,CAEOE,aAAAA,GAAuB,E","sources":["../../../plugins/wiggle/src/MultiWiggleAdapter/MultiWiggleAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { SimpleFeature, Feature, min, max } from '@jbrowse/core/util'\nimport { merge } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\ninterface WiggleOptions extends BaseOptions {\n  resolution?: number\n}\n\nfunction getFilename(uri: string) {\n  const filename = uri.slice(uri.lastIndexOf('/') + 1)\n  return filename.slice(0, filename.lastIndexOf('.'))\n}\n\ninterface AdapterEntry {\n  dataAdapter: BaseFeatureDataAdapter\n  source: string\n  [key: string]: unknown\n}\n\ntype MaybeStats = { scoreMin: number; scoreMax: number } | undefined\n\nexport default class MultiWiggleAdapter extends BaseFeatureDataAdapter {\n  public static capabilities = [\n    'hasResolution',\n    'hasLocalStats',\n    'hasGlobalStats',\n  ]\n\n  public async getAdapters(): Promise<AdapterEntry[]> {\n    const getSubAdapter = this.getSubAdapter\n    if (!getSubAdapter) {\n      throw new Error('no getSubAdapter available')\n    }\n    let subConfs = this.getConf('subadapters')\n    if (!subConfs?.length) {\n      const entries = this.getConf('bigWigs') as string[]\n      subConfs = entries.map(entry => ({\n        type: 'BigWigAdapter',\n        source: getFilename(entry),\n        bigWigLocation: {\n          uri: entry,\n        },\n      }))\n    }\n\n    return Promise.all(\n      subConfs.map(async (conf: any) => {\n        const dataAdapter = (await getSubAdapter(conf))\n          .dataAdapter as BaseFeatureDataAdapter\n        return {\n          source: conf.name || dataAdapter.id,\n          ...conf,\n          dataAdapter,\n        }\n      }),\n    )\n  }\n\n  // note: can't really have dis-agreeing refNames\n  public async getRefNames(opts?: BaseOptions) {\n    const adapters = await this.getAdapters()\n    const allNames = await Promise.all(\n      adapters.map(a => a.dataAdapter.getRefNames(opts)),\n    )\n    return [...new Set(allNames.flat())]\n  }\n\n  public async getGlobalStats(opts?: BaseOptions) {\n    const adapters = await this.getAdapters()\n    const stats = (\n      (await Promise.all(\n        // @ts-expect-error\n        adapters.map(adp => adp.dataAdapter.getGlobalStats?.(opts)),\n      )) as MaybeStats[]\n    ).filter(f => !!f)\n    const scoreMin = min(stats.map(s => s.scoreMin))\n    const scoreMax = max(stats.map(s => s.scoreMax))\n    return { scoreMin, scoreMax }\n  }\n\n  public getFeatures(region: Region, opts: WiggleOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const adapters = await this.getAdapters()\n      merge(\n        ...adapters.map(adp =>\n          adp.dataAdapter.getFeatures(region, opts).pipe(\n            map(p =>\n              // add source field if it does not exist\n              p.get('source')\n                ? p\n                : new SimpleFeature({\n                    ...p.toJSON(),\n                    uniqueId: `${adp.source}-${p.id()}`,\n                    source: adp.source,\n                  }),\n            ),\n          ),\n        ),\n      ).subscribe(observer)\n    }, opts.signal)\n  }\n\n  // always render bigwig instead of calculating a feature density for it\n  async getMultiRegionFeatureDensityStats(_regions: Region[]) {\n    return { featureDensity: 0 }\n  }\n\n  // in another adapter type, this could be dynamic depending on region or\n  // something, but it is static for this particular multi-wiggle adapter type\n  async getSources() {\n    const adapters = await this.getAdapters()\n    return adapters.map(({ dataAdapter, source, name, ...rest }) => ({\n      name: source,\n      __name: name,\n      ...rest,\n    }))\n  }\n\n  public freeResources(): void {}\n}\n"],"names":["getFilename","uri","filename","slice","lastIndexOf","MultiWiggleAdapter","BaseFeatureDataAdapter","getAdapters","getSubAdapter","this","Error","subConfs","getConf","length","map","entry","type","source","bigWigLocation","Promise","all","async","dataAdapter","conf","name","id","getRefNames","opts","adapters","allNames","a","Set","flat","getGlobalStats","stats","adp","filter","f","scoreMin","min","s","scoreMax","max","getFeatures","region","ObservableCreate","merge","pipe","p","get","SimpleFeature","toJSON","uniqueId","subscribe","observer","signal","getMultiRegionFeatureDensityStats","_regions","featureDensity","getSources","rest","__name","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1824.c2ed4bca.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1824],{91824:(e,l,r)=>{r.r(l),r.d(l,{SliderMark:()=>a.d6,SliderMarkLabel:()=>a.xO,SliderRail:()=>a.Ww,SliderRoot:()=>a.g1,SliderThumb:()=>a.OQ,SliderTrack:()=>a.hB,SliderValueLabel:()=>a.nx,default:()=>a.Ay,getSliderUtilityClass:()=>i.W,sliderClasses:()=>i.A});var a=r(77005),i=r(19951)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1978.1faf7d31.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1978],{1978:(e,o,s)=>{s.r(o),s.d(o,{PopoverPaper:()=>t.IJ,PopoverRoot:()=>t.yt,default:()=>t.Ay,getOffsetLeft:()=>t.fB,getOffsetTop:()=>t.Dy,getPopoverUtilityClass:()=>p.K,popoverClasses:()=>p.A});var t=s(9555),p=s(51015)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1996.a37d9ec7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1996],{1996:(s,e,l)=>{l.r(e),l.d(e,{default:()=>t.A,getTooltipUtilityClass:()=>a.E,tooltipClasses:()=>a.A});var t=l(89003),a=l(23724)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/1999.2554e815.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[1999],{11999:(s,a,e)=>{e.r(a),e.d(a,{backdropClasses:()=>l.A,default:()=>b.A,getBackdropUtilityClass:()=>l.R});var b=e(19937),l=e(32049)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2018.9ce7fb06.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2018],{52018:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var l=a(7552),i=a(943),o=a(1343),n=a(5401),s=a(75785),r=a(99546),c=a(91468);const u=(0,s.n9)()((e=>({textbox:{width:"100%"},paper:{margin:e.spacing(),padding:e.spacing()},submit:{marginTop:25,marginBottom:100,display:"block"}})));function m({model:e}){const{classes:t}=u(),[a,s]=(0,l.useState)(""),[m,p]=(0,l.useState)("MultiWiggle"+ +Date.now());return l.createElement(i.A,{className:t.paper},l.createElement("ul",null,l.createElement("li",null,"Enter list of URLs for bigwig files in the textbox"),l.createElement("li",null,"Or, use the button below the text box to select files from your computer")),l.createElement(o.A,{multiline:!0,rows:10,value:a,onChange:e=>{s(e.target.value)},placeholder:"Paste list of URLs here, or use file selector below",variant:"outlined",className:t.textbox}),l.createElement(n.A,{variant:"outlined",component:"label"},"Choose Files from your computer",l.createElement("input",{type:"file",hidden:!0,multiple:!0,onChange:({target:e})=>{const t=[...e.files||[]].map((e=>({type:"BigWigAdapter",bigWigLocation:r.isElectron?{localPath:e.path,locationType:"LocalPathLocation"}:(0,c.storeBlobLocation)({blob:e}),source:e.name})));s(JSON.stringify(t,null,2))}})),l.createElement(o.A,{value:m,onChange:e=>{p(e.target.value)},helperText:"Track name"}),l.createElement(n.A,{variant:"contained",className:t.submit,onClick:()=>{const t=(0,r.getSession)(e),l=[`${m.toLowerCase().replaceAll(" ","_")}-${Date.now()}`,t.adminMode?"":"-sessionTrack"].join("");let i;try{i=JSON.parse(a)}catch(e){i=a.split(/\n|\r\n|\r/).map((e=>e.trim())).filter((e=>!!e))}const o="string"==typeof i[0]?{bigWigs:i}:{subadapters:i};(0,r.isSessionWithAddTracks)(t)&&(t.addTrackConf({trackId:l,type:"MultiQuantitativeTrack",name:m,assemblyNames:[e.assembly],adapter:{type:"MultiWiggleAdapter",...o}}),e.view?.showTrack(l)),e.clearData(),(0,r.isSessionModelWithWidgets)(t)&&t.hideWidget(e)}},"Submit"),l.createElement("p",null,"Additional notes: "),l.createElement("ul",null,l.createElement("li",null,"The list of bigwig files in the text box can be a list of URLs, or a list of elements like"," ",l.createElement("code",null,'[{"type":"BigWigAdapter","bigWigLocation":{"uri":"http://host/file.bw"}, "color":"green","source":"name for subtrack"}]')," ","to apply e.g. the color attribute to the view"),l.createElement("li",null,'Adding local files will update the textbox with JSON contents that are ready to submit with the "Submit" button')))}}}]);
+//# sourceMappingURL=2018.9ce7fb06.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2018.9ce7fb06.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2018.9ce7fb06.chunk.js","mappings":"mOAYA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,QAAS,CACPC,MAAO,QAETC,MAAO,CACLC,OAAQJ,EAAMK,UACdC,QAASN,EAAMK,WAEjBE,OAAQ,CACNC,UAAW,GACXC,aAAc,IACdC,QAAS,aAIE,SAASC,GAAkB,MAAEC,IAC1C,MAAM,QAAEC,GAAYf,KACbgB,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,KACxBC,EAAWC,IAAgBF,EAAAA,EAAAA,UAAS,gBAAeG,KAAKC,OAC/D,OACEC,EAAAA,cAACC,EAAAA,EAAK,CAACC,UAAWV,EAAQV,OACxBkB,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,sDACJA,EAAAA,cAAA,UAAI,6EAMNA,EAAAA,cAACG,EAAAA,EAAS,CACRC,WAAS,EACTC,KAAM,GACNC,MAAOb,EACPc,SAAUC,IACRd,EAAOc,EAAMC,OAAOH,MAAM,EAE5BI,YAAa,sDACbC,QAAQ,WACRT,UAAWV,EAAQZ,UAGrBoB,EAAAA,cAACY,EAAAA,EAAM,CAACD,QAAQ,WAAWE,UAAU,SAAQ,kCAE3Cb,EAAAA,cAAA,SACEc,KAAK,OACLC,QAAM,EACNC,UAAQ,EACRT,SAAUA,EAAGE,aACX,MAAMQ,EAAM,IAAKR,EAAOS,OAAS,IAAKC,KAAIC,IAAQ,CAChDN,KAAM,gBACNO,eAAgBC,EAAAA,WACZ,CACEC,UAAYH,EAAiCI,KAC7CC,aAAc,sBAEhBC,EAAAA,EAAAA,mBAAkB,CAAEC,KAAMP,IAC9BQ,OAAQR,EAAKS,SAEfnC,EAAOoC,KAAKC,UAAUd,EAAK,KAAM,GAAG,KAI1CjB,EAAAA,cAACG,EAAAA,EAAS,CACRG,MAAOV,EACPW,SAAUC,IACRX,EAAaW,EAAMC,OAAOH,MAAM,EAElC0B,WAAW,eAEbhC,EAAAA,cAACY,EAAAA,EAAM,CACLD,QAAQ,YACRT,UAAWV,EAAQN,OACnB+C,QAASA,KACP,MAAMC,GAAUC,EAAAA,EAAAA,YAAW5C,GAErB6C,EAAU,CACd,GAAGxC,EAAUyC,cAAcC,WAAW,IAAK,QAAQxC,KAAKC,QACxDmC,EAAQK,UAAY,GAAK,iBACzBC,KAAK,IAGP,IAAIC,EACJ,IACEA,EAAUX,KAAKY,MAAMjD,EACvB,CAAE,MAAOkD,GACPF,EAAUhD,EACPmD,MAAM,cACNzB,KAAI0B,GAAKA,EAAEC,SACXC,QAAOF,KAAOA,GACnB,CACA,MAAMG,EACkB,iBAAfP,EAAQ,GACX,CAAEA,WACF,CAAEQ,YAAaR,IAEjBS,EAAAA,EAAAA,wBAAuBhB,KACzBA,EAAQiB,aAAa,CACnBf,UACAtB,KAAM,yBACNe,KAAMjC,EACNwD,cAAe,CAAC7D,EAAM8D,UACtBC,QAAS,CACPxC,KAAM,wBACHkC,KAIPzD,EAAMgE,MAAMC,UAAUpB,IAExB7C,EAAMkE,aACFC,EAAAA,EAAAA,2BAA0BxB,IAC5BA,EAAQyB,WAAWpE,EACrB,GAEH,UAIDS,EAAAA,cAAA,SAAG,sBACHA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,6FAEoB,IACtBA,EAAAA,cAAA,YAAO,2HAAkI,IAAI,iDAG/IA,EAAAA,cAAA,UAAI,oHAOZ,C","sources":["../../../plugins/wiggle/src/MultiWiggleAddTrackWorkflow/AddTrackWorkflow.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Button, Paper, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  getSession,\n  isElectron,\n  isSessionModelWithWidgets,\n  isSessionWithAddTracks,\n} from '@jbrowse/core/util'\nimport { storeBlobLocation } from '@jbrowse/core/util/tracks'\nimport { AddTrackModel } from '@jbrowse/plugin-data-management'\n\nconst useStyles = makeStyles()(theme => ({\n  textbox: {\n    width: '100%',\n  },\n  paper: {\n    margin: theme.spacing(),\n    padding: theme.spacing(),\n  },\n  submit: {\n    marginTop: 25,\n    marginBottom: 100,\n    display: 'block',\n  },\n}))\n\nexport default function MultiWiggleWidget({ model }: { model: AddTrackModel }) {\n  const { classes } = useStyles()\n  const [val, setVal] = useState('')\n  const [trackName, setTrackName] = useState(`MultiWiggle${+Date.now()}`)\n  return (\n    <Paper className={classes.paper}>\n      <ul>\n        <li>Enter list of URLs for bigwig files in the textbox</li>\n        <li>\n          Or, use the button below the text box to select files from your\n          computer\n        </li>\n      </ul>\n\n      <TextField\n        multiline\n        rows={10}\n        value={val}\n        onChange={event => {\n          setVal(event.target.value)\n        }}\n        placeholder={'Paste list of URLs here, or use file selector below'}\n        variant=\"outlined\"\n        className={classes.textbox}\n      />\n\n      <Button variant=\"outlined\" component=\"label\">\n        Choose Files from your computer\n        <input\n          type=\"file\"\n          hidden\n          multiple\n          onChange={({ target }) => {\n            const res = [...(target.files || [])].map(file => ({\n              type: 'BigWigAdapter',\n              bigWigLocation: isElectron\n                ? {\n                    localPath: (file as File & { path: string }).path,\n                    locationType: 'LocalPathLocation',\n                  }\n                : storeBlobLocation({ blob: file }),\n              source: file.name,\n            }))\n            setVal(JSON.stringify(res, null, 2))\n          }}\n        />\n      </Button>\n      <TextField\n        value={trackName}\n        onChange={event => {\n          setTrackName(event.target.value)\n        }}\n        helperText=\"Track name\"\n      />\n      <Button\n        variant=\"contained\"\n        className={classes.submit}\n        onClick={() => {\n          const session = getSession(model)\n\n          const trackId = [\n            `${trackName.toLowerCase().replaceAll(' ', '_')}-${Date.now()}`,\n            session.adminMode ? '' : '-sessionTrack',\n          ].join('')\n\n          // allow list of bigwigs in JSON format or line-by-line\n          let bigWigs: unknown[]\n          try {\n            bigWigs = JSON.parse(val)\n          } catch (e) {\n            bigWigs = val\n              .split(/\\n|\\r\\n|\\r/)\n              .map(f => f.trim())\n              .filter(f => !!f)\n          }\n          const obj =\n            typeof bigWigs[0] === 'string'\n              ? { bigWigs }\n              : { subadapters: bigWigs }\n\n          if (isSessionWithAddTracks(session)) {\n            session.addTrackConf({\n              trackId,\n              type: 'MultiQuantitativeTrack',\n              name: trackName,\n              assemblyNames: [model.assembly],\n              adapter: {\n                type: 'MultiWiggleAdapter',\n                ...obj,\n              },\n            })\n\n            model.view?.showTrack(trackId)\n          }\n          model.clearData()\n          if (isSessionModelWithWidgets(session)) {\n            session.hideWidget(model)\n          }\n        }}\n      >\n        Submit\n      </Button>\n\n      <p>Additional notes: </p>\n      <ul>\n        <li>\n          The list of bigwig files in the text box can be a list of URLs, or a\n          list of elements like{' '}\n          <code>{`[{\"type\":\"BigWigAdapter\",\"bigWigLocation\":{\"uri\":\"http://host/file.bw\"}, \"color\":\"green\",\"source\":\"name for subtrack\"}]`}</code>{' '}\n          to apply e.g. the color attribute to the view\n        </li>\n        <li>\n          Adding local files will update the textbox with JSON contents that are\n          ready to submit with the \"Submit\" button\n        </li>\n      </ul>\n    </Paper>\n  )\n}\n"],"names":["useStyles","makeStyles","theme","textbox","width","paper","margin","spacing","padding","submit","marginTop","marginBottom","display","MultiWiggleWidget","model","classes","val","setVal","useState","trackName","setTrackName","Date","now","React","Paper","className","TextField","multiline","rows","value","onChange","event","target","placeholder","variant","Button","component","type","hidden","multiple","res","files","map","file","bigWigLocation","isElectron","localPath","path","locationType","storeBlobLocation","blob","source","name","JSON","stringify","helperText","onClick","session","getSession","trackId","toLowerCase","replaceAll","adminMode","join","bigWigs","parse","e","split","f","trim","filter","obj","subadapters","isSessionWithAddTracks","addTrackConf","assemblyNames","assembly","adapter","view","showTrack","clearData","isSessionModelWithWidgets","hideWidget"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2047.b1e80504.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(()=>{var e,t,n,r,o={68584:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ConfigurationReference:()=>r.A,ConfigurationSchema:()=>r.S,getConf:()=>o.FI,getTypeNamesFromExplicitlyTypedUnion:()=>o.JC,isBareConfigurationSchemaType:()=>o.C$,isConfigurationModel:()=>o.wo,isConfigurationSchemaType:()=>o.oG,isConfigurationSlotType:()=>o.Rg,readConfObject:()=>o.QZ});var r=n(42498),o=n(35254)},3496:(e,t,n)=>{"use strict";n.d(t,{cK:()=>a,pZ:()=>i});var r=n(26257);let o={};async function a(e,t,n){const i=function(e={}){return`${(0,r.A)(e)}`}(n);if(!o[i]){const r=n?.type;if(!r)throw new Error(`could not determine adapter type from adapter config snapshot ${JSON.stringify(n)}`);const s=e.getAdapterType(r);if(!s)throw new Error(`unknown data adapter type ${r}`);const c=s.configSchema.create(n,{pluginManager:e}),l=a.bind(null,e,t),u=new(await s.getAdapterClass())(c,l,e);o[i]={dataAdapter:u,sessionIds:new Set([t])}}const s=o[i];return s.sessionIds.add(t),s}function i(e){let t=0;const n=Object.keys(e);if(1===n.length&&"sessionId"===n[0]){const{sessionId:n}=e;Object.entries(o).forEach((([e,r])=>{r.sessionIds.delete(n),0===r.sessionIds.size&&(t+=1,delete o[e])}))}else Object.values(o).forEach((t=>{const n=e.regions||(e.region?[e.region]:[]);for(const e of n)void 0!==e.refName&&t.dataAdapter.freeResources(e)}));return t}},24388:(e,t,n)=>{"use strict";function r(e){return"object"==typeof e&&null!==e&&"abortSignalId"in e&&"number"==typeof e.abortSignalId}n.d(t,{IY:()=>s,SF:()=>a,bw:()=>r}),new WeakMap;const o=new Map;function a({abortSignalId:e}){let t=o.get(e);return t||(t=new AbortController,o.set(e,t)),t.signal}function i(e){const{signalId:t}=e,n=o.get(t);n&&n.abort()}function s(){return{signalAbort:i}}},85206:(e,t,n)=>{"use strict";n.d(t,{A:()=>C});var r=n(7552),o=n(29629),a=n(66765),i=n(81453),s=n(2051),c=n(24387),l=n(55851),u=n(8463),d=n(45266),f=n(63672),m=n(68850);function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(null,arguments)}const h=r.createContext({parentPopupState:null,rootPopupState:null});function b({onClick:e,closeAfterItemClick:t,...n}){const{rootPopupState:a}=(0,r.useContext)(h);if(!a)throw new Error("must be used inside a CascadingMenu");return r.createElement(o.A,p({},n,{onClick:n=>{t&&a.close(),e?.(n)}}))}function g({title:e,Icon:t,inset:n,popupId:s,...c}){const{parentPopupState:l}=(0,r.useContext)(h),u=(0,d.T6)({popupId:s,variant:"popover",parentPopupState:l});return r.createElement(r.Fragment,null,r.createElement(o.A,p({},(0,d._k)(u),(0,d.oe)(u)),t?r.createElement(a.A,null,r.createElement(t,null)):null,r.createElement(i.A,{primary:e,inset:n}),r.createElement(m.A,null)),r.createElement(y,p({},c,{anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"left"},popupState:u})))}function y({popupState:e,onMenuItemClick:t,menuItems:n,classes:o,...a}){const{rootPopupState:i}=(0,r.useContext)(h),s=(0,r.useMemo)((()=>({rootPopupState:i||e,parentPopupState:e})),[i,e]);return r.createElement(h.Provider,{value:s},r.createElement(f.A,p({},a,(0,d.NA)(e))))}function v({popupState:e,onMenuItemClick:t,menuItems:n,...o}){const{rootPopupState:a}=(0,r.useContext)(h),i=(0,r.useMemo)((()=>({rootPopupState:a||e,parentPopupState:e})),[a,e]);return r.createElement(h.Provider,{value:i},r.createElement(s.A,p({},o,(0,d.NA)(e))))}function A({item:e}){return"subMenu"in e?r.createElement(u.m,{type:"subMenu"}):"checkbox"===e.type||"radio"===e.type?r.createElement(u.m,{type:e.type,checked:e.checked,disabled:e.disabled}):null}function E({onMenuItemClick:e,closeAfterItemClick:t,menuItems:n,...o}){const s=n.some((e=>"icon"in e&&e.icon));return r.createElement(r.Fragment,null,n.sort(((e,t)=>(t.priority||0)-(e.priority||0))).map(((n,u)=>{return"subMenu"in n?r.createElement(g,{key:`subMenu-${n.label}-${u}`,popupId:`subMenu-${n.label}`,title:n.label,Icon:n.icon,inset:s&&!n.icon,onMenuItemClick:e,menuItems:n.subMenu},r.createElement(E,p({},o,{closeAfterItemClick:t,onMenuItemClick:e,menuItems:n.subMenu}))):"divider"===n.type?r.createElement(c.A,{key:`divider-${JSON.stringify(n)}-${u}`,component:"li"}):"subHeader"===n.type?r.createElement(l.A,{key:`subHeader-${n.label}-${u}`},n.label):r.createElement(b,{key:`${n.label}-${u}`,closeAfterItemClick:t,onClick:"onClick"in n?(d=n.onClick,t=>{e(t,d)}):void 0,disabled:Boolean(n.disabled)},n.icon?r.createElement(a.A,null,r.createElement(n.icon,null)):null," ",r.createElement(i.A,{primary:n.label,secondary:n.subLabel,inset:s&&!n.icon}),r.createElement("div",{style:{flexGrow:1,minWidth:10}}),r.createElement(A,{item:n}));var d})))}const C=function(e){const{closeAfterItemClick:t=!0,...n}=e;return r.createElement(v,n,r.createElement(E,p({},n,{closeAfterItemClick:t})))}},92562:(e,t,n)=>{"use strict";n.d(t,{A:()=>A});var r=n(7552),o=n(48231),a=n(40985),i=n(2187),s=n(43163),c=n(61723),l=n(24387),u=n(20139),d=n(89022),f=n(68446),m=n(75785),p=n(82725),h=n(30157),b=n(38033),g=n(13476);const y=(0,m.n9)()((e=>({closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}})));function v({error:e}){return r.createElement("div",{style:{width:800,margin:40}},r.createElement(b.A,{error:e}))}const A=(0,f.observer)((function(e){const{classes:t}=y(),{title:n,header:f,children:m,onClose:b}=e,A=(0,o.A)();return r.createElement(a.A,e,r.createElement(i.A,null,r.isValidElement(f)?f:r.createElement(s.A,null,r.createElement(g.A,{html:n||""}),b?r.createElement(c.A,{className:t.closeButton,onClick:()=>{b()}},r.createElement(h.A,null)):null),r.createElement(l.A,null),r.createElement(p.tH,{FallbackComponent:v},r.createElement(u.A,{theme:(0,d.A)(A,{components:{MuiInputBase:{styleOverrides:{input:{boxSizing:"content-box!important"}}}}})},m))))}))},88373:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(7552),o=n(48231),a=n(36715),i=n(98879),s=n(75785),c=n(40085);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}const u=(0,s.n9)()((e=>({input:{},inputBase:{},typography:{top:6,left:2,position:"absolute",whiteSpace:"nowrap",visibility:"hidden"},inputRoot:{padding:e.spacing(.5)},inputFocused:{borderStyle:"solid",borderWidth:2}}))),d=r.forwardRef((function(e,t){const{value:n,setValue:s,variant:d,...f}=e,[m,{width:p}]=(0,c.A)(),[h,b]=(0,r.useState)(),[g,y]=(0,r.useState)(null),[v,A]=(0,r.useState)(!1);(0,r.useEffect)((()=>{v&&(g?.blur(),A(!1))}),[v,g]);const{classes:E}=u(e,{props:e}),C=(0,o.A)(),w=void 0===h?n:h;return r.createElement("div",l({},f,{ref:t}),r.createElement("div",{style:{position:"relative"}},r.createElement(a.A,{ref:m,component:"span",variant:d,className:E.typography},w)),r.createElement(i.Ay,{inputRef:e=>{y(e)},className:E.inputBase,inputProps:{style:{width:p,...d&&"inherit"!==d?C.typography[d]:{}}},classes:{input:E.input,root:E.inputRoot,focused:E.inputFocused},value:w,onChange:e=>{b(e.target.value)},onKeyDown:e=>{"Enter"===e.key?g?.blur():"Escape"===e.key&&(b(void 0),A(!0))},onBlur:()=>{s(h||n||""),b(void 0)}}))}))},38033:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(7552),o=n(89003),a=n(61723),i=n(75785),s=n(21311),c=n(4902),l=n(71627);const u=(0,r.lazy)((()=>Promise.all([n.e(9245),n.e(4630)]).then(n.bind(n,74630)))),d=(0,i.n9)()((e=>({bg:{background:e.palette.divider,border:"1px solid black",margin:20},iconFloat:{float:"right",marginLeft:100}})));function f({error:e,onReset:t}){const{classes:n}=d(),[i,s]=(0,r.useState)(!1);return r.createElement("div",{className:n.iconFloat},"object"==typeof e&&e&&"stack"in e?r.createElement(o.A,{title:"Get stack trace"},r.createElement(a.A,{onClick:()=>{s(!0)},color:"primary"},r.createElement(l.A,null))):null,t?r.createElement(o.A,{title:"Retry"},r.createElement(a.A,{onClick:t,color:"primary"},r.createElement(c.A,null))):null,i?r.createElement(r.Suspense,{fallback:null},r.createElement(u,{error:e,onClose:()=>{s(!1)}})):null)}const m=function({error:e,onReset:t}){const{classes:n}=d(),o=`${e}`,a=o.indexOf("expected an instance of"),i=-1!==a?o.slice(0,a):o,c=function(e){let t="";const n=e.indexOf("is not assignable");if(-1!==n){const r=e.slice(0,n+17),o=/.*at path "(.*)" snapshot `(.*)` is not assignable/m.exec(r);o&&(e=`Failed to load element at ${o[1]}...Failed element had snapshot`,t=o[2]);const a=/.*snapshot `(.*)` is not assignable/.exec(r);a&&(e="Failed to load element...Failed element had snapshot",t=a[1])}return t}(o);return r.createElement(s.A,null,i.slice(0,1e4),r.createElement(f,{error:e,onReset:t}),c?r.createElement("pre",{className:n.bg},JSON.stringify(JSON.parse(c),null,2)):null)}},69941:(e,t,n)=>{"use strict";n.d(t,{default:()=>l});var r=n(7552),o=n(29499),a=n(99123),i=n(58507),s=n(5401),c=n(92562);function l({onClose:e,open:t,onFactoryReset:n}){function l(t){"reset"===t&&n(),e()}return r.createElement(c.A,{title:"Reset",onClose:()=>{l()},open:t},r.createElement(o.A,null,r.createElement(a.A,null,"Are you sure you want to reset? This will restore the default configuration.")),r.createElement(i.A,null,r.createElement(s.A,{onClick:()=>{l()},color:"primary"},"Cancel"),r.createElement(s.A,{onClick:()=>{l("reset")},color:"primary",variant:"contained"},"OK")))}},90542:(e,t,n)=>{"use strict";n.d(t,{PM:()=>a,jT:()=>i,xU:()=>s});var r=n(2859),o=n(7552);function a(e){return o.createElement(r.A,e,o.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function i(e){return o.createElement(r.A,e,o.createElement("path",{d:"M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z"}))}function s(e){return o.createElement(r.A,e,o.createElement("path",{d:"M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z"}))}},34895:(e,t,n)=>{"use strict";n.d(t,{P:()=>i,R:()=>a});var r=n(7552);function o(e){return"black"===e?{midnight:"#808080",forrest:"#666666",grape:"#4d4d4d",mandarin:"#333333",gray:"#1a1a1a"}:"white"===e?{midnight:"#ffffff",forrest:"#e6e6e6",grape:"#cccccc",mandarin:"#b3b3b3",gray:"#999999"}:{midnight:"#0d233f",forrest:"#135560",grape:"#721e63",mandarin:"#ffb11d",gray:"#dadada"}}function a({variant:e}){return r.createElement("svg",{viewBox:"0 0 175 175"},r.createElement(s,{variant:e}))}function i({variant:e}){return r.createElement("svg",{viewBox:"0 0 641 175"},r.createElement(c,{variant:e}),r.createElement(s,{variant:e}))}function s({variant:e}){const t=o(e);return r.createElement(r.Fragment,null,r.createElement("path",{style:{fill:t.midnight},d:"M120.5,57.5c.168,0,.333.012.5.013V40.506c-.167,0-.333-.006-.5-.006a98.325,98.325,0,0,0-77.4,37.565q-2.664,3.378-5.023,6.994l14.206,9.327Q54.043,91.709,56,89.179A81.363,81.363,0,0,1,120.5,57.5Z"}),r.createElement("path",{style:{fill:t.forrest},d:"M148.668,86.223c.308.133.6.283.908.42l6.746-15.618c-.153-.067-.3-.143-.454-.21a81.36,81.36,0,0,0-71.777,3.5q-2.8,1.544-5.469,3.309l9.249,14.054A63.93,63.93,0,0,1,148.668,86.223Z"}),r.createElement("path",{style:{fill:t.grape},d:"M170.894,109.37A63.929,63.929,0,0,0,113.4,88.861l2.336,15.474a48.456,48.456,0,0,1,44.322,15.42c.111.125.214.255.324.381l11.16-10C171.323,109.879,171.118,109.62,170.894,109.37Z"}),r.createElement("path",{style:{fill:t.mandarin},d:"M150.921,150.314c.04.163.07.326.107.489l16.509-4.058c-.039-.163-.067-.326-.107-.489A48.457,48.457,0,0,0,135.575,111.8l-5.515,15.591A32.466,32.466,0,0,1,150.921,150.314Z"}),r.createElement("path",{style:{fill:t.gray},d:"M134.1,138.129l-9.779,13.213a32.486,32.486,0,0,1,7.823,14.463l15.147.852c.012-.166.032-.331.041-.5A32.464,32.464,0,0,0,134.1,138.129Z"}))}function c({variant:e}){const t=o(e);return r.createElement("g",{"aria-label":"JBrowse",transform:"translate(213.084 144.241)",style:{fill:t.midnight}},r.createElement("path",{d:"m 26.355,-71.505 v 54.075 2.835 q 0,6.825 -0.42,10.185 -0.735,5.67 -2.835,9.135 -3.255,5.355 -8.505,8.4 -4.83,2.73 -11.55,3.57 L 1.47,11.76 Q 7.35,10.185 9.24,4.2 10.605,-0.105 10.605,-9.975 v -5.565 -55.965 q 1.785,0 4.62,0.315 2.835,0.21 3.255,0.21 1.785,0 2.94,-0.105 4.515,-0.42 4.935,-0.42 z"}),r.createElement("path",{d:"m 60.68836,-65.415 v 24.78 h 3.255 q 2.94,0 4.935,-0.525 2.1,-0.525 3.885,-2.1 2.31,-1.995 3.36,-4.83 1.155,-2.835 1.155,-6.09 0,-5.565 -2.94,-8.61 -2.94,-3.045 -8.295,-3.045 -2.52,0 -5.355,0.42 z m 0,30.87 V -6.09 h 5.25 q 4.725,0 8.505,-3.675 3.885,-3.78 3.885,-10.08 0,-8.19 -4.62,-11.655 -4.095,-3.045 -13.02,-3.045 z M 44.93836,0 v -71.505 h 27.09 q 9.135,0 14.385,3.255 6.51,3.99 6.51,12.6 0,7.035 -5.25,11.655 -4.62,4.095 -11.97,5.145 v 0.945 q 7.56,0.735 12.285,3.99 6.615,4.62 6.615,13.335 0,10.185 -7.98,15.75 -6.93,4.83 -17.43,4.83 z"}),r.createElement("path",{d:"M 109.44281,0.525 V -50.4 q 1.785,0.21 3.99,0.42 2.31,0.105 3.255,0.105 2.31,0 4.2,-0.21 1.89,-0.21 3.045,-0.315 v 13.02 q 1.89,-6.51 5.46,-9.87 4.41,-4.095 11.655,-4.095 -0.315,2.73 -0.42,6.825 -0.105,3.99 -0.105,7.455 l -0.945,0.84 q -0.945,-0.735 -2.415,-1.05 -1.47,-0.315 -2.94,-0.315 -3.57,0 -6.195,1.89 -2.52,1.785 -3.465,5.04 -0.42,1.155 -0.525,3.15 -0.105,1.89 -0.105,4.515 v 4.515 19.005 q -1.785,-0.21 -2.625,-0.21 -3.675,-0.315 -4.62,-0.315 -2.31,0 -4.2,0.21 -1.89,0.21 -3.045,0.315 z"}),r.createElement("path",{d:"m 173.77337,1.47 q -11.655,0 -18.585,-6.825 -6.93,-6.825 -6.93,-18.48 0,-12.6 6.72,-20.055 6.825,-7.455 18.9,-7.455 11.97,0 18.9,6.72 6.93,6.72 6.93,18.48 0,12.285 -6.72,19.74 -7.14,7.875 -19.215,7.875 z m 0.735,-48.09 q -5.88,0 -8.505,6.51 -2.205,5.565 -2.205,15.96 0,8.19 1.47,12.915 2.415,7.98 8.505,7.98 5.565,0 8.19,-7.875 2.205,-6.51 2.205,-16.695 0,-8.505 -2.1,-13.23 -2.52,-5.565 -7.56,-5.565 z"}),r.createElement("path",{d:"m 222.03563,-50.4 10.5,36.015 q 3.675,-11.235 5.67,-17.85 2.415,-8.085 5.04,-18.165 1.05,0.105 3.045,0.315 2.1,0.21 2.835,0.21 1.995,0 3.15,-0.105 1.26,-0.21 2.73,-0.42 l 10.71,36.015 q 5.88,-17.43 10.71,-36.015 l 4.2,0.315 4.095,-0.315 q -5.145,13.125 -9.135,24.57 -5.04,14.28 -8.505,26.355 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.205,-0.105 -1.89,0 -3.36,0.21 -1.365,0.21 -2.31,0.315 l -10.605,-34.755 q -4.41,13.65 -6.72,21.105 -2.31,7.35 -4.095,13.65 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.31,-0.105 -1.995,0 -3.465,0.21 -1.365,0.21 -2.31,0.315 -3.78,-12.81 -5.04,-17.01 -2.205,-7.245 -5.46,-17.01 -2.835,-8.4 -5.88,-16.905 1.575,0 4.305,0.315 2.73,0.21 3.36,0.21 1.47,0 4.305,-0.21 2.835,-0.315 3.465,-0.315 z"}),r.createElement("path",{d:"m 292.84172,-12.81 h 2.625 q 1.47,4.095 4.62,6.51 3.15,2.415 7.35,2.415 2.94,0 5.46,-1.785 2.625,-1.89 2.625,-4.62 0,-3.885 -6.195,-6.615 -10.395,-4.62 -11.655,-5.46 -6.405,-4.515 -6.405,-12.285 0,-7.77 5.25,-12.18 5.25,-4.515 12.81,-4.515 3.99,0 8.085,1.365 4.095,1.26 7.14,3.57 l -2.52,9.24 h -2.94 q -0.63,-3.57 -3.57,-6.195 -2.835,-2.625 -6.405,-2.625 -3.15,0 -5.46,1.575 -2.31,1.47 -2.31,4.515 0,3.885 6.405,6.51 10.185,4.095 11.865,5.25 6.405,4.41 6.405,12.81 0,7.455 -5.46,12.18 -5.355,4.62 -14.805,4.62 -8.19,0 -14.49,-4.305 z"}),r.createElement("path",{d:"m 349.61228,-29.925 h 15.54 q 0,-6.51 -1.05,-10.395 -1.68,-6.3 -5.88,-6.3 -5.04,0 -7.14,6.195 -1.47,4.305 -1.47,10.5 z m 30.03,5.04 h -30.03 q 0,9.135 3.045,13.86 3.57,5.67 11.55,5.67 3.255,0 6.405,-1.26 3.15,-1.26 5.88,-3.465 l 1.26,0.945 -2.31,5.88 q -6.72,4.725 -15.015,4.725 -12.915,0 -19.635,-7.245 -6.72,-7.245 -6.72,-20.37 0,-11.235 6.405,-18.165 6.51,-7.035 17.64,-7.035 11.655,0 16.905,7.56 4.62,6.615 4.62,18.9 z"}))}},8463:(e,t,n)=>{"use strict";n.d(t,{A:()=>M,m:()=>C});var r=n(7552),o=n(6679),a=n(24387),i=n(55851),s=n(66765),c=n(29629),l=n(81453),u=n(4407),d=n(943),f=n(9555),m=n(75785),p=n(12756),h=n(49296),b=n(23224),g=n(69381),y=n(70996),v=n(99546);function A(){return A=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},A.apply(null,arguments)}const E=(0,m.n9)()({paper:{position:"fixed",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",top:0,left:0,outline:0},menuItemEndDecoration:{padding:0,margin:0,height:16}});function C(e){const{classes:t}=E(),{type:n}=e;let o,a,i;switch("checked"in e&&({checked:o,disabled:a}=e),n){case"subMenu":i=r.createElement(p.A,{color:"action"});break;case"checkbox":if(o){const e=a?"inherit":void 0;i=r.createElement(h.A,{color:e})}else i=r.createElement(b.A,{color:"action"});break;case"radio":if(o){const e=a?"inherit":void 0;i=r.createElement(g.A,{color:e})}else i=r.createElement(y.A,{color:"action"})}return r.createElement("div",{className:t.menuItemEndDecoration},i)}function w(e){return"divider"!==e.type&&"subHeader"!==e.type&&!e.disabled}const S=r.forwardRef((function(e,t){const[n,f]=(0,r.useState)(),[m,p]=(0,r.useState)(),[h,b]=(0,r.useState)(!1),[g,y]=(0,r.useState)(),[A,M]=(0,r.useState)(),T=(0,r.useRef)(null),{classes:k}=E(),{menuItems:x,onMenuItemClick:I,open:P,onClose:N,anchorEl:O,top:L=!1}=e;(0,r.useEffect)((()=>{P||(f(void 0),p(void 0))}),[P]),(0,r.useEffect)((()=>{const e=P&&Boolean(n);let t;return e&&!h?t=setTimeout((()=>{b(!0)}),300):!e&&h&&(t=setTimeout((()=>{b(!1)}),300)),()=>{clearTimeout(t)}}),[h,P,n]),(0,r.useEffect)((()=>{if(O){const e=O.getBoundingClientRect();A&&e.top===A.top&&e.left+e.width===A.left||M({top:e.top,left:e.left+e.width})}else A||M({})}),[A,O]);const R=x.some((e=>"icon"in e&&e.icon)),F={},$=r.createElement(r.Fragment,null,r.createElement(o.A,{autoFocusItem:P&&!h,dense:!0},x.sort(((e,t)=>(t.priority||0)-(e.priority||0))).map(((e,t)=>{if("divider"===e.type)return r.createElement(a.A,{key:`divider-${JSON.stringify(e)}-${t}`,component:"li"});if("subHeader"===e.type)return r.createElement(i.A,{key:`subHeader-${e.label}-${t}`},e.label);let n=null,o=null;if(e.icon){const t=e.icon;n=r.createElement(s.A,null,r.createElement(t,null))}"subMenu"in e?o=r.createElement(C,{type:"subMenu"}):"checkbox"!==e.type&&"radio"!==e.type||(o=r.createElement(C,{type:e.type,checked:e.checked,disabled:e.disabled}));const u="onClick"in e?(d=e.onClick,e=>{I(e,d)}):void 0;var d;return r.createElement(c.A,{key:e.id||String(e.label),style:F,selected:t===g,onClick:u,onMouseMove:n=>{n.currentTarget!==document.activeElement&&(n.currentTarget.focus(),y(t)),"subMenu"in e?m!==t&&(f(n.currentTarget),p(t)):(f(void 0),p(void 0))},onKeyDown:n=>{switch(n.key){case"ArrowLeft":case"Escape":N?.(n,"escapeKeyDown");break;case"ArrowUp":y(function(e,t){return(0,v.findLastIndex)(e.slice(0,t),w)}(x,t));break;case"ArrowDown":{const e=function(e,t){const n=e.slice(t+1).findIndex(w);return-1===n?n:t+1+n}(x,t);y(e);break}default:!("subMenu"in e)||"ArrowRight"!==n.key&&"Enter"!==n.key||(f(n.currentTarget),p(t),b(!0))}},disabled:Boolean(e.disabled)},n,r.createElement(l.A,{primary:e.label,secondary:e.subLabel,inset:R&&!e.icon}),o)}))),x.map(((e,t)=>{let o=null;return"subMenu"in e&&(o=r.createElement(S,{key:e.id||String(e.label),anchorEl:n,open:h&&m===t,onClose:()=>{b(!1),f(void 0)},onMenuItemClick:I,menuItems:e.subMenu})),o})));return L?$:r.createElement(u.A,{in:P,style:{transformOrigin:"0 0 0"},ref:t},r.createElement(d.A,{elevation:8,ref:T,className:k.paper,style:{...A}},$))})),M=function(e){const{open:t,onClose:n,menuItems:o,onMenuItemClick:a,...i}=e;return r.createElement(f.Ay,A({open:t,onClose:n,anchorOrigin:{vertical:"bottom",horizontal:"right",...i.anchorOrigin},transformOrigin:{vertical:"top",horizontal:"left",...i.transformOrigin}},i),r.createElement(S,{open:t,onClose:n,menuItems:o,onMenuItemClick:a,top:!0}))}},66684:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(7552);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(null,arguments)}const a=(0,n(75785).n9)()({horizontalHandle:{cursor:"row-resize",width:"100%"},verticalHandle:{cursor:"col-resize",height:"100%"},flexbox_verticalHandle:{cursor:"col-resize",alignSelf:"stretch"},flexbox_horizontalHandle:{cursor:"row-resize",alignSelf:"stretch"}}),i=function({onDrag:e,vertical:t=!1,flexbox:n=!1,className:i,onMouseDown:s,...c}){const[l,u]=(0,r.useState)(!1),d=(0,r.useRef)(0),f=(0,r.useRef)(0),{classes:m,cx:p}=a();let h;return(0,r.useEffect)((()=>{function n(n){n.preventDefault();const r=t?n.clientX:n.clientY,o=d.current-r,a=r-f.current;f.current=r,e(a,o)}function r(){u(!1)}return l?(window.addEventListener("mousemove",n,!0),window.addEventListener("mouseup",r,!0),()=>{window.removeEventListener("mousemove",n,!0),window.removeEventListener("mouseup",r,!0)}):()=>{}}),[l,e,t]),h=n?t?m.flexbox_verticalHandle:m.flexbox_horizontalHandle:t?m.verticalHandle:m.horizontalHandle,r.createElement("div",o({"data-resizer":"true",onMouseDown:e=>{e.preventDefault();const n=t?e.clientX:e.clientY;d.current=n,f.current=n,u(!0),s?.(e)},className:p(h,i)},c))}},87686:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(7552),o=n(68446),a=n(29499),i=n(36715),s=n(58507),c=n(5401),l=n(92562);const u=(0,o.observer)((function({model:e,handleClose:t}){return r.createElement(l.A,{maxWidth:"xl",open:!0,onClose:t,title:"Reference sequence"},r.createElement(a.A,null,r.createElement(i.A,null,"Are you sure you want to return to the import form? This will lose your current view")),r.createElement(s.A,null,r.createElement(c.A,{onClick:()=>{e.clearView(),t()},variant:"contained",color:"primary",autoFocus:!0},"OK"),r.createElement(c.A,{onClick:()=>{t()},color:"secondary",variant:"contained"},"Cancel")))}))},13476:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(7552),o=n(10424),a=n.n(o),i=n(53778),s=n.n(i),c=n(99546);let l=!1;const u=new RegExp(["a","b","br","code","div","em","h1","h2","h3","h4","h5","h6","i","img","li","p","pre","span","small","strong","table","tbody","sup","sub","td","tfoot","th","thead","tr","u","ul"].map((e=>`<${e}\\b[^>]*>`)).join("|"),"i");function d({html:e,className:t}){const n=(0,c.linkify)(e),o=(i=n,u.test(i)?n:a()(n));var i;return l||(l=!0,s().addHook("afterSanitizeAttributes",(e=>{"A"===e.tagName&&(e.setAttribute("rel","noopener noreferrer"),e.setAttribute("target","_blank"))}))),r.createElement("span",{className:t,dangerouslySetInnerHTML:{__html:s().sanitize(o)}})}},49823:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AssemblySelector:()=>z,CascadingMenu:()=>G.A,Dialog:()=>_.A,EditableTypography:()=>j.A,ErrorMessage:()=>D.A,FactoryResetDialog:()=>U.default,FatalErrorDialog:()=>H.A,FileSelector:()=>oe,LoadingEllipses:()=>ae.A,LogoFull:()=>k.P,Logomark:()=>k.R,Menu:()=>ie.A,MenuItemEndDecoration:()=>ie.m,PrerenderedCanvas:()=>ce,ResizeHandle:()=>ue.A,ReturnToImportFormDialog:()=>le.default,SanitizedHTML:()=>de.A,createJBrowseBaseTheme:()=>S,createJBrowseTheme:()=>M,defaultThemes:()=>C});var r=n(53954),o=n(46033),a=n(37231),i=n(8998),s=n(55194),c=n(89022),l=n(35068),u=n.n(l);const d=(0,c.A)(),f="#0D233F",m="#721E63",p=d.palette.augmentColor({color:{main:"#135560"}}),h=d.palette.augmentColor({color:{main:"#FFB11D"}}),b={A:d.palette.augmentColor({color:r.A}),C:d.palette.augmentColor({color:o.A}),G:d.palette.augmentColor({color:a.A}),T:d.palette.augmentColor({color:i.A})},g=[null,d.palette.augmentColor({color:{main:"#FF8080"}}),d.palette.augmentColor({color:{main:"#80FF80"}}),d.palette.augmentColor({color:{main:"#8080FF"}}),d.palette.augmentColor({color:{main:"#8080FF"}}),d.palette.augmentColor({color:{main:"#80FF80"}}),d.palette.augmentColor({color:{main:"#FF8080"}})],y=[null,d.palette.augmentColor({color:{main:"#8f8f8f"}}),d.palette.augmentColor({color:{main:"#adadad"}}),d.palette.augmentColor({color:{main:"#d8d8d8"}}),d.palette.augmentColor({color:{main:"#d8d8d8"}}),d.palette.augmentColor({color:{main:"#adadad"}}),d.palette.augmentColor({color:{main:"#8f8f8f"}})],v="#e22",A="#3e3";function E(){return{palette:{mode:void 0,primary:{main:f},secondary:{main:m},tertiary:p,quaternary:h,highlight:h,stopCodon:v,startCodon:A,bases:b,frames:y,framesCDS:g},components:{MuiLink:{styleOverrides:{root:({theme:e})=>({color:e.palette.tertiary.main})}}}}}const C={default:{...E(),name:"Default (from config)"},lightStock:{...E(),name:"Light (stock)"},lightMinimal:{name:"Light (minimal)",palette:{primary:{main:s.A[900]},secondary:{main:s.A[800]},tertiary:d.palette.augmentColor({color:{main:s.A[900]}}),quaternary:h,highlight:h,stopCodon:v,startCodon:A,bases:b,frames:y,framesCDS:g}},darkMinimal:{name:"Dark (minimal)",palette:{mode:"dark",primary:{main:s.A[700]},secondary:{main:s.A[800]},tertiary:d.palette.augmentColor({color:{main:s.A[900]}}),quaternary:h,highlight:h,stopCodon:v,startCodon:A,bases:b,frames:y,framesCDS:g}},darkStock:{name:"Dark (stock)",palette:{mode:"dark",primary:{main:f},secondary:{main:m},tertiary:p,quaternary:h,highlight:h,stopCodon:v,startCodon:A,bases:b,frames:y,framesCDS:g},components:{MuiAppBar:{defaultProps:{enableColorOnDark:!0},styleOverrides:{root:({theme:e})=>e.palette.primary.main}}}}};function w(e,t){return t}function S(e){const t={palette:e?.palette,typography:{fontSize:12},spacing:4,components:{MuiButton:{defaultProps:{size:"small"},styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.primary}:void 0}},MuiAccordion:{defaultProps:{disableGutters:!0,slotProps:{transition:{timeout:150,unmountOnExit:!0}}}},MuiFilledInput:{defaultProps:{margin:"dense"}},MuiFormControl:{defaultProps:{margin:"dense",size:"small"}},MuiFormHelperText:{defaultProps:{margin:"dense"}},MuiIconButton:{defaultProps:{size:"small"}},MuiInputBase:{defaultProps:{margin:"dense"}},MuiAutocomplete:{defaultProps:{size:"small"}},MuiInputLabel:{defaultProps:{margin:"dense"}},MuiToolbar:{defaultProps:{variant:"dense"}},MuiListItem:{defaultProps:{dense:!0}},MuiOutlinedInput:{defaultProps:{margin:"dense"}},MuiFab:{defaultProps:{size:"small"},styleOverrides:{secondary:{backgroundColor:e?.palette?.quaternary?.main}}},MuiTable:{defaultProps:{size:"small"}},MuiPopover:{defaultProps:{transitionDuration:0}},MuiMenu:{defaultProps:{transitionDuration:0}},MuiMenuItem:{defaultProps:{dense:!0}},MuiTextField:{defaultProps:{margin:"dense",variant:"standard"}},MuiLink:{styleOverrides:{root:({theme:e})=>({color:e.palette.text.secondary})}},MuiCheckbox:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-checked":{color:e.palette.text.secondary}}:void 0}},MuiRadio:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-checked":{color:e.palette.text.secondary}}:void 0}},MuiFormLabel:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-focused":{color:e.palette.text.secondary}}:void 0}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:e?.palette?.tertiary?.main},content:{color:e?.palette?.tertiary?.contrastText}}},MuiToggleButtonGroup:{defaultProps:{size:"small"}}}};return u()(t,e||{},{arrayMerge:w})}function M(e={},t=C,n="default"){return(0,c.A)(S("default"===n?u()(t.default,T(e),{arrayMerge:w}):function(e={}){return e=T(e),e.palette?.quaternary||(e=u()(e,{palette:{quaternary:d.palette.augmentColor({color:{main:"#aaa"}})}})),e.palette?.tertiary||(e=u()(e,{palette:{tertiary:d.palette.augmentColor({color:{main:"#aaa"}})}})),e}(t[n])))}function T(e={}){return e.palette?.tertiary&&(e=u()(e,{palette:{tertiary:d.palette.augmentColor("color"in e.palette.tertiary?e.palette.tertiary:{color:e.palette.tertiary})}})),e.palette?.quaternary&&(e=u()(e,{palette:{quaternary:d.palette.augmentColor("color"in e.palette.quaternary?e.palette.quaternary:{color:e.palette.quaternary})}})),e}var k=n(34895),x=n(7552),I=n(1343),P=n(29629),N=n(68446),O=n(75785),L=n(68584),R=n(99546);function F(){return F=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},F.apply(null,arguments)}const $=(0,O.n9)()({importFormEntry:{minWidth:180}}),z=(0,N.observer)((function({session:e,onChange:t,selected:n,InputProps:r,TextFieldProps:o,localStorageKey:a,helperText:i="Select assembly to view"}){const{classes:s}=$(),{assemblyNames:c,assemblyManager:l}=e,u=new URLSearchParams(window.location.search).get("config"),[d,f]="undefined"==typeof jest&&a?(0,R.useLocalStorage)(`lastAssembly-${[window.location.host+window.location.pathname,u,a].join("-")}`,n):(0,x.useState)(n),m=c.includes(d||"")?d:n;(0,x.useEffect)((()=>{m&&m!==n&&t(m)}),[m,t,n]);const p=c.length?"":"No configured assemblies";return x.createElement(I.A,F({select:!0,label:"Assembly",variant:"outlined",helperText:p||i,value:m||"",inputProps:{"data-testid":"assembly-selector"},onChange:e=>{f(e.target.value)},error:!!p,InputProps:r,disabled:!!p,className:s.importFormEntry},o),c.map((e=>{const t=l.get(e),n=t?(0,L.getConf)(t,"displayName"):"";return x.createElement(P.A,{key:e,value:e},n||e)})))}));var G=n(85206),_=n(92562),j=n(88373),D=n(38033),U=n(69941),H=n(56174),B=n(89003),q=n(82620),V=n(17776),J=n(17125),W=n(43787),K=n(2051),Y=n(25467),Z=n(92516),Q=n(43550),X=n(14862),ee=n(32813);function te(){return te=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},te.apply(null,arguments)}function ne(e){const{title:t,children:n,...r}=e;return x.createElement(B.A,{title:t||""},x.createElement(q.A,r,n))}function re(e,t){return"string"==typeof e&&e.length>t?`${e.slice(0,Math.max(0,t))}…`:e}const oe=(0,N.observer)((function(e){const{location:t,name:n,description:r,rootModel:o,setLocation:a}=e,i=!t||(0,Z.C1)(t)?"url":"file",[s,c]=(0,x.useState)(t&&"internetAccountId"in t&&t.internetAccountId?t.internetAccountId:i),l=(0,Z.bV)(o)?o.internetAccounts.filter((e=>"HTTPBasicInternetAccount"!==e.type)):[],[u,d]=(0,R.useLocalStorage)("fileSelector-recentlyUsedInternetAccounts",[]),f=Object.fromEntries(l.map((e=>[e.internetAccountId,e]))),m=[...new Set(l.map((e=>e.internetAccountId)))].sort(((e,t)=>u.indexOf(e)-u.indexOf(t))),p=m.slice(0,2),h=m.slice(2),[b,g]=(0,x.useState)(null),y=f[s],v=(0,x.useCallback)((e=>{a({...e,...y&&(0,Z.C1)(e)?{internetAccountId:y.internetAccountId}:{}})}),[a,y]);(0,x.useEffect)((()=>{y&&(0,Z.C1)(t)&&t.internetAccountId!==y.internetAccountId&&v(t)}),[t,y,v]);let A=x.createElement(X.A,te({},e,{setLocation:v,label:y?.selectorLabel}));if("file"===s&&(A=x.createElement(Q.A,e)),y?.SelectorComponent){const{SelectorComponent:t}=y;A=x.createElement(t,te({},e,{setLocation:v}))}return x.createElement(x.Fragment,null,x.createElement(V.A,{display:"flex"},x.createElement(J.A,{shrink:!0},n)),x.createElement(V.A,{display:"flex",flexDirection:"row"},x.createElement(V.A,null,x.createElement(W.A,{value:s,exclusive:!0,onChange:(e,n)=>{d([...new Set([n,...u].filter(R.notEmpty))]),n&&c(n),(0,Z.C1)(t)&&v(t)},"aria-label":"file, url, or account picker"},new URLSearchParams(window.location.search).get("adminKey")?null:x.createElement(q.A,{value:"file","aria-label":"local file"},"File"),x.createElement(q.A,{value:"url","aria-label":"url"},"URL"),p.map((e=>{const{internetAccountId:t,name:n,toggleContents:r}=f[e];return x.createElement(ne,{key:e,value:t,title:n},"string"==typeof r?re(r,5):r||re(n,5))})),h.length>0?x.createElement(q.A,{onClick:e=>{g(e.target)},selected:!1},"More",x.createElement(ee.A,null)):null),x.createElement(K.A,{open:Boolean(b),anchorEl:b,onClose:()=>{g(null)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},h.map((e=>{const{internetAccountId:t,name:n}=f[e];return x.createElement(P.A,{key:e,value:t,onClick:()=>{d([...new Set([t,...u].filter(R.notEmpty))]),c(t),g(null)}},n)}))))),A,x.createElement(Y.A,null,r))}));var ae=n(37565),ie=n(8463),se=n(18010);const ce=function(e){const{width:t,height:n,highResolutionScaling:r=1,style:o={},imageData:a,blockKey:i,showSoftClip:s}=e,[c,l]=(0,x.useState)(!1),u=(0,x.useRef)(null);return(0,x.useEffect)((()=>{if(!a)return;const e=u.current;if(!e)return;const t=e.getContext("2d");t&&((0,se.pv)(a,t),l(!0))}),[a]),x.createElement("canvas",{"data-testid":["prerendered_canvas",s?"softclipped":"",i,c?"done":""].filter((e=>!!e)).join("_"),ref:u,width:t*r,height:n*r,style:{width:t,height:n,...o}})};var le=n(87686),ue=n(66684),de=n(13476)},43334:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});class r extends Map{constructor(e={}){if(super(),!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof e.maxAge&&0===e.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=e.maxSize,this.maxAge=e.maxAge||Number.POSITIVE_INFINITY,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(e){if("function"==typeof this.onEviction)for(const[t,n]of e)this.onEviction(t,n.value)}_deleteIfExpired(e,t){return"number"==typeof t.expiry&&t.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(e,t.value),this.delete(e))}_getOrDeleteIfExpired(e,t){if(!this._deleteIfExpired(e,t))return t.value}_getItemValue(e,t){return t.expiry?this._getOrDeleteIfExpired(e,t):t.value}_peek(e,t){const n=t.get(e);return this._getItemValue(e,n)}_set(e,t){this.cache.set(e,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(e,t){this.oldCache.delete(e),this._set(e,t)}*_entriesAscending(){for(const e of this.oldCache){const[t,n]=e;this.cache.has(t)||this._deleteIfExpired(t,n)||(yield e)}for(const e of this.cache){const[t,n]=e;this._deleteIfExpired(t,n)||(yield e)}}get(e){if(this.cache.has(e)){const t=this.cache.get(e);return this._getItemValue(e,t)}if(this.oldCache.has(e)){const t=this.oldCache.get(e);if(!this._deleteIfExpired(e,t))return this._moveToRecent(e,t),t.value}}set(e,t,{maxAge:n=this.maxAge}={}){const r="number"==typeof n&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(e)?this.cache.set(e,{value:t,expiry:r}):this._set(e,{value:t,expiry:r})}has(e){return this.cache.has(e)?!this._deleteIfExpired(e,this.cache.get(e)):!!this.oldCache.has(e)&&!this._deleteIfExpired(e,this.oldCache.get(e))}peek(e){return this.cache.has(e)?this._peek(e,this.cache):this.oldCache.has(e)?this._peek(e,this.oldCache):void 0}delete(e){const t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(e){if(!(e&&e>0))throw new TypeError("`maxSize` must be a number greater than 0");const t=[...this._entriesAscending()],n=t.length-e;n<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(n>0&&this._emitEvictions(t.slice(0,n)),this.oldCache=new Map(t.slice(n)),this.cache=new Map,this._size=0),this.maxSize=e}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache){const[t,n]=e;this._deleteIfExpired(t,n)||(yield[t,n.value])}for(const e of this.oldCache){const[t,n]=e;this.cache.has(t)||this._deleteIfExpired(t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...this.cache];for(let t=e.length-1;t>=0;--t){const n=e[t],[r,o]=n;this._deleteIfExpired(r,o)||(yield[r,o.value])}e=[...this.oldCache];for(let t=e.length-1;t>=0;--t){const n=e[t],[r,o]=n;this.cache.has(r)||this._deleteIfExpired(r,o)||(yield[r,o.value])}}*entriesAscending(){for(const[e,t]of this._entriesAscending())yield[e,t.value]}get size(){if(!this._size)return this.oldCache.size;let e=0;for(const t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}entries(){return this.entriesAscending()}forEach(e,t=this){for(const[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}},99546:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AuthNeededError:()=>c._u,ImageBitmapType:()=>b.bV,ReactRendering:()=>g.aE,RetryError:()=>c.J_,SimpleFeature:()=>y.A,TextSearchManager:()=>c.rz,abortBreakPoint:()=>l.Yo,assembleLocString:()=>P,assembleLocStringFast:()=>N,avg:()=>Fe,blobToDataURL:()=>v.y,bpSpanPx:()=>q,bpToPx:()=>z,bytesForRegions:()=>be,cartesianToPolar:()=>H,checkAbortSignal:()=>l.pB,clamp:()=>$,coarseStripHTML:()=>Te,compareLocStrings:()=>F,compareLocs:()=>R,complement:()=>oe,createCanvas:()=>b.Nw,createImageBitmap:()=>b.T9,dedupe:()=>h.Q,defaultCodonTable:()=>de,defaultStarts:()=>le,defaultStops:()=>ue,degToRad:()=>D,doesIntersect2:()=>p.R6,drawImageOntoCanvasContext:()=>b.pv,featureSpanPx:()=>B,findLast:()=>W,findLastIndex:()=>J,findParentThat:()=>w,findParentThatIs:()=>M,gatherOverlaps:()=>_e,generateCodonTable:()=>fe,getBpDisplayStr:()=>ye,getContainingDisplay:()=>I,getContainingTrack:()=>x,getContainingView:()=>k,getEnv:()=>Ie,getFillProps:()=>Ue,getFrame:()=>ce,getLayoutId:()=>Ce,getSerializedSvg:()=>g.Jy,getSession:()=>T,getStr:()=>Me,getStrokeProps:()=>De,getTickDisplayStr:()=>Ae,getUriLink:()=>Se,getViewParams:()=>Ee,groupBy:()=>$e,hashCode:()=>pe,intersection2:()=>p.ky,isAbortException:()=>l.Kp,isAbstractMenuManager:()=>c.Nh,isAppRootModel:()=>c.bV,isAuthNeededException:()=>c.ZL,isBlobLocation:()=>c.rF,isContainedWithin:()=>p.Xx,isDisplayModel:()=>c.Uy,isElectron:()=>te,isFeature:()=>y.l,isGzip:()=>Be,isLocalPathLocation:()=>c.EV,isRetryException:()=>c.yH,isRootModelWithInternetAccounts:()=>c.lL,isSelectionContainer:()=>c.mY,isSessionModel:()=>c.Y$,isSessionModelWithConfigEditing:()=>c.u3,isSessionModelWithConnectionEditing:()=>c.gx,isSessionModelWithConnections:()=>c.BY,isSessionModelWithWidgets:()=>c.lO,isSessionWithAddTracks:()=>c.QW,isSessionWithSessionPlugins:()=>c.zA,isSessionWithShareURL:()=>c.xv,isSupportedIndexingAdapter:()=>ge,isTrackModel:()=>c.xU,isTrackViewModel:()=>c.EO,isUriLocation:()=>c.C1,isViewContainer:()=>c.DW,isViewModel:()=>c.Tl,iterMap:()=>V,linkify:()=>ke,localStorageGetItem:()=>Pe,localStorageSetItem:()=>Ne,makeAbortError:()=>l.zm,makeAbortableReaction:()=>K,max:()=>Oe,measureGridWidth:()=>xe,measureText:()=>se,mergeIntervals:()=>Ge,min:()=>Le,minmax:()=>Q,notEmpty:()=>ze,objectHash:()=>he,observeAbortSignal:()=>l.R1,parseLocString:()=>L,parseLocStringOneBased:()=>O,polarToCartesian:()=>U,rIC:()=>ae,radToDeg:()=>j,renameRegionIfNeeded:()=>Y,renameRegionsIfNeeded:()=>Z,renderToAbstractCanvas:()=>g.u1,renderToStaticMarkup:()=>He,revcom:()=>ne,reverse:()=>re,shorten:()=>X,springAnimate:()=>S,stringify:()=>ee,stripAlpha:()=>je,sum:()=>Re,toLocale:()=>ve,updateStatus:()=>me,useDebounce:()=>A,useDebouncedCallback:()=>C,useLocalStorage:()=>we,useWidthSetter:()=>E,when:()=>m.z,whenPresent:()=>m.I});var r=n(7552),o=n(503),a=n.n(o),i=n(36422),s=n(42489),c=n(92516),l=n(20166),u=n(40085),d=n(87485),f=n(28485),m=n(1864),p=n(32595),h=n(3519),b=n(18010),g=n(98506),y=n(6434),v=n(31673);function A(e,t){const[n,o]=(0,r.useState)(e);return(0,r.useEffect)((()=>{const n=setTimeout((()=>{o(e)}),t);return()=>{clearTimeout(n)}}),[e,t]),n}function E(e,t){const[n,{width:o}]=(0,u.A)();return(0,r.useEffect)((()=>{o&&(0,i.isAlive)(e)&&requestAnimationFrame((()=>{e.setWidth(o-2*Number.parseInt(t,10))}))}),[t,e,o]),n}function C(e,t=400){const n=(0,r.useRef)(),o=(0,r.useRef)();return(0,r.useEffect)((()=>{o.current&&clearTimeout(o.current)}),[]),function(...r){n.current=r,o.current&&clearTimeout(o.current),o.current=setTimeout((()=>{n.current&&e(...n.current)}),t)}}function w(e,t){if(!(0,i.hasParent)(e))throw new Error("node does not have parent");let n=(0,i.getParent)(e);for(;n&&(0,i.isAlive)(n);){if(t(n))return n;if(!(0,i.hasParent)(n))break;n=(0,i.getParent)(n)}throw new Error("no matching node found")}function S(e,t,n,r=()=>{},o=0,a=400,i=20,s=!0){let c;function l(u){const d=Date.now();let f=u.lastPosition,m=u.lastTime||d,p=u.lastVelocity||0;d>m+64&&(m=d);const h=Math.floor(d-m);for(let e=0;e<h;++e)p+=(-a*(f-t)+-i*p)/1*1/1e3,f+=1*p/1e3;const b=Math.abs(p)<=o,g=0===a||Math.abs(t-f)<=o;s&&0!==a&&(e<t?f>t:f<t)||b&&g?(n(t),r()):(n(f),c=requestAnimationFrame((()=>{l({lastPosition:f,lastTime:d,lastVelocity:p})})))}return o||(o=Math.abs(t-e)/1e3),[()=>{l({lastPosition:e})},()=>{cancelAnimationFrame(c)}]}function M(e,t){return w(e,t)}function T(e){try{return M(e,c.Y$)}catch(e){throw new Error("no session model found!")}}function k(e){try{return M(e,c.Tl)}catch(e){throw new Error("no containing view found")}}function x(e){try{return M(e,c.xU)}catch(e){throw new Error("no containing track found")}}function I(e){try{return M(e,c.Uy)}catch(e){throw new Error("no containing display found")}}function P(e){return N(e,ve)}function N(e,t=e=>e){const{assemblyName:n,refName:r,start:o,end:a,reversed:i}=e,s=n?`{${n}}`:"";let c,l;c=void 0!==o?`:${t(o+1)}`:void 0!==a?":1":"",l=void 0!==a?void 0!==o&&o+1===a?"":`..${t(a)}`:void 0!==o?"..":"";let u="";return i&&(u="[rev]"),`${s}${r}${c}${l}${u}`}function O(e,t){if(!e)throw new Error("no location string provided, could not parse");let n=!1;e.endsWith("[rev]")&&(n=!0,e=e.replace(/\[rev]$/,"")),e=e.replace(/\s/,"");const r=/({(.+)})?(.+)/.exec(e);if(!r)throw new Error(`invalid location string: "${e}"`);const[,,o,a]=r,i=o,s=a;if(!i&&s.startsWith("{}"))throw new Error(`no assembly name was provided in location "${s}"`);const c=s.lastIndexOf(":");if(-1===c){if(t(s,i))return{assemblyName:i,refName:s,reversed:n};throw new Error(`Unknown reference sequence "${s}"`)}const l=s.slice(0,c),u=s.slice(c+1);if(t(l,i)&&t(s,i))throw new Error(`ambiguous location string: "${e}"`);if(t(l,i)){if(!u)return{assemblyName:i,refName:l,reversed:n};{const t=/^(-?(\d+|\d{1,3}(,\d{3})*))(\.\.|-)(-?(\d+|\d{1,3}(,\d{3})*))$/.exec(u),r=/^(-?(\d+|\d{1,3}(,\d{3})*))(\.\.|-)?$/.exec(u);if(t){const[,e,,,,r]=t;if(void 0!==e&&void 0!==r)return{assemblyName:i,refName:l,start:+e.replaceAll(",",""),end:+r.replaceAll(",",""),reversed:n}}else{if(!r)throw new Error(`could not parse range "${u}" on location "${e}"`);{const[,e,,,t]=r;if(void 0!==e)return t?{assemblyName:i,refName:l,start:+e.replaceAll(",",""),reversed:n}:{assemblyName:i,refName:l,start:+e.replaceAll(",",""),end:+e.replaceAll(",",""),reversed:n}}}}}else if(t(s,i))return{assemblyName:i,refName:s,reversed:n};throw new Error(`unknown reference sequence name in location "${e}"`)}function L(e,t){const n=O(e,t);return"number"==typeof n.start&&(n.start-=1),n}function R(e,t){const n=e.assemblyName||t.assemblyName?(e.assemblyName||"").localeCompare(t.assemblyName||""):0;if(n)return n;const r=e.refName||t.refName?(e.refName||"").localeCompare(t.refName||""):0;if(r)return r;if(void 0!==e.start&&void 0!==t.start){const n=e.start-t.start;if(n)return n}if(void 0!==e.end&&void 0!==t.end){const n=e.end-t.end;if(n)return n}return 0}function F(e,t,n){return R(L(e,n),L(t,n))}function $(e,t,n){return e<t?t:e>n?n:e}function z(e,{reversed:t,end:n=0,start:r=0},o){return a=(t?n-e:e-r)/o,Math.round(10*a)/10;var a}const G=180/Math.PI,_=Math.PI/180;function j(e){return e*G%360}function D(e){return e*_%(2*Math.PI)}function U(e,t){return[e*Math.cos(t),e*Math.sin(t)]}function H(e,t){return[Math.sqrt(e*e+t*t),Math.atan(t/e)]}function B(e,t,n){return q(e.get("start"),e.get("end"),t,n)}function q(e,t,n,r){const o=z(e,n,r),a=z(t,n,r);return n.reversed?[a,o]:[o,a]}function V(e,t,n){const r=Array.from({length:n||0});let o=0;for(const n of e)r[o]=t(n),o+=1;return r}function J(e,t){let n=e.length;for(;n--;)if(t(e[n],n,e))return n;return-1}function W(e,t){let n=e.length;for(;n--;)if(t(e[n],n,e))return e[n]}function K(e,t,n,r,o,a,c){let u;function d(t){(0,l.Kp)(t)||((0,i.isAlive)(e)?c(t):console.error(t))}(0,i.addDisposer)(e,(0,s.reaction)((()=>{try{return t(e)}catch(e){return void d(e)}}),(async(t,r)=>{if(u&&!u.signal.aborted&&u.abort(),!(0,i.isAlive)(e))return;u=new AbortController;const s=u;o(s);try{const o=await n(t,s.signal,e,r);(0,l.pB)(s.signal),(0,i.isAlive)(e)&&a(o)}catch(e){s.signal.aborted||s.abort(),d(e)}}),r)),(0,i.addDisposer)(e,(()=>{u&&!u.signal.aborted&&u.abort()}))}function Y(e,t){if((0,i.isStateTreeNode)(t)&&!(0,i.isAlive)(t))return t;if(e?.[t.refName]){const n=e[(t=(0,i.isStateTreeNode)(t)?{...(0,i.getSnapshot)(t)}:{...t}).refName];if(n)return{...t,refName:n,originalRefName:t.refName}}return t}async function Z(e,t){const{regions:n=[],adapterConfig:r}=t;if(!t.sessionId)throw new Error("sessionId is required");const o=n.map((e=>e.assemblyName)),a=Object.fromEntries(await Promise.all([...new Set(o)].map((async n=>[n,await e.getRefNameMapForAdapter(r,n,t)]))));return{...t,regions:n.map(((e,t)=>Y(a[o[t]],e)))}}function Q(e,t){return[Math.min(e,t),Math.max(e,t)]}function X(e,t=70,n=30){return e.length>t?`${e.slice(0,n)}...${e.slice(-n)}`:e}function ee({refName:e,coord:t,assemblyName:n,oob:r},o){return[n&&o?`{${n}}`:"",e?`${X(e)}:${ve(t)}${r?" (out of bounds)":""}`:""].join("")}const te=/electron/i.test("undefined"!=typeof navigator?navigator.userAgent:"");function ne(e){return re(oe(e))}function re(e){return e.split("").reverse().join("")}const oe=(()=>{const e=/[ACGT]/gi,t={S:"S",w:"w",T:"A",r:"y",a:"t",N:"N",K:"M",x:"x",d:"h",Y:"R",V:"B",y:"r",M:"K",h:"d",k:"m",C:"G",g:"c",t:"a",A:"T",n:"n",W:"W",X:"X",m:"k",v:"b",B:"V",s:"s",H:"D",c:"g",D:"H",b:"v",R:"Y",G:"C"};return n=>n.replaceAll(e,(e=>t[e]||""))})(),ae="undefined"==typeof jest?"undefined"!=typeof window&&window.requestIdleCallback?window.requestIdleCallback:e=>setTimeout((()=>{e()}),1):e=>{e()},ie=[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,.2796875,.2765625,.3546875,.5546875,.5546875,.8890625,.665625,.190625,.3328125,.3328125,.3890625,.5828125,.2765625,.3328125,.2765625,.3015625,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.2765625,.2765625,.584375,.5828125,.584375,.5546875,1.0140625,.665625,.665625,.721875,.721875,.665625,.609375,.7765625,.721875,.2765625,.5,.665625,.5546875,.8328125,.721875,.7765625,.665625,.7765625,.721875,.665625,.609375,.721875,.665625,.94375,.665625,.665625,.609375,.2765625,.3546875,.2765625,.4765625,.5546875,.3328125,.5546875,.5546875,.5,.5546875,.5546875,.2765625,.5546875,.5546875,.221875,.240625,.5,.221875,.8328125,.5546875,.5546875,.5546875,.5546875,.3328125,.5,.2765625,.5546875,.5,.721875,.5,.5,.5,.3546875,.259375,.353125,.5890625];function se(e,t=10){const n=String(e);let r=0;for(let e=0;e<n.length;e++){const t=n.charCodeAt(e);r+=ie[t]??.5279276315789471}return r*t}function ce(e,t,n,r){return 1===n?(e+r)%3+1:(t-r)%3*-1-1}const le=["ATG"],ue=["TAA","TAG","TGA"],de={TCA:"S",TCC:"S",TCG:"S",TCT:"S",TTC:"F",TTT:"F",TTA:"L",TTG:"L",TAC:"Y",TAT:"Y",TAA:"*",TAG:"*",TGC:"C",TGT:"C",TGA:"*",TGG:"W",CTA:"L",CTC:"L",CTG:"L",CTT:"L",CCA:"P",CCC:"P",CCG:"P",CCT:"P",CAC:"H",CAT:"H",CAA:"Q",CAG:"Q",CGA:"R",CGC:"R",CGG:"R",CGT:"R",ATA:"I",ATC:"I",ATT:"I",ATG:"M",ACA:"T",ACC:"T",ACG:"T",ACT:"T",AAC:"N",AAT:"N",AAA:"K",AAG:"K",AGC:"S",AGT:"S",AGA:"R",AGG:"R",GTA:"V",GTC:"V",GTG:"V",GTT:"V",GCA:"A",GCC:"A",GCG:"A",GCT:"A",GAC:"D",GAT:"D",GAA:"E",GAG:"E",GGA:"G",GGC:"G",GGG:"G",GGT:"G"};function fe(e){const t={};return Object.keys(e).forEach((n=>{const r=e[n],o=[];for(let e=0;e<3;e++){const t=n.charAt(e);o[e]=[],o[e][0]=t.toUpperCase(),o[e][1]=t.toLowerCase()}for(let e=0;e<2;e++){const n=o[0][e];for(let e=0;e<2;e++){const a=o[1][e];for(let e=0;e<2;e++){const i=o[2][e];t[n+a+i]=r}}}})),t}async function me(e,t,n){t(e);const r=await n();return t(""),r}function pe(e){let t=0;if(0===e.length)return t;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}function he(e){return`${pe(JSON.stringify(e))}`}async function be(e,t){return(await Promise.all(e.map((e=>t.blocksForRange(e.refName,e.start,e.end))))).flat().map((e=>({start:e.minv.blockPosition,end:e.maxv.blockPosition+65535}))).reduce(((e,t)=>e+t.end-t.start),0)}function ge(e=""){return["Gff3TabixAdapter","VcfTabixAdapter","Gff3Adapter","VcfAdapter"].includes(e)}function ye(e){return Math.floor(e/1e6)>0?`${Number.parseFloat((e/1e6).toPrecision(3))}Mbp`:Math.floor(e/1e3)>0?`${Number.parseFloat((e/1e3).toPrecision(3))}Kbp`:`${ve(Math.floor(e))}bp`}function ve(e){return e.toLocaleString("en-US")}function Ae(e,t){return Math.floor(t/1e3)>0?`${ve(Number.parseFloat((e/1e6).toFixed(2)))}M`:ve(Math.floor(e))}function Ee(e,t){const{dynamicBlocks:n,staticBlocks:r,offsetPx:o}=k(e),a=n?.contentBlocks[0]||{},i=r?.contentBlocks[0]||{},s=r?.contentBlocks[1]||{};return{offsetPx:t?0:o-i.offsetPx,offsetPx1:t?0:o-s.offsetPx,start:a.start,end:a.end}}function Ce({sessionId:e,layoutId:t}){return`${e}-${t}`}function we(e,t){const[n,o]=(0,r.useState)((()=>{if("undefined"==typeof window)return t;try{const n=window.localStorage.getItem(e);return n?JSON.parse(n):t}catch(e){return console.error(e),t}}));return[n,t=>{try{const r=t instanceof Function?t(n):t;o(r),"undefined"!=typeof window&&window.localStorage.setItem(e,JSON.stringify(r))}catch(e){console.error(e)}}]}function Se(e){const{uri:t,baseUri:n=""}=e;let r;try{r=new URL(t,n).href}catch(e){r=t}return r}function Me(e){return a()(e)?(0,c.C1)(e)?Se(e):JSON.stringify(e):String(e)}function Te(e){return e.replaceAll(/(<([^>]+)>)/gi,"")}function ke(e){return e.replaceAll(/(^|[\s\n]|<[A-Za-z]*\/?>)((?:https?|ftp):\/\/[-A-Z0-9+\u0026\u2019@#/%?=()~_|!:,.;]*[-A-Z0-9+\u0026@#/%=~()_|])/gi,"$1<a href='$2' target=\"_blank\">$2</a>")}function xe(e,t){const{padding:n=30,minWidth:r=80,fontSize:o=12,maxWidth:a=1e3,stripHTML:i=!1}=t||{};return Oe(e.map((e=>Me(e))).map((e=>i?Te(e):e)).map((e=>se(e,o))).map((e=>Math.min(Math.max(e+n,r),a))))}function Ie(e){return(0,i.getEnv)(e)}function Pe(e){return"undefined"!=typeof localStorage?localStorage.getItem(e):void 0}function Ne(e,t){"undefined"!=typeof localStorage&&localStorage.setItem(e,t)}function Oe(e,t=Number.NEGATIVE_INFINITY){let n=t;for(const t of e)n=t>n?t:n;return n}function Le(e,t=Number.POSITIVE_INFINITY){let n=t;for(const t of e)n=t<n?t:n;return n}function Re(e){let t=0;for(const n of e)t+=n;return t}function Fe(e){return Re(e)/e.length}function $e(e,t){const n={};for(const r of e){const e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}function ze(e){return null!=e}function Ge(e,t=5e3){if(e.length<=1)return e;const n=[];let r=null;e=e.sort(((e,t)=>e.start-t.start)),n.push(e[0]);for(let o=1;o<e.length;o++)r=n.at(-1),r.end+t<e[o].start-t?n.push(e[o]):r.end<e[o].end&&(r.end=Math.max(r.end,e[o].end),n.pop(),n.push(r));return n}function _e(e,t=5e3){const n={};for(const t of e)n[t.refName]||(n[t.refName]=[]),n[t.refName].push(t);return Object.values(n).flatMap((e=>Ge(e.sort(((e,t)=>e.start-t.start)),t)))}function je(e){return(0,d.M)(e).alpha(1).toHex()}function De(e){const t=(0,d.M)(e);return{strokeOpacity:t.alpha(),stroke:t.alpha(1).toHex()}}function Ue(e){const t=(0,d.M)(e);return{fillOpacity:t.alpha(),fill:t.alpha(1).toHex()}}function He(e,t){const n=document.createElement("div");return(0,f.flushSync)((()=>{t?t(n).render(e):(0,f.render)(e,n)})),n.innerHTML.replaceAll(/\brgba\((.+?),[^,]+?\)/g,"rgb($1)")}function Be(e){return 31===e[0]&&139===e[1]&&8===e[2]}},91468:(e,t,n)=>{"use strict";n.r(t),n.d(t,{UNKNOWN:()=>u,UNSUPPORTED:()=>d,generateUnknownTrackConf:()=>S,generateUnsupportedTrackConf:()=>w,getBlob:()=>m,getBlobMap:()=>p,getConfAssemblyNames:()=>s,getFileName:()=>A,getParentRenderProps:()=>l,getRpcSessionId:()=>c,getTrackAssemblyNames:()=>i,getTrackName:()=>M,guessAdapter:()=>E,guessTrackType:()=>C,makeIndex:()=>y,makeIndexType:()=>v,setBlobMap:()=>h,storeBlobLocation:()=>g});var r=n(36422),o=n(99546),a=n(68584);function i(e){return s(e.configuration)}function s(e){const t=(0,a.readConfObject)(e,"assemblyNames");if(!t){const t=(0,r.getParent)(e);if("sequence"in t)return[(0,a.readConfObject)(t,"name")];throw new Error("unknown assembly names")}return t}function c(e){let t;for(let n=e;!(0,r.isRoot)(n);n=(0,r.getParent)(n))"rpcSessionId"in n&&(t=n.rpcSessionId);if(!t)throw new Error("getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute");return t}function l(e){for(let t=(0,r.getParent)(e);!(0,r.isRoot)(t);t=(0,r.getParent)(t))if("renderProps"in t)return t.renderProps();return{}}const u="UNKNOWN",d="UNSUPPORTED";let f={};function m(e){return f[e]}function p(){return f}function h(e){f=e}let b=0;function g(e){if("blob"in e){const t=`b${+Date.now()}-${b++}`;return f[t]=e.blob,{name:e.blob.name,blobId:t,locationType:"BlobLocation"}}return e}function y(e,t){return"uri"in e?{uri:e.uri+t,locationType:"UriLocation"}:"localPath"in e?{localPath:e.localPath+t,locationType:"LocalPathLocation"}:e}function v(e,t,n){return e?.toUpperCase().endsWith(t)?t:n}function A(e){const t="uri"in e?e.uri:void 0,n="localPath"in e?e.localPath:void 0,r="blobId"in e?e:void 0;return r?.name||t?.slice(t.lastIndexOf("/")+1)||n?.slice(n.replace(/\\/g,"/").lastIndexOf("/")+1)||""}function E(e,t,n,r){if(r){const{pluginManager:a}=(0,o.getEnv)(r),i=a.evaluateExtensionPoint("Core-guessAdapterForLocation",((e,t,n)=>{}))(e,t,n);if(i)return i}return{type:u}}function C(e,t){if(t){const n=(0,o.getSession)(t),r=(0,o.getEnv)(n).pluginManager.evaluateExtensionPoint("Core-guessTrackTypeForLocation",(e=>{}))(e);if(r)return r}return"FeatureTrack"}function w(e,t,n){const r={type:"FeatureTrack",name:`${e} (Unsupported)`,description:`Support not yet implemented for "${t}"`,category:n,trackId:""};return r.trackId=(0,o.objectHash)(r),r}function S(e,t,n){const r={type:"FeatureTrack",name:`${e} (Unknown)`,description:`Could not determine track type for "${t}"`,category:n,trackId:""};return r.trackId=(0,o.objectHash)(r),r}function M(e,t){const n=(0,a.readConfObject)(e,"name");if(!n&&"ReferenceSequenceTrack"===(0,a.readConfObject)(e,"type")){const n=t.assemblies.find((t=>t.sequence===e));return n?`Reference sequence (${(0,a.readConfObject)(n,"displayName")||(0,a.readConfObject)(n,"name")})`:"Reference sequence"}return n}},8832:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BlobLocation:()=>l,ElementId:()=>a,FileLocation:()=>f,LocalPathLocation:()=>c,NoAssemblyRegion:()=>i,Region:()=>s,UriLocation:()=>d,UriLocationRaw:()=>u});var r=n(36422),o=n(32761);const a=r.types.optional(r.types.identifier,(()=>(0,o.Ak)())),i=r.types.model("NoAssemblyRegion",{refName:r.types.string,start:r.types.number,end:r.types.number,reversed:r.types.optional(r.types.boolean,!1)}).actions((e=>({setRefName(t){e.refName=t}}))),s=r.types.compose("Region",i,r.types.model({assemblyName:r.types.string})),c=r.types.model("LocalPathLocation",{locationType:r.types.literal("LocalPathLocation"),localPath:r.types.string}),l=r.types.model("BlobLocation",{locationType:r.types.literal("BlobLocation"),name:r.types.string,blobId:r.types.string}),u=r.types.model("UriLocation",{locationType:r.types.literal("UriLocation"),uri:r.types.string,baseUri:r.types.maybe(r.types.string),internetAccountId:r.types.maybe(r.types.string),internetAccountPreAuthorization:r.types.maybe(r.types.model("InternetAccountPreAuthorization",{internetAccountType:r.types.string,authInfo:r.types.frozen()}))}),d=r.types.snapshotProcessor(u,{postProcessor:e=>{const{baseUri:t,...n}=e;return t?e:n}}),f=r.types.snapshotProcessor(r.types.union(c,d,l),{preProcessor(e){if(!e)return;const{locationType:t,...n}=e;if(!t){const{uri:e,localPath:t,blob:r}=n;let o="";return void 0!==e?o="UriLocation":void 0!==t?o="LocalPathLocation":void 0!==r&&(o="BlobLocation"),{...n,locationType:o}}return e}})},16574:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(7552),o=n(12678),a=n(9043),i=n(62367),s=n(69426),c=n(679),l=n(68384);const u=(0,r.lazy)((()=>n.e(8009).then(n.bind(n,18009))));class d extends o.A{name="DataManagementPlugin";exports={AssemblyManager:u};install(e){(0,a.A)(e),(0,i.A)(e),(0,l.Ay)(e),(0,s.A)(e),(0,c.A)(e)}configure(e){}}},2657:(e,t,n)=>{"use strict";n(68970);var r=n(76519),o=n(70129),a=n(24388),i=n(45103),s=n.n(i),c=n(12678),l=n(2862),u=n(99546);function d(e){return(void 0!==e.umdUrl||void 0!==e.url||void 0!==e.umdLoc)&&void 0!==e.name}function f(e){return void 0!==e.esmUrl||void 0!==e.esmLoc}function m(e){return void 0!==e.cjsUrl}class p{definitions=[];constructor(e=[],t){this.fetchESM=t?.fetchESM,this.fetchCJS=t?.fetchCJS,this.definitions=JSON.parse(JSON.stringify(e))}async loadCJSPlugin(e,t){const n=new URL(e.cjsUrl,t);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`Cannot load plugins using protocol "${n.protocol}"`);if(!this.fetchCJS)throw new Error("No fetchCJS callback provided");return this.fetchCJS(n.href)}async loadESMPlugin(e,t){const n="esmUrl"in e?new URL(e.esmUrl,t):new URL(e.esmLoc.uri,e.esmLoc.baseUri);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`cannot load plugins using protocol "${n.protocol}"`);if(!this.fetchESM)throw new Error("No ESM fetcher installed");const r=await this.fetchESM(n.href);if(!r)throw new Error(`Could not load ESM plugin: ${n}`);return r}async loadUMDPlugin(e,t){const n="url"in e?new URL(e.url,t):"umdUrl"in e?new URL(e.umdUrl,t):new URL(e.umdLoc.uri,e.umdLoc.baseUri);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`cannot load plugins using protocol "${n.protocol}"`);const r=e.name,o=`JBrowsePlugin${r}`;"undefined"==typeof jest?await async function(e){if(!Boolean("WorkerGlobalScope"in globalThis))return t=e,new Promise(((e,n)=>{s()(t,((t,r)=>{t?n(t):e(r.src)}))}));var t;if(!globalThis.importScripts)throw new Error("cannot figure out how to load external JS scripts in this environment");await globalThis.importScripts(e)}(n.href):globalThis[o]={default:c.A};const a=globalThis[o];if(!a)throw new Error(`Failed to load UMD bundle for ${r}, ${o} is undefined`);return a}async loadPlugin(e,t){let n;if(u.isElectron&&m(e))n=await this.loadCJSPlugin(e,t);else if(f(e))n=await this.loadESMPlugin(e,t);else{if(!d(e))throw!u.isElectron&&m(e)?new Error(`CommonJS plugin found, but not in a NodeJS environment: ${JSON.stringify(e)}`):new Error(`Could not determine plugin type: ${JSON.stringify(e)}`);n=await this.loadUMDPlugin(e,t)}if(!n.default)throw new Error((d(r=e)?`UMD plugin ${r.name}`:f(r)?`ESM plugin ${r.esmUrl||r.esmLoc.uri}`:m(r)?`CJS plugin ${r.cjsUrl}`:"unknown plugin")+" does not have a default export, cannot load");var r;return n.default}installGlobalReExports(e){return e.JBrowseExports=Object.fromEntries(Object.entries(l.A).map((([e,t])=>[e,t]))),this}async load(e){return Promise.all(this.definitions.map((async t=>({plugin:await this.loadPlugin(t,e),definition:t}))))}}var h=n(39154);var b=n(2356),g=n(63163);(0,b.eO)(!0),async function(e,t){try{const n=await async function(e,t){const n=await function(){const e=new Promise((e=>{self.addEventListener("message",(function t(n){"config"===n.data.message&&(e(n.data.config),removeEventListener("message",t))}))}));return postMessage({message:"readyForConfig"}),e}(),r=new p(n.plugins,t).installGlobalReExports(self);return new o.A([...e.map((e=>({plugin:e}))),...await r.load(n.windowHref)].map((e=>new e.plugin))).createPluggableElements().configure()}(e,t),i=Object.fromEntries(n.getRpcElements().map((e=>{return[e.name,(t=e.execute.bind(e),e=>{const{channel:n,rpcDriverClassName:r}=e;return t({...e,statusCallback:e=>{self.rpcServer.emit(n,e)}},r)})];var t})));self.rpcServer=new r.A.Server({...i,...(0,a.IY)(),ping:async()=>{}}),postMessage({message:"ready"})}catch(e){postMessage({message:"error",error:(0,h.serializeError)(e)})}}(g.A,{fetchESM:e=>import(e)})},68970:()=>{self.window={addEventListener(){},fetch:self.fetch.bind(self),location:self.location,Date:self.Date,requestIdleCallback:e=>{e()},cancelIdleCallback:()=>{},requestAnimationFrame:e=>{e()},cancelAnimationFrame:()=>{},navigator:{}},self.document={createTextNode(){},querySelector:()=>({appendChild(){}}),documentElement:{},querySelectorAll:()=>[],createElement:()=>({style:{},setAttribute(){},removeAttribute(){},appendChild(){}})}}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return o[e].call(n.exports,n,n.exports,i),n.exports}i.m=o,i.x=()=>{var e=i.O(void 0,[5255,3301,6837],(()=>i(2657)));return i.O(e)},e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(u=0;u<e.length;u++){for(var[n,r,o]=e[u],s=!0,c=0;c<n.length;c++)(!1&o||a>=o)&&Object.keys(i.O).every((e=>i.O[e](n[c])))?n.splice(c--,1):(s=!1,o<a&&(a=o));if(s){e.splice(u--,1);var l=r();void 0!==l&&(t=l)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var s=2&r&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>a[t]=()=>e[t]));return a.default=()=>e,i.d(o,a),o},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,n)=>(i.f[n](e,t),t)),[])),i.u=e=>"static/js/"+e+"."+{12:"c0c7bdf9",14:"b9913d1d",26:"604133d9",120:"a447052d",246:"9848bd41",266:"94eb2bf9",311:"2c004784",366:"b00bf6ca",399:"e36b7683",419:"021427b6",439:"bdc14632",457:"6d7b716d",489:"43cb4a5f",491:"0011d1ad",518:"7222a328",561:"8b38948f",596:"84c38eb7",722:"4329bc98",741:"a9772d36",759:"9c32be0d",772:"83c2d2db",937:"4f610bdf",946:"245d7df9",972:"c0d17685",1012:"a7d14de3",1029:"8c806427",1051:"8e1641e2",1110:"702cba94",1157:"c0d4652e",1189:"f18c6e1f",1260:"ee4ecbf4",1266:"cd6d9354",1281:"1d836fc4",1304:"a512b560",1310:"8a044016",1326:"19289940",1345:"aaaaf175",1354:"ded982ce",1503:"cc48d25a",1516:"ca4ab8f0",1537:"4fdb4e95",1598:"3b48685f",1637:"21a8cf01",1696:"8a290cef",1725:"795fc4d3",1752:"a727a500",1757:"a6d05bc3",1811:"7cfd8419",1822:"2cbe112a",1824:"c2ed4bca",1978:"1faf7d31",1996:"a37d9ec7",1999:"2554e815",2018:"9ce7fb06",2062:"a28f26f8",2141:"d36fb4a8",2197:"a5134ce4",2212:"116fbbf4",2241:"3d359b22",2246:"e5e65a4f",2249:"b91f0bb3",2306:"f8d640f4",2321:"ef211da9",2398:"731eb1c6",2412:"10574f7d",2418:"0b1f308b",2424:"7cd6703f",2493:"20e8e76c",2583:"db78b17f",2627:"300bea43",2645:"4b79a04c",2697:"4ab94d07",2729:"9660c29b",2775:"e25b4dd4",2777:"56f29f41",2820:"3c0e09be",2847:"009c96ee",2861:"aa6cd5b7",2872:"5129bbd8",2885:"8a30e856",2977:"aa562b03",2989:"031b43a0",3003:"0f0cbacd",3011:"9da53e7c",3012:"9940fd01",3029:"cd8dcca2",3103:"4dfe3f78",3106:"e1981605",3109:"3173f682",3162:"eb9bf76d",3167:"312d0953",3175:"af2c93a5",3199:"a36b17a7",3266:"accbd4dc",3274:"053c3df5",3301:"db457761",3304:"65e5d8dd",3311:"92fac4a6",3368:"6e9b017b",3384:"e146a796",3416:"f7c72cbe",3425:"be85a6ad",3474:"8c1888be",3497:"9db6611b",3525:"e74d3ff0",3550:"089089a8",3578:"058bdae5",3614:"af493134",3682:"840e721c",3728:"99a63442",3778:"e18101e6",3795:"0386c297",3862:"9fd8e870",3902:"69c7ff0c",3940:"c8b3da50",4033:"df8ecd0d",4060:"8757dbe8",4133:"451f5e47",4138:"57ad92a3",4234:"63e1ba57",4284:"61dbc58f",4345:"0a9072cc",4395:"8fda7b8b",4414:"7f4caeab",4435:"a57cabe2",4456:"93a06b74",4499:"3f0b2e70",4615:"dc35870f",4629:"1f1a55a3",4630:"f0bdb9f0",4659:"b65d8547",4704:"9b3995ff",4753:"834007ba",4755:"8d938db2",4770:"3d757d6b",4773:"6cd74b80",4806:"7e497d7a",4861:"6244e4c0",4863:"9dfed19c",4864:"28cfc358",4902:"452e575b",4947:"2e80fd2d",4974:"cf97ef5b",5008:"f8d32f92",5031:"6eccfd35",5090:"bc77ac67",5099:"14f82444",5101:"993a6b6e",5132:"00a31df0",5156:"75195722",5189:"3e22269d",5243:"9de20396",5255:"af554ced",5260:"e7b7aeb6",5327:"8f1dcfc1",5331:"28d667f0",5369:"993afa3f",5461:"5c8cf5d1",5484:"3ceeebff",5511:"154ce441",5515:"671905b2",5595:"b4517d69",5608:"1b8d39e1",5640:"33b8306c",5668:"73016b9c",5676:"818528e8",5677:"28a25579",5682:"ea285a50",5727:"f7a524b6",5736:"48705208",5746:"39e4296b",5763:"48010c9a",5896:"622b5e88",5903:"9145cef7",5904:"240caa72",5930:"0ffd2546",5951:"251be759",5998:"22bd8296",6021:"21769087",6043:"e402bf73",6054:"e0881c55",6149:"c6c4af73",6157:"96f40683",6205:"903f897d",6214:"0ed0ac32",6235:"93768761",6310:"ae82dc58",6323:"1c706a2d",6342:"62a02e7b",6391:"aabba4a1",6395:"f6027b24",6397:"8fc250af",6423:"1e8da08b",6435:"b4633aa1",6514:"d36ecbb8",6526:"b2c8fd93",6621:"cf64e54c",6658:"fe512b5a",6683:"2a35f0fe",6703:"faa93a20",6746:"8d3f75be",6785:"07d4b66b",6799:"754a77ae",6823:"6e35b0cf",6833:"c77c5928",6834:"bc9e9f2b",6837:"a706c464",6861:"66a2e4c0",6932:"a37ea756",6946:"dd09a891",6999:"3486cca0",7013:"5240d550",7067:"e9508417",7087:"79101e8e",7117:"b3239756",7126:"b4b7d70b",7181:"938de865",7203:"03e2b86a",7309:"f9d18abb",7348:"40afbdc0",7374:"932d083d",7389:"fa6a1eb0",7407:"4421929d",7409:"8e71acc1",7418:"2ac24978",7428:"1e6f676f",7489:"b8a76d29",7579:"1b98701c",7584:"a162e3d6",7627:"31dfd44e",7706:"430ce07e",7753:"87963fd9",7761:"0cf7cf29",7773:"7e072552",7790:"3790bece",7809:"eb2c5f08",7812:"6bb31bfb",7831:"cfcb0221",7842:"cbff451c",7864:"59d0de32",7865:"e02aee95",7902:"f48e3002",7909:"8f1d759d",7911:"764ec401",7974:"3f19c570",7991:"5d96c772",8009:"a65f1b78",8052:"7d772984",8105:"4fd35586",8109:"344e1845",8114:"eb856986",8120:"85042513",8150:"09c54606",8165:"d07843b4",8187:"383aefbf",8216:"16f39607",8301:"877076ce",8341:"fa84fa67",8343:"dd515382",8408:"2e2896bf",8424:"a1a3e663",8435:"484d30f8",8483:"7fadf4ea",8526:"5dd9c712",8528:"f68ff14f",8535:"189d090a",8546:"0a89cbee",8556:"0053a402",8565:"c4ea9980",8582:"9b93fffc",8615:"0950a86f",8624:"190dd7af",8678:"8424d5dc",8704:"ae4808df",8762:"3d2b9142",8797:"3168365d",8856:"4593419f",8859:"efb2561f",8869:"74066774",8876:"24bf6aed",8880:"6ae9d985",8929:"70ce258f",8965:"51db703f",8984:"1a816123",9028:"12f6efe2",9032:"b54e1975",9037:"03715b7f",9067:"1cc02121",9070:"d49de235",9086:"035adaa3",9088:"9fbbeb5c",9106:"b274c701",9114:"d412d44e",9168:"6afdec67",9206:"bbf34514",9245:"d882c265",9280:"6e897b98",9292:"96b77fb0",9305:"4d748fb5",9314:"3e43d34c",9329:"c269472b",9372:"67d6f914",9374:"8ac7e6d7",9384:"a4e7a69a",9409:"c7569196",9449:"2e1d2652",9458:"07f0ae54",9589:"9087e0ea",9657:"0cccd5bf",9658:"33669a59",9690:"0cd8a2c8",9756:"4ac80c37",9824:"b9ece376",9831:"de8b3aa9",9870:"f395e633",9943:"d3ab0f18"}[e]+".chunk.js",i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=2047,(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e+"../../"})(),(()=>{var e={2047:1};i.f.i=(t,n)=>{e[t]||importScripts(i.p+i.u(t))};var t=globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[],n=t.push.bind(t);t.push=t=>{var[r,o,a]=t;for(var s in o)i.o(o,s)&&(i.m[s]=o[s]);for(a&&a(i);r.length;)e[r.pop()]=1;n(t)}})(),i.nc=void 0,r=i.x,i.x=()=>Promise.all([5255,3301,6837].map(i.e,i)).then(r),i.x()})();
+//# sourceMappingURL=2047.b1e80504.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2047.b1e80504.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2047.b1e80504.chunk.js","mappings":"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AO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KA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","sources":["../webpack/runtime/chunk loaded","../webpack/runtime/create fake namespace object","../webpack/runtime/startup chunk dependencies","../../../packages/core/data_adapters/dataAdapterCache.ts","../../../packages/core/rpc/remoteAbortSignals.ts","../../../packages/core/ui/CascadingMenu.tsx","../../../packages/core/ui/Dialog.tsx","../../../packages/core/ui/EditableTypography.tsx","../../../packages/core/ui/ErrorMessage.tsx","../../../packages/core/ui/FactoryResetDialog.tsx","../../../packages/core/ui/Icons.tsx","../../../packages/core/ui/Logo.tsx","../../../packages/core/ui/Menu.tsx","../../../packages/core/ui/ResizeHandle.tsx","../../../packages/core/ui/ReturnToImportFormDialog.tsx","../../../packages/core/ui/SanitizedHTML.tsx","../../../packages/core/ui/theme.ts","../../../packages/core/ui/AssemblySelector.tsx","../../../packages/core/ui/FileSelector/FileSelector.tsx","../../../packages/core/ui/PrerenderedCanvas.tsx","../../../packages/core/util/QuickLRU.js","../../../packages/core/util/index.ts","../../../packages/core/util/tracks.ts","../../../packages/core/util/types/mst.ts","../../../plugins/data-management/src/index.ts","../../../packages/core/PluginLoader.ts","rpcWorker.ts","../../../packages/product-core/src/rpcWorker.ts","workerPolyfill.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/runtimeId","../webpack/runtime/publicPath","../webpack/runtime/importScripts chunk loading","../webpack/runtime/nonce","../webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([5255,3301,6837].map(__webpack_require__.e, __webpack_require__)).then(next);\n};","import { SnapshotIn } from 'mobx-state-tree'\nimport PluginManager from '../PluginManager'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport { AnyDataAdapter } from './BaseAdapter'\nimport idMaker from '../util/idMaker'\n\ntype ConfigSnap = SnapshotIn<AnyConfigurationSchemaType>\n\nexport function adapterConfigCacheKey(conf: Record<string, unknown> = {}) {\n  return `${idMaker(conf)}`\n}\n\ninterface AdapterCacheEntry {\n  dataAdapter: AnyDataAdapter\n  sessionIds: Set<string>\n}\n\nlet adapterCache: Record<string, AdapterCacheEntry> = {}\n\n/**\n * instantiate a data adapter, or return an already-instantiated one if we have\n * one with the same configuration\n *\n * @param pluginManager\n *\n * @param sessionId - session ID of the associated worker session. used for\n * reference counting\n *\n * @param adapterConfigSnapshot - plain-JS configuration snapshot for the\n * adapter\n */\nexport async function getAdapter(\n  pluginManager: PluginManager,\n  sessionId: string,\n  adapterConfigSnapshot: SnapshotIn<AnyConfigurationSchemaType>,\n): Promise<AdapterCacheEntry> {\n  // cache the adapter object\n  const cacheKey = adapterConfigCacheKey(adapterConfigSnapshot)\n  if (!adapterCache[cacheKey]) {\n    const adapterType = adapterConfigSnapshot?.type\n\n    if (!adapterType) {\n      throw new Error(\n        `could not determine adapter type from adapter config snapshot ${JSON.stringify(\n          adapterConfigSnapshot,\n        )}`,\n      )\n    }\n    const dataAdapterType = pluginManager.getAdapterType(adapterType)\n    if (!dataAdapterType) {\n      throw new Error(`unknown data adapter type ${adapterType}`)\n    }\n\n    // instantiate the data adapter's config schema so it gets its defaults,\n    // callbacks, etc\n    const adapterConfig = dataAdapterType.configSchema.create(\n      adapterConfigSnapshot,\n      { pluginManager },\n    )\n\n    const getSubAdapter = getAdapter.bind(null, pluginManager, sessionId)\n    const CLASS = await dataAdapterType.getAdapterClass()\n    const dataAdapter = new CLASS(adapterConfig, getSubAdapter, pluginManager)\n\n    // store it in our cache\n    adapterCache[cacheKey] = {\n      dataAdapter,\n      sessionIds: new Set([sessionId]),\n    }\n  }\n\n  const cacheEntry = adapterCache[cacheKey]\n  cacheEntry.sessionIds.add(sessionId)\n\n  return cacheEntry\n}\n\n/**\n * this is a callback that is passed to adapters that\n * allows them to get any sub-adapters that they need\n * internally, staying with the same worker session ID\n */\nexport type getSubAdapterType = (\n  adapterConfigSnap: ConfigSnap,\n) => ReturnType<typeof getAdapter>\n\nexport function freeAdapterResources(specification: Record<string, any>) {\n  let deleteCount = 0\n  const specKeys = Object.keys(specification)\n\n  // if we don't specify a range, delete any adapters that are only associated\n  // with that session\n  if (specKeys.length === 1 && specKeys[0] === 'sessionId') {\n    const { sessionId } = specification\n    Object.entries(adapterCache).forEach(([cacheKey, cacheEntry]) => {\n      cacheEntry.sessionIds.delete(sessionId)\n      if (cacheEntry.sessionIds.size === 0) {\n        deleteCount += 1\n        delete adapterCache[cacheKey]\n      }\n    })\n  } else {\n    // otherwise call freeResources on all the cached data adapters\n    Object.values(adapterCache).forEach(cacheEntry => {\n      const regions =\n        specification.regions ||\n        (specification.region ? [specification.region] : [])\n      for (const region of regions) {\n        if (region.refName !== undefined) {\n          cacheEntry.dataAdapter.freeResources(region)\n        }\n      }\n    })\n  }\n\n  return deleteCount\n}\n\nexport function clearAdapterCache() {\n  adapterCache = {}\n}\n","/* ---------------- for the RPC client ----------------- */\n\nlet abortSignalCounter = 0\nexport interface RemoteAbortSignal {\n  abortSignalId: number\n}\nconst abortSignalIds = new WeakMap<AbortSignal, number>() // map of abortsignal => numerical ID\n\n/**\n * assign an ID to the given abort signal and return a plain object\n * representation\n *\n * @param signal - the signal to serialize\n * @param callfunc - function used to call\n *  a remote method, will be called like callfunc('signalAbort', signalId)\n */\nexport function serializeAbortSignal(\n  signal: AbortSignal,\n  callfunc: (name: string, abortSignalId: number) => void,\n): RemoteAbortSignal {\n  let abortSignalId = abortSignalIds.get(signal)\n  if (!abortSignalId) {\n    abortSignalCounter += 1\n    abortSignalIds.set(signal, abortSignalCounter)\n    abortSignalId = abortSignalCounter\n    signal.addEventListener('abort', () => {\n      const signalId = abortSignalIds.get(signal)\n      if (signalId !== undefined) {\n        callfunc('signalAbort', signalId)\n      }\n    })\n  }\n  return { abortSignalId }\n}\n\n/* ---------------- for the RPC server ----------------- */\n\n/**\n * test whether a given object\n * @param thing - the thing to test\n * @returns true if the thing is a remote abort signal\n */\nexport function isRemoteAbortSignal(\n  thing: unknown,\n): thing is RemoteAbortSignal {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'abortSignalId' in thing &&\n    typeof thing.abortSignalId === 'number'\n  )\n}\n\n// the server side keeps a set of surrogate abort controllers that can be\n// aborted based on ID\nconst surrogateAbortControllers = new Map<number, AbortController>() // numerical ID => surrogate abort controller\n\n/**\n * deserialize the result of serializeAbortSignal into an AbortSignal\n *\n * @param signal -\n * @returns an abort signal that corresponds to the given ID\n */\nexport function deserializeAbortSignal({\n  abortSignalId,\n}: RemoteAbortSignal): AbortSignal {\n  let surrogateAbortController = surrogateAbortControllers.get(abortSignalId)\n  if (!surrogateAbortController) {\n    surrogateAbortController = new AbortController()\n    surrogateAbortControllers.set(abortSignalId, surrogateAbortController)\n  }\n  return surrogateAbortController.signal\n}\n\n/**\n * fire an abort signal from a remote abort signal ID\n *\n * @param abortSignalId -\n */\nexport function remoteAbort(props: { signalId: number }) {\n  const { signalId: abortSignalId } = props\n  const surrogateAbortController = surrogateAbortControllers.get(abortSignalId)\n\n  if (surrogateAbortController) {\n    surrogateAbortController.abort()\n  }\n}\n\nexport function remoteAbortRpcHandler() {\n  return {\n    signalAbort: remoteAbort,\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport React, { useContext, useMemo } from 'react'\nimport {\n  Divider,\n  ListItemIcon,\n  ListItemText,\n  ListSubheader,\n  Menu,\n  MenuItem,\n  PopoverOrigin,\n  SvgIconProps,\n} from '@mui/material'\nimport { MenuItem as JBMenuItem, MenuItemEndDecoration } from './Menu'\nimport {\n  bindHover,\n  bindFocus,\n  bindMenu,\n  usePopupState,\n  PopupState,\n} from 'material-ui-popup-state/hooks'\nimport HoverMenu from 'material-ui-popup-state/HoverMenu'\nimport ChevronRight from '@mui/icons-material/ChevronRight'\n\nconst CascadingContext = React.createContext({\n  parentPopupState: null,\n  rootPopupState: null,\n} as { parentPopupState: PopupState | null; rootPopupState: PopupState | null })\n\nfunction CascadingMenuItem({\n  onClick,\n  closeAfterItemClick,\n  ...props\n}: {\n  closeAfterItemClick: boolean\n  onClick?: Function\n  disabled?: boolean\n  children: React.ReactNode\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  if (!rootPopupState) {\n    throw new Error('must be used inside a CascadingMenu')\n  }\n\n  return (\n    <MenuItem\n      {...props}\n      onClick={event => {\n        if (closeAfterItemClick) {\n          rootPopupState.close()\n        }\n        onClick?.(event)\n      }}\n    />\n  )\n}\n\nfunction CascadingSubmenu({\n  title,\n  Icon,\n  inset,\n  popupId,\n  ...props\n}: {\n  children: React.ReactNode\n  title: React.ReactNode\n  onMenuItemClick: Function\n  Icon: React.ComponentType<SvgIconProps> | undefined\n\n  inset: boolean\n  menuItems: JBMenuItem[]\n  popupId: string\n}) {\n  const { parentPopupState } = useContext(CascadingContext)\n  const popupState = usePopupState({\n    popupId,\n    variant: 'popover',\n    parentPopupState,\n  })\n  return (\n    <>\n      <MenuItem {...bindHover(popupState)} {...bindFocus(popupState)}>\n        {Icon ? (\n          <ListItemIcon>\n            <Icon />\n          </ListItemIcon>\n        ) : null}\n        <ListItemText primary={title} inset={inset} />\n        <ChevronRight />\n      </MenuItem>\n      <CascadingSubmenuHover\n        {...props}\n        anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n        transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n        popupState={popupState}\n      />\n    </>\n  )\n}\n\nfunction CascadingSubmenuHover({\n  popupState,\n  onMenuItemClick,\n  menuItems,\n  classes,\n  ...props\n}: {\n  classes?: Record<string, string>\n  popupState: PopupState\n  anchorOrigin: PopoverOrigin\n  transformOrigin: PopoverOrigin\n  onMenuItemClick: Function\n  menuItems: JBMenuItem[]\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  const context = useMemo(\n    () => ({\n      rootPopupState: rootPopupState || popupState,\n      parentPopupState: popupState,\n    }),\n    [rootPopupState, popupState],\n  )\n\n  return (\n    <CascadingContext.Provider value={context}>\n      <HoverMenu {...props} {...bindMenu(popupState)} />\n    </CascadingContext.Provider>\n  )\n}\n\nfunction CascadingMenu({\n  popupState,\n  onMenuItemClick,\n  menuItems,\n  ...props\n}: {\n  popupState: PopupState\n  onMenuItemClick: Function\n  menuItems: JBMenuItem[]\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  const context = useMemo(\n    () => ({\n      rootPopupState: rootPopupState || popupState,\n      parentPopupState: popupState,\n    }),\n    [rootPopupState, popupState],\n  )\n\n  return (\n    <CascadingContext.Provider value={context}>\n      <Menu {...props} {...bindMenu(popupState)} />\n    </CascadingContext.Provider>\n  )\n}\n\nfunction EndDecoration({ item }: { item: JBMenuItem }) {\n  if ('subMenu' in item) {\n    return <MenuItemEndDecoration type=\"subMenu\" />\n  } else if (item.type === 'checkbox' || item.type === 'radio') {\n    return (\n      <MenuItemEndDecoration\n        type={item.type}\n        checked={item.checked}\n        disabled={item.disabled}\n      />\n    )\n  }\n  return null\n}\n\nfunction CascadingMenuList({\n  onMenuItemClick,\n  closeAfterItemClick,\n  menuItems,\n  ...props\n}: {\n  menuItems: JBMenuItem[]\n  closeAfterItemClick: boolean\n  onMenuItemClick: Function\n}) {\n  function handleClick(callback: Function) {\n    return (event: React.MouseEvent<HTMLLIElement>) => {\n      onMenuItemClick(event, callback)\n    }\n  }\n\n  const hasIcon = menuItems.some(m => 'icon' in m && m.icon)\n  return (\n    <>\n      {menuItems\n        .sort((a, b) => (b.priority || 0) - (a.priority || 0))\n        .map((item, idx) => {\n          return 'subMenu' in item ? (\n            <CascadingSubmenu\n              key={`subMenu-${item.label}-${idx}`}\n              popupId={`subMenu-${item.label}`}\n              title={item.label}\n              Icon={item.icon}\n              inset={hasIcon && !item.icon}\n              onMenuItemClick={onMenuItemClick}\n              menuItems={item.subMenu}\n            >\n              <CascadingMenuList\n                {...props}\n                closeAfterItemClick={closeAfterItemClick}\n                onMenuItemClick={onMenuItemClick}\n                menuItems={item.subMenu}\n              />\n            </CascadingSubmenu>\n          ) : item.type === 'divider' ? (\n            <Divider\n              key={`divider-${JSON.stringify(item)}-${idx}`}\n              component=\"li\"\n            />\n          ) : item.type === 'subHeader' ? (\n            <ListSubheader key={`subHeader-${item.label}-${idx}`}>\n              {item.label}\n            </ListSubheader>\n          ) : (\n            <CascadingMenuItem\n              key={`${item.label}-${idx}`}\n              closeAfterItemClick={closeAfterItemClick}\n              onClick={\n                'onClick' in item ? handleClick(item.onClick) : undefined\n              }\n              disabled={Boolean(item.disabled)}\n            >\n              {item.icon ? (\n                <ListItemIcon>\n                  <item.icon />\n                </ListItemIcon>\n              ) : null}{' '}\n              <ListItemText\n                primary={item.label}\n                secondary={item.subLabel}\n                inset={hasIcon && !item.icon}\n              />\n              <div style={{ flexGrow: 1, minWidth: 10 }} />\n              <EndDecoration item={item} />\n            </CascadingMenuItem>\n          )\n        })}\n    </>\n  )\n}\n\nfunction CascadingMenuChildren(props: {\n  onMenuItemClick: Function\n  closeAfterItemClick?: boolean\n  menuItems: JBMenuItem[]\n  popupState: PopupState\n}) {\n  const { closeAfterItemClick = true, ...rest } = props\n  return (\n    <CascadingMenu {...rest}>\n      <CascadingMenuList {...rest} closeAfterItemClick={closeAfterItemClick} />\n    </CascadingMenu>\n  )\n}\n\nexport default CascadingMenuChildren\n","import React from 'react'\nimport {\n  Dialog as MUIDialog,\n  DialogTitle,\n  DialogProps,\n  Divider,\n  IconButton,\n  ScopedCssBaseline,\n  ThemeProvider,\n  createTheme,\n  useTheme,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { ErrorBoundary } from 'react-error-boundary'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n// locals\nimport ErrorMessage from './ErrorMessage'\nimport SanitizedHTML from './SanitizedHTML'\n\nconst useStyles = makeStyles()(theme => ({\n  closeButton: {\n    position: 'absolute',\n    right: theme.spacing(1),\n    top: theme.spacing(1),\n    color: theme.palette.grey[500],\n  },\n}))\n\nfunction DialogError({ error }: { error: unknown }) {\n  return (\n    <div style={{ width: 800, margin: 40 }}>\n      <ErrorMessage error={error} />\n    </div>\n  )\n}\n\ninterface Props extends DialogProps {\n  header?: React.ReactNode\n}\n\nconst Dialog = observer(function (props: Props) {\n  const { classes } = useStyles()\n  const { title, header, children, onClose } = props\n  const theme = useTheme()\n\n  return (\n    <MUIDialog {...props}>\n      <ScopedCssBaseline>\n        {React.isValidElement(header) ? (\n          header\n        ) : (\n          <DialogTitle>\n            <SanitizedHTML html={title || ''} />\n            {onClose ? (\n              <IconButton\n                className={classes.closeButton}\n                onClick={() => {\n                  // @ts-expect-error\n                  onClose()\n                }}\n              >\n                <CloseIcon />\n              </IconButton>\n            ) : null}\n          </DialogTitle>\n        )}\n        <Divider />\n\n        <ErrorBoundary FallbackComponent={DialogError}>\n          <ThemeProvider\n            theme={createTheme(theme, {\n              components: {\n                MuiInputBase: {\n                  styleOverrides: {\n                    input: {\n                      // xref https://github.com/GMOD/jbrowse-components/pull/3666\n                      boxSizing: 'content-box!important' as 'content-box',\n                    },\n                  },\n                },\n              },\n            })}\n          >\n            {children}\n          </ThemeProvider>\n        </ErrorBoundary>\n      </ScopedCssBaseline>\n    </MUIDialog>\n  )\n})\n\nexport default Dialog\n","import React, { useEffect, useState } from 'react'\nimport { InputBase, Typography, TypographyProps, useTheme } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport useMeasure from '@jbrowse/core/util/useMeasure'\n\ntype Variant = TypographyProps['variant']\n\ntype EditableTypographyClassKey =\n  | 'input'\n  | 'inputBase'\n  | 'inputRoot'\n  | 'inputFocused'\n\nconst useStyles = makeStyles()(theme => ({\n  input: {},\n  inputBase: {},\n  typography: {\n    top: 6,\n    left: 2,\n    position: 'absolute',\n    whiteSpace: 'nowrap',\n    visibility: 'hidden',\n  },\n  inputRoot: {\n    padding: theme.spacing(0.5),\n  },\n  inputFocused: {\n    borderStyle: 'solid',\n    borderWidth: 2,\n  },\n}))\n\ninterface Props {\n  value: string\n  setValue: (value: string) => void\n  variant: Variant\n  classes?: Partial<Record<EditableTypographyClassKey, string>>\n}\n\n// using forwardRef so that MUI Tooltip can wrap this component\nconst EditableTypography = React.forwardRef<HTMLDivElement, Props>(\n  function EditableTypography2(props, ref) {\n    const { value, setValue, variant, ...other } = props\n    const [ref2, { width }] = useMeasure()\n    const [editedValue, setEditedValue] = useState<string>()\n    const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null)\n    const [blur, setBlur] = useState(false)\n\n    useEffect(() => {\n      if (blur) {\n        inputNode?.blur()\n        setBlur(false)\n      }\n    }, [blur, inputNode])\n\n    // possibly tss-react does not understand the passing of props to\n    // useStyles, but it appears to work\n    // @ts-expect-error\n    const { classes } = useStyles(props, { props })\n    const theme = useTheme()\n\n    const val = editedValue === undefined ? value : editedValue\n\n    return (\n      <div {...other} ref={ref}>\n        <div style={{ position: 'relative' }}>\n          <Typography\n            ref={ref2}\n            component=\"span\"\n            variant={variant}\n            className={classes.typography}\n          >\n            {val}\n          </Typography>\n        </div>\n        <InputBase\n          inputRef={node => {\n            setInputNode(node)\n          }}\n          className={classes.inputBase}\n          inputProps={{\n            style: {\n              width,\n              ...(variant && variant !== 'inherit'\n                ? theme.typography[variant]\n                : {}),\n            },\n          }}\n          classes={{\n            input: classes.input,\n            root: classes.inputRoot,\n            focused: classes.inputFocused,\n          }}\n          value={val}\n          onChange={event => {\n            setEditedValue(event.target.value)\n          }}\n          onKeyDown={event => {\n            if (event.key === 'Enter') {\n              inputNode?.blur()\n            } else if (event.key === 'Escape') {\n              setEditedValue(undefined)\n              setBlur(true)\n            }\n          }}\n          onBlur={() => {\n            setValue(editedValue || value || '')\n            setEditedValue(undefined)\n          }}\n        />\n      </div>\n    )\n  },\n)\n\nexport default EditableTypography\n","import React, { Suspense, lazy, useState } from 'react'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport RedErrorMessageBox from './RedErrorMessageBox'\n\n// icons\nimport RefreshIcon from '@mui/icons-material/Refresh'\nimport ReportIcon from '@mui/icons-material/Report'\n\n// lazies\nconst ErrorMessageStackTraceDialog = lazy(\n  () => import('./ErrorMessageStackTraceDialog'),\n)\n\nconst useStyles = makeStyles()(theme => ({\n  bg: {\n    background: theme.palette.divider,\n    border: '1px solid black',\n    margin: 20,\n  },\n  iconFloat: {\n    float: 'right',\n    marginLeft: 100,\n  },\n}))\n\nfunction parseError(str: string) {\n  let snapshotError = ''\n  const findStr = 'is not assignable'\n  const idx = str.indexOf(findStr)\n  if (idx !== -1) {\n    const trim = str.slice(0, idx + findStr.length)\n    // best effort to make a better error message than the default\n    // mobx-state-tree\n\n    // case 1. element has a path\n    const match = /.*at path \"(.*)\" snapshot `(.*)` is not assignable/m.exec(\n      trim,\n    )\n    if (match) {\n      str = `Failed to load element at ${match[1]}...Failed element had snapshot`\n      snapshotError = match[2]!\n    }\n\n    // case 2. element has no path\n    const match2 = /.*snapshot `(.*)` is not assignable/.exec(trim)\n    if (match2) {\n      str = 'Failed to load element...Failed element had snapshot'\n      snapshotError = match2[1]!\n    }\n  }\n  return snapshotError\n}\n\nfunction ErrorButtons({\n  error,\n  onReset,\n}: {\n  error: unknown\n  onReset?: () => void\n}) {\n  const { classes } = useStyles()\n  const [showStack, setShowStack] = useState(false)\n  return (\n    <div className={classes.iconFloat}>\n      {typeof error === 'object' && error && 'stack' in error ? (\n        <Tooltip title=\"Get stack trace\">\n          <IconButton\n            onClick={() => {\n              setShowStack(true)\n            }}\n            color=\"primary\"\n          >\n            <ReportIcon />\n          </IconButton>\n        </Tooltip>\n      ) : null}\n      {onReset ? (\n        <Tooltip title=\"Retry\">\n          <IconButton onClick={onReset} color=\"primary\">\n            <RefreshIcon />\n          </IconButton>\n        </Tooltip>\n      ) : null}\n      {showStack ? (\n        <Suspense fallback={null}>\n          <ErrorMessageStackTraceDialog\n            error={error}\n            onClose={() => {\n              setShowStack(false)\n            }}\n          />\n        </Suspense>\n      ) : null}\n    </div>\n  )\n}\n\nfunction ErrorMessage({\n  error,\n  onReset,\n}: {\n  error: unknown\n  onReset?: () => void\n}) {\n  const { classes } = useStyles()\n  const str = `${error}`\n  const str2 = str.indexOf('expected an instance of')\n  const str3 = str2 !== -1 ? str.slice(0, str2) : str\n  const snapshotError = parseError(str)\n  return (\n    <RedErrorMessageBox>\n      {str3.slice(0, 10000)}\n      <ErrorButtons error={error} onReset={onReset} />\n      {snapshotError ? (\n        <pre className={classes.bg}>\n          {JSON.stringify(JSON.parse(snapshotError), null, 2)}\n        </pre>\n      ) : null}\n    </RedErrorMessageBox>\n  )\n}\n\nexport default ErrorMessage\n","import React from 'react'\nimport {\n  Button,\n  DialogContent,\n  DialogContentText,\n  DialogActions,\n} from '@mui/material'\nimport Dialog from '@jbrowse/core/ui/Dialog'\n\nexport default function FactoryResetDialog({\n  onClose,\n  open,\n  onFactoryReset,\n}: {\n  onClose: () => void\n  open: boolean\n  onFactoryReset: () => void\n}) {\n  function handleDialogClose(action?: string) {\n    if (action === 'reset') {\n      onFactoryReset()\n    }\n    onClose()\n  }\n\n  return (\n    <Dialog\n      title=\"Reset\"\n      onClose={() => {\n        handleDialogClose()\n      }}\n      open={open}\n    >\n      <DialogContent>\n        <DialogContentText>\n          Are you sure you want to reset? This will restore the default\n          configuration.\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleDialogClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          onClick={() => {\n            handleDialogClose('reset')\n          }}\n          color=\"primary\"\n          variant=\"contained\"\n        >\n          OK\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon'\nimport React from 'react'\n\n// Icons below come from https://material.io/resources/icons/?icon=line_style&style=baseline\nexport function ContentCopy(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\" />\n    </SvgIcon>\n  )\n}\n\n// https://materialdesignicons.com/ text-search icon\nexport function Indexing(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z\" />\n    </SvgIcon>\n  )\n}\n\nexport function ContentCut(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z\" />\n    </SvgIcon>\n  )\n}\n\nexport function ContentPaste(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z\" />\n    </SvgIcon>\n  )\n}\n\n//  format-list-checkbox from https://materialdesignicons.com/\nexport function TrackSelector(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z\" />\n    </SvgIcon>\n  )\n}\n\n//  content-save-edit from https://materialdesignicons.com/\nexport function SaveAs(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z\"\n      />\n    </SvgIcon>\n  )\n}\n\n//  content-save from https://materialdesignicons.com/\nexport function Save(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z\"\n      />\n    </SvgIcon>\n  )\n}\n\n//  dna from https://materialdesignicons.com/\nexport function DNA(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z\"\n      />\n    </SvgIcon>\n  )\n}\n\nexport function Cable(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z\" />\n    </SvgIcon>\n  )\n}\n","import React from 'react'\n\ntype LogoVariant = 'color' | 'black' | 'white'\n\ninterface LogoProps {\n  variant?: LogoVariant\n}\n\nfunction getColors(variant?: LogoVariant) {\n  if (variant === 'black') {\n    return {\n      midnight: '#808080',\n      forrest: '#666666',\n      grape: '#4d4d4d',\n      mandarin: '#333333',\n      gray: '#1a1a1a',\n    }\n  }\n  if (variant === 'white') {\n    return {\n      midnight: '#ffffff',\n      forrest: '#e6e6e6',\n      grape: '#cccccc',\n      mandarin: '#b3b3b3',\n      gray: '#999999',\n    }\n  }\n  return {\n    midnight: '#0d233f',\n    forrest: '#135560',\n    grape: '#721e63',\n    mandarin: '#ffb11d',\n    gray: '#dadada',\n  }\n}\n\nexport function Logomark({ variant }: LogoProps) {\n  return (\n    <svg viewBox=\"0 0 175 175\">\n      <Icon variant={variant} />\n    </svg>\n  )\n}\n\nexport function LogoFull({ variant }: LogoProps) {\n  return (\n    <svg viewBox=\"0 0 641 175\">\n      <Text variant={variant} />\n      <Icon variant={variant} />\n    </svg>\n  )\n}\n\nfunction Icon({ variant }: LogoProps) {\n  const colors = getColors(variant)\n  return (\n    <>\n      <path\n        style={{ fill: colors.midnight }}\n        d=\"M120.5,57.5c.168,0,.333.012.5.013V40.506c-.167,0-.333-.006-.5-.006a98.325,98.325,0,0,0-77.4,37.565q-2.664,3.378-5.023,6.994l14.206,9.327Q54.043,91.709,56,89.179A81.363,81.363,0,0,1,120.5,57.5Z\"\n      />\n      <path\n        style={{ fill: colors.forrest }}\n        d=\"M148.668,86.223c.308.133.6.283.908.42l6.746-15.618c-.153-.067-.3-.143-.454-.21a81.36,81.36,0,0,0-71.777,3.5q-2.8,1.544-5.469,3.309l9.249,14.054A63.93,63.93,0,0,1,148.668,86.223Z\"\n      />\n      <path\n        style={{ fill: colors.grape }}\n        d=\"M170.894,109.37A63.929,63.929,0,0,0,113.4,88.861l2.336,15.474a48.456,48.456,0,0,1,44.322,15.42c.111.125.214.255.324.381l11.16-10C171.323,109.879,171.118,109.62,170.894,109.37Z\"\n      />\n      <path\n        style={{ fill: colors.mandarin }}\n        d=\"M150.921,150.314c.04.163.07.326.107.489l16.509-4.058c-.039-.163-.067-.326-.107-.489A48.457,48.457,0,0,0,135.575,111.8l-5.515,15.591A32.466,32.466,0,0,1,150.921,150.314Z\"\n      />\n      <path\n        style={{ fill: colors.gray }}\n        d=\"M134.1,138.129l-9.779,13.213a32.486,32.486,0,0,1,7.823,14.463l15.147.852c.012-.166.032-.331.041-.5A32.464,32.464,0,0,0,134.1,138.129Z\"\n      />\n    </>\n  )\n}\n\nfunction Text({ variant }: LogoProps) {\n  const colors = getColors(variant)\n  return (\n    <g\n      aria-label=\"JBrowse\"\n      transform=\"translate(213.084 144.241)\"\n      style={{ fill: colors.midnight }}\n    >\n      <path d=\"m 26.355,-71.505 v 54.075 2.835 q 0,6.825 -0.42,10.185 -0.735,5.67 -2.835,9.135 -3.255,5.355 -8.505,8.4 -4.83,2.73 -11.55,3.57 L 1.47,11.76 Q 7.35,10.185 9.24,4.2 10.605,-0.105 10.605,-9.975 v -5.565 -55.965 q 1.785,0 4.62,0.315 2.835,0.21 3.255,0.21 1.785,0 2.94,-0.105 4.515,-0.42 4.935,-0.42 z\" />\n      <path d=\"m 60.68836,-65.415 v 24.78 h 3.255 q 2.94,0 4.935,-0.525 2.1,-0.525 3.885,-2.1 2.31,-1.995 3.36,-4.83 1.155,-2.835 1.155,-6.09 0,-5.565 -2.94,-8.61 -2.94,-3.045 -8.295,-3.045 -2.52,0 -5.355,0.42 z m 0,30.87 V -6.09 h 5.25 q 4.725,0 8.505,-3.675 3.885,-3.78 3.885,-10.08 0,-8.19 -4.62,-11.655 -4.095,-3.045 -13.02,-3.045 z M 44.93836,0 v -71.505 h 27.09 q 9.135,0 14.385,3.255 6.51,3.99 6.51,12.6 0,7.035 -5.25,11.655 -4.62,4.095 -11.97,5.145 v 0.945 q 7.56,0.735 12.285,3.99 6.615,4.62 6.615,13.335 0,10.185 -7.98,15.75 -6.93,4.83 -17.43,4.83 z\" />\n      <path d=\"M 109.44281,0.525 V -50.4 q 1.785,0.21 3.99,0.42 2.31,0.105 3.255,0.105 2.31,0 4.2,-0.21 1.89,-0.21 3.045,-0.315 v 13.02 q 1.89,-6.51 5.46,-9.87 4.41,-4.095 11.655,-4.095 -0.315,2.73 -0.42,6.825 -0.105,3.99 -0.105,7.455 l -0.945,0.84 q -0.945,-0.735 -2.415,-1.05 -1.47,-0.315 -2.94,-0.315 -3.57,0 -6.195,1.89 -2.52,1.785 -3.465,5.04 -0.42,1.155 -0.525,3.15 -0.105,1.89 -0.105,4.515 v 4.515 19.005 q -1.785,-0.21 -2.625,-0.21 -3.675,-0.315 -4.62,-0.315 -2.31,0 -4.2,0.21 -1.89,0.21 -3.045,0.315 z\" />\n      <path d=\"m 173.77337,1.47 q -11.655,0 -18.585,-6.825 -6.93,-6.825 -6.93,-18.48 0,-12.6 6.72,-20.055 6.825,-7.455 18.9,-7.455 11.97,0 18.9,6.72 6.93,6.72 6.93,18.48 0,12.285 -6.72,19.74 -7.14,7.875 -19.215,7.875 z m 0.735,-48.09 q -5.88,0 -8.505,6.51 -2.205,5.565 -2.205,15.96 0,8.19 1.47,12.915 2.415,7.98 8.505,7.98 5.565,0 8.19,-7.875 2.205,-6.51 2.205,-16.695 0,-8.505 -2.1,-13.23 -2.52,-5.565 -7.56,-5.565 z\" />\n      <path d=\"m 222.03563,-50.4 10.5,36.015 q 3.675,-11.235 5.67,-17.85 2.415,-8.085 5.04,-18.165 1.05,0.105 3.045,0.315 2.1,0.21 2.835,0.21 1.995,0 3.15,-0.105 1.26,-0.21 2.73,-0.42 l 10.71,36.015 q 5.88,-17.43 10.71,-36.015 l 4.2,0.315 4.095,-0.315 q -5.145,13.125 -9.135,24.57 -5.04,14.28 -8.505,26.355 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.205,-0.105 -1.89,0 -3.36,0.21 -1.365,0.21 -2.31,0.315 l -10.605,-34.755 q -4.41,13.65 -6.72,21.105 -2.31,7.35 -4.095,13.65 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.31,-0.105 -1.995,0 -3.465,0.21 -1.365,0.21 -2.31,0.315 -3.78,-12.81 -5.04,-17.01 -2.205,-7.245 -5.46,-17.01 -2.835,-8.4 -5.88,-16.905 1.575,0 4.305,0.315 2.73,0.21 3.36,0.21 1.47,0 4.305,-0.21 2.835,-0.315 3.465,-0.315 z\" />\n      <path d=\"m 292.84172,-12.81 h 2.625 q 1.47,4.095 4.62,6.51 3.15,2.415 7.35,2.415 2.94,0 5.46,-1.785 2.625,-1.89 2.625,-4.62 0,-3.885 -6.195,-6.615 -10.395,-4.62 -11.655,-5.46 -6.405,-4.515 -6.405,-12.285 0,-7.77 5.25,-12.18 5.25,-4.515 12.81,-4.515 3.99,0 8.085,1.365 4.095,1.26 7.14,3.57 l -2.52,9.24 h -2.94 q -0.63,-3.57 -3.57,-6.195 -2.835,-2.625 -6.405,-2.625 -3.15,0 -5.46,1.575 -2.31,1.47 -2.31,4.515 0,3.885 6.405,6.51 10.185,4.095 11.865,5.25 6.405,4.41 6.405,12.81 0,7.455 -5.46,12.18 -5.355,4.62 -14.805,4.62 -8.19,0 -14.49,-4.305 z\" />\n      <path d=\"m 349.61228,-29.925 h 15.54 q 0,-6.51 -1.05,-10.395 -1.68,-6.3 -5.88,-6.3 -5.04,0 -7.14,6.195 -1.47,4.305 -1.47,10.5 z m 30.03,5.04 h -30.03 q 0,9.135 3.045,13.86 3.57,5.67 11.55,5.67 3.255,0 6.405,-1.26 3.15,-1.26 5.88,-3.465 l 1.26,0.945 -2.31,5.88 q -6.72,4.725 -15.015,4.725 -12.915,0 -19.635,-7.245 -6.72,-7.245 -6.72,-20.37 0,-11.235 6.405,-18.165 6.51,-7.035 17.64,-7.035 11.655,0 16.905,7.56 4.62,6.615 4.62,18.9 z\" />\n    </g>\n  )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport {\n  Divider,\n  ListItemIcon,\n  ListItemText,\n  ListSubheader,\n  MenuProps as MUIMenuProps,\n  MenuItem as MUIMenuItem,\n  MenuItemProps,\n  MenuList,\n  Paper,\n  Popover,\n  PopoverProps,\n  SvgIconProps,\n  Grow,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n// icons\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight'\nimport CheckBoxIcon from '@mui/icons-material/CheckBox'\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'\nimport RadioButtonCheckedIcon from '@mui/icons-material/RadioButtonChecked'\nimport RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'\n\n// other\nimport { findLastIndex } from '../util'\n\nconst useStyles = makeStyles()({\n  paper: {\n    position: 'fixed',\n    overflowY: 'auto',\n    overflowX: 'hidden',\n    // So we see the popover when it's empty.\n    minWidth: 16,\n    minHeight: 16,\n    maxWidth: 'calc(100% - 32px)',\n    maxHeight: 'calc(100% - 32px)',\n    top: 0,\n    left: 0,\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n  },\n  menuItemEndDecoration: {\n    padding: 0,\n    margin: 0,\n    height: 16,\n  },\n})\n\ninterface MenuItemEndDecorationSubMenuProps {\n  type: 'subMenu'\n}\n\ninterface MenuItemEndDecorationSelectorProps {\n  type: 'checkbox' | 'radio'\n  checked: boolean\n  disabled?: boolean\n}\n\ntype MenuItemEndDecorationProps =\n  | MenuItemEndDecorationSubMenuProps\n  | MenuItemEndDecorationSelectorProps\n\nexport function MenuItemEndDecoration(props: MenuItemEndDecorationProps) {\n  const { classes } = useStyles()\n  const { type } = props\n  let checked: boolean | undefined\n  let disabled: boolean | undefined\n  if ('checked' in props) {\n    ;({ checked, disabled } = props)\n  }\n  let icon: React.ReactElement\n  switch (type) {\n    case 'subMenu': {\n      icon = <ArrowRightIcon color=\"action\" />\n      break\n    }\n    case 'checkbox': {\n      if (checked) {\n        const color = disabled ? 'inherit' : undefined\n        icon = <CheckBoxIcon color={color} />\n      } else {\n        icon = <CheckBoxOutlineBlankIcon color=\"action\" />\n      }\n      break\n    }\n    case 'radio': {\n      if (checked) {\n        const color = disabled ? 'inherit' : undefined\n        icon = <RadioButtonCheckedIcon color={color} />\n      } else {\n        icon = <RadioButtonUncheckedIcon color=\"action\" />\n      }\n      break\n    }\n    // No default\n  }\n  return <div className={classes.menuItemEndDecoration}>{icon}</div>\n}\n\nexport interface MenuDivider {\n  priority?: number\n  type: 'divider'\n}\n\nexport interface MenuSubHeader {\n  type: 'subHeader'\n  priority?: number\n  label: string\n}\n\nexport interface BaseMenuItem {\n  id?: string // used as react key if provided\n  label: React.ReactNode\n  priority?: number\n  subLabel?: string\n  icon?: React.ComponentType<SvgIconProps>\n  disabled?: boolean\n}\n\nexport interface NormalMenuItem extends BaseMenuItem {\n  type?: 'normal'\n  onClick: (...args: any[]) => void\n}\n\nexport interface CheckboxMenuItem extends BaseMenuItem {\n  type: 'checkbox'\n  checked: boolean\n  onClick: (...args: any[]) => void\n}\n\nexport interface RadioMenuItem extends BaseMenuItem {\n  type: 'radio'\n  checked: boolean\n  onClick: (...args: any[]) => void\n}\n\nexport interface SubMenuItem extends BaseMenuItem {\n  type?: 'subMenu'\n  subMenu: MenuItem[]\n}\n\nexport type MenuItem =\n  | MenuDivider\n  | MenuSubHeader\n  | NormalMenuItem\n  | CheckboxMenuItem\n  | RadioMenuItem\n  | SubMenuItem\n\ntype AnchorElProp = MUIMenuProps['anchorEl']\ntype OpenProp = MUIMenuProps['open']\ntype OnCloseProp = MUIMenuProps['onClose']\n\ninterface MenuPageProps {\n  menuItems: MenuItem[]\n  onMenuItemClick: (\n    event: React.MouseEvent<HTMLLIElement>,\n    callback: (...args: any[]) => void,\n  ) => void\n  anchorEl?: AnchorElProp\n  open: OpenProp\n  onClose: OnCloseProp\n  top?: boolean\n}\n\ntype MenuItemStyleProp = MenuItemProps['style']\n\nfunction checkIfValid(m: MenuItem) {\n  return m.type !== 'divider' && m.type !== 'subHeader' && !m.disabled\n}\nfunction findNextValidIdx(menuItems: MenuItem[], currentIdx: number) {\n  const idx = menuItems.slice(currentIdx + 1).findIndex(checkIfValid)\n  if (idx === -1) {\n    return idx\n  }\n  return currentIdx + 1 + idx\n}\n\nfunction findPreviousValidIdx(menuItems: MenuItem[], currentIdx: number) {\n  return findLastIndex(menuItems.slice(0, currentIdx), checkIfValid)\n}\n\nconst MenuPage = React.forwardRef<HTMLDivElement, MenuPageProps>(\n  function MenuPage2(props, ref) {\n    const [subMenuAnchorEl, setSubMenuAnchorEl] = useState<HTMLElement>()\n    const [openSubMenuIdx, setOpenSubMenuIdx] = useState<number>()\n    const [isSubMenuOpen, setIsSubMenuOpen] = useState(false)\n    const [selectedMenuItemIdx, setSelectedMenuItemIdx] = useState<number>()\n    const [position, setPosition] = useState<{\n      top?: number\n      left?: number\n    }>()\n    const paperRef = useRef<HTMLDivElement | null>(null)\n    const { classes } = useStyles()\n\n    const {\n      menuItems,\n      onMenuItemClick,\n      open,\n      onClose,\n      anchorEl,\n      top = false,\n    } = props\n\n    useEffect(() => {\n      if (!open) {\n        setSubMenuAnchorEl(undefined)\n        setOpenSubMenuIdx(undefined)\n      }\n    }, [open])\n\n    useEffect(() => {\n      const shouldSubMenuBeOpen = open && Boolean(subMenuAnchorEl)\n      let timer: ReturnType<typeof setTimeout>\n      if (shouldSubMenuBeOpen && !isSubMenuOpen) {\n        timer = setTimeout(() => {\n          setIsSubMenuOpen(true)\n        }, 300)\n      } else if (!shouldSubMenuBeOpen && isSubMenuOpen) {\n        timer = setTimeout(() => {\n          setIsSubMenuOpen(false)\n        }, 300)\n      }\n      return () => {\n        clearTimeout(timer)\n      }\n    }, [isSubMenuOpen, open, subMenuAnchorEl])\n\n    useEffect(() => {\n      if (anchorEl) {\n        const rect = (anchorEl as HTMLElement).getBoundingClientRect()\n        if (position) {\n          if (\n            rect.top !== position.top ||\n            rect.left + rect.width !== position.left\n          ) {\n            setPosition({ top: rect.top, left: rect.left + rect.width })\n          }\n        } else {\n          setPosition({ top: rect.top, left: rect.left + rect.width })\n        }\n      } else if (!position) {\n        setPosition({})\n      }\n    }, [position, anchorEl])\n\n    const hasIcon = menuItems.some(\n      menuItem => 'icon' in menuItem && menuItem.icon,\n    )\n    const menuItemStyle: MenuItemStyleProp = {}\n\n    function handleClick(callback: (...args: any[]) => void) {\n      return (event: React.MouseEvent<HTMLLIElement>) => {\n        onMenuItemClick(event, callback)\n      }\n    }\n\n    const ListContents = (\n      <>\n        <MenuList autoFocusItem={open && !isSubMenuOpen} dense>\n          {menuItems\n            .sort((a, b) => (b.priority || 0) - (a.priority || 0))\n            .map((menuItem, idx) => {\n              if (menuItem.type === 'divider') {\n                return (\n                  <Divider\n                    key={`divider-${JSON.stringify(menuItem)}-${idx}`}\n                    component=\"li\"\n                  />\n                )\n              }\n              if (menuItem.type === 'subHeader') {\n                return (\n                  <ListSubheader key={`subHeader-${menuItem.label}-${idx}`}>\n                    {menuItem.label}\n                  </ListSubheader>\n                )\n              }\n              let icon = null\n              let endDecoration = null\n              if (menuItem.icon) {\n                const Icon = menuItem.icon\n                icon = (\n                  <ListItemIcon>\n                    <Icon />\n                  </ListItemIcon>\n                )\n              }\n              if ('subMenu' in menuItem) {\n                endDecoration = <MenuItemEndDecoration type=\"subMenu\" />\n              } else if (\n                menuItem.type === 'checkbox' ||\n                menuItem.type === 'radio'\n              ) {\n                endDecoration = (\n                  <MenuItemEndDecoration\n                    type={menuItem.type}\n                    checked={menuItem.checked}\n                    disabled={menuItem.disabled}\n                  />\n                )\n              }\n              const onClick =\n                'onClick' in menuItem\n                  ? handleClick(menuItem.onClick)\n                  : undefined\n              return (\n                <MUIMenuItem\n                  key={menuItem.id || String(menuItem.label)}\n                  style={menuItemStyle}\n                  selected={idx === selectedMenuItemIdx}\n                  onClick={onClick}\n                  onMouseMove={e => {\n                    if (e.currentTarget !== document.activeElement) {\n                      e.currentTarget.focus()\n                      setSelectedMenuItemIdx(idx)\n                    }\n                    if ('subMenu' in menuItem) {\n                      if (openSubMenuIdx !== idx) {\n                        setSubMenuAnchorEl(e.currentTarget)\n                        setOpenSubMenuIdx(idx)\n                      }\n                    } else {\n                      setSubMenuAnchorEl(undefined)\n                      setOpenSubMenuIdx(undefined)\n                    }\n                  }}\n                  onKeyDown={e => {\n                    switch (e.key) {\n                      case 'ArrowLeft':\n                      case 'Escape': {\n                        onClose?.(e, 'escapeKeyDown')\n\n                        break\n                      }\n                      case 'ArrowUp': {\n                        setSelectedMenuItemIdx(\n                          findPreviousValidIdx(menuItems, idx),\n                        )\n\n                        break\n                      }\n                      case 'ArrowDown': {\n                        const a = findNextValidIdx(menuItems, idx)\n                        setSelectedMenuItemIdx(a)\n\n                        break\n                      }\n                      default: {\n                        if (\n                          'subMenu' in menuItem &&\n                          (e.key === 'ArrowRight' || e.key === 'Enter')\n                        ) {\n                          setSubMenuAnchorEl(e.currentTarget)\n                          setOpenSubMenuIdx(idx)\n                          setIsSubMenuOpen(true)\n                        }\n                      }\n                    }\n                  }}\n                  disabled={Boolean(menuItem.disabled)}\n                >\n                  {icon}\n                  <ListItemText\n                    primary={menuItem.label}\n                    secondary={menuItem.subLabel}\n                    inset={hasIcon && !menuItem.icon}\n                  />\n                  {endDecoration}\n                </MUIMenuItem>\n              )\n            })}\n        </MenuList>\n        {menuItems.map((menuItem, idx) => {\n          let subMenu = null\n          if ('subMenu' in menuItem) {\n            subMenu = (\n              <MenuPage\n                key={menuItem.id || String(menuItem.label)}\n                anchorEl={subMenuAnchorEl}\n                open={isSubMenuOpen && openSubMenuIdx === idx}\n                onClose={() => {\n                  setIsSubMenuOpen(false)\n                  setSubMenuAnchorEl(undefined)\n                }}\n                onMenuItemClick={onMenuItemClick}\n                menuItems={menuItem.subMenu}\n              />\n            )\n          }\n          return subMenu\n        })}\n      </>\n    )\n\n    return top ? (\n      ListContents\n    ) : (\n      // Grow is required for cascading sub-menus\n      <Grow in={open} style={{ transformOrigin: '0 0 0' }} ref={ref}>\n        <Paper\n          elevation={8}\n          ref={paperRef}\n          className={classes.paper}\n          style={{ ...position }}\n        >\n          {ListContents}\n        </Paper>\n      </Grow>\n    )\n  },\n)\n\ninterface MenuProps extends PopoverProps {\n  menuItems: MenuItem[]\n  onMenuItemClick: (\n    event: React.MouseEvent<HTMLLIElement>,\n    callback: (...args: any[]) => void,\n  ) => void\n}\n\nfunction Menu(props: MenuProps) {\n  const { open, onClose, menuItems, onMenuItemClick, ...other } = props\n\n  return (\n    <Popover\n      open={open}\n      onClose={onClose}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n        ...other.anchorOrigin,\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'left',\n        ...other.transformOrigin,\n      }}\n      {...other}\n    >\n      <MenuPage\n        open={open}\n        onClose={onClose}\n        menuItems={menuItems}\n        onMenuItemClick={onMenuItemClick}\n        top\n      />\n    </Popover>\n  )\n}\n\nexport default Menu\n","import React, { useEffect, useState, useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  horizontalHandle: {\n    cursor: 'row-resize',\n    width: '100%',\n  },\n  verticalHandle: {\n    cursor: 'col-resize',\n    height: '100%',\n  },\n  flexbox_verticalHandle: {\n    cursor: 'col-resize',\n    alignSelf: 'stretch', // the height: 100% is actually unable to function inside flexbox\n  },\n  flexbox_horizontalHandle: {\n    cursor: 'row-resize',\n    alignSelf: 'stretch', // similar to above\n  },\n})\n\nfunction ResizeHandle({\n  onDrag,\n  vertical = false,\n  flexbox = false,\n  className: originalClassName,\n  onMouseDown,\n  ...props\n}: {\n  onDrag: (\n    lastFrameDistance: number,\n    totalDistance: number,\n  ) => number | undefined\n  onMouseDown?: (event: React.MouseEvent) => void\n  vertical?: boolean\n  flexbox?: boolean\n  className?: string\n  [props: string]: unknown\n}) {\n  const [mouseDragging, setMouseDragging] = useState(false)\n  const initialPosition = useRef(0)\n  const prevPos = useRef(0)\n  const { classes, cx } = useStyles()\n\n  useEffect(() => {\n    function mouseMove(event: MouseEvent) {\n      event.preventDefault()\n      const pos = vertical ? event.clientX : event.clientY\n      const totalDistance = initialPosition.current - pos\n      const lastFrameDistance = pos - prevPos.current\n      prevPos.current = pos\n      onDrag(lastFrameDistance, totalDistance)\n    }\n\n    function mouseUp() {\n      setMouseDragging(false)\n    }\n    if (mouseDragging) {\n      window.addEventListener('mousemove', mouseMove, true)\n      window.addEventListener('mouseup', mouseUp, true)\n      return () => {\n        window.removeEventListener('mousemove', mouseMove, true)\n        window.removeEventListener('mouseup', mouseUp, true)\n      }\n    }\n    return () => {}\n  }, [mouseDragging, onDrag, vertical])\n\n  let className: string\n  if (flexbox) {\n    className = vertical\n      ? classes.flexbox_verticalHandle\n      : classes.flexbox_horizontalHandle\n  } else if (vertical) {\n    className = classes.verticalHandle\n  } else {\n    className = classes.horizontalHandle\n  }\n\n  return (\n    <div\n      data-resizer=\"true\"\n      onMouseDown={event => {\n        event.preventDefault()\n        const pos = vertical ? event.clientX : event.clientY\n        initialPosition.current = pos\n        prevPos.current = pos\n        setMouseDragging(true)\n        onMouseDown?.(event)\n      }}\n      className={cx(className, originalClassName)}\n      {...props}\n    />\n  )\n}\n\nexport default ResizeHandle\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, Typography } from '@mui/material'\nimport Dialog from './Dialog'\n\nconst ReturnToImportFormDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: { clearView: () => void }\n  handleClose: () => void\n}) {\n  return (\n    <Dialog maxWidth=\"xl\" open onClose={handleClose} title=\"Reference sequence\">\n      <DialogContent>\n        <Typography>\n          Are you sure you want to return to the import form? This will lose\n          your current view\n        </Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            model.clearView()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"secondary\"\n          variant=\"contained\"\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default ReturnToImportFormDialog\n","import React from 'react'\nimport escapeHTML from 'escape-html'\nimport dompurify from 'dompurify'\nimport { linkify } from '../util'\n\n// source https://github.com/sindresorhus/html-tags/blob/master/html-tags.json\n// with some random uncommon ones removed. note: we just use this to run the content\n// through dompurify without escaping if we see an htmlTag from this list\n// otherwise we escape angle brackets and things prematurely because it might be\n// something like <TRA> in VCF. Ref #657\nconst htmlTags = [\n  'a',\n  'b',\n  'br',\n  'code',\n  'div',\n  'em',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'i',\n  'img',\n  'li',\n  'p',\n  'pre',\n  'span',\n  'small',\n  'strong',\n  'table',\n  'tbody',\n  'sup',\n  'sub',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'tr',\n  'u',\n  'ul',\n]\n\nlet added = false\n\n// adapted from is-html\n// https://github.com/sindresorhus/is-html/blob/master/index.js\nconst full = new RegExp(htmlTags.map(tag => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\nfunction isHTML(str: string) {\n  return full.test(str)\n}\n\n// note this is mocked during testing, see\n// packages/__mocks__/@jbrowse/core/ui/SanitizedHTML something about dompurify\n// behavior causes errors during tests, was seen in\n// products/jbrowse-web/src/tests/Connection.test.tsx test (can delete mock to\n// see)\n//\nexport default function SanitizedHTML({\n  html: pre,\n  className,\n}: {\n  className?: string\n  html: string\n}) {\n  // try to add links to the text first\n  const html = linkify(pre)\n  const value = isHTML(html) ? html : escapeHTML(html)\n  if (!added) {\n    added = true\n    // see https://github.com/cure53/DOMPurify/issues/317\n    // only have to add this once, and can't do it globally because dompurify\n    // not yet initialized at global scope\n    dompurify.addHook(\n      'afterSanitizeAttributes',\n      (node: {\n        tagName: string\n        setAttribute: (arg0: string, arg1: string) => void\n      }) => {\n        if (node.tagName === 'A') {\n          node.setAttribute('rel', 'noopener noreferrer')\n          node.setAttribute('target', '_blank')\n        }\n      },\n    )\n  }\n\n  return (\n    <span\n      className={className}\n      dangerouslySetInnerHTML={{\n        __html: dompurify.sanitize(value),\n      }}\n    />\n  )\n}\n","import { blue, green, red, grey, orange } from '@mui/material/colors'\nimport { createTheme, ThemeOptions } from '@mui/material/styles'\nimport type {\n  PaletteAugmentColorOptions,\n  PaletteColor,\n} from '@mui/material/styles/createPalette'\nimport deepmerge from 'deepmerge'\n\ndeclare module '@mui/material/styles/createPalette' {\n  interface Palette {\n    tertiary: Palette['primary']\n    quaternary: Palette['primary']\n    highlight: Palette['primary']\n    stopCodon?: string\n    startCodon?: string\n    bases: {\n      A: Palette['primary']\n      C: Palette['primary']\n      G: Palette['primary']\n      T: Palette['primary']\n    }\n    frames: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n    framesCDS: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n  }\n  interface PaletteOptions {\n    tertiary?: PaletteOptions['primary']\n    quaternary?: PaletteOptions['primary']\n    highlight?: PaletteOptions['primary']\n    stopCodon?: string\n    startCodon?: string\n    bases?: {\n      A?: PaletteOptions['primary']\n      C?: PaletteOptions['primary']\n      G?: PaletteOptions['primary']\n      T?: PaletteOptions['primary']\n    }\n    framesCDS?: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n    frames?: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n  }\n}\n\ntype Frames = [\n  null,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n]\n\nconst refTheme = createTheme()\nconst midnight = '#0D233F'\nconst grape = '#721E63'\nconst forest = refTheme.palette.augmentColor({ color: { main: '#135560' } })\nconst mandarin = refTheme.palette.augmentColor({ color: { main: '#FFB11D' } })\nconst bases = {\n  A: refTheme.palette.augmentColor({ color: green }),\n  C: refTheme.palette.augmentColor({ color: blue }),\n  G: refTheme.palette.augmentColor({ color: orange }),\n  T: refTheme.palette.augmentColor({ color: red }),\n}\nconst framesCDS = [\n  null,\n  refTheme.palette.augmentColor({ color: { main: '#FF8080' } }),\n  refTheme.palette.augmentColor({ color: { main: '#80FF80' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8080FF' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8080FF' } }),\n  refTheme.palette.augmentColor({ color: { main: '#80FF80' } }),\n  refTheme.palette.augmentColor({ color: { main: '#FF8080' } }),\n] as Frames\nconst frames = [\n  null,\n  refTheme.palette.augmentColor({ color: { main: '#8f8f8f' } }),\n  refTheme.palette.augmentColor({ color: { main: '#adadad' } }),\n  refTheme.palette.augmentColor({ color: { main: '#d8d8d8' } }),\n  refTheme.palette.augmentColor({ color: { main: '#d8d8d8' } }),\n  refTheme.palette.augmentColor({ color: { main: '#adadad' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8f8f8f' } }),\n] as Frames\nconst stopCodon = '#e22'\nconst startCodon = '#3e3'\n\nfunction stockTheme() {\n  return {\n    palette: {\n      mode: undefined,\n      primary: { main: midnight },\n      secondary: { main: grape },\n      tertiary: forest,\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n    components: {\n      MuiLink: {\n        styleOverrides: {\n          // the default link color uses theme.palette.primary.main which is\n          // very bad with dark mode+midnight primary\n          root: ({ theme }) => ({\n            color: theme.palette.tertiary.main,\n          }),\n        },\n      },\n    },\n  } satisfies ThemeOptions\n}\n\nfunction getDefaultTheme() {\n  return {\n    ...stockTheme(),\n    name: 'Default (from config)',\n  }\n}\n\nfunction getLightStockTheme() {\n  return {\n    ...stockTheme(),\n    name: 'Light (stock)',\n  }\n}\n\nfunction getDarkStockTheme() {\n  return {\n    name: 'Dark (stock)',\n    palette: {\n      mode: 'dark',\n      primary: { main: midnight },\n      secondary: { main: grape },\n      tertiary: forest,\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n    components: {\n      MuiAppBar: {\n        defaultProps: {\n          enableColorOnDark: true,\n        },\n        styleOverrides: {\n          root: ({ theme }) => {\n            return theme.palette.primary.main\n          },\n        },\n      },\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nfunction getDarkMinimalTheme() {\n  return {\n    name: 'Dark (minimal)',\n    palette: {\n      mode: 'dark' as const,\n      primary: { main: grey[700] },\n      secondary: { main: grey[800] },\n      tertiary: refTheme.palette.augmentColor({ color: { main: grey[900] } }),\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nfunction getMinimalTheme() {\n  return {\n    name: 'Light (minimal)',\n    palette: {\n      primary: { main: grey[900] },\n      secondary: { main: grey[800] },\n      tertiary: refTheme.palette.augmentColor({ color: { main: grey[900] } }),\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nexport const defaultThemes = {\n  default: getDefaultTheme(),\n  lightStock: getLightStockTheme(),\n  lightMinimal: getMinimalTheme(),\n  darkMinimal: getDarkMinimalTheme(),\n  darkStock: getDarkStockTheme(),\n} as ThemeMap\n\nfunction overwriteArrayMerge(_: unknown, sourceArray: unknown[]) {\n  return sourceArray\n}\n\nexport function createJBrowseBaseTheme(theme?: ThemeOptions): ThemeOptions {\n  const themeP: ThemeOptions = {\n    palette: theme?.palette,\n    typography: {\n      fontSize: 12,\n    },\n    spacing: 4,\n    components: {\n      MuiButton: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n        styleOverrides: {\n          // the default button, especially when not using variant=contained,\n          // uses theme.palette.primary.main for text which is very bad with\n          // dark mode+midnight primary\n          //\n          // keeps text secondary for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.primary,\n                }\n              : undefined,\n        },\n      },\n      MuiAccordion: {\n        defaultProps: {\n          disableGutters: true,\n          slotProps: {\n            transition: {\n              timeout: 150,\n              unmountOnExit: true,\n            },\n          },\n        },\n      },\n      MuiFilledInput: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiFormControl: {\n        defaultProps: {\n          margin: 'dense' as const,\n          size: 'small' as const,\n        },\n      },\n      MuiFormHelperText: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n\n      MuiIconButton: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiInputBase: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiAutocomplete: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiInputLabel: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiToolbar: {\n        defaultProps: {\n          variant: 'dense' as const,\n        },\n      },\n      MuiListItem: {\n        defaultProps: {\n          dense: true,\n        },\n      },\n      MuiOutlinedInput: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiFab: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n        styleOverrides: {\n          secondary: {\n            // @ts-expect-error\n            backgroundColor: theme?.palette?.quaternary?.main,\n          },\n        },\n      },\n      MuiTable: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiPopover: {\n        defaultProps: {\n          transitionDuration: 0,\n        },\n      },\n      MuiMenu: {\n        defaultProps: {\n          transitionDuration: 0,\n        },\n      },\n      MuiMenuItem: {\n        defaultProps: {\n          dense: true,\n        },\n      },\n\n      MuiTextField: {\n        defaultProps: {\n          margin: 'dense' as const,\n          variant: 'standard' as const,\n        },\n      },\n      MuiLink: {\n        styleOverrides: {\n          // the default link color uses theme.palette.primary.main which is\n          // very bad with dark mode+midnight primary\n          root: ({ theme }) => ({\n            color: theme.palette.text.secondary,\n          }),\n        },\n      },\n      MuiCheckbox: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast xref\n          // https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-checked': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiRadio: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-checked': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiFormLabel: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          //\n\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-focused': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiAccordionSummary: {\n        styleOverrides: {\n          root: {\n            // @ts-expect-error\n            backgroundColor: theme?.palette?.tertiary?.main,\n          },\n          content: {\n            // @ts-expect-error\n            color: theme?.palette?.tertiary?.contrastText,\n          },\n        },\n      },\n      MuiToggleButtonGroup: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n    },\n  }\n  return deepmerge(themeP, theme || {}, { arrayMerge: overwriteArrayMerge })\n}\n\ntype ThemeMap = Record<string, ThemeOptions>\n\nexport function createJBrowseTheme(\n  configTheme: ThemeOptions = {},\n  themes = defaultThemes,\n  themeName = 'default',\n) {\n  return createTheme(\n    createJBrowseBaseTheme(\n      themeName === 'default'\n        ? deepmerge(themes.default!, augmentTheme(configTheme), {\n            arrayMerge: overwriteArrayMerge,\n          })\n        : augmentThemePlus(themes[themeName]),\n    ),\n  )\n}\n\nfunction augmentTheme(theme: ThemeOptions = {}) {\n  if (theme.palette?.tertiary) {\n    theme = deepmerge(theme, {\n      palette: {\n        tertiary: refTheme.palette.augmentColor(\n          'color' in theme.palette.tertiary\n            ? (theme.palette.tertiary as PaletteAugmentColorOptions)\n            : { color: theme.palette.tertiary },\n        ),\n      },\n    })\n  }\n\n  if (theme.palette?.quaternary) {\n    theme = deepmerge(theme, {\n      palette: {\n        quaternary: refTheme.palette.augmentColor(\n          'color' in theme.palette.quaternary\n            ? (theme.palette.quaternary as PaletteAugmentColorOptions)\n            : { color: theme.palette.quaternary },\n        ),\n      },\n    })\n  }\n\n  return theme\n}\n\n// creates some blank quaternary/tertiary colors if unsupplied by a user theme\nfunction augmentThemePlus(theme: ThemeOptions = {}) {\n  theme = augmentTheme(theme)\n  if (!theme.palette?.quaternary) {\n    theme = deepmerge(theme, {\n      palette: {\n        quaternary: refTheme.palette.augmentColor({\n          color: {\n            main: '#aaa',\n          },\n        }),\n      },\n    })\n  }\n  if (!theme.palette?.tertiary) {\n    theme = deepmerge(theme, {\n      palette: {\n        tertiary: refTheme.palette.augmentColor({\n          color: {\n            main: '#aaa',\n          },\n        }),\n      },\n    })\n  }\n  return theme\n}\n","import React, { useState, useEffect } from 'react'\nimport {\n  TextField,\n  MenuItem,\n  InputProps as IIP,\n  TextFieldProps as TFP,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { getConf } from '../configuration'\nimport { useLocalStorage, AbstractSessionModel } from '../util'\n\nconst useStyles = makeStyles()({\n  importFormEntry: {\n    minWidth: 180,\n  },\n})\n\nconst AssemblySelector = observer(function ({\n  session,\n  onChange,\n  selected,\n  InputProps,\n  TextFieldProps,\n  localStorageKey,\n  helperText = 'Select assembly to view',\n}: {\n  session: AbstractSessionModel\n  helperText?: string\n  onChange: (arg: string) => void\n  selected?: string\n  localStorageKey?: string\n  InputProps?: IIP\n  TextFieldProps?: TFP\n}) {\n  const { classes } = useStyles()\n  const { assemblyNames, assemblyManager } = session\n\n  // constructs a localstorage key based on host/path/config to help\n  // remember. non-config assists usage with e.g. embedded apps\n  const config = new URLSearchParams(window.location.search).get('config')\n  const [lastSelected, setLastSelected] =\n    typeof jest === 'undefined' && localStorageKey\n      ? useLocalStorage(\n          `lastAssembly-${[\n            window.location.host + window.location.pathname,\n            config,\n            localStorageKey,\n          ].join('-')}`,\n          selected,\n        )\n      : useState(selected)\n\n  const selection = assemblyNames.includes(lastSelected || '')\n    ? lastSelected\n    : selected\n\n  useEffect(() => {\n    if (selection && selection !== selected) {\n      onChange(selection)\n    }\n  }, [selection, onChange, selected])\n\n  const error = assemblyNames.length ? '' : 'No configured assemblies'\n  return (\n    <TextField\n      select\n      label=\"Assembly\"\n      variant=\"outlined\"\n      helperText={error || helperText}\n      value={selection || ''}\n      inputProps={{ 'data-testid': 'assembly-selector' }}\n      onChange={event => {\n        setLastSelected(event.target.value)\n      }}\n      error={!!error}\n      InputProps={InputProps}\n      disabled={!!error}\n      className={classes.importFormEntry}\n      {...TextFieldProps}\n    >\n      {assemblyNames.map(name => {\n        const assembly = assemblyManager.get(name)\n        const displayName = assembly ? getConf(assembly, 'displayName') : ''\n        return (\n          <MenuItem key={name} value={name}>\n            {displayName || name}\n          </MenuItem>\n        )\n      })}\n    </TextField>\n  )\n})\n\nexport default AssemblySelector\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Box,\n  FormHelperText,\n  InputLabel,\n  Menu,\n  MenuItem,\n  Tooltip,\n  ToggleButtonGroup,\n  ToggleButton,\n  ToggleButtonProps,\n} from '@mui/material'\n\n// locals\nimport {\n  FileLocation,\n  AbstractRootModel,\n  isUriLocation,\n  isAppRootModel,\n} from '../../util/types'\nimport LocalFileChooser from './LocalFileChooser'\nimport UrlChooser from './UrlChooser'\nimport { notEmpty, useLocalStorage } from '../../util'\n\n// icons\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'\n\nconst NUM_SHOWN = 2\n\nfunction ToggleButtonWithTooltip(props: ToggleButtonProps) {\n  const { title, children, ...other } = props\n  return (\n    <Tooltip title={title || ''}>\n      <ToggleButton {...other}>{children}</ToggleButton>\n    </Tooltip>\n  )\n}\n\nfunction shorten(str: string, len: number) {\n  if (typeof str === 'string' && str.length > len) {\n    return `${str.slice(0, Math.max(0, len))}…`\n  }\n  return str\n}\n\nconst FileSelector = observer(function (props: {\n  location?: FileLocation\n  setLocation: (param: FileLocation) => void\n  setName?: (str: string) => void\n  name?: string\n  description?: string\n  rootModel?: AbstractRootModel\n}) {\n  const { location, name, description, rootModel, setLocation } = props\n  const fileOrUrl = !location || isUriLocation(location) ? 'url' : 'file'\n  const [toggleButtonValue, setToggleButtonValue] = useState(\n    location && 'internetAccountId' in location && location.internetAccountId\n      ? location.internetAccountId\n      : fileOrUrl,\n  )\n  const accounts = isAppRootModel(rootModel)\n    ? rootModel.internetAccounts.filter(\n        f => f.type !== 'HTTPBasicInternetAccount',\n      )\n    : []\n\n  const [recentlyUsedInternetAccounts, setRecentlyUsedInternetAccounts] =\n    useLocalStorage('fileSelector-recentlyUsedInternetAccounts', [] as string[])\n\n  const map = Object.fromEntries(accounts.map(a => [a.internetAccountId, a]))\n  const arr = [...new Set(accounts.map(s => s.internetAccountId))].sort(\n    (a, b) =>\n      recentlyUsedInternetAccounts.indexOf(a) -\n      recentlyUsedInternetAccounts.indexOf(b),\n  )\n  const shownAccounts = arr.slice(0, NUM_SHOWN)\n  const hiddenAccounts = arr.slice(NUM_SHOWN)\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n  const selectedAccount = map[toggleButtonValue]\n\n  const setLocationWithAccount = useCallback(\n    (location: FileLocation) => {\n      setLocation({\n        ...location,\n        ...(selectedAccount && isUriLocation(location)\n          ? { internetAccountId: selectedAccount.internetAccountId }\n          : {}),\n      })\n    },\n    [setLocation, selectedAccount],\n  )\n\n  useEffect(() => {\n    // if you swap account selection after inputting url\n    if (\n      selectedAccount &&\n      isUriLocation(location) &&\n      location.internetAccountId !== selectedAccount.internetAccountId\n    ) {\n      setLocationWithAccount(location)\n    }\n  }, [location, selectedAccount, setLocationWithAccount])\n\n  let locationInput = (\n    <UrlChooser\n      {...props}\n      setLocation={setLocationWithAccount}\n      label={selectedAccount?.selectorLabel}\n    />\n  )\n  if (toggleButtonValue === 'file') {\n    locationInput = <LocalFileChooser {...props} />\n  }\n  if (selectedAccount?.SelectorComponent) {\n    const { SelectorComponent } = selectedAccount\n    locationInput = (\n      <SelectorComponent {...props} setLocation={setLocationWithAccount} />\n    )\n  }\n\n  return (\n    <>\n      <Box display=\"flex\">\n        <InputLabel shrink>{name}</InputLabel>\n      </Box>\n      <Box display=\"flex\" flexDirection=\"row\">\n        <Box>\n          <ToggleButtonGroup\n            value={toggleButtonValue}\n            exclusive\n            onChange={(_event, newState) => {\n              setRecentlyUsedInternetAccounts([\n                ...new Set(\n                  [newState, ...recentlyUsedInternetAccounts].filter(notEmpty),\n                ),\n              ])\n              if (newState) {\n                setToggleButtonValue(newState)\n              }\n              if (isUriLocation(location)) {\n                setLocationWithAccount(location)\n              }\n            }}\n            aria-label=\"file, url, or account picker\"\n          >\n            {new URLSearchParams(window.location.search).get(\n              'adminKey',\n            ) ? null : (\n              <ToggleButton value=\"file\" aria-label=\"local file\">\n                File\n              </ToggleButton>\n            )}\n            <ToggleButton value=\"url\" aria-label=\"url\">\n              URL\n            </ToggleButton>\n            {shownAccounts.map(id => {\n              const { internetAccountId, name, toggleContents } = map[id]!\n              return (\n                <ToggleButtonWithTooltip\n                  key={id}\n                  value={internetAccountId}\n                  title={name}\n                >\n                  {typeof toggleContents === 'string'\n                    ? shorten(toggleContents, 5)\n                    : toggleContents || shorten(name, 5)}\n                </ToggleButtonWithTooltip>\n              )\n            })}\n            {hiddenAccounts.length > 0 ? (\n              // @ts-expect-error\n              <ToggleButton\n                onClick={event => {\n                  setAnchorEl(event.target as HTMLElement)\n                }}\n                selected={false}\n              >\n                More\n                <ArrowDropDownIcon />\n              </ToggleButton>\n            ) : null}\n          </ToggleButtonGroup>\n\n          <Menu\n            open={Boolean(anchorEl)}\n            anchorEl={anchorEl}\n            onClose={() => {\n              setAnchorEl(null)\n            }}\n            anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n            transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n          >\n            {hiddenAccounts.map(id => {\n              const { internetAccountId, name } = map[id]!\n              return (\n                <MenuItem\n                  key={id}\n                  value={internetAccountId}\n                  onClick={() => {\n                    setRecentlyUsedInternetAccounts([\n                      ...new Set(\n                        [\n                          internetAccountId,\n                          ...recentlyUsedInternetAccounts,\n                        ].filter(notEmpty),\n                      ),\n                    ])\n\n                    setToggleButtonValue(internetAccountId)\n                    setAnchorEl(null)\n                  }}\n                >\n                  {name}\n                </MenuItem>\n              )\n            })}\n          </Menu>\n        </Box>\n      </Box>\n      {locationInput}\n      <FormHelperText>{description}</FormHelperText>\n    </>\n  )\n})\n\nexport default FileSelector\n","import React, { useState, useRef, useEffect } from 'react'\nimport { drawImageOntoCanvasContext } from '../util/offscreenCanvasPonyfill'\n\nfunction PrerenderedCanvas(props: {\n  width: number\n  height: number\n  highResolutionScaling?: number\n  style?: any\n  imageData?: any\n  showSoftClip?: boolean\n  blockKey?: string\n}) {\n  const {\n    width,\n    height,\n    highResolutionScaling = 1,\n    style = {},\n    imageData,\n    blockKey,\n    showSoftClip,\n  } = props\n  const [done, setDone] = useState(false)\n\n  const featureCanvas = useRef<HTMLCanvasElement>(null)\n\n  useEffect(() => {\n    if (!imageData) {\n      return\n    }\n    const canvas = featureCanvas.current\n    if (!canvas) {\n      return\n    }\n    const context = canvas.getContext('2d')\n    if (!context) {\n      return\n    }\n    drawImageOntoCanvasContext(imageData, context)\n    setDone(true)\n  }, [imageData])\n\n  return (\n    <canvas\n      data-testid={[\n        'prerendered_canvas',\n        showSoftClip ? 'softclipped' : '',\n        blockKey,\n        done ? 'done' : '',\n      ]\n        .filter(f => !!f)\n        .join('_')}\n      ref={featureCanvas}\n      width={width * highResolutionScaling}\n      height={height * highResolutionScaling}\n      style={{ width, height, ...style }}\n    />\n  )\n}\n\nexport default PrerenderedCanvas\n","// vendored from quick-lru@6.1.1, didn't like being compiled as a 'pure-esm' nodejs dependency\n// the license is reproduced below https://github.com/sindresorhus/quick-lru/blob/main/license\n// MIT License\n\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default class QuickLRU extends Map {\n  constructor(options = {}) {\n    super()\n\n    if (!(options.maxSize && options.maxSize > 0)) {\n      throw new TypeError('`maxSize` must be a number greater than 0')\n    }\n\n    if (typeof options.maxAge === 'number' && options.maxAge === 0) {\n      throw new TypeError('`maxAge` must be a number greater than 0')\n    }\n\n    // TODO: Use private class fields when ESLint supports them.\n    this.maxSize = options.maxSize\n    this.maxAge = options.maxAge || Number.POSITIVE_INFINITY\n    this.onEviction = options.onEviction\n    this.cache = new Map()\n    this.oldCache = new Map()\n    this._size = 0\n  }\n\n  // TODO: Use private class methods when targeting Node.js 16.\n  _emitEvictions(cache) {\n    if (typeof this.onEviction !== 'function') {\n      return\n    }\n\n    for (const [key, item] of cache) {\n      this.onEviction(key, item.value)\n    }\n  }\n\n  _deleteIfExpired(key, item) {\n    if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n      if (typeof this.onEviction === 'function') {\n        this.onEviction(key, item.value)\n      }\n\n      return this.delete(key)\n    }\n\n    return false\n  }\n\n  _getOrDeleteIfExpired(key, item) {\n    const deleted = this._deleteIfExpired(key, item)\n    if (!deleted) {\n      return item.value\n    }\n  }\n\n  _getItemValue(key, item) {\n    return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value\n  }\n\n  _peek(key, cache) {\n    const item = cache.get(key)\n\n    return this._getItemValue(key, item)\n  }\n\n  _set(key, value) {\n    this.cache.set(key, value)\n    this._size++\n\n    if (this._size >= this.maxSize) {\n      this._size = 0\n      this._emitEvictions(this.oldCache)\n      this.oldCache = this.cache\n      this.cache = new Map()\n    }\n  }\n\n  _moveToRecent(key, item) {\n    this.oldCache.delete(key)\n    this._set(key, item)\n  }\n\n  *_entriesAscending() {\n    for (const item of this.oldCache) {\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield item\n        }\n      }\n    }\n\n    for (const item of this.cache) {\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield item\n      }\n    }\n  }\n\n  get(key) {\n    if (this.cache.has(key)) {\n      const item = this.cache.get(key)\n\n      return this._getItemValue(key, item)\n    }\n\n    if (this.oldCache.has(key)) {\n      const item = this.oldCache.get(key)\n      if (!this._deleteIfExpired(key, item)) {\n        this._moveToRecent(key, item)\n        return item.value\n      }\n    }\n  }\n\n  set(key, value, { maxAge = this.maxAge } = {}) {\n    const expiry =\n      typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY\n        ? Date.now() + maxAge\n        : undefined\n    if (this.cache.has(key)) {\n      this.cache.set(key, {\n        value,\n        expiry,\n      })\n    } else {\n      this._set(key, { value, expiry })\n    }\n  }\n\n  has(key) {\n    if (this.cache.has(key)) {\n      return !this._deleteIfExpired(key, this.cache.get(key))\n    }\n\n    if (this.oldCache.has(key)) {\n      return !this._deleteIfExpired(key, this.oldCache.get(key))\n    }\n\n    return false\n  }\n\n  peek(key) {\n    if (this.cache.has(key)) {\n      return this._peek(key, this.cache)\n    }\n\n    if (this.oldCache.has(key)) {\n      return this._peek(key, this.oldCache)\n    }\n  }\n\n  delete(key) {\n    const deleted = this.cache.delete(key)\n    if (deleted) {\n      this._size--\n    }\n\n    return this.oldCache.delete(key) || deleted\n  }\n\n  clear() {\n    this.cache.clear()\n    this.oldCache.clear()\n    this._size = 0\n  }\n\n  resize(newSize) {\n    if (!(newSize && newSize > 0)) {\n      throw new TypeError('`maxSize` must be a number greater than 0')\n    }\n\n    const items = [...this._entriesAscending()]\n    const removeCount = items.length - newSize\n    if (removeCount < 0) {\n      this.cache = new Map(items)\n      this.oldCache = new Map()\n      this._size = items.length\n    } else {\n      if (removeCount > 0) {\n        this._emitEvictions(items.slice(0, removeCount))\n      }\n\n      this.oldCache = new Map(items.slice(removeCount))\n      this.cache = new Map()\n      this._size = 0\n    }\n\n    this.maxSize = newSize\n  }\n\n  *keys() {\n    for (const [key] of this) {\n      yield key\n    }\n  }\n\n  *values() {\n    for (const [, value] of this) {\n      yield value\n    }\n  }\n\n  *[Symbol.iterator]() {\n    for (const item of this.cache) {\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield [key, value.value]\n      }\n    }\n\n    for (const item of this.oldCache) {\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield [key, value.value]\n        }\n      }\n    }\n  }\n\n  *entriesDescending() {\n    let items = [...this.cache]\n    for (let i = items.length - 1; i >= 0; --i) {\n      const item = items[i]\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield [key, value.value]\n      }\n    }\n\n    items = [...this.oldCache]\n    for (let i = items.length - 1; i >= 0; --i) {\n      const item = items[i]\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield [key, value.value]\n        }\n      }\n    }\n  }\n\n  *entriesAscending() {\n    for (const [key, value] of this._entriesAscending()) {\n      yield [key, value.value]\n    }\n  }\n\n  get size() {\n    if (!this._size) {\n      return this.oldCache.size\n    }\n\n    let oldCacheSize = 0\n    for (const key of this.oldCache.keys()) {\n      if (!this.cache.has(key)) {\n        oldCacheSize++\n      }\n    }\n\n    return Math.min(this._size + oldCacheSize, this.maxSize)\n  }\n\n  entries() {\n    return this.entriesAscending()\n  }\n\n  forEach(callbackFunction, thisArgument = this) {\n    for (const [key, value] of this.entriesAscending()) {\n      callbackFunction.call(thisArgument, value, key, this)\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return JSON.stringify([...this.entriesAscending()])\n  }\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport isObject from 'is-object'\nimport PluginManager from '../PluginManager'\nimport type { Buffer } from 'buffer'\nimport {\n  addDisposer,\n  getParent,\n  getSnapshot,\n  getEnv as getEnvMST,\n  isAlive,\n  isStateTreeNode,\n  hasParent,\n  IAnyStateTreeNode,\n  IStateTreeNode,\n  Instance,\n} from 'mobx-state-tree'\nimport { reaction, IReactionPublic, IReactionOptions } from 'mobx'\nimport { Feature } from './simpleFeature'\nimport {\n  isSessionModel,\n  isDisplayModel,\n  isViewModel,\n  isTrackModel,\n  AssemblyManager,\n  Region,\n  TypeTestedByPredicate,\n} from './types'\nimport type { Region as MUIRegion } from './types/mst'\nimport { isAbortException, checkAbortSignal } from './aborting'\nimport { BaseBlock } from './blockTypes'\nimport { isUriLocation } from './types'\n\n// has to be the full path and not the relative path to get the jest mock\nimport useMeasure from '@jbrowse/core/util/useMeasure'\nimport { colord } from './colord'\n// eslint-disable-next-line react/no-deprecated\nimport { flushSync, render } from 'react-dom'\nexport * from './types'\nexport * from './aborting'\nexport * from './when'\nexport * from './range'\nexport * from './dedupe'\n\nexport * from './offscreenCanvasPonyfill'\nexport * from './offscreenCanvasUtils'\n\nexport function useDebounce<T>(value: T, delay: number) {\n  const [debouncedValue, setDebouncedValue] = useState(value)\n\n  useEffect(() => {\n    const handle = setTimeout(() => {\n      setDebouncedValue(value)\n    }, delay)\n    return () => {\n      clearTimeout(handle)\n    }\n  }, [value, delay])\n\n  return debouncedValue\n}\n\n// used in ViewContainer files to get the width\nexport function useWidthSetter(\n  view: { setWidth: (arg: number) => void },\n  padding: string,\n) {\n  const [ref, { width }] = useMeasure()\n  useEffect(() => {\n    if (width && isAlive(view)) {\n      // sets after a requestAnimationFrame\n      // https://stackoverflow.com/a/58701523/2129219\n      // avoids ResizeObserver loop error being shown during development\n      requestAnimationFrame(() => {\n        view.setWidth(width - Number.parseInt(padding, 10) * 2)\n      })\n    }\n  }, [padding, view, width])\n  return ref\n}\n\n// https://stackoverflow.com/questions/56283920/\nexport function useDebouncedCallback<T>(\n  callback: (...args: T[]) => void,\n  wait = 400,\n) {\n  // track args & timeout handle between calls\n  const argsRef = useRef<T[]>()\n  const timeout = useRef<ReturnType<typeof setTimeout>>()\n\n  // make sure our timeout gets cleared if our consuming component gets\n  // unmounted\n  useEffect(() => {\n    if (timeout.current) {\n      clearTimeout(timeout.current)\n    }\n  }, [])\n\n  return function debouncedCallback(...args: T[]) {\n    // capture latest args\n    argsRef.current = args\n\n    // clear debounce timer\n    if (timeout.current) {\n      clearTimeout(timeout.current)\n    }\n\n    // start waiting again\n    timeout.current = setTimeout(() => {\n      if (argsRef.current) {\n        callback(...argsRef.current)\n      }\n    }, wait)\n  }\n}\n\n/**\n * find the first node in the hierarchy that matches the given predicate\n */\nexport function findParentThat(\n  node: IAnyStateTreeNode,\n  predicate: (thing: IAnyStateTreeNode) => boolean,\n) {\n  if (!hasParent(node)) {\n    throw new Error('node does not have parent')\n  }\n  let currentNode: IAnyStateTreeNode | undefined = getParent<any>(node)\n  while (currentNode && isAlive(currentNode)) {\n    if (predicate(currentNode)) {\n      return currentNode\n    }\n    if (hasParent(currentNode)) {\n      currentNode = getParent<any>(currentNode)\n    } else {\n      break\n    }\n  }\n  throw new Error('no matching node found')\n}\n\ninterface Animation {\n  lastPosition: number\n  lastTime?: number\n  lastVelocity?: number\n}\n\n// based on https://github.com/react-spring/react-spring/blob/cd5548a987383b8023efd620f3726a981f9e18ea/src/animated/FrameLoop.ts\nexport function springAnimate(\n  fromValue: number,\n  toValue: number,\n  setValue: (value: number) => void,\n  onFinish = () => {},\n  precision = 0,\n  tension = 400,\n  friction = 20,\n  clamp = true,\n) {\n  const mass = 1\n  if (!precision) {\n    precision = Math.abs(toValue - fromValue) / 1000\n  }\n\n  let animationFrameId: number\n\n  function update(animation: Animation) {\n    const time = Date.now()\n    let position = animation.lastPosition\n    let lastTime = animation.lastTime || time\n    let velocity = animation.lastVelocity || 0\n    // If we lost a lot of frames just jump to the end.\n    if (time > lastTime + 64) {\n      lastTime = time\n    }\n    // http://gafferongames.com/game-physics/fix-your-timestep/\n    const numSteps = Math.floor(time - lastTime)\n    for (let i = 0; i < numSteps; ++i) {\n      const force = -tension * (position - toValue)\n      const damping = -friction * velocity\n      const acceleration = (force + damping) / mass\n      velocity += (acceleration * 1) / 1000\n      position += (velocity * 1) / 1000\n    }\n    const isVelocity = Math.abs(velocity) <= precision\n    const isDisplacement =\n      tension !== 0 ? Math.abs(toValue - position) <= precision : true\n    const isOvershooting =\n      clamp && tension !== 0\n        ? fromValue < toValue\n          ? position > toValue\n          : position < toValue\n        : false\n    const endOfAnimation = isOvershooting || (isVelocity && isDisplacement)\n    if (endOfAnimation) {\n      setValue(toValue)\n      onFinish()\n    } else {\n      setValue(position)\n      animationFrameId = requestAnimationFrame(() => {\n        update({\n          lastPosition: position,\n          lastTime: time,\n          lastVelocity: velocity,\n        })\n      })\n    }\n  }\n\n  return [\n    () => {\n      update({ lastPosition: fromValue })\n    },\n    () => {\n      cancelAnimationFrame(animationFrameId)\n    },\n  ]\n}\n\n/**\n * find the first node in the hierarchy that matches the given 'is' typescript\n * type guard predicate\n */\nexport function findParentThatIs<T extends (a: IAnyStateTreeNode) => boolean>(\n  node: IAnyStateTreeNode,\n  predicate: T,\n): TypeTestedByPredicate<T> {\n  return findParentThat(node, predicate)\n}\n\n/**\n * get the current JBrowse session model, starting at any node in the state\n * tree\n */\nexport function getSession(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isSessionModel)\n  } catch (e) {\n    throw new Error('no session model found!')\n  }\n}\n\n/**\n * get the state model of the view in the state tree that contains the given\n * node\n */\nexport function getContainingView(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isViewModel)\n  } catch (e) {\n    throw new Error('no containing view found')\n  }\n}\n\n/**\n * get the state model of the view in the state tree that contains the given\n * node\n */\nexport function getContainingTrack(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isTrackModel)\n  } catch (e) {\n    throw new Error('no containing track found')\n  }\n}\n\n/**\n * get the state model of the display in the state tree that contains the given\n * node\n */\nexport function getContainingDisplay(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isDisplayModel)\n  } catch (e) {\n    throw new Error('no containing display found')\n  }\n}\n\n/**\n * Assemble a 1-based \"locString\" from an interbase genomic location\n * @param region - Region\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0, end: 100 })\n * // ↳ 'chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 })\n * // ↳ '{hg19}chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1' })\n * // ↳ 'chr1'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0 })\n * // ↳ 'chr1:1..'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', end: 100 })\n * // ↳ 'chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0, end: 1 })\n * // ↳ 'chr1:1'\n * ```\n */\nexport function assembleLocString(region: ParsedLocString) {\n  return assembleLocStringFast(region, toLocale)\n}\n\n// same as assembleLocString above, but does not perform toLocaleString which\n// can slow down the speed of block calculations which use assembleLocString\n// for block.key\nexport function assembleLocStringFast(\n  region: ParsedLocString,\n  cb = (n: number): string | number => n,\n) {\n  const { assemblyName, refName, start, end, reversed } = region\n  const assemblyNameString = assemblyName ? `{${assemblyName}}` : ''\n  let startString: string\n  if (start !== undefined) {\n    startString = `:${cb(start + 1)}`\n  } else if (end !== undefined) {\n    startString = ':1'\n  } else {\n    startString = ''\n  }\n  let endString: string\n  if (end !== undefined) {\n    endString = start !== undefined && start + 1 === end ? '' : `..${cb(end)}`\n  } else {\n    endString = start !== undefined ? '..' : ''\n  }\n  let rev = ''\n  if (reversed) {\n    rev = '[rev]'\n  }\n  return `${assemblyNameString}${refName}${startString}${endString}${rev}`\n}\n\nexport interface ParsedLocString {\n  assemblyName?: string\n  refName: string\n  start?: number\n  end?: number\n  reversed?: boolean\n}\n\nexport function parseLocStringOneBased(\n  locString: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n): ParsedLocString {\n  if (!locString) {\n    throw new Error('no location string provided, could not parse')\n  }\n  let reversed = false\n  if (locString.endsWith('[rev]')) {\n    reversed = true\n    locString = locString.replace(/\\[rev]$/, '')\n  }\n  // remove any whitespace\n  locString = locString.replace(/\\s/, '')\n  // refNames can have colons, refer to\n  // https://samtools.github.io/hts-specs/SAMv1.pdf Appendix A\n  const assemblyMatch = /({(.+)})?(.+)/.exec(locString)\n  if (!assemblyMatch) {\n    throw new Error(`invalid location string: \"${locString}\"`)\n  }\n  const [, , assemblyName2, location2] = assemblyMatch\n  const assemblyName = assemblyName2!\n  const location = location2!\n  if (!assemblyName && location.startsWith('{}')) {\n    throw new Error(`no assembly name was provided in location \"${location}\"`)\n  }\n  const lastColonIdx = location.lastIndexOf(':')\n  if (lastColonIdx === -1) {\n    if (isValidRefName(location, assemblyName)) {\n      return {\n        assemblyName,\n        refName: location,\n        reversed,\n      }\n    }\n    throw new Error(`Unknown reference sequence \"${location}\"`)\n  }\n  const prefix = location.slice(0, lastColonIdx)\n  const suffix = location.slice(lastColonIdx + 1)\n  if (\n    isValidRefName(prefix, assemblyName) &&\n    isValidRefName(location, assemblyName)\n  ) {\n    throw new Error(`ambiguous location string: \"${locString}\"`)\n  } else if (isValidRefName(prefix, assemblyName)) {\n    if (suffix) {\n      // see if it's a range\n      const rangeMatch =\n        /^(-?(\\d+|\\d{1,3}(,\\d{3})*))(\\.\\.|-)(-?(\\d+|\\d{1,3}(,\\d{3})*))$/.exec(\n          suffix,\n        )\n      // see if it's a single point\n      const singleMatch = /^(-?(\\d+|\\d{1,3}(,\\d{3})*))(\\.\\.|-)?$/.exec(suffix)\n      if (rangeMatch) {\n        const [, start, , , , end] = rangeMatch\n        if (start !== undefined && end !== undefined) {\n          return {\n            assemblyName,\n            refName: prefix,\n            start: +start.replaceAll(',', ''),\n            end: +end.replaceAll(',', ''),\n            reversed,\n          }\n        }\n      } else if (singleMatch) {\n        const [, start, , , separator] = singleMatch\n        if (start !== undefined) {\n          if (separator) {\n            // indefinite end\n            return {\n              assemblyName,\n              refName: prefix,\n              start: +start.replaceAll(',', ''),\n              reversed,\n            }\n          }\n          return {\n            assemblyName,\n            refName: prefix,\n            start: +start.replaceAll(',', ''),\n            end: +start.replaceAll(',', ''),\n            reversed,\n          }\n        }\n      } else {\n        throw new Error(\n          `could not parse range \"${suffix}\" on location \"${locString}\"`,\n        )\n      }\n    } else {\n      return {\n        assemblyName,\n        refName: prefix,\n        reversed,\n      }\n    }\n  } else if (isValidRefName(location, assemblyName)) {\n    return {\n      assemblyName,\n      refName: location,\n      reversed,\n    }\n  }\n  throw new Error(`unknown reference sequence name in location \"${locString}\"`)\n}\n\n/**\n * Parse a 1-based location string into an interbase genomic location\n * @param locString - Location string\n * @param isValidRefName - Function that checks if a refName exists in the set\n * of all known refNames, or in the set of refNames for an assembly if\n * assemblyName is given\n * @example\n * ```ts\n * parseLocString('chr1:1..100', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1-100', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString(`{hg19}chr1:1..100`, isValidRefName)\n * // ↳ { assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1', isValidRefName)\n * // ↳ { refName: 'chr1' }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 1 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1..', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0}\n * ```\n */\nexport function parseLocString(\n  locString: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const parsed = parseLocStringOneBased(locString, isValidRefName)\n  if (typeof parsed.start === 'number') {\n    parsed.start -= 1\n  }\n  return parsed\n}\n\nexport function compareLocs(locA: ParsedLocString, locB: ParsedLocString) {\n  const assemblyComp =\n    locA.assemblyName || locB.assemblyName\n      ? (locA.assemblyName || '').localeCompare(locB.assemblyName || '')\n      : 0\n  if (assemblyComp) {\n    return assemblyComp\n  }\n\n  const refComp =\n    locA.refName || locB.refName\n      ? (locA.refName || '').localeCompare(locB.refName || '')\n      : 0\n  if (refComp) {\n    return refComp\n  }\n\n  if (locA.start !== undefined && locB.start !== undefined) {\n    const startComp = locA.start - locB.start\n    if (startComp) {\n      return startComp\n    }\n  }\n  if (locA.end !== undefined && locB.end !== undefined) {\n    const endComp = locA.end - locB.end\n    if (endComp) {\n      return endComp\n    }\n  }\n  return 0\n}\n\nexport function compareLocStrings(\n  a: string,\n  b: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const locA = parseLocString(a, isValidRefName)\n  const locB = parseLocString(b, isValidRefName)\n  return compareLocs(locA, locB)\n}\n\n/**\n * Ensure that a number is at least min and at most max.\n *\n * @param num -\n * @param min -\n * @param  max -\n */\nexport function clamp(num: number, min: number, max: number) {\n  if (num < min) {\n    return min\n  }\n  if (num > max) {\n    return max\n  }\n  return num\n}\n\nfunction roundToNearestPointOne(num: number) {\n  return Math.round(num * 10) / 10\n}\n\n/**\n * @param bp -\n * @param region -\n * @param bpPerPx -\n */\nexport function bpToPx(\n  bp: number,\n  {\n    reversed,\n    end = 0,\n    start = 0,\n  }: { start?: number; end?: number; reversed?: boolean },\n  bpPerPx: number,\n) {\n  return roundToNearestPointOne((reversed ? end - bp : bp - start) / bpPerPx)\n}\n\nconst oneEightyOverPi = 180 / Math.PI\nconst piOverOneEighty = Math.PI / 180\nexport function radToDeg(radians: number) {\n  return (radians * oneEightyOverPi) % 360\n}\nexport function degToRad(degrees: number) {\n  return (degrees * piOverOneEighty) % (2 * Math.PI)\n}\n\n/**\n * @returns [x, y]\n */\nexport function polarToCartesian(rho: number, theta: number) {\n  return [rho * Math.cos(theta), rho * Math.sin(theta)] as [number, number]\n}\n\n/**\n * @param x - the x\n * @param y - the y\n * @returns [rho, theta]\n */\nexport function cartesianToPolar(x: number, y: number) {\n  const rho = Math.sqrt(x * x + y * y)\n  const theta = Math.atan(y / x)\n  return [rho, theta] as [number, number]\n}\n\nexport function featureSpanPx(\n  feature: Feature,\n  region: { start: number; end: number; reversed?: boolean },\n  bpPerPx: number,\n): [number, number] {\n  return bpSpanPx(feature.get('start'), feature.get('end'), region, bpPerPx)\n}\n\nexport function bpSpanPx(\n  leftBp: number,\n  rightBp: number,\n  region: { start: number; end: number; reversed?: boolean },\n  bpPerPx: number,\n): [number, number] {\n  const start = bpToPx(leftBp, region, bpPerPx)\n  const end = bpToPx(rightBp, region, bpPerPx)\n  return region.reversed ? [end, start] : [start, end]\n}\n\n// do an array map of an iterable\nexport function iterMap<T, U>(\n  iter: Iterable<T>,\n  func: (arg: T) => U,\n  sizeHint?: number,\n) {\n  const results = Array.from<U>({ length: sizeHint || 0 })\n  let counter = 0\n  for (const item of iter) {\n    results[counter] = func(item)\n    counter += 1\n  }\n  return results\n}\n\n/**\n * Returns the index of the last element in the array where predicate is true,\n * and -1 otherwise.\n * Based on https://stackoverflow.com/a/53187807\n *\n * @param array - The source array to search in\n *\n * @param predicate - find calls predicate once for each element of the array, in\n * descending order, until it finds one where predicate returns true.\n *\n * @returns findLastIndex returns element index where predicate is true.\n * Otherwise, findLastIndex returns -1.\n */\nexport function findLastIndex<T>(\n  array: T[],\n  predicate: (value: T, index: number, obj: T[]) => boolean,\n): number {\n  let l = array.length\n  while (l--) {\n    if (predicate(array[l]!, l, array)) {\n      return l\n    }\n  }\n  return -1\n}\n\nexport function findLast<T>(\n  array: T[],\n  predicate: (value: T, index: number, obj: T[]) => boolean,\n): T | undefined {\n  let l = array.length\n  while (l--) {\n    if (predicate(array[l]!, l, array)) {\n      return array[l]\n    }\n  }\n  return undefined\n}\n\n/**\n * makes a mobx reaction with the given functions, that calls actions on the\n * model for each stage of execution, and to abort the reaction function when\n * the model is destroyed.\n *\n * Will call startedFunction(signal), successFunction(result), and\n * errorFunction(error) when the async reaction function starts, completes, and\n * errors respectively.\n *\n * @param self -\n * @param dataFunction -\n * @param asyncReactionFunction -\n * @param reactionOptions -\n * @param startedFunction -\n * @param successFunction -\n * @param errorFunction -\n */\nexport function makeAbortableReaction<T, U, V>(\n  self: T,\n  dataFunction: (arg: T) => U,\n  asyncReactionFunction: (\n    arg: U | undefined,\n    signal: AbortSignal,\n    model: T,\n    handle: IReactionPublic,\n  ) => Promise<V>,\n  // @ts-expect-error\n  reactionOptions: IReactionOptions,\n  startedFunction: (aborter: AbortController) => void,\n  successFunction: (arg: V) => void,\n  errorFunction: (err: unknown) => void,\n) {\n  let inProgress: AbortController | undefined\n\n  function handleError(error: unknown) {\n    if (!isAbortException(error)) {\n      if (isAlive(self)) {\n        errorFunction(error)\n      } else {\n        console.error(error)\n      }\n    }\n  }\n\n  addDisposer(\n    self,\n    reaction(\n      () => {\n        try {\n          return dataFunction(self)\n        } catch (e) {\n          handleError(e)\n          return undefined\n        }\n      },\n      async (data, mobxReactionHandle) => {\n        if (inProgress && !inProgress.signal.aborted) {\n          inProgress.abort()\n        }\n\n        if (!isAlive(self)) {\n          return\n        }\n        inProgress = new AbortController()\n\n        const thisInProgress = inProgress\n        startedFunction(thisInProgress)\n        try {\n          const result = await asyncReactionFunction(\n            data,\n            thisInProgress.signal,\n            self,\n            // @ts-expect-error\n            mobxReactionHandle,\n          )\n          checkAbortSignal(thisInProgress.signal)\n          if (isAlive(self)) {\n            successFunction(result)\n          }\n        } catch (e) {\n          if (!thisInProgress.signal.aborted) {\n            thisInProgress.abort()\n          }\n          handleError(e)\n        }\n      },\n      reactionOptions,\n    ),\n  )\n  addDisposer(self, () => {\n    if (inProgress && !inProgress.signal.aborted) {\n      inProgress.abort()\n    }\n  })\n}\n\nexport function renameRegionIfNeeded(\n  refNameMap: Record<string, string> | undefined,\n  region: Region | Instance<typeof MUIRegion>,\n): Region & { originalRefName?: string } {\n  if (isStateTreeNode(region) && !isAlive(region)) {\n    return region\n  }\n\n  if (refNameMap?.[region.refName]) {\n    // clone the region so we don't modify it\n    region = isStateTreeNode(region)\n      ? { ...getSnapshot(region) }\n      : { ...region }\n\n    // modify it directly in the container\n    const newRef = refNameMap[region.refName]\n    if (newRef) {\n      return { ...region, refName: newRef, originalRefName: region.refName }\n    }\n  }\n  return region\n}\n\nexport async function renameRegionsIfNeeded<\n  ARGTYPE extends {\n    assemblyName?: string\n    regions?: Region[]\n    signal?: AbortSignal\n    adapterConfig: Record<string, unknown>\n    sessionId: string\n    statusCallback?: (arg: string) => void\n  },\n>(assemblyManager: AssemblyManager, args: ARGTYPE) {\n  const { regions = [], adapterConfig } = args\n  if (!args.sessionId) {\n    throw new Error('sessionId is required')\n  }\n\n  const assemblyNames = regions.map(region => region.assemblyName)\n  const assemblyMaps = Object.fromEntries(\n    await Promise.all(\n      [...new Set(assemblyNames)].map(async assemblyName => {\n        return [\n          assemblyName,\n          await assemblyManager.getRefNameMapForAdapter(\n            adapterConfig,\n            assemblyName,\n            args,\n          ),\n        ]\n      }),\n    ),\n  )\n\n  return {\n    ...args,\n    regions: regions.map((region, i) =>\n      // note: uses assemblyNames defined above since region could be dead now\n      renameRegionIfNeeded(assemblyMaps[assemblyNames[i]!], region),\n    ),\n  }\n}\n\nexport function minmax(a: number, b: number) {\n  return [Math.min(a, b), Math.max(a, b)] as const\n}\n\nexport function shorten(name: string, max = 70, short = 30) {\n  return name.length > max\n    ? `${name.slice(0, short)}...${name.slice(-short)}`\n    : name\n}\n\nexport function stringify(\n  {\n    refName,\n    coord,\n    assemblyName,\n    oob,\n  }: {\n    assemblyName?: string\n    coord: number\n    refName?: string\n    oob?: boolean\n  },\n  useAssemblyName?: boolean,\n) {\n  return [\n    assemblyName && useAssemblyName ? `{${assemblyName}}` : '',\n    refName\n      ? `${shorten(refName)}:${toLocale(coord)}${oob ? ' (out of bounds)' : ''}`\n      : '',\n  ].join('')\n}\n\n// this is recommended in a later comment in\n// https://github.com/electron/electron/issues/2288 for detecting electron in a\n// renderer process, which is the one that has node enabled for us\n//\n// const isElectron = process.versions.electron\n// const i2 = process.versions.hasOwnProperty('electron')\nexport const isElectron = /electron/i.test(\n  typeof navigator !== 'undefined' ? navigator.userAgent : '',\n)\n\nexport function revcom(seqString: string) {\n  return reverse(complement(seqString))\n}\n\nexport function reverse(seqString: string) {\n  return seqString.split('').reverse().join('')\n}\n\nexport const complement = (() => {\n  const complementRegex = /[ACGT]/gi\n\n  // from bioperl: tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/\n  // generated with:\n  // perl -MJSON -E '@l = split \"\",\"acgtrymkswhbvdnxACGTRYMKSWHBVDNX\"; print to_json({ map { my $in = $_; tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/; $in => $_ } @l})'\n  const complementTable = {\n    S: 'S',\n    w: 'w',\n    T: 'A',\n    r: 'y',\n    a: 't',\n    N: 'N',\n    K: 'M',\n    x: 'x',\n    d: 'h',\n    Y: 'R',\n    V: 'B',\n    y: 'r',\n    M: 'K',\n    h: 'd',\n    k: 'm',\n    C: 'G',\n    g: 'c',\n    t: 'a',\n    A: 'T',\n    n: 'n',\n    W: 'W',\n    X: 'X',\n    m: 'k',\n    v: 'b',\n    B: 'V',\n    s: 's',\n    H: 'D',\n    c: 'g',\n    D: 'H',\n    b: 'v',\n    R: 'Y',\n    G: 'C',\n  } as Record<string, string>\n\n  return (seqString: string) => {\n    return seqString.replaceAll(complementRegex, m => complementTable[m] || '')\n  }\n})()\n\n// requires immediate execution in jest environment, because (hypothesis) it\n// otherwise listens for prerendered_canvas but reads empty pixels, and doesn't\n// get the contents of the canvas\nexport const rIC =\n  typeof jest === 'undefined'\n    ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      typeof window !== 'undefined' && window.requestIdleCallback\n      ? window.requestIdleCallback\n      : (cb: () => void) =>\n          setTimeout(() => {\n            cb()\n          }, 1)\n    : (cb: () => void) => {\n        cb()\n      }\n\n// prettier-ignore\nconst widths = [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.2796875,0.2765625,0.3546875,0.5546875,0.5546875,0.8890625,0.665625,0.190625,0.3328125,0.3328125,0.3890625,0.5828125,0.2765625,0.3328125,0.2765625,0.3015625,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.2765625,0.2765625,0.584375,0.5828125,0.584375,0.5546875,1.0140625,0.665625,0.665625,0.721875,0.721875,0.665625,0.609375,0.7765625,0.721875,0.2765625,0.5,0.665625,0.5546875,0.8328125,0.721875,0.7765625,0.665625,0.7765625,0.721875,0.665625,0.609375,0.721875,0.665625,0.94375,0.665625,0.665625,0.609375,0.2765625,0.3546875,0.2765625,0.4765625,0.5546875,0.3328125,0.5546875,0.5546875,0.5,0.5546875,0.5546875,0.2765625,0.5546875,0.5546875,0.221875,0.240625,0.5,0.221875,0.8328125,0.5546875,0.5546875,0.5546875,0.5546875,0.3328125,0.5,0.2765625,0.5546875,0.5,0.721875,0.5,0.5,0.5,0.3546875,0.259375,0.353125,0.5890625]\n\n// xref https://gist.github.com/tophtucker/62f93a4658387bb61e4510c37e2e97cf\nexport function measureText(str: unknown, fontSize = 10) {\n  const avg = 0.5279276315789471\n  const s = String(str)\n  let total = 0\n  for (let i = 0; i < s.length; i++) {\n    const code = s.charCodeAt(i)\n    total += widths[code] ?? avg\n  }\n  return total * fontSize\n}\n\nexport type Frame = 1 | 2 | 3 | -1 | -2 | -3\n\nexport function getFrame(\n  start: number,\n  end: number,\n  strand: 1 | -1,\n  phase: 0 | 1 | 2,\n): Frame {\n  return strand === 1\n    ? ((((start + phase) % 3) + 1) as 1 | 2 | 3)\n    : ((-1 * ((end - phase) % 3) - 1) as -1 | -2 | -3)\n}\n\nexport const defaultStarts = ['ATG']\nexport const defaultStops = ['TAA', 'TAG', 'TGA']\nexport const defaultCodonTable = {\n  TCA: 'S',\n  TCC: 'S',\n  TCG: 'S',\n  TCT: 'S',\n  TTC: 'F',\n  TTT: 'F',\n  TTA: 'L',\n  TTG: 'L',\n  TAC: 'Y',\n  TAT: 'Y',\n  TAA: '*',\n  TAG: '*',\n  TGC: 'C',\n  TGT: 'C',\n  TGA: '*',\n  TGG: 'W',\n  CTA: 'L',\n  CTC: 'L',\n  CTG: 'L',\n  CTT: 'L',\n  CCA: 'P',\n  CCC: 'P',\n  CCG: 'P',\n  CCT: 'P',\n  CAC: 'H',\n  CAT: 'H',\n  CAA: 'Q',\n  CAG: 'Q',\n  CGA: 'R',\n  CGC: 'R',\n  CGG: 'R',\n  CGT: 'R',\n  ATA: 'I',\n  ATC: 'I',\n  ATT: 'I',\n  ATG: 'M',\n  ACA: 'T',\n  ACC: 'T',\n  ACG: 'T',\n  ACT: 'T',\n  AAC: 'N',\n  AAT: 'N',\n  AAA: 'K',\n  AAG: 'K',\n  AGC: 'S',\n  AGT: 'S',\n  AGA: 'R',\n  AGG: 'R',\n  GTA: 'V',\n  GTC: 'V',\n  GTG: 'V',\n  GTT: 'V',\n  GCA: 'A',\n  GCC: 'A',\n  GCG: 'A',\n  GCT: 'A',\n  GAC: 'D',\n  GAT: 'D',\n  GAA: 'E',\n  GAG: 'E',\n  GGA: 'G',\n  GGC: 'G',\n  GGG: 'G',\n  GGT: 'G',\n}\n\n/**\n * take CodonTable above and generate larger codon table that includes all\n * permutations of upper and lower case nucleotides\n */\nexport function generateCodonTable(table: any) {\n  const tempCodonTable: Record<string, string> = {}\n  Object.keys(table).forEach(codon => {\n    const aa = table[codon]\n    const nucs: string[][] = []\n    for (let i = 0; i < 3; i++) {\n      const nuc = codon.charAt(i)\n      nucs[i] = []\n      nucs[i]![0] = nuc.toUpperCase()\n      nucs[i]![1] = nuc.toLowerCase()\n    }\n    for (let i = 0; i < 2; i++) {\n      const n0 = nucs[0]![i]!\n      for (let j = 0; j < 2; j++) {\n        const n1 = nucs[1]![j]!\n        for (let k = 0; k < 2; k++) {\n          const n2 = nucs[2]![k]!\n          const triplet = n0 + n1 + n2\n          tempCodonTable[triplet] = aa\n        }\n      }\n    }\n  })\n  return tempCodonTable\n}\n\n// call statusCallback with current status and clear when finished\nexport async function updateStatus<U>(\n  msg: string,\n  cb: (arg: string) => void,\n  fn: () => U | Promise<U>,\n) {\n  cb(msg)\n  const res = await fn()\n  cb('')\n  return res\n}\n\nexport function hashCode(str: string) {\n  let hash = 0\n  if (str.length === 0) {\n    return hash\n  }\n  for (let i = 0; i < str.length; i++) {\n    const chr = str.charCodeAt(i)\n    hash = (hash << 5) - hash + chr\n    hash |= 0 // Convert to 32bit integer\n  }\n  return hash\n}\n\nexport function objectHash(obj: Record<string, any>) {\n  return `${hashCode(JSON.stringify(obj))}`\n}\n\ninterface VirtualOffset {\n  blockPosition: number\n}\ninterface Block {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\nexport async function bytesForRegions(\n  regions: Region[],\n  index: {\n    blocksForRange: (\n      ref: string,\n      start: number,\n      end: number,\n    ) => Promise<Block[]>\n  },\n) {\n  const blockResults = await Promise.all(\n    regions.map(r => index.blocksForRange(r.refName, r.start, r.end)),\n  )\n\n  return blockResults\n    .flat()\n    .map(block => ({\n      start: block.minv.blockPosition,\n      end: block.maxv.blockPosition + 65535,\n    }))\n    .reduce((a, b) => a + b.end - b.start, 0)\n}\n\nexport interface ViewSnap {\n  bpPerPx: number\n  interRegionPaddingWidth: number\n  minimumBlockWidth: number\n  width: number\n  offsetPx: number\n  staticBlocks: { contentBlocks: BaseBlock[]; blocks: BaseBlock[] }\n  displayedRegions: (IStateTreeNode & {\n    start: number\n    end: number\n    refName: string\n    reversed?: boolean\n    assemblyName: string\n  })[]\n}\n\n// supported adapter types by text indexer ensure that this matches the method\n// found in @jbrowse/text-indexing/util\nexport function isSupportedIndexingAdapter(type = '') {\n  return [\n    'Gff3TabixAdapter',\n    'VcfTabixAdapter',\n    'Gff3Adapter',\n    'VcfAdapter',\n  ].includes(type)\n}\n\nexport function getBpDisplayStr(totalBp: number) {\n  if (Math.floor(totalBp / 1_000_000) > 0) {\n    return `${Number.parseFloat((totalBp / 1_000_000).toPrecision(3))}Mbp`\n  } else if (Math.floor(totalBp / 1_000) > 0) {\n    return `${Number.parseFloat((totalBp / 1_000).toPrecision(3))}Kbp`\n  } else {\n    return `${toLocale(Math.floor(totalBp))}bp`\n  }\n}\n\nexport function toLocale(n: number) {\n  return n.toLocaleString('en-US')\n}\n\nexport function getTickDisplayStr(totalBp: number, bpPerPx: number) {\n  return Math.floor(bpPerPx / 1_000) > 0\n    ? `${toLocale(Number.parseFloat((totalBp / 1_000_000).toFixed(2)))}M`\n    : toLocale(Math.floor(totalBp))\n}\n\nexport function getViewParams(model: IAnyStateTreeNode, exportSVG?: boolean) {\n  // @ts-expect-error\n  const { dynamicBlocks, staticBlocks, offsetPx } = getContainingView(model)\n  const b = dynamicBlocks?.contentBlocks[0] || {}\n  const staticblock = staticBlocks?.contentBlocks[0] || {}\n  const staticblock1 = staticBlocks?.contentBlocks[1] || {}\n  return {\n    offsetPx: exportSVG ? 0 : offsetPx - staticblock.offsetPx,\n    offsetPx1: exportSVG ? 0 : offsetPx - staticblock1.offsetPx,\n    start: b.start as number,\n    end: b.end as number,\n  }\n}\n\nexport function getLayoutId({\n  sessionId,\n  layoutId,\n}: {\n  sessionId: string\n  layoutId: string\n}) {\n  return `${sessionId}-${layoutId}`\n}\n\n// Hook from https://usehooks.com/useLocalStorage/\nexport function useLocalStorage<T>(key: string, initialValue: T) {\n  const [storedValue, setStoredValue] = useState<T>(() => {\n    if (typeof window === 'undefined') {\n      return initialValue\n    }\n    try {\n      const item = window.localStorage.getItem(key)\n      return item ? JSON.parse(item) : initialValue\n    } catch (error) {\n      console.error(error)\n      return initialValue\n    }\n  })\n  const setValue = (value: T | ((val: T) => T)) => {\n    try {\n      const valueToStore =\n        value instanceof Function ? value(storedValue) : value\n      setStoredValue(valueToStore)\n      if (typeof window !== 'undefined') {\n        window.localStorage.setItem(key, JSON.stringify(valueToStore))\n      }\n    } catch (error) {\n      console.error(error)\n    }\n  }\n  return [storedValue, setValue] as const\n}\n\nexport function getUriLink(value: { uri: string; baseUri?: string }) {\n  const { uri, baseUri = '' } = value\n  let href: string\n  try {\n    href = new URL(uri, baseUri).href\n  } catch (e) {\n    href = uri\n  }\n  return href\n}\n\nexport function getStr(obj: unknown) {\n  return isObject(obj)\n    ? isUriLocation(obj)\n      ? getUriLink(obj)\n      : JSON.stringify(obj)\n    : String(obj)\n}\n\n// tries to measure grid width without HTML tags included\nexport function coarseStripHTML(s: string) {\n  return s.replaceAll(/(<([^>]+)>)/gi, '')\n}\n\n// based on autolink-js, license MIT\n// https://github.com/bryanwoods/autolink-js/blob/1418049970152c56ced73d43dcc62d80b320fb71/autolink.js#L9\nexport function linkify(s: string) {\n  const pattern =\n    /(^|[\\s\\n]|<[A-Za-z]*\\/?>)((?:https?|ftp):\\/\\/[-A-Z0-9+\\u0026\\u2019@#/%?=()~_|!:,.;]*[-A-Z0-9+\\u0026@#/%=~()_|])/gi\n  return s.replaceAll(pattern, '$1<a href=\\'$2\\' target=\"_blank\">$2</a>')\n}\n\n// heuristic measurement for a column of a @mui/x-data-grid, pass in\n// values from a column\nexport function measureGridWidth(\n  elements: unknown[],\n  args?: {\n    minWidth?: number\n    fontSize?: number\n    maxWidth?: number\n    padding?: number\n    stripHTML?: boolean\n  },\n) {\n  const {\n    padding = 30,\n    minWidth = 80,\n    fontSize = 12,\n    maxWidth = 1000,\n    stripHTML = false,\n  } = args || {}\n  return max(\n    elements\n      .map(element => getStr(element))\n      .map(str => (stripHTML ? coarseStripHTML(str) : str))\n      .map(str => measureText(str, fontSize))\n      .map(n => Math.min(Math.max(n + padding, minWidth), maxWidth)),\n  )\n}\n\nexport function getEnv(obj: any) {\n  return getEnvMST<{ pluginManager: PluginManager }>(obj)\n}\n\nexport function localStorageGetItem(item: string) {\n  return typeof localStorage !== 'undefined'\n    ? localStorage.getItem(item)\n    : undefined\n}\n\nexport function localStorageSetItem(str: string, item: string) {\n  if (typeof localStorage !== 'undefined') {\n    localStorage.setItem(str, item)\n  }\n}\n\nexport function max(arr: number[], init = Number.NEGATIVE_INFINITY) {\n  let max = init\n  for (const entry of arr) {\n    max = entry > max ? entry : max\n  }\n  return max\n}\n\nexport function min(arr: number[], init = Number.POSITIVE_INFINITY) {\n  let min = init\n  for (const entry of arr) {\n    min = entry < min ? entry : min\n  }\n  return min\n}\n\nexport function sum(arr: number[]) {\n  let sum = 0\n  for (const entry of arr) {\n    sum += entry\n  }\n  return sum\n}\n\nexport function avg(arr: number[]) {\n  return sum(arr) / arr.length\n}\n\nexport function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string) {\n  const result = {} as Record<string, T[]>\n  for (const value of array) {\n    const t = predicate(value)\n    if (!result[t]) {\n      result[t] = []\n    }\n    result[t].push(value)\n  }\n  return result\n}\n\nexport function notEmpty<T>(value: T | null | undefined): value is T {\n  return value !== null && value !== undefined\n}\n\nexport function mergeIntervals<T extends { start: number; end: number }>(\n  intervals: T[],\n  w = 5000,\n) {\n  // test if there are at least 2 intervals\n  if (intervals.length <= 1) {\n    return intervals\n  }\n\n  const stack = [] as T[]\n  let top = null\n\n  // sort the intervals based on their start values\n  intervals = intervals.sort((a, b) => a.start - b.start)\n\n  // push the 1st interval into the stack\n  stack.push(intervals[0]!)\n\n  // start from the next interval and merge if needed\n  for (let i = 1; i < intervals.length; i++) {\n    // get the top element\n    top = stack.at(-1)!\n\n    // if the current interval doesn't overlap with the\n    // stack top element, push it to the stack\n    if (top.end + w < intervals[i]!.start - w) {\n      stack.push(intervals[i]!)\n    }\n    // otherwise update the end value of the top element\n    // if end of current interval is higher\n    else if (top.end < intervals[i]!.end) {\n      top.end = Math.max(top.end, intervals[i]!.end)\n      stack.pop()\n      stack.push(top)\n    }\n  }\n\n  return stack\n}\n\ninterface BasicFeature {\n  end: number\n  start: number\n  refName: string\n  assemblyName?: string\n}\n\n// returns new array non-overlapping features\nexport function gatherOverlaps(regions: BasicFeature[], w = 5000) {\n  const memo = {} as Record<string, BasicFeature[]>\n  for (const x of regions) {\n    if (!memo[x.refName]) {\n      memo[x.refName] = []\n    }\n    memo[x.refName]!.push(x)\n  }\n\n  return Object.values(memo).flatMap(group =>\n    mergeIntervals(\n      group.sort((a, b) => a.start - b.start),\n      w,\n    ),\n  )\n}\n\nexport function stripAlpha(str: string) {\n  return colord(str).alpha(1).toHex()\n}\n\nexport function getStrokeProps(str: string) {\n  const c = colord(str)\n  return {\n    strokeOpacity: c.alpha(),\n    stroke: c.alpha(1).toHex(),\n  }\n}\n\nexport function getFillProps(str: string) {\n  const c = colord(str)\n  return {\n    fillOpacity: c.alpha(),\n    fill: c.alpha(1).toHex(),\n  }\n}\n\n// https://react.dev/reference/react-dom/server/renderToString#removing-rendertostring-from-the-client-code\nexport function renderToStaticMarkup(\n  node: React.ReactElement,\n  createRootFn?: (elt: Element | DocumentFragment) => {\n    render: (node: React.ReactElement) => unknown\n  },\n) {\n  const div = document.createElement('div')\n  flushSync(() => {\n    if (createRootFn) {\n      createRootFn(div).render(node)\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-deprecated\n      render(node, div)\n    }\n  })\n  return div.innerHTML.replaceAll(/\\brgba\\((.+?),[^,]+?\\)/g, 'rgb($1)')\n}\n\nexport function isGzip(buf: Buffer) {\n  return buf[0] === 31 && buf[1] === 139 && buf[2] === 8\n}\n\nexport {\n  default as SimpleFeature,\n  type Feature,\n  type SimpleFeatureSerialized,\n  isFeature,\n} from './simpleFeature'\n\nexport { blobToDataURL } from './blobToDataURL'\n","import { getParent, isRoot, IAnyStateTreeNode } from 'mobx-state-tree'\nimport { getSession, objectHash, getEnv } from './index'\nimport { PreFileLocation, FileLocation } from './types'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\n\n/* utility functions for use by track models and so forth */\n\nexport function getTrackAssemblyNames(\n  track: IAnyStateTreeNode & { configuration: AnyConfigurationModel },\n) {\n  return getConfAssemblyNames(track.configuration)\n}\n\nexport function getConfAssemblyNames(conf: AnyConfigurationModel) {\n  const trackAssemblyNames = readConfObject(conf, 'assemblyNames') as\n    | string[]\n    | undefined\n  if (!trackAssemblyNames) {\n    // Check if it's an assembly sequence track\n    const parent = getParent<any>(conf)\n    if ('sequence' in parent) {\n      return [readConfObject(parent, 'name') as string]\n    } else {\n      throw new Error('unknown assembly names')\n    }\n  }\n  return trackAssemblyNames\n}\n\n/**\n * return the rpcSessionId of the highest parent node in the tree that has an\n * rpcSessionId */\n\nexport function getRpcSessionId(thisNode: IAnyStateTreeNode) {\n  interface NodeWithRpcSessionId extends IAnyStateTreeNode {\n    rpcSessionId: string\n  }\n  let highestRpcSessionId: string | undefined\n\n  for (let node = thisNode; !isRoot(node); node = getParent<any>(node)) {\n    if ('rpcSessionId' in node) {\n      highestRpcSessionId = (node as NodeWithRpcSessionId).rpcSessionId\n    }\n  }\n  if (!highestRpcSessionId) {\n    throw new Error(\n      'getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute',\n    )\n  }\n  return highestRpcSessionId\n}\n\n/**\n * given an MST node, get the renderprops of the first parent container that\n * has renderProps\n * @param node -\n * @returns renderprops, or empty object if none found\n */\nexport function getParentRenderProps(node: IAnyStateTreeNode) {\n  for (\n    let currentNode = getParent<any>(node);\n    !isRoot(currentNode);\n    currentNode = getParent<any>(currentNode)\n  ) {\n    if ('renderProps' in currentNode) {\n      return currentNode.renderProps()\n    }\n  }\n\n  return {}\n}\n\nexport const UNKNOWN = 'UNKNOWN'\nexport const UNSUPPORTED = 'UNSUPPORTED'\n\nlet blobMap: Record<string, File> = {}\n\n// get a specific blob\nexport function getBlob(id: string) {\n  return blobMap[id]\n}\n\n// used to export entire context to webworker\nexport function getBlobMap() {\n  return blobMap\n}\n\n// used in new contexts like webworkers\nexport function setBlobMap(map: Record<string, File>) {\n  blobMap = map\n}\n\nlet counter = 0\n\n// blob files are stored in a global map. the blobId is based on a combination\n// of timestamp plus counter to be unique across sessions and fast repeated\n// calls\nexport function storeBlobLocation(location: PreFileLocation) {\n  if ('blob' in location) {\n    const blobId = `b${+Date.now()}-${counter++}`\n    blobMap[blobId] = location.blob\n    return { name: location.blob.name, blobId, locationType: 'BlobLocation' }\n  }\n  return location\n}\n\n/**\n * creates a new location from the provided location including the appropriate suffix and location type\n * @param location - the FileLocation\n * @param suffix - the file suffix (e.g. .bam)\n * @returns the constructed location object from the provided parameters\n */\nexport function makeIndex(location: FileLocation, suffix: string) {\n  if ('uri' in location) {\n    return { uri: location.uri + suffix, locationType: 'UriLocation' }\n  }\n\n  if ('localPath' in location) {\n    return {\n      localPath: location.localPath + suffix,\n      locationType: 'LocalPathLocation',\n    }\n  }\n\n  return location\n}\n\n/**\n * constructs a potential index file (with suffix) from the provided file name\n * @param name - the name of the index file\n * @param typeA - one option of a potential two file suffix (e.g. CSI, BAI)\n * @param typeB - the second option of a potential two file suffix (e.g. CSI, BAI)\n * @returns a likely name of the index file for a given filename\n */\nexport function makeIndexType(\n  name: string | undefined,\n  typeA: string,\n  typeB: string,\n) {\n  return name?.toUpperCase().endsWith(typeA) ? typeA : typeB\n}\n\nexport interface AdapterConfig {\n  type: string\n  [key: string]: unknown\n}\n\nexport type AdapterGuesser = (\n  file: FileLocation,\n  index?: FileLocation,\n  adapterHint?: string,\n) => AdapterConfig | undefined\n\nexport type TrackTypeGuesser = (adapterName: string) => string | undefined\n\nexport function getFileName(track: FileLocation) {\n  const uri = 'uri' in track ? track.uri : undefined\n  const localPath = 'localPath' in track ? track.localPath : undefined\n  const blob = 'blobId' in track ? track : undefined\n  return (\n    blob?.name ||\n    uri?.slice(uri.lastIndexOf('/') + 1) ||\n    localPath?.slice(localPath.replace(/\\\\/g, '/').lastIndexOf('/') + 1) ||\n    ''\n  )\n}\n\nexport function guessAdapter(\n  file: FileLocation,\n  index: FileLocation | undefined,\n  adapterHint?: string,\n  model?: IAnyStateTreeNode,\n) {\n  if (model) {\n    const { pluginManager } = getEnv(model)\n    const adapterGuesser = pluginManager.evaluateExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (\n        _file: FileLocation,\n        _index?: FileLocation,\n        _adapterHint?: string,\n      ): AdapterConfig | undefined => {\n        return undefined\n      },\n    ) as AdapterGuesser\n\n    const adapter = adapterGuesser(file, index, adapterHint)\n\n    if (adapter) {\n      return adapter\n    }\n  }\n\n  return {\n    type: UNKNOWN,\n  }\n}\n\nexport function guessTrackType(\n  adapterType: string,\n  model?: IAnyStateTreeNode,\n): string {\n  if (model) {\n    const session = getSession(model)\n\n    const trackTypeGuesser = getEnv(\n      session,\n    ).pluginManager.evaluateExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (_adapterName: string): AdapterConfig | undefined => {\n        return undefined\n      },\n    ) as TrackTypeGuesser\n\n    const trackType = trackTypeGuesser(adapterType)\n\n    if (trackType) {\n      return trackType\n    }\n  }\n  return 'FeatureTrack'\n}\n\nexport function generateUnsupportedTrackConf(\n  trackName: string,\n  trackUrl: string,\n  categories: string[] | undefined,\n) {\n  const conf = {\n    type: 'FeatureTrack',\n    name: `${trackName} (Unsupported)`,\n    description: `Support not yet implemented for \"${trackUrl}\"`,\n    category: categories,\n    trackId: '',\n  }\n  conf.trackId = objectHash(conf)\n  return conf\n}\n\nexport function generateUnknownTrackConf(\n  trackName: string,\n  trackUrl: string,\n  categories: string[] | undefined,\n) {\n  const conf = {\n    type: 'FeatureTrack',\n    name: `${trackName} (Unknown)`,\n    description: `Could not determine track type for \"${trackUrl}\"`,\n    category: categories,\n    trackId: '',\n  }\n  conf.trackId = objectHash(conf)\n  return conf\n}\n\nexport function getTrackName(\n  conf: AnyConfigurationModel,\n  session: { assemblies: AnyConfigurationModel[] },\n) {\n  const trackName = readConfObject(conf, 'name') as string\n  if (!trackName && readConfObject(conf, 'type') === 'ReferenceSequenceTrack') {\n    const asm = session.assemblies.find(a => a.sequence === conf)\n    return asm\n      ? `Reference sequence (${\n          readConfObject(asm, 'displayName') || readConfObject(asm, 'name')\n        })`\n      : 'Reference sequence'\n  }\n  return trackName\n}\n","import { types } from 'mobx-state-tree'\nimport { nanoid } from '../nanoid'\n\nexport const ElementId = types.optional(types.identifier, () => nanoid())\n\nexport const NoAssemblyRegion = types\n  .model('NoAssemblyRegion', {\n    refName: types.string,\n    start: types.number,\n    end: types.number,\n    reversed: types.optional(types.boolean, false),\n  })\n  .actions(self => ({\n    setRefName(newRefName: string): void {\n      self.refName = newRefName\n    },\n  }))\n\nexport const Region = types.compose(\n  'Region',\n  NoAssemblyRegion,\n  types.model({\n    assemblyName: types.string,\n  }),\n)\n\nexport const LocalPathLocation = types.model('LocalPathLocation', {\n  locationType: types.literal('LocalPathLocation'),\n  localPath: types.string,\n})\n\n// like how blobId is used to get a blob map\nexport const BlobLocation = types.model('BlobLocation', {\n  locationType: types.literal('BlobLocation'),\n  name: types.string,\n  blobId: types.string,\n})\n\nexport const UriLocationRaw = types.model('UriLocation', {\n  locationType: types.literal('UriLocation'),\n  uri: types.string,\n  baseUri: types.maybe(types.string),\n\n  internetAccountId: types.maybe(types.string),\n\n  // auths information (such as tokens) needed for using this resource.\n  // if provided, these must be completely sufficient for using it\n  internetAccountPreAuthorization: types.maybe(\n    types.model('InternetAccountPreAuthorization', {\n      internetAccountType: types.string,\n      authInfo: types.frozen(),\n    }),\n  ),\n})\n\nexport const UriLocation = types.snapshotProcessor(UriLocationRaw, {\n  postProcessor: snap => {\n    // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n    const { baseUri, ...rest } = snap as Omit<typeof snap, symbol>\n    if (!baseUri) {\n      return rest\n    }\n    return snap\n  },\n})\n\nexport const FileLocation = types.snapshotProcessor(\n  types.union(LocalPathLocation, UriLocation, BlobLocation),\n  {\n    // @ts-expect-error\n    preProcessor(snap) {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!snap) {\n        return undefined\n      }\n\n      // @ts-expect-error\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      const { locationType, ...rest } = snap as Omit<typeof snap, symbol>\n      if (!locationType) {\n        // @ts-expect-error\n        const { uri, localPath, blob } = rest\n        let locationType = ''\n        if (uri !== undefined) {\n          locationType = 'UriLocation'\n        } else if (localPath !== undefined) {\n          locationType = 'LocalPathLocation'\n        } else if (blob !== undefined) {\n          locationType = 'BlobLocation'\n        }\n\n        return { ...rest, locationType }\n      }\n      return snap\n    },\n  },\n)\n","import { lazy } from 'react'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport UCSCTrackHubConnectionF from './ucsc-trackhub'\nimport AddTrackWidgetF from './AddTrackWidget'\n\nimport AddConnectionWidgetF from './AddConnectionWidget'\nimport PluginStoreWidgetF from './PluginStoreWidget'\nimport HierarchicalTrackSelectorWidgetF from './HierarchicalTrackSelectorWidget'\n\nconst AssemblyManager = lazy(() => import('./AssemblyManager'))\n\nexport default class DataManagementPlugin extends Plugin {\n  name = 'DataManagementPlugin'\n\n  exports = {\n    AssemblyManager,\n  }\n\n  install(pluginManager: PluginManager) {\n    UCSCTrackHubConnectionF(pluginManager)\n    AddTrackWidgetF(pluginManager)\n    HierarchicalTrackSelectorWidgetF(pluginManager)\n    AddConnectionWidgetF(pluginManager)\n    PluginStoreWidgetF(pluginManager)\n  }\n\n  configure(_pluginManager: PluginManager) {}\n}\n\nexport { AssemblyManager }\n\nexport { type AddTrackModel } from './AddTrackWidget/model'\nexport { type HierarchicalTrackSelectorModel } from './HierarchicalTrackSelectorWidget'\n","import domLoadScript from 'load-script'\n\n// locals\nimport Plugin, { PluginConstructor } from './Plugin'\nimport ReExports from './ReExports'\nimport { isElectron } from './util'\n\nexport interface UMDLocPluginDefinition {\n  umdLoc: {\n    uri: string\n    baseUri?: string\n  }\n  name: string\n}\n\nexport interface UMDUrlPluginDefinition {\n  umdUrl: string\n  name: string\n}\n\nexport interface LegacyUMDPluginDefinition {\n  url: string\n  name: string\n}\n\ntype UMDPluginDefinition = UMDLocPluginDefinition | UMDUrlPluginDefinition\n\nexport function isUMDPluginDefinition(\n  def: PluginDefinition,\n): def is UMDPluginDefinition | LegacyUMDPluginDefinition {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    ((def as UMDUrlPluginDefinition).umdUrl !== undefined ||\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      (def as LegacyUMDPluginDefinition).url !== undefined ||\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      (def as UMDLocPluginDefinition).umdLoc !== undefined) &&\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as LegacyUMDPluginDefinition | UMDPluginDefinition).name !== undefined\n  )\n}\n\nexport interface ESMLocPluginDefinition {\n  esmLoc: {\n    uri: string\n    baseUri?: string\n  }\n}\nexport interface ESMUrlPluginDefinition {\n  esmUrl: string\n}\n\nexport type ESMPluginDefinition =\n  | ESMLocPluginDefinition\n  | ESMUrlPluginDefinition\n\nexport function isESMPluginDefinition(\n  def: PluginDefinition,\n): def is ESMPluginDefinition {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as ESMUrlPluginDefinition).esmUrl !== undefined ||\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as ESMLocPluginDefinition).esmLoc !== undefined\n  )\n}\n\nexport interface CJSPluginDefinition {\n  cjsUrl: string\n}\n\nfunction promisifiedLoadScript(src: string) {\n  return new Promise((resolve, reject) => {\n    domLoadScript(src, (err, script) => {\n      if (err) {\n        reject(err)\n      } else {\n        resolve(script.src)\n      }\n    })\n  })\n}\n\nasync function loadScript(scriptUrl: string) {\n  if (!isInWebWorker()) {\n    return promisifiedLoadScript(scriptUrl)\n  }\n\n  // @ts-expect-error\n  if (globalThis.importScripts) {\n    // @ts-expect-error\n    await globalThis.importScripts(scriptUrl)\n    return\n  }\n  throw new Error(\n    'cannot figure out how to load external JS scripts in this environment',\n  )\n}\n\nexport function isCJSPluginDefinition(\n  def: PluginDefinition,\n): def is CJSPluginDefinition {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  return (def as CJSPluginDefinition).cjsUrl !== undefined\n}\n\nexport type PluginDefinition =\n  | UMDUrlPluginDefinition\n  | UMDLocPluginDefinition\n  | LegacyUMDPluginDefinition\n  | ESMLocPluginDefinition\n  | ESMUrlPluginDefinition\n  | CJSPluginDefinition\n\nexport interface PluginRecord {\n  plugin: PluginConstructor\n  definition: PluginDefinition\n}\n\nexport interface LoadedPlugin {\n  default: PluginConstructor\n}\n\nexport function pluginDescriptionString(pluginDefinition: PluginDefinition) {\n  if (isUMDPluginDefinition(pluginDefinition)) {\n    return `UMD plugin ${pluginDefinition.name}`\n  }\n  if (isESMPluginDefinition(pluginDefinition)) {\n    return `ESM plugin ${\n      (pluginDefinition as ESMUrlPluginDefinition).esmUrl ||\n      (pluginDefinition as ESMLocPluginDefinition).esmLoc.uri\n    }`\n  }\n  if (isCJSPluginDefinition(pluginDefinition)) {\n    return `CJS plugin ${pluginDefinition.cjsUrl}`\n  }\n  return 'unknown plugin'\n}\n\nfunction isInWebWorker() {\n  return Boolean('WorkerGlobalScope' in globalThis)\n}\n\nexport default class PluginLoader {\n  definitions: PluginDefinition[] = []\n\n  fetchESM?: (url: string) => Promise<LoadedPlugin>\n  fetchCJS?: (url: string) => Promise<LoadedPlugin>\n\n  constructor(\n    defs: PluginDefinition[] = [],\n    args?: {\n      fetchESM?: (url: string) => Promise<LoadedPlugin>\n      fetchCJS?: (url: string) => Promise<LoadedPlugin>\n    },\n  ) {\n    this.fetchESM = args?.fetchESM\n    this.fetchCJS = args?.fetchCJS\n    this.definitions = JSON.parse(JSON.stringify(defs))\n  }\n\n  async loadCJSPlugin(def: CJSPluginDefinition, baseUri?: string) {\n    const parsedUrl = new URL(def.cjsUrl, baseUri)\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `Cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n    if (!this.fetchCJS) {\n      throw new Error('No fetchCJS callback provided')\n    }\n\n    return this.fetchCJS(parsedUrl.href)\n  }\n\n  async loadESMPlugin(def: ESMPluginDefinition, baseUri?: string) {\n    const parsedUrl =\n      'esmUrl' in def\n        ? new URL(def.esmUrl, baseUri)\n        : new URL(def.esmLoc.uri, def.esmLoc.baseUri)\n\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n\n    if (!this.fetchESM) {\n      throw new Error('No ESM fetcher installed')\n    }\n    const plugin = await this.fetchESM(parsedUrl.href)\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (!plugin) {\n      throw new Error(`Could not load ESM plugin: ${parsedUrl}`)\n    }\n    return plugin\n  }\n\n  async loadUMDPlugin(\n    def: UMDPluginDefinition | LegacyUMDPluginDefinition,\n    baseUri?: string,\n  ) {\n    const parsedUrl =\n      'url' in def\n        ? new URL(def.url, baseUri)\n        : 'umdUrl' in def\n          ? new URL(def.umdUrl, baseUri)\n          : new URL(def.umdLoc.uri, def.umdLoc.baseUri)\n\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n    const moduleName = def.name\n    const umdName = `JBrowsePlugin${moduleName}`\n    if (typeof jest === 'undefined') {\n      await loadScript(parsedUrl.href)\n    } else {\n      // @ts-expect-error\n      globalThis[umdName] = { default: Plugin }\n    }\n\n    // @ts-expect-error\n    const plugin = globalThis[umdName] as\n      | { default: PluginConstructor }\n      | undefined\n    if (!plugin) {\n      throw new Error(\n        `Failed to load UMD bundle for ${moduleName}, ${umdName} is undefined`,\n      )\n    }\n    return plugin\n  }\n\n  async loadPlugin(def: PluginDefinition, baseUri?: string) {\n    let plugin: LoadedPlugin\n    if (isElectron && isCJSPluginDefinition(def)) {\n      plugin = await this.loadCJSPlugin(def, baseUri)\n    } else if (isESMPluginDefinition(def)) {\n      plugin = await this.loadESMPlugin(def, baseUri)\n    } else if (isUMDPluginDefinition(def)) {\n      plugin = await this.loadUMDPlugin(def, baseUri)\n    } else if (!isElectron && isCJSPluginDefinition(def)) {\n      throw new Error(\n        `CommonJS plugin found, but not in a NodeJS environment: ${JSON.stringify(\n          def,\n        )}`,\n      )\n    } else {\n      throw new Error(`Could not determine plugin type: ${JSON.stringify(def)}`)\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (!plugin.default) {\n      throw new Error(\n        `${pluginDescriptionString(\n          def,\n        )} does not have a default export, cannot load`,\n      )\n    }\n    return plugin.default\n  }\n\n  installGlobalReExports(target: WindowOrWorkerGlobalScope) {\n    // @ts-expect-error\n    target.JBrowseExports = Object.fromEntries(\n      Object.entries(ReExports).map(([moduleName, module]) => {\n        return [moduleName, module]\n      }),\n    )\n    return this\n  }\n\n  async load(baseUri?: string) {\n    return Promise.all(\n      this.definitions.map(async definition => ({\n        plugin: await this.loadPlugin(definition, baseUri),\n        definition,\n      })),\n    )\n  }\n}\n","import './workerPolyfill'\nimport { initializeWorker } from '@jbrowse/product-core'\nimport { enableStaticRendering } from 'mobx-react'\n\n// locals\nimport corePlugins from './corePlugins'\n\n// static rendering is used for \"SSR\" style rendering which is done on the\n// worker\nenableStaticRendering(true)\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\ninitializeWorker(corePlugins, {\n  fetchESM: url => import(/* webpackIgnore:true */ url),\n})\n\nexport default function doNothing() {\n  /* do nothing */\n}\n","import RpcServer from 'librpc-web-mod'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { remoteAbortRpcHandler } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport PluginLoader, {\n  LoadedPlugin,\n  PluginDefinition,\n} from '@jbrowse/core/PluginLoader'\nimport { PluginConstructor } from '@jbrowse/core/Plugin'\nimport { serializeError } from 'serialize-error'\n\ninterface WorkerConfiguration {\n  plugins: PluginDefinition[]\n  windowHref: string\n}\n\n// waits for a message from the main thread containing our configuration, which\n// must be sent on boot\nfunction receiveConfiguration() {\n  const configurationP = new Promise<WorkerConfiguration>(resolve => {\n    function listener(e: MessageEvent) {\n      if (e.data.message === 'config') {\n        resolve(e.data.config as WorkerConfiguration)\n        removeEventListener('message', listener)\n      }\n    }\n    self.addEventListener('message', listener)\n  })\n  postMessage({ message: 'readyForConfig' })\n  return configurationP\n}\n\nasync function getPluginManager(\n  corePlugins: PluginConstructor[],\n  opts: { fetchESM?: (url: string) => Promise<LoadedPlugin> },\n) {\n  // Load runtime plugins\n  const config = await receiveConfiguration()\n  const pluginLoader = new PluginLoader(\n    config.plugins,\n    opts,\n  ).installGlobalReExports(self)\n  return new PluginManager(\n    [\n      ...corePlugins.map(p => ({ plugin: p })),\n      ...(await pluginLoader.load(config.windowHref)),\n    ].map(P => new P.plugin()),\n  )\n    .createPluggableElements()\n    .configure()\n}\n\ninterface WrappedFuncArgs {\n  rpcDriverClassName: string\n  channel: string\n  [key: string]: unknown\n}\n\ntype RpcFunc = (args: unknown, rpcDriverClassName: string) => unknown\n\nfunction wrapForRpc(func: RpcFunc) {\n  return (args: WrappedFuncArgs) => {\n    const { channel, rpcDriverClassName } = args\n    return func(\n      {\n        ...args,\n        statusCallback: (message: string) => {\n          // @ts-expect-error\n          self.rpcServer.emit(channel, message)\n        },\n      },\n      rpcDriverClassName,\n    )\n  }\n}\n\nexport async function initializeWorker(\n  corePlugins: PluginConstructor[],\n  opts: {\n    fetchESM?: (url: string) => Promise<LoadedPlugin>\n    fetchCJS?: (url: string) => Promise<LoadedPlugin>\n  },\n) {\n  try {\n    const pluginManager = await getPluginManager(corePlugins, opts)\n    const rpcConfig = Object.fromEntries(\n      pluginManager\n        .getRpcElements()\n        .map(e => [e.name, wrapForRpc(e.execute.bind(e))]),\n    )\n\n    // @ts-expect-error\n    self.rpcServer = new RpcServer.Server({\n      ...rpcConfig,\n      ...remoteAbortRpcHandler(),\n      ping: async () => {\n        // the ping method is required by the worker driver for checking the\n        // health of the worker\n      },\n    })\n    postMessage({ message: 'ready' })\n  } catch (e) {\n    postMessage({ message: 'error', error: serializeError(e) })\n  }\n  /* do nothing */\n}\n","// this is a little polyfill for running in workers that\n// contains just enough stubbing to make webpack style-loader\n// think that it is actually inserting styles into the DOM\n\nself.window = {\n  addEventListener() {},\n  fetch: self.fetch.bind(self),\n  location: self.location,\n  Date: self.Date,\n  requestIdleCallback: cb => {\n    cb()\n  },\n  cancelIdleCallback: () => {},\n  requestAnimationFrame: cb => {\n    cb()\n  },\n  cancelAnimationFrame: () => {},\n  navigator: {},\n}\nself.document = {\n  createTextNode() {},\n  querySelector() {\n    return { appendChild() {} }\n  },\n  documentElement: {},\n  querySelectorAll: () => [],\n  createElement() {\n    return {\n      style: {},\n      setAttribute() {},\n      removeAttribute() {},\n      appendChild() {},\n    }\n  },\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [5255,3301,6837], () => (__webpack_require__(2657)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"12\":\"c0c7bdf9\",\"14\":\"b9913d1d\",\"26\":\"604133d9\",\"120\":\"a447052d\",\"246\":\"9848bd41\",\"266\":\"94eb2bf9\",\"311\":\"2c004784\",\"366\":\"b00bf6ca\",\"399\":\"e36b7683\",\"419\":\"021427b6\",\"439\":\"bdc14632\",\"457\":\"6d7b716d\",\"489\":\"43cb4a5f\",\"491\":\"0011d1ad\",\"518\":\"7222a328\",\"561\":\"8b38948f\",\"596\":\"84c38eb7\",\"722\":\"4329bc98\",\"741\":\"a9772d36\",\"759\":\"9c32be0d\",\"772\":\"83c2d2db\",\"937\":\"4f610bdf\",\"946\":\"245d7df9\",\"972\":\"c0d17685\",\"1012\":\"a7d14de3\",\"1029\":\"8c806427\",\"1051\":\"8e1641e2\",\"1110\":\"702cba94\",\"1157\":\"c0d4652e\",\"1189\":\"f18c6e1f\",\"1260\":\"ee4ecbf4\",\"1266\":\"cd6d9354\",\"1281\":\"1d836fc4\",\"1304\":\"a512b560\",\"1310\":\"8a044016\",\"1326\":\"19289940\",\"1345\":\"aaaaf175\",\"1354\":\"ded982ce\",\"1503\":\"cc48d25a\",\"1516\":\"ca4ab8f0\",\"1537\":\"4fdb4e95\",\"1598\":\"3b48685f\",\"1637\":\"21a8cf01\",\"1696\":\"8a290cef\",\"1725\":\"795fc4d3\",\"1752\":\"a727a500\",\"1757\":\"a6d05bc3\",\"1811\":\"7cfd8419\",\"1822\":\"2cbe112a\",\"1824\":\"c2ed4bca\",\"1978\":\"1faf7d31\",\"1996\":\"a37d9ec7\",\"1999\":\"2554e815\",\"2018\":\"9ce7fb06\",\"2062\":\"a28f26f8\",\"2141\":\"d36fb4a8\",\"2197\":\"a5134ce4\",\"2212\":\"116fbbf4\",\"2241\":\"3d359b22\",\"2246\":\"e5e65a4f\",\"2249\":\"b91f0bb3\",\"2306\":\"f8d640f4\",\"2321\":\"ef211da9\",\"2398\":\"731eb1c6\",\"2412\":\"10574f7d\",\"2418\":\"0b1f308b\",\"2424\":\"7cd6703f\",\"2493\":\"20e8e76c\",\"2583\":\"db78b17f\",\"2627\":\"300bea43\",\"2645\":\"4b79a04c\",\"2697\":\"4ab94d07\",\"2729\":\"9660c29b\",\"2775\":\"e25b4dd4\",\"2777\":\"56f29f41\",\"2820\":\"3c0e09be\",\"2847\":\"009c96ee\",\"2861\":\"aa6cd5b7\",\"2872\":\"5129bbd8\",\"2885\":\"8a30e856\",\"2977\":\"aa562b03\",\"2989\":\"031b43a0\",\"3003\":\"0f0cbacd\",\"3011\":\"9da53e7c\",\"3012\":\"9940fd01\",\"3029\":\"cd8dcca2\",\"3103\":\"4dfe3f78\",\"3106\":\"e1981605\",\"3109\":\"3173f682\",\"3162\":\"eb9bf76d\",\"3167\":\"312d0953\",\"3175\":\"af2c93a5\",\"3199\":\"a36b17a7\",\"3266\":\"accbd4dc\",\"3274\":\"053c3df5\",\"3301\":\"db457761\",\"3304\":\"65e5d8dd\",\"3311\":\"92fac4a6\",\"3368\":\"6e9b017b\",\"3384\":\"e146a796\",\"3416\":\"f7c72cbe\",\"3425\":\"be85a6ad\",\"3474\":\"8c1888be\",\"3497\":\"9db6611b\",\"3525\":\"e74d3ff0\",\"3550\":\"089089a8\",\"3578\":\"058bdae5\",\"3614\":\"af493134\",\"3682\":\"840e721c\",\"3728\":\"99a63442\",\"3778\":\"e18101e6\",\"3795\":\"0386c297\",\"3862\":\"9fd8e870\",\"3902\":\"69c7ff0c\",\"3940\":\"c8b3da50\",\"4033\":\"df8ecd0d\",\"4060\":\"8757dbe8\",\"4133\":\"451f5e47\",\"4138\":\"57ad92a3\",\"4234\":\"63e1ba57\",\"4284\":\"61dbc58f\",\"4345\":\"0a9072cc\",\"4395\":\"8fda7b8b\",\"4414\":\"7f4caeab\",\"4435\":\"a57cabe2\",\"4456\":\"93a06b74\",\"4499\":\"3f0b2e70\",\"4615\":\"dc35870f\",\"4629\":\"1f1a55a3\",\"4630\":\"f0bdb9f0\",\"4659\":\"b65d8547\",\"4704\":\"9b3995ff\",\"4753\":\"834007ba\",\"4755\":\"8d938db2\",\"4770\":\"3d757d6b\",\"4773\":\"6cd74b80\",\"4806\":\"7e497d7a\",\"4861\":\"6244e4c0\",\"4863\":\"9dfed19c\",\"4864\":\"28cfc358\",\"4902\":\"452e575b\",\"4947\":\"2e80fd2d\",\"4974\":\"cf97ef5b\",\"5008\":\"f8d32f92\",\"5031\":\"6eccfd35\",\"5090\":\"bc77ac67\",\"5099\":\"14f82444\",\"5101\":\"993a6b6e\",\"5132\":\"00a31df0\",\"5156\":\"75195722\",\"5189\":\"3e22269d\",\"5243\":\"9de20396\",\"5255\":\"af554ced\",\"5260\":\"e7b7aeb6\",\"5327\":\"8f1dcfc1\",\"5331\":\"28d667f0\",\"5369\":\"993afa3f\",\"5461\":\"5c8cf5d1\",\"5484\":\"3ceeebff\",\"5511\":\"154ce441\",\"5515\":\"671905b2\",\"5595\":\"b4517d69\",\"5608\":\"1b8d39e1\",\"5640\":\"33b8306c\",\"5668\":\"73016b9c\",\"5676\":\"818528e8\",\"5677\":\"28a25579\",\"5682\":\"ea285a50\",\"5727\":\"f7a524b6\",\"5736\":\"48705208\",\"5746\":\"39e4296b\",\"5763\":\"48010c9a\",\"5896\":\"622b5e88\",\"5903\":\"9145cef7\",\"5904\":\"240caa72\",\"5930\":\"0ffd2546\",\"5951\":\"251be759\",\"5998\":\"22bd8296\",\"6021\":\"21769087\",\"6043\":\"e402bf73\",\"6054\":\"e0881c55\",\"6149\":\"c6c4af73\",\"6157\":\"96f40683\",\"6205\":\"903f897d\",\"6214\":\"0ed0ac32\",\"6235\":\"93768761\",\"6310\":\"ae82dc58\",\"6323\":\"1c706a2d\",\"6342\":\"62a02e7b\",\"6391\":\"aabba4a1\",\"6395\":\"f6027b24\",\"6397\":\"8fc250af\",\"6423\":\"1e8da08b\",\"6435\":\"b4633aa1\",\"6514\":\"d36ecbb8\",\"6526\":\"b2c8fd93\",\"6621\":\"cf64e54c\",\"6658\":\"fe512b5a\",\"6683\":\"2a35f0fe\",\"6703\":\"faa93a20\",\"6746\":\"8d3f75be\",\"6785\":\"07d4b66b\",\"6799\":\"754a77ae\",\"6823\":\"6e35b0cf\",\"6833\":\"c77c5928\",\"6834\":\"bc9e9f2b\",\"6837\":\"a706c464\",\"6861\":\"66a2e4c0\",\"6932\":\"a37ea756\",\"6946\":\"dd09a891\",\"6999\":\"3486cca0\",\"7013\":\"5240d550\",\"7067\":\"e9508417\",\"7087\":\"79101e8e\",\"7117\":\"b3239756\",\"7126\":\"b4b7d70b\",\"7181\":\"938de865\",\"7203\":\"03e2b86a\",\"7309\":\"f9d18abb\",\"7348\":\"40afbdc0\",\"7374\":\"932d083d\",\"7389\":\"fa6a1eb0\",\"7407\":\"4421929d\",\"7409\":\"8e71acc1\",\"7418\":\"2ac24978\",\"7428\":\"1e6f676f\",\"7489\":\"b8a76d29\",\"7579\":\"1b98701c\",\"7584\":\"a162e3d6\",\"7627\":\"31dfd44e\",\"7706\":\"430ce07e\",\"7753\":\"87963fd9\",\"7761\":\"0cf7cf29\",\"7773\":\"7e072552\",\"7790\":\"3790bece\",\"7809\":\"eb2c5f08\",\"7812\":\"6bb31bfb\",\"7831\":\"cfcb0221\",\"7842\":\"cbff451c\",\"7864\":\"59d0de32\",\"7865\":\"e02aee95\",\"7902\":\"f48e3002\",\"7909\":\"8f1d759d\",\"7911\":\"764ec401\",\"7974\":\"3f19c570\",\"7991\":\"5d96c772\",\"8009\":\"a65f1b78\",\"8052\":\"7d772984\",\"8105\":\"4fd35586\",\"8109\":\"344e1845\",\"8114\":\"eb856986\",\"8120\":\"85042513\",\"8150\":\"09c54606\",\"8165\":\"d07843b4\",\"8187\":\"383aefbf\",\"8216\":\"16f39607\",\"8301\":\"877076ce\",\"8341\":\"fa84fa67\",\"8343\":\"dd515382\",\"8408\":\"2e2896bf\",\"8424\":\"a1a3e663\",\"8435\":\"484d30f8\",\"8483\":\"7fadf4ea\",\"8526\":\"5dd9c712\",\"8528\":\"f68ff14f\",\"8535\":\"189d090a\",\"8546\":\"0a89cbee\",\"8556\":\"0053a402\",\"8565\":\"c4ea9980\",\"8582\":\"9b93fffc\",\"8615\":\"0950a86f\",\"8624\":\"190dd7af\",\"8678\":\"8424d5dc\",\"8704\":\"ae4808df\",\"8762\":\"3d2b9142\",\"8797\":\"3168365d\",\"8856\":\"4593419f\",\"8859\":\"efb2561f\",\"8869\":\"74066774\",\"8876\":\"24bf6aed\",\"8880\":\"6ae9d985\",\"8929\":\"70ce258f\",\"8965\":\"51db703f\",\"8984\":\"1a816123\",\"9028\":\"12f6efe2\",\"9032\":\"b54e1975\",\"9037\":\"03715b7f\",\"9067\":\"1cc02121\",\"9070\":\"d49de235\",\"9086\":\"035adaa3\",\"9088\":\"9fbbeb5c\",\"9106\":\"b274c701\",\"9114\":\"d412d44e\",\"9168\":\"6afdec67\",\"9206\":\"bbf34514\",\"9245\":\"d882c265\",\"9280\":\"6e897b98\",\"9292\":\"96b77fb0\",\"9305\":\"4d748fb5\",\"9314\":\"3e43d34c\",\"9329\":\"c269472b\",\"9372\":\"67d6f914\",\"9374\":\"8ac7e6d7\",\"9384\":\"a4e7a69a\",\"9409\":\"c7569196\",\"9449\":\"2e1d2652\",\"9458\":\"07f0ae54\",\"9589\":\"9087e0ea\",\"9657\":\"0cccd5bf\",\"9658\":\"33669a59\",\"9690\":\"0cd8a2c8\",\"9756\":\"4ac80c37\",\"9824\":\"b9ece376\",\"9831\":\"de8b3aa9\",\"9870\":\"f395e633\",\"9943\":\"d3ab0f18\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 2047;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t2047: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunk_jbrowse_web\"] = globalThis[\"webpackChunk_jbrowse_web\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","__webpack_require__.nc = undefined;","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","leafPrototypes","getProto","next","adapterCache","async","getAdapter","pluginManager","sessionId","adapterConfigSnapshot","cacheKey","conf","idMaker","adapterConfigCacheKey","adapterType","type","Error","JSON","stringify","dataAdapterType","getAdapterType","adapterConfig","configSchema","create","getSubAdapter","bind","dataAdapter","getAdapterClass","sessionIds","Set","cacheEntry","add","freeAdapterResources","specification","deleteCount","specKeys","Object","keys","length","entries","forEach","delete","size","values","regions","region","undefined","refName","freeResources","isRemoteAbortSignal","thing","abortSignalId","WeakMap","surrogateAbortControllers","Map","deserializeAbortSignal","surrogateAbortController","get","AbortController","set","signal","remoteAbort","props","signalId","abort","remoteAbortRpcHandler","signalAbort","CascadingContext","React","parentPopupState","rootPopupState","CascadingMenuItem","onClick","closeAfterItemClick","useContext","MenuItem","_extends","event","close","CascadingSubmenu","title","Icon","inset","popupId","popupState","usePopupState","variant","bindHover","bindFocus","ListItemIcon","ListItemText","primary","ChevronRight","CascadingSubmenuHover","anchorOrigin","vertical","horizontal","transformOrigin","onMenuItemClick","menuItems","classes","context","useMemo","Provider","value","HoverMenu","bindMenu","CascadingMenu","Menu","EndDecoration","item","MenuItemEndDecoration","checked","disabled","CascadingMenuList","hasIcon","some","m","icon","sort","a","b","priority","map","idx","key","label","subMenu","Divider","component","ListSubheader","callback","Boolean","secondary","subLabel","style","flexGrow","minWidth","rest","useStyles","makeStyles","theme","closeButton","position","right","spacing","top","color","palette","grey","DialogError","error","width","margin","ErrorMessage","observer","header","children","onClose","useTheme","MUIDialog","ScopedCssBaseline","DialogTitle","SanitizedHTML","html","IconButton","className","CloseIcon","ErrorBoundary","FallbackComponent","ThemeProvider","createTheme","components","MuiInputBase","styleOverrides","input","boxSizing","inputBase","typography","left","whiteSpace","visibility","inputRoot","padding","inputFocused","borderStyle","borderWidth","ref","setValue","other","ref2","useMeasure","editedValue","setEditedValue","useState","inputNode","setInputNode","blur","setBlur","useEffect","val","Typography","InputBase","inputRef","node","inputProps","root","focused","onChange","target","onKeyDown","onBlur","ErrorMessageStackTraceDialog","lazy","bg","background","divider","border","iconFloat","float","marginLeft","ErrorButtons","onReset","showStack","setShowStack","Tooltip","ReportIcon","RefreshIcon","Suspense","fallback","str","str2","indexOf","str3","slice","snapshotError","trim","findStr","match","exec","match2","parseError","RedErrorMessageBox","parse","FactoryResetDialog","open","onFactoryReset","handleDialogClose","action","Dialog","DialogContent","DialogContentText","DialogActions","Button","ContentCopy","SvgIcon","d","Indexing","TrackSelector","getColors","midnight","forrest","grape","mandarin","gray","Logomark","viewBox","LogoFull","Text","colors","fill","transform","paper","overflowY","overflowX","minHeight","maxWidth","maxHeight","outline","menuItemEndDecoration","height","ArrowRightIcon","CheckBoxIcon","CheckBoxOutlineBlankIcon","RadioButtonCheckedIcon","RadioButtonUncheckedIcon","checkIfValid","MenuPage","subMenuAnchorEl","setSubMenuAnchorEl","openSubMenuIdx","setOpenSubMenuIdx","isSubMenuOpen","setIsSubMenuOpen","selectedMenuItemIdx","setSelectedMenuItemIdx","setPosition","paperRef","useRef","anchorEl","shouldSubMenuBeOpen","timer","setTimeout","clearTimeout","rect","getBoundingClientRect","menuItem","menuItemStyle","ListContents","MenuList","autoFocusItem","dense","endDecoration","MUIMenuItem","id","String","selected","onMouseMove","e","currentTarget","document","activeElement","focus","currentIdx","findLastIndex","findPreviousValidIdx","findIndex","findNextValidIdx","Grow","in","Paper","elevation","Popover","horizontalHandle","cursor","verticalHandle","flexbox_verticalHandle","alignSelf","flexbox_horizontalHandle","onDrag","flexbox","originalClassName","onMouseDown","mouseDragging","setMouseDragging","initialPosition","prevPos","cx","mouseMove","preventDefault","pos","clientX","clientY","totalDistance","current","lastFrameDistance","mouseUp","window","addEventListener","removeEventListener","model","handleClose","clearView","autoFocus","added","full","RegExp","tag","join","pre","linkify","test","escapeHTML","dompurify","tagName","setAttribute","dangerouslySetInnerHTML","__html","refTheme","forest","augmentColor","main","bases","A","green","C","blue","G","orange","T","red","framesCDS","frames","stopCodon","startCodon","stockTheme","mode","tertiary","quaternary","highlight","MuiLink","defaultThemes","default","name","lightStock","lightMinimal","darkMinimal","darkStock","MuiAppBar","defaultProps","enableColorOnDark","overwriteArrayMerge","_","sourceArray","createJBrowseBaseTheme","themeP","fontSize","MuiButton","text","MuiAccordion","disableGutters","slotProps","transition","timeout","unmountOnExit","MuiFilledInput","MuiFormControl","MuiFormHelperText","MuiIconButton","MuiAutocomplete","MuiInputLabel","MuiToolbar","MuiListItem","MuiOutlinedInput","MuiFab","backgroundColor","MuiTable","MuiPopover","transitionDuration","MuiMenu","MuiMenuItem","MuiTextField","MuiCheckbox","MuiRadio","MuiFormLabel","MuiAccordionSummary","content","contrastText","MuiToggleButtonGroup","deepmerge","arrayMerge","createJBrowseTheme","configTheme","themes","themeName","augmentTheme","augmentThemePlus","importFormEntry","session","InputProps","TextFieldProps","localStorageKey","helperText","assemblyNames","assemblyManager","config","URLSearchParams","location","search","lastSelected","setLastSelected","jest","useLocalStorage","host","pathname","selection","includes","TextField","select","assembly","displayName","getConf","ToggleButtonWithTooltip","ToggleButton","shorten","len","Math","max","description","rootModel","setLocation","fileOrUrl","isUriLocation","toggleButtonValue","setToggleButtonValue","internetAccountId","accounts","isAppRootModel","internetAccounts","filter","f","recentlyUsedInternetAccounts","setRecentlyUsedInternetAccounts","fromEntries","arr","s","shownAccounts","hiddenAccounts","setAnchorEl","selectedAccount","setLocationWithAccount","useCallback","locationInput","UrlChooser","selectorLabel","LocalFileChooser","SelectorComponent","Box","display","InputLabel","shrink","flexDirection","ToggleButtonGroup","exclusive","_event","newState","notEmpty","toggleContents","ArrowDropDownIcon","FormHelperText","highResolutionScaling","imageData","blockKey","showSoftClip","done","setDone","featureCanvas","canvas","getContext","drawImageOntoCanvasContext","QuickLRU","constructor","options","super","maxSize","TypeError","maxAge","this","Number","POSITIVE_INFINITY","onEviction","cache","oldCache","_size","_emitEvictions","_deleteIfExpired","expiry","Date","now","_getOrDeleteIfExpired","_getItemValue","_peek","_set","_moveToRecent","_entriesAscending","has","peek","deleted","clear","resize","newSize","items","removeCount","Symbol","iterator","entriesDescending","i","entriesAscending","oldCacheSize","min","callbackFunction","thisArgument","call","toStringTag","useDebounce","delay","debouncedValue","setDebouncedValue","handle","useWidthSetter","view","isAlive","requestAnimationFrame","setWidth","parseInt","useDebouncedCallback","wait","argsRef","args","findParentThat","predicate","hasParent","currentNode","getParent","springAnimate","fromValue","toValue","onFinish","precision","tension","friction","clamp","animationFrameId","update","animation","time","lastPosition","lastTime","velocity","lastVelocity","numSteps","floor","isVelocity","abs","isDisplacement","cancelAnimationFrame","findParentThatIs","getSession","isSessionModel","getContainingView","isViewModel","getContainingTrack","isTrackModel","getContainingDisplay","isDisplayModel","assembleLocString","assembleLocStringFast","toLocale","cb","n","assemblyName","start","end","reversed","assemblyNameString","startString","endString","rev","parseLocStringOneBased","locString","isValidRefName","endsWith","replace","assemblyMatch","assemblyName2","location2","startsWith","lastColonIdx","lastIndexOf","prefix","suffix","rangeMatch","singleMatch","replaceAll","separator","parseLocString","parsed","compareLocs","locA","locB","assemblyComp","localeCompare","refComp","startComp","endComp","compareLocStrings","num","bpToPx","bp","bpPerPx","round","oneEightyOverPi","PI","piOverOneEighty","radToDeg","radians","degToRad","degrees","polarToCartesian","rho","theta","cos","sin","cartesianToPolar","x","y","sqrt","atan","featureSpanPx","feature","bpSpanPx","leftBp","rightBp","iterMap","iter","func","sizeHint","results","Array","from","counter","array","l","findLast","makeAbortableReaction","self","dataFunction","asyncReactionFunction","reactionOptions","startedFunction","successFunction","errorFunction","inProgress","handleError","isAbortException","console","addDisposer","reaction","data","mobxReactionHandle","aborted","thisInProgress","result","checkAbortSignal","renameRegionIfNeeded","refNameMap","isStateTreeNode","newRef","getSnapshot","originalRefName","renameRegionsIfNeeded","assemblyMaps","Promise","all","getRefNameMapForAdapter","minmax","short","coord","oob","useAssemblyName","isElectron","navigator","userAgent","revcom","seqString","reverse","complement","split","complementRegex","complementTable","S","w","r","N","K","Y","V","M","h","k","g","t","W","X","v","B","H","c","D","R","rIC","requestIdleCallback","widths","measureText","total","code","charCodeAt","getFrame","strand","phase","defaultStarts","defaultStops","defaultCodonTable","TCA","TCC","TCG","TCT","TTC","TTT","TTA","TTG","TAC","TAT","TAA","TAG","TGC","TGT","TGA","TGG","CTA","CTC","CTG","CTT","CCA","CCC","CCG","CCT","CAC","CAT","CAA","CAG","CGA","CGC","CGG","CGT","ATA","ATC","ATT","ATG","ACA","ACC","ACG","ACT","AAC","AAT","AAA","AAG","AGC","AGT","AGA","AGG","GTA","GTC","GTG","GTT","GCA","GCC","GCG","GCT","GAC","GAT","GAA","GAG","GGA","GGC","GGG","GGT","generateCodonTable","table","tempCodonTable","codon","aa","nucs","nuc","charAt","toUpperCase","toLowerCase","n0","j","n1","n2","updateStatus","msg","fn","res","hashCode","hash","objectHash","obj","bytesForRegions","index","blocksForRange","flat","block","minv","blockPosition","maxv","reduce","isSupportedIndexingAdapter","getBpDisplayStr","totalBp","parseFloat","toPrecision","toLocaleString","getTickDisplayStr","toFixed","getViewParams","exportSVG","dynamicBlocks","staticBlocks","offsetPx","contentBlocks","staticblock","staticblock1","offsetPx1","getLayoutId","layoutId","initialValue","storedValue","setStoredValue","localStorage","getItem","valueToStore","Function","setItem","getUriLink","uri","baseUri","href","URL","getStr","isObject","coarseStripHTML","measureGridWidth","elements","stripHTML","element","getEnv","getEnvMST","localStorageGetItem","localStorageSetItem","init","NEGATIVE_INFINITY","entry","sum","avg","groupBy","push","mergeIntervals","intervals","stack","at","pop","gatherOverlaps","memo","flatMap","group","stripAlpha","colord","alpha","toHex","getStrokeProps","strokeOpacity","stroke","getFillProps","fillOpacity","renderToStaticMarkup","createRootFn","div","createElement","flushSync","render","innerHTML","isGzip","buf","getTrackAssemblyNames","track","getConfAssemblyNames","configuration","trackAssemblyNames","readConfObject","parent","getRpcSessionId","thisNode","highestRpcSessionId","isRoot","rpcSessionId","getParentRenderProps","renderProps","UNKNOWN","UNSUPPORTED","blobMap","getBlob","getBlobMap","setBlobMap","storeBlobLocation","blobId","blob","locationType","makeIndex","localPath","makeIndexType","typeA","typeB","getFileName","guessAdapter","file","adapterHint","adapter","evaluateExtensionPoint","_file","_index","_adapterHint","adapterGuesser","guessTrackType","trackType","_adapterName","trackTypeGuesser","generateUnsupportedTrackConf","trackName","trackUrl","categories","category","trackId","generateUnknownTrackConf","getTrackName","asm","assemblies","find","sequence","ElementId","types","optional","identifier","nanoid","NoAssemblyRegion","string","number","boolean","actions","setRefName","newRefName","Region","compose","LocalPathLocation","literal","BlobLocation","UriLocationRaw","maybe","internetAccountPreAuthorization","internetAccountType","authInfo","frozen","UriLocation","snapshotProcessor","postProcessor","snap","FileLocation","union","preProcessor","AssemblyManager","DataManagementPlugin","Plugin","exports","install","UCSCTrackHubConnectionF","AddTrackWidgetF","HierarchicalTrackSelectorWidgetF","AddConnectionWidgetF","PluginStoreWidgetF","configure","_pluginManager","isUMDPluginDefinition","def","umdUrl","url","umdLoc","isESMPluginDefinition","esmUrl","esmLoc","isCJSPluginDefinition","cjsUrl","PluginLoader","definitions","defs","fetchESM","fetchCJS","loadCJSPlugin","parsedUrl","protocol","loadESMPlugin","plugin","loadUMDPlugin","moduleName","umdName","scriptUrl","globalThis","src","resolve","reject","domLoadScript","err","script","importScripts","loadScript","loadPlugin","pluginDefinition","installGlobalReExports","JBrowseExports","ReExports","module","load","definition","enableStaticRendering","corePlugins","opts","configurationP","listener","message","postMessage","receiveConfiguration","pluginLoader","plugins","PluginManager","p","windowHref","P","createPluggableElements","getPluginManager","rpcConfig","getRpcElements","execute","channel","rpcDriverClassName","statusCallback","rpcServer","emit","RpcServer","Server","ping","serializeError","initializeWorker","import","fetch","cancelIdleCallback","createTextNode","querySelector","appendChild","documentElement","querySelectorAll","removeAttribute","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__","O","chunkIds","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","getPrototypeOf","then","ns","getOwnPropertyNames","o","defineProperty","enumerable","chunkId","promises","u","miniCssF","prop","prototype","hasOwnProperty","currentScript","scripts","getElementsByTagName","installedChunks","chunkLoadingGlobal","parentChunkLoadingFunction","moreModules","runtime","nc"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2062.a28f26f8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2062],{81762:(e,t,o)=>{o.d(t,{A:()=>i,P:()=>n});var r=o(7552);const a=r.createContext({});function n(){return r.useContext(a)}const i=a},12062:(e,t,o)=>{o.r(t),o.d(t,{default:()=>f,getStepButtonUtilityClass:()=>b,stepButtonClasses:()=>A});var r=o(7552),a=o(93878),n=o(70799),i=o(51148),l=o(4785),s=o(48054),c=o(96403),p=o(3755),d=o(29628),u=o(81762),m=o(33761),v=o(85693);function b(e){return(0,v.Ay)("MuiStepButton",e)}const A=(0,m.A)("MuiStepButton",["root","horizontal","vertical","touchRipple"]);var x=o(69500);const h=(0,i.Ay)(s.A,{name:"MuiStepButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[{[`& .${A.touchRipple}`]:t.touchRipple},t.root,t[o.orientation]]}})({width:"100%",padding:"24px 16px",margin:"-24px -16px",boxSizing:"content-box",[`& .${A.touchRipple}`]:{color:"rgba(0, 0, 0, 0.3)"},variants:[{props:{orientation:"vertical"},style:{justifyContent:"flex-start",padding:"8px",margin:"-8px"}}]}),f=r.forwardRef((function(e,t){const o=(0,l.b)({props:e,name:"MuiStepButton"}),{children:i,className:s,icon:m,optional:v,...A}=o,{disabled:f,active:y}=r.useContext(u.A),{orientation:S}=r.useContext(d.A),C={...o,orientation:S},g=(e=>{const{classes:t,orientation:o}=e,r={root:["root",o],touchRipple:["touchRipple"]};return(0,n.A)(r,b,t)})(C),w={icon:m,optional:v},L=(0,p.A)(i,["StepLabel"])?r.cloneElement(i,w):(0,x.jsx)(c.A,{...w,children:i});return(0,x.jsx)(h,{focusRipple:!0,disabled:f,TouchRippleProps:{className:g.touchRipple},className:(0,a.A)(g.root,s),ref:t,ownerState:C,"aria-current":y?"step":void 0,...A,children:L})}))},47450:(e,t,o)=>{o.d(t,{A:()=>h});var r=o(7552),a=o(93878),n=o(70799),i=o(51148),l=o(60129),s=o(4785),c=o(74893),p=o(69500);const d=(0,c.A)((0,p.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),u=(0,c.A)((0,p.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var m,v=o(2859),b=o(72755);const A=(0,i.Ay)(v.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(e,t)=>t.root})((0,l.A)((({theme:e})=>({display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${b.A.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${b.A.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${b.A.error}`]:{color:(e.vars||e).palette.error.main}})))),x=(0,i.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(e,t)=>t.text})((0,l.A)((({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})))),h=r.forwardRef((function(e,t){const o=(0,s.b)({props:e,name:"MuiStepIcon"}),{active:r=!1,className:i,completed:l=!1,error:c=!1,icon:v,...h}=o,f={...o,active:r,completed:l,error:c},y=(e=>{const{classes:t,active:o,completed:r,error:a}=e,i={root:["root",o&&"active",r&&"completed",a&&"error"],text:["text"]};return(0,n.A)(i,b.K,t)})(f);if("number"==typeof v||"string"==typeof v){const e=(0,a.A)(i,y.root);return c?(0,p.jsx)(A,{as:u,className:e,ref:t,ownerState:f,...h}):l?(0,p.jsx)(A,{as:d,className:e,ref:t,ownerState:f,...h}):(0,p.jsxs)(A,{className:e,ref:t,ownerState:f,...h,children:[m||(m=(0,p.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,p.jsx)(x,{className:y.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:f,children:v})]})}return v}))},72755:(e,t,o)=>{o.d(t,{A:()=>i,K:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiStepIcon",e)}const i=(0,r.A)("MuiStepIcon",["root","active","completed","error","text"])},96403:(e,t,o)=>{o.d(t,{A:()=>y});var r=o(70799),a=o(93878),n=o(7552),i=o(81762),l=o(47450),s=o(29628),c=o(51148),p=o(60129),d=o(4785),u=o(34247),m=o(43045),v=o(69500);const b=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation]]}})({display:"flex",alignItems:"center",[`&.${u.A.alternativeLabel}`]:{flexDirection:"column"},[`&.${u.A.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),A=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Label",overridesResolver:(e,t)=>t.label})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),[`&.${u.A.active}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${u.A.completed}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${u.A.alternativeLabel}`]:{marginTop:16},[`&.${u.A.error}`]:{color:(e.vars||e).palette.error.main}})))),x=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"IconContainer",overridesResolver:(e,t)=>t.iconContainer})({flexShrink:0,display:"flex",paddingRight:8,[`&.${u.A.alternativeLabel}`]:{paddingRight:0}}),h=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"LabelContainer",overridesResolver:(e,t)=>t.labelContainer})((0,p.A)((({theme:e})=>({width:"100%",color:(e.vars||e).palette.text.secondary,[`&.${u.A.alternativeLabel}`]:{textAlign:"center"}})))),f=n.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiStepLabel"}),{children:c,className:p,componentsProps:f={},error:y=!1,icon:S,optional:C,slots:g={},slotProps:w={},StepIconComponent:L,StepIconProps:R,...M}=o,{alternativeLabel:j,orientation:N}=n.useContext(s.A),{active:$,disabled:I,completed:z,icon:k}=n.useContext(i.A),P=S||k;let T=L;P&&!T&&(T=l.A);const B={...o,active:$,alternativeLabel:j,completed:z,disabled:I,error:y,orientation:N},F=(e=>{const{classes:t,orientation:o,active:a,completed:n,error:i,disabled:l,alternativeLabel:s}=e,c={root:["root",o,i&&"error",l&&"disabled",s&&"alternativeLabel"],label:["label",a&&"active",n&&"completed",i&&"error",l&&"disabled",s&&"alternativeLabel"],iconContainer:["iconContainer",a&&"active",n&&"completed",i&&"error",l&&"disabled",s&&"alternativeLabel"],labelContainer:["labelContainer",s&&"alternativeLabel"]};return(0,r.A)(c,u.p,t)})(B),_={slots:g,slotProps:{stepIcon:R,...f,...w}},[W,K]=(0,m.A)("label",{elementType:A,externalForwardedProps:_,ownerState:B}),[D,E]=(0,m.A)("stepIcon",{elementType:T,externalForwardedProps:_,ownerState:B});return(0,v.jsxs)(b,{className:(0,a.A)(F.root,p),ref:t,ownerState:B,...M,children:[P||D?(0,v.jsx)(x,{className:F.iconContainer,ownerState:B,children:(0,v.jsx)(D,{completed:z,active:$,error:y,icon:P,...E})}):null,(0,v.jsxs)(h,{className:F.labelContainer,ownerState:B,children:[c?(0,v.jsx)(W,{...K,className:(0,a.A)(F.label,K?.className),children:c}):null,C]})]})}));f&&(f.muiName="StepLabel");const y=f},34247:(e,t,o)=>{o.d(t,{A:()=>i,p:()=>n});var r=o(33761),a=o(85693);function n(e){return(0,a.Ay)("MuiStepLabel",e)}const i=(0,r.A)("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"])},29628:(e,t,o)=>{o.d(t,{A:()=>i,s:()=>n});var r=o(7552);const a=r.createContext({});function n(){return r.useContext(a)}const i=a}}]);
+//# sourceMappingURL=2062.a28f26f8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2062.a28f26f8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2062.a28f26f8.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/StepButton/stepButtonClasses.js","../../../node_modules/@mui/material/StepButton/StepButton.js","../../../node_modules/@mui/material/internal/svg-icons/CheckCircle.js","../../../node_modules/@mui/material/internal/svg-icons/Warning.js","../../../node_modules/@mui/material/StepIcon/StepIcon.js","../../../node_modules/@mui/material/StepIcon/stepIconClasses.js","../../../node_modules/@mui/material/StepLabel/StepLabel.js","../../../node_modules/@mui/material/StepLabel/stepLabelClasses.js","../../../node_modules/@mui/material/Stepper/StepperContext.js"],"sourcesContent":["import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiStepButton', slot);\n}\nconst stepButtonClasses = generateUtilityClasses('MuiStepButton', ['root', 'horizontal', 'vertical', 'touchRipple']);\nexport default stepButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport StepLabel from \"../StepLabel/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"../Step/StepContext.js\";\nimport stepButtonClasses, { getStepButtonUtilityClass } from \"./stepButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation],\n    touchRipple: ['touchRipple']\n  };\n  return composeClasses(slots, getStepButtonUtilityClass, classes);\n};\nconst StepButtonRoot = styled(ButtonBase, {\n  name: 'MuiStepButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${stepButtonClasses.touchRipple}`]: styles.touchRipple\n    }, styles.root, styles[ownerState.orientation]];\n  }\n})({\n  width: '100%',\n  padding: '24px 16px',\n  margin: '-24px -16px',\n  boxSizing: 'content-box',\n  [`& .${stepButtonClasses.touchRipple}`]: {\n    color: 'rgba(0, 0, 0, 0.3)'\n  },\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      justifyContent: 'flex-start',\n      padding: '8px',\n      margin: '-8px'\n    }\n  }]\n});\nconst StepButton = /*#__PURE__*/React.forwardRef(function StepButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepButton'\n  });\n  const {\n    children,\n    className,\n    icon,\n    optional,\n    ...other\n  } = props;\n  const {\n    disabled,\n    active\n  } = React.useContext(StepContext);\n  const {\n    orientation\n  } = React.useContext(StepperContext);\n  const ownerState = {\n    ...props,\n    orientation\n  };\n  const classes = useUtilityClasses(ownerState);\n  const childProps = {\n    icon,\n    optional\n  };\n  const child = isMuiElement(children, ['StepLabel']) ? (/*#__PURE__*/React.cloneElement(children, childProps)) : /*#__PURE__*/_jsx(StepLabel, {\n    ...childProps,\n    children: children\n  });\n  return /*#__PURE__*/_jsx(StepButtonRoot, {\n    focusRipple: true,\n    disabled: disabled,\n    TouchRippleProps: {\n      className: classes.touchRipple\n    },\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    \"aria-current\": active ? 'step' : undefined,\n    ...other,\n    children: child\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Can be a `StepLabel` or a node to place inside `StepLabel` as children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon displayed by the step label.\n   */\n  icon: PropTypes.node,\n  /**\n   * The optional node to display.\n   */\n  optional: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepButton;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z\"\n}), 'CheckCircle');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');","'use client';\n\nvar _circle;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport CheckCircle from \"../internal/svg-icons/CheckCircle.js\";\nimport Warning from \"../internal/svg-icons/Warning.js\";\nimport SvgIcon from \"../SvgIcon/index.js\";\nimport stepIconClasses, { getStepIconUtilityClass } from \"./stepIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    active,\n    completed,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active', completed && 'completed', error && 'error'],\n    text: ['text']\n  };\n  return composeClasses(slots, getStepIconUtilityClass, classes);\n};\nconst StepIconRoot = styled(SvgIcon, {\n  name: 'MuiStepIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  color: (theme.vars || theme).palette.text.disabled,\n  [`&.${stepIconClasses.completed}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.active}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepIconText = styled('text', {\n  name: 'MuiStepIcon',\n  slot: 'Text',\n  overridesResolver: (props, styles) => styles.text\n})(memoTheme(({\n  theme\n}) => ({\n  fill: (theme.vars || theme).palette.primary.contrastText,\n  fontSize: theme.typography.caption.fontSize,\n  fontFamily: theme.typography.fontFamily\n})));\nconst StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepIcon'\n  });\n  const {\n    active = false,\n    className: classNameProp,\n    completed = false,\n    error = false,\n    icon,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    active,\n    completed,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (typeof icon === 'number' || typeof icon === 'string') {\n    const className = clsx(classNameProp, classes.root);\n    if (error) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: Warning,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    if (completed) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: CheckCircle,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    return /*#__PURE__*/_jsxs(StepIconRoot, {\n      className: className,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      children: [_circle || (_circle = /*#__PURE__*/_jsx(\"circle\", {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"12\"\n      })), /*#__PURE__*/_jsx(StepIconText, {\n        className: classes.text,\n        x: \"12\",\n        y: \"12\",\n        textAnchor: \"middle\",\n        dominantBaseline: \"central\",\n        ownerState: ownerState,\n        children: icon\n      })]\n    });\n  }\n  return icon;\n});\nprocess.env.NODE_ENV !== \"production\" ? StepIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Whether this step is active.\n   * @default false\n   */\n  active: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   * @default false\n   */\n  completed: PropTypes.bool,\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * The label displayed in the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepIconUtilityClass(slot) {\n  return generateUtilityClass('MuiStepIcon', slot);\n}\nconst stepIconClasses = generateUtilityClasses('MuiStepIcon', ['root', 'active', 'completed', 'error', 'text']);\nexport default stepIconClasses;","'use client';\n\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport StepContext from \"../Step/StepContext.js\";\nimport StepIcon from \"../StepIcon/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport stepLabelClasses, { getStepLabelUtilityClass } from \"./stepLabelClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    active,\n    completed,\n    error,\n    disabled,\n    alternativeLabel\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    label: ['label', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    iconContainer: ['iconContainer', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    labelContainer: ['labelContainer', alternativeLabel && 'alternativeLabel']\n  };\n  return composeClasses(slots, getStepLabelUtilityClass, classes);\n};\nconst StepLabelRoot = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation]];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    flexDirection: 'column'\n  },\n  [`&.${stepLabelClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      textAlign: 'left',\n      padding: '8px 0'\n    }\n  }]\n});\nconst StepLabelLabel = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Label',\n  overridesResolver: (props, styles) => styles.label\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${stepLabelClasses.active}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.completed}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    marginTop: 16\n  },\n  [`&.${stepLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepLabelIconContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'IconContainer',\n  overridesResolver: (props, styles) => styles.iconContainer\n})({\n  flexShrink: 0,\n  display: 'flex',\n  paddingRight: 8,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    paddingRight: 0\n  }\n});\nconst StepLabelLabelContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'LabelContainer',\n  overridesResolver: (props, styles) => styles.labelContainer\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    textAlign: 'center'\n  }\n})));\nconst StepLabel = /*#__PURE__*/React.forwardRef(function StepLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepLabel'\n  });\n  const {\n    children,\n    className,\n    componentsProps = {},\n    error = false,\n    icon: iconProp,\n    optional,\n    slots = {},\n    slotProps = {},\n    StepIconComponent: StepIconComponentProp,\n    StepIconProps,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed,\n    icon: iconContext\n  } = React.useContext(StepContext);\n  const icon = iconProp || iconContext;\n  let StepIconComponent = StepIconComponentProp;\n  if (icon && !StepIconComponent) {\n    StepIconComponent = StepIcon;\n  }\n  const ownerState = {\n    ...props,\n    active,\n    alternativeLabel,\n    completed,\n    disabled,\n    error,\n    orientation\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      stepIcon: StepIconProps,\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [LabelSlot, labelProps] = useSlot('label', {\n    elementType: StepLabelLabel,\n    externalForwardedProps,\n    ownerState\n  });\n  const [StepIconSlot, stepIconProps] = useSlot('stepIcon', {\n    elementType: StepIconComponent,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(StepLabelRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [icon || StepIconSlot ? /*#__PURE__*/_jsx(StepLabelIconContainer, {\n      className: classes.iconContainer,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsx(StepIconSlot, {\n        completed: completed,\n        active: active,\n        error: error,\n        icon: icon,\n        ...stepIconProps\n      })\n    }) : null, /*#__PURE__*/_jsxs(StepLabelLabelContainer, {\n      className: classes.labelContainer,\n      ownerState: ownerState,\n      children: [children ? /*#__PURE__*/_jsx(LabelSlot, {\n        ...labelProps,\n        className: clsx(classes.label, labelProps?.className),\n        children: children\n      }) : null, optional]\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * In most cases will simply be a string containing a title for the label.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    label: PropTypes.object\n  }),\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Override the default label of the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The optional node to display.\n   */\n  optional: PropTypes.node,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    label: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    stepIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    label: PropTypes.elementType,\n    stepIcon: PropTypes.elementType\n  }),\n  /**\n   * The component to render in place of the [`StepIcon`](https://mui.com/material-ui/api/step-icon/).\n   */\n  StepIconComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`StepIcon`](https://mui.com/material-ui/api/step-icon/) element.\n   */\n  StepIconProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nif (StepLabel) {\n  StepLabel.muiName = 'StepLabel';\n}\nexport default StepLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiStepLabel', slot);\n}\nconst stepLabelClasses = generateUtilityClasses('MuiStepLabel', ['root', 'horizontal', 'vertical', 'label', 'active', 'completed', 'error', 'disabled', 'iconContainer', 'alternativeLabel', 'labelContainer']);\nexport default stepLabelClasses;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;"],"names":["StepContext","useStepContext","getStepButtonUtilityClass","slot","generateUtilityClass","generateUtilityClasses","StepButtonRoot","styled","ButtonBase","name","overridesResolver","props","styles","ownerState","touchRipple","root","orientation","width","padding","margin","boxSizing","color","variants","style","justifyContent","inProps","ref","children","className","icon","optional","other","disabled","active","StepperContext","classes","slots","composeClasses","useUtilityClasses","childProps","child","isMuiElement","StepLabel","focusRipple","TouchRippleProps","clsx","undefined","createSvgIcon","d","_circle","StepIconRoot","SvgIcon","memoTheme","theme","display","transition","transitions","create","duration","shortest","vars","palette","text","stepIconClasses","completed","primary","main","error","StepIconText","fill","contrastText","fontSize","typography","caption","fontFamily","classNameProp","as","Warning","CheckCircle","cx","cy","r","x","y","textAnchor","dominantBaseline","getStepIconUtilityClass","StepLabelRoot","alignItems","alternativeLabel","flexDirection","cursor","textAlign","StepLabelLabel","label","body2","fontWeight","marginTop","StepLabelIconContainer","iconContainer","flexShrink","paddingRight","StepLabelLabelContainer","labelContainer","secondary","componentsProps","iconProp","slotProps","StepIconComponent","StepIconComponentProp","StepIconProps","iconContext","externalForwardedProps","stepIcon","LabelSlot","labelProps","elementType","StepIconSlot","stepIconProps","muiName","getStepLabelUtilityClass","useStepperContext"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2141.d36fb4a8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2141],{38815:(e,o,i)=>{i.d(o,{A:()=>p});var a=i(7552),r=i(93878),t=i(70799),n=i(51148),s=i(4785),d=i(61547),c=i(69500);const m=(0,n.Ay)("div",{name:"MuiCardMedia",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:i}=e,{isMediaComponent:a,isImageComponent:r}=i;return[o.root,a&&o.media,r&&o.img]}})({display:"block",backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center",variants:[{props:{isMediaComponent:!0},style:{width:"100%"}},{props:{isImageComponent:!0},style:{objectFit:"cover"}}]}),l=["video","audio","picture","iframe","img"],u=["picture","img"],p=a.forwardRef((function(e,o){const i=(0,s.b)({props:e,name:"MuiCardMedia"}),{children:a,className:n,component:p="div",image:g,src:C,style:b,...M}=i,v=l.includes(p),w=!v&&g?{backgroundImage:`url("${g}")`,...b}:b,k={...i,component:p,isMediaComponent:v,isImageComponent:u.includes(p)},A=(e=>{const{classes:o,isMediaComponent:i,isImageComponent:a}=e,r={root:["root",i&&"media",a&&"img"]};return(0,t.A)(r,d.R,o)})(k);return(0,c.jsx)(m,{className:(0,r.A)(A.root,n),as:p,role:!v&&g?"img":void 0,ref:o,style:w,ownerState:k,src:v?g||C:void 0,...M,children:a})}))},61547:(e,o,i)=>{i.d(o,{A:()=>n,R:()=>t});var a=i(33761),r=i(85693);function t(e){return(0,r.Ay)("MuiCardMedia",e)}const n=(0,a.A)("MuiCardMedia",["root","media","img"])},12141:(e,o,i)=>{i.r(o),i.d(o,{cardMediaClasses:()=>r.A,default:()=>a.A,getCardMediaUtilityClass:()=>r.R});var a=i(38815),r=i(61547)}}]);
+//# sourceMappingURL=2141.d36fb4a8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2141.d36fb4a8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2141.d36fb4a8.chunk.js","mappings":"yNAWA,MAWMA,GAAgB,QAAO,MAAO,CAClCC,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,GACE,iBACJG,EAAgB,iBAChBC,GACEF,EACJ,MAAO,CAACD,EAAOI,KAAMF,GAAoBF,EAAOK,MAAOF,GAAoBH,EAAOM,IAAI,GAXpE,CAanB,CACDC,QAAS,QACTC,eAAgB,QAChBC,iBAAkB,YAClBC,mBAAoB,SACpBC,SAAU,CAAC,CACTZ,MAAO,CACLG,kBAAkB,GAEpBU,MAAO,CACLC,MAAO,SAER,CACDd,MAAO,CACLI,kBAAkB,GAEpBS,MAAO,CACLE,UAAW,aAIXC,EAAmB,CAAC,QAAS,QAAS,UAAW,SAAU,OAC3DC,EAAmB,CAAC,UAAW,OAuFrC,EAtF+B,cAAiB,SAAmBC,EAASC,GAC1E,MAAMnB,GAAQ,OAAgB,CAC5BA,MAAOkB,EACPrB,KAAM,kBAEF,SACJuB,EAAQ,UACRC,EAAS,UACTC,EAAY,MAAK,MACjBC,EAAK,IACLC,EAAG,MACHX,KACGY,GACDzB,EACEG,EAAmBa,EAAiBU,SAASJ,GAC7CK,GAAiBxB,GAAoBoB,EAAQ,CACjDK,gBAAiB,QAAQL,SACtBV,GACDA,EACEX,EAAa,IACdF,EACHsB,YACAnB,mBACAC,iBAAkBa,EAAiBS,SAASJ,IAExCO,EAxEkB3B,KACxB,MAAM,QACJ2B,EAAO,iBACP1B,EAAgB,iBAChBC,GACEF,EACE4B,EAAQ,CACZzB,KAAM,CAAC,OAAQF,GAAoB,QAASC,GAAoB,QAElE,OAAO,OAAe0B,EAAO,IAA0BD,EAAQ,EA+D/CE,CAAkB7B,GAClC,OAAoB,SAAKN,EAAe,CACtCyB,WAAW,OAAKQ,EAAQxB,KAAMgB,GAC9BW,GAAIV,EACJW,MAAO9B,GAAoBoB,EAAQ,WAAQW,EAC3Cf,IAAKA,EACLN,MAAOc,EACPzB,WAAYA,EACZsB,IAAKrB,EAAmBoB,GAASC,OAAMU,KACpCT,EACHL,SAAUA,GAEd,G,qEC7FO,SAASe,EAAyBrC,GACvC,OAAO,QAAqB,eAAgBA,EAC9C,CACA,MACA,GADyB,OAAuB,eAAgB,CAAC,OAAQ,QAAS,O","sources":["../../../node_modules/@mui/material/CardMedia/CardMedia.js","../../../node_modules/@mui/material/CardMedia/cardMediaClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardMediaUtilityClass } from \"./cardMediaClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    isMediaComponent,\n    isImageComponent\n  } = ownerState;\n  const slots = {\n    root: ['root', isMediaComponent && 'media', isImageComponent && 'img']\n  };\n  return composeClasses(slots, getCardMediaUtilityClass, classes);\n};\nconst CardMediaRoot = styled('div', {\n  name: 'MuiCardMedia',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      isMediaComponent,\n      isImageComponent\n    } = ownerState;\n    return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];\n  }\n})({\n  display: 'block',\n  backgroundSize: 'cover',\n  backgroundRepeat: 'no-repeat',\n  backgroundPosition: 'center',\n  variants: [{\n    props: {\n      isMediaComponent: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      isImageComponent: true\n    },\n    style: {\n      objectFit: 'cover'\n    }\n  }]\n});\nconst MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];\nconst IMAGE_COMPONENTS = ['picture', 'img'];\nconst CardMedia = /*#__PURE__*/React.forwardRef(function CardMedia(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardMedia'\n  });\n  const {\n    children,\n    className,\n    component = 'div',\n    image,\n    src,\n    style,\n    ...other\n  } = props;\n  const isMediaComponent = MEDIA_COMPONENTS.includes(component);\n  const composedStyle = !isMediaComponent && image ? {\n    backgroundImage: `url(\"${image}\")`,\n    ...style\n  } : style;\n  const ownerState = {\n    ...props,\n    component,\n    isMediaComponent,\n    isImageComponent: IMAGE_COMPONENTS.includes(component)\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardMediaRoot, {\n    className: clsx(classes.root, className),\n    as: component,\n    role: !isMediaComponent && image ? 'img' : undefined,\n    ref: ref,\n    style: composedStyle,\n    ownerState: ownerState,\n    src: isMediaComponent ? image || src : undefined,\n    ...other,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardMedia.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    if (!props.children && !props.image && !props.src && !props.component) {\n      return new Error('MUI: Either `children`, `image`, `src` or `component` prop must be specified.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Image to be displayed as a background image.\n   * Either `image` or `src` prop must be specified.\n   * Note that caller must specify height otherwise the image will not be visible.\n   */\n  image: PropTypes.string,\n  /**\n   * An alias for `image` property.\n   * Available only with media components.\n   * Media components: `video`, `audio`, `picture`, `iframe`, `img`.\n   */\n  src: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardMedia;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardMediaUtilityClass(slot) {\n  return generateUtilityClass('MuiCardMedia', slot);\n}\nconst cardMediaClasses = generateUtilityClasses('MuiCardMedia', ['root', 'media', 'img']);\nexport default cardMediaClasses;"],"names":["CardMediaRoot","name","slot","overridesResolver","props","styles","ownerState","isMediaComponent","isImageComponent","root","media","img","display","backgroundSize","backgroundRepeat","backgroundPosition","variants","style","width","objectFit","MEDIA_COMPONENTS","IMAGE_COMPONENTS","inProps","ref","children","className","component","image","src","other","includes","composedStyle","backgroundImage","classes","slots","useUtilityClasses","as","role","undefined","getCardMediaUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2189.3c65daf8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2189],{12189:(e,t,a)=>{a.r(t),a.d(t,{default:()=>O});var n=a(7552),l=a(61723),s=a(75653),r=a(36715),m=a(67314),u=a(58181),c=a(2051),o=a(55851),i=a(29629),A=a(66765),v=a(75785),b=a(49823),f=a(99546),E=a(58701),L=a(22168),W=a(1773),d=a(38815);const p="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACWCAMAAACsAjcrAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAHsIAAB7CAF4JB2hAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAEVQTFRFAAAACSRAElJkdhtk/60bDCQ/ElRgch5j/7EeEUFUSzRim3UsxHM7UTBjr4IoEUJUUjBi1oYwEURVDSM/E1Vgch5j/7Edkdc3HwAAABN0Uk5TABwcHBxVVVVVenp6er+/wMDAxLY4CkUAAAEKSURBVHja7ddbUsJAEEDRiBCiCIpI9r9URR6S+ZuuwmqGc3dwPm/XSZIkSVJ7zfqi2Z1C+q+iHgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBOSBIE+L2l5KyOuytucbQBa76t6njvW+umUOyFQScKSBXEsijjyQP0nIkQhylsQcmSBHSdCRCnKQRB25ILvPj30bkM22DchmHLctQH4ccUkiyK8jLMkDOTmikjSQiyMoyQK5csQkSSATR0hyC0j9WK3GorcUY1XfUEKGO312EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQkP9pPhTNO0mSJElqr2+Mch/wyKIo2gAAAABJRU5ErkJggg==",q="data:image/png;base64,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",S="data:image/png;base64,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",V=(0,v.n9)()({card:{width:200,height:150,cursor:"pointer"},name:{marginTop:4,textAlign:"center",maxWidth:200},media:{height:150}}),B={name:`New session ${(new Date).toLocaleString()}`,connections:{}};function T({name:e,onClick:t=()=>{},image:a}){const{classes:l}=V(),[m,u]=(0,n.useState)(!1);return n.createElement(s.A,null,n.createElement(W.A,{className:l.card,onMouseOver:()=>{u(!0)},onMouseOut:()=>{u(!1)},onClick:t,raised:Boolean(m)},n.createElement(d.A,{className:l.media,image:a})),n.createElement(r.A,{variant:"subtitle2",className:l.name,style:{cursor:"pointer"},onClick:t},e))}function N({rootModel:e}){return n.createElement(T,{name:"Empty",image:p,onClick:()=>{e.setSession(B)}})}function k({rootModel:e}){return n.createElement(T,{name:"Linear Genome View",image:q,onClick:()=>{e.setSession({...B,name:`New session ${(new Date).toLocaleString()}`,views:[{type:"LinearGenomeView"}]})}})}function H({rootModel:e}){return n.createElement(T,{name:"Structural Variant Inspector",image:S,onClick:()=>{e.setSession({...B,name:`New session ${(new Date).toLocaleString()}`,views:[{type:"SvInspectorView"}]})}})}var x=a(45331),J=a(70087),g=a(89003),U=a(25762),j=a(17307);const Z=function({sessionName:e,onClick:t,onDelete:a}){const[s,m]=(0,n.useState)(null);return n.createElement(n.Fragment,null,n.createElement(x.Ay,{secondaryAction:n.createElement(l.A,{onClick:e=>{e.stopPropagation(),m(e.currentTarget)}},n.createElement(j.A,null))},n.createElement(J.A,{onClick:()=>{t(e)}},n.createElement(g.A,{title:e,enterDelay:300},n.createElement(r.A,{variant:"body2",noWrap:!0},e)))),n.createElement(c.A,{anchorEl:s,open:Boolean(s),onClose:()=>{m(null)}},n.createElement(i.A,{onClick:()=>{m(null),a?.(e)},disabled:!a},n.createElement(A.A,null,n.createElement(U.A,null)),n.createElement(r.A,{variant:"inherit"},"Delete"))))},y=(0,n.lazy)((()=>a.e(765).then(a.bind(a,40765)))),z=(0,n.lazy)((()=>Promise.resolve().then(a.bind(a,69941)))),R=(0,v.n9)()((e=>({newSession:{backgroundColor:e.palette.grey[300],padding:8,marginTop:8},header:{margin:8},settings:{float:"right"},list:{overflow:"auto",maxHeight:200}})));function O({rootModel:e,onFactoryReset:t}){const{classes:a}=R(),[v,W]=(0,n.useState)([]),[d,p]=(0,n.useState)(),[q,S]=(0,n.useState)(),[V,B]=(0,n.useState)(),[T,x]=(0,n.useState)(!0),[J,g]=(0,n.useState)(null),[U,j]=(0,n.useState)(!1);(0,n.useEffect)((()=>{(async()=>{try{q&&e.activateSession(q)}catch(e){B(e)}})()}),[e,q]),(0,n.useEffect)((()=>{(async()=>{try{T&&(x(!1),W(e.savedSessions.map((e=>e.name)).filter(f.notEmpty)))}catch(e){B(e)}})()}),[e.savedSessions,T]);const O=JSON.parse((0,f.localStorageGetItem)(e.previousAutosaveId)||"{}").session;return n.createElement(n.Fragment,null,U?n.createElement(n.Suspense,{fallback:null},n.createElement(z,{open:U,onFactoryReset:t,onClose:()=>{j(!1)}})):null,d?n.createElement(n.Suspense,{fallback:null},n.createElement(y,{rootModel:e,sessionToDelete:d,onClose:e=>{p(void 0),x(e)}})):null,n.createElement(l.A,{className:a.settings,onClick:e=>{e.stopPropagation(),g(e.currentTarget)}},n.createElement(L.A,null)),n.createElement(s.A,{maxWidth:"md"},n.createElement(b.LogoFull,null),n.createElement("div",{className:a.newSession},n.createElement(r.A,{variant:"h5",className:a.header},"Start a new session"),n.createElement(m.Ay,{container:!0,spacing:4},n.createElement(m.Ay,{item:!0},n.createElement(N,{rootModel:e})),n.createElement(m.Ay,{item:!0},n.createElement(k,{rootModel:e})),n.createElement(m.Ay,{item:!0},n.createElement(H,{rootModel:e})))),n.createElement("div",null,n.createElement(r.A,{variant:"h5",className:a.header},"Recent sessions"),n.createElement(u.A,{className:a.list},v.map((e=>n.createElement(Z,{key:e,sessionName:e,onClick:()=>{S(e)},onDelete:()=>{p(e)}})))),O?n.createElement(n.Fragment,null,n.createElement(r.A,{variant:"h5",className:a.header},"Last autosave session"),n.createElement(u.A,{className:a.list},n.createElement(Z,{sessionName:O.name,onClick:()=>{e.loadAutosaveSession()}}))):null,V?n.createElement(b.ErrorMessage,{error:V}):null)),n.createElement(c.A,{anchorEl:J,keepMounted:!0,open:Boolean(J),onClose:()=>{g(null)}},n.createElement(o.A,null,"Advanced Settings"),n.createElement(i.A,{onClick:()=>{j(!0),g(null)}},n.createElement(A.A,null,n.createElement(E.A,null)),n.createElement(r.A,{variant:"inherit"},"Reset"))))}}}]);
+//# sourceMappingURL=2189.3c65daf8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2189.3c65daf8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2189.3c65daf8.chunk.js","mappings":"mVAAO,MAAMA,EACX,isBAEWC,EACX,iiPAEWC,EACX,imyBCDIC,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,KAAM,CACJC,MAAO,IACPC,OAAQ,IACRC,OAAQ,WAEVC,KAAM,CACJC,UAAW,EACXC,UAAW,SACXC,SAAU,KAEZC,MAAO,CACLN,OAAQ,OAINO,EAAuB,CAC3BL,KAAM,gBAAe,IAAIM,MAAOC,mBAChCC,YAAa,CAAC,GAGhB,SAASC,GAAe,KACtBT,EAAI,QACJU,EAAUA,OAAQ,MAClBC,IAMA,MAAM,QAAEC,GAAYlB,KACbmB,EAASC,IAAcC,EAAAA,EAAAA,WAAS,GACvC,OACEC,EAAAA,cAACC,EAAAA,EAAS,KACRD,EAAAA,cAACE,EAAAA,EAAI,CACHC,UAAWP,EAAQhB,KACnBwB,YAAaA,KACXN,GAAW,EAAK,EAElBO,WAAYA,KACVP,GAAW,EAAM,EAEnBJ,QAASA,EACTY,OAAQC,QAAQV,IAEhBG,EAAAA,cAACQ,EAAAA,EAAS,CAACL,UAAWP,EAAQR,MAAOO,MAAOA,KAE9CK,EAAAA,cAACS,EAAAA,EAAU,CACTC,QAAQ,YACRP,UAAWP,EAAQZ,KACnB2B,MAAO,CAAE5B,OAAQ,WACjBW,QAASA,GAERV,GAIT,CAMO,SAAS4B,GAAgB,UAAEC,IAChC,OACEb,EAAAA,cAACP,EAAc,CACbT,KAAK,QACLW,MAAOpB,EACPmB,QAASA,KACPmB,EAAUC,WAAWzB,EAAqB,GAIlD,CAEO,SAAS0B,GAA2B,UACzCF,IAIA,OACEb,EAAAA,cAACP,EAAc,CACbT,KAAK,qBACLW,MAAOnB,EACPkB,QAASA,KACPmB,EAAUC,WAAW,IAChBzB,EACHL,KAAM,gBAAe,IAAIM,MAAOC,mBAChCyB,MAAO,CAAC,CAAEC,KAAM,sBAChB,GAIV,CAEO,SAASC,GAAsB,UAAEL,IACtC,OACEb,EAAAA,cAACP,EAAc,CACbT,KAAK,+BACLW,MAAOlB,EACPiB,QAASA,KACPmB,EAAUC,WAAW,IAChBzB,EACHL,KAAM,gBAAe,IAAIM,MAAOC,mBAChCyB,MAAO,CAAC,CAAEC,KAAM,qBAChB,GAIV,C,2DCtCA,QA7DA,UAA2B,YACzBE,EAAW,QACXzB,EAAO,SACP0B,IAMA,MAAOC,EAAcC,IAAmBvB,EAAAA,EAAAA,UAA6B,MAErE,OACEC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACuB,EAAAA,GAAQ,CACPC,gBACExB,EAAAA,cAACyB,EAAAA,EAAU,CACT/B,QAASgC,IACPA,EAAMC,kBACNL,EAAgBI,EAAME,cAAc,GAGtC5B,EAAAA,cAAC6B,EAAAA,EAAY,QAIjB7B,EAAAA,cAAC8B,EAAAA,EAAc,CACbpC,QAASA,KACPA,EAAQyB,EAAY,GAGtBnB,EAAAA,cAAC+B,EAAAA,EAAO,CAACC,MAAOb,EAAac,WAAY,KACvCjC,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,QAAQwB,QAAM,GAC/Bf,MAKTnB,EAAAA,cAACmC,EAAAA,EAAI,CACHC,SAAUf,EACVgB,KAAM9B,QAAQc,GACdiB,QAASA,KACPhB,EAAgB,KAAK,GAGvBtB,EAAAA,cAACuC,EAAAA,EAAQ,CACP7C,QAASA,KACP4B,EAAgB,MAChBF,IAAWD,EAAY,EAEzBqB,UAAWpB,GAEXpB,EAAAA,cAACyC,EAAAA,EAAY,KACXzC,EAAAA,cAAC0C,EAAAA,EAAU,OAEb1C,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,WAAU,YAKxC,EC7CMiC,GAAsBC,EAAAA,EAAAA,OAAK,IAAM,iCACjCC,GAAqBD,EAAAA,EAAAA,OACzB,IAAM,0CAGFlE,GAAYC,EAAAA,EAAAA,KAAAA,EAAamE,IAAS,CACtCC,WAAY,CACVC,gBAAiBF,EAAMG,QAAQC,KAAK,KACpCC,QAAS,EACTlE,UAAW,GAEbmE,OAAQ,CACNC,OAAQ,GAEVC,SAAU,CACRC,MAAO,SAETC,KAAM,CACJC,SAAU,OACVC,UAAW,SAIA,SAASC,GAAY,UAClC9C,EAAS,eACT+C,IAKA,MAAM,QAAEhE,GAAYlB,KAEbmF,EAAcC,IAAmB/D,EAAAA,EAAAA,UAAmB,KACpDgE,EAAiBC,IAAsBjE,EAAAA,EAAAA,aACvCkE,EAAeC,IAAoBnE,EAAAA,EAAAA,aACnCoE,EAAOC,IAAYrE,EAAAA,EAAAA,aACnBsE,EAAoBC,IAAyBvE,EAAAA,EAAAA,WAAS,IACtDsB,EAAcC,IAAmBvB,EAAAA,EAAAA,UAA6B,OAC9DwE,EAAOC,IAAYzE,EAAAA,EAAAA,WAAS,IAEnC0E,EAAAA,EAAAA,YAAU,KAEP,WACC,IACMR,GACFpD,EAAU6D,gBAAgBT,EAE9B,CAAE,MAAOU,GACPP,EAASO,EACX,CACD,EARA,EAQG,GACH,CAAC9D,EAAWoD,KAEfQ,EAAAA,EAAAA,YAAU,KAEP,WACC,IACMJ,IACFC,GAAsB,GAEtBR,EACEjD,EAAU+D,cAAcC,KAAIC,GAAKA,EAAE9F,OAAM+F,OAAOC,EAAAA,WAGtD,CAAE,MAAOL,GACPP,EAASO,EACX,CACD,EAZA,EAYG,GACH,CAAC9D,EAAU+D,cAAeP,IAE7B,MAAMY,EAAuBC,KAAKC,OAChCC,EAAAA,EAAAA,qBAAoBvE,EAAUwE,qBAAuB,MACrDC,QAEF,OACEtF,EAAAA,cAAAA,EAAAA,SAAA,KACGuE,EACCvE,EAAAA,cAACA,EAAAA,SAAc,CAACuF,SAAU,MACxBvF,EAAAA,cAAC6C,EAAkB,CACjBR,KAAMkC,EACNX,eAAgBA,EAChBtB,QAASA,KACPkC,GAAS,EAAM,KAInB,KACHT,EACC/D,EAAAA,cAACA,EAAAA,SAAc,CAACuF,SAAU,MACxBvF,EAAAA,cAAC2C,EAAmB,CAClB9B,UAAWA,EACXkD,gBAAiBA,EACjBzB,QAASkD,IACPxB,OAAmByB,GACnBnB,EAAsBkB,EAAO,KAIjC,KACJxF,EAAAA,cAACyB,EAAAA,EAAU,CACTtB,UAAWP,EAAQ0D,SACnB5D,QAASgC,IACPA,EAAMC,kBACNL,EAAgBI,EAAME,cAAc,GAGtC5B,EAAAA,cAAC0F,EAAAA,EAAY,OAEf1F,EAAAA,cAACC,EAAAA,EAAS,CAACd,SAAS,MAClBa,EAAAA,cAAC2F,EAAAA,SAAQ,MACT3F,EAAAA,cAAA,OAAKG,UAAWP,EAAQmD,YACtB/C,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,KAAKP,UAAWP,EAAQwD,QAAQ,uBAGpDpD,EAAAA,cAAC4F,EAAAA,GAAI,CAACC,WAAS,EAACC,QAAS,GACvB9F,EAAAA,cAAC4F,EAAAA,GAAI,CAACG,MAAI,GACR/F,EAAAA,cAACY,EAAe,CAACC,UAAWA,KAE9Bb,EAAAA,cAAC4F,EAAAA,GAAI,CAACG,MAAI,GACR/F,EAAAA,cAACe,EAA0B,CAACF,UAAWA,KAEzCb,EAAAA,cAAC4F,EAAAA,GAAI,CAACG,MAAI,GACR/F,EAAAA,cAACkB,EAAqB,CAACL,UAAWA,OAIxCb,EAAAA,cAAA,WACEA,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,KAAKP,UAAWP,EAAQwD,QAAQ,mBAGpDpD,EAAAA,cAACgG,EAAAA,EAAI,CAAC7F,UAAWP,EAAQ4D,MACtBK,EAAagB,KAAI7F,GAChBgB,EAAAA,cAACiG,EAAiB,CAChBC,IAAKlH,EACLmC,YAAanC,EACbU,QAASA,KACPwE,EAAiBlF,EAAK,EAExBoC,SAAUA,KACR4C,EAAmBhF,EAAK,OAK/BiG,EACCjF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,KAAKP,UAAWP,EAAQwD,QAAQ,yBAGpDpD,EAAAA,cAACgG,EAAAA,EAAI,CAAC7F,UAAWP,EAAQ4D,MACvBxD,EAAAA,cAACiG,EAAiB,CAChB9E,YAAa8D,EAAqBjG,KAClCU,QAASA,KACPmB,EAAUsF,qBAAqB,MAKrC,KACHhC,EAAQnE,EAAAA,cAACoG,EAAAA,aAAY,CAACjC,MAAOA,IAAY,OAI9CnE,EAAAA,cAACmC,EAAAA,EAAI,CACHC,SAAUf,EACVgF,aAAW,EACXhE,KAAM9B,QAAQc,GACdiB,QAASA,KACPhB,EAAgB,KAAK,GAGvBtB,EAAAA,cAACsG,EAAAA,EAAa,KAAC,qBACftG,EAAAA,cAACuC,EAAAA,EAAQ,CACP7C,QAASA,KACP8E,GAAS,GACTlD,EAAgB,KAAK,GAGvBtB,EAAAA,cAACyC,EAAAA,EAAY,KACXzC,EAAAA,cAACuG,EAAAA,EAAW,OAEdvG,EAAAA,cAACS,EAAAA,EAAU,CAACC,QAAQ,WAAU,WAKxC,C","sources":["components/img/index.ts","components/NewSessionCards.tsx","components/RecentSessionCard.tsx","components/StartScreen.tsx"],"sourcesContent":["export const emptyIcon =\n  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACWCAMAAACsAjcrAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAHsIAAB7CAF4JB2hAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAEVQTFRFAAAACSRAElJkdhtk/60bDCQ/ElRgch5j/7EeEUFUSzRim3UsxHM7UTBjr4IoEUJUUjBi1oYwEURVDSM/E1Vgch5j/7Edkdc3HwAAABN0Uk5TABwcHBxVVVVVenp6er+/wMDAxLY4CkUAAAEKSURBVHja7ddbUsJAEEDRiBCiCIpI9r9URR6S+ZuuwmqGc3dwPm/XSZIkSVJ7zfqi2Z1C+q+iHgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBOSBIE+L2l5KyOuytucbQBa76t6njvW+umUOyFQScKSBXEsijjyQP0nIkQhylsQcmSBHSdCRCnKQRB25ILvPj30bkM22DchmHLctQH4ccUkiyK8jLMkDOTmikjSQiyMoyQK5csQkSSATR0hyC0j9WK3GorcUY1XfUEKGO312EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQkP9pPhTNO0mSJElqr2+Mch/wyKIo2gAAAABJRU5ErkJggg=='\n\nexport const linearGenomeViewIcon =\n  'data:image/png;base64,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'\n\nexport const svInspectorIcon =\n  'data:image/png;base64,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'\n","import React, { useState } from 'react'\nimport { Card, CardMedia, Container, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nimport { emptyIcon, linearGenomeViewIcon, svInspectorIcon } from './img'\n\nconst useStyles = makeStyles()({\n  card: {\n    width: 200,\n    height: 150,\n    cursor: 'pointer',\n  },\n  name: {\n    marginTop: 4, // theme.spacing(),\n    textAlign: 'center',\n    maxWidth: 200,\n  },\n  media: {\n    height: 150,\n  },\n})\n\nconst emptySessionSnapshot = {\n  name: `New session ${new Date().toLocaleString()}`,\n  connections: {},\n}\n\nfunction NewSessionCard({\n  name,\n  onClick = () => {},\n  image,\n}: {\n  name: string\n  onClick: () => void\n  image?: string\n}) {\n  const { classes } = useStyles()\n  const [hovered, setHovered] = useState(false)\n  return (\n    <Container>\n      <Card\n        className={classes.card}\n        onMouseOver={() => {\n          setHovered(true)\n        }}\n        onMouseOut={() => {\n          setHovered(false)\n        }}\n        onClick={onClick}\n        raised={Boolean(hovered)}\n      >\n        <CardMedia className={classes.media} image={image} />\n      </Card>\n      <Typography\n        variant=\"subtitle2\"\n        className={classes.name}\n        style={{ cursor: 'pointer' }}\n        onClick={onClick}\n      >\n        {name}\n      </Typography>\n    </Container>\n  )\n}\n\ninterface RootModel {\n  setSession: (arg: unknown) => void\n}\n\nexport function NewEmptySession({ rootModel }: { rootModel: RootModel }) {\n  return (\n    <NewSessionCard\n      name=\"Empty\"\n      image={emptyIcon}\n      onClick={() => {\n        rootModel.setSession(emptySessionSnapshot)\n      }}\n    />\n  )\n}\n\nexport function NewLinearGenomeViewSession({\n  rootModel,\n}: {\n  rootModel: RootModel\n}) {\n  return (\n    <NewSessionCard\n      name=\"Linear Genome View\"\n      image={linearGenomeViewIcon}\n      onClick={() => {\n        rootModel.setSession({\n          ...emptySessionSnapshot,\n          name: `New session ${new Date().toLocaleString()}`,\n          views: [{ type: 'LinearGenomeView' }],\n        })\n      }}\n    />\n  )\n}\n\nexport function NewSVInspectorSession({ rootModel }: { rootModel: RootModel }) {\n  return (\n    <NewSessionCard\n      name=\"Structural Variant Inspector\"\n      image={svInspectorIcon}\n      onClick={() => {\n        rootModel.setSession({\n          ...emptySessionSnapshot,\n          name: `New session ${new Date().toLocaleString()}`,\n          views: [{ type: 'SvInspectorView' }],\n        })\n      }}\n    />\n  )\n}\n","import React, { useState } from 'react'\nimport {\n  IconButton,\n  ListItem,\n  ListItemButton,\n  ListItemIcon,\n  Menu,\n  MenuItem,\n  Tooltip,\n  Typography,\n} from '@mui/material'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\n\nfunction RecentSessionCard({\n  sessionName,\n  onClick,\n  onDelete,\n}: {\n  sessionName: string\n  onClick: (arg: string) => void\n  onDelete?: (arg: string) => void\n}) {\n  const [menuAnchorEl, setMenuAnchorEl] = useState<HTMLElement | null>(null)\n\n  return (\n    <>\n      <ListItem\n        secondaryAction={\n          <IconButton\n            onClick={event => {\n              event.stopPropagation()\n              setMenuAnchorEl(event.currentTarget)\n            }}\n          >\n            <MoreVertIcon />\n          </IconButton>\n        }\n      >\n        <ListItemButton\n          onClick={() => {\n            onClick(sessionName)\n          }}\n        >\n          <Tooltip title={sessionName} enterDelay={300}>\n            <Typography variant=\"body2\" noWrap>\n              {sessionName}\n            </Typography>\n          </Tooltip>\n        </ListItemButton>\n      </ListItem>\n      <Menu\n        anchorEl={menuAnchorEl}\n        open={Boolean(menuAnchorEl)}\n        onClose={() => {\n          setMenuAnchorEl(null)\n        }}\n      >\n        <MenuItem\n          onClick={() => {\n            setMenuAnchorEl(null)\n            onDelete?.(sessionName)\n          }}\n          disabled={!onDelete}\n        >\n          <ListItemIcon>\n            <DeleteIcon />\n          </ListItemIcon>\n          <Typography variant=\"inherit\">Delete</Typography>\n        </MenuItem>\n      </Menu>\n    </>\n  )\n}\n\nexport default RecentSessionCard\n","import React, { lazy, useEffect, useState } from 'react'\nimport {\n  Container,\n  Grid,\n  IconButton,\n  List,\n  ListItemIcon,\n  ListSubheader,\n  Menu,\n  MenuItem,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { LogoFull, ErrorMessage } from '@jbrowse/core/ui'\nimport { localStorageGetItem, notEmpty } from '@jbrowse/core/util'\n\n// icons\nimport WarningIcon from '@mui/icons-material/Warning'\nimport SettingsIcon from '@mui/icons-material/Settings'\n\n// locals\nimport {\n  NewEmptySession,\n  NewLinearGenomeViewSession,\n  NewSVInspectorSession,\n} from './NewSessionCards'\nimport RecentSessionCard from './RecentSessionCard'\nimport type { WebRootModel } from '../rootModel/rootModel'\n\n// lazies\nconst DeleteSessionDialog = lazy(() => import('./DeleteSessionDialog'))\nconst FactoryResetDialog = lazy(\n  () => import('@jbrowse/core/ui/FactoryResetDialog'),\n)\n\nconst useStyles = makeStyles()(theme => ({\n  newSession: {\n    backgroundColor: theme.palette.grey['300'],\n    padding: 8,\n    marginTop: 8,\n  },\n  header: {\n    margin: 8, // theme.spacing(2),\n  },\n  settings: {\n    float: 'right',\n  },\n  list: {\n    overflow: 'auto',\n    maxHeight: 200,\n  },\n}))\n\nexport default function StartScreen({\n  rootModel,\n  onFactoryReset,\n}: {\n  rootModel: WebRootModel\n  onFactoryReset: () => void\n}) {\n  const { classes } = useStyles()\n\n  const [sessionNames, setSessionNames] = useState<string[]>([])\n  const [sessionToDelete, setSessionToDelete] = useState<string>()\n  const [sessionToLoad, setSessionToLoad] = useState<string>()\n  const [error, setError] = useState<unknown>()\n  const [updateSessionsList, setUpdateSessionsList] = useState(true)\n  const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null)\n  const [reset, setReset] = useState(false)\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        if (sessionToLoad) {\n          rootModel.activateSession(sessionToLoad)\n        }\n      } catch (e) {\n        setError(e)\n      }\n    })()\n  }, [rootModel, sessionToLoad])\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        if (updateSessionsList) {\n          setUpdateSessionsList(false)\n\n          setSessionNames(\n            rootModel.savedSessions.map(s => s.name).filter(notEmpty),\n          )\n        }\n      } catch (e) {\n        setError(e)\n      }\n    })()\n  }, [rootModel.savedSessions, updateSessionsList])\n\n  const lastAutosavedSession = JSON.parse(\n    localStorageGetItem(rootModel.previousAutosaveId) || '{}',\n  ).session\n\n  return (\n    <>\n      {reset ? (\n        <React.Suspense fallback={null}>\n          <FactoryResetDialog\n            open={reset}\n            onFactoryReset={onFactoryReset}\n            onClose={() => {\n              setReset(false)\n            }}\n          />\n        </React.Suspense>\n      ) : null}\n      {sessionToDelete ? (\n        <React.Suspense fallback={null}>\n          <DeleteSessionDialog\n            rootModel={rootModel}\n            sessionToDelete={sessionToDelete}\n            onClose={update => {\n              setSessionToDelete(undefined)\n              setUpdateSessionsList(update)\n            }}\n          />\n        </React.Suspense>\n      ) : null}\n      <IconButton\n        className={classes.settings}\n        onClick={event => {\n          event.stopPropagation()\n          setMenuAnchorEl(event.currentTarget)\n        }}\n      >\n        <SettingsIcon />\n      </IconButton>\n      <Container maxWidth=\"md\">\n        <LogoFull />\n        <div className={classes.newSession}>\n          <Typography variant=\"h5\" className={classes.header}>\n            Start a new session\n          </Typography>\n          <Grid container spacing={4}>\n            <Grid item>\n              <NewEmptySession rootModel={rootModel} />\n            </Grid>\n            <Grid item>\n              <NewLinearGenomeViewSession rootModel={rootModel} />\n            </Grid>\n            <Grid item>\n              <NewSVInspectorSession rootModel={rootModel} />\n            </Grid>\n          </Grid>\n        </div>\n        <div>\n          <Typography variant=\"h5\" className={classes.header}>\n            Recent sessions\n          </Typography>\n          <List className={classes.list}>\n            {sessionNames.map(name => (\n              <RecentSessionCard\n                key={name}\n                sessionName={name}\n                onClick={() => {\n                  setSessionToLoad(name)\n                }}\n                onDelete={() => {\n                  setSessionToDelete(name)\n                }}\n              />\n            ))}\n          </List>\n          {lastAutosavedSession ? (\n            <>\n              <Typography variant=\"h5\" className={classes.header}>\n                Last autosave session\n              </Typography>\n              <List className={classes.list}>\n                <RecentSessionCard\n                  sessionName={lastAutosavedSession.name}\n                  onClick={() => {\n                    rootModel.loadAutosaveSession()\n                  }}\n                />\n              </List>\n            </>\n          ) : null}\n          {error ? <ErrorMessage error={error} /> : null}\n        </div>\n      </Container>\n\n      <Menu\n        anchorEl={menuAnchorEl}\n        keepMounted\n        open={Boolean(menuAnchorEl)}\n        onClose={() => {\n          setMenuAnchorEl(null)\n        }}\n      >\n        <ListSubheader>Advanced Settings</ListSubheader>\n        <MenuItem\n          onClick={() => {\n            setReset(true)\n            setMenuAnchorEl(null)\n          }}\n        >\n          <ListItemIcon>\n            <WarningIcon />\n          </ListItemIcon>\n          <Typography variant=\"inherit\">Reset</Typography>\n        </MenuItem>\n      </Menu>\n    </>\n  )\n}\n"],"names":["emptyIcon","linearGenomeViewIcon","svInspectorIcon","useStyles","makeStyles","card","width","height","cursor","name","marginTop","textAlign","maxWidth","media","emptySessionSnapshot","Date","toLocaleString","connections","NewSessionCard","onClick","image","classes","hovered","setHovered","useState","React","Container","Card","className","onMouseOver","onMouseOut","raised","Boolean","CardMedia","Typography","variant","style","NewEmptySession","rootModel","setSession","NewLinearGenomeViewSession","views","type","NewSVInspectorSession","sessionName","onDelete","menuAnchorEl","setMenuAnchorEl","ListItem","secondaryAction","IconButton","event","stopPropagation","currentTarget","MoreVertIcon","ListItemButton","Tooltip","title","enterDelay","noWrap","Menu","anchorEl","open","onClose","MenuItem","disabled","ListItemIcon","DeleteIcon","DeleteSessionDialog","lazy","FactoryResetDialog","theme","newSession","backgroundColor","palette","grey","padding","header","margin","settings","float","list","overflow","maxHeight","StartScreen","onFactoryReset","sessionNames","setSessionNames","sessionToDelete","setSessionToDelete","sessionToLoad","setSessionToLoad","error","setError","updateSessionsList","setUpdateSessionsList","reset","setReset","useEffect","activateSession","e","savedSessions","map","s","filter","notEmpty","lastAutosavedSession","JSON","parse","localStorageGetItem","previousAutosaveId","session","fallback","update","undefined","SettingsIcon","LogoFull","Grid","container","spacing","item","List","RecentSessionCard","key","loadAutosaveSession","ErrorMessage","keepMounted","ListSubheader","WarningIcon"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2197.a5134ce4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2197],{22197:(e,s,l)=>{l.r(s),l.d(s,{alertClasses:()=>b.A,default:()=>a.A,getAlertUtilityClass:()=>b.X});var a=l(9937),b=l(67015)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2212.116fbbf4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2212],{12212:(e,a,b)=>{b.r(a),b.d(a,{default:()=>s.FeatureDetails});var s=b(68984)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2241.3d359b22.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2241],{72241:(e,t,l)=>{l.r(t),l.d(t,{default:()=>c});var n=l(7552),r=l(49823),a=l(68446),s=l(9236);const u=n.forwardRef((function({message:e},t){return n.createElement("div",{ref:t},n.isValidElement(e)?e:e?n.createElement(r.SanitizedHTML,{html:String(e)}):null)})),c=(0,a.observer)((function({contents:e}){return e?n.createElement(n.Suspense,{fallback:null},n.createElement(s.default,null,n.createElement(u,{message:e}))):null}))}}]);
+//# sourceMappingURL=2241.3d359b22.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2241.3d359b22.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2241.3d359b22.chunk.js","mappings":"qMAQA,MAAMA,EAAkBC,EAAAA,YACtB,UAA0B,QAAEC,GAAWC,GACrC,OACEF,EAAAA,cAAA,OAAKE,IAAKA,GACPF,EAAAA,eAAqBC,GACpBA,EACEA,EACFD,EAAAA,cAACG,EAAAA,cAAa,CAACC,KAAMC,OAAOJ,KAC1B,KAGV,IAaF,GAVmBK,EAAAA,EAAAA,WAAS,UAAU,SAAEC,IACtC,OAAOA,EACLP,EAAAA,cAACQ,EAAAA,SAAQ,CAACC,SAAU,MAClBT,EAAAA,cAACU,EAAAA,QAAW,KACVV,EAAAA,cAACD,EAAe,CAACE,QAASM,MAG5B,IACN,G","sources":["../../../plugins/arc/src/ArcTooltip.tsx"],"sourcesContent":["import React, { Suspense } from 'react'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport BaseTooltip from '@jbrowse/core/ui/BaseTooltip'\n\ninterface Props {\n  message: React.ReactNode | string\n}\nconst TooltipContents = React.forwardRef<HTMLDivElement, Props>(\n  function TooltipContents2({ message }, ref) {\n    return (\n      <div ref={ref}>\n        {React.isValidElement(message) ? (\n          message\n        ) : message ? (\n          <SanitizedHTML html={String(message)} />\n        ) : null}\n      </div>\n    )\n  },\n)\n\nconst ArcTooltip = observer(function ({ contents }: { contents?: string }) {\n  return contents ? (\n    <Suspense fallback={null}>\n      <BaseTooltip>\n        <TooltipContents message={contents} />\n      </BaseTooltip>\n    </Suspense>\n  ) : null\n})\n\nexport default ArcTooltip\n"],"names":["TooltipContents","React","message","ref","SanitizedHTML","html","String","observer","contents","Suspense","fallback","BaseTooltip"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2246.e5e65a4f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2246],{47450:(e,t,r)=>{r.d(t,{A:()=>y});var o=r(7552),a=r(93878),s=r(70799),n=r(51148),c=r(60129),i=r(4785),l=r(74893),p=r(69500);const m=(0,l.A)((0,p.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),d=(0,l.A)((0,p.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var v,h=r(2859),u=r(72755);const x=(0,n.Ay)(h.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(e,t)=>t.root})((0,c.A)((({theme:e})=>({display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${u.A.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${u.A.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${u.A.error}`]:{color:(e.vars||e).palette.error.main}})))),A=(0,n.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(e,t)=>t.text})((0,c.A)((({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})))),y=o.forwardRef((function(e,t){const r=(0,i.b)({props:e,name:"MuiStepIcon"}),{active:o=!1,className:n,completed:c=!1,error:l=!1,icon:h,...y}=r,f={...r,active:o,completed:c,error:l},b=(e=>{const{classes:t,active:r,completed:o,error:a}=e,n={root:["root",r&&"active",o&&"completed",a&&"error"],text:["text"]};return(0,s.A)(n,u.K,t)})(f);if("number"==typeof h||"string"==typeof h){const e=(0,a.A)(n,b.root);return l?(0,p.jsx)(x,{as:d,className:e,ref:t,ownerState:f,...y}):c?(0,p.jsx)(x,{as:m,className:e,ref:t,ownerState:f,...y}):(0,p.jsxs)(x,{className:e,ref:t,ownerState:f,...y,children:[v||(v=(0,p.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,p.jsx)(A,{className:b.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:f,children:h})]})}return h}))},32246:(e,t,r)=>{r.r(t),r.d(t,{default:()=>o.A,getStepIconUtilityClass:()=>a.K,stepIconClasses:()=>a.A});var o=r(47450),a=r(72755)},72755:(e,t,r)=>{r.d(t,{A:()=>n,K:()=>s});var o=r(33761),a=r(85693);function s(e){return(0,a.Ay)("MuiStepIcon",e)}const n=(0,o.A)("MuiStepIcon",["root","active","completed","error","text"])}}]);
+//# sourceMappingURL=2246.e5e65a4f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2246.e5e65a4f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2246.e5e65a4f.chunk.js","mappings":"oOASA,SAAe,EAAAA,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,2FACD,eCFJ,GAAe,EAAAD,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,uDACD,W,ICTAC,E,qBAaJ,MAaMC,GAAe,EAAAC,EAAA,IAAOC,EAAA,EAAS,CACnCC,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAH1B,EAIlB,EAAAC,EAAA,IAAU,EACXC,YACI,CACJC,QAAS,QACTC,WAAYF,EAAMG,YAAYC,OAAO,QAAS,CAC5CC,SAAUL,EAAMG,YAAYE,SAASC,WAEvCC,OAAQP,EAAMQ,MAAQR,GAAOS,QAAQC,KAAKC,SAC1C,CAAC,KAAKC,EAAA,EAAgBC,aAAc,CAClCN,OAAQP,EAAMQ,MAAQR,GAAOS,QAAQK,QAAQC,MAE/C,CAAC,KAAKH,EAAA,EAAgBI,UAAW,CAC/BT,OAAQP,EAAMQ,MAAQR,GAAOS,QAAQK,QAAQC,MAE/C,CAAC,KAAKH,EAAA,EAAgBK,SAAU,CAC9BV,OAAQP,EAAMQ,MAAQR,GAAOS,QAAQQ,MAAMF,WAGzCG,GAAe,EAAA3B,EAAA,IAAO,OAAQ,CAClCE,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOa,MAH1B,EAIlB,EAAAX,EAAA,IAAU,EACXC,YACI,CACJmB,MAAOnB,EAAMQ,MAAQR,GAAOS,QAAQK,QAAQM,aAC5CC,SAAUrB,EAAMsB,WAAWC,QAAQF,SACnCG,WAAYxB,EAAMsB,WAAWE,gBAqG/B,EAnG8B,cAAiB,SAAkBC,EAASC,GACxE,MAAM9B,GAAQ,OAAgB,CAC5BA,MAAO6B,EACPhC,KAAM,iBAEF,OACJuB,GAAS,EACTW,UAAWC,EAAa,UACxBf,GAAY,EAAK,MACjBI,GAAQ,EAAK,KACbY,KACGC,GACDlC,EACEmC,EAAa,IACdnC,EACHoB,SACAH,YACAI,SAEIe,EAjEkBD,KACxB,MAAM,QACJC,EAAO,OACPhB,EAAM,UACNH,EAAS,MACTI,GACEc,EACEE,EAAQ,CACZnC,KAAM,CAAC,OAAQkB,GAAU,SAAUH,GAAa,YAAaI,GAAS,SACtEP,KAAM,CAAC,SAET,OAAO,EAAAwB,EAAA,GAAeD,EAAO,IAAyBD,EAAQ,EAsD9CG,CAAkBJ,GAClC,GAAoB,iBAATF,GAAqC,iBAATA,EAAmB,CACxD,MAAMF,GAAY,EAAAS,EAAA,GAAKR,EAAeI,EAAQlC,MAC9C,OAAImB,GACkB,SAAK3B,EAAc,CACrC+C,GAAIC,EACJX,UAAWA,EACXD,IAAKA,EACLK,WAAYA,KACTD,IAGHjB,GACkB,SAAKvB,EAAc,CACrC+C,GAAIE,EACJZ,UAAWA,EACXD,IAAKA,EACLK,WAAYA,KACTD,KAGa,UAAMxC,EAAc,CACtCqC,UAAWA,EACXD,IAAKA,EACLK,WAAYA,KACTD,EACHU,SAAU,CAACnD,IAAYA,GAAuB,SAAK,SAAU,CAC3DoD,GAAI,KACJC,GAAI,KACJC,EAAG,SACa,SAAKzB,EAAc,CACnCS,UAAWK,EAAQtB,KACnBkC,EAAG,KACHC,EAAG,KACHC,WAAY,SACZC,iBAAkB,UAClBhB,WAAYA,EACZS,SAAUX,MAGhB,CACA,OAAOA,CACT,G,wMCxHO,SAASmB,EAAwBtD,GACtC,OAAO,QAAqB,cAAeA,EAC7C,CACA,MACA,GADwB,OAAuB,cAAe,CAAC,OAAQ,SAAU,YAAa,QAAS,Q","sources":["../../../node_modules/@mui/material/internal/svg-icons/CheckCircle.js","../../../node_modules/@mui/material/internal/svg-icons/Warning.js","../../../node_modules/@mui/material/StepIcon/StepIcon.js","../../../node_modules/@mui/material/StepIcon/stepIconClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z\"\n}), 'CheckCircle');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');","'use client';\n\nvar _circle;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport CheckCircle from \"../internal/svg-icons/CheckCircle.js\";\nimport Warning from \"../internal/svg-icons/Warning.js\";\nimport SvgIcon from \"../SvgIcon/index.js\";\nimport stepIconClasses, { getStepIconUtilityClass } from \"./stepIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    active,\n    completed,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active', completed && 'completed', error && 'error'],\n    text: ['text']\n  };\n  return composeClasses(slots, getStepIconUtilityClass, classes);\n};\nconst StepIconRoot = styled(SvgIcon, {\n  name: 'MuiStepIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  color: (theme.vars || theme).palette.text.disabled,\n  [`&.${stepIconClasses.completed}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.active}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepIconText = styled('text', {\n  name: 'MuiStepIcon',\n  slot: 'Text',\n  overridesResolver: (props, styles) => styles.text\n})(memoTheme(({\n  theme\n}) => ({\n  fill: (theme.vars || theme).palette.primary.contrastText,\n  fontSize: theme.typography.caption.fontSize,\n  fontFamily: theme.typography.fontFamily\n})));\nconst StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepIcon'\n  });\n  const {\n    active = false,\n    className: classNameProp,\n    completed = false,\n    error = false,\n    icon,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    active,\n    completed,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (typeof icon === 'number' || typeof icon === 'string') {\n    const className = clsx(classNameProp, classes.root);\n    if (error) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: Warning,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    if (completed) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: CheckCircle,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    return /*#__PURE__*/_jsxs(StepIconRoot, {\n      className: className,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      children: [_circle || (_circle = /*#__PURE__*/_jsx(\"circle\", {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"12\"\n      })), /*#__PURE__*/_jsx(StepIconText, {\n        className: classes.text,\n        x: \"12\",\n        y: \"12\",\n        textAnchor: \"middle\",\n        dominantBaseline: \"central\",\n        ownerState: ownerState,\n        children: icon\n      })]\n    });\n  }\n  return icon;\n});\nprocess.env.NODE_ENV !== \"production\" ? StepIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Whether this step is active.\n   * @default false\n   */\n  active: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   * @default false\n   */\n  completed: PropTypes.bool,\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * The label displayed in the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepIconUtilityClass(slot) {\n  return generateUtilityClass('MuiStepIcon', slot);\n}\nconst stepIconClasses = generateUtilityClasses('MuiStepIcon', ['root', 'active', 'completed', 'error', 'text']);\nexport default stepIconClasses;"],"names":["createSvgIcon","d","_circle","StepIconRoot","styled","SvgIcon","name","slot","overridesResolver","props","styles","root","memoTheme","theme","display","transition","transitions","create","duration","shortest","color","vars","palette","text","disabled","stepIconClasses","completed","primary","main","active","error","StepIconText","fill","contrastText","fontSize","typography","caption","fontFamily","inProps","ref","className","classNameProp","icon","other","ownerState","classes","slots","composeClasses","useUtilityClasses","clsx","as","Warning","CheckCircle","children","cx","cy","r","x","y","textAnchor","dominantBaseline","getStepIconUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2249.b91f0bb3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2249],{92249:(e,t,s)=>{s.r(t),s.d(t,{default:()=>i});var a=s(46377),r=s(99834);class i extends a.BaseAdapter{async getRefNameAliases(){const e=this.getConf("location");if(""===e.uri||"/path/to/my/aliases.txt"===e.uri)return[];const t=await(0,r.openLocation)(e,this.pluginManager).readFile("utf8"),s=this.getConf("refNameColumn");return t.trim().split(/\n|\r\n|\r/).filter((e=>!!e&&!e.startsWith("#"))).map((e=>{const t=e.split("\t"),[a]=t.splice(s,1);return{refName:a,aliases:t.filter((e=>!!e.trim()))}}))}async freeResources(){}}}}]);
+//# sourceMappingURL=2249.b91f0bb3.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2249.b91f0bb3.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2249.b91f0bb3.chunk.js","mappings":"iLAMe,MAAMA,UACXC,EAAAA,YAGR,uBAAMC,GACJ,MAAMC,EAAMC,KAAKC,QAAQ,YACzB,GAAgB,KAAZF,EAAIG,KAA0B,4BAAZH,EAAIG,IACxB,MAAO,GAET,MAAMC,QAAgBC,EAAAA,EAAAA,cAAaL,EAAKC,KAAKK,eAAeC,SAAS,QAC/DC,EAAYP,KAAKC,QAAQ,iBAC/B,OAAOE,EACJK,OACAC,MAAM,cACNC,QAAOC,KAAOA,IAAMA,EAAEC,WAAW,OACjCC,KAAIC,IACH,MAAMC,EAAUD,EAAIL,MAAM,OACnBO,GAAWD,EAAQE,OAAOV,EAAW,GAC5C,MAAO,CACLS,QAASA,EACTD,QAASA,EAAQL,QAAOC,KAAOA,EAAEH,SAClC,GAEP,CAEA,mBAAMU,GAAiB,E","sources":["../../../plugins/config/src/RefNameAliasAdapter/RefNameAliasAdapter.ts"],"sourcesContent":["import {\n  BaseRefNameAliasAdapter,\n  BaseAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\n\nexport default class RefNameAliasAdapter\n  extends BaseAdapter\n  implements BaseRefNameAliasAdapter\n{\n  async getRefNameAliases() {\n    const loc = this.getConf('location')\n    if (loc.uri === '' || loc.uri === '/path/to/my/aliases.txt') {\n      return []\n    }\n    const results = await openLocation(loc, this.pluginManager).readFile('utf8')\n    const refColumn = this.getConf('refNameColumn')\n    return results\n      .trim()\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f && !f.startsWith('#'))\n      .map(row => {\n        const aliases = row.split('\\t')\n        const [refName] = aliases.splice(refColumn, 1)\n        return {\n          refName: refName!,\n          aliases: aliases.filter(f => !!f.trim()),\n        }\n      })\n  }\n\n  async freeResources() {}\n}\n"],"names":["RefNameAliasAdapter","BaseAdapter","getRefNameAliases","loc","this","getConf","uri","results","openLocation","pluginManager","readFile","refColumn","trim","split","filter","f","startsWith","map","row","aliases","refName","splice","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2306.f8d640f4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2306],{71379:(s,a,t)=>{t.d(a,{A:()=>p});var e=t(7552),n=t(93878),o=t(70799),r=t(51148),i=t(4785),c=t(93863),l=t(69500);const d=(0,r.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(s,a)=>{const{ownerState:t}=s;return[a.root,!t.disableSpacing&&a.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),p=e.forwardRef((function(s,a){const t=(0,i.b)({props:s,name:"MuiCardActions"}),{disableSpacing:e=!1,className:r,...p}=t,u={...t,disableSpacing:e},A=(s=>{const{classes:a,disableSpacing:t}=s,e={root:["root",!t&&"spacing"]};return(0,o.A)(e,c.E,a)})(u);return(0,l.jsx)(d,{className:(0,n.A)(A.root,r),ownerState:u,ref:a,...p})}))},93863:(s,a,t)=>{t.d(a,{A:()=>r,E:()=>o});var e=t(33761),n=t(85693);function o(s){return(0,n.Ay)("MuiCardActions",s)}const r=(0,e.A)("MuiCardActions",["root","spacing"])},32306:(s,a,t)=>{t.r(a),t.d(a,{cardActionsClasses:()=>n.A,default:()=>e.A,getCardActionsUtilityClass:()=>n.E});var e=t(71379),n=t(93863)}}]);
+//# sourceMappingURL=2306.f8d640f4.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2306.f8d640f4.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2306.f8d640f4.chunk.js","mappings":"yNAUA,MAUMA,GAAkB,QAAO,MAAO,CACpCC,KAAM,iBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,MAAOD,EAAWE,gBAAkBH,EAAOI,QAAQ,GAP9C,CASrB,CACDC,QAAS,OACTC,WAAY,SACZC,QAAS,EACTC,SAAU,CAAC,CACTT,MAAO,CACLI,gBAAgB,GAElBM,MAAO,CACL,gCAAiC,CAC/BC,WAAY,QAsDpB,EAjDiC,cAAiB,SAAqBC,EAASC,GAC9E,MAAMb,GAAQ,OAAgB,CAC5BA,MAAOY,EACPf,KAAM,oBAEF,eACJO,GAAiB,EAAK,UACtBU,KACGC,GACDf,EACEE,EAAa,IACdF,EACHI,kBAEIY,EAhDkBd,KACxB,MAAM,QACJc,EAAO,eACPZ,GACEF,EACEe,EAAQ,CACZd,KAAM,CAAC,QAASC,GAAkB,YAEpC,OAAO,OAAea,EAAO,IAA4BD,EAAQ,EAwCjDE,CAAkBhB,GAClC,OAAoB,SAAKN,EAAiB,CACxCkB,WAAW,OAAKE,EAAQb,KAAMW,GAC9BZ,WAAYA,EACZW,IAAKA,KACFE,GAEP,G,qEC/DO,SAASI,EAA2BrB,GACzC,OAAO,QAAqB,iBAAkBA,EAChD,CACA,MACA,GAD2B,OAAuB,iBAAkB,CAAC,OAAQ,W","sources":["../../../node_modules/@mui/material/CardActions/CardActions.js","../../../node_modules/@mui/material/CardActions/cardActionsClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardActionsUtilityClass } from \"./cardActionsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getCardActionsUtilityClass, classes);\n};\nconst CardActionsRoot = styled('div', {\n  name: 'MuiCardActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  variants: [{\n    props: {\n      disableSpacing: false\n    },\n    style: {\n      '& > :not(style) ~ :not(style)': {\n        marginLeft: 8\n      }\n    }\n  }]\n});\nconst CardActions = /*#__PURE__*/React.forwardRef(function CardActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardActions'\n  });\n  const {\n    disableSpacing = false,\n    className,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableSpacing\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardActionsRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActions', slot);\n}\nconst cardActionsClasses = generateUtilityClasses('MuiCardActions', ['root', 'spacing']);\nexport default cardActionsClasses;"],"names":["CardActionsRoot","name","slot","overridesResolver","props","styles","ownerState","root","disableSpacing","spacing","display","alignItems","padding","variants","style","marginLeft","inProps","ref","className","other","classes","slots","useUtilityClasses","getCardActionsUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2321.ef211da9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2321],{42321:(e,s,t)=>{t.r(s),t.d(s,{default:()=>a.A,dialogContentTextClasses:()=>l.A,getDialogContentTextUtilityClass:()=>l.D});var a=t(99123),l=t(48839)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2398.731eb1c6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2398],{22398:(e,s,l)=>{l.r(s),l.d(s,{default:()=>a.A,formControlLabelClasses:()=>b.A,getFormControlLabelUtilityClasses:()=>b.u});var a=l(33371),b=l(18095)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2412.10574f7d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2412],{92412:(e,t,l)=>{l.r(t),l.d(t,{default:()=>h});var a=l(7552),n=l(68446),r=l(49823),o=l(29499),i=l(1343),s=l(58507),c=l(5401),u=l(75785),m=l(43283);const d=(0,u.n9)()({dialogContent:{width:"80em"},textAreaFont:{fontFamily:"Courier New"},error:{color:"red",fontSize:"0.8em"}}),h=(0,n.observer)((function({model:e,handleClose:t}){const{classes:l}=d(),{activeFilters:n}=e,[u,h]=(0,a.useState)(n.join("\n")),[p,f]=(0,a.useState)();return(0,a.useEffect)((()=>{try{u.split("\n").map((e=>e.trim())).filter((e=>!!e)).map((e=>{var t;t=e.trim(),(0,m.A)(t)})),f(void 0)}catch(e){console.error(e),f(e)}}),[u]),a.createElement(r.Dialog,{maxWidth:"xl",open:!0,onClose:t,title:"Add track filters"},a.createElement(o.A,null,a.createElement("div",null,"Add filters, in jexl format, one per line, starting with the string jexl:. Examples:"," ",a.createElement("ul",null,a.createElement("li",null,a.createElement("code",null,"jexl:get(feature,'name')=='BRCA1'")," - show only feature where the name attribute is BRCA1"),a.createElement("li",null,a.createElement("code",null,"jexl:get(feature,'type')=='gene'")," - show only gene type features in a GFF that has many other feature types"),a.createElement("li",null,a.createElement("code",null,"jexl:get(feature,'score') > 400")," - show only features that have a score greater than 400"))),p?a.createElement("p",{className:l.error},`${p}`):null,a.createElement(i.A,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,className:l.dialogContent,fullWidth:!0,value:u,onChange:e=>{h(e.target.value)},InputProps:{classes:{input:l.textAreaFont}}})),a.createElement(s.A,null,a.createElement(c.A,{variant:"contained",color:"primary",type:"submit",autoFocus:!0,disabled:!!p,onClick:()=>{e.setJexlFilters(u.split("\n")),t()}},"Submit"),a.createElement(c.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))}))}}]);
+//# sourceMappingURL=2412.10574f7d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2412.10574f7d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2412.10574f7d.chunk.js","mappings":"2PAOA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,cAAe,CACbC,MAAO,QAETC,aAAc,CACZC,WAAY,eAGdC,MAAO,CACLC,MAAO,MACPC,SAAU,WA6Gd,GArGyBC,EAAAA,EAAAA,WAAS,UAAU,MAC1CC,EAAK,YACLC,IASA,MAAM,QAAEC,GAAYZ,KACd,cAAEa,GAAkBH,GACnBI,EAAMC,IAAWC,EAAAA,EAAAA,UAASH,EAAcI,KAAK,QAC7CX,EAAOY,IAAYF,EAAAA,EAAAA,YAkB1B,OAhBAG,EAAAA,EAAAA,YAAU,KACR,IACEL,EACGM,MAAM,MACNC,KAAIC,GAAQA,EAAKC,SACjBC,QAAOF,KAAUA,IACjBD,KAAIC,IA1Bb,IAAmBG,IA2BCH,EAAKC,QA1BvBG,EAAAA,EAAAA,GAAuBD,EA0BO,IAE1BP,OAASS,EACX,CAAE,MAAOC,GACPC,QAAQvB,MAAMsB,GACdV,EAASU,EACX,IACC,CAACd,IAGFgB,EAAAA,cAACC,EAAAA,OAAM,CAACC,SAAS,KAAKC,MAAI,EAACC,QAASvB,EAAawB,MAAM,qBACrDL,EAAAA,cAACM,EAAAA,EAAa,KACZN,EAAAA,cAAA,WAAK,uFAEc,IACjBA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,qCAAwC,0DAGhDA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,oCAAuC,8EAG/CA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,mCAAyC,8DAMpDxB,EAAQwB,EAAAA,cAAA,KAAGO,UAAWzB,EAAQN,OAAQ,GAAGA,KAAe,KACzDwB,EAAAA,cAACQ,EAAAA,EAAS,CACRC,QAAQ,WACRC,WAAS,EACTC,QAAS,EACTC,QAAS,GACTL,UAAWzB,EAAQV,cACnByC,WAAS,EACTC,MAAO9B,EACP+B,SAAUC,IACR/B,EAAQ+B,EAAMC,OAAOH,MAAM,EAE7BI,WAAY,CACVpC,QAAS,CACPqC,MAAOrC,EAAQR,kBAKvB0B,EAAAA,cAACoB,EAAAA,EAAa,KACZpB,EAAAA,cAACqB,EAAAA,EAAM,CACLZ,QAAQ,YACRhC,MAAM,UACN6C,KAAK,SACLC,WAAS,EACTC,WAAYhD,EACZiD,QAASA,KACP7C,EAAM8C,eAAe1C,EAAKM,MAAM,OAChCT,GAAa,GAEhB,UAGDmB,EAAAA,cAACqB,EAAAA,EAAM,CACLZ,QAAQ,YACRhC,MAAM,YACNgD,QAASA,KACP5C,GAAa,GAEhB,WAMT,G","sources":["../../../plugins/linear-genome-view/src/LinearBasicDisplay/components/AddFiltersDialog.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { Button, DialogActions, DialogContent, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings'\n\nconst useStyles = makeStyles()({\n  dialogContent: {\n    width: '80em',\n  },\n  textAreaFont: {\n    fontFamily: 'Courier New',\n  },\n\n  error: {\n    color: 'red',\n    fontSize: '0.8em',\n  },\n})\n\nfunction checkJexl(code: string) {\n  stringToJexlExpression(code)\n}\n\nconst AddFiltersDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    jexlFilters?: string[]\n    activeFilters: string[]\n    setJexlFilters: (arg?: string[]) => void\n  }\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const { activeFilters } = model\n  const [data, setData] = useState(activeFilters.join('\\n'))\n  const [error, setError] = useState<unknown>()\n\n  useEffect(() => {\n    try {\n      data\n        .split('\\n')\n        .map(line => line.trim())\n        .filter(line => !!line)\n        .map(line => {\n          checkJexl(line.trim())\n        })\n      setError(undefined)\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }, [data])\n\n  return (\n    <Dialog maxWidth=\"xl\" open onClose={handleClose} title=\"Add track filters\">\n      <DialogContent>\n        <div>\n          Add filters, in jexl format, one per line, starting with the string\n          jexl:. Examples:{' '}\n          <ul>\n            <li>\n              <code>jexl:get(feature,'name')=='BRCA1'</code> - show only feature\n              where the name attribute is BRCA1\n            </li>\n            <li>\n              <code>jexl:get(feature,'type')=='gene'</code> - show only gene\n              type features in a GFF that has many other feature types\n            </li>\n            <li>\n              <code>jexl:get(feature,'score') &gt; 400</code> - show only\n              features that have a score greater than 400\n            </li>\n          </ul>\n        </div>\n\n        {error ? <p className={classes.error}>{`${error}`}</p> : null}\n        <TextField\n          variant=\"outlined\"\n          multiline\n          minRows={5}\n          maxRows={10}\n          className={classes.dialogContent}\n          fullWidth\n          value={data}\n          onChange={event => {\n            setData(event.target.value)\n          }}\n          InputProps={{\n            classes: {\n              input: classes.textAreaFont,\n            },\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          autoFocus\n          disabled={!!error}\n          onClick={() => {\n            model.setJexlFilters(data.split('\\n'))\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default AddFiltersDialog\n"],"names":["useStyles","makeStyles","dialogContent","width","textAreaFont","fontFamily","error","color","fontSize","observer","model","handleClose","classes","activeFilters","data","setData","useState","join","setError","useEffect","split","map","line","trim","filter","code","stringToJexlExpression","undefined","e","console","React","Dialog","maxWidth","open","onClose","title","DialogContent","className","TextField","variant","multiline","minRows","maxRows","fullWidth","value","onChange","event","target","InputProps","input","DialogActions","Button","type","autoFocus","disabled","onClick","setJexlFilters"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2418.0b1f308b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2418],{88215:(e,t,n)=>{n.d(t,{x:()=>u});var r=n(7552),o=n(29527),a=n(89887),i=n(99305),s=n(28325),c=n(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:t,disableReactTree:n=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=r.useRef(!1),f=r.useRef(null),h=r.useRef(!1),g=r.useRef(!1);r.useEffect((()=>(setTimeout((()=>{h.current=!0}),0),()=>{h.current=!1})),[]);const v=(0,o.A)((0,s.A)(t),f),b=(0,a.A)((e=>{const t=g.current;g.current=!1;const r=(0,i.A)(f.current);if(!h.current||!f.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth<e.clientX||t.documentElement.clientHeight<e.clientY}(e,r))return;if(m.current)return void(m.current=!1);let o;o=e.composedPath?e.composedPath().includes(f.current):!r.documentElement.contains(e.target)||f.current.contains(e.target),o||!n&&t||d(e)})),w=e=>n=>{g.current=!0;const r=t.props[e];r&&r(n)},A={ref:v};return!1!==p&&(A[p]=w(p)),r.useEffect((()=>{if(!1!==p){const e=l(p),t=(0,i.A)(f.current),n=()=>{m.current=!0};return t.addEventListener(e,b),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,b),t.removeEventListener("touchmove",n)}}}),[b,p]),!1!==u&&(A[u]=w(u)),r.useEffect((()=>{if(!1!==u){const e=l(u),t=(0,i.A)(f.current);return t.addEventListener(e,b),()=>{t.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(r.Fragment,{children:r.cloneElement(t,A)})}},42418:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(7552),o=n(70799),a=n(1045),i=n(26218),s=n(89887),c=n(29091);var l=n(88215),u=n(51148),d=n(48231),p=n(60129),m=n(4785),f=n(15622),h=n(4407),g=n(85283),v=n(58763),b=n(69500);const w=(0,u.Ay)("div",{name:"MuiSnackbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`anchorOrigin${(0,f.A)(n.anchorOrigin.vertical)}${(0,f.A)(n.anchorOrigin.horizontal)}`]]}})((0,p.A)((({theme:e})=>({zIndex:(e.vars||e).zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center",variants:[{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical,style:{top:8,[e.breakpoints.up("sm")]:{top:24}}},{props:({ownerState:e})=>"top"!==e.anchorOrigin.vertical,style:{bottom:8,[e.breakpoints.up("sm")]:{bottom:24}}},{props:({ownerState:e})=>"left"===e.anchorOrigin.horizontal,style:{justifyContent:"flex-start",[e.breakpoints.up("sm")]:{left:24,right:"auto"}}},{props:({ownerState:e})=>"right"===e.anchorOrigin.horizontal,style:{justifyContent:"flex-end",[e.breakpoints.up("sm")]:{right:24,left:"auto"}}},{props:({ownerState:e})=>"center"===e.anchorOrigin.horizontal,style:{[e.breakpoints.up("sm")]:{left:"50%",right:"auto",transform:"translateX(-50%)"}}}]})))),A=r.forwardRef((function(e,t){const n=(0,m.b)({props:e,name:"MuiSnackbar"}),u=(0,d.A)(),p={enter:u.transitions.duration.enteringScreen,exit:u.transitions.duration.leavingScreen},{action:A,anchorOrigin:{vertical:k,horizontal:E}={vertical:"bottom",horizontal:"left"},autoHideDuration:y=null,children:C,className:x,ClickAwayListenerProps:S,ContentProps:L,disableWindowBlurListener:R=!1,message:O,onBlur:M,onClose:j,onFocus:T,onMouseEnter:P,onMouseLeave:z,open:B,resumeHideDuration:D,TransitionComponent:W=h.A,transitionDuration:H=p,TransitionProps:{onEnter:N,onExited:F,...I}={},...$}=n,_={...n,anchorOrigin:{vertical:k,horizontal:E},autoHideDuration:y,disableWindowBlurListener:R,TransitionComponent:W,transitionDuration:H},X=(e=>{const{classes:t,anchorOrigin:n}=e,r={root:["root",`anchorOrigin${(0,f.A)(n.vertical)}${(0,f.A)(n.horizontal)}`]};return(0,o.A)(r,v.W,t)})(_),{getRootProps:G,onClickAway:q}=function(e={}){const{autoHideDuration:t=null,disableWindowBlurListener:n=!1,onClose:o,open:a,resumeHideDuration:l}=e,u=(0,i.A)();r.useEffect((()=>{if(a)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){e.defaultPrevented||"Escape"===e.key&&o?.(e,"escapeKeyDown")}}),[a,o]);const d=(0,s.A)(((e,t)=>{o?.(e,t)})),p=(0,s.A)((e=>{o&&null!=e&&u.start(e,(()=>{d(null,"timeout")}))}));r.useEffect((()=>(a&&p(t),u.clear)),[a,t,p,u]);const m=u.clear,f=r.useCallback((()=>{null!=t&&p(null!=l?l:.5*t)}),[t,l,p]),h=e=>t=>{const n=e.onFocus;n?.(t),m()},g=e=>t=>{const n=e.onMouseEnter;n?.(t),m()},v=e=>t=>{const n=e.onMouseLeave;n?.(t),f()};return r.useEffect((()=>{if(!n&&a)return window.addEventListener("focus",f),window.addEventListener("blur",m),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",m)}}),[n,a,f,m]),{getRootProps:(t={})=>{const n={...(0,c.A)(e),...(0,c.A)(t)};return{role:"presentation",...t,...n,onBlur:(r=n,e=>{const t=r.onBlur;t?.(e),f()}),onFocus:h(n),onMouseEnter:g(n),onMouseLeave:v(n)};var r},onClickAway:e=>{o?.(e,"clickaway")}}}({..._}),[K,Y]=r.useState(!0),J=(0,a.A)({elementType:w,getSlotProps:G,externalForwardedProps:$,ownerState:_,additionalProps:{ref:t},className:[X.root,x]});return!B&&K?null:(0,b.jsx)(l.x,{onClickAway:q,...S,children:(0,b.jsx)(w,{...J,children:(0,b.jsx)(W,{appear:!0,in:B,timeout:H,direction:"top"===k?"down":"up",onEnter:(e,t)=>{Y(!1),N&&N(e,t)},onExited:e=>{Y(!0),F&&F(e)},...I,children:C||(0,b.jsx)(g.A,{message:O,action:A,...L})})})})}))},58763:(e,t,n)=>{n.d(t,{A:()=>i,W:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiSnackbar",e)}const i=(0,r.A)("MuiSnackbar",["root","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft"])},85283:(e,t,n)=>{n.d(t,{A:()=>g});var r=n(7552),o=n(93878),a=n(70799),i=n(72639),s=n(51148),c=n(60129),l=n(4785),u=n(943),d=n(27799),p=n(69500);const m=(0,s.Ay)(u.A,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(e,t)=>t.root})((0,c.A)((({theme:e})=>{const t="light"===e.palette.mode?.8:.98,n=(0,i.tL)(e.palette.background.default,t);return{...e.typography.body2,color:e.vars?e.vars.palette.SnackbarContent.color:e.palette.getContrastText(n),backgroundColor:e.vars?e.vars.palette.SnackbarContent.bg:n,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,flexGrow:1,[e.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}}}))),f=(0,s.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0"}),h=(0,s.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),g=r.forwardRef((function(e,t){const n=(0,l.b)({props:e,name:"MuiSnackbarContent"}),{action:r,className:i,message:s,role:c="alert",...u}=n,g=n,v=(e=>{const{classes:t}=e;return(0,a.A)({root:["root"],action:["action"],message:["message"]},d.d,t)})(g);return(0,p.jsxs)(m,{role:c,square:!0,elevation:6,className:(0,o.A)(v.root,i),ownerState:g,ref:t,...u,children:[(0,p.jsx)(f,{className:v.message,ownerState:g,children:s}),r?(0,p.jsx)(h,{className:v.action,ownerState:g,children:r}):null]})}))},27799:(e,t,n)=>{n.d(t,{A:()=>i,d:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiSnackbarContent",e)}const i=(0,r.A)("MuiSnackbarContent",["root","message","action"])}}]);
+//# sourceMappingURL=2418.0b1f308b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2418.0b1f308b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2418.0b1f308b.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Snackbar/Snackbar.js","../../../node_modules/@mui/material/Snackbar/useSnackbar.js","../../../node_modules/@mui/material/Snackbar/snackbarClasses.js","../../../node_modules/@mui/material/SnackbarContent/SnackbarContent.js","../../../node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useSnackbar from \"./useSnackbar.js\";\nimport ClickAwayListener from \"../ClickAwayListener/index.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport Grow from \"../Grow/index.js\";\nimport SnackbarContent from \"../SnackbarContent/index.js\";\nimport { getSnackbarUtilityClass } from \"./snackbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    anchorOrigin\n  } = ownerState;\n  const slots = {\n    root: ['root', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`]\n  };\n  return composeClasses(slots, getSnackbarUtilityClass, classes);\n};\nconst SnackbarRoot = styled('div', {\n  name: 'MuiSnackbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.snackbar,\n  position: 'fixed',\n  display: 'flex',\n  left: 8,\n  right: 8,\n  justifyContent: 'center',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top',\n    style: {\n      top: 8,\n      [theme.breakpoints.up('sm')]: {\n        top: 24\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical !== 'top',\n    style: {\n      bottom: 8,\n      [theme.breakpoints.up('sm')]: {\n        bottom: 24\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.horizontal === 'left',\n    style: {\n      justifyContent: 'flex-start',\n      [theme.breakpoints.up('sm')]: {\n        left: 24,\n        right: 'auto'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.horizontal === 'right',\n    style: {\n      justifyContent: 'flex-end',\n      [theme.breakpoints.up('sm')]: {\n        right: 24,\n        left: 'auto'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.horizontal === 'center',\n    style: {\n      [theme.breakpoints.up('sm')]: {\n        left: '50%',\n        right: 'auto',\n        transform: 'translateX(-50%)'\n      }\n    }\n  }]\n})));\nconst Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSnackbar'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    action,\n    anchorOrigin: {\n      vertical,\n      horizontal\n    } = {\n      vertical: 'bottom',\n      horizontal: 'left'\n    },\n    autoHideDuration = null,\n    children,\n    className,\n    ClickAwayListenerProps,\n    ContentProps,\n    disableWindowBlurListener = false,\n    message,\n    onBlur,\n    onClose,\n    onFocus,\n    onMouseEnter,\n    onMouseLeave,\n    open,\n    resumeHideDuration,\n    TransitionComponent = Grow,\n    transitionDuration = defaultTransitionDuration,\n    TransitionProps: {\n      onEnter,\n      onExited,\n      ...TransitionProps\n    } = {},\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    anchorOrigin: {\n      vertical,\n      horizontal\n    },\n    autoHideDuration,\n    disableWindowBlurListener,\n    TransitionComponent,\n    transitionDuration\n  };\n  const classes = useUtilityClasses(ownerState);\n  const {\n    getRootProps,\n    onClickAway\n  } = useSnackbar({\n    ...ownerState\n  });\n  const [exited, setExited] = React.useState(true);\n  const rootProps = useSlotProps({\n    elementType: SnackbarRoot,\n    getSlotProps: getRootProps,\n    externalForwardedProps: other,\n    ownerState,\n    additionalProps: {\n      ref\n    },\n    className: [classes.root, className]\n  });\n  const handleExited = node => {\n    setExited(true);\n    if (onExited) {\n      onExited(node);\n    }\n  };\n  const handleEnter = (node, isAppearing) => {\n    setExited(false);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  };\n\n  // So we only render active snackbars.\n  if (!open && exited) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(ClickAwayListener, {\n    onClickAway: onClickAway,\n    ...ClickAwayListenerProps,\n    children: /*#__PURE__*/_jsx(SnackbarRoot, {\n      ...rootProps,\n      children: /*#__PURE__*/_jsx(TransitionComponent, {\n        appear: true,\n        in: open,\n        timeout: transitionDuration,\n        direction: vertical === 'top' ? 'down' : 'up',\n        onEnter: handleEnter,\n        onExited: handleExited,\n        ...TransitionProps,\n        children: children || /*#__PURE__*/_jsx(SnackbarContent, {\n          message: message,\n          action: action,\n          ...ContentProps\n        })\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Snackbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the snackbar.\n   */\n  action: PropTypes.node,\n  /**\n   * The anchor of the `Snackbar`.\n   * On smaller screens, the component grows to occupy all the available width,\n   * the horizontal alignment is ignored.\n   * @default { vertical: 'bottom', horizontal: 'left' }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The number of milliseconds to wait before automatically calling the\n   * `onClose` function. `onClose` should then set the state of the `open`\n   * prop to hide the Snackbar. This behavior is disabled by default with\n   * the `null` value.\n   * @default null\n   */\n  autoHideDuration: PropTypes.number,\n  /**\n   * Replace the `SnackbarContent` component.\n   */\n  children: PropTypes.element,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Props applied to the `ClickAwayListener` element.\n   */\n  ClickAwayListenerProps: PropTypes.object,\n  /**\n   * Props applied to the [`SnackbarContent`](https://mui.com/material-ui/api/snackbar-content/) element.\n   */\n  ContentProps: PropTypes.object,\n  /**\n   * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n   * @default false\n   */\n  disableWindowBlurListener: PropTypes.bool,\n  /**\n   * When displaying multiple consecutive snackbars using a single parent-rendered\n   * `<Snackbar/>`, add the `key` prop to ensure independent treatment of each message.\n   * For instance, use `<Snackbar key={message} />`. Otherwise, messages might update\n   * in place, and features like `autoHideDuration` could be affected.\n   */\n  key: () => null,\n  /**\n   * The message to display.\n   */\n  message: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Typically `onClose` is used to set state in the parent component,\n   * which is used to control the `Snackbar` `open` prop.\n   * The `reason` parameter can optionally be used to control the response to `onClose`,\n   * for example ignoring `clickaway`.\n   *\n   * @param {React.SyntheticEvent<any> | Event} event The event source of the callback.\n   * @param {string} reason Can be: `\"timeout\"` (`autoHideDuration` expired), `\"clickaway\"`, or `\"escapeKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * The number of milliseconds to wait before dismissing after user interaction.\n   * If `autoHideDuration` prop isn't specified, it does nothing.\n   * If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,\n   * we default to `autoHideDuration / 2` ms.\n   */\n  resumeHideDuration: PropTypes.number,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Snackbar;","'use client';\n\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\n/**\n * The basic building block for creating custom snackbar.\n *\n * Demos:\n *\n * - [Snackbar](https://mui.com/base-ui/react-snackbar/#hook)\n *\n * API:\n *\n * - [useSnackbar API](https://mui.com/base-ui/react-snackbar/hooks-api/#use-snackbar)\n */\nfunction useSnackbar(parameters = {}) {\n  const {\n    autoHideDuration = null,\n    disableWindowBlurListener = false,\n    onClose,\n    open,\n    resumeHideDuration\n  } = parameters;\n  const timerAutoHide = useTimeout();\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      if (!nativeEvent.defaultPrevented) {\n        if (nativeEvent.key === 'Escape') {\n          // not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar\n          onClose?.(nativeEvent, 'escapeKeyDown');\n        }\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [open, onClose]);\n  const handleClose = useEventCallback((event, reason) => {\n    onClose?.(event, reason);\n  });\n  const setAutoHideTimer = useEventCallback(autoHideDurationParam => {\n    if (!onClose || autoHideDurationParam == null) {\n      return;\n    }\n    timerAutoHide.start(autoHideDurationParam, () => {\n      handleClose(null, 'timeout');\n    });\n  });\n  React.useEffect(() => {\n    if (open) {\n      setAutoHideTimer(autoHideDuration);\n    }\n    return timerAutoHide.clear;\n  }, [open, autoHideDuration, setAutoHideTimer, timerAutoHide]);\n  const handleClickAway = event => {\n    onClose?.(event, 'clickaway');\n  };\n\n  // Pause the timer when the user is interacting with the Snackbar\n  // or when the user hide the window.\n  const handlePause = timerAutoHide.clear;\n\n  // Restart the timer when the user is no longer interacting with the Snackbar\n  // or when the window is shown back.\n  const handleResume = React.useCallback(() => {\n    if (autoHideDuration != null) {\n      setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n    }\n  }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n  const createHandleBlur = otherHandlers => event => {\n    const onBlurCallback = otherHandlers.onBlur;\n    onBlurCallback?.(event);\n    handleResume();\n  };\n  const createHandleFocus = otherHandlers => event => {\n    const onFocusCallback = otherHandlers.onFocus;\n    onFocusCallback?.(event);\n    handlePause();\n  };\n  const createMouseEnter = otherHandlers => event => {\n    const onMouseEnterCallback = otherHandlers.onMouseEnter;\n    onMouseEnterCallback?.(event);\n    handlePause();\n  };\n  const createMouseLeave = otherHandlers => event => {\n    const onMouseLeaveCallback = otherHandlers.onMouseLeave;\n    onMouseLeaveCallback?.(event);\n    handleResume();\n  };\n  React.useEffect(() => {\n    // TODO: window global should be refactored here\n    if (!disableWindowBlurListener && open) {\n      window.addEventListener('focus', handleResume);\n      window.addEventListener('blur', handlePause);\n      return () => {\n        window.removeEventListener('focus', handleResume);\n        window.removeEventListener('blur', handlePause);\n      };\n    }\n    return undefined;\n  }, [disableWindowBlurListener, open, handleResume, handlePause]);\n  const getRootProps = (externalProps = {}) => {\n    const externalEventHandlers = {\n      ...extractEventHandlers(parameters),\n      ...extractEventHandlers(externalProps)\n    };\n    return {\n      // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.\n      // See https://github.com/mui/material-ui/issues/29080\n      role: 'presentation',\n      ...externalProps,\n      ...externalEventHandlers,\n      onBlur: createHandleBlur(externalEventHandlers),\n      onFocus: createHandleFocus(externalEventHandlers),\n      onMouseEnter: createMouseEnter(externalEventHandlers),\n      onMouseLeave: createMouseLeave(externalEventHandlers)\n    };\n  };\n  return {\n    getRootProps,\n    onClickAway: handleClickAway\n  };\n}\nexport default useSnackbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSnackbarUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbar', slot);\n}\nconst snackbarClasses = generateUtilityClasses('MuiSnackbar', ['root', 'anchorOriginTopCenter', 'anchorOriginBottomCenter', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft']);\nexport default snackbarClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { emphasize } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getSnackbarContentUtilityClass } from \"./snackbarContentClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    action: ['action'],\n    message: ['message']\n  };\n  return composeClasses(slots, getSnackbarContentUtilityClass, classes);\n};\nconst SnackbarContentRoot = styled(Paper, {\n  name: 'MuiSnackbarContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const emphasis = theme.palette.mode === 'light' ? 0.8 : 0.98;\n  const backgroundColor = emphasize(theme.palette.background.default, emphasis);\n  return {\n    ...theme.typography.body2,\n    color: theme.vars ? theme.vars.palette.SnackbarContent.color : theme.palette.getContrastText(backgroundColor),\n    backgroundColor: theme.vars ? theme.vars.palette.SnackbarContent.bg : backgroundColor,\n    display: 'flex',\n    alignItems: 'center',\n    flexWrap: 'wrap',\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    flexGrow: 1,\n    [theme.breakpoints.up('sm')]: {\n      flexGrow: 'initial',\n      minWidth: 288\n    }\n  };\n}));\nconst SnackbarContentMessage = styled('div', {\n  name: 'MuiSnackbarContent',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0'\n});\nconst SnackbarContentAction = styled('div', {\n  name: 'MuiSnackbarContent',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'center',\n  marginLeft: 'auto',\n  paddingLeft: 16,\n  marginRight: -8\n});\nconst SnackbarContent = /*#__PURE__*/React.forwardRef(function SnackbarContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSnackbarContent'\n  });\n  const {\n    action,\n    className,\n    message,\n    role = 'alert',\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SnackbarContentRoot, {\n    role: role,\n    square: true,\n    elevation: 6,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [/*#__PURE__*/_jsx(SnackbarContentMessage, {\n      className: classes.message,\n      ownerState: ownerState,\n      children: message\n    }), action ? /*#__PURE__*/_jsx(SnackbarContentAction, {\n      className: classes.action,\n      ownerState: ownerState,\n      children: action\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the snackbar.\n   */\n  action: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The message to display.\n   */\n  message: PropTypes.node,\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default SnackbarContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSnackbarContentUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbarContent', slot);\n}\nconst snackbarContentClasses = generateUtilityClasses('MuiSnackbarContent', ['root', 'message', 'action']);\nexport default snackbarContentClasses;"],"names":["mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","props","children","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","ref","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","SnackbarRoot","styled","name","slot","overridesResolver","styles","ownerState","root","capitalize","anchorOrigin","vertical","horizontal","memoTheme","theme","zIndex","vars","snackbar","position","display","left","right","justifyContent","alignItems","variants","style","top","breakpoints","up","bottom","transform","inProps","useTheme","defaultTransitionDuration","enter","transitions","duration","enteringScreen","exit","leavingScreen","action","autoHideDuration","className","ClickAwayListenerProps","ContentProps","disableWindowBlurListener","message","onBlur","onClose","onFocus","onMouseEnter","onMouseLeave","open","resumeHideDuration","TransitionComponent","Grow","transitionDuration","TransitionProps","onEnter","onExited","other","classes","slots","composeClasses","useUtilityClasses","getRootProps","parameters","timerAutoHide","useTimeout","document","handleKeyDown","nativeEvent","defaultPrevented","key","handleClose","useEventCallback","reason","setAutoHideTimer","autoHideDurationParam","start","clear","handlePause","handleResume","createHandleFocus","otherHandlers","onFocusCallback","createMouseEnter","onMouseEnterCallback","createMouseLeave","onMouseLeaveCallback","window","externalProps","externalEventHandlers","extractEventHandlers","role","onBlurCallback","exited","setExited","rootProps","useSlotProps","elementType","getSlotProps","externalForwardedProps","additionalProps","appear","in","timeout","direction","node","isAppearing","SnackbarContent","getSnackbarUtilityClass","SnackbarContentRoot","emphasis","palette","mode","backgroundColor","background","default","typography","body2","color","getContrastText","bg","flexWrap","padding","borderRadius","shape","flexGrow","minWidth","SnackbarContentMessage","SnackbarContentAction","marginLeft","paddingLeft","marginRight","square","elevation","getSnackbarContentUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2424.7cd6703f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2424],{52424:(e,t,n)=>{n.r(t),n.d(t,{default:()=>s});var a=n(7552),o=n(68446),r=n(99546),l=n(49792);const i=(0,o.observer)((function({model:e}){const t=(0,r.getContainingView)(e),n=Math.round(t.dynamicBlocks.totalWidthPx),o=e.height,l=(0,a.useCallback)((t=>{e.setRef(t)}),[e,n,o]);return a.createElement("canvas",{"data-testid":"arc-canvas",ref:l,style:{width:n,height:o,position:"absolute"},width:2*n,height:2*o})})),s=(0,o.observer)((function({model:e}){return a.createElement(l.A,{model:e},a.createElement(i,{model:e}))}))},49792:(e,t,n)=>{n.d(t,{A:()=>h});var a=n(7552),o=n(49823),r=n(20529),l=n(75785),i=n(68446),s=n(99546),d=n(89003),c=n(5401);const g=(0,l.n9)()((e=>({loading:{backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${e.palette.action.disabledBackground} 5px, ${e.palette.action.disabledBackground} 10px)`,position:"absolute",bottom:0,height:50,width:300,right:0,pointerEvents:"none",textAlign:"center"}}))),m=(0,i.observer)((function({model:e,children:t}){const{error:n,regionTooLarge:o}=e;return n?a.createElement(r.LW,{message:`${n}`,severity:"error",action:a.createElement(d.A,{title:"Reload"},a.createElement(c.A,{"data-testid":"reload_button",onClick:()=>{e.reload()}},"Reload"))}):o?e.regionCannotBeRendered():a.createElement(u,{model:e},t)})),u=(0,i.observer)((function({model:e,children:t}){const{drawn:n,loading:o}=e,r=(0,s.getContainingView)(e),l=(e.lastDrawnOffsetPx||0)-r.offsetPx;return a.createElement("div",{"data-testid":`drawn-${n}`},a.createElement("div",{style:{position:"absolute",left:l}},t),0!==l||o?a.createElement(b,{model:e}):null)})),b=(0,i.observer)((function({model:e}){const{classes:t}=g(),{message:n}=e;return a.createElement("div",{className:t.loading},a.createElement(o.LoadingEllipses,{message:n}))})),h=m}}]);
+//# sourceMappingURL=2424.7cd6703f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2424.7cd6703f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2424.7cd6703f.chunk.js","mappings":"sMAWA,MAAMA,GAAOC,EAAAA,EAAAA,WAAS,UAAU,MAC9BC,IAIA,MAAMC,GAAOC,EAAAA,EAAAA,mBAAkBF,GACzBG,EAAQC,KAAKC,MAAMJ,EAAKK,cAAcC,cACtCC,EAASR,EAAMQ,OAEfC,GAAKC,EAAAA,EAAAA,cACRC,IACCX,EAAMY,OAAOD,EAAI,GAGnB,CAACX,EAAOG,EAAOK,IAIjB,OACEK,EAAAA,cAAA,UACE,cAAY,aACZF,IAAKF,EACLK,MAAO,CAAEX,QAAOK,SAAQO,SAAU,YAClCZ,MAAe,EAARA,EACPK,OAAiB,EAATA,GAGd,IAcA,GAZqCT,EAAAA,EAAAA,WAAS,UAAU,MACtDC,IAIA,OACEa,EAAAA,cAACG,EAAAA,EAAoB,CAAChB,MAAOA,GAC3Ba,EAAAA,cAACf,EAAI,CAACE,MAAOA,IAGnB,G,6HCnCA,MAAMiB,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,QAAS,CACPC,gBAAiBF,EAAMG,QAAQC,WAAWC,QAC1CC,gBAAiB,kEAAkEN,EAAMG,QAAQI,OAAOC,2BAA2BR,EAAMG,QAAQI,OAAOC,2BACxJZ,SAAU,WACVa,OAAQ,EACRpB,OAAQ,GACRL,MAAO,IACP0B,MAAO,EACPC,cAAe,OACfC,UAAW,cAITf,GAAuBjB,EAAAA,EAAAA,WAAS,UAAU,MAC9CC,EAAK,SACLgC,IAKA,MAAM,MAAEC,EAAK,eAAEC,GAAmBlC,EAClC,OAAOiC,EACLpB,EAAAA,cAACsB,EAAAA,GAAQ,CACPC,QAAS,GAAGH,IACZI,SAAS,QACTX,OACEb,EAAAA,cAACyB,EAAAA,EAAO,CAACC,MAAM,UACb1B,EAAAA,cAAC2B,EAAAA,EAAM,CACL,cAAY,gBACZC,QAASA,KACPzC,EAAM0C,QAAQ,GAEjB,aAMLR,EACFlC,EAAM2C,yBAEN9B,EAAAA,cAAC+B,EAAW,CAAC5C,MAAOA,GAAQgC,EAEhC,IAEMY,GAAc7C,EAAAA,EAAAA,WAAS,UAAU,MACrCC,EAAK,SACLgC,IAKA,MAAM,MAAEa,EAAK,QAAEzB,GAAYpB,EACrBC,GAAOC,EAAAA,EAAAA,mBAAkBF,GACzB8C,GAAQ9C,EAAM+C,mBAAqB,GAAK9C,EAAK+C,SACnD,OAGEnC,EAAAA,cAAA,OAAK,cAAa,SAASgC,KACzBhC,EAAAA,cAAA,OAAKC,MAAO,CAAEC,SAAU,WAAY+B,SAASd,GACnC,IAATc,GAAc1B,EAAUP,EAAAA,cAACoC,EAAU,CAACjD,MAAOA,IAAY,KAG9D,IAEMiD,GAAalD,EAAAA,EAAAA,WAAS,UAAU,MACpCC,IAIA,MAAM,QAAEkD,GAAYjC,KACd,QAAEmB,GAAYpC,EACpB,OACEa,EAAAA,cAAA,OAAKsC,UAAWD,EAAQ9B,SACtBP,EAAAA,cAACuC,EAAAA,gBAAe,CAAChB,QAASA,IAGhC,IAEA,G","sources":["../../../plugins/alignments/src/LinearReadArcsDisplay/components/ReactComponent.tsx","../../../plugins/alignments/src/shared/BaseDisplayComponent.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// local\nimport { LinearReadArcsDisplayModel } from '../model'\nimport BaseDisplayComponent from '../../shared/BaseDisplayComponent'\n\ntype LGV = LinearGenomeViewModel\n\nconst Arcs = observer(function ({\n  model,\n}: {\n  model: LinearReadArcsDisplayModel\n}) {\n  const view = getContainingView(model) as LGV\n  const width = Math.round(view.dynamicBlocks.totalWidthPx)\n  const height = model.height\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const cb = useCallback(\n    (ref: HTMLCanvasElement) => {\n      model.setRef(ref)\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, width, height],\n  )\n\n  // note: the position absolute below avoids scrollbar from appearing on track\n  return (\n    <canvas\n      data-testid=\"arc-canvas\"\n      ref={cb}\n      style={{ width, height, position: 'absolute' }}\n      width={width * 2}\n      height={height * 2}\n    />\n  )\n})\n\nconst LinearReadArcsReactComponent = observer(function ({\n  model,\n}: {\n  model: LinearReadArcsDisplayModel\n}) {\n  return (\n    <BaseDisplayComponent model={model}>\n      <Arcs model={model} />\n    </BaseDisplayComponent>\n  )\n})\n\nexport default LinearReadArcsReactComponent\n","import React from 'react'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport {\n  BlockMsg,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { Button, Tooltip } from '@mui/material'\n\n// local\nimport { LinearReadCloudDisplayModel } from '../LinearReadCloudDisplay/model'\nimport { LinearReadArcsDisplayModel } from '../LinearReadArcsDisplay/model'\n\nconst useStyles = makeStyles()(theme => ({\n  loading: {\n    backgroundColor: theme.palette.background.default,\n    backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${theme.palette.action.disabledBackground} 5px, ${theme.palette.action.disabledBackground} 10px)`,\n    position: 'absolute',\n    bottom: 0,\n    height: 50,\n    width: 300,\n    right: 0,\n    pointerEvents: 'none',\n    textAlign: 'center',\n  },\n}))\n\nconst BaseDisplayComponent = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n  children?: React.ReactNode\n}) {\n  const { error, regionTooLarge } = model\n  return error ? (\n    <BlockMsg\n      message={`${error}`}\n      severity=\"error\"\n      action={\n        <Tooltip title=\"Reload\">\n          <Button\n            data-testid=\"reload_button\"\n            onClick={() => {\n              model.reload()\n            }}\n          >\n            Reload\n          </Button>\n        </Tooltip>\n      }\n    />\n  ) : regionTooLarge ? (\n    model.regionCannotBeRendered()\n  ) : (\n    <DataDisplay model={model}>{children}</DataDisplay>\n  )\n})\n\nconst DataDisplay = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n  children?: React.ReactNode\n}) {\n  const { drawn, loading } = model\n  const view = getContainingView(model) as LinearGenomeViewModel\n  const left = (model.lastDrawnOffsetPx || 0) - view.offsetPx\n  return (\n    // this data-testid is located here because changing props on the canvas\n    // itself is very sensitive to triggering ref invalidation\n    <div data-testid={`drawn-${drawn}`}>\n      <div style={{ position: 'absolute', left }}>{children}</div>\n      {left !== 0 || loading ? <LoadingBar model={model} /> : null}\n    </div>\n  )\n})\n\nconst LoadingBar = observer(function ({\n  model,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n}) {\n  const { classes } = useStyles()\n  const { message } = model\n  return (\n    <div className={classes.loading}>\n      <LoadingEllipses message={message} />\n    </div>\n  )\n})\n\nexport default BaseDisplayComponent\n"],"names":["Arcs","observer","model","view","getContainingView","width","Math","round","dynamicBlocks","totalWidthPx","height","cb","useCallback","ref","setRef","React","style","position","BaseDisplayComponent","useStyles","makeStyles","theme","loading","backgroundColor","palette","background","default","backgroundImage","action","disabledBackground","bottom","right","pointerEvents","textAlign","children","error","regionTooLarge","BlockMsg","message","severity","Tooltip","title","Button","onClick","reload","regionCannotBeRendered","DataDisplay","drawn","left","lastDrawnOffsetPx","offsetPx","LoadingBar","classes","className","LoadingEllipses"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/246.9848bd41.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[246,8341,722,5484,7865,2627,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=246.9848bd41.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/246.9848bd41.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/246.9848bd41.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2493.20e8e76c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2493],{32493:(e,s,a)=>{a.r(s),a.d(s,{default:()=>b.A,getMenuItemUtilityClass:()=>l.Z,menuItemClasses:()=>l.A});var b=a(29629),l=a(49045)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2583.db78b17f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2583],{2583:(s,e,a)=>{a.r(e),a.d(e,{chipClasses:()=>l.A,default:()=>b.A,getChipUtilityClass:()=>l.f});var b=a(15779),l=a(32625)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/26.604133d9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[26],{70026:(e,s,a)=>{a.r(s),a.d(s,{default:()=>b.A,getMenuUtilityClass:()=>l.e,menuClasses:()=>l.A});var b=a(2051),l=a(78199)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2627.300bea43.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2627,8341,722,5484,7865,246,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=2627.300bea43.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2627.300bea43.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2627.300bea43.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2645.4b79a04c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2645],{52645:(e,t,r)=>{function s(e){return e.replaceAll(/%([0-9A-Fa-f]{2})/g,((e,t)=>String.fromCharCode(parseInt(t,16))))}function i(e){if(!e.length||"."===e)return{};const t={};return e.replace(/\r?\n$/,"").split(";").forEach((e=>{var r;const i=e.split("=",2);if(!(null===(r=i[1])||void 0===r?void 0:r.length))return;i[0]=i[0].trim();let n=t[i[0].trim()];n||(n=[],t[i[0]]=n),n.push(...i[1].split(",").map((e=>e.trim())).map(s))})),t}r.d(t,{g:()=>l});class n{constructor(e){this.seqCallback=e,this.currentSequence=void 0}addLine(e){const t=/^>\s*(\S+)\s*(.*)/.exec(e);t?(this._flush(),this.currentSequence={id:t[1],sequence:""},t[2]&&(this.currentSequence.description=t[2].trim())):this.currentSequence&&/\S/.test(e)&&(this.currentSequence.sequence+=e.replaceAll(/\s/g,""))}_flush(){this.currentSequence&&this.seqCallback(this.currentSequence)}finish(){this._flush()}}class o{constructor(e){this.fastaParser=void 0,this.eof=!1,this.lineNumber=0,this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},this._underConstructionOrphans={};const t=()=>{};this.featureCallback=e.featureCallback||t,this.endCallback=e.endCallback||t,this.commentCallback=e.commentCallback||t,this.errorCallback=e.errorCallback||t,this.directiveCallback=e.directiveCallback||t,this.sequenceCallback=e.sequenceCallback||t,this.disableDerivesFromReferences=e.disableDerivesFromReferences||!1,this.bufferSize=void 0===e.bufferSize?1e3:e.bufferSize}addLine(e){if(this.fastaParser)return void this.fastaParser.addLine(e);if(this.eof)return;if(this.lineNumber+=1,/^\s*[^#\s>]/.test(e))return void this._bufferLine(e);const t=/^\s*(#+)(.*)/.exec(e);if(t){const[,r]=t;let[,,s]=t;if(3===r.length)this._emitAllUnderConstructionFeatures();else if(2===r.length){const t=function(e){var t,r;const s=/^\s*##\s*(\S+)\s*(.*)/.exec(e);if(!s)return null;const[,i]=s;let[,,n]=s;const o={directive:i};if(n.length&&(n=n.replace(/\r?\n$/,""),o.value=n),"sequence-region"===i){const e=n.split(/\s+/,3);return{...o,seq_id:e[0],start:null===(t=e[1])||void 0===t?void 0:t.replaceAll(/\D/g,""),end:null===(r=e[2])||void 0===r?void 0:r.replaceAll(/\D/g,"")}}if("genome-build"===i){const[e,t]=n.split(/\s+/,2);return{...o,source:e,buildName:t}}return o}(e);t&&("FASTA"===t.directive?(this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new n(this.sequenceCallback)):this._emitItem(t))}else s=s.replace(/\s*/,""),this._emitItem({comment:s})}else if(/^\s*$/.test(e));else{if(!/^\s*>/.test(e)){const t=e.replaceAll(/\r?\n?$/g,"");throw new Error(`GFF3 parse error.  Cannot parse '${t}'.`)}this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new n(this.sequenceCallback),this.fastaParser.addLine(e)}}finish(){this._emitAllUnderConstructionFeatures(),this.fastaParser&&this.fastaParser.finish(),this.endCallback()}_emitItem(e){Array.isArray(e)?this.featureCallback(e):"directive"in e?this.directiveCallback(e):"comment"in e&&this.commentCallback(e)}_enforceBufferSizeLimit(e=0){const t=e=>{var r,s;e&&Array.isArray(e)&&(null===(s=null===(r=e[0].attributes)||void 0===r?void 0:r.ID)||void 0===s?void 0:s[0])&&(e[0].attributes.ID.forEach((e=>{delete this._underConstructionById[e],delete this._completedReferences[e]})),e.forEach((e=>{e.child_features&&e.child_features.forEach((e=>t(e))),e.derived_features&&e.derived_features.forEach((e=>t(e)))})))};for(;this._underConstructionTopLevel.length+e>this.bufferSize;){const e=this._underConstructionTopLevel.shift();e&&(this._emitItem(e),t(e))}}_emitAllUnderConstructionFeatures(){if(this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},Array.from(Object.values(this._underConstructionOrphans)).length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans).join(",")}`)}_bufferLine(e){var t,r,n;const o=function(e){const t=e.split("\t").map((e=>"."===e||""===e?null:e));return{seq_id:t[0]&&s(t[0]),source:t[1]&&s(t[1]),type:t[2]&&s(t[2]),start:null===t[3]?null:parseInt(t[3],10),end:null===t[4]?null:parseInt(t[4],10),score:null===t[5]?null:parseFloat(t[5]),strand:t[6],phase:t[7],attributes:null===t[8]?null:i(t[8])}}(e),l={...o,child_features:[],derived_features:[]},a=(null===(t=l.attributes)||void 0===t?void 0:t.ID)||[],c=(null===(r=l.attributes)||void 0===r?void 0:r.Parent)||[],u=this.disableDerivesFromReferences?[]:(null===(n=l.attributes)||void 0===n?void 0:n.Derives_from)||[];if(!a.length&&!c.length&&!u.length)return void this._emitItem([l]);let h;a.forEach((e=>{const t=this._underConstructionById[e];t?(t[t.length-1].type!==l.type&&this._parseError(`multi-line feature "${e}" has inconsistent types: "${l.type}", "${t[t.length-1].type}"`),t.push(l),h=t):(h=[l],this._enforceBufferSizeLimit(1),c.length||u.length||this._underConstructionTopLevel.push(h),this._underConstructionById[e]=h,this._resolveReferencesTo(h,e))})),this._resolveReferencesFrom(h||[l],{Parent:c,Derives_from:u},a)}_resolveReferencesTo(e,t){const r=this._underConstructionOrphans[t];r&&(e.forEach((e=>{e.child_features.push(...r.Parent)})),e.forEach((e=>{e.derived_features.push(...r.Derives_from)})),delete this._underConstructionOrphans[t])}_parseError(e){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${e}`)}_resolveReferencesFrom(e,t,r){function s(e,t,r){let s=e[t];s||(s={},e[t]=s);const i=s[r]||!1;return s[r]=!0,i}t.Parent.forEach((t=>{const i=this._underConstructionById[t];if(i){const n="child_features";r.filter((e=>s(this._completedReferences,e,`Parent,${t}`))).length||i.forEach((t=>{t[n].push(e)}))}else{let r=this._underConstructionOrphans[t];r||(r={Parent:[],Derives_from:[]},this._underConstructionOrphans[t]=r),r.Parent.push(e)}})),t.Derives_from.forEach((t=>{const i=this._underConstructionById[t];if(i){const n="derived_features";r.filter((e=>s(this._completedReferences,e,`Derives_from,${t}`))).length||i.forEach((t=>{t[n].push(e)}))}else{let r=this._underConstructionOrphans[t];r||(r={Parent:[],Derives_from:[]},this._underConstructionOrphans[t]=r),r.Derives_from.push(e)}}))}}function l(e){const t=[],r=new o({featureCallback:e=>t.push(e),disableDerivesFromReferences:!0,errorCallback:e=>{throw e}});for(const t of e.split(/\r?\n/))r.addLine(t);return r.finish(),t}}}]);
+//# sourceMappingURL=2645.4b79a04c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2645.4b79a04c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2645.4b79a04c.chunk.js","mappings":"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","sources":["../../../node_modules/gff-nostream/src/util.ts","../../../node_modules/gff-nostream/src/parse.ts","../../../node_modules/gff-nostream/src/api.ts"],"sourcesContent":["// Fast, low-level functions for parsing and formatting GFF3.\n// JavaScript port of Robert Buels's Bio::GFF3::LowLevel Perl module.\n\n/**\n * Unescape a string value used in a GFF3 attribute.\n *\n * @param stringVal - Escaped GFF3 string value\n * @returns An unescaped string value\n */\nexport function unescape(stringVal: string): string {\n  return stringVal.replaceAll(/%([0-9A-Fa-f]{2})/g, (_match, seq) =>\n    String.fromCharCode(parseInt(seq, 16)),\n  )\n}\n\nfunction _escape(regex: RegExp, s: string | number) {\n  return String(s).replace(regex, ch => {\n    const hex = ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0')\n    return `%${hex}`\n  })\n}\n\n/**\n * Escape a value for use in a GFF3 attribute value.\n *\n * @param rawVal - Raw GFF3 attribute value\n * @returns An escaped string value\n */\nexport function escape(rawVal: string | number): string {\n  return _escape(/[\\n;\\r\\t=%&,\\u0000-\\u001f\\u007f-\\u00ff]/g, rawVal)\n}\n\n/**\n * Escape a value for use in a GFF3 column value.\n *\n * @param rawVal - Raw GFF3 column value\n * @returns An escaped column value\n */\nexport function escapeColumn(rawVal: string | number): string {\n  return _escape(/[\\n\\r\\t%\\u0000-\\u001f\\u007f-\\u00ff]/g, rawVal)\n}\n\n/**\n * Parse the 9th column (attributes) of a GFF3 feature line.\n *\n * @param attrString - String of GFF3 9th column\n * @returns Parsed attributes\n */\nexport function parseAttributes(attrString: string): GFF3Attributes {\n  if (!attrString.length || attrString === '.') {\n    return {}\n  }\n\n  const attrs: GFF3Attributes = {}\n\n  attrString\n    .replace(/\\r?\\n$/, '')\n    .split(';')\n    .forEach(a => {\n      const nv = a.split('=', 2)\n      if (!nv[1]?.length) {\n        return\n      }\n\n      nv[0] = nv[0].trim()\n      let arec = attrs[nv[0].trim()]\n      if (!arec) {\n        arec = []\n        attrs[nv[0]] = arec\n      }\n\n      arec.push(\n        ...nv[1]\n          .split(',')\n          .map(s => s.trim())\n          .map(unescape),\n      )\n    })\n  return attrs\n}\n\n/**\n * Parse a GFF3 feature line\n *\n * @param line - GFF3 feature line\n * @returns The parsed feature\n */\nexport function parseFeature(line: string): GFF3FeatureLine {\n  // split the line into columns and replace '.' with null in each column\n  const f = line.split('\\t').map(a => (a === '.' || a === '' ? null : a))\n\n  // unescape only the ref, source, and type columns\n  const parsed: GFF3FeatureLine = {\n    seq_id: f[0] && unescape(f[0]),\n    source: f[1] && unescape(f[1]),\n    type: f[2] && unescape(f[2]),\n    start: f[3] === null ? null : parseInt(f[3], 10),\n    end: f[4] === null ? null : parseInt(f[4], 10),\n    score: f[5] === null ? null : parseFloat(f[5]),\n    strand: f[6],\n    phase: f[7],\n    attributes: f[8] === null ? null : parseAttributes(f[8]),\n  }\n  return parsed\n}\n\n/**\n * Parse a GFF3 directive line.\n *\n * @param line - GFF3 directive line\n * @returns The parsed directive\n */\nexport function parseDirective(\n  line: string,\n):\n  | GFF3Directive\n  | GFF3SequenceRegionDirective\n  | GFF3GenomeBuildDirective\n  | null {\n  const match = /^\\s*##\\s*(\\S+)\\s*(.*)/.exec(line)\n  if (!match) {\n    return null\n  }\n\n  const [, name] = match\n  let [, , contents] = match\n\n  const parsed: GFF3Directive = { directive: name }\n  if (contents.length) {\n    contents = contents.replace(/\\r?\\n$/, '')\n    parsed.value = contents\n  }\n\n  // do a little additional parsing for sequence-region and genome-build directives\n  if (name === 'sequence-region') {\n    const c = contents.split(/\\s+/, 3)\n    return {\n      ...parsed,\n      seq_id: c[0],\n      start: c[1]?.replaceAll(/\\D/g, ''),\n      end: c[2]?.replaceAll(/\\D/g, ''),\n    } as GFF3SequenceRegionDirective\n  } else if (name === 'genome-build') {\n    const [source, buildName] = contents.split(/\\s+/, 2)\n    return {\n      ...parsed,\n      source,\n      buildName,\n    } as GFF3GenomeBuildDirective\n  }\n\n  return parsed\n}\n\n/**\n * Format an attributes object into a string suitable for the 9th column of GFF3.\n *\n * @param attrs - Attributes\n * @returns GFF3 9th column string\n */\nexport function formatAttributes(attrs: GFF3Attributes): string {\n  const attrOrder: string[] = []\n  Object.entries(attrs).forEach(([tag, val]) => {\n    if (!val) {\n      return\n    }\n    let valstring\n    if (val.hasOwnProperty('toString')) {\n      valstring = escape(val.toString())\n      // } else if (Array.isArray(val.values)) {\n      //   valstring = val.values.map(escape).join(',')\n    } else if (Array.isArray(val)) {\n      valstring = val.map(escape).join(',')\n    } else {\n      valstring = escape(val)\n    }\n    attrOrder.push(`${escape(tag)}=${valstring}`)\n  })\n  return attrOrder.length ? attrOrder.join(';') : '.'\n}\n\nfunction _formatSingleFeature(\n  f: GFF3FeatureLine | GFF3FeatureLineWithRefs,\n  seenFeature: Record<string, boolean | undefined>,\n) {\n  const attrString =\n    f.attributes === null || f.attributes === undefined\n      ? '.'\n      : formatAttributes(f.attributes)\n\n  const fields = [\n    f.seq_id === null ? '.' : escapeColumn(f.seq_id),\n    f.source === null ? '.' : escapeColumn(f.source),\n    f.type === null ? '.' : escapeColumn(f.type),\n    f.start === null ? '.' : escapeColumn(f.start),\n    f.end === null ? '.' : escapeColumn(f.end),\n    f.score === null ? '.' : escapeColumn(f.score),\n    f.strand === null ? '.' : escapeColumn(f.strand),\n    f.phase === null ? '.' : escapeColumn(f.phase),\n    attrString,\n  ]\n\n  const formattedString = `${fields.join('\\t')}\\n`\n\n  // if we have already output this exact feature, skip it\n  if (seenFeature[formattedString]) {\n    return ''\n  }\n\n  seenFeature[formattedString] = true\n  return formattedString\n}\n\nfunction _formatFeature(\n  feature:\n    | GFF3FeatureLine\n    | GFF3FeatureLineWithRefs\n    | (GFF3FeatureLine | GFF3FeatureLineWithRefs)[],\n  seenFeature: Record<string, boolean | undefined>,\n): string {\n  if (Array.isArray(feature)) {\n    return feature.map(f => _formatFeature(f, seenFeature)).join('')\n  }\n\n  const strings = [_formatSingleFeature(feature, seenFeature)]\n  if (_isFeatureLineWithRefs(feature)) {\n    strings.push(\n      ...feature.child_features.map(f => _formatFeature(f, seenFeature)),\n      ...feature.derived_features.map(f => _formatFeature(f, seenFeature)),\n    )\n  }\n  return strings.join('')\n}\n\n/**\n * Format a feature object or array of feature objects into one or more lines of\n * GFF3.\n *\n * @param featureOrFeatures - A feature object or array of feature objects\n * @returns A string of one or more GFF3 lines\n */\nexport function formatFeature(\n  featureOrFeatures:\n    | GFF3FeatureLine\n    | GFF3FeatureLineWithRefs\n    | (GFF3FeatureLine | GFF3FeatureLineWithRefs)[],\n): string {\n  const seen = {}\n  return _formatFeature(featureOrFeatures, seen)\n}\n\n/**\n * Format a directive into a line of GFF3.\n *\n * @param directive - A directive object\n * @returns A directive line string\n */\nexport function formatDirective(directive: GFF3Directive): string {\n  let str = `##${directive.directive}`\n  if (directive.value) {\n    str += ` ${directive.value}`\n  }\n  str += '\\n'\n  return str\n}\n\n/**\n * Format a comment into a GFF3 comment.\n * Yes I know this is just adding a # and a newline.\n *\n * @param comment - A comment object\n * @returns A comment line string\n */\nexport function formatComment(comment: GFF3Comment): string {\n  return `# ${comment.comment}\\n`\n}\n\n/**\n * Format a sequence object as FASTA\n *\n * @param seq - A sequence object\n * @returns Formatted single FASTA sequence string\n */\nexport function formatSequence(seq: GFF3Sequence): string {\n  return `>${seq.id}${seq.description ? ` ${seq.description}` : ''}\\n${\n    seq.sequence\n  }\\n`\n}\n\n/**\n * Format a directive, comment, sequence, or feature, or array of such items,\n * into one or more lines of GFF3.\n *\n * @param itemOrItems - A comment, sequence, or feature, or array of such items\n * @returns A formatted string or array of strings\n */\nexport function formatItem(\n  itemOrItems:\n    | GFF3FeatureLineWithRefs\n    | GFF3Directive\n    | GFF3Comment\n    | GFF3Sequence\n    | (GFF3FeatureLineWithRefs | GFF3Directive | GFF3Comment | GFF3Sequence)[],\n): string | string[] {\n  function formatSingleItem(\n    item: GFF3FeatureLineWithRefs | GFF3Directive | GFF3Comment | GFF3Sequence,\n  ) {\n    if ('attributes' in item) {\n      return formatFeature(item)\n    }\n    if ('directive' in item) {\n      return formatDirective(item)\n    }\n    if ('sequence' in item) {\n      return formatSequence(item)\n    }\n    if ('comment' in item) {\n      return formatComment(item)\n    }\n    return '# (invalid item found during format)\\n'\n  }\n\n  if (Array.isArray(itemOrItems)) {\n    return itemOrItems.map(formatSingleItem)\n  }\n  return formatSingleItem(itemOrItems)\n}\n\n/** A record of GFF3 attribute identifiers and the values of those identifiers */\nexport type GFF3Attributes = Record<string, string[] | undefined>\n\n/** A representation of a single line of a GFF3 file */\nexport interface GFF3FeatureLine {\n  /** The ID of the landmark used to establish the coordinate system for the current feature */\n  seq_id: string | null\n  /** A free text qualifier intended to describe the algorithm or operating procedure that generated this feature */\n  source: string | null\n  /** The type of the feature */\n  type: string | null\n  /** The start coordinates of the feature */\n  start: number | null\n  /** The end coordinates of the feature */\n  end: number | null\n  /** The score of the feature */\n  score: number | null\n  /** The strand of the feature */\n  strand: string | null\n  /** For features of type \"CDS\", the phase indicates where the next codon begins relative to the 5' end of the current CDS feature */\n  phase: string | null\n  /** Feature attributes */\n  attributes: GFF3Attributes | null\n}\n\n/**\n * A GFF3 Feature line that includes references to other features defined in\n * their \"Parent\" or \"Derives_from\" attributes\n */\nexport interface GFF3FeatureLineWithRefs extends GFF3FeatureLine {\n  /** An array of child features */\n  child_features: GFF3Feature[]\n  /** An array of features derived from this feature */\n  derived_features: GFF3Feature[]\n}\n\nfunction _isFeatureLineWithRefs(\n  featureLine: GFF3FeatureLine | GFF3FeatureLineWithRefs,\n): featureLine is GFF3FeatureLineWithRefs {\n  return (\n    (featureLine as GFF3FeatureLineWithRefs).child_features !== undefined &&\n    (featureLine as GFF3FeatureLineWithRefs).derived_features !== undefined\n  )\n}\n\n/**\n * A GFF3 feature, which may include multiple individual feature lines\n */\nexport type GFF3Feature = GFF3FeatureLineWithRefs[]\n\n/** A GFF3 directive */\nexport interface GFF3Directive {\n  /** The name of the directive */\n  directive: string\n  /** The string value of the directive */\n  value?: string\n}\n\n/** A GFF3 sequence-region directive */\nexport interface GFF3SequenceRegionDirective extends GFF3Directive {\n  /** The string value of the directive */\n  value: string\n  /** The sequence ID parsed from the directive */\n  seq_id: string\n  /** The sequence start parsed from the directive */\n  start: string\n  /** The sequence end parsed from the directive */\n  end: string\n}\n\n/** A GFF3 genome-build directive */\nexport interface GFF3GenomeBuildDirective extends GFF3Directive {\n  /** The string value of the directive */\n  value: string\n  /** The genome build source parsed from the directive */\n  source: string\n  /** The genome build name parsed from the directive */\n  buildName: string\n}\n\n/** A GFF3 comment */\nexport interface GFF3Comment {\n  /** The text of the comment */\n  comment: string\n}\n\n/** A GFF3 FASTA single sequence */\nexport interface GFF3Sequence {\n  /** The ID of the sequence */\n  id: string\n  /** The description of the sequence */\n  description?: string\n  /** The sequence */\n  sequence: string\n}\n\nexport type GFF3Item = GFF3Feature | GFF3Directive | GFF3Comment | GFF3Sequence\n","import * as GFF3 from './util'\n\nconst containerAttributes = {\n  Parent: 'child_features' as const,\n  Derives_from: 'derived_features' as const,\n}\n\nexport class FASTAParser {\n  seqCallback: (sequence: GFF3.GFF3Sequence) => void\n  currentSequence:\n    | { id: string; sequence: string; description?: string }\n    | undefined\n\n  constructor(seqCallback: (sequence: GFF3.GFF3Sequence) => void) {\n    this.seqCallback = seqCallback\n    this.currentSequence = undefined\n  }\n\n  addLine(line: string): void {\n    const defMatch = /^>\\s*(\\S+)\\s*(.*)/.exec(line)\n    if (defMatch) {\n      this._flush()\n      this.currentSequence = { id: defMatch[1], sequence: '' }\n      if (defMatch[2]) {\n        this.currentSequence.description = defMatch[2].trim()\n      }\n    } else if (this.currentSequence && /\\S/.test(line)) {\n      this.currentSequence.sequence += line.replaceAll(/\\s/g, '')\n    }\n  }\n\n  private _flush() {\n    if (this.currentSequence) {\n      this.seqCallback(this.currentSequence)\n    }\n  }\n\n  finish(): void {\n    this._flush()\n  }\n}\n\ninterface ParserArgs {\n  featureCallback?(feature: GFF3.GFF3Feature): void\n  endCallback?(): void\n  commentCallback?(comment: GFF3.GFF3Comment): void\n  errorCallback?(error: string): void\n  directiveCallback?(directive: GFF3.GFF3Directive): void\n  sequenceCallback?(sequence: GFF3.GFF3Sequence): void\n  bufferSize?: number\n  disableDerivesFromReferences?: boolean\n}\n\ninterface References {\n  Parent: GFF3.GFF3Feature[]\n  Derives_from: GFF3.GFF3Feature[]\n}\n\nexport default class Parser {\n  featureCallback: (feature: GFF3.GFF3Feature) => void\n  endCallback: () => void\n  commentCallback: (comment: GFF3.GFF3Comment) => void\n  errorCallback: (error: string) => void\n  disableDerivesFromReferences: boolean\n  directiveCallback: (directive: GFF3.GFF3Directive) => void\n  sequenceCallback: (sequence: GFF3.GFF3Sequence) => void\n  bufferSize: number\n  fastaParser: FASTAParser | undefined = undefined\n  // if this is true, the parser ignores the\n  // rest of the lines in the file.  currently\n  // set when the file switches over to FASTA\n  eof = false\n  lineNumber = 0\n  // features that we have to keep on hand for now because they\n  // might be referenced by something else\n  private _underConstructionTopLevel: GFF3.GFF3Feature[] = []\n  // index of the above by ID\n  private _underConstructionById: Record<string, GFF3.GFF3Feature | undefined> =\n    {}\n  private _completedReferences: Record<\n    string,\n    Record<string, boolean | undefined> | undefined\n  > = {}\n  // features that reference something we have not seen yet\n  // structured as:\n  // {  'some_id' : {\n  //     'Parent' : [ orphans that have a Parent attr referencing it ],\n  //     'Derives_from' : [ orphans that have a Derives_from attr referencing it ],\n  //    }\n  // }\n  private _underConstructionOrphans: Record<string, References | undefined> = {}\n\n  constructor(args: ParserArgs) {\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    const nullFunc = () => {}\n\n    this.featureCallback = args.featureCallback || nullFunc\n    this.endCallback = args.endCallback || nullFunc\n    this.commentCallback = args.commentCallback || nullFunc\n    this.errorCallback = args.errorCallback || nullFunc\n    this.directiveCallback = args.directiveCallback || nullFunc\n    this.sequenceCallback = args.sequenceCallback || nullFunc\n    this.disableDerivesFromReferences =\n      args.disableDerivesFromReferences || false\n\n    // number of lines to buffer\n    this.bufferSize = args.bufferSize === undefined ? 1000 : args.bufferSize\n  }\n\n  addLine(line: string): void {\n    // if we have transitioned to a fasta section, just delegate to that parser\n    if (this.fastaParser) {\n      this.fastaParser.addLine(line)\n      return\n    }\n    if (this.eof) {\n      // otherwise, if we are done, ignore this line\n      return\n    }\n\n    this.lineNumber += 1\n\n    if (/^\\s*[^#\\s>]/.test(line)) {\n      // feature line, most common case\n      this._bufferLine(line)\n      return\n    }\n\n    const match = /^\\s*(#+)(.*)/.exec(line)\n    if (match) {\n      // directive or comment\n      const [, hashsigns] = match\n      let [, , contents] = match\n\n      if (hashsigns.length === 3) {\n        // sync directive, all forward-references are resolved.\n        this._emitAllUnderConstructionFeatures()\n      } else if (hashsigns.length === 2) {\n        const directive = GFF3.parseDirective(line)\n        if (directive) {\n          if (directive.directive === 'FASTA') {\n            this._emitAllUnderConstructionFeatures()\n            this.eof = true\n            this.fastaParser = new FASTAParser(this.sequenceCallback)\n          } else {\n            this._emitItem(directive)\n          }\n        }\n      } else {\n        contents = contents.replace(/\\s*/, '')\n        this._emitItem({ comment: contents })\n      }\n    } else if (/^\\s*$/.test(line)) {\n      // blank line, do nothing\n    } else if (/^\\s*>/.test(line)) {\n      // implicit beginning of a FASTA section\n      this._emitAllUnderConstructionFeatures()\n      this.eof = true\n      this.fastaParser = new FASTAParser(this.sequenceCallback)\n      this.fastaParser.addLine(line)\n    } else {\n      // it's a parse error\n      const errLine = line.replaceAll(/\\r?\\n?$/g, '')\n      throw new Error(`GFF3 parse error.  Cannot parse '${errLine}'.`)\n    }\n  }\n\n  finish(): void {\n    this._emitAllUnderConstructionFeatures()\n    if (this.fastaParser) {\n      this.fastaParser.finish()\n    }\n    this.endCallback()\n  }\n\n  private _emitItem(\n    i: GFF3.GFF3Feature | GFF3.GFF3Directive | GFF3.GFF3Comment,\n  ) {\n    if (Array.isArray(i)) {\n      this.featureCallback(i)\n    } else if ('directive' in i) {\n      this.directiveCallback(i)\n    } else if ('comment' in i) {\n      this.commentCallback(i)\n    }\n  }\n\n  private _enforceBufferSizeLimit(additionalItemCount = 0) {\n    const _unbufferItem = (item?: GFF3.GFF3Feature) => {\n      if (item && Array.isArray(item) && item[0].attributes?.ID?.[0]) {\n        const ids = item[0].attributes.ID\n        ids.forEach(id => {\n          delete this._underConstructionById[id]\n          delete this._completedReferences[id]\n        })\n        item.forEach(i => {\n          if (i.child_features) {\n            i.child_features.forEach(c => _unbufferItem(c))\n          }\n          if (i.derived_features) {\n            i.derived_features.forEach(d => _unbufferItem(d))\n          }\n        })\n      }\n    }\n\n    while (\n      this._underConstructionTopLevel.length + additionalItemCount >\n      this.bufferSize\n    ) {\n      const item = this._underConstructionTopLevel.shift()\n      if (item) {\n        this._emitItem(item)\n        _unbufferItem(item)\n      }\n    }\n  }\n\n  /**\n   * return all under-construction features, called when we know\n   * there will be no additional data to attach to them\n   */\n  private _emitAllUnderConstructionFeatures() {\n    this._underConstructionTopLevel.forEach(this._emitItem.bind(this))\n\n    this._underConstructionTopLevel = []\n    this._underConstructionById = {}\n    this._completedReferences = {}\n\n    // if we have any orphans hanging around still, this is a\n    // problem. die with a parse error\n    if (Array.from(Object.values(this._underConstructionOrphans)).length) {\n      throw new Error(\n        `some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(\n          this._underConstructionOrphans,\n        ).join(',')}`,\n      )\n    }\n  }\n\n  // do the right thing with a newly-parsed feature line\n  private _bufferLine(line: string) {\n    const rawFeatureLine = GFF3.parseFeature(line)\n    const featureLine: GFF3.GFF3FeatureLineWithRefs = {\n      ...rawFeatureLine,\n      child_features: [],\n      derived_features: [],\n    }\n    // featureLine._lineNumber = this.lineNumber //< debugging aid\n\n    // NOTE: a feature is an arrayref of one or more feature lines.\n    const ids = featureLine.attributes?.ID || []\n    const parents = featureLine.attributes?.Parent || []\n    const derives = this.disableDerivesFromReferences\n      ? []\n      : featureLine.attributes?.Derives_from || []\n\n    if (!ids.length && !parents.length && !derives.length) {\n      // if it has no IDs and does not refer to anything, we can just\n      // output it\n      this._emitItem([featureLine])\n      return\n    }\n\n    let feature: GFF3.GFF3Feature | undefined = undefined\n    ids.forEach(id => {\n      const existing = this._underConstructionById[id]\n      if (existing) {\n        // another location of the same feature\n        if (existing[existing.length - 1].type !== featureLine.type) {\n          this._parseError(\n            `multi-line feature \"${id}\" has inconsistent types: \"${\n              featureLine.type\n            }\", \"${existing[existing.length - 1].type}\"`,\n          )\n        }\n        existing.push(featureLine)\n        feature = existing\n      } else {\n        // haven't seen it yet, so buffer it so we can attach\n        // child features to it\n        feature = [featureLine]\n\n        this._enforceBufferSizeLimit(1)\n        if (!parents.length && !derives.length) {\n          this._underConstructionTopLevel.push(feature)\n        }\n        this._underConstructionById[id] = feature\n\n        // see if we have anything buffered that refers to it\n        this._resolveReferencesTo(feature, id)\n      }\n    })\n\n    // try to resolve all its references\n    this._resolveReferencesFrom(\n      feature || [featureLine],\n      { Parent: parents, Derives_from: derives },\n      ids,\n    )\n  }\n\n  private _resolveReferencesTo(feature: GFF3.GFF3Feature, id: string) {\n    const references = this._underConstructionOrphans[id]\n    //   references is of the form\n    //   {\n    //     'Parent' : [ orphans that have a Parent attr referencing this feature ],\n    //     'Derives_from' : [ orphans that have a Derives_from attr referencing this feature ],\n    //    }\n    if (!references) {\n      return\n    }\n    feature.forEach(loc => {\n      loc.child_features.push(...references.Parent)\n    })\n    feature.forEach(loc => {\n      loc.derived_features.push(...references.Derives_from)\n    })\n    delete this._underConstructionOrphans[id]\n  }\n\n  private _parseError(message: string) {\n    this.eof = true\n    this.errorCallback(`${this.lineNumber}: ${message}`)\n  }\n\n  private _resolveReferencesFrom(\n    feature: GFF3.GFF3Feature,\n    references: { Parent: string[]; Derives_from: string[] },\n    ids: string[],\n  ) {\n    // this is all a bit more awkward in javascript than it was in perl\n    function postSet(\n      obj: Record<string, Record<string, boolean | undefined> | undefined>,\n      slot1: string,\n      slot2: string,\n    ) {\n      let subObj = obj[slot1]\n      if (!subObj) {\n        subObj = {}\n        obj[slot1] = subObj\n      }\n      const returnVal = subObj[slot2] || false\n      subObj[slot2] = true\n      return returnVal\n    }\n\n    references.Parent.forEach(toId => {\n      const otherFeature = this._underConstructionById[toId]\n      if (otherFeature) {\n        const pname = containerAttributes.Parent\n        if (\n          !ids.filter(id =>\n            postSet(this._completedReferences, id, `Parent,${toId}`),\n          ).length\n        ) {\n          otherFeature.forEach(location => {\n            location[pname].push(feature)\n          })\n        }\n      } else {\n        let ref = this._underConstructionOrphans[toId]\n        if (!ref) {\n          ref = {\n            Parent: [],\n            Derives_from: [],\n          }\n          this._underConstructionOrphans[toId] = ref\n        }\n        ref.Parent.push(feature)\n      }\n    })\n\n    references.Derives_from.forEach(toId => {\n      const otherFeature = this._underConstructionById[toId]\n      if (otherFeature) {\n        const pname = containerAttributes.Derives_from\n        if (\n          !ids.filter(id =>\n            postSet(this._completedReferences, id, `Derives_from,${toId}`),\n          ).length\n        ) {\n          otherFeature.forEach(location => {\n            location[pname].push(feature)\n          })\n        }\n      } else {\n        let ref = this._underConstructionOrphans[toId]\n        if (!ref) {\n          ref = {\n            Parent: [],\n            Derives_from: [],\n          }\n          this._underConstructionOrphans[toId] = ref\n        }\n        ref.Derives_from.push(feature)\n      }\n    })\n  }\n}\n","import Parser from './parse'\nimport { GFF3Feature } from './util'\n\n/**\n * Synchronously parse a string containing GFF3 and return an array of the\n * parsed items.\n *\n * @param str - GFF3 string\n * @param inputOptions - Parsing options\n * @returns array of parsed features, directives, comments and/or sequences\n */\nexport function parseStringSync(str: string): GFF3Feature[] {\n  const items: GFF3Feature[] = []\n  const parser = new Parser({\n    featureCallback: arg => items.push(arg),\n    disableDerivesFromReferences: true,\n    errorCallback: err => {\n      throw err\n    },\n  })\n\n  for (const line of str.split(/\\r?\\n/)) {\n    parser.addLine(line)\n  }\n  parser.finish()\n\n  return items\n}\n\nexport {\n  type GFF3FeatureLine,\n  type GFF3Comment,\n  type GFF3FeatureLineWithRefs,\n  type GFF3Directive,\n  type GFF3Sequence,\n  type GFF3Feature,\n  type GFF3Item,\n} from './util'\n"],"names":["stringVal","replaceAll","_match","seq","String","fromCharCode","parseInt","parseAttributes","attrString","length","attrs","replace","split","forEach","a","nv","trim","arec","push","map","s","FASTAParser","constructor","seqCallback","this","currentSequence","undefined","addLine","line","defMatch","exec","_flush","id","sequence","description","test","finish","Parser","args","fastaParser","eof","lineNumber","_underConstructionTopLevel","_underConstructionById","_completedReferences","_underConstructionOrphans","nullFunc","featureCallback","endCallback","commentCallback","errorCallback","directiveCallback","sequenceCallback","disableDerivesFromReferences","bufferSize","_bufferLine","match","hashsigns","contents","_emitAllUnderConstructionFeatures","directive","name","parsed","value","c","seq_id","start","end","source","buildName","_emitItem","comment","errLine","Error","i","Array","isArray","_enforceBufferSizeLimit","additionalItemCount","_unbufferItem","item","attributes","ID","child_features","derived_features","d","shift","bind","from","Object","values","keys","join","rawFeatureLine","f","type","score","parseFloat","strand","phase","featureLine","ids","parents","Parent","derives","Derives_from","feature","existing","_parseError","_resolveReferencesTo","_resolveReferencesFrom","references","loc","message","postSet","obj","slot1","slot2","subObj","returnVal","toId","otherFeature","pname","filter","location","ref","parseStringSync","str","items","parser","arg","err"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/266.94eb2bf9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[266],{45331:(e,t,s)=>{s.d(t,{Ay:()=>S});var o=s(7552),n=s(93878),r=s(70799),i=s(23879),a=s(51148),d=s(60129),l=s(4785),c=s(3755),u=s(51584),p=s(57406),g=s(74823),m=s(2451),A=s(77999),b=s(69500);const v=(0,a.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:s}=e;return[t.root,s.dense&&t.dense,"flex-start"===s.alignItems&&t.alignItemsFlexStart,s.divider&&t.divider,!s.disableGutters&&t.gutters,!s.disablePadding&&t.padding,s.hasSecondaryAction&&t.secondaryAction]}})((0,d.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${m.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),y=(0,a.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),S=o.forwardRef((function(e,t){const s=(0,l.b)({props:e,name:"MuiListItem"}),{alignItems:a="center",children:d,className:m,component:S,components:h={},componentsProps:I={},ContainerComponent:w="li",ContainerProps:{className:x,...f}={},dense:C=!1,disableGutters:L=!1,disablePadding:G=!1,divider:P=!1,secondaryAction:R,slotProps:M={},slots:j={},...k}=s,N=o.useContext(p.A),_=o.useMemo((()=>({dense:C||N.dense||!1,alignItems:a,disableGutters:L})),[a,N.dense,C,L]),B=o.useRef(null),F=o.Children.toArray(d),T=F.length&&(0,c.A)(F[F.length-1],["ListItemSecondaryAction"]),D={...s,alignItems:a,dense:_.dense,disableGutters:L,disablePadding:G,divider:P,hasSecondaryAction:T},Y=(e=>{const{alignItems:t,classes:s,dense:o,disableGutters:n,disablePadding:i,divider:a,hasSecondaryAction:d}=e,l={root:["root",o&&"dense",!n&&"gutters",!i&&"padding",a&&"divider","flex-start"===t&&"alignItemsFlexStart",d&&"secondaryAction"],container:["container"]};return(0,r.A)(l,g._,s)})(D),$=(0,u.A)(B,t),z=j.root||h.Root||v,U=M.root||I.root||{},V={className:(0,n.A)(Y.root,U.className,m),...k};let q=S||"li";return T?(q=V.component||S?q:"div","li"===w&&("li"===q?q="div":"li"===V.component&&(V.component="div")),(0,b.jsx)(p.A.Provider,{value:_,children:(0,b.jsxs)(y,{as:w,className:(0,n.A)(Y.container,x),ref:$,ownerState:D,...f,children:[(0,b.jsx)(z,{...U,...!(0,i.A)(z)&&{as:q,ownerState:{...D,...U.ownerState}},...V,children:F}),F.pop()]})})):(0,b.jsx)(p.A.Provider,{value:_,children:(0,b.jsxs)(z,{...U,as:q,ref:$,...!(0,i.A)(z)&&{ownerState:{...D,...U.ownerState}},...V,children:[F,R&&(0,b.jsx)(A.A,{children:R})]})})}))},266:(e,t,s)=>{s.r(t),s.d(t,{default:()=>o.Ay,getListItemUtilityClass:()=>n._,listItemClasses:()=>n.A});var o=s(45331),n=s(74823)},74823:(e,t,s)=>{s.d(t,{A:()=>i,_:()=>r});var o=s(33761),n=s(85693);function r(e){return(0,n.Ay)("MuiListItem",e)}const i=(0,o.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},2451:(e,t,s)=>{s.d(t,{A:()=>i,Y:()=>r});var o=s(33761),n=s(85693);function r(e){return(0,n.Ay)("MuiListItemButton",e)}const i=(0,o.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,s)=>{s.d(t,{A:()=>g});var o=s(7552),n=s(93878),r=s(70799),i=s(51148),a=s(4785),d=s(57406),l=s(87739),c=s(69500);const u=(0,i.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:s}=e;return[t.root,s.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),p=o.forwardRef((function(e,t){const s=(0,a.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:i,...p}=s,g=o.useContext(d.A),m={...s,disableGutters:g.disableGutters},A=(e=>{const{disableGutters:t,classes:s}=e,o={root:["root",t&&"disableGutters"]};return(0,r.A)(o,l.g,s)})(m);return(0,c.jsx)(u,{className:(0,n.A)(A.root,i),ownerState:m,ref:t,...p})}));p.muiName="ListItemSecondaryAction";const g=p},87739:(e,t,s)=>{s.d(t,{A:()=>i,g:()=>r});var o=s(33761),n=s(85693);function r(e){return(0,n.Ay)("MuiListItemSecondaryAction",e)}const i=(0,o.A)("MuiListItemSecondaryAction",["root","disableGutters"])}}]);
+//# sourceMappingURL=266.94eb2bf9.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/266.94eb2bf9.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/266.94eb2bf9.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;"],"names":["ListItemRoot","name","slot","overridesResolver","props","styles","ownerState","root","dense","alignItems","alignItemsFlexStart","divider","disableGutters","gutters","disablePadding","padding","hasSecondaryAction","secondaryAction","theme","display","justifyContent","position","textDecoration","width","boxSizing","textAlign","variants","style","paddingTop","paddingBottom","paddingLeft","paddingRight","borderBottom","vars","palette","backgroundClip","button","transition","transitions","create","duration","shortest","backgroundColor","action","hover","ListItemContainer","container","inProps","ref","children","childrenProp","className","component","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","slots","other","context","childContext","listItemRef","toArray","length","classes","useUtilityClasses","handleRef","Root","rootProps","componentProps","Component","Provider","value","as","pop","getListItemUtilityClass","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","transform","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2697.4ab94d07.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2697],{32697:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var o=a(7552),n=a(68446),r=a(29499),l=a(36715),c=a(1343),s=a(58507),u=a(5401),i=a(49823);const m=(0,n.observer)((function(e){const{model:t,handleClose:a}=e,[n,m]=(0,o.useState)(""),d=/^[A-Za-z][A-Za-z0-9]$/.exec(n);return o.createElement(i.Dialog,{open:!0,onClose:a,title:"Sort by tag"},o.createElement(r.A,null,o.createElement(l.A,null,"Set the tag to sort by"),o.createElement(l.A,{color:"textSecondary"},"Examples: HP for haplotype, RG for read group, etc."),o.createElement(c.A,{value:n,onChange:e=>{m(e.target.value)},placeholder:"Enter tag name",inputProps:{maxLength:2,"data-testid":"sort-tag-name-input"},error:2===n.length&&!d,helperText:2!==n.length||d?"":"Not a valid tag",autoComplete:"off","data-testid":"sort-tag-name"}),o.createElement(s.A,null,o.createElement(u.A,{variant:"contained",color:"primary",type:"submit",autoFocus:!0,onClick:()=>{t.setSortedBy("tag",n),a()}},"Submit"),o.createElement(u.A,{variant:"contained",color:"secondary",onClick:()=>{a()}},"Cancel"))))}))}}]);
+//# sourceMappingURL=2697.4ab94d07.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2697.4ab94d07.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2697.4ab94d07.chunk.js","mappings":"gPAWA,MA2DA,GA3DwBA,EAAAA,EAAAA,WAAS,SAAUC,GAMzC,MAAM,MAAEC,EAAK,YAAEC,GAAgBF,GACxBG,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,IACzBC,EAAW,wBAAwBC,KAAKJ,GAC9C,OACEK,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAAST,EAAaU,MAAM,eACvCJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAU,KAAC,0BACZN,EAAAA,cAACM,EAAAA,EAAU,CAACC,MAAM,iBAAgB,uDAGlCP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAOd,EACPe,SAAUC,IACRf,EAAOe,EAAMC,OAAOH,MAAM,EAE5BI,YAAY,iBACZC,WAAY,CACVC,UAAW,EACX,cAAe,uBAEjBC,MAAsB,IAAfrB,EAAIsB,SAAiBnB,EAC5BoB,WAA2B,IAAfvB,EAAIsB,QAAiBnB,EAA+B,GAApB,kBAC5CqB,aAAa,MACb,cAAY,kBAEdnB,EAAAA,cAACoB,EAAAA,EAAa,KACZpB,EAAAA,cAACqB,EAAAA,EAAM,CACLC,QAAQ,YACRf,MAAM,UACNgB,KAAK,SACLC,WAAS,EACTC,QAASA,KACPhC,EAAMiC,YAAY,MAAO/B,GACzBD,GAAa,GAEhB,UAGDM,EAAAA,cAACqB,EAAAA,EAAM,CACLC,QAAQ,YACRf,MAAM,YACNkB,QAASA,KACP/B,GAAa,GAEhB,YAOX,G","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/SortByTagDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nconst SortByTagDialog = observer(function (props: {\n  model: {\n    setSortedBy: (arg: string, arg2: string) => void\n  }\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const [tag, setTag] = useState('')\n  const validTag = /^[A-Za-z][A-Za-z0-9]$/.exec(tag)\n  return (\n    <Dialog open onClose={handleClose} title=\"Sort by tag\">\n      <DialogContent>\n        <Typography>Set the tag to sort by</Typography>\n        <Typography color=\"textSecondary\">\n          Examples: HP for haplotype, RG for read group, etc.\n        </Typography>\n        <TextField\n          value={tag}\n          onChange={event => {\n            setTag(event.target.value)\n          }}\n          placeholder=\"Enter tag name\"\n          inputProps={{\n            maxLength: 2,\n            'data-testid': 'sort-tag-name-input',\n          }}\n          error={tag.length === 2 && !validTag}\n          helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n          autoComplete=\"off\"\n          data-testid=\"sort-tag-name\"\n        />\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            type=\"submit\"\n            autoFocus\n            onClick={() => {\n              model.setSortedBy('tag', tag)\n              handleClose()\n            }}\n          >\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default SortByTagDialog\n"],"names":["observer","props","model","handleClose","tag","setTag","useState","validTag","exec","React","Dialog","open","onClose","title","DialogContent","Typography","color","TextField","value","onChange","event","target","placeholder","inputProps","maxLength","error","length","helperText","autoComplete","DialogActions","Button","variant","type","autoFocus","onClick","setSortedBy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2729.9660c29b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2729],{82729:(e,l,s)=>{s.r(l),s.d(l,{default:()=>a.A,dialogTitleClasses:()=>i.A,getDialogTitleUtilityClass:()=>i.t});var a=s(43163),i=s(99791)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2775.e25b4dd4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2775],{25156:(s,o,e)=>{e.r(o),e.d(o,{default:()=>l.A,formControlClasses:()=>t.A,getFormControlUtilityClasses:()=>t.c,useFormControl:()=>r.A});var l=e(48171),r=e(33960),t=e(92319)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2777.56f29f41.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2777],{88215:(e,t,n)=>{n.d(t,{x:()=>a});var r=n(7552),c=n(29527),u=n(89887),o=n(99305),s=n(28325),i=n(69500);function l(e){return e.substring(2).toLowerCase()}function a(e){const{children:t,disableReactTree:n=!1,mouseEvent:a="onClick",onClickAway:d,touchEvent:f="onTouchEnd"}=e,m=r.useRef(!1),v=r.useRef(null),E=r.useRef(!1),h=r.useRef(!1);r.useEffect((()=>(setTimeout((()=>{E.current=!0}),0),()=>{E.current=!1})),[]);const b=(0,c.A)((0,s.A)(t),v),w=(0,u.A)((e=>{const t=h.current;h.current=!1;const r=(0,o.A)(v.current);if(!E.current||!v.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth<e.clientX||t.documentElement.clientHeight<e.clientY}(e,r))return;if(m.current)return void(m.current=!1);let c;c=e.composedPath?e.composedPath().includes(v.current):!r.documentElement.contains(e.target)||v.current.contains(e.target),c||!n&&t||d(e)})),g=e=>n=>{h.current=!0;const r=t.props[e];r&&r(n)},p={ref:b};return!1!==f&&(p[f]=g(f)),r.useEffect((()=>{if(!1!==f){const e=l(f),t=(0,o.A)(v.current),n=()=>{m.current=!0};return t.addEventListener(e,w),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,w),t.removeEventListener("touchmove",n)}}}),[w,f]),!1!==a&&(p[a]=g(a)),r.useEffect((()=>{if(!1!==a){const e=l(a),t=(0,o.A)(v.current);return t.addEventListener(e,w),()=>{t.removeEventListener(e,w)}}}),[w,a]),(0,i.jsx)(r.Fragment,{children:r.cloneElement(t,p)})}},42777:(e,t,n)=>{n.r(t),n.d(t,{default:()=>r.x});var r=n(88215)}}]);
+//# sourceMappingURL=2777.56f29f41.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2777.56f29f41.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2777.56f29f41.chunk.js","mappings":"+MASA,SAASA,EAAoBC,GAC3B,OAAOA,EAAUC,UAAU,GAAGC,aAChC,CAiBA,SAASC,EAAkBC,GACzB,MAAM,SACJC,EAAQ,iBACRC,GAAmB,EAAK,WACxBC,EAAa,UAAS,YACtBC,EAAW,WACXC,EAAa,cACXL,EACEM,EAAW,UAAa,GACxBC,EAAU,SAAa,MACvBC,EAAe,UAAa,GAC5BC,EAAoB,UAAa,GACvC,aAAgB,KAGdC,YAAW,KACTF,EAAaG,SAAU,CAAI,GAC1B,GACI,KACLH,EAAaG,SAAU,CAAK,IAE7B,IACH,MAAMC,GAAY,QAAW,OAAgBX,GAAWM,GAQlDM,GAAkB,QAAiBC,IAGvC,MAAMC,EAAkBN,EAAkBE,QAC1CF,EAAkBE,SAAU,EAC5B,MAAMK,GAAM,OAAcT,EAAQI,SAKlC,IAAKH,EAAaG,UAAYJ,EAAQI,SAAW,YAAaG,GAxDlE,SAA8BA,EAAOE,GACnC,OAAOA,EAAIC,gBAAgBC,YAAcJ,EAAMK,SAAWH,EAAIC,gBAAgBG,aAAeN,EAAMO,OACrG,CAsD2EC,CAAqBR,EAAOE,GACjG,OAIF,GAAIV,EAASK,QAEX,YADAL,EAASK,SAAU,GAGrB,IAAIY,EAIFA,EADET,EAAMU,aACIV,EAAMU,eAAeC,SAASlB,EAAQI,UAErCK,EAAIC,gBAAgBS,SAEjCZ,EAAMa,SAAWpB,EAAQI,QAAQe,SAEjCZ,EAAMa,QAEHJ,IAAcrB,GAAqBa,GACtCX,EAAYU,EACd,IAIIc,EAAwBC,GAAef,IAC3CL,EAAkBE,SAAU,EAC5B,MAAMmB,EAAuB7B,EAASD,MAAM6B,GACxCC,GACFA,EAAqBhB,EACvB,EAEIiB,EAAgB,CACpBC,IAAKpB,GAmCP,OAjCmB,IAAfP,IACF0B,EAAc1B,GAAcuB,EAAsBvB,IAEpD,aAAgB,KACd,IAAmB,IAAfA,EAAsB,CACxB,MAAM4B,EAAmBtC,EAAoBU,GACvCW,GAAM,OAAcT,EAAQI,SAC5BuB,EAAkB,KACtB5B,EAASK,SAAU,CAAI,EAIzB,OAFAK,EAAImB,iBAAiBF,EAAkBpB,GACvCG,EAAImB,iBAAiB,YAAaD,GAC3B,KACLlB,EAAIoB,oBAAoBH,EAAkBpB,GAC1CG,EAAIoB,oBAAoB,YAAaF,EAAgB,CAEzD,CACgB,GACf,CAACrB,EAAiBR,KACF,IAAfF,IACF4B,EAAc5B,GAAcyB,EAAsBzB,IAEpD,aAAgB,KACd,IAAmB,IAAfA,EAAsB,CACxB,MAAMkC,EAAmB1C,EAAoBQ,GACvCa,GAAM,OAAcT,EAAQI,SAElC,OADAK,EAAImB,iBAAiBE,EAAkBxB,GAChC,KACLG,EAAIoB,oBAAoBC,EAAkBxB,EAAgB,CAE9D,CACgB,GACf,CAACA,EAAiBV,KACD,SAAK,WAAgB,CACvCF,SAAuB,eAAmBA,EAAU8B,IAExD,C","sources":["../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };"],"names":["mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","props","children","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","ref","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2820.3c0e09be.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2820],{12820:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var s=n(99834),o=n(7706),i=n(99546),a=n(35904);const c="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;class l extends a.default{async setupPre(e){const t=(0,s.openLocation)(this.getConf("deltaLocation"),this.pluginManager),n=await t.readFile(e);return function(e){let t="",n="",s=0,o=0,i=0,a=0,l=0,r=0,u=[],h=0,f=0,p=!1;const d=[],g=new RegExp(/^>(\S+)\s+(\S+)\s+(\d+)\s+(\d+)/);let w=0,b=0;for(;w<e.length;){const x=e.indexOf("\n",w);if(-1===x)break;const k=e.subarray(w,x),m=(c?.decode(k)||k.toString()).trim();if(w=x+1,b++,m){const e=g.exec(m);if(null!==e){t=e[1],n=e[2],p=!0;continue}if(!p)continue;const c=m.split(" ");if(7===c.length){const e=+c[0],t=+c[1],n=+c[2],p=+c[3];l=e<t&&n<p||e>t&&n>p?1:-1,i=+(e<t?e:t)-1,a=+(t>e?t:e),s=+(n<p?n:p)-1,o=+(p>n?p:n),h=f=0,r=+c[4],u=[]}else if(1===c.length){const e=+c[0];if(0===e){let e=0;const c=[];if(a-i-h!=o-s-f)throw new Error(`inconsistent alignment on line ${b}`);u.push(a-i-h<<4);for(const t of u){const n=t>>4;e+=n,c.push(n+"MID".charAt(15&u[b]))}d.push({qname:n,qstart:s,qend:o,tname:t,tstart:i,tend:a,strand:l,extra:{numMatches:e-r,blockLen:e,mappingQual:0,NM:r,cg:c.join("")}})}else if(e>0){const t=e-1;h+=t+1,f+=t,t>0&&u.push(t<<4),u.length>0&&2==(15&u[u.length-1])?u[u.length-1]+=16:u.push(18)}else{const t=-e-1;h+=t,f+=t+1,t>0&&u.push(t<<4),u.length>0&&1==(15&u[u.length-1])?u[u.length-1]+=16:u.push(17)}}}}return d}((0,i.isGzip)(n)?await(0,o.unzip)(n):n)}}}}]);
+//# sourceMappingURL=2820.3c0e09be.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2820.3c0e09be.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2820.3c0e09be.chunk.js","mappings":"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","sources":["../../../plugins/comparative-adapters/src/DeltaAdapter/util.ts","../../../plugins/comparative-adapters/src/DeltaAdapter/DeltaAdapter.ts"],"sourcesContent":["import type { Buffer } from 'buffer'\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\n/* paf2delta from paftools.js in the minimap2 repository, license reproduced below\n *\n * The MIT License\n *\n * Copyright (c) 2018-     Dana-Farber Cancer Institute\n *               2017-2018 Broad Institute, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport function paf_delta2paf(buffer: Buffer) {\n  let rname = ''\n  let qname = ''\n  let qs = 0\n  let qe = 0\n  let rs = 0\n  let re = 0\n  let strand = 0\n  let NM = 0\n  let cigar = [] as number[]\n  let x = 0\n  let y = 0\n  let seen_gt = false\n\n  const records = []\n  const regex = new RegExp(/^>(\\S+)\\s+(\\S+)\\s+(\\d+)\\s+(\\d+)/)\n\n  let blockStart = 0\n  let i = 0\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const line = (decoder?.decode(b) || b.toString()).trim()\n    blockStart = n + 1\n    i++\n    if (line) {\n      const m = regex.exec(line)\n      if (m !== null) {\n        rname = m[1]!\n        qname = m[2]!\n        seen_gt = true\n        continue\n      }\n      if (!seen_gt) {\n        continue\n      }\n      const t = line.split(' ')\n      if (t.length === 7) {\n        const t0 = +t[0]!\n        const t1 = +t[1]!\n        const t2 = +t[2]!\n        const t3 = +t[3]!\n        const t4 = +t[4]!\n        strand = (t0 < t1 && t2 < t3) || (t0 > t1 && t2 > t3) ? 1 : -1\n        rs = +(t0 < t1 ? t0 : t1) - 1\n        re = +(t1 > t0 ? t1 : t0)\n        qs = +(t2 < t3 ? t2 : t3) - 1\n        qe = +(t3 > t2 ? t3 : t2)\n        x = y = 0\n        NM = t4\n        cigar = []\n      } else if (t.length === 1) {\n        const d = +t[0]!\n        if (d === 0) {\n          let blen = 0\n          const cigar_str = []\n\n          if (re - rs - x !== qe - qs - y) {\n            throw new Error(`inconsistent alignment on line ${i}`)\n          }\n          cigar.push((re - rs - x) << 4)\n          for (const entry of cigar) {\n            const rlen = entry >> 4\n            blen += rlen\n            cigar_str.push(rlen + 'MID'.charAt(cigar[i]! & 0xf))\n          }\n\n          records.push({\n            qname,\n            qstart: qs,\n            qend: qe,\n            tname: rname,\n            tstart: rs,\n            tend: re,\n            strand,\n            extra: {\n              numMatches: blen - NM,\n              blockLen: blen,\n              mappingQual: 0,\n              NM,\n              cg: cigar_str.join(''),\n            },\n          })\n        } else if (d > 0) {\n          const l = d - 1\n          x += l + 1\n          y += l\n          if (l > 0) {\n            cigar.push(l << 4)\n          }\n\n          if (cigar.length > 0 && (cigar[cigar.length - 1]! & 0xf) === 2) {\n            cigar[cigar.length - 1]! += 1 << 4\n          } else {\n            cigar.push((1 << 4) | 2)\n          } // deletion\n        } else {\n          const l = -d - 1\n          x += l\n          y += l + 1\n          if (l > 0) {\n            cigar.push(l << 4)\n          }\n\n          if (cigar.length > 0 && (cigar[cigar.length - 1]! & 0xf) === 1) {\n            cigar[cigar.length - 1]! += 1 << 4\n          } else {\n            cigar.push((1 << 4) | 1)\n          } // insertion\n        }\n      }\n    }\n  }\n  return records\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n// locals\nimport PAFAdapter from '../PAFAdapter/PAFAdapter'\nimport { paf_delta2paf } from './util'\n\nexport default class DeltaAdapter extends PAFAdapter {\n  async setupPre(opts?: BaseOptions) {\n    const loc = openLocation(this.getConf('deltaLocation'), this.pluginManager)\n    const buffer = (await loc.readFile(opts)) as Buffer\n    const buf = isGzip(buffer) ? await unzip(buffer) : buffer\n    return paf_delta2paf(buf)\n  }\n}\n"],"names":["decoder","TextDecoder","undefined","DeltaAdapter","PAFAdapter","setupPre","opts","loc","openLocation","this","getConf","pluginManager","buffer","readFile","rname","qname","qs","qe","rs","re","strand","NM","cigar","x","y","seen_gt","records","regex","RegExp","blockStart","i","length","n","indexOf","b","subarray","line","decode","toString","trim","m","exec","t","split","t0","t1","t2","t3","d","blen","cigar_str","Error","push","entry","rlen","charAt","qstart","qend","tname","tstart","tend","extra","numMatches","blockLen","mappingQual","cg","join","l","paf_delta2paf","isGzip","unzip"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2847.009c96ee.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 2847.009c96ee.chunk.js.LICENSE.txt */
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2847],{82847:t=>{t.exports=function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=32)}([function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";var n=r(6),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=f;var o=r(5);o.inherits=r(2);var s=r(23),a=r(14);o.inherits(f,s);for(var u=i(a.prototype),c=0;c<u.length;c++){var l=u[c];f.prototype[l]||(f.prototype[l]=a.prototype[l])}function f(t){if(!(this instanceof f))return new f(t);s.call(this,t),a.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",h)}function h(){this.allowHalfOpen||this._writableState.ended||n.nextTick(p,this)}function p(t){t.end()}Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),f.prototype._destroy=function(t,e){this.push(null),this.end(),n.nextTick(e,t)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e,r){"use strict";(function(t){var n=r(38),i=r(39),o=r(40);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()<e)throw new RangeError("Invalid typed array length");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,r){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,r);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return f(this,t)}return c(this,t,e,r)}function c(t,e,r,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError("'offset' is out of bounds");if(e.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n),u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=h(t,e),t}(t,e,r,n):"string"==typeof e?function(t,e,r){if("string"==typeof r&&""!==r||(r="utf8"),!u.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=0|d(e,r),i=(t=a(t,n)).write(e,r);return i!==n&&(t=t.slice(0,i)),t}(t,e,r):function(t,e){if(u.isBuffer(e)){var r=0|p(e.length);return 0===(t=a(t,r)).length||e.copy(t,0,0,r),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||function(t){return t!=t}(e.length)?a(t,0):h(t,e);if("Buffer"===e.type&&o(e.data))return h(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function f(t,e){if(l(e),t=a(t,e<0?0:0|p(e)),!u.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function h(t,e){var r=e.length<0?0:0|p(e.length);t=a(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function p(t){if(t>=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function _(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function v(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===u)return l*s}else-1!==l&&(o-=o-l),l=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;h<u;h++)if(c(t,o+h)!==c(e,h)){f=!1;break}if(f)return o}return-1}function m(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(isNaN(a))return s;t[r+s]=a}return s}function g(t,e,r,n){return V(N(e,t.length-r),t,r,n)}function b(t,e,r,n){return V(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function w(t,e,r,n){return b(t,e,r,n)}function E(t,e,r,n){return V(H(e),t,r,n)}function C(t,e,r,n){return V(function(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)n=(r=t.charCodeAt(s))>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function j(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],l=null,f=c>239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);for(var r="",n=0;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=S));return r}(n)}e.Buffer=u,e.SlowBuffer=function(t){return+t!=t&&(t=0),u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=s(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,r){return c(null,t,e,r)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,r){return function(t,e,r,n){return l(e),e<=0?a(t,e):void 0!==r?"string"==typeof n?a(t,e).fill(r,n):a(t,e).fill(r):a(t,e)}(null,t,e,r)},u.allocUnsafe=function(t){return f(null,t)},u.allocUnsafeSlow=function(t){return f(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,e){if(!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i<o;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(t,e){if(!o(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=u.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var s=t[r];if(!u.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,i),i+=s.length}return n},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)_(this,e,e+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)_(this,e,e+3),_(this,e+1,e+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)_(this,e,e+7),_(this,e+1,e+6),_(this,e+2,e+5),_(this,e+3,e+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?j(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return j(this,e,r);case"ascii":return k(this,e,r);case"latin1":case"binary":return R(this,e,r);case"base64":return x(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),"<Buffer "+t+">"},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;f<a;++f)if(c[f]!==l[f]){o=c[f],s=l[f];break}return o<s?-1:s<o?1:0},u.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},u.prototype.indexOf=function(t,e,r){return v(this,t,e,r,!0)},u.prototype.lastIndexOf=function(t,e,r){return v(this,t,e,r,!1)},u.prototype.write=function(t,e,r,n){if(void 0===e)n="utf8",r=this.length,e=0;else if(void 0===r&&"string"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(r)?(r|=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return g(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function k(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function R(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function T(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i="",o=e;o<r;++o)i+=U(t[o]);return i}function P(t,e,r){for(var n=t.slice(e,r),i="",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function O(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}function A(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function M(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function B(t,e,r,n,o){return o||M(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,o){return o||M(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t),u.TYPED_ARRAY_SUPPORT)(r=this.subarray(t,e)).__proto__=u.prototype;else{var i=e-t;r=new u(i,void 0);for(var o=0;o<i;++o)r[o]=this[o+t]}return r},u.prototype.readUIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n},u.prototype.readUIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||O(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||O(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||O(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||O(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||O(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o<r&&(i*=256);)this[e+o]=t/i&255;return e+r},u.prototype.writeUIntBE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o<r&&(s*=256);)t<0&&0===a&&0!==this[e+o-1]&&(a=1),this[e+o]=(t/s|0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s|0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return B(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return B(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i,o=n-r;if(this===t&&r<e&&e<n)for(i=o-1;i>=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+o),e);return o},u.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!u.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var o;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o<r;++o)this[o]=t;else{var s=u.isBuffer(t)?t:N(new u(t,n).toString()),a=s.length;for(o=0;o<r-e;++o)this[o+e]=s[o%a]}return this};var I=/[^+\/0-9A-Za-z-_]/g;function U(t){return t<16?"0"+t.toString(16):t.toString(16)}function N(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(I,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e){var r,n,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&p())}function p(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f<e;)u&&u[f].run();f=-1,e=c.length}u=null,l=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===s||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];c.push(new d(t,e)),1!==c.length||l||a(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=_,i.addListener=_,i.once=_,i.off=_,i.removeListener=_,i.removeAllListeners=_,i.emit=_,i.prependListener=_,i.prependOnceListener=_,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,r){(function(t){function r(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===r(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===r(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===r(t)},e.isError=function(t){return"[object Error]"===r(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(this,r(3).Buffer)},function(t,e,r){"use strict";(function(e){!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,r)}));case 3:return e.nextTick((function(){t.call(null,r,n)}));case 4:return e.nextTick((function(){t.call(null,r,n,i)}));default:for(o=new Array(a-1),s=0;s<o.length;)o[s++]=arguments[s];return e.nextTick((function(){t.apply(null,o)}))}}}:t.exports=e}).call(this,r(4))},function(t,e,r){var n=r(3),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,e),e.Buffer=s),o(i,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var n=i(t);return void 0!==e?"string"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},function(t,e,r){var n=r(17)(Object,"create");t.exports=n},function(t,e,r){var n=r(31);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return-1}},function(t,e,r){var n=r(96);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},function(t,e,r){(function(t){var n=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r(35),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return"function"==typeof t}function i(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!function(t){return"number"==typeof t}(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,s,a,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var l=new Error('Uncaught, unspecified "error" event. ('+e+")");throw l.context=e,l}if(o(r=this._events[t]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),r.apply(this,a)}else if(i(r))for(a=Array.prototype.slice.call(arguments,1),s=(c=r.slice()).length,u=0;u<s;u++)c[u].apply(this,a);return!0},r.prototype.addListener=function(t,e){var s;if(!n(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,n(e.listener)?e.listener:e),this._events[t]?i(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,i(this._events[t])&&!this._events[t].warned&&(s=o(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&s>0&&this._events[t].length>s&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){if(!n(e))throw TypeError("listener must be a function");var r=!1;function i(){this.removeListener(t,i),r||(r=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},r.prototype.removeListener=function(t,e){var r,o,s,a;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(s=(r=this._events[t]).length,o=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(i(r)){for(a=s;a-- >0;)if(r[a]===e||r[a].listener&&r[a].listener===e){o=a;break}if(o<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n(r=this._events[t]))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){(e=t.exports=r(23)).Stream=e,e.Readable=e,e.Writable=r(14),e.Duplex=r(1),e.Transform=r(27),e.PassThrough=r(45)},function(t,e,r){"use strict";(function(e,n,i){var o=r(6);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e){var r=t.entry;for(t.entry=null;r;){var n=r.callback;e.pendingcb--,n(void 0),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var a,u=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;m.WritableState=y;var c=r(5);c.inherits=r(2);var l,f={deprecate:r(44)},h=r(24),p=r(7).Buffer,d=i.Uint8Array||function(){},_=r(25);function v(){}function y(t,e){a=a||r(1),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(x,t,e),t._writableState.errorEmitted=!0,t.emit("error",n)):(i(n),t._writableState.errorEmitted=!0,t.emit("error",n),x(t,e))}(t,r,n,e,i);else{var s=E(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||w(t,r),n?u(b,t,r,s,i):b(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function m(t){if(a=a||r(1),!(l.call(m,this)||this instanceof a))return new m(t);this._writableState=new y(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function g(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function b(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,n(),x(t,e)}function w(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,g(t,e,!0,e.length,i,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(g(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final((function(r){e.pendingcb--,r&&t.emit("error",r),e.prefinished=!0,t.emit("prefinish"),x(t,e)}))}function x(t,e){var r=E(e);return r&&(function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(C,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),r}c.inherits(m,h),y.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(y.prototype,"buffer",{get:f.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===m&&t&&t._writableState instanceof y}})):l=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,r){var n=this._writableState,i=!1,s=!n.objectMode&&function(t){return p.isBuffer(t)||t instanceof d}(t);return s&&!p.isBuffer(t)&&(t=function(t){return p.from(t)}(t)),"function"==typeof e&&(r=e,e=null),s?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=v),n.ended?function(t,e){var r=new Error("write after end");t.emit("error",r),o.nextTick(e,r)}(this,r):(s||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),o.nextTick(n,s),i=!1),i}(this,n,t,r))&&(n.pendingcb++,i=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=p.from(e,r)),e}(e,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length<e.highWaterMark;if(u||(e.needDrain=!0),e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else g(t,e,!1,a,n,i,o);return u}(this,n,s,t,e,r)),i},m.prototype.cork=function(){this._writableState.corked++},m.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},m.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,x(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=_.destroy,m.prototype._undestroy=_.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(4),r(11).setImmediate,r(0))},function(t,e,r){(function(e,r,n){t.exports=function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u="function"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};e[s][0].call(l.exports,(function(t){return i(e[s][1][t]||t)}),l,l.exports,t,e,r,n)}return r[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(t,e,r){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function r(t){var r=new e(t),n=r.promise();return r.setHowMany(1),r.setUnwrap(),r.init(),n}t.any=function(t){return r(t)},t.prototype.any=function(){return r(this)}}},{}],2:[function(t,r,n){"use strict";var i;try{throw new Error}catch(t){i=t}var o=t("./schedule"),s=t("./queue"),a=t("./util");function u(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new s(16),this._normalQueue=new s(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=o}function c(t,e,r){this._lateQueue.push(t,e,r),this._queueTick()}function l(t,e,r){this._normalQueue.push(t,e,r),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}u.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},u.prototype.hasCustomScheduler=function(){return this._customScheduler},u.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},u.prototype.disableTrampolineIfNecessary=function(){a.hasDevTools&&(this._trampolineEnabled=!1)},u.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},u.prototype.fatalError=function(t,r){r?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},u.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout((function(){t(e)}),0);else try{this._schedule((function(){t(e)}))}catch(t){throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n")}},a.hasDevTools?(u.prototype.invokeLater=function(t,e,r){this._trampolineEnabled?c.call(this,t,e,r):this._schedule((function(){setTimeout((function(){t.call(e,r)}),100)}))},u.prototype.invoke=function(t,e,r){this._trampolineEnabled?l.call(this,t,e,r):this._schedule((function(){t.call(e,r)}))},u.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule((function(){t._settlePromises()}))}):(u.prototype.invokeLater=c,u.prototype.invoke=l,u.prototype.settlePromises=f),u.prototype._drainQueue=function(t){for(;t.length()>0;){var e=t.shift();if("function"==typeof e){var r=t.shift(),n=t.shift();e.call(r,n)}else e._settlePromises()}},u.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},u.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},u.prototype._reset=function(){this._isTickUsed=!1},r.exports=u,r.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){!(50397184&this._bitField)&&this._resolveCallback(e.target)},u=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=r(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:c};f._then(e,s,void 0,l,h),c._then(a,u,void 0,l,h),l._setOnCancel(c)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return!(2097152&~this._bitField)},t.bind=function(e,r){return t.resolve(r).bind(e)}}},{}],4:[function(t,e,r){"use strict";var n;"undefined"!=typeof Promise&&(n=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=n)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,r){"use strict";var n=Object.create;if(n){var i=n(null),o=n(null);i[" size"]=o[" size"]=0}e.exports=function(e){var r=t("./util"),n=r.canEvaluate;function i(t){return function(t,n){var i;if(null!=t&&(i=t[n]),"function"!=typeof i){var o="Object "+r.classString(t)+" has no method '"+r.toString(n)+"'";throw new e.TypeError(o)}return i}(t,this.pop()).apply(t,this)}function o(t){return t[this]}function s(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}r.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if("number"==typeof t)e=s;else if(n){var r=(void 0)(t);e=null!==r?r:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,r){"use strict";e.exports=function(e,r,n,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,u=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var r=t._cancellationParent;if(null==r||!r._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=r}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var r=0;r<t.length;++r)this._doInvokeOnCancel(t[r],e);else if(void 0!==t)if("function"==typeof t){if(!e){var n=s(t).call(this._boundValue());n===a&&(this._attachExtraTrace(n.e),u.throwLater(n.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),u.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,r){"use strict";e.exports=function(e){var r=t("./util"),n=t("./es5").keys,i=r.tryCatch,o=r.errorObj;return function(t,s,a){return function(u){var c=a._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(u instanceof f)return i(s).call(c,u)}else if("function"==typeof f){var h=i(f).call(c,u);if(h===o)return h;if(h)return i(s).call(c,u)}else if(r.isObject(u)){for(var p=n(f),d=0;d<p.length;++d){var _=p[d];if(f[_]!=u[_])continue t}return i(s).call(c,u)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,r){"use strict";e.exports=function(t){var e=!1,r=[];function n(){this._trace=new n.CapturedTrace(i())}function i(){var t=r.length-1;if(t>=0)return r[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=r.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var r=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,u=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=r,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=u,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,r,n){"use strict";r.exports=function(r,n){var i,o,s,a=r._getDomain,u=r._async,c=t("./errors").Warning,l=t("./util"),f=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,p=/\((?:timers\.js):\d+:\d+\)/,d=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,v=null,y=!1,m=!(0==l.env("BLUEBIRD_DEBUG")),g=!(0==l.env("BLUEBIRD_WARNINGS")||!m&&!l.env("BLUEBIRD_WARNINGS")),b=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!m&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(g||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));r.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},r.prototype._ensurePossibleRejectionHandled=function(){if(!(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout((function(){t._notifyUnhandledRejection()}),1)}},r.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",i,void 0,this)},r.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},r.prototype._returnedNonUndefined=function(){return!!(268435456&this._bitField)},r.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",o,t,this)}},r.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},r.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},r.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},r.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},r.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},r.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},r.prototype._warn=function(t,e,r){return U(t,e,r||this)},r.onPossiblyUnhandledRejection=function(t){var e=a();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},r.onUnhandledRejectionHandled=function(t){var e=a();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};r.longStackTraces=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");if(!J.longStackTraces&&Y()){var t=r.prototype._captureStackTrace,e=r.prototype._attachExtraTrace;J.longStackTraces=!0,E=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");r.prototype._captureStackTrace=t,r.prototype._attachExtraTrace=e,n.deactivateLongStackTraces(),u.enableTrampoline(),J.longStackTraces=!1},r.prototype._captureStackTrace=D,r.prototype._attachExtraTrace=I,n.activateLongStackTraces(),u.disableTrampolineIfNecessary()}},r.hasLongStackTraces=function(){return J.longStackTraces&&Y()};var C=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var r=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!l.global.dispatchEvent(r)}}return"function"==typeof Event?(t=new Event("CustomEvent"),l.global.dispatchEvent(t),function(t,e){var r=new Event(t.toLowerCase(),{cancelable:!0});return r.detail=e,!l.global.dispatchEvent(r)}):((t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var r=document.createEvent("CustomEvent");return r.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(r)})}catch(t){}return function(){return!1}}(),x=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),r=l.global[e];return!!r&&(r.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function j(t,e){return{promise:e}}var S={promiseCreated:j,promiseFulfilled:j,promiseRejected:j,promiseResolved:j,promiseCancelled:j,promiseChained:function(t,e,r){return{promise:e,child:r}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,r){return{reason:e,promise:r}},rejectionHandled:j},k=function(t){var e=!1;try{e=x.apply(null,arguments)}catch(t){u.throwLater(t),e=!0}var r=!1;try{r=C(t,S[t].apply(null,arguments))}catch(t){u.throwLater(t),r=!0}return r||e};function R(){return!1}function T(t,e,r){var n=this;try{t(e,r,(function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));n._attachCancellationCallback(t)}))}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function O(){return this._onCancelField}function A(t){this._onCancelField=t}function F(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(1&e){this._cancellationParent=t;var r=t._branchesRemainingToCancel;void 0===r&&(r=0),t._branchesRemainingToCancel=r+1}2&e&&t._isBound()&&this._setBoundTo(t._boundTo)}r.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?r.longStackTraces():!t.longStackTraces&&r.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;J.warnings=!!e,w=J.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(w=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!J.cancellation){if(u.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");r.prototype._clearCancellationData=F,r.prototype._propagateFrom=L,r.prototype._onCancel=O,r.prototype._setOnCancel=A,r.prototype._attachCancellationCallback=P,r.prototype._execute=T,M=L,J.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!J.monitoring?(J.monitoring=!0,r.prototype._fireEvent=k):!t.monitoring&&J.monitoring&&(J.monitoring=!1,r.prototype._fireEvent=R)),r},r.prototype._fireEvent=R,r.prototype._execute=function(t,e,r){try{t(e,r)}catch(t){return t}},r.prototype._onCancel=function(){},r.prototype._setOnCancel=function(t){},r.prototype._attachCancellationCallback=function(t){},r.prototype._captureStackTrace=function(){},r.prototype._attachExtraTrace=function(){},r.prototype._clearCancellationData=function(){},r.prototype._propagateFrom=function(t,e){};var M=function(t,e){2&e&&t._isBound()&&this._setBoundTo(t._boundTo)};function B(){var t=this._boundTo;return void 0!==t&&t instanceof r?t.isFulfilled()?t.value():void 0:t}function D(){this._trace=new X(this._peekContext())}function I(t,e){if(f(t)){var r=this._trace;if(void 0!==r&&e&&(r=r._parent),void 0!==r)r.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=H(t);l.notEnumerableProp(t,"stack",n.message+"\n"+n.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function U(t,e,n){if(J.warnings){var i,o=new c(t);if(e)n._attachExtraTrace(o);else if(J.longStackTraces&&(i=r._peekContext()))i.attachExtraTrace(o);else{var s=H(o);o.stack=s.message+"\n"+s.stack.join("\n")}k("warning",o)||V(o,"",!0)}}function N(t){for(var e=[],r=0;r<t.length;++r){var n=t[r],i="    (No stack trace)"===n||_.test(n),o=i&&$(n);i&&!o&&(y&&" "!==n.charAt(0)&&(n="    "+n),e.push(n))}return e}function H(t){var e=t.stack,r=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),r=0;r<e.length;++r){var n=e[r];if("    (No stack trace)"===n||_.test(n))break}return r>0&&"SyntaxError"!=t.name&&(e=e.slice(r)),e}(t):["    (No stack trace)"],{message:r,stack:"SyntaxError"==t.name?e:N(e)}}function V(t,e,r){if("undefined"!=typeof console){var n;if(l.isObject(t)){var i=t.stack;n=e+v(i,t)}else n=e+String(t);"function"==typeof s?s(n,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function q(t,e,r,n){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(n):e(r,n))}catch(t){u.throwLater(t)}"unhandledRejection"===t?k(t,r,n)||i||V(r,"Unhandled rejection "):k(t,n)}function W(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof G}var $=function(){return!1},z=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(t){var e=t.match(z);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function X(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);G(this,X),e>32&&this.uncycle()}l.inherits(X,Error),n.CapturedTrace=X,X.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],r={},n=0,i=this;void 0!==i;++n)e.push(i),i=i._parent;for(n=(t=this._length=n)-1;n>=0;--n){var o=e[n].stack;void 0===r[o]&&(r[o]=n)}for(n=0;n<t;++n){var s=r[e[n].stack];if(void 0!==s&&s!==n){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var a=n>0?e[n-1]:this;s<t-1?(a._parent=e[s+1],a._parent.uncycle(),a._length=a._parent._length+1):(a._parent=void 0,a._length=1);for(var u=a._length+1,c=n-2;c>=0;--c)e[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=H(t),r=e.message,n=[e.stack],i=this;void 0!==i;)n.push(N(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],r=1;r<t.length;++r){for(var n=t[r],i=e.length-1,o=e[i],s=-1,a=n.length-1;a>=0;--a)if(n[a]===o){s=a;break}for(a=s;a>=0;--a){var u=n[a];if(e[i]!==u)break;e.pop(),i--}e=n}}(n),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(n),l.notEnumerableProp(t,"stack",function(t,e){for(var r=0;r<e.length-1;++r)e[r].push("From previous event:"),e[r]=e[r].join("\n");return r<e.length&&(e[r]=e[r].join("\n")),t+"\n"+e.join("\n")}(r,n)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var G=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():W(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,_=t,v=e;var r=Error.captureStackTrace;return $=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,r(t,e),Error.stackTraceLimit-=6}}var n,i=new Error;if("string"==typeof i.stack&&i.stack.split("\n")[0].indexOf("stackDetection@")>=0)return _=/@/,v=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n="stack"in t}return"stack"in i||!n||"number"!=typeof Error.stackTraceLimit?(v=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?W(e):e.toString()},null):(_=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(s=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?s=function(t,e){var r=e?"":"";console.warn(r+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(s=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var J={warnings:g,longStackTraces:!1,cancellation:!1,monitoring:!1};return b&&r.longStackTraces(),{longStackTraces:function(){return J.longStackTraces},warnings:function(){return J.warnings},cancellation:function(){return J.cancellation},monitoring:function(){return J.monitoring},propagateFromFunction:function(){return M},boundValueFunction:function(){return B},checkForgottenReturns:function(t,e,r,n,i){if(void 0===t&&null!==e&&w){if(void 0!==i&&i._returnedNonUndefined())return;if(!(65535&n._bitField))return;r&&(r+=" ");var o="",s="";if(e._trace){for(var a=e._trace.stack.split("\n"),u=N(a),c=u.length-1;c>=0;--c){var l=u[c];if(!p.test(l)){var f=l.match(d);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(u.length>0){var h=u[0];for(c=0;c<a.length;++c)if(a[c]===h){c>0&&(s="\n"+a[c-1]);break}}}var _="a promise was created in a "+r+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+s;n._warn(_,!0,e)}},setBounds:function(t,e){if(Y()){for(var r,n,i=t.stack.split("\n"),o=e.stack.split("\n"),s=-1,a=-1,u=0;u<i.length;++u)if(c=Q(i[u])){r=c.fileName,s=c.line;break}for(u=0;u<o.length;++u){var c;if(c=Q(o[u])){n=c.fileName,a=c.line;break}}s<0||a<0||!r||!n||r!==n||s>=a||($=function(t){if(h.test(t))return!0;var e=Q(t);return!!(e&&e.fileName===r&&s<=e.line&&e.line<=a)})}},warn:U,deprecated:function(t,e){var r=t+" is deprecated and will be removed in a future version.";return e&&(r+=" Use "+e+" instead."),U(r)},CapturedTrace:X,fireDomEvent:C,fireGlobalEvent:x}}},{"./errors":12,"./util":36}],10:[function(t,e,r){"use strict";e.exports=function(t){function e(){return this.value}function r(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(r){return r instanceof t&&r.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:r},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(r,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,(function(){throw e}))},t.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof t&&r.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:r},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(r,(function(){return n}))}}},{}],11:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.reduce,n=t.all;function i(){return n(this)}t.prototype.each=function(t){return r(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return r(this,t,e,e)},t.each=function(t,n){return r(t,n,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return r(t,n,e,e)}}},{}],12:[function(t,e,r){"use strict";var n,i,o=t("./es5"),s=o.freeze,a=t("./util"),u=a.inherits,c=a.notEnumerableProp;function l(t,e){function r(n){if(!(this instanceof r))return new r(n);c(this,"message","string"==typeof n?n:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var f=l("Warning","warning"),h=l("CancellationError","cancellation error"),p=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{n=TypeError,i=RangeError}catch(t){n=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);c(this,"name","OperationalError"),c(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,"message",t.message),c(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var r=0;r<this.length;++r){for(var n=this[r]===this?"[Circular AggregateError]":this[r]+"",i=n.split("\n"),o=0;o<i.length;++o)i[o]=t+i[o];e+=(n=i.join("\n"))+"\n"}return y--,e},u(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=s({CancellationError:h,TimeoutError:p,OperationalError:m,RejectionError:m,AggregateError:d}),o.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error,TypeError:n,RangeError:i,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,r){var n=function(){"use strict";return void 0===this}();if(n)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:n,propertyIsWritable:function(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return!(r&&!r.writable&&!r.set)}};else{var i={}.hasOwnProperty,o={}.toString,s={}.constructor.prototype,a=function(t){var e=[];for(var r in t)i.call(t,r)&&e.push(r);return e};e.exports={isArray:function(t){try{return"[object Array]"===o.call(t)}catch(t){return!1}},keys:a,names:a,defineProperty:function(t,e,r){return t[e]=r.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return s}},isES5:n,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.map;t.prototype.filter=function(t,n){return r(this,t,n,e)},t.filter=function(t,n,i){return r(t,n,i,e)}}},{}],15:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=e.CancellationError,s=i.errorObj,a=t("./catch_filter")(n);function u(t,e,r){this.promise=t,this.type=e,this.handler=r,this.called=!1,this.cancelPromise=null}function c(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function h(t){if(!l(this,t))return s.e=t,s}function p(t){var i=this.promise,a=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?a.call(i._boundValue()):a.call(i._boundValue(),t);if(u===n)return u;if(void 0!==u){i._setReturnedNonUndefined();var p=r(u,i);if(p instanceof e){if(null!=this.cancelPromise){if(p._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),s.e=d,s}p.isPending()&&p._attachCancellationCallback(new c(this))}return p._then(f,h,void 0,this,void 0)}}}return i.isRejected()?(l(this),s.e=t,s):(l(this),t)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,r,n){return"function"!=typeof t?this.then():this._then(r,n,void 0,new u(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,p,p)},e.prototype.tap=function(t){return this._passThrough(t,1,p)},e.prototype.tapCatch=function(t){var r=arguments.length;if(1===r)return this._passThrough(t,1,void 0,p);var n,o=new Array(r-1),s=0;for(n=0;n<r-1;++n){var u=arguments[n];if(!i.isObject(u))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+i.classString(u)));o[s++]=u}o.length=s;var c=arguments[n];return this._passThrough(a(o,c,this),1,void 0,p)},u}},{"./catch_filter":7,"./util":36}],16:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=t("./errors").TypeError,u=t("./util"),c=u.errorObj,l=u.tryCatch,f=[];function h(t,r,i,o){if(s.cancellation()){var a=new e(n),u=this._finallyPromise=new e(n);this._promise=a.lastly((function(){return u})),a._captureStackTrace(),a._setOnCancel(this)}else(this._promise=new e(n))._captureStackTrace();this._stack=o,this._generatorFunction=t,this._receiver=r,this._generator=void 0,this._yieldHandlers="function"==typeof i?[i].concat(f):f,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,o),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,s.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t;if(void 0!==this._generator.return)this._promise._pushContext(),t=l(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=l(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=l(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=l(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var r=this._promise;if(t===c)return this._cleanup(),this._cancellationPhase?r.cancel():r._rejectCallback(t.e,!1);var n=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?r.cancel():r._resolveCallback(n);var o=i(n,this._promise);if(o instanceof e||null!==(o=function(t,r,n){for(var o=0;o<r.length;++o){n._pushContext();var s=l(r[o])(t);if(n._popContext(),s===c){n._pushContext();var a=e.reject(c.e);return n._popContext(),a}var u=i(s,n);if(u instanceof e)return u}return null}(o,this._yieldHandlers,this._promise))){var s=(o=o._target())._bitField;50397184&s?33554432&s?e._async.invoke(this._promiseFulfilled,this,o._value()):16777216&s?e._async.invoke(this._promiseRejected,this,o._reason()):this._promiseCancelled():(this._yieldedPromise=o,o._proxy(this,null))}else this._promiseRejected(new a("A value %s was yielded that could not be treated as a promise\n\n    See http://goo.gl/MqrFmX\n\n".replace("%s",String(n))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new a("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");var r=Object(e).yieldHandler,n=h,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new n(void 0,void 0,r,i),s=o.promise();return o._generator=e,o._promiseFulfilled(void 0),s}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new a("expecting a function but got "+u.classString(t));f.push(t)},e.spawn=function(t){if(s.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return r("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");var n=new h(t,this),i=n.promise();return n._run(e.spawn),i}}},{"./errors":12,"./util":36}],17:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=t("./util");a.canEvaluate,a.tryCatch,a.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var i=new r(n).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t("./util"),c=u.tryCatch,l=u.errorObj,f=e._async;function h(t,e,r,n){this.constructor$(t),this._promise._captureStackTrace();var i=a();this._callback=null===i?e:u.domainBind(i,e),this._preservedValues=n===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(t,r,i,o){if("function"!=typeof r)return n("expecting a function but got "+u.classString(r));var s=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+u.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+u.classString(i.concurrency)));s=i.concurrency}return new h(t,r,s="number"==typeof s&&isFinite(s)&&s>=1?s:0,o).promise()}u.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,r){var n=this._values,o=this.length(),a=this._preservedValues,u=this._limit;if(r<0){if(n[r=-1*r-1]=t,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return n[r]=t,this._queue.push(r),!1;null!==a&&(a[r]=t);var f=this._promise,h=this._callback,p=f._boundValue();f._pushContext();var d=c(h).call(p,t,r,o),_=f._popContext();if(s.checkForgottenReturns(d,_,null!==a?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(!(50397184&y))return u>=1&&this._inFlight++,n[r]=v,v._proxy(this,-1*(r+1)),!1;if(!(33554432&y))return 16777216&y?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}n[r]=d}return++this._totalResolved>=o&&(null!==a?this._filter(n,a):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,r=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var n=t.pop();this._promiseFulfilled(r[n],n)}},h.prototype._filter=function(t,e){for(var r=e.length,n=new Array(r),i=0,o=0;o<r;++o)t[o]&&(n[i++]=e[o]);n.length=i,this._resolve(n)},h.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return p(this,t,e,null)},e.map=function(t,e,r,n){return p(t,e,r,n)}}},{"./util":36}],19:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o){var s=t("./util"),a=s.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+s.classString(t));return function(){var n=new e(r);n._captureStackTrace(),n._pushContext();var i=a(t).apply(this,arguments),s=n._popContext();return o.checkForgottenReturns(i,s,"Promise.method",n),n._resolveFromSyncValue(i),n}},e.attempt=e.try=function(t){if("function"!=typeof t)return i("expecting a function but got "+s.classString(t));var n,u=new e(r);if(u._captureStackTrace(),u._pushContext(),arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];n=s.isArray(c)?a(t).apply(l,c):a(t).call(l,c)}else n=a(t)();var f=u._popContext();return o.checkForgottenReturns(n,f,"Promise.try",u),u._resolveFromSyncValue(n),u},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,r){"use strict";var n=t("./util"),i=n.maybeWrapAsError,o=t("./errors").OperationalError,s=t("./es5"),a=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var r=s.keys(t),i=0;i<r.length;++i){var u=r[i];a.test(u)||(e[u]=t[u])}return e}return n.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(r,n){if(null!==t){if(r){var o=u(i(r));t._attachExtraTrace(o),t._reject(o)}else if(e){var s=[].slice.call(arguments,1);t._fulfill(s)}else t._fulfill(n);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,r){"use strict";e.exports=function(e){var r=t("./util"),n=e._async,i=r.tryCatch,o=r.errorObj;function s(t,e){if(!r.isArray(t))return a.call(this,t,e);var s=i(e).apply(this._boundValue(),[null].concat(t));s===o&&n.throwLater(s.e)}function a(t,e){var r=this._boundValue(),s=void 0===t?i(e).call(r,null):i(e).call(r,null,t);s===o&&n.throwLater(s.e)}function u(t,e){if(!t){var r=new Error(t+"");r.cause=t,t=r}var s=i(e).call(this._boundValue(),t);s===o&&n.throwLater(s.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var r=a;void 0!==e&&Object(e).spread&&(r=s),this._then(r,u,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,r,n){"use strict";r.exports=function(){var n=function(){return new d("circular promise resolution chain\n\n    See http://goo.gl/MqrFmX\n")},i=function(){return new T.PromiseInspection(this._target())},o=function(t){return T.reject(new d(t))};function s(){}var a,u={},c=t("./util");a=c.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},c.notEnumerableProp(T,"_getDomain",a);var l=t("./es5"),f=t("./async"),h=new f;l.defineProperty(T,"_async",{value:h});var p=t("./errors"),d=T.TypeError=p.TypeError;T.RangeError=p.RangeError;var _=T.CancellationError=p.CancellationError;T.TimeoutError=p.TimeoutError,T.OperationalError=p.OperationalError,T.RejectionError=p.OperationalError,T.AggregateError=p.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(T,v),b=t("./promise_array")(T,v,g,o,s),w=t("./context")(T),E=w.create,C=t("./debuggability")(T,w),x=(C.CapturedTrace,t("./finally")(T,g,m)),j=t("./catch_filter")(m),S=t("./nodeback"),k=c.errorObj,R=c.tryCatch;function T(t){t!==v&&function(t,e){if(null==t||t.constructor!==T)throw new d("the promise constructor cannot be invoked directly\n\n    See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+c.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function P(t){this.promise._resolveCallback(t)}function O(t){this.promise._rejectCallback(t,!1)}function A(t){var e=new T(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return T.prototype.toString=function(){return"[object Promise]"},T.prototype.caught=T.prototype.catch=function(t){var e=arguments.length;if(e>1){var r,n=new Array(e-1),i=0;for(r=0;r<e-1;++r){var s=arguments[r];if(!c.isObject(s))return o("Catch statement predicate: expecting an object but got "+c.classString(s));n[i++]=s}return n.length=i,t=arguments[r],this.then(void 0,j(n,t,this))}return this.then(void 0,t)},T.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},T.prototype.then=function(t,e){if(C.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var r=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(r+=", "+c.classString(e)),this._warn(r)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},T.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},T.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},T.getNewLibraryCopy=r.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=R(t)(S(e,r));return n===k&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+c.classString(t));return h.setScheduler(t)},T.prototype._then=function(t,e,r,n,i){var o=void 0!==i,s=o?i:new T(v),u=this._target(),l=u._bitField;o||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===n&&!!(2097152&this._bitField)&&(n=50397184&l?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,s));var f=a();if(50397184&l){var p,d,y=u._settlePromiseCtx;33554432&l?(d=u._rejectionHandler0,p=t):16777216&l?(d=u._fulfillmentHandler0,p=e,u._unsetRejectionIsUnhandled()):(y=u._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),u._attachExtraTrace(d),p=e),h.invoke(y,u,{handler:null===f?p:"function"==typeof p&&c.domainBind(f,p),promise:s,receiver:n,value:d})}else u._addCallbacks(t,e,s,n,f);return s},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return!!(117506048&this._bitField)},T.prototype._isFollowing=function(){return!(67108864&~this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==u)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,r=t._rejectionHandler0,n=t._promise0,i=t._receiverAt(0);void 0===i&&(i=u),this._addCallbacks(e,r,n,i,null)},T.prototype._migrateCallbackAt=function(t,e){var r=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=u),this._addCallbacks(r,n,i,o,null)},T.prototype._addCallbacks=function(t,e,r,n,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=r,this._receiver0=n,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:c.domainBind(i,e));else{var s=4*o-4;this[s+2]=r,this[s+3]=n,"function"==typeof t&&(this[s+0]=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this[s+1]=null===i?e:c.domainBind(i,e))}return this._setLength(o+1),o},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(!(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var r=g(t,this);if(!(r instanceof T))return this._fulfill(t);e&&this._propagateFrom(r,2);var i=r._target();if(i!==this){var o=i._bitField;if(50397184&o)if(33554432&o)this._fulfill(i._value());else if(16777216&o)this._reject(i._reason());else{var s=new _("late cancellation observer");i._attachExtraTrace(s),this._reject(s)}else{var a=this._length();a>0&&i._migrateCallback0(this);for(var u=1;u<a;++u)i._migrateCallbackAt(this,u);this._setFollowing(),this._setLength(0),this._setFollowee(i)}}else this._reject(n())}},T.prototype._rejectCallback=function(t,e,r){var n=c.ensureErrorObject(t),i=n===t;if(!i&&!r&&C.warnings()){var o="a promise was rejected with a non-error: "+c.classString(t);this._warn(o,!0)}this._attachExtraTrace(n,!!e&&i),this._reject(t)},T.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var r=!0,n=this._execute(t,(function(t){e._resolveCallback(t)}),(function(t){e._rejectCallback(t,r)}));r=!1,this._popContext(),void 0!==n&&e._rejectCallback(n,!0)}},T.prototype._settlePromiseFromHandler=function(t,e,r,n){var i=n._bitField;if(!(65536&i)){var o;n._pushContext(),e===y?r&&"number"==typeof r.length?o=R(t).apply(this._boundValue(),r):(o=k).e=new d("cannot .spread() a non-array: "+c.classString(r)):o=R(t).call(e,r);var s=n._popContext();!(65536&(i=n._bitField))&&(o===m?n._reject(r):o===k?n._rejectCallback(o.e,!1):(C.checkForgottenReturns(o,s,"",n,this),n._resolveCallback(o)))}},T.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},T.prototype._followee=function(){return this._rejectionHandler0},T.prototype._setFollowee=function(t){this._rejectionHandler0=t},T.prototype._settlePromise=function(t,e,r,n){var o=t instanceof T,a=this._bitField,u=!!(134217728&a);65536&a?(o&&t._invokeInternalOnCancel(),r instanceof x&&r.isFinallyHandler()?(r.cancelPromise=t,R(e).call(r,n)===k&&t._reject(k.e)):e===i?t._fulfill(i.call(r)):r instanceof s?r._promiseCancelled(t):o||t instanceof b?t._cancel():r.cancel()):"function"==typeof e?o?(u&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,n,t)):e.call(r,n,t):r instanceof s?r._isResolved()||(33554432&a?r._promiseFulfilled(n,t):r._promiseRejected(n,t)):o&&(u&&t._setAsyncGuaranteed(),33554432&a?t._fulfill(n):t._reject(n))},T.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,r=t.promise,n=t.receiver,i=t.value;"function"==typeof e?r instanceof T?this._settlePromiseFromHandler(e,n,i,r):e.call(n,i,r):r instanceof T&&r._reject(i)},T.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},T.prototype._settlePromise0=function(t,e,r){var n=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(n,t,i,e)},T.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},T.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var r=n();return this._attachExtraTrace(r),this._reject(r)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(134217728&e?this._settlePromises():h.settlePromises(this))}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var r=1;r<t;r++){var n=this._fulfillmentHandlerAt(r),i=this._promiseAt(r),o=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(i,n,o,e)}},T.prototype._rejectPromises=function(t,e){for(var r=1;r<t;r++){var n=this._rejectionHandlerAt(r),i=this._promiseAt(r),o=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(i,n,o,e)}},T.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(16842752&t){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,t),this._rejectPromises(e,r)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 33554432&t?this._rejectionHandler0:16777216&t?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){return C.deprecated("Promise.defer","new Promise"),{promise:new T(v),resolve:P,reject:O}},c.notEnumerableProp(T,"_makeSelfResolutionError",n),t("./method")(T,v,g,o,C),t("./bind")(T,v,g,C),t("./cancel")(T,b,o,C),t("./direct_resolve")(T),t("./synchronous_inspection")(T),t("./join")(T,b,g,v,h,a),T.Promise=T,T.version="3.5.1",t("./map.js")(T,b,o,g,v,C),t("./call_get.js")(T),t("./using.js")(T,o,g,E,v,C),t("./timers.js")(T,v,C),t("./generators.js")(T,o,v,g,s,C),t("./nodeify.js")(T),t("./promisify.js")(T,v),t("./props.js")(T,b,g,o),t("./race.js")(T,v,g,o),t("./reduce.js")(T,b,o,g,v,C),t("./settle.js")(T,b,C),t("./some.js")(T,b,o),t("./filter.js")(T,v),t("./each.js")(T,v),t("./any.js")(T),c.toFastProperties(T),c.toFastProperties(T.prototype),A({a:1}),A({b:2}),A({c:3}),A(1),A((function(){})),A(void 0),A(!1),A(new T(v)),C.setBounds(f.firstLineError,c.lastLineError),T}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o){var s=t("./util");function a(t){var n=this._promise=new e(r);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return s.isArray,s.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function t(r,o){var a=n(this._values,this._promise);if(a instanceof e){var u=(a=a._target())._bitField;if(this._values=a,!(50397184&u))return this._promise._setAsyncGuaranteed(),a._then(t,this._reject,void 0,this,o);if(!(33554432&u))return 16777216&u?this._reject(a._reason()):this._cancel();a=a._value()}if(null!==(a=s.asArray(a)))0!==a.length?this._iterate(a):-5===o?this._resolveEmptyArray():this._resolve(function(){switch(o){case-2:return[];case-3:return{};case-6:return new Map}}());else{var c=i("expecting an array or an iterable object but got "+s.classString(a)).reason();this._promise._rejectCallback(c,!1)}},a.prototype._iterate=function(t){var r=this.getActualLength(t.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var i=this._promise,o=!1,s=null,a=0;a<r;++a){var u=n(t[a],i);s=u instanceof e?(u=u._target())._bitField:null,o?null!==s&&u.suppressUnhandledRejections():null!==s?50397184&s?o=33554432&s?this._promiseFulfilled(u._value(),a):16777216&s?this._promiseRejected(u._reason(),a):this._promiseCancelled(a):(u._proxy(this,a),this._values[a]=u):o=this._promiseFulfilled(u,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){return this._values[e]=t,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var r=0;r<t.length;++r)t[r]instanceof e&&t[r].cancel()}},a.prototype.shouldCopyValues=function(){return!0},a.prototype.getActualLength=function(t){return t},a}},{"./util":36}],24:[function(t,e,r){"use strict";e.exports=function(e,r){var n={},i=t("./util"),o=t("./nodeback"),s=i.withAppended,a=i.maybeWrapAsError,u=i.canEvaluate,c=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),h=function(t){return i.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function p(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,r){var n=i.getDataPropertyOrDefault(t,e+r,l);return!!n&&d(n)}function v(t,e,r,n){for(var o=i.inheritedDataKeys(t),s=[],a=0;a<o.length;++a){var u=o[a],l=t[u],f=n===h||h(u);"function"!=typeof l||d(l)||_(t,u,e)||!n(u,l,t,f)||s.push(u,l)}return function(t,e,r){for(var n=0;n<t.length;n+=2){var i=t[n];if(r.test(i))for(var o=i.replace(r,""),s=0;s<t.length;s+=2)if(t[s]===o)throw new c("Cannot promisify an API that has normal methods with '%s'-suffix\n\n    See http://goo.gl/MqrFmX\n".replace("%s",e))}}(s,e,r),s}var y=u?void 0:function(t,u,c,l,f,h){var p=function(){return this}(),d=t;function _(){var i=u;u===n&&(i=this);var c=new e(r);c._captureStackTrace();var l="string"==typeof d&&this!==p?this[d]:t,f=o(c,h);try{l.apply(i,s(arguments,f))}catch(t){c._rejectCallback(a(t),!0,!0)}return c._isFateSealed()||c._setAsyncGuaranteed(),c}return"string"==typeof d&&(t=l),i.notEnumerableProp(_,"__isPromisified__",!0),_};function m(t,e,r,o,s){for(var a=new RegExp(function(t){return t.replace(/([$])/,"\\$")}(e)+"$"),u=v(t,e,a,r),c=0,l=u.length;c<l;c+=2){var f=u[c],h=u[c+1],p=f+e;if(o===y)t[p]=y(f,n,f,h,e,s);else{var d=o(h,(function(){return y(f,n,f,h,e,s)}));i.notEnumerableProp(d,"__isPromisified__",!0),t[p]=d}}return i.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new c("expecting a function but got "+i.classString(t));if(d(t))return t;var r=void 0===(e=Object(e)).context?n:e.context,o=!!e.multiArgs,s=function(t,e){return y(t,e,void 0,t,null,o)}(t,r);return i.copyDescriptors(t,s,p),s},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new c("the target of promisifyAll must be an object or a function\n\n    See http://goo.gl/MqrFmX\n");var r=!!(e=Object(e)).multiArgs,n=e.suffix;"string"!=typeof n&&(n="Async");var o=e.filter;"function"!=typeof o&&(o=h);var s=e.promisifier;if("function"!=typeof s&&(s=y),!i.isIdentifier(n))throw new RangeError("suffix must be a valid identifier\n\n    See http://goo.gl/MqrFmX\n");for(var a=i.inheritedDataKeys(t),u=0;u<a.length;++u){var l=t[a[u]];"constructor"!==a[u]&&i.isClass(l)&&(m(l.prototype,n,o,s,r),m(l,n,o,s,r))}return m(t,n,o,s,r)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,r){"use strict";e.exports=function(e,r,n,i){var o,s=t("./util"),a=s.isObject,u=t("./es5");"function"==typeof Map&&(o=Map);var c=function(){var t=0,e=0;function r(r,n){this[t]=r,this[t+e]=n,t++}return function(n){e=n.size,t=0;var i=new Array(2*n.size);return n.forEach(r,i),i}}();function l(t){var e,r=!1;if(void 0!==o&&t instanceof o)e=c(t),r=!0;else{var n=u.keys(t),i=n.length;e=new Array(2*i);for(var s=0;s<i;++s){var a=n[s];e[s]=t[a],e[s+i]=a}}this.constructor$(e),this._isMap=r,this._init$(void 0,r?-6:-3)}function f(t){var r,o=n(t);return a(o)?(r=o instanceof e?o._then(e.props,void 0,void 0,void 0,void 0):new l(o).promise(),o instanceof e&&r._propagateFrom(o,2),r):i("cannot await properties of a non-object\n\n    See http://goo.gl/MqrFmX\n")}s.inherits(l,r),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){if(this._values[e]=t,++this._totalResolved>=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,r=t.length/2|0,n=0;n<r;++n){var i=t[r+n],s=t[n];e.set(i,s)}return e}(this._values);else{r={};for(var n=this.length(),i=0,s=this.length();i<s;++i)r[this._values[i+n]]=this._values[i]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,r){"use strict";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity<t},n.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1),this[this._front+e&this._capacity-1]=t,this._length=e+1},n.prototype.push=function(t,e,r){var n=this.length()+3;if(this._willBeOverCapacity(n))return this._pushOne(t),this._pushOne(e),void this._pushOne(r);var i=this._front+n-3;this._checkCapacity(n);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=r,this._length=n},n.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},n.prototype.length=function(){return this._length},n.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},n.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t,function(t,e,r,n,i){for(var o=0;o<i;++o)r[o+n]=t[o+0],t[o+0]=void 0}(this,0,this,e,this._front+this._length&e-1)},e.exports=n},{}],27:[function(t,e,r){"use strict";e.exports=function(e,r,n,i){var o=t("./util"),s=function(t){return t.then((function(e){return a(e,t)}))};function a(t,a){var u=n(t);if(u instanceof e)return s(u);if(null===(t=o.asArray(t)))return i("expecting an array or an iterable object but got "+o.classString(t));var c=new e(r);void 0!==a&&c._propagateFrom(a,3);for(var l=c._fulfill,f=c._reject,h=0,p=t.length;h<p;++h){var d=t[h];(void 0!==d||h in t)&&e.cast(d)._then(l,f,void 0,c,null)}return c}e.race=function(t){return a(t,void 0)},e.prototype.race=function(){return a(this,void 0)}}},{"./util":36}],28:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t("./util"),c=u.tryCatch;function l(t,r,n,i){this.constructor$(t);var s=a();this._fn=null===s?r:u.domainBind(s,r),void 0!==n&&(n=e.resolve(n))._attachCancellationCallback(this),this._initialValue=n,this._currentCancellable=null,this._eachValues=i===o?Array(this._length):0===i?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function h(t,e,r,i){return"function"!=typeof e?n("expecting a function but got "+u.classString(e)):new l(t,e,r,i).promise()}function p(t){this.accum=t,this.array._gotAccum(t);var r=i(this.value,this.array._promise);return r instanceof e?(this.array._currentCancellable=r,r._then(d,void 0,void 0,this,void 0)):d.call(this,r)}function d(t){var r,n=this.array,i=n._promise,o=c(n._fn);i._pushContext(),(r=void 0!==n._eachValues?o.call(i._boundValue(),t,this.index,this.length):o.call(i._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(n._currentCancellable=r);var a=i._popContext();return s.checkForgottenReturns(r,a,void 0!==n._eachValues?"Promise.each":"Promise.reduce",i),r}u.inherits(l,r),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var r,n;this._values=t;var i=t.length;if(void 0!==this._initialValue?(r=this._initialValue,n=0):(r=e.resolve(t[0]),n=1),this._currentCancellable=r,!r.isRejected())for(;n<i;++n){var o={accum:null,value:t[n],index:n,length:i,array:this};r=r._then(p,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(r=r._then(this._eachComplete,void 0,void 0,this,void 0)),r._then(f,f,void 0,r,this)},e.prototype.reduce=function(t,e){return h(this,t,e,null)},e.reduce=function(t,e,r,n){return h(t,e,r,n)}}},{"./util":36}],29:[function(t,i,o){"use strict";var s,a=t("./util"),u=a.getNativePromise();if(a.isNode&&"undefined"==typeof MutationObserver){var c=r.setImmediate,l=e.nextTick;s=a.isRecentNode?function(t){c.call(r,t)}:function(t){l.call(e,t)}}else if("function"==typeof u&&"function"==typeof u.resolve){var f=u.resolve();s=function(t){f.then(t)}}else s="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==n?function(t){n(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},r=!1,n=document.createElement("div");return new MutationObserver((function(){t.classList.toggle("foo"),r=!1})).observe(n,e),function(i){var o=new MutationObserver((function(){o.disconnect(),i()}));o.observe(t,e),r||(r=!0,n.classList.toggle("foo"))}}();i.exports=s},{"./util":36}],30:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=e.PromiseInspection;function o(t){this.constructor$(t)}t("./util").inherits(o,r),o.prototype._promiseResolved=function(t,e){return this._values[t]=e,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var r=new i;return r._bitField=33554432,r._settledValueField=t,this._promiseResolved(e,r)},o.prototype._promiseRejected=function(t,e){var r=new i;return r._bitField=16777216,r._settledValueField=t,this._promiseResolved(e,r)},e.settle=function(t){return n.deprecated(".settle()",".reflect()"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=t("./errors").RangeError,s=t("./errors").AggregateError,a=i.isArray,u={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return n("expecting a positive integer\n\n    See http://goo.gl/MqrFmX\n");var r=new c(t),i=r.promise();return r.setHowMany(e),r.init(),i}i.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=a(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new s,e=this.length();e<this._values.length;++e)this._values[e]!==u&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,r){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var r=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n    See http://goo.gl/MqrFmX\n");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n    See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return!!(33554432&this._bitField)},o=e.prototype.isRejected=function(){return!!(16777216&this._bitField)},s=e.prototype.isPending=function(){return!(50397184&this._bitField)},a=e.prototype.isResolved=function(){return!!(50331648&this._bitField)};e.prototype.isCancelled=function(){return!!(8454144&this._bitField)},t.prototype.__isCancelled=function(){return!(65536&~this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return!!(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return r.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,r){"use strict";e.exports=function(e,r){var n=t("./util"),i=n.errorObj,o=n.isObject,s={}.hasOwnProperty;return function(t,a){if(o(t)){if(t instanceof e)return t;var u=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(u===i){a&&a._pushContext();var c=e.reject(u.e);return a&&a._popContext(),c}if("function"==typeof u)return function(t){try{return s.call(t,"_promise0")}catch(t){return!1}}(t)?(c=new e(r),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,o,s){var a=new e(r),u=a;s&&s._pushContext(),a._captureStackTrace(),s&&s._popContext();var c=!0,l=n.tryCatch(o).call(t,(function(t){a&&(a._resolveCallback(t),a=null)}),(function(t){a&&(a._rejectCallback(t,c,!0),a=null)}));return c=!1,a&&l===i&&(a._rejectCallback(l.e,!0,!0),a=null),u}(t,u,a)}return t}}},{"./util":36}],34:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=e.TimeoutError;function s(t){this.handle=t}s.prototype._resultCancelled=function(){clearTimeout(this.handle)};var a=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,i){var o,u;return void 0!==i?(o=e.resolve(i)._then(a,null,null,t,void 0),n.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(r),u=setTimeout((function(){o._fulfill()}),+t),n.cancellation()&&o._setOnCancel(new s(u)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function c(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return u(t,this)},e.prototype.timeout=function(t,e){var r,a;t=+t;var u=new s(setTimeout((function(){r.isPending()&&function(t,e,r){var n;n="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=r&&r.cancel()}(r,e,a)}),t));return n.cancellation()?(a=this.then(),(r=a._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{"./util":36}],35:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=t("./util"),u=t("./errors").TypeError,c=t("./util").inherits,l=a.errorObj,f=a.tryCatch,h={};function p(t){setTimeout((function(){throw t}),0)}function d(t,r){var i=0,s=t.length,a=new e(o);return function o(){if(i>=s)return a._fulfill();var u=function(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(u instanceof e&&u._isDisposable()){try{u=n(u._getDisposer().tryDispose(r),t.promise)}catch(t){return p(t)}if(u instanceof e)return u._then(o,p,null,null,null)}o()}(),a}function _(t,e,r){this._data=t,this._promise=e,this._context=r}function v(t,e,r){this.constructor$(t,e,r)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},_.prototype.tryDispose=function(t){var e=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(v,_),v.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,r=0;r<t;++r){var n=this[r];n instanceof e&&n.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return r("you must pass at least 2 arguments to Promise.using");var i,o=arguments[t-1];if("function"!=typeof o)return r("expecting a function but got "+a.classString(o));var u=!0;2===t&&Array.isArray(arguments[0])?(t=(i=arguments[0]).length,u=!1):(i=arguments,t--);for(var c=new m(t),h=0;h<t;++h){var p=i[h];if(_.isDisposer(p)){var v=p;(p=p.promise())._setDisposable(v)}else{var g=n(p);g instanceof e&&(p=g._then(y,null,null,{resources:c,index:h},void 0))}c[h]=p}var b=new Array(c.length);for(h=0;h<b.length;++h)b[h]=e.resolve(c[h]).reflect();var w=e.all(b).then((function(t){for(var e=0;e<t.length;++e){var r=t[e];if(r.isRejected())return l.e=r.error(),l;if(!r.isFulfilled())return void w.cancel();t[e]=r.value()}E._pushContext(),o=f(o);var n=u?o.apply(void 0,t):o(t),i=E._popContext();return s.checkForgottenReturns(n,i,"Promise.using",E),n})),E=w.lastly((function(){var t=new e.PromiseInspection(w);return d(c,t)}));return c.promise=E,E._setOnCancel(c),E},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new u}}},{"./errors":12,"./util":36}],36:[function(t,n,i){"use strict";var o,s=t("./es5"),a="undefined"==typeof navigator,u={e:{}},c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r?r:void 0!==this?this:null;function l(){try{var t=o;return o=null,t.apply(this,arguments)}catch(t){return u.e=t,u}}function f(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function h(t,e,r){if(f(t))return t;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return s.defineProperty(t,e,n),t}var p=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var r=0;r<t.length;++r)if(t[r]===e)return!0;return!1};if(s.isES5){var r=Object.getOwnPropertyNames;return function(t){for(var n=[],i=Object.create(null);null!=t&&!e(t);){var o;try{o=r(t)}catch(t){return n}for(var a=0;a<o.length;++a){var u=o[a];if(!i[u]){i[u]=!0;var c=Object.getOwnPropertyDescriptor(t,u);null!=c&&null==c.get&&null==c.set&&n.push(u)}}t=s.getPrototypeOf(t)}return n}}var n={}.hasOwnProperty;return function(r){if(e(r))return[];var i=[];t:for(var o in r)if(n.call(r,o))i.push(o);else{for(var s=0;s<t.length;++s)if(n.call(t[s],o))continue t;i.push(o)}return i}}(),d=/this\s*\.\s*\S+\s*=/,_=/^[a-z$_][a-z$_0-9]*$/i;function v(t){try{return t+""}catch(t){return"[no string representation]"}}function y(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function m(t){return y(t)&&s.propertyIsWritable(t,"stack")}var g="stack"in new Error?function(t){return m(t)?t:new Error(v(t))}:function(t){if(m(t))return t;try{throw new Error(v(t))}catch(t){return t}};function b(t){return{}.toString.call(t)}var w=function(t){return s.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var E="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,r=[],n=t[Symbol.iterator]();!(e=n.next()).done;)r.push(e.value);return r};w=function(t){return s.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?E(t):null}}var C=void 0!==e&&"[object process]"===b(e).toLowerCase(),x=void 0!==e&&void 0!==e.env,j={isClass:function(t){try{if("function"==typeof t){var e=s.names(t.prototype),r=s.isES5&&e.length>1,n=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=d.test(t+"")&&s.names(t).length>0;if(r||n||i)return!0}return!1}catch(t){return!1}},isIdentifier:function(t){return _.test(t)},inheritedDataKeys:p,getDataPropertyOrDefault:function(t,e,r){if(!s.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var n=Object.getOwnPropertyDescriptor(t,e);return null!=n?null==n.get&&null==n.set?n.value:r:void 0},thrower:function(t){throw t},isArray:s.isArray,asArray:w,notEnumerableProp:h,isPrimitive:f,isObject:function(t){return"function"==typeof t||"object"==typeof t&&null!==t},isError:y,canEvaluate:a,errorObj:u,tryCatch:function(t){return o=t,l},inherits:function(t,e){var r={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)r.call(e.prototype,n)&&"$"!==n.charAt(n.length-1)&&(this[n+"$"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype},withAppended:function(t,e){var r,n=t.length,i=new Array(n+1);for(r=0;r<n;++r)i[r]=t[r];return i[r]=e,i},maybeWrapAsError:function(t){return f(t)?new Error(v(t)):t},toFastProperties:function(t){function e(){}e.prototype=t;for(var r=8;r--;)new e;return t},filledRange:function(t,e,r){for(var n=new Array(t),i=0;i<t;++i)n[i]=e+i+r;return n},toString:v,canAttachTrace:m,ensureErrorObject:g,originatesFromRejection:function(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)},markAsOriginatingFromRejection:function(t){try{h(t,"isOperational",!0)}catch(t){}},classString:b,copyDescriptors:function(t,e,r){for(var n=s.names(t),i=0;i<n.length;++i){var o=n[i];if(r(o))try{s.defineProperty(e,o,s.getDescriptor(t,o))}catch(t){}}},hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:C,hasEnvVariables:x,env:function(t){return x?e.env[t]:void 0},global:c,getNativePromise:function(){if("function"==typeof Promise)try{var t=new Promise((function(){}));if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}},domainBind:function(t,e){return t.bind(e)}};j.isRecentNode=j.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),j.isNode&&j.toFastProperties(e);try{throw new Error}catch(t){j.lastLineError=t}n.exports=j},{"./es5":13}]},{},[4])(4),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,r(4),r(0),r(11).setImmediate)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if(!e.eol&&t)for(var r=0,n=t.length;r<n;r++)if("\r"===t[r]){if("\n"===t[r+1]){e.eol="\r\n";break}if(t[r+1]){e.eol="\r";break}}else if("\n"===t[r]){e.eol="\n";break}return e.eol||"\n"}},function(t,e,r){var n=r(65),i=r(73);t.exports=function(t,e){var r=i(t,e);return n(r)?r:void 0}},function(t,e,r){var n=r(19).Symbol;t.exports=n},function(t,e,r){var n=r(67),i="object"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function("return this")();t.exports=o},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e){var r=Array.isArray;t.exports=r},function(t,e,r){var n=r(30),i=r(76);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==n(t)}},function(t,e,r){"use strict";(function(e,n){var i=r(6);t.exports=g;var o,s=r(37);g.ReadableState=m,r(12).EventEmitter;var a=function(t,e){return t.listeners(e).length},u=r(24),c=r(7).Buffer,l=e.Uint8Array||function(){},f=r(5);f.inherits=r(2);var h=r(41),p=void 0;p=h&&h.debuglog?h.debuglog("stream"):function(){};var d,_=r(42),v=r(25);f.inherits(g,u);var y=["error","close","destroy","pause","resume"];function m(t,e){t=t||{};var n=e instanceof(o=o||r(1));this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,s=t.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new _,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(d||(d=r(26).StringDecoder),this.decoder=new d(t.encoding),this.encoding=t.encoding)}function g(t){if(o=o||r(1),!(this instanceof g))return new g(t);this._readableState=new m(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function b(t,e,r,n,i){var o,s=t._readableState;return null===e?(s.reading=!1,function(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,x(t)}}(t,s)):(i||(o=function(t,e){var r;return function(t){return c.isBuffer(t)||t instanceof l}(e)||"string"==typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}(s,e)),o?t.emit("error",o):s.objectMode||e&&e.length>0?("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):w(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?w(t,s,e,!1):S(t,s)):w(t,s,e,!1))):n||(s.reading=!1)),function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(s)}function w(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&x(t)),S(t,e)}Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),g.prototype.destroy=v.destroy,g.prototype._undestroy=v.undestroy,g.prototype._destroy=function(t,e){this.push(null),e(t)},g.prototype.push=function(t,e){var r,n=this._readableState;return n.objectMode?r=!0:"string"==typeof t&&((e=e||n.defaultEncoding)!==n.encoding&&(t=c.from(t,e),e=""),r=!0),b(this,t,e,!1,r)},g.prototype.unshift=function(t){return b(this,t,null,!0,!1)},g.prototype.isPaused=function(){return!1===this._readableState.flowing},g.prototype.setEncoding=function(t){return d||(d=r(26).StringDecoder),this._readableState.decoder=new d(t),this._readableState.encoding=t,this};var E=8388608;function C(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=E?t=E:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function x(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(p("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(j,t):j(t))}function j(t){p("emit readable"),t.emit("readable"),P(t)}function S(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(k,t,e))}function k(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(p("maybeReadMore read 0"),t.read(0),r!==e.length);)r=e.length;e.readingMore=!1}function R(t){p("readable nexttick read 0"),t.read(0)}function T(t,e){e.reading||(p("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),P(t),e.flowing&&!e.reading&&t.read(0)}function P(t){var e=t._readableState;for(p("flow",e.flowing);e.flowing&&null!==t.read(););}function O(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;return t<e.head.data.length?(n=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):n=t===e.head.data.length?e.shift():r?function(t,e){var r=e.head,n=1,i=r.data;for(t-=i.length;r=r.next;){var o=r.data,s=t>o.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0==(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0==(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e),n}(t,e.buffer,e.decoder),r);var r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function L(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}g.prototype.read=function(t){p("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return p("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?A(this):x(this),null;if(0===(t=C(t,e))&&e.ended)return 0===e.length&&A(this),null;var n,i=e.needReadable;return p("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&p("length less than watermark",i=!0),e.ended||e.reading?p("reading or ended",i=!1):i&&(p("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=C(r,e))),null===(n=t>0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==n&&this.emit("data",n),n},g.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},g.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,p("pipe count=%d opts=%j",o.pipesCount,e);var u=e&&!1===e.end||t===n.stdout||t===n.stderr?m:c;function c(){p("onend"),t.end()}o.endEmitted?i.nextTick(u):r.once("end",u),t.on("unpipe",(function e(n,i){p("onunpipe"),n===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,p("cleanup"),t.removeListener("close",v),t.removeListener("finish",y),t.removeListener("drain",l),t.removeListener("error",_),t.removeListener("unpipe",e),r.removeListener("end",c),r.removeListener("end",m),r.removeListener("data",d),f=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||l())}));var l=function(t){return function(){var e=t._readableState;p("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,"data")&&(e.flowing=!0,P(t))}}(r);t.on("drain",l);var f=!1,h=!1;function d(e){p("ondata"),h=!1,!1!==t.write(e)||h||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==L(o.pipes,t))&&!f&&(p("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function _(e){p("onerror",e),m(),t.removeListener("error",_),0===a(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",y),m()}function y(){p("onfinish"),t.removeListener("close",v),m()}function m(){p("unpipe"),r.unpipe(t)}return r.on("data",d),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",_),t.once("close",v),t.once("finish",y),t.emit("pipe",r),o.flowing||(p("pipe resume"),r.resume()),t},g.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)n[o].emit("unpipe",this,r);return this}var s=L(e.pipes,t);return-1===s||(e.pipes.splice(s,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,r)),this},g.prototype.on=function(t,e){var r=u.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&x(this):i.nextTick(R,this))}return r},g.prototype.addListener=g.prototype.on,g.prototype.resume=function(){var t=this._readableState;return t.flowing||(p("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(T,t,e))}(this,t)),this},g.prototype.pause=function(){return p("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(p("pause"),this._readableState.flowing=!1,this.emit("pause")),this},g.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on("end",(function(){if(p("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(i){p("wrapped data"),r.decoder&&(i=r.decoder.write(i)),(!r.objectMode||null!=i)&&(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o<y.length;o++)t.on(y[o],this.emit.bind(this,y[o]));return this._read=function(e){p("wrapped _read",e),n&&(n=!1,t.resume())},this},Object.defineProperty(g.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),g._fromList=O}).call(this,r(0),r(4))},function(t,e,r){t.exports=r(12).EventEmitter},function(t,e,r){"use strict";var n=r(6);function i(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?(n.nextTick(i,r,t),r._writableState&&(r._writableState.errorEmitted=!0)):e&&e(t)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,r){"use strict";var n=r(7).Buffer,i=n.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=u,this.end=c,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=l,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):""}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""},o.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},o.prototype.text=function(t,e){var r=function(t,e,r){var n=e.length-1;if(n<r)return 0;var i=s(e[n]);return i>=0?(i>0&&(t.lastNeed=i-1),i):--n<r||-2===i?0:(i=s(e[n]))>=0?(i>0&&(t.lastNeed=i-2),i):--n<r||-2===i?0:(i=s(e[n]))>=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){"use strict";t.exports=o;var n=r(1),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t),this._transformState={afterTransform:function(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",s)}function s(){var t=this;"function"==typeof this._flush?this._flush((function(e,r){a(t,e,r)})):a(this,null,null)}function a(t,e,r){if(e)return t.emit("error",e);if(null!=r&&t.push(r),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}i.inherits=r(2),i.inherits(o,n),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,n.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,r){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,r){var n=this._transformState;if(n.writecb=r,n.writechunk=t,n.writeencoding=e,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var r=this;n.prototype._destroy.call(this,t,(function(t){e(t),r.emit("close")}))}},function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.bufFromString=function(e){var r=t.byteLength(e),n=t.allocUnsafe?t.allocUnsafe(r):new t(r);return n.write(e),n},e.emptyBuffer=function(){return t.allocUnsafe?t.allocUnsafe(0):new t(0)},e.filterArray=function(t,e){for(var r=[],n=0;n<t.length;n++)e.indexOf(n)>-1&&r.push(t[n]);return r},e.trimLeft=String.prototype.trimLeft?function(t){return t.trimLeft()}:function(t){return t.replace(/^\s+/,"")},e.trimRight=String.prototype.trimRight?function(t){return t.trimRight()}:function(t){return t.replace(/\s+$/,"")}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=function(t){function e(e,r,n){var i=t.call(this,"Error: "+e+". JSON Line number: "+r+(n?" near: "+n:""))||this;return i.err=e,i.line=r,i.extra=n,i.name="CSV Parse Error",i}return n(e,t),e.column_mismatched=function(t,r){return new e("column_mismatched",t,r)},e.unclosed_quote=function(t,r){return new e("unclosed_quote",t,r)},e.fromJSON=function(t){return new e(t.err,t.line,t.extra)},e.prototype.toJSON=function(){return{err:this.err,line:this.line,extra:this.extra}},e}(Error);e.default=i},function(t,e,r){var n=r(18),i=r(68),o=r(69),s=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?i(t):o(t)}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,r){t.exports=r(33)},function(t,e,r){"use strict";var n=r(34),i=function(t,e){return new n.Converter(t,e)};i.csv=i,i.Converter=n.Converter,t.exports=i},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(36),s=r(50),a=r(51),u=i(r(15)),c=r(52),l=r(105),f=function(e){function i(r,n){void 0===n&&(n={});var i=e.call(this,n)||this;return i.options=n,i.params=s.mergeParams(r),i.runtime=a.initParseRuntime(i),i.result=new l.Result(i),i.processor=new c.ProcessorLocal(i),i.once("error",(function(e){t((function(){i.result.processError(e),i.emit("done",e)}))})),i.once("done",(function(){i.processor.destroy()})),i}return n(i,e),i.prototype.preRawData=function(t){return this.runtime.preRawDataHook=t,this},i.prototype.preFileLine=function(t){return this.runtime.preFileLineHook=t,this},i.prototype.subscribe=function(t,e,r){return this.parseRuntime.subscribe={onNext:t,onError:e,onCompleted:r},this},i.prototype.fromFile=function(t,e){var n=this,i=r(!function(){var t=new Error("Cannot find module 'fs'");throw t.code="MODULE_NOT_FOUND",t}());return i.exists(t,(function(r){r?i.createReadStream(t,e).pipe(n):n.emit("error",new Error("File does not exist. Check to make sure the file path to your csv is correct."))})),this},i.prototype.fromStream=function(t){return t.pipe(this),this},i.prototype.fromString=function(t){t.toString();var e=new o.Readable,r=0;return e._read=function(e){if(r>=t.length)this.push(null);else{var n=t.substr(r,e);this.push(n),r+=e}},this.fromStream(e)},i.prototype.then=function(t,e){var r=this;return new u.default((function(n,i){r.parseRuntime.then={onfulfilled:function(e){n(t?t(e):e)},onrejected:function(t){e?n(e(t)):i(t)}}}))},Object.defineProperty(i.prototype,"parseParam",{get:function(){return this.params},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"parseRuntime",{get:function(){return this.runtime},enumerable:!0,configurable:!0}),i.prototype._transform=function(t,e,r){var n=this;this.processor.process(t).then((function(t){if(t.length>0)return n.runtime.started=!0,n.result.processResult(t)})).then((function(){n.emit("drained"),r()}),(function(t){n.runtime.hasError=!0,n.runtime.error=t,n.emit("error",t),r()}))},i.prototype._flush=function(t){var e=this;this.processor.flush().then((function(t){if(t.length>0)return e.result.processResult(t)})).then((function(){e.processEnd(t)}),(function(r){e.emit("error",r),t()}))},i.prototype.processEnd=function(t){this.result.endProcess(),this.emit("done"),t()},Object.defineProperty(i.prototype,"parsedLineNumber",{get:function(){return this.runtime.parsedLineNumber},enumerable:!0,configurable:!0}),i}(o.Transform);e.Converter=f}).call(this,r(11).setImmediate)},function(t,e,r){(function(t,e){!function(t){"use strict";if(!t.setImmediate){var r,n=1,i={},o=!1,s=t.document,a=Object.getPrototypeOf&&Object.getPrototypeOf(t);a=a&&a.setTimeout?a:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){c(t)}))}:function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=r,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(r){r.source===t&&"string"==typeof r.data&&0===r.data.indexOf(e)&&c(+r.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(r){t.postMessage(e+r,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){c(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var r=s.createElement("script");r.onreadystatechange=function(){c(e),r.onreadystatechange=null,t.removeChild(r),r=null},t.appendChild(r)}}():r=function(t){setTimeout(c,0,t)},a.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),o=0;o<e.length;o++)e[o]=arguments[o+1];var s={callback:t,args:e};return i[n]=s,r(n),n++},a.clearImmediate=u}function u(t){delete i[t]}function c(t){if(o)setTimeout(c,0,t);else{var e=i[t];if(e){o=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(void 0,r)}}(e)}finally{u(t),o=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,r(0),r(4))},function(t,e,r){t.exports=i;var n=r(12).EventEmitter;function i(){n.call(this)}r(2)(i,n),i.Readable=r(13),i.Writable=r(46),i.Duplex=r(47),i.Transform=r(48),i.PassThrough=r(49),i.Stream=i,i.prototype.pipe=function(t,e){var r=this;function i(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",i),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",u));var s=!1;function a(){s||(s=!0,t.end())}function u(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function c(t){if(l(),0===n.listenerCount(this,"error"))throw t}function l(){r.removeListener("data",i),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",u),r.removeListener("error",c),t.removeListener("error",c),r.removeListener("end",l),r.removeListener("close",l),t.removeListener("close",l)}return r.on("error",c),t.on("error",c),r.on("end",l),r.on("close",l),t.on("close",l),t.emit("pipe",r),t}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){for(var e,r=u(t),n=r[0],s=r[1],a=new o(3*(n+s)/4-s),c=0,l=s>0?n-4:n,f=0;f<l;f+=4)e=i[t.charCodeAt(f)]<<18|i[t.charCodeAt(f+1)]<<12|i[t.charCodeAt(f+2)]<<6|i[t.charCodeAt(f+3)],a[c++]=e>>16&255,a[c++]=e>>8&255,a[c++]=255&e;return 2===s&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,a[c++]=255&e),1===s&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,a[c++]=e>>8&255,a[c++]=255&e),a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;s<a;s+=16383)o.push(l(t,s,s+16383>a?a:s+16383));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)n[a]=s[a],i[s.charCodeAt(a)]=a;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function l(t,e,r){for(var n,i=[],o=e;o<r;o+=3)n=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(255&t[o+2]),i.push(c(n));return i.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,l=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<<c)-1,f=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*_}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){},function(t,e,r){"use strict";var n=r(7).Buffer,i=r(43);function o(t,e,r){t.copy(e,r)}t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var e=n.allocUnsafe(t>>>0),r=this.head,i=0;r;)o(r.data,e,i),i+=r.data.length,r=r.next;return e},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,r){(function(e){function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=function(t,e){if(r("noDeprecation"))return t;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),n=!0}return t.apply(this,arguments)}}}).call(this,r(0))},function(t,e,r){"use strict";t.exports=o;var n=r(27),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=r(2),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(14)},function(t,e,r){t.exports=r(1)},function(t,e,r){t.exports=r(13).Transform},function(t,e,r){t.exports=r(13).PassThrough},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mergeParams=function(t){var e={delimiter:",",ignoreColumns:void 0,includeColumns:void 0,quote:'"',trim:!0,checkType:!1,ignoreEmpty:!1,noheader:!1,headers:void 0,flatKeys:!1,maxRowLength:0,checkColumn:!1,escape:'"',colParser:{},eol:void 0,alwaysSplitAtEOL:!1,output:"json",nullObject:!1,downstreamFormat:"line",needEmitAll:!0};for(var r in t||(t={}),t)t.hasOwnProperty(r)&&(Array.isArray(t[r])?e[r]=[].concat(t[r]):e[r]=t[r]);return e}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.initParseRuntime=function(t){var e=t.parseParam,r={needProcessIgnoreColumn:!1,needProcessIncludeColumn:!1,selectedColumns:void 0,ended:!1,hasError:!1,error:void 0,delimiter:t.parseParam.delimiter,eol:t.parseParam.eol,columnConv:[],headerType:[],headerTitle:[],headerFlag:[],headers:void 0,started:!1,parsedLineNumber:0,columnValueSetter:[]};return e.ignoreColumns&&(r.needProcessIgnoreColumn=!0),e.includeColumns&&(r.needProcessIncludeColumn=!0),r}},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(53),s=i(r(15)),a=r(54),u=i(r(16)),c=r(57),l=r(28),f=r(58),h=i(r(59)),p=i(r(29)),d=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.rowSplit=new f.RowSplit(t.converter),t.eolEmitted=!1,t._needEmitEol=void 0,t.headEmitted=!1,t._needEmitHead=void 0,t}return n(r,e),r.prototype.flush=function(){var t=this;if(this.runtime.csvLineBuffer&&this.runtime.csvLineBuffer.length>0){var e=this.runtime.csvLineBuffer;return this.runtime.csvLineBuffer=void 0,this.process(e,!0).then((function(e){return t.runtime.csvLineBuffer&&t.runtime.csvLineBuffer.length>0?s.default.reject(p.default.unclosed_quote(t.runtime.parsedLineNumber,t.runtime.csvLineBuffer.toString())):s.default.resolve(e)}))}return s.default.resolve([])},r.prototype.destroy=function(){return s.default.resolve()},Object.defineProperty(r.prototype,"needEmitEol",{get:function(){return void 0===this._needEmitEol&&(this._needEmitEol=this.converter.listeners("eol").length>0),this._needEmitEol},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"needEmitHead",{get:function(){return void 0===this._needEmitHead&&(this._needEmitHead=this.converter.listeners("header").length>0),this._needEmitHead},enumerable:!0,configurable:!0}),r.prototype.process=function(t,e){var r,n=this;return void 0===e&&(e=!1),r=e?t.toString():a.prepareData(t,this.converter.parseRuntime),s.default.resolve().then((function(){return n.runtime.preRawDataHook?n.runtime.preRawDataHook(r):r})).then((function(t){return t&&t.length>0?n.processCSV(t,e):s.default.resolve([])}))},r.prototype.processCSV=function(t,e){var r=this,n=this.params,i=this.runtime;i.eol||u.default(t,i),this.needEmitEol&&!this.eolEmitted&&i.eol&&(this.converter.emit("eol",i.eol),this.eolEmitted=!0),n.ignoreEmpty&&!i.started&&(t=l.trimLeft(t));var o=c.stringToLines(t,i);return e?(o.lines.push(o.partial),o.partial=""):this.prependLeftBuf(l.bufFromString(o.partial)),o.lines.length>0?(i.preFileLineHook?this.runPreLineHook(o.lines):s.default.resolve(o.lines)).then((function(t){return i.started||r.runtime.headers?r.processCSVBody(t):r.processDataWithHead(t)})):s.default.resolve([])},r.prototype.processDataWithHead=function(t){if(this.params.noheader)this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=[];else{for(var e="",r=[];t.length;){var n=e+t.shift(),i=this.rowSplit.parse(n);if(i.closed){r=i.cells,e="";break}e=n+u.default(n,this.runtime)}if(this.prependLeftBuf(l.bufFromString(e)),0===r.length)return[];this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=r}return(this.runtime.needProcessIgnoreColumn||this.runtime.needProcessIncludeColumn)&&this.filterHeader(),this.needEmitHead&&!this.headEmitted&&(this.converter.emit("header",this.runtime.headers),this.headEmitted=!0),this.processCSVBody(t)},r.prototype.filterHeader=function(){if(this.runtime.selectedColumns=[],this.runtime.headers){for(var t=this.runtime.headers,e=0;e<t.length;e++)if(this.params.ignoreColumns)if(this.params.ignoreColumns.test(t[e])){if(!this.params.includeColumns||!this.params.includeColumns.test(t[e]))continue;this.runtime.selectedColumns.push(e)}else this.runtime.selectedColumns.push(e);else this.params.includeColumns?this.params.includeColumns.test(t[e])&&this.runtime.selectedColumns.push(e):this.runtime.selectedColumns.push(e);this.runtime.headers=l.filterArray(this.runtime.headers,this.runtime.selectedColumns)}},r.prototype.processCSVBody=function(t){if("line"===this.params.output)return t;var e=this.rowSplit.parseMultiLines(t);return this.prependLeftBuf(l.bufFromString(e.partial)),"csv"===this.params.output?e.rowsCells:h.default(e.rowsCells,this.converter)},r.prototype.prependLeftBuf=function(e){e&&(this.runtime.csvLineBuffer?this.runtime.csvLineBuffer=t.concat([e,this.runtime.csvLineBuffer]):this.runtime.csvLineBuffer=e)},r.prototype.runPreLineHook=function(t){var e=this;return new s.default((function(r,n){!function t(e,r,n,i){if(n>=e.length)i();else if(r.preFileLineHook){var o=e[n],s=r.preFileLineHook(o,r.parsedLineNumber+n);if(n++,s&&s.then)s.then((function(o){e[n-1]=o,t(e,r,n,i)}));else{for(e[n-1]=s;n<e.length;)e[n]=r.preFileLineHook(e[n],r.parsedLineNumber+n),n++;i()}}else i()}(t,e.runtime,0,(function(e){e?n(e):r(t)}))}))},r}(o.Processor);e.ProcessorLocal=d}).call(this,r(3).Buffer)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Processor=function(t){this.converter=t,this.params=t.parseParam,this.runtime=t.parseRuntime}},function(t,e,r){"use strict";(function(t){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(55));e.prepareData=function(e,r){var n=function(e,r){return r.csvLineBuffer&&r.csvLineBuffer.length>0?t.concat([r.csvLineBuffer,e]):e}(e,r);r.csvLineBuffer=void 0;var o=function(t,e){var r=t.length-1;if(128&t[r]){for(;128==(192&t[r]);)r--;r--}return r!=t.length-1?(e.csvLineBuffer=t.slice(r+1),t.slice(0,r+1)):t}(n,r).toString("utf8");return!1===r.started?i.default(o):o}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";(function(e){var n=r(56);t.exports=function(t){return"string"==typeof t&&65279===t.charCodeAt(0)?t.slice(1):e.isBuffer(t)&&n(t)&&239===t[0]&&187===t[1]&&191===t[2]?t.slice(3):t}}).call(this,r(3).Buffer)},function(t,e){t.exports=function(t){for(var e=0;e<t.length;)if(9==t[e]||10==t[e]||13==t[e]||32<=t[e]&&t[e]<=126)e+=1;else if(194<=t[e]&&t[e]<=223&&128<=t[e+1]&&t[e+1]<=191)e+=2;else if(224==t[e]&&160<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191||(225<=t[e]&&t[e]<=236||238==t[e]||239==t[e])&&128<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191||237==t[e]&&128<=t[e+1]&&t[e+1]<=159&&128<=t[e+2]&&t[e+2]<=191)e+=3;else{if(!(240==t[e]&&144<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191||241<=t[e]&&t[e]<=243&&128<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191||244==t[e]&&128<=t[e+1]&&t[e+1]<=143&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191))return!1;e+=4}return!0}},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(16));e.stringToLines=function(t,e){var r=i.default(t,e),n=t.split(r);return{lines:n,partial:n.pop()||""}}},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(16)),o=r(28),s=[",","|","\t",";",":"],a=function(){function t(t){this.conv=t,this.cachedRegExp={},this.delimiterEmitted=!1,this._needEmitDelimiter=void 0,this.quote=t.parseParam.quote,this.trim=t.parseParam.trim,this.escape=t.parseParam.escape}return Object.defineProperty(t.prototype,"needEmitDelimiter",{get:function(){return void 0===this._needEmitDelimiter&&(this._needEmitDelimiter=this.conv.listeners("delimiter").length>0),this._needEmitDelimiter},enumerable:!0,configurable:!0}),t.prototype.parse=function(t){if(0===t.length||this.conv.parseParam.ignoreEmpty&&0===t.trim().length)return{cells:[],closed:!0};var e=this.quote,r=this.trim;this.escape,(this.conv.parseRuntime.delimiter instanceof Array||"auto"===this.conv.parseRuntime.delimiter.toLowerCase())&&(this.conv.parseRuntime.delimiter=this.getDelimiter(t)),this.needEmitDelimiter&&!this.delimiterEmitted&&(this.conv.emit("delimiter",this.conv.parseRuntime.delimiter),this.delimiterEmitted=!0);var n=this.conv.parseRuntime.delimiter,i=t.split(n);if("off"===e){if(r)for(var o=0;o<i.length;o++)i[o]=i[o].trim();return{cells:i,closed:!0}}return this.toCSVRow(i,r,e,n)},t.prototype.toCSVRow=function(t,e,r,n){for(var i=[],s=!1,a="",u=0,c=t.length;u<c;u++){var l=t[u];!s&&e&&(l=o.trimLeft(l));var f=l.length;if(s)this.isQuoteClose(l)?(s=!1,a+=n+(l=l.substr(0,f-1)),a=this.escapeQuote(a),e&&(a=o.trimRight(a)),i.push(a),a=""):a+=n+l;else{if(2===f&&l===this.quote+this.quote){i.push("");continue}if(this.isQuoteOpen(l)){if(l=l.substr(1),this.isQuoteClose(l)){l=l.substring(0,l.lastIndexOf(r)),l=this.escapeQuote(l),i.push(l);continue}if(-1!==l.indexOf(r)){for(var h=0,p="",d=0,_=l;d<_.length;d++){var v=_[d];v===r&&p!==this.escape?(h++,p=""):p=v}if(h%2==1){e&&(l=o.trimRight(l)),i.push(r+l);continue}s=!0,a+=l;continue}s=!0,a+=l;continue}e&&(l=o.trimRight(l)),i.push(l)}}return{cells:i,closed:!s}},t.prototype.getDelimiter=function(t){var e;if("auto"===this.conv.parseParam.delimiter)e=s;else{if(!(this.conv.parseParam.delimiter instanceof Array))return this.conv.parseParam.delimiter;e=this.conv.parseParam.delimiter}var r=0,n=",";return e.forEach((function(e){var i=t.split(e).length;i>r&&(n=e,r=i)})),n},t.prototype.isQuoteOpen=function(t){var e=this.quote,r=this.escape;return t[0]===e&&(t[1]!==e||t[1]===r&&(t[2]===e||2===t.length))},t.prototype.isQuoteClose=function(t){var e=this.quote,r=this.escape;this.conv.parseParam.trim&&(t=o.trimRight(t));for(var n=0,i=t.length-1;t[i]===e||t[i]===r;)i--,n++;return n%2!=0},t.prototype.escapeQuote=function(t){var e="es|"+this.quote+"|"+this.escape;void 0===this.cachedRegExp[e]&&(this.cachedRegExp[e]=new RegExp("\\"+this.escape+"\\"+this.quote,"g"));var r=this.cachedRegExp[e];return t.replace(r,this.quote)},t.prototype.parseMultiLines=function(t){for(var e=[],r="";t.length;){var n=r+t.shift(),s=this.parse(n);0===s.cells.length&&this.conv.parseParam.ignoreEmpty||(s.closed||this.conv.parseParam.alwaysSplitAtEOL?(this.conv.parseRuntime.selectedColumns?e.push(o.filterArray(s.cells,this.conv.parseRuntime.selectedColumns)):e.push(s.cells),r=""):r=n+(i.default(n,this.conv.parseRuntime)||"\n"))}return{rowsCells:e,partial:r}},t}();e.RowSplit=a},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(29)),o=n(r(60)),s=/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;function a(t,e,r){if(e.parseParam.checkColumn&&e.parseRuntime.headers&&t.length!==e.parseRuntime.headers.length)throw i.default.column_mismatched(e.parseRuntime.parsedLineNumber+r);return function(t,e,r){for(var n=!1,i={},o=0,s=t.length;o<s;o++){var a=t[o];if(!r.parseParam.ignoreEmpty||""!==a){n=!0;var u=e[o];u&&""!==u||(u=e[o]="field"+(o+1));var f=c(u,o,r);if(f){var h=f(a,u,i,t,o);void 0!==h&&l(i,u,h,r,o)}else r.parseParam.checkType&&(a=p(0,u,o,r)(a)),void 0!==a&&l(i,u,a,r,o)}}return n?i:null}(t,e.parseRuntime.headers||[],e)||null}e.default=function(t,e){for(var r=[],n=0,i=t.length;n<i;n++){var o=a(t[n],e,n);o&&r.push(o)}return r};var u={string:_,number:d,omit:function(){}};function c(t,e,r){if(void 0!==r.parseRuntime.columnConv[e])return r.parseRuntime.columnConv[e];var n=r.parseParam.colParser[t];if(void 0===n)return r.parseRuntime.columnConv[e]=null;if("object"==typeof n&&(n=n.cellParser||"string"),"string"==typeof n){n=n.trim().toLowerCase();var i=u[n];return r.parseRuntime.columnConv[e]=i||null}return r.parseRuntime.columnConv[e]="function"==typeof n?n:null}function l(t,e,r,n,i){if(!n.parseRuntime.columnValueSetter[i])if(n.parseParam.flatKeys)n.parseRuntime.columnValueSetter[i]=f;else if(e.indexOf(".")>-1){for(var o=e.split("."),s=!0;o.length>0;)if(0===o.shift().length){s=!1;break}!s||n.parseParam.colParser[e]&&n.parseParam.colParser[e].flat?n.parseRuntime.columnValueSetter[i]=f:n.parseRuntime.columnValueSetter[i]=h}else n.parseRuntime.columnValueSetter[i]=f;!0===n.parseParam.nullObject&&"null"===r&&(r=null),n.parseRuntime.columnValueSetter[i](t,e,r)}function f(t,e,r){t[e]=r}function h(t,e,r){o.default(t,e,r)}function p(t,e,r,n){return n.parseRuntime.headerType[r]?n.parseRuntime.headerType[r]:e.indexOf("number#!")>-1?n.parseRuntime.headerType[r]=d:e.indexOf("string#!")>-1?n.parseRuntime.headerType[r]=_:n.parseParam.checkType?n.parseRuntime.headerType[r]=v:n.parseRuntime.headerType[r]=_}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function _(t){return t.toString()}function v(t){var e=t.trim();return""===e?_(t):s.test(e)?d(t):5===e.length&&"false"===e.toLowerCase()||4===e.length&&"true"===e.toLowerCase()?function(t){var e=t.trim();return 5!==e.length||"false"!==e.toLowerCase()}(t):"{"===e[0]&&"}"===e[e.length-1]||"["===e[0]&&"]"===e[e.length-1]?function(t){try{return JSON.parse(t)}catch(e){return t}}(t):_(t)}},function(t,e,r){var n=r(61);t.exports=function(t,e,r){return null==t?t:n(t,e,r)}},function(t,e,r){var n=r(62),i=r(74),o=r(103),s=r(20),a=r(104);t.exports=function(t,e,r,u){if(!s(t))return t;for(var c=-1,l=(e=i(e,t)).length,f=l-1,h=t;null!=h&&++c<l;){var p=a(e[c]),d=r;if(c!=f){var _=h[p];void 0===(d=u?u(_,p,h):void 0)&&(d=s(_)?_:o(e[c+1])?[]:{})}n(h,p,d),h=h[p]}return t}},function(t,e,r){var n=r(63),i=r(31),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){var s=t[e];o.call(t,e)&&i(s,r)&&(void 0!==r||e in t)||n(t,e,r)}},function(t,e,r){var n=r(64);t.exports=function(t,e,r){"__proto__"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},function(t,e,r){var n=r(17),i=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,r){var n=r(66),i=r(70),o=r(20),s=r(72),a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,f=c.hasOwnProperty,h=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!o(t)||i(t))&&(n(t)?h:a).test(s(t))}},function(t,e,r){var n=r(30),i=r(20);t.exports=function(t){if(!i(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,r){(function(e){var r="object"==typeof e&&e&&e.Object===Object&&e;t.exports=r}).call(this,r(0))},function(t,e,r){var n=r(18),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=n?n.toStringTag:void 0;t.exports=function(t){var e=o.call(t,a),r=t[a];try{t[a]=void 0;var n=!0}catch(t){}var i=s.call(t);return n&&(e?t[a]=r:delete t[a]),i}},function(t,e){var r=Object.prototype.toString;t.exports=function(t){return r.call(t)}},function(t,e,r){var n=r(71),i=function(){var t=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();t.exports=function(t){return!!i&&i in t}},function(t,e,r){var n=r(19)["__core-js_shared__"];t.exports=n},function(t,e){var r=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return r.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,r){var n=r(21),i=r(75),o=r(77),s=r(100);t.exports=function(t,e){return n(t)?t:i(t,e)?[t]:o(s(t))}},function(t,e,r){var n=r(21),i=r(22),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(n(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!i(t))||s.test(t)||!o.test(t)||null!=e&&t in Object(e)}},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,r){var n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,o=r(78)((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(n,(function(t,r,n,o){e.push(n?o.replace(i,"$1"):r||t)})),e}));t.exports=o},function(t,e,r){var n=r(79);t.exports=function(t){var e=n(t,(function(t){return 500===r.size&&r.clear(),t})),r=e.cache;return e}},function(t,e,r){var n=r(80);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var s=t.apply(this,n);return r.cache=o.set(i,s)||o,s};return r.cache=new(i.Cache||n),r}i.Cache=n,t.exports=i},function(t,e,r){var n=r(81),i=r(95),o=r(97),s=r(98),a=r(99);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e,r){var n=r(82),i=r(88),o=r(94);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(o||i),string:new n}}},function(t,e,r){var n=r(83),i=r(84),o=r(85),s=r(86),a=r(87);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e,r){var n=r(8);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(t,e,r){var n=r(8),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return i.call(e,t)?e[t]:void 0}},function(t,e,r){var n=r(8),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:i.call(e,t)}},function(t,e,r){var n=r(8);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},function(t,e,r){var n=r(89),i=r(90),o=r(91),s=r(92),a=r(93);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,r){var n=r(9),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0||(r==e.length-1?e.pop():i.call(e,r,1),--this.size,0))}},function(t,e,r){var n=r(9);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},function(t,e,r){var n=r(9);t.exports=function(t){return n(this.__data__,t)>-1}},function(t,e,r){var n=r(9);t.exports=function(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},function(t,e,r){var n=r(17)(r(19),"Map");t.exports=n},function(t,e,r){var n=r(10);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).get(t)}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).has(t)}},function(t,e,r){var n=r(10);t.exports=function(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},function(t,e,r){var n=r(101);t.exports=function(t){return null==t?"":n(t)}},function(t,e,r){var n=r(18),i=r(102),o=r(21),s=r(22),a=n?n.prototype:void 0,u=a?a.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(o(e))return i(e,t)+"";if(s(e))return u?u.call(e):"";var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}},function(t,e){t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r<n;)i[r]=e(t[r],r,t);return i}},function(t,e){var r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},function(t,e,r){var n=r(22);t.exports=function(t){if("string"==typeof t||n(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(15)),o=r(106),s=function(){function t(t){this.converter=t,this.finalResult=[]}return Object.defineProperty(t.prototype,"needEmitLine",{get:function(){return!!this.converter.parseRuntime.subscribe&&!!this.converter.parseRuntime.subscribe.onNext||this.needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"needPushDownstream",{get:function(){return void 0===this._needPushDownstream&&(this._needPushDownstream=this.converter.listeners("data").length>0||this.converter.listeners("readable").length>0),this._needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"needEmitAll",{get:function(){return!!this.converter.parseRuntime.then&&this.converter.parseParam.needEmitAll},enumerable:!0,configurable:!0}),t.prototype.processResult=function(t){var e=this,r=this.converter.parseRuntime.parsedLineNumber;return this.needPushDownstream&&"array"===this.converter.parseParam.downstreamFormat&&0===r&&a(this.converter,"["+o.EOL),new i.default((function(r,n){e.needEmitLine?function t(e,r,n,i,o){if(n>=e.length)o();else if(r.parseRuntime.subscribe&&r.parseRuntime.subscribe.onNext){var s=r.parseRuntime.subscribe.onNext,u=e[n],c=s(u,r.parseRuntime.parsedLineNumber+n);if(n++,c&&c.then)c.then((function(){!function(e,r,n,i,o,s,u){o&&a(n,u),t(e,n,i,o,s)}(e,0,r,n,i,o,u)}),o);else{for(i&&a(r,u);n<e.length;){var l=e[n];s(l,r.parseRuntime.parsedLineNumber+n),n++,i&&a(r,l)}o()}}else{if(i)for(;n<e.length;)l=e[n++],a(r,l);o()}}(t,e.converter,0,e.needPushDownstream,(function(i){i?n(i):(e.appendFinalResult(t),r())})):(e.appendFinalResult(t),r())}))},t.prototype.appendFinalResult=function(t){this.needEmitAll&&(this.finalResult=this.finalResult.concat(t)),this.converter.parseRuntime.parsedLineNumber+=t.length},t.prototype.processError=function(t){this.converter.parseRuntime.subscribe&&this.converter.parseRuntime.subscribe.onError&&this.converter.parseRuntime.subscribe.onError(t),this.converter.parseRuntime.then&&this.converter.parseRuntime.then.onrejected&&this.converter.parseRuntime.then.onrejected(t)},t.prototype.endProcess=function(){this.converter.parseRuntime.then&&this.converter.parseRuntime.then.onfulfilled&&(this.needEmitAll?this.converter.parseRuntime.then.onfulfilled(this.finalResult):this.converter.parseRuntime.then.onfulfilled([])),this.converter.parseRuntime.subscribe&&this.converter.parseRuntime.subscribe.onCompleted&&this.converter.parseRuntime.subscribe.onCompleted(),this.needPushDownstream&&"array"===this.converter.parseParam.downstreamFormat&&a(this.converter,"]"+o.EOL)},t}();function a(t,e){if("object"!=typeof e||t.options.objectMode)t.push(e);else{var r=JSON.stringify(e);t.push(r+("array"===t.parseParam.downstreamFormat?","+o.EOL:o.EOL),"utf8")}}e.Result=s},function(t,e){e.endianness=function(){return"LE"},e.hostname=function(){return"undefined"!=typeof location?location.hostname:""},e.loadavg=function(){return[]},e.uptime=function(){return 0},e.freemem=function(){return Number.MAX_VALUE},e.totalmem=function(){return Number.MAX_VALUE},e.cpus=function(){return[]},e.type=function(){return"Browser"},e.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},e.networkInterfaces=e.getNetworkInterfaces=function(){return{}},e.arch=function(){return"javascript"},e.platform=function(){return"browser"},e.tmpdir=e.tmpDir=function(){return"/tmp"},e.EOL="\n",e.homedir=function(){return"/"}}])}}]);
+//# sourceMappingURL=2847.009c96ee.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2847.009c96ee.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,6 @@
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2847.009c96ee.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2847.009c96ee.chunk.js","mappings":"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","sources":["../../../node_modules/csvtojson/browser/browser.js"],"sourcesContent":["module.exports=function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=32)}([function(t,e){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";var n=r(6),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=f;var o=r(5);o.inherits=r(2);var s=r(23),a=r(14);o.inherits(f,s);for(var u=i(a.prototype),c=0;c<u.length;c++){var l=u[c];f.prototype[l]||(f.prototype[l]=a.prototype[l])}function f(t){if(!(this instanceof f))return new f(t);s.call(this,t),a.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once(\"end\",h)}function h(){this.allowHalfOpen||this._writableState.ended||n.nextTick(p,this)}function p(t){t.end()}Object.defineProperty(f.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(f.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),f.prototype._destroy=function(t,e){this.push(null),this.end(),n.nextTick(e,t)}},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nvar n=r(38),i=r(39),o=r(40);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()<e)throw new RangeError(\"Invalid typed array length\");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,r){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,r);if(\"number\"==typeof t){if(\"string\"==typeof e)throw new Error(\"If encoding is specified then the first argument must be a string\");return f(this,t)}return c(this,t,e,r)}function c(t,e,r,n){if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError(\"'offset' is out of bounds\");if(e.byteLength<r+(n||0))throw new RangeError(\"'length' is out of bounds\");return e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n),u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=h(t,e),t}(t,e,r,n):\"string\"==typeof e?function(t,e,r){if(\"string\"==typeof r&&\"\"!==r||(r=\"utf8\"),!u.isEncoding(r))throw new TypeError('\"encoding\" must be a valid string encoding');var n=0|d(e,r),i=(t=a(t,n)).write(e,r);return i!==n&&(t=t.slice(0,i)),t}(t,e,r):function(t,e){if(u.isBuffer(e)){var r=0|p(e.length);return 0===(t=a(t,r)).length?t:(e.copy(t,0,0,r),t)}if(e){if(\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return\"number\"!=typeof e.length||function(t){return t!=t}(e.length)?a(t,0):h(t,e);if(\"Buffer\"===e.type&&o(e.data))return h(t,e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(t,e)}function l(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be a number');if(t<0)throw new RangeError('\"size\" argument must not be negative')}function f(t,e){if(l(e),t=a(t,e<0?0:0|p(e)),!u.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function h(t,e){var r=e.length<0?0:0|p(e.length);t=a(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function p(t){if(t>=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return N(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return H(t).length;default:if(n)return N(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function _(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function v(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function y(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===u)return l*s}else-1!==l&&(o-=o-l),l=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;h<u;h++)if(c(t,o+h)!==c(e,h)){f=!1;break}if(f)return o}return-1}function m(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(isNaN(a))return s;t[r+s]=a}return s}function g(t,e,r,n){return V(N(e,t.length-r),t,r,n)}function b(t,e,r,n){return V(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function w(t,e,r,n){return b(t,e,r,n)}function E(t,e,r,n){return V(H(e),t,r,n)}function C(t,e,r,n){return V(function(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)n=(r=t.charCodeAt(s))>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function j(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],l=null,f=c>239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);for(var r=\"\",n=0;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=S));return r}(n)}e.Buffer=u,e.SlowBuffer=function(t){return+t!=t&&(t=0),u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=s(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,r){return c(null,t,e,r)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,r){return function(t,e,r,n){return l(e),e<=0?a(t,e):void 0!==r?\"string\"==typeof n?a(t,e).fill(r,n):a(t,e).fill(r):a(t,e)}(null,t,e,r)},u.allocUnsafe=function(t){return f(null,t)},u.allocUnsafeSlow=function(t){return f(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,e){if(!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError(\"Arguments must be Buffers\");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i<o;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},u.concat=function(t,e){if(!o(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=u.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var s=t[r];if(!u.isBuffer(s))throw new TypeError('\"list\" argument must be an Array of Buffers');s.copy(n,i),i+=s.length}return n},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)_(this,e,e+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)_(this,e,e+3),_(this,e+1,e+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)_(this,e,e+7),_(this,e+1,e+6),_(this,e+2,e+5),_(this,e+3,e+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?\"\":0===arguments.length?j(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return T(this,e,r);case\"utf8\":case\"utf-8\":return j(this,e,r);case\"ascii\":return R(this,e,r);case\"latin1\":case\"binary\":return k(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return P(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t=\"\",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(t+=\" ... \")),\"<Buffer \"+t+\">\"},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,s=r-e,a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;f<a;++f)if(c[f]!==l[f]){o=c[f],s=l[f];break}return o<s?-1:s<o?1:0},u.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},u.prototype.indexOf=function(t,e,r){return v(this,t,e,r,!0)},u.prototype.lastIndexOf=function(t,e,r){return v(this,t,e,r,!1)},u.prototype.write=function(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e|=0,isFinite(r)?(r|=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return g(this,t,e,r);case\"ascii\":return b(this,t,e,r);case\"latin1\":case\"binary\":return w(this,t,e,r);case\"base64\":return E(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return C(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function R(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function T(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",o=e;o<r;++o)i+=U(t[o]);return i}function P(t,e,r){for(var n=t.slice(e,r),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function O(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function A(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function M(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function B(t,e,r,n,o){return o||M(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,o){return o||M(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if(t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t),u.TYPED_ARRAY_SUPPORT)(r=this.subarray(t,e)).__proto__=u.prototype;else{var i=e-t;r=new u(i,void 0);for(var o=0;o<i;++o)r[o]=this[o+t]}return r},u.prototype.readUIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n},u.prototype.readUIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||O(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||O(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||O(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||O(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||O(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o<r&&(i*=256);)this[e+o]=t/i&255;return e+r},u.prototype.writeUIntBE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o<r&&(s*=256);)t<0&&0===a&&0!==this[e+o-1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return B(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return B(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i,o=n-r;if(this===t&&r<e&&e<n)for(i=o-1;i>=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+o),e);return o},u.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!u.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n)}else\"number\"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var o;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o<r;++o)this[o]=t;else{var s=u.isBuffer(t)?t:N(new u(t,n).toString()),a=s.length;for(o=0;o<r-e;++o)this[o+e]=s[o%a]}return this};var I=/[^+\\/0-9A-Za-z-_]/g;function U(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function N(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(I,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function V(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e){var r,n,i=t.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r=\"function\"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n=\"function\"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&p())}function p(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f<e;)u&&u[f].run();f=-1,e=c.length}u=null,l=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===s||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];c.push(new d(t,e)),1!==c.length||l||a(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=_,i.addListener=_,i.once=_,i.off=_,i.removeListener=_,i.removeAllListeners=_,i.emit=_,i.prependListener=_,i.prependOnceListener=_,i.listeners=function(t){return[]},i.binding=function(t){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(t){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},function(t,e,r){(function(t){function r(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):\"[object Array]\"===r(t)},e.isBoolean=function(t){return\"boolean\"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return\"number\"==typeof t},e.isString=function(t){return\"string\"==typeof t},e.isSymbol=function(t){return\"symbol\"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return\"[object RegExp]\"===r(t)},e.isObject=function(t){return\"object\"==typeof t&&null!==t},e.isDate=function(t){return\"[object Date]\"===r(t)},e.isError=function(t){return\"[object Error]\"===r(t)||t instanceof Error},e.isFunction=function(t){return\"function\"==typeof t},e.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(this,r(3).Buffer)},function(t,e,r){\"use strict\";(function(e){!e.version||0===e.version.indexOf(\"v0.\")||0===e.version.indexOf(\"v1.\")&&0!==e.version.indexOf(\"v1.8.\")?t.exports={nextTick:function(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError('\"callback\" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(a-1),s=0;s<o.length;)o[s++]=arguments[s];return e.nextTick(function(){t.apply(null,o)})}}}:t.exports=e}).call(this,r(4))},function(t,e,r){var n=r(3),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,e),e.Buffer=s),o(i,s),s.from=function(t,e,r){if(\"number\"==typeof t)throw new TypeError(\"Argument must not be a number\");return i(t,e,r)},s.alloc=function(t,e,r){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");var n=i(t);return void 0!==e?\"string\"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},s.allocUnsafe=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return i(t)},s.allocUnsafeSlow=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(t)}},function(t,e,r){var n=r(17)(Object,\"create\");t.exports=n},function(t,e,r){var n=r(31);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return-1}},function(t,e,r){var n=r(96);t.exports=function(t,e){var r=t.__data__;return n(e)?r[\"string\"==typeof e?\"string\":\"hash\"]:r.map}},function(t,e,r){(function(t){var n=void 0!==t&&t||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},r(35),e.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return\"function\"==typeof t}function i(t){return\"object\"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!function(t){return\"number\"==typeof t}(t)||t<0||isNaN(t))throw TypeError(\"n must be a positive number\");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,s,a,u,c;if(this._events||(this._events={}),\"error\"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var l=new Error('Uncaught, unspecified \"error\" event. ('+e+\")\");throw l.context=e,l}if(o(r=this._events[t]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),r.apply(this,a)}else if(i(r))for(a=Array.prototype.slice.call(arguments,1),s=(c=r.slice()).length,u=0;u<s;u++)c[u].apply(this,a);return!0},r.prototype.addListener=function(t,e){var s;if(!n(e))throw TypeError(\"listener must be a function\");return this._events||(this._events={}),this._events.newListener&&this.emit(\"newListener\",t,n(e.listener)?e.listener:e),this._events[t]?i(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,i(this._events[t])&&!this._events[t].warned&&(s=o(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&s>0&&this._events[t].length>s&&(this._events[t].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[t].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){if(!n(e))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(t,i),r||(r=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},r.prototype.removeListener=function(t,e){var r,o,s,a;if(!n(e))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[t])return this;if(s=(r=this._events[t]).length,o=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit(\"removeListener\",t,e);else if(i(r)){for(a=s;a-- >0;)if(r[a]===e||r[a].listener&&r[a].listener===e){o=a;break}if(o<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit(\"removeListener\",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)\"removeListener\"!==e&&this.removeAllListeners(e);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[t]))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){(e=t.exports=r(23)).Stream=e,e.Readable=e,e.Writable=r(14),e.Duplex=r(1),e.Transform=r(27),e.PassThrough=r(45)},function(t,e,r){\"use strict\";(function(e,n,i){var o=r(6);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;for(t.entry=null;n;){var i=n.callback;e.pendingcb--,i(void 0),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var a,u=!e.browser&&[\"v0.10\",\"v0.9.\"].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;m.WritableState=y;var c=r(5);c.inherits=r(2);var l,f={deprecate:r(44)},h=r(24),p=r(7).Buffer,d=i.Uint8Array||function(){},_=r(25);function v(){}function y(t,e){a=a||r(1),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(x,t,e),t._writableState.errorEmitted=!0,t.emit(\"error\",n)):(i(n),t._writableState.errorEmitted=!0,t.emit(\"error\",n),x(t,e))}(t,r,n,e,i);else{var s=E(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||w(t,r),n?u(b,t,r,s,i):b(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function m(t){if(a=a||r(1),!(l.call(m,this)||this instanceof a))return new m(t);this._writableState=new y(t,this),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),h.call(this)}function g(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function b(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}(t,e),e.pendingcb--,n(),x(t,e)}function w(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,g(t,e,!0,e.length,i,\"\",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(g(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final(function(r){e.pendingcb--,r&&t.emit(\"error\",r),e.prefinished=!0,t.emit(\"prefinish\"),x(t,e)})}function x(t,e){var r=E(e);return r&&(function(t,e){e.prefinished||e.finalCalled||(\"function\"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(C,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit(\"finish\"))),r}c.inherits(m,h),y.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(y.prototype,\"buffer\",{get:f.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(t){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===m&&t&&t._writableState instanceof y}})):l=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},m.prototype.write=function(t,e,r){var n=this._writableState,i=!1,s=!n.objectMode&&function(t){return p.isBuffer(t)||t instanceof d}(t);return s&&!p.isBuffer(t)&&(t=function(t){return p.from(t)}(t)),\"function\"==typeof e&&(r=e,e=null),s?e=\"buffer\":e||(e=n.defaultEncoding),\"function\"!=typeof r&&(r=v),n.ended?function(t,e){var r=new Error(\"write after end\");t.emit(\"error\",r),o.nextTick(e,r)}(this,r):(s||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||e.objectMode||(s=new TypeError(\"Invalid non-string/buffer chunk\")),s&&(t.emit(\"error\",s),o.nextTick(n,s),i=!1),i}(this,n,t,r))&&(n.pendingcb++,i=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||\"string\"!=typeof e||(e=p.from(e,r)),e}(e,n,i);n!==s&&(r=!0,i=\"buffer\",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length<e.highWaterMark;if(u||(e.needDrain=!0),e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else g(t,e,!1,a,n,i,o);return u}(this,n,s,t,e,r)),i},m.prototype.cork=function(){this._writableState.corked++},m.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},m.prototype.setDefaultEncoding=function(t){if(\"string\"==typeof t&&(t=t.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((t+\"\").toLowerCase())>-1))throw new TypeError(\"Unknown encoding: \"+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,r){r(new Error(\"_write() is not implemented\"))},m.prototype._writev=null,m.prototype.end=function(t,e,r){var n=this._writableState;\"function\"==typeof t?(r=t,t=null,e=null):\"function\"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,x(t,e),r&&(e.finished?o.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(m.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=_.destroy,m.prototype._undestroy=_.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(4),r(11).setImmediate,r(0))},function(t,e,r){(function(e,r,n){t.exports=function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u=\"function\"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error(\"Cannot find module '\"+s+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var l=r[s]={exports:{}};e[s][0].call(l.exports,function(t){return i(e[s][1][t]||t)},l,l.exports,t,e,r,n)}return r[s].exports}for(var o=\"function\"==typeof _dereq_&&_dereq_,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t._SomePromiseArray;function r(t){var r=new e(t),n=r.promise();return r.setHowMany(1),r.setUnwrap(),r.init(),n}t.any=function(t){return r(t)},t.prototype.any=function(){return r(this)}}},{}],2:[function(t,r,n){\"use strict\";var i;try{throw new Error}catch(t){i=t}var o=t(\"./schedule\"),s=t(\"./queue\"),a=t(\"./util\");function u(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new s(16),this._normalQueue=new s(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=o}function c(t,e,r){this._lateQueue.push(t,e,r),this._queueTick()}function l(t,e,r){this._normalQueue.push(t,e,r),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}u.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},u.prototype.hasCustomScheduler=function(){return this._customScheduler},u.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},u.prototype.disableTrampolineIfNecessary=function(){a.hasDevTools&&(this._trampolineEnabled=!1)},u.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},u.prototype.fatalError=function(t,r){r?(e.stderr.write(\"Fatal \"+(t instanceof Error?t.stack:t)+\"\\n\"),e.exit(2)):this.throwLater(t)},u.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),\"undefined\"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error(\"No async scheduler available\\n\\n    See http://goo.gl/MqrFmX\\n\")}},a.hasDevTools?(u.prototype.invokeLater=function(t,e,r){this._trampolineEnabled?c.call(this,t,e,r):this._schedule(function(){setTimeout(function(){t.call(e,r)},100)})},u.prototype.invoke=function(t,e,r){this._trampolineEnabled?l.call(this,t,e,r):this._schedule(function(){t.call(e,r)})},u.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(u.prototype.invokeLater=c,u.prototype.invoke=l,u.prototype.settlePromises=f),u.prototype._drainQueue=function(t){for(;t.length()>0;){var e=t.shift();if(\"function\"==typeof e){var r=t.shift(),n=t.shift();e.call(r,n)}else e._settlePromises()}},u.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},u.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},u.prototype._reset=function(){this._isTickUsed=!1},r.exports=u,r.exports.firstLineError=i},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},u=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=r(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:c};f._then(e,s,void 0,l,h),c._then(a,u,void 0,l,h),l._setOnCancel(c)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,r){return t.resolve(r).bind(e)}}},{}],4:[function(t,e,r){\"use strict\";var n;\"undefined\"!=typeof Promise&&(n=Promise);var i=t(\"./promise\")();i.noConflict=function(){try{Promise===i&&(Promise=n)}catch(t){}return i},e.exports=i},{\"./promise\":22}],5:[function(t,e,r){\"use strict\";var n=Object.create;if(n){var i=n(null),o=n(null);i[\" size\"]=o[\" size\"]=0}e.exports=function(e){var r=t(\"./util\"),n=r.canEvaluate;function i(t){return function(t,n){var i;if(null!=t&&(i=t[n]),\"function\"!=typeof i){var o=\"Object \"+r.classString(t)+\" has no method '\"+r.toString(n)+\"'\";throw new e.TypeError(o)}return i}(t,this.pop()).apply(t,this)}function o(t){return t[this]}function s(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}r.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if(\"number\"==typeof t)e=s;else if(n){var r=(void 0)(t);e=null!==r?r:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{\"./util\":36}],6:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i){var o=t(\"./util\"),s=o.tryCatch,a=o.errorObj,u=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn(\"cancellation is disabled\");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var r=t._cancellationParent;if(null==r||!r._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=r}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var r=0;r<t.length;++r)this._doInvokeOnCancel(t[r],e);else if(void 0!==t)if(\"function\"==typeof t){if(!e){var n=s(t).call(this._boundValue());n===a&&(this._attachExtraTrace(n.e),u.throwLater(n.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),u.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{\"./util\":36}],7:[function(t,e,r){\"use strict\";e.exports=function(e){var r=t(\"./util\"),n=t(\"./es5\").keys,i=r.tryCatch,o=r.errorObj;return function(t,s,a){return function(u){var c=a._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(u instanceof f)return i(s).call(c,u)}else if(\"function\"==typeof f){var h=i(f).call(c,u);if(h===o)return h;if(h)return i(s).call(c,u)}else if(r.isObject(u)){for(var p=n(f),d=0;d<p.length;++d){var _=p[d];if(f[_]!=u[_])continue t}return i(s).call(c,u)}}return e}}}},{\"./es5\":13,\"./util\":36}],8:[function(t,e,r){\"use strict\";e.exports=function(t){var e=!1,r=[];function n(){this._trace=new n.CapturedTrace(i())}function i(){var t=r.length-1;if(t>=0)return r[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=r.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var r=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,u=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=r,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=u,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,r,n){\"use strict\";r.exports=function(r,n){var i,o,s,a=r._getDomain,u=r._async,c=t(\"./errors\").Warning,l=t(\"./util\"),f=l.canAttachTrace,h=/[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/,p=/\\((?:timers\\.js):\\d+:\\d+\\)/,d=/[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/,_=null,v=null,y=!1,m=!(0==l.env(\"BLUEBIRD_DEBUG\")),g=!(0==l.env(\"BLUEBIRD_WARNINGS\")||!m&&!l.env(\"BLUEBIRD_WARNINGS\")),b=!(0==l.env(\"BLUEBIRD_LONG_STACK_TRACES\")||!m&&!l.env(\"BLUEBIRD_LONG_STACK_TRACES\")),w=0!=l.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\")&&(g||!!l.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));r.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},r.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},r.prototype._notifyUnhandledRejectionIsHandled=function(){q(\"rejectionHandled\",i,void 0,this)},r.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},r.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},r.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q(\"unhandledRejection\",o,t,this)}},r.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},r.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},r.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},r.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},r.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},r.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},r.prototype._warn=function(t,e,r){return U(t,e,r||this)},r.onPossiblyUnhandledRejection=function(t){var e=a();o=\"function\"==typeof t?null===e?t:l.domainBind(e,t):void 0},r.onUnhandledRejectionHandled=function(t){var e=a();i=\"function\"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};r.longStackTraces=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n    See http://goo.gl/MqrFmX\\n\");if(!J.longStackTraces&&Y()){var t=r.prototype._captureStackTrace,e=r.prototype._attachExtraTrace;J.longStackTraces=!0,E=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n    See http://goo.gl/MqrFmX\\n\");r.prototype._captureStackTrace=t,r.prototype._attachExtraTrace=e,n.deactivateLongStackTraces(),u.enableTrampoline(),J.longStackTraces=!1},r.prototype._captureStackTrace=D,r.prototype._attachExtraTrace=I,n.activateLongStackTraces(),u.disableTrampolineIfNecessary()}},r.hasLongStackTraces=function(){return J.longStackTraces&&Y()};var C=function(){try{if(\"function\"==typeof CustomEvent){var t=new CustomEvent(\"CustomEvent\");return l.global.dispatchEvent(t),function(t,e){var r=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!l.global.dispatchEvent(r)}}return\"function\"==typeof Event?(t=new Event(\"CustomEvent\"),l.global.dispatchEvent(t),function(t,e){var r=new Event(t.toLowerCase(),{cancelable:!0});return r.detail=e,!l.global.dispatchEvent(r)}):((t=document.createEvent(\"CustomEvent\")).initCustomEvent(\"testingtheevent\",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var r=document.createEvent(\"CustomEvent\");return r.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(r)})}catch(t){}return function(){return!1}}(),x=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e=\"on\"+t.toLowerCase(),r=l.global[e];return!!r&&(r.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function j(t,e){return{promise:e}}var S={promiseCreated:j,promiseFulfilled:j,promiseRejected:j,promiseResolved:j,promiseCancelled:j,promiseChained:function(t,e,r){return{promise:e,child:r}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,r){return{reason:e,promise:r}},rejectionHandled:j},R=function(t){var e=!1;try{e=x.apply(null,arguments)}catch(t){u.throwLater(t),e=!0}var r=!1;try{r=C(t,S[t].apply(null,arguments))}catch(t){u.throwLater(t),r=!0}return r||e};function k(){return!1}function T(t,e,r){var n=this;try{t(e,r,function(t){if(\"function\"!=typeof t)throw new TypeError(\"onCancel must be a function, got: \"+l.toString(t));n._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function O(){return this._onCancelField}function A(t){this._onCancelField=t}function F(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var r=t._branchesRemainingToCancel;void 0===r&&(r=0),t._branchesRemainingToCancel=r+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}r.config=function(t){if(\"longStackTraces\"in(t=Object(t))&&(t.longStackTraces?r.longStackTraces():!t.longStackTraces&&r.hasLongStackTraces()&&E()),\"warnings\"in t){var e=t.warnings;J.warnings=!!e,w=J.warnings,l.isObject(e)&&\"wForgottenReturn\"in e&&(w=!!e.wForgottenReturn)}if(\"cancellation\"in t&&t.cancellation&&!J.cancellation){if(u.haveItemsQueued())throw new Error(\"cannot enable cancellation after promises are in use\");r.prototype._clearCancellationData=F,r.prototype._propagateFrom=L,r.prototype._onCancel=O,r.prototype._setOnCancel=A,r.prototype._attachCancellationCallback=P,r.prototype._execute=T,M=L,J.cancellation=!0}return\"monitoring\"in t&&(t.monitoring&&!J.monitoring?(J.monitoring=!0,r.prototype._fireEvent=R):!t.monitoring&&J.monitoring&&(J.monitoring=!1,r.prototype._fireEvent=k)),r},r.prototype._fireEvent=k,r.prototype._execute=function(t,e,r){try{t(e,r)}catch(t){return t}},r.prototype._onCancel=function(){},r.prototype._setOnCancel=function(t){},r.prototype._attachCancellationCallback=function(t){},r.prototype._captureStackTrace=function(){},r.prototype._attachExtraTrace=function(){},r.prototype._clearCancellationData=function(){},r.prototype._propagateFrom=function(t,e){};var M=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function B(){var t=this._boundTo;return void 0!==t&&t instanceof r?t.isFulfilled()?t.value():void 0:t}function D(){this._trace=new X(this._peekContext())}function I(t,e){if(f(t)){var r=this._trace;if(void 0!==r&&e&&(r=r._parent),void 0!==r)r.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=H(t);l.notEnumerableProp(t,\"stack\",n.message+\"\\n\"+n.stack.join(\"\\n\")),l.notEnumerableProp(t,\"__stackCleaned__\",!0)}}}function U(t,e,n){if(J.warnings){var i,o=new c(t);if(e)n._attachExtraTrace(o);else if(J.longStackTraces&&(i=r._peekContext()))i.attachExtraTrace(o);else{var s=H(o);o.stack=s.message+\"\\n\"+s.stack.join(\"\\n\")}R(\"warning\",o)||V(o,\"\",!0)}}function N(t){for(var e=[],r=0;r<t.length;++r){var n=t[r],i=\"    (No stack trace)\"===n||_.test(n),o=i&&$(n);i&&!o&&(y&&\" \"!==n.charAt(0)&&(n=\"    \"+n),e.push(n))}return e}function H(t){var e=t.stack,r=t.toString();return e=\"string\"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\\s+$/g,\"\").split(\"\\n\"),r=0;r<e.length;++r){var n=e[r];if(\"    (No stack trace)\"===n||_.test(n))break}return r>0&&\"SyntaxError\"!=t.name&&(e=e.slice(r)),e}(t):[\"    (No stack trace)\"],{message:r,stack:\"SyntaxError\"==t.name?e:N(e)}}function V(t,e,r){if(\"undefined\"!=typeof console){var n;if(l.isObject(t)){var i=t.stack;n=e+v(i,t)}else n=e+String(t);\"function\"==typeof s?s(n,r):\"function\"!=typeof console.log&&\"object\"!=typeof console.log||console.log(n)}}function q(t,e,r,n){var i=!1;try{\"function\"==typeof e&&(i=!0,\"rejectionHandled\"===t?e(n):e(r,n))}catch(t){u.throwLater(t)}\"unhandledRejection\"===t?R(t,r,n)||i||V(r,\"Unhandled rejection \"):R(t,n)}function W(t){var e;if(\"function\"==typeof t)e=\"[function \"+(t.name||\"anonymous\")+\"]\";else{if(e=t&&\"function\"==typeof t.toString?t.toString():l.toString(t),/\\[object [a-zA-Z0-9$_]+\\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e=\"(empty array)\")}return\"(<\"+function(t){return t.length<41?t:t.substr(0,38)+\"...\"}(e)+\">, no stack trace)\"}function Y(){return\"function\"==typeof G}var $=function(){return!1},z=/[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;function Q(t){var e=t.match(z);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function X(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);G(this,X),e>32&&this.uncycle()}l.inherits(X,Error),n.CapturedTrace=X,X.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],r={},n=0,i=this;void 0!==i;++n)e.push(i),i=i._parent;for(n=(t=this._length=n)-1;n>=0;--n){var o=e[n].stack;void 0===r[o]&&(r[o]=n)}for(n=0;n<t;++n){var s=r[e[n].stack];if(void 0!==s&&s!==n){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var a=n>0?e[n-1]:this;s<t-1?(a._parent=e[s+1],a._parent.uncycle(),a._length=a._parent._length+1):(a._parent=void 0,a._length=1);for(var u=a._length+1,c=n-2;c>=0;--c)e[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=H(t),r=e.message,n=[e.stack],i=this;void 0!==i;)n.push(N(i.stack.split(\"\\n\"))),i=i._parent;!function(t){for(var e=t[0],r=1;r<t.length;++r){for(var n=t[r],i=e.length-1,o=e[i],s=-1,a=n.length-1;a>=0;--a)if(n[a]===o){s=a;break}for(a=s;a>=0;--a){var u=n[a];if(e[i]!==u)break;e.pop(),i--}e=n}}(n),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(n),l.notEnumerableProp(t,\"stack\",function(t,e){for(var r=0;r<e.length-1;++r)e[r].push(\"From previous event:\"),e[r]=e[r].join(\"\\n\");return r<e.length&&(e[r]=e[r].join(\"\\n\")),t+\"\\n\"+e.join(\"\\n\")}(r,n)),l.notEnumerableProp(t,\"__stackCleaned__\",!0)}};var G=function(){var t=/^\\s*at\\s*/,e=function(t,e){return\"string\"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():W(e)};if(\"number\"==typeof Error.stackTraceLimit&&\"function\"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,_=t,v=e;var r=Error.captureStackTrace;return $=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,r(t,e),Error.stackTraceLimit-=6}}var n,i=new Error;if(\"string\"==typeof i.stack&&i.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\")>=0)return _=/@/,v=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n=\"stack\"in t}return\"stack\"in i||!n||\"number\"!=typeof Error.stackTraceLimit?(v=function(t,e){return\"string\"==typeof t?t:\"object\"!=typeof e&&\"function\"!=typeof e||void 0===e.name||void 0===e.message?W(e):e.toString()},null):(_=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();\"undefined\"!=typeof console&&void 0!==console.warn&&(s=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?s=function(t,e){var r=e?\"\u001b[33m\":\"\u001b[31m\";console.warn(r+t+\"\u001b[0m\\n\")}:l.isNode||\"string\"!=typeof(new Error).stack||(s=function(t,e){console.warn(\"%c\"+t,e?\"color: darkorange\":\"color: red\")}));var J={warnings:g,longStackTraces:!1,cancellation:!1,monitoring:!1};return b&&r.longStackTraces(),{longStackTraces:function(){return J.longStackTraces},warnings:function(){return J.warnings},cancellation:function(){return J.cancellation},monitoring:function(){return J.monitoring},propagateFromFunction:function(){return M},boundValueFunction:function(){return B},checkForgottenReturns:function(t,e,r,n,i){if(void 0===t&&null!==e&&w){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&n._bitField))return;r&&(r+=\" \");var o=\"\",s=\"\";if(e._trace){for(var a=e._trace.stack.split(\"\\n\"),u=N(a),c=u.length-1;c>=0;--c){var l=u[c];if(!p.test(l)){var f=l.match(d);f&&(o=\"at \"+f[1]+\":\"+f[2]+\":\"+f[3]+\" \");break}}if(u.length>0){var h=u[0];for(c=0;c<a.length;++c)if(a[c]===h){c>0&&(s=\"\\n\"+a[c-1]);break}}}var _=\"a promise was created in a \"+r+\"handler \"+o+\"but was not returned from it, see http://goo.gl/rRqMUw\"+s;n._warn(_,!0,e)}},setBounds:function(t,e){if(Y()){for(var r,n,i=t.stack.split(\"\\n\"),o=e.stack.split(\"\\n\"),s=-1,a=-1,u=0;u<i.length;++u)if(c=Q(i[u])){r=c.fileName,s=c.line;break}for(u=0;u<o.length;++u){var c;if(c=Q(o[u])){n=c.fileName,a=c.line;break}}s<0||a<0||!r||!n||r!==n||s>=a||($=function(t){if(h.test(t))return!0;var e=Q(t);return!!(e&&e.fileName===r&&s<=e.line&&e.line<=a)})}},warn:U,deprecated:function(t,e){var r=t+\" is deprecated and will be removed in a future version.\";return e&&(r+=\" Use \"+e+\" instead.\"),U(r)},CapturedTrace:X,fireDomEvent:C,fireGlobalEvent:x}}},{\"./errors\":12,\"./util\":36}],10:[function(t,e,r){\"use strict\";e.exports=function(t){function e(){return this.value}function r(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(r){return r instanceof t&&r.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:r},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(r,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof t&&r.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:r},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(r,function(){return n})}}},{}],11:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=t.reduce,n=t.all;function i(){return n(this)}t.prototype.each=function(t){return r(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return r(this,t,e,e)},t.each=function(t,n){return r(t,n,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return r(t,n,e,e)}}},{}],12:[function(t,e,r){\"use strict\";var n,i,o=t(\"./es5\"),s=o.freeze,a=t(\"./util\"),u=a.inherits,c=a.notEnumerableProp;function l(t,e){function r(n){if(!(this instanceof r))return new r(n);c(this,\"message\",\"string\"==typeof n?n:e),c(this,\"name\",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var f=l(\"Warning\",\"warning\"),h=l(\"CancellationError\",\"cancellation error\"),p=l(\"TimeoutError\",\"timeout error\"),d=l(\"AggregateError\",\"aggregate error\");try{n=TypeError,i=RangeError}catch(t){n=l(\"TypeError\",\"type error\"),i=l(\"RangeError\",\"range error\")}for(var _=\"join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse\".split(\" \"),v=0;v<_.length;++v)\"function\"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,\"length\",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);c(this,\"name\",\"OperationalError\"),c(this,\"message\",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,\"message\",t.message),c(this,\"stack\",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(\" \"),e=\"\\n\"+t+\"AggregateError of:\\n\";y++,t=Array(4*y+1).join(\" \");for(var r=0;r<this.length;++r){for(var n=this[r]===this?\"[Circular AggregateError]\":this[r]+\"\",i=n.split(\"\\n\"),o=0;o<i.length;++o)i[o]=t+i[o];e+=(n=i.join(\"\\n\"))+\"\\n\"}return y--,e},u(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=s({CancellationError:h,TimeoutError:p,OperationalError:m,RejectionError:m,AggregateError:d}),o.defineProperty(Error,\"__BluebirdErrorTypes__\",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:n,RangeError:i,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{\"./es5\":13,\"./util\":36}],13:[function(t,e,r){var n=function(){\"use strict\";return void 0===this}();if(n)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:n,propertyIsWritable:function(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return!(r&&!r.writable&&!r.set)}};else{var i={}.hasOwnProperty,o={}.toString,s={}.constructor.prototype,a=function(t){var e=[];for(var r in t)i.call(t,r)&&e.push(r);return e};e.exports={isArray:function(t){try{return\"[object Array]\"===o.call(t)}catch(t){return!1}},keys:a,names:a,defineProperty:function(t,e,r){return t[e]=r.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return s}},isES5:n,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=t.map;t.prototype.filter=function(t,n){return r(this,t,n,e)},t.filter=function(t,n,i){return r(t,n,i,e)}}},{}],15:[function(t,e,r){\"use strict\";e.exports=function(e,r,n){var i=t(\"./util\"),o=e.CancellationError,s=i.errorObj,a=t(\"./catch_filter\")(n);function u(t,e,r){this.promise=t,this.type=e,this.handler=r,this.called=!1,this.cancelPromise=null}function c(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function h(t){if(!l(this,t))return s.e=t,s}function p(t){var i=this.promise,a=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?a.call(i._boundValue()):a.call(i._boundValue(),t);if(u===n)return u;if(void 0!==u){i._setReturnedNonUndefined();var p=r(u,i);if(p instanceof e){if(null!=this.cancelPromise){if(p._isCancelled()){var d=new o(\"late cancellation observer\");return i._attachExtraTrace(d),s.e=d,s}p.isPending()&&p._attachCancellationCallback(new c(this))}return p._then(f,h,void 0,this,void 0)}}}return i.isRejected()?(l(this),s.e=t,s):(l(this),t)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,r,n){return\"function\"!=typeof t?this.then():this._then(r,n,void 0,new u(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,p,p)},e.prototype.tap=function(t){return this._passThrough(t,1,p)},e.prototype.tapCatch=function(t){var r=arguments.length;if(1===r)return this._passThrough(t,1,void 0,p);var n,o=new Array(r-1),s=0;for(n=0;n<r-1;++n){var u=arguments[n];if(!i.isObject(u))return e.reject(new TypeError(\"tapCatch statement predicate: expecting an object but got \"+i.classString(u)));o[s++]=u}o.length=s;var c=arguments[n];return this._passThrough(a(o,c,this),1,void 0,p)},u}},{\"./catch_filter\":7,\"./util\":36}],16:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o,s){var a=t(\"./errors\").TypeError,u=t(\"./util\"),c=u.errorObj,l=u.tryCatch,f=[];function h(t,r,i,o){if(s.cancellation()){var a=new e(n),u=this._finallyPromise=new e(n);this._promise=a.lastly(function(){return u}),a._captureStackTrace(),a._setOnCancel(this)}else(this._promise=new e(n))._captureStackTrace();this._stack=o,this._generatorFunction=t,this._receiver=r,this._generator=void 0,this._yieldHandlers=\"function\"==typeof i?[i].concat(f):f,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,o),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,s.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t;if(void 0!==this._generator.return)this._promise._pushContext(),t=l(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError(\"generator .return() sentinel\");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=l(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=l(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=l(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var r=this._promise;if(t===c)return this._cleanup(),this._cancellationPhase?r.cancel():r._rejectCallback(t.e,!1);var n=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?r.cancel():r._resolveCallback(n);var o=i(n,this._promise);if(o instanceof e||null!==(o=function(t,r,n){for(var o=0;o<r.length;++o){n._pushContext();var s=l(r[o])(t);if(n._popContext(),s===c){n._pushContext();var a=e.reject(c.e);return n._popContext(),a}var u=i(s,n);if(u instanceof e)return u}return null}(o,this._yieldHandlers,this._promise))){var s=(o=o._target())._bitField;0==(50397184&s)?(this._yieldedPromise=o,o._proxy(this,null)):0!=(33554432&s)?e._async.invoke(this._promiseFulfilled,this,o._value()):0!=(16777216&s)?e._async.invoke(this._promiseRejected,this,o._reason()):this._promiseCancelled()}else this._promiseRejected(new a(\"A value %s was yielded that could not be treated as a promise\\n\\n    See http://goo.gl/MqrFmX\\n\\n\".replace(\"%s\",String(n))+\"From coroutine:\\n\"+this._stack.split(\"\\n\").slice(1,-7).join(\"\\n\")))},e.coroutine=function(t,e){if(\"function\"!=typeof t)throw new a(\"generatorFunction must be a function\\n\\n    See http://goo.gl/MqrFmX\\n\");var r=Object(e).yieldHandler,n=h,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new n(void 0,void 0,r,i),s=o.promise();return o._generator=e,o._promiseFulfilled(void 0),s}},e.coroutine.addYieldHandler=function(t){if(\"function\"!=typeof t)throw new a(\"expecting a function but got \"+u.classString(t));f.push(t)},e.spawn=function(t){if(s.deprecated(\"Promise.spawn()\",\"Promise.coroutine()\"),\"function\"!=typeof t)return r(\"generatorFunction must be a function\\n\\n    See http://goo.gl/MqrFmX\\n\");var n=new h(t,this),i=n.promise();return n._run(e.spawn),i}}},{\"./errors\":12,\"./util\":36}],17:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o,s){var a=t(\"./util\");a.canEvaluate,a.tryCatch,a.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&\"function\"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var i=new r(n).promise();return void 0!==t?i.spread(t):i}}},{\"./util\":36}],18:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t(\"./util\"),c=u.tryCatch,l=u.errorObj,f=e._async;function h(t,e,r,n){this.constructor$(t),this._promise._captureStackTrace();var i=a();this._callback=null===i?e:u.domainBind(i,e),this._preservedValues=n===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(t,r,i,o){if(\"function\"!=typeof r)return n(\"expecting a function but got \"+u.classString(r));var s=0;if(void 0!==i){if(\"object\"!=typeof i||null===i)return e.reject(new TypeError(\"options argument must be an object but it is \"+u.classString(i)));if(\"number\"!=typeof i.concurrency)return e.reject(new TypeError(\"'concurrency' must be a number but it is \"+u.classString(i.concurrency)));s=i.concurrency}return new h(t,r,s=\"number\"==typeof s&&isFinite(s)&&s>=1?s:0,o).promise()}u.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,r){var n=this._values,o=this.length(),a=this._preservedValues,u=this._limit;if(r<0){if(n[r=-1*r-1]=t,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return n[r]=t,this._queue.push(r),!1;null!==a&&(a[r]=t);var f=this._promise,h=this._callback,p=f._boundValue();f._pushContext();var d=c(h).call(p,t,r,o),_=f._popContext();if(s.checkForgottenReturns(d,_,null!==a?\"Promise.filter\":\"Promise.map\",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return u>=1&&this._inFlight++,n[r]=v,v._proxy(this,-1*(r+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}n[r]=d}return++this._totalResolved>=o&&(null!==a?this._filter(n,a):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,r=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var n=t.pop();this._promiseFulfilled(r[n],n)}},h.prototype._filter=function(t,e){for(var r=e.length,n=new Array(r),i=0,o=0;o<r;++o)t[o]&&(n[i++]=e[o]);n.length=i,this._resolve(n)},h.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return p(this,t,e,null)},e.map=function(t,e,r,n){return p(t,e,r,n)}}},{\"./util\":36}],19:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o){var s=t(\"./util\"),a=s.tryCatch;e.method=function(t){if(\"function\"!=typeof t)throw new e.TypeError(\"expecting a function but got \"+s.classString(t));return function(){var n=new e(r);n._captureStackTrace(),n._pushContext();var i=a(t).apply(this,arguments),s=n._popContext();return o.checkForgottenReturns(i,s,\"Promise.method\",n),n._resolveFromSyncValue(i),n}},e.attempt=e.try=function(t){if(\"function\"!=typeof t)return i(\"expecting a function but got \"+s.classString(t));var n,u=new e(r);if(u._captureStackTrace(),u._pushContext(),arguments.length>1){o.deprecated(\"calling Promise.try with more than 1 argument\");var c=arguments[1],l=arguments[2];n=s.isArray(c)?a(t).apply(l,c):a(t).call(l,c)}else n=a(t)();var f=u._popContext();return o.checkForgottenReturns(n,f,\"Promise.try\",u),u._resolveFromSyncValue(n),u},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{\"./util\":36}],20:[function(t,e,r){\"use strict\";var n=t(\"./util\"),i=n.maybeWrapAsError,o=t(\"./errors\").OperationalError,s=t(\"./es5\"),a=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var r=s.keys(t),i=0;i<r.length;++i){var u=r[i];a.test(u)||(e[u]=t[u])}return e}return n.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(r,n){if(null!==t){if(r){var o=u(i(r));t._attachExtraTrace(o),t._reject(o)}else if(e){var s=[].slice.call(arguments,1);t._fulfill(s)}else t._fulfill(n);t=null}}}},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(t,e,r){\"use strict\";e.exports=function(e){var r=t(\"./util\"),n=e._async,i=r.tryCatch,o=r.errorObj;function s(t,e){if(!r.isArray(t))return a.call(this,t,e);var s=i(e).apply(this._boundValue(),[null].concat(t));s===o&&n.throwLater(s.e)}function a(t,e){var r=this._boundValue(),s=void 0===t?i(e).call(r,null):i(e).call(r,null,t);s===o&&n.throwLater(s.e)}function u(t,e){if(!t){var r=new Error(t+\"\");r.cause=t,t=r}var s=i(e).call(this._boundValue(),t);s===o&&n.throwLater(s.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if(\"function\"==typeof t){var r=a;void 0!==e&&Object(e).spread&&(r=s),this._then(r,u,void 0,this,t)}return this}}},{\"./util\":36}],22:[function(t,r,n){\"use strict\";r.exports=function(){var n=function(){return new d(\"circular promise resolution chain\\n\\n    See http://goo.gl/MqrFmX\\n\")},i=function(){return new T.PromiseInspection(this._target())},o=function(t){return T.reject(new d(t))};function s(){}var a,u={},c=t(\"./util\");a=c.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},c.notEnumerableProp(T,\"_getDomain\",a);var l=t(\"./es5\"),f=t(\"./async\"),h=new f;l.defineProperty(T,\"_async\",{value:h});var p=t(\"./errors\"),d=T.TypeError=p.TypeError;T.RangeError=p.RangeError;var _=T.CancellationError=p.CancellationError;T.TimeoutError=p.TimeoutError,T.OperationalError=p.OperationalError,T.RejectionError=p.OperationalError,T.AggregateError=p.AggregateError;var v=function(){},y={},m={},g=t(\"./thenables\")(T,v),b=t(\"./promise_array\")(T,v,g,o,s),w=t(\"./context\")(T),E=w.create,C=t(\"./debuggability\")(T,w),x=(C.CapturedTrace,t(\"./finally\")(T,g,m)),j=t(\"./catch_filter\")(m),S=t(\"./nodeback\"),R=c.errorObj,k=c.tryCatch;function T(t){t!==v&&function(t,e){if(null==t||t.constructor!==T)throw new d(\"the promise constructor cannot be invoked directly\\n\\n    See http://goo.gl/MqrFmX\\n\");if(\"function\"!=typeof e)throw new d(\"expecting a function but got \"+c.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent(\"promiseCreated\",this)}function P(t){this.promise._resolveCallback(t)}function O(t){this.promise._rejectCallback(t,!1)}function A(t){var e=new T(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return T.prototype.toString=function(){return\"[object Promise]\"},T.prototype.caught=T.prototype.catch=function(t){var e=arguments.length;if(e>1){var r,n=new Array(e-1),i=0;for(r=0;r<e-1;++r){var s=arguments[r];if(!c.isObject(s))return o(\"Catch statement predicate: expecting an object but got \"+c.classString(s));n[i++]=s}return n.length=i,t=arguments[r],this.then(void 0,j(n,t,this))}return this.then(void 0,t)},T.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},T.prototype.then=function(t,e){if(C.warnings()&&arguments.length>0&&\"function\"!=typeof t&&\"function\"!=typeof e){var r=\".then() only accepts functions but was passed: \"+c.classString(t);arguments.length>1&&(r+=\", \"+c.classString(e)),this._warn(r)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},T.prototype.spread=function(t){return\"function\"!=typeof t?o(\"expecting a function but got \"+c.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(\".all() was passed arguments but it does not take any\"),new b(this).promise()},T.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},T.getNewLibraryCopy=r.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=k(t)(S(e,r));return n===R&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if(\"function\"!=typeof t)throw new d(\"expecting a function but got \"+c.classString(t));return h.setScheduler(t)},T.prototype._then=function(t,e,r,n,i){var o=void 0!==i,s=o?i:new T(v),u=this._target(),l=u._bitField;o||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&l)?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent(\"promiseChained\",this,s));var f=a();if(0!=(50397184&l)){var p,d,y=u._settlePromiseCtx;0!=(33554432&l)?(d=u._rejectionHandler0,p=t):0!=(16777216&l)?(d=u._fulfillmentHandler0,p=e,u._unsetRejectionIsUnhandled()):(y=u._settlePromiseLateCancellationObserver,d=new _(\"late cancellation observer\"),u._attachExtraTrace(d),p=e),h.invoke(y,u,{handler:null===f?p:\"function\"==typeof p&&c.domainBind(f,p),promise:s,receiver:n,value:d})}else u._addCallbacks(t,e,s,n,f);return s},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},T.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent(\"promiseFulfilled\",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent(\"promiseRejected\",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent(\"promiseResolved\",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent(\"promiseCancelled\",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==u)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,r=t._rejectionHandler0,n=t._promise0,i=t._receiverAt(0);void 0===i&&(i=u),this._addCallbacks(e,r,n,i,null)},T.prototype._migrateCallbackAt=function(t,e){var r=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=u),this._addCallbacks(r,n,i,o,null)},T.prototype._addCallbacks=function(t,e,r,n,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=r,this._receiver0=n,\"function\"==typeof t&&(this._fulfillmentHandler0=null===i?t:c.domainBind(i,t)),\"function\"==typeof e&&(this._rejectionHandler0=null===i?e:c.domainBind(i,e));else{var s=4*o-4;this[s+2]=r,this[s+3]=n,\"function\"==typeof t&&(this[s+0]=null===i?t:c.domainBind(i,t)),\"function\"==typeof e&&(this[s+1]=null===i?e:c.domainBind(i,e))}return this._setLength(o+1),o},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var r=g(t,this);if(!(r instanceof T))return this._fulfill(t);e&&this._propagateFrom(r,2);var i=r._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var s=this._length();s>0&&i._migrateCallback0(this);for(var a=1;a<s;++a)i._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(i)}else if(0!=(33554432&o))this._fulfill(i._value());else if(0!=(16777216&o))this._reject(i._reason());else{var u=new _(\"late cancellation observer\");i._attachExtraTrace(u),this._reject(u)}}else this._reject(n())}},T.prototype._rejectCallback=function(t,e,r){var n=c.ensureErrorObject(t),i=n===t;if(!i&&!r&&C.warnings()){var o=\"a promise was rejected with a non-error: \"+c.classString(t);this._warn(o,!0)}this._attachExtraTrace(n,!!e&&i),this._reject(t)},T.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var r=!0,n=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,r)});r=!1,this._popContext(),void 0!==n&&e._rejectCallback(n,!0)}},T.prototype._settlePromiseFromHandler=function(t,e,r,n){var i=n._bitField;if(0==(65536&i)){var o;n._pushContext(),e===y?r&&\"number\"==typeof r.length?o=k(t).apply(this._boundValue(),r):(o=R).e=new d(\"cannot .spread() a non-array: \"+c.classString(r)):o=k(t).call(e,r);var s=n._popContext();0==(65536&(i=n._bitField))&&(o===m?n._reject(r):o===R?n._rejectCallback(o.e,!1):(C.checkForgottenReturns(o,s,\"\",n,this),n._resolveCallback(o)))}},T.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},T.prototype._followee=function(){return this._rejectionHandler0},T.prototype._setFollowee=function(t){this._rejectionHandler0=t},T.prototype._settlePromise=function(t,e,r,n){var o=t instanceof T,a=this._bitField,u=0!=(134217728&a);0!=(65536&a)?(o&&t._invokeInternalOnCancel(),r instanceof x&&r.isFinallyHandler()?(r.cancelPromise=t,k(e).call(r,n)===R&&t._reject(R.e)):e===i?t._fulfill(i.call(r)):r instanceof s?r._promiseCancelled(t):o||t instanceof b?t._cancel():r.cancel()):\"function\"==typeof e?o?(u&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,n,t)):e.call(r,n,t):r instanceof s?r._isResolved()||(0!=(33554432&a)?r._promiseFulfilled(n,t):r._promiseRejected(n,t)):o&&(u&&t._setAsyncGuaranteed(),0!=(33554432&a)?t._fulfill(n):t._reject(n))},T.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,r=t.promise,n=t.receiver,i=t.value;\"function\"==typeof e?r instanceof T?this._settlePromiseFromHandler(e,n,i,r):e.call(n,i,r):r instanceof T&&r._reject(i)},T.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},T.prototype._settlePromise0=function(t,e,r){var n=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(n,t,i,e)},T.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},T.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var r=n();return this._attachExtraTrace(r),this._reject(r)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this))}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var r=1;r<t;r++){var n=this._fulfillmentHandlerAt(r),i=this._promiseAt(r),o=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(i,n,o,e)}},T.prototype._rejectPromises=function(t,e){for(var r=1;r<t;r++){var n=this._rejectionHandlerAt(r),i=this._promiseAt(r),o=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(i,n,o,e)}},T.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,t),this._rejectPromises(e,r)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){return C.deprecated(\"Promise.defer\",\"new Promise\"),{promise:new T(v),resolve:P,reject:O}},c.notEnumerableProp(T,\"_makeSelfResolutionError\",n),t(\"./method\")(T,v,g,o,C),t(\"./bind\")(T,v,g,C),t(\"./cancel\")(T,b,o,C),t(\"./direct_resolve\")(T),t(\"./synchronous_inspection\")(T),t(\"./join\")(T,b,g,v,h,a),T.Promise=T,T.version=\"3.5.1\",t(\"./map.js\")(T,b,o,g,v,C),t(\"./call_get.js\")(T),t(\"./using.js\")(T,o,g,E,v,C),t(\"./timers.js\")(T,v,C),t(\"./generators.js\")(T,o,v,g,s,C),t(\"./nodeify.js\")(T),t(\"./promisify.js\")(T,v),t(\"./props.js\")(T,b,g,o),t(\"./race.js\")(T,v,g,o),t(\"./reduce.js\")(T,b,o,g,v,C),t(\"./settle.js\")(T,b,C),t(\"./some.js\")(T,b,o),t(\"./filter.js\")(T,v),t(\"./each.js\")(T,v),t(\"./any.js\")(T),c.toFastProperties(T),c.toFastProperties(T.prototype),A({a:1}),A({b:2}),A({c:3}),A(1),A(function(){}),A(void 0),A(!1),A(new T(v)),C.setBounds(f.firstLineError,c.lastLineError),T}},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o){var s=t(\"./util\");function a(t){var n=this._promise=new e(r);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return s.isArray,s.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function t(r,o){var a=n(this._values,this._promise);if(a instanceof e){var u=(a=a._target())._bitField;if(this._values=a,0==(50397184&u))return this._promise._setAsyncGuaranteed(),a._then(t,this._reject,void 0,this,o);if(0==(33554432&u))return 0!=(16777216&u)?this._reject(a._reason()):this._cancel();a=a._value()}if(null!==(a=s.asArray(a)))0!==a.length?this._iterate(a):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(o){case-2:return[];case-3:return{};case-6:return new Map}}());else{var c=i(\"expecting an array or an iterable object but got \"+s.classString(a)).reason();this._promise._rejectCallback(c,!1)}},a.prototype._iterate=function(t){var r=this.getActualLength(t.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var i=this._promise,o=!1,s=null,a=0;a<r;++a){var u=n(t[a],i);s=u instanceof e?(u=u._target())._bitField:null,o?null!==s&&u.suppressUnhandledRejections():null!==s?0==(50397184&s)?(u._proxy(this,a),this._values[a]=u):o=0!=(33554432&s)?this._promiseFulfilled(u._value(),a):0!=(16777216&s)?this._promiseRejected(u._reason(),a):this._promiseCancelled(a):o=this._promiseFulfilled(u,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){return this._values[e]=t,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var r=0;r<t.length;++r)t[r]instanceof e&&t[r].cancel()}},a.prototype.shouldCopyValues=function(){return!0},a.prototype.getActualLength=function(t){return t},a}},{\"./util\":36}],24:[function(t,e,r){\"use strict\";e.exports=function(e,r){var n={},i=t(\"./util\"),o=t(\"./nodeback\"),s=i.withAppended,a=i.maybeWrapAsError,u=i.canEvaluate,c=t(\"./errors\").TypeError,l={__isPromisified__:!0},f=new RegExp(\"^(?:\"+[\"arity\",\"length\",\"name\",\"arguments\",\"caller\",\"callee\",\"prototype\",\"__isPromisified__\"].join(\"|\")+\")$\"),h=function(t){return i.isIdentifier(t)&&\"_\"!==t.charAt(0)&&\"constructor\"!==t};function p(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,r){var n=i.getDataPropertyOrDefault(t,e+r,l);return!!n&&d(n)}function v(t,e,r,n){for(var o=i.inheritedDataKeys(t),s=[],a=0;a<o.length;++a){var u=o[a],l=t[u],f=n===h||h(u,l,t);\"function\"!=typeof l||d(l)||_(t,u,e)||!n(u,l,t,f)||s.push(u,l)}return function(t,e,r){for(var n=0;n<t.length;n+=2){var i=t[n];if(r.test(i))for(var o=i.replace(r,\"\"),s=0;s<t.length;s+=2)if(t[s]===o)throw new c(\"Cannot promisify an API that has normal methods with '%s'-suffix\\n\\n    See http://goo.gl/MqrFmX\\n\".replace(\"%s\",e))}}(s,e,r),s}var y=function(t){return t.replace(/([$])/,\"\\\\$\")},m=u?void 0:function(t,u,c,l,f,h){var p=function(){return this}(),d=t;function _(){var i=u;u===n&&(i=this);var c=new e(r);c._captureStackTrace();var l=\"string\"==typeof d&&this!==p?this[d]:t,f=o(c,h);try{l.apply(i,s(arguments,f))}catch(t){c._rejectCallback(a(t),!0,!0)}return c._isFateSealed()||c._setAsyncGuaranteed(),c}return\"string\"==typeof d&&(t=l),i.notEnumerableProp(_,\"__isPromisified__\",!0),_};function g(t,e,r,o,s){for(var a=new RegExp(y(e)+\"$\"),u=v(t,e,a,r),c=0,l=u.length;c<l;c+=2){var f=u[c],h=u[c+1],p=f+e;if(o===m)t[p]=m(f,n,f,h,e,s);else{var d=o(h,function(){return m(f,n,f,h,e,s)});i.notEnumerableProp(d,\"__isPromisified__\",!0),t[p]=d}}return i.toFastProperties(t),t}e.promisify=function(t,e){if(\"function\"!=typeof t)throw new c(\"expecting a function but got \"+i.classString(t));if(d(t))return t;var r=void 0===(e=Object(e)).context?n:e.context,o=!!e.multiArgs,s=function(t,e,r){return m(t,e,void 0,t,null,o)}(t,r);return i.copyDescriptors(t,s,p),s},e.promisifyAll=function(t,e){if(\"function\"!=typeof t&&\"object\"!=typeof t)throw new c(\"the target of promisifyAll must be an object or a function\\n\\n    See http://goo.gl/MqrFmX\\n\");var r=!!(e=Object(e)).multiArgs,n=e.suffix;\"string\"!=typeof n&&(n=\"Async\");var o=e.filter;\"function\"!=typeof o&&(o=h);var s=e.promisifier;if(\"function\"!=typeof s&&(s=m),!i.isIdentifier(n))throw new RangeError(\"suffix must be a valid identifier\\n\\n    See http://goo.gl/MqrFmX\\n\");for(var a=i.inheritedDataKeys(t),u=0;u<a.length;++u){var l=t[a[u]];\"constructor\"!==a[u]&&i.isClass(l)&&(g(l.prototype,n,o,s,r),g(l,n,o,s,r))}return g(t,n,o,s,r)}}},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i){var o,s=t(\"./util\"),a=s.isObject,u=t(\"./es5\");\"function\"==typeof Map&&(o=Map);var c=function(){var t=0,e=0;function r(r,n){this[t]=r,this[t+e]=n,t++}return function(n){e=n.size,t=0;var i=new Array(2*n.size);return n.forEach(r,i),i}}();function l(t){var e,r=!1;if(void 0!==o&&t instanceof o)e=c(t),r=!0;else{var n=u.keys(t),i=n.length;e=new Array(2*i);for(var s=0;s<i;++s){var a=n[s];e[s]=t[a],e[s+i]=a}}this.constructor$(e),this._isMap=r,this._init$(void 0,r?-6:-3)}function f(t){var r,o=n(t);return a(o)?(r=o instanceof e?o._then(e.props,void 0,void 0,void 0,void 0):new l(o).promise(),o instanceof e&&r._propagateFrom(o,2),r):i(\"cannot await properties of a non-object\\n\\n    See http://goo.gl/MqrFmX\\n\")}s.inherits(l,r),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){if(this._values[e]=t,++this._totalResolved>=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,r=t.length/2|0,n=0;n<r;++n){var i=t[r+n],s=t[n];e.set(i,s)}return e}(this._values);else{r={};for(var n=this.length(),i=0,s=this.length();i<s;++i)r[this._values[i+n]]=this._values[i]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{\"./es5\":13,\"./util\":36}],26:[function(t,e,r){\"use strict\";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity<t},n.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1),this[this._front+e&this._capacity-1]=t,this._length=e+1},n.prototype.push=function(t,e,r){var n=this.length()+3;if(this._willBeOverCapacity(n))return this._pushOne(t),this._pushOne(e),void this._pushOne(r);var i=this._front+n-3;this._checkCapacity(n);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=r,this._length=n},n.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},n.prototype.length=function(){return this._length},n.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},n.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t,function(t,e,r,n,i){for(var o=0;o<i;++o)r[o+n]=t[o+0],t[o+0]=void 0}(this,0,this,e,this._front+this._length&e-1)},e.exports=n},{}],27:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i){var o=t(\"./util\"),s=function(t){return t.then(function(e){return a(e,t)})};function a(t,a){var u=n(t);if(u instanceof e)return s(u);if(null===(t=o.asArray(t)))return i(\"expecting an array or an iterable object but got \"+o.classString(t));var c=new e(r);void 0!==a&&c._propagateFrom(a,3);for(var l=c._fulfill,f=c._reject,h=0,p=t.length;h<p;++h){var d=t[h];(void 0!==d||h in t)&&e.cast(d)._then(l,f,void 0,c,null)}return c}e.race=function(t){return a(t,void 0)},e.prototype.race=function(){return a(this,void 0)}}},{\"./util\":36}],28:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t(\"./util\"),c=u.tryCatch;function l(t,r,n,i){this.constructor$(t);var s=a();this._fn=null===s?r:u.domainBind(s,r),void 0!==n&&(n=e.resolve(n))._attachCancellationCallback(this),this._initialValue=n,this._currentCancellable=null,this._eachValues=i===o?Array(this._length):0===i?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function h(t,e,r,i){return\"function\"!=typeof e?n(\"expecting a function but got \"+u.classString(e)):new l(t,e,r,i).promise()}function p(t){this.accum=t,this.array._gotAccum(t);var r=i(this.value,this.array._promise);return r instanceof e?(this.array._currentCancellable=r,r._then(d,void 0,void 0,this,void 0)):d.call(this,r)}function d(t){var r,n=this.array,i=n._promise,o=c(n._fn);i._pushContext(),(r=void 0!==n._eachValues?o.call(i._boundValue(),t,this.index,this.length):o.call(i._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(n._currentCancellable=r);var a=i._popContext();return s.checkForgottenReturns(r,a,void 0!==n._eachValues?\"Promise.each\":\"Promise.reduce\",i),r}u.inherits(l,r),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var r,n;this._values=t;var i=t.length;if(void 0!==this._initialValue?(r=this._initialValue,n=0):(r=e.resolve(t[0]),n=1),this._currentCancellable=r,!r.isRejected())for(;n<i;++n){var o={accum:null,value:t[n],index:n,length:i,array:this};r=r._then(p,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(r=r._then(this._eachComplete,void 0,void 0,this,void 0)),r._then(f,f,void 0,r,this)},e.prototype.reduce=function(t,e){return h(this,t,e,null)},e.reduce=function(t,e,r,n){return h(t,e,r,n)}}},{\"./util\":36}],29:[function(t,i,o){\"use strict\";var s,a=t(\"./util\"),u=a.getNativePromise();if(a.isNode&&\"undefined\"==typeof MutationObserver){var c=r.setImmediate,l=e.nextTick;s=a.isRecentNode?function(t){c.call(r,t)}:function(t){l.call(e,t)}}else if(\"function\"==typeof u&&\"function\"==typeof u.resolve){var f=u.resolve();s=function(t){f.then(t)}}else s=\"undefined\"==typeof MutationObserver||\"undefined\"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==n?function(t){n(t)}:\"undefined\"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error(\"No async scheduler available\\n\\n    See http://goo.gl/MqrFmX\\n\")}:function(){var t=document.createElement(\"div\"),e={attributes:!0},r=!1,n=document.createElement(\"div\");return new MutationObserver(function(){t.classList.toggle(\"foo\"),r=!1}).observe(n,e),function(i){var o=new MutationObserver(function(){o.disconnect(),i()});o.observe(t,e),r||(r=!0,n.classList.toggle(\"foo\"))}}();i.exports=s},{\"./util\":36}],30:[function(t,e,r){\"use strict\";e.exports=function(e,r,n){var i=e.PromiseInspection;function o(t){this.constructor$(t)}t(\"./util\").inherits(o,r),o.prototype._promiseResolved=function(t,e){return this._values[t]=e,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var r=new i;return r._bitField=33554432,r._settledValueField=t,this._promiseResolved(e,r)},o.prototype._promiseRejected=function(t,e){var r=new i;return r._bitField=16777216,r._settledValueField=t,this._promiseResolved(e,r)},e.settle=function(t){return n.deprecated(\".settle()\",\".reflect()\"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{\"./util\":36}],31:[function(t,e,r){\"use strict\";e.exports=function(e,r,n){var i=t(\"./util\"),o=t(\"./errors\").RangeError,s=t(\"./errors\").AggregateError,a=i.isArray,u={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return n(\"expecting a positive integer\\n\\n    See http://goo.gl/MqrFmX\\n\");var r=new c(t),i=r.promise();return r.setHowMany(e),r.init(),i}i.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=a(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new s,e=this.length();e<this._values.length;++e)this._values[e]!==u&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e=\"Input array must contain at least \"+this._howMany+\" items but contains only \"+t+\" items\";return new o(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=c}},{\"./errors\":12,\"./util\":36}],32:[function(t,e,r){\"use strict\";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var r=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\n\\n    See http://goo.gl/MqrFmX\\n\");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\n\\n    See http://goo.gl/MqrFmX\\n\");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return r.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,r){\"use strict\";e.exports=function(e,r){var n=t(\"./util\"),i=n.errorObj,o=n.isObject,s={}.hasOwnProperty;return function(t,a){if(o(t)){if(t instanceof e)return t;var u=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(u===i){a&&a._pushContext();var c=e.reject(u.e);return a&&a._popContext(),c}if(\"function\"==typeof u)return function(t){try{return s.call(t,\"_promise0\")}catch(t){return!1}}(t)?(c=new e(r),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,o,s){var a=new e(r),u=a;s&&s._pushContext(),a._captureStackTrace(),s&&s._popContext();var c=!0,l=n.tryCatch(o).call(t,function(t){a&&(a._resolveCallback(t),a=null)},function(t){a&&(a._rejectCallback(t,c,!0),a=null)});return c=!1,a&&l===i&&(a._rejectCallback(l.e,!0,!0),a=null),u}(t,u,a)}return t}}},{\"./util\":36}],34:[function(t,e,r){\"use strict\";e.exports=function(e,r,n){var i=t(\"./util\"),o=e.TimeoutError;function s(t){this.handle=t}s.prototype._resultCancelled=function(){clearTimeout(this.handle)};var a=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,i){var o,u;return void 0!==i?(o=e.resolve(i)._then(a,null,null,t,void 0),n.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(r),u=setTimeout(function(){o._fulfill()},+t),n.cancellation()&&o._setOnCancel(new s(u)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function c(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return u(t,this)},e.prototype.timeout=function(t,e){var r,a;t=+t;var u=new s(setTimeout(function(){r.isPending()&&function(t,e,r){var n;n=\"string\"!=typeof e?e instanceof Error?e:new o(\"operation timed out\"):new o(e),i.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=r&&r.cancel()}(r,e,a)},t));return n.cancellation()?(a=this.then(),(r=a._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{\"./util\":36}],35:[function(t,e,r){\"use strict\";e.exports=function(e,r,n,i,o,s){var a=t(\"./util\"),u=t(\"./errors\").TypeError,c=t(\"./util\").inherits,l=a.errorObj,f=a.tryCatch,h={};function p(t){setTimeout(function(){throw t},0)}function d(t,r){var i=0,s=t.length,a=new e(o);return function o(){if(i>=s)return a._fulfill();var u=function(t){var e=n(t);return e!==t&&\"function\"==typeof t._isDisposable&&\"function\"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(u instanceof e&&u._isDisposable()){try{u=n(u._getDisposer().tryDispose(r),t.promise)}catch(t){return p(t)}if(u instanceof e)return u._then(o,p,null,null,null)}o()}(),a}function _(t,e,r){this._data=t,this._promise=e,this._context=r}function v(t,e,r){this.constructor$(t,e,r)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},_.prototype.tryDispose=function(t){var e=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},_.isDisposer=function(t){return null!=t&&\"function\"==typeof t.resource&&\"function\"==typeof t.tryDispose},c(v,_),v.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,r=0;r<t;++r){var n=this[r];n instanceof e&&n.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return r(\"you must pass at least 2 arguments to Promise.using\");var i,o=arguments[t-1];if(\"function\"!=typeof o)return r(\"expecting a function but got \"+a.classString(o));var u=!0;2===t&&Array.isArray(arguments[0])?(t=(i=arguments[0]).length,u=!1):(i=arguments,t--);for(var c=new m(t),h=0;h<t;++h){var p=i[h];if(_.isDisposer(p)){var v=p;(p=p.promise())._setDisposable(v)}else{var g=n(p);g instanceof e&&(p=g._then(y,null,null,{resources:c,index:h},void 0))}c[h]=p}var b=new Array(c.length);for(h=0;h<b.length;++h)b[h]=e.resolve(c[h]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var r=t[e];if(r.isRejected())return l.e=r.error(),l;if(!r.isFulfilled())return void w.cancel();t[e]=r.value()}E._pushContext(),o=f(o);var n=u?o.apply(void 0,t):o(t),i=E._popContext();return s.checkForgottenReturns(n,i,\"Promise.using\",E),n}),E=w.lastly(function(){var t=new e.PromiseInspection(w);return d(c,t)});return c.promise=E,E._setOnCancel(c),E},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if(\"function\"==typeof t)return new v(t,this,i());throw new u}}},{\"./errors\":12,\"./util\":36}],36:[function(t,n,i){\"use strict\";var o,s=t(\"./es5\"),a=\"undefined\"==typeof navigator,u={e:{}},c=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==r?r:void 0!==this?this:null;function l(){try{var t=o;return o=null,t.apply(this,arguments)}catch(t){return u.e=t,u}}function f(t){return null==t||!0===t||!1===t||\"string\"==typeof t||\"number\"==typeof t}function h(t,e,r){if(f(t))return t;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return s.defineProperty(t,e,n),t}var p=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var r=0;r<t.length;++r)if(t[r]===e)return!0;return!1};if(s.isES5){var r=Object.getOwnPropertyNames;return function(t){for(var n=[],i=Object.create(null);null!=t&&!e(t);){var o;try{o=r(t)}catch(t){return n}for(var a=0;a<o.length;++a){var u=o[a];if(!i[u]){i[u]=!0;var c=Object.getOwnPropertyDescriptor(t,u);null!=c&&null==c.get&&null==c.set&&n.push(u)}}t=s.getPrototypeOf(t)}return n}}var n={}.hasOwnProperty;return function(r){if(e(r))return[];var i=[];t:for(var o in r)if(n.call(r,o))i.push(o);else{for(var s=0;s<t.length;++s)if(n.call(t[s],o))continue t;i.push(o)}return i}}(),d=/this\\s*\\.\\s*\\S+\\s*=/,_=/^[a-z$_][a-z$_0-9]*$/i;function v(t){try{return t+\"\"}catch(t){return\"[no string representation]\"}}function y(t){return t instanceof Error||null!==t&&\"object\"==typeof t&&\"string\"==typeof t.message&&\"string\"==typeof t.name}function m(t){return y(t)&&s.propertyIsWritable(t,\"stack\")}var g=\"stack\"in new Error?function(t){return m(t)?t:new Error(v(t))}:function(t){if(m(t))return t;try{throw new Error(v(t))}catch(t){return t}};function b(t){return{}.toString.call(t)}var w=function(t){return s.isArray(t)?t:null};if(\"undefined\"!=typeof Symbol&&Symbol.iterator){var E=\"function\"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,r=[],n=t[Symbol.iterator]();!(e=n.next()).done;)r.push(e.value);return r};w=function(t){return s.isArray(t)?t:null!=t&&\"function\"==typeof t[Symbol.iterator]?E(t):null}}var C=void 0!==e&&\"[object process]\"===b(e).toLowerCase(),x=void 0!==e&&void 0!==e.env,j={isClass:function(t){try{if(\"function\"==typeof t){var e=s.names(t.prototype),r=s.isES5&&e.length>1,n=e.length>0&&!(1===e.length&&\"constructor\"===e[0]),i=d.test(t+\"\")&&s.names(t).length>0;if(r||n||i)return!0}return!1}catch(t){return!1}},isIdentifier:function(t){return _.test(t)},inheritedDataKeys:p,getDataPropertyOrDefault:function(t,e,r){if(!s.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var n=Object.getOwnPropertyDescriptor(t,e);return null!=n?null==n.get&&null==n.set?n.value:r:void 0},thrower:function(t){throw t},isArray:s.isArray,asArray:w,notEnumerableProp:h,isPrimitive:f,isObject:function(t){return\"function\"==typeof t||\"object\"==typeof t&&null!==t},isError:y,canEvaluate:a,errorObj:u,tryCatch:function(t){return o=t,l},inherits:function(t,e){var r={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)r.call(e.prototype,n)&&\"$\"!==n.charAt(n.length-1)&&(this[n+\"$\"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype},withAppended:function(t,e){var r,n=t.length,i=new Array(n+1);for(r=0;r<n;++r)i[r]=t[r];return i[r]=e,i},maybeWrapAsError:function(t){return f(t)?new Error(v(t)):t},toFastProperties:function(t){function e(){}e.prototype=t;for(var r=8;r--;)new e;return t},filledRange:function(t,e,r){for(var n=new Array(t),i=0;i<t;++i)n[i]=e+i+r;return n},toString:v,canAttachTrace:m,ensureErrorObject:g,originatesFromRejection:function(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)},markAsOriginatingFromRejection:function(t){try{h(t,\"isOperational\",!0)}catch(t){}},classString:b,copyDescriptors:function(t,e,r){for(var n=s.names(t),i=0;i<n.length;++i){var o=n[i];if(r(o))try{s.defineProperty(e,o,s.getDescriptor(t,o))}catch(t){}}},hasDevTools:\"undefined\"!=typeof chrome&&chrome&&\"function\"==typeof chrome.loadTimes,isNode:C,hasEnvVariables:x,env:function(t){return x?e.env[t]:void 0},global:c,getNativePromise:function(){if(\"function\"==typeof Promise)try{var t=new Promise(function(){});if(\"[object Promise]\"==={}.toString.call(t))return Promise}catch(t){}},domainBind:function(t,e){return t.bind(e)}};j.isRecentNode=j.isNode&&function(){var t=e.versions.node.split(\".\").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),j.isNode&&j.toFastProperties(e);try{throw new Error}catch(t){j.lastLineError=t}n.exports=j},{\"./es5\":13}]},{},[4])(4),\"undefined\"!=typeof window&&null!==window?window.P=window.Promise:\"undefined\"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,r(4),r(0),r(11).setImmediate)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(t,e){if(!e.eol&&t)for(var r=0,n=t.length;r<n;r++)if(\"\\r\"===t[r]){if(\"\\n\"===t[r+1]){e.eol=\"\\r\\n\";break}if(t[r+1]){e.eol=\"\\r\";break}}else if(\"\\n\"===t[r]){e.eol=\"\\n\";break}return e.eol||\"\\n\"}},function(t,e,r){var n=r(65),i=r(73);t.exports=function(t,e){var r=i(t,e);return n(r)?r:void 0}},function(t,e,r){var n=r(19).Symbol;t.exports=n},function(t,e,r){var n=r(67),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function(\"return this\")();t.exports=o},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}},function(t,e){var r=Array.isArray;t.exports=r},function(t,e,r){var n=r(30),i=r(76);t.exports=function(t){return\"symbol\"==typeof t||i(t)&&\"[object Symbol]\"==n(t)}},function(t,e,r){\"use strict\";(function(e,n){var i=r(6);t.exports=g;var o,s=r(37);g.ReadableState=m,r(12).EventEmitter;var a=function(t,e){return t.listeners(e).length},u=r(24),c=r(7).Buffer,l=e.Uint8Array||function(){},f=r(5);f.inherits=r(2);var h=r(41),p=void 0;p=h&&h.debuglog?h.debuglog(\"stream\"):function(){};var d,_=r(42),v=r(25);f.inherits(g,u);var y=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function m(t,e){o=o||r(1),t=t||{};var n=e instanceof o;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,s=t.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new _,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(d||(d=r(26).StringDecoder),this.decoder=new d(t.encoding),this.encoding=t.encoding)}function g(t){if(o=o||r(1),!(this instanceof g))return new g(t);this._readableState=new m(t,this),this.readable=!0,t&&(\"function\"==typeof t.read&&(this._read=t.read),\"function\"==typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function b(t,e,r,n,i){var o,s=t._readableState;return null===e?(s.reading=!1,function(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,x(t)}}(t,s)):(i||(o=function(t,e){var r;return function(t){return c.isBuffer(t)||t instanceof l}(e)||\"string\"==typeof e||void 0===e||t.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\")),r}(s,e)),o?t.emit(\"error\",o):s.objectMode||e&&e.length>0?(\"string\"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(t,s,e,!0):s.ended?t.emit(\"error\",new Error(\"stream.push() after EOF\")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?w(t,s,e,!1):S(t,s)):w(t,s,e,!1))):n||(s.reading=!1)),function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(s)}function w(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit(\"data\",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&x(t)),S(t,e)}Object.defineProperty(g.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),g.prototype.destroy=v.destroy,g.prototype._undestroy=v.undestroy,g.prototype._destroy=function(t,e){this.push(null),e(t)},g.prototype.push=function(t,e){var r,n=this._readableState;return n.objectMode?r=!0:\"string\"==typeof t&&((e=e||n.defaultEncoding)!==n.encoding&&(t=c.from(t,e),e=\"\"),r=!0),b(this,t,e,!1,r)},g.prototype.unshift=function(t){return b(this,t,null,!0,!1)},g.prototype.isPaused=function(){return!1===this._readableState.flowing},g.prototype.setEncoding=function(t){return d||(d=r(26).StringDecoder),this._readableState.decoder=new d(t),this._readableState.encoding=t,this};var E=8388608;function C(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=E?t=E:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function x(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(p(\"emitReadable\",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(j,t):j(t))}function j(t){p(\"emit readable\"),t.emit(\"readable\"),P(t)}function S(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(R,t,e))}function R(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(p(\"maybeReadMore read 0\"),t.read(0),r!==e.length);)r=e.length;e.readingMore=!1}function k(t){p(\"readable nexttick read 0\"),t.read(0)}function T(t,e){e.reading||(p(\"resume read 0\"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit(\"resume\"),P(t),e.flowing&&!e.reading&&t.read(0)}function P(t){var e=t._readableState;for(p(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function O(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;return t<e.head.data.length?(n=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):n=t===e.head.data.length?e.shift():r?function(t,e){var r=e.head,n=1,i=r.data;for(t-=i.length;r=r.next;){var o=r.data,s=t>o.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0==(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0==(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e),n}(t,e.buffer,e.decoder),r);var r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('\"endReadable()\" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"))}function L(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}g.prototype.read=function(t){p(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return p(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?A(this):x(this),null;if(0===(t=C(t,e))&&e.ended)return 0===e.length&&A(this),null;var n,i=e.needReadable;return p(\"need readable\",i),(0===e.length||e.length-t<e.highWaterMark)&&p(\"length less than watermark\",i=!0),e.ended||e.reading?p(\"reading or ended\",i=!1):i&&(p(\"do read\"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=C(r,e))),null===(n=t>0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==n&&this.emit(\"data\",n),n},g.prototype._read=function(t){this.emit(\"error\",new Error(\"_read() is not implemented\"))},g.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,p(\"pipe count=%d opts=%j\",o.pipesCount,e);var u=e&&!1===e.end||t===n.stdout||t===n.stderr?m:c;function c(){p(\"onend\"),t.end()}o.endEmitted?i.nextTick(u):r.once(\"end\",u),t.on(\"unpipe\",function e(n,i){p(\"onunpipe\"),n===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,p(\"cleanup\"),t.removeListener(\"close\",v),t.removeListener(\"finish\",y),t.removeListener(\"drain\",l),t.removeListener(\"error\",_),t.removeListener(\"unpipe\",e),r.removeListener(\"end\",c),r.removeListener(\"end\",m),r.removeListener(\"data\",d),f=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;p(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,P(t))}}(r);t.on(\"drain\",l);var f=!1,h=!1;function d(e){p(\"ondata\"),h=!1,!1!==t.write(e)||h||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==L(o.pipes,t))&&!f&&(p(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function _(e){p(\"onerror\",e),m(),t.removeListener(\"error\",_),0===a(t,\"error\")&&t.emit(\"error\",e)}function v(){t.removeListener(\"finish\",y),m()}function y(){p(\"onfinish\"),t.removeListener(\"close\",v),m()}function m(){p(\"unpipe\"),r.unpipe(t)}return r.on(\"data\",d),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",_),t.once(\"close\",v),t.once(\"finish\",y),t.emit(\"pipe\",r),o.flowing||(p(\"pipe resume\"),r.resume()),t},g.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)n[o].emit(\"unpipe\",this,r);return this}var s=L(e.pipes,t);return-1===s?this:(e.pipes.splice(s,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)},g.prototype.on=function(t,e){var r=u.prototype.on.call(this,t,e);if(\"data\"===t)!1!==this._readableState.flowing&&this.resume();else if(\"readable\"===t){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&x(this):i.nextTick(k,this))}return r},g.prototype.addListener=g.prototype.on,g.prototype.resume=function(){var t=this._readableState;return t.flowing||(p(\"resume\"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(T,t,e))}(this,t)),this},g.prototype.pause=function(){return p(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(p(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this},g.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",function(){if(p(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on(\"data\",function(i){p(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),(!r.objectMode||null!==i&&void 0!==i)&&(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))}),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o<y.length;o++)t.on(y[o],this.emit.bind(this,y[o]));return this._read=function(e){p(\"wrapped _read\",e),n&&(n=!1,t.resume())},this},Object.defineProperty(g.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),g._fromList=O}).call(this,r(0),r(4))},function(t,e,r){t.exports=r(12).EventEmitter},function(t,e,r){\"use strict\";var n=r(6);function i(t,e){t.emit(\"error\",e)}t.exports={destroy:function(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(n.nextTick(i,r,t),r._writableState&&(r._writableState.errorEmitted=!0)):e&&e(t)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,r){\"use strict\";var n=r(7).Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=u,this.end=c,e=4;break;case\"utf8\":this.fillLast=a,e=4;break;case\"base64\":this.text=l,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"�\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"�\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"�\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"},o.prototype.end=function(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"�\":e},o.prototype.text=function(t,e){var r=function(t,e,r){var n=e.length-1;if(n<r)return 0;var i=s(e[n]);return i>=0?(i>0&&(t.lastNeed=i-1),i):--n<r||-2===i?0:(i=s(e[n]))>=0?(i>0&&(t.lastNeed=i-2),i):--n<r||-2===i?0:(i=s(e[n]))>=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){\"use strict\";t.exports=o;var n=r(1),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t),this._transformState={afterTransform:function(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(\"function\"==typeof t.transform&&(this._transform=t.transform),\"function\"==typeof t.flush&&(this._flush=t.flush)),this.on(\"prefinish\",s)}function s(){var t=this;\"function\"==typeof this._flush?this._flush(function(e,r){a(t,e,r)}):a(this,null,null)}function a(t,e,r){if(e)return t.emit(\"error\",e);if(null!=r&&t.push(r),t._writableState.length)throw new Error(\"Calling transform done when ws.length != 0\");if(t._transformState.transforming)throw new Error(\"Calling transform done when still transforming\");return t.push(null)}i.inherits=r(2),i.inherits(o,n),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,n.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,r){throw new Error(\"_transform() is not implemented\")},o.prototype._write=function(t,e,r){var n=this._transformState;if(n.writecb=r,n.writechunk=t,n.writeencoding=e,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var r=this;n.prototype._destroy.call(this,t,function(t){e(t),r.emit(\"close\")})}},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0}),e.bufFromString=function(e){var r=t.byteLength(e),n=t.allocUnsafe?t.allocUnsafe(r):new t(r);return n.write(e),n},e.emptyBuffer=function(){return t.allocUnsafe?t.allocUnsafe(0):new t(0)},e.filterArray=function(t,e){for(var r=[],n=0;n<t.length;n++)e.indexOf(n)>-1&&r.push(t[n]);return r},e.trimLeft=String.prototype.trimLeft?function(t){return t.trimLeft()}:function(t){return t.replace(/^\\s+/,\"\")},e.trimRight=String.prototype.trimRight?function(t){return t.trimRight()}:function(t){return t.replace(/\\s+$/,\"\")}}).call(this,r(3).Buffer)},function(t,e,r){\"use strict\";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(t){function e(e,r,n){var i=t.call(this,\"Error: \"+e+\". JSON Line number: \"+r+(n?\" near: \"+n:\"\"))||this;return i.err=e,i.line=r,i.extra=n,i.name=\"CSV Parse Error\",i}return n(e,t),e.column_mismatched=function(t,r){return new e(\"column_mismatched\",t,r)},e.unclosed_quote=function(t,r){return new e(\"unclosed_quote\",t,r)},e.fromJSON=function(t){return new e(t.err,t.line,t.extra)},e.prototype.toJSON=function(){return{err:this.err,line:this.line,extra:this.extra}},e}(Error);e.default=i},function(t,e,r){var n=r(18),i=r(68),o=r(69),s=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":s&&s in Object(t)?i(t):o(t)}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,r){t.exports=r(33)},function(t,e,r){\"use strict\";var n=r(34),i=function(t,e){return new n.Converter(t,e)};i.csv=i,i.Converter=n.Converter,t.exports=i},function(t,e,r){\"use strict\";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(36),s=r(50),a=r(51),u=i(r(15)),c=r(52),l=r(105),f=function(e){function i(r,n){void 0===n&&(n={});var i=e.call(this,n)||this;return i.options=n,i.params=s.mergeParams(r),i.runtime=a.initParseRuntime(i),i.result=new l.Result(i),i.processor=new c.ProcessorLocal(i),i.once(\"error\",function(e){t(function(){i.result.processError(e),i.emit(\"done\",e)})}),i.once(\"done\",function(){i.processor.destroy()}),i}return n(i,e),i.prototype.preRawData=function(t){return this.runtime.preRawDataHook=t,this},i.prototype.preFileLine=function(t){return this.runtime.preFileLineHook=t,this},i.prototype.subscribe=function(t,e,r){return this.parseRuntime.subscribe={onNext:t,onError:e,onCompleted:r},this},i.prototype.fromFile=function(t,e){var n=this,i=r(!function(){var t=new Error(\"Cannot find module 'fs'\");throw t.code=\"MODULE_NOT_FOUND\",t}());return i.exists(t,function(r){r?i.createReadStream(t,e).pipe(n):n.emit(\"error\",new Error(\"File does not exist. Check to make sure the file path to your csv is correct.\"))}),this},i.prototype.fromStream=function(t){return t.pipe(this),this},i.prototype.fromString=function(t){t.toString();var e=new o.Readable,r=0;return e._read=function(e){if(r>=t.length)this.push(null);else{var n=t.substr(r,e);this.push(n),r+=e}},this.fromStream(e)},i.prototype.then=function(t,e){var r=this;return new u.default(function(n,i){r.parseRuntime.then={onfulfilled:function(e){n(t?t(e):e)},onrejected:function(t){e?n(e(t)):i(t)}}})},Object.defineProperty(i.prototype,\"parseParam\",{get:function(){return this.params},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,\"parseRuntime\",{get:function(){return this.runtime},enumerable:!0,configurable:!0}),i.prototype._transform=function(t,e,r){var n=this;this.processor.process(t).then(function(t){if(t.length>0)return n.runtime.started=!0,n.result.processResult(t)}).then(function(){n.emit(\"drained\"),r()},function(t){n.runtime.hasError=!0,n.runtime.error=t,n.emit(\"error\",t),r()})},i.prototype._flush=function(t){var e=this;this.processor.flush().then(function(t){if(t.length>0)return e.result.processResult(t)}).then(function(){e.processEnd(t)},function(r){e.emit(\"error\",r),t()})},i.prototype.processEnd=function(t){this.result.endProcess(),this.emit(\"done\"),t()},Object.defineProperty(i.prototype,\"parsedLineNumber\",{get:function(){return this.runtime.parsedLineNumber},enumerable:!0,configurable:!0}),i}(o.Transform);e.Converter=f}).call(this,r(11).setImmediate)},function(t,e,r){(function(t,e){!function(t,r){\"use strict\";if(!t.setImmediate){var n,i=1,o={},s=!1,a=t.document,u=Object.getPrototypeOf&&Object.getPrototypeOf(t);u=u&&u.setTimeout?u:t,\"[object process]\"==={}.toString.call(t.process)?n=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage(\"\",\"*\"),t.onmessage=r,e}}()?function(){var e=\"setImmediate$\"+Math.random()+\"$\",r=function(r){r.source===t&&\"string\"==typeof r.data&&0===r.data.indexOf(e)&&l(+r.data.slice(e.length))};t.addEventListener?t.addEventListener(\"message\",r,!1):t.attachEvent(\"onmessage\",r),n=function(r){t.postMessage(e+r,\"*\")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},n=function(e){t.port2.postMessage(e)}}():a&&\"onreadystatechange\"in a.createElement(\"script\")?function(){var t=a.documentElement;n=function(e){var r=a.createElement(\"script\");r.onreadystatechange=function(){l(e),r.onreadystatechange=null,t.removeChild(r),r=null},t.appendChild(r)}}():n=function(t){setTimeout(l,0,t)},u.setImmediate=function(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),r=0;r<e.length;r++)e[r]=arguments[r+1];var s={callback:t,args:e};return o[i]=s,n(i),i++},u.clearImmediate=c}function c(t){delete o[t]}function l(t){if(s)setTimeout(l,0,t);else{var e=o[t];if(e){s=!0;try{!function(t){var e=t.callback,n=t.args;switch(n.length){case 0:e();break;case 1:e(n[0]);break;case 2:e(n[0],n[1]);break;case 3:e(n[0],n[1],n[2]);break;default:e.apply(r,n)}}(e)}finally{c(t),s=!1}}}}}(\"undefined\"==typeof self?void 0===t?this:t:self)}).call(this,r(0),r(4))},function(t,e,r){t.exports=i;var n=r(12).EventEmitter;function i(){n.call(this)}r(2)(i,n),i.Readable=r(13),i.Writable=r(46),i.Duplex=r(47),i.Transform=r(48),i.PassThrough=r(49),i.Stream=i,i.prototype.pipe=function(t,e){var r=this;function i(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),t.on(\"drain\",o),t._isStdio||e&&!1===e.end||(r.on(\"end\",a),r.on(\"close\",u));var s=!1;function a(){s||(s=!0,t.end())}function u(){s||(s=!0,\"function\"==typeof t.destroy&&t.destroy())}function c(t){if(l(),0===n.listenerCount(this,\"error\"))throw t}function l(){r.removeListener(\"data\",i),t.removeListener(\"drain\",o),r.removeListener(\"end\",a),r.removeListener(\"close\",u),r.removeListener(\"error\",c),t.removeListener(\"error\",c),r.removeListener(\"end\",l),r.removeListener(\"close\",l),t.removeListener(\"close\",l)}return r.on(\"error\",c),t.on(\"error\",c),r.on(\"end\",l),r.on(\"close\",l),t.on(\"close\",l),t.emit(\"pipe\",r),t}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";e.byteLength=function(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){for(var e,r=c(t),n=r[0],s=r[1],a=new o(3*(n+s)/4-s),u=0,l=s>0?n-4:n,f=0;f<l;f+=4)e=i[t.charCodeAt(f)]<<18|i[t.charCodeAt(f+1)]<<12|i[t.charCodeAt(f+2)]<<6|i[t.charCodeAt(f+3)],a[u++]=e>>16&255,a[u++]=e>>8&255,a[u++]=255&e;return 2===s&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,a[u++]=255&e),1===s&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,a[u++]=e>>8&255,a[u++]=255&e),a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;s<a;s+=16383)o.push(f(t,s,s+16383>a?a:s+16383));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\")),o.join(\"\")};for(var n=[],i=[],o=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0,u=s.length;a<u;++a)n[a]=s[a],i[s.charCodeAt(a)]=a;function c(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function f(t,e,r){for(var n,i=[],o=e;o<r;o+=3)n=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(255&t[o+2]),i.push(l(n));return i.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,l=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<<c)-1,f=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*_}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e){},function(t,e,r){\"use strict\";var n=r(7).Buffer,i=r(43);function o(t,e,r){t.copy(e,r)}t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var e=n.allocUnsafe(t>>>0),r=this.head,i=0;r;)o(r.data,e,i),i+=r.data.length,r=r.next;return e},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+\" \"+t})},function(t,e){},function(t,e,r){(function(e){function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&\"true\"===String(r).toLowerCase()}t.exports=function(t,e){if(r(\"noDeprecation\"))return t;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(e);r(\"traceDeprecation\")?console.trace(e):console.warn(e),n=!0}return t.apply(this,arguments)}}}).call(this,r(0))},function(t,e,r){\"use strict\";t.exports=o;var n=r(27),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=r(2),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(14)},function(t,e,r){t.exports=r(1)},function(t,e,r){t.exports=r(13).Transform},function(t,e,r){t.exports=r(13).PassThrough},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mergeParams=function(t){var e={delimiter:\",\",ignoreColumns:void 0,includeColumns:void 0,quote:'\"',trim:!0,checkType:!1,ignoreEmpty:!1,noheader:!1,headers:void 0,flatKeys:!1,maxRowLength:0,checkColumn:!1,escape:'\"',colParser:{},eol:void 0,alwaysSplitAtEOL:!1,output:\"json\",nullObject:!1,downstreamFormat:\"line\",needEmitAll:!0};for(var r in t||(t={}),t)t.hasOwnProperty(r)&&(Array.isArray(t[r])?e[r]=[].concat(t[r]):e[r]=t[r]);return e}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.initParseRuntime=function(t){var e=t.parseParam,r={needProcessIgnoreColumn:!1,needProcessIncludeColumn:!1,selectedColumns:void 0,ended:!1,hasError:!1,error:void 0,delimiter:t.parseParam.delimiter,eol:t.parseParam.eol,columnConv:[],headerType:[],headerTitle:[],headerFlag:[],headers:void 0,started:!1,parsedLineNumber:0,columnValueSetter:[]};return e.ignoreColumns&&(r.needProcessIgnoreColumn=!0),e.includeColumns&&(r.needProcessIncludeColumn=!0),r}},function(t,e,r){\"use strict\";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(53),s=i(r(15)),a=r(54),u=i(r(16)),c=r(57),l=r(28),f=r(58),h=i(r(59)),p=i(r(29)),d=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.rowSplit=new f.RowSplit(t.converter),t.eolEmitted=!1,t._needEmitEol=void 0,t.headEmitted=!1,t._needEmitHead=void 0,t}return n(r,e),r.prototype.flush=function(){var t=this;if(this.runtime.csvLineBuffer&&this.runtime.csvLineBuffer.length>0){var e=this.runtime.csvLineBuffer;return this.runtime.csvLineBuffer=void 0,this.process(e,!0).then(function(e){return t.runtime.csvLineBuffer&&t.runtime.csvLineBuffer.length>0?s.default.reject(p.default.unclosed_quote(t.runtime.parsedLineNumber,t.runtime.csvLineBuffer.toString())):s.default.resolve(e)})}return s.default.resolve([])},r.prototype.destroy=function(){return s.default.resolve()},Object.defineProperty(r.prototype,\"needEmitEol\",{get:function(){return void 0===this._needEmitEol&&(this._needEmitEol=this.converter.listeners(\"eol\").length>0),this._needEmitEol},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,\"needEmitHead\",{get:function(){return void 0===this._needEmitHead&&(this._needEmitHead=this.converter.listeners(\"header\").length>0),this._needEmitHead},enumerable:!0,configurable:!0}),r.prototype.process=function(t,e){var r,n=this;return void 0===e&&(e=!1),r=e?t.toString():a.prepareData(t,this.converter.parseRuntime),s.default.resolve().then(function(){return n.runtime.preRawDataHook?n.runtime.preRawDataHook(r):r}).then(function(t){return t&&t.length>0?n.processCSV(t,e):s.default.resolve([])})},r.prototype.processCSV=function(t,e){var r=this,n=this.params,i=this.runtime;i.eol||u.default(t,i),this.needEmitEol&&!this.eolEmitted&&i.eol&&(this.converter.emit(\"eol\",i.eol),this.eolEmitted=!0),n.ignoreEmpty&&!i.started&&(t=l.trimLeft(t));var o=c.stringToLines(t,i);return e?(o.lines.push(o.partial),o.partial=\"\"):this.prependLeftBuf(l.bufFromString(o.partial)),o.lines.length>0?(i.preFileLineHook?this.runPreLineHook(o.lines):s.default.resolve(o.lines)).then(function(t){return i.started||r.runtime.headers?r.processCSVBody(t):r.processDataWithHead(t)}):s.default.resolve([])},r.prototype.processDataWithHead=function(t){if(this.params.noheader)this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=[];else{for(var e=\"\",r=[];t.length;){var n=e+t.shift(),i=this.rowSplit.parse(n);if(i.closed){r=i.cells,e=\"\";break}e=n+u.default(n,this.runtime)}if(this.prependLeftBuf(l.bufFromString(e)),0===r.length)return[];this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=r}return(this.runtime.needProcessIgnoreColumn||this.runtime.needProcessIncludeColumn)&&this.filterHeader(),this.needEmitHead&&!this.headEmitted&&(this.converter.emit(\"header\",this.runtime.headers),this.headEmitted=!0),this.processCSVBody(t)},r.prototype.filterHeader=function(){if(this.runtime.selectedColumns=[],this.runtime.headers){for(var t=this.runtime.headers,e=0;e<t.length;e++)if(this.params.ignoreColumns)if(this.params.ignoreColumns.test(t[e])){if(!this.params.includeColumns||!this.params.includeColumns.test(t[e]))continue;this.runtime.selectedColumns.push(e)}else this.runtime.selectedColumns.push(e);else this.params.includeColumns?this.params.includeColumns.test(t[e])&&this.runtime.selectedColumns.push(e):this.runtime.selectedColumns.push(e);this.runtime.headers=l.filterArray(this.runtime.headers,this.runtime.selectedColumns)}},r.prototype.processCSVBody=function(t){if(\"line\"===this.params.output)return t;var e=this.rowSplit.parseMultiLines(t);return this.prependLeftBuf(l.bufFromString(e.partial)),\"csv\"===this.params.output?e.rowsCells:h.default(e.rowsCells,this.converter)},r.prototype.prependLeftBuf=function(e){e&&(this.runtime.csvLineBuffer?this.runtime.csvLineBuffer=t.concat([e,this.runtime.csvLineBuffer]):this.runtime.csvLineBuffer=e)},r.prototype.runPreLineHook=function(t){var e=this;return new s.default(function(r,n){!function t(e,r,n,i){if(n>=e.length)i();else if(r.preFileLineHook){var o=e[n],s=r.preFileLineHook(o,r.parsedLineNumber+n);if(n++,s&&s.then)s.then(function(o){e[n-1]=o,t(e,r,n,i)});else{for(e[n-1]=s;n<e.length;)e[n]=r.preFileLineHook(e[n],r.parsedLineNumber+n),n++;i()}}else i()}(t,e.runtime,0,function(e){e?n(e):r(t)})})},r}(o.Processor);e.ProcessorLocal=d}).call(this,r(3).Buffer)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t){this.converter=t,this.params=t.parseParam,this.runtime=t.parseRuntime};e.Processor=n},function(t,e,r){\"use strict\";(function(t){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(r(55));e.prepareData=function(e,r){var n=function(e,r){return r.csvLineBuffer&&r.csvLineBuffer.length>0?t.concat([r.csvLineBuffer,e]):e}(e,r);r.csvLineBuffer=void 0;var o=function(t,e){var r=t.length-1;if(0!=(128&t[r])){for(;128==(192&t[r]);)r--;r--}return r!=t.length-1?(e.csvLineBuffer=t.slice(r+1),t.slice(0,r+1)):t}(n,r).toString(\"utf8\");return!1===r.started?i.default(o):o}}).call(this,r(3).Buffer)},function(t,e,r){\"use strict\";(function(e){var n=r(56);t.exports=function(t){return\"string\"==typeof t&&65279===t.charCodeAt(0)?t.slice(1):e.isBuffer(t)&&n(t)&&239===t[0]&&187===t[1]&&191===t[2]?t.slice(3):t}}).call(this,r(3).Buffer)},function(t,e){t.exports=function(t){for(var e=0;e<t.length;)if(9==t[e]||10==t[e]||13==t[e]||32<=t[e]&&t[e]<=126)e+=1;else if(194<=t[e]&&t[e]<=223&&128<=t[e+1]&&t[e+1]<=191)e+=2;else if(224==t[e]&&160<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191||(225<=t[e]&&t[e]<=236||238==t[e]||239==t[e])&&128<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191||237==t[e]&&128<=t[e+1]&&t[e+1]<=159&&128<=t[e+2]&&t[e+2]<=191)e+=3;else{if(!(240==t[e]&&144<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191||241<=t[e]&&t[e]<=243&&128<=t[e+1]&&t[e+1]<=191&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191||244==t[e]&&128<=t[e+1]&&t[e+1]<=143&&128<=t[e+2]&&t[e+2]<=191&&128<=t[e+3]&&t[e+3]<=191))return!1;e+=4}return!0}},function(t,e,r){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(r(16));e.stringToLines=function(t,e){var r=i.default(t,e),n=t.split(r);return{lines:n,partial:n.pop()||\"\"}}},function(t,e,r){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(r(16)),o=r(28),s=[\",\",\"|\",\"\\t\",\";\",\":\"],a=function(){function t(t){this.conv=t,this.cachedRegExp={},this.delimiterEmitted=!1,this._needEmitDelimiter=void 0,this.quote=t.parseParam.quote,this.trim=t.parseParam.trim,this.escape=t.parseParam.escape}return Object.defineProperty(t.prototype,\"needEmitDelimiter\",{get:function(){return void 0===this._needEmitDelimiter&&(this._needEmitDelimiter=this.conv.listeners(\"delimiter\").length>0),this._needEmitDelimiter},enumerable:!0,configurable:!0}),t.prototype.parse=function(t){if(0===t.length||this.conv.parseParam.ignoreEmpty&&0===t.trim().length)return{cells:[],closed:!0};var e=this.quote,r=this.trim;this.escape,(this.conv.parseRuntime.delimiter instanceof Array||\"auto\"===this.conv.parseRuntime.delimiter.toLowerCase())&&(this.conv.parseRuntime.delimiter=this.getDelimiter(t)),this.needEmitDelimiter&&!this.delimiterEmitted&&(this.conv.emit(\"delimiter\",this.conv.parseRuntime.delimiter),this.delimiterEmitted=!0);var n=this.conv.parseRuntime.delimiter,i=t.split(n);if(\"off\"===e){if(r)for(var o=0;o<i.length;o++)i[o]=i[o].trim();return{cells:i,closed:!0}}return this.toCSVRow(i,r,e,n)},t.prototype.toCSVRow=function(t,e,r,n){for(var i=[],s=!1,a=\"\",u=0,c=t.length;u<c;u++){var l=t[u];!s&&e&&(l=o.trimLeft(l));var f=l.length;if(s)this.isQuoteClose(l)?(s=!1,a+=n+(l=l.substr(0,f-1)),a=this.escapeQuote(a),e&&(a=o.trimRight(a)),i.push(a),a=\"\"):a+=n+l;else{if(2===f&&l===this.quote+this.quote){i.push(\"\");continue}if(this.isQuoteOpen(l)){if(l=l.substr(1),this.isQuoteClose(l)){l=l.substring(0,l.lastIndexOf(r)),l=this.escapeQuote(l),i.push(l);continue}if(-1!==l.indexOf(r)){for(var h=0,p=\"\",d=0,_=l;d<_.length;d++){var v=_[d];v===r&&p!==this.escape?(h++,p=\"\"):p=v}if(h%2==1){e&&(l=o.trimRight(l)),i.push(r+l);continue}s=!0,a+=l;continue}s=!0,a+=l;continue}e&&(l=o.trimRight(l)),i.push(l)}}return{cells:i,closed:!s}},t.prototype.getDelimiter=function(t){var e;if(\"auto\"===this.conv.parseParam.delimiter)e=s;else{if(!(this.conv.parseParam.delimiter instanceof Array))return this.conv.parseParam.delimiter;e=this.conv.parseParam.delimiter}var r=0,n=\",\";return e.forEach(function(e){var i=t.split(e).length;i>r&&(n=e,r=i)}),n},t.prototype.isQuoteOpen=function(t){var e=this.quote,r=this.escape;return t[0]===e&&(t[1]!==e||t[1]===r&&(t[2]===e||2===t.length))},t.prototype.isQuoteClose=function(t){var e=this.quote,r=this.escape;this.conv.parseParam.trim&&(t=o.trimRight(t));for(var n=0,i=t.length-1;t[i]===e||t[i]===r;)i--,n++;return n%2!=0},t.prototype.escapeQuote=function(t){var e=\"es|\"+this.quote+\"|\"+this.escape;void 0===this.cachedRegExp[e]&&(this.cachedRegExp[e]=new RegExp(\"\\\\\"+this.escape+\"\\\\\"+this.quote,\"g\"));var r=this.cachedRegExp[e];return t.replace(r,this.quote)},t.prototype.parseMultiLines=function(t){for(var e=[],r=\"\";t.length;){var n=r+t.shift(),s=this.parse(n);0===s.cells.length&&this.conv.parseParam.ignoreEmpty||(s.closed||this.conv.parseParam.alwaysSplitAtEOL?(this.conv.parseRuntime.selectedColumns?e.push(o.filterArray(s.cells,this.conv.parseRuntime.selectedColumns)):e.push(s.cells),r=\"\"):r=n+(i.default(n,this.conv.parseRuntime)||\"\\n\"))}return{rowsCells:e,partial:r}},t}();e.RowSplit=a},function(t,e,r){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(r(29)),o=n(r(60)),s=/^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$/;function a(t,e,r){if(e.parseParam.checkColumn&&e.parseRuntime.headers&&t.length!==e.parseRuntime.headers.length)throw i.default.column_mismatched(e.parseRuntime.parsedLineNumber+r);return function(t,e,r){for(var n=!1,i={},o=0,s=t.length;o<s;o++){var a=t[o];if(!r.parseParam.ignoreEmpty||\"\"!==a){n=!0;var u=e[o];u&&\"\"!==u||(u=e[o]=\"field\"+(o+1));var f=c(u,o,r);if(f){var h=f(a,u,i,t,o);void 0!==h&&l(i,u,h,r,o)}else{if(r.parseParam.checkType)a=p(a,u,o,r)(a);void 0!==a&&l(i,u,a,r,o)}}}return n?i:null}(t,e.parseRuntime.headers||[],e)||null}e.default=function(t,e){for(var r=[],n=0,i=t.length;n<i;n++){var o=a(t[n],e,n);o&&r.push(o)}return r};var u={string:_,number:d,omit:function(){}};function c(t,e,r){if(void 0!==r.parseRuntime.columnConv[e])return r.parseRuntime.columnConv[e];var n=r.parseParam.colParser[t];if(void 0===n)return r.parseRuntime.columnConv[e]=null;if(\"object\"==typeof n&&(n=n.cellParser||\"string\"),\"string\"==typeof n){n=n.trim().toLowerCase();var i=u[n];return r.parseRuntime.columnConv[e]=i||null}return r.parseRuntime.columnConv[e]=\"function\"==typeof n?n:null}function l(t,e,r,n,i){if(!n.parseRuntime.columnValueSetter[i])if(n.parseParam.flatKeys)n.parseRuntime.columnValueSetter[i]=f;else if(e.indexOf(\".\")>-1){for(var o=e.split(\".\"),s=!0;o.length>0;)if(0===o.shift().length){s=!1;break}!s||n.parseParam.colParser[e]&&n.parseParam.colParser[e].flat?n.parseRuntime.columnValueSetter[i]=f:n.parseRuntime.columnValueSetter[i]=h}else n.parseRuntime.columnValueSetter[i]=f;!0===n.parseParam.nullObject&&\"null\"===r&&(r=null),n.parseRuntime.columnValueSetter[i](t,e,r)}function f(t,e,r){t[e]=r}function h(t,e,r){o.default(t,e,r)}function p(t,e,r,n){return n.parseRuntime.headerType[r]?n.parseRuntime.headerType[r]:e.indexOf(\"number#!\")>-1?n.parseRuntime.headerType[r]=d:e.indexOf(\"string#!\")>-1?n.parseRuntime.headerType[r]=_:n.parseParam.checkType?n.parseRuntime.headerType[r]=v:n.parseRuntime.headerType[r]=_}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function _(t){return t.toString()}function v(t){var e=t.trim();return\"\"===e?_(t):s.test(e)?d(t):5===e.length&&\"false\"===e.toLowerCase()||4===e.length&&\"true\"===e.toLowerCase()?function(t){var e=t.trim();return 5!==e.length||\"false\"!==e.toLowerCase()}(t):\"{\"===e[0]&&\"}\"===e[e.length-1]||\"[\"===e[0]&&\"]\"===e[e.length-1]?function(t){try{return JSON.parse(t)}catch(e){return t}}(t):_(t)}},function(t,e,r){var n=r(61);t.exports=function(t,e,r){return null==t?t:n(t,e,r)}},function(t,e,r){var n=r(62),i=r(74),o=r(103),s=r(20),a=r(104);t.exports=function(t,e,r,u){if(!s(t))return t;for(var c=-1,l=(e=i(e,t)).length,f=l-1,h=t;null!=h&&++c<l;){var p=a(e[c]),d=r;if(c!=f){var _=h[p];void 0===(d=u?u(_,p,h):void 0)&&(d=s(_)?_:o(e[c+1])?[]:{})}n(h,p,d),h=h[p]}return t}},function(t,e,r){var n=r(63),i=r(31),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){var s=t[e];o.call(t,e)&&i(s,r)&&(void 0!==r||e in t)||n(t,e,r)}},function(t,e,r){var n=r(64);t.exports=function(t,e,r){\"__proto__\"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},function(t,e,r){var n=r(17),i=function(){try{var t=n(Object,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}();t.exports=i},function(t,e,r){var n=r(66),i=r(70),o=r(20),s=r(72),a=/^\\[object .+?Constructor\\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,f=c.hasOwnProperty,h=RegExp(\"^\"+l.call(f).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");t.exports=function(t){return!(!o(t)||i(t))&&(n(t)?h:a).test(s(t))}},function(t,e,r){var n=r(30),i=r(20);t.exports=function(t){if(!i(t))return!1;var e=n(t);return\"[object Function]\"==e||\"[object GeneratorFunction]\"==e||\"[object AsyncFunction]\"==e||\"[object Proxy]\"==e}},function(t,e,r){(function(e){var r=\"object\"==typeof e&&e&&e.Object===Object&&e;t.exports=r}).call(this,r(0))},function(t,e,r){var n=r(18),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=n?n.toStringTag:void 0;t.exports=function(t){var e=o.call(t,a),r=t[a];try{t[a]=void 0;var n=!0}catch(t){}var i=s.call(t);return n&&(e?t[a]=r:delete t[a]),i}},function(t,e){var r=Object.prototype.toString;t.exports=function(t){return r.call(t)}},function(t,e,r){var n=r(71),i=function(){var t=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();t.exports=function(t){return!!i&&i in t}},function(t,e,r){var n=r(19)[\"__core-js_shared__\"];t.exports=n},function(t,e){var r=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return r.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"}},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,r){var n=r(21),i=r(75),o=r(77),s=r(100);t.exports=function(t,e){return n(t)?t:i(t,e)?[t]:o(s(t))}},function(t,e,r){var n=r(21),i=r(22),o=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,s=/^\\w*$/;t.exports=function(t,e){if(n(t))return!1;var r=typeof t;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=t&&!i(t))||s.test(t)||!o.test(t)||null!=e&&t in Object(e)}},function(t,e){t.exports=function(t){return null!=t&&\"object\"==typeof t}},function(t,e,r){var n=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,i=/\\\\(\\\\)?/g,o=r(78)(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(\"\"),t.replace(n,function(t,r,n,o){e.push(n?o.replace(i,\"$1\"):r||t)}),e});t.exports=o},function(t,e,r){var n=r(79);t.exports=function(t){var e=n(t,function(t){return 500===r.size&&r.clear(),t}),r=e.cache;return e}},function(t,e,r){var n=r(80),i=\"Expected a function\";function o(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(i);var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var s=t.apply(this,n);return r.cache=o.set(i,s)||o,s};return r.cache=new(o.Cache||n),r}o.Cache=n,t.exports=o},function(t,e,r){var n=r(81),i=r(95),o=r(97),s=r(98),a=r(99);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e,r){var n=r(82),i=r(88),o=r(94);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(o||i),string:new n}}},function(t,e,r){var n=r(83),i=r(84),o=r(85),s=r(86),a=r(87);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e,r){var n=r(8);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(t,e,r){var n=r(8),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return\"__lodash_hash_undefined__\"===r?void 0:r}return i.call(e,t)?e[t]:void 0}},function(t,e,r){var n=r(8),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:i.call(e,t)}},function(t,e,r){var n=r(8);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?\"__lodash_hash_undefined__\":e,this}},function(t,e,r){var n=r(89),i=r(90),o=r(91),s=r(92),a=r(93);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=i,u.prototype.get=o,u.prototype.has=s,u.prototype.set=a,t.exports=u},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,r){var n=r(9),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0||(r==e.length-1?e.pop():i.call(e,r,1),--this.size,0))}},function(t,e,r){var n=r(9);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},function(t,e,r){var n=r(9);t.exports=function(t){return n(this.__data__,t)>-1}},function(t,e,r){var n=r(9);t.exports=function(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},function(t,e,r){var n=r(17)(r(19),\"Map\");t.exports=n},function(t,e,r){var n=r(10);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).get(t)}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).has(t)}},function(t,e,r){var n=r(10);t.exports=function(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},function(t,e,r){var n=r(101);t.exports=function(t){return null==t?\"\":n(t)}},function(t,e,r){var n=r(18),i=r(102),o=r(21),s=r(22),a=n?n.prototype:void 0,u=a?a.toString:void 0;t.exports=function t(e){if(\"string\"==typeof e)return e;if(o(e))return i(e,t)+\"\";if(s(e))return u?u.call(e):\"\";var r=e+\"\";return\"0\"==r&&1/e==-1/0?\"-0\":r}},function(t,e){t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r<n;)i[r]=e(t[r],r,t);return i}},function(t,e){var r=/^(?:0|[1-9]\\d*)$/;t.exports=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&(\"number\"==n||\"symbol\"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},function(t,e,r){var n=r(22);t.exports=function(t){if(\"string\"==typeof t||n(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-1/0?\"-0\":e}},function(t,e,r){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(r(15)),o=r(106),s=function(){function t(t){this.converter=t,this.finalResult=[]}return Object.defineProperty(t.prototype,\"needEmitLine\",{get:function(){return!!this.converter.parseRuntime.subscribe&&!!this.converter.parseRuntime.subscribe.onNext||this.needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"needPushDownstream\",{get:function(){return void 0===this._needPushDownstream&&(this._needPushDownstream=this.converter.listeners(\"data\").length>0||this.converter.listeners(\"readable\").length>0),this._needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"needEmitAll\",{get:function(){return!!this.converter.parseRuntime.then&&this.converter.parseParam.needEmitAll},enumerable:!0,configurable:!0}),t.prototype.processResult=function(t){var e=this,r=this.converter.parseRuntime.parsedLineNumber;return this.needPushDownstream&&\"array\"===this.converter.parseParam.downstreamFormat&&0===r&&a(this.converter,\"[\"+o.EOL),new i.default(function(r,n){e.needEmitLine?function t(e,r,n,i,o){if(n>=e.length)o();else if(r.parseRuntime.subscribe&&r.parseRuntime.subscribe.onNext){var s=r.parseRuntime.subscribe.onNext,u=e[n],c=s(u,r.parseRuntime.parsedLineNumber+n);if(n++,c&&c.then)c.then(function(){!function(e,r,n,i,o,s,u){o&&a(n,u),t(e,n,i,o,s)}(e,0,r,n,i,o,u)},o);else{for(i&&a(r,u);n<e.length;){var l=e[n];s(l,r.parseRuntime.parsedLineNumber+n),n++,i&&a(r,l)}o()}}else{if(i)for(;n<e.length;)l=e[n++],a(r,l);o()}}(t,e.converter,0,e.needPushDownstream,function(i){i?n(i):(e.appendFinalResult(t),r())}):(e.appendFinalResult(t),r())})},t.prototype.appendFinalResult=function(t){this.needEmitAll&&(this.finalResult=this.finalResult.concat(t)),this.converter.parseRuntime.parsedLineNumber+=t.length},t.prototype.processError=function(t){this.converter.parseRuntime.subscribe&&this.converter.parseRuntime.subscribe.onError&&this.converter.parseRuntime.subscribe.onError(t),this.converter.parseRuntime.then&&this.converter.parseRuntime.then.onrejected&&this.converter.parseRuntime.then.onrejected(t)},t.prototype.endProcess=function(){this.converter.parseRuntime.then&&this.converter.parseRuntime.then.onfulfilled&&(this.needEmitAll?this.converter.parseRuntime.then.onfulfilled(this.finalResult):this.converter.parseRuntime.then.onfulfilled([])),this.converter.parseRuntime.subscribe&&this.converter.parseRuntime.subscribe.onCompleted&&this.converter.parseRuntime.subscribe.onCompleted(),this.needPushDownstream&&\"array\"===this.converter.parseParam.downstreamFormat&&a(this.converter,\"]\"+o.EOL)},t}();function a(t,e){if(\"object\"!=typeof e||t.options.objectMode)t.push(e);else{var r=JSON.stringify(e);t.push(r+(\"array\"===t.parseParam.downstreamFormat?\",\"+o.EOL:o.EOL),\"utf8\")}}e.Result=s},function(t,e){e.endianness=function(){return\"LE\"},e.hostname=function(){return\"undefined\"!=typeof location?location.hostname:\"\"},e.loadavg=function(){return[]},e.uptime=function(){return 0},e.freemem=function(){return Number.MAX_VALUE},e.totalmem=function(){return Number.MAX_VALUE},e.cpus=function(){return[]},e.type=function(){return\"Browser\"},e.release=function(){return\"undefined\"!=typeof navigator?navigator.appVersion:\"\"},e.networkInterfaces=e.getNetworkInterfaces=function(){return{}},e.arch=function(){return\"javascript\"},e.platform=function(){return\"browser\"},e.tmpdir=e.tmpDir=function(){return\"/tmp\"},e.EOL=\"\\n\",e.homedir=function(){return\"/\"}}]);"],"names":["module","exports","t","e","r","n","i","l","call","m","c","d","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","this","Function","eval","window","keys","push","f","inherits","a","u","length","readable","writable","allowHalfOpen","once","h","_writableState","ended","nextTick","end","highWaterMark","_readableState","destroyed","set","_destroy","super_","constructor","configurable","TYPED_ARRAY_SUPPORT","RangeError","Uint8Array","__proto__","Error","TypeError","ArrayBuffer","byteLength","isEncoding","write","slice","isBuffer","copy","buffer","type","data","toString","isView","N","H","toLowerCase","_","v","isNaN","from","y","indexOf","lastIndexOf","String","readUInt16BE","Number","parseInt","substr","g","V","b","charCodeAt","w","E","C","x","fromByteArray","j","Math","min","S","fromCharCode","apply","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","kMaxLength","poolSize","_augment","species","fill","allocUnsafe","allocUnsafeSlow","_isBuffer","compare","concat","swap16","swap32","swap64","arguments","T","R","k","P","equals","inspect","match","join","includes","isFinite","toJSON","Array","_arr","U","O","A","F","L","M","B","D","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","I","toByteArray","trim","replace","setTimeout","clearTimeout","run","fun","array","title","browser","env","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","isArray","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","__data__","map","self","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","_events","_maxListeners","EventEmitter","defaultMaxListeners","setMaxListeners","error","context","newListener","listener","warned","console","trace","splice","listenerCount","Stream","Readable","Writable","Duplex","Transform","PassThrough","next","entry","finish","callback","pendingcb","corkedRequestsFree","WritableState","deprecate","objectMode","writableObjectMode","writableHighWaterMark","finalCalled","needDrain","ending","finished","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","errorEmitted","bufferedRequest","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","final","_final","isBuf","allBuffers","chunk","encoding","getBuffer","hasInstance","pipe","cork","uncork","setDefaultEncoding","_undestroy","undestroy","_dereq_","code","_SomePromiseArray","promise","setHowMany","setUnwrap","init","any","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","_queueTick","_pushOne","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","stderr","stack","exit","throwLater","invokeLater","invoke","settlePromises","_settlePromises","_drainQueue","shift","_reset","firstLineError","_reject","promiseRejectionQueued","bindingPromise","_then","_bitField","_resolveCallback","target","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","resolve","Promise","noConflict","canEvaluate","classString","pop","max","isIdentifier","tryCatch","errorObj","_async","break","cancel","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","_trace","CapturedTrace","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","_getDomain","Warning","canAttachTrace","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","q","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","onPossiblyUnhandledRejection","domainBind","onUnhandledRejectionHandled","longStackTraces","J","Y","_captureStackTrace","hasLongStackTraces","CustomEvent","global","dispatchEvent","detail","cancelable","Event","document","createEvent","initCustomEvent","isNode","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","child","warning","unhandledRejection","reason","rejectionHandled","_attachCancellationCallback","config","warnings","wForgottenReturn","_clearCancellationData","_execute","monitoring","_fireEvent","isFulfilled","X","_parent","attachExtraTrace","__stackCleaned__","notEnumerableProp","message","test","$","charAt","split","name","log","W","JSON","stringify","G","z","Q","fileName","line","_promisesCreated","uncycle","stackTraceLimit","captureStackTrace","warn","isTTY","checkForgottenReturns","setBounds","deprecated","fireDomEvent","fireGlobalEvent","return","thenReturn","throw","thenThrow","catchThrow","caught","catchReturn","reduce","all","each","mapSeries","freeze","isOperational","cause","__BluebirdErrorTypes__","CancellationError","TimeoutError","OperationalError","RejectionError","AggregateError","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","isES5","propertyIsWritable","filter","handler","called","cancelPromise","finallyHandler","isFinallyHandler","isRejected","_passThrough","then","lastly","finally","tap","tapCatch","reject","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","done","_value","_reason","_proxy","yieldHandler","addYieldHandler","spawn","spread","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","_totalResolved","_filter","_resolve","preservedValues","method","_resolveFromSyncValue","attempt","try","maybeWrapAsError","markAsOriginatingFromRejection","asCallback","nodeify","PromiseInspection","domain","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","catch","reflect","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","multiArgs","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","_settlePromiseCtx","_settlePromiseLateCancellationObserver","receiver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","_migrateCallbackAt","_setFollowee","ensureErrorObject","_settlePromiseFromHandler","_settlePromise","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","lastLineError","asArray","_iterate","_resolveEmptyArray","Map","getActualLength","shouldCopyValues","withAppended","__isPromisified__","RegExp","getDataPropertyOrDefault","inheritedDataKeys","promisify","copyDescriptors","promisifyAll","suffix","promisifier","isClass","size","forEach","_isMap","props","_capacity","_front","_willBeOverCapacity","_checkCapacity","_resizeTo","race","_fn","_initialValue","_currentCancellable","_eachValues","accum","_gotAccum","index","_eachComplete","_resultCancelled$","getNativePromise","MutationObserver","isRecentNode","navigator","standalone","cordova","createElement","attributes","classList","toggle","observe","disconnect","_promiseResolved","_settledValueField","settle","_howMany","_unwrap","_initialized","_canPossiblyFulfill","_getRangeError","howMany","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","some","isResolved","__isCancelled","handle","delay","timeout","_isDisposable","_getDisposer","_setDisposable","tryDispose","_data","_context","isDisposer","resources","resource","doDispose","_unsetDisposable","using","_disposer","disposer","iterator","thrower","filledRange","chrome","loadTimes","hasEnvVariables","node","eol","ReadableState","debuglog","readableObjectMode","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","StringDecoder","_read","unshift","isPaused","setEncoding","head","clear","tail","stdout","hasUnpiped","pause","unpipe","resume","wrap","_fromList","text","fillLast","lastNeed","lastTotal","lastChar","_transformState","afterTransform","transforming","writechunk","needTransform","writeencoding","transform","_transform","flush","_flush","bufFromString","emptyBuffer","filterArray","trimLeft","trimRight","__extends","setPrototypeOf","err","extra","column_mismatched","unclosed_quote","fromJSON","Converter","csv","__importDefault","options","params","mergeParams","runtime","initParseRuntime","result","Result","processor","ProcessorLocal","processError","preRawData","preRawDataHook","preFileLine","preFileLineHook","subscribe","parseRuntime","onNext","onError","onCompleted","fromFile","exists","createReadStream","fromStream","fromString","onfulfilled","onrejected","process","started","processResult","hasError","processEnd","endProcess","parsedLineNumber","postMessage","importScripts","onmessage","random","source","addEventListener","attachEvent","MessageChannel","port1","port2","documentElement","onreadystatechange","removeChild","appendChild","args","_isStdio","NaN","abs","LN2","custom","localStorage","delimiter","ignoreColumns","includeColumns","quote","checkType","ignoreEmpty","noheader","headers","flatKeys","maxRowLength","checkColumn","escape","colParser","alwaysSplitAtEOL","output","nullObject","downstreamFormat","needEmitAll","parseParam","needProcessIgnoreColumn","needProcessIncludeColumn","selectedColumns","columnConv","headerType","headerTitle","headerFlag","columnValueSetter","rowSplit","RowSplit","converter","eolEmitted","_needEmitEol","headEmitted","_needEmitHead","csvLineBuffer","prepareData","processCSV","needEmitEol","stringToLines","lines","partial","prependLeftBuf","runPreLineHook","processCSVBody","processDataWithHead","parse","closed","cells","filterHeader","needEmitHead","parseMultiLines","rowsCells","Processor","conv","cachedRegExp","delimiterEmitted","_needEmitDelimiter","getDelimiter","needEmitDelimiter","toCSVRow","isQuoteClose","escapeQuote","isQuoteOpen","substring","string","number","omit","cellParser","flat","parseFloat","exec","IE_PROTO","cache","has","Cache","delete","hash","finalResult","needPushDownstream","_needPushDownstream","EOL","needEmitLine","appendFinalResult","endianness","hostname","location","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","release","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpdir","tmpDir","homedir"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2861.aa6cd5b7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2861],{82861:(e,s,t)=>{t.r(s),t.d(s,{default:()=>l.A,getToggleButtonUtilityClass:()=>a.J,toggleButtonClasses:()=>a.A});var l=t(82620),a=t(72225)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2872.5129bbd8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2872],{83162:(r,e,t)=>{t.d(e,{A:()=>h});var a=t(7552),o=t(93878),s=t(70799),l=t(51148),n=t(60129),i=t(4785),c=t(74893),u=t(69500);const d=(0,c.A)((0,u.jsx)("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");var v=t(28375),p=t(43045);const f=(0,l.Ay)("div",{name:"MuiAvatar",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[t.variant],t.colorDefault&&e.colorDefault]}})((0,n.A)((({theme:r})=>({position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:r.typography.fontFamily,fontSize:r.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none",variants:[{props:{variant:"rounded"},style:{borderRadius:(r.vars||r).shape.borderRadius}},{props:{variant:"square"},style:{borderRadius:0}},{props:{colorDefault:!0},style:{color:(r.vars||r).palette.background.default,...r.vars?{backgroundColor:r.vars.palette.Avatar.defaultBg}:{backgroundColor:r.palette.grey[400],...r.applyStyles("dark",{backgroundColor:r.palette.grey[600]})}}}]})))),g=(0,l.Ay)("img",{name:"MuiAvatar",slot:"Img",overridesResolver:(r,e)=>e.img})({width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:1e4}),m=(0,l.Ay)(d,{name:"MuiAvatar",slot:"Fallback",overridesResolver:(r,e)=>e.fallback})({width:"75%",height:"75%"}),h=a.forwardRef((function(r,e){const t=(0,i.b)({props:r,name:"MuiAvatar"}),{alt:l,children:n,className:c,component:d="div",slots:h={},slotProps:b={},imgProps:y,sizes:A,src:k,srcSet:w,variant:S="circular",...x}=t;let R=null;const j=function({crossOrigin:r,referrerPolicy:e,src:t,srcSet:o}){const[s,l]=a.useState(!1);return a.useEffect((()=>{if(!t&&!o)return;l(!1);let a=!0;const s=new Image;return s.onload=()=>{a&&l("loaded")},s.onerror=()=>{a&&l("error")},s.crossOrigin=r,s.referrerPolicy=e,s.src=t,o&&(s.srcset=o),()=>{a=!1}}),[r,e,t,o]),s}({...y,src:k,srcSet:w}),C=k||w,P=C&&"error"!==j,D={...t,colorDefault:!P,component:d,variant:S};delete D.ownerState;const M=(r=>{const{classes:e,variant:t,colorDefault:a}=r,o={root:["root",t,a&&"colorDefault"],img:["img"],fallback:["fallback"]};return(0,s.A)(o,v.k,e)})(D),[z,F]=(0,p.A)("img",{className:M.img,elementType:g,externalForwardedProps:{slots:h,slotProps:{img:{...y,...b.img}}},additionalProps:{alt:l,src:k,srcSet:w,sizes:A},ownerState:D});return R=P?(0,u.jsx)(z,{...F}):n||0===n?n:C&&l?l[0]:(0,u.jsx)(m,{ownerState:D,className:M.fallback}),(0,u.jsx)(f,{as:d,className:(0,o.A)(M.root,c),ref:e,...x,ownerState:D,children:R})}))},28375:(r,e,t)=>{t.d(e,{A:()=>l,k:()=>s});var a=t(33761),o=t(85693);function s(r){return(0,o.Ay)("MuiAvatar",r)}const l=(0,a.A)("MuiAvatar",["root","colorDefault","circular","rounded","square","img","fallback"])},42872:(r,e,t)=>{t.r(e),t.d(e,{avatarClasses:()=>o.A,default:()=>a.A,getAvatarUtilityClass:()=>o.k});var a=t(83162),o=t(28375)}}]);
+//# sourceMappingURL=2872.5129bbd8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2872.5129bbd8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2872.5129bbd8.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/svg-icons/Person.js","../../../node_modules/@mui/material/Avatar/Avatar.js","../../../node_modules/@mui/material/Avatar/avatarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Person from \"../internal/svg-icons/Person.js\";\nimport { getAvatarUtilityClass } from \"./avatarClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    colorDefault\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, colorDefault && 'colorDefault'],\n    img: ['img'],\n    fallback: ['fallback']\n  };\n  return composeClasses(slots, getAvatarUtilityClass, classes);\n};\nconst AvatarRoot = styled('div', {\n  name: 'MuiAvatar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  flexShrink: 0,\n  width: 40,\n  height: 40,\n  fontFamily: theme.typography.fontFamily,\n  fontSize: theme.typography.pxToRem(20),\n  lineHeight: 1,\n  borderRadius: '50%',\n  overflow: 'hidden',\n  userSelect: 'none',\n  variants: [{\n    props: {\n      variant: 'rounded'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'square'\n    },\n    style: {\n      borderRadius: 0\n    }\n  }, {\n    props: {\n      colorDefault: true\n    },\n    style: {\n      color: (theme.vars || theme).palette.background.default,\n      ...(theme.vars ? {\n        backgroundColor: theme.vars.palette.Avatar.defaultBg\n      } : {\n        backgroundColor: theme.palette.grey[400],\n        ...theme.applyStyles('dark', {\n          backgroundColor: theme.palette.grey[600]\n        })\n      })\n    }\n  }]\n})));\nconst AvatarImg = styled('img', {\n  name: 'MuiAvatar',\n  slot: 'Img',\n  overridesResolver: (props, styles) => styles.img\n})({\n  width: '100%',\n  height: '100%',\n  textAlign: 'center',\n  // Handle non-square image.\n  objectFit: 'cover',\n  // Hide alt text.\n  color: 'transparent',\n  // Hide the image broken icon, only works on Chrome.\n  textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n  name: 'MuiAvatar',\n  slot: 'Fallback',\n  overridesResolver: (props, styles) => styles.fallback\n})({\n  width: '75%',\n  height: '75%'\n});\nfunction useLoaded({\n  crossOrigin,\n  referrerPolicy,\n  src,\n  srcSet\n}) {\n  const [loaded, setLoaded] = React.useState(false);\n  React.useEffect(() => {\n    if (!src && !srcSet) {\n      return undefined;\n    }\n    setLoaded(false);\n    let active = true;\n    const image = new Image();\n    image.onload = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('loaded');\n    };\n    image.onerror = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('error');\n    };\n    image.crossOrigin = crossOrigin;\n    image.referrerPolicy = referrerPolicy;\n    image.src = src;\n    if (srcSet) {\n      image.srcset = srcSet;\n    }\n    return () => {\n      active = false;\n    };\n  }, [crossOrigin, referrerPolicy, src, srcSet]);\n  return loaded;\n}\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAvatar'\n  });\n  const {\n    alt,\n    children: childrenProp,\n    className,\n    component = 'div',\n    slots = {},\n    slotProps = {},\n    imgProps,\n    sizes,\n    src,\n    srcSet,\n    variant = 'circular',\n    ...other\n  } = props;\n  let children = null;\n\n  // Use a hook instead of onError on the img element to support server-side rendering.\n  const loaded = useLoaded({\n    ...imgProps,\n    src,\n    srcSet\n  });\n  const hasImg = src || srcSet;\n  const hasImgNotFailing = hasImg && loaded !== 'error';\n  const ownerState = {\n    ...props,\n    colorDefault: !hasImgNotFailing,\n    component,\n    variant\n  };\n  // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184\n  delete ownerState.ownerState;\n  const classes = useUtilityClasses(ownerState);\n  const [ImgSlot, imgSlotProps] = useSlot('img', {\n    className: classes.img,\n    elementType: AvatarImg,\n    externalForwardedProps: {\n      slots,\n      slotProps: {\n        img: {\n          ...imgProps,\n          ...slotProps.img\n        }\n      }\n    },\n    additionalProps: {\n      alt,\n      src,\n      srcSet,\n      sizes\n    },\n    ownerState\n  });\n  if (hasImgNotFailing) {\n    children = /*#__PURE__*/_jsx(ImgSlot, {\n      ...imgSlotProps\n    });\n    // We only render valid children, non valid children are rendered with a fallback\n    // We consider that invalid children are all falsy values, except 0, which is valid.\n  } else if (!!childrenProp || childrenProp === 0) {\n    children = childrenProp;\n  } else if (hasImg && alt) {\n    children = alt[0];\n  } else {\n    children = /*#__PURE__*/_jsx(AvatarFallback, {\n      ownerState: ownerState,\n      className: classes.fallback\n    });\n  }\n  return /*#__PURE__*/_jsx(AvatarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    ownerState: ownerState,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Used in combination with `src` or `srcSet` to\n   * provide an alt attribute for the rendered `img` element.\n   */\n  alt: PropTypes.string,\n  /**\n   * Used to render icon or text elements inside the Avatar if `src` is not set.\n   * This can be an element, or just a string.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n   * It can be used to listen for the loading error event.\n   */\n  imgProps: PropTypes.object,\n  /**\n   * The `sizes` attribute for the `img` element.\n   */\n  sizes: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    img: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    img: PropTypes.elementType\n  }),\n  /**\n   * The `src` attribute for the `img` element.\n   */\n  src: PropTypes.string,\n  /**\n   * The `srcSet` attribute for the `img` element.\n   * Use this attribute for responsive image display.\n   */\n  srcSet: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The shape of the avatar.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;"],"names":["createSvgIcon","d","AvatarRoot","styled","name","slot","overridesResolver","props","styles","ownerState","root","variant","colorDefault","memoTheme","theme","position","display","alignItems","justifyContent","flexShrink","width","height","fontFamily","typography","fontSize","pxToRem","lineHeight","borderRadius","overflow","userSelect","variants","style","vars","shape","color","palette","background","default","backgroundColor","Avatar","defaultBg","grey","applyStyles","AvatarImg","img","textAlign","objectFit","textIndent","AvatarFallback","Person","fallback","inProps","ref","alt","children","childrenProp","className","component","slots","slotProps","imgProps","sizes","src","srcSet","other","loaded","crossOrigin","referrerPolicy","setLoaded","active","image","Image","onload","onerror","srcset","useLoaded","hasImg","hasImgNotFailing","classes","composeClasses","useUtilityClasses","ImgSlot","imgSlotProps","useSlot","elementType","externalForwardedProps","additionalProps","as","clsx","getAvatarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2885.8a30e856.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2885],{92885:(e,n,t)=>{t.r(n),t.d(n,{default:()=>k,getRatingUtilityClass:()=>w,ratingClasses:()=>V});var o=t(7552),i=t(93878),l=t(93801),a=t(25649),s=t(70799),r=t(93876),c=t(91527),u=t(15622),d=t(89456),p=t(77259),v=t(51584),m=t(74893),y=t(69500);const h=(0,m.A)((0,y.jsx)("path",{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star"),g=(0,m.A)((0,y.jsx)("path",{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}),"StarBorder");var A=t(51148),b=t(60129),f=t(4785),x=t(36674),F=t(33761),S=t(85693);function w(e){return(0,S.Ay)("MuiRating",e)}const V=(0,F.A)("MuiRating",["root","sizeSmall","sizeMedium","sizeLarge","readOnly","disabled","focusVisible","visuallyHidden","pristine","label","labelEmptyValueActive","icon","iconEmpty","iconFilled","iconHover","iconFocus","iconActive","decimal"]);function C(e,n){if(null==e)return e;const t=Math.round(e/n)*n;return Number(t.toFixed(function(e){const n=e.toString().split(".")[1];return n?n.length:0}(n)))}const R=(0,A.Ay)("span",{name:"MuiRating",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[{[`& .${V.visuallyHidden}`]:n.visuallyHidden},n.root,n[`size${(0,u.A)(t.size)}`],t.readOnly&&n.readOnly]}})((0,b.A)((({theme:e})=>({display:"inline-flex",position:"relative",fontSize:e.typography.pxToRem(24),color:"#faaf00",cursor:"pointer",textAlign:"left",width:"min-content",WebkitTapHighlightColor:"transparent",[`&.${V.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${V.focusVisible} .${V.iconActive}`]:{outline:"1px solid #999"},[`& .${V.visuallyHidden}`]:a.A,variants:[{props:{size:"small"},style:{fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{fontSize:e.typography.pxToRem(30)}},{props:({ownerState:e})=>e.readOnly,style:{pointerEvents:"none"}}]})))),j=(0,A.Ay)("label",{name:"MuiRating",slot:"Label",overridesResolver:({ownerState:e},n)=>[n.label,e.emptyValueFocused&&n.labelEmptyValueActive]})({cursor:"inherit",variants:[{props:({ownerState:e})=>e.emptyValueFocused,style:{top:0,bottom:0,position:"absolute",outline:"1px solid #999",width:"100%"}}]}),M=(0,A.Ay)("span",{name:"MuiRating",slot:"Icon",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[n.icon,t.iconEmpty&&n.iconEmpty,t.iconFilled&&n.iconFilled,t.iconHover&&n.iconHover,t.iconFocus&&n.iconFocus,t.iconActive&&n.iconActive]}})((0,b.A)((({theme:e})=>({display:"flex",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest}),pointerEvents:"none",variants:[{props:({ownerState:e})=>e.iconActive,style:{transform:"scale(1.2)"}},{props:({ownerState:e})=>e.iconEmpty,style:{color:(e.vars||e).palette.action.disabled}}]})))),z=(0,A.Ay)("span",{name:"MuiRating",slot:"Decimal",shouldForwardProp:e=>(0,x.A)(e)&&"iconActive"!==e,overridesResolver:(e,n)=>{const{iconActive:t}=e;return[n.decimal,t&&n.iconActive]}})({position:"relative",variants:[{props:({iconActive:e})=>e,style:{transform:"scale(1.2)"}}]});function L(e){const{value:n,...t}=e;return(0,y.jsx)("span",{...t})}function H(e){const{classes:n,disabled:t,emptyIcon:l,focus:a,getLabelText:s,highlightSelectedOnly:r,hover:c,icon:u,IconContainerComponent:p,isActive:v,itemValue:m,labelProps:h,name:g,onBlur:A,onChange:b,onClick:f,onFocus:x,readOnly:F,ownerState:S,ratingValue:w,ratingValueRounded:V}=e,C=r?m===w:m<=w,R=m<=c,z=m<=a,L=m===V,H=(0,d.A)(),E=(0,y.jsx)(M,{as:p,value:m,className:(0,i.A)(n.icon,C?n.iconFilled:n.iconEmpty,R&&n.iconHover,z&&n.iconFocus,v&&n.iconActive),ownerState:{...S,iconEmpty:!C,iconFilled:C,iconHover:R,iconFocus:z,iconActive:v},children:l&&!C?l:u});return F?(0,y.jsx)("span",{...h,children:E}):(0,y.jsxs)(o.Fragment,{children:[(0,y.jsxs)(j,{ownerState:{...S,emptyValueFocused:void 0},htmlFor:H,...h,children:[E,(0,y.jsx)("span",{className:n.visuallyHidden,children:s(m)})]}),(0,y.jsx)("input",{className:n.visuallyHidden,onFocus:x,onBlur:A,onChange:b,onClick:f,disabled:t,value:m,id:H,type:"radio",name:g,checked:L})]})}const E=(0,y.jsx)(h,{fontSize:"inherit"}),O=(0,y.jsx)(g,{fontSize:"inherit"});function T(e){return`${e||"0"} Star${1!==e?"s":""}`}const k=o.forwardRef((function(e,n){const t=(0,f.b)({name:"MuiRating",props:e}),{className:a,defaultValue:m=null,disabled:h=!1,emptyIcon:g=O,emptyLabelText:A="Empty",getLabelText:b=T,highlightSelectedOnly:x=!1,icon:F=E,IconContainerComponent:S=L,max:V=5,name:M,onChange:k,onChangeActive:I,onMouseLeave:N,onMouseMove:$,precision:B=1,readOnly:_=!1,size:P="medium",value:X,...D}=t,U=(0,d.A)(M),[W,Y]=(0,p.A)({controlled:X,default:m,name:"Rating"}),q=C(W,B),G=(0,r.I)(),[{hover:J,focus:K},Q]=o.useState({hover:-1,focus:-1});let Z=q;-1!==J&&(Z=J),-1!==K&&(Z=K);const[ee,ne]=o.useState(!1),te=o.useRef(),oe=(0,v.A)(te,n),ie=e=>{let n=""===e.target.value?null:parseFloat(e.target.value);-1!==J&&(n=J),Y(n),k&&k(e,n)},le=e=>{0===e.clientX&&0===e.clientY||(Q({hover:-1,focus:-1}),Y(null),k&&parseFloat(e.target.value)===q&&k(e,null))},ae=e=>{(0,c.A)(e.target)&&ne(!0);const n=parseFloat(e.target.value);Q((e=>({hover:e.hover,focus:n})))},se=e=>{-1===J&&((0,c.A)(e.target)||ne(!1),Q((e=>({hover:e.hover,focus:-1}))))},[re,ce]=o.useState(!1),ue={...t,defaultValue:m,disabled:h,emptyIcon:g,emptyLabelText:A,emptyValueFocused:re,focusVisible:ee,getLabelText:b,icon:F,IconContainerComponent:S,max:V,precision:B,readOnly:_,size:P},de=(e=>{const{classes:n,size:t,readOnly:o,disabled:i,emptyValueFocused:l,focusVisible:a}=e,r={root:["root",`size${(0,u.A)(t)}`,i&&"disabled",a&&"focusVisible",o&&"readOnly"],label:["label","pristine"],labelEmptyValue:[l&&"labelEmptyValueActive"],icon:["icon"],iconEmpty:["iconEmpty"],iconFilled:["iconFilled"],iconHover:["iconHover"],iconFocus:["iconFocus"],iconActive:["iconActive"],decimal:["decimal"],visuallyHidden:["visuallyHidden"]};return(0,s.A)(r,w,n)})(ue);return(0,y.jsxs)(R,{ref:oe,onMouseMove:e=>{$&&$(e);const n=te.current,{right:t,left:o,width:i}=n.getBoundingClientRect();let a;a=G?(t-e.clientX)/i:(e.clientX-o)/i;let s=C(V*a+B/2,B);s=(0,l.A)(s,B,V),Q((e=>e.hover===s&&e.focus===s?e:{hover:s,focus:s})),ne(!1),I&&J!==s&&I(e,s)},onMouseLeave:e=>{N&&N(e),Q({hover:-1,focus:-1}),I&&-1!==J&&I(e,-1)},className:(0,i.A)(de.root,a,_&&"MuiRating-readOnly"),ownerState:ue,role:_?"img":null,"aria-label":_?b(Z):null,...D,children:[Array.from(new Array(V)).map(((e,n)=>{const t=n+1,o={classes:de,disabled:h,emptyIcon:g,focus:K,getLabelText:b,highlightSelectedOnly:x,hover:J,icon:F,IconContainerComponent:S,name:U,onBlur:se,onChange:ie,onClick:le,onFocus:ae,ratingValue:Z,ratingValueRounded:q,readOnly:_,ownerState:ue},l=t===Math.ceil(Z)&&(-1!==J||-1!==K);if(B<1){const e=Array.from(new Array(1/B));return(0,y.jsx)(z,{className:(0,i.A)(de.decimal,l&&de.iconActive),ownerState:ue,iconActive:l,children:e.map(((n,i)=>{const l=C(t-1+(i+1)*B,B);return(0,y.jsx)(H,{...o,isActive:!1,itemValue:l,labelProps:{style:e.length-1===i?{}:{width:l===Z?(i+1)*B*100+"%":"0%",overflow:"hidden",position:"absolute"}}},l)}))},t)}return(0,y.jsx)(H,{...o,isActive:l,itemValue:t},t)})),!_&&!h&&(0,y.jsxs)(j,{className:(0,i.A)(de.label,de.labelEmptyValue),ownerState:ue,children:[(0,y.jsx)("input",{className:de.visuallyHidden,value:"",id:`${U}-empty`,type:"radio",name:U,checked:null==q,onFocus:()=>ce(!0),onBlur:()=>ce(!1),onChange:ie}),(0,y.jsx)("span",{className:de.visuallyHidden,children:A})]})]})}))}}]);
+//# sourceMappingURL=2885.8a30e856.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2885.8a30e856.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2885.8a30e856.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/svg-icons/Star.js","../../../node_modules/@mui/material/internal/svg-icons/StarBorder.js","../../../node_modules/@mui/material/Rating/ratingClasses.js","../../../node_modules/@mui/material/Rating/Rating.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n}), 'Star');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"\n}), 'StarBorder');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRatingUtilityClass(slot) {\n  return generateUtilityClass('MuiRating', slot);\n}\nconst ratingClasses = generateUtilityClasses('MuiRating', ['root', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'readOnly', 'disabled', 'focusVisible', 'visuallyHidden', 'pristine', 'label', 'labelEmptyValueActive', 'icon', 'iconEmpty', 'iconFilled', 'iconHover', 'iconFocus', 'iconActive', 'decimal']);\nexport default ratingClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport clamp from '@mui/utils/clamp';\nimport visuallyHidden from '@mui/utils/visuallyHidden';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport { capitalize, useForkRef, useControlled, unstable_useId as useId } from \"../utils/index.js\";\nimport Star from \"../internal/svg-icons/Star.js\";\nimport StarBorder from \"../internal/svg-icons/StarBorder.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport slotShouldForwardProp from \"../styles/slotShouldForwardProp.js\";\nimport ratingClasses, { getRatingUtilityClass } from \"./ratingClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getDecimalPrecision(num) {\n  const decimalPart = num.toString().split('.')[1];\n  return decimalPart ? decimalPart.length : 0;\n}\nfunction roundValueToPrecision(value, precision) {\n  if (value == null) {\n    return value;\n  }\n  const nearest = Math.round(value / precision) * precision;\n  return Number(nearest.toFixed(getDecimalPrecision(precision)));\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    size,\n    readOnly,\n    disabled,\n    emptyValueFocused,\n    focusVisible\n  } = ownerState;\n  const slots = {\n    root: ['root', `size${capitalize(size)}`, disabled && 'disabled', focusVisible && 'focusVisible', readOnly && 'readOnly'],\n    label: ['label', 'pristine'],\n    labelEmptyValue: [emptyValueFocused && 'labelEmptyValueActive'],\n    icon: ['icon'],\n    iconEmpty: ['iconEmpty'],\n    iconFilled: ['iconFilled'],\n    iconHover: ['iconHover'],\n    iconFocus: ['iconFocus'],\n    iconActive: ['iconActive'],\n    decimal: ['decimal'],\n    visuallyHidden: ['visuallyHidden']\n  };\n  return composeClasses(slots, getRatingUtilityClass, classes);\n};\nconst RatingRoot = styled('span', {\n  name: 'MuiRating',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${ratingClasses.visuallyHidden}`]: styles.visuallyHidden\n    }, styles.root, styles[`size${capitalize(ownerState.size)}`], ownerState.readOnly && styles.readOnly];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-flex',\n  // Required to position the pristine input absolutely\n  position: 'relative',\n  fontSize: theme.typography.pxToRem(24),\n  color: '#faaf00',\n  cursor: 'pointer',\n  textAlign: 'left',\n  width: 'min-content',\n  WebkitTapHighlightColor: 'transparent',\n  [`&.${ratingClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity,\n    pointerEvents: 'none'\n  },\n  [`&.${ratingClasses.focusVisible} .${ratingClasses.iconActive}`]: {\n    outline: '1px solid #999'\n  },\n  [`& .${ratingClasses.visuallyHidden}`]: visuallyHidden,\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(18)\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(30)\n    }\n  }, {\n    // TODO v6: use the .Mui-readOnly global state class\n    props: ({\n      ownerState\n    }) => ownerState.readOnly,\n    style: {\n      pointerEvents: 'none'\n    }\n  }]\n})));\nconst RatingLabel = styled('label', {\n  name: 'MuiRating',\n  slot: 'Label',\n  overridesResolver: ({\n    ownerState\n  }, styles) => [styles.label, ownerState.emptyValueFocused && styles.labelEmptyValueActive]\n})({\n  cursor: 'inherit',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.emptyValueFocused,\n    style: {\n      top: 0,\n      bottom: 0,\n      position: 'absolute',\n      outline: '1px solid #999',\n      width: '100%'\n    }\n  }]\n});\nconst RatingIcon = styled('span', {\n  name: 'MuiRating',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.iconEmpty && styles.iconEmpty, ownerState.iconFilled && styles.iconFilled, ownerState.iconHover && styles.iconHover, ownerState.iconFocus && styles.iconFocus, ownerState.iconActive && styles.iconActive];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  // Fit wrapper to actual icon size.\n  display: 'flex',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  // Fix mouseLeave issue.\n  // https://github.com/facebook/react/issues/4492\n  pointerEvents: 'none',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.iconActive,\n    style: {\n      transform: 'scale(1.2)'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.iconEmpty,\n    style: {\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  }]\n})));\nconst RatingDecimal = styled('span', {\n  name: 'MuiRating',\n  slot: 'Decimal',\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'iconActive',\n  overridesResolver: (props, styles) => {\n    const {\n      iconActive\n    } = props;\n    return [styles.decimal, iconActive && styles.iconActive];\n  }\n})({\n  position: 'relative',\n  variants: [{\n    props: ({\n      iconActive\n    }) => iconActive,\n    style: {\n      transform: 'scale(1.2)'\n    }\n  }]\n});\nfunction IconContainer(props) {\n  const {\n    value,\n    ...other\n  } = props;\n  return /*#__PURE__*/_jsx(\"span\", {\n    ...other\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? IconContainer.propTypes = {\n  value: PropTypes.number.isRequired\n} : void 0;\nfunction RatingItem(props) {\n  const {\n    classes,\n    disabled,\n    emptyIcon,\n    focus,\n    getLabelText,\n    highlightSelectedOnly,\n    hover,\n    icon,\n    IconContainerComponent,\n    isActive,\n    itemValue,\n    labelProps,\n    name,\n    onBlur,\n    onChange,\n    onClick,\n    onFocus,\n    readOnly,\n    ownerState,\n    ratingValue,\n    ratingValueRounded\n  } = props;\n  const isFilled = highlightSelectedOnly ? itemValue === ratingValue : itemValue <= ratingValue;\n  const isHovered = itemValue <= hover;\n  const isFocused = itemValue <= focus;\n  const isChecked = itemValue === ratingValueRounded;\n  const id = useId();\n  const container = /*#__PURE__*/_jsx(RatingIcon, {\n    as: IconContainerComponent,\n    value: itemValue,\n    className: clsx(classes.icon, isFilled ? classes.iconFilled : classes.iconEmpty, isHovered && classes.iconHover, isFocused && classes.iconFocus, isActive && classes.iconActive),\n    ownerState: {\n      ...ownerState,\n      iconEmpty: !isFilled,\n      iconFilled: isFilled,\n      iconHover: isHovered,\n      iconFocus: isFocused,\n      iconActive: isActive\n    },\n    children: emptyIcon && !isFilled ? emptyIcon : icon\n  });\n  if (readOnly) {\n    return /*#__PURE__*/_jsx(\"span\", {\n      ...labelProps,\n      children: container\n    });\n  }\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsxs(RatingLabel, {\n      ownerState: {\n        ...ownerState,\n        emptyValueFocused: undefined\n      },\n      htmlFor: id,\n      ...labelProps,\n      children: [container, /*#__PURE__*/_jsx(\"span\", {\n        className: classes.visuallyHidden,\n        children: getLabelText(itemValue)\n      })]\n    }), /*#__PURE__*/_jsx(\"input\", {\n      className: classes.visuallyHidden,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      onChange: onChange,\n      onClick: onClick,\n      disabled: disabled,\n      value: itemValue,\n      id: id,\n      type: \"radio\",\n      name: name,\n      checked: isChecked\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RatingItem.propTypes = {\n  classes: PropTypes.object.isRequired,\n  disabled: PropTypes.bool.isRequired,\n  emptyIcon: PropTypes.node,\n  focus: PropTypes.number.isRequired,\n  getLabelText: PropTypes.func.isRequired,\n  highlightSelectedOnly: PropTypes.bool.isRequired,\n  hover: PropTypes.number.isRequired,\n  icon: PropTypes.node,\n  IconContainerComponent: PropTypes.elementType.isRequired,\n  isActive: PropTypes.bool.isRequired,\n  itemValue: PropTypes.number.isRequired,\n  labelProps: PropTypes.object,\n  name: PropTypes.string,\n  onBlur: PropTypes.func.isRequired,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onFocus: PropTypes.func.isRequired,\n  ownerState: PropTypes.object.isRequired,\n  ratingValue: PropTypes.number,\n  ratingValueRounded: PropTypes.number,\n  readOnly: PropTypes.bool.isRequired\n} : void 0;\nconst defaultIcon = /*#__PURE__*/_jsx(Star, {\n  fontSize: \"inherit\"\n});\nconst defaultEmptyIcon = /*#__PURE__*/_jsx(StarBorder, {\n  fontSize: \"inherit\"\n});\nfunction defaultLabelText(value) {\n  return `${value || '0'} Star${value !== 1 ? 's' : ''}`;\n}\nconst Rating = /*#__PURE__*/React.forwardRef(function Rating(inProps, ref) {\n  const props = useDefaultProps({\n    name: 'MuiRating',\n    props: inProps\n  });\n  const {\n    className,\n    defaultValue = null,\n    disabled = false,\n    emptyIcon = defaultEmptyIcon,\n    emptyLabelText = 'Empty',\n    getLabelText = defaultLabelText,\n    highlightSelectedOnly = false,\n    icon = defaultIcon,\n    IconContainerComponent = IconContainer,\n    max = 5,\n    name: nameProp,\n    onChange,\n    onChangeActive,\n    onMouseLeave,\n    onMouseMove,\n    precision = 1,\n    readOnly = false,\n    size = 'medium',\n    value: valueProp,\n    ...other\n  } = props;\n  const name = useId(nameProp);\n  const [valueDerived, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Rating'\n  });\n  const valueRounded = roundValueToPrecision(valueDerived, precision);\n  const isRtl = useRtl();\n  const [{\n    hover,\n    focus\n  }, setState] = React.useState({\n    hover: -1,\n    focus: -1\n  });\n  let value = valueRounded;\n  if (hover !== -1) {\n    value = hover;\n  }\n  if (focus !== -1) {\n    value = focus;\n  }\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const rootRef = React.useRef();\n  const handleRef = useForkRef(rootRef, ref);\n  const handleMouseMove = event => {\n    if (onMouseMove) {\n      onMouseMove(event);\n    }\n    const rootNode = rootRef.current;\n    const {\n      right,\n      left,\n      width: containerWidth\n    } = rootNode.getBoundingClientRect();\n    let percent;\n    if (isRtl) {\n      percent = (right - event.clientX) / containerWidth;\n    } else {\n      percent = (event.clientX - left) / containerWidth;\n    }\n    let newHover = roundValueToPrecision(max * percent + precision / 2, precision);\n    newHover = clamp(newHover, precision, max);\n    setState(prev => prev.hover === newHover && prev.focus === newHover ? prev : {\n      hover: newHover,\n      focus: newHover\n    });\n    setFocusVisible(false);\n    if (onChangeActive && hover !== newHover) {\n      onChangeActive(event, newHover);\n    }\n  };\n  const handleMouseLeave = event => {\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n    const newHover = -1;\n    setState({\n      hover: newHover,\n      focus: newHover\n    });\n    if (onChangeActive && hover !== newHover) {\n      onChangeActive(event, newHover);\n    }\n  };\n  const handleChange = event => {\n    let newValue = event.target.value === '' ? null : parseFloat(event.target.value);\n\n    // Give mouse priority over keyboard\n    // Fix https://github.com/mui/material-ui/issues/22827\n    if (hover !== -1) {\n      newValue = hover;\n    }\n    setValueState(newValue);\n    if (onChange) {\n      onChange(event, newValue);\n    }\n  };\n  const handleClear = event => {\n    // Ignore keyboard events\n    // https://github.com/facebook/react/issues/7407\n    if (event.clientX === 0 && event.clientY === 0) {\n      return;\n    }\n    setState({\n      hover: -1,\n      focus: -1\n    });\n    setValueState(null);\n    if (onChange && parseFloat(event.target.value) === valueRounded) {\n      onChange(event, null);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    const newFocus = parseFloat(event.target.value);\n    setState(prev => ({\n      hover: prev.hover,\n      focus: newFocus\n    }));\n  };\n  const handleBlur = event => {\n    if (hover !== -1) {\n      return;\n    }\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    const newFocus = -1;\n    setState(prev => ({\n      hover: prev.hover,\n      focus: newFocus\n    }));\n  };\n  const [emptyValueFocused, setEmptyValueFocused] = React.useState(false);\n  const ownerState = {\n    ...props,\n    defaultValue,\n    disabled,\n    emptyIcon,\n    emptyLabelText,\n    emptyValueFocused,\n    focusVisible,\n    getLabelText,\n    icon,\n    IconContainerComponent,\n    max,\n    precision,\n    readOnly,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(RatingRoot, {\n    ref: handleRef,\n    onMouseMove: handleMouseMove,\n    onMouseLeave: handleMouseLeave,\n    className: clsx(classes.root, className, readOnly && 'MuiRating-readOnly'),\n    ownerState: ownerState,\n    role: readOnly ? 'img' : null,\n    \"aria-label\": readOnly ? getLabelText(value) : null,\n    ...other,\n    children: [Array.from(new Array(max)).map((_, index) => {\n      const itemValue = index + 1;\n      const ratingItemProps = {\n        classes,\n        disabled,\n        emptyIcon,\n        focus,\n        getLabelText,\n        highlightSelectedOnly,\n        hover,\n        icon,\n        IconContainerComponent,\n        name,\n        onBlur: handleBlur,\n        onChange: handleChange,\n        onClick: handleClear,\n        onFocus: handleFocus,\n        ratingValue: value,\n        ratingValueRounded: valueRounded,\n        readOnly,\n        ownerState\n      };\n      const isActive = itemValue === Math.ceil(value) && (hover !== -1 || focus !== -1);\n      if (precision < 1) {\n        const items = Array.from(new Array(1 / precision));\n        return /*#__PURE__*/_jsx(RatingDecimal, {\n          className: clsx(classes.decimal, isActive && classes.iconActive),\n          ownerState: ownerState,\n          iconActive: isActive,\n          children: items.map(($, indexDecimal) => {\n            const itemDecimalValue = roundValueToPrecision(itemValue - 1 + (indexDecimal + 1) * precision, precision);\n            return /*#__PURE__*/_jsx(RatingItem, {\n              ...ratingItemProps,\n              // The icon is already displayed as active\n              isActive: false,\n              itemValue: itemDecimalValue,\n              labelProps: {\n                style: items.length - 1 === indexDecimal ? {} : {\n                  width: itemDecimalValue === value ? `${(indexDecimal + 1) * precision * 100}%` : '0%',\n                  overflow: 'hidden',\n                  position: 'absolute'\n                }\n              }\n            }, itemDecimalValue);\n          })\n        }, itemValue);\n      }\n      return /*#__PURE__*/_jsx(RatingItem, {\n        ...ratingItemProps,\n        isActive: isActive,\n        itemValue: itemValue\n      }, itemValue);\n    }), !readOnly && !disabled && /*#__PURE__*/_jsxs(RatingLabel, {\n      className: clsx(classes.label, classes.labelEmptyValue),\n      ownerState: ownerState,\n      children: [/*#__PURE__*/_jsx(\"input\", {\n        className: classes.visuallyHidden,\n        value: \"\",\n        id: `${name}-empty`,\n        type: \"radio\",\n        name: name,\n        checked: valueRounded == null,\n        onFocus: () => setEmptyValueFocused(true),\n        onBlur: () => setEmptyValueFocused(false),\n        onChange: handleChange\n      }), /*#__PURE__*/_jsx(\"span\", {\n        className: classes.visuallyHidden,\n        children: emptyLabelText\n      })]\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Rating.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default null\n   */\n  defaultValue: PropTypes.number,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The icon to display when empty.\n   * @default <StarBorder fontSize=\"inherit\" />\n   */\n  emptyIcon: PropTypes.node,\n  /**\n   * The label read when the rating input is empty.\n   * @default 'Empty'\n   */\n  emptyLabelText: PropTypes.node,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current value of the rating.\n   * This is important for screen reader users.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @param {number} value The rating label's value to format.\n   * @returns {string}\n   * @default function defaultLabelText(value) {\n   *   return `${value || '0'} Star${value !== 1 ? 's' : ''}`;\n   * }\n   */\n  getLabelText: PropTypes.func,\n  /**\n   * If `true`, only the selected icon will be highlighted.\n   * @default false\n   */\n  highlightSelectedOnly: PropTypes.bool,\n  /**\n   * The icon to display.\n   * @default <Star fontSize=\"inherit\" />\n   */\n  icon: PropTypes.node,\n  /**\n   * The component containing the icon.\n   * @default function IconContainer(props) {\n   *   const { value, ...other } = props;\n   *   return <span {...other} />;\n   * }\n   */\n  IconContainerComponent: PropTypes.elementType,\n  /**\n   * Maximum rating.\n   * @default 5\n   */\n  max: PropTypes.number,\n  /**\n   * The name attribute of the radio `input` elements.\n   * This input `name` should be unique within the page.\n   * Being unique within a form is insufficient since the `name` is used to generated IDs.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value changes.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {number|null} value The new value.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback function that is fired when the hover state changes.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {number} value The new value.\n   */\n  onChangeActive: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseMove: PropTypes.func,\n  /**\n   * The minimum increment value change allowed.\n   * @default 1\n   */\n  precision: chainPropTypes(PropTypes.number, props => {\n    if (props.precision < 0.1) {\n      return new Error(['MUI: The prop `precision` should be above 0.1.', 'A value below this limit has an imperceptible impact.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Removes all hover effects and pointer events.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The rating value.\n   */\n  value: PropTypes.number\n} : void 0;\nexport default Rating;"],"names":["createSvgIcon","d","getRatingUtilityClass","slot","generateUtilityClass","generateUtilityClasses","roundValueToPrecision","value","precision","nearest","Math","round","Number","toFixed","num","decimalPart","toString","split","length","getDecimalPrecision","RatingRoot","styled","name","overridesResolver","props","styles","ownerState","visuallyHidden","root","capitalize","size","readOnly","memoTheme","theme","display","position","fontSize","typography","pxToRem","color","cursor","textAlign","width","WebkitTapHighlightColor","disabled","opacity","vars","palette","action","disabledOpacity","pointerEvents","focusVisible","iconActive","outline","variants","style","RatingLabel","label","emptyValueFocused","labelEmptyValueActive","top","bottom","RatingIcon","icon","iconEmpty","iconFilled","iconHover","iconFocus","transition","transitions","create","duration","shortest","transform","RatingDecimal","shouldForwardProp","prop","slotShouldForwardProp","decimal","IconContainer","other","RatingItem","classes","emptyIcon","focus","getLabelText","highlightSelectedOnly","hover","IconContainerComponent","isActive","itemValue","labelProps","onBlur","onChange","onClick","onFocus","ratingValue","ratingValueRounded","isFilled","isHovered","isFocused","isChecked","id","useId","container","as","className","clsx","children","undefined","htmlFor","type","checked","defaultIcon","Star","defaultEmptyIcon","StarBorder","defaultLabelText","inProps","ref","defaultValue","emptyLabelText","max","nameProp","onChangeActive","onMouseLeave","onMouseMove","valueProp","valueDerived","setValueState","useControlled","controlled","default","valueRounded","isRtl","setState","setFocusVisible","rootRef","handleRef","useForkRef","handleChange","event","newValue","target","parseFloat","handleClear","clientX","clientY","handleFocus","isFocusVisible","newFocus","prev","handleBlur","setEmptyValueFocused","slots","labelEmptyValue","composeClasses","useUtilityClasses","rootNode","current","right","left","containerWidth","getBoundingClientRect","percent","newHover","clamp","role","Array","from","map","_","index","ratingItemProps","ceil","items","$","indexDecimal","itemDecimalValue","overflow"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2928.4ac8c386.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2928],{62928:(e,n,a)=>{a.r(n),a.d(n,{default:()=>u});var t=a(7552),l=a(29499),s=a(1343),c=a(29629),o=a(58507),r=a(5401),m=a(75785),h=a(49823);const i=(0,m.n9)()((()=>({container:{width:800}})));function u({handleClose:e,session:n}){const{classes:a}=i();return t.createElement(h.Dialog,{title:"Preferences",open:!0,onClose:e,maxWidth:"xl"},t.createElement(l.A,{className:a.container},t.createElement(s.A,{select:!0,label:"Theme",value:n.themeName,onChange:e=>{n.setThemeName(e.target.value)}},Object.entries(n.allThemes()).map((([e,n])=>t.createElement(c.A,{key:e,value:e},n.name||"(Unknown name)"))))),t.createElement(o.A,null,t.createElement(r.A,{onClick:e},"Close")))}}}]);
+//# sourceMappingURL=2928.4ac8c386.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2928.4ac8c386.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2928.4ac8c386.chunk.js","mappings":"gPAYA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAa,KAAM,CACnCC,UAAW,CACTC,MAAO,SAII,SAASC,GAAkB,YACxCC,EAAW,QACXC,IASA,MAAM,QAAEC,GAAYP,IACpB,OACEQ,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAM,cAAcC,MAAI,EAACC,QAASP,EAAaQ,SAAS,MAC9DL,EAAAA,cAACM,EAAAA,EAAa,CAACC,UAAWR,EAAQL,WAChCM,EAAAA,cAACQ,EAAAA,EAAS,CACRC,QAAM,EACNC,MAAM,QACNC,MAAOb,EAAQc,UACfC,SAAUC,IACRhB,EAAQiB,aAAaD,EAAME,OAAOL,MAAM,GAGzCM,OAAOC,QAAQpB,EAAQqB,aAAaC,KAAI,EAAEC,EAAKC,KAC9CtB,EAAAA,cAACuB,EAAAA,EAAQ,CAACF,IAAKA,EAAKV,MAAOU,GACxBC,EAAIE,MAAQ,sBAKrBxB,EAAAA,cAACyB,EAAAA,EAAa,KACZzB,EAAAA,cAAC0B,EAAAA,EAAM,CAACC,QAAS9B,GAAa,UAItC,C","sources":["components/PreferencesDialog.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  MenuItem,\n  TextField,\n  ThemeOptions,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { Dialog } from '@jbrowse/core/ui'\n\nconst useStyles = makeStyles()(() => ({\n  container: {\n    width: 800,\n  },\n}))\n\nexport default function PreferencesDialog({\n  handleClose,\n  session,\n}: {\n  handleClose: () => void\n  session: {\n    allThemes: () => Record<string, ThemeOptions & { name?: string }>\n    themeName?: string\n    setThemeName: (arg: string) => void\n  }\n}) {\n  const { classes } = useStyles()\n  return (\n    <Dialog title=\"Preferences\" open onClose={handleClose} maxWidth=\"xl\">\n      <DialogContent className={classes.container}>\n        <TextField\n          select\n          label=\"Theme\"\n          value={session.themeName}\n          onChange={event => {\n            session.setThemeName(event.target.value)\n          }}\n        >\n          {Object.entries(session.allThemes()).map(([key, val]) => (\n            <MenuItem key={key} value={key}>\n              {val.name || '(Unknown name)'}\n            </MenuItem>\n          ))}\n        </TextField>\n      </DialogContent>\n      <DialogActions>\n        <Button onClick={handleClose}>Close</Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["useStyles","makeStyles","container","width","PreferencesDialog","handleClose","session","classes","React","Dialog","title","open","onClose","maxWidth","DialogContent","className","TextField","select","label","value","themeName","onChange","event","setThemeName","target","Object","entries","allThemes","map","key","val","MenuItem","name","DialogActions","Button","onClick"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2968.4d90773a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2968],{12968:(e,n,t)=>{t.r(n),t.d(n,{default:()=>E});var o=t(7552),l=t(27281),s=t(17515),a=t(36715),i=t(61723),r=t(943),c=t(49823),g=t(75785),u=t(68446),p=t(36422),m=t(30157);const d=(0,g.n9)()((e=>({paper:{overflow:"auto",minWidth:800},closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}}))),h=(0,u.observer)((function({session:e,onClose:n}){const{classes:t}=d(),{visibleWidget:r}=e,{pluginManager:c}=(0,p.getEnv)(e);if(!r)return null;const{HeadingComponent:g,heading:u}=c.getWidgetType(r.type);return o.createElement(l.A,{position:"static"},o.createElement(s.A,null,g?o.createElement(g,{model:r}):o.createElement(a.A,{variant:"h6"},u)),o.createElement(i.A,{className:t.closeButton,onClick:n},o.createElement(m.A,null)))})),E=(0,u.observer)((function({session:e,onClose:n}){const{classes:t}=d(),{visibleWidget:l}=e,{pluginManager:s}=(0,p.getEnv)(e);if(!l)return null;const{ReactComponent:a}=s.getWidgetType(l.type),i=s.evaluateExtensionPoint("Core-replaceWidget",a,{session:e,model:l});return o.createElement(c.Dialog,{open:!0,onClose:n,maxWidth:"xl",header:o.createElement(h,{onClose:n,session:e})},i?o.createElement(o.Suspense,{fallback:o.createElement("div",null,"Loading...")},o.createElement(r.A,{className:t.paper},o.createElement(i,{model:l,session:e,modal:!0,overrideDimensions:{height:5*window.innerHeight/8,width:800}}))):null)}))}}]);
+//# sourceMappingURL=2968.4d90773a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2968.4d90773a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2968.4d90773a.chunk.js","mappings":"iRAWA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,MAAO,CACLC,SAAU,OACVC,SAAU,KAEZC,YAAa,CACXC,SAAU,WACVC,MAAON,EAAMO,QAAQ,GACrBC,IAAKR,EAAMO,QAAQ,GACnBE,MAAOT,EAAMU,QAAQC,KAAK,UAIxBC,GAAeC,EAAAA,EAAAA,WAAS,UAAsB,QAClDC,EAAO,QACPC,IAKA,MAAM,QAAEC,GAAYlB,KACd,cAAEmB,GAAkBH,GACpB,cAAEI,IAAkBC,EAAAA,EAAAA,QAAOL,GAEjC,IAAKG,EACH,OAAO,KAET,MAAM,iBAAEG,EAAgB,QAAEC,GAAYH,EAAcI,cAClDL,EAAcM,MAGhB,OACEC,EAAAA,cAACC,EAAAA,EAAM,CAACpB,SAAS,UACfmB,EAAAA,cAACE,EAAAA,EAAO,KACLN,EACCI,EAAAA,cAACJ,EAAgB,CAACO,MAAOV,IAEzBO,EAAAA,cAACI,EAAAA,EAAU,CAACC,QAAQ,MAAMR,IAG9BG,EAAAA,cAACM,EAAAA,EAAU,CAACC,UAAWf,EAAQZ,YAAa4B,QAASjB,GACnDS,EAAAA,cAACS,EAAAA,EAAS,OAIlB,IAmDA,GAjDoBpB,EAAAA,EAAAA,WAAS,UAAU,QACrCC,EAAO,QACPC,IAKA,MAAM,QAAEC,GAAYlB,KACd,cAAEmB,GAAkBH,GACpB,cAAEI,IAAkBC,EAAAA,EAAAA,QAAOL,GAEjC,IAAKG,EACH,OAAO,KAET,MAAM,eAAEiB,GAAmBhB,EAAcI,cAAcL,EAAcM,MAC/DY,EAAYjB,EAAckB,uBAC9B,qBACAF,EACA,CACEpB,UACAa,MAAOV,IAGX,OACEO,EAAAA,cAACa,EAAAA,OAAM,CACLC,MAAI,EACJvB,QAASA,EACTwB,SAAS,KACTC,OAAQhB,EAAAA,cAACZ,EAAY,CAACG,QAASA,EAASD,QAASA,KAEhDqB,EACCX,EAAAA,cAACiB,EAAAA,SAAQ,CAACC,SAAUlB,EAAAA,cAAA,WAAK,eACvBA,EAAAA,cAACmB,EAAAA,EAAK,CAACZ,UAAWf,EAAQf,OACxBuB,EAAAA,cAACW,EAAS,CACRR,MAAOV,EACPH,QAASA,EACT8B,OAAO,EACPC,mBAAoB,CAClBC,OAA8B,EAArBC,OAAOC,YAAmB,EACnCC,MAAO,SAKb,KAGV,G","sources":["../../../packages/app-core/src/ui/App/ModalWidget.tsx"],"sourcesContent":["import React, { Suspense } from 'react'\nimport { AppBar, IconButton, Paper, Toolbar, Typography } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getEnv } from 'mobx-state-tree'\nimport { SessionWithWidgets } from '@jbrowse/core/util'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n\nconst useStyles = makeStyles()(theme => ({\n  paper: {\n    overflow: 'auto',\n    minWidth: 800,\n  },\n  closeButton: {\n    position: 'absolute',\n    right: theme.spacing(1),\n    top: theme.spacing(1),\n    color: theme.palette.grey[500],\n  },\n}))\n\nconst DrawerAppBar = observer(function DrawerAppBar({\n  session,\n  onClose,\n}: {\n  session: SessionWithWidgets\n  onClose: () => void\n}) {\n  const { classes } = useStyles()\n  const { visibleWidget } = session\n  const { pluginManager } = getEnv(session)\n\n  if (!visibleWidget) {\n    return null\n  }\n  const { HeadingComponent, heading } = pluginManager.getWidgetType(\n    visibleWidget.type,\n  )\n\n  return (\n    <AppBar position=\"static\">\n      <Toolbar>\n        {HeadingComponent ? (\n          <HeadingComponent model={visibleWidget} />\n        ) : (\n          <Typography variant=\"h6\">{heading}</Typography>\n        )}\n      </Toolbar>\n      <IconButton className={classes.closeButton} onClick={onClose}>\n        <CloseIcon />\n      </IconButton>\n    </AppBar>\n  )\n})\n\nconst ModalWidget = observer(function ({\n  session,\n  onClose,\n}: {\n  session: SessionWithWidgets\n  onClose: () => void\n}) {\n  const { classes } = useStyles()\n  const { visibleWidget } = session\n  const { pluginManager } = getEnv(session)\n\n  if (!visibleWidget) {\n    return null\n  }\n  const { ReactComponent } = pluginManager.getWidgetType(visibleWidget.type)\n  const Component = pluginManager.evaluateExtensionPoint(\n    'Core-replaceWidget',\n    ReactComponent,\n    {\n      session,\n      model: visibleWidget,\n    },\n  ) as React.FC<any> | undefined\n  return (\n    <Dialog\n      open\n      onClose={onClose}\n      maxWidth=\"xl\"\n      header={<DrawerAppBar onClose={onClose} session={session} />}\n    >\n      {Component ? (\n        <Suspense fallback={<div>Loading...</div>}>\n          <Paper className={classes.paper}>\n            <Component\n              model={visibleWidget}\n              session={session}\n              modal={true}\n              overrideDimensions={{\n                height: (window.innerHeight * 5) / 8,\n                width: 800,\n              }}\n            />\n          </Paper>\n        </Suspense>\n      ) : null}\n    </Dialog>\n  )\n})\n\nexport default ModalWidget\n"],"names":["useStyles","makeStyles","theme","paper","overflow","minWidth","closeButton","position","right","spacing","top","color","palette","grey","DrawerAppBar","observer","session","onClose","classes","visibleWidget","pluginManager","getEnv","HeadingComponent","heading","getWidgetType","type","React","AppBar","Toolbar","model","Typography","variant","IconButton","className","onClick","CloseIcon","ReactComponent","Component","evaluateExtensionPoint","Dialog","open","maxWidth","header","Suspense","fallback","Paper","modal","overrideDimensions","height","window","innerHeight","width"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2977.aa562b03.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2977,7706],{47046:(e,t,a)=>{a.d(t,{A:()=>i});class r{}class n{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new r){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(e),e.aborted?this.handleAborted(e):"function"==typeof e.addEventListener&&e.addEventListener("abort",(()=>{this.handleAborted(e)}))}handleAborted(e){this.signals.delete(e),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class s{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),e(this.currentMessage)}callback(e){this.currentMessage=e;for(const t of this.callbacks)t(e)}}class i{constructor({fill:e,cache:t}){if("function"!=typeof e)throw new TypeError("must pass a fill function");if("object"!=typeof t)throw new TypeError("must pass a cache object");if("function"!=typeof t.get||"function"!=typeof t.set||"function"!=typeof t.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=t,this.fillCallback=e}static isAbortException(e){return"AbortError"===e.name||"ERR_ABORTED"===e.code||"AbortError: aborted"===e.message||"Error: aborted"===e.message}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,a,r){const i=new n,o=new s;o.addCallback(r);const l={aborter:i,promise:this.fillCallback(t,i.signal,(e=>{o.callback(e)})),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};l.aborter.addSignal(a),l.aborter.signal.addEventListener("abort",(()=>{l.settled||this.evict(e,l)})),l.promise.then((()=>{l.settled=!0}),(()=>{l.settled=!0,this.evict(e,l)})).catch((e=>{throw console.error(e),e})),this.cache.set(e,l)}static checkSinglePromise(e,t){function a(){if(null==t?void 0:t.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return e.then((e=>(a(),e)),(e=>{throw a(),e}))}has(e){return this.cache.has(e)}get(e,t,a,r){if(!a&&t instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const n=this.cache.get(e);return n?n.aborted&&!n.settled?(this.evict(e,n),this.get(e,t,a,r)):n.settled?n.promise:(n.aborter.addSignal(a),n.statusReporter.addCallback(r),i.checkSinglePromise(n.promise,a)):(this.fill(e,t,a,r),i.checkSinglePromise(this.cache.get(e).promise,a))}delete(e){const t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){const e=this.cache.keys();let t=0;for(let a=e.next();!a.done;a=e.next())this.delete(a.value),t+=1;return t}}},7706:(e,t,a)=>{a.d(t,{sG:()=>d,unzip:()=>i,i2:()=>o});var r=a(35451),n=a(45834),s=a(57864);async function i(e){try{let t,a=0,n=0;const i=[];let o,l=0;do{const r=e.subarray(a);if(o=new s.Inflate,({strm:t}=o),o.push(r,s.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);a+=t.next_in,i[n]=o.result,l+=i[n].length,n+=1}while(t.avail_in);const h=new Uint8Array(l);for(let e=0,t=0;e<i.length;e++)h.set(i[e],t),t+=i[e].length;return r.hp.from(h)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let a;const{minv:n,maxv:i}=t;let o=n.blockPosition,l=n.dataPosition;const h=[],c=[],d=[];let f=0,g=0;do{const t=e.subarray(o-n.blockPosition),r=new s.Inflate;if(({strm:a}=r),r.push(t,s.Z_SYNC_FLUSH),r.err)throw new Error(r.msg);const u=r.result;h.push(u);let w=u.length;c.push(o),d.push(l),1===h.length&&n.dataPosition&&(h[0]=h[0].subarray(n.dataPosition),w=h[0].length);const b=o;if(o+=a.next_in,l+=w,b>=i.blockPosition){h[g]=h[g].subarray(0,i.blockPosition===n.blockPosition?i.dataPosition-n.dataPosition+1:i.dataPosition+1),c.push(o),d.push(l),f+=h[g].length;break}f+=h[g].length,g++}while(a.avail_in);const u=new Uint8Array(f);for(let e=0,t=0;e<h.length;e++)u.set(h[e],t),t+=h[e].length;return{buffer:r.hp.from(u),cpositions:c,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var l=a(59086),h=a.n(l);class c{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new n.EY(t)}}_readLongWithOverflow(e,t=0,a=!0){const r=h().fromBytesLE(e.slice(t,t+8),a);if(r.greaterThan(Number.MAX_SAFE_INTEGER)||r.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return r.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=r.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const a=new Array(t+1);a[0]=[0,0];const n=16*t;if(n>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=r.hp.allocUnsafe(n),await this.filehandle.read(e,0,n,8);for(let r=0;r<t;r+=1){const t=this._readLongWithOverflow(e,16*r),n=this._readLongWithOverflow(e,16*r+8);a[r+1]=[t,n]}return a}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const a=t+e;if(0===e)return[];const r=await this._getIndex(),n=[],s=(e,a)=>{const r=e[1],n=a?a[1]:1/0;return r<=t&&n>t?0:r<t?-1:1};let i=0,o=r.length-1,l=Math.floor(r.length/2),h=s(r[l],r[l+1]);for(;0!==h;)h>0?o=l-1:h<0&&(i=l+1),l=Math.ceil((o-i)/2)+i,h=s(r[l],r[l+1]);n.push(r[l]);let c=l+1;for(;c<r.length&&(n.push(r[c]),!(r[c][1]>=a));c+=1);return n[n.length-1][1]<a&&n.push([]),n}}class d{constructor({filehandle:e,path:t,gziFilehandle:a,gziPath:r}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new n.EY(t)}if(!a&&!r&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:a,path:a||r||!t?`${t}.gzi`:r})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),a=r.hp.allocUnsafe(4),{bytesRead:n}=await this.filehandle.read(a,0,4,t-28-4);if(4!==n)throw new Error("read error");return e+a.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[a]){let r=a;r||(r=(await this.filehandle.stat()).size);const n=r-t;return await this.filehandle.read(e,0,n,t),await i(e.slice(0,n))}async read(e,t,a,n){const s=await this.gzi.getRelevantBlocksForRead(a,n),i=r.hp.allocUnsafe(65536);let o=t,l=0;for(let t=0;t<s.length-1;t+=1){const r=await this._readAndUncompressBlock(i,s[t],s[t+1]),[,h]=s[t],c=h>=n?0:n-h,d=Math.min(n+a,h+r.length)-h;c>=0&&c<r.length&&(r.copy(e,o,c,d),o+=d-c,l+=d-c)}return{bytesRead:l,buffer:e}}}},71616:(e,t,a)=>{a.d(t,{tP:()=>l,BL:()=>o});var r=a(45834),n=a(7706),s=a(35451);function i(e,t){return e.offset+e.lineBytes*Math.floor(t/e.lineLength)+t%e.lineLength}class o{constructor({fasta:e,fai:t,path:a,faiPath:n}){if(e)this.fasta=e;else{if(!a)throw new Error("Need to pass filehandle for fasta or path to localfile");this.fasta=new r.EY(a)}if(t)this.fai=t;else if(n)this.fai=new r.EY(n);else{if(!a)throw new Error("Need to pass filehandle for  or path to localfile");this.fai=new r.EY(`${a}.fai`)}}async _getIndexes(e){return this.indexes||(this.indexes=async function(e,t){const a=await e.readFile(t);if(!(null==a?void 0:a.length))throw new Error("No data read from FASTA index (FAI) file");let r,n=0;const s=a.toString("utf8").split(/\r?\n/).filter((e=>/\S/.test(e))).map((e=>e.split("\t"))).filter((e=>""!==e[0])).map((e=>(r&&r.name===e[0]||(r={name:e[0],id:n},n+=1),{id:r.id,name:e[0],length:+e[1],start:0,end:+e[1],offset:+e[2],lineLength:+e[3],lineBytes:+e[4]})));return{name:Object.fromEntries(s.map((e=>[e.name,e]))),id:Object.fromEntries(s.map((e=>[e.id,e])))}}(this.fai,e)),this.indexes}async getSequenceNames(e){return Object.keys((await this._getIndexes(e)).name)}async getSequenceSizes(e){const t={},a=await this._getIndexes(e);for(const e of Object.values(a.id))t[e.name]=e.length;return t}async getSequenceSize(e,t){var a;return null===(a=(await this._getIndexes(t)).name[e])||void 0===a?void 0:a.length}async hasReferenceSequence(e,t){return!!(await this._getIndexes(t)).name[e]}async getResiduesById(e,t,a,r){const n=(await this._getIndexes(r)).id[e];if(n)return this._fetchFromIndexEntry(n,t,a,r)}async getResiduesByName(e,t,a,r){const n=(await this._getIndexes(r)).name[e];if(n)return this._fetchFromIndexEntry(n,t,a,r)}async getSequence(e,t,a,r){return this.getResiduesByName(e,t,a,r)}async _fetchFromIndexEntry(e,t=0,a,r){let n=a;if(t<0)throw new TypeError("regionStart cannot be less than 0");if((void 0===n||n>e.length)&&(n=e.length),t>=n)return"";const o=i(e,t),l=i(e,n)-o,h=s.hp.allocUnsafe(l);return await this.fasta.read(h,0,l,o,r),h.toString("utf8").replace(/\s+/g,"")}}class l extends o{constructor({fasta:e,path:t,fai:a,faiPath:r,gzi:s,gziPath:i}){super({fasta:e,path:t,fai:a,faiPath:r}),e&&s?this.fasta=new n.sG({filehandle:e,gziFilehandle:s}):t&&i&&(this.fasta=new n.sG({path:t,gziPath:i}))}}}}]);
+//# sourceMappingURL=2977.aa562b03.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2977.aa562b03.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2977.aa562b03.chunk.js","mappings":"+IAAA,MAAMA,GAMS,MAAMC,EAArB,cACE,KAAAC,QAAU,IAAIC,IACd,KAAAC,gBAAkB,IAAIC,eAyCxB,CAjCE,SAAAC,CAAUC,EAAsB,IAAIP,GAClC,GAAIQ,KAAKD,OAAOE,QACd,MAAM,IAAIC,MAAM,yCAKlBF,KAAKN,QAAQS,IAAIJ,GACbA,EAAOE,QAGTD,KAAKI,cAAcL,GACyB,mBAA5BA,EAAOM,kBACvBN,EAAOM,iBAAiB,SAAS,KAC/BL,KAAKI,cAAcL,EAAO,GAGhC,CAEA,aAAAK,CAAcL,GACZC,KAAKN,QAAQY,OAAOP,GACM,IAAtBC,KAAKN,QAAQa,MACfP,KAAKJ,gBAAgBY,OAEzB,CAEA,UAAIT,GACF,OAAOC,KAAKJ,gBAAgBG,MAC9B,CAEA,KAAAS,GACER,KAAKJ,gBAAgBY,OACvB,EChDa,MAAMC,EAArB,cACE,KAAAC,UAAY,IAAIf,GAclB,CAXE,WAAAgB,CAAYC,EAAqB,QAC/BZ,KAAKU,UAAUP,IAAIS,GACnBA,EAASZ,KAAKa,eAChB,CAEA,QAAAD,CAASE,GACPd,KAAKa,eAAiBC,EACtB,IAAK,MAAMC,KAAOf,KAAKU,UACrBK,EAAID,EAER,ECSa,MAAME,EAWnB,WAAAC,EAAY,KACVC,EAAI,MACJC,IAKA,GAAoB,mBAATD,EACT,MAAM,IAAIE,UAAU,6BAEtB,GAAqB,iBAAVD,EACT,MAAM,IAAIC,UAAU,4BAEtB,GACuB,mBAAdD,EAAME,KACQ,mBAAdF,EAAMG,KACW,mBAAjBH,EAAMb,OAEb,MAAM,IAAIc,UACR,qEAIJpB,KAAKmB,MAAQA,EACbnB,KAAKuB,aAAeL,CACtB,CAEA,uBAAOM,CAAiBC,GACtB,MAEqB,eAAnBA,EAAUC,MAGS,gBAAnBD,EAAUE,MAEY,wBAAtBF,EAAUX,SAEY,mBAAtBW,EAAUX,OAEd,CAEA,KAAAc,CAAMC,EAAaC,GACb9B,KAAKmB,MAAME,IAAIQ,KAASC,GAC1B9B,KAAKmB,MAAMb,OAAOuB,EAEtB,CAEA,IAAAX,CAAKW,EAAaE,EAAShC,EAAsBiC,GAC/C,MAAMC,EAAU,IAAIxC,EACdyC,EAAiB,IAAIzB,EAC3ByB,EAAevB,YAAYqB,GAC3B,MAAMG,EAAqB,CACzBF,QAASA,EACTG,QAASpC,KAAKuB,aAAaQ,EAAME,EAAQlC,QAASe,IAChDoB,EAAetB,SAASE,EAAQ,IAElCuB,SAAS,EACTH,iBACA,WAAIjC,GACF,OAAOD,KAAKiC,QAAQlC,OAAOE,OAC7B,GAEFkC,EAASF,QAAQnC,UAAUC,GAG3BoC,EAASF,QAAQlC,OAAOM,iBAAiB,SAAS,KAC3C8B,EAASE,SACZrC,KAAK4B,MAAMC,EAAKM,EAClB,IAIFA,EAASC,QACNE,MACC,KACEH,EAASE,SAAU,CAAI,IAEzB,KACEF,EAASE,SAAU,EAGnBrC,KAAK4B,MAAMC,EAAKM,EAAS,IAG5BI,OAAMC,IAIL,MADAC,QAAQD,MAAMA,GACRA,CAAK,IAGfxC,KAAKmB,MAAMG,IAAIO,EAAKM,EACtB,CAEA,yBAAOO,CAAsBN,EAAqBrC,GAIhD,SAAS4C,IACP,GAAI5C,aAAM,EAANA,EAAQE,QACV,MAAM2C,OAAOC,OAAO,IAAI3C,MAAM,WAAY,CAAEyB,KAAM,eAEtD,CAEA,OAAOS,EAAQE,MACbQ,IACEH,IACOG,KAETN,IAEE,MADAG,IACMH,CAAK,GAGjB,CAEA,GAAAO,CAAIlB,GACF,OAAO7B,KAAKmB,MAAM4B,IAAIlB,EACxB,CAeA,GAAAR,CACEQ,EACAE,EACAhC,EACAiC,GAEA,IAAKjC,GAAUgC,aAAgBiB,YAC7B,MAAM,IAAI5B,UACR,yGAGJ,MAAM6B,EAAajD,KAAKmB,MAAME,IAAIQ,GAElC,OAAIoB,EACEA,EAAWhD,UAAYgD,EAAWZ,SAEpCrC,KAAK4B,MAAMC,EAAKoB,GACTjD,KAAKqB,IAAIQ,EAAKE,EAAMhC,EAAQiC,IAGjCiB,EAAWZ,QAENY,EAAWb,SAKpBa,EAAWhB,QAAQnC,UAAUC,GAC7BkD,EAAWf,eAAevB,YAAYqB,GAE/BhB,EAAsB0B,mBAC3BO,EAAWb,QACXrC,KAKJC,KAAKkB,KAAKW,EAAKE,EAAMhC,EAAQiC,GACtBhB,EAAsB0B,mBAG3B1C,KAAKmB,MAAME,IAAIQ,GAAMO,QACrBrC,GAEJ,CAQA,OAAO8B,GACL,MAAMqB,EAAclD,KAAKmB,MAAME,IAAIQ,GAC/BqB,IACGA,EAAYb,SACfa,EAAYjB,QAAQzB,QAEtBR,KAAKmB,MAAMb,OAAOuB,GAEtB,CAMA,KAAAsB,GAEE,MAAMC,EAAUpD,KAAKmB,MAAMkC,OAC3B,IAAIC,EAAc,EAClB,IAAK,IAAIR,EAASM,EAAQG,QAAST,EAAOU,KAAMV,EAASM,EAAQG,OAC/DvD,KAAKM,OAAOwC,EAAOW,OACnBH,GAAe,EAEjB,OAAOA,CACT,E,6FCjOFI,eAAeC,EAAMC,GACnB,IACE,IAAIC,EACAC,EAAM,EACNC,EAAI,EACR,MAAMC,EAAS,GACf,IACIC,EADAC,EAAY,EAEhB,EAAG,CACD,MAAMC,EAAiBP,EAAUQ,SAASN,GAK1C,GAJAG,EAAW,IAAI,EAAAI,UAEXR,QAASI,GACbA,EAASK,KAAKH,EAAgB,EAAAI,cAC1BN,EAASO,IACX,MAAM,IAAItE,MAAM+D,EAASQ,KAG3BX,GAAOD,EAAKa,QACZV,EAAOD,GAAKE,EAASnB,OACrBoB,GAAaF,EAAOD,GAAGY,OACvBZ,GAAK,C,OACEF,EAAKe,UAEd,MAAM9B,EAAS,IAAI+B,WAAWX,GAC9B,IAAK,IAAIH,EAAI,EAAGe,EAAS,EAAGf,EAAIC,EAAOW,OAAQZ,IAC7CjB,EAAOxB,IAAI0C,EAAOD,GAAIe,GACtBA,GAAUd,EAAOD,GAAGY,OAEtB,OAAO,KAAOI,KAAKjC,E,CACnB,MAAOkC,GAEP,GAAI,GAAGA,IAAIC,MAAM,0BACf,MAAM,IAAI/E,MACR,4DAGJ,MAAM8E,C,CAEV,CAgDAtB,eAAewB,EAAgBtB,EAAmBuB,GAChD,IACE,IAAItB,EACJ,MAAM,KAAEuB,EAAI,KAAEC,GAASF,EACvB,IAAIG,EAAOF,EAAKG,cACZC,EAAOJ,EAAKK,aAChB,MAAMzB,EAAS,GACT0B,EAAa,GACbC,EAAa,GAEnB,IAAIzB,EAAY,EACZH,EAAI,EACR,EAAG,CACD,MAAMI,EAAiBP,EAAUQ,SAASkB,EAAOF,EAAKG,eAChDtB,EAAW,IAAI,EAAAI,QAIrB,KAFIR,QAASI,GACbA,EAASK,KAAKH,EAAgB,EAAAI,cAC1BN,EAASO,IACX,MAAM,IAAItE,MAAM+D,EAASQ,KAG3B,MAAMmB,EAAS3B,EAASnB,OACxBkB,EAAOM,KAAKsB,GACZ,IAAIC,EAAMD,EAAOjB,OAEjBe,EAAWpB,KAAKgB,GAChBK,EAAWrB,KAAKkB,GACM,IAAlBxB,EAAOW,QAAgBS,EAAKK,eAE9BzB,EAAO,GAAKA,EAAO,GAAGI,SAASgB,EAAKK,cACpCI,EAAM7B,EAAO,GAAGW,QAElB,MAAMmB,EAAWR,EAIjB,GAHAA,GAAQzB,EAAKa,QACbc,GAAQK,EAEJC,GAAYT,EAAKE,cAAe,CAKlCvB,EAAOD,GAAKC,EAAOD,GAAGK,SACpB,EACAiB,EAAKE,gBAAkBH,EAAKG,cACxBF,EAAKI,aAAeL,EAAKK,aAAe,EACxCJ,EAAKI,aAAe,GAG1BC,EAAWpB,KAAKgB,GAChBK,EAAWrB,KAAKkB,GAChBtB,GAAaF,EAAOD,GAAGY,OACvB,K,CAEFT,GAAaF,EAAOD,GAAGY,OACvBZ,G,OACOF,EAAKe,UAEd,MAAM9B,EAAS,IAAI+B,WAAWX,GAC9B,IAAK,IAAIH,EAAI,EAAGe,EAAS,EAAGf,EAAIC,EAAOW,OAAQZ,IAC7CjB,EAAOxB,IAAI0C,EAAOD,GAAIe,GACtBA,GAAUd,EAAOD,GAAGY,OAItB,MAAO,CAAEiB,OAFM,KAAOb,KAAKjC,GAEV4C,aAAYC,a,CAC7B,MAAOX,GAEP,GAAI,GAAGA,IAAIC,MAAM,0BACf,MAAM,IAAI/E,MACR,4DAGJ,MAAM8E,C,CAEV,C,wBC5Ke,MAAMe,EAKnB,WAAA9E,EAAY,WACV+E,EAAU,KACVC,IAKA,GAAID,EACFhG,KAAKgG,WAAaA,MACb,KAAIC,EAGT,MAAM,IAAI7E,UAAU,6CAFpBpB,KAAKgG,WAAa,IAAI,KAAUC,E,CAIpC,CAEA,qBAAAC,CAAsBC,EAAarB,EAAS,EAAGsB,GAAW,GAExD,MAAMC,EAAO,gBAAiBF,EAAIG,MAAMxB,EAAQA,EAAS,GAAIsB,GAC7D,GACEC,EAAKE,YAAYC,OAAOC,mBACxBJ,EAAKK,SAASF,OAAOG,kBAErB,MAAM,IAAIvF,UAAU,oBAGtB,OAAOiF,EAAKO,UACd,CAEA,SAAAC,GAIE,OAHK7G,KAAK8G,QACR9G,KAAK8G,MAAQ9G,KAAK+G,cAEb/G,KAAK8G,KACd,CAEA,gBAAMC,GACJ,IAAIZ,EAAM,KAAOa,YAAY,SACvBhH,KAAKgG,WAAWiB,KAAKd,EAAK,EAAG,EAAG,GACtC,MAAMe,EAAalH,KAAKkG,sBAAsBC,EAAK,GAAG,GACtD,IAAKe,EACH,MAAO,CAAC,CAAC,EAAG,IAGd,MAAMC,EAAU,IAAIC,MAAMF,EAAa,GACvCC,EAAQ,GAAK,CAAC,EAAG,GAGjB,MAAME,EAAU,GAAQH,EACxB,GAAIG,EAAUb,OAAOC,iBACnB,MAAM,IAAIrF,UAAU,oBAEtB+E,EAAM,KAAOa,YAAYK,SACnBrH,KAAKgG,WAAWiB,KAAKd,EAAK,EAAGkB,EAAS,GAC5C,IAAK,IAAIC,EAAc,EAAGA,EAAcJ,EAAYI,GAAe,EAAG,CACpE,MAAMC,EAAqBvH,KAAKkG,sBAC9BC,EACc,GAAdmB,GAEIE,EAAuBxH,KAAKkG,sBAChCC,EACc,GAAdmB,EAAmB,GAErBH,EAAQG,EAAc,GAAK,CAACC,EAAoBC,E,CAGlD,OAAOL,CACT,CAEA,kBAAMM,GACJ,MAAMN,QAAgBnH,KAAK6G,YAC3B,GAAKM,EAAQxC,OAGb,OAAOwC,EAAQA,EAAQxC,OAAS,EAClC,CAEA,8BAAM+C,CAAyB/C,EAAgBgD,GAC7C,MAAMC,EAAcD,EAAWhD,EAC/B,GAAe,IAAXA,EACF,MAAO,GAET,MAAMwC,QAAgBnH,KAAK6G,YACrBgB,EAAW,GAIXC,EAAU,CAAChG,EAAYiG,KAC3B,MAAMP,EAAuB1F,EA/FL,GAgGlBkG,EAA2BD,EAC7BA,EAjGoB,GAkGpBE,IAEJ,OACET,GAAwBG,GACxBK,EAA2BL,EAEpB,EAGLH,EAAuBG,GACjB,EAGH,CAAC,EAGV,IAAIO,EAAa,EACbC,EAAahB,EAAQxC,OAAS,EAC9ByD,EAAiBC,KAAKC,MAAMnB,EAAQxC,OAAS,GAE7C4D,EAAaT,EACfX,EAAQiB,GACRjB,EAAQiB,EAAiB,IAE3B,KAAsB,IAAfG,GACDA,EAAa,EACfJ,EAAaC,EAAiB,EACrBG,EAAa,IACtBL,EAAaE,EAAiB,GAEhCA,EAAiBC,KAAKG,MAAML,EAAaD,GAAc,GAAKA,EAC5DK,EAAaT,EAAQX,EAAQiB,GAAiBjB,EAAQiB,EAAiB,IAIzEP,EAASvD,KAAK6C,EAAQiB,IACtB,IAAIrE,EAAIqE,EAAiB,EACzB,KAAOrE,EAAIoD,EAAQxC,SACjBkD,EAASvD,KAAK6C,EAAQpD,MAClBoD,EAAQpD,GAzIY,IAyIiB6D,IAFhB7D,GAAK,GAShC,OAHI8D,EAASA,EAASlD,OAAS,GA7IL,GA6IiCiD,GACzDC,EAASvD,KAAK,IAETuD,CACT,EC/Ia,MAAMY,EAInB,WAAAxH,EAAY,WACV+E,EAAU,KACVC,EAAI,cACJyC,EAAa,QACbC,IAOA,GAAI3C,EACFhG,KAAKgG,WAAaA,MACb,KAAIC,EAGT,MAAM,IAAI7E,UAAU,6CAFpBpB,KAAKgG,WAAa,IAAI,KAAUC,E,CAKlC,IAAKyC,IAAkBC,IAAY1C,EACjC,MAAM,IAAI7E,UAAU,mDAGtBpB,KAAK4I,IAAM,IAAI7C,EAAS,CACtBC,WAAY0C,EACZzC,KAAOyC,GAAkBC,IAAW1C,EAAiB,GAAGA,QAAb0C,GAE/C,CAEA,UAAME,GACJ,MAAMC,QAAuB9I,KAAKgG,WAAW6C,OAC7C,OAAOjG,OAAOC,OAAOiG,EAAgB,CACnCvI,WAAYP,KAAK+I,0BACjBC,YAAQC,EACRC,aAASD,GAEb,CAEA,6BAAMF,GAGJ,MAAO,CAAEvB,SAA8BxH,KAAK4I,IAAInB,gBAE1C,KAAElH,SAAeP,KAAKgG,WAAW6C,OAEjC1C,EAAM,KAAOa,YAAY,IAGzB,UAAEmC,SAAoBnJ,KAAKgG,WAAWiB,KAAKd,EAAK,EAAG,EAAG5F,EAAO,GAAK,GACxE,GAAkB,IAAd4I,EACF,MAAM,IAAIjJ,MAAM,cAGlB,OAAOsH,EAD2BrB,EAAIiD,aAAa,EAErD,CAEA,6BAAMC,CACJC,GACC/B,IACAgC,IAED,IAAIhG,EAAOgG,EACNhG,IACHA,SAAcvD,KAAKgG,WAAW6C,QAAQtI,MAIxC,MAAMiJ,EAAwBjG,EAAOgE,EAcrC,aAZMvH,KAAKgG,WAAWiB,KACpBqC,EACA,EACAE,EACAjC,SAI2B5D,EAC3B2F,EAAYhD,MAAM,EAAGkD,GAIzB,CAEA,UAAMvC,CAAKd,EAAarB,EAAgBH,EAAgBgD,GAEtD,MAAM8B,QAAuBzJ,KAAK4I,IAAIlB,yBACpC/C,EACAgD,GAEI2B,EAAc,KAAOtC,YAAY,OAEvC,IAAI0C,EAAoB5E,EACpBqE,EAAY,EAChB,IACE,IAAIQ,EAAW,EACfA,EAAWF,EAAe9E,OAAS,EACnCgF,GAAY,EACZ,CAEA,MAAMC,QAA2B5J,KAAKqJ,wBACpCC,EACAG,EAAeE,GACfF,EAAeE,EAAW,KAErB,CAAEnC,GAAwBiC,EAAeE,GAC1CE,EACJrC,GAAwBG,EAAW,EAAIA,EAAWH,EAC9CsC,EACJzB,KAAK0B,IACHpC,EAAWhD,EACX6C,EAAuBoC,EAAmBjF,QACxC6C,EACFqC,GAAgB,GAAKA,EAAeD,EAAmBjF,SACzDiF,EAAmBI,KAAK7D,EAAKuD,EAAmBG,EAAcC,GAC9DJ,GAAqBI,EAAYD,EACjCV,GAAaW,EAAYD,E,CAI7B,MAAO,CAAEV,YAAWvD,OAAQO,EAC9B,E,iFCtHF,SAAS8D,EAAWC,EAAiBpG,GACnC,OACEoG,EAAIpF,OACJoF,EAAIC,UAAY9B,KAAKC,MAAMxE,EAAMoG,EAAIE,YACpCtG,EAAMoG,EAAIE,UAEf,CAwCe,MAAMC,EAKnB,WAAApJ,EAAY,MACVqJ,EAAK,IACLC,EAAG,KACHtE,EAAI,QACJuE,IAOA,GAAIF,EACFtK,KAAKsK,MAAQA,MACR,KAAIrE,EAGT,MAAM,IAAI/F,MAAM,0DAFhBF,KAAKsK,MAAQ,IAAI,KAAUrE,EAG7B,CAEA,GAAIsE,EACFvK,KAAKuK,IAAMA,OACN,GAAIC,EACTxK,KAAKuK,IAAM,IAAI,KAAUC,OACpB,KAAIvE,EAGT,MAAM,IAAI/F,MAAM,qDAFhBF,KAAKuK,IAAM,IAAI,KAAU,GAAGtE,QAG9B,CACF,CAEA,iBAAMwE,CAAYC,GAIhB,OAHK1K,KAAK2K,UACR3K,KAAK2K,QA3EXjH,eAAuB6G,EAAwBG,GAC7C,MAAME,QAAaL,EAAIM,SAASH,GAChC,KAAKE,aAAI,EAAJA,EAAMjG,QACT,MAAM,IAAIzE,MAAM,4CAGlB,IACI4K,EADAC,EAAY,EAEhB,MAAMhJ,EAAO6I,EACVI,SAAS,QACTC,MAAM,SACNC,QAAOC,GAAQ,KAAKC,KAAKD,KACzBE,KAAIF,GAAQA,EAAKF,MAAM,QACvBC,QAAOI,GAAkB,KAAXA,EAAI,KAClBD,KAAIC,IACER,GAAWA,EAAQpJ,OAAS4J,EAAI,KACnCR,EAAU,CAAEpJ,KAAM4J,EAAI,GAAIC,GAAIR,GAC9BA,GAAa,GAGR,CACLQ,GAAIT,EAAQS,GACZ7J,KAAM4J,EAAI,GACV3G,QAAS2G,EAAI,GACbE,MAAO,EACPC,KAAMH,EAAI,GACVxG,QAASwG,EAAI,GACblB,YAAakB,EAAI,GACjBnB,WAAYmB,EAAI,OAItB,MAAO,CACL5J,KAAMkB,OAAO8I,YAAY3J,EAAKsJ,KAAIvJ,GAAS,CAACA,EAAMJ,KAAMI,MACxDyJ,GAAI3I,OAAO8I,YAAY3J,EAAKsJ,KAAIvJ,GAAS,CAACA,EAAMyJ,GAAIzJ,MAExD,CAuCqB6J,CAAQ3L,KAAKuK,IAAKG,IAE5B1K,KAAK2K,OACd,CAQA,sBAAMiB,CAAiBlB,GACrB,OAAO9H,OAAOS,YAAYrD,KAAKyK,YAAYC,IAAOhJ,KACpD,CAQA,sBAAMmK,CAAiBnB,GACrB,MAAMoB,EAAe,CAAC,EAChB5B,QAAYlK,KAAKyK,YAAYC,GACnC,IAAK,MAAMqB,KAAOnJ,OAAOoJ,OAAO9B,EAAIqB,IAClCO,EAAaC,EAAIrK,MAAQqK,EAAIpH,OAE/B,OAAOmH,CACT,CAQA,qBAAMG,CAAgBC,EAAiBxB,G,MAErC,OAAwB,QAAjB,SADW1K,KAAKyK,YAAYC,IACxBhJ,KAAKwK,UAAQ,eAAEvH,MAC5B,CAOA,0BAAMwH,CAAqBzK,EAAcgJ,GACvC,eAAgB1K,KAAKyK,YAAYC,IAAOhJ,KAAKA,EAC/C,CAQA,qBAAM0K,CACJC,EACAtC,EACAuC,EACA5B,GAEA,MAAM6B,SAAoBvM,KAAKyK,YAAYC,IAAOa,GAAGc,GACrD,GAAKE,EAGL,OAAOvM,KAAKwM,qBAAqBD,EAAYxC,EAAKuC,EAAK5B,EACzD,CAOA,uBAAM+B,CACJP,EACAnC,EACAuC,EACA5B,GAEA,MAAM6B,SAAoBvM,KAAKyK,YAAYC,IAAOhJ,KAAKwK,GACvD,GAAKK,EAIL,OAAOvM,KAAKwM,qBAAqBD,EAAYxC,EAAKuC,EAAK5B,EACzD,CAGA,iBAAMgC,CACJR,EACAnC,EACAuC,EACA5B,GAEA,OAAO1K,KAAKyM,kBAAkBP,EAASnC,EAAKuC,EAAK5B,EACnD,CAEA,0BAAM8B,CACJD,EACAxC,EAAM,EACNuC,EACA5B,GAEA,IAAIe,EAAMa,EACV,GAAIvC,EAAM,EACR,MAAM,IAAI3I,UAAU,qCAKtB,SAHY6H,IAARwC,GAAqBA,EAAMc,EAAW5H,UACxC8G,EAAMc,EAAW5H,QAEfoF,GAAO0B,EACT,MAAO,GAGT,MAAM9D,EAAWsC,EAAWsC,EAAYxC,GAClC4C,EAAU1C,EAAWsC,EAAYd,GAAO9D,EAExCiF,EAAW,KAAO5F,YAAY2F,GAEpC,aADM3M,KAAKsK,MAAMrD,KAAK2F,EAAU,EAAGD,EAAShF,EAAU+C,GAC/CkC,EAAS5B,SAAS,QAAQ6B,QAAQ,OAAQ,GACnD,ECtNa,MAAMC,UAA0BzC,EAC7C,WAAApJ,EAAY,MACVqJ,EAAK,KACLrE,EAAI,IACJsE,EAAG,QACHC,EAAO,IACP5B,EAAG,QACHD,IASAoE,MAAM,CAAEzC,QAAOrE,OAAMsE,MAAKC,YACtBF,GAAS1B,EAEX5I,KAAKsK,MAAQ,IAAI,KAAe,CAC9BtE,WAAYsE,EACZ5B,cAAeE,IAER3C,GAAQ0C,IAEjB3I,KAAKsK,MAAQ,IAAI,KAAe,CAAErE,OAAM0C,YAE5C,E","sources":["../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts","../../../node_modules/@gmod/indexedfasta/src/indexedFasta.ts","../../../node_modules/@gmod/indexedfasta/src/bgzipIndexedFasta.ts"],"sourcesContent":["class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n","import { LocalFile, GenericFilehandle } from 'generic-filehandle'\nimport { Buffer } from 'buffer'\n\ninterface BaseOpts {\n  signal?: AbortSignal\n}\n\ninterface IndexEntry {\n  offset: number\n  lineBytes: number\n  lineLength: number\n  length: number\n}\n\nfunction _faiOffset(idx: IndexEntry, pos: number) {\n  return (\n    idx.offset +\n    idx.lineBytes * Math.floor(pos / idx.lineLength) +\n    (pos % idx.lineLength)\n  )\n}\n\nasync function readFAI(fai: GenericFilehandle, opts?: BaseOpts) {\n  const text = await fai.readFile(opts)\n  if (!text?.length) {\n    throw new Error('No data read from FASTA index (FAI) file')\n  }\n\n  let idCounter = 0\n  let currSeq: { name: string; id: number } | undefined\n  const data = text\n    .toString('utf8')\n    .split(/\\r?\\n/)\n    .filter(line => /\\S/.test(line))\n    .map(line => line.split('\\t'))\n    .filter(row => row[0] !== '')\n    .map(row => {\n      if (!currSeq || currSeq.name !== row[0]) {\n        currSeq = { name: row[0], id: idCounter }\n        idCounter += 1\n      }\n\n      return {\n        id: currSeq.id,\n        name: row[0],\n        length: +row[1],\n        start: 0,\n        end: +row[1],\n        offset: +row[2],\n        lineLength: +row[3],\n        lineBytes: +row[4],\n      }\n    })\n\n  return {\n    name: Object.fromEntries(data.map(entry => [entry.name, entry])),\n    id: Object.fromEntries(data.map(entry => [entry.id, entry])),\n  }\n}\n\nexport default class IndexedFasta {\n  fasta: GenericFilehandle\n  fai: GenericFilehandle\n  indexes?: ReturnType<typeof readFAI>\n\n  constructor({\n    fasta,\n    fai,\n    path,\n    faiPath,\n  }: {\n    fasta?: GenericFilehandle\n    fai?: GenericFilehandle\n    path?: string\n    faiPath?: string\n  }) {\n    if (fasta) {\n      this.fasta = fasta\n    } else if (path) {\n      this.fasta = new LocalFile(path)\n    } else {\n      throw new Error('Need to pass filehandle for fasta or path to localfile')\n    }\n\n    if (fai) {\n      this.fai = fai\n    } else if (faiPath) {\n      this.fai = new LocalFile(faiPath)\n    } else if (path) {\n      this.fai = new LocalFile(`${path}.fai`)\n    } else {\n      throw new Error('Need to pass filehandle for  or path to localfile')\n    }\n  }\n\n  async _getIndexes(opts?: BaseOpts) {\n    if (!this.indexes) {\n      this.indexes = readFAI(this.fai, opts)\n    }\n    return this.indexes\n  }\n\n  /**\n   * @returns {array[string]} array of string sequence\n   * names that are present in the index, in which the\n   * array index indicates the sequence ID, and the value\n   * is the sequence name\n   */\n  async getSequenceNames(opts?: BaseOpts) {\n    return Object.keys((await this._getIndexes(opts)).name)\n  }\n\n  /**\n   * @returns {array[string]} array of string sequence\n   * names that are present in the index, in which the\n   * array index indicates the sequence ID, and the value\n   * is the sequence name\n   */\n  async getSequenceSizes(opts?: BaseOpts) {\n    const returnObject = {} as Record<string, number>\n    const idx = await this._getIndexes(opts)\n    for (const val of Object.values(idx.id)) {\n      returnObject[val.name] = val.length\n    }\n    return returnObject\n  }\n\n  /**\n   * @returns {array[string]} array of string sequence\n   * names that are present in the index, in which the\n   * array index indicates the sequence ID, and the value\n   * is the sequence name\n   */\n  async getSequenceSize(seqName: string, opts?: BaseOpts) {\n    const idx = await this._getIndexes(opts)\n    return idx.name[seqName]?.length\n  }\n\n  /**\n   *\n   * @param {string} name\n   * @returns {Promise[boolean]} true if the file contains the given reference sequence name\n   */\n  async hasReferenceSequence(name: string, opts?: BaseOpts) {\n    return !!(await this._getIndexes(opts)).name[name]\n  }\n\n  /**\n   *\n   * @param {number} seqId\n   * @param {number} min\n   * @param {number} max\n   */\n  async getResiduesById(\n    seqId: number,\n    min: number,\n    max: number,\n    opts?: BaseOpts,\n  ) {\n    const indexEntry = (await this._getIndexes(opts)).id[seqId]\n    if (!indexEntry) {\n      return undefined\n    }\n    return this._fetchFromIndexEntry(indexEntry, min, max, opts)\n  }\n\n  /**\n   * @param {string} seqName\n   * @param {number} min\n   * @param {number} max\n   */\n  async getResiduesByName(\n    seqName: string,\n    min: number,\n    max: number,\n    opts?: BaseOpts,\n  ) {\n    const indexEntry = (await this._getIndexes(opts)).name[seqName]\n    if (!indexEntry) {\n      return undefined\n    }\n\n    return this._fetchFromIndexEntry(indexEntry, min, max, opts)\n  }\n\n  //alias for getResiduesByName\n  async getSequence(\n    seqName: string,\n    min: number,\n    max: number,\n    opts?: BaseOpts,\n  ) {\n    return this.getResiduesByName(seqName, min, max, opts)\n  }\n\n  async _fetchFromIndexEntry(\n    indexEntry: IndexEntry,\n    min = 0,\n    max: number,\n    opts?: BaseOpts,\n  ) {\n    let end = max\n    if (min < 0) {\n      throw new TypeError('regionStart cannot be less than 0')\n    }\n    if (end === undefined || end > indexEntry.length) {\n      end = indexEntry.length\n    }\n    if (min >= end) {\n      return ''\n    }\n\n    const position = _faiOffset(indexEntry, min)\n    const readlen = _faiOffset(indexEntry, end) - position\n\n    const residues = Buffer.allocUnsafe(readlen)\n    await this.fasta.read(residues, 0, readlen, position, opts)\n    return residues.toString('utf8').replace(/\\s+/g, '')\n  }\n}\n","import { BgzfFilehandle } from '@gmod/bgzf-filehandle'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport IndexedFasta from './indexedFasta'\n\nexport default class BgzipIndexedFasta extends IndexedFasta {\n  constructor({\n    fasta,\n    path,\n    fai,\n    faiPath,\n    gzi,\n    gziPath,\n  }: {\n    fasta?: GenericFilehandle\n    path?: string\n    fai?: GenericFilehandle\n    faiPath?: string\n    gzi?: GenericFilehandle\n    gziPath?: string\n  }) {\n    super({ fasta, path, fai, faiPath })\n    if (fasta && gzi) {\n      // @ts-expect-error\n      this.fasta = new BgzfFilehandle({\n        filehandle: fasta,\n        gziFilehandle: gzi,\n      })\n    } else if (path && gziPath) {\n      // @ts-expect-error\n      this.fasta = new BgzfFilehandle({ path, gziPath })\n    }\n  }\n}\n"],"names":["NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","signal","this","aborted","Error","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","callback","currentMessage","message","elt","AbortablePromiseCache","constructor","fill","cache","TypeError","get","set","fillCallback","isAbortException","exception","name","code","evict","key","entry","data","statusCallback","aborter","statusReporter","newEntry","promise","settled","then","catch","error","console","checkSinglePromise","checkForSingleAbort","Object","assign","result","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","keys","deleteCount","next","done","value","async","unzip","inputData","strm","pos","i","chunks","inflator","totalSize","remainingInput","subarray","Inflate","push","Z_SYNC_FLUSH","err","msg","next_in","length","avail_in","Uint8Array","offset","from","e","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","buffer","len","origCpos","GziIndex","filehandle","path","_readLongWithOverflow","buf","unsigned","long","slice","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","index","_readIndex","allocUnsafe","read","numEntries","entries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","getUncompressedFileSize","blocks","undefined","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy","_faiOffset","idx","lineBytes","lineLength","IndexedFasta","fasta","fai","faiPath","_getIndexes","opts","indexes","text","readFile","currSeq","idCounter","toString","split","filter","line","test","map","row","id","start","end","fromEntries","readFAI","getSequenceNames","getSequenceSizes","returnObject","val","values","getSequenceSize","seqName","hasReferenceSequence","getResiduesById","seqId","max","indexEntry","_fetchFromIndexEntry","getResiduesByName","getSequence","readlen","residues","replace","BgzipIndexedFasta","super"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2989.031b43a0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[2989],{12989:(e,t,a)=>{a.r(t),a.d(t,{default:()=>y});var n=a(7552),r=a(68446),l=a(1343),o=a(29499),i=a(36715),s=a(87731),c=a(943),u=a(58507),p=a(5401),d=a(49823);const m=(0,a(75785).n9)()((e=>({paper:{padding:e.spacing(2),margin:e.spacing(2)},field:{margin:e.spacing(2)}}))),g=["read paired","read mapped in proper pair","read unmapped","mate unmapped","read reverse strand","mate reverse strand","first in pair","second in pair","not primary alignment","read fails platform/vendor quality checks","read is PCR or optical duplicate","supplementary alignment"];function v(e){const{flag:t=0,setFlag:a}=e;return n.createElement(n.Fragment,null,n.createElement(l.A,{type:"number",value:t,onChange:e=>{a(+e.target.value)}}),g.map(((e,r)=>{const l=t&1<<r,o=`${e}_${l}`;return n.createElement("div",{key:o},n.createElement("input",{type:"checkbox",checked:Boolean(l),onChange:e=>{e.target.checked?a(t|1<<r):a(t&~(1<<r))}}),n.createElement("label",{htmlFor:o},e))})))}const y=(0,r.observer)((function(e){const{model:t,handleClose:a}=e,{classes:r}=m(),{filterBy:g}=t,[y,h]=(0,n.useState)(g.flagInclude),[b,f]=(0,n.useState)(g.flagExclude),[A,E]=(0,n.useState)(g.tagFilter?.tag||""),[x,C]=(0,n.useState)(g.tagFilter?.value||""),[k,w]=(0,n.useState)(g.readName||""),S=/^[A-Za-z][A-Za-z0-9]$/.exec(A),F="https://broadinstitute.github.io/picard/explain-flags.html";return n.createElement(d.Dialog,{open:!0,onClose:a,title:"Filter options"},n.createElement(o.A,null,n.createElement(i.A,null,"Set filter bitmask options. Refer to ",n.createElement(s.A,{href:F},F)," ","for details"),n.createElement(c.A,{className:r.paper,variant:"outlined"},n.createElement("div",{style:{display:"flex"}},n.createElement("div",null,n.createElement(i.A,null,"Read must have ALL these flags"),n.createElement(v,{flag:y,setFlag:h})),n.createElement("div",null,n.createElement(i.A,null,"Read must have NONE of these flags"),n.createElement(v,{flag:b,setFlag:f})))),n.createElement(c.A,{className:r.paper,variant:"outlined"},n.createElement(i.A,null,"Filter by tag name and value. Use * in the value field to get all reads containing any value for that tag. Example: filter tag name SA with value * to get all split/supplementary reads. Other examples include HP for haplotype, or RG for read group"),n.createElement(l.A,{className:r.field,value:A,onChange:e=>{E(e.target.value)},placeholder:"Enter tag name",inputProps:{maxLength:2},error:2===A.length&&!S,helperText:2!==A.length||S?"":"Not a valid tag"}),n.createElement(l.A,{className:r.field,value:x,onChange:e=>{C(e.target.value)},placeholder:"Enter tag value"})),n.createElement(c.A,{className:r.paper,variant:"outlined"},n.createElement(i.A,null,"Filter by read name"),n.createElement(l.A,{className:r.field,value:k,onChange:e=>{w(e.target.value)},placeholder:"Enter read name"})),n.createElement(u.A,null,n.createElement(p.A,{variant:"contained",color:"primary",autoFocus:!0,type:"submit",onClick:()=>{t.setFilterBy({flagInclude:y,flagExclude:b,readName:k,tagFilter:""!==A?{tag:A,value:x}:void 0}),a()}},"Submit"),n.createElement(p.A,{variant:"contained",color:"secondary",onClick:()=>{a()}},"Cancel"))))}))},87731:(e,t,a)=>{a.d(t,{A:()=>E});var n=a(7552),r=a(93878),l=a(72639),o=a(70799),i=a(91527),s=a(15622),c=a(51148),u=a(48231),p=a(60129),d=a(58520),m=a(4785),g=a(36715),v=a(58161),y=a(39995);const h=({theme:e,ownerState:t})=>{const a=t.color,n=(0,y.Yn)(e,`palette.${a}`,!1)||t.color,r=(0,y.Yn)(e,`palette.${a}Channel`);return"vars"in e&&r?`rgba(${r} / 0.4)`:(0,l.X4)(n,.4)};var b=a(69500);const f={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},A=(0,c.Ay)(g.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[`underline${(0,s.A)(a.underline)}`],"button"===a.component&&t.button]}})((0,p.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:t})=>"always"===e&&"inherit"!==t.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{underline:"always",color:t},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.4)`:(0,l.X4)(e.palette[t].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,l.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,l.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${v.A.focusVisible}`]:{outline:"auto"}}}]})))),E=n.forwardRef((function(e,t){const a=(0,m.b)({props:e,name:"MuiLink"}),l=(0,u.A)(),{className:c,color:p="primary",component:d="a",onBlur:g,onFocus:y,TypographyClasses:E,underline:x="always",variant:C="inherit",sx:k,...w}=a,[S,F]=n.useState(!1),N={...a,color:p,component:d,focusVisible:S,underline:x,variant:C},L=(e=>{const{classes:t,component:a,focusVisible:n,underline:r}=e,l={root:["root",`underline${(0,s.A)(r)}`,"button"===a&&"button",n&&"focusVisible"]};return(0,o.A)(l,v.t,t)})(N);return(0,b.jsx)(A,{color:p,className:(0,r.A)(L.root,c),classes:E,component:d,onBlur:e=>{(0,i.A)(e.target)||F(!1),g&&g(e)},onFocus:e=>{(0,i.A)(e.target)&&F(!0),y&&y(e)},ref:t,ownerState:N,variant:C,...w,sx:[...void 0===f[p]?[{color:p}]:[],...Array.isArray(k)?k:[k]],style:{...w.style,..."always"===x&&"inherit"!==p&&!f[p]&&{"--Link-underlineColor":h({theme:l,ownerState:N})}}})}))},58161:(e,t,a)=>{a.d(t,{A:()=>o,t:()=>l});var n=a(33761),r=a(85693);function l(e){return(0,r.Ay)("MuiLink",e)}const o=(0,n.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])}}]);
+//# sourceMappingURL=2989.031b43a0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/2989.031b43a0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/2989.031b43a0.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/shared/FilterByTagDialog.tsx","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  Link,\n  Paper,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { IFilter } from '.'\n\nconst useStyles = makeStyles()(theme => ({\n  paper: {\n    padding: theme.spacing(2),\n    margin: theme.spacing(2),\n  },\n  field: {\n    margin: theme.spacing(2),\n  },\n}))\n\nconst flagNames = [\n  'read paired',\n  'read mapped in proper pair',\n  'read unmapped',\n  'mate unmapped',\n  'read reverse strand',\n  'mate reverse strand',\n  'first in pair',\n  'second in pair',\n  'not primary alignment',\n  'read fails platform/vendor quality checks',\n  'read is PCR or optical duplicate',\n  'supplementary alignment',\n]\n\nfunction Bitmask(props: { flag?: number; setFlag: (arg: number) => void }) {\n  const { flag = 0, setFlag } = props\n  return (\n    <>\n      <TextField\n        type=\"number\"\n        value={flag}\n        onChange={event => {\n          setFlag(+event.target.value)\n        }}\n      />\n      {flagNames.map((name, index) => {\n        const val = flag & (1 << index)\n        const key = `${name}_${val}`\n        return (\n          <div key={key}>\n            <input\n              type=\"checkbox\"\n              checked={Boolean(val)}\n              onChange={event => {\n                if (event.target.checked) {\n                  setFlag(flag | (1 << index))\n                } else {\n                  setFlag(flag & ~(1 << index))\n                }\n              }}\n            />\n            <label htmlFor={key}>{name}</label>\n          </div>\n        )\n      })}\n    </>\n  )\n}\n\nconst FilterByTagDialog = observer(function (props: {\n  model: {\n    filterBy: IFilter\n    setFilterBy: (arg: IFilter) => void\n  }\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const { classes } = useStyles()\n  const { filterBy } = model\n  const [flagInclude, setFlagInclude] = useState(filterBy.flagInclude)\n  const [flagExclude, setFlagExclude] = useState(filterBy.flagExclude)\n  const [tag, setTag] = useState(filterBy.tagFilter?.tag || '')\n  const [tagValue, setTagValue] = useState(filterBy.tagFilter?.value || '')\n  const [readName, setReadName] = useState(filterBy.readName || '')\n  const validTag = /^[A-Za-z][A-Za-z0-9]$/.exec(tag)\n\n  const site = 'https://broadinstitute.github.io/picard/explain-flags.html'\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Filter options\">\n      <DialogContent>\n        <Typography>\n          Set filter bitmask options. Refer to <Link href={site}>{site}</Link>{' '}\n          for details\n        </Typography>\n        <Paper className={classes.paper} variant=\"outlined\">\n          <div style={{ display: 'flex' }}>\n            <div>\n              <Typography>Read must have ALL these flags</Typography>\n              <Bitmask flag={flagInclude} setFlag={setFlagInclude} />\n            </div>\n            <div>\n              <Typography>Read must have NONE of these flags</Typography>\n              <Bitmask flag={flagExclude} setFlag={setFlagExclude} />\n            </div>\n          </div>\n        </Paper>\n        <Paper className={classes.paper} variant=\"outlined\">\n          <Typography>\n            Filter by tag name and value. Use * in the value field to get all\n            reads containing any value for that tag. Example: filter tag name SA\n            with value * to get all split/supplementary reads. Other examples\n            include HP for haplotype, or RG for read group\n          </Typography>\n          <TextField\n            className={classes.field}\n            value={tag}\n            onChange={event => {\n              setTag(event.target.value)\n            }}\n            placeholder=\"Enter tag name\"\n            inputProps={{ maxLength: 2 }}\n            error={tag.length === 2 && !validTag}\n            helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n          />\n          <TextField\n            className={classes.field}\n            value={tagValue}\n            onChange={event => {\n              setTagValue(event.target.value)\n            }}\n            placeholder=\"Enter tag value\"\n          />\n        </Paper>\n        <Paper className={classes.paper} variant=\"outlined\">\n          <Typography>Filter by read name</Typography>\n          <TextField\n            className={classes.field}\n            value={readName}\n            onChange={event => {\n              setReadName(event.target.value)\n            }}\n            placeholder=\"Enter read name\"\n          />\n        </Paper>\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            autoFocus\n            type=\"submit\"\n            onClick={() => {\n              model.setFilterBy({\n                flagInclude,\n                flagExclude,\n                readName,\n                tagFilter:\n                  tag !== ''\n                    ? {\n                        tag,\n                        value: tagValue,\n                      }\n                    : undefined,\n              })\n              handleClose()\n            }}\n          >\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default FilterByTagDialog\n","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;"],"names":["useStyles","makeStyles","theme","paper","padding","spacing","margin","field","flagNames","Bitmask","props","flag","setFlag","React","TextField","type","value","onChange","event","target","map","name","index","val","key","checked","Boolean","htmlFor","observer","model","handleClose","classes","filterBy","flagInclude","setFlagInclude","useState","flagExclude","setFlagExclude","tag","setTag","tagFilter","tagValue","setTagValue","readName","setReadName","validTag","exec","site","Dialog","open","onClose","title","DialogContent","Typography","Link","href","Paper","className","variant","style","display","placeholder","inputProps","maxLength","error","length","helperText","DialogActions","Button","color","autoFocus","onClick","setFilterBy","undefined","ownerState","transformedColor","channelColor","v6Colors","primary","secondary","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","slot","overridesResolver","styles","root","capitalize","underline","component","button","memoTheme","variants","textDecoration","textDecorationColor","Object","entries","palette","filter","createSimplePaletteValueFilter","vars","mainChannel","main","text","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","borderRadius","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","inProps","ref","useTheme","onBlur","onFocus","TypographyClasses","sx","other","setFocusVisible","slots","composeClasses","useUtilityClasses","clsx","isFocusVisible","Array","isArray","getLinkUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3003.0f0cbacd.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3003],{3003:(e,s,t)=>{t.r(s),t.d(s,{default:()=>a.A,getInputAdornmentUtilityClass:()=>b.P,inputAdornmentClasses:()=>b.A});var a=t(93117),b=t(85845)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3011.9da53e7c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3011],{63011:(e,t,r)=>{r.d(t,{A:()=>A});var o=r(7552),n=(r(19487),r(93878)),i=r(70799),s=r(51148),a=r(60129),d=r(4785),l=r(98459),p=r(943),u=r(51132),c=r(77259),h=r(43045),g=r(46263),m=r(69500);const y=(0,s.Ay)(p.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${g.A.region}`]:t.region},t.root,!r.square&&t.rounded,!r.disableGutters&&t.gutters]}})((0,a.A)((({theme:e})=>{const t={duration:e.transitions.duration.shortest};return{position:"relative",transition:e.transitions.create(["margin"],t),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create(["opacity","background-color"],t)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${g.A.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${g.A.disabled}`]:{backgroundColor:(e.vars||e).palette.action.disabledBackground}}})),(0,a.A)((({theme:e})=>({variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(e.vars||e).shape.borderRadius,borderBottomRightRadius:(e.vars||e).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{[`&.${g.A.expanded}`]:{margin:"16px 0"}}}]})))),b=(0,s.Ay)("h3",{name:"MuiAccordion",slot:"Heading",overridesResolver:(e,t)=>t.heading})({all:"unset"}),A=o.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiAccordion"}),{children:s,className:a,defaultExpanded:p=!1,disabled:A=!1,disableGutters:f=!1,expanded:x,onChange:v,square:w=!1,slots:R={},slotProps:E={},TransitionComponent:C,TransitionProps:S,...$}=r,[M,T]=(0,c.A)({controlled:x,default:p,name:"Accordion",state:"expanded"}),j=o.useCallback((e=>{T(!M),v&&v(e,!M)}),[M,v,T]),[z,...k]=o.Children.toArray(s),N=o.useMemo((()=>({expanded:M,disabled:A,disableGutters:f,toggle:j})),[M,A,f,j]),q={...r,square:w,disabled:A,disableGutters:f,expanded:M},B=(e=>{const{classes:t,square:r,expanded:o,disabled:n,disableGutters:s}=e,a={root:["root",!r&&"rounded",o&&"expanded",n&&"disabled",!s&&"gutters"],heading:["heading"],region:["region"]};return(0,i.A)(a,g.d,t)})(q),D={slots:{transition:C,...R},slotProps:{transition:S,...E}},[G,I]=(0,h.A)("heading",{elementType:b,externalForwardedProps:D,className:B.heading,ownerState:q}),[P,H]=(0,h.A)("transition",{elementType:l.A,externalForwardedProps:D,ownerState:q});return(0,m.jsxs)(y,{className:(0,n.A)(B.root,a),ref:t,ownerState:q,square:w,...$,children:[(0,m.jsx)(G,{...I,children:(0,m.jsx)(u.A.Provider,{value:N,children:z})}),(0,m.jsx)(P,{in:M,timeout:"auto",...H,children:(0,m.jsx)("div",{"aria-labelledby":z.props.id,id:z.props["aria-controls"],role:"region",className:B.region,children:k})})]})}))},51132:(e,t,r)=>{r.d(t,{A:()=>o});const o=r(7552).createContext({})},46263:(e,t,r)=>{r.d(t,{A:()=>s,d:()=>i});var o=r(33761),n=r(85693);function i(e){return(0,n.Ay)("MuiAccordion",e)}const s=(0,o.A)("MuiAccordion",["root","heading","rounded","expanded","disabled","gutters","region"])},98459:(e,t,r)=>{r.d(t,{A:()=>v});var o=r(7552),n=r(93878),i=r(16157),s=r(26218),a=r(70799),d=r(51148),l=r(48231),p=r(60129),u=r(4785),c=r(94479),h=r(46302),g=r(51584),m=r(72367),y=r(69500);const b=(0,d.Ay)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.orientation],"entered"===r.state&&t.entered,"exited"===r.state&&!r.in&&"0px"===r.collapsedSize&&t.hidden]}})((0,p.A)((({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:e})=>"exited"===e.state&&!e.in&&"0px"===e.collapsedSize,style:{visibility:"hidden"}}]})))),A=(0,d.Ay)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),f=(0,d.Ay)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),x=o.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiCollapse"}),{addEndListener:d,children:p,className:x,collapsedSize:v="0px",component:w,easing:R,in:E,onEnter:C,onEntered:S,onEntering:$,onExit:M,onExited:T,onExiting:j,orientation:z="vertical",style:k,timeout:N=c.p0.standard,TransitionComponent:q=i.Ay,...B}=r,D={...r,orientation:z,collapsedSize:v},G=(e=>{const{orientation:t,classes:r}=e,o={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return(0,a.A)(o,m.E,r)})(D),I=(0,l.A)(),P=(0,s.A)(),H=o.useRef(null),L=o.useRef(),F="number"==typeof v?`${v}px`:v,W="horizontal"===z,_=W?"width":"height",J=o.useRef(null),K=(0,g.A)(t,J),O=e=>t=>{if(e){const r=J.current;void 0===t?e(r):e(r,t)}},Q=()=>H.current?H.current[W?"clientWidth":"clientHeight"]:0,U=O(((e,t)=>{H.current&&W&&(H.current.style.position="absolute"),e.style[_]=F,C&&C(e,t)})),V=O(((e,t)=>{const r=Q();H.current&&W&&(H.current.style.position="");const{duration:o,easing:n}=(0,h.c)({style:k,timeout:N,easing:R},{mode:"enter"});if("auto"===N){const t=I.transitions.getAutoHeightDuration(r);e.style.transitionDuration=`${t}ms`,L.current=t}else e.style.transitionDuration="string"==typeof o?o:`${o}ms`;e.style[_]=`${r}px`,e.style.transitionTimingFunction=n,$&&$(e,t)})),X=O(((e,t)=>{e.style[_]="auto",S&&S(e,t)})),Y=O((e=>{e.style[_]=`${Q()}px`,M&&M(e)})),Z=O(T),ee=O((e=>{const t=Q(),{duration:r,easing:o}=(0,h.c)({style:k,timeout:N,easing:R},{mode:"exit"});if("auto"===N){const r=I.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${r}ms`,L.current=r}else e.style.transitionDuration="string"==typeof r?r:`${r}ms`;e.style[_]=F,e.style.transitionTimingFunction=o,j&&j(e)}));return(0,y.jsx)(q,{in:E,onEnter:U,onEntered:X,onEntering:V,onExit:Y,onExited:Z,onExiting:ee,addEndListener:e=>{"auto"===N&&P.start(L.current||0,e),d&&d(J.current,e)},nodeRef:J,timeout:"auto"===N?null:N,...B,children:(e,t)=>(0,y.jsx)(b,{as:w,className:(0,n.A)(G.root,x,{entered:G.entered,exited:!E&&"0px"===F&&G.hidden}[e]),style:{[W?"minWidth":"minHeight"]:F,...k},ref:K,...t,ownerState:{...D,state:e},children:(0,y.jsx)(A,{ownerState:{...D,state:e},className:G.wrapper,ref:H,children:(0,y.jsx)(f,{ownerState:{...D,state:e},className:G.wrapperInner,children:p})})})})}));x&&(x.muiSupportAuto=!0);const v=x},72367:(e,t,r)=>{r.d(t,{A:()=>s,E:()=>i});var o=r(33761),n=r(85693);function i(e){return(0,n.Ay)("MuiCollapse",e)}const s=(0,o.A)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"])}}]);
+//# sourceMappingURL=3011.9da53e7c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3011.9da53e7c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3011.9da53e7c.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Accordion/Accordion.js","../../../node_modules/@mui/material/Accordion/AccordionContext.js","../../../node_modules/@mui/material/Accordion/accordionClasses.js","../../../node_modules/@mui/material/Collapse/Collapse.js","../../../node_modules/@mui/material/Collapse/collapseClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Collapse from \"../Collapse/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport AccordionContext from \"./AccordionContext.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport accordionClasses, { getAccordionUtilityClass } from \"./accordionClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    square,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    heading: ['heading'],\n    region: ['region']\n  };\n  return composeClasses(slots, getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = styled(Paper, {\n  name: 'MuiAccordion',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${accordionClasses.region}`]: styles.region\n    }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    position: 'relative',\n    transition: theme.transitions.create(['margin'], transition),\n    overflowAnchor: 'none',\n    // Keep the same scrolling position\n    '&::before': {\n      position: 'absolute',\n      left: 0,\n      top: -1,\n      right: 0,\n      height: 1,\n      content: '\"\"',\n      opacity: 1,\n      backgroundColor: (theme.vars || theme).palette.divider,\n      transition: theme.transitions.create(['opacity', 'background-color'], transition)\n    },\n    '&:first-of-type': {\n      '&::before': {\n        display: 'none'\n      }\n    },\n    [`&.${accordionClasses.expanded}`]: {\n      '&::before': {\n        opacity: 0\n      },\n      '&:first-of-type': {\n        marginTop: 0\n      },\n      '&:last-of-type': {\n        marginBottom: 0\n      },\n      '& + &': {\n        '&::before': {\n          display: 'none'\n        }\n      }\n    },\n    [`&.${accordionClasses.disabled}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    }\n  };\n}), memoTheme(({\n  theme\n}) => ({\n  variants: [{\n    props: props => !props.square,\n    style: {\n      borderRadius: 0,\n      '&:first-of-type': {\n        borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n        borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n      },\n      '&:last-of-type': {\n        borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n        borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n        // Fix a rendering issue on Edge\n        '@supports (-ms-ime-align: auto)': {\n          borderBottomLeftRadius: 0,\n          borderBottomRightRadius: 0\n        }\n      }\n    }\n  }, {\n    props: props => !props.disableGutters,\n    style: {\n      [`&.${accordionClasses.expanded}`]: {\n        margin: '16px 0'\n      }\n    }\n  }]\n})));\nconst AccordionHeading = styled('h3', {\n  name: 'MuiAccordion',\n  slot: 'Heading',\n  overridesResolver: (props, styles) => styles.heading\n})({\n  all: 'unset'\n});\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordion'\n  });\n  const {\n    children: childrenProp,\n    className,\n    defaultExpanded = false,\n    disabled = false,\n    disableGutters = false,\n    expanded: expandedProp,\n    onChange,\n    square = false,\n    slots = {},\n    slotProps = {},\n    TransitionComponent: TransitionComponentProp,\n    TransitionProps: TransitionPropsProp,\n    ...other\n  } = props;\n  const [expanded, setExpandedState] = useControlled({\n    controlled: expandedProp,\n    default: defaultExpanded,\n    name: 'Accordion',\n    state: 'expanded'\n  });\n  const handleChange = React.useCallback(event => {\n    setExpandedState(!expanded);\n    if (onChange) {\n      onChange(event, !expanded);\n    }\n  }, [expanded, onChange, setExpandedState]);\n  const [summary, ...children] = React.Children.toArray(childrenProp);\n  const contextValue = React.useMemo(() => ({\n    expanded,\n    disabled,\n    disableGutters,\n    toggle: handleChange\n  }), [expanded, disabled, disableGutters, handleChange]);\n  const ownerState = {\n    ...props,\n    square,\n    disabled,\n    disableGutters,\n    expanded\n  };\n  const classes = useUtilityClasses(ownerState);\n  const backwardCompatibleSlots = {\n    transition: TransitionComponentProp,\n    ...slots\n  };\n  const backwardCompatibleSlotProps = {\n    transition: TransitionPropsProp,\n    ...slotProps\n  };\n  const externalForwardedProps = {\n    slots: backwardCompatibleSlots,\n    slotProps: backwardCompatibleSlotProps\n  };\n  const [AccordionHeadingSlot, accordionProps] = useSlot('heading', {\n    elementType: AccordionHeading,\n    externalForwardedProps,\n    className: classes.heading,\n    ownerState\n  });\n  const [TransitionSlot, transitionProps] = useSlot('transition', {\n    elementType: Collapse,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(AccordionRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    square: square,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionHeadingSlot, {\n      ...accordionProps,\n      children: /*#__PURE__*/_jsx(AccordionContext.Provider, {\n        value: contextValue,\n        children: summary\n      })\n    }), /*#__PURE__*/_jsx(TransitionSlot, {\n      in: expanded,\n      timeout: \"auto\",\n      ...transitionProps,\n      children: /*#__PURE__*/_jsx(\"div\", {\n        \"aria-labelledby\": summary.props.id,\n        id: summary.props['aria-controls'],\n        role: \"region\",\n        className: classes.region,\n        children: children\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: chainPropTypes(PropTypes.node.isRequired, props => {\n    const summary = React.Children.toArray(props.children)[0];\n    if (isFragment(summary)) {\n      return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n    }\n    if (! /*#__PURE__*/React.isValidElement(summary)) {\n      return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, expands the accordion by default.\n   * @default false\n   */\n  defaultExpanded: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, expands the accordion, otherwise collapse it.\n   * Setting this prop enables control over the accordion.\n   */\n  expanded: PropTypes.bool,\n  /**\n   * Callback fired when the expand/collapse state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {boolean} expanded The `expanded` state of the accordion.\n   */\n  onChange: PropTypes.func,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    heading: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    heading: PropTypes.elementType,\n    transition: PropTypes.elementType\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  AccordionContext.displayName = 'AccordionContext';\n}\nexport default AccordionContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'heading', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { duration } from \"../styles/createTransitions.js\";\nimport { getTransitionProps } from \"../transitions/utils.js\";\nimport { useForkRef } from \"../utils/index.js\";\nimport { getCollapseUtilityClass } from \"./collapseClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height'),\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      height: 'auto',\n      width: 0,\n      transition: theme.transitions.create('width')\n    }\n  }, {\n    props: {\n      state: 'entered'\n    },\n    style: {\n      height: 'auto',\n      overflow: 'visible'\n    }\n  }, {\n    props: {\n      state: 'entered',\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px',\n    style: {\n      visibility: 'hidden'\n    }\n  }]\n})));\nconst CollapseWrapper = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\nconst CollapseWrapperInner = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})({\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n    addEndListener,\n    children,\n    className,\n    collapsedSize: collapsedSizeProp = '0px',\n    component,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    orientation = 'vertical',\n    style,\n    timeout = duration.standard,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    orientation,\n    collapsedSize: collapsedSizeProp\n  };\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const timer = useTimeout();\n  const wrapperRef = React.useRef(null);\n  const autoTransitionDuration = React.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTransitionDuration.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout,\n    ...other,\n    children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, {\n      as: component,\n      className: clsx(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: {\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize,\n        ...style\n      },\n      ref: handleRef,\n      ...childProps,\n      // `ownerState` is set after `childProps` to override any existing `ownerState` property in `childProps`\n      // that might have been forwarded from the Transition component.\n      ownerState: {\n        ...ownerState,\n        state\n      },\n      children: /*#__PURE__*/_jsx(CollapseWrapper, {\n        ownerState: {\n          ...ownerState,\n          state\n        },\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n          ownerState: {\n            ...ownerState,\n            state\n          },\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * The content node to be collapsed.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nif (Collapse) {\n  Collapse.muiSupportAuto = true;\n}\nexport default Collapse;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n  return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;"],"names":["AccordionRoot","name","slot","overridesResolver","props","styles","ownerState","region","root","square","rounded","disableGutters","gutters","theme","transition","duration","transitions","shortest","position","create","overflowAnchor","left","top","right","height","content","opacity","backgroundColor","vars","palette","divider","display","expanded","marginTop","marginBottom","disabled","action","disabledBackground","variants","style","borderRadius","borderTopLeftRadius","shape","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","margin","AccordionHeading","heading","all","inProps","ref","children","childrenProp","className","defaultExpanded","expandedProp","onChange","slots","slotProps","TransitionComponent","TransitionComponentProp","TransitionProps","TransitionPropsProp","other","setExpandedState","controlled","default","state","handleChange","event","summary","toArray","contextValue","toggle","classes","useUtilityClasses","externalForwardedProps","AccordionHeadingSlot","accordionProps","elementType","TransitionSlot","transitionProps","A","Provider","value","in","timeout","id","role","getAccordionUtilityClass","CollapseRoot","orientation","entered","collapsedSize","hidden","overflow","width","visibility","CollapseWrapper","wrapper","CollapseWrapperInner","wrapperInner","Collapse","addEndListener","collapsedSizeProp","component","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","standard","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","nodeRef","handleRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","current","undefined","getWrapperSize","handleEnter","isAppearing","handleEntering","wrapperSize","transitionDuration","transitionTimingFunction","mode","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","next","start","childProps","as","muiSupportAuto","getCollapseUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3012.9940fd01.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3012],{17515:(t,e,r)=>{r.d(e,{A:()=>b});var a=r(7552),s=r(93878),o=r(70799),n=r(51148),i=r(60129),l=r(4785),u=r(89663),p=r(69500);const d=(0,n.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.root,!r.disableGutters&&e.gutters,e[r.variant]]}})((0,i.A)((({theme:t})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:t})=>!t.disableGutters,style:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:t.mixins.toolbar}]})))),b=a.forwardRef((function(t,e){const r=(0,l.b)({props:t,name:"MuiToolbar"}),{className:a,component:n="div",disableGutters:i=!1,variant:b="regular",...g}=r,c={...r,component:n,disableGutters:i,variant:b},v=(t=>{const{classes:e,disableGutters:r,variant:a}=t,s={root:["root",!r&&"gutters",a]};return(0,o.A)(s,u.U,e)})(c);return(0,p.jsx)(d,{as:n,className:(0,s.A)(v.root,a),ref:e,ownerState:c,...g})}))},83012:(t,e,r)=>{r.r(e),r.d(e,{default:()=>a.A,getToolbarUtilityClass:()=>s.U,toolbarClasses:()=>s.A});var a=r(17515),s=r(89663)},89663:(t,e,r)=>{r.d(e,{A:()=>n,U:()=>o});var a=r(33761),s=r(85693);function o(t){return(0,s.Ay)("MuiToolbar",t)}const n=(0,a.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=3012.9940fd01.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3012.9940fd01.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3012.9940fd01.chunk.js","mappings":"oOAWA,MAWMA,GAAc,QAAO,MAAO,CAChCC,KAAM,aACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,MAAOD,EAAWE,gBAAkBH,EAAOI,QAASJ,EAAOC,EAAWI,SAAS,GAP9E,EASjB,QAAU,EACXC,YACI,CACJC,SAAU,WACVC,QAAS,OACTC,WAAY,SACZC,SAAU,CAAC,CACTX,MAAO,EACLE,iBACKA,EAAWE,eAClBQ,MAAO,CACLC,YAAaN,EAAMO,QAAQ,GAC3BC,aAAcR,EAAMO,QAAQ,GAC5B,CAACP,EAAMS,YAAYC,GAAG,OAAQ,CAC5BJ,YAAaN,EAAMO,QAAQ,GAC3BC,aAAcR,EAAMO,QAAQ,MAG/B,CACDd,MAAO,CACLM,QAAS,SAEXM,MAAO,CACLM,UAAW,KAEZ,CACDlB,MAAO,CACLM,QAAS,WAEXM,MAAOL,EAAMY,OAAOC,eAoExB,EAjE6B,cAAiB,SAAiBC,EAASC,GACtE,MAAMtB,GAAQ,OAAgB,CAC5BA,MAAOqB,EACPxB,KAAM,gBAEF,UACJ0B,EAAS,UACTC,EAAY,MAAK,eACjBpB,GAAiB,EAAK,QACtBE,EAAU,aACPmB,GACDzB,EACEE,EAAa,IACdF,EACHwB,YACApB,iBACAE,WAEIoB,EAtEkBxB,KACxB,MAAM,QACJwB,EAAO,eACPtB,EAAc,QACdE,GACEJ,EACEyB,EAAQ,CACZxB,KAAM,CAAC,QAASC,GAAkB,UAAWE,IAE/C,OAAO,OAAeqB,EAAO,IAAwBD,EAAQ,EA6D7CE,CAAkB1B,GAClC,OAAoB,SAAKN,EAAa,CACpCiC,GAAIL,EACJD,WAAW,OAAKG,EAAQvB,KAAMoB,GAC9BD,IAAKA,EACLpB,WAAYA,KACTuB,GAEP,G,sMCvFO,SAASK,EAAuBhC,GACrC,OAAO,QAAqB,aAAcA,EAC5C,CACA,MACA,GADuB,OAAuB,aAAc,CAAC,OAAQ,UAAW,UAAW,S","sources":["../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["ToolbarRoot","name","slot","overridesResolver","props","styles","ownerState","root","disableGutters","gutters","variant","theme","position","display","alignItems","variants","style","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","inProps","ref","className","component","other","classes","slots","useUtilityClasses","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3029.cd8dcca2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3029],{93029:(e,s,a)=>{a.r(s),a.d(s,{default:()=>b.A,getPaperUtilityClass:()=>l.j,paperClasses:()=>l.A});var b=a(943),l=a(40795)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3103.4dfe3f78.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3103],{70156:(o,e,r)=>{r.d(e,{A:()=>t});const t=r(7552).createContext()},73451:(o,e,r)=>{r.d(e,{A:()=>A});var t=r(7552),a=r(93878),s=r(70799),l=r(70156),n=r(51148),b=r(4785),d=r(20255),u=r(69500);const c=(0,n.Ay)("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:(o,e)=>e.root})({display:"table-row-group"}),i={variant:"body"},y="tbody",A=t.forwardRef((function(o,e){const r=(0,b.b)({props:o,name:"MuiTableBody"}),{className:t,component:n=y,...A}=r,p={...r,component:n},w=(o=>{const{classes:e}=o;return(0,s.A)({root:["root"]},d.b,e)})(p);return(0,u.jsx)(l.A.Provider,{value:i,children:(0,u.jsx)(c,{className:(0,a.A)(w.root,t),as:n,ref:e,role:n===y?null:"rowgroup",ownerState:p,...A})})}))},3103:(o,e,r)=>{r.r(e),r.d(e,{default:()=>t.A,getTableBodyUtilityClass:()=>a.b,tableBodyClasses:()=>a.A});var t=r(73451),a=r(20255)},20255:(o,e,r)=>{r.d(e,{A:()=>l,b:()=>s});var t=r(33761),a=r(85693);function s(o){return(0,a.Ay)("MuiTableBody",o)}const l=(0,t.A)("MuiTableBody",["root"])}}]);
+//# sourceMappingURL=3103.4dfe3f78.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3103.4dfe3f78.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3103.4dfe3f78.chunk.js","mappings":"0IASA,Q,QAJsC,e,6HCMtC,MASMA,GAAgB,QAAO,QAAS,CACpCC,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHzB,CAInB,CACDC,QAAS,oBAELC,EAAY,CAChBC,QAAS,QAELC,EAAmB,QAuDzB,EAtD+B,cAAiB,SAAmBC,EAASC,GAC1E,MAAMR,GAAQ,OAAgB,CAC5BA,MAAOO,EACPV,KAAM,kBAEF,UACJY,EAAS,UACTC,EAAYJ,KACTK,GACDX,EACEY,EAAa,IACdZ,EACHU,aAEIG,EAlCkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZV,KAAM,CAAC,SAEoB,IAA0BW,EAAQ,EA2B/CC,CAAkBF,GAClC,OAAoB,SAAK,IAAiBG,SAAU,CAClDC,MAAOZ,EACPa,UAAuB,SAAKrB,EAAe,CACzCa,WAAW,OAAKI,EAAQX,KAAMO,GAC9BS,GAAIR,EACJF,IAAKA,EACLW,KAAMT,IAAcJ,EAAmB,KAAO,WAC9CM,WAAYA,KACTD,KAGT,G,yMCvDO,SAASS,EAAyBtB,GACvC,OAAO,QAAqB,eAAgBA,EAC9C,CACA,MACA,GADyB,OAAuB,eAAgB,CAAC,Q","sources":["../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableBody/TableBody.js","../../../node_modules/@mui/material/TableBody/tableBodyClasses.js"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableBodyUtilityClass } from \"./tableBodyClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = styled('tbody', {\n  name: 'MuiTableBody',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-row-group'\n});\nconst tablelvl2 = {\n  variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/React.forwardRef(function TableBody(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableBody'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableBodyRoot, {\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableBody;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableBodyUtilityClass(slot) {\n  return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;"],"names":["TableBodyRoot","name","slot","overridesResolver","props","styles","root","display","tablelvl2","variant","defaultComponent","inProps","ref","className","component","other","ownerState","classes","useUtilityClasses","Provider","value","children","as","role","getTableBodyUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3106.e1981605.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3106],{23106:(e,o,t)=>{t.r(o),t.d(o,{default:()=>u});var a=t(7552),r=t(68446),n=t(29499),l=t(36715),s=t(33371),i=t(33248),c=t(58507),d=t(5401),p=t(49823),m=t(66395);const u=(0,r.observer)((function({model:e,handleClose:o}){const[t,r]=(0,a.useState)(!1);return a.createElement(p.Dialog,{open:!0,onClose:o,title:"Set color"},a.createElement(n.A,null,a.createElement(l.A,null,"Select either an overall color, or the positive/negative colors. Note that density renderers only work properly with positive/negative colors"),a.createElement(s.A,{checked:!t,onClick:()=>{r(!1)},control:a.createElement(i.A,null),label:"Overall color"}),a.createElement(s.A,{checked:t,onClick:()=>{r(!0)},control:a.createElement(i.A,null),label:"Positive/negative color"}),t?a.createElement(a.Fragment,null,a.createElement(l.A,null,"Positive color"),a.createElement(m.sk,{color:e.posColor||"black",onChange:o=>{e.setPosColor(o),e.setColor(void 0)}}),a.createElement(l.A,null,"Negative color"),a.createElement(m.sk,{color:e.negColor||"black",onChange:o=>{e.setNegColor(o),e.setColor(void 0)}})):a.createElement(a.Fragment,null,a.createElement(l.A,null,"Overall color"),a.createElement(m.sk,{color:e.color||"black",onChange:o=>{e.setColor(o)}}))),a.createElement(c.A,null,a.createElement(d.A,{onClick:()=>{e.setPosColor(void 0),e.setNegColor(void 0),e.setColor(void 0)},color:"secondary",variant:"contained"},"Restore default"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:()=>{o()}},"Submit")))}))},33248:(e,o,t)=>{t.d(o,{A:()=>x});var a=t(7552),r=t(93878),n=t(70799),l=t(72639),s=t(15110),i=t(74893),c=t(69500);const d=(0,i.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),p=(0,i.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var m=t(55270),u=t(51148),v=t(60129);const h=(0,u.Ay)("span",{shouldForwardProp:m.A})({position:"relative",display:"flex"}),A=(0,u.Ay)(d)({transform:"scale(1)"}),b=(0,u.Ay)(p)((0,v.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),C=function(e){const{checked:o=!1,classes:t={},fontSize:a}=e,r={...e,checked:o};return(0,c.jsxs)(h,{className:t.root,ownerState:r,children:[(0,c.jsx)(A,{fontSize:a,className:t.background,ownerState:r}),(0,c.jsx)(b,{fontSize:a,className:t.dot,ownerState:r})]})};var k=t(15622),g=t(4402),f=t(33960),y=t(39006),S=t(38127),E=t(58520),z=t(4785);const w=(0,u.Ay)(s.A,{shouldForwardProp:e=>(0,m.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:t}=e;return[o.root,"medium"!==t.size&&o[`size${(0,k.A)(t.size)}`],o[`color${(0,k.A)(t.color)}`]]}})((0,v.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${S.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,l.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,E.A)()).map((([o])=>({props:{color:o,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[o].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,l.X4)(e.palette[o].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,E.A)()).map((([o])=>({props:{color:o,disabled:!1},style:{[`&.${S.A.checked}`]:{color:(e.vars||e).palette[o].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),R=(0,c.jsx)(C,{checked:!0}),j=(0,c.jsx)(C,{}),x=a.forwardRef((function(e,o){const t=(0,z.b)({props:e,name:"MuiRadio"}),{checked:l,checkedIcon:s=R,color:i="primary",icon:d=j,name:p,onChange:m,size:u="medium",className:v,disabled:h,disableRipple:A=!1,...b}=t,C=(0,f.A)();let E=h;C&&void 0===E&&(E=C.disabled),E??=!1;const x={...t,disabled:E,disableRipple:A,color:i,size:u},$=(e=>{const{classes:o,color:t,size:a}=e,r={root:["root",`color${(0,k.A)(t)}`,"medium"!==a&&`size${(0,k.A)(a)}`]};return{...o,...(0,n.A)(r,S.q,o)}})(x),N=(0,y.A)();let O=l;const P=(0,g.A)(m,N&&N.onChange);let M=p;var F,_;return N&&(void 0===O&&(F=N.value,O="object"==typeof(_=t.value)&&null!==_?F===_:String(F)===String(_)),void 0===M&&(M=N.name)),(0,c.jsx)(w,{type:"radio",icon:a.cloneElement(d,{fontSize:j.props.fontSize??u}),checkedIcon:a.cloneElement(s,{fontSize:R.props.fontSize??u}),disabled:E,ownerState:x,classes:$,name:M,checked:O,onChange:P,ref:o,className:(0,r.A)($.root,v),...b})}))},38127:(e,o,t)=>{t.d(o,{A:()=>l,q:()=>n});var a=t(33761),r=t(85693);function n(e){return(0,r.Ay)("MuiRadio",e)}const l=(0,a.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},76258:(e,o,t)=>{t.d(o,{A:()=>a});const a=t(7552).createContext(void 0)},39006:(e,o,t)=>{t.d(o,{A:()=>n});var a=t(7552),r=t(76258);function n(){return a.useContext(r.A)}}}]);
+//# sourceMappingURL=3106.e1981605.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3106.e1981605.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3106.e1981605.chunk.js","mappings":"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","sources":["../../../plugins/wiggle/src/LinearWiggleDisplay/components/SetColorDialog.tsx","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  FormControlLabel,\n  Radio,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { ColorPicker } from '@jbrowse/core/ui/ColorPicker'\n\nconst SetColorDialog = observer(function SetColorDialog({\n  model,\n  handleClose,\n}: {\n  model: {\n    color?: string\n    posColor?: string\n    negColor?: string\n    setColor: (arg?: string) => void\n    setPosColor: (arg?: string) => void\n    setNegColor: (arg?: string) => void\n  }\n  handleClose: () => void\n}) {\n  const [posneg, setPosNeg] = useState(false)\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set color\">\n      <DialogContent>\n        <Typography>\n          Select either an overall color, or the positive/negative colors. Note\n          that density renderers only work properly with positive/negative\n          colors\n        </Typography>\n        <FormControlLabel\n          checked={!posneg}\n          onClick={() => {\n            setPosNeg(false)\n          }}\n          control={<Radio />}\n          label=\"Overall color\"\n        />\n        <FormControlLabel\n          checked={posneg}\n          onClick={() => {\n            setPosNeg(true)\n          }}\n          control={<Radio />}\n          label=\"Positive/negative color\"\n        />\n\n        {posneg ? (\n          <>\n            <Typography>Positive color</Typography>\n            <ColorPicker\n              color={model.posColor || 'black'}\n              onChange={event => {\n                model.setPosColor(event)\n                model.setColor(undefined)\n              }}\n            />\n            <Typography>Negative color</Typography>\n\n            <ColorPicker\n              color={model.negColor || 'black'}\n              onChange={event => {\n                model.setNegColor(event)\n                model.setColor(undefined)\n              }}\n            />\n          </>\n        ) : (\n          <>\n            <Typography>Overall color</Typography>\n            <ColorPicker\n              color={model.color || 'black'}\n              onChange={event => {\n                model.setColor(event)\n              }}\n            />\n          </>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            model.setPosColor(undefined)\n            model.setNegColor(undefined)\n            model.setColor(undefined)\n          }}\n          color=\"secondary\"\n          variant=\"contained\"\n        >\n          Restore default\n        </Button>\n\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SetColorDialog\n","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}"],"names":["observer","model","handleClose","posneg","setPosNeg","useState","React","Dialog","open","onClose","title","DialogContent","Typography","FormControlLabel","checked","onClick","control","Radio","label","ColorPicker","color","posColor","onChange","event","setPosColor","setColor","undefined","negColor","setNegColor","DialogActions","Button","variant","type","createSvgIcon","d","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","theme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","props","style","easeOut","classes","fontSize","ownerState","className","root","children","background","dot","RadioRoot","SwitchBase","prop","name","slot","overridesResolver","styles","size","capitalize","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","Object","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","inProps","ref","checkedProp","checkedIcon","icon","nameProp","onChangeProp","disabledProp","other","muiFormControl","useFormControl","slots","composeClasses","useUtilityClasses","radioGroup","useRadioGroup","createChainedFunction","a","b","value","String","clsx","getRadioUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3109.3173f682.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3109],{63109:t=>{!function(){"use strict";var e,r,i,n,s;function a(t,e){var r,i=Object.keys(e);for(r=0;r<i.length;r++)t=t.replace(new RegExp("\\{"+i[r]+"\\}","gi"),e[i[r]]);return t}function o(t){var e,r;if(!t)throw new Error("cannot create a random attribute name for an undefined object");e="";do{for(e="",r=0;r<12;r++)e+="ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"[Math.floor(51*Math.random())]}while(t[e]);return e}function h(t){var e={alphabetic:"alphabetic",hanging:"hanging",top:"text-before-edge",bottom:"text-after-edge",middle:"central"};return e[t]||e.alphabetic}s=function(t,e){var r,i,n,s={};for(t=t.split(","),e=e||10,r=0;r<t.length;r+=2)i="&"+t[r+1]+";",n=parseInt(t[r],e),s[i]="&#"+n+";";return s["\\xa0"]="&#160;",s}("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32),e={strokeStyle:{svgAttr:"stroke",canvas:"#000000",svg:"none",apply:"stroke"},fillStyle:{svgAttr:"fill",canvas:"#000000",svg:null,apply:"fill"},lineCap:{svgAttr:"stroke-linecap",canvas:"butt",svg:"butt",apply:"stroke"},lineJoin:{svgAttr:"stroke-linejoin",canvas:"miter",svg:"miter",apply:"stroke"},miterLimit:{svgAttr:"stroke-miterlimit",canvas:10,svg:4,apply:"stroke"},lineWidth:{svgAttr:"stroke-width",canvas:1,svg:1,apply:"stroke"},globalAlpha:{svgAttr:"opacity",canvas:1,svg:1,apply:"fill stroke"},font:{canvas:"10px sans-serif"},shadowColor:{canvas:"#000000"},shadowOffsetX:{canvas:0},shadowOffsetY:{canvas:0},shadowBlur:{canvas:0},textAlign:{canvas:"start"},textBaseline:{canvas:"alphabetic"}},i=function(t,e){this.__root=t,this.__ctx=e},i.prototype.addColorStop=function(t,e){var r,i=this.__ctx.__createElement("stop");i.setAttribute("offset",t),-1!==e.indexOf("rgba")?(r=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?\.?\d*)\s*\)/gi.exec(e),i.setAttribute("stop-color",a("rgb({r},{g},{b})",{r:r[1],g:r[2],b:r[3]})),i.setAttribute("stop-opacity",r[4])):i.setAttribute("stop-color",e),this.__root.appendChild(i)},n=function(t,e){this.__root=t,this.__ctx=e},r=function(t){var e,i={width:500,height:500,enableMirroring:!1};if(arguments.length>1?((e=i).width=arguments[0],e.height=arguments[1]):e=t||i,!(this instanceof r))return new r(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,this.canvas=this,this.__document=e.document||document,this.__canvas=this.__document.createElement("canvas"),this.__ctx=this.__canvas.getContext("2d"),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS("http://www.w3.org/2000/svg","svg"),this.__root.setAttribute("version",1.1),this.__root.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.__root.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),this.__root.setAttribute("width",this.width),this.__root.setAttribute("height",this.height),this.__ids={},this.__defs=this.__document.createElementNS("http://www.w3.org/2000/svg","defs"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS("http://www.w3.org/2000/svg","g"),this.__root.appendChild(this.__currentElement)},r.prototype.__createElement=function(t,e,r){void 0===e&&(e={});var i,n,s=this.__document.createElementNS("http://www.w3.org/2000/svg",t),a=Object.keys(e);for(r&&(s.setAttribute("fill","none"),s.setAttribute("stroke","none")),i=0;i<a.length;i++)n=a[i],s.setAttribute(n,e[n]);return s},r.prototype.__setDefaultStyles=function(){var t,r,i=Object.keys(e);for(t=0;t<i.length;t++)this[r=i[t]]=e[r].canvas},r.prototype.__applyStyleState=function(t){var e,r,i=Object.keys(t);for(e=0;e<i.length;e++)this[r=i[e]]=t[r]},r.prototype.__getStyleState=function(){var t,r,i={},n=Object.keys(e);for(t=0;t<n.length;t++)i[r=n[t]]=this[r];return i},r.prototype.__applyStyleToCurrentElement=function(t){var r,s,o,h,l,c=Object.keys(e);for(r=0;r<c.length;r++)if(s=e[c[r]],o=this[c[r]],s.apply)if(-1!==s.apply.indexOf("fill")&&o instanceof n){if(o.__ctx)for(;o.__ctx.__defs.childNodes.length;)h=o.__ctx.__defs.childNodes[0].getAttribute("id"),this.__ids[h]=h,this.__defs.appendChild(o.__ctx.__defs.childNodes[0]);this.__currentElement.setAttribute("fill",a("url(#{id})",{id:o.__root.getAttribute("id")}))}else-1!==s.apply.indexOf("fill")&&o instanceof i?this.__currentElement.setAttribute("fill",a("url(#{id})",{id:o.__root.getAttribute("id")})):-1!==s.apply.indexOf(t)&&s.svg!==o&&("stroke"!==s.svgAttr&&"fill"!==s.svgAttr||-1===o.indexOf("rgba")?this.__currentElement.setAttribute(s.svgAttr,o):(l=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?\.?\d*)\s*\)/gi.exec(o),this.__currentElement.setAttribute(s.svgAttr,a("rgb({r},{g},{b})",{r:l[1],g:l[2],b:l[3]})),this.__currentElement.setAttribute(s.svgAttr+"-opacity",l[4])))},r.prototype.__closestGroupOrSvg=function(t){return"g"===(t=t||this.__currentElement).nodeName||"svg"===t.nodeName?t:this.__closestGroupOrSvg(t.parentNode)},r.prototype.getSerializedSvg=function(t){var e,r,i,n,a,o=(new XMLSerializer).serializeToString(this.__root);if(/xmlns="http:\/\/www\.w3\.org\/2000\/svg".+xmlns="http:\/\/www\.w3\.org\/2000\/svg/gi.test(o)&&(o=o.replace('xmlns="http://www.w3.org/2000/svg','xmlns:xlink="http://www.w3.org/1999/xlink')),t)for(e=Object.keys(s),r=0;r<e.length;r++)i=e[r],n=s[i],(a=new RegExp(i,"gi")).test(o)&&(o=o.replace(a,n));return o},r.prototype.getSvg=function(){return this.__root},r.prototype.save=function(){var t=this.__createElement("g"),e=this.__closestGroupOrSvg();this.__groupStack.push(e),e.appendChild(t),this.__currentElement=t,this.__stack.push(this.__getStyleState())},r.prototype.restore=function(){this.__currentElement=this.__groupStack.pop();var t=this.__stack.pop();this.__applyStyleState(t)},r.prototype.__addTransform=function(t){var e=this.__closestGroupOrSvg();if(e.childNodes.length>0){var r=this.__createElement("g");e.appendChild(r),this.__currentElement=r}var i=this.__currentElement.getAttribute("transform");i?i+=" ":i="",i+=t,this.__currentElement.setAttribute("transform",i)},r.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(a("scale({x},{y})",{x:t,y:e}))},r.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(a("rotate({angle},{cx},{cy})",{angle:e,cx:0,cy:0}))},r.prototype.translate=function(t,e){this.__addTransform(a("translate({x},{y})",{x:t,y:e}))},r.prototype.transform=function(t,e,r,i,n,s){this.__addTransform(a("matrix({a},{b},{c},{d},{e},{f})",{a:t,b:e,c:r,d:i,e:n,f:s}))},r.prototype.beginPath=function(){var t;this.__currentDefaultPath="",this.__currentPosition={},t=this.__createElement("path",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},r.prototype.__applyCurrentDefaultPath=function(){if("path"!==this.__currentElement.nodeName)throw new Error("Attempted to apply path command to node "+this.__currentElement.nodeName);var t=this.__currentDefaultPath;this.__currentElement.setAttribute("d",t)},r.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=" ",this.__currentDefaultPath+=t},r.prototype.moveTo=function(t,e){"path"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(a("M {x} {y}",{x:t,y:e}))},r.prototype.closePath=function(){this.__addPathCommand("Z")},r.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},this.__currentDefaultPath.indexOf("M")>-1?this.__addPathCommand(a("L {x} {y}",{x:t,y:e})):this.__addPathCommand(a("M {x} {y}",{x:t,y:e}))},r.prototype.bezierCurveTo=function(t,e,r,i,n,s){this.__currentPosition={x:n,y:s},this.__addPathCommand(a("C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}",{cp1x:t,cp1y:e,cp2x:r,cp2y:i,x:n,y:s}))},r.prototype.quadraticCurveTo=function(t,e,r,i){this.__currentPosition={x:r,y:i},this.__addPathCommand(a("Q {cpx} {cpy} {x} {y}",{cpx:t,cpy:e,x:r,y:i}))};var l=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};r.prototype.arcTo=function(t,e,r,i,n){var s=this.__currentPosition&&this.__currentPosition.x,a=this.__currentPosition&&this.__currentPosition.y;if(void 0!==s&&void 0!==a){if(n<0)throw new Error("IndexSizeError: The radius provided ("+n+") is negative.");if(s===t&&a===e||t===r&&e===i||0===n)this.lineTo(t,e);else{var o=l([s-t,a-e]),h=l([r-t,i-e]);if(o[0]*h[1]!=o[1]*h[0]){var c=o[0]*h[0]+o[1]*h[1],p=Math.acos(Math.abs(c)),_=l([o[0]+h[0],o[1]+h[1]]),u=n/Math.sin(p/2),d=t+u*_[0],g=e+u*_[1],m=[-o[1],o[0]],f=[h[1],-h[0]],y=function(t){var e=t[0];return t[1]>=0?Math.acos(e):-Math.acos(e)},v=y(m),w=y(f);this.lineTo(d+m[0]*n,g+m[1]*n),this.arc(d,g,n,v,w)}else this.lineTo(t,e)}}},r.prototype.stroke=function(){"path"===this.__currentElement.nodeName&&this.__currentElement.setAttribute("paint-order","fill stroke markers"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement("stroke")},r.prototype.fill=function(){"path"===this.__currentElement.nodeName&&this.__currentElement.setAttribute("paint-order","stroke fill markers"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement("fill")},r.prototype.rect=function(t,e,r,i){"path"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+r,e),this.lineTo(t+r,e+i),this.lineTo(t,e+i),this.lineTo(t,e),this.closePath()},r.prototype.fillRect=function(t,e,r,i){var n;n=this.__createElement("rect",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement("fill")},r.prototype.strokeRect=function(t,e,r,i){var n;n=this.__createElement("rect",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement("stroke")},r.prototype.clearRect=function(t,e,r,i){var n,s=this.__closestGroupOrSvg();n=this.__createElement("rect",{x:t,y:e,width:r,height:i,fill:"#FFFFFF"},!0),s.appendChild(n)},r.prototype.createLinearGradient=function(t,e,r,n){var s=this.__createElement("linearGradient",{id:o(this.__ids),x1:t+"px",x2:r+"px",y1:e+"px",y2:n+"px",gradientUnits:"userSpaceOnUse"},!1);return this.__defs.appendChild(s),new i(s,this)},r.prototype.createRadialGradient=function(t,e,r,n,s,a){var h=this.__createElement("radialGradient",{id:o(this.__ids),cx:n+"px",cy:s+"px",r:a+"px",fx:t+"px",fy:e+"px",gradientUnits:"userSpaceOnUse"},!1);return this.__defs.appendChild(h),new i(h,this)},r.prototype.__parseFont=function(){var t=/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-,\"\sa-z]+?)\s*$/i.exec(this.font),e={style:t[1]||"normal",size:t[4]||"10px",family:t[6]||"sans-serif",weight:t[3]||"normal",decoration:t[2]||"normal",href:null};return"underline"===this.__fontUnderline&&(e.decoration="underline"),this.__fontHref&&(e.href=this.__fontHref),e},r.prototype.__wrapTextLink=function(t,e){if(t.href){var r=this.__createElement("a");return r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t.href),r.appendChild(e),r}return e},r.prototype.__applyText=function(t,e,r,i){var n,s,a=this.__parseFont(),o=this.__closestGroupOrSvg(),l=this.__createElement("text",{"font-family":a.family,"font-size":a.size,"font-style":a.style,"font-weight":a.weight,"text-decoration":a.decoration,x:e,y:r,"text-anchor":(n=this.textAlign,s={left:"start",right:"end",center:"middle",start:"start",end:"end"},s[n]||s.start),"dominant-baseline":h(this.textBaseline)},!0);l.appendChild(this.__document.createTextNode(t)),this.__currentElement=l,this.__applyStyleToCurrentElement(i),o.appendChild(this.__wrapTextLink(a,l))},r.prototype.fillText=function(t,e,r){this.__applyText(t,e,r,"fill")},r.prototype.strokeText=function(t,e,r){this.__applyText(t,e,r,"stroke")},r.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},r.prototype.arc=function(t,e,r,i,n,s){if(i!==n){(i%=2*Math.PI)==(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(s?-1:1))%(2*Math.PI));var o,h=t+r*Math.cos(n),l=e+r*Math.sin(n),c=t+r*Math.cos(i),p=e+r*Math.sin(i),_=s?0:1,u=n-i;u<0&&(u+=2*Math.PI),o=s?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(c,p),this.__addPathCommand(a("A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}",{rx:r,ry:r,xAxisRotation:0,largeArcFlag:o,sweepFlag:_,endX:h,endY:l})),this.__currentPosition={x:h,y:l}}},r.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement("clipPath"),r=o(this.__ids),i=this.__createElement("g");t.removeChild(this.__currentElement),e.setAttribute("id",r),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute("clip-path",a("url(#{id})",{id:r})),t.appendChild(i),this.__currentElement=i},r.prototype.drawImage=function(){var t,e,i,n,s,a,o,h,l,c,p,_,u,d,g=Array.prototype.slice.call(arguments),m=g[0],f=0,y=0;if(3===g.length)t=g[1],e=g[2],i=s=m.width,n=a=m.height;else if(5===g.length)t=g[1],e=g[2],i=g[3],n=g[4],s=m.width,a=m.height;else{if(9!==g.length)throw new Error("Inavlid number of arguments passed to drawImage: "+arguments.length);f=g[1],y=g[2],s=g[3],a=g[4],t=g[5],e=g[6],i=g[7],n=g[8]}if(o=this.__closestGroupOrSvg(),p=this.__currentElement,m instanceof r){for(l=(h=m.getSvg()).childNodes[0];l.childNodes.length;)d=l.childNodes[0].getAttribute("id"),this.__ids[d]=d,this.__defs.appendChild(l.childNodes[0]);c=h.childNodes[1],o.appendChild(c),this.__currentElement=c,this.translate(t,e),this.__currentElement=p}else"CANVAS"!==m.nodeName&&"IMG"!==m.nodeName||((_=this.__createElement("image")).setAttribute("width",i),_.setAttribute("height",n),_.setAttribute("preserveAspectRatio","none"),(f||y||s!==m.width||a!==m.height)&&((u=this.__document.createElement("canvas")).width=i,u.height=n,u.getContext("2d").drawImage(m,f,y,s,a,0,0,i,n),m=u),_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","CANVAS"===m.nodeName?m.toDataURL():m.getAttribute("src")),o.appendChild(_),this.__currentElement=_,this.translate(t,e),this.__currentElement=p)},r.prototype.createPattern=function(t,e){var i,s=this.__document.createElementNS("http://www.w3.org/2000/svg","pattern"),a=o(this.__ids);return s.setAttribute("id",a),s.setAttribute("width",t.width),s.setAttribute("height",t.height),"CANVAS"===t.nodeName||"IMG"===t.nodeName?((i=this.__document.createElementNS("http://www.w3.org/2000/svg","image")).setAttribute("width",t.width),i.setAttribute("height",t.height),i.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","CANVAS"===t.nodeName?t.toDataURL():t.getAttribute("src")),s.appendChild(i),this.__defs.appendChild(s)):t instanceof r&&(s.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(s)),new n(s,this)},r.prototype.drawFocusRing=function(){},r.prototype.createImageData=function(){},r.prototype.getImageData=function(){},r.prototype.putImageData=function(){},r.prototype.globalCompositeOperation=function(){},r.prototype.setTransform=function(){},"object"==typeof window&&(window.C2S=r),"object"==typeof t.exports&&(t.exports=r)}()}}]);
+//# sourceMappingURL=3109.3173f682.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3109.3173f682.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3109.3173f682.chunk.js","mappings":"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","sources":["../../../node_modules/canvas2svg/canvas2svg.js"],"sourcesContent":["/*!!\n *  Canvas 2 Svg v1.0.15\n *  A low level canvas to SVG converter. Uses a mock canvas context to build an SVG document.\n *\n *  Licensed under the MIT license:\n *  http://www.opensource.org/licenses/mit-license.php\n *\n *  Author:\n *  Kerry Liu\n *\n *  Copyright (c) 2014 Gliffy Inc.\n */\n\n;(function() {\n    \"use strict\";\n\n    var STYLES, ctx, CanvasGradient, CanvasPattern, namedEntities;\n\n    //helper function to format a string\n    function format(str, args) {\n        var keys = Object.keys(args), i;\n        for (i=0; i<keys.length; i++) {\n            str = str.replace(new RegExp(\"\\\\{\" + keys[i] + \"\\\\}\", \"gi\"), args[keys[i]]);\n        }\n        return str;\n    }\n\n    //helper function that generates a random string\n    function randomString(holder) {\n        var chars, randomstring, i;\n        if (!holder) {\n            throw new Error(\"cannot create a random attribute name for an undefined object\");\n        }\n        chars = \"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";\n        randomstring = \"\";\n        do {\n            randomstring = \"\";\n            for (i = 0; i < 12; i++) {\n                randomstring += chars[Math.floor(Math.random() * chars.length)];\n            }\n        } while (holder[randomstring]);\n        return randomstring;\n    }\n\n    //helper function to map named to numbered entities\n    function createNamedToNumberedLookup(items, radix) {\n        var i, entity, lookup = {}, base10, base16;\n        items = items.split(',');\n        radix = radix || 10;\n        // Map from named to numbered entities.\n        for (i = 0; i < items.length; i += 2) {\n            entity = '&' + items[i + 1] + ';';\n            base10 = parseInt(items[i], radix);\n            lookup[entity] = '&#'+base10+';';\n        }\n        //FF and IE need to create a regex from hex values ie &nbsp; == \\xa0\n        lookup[\"\\\\xa0\"] = '&#160;';\n        return lookup;\n    }\n\n    //helper function to map canvas-textAlign to svg-textAnchor\n    function getTextAnchor(textAlign) {\n        //TODO: support rtl languages\n        var mapping = {\"left\":\"start\", \"right\":\"end\", \"center\":\"middle\", \"start\":\"start\", \"end\":\"end\"};\n        return mapping[textAlign] || mapping.start;\n    }\n\n    //helper function to map canvas-textBaseline to svg-dominantBaseline\n    function getDominantBaseline(textBaseline) {\n        //INFO: not supported in all browsers\n        var mapping = {\"alphabetic\": \"alphabetic\", \"hanging\": \"hanging\", \"top\":\"text-before-edge\", \"bottom\":\"text-after-edge\", \"middle\":\"central\"};\n        return mapping[textBaseline] || mapping.alphabetic;\n    }\n\n    // Unpack entities lookup where the numbers are in radix 32 to reduce the size\n    // entity mapping courtesy of tinymce\n    namedEntities = createNamedToNumberedLookup(\n        '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +\n            '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +\n            '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +\n            '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +\n            '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +\n            '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +\n            '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +\n            '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +\n            '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +\n            '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +\n            'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +\n            'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +\n            't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +\n            'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +\n            'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +\n            '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +\n            '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +\n            '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +\n            '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +\n            '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +\n            'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +\n            'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +\n            'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +\n            '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +\n            '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n\n\n    //Some basic mappings for attributes and default values.\n    STYLES = {\n        \"strokeStyle\":{\n            svgAttr : \"stroke\", //corresponding svg attribute\n            canvas : \"#000000\", //canvas default\n            svg : \"none\",       //svg default\n            apply : \"stroke\"    //apply on stroke() or fill()\n        },\n        \"fillStyle\":{\n            svgAttr : \"fill\",\n            canvas : \"#000000\",\n            svg : null, //svg default is black, but we need to special case this to handle canvas stroke without fill\n            apply : \"fill\"\n        },\n        \"lineCap\":{\n            svgAttr : \"stroke-linecap\",\n            canvas : \"butt\",\n            svg : \"butt\",\n            apply : \"stroke\"\n        },\n        \"lineJoin\":{\n            svgAttr : \"stroke-linejoin\",\n            canvas : \"miter\",\n            svg : \"miter\",\n            apply : \"stroke\"\n        },\n        \"miterLimit\":{\n            svgAttr : \"stroke-miterlimit\",\n            canvas : 10,\n            svg : 4,\n            apply : \"stroke\"\n        },\n        \"lineWidth\":{\n            svgAttr : \"stroke-width\",\n            canvas : 1,\n            svg : 1,\n            apply : \"stroke\"\n        },\n        \"globalAlpha\": {\n            svgAttr : \"opacity\",\n            canvas : 1,\n            svg : 1,\n            apply : \"fill stroke\"\n        },\n        \"font\":{\n            //font converts to multiple svg attributes, there is custom logic for this\n            canvas : \"10px sans-serif\"\n        },\n        \"shadowColor\":{\n            canvas : \"#000000\"\n        },\n        \"shadowOffsetX\":{\n            canvas : 0\n        },\n        \"shadowOffsetY\":{\n            canvas : 0\n        },\n        \"shadowBlur\":{\n            canvas : 0\n        },\n        \"textAlign\":{\n            canvas : \"start\"\n        },\n        \"textBaseline\":{\n            canvas : \"alphabetic\"\n        }\n    };\n\n    /**\n     *\n     * @param gradientNode - reference to the gradient\n     * @constructor\n     */\n    CanvasGradient = function(gradientNode, ctx) {\n        this.__root = gradientNode;\n        this.__ctx = ctx;\n    };\n\n    /**\n     * Adds a color stop to the gradient root\n     */\n    CanvasGradient.prototype.addColorStop = function(offset, color) {\n        var stop = this.__ctx.__createElement(\"stop\"), regex, matches;\n        stop.setAttribute(\"offset\", offset);\n        if(color.indexOf(\"rgba\") !== -1) {\n            //separate alpha value, since webkit can't handle it\n            regex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n            matches = regex.exec(color);\n            stop.setAttribute(\"stop-color\", format(\"rgb({r},{g},{b})\", {r:matches[1], g:matches[2], b:matches[3]}));\n            stop.setAttribute(\"stop-opacity\", matches[4]);\n        } else {\n            stop.setAttribute(\"stop-color\", color);\n        }\n        this.__root.appendChild(stop);\n    };\n\n    CanvasPattern = function(pattern, ctx) {\n        this.__root = pattern;\n        this.__ctx = ctx;\n    };\n\n    /**\n     * The mock canvas context\n     * @param o - options include:\n     * width - width of your canvas (defaults to 500)\n     * height - height of your canvas (defaults to 500)\n     * enableMirroring - enables canvas mirroring (get image data) (defaults to false)\n     * document - the document object (defaults to the current document)\n     */\n    ctx = function(o) {\n\n        var defaultOptions = { width:500, height:500, enableMirroring : false}, options;\n\n        //keep support for this way of calling C2S: new C2S(width,height)\n        if(arguments.length > 1) {\n            options = defaultOptions;\n            options.width = arguments[0];\n            options.height = arguments[1];\n        } else if( !o ) {\n            options = defaultOptions;\n        } else {\n            options = o;\n        }\n\n        if(!(this instanceof ctx)) {\n            //did someone call this without new?\n            return new ctx(options);\n        }\n\n        //setup options\n        this.width = options.width || defaultOptions.width;\n        this.height = options.height || defaultOptions.height;\n        this.enableMirroring = options.enableMirroring !== undefined ? options.enableMirroring : defaultOptions.enableMirroring;\n\n        this.canvas = this;   ///point back to this instance!\n        this.__document = options.document || document;\n        this.__canvas = this.__document.createElement(\"canvas\");\n        this.__ctx = this.__canvas.getContext(\"2d\");\n\n        this.__setDefaultStyles();\n        this.__stack = [this.__getStyleState()];\n        this.__groupStack = [];\n\n        //the root svg element\n        this.__root = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        this.__root.setAttribute(\"version\", 1.1);\n        this.__root.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n        this.__root.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n        this.__root.setAttribute(\"width\", this.width);\n        this.__root.setAttribute(\"height\", this.height);\n\n        //make sure we don't generate the same ids in defs\n        this.__ids = {};\n\n        //defs tag\n        this.__defs = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n        this.__root.appendChild(this.__defs);\n\n        //also add a group child. the svg element can't use the transform attribute\n        this.__currentElement = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n        this.__root.appendChild(this.__currentElement);\n    };\n\n\n    /**\n     * Creates the specified svg element\n     * @private\n     */\n    ctx.prototype.__createElement = function (elementName, properties, resetFill) {\n        if (typeof properties === \"undefined\") {\n            properties = {};\n        }\n\n        var element = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", elementName),\n            keys = Object.keys(properties), i, key;\n        if(resetFill) {\n            //if fill or stroke is not specified, the svg element should not display. By default SVG's fill is black.\n            element.setAttribute(\"fill\", \"none\");\n            element.setAttribute(\"stroke\", \"none\");\n        }\n        for(i=0; i<keys.length; i++) {\n            key = keys[i];\n            element.setAttribute(key, properties[key]);\n        }\n        return element;\n    };\n\n    /**\n     * Applies default canvas styles to the context\n     * @private\n     */\n    ctx.prototype.__setDefaultStyles = function() {\n        //default 2d canvas context properties see:http://www.w3.org/TR/2dcontext/\n        var keys = Object.keys(STYLES), i, key;\n        for(i=0; i<keys.length; i++) {\n            key = keys[i];\n            this[key] = STYLES[key].canvas;\n        }\n    };\n\n    /**\n     * Applies styles on restore\n     * @param styleState\n     * @private\n     */\n    ctx.prototype.__applyStyleState = function(styleState) {\n        var keys = Object.keys(styleState), i, key;\n        for(i=0; i<keys.length; i++) {\n            key = keys[i];\n            this[key] = styleState[key];\n        }\n    };\n\n    /**\n     * Gets the current style state\n     * @return {Object}\n     * @private\n     */\n    ctx.prototype.__getStyleState = function() {\n        var i, styleState = {}, keys = Object.keys(STYLES), key;\n        for(i=0; i<keys.length; i++) {\n            key = keys[i];\n            styleState[key] = this[key];\n        }\n        return styleState;\n    };\n\n    /**\n     * Apples the current styles to the current SVG element. On \"ctx.fill\" or \"ctx.stroke\"\n     * @param type\n     * @private\n     */\n    ctx.prototype.__applyStyleToCurrentElement = function(type) {\n        var keys = Object.keys(STYLES), i, style, value, id, regex, matches;\n        for(i=0; i<keys.length; i++) {\n            style = STYLES[keys[i]];\n            value = this[keys[i]];\n            if(style.apply) {\n                //is this a gradient or pattern?\n                if(style.apply.indexOf(\"fill\")!==-1 && value instanceof CanvasPattern) {\n                    //pattern\n                    if(value.__ctx) {\n                        //copy over defs\n                        while(value.__ctx.__defs.childNodes.length) {\n                            id = value.__ctx.__defs.childNodes[0].getAttribute(\"id\");\n                            this.__ids[id] = id;\n                            this.__defs.appendChild(value.__ctx.__defs.childNodes[0]);\n                        }\n                    }\n                    this.__currentElement.setAttribute(\"fill\", format(\"url(#{id})\", {id:value.__root.getAttribute(\"id\")}));\n                }\n                else if(style.apply.indexOf(\"fill\")!==-1 && value instanceof CanvasGradient) {\n                    //gradient\n                    this.__currentElement.setAttribute(\"fill\", format(\"url(#{id})\", {id:value.__root.getAttribute(\"id\")}));\n                } else if(style.apply.indexOf(type)!==-1 && style.svg !== value) {\n                    if((style.svgAttr === \"stroke\" || style.svgAttr === \"fill\") && value.indexOf(\"rgba\") !== -1) {\n                        //separate alpha value, since illustrator can't handle it\n                        regex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n                        matches = regex.exec(value);\n                        this.__currentElement.setAttribute(style.svgAttr, format(\"rgb({r},{g},{b})\", {r:matches[1], g:matches[2], b:matches[3]}));\n                        this.__currentElement.setAttribute(style.svgAttr+\"-opacity\", matches[4]);\n                    } else {\n                        //otherwise only update attribute if right type, and not svg default\n                        this.__currentElement.setAttribute(style.svgAttr, value);\n                    }\n                }\n            }\n        }\n\n    };\n\n    /**\n     * Will return the closest group or svg node. May return the current element.\n     * @private\n     */\n    ctx.prototype.__closestGroupOrSvg = function(node) {\n        node = node || this.__currentElement;\n        if(node.nodeName === \"g\" || node.nodeName === \"svg\") {\n            return node;\n        } else {\n            return this.__closestGroupOrSvg(node.parentNode);\n        }\n    };\n\n    /**\n     * Returns the serialized value of the svg so far\n     * @param fixNamedEntities - Standalone SVG doesn't support named entities, which document.createTextNode encodes.\n     *                           If true, we attempt to find all named entities and encode it as a numeric entity.\n     * @return serialized svg\n     */\n    ctx.prototype.getSerializedSvg = function(fixNamedEntities) {\n        var serialized = new XMLSerializer().serializeToString(this.__root),\n            keys, i, key, value, regexp, xmlns;\n\n        //IE search for a duplicate xmnls because they didn't implement setAttributeNS correctly\n        xmlns = /xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg\".+xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg/gi;\n        if(xmlns.test(serialized)) {\n            serialized = serialized.replace('xmlns=\"http://www.w3.org/2000/svg','xmlns:xlink=\"http://www.w3.org/1999/xlink');\n        }\n\n        if(fixNamedEntities) {\n            keys = Object.keys(namedEntities);\n            //loop over each named entity and replace with the proper equivalent.\n            for(i=0; i<keys.length; i++) {\n                key = keys[i];\n                value = namedEntities[key];\n                regexp = new RegExp(key, \"gi\");\n                if(regexp.test(serialized)) {\n                    serialized = serialized.replace(regexp, value);\n                }\n            }\n        }\n\n        return serialized;\n    };\n\n\n    /**\n     * Returns the root svg\n     * @return\n     */\n    ctx.prototype.getSvg = function() {\n        return this.__root;\n    };\n    /**\n     * Will generate a group tag.\n     */\n    ctx.prototype.save = function() {\n        var group = this.__createElement(\"g\"), parent = this.__closestGroupOrSvg();\n        this.__groupStack.push(parent);\n        parent.appendChild(group);\n        this.__currentElement = group;\n        this.__stack.push(this.__getStyleState());\n    };\n    /**\n     * Sets current element to parent, or just root if already root\n     */\n    ctx.prototype.restore = function(){\n        this.__currentElement = this.__groupStack.pop();\n        var state = this.__stack.pop();\n        this.__applyStyleState(state);\n\n    };\n\n    /**\n     * Helper method to add transform\n     * @private\n     */\n    ctx.prototype.__addTransform = function(t) {\n\n        //if the current element has siblings, add another group\n        var parent = this.__closestGroupOrSvg();\n        if(parent.childNodes.length > 0) {\n            var group = this.__createElement(\"g\");\n            parent.appendChild(group);\n            this.__currentElement = group;\n        }\n\n        var transform = this.__currentElement.getAttribute(\"transform\");\n        if(transform) {\n            transform += \" \";\n        } else {\n            transform = \"\";\n        }\n        transform += t;\n        this.__currentElement.setAttribute(\"transform\", transform);\n    };\n\n    /**\n     *  scales the current element\n     */\n    ctx.prototype.scale = function(x, y) {\n        if(y === undefined) {\n            y = x;\n        }\n        this.__addTransform(format(\"scale({x},{y})\", {x:x, y:y}));\n    };\n\n    /**\n     * rotates the current element\n     */\n    ctx.prototype.rotate = function(angle){\n        var degrees = (angle * 180 / Math.PI);\n        this.__addTransform(format(\"rotate({angle},{cx},{cy})\", {angle:degrees, cx:0, cy:0}));\n    };\n\n    /**\n     * translates the current element\n     */\n    ctx.prototype.translate = function(x, y){\n        this.__addTransform(format(\"translate({x},{y})\", {x:x,y:y}));\n    };\n\n    /**\n     * applies a transform to the current element\n     */\n    ctx.prototype.transform = function(a, b, c, d, e, f){\n        this.__addTransform(format(\"matrix({a},{b},{c},{d},{e},{f})\", {a:a, b:b, c:c, d:d, e:e, f:f}));\n    };\n\n    /**\n     * Create a new Path Element\n     */\n    ctx.prototype.beginPath = function(){\n        var path, parent;\n\n        // Note that there is only one current default path, it is not part of the drawing state.\n        // See also: https://html.spec.whatwg.org/multipage/scripting.html#current-default-path\n        this.__currentDefaultPath = \"\";\n        this.__currentPosition = {};\n\n        path = this.__createElement(\"path\", {}, true);\n        parent = this.__closestGroupOrSvg();\n        parent.appendChild(path);\n        this.__currentElement = path;\n    };\n\n    /**\n     * Helper function to apply currentDefaultPath to current path element\n     * @private\n     */\n    ctx.prototype.__applyCurrentDefaultPath = function() {\n        if(this.__currentElement.nodeName === \"path\") {\n            var d = this.__currentDefaultPath;\n            this.__currentElement.setAttribute(\"d\", d);\n        } else {\n            throw new Error(\"Attempted to apply path command to node \" + this.__currentElement.nodeName);\n        }\n    };\n\n    /**\n     * Helper function to add path command\n     * @private\n     */\n    ctx.prototype.__addPathCommand = function(command){\n        this.__currentDefaultPath += \" \";\n        this.__currentDefaultPath += command;\n    };\n\n    /**\n     * Adds the move command to the current path element,\n     * if the currentPathElement is not empty create a new path element\n     */\n    ctx.prototype.moveTo = function(x,y){\n        if(this.__currentElement.nodeName !== \"path\") {\n            this.beginPath();\n        }\n\n        // creates a new subpath with the given point\n        this.__currentPosition = {x: x, y: y};\n        this.__addPathCommand(format(\"M {x} {y}\", {x:x, y:y}));\n    };\n\n    /**\n     * Closes the current path\n     */\n    ctx.prototype.closePath = function(){\n        this.__addPathCommand(\"Z\");\n    };\n\n    /**\n     * Adds a line to command\n     */\n    ctx.prototype.lineTo = function(x, y){\n        this.__currentPosition = {x: x, y: y};\n        if (this.__currentDefaultPath.indexOf('M') > -1) {\n            this.__addPathCommand(format(\"L {x} {y}\", {x:x, y:y}));\n        } else {\n            this.__addPathCommand(format(\"M {x} {y}\", {x:x, y:y}));\n        }\n    };\n\n    /**\n     * Add a bezier command\n     */\n    ctx.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\n        this.__currentPosition = {x: x, y: y};\n        this.__addPathCommand(format(\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\",\n            {cp1x:cp1x, cp1y:cp1y, cp2x:cp2x, cp2y:cp2y, x:x, y:y}));\n    };\n\n    /**\n     * Adds a quadratic curve to command\n     */\n    ctx.prototype.quadraticCurveTo = function(cpx, cpy, x, y){\n        this.__currentPosition = {x: x, y: y};\n        this.__addPathCommand(format(\"Q {cpx} {cpy} {x} {y}\", {cpx:cpx, cpy:cpy, x:x, y:y}));\n    };\n\n\n    /**\n     * Return a new normalized vector of given vector\n     */\n    var normalize = function(vector) {\n        var len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n        return [vector[0] / len, vector[1] / len];\n    };\n\n    /**\n     * Adds the arcTo to the current path\n     *\n     * @see http://www.w3.org/TR/2015/WD-2dcontext-20150514/#dom-context-2d-arcto\n     */\n    ctx.prototype.arcTo = function(x1, y1, x2, y2, radius) {\n        // Let the point (x0, y0) be the last point in the subpath.\n        var x0 = this.__currentPosition && this.__currentPosition.x;\n        var y0 = this.__currentPosition && this.__currentPosition.y;\n\n        // First ensure there is a subpath for (x1, y1).\n        if (typeof x0 == \"undefined\" || typeof y0 == \"undefined\") {\n            return;\n        }\n\n        // Negative values for radius must cause the implementation to throw an IndexSizeError exception.\n        if (radius < 0) {\n            throw new Error(\"IndexSizeError: The radius provided (\" + radius + \") is negative.\");\n        }\n\n        // If the point (x0, y0) is equal to the point (x1, y1),\n        // or if the point (x1, y1) is equal to the point (x2, y2),\n        // or if the radius radius is zero,\n        // then the method must add the point (x1, y1) to the subpath,\n        // and connect that point to the previous point (x0, y0) by a straight line.\n        if (((x0 === x1) && (y0 === y1))\n            || ((x1 === x2) && (y1 === y2))\n            || (radius === 0)) {\n            this.lineTo(x1, y1);\n            return;\n        }\n\n        // Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line,\n        // then the method must add the point (x1, y1) to the subpath,\n        // and connect that point to the previous point (x0, y0) by a straight line.\n        var unit_vec_p1_p0 = normalize([x0 - x1, y0 - y1]);\n        var unit_vec_p1_p2 = normalize([x2 - x1, y2 - y1]);\n        if (unit_vec_p1_p0[0] * unit_vec_p1_p2[1] === unit_vec_p1_p0[1] * unit_vec_p1_p2[0]) {\n            this.lineTo(x1, y1);\n            return;\n        }\n\n        // Otherwise, let The Arc be the shortest arc given by circumference of the circle that has radius radius,\n        // and that has one point tangent to the half-infinite line that crosses the point (x0, y0) and ends at the point (x1, y1),\n        // and that has a different point tangent to the half-infinite line that ends at the point (x1, y1), and crosses the point (x2, y2).\n        // The points at which this circle touches these two lines are called the start and end tangent points respectively.\n\n        // note that both vectors are unit vectors, so the length is 1\n        var cos = (unit_vec_p1_p0[0] * unit_vec_p1_p2[0] + unit_vec_p1_p0[1] * unit_vec_p1_p2[1]);\n        var theta = Math.acos(Math.abs(cos));\n\n        // Calculate origin\n        var unit_vec_p1_origin = normalize([\n            unit_vec_p1_p0[0] + unit_vec_p1_p2[0],\n            unit_vec_p1_p0[1] + unit_vec_p1_p2[1]\n        ]);\n        var len_p1_origin = radius / Math.sin(theta / 2);\n        var x = x1 + len_p1_origin * unit_vec_p1_origin[0];\n        var y = y1 + len_p1_origin * unit_vec_p1_origin[1];\n\n        // Calculate start angle and end angle\n        // rotate 90deg clockwise (note that y axis points to its down)\n        var unit_vec_origin_start_tangent = [\n            -unit_vec_p1_p0[1],\n            unit_vec_p1_p0[0]\n        ];\n        // rotate 90deg counter clockwise (note that y axis points to its down)\n        var unit_vec_origin_end_tangent = [\n            unit_vec_p1_p2[1],\n            -unit_vec_p1_p2[0]\n        ];\n        var getAngle = function(vector) {\n            // get angle (clockwise) between vector and (1, 0)\n            var x = vector[0];\n            var y = vector[1];\n            if (y >= 0) { // note that y axis points to its down\n                return Math.acos(x);\n            } else {\n                return -Math.acos(x);\n            }\n        };\n        var startAngle = getAngle(unit_vec_origin_start_tangent);\n        var endAngle = getAngle(unit_vec_origin_end_tangent);\n\n        // Connect the point (x0, y0) to the start tangent point by a straight line\n        this.lineTo(x + unit_vec_origin_start_tangent[0] * radius,\n                    y + unit_vec_origin_start_tangent[1] * radius);\n\n        // Connect the start tangent point to the end tangent point by arc\n        // and adding the end tangent point to the subpath.\n        this.arc(x, y, radius, startAngle, endAngle);\n    };\n\n    /**\n     * Sets the stroke property on the current element\n     */\n    ctx.prototype.stroke = function(){\n        if(this.__currentElement.nodeName === \"path\") {\n            this.__currentElement.setAttribute(\"paint-order\", \"fill stroke markers\");\n        }\n        this.__applyCurrentDefaultPath();\n        this.__applyStyleToCurrentElement(\"stroke\");\n    };\n\n    /**\n     * Sets fill properties on the current element\n     */\n    ctx.prototype.fill = function(){\n        if(this.__currentElement.nodeName === \"path\") {\n            this.__currentElement.setAttribute(\"paint-order\", \"stroke fill markers\");\n        }\n        this.__applyCurrentDefaultPath();\n        this.__applyStyleToCurrentElement(\"fill\");\n    };\n\n    /**\n     *  Adds a rectangle to the path.\n     */\n    ctx.prototype.rect = function(x, y, width, height){\n        if(this.__currentElement.nodeName !== \"path\") {\n            this.beginPath();\n        }\n        this.moveTo(x, y);\n        this.lineTo(x+width, y);\n        this.lineTo(x+width, y+height);\n        this.lineTo(x, y+height);\n        this.lineTo(x, y);\n        this.closePath();\n    };\n\n\n    /**\n     * adds a rectangle element\n     */\n    ctx.prototype.fillRect = function(x, y, width, height){\n        var rect, parent;\n        rect = this.__createElement(\"rect\", {\n            x : x,\n            y : y,\n            width : width,\n            height : height\n        }, true);\n        parent = this.__closestGroupOrSvg();\n        parent.appendChild(rect);\n        this.__currentElement = rect;\n        this.__applyStyleToCurrentElement(\"fill\");\n    };\n\n    /**\n     * Draws a rectangle with no fill\n     * @param x\n     * @param y\n     * @param width\n     * @param height\n     */\n    ctx.prototype.strokeRect = function(x, y, width, height){\n        var rect, parent;\n        rect = this.__createElement(\"rect\", {\n            x : x,\n            y : y,\n            width : width,\n            height : height\n        }, true);\n        parent = this.__closestGroupOrSvg();\n        parent.appendChild(rect);\n        this.__currentElement = rect;\n        this.__applyStyleToCurrentElement(\"stroke\");\n    };\n\n\n    /**\n     * \"Clears\" a canvas by just drawing a white rectangle in the current group.\n     */\n    ctx.prototype.clearRect = function(x, y, width, height) {\n        var rect, parent = this.__closestGroupOrSvg();\n        rect = this.__createElement(\"rect\", {\n            x : x,\n            y : y,\n            width : width,\n            height : height,\n            fill : \"#FFFFFF\"\n        }, true);\n        parent.appendChild(rect);\n    };\n\n    /**\n     * Adds a linear gradient to a defs tag.\n     * Returns a canvas gradient object that has a reference to it's parent def\n     */\n    ctx.prototype.createLinearGradient = function(x1, y1, x2, y2){\n        var grad = this.__createElement(\"linearGradient\", {\n            id : randomString(this.__ids),\n            x1 : x1+\"px\",\n            x2 : x2+\"px\",\n            y1 : y1+\"px\",\n            y2 : y2+\"px\",\n            \"gradientUnits\" : \"userSpaceOnUse\"\n        }, false);\n        this.__defs.appendChild(grad);\n        return new CanvasGradient(grad, this);\n    };\n\n    /**\n     * Adds a radial gradient to a defs tag.\n     * Returns a canvas gradient object that has a reference to it's parent def\n     */\n    ctx.prototype.createRadialGradient = function(x0, y0, r0, x1, y1, r1){\n        var grad = this.__createElement(\"radialGradient\", {\n            id : randomString(this.__ids),\n            cx : x1+\"px\",\n            cy : y1+\"px\",\n            r  : r1+\"px\",\n            fx : x0+\"px\",\n            fy : y0+\"px\",\n            \"gradientUnits\" : \"userSpaceOnUse\"\n        }, false);\n        this.__defs.appendChild(grad);\n        return new CanvasGradient(grad, this);\n\n    };\n\n    /**\n     * Parses the font string and returns svg mapping\n     * @private\n     */\n    ctx.prototype.__parseFont = function() {\n        var regex = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\\"\\sa-z]+?)\\s*$/i;\n        var fontPart = regex.exec( this.font );\n        var data = {\n            style : fontPart[1] || 'normal',\n            size : fontPart[4] || '10px',\n            family : fontPart[6] || 'sans-serif',\n            weight: fontPart[3] || 'normal',\n            decoration : fontPart[2] || 'normal',\n            href : null\n        };\n\n        //canvas doesn't support underline natively, but we can pass this attribute\n        if(this.__fontUnderline === \"underline\") {\n            data.decoration = \"underline\";\n        }\n\n        //canvas also doesn't support linking, but we can pass this as well\n        if(this.__fontHref) {\n            data.href = this.__fontHref;\n        }\n\n        return data;\n    };\n\n    /**\n     * Helper to link text fragments\n     * @param font\n     * @param element\n     * @return {*}\n     * @private\n     */\n    ctx.prototype.__wrapTextLink = function(font, element) {\n        if(font.href) {\n            var a = this.__createElement(\"a\");\n            a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", font.href);\n            a.appendChild(element);\n            return a;\n        }\n        return element;\n    };\n\n    /**\n     * Fills or strokes text\n     * @param text\n     * @param x\n     * @param y\n     * @param action - stroke or fill\n     * @private\n     */\n    ctx.prototype.__applyText = function(text, x, y, action) {\n        var font = this.__parseFont(),\n            parent = this.__closestGroupOrSvg(),\n            textElement = this.__createElement(\"text\", {\n                \"font-family\" : font.family,\n                \"font-size\" : font.size,\n                \"font-style\" : font.style,\n                \"font-weight\" : font.weight,\n                \"text-decoration\" : font.decoration,\n                \"x\" : x,\n                \"y\" : y,\n                \"text-anchor\": getTextAnchor(this.textAlign),\n                \"dominant-baseline\": getDominantBaseline(this.textBaseline)\n            }, true);\n\n        textElement.appendChild(this.__document.createTextNode(text));\n        this.__currentElement = textElement;\n        this.__applyStyleToCurrentElement(action);\n        parent.appendChild(this.__wrapTextLink(font,textElement));\n    };\n\n    /**\n     * Creates a text element\n     * @param text\n     * @param x\n     * @param y\n     */\n    ctx.prototype.fillText = function(text, x, y){\n        this.__applyText(text, x, y, \"fill\");\n    };\n\n    /**\n     * Strokes text\n     * @param text\n     * @param x\n     * @param y\n     */\n    ctx.prototype.strokeText = function(text, x, y){\n        this.__applyText(text, x, y, \"stroke\");\n    };\n\n    /**\n     * No need to implement this for svg.\n     * @param text\n     * @return {TextMetrics}\n     */\n    ctx.prototype.measureText = function(text){\n        this.__ctx.font = this.font;\n        return this.__ctx.measureText(text);\n    };\n\n    /**\n     *  Arc command!\n     */\n    ctx.prototype.arc = function(x, y, radius, startAngle, endAngle, counterClockwise) {\n        // in canvas no circle is drawn if no angle is provided.\n        if (startAngle === endAngle) {\n            return;\n        }\n        startAngle = startAngle % (2*Math.PI);\n        endAngle = endAngle % (2*Math.PI);\n        if(startAngle === endAngle) {\n            //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle)\n            endAngle = ((endAngle + (2*Math.PI)) - 0.001 * (counterClockwise ? -1 : 1)) % (2*Math.PI);\n        }\n        var endX = x+radius*Math.cos(endAngle),\n            endY = y+radius*Math.sin(endAngle),\n            startX = x+radius*Math.cos(startAngle),\n            startY = y+radius*Math.sin(startAngle),\n            sweepFlag = counterClockwise ? 0 : 1,\n            largeArcFlag = 0,\n            diff = endAngle - startAngle;\n\n        // https://github.com/gliffy/canvas2svg/issues/4\n        if(diff < 0) {\n            diff += 2*Math.PI;\n        }\n\n        if(counterClockwise) {\n            largeArcFlag = diff > Math.PI ? 0 : 1;\n        } else {\n            largeArcFlag = diff > Math.PI ? 1 : 0;\n        }\n\n        this.lineTo(startX, startY);\n        this.__addPathCommand(format(\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",\n            {rx:radius, ry:radius, xAxisRotation:0, largeArcFlag:largeArcFlag, sweepFlag:sweepFlag, endX:endX, endY:endY}));\n\n        this.__currentPosition = {x: endX, y: endY};\n    };\n\n    /**\n     * Generates a ClipPath from the clip command.\n     */\n    ctx.prototype.clip = function(){\n        var group = this.__closestGroupOrSvg(),\n            clipPath = this.__createElement(\"clipPath\"),\n            id =  randomString(this.__ids),\n            newGroup = this.__createElement(\"g\");\n\n        group.removeChild(this.__currentElement);\n        clipPath.setAttribute(\"id\", id);\n        clipPath.appendChild(this.__currentElement);\n\n        this.__defs.appendChild(clipPath);\n\n        //set the clip path to this group\n        group.setAttribute(\"clip-path\", format(\"url(#{id})\", {id:id}));\n\n        //clip paths can be scaled and transformed, we need to add another wrapper group to avoid later transformations\n        // to this path\n        group.appendChild(newGroup);\n\n        this.__currentElement = newGroup;\n\n    };\n\n    /**\n     * Draws a canvas, image or mock context to this canvas.\n     * Note that all svg dom manipulation uses node.childNodes rather than node.children for IE support.\n     * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage\n     */\n    ctx.prototype.drawImage = function(){\n        //convert arguments to a real array\n        var args = Array.prototype.slice.call(arguments),\n            image=args[0],\n            dx, dy, dw, dh, sx=0, sy=0, sw, sh, parent, svg, defs, group,\n            currentElement, svgImage, canvas, context, id;\n\n        if(args.length === 3) {\n            dx = args[1];\n            dy = args[2];\n            sw = image.width;\n            sh = image.height;\n            dw = sw;\n            dh = sh;\n        } else if(args.length === 5) {\n            dx = args[1];\n            dy = args[2];\n            dw = args[3];\n            dh = args[4];\n            sw = image.width;\n            sh = image.height;\n        } else if(args.length === 9) {\n            sx = args[1];\n            sy = args[2];\n            sw = args[3];\n            sh = args[4];\n            dx = args[5];\n            dy = args[6];\n            dw = args[7];\n            dh = args[8];\n        } else {\n            throw new Error(\"Inavlid number of arguments passed to drawImage: \" + arguments.length);\n        }\n\n        parent = this.__closestGroupOrSvg();\n        currentElement = this.__currentElement;\n\n        if(image instanceof ctx) {\n            //canvas2svg mock canvas context. In the future we may want to clone nodes instead.\n            //also I'm currently ignoring dw, dh, sw, sh, sx, sy for a mock context.\n            svg = image.getSvg();\n            defs = svg.childNodes[0];\n            while(defs.childNodes.length) {\n                id = defs.childNodes[0].getAttribute(\"id\");\n                this.__ids[id] = id;\n                this.__defs.appendChild(defs.childNodes[0]);\n            }\n            group = svg.childNodes[1];\n            parent.appendChild(group);\n            this.__currentElement = group;\n            this.translate(dx, dy);\n            this.__currentElement = currentElement;\n        } else if(image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n            //canvas or image\n            svgImage = this.__createElement(\"image\");\n            svgImage.setAttribute(\"width\", dw);\n            svgImage.setAttribute(\"height\", dh);\n            svgImage.setAttribute(\"preserveAspectRatio\", \"none\");\n\n            if(sx || sy || sw !== image.width || sh !== image.height) {\n                //crop the image using a temporary canvas\n                canvas = this.__document.createElement(\"canvas\");\n                canvas.width = dw;\n                canvas.height = dh;\n                context = canvas.getContext(\"2d\");\n                context.drawImage(image, sx, sy, sw, sh, 0, 0, dw, dh);\n                image = canvas;\n            }\n\n            svgImage.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\",\n                image.nodeName === \"CANVAS\" ? image.toDataURL() : image.getAttribute(\"src\"));\n            parent.appendChild(svgImage);\n            this.__currentElement = svgImage;\n            this.translate(dx, dy);\n            this.__currentElement = currentElement;\n        }\n    };\n\n    /**\n     * Generates a pattern tag\n     */\n    ctx.prototype.createPattern = function(image, repetition){\n        var pattern = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"pattern\"), id = randomString(this.__ids),\n            img;\n        pattern.setAttribute(\"id\", id);\n        pattern.setAttribute(\"width\", image.width);\n        pattern.setAttribute(\"height\", image.height);\n        if(image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n            img = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n            img.setAttribute(\"width\", image.width);\n            img.setAttribute(\"height\", image.height);\n            img.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\",\n                image.nodeName === \"CANVAS\" ? image.toDataURL() : image.getAttribute(\"src\"));\n            pattern.appendChild(img);\n            this.__defs.appendChild(pattern);\n        } else if(image instanceof ctx) {\n            pattern.appendChild(image.__root.childNodes[1]);\n            this.__defs.appendChild(pattern);\n        }\n        return new CanvasPattern(pattern, this);\n    };\n\n    /**\n     * Not yet implemented\n     */\n    ctx.prototype.drawFocusRing = function(){};\n    ctx.prototype.createImageData = function(){};\n    ctx.prototype.getImageData = function(){};\n    ctx.prototype.putImageData = function(){};\n    ctx.prototype.globalCompositeOperation = function(){};\n    ctx.prototype.setTransform = function(){};\n\n    //add options for alternative namespace\n    if (typeof window === \"object\") {\n        window.C2S = ctx;\n    }\n\n    // CommonJS/Browserify\n    if (typeof module === \"object\" && typeof module.exports === \"object\") {\n        module.exports = ctx;\n    }\n\n}());\n"],"names":["STYLES","ctx","CanvasGradient","CanvasPattern","namedEntities","format","str","args","i","keys","Object","length","replace","RegExp","randomString","holder","randomstring","Error","Math","floor","chars","random","getDominantBaseline","textBaseline","mapping","alphabetic","items","radix","entity","base10","lookup","split","parseInt","createNamedToNumberedLookup","svgAttr","canvas","svg","apply","gradientNode","this","__root","__ctx","prototype","addColorStop","offset","color","matches","stop","__createElement","setAttribute","indexOf","exec","r","g","b","appendChild","pattern","o","options","defaultOptions","width","height","enableMirroring","arguments","undefined","__document","document","__canvas","createElement","getContext","__setDefaultStyles","__stack","__getStyleState","__groupStack","createElementNS","setAttributeNS","__ids","__defs","__currentElement","elementName","properties","resetFill","key","element","__applyStyleState","styleState","__applyStyleToCurrentElement","type","style","value","id","childNodes","getAttribute","__closestGroupOrSvg","node","nodeName","parentNode","getSerializedSvg","fixNamedEntities","regexp","serialized","XMLSerializer","serializeToString","test","getSvg","save","group","parent","push","restore","pop","state","__addTransform","t","transform","scale","x","y","rotate","angle","degrees","PI","cx","cy","translate","a","c","d","e","f","beginPath","path","__currentDefaultPath","__currentPosition","__applyCurrentDefaultPath","__addPathCommand","command","moveTo","closePath","lineTo","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","quadraticCurveTo","cpx","cpy","normalize","vector","len","sqrt","arcTo","x1","y1","x2","y2","radius","x0","y0","unit_vec_p1_p0","unit_vec_p1_p2","cos","theta","acos","abs","unit_vec_p1_origin","len_p1_origin","sin","unit_vec_origin_start_tangent","unit_vec_origin_end_tangent","getAngle","startAngle","endAngle","arc","stroke","fill","rect","fillRect","strokeRect","clearRect","createLinearGradient","grad","createRadialGradient","r0","r1","fx","fy","__parseFont","fontPart","font","data","size","family","weight","decoration","href","__fontUnderline","__fontHref","__wrapTextLink","__applyText","text","action","textAlign","textElement","start","createTextNode","fillText","strokeText","measureText","counterClockwise","largeArcFlag","endX","endY","startX","startY","sweepFlag","diff","rx","ry","xAxisRotation","clip","clipPath","newGroup","removeChild","drawImage","dx","dy","dw","dh","sw","sh","defs","currentElement","svgImage","Array","slice","call","image","sx","sy","toDataURL","createPattern","repetition","img","drawFocusRing","createImageData","getImageData","putImageData","globalCompositeOperation","setTransform","window","C2S","module","exports"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/311.2c004784.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[311],{83803:(e,t,r)=>{r.d(t,{A:()=>u});var a=r(7552),n=r(68446),l=r(99546),i=r(80208),o=r(48231);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},s.apply(null,arguments)}const c=(0,r(75785).n9)()({rulerLabel:{fontSize:"0.8rem",fontWeight:500,lineHeight:1.6,letterSpacing:"0.0075em"}});function m(e,t,r,a){e.flipped&&([r,a]=[a,r]);const n=e.bpToXY(r,t),l=e.bpToXY(a,t);return["M",...n,"A",t,t,"0",Math.abs(a-r)/e.bpPerRadian>Math.PI?"1":"0","1",...l].join(" ")}const d=(0,n.observer)((function({model:e,slice:t,region:r}){const n=(0,o.A)(),{radiusPx:i}=e,c=i+1,{endRadians:m,startRadians:d}=t,h=(0,l.polarToCartesian)(c,d),u=(0,l.polarToCartesian)(c,m),p=(m-d)*c,f=m-d>Math.PI?"1":"0",b=(m+d)/2,w=`[${Number(r.regions.length).toLocaleString()}]`;return a.createElement(a.Fragment,null,a.createElement(g,{text:w,view:e,maxWidthPx:p,radians:b,radiusPx:c,title:`${w} more regions`,color:n.palette.text.primary}),a.createElement("path",s({d:["M",...h,"A",c,c,"0",f,"1",...u].join(" ")},(0,l.getStrokeProps)(n.palette.text.secondary),{strokeWidth:2,strokeDasharray:"2,2",fill:"none"})))})),g=(0,n.observer)((function({view:e,text:t,maxWidthPx:r,radians:n,radiusPx:i,title:o,color:m}){const{classes:d}=c(),g=(0,l.polarToCartesian)(i+5,n);return t?6.5*t.length<r?a.createElement("text",s({x:0,y:0,className:d.rulerLabel,textAnchor:"middle",dominantBaseline:"baseline",transform:`translate(${g}) rotate(${(0,l.radToDeg)(n)+90})`},(0,l.getFillProps)(m)),t,a.createElement("title",null,o||t)):r>4?(0,l.radToDeg)(n+e.offsetRadians-Math.PI/2)>=180?a.createElement("text",{x:0,y:0,className:d.rulerLabel,textAnchor:"start",dominantBaseline:"middle",transform:`translate(${g}) rotate(${(0,l.radToDeg)(n)})`,fill:m},t,a.createElement("title",null,o||t)):a.createElement("text",{x:0,y:0,className:d.rulerLabel,textAnchor:"end",dominantBaseline:"middle",transform:`translate(${g}) rotate(${(0,l.radToDeg)(n)+180})`,fill:m},t,a.createElement("title",null,o||t)):null:null})),h=(0,n.observer)((function({model:e,slice:t,region:r}){const n=(0,o.A)(),{radiusPx:s}=e,{endRadians:c,startRadians:d}=t,h=(c+d)/2,u=(c-d)*s,p=(0,l.getSession)(e).assemblyManager.get(r.assemblyName);let f=p?p.getRefNameColor(r.refName):void 0;if(f)try{f=(0,i.makeContrasting)(f,n.palette.background.paper)}catch(e){f=n.palette.text.primary}else f=n.palette.text.primary;return a.createElement(a.Fragment,null,a.createElement(g,{text:r.refName,view:e,maxWidthPx:u,radians:h,radiusPx:s,color:f}),a.createElement("path",{d:m(t,s+1,r.start,r.end),stroke:f,strokeWidth:2,fill:"none"}))})),u=(0,n.observer)((function({model:e,slice:t}){return t.region.elided?a.createElement(d,{key:(0,l.assembleLocString)(t.region.regions[0]),model:e,region:t.region,slice:t}):a.createElement(h,{key:(0,l.assembleLocString)(t.region),region:t.region,model:e,slice:t})}))},60311:(e,t,r)=>{r.d(t,{renderToSvg:()=>g});var a=r(7552),n=r(20139),l=r(42489),i=r(99546),o=r(49823),s=r(36422),c=r(48231);function m({width:e,height:t,shift:r}){const n=(0,c.A)();return a.createElement("rect",{width:e+2*r,height:t,fill:(0,i.stripAlpha)(n.palette.background.default)})}var d=r(83803);async function g(e,t){await(0,l.when)((()=>e.initialized));const{themeName:r="default",Wrapper:c=({children:e})=>e}=t,g=(0,i.getSession)(e),h=g.allThemes?.()[r],{createRootFn:u}=(0,s.getRoot)(e),{width:p,tracks:f,height:b}=e,w=await Promise.all(f.map((async e=>{const r=e.displays[0];return await(0,l.when)((()=>void 0===r.ready||r.ready)),{track:e,result:await r.renderSvg({...t,theme:h})}}))),{staticSlices:x,offsetRadians:y,centerXY:E}=e,k=(0,i.radToDeg)(y);return(0,i.renderToStaticMarkup)(a.createElement(n.A,{theme:(0,o.createJBrowseTheme)(h)},a.createElement(c,null,a.createElement("svg",{width:p,height:b,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:[0,0,p+100,b].toString()},a.createElement(m,{width:p,height:b,shift:50}),a.createElement("g",{transform:`translate(${E}) rotate(${k})`},x.map(((t,r)=>a.createElement(d.A,{key:r,model:e,slice:t}))),w.map((({result:e},t)=>a.createElement(a.Fragment,{key:t},e))))))),u)}}}]);
+//# sourceMappingURL=311.2c004784.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/311.2c004784.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/311.2c004784.chunk.js","mappings":"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","sources":["../../../plugins/circular-view/src/CircularView/components/Ruler.tsx","../../../plugins/circular-view/src/CircularView/svgcomponents/SVGBackground.tsx","../../../plugins/circular-view/src/CircularView/svgcomponents/SVGCircularView.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  getSession,\n  polarToCartesian,\n  radToDeg,\n  assembleLocString,\n  getStrokeProps,\n  getFillProps,\n} from '@jbrowse/core/util'\nimport { makeContrasting } from '@jbrowse/core/util/color'\nimport { useTheme } from '@mui/material/styles'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport {\n  Slice,\n  SliceElidedRegion,\n  SliceNonElidedRegion,\n} from '../models/slices'\nimport { CircularViewModel } from '../models/model'\n\nconst useStyles = makeStyles()({\n  rulerLabel: {\n    fontSize: '0.8rem',\n    fontWeight: 500,\n    lineHeight: 1.6,\n    letterSpacing: '0.0075em',\n  },\n})\n\nfunction sliceArcPath(\n  slice: Slice,\n  radiusPx: number,\n  startBase: number,\n  endBase: number,\n) {\n  // A rx ry x-axis-rotation large-arc-flag sweep-flag x y\n  if (slice.flipped) {\n    ;[startBase, endBase] = [endBase, startBase]\n  }\n  const startXY = slice.bpToXY(startBase, radiusPx)\n  const endXY = slice.bpToXY(endBase, radiusPx)\n  const largeArc =\n    Math.abs(endBase - startBase) / slice.bpPerRadian > Math.PI ? '1' : '0'\n  const sweepFlag = '1'\n  return [\n    'M',\n    ...startXY,\n    'A',\n    radiusPx,\n    radiusPx,\n    '0',\n    largeArc,\n    sweepFlag,\n    ...endXY,\n  ].join(' ')\n}\n\nconst ElisionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx: modelRadiusPx } = model\n  const radiusPx = modelRadiusPx + 1\n  const { endRadians, startRadians } = slice\n  const startXY = polarToCartesian(radiusPx, startRadians)\n  const endXY = polarToCartesian(radiusPx, endRadians)\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const largeArc = endRadians - startRadians > Math.PI ? '1' : '0'\n  // TODO: draw the elision\n  const centerRadians = (endRadians + startRadians) / 2\n  const regionCount = `[${Number(region.regions.length).toLocaleString()}]`\n  return (\n    <>\n      <RulerLabel\n        text={regionCount}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        title={`${regionCount} more regions`}\n        color={theme.palette.text.primary}\n      />\n      <path\n        d={[\n          'M',\n          ...startXY,\n          'A',\n          radiusPx,\n          radiusPx,\n          '0',\n          largeArc,\n          '1',\n          ...endXY,\n        ].join(' ')}\n        {...getStrokeProps(theme.palette.text.secondary)}\n        strokeWidth={2}\n        strokeDasharray=\"2,2\"\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst RulerLabel = observer(function ({\n  view,\n  text,\n  maxWidthPx,\n  radians,\n  radiusPx,\n  title,\n  color,\n}: {\n  view: CircularViewModel\n  text: string\n  maxWidthPx: number\n  radiusPx: number\n  radians: number\n  title?: string\n  color: string\n}) {\n  const { classes } = useStyles()\n  const textXY = polarToCartesian(radiusPx + 5, radians)\n  if (!text) {\n    return null\n  }\n\n  if (text.length * 6.5 < maxWidthPx) {\n    // text is rotated parallel to the ruler arc\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"middle\"\n        dominantBaseline=\"baseline\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 90})`}\n        {...getFillProps(color)}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n  if (maxWidthPx > 4) {\n    // text is rotated perpendicular to the ruler arc\n    const overallRotation = radToDeg(radians + view.offsetRadians - Math.PI / 2)\n    if (overallRotation >= 180) {\n      return (\n        <text\n          x={0}\n          y={0}\n          className={classes.rulerLabel}\n          textAnchor=\"start\"\n          dominantBaseline=\"middle\"\n          transform={`translate(${textXY}) rotate(${radToDeg(radians)})`}\n          fill={color}\n        >\n          {text}\n          <title>{title || text}</title>\n        </text>\n      )\n    }\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"end\"\n        dominantBaseline=\"middle\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 180})`}\n        fill={color}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n\n  // if you get here there is no room for the text at all\n  return null\n})\n\nconst RegionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceNonElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx } = model\n  const { endRadians, startRadians } = slice\n  const centerRadians = (endRadians + startRadians) / 2\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const session = getSession(model)\n  const assembly = session.assemblyManager.get(region.assemblyName)\n  let color = assembly ? assembly.getRefNameColor(region.refName) : undefined\n  if (color) {\n    try {\n      color = makeContrasting(color, theme.palette.background.paper)\n    } catch (error) {\n      color = theme.palette.text.primary\n    }\n  } else {\n    color = theme.palette.text.primary\n  }\n\n  // TODO: slice flipping\n  return (\n    <>\n      <RulerLabel\n        text={region.refName}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        color={color}\n      />\n      <path\n        d={sliceArcPath(slice, radiusPx + 1, region.start, region.end)}\n        stroke={color}\n        strokeWidth={2}\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst Ruler = observer(function ({\n  model,\n  slice,\n}: {\n  model: CircularViewModel\n  slice: Slice\n}) {\n  return slice.region.elided ? (\n    <ElisionRulerArc\n      key={assembleLocString(slice.region.regions[0]!)}\n      model={model}\n      region={slice.region}\n      slice={slice}\n    />\n  ) : (\n    <RegionRulerArc\n      key={assembleLocString(slice.region)}\n      region={slice.region}\n      model={model}\n      slice={slice}\n    />\n  )\n})\n\nexport default Ruler\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n  shift,\n}: {\n  width: number\n  height: number\n  shift: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      width={width + shift * 2}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\nimport { ThemeProvider } from '@mui/material'\nimport { when } from 'mobx'\nimport { getSession, radToDeg, renderToStaticMarkup } from '@jbrowse/core/util'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getRoot } from 'mobx-state-tree'\n\n// locals\nimport { ExportSvgOptions, CircularViewModel } from '../models/model'\nimport SVGBackground from './SVGBackground'\nimport Ruler from '../components/Ruler'\n\ntype CGV = CircularViewModel\n\nexport async function renderToSvg(model: CGV, opts: ExportSvgOptions) {\n  await when(() => model.initialized)\n  const { themeName = 'default', Wrapper = ({ children }) => children } = opts\n  const session = getSession(model)\n  const theme = session.allThemes?.()[themeName]\n\n  const { createRootFn } = getRoot<any>(model)\n  const { width, tracks, height } = model\n  const shift = 50\n  const displayResults = await Promise.all(\n    tracks.map(async track => {\n      const display = track.displays[0]\n      await when(() => (display.ready !== undefined ? display.ready : true))\n      return { track, result: await display.renderSvg({ ...opts, theme }) }\n    }),\n  )\n\n  const { staticSlices, offsetRadians, centerXY } = model\n  const deg = radToDeg(offsetRadians)\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={createJBrowseTheme(theme)}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={height}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, width + shift * 2, height].toString()}\n        >\n          <SVGBackground width={width} height={height} shift={shift} />\n          <g transform={`translate(${centerXY}) rotate(${deg})`}>\n            {staticSlices.map((slice, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <Ruler key={i} model={model} slice={slice} />\n            ))}\n            {displayResults.map(({ result }, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <React.Fragment key={i}>{result}</React.Fragment>\n            ))}\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n"],"names":["useStyles","makeStyles","rulerLabel","fontSize","fontWeight","lineHeight","letterSpacing","sliceArcPath","slice","radiusPx","startBase","endBase","flipped","startXY","bpToXY","endXY","Math","abs","bpPerRadian","PI","join","ElisionRulerArc","observer","model","region","theme","useTheme","modelRadiusPx","endRadians","startRadians","polarToCartesian","widthPx","largeArc","centerRadians","regionCount","Number","regions","length","toLocaleString","React","RulerLabel","text","view","maxWidthPx","radians","title","color","palette","primary","_extends","d","getStrokeProps","secondary","strokeWidth","strokeDasharray","fill","classes","textXY","x","y","className","textAnchor","dominantBaseline","transform","radToDeg","getFillProps","offsetRadians","RegionRulerArc","assembly","getSession","assemblyManager","get","assemblyName","getRefNameColor","refName","undefined","makeContrasting","background","paper","error","start","end","stroke","elided","key","assembleLocString","SVGBackground","width","height","shift","stripAlpha","default","async","renderToSvg","opts","when","initialized","themeName","Wrapper","children","session","allThemes","createRootFn","getRoot","tracks","displayResults","Promise","all","map","display","track","displays","ready","result","renderSvg","staticSlices","centerXY","deg","renderToStaticMarkup","ThemeProvider","createJBrowseTheme","xmlns","xmlnsXlink","viewBox","toString","i","Ruler"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3116.fa0100fd.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3116],{93116:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});var a=t(7552),l=t(29499),r=t(99123),o=t(58507),i=t(5401),s=t(49823),c=t(32761),u=t(55252),h=t(58701),m=t(59773);function g({onConfirm:e,onCancel:n,reason:t}){return a.createElement(s.Dialog,{open:!0,maxWidth:"xl",title:"Warning"},a.createElement(l.A,null,a.createElement(h.A,{fontSize:"large"}),a.createElement(r.A,null,"This link contains a cross origin config that has the following unknown plugins:",a.createElement("ul",null,t.map((e=>a.createElement("li",{key:JSON.stringify(e)},(0,m.lc)(e))))),"Please ensure you trust the source of this link.")),a.createElement(o.A,null,a.createElement(i.A,{color:"primary",variant:"contained",onClick:()=>{e()}},"Yes, I trust it"),a.createElement(i.A,{color:"secondary",variant:"contained",onClick:()=>{n()}},"Cancel")))}function f({loader:e,handleClose:n}){const{sessionTriaged:t}=e;return t?a.createElement(g,{onConfirm:async()=>{const a=JSON.parse(JSON.stringify(t.snap));await e.fetchPlugins(a),e.setConfigSnapshot({...a,id:(0,c.Ak)()}),n()},onCancel:async()=>{await(0,u.A)(),n()},reason:t.reason}):null}},58701:(e,n,t)=>{t.d(n,{A:()=>r});var a=t(74893),l=t(69500);const r=(0,a.A)((0,l.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning")}}]);
+//# sourceMappingURL=3116.fa0100fd.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3116.fa0100fd.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3116.fa0100fd.chunk.js","mappings":"uQAkBA,SAASA,GAAoB,UAC3BC,EAAS,SACTC,EAAQ,OACRC,IAMA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,SAAS,KAAKC,MAAM,WAC/BJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAW,CAACC,SAAS,UACtBP,EAAAA,cAACQ,EAAAA,EAAiB,KAAC,mFAGjBR,EAAAA,cAAA,UACGD,EAAOU,KAAIC,GACVV,EAAAA,cAAA,MAAIW,IAAKC,KAAKC,UAAUH,KAAKI,EAAAA,EAAAA,IAAwBJ,OAEpD,qDAITV,EAAAA,cAACe,EAAAA,EAAa,KACZf,EAAAA,cAACgB,EAAAA,EAAM,CACLC,MAAM,UACNC,QAAQ,YACRC,QAASA,KACPtB,GAAW,GAEd,mBAGDG,EAAAA,cAACgB,EAAAA,EAAM,CACLC,MAAM,YACNC,QAAQ,YACRC,QAASA,KACPrB,GAAU,GAEb,WAMT,CAEe,SAASsB,GAAc,OACpCC,EAAM,YACNC,IAKA,MAAM,eAAEC,GAAmBF,EAC3B,OAAOE,EACLvB,EAAAA,cAACJ,EAAmB,CAClBC,UAAW2B,UACT,MAAMC,EAAUb,KAAKc,MAAMd,KAAKC,UAAUU,EAAeI,aACnDN,EAAOO,aAAaH,GAC1BJ,EAAOQ,kBAAkB,IAAKJ,EAASK,IAAIC,EAAAA,EAAAA,QAC3CT,GAAa,EAEfxB,SAAU0B,gBACFQ,EAAAA,EAAAA,KACNV,GAAa,EAEfvB,OAAQwB,EAAexB,SAEvB,IACN,C,6DCrFA,SAAe,QAA4B,SAAK,OAAQ,CACtDkC,EAAG,8CACD,U","sources":["components/ConfigWarningDialog.tsx","../../../node_modules/@mui/icons-material/esm/Warning.js"],"sourcesContent":["import React from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { nanoid } from '@jbrowse/core/util/nanoid'\nimport factoryReset from '../factoryReset'\nimport { SessionLoaderModel } from '../SessionLoader'\n\nimport WarningIcon from '@mui/icons-material/Warning'\nimport {\n  PluginDefinition,\n  pluginDescriptionString,\n} from '@jbrowse/core/PluginLoader'\n\nfunction ConfigWarningDialog({\n  onConfirm,\n  onCancel,\n  reason,\n}: {\n  onConfirm: () => void\n  onCancel: () => void\n  reason: PluginDefinition[]\n}) {\n  return (\n    <Dialog open maxWidth=\"xl\" title=\"Warning\">\n      <DialogContent>\n        <WarningIcon fontSize=\"large\" />\n        <DialogContentText>\n          This link contains a cross origin config that has the following\n          unknown plugins:\n          <ul>\n            {reason.map(r => (\n              <li key={JSON.stringify(r)}>{pluginDescriptionString(r)}</li>\n            ))}\n          </ul>\n          Please ensure you trust the source of this link.\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          color=\"primary\"\n          variant=\"contained\"\n          onClick={() => {\n            onConfirm()\n          }}\n        >\n          Yes, I trust it\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            onCancel()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n\nexport default function ConfigTriaged({\n  loader,\n  handleClose,\n}: {\n  loader: SessionLoaderModel\n  handleClose: () => void\n}) {\n  const { sessionTriaged } = loader\n  return sessionTriaged ? (\n    <ConfigWarningDialog\n      onConfirm={async () => {\n        const session = JSON.parse(JSON.stringify(sessionTriaged.snap))\n        await loader.fetchPlugins(session)\n        loader.setConfigSnapshot({ ...session, id: nanoid() })\n        handleClose()\n      }}\n      onCancel={async () => {\n        await factoryReset()\n        handleClose()\n      }}\n      reason={sessionTriaged.reason}\n    />\n  ) : null\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z\"\n}), 'Warning');"],"names":["ConfigWarningDialog","onConfirm","onCancel","reason","React","Dialog","open","maxWidth","title","DialogContent","WarningIcon","fontSize","DialogContentText","map","r","key","JSON","stringify","pluginDescriptionString","DialogActions","Button","color","variant","onClick","ConfigTriaged","loader","handleClose","sessionTriaged","async","session","parse","snap","fetchPlugins","setConfigSnapshot","id","nanoid","factoryReset","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3120.3940249f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3120],{59773:(e,t,n)=>{n.d(t,{Ay:()=>m,Cx:()=>c,Nz:()=>u,lc:()=>d,rE:()=>l});var r=n(45103),o=n.n(r),s=n(12678),a=n(2862),i=n(99546);function l(e){return(void 0!==e.umdUrl||void 0!==e.url||void 0!==e.umdLoc)&&void 0!==e.name}function c(e){return void 0!==e.esmUrl||void 0!==e.esmLoc}function u(e){return void 0!==e.cjsUrl}function d(e){return l(e)?`UMD plugin ${e.name}`:c(e)?`ESM plugin ${e.esmUrl||e.esmLoc.uri}`:u(e)?`CJS plugin ${e.cjsUrl}`:"unknown plugin"}class m{definitions=[];constructor(e=[],t){this.fetchESM=t?.fetchESM,this.fetchCJS=t?.fetchCJS,this.definitions=JSON.parse(JSON.stringify(e))}async loadCJSPlugin(e,t){const n=new URL(e.cjsUrl,t);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`Cannot load plugins using protocol "${n.protocol}"`);if(!this.fetchCJS)throw new Error("No fetchCJS callback provided");return this.fetchCJS(n.href)}async loadESMPlugin(e,t){const n="esmUrl"in e?new URL(e.esmUrl,t):new URL(e.esmLoc.uri,e.esmLoc.baseUri);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`cannot load plugins using protocol "${n.protocol}"`);if(!this.fetchESM)throw new Error("No ESM fetcher installed");const r=await this.fetchESM(n.href);if(!r)throw new Error(`Could not load ESM plugin: ${n}`);return r}async loadUMDPlugin(e,t){const n="url"in e?new URL(e.url,t):"umdUrl"in e?new URL(e.umdUrl,t):new URL(e.umdLoc.uri,e.umdLoc.baseUri);if("http:"!==n.protocol&&"https:"!==n.protocol)throw new Error(`cannot load plugins using protocol "${n.protocol}"`);const r=e.name,a=`JBrowsePlugin${r}`;"undefined"==typeof jest?await async function(e){if(!Boolean("WorkerGlobalScope"in globalThis))return t=e,new Promise(((e,n)=>{o()(t,((t,r)=>{t?n(t):e(r.src)}))}));var t;if(!globalThis.importScripts)throw new Error("cannot figure out how to load external JS scripts in this environment");await globalThis.importScripts(e)}(n.href):globalThis[a]={default:s.A};const i=globalThis[a];if(!i)throw new Error(`Failed to load UMD bundle for ${r}, ${a} is undefined`);return i}async loadPlugin(e,t){let n;if(i.isElectron&&u(e))n=await this.loadCJSPlugin(e,t);else if(c(e))n=await this.loadESMPlugin(e,t);else{if(!l(e))throw!i.isElectron&&u(e)?new Error(`CommonJS plugin found, but not in a NodeJS environment: ${JSON.stringify(e)}`):new Error(`Could not determine plugin type: ${JSON.stringify(e)}`);n=await this.loadUMDPlugin(e,t)}if(!n.default)throw new Error(`${d(e)} does not have a default export, cannot load`);return n.default}installGlobalReExports(e){return e.JBrowseExports=Object.fromEntries(Object.entries(a.A).map((([e,t])=>[e,t]))),this}async load(e){return Promise.all(this.definitions.map((async t=>({plugin:await this.loadPlugin(t,e),definition:t}))))}}},68584:(e,t,n)=>{n.r(t),n.d(t,{ConfigurationReference:()=>r.A,ConfigurationSchema:()=>r.S,getConf:()=>o.FI,getTypeNamesFromExplicitlyTypedUnion:()=>o.JC,isBareConfigurationSchemaType:()=>o.C$,isConfigurationModel:()=>o.wo,isConfigurationSchemaType:()=>o.oG,isConfigurationSlotType:()=>o.Rg,readConfObject:()=>o.QZ});var r=n(42498),o=n(35254)},3496:(e,t,n)=>{n.d(t,{LS:()=>o,cK:()=>a,pZ:()=>i});var r=n(26257);function o(e={}){return`${(0,r.A)(e)}`}let s={};async function a(e,t,n){const r=o(n);if(!s[r]){const o=n?.type;if(!o)throw new Error(`could not determine adapter type from adapter config snapshot ${JSON.stringify(n)}`);const i=e.getAdapterType(o);if(!i)throw new Error(`unknown data adapter type ${o}`);const l=i.configSchema.create(n,{pluginManager:e}),c=a.bind(null,e,t),u=new(await i.getAdapterClass())(l,c,e);s[r]={dataAdapter:u,sessionIds:new Set([t])}}const i=s[r];return i.sessionIds.add(t),i}function i(e){let t=0;const n=Object.keys(e);if(1===n.length&&"sessionId"===n[0]){const{sessionId:n}=e;Object.entries(s).forEach((([e,r])=>{r.sessionIds.delete(n),0===r.sessionIds.size&&(t+=1,delete s[e])}))}else Object.values(s).forEach((t=>{const n=e.regions||(e.region?[e.region]:[]);for(const e of n)void 0!==e.refName&&t.dataAdapter.freeResources(e)}));return t}},24388:(e,t,n)=>{n.d(t,{SF:()=>l,bR:()=>s,bw:()=>a});let r=0;const o=new WeakMap;function s(e,t){let n=o.get(e);return n||(r+=1,o.set(e,r),n=r,e.addEventListener("abort",(()=>{const n=o.get(e);void 0!==n&&t("signalAbort",n)}))),{abortSignalId:n}}function a(e){return"object"==typeof e&&null!==e&&"abortSignalId"in e&&"number"==typeof e.abortSignalId}const i=new Map;function l({abortSignalId:e}){let t=i.get(e);return t||(t=new AbortController,i.set(e,t)),t.signal}},85206:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(7552),o=n(29629),s=n(66765),a=n(81453),i=n(2051),l=n(24387),c=n(55851),u=n(8463),d=n(45266),m=n(63672),p=n(68850);function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(null,arguments)}const g=r.createContext({parentPopupState:null,rootPopupState:null});function h({onClick:e,closeAfterItemClick:t,...n}){const{rootPopupState:s}=(0,r.useContext)(g);if(!s)throw new Error("must be used inside a CascadingMenu");return r.createElement(o.A,f({},n,{onClick:n=>{t&&s.close(),e?.(n)}}))}function y({title:e,Icon:t,inset:n,popupId:i,...l}){const{parentPopupState:c}=(0,r.useContext)(g),u=(0,d.T6)({popupId:i,variant:"popover",parentPopupState:c});return r.createElement(r.Fragment,null,r.createElement(o.A,f({},(0,d._k)(u),(0,d.oe)(u)),t?r.createElement(s.A,null,r.createElement(t,null)):null,r.createElement(a.A,{primary:e,inset:n}),r.createElement(p.A,null)),r.createElement(w,f({},l,{anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"left"},popupState:u})))}function w({popupState:e,onMenuItemClick:t,menuItems:n,classes:o,...s}){const{rootPopupState:a}=(0,r.useContext)(g),i=(0,r.useMemo)((()=>({rootPopupState:a||e,parentPopupState:e})),[a,e]);return r.createElement(g.Provider,{value:i},r.createElement(m.A,f({},s,(0,d.NA)(e))))}function b({popupState:e,onMenuItemClick:t,menuItems:n,...o}){const{rootPopupState:s}=(0,r.useContext)(g),a=(0,r.useMemo)((()=>({rootPopupState:s||e,parentPopupState:e})),[s,e]);return r.createElement(g.Provider,{value:a},r.createElement(i.A,f({},o,(0,d.NA)(e))))}function v({item:e}){return"subMenu"in e?r.createElement(u.m,{type:"subMenu"}):"checkbox"===e.type||"radio"===e.type?r.createElement(u.m,{type:e.type,checked:e.checked,disabled:e.disabled}):null}function S({onMenuItemClick:e,closeAfterItemClick:t,menuItems:n,...o}){const i=n.some((e=>"icon"in e&&e.icon));return r.createElement(r.Fragment,null,n.sort(((e,t)=>(t.priority||0)-(e.priority||0))).map(((n,u)=>{return"subMenu"in n?r.createElement(y,{key:`subMenu-${n.label}-${u}`,popupId:`subMenu-${n.label}`,title:n.label,Icon:n.icon,inset:i&&!n.icon,onMenuItemClick:e,menuItems:n.subMenu},r.createElement(S,f({},o,{closeAfterItemClick:t,onMenuItemClick:e,menuItems:n.subMenu}))):"divider"===n.type?r.createElement(l.A,{key:`divider-${JSON.stringify(n)}-${u}`,component:"li"}):"subHeader"===n.type?r.createElement(c.A,{key:`subHeader-${n.label}-${u}`},n.label):r.createElement(h,{key:`${n.label}-${u}`,closeAfterItemClick:t,onClick:"onClick"in n?(d=n.onClick,t=>{e(t,d)}):void 0,disabled:Boolean(n.disabled)},n.icon?r.createElement(s.A,null,r.createElement(n.icon,null)):null," ",r.createElement(a.A,{primary:n.label,secondary:n.subLabel,inset:i&&!n.icon}),r.createElement("div",{style:{flexGrow:1,minWidth:10}}),r.createElement(v,{item:n}));var d})))}const A=function(e){const{closeAfterItemClick:t=!0,...n}=e;return r.createElement(b,n,r.createElement(S,f({},n,{closeAfterItemClick:t})))}},92562:(e,t,n)=>{n.d(t,{A:()=>v});var r=n(7552),o=n(48231),s=n(40985),a=n(2187),i=n(43163),l=n(61723),c=n(24387),u=n(20139),d=n(89022),m=n(68446),p=n(75785),f=n(82725),g=n(30157),h=n(38033),y=n(13476);const w=(0,p.n9)()((e=>({closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}})));function b({error:e}){return r.createElement("div",{style:{width:800,margin:40}},r.createElement(h.A,{error:e}))}const v=(0,m.observer)((function(e){const{classes:t}=w(),{title:n,header:m,children:p,onClose:h}=e,v=(0,o.A)();return r.createElement(s.A,e,r.createElement(a.A,null,r.isValidElement(m)?m:r.createElement(i.A,null,r.createElement(y.A,{html:n||""}),h?r.createElement(l.A,{className:t.closeButton,onClick:()=>{h()}},r.createElement(g.A,null)):null),r.createElement(c.A,null),r.createElement(f.tH,{FallbackComponent:b},r.createElement(u.A,{theme:(0,d.A)(v,{components:{MuiInputBase:{styleOverrides:{input:{boxSizing:"content-box!important"}}}}})},p))))}))},88373:(e,t,n)=>{n.d(t,{A:()=>d});var r=n(7552),o=n(48231),s=n(36715),a=n(98879),i=n(75785),l=n(40085);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c.apply(null,arguments)}const u=(0,i.n9)()((e=>({input:{},inputBase:{},typography:{top:6,left:2,position:"absolute",whiteSpace:"nowrap",visibility:"hidden"},inputRoot:{padding:e.spacing(.5)},inputFocused:{borderStyle:"solid",borderWidth:2}}))),d=r.forwardRef((function(e,t){const{value:n,setValue:i,variant:d,...m}=e,[p,{width:f}]=(0,l.A)(),[g,h]=(0,r.useState)(),[y,w]=(0,r.useState)(null),[b,v]=(0,r.useState)(!1);(0,r.useEffect)((()=>{b&&(y?.blur(),v(!1))}),[b,y]);const{classes:S}=u(e,{props:e}),A=(0,o.A)(),C=void 0===g?n:g;return r.createElement("div",c({},m,{ref:t}),r.createElement("div",{style:{position:"relative"}},r.createElement(s.A,{ref:p,component:"span",variant:d,className:S.typography},C)),r.createElement(a.Ay,{inputRef:e=>{w(e)},className:S.inputBase,inputProps:{style:{width:f,...d&&"inherit"!==d?A.typography[d]:{}}},classes:{input:S.input,root:S.inputRoot,focused:S.inputFocused},value:C,onChange:e=>{h(e.target.value)},onKeyDown:e=>{"Enter"===e.key?y?.blur():"Escape"===e.key&&(h(void 0),v(!0))},onBlur:()=>{i(g||n||""),h(void 0)}}))}))},38033:(e,t,n)=>{n.d(t,{A:()=>p});var r=n(7552),o=n(89003),s=n(61723),a=n(75785),i=n(21311),l=n(4902),c=n(71627);const u=(0,r.lazy)((()=>Promise.all([n.e(9245),n.e(4630)]).then(n.bind(n,74630)))),d=(0,a.n9)()((e=>({bg:{background:e.palette.divider,border:"1px solid black",margin:20},iconFloat:{float:"right",marginLeft:100}})));function m({error:e,onReset:t}){const{classes:n}=d(),[a,i]=(0,r.useState)(!1);return r.createElement("div",{className:n.iconFloat},"object"==typeof e&&e&&"stack"in e?r.createElement(o.A,{title:"Get stack trace"},r.createElement(s.A,{onClick:()=>{i(!0)},color:"primary"},r.createElement(c.A,null))):null,t?r.createElement(o.A,{title:"Retry"},r.createElement(s.A,{onClick:t,color:"primary"},r.createElement(l.A,null))):null,a?r.createElement(r.Suspense,{fallback:null},r.createElement(u,{error:e,onClose:()=>{i(!1)}})):null)}const p=function({error:e,onReset:t}){const{classes:n}=d(),o=`${e}`,s=o.indexOf("expected an instance of"),a=-1!==s?o.slice(0,s):o,l=function(e){let t="";const n=e.indexOf("is not assignable");if(-1!==n){const r=e.slice(0,n+17),o=/.*at path "(.*)" snapshot `(.*)` is not assignable/m.exec(r);o&&(e=`Failed to load element at ${o[1]}...Failed element had snapshot`,t=o[2]);const s=/.*snapshot `(.*)` is not assignable/.exec(r);s&&(e="Failed to load element...Failed element had snapshot",t=s[1])}return t}(o);return r.createElement(i.A,null,a.slice(0,1e4),r.createElement(m,{error:e,onReset:t}),l?r.createElement("pre",{className:n.bg},JSON.stringify(JSON.parse(l),null,2)):null)}},69941:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var r=n(7552),o=n(29499),s=n(99123),a=n(58507),i=n(5401),l=n(92562);function c({onClose:e,open:t,onFactoryReset:n}){function c(t){"reset"===t&&n(),e()}return r.createElement(l.A,{title:"Reset",onClose:()=>{c()},open:t},r.createElement(o.A,null,r.createElement(s.A,null,"Are you sure you want to reset? This will restore the default configuration.")),r.createElement(a.A,null,r.createElement(i.A,{onClick:()=>{c()},color:"primary"},"Cancel"),r.createElement(i.A,{onClick:()=>{c("reset")},color:"primary",variant:"contained"},"OK")))}},90542:(e,t,n)=>{n.d(t,{A8:()=>l,PM:()=>s,jT:()=>a,xU:()=>i});var r=n(2859),o=n(7552);function s(e){return o.createElement(r.A,e,o.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function a(e){return o.createElement(r.A,e,o.createElement("path",{d:"M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z"}))}function i(e){return o.createElement(r.A,e,o.createElement("path",{d:"M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z"}))}function l(e){return o.createElement(r.A,e,o.createElement("path",{d:"M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"}))}},34895:(e,t,n)=>{n.d(t,{P:()=>a,R:()=>s});var r=n(7552);function o(e){return"black"===e?{midnight:"#808080",forrest:"#666666",grape:"#4d4d4d",mandarin:"#333333",gray:"#1a1a1a"}:"white"===e?{midnight:"#ffffff",forrest:"#e6e6e6",grape:"#cccccc",mandarin:"#b3b3b3",gray:"#999999"}:{midnight:"#0d233f",forrest:"#135560",grape:"#721e63",mandarin:"#ffb11d",gray:"#dadada"}}function s({variant:e}){return r.createElement("svg",{viewBox:"0 0 175 175"},r.createElement(i,{variant:e}))}function a({variant:e}){return r.createElement("svg",{viewBox:"0 0 641 175"},r.createElement(l,{variant:e}),r.createElement(i,{variant:e}))}function i({variant:e}){const t=o(e);return r.createElement(r.Fragment,null,r.createElement("path",{style:{fill:t.midnight},d:"M120.5,57.5c.168,0,.333.012.5.013V40.506c-.167,0-.333-.006-.5-.006a98.325,98.325,0,0,0-77.4,37.565q-2.664,3.378-5.023,6.994l14.206,9.327Q54.043,91.709,56,89.179A81.363,81.363,0,0,1,120.5,57.5Z"}),r.createElement("path",{style:{fill:t.forrest},d:"M148.668,86.223c.308.133.6.283.908.42l6.746-15.618c-.153-.067-.3-.143-.454-.21a81.36,81.36,0,0,0-71.777,3.5q-2.8,1.544-5.469,3.309l9.249,14.054A63.93,63.93,0,0,1,148.668,86.223Z"}),r.createElement("path",{style:{fill:t.grape},d:"M170.894,109.37A63.929,63.929,0,0,0,113.4,88.861l2.336,15.474a48.456,48.456,0,0,1,44.322,15.42c.111.125.214.255.324.381l11.16-10C171.323,109.879,171.118,109.62,170.894,109.37Z"}),r.createElement("path",{style:{fill:t.mandarin},d:"M150.921,150.314c.04.163.07.326.107.489l16.509-4.058c-.039-.163-.067-.326-.107-.489A48.457,48.457,0,0,0,135.575,111.8l-5.515,15.591A32.466,32.466,0,0,1,150.921,150.314Z"}),r.createElement("path",{style:{fill:t.gray},d:"M134.1,138.129l-9.779,13.213a32.486,32.486,0,0,1,7.823,14.463l15.147.852c.012-.166.032-.331.041-.5A32.464,32.464,0,0,0,134.1,138.129Z"}))}function l({variant:e}){const t=o(e);return r.createElement("g",{"aria-label":"JBrowse",transform:"translate(213.084 144.241)",style:{fill:t.midnight}},r.createElement("path",{d:"m 26.355,-71.505 v 54.075 2.835 q 0,6.825 -0.42,10.185 -0.735,5.67 -2.835,9.135 -3.255,5.355 -8.505,8.4 -4.83,2.73 -11.55,3.57 L 1.47,11.76 Q 7.35,10.185 9.24,4.2 10.605,-0.105 10.605,-9.975 v -5.565 -55.965 q 1.785,0 4.62,0.315 2.835,0.21 3.255,0.21 1.785,0 2.94,-0.105 4.515,-0.42 4.935,-0.42 z"}),r.createElement("path",{d:"m 60.68836,-65.415 v 24.78 h 3.255 q 2.94,0 4.935,-0.525 2.1,-0.525 3.885,-2.1 2.31,-1.995 3.36,-4.83 1.155,-2.835 1.155,-6.09 0,-5.565 -2.94,-8.61 -2.94,-3.045 -8.295,-3.045 -2.52,0 -5.355,0.42 z m 0,30.87 V -6.09 h 5.25 q 4.725,0 8.505,-3.675 3.885,-3.78 3.885,-10.08 0,-8.19 -4.62,-11.655 -4.095,-3.045 -13.02,-3.045 z M 44.93836,0 v -71.505 h 27.09 q 9.135,0 14.385,3.255 6.51,3.99 6.51,12.6 0,7.035 -5.25,11.655 -4.62,4.095 -11.97,5.145 v 0.945 q 7.56,0.735 12.285,3.99 6.615,4.62 6.615,13.335 0,10.185 -7.98,15.75 -6.93,4.83 -17.43,4.83 z"}),r.createElement("path",{d:"M 109.44281,0.525 V -50.4 q 1.785,0.21 3.99,0.42 2.31,0.105 3.255,0.105 2.31,0 4.2,-0.21 1.89,-0.21 3.045,-0.315 v 13.02 q 1.89,-6.51 5.46,-9.87 4.41,-4.095 11.655,-4.095 -0.315,2.73 -0.42,6.825 -0.105,3.99 -0.105,7.455 l -0.945,0.84 q -0.945,-0.735 -2.415,-1.05 -1.47,-0.315 -2.94,-0.315 -3.57,0 -6.195,1.89 -2.52,1.785 -3.465,5.04 -0.42,1.155 -0.525,3.15 -0.105,1.89 -0.105,4.515 v 4.515 19.005 q -1.785,-0.21 -2.625,-0.21 -3.675,-0.315 -4.62,-0.315 -2.31,0 -4.2,0.21 -1.89,0.21 -3.045,0.315 z"}),r.createElement("path",{d:"m 173.77337,1.47 q -11.655,0 -18.585,-6.825 -6.93,-6.825 -6.93,-18.48 0,-12.6 6.72,-20.055 6.825,-7.455 18.9,-7.455 11.97,0 18.9,6.72 6.93,6.72 6.93,18.48 0,12.285 -6.72,19.74 -7.14,7.875 -19.215,7.875 z m 0.735,-48.09 q -5.88,0 -8.505,6.51 -2.205,5.565 -2.205,15.96 0,8.19 1.47,12.915 2.415,7.98 8.505,7.98 5.565,0 8.19,-7.875 2.205,-6.51 2.205,-16.695 0,-8.505 -2.1,-13.23 -2.52,-5.565 -7.56,-5.565 z"}),r.createElement("path",{d:"m 222.03563,-50.4 10.5,36.015 q 3.675,-11.235 5.67,-17.85 2.415,-8.085 5.04,-18.165 1.05,0.105 3.045,0.315 2.1,0.21 2.835,0.21 1.995,0 3.15,-0.105 1.26,-0.21 2.73,-0.42 l 10.71,36.015 q 5.88,-17.43 10.71,-36.015 l 4.2,0.315 4.095,-0.315 q -5.145,13.125 -9.135,24.57 -5.04,14.28 -8.505,26.355 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.205,-0.105 -1.89,0 -3.36,0.21 -1.365,0.21 -2.31,0.315 l -10.605,-34.755 q -4.41,13.65 -6.72,21.105 -2.31,7.35 -4.095,13.65 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.31,-0.105 -1.995,0 -3.465,0.21 -1.365,0.21 -2.31,0.315 -3.78,-12.81 -5.04,-17.01 -2.205,-7.245 -5.46,-17.01 -2.835,-8.4 -5.88,-16.905 1.575,0 4.305,0.315 2.73,0.21 3.36,0.21 1.47,0 4.305,-0.21 2.835,-0.315 3.465,-0.315 z"}),r.createElement("path",{d:"m 292.84172,-12.81 h 2.625 q 1.47,4.095 4.62,6.51 3.15,2.415 7.35,2.415 2.94,0 5.46,-1.785 2.625,-1.89 2.625,-4.62 0,-3.885 -6.195,-6.615 -10.395,-4.62 -11.655,-5.46 -6.405,-4.515 -6.405,-12.285 0,-7.77 5.25,-12.18 5.25,-4.515 12.81,-4.515 3.99,0 8.085,1.365 4.095,1.26 7.14,3.57 l -2.52,9.24 h -2.94 q -0.63,-3.57 -3.57,-6.195 -2.835,-2.625 -6.405,-2.625 -3.15,0 -5.46,1.575 -2.31,1.47 -2.31,4.515 0,3.885 6.405,6.51 10.185,4.095 11.865,5.25 6.405,4.41 6.405,12.81 0,7.455 -5.46,12.18 -5.355,4.62 -14.805,4.62 -8.19,0 -14.49,-4.305 z"}),r.createElement("path",{d:"m 349.61228,-29.925 h 15.54 q 0,-6.51 -1.05,-10.395 -1.68,-6.3 -5.88,-6.3 -5.04,0 -7.14,6.195 -1.47,4.305 -1.47,10.5 z m 30.03,5.04 h -30.03 q 0,9.135 3.045,13.86 3.57,5.67 11.55,5.67 3.255,0 6.405,-1.26 3.15,-1.26 5.88,-3.465 l 1.26,0.945 -2.31,5.88 q -6.72,4.725 -15.015,4.725 -12.915,0 -19.635,-7.245 -6.72,-7.245 -6.72,-20.37 0,-11.235 6.405,-18.165 6.51,-7.035 17.64,-7.035 11.655,0 16.905,7.56 4.62,6.615 4.62,18.9 z"}))}},8463:(e,t,n)=>{n.d(t,{A:()=>k,m:()=>A});var r=n(7552),o=n(6679),s=n(24387),a=n(55851),i=n(66765),l=n(29629),c=n(81453),u=n(4407),d=n(943),m=n(9555),p=n(75785),f=n(12756),g=n(49296),h=n(23224),y=n(69381),w=n(70996),b=n(99546);function v(){return v=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},v.apply(null,arguments)}const S=(0,p.n9)()({paper:{position:"fixed",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",top:0,left:0,outline:0},menuItemEndDecoration:{padding:0,margin:0,height:16}});function A(e){const{classes:t}=S(),{type:n}=e;let o,s,a;switch("checked"in e&&({checked:o,disabled:s}=e),n){case"subMenu":a=r.createElement(f.A,{color:"action"});break;case"checkbox":if(o){const e=s?"inherit":void 0;a=r.createElement(g.A,{color:e})}else a=r.createElement(h.A,{color:"action"});break;case"radio":if(o){const e=s?"inherit":void 0;a=r.createElement(y.A,{color:e})}else a=r.createElement(w.A,{color:"action"})}return r.createElement("div",{className:t.menuItemEndDecoration},a)}function C(e){return"divider"!==e.type&&"subHeader"!==e.type&&!e.disabled}const E=r.forwardRef((function(e,t){const[n,m]=(0,r.useState)(),[p,f]=(0,r.useState)(),[g,h]=(0,r.useState)(!1),[y,w]=(0,r.useState)(),[v,k]=(0,r.useState)(),T=(0,r.useRef)(null),{classes:M}=S(),{menuItems:P,onMenuItemClick:I,open:N,onClose:x,anchorEl:R,top:O=!1}=e;(0,r.useEffect)((()=>{N||(m(void 0),f(void 0))}),[N]),(0,r.useEffect)((()=>{const e=N&&Boolean(n);let t;return e&&!g?t=setTimeout((()=>{h(!0)}),300):!e&&g&&(t=setTimeout((()=>{h(!1)}),300)),()=>{clearTimeout(t)}}),[g,N,n]),(0,r.useEffect)((()=>{if(R){const e=R.getBoundingClientRect();v&&e.top===v.top&&e.left+e.width===v.left||k({top:e.top,left:e.left+e.width})}else v||k({})}),[v,R]);const $=P.some((e=>"icon"in e&&e.icon)),D={},L=r.createElement(r.Fragment,null,r.createElement(o.A,{autoFocusItem:N&&!g,dense:!0},P.sort(((e,t)=>(t.priority||0)-(e.priority||0))).map(((e,t)=>{if("divider"===e.type)return r.createElement(s.A,{key:`divider-${JSON.stringify(e)}-${t}`,component:"li"});if("subHeader"===e.type)return r.createElement(a.A,{key:`subHeader-${e.label}-${t}`},e.label);let n=null,o=null;if(e.icon){const t=e.icon;n=r.createElement(i.A,null,r.createElement(t,null))}"subMenu"in e?o=r.createElement(A,{type:"subMenu"}):"checkbox"!==e.type&&"radio"!==e.type||(o=r.createElement(A,{type:e.type,checked:e.checked,disabled:e.disabled}));const u="onClick"in e?(d=e.onClick,e=>{I(e,d)}):void 0;var d;return r.createElement(l.A,{key:e.id||String(e.label),style:D,selected:t===y,onClick:u,onMouseMove:n=>{n.currentTarget!==document.activeElement&&(n.currentTarget.focus(),w(t)),"subMenu"in e?p!==t&&(m(n.currentTarget),f(t)):(m(void 0),f(void 0))},onKeyDown:n=>{switch(n.key){case"ArrowLeft":case"Escape":x?.(n,"escapeKeyDown");break;case"ArrowUp":w(function(e,t){return(0,b.findLastIndex)(e.slice(0,t),C)}(P,t));break;case"ArrowDown":{const e=function(e,t){const n=e.slice(t+1).findIndex(C);return-1===n?n:t+1+n}(P,t);w(e);break}default:!("subMenu"in e)||"ArrowRight"!==n.key&&"Enter"!==n.key||(m(n.currentTarget),f(t),h(!0))}},disabled:Boolean(e.disabled)},n,r.createElement(c.A,{primary:e.label,secondary:e.subLabel,inset:$&&!e.icon}),o)}))),P.map(((e,t)=>{let o=null;return"subMenu"in e&&(o=r.createElement(E,{key:e.id||String(e.label),anchorEl:n,open:g&&p===t,onClose:()=>{h(!1),m(void 0)},onMenuItemClick:I,menuItems:e.subMenu})),o})));return O?L:r.createElement(u.A,{in:N,style:{transformOrigin:"0 0 0"},ref:t},r.createElement(d.A,{elevation:8,ref:T,className:M.paper,style:{...v}},L))})),k=function(e){const{open:t,onClose:n,menuItems:o,onMenuItemClick:s,...a}=e;return r.createElement(m.Ay,v({open:t,onClose:n,anchorOrigin:{vertical:"bottom",horizontal:"right",...a.anchorOrigin},transformOrigin:{vertical:"top",horizontal:"left",...a.transformOrigin}},a),r.createElement(E,{open:t,onClose:n,menuItems:o,onMenuItemClick:s,top:!0}))}},66684:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(7552);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(null,arguments)}const s=(0,n(75785).n9)()({horizontalHandle:{cursor:"row-resize",width:"100%"},verticalHandle:{cursor:"col-resize",height:"100%"},flexbox_verticalHandle:{cursor:"col-resize",alignSelf:"stretch"},flexbox_horizontalHandle:{cursor:"row-resize",alignSelf:"stretch"}}),a=function({onDrag:e,vertical:t=!1,flexbox:n=!1,className:a,onMouseDown:i,...l}){const[c,u]=(0,r.useState)(!1),d=(0,r.useRef)(0),m=(0,r.useRef)(0),{classes:p,cx:f}=s();let g;return(0,r.useEffect)((()=>{function n(n){n.preventDefault();const r=t?n.clientX:n.clientY,o=d.current-r,s=r-m.current;m.current=r,e(s,o)}function r(){u(!1)}return c?(window.addEventListener("mousemove",n,!0),window.addEventListener("mouseup",r,!0),()=>{window.removeEventListener("mousemove",n,!0),window.removeEventListener("mouseup",r,!0)}):()=>{}}),[c,e,t]),g=n?t?p.flexbox_verticalHandle:p.flexbox_horizontalHandle:t?p.verticalHandle:p.horizontalHandle,r.createElement("div",o({"data-resizer":"true",onMouseDown:e=>{e.preventDefault();const n=t?e.clientX:e.clientY;d.current=n,m.current=n,u(!0),i?.(e)},className:f(g,a)},l))}},87686:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var r=n(7552),o=n(68446),s=n(29499),a=n(36715),i=n(58507),l=n(5401),c=n(92562);const u=(0,o.observer)((function({model:e,handleClose:t}){return r.createElement(c.A,{maxWidth:"xl",open:!0,onClose:t,title:"Reference sequence"},r.createElement(s.A,null,r.createElement(a.A,null,"Are you sure you want to return to the import form? This will lose your current view")),r.createElement(i.A,null,r.createElement(l.A,{onClick:()=>{e.clearView(),t()},variant:"contained",color:"primary",autoFocus:!0},"OK"),r.createElement(l.A,{onClick:()=>{t()},color:"secondary",variant:"contained"},"Cancel")))}))},13476:(e,t,n)=>{n.d(t,{A:()=>d});var r=n(7552),o=n(10424),s=n.n(o),a=n(53778),i=n.n(a),l=n(99546);let c=!1;const u=new RegExp(["a","b","br","code","div","em","h1","h2","h3","h4","h5","h6","i","img","li","p","pre","span","small","strong","table","tbody","sup","sub","td","tfoot","th","thead","tr","u","ul"].map((e=>`<${e}\\b[^>]*>`)).join("|"),"i");function d({html:e,className:t}){const n=(0,l.linkify)(e),o=(a=n,u.test(a)?n:s()(n));var a;return c||(c=!0,i().addHook("afterSanitizeAttributes",(e=>{"A"===e.tagName&&(e.setAttribute("rel","noopener noreferrer"),e.setAttribute("target","_blank"))}))),r.createElement("span",{className:t,dangerouslySetInnerHTML:{__html:i().sanitize(o)}})}},49823:(e,t,n)=>{n.r(t),n.d(t,{AssemblySelector:()=>j,CascadingMenu:()=>z.A,Dialog:()=>W.A,EditableTypography:()=>U.A,ErrorMessage:()=>F.A,FactoryResetDialog:()=>V.default,FatalErrorDialog:()=>B.A,FileSelector:()=>oe,LoadingEllipses:()=>se.A,LogoFull:()=>M.P,Logomark:()=>M.R,Menu:()=>ae.A,MenuItemEndDecoration:()=>ae.m,PrerenderedCanvas:()=>le,ResizeHandle:()=>ue.A,ReturnToImportFormDialog:()=>ce.default,SanitizedHTML:()=>de.A,createJBrowseBaseTheme:()=>E,createJBrowseTheme:()=>k,defaultThemes:()=>A});var r=n(53954),o=n(46033),s=n(37231),a=n(8998),i=n(55194),l=n(89022),c=n(35068),u=n.n(c);const d=(0,l.A)(),m="#0D233F",p="#721E63",f=d.palette.augmentColor({color:{main:"#135560"}}),g=d.palette.augmentColor({color:{main:"#FFB11D"}}),h={A:d.palette.augmentColor({color:r.A}),C:d.palette.augmentColor({color:o.A}),G:d.palette.augmentColor({color:s.A}),T:d.palette.augmentColor({color:a.A})},y=[null,d.palette.augmentColor({color:{main:"#FF8080"}}),d.palette.augmentColor({color:{main:"#80FF80"}}),d.palette.augmentColor({color:{main:"#8080FF"}}),d.palette.augmentColor({color:{main:"#8080FF"}}),d.palette.augmentColor({color:{main:"#80FF80"}}),d.palette.augmentColor({color:{main:"#FF8080"}})],w=[null,d.palette.augmentColor({color:{main:"#8f8f8f"}}),d.palette.augmentColor({color:{main:"#adadad"}}),d.palette.augmentColor({color:{main:"#d8d8d8"}}),d.palette.augmentColor({color:{main:"#d8d8d8"}}),d.palette.augmentColor({color:{main:"#adadad"}}),d.palette.augmentColor({color:{main:"#8f8f8f"}})],b="#e22",v="#3e3";function S(){return{palette:{mode:void 0,primary:{main:m},secondary:{main:p},tertiary:f,quaternary:g,highlight:g,stopCodon:b,startCodon:v,bases:h,frames:w,framesCDS:y},components:{MuiLink:{styleOverrides:{root:({theme:e})=>({color:e.palette.tertiary.main})}}}}}const A={default:{...S(),name:"Default (from config)"},lightStock:{...S(),name:"Light (stock)"},lightMinimal:{name:"Light (minimal)",palette:{primary:{main:i.A[900]},secondary:{main:i.A[800]},tertiary:d.palette.augmentColor({color:{main:i.A[900]}}),quaternary:g,highlight:g,stopCodon:b,startCodon:v,bases:h,frames:w,framesCDS:y}},darkMinimal:{name:"Dark (minimal)",palette:{mode:"dark",primary:{main:i.A[700]},secondary:{main:i.A[800]},tertiary:d.palette.augmentColor({color:{main:i.A[900]}}),quaternary:g,highlight:g,stopCodon:b,startCodon:v,bases:h,frames:w,framesCDS:y}},darkStock:{name:"Dark (stock)",palette:{mode:"dark",primary:{main:m},secondary:{main:p},tertiary:f,quaternary:g,highlight:g,stopCodon:b,startCodon:v,bases:h,frames:w,framesCDS:y},components:{MuiAppBar:{defaultProps:{enableColorOnDark:!0},styleOverrides:{root:({theme:e})=>e.palette.primary.main}}}}};function C(e,t){return t}function E(e){const t={palette:e?.palette,typography:{fontSize:12},spacing:4,components:{MuiButton:{defaultProps:{size:"small"},styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.primary}:void 0}},MuiAccordion:{defaultProps:{disableGutters:!0,slotProps:{transition:{timeout:150,unmountOnExit:!0}}}},MuiFilledInput:{defaultProps:{margin:"dense"}},MuiFormControl:{defaultProps:{margin:"dense",size:"small"}},MuiFormHelperText:{defaultProps:{margin:"dense"}},MuiIconButton:{defaultProps:{size:"small"}},MuiInputBase:{defaultProps:{margin:"dense"}},MuiAutocomplete:{defaultProps:{size:"small"}},MuiInputLabel:{defaultProps:{margin:"dense"}},MuiToolbar:{defaultProps:{variant:"dense"}},MuiListItem:{defaultProps:{dense:!0}},MuiOutlinedInput:{defaultProps:{margin:"dense"}},MuiFab:{defaultProps:{size:"small"},styleOverrides:{secondary:{backgroundColor:e?.palette?.quaternary?.main}}},MuiTable:{defaultProps:{size:"small"}},MuiPopover:{defaultProps:{transitionDuration:0}},MuiMenu:{defaultProps:{transitionDuration:0}},MuiMenuItem:{defaultProps:{dense:!0}},MuiTextField:{defaultProps:{margin:"dense",variant:"standard"}},MuiLink:{styleOverrides:{root:({theme:e})=>({color:e.palette.text.secondary})}},MuiCheckbox:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-checked":{color:e.palette.text.secondary}}:void 0}},MuiRadio:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-checked":{color:e.palette.text.secondary}}:void 0}},MuiFormLabel:{styleOverrides:{root:({theme:e})=>"dark"===e.palette.mode?{color:e.palette.text.secondary,"&.Mui-focused":{color:e.palette.text.secondary}}:void 0}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:e?.palette?.tertiary?.main},content:{color:e?.palette?.tertiary?.contrastText}}},MuiToggleButtonGroup:{defaultProps:{size:"small"}}}};return u()(t,e||{},{arrayMerge:C})}function k(e={},t=A,n="default"){return(0,l.A)(E("default"===n?u()(t.default,T(e),{arrayMerge:C}):function(e={}){return e=T(e),e.palette?.quaternary||(e=u()(e,{palette:{quaternary:d.palette.augmentColor({color:{main:"#aaa"}})}})),e.palette?.tertiary||(e=u()(e,{palette:{tertiary:d.palette.augmentColor({color:{main:"#aaa"}})}})),e}(t[n])))}function T(e={}){return e.palette?.tertiary&&(e=u()(e,{palette:{tertiary:d.palette.augmentColor("color"in e.palette.tertiary?e.palette.tertiary:{color:e.palette.tertiary})}})),e.palette?.quaternary&&(e=u()(e,{palette:{quaternary:d.palette.augmentColor("color"in e.palette.quaternary?e.palette.quaternary:{color:e.palette.quaternary})}})),e}var M=n(34895),P=n(7552),I=n(1343),N=n(29629),x=n(68446),R=n(75785),O=n(68584),$=n(99546);function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},D.apply(null,arguments)}const L=(0,R.n9)()({importFormEntry:{minWidth:180}}),j=(0,x.observer)((function({session:e,onChange:t,selected:n,InputProps:r,TextFieldProps:o,localStorageKey:s,helperText:a="Select assembly to view"}){const{classes:i}=L(),{assemblyNames:l,assemblyManager:c}=e,u=new URLSearchParams(window.location.search).get("config"),[d,m]="undefined"==typeof jest&&s?(0,$.useLocalStorage)(`lastAssembly-${[window.location.host+window.location.pathname,u,s].join("-")}`,n):(0,P.useState)(n),p=l.includes(d||"")?d:n;(0,P.useEffect)((()=>{p&&p!==n&&t(p)}),[p,t,n]);const f=l.length?"":"No configured assemblies";return P.createElement(I.A,D({select:!0,label:"Assembly",variant:"outlined",helperText:f||a,value:p||"",inputProps:{"data-testid":"assembly-selector"},onChange:e=>{m(e.target.value)},error:!!f,InputProps:r,disabled:!!f,className:i.importFormEntry},o),l.map((e=>{const t=c.get(e),n=t?(0,O.getConf)(t,"displayName"):"";return P.createElement(N.A,{key:e,value:e},n||e)})))}));var z=n(85206),W=n(92562),U=n(88373),F=n(38033),V=n(69941),B=n(56174),q=n(89003),G=n(82620),_=n(17776),H=n(17125),J=n(43787),Q=n(2051),K=n(25467),Y=n(92516),Z=n(43550),X=n(14862),ee=n(32813);function te(){return te=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},te.apply(null,arguments)}function ne(e){const{title:t,children:n,...r}=e;return P.createElement(q.A,{title:t||""},P.createElement(G.A,r,n))}function re(e,t){return"string"==typeof e&&e.length>t?`${e.slice(0,Math.max(0,t))}…`:e}const oe=(0,x.observer)((function(e){const{location:t,name:n,description:r,rootModel:o,setLocation:s}=e,a=!t||(0,Y.C1)(t)?"url":"file",[i,l]=(0,P.useState)(t&&"internetAccountId"in t&&t.internetAccountId?t.internetAccountId:a),c=(0,Y.bV)(o)?o.internetAccounts.filter((e=>"HTTPBasicInternetAccount"!==e.type)):[],[u,d]=(0,$.useLocalStorage)("fileSelector-recentlyUsedInternetAccounts",[]),m=Object.fromEntries(c.map((e=>[e.internetAccountId,e]))),p=[...new Set(c.map((e=>e.internetAccountId)))].sort(((e,t)=>u.indexOf(e)-u.indexOf(t))),f=p.slice(0,2),g=p.slice(2),[h,y]=(0,P.useState)(null),w=m[i],b=(0,P.useCallback)((e=>{s({...e,...w&&(0,Y.C1)(e)?{internetAccountId:w.internetAccountId}:{}})}),[s,w]);(0,P.useEffect)((()=>{w&&(0,Y.C1)(t)&&t.internetAccountId!==w.internetAccountId&&b(t)}),[t,w,b]);let v=P.createElement(X.A,te({},e,{setLocation:b,label:w?.selectorLabel}));if("file"===i&&(v=P.createElement(Z.A,e)),w?.SelectorComponent){const{SelectorComponent:t}=w;v=P.createElement(t,te({},e,{setLocation:b}))}return P.createElement(P.Fragment,null,P.createElement(_.A,{display:"flex"},P.createElement(H.A,{shrink:!0},n)),P.createElement(_.A,{display:"flex",flexDirection:"row"},P.createElement(_.A,null,P.createElement(J.A,{value:i,exclusive:!0,onChange:(e,n)=>{d([...new Set([n,...u].filter($.notEmpty))]),n&&l(n),(0,Y.C1)(t)&&b(t)},"aria-label":"file, url, or account picker"},new URLSearchParams(window.location.search).get("adminKey")?null:P.createElement(G.A,{value:"file","aria-label":"local file"},"File"),P.createElement(G.A,{value:"url","aria-label":"url"},"URL"),f.map((e=>{const{internetAccountId:t,name:n,toggleContents:r}=m[e];return P.createElement(ne,{key:e,value:t,title:n},"string"==typeof r?re(r,5):r||re(n,5))})),g.length>0?P.createElement(G.A,{onClick:e=>{y(e.target)},selected:!1},"More",P.createElement(ee.A,null)):null),P.createElement(Q.A,{open:Boolean(h),anchorEl:h,onClose:()=>{y(null)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},g.map((e=>{const{internetAccountId:t,name:n}=m[e];return P.createElement(N.A,{key:e,value:t,onClick:()=>{d([...new Set([t,...u].filter($.notEmpty))]),l(t),y(null)}},n)}))))),v,P.createElement(K.A,null,r))}));var se=n(37565),ae=n(8463),ie=n(18010);const le=function(e){const{width:t,height:n,highResolutionScaling:r=1,style:o={},imageData:s,blockKey:a,showSoftClip:i}=e,[l,c]=(0,P.useState)(!1),u=(0,P.useRef)(null);return(0,P.useEffect)((()=>{if(!s)return;const e=u.current;if(!e)return;const t=e.getContext("2d");t&&((0,ie.pv)(s,t),c(!0))}),[s]),P.createElement("canvas",{"data-testid":["prerendered_canvas",i?"softclipped":"",a,l?"done":""].filter((e=>!!e)).join("_"),ref:u,width:t*r,height:n*r,style:{width:t,height:n,...o}})};var ce=n(87686),ue=n(66684),de=n(13476)},43334:(e,t,n)=>{n.d(t,{A:()=>r});class r extends Map{constructor(e={}){if(super(),!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof e.maxAge&&0===e.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=e.maxSize,this.maxAge=e.maxAge||Number.POSITIVE_INFINITY,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(e){if("function"==typeof this.onEviction)for(const[t,n]of e)this.onEviction(t,n.value)}_deleteIfExpired(e,t){return"number"==typeof t.expiry&&t.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(e,t.value),this.delete(e))}_getOrDeleteIfExpired(e,t){if(!this._deleteIfExpired(e,t))return t.value}_getItemValue(e,t){return t.expiry?this._getOrDeleteIfExpired(e,t):t.value}_peek(e,t){const n=t.get(e);return this._getItemValue(e,n)}_set(e,t){this.cache.set(e,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(e,t){this.oldCache.delete(e),this._set(e,t)}*_entriesAscending(){for(const e of this.oldCache){const[t,n]=e;this.cache.has(t)||this._deleteIfExpired(t,n)||(yield e)}for(const e of this.cache){const[t,n]=e;this._deleteIfExpired(t,n)||(yield e)}}get(e){if(this.cache.has(e)){const t=this.cache.get(e);return this._getItemValue(e,t)}if(this.oldCache.has(e)){const t=this.oldCache.get(e);if(!this._deleteIfExpired(e,t))return this._moveToRecent(e,t),t.value}}set(e,t,{maxAge:n=this.maxAge}={}){const r="number"==typeof n&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(e)?this.cache.set(e,{value:t,expiry:r}):this._set(e,{value:t,expiry:r})}has(e){return this.cache.has(e)?!this._deleteIfExpired(e,this.cache.get(e)):!!this.oldCache.has(e)&&!this._deleteIfExpired(e,this.oldCache.get(e))}peek(e){return this.cache.has(e)?this._peek(e,this.cache):this.oldCache.has(e)?this._peek(e,this.oldCache):void 0}delete(e){const t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(e){if(!(e&&e>0))throw new TypeError("`maxSize` must be a number greater than 0");const t=[...this._entriesAscending()],n=t.length-e;n<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(n>0&&this._emitEvictions(t.slice(0,n)),this.oldCache=new Map(t.slice(n)),this.cache=new Map,this._size=0),this.maxSize=e}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache){const[t,n]=e;this._deleteIfExpired(t,n)||(yield[t,n.value])}for(const e of this.oldCache){const[t,n]=e;this.cache.has(t)||this._deleteIfExpired(t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...this.cache];for(let t=e.length-1;t>=0;--t){const n=e[t],[r,o]=n;this._deleteIfExpired(r,o)||(yield[r,o.value])}e=[...this.oldCache];for(let t=e.length-1;t>=0;--t){const n=e[t],[r,o]=n;this.cache.has(r)||this._deleteIfExpired(r,o)||(yield[r,o.value])}}*entriesAscending(){for(const[e,t]of this._entriesAscending())yield[e,t.value]}get size(){if(!this._size)return this.oldCache.size;let e=0;for(const t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}entries(){return this.entriesAscending()}forEach(e,t=this){for(const[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}},99546:(e,t,n)=>{n.r(t),n.d(t,{AuthNeededError:()=>l._u,ImageBitmapType:()=>h.bV,ReactRendering:()=>y.aE,RetryError:()=>l.J_,SimpleFeature:()=>w.A,TextSearchManager:()=>l.rz,abortBreakPoint:()=>c.Yo,assembleLocString:()=>N,assembleLocStringFast:()=>x,avg:()=>De,blobToDataURL:()=>b.y,bpSpanPx:()=>G,bpToPx:()=>j,bytesForRegions:()=>he,cartesianToPolar:()=>B,checkAbortSignal:()=>c.pB,clamp:()=>L,coarseStripHTML:()=>Te,compareLocStrings:()=>D,compareLocs:()=>$,complement:()=>oe,createCanvas:()=>h.Nw,createImageBitmap:()=>h.T9,dedupe:()=>g.Q,defaultCodonTable:()=>de,defaultStarts:()=>ce,defaultStops:()=>ue,degToRad:()=>F,doesIntersect2:()=>f.R6,drawImageOntoCanvasContext:()=>h.pv,featureSpanPx:()=>q,findLast:()=>J,findLastIndex:()=>H,findParentThat:()=>C,findParentThatIs:()=>k,gatherOverlaps:()=>We,generateCodonTable:()=>me,getBpDisplayStr:()=>we,getContainingDisplay:()=>I,getContainingTrack:()=>P,getContainingView:()=>M,getEnv:()=>Ie,getFillProps:()=>Ve,getFrame:()=>le,getLayoutId:()=>Ae,getSerializedSvg:()=>y.Jy,getSession:()=>T,getStr:()=>ke,getStrokeProps:()=>Fe,getTickDisplayStr:()=>ve,getUriLink:()=>Ee,getViewParams:()=>Se,groupBy:()=>Le,hashCode:()=>fe,intersection2:()=>f.ky,isAbortException:()=>c.Kp,isAbstractMenuManager:()=>l.Nh,isAppRootModel:()=>l.bV,isAuthNeededException:()=>l.ZL,isBlobLocation:()=>l.rF,isContainedWithin:()=>f.Xx,isDisplayModel:()=>l.Uy,isElectron:()=>te,isFeature:()=>w.l,isGzip:()=>qe,isLocalPathLocation:()=>l.EV,isRetryException:()=>l.yH,isRootModelWithInternetAccounts:()=>l.lL,isSelectionContainer:()=>l.mY,isSessionModel:()=>l.Y$,isSessionModelWithConfigEditing:()=>l.u3,isSessionModelWithConnectionEditing:()=>l.gx,isSessionModelWithConnections:()=>l.BY,isSessionModelWithWidgets:()=>l.lO,isSessionWithAddTracks:()=>l.QW,isSessionWithSessionPlugins:()=>l.zA,isSessionWithShareURL:()=>l.xv,isSupportedIndexingAdapter:()=>ye,isTrackModel:()=>l.xU,isTrackViewModel:()=>l.EO,isUriLocation:()=>l.C1,isViewContainer:()=>l.DW,isViewModel:()=>l.Tl,iterMap:()=>_,linkify:()=>Me,localStorageGetItem:()=>Ne,localStorageSetItem:()=>xe,makeAbortError:()=>c.zm,makeAbortableReaction:()=>Q,max:()=>Re,measureGridWidth:()=>Pe,measureText:()=>ie,mergeIntervals:()=>ze,min:()=>Oe,minmax:()=>Z,notEmpty:()=>je,objectHash:()=>ge,observeAbortSignal:()=>c.R1,parseLocString:()=>O,parseLocStringOneBased:()=>R,polarToCartesian:()=>V,rIC:()=>se,radToDeg:()=>U,renameRegionIfNeeded:()=>K,renameRegionsIfNeeded:()=>Y,renderToAbstractCanvas:()=>y.u1,renderToStaticMarkup:()=>Be,revcom:()=>ne,reverse:()=>re,shorten:()=>X,springAnimate:()=>E,stringify:()=>ee,stripAlpha:()=>Ue,sum:()=>$e,toLocale:()=>be,updateStatus:()=>pe,useDebounce:()=>v,useDebouncedCallback:()=>A,useLocalStorage:()=>Ce,useWidthSetter:()=>S,when:()=>p.z,whenPresent:()=>p.I});var r=n(7552),o=n(503),s=n.n(o),a=n(36422),i=n(42489),l=n(92516),c=n(20166),u=n(40085),d=n(87485),m=n(28485),p=n(1864),f=n(32595),g=n(3519),h=n(18010),y=n(98506),w=n(6434),b=n(31673);function v(e,t){const[n,o]=(0,r.useState)(e);return(0,r.useEffect)((()=>{const n=setTimeout((()=>{o(e)}),t);return()=>{clearTimeout(n)}}),[e,t]),n}function S(e,t){const[n,{width:o}]=(0,u.A)();return(0,r.useEffect)((()=>{o&&(0,a.isAlive)(e)&&requestAnimationFrame((()=>{e.setWidth(o-2*Number.parseInt(t,10))}))}),[t,e,o]),n}function A(e,t=400){const n=(0,r.useRef)(),o=(0,r.useRef)();return(0,r.useEffect)((()=>{o.current&&clearTimeout(o.current)}),[]),function(...r){n.current=r,o.current&&clearTimeout(o.current),o.current=setTimeout((()=>{n.current&&e(...n.current)}),t)}}function C(e,t){if(!(0,a.hasParent)(e))throw new Error("node does not have parent");let n=(0,a.getParent)(e);for(;n&&(0,a.isAlive)(n);){if(t(n))return n;if(!(0,a.hasParent)(n))break;n=(0,a.getParent)(n)}throw new Error("no matching node found")}function E(e,t,n,r=()=>{},o=0,s=400,a=20,i=!0){let l;function c(u){const d=Date.now();let m=u.lastPosition,p=u.lastTime||d,f=u.lastVelocity||0;d>p+64&&(p=d);const g=Math.floor(d-p);for(let e=0;e<g;++e)f+=(-s*(m-t)+-a*f)/1*1/1e3,m+=1*f/1e3;const h=Math.abs(f)<=o,y=0===s||Math.abs(t-m)<=o;i&&0!==s&&(e<t?m>t:m<t)||h&&y?(n(t),r()):(n(m),l=requestAnimationFrame((()=>{c({lastPosition:m,lastTime:d,lastVelocity:f})})))}return o||(o=Math.abs(t-e)/1e3),[()=>{c({lastPosition:e})},()=>{cancelAnimationFrame(l)}]}function k(e,t){return C(e,t)}function T(e){try{return k(e,l.Y$)}catch(e){throw new Error("no session model found!")}}function M(e){try{return k(e,l.Tl)}catch(e){throw new Error("no containing view found")}}function P(e){try{return k(e,l.xU)}catch(e){throw new Error("no containing track found")}}function I(e){try{return k(e,l.Uy)}catch(e){throw new Error("no containing display found")}}function N(e){return x(e,be)}function x(e,t=e=>e){const{assemblyName:n,refName:r,start:o,end:s,reversed:a}=e,i=n?`{${n}}`:"";let l,c;l=void 0!==o?`:${t(o+1)}`:void 0!==s?":1":"",c=void 0!==s?void 0!==o&&o+1===s?"":`..${t(s)}`:void 0!==o?"..":"";let u="";return a&&(u="[rev]"),`${i}${r}${l}${c}${u}`}function R(e,t){if(!e)throw new Error("no location string provided, could not parse");let n=!1;e.endsWith("[rev]")&&(n=!0,e=e.replace(/\[rev]$/,"")),e=e.replace(/\s/,"");const r=/({(.+)})?(.+)/.exec(e);if(!r)throw new Error(`invalid location string: "${e}"`);const[,,o,s]=r,a=o,i=s;if(!a&&i.startsWith("{}"))throw new Error(`no assembly name was provided in location "${i}"`);const l=i.lastIndexOf(":");if(-1===l){if(t(i,a))return{assemblyName:a,refName:i,reversed:n};throw new Error(`Unknown reference sequence "${i}"`)}const c=i.slice(0,l),u=i.slice(l+1);if(t(c,a)&&t(i,a))throw new Error(`ambiguous location string: "${e}"`);if(t(c,a)){if(!u)return{assemblyName:a,refName:c,reversed:n};{const t=/^(-?(\d+|\d{1,3}(,\d{3})*))(\.\.|-)(-?(\d+|\d{1,3}(,\d{3})*))$/.exec(u),r=/^(-?(\d+|\d{1,3}(,\d{3})*))(\.\.|-)?$/.exec(u);if(t){const[,e,,,,r]=t;if(void 0!==e&&void 0!==r)return{assemblyName:a,refName:c,start:+e.replaceAll(",",""),end:+r.replaceAll(",",""),reversed:n}}else{if(!r)throw new Error(`could not parse range "${u}" on location "${e}"`);{const[,e,,,t]=r;if(void 0!==e)return t?{assemblyName:a,refName:c,start:+e.replaceAll(",",""),reversed:n}:{assemblyName:a,refName:c,start:+e.replaceAll(",",""),end:+e.replaceAll(",",""),reversed:n}}}}}else if(t(i,a))return{assemblyName:a,refName:i,reversed:n};throw new Error(`unknown reference sequence name in location "${e}"`)}function O(e,t){const n=R(e,t);return"number"==typeof n.start&&(n.start-=1),n}function $(e,t){const n=e.assemblyName||t.assemblyName?(e.assemblyName||"").localeCompare(t.assemblyName||""):0;if(n)return n;const r=e.refName||t.refName?(e.refName||"").localeCompare(t.refName||""):0;if(r)return r;if(void 0!==e.start&&void 0!==t.start){const n=e.start-t.start;if(n)return n}if(void 0!==e.end&&void 0!==t.end){const n=e.end-t.end;if(n)return n}return 0}function D(e,t,n){return $(O(e,n),O(t,n))}function L(e,t,n){return e<t?t:e>n?n:e}function j(e,{reversed:t,end:n=0,start:r=0},o){return s=(t?n-e:e-r)/o,Math.round(10*s)/10;var s}const z=180/Math.PI,W=Math.PI/180;function U(e){return e*z%360}function F(e){return e*W%(2*Math.PI)}function V(e,t){return[e*Math.cos(t),e*Math.sin(t)]}function B(e,t){return[Math.sqrt(e*e+t*t),Math.atan(t/e)]}function q(e,t,n){return G(e.get("start"),e.get("end"),t,n)}function G(e,t,n,r){const o=j(e,n,r),s=j(t,n,r);return n.reversed?[s,o]:[o,s]}function _(e,t,n){const r=Array.from({length:n||0});let o=0;for(const n of e)r[o]=t(n),o+=1;return r}function H(e,t){let n=e.length;for(;n--;)if(t(e[n],n,e))return n;return-1}function J(e,t){let n=e.length;for(;n--;)if(t(e[n],n,e))return e[n]}function Q(e,t,n,r,o,s,l){let u;function d(t){(0,c.Kp)(t)||((0,a.isAlive)(e)?l(t):console.error(t))}(0,a.addDisposer)(e,(0,i.reaction)((()=>{try{return t(e)}catch(e){return void d(e)}}),(async(t,r)=>{if(u&&!u.signal.aborted&&u.abort(),!(0,a.isAlive)(e))return;u=new AbortController;const i=u;o(i);try{const o=await n(t,i.signal,e,r);(0,c.pB)(i.signal),(0,a.isAlive)(e)&&s(o)}catch(e){i.signal.aborted||i.abort(),d(e)}}),r)),(0,a.addDisposer)(e,(()=>{u&&!u.signal.aborted&&u.abort()}))}function K(e,t){if((0,a.isStateTreeNode)(t)&&!(0,a.isAlive)(t))return t;if(e?.[t.refName]){const n=e[(t=(0,a.isStateTreeNode)(t)?{...(0,a.getSnapshot)(t)}:{...t}).refName];if(n)return{...t,refName:n,originalRefName:t.refName}}return t}async function Y(e,t){const{regions:n=[],adapterConfig:r}=t;if(!t.sessionId)throw new Error("sessionId is required");const o=n.map((e=>e.assemblyName)),s=Object.fromEntries(await Promise.all([...new Set(o)].map((async n=>[n,await e.getRefNameMapForAdapter(r,n,t)]))));return{...t,regions:n.map(((e,t)=>K(s[o[t]],e)))}}function Z(e,t){return[Math.min(e,t),Math.max(e,t)]}function X(e,t=70,n=30){return e.length>t?`${e.slice(0,n)}...${e.slice(-n)}`:e}function ee({refName:e,coord:t,assemblyName:n,oob:r},o){return[n&&o?`{${n}}`:"",e?`${X(e)}:${be(t)}${r?" (out of bounds)":""}`:""].join("")}const te=/electron/i.test("undefined"!=typeof navigator?navigator.userAgent:"");function ne(e){return re(oe(e))}function re(e){return e.split("").reverse().join("")}const oe=(()=>{const e=/[ACGT]/gi,t={S:"S",w:"w",T:"A",r:"y",a:"t",N:"N",K:"M",x:"x",d:"h",Y:"R",V:"B",y:"r",M:"K",h:"d",k:"m",C:"G",g:"c",t:"a",A:"T",n:"n",W:"W",X:"X",m:"k",v:"b",B:"V",s:"s",H:"D",c:"g",D:"H",b:"v",R:"Y",G:"C"};return n=>n.replaceAll(e,(e=>t[e]||""))})(),se="undefined"==typeof jest?"undefined"!=typeof window&&window.requestIdleCallback?window.requestIdleCallback:e=>setTimeout((()=>{e()}),1):e=>{e()},ae=[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,.2796875,.2765625,.3546875,.5546875,.5546875,.8890625,.665625,.190625,.3328125,.3328125,.3890625,.5828125,.2765625,.3328125,.2765625,.3015625,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.5546875,.2765625,.2765625,.584375,.5828125,.584375,.5546875,1.0140625,.665625,.665625,.721875,.721875,.665625,.609375,.7765625,.721875,.2765625,.5,.665625,.5546875,.8328125,.721875,.7765625,.665625,.7765625,.721875,.665625,.609375,.721875,.665625,.94375,.665625,.665625,.609375,.2765625,.3546875,.2765625,.4765625,.5546875,.3328125,.5546875,.5546875,.5,.5546875,.5546875,.2765625,.5546875,.5546875,.221875,.240625,.5,.221875,.8328125,.5546875,.5546875,.5546875,.5546875,.3328125,.5,.2765625,.5546875,.5,.721875,.5,.5,.5,.3546875,.259375,.353125,.5890625];function ie(e,t=10){const n=String(e);let r=0;for(let e=0;e<n.length;e++){const t=n.charCodeAt(e);r+=ae[t]??.5279276315789471}return r*t}function le(e,t,n,r){return 1===n?(e+r)%3+1:(t-r)%3*-1-1}const ce=["ATG"],ue=["TAA","TAG","TGA"],de={TCA:"S",TCC:"S",TCG:"S",TCT:"S",TTC:"F",TTT:"F",TTA:"L",TTG:"L",TAC:"Y",TAT:"Y",TAA:"*",TAG:"*",TGC:"C",TGT:"C",TGA:"*",TGG:"W",CTA:"L",CTC:"L",CTG:"L",CTT:"L",CCA:"P",CCC:"P",CCG:"P",CCT:"P",CAC:"H",CAT:"H",CAA:"Q",CAG:"Q",CGA:"R",CGC:"R",CGG:"R",CGT:"R",ATA:"I",ATC:"I",ATT:"I",ATG:"M",ACA:"T",ACC:"T",ACG:"T",ACT:"T",AAC:"N",AAT:"N",AAA:"K",AAG:"K",AGC:"S",AGT:"S",AGA:"R",AGG:"R",GTA:"V",GTC:"V",GTG:"V",GTT:"V",GCA:"A",GCC:"A",GCG:"A",GCT:"A",GAC:"D",GAT:"D",GAA:"E",GAG:"E",GGA:"G",GGC:"G",GGG:"G",GGT:"G"};function me(e){const t={};return Object.keys(e).forEach((n=>{const r=e[n],o=[];for(let e=0;e<3;e++){const t=n.charAt(e);o[e]=[],o[e][0]=t.toUpperCase(),o[e][1]=t.toLowerCase()}for(let e=0;e<2;e++){const n=o[0][e];for(let e=0;e<2;e++){const s=o[1][e];for(let e=0;e<2;e++){const a=o[2][e];t[n+s+a]=r}}}})),t}async function pe(e,t,n){t(e);const r=await n();return t(""),r}function fe(e){let t=0;if(0===e.length)return t;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}function ge(e){return`${fe(JSON.stringify(e))}`}async function he(e,t){return(await Promise.all(e.map((e=>t.blocksForRange(e.refName,e.start,e.end))))).flat().map((e=>({start:e.minv.blockPosition,end:e.maxv.blockPosition+65535}))).reduce(((e,t)=>e+t.end-t.start),0)}function ye(e=""){return["Gff3TabixAdapter","VcfTabixAdapter","Gff3Adapter","VcfAdapter"].includes(e)}function we(e){return Math.floor(e/1e6)>0?`${Number.parseFloat((e/1e6).toPrecision(3))}Mbp`:Math.floor(e/1e3)>0?`${Number.parseFloat((e/1e3).toPrecision(3))}Kbp`:`${be(Math.floor(e))}bp`}function be(e){return e.toLocaleString("en-US")}function ve(e,t){return Math.floor(t/1e3)>0?`${be(Number.parseFloat((e/1e6).toFixed(2)))}M`:be(Math.floor(e))}function Se(e,t){const{dynamicBlocks:n,staticBlocks:r,offsetPx:o}=M(e),s=n?.contentBlocks[0]||{},a=r?.contentBlocks[0]||{},i=r?.contentBlocks[1]||{};return{offsetPx:t?0:o-a.offsetPx,offsetPx1:t?0:o-i.offsetPx,start:s.start,end:s.end}}function Ae({sessionId:e,layoutId:t}){return`${e}-${t}`}function Ce(e,t){const[n,o]=(0,r.useState)((()=>{if("undefined"==typeof window)return t;try{const n=window.localStorage.getItem(e);return n?JSON.parse(n):t}catch(e){return console.error(e),t}}));return[n,t=>{try{const r=t instanceof Function?t(n):t;o(r),"undefined"!=typeof window&&window.localStorage.setItem(e,JSON.stringify(r))}catch(e){console.error(e)}}]}function Ee(e){const{uri:t,baseUri:n=""}=e;let r;try{r=new URL(t,n).href}catch(e){r=t}return r}function ke(e){return s()(e)?(0,l.C1)(e)?Ee(e):JSON.stringify(e):String(e)}function Te(e){return e.replaceAll(/(<([^>]+)>)/gi,"")}function Me(e){return e.replaceAll(/(^|[\s\n]|<[A-Za-z]*\/?>)((?:https?|ftp):\/\/[-A-Z0-9+\u0026\u2019@#/%?=()~_|!:,.;]*[-A-Z0-9+\u0026@#/%=~()_|])/gi,"$1<a href='$2' target=\"_blank\">$2</a>")}function Pe(e,t){const{padding:n=30,minWidth:r=80,fontSize:o=12,maxWidth:s=1e3,stripHTML:a=!1}=t||{};return Re(e.map((e=>ke(e))).map((e=>a?Te(e):e)).map((e=>ie(e,o))).map((e=>Math.min(Math.max(e+n,r),s))))}function Ie(e){return(0,a.getEnv)(e)}function Ne(e){return"undefined"!=typeof localStorage?localStorage.getItem(e):void 0}function xe(e,t){"undefined"!=typeof localStorage&&localStorage.setItem(e,t)}function Re(e,t=Number.NEGATIVE_INFINITY){let n=t;for(const t of e)n=t>n?t:n;return n}function Oe(e,t=Number.POSITIVE_INFINITY){let n=t;for(const t of e)n=t<n?t:n;return n}function $e(e){let t=0;for(const n of e)t+=n;return t}function De(e){return $e(e)/e.length}function Le(e,t){const n={};for(const r of e){const e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}function je(e){return null!=e}function ze(e,t=5e3){if(e.length<=1)return e;const n=[];let r=null;e=e.sort(((e,t)=>e.start-t.start)),n.push(e[0]);for(let o=1;o<e.length;o++)r=n.at(-1),r.end+t<e[o].start-t?n.push(e[o]):r.end<e[o].end&&(r.end=Math.max(r.end,e[o].end),n.pop(),n.push(r));return n}function We(e,t=5e3){const n={};for(const t of e)n[t.refName]||(n[t.refName]=[]),n[t.refName].push(t);return Object.values(n).flatMap((e=>ze(e.sort(((e,t)=>e.start-t.start)),t)))}function Ue(e){return(0,d.M)(e).alpha(1).toHex()}function Fe(e){const t=(0,d.M)(e);return{strokeOpacity:t.alpha(),stroke:t.alpha(1).toHex()}}function Ve(e){const t=(0,d.M)(e);return{fillOpacity:t.alpha(),fill:t.alpha(1).toHex()}}function Be(e,t){const n=document.createElement("div");return(0,m.flushSync)((()=>{t?t(n).render(e):(0,m.render)(e,n)})),n.innerHTML.replaceAll(/\brgba\((.+?),[^,]+?\)/g,"rgb($1)")}function qe(e){return 31===e[0]&&139===e[1]&&8===e[2]}},91468:(e,t,n)=>{n.r(t),n.d(t,{UNKNOWN:()=>u,UNSUPPORTED:()=>d,generateUnknownTrackConf:()=>E,generateUnsupportedTrackConf:()=>C,getBlob:()=>p,getBlobMap:()=>f,getConfAssemblyNames:()=>i,getFileName:()=>v,getParentRenderProps:()=>c,getRpcSessionId:()=>l,getTrackAssemblyNames:()=>a,getTrackName:()=>k,guessAdapter:()=>S,guessTrackType:()=>A,makeIndex:()=>w,makeIndexType:()=>b,setBlobMap:()=>g,storeBlobLocation:()=>y});var r=n(36422),o=n(99546),s=n(68584);function a(e){return i(e.configuration)}function i(e){const t=(0,s.readConfObject)(e,"assemblyNames");if(!t){const t=(0,r.getParent)(e);if("sequence"in t)return[(0,s.readConfObject)(t,"name")];throw new Error("unknown assembly names")}return t}function l(e){let t;for(let n=e;!(0,r.isRoot)(n);n=(0,r.getParent)(n))"rpcSessionId"in n&&(t=n.rpcSessionId);if(!t)throw new Error("getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute");return t}function c(e){for(let t=(0,r.getParent)(e);!(0,r.isRoot)(t);t=(0,r.getParent)(t))if("renderProps"in t)return t.renderProps();return{}}const u="UNKNOWN",d="UNSUPPORTED";let m={};function p(e){return m[e]}function f(){return m}function g(e){m=e}let h=0;function y(e){if("blob"in e){const t=`b${+Date.now()}-${h++}`;return m[t]=e.blob,{name:e.blob.name,blobId:t,locationType:"BlobLocation"}}return e}function w(e,t){return"uri"in e?{uri:e.uri+t,locationType:"UriLocation"}:"localPath"in e?{localPath:e.localPath+t,locationType:"LocalPathLocation"}:e}function b(e,t,n){return e?.toUpperCase().endsWith(t)?t:n}function v(e){const t="uri"in e?e.uri:void 0,n="localPath"in e?e.localPath:void 0,r="blobId"in e?e:void 0;return r?.name||t?.slice(t.lastIndexOf("/")+1)||n?.slice(n.replace(/\\/g,"/").lastIndexOf("/")+1)||""}function S(e,t,n,r){if(r){const{pluginManager:s}=(0,o.getEnv)(r),a=s.evaluateExtensionPoint("Core-guessAdapterForLocation",((e,t,n)=>{}))(e,t,n);if(a)return a}return{type:u}}function A(e,t){if(t){const n=(0,o.getSession)(t),r=(0,o.getEnv)(n).pluginManager.evaluateExtensionPoint("Core-guessTrackTypeForLocation",(e=>{}))(e);if(r)return r}return"FeatureTrack"}function C(e,t,n){const r={type:"FeatureTrack",name:`${e} (Unsupported)`,description:`Support not yet implemented for "${t}"`,category:n,trackId:""};return r.trackId=(0,o.objectHash)(r),r}function E(e,t,n){const r={type:"FeatureTrack",name:`${e} (Unknown)`,description:`Could not determine track type for "${t}"`,category:n,trackId:""};return r.trackId=(0,o.objectHash)(r),r}function k(e,t){const n=(0,s.readConfObject)(e,"name");if(!n&&"ReferenceSequenceTrack"===(0,s.readConfObject)(e,"type")){const n=t.assemblies.find((t=>t.sequence===e));return n?`Reference sequence (${(0,s.readConfObject)(n,"displayName")||(0,s.readConfObject)(n,"name")})`:"Reference sequence"}return n}},8832:(e,t,n)=>{n.r(t),n.d(t,{BlobLocation:()=>c,ElementId:()=>s,FileLocation:()=>m,LocalPathLocation:()=>l,NoAssemblyRegion:()=>a,Region:()=>i,UriLocation:()=>d,UriLocationRaw:()=>u});var r=n(36422),o=n(32761);const s=r.types.optional(r.types.identifier,(()=>(0,o.Ak)())),a=r.types.model("NoAssemblyRegion",{refName:r.types.string,start:r.types.number,end:r.types.number,reversed:r.types.optional(r.types.boolean,!1)}).actions((e=>({setRefName(t){e.refName=t}}))),i=r.types.compose("Region",a,r.types.model({assemblyName:r.types.string})),l=r.types.model("LocalPathLocation",{locationType:r.types.literal("LocalPathLocation"),localPath:r.types.string}),c=r.types.model("BlobLocation",{locationType:r.types.literal("BlobLocation"),name:r.types.string,blobId:r.types.string}),u=r.types.model("UriLocation",{locationType:r.types.literal("UriLocation"),uri:r.types.string,baseUri:r.types.maybe(r.types.string),internetAccountId:r.types.maybe(r.types.string),internetAccountPreAuthorization:r.types.maybe(r.types.model("InternetAccountPreAuthorization",{internetAccountType:r.types.string,authInfo:r.types.frozen()}))}),d=r.types.snapshotProcessor(u,{postProcessor:e=>{const{baseUri:t,...n}=e;return t?e:n}}),m=r.types.snapshotProcessor(r.types.union(l,d,c),{preProcessor(e){if(!e)return;const{locationType:t,...n}=e;if(!t){const{uri:e,localPath:t,blob:r}=n;let o="";return void 0!==e?o="UriLocation":void 0!==t?o="LocalPathLocation":void 0!==r&&(o="BlobLocation"),{...n,locationType:o}}return e}})},45858:(e,t,n)=>{n.d(t,{DH:()=>s,qk:()=>a});var r=n(36422),o=n(8832);function s(e){return r.types.model({id:o.ElementId,name:r.types.string,margin:0}).volatile((()=>({selection:void 0,hovered:void 0}))).views((e=>({get root(){return(0,r.getParent)(e)}}))).views((e=>({get jbrowse(){return e.root.jbrowse},get rpcManager(){return e.root.rpcManager},get configuration(){return this.jbrowse.configuration},get adminMode(){return e.root.adminMode},get textSearchManager(){return e.root.textSearchManager}}))).views((e=>({get assemblies(){return e.jbrowse.assemblies}}))).actions((e=>({setSelection(t){e.selection=t},clearSelection(){e.selection=void 0},setHovered(t){e.hovered=t}})))}function a(e){return"id"in e&&"name"in e&&"root"in e}},49204:(e,t,n)=>{n.d(t,{F:()=>a,M:()=>i});var r=n(68584),o=n(36422),s=n(45858);function a(e){return o.types.model({connectionInstances:o.types.array(e.pluggableMstType("connection","stateModel"))}).views((e=>({get connections(){const{jbrowse:t}=e;return t.connections}}))).actions((t=>({makeConnection(n,o={}){const s=n.type;if(!s)throw new Error("track configuration has no `type` listed");const a=(0,r.readConfObject)(n,"name");if(!e.getConnectionType(s))throw new Error(`unknown connection type ${s}`);const i=t.connectionInstances.push({...o,name:a,type:s,configuration:n});return t.connectionInstances[i-1]},prepareToBreakConnection(e){const n=t,o=[],s={},a=(0,r.readConfObject)(e,"name"),i=t.connectionInstances.find((e=>e.name===a));if(i){for(const e of i.tracks){const t=n.getReferring(e);n.removeReferring(t,e,o,s)}return[()=>{o.forEach((e=>{e()})),this.breakConnection(e)},s]}},breakConnection(e){const n=(0,r.readConfObject)(e,"name"),o=t.connectionInstances.find((e=>e.name===n));if(!o)throw new Error(`no connection found with name ${n}`);t.connectionInstances.remove(o)},deleteConnection(e){const{jbrowse:n}=t;return n.deleteConnectionConf(e)},addConnectionConf(e){const{jbrowse:n}=t;return n.addConnectionConf(e)},clearConnections(){t.connectionInstances.clear()}})))}function i(e){return(0,s.qk)(e)&&"connectionInstances"in e}},16574:(e,t,n)=>{n.d(t,{A:()=>d,m:()=>u});var r=n(7552),o=n(12678),s=n(9043),a=n(62367),i=n(69426),l=n(679),c=n(68384);const u=(0,r.lazy)((()=>n.e(8009).then(n.bind(n,18009))));class d extends o.A{name="DataManagementPlugin";exports={AssemblyManager:u};install(e){(0,s.A)(e),(0,a.A)(e),(0,c.Ay)(e),(0,i.A)(e),(0,l.A)(e)}configure(e){}}},87579:(e,t,n)=>{n.r(t),n.d(t,{Loader:()=>Ht,default:()=>Yt});var r=n(7552),o=n(68446),s=n(82725),a=n(430),i=n(83504),l=n(49823),c=(n(39975),n(25122)),u=n(36422),d=n(20139),m=n(16179),p=n(27281),f=n(75785),g=n(42418),h=n(9937),y=n(5401),w=n(61723),b=n(30157);const v=(0,o.observer)((function({session:e}){const{snackbarMessages:t}=e,n=t.at(-1),o=(t,n)=>{"clickaway"!==n&&e.popSnackbarMessage()};return n?r.createElement(g.A,{open:!0,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"center"}},r.createElement(h.A,{onClose:o,action:n.action?r.createElement(r.Fragment,null,r.createElement(y.A,{color:"inherit",onClick:e=>{n.action?.onClick(),o()}},n.action.name),r.createElement(w.A,{color:"inherit",onClick:o},r.createElement(b.A,null))):null,severity:n.level||"warning"},n.message)):null}));var S=n(17515),A=n(89003),C=n(72639),E=n(32813),k=n(8463);const T=(0,f.n9)()((e=>({buttonRoot:{"&:hover":{backgroundColor:(0,C.X4)(e.palette.primary.contrastText,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}}}))),M=(0,o.observer)((function({menuTitle:e,session:t,menuItems:n}){const[o,s]=(0,r.useState)(!1),a=(0,r.useRef)(null),{classes:i}=T();function l(){s(!1)}return r.createElement(r.Fragment,null,r.createElement(y.A,{ref:a,onClick:()=>{s(!o)},color:"inherit","data-testid":"dropDownMenuButton",classes:{root:i.buttonRoot}},e,r.createElement(E.A,null)),r.createElement(k.A,{anchorEl:a.current,anchorOrigin:{vertical:"bottom",horizontal:"left"},onMenuItemClick:(e,n)=>{n(t),l()},open:o,onClose:l,menuItems:n}))}));var P=n(88373),I=n(68584),N=n(34895);const x=(0,o.observer)((function({session:e}){const{configuration:t}=e,n=(0,I.readConfObject)(t,"logoPath");return n?.uri?r.createElement("img",{src:n.uri,alt:"Custom logo"}):r.createElement(N.P,{variant:"white"})})),R=(0,f.n9)()((e=>({grow:{flexGrow:1},inputBase:{color:e.palette.primary.contrastText},inputRoot:{"&:hover":{backgroundColor:e.palette.primary.light}},inputFocused:{borderColor:e.palette.secondary.main,backgroundColor:e.palette.primary.light}}))),O=(0,o.observer)((function({session:e,HeaderButtons:t=r.createElement("div",null)}){const{classes:n}=R(),{savedSessionNames:o,name:s,menus:a}=e;return r.createElement(S.A,null,a.map((t=>r.createElement(M,{key:t.label,menuTitle:t.label,menuItems:t.menuItems,session:e}))),r.createElement("div",{className:n.grow}),r.createElement(A.A,{title:"Rename Session",arrow:!0},r.createElement(P.A,{value:s,setValue:t=>{o?.includes(t)?e.notify(`Cannot rename session to "${t}", a saved session with that name already exists`,"warning"):e.renameCurrentSession(t)},variant:"body1",classes:{inputBase:n.inputBase,inputRoot:n.inputRoot,inputFocused:n.inputFocused}})),t,r.createElement("div",{className:n.grow}),r.createElement("div",{style:{width:150,maxHeight:48}},r.createElement(x,{session:e})))})),$=(0,o.observer)((function({session:e}){const{DialogComponent:t,DialogProps:n}=e;return t?r.createElement(r.Suspense,{fallback:null},r.createElement(t,n)):null}));var D=n(62859),L=n(67386);const j=(0,f.n9)()((e=>({left:{zIndex:1e4,position:"fixed",bottom:e.spacing(2),left:e.spacing(2)},right:{zIndex:1e4,position:"fixed",bottom:e.spacing(2),right:e.spacing(2)}}))),z=(0,o.observer)((function({session:e}){const{minimized:t,activeWidgets:n,drawerPosition:o}=e,{classes:s}=j();return n.size>0&&t?r.createElement(A.A,{title:"Open drawer widget"},r.createElement(D.A,{className:"right"===o?s.right:s.left,color:"primary","data-testid":"drawer-maximize",onClick:()=>{e.showWidgetDrawer()}},r.createElement(L.A,null))):null}));var W=n(943),U=n(36715),F=n(48171),V=n(98360),B=n(29629),q=n(99546);const G=(0,f.n9)()((e=>({selectPaper:{padding:e.spacing(4)},m2:{margin:2}}))),_=(0,o.observer)((({session:e})=>{const{classes:t}=G(),{pluginManager:n}=(0,q.getEnv)(e),o=n.getElementTypeRecord("view").all(),[s,a]=(0,r.useState)(o[0]?.name||"");return r.createElement(W.A,{className:t.selectPaper},r.createElement(U.A,null,"Select a view to launch"),r.createElement(F.A,{className:t.m2},r.createElement(V.A,{value:s,onChange:e=>{a(e.target.value)}},o.map((({displayName:e,name:t})=>r.createElement(B.A,{key:t,value:t},e))))),r.createElement(F.A,{className:t.m2},r.createElement(y.A,{onClick:()=>e.addView(s,{}),variant:"contained",color:"primary"},"Launch view")))}));var H=n(38033),J=n(37565),Q=n(48231),K=n(16217),Y=n(374),Z=n(51469),X=n(45266),ee=n(85206),te=n(922),ne=n(91388),re=n(42281),oe=n(66195),se=n(21430);function ae(){return ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ae.apply(null,arguments)}const ie=(0,o.observer)((function({model:e,IconButtonProps:t,IconProps:n}){const o=(0,q.getSession)(e),s=(0,X.T6)({popupId:"viewMenu",variant:"popover"});return r.createElement(r.Fragment,null,r.createElement(w.A,ae({},t,(0,X.cO)(s),{"data-testid":"view_menu_icon"}),r.createElement(te.A,ae({},n,{fontSize:"small"}))),r.createElement(ee.A,ae({},(0,X.dB)(s),{onMenuItemClick:(e,t)=>{t()},menuItems:[...o.views.length>1?[{label:"View order",type:"subMenu",subMenu:[{label:"Move view to top",icon:re.A,onClick:()=>{o.moveViewToTop(e.id)}},{label:"Move view up",icon:se.A,onClick:()=>{o.moveViewUp(e.id)}},{label:"Move view down",icon:oe.A,onClick:()=>{o.moveViewDown(e.id)}},{label:"Move view to bottom",icon:ne.A,onClick:()=>{o.moveViewToBottom(e.id)}}]}]:[],...e.menuItems()],popupState:s})))})),le=(0,f.n9)()((e=>({input:{paddingBottom:0,paddingTop:2},inputBase:{color:e.palette.secondary.contrastText},inputRoot:{"&:hover":{backgroundColor:e.palette.secondary.light}},inputFocused:{borderColor:e.palette.primary.main,backgroundColor:e.palette.secondary.light}}))),ce=(0,o.observer)((function({view:e}){const{classes:t}=le();return r.createElement(A.A,{title:"Rename view",arrow:!0},r.createElement(P.A,{value:e.displayName||`${e.assemblyNames?.join(",")||"Untitled view"}${e.minimized?" (minimized)":""}`,setValue:t=>{e.setDisplayName(t)},variant:"body2",classes:{input:t.input,inputBase:t.inputBase,inputRoot:t.inputRoot,inputFocused:t.inputFocused}}))})),ue=(0,f.n9)()((e=>({icon:{color:e.palette.secondary.contrastText},grow:{flexGrow:1},viewHeader:{display:"flex"},viewTitle:{display:"flex",alignItems:"center"}}))),de=(0,o.observer)((function({view:e,onClose:t,onMinimize:n}){const{classes:o}=ue();return r.createElement(r.Fragment,null,r.createElement(w.A,{"data-testid":"minimize_view",onClick:n},e.minimized?r.createElement(Y.A,{className:o.icon,fontSize:"small"}):r.createElement(K.A,{className:o.icon,fontSize:"small"})),r.createElement(w.A,{"data-testid":"close_view",onClick:t},r.createElement(b.A,{className:o.icon,fontSize:"small"})))})),me=(0,o.observer)((function({view:e,onClose:t,onMinimize:n}){const{classes:o}=ue(),s=(0,r.useRef)(null),a=(0,q.getSession)(e);return(0,r.useEffect)((()=>{"undefined"==typeof jest&&s.current?.scrollIntoView({block:"center"})}),[]),r.createElement("div",{ref:s,className:o.viewHeader},r.createElement(ie,{model:e,IconProps:{className:o.icon}}),r.createElement("div",{className:o.grow}),r.createElement("div",{className:o.viewTitle},a.focusedViewId===e.id?r.createElement(Z.A,{className:o.icon,fontSize:"small"}):null,r.createElement(ce,{view:e})),r.createElement("div",{className:o.grow}),r.createElement(de,{onClose:t,onMinimize:n,view:e}))})),pe=(0,f.n9)()((e=>({viewContainer:{overflow:"hidden",margin:e.spacing(.5),padding:`0 ${e.spacing(1)} ${e.spacing(1)}`},focusedView:{background:e.palette.secondary.main},unfocusedView:{background:e.palette.secondary.dark}}))),fe=(0,o.observer)((function({view:e,onClose:t,onMinimize:n,children:o}){const s=(0,Q.A)(),a=(0,q.useWidthSetter)(e,s.spacing(1)),{classes:i,cx:l}=pe(),c=(0,q.getSession)(e);return(0,r.useEffect)((()=>{function t(t){t.target instanceof Element&&a.current?.contains(t.target)&&c.setFocusedViewId(e.id)}return document.addEventListener("mousedown",t),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",t)}}),[a,c,e]),r.createElement(W.A,{ref:a,elevation:12,className:l(i.viewContainer,c.focusedViewId===e.id?i.focusedView:i.unfocusedView)},r.createElement(me,{view:e,onClose:t,onMinimize:n}),r.createElement(W.A,null,o))})),ge=(0,o.observer)((function({view:e,session:t}){const{pluginManager:n}=(0,q.getEnv)(t),o=n.getViewType(e.type);if(!o)throw new Error(`unknown view type ${e.type}`);const{ReactComponent:a}=o;return r.createElement(fe,{view:e,onClose:()=>{t.removeView(e)},onMinimize:()=>{e.setMinimized(!e.minimized)}},!e.minimized&&r.createElement(s.tH,{FallbackComponent:({error:e})=>r.createElement(H.A,{error:e})},r.createElement(r.Suspense,{fallback:r.createElement(J.A,{variant:"h6"})},r.createElement(a,{model:e,session:t}))))})),he=(0,f.n9)()({viewsContainer:{overflowY:"auto",gridRow:"components"}}),ye=(0,o.observer)((function(e){const{session:t}=e,{views:n}=t,{classes:o}=he();return r.createElement("div",{className:o.viewsContainer},n.length>0?n.map((e=>r.createElement(ge,{key:`view-${e.id}`,view:e,session:t}))):r.createElement(_,e),r.createElement("div",{style:{height:300}}))})),we=(0,r.lazy)((()=>n.e(8076).then(n.bind(n,88076)))),be=(0,f.n9)()((e=>({root:{display:"grid",height:"100vh",width:"100%",colorScheme:e.palette.mode},appContainer:{gridColumn:"main",display:"grid",gridTemplateRows:"[menubar] min-content [components] auto",height:"100vh"},appBar:{flexGrow:1,gridRow:"menubar"}}))),ve=(0,o.observer)((function(e){const{session:t}=e;return r.createElement(r.Suspense,{fallback:null},r.createElement(we,{session:t}))})),Se=(0,o.observer)((function(e){const{session:t}=e,{classes:n}=be(),{minimized:o,visibleWidget:s,drawerWidth:a,drawerPosition:i}=t,l=s&&!o,c=l?`[drawer] ${a}px`:void 0,u="right"===i?["[main] 1fr",c]:[c,"[main] 1fr"];return r.createElement("div",{className:n.root,style:{gridTemplateColumns:u.filter((e=>!!e)).join(" ")}},l&&"left"===i?r.createElement(ve,{session:t}):null,r.createElement($,{session:t}),r.createElement("div",{className:n.appContainer},r.createElement(p.A,{className:n.appBar,position:"static"},r.createElement(O,e)),r.createElement(ye,e)),r.createElement(z,{session:t}),l&&"right"===i?r.createElement(ve,{session:t}):null,r.createElement(v,{session:t}))})),Ae=u.types.model("TimeTraveller",{undoIdx:-1,targetPath:""}).volatile((()=>({history:[],notTrackingUndo:!1}))).views((e=>({get canUndo(){return e.undoIdx>0&&!e.notTrackingUndo},get canRedo(){return e.undoIdx<e.history.length-1&&!e.notTrackingUndo}}))).actions((e=>{let t,n,r=!1;return{stopTrackingUndo(){e.notTrackingUndo=!0},resumeTrackingUndo(){e.notTrackingUndo=!1},addUndoState(t){e.notTrackingUndo||(r?r=!1:(e.history.splice(e.undoIdx+1),e.history.push(t),e.history.length>20&&e.history.shift(),e.undoIdx=e.history.length-1))},beforeDestroy(){n()},initialize(){if(t=e.targetPath?(0,u.resolvePath)(e,e.targetPath):(0,u.getEnv)(e).targetStore,!t)throw new Error("Failed to find target store for TimeTraveller. Please provide `targetPath` property, or a `targetStore` in the environment");n=(0,u.onSnapshot)(t,function(e,t=300){let n;return(...r)=>{clearTimeout(n),n=setTimeout((()=>{e(...r)}),t)}}((e=>{this.addUndoState(e)}),300)),0===e.history.length&&this.addUndoState((0,u.getSnapshot)(t))},undo(){e.undoIdx--,r=!0,t&&(0,u.applySnapshot)(t,e.history[e.undoIdx])},redo(){e.undoIdx++,r=!0,t&&(0,u.applySnapshot)(t,e.history[e.undoIdx])}}}));var Ce=n(42489);const Ee=(0,I.ConfigurationSchema)("BaseRpcDriver",{workerCount:{type:"number",description:"The number of workers to use. If 0 (the default) JBrowse will decide how many workers to use.",defaultValue:0}},{explicitlyTyped:!0}),ke=(0,I.ConfigurationSchema)("WebWorkerRpcDriver",{},{baseConfiguration:Ee,explicitlyTyped:!0}),Te=(0,I.ConfigurationSchema)("MainThreadRpcDriver",{},{baseConfiguration:Ee,explicitlyTyped:!0}),Me=(0,I.ConfigurationSchema)("RpcOptions",{defaultDriver:{type:"string",description:"the RPC driver to use for tracks and tasks that are not configured to use a specific RPC backend",defaultValue:"MainThreadRpcDriver"},drivers:u.types.optional(u.types.map(u.types.union(Te,ke)),{MainThreadRpcDriver:{type:"MainThreadRpcDriver"},WebWorkerRpcDriver:{type:"WebWorkerRpcDriver"}})},{actions:e=>({addDriverConfig(t,n){e.drivers.set(t,n)}})});var Pe=n(39154),Ie=n(76519),Ne=n(32761),xe=n(24388);function Re(e){return!("function"==typeof e||e instanceof Error)}class Oe{constructor(e){this.driver=e}async getWorker(){return this.workerP||(this.workerP=this.driver.makeWorker().then((e=>(async function(e,t,n){for(;;)await e.call("ping",[],{timeout:2*t,rpcDriverClassName:n}),await new Promise((e=>setTimeout(e,t)))}(e,this.driver.maxPingTime,this.driver.name).catch((t=>{console.error("worker did not respond, killing and generating new one"),console.error(t),e.destroy(),e.status="killed",e.error=t,this.workerP=void 0})),e))).catch((e=>{throw this.workerP=void 0,e}))),this.workerP}}class $e{lastWorkerAssignment=-1;workerAssignments=new Map;maxPingTime=3e4;workerCheckFrequency=5e3;constructor(e){this.config=e.config}filterArgs(e,t){if(Array.isArray(e))return e.filter((e=>Re(e))).map((e=>this.filterArgs(e,t)));if("object"==typeof e&&null!==e){if(e instanceof AbortSignal)return(0,xe.bR)(e,this.remoteAbort.bind(this,t));if((0,u.isStateTreeNode)(e)&&!(0,u.isAlive)(e))throw new Error("dead state tree node passed to RPC call");return e instanceof File?e:Object.fromEntries(Object.entries(e).filter((e=>Re(e[1]))).map((([e,n])=>[e,this.filterArgs(n,t)])))}return e}async remoteAbort(e,t,n){const r=await this.getWorker(e);await r.call(t,{signalId:n},{timeout:1e6,rpcDriverClassName:this.name})}createWorkerPool(){const e=function(){const e="undefined"!=typeof window,t=e&&"hardwareConcurrency"in window.navigator;return e&&t?window.navigator.hardwareConcurrency:1}(),t=(0,I.readConfObject)(this.config,"workerCount")||(0,q.clamp)(1,Math.max(1,e-1),5),n=[];for(let e=0;e<t;e++)n.push(new Oe(this));return n}getWorkerPool(){if(!this.workerPool){const e=this.createWorkerPool();return this.workerPool=e,e}return this.workerPool}async getWorker(e){const t=this.getWorkerPool();let n=this.workerAssignments.get(e);if(void 0===n){const r=(this.lastWorkerAssignment+1)%t.length;this.workerAssignments.set(e,r),this.lastWorkerAssignment=r,n=r}return t[n].getWorker()}async call(e,t,n,r,o={}){if(!t)throw new TypeError("sessionId is required");let s=!1;const a=await this.getWorker(t),i=e.evaluateExtensionPoint("Core-extendWorker",a),l=e.getRpcMethodType(n);if(!l)throw new Error(`unknown RPC method ${n}`);const c=await l.serializeArguments(r,this.name),u=this.filterArgs(c,t),d=i.call(n,u,{timeout:3e5,statusCallback:r.statusCallback,rpcDriverClassName:this.name,...o}).finally((()=>{s=!0}));let m;const p=new Promise(((e,t)=>{m=setInterval((()=>{"killed"===i.status?t(new Error(`operation timed out, worker process stopped responding, ${i.error}`)):s&&e(!0)}),this.workerCheckFrequency)})).finally((()=>{clearInterval(m)})),f=Promise.race([d,p]);return l.deserializeReturn(f,r,this.name)}}class De extends Ie.A.Client{destroy(){this.workers[0].terminate()}async call(e,t,n){const{statusCallback:r,rpcDriverClassName:o}=n,s=`message-${(0,Ne.Ak)()}`,a=e=>{r?.(e)};this.on(s,a);const i=await super.call(e,{...t,channel:s,rpcDriverClassName:o},n);return this.off(s,a),i}}class Le extends $e{name="WebWorkerRpcDriver";constructor(e,t){super(e),this.workerBootConfiguration=t,this.makeWorkerInstance=e.makeWorkerInstance}async makeWorker(){const e=this.makeWorkerInstance(),t=new De({workers:[e]});return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&console.log("console logging the webworker handle avoids the track going into an infinite loading state, this is a hacky workaround for safari",e),new Promise(((e,n)=>{const r=o=>{switch(o.data.message){case"ready":e(t),t.workers[0].removeEventListener("message",r);break;case"readyForConfig":t.workers[0].postMessage({message:"config",config:this.workerBootConfiguration});break;case"error":n((0,Pe.deserializeError)(o.data.error))}};t.workers[0].addEventListener("message",r)}))}}class je{destroy(){}async call(e,t,n={}){}}class ze extends $e{name="MainThreadRpcDriver";constructor(e){super(e),this.makeWorker=async()=>new je}async call(e,t,n,r){if(!t)throw new TypeError("sessionId is required");const o=e.getRpcMethodType(n);if(!o)throw new Error(`unknown RPC method ${n}`);const s=await o.serializeArguments(r,this.name),a=await o.execute(s,this.name);return o.deserializeReturn(a,r,this.name)}}class We{static configSchema=Me;constructor(e,t,n){this.pluginManager=e,this.mainConfiguration=t,this.backendConfigurations=n,this.driverObjects=new Map}getDriver(e){const t=this.driverObjects.get(e);if(t)return t;const n=this.mainConfiguration.drivers.get("WebWorkerRpcDriver");if("MainThreadRpcDriver"===e){const t=this.backendConfigurations.MainThreadRpcDriver;if(!t)throw new Error(`requested RPC driver "${e}" is missing config`);const r=new ze({...t,config:n});return this.driverObjects.set(e,r),r}if("WebWorkerRpcDriver"===e){const t=this.backendConfigurations.WebWorkerRpcDriver;if(!t)throw new Error(`requested RPC driver "${e}" is missing config`);const r=new Le({...t,config:n},{plugins:this.pluginManager.runtimePluginDefinitions,windowHref:window.location.href});return this.driverObjects.set(e,r),r}throw new Error(`requested RPC driver "${e}" is not installed`)}async getDriverForCall(e,t,n){const r=n.rpcDriverName||(0,I.readConfObject)(this.mainConfiguration,"defaultDriver");return this.getDriver(r)}async call(e,t,n,r={}){if(!e)throw new Error("sessionId is required");return(await this.getDriverForCall(e,t,n)).call(this.pluginManager,e,t,n,r)}}var Ue=n(37702);const Fe=(0,f.n9)()((e=>({shareDiv:{textAlign:"center",paddingLeft:"2px"},shareButton:{backgroundColor:(0,C.X4)(e.palette.primary.contrastText,e.palette.action.hoverOpacity),"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}))),Ve=(0,r.lazy)((()=>n.e(7663).then(n.bind(n,47663)))),Be=(0,o.observer)((function(e){const[t,n]=(0,r.useState)(!1),{session:o}=e,{classes:s}=Fe();return r.createElement("div",{className:s.shareDiv},r.createElement(y.A,{onClick:async()=>{n(!0)},size:"small",color:"inherit",startIcon:r.createElement(Ue.A,null),classes:{root:s.shareButton}},"Share"),t?r.createElement(r.Suspense,{fallback:null},r.createElement(Ve,{handleClose:()=>{n(!1)},session:o})):null)})),qe=(0,o.observer)((function({pluginManager:e}){const[t]=(0,a.useQueryParam)("adminKey",a.StringParam),[n]=(0,a.useQueryParam)("adminServer",a.StringParam),[o]=(0,a.useQueryParam)("config",a.StringParam),[,s]=(0,a.useQueryParam)("session",a.StringParam),{rootModel:i}=e,{error:l,jbrowse:c}=i||{},p=i?.session,f=p?.id;if((0,r.useEffect)((()=>{s(`local-${f}`,"replaceIn"),window.JBrowseRootModel=i,window.JBrowseSession=p}),[f,i,p,s]),(0,r.useEffect)((()=>{if(c&&t)return(0,u.onSnapshot)(c,(async e=>{try{const r=await fetch(n||"/updateConfig",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({adminKey:t,configPath:o,config:e})});if(!r.ok){const e=await r.text();throw new Error(`HTTP ${r.status} (${e})`)}}catch(e){p?.notify(`Admin server error: ${e}`)}}))}),[c,p,t,n,o]),l)throw l;if(!i)throw new Error("No rootModel found");if(!p)throw new Error("No session found");return r.createElement(d.A,{theme:p.theme},r.createElement(m.Ay,null),r.createElement(Se,{session:p,HeaderButtons:r.createElement(Be,{session:p})}))}));var Ge=n(55252),_e=n(59773),He=n(99834),Je=n(17765),Qe=n(49409);const Ke=u.types.model({configPath:u.types.maybe(u.types.string),sessionQuery:u.types.maybe(u.types.string),password:u.types.maybe(u.types.string),adminKey:u.types.maybe(u.types.string),loc:u.types.maybe(u.types.string),sessionTracks:u.types.maybe(u.types.string),assembly:u.types.maybe(u.types.string),tracks:u.types.maybe(u.types.string),tracklist:u.types.maybe(u.types.boolean),highlight:u.types.maybe(u.types.string),nav:u.types.maybe(u.types.boolean),initialTimestamp:u.types.number}).volatile((()=>({sessionTriaged:void 0,configSnapshot:void 0,sessionSnapshot:void 0,sessionSpec:void 0,blankSession:!1,runtimePlugins:[],sessionPlugins:[],sessionError:void 0,configError:void 0,bc1:window.BroadcastChannel?new window.BroadcastChannel("jb_request_session"):void 0,bc2:window.BroadcastChannel?new window.BroadcastChannel("jb_respond_session"):void 0}))).views((e=>({get isSharedSession(){return!!e.sessionQuery?.startsWith("share-")},get isSpecSession(){return!!e.sessionQuery?.startsWith("spec-")},get isJb1StyleSession(){return!!e.loc},get isEncodedSession(){return!!e.sessionQuery?.startsWith("encoded-")},get isJsonSession(){return!!e.sessionQuery?.startsWith("json-")},get isLocalSession(){return!!e.sessionQuery?.startsWith("local-")},get ready(){return Boolean(this.isSessionLoaded&&!e.configError)},get error(){return e.configError||e.sessionError},get isSessionLoaded(){return Boolean(e.sessionError||e.sessionSnapshot||e.blankSession||e.sessionSpec)},get isConfigLoaded(){return Boolean(e.configError||e.configSnapshot)},get sessionTracksParsed(){return e.sessionTracks?JSON.parse(e.sessionTracks):[]}}))).actions((e=>({setSessionQuery(t){e.sessionQuery=t},setConfigError(t){e.configError=t},setSessionError(t){e.sessionError=t},setRuntimePlugins(t){e.runtimePlugins=t},setSessionPlugins(t){e.sessionPlugins=t},setConfigSnapshot(t){e.configSnapshot=t},setBlankSession(t){e.blankSession=t},setSessionTriaged(t){e.sessionTriaged=t},setSessionSnapshotSuccess(t){e.sessionSnapshot=t}}))).actions((e=>({async fetchPlugins(t){try{const n=new _e.Ay(t.plugins,{fetchESM:e=>import(e)});n.installGlobalReExports(window);const r=await n.load(window.location.href);e.setRuntimePlugins([...r])}catch(t){console.error(t),e.setConfigError(t)}},async fetchSessionPlugins(t){try{const n=new _e.Ay(t.sessionPlugins||[],{fetchESM:e=>import(e)});n.installGlobalReExports(window);const r=await n.load(window.location.href);e.setSessionPlugins([...r])}catch(t){console.error(t),e.setConfigError(t)}},async setSessionSnapshot(t,n){try{const{sessionPlugins:r=[]}=t;await(0,Qe.pS)(r)||n?(await this.fetchSessionPlugins(t),e.setSessionSnapshotSuccess(t)):e.setSessionTriaged({snap:t,origin:"session",reason:r})}catch(t){console.error(t),e.setConfigError(t)}},async fetchConfig(){let{configPath:t=window.__jbrowseConfigPath||"config.json"}=e;window.__jbrowseCacheBuster&&(t+=`?rand=${Math.random()}`);const n=await(0,He.openLocation)({uri:t,locationType:"UriLocation"}).readFile("utf8"),r=JSON.parse(n),o=new URL(t,window.location.href);if((0,Qe.XE)(r,o),o.hostname!==window.location.hostname){const t=r.plugins||[];if(!await(0,Qe.pS)(t))return void e.setSessionTriaged({snap:r,origin:"config",reason:t})}await this.fetchPlugins(r),e.setConfigSnapshot(r)},async fetchSessionStorageSession(){const t=sessionStorage.getItem("current"),n=e.sessionQuery.replace("local-","");if(t){const e=JSON.parse(t).session||{};if(n===e.id)return this.setSessionSnapshot(e)}if(e.bc1){e.bc1.postMessage(n);try{const t=await new Promise(((t,n)=>{e.bc2&&(e.bc2.onmessage=e=>{t(e.data)}),setTimeout((()=>{n(new Error("timeout"))}),1e3)}));await this.setSessionSnapshot({...t,id:(0,Ne.Ak)()})}catch(e){}}throw new Error("Local storage session not found")},async fetchSharedSession(){const t=await(0,Je.Z)(`${(0,Qe.Vr)(e.configSnapshot,"shareURL","https://share.jbrowse.org/api/v1/")}load`,e.sessionQuery||"",e.password||""),n=JSON.parse(await(0,Qe.LP)(t));await this.setSessionSnapshot({...n,id:(0,Ne.Ak)()})},async decodeEncodedUrlSession(){const t=JSON.parse(await(0,Qe.LP)(e.sessionQuery.replace("encoded-","")));await this.setSessionSnapshot({...t,id:(0,Ne.Ak)()})},decodeSessionSpec(){e.sessionQuery&&(e.sessionSpec=JSON.parse(e.sessionQuery.replace("spec-","")))},decodeJb1StyleSession(){const{loc:t,tracks:n,assembly:r,tracklist:o,nav:s,highlight:a,sessionTracksParsed:i}=e;t&&(e.sessionSpec={sessionTracks:i,views:[{type:"LinearGenomeView",tracks:n?.split(","),sessionTracks:i,loc:t,assembly:r,tracklist:o,nav:s,highlight:a?.split(" ")}]})},async decodeJsonUrlSession(){const t=JSON.parse(e.sessionQuery.replace("json-",""));await this.setSessionSnapshot({...t.session,id:(0,Ne.Ak)()})},async afterCreate(){try{const{configPath:t}=e,n=localStorage.getItem(`autosave-${t}`);n&&localStorage.setItem(`previousAutosave-${t}`,n)}catch(e){console.error("failed to create previousAutosave",e)}try{await this.fetchConfig()}catch(t){return console.error(t),void e.setConfigError(t)}(0,u.addDisposer)(e,(0,Ce.autorun)((async()=>{try{const{isLocalSession:t,isEncodedSession:n,isSpecSession:r,isSharedSession:o,isJsonSession:s,isJb1StyleSession:a,sessionQuery:i,configSnapshot:l}=e;if(!l)return;if(e.bc1&&(e.bc1.onmessage=t=>{const n=JSON.parse(sessionStorage.getItem("current")||"{}").session||{};n.id===t.data&&e.bc2&&e.bc2.postMessage(n)}),o)await this.fetchSharedSession();else if(r)this.decodeSessionSpec();else if(a)this.decodeJb1StyleSession();else if(n)await this.decodeEncodedUrlSession();else if(s)await this.decodeJsonUrlSession();else if(t)await this.fetchSessionStorageSession();else{if(i)throw new Error("unrecognized session format");e.setBlankSession(!0)}}catch(t){console.error(t),e.setSessionError(t)}})))}})));function Ye({error:e}){return/HTTP 404 fetching config.json/.exec(`${e}`)?r.createElement("div",null,r.createElement("h1",null,"It worked!"),r.createElement("p",{style:{margin:8,padding:8,background:"#9f9",border:"1px solid green"}},"JBrowse 2 is installed. Your next step is to add and configure an assembly. Follow our"," ",r.createElement("a",{href:"https://jbrowse.org/jb2/docs/quickstart_web/"},"quick start guide")," ","to continue or browse the sample data"," ",r.createElement("a",{href:"?config=test_data/volvox/config.json"},"here"),"."),null):r.createElement("div",null,r.createElement("h1",null,"JBrowse Error"),r.createElement(l.ErrorMessage,{error:e}))}var Ze=n(70129);var Xe=n(45465);var et=n(83059),tt=n(22168),nt=n(96757),rt=n(29078),ot=n(29417),st=n(91194),at=n(550),it=n(39548),lt=n(62424),ct=n(89024),ut=n(73299),dt=n(83105),mt=n(90542);function pt(){return new Worker(new URL(n.p+n.u(2047),n.b))}var ft=n(33039),gt=n.n(ft);window.getSnapshot=u.getSnapshot,window.resolveIdentifier=u.resolveIdentifier;var ht=n(47046),yt=n(43334),wt=n(3496);const bt=new RegExp("[0-9A-Za-z!#$%&+./:;?@^_|~-][0-9A-Za-z!#$%&*+./:;=?@^_|~-]*"),vt=["rgb(153, 102, 0)","rgb(102, 102, 0)","rgb(153, 153, 30)","rgb(204, 0, 0)","rgb(255, 0, 0)","rgb(255, 0, 204)","rgb(165, 132, 132)","rgb(204, 122, 0)","rgb(178, 142, 0)","rgb(153, 153, 0)","rgb(122, 153, 0)","rgb(0, 165, 0)","rgb(53, 128, 0)","rgb(0, 0, 204)","rgb(96, 145, 242)","rgb(107, 142, 178)","rgb(0, 165, 165)","rgb(122, 153, 153)","rgb(153, 0, 204)","rgb(204, 51, 255)","rgb(173, 130, 216)","rgb(102, 102, 102)","rgb(145, 145, 145)","rgb(142, 142, 142)","rgb(142, 142, 107)","rgb(96, 163, 48)"];function St(e){if(!bt.test(e))throw new Error(`Encountered invalid refName: "${e}"`)}function At(e,t){const n=new ht.A({cache:new yt.A({maxSize:1e3}),async fill(e,t,n){const{adapterConf:r,self:o,options:s}=e;return async function(e,t,n,r){const{sessionId:o}=n;await(0,q.when)((()=>!(!e.regions||!e.refNameAliases)),{signal:r,name:"when assembly ready"});const s=await e.rpcManager.call(o||"assemblyRpc","CoreGetRefNames",{adapterConfig:t,signal:r,...n},{timeout:1e6}),{refNameAliases:a}=e;if(!a)throw new Error(`error loading assembly ${e.name}'s refNameAliases`);const i=Object.fromEntries(s.map((t=>(St(t),[e.getCanonicalRefName(t),t]))));return{forwardMap:i,reverseMap:Object.fromEntries(Object.entries(i).map((([e,t])=>[t,e])))}}(o,r,{...s,statusCallback:n},t)}});return u.types.model({configuration:u.types.safeReference(e)}).volatile((()=>({error:void 0,loadingP:void 0,volatileRegions:void 0,refNameAliases:void 0,lowerCaseRefNameAliases:void 0,cytobands:void 0}))).views((e=>({getConf:t=>e.configuration?(0,I.getConf)(e,t):void 0}))).views((e=>({get initialized(){return e.load(),!!e.refNameAliases},get name(){return e.getConf("name")||""},get regions(){return e.load(),e.volatileRegions},get aliases(){return e.getConf("aliases")||[]},get displayName(){return e.getConf("displayName")},hasName(e){return this.allAliases.includes(e)},get allAliases(){return[this.name,...this.aliases]},get allRefNames(){return e.refNameAliases?Object.keys(e.refNameAliases):void 0},get lowerCaseRefNames(){return e.lowerCaseRefNameAliases?Object.keys(e.lowerCaseRefNameAliases):void 0},get allRefNamesWithLowerCase(){return this.allRefNames&&this.lowerCaseRefNames?[...new Set([...this.allRefNames,...this.lowerCaseRefNames])]:void 0},get rpcManager(){return(0,u.getParent)(e,2).rpcManager},get refNameColors(){const t=e.getConf("refNameColors")||[];return 0===t.length?vt:t}}))).views((e=>({get refNames(){return e.regions?.map((e=>e.refName))}}))).views((e=>({getCanonicalRefName(t){if(!e.refNameAliases||!e.lowerCaseRefNameAliases)throw new Error("aliases not loaded, we expect them to be loaded before getCanonicalRefName can be called");return e.refNameAliases[t]||e.lowerCaseRefNameAliases[t]},getRefNameColor(t){if(!e.refNames)return;const n=e.refNames.indexOf(t);return-1===n?void 0:e.refNameColors[n%e.refNameColors.length]},isValidRefName(t){if(!e.refNameAliases)throw new Error("isValidRefName cannot be called yet, the assembly has not finished loading");return!!this.getCanonicalRefName(t)}}))).actions((e=>({setLoaded({regions:e,refNameAliases:t,lowerCaseRefNameAliases:n,cytobands:r}){this.setRegions(e),this.setRefNameAliases(t,n),this.setCytobands(r)},setError(t){e.error=t},setRegions(t){e.volatileRegions=t},setRefNameAliases(t,n){e.refNameAliases=t,e.lowerCaseRefNameAliases=n},setCytobands(t){e.cytobands=t},setLoadingP(t){e.loadingP=t},load(){return e.loadingP||(e.loadingP=this.loadPre().catch((e=>{this.setLoadingP(void 0),this.setError(e)}))),e.loadingP},async loadPre(){const n=e.configuration,r=n?.refNameAliases?.adapter,o=n?.cytobands?.adapter,s=n?.sequence.adapter,a=e.name,i=await async function({config:e,pluginManager:t,signal:n}){const r=t.getAdapterType(e.type);return new(await r.getAdapterClass())(e,void 0,t).getRegions({signal:n})}({config:s,pluginManager:t}),l=i.map((e=>(St(e.refName),{...e,assemblyName:a}))),c={},u=await async function({config:e,pluginManager:t,signal:n}){const r=t.getAdapterType(e.type);return new(await r.getAdapterClass())(e,void 0,t).getRefNameAliases({signal:n})}({config:r,pluginManager:t});for(const{refName:e,aliases:t,override:n}of u){for(const n of t)St(n),c[n]=e;n&&(c[e]=e)}for(const e of l)c[e.refName]||=e.refName;const d=Object.fromEntries(Object.entries(c).map((([e,t])=>[e.toLowerCase(),t])));this.setLoaded({refNameAliases:c,regions:l.map((e=>({...e,refName:c[e.refName]||e.refName}))),lowerCaseRefNameAliases:d,cytobands:await Ct({config:o,pluginManager:t})})}}))).views((e=>({getAdapterMapEntry(t,r){const{signal:o,statusCallback:s,...a}=r;if(!r.sessionId)throw new Error("sessionId is required");return n.get((0,wt.LS)(t),{adapterConf:t,self:e,options:a},void 0,s)},async getRefNameMapForAdapter(e,t){if(!t.sessionId)throw new Error("sessionId is required");return(await this.getAdapterMapEntry(e,t)).forwardMap},async getReverseRefNameMapForAdapter(e,t){return(await this.getAdapterMapEntry(e,t)).reverseMap}})))}async function Ct({config:e,pluginManager:t}){const n=t.getAdapterType(e.type);return new(await n.getAdapterClass())(e,void 0,t).getData()}var Et=n(81886),kt=n(16574);const Tt=(0,r.lazy)((()=>n.e(9675).then(n.bind(n,79675)))),Mt=(0,r.lazy)((()=>n.e(2928).then(n.bind(n,62928))));function Pt({pluginManager:e,sessionModelFactory:t,adminMode:n=!1}){const r=function(e){return(0,I.ConfigurationSchema)("BaseAssembly",{aliases:{type:"stringArray",defaultValue:[],description:"Other possible names for the assembly"},sequence:e.getTrackType("ReferenceSequenceTrack").configSchema,refNameColors:{type:"stringArray",defaultValue:[],description:"Define custom colors for each reference sequence. Will cycle through this list if there are not enough colors for every sequence."},refNameAliases:(0,I.ConfigurationSchema)("RefNameAliases",{adapter:e.pluggableConfigSchemaType("adapter")},{preProcessSnapshot:e=>e.adapter?e:{adapter:{type:"RefNameAliasAdapter"}}}),cytobands:(0,I.ConfigurationSchema)("Cytoband",{adapter:e.pluggableConfigSchemaType("adapter")},{preProcessSnapshot:e=>e.adapter?e:{adapter:{type:"CytobandAdapter"}}}),displayName:{type:"string",defaultValue:"",description:'A human readable display name for the assembly e.g. "Homo sapiens (hg38)" while the assembly name may just be "hg38"'}},{explicitIdentifier:"name"})}(e),o=function({pluginManager:e,assemblyConfigSchema:t}){return u.types.snapshotProcessor(function({pluginManager:e,assemblyConfigSchema:t}){return function({pluginManager:e,assemblyConfigSchema:t}){return u.types.model("JBrowseConfig",{configuration:(0,I.ConfigurationSchema)("Root",{rpc:We.configSchema,highResolutionScaling:{type:"number",defaultValue:2},formatDetails:(0,I.ConfigurationSchema)("FormatDetails",{feature:{type:"frozen",description:"adds extra fields to the feature details",defaultValue:{},contextVariable:["feature"]},subfeatures:{type:"frozen",description:"adds extra fields to the subfeatures of a feature",defaultValue:{},contextVariable:["feature"]},depth:{type:"number",defaultValue:2,description:"depth to iterate the formatDetails->subfeatures callback on subfeatures (used for example to only apply the callback to the first layer of subfeatures)"},maxDepth:{type:"number",defaultValue:1e4,description:"hide subfeatures greater than a certain depth"}}),formatAbout:(0,I.ConfigurationSchema)("FormatAbout",{config:{type:"frozen",description:"formats configuration object in about dialog",defaultValue:{},contextVariable:["config"]},hideUris:{type:"boolean",defaultValue:!1}}),shareURL:{type:"string",defaultValue:"https://share.jbrowse.org/api/v1/"},disableAnalytics:{type:"boolean",defaultValue:!1},hierarchical:(0,I.ConfigurationSchema)("hierarchical",{sort:(0,I.ConfigurationSchema)("hierarchicalSort",{trackNames:{type:"boolean",defaultValue:!1},categories:{type:"boolean",defaultValue:!1}}),defaultCollapsed:(0,I.ConfigurationSchema)("defaultCollapsed",{categoryNames:{type:"stringArray",defaultValue:[]},topLevelCategories:{type:"boolean",defaultValue:!1},subCategories:{type:"boolean",defaultValue:!1}})}),theme:{type:"frozen",defaultValue:{}},extraThemes:{type:"frozen",defaultValue:{}},logoPath:{type:"fileLocation",defaultValue:{uri:"",locationType:"UriLocation"}},...e.pluginConfigurationSchemas()}),plugins:u.types.array(u.types.frozen()),assemblies:u.types.array(t),tracks:u.types.array(e.pluggableConfigSchemaType("track")),internetAccounts:u.types.array(e.pluggableConfigSchemaType("internet account")),aggregateTextSearchAdapters:u.types.array(e.pluggableConfigSchemaType("text search adapter")),connections:u.types.array(e.pluggableConfigSchemaType("connection")),defaultSession:u.types.optional(u.types.frozen(),{name:"New Session"})})}({pluginManager:e,assemblyConfigSchema:t}).views((e=>({get assemblyNames(){return e.assemblies.map((e=>(0,I.readConfObject)(e,"name")))},get rpcManager(){return(0,u.getParent)(e).rpcManager}}))).actions((e=>({addAssemblyConf(t){const{name:n}=t;if(!n)throw new Error('Can\'t add assembly with no "name"');if(e.assemblyNames.includes(n))throw new Error(`Can't add assembly with name "${n}", an assembly with that name already exists`);const r=e.assemblies.push({...t,sequence:{type:"ReferenceSequenceTrack",trackId:`${n}-${Date.now()}`,...t.sequence}});return e.assemblies[r-1]},removeAssemblyConf(t){const n=e.assemblies.find((e=>e.name===t));n&&e.assemblies.remove(n)},addTrackConf(t){const{type:n}=t;if(!n)throw new Error(`unknown track type ${n}`);const r=e.tracks.push(t);return e.tracks[r-1]},addConnectionConf(t){const{type:n}=t;if(!n)throw new Error(`unknown connection type ${n}`);const r=e.connections.push(t);return e.connections[r-1]},deleteConnectionConf(t){const n=e.connections.find((e=>e.id===t.id));return e.connections.remove(n)},deleteTrackConf(t){const n=e.tracks.find((e=>e.trackId===t.trackId));return e.tracks.remove(n)},addPlugin(t){e.plugins.push(t),(0,u.getParent)(e).setPluginsUpdated(!0)},removePlugin(t){e.plugins=(0,u.cast)(e.plugins.filter((e=>e.url!==t.url||e.umdUrl!==t.umdUrl||e.cjsUrl!==t.cjsUrl||e.esmUrl!==t.esmUrl))),(0,u.getParent)(e).setPluginsUpdated(!0)},setDefaultSessionConf(t){const n=(0,u.getParent)(e).session.name===t.name?(0,u.getSnapshot)(t):(0,Ce.toJS)(t);if(!n.name)throw new Error(`unable to set default session to ${n.name}`);e.defaultSession=(0,u.cast)(n)},addInternetAccountConf(t){const{type:n}=t;if(!n)throw new Error(`unknown internetAccount type ${n}`);const r=e.internetAccounts.push(t);return e.internetAccounts[r-1]},deleteInternetAccountConf(t){const n=e.internetAccounts.find((e=>e.id===t.id));return e.internetAccounts.remove(n)}})))}({pluginManager:e,assemblyConfigSchema:t}),{postProcessor:e=>(0,Qe.K$)(gt()(e),"baseUri")})}({pluginManager:e,assemblyConfigSchema:r}),s=t({pluginManager:e,assemblyConfigSchema:r});return u.types.compose(function({pluginManager:e,jbrowseModelType:t,sessionModelType:n,assemblyConfigSchema:r}){return u.types.model("BaseRootModel",{jbrowse:t,session:u.types.maybe(n),sessionPath:u.types.optional(u.types.string,""),assemblyManager:u.types.optional((o=r,s=e,u.types.model({assemblies:u.types.array(At(o,s))}).views((e=>({get assemblyNameMap(){const t={};for(const n of e.assemblies)for(const e of n.allAliases)t[e]=n;return t}}))).views((e=>({get:t=>e.assemblyNameMap[t],get assemblyNamesList(){return this.assemblyList.map((e=>e.name))},get assemblyList(){const{jbrowse:{assemblies:t},session:{sessionAssemblies:n=[],temporaryAssemblies:r=[]}={}}=(0,u.getParent)(e);return[...t,...n,...r]},get rpcManager(){return(0,u.getParent)(e).rpcManager}}))).views((e=>({async waitForAssembly(t){if(!t)throw new Error("no assembly name supplied to waitForAssembly");let n=e.get(t);if(!n)try{await(0,q.when)((()=>Boolean(e.get(t))),{timeout:1e3}),n=e.get(t)}catch(e){}if(n){if(await n.load(),await(0,q.when)((()=>!(!n.regions||!n.refNameAliases)||!!n.error)),n.error)throw n.error;return n}},async getRefNameMapForAdapter(e,t,n){if(t){const r=await this.waitForAssembly(t);return r?.getRefNameMapForAdapter(e,n)}return{}},async getReverseRefNameMapForAdapter(e,t,n){if(t){const r=await this.waitForAssembly(t);return r?.getReverseRefNameMapForAdapter(e,n)}return{}},isValidRefName(t,n){const r=e.get(n);if(r)return r.isValidRefName(t);throw new Error(`Failed to look up refName ${t} on ${n} because assembly does not exist`)}}))).actions((e=>({afterAttach(){(0,u.addDisposer)(e,(0,Ce.reaction)((()=>e.assemblyList),(t=>{e.assemblies.forEach((e=>{e.configuration||this.removeAssembly(e)})),t.forEach((t=>{e.assemblies.some((e=>e.name===(0,I.readConfObject)(t,"name")))||this.addAssembly(t)}))}),{fireImmediately:!0,name:"assemblyManagerAfterAttach"}))},removeAssembly(t){e.assemblies.remove(t)},addAssembly(t){e.assemblies.push({configuration:t})},replaceAssembly(t,n){e.assemblies[t]=(0,u.cast)({configuration:n})}})))),{})}).volatile((t=>({rpcManager:new We(e,t.jbrowse.configuration.rpc,{MainThreadRpcDriver:{}}),adminMode:!1,error:void 0,textSearchManager:new et.A(e),pluginManager:e}))).actions((e=>({setError(t){e.error=t},setSession(t){e.session=(0,u.cast)(t)},setDefaultSession(){this.setSession(e.jbrowse.defaultSession)},setSessionPath(t){e.sessionPath=t},renameCurrentSession(t){if(e.session){const n=JSON.parse(JSON.stringify((0,u.getSnapshot)(e.session)));n.name=t,this.setSession(n)}}})));var o,s}({pluginManager:e,jbrowseModelType:o,sessionModelType:s,assemblyConfigSchema:r}),function(e){return u.types.model({internetAccounts:u.types.array(e.pluggableMstType("internet account","stateModel"))}).actions((t=>({initializeInternetAccount(n,r={}){if(!e.getInternetAccountType(n.type))throw new Error(`unknown internet account type ${n.type}`);const o=t.internetAccounts.push({...r,type:n.type,configuration:n});return t.internetAccounts[o-1]},createEphemeralInternetAccount(n,r,o){let s;try{s=new URL(o).origin}catch(e){}const a=n.split("-"),i={type:a[0],internetAccountId:n,name:a.slice(1).join("-"),description:"",domains:s?[s]:[]},l=e.getInternetAccountType(i.type).stateModel.create({...r,type:i.type,configuration:i});return t.internetAccounts.push(l),l},findAppropriateInternetAccount(e){const n=e.internetAccountId;if(n){const e=t.internetAccounts.find((e=>e.internetAccountId===n));if(e)return e}for(const n of t.internetAccounts)if(n.handlesLocation(e))return n;return n?this.createEphemeralInternetAccount(n,{},e.uri):null}}))).actions((e=>({afterCreate(){(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{const{jbrowse:t}=e;t.internetAccounts.forEach(e.initializeInternetAccount)})))}})))}(e),u.types.model({history:u.types.optional(Ae,{targetPath:"../session"})}).actions((e=>({afterCreate(){document.addEventListener("keydown",(t=>{e.history.canRedo&&((t.ctrlKey||t.metaKey)&&t.shiftKey&&"KeyZ"===t.code||t.ctrlKey&&!t.shiftKey&&"KeyY"===t.code)&&"INPUT"!==document.activeElement?.tagName.toUpperCase()&&e.history.redo(),e.history.canUndo&&(t.ctrlKey||t.metaKey)&&!t.shiftKey&&"KeyZ"===t.code&&"INPUT"!==document.activeElement?.tagName.toUpperCase()&&e.history.undo()})),(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{const{session:t}=e;t&&e.history.initialize()})))}}))),u.types.model({}).actions((e=>{const t=e;return{setMenus(e){t.menus=e},appendMenu:e=>t.menus.push({label:e,menuItems:[]}),insertMenu:(e,n)=>(t.menus.splice((n<0?t.menus.length:0)+n,0,{label:e,menuItems:[]}),t.menus.length),appendToMenu(e,n){const r=t.menus.find((t=>t.label===e));return r?r.menuItems.push(n):(t.menus.push({label:e,menuItems:[n]}),1)},insertInMenu(e,n,r){const o=t.menus.find((t=>t.label===e));if(!o)return t.menus.push({label:e,menuItems:[n]}),1;const s=r<0?o.menuItems.length+r:r;return o.menuItems.splice(s,0,n),o.menuItems.length},appendToSubMenu(e,n){let r=t.menus.find((t=>t.label===e[0]));if(!r){const n=this.appendMenu(e[0]);r=t.menus[n-1]}let{menuItems:o}=r;const s=[e[0]];return e.slice(1).forEach((e=>{s.push(e);let t=o.find((t=>"label"in t&&t.label===e));if(!t){const n=o.push({label:e,subMenu:[]});t=o[n-1]}if(!("subMenu"in t))throw new Error(`"${e}" in path "${s}" is not a subMenu`);o=t.subMenu})),o.push(n)},insertInSubMenu(e,n,r){let o=t.menus.find((t=>t.label===e[0]));if(!o){const n=this.appendMenu(e[0]);o=t.menus[n-1]}let{menuItems:s}=o;const a=[e[0]];return e.slice(1).forEach((e=>{a.push(e);let t=s.find((t=>"label"in t&&t.label===e));if(!t){const n=s.push({label:e,subMenu:[]});t=s[n-1]}if(!("subMenu"in t))throw new Error(`"${e}" in path "${a}" is not a subMenu`);s=t.subMenu})),s.splice(r,0,n),s.length}}}))).props({configPath:u.types.maybe(u.types.string)}).volatile((t=>({version:"2.15.4",hydrateFn:Et.c,createRootFn:Et.H,pluginsUpdated:!1,rpcManager:new We(e,t.jbrowse.configuration.rpc,{WebWorkerRpcDriver:{makeWorkerInstance:pt},MainThreadRpcDriver:{}}),savedSessionsVolatile:Ce.observable.map({}),textSearchManager:new et.A(e),error:void 0}))).views((e=>({get savedSessions(){return[...e.savedSessionsVolatile.values()]},localStorageId:t=>`localSaved-${t}-${e.configPath}`,get autosaveId(){return`autosave-${e.configPath}`},get previousAutosaveId(){return`previousAutosave-${e.configPath}`}}))).views((e=>({get savedSessionNames(){return e.savedSessions.map((e=>e.name))},get currentSessionId(){const e=new URL(window.location.href),t=new URLSearchParams(e.search);return t.get("session")?.split("local-")[1]}}))).actions((e=>({afterCreate(){for(const[t,n]of Object.entries(localStorage).filter((([e,t])=>e.startsWith("localSaved-"))).filter((([t])=>t.includes(e.configPath||"undefined"))))try{const{session:r}=JSON.parse(n);e.savedSessionsVolatile.set(t,r)}catch(e){console.error("bad session encountered",t,n)}(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{for(const[,t]of e.savedSessionsVolatile.entries())try{const n=e.localStorageId(t.name);localStorage.setItem(n,JSON.stringify({session:t}))}catch(e){"22"!==e.code&&"1024"!==e.code||alert('Local storage is full! Please use the "Open sessions" panel to remove old sessions')}}))),(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{if(!e.session)return;const t=(0,u.getSnapshot)(e.session),n=JSON.stringify;sessionStorage.setItem("current",n({session:t})),localStorage.setItem(`autosave-${e.configPath}`,n({session:{...t,name:`${t.name}-autosaved`}})),e.pluginsUpdated&&window.location.reload()}),{delay:400}))},setSession(t){const n=e.session;if(e.session=(0,u.cast)(t),e.session)try{(0,Qe.pK)(e.session,(0,u.getType)(e.session))}catch(t){throw e.session=n,t}},setPluginsUpdated(t){e.pluginsUpdated=t},setDefaultSession(){const{defaultSession:t}=e.jbrowse,n={...t,name:`${t.name} ${(new Date).toLocaleString()}`};this.setSession(n)},renameCurrentSession(t){if(e.session){const n=JSON.parse(JSON.stringify((0,u.getSnapshot)(e.session)));n.name=t,this.setSession(n)}},addSavedSession(t){const n=e.localStorageId(t.name);e.savedSessionsVolatile.set(n,t)},removeSavedSession(t){const n=e.localStorageId(t.name);localStorage.removeItem(n),e.savedSessionsVolatile.delete(n)},duplicateCurrentSession(){if(e.session){const t=JSON.parse(JSON.stringify((0,u.getSnapshot)(e.session)));let n=`${e.session.name} (copy)`;if(e.savedSessionNames.includes(n)){let t=2;do{n=`${e.session.name} (copy ${t})`,t+=1}while(e.savedSessionNames.includes(n))}t.name=n,this.setSession(t)}},activateSession(t){const n=e.localStorageId(t),r=localStorage.getItem(n);if(!r)throw new Error(`Can't activate session ${t}, it is not in the savedSessions`);this.setSession(JSON.parse(r).session)},saveSessionToLocalStorage(){if(e.session){const t=e.localStorageId(e.session.name);e.savedSessionsVolatile.set(t,(0,u.getSnapshot)(e.session))}},loadAutosaveSession(){const t=localStorage.getItem(e.previousAutosaveId),n=t?JSON.parse(t).session:{},{name:r}=n;n.name=`${r.replace("-autosaved","")}-restored`,this.setSession(n)},setError(t){e.error=t}}))).volatile((e=>({menus:[{label:"File",menuItems:[{label:"New session",icon:Y.A,onClick:t=>{const n=localStorage.getItem(e.autosaveId);n&&localStorage.setItem(e.previousAutosaveId,n),t.setDefaultSession()}},{label:"Import session…",icon:at.A,onClick:e=>{const t=e.addWidget("ImportSessionWidget","importSessionWidget");e.showWidget(t)}},{label:"Export session",icon:st.A,onClick:e=>{const t=new Blob([JSON.stringify({session:(0,u.getSnapshot)(e)},null,2)],{type:"text/plain;charset=utf-8"});(0,Xe.saveAs)(t,"session.json")}},{label:"Open session…",icon:ot.A,onClick:e=>{const t=e.addWidget("SessionManager","sessionManager");e.showWidget(t)}},{label:"Save session",icon:ct.A,onClick:t=>{e.saveSessionToLocalStorage(),t.notify(`Saved session "${t.name}"`,"success")}},{label:"Duplicate session",icon:rt.A,onClick:e=>{e.duplicateCurrentSession&&e.duplicateCurrentSession()}},{type:"divider"},{label:"Open track...",icon:lt.A,onClick:e=>{if(0===e.views.length)e.notify("Please open a view to add a track first");else if(e.views.length>0){const t=e.addWidget("AddTrackWidget","addTrackWidget",{view:e.views[0].id});e.showWidget(t),e.views.length>1&&e.notify("This will add a track to the first view. Note: if you want to open a track in a specific view open the track selector for that view and use the add track (plus icon) in the bottom right")}}},{label:"Open connection...",icon:mt.A8,onClick:e=>{e.showWidget(e.addWidget("AddConnectionWidget","addConnectionWidget"))}},{type:"divider"},{label:"Return to splash screen",icon:nt.A,onClick:()=>{e.setSession(void 0)}}]},...n?[{label:"Admin",menuItems:[{label:"Open assembly manager",onClick:()=>e.session.queueDialog((t=>[kt.m,{onClose:t,rootModel:e}]))},{label:"Set default session",onClick:()=>e.session.queueDialog((t=>[Tt,{rootModel:e,onClose:t}]))}]}]:[],{label:"Add",menuItems:[]},{label:"Tools",menuItems:[{label:"Undo",icon:ut.A,onClick:()=>{e.history.canUndo&&e.history.undo()}},{label:"Redo",icon:dt.A,onClick:()=>{e.history.canRedo&&e.history.redo()}},{type:"divider"},{label:"Plugin store",icon:it.A,onClick:()=>{e.session&&e.session.showWidget(e.session.addWidget("PluginStoreWidget","pluginStoreWidget"))}},{label:"Preferences",icon:tt.A,onClick:()=>{e.session&&e.session.queueDialog((t=>[Mt,{session:e.session,handleClose:t}]))}}]}],adminMode:n})))}function It(e){return u.types.model("ReferenceManagementSessionMixin",{}).views((e=>({getReferring(t){const n=[];return(0,u.walk)((0,u.getParent)(e),(e=>{if((0,u.isModelType)((0,u.getType)(e))){const r=(0,u.getMembers)(e);Object.entries(r.properties).forEach((([r,o])=>{(0,u.isReferenceType)(o)&&e[r]===t&&n.push({node:e,key:r})}))}})),n}}))).actions((e=>({removeReferring(t,n,r,o){t.forEach((({node:t})=>{let s=!1;try{const e="open track(s)",a=(0,q.getContainingView)(t);r.push((()=>{a.hideTrack(n.trackId)})),s=!0,o[e]||(o[e]=0),o[e]+=1}catch(e){}if((0,q.isSessionModelWithWidgets)(e)&&e.widgets.has(t.id)){const n="configuration editor widget(s)";(0,q.isSessionModelWithWidgets)(e)&&r.push((()=>{e.hideWidget(t)})),s=!0,o[n]||(o[n]=0),o[n]+=1}if(!s)throw new Error(`Error when closing this connection, the following node is still referring to a track configuration: ${JSON.stringify((0,u.getSnapshot)(t))}`)}))}})))}function Nt(e){const t=e.pluggableMstType("widget","stateModel");return u.types.model({drawerPosition:u.types.optional(u.types.string,(()=>(0,q.localStorageGetItem)("drawerPosition")||"right")),drawerWidth:u.types.optional(u.types.refinement(u.types.integer,(e=>e>=128)),384),widgets:u.types.map(t),activeWidgets:u.types.map(u.types.safeReference(t)),minimized:u.types.optional(u.types.boolean,!1)}).views((e=>({get visibleWidget(){if((0,u.isAlive)(e))return[...e.activeWidgets.values()][e.activeWidgets.size-1]}}))).actions((t=>({setDrawerPosition(e){t.drawerPosition=e,localStorage.setItem("drawerPosition",e)},updateDrawerWidth(e){if(e===t.drawerWidth)return t.drawerWidth;let n=e;return n<128&&(n=128),t.drawerWidth=n,n},resizeDrawer(e){"left"===t.drawerPosition&&(e*=-1);const n=t.drawerWidth;return n-this.updateDrawerWidth(n-e)},addWidget(n,r,o={},s){if(!e.getElementType("widget",n))throw new Error(`unknown widget type ${n}`);const a={...o,id:r,type:n,configuration:s||{type:n}};return t.widgets.set(r,a),t.widgets.get(r)},showWidget(e){t.activeWidgets.has(e.id)&&t.activeWidgets.delete(e.id),t.activeWidgets.set(e.id,e),t.minimized=!1},hasWidget:e=>t.activeWidgets.has(e.id),hideWidget(e){t.activeWidgets.delete(e.id)},minimizeWidgetDrawer(){t.minimized=!0},showWidgetDrawer(){t.minimized=!1},hideAllWidgets(){t.activeWidgets.clear()},editConfiguration(e){if(!(0,I.isConfigurationModel)(e))throw new Error("must pass a configuration model to editConfiguration");const t=this.addWidget("ConfigurationEditorWidget","configEditor",{target:e});this.showWidget(t)},afterAttach(){(0,u.addDisposer)(t,(0,Ce.autorun)((()=>{(0,q.localStorageSetItem)("drawerPosition",t.drawerPosition)})))}})))}var xt=n(45858);var Rt=n(71627);const Ot=(0,r.lazy)((()=>Promise.all([n.e(9245),n.e(4630)]).then(n.bind(n,74630))));var $t=n(25762),Dt=n(36993),Lt=n(49204);const jt=(0,r.lazy)((()=>Promise.all([n.e(8565),n.e(5676),n.e(3011),n.e(6157),n.e(6683),n.e(8984),n.e(965)]).then(n.bind(n,40965))));function zt({pluginManager:e,assemblyConfigSchema:t}){const n=u.types.compose("WebCoreSessionModel",u.types.compose("WebCoreSessionModelGroupA",It(),Nt(e),u.types.model("DialogQueueSessionMixin",{}).volatile((()=>({queueOfDialogs:[]}))).views((e=>({get DialogComponent(){return e.queueOfDialogs[0]?.[0]},get DialogProps(){return e.queueOfDialogs[0]?.[1]}}))).actions((e=>({removeActiveDialog(){e.queueOfDialogs=e.queueOfDialogs.slice(1)},queueDialog(t){const[n,r]=t((()=>{this.removeActiveDialog()}));e.queueOfDialogs=[...e.queueOfDialogs,[n,r]]}}))),u.types.model({}).volatile((()=>({sessionThemeName:(0,q.localStorageGetItem)("themeName")||"default"}))).views((e=>({allThemes(){const t=e,n=(0,I.getConf)(t.jbrowse,"extraThemes");return{...l.defaultThemes,...n}},get themeName(){const{sessionThemeName:t}=e;return this.allThemes()[t]?t:"default"},get theme(){const t=e,n=(0,I.getConf)(t.jbrowse,"theme"),r=this.allThemes();return(0,l.createJBrowseTheme)(n,r,this.themeName)}}))).actions((e=>({setThemeName(t){e.sessionThemeName=t},afterAttach(){(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{(0,q.localStorageSetItem)("themeName",e.themeName)})))}}))),function(e){return u.types.compose((0,xt.DH)(e),Nt(e)).props({views:u.types.array(e.pluggableMstType("view","stateModel"))}).actions((t=>({moveViewDown(e){const n=t.views.findIndex((t=>t.id===e));-1!==n&&n<t.views.length-1&&t.views.splice(n,2,t.views[n+1],t.views[n])},moveViewUp(e){const n=t.views.findIndex((t=>t.id===e));n>0&&t.views.splice(n-1,2,t.views[n],t.views[n-1])},moveViewToTop(e){const n=t.views.findIndex((t=>t.id===e));t.views=(0,u.cast)([t.views[n],...t.views.filter((t=>t.id!==e))])},moveViewToBottom(e){const n=t.views.findIndex((t=>t.id===e));t.views=(0,u.cast)([...t.views.filter((t=>t.id!==e)),t.views[n]])},addView(n,r={}){if(!e.getElementType("view",n))throw new Error(`unknown view type ${n}`);const o=t.views.push({...r,type:n});return t.views[o-1]},removeView(e){for(const[,n]of t.activeWidgets)n.view&&n.view.id===e.id&&t.hideWidget(n);t.views.remove(e)},addLinearGenomeViewOfAssembly(e,t={}){return this.addViewOfAssembly("LinearGenomeView",e,t)},addViewOfAssembly(e,n,r={}){const o=t.assemblies.find((e=>(0,I.readConfObject)(e,"name")===n));if(!o)throw new Error(`Could not add view of assembly "${n}", assembly name not found`);return this.addView(e,{...r,displayRegionsFromAssemblyName:(0,I.readConfObject)(o,"name")})},addViewFromAnotherView(e,t,n={}){const r={...n};return r.displayedRegions=(0,u.getSnapshot)(t.displayedRegions),this.addView(e,r)}})))}(e)),u.types.compose("WebCoreSessionModelGroupB",function(e){return function(e){return u.types.compose("TracksManagerSessionMixin",(0,xt.DH)(e),It()).views((e=>({get tracks(){return e.jbrowse.tracks}}))).actions((e=>({addTrackConf:t=>e.jbrowse.addTrackConf(t),deleteTrackConf(t){const n=[],r=e.getReferring(t);if(e.removeReferring(r,t,n,{}),n.forEach((e=>{e()})),e.adminMode)return e.jbrowse.deleteTrackConf(t)}})))}(e).named("SessionTracksManagerSessionMixin").props({sessionTracks:u.types.array(e.pluggableConfigSchemaType("track"))}).views((e=>({get tracks(){return[...e.sessionTracks,...e.jbrowse.tracks]}}))).actions((e=>{const{addTrackConf:t,deleteTrackConf:n}=e;return{addTrackConf(n){if(e.adminMode)return t(n);const{trackId:r,type:o}=n;if(!o)throw new Error(`unknown track type ${o}`);const s=e.sessionTracks.find((e=>e.trackId===r));if(s)return s;const a=e.sessionTracks.push(n);return e.sessionTracks[a-1]},deleteTrackConf(t){const r=n(t);if(r)return r;const{trackId:o}=t,s=e.sessionTracks.findIndex((e=>e.trackId===o));return-1!==s?e.sessionTracks.splice(s,1):void 0}}}))}(e),(o=t,u.types.model({sessionAssemblies:u.types.array(o)}).actions((e=>{const t=e;return{addSessionAssembly(e){const n=t.sessionAssemblies.find((t=>t.name===e.name));if(n)return console.warn(`Assembly ${e.name} already exists`),n;const r=t.sessionAssemblies.push(e);return t.sessionAssemblies[r-1]},removeSessionAssembly(e){const n=t.sessionAssemblies.find((t=>t.name===e));n&&t.sessionAssemblies.remove(n)}}}))),function(e,t=u.types.frozen()){return u.types.model({temporaryAssemblies:u.types.array(t)}).actions((e=>{const t=e;return{addTemporaryAssembly(e){const n=t.temporaryAssemblies.find((t=>t.name===e.name));if(n)return console.warn(`Assembly ${e.name} was already existing`),n;const r=t.temporaryAssemblies.push(e);return t.temporaryAssemblies[r-1]},removeTemporaryAssembly(e){const n=t.temporaryAssemblies.find((t=>t.name===e));n&&t.temporaryAssemblies.remove(n)}}}))}(0,t),function(e){return u.types.compose("SessionConnectionsManagement",(0,Lt.F)(e),u.types.model({sessionConnections:u.types.array(e.pluggableConfigSchemaType("connection"))})).actions((e=>{const t=e,n=t.deleteConnection,r=t.addConnectionConf;return{addConnectionConf(e){if(t.adminMode)return r(e);const{connectionId:n,type:o}=e;if(!o)throw new Error(`unknown connection type ${o}`);const s=t.sessionTracks.find((e=>e.connectionId===n));if(s)return s;const a=t.sessionConnections.push(e);return t.sessionConnections[a-1]},deleteConnection(e){let r;if(t.adminMode&&(r=n(e)),!r){const{connectionId:n}=e,r=t.sessionConnections.findIndex((e=>e.connectionId===n));if(-1===r)return;return t.sessionConnections.splice(r,1)}return r}}}))}(e),u.types.model({focusedViewId:u.types.maybe(u.types.string)}).actions((e=>({setFocusedViewId(t){e.focusedViewId=t}}))),u.types.model({}).volatile((()=>({snackbarMessages:Ce.observable.array()}))).views((e=>({get snackbarMessageSet(){return new Map(e.snackbarMessages.map((e=>[e.message,e])))}}))).actions((e=>({notify(e,t,n){this.pushSnackbarMessage(e,t,n),"info"!==t&&"success"!==t||setTimeout((()=>{this.removeSnackbarMessage(e)}),5e3)},notifyError(t,n,o){this.notify(t,"error",{name:r.createElement(Rt.A,null),onClick:()=>{e.queueDialog((e=>[Ot,{onClose:e,error:n,extra:o}]))}})},pushSnackbarMessage(t,n,r){!r&&e.snackbarMessageSet.has(t)||e.snackbarMessages.push({message:t,level:n,action:r})},popSnackbarMessage:()=>e.snackbarMessages.pop(),removeSnackbarMessage(t){const n=e.snackbarMessageSet.get(t);void 0!==n&&e.snackbarMessages.remove(n)}}))))).props({margin:0,sessionPlugins:u.types.array(u.types.frozen())}).volatile((()=>({sessionThemeName:(0,q.localStorageGetItem)("themeName")||"default",task:void 0}))).views((e=>({get tracks(){return[...e.sessionTracks,...e.jbrowse.tracks]},get root(){return(0,u.getParent)(e)},get assemblies(){return[...e.jbrowse.assemblies,...e.sessionAssemblies]},get connections(){return[...e.jbrowse.connections,...e.sessionConnections]}}))).actions((e=>({setName(t){e.name=t}}))).views((e=>({get assemblyNames(){return e.assemblies.map((e=>(0,I.readConfObject)(e,"name")))},get version(){return e.root.version},get shareURL(){return(0,I.getConf)(e.jbrowse,"shareURL")},get textSearchManager(){return e.root.textSearchManager},get assemblyManager(){return e.root.assemblyManager},get savedSessions(){return e.root.savedSessions},get previousAutosaveId(){return e.root.previousAutosaveId},get savedSessionNames(){return e.root.savedSessionNames},get history(){return e.root.history},get menus(){return e.root.menus},renderProps:()=>({theme:e.theme,highResolutionScaling:(0,I.getConf)(e,"highResolutionScaling")})}))).actions((e=>({addAssemblyConf(t){e.jbrowse.addAssemblyConf(t)},addSessionPlugin(t){if(e.sessionPlugins.some((e=>e.name===t.name)))throw new Error("session plugin cannot be installed twice");e.sessionPlugins.push(t),e.root.setPluginsUpdated(!0)},removeSessionPlugin(t){e.sessionPlugins=(0,u.cast)(e.sessionPlugins.filter((e=>e.url!==t.url||e.umdUrl!==t.umdUrl||e.cjsUrl!==t.cjsUrl||e.esmUrl!==t.esmUrl))),(0,u.getParent)(e).setPluginsUpdated(!0)},addSavedSession:t=>e.root.addSavedSession(t),removeSavedSession:t=>e.root.removeSavedSession(t),renameCurrentSession:t=>e.root.renameCurrentSession(t),duplicateCurrentSession:()=>e.root.duplicateCurrentSession(),activateSession:t=>e.root.activateSession(t),setDefaultSession:()=>e.root.setDefaultSession(),saveSessionToLocalStorage:()=>e.root.saveSessionToLocalStorage(),loadAutosaveSession:()=>e.root.loadAutosaveSession(),setSession:t=>e.root.setSession(t)}))).actions((e=>({editTrackConfiguration(t){const{adminMode:n,sessionTracks:r}=e;if(!n&&!r.includes(t))throw new Error("Can't edit the configuration of a non-session track");e.editConfiguration(t)}}))).views((e=>({getTrackActionMenuItems(t){const{adminMode:n,sessionTracks:r}=e,o=n||r.find((e=>e.trackId===t.trackId)),s="ReferenceSequenceTrack"===t.type;return[{label:"About track",priority:1002,onClick:()=>{e.queueDialog((e=>[jt,{config:t,handleClose:e}]))},icon:Dt.A},{label:"Settings",priority:1001,disabled:!o,onClick:()=>{e.editTrackConfiguration(t)},icon:tt.A},{label:"Delete track",priority:1e3,disabled:!o||s,onClick:()=>e.deleteTrackConf(t),icon:$t.A},{label:"Copy track",priority:999,disabled:s,onClick:()=>{const n=gt()((0,u.getSnapshot)(t)),r=Date.now();n.trackId+=`-${r}`,n.displays.forEach((e=>{e.displayId+=`-${r}`})),e.adminMode||(n.trackId+="-sessionTrack",n.category=void 0),n.name+=" (copy)",e.addTrackConf(n)},icon:rt.A}]}}))).actions((e=>({afterAttach(){(0,u.addDisposer)(e,(0,Ce.autorun)((()=>{(0,q.localStorageSetItem)("drawerPosition",e.drawerPosition),(0,q.localStorageSetItem)("themeName",e.themeName)})))}})));var o;const s=e.evaluateExtensionPoint("Core-extendSession",n);return u.types.snapshotProcessor(s,{preProcessor(e){const{connectionInstances:t,...n}=e||{};return Array.isArray(t)?e:n}})}function Wt({pluginManager:e,assemblyConfigSchema:t}){return zt({pluginManager:e,assemblyConfigSchema:t})}var Ut=n(63163);function Ft(e){const t=new Ze.A([...Ut.A.map((e=>({plugin:new e,metadata:{isCore:!0}}))),...e.runtimePlugins.map((({plugin:e,definition:t})=>({plugin:new e,definition:t,metadata:{url:t.url}}))),...e.sessionPlugins.map((({plugin:e,definition:t})=>({plugin:new e,definition:t,metadata:{url:t.url}})))]);t.createPluggableElements();const n=Pt({pluginManager:t,sessionModelFactory:Wt,adminMode:!!e.adminKey});if(!e.configSnapshot)return;const r=n.create({jbrowse:e.configSnapshot,configPath:e.configPath},{pluginManager:t});e.configSnapshot.configuration?.rpc?.defaultDriver||r.jbrowse.configuration.rpc.defaultDriver.set("WebWorkerRpcDriver");let o=()=>{};try{if(e.sessionError)throw e.sessionError;e.sessionSnapshot?r.setSession(e.sessionSnapshot):e.sessionSpec?o=function({views:e,sessionTracks:t=[]},n){return async()=>{const{rootModel:r}=n;if(!r)throw new Error("rootModel not initialized");try{r.setSession({name:`New session ${(new Date).toLocaleString()}`}),t.forEach((e=>r.session.addTrackConf(e))),await Promise.all(e.map((e=>n.evaluateAsyncExtensionPoint(`LaunchView-${e.type}`,{...e,session:r.session}))))}catch(e){console.error(e),r.session?.notify(`${e}`)}}}(e.sessionSpec,t):r.jbrowse.defaultSession?.views?.length&&r.setDefaultSession()}catch(t){r.setDefaultSession();const n=`${t}`.replace("[mobx-state-tree] ","").replace(/\(.+/,""),o=n.length>1e3?`${n.slice(0,1e3)}...see more in console`:n,s=o.startsWith("Error:")?o:`Error: ${o}`;r.session?.notifyError(`${s}. If you received this URL from another user, request that they send you a session generated with the "Share" button instead of copying and pasting their URL`,e.sessionError,e.sessionSnapshot),console.error(t)}return function(e,t,n){e&&!(0,I.readConfObject)(e.jbrowse.configuration,"disableAnalytics")&&(async function(e,t,n){try{const r="https://analytics.jbrowse.org/api/v1",o=e.jbrowse.tracks.filter((e=>((0,I.readConfObject)(e,"assemblyNames")||[]).length>1)).length,s=Object.keys(localStorage).filter((e=>e.includes("localSaved-"))).length,{jbrowse:a,session:i,version:l}=e,{tracks:c,assemblies:u,plugins:d}=a,m={ver:l,"plugins-count":d?.length||0,"plugin-names":d?.map((e=>e.name)).join(","),"assemblies-count":u.length,"tracks-count":c.length,"session-tracks-count":i?.sessionTracks.length||0,"open-views":i?.views.length||0,"synteny-tracks-count":o,"saved-sessions-count":s,"existing-session-param-type":n?.split("-")[0]||"none","scn-h":window.screen.height,"scn-w":window.screen.width,"win-h":window.innerHeight,"win-w":window.innerWidth,electron:q.isElectron,loadTime:(Date.now()-t)/1e3,jb2:!0};c.forEach((e=>{const t=`track-types-${e.type}`;m[t]=m[t]+1||1})),i?.sessionTracks.forEach((e=>{const t=`sessionTrack-types-${e.type}`;m[t]=m[t]+1||1}));const p=Object.keys(m).map((e=>`${e}=${m[e]}`)).join("&");await fetch(`${r}?${p}`)}catch(e){console.error("Failed to write analytics to AWS.",e)}}(e,t,n),async function(e,t){const n={"tracks-count":e.jbrowse.tracks.length,ver:e.version,electron:q.isElectron,loadTime:Date.now()-t,pluginNames:e.jbrowse.plugins?.map((e=>e.name))||""};let r="(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){";r+="(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),",r+="m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)",r+="})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');",r+="ga('create', 'UA-7115575-5', 'auto', 'jbrowseTracker');";const o={};"tracks-count ver electron loadTime pluginNames".split(/\s+/).forEach(((e,t)=>{o[`dimension${t+1}`]=n[e]})),o.metric1=Math.round(n.loadTime),r+=`ga('jbrowseTracker.send', 'pageview',${JSON.stringify(o)});`;const s=document.createElement("script");s.innerHTML=r,document.getElementsByTagName("head")[0].append(s)}(e,t))}(r,e.initialTimestamp,e.sessionQuery),t.setRootModel(r),t.configure(),o(),t}function Vt(){return Vt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vt.apply(null,arguments)}const Bt=(0,r.lazy)((()=>n.e(3116).then(n.bind(n,93116)))),qt=(0,r.lazy)((()=>n.e(7564).then(n.bind(n,7564)))),Gt=(0,r.lazy)((()=>Promise.all([n.e(6499),n.e(2189)]).then(n.bind(n,12189))));function _t(e){return null===e?void 0:e}function Ht({initialTimestamp:e=Date.now()}){const t=a.StringParam,[n]=(0,a.useQueryParam)("config",t),[o]=(0,a.useQueryParam)("session",t),[s]=(0,a.useQueryParam)("adminKey",t),[i,l]=(0,a.useQueryParam)("password",t),[c,u]=(0,a.useQueryParam)("loc",t),[d,m]=(0,a.useQueryParam)("sessionTracks",t),[p,f]=(0,a.useQueryParam)("assembly",t),[g,h]=(0,a.useQueryParam)("tracks",t),[y,w]=(0,a.useQueryParam)("highlight",t),[b,v]=(0,a.useQueryParam)("nav",t),[S,A]=(0,a.useQueryParam)("tracklist",t),C=Ke.create({configPath:_t(n),sessionQuery:_t(o),password:_t(i),adminKey:_t(s),loc:_t(c),assembly:_t(p),tracks:_t(g),sessionTracks:_t(d),tracklist:JSON.parse(_t(S)||"false"),highlight:_t(y),nav:JSON.parse(_t(b)||"true"),initialTimestamp:e});return(0,r.useEffect)((()=>{u(void 0,"replaceIn"),h(void 0,"replaceIn"),f(void 0,"replaceIn"),l(void 0,"replaceIn"),m(void 0,"replaceIn"),A(void 0,"replaceIn"),v(void 0,"replaceIn"),w(void 0,"replaceIn")}),[f,u,v,A,h,l,m,w]),r.createElement(Kt,{loader:C})}const Jt=(0,o.observer)((function({sessionTriaged:e,loader:t}){return r.createElement(r.Suspense,{fallback:null},"session"===e.origin?r.createElement(qt,{loader:t,handleClose:()=>{t.setSessionTriaged(void 0)}}):r.createElement(Bt,{loader:t,handleClose:()=>{t.setSessionTriaged(void 0)}}))})),Qt=(0,o.observer)((function({pluginManager:e}){const{rootModel:t}=e;return t?.session?r.createElement(qe,{pluginManager:e}):r.createElement(r.Suspense,{fallback:r.createElement(l.LoadingEllipses,null)},r.createElement(Gt,{rootModel:t,onFactoryReset:Ge.A}))})),Kt=(0,o.observer)((function({loader:e}){const{configError:t,ready:n,sessionTriaged:o}=e,[s,a]=(0,r.useState)(),[i,l]=(0,r.useState)();(0,r.useEffect)((()=>{let t;try{if(!n)return;t=Ft(e),a(t)}catch(e){console.error(e),l(e)}}),[e,n]);const u=t||i;return u?r.createElement(Ye,{error:u}):o?r.createElement(Jt,{loader:e,sessionTriaged:o}):s?r.createElement(Qt,{pluginManager:s}):r.createElement(c.A,null)})),Yt=function({initialTimestamp:e}){return r.createElement(s.tH,{FallbackComponent:e=>r.createElement(l.FatalErrorDialog,Vt({},e,{resetButtonText:"Reset Session",onFactoryReset:Ge.A}))},r.createElement(a.QueryParamProvider,{adapter:i.Q},r.createElement(Ht,{initialTimestamp:e})))}},55252:(e,t,n)=>{async function r(){window.location=window.location.pathname}n.d(t,{A:()=>r})},17765:(e,t,n)=>{n.d(t,{J:()=>i,Z:()=>l});var r=n(49409);const o=async(e,t)=>(await Promise.all([n.e(7753),n.e(9831),n.e(5156)]).then(n.t.bind(n,29831,23))).encrypt(e,t).toString(),s=async(e,t)=>{const r=await Promise.all([n.e(7753),n.e(9831),n.e(5156)]).then(n.t.bind(n,29831,23)),o=await Promise.all([n.e(7753),n.e(6235)]).then(n.t.bind(n,12598,23));return r.decrypt(e,t).toString(o)};function a(e){try{return JSON.parse(e).message}catch(t){return e}}async function i(e,t,n){const s=await(0,r.eW)(JSON.stringify(e)),i=window.btoa([...window.crypto.getRandomValues(new Uint8Array(10))].map((e=>String.fromCharCode(e))).join("")).replaceAll(/[+/]/g,"").slice(0,5);const l=await o(s,i),c=new FormData;c.append("session",l),c.append("dateShared",`${Date.now()}`),c.append("referer",n);const u=await fetch(`${t}share`,{method:"POST",mode:"cors",body:c});if(!u.ok){const e=await u.text();throw new Error(a(e))}return{json:await u.json(),encryptedSession:l,password:i}}async function l(e,t,n,r){const o=t.split("share-")[1],i=`${e}?sessionId=${encodeURIComponent(o)}`,l=await fetch(i,{signal:r});if(!l.ok){const e=await l.text();throw new Error(a(e))}const c=await l.json();return s(c.session,n)}},49409:(e,t,n)=>{n.d(t,{K$:()=>d,LP:()=>s,Vr:()=>c,XE:()=>l,eW:()=>a,pK:()=>i,pS:()=>u});var r=n(59773),o=n(36422);async function s(e){const t=function(e){let t=0;switch(e.length%4){case 3:t=1;break;case 2:t=2;break;case 0:t=0;break;default:throw new Error("base64 not a valid length")}return e+"=".repeat(t)}(e.replaceAll("-","+").replaceAll("_","/")),{toByteArray:r}=await Promise.resolve().then(n.t.bind(n,47130,19)),{inflate:o}=await n.e(7864).then(n.t.bind(n,57864,23)),s=o(r(t));return(new TextDecoder).decode(s)}async function a(e){const t=(new TextEncoder).encode(e),{deflate:r}=await n.e(7864).then(n.t.bind(n,57864,23)),{fromByteArray:o}=await Promise.resolve().then(n.t.bind(n,47130,19)),s=o(r(t)),a=s.indexOf("=");return a>0?s.slice(0,a).replaceAll("+","-").replaceAll("/","_"):s.replaceAll("+","-").replaceAll("/","_")}function i(e,t){if(void 0!==e)if((0,o.isArrayType)(t)){const t=e,n=(0,o.getChildType)(e);if((0,o.isReferenceType)(n))for(let e=0;e<t.length;)(0,o.isValidReference)((()=>t[e]))?e+=1:t.splice(e,1);t.forEach((e=>{i(e,n)}))}else if((0,o.isMapType)(t)){const t=e,n=(0,o.getChildType)(t);if((0,o.isReferenceType)(n))for(const e in t.keys())(0,o.isValidReference)((()=>t.get(e)))||t.delete(e);t.forEach((e=>{i(e,n)}))}else if((0,o.isModelType)(t)){const{properties:t}=(0,o.getPropertyMembers)(e);Object.entries(t).forEach((([t,n])=>{i(e[t],n)}))}}function l(e,t){if("object"==typeof e&&null!==e)for(const n of Object.keys(e))"object"==typeof e[n]&&null!==e[n]?l(e[n],t):"uri"===n&&(e.baseUri=t.href)}function c({configuration:e},t,n){return e?.[t]||n}async function u(e){if(0===e.length)return!0;const t=await async function(){const e=await fetch("https://jbrowse.org/plugin-store/plugins.json");if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText} fetching plugins`);return e.json()}();return e.every((e=>(0,r.rE)(e)?t.plugins.some((t=>(0,r.rE)(e)&&("url"in t&&"url"in e&&e.url===t.url||"umdUrl"in t&&"umdUrl"in e&&e.umdUrl===t.umdUrl))):(0,r.Cx)(e)?t.plugins.some((t=>(0,r.Cx)(e)&&"esmUrl"in e&&e.esmUrl===t.esmUrl)):!!(0,r.Nz)(e)&&t.plugins.some((t=>(0,r.Nz)(e)&&e.cjsUrl===t.cjsUrl))))}function d(e,t){for(const n in e)n===t?delete e[n]:"object"==typeof e[n]&&d(e[n],t);return e}}}]);
+//# sourceMappingURL=3120.3940249f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3120.3940249f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3120.3940249f.chunk.js","mappings":"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","sources":["../../../packages/core/PluginLoader.ts","../../../packages/core/data_adapters/dataAdapterCache.ts","../../../packages/core/rpc/remoteAbortSignals.ts","../../../packages/core/ui/CascadingMenu.tsx","../../../packages/core/ui/Dialog.tsx","../../../packages/core/ui/EditableTypography.tsx","../../../packages/core/ui/ErrorMessage.tsx","../../../packages/core/ui/FactoryResetDialog.tsx","../../../packages/core/ui/Icons.tsx","../../../packages/core/ui/Logo.tsx","../../../packages/core/ui/Menu.tsx","../../../packages/core/ui/ResizeHandle.tsx","../../../packages/core/ui/ReturnToImportFormDialog.tsx","../../../packages/core/ui/SanitizedHTML.tsx","../../../packages/core/ui/theme.ts","../../../packages/core/ui/AssemblySelector.tsx","../../../packages/core/ui/FileSelector/FileSelector.tsx","../../../packages/core/ui/PrerenderedCanvas.tsx","../../../packages/core/util/QuickLRU.js","../../../packages/core/util/index.ts","../../../packages/core/util/tracks.ts","../../../packages/core/util/types/mst.ts","../../../packages/product-core/src/Session/BaseSession.ts","../../../packages/product-core/src/Session/Connections.ts","../../../plugins/data-management/src/index.ts","../../../packages/core/ui/Snackbar.tsx","../../../packages/core/ui/DropDownMenu.tsx","../../../packages/core/ui/AppLogo.tsx","../../../packages/app-core/src/ui/App/AppToolbar.tsx","../../../packages/app-core/src/ui/App/DialogQueue.tsx","../../../packages/app-core/src/ui/App/AppFab.tsx","../../../packages/app-core/src/ui/App/ViewLauncher.tsx","../../../packages/app-core/src/ui/App/ViewMenu.tsx","../../../packages/app-core/src/ui/App/ViewContainerTitle.tsx","../../../packages/app-core/src/ui/App/ViewHeader.tsx","../../../packages/app-core/src/ui/App/ViewContainer.tsx","../../../packages/app-core/src/ui/App/ViewPanel.tsx","../../../packages/app-core/src/ui/App/ViewsContainer.tsx","../../../packages/app-core/src/ui/App/App.tsx","../../../packages/core/util/TimeTraveller.ts","../../../packages/core/rpc/baseRpcConfig.ts","../../../packages/core/rpc/webWorkerRpcConfig.ts","../../../packages/core/rpc/mainThreadRpcConfig.ts","../../../packages/core/rpc/configSchema.ts","../../../packages/core/rpc/BaseRpcDriver.ts","../../../packages/core/rpc/WebWorkerRpcDriver.ts","../../../packages/core/rpc/MainThreadRpcDriver.ts","../../../packages/core/rpc/RpcManager.ts","components/ShareButton.tsx","components/JBrowse.tsx","SessionLoader.ts","components/StartScreenErrorMessage.tsx","makeWorkerInstance.ts","jbrowseModel.ts","../../../packages/core/assemblyManager/assembly.ts","rootModel/rootModel.ts","../../../packages/core/assemblyManager/assemblyConfigSchema.ts","../../../packages/app-core/src/JBrowseModel/index.ts","../../../packages/app-core/src/JBrowseConfig/index.ts","../../../packages/product-core/src/RootModel/FormatDetails.ts","../../../packages/product-core/src/RootModel/FormatAbout.ts","../../../packages/product-core/src/RootModel/HierarchicalConfig.ts","../../../packages/product-core/src/RootModel/BaseRootModel.ts","../../../packages/core/assemblyManager/assemblyManager.ts","../../../packages/product-core/src/RootModel/InternetAccounts.ts","../../../packages/app-core/src/HistoryManagement/index.ts","../../../packages/app-core/src/RootMenu/index.ts","../../../packages/product-core/src/Session/ReferenceManagement.ts","../../../packages/product-core/src/Session/DrawerWidgets.ts","../../../packages/core/ui/SnackbarModel.tsx","../../../packages/web-core/src/BaseWebSession/index.ts","../../../packages/product-core/src/Session/DialogQueue.ts","../../../packages/product-core/src/Session/Themes.ts","../../../packages/product-core/src/Session/MultipleViews.ts","../../../packages/product-core/src/Session/SessionTracks.ts","../../../packages/product-core/src/Session/Tracks.ts","../../../packages/app-core/src/Assemblies/SessionAssembliesMixin.ts","../../../packages/app-core/src/Assemblies/TemporaryAssembliesMixin.ts","../../../packages/web-core/src/SessionConnections.ts","../../../packages/app-core/src/AppFocus/index.ts","sessionModel/index.ts","createPluginManager.ts","../../../packages/core/util/analytics.ts","components/Loader.tsx","factoryReset.ts","sessionSharing.ts","util.ts"],"sourcesContent":["import domLoadScript from 'load-script'\n\n// locals\nimport Plugin, { PluginConstructor } from './Plugin'\nimport ReExports from './ReExports'\nimport { isElectron } from './util'\n\nexport interface UMDLocPluginDefinition {\n  umdLoc: {\n    uri: string\n    baseUri?: string\n  }\n  name: string\n}\n\nexport interface UMDUrlPluginDefinition {\n  umdUrl: string\n  name: string\n}\n\nexport interface LegacyUMDPluginDefinition {\n  url: string\n  name: string\n}\n\ntype UMDPluginDefinition = UMDLocPluginDefinition | UMDUrlPluginDefinition\n\nexport function isUMDPluginDefinition(\n  def: PluginDefinition,\n): def is UMDPluginDefinition | LegacyUMDPluginDefinition {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    ((def as UMDUrlPluginDefinition).umdUrl !== undefined ||\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      (def as LegacyUMDPluginDefinition).url !== undefined ||\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      (def as UMDLocPluginDefinition).umdLoc !== undefined) &&\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as LegacyUMDPluginDefinition | UMDPluginDefinition).name !== undefined\n  )\n}\n\nexport interface ESMLocPluginDefinition {\n  esmLoc: {\n    uri: string\n    baseUri?: string\n  }\n}\nexport interface ESMUrlPluginDefinition {\n  esmUrl: string\n}\n\nexport type ESMPluginDefinition =\n  | ESMLocPluginDefinition\n  | ESMUrlPluginDefinition\n\nexport function isESMPluginDefinition(\n  def: PluginDefinition,\n): def is ESMPluginDefinition {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as ESMUrlPluginDefinition).esmUrl !== undefined ||\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (def as ESMLocPluginDefinition).esmLoc !== undefined\n  )\n}\n\nexport interface CJSPluginDefinition {\n  cjsUrl: string\n}\n\nfunction promisifiedLoadScript(src: string) {\n  return new Promise((resolve, reject) => {\n    domLoadScript(src, (err, script) => {\n      if (err) {\n        reject(err)\n      } else {\n        resolve(script.src)\n      }\n    })\n  })\n}\n\nasync function loadScript(scriptUrl: string) {\n  if (!isInWebWorker()) {\n    return promisifiedLoadScript(scriptUrl)\n  }\n\n  // @ts-expect-error\n  if (globalThis.importScripts) {\n    // @ts-expect-error\n    await globalThis.importScripts(scriptUrl)\n    return\n  }\n  throw new Error(\n    'cannot figure out how to load external JS scripts in this environment',\n  )\n}\n\nexport function isCJSPluginDefinition(\n  def: PluginDefinition,\n): def is CJSPluginDefinition {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  return (def as CJSPluginDefinition).cjsUrl !== undefined\n}\n\nexport type PluginDefinition =\n  | UMDUrlPluginDefinition\n  | UMDLocPluginDefinition\n  | LegacyUMDPluginDefinition\n  | ESMLocPluginDefinition\n  | ESMUrlPluginDefinition\n  | CJSPluginDefinition\n\nexport interface PluginRecord {\n  plugin: PluginConstructor\n  definition: PluginDefinition\n}\n\nexport interface LoadedPlugin {\n  default: PluginConstructor\n}\n\nexport function pluginDescriptionString(pluginDefinition: PluginDefinition) {\n  if (isUMDPluginDefinition(pluginDefinition)) {\n    return `UMD plugin ${pluginDefinition.name}`\n  }\n  if (isESMPluginDefinition(pluginDefinition)) {\n    return `ESM plugin ${\n      (pluginDefinition as ESMUrlPluginDefinition).esmUrl ||\n      (pluginDefinition as ESMLocPluginDefinition).esmLoc.uri\n    }`\n  }\n  if (isCJSPluginDefinition(pluginDefinition)) {\n    return `CJS plugin ${pluginDefinition.cjsUrl}`\n  }\n  return 'unknown plugin'\n}\n\nfunction isInWebWorker() {\n  return Boolean('WorkerGlobalScope' in globalThis)\n}\n\nexport default class PluginLoader {\n  definitions: PluginDefinition[] = []\n\n  fetchESM?: (url: string) => Promise<LoadedPlugin>\n  fetchCJS?: (url: string) => Promise<LoadedPlugin>\n\n  constructor(\n    defs: PluginDefinition[] = [],\n    args?: {\n      fetchESM?: (url: string) => Promise<LoadedPlugin>\n      fetchCJS?: (url: string) => Promise<LoadedPlugin>\n    },\n  ) {\n    this.fetchESM = args?.fetchESM\n    this.fetchCJS = args?.fetchCJS\n    this.definitions = JSON.parse(JSON.stringify(defs))\n  }\n\n  async loadCJSPlugin(def: CJSPluginDefinition, baseUri?: string) {\n    const parsedUrl = new URL(def.cjsUrl, baseUri)\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `Cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n    if (!this.fetchCJS) {\n      throw new Error('No fetchCJS callback provided')\n    }\n\n    return this.fetchCJS(parsedUrl.href)\n  }\n\n  async loadESMPlugin(def: ESMPluginDefinition, baseUri?: string) {\n    const parsedUrl =\n      'esmUrl' in def\n        ? new URL(def.esmUrl, baseUri)\n        : new URL(def.esmLoc.uri, def.esmLoc.baseUri)\n\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n\n    if (!this.fetchESM) {\n      throw new Error('No ESM fetcher installed')\n    }\n    const plugin = await this.fetchESM(parsedUrl.href)\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (!plugin) {\n      throw new Error(`Could not load ESM plugin: ${parsedUrl}`)\n    }\n    return plugin\n  }\n\n  async loadUMDPlugin(\n    def: UMDPluginDefinition | LegacyUMDPluginDefinition,\n    baseUri?: string,\n  ) {\n    const parsedUrl =\n      'url' in def\n        ? new URL(def.url, baseUri)\n        : 'umdUrl' in def\n          ? new URL(def.umdUrl, baseUri)\n          : new URL(def.umdLoc.uri, def.umdLoc.baseUri)\n\n    if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n      throw new Error(\n        `cannot load plugins using protocol \"${parsedUrl.protocol}\"`,\n      )\n    }\n    const moduleName = def.name\n    const umdName = `JBrowsePlugin${moduleName}`\n    if (typeof jest === 'undefined') {\n      await loadScript(parsedUrl.href)\n    } else {\n      // @ts-expect-error\n      globalThis[umdName] = { default: Plugin }\n    }\n\n    // @ts-expect-error\n    const plugin = globalThis[umdName] as\n      | { default: PluginConstructor }\n      | undefined\n    if (!plugin) {\n      throw new Error(\n        `Failed to load UMD bundle for ${moduleName}, ${umdName} is undefined`,\n      )\n    }\n    return plugin\n  }\n\n  async loadPlugin(def: PluginDefinition, baseUri?: string) {\n    let plugin: LoadedPlugin\n    if (isElectron && isCJSPluginDefinition(def)) {\n      plugin = await this.loadCJSPlugin(def, baseUri)\n    } else if (isESMPluginDefinition(def)) {\n      plugin = await this.loadESMPlugin(def, baseUri)\n    } else if (isUMDPluginDefinition(def)) {\n      plugin = await this.loadUMDPlugin(def, baseUri)\n    } else if (!isElectron && isCJSPluginDefinition(def)) {\n      throw new Error(\n        `CommonJS plugin found, but not in a NodeJS environment: ${JSON.stringify(\n          def,\n        )}`,\n      )\n    } else {\n      throw new Error(`Could not determine plugin type: ${JSON.stringify(def)}`)\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (!plugin.default) {\n      throw new Error(\n        `${pluginDescriptionString(\n          def,\n        )} does not have a default export, cannot load`,\n      )\n    }\n    return plugin.default\n  }\n\n  installGlobalReExports(target: WindowOrWorkerGlobalScope) {\n    // @ts-expect-error\n    target.JBrowseExports = Object.fromEntries(\n      Object.entries(ReExports).map(([moduleName, module]) => {\n        return [moduleName, module]\n      }),\n    )\n    return this\n  }\n\n  async load(baseUri?: string) {\n    return Promise.all(\n      this.definitions.map(async definition => ({\n        plugin: await this.loadPlugin(definition, baseUri),\n        definition,\n      })),\n    )\n  }\n}\n","import { SnapshotIn } from 'mobx-state-tree'\nimport PluginManager from '../PluginManager'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport { AnyDataAdapter } from './BaseAdapter'\nimport idMaker from '../util/idMaker'\n\ntype ConfigSnap = SnapshotIn<AnyConfigurationSchemaType>\n\nexport function adapterConfigCacheKey(conf: Record<string, unknown> = {}) {\n  return `${idMaker(conf)}`\n}\n\ninterface AdapterCacheEntry {\n  dataAdapter: AnyDataAdapter\n  sessionIds: Set<string>\n}\n\nlet adapterCache: Record<string, AdapterCacheEntry> = {}\n\n/**\n * instantiate a data adapter, or return an already-instantiated one if we have\n * one with the same configuration\n *\n * @param pluginManager\n *\n * @param sessionId - session ID of the associated worker session. used for\n * reference counting\n *\n * @param adapterConfigSnapshot - plain-JS configuration snapshot for the\n * adapter\n */\nexport async function getAdapter(\n  pluginManager: PluginManager,\n  sessionId: string,\n  adapterConfigSnapshot: SnapshotIn<AnyConfigurationSchemaType>,\n): Promise<AdapterCacheEntry> {\n  // cache the adapter object\n  const cacheKey = adapterConfigCacheKey(adapterConfigSnapshot)\n  if (!adapterCache[cacheKey]) {\n    const adapterType = adapterConfigSnapshot?.type\n\n    if (!adapterType) {\n      throw new Error(\n        `could not determine adapter type from adapter config snapshot ${JSON.stringify(\n          adapterConfigSnapshot,\n        )}`,\n      )\n    }\n    const dataAdapterType = pluginManager.getAdapterType(adapterType)\n    if (!dataAdapterType) {\n      throw new Error(`unknown data adapter type ${adapterType}`)\n    }\n\n    // instantiate the data adapter's config schema so it gets its defaults,\n    // callbacks, etc\n    const adapterConfig = dataAdapterType.configSchema.create(\n      adapterConfigSnapshot,\n      { pluginManager },\n    )\n\n    const getSubAdapter = getAdapter.bind(null, pluginManager, sessionId)\n    const CLASS = await dataAdapterType.getAdapterClass()\n    const dataAdapter = new CLASS(adapterConfig, getSubAdapter, pluginManager)\n\n    // store it in our cache\n    adapterCache[cacheKey] = {\n      dataAdapter,\n      sessionIds: new Set([sessionId]),\n    }\n  }\n\n  const cacheEntry = adapterCache[cacheKey]\n  cacheEntry.sessionIds.add(sessionId)\n\n  return cacheEntry\n}\n\n/**\n * this is a callback that is passed to adapters that\n * allows them to get any sub-adapters that they need\n * internally, staying with the same worker session ID\n */\nexport type getSubAdapterType = (\n  adapterConfigSnap: ConfigSnap,\n) => ReturnType<typeof getAdapter>\n\nexport function freeAdapterResources(specification: Record<string, any>) {\n  let deleteCount = 0\n  const specKeys = Object.keys(specification)\n\n  // if we don't specify a range, delete any adapters that are only associated\n  // with that session\n  if (specKeys.length === 1 && specKeys[0] === 'sessionId') {\n    const { sessionId } = specification\n    Object.entries(adapterCache).forEach(([cacheKey, cacheEntry]) => {\n      cacheEntry.sessionIds.delete(sessionId)\n      if (cacheEntry.sessionIds.size === 0) {\n        deleteCount += 1\n        delete adapterCache[cacheKey]\n      }\n    })\n  } else {\n    // otherwise call freeResources on all the cached data adapters\n    Object.values(adapterCache).forEach(cacheEntry => {\n      const regions =\n        specification.regions ||\n        (specification.region ? [specification.region] : [])\n      for (const region of regions) {\n        if (region.refName !== undefined) {\n          cacheEntry.dataAdapter.freeResources(region)\n        }\n      }\n    })\n  }\n\n  return deleteCount\n}\n\nexport function clearAdapterCache() {\n  adapterCache = {}\n}\n","/* ---------------- for the RPC client ----------------- */\n\nlet abortSignalCounter = 0\nexport interface RemoteAbortSignal {\n  abortSignalId: number\n}\nconst abortSignalIds = new WeakMap<AbortSignal, number>() // map of abortsignal => numerical ID\n\n/**\n * assign an ID to the given abort signal and return a plain object\n * representation\n *\n * @param signal - the signal to serialize\n * @param callfunc - function used to call\n *  a remote method, will be called like callfunc('signalAbort', signalId)\n */\nexport function serializeAbortSignal(\n  signal: AbortSignal,\n  callfunc: (name: string, abortSignalId: number) => void,\n): RemoteAbortSignal {\n  let abortSignalId = abortSignalIds.get(signal)\n  if (!abortSignalId) {\n    abortSignalCounter += 1\n    abortSignalIds.set(signal, abortSignalCounter)\n    abortSignalId = abortSignalCounter\n    signal.addEventListener('abort', () => {\n      const signalId = abortSignalIds.get(signal)\n      if (signalId !== undefined) {\n        callfunc('signalAbort', signalId)\n      }\n    })\n  }\n  return { abortSignalId }\n}\n\n/* ---------------- for the RPC server ----------------- */\n\n/**\n * test whether a given object\n * @param thing - the thing to test\n * @returns true if the thing is a remote abort signal\n */\nexport function isRemoteAbortSignal(\n  thing: unknown,\n): thing is RemoteAbortSignal {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'abortSignalId' in thing &&\n    typeof thing.abortSignalId === 'number'\n  )\n}\n\n// the server side keeps a set of surrogate abort controllers that can be\n// aborted based on ID\nconst surrogateAbortControllers = new Map<number, AbortController>() // numerical ID => surrogate abort controller\n\n/**\n * deserialize the result of serializeAbortSignal into an AbortSignal\n *\n * @param signal -\n * @returns an abort signal that corresponds to the given ID\n */\nexport function deserializeAbortSignal({\n  abortSignalId,\n}: RemoteAbortSignal): AbortSignal {\n  let surrogateAbortController = surrogateAbortControllers.get(abortSignalId)\n  if (!surrogateAbortController) {\n    surrogateAbortController = new AbortController()\n    surrogateAbortControllers.set(abortSignalId, surrogateAbortController)\n  }\n  return surrogateAbortController.signal\n}\n\n/**\n * fire an abort signal from a remote abort signal ID\n *\n * @param abortSignalId -\n */\nexport function remoteAbort(props: { signalId: number }) {\n  const { signalId: abortSignalId } = props\n  const surrogateAbortController = surrogateAbortControllers.get(abortSignalId)\n\n  if (surrogateAbortController) {\n    surrogateAbortController.abort()\n  }\n}\n\nexport function remoteAbortRpcHandler() {\n  return {\n    signalAbort: remoteAbort,\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport React, { useContext, useMemo } from 'react'\nimport {\n  Divider,\n  ListItemIcon,\n  ListItemText,\n  ListSubheader,\n  Menu,\n  MenuItem,\n  PopoverOrigin,\n  SvgIconProps,\n} from '@mui/material'\nimport { MenuItem as JBMenuItem, MenuItemEndDecoration } from './Menu'\nimport {\n  bindHover,\n  bindFocus,\n  bindMenu,\n  usePopupState,\n  PopupState,\n} from 'material-ui-popup-state/hooks'\nimport HoverMenu from 'material-ui-popup-state/HoverMenu'\nimport ChevronRight from '@mui/icons-material/ChevronRight'\n\nconst CascadingContext = React.createContext({\n  parentPopupState: null,\n  rootPopupState: null,\n} as { parentPopupState: PopupState | null; rootPopupState: PopupState | null })\n\nfunction CascadingMenuItem({\n  onClick,\n  closeAfterItemClick,\n  ...props\n}: {\n  closeAfterItemClick: boolean\n  onClick?: Function\n  disabled?: boolean\n  children: React.ReactNode\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  if (!rootPopupState) {\n    throw new Error('must be used inside a CascadingMenu')\n  }\n\n  return (\n    <MenuItem\n      {...props}\n      onClick={event => {\n        if (closeAfterItemClick) {\n          rootPopupState.close()\n        }\n        onClick?.(event)\n      }}\n    />\n  )\n}\n\nfunction CascadingSubmenu({\n  title,\n  Icon,\n  inset,\n  popupId,\n  ...props\n}: {\n  children: React.ReactNode\n  title: React.ReactNode\n  onMenuItemClick: Function\n  Icon: React.ComponentType<SvgIconProps> | undefined\n\n  inset: boolean\n  menuItems: JBMenuItem[]\n  popupId: string\n}) {\n  const { parentPopupState } = useContext(CascadingContext)\n  const popupState = usePopupState({\n    popupId,\n    variant: 'popover',\n    parentPopupState,\n  })\n  return (\n    <>\n      <MenuItem {...bindHover(popupState)} {...bindFocus(popupState)}>\n        {Icon ? (\n          <ListItemIcon>\n            <Icon />\n          </ListItemIcon>\n        ) : null}\n        <ListItemText primary={title} inset={inset} />\n        <ChevronRight />\n      </MenuItem>\n      <CascadingSubmenuHover\n        {...props}\n        anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n        transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n        popupState={popupState}\n      />\n    </>\n  )\n}\n\nfunction CascadingSubmenuHover({\n  popupState,\n  onMenuItemClick,\n  menuItems,\n  classes,\n  ...props\n}: {\n  classes?: Record<string, string>\n  popupState: PopupState\n  anchorOrigin: PopoverOrigin\n  transformOrigin: PopoverOrigin\n  onMenuItemClick: Function\n  menuItems: JBMenuItem[]\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  const context = useMemo(\n    () => ({\n      rootPopupState: rootPopupState || popupState,\n      parentPopupState: popupState,\n    }),\n    [rootPopupState, popupState],\n  )\n\n  return (\n    <CascadingContext.Provider value={context}>\n      <HoverMenu {...props} {...bindMenu(popupState)} />\n    </CascadingContext.Provider>\n  )\n}\n\nfunction CascadingMenu({\n  popupState,\n  onMenuItemClick,\n  menuItems,\n  ...props\n}: {\n  popupState: PopupState\n  onMenuItemClick: Function\n  menuItems: JBMenuItem[]\n}) {\n  const { rootPopupState } = useContext(CascadingContext)\n  const context = useMemo(\n    () => ({\n      rootPopupState: rootPopupState || popupState,\n      parentPopupState: popupState,\n    }),\n    [rootPopupState, popupState],\n  )\n\n  return (\n    <CascadingContext.Provider value={context}>\n      <Menu {...props} {...bindMenu(popupState)} />\n    </CascadingContext.Provider>\n  )\n}\n\nfunction EndDecoration({ item }: { item: JBMenuItem }) {\n  if ('subMenu' in item) {\n    return <MenuItemEndDecoration type=\"subMenu\" />\n  } else if (item.type === 'checkbox' || item.type === 'radio') {\n    return (\n      <MenuItemEndDecoration\n        type={item.type}\n        checked={item.checked}\n        disabled={item.disabled}\n      />\n    )\n  }\n  return null\n}\n\nfunction CascadingMenuList({\n  onMenuItemClick,\n  closeAfterItemClick,\n  menuItems,\n  ...props\n}: {\n  menuItems: JBMenuItem[]\n  closeAfterItemClick: boolean\n  onMenuItemClick: Function\n}) {\n  function handleClick(callback: Function) {\n    return (event: React.MouseEvent<HTMLLIElement>) => {\n      onMenuItemClick(event, callback)\n    }\n  }\n\n  const hasIcon = menuItems.some(m => 'icon' in m && m.icon)\n  return (\n    <>\n      {menuItems\n        .sort((a, b) => (b.priority || 0) - (a.priority || 0))\n        .map((item, idx) => {\n          return 'subMenu' in item ? (\n            <CascadingSubmenu\n              key={`subMenu-${item.label}-${idx}`}\n              popupId={`subMenu-${item.label}`}\n              title={item.label}\n              Icon={item.icon}\n              inset={hasIcon && !item.icon}\n              onMenuItemClick={onMenuItemClick}\n              menuItems={item.subMenu}\n            >\n              <CascadingMenuList\n                {...props}\n                closeAfterItemClick={closeAfterItemClick}\n                onMenuItemClick={onMenuItemClick}\n                menuItems={item.subMenu}\n              />\n            </CascadingSubmenu>\n          ) : item.type === 'divider' ? (\n            <Divider\n              key={`divider-${JSON.stringify(item)}-${idx}`}\n              component=\"li\"\n            />\n          ) : item.type === 'subHeader' ? (\n            <ListSubheader key={`subHeader-${item.label}-${idx}`}>\n              {item.label}\n            </ListSubheader>\n          ) : (\n            <CascadingMenuItem\n              key={`${item.label}-${idx}`}\n              closeAfterItemClick={closeAfterItemClick}\n              onClick={\n                'onClick' in item ? handleClick(item.onClick) : undefined\n              }\n              disabled={Boolean(item.disabled)}\n            >\n              {item.icon ? (\n                <ListItemIcon>\n                  <item.icon />\n                </ListItemIcon>\n              ) : null}{' '}\n              <ListItemText\n                primary={item.label}\n                secondary={item.subLabel}\n                inset={hasIcon && !item.icon}\n              />\n              <div style={{ flexGrow: 1, minWidth: 10 }} />\n              <EndDecoration item={item} />\n            </CascadingMenuItem>\n          )\n        })}\n    </>\n  )\n}\n\nfunction CascadingMenuChildren(props: {\n  onMenuItemClick: Function\n  closeAfterItemClick?: boolean\n  menuItems: JBMenuItem[]\n  popupState: PopupState\n}) {\n  const { closeAfterItemClick = true, ...rest } = props\n  return (\n    <CascadingMenu {...rest}>\n      <CascadingMenuList {...rest} closeAfterItemClick={closeAfterItemClick} />\n    </CascadingMenu>\n  )\n}\n\nexport default CascadingMenuChildren\n","import React from 'react'\nimport {\n  Dialog as MUIDialog,\n  DialogTitle,\n  DialogProps,\n  Divider,\n  IconButton,\n  ScopedCssBaseline,\n  ThemeProvider,\n  createTheme,\n  useTheme,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { ErrorBoundary } from 'react-error-boundary'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n// locals\nimport ErrorMessage from './ErrorMessage'\nimport SanitizedHTML from './SanitizedHTML'\n\nconst useStyles = makeStyles()(theme => ({\n  closeButton: {\n    position: 'absolute',\n    right: theme.spacing(1),\n    top: theme.spacing(1),\n    color: theme.palette.grey[500],\n  },\n}))\n\nfunction DialogError({ error }: { error: unknown }) {\n  return (\n    <div style={{ width: 800, margin: 40 }}>\n      <ErrorMessage error={error} />\n    </div>\n  )\n}\n\ninterface Props extends DialogProps {\n  header?: React.ReactNode\n}\n\nconst Dialog = observer(function (props: Props) {\n  const { classes } = useStyles()\n  const { title, header, children, onClose } = props\n  const theme = useTheme()\n\n  return (\n    <MUIDialog {...props}>\n      <ScopedCssBaseline>\n        {React.isValidElement(header) ? (\n          header\n        ) : (\n          <DialogTitle>\n            <SanitizedHTML html={title || ''} />\n            {onClose ? (\n              <IconButton\n                className={classes.closeButton}\n                onClick={() => {\n                  // @ts-expect-error\n                  onClose()\n                }}\n              >\n                <CloseIcon />\n              </IconButton>\n            ) : null}\n          </DialogTitle>\n        )}\n        <Divider />\n\n        <ErrorBoundary FallbackComponent={DialogError}>\n          <ThemeProvider\n            theme={createTheme(theme, {\n              components: {\n                MuiInputBase: {\n                  styleOverrides: {\n                    input: {\n                      // xref https://github.com/GMOD/jbrowse-components/pull/3666\n                      boxSizing: 'content-box!important' as 'content-box',\n                    },\n                  },\n                },\n              },\n            })}\n          >\n            {children}\n          </ThemeProvider>\n        </ErrorBoundary>\n      </ScopedCssBaseline>\n    </MUIDialog>\n  )\n})\n\nexport default Dialog\n","import React, { useEffect, useState } from 'react'\nimport { InputBase, Typography, TypographyProps, useTheme } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport useMeasure from '@jbrowse/core/util/useMeasure'\n\ntype Variant = TypographyProps['variant']\n\ntype EditableTypographyClassKey =\n  | 'input'\n  | 'inputBase'\n  | 'inputRoot'\n  | 'inputFocused'\n\nconst useStyles = makeStyles()(theme => ({\n  input: {},\n  inputBase: {},\n  typography: {\n    top: 6,\n    left: 2,\n    position: 'absolute',\n    whiteSpace: 'nowrap',\n    visibility: 'hidden',\n  },\n  inputRoot: {\n    padding: theme.spacing(0.5),\n  },\n  inputFocused: {\n    borderStyle: 'solid',\n    borderWidth: 2,\n  },\n}))\n\ninterface Props {\n  value: string\n  setValue: (value: string) => void\n  variant: Variant\n  classes?: Partial<Record<EditableTypographyClassKey, string>>\n}\n\n// using forwardRef so that MUI Tooltip can wrap this component\nconst EditableTypography = React.forwardRef<HTMLDivElement, Props>(\n  function EditableTypography2(props, ref) {\n    const { value, setValue, variant, ...other } = props\n    const [ref2, { width }] = useMeasure()\n    const [editedValue, setEditedValue] = useState<string>()\n    const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null)\n    const [blur, setBlur] = useState(false)\n\n    useEffect(() => {\n      if (blur) {\n        inputNode?.blur()\n        setBlur(false)\n      }\n    }, [blur, inputNode])\n\n    // possibly tss-react does not understand the passing of props to\n    // useStyles, but it appears to work\n    // @ts-expect-error\n    const { classes } = useStyles(props, { props })\n    const theme = useTheme()\n\n    const val = editedValue === undefined ? value : editedValue\n\n    return (\n      <div {...other} ref={ref}>\n        <div style={{ position: 'relative' }}>\n          <Typography\n            ref={ref2}\n            component=\"span\"\n            variant={variant}\n            className={classes.typography}\n          >\n            {val}\n          </Typography>\n        </div>\n        <InputBase\n          inputRef={node => {\n            setInputNode(node)\n          }}\n          className={classes.inputBase}\n          inputProps={{\n            style: {\n              width,\n              ...(variant && variant !== 'inherit'\n                ? theme.typography[variant]\n                : {}),\n            },\n          }}\n          classes={{\n            input: classes.input,\n            root: classes.inputRoot,\n            focused: classes.inputFocused,\n          }}\n          value={val}\n          onChange={event => {\n            setEditedValue(event.target.value)\n          }}\n          onKeyDown={event => {\n            if (event.key === 'Enter') {\n              inputNode?.blur()\n            } else if (event.key === 'Escape') {\n              setEditedValue(undefined)\n              setBlur(true)\n            }\n          }}\n          onBlur={() => {\n            setValue(editedValue || value || '')\n            setEditedValue(undefined)\n          }}\n        />\n      </div>\n    )\n  },\n)\n\nexport default EditableTypography\n","import React, { Suspense, lazy, useState } from 'react'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport RedErrorMessageBox from './RedErrorMessageBox'\n\n// icons\nimport RefreshIcon from '@mui/icons-material/Refresh'\nimport ReportIcon from '@mui/icons-material/Report'\n\n// lazies\nconst ErrorMessageStackTraceDialog = lazy(\n  () => import('./ErrorMessageStackTraceDialog'),\n)\n\nconst useStyles = makeStyles()(theme => ({\n  bg: {\n    background: theme.palette.divider,\n    border: '1px solid black',\n    margin: 20,\n  },\n  iconFloat: {\n    float: 'right',\n    marginLeft: 100,\n  },\n}))\n\nfunction parseError(str: string) {\n  let snapshotError = ''\n  const findStr = 'is not assignable'\n  const idx = str.indexOf(findStr)\n  if (idx !== -1) {\n    const trim = str.slice(0, idx + findStr.length)\n    // best effort to make a better error message than the default\n    // mobx-state-tree\n\n    // case 1. element has a path\n    const match = /.*at path \"(.*)\" snapshot `(.*)` is not assignable/m.exec(\n      trim,\n    )\n    if (match) {\n      str = `Failed to load element at ${match[1]}...Failed element had snapshot`\n      snapshotError = match[2]!\n    }\n\n    // case 2. element has no path\n    const match2 = /.*snapshot `(.*)` is not assignable/.exec(trim)\n    if (match2) {\n      str = 'Failed to load element...Failed element had snapshot'\n      snapshotError = match2[1]!\n    }\n  }\n  return snapshotError\n}\n\nfunction ErrorButtons({\n  error,\n  onReset,\n}: {\n  error: unknown\n  onReset?: () => void\n}) {\n  const { classes } = useStyles()\n  const [showStack, setShowStack] = useState(false)\n  return (\n    <div className={classes.iconFloat}>\n      {typeof error === 'object' && error && 'stack' in error ? (\n        <Tooltip title=\"Get stack trace\">\n          <IconButton\n            onClick={() => {\n              setShowStack(true)\n            }}\n            color=\"primary\"\n          >\n            <ReportIcon />\n          </IconButton>\n        </Tooltip>\n      ) : null}\n      {onReset ? (\n        <Tooltip title=\"Retry\">\n          <IconButton onClick={onReset} color=\"primary\">\n            <RefreshIcon />\n          </IconButton>\n        </Tooltip>\n      ) : null}\n      {showStack ? (\n        <Suspense fallback={null}>\n          <ErrorMessageStackTraceDialog\n            error={error}\n            onClose={() => {\n              setShowStack(false)\n            }}\n          />\n        </Suspense>\n      ) : null}\n    </div>\n  )\n}\n\nfunction ErrorMessage({\n  error,\n  onReset,\n}: {\n  error: unknown\n  onReset?: () => void\n}) {\n  const { classes } = useStyles()\n  const str = `${error}`\n  const str2 = str.indexOf('expected an instance of')\n  const str3 = str2 !== -1 ? str.slice(0, str2) : str\n  const snapshotError = parseError(str)\n  return (\n    <RedErrorMessageBox>\n      {str3.slice(0, 10000)}\n      <ErrorButtons error={error} onReset={onReset} />\n      {snapshotError ? (\n        <pre className={classes.bg}>\n          {JSON.stringify(JSON.parse(snapshotError), null, 2)}\n        </pre>\n      ) : null}\n    </RedErrorMessageBox>\n  )\n}\n\nexport default ErrorMessage\n","import React from 'react'\nimport {\n  Button,\n  DialogContent,\n  DialogContentText,\n  DialogActions,\n} from '@mui/material'\nimport Dialog from '@jbrowse/core/ui/Dialog'\n\nexport default function FactoryResetDialog({\n  onClose,\n  open,\n  onFactoryReset,\n}: {\n  onClose: () => void\n  open: boolean\n  onFactoryReset: () => void\n}) {\n  function handleDialogClose(action?: string) {\n    if (action === 'reset') {\n      onFactoryReset()\n    }\n    onClose()\n  }\n\n  return (\n    <Dialog\n      title=\"Reset\"\n      onClose={() => {\n        handleDialogClose()\n      }}\n      open={open}\n    >\n      <DialogContent>\n        <DialogContentText>\n          Are you sure you want to reset? This will restore the default\n          configuration.\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleDialogClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          onClick={() => {\n            handleDialogClose('reset')\n          }}\n          color=\"primary\"\n          variant=\"contained\"\n        >\n          OK\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon'\nimport React from 'react'\n\n// Icons below come from https://material.io/resources/icons/?icon=line_style&style=baseline\nexport function ContentCopy(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\" />\n    </SvgIcon>\n  )\n}\n\n// https://materialdesignicons.com/ text-search icon\nexport function Indexing(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z\" />\n    </SvgIcon>\n  )\n}\n\nexport function ContentCut(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z\" />\n    </SvgIcon>\n  )\n}\n\nexport function ContentPaste(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z\" />\n    </SvgIcon>\n  )\n}\n\n//  format-list-checkbox from https://materialdesignicons.com/\nexport function TrackSelector(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z\" />\n    </SvgIcon>\n  )\n}\n\n//  content-save-edit from https://materialdesignicons.com/\nexport function SaveAs(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z\"\n      />\n    </SvgIcon>\n  )\n}\n\n//  content-save from https://materialdesignicons.com/\nexport function Save(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z\"\n      />\n    </SvgIcon>\n  )\n}\n\n//  dna from https://materialdesignicons.com/\nexport function DNA(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z\"\n      />\n    </SvgIcon>\n  )\n}\n\nexport function Cable(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z\" />\n    </SvgIcon>\n  )\n}\n","import React from 'react'\n\ntype LogoVariant = 'color' | 'black' | 'white'\n\ninterface LogoProps {\n  variant?: LogoVariant\n}\n\nfunction getColors(variant?: LogoVariant) {\n  if (variant === 'black') {\n    return {\n      midnight: '#808080',\n      forrest: '#666666',\n      grape: '#4d4d4d',\n      mandarin: '#333333',\n      gray: '#1a1a1a',\n    }\n  }\n  if (variant === 'white') {\n    return {\n      midnight: '#ffffff',\n      forrest: '#e6e6e6',\n      grape: '#cccccc',\n      mandarin: '#b3b3b3',\n      gray: '#999999',\n    }\n  }\n  return {\n    midnight: '#0d233f',\n    forrest: '#135560',\n    grape: '#721e63',\n    mandarin: '#ffb11d',\n    gray: '#dadada',\n  }\n}\n\nexport function Logomark({ variant }: LogoProps) {\n  return (\n    <svg viewBox=\"0 0 175 175\">\n      <Icon variant={variant} />\n    </svg>\n  )\n}\n\nexport function LogoFull({ variant }: LogoProps) {\n  return (\n    <svg viewBox=\"0 0 641 175\">\n      <Text variant={variant} />\n      <Icon variant={variant} />\n    </svg>\n  )\n}\n\nfunction Icon({ variant }: LogoProps) {\n  const colors = getColors(variant)\n  return (\n    <>\n      <path\n        style={{ fill: colors.midnight }}\n        d=\"M120.5,57.5c.168,0,.333.012.5.013V40.506c-.167,0-.333-.006-.5-.006a98.325,98.325,0,0,0-77.4,37.565q-2.664,3.378-5.023,6.994l14.206,9.327Q54.043,91.709,56,89.179A81.363,81.363,0,0,1,120.5,57.5Z\"\n      />\n      <path\n        style={{ fill: colors.forrest }}\n        d=\"M148.668,86.223c.308.133.6.283.908.42l6.746-15.618c-.153-.067-.3-.143-.454-.21a81.36,81.36,0,0,0-71.777,3.5q-2.8,1.544-5.469,3.309l9.249,14.054A63.93,63.93,0,0,1,148.668,86.223Z\"\n      />\n      <path\n        style={{ fill: colors.grape }}\n        d=\"M170.894,109.37A63.929,63.929,0,0,0,113.4,88.861l2.336,15.474a48.456,48.456,0,0,1,44.322,15.42c.111.125.214.255.324.381l11.16-10C171.323,109.879,171.118,109.62,170.894,109.37Z\"\n      />\n      <path\n        style={{ fill: colors.mandarin }}\n        d=\"M150.921,150.314c.04.163.07.326.107.489l16.509-4.058c-.039-.163-.067-.326-.107-.489A48.457,48.457,0,0,0,135.575,111.8l-5.515,15.591A32.466,32.466,0,0,1,150.921,150.314Z\"\n      />\n      <path\n        style={{ fill: colors.gray }}\n        d=\"M134.1,138.129l-9.779,13.213a32.486,32.486,0,0,1,7.823,14.463l15.147.852c.012-.166.032-.331.041-.5A32.464,32.464,0,0,0,134.1,138.129Z\"\n      />\n    </>\n  )\n}\n\nfunction Text({ variant }: LogoProps) {\n  const colors = getColors(variant)\n  return (\n    <g\n      aria-label=\"JBrowse\"\n      transform=\"translate(213.084 144.241)\"\n      style={{ fill: colors.midnight }}\n    >\n      <path d=\"m 26.355,-71.505 v 54.075 2.835 q 0,6.825 -0.42,10.185 -0.735,5.67 -2.835,9.135 -3.255,5.355 -8.505,8.4 -4.83,2.73 -11.55,3.57 L 1.47,11.76 Q 7.35,10.185 9.24,4.2 10.605,-0.105 10.605,-9.975 v -5.565 -55.965 q 1.785,0 4.62,0.315 2.835,0.21 3.255,0.21 1.785,0 2.94,-0.105 4.515,-0.42 4.935,-0.42 z\" />\n      <path d=\"m 60.68836,-65.415 v 24.78 h 3.255 q 2.94,0 4.935,-0.525 2.1,-0.525 3.885,-2.1 2.31,-1.995 3.36,-4.83 1.155,-2.835 1.155,-6.09 0,-5.565 -2.94,-8.61 -2.94,-3.045 -8.295,-3.045 -2.52,0 -5.355,0.42 z m 0,30.87 V -6.09 h 5.25 q 4.725,0 8.505,-3.675 3.885,-3.78 3.885,-10.08 0,-8.19 -4.62,-11.655 -4.095,-3.045 -13.02,-3.045 z M 44.93836,0 v -71.505 h 27.09 q 9.135,0 14.385,3.255 6.51,3.99 6.51,12.6 0,7.035 -5.25,11.655 -4.62,4.095 -11.97,5.145 v 0.945 q 7.56,0.735 12.285,3.99 6.615,4.62 6.615,13.335 0,10.185 -7.98,15.75 -6.93,4.83 -17.43,4.83 z\" />\n      <path d=\"M 109.44281,0.525 V -50.4 q 1.785,0.21 3.99,0.42 2.31,0.105 3.255,0.105 2.31,0 4.2,-0.21 1.89,-0.21 3.045,-0.315 v 13.02 q 1.89,-6.51 5.46,-9.87 4.41,-4.095 11.655,-4.095 -0.315,2.73 -0.42,6.825 -0.105,3.99 -0.105,7.455 l -0.945,0.84 q -0.945,-0.735 -2.415,-1.05 -1.47,-0.315 -2.94,-0.315 -3.57,0 -6.195,1.89 -2.52,1.785 -3.465,5.04 -0.42,1.155 -0.525,3.15 -0.105,1.89 -0.105,4.515 v 4.515 19.005 q -1.785,-0.21 -2.625,-0.21 -3.675,-0.315 -4.62,-0.315 -2.31,0 -4.2,0.21 -1.89,0.21 -3.045,0.315 z\" />\n      <path d=\"m 173.77337,1.47 q -11.655,0 -18.585,-6.825 -6.93,-6.825 -6.93,-18.48 0,-12.6 6.72,-20.055 6.825,-7.455 18.9,-7.455 11.97,0 18.9,6.72 6.93,6.72 6.93,18.48 0,12.285 -6.72,19.74 -7.14,7.875 -19.215,7.875 z m 0.735,-48.09 q -5.88,0 -8.505,6.51 -2.205,5.565 -2.205,15.96 0,8.19 1.47,12.915 2.415,7.98 8.505,7.98 5.565,0 8.19,-7.875 2.205,-6.51 2.205,-16.695 0,-8.505 -2.1,-13.23 -2.52,-5.565 -7.56,-5.565 z\" />\n      <path d=\"m 222.03563,-50.4 10.5,36.015 q 3.675,-11.235 5.67,-17.85 2.415,-8.085 5.04,-18.165 1.05,0.105 3.045,0.315 2.1,0.21 2.835,0.21 1.995,0 3.15,-0.105 1.26,-0.21 2.73,-0.42 l 10.71,36.015 q 5.88,-17.43 10.71,-36.015 l 4.2,0.315 4.095,-0.315 q -5.145,13.125 -9.135,24.57 -5.04,14.28 -8.505,26.355 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.205,-0.105 -1.89,0 -3.36,0.21 -1.365,0.21 -2.31,0.315 l -10.605,-34.755 q -4.41,13.65 -6.72,21.105 -2.31,7.35 -4.095,13.65 -1.89,-0.21 -3.36,-0.42 -1.365,-0.105 -2.31,-0.105 -1.995,0 -3.465,0.21 -1.365,0.21 -2.31,0.315 -3.78,-12.81 -5.04,-17.01 -2.205,-7.245 -5.46,-17.01 -2.835,-8.4 -5.88,-16.905 1.575,0 4.305,0.315 2.73,0.21 3.36,0.21 1.47,0 4.305,-0.21 2.835,-0.315 3.465,-0.315 z\" />\n      <path d=\"m 292.84172,-12.81 h 2.625 q 1.47,4.095 4.62,6.51 3.15,2.415 7.35,2.415 2.94,0 5.46,-1.785 2.625,-1.89 2.625,-4.62 0,-3.885 -6.195,-6.615 -10.395,-4.62 -11.655,-5.46 -6.405,-4.515 -6.405,-12.285 0,-7.77 5.25,-12.18 5.25,-4.515 12.81,-4.515 3.99,0 8.085,1.365 4.095,1.26 7.14,3.57 l -2.52,9.24 h -2.94 q -0.63,-3.57 -3.57,-6.195 -2.835,-2.625 -6.405,-2.625 -3.15,0 -5.46,1.575 -2.31,1.47 -2.31,4.515 0,3.885 6.405,6.51 10.185,4.095 11.865,5.25 6.405,4.41 6.405,12.81 0,7.455 -5.46,12.18 -5.355,4.62 -14.805,4.62 -8.19,0 -14.49,-4.305 z\" />\n      <path d=\"m 349.61228,-29.925 h 15.54 q 0,-6.51 -1.05,-10.395 -1.68,-6.3 -5.88,-6.3 -5.04,0 -7.14,6.195 -1.47,4.305 -1.47,10.5 z m 30.03,5.04 h -30.03 q 0,9.135 3.045,13.86 3.57,5.67 11.55,5.67 3.255,0 6.405,-1.26 3.15,-1.26 5.88,-3.465 l 1.26,0.945 -2.31,5.88 q -6.72,4.725 -15.015,4.725 -12.915,0 -19.635,-7.245 -6.72,-7.245 -6.72,-20.37 0,-11.235 6.405,-18.165 6.51,-7.035 17.64,-7.035 11.655,0 16.905,7.56 4.62,6.615 4.62,18.9 z\" />\n    </g>\n  )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport {\n  Divider,\n  ListItemIcon,\n  ListItemText,\n  ListSubheader,\n  MenuProps as MUIMenuProps,\n  MenuItem as MUIMenuItem,\n  MenuItemProps,\n  MenuList,\n  Paper,\n  Popover,\n  PopoverProps,\n  SvgIconProps,\n  Grow,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n// icons\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight'\nimport CheckBoxIcon from '@mui/icons-material/CheckBox'\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'\nimport RadioButtonCheckedIcon from '@mui/icons-material/RadioButtonChecked'\nimport RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'\n\n// other\nimport { findLastIndex } from '../util'\n\nconst useStyles = makeStyles()({\n  paper: {\n    position: 'fixed',\n    overflowY: 'auto',\n    overflowX: 'hidden',\n    // So we see the popover when it's empty.\n    minWidth: 16,\n    minHeight: 16,\n    maxWidth: 'calc(100% - 32px)',\n    maxHeight: 'calc(100% - 32px)',\n    top: 0,\n    left: 0,\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n  },\n  menuItemEndDecoration: {\n    padding: 0,\n    margin: 0,\n    height: 16,\n  },\n})\n\ninterface MenuItemEndDecorationSubMenuProps {\n  type: 'subMenu'\n}\n\ninterface MenuItemEndDecorationSelectorProps {\n  type: 'checkbox' | 'radio'\n  checked: boolean\n  disabled?: boolean\n}\n\ntype MenuItemEndDecorationProps =\n  | MenuItemEndDecorationSubMenuProps\n  | MenuItemEndDecorationSelectorProps\n\nexport function MenuItemEndDecoration(props: MenuItemEndDecorationProps) {\n  const { classes } = useStyles()\n  const { type } = props\n  let checked: boolean | undefined\n  let disabled: boolean | undefined\n  if ('checked' in props) {\n    ;({ checked, disabled } = props)\n  }\n  let icon: React.ReactElement\n  switch (type) {\n    case 'subMenu': {\n      icon = <ArrowRightIcon color=\"action\" />\n      break\n    }\n    case 'checkbox': {\n      if (checked) {\n        const color = disabled ? 'inherit' : undefined\n        icon = <CheckBoxIcon color={color} />\n      } else {\n        icon = <CheckBoxOutlineBlankIcon color=\"action\" />\n      }\n      break\n    }\n    case 'radio': {\n      if (checked) {\n        const color = disabled ? 'inherit' : undefined\n        icon = <RadioButtonCheckedIcon color={color} />\n      } else {\n        icon = <RadioButtonUncheckedIcon color=\"action\" />\n      }\n      break\n    }\n    // No default\n  }\n  return <div className={classes.menuItemEndDecoration}>{icon}</div>\n}\n\nexport interface MenuDivider {\n  priority?: number\n  type: 'divider'\n}\n\nexport interface MenuSubHeader {\n  type: 'subHeader'\n  priority?: number\n  label: string\n}\n\nexport interface BaseMenuItem {\n  id?: string // used as react key if provided\n  label: React.ReactNode\n  priority?: number\n  subLabel?: string\n  icon?: React.ComponentType<SvgIconProps>\n  disabled?: boolean\n}\n\nexport interface NormalMenuItem extends BaseMenuItem {\n  type?: 'normal'\n  onClick: (...args: any[]) => void\n}\n\nexport interface CheckboxMenuItem extends BaseMenuItem {\n  type: 'checkbox'\n  checked: boolean\n  onClick: (...args: any[]) => void\n}\n\nexport interface RadioMenuItem extends BaseMenuItem {\n  type: 'radio'\n  checked: boolean\n  onClick: (...args: any[]) => void\n}\n\nexport interface SubMenuItem extends BaseMenuItem {\n  type?: 'subMenu'\n  subMenu: MenuItem[]\n}\n\nexport type MenuItem =\n  | MenuDivider\n  | MenuSubHeader\n  | NormalMenuItem\n  | CheckboxMenuItem\n  | RadioMenuItem\n  | SubMenuItem\n\ntype AnchorElProp = MUIMenuProps['anchorEl']\ntype OpenProp = MUIMenuProps['open']\ntype OnCloseProp = MUIMenuProps['onClose']\n\ninterface MenuPageProps {\n  menuItems: MenuItem[]\n  onMenuItemClick: (\n    event: React.MouseEvent<HTMLLIElement>,\n    callback: (...args: any[]) => void,\n  ) => void\n  anchorEl?: AnchorElProp\n  open: OpenProp\n  onClose: OnCloseProp\n  top?: boolean\n}\n\ntype MenuItemStyleProp = MenuItemProps['style']\n\nfunction checkIfValid(m: MenuItem) {\n  return m.type !== 'divider' && m.type !== 'subHeader' && !m.disabled\n}\nfunction findNextValidIdx(menuItems: MenuItem[], currentIdx: number) {\n  const idx = menuItems.slice(currentIdx + 1).findIndex(checkIfValid)\n  if (idx === -1) {\n    return idx\n  }\n  return currentIdx + 1 + idx\n}\n\nfunction findPreviousValidIdx(menuItems: MenuItem[], currentIdx: number) {\n  return findLastIndex(menuItems.slice(0, currentIdx), checkIfValid)\n}\n\nconst MenuPage = React.forwardRef<HTMLDivElement, MenuPageProps>(\n  function MenuPage2(props, ref) {\n    const [subMenuAnchorEl, setSubMenuAnchorEl] = useState<HTMLElement>()\n    const [openSubMenuIdx, setOpenSubMenuIdx] = useState<number>()\n    const [isSubMenuOpen, setIsSubMenuOpen] = useState(false)\n    const [selectedMenuItemIdx, setSelectedMenuItemIdx] = useState<number>()\n    const [position, setPosition] = useState<{\n      top?: number\n      left?: number\n    }>()\n    const paperRef = useRef<HTMLDivElement | null>(null)\n    const { classes } = useStyles()\n\n    const {\n      menuItems,\n      onMenuItemClick,\n      open,\n      onClose,\n      anchorEl,\n      top = false,\n    } = props\n\n    useEffect(() => {\n      if (!open) {\n        setSubMenuAnchorEl(undefined)\n        setOpenSubMenuIdx(undefined)\n      }\n    }, [open])\n\n    useEffect(() => {\n      const shouldSubMenuBeOpen = open && Boolean(subMenuAnchorEl)\n      let timer: ReturnType<typeof setTimeout>\n      if (shouldSubMenuBeOpen && !isSubMenuOpen) {\n        timer = setTimeout(() => {\n          setIsSubMenuOpen(true)\n        }, 300)\n      } else if (!shouldSubMenuBeOpen && isSubMenuOpen) {\n        timer = setTimeout(() => {\n          setIsSubMenuOpen(false)\n        }, 300)\n      }\n      return () => {\n        clearTimeout(timer)\n      }\n    }, [isSubMenuOpen, open, subMenuAnchorEl])\n\n    useEffect(() => {\n      if (anchorEl) {\n        const rect = (anchorEl as HTMLElement).getBoundingClientRect()\n        if (position) {\n          if (\n            rect.top !== position.top ||\n            rect.left + rect.width !== position.left\n          ) {\n            setPosition({ top: rect.top, left: rect.left + rect.width })\n          }\n        } else {\n          setPosition({ top: rect.top, left: rect.left + rect.width })\n        }\n      } else if (!position) {\n        setPosition({})\n      }\n    }, [position, anchorEl])\n\n    const hasIcon = menuItems.some(\n      menuItem => 'icon' in menuItem && menuItem.icon,\n    )\n    const menuItemStyle: MenuItemStyleProp = {}\n\n    function handleClick(callback: (...args: any[]) => void) {\n      return (event: React.MouseEvent<HTMLLIElement>) => {\n        onMenuItemClick(event, callback)\n      }\n    }\n\n    const ListContents = (\n      <>\n        <MenuList autoFocusItem={open && !isSubMenuOpen} dense>\n          {menuItems\n            .sort((a, b) => (b.priority || 0) - (a.priority || 0))\n            .map((menuItem, idx) => {\n              if (menuItem.type === 'divider') {\n                return (\n                  <Divider\n                    key={`divider-${JSON.stringify(menuItem)}-${idx}`}\n                    component=\"li\"\n                  />\n                )\n              }\n              if (menuItem.type === 'subHeader') {\n                return (\n                  <ListSubheader key={`subHeader-${menuItem.label}-${idx}`}>\n                    {menuItem.label}\n                  </ListSubheader>\n                )\n              }\n              let icon = null\n              let endDecoration = null\n              if (menuItem.icon) {\n                const Icon = menuItem.icon\n                icon = (\n                  <ListItemIcon>\n                    <Icon />\n                  </ListItemIcon>\n                )\n              }\n              if ('subMenu' in menuItem) {\n                endDecoration = <MenuItemEndDecoration type=\"subMenu\" />\n              } else if (\n                menuItem.type === 'checkbox' ||\n                menuItem.type === 'radio'\n              ) {\n                endDecoration = (\n                  <MenuItemEndDecoration\n                    type={menuItem.type}\n                    checked={menuItem.checked}\n                    disabled={menuItem.disabled}\n                  />\n                )\n              }\n              const onClick =\n                'onClick' in menuItem\n                  ? handleClick(menuItem.onClick)\n                  : undefined\n              return (\n                <MUIMenuItem\n                  key={menuItem.id || String(menuItem.label)}\n                  style={menuItemStyle}\n                  selected={idx === selectedMenuItemIdx}\n                  onClick={onClick}\n                  onMouseMove={e => {\n                    if (e.currentTarget !== document.activeElement) {\n                      e.currentTarget.focus()\n                      setSelectedMenuItemIdx(idx)\n                    }\n                    if ('subMenu' in menuItem) {\n                      if (openSubMenuIdx !== idx) {\n                        setSubMenuAnchorEl(e.currentTarget)\n                        setOpenSubMenuIdx(idx)\n                      }\n                    } else {\n                      setSubMenuAnchorEl(undefined)\n                      setOpenSubMenuIdx(undefined)\n                    }\n                  }}\n                  onKeyDown={e => {\n                    switch (e.key) {\n                      case 'ArrowLeft':\n                      case 'Escape': {\n                        onClose?.(e, 'escapeKeyDown')\n\n                        break\n                      }\n                      case 'ArrowUp': {\n                        setSelectedMenuItemIdx(\n                          findPreviousValidIdx(menuItems, idx),\n                        )\n\n                        break\n                      }\n                      case 'ArrowDown': {\n                        const a = findNextValidIdx(menuItems, idx)\n                        setSelectedMenuItemIdx(a)\n\n                        break\n                      }\n                      default: {\n                        if (\n                          'subMenu' in menuItem &&\n                          (e.key === 'ArrowRight' || e.key === 'Enter')\n                        ) {\n                          setSubMenuAnchorEl(e.currentTarget)\n                          setOpenSubMenuIdx(idx)\n                          setIsSubMenuOpen(true)\n                        }\n                      }\n                    }\n                  }}\n                  disabled={Boolean(menuItem.disabled)}\n                >\n                  {icon}\n                  <ListItemText\n                    primary={menuItem.label}\n                    secondary={menuItem.subLabel}\n                    inset={hasIcon && !menuItem.icon}\n                  />\n                  {endDecoration}\n                </MUIMenuItem>\n              )\n            })}\n        </MenuList>\n        {menuItems.map((menuItem, idx) => {\n          let subMenu = null\n          if ('subMenu' in menuItem) {\n            subMenu = (\n              <MenuPage\n                key={menuItem.id || String(menuItem.label)}\n                anchorEl={subMenuAnchorEl}\n                open={isSubMenuOpen && openSubMenuIdx === idx}\n                onClose={() => {\n                  setIsSubMenuOpen(false)\n                  setSubMenuAnchorEl(undefined)\n                }}\n                onMenuItemClick={onMenuItemClick}\n                menuItems={menuItem.subMenu}\n              />\n            )\n          }\n          return subMenu\n        })}\n      </>\n    )\n\n    return top ? (\n      ListContents\n    ) : (\n      // Grow is required for cascading sub-menus\n      <Grow in={open} style={{ transformOrigin: '0 0 0' }} ref={ref}>\n        <Paper\n          elevation={8}\n          ref={paperRef}\n          className={classes.paper}\n          style={{ ...position }}\n        >\n          {ListContents}\n        </Paper>\n      </Grow>\n    )\n  },\n)\n\ninterface MenuProps extends PopoverProps {\n  menuItems: MenuItem[]\n  onMenuItemClick: (\n    event: React.MouseEvent<HTMLLIElement>,\n    callback: (...args: any[]) => void,\n  ) => void\n}\n\nfunction Menu(props: MenuProps) {\n  const { open, onClose, menuItems, onMenuItemClick, ...other } = props\n\n  return (\n    <Popover\n      open={open}\n      onClose={onClose}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n        ...other.anchorOrigin,\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'left',\n        ...other.transformOrigin,\n      }}\n      {...other}\n    >\n      <MenuPage\n        open={open}\n        onClose={onClose}\n        menuItems={menuItems}\n        onMenuItemClick={onMenuItemClick}\n        top\n      />\n    </Popover>\n  )\n}\n\nexport default Menu\n","import React, { useEffect, useState, useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  horizontalHandle: {\n    cursor: 'row-resize',\n    width: '100%',\n  },\n  verticalHandle: {\n    cursor: 'col-resize',\n    height: '100%',\n  },\n  flexbox_verticalHandle: {\n    cursor: 'col-resize',\n    alignSelf: 'stretch', // the height: 100% is actually unable to function inside flexbox\n  },\n  flexbox_horizontalHandle: {\n    cursor: 'row-resize',\n    alignSelf: 'stretch', // similar to above\n  },\n})\n\nfunction ResizeHandle({\n  onDrag,\n  vertical = false,\n  flexbox = false,\n  className: originalClassName,\n  onMouseDown,\n  ...props\n}: {\n  onDrag: (\n    lastFrameDistance: number,\n    totalDistance: number,\n  ) => number | undefined\n  onMouseDown?: (event: React.MouseEvent) => void\n  vertical?: boolean\n  flexbox?: boolean\n  className?: string\n  [props: string]: unknown\n}) {\n  const [mouseDragging, setMouseDragging] = useState(false)\n  const initialPosition = useRef(0)\n  const prevPos = useRef(0)\n  const { classes, cx } = useStyles()\n\n  useEffect(() => {\n    function mouseMove(event: MouseEvent) {\n      event.preventDefault()\n      const pos = vertical ? event.clientX : event.clientY\n      const totalDistance = initialPosition.current - pos\n      const lastFrameDistance = pos - prevPos.current\n      prevPos.current = pos\n      onDrag(lastFrameDistance, totalDistance)\n    }\n\n    function mouseUp() {\n      setMouseDragging(false)\n    }\n    if (mouseDragging) {\n      window.addEventListener('mousemove', mouseMove, true)\n      window.addEventListener('mouseup', mouseUp, true)\n      return () => {\n        window.removeEventListener('mousemove', mouseMove, true)\n        window.removeEventListener('mouseup', mouseUp, true)\n      }\n    }\n    return () => {}\n  }, [mouseDragging, onDrag, vertical])\n\n  let className: string\n  if (flexbox) {\n    className = vertical\n      ? classes.flexbox_verticalHandle\n      : classes.flexbox_horizontalHandle\n  } else if (vertical) {\n    className = classes.verticalHandle\n  } else {\n    className = classes.horizontalHandle\n  }\n\n  return (\n    <div\n      data-resizer=\"true\"\n      onMouseDown={event => {\n        event.preventDefault()\n        const pos = vertical ? event.clientX : event.clientY\n        initialPosition.current = pos\n        prevPos.current = pos\n        setMouseDragging(true)\n        onMouseDown?.(event)\n      }}\n      className={cx(className, originalClassName)}\n      {...props}\n    />\n  )\n}\n\nexport default ResizeHandle\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, Typography } from '@mui/material'\nimport Dialog from './Dialog'\n\nconst ReturnToImportFormDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: { clearView: () => void }\n  handleClose: () => void\n}) {\n  return (\n    <Dialog maxWidth=\"xl\" open onClose={handleClose} title=\"Reference sequence\">\n      <DialogContent>\n        <Typography>\n          Are you sure you want to return to the import form? This will lose\n          your current view\n        </Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            model.clearView()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"secondary\"\n          variant=\"contained\"\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default ReturnToImportFormDialog\n","import React from 'react'\nimport escapeHTML from 'escape-html'\nimport dompurify from 'dompurify'\nimport { linkify } from '../util'\n\n// source https://github.com/sindresorhus/html-tags/blob/master/html-tags.json\n// with some random uncommon ones removed. note: we just use this to run the content\n// through dompurify without escaping if we see an htmlTag from this list\n// otherwise we escape angle brackets and things prematurely because it might be\n// something like <TRA> in VCF. Ref #657\nconst htmlTags = [\n  'a',\n  'b',\n  'br',\n  'code',\n  'div',\n  'em',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'i',\n  'img',\n  'li',\n  'p',\n  'pre',\n  'span',\n  'small',\n  'strong',\n  'table',\n  'tbody',\n  'sup',\n  'sub',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'tr',\n  'u',\n  'ul',\n]\n\nlet added = false\n\n// adapted from is-html\n// https://github.com/sindresorhus/is-html/blob/master/index.js\nconst full = new RegExp(htmlTags.map(tag => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\nfunction isHTML(str: string) {\n  return full.test(str)\n}\n\n// note this is mocked during testing, see\n// packages/__mocks__/@jbrowse/core/ui/SanitizedHTML something about dompurify\n// behavior causes errors during tests, was seen in\n// products/jbrowse-web/src/tests/Connection.test.tsx test (can delete mock to\n// see)\n//\nexport default function SanitizedHTML({\n  html: pre,\n  className,\n}: {\n  className?: string\n  html: string\n}) {\n  // try to add links to the text first\n  const html = linkify(pre)\n  const value = isHTML(html) ? html : escapeHTML(html)\n  if (!added) {\n    added = true\n    // see https://github.com/cure53/DOMPurify/issues/317\n    // only have to add this once, and can't do it globally because dompurify\n    // not yet initialized at global scope\n    dompurify.addHook(\n      'afterSanitizeAttributes',\n      (node: {\n        tagName: string\n        setAttribute: (arg0: string, arg1: string) => void\n      }) => {\n        if (node.tagName === 'A') {\n          node.setAttribute('rel', 'noopener noreferrer')\n          node.setAttribute('target', '_blank')\n        }\n      },\n    )\n  }\n\n  return (\n    <span\n      className={className}\n      dangerouslySetInnerHTML={{\n        __html: dompurify.sanitize(value),\n      }}\n    />\n  )\n}\n","import { blue, green, red, grey, orange } from '@mui/material/colors'\nimport { createTheme, ThemeOptions } from '@mui/material/styles'\nimport type {\n  PaletteAugmentColorOptions,\n  PaletteColor,\n} from '@mui/material/styles/createPalette'\nimport deepmerge from 'deepmerge'\n\ndeclare module '@mui/material/styles/createPalette' {\n  interface Palette {\n    tertiary: Palette['primary']\n    quaternary: Palette['primary']\n    highlight: Palette['primary']\n    stopCodon?: string\n    startCodon?: string\n    bases: {\n      A: Palette['primary']\n      C: Palette['primary']\n      G: Palette['primary']\n      T: Palette['primary']\n    }\n    frames: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n    framesCDS: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n  }\n  interface PaletteOptions {\n    tertiary?: PaletteOptions['primary']\n    quaternary?: PaletteOptions['primary']\n    highlight?: PaletteOptions['primary']\n    stopCodon?: string\n    startCodon?: string\n    bases?: {\n      A?: PaletteOptions['primary']\n      C?: PaletteOptions['primary']\n      G?: PaletteOptions['primary']\n      T?: PaletteOptions['primary']\n    }\n    framesCDS?: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n    frames?: [\n      null,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n      Palette['primary'] | undefined,\n    ]\n  }\n}\n\ntype Frames = [\n  null,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n  PaletteColor,\n]\n\nconst refTheme = createTheme()\nconst midnight = '#0D233F'\nconst grape = '#721E63'\nconst forest = refTheme.palette.augmentColor({ color: { main: '#135560' } })\nconst mandarin = refTheme.palette.augmentColor({ color: { main: '#FFB11D' } })\nconst bases = {\n  A: refTheme.palette.augmentColor({ color: green }),\n  C: refTheme.palette.augmentColor({ color: blue }),\n  G: refTheme.palette.augmentColor({ color: orange }),\n  T: refTheme.palette.augmentColor({ color: red }),\n}\nconst framesCDS = [\n  null,\n  refTheme.palette.augmentColor({ color: { main: '#FF8080' } }),\n  refTheme.palette.augmentColor({ color: { main: '#80FF80' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8080FF' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8080FF' } }),\n  refTheme.palette.augmentColor({ color: { main: '#80FF80' } }),\n  refTheme.palette.augmentColor({ color: { main: '#FF8080' } }),\n] as Frames\nconst frames = [\n  null,\n  refTheme.palette.augmentColor({ color: { main: '#8f8f8f' } }),\n  refTheme.palette.augmentColor({ color: { main: '#adadad' } }),\n  refTheme.palette.augmentColor({ color: { main: '#d8d8d8' } }),\n  refTheme.palette.augmentColor({ color: { main: '#d8d8d8' } }),\n  refTheme.palette.augmentColor({ color: { main: '#adadad' } }),\n  refTheme.palette.augmentColor({ color: { main: '#8f8f8f' } }),\n] as Frames\nconst stopCodon = '#e22'\nconst startCodon = '#3e3'\n\nfunction stockTheme() {\n  return {\n    palette: {\n      mode: undefined,\n      primary: { main: midnight },\n      secondary: { main: grape },\n      tertiary: forest,\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n    components: {\n      MuiLink: {\n        styleOverrides: {\n          // the default link color uses theme.palette.primary.main which is\n          // very bad with dark mode+midnight primary\n          root: ({ theme }) => ({\n            color: theme.palette.tertiary.main,\n          }),\n        },\n      },\n    },\n  } satisfies ThemeOptions\n}\n\nfunction getDefaultTheme() {\n  return {\n    ...stockTheme(),\n    name: 'Default (from config)',\n  }\n}\n\nfunction getLightStockTheme() {\n  return {\n    ...stockTheme(),\n    name: 'Light (stock)',\n  }\n}\n\nfunction getDarkStockTheme() {\n  return {\n    name: 'Dark (stock)',\n    palette: {\n      mode: 'dark',\n      primary: { main: midnight },\n      secondary: { main: grape },\n      tertiary: forest,\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n    components: {\n      MuiAppBar: {\n        defaultProps: {\n          enableColorOnDark: true,\n        },\n        styleOverrides: {\n          root: ({ theme }) => {\n            return theme.palette.primary.main\n          },\n        },\n      },\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nfunction getDarkMinimalTheme() {\n  return {\n    name: 'Dark (minimal)',\n    palette: {\n      mode: 'dark' as const,\n      primary: { main: grey[700] },\n      secondary: { main: grey[800] },\n      tertiary: refTheme.palette.augmentColor({ color: { main: grey[900] } }),\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nfunction getMinimalTheme() {\n  return {\n    name: 'Light (minimal)',\n    palette: {\n      primary: { main: grey[900] },\n      secondary: { main: grey[800] },\n      tertiary: refTheme.palette.augmentColor({ color: { main: grey[900] } }),\n      quaternary: mandarin,\n      highlight: mandarin,\n      stopCodon,\n      startCodon,\n      bases,\n      frames,\n      framesCDS,\n    },\n  } satisfies ThemeOptions & { name: string }\n}\n\nexport const defaultThemes = {\n  default: getDefaultTheme(),\n  lightStock: getLightStockTheme(),\n  lightMinimal: getMinimalTheme(),\n  darkMinimal: getDarkMinimalTheme(),\n  darkStock: getDarkStockTheme(),\n} as ThemeMap\n\nfunction overwriteArrayMerge(_: unknown, sourceArray: unknown[]) {\n  return sourceArray\n}\n\nexport function createJBrowseBaseTheme(theme?: ThemeOptions): ThemeOptions {\n  const themeP: ThemeOptions = {\n    palette: theme?.palette,\n    typography: {\n      fontSize: 12,\n    },\n    spacing: 4,\n    components: {\n      MuiButton: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n        styleOverrides: {\n          // the default button, especially when not using variant=contained,\n          // uses theme.palette.primary.main for text which is very bad with\n          // dark mode+midnight primary\n          //\n          // keeps text secondary for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.primary,\n                }\n              : undefined,\n        },\n      },\n      MuiAccordion: {\n        defaultProps: {\n          disableGutters: true,\n          slotProps: {\n            transition: {\n              timeout: 150,\n              unmountOnExit: true,\n            },\n          },\n        },\n      },\n      MuiFilledInput: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiFormControl: {\n        defaultProps: {\n          margin: 'dense' as const,\n          size: 'small' as const,\n        },\n      },\n      MuiFormHelperText: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n\n      MuiIconButton: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiInputBase: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiAutocomplete: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiInputLabel: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiToolbar: {\n        defaultProps: {\n          variant: 'dense' as const,\n        },\n      },\n      MuiListItem: {\n        defaultProps: {\n          dense: true,\n        },\n      },\n      MuiOutlinedInput: {\n        defaultProps: {\n          margin: 'dense' as const,\n        },\n      },\n      MuiFab: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n        styleOverrides: {\n          secondary: {\n            // @ts-expect-error\n            backgroundColor: theme?.palette?.quaternary?.main,\n          },\n        },\n      },\n      MuiTable: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n      MuiPopover: {\n        defaultProps: {\n          transitionDuration: 0,\n        },\n      },\n      MuiMenu: {\n        defaultProps: {\n          transitionDuration: 0,\n        },\n      },\n      MuiMenuItem: {\n        defaultProps: {\n          dense: true,\n        },\n      },\n\n      MuiTextField: {\n        defaultProps: {\n          margin: 'dense' as const,\n          variant: 'standard' as const,\n        },\n      },\n      MuiLink: {\n        styleOverrides: {\n          // the default link color uses theme.palette.primary.main which is\n          // very bad with dark mode+midnight primary\n          root: ({ theme }) => ({\n            color: theme.palette.text.secondary,\n          }),\n        },\n      },\n      MuiCheckbox: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast xref\n          // https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-checked': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiRadio: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-checked': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiFormLabel: {\n        styleOverrides: {\n          // the default checkbox-when-checked color uses\n          // theme.palette.primary.main which is very bad with dark\n          // mode+midnight primary\n          //\n          // keeps the forest-green checkbox by default but for darkmode, uses\n          // a text-like coloring to ensure contrast\n          // xref https://stackoverflow.com/a/72546130/2129219\n          //\n\n          root: ({ theme }) =>\n            theme.palette.mode === 'dark'\n              ? {\n                  color: theme.palette.text.secondary,\n                  '&.Mui-focused': {\n                    color: theme.palette.text.secondary,\n                  },\n                }\n              : undefined,\n        },\n      },\n      MuiAccordionSummary: {\n        styleOverrides: {\n          root: {\n            // @ts-expect-error\n            backgroundColor: theme?.palette?.tertiary?.main,\n          },\n          content: {\n            // @ts-expect-error\n            color: theme?.palette?.tertiary?.contrastText,\n          },\n        },\n      },\n      MuiToggleButtonGroup: {\n        defaultProps: {\n          size: 'small' as const,\n        },\n      },\n    },\n  }\n  return deepmerge(themeP, theme || {}, { arrayMerge: overwriteArrayMerge })\n}\n\ntype ThemeMap = Record<string, ThemeOptions>\n\nexport function createJBrowseTheme(\n  configTheme: ThemeOptions = {},\n  themes = defaultThemes,\n  themeName = 'default',\n) {\n  return createTheme(\n    createJBrowseBaseTheme(\n      themeName === 'default'\n        ? deepmerge(themes.default!, augmentTheme(configTheme), {\n            arrayMerge: overwriteArrayMerge,\n          })\n        : augmentThemePlus(themes[themeName]),\n    ),\n  )\n}\n\nfunction augmentTheme(theme: ThemeOptions = {}) {\n  if (theme.palette?.tertiary) {\n    theme = deepmerge(theme, {\n      palette: {\n        tertiary: refTheme.palette.augmentColor(\n          'color' in theme.palette.tertiary\n            ? (theme.palette.tertiary as PaletteAugmentColorOptions)\n            : { color: theme.palette.tertiary },\n        ),\n      },\n    })\n  }\n\n  if (theme.palette?.quaternary) {\n    theme = deepmerge(theme, {\n      palette: {\n        quaternary: refTheme.palette.augmentColor(\n          'color' in theme.palette.quaternary\n            ? (theme.palette.quaternary as PaletteAugmentColorOptions)\n            : { color: theme.palette.quaternary },\n        ),\n      },\n    })\n  }\n\n  return theme\n}\n\n// creates some blank quaternary/tertiary colors if unsupplied by a user theme\nfunction augmentThemePlus(theme: ThemeOptions = {}) {\n  theme = augmentTheme(theme)\n  if (!theme.palette?.quaternary) {\n    theme = deepmerge(theme, {\n      palette: {\n        quaternary: refTheme.palette.augmentColor({\n          color: {\n            main: '#aaa',\n          },\n        }),\n      },\n    })\n  }\n  if (!theme.palette?.tertiary) {\n    theme = deepmerge(theme, {\n      palette: {\n        tertiary: refTheme.palette.augmentColor({\n          color: {\n            main: '#aaa',\n          },\n        }),\n      },\n    })\n  }\n  return theme\n}\n","import React, { useState, useEffect } from 'react'\nimport {\n  TextField,\n  MenuItem,\n  InputProps as IIP,\n  TextFieldProps as TFP,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { getConf } from '../configuration'\nimport { useLocalStorage, AbstractSessionModel } from '../util'\n\nconst useStyles = makeStyles()({\n  importFormEntry: {\n    minWidth: 180,\n  },\n})\n\nconst AssemblySelector = observer(function ({\n  session,\n  onChange,\n  selected,\n  InputProps,\n  TextFieldProps,\n  localStorageKey,\n  helperText = 'Select assembly to view',\n}: {\n  session: AbstractSessionModel\n  helperText?: string\n  onChange: (arg: string) => void\n  selected?: string\n  localStorageKey?: string\n  InputProps?: IIP\n  TextFieldProps?: TFP\n}) {\n  const { classes } = useStyles()\n  const { assemblyNames, assemblyManager } = session\n\n  // constructs a localstorage key based on host/path/config to help\n  // remember. non-config assists usage with e.g. embedded apps\n  const config = new URLSearchParams(window.location.search).get('config')\n  const [lastSelected, setLastSelected] =\n    typeof jest === 'undefined' && localStorageKey\n      ? useLocalStorage(\n          `lastAssembly-${[\n            window.location.host + window.location.pathname,\n            config,\n            localStorageKey,\n          ].join('-')}`,\n          selected,\n        )\n      : useState(selected)\n\n  const selection = assemblyNames.includes(lastSelected || '')\n    ? lastSelected\n    : selected\n\n  useEffect(() => {\n    if (selection && selection !== selected) {\n      onChange(selection)\n    }\n  }, [selection, onChange, selected])\n\n  const error = assemblyNames.length ? '' : 'No configured assemblies'\n  return (\n    <TextField\n      select\n      label=\"Assembly\"\n      variant=\"outlined\"\n      helperText={error || helperText}\n      value={selection || ''}\n      inputProps={{ 'data-testid': 'assembly-selector' }}\n      onChange={event => {\n        setLastSelected(event.target.value)\n      }}\n      error={!!error}\n      InputProps={InputProps}\n      disabled={!!error}\n      className={classes.importFormEntry}\n      {...TextFieldProps}\n    >\n      {assemblyNames.map(name => {\n        const assembly = assemblyManager.get(name)\n        const displayName = assembly ? getConf(assembly, 'displayName') : ''\n        return (\n          <MenuItem key={name} value={name}>\n            {displayName || name}\n          </MenuItem>\n        )\n      })}\n    </TextField>\n  )\n})\n\nexport default AssemblySelector\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Box,\n  FormHelperText,\n  InputLabel,\n  Menu,\n  MenuItem,\n  Tooltip,\n  ToggleButtonGroup,\n  ToggleButton,\n  ToggleButtonProps,\n} from '@mui/material'\n\n// locals\nimport {\n  FileLocation,\n  AbstractRootModel,\n  isUriLocation,\n  isAppRootModel,\n} from '../../util/types'\nimport LocalFileChooser from './LocalFileChooser'\nimport UrlChooser from './UrlChooser'\nimport { notEmpty, useLocalStorage } from '../../util'\n\n// icons\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'\n\nconst NUM_SHOWN = 2\n\nfunction ToggleButtonWithTooltip(props: ToggleButtonProps) {\n  const { title, children, ...other } = props\n  return (\n    <Tooltip title={title || ''}>\n      <ToggleButton {...other}>{children}</ToggleButton>\n    </Tooltip>\n  )\n}\n\nfunction shorten(str: string, len: number) {\n  if (typeof str === 'string' && str.length > len) {\n    return `${str.slice(0, Math.max(0, len))}…`\n  }\n  return str\n}\n\nconst FileSelector = observer(function (props: {\n  location?: FileLocation\n  setLocation: (param: FileLocation) => void\n  setName?: (str: string) => void\n  name?: string\n  description?: string\n  rootModel?: AbstractRootModel\n}) {\n  const { location, name, description, rootModel, setLocation } = props\n  const fileOrUrl = !location || isUriLocation(location) ? 'url' : 'file'\n  const [toggleButtonValue, setToggleButtonValue] = useState(\n    location && 'internetAccountId' in location && location.internetAccountId\n      ? location.internetAccountId\n      : fileOrUrl,\n  )\n  const accounts = isAppRootModel(rootModel)\n    ? rootModel.internetAccounts.filter(\n        f => f.type !== 'HTTPBasicInternetAccount',\n      )\n    : []\n\n  const [recentlyUsedInternetAccounts, setRecentlyUsedInternetAccounts] =\n    useLocalStorage('fileSelector-recentlyUsedInternetAccounts', [] as string[])\n\n  const map = Object.fromEntries(accounts.map(a => [a.internetAccountId, a]))\n  const arr = [...new Set(accounts.map(s => s.internetAccountId))].sort(\n    (a, b) =>\n      recentlyUsedInternetAccounts.indexOf(a) -\n      recentlyUsedInternetAccounts.indexOf(b),\n  )\n  const shownAccounts = arr.slice(0, NUM_SHOWN)\n  const hiddenAccounts = arr.slice(NUM_SHOWN)\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n  const selectedAccount = map[toggleButtonValue]\n\n  const setLocationWithAccount = useCallback(\n    (location: FileLocation) => {\n      setLocation({\n        ...location,\n        ...(selectedAccount && isUriLocation(location)\n          ? { internetAccountId: selectedAccount.internetAccountId }\n          : {}),\n      })\n    },\n    [setLocation, selectedAccount],\n  )\n\n  useEffect(() => {\n    // if you swap account selection after inputting url\n    if (\n      selectedAccount &&\n      isUriLocation(location) &&\n      location.internetAccountId !== selectedAccount.internetAccountId\n    ) {\n      setLocationWithAccount(location)\n    }\n  }, [location, selectedAccount, setLocationWithAccount])\n\n  let locationInput = (\n    <UrlChooser\n      {...props}\n      setLocation={setLocationWithAccount}\n      label={selectedAccount?.selectorLabel}\n    />\n  )\n  if (toggleButtonValue === 'file') {\n    locationInput = <LocalFileChooser {...props} />\n  }\n  if (selectedAccount?.SelectorComponent) {\n    const { SelectorComponent } = selectedAccount\n    locationInput = (\n      <SelectorComponent {...props} setLocation={setLocationWithAccount} />\n    )\n  }\n\n  return (\n    <>\n      <Box display=\"flex\">\n        <InputLabel shrink>{name}</InputLabel>\n      </Box>\n      <Box display=\"flex\" flexDirection=\"row\">\n        <Box>\n          <ToggleButtonGroup\n            value={toggleButtonValue}\n            exclusive\n            onChange={(_event, newState) => {\n              setRecentlyUsedInternetAccounts([\n                ...new Set(\n                  [newState, ...recentlyUsedInternetAccounts].filter(notEmpty),\n                ),\n              ])\n              if (newState) {\n                setToggleButtonValue(newState)\n              }\n              if (isUriLocation(location)) {\n                setLocationWithAccount(location)\n              }\n            }}\n            aria-label=\"file, url, or account picker\"\n          >\n            {new URLSearchParams(window.location.search).get(\n              'adminKey',\n            ) ? null : (\n              <ToggleButton value=\"file\" aria-label=\"local file\">\n                File\n              </ToggleButton>\n            )}\n            <ToggleButton value=\"url\" aria-label=\"url\">\n              URL\n            </ToggleButton>\n            {shownAccounts.map(id => {\n              const { internetAccountId, name, toggleContents } = map[id]!\n              return (\n                <ToggleButtonWithTooltip\n                  key={id}\n                  value={internetAccountId}\n                  title={name}\n                >\n                  {typeof toggleContents === 'string'\n                    ? shorten(toggleContents, 5)\n                    : toggleContents || shorten(name, 5)}\n                </ToggleButtonWithTooltip>\n              )\n            })}\n            {hiddenAccounts.length > 0 ? (\n              // @ts-expect-error\n              <ToggleButton\n                onClick={event => {\n                  setAnchorEl(event.target as HTMLElement)\n                }}\n                selected={false}\n              >\n                More\n                <ArrowDropDownIcon />\n              </ToggleButton>\n            ) : null}\n          </ToggleButtonGroup>\n\n          <Menu\n            open={Boolean(anchorEl)}\n            anchorEl={anchorEl}\n            onClose={() => {\n              setAnchorEl(null)\n            }}\n            anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n            transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n          >\n            {hiddenAccounts.map(id => {\n              const { internetAccountId, name } = map[id]!\n              return (\n                <MenuItem\n                  key={id}\n                  value={internetAccountId}\n                  onClick={() => {\n                    setRecentlyUsedInternetAccounts([\n                      ...new Set(\n                        [\n                          internetAccountId,\n                          ...recentlyUsedInternetAccounts,\n                        ].filter(notEmpty),\n                      ),\n                    ])\n\n                    setToggleButtonValue(internetAccountId)\n                    setAnchorEl(null)\n                  }}\n                >\n                  {name}\n                </MenuItem>\n              )\n            })}\n          </Menu>\n        </Box>\n      </Box>\n      {locationInput}\n      <FormHelperText>{description}</FormHelperText>\n    </>\n  )\n})\n\nexport default FileSelector\n","import React, { useState, useRef, useEffect } from 'react'\nimport { drawImageOntoCanvasContext } from '../util/offscreenCanvasPonyfill'\n\nfunction PrerenderedCanvas(props: {\n  width: number\n  height: number\n  highResolutionScaling?: number\n  style?: any\n  imageData?: any\n  showSoftClip?: boolean\n  blockKey?: string\n}) {\n  const {\n    width,\n    height,\n    highResolutionScaling = 1,\n    style = {},\n    imageData,\n    blockKey,\n    showSoftClip,\n  } = props\n  const [done, setDone] = useState(false)\n\n  const featureCanvas = useRef<HTMLCanvasElement>(null)\n\n  useEffect(() => {\n    if (!imageData) {\n      return\n    }\n    const canvas = featureCanvas.current\n    if (!canvas) {\n      return\n    }\n    const context = canvas.getContext('2d')\n    if (!context) {\n      return\n    }\n    drawImageOntoCanvasContext(imageData, context)\n    setDone(true)\n  }, [imageData])\n\n  return (\n    <canvas\n      data-testid={[\n        'prerendered_canvas',\n        showSoftClip ? 'softclipped' : '',\n        blockKey,\n        done ? 'done' : '',\n      ]\n        .filter(f => !!f)\n        .join('_')}\n      ref={featureCanvas}\n      width={width * highResolutionScaling}\n      height={height * highResolutionScaling}\n      style={{ width, height, ...style }}\n    />\n  )\n}\n\nexport default PrerenderedCanvas\n","// vendored from quick-lru@6.1.1, didn't like being compiled as a 'pure-esm' nodejs dependency\n// the license is reproduced below https://github.com/sindresorhus/quick-lru/blob/main/license\n// MIT License\n\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default class QuickLRU extends Map {\n  constructor(options = {}) {\n    super()\n\n    if (!(options.maxSize && options.maxSize > 0)) {\n      throw new TypeError('`maxSize` must be a number greater than 0')\n    }\n\n    if (typeof options.maxAge === 'number' && options.maxAge === 0) {\n      throw new TypeError('`maxAge` must be a number greater than 0')\n    }\n\n    // TODO: Use private class fields when ESLint supports them.\n    this.maxSize = options.maxSize\n    this.maxAge = options.maxAge || Number.POSITIVE_INFINITY\n    this.onEviction = options.onEviction\n    this.cache = new Map()\n    this.oldCache = new Map()\n    this._size = 0\n  }\n\n  // TODO: Use private class methods when targeting Node.js 16.\n  _emitEvictions(cache) {\n    if (typeof this.onEviction !== 'function') {\n      return\n    }\n\n    for (const [key, item] of cache) {\n      this.onEviction(key, item.value)\n    }\n  }\n\n  _deleteIfExpired(key, item) {\n    if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n      if (typeof this.onEviction === 'function') {\n        this.onEviction(key, item.value)\n      }\n\n      return this.delete(key)\n    }\n\n    return false\n  }\n\n  _getOrDeleteIfExpired(key, item) {\n    const deleted = this._deleteIfExpired(key, item)\n    if (!deleted) {\n      return item.value\n    }\n  }\n\n  _getItemValue(key, item) {\n    return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value\n  }\n\n  _peek(key, cache) {\n    const item = cache.get(key)\n\n    return this._getItemValue(key, item)\n  }\n\n  _set(key, value) {\n    this.cache.set(key, value)\n    this._size++\n\n    if (this._size >= this.maxSize) {\n      this._size = 0\n      this._emitEvictions(this.oldCache)\n      this.oldCache = this.cache\n      this.cache = new Map()\n    }\n  }\n\n  _moveToRecent(key, item) {\n    this.oldCache.delete(key)\n    this._set(key, item)\n  }\n\n  *_entriesAscending() {\n    for (const item of this.oldCache) {\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield item\n        }\n      }\n    }\n\n    for (const item of this.cache) {\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield item\n      }\n    }\n  }\n\n  get(key) {\n    if (this.cache.has(key)) {\n      const item = this.cache.get(key)\n\n      return this._getItemValue(key, item)\n    }\n\n    if (this.oldCache.has(key)) {\n      const item = this.oldCache.get(key)\n      if (!this._deleteIfExpired(key, item)) {\n        this._moveToRecent(key, item)\n        return item.value\n      }\n    }\n  }\n\n  set(key, value, { maxAge = this.maxAge } = {}) {\n    const expiry =\n      typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY\n        ? Date.now() + maxAge\n        : undefined\n    if (this.cache.has(key)) {\n      this.cache.set(key, {\n        value,\n        expiry,\n      })\n    } else {\n      this._set(key, { value, expiry })\n    }\n  }\n\n  has(key) {\n    if (this.cache.has(key)) {\n      return !this._deleteIfExpired(key, this.cache.get(key))\n    }\n\n    if (this.oldCache.has(key)) {\n      return !this._deleteIfExpired(key, this.oldCache.get(key))\n    }\n\n    return false\n  }\n\n  peek(key) {\n    if (this.cache.has(key)) {\n      return this._peek(key, this.cache)\n    }\n\n    if (this.oldCache.has(key)) {\n      return this._peek(key, this.oldCache)\n    }\n  }\n\n  delete(key) {\n    const deleted = this.cache.delete(key)\n    if (deleted) {\n      this._size--\n    }\n\n    return this.oldCache.delete(key) || deleted\n  }\n\n  clear() {\n    this.cache.clear()\n    this.oldCache.clear()\n    this._size = 0\n  }\n\n  resize(newSize) {\n    if (!(newSize && newSize > 0)) {\n      throw new TypeError('`maxSize` must be a number greater than 0')\n    }\n\n    const items = [...this._entriesAscending()]\n    const removeCount = items.length - newSize\n    if (removeCount < 0) {\n      this.cache = new Map(items)\n      this.oldCache = new Map()\n      this._size = items.length\n    } else {\n      if (removeCount > 0) {\n        this._emitEvictions(items.slice(0, removeCount))\n      }\n\n      this.oldCache = new Map(items.slice(removeCount))\n      this.cache = new Map()\n      this._size = 0\n    }\n\n    this.maxSize = newSize\n  }\n\n  *keys() {\n    for (const [key] of this) {\n      yield key\n    }\n  }\n\n  *values() {\n    for (const [, value] of this) {\n      yield value\n    }\n  }\n\n  *[Symbol.iterator]() {\n    for (const item of this.cache) {\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield [key, value.value]\n      }\n    }\n\n    for (const item of this.oldCache) {\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield [key, value.value]\n        }\n      }\n    }\n  }\n\n  *entriesDescending() {\n    let items = [...this.cache]\n    for (let i = items.length - 1; i >= 0; --i) {\n      const item = items[i]\n      const [key, value] = item\n      const deleted = this._deleteIfExpired(key, value)\n      if (!deleted) {\n        yield [key, value.value]\n      }\n    }\n\n    items = [...this.oldCache]\n    for (let i = items.length - 1; i >= 0; --i) {\n      const item = items[i]\n      const [key, value] = item\n      if (!this.cache.has(key)) {\n        const deleted = this._deleteIfExpired(key, value)\n        if (!deleted) {\n          yield [key, value.value]\n        }\n      }\n    }\n  }\n\n  *entriesAscending() {\n    for (const [key, value] of this._entriesAscending()) {\n      yield [key, value.value]\n    }\n  }\n\n  get size() {\n    if (!this._size) {\n      return this.oldCache.size\n    }\n\n    let oldCacheSize = 0\n    for (const key of this.oldCache.keys()) {\n      if (!this.cache.has(key)) {\n        oldCacheSize++\n      }\n    }\n\n    return Math.min(this._size + oldCacheSize, this.maxSize)\n  }\n\n  entries() {\n    return this.entriesAscending()\n  }\n\n  forEach(callbackFunction, thisArgument = this) {\n    for (const [key, value] of this.entriesAscending()) {\n      callbackFunction.call(thisArgument, value, key, this)\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return JSON.stringify([...this.entriesAscending()])\n  }\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport isObject from 'is-object'\nimport PluginManager from '../PluginManager'\nimport type { Buffer } from 'buffer'\nimport {\n  addDisposer,\n  getParent,\n  getSnapshot,\n  getEnv as getEnvMST,\n  isAlive,\n  isStateTreeNode,\n  hasParent,\n  IAnyStateTreeNode,\n  IStateTreeNode,\n  Instance,\n} from 'mobx-state-tree'\nimport { reaction, IReactionPublic, IReactionOptions } from 'mobx'\nimport { Feature } from './simpleFeature'\nimport {\n  isSessionModel,\n  isDisplayModel,\n  isViewModel,\n  isTrackModel,\n  AssemblyManager,\n  Region,\n  TypeTestedByPredicate,\n} from './types'\nimport type { Region as MUIRegion } from './types/mst'\nimport { isAbortException, checkAbortSignal } from './aborting'\nimport { BaseBlock } from './blockTypes'\nimport { isUriLocation } from './types'\n\n// has to be the full path and not the relative path to get the jest mock\nimport useMeasure from '@jbrowse/core/util/useMeasure'\nimport { colord } from './colord'\n// eslint-disable-next-line react/no-deprecated\nimport { flushSync, render } from 'react-dom'\nexport * from './types'\nexport * from './aborting'\nexport * from './when'\nexport * from './range'\nexport * from './dedupe'\n\nexport * from './offscreenCanvasPonyfill'\nexport * from './offscreenCanvasUtils'\n\nexport function useDebounce<T>(value: T, delay: number) {\n  const [debouncedValue, setDebouncedValue] = useState(value)\n\n  useEffect(() => {\n    const handle = setTimeout(() => {\n      setDebouncedValue(value)\n    }, delay)\n    return () => {\n      clearTimeout(handle)\n    }\n  }, [value, delay])\n\n  return debouncedValue\n}\n\n// used in ViewContainer files to get the width\nexport function useWidthSetter(\n  view: { setWidth: (arg: number) => void },\n  padding: string,\n) {\n  const [ref, { width }] = useMeasure()\n  useEffect(() => {\n    if (width && isAlive(view)) {\n      // sets after a requestAnimationFrame\n      // https://stackoverflow.com/a/58701523/2129219\n      // avoids ResizeObserver loop error being shown during development\n      requestAnimationFrame(() => {\n        view.setWidth(width - Number.parseInt(padding, 10) * 2)\n      })\n    }\n  }, [padding, view, width])\n  return ref\n}\n\n// https://stackoverflow.com/questions/56283920/\nexport function useDebouncedCallback<T>(\n  callback: (...args: T[]) => void,\n  wait = 400,\n) {\n  // track args & timeout handle between calls\n  const argsRef = useRef<T[]>()\n  const timeout = useRef<ReturnType<typeof setTimeout>>()\n\n  // make sure our timeout gets cleared if our consuming component gets\n  // unmounted\n  useEffect(() => {\n    if (timeout.current) {\n      clearTimeout(timeout.current)\n    }\n  }, [])\n\n  return function debouncedCallback(...args: T[]) {\n    // capture latest args\n    argsRef.current = args\n\n    // clear debounce timer\n    if (timeout.current) {\n      clearTimeout(timeout.current)\n    }\n\n    // start waiting again\n    timeout.current = setTimeout(() => {\n      if (argsRef.current) {\n        callback(...argsRef.current)\n      }\n    }, wait)\n  }\n}\n\n/**\n * find the first node in the hierarchy that matches the given predicate\n */\nexport function findParentThat(\n  node: IAnyStateTreeNode,\n  predicate: (thing: IAnyStateTreeNode) => boolean,\n) {\n  if (!hasParent(node)) {\n    throw new Error('node does not have parent')\n  }\n  let currentNode: IAnyStateTreeNode | undefined = getParent<any>(node)\n  while (currentNode && isAlive(currentNode)) {\n    if (predicate(currentNode)) {\n      return currentNode\n    }\n    if (hasParent(currentNode)) {\n      currentNode = getParent<any>(currentNode)\n    } else {\n      break\n    }\n  }\n  throw new Error('no matching node found')\n}\n\ninterface Animation {\n  lastPosition: number\n  lastTime?: number\n  lastVelocity?: number\n}\n\n// based on https://github.com/react-spring/react-spring/blob/cd5548a987383b8023efd620f3726a981f9e18ea/src/animated/FrameLoop.ts\nexport function springAnimate(\n  fromValue: number,\n  toValue: number,\n  setValue: (value: number) => void,\n  onFinish = () => {},\n  precision = 0,\n  tension = 400,\n  friction = 20,\n  clamp = true,\n) {\n  const mass = 1\n  if (!precision) {\n    precision = Math.abs(toValue - fromValue) / 1000\n  }\n\n  let animationFrameId: number\n\n  function update(animation: Animation) {\n    const time = Date.now()\n    let position = animation.lastPosition\n    let lastTime = animation.lastTime || time\n    let velocity = animation.lastVelocity || 0\n    // If we lost a lot of frames just jump to the end.\n    if (time > lastTime + 64) {\n      lastTime = time\n    }\n    // http://gafferongames.com/game-physics/fix-your-timestep/\n    const numSteps = Math.floor(time - lastTime)\n    for (let i = 0; i < numSteps; ++i) {\n      const force = -tension * (position - toValue)\n      const damping = -friction * velocity\n      const acceleration = (force + damping) / mass\n      velocity += (acceleration * 1) / 1000\n      position += (velocity * 1) / 1000\n    }\n    const isVelocity = Math.abs(velocity) <= precision\n    const isDisplacement =\n      tension !== 0 ? Math.abs(toValue - position) <= precision : true\n    const isOvershooting =\n      clamp && tension !== 0\n        ? fromValue < toValue\n          ? position > toValue\n          : position < toValue\n        : false\n    const endOfAnimation = isOvershooting || (isVelocity && isDisplacement)\n    if (endOfAnimation) {\n      setValue(toValue)\n      onFinish()\n    } else {\n      setValue(position)\n      animationFrameId = requestAnimationFrame(() => {\n        update({\n          lastPosition: position,\n          lastTime: time,\n          lastVelocity: velocity,\n        })\n      })\n    }\n  }\n\n  return [\n    () => {\n      update({ lastPosition: fromValue })\n    },\n    () => {\n      cancelAnimationFrame(animationFrameId)\n    },\n  ]\n}\n\n/**\n * find the first node in the hierarchy that matches the given 'is' typescript\n * type guard predicate\n */\nexport function findParentThatIs<T extends (a: IAnyStateTreeNode) => boolean>(\n  node: IAnyStateTreeNode,\n  predicate: T,\n): TypeTestedByPredicate<T> {\n  return findParentThat(node, predicate)\n}\n\n/**\n * get the current JBrowse session model, starting at any node in the state\n * tree\n */\nexport function getSession(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isSessionModel)\n  } catch (e) {\n    throw new Error('no session model found!')\n  }\n}\n\n/**\n * get the state model of the view in the state tree that contains the given\n * node\n */\nexport function getContainingView(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isViewModel)\n  } catch (e) {\n    throw new Error('no containing view found')\n  }\n}\n\n/**\n * get the state model of the view in the state tree that contains the given\n * node\n */\nexport function getContainingTrack(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isTrackModel)\n  } catch (e) {\n    throw new Error('no containing track found')\n  }\n}\n\n/**\n * get the state model of the display in the state tree that contains the given\n * node\n */\nexport function getContainingDisplay(node: IAnyStateTreeNode) {\n  try {\n    return findParentThatIs(node, isDisplayModel)\n  } catch (e) {\n    throw new Error('no containing display found')\n  }\n}\n\n/**\n * Assemble a 1-based \"locString\" from an interbase genomic location\n * @param region - Region\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0, end: 100 })\n * // ↳ 'chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 })\n * // ↳ '{hg19}chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1' })\n * // ↳ 'chr1'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0 })\n * // ↳ 'chr1:1..'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', end: 100 })\n * // ↳ 'chr1:1..100'\n * ```\n * @example\n * ```ts\n * assembleLocString({ refName: 'chr1', start: 0, end: 1 })\n * // ↳ 'chr1:1'\n * ```\n */\nexport function assembleLocString(region: ParsedLocString) {\n  return assembleLocStringFast(region, toLocale)\n}\n\n// same as assembleLocString above, but does not perform toLocaleString which\n// can slow down the speed of block calculations which use assembleLocString\n// for block.key\nexport function assembleLocStringFast(\n  region: ParsedLocString,\n  cb = (n: number): string | number => n,\n) {\n  const { assemblyName, refName, start, end, reversed } = region\n  const assemblyNameString = assemblyName ? `{${assemblyName}}` : ''\n  let startString: string\n  if (start !== undefined) {\n    startString = `:${cb(start + 1)}`\n  } else if (end !== undefined) {\n    startString = ':1'\n  } else {\n    startString = ''\n  }\n  let endString: string\n  if (end !== undefined) {\n    endString = start !== undefined && start + 1 === end ? '' : `..${cb(end)}`\n  } else {\n    endString = start !== undefined ? '..' : ''\n  }\n  let rev = ''\n  if (reversed) {\n    rev = '[rev]'\n  }\n  return `${assemblyNameString}${refName}${startString}${endString}${rev}`\n}\n\nexport interface ParsedLocString {\n  assemblyName?: string\n  refName: string\n  start?: number\n  end?: number\n  reversed?: boolean\n}\n\nexport function parseLocStringOneBased(\n  locString: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n): ParsedLocString {\n  if (!locString) {\n    throw new Error('no location string provided, could not parse')\n  }\n  let reversed = false\n  if (locString.endsWith('[rev]')) {\n    reversed = true\n    locString = locString.replace(/\\[rev]$/, '')\n  }\n  // remove any whitespace\n  locString = locString.replace(/\\s/, '')\n  // refNames can have colons, refer to\n  // https://samtools.github.io/hts-specs/SAMv1.pdf Appendix A\n  const assemblyMatch = /({(.+)})?(.+)/.exec(locString)\n  if (!assemblyMatch) {\n    throw new Error(`invalid location string: \"${locString}\"`)\n  }\n  const [, , assemblyName2, location2] = assemblyMatch\n  const assemblyName = assemblyName2!\n  const location = location2!\n  if (!assemblyName && location.startsWith('{}')) {\n    throw new Error(`no assembly name was provided in location \"${location}\"`)\n  }\n  const lastColonIdx = location.lastIndexOf(':')\n  if (lastColonIdx === -1) {\n    if (isValidRefName(location, assemblyName)) {\n      return {\n        assemblyName,\n        refName: location,\n        reversed,\n      }\n    }\n    throw new Error(`Unknown reference sequence \"${location}\"`)\n  }\n  const prefix = location.slice(0, lastColonIdx)\n  const suffix = location.slice(lastColonIdx + 1)\n  if (\n    isValidRefName(prefix, assemblyName) &&\n    isValidRefName(location, assemblyName)\n  ) {\n    throw new Error(`ambiguous location string: \"${locString}\"`)\n  } else if (isValidRefName(prefix, assemblyName)) {\n    if (suffix) {\n      // see if it's a range\n      const rangeMatch =\n        /^(-?(\\d+|\\d{1,3}(,\\d{3})*))(\\.\\.|-)(-?(\\d+|\\d{1,3}(,\\d{3})*))$/.exec(\n          suffix,\n        )\n      // see if it's a single point\n      const singleMatch = /^(-?(\\d+|\\d{1,3}(,\\d{3})*))(\\.\\.|-)?$/.exec(suffix)\n      if (rangeMatch) {\n        const [, start, , , , end] = rangeMatch\n        if (start !== undefined && end !== undefined) {\n          return {\n            assemblyName,\n            refName: prefix,\n            start: +start.replaceAll(',', ''),\n            end: +end.replaceAll(',', ''),\n            reversed,\n          }\n        }\n      } else if (singleMatch) {\n        const [, start, , , separator] = singleMatch\n        if (start !== undefined) {\n          if (separator) {\n            // indefinite end\n            return {\n              assemblyName,\n              refName: prefix,\n              start: +start.replaceAll(',', ''),\n              reversed,\n            }\n          }\n          return {\n            assemblyName,\n            refName: prefix,\n            start: +start.replaceAll(',', ''),\n            end: +start.replaceAll(',', ''),\n            reversed,\n          }\n        }\n      } else {\n        throw new Error(\n          `could not parse range \"${suffix}\" on location \"${locString}\"`,\n        )\n      }\n    } else {\n      return {\n        assemblyName,\n        refName: prefix,\n        reversed,\n      }\n    }\n  } else if (isValidRefName(location, assemblyName)) {\n    return {\n      assemblyName,\n      refName: location,\n      reversed,\n    }\n  }\n  throw new Error(`unknown reference sequence name in location \"${locString}\"`)\n}\n\n/**\n * Parse a 1-based location string into an interbase genomic location\n * @param locString - Location string\n * @param isValidRefName - Function that checks if a refName exists in the set\n * of all known refNames, or in the set of refNames for an assembly if\n * assemblyName is given\n * @example\n * ```ts\n * parseLocString('chr1:1..100', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1-100', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString(`{hg19}chr1:1..100`, isValidRefName)\n * // ↳ { assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1', isValidRefName)\n * // ↳ { refName: 'chr1' }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0, end: 1 }\n * ```\n * @example\n * ```ts\n * parseLocString('chr1:1..', isValidRefName)\n * // ↳ { refName: 'chr1', start: 0}\n * ```\n */\nexport function parseLocString(\n  locString: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const parsed = parseLocStringOneBased(locString, isValidRefName)\n  if (typeof parsed.start === 'number') {\n    parsed.start -= 1\n  }\n  return parsed\n}\n\nexport function compareLocs(locA: ParsedLocString, locB: ParsedLocString) {\n  const assemblyComp =\n    locA.assemblyName || locB.assemblyName\n      ? (locA.assemblyName || '').localeCompare(locB.assemblyName || '')\n      : 0\n  if (assemblyComp) {\n    return assemblyComp\n  }\n\n  const refComp =\n    locA.refName || locB.refName\n      ? (locA.refName || '').localeCompare(locB.refName || '')\n      : 0\n  if (refComp) {\n    return refComp\n  }\n\n  if (locA.start !== undefined && locB.start !== undefined) {\n    const startComp = locA.start - locB.start\n    if (startComp) {\n      return startComp\n    }\n  }\n  if (locA.end !== undefined && locB.end !== undefined) {\n    const endComp = locA.end - locB.end\n    if (endComp) {\n      return endComp\n    }\n  }\n  return 0\n}\n\nexport function compareLocStrings(\n  a: string,\n  b: string,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const locA = parseLocString(a, isValidRefName)\n  const locB = parseLocString(b, isValidRefName)\n  return compareLocs(locA, locB)\n}\n\n/**\n * Ensure that a number is at least min and at most max.\n *\n * @param num -\n * @param min -\n * @param  max -\n */\nexport function clamp(num: number, min: number, max: number) {\n  if (num < min) {\n    return min\n  }\n  if (num > max) {\n    return max\n  }\n  return num\n}\n\nfunction roundToNearestPointOne(num: number) {\n  return Math.round(num * 10) / 10\n}\n\n/**\n * @param bp -\n * @param region -\n * @param bpPerPx -\n */\nexport function bpToPx(\n  bp: number,\n  {\n    reversed,\n    end = 0,\n    start = 0,\n  }: { start?: number; end?: number; reversed?: boolean },\n  bpPerPx: number,\n) {\n  return roundToNearestPointOne((reversed ? end - bp : bp - start) / bpPerPx)\n}\n\nconst oneEightyOverPi = 180 / Math.PI\nconst piOverOneEighty = Math.PI / 180\nexport function radToDeg(radians: number) {\n  return (radians * oneEightyOverPi) % 360\n}\nexport function degToRad(degrees: number) {\n  return (degrees * piOverOneEighty) % (2 * Math.PI)\n}\n\n/**\n * @returns [x, y]\n */\nexport function polarToCartesian(rho: number, theta: number) {\n  return [rho * Math.cos(theta), rho * Math.sin(theta)] as [number, number]\n}\n\n/**\n * @param x - the x\n * @param y - the y\n * @returns [rho, theta]\n */\nexport function cartesianToPolar(x: number, y: number) {\n  const rho = Math.sqrt(x * x + y * y)\n  const theta = Math.atan(y / x)\n  return [rho, theta] as [number, number]\n}\n\nexport function featureSpanPx(\n  feature: Feature,\n  region: { start: number; end: number; reversed?: boolean },\n  bpPerPx: number,\n): [number, number] {\n  return bpSpanPx(feature.get('start'), feature.get('end'), region, bpPerPx)\n}\n\nexport function bpSpanPx(\n  leftBp: number,\n  rightBp: number,\n  region: { start: number; end: number; reversed?: boolean },\n  bpPerPx: number,\n): [number, number] {\n  const start = bpToPx(leftBp, region, bpPerPx)\n  const end = bpToPx(rightBp, region, bpPerPx)\n  return region.reversed ? [end, start] : [start, end]\n}\n\n// do an array map of an iterable\nexport function iterMap<T, U>(\n  iter: Iterable<T>,\n  func: (arg: T) => U,\n  sizeHint?: number,\n) {\n  const results = Array.from<U>({ length: sizeHint || 0 })\n  let counter = 0\n  for (const item of iter) {\n    results[counter] = func(item)\n    counter += 1\n  }\n  return results\n}\n\n/**\n * Returns the index of the last element in the array where predicate is true,\n * and -1 otherwise.\n * Based on https://stackoverflow.com/a/53187807\n *\n * @param array - The source array to search in\n *\n * @param predicate - find calls predicate once for each element of the array, in\n * descending order, until it finds one where predicate returns true.\n *\n * @returns findLastIndex returns element index where predicate is true.\n * Otherwise, findLastIndex returns -1.\n */\nexport function findLastIndex<T>(\n  array: T[],\n  predicate: (value: T, index: number, obj: T[]) => boolean,\n): number {\n  let l = array.length\n  while (l--) {\n    if (predicate(array[l]!, l, array)) {\n      return l\n    }\n  }\n  return -1\n}\n\nexport function findLast<T>(\n  array: T[],\n  predicate: (value: T, index: number, obj: T[]) => boolean,\n): T | undefined {\n  let l = array.length\n  while (l--) {\n    if (predicate(array[l]!, l, array)) {\n      return array[l]\n    }\n  }\n  return undefined\n}\n\n/**\n * makes a mobx reaction with the given functions, that calls actions on the\n * model for each stage of execution, and to abort the reaction function when\n * the model is destroyed.\n *\n * Will call startedFunction(signal), successFunction(result), and\n * errorFunction(error) when the async reaction function starts, completes, and\n * errors respectively.\n *\n * @param self -\n * @param dataFunction -\n * @param asyncReactionFunction -\n * @param reactionOptions -\n * @param startedFunction -\n * @param successFunction -\n * @param errorFunction -\n */\nexport function makeAbortableReaction<T, U, V>(\n  self: T,\n  dataFunction: (arg: T) => U,\n  asyncReactionFunction: (\n    arg: U | undefined,\n    signal: AbortSignal,\n    model: T,\n    handle: IReactionPublic,\n  ) => Promise<V>,\n  // @ts-expect-error\n  reactionOptions: IReactionOptions,\n  startedFunction: (aborter: AbortController) => void,\n  successFunction: (arg: V) => void,\n  errorFunction: (err: unknown) => void,\n) {\n  let inProgress: AbortController | undefined\n\n  function handleError(error: unknown) {\n    if (!isAbortException(error)) {\n      if (isAlive(self)) {\n        errorFunction(error)\n      } else {\n        console.error(error)\n      }\n    }\n  }\n\n  addDisposer(\n    self,\n    reaction(\n      () => {\n        try {\n          return dataFunction(self)\n        } catch (e) {\n          handleError(e)\n          return undefined\n        }\n      },\n      async (data, mobxReactionHandle) => {\n        if (inProgress && !inProgress.signal.aborted) {\n          inProgress.abort()\n        }\n\n        if (!isAlive(self)) {\n          return\n        }\n        inProgress = new AbortController()\n\n        const thisInProgress = inProgress\n        startedFunction(thisInProgress)\n        try {\n          const result = await asyncReactionFunction(\n            data,\n            thisInProgress.signal,\n            self,\n            // @ts-expect-error\n            mobxReactionHandle,\n          )\n          checkAbortSignal(thisInProgress.signal)\n          if (isAlive(self)) {\n            successFunction(result)\n          }\n        } catch (e) {\n          if (!thisInProgress.signal.aborted) {\n            thisInProgress.abort()\n          }\n          handleError(e)\n        }\n      },\n      reactionOptions,\n    ),\n  )\n  addDisposer(self, () => {\n    if (inProgress && !inProgress.signal.aborted) {\n      inProgress.abort()\n    }\n  })\n}\n\nexport function renameRegionIfNeeded(\n  refNameMap: Record<string, string> | undefined,\n  region: Region | Instance<typeof MUIRegion>,\n): Region & { originalRefName?: string } {\n  if (isStateTreeNode(region) && !isAlive(region)) {\n    return region\n  }\n\n  if (refNameMap?.[region.refName]) {\n    // clone the region so we don't modify it\n    region = isStateTreeNode(region)\n      ? { ...getSnapshot(region) }\n      : { ...region }\n\n    // modify it directly in the container\n    const newRef = refNameMap[region.refName]\n    if (newRef) {\n      return { ...region, refName: newRef, originalRefName: region.refName }\n    }\n  }\n  return region\n}\n\nexport async function renameRegionsIfNeeded<\n  ARGTYPE extends {\n    assemblyName?: string\n    regions?: Region[]\n    signal?: AbortSignal\n    adapterConfig: Record<string, unknown>\n    sessionId: string\n    statusCallback?: (arg: string) => void\n  },\n>(assemblyManager: AssemblyManager, args: ARGTYPE) {\n  const { regions = [], adapterConfig } = args\n  if (!args.sessionId) {\n    throw new Error('sessionId is required')\n  }\n\n  const assemblyNames = regions.map(region => region.assemblyName)\n  const assemblyMaps = Object.fromEntries(\n    await Promise.all(\n      [...new Set(assemblyNames)].map(async assemblyName => {\n        return [\n          assemblyName,\n          await assemblyManager.getRefNameMapForAdapter(\n            adapterConfig,\n            assemblyName,\n            args,\n          ),\n        ]\n      }),\n    ),\n  )\n\n  return {\n    ...args,\n    regions: regions.map((region, i) =>\n      // note: uses assemblyNames defined above since region could be dead now\n      renameRegionIfNeeded(assemblyMaps[assemblyNames[i]!], region),\n    ),\n  }\n}\n\nexport function minmax(a: number, b: number) {\n  return [Math.min(a, b), Math.max(a, b)] as const\n}\n\nexport function shorten(name: string, max = 70, short = 30) {\n  return name.length > max\n    ? `${name.slice(0, short)}...${name.slice(-short)}`\n    : name\n}\n\nexport function stringify(\n  {\n    refName,\n    coord,\n    assemblyName,\n    oob,\n  }: {\n    assemblyName?: string\n    coord: number\n    refName?: string\n    oob?: boolean\n  },\n  useAssemblyName?: boolean,\n) {\n  return [\n    assemblyName && useAssemblyName ? `{${assemblyName}}` : '',\n    refName\n      ? `${shorten(refName)}:${toLocale(coord)}${oob ? ' (out of bounds)' : ''}`\n      : '',\n  ].join('')\n}\n\n// this is recommended in a later comment in\n// https://github.com/electron/electron/issues/2288 for detecting electron in a\n// renderer process, which is the one that has node enabled for us\n//\n// const isElectron = process.versions.electron\n// const i2 = process.versions.hasOwnProperty('electron')\nexport const isElectron = /electron/i.test(\n  typeof navigator !== 'undefined' ? navigator.userAgent : '',\n)\n\nexport function revcom(seqString: string) {\n  return reverse(complement(seqString))\n}\n\nexport function reverse(seqString: string) {\n  return seqString.split('').reverse().join('')\n}\n\nexport const complement = (() => {\n  const complementRegex = /[ACGT]/gi\n\n  // from bioperl: tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/\n  // generated with:\n  // perl -MJSON -E '@l = split \"\",\"acgtrymkswhbvdnxACGTRYMKSWHBVDNX\"; print to_json({ map { my $in = $_; tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/; $in => $_ } @l})'\n  const complementTable = {\n    S: 'S',\n    w: 'w',\n    T: 'A',\n    r: 'y',\n    a: 't',\n    N: 'N',\n    K: 'M',\n    x: 'x',\n    d: 'h',\n    Y: 'R',\n    V: 'B',\n    y: 'r',\n    M: 'K',\n    h: 'd',\n    k: 'm',\n    C: 'G',\n    g: 'c',\n    t: 'a',\n    A: 'T',\n    n: 'n',\n    W: 'W',\n    X: 'X',\n    m: 'k',\n    v: 'b',\n    B: 'V',\n    s: 's',\n    H: 'D',\n    c: 'g',\n    D: 'H',\n    b: 'v',\n    R: 'Y',\n    G: 'C',\n  } as Record<string, string>\n\n  return (seqString: string) => {\n    return seqString.replaceAll(complementRegex, m => complementTable[m] || '')\n  }\n})()\n\n// requires immediate execution in jest environment, because (hypothesis) it\n// otherwise listens for prerendered_canvas but reads empty pixels, and doesn't\n// get the contents of the canvas\nexport const rIC =\n  typeof jest === 'undefined'\n    ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      typeof window !== 'undefined' && window.requestIdleCallback\n      ? window.requestIdleCallback\n      : (cb: () => void) =>\n          setTimeout(() => {\n            cb()\n          }, 1)\n    : (cb: () => void) => {\n        cb()\n      }\n\n// prettier-ignore\nconst widths = [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.2796875,0.2765625,0.3546875,0.5546875,0.5546875,0.8890625,0.665625,0.190625,0.3328125,0.3328125,0.3890625,0.5828125,0.2765625,0.3328125,0.2765625,0.3015625,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.5546875,0.2765625,0.2765625,0.584375,0.5828125,0.584375,0.5546875,1.0140625,0.665625,0.665625,0.721875,0.721875,0.665625,0.609375,0.7765625,0.721875,0.2765625,0.5,0.665625,0.5546875,0.8328125,0.721875,0.7765625,0.665625,0.7765625,0.721875,0.665625,0.609375,0.721875,0.665625,0.94375,0.665625,0.665625,0.609375,0.2765625,0.3546875,0.2765625,0.4765625,0.5546875,0.3328125,0.5546875,0.5546875,0.5,0.5546875,0.5546875,0.2765625,0.5546875,0.5546875,0.221875,0.240625,0.5,0.221875,0.8328125,0.5546875,0.5546875,0.5546875,0.5546875,0.3328125,0.5,0.2765625,0.5546875,0.5,0.721875,0.5,0.5,0.5,0.3546875,0.259375,0.353125,0.5890625]\n\n// xref https://gist.github.com/tophtucker/62f93a4658387bb61e4510c37e2e97cf\nexport function measureText(str: unknown, fontSize = 10) {\n  const avg = 0.5279276315789471\n  const s = String(str)\n  let total = 0\n  for (let i = 0; i < s.length; i++) {\n    const code = s.charCodeAt(i)\n    total += widths[code] ?? avg\n  }\n  return total * fontSize\n}\n\nexport type Frame = 1 | 2 | 3 | -1 | -2 | -3\n\nexport function getFrame(\n  start: number,\n  end: number,\n  strand: 1 | -1,\n  phase: 0 | 1 | 2,\n): Frame {\n  return strand === 1\n    ? ((((start + phase) % 3) + 1) as 1 | 2 | 3)\n    : ((-1 * ((end - phase) % 3) - 1) as -1 | -2 | -3)\n}\n\nexport const defaultStarts = ['ATG']\nexport const defaultStops = ['TAA', 'TAG', 'TGA']\nexport const defaultCodonTable = {\n  TCA: 'S',\n  TCC: 'S',\n  TCG: 'S',\n  TCT: 'S',\n  TTC: 'F',\n  TTT: 'F',\n  TTA: 'L',\n  TTG: 'L',\n  TAC: 'Y',\n  TAT: 'Y',\n  TAA: '*',\n  TAG: '*',\n  TGC: 'C',\n  TGT: 'C',\n  TGA: '*',\n  TGG: 'W',\n  CTA: 'L',\n  CTC: 'L',\n  CTG: 'L',\n  CTT: 'L',\n  CCA: 'P',\n  CCC: 'P',\n  CCG: 'P',\n  CCT: 'P',\n  CAC: 'H',\n  CAT: 'H',\n  CAA: 'Q',\n  CAG: 'Q',\n  CGA: 'R',\n  CGC: 'R',\n  CGG: 'R',\n  CGT: 'R',\n  ATA: 'I',\n  ATC: 'I',\n  ATT: 'I',\n  ATG: 'M',\n  ACA: 'T',\n  ACC: 'T',\n  ACG: 'T',\n  ACT: 'T',\n  AAC: 'N',\n  AAT: 'N',\n  AAA: 'K',\n  AAG: 'K',\n  AGC: 'S',\n  AGT: 'S',\n  AGA: 'R',\n  AGG: 'R',\n  GTA: 'V',\n  GTC: 'V',\n  GTG: 'V',\n  GTT: 'V',\n  GCA: 'A',\n  GCC: 'A',\n  GCG: 'A',\n  GCT: 'A',\n  GAC: 'D',\n  GAT: 'D',\n  GAA: 'E',\n  GAG: 'E',\n  GGA: 'G',\n  GGC: 'G',\n  GGG: 'G',\n  GGT: 'G',\n}\n\n/**\n * take CodonTable above and generate larger codon table that includes all\n * permutations of upper and lower case nucleotides\n */\nexport function generateCodonTable(table: any) {\n  const tempCodonTable: Record<string, string> = {}\n  Object.keys(table).forEach(codon => {\n    const aa = table[codon]\n    const nucs: string[][] = []\n    for (let i = 0; i < 3; i++) {\n      const nuc = codon.charAt(i)\n      nucs[i] = []\n      nucs[i]![0] = nuc.toUpperCase()\n      nucs[i]![1] = nuc.toLowerCase()\n    }\n    for (let i = 0; i < 2; i++) {\n      const n0 = nucs[0]![i]!\n      for (let j = 0; j < 2; j++) {\n        const n1 = nucs[1]![j]!\n        for (let k = 0; k < 2; k++) {\n          const n2 = nucs[2]![k]!\n          const triplet = n0 + n1 + n2\n          tempCodonTable[triplet] = aa\n        }\n      }\n    }\n  })\n  return tempCodonTable\n}\n\n// call statusCallback with current status and clear when finished\nexport async function updateStatus<U>(\n  msg: string,\n  cb: (arg: string) => void,\n  fn: () => U | Promise<U>,\n) {\n  cb(msg)\n  const res = await fn()\n  cb('')\n  return res\n}\n\nexport function hashCode(str: string) {\n  let hash = 0\n  if (str.length === 0) {\n    return hash\n  }\n  for (let i = 0; i < str.length; i++) {\n    const chr = str.charCodeAt(i)\n    hash = (hash << 5) - hash + chr\n    hash |= 0 // Convert to 32bit integer\n  }\n  return hash\n}\n\nexport function objectHash(obj: Record<string, any>) {\n  return `${hashCode(JSON.stringify(obj))}`\n}\n\ninterface VirtualOffset {\n  blockPosition: number\n}\ninterface Block {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\nexport async function bytesForRegions(\n  regions: Region[],\n  index: {\n    blocksForRange: (\n      ref: string,\n      start: number,\n      end: number,\n    ) => Promise<Block[]>\n  },\n) {\n  const blockResults = await Promise.all(\n    regions.map(r => index.blocksForRange(r.refName, r.start, r.end)),\n  )\n\n  return blockResults\n    .flat()\n    .map(block => ({\n      start: block.minv.blockPosition,\n      end: block.maxv.blockPosition + 65535,\n    }))\n    .reduce((a, b) => a + b.end - b.start, 0)\n}\n\nexport interface ViewSnap {\n  bpPerPx: number\n  interRegionPaddingWidth: number\n  minimumBlockWidth: number\n  width: number\n  offsetPx: number\n  staticBlocks: { contentBlocks: BaseBlock[]; blocks: BaseBlock[] }\n  displayedRegions: (IStateTreeNode & {\n    start: number\n    end: number\n    refName: string\n    reversed?: boolean\n    assemblyName: string\n  })[]\n}\n\n// supported adapter types by text indexer ensure that this matches the method\n// found in @jbrowse/text-indexing/util\nexport function isSupportedIndexingAdapter(type = '') {\n  return [\n    'Gff3TabixAdapter',\n    'VcfTabixAdapter',\n    'Gff3Adapter',\n    'VcfAdapter',\n  ].includes(type)\n}\n\nexport function getBpDisplayStr(totalBp: number) {\n  if (Math.floor(totalBp / 1_000_000) > 0) {\n    return `${Number.parseFloat((totalBp / 1_000_000).toPrecision(3))}Mbp`\n  } else if (Math.floor(totalBp / 1_000) > 0) {\n    return `${Number.parseFloat((totalBp / 1_000).toPrecision(3))}Kbp`\n  } else {\n    return `${toLocale(Math.floor(totalBp))}bp`\n  }\n}\n\nexport function toLocale(n: number) {\n  return n.toLocaleString('en-US')\n}\n\nexport function getTickDisplayStr(totalBp: number, bpPerPx: number) {\n  return Math.floor(bpPerPx / 1_000) > 0\n    ? `${toLocale(Number.parseFloat((totalBp / 1_000_000).toFixed(2)))}M`\n    : toLocale(Math.floor(totalBp))\n}\n\nexport function getViewParams(model: IAnyStateTreeNode, exportSVG?: boolean) {\n  // @ts-expect-error\n  const { dynamicBlocks, staticBlocks, offsetPx } = getContainingView(model)\n  const b = dynamicBlocks?.contentBlocks[0] || {}\n  const staticblock = staticBlocks?.contentBlocks[0] || {}\n  const staticblock1 = staticBlocks?.contentBlocks[1] || {}\n  return {\n    offsetPx: exportSVG ? 0 : offsetPx - staticblock.offsetPx,\n    offsetPx1: exportSVG ? 0 : offsetPx - staticblock1.offsetPx,\n    start: b.start as number,\n    end: b.end as number,\n  }\n}\n\nexport function getLayoutId({\n  sessionId,\n  layoutId,\n}: {\n  sessionId: string\n  layoutId: string\n}) {\n  return `${sessionId}-${layoutId}`\n}\n\n// Hook from https://usehooks.com/useLocalStorage/\nexport function useLocalStorage<T>(key: string, initialValue: T) {\n  const [storedValue, setStoredValue] = useState<T>(() => {\n    if (typeof window === 'undefined') {\n      return initialValue\n    }\n    try {\n      const item = window.localStorage.getItem(key)\n      return item ? JSON.parse(item) : initialValue\n    } catch (error) {\n      console.error(error)\n      return initialValue\n    }\n  })\n  const setValue = (value: T | ((val: T) => T)) => {\n    try {\n      const valueToStore =\n        value instanceof Function ? value(storedValue) : value\n      setStoredValue(valueToStore)\n      if (typeof window !== 'undefined') {\n        window.localStorage.setItem(key, JSON.stringify(valueToStore))\n      }\n    } catch (error) {\n      console.error(error)\n    }\n  }\n  return [storedValue, setValue] as const\n}\n\nexport function getUriLink(value: { uri: string; baseUri?: string }) {\n  const { uri, baseUri = '' } = value\n  let href: string\n  try {\n    href = new URL(uri, baseUri).href\n  } catch (e) {\n    href = uri\n  }\n  return href\n}\n\nexport function getStr(obj: unknown) {\n  return isObject(obj)\n    ? isUriLocation(obj)\n      ? getUriLink(obj)\n      : JSON.stringify(obj)\n    : String(obj)\n}\n\n// tries to measure grid width without HTML tags included\nexport function coarseStripHTML(s: string) {\n  return s.replaceAll(/(<([^>]+)>)/gi, '')\n}\n\n// based on autolink-js, license MIT\n// https://github.com/bryanwoods/autolink-js/blob/1418049970152c56ced73d43dcc62d80b320fb71/autolink.js#L9\nexport function linkify(s: string) {\n  const pattern =\n    /(^|[\\s\\n]|<[A-Za-z]*\\/?>)((?:https?|ftp):\\/\\/[-A-Z0-9+\\u0026\\u2019@#/%?=()~_|!:,.;]*[-A-Z0-9+\\u0026@#/%=~()_|])/gi\n  return s.replaceAll(pattern, '$1<a href=\\'$2\\' target=\"_blank\">$2</a>')\n}\n\n// heuristic measurement for a column of a @mui/x-data-grid, pass in\n// values from a column\nexport function measureGridWidth(\n  elements: unknown[],\n  args?: {\n    minWidth?: number\n    fontSize?: number\n    maxWidth?: number\n    padding?: number\n    stripHTML?: boolean\n  },\n) {\n  const {\n    padding = 30,\n    minWidth = 80,\n    fontSize = 12,\n    maxWidth = 1000,\n    stripHTML = false,\n  } = args || {}\n  return max(\n    elements\n      .map(element => getStr(element))\n      .map(str => (stripHTML ? coarseStripHTML(str) : str))\n      .map(str => measureText(str, fontSize))\n      .map(n => Math.min(Math.max(n + padding, minWidth), maxWidth)),\n  )\n}\n\nexport function getEnv(obj: any) {\n  return getEnvMST<{ pluginManager: PluginManager }>(obj)\n}\n\nexport function localStorageGetItem(item: string) {\n  return typeof localStorage !== 'undefined'\n    ? localStorage.getItem(item)\n    : undefined\n}\n\nexport function localStorageSetItem(str: string, item: string) {\n  if (typeof localStorage !== 'undefined') {\n    localStorage.setItem(str, item)\n  }\n}\n\nexport function max(arr: number[], init = Number.NEGATIVE_INFINITY) {\n  let max = init\n  for (const entry of arr) {\n    max = entry > max ? entry : max\n  }\n  return max\n}\n\nexport function min(arr: number[], init = Number.POSITIVE_INFINITY) {\n  let min = init\n  for (const entry of arr) {\n    min = entry < min ? entry : min\n  }\n  return min\n}\n\nexport function sum(arr: number[]) {\n  let sum = 0\n  for (const entry of arr) {\n    sum += entry\n  }\n  return sum\n}\n\nexport function avg(arr: number[]) {\n  return sum(arr) / arr.length\n}\n\nexport function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string) {\n  const result = {} as Record<string, T[]>\n  for (const value of array) {\n    const t = predicate(value)\n    if (!result[t]) {\n      result[t] = []\n    }\n    result[t].push(value)\n  }\n  return result\n}\n\nexport function notEmpty<T>(value: T | null | undefined): value is T {\n  return value !== null && value !== undefined\n}\n\nexport function mergeIntervals<T extends { start: number; end: number }>(\n  intervals: T[],\n  w = 5000,\n) {\n  // test if there are at least 2 intervals\n  if (intervals.length <= 1) {\n    return intervals\n  }\n\n  const stack = [] as T[]\n  let top = null\n\n  // sort the intervals based on their start values\n  intervals = intervals.sort((a, b) => a.start - b.start)\n\n  // push the 1st interval into the stack\n  stack.push(intervals[0]!)\n\n  // start from the next interval and merge if needed\n  for (let i = 1; i < intervals.length; i++) {\n    // get the top element\n    top = stack.at(-1)!\n\n    // if the current interval doesn't overlap with the\n    // stack top element, push it to the stack\n    if (top.end + w < intervals[i]!.start - w) {\n      stack.push(intervals[i]!)\n    }\n    // otherwise update the end value of the top element\n    // if end of current interval is higher\n    else if (top.end < intervals[i]!.end) {\n      top.end = Math.max(top.end, intervals[i]!.end)\n      stack.pop()\n      stack.push(top)\n    }\n  }\n\n  return stack\n}\n\ninterface BasicFeature {\n  end: number\n  start: number\n  refName: string\n  assemblyName?: string\n}\n\n// returns new array non-overlapping features\nexport function gatherOverlaps(regions: BasicFeature[], w = 5000) {\n  const memo = {} as Record<string, BasicFeature[]>\n  for (const x of regions) {\n    if (!memo[x.refName]) {\n      memo[x.refName] = []\n    }\n    memo[x.refName]!.push(x)\n  }\n\n  return Object.values(memo).flatMap(group =>\n    mergeIntervals(\n      group.sort((a, b) => a.start - b.start),\n      w,\n    ),\n  )\n}\n\nexport function stripAlpha(str: string) {\n  return colord(str).alpha(1).toHex()\n}\n\nexport function getStrokeProps(str: string) {\n  const c = colord(str)\n  return {\n    strokeOpacity: c.alpha(),\n    stroke: c.alpha(1).toHex(),\n  }\n}\n\nexport function getFillProps(str: string) {\n  const c = colord(str)\n  return {\n    fillOpacity: c.alpha(),\n    fill: c.alpha(1).toHex(),\n  }\n}\n\n// https://react.dev/reference/react-dom/server/renderToString#removing-rendertostring-from-the-client-code\nexport function renderToStaticMarkup(\n  node: React.ReactElement,\n  createRootFn?: (elt: Element | DocumentFragment) => {\n    render: (node: React.ReactElement) => unknown\n  },\n) {\n  const div = document.createElement('div')\n  flushSync(() => {\n    if (createRootFn) {\n      createRootFn(div).render(node)\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-deprecated\n      render(node, div)\n    }\n  })\n  return div.innerHTML.replaceAll(/\\brgba\\((.+?),[^,]+?\\)/g, 'rgb($1)')\n}\n\nexport function isGzip(buf: Buffer) {\n  return buf[0] === 31 && buf[1] === 139 && buf[2] === 8\n}\n\nexport {\n  default as SimpleFeature,\n  type Feature,\n  type SimpleFeatureSerialized,\n  isFeature,\n} from './simpleFeature'\n\nexport { blobToDataURL } from './blobToDataURL'\n","import { getParent, isRoot, IAnyStateTreeNode } from 'mobx-state-tree'\nimport { getSession, objectHash, getEnv } from './index'\nimport { PreFileLocation, FileLocation } from './types'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\n\n/* utility functions for use by track models and so forth */\n\nexport function getTrackAssemblyNames(\n  track: IAnyStateTreeNode & { configuration: AnyConfigurationModel },\n) {\n  return getConfAssemblyNames(track.configuration)\n}\n\nexport function getConfAssemblyNames(conf: AnyConfigurationModel) {\n  const trackAssemblyNames = readConfObject(conf, 'assemblyNames') as\n    | string[]\n    | undefined\n  if (!trackAssemblyNames) {\n    // Check if it's an assembly sequence track\n    const parent = getParent<any>(conf)\n    if ('sequence' in parent) {\n      return [readConfObject(parent, 'name') as string]\n    } else {\n      throw new Error('unknown assembly names')\n    }\n  }\n  return trackAssemblyNames\n}\n\n/**\n * return the rpcSessionId of the highest parent node in the tree that has an\n * rpcSessionId */\n\nexport function getRpcSessionId(thisNode: IAnyStateTreeNode) {\n  interface NodeWithRpcSessionId extends IAnyStateTreeNode {\n    rpcSessionId: string\n  }\n  let highestRpcSessionId: string | undefined\n\n  for (let node = thisNode; !isRoot(node); node = getParent<any>(node)) {\n    if ('rpcSessionId' in node) {\n      highestRpcSessionId = (node as NodeWithRpcSessionId).rpcSessionId\n    }\n  }\n  if (!highestRpcSessionId) {\n    throw new Error(\n      'getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute',\n    )\n  }\n  return highestRpcSessionId\n}\n\n/**\n * given an MST node, get the renderprops of the first parent container that\n * has renderProps\n * @param node -\n * @returns renderprops, or empty object if none found\n */\nexport function getParentRenderProps(node: IAnyStateTreeNode) {\n  for (\n    let currentNode = getParent<any>(node);\n    !isRoot(currentNode);\n    currentNode = getParent<any>(currentNode)\n  ) {\n    if ('renderProps' in currentNode) {\n      return currentNode.renderProps()\n    }\n  }\n\n  return {}\n}\n\nexport const UNKNOWN = 'UNKNOWN'\nexport const UNSUPPORTED = 'UNSUPPORTED'\n\nlet blobMap: Record<string, File> = {}\n\n// get a specific blob\nexport function getBlob(id: string) {\n  return blobMap[id]\n}\n\n// used to export entire context to webworker\nexport function getBlobMap() {\n  return blobMap\n}\n\n// used in new contexts like webworkers\nexport function setBlobMap(map: Record<string, File>) {\n  blobMap = map\n}\n\nlet counter = 0\n\n// blob files are stored in a global map. the blobId is based on a combination\n// of timestamp plus counter to be unique across sessions and fast repeated\n// calls\nexport function storeBlobLocation(location: PreFileLocation) {\n  if ('blob' in location) {\n    const blobId = `b${+Date.now()}-${counter++}`\n    blobMap[blobId] = location.blob\n    return { name: location.blob.name, blobId, locationType: 'BlobLocation' }\n  }\n  return location\n}\n\n/**\n * creates a new location from the provided location including the appropriate suffix and location type\n * @param location - the FileLocation\n * @param suffix - the file suffix (e.g. .bam)\n * @returns the constructed location object from the provided parameters\n */\nexport function makeIndex(location: FileLocation, suffix: string) {\n  if ('uri' in location) {\n    return { uri: location.uri + suffix, locationType: 'UriLocation' }\n  }\n\n  if ('localPath' in location) {\n    return {\n      localPath: location.localPath + suffix,\n      locationType: 'LocalPathLocation',\n    }\n  }\n\n  return location\n}\n\n/**\n * constructs a potential index file (with suffix) from the provided file name\n * @param name - the name of the index file\n * @param typeA - one option of a potential two file suffix (e.g. CSI, BAI)\n * @param typeB - the second option of a potential two file suffix (e.g. CSI, BAI)\n * @returns a likely name of the index file for a given filename\n */\nexport function makeIndexType(\n  name: string | undefined,\n  typeA: string,\n  typeB: string,\n) {\n  return name?.toUpperCase().endsWith(typeA) ? typeA : typeB\n}\n\nexport interface AdapterConfig {\n  type: string\n  [key: string]: unknown\n}\n\nexport type AdapterGuesser = (\n  file: FileLocation,\n  index?: FileLocation,\n  adapterHint?: string,\n) => AdapterConfig | undefined\n\nexport type TrackTypeGuesser = (adapterName: string) => string | undefined\n\nexport function getFileName(track: FileLocation) {\n  const uri = 'uri' in track ? track.uri : undefined\n  const localPath = 'localPath' in track ? track.localPath : undefined\n  const blob = 'blobId' in track ? track : undefined\n  return (\n    blob?.name ||\n    uri?.slice(uri.lastIndexOf('/') + 1) ||\n    localPath?.slice(localPath.replace(/\\\\/g, '/').lastIndexOf('/') + 1) ||\n    ''\n  )\n}\n\nexport function guessAdapter(\n  file: FileLocation,\n  index: FileLocation | undefined,\n  adapterHint?: string,\n  model?: IAnyStateTreeNode,\n) {\n  if (model) {\n    const { pluginManager } = getEnv(model)\n    const adapterGuesser = pluginManager.evaluateExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (\n        _file: FileLocation,\n        _index?: FileLocation,\n        _adapterHint?: string,\n      ): AdapterConfig | undefined => {\n        return undefined\n      },\n    ) as AdapterGuesser\n\n    const adapter = adapterGuesser(file, index, adapterHint)\n\n    if (adapter) {\n      return adapter\n    }\n  }\n\n  return {\n    type: UNKNOWN,\n  }\n}\n\nexport function guessTrackType(\n  adapterType: string,\n  model?: IAnyStateTreeNode,\n): string {\n  if (model) {\n    const session = getSession(model)\n\n    const trackTypeGuesser = getEnv(\n      session,\n    ).pluginManager.evaluateExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (_adapterName: string): AdapterConfig | undefined => {\n        return undefined\n      },\n    ) as TrackTypeGuesser\n\n    const trackType = trackTypeGuesser(adapterType)\n\n    if (trackType) {\n      return trackType\n    }\n  }\n  return 'FeatureTrack'\n}\n\nexport function generateUnsupportedTrackConf(\n  trackName: string,\n  trackUrl: string,\n  categories: string[] | undefined,\n) {\n  const conf = {\n    type: 'FeatureTrack',\n    name: `${trackName} (Unsupported)`,\n    description: `Support not yet implemented for \"${trackUrl}\"`,\n    category: categories,\n    trackId: '',\n  }\n  conf.trackId = objectHash(conf)\n  return conf\n}\n\nexport function generateUnknownTrackConf(\n  trackName: string,\n  trackUrl: string,\n  categories: string[] | undefined,\n) {\n  const conf = {\n    type: 'FeatureTrack',\n    name: `${trackName} (Unknown)`,\n    description: `Could not determine track type for \"${trackUrl}\"`,\n    category: categories,\n    trackId: '',\n  }\n  conf.trackId = objectHash(conf)\n  return conf\n}\n\nexport function getTrackName(\n  conf: AnyConfigurationModel,\n  session: { assemblies: AnyConfigurationModel[] },\n) {\n  const trackName = readConfObject(conf, 'name') as string\n  if (!trackName && readConfObject(conf, 'type') === 'ReferenceSequenceTrack') {\n    const asm = session.assemblies.find(a => a.sequence === conf)\n    return asm\n      ? `Reference sequence (${\n          readConfObject(asm, 'displayName') || readConfObject(asm, 'name')\n        })`\n      : 'Reference sequence'\n  }\n  return trackName\n}\n","import { types } from 'mobx-state-tree'\nimport { nanoid } from '../nanoid'\n\nexport const ElementId = types.optional(types.identifier, () => nanoid())\n\nexport const NoAssemblyRegion = types\n  .model('NoAssemblyRegion', {\n    refName: types.string,\n    start: types.number,\n    end: types.number,\n    reversed: types.optional(types.boolean, false),\n  })\n  .actions(self => ({\n    setRefName(newRefName: string): void {\n      self.refName = newRefName\n    },\n  }))\n\nexport const Region = types.compose(\n  'Region',\n  NoAssemblyRegion,\n  types.model({\n    assemblyName: types.string,\n  }),\n)\n\nexport const LocalPathLocation = types.model('LocalPathLocation', {\n  locationType: types.literal('LocalPathLocation'),\n  localPath: types.string,\n})\n\n// like how blobId is used to get a blob map\nexport const BlobLocation = types.model('BlobLocation', {\n  locationType: types.literal('BlobLocation'),\n  name: types.string,\n  blobId: types.string,\n})\n\nexport const UriLocationRaw = types.model('UriLocation', {\n  locationType: types.literal('UriLocation'),\n  uri: types.string,\n  baseUri: types.maybe(types.string),\n\n  internetAccountId: types.maybe(types.string),\n\n  // auths information (such as tokens) needed for using this resource.\n  // if provided, these must be completely sufficient for using it\n  internetAccountPreAuthorization: types.maybe(\n    types.model('InternetAccountPreAuthorization', {\n      internetAccountType: types.string,\n      authInfo: types.frozen(),\n    }),\n  ),\n})\n\nexport const UriLocation = types.snapshotProcessor(UriLocationRaw, {\n  postProcessor: snap => {\n    // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n    const { baseUri, ...rest } = snap as Omit<typeof snap, symbol>\n    if (!baseUri) {\n      return rest\n    }\n    return snap\n  },\n})\n\nexport const FileLocation = types.snapshotProcessor(\n  types.union(LocalPathLocation, UriLocation, BlobLocation),\n  {\n    // @ts-expect-error\n    preProcessor(snap) {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!snap) {\n        return undefined\n      }\n\n      // @ts-expect-error\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      const { locationType, ...rest } = snap as Omit<typeof snap, symbol>\n      if (!locationType) {\n        // @ts-expect-error\n        const { uri, localPath, blob } = rest\n        let locationType = ''\n        if (uri !== undefined) {\n          locationType = 'UriLocation'\n        } else if (localPath !== undefined) {\n          locationType = 'LocalPathLocation'\n        } else if (blob !== undefined) {\n          locationType = 'BlobLocation'\n        }\n\n        return { ...rest, locationType }\n      }\n      return snap\n    },\n  },\n)\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  IAnyStateTreeNode,\n  Instance,\n  getParent,\n  isStateTreeNode,\n  types,\n} from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\n\n// locals\nimport type { BaseRootModelType } from '../RootModel/BaseRootModel'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\n\n/**\n * #stateModel BaseSessionModel\n *\n * base session shared by all JBrowse products. Be careful what you include\n * here, everything will use it.\n */\nexport function BaseSessionModel<\n  ROOT_MODEL_TYPE extends BaseRootModelType,\n  JB_CONFIG_SCHEMA extends AnyConfigurationSchemaType,\n>(_pluginManager: PluginManager) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      name: types.string,\n      /**\n       * #property\n       */\n      margin: 0,\n    })\n    .volatile(() => ({\n      /**\n       * #volatile\n       * this is the globally \"selected\" object. can be anything. code that\n       * wants to deal with this should examine it to see what kind of thing it\n       * is.\n       */\n      selection: undefined as unknown,\n      /**\n       * #volatile\n       * this is the globally \"hovered\" object. can be anything. code that\n       * wants to deal with this should examine it to see what kind of thing it\n       * is.\n       */\n      hovered: undefined as unknown,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get root() {\n        return getParent<ROOT_MODEL_TYPE>(self)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get jbrowse() {\n        return self.root.jbrowse\n      },\n      /**\n       * #getter\n       */\n      get rpcManager() {\n        return self.root.rpcManager\n      },\n      /**\n       * #getter\n       */\n      get configuration(): Instance<JB_CONFIG_SCHEMA> {\n        return this.jbrowse.configuration\n      },\n      /**\n       * #getter\n       */\n      get adminMode() {\n        return self.root.adminMode\n      },\n\n      /**\n       * #getter\n       */\n      get textSearchManager() {\n        return self.root.textSearchManager\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get assemblies(): Instance<BaseAssemblyConfigSchema>[] {\n        return self.jbrowse.assemblies\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       * set the global selection, i.e. the globally-selected object. can be a\n       * feature, a view, just about anything\n       */\n      setSelection(thing: unknown) {\n        self.selection = thing\n      },\n\n      /**\n       * #action\n       * clears the global selection\n       */\n      clearSelection() {\n        self.selection = undefined\n      },\n      /**\n       * #action\n       */\n      setHovered(thing: unknown) {\n        self.hovered = thing\n      },\n    }))\n}\n\n/** Session mixin MST type for the most basic session */\nexport type BaseSessionType = ReturnType<typeof BaseSessionModel>\n\n/** Instance of the most basic possible session */\nexport type BaseSession = Instance<BaseSessionType>\n\n/** Type guard for BaseSession */\nexport function isBaseSession(thing: IAnyStateTreeNode): thing is BaseSession {\n  return 'id' in thing && 'name' in thing && 'root' in thing\n}\n\n/** Type guard for whether a thing is JBrowse session */\nexport function isSession(thing: unknown): thing is BaseSession {\n  return isStateTreeNode(thing) && isBaseSession(thing)\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { IAnyStateTreeNode, Instance, types } from 'mobx-state-tree'\nimport { BaseConnectionConfigModel } from '@jbrowse/core/pluggableElementTypes/models/baseConnectionConfig'\nimport { BaseConnectionModel } from '@jbrowse/core/pluggableElementTypes/models/BaseConnectionModelFactory'\n\n// locals\nimport type { BaseRootModelType } from '../RootModel/BaseRootModel'\nimport type { SessionWithReferenceManagementType } from './ReferenceManagement'\nimport { isBaseSession } from './BaseSession'\n\n/**\n * #stateModel ConnectionManagementSessionMixin\n */\nexport function ConnectionManagementSessionMixin(pluginManager: PluginManager) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      connectionInstances: types.array(\n        pluginManager.pluggableMstType(\n          'connection',\n          'stateModel',\n        ) as BaseConnectionModel,\n      ),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get connections(): BaseConnectionConfigModel[] {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.connections\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      makeConnection(\n        configuration: AnyConfigurationModel,\n        initialSnapshot = {},\n      ) {\n        const type = configuration.type as string\n        if (!type) {\n          throw new Error('track configuration has no `type` listed')\n        }\n        const name = readConfObject(configuration, 'name')\n        const connectionType = pluginManager.getConnectionType(type)\n        if (!connectionType) {\n          throw new Error(`unknown connection type ${type}`)\n        }\n        const length = self.connectionInstances.push({\n          ...initialSnapshot,\n          name,\n          // @ts-expect-error unsure why ts doesn't like `type` here, but is\n          // needed\n          type,\n          configuration,\n        })\n        return self.connectionInstances[length - 1]\n      },\n\n      /**\n       * #action\n       */\n      prepareToBreakConnection(configuration: AnyConfigurationModel) {\n        const root = self as typeof self &\n          Instance<SessionWithReferenceManagementType>\n        const callbacksToDeref: (() => void)[] = []\n        const derefTypeCount: Record<string, number> = {}\n        const name = readConfObject(configuration, 'name')\n        const connection = self.connectionInstances.find(c => c.name === name)\n        if (!connection) {\n          return undefined\n        }\n        for (const track of connection.tracks) {\n          const ref = root.getReferring(track)\n          root.removeReferring(ref, track, callbacksToDeref, derefTypeCount)\n        }\n        return [\n          () => {\n            callbacksToDeref.forEach(cb => {\n              cb()\n            })\n            this.breakConnection(configuration)\n          },\n          derefTypeCount,\n        ]\n      },\n\n      /**\n       * #action\n       */\n      breakConnection(configuration: AnyConfigurationModel) {\n        const name = readConfObject(configuration, 'name')\n        const connection = self.connectionInstances.find(c => c.name === name)\n        if (!connection) {\n          throw new Error(`no connection found with name ${name}`)\n        }\n        self.connectionInstances.remove(connection)\n      },\n\n      /**\n       * #action\n       */\n      deleteConnection(configuration: AnyConfigurationModel) {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.deleteConnectionConf(configuration)\n      },\n\n      /**\n       * #action\n       */\n      addConnectionConf(connectionConf: AnyConfigurationModel) {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.addConnectionConf(connectionConf)\n      },\n\n      /**\n       * #action\n       */\n      clearConnections() {\n        self.connectionInstances.clear()\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that has connections */\nexport type SessionWithConnectionsType = ReturnType<\n  typeof ConnectionManagementSessionMixin\n>\n\n/** Instance of a session that has connections: `connectionInstances`,\n * `makeConnection()`, etc. */\nexport type SessionWithConnections = Instance<SessionWithConnectionsType>\n\n/** Type guard for SessionWithConnections */\nexport function isSessionWithConnections(\n  session: IAnyStateTreeNode,\n): session is SessionWithConnections {\n  return isBaseSession(session) && 'connectionInstances' in session\n}\n","import { lazy } from 'react'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport UCSCTrackHubConnectionF from './ucsc-trackhub'\nimport AddTrackWidgetF from './AddTrackWidget'\n\nimport AddConnectionWidgetF from './AddConnectionWidget'\nimport PluginStoreWidgetF from './PluginStoreWidget'\nimport HierarchicalTrackSelectorWidgetF from './HierarchicalTrackSelectorWidget'\n\nconst AssemblyManager = lazy(() => import('./AssemblyManager'))\n\nexport default class DataManagementPlugin extends Plugin {\n  name = 'DataManagementPlugin'\n\n  exports = {\n    AssemblyManager,\n  }\n\n  install(pluginManager: PluginManager) {\n    UCSCTrackHubConnectionF(pluginManager)\n    AddTrackWidgetF(pluginManager)\n    HierarchicalTrackSelectorWidgetF(pluginManager)\n    AddConnectionWidgetF(pluginManager)\n    PluginStoreWidgetF(pluginManager)\n  }\n\n  configure(_pluginManager: PluginManager) {}\n}\n\nexport { AssemblyManager }\n\nexport { type AddTrackModel } from './AddTrackWidget/model'\nexport { type HierarchicalTrackSelectorModel } from './HierarchicalTrackSelectorWidget'\n","import React from 'react'\nimport {\n  Alert,\n  Button,\n  IconButton,\n  Snackbar as MUISnackbar,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n\n// locals\nimport { AbstractSessionModel } from '../util'\nimport { SnackbarMessage } from './SnackbarModel'\n\ninterface SnackbarSession extends AbstractSessionModel {\n  snackbarMessages: SnackbarMessage[]\n  popSnackbarMessage: () => void\n}\n\nconst Snackbar = observer(function ({ session }: { session: SnackbarSession }) {\n  const { snackbarMessages } = session\n  const latestMessage = snackbarMessages.at(-1)\n\n  const handleClose = (_event: unknown, reason?: string) => {\n    if (reason !== 'clickaway') {\n      session.popSnackbarMessage()\n    }\n  }\n  return latestMessage ? (\n    <MUISnackbar\n      open\n      onClose={handleClose}\n      anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n    >\n      <Alert\n        onClose={handleClose}\n        action={\n          latestMessage.action ? (\n            <>\n              <Button\n                color=\"inherit\"\n                onClick={e => {\n                  latestMessage.action?.onClick()\n                  handleClose(e)\n                }}\n              >\n                {latestMessage.action.name}\n              </Button>\n              <IconButton color=\"inherit\" onClick={handleClose}>\n                <CloseIcon />\n              </IconButton>\n            </>\n          ) : null\n        }\n        severity={latestMessage.level || 'warning'}\n      >\n        {latestMessage.message}\n      </Alert>\n    </MUISnackbar>\n  ) : null\n})\n\nexport default Snackbar\n","import React, { useRef, useState } from 'react'\nimport { Button, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\n\nimport Menu, { MenuItem } from './Menu'\n\nconst useStyles = makeStyles()(theme => ({\n  buttonRoot: {\n    '&:hover': {\n      backgroundColor: alpha(\n        theme.palette.primary.contrastText,\n        theme.palette.action.hoverOpacity,\n      ),\n      '@media (hover: none)': {\n        backgroundColor: 'transparent',\n      },\n    },\n  },\n}))\n\nconst DropDownMenu = observer(function ({\n  menuTitle,\n  session,\n  menuItems,\n}: {\n  menuTitle: string\n\n  session: any\n  menuItems: MenuItem[]\n}) {\n  const [open, setOpen] = useState(false)\n  const anchorEl = useRef(null)\n  const { classes } = useStyles()\n\n  function handleClose() {\n    setOpen(false)\n  }\n\n  return (\n    <>\n      <Button\n        ref={anchorEl}\n        onClick={() => {\n          setOpen(!open)\n        }}\n        color=\"inherit\"\n        data-testid=\"dropDownMenuButton\"\n        classes={{ root: classes.buttonRoot }}\n      >\n        {menuTitle}\n        <ArrowDropDown />\n      </Button>\n      <Menu\n        anchorEl={anchorEl.current}\n        anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n        onMenuItemClick={(_event, callback) => {\n          callback(session)\n          handleClose()\n        }}\n        open={open}\n        onClose={handleClose}\n        menuItems={menuItems}\n      />\n    </>\n  )\n})\n\nexport default DropDownMenu\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\n\n// ui elements\nimport { LogoFull } from './Logo'\n\nconst Logo = observer(function ({\n  session,\n}: {\n  session: { configuration: AnyConfigurationModel }\n}) {\n  const { configuration } = session\n  const logoPath = readConfObject(configuration, 'logoPath')\n  return logoPath?.uri ? (\n    <img src={logoPath.uri} alt=\"Custom logo\" />\n  ) : (\n    <LogoFull variant=\"white\" />\n  )\n})\n\nexport default Logo\n","import React from 'react'\nimport { Toolbar, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { SessionWithDrawerWidgets } from '@jbrowse/core/util'\nimport DropDownMenu from '@jbrowse/core/ui/DropDownMenu'\nimport EditableTypography from '@jbrowse/core/ui/EditableTypography'\nimport AppLogo from '@jbrowse/core/ui/AppLogo'\nimport { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu'\nimport { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel'\n\nconst useStyles = makeStyles()(theme => ({\n  grow: {\n    flexGrow: 1,\n  },\n  inputBase: {\n    color: theme.palette.primary.contrastText,\n  },\n  inputRoot: {\n    '&:hover': {\n      backgroundColor: theme.palette.primary.light,\n    },\n  },\n  inputFocused: {\n    borderColor: theme.palette.secondary.main,\n    backgroundColor: theme.palette.primary.light,\n  },\n}))\n\ntype AppSession = SessionWithDrawerWidgets & {\n  menus: {\n    label: string\n    menuItems: JBMenuItem[]\n  }[]\n  savedSessionNames?: string[]\n  snackbarMessages: SnackbarMessage[]\n\n  renameCurrentSession: (arg: string) => void\n  popSnackbarMessage: () => unknown\n}\n\nconst AppToolbar = observer(function ({\n  session,\n  HeaderButtons = <div />,\n}: {\n  HeaderButtons?: React.ReactElement\n  session: AppSession\n}) {\n  const { classes } = useStyles()\n  const { savedSessionNames, name, menus } = session\n\n  return (\n    <Toolbar>\n      {menus.map(menu => (\n        <DropDownMenu\n          key={menu.label}\n          menuTitle={menu.label}\n          menuItems={menu.menuItems}\n          session={session}\n        />\n      ))}\n      <div className={classes.grow} />\n      <Tooltip title=\"Rename Session\" arrow>\n        <EditableTypography\n          value={name}\n          setValue={newName => {\n            if (savedSessionNames?.includes(newName)) {\n              session.notify(\n                `Cannot rename session to \"${newName}\", a saved session with that name already exists`,\n                'warning',\n              )\n            } else {\n              session.renameCurrentSession(newName)\n            }\n          }}\n          variant=\"body1\"\n          classes={{\n            inputBase: classes.inputBase,\n            inputRoot: classes.inputRoot,\n            inputFocused: classes.inputFocused,\n          }}\n        />\n      </Tooltip>\n      {HeaderButtons}\n      <div className={classes.grow} />\n      <div style={{ width: 150, maxHeight: 48 }}>\n        <AppLogo session={session} />\n      </div>\n    </Toolbar>\n  )\n})\n\nexport default AppToolbar\n","import React, { Suspense } from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { SessionWithDrawerWidgets } from '@jbrowse/core/util'\n\nconst DialogQueue = observer(function ({\n  session,\n}: {\n  session: SessionWithDrawerWidgets\n}) {\n  const { DialogComponent, DialogProps } = session\n  return DialogComponent ? (\n    <Suspense fallback={null}>\n      <DialogComponent {...DialogProps} />\n    </Suspense>\n  ) : null\n})\n\nexport default DialogQueue\n","import React from 'react'\nimport { Fab, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { SessionWithDrawerWidgets } from '@jbrowse/core/util'\n\n// icons\nimport LaunchIcon from '@mui/icons-material/Launch'\n\nconst useStyles = makeStyles()(theme => ({\n  left: {\n    zIndex: 10000,\n    position: 'fixed',\n    bottom: theme.spacing(2),\n    left: theme.spacing(2),\n  },\n  right: {\n    zIndex: 10000,\n    position: 'fixed',\n    bottom: theme.spacing(2),\n    right: theme.spacing(2),\n  },\n}))\n\nconst AppFab = observer(function ({\n  session,\n}: {\n  session: SessionWithDrawerWidgets\n}) {\n  const { minimized, activeWidgets, drawerPosition } = session\n  const { classes } = useStyles()\n\n  return activeWidgets.size > 0 && minimized ? (\n    <Tooltip title=\"Open drawer widget\">\n      <Fab\n        className={drawerPosition === 'right' ? classes.right : classes.left}\n        color=\"primary\"\n        data-testid=\"drawer-maximize\"\n        onClick={() => {\n          session.showWidgetDrawer()\n        }}\n      >\n        <LaunchIcon />\n      </Fab>\n    </Tooltip>\n  ) : null\n})\n\nexport default AppFab\n","import React, { useState } from 'react'\nimport {\n  Button,\n  FormControl,\n  MenuItem,\n  Paper,\n  Select,\n  Typography,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { getEnv, SessionWithDrawerWidgets } from '@jbrowse/core/util'\n\n// ui elements\nimport { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu'\nimport { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel'\n\ntype AppSession = SessionWithDrawerWidgets & {\n  savedSessionNames: string[]\n  menus: { label: string; menuItems: JBMenuItem[] }[]\n  renameCurrentSession: (arg: string) => void\n  snackbarMessages: SnackbarMessage[]\n  popSnackbarMessage: () => unknown\n}\n\nconst useStyles = makeStyles()(theme => ({\n  selectPaper: {\n    padding: theme.spacing(4),\n  },\n  m2: {\n    margin: 2,\n  },\n}))\n\nconst ViewLauncher = observer(({ session }: { session: AppSession }) => {\n  const { classes } = useStyles()\n  const { pluginManager } = getEnv(session)\n  const viewTypes = pluginManager.getElementTypeRecord('view').all()\n  const [value, setValue] = useState(viewTypes[0]?.name || '')\n  return (\n    <Paper className={classes.selectPaper}>\n      <Typography>Select a view to launch</Typography>\n      <FormControl className={classes.m2}>\n        <Select\n          value={value}\n          onChange={event => {\n            setValue(event.target.value)\n          }}\n        >\n          {viewTypes.map(({ displayName, name }) => (\n            <MenuItem key={name} value={name}>\n              {displayName}\n            </MenuItem>\n          ))}\n        </Select>\n      </FormControl>\n      <FormControl className={classes.m2}>\n        <Button\n          onClick={() => session.addView(value, {})}\n          variant=\"contained\"\n          color=\"primary\"\n        >\n          Launch view\n        </Button>\n      </FormControl>\n    </Paper>\n  )\n})\n\nexport default ViewLauncher\n","import React from 'react'\nimport {\n  SvgIconProps,\n  IconButton,\n  IconButtonProps as IconButtonPropsType,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { AbstractSessionModel, getSession } from '@jbrowse/core/util'\nimport { IBaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport {\n  bindTrigger,\n  bindPopover,\n  usePopupState,\n} from 'material-ui-popup-state/hooks'\nimport CascadingMenu from '@jbrowse/core/ui/CascadingMenu'\n\n// icons\nimport MenuIcon from '@mui/icons-material/Menu'\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown'\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'\n\nconst ViewMenu = observer(function ({\n  model,\n  IconButtonProps,\n  IconProps,\n}: {\n  model: IBaseViewModel\n  IconButtonProps?: IconButtonPropsType\n  IconProps: SvgIconProps\n}) {\n  const session = getSession(model) as AbstractSessionModel & {\n    moveViewDown: (arg: string) => void\n    moveViewUp: (arg: string) => void\n    moveViewToBottom: (arg: string) => void\n    moveViewToTop: (arg: string) => void\n  }\n\n  const popupState = usePopupState({\n    popupId: 'viewMenu',\n    variant: 'popover',\n  })\n\n  // note: This does not use CascadingMenuButton on purpose, because there was\n  // a confusing bug related to it! see\n  // https://github.com/GMOD/jbrowse-components/issues/4115\n  //\n  // Make sure to test the Breakpoint split view menu checkboxes if you intend\n  // to change this\n  return (\n    <>\n      <IconButton\n        {...IconButtonProps}\n        {...bindTrigger(popupState)}\n        data-testid=\"view_menu_icon\"\n      >\n        <MenuIcon {...IconProps} fontSize=\"small\" />\n      </IconButton>\n      <CascadingMenu\n        {...bindPopover(popupState)}\n        onMenuItemClick={(_event: unknown, callback: () => void) => {\n          callback()\n        }}\n        menuItems={[\n          ...(session.views.length > 1\n            ? [\n                {\n                  label: 'View order',\n                  type: 'subMenu' as const,\n                  subMenu: [\n                    {\n                      label: 'Move view to top',\n                      icon: KeyboardDoubleArrowUpIcon,\n                      onClick: () => {\n                        session.moveViewToTop(model.id)\n                      },\n                    },\n                    {\n                      label: 'Move view up',\n                      icon: KeyboardArrowUpIcon,\n                      onClick: () => {\n                        session.moveViewUp(model.id)\n                      },\n                    },\n                    {\n                      label: 'Move view down',\n                      icon: KeyboardArrowDownIcon,\n                      onClick: () => {\n                        session.moveViewDown(model.id)\n                      },\n                    },\n                    {\n                      label: 'Move view to bottom',\n                      icon: KeyboardDoubleArrowDownIcon,\n                      onClick: () => {\n                        session.moveViewToBottom(model.id)\n                      },\n                    },\n                  ],\n                },\n              ]\n            : []),\n          ...model.menuItems(),\n        ]}\n        popupState={popupState}\n      />\n    </>\n  )\n})\nexport default ViewMenu\n","import React from 'react'\nimport { Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport EditableTypography from '@jbrowse/core/ui/EditableTypography'\nimport { IBaseViewModel } from '@jbrowse/core/pluggableElementTypes'\n\nconst useStyles = makeStyles()(theme => ({\n  input: {\n    paddingBottom: 0,\n    paddingTop: 2,\n  },\n  inputBase: {\n    color: theme.palette.secondary.contrastText,\n  },\n  inputRoot: {\n    '&:hover': {\n      backgroundColor: theme.palette.secondary.light,\n    },\n  },\n  inputFocused: {\n    borderColor: theme.palette.primary.main,\n    backgroundColor: theme.palette.secondary.light,\n  },\n}))\nconst ViewContainerTitle = observer(function ({\n  view,\n}: {\n  view: IBaseViewModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <Tooltip title=\"Rename view\" arrow>\n      <EditableTypography\n        value={\n          view.displayName ||\n          // @ts-expect-error\n          `${view.assemblyNames?.join(',') || 'Untitled view'}${\n            view.minimized ? ' (minimized)' : ''\n          }`\n        }\n        setValue={val => {\n          view.setDisplayName(val)\n        }}\n        variant=\"body2\"\n        classes={{\n          input: classes.input,\n          inputBase: classes.inputBase,\n          inputRoot: classes.inputRoot,\n          inputFocused: classes.inputFocused,\n        }}\n      />\n    </Tooltip>\n  )\n})\n\nexport default ViewContainerTitle\n","import React, { useEffect, useRef } from 'react'\nimport { IconButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { IBaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\nimport MinimizeIcon from '@mui/icons-material/Minimize'\nimport AddIcon from '@mui/icons-material/Add'\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'\n\n// locals\nimport ViewMenu from './ViewMenu'\nimport ViewContainerTitle from './ViewContainerTitle'\nimport { getSession } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()(theme => ({\n  icon: {\n    color: theme.palette.secondary.contrastText,\n  },\n  grow: {\n    flexGrow: 1,\n  },\n  viewHeader: {\n    display: 'flex',\n  },\n  viewTitle: {\n    display: 'flex',\n    alignItems: 'center',\n  },\n}))\n\nconst ViewButtons = observer(function ({\n  view,\n  onClose,\n  onMinimize,\n}: {\n  view: IBaseViewModel\n  onClose: () => void\n  onMinimize: () => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <>\n      <IconButton data-testid=\"minimize_view\" onClick={onMinimize}>\n        {view.minimized ? (\n          <AddIcon className={classes.icon} fontSize=\"small\" />\n        ) : (\n          <MinimizeIcon className={classes.icon} fontSize=\"small\" />\n        )}\n      </IconButton>\n      <IconButton data-testid=\"close_view\" onClick={onClose}>\n        <CloseIcon className={classes.icon} fontSize=\"small\" />\n      </IconButton>\n    </>\n  )\n})\n\nconst ViewHeader = observer(function ({\n  view,\n  onClose,\n  onMinimize,\n}: {\n  view: IBaseViewModel\n  onClose: () => void\n  onMinimize: () => void\n}) {\n  const { classes } = useStyles()\n  const scrollRef = useRef<HTMLDivElement>(null)\n  const session = getSession(view)\n\n  // scroll the view into view when first mounted. note: this effect will run\n  // only once, because of the empty array second param\n  useEffect(() => {\n    if (typeof jest === 'undefined') {\n      scrollRef.current?.scrollIntoView({ block: 'center' })\n    }\n  }, [])\n  return (\n    <div ref={scrollRef} className={classes.viewHeader}>\n      <ViewMenu model={view} IconProps={{ className: classes.icon }} />\n      <div className={classes.grow} />\n      <div className={classes.viewTitle}>\n        {session.focusedViewId === view.id ? (\n          <KeyboardArrowRightIcon className={classes.icon} fontSize=\"small\" />\n        ) : null}\n        <ViewContainerTitle view={view} />\n      </div>\n      <div className={classes.grow} />\n      <ViewButtons onClose={onClose} onMinimize={onMinimize} view={view} />\n    </div>\n  )\n})\n\nexport default ViewHeader\n","import React, { useEffect } from 'react'\nimport { Paper, useTheme } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSession, useWidthSetter } from '@jbrowse/core/util'\nimport { IBaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util'\n\n// locals\nimport ViewHeader from './ViewHeader'\n\nconst useStyles = makeStyles()(theme => ({\n  viewContainer: {\n    overflow: 'hidden',\n    margin: theme.spacing(0.5),\n    padding: `0 ${theme.spacing(1)} ${theme.spacing(1)}`,\n  },\n  focusedView: {\n    background: theme.palette.secondary.main,\n  },\n  unfocusedView: {\n    background: theme.palette.secondary.dark,\n  },\n}))\n\nconst ViewContainer = observer(function ({\n  view,\n  onClose,\n  onMinimize,\n  children,\n}: {\n  view: IBaseViewModel\n  onClose: () => void\n  onMinimize: () => void\n  children: React.ReactNode\n}) {\n  const theme = useTheme()\n  const ref = useWidthSetter(view, theme.spacing(1))\n  const { classes, cx } = useStyles()\n  const session = getSession(view) as SessionWithFocusedViewAndDrawerWidgets\n\n  useEffect(() => {\n    function handleSelectView(e: Event) {\n      if (e.target instanceof Element && ref.current?.contains(e.target)) {\n        session.setFocusedViewId(view.id)\n      }\n    }\n\n    document.addEventListener('mousedown', handleSelectView)\n    document.addEventListener('keydown', handleSelectView)\n    return () => {\n      document.removeEventListener('mousedown', handleSelectView)\n      document.removeEventListener('keydown', handleSelectView)\n    }\n  }, [ref, session, view])\n\n  return (\n    <Paper\n      ref={ref}\n      elevation={12}\n      className={cx(\n        classes.viewContainer,\n        session.focusedViewId === view.id\n          ? classes.focusedView\n          : classes.unfocusedView,\n      )}\n    >\n      <ViewHeader view={view} onClose={onClose} onMinimize={onMinimize} />\n      <Paper>{children}</Paper>\n    </Paper>\n  )\n})\n\nexport default ViewContainer\n","import React, { Suspense } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { observer } from 'mobx-react'\n\n// locals\nimport {\n  getEnv,\n  AbstractViewModel,\n  SessionWithDrawerWidgets,\n} from '@jbrowse/core/util'\nimport { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel'\n\n// ui elements\nimport ErrorMessage from '@jbrowse/core/ui/ErrorMessage'\nimport LoadingEllipses from '@jbrowse/core/ui/LoadingEllipses'\nimport { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu'\n\n// locals\nimport ViewContainer from './ViewContainer'\n\ntype AppSession = SessionWithDrawerWidgets & {\n  savedSessionNames: string[]\n  menus: { label: string; menuItems: JBMenuItem[] }[]\n  snackbarMessages: SnackbarMessage[]\n  renameCurrentSession: (arg: string) => void\n  popSnackbarMessage: () => unknown\n}\n\nconst ViewPanel = observer(function ({\n  view,\n  session,\n}: {\n  view: AbstractViewModel\n  session: AppSession\n}) {\n  const { pluginManager } = getEnv(session)\n  const viewType = pluginManager.getViewType(view.type)\n  if (!viewType) {\n    throw new Error(`unknown view type ${view.type}`)\n  }\n  const { ReactComponent } = viewType\n  return (\n    <ViewContainer\n      view={view}\n      onClose={() => {\n        session.removeView(view)\n      }}\n      onMinimize={() => {\n        view.setMinimized(!view.minimized)\n      }}\n    >\n      {!view.minimized ? (\n        <ErrorBoundary\n          FallbackComponent={({ error }) => <ErrorMessage error={error} />}\n        >\n          <Suspense fallback={<LoadingEllipses variant=\"h6\" />}>\n            <ReactComponent model={view} session={session} />\n          </Suspense>\n        </ErrorBoundary>\n      ) : (\n        false\n      )}\n    </ViewContainer>\n  )\n})\n\nexport default ViewPanel\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util'\nimport { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel'\nimport { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu'\n\n// locals\nimport ViewLauncher from './ViewLauncher'\nimport ViewPanel from './ViewPanel'\n\nconst useStyles = makeStyles()({\n  viewsContainer: {\n    overflowY: 'auto',\n    gridRow: 'components',\n  },\n})\n\ninterface Props {\n  HeaderButtons?: React.ReactElement\n  session: SessionWithFocusedViewAndDrawerWidgets & {\n    savedSessionNames: string[]\n    menus: { label: string; menuItems: JBMenuItem[] }[]\n    renameCurrentSession: (arg: string) => void\n    snackbarMessages: SnackbarMessage[]\n    popSnackbarMessage: () => unknown\n  }\n}\n\nconst ViewsContainer = observer(function ViewsContainer(props: Props) {\n  const { session } = props\n  const { views } = session\n  const { classes } = useStyles()\n  return (\n    <div className={classes.viewsContainer}>\n      {views.length > 0 ? (\n        views.map(view => (\n          <ViewPanel key={`view-${view.id}`} view={view} session={session} />\n        ))\n      ) : (\n        <ViewLauncher {...props} />\n      )}\n\n      {/* blank space at the bottom of screen allows scroll */}\n      <div style={{ height: 300 }} />\n    </div>\n  )\n})\n\nexport default ViewsContainer\n","import React, { Suspense, lazy } from 'react'\nimport { AppBar } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util'\nimport Snackbar from '@jbrowse/core/ui/Snackbar'\nimport { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel'\nimport { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu'\n\n// locals\nimport AppToolbar from './AppToolbar'\nimport DialogQueue from './DialogQueue'\nimport AppFab from './AppFab'\nimport ViewsContainer from './ViewsContainer'\n\nconst DrawerWidget = lazy(() => import('./DrawerWidget'))\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    display: 'grid',\n    height: '100vh',\n    width: '100%',\n    colorScheme: theme.palette.mode,\n  },\n  appContainer: {\n    gridColumn: 'main',\n    display: 'grid',\n    gridTemplateRows: '[menubar] min-content [components] auto',\n    height: '100vh',\n  },\n\n  appBar: {\n    flexGrow: 1,\n    gridRow: 'menubar',\n  },\n}))\n\ninterface Props {\n  HeaderButtons?: React.ReactElement\n  session: SessionWithFocusedViewAndDrawerWidgets & {\n    savedSessionNames: string[]\n    menus: { label: string; menuItems: JBMenuItem[] }[]\n    renameCurrentSession: (arg: string) => void\n    snackbarMessages: SnackbarMessage[]\n    popSnackbarMessage: () => unknown\n  }\n}\n\nconst LazyDrawerWidget = observer(function (props: Props) {\n  const { session } = props\n  return (\n    <Suspense fallback={null}>\n      <DrawerWidget session={session} />\n    </Suspense>\n  )\n})\n\nconst App = observer(function (props: Props) {\n  const { session } = props\n  const { classes } = useStyles()\n  const { minimized, visibleWidget, drawerWidth, drawerPosition } = session\n  const drawerVisible = visibleWidget && !minimized\n  const d = drawerVisible ? `[drawer] ${drawerWidth}px` : undefined\n  const grid =\n    drawerPosition === 'right' ? ['[main] 1fr', d] : [d, '[main] 1fr']\n\n  return (\n    <div\n      className={classes.root}\n      style={{ gridTemplateColumns: grid.filter(f => !!f).join(' ') }}\n    >\n      {drawerVisible && drawerPosition === 'left' ? (\n        <LazyDrawerWidget session={session} />\n      ) : null}\n      <DialogQueue session={session} />\n      <div className={classes.appContainer}>\n        <AppBar className={classes.appBar} position=\"static\">\n          <AppToolbar {...props} />\n        </AppBar>\n        <ViewsContainer {...props} />\n      </div>\n      <AppFab session={session} />\n\n      {drawerVisible && drawerPosition === 'right' ? (\n        <LazyDrawerWidget session={session} />\n      ) : null}\n\n      <Snackbar session={session} />\n    </div>\n  )\n})\n\nexport { App }\n","// adapted from https://github.com/mobxjs/mobx-state-tree/blob/master/packages/mst-middlewares/src/time-traveller.ts\nimport {\n  types,\n  resolvePath,\n  getEnv,\n  onSnapshot,\n  getSnapshot,\n  applySnapshot,\n  IDisposer,\n  IAnyStateTreeNode,\n} from 'mobx-state-tree'\n\nconst MAX_HISTORY_LENGTH = 20\n\nfunction debounce(func: (...args: unknown[]) => void, timeout = 300) {\n  let timer: ReturnType<typeof setTimeout>\n  return (...args: unknown[]) => {\n    clearTimeout(timer)\n    timer = setTimeout(() => {\n      func(...args)\n    }, timeout)\n  }\n}\n\nconst TimeTraveller = types\n  .model('TimeTraveller', {\n    undoIdx: -1,\n    targetPath: '',\n  })\n  .volatile(() => ({\n    history: [] as unknown[],\n    notTrackingUndo: false,\n  }))\n  .views(self => ({\n    get canUndo() {\n      return self.undoIdx > 0 && !self.notTrackingUndo\n    },\n    get canRedo() {\n      return self.undoIdx < self.history.length - 1 && !self.notTrackingUndo\n    },\n  }))\n  .actions(self => {\n    let targetStore: IAnyStateTreeNode | undefined\n    let snapshotDisposer: IDisposer\n    let skipNextUndoState = false\n\n    return {\n      // allows user code to (temporarily) stop tracking undo states\n      stopTrackingUndo() {\n        self.notTrackingUndo = true\n      },\n      // allows user code to resume tracking undo states\n      resumeTrackingUndo() {\n        self.notTrackingUndo = false\n      },\n      addUndoState(todos: unknown) {\n        if (self.notTrackingUndo) {\n          return\n        }\n        if (skipNextUndoState) {\n          // skip recording if this state was caused by undo / redo\n          skipNextUndoState = false\n          return\n        }\n        self.history.splice(self.undoIdx + 1)\n        self.history.push(todos)\n        if (self.history.length > MAX_HISTORY_LENGTH) {\n          self.history.shift()\n        }\n        self.undoIdx = self.history.length - 1\n      },\n\n      beforeDestroy() {\n        snapshotDisposer()\n      },\n      initialize() {\n        targetStore = self.targetPath\n          ? resolvePath(self, self.targetPath)\n          : getEnv(self).targetStore\n\n        if (!targetStore) {\n          throw new Error(\n            'Failed to find target store for TimeTraveller. Please provide `targetPath` property, or a `targetStore` in the environment',\n          )\n        }\n\n        snapshotDisposer = onSnapshot(\n          targetStore,\n          debounce((snapshot: unknown) => {\n            this.addUndoState(snapshot)\n          }, 300),\n        )\n        if (self.history.length === 0) {\n          this.addUndoState(getSnapshot(targetStore))\n        }\n      },\n      undo() {\n        self.undoIdx--\n        skipNextUndoState = true\n        if (targetStore) {\n          applySnapshot(targetStore, self.history[self.undoIdx])\n        }\n      },\n      redo() {\n        self.undoIdx++\n        skipNextUndoState = true\n        if (targetStore) {\n          applySnapshot(targetStore, self.history[self.undoIdx])\n        }\n      },\n    }\n  })\n\nexport default TimeTraveller\n","import { ConfigurationSchema } from '../configuration'\n\n/**\n * #config BaseRpcDriver\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BaseRpcDriverConfigSchema = ConfigurationSchema(\n  'BaseRpcDriver',\n  {\n    /**\n     * #slot\n     */\n    workerCount: {\n      type: 'number',\n      description:\n        'The number of workers to use. If 0 (the default) JBrowse will decide how many workers to use.',\n      defaultValue: 0,\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default BaseRpcDriverConfigSchema\n","import { ConfigurationSchema } from '../configuration'\nimport BaseRpcDriverConfigSchema from './baseRpcConfig'\n\n/**\n * #config WebWorkerRpcDriver\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst WebWorkerRpcDriverConfigSchema = ConfigurationSchema(\n  'WebWorkerRpcDriver',\n  {},\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: BaseRpcDriverConfigSchema,\n    explicitlyTyped: true,\n  },\n)\nexport default WebWorkerRpcDriverConfigSchema\n","import { ConfigurationSchema } from '../configuration'\nimport BaseRpcDriverConfigSchema from './baseRpcConfig'\n\n/**\n * #config MainThreadRpcDriver\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst MainThreadRpcDriverConfigSchema = ConfigurationSchema(\n  'MainThreadRpcDriver',\n  {},\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: BaseRpcDriverConfigSchema,\n    explicitlyTyped: true,\n  },\n)\nexport default MainThreadRpcDriverConfigSchema\n","import { types } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '../configuration'\nimport WebWorkerRpcDriverConfigSchema from './webWorkerRpcConfig'\nimport MainThreadRpcDriverConfigSchema from './mainThreadRpcConfig'\n\n/**\n * #config RpcOptions\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default ConfigurationSchema(\n  'RpcOptions',\n  {\n    /**\n     * #slot\n     */\n    defaultDriver: {\n      type: 'string',\n      description:\n        'the RPC driver to use for tracks and tasks that are not configured to use a specific RPC backend',\n      defaultValue: 'MainThreadRpcDriver',\n    },\n    /**\n     * #slot\n     */\n    drivers: types.optional(\n      types.map(\n        types.union(\n          MainThreadRpcDriverConfigSchema,\n          WebWorkerRpcDriverConfigSchema,\n        ),\n      ),\n      {\n        MainThreadRpcDriver: { type: 'MainThreadRpcDriver' },\n        WebWorkerRpcDriver: { type: 'WebWorkerRpcDriver' },\n      },\n    ),\n  },\n  {\n    actions: (self: any) => ({\n      addDriverConfig(configName: string, configSnapshot: { type: string }) {\n        self.drivers.set(configName, configSnapshot)\n      },\n    }),\n  },\n)\n","import { isAlive, isStateTreeNode } from 'mobx-state-tree'\nimport { clamp } from '../util'\nimport { serializeAbortSignal } from './remoteAbortSignals'\nimport PluginManager from '../PluginManager'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\n\nexport interface WorkerHandle {\n  status?: string\n  error?: unknown\n  on?: (channel: string, callback: (message: unknown) => void) => void\n  off?: (channel: string, callback: (message: unknown) => void) => void\n  destroy(): void\n  call(\n    functionName: string,\n    args?: unknown,\n    options?: {\n      statusCallback?(message: string): void\n      timeout?: number\n      rpcDriverClassName: string\n    },\n  ): Promise<unknown>\n}\n\nexport interface RpcDriverConstructorArgs {\n  config: AnyConfigurationModel\n}\n\nfunction isClonable(thing: unknown) {\n  return !(typeof thing === 'function') && !(thing instanceof Error)\n}\n\n// watches the given worker object, returns a promise that will be rejected if\n// the worker times out\nexport async function watchWorker(\n  worker: WorkerHandle,\n  pingTime: number,\n  rpcDriverClassName: string,\n) {\n  // after first ping succeeds, apply wait for timeout\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  while (true) {\n    await worker.call('ping', [], {\n      timeout: pingTime * 2,\n      rpcDriverClassName,\n    })\n    await new Promise(resolve => setTimeout(resolve, pingTime))\n  }\n}\n\nfunction detectHardwareConcurrency() {\n  const mainThread = typeof window !== 'undefined'\n  const canDetect = mainThread && 'hardwareConcurrency' in window.navigator\n  if (mainThread && canDetect) {\n    return window.navigator.hardwareConcurrency\n  }\n  return 1\n}\nclass LazyWorker {\n  workerP?: Promise<WorkerHandle> | undefined\n\n  constructor(public driver: BaseRpcDriver) {}\n\n  async getWorker() {\n    if (!this.workerP) {\n      this.workerP = this.driver\n        .makeWorker()\n        .then(worker => {\n          watchWorker(worker, this.driver.maxPingTime, this.driver.name).catch(\n            (error: unknown) => {\n              console.error(\n                'worker did not respond, killing and generating new one',\n              )\n              console.error(error)\n              worker.destroy()\n              worker.status = 'killed'\n              worker.error = error\n              this.workerP = undefined\n            },\n          )\n          return worker\n        })\n        .catch((e: unknown) => {\n          this.workerP = undefined\n          throw e\n        })\n    }\n    return this.workerP\n  }\n}\n\nexport default abstract class BaseRpcDriver {\n  abstract name: string\n\n  private lastWorkerAssignment = -1\n\n  private workerAssignments = new Map<string, number>() // sessionId -> worker number\n\n  abstract makeWorker(): Promise<WorkerHandle>\n\n  private workerPool?: LazyWorker[]\n\n  maxPingTime = 30000\n\n  workerCheckFrequency = 5000\n\n  config: AnyConfigurationModel\n\n  constructor(args: RpcDriverConstructorArgs) {\n    this.config = args.config\n  }\n\n  // filter the given object and just remove any non-clonable things from it\n  filterArgs<THING_TYPE>(thing: THING_TYPE, sessionId: string): THING_TYPE {\n    if (Array.isArray(thing)) {\n      return thing\n        .filter(thing => isClonable(thing))\n        .map(t => this.filterArgs(t, sessionId)) as unknown as THING_TYPE\n    }\n    if (typeof thing === 'object' && thing !== null) {\n      // AbortSignals are specially handled\n      if (thing instanceof AbortSignal) {\n        return serializeAbortSignal(\n          thing,\n          this.remoteAbort.bind(this, sessionId),\n        ) as unknown as THING_TYPE\n      }\n\n      if (isStateTreeNode(thing) && !isAlive(thing)) {\n        throw new Error('dead state tree node passed to RPC call')\n      }\n\n      // special case, don't try to iterate the file's subelements as the\n      // object entries below would\n      if (thing instanceof File) {\n        return thing\n      }\n\n      return Object.fromEntries(\n        Object.entries(thing)\n          .filter(e => isClonable(e[1]))\n          .map(([k, v]) => [k, this.filterArgs(v, sessionId)]),\n      ) as THING_TYPE\n    }\n    return thing\n  }\n\n  async remoteAbort(sessionId: string, functionName: string, signalId: number) {\n    const worker = await this.getWorker(sessionId)\n    await worker.call(\n      functionName,\n      { signalId },\n      { timeout: 1000000, rpcDriverClassName: this.name },\n    )\n  }\n\n  createWorkerPool(): LazyWorker[] {\n    const hardwareConcurrency = detectHardwareConcurrency()\n\n    const workerCount =\n      readConfObject(this.config, 'workerCount') ||\n      clamp(1, Math.max(1, hardwareConcurrency - 1), 5)\n\n    const workers = []\n    for (let i = 0; i < workerCount; i++) {\n      workers.push(new LazyWorker(this))\n    }\n    return workers\n  }\n\n  getWorkerPool() {\n    if (!this.workerPool) {\n      const res = this.createWorkerPool()\n      this.workerPool = res\n      return res // making this several steps makes TS happy\n    }\n    return this.workerPool\n  }\n\n  async getWorker(sessionId: string): Promise<WorkerHandle> {\n    const workers = this.getWorkerPool()\n    let workerNumber = this.workerAssignments.get(sessionId)\n    if (workerNumber === undefined) {\n      const workerAssignment = (this.lastWorkerAssignment + 1) % workers.length\n      this.workerAssignments.set(sessionId, workerAssignment)\n      this.lastWorkerAssignment = workerAssignment\n      workerNumber = workerAssignment\n    }\n\n    return workers[workerNumber]!.getWorker()\n  }\n\n  async call(\n    pluginManager: PluginManager,\n    sessionId: string,\n    functionName: string,\n    args: {\n      statusCallback?: (message: unknown) => void\n    },\n    options = {},\n  ) {\n    if (!sessionId) {\n      throw new TypeError('sessionId is required')\n    }\n    let done = false\n    const unextendedWorker = await this.getWorker(sessionId)\n    const worker = pluginManager.evaluateExtensionPoint(\n      'Core-extendWorker',\n      unextendedWorker,\n    ) as WorkerHandle\n    const rpcMethod = pluginManager.getRpcMethodType(functionName)\n    if (!rpcMethod) {\n      throw new Error(`unknown RPC method ${functionName}`)\n    }\n    const serializedArgs = await rpcMethod.serializeArguments(args, this.name)\n    const filteredAndSerializedArgs = this.filterArgs(serializedArgs, sessionId)\n\n    // now actually call the worker\n    const callP = worker\n      .call(functionName, filteredAndSerializedArgs, {\n        timeout: 5 * 60 * 1000, // 5 minutes\n        statusCallback: args.statusCallback,\n        rpcDriverClassName: this.name,\n        ...options,\n      })\n      .finally(() => {\n        done = true\n      })\n\n    // check every 5 seconds to see if the worker has been killed, and\n    // reject the killedP promise if it has\n    let killedCheckInterval: ReturnType<typeof setInterval>\n    const killedP = new Promise((resolve, reject) => {\n      killedCheckInterval = setInterval(() => {\n        // must've been killed\n        if (worker.status === 'killed') {\n          reject(\n            new Error(\n              `operation timed out, worker process stopped responding, ${worker.error}`,\n            ),\n          )\n        } else if (done) {\n          resolve(true)\n        }\n      }, this.workerCheckFrequency)\n    }).finally(() => {\n      clearInterval(killedCheckInterval)\n    })\n\n    // the result is a race between the actual result promise, and the \"killed\"\n    // promise. the killed promise will only actually win if the worker was\n    // killed before the call could return\n    const resultP = Promise.race([callP, killedP])\n    return rpcMethod.deserializeReturn(resultP, args, this.name)\n  }\n}\n","import { deserializeError } from 'serialize-error'\nimport Rpc from 'librpc-web-mod'\n\n// locals\nimport { nanoid } from '../util/nanoid'\nimport BaseRpcDriver, { RpcDriverConstructorArgs } from './BaseRpcDriver'\nimport { PluginDefinition } from '../PluginLoader'\n\ninterface WebWorkerRpcDriverConstructorArgs extends RpcDriverConstructorArgs {\n  makeWorkerInstance: () => Worker\n}\n\ninterface Options {\n  statusCallback?: (arg0: unknown) => void\n  rpcDriverClassName: string\n}\n\nclass WebWorkerHandle extends Rpc.Client {\n  destroy(): void {\n    this.workers[0]!.terminate()\n  }\n\n  async call(funcName: string, args: Record<string, unknown>, opts: Options) {\n    const { statusCallback, rpcDriverClassName } = opts\n    const channel = `message-${nanoid()}`\n    const listener = (message: unknown) => {\n      statusCallback?.(message)\n    }\n    this.on(channel, listener)\n    const result = await super.call(\n      funcName,\n      { ...args, channel, rpcDriverClassName },\n      opts,\n    )\n    this.off(channel, listener)\n    return result\n  }\n}\n\nexport default class WebWorkerRpcDriver extends BaseRpcDriver {\n  name = 'WebWorkerRpcDriver'\n\n  makeWorkerInstance: () => Worker\n\n  constructor(\n    args: WebWorkerRpcDriverConstructorArgs,\n    public workerBootConfiguration: {\n      plugins: PluginDefinition[]\n      windowHref: string\n    },\n  ) {\n    super(args)\n    this.makeWorkerInstance = args.makeWorkerInstance\n  }\n\n  async makeWorker() {\n    // note that we are making a Rpc.Client connection with a worker pool of\n    // one for each worker, because we want to do our own state-group-aware\n    // load balancing rather than using librpc's builtin round-robin\n    const instance = this.makeWorkerInstance()\n\n    // @ts-ignore this is used to avoid warning in jbrowse-web startup\n    // (because this file is referred to via src, declare.d.ts file is in\n    // e.g. products/jbrowse-web)\n    const worker = new WebWorkerHandle({ workers: [instance] })\n    const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n    if (isSafari) {\n      // xref https://github.com/GMOD/jbrowse-components/issues/3245\n      // eslint-disable-next-line no-console\n      console.log(\n        'console logging the webworker handle avoids the track going into an infinite loading state, this is a hacky workaround for safari',\n        instance,\n      )\n    }\n\n    // send the worker its boot configuration using info from the pluginManager\n    return new Promise((resolve: (w: WebWorkerHandle) => void, reject) => {\n      const listener = (e: MessageEvent) => {\n        switch (e.data.message) {\n          case 'ready': {\n            resolve(worker)\n            worker.workers[0]!.removeEventListener('message', listener)\n            break\n          }\n          case 'readyForConfig': {\n            worker.workers[0]!.postMessage({\n              message: 'config',\n              config: this.workerBootConfiguration,\n            })\n            break\n          }\n          case 'error': {\n            reject(deserializeError(e.data.error))\n            break\n          }\n          // No default\n        }\n      }\n      worker.workers[0]!.addEventListener('message', listener)\n    })\n  }\n}\n","import BaseRpcDriver, { RpcDriverConstructorArgs } from './BaseRpcDriver'\nimport PluginManager from '../PluginManager'\n\nclass DummyHandle {\n  destroy(): void {}\n\n  async call(\n    _functionName: string,\n    _filteredArgs?: Record<string, unknown>,\n    _options = {},\n  ): Promise<unknown> {\n    return undefined\n  }\n}\n\n/**\n * Stub RPC driver class that runs RPC functions in-band in the main thread.\n *\n * @param rpcFuncs - object containing runnable rpc functions\n */\nexport default class MainThreadRpcDriver extends BaseRpcDriver {\n  name = 'MainThreadRpcDriver'\n\n  makeWorker: () => Promise<DummyHandle>\n\n  constructor(args: RpcDriverConstructorArgs) {\n    super(args)\n    this.makeWorker = async (): Promise<DummyHandle> => new DummyHandle()\n  }\n\n  async call(\n    pm: PluginManager,\n    sessionId: string,\n    funcName: string,\n    args: Record<string, unknown>,\n  ) {\n    if (!sessionId) {\n      throw new TypeError('sessionId is required')\n    }\n    const rpcMethod = pm.getRpcMethodType(funcName)\n    if (!rpcMethod) {\n      throw new Error(`unknown RPC method ${funcName}`)\n    }\n    const serializedArgs = await rpcMethod.serializeArguments(args, this.name)\n    const result = await rpcMethod.execute(serializedArgs, this.name)\n    return rpcMethod.deserializeReturn(result, args, this.name)\n  }\n}\n","import PluginManager from '../PluginManager'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\nimport rpcConfigSchema from './configSchema'\nimport WebWorkerRpcDriver from './WebWorkerRpcDriver'\nimport MainThreadRpcDriver from './MainThreadRpcDriver'\n\ntype DriverClass = WebWorkerRpcDriver | MainThreadRpcDriver\ninterface BackendConfigurations {\n  WebWorkerRpcDriver?: Omit<\n    ConstructorParameters<typeof WebWorkerRpcDriver>[0],\n    'config'\n  >\n  MainThreadRpcDriver?: Omit<\n    ConstructorParameters<typeof MainThreadRpcDriver>[0],\n    'config'\n  >\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst DriverClasses = {\n  WebWorkerRpcDriver,\n  MainThreadRpcDriver,\n}\n\nexport default class RpcManager {\n  static configSchema = rpcConfigSchema\n\n  driverObjects: Map<string, DriverClass>\n\n  constructor(\n    public pluginManager: PluginManager,\n    public mainConfiguration: AnyConfigurationModel,\n    public backendConfigurations: BackendConfigurations,\n  ) {\n    this.driverObjects = new Map()\n  }\n\n  getDriver(backendName: keyof typeof DriverClasses) {\n    const driver = this.driverObjects.get(backendName)\n    if (driver) {\n      return driver\n    }\n    const config = this.mainConfiguration.drivers.get('WebWorkerRpcDriver')\n    if (backendName === 'MainThreadRpcDriver') {\n      const backendConfiguration =\n        this.backendConfigurations.MainThreadRpcDriver\n\n      if (!backendConfiguration) {\n        throw new Error(\n          `requested RPC driver \"${backendName}\" is missing config`,\n        )\n      }\n      const newDriver = new MainThreadRpcDriver({\n        ...backendConfiguration,\n        config,\n      })\n      this.driverObjects.set(backendName, newDriver)\n      return newDriver\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    else if (backendName === 'WebWorkerRpcDriver') {\n      const backendConfiguration = this.backendConfigurations.WebWorkerRpcDriver\n      if (!backendConfiguration) {\n        throw new Error(\n          `requested RPC driver \"${backendName}\" is missing config`,\n        )\n      }\n      const newDriver = new WebWorkerRpcDriver(\n        { ...backendConfiguration, config },\n        {\n          plugins: this.pluginManager.runtimePluginDefinitions,\n          windowHref: window.location.href,\n        },\n      )\n      this.driverObjects.set(backendName, newDriver)\n      return newDriver\n    } else {\n      throw new Error(`requested RPC driver \"${backendName}\" is not installed`)\n    }\n  }\n\n  async getDriverForCall(\n    _sessionId: string,\n    _functionName: string,\n    args: { rpcDriverName?: string },\n  ) {\n    const backendName =\n      args.rpcDriverName ||\n      readConfObject(this.mainConfiguration, 'defaultDriver')\n\n    return this.getDriver(backendName)\n  }\n\n  async call(\n    sessionId: string,\n    functionName: string,\n    args: Record<string, unknown>,\n    opts = {},\n  ) {\n    if (!sessionId) {\n      throw new Error('sessionId is required')\n    }\n    const driverForCall = await this.getDriverForCall(\n      sessionId,\n      functionName,\n      args,\n    )\n    return driverForCall.call(\n      this.pluginManager,\n      sessionId,\n      functionName,\n      args,\n      opts,\n    )\n  }\n}\n","import React, { useState, lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\n// icons\nimport ShareIcon from '@mui/icons-material/Share'\n\nconst useStyles = makeStyles()(theme => ({\n  shareDiv: {\n    textAlign: 'center',\n    paddingLeft: '2px',\n  },\n  shareButton: {\n    backgroundColor: alpha(\n      theme.palette.primary.contrastText,\n      theme.palette.action.hoverOpacity,\n    ),\n    '&:hover': {\n      '@media (hover: none)': {\n        backgroundColor: 'transparent',\n      },\n    },\n  },\n}))\n\nconst ShareDialog = lazy(() => import('./ShareDialog'))\n\nconst ShareButton = observer(function (props: {\n  session: AbstractSessionModel & { shareURL: string }\n}) {\n  const [open, setOpen] = useState(false)\n  const { session } = props\n  const { classes } = useStyles()\n\n  return (\n    <div className={classes.shareDiv}>\n      <Button\n        onClick={async () => {\n          setOpen(true)\n        }}\n        size=\"small\"\n        color=\"inherit\"\n        startIcon={<ShareIcon />}\n        classes={{ root: classes.shareButton }}\n      >\n        Share\n      </Button>\n      {open ? (\n        <React.Suspense fallback={null}>\n          <ShareDialog\n            handleClose={() => {\n              setOpen(false)\n            }}\n            session={session}\n          />\n        </React.Suspense>\n      ) : null}\n    </div>\n  )\n})\n\nexport default ShareButton\n","import React, { useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport { onSnapshot } from 'mobx-state-tree'\nimport { useQueryParam, StringParam } from 'use-query-params'\nimport { CssBaseline, ThemeProvider } from '@mui/material'\n\n// core\nimport { App } from '@jbrowse/app-core'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport ShareButton from './ShareButton'\nimport { WebSessionModel } from '../sessionModel'\n\nconst JBrowse = observer(function ({\n  pluginManager,\n}: {\n  pluginManager: PluginManager\n}) {\n  const [adminKey] = useQueryParam('adminKey', StringParam)\n  const [adminServer] = useQueryParam('adminServer', StringParam)\n  const [configPath] = useQueryParam('config', StringParam)\n  const [, setSessionId] = useQueryParam('session', StringParam)\n  const { rootModel } = pluginManager\n  const { error, jbrowse } = rootModel || {}\n  const session = rootModel?.session as WebSessionModel | undefined\n  const currentSessionId = session?.id\n\n  useEffect(() => {\n    setSessionId(`local-${currentSessionId}`, 'replaceIn')\n    // @ts-expect-error\n    window.JBrowseRootModel = rootModel\n    // @ts-expect-error\n    window.JBrowseSession = session\n  }, [currentSessionId, rootModel, session, setSessionId])\n\n  useEffect(() => {\n    if (!jbrowse || !adminKey) {\n      return\n    }\n    return onSnapshot(jbrowse, async snapshot => {\n      try {\n        const response = await fetch(adminServer || '/updateConfig', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify({\n            adminKey,\n            configPath,\n            config: snapshot,\n          }),\n        })\n        if (!response.ok) {\n          const message = await response.text()\n          throw new Error(`HTTP ${response.status} (${message})`)\n        }\n      } catch (e) {\n        session?.notify(`Admin server error: ${e}`)\n      }\n    })\n  }, [jbrowse, session, adminKey, adminServer, configPath])\n\n  if (error) {\n    // eslint-disable-next-line @typescript-eslint/only-throw-error\n    throw error\n  }\n  if (!rootModel) {\n    throw new Error('No rootModel found')\n  }\n  if (!session) {\n    throw new Error('No session found')\n  }\n\n  return (\n    <ThemeProvider theme={session.theme}>\n      <CssBaseline />\n      <App\n        // @ts-expect-error see comments on interface for AbstractSessionModel\n        session={session}\n        HeaderButtons={<ShareButton session={session} />}\n      />\n    </ThemeProvider>\n  )\n})\n\nexport default JBrowse\n","import { types, addDisposer, Instance } from 'mobx-state-tree'\nimport { autorun } from 'mobx'\nimport PluginLoader, {\n  PluginDefinition,\n  PluginRecord,\n} from '@jbrowse/core/PluginLoader'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { nanoid } from '@jbrowse/core/util/nanoid'\n\n// locals\nimport { readSessionFromDynamo } from './sessionSharing'\nimport { addRelativeUris, checkPlugins, fromUrlSafeB64, readConf } from './util'\n\nexport interface SessionTriagedInfo {\n  snap: unknown\n  origin: string\n  reason: PluginDefinition[]\n}\n\nconst SessionLoader = types\n  .model({\n    configPath: types.maybe(types.string),\n    sessionQuery: types.maybe(types.string),\n    password: types.maybe(types.string),\n    adminKey: types.maybe(types.string),\n    loc: types.maybe(types.string),\n    sessionTracks: types.maybe(types.string),\n    assembly: types.maybe(types.string),\n    tracks: types.maybe(types.string),\n    tracklist: types.maybe(types.boolean),\n    highlight: types.maybe(types.string),\n    nav: types.maybe(types.boolean),\n    initialTimestamp: types.number,\n  })\n  .volatile(() => ({\n    sessionTriaged: undefined as SessionTriagedInfo | undefined,\n    configSnapshot: undefined as Record<string, unknown> | undefined,\n    sessionSnapshot: undefined as Record<string, unknown> | undefined,\n    sessionSpec: undefined as Record<string, unknown> | undefined,\n    blankSession: false,\n    runtimePlugins: [] as PluginRecord[],\n    sessionPlugins: [] as PluginRecord[],\n    sessionError: undefined as unknown,\n    configError: undefined as unknown,\n    bc1:\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      window.BroadcastChannel\n        ? new window.BroadcastChannel('jb_request_session')\n        : undefined,\n    bc2:\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      window.BroadcastChannel\n        ? new window.BroadcastChannel('jb_respond_session')\n        : undefined,\n  }))\n  .views(self => ({\n    get isSharedSession() {\n      return !!self.sessionQuery?.startsWith('share-')\n    },\n\n    get isSpecSession() {\n      return !!self.sessionQuery?.startsWith('spec-')\n    },\n\n    get isJb1StyleSession() {\n      return !!self.loc\n    },\n\n    get isEncodedSession() {\n      return !!self.sessionQuery?.startsWith('encoded-')\n    },\n\n    get isJsonSession() {\n      return !!self.sessionQuery?.startsWith('json-')\n    },\n\n    get isLocalSession() {\n      return !!self.sessionQuery?.startsWith('local-')\n    },\n\n    get ready() {\n      return Boolean(this.isSessionLoaded && !self.configError)\n    },\n\n    get error() {\n      return self.configError || self.sessionError\n    },\n\n    get isSessionLoaded() {\n      return Boolean(\n        self.sessionError ||\n          self.sessionSnapshot ||\n          self.blankSession ||\n          self.sessionSpec,\n      )\n    },\n    get isConfigLoaded() {\n      return Boolean(self.configError || self.configSnapshot)\n    },\n\n    get sessionTracksParsed() {\n      return self.sessionTracks ? JSON.parse(self.sessionTracks) : []\n    },\n  }))\n  .actions(self => ({\n    setSessionQuery(session?: any) {\n      self.sessionQuery = session\n    },\n    setConfigError(error: unknown) {\n      self.configError = error\n    },\n    setSessionError(error: unknown) {\n      self.sessionError = error\n    },\n    setRuntimePlugins(plugins: PluginRecord[]) {\n      self.runtimePlugins = plugins\n    },\n    setSessionPlugins(plugins: PluginRecord[]) {\n      self.sessionPlugins = plugins\n    },\n    setConfigSnapshot(snap: Record<string, unknown>) {\n      self.configSnapshot = snap\n    },\n\n    setBlankSession(flag: boolean) {\n      self.blankSession = flag\n    },\n    setSessionTriaged(args?: SessionTriagedInfo) {\n      self.sessionTriaged = args\n    },\n    setSessionSnapshotSuccess(snap: Record<string, unknown>) {\n      self.sessionSnapshot = snap\n    },\n  }))\n  .actions(self => ({\n    async fetchPlugins(config: { plugins: PluginDefinition[] }) {\n      try {\n        const pluginLoader = new PluginLoader(config.plugins, {\n          fetchESM: url => import(/* webpackIgnore:true */ url),\n        })\n        pluginLoader.installGlobalReExports(window)\n        const runtimePlugins = await pluginLoader.load(window.location.href)\n        self.setRuntimePlugins([...runtimePlugins])\n      } catch (e) {\n        console.error(e)\n        self.setConfigError(e)\n      }\n    },\n    async fetchSessionPlugins(snap: { sessionPlugins?: PluginDefinition[] }) {\n      try {\n        const pluginLoader = new PluginLoader(snap.sessionPlugins || [], {\n          fetchESM: url => import(/* webpackIgnore:true */ url),\n        })\n        pluginLoader.installGlobalReExports(window)\n        const plugins = await pluginLoader.load(window.location.href)\n        self.setSessionPlugins([...plugins])\n      } catch (e) {\n        console.error(e)\n        self.setConfigError(e)\n      }\n    },\n\n    // passed\n    async setSessionSnapshot(\n      snap: { sessionPlugins?: PluginDefinition[]; id: string },\n      userAcceptedConfirmation?: boolean,\n    ) {\n      try {\n        const { sessionPlugins = [] } = snap\n        const sessionPluginsAllowed = await checkPlugins(sessionPlugins)\n        if (sessionPluginsAllowed || userAcceptedConfirmation) {\n          await this.fetchSessionPlugins(snap)\n          self.setSessionSnapshotSuccess(snap)\n        } else {\n          self.setSessionTriaged({\n            snap,\n            origin: 'session',\n            reason: sessionPlugins,\n          })\n        }\n      } catch (e) {\n        console.error(e)\n        self.setConfigError(e)\n      }\n    },\n\n    async fetchConfig() {\n      // @ts-expect-error\n\n      let { configPath = window.__jbrowseConfigPath || 'config.json' } = self\n\n      // @ts-expect-error\n\n      if (window.__jbrowseCacheBuster) {\n        configPath += `?rand=${Math.random()}`\n      }\n\n      const text = await openLocation({\n        uri: configPath,\n        locationType: 'UriLocation',\n      }).readFile('utf8')\n      const config = JSON.parse(text)\n      const configUri = new URL(configPath, window.location.href)\n      addRelativeUris(config, configUri)\n\n      // cross origin config check\n      if (configUri.hostname !== window.location.hostname) {\n        const configPlugins = config.plugins || []\n        const configPluginsAllowed = await checkPlugins(configPlugins)\n        if (!configPluginsAllowed) {\n          self.setSessionTriaged({\n            snap: config,\n            origin: 'config',\n            reason: configPlugins,\n          })\n          return\n        }\n      }\n      await this.fetchPlugins(config)\n      self.setConfigSnapshot(config)\n    },\n\n    async fetchSessionStorageSession() {\n      const sessionStr = sessionStorage.getItem('current')\n      const query = self.sessionQuery!.replace('local-', '')\n\n      // check if\n      if (sessionStr) {\n        const sessionSnap = JSON.parse(sessionStr).session || {}\n        if (query === sessionSnap.id) {\n          return this.setSessionSnapshot(sessionSnap)\n        }\n      }\n\n      if (self.bc1) {\n        self.bc1.postMessage(query)\n        try {\n          const result = await new Promise<Record<string, unknown>>(\n            (resolve, reject) => {\n              if (self.bc2) {\n                self.bc2.onmessage = msg => {\n                  resolve(msg.data)\n                }\n              }\n              setTimeout(() => {\n                reject(new Error('timeout'))\n              }, 1000)\n            },\n          )\n          await this.setSessionSnapshot({ ...result, id: nanoid() })\n        } catch (e) {\n          // the broadcast channels did not find the session in another tab\n          // clear session param, so just ignore\n        }\n      }\n      throw new Error('Local storage session not found')\n    },\n\n    async fetchSharedSession() {\n      const defaultURL = 'https://share.jbrowse.org/api/v1/'\n      const decryptedSession = await readSessionFromDynamo(\n        // @ts-expect-error\n        `${readConf(self.configSnapshot, 'shareURL', defaultURL)}load`,\n        self.sessionQuery || '',\n        self.password || '',\n      )\n\n      const session = JSON.parse(await fromUrlSafeB64(decryptedSession))\n      await this.setSessionSnapshot({ ...session, id: nanoid() })\n    },\n\n    async decodeEncodedUrlSession() {\n      const session = JSON.parse(\n        // @ts-expect-error\n        await fromUrlSafeB64(self.sessionQuery.replace('encoded-', '')),\n      )\n      await this.setSessionSnapshot({ ...session, id: nanoid() })\n    },\n\n    decodeSessionSpec() {\n      if (!self.sessionQuery) {\n        return\n      }\n      self.sessionSpec = JSON.parse(self.sessionQuery.replace('spec-', ''))\n    },\n\n    decodeJb1StyleSession() {\n      const {\n        loc,\n        tracks,\n        assembly,\n        tracklist,\n        nav,\n        highlight,\n        sessionTracksParsed: sessionTracks,\n      } = self\n      if (loc) {\n        self.sessionSpec = {\n          sessionTracks,\n          views: [\n            {\n              type: 'LinearGenomeView',\n              tracks: tracks?.split(','),\n              sessionTracks,\n              loc,\n              assembly,\n              tracklist,\n              nav,\n              highlight: highlight?.split(' '),\n            },\n          ],\n        }\n      }\n    },\n\n    async decodeJsonUrlSession() {\n      // @ts-expect-error\n      const session = JSON.parse(self.sessionQuery.replace('json-', ''))\n      await this.setSessionSnapshot({ ...session.session, id: nanoid() })\n    },\n\n    async afterCreate() {\n      try {\n        // rename the current autosave from previously loaded jbrowse session\n        // into previousAutosave on load\n        const { configPath } = self\n        const lastAutosave = localStorage.getItem(`autosave-${configPath}`)\n        if (lastAutosave) {\n          localStorage.setItem(`previousAutosave-${configPath}`, lastAutosave)\n        }\n      } catch (e) {\n        console.error('failed to create previousAutosave', e)\n      }\n\n      try {\n        // fetch config\n        await this.fetchConfig()\n      } catch (e) {\n        console.error(e)\n        self.setConfigError(e)\n        return\n      }\n\n      addDisposer(\n        self,\n        autorun(async () => {\n          try {\n            const {\n              isLocalSession,\n              isEncodedSession,\n              isSpecSession,\n              isSharedSession,\n              isJsonSession,\n              isJb1StyleSession,\n              sessionQuery,\n              configSnapshot,\n            } = self\n            if (!configSnapshot) {\n              return\n            }\n\n            if (self.bc1) {\n              self.bc1.onmessage = msg => {\n                const r =\n                  JSON.parse(sessionStorage.getItem('current') || '{}')\n                    .session || {}\n                if (r.id === msg.data && self.bc2) {\n                  self.bc2.postMessage(r)\n                }\n              }\n            }\n\n            if (isSharedSession) {\n              await this.fetchSharedSession()\n            } else if (isSpecSession) {\n              this.decodeSessionSpec()\n            } else if (isJb1StyleSession) {\n              this.decodeJb1StyleSession()\n            } else if (isEncodedSession) {\n              await this.decodeEncodedUrlSession()\n            } else if (isJsonSession) {\n              await this.decodeJsonUrlSession()\n            } else if (isLocalSession) {\n              await this.fetchSessionStorageSession()\n            } else if (sessionQuery) {\n              // if there was a sessionQuery and we don't recognize it\n              throw new Error('unrecognized session format')\n            } else {\n              // placeholder for session loaded, but none found\n              self.setBlankSession(true)\n            }\n          } catch (e) {\n            console.error(e)\n            self.setSessionError(e)\n          }\n        }),\n      )\n    },\n  }))\n\nexport type SessionLoaderModel = Instance<typeof SessionLoader>\n\nexport default SessionLoader\n\ninterface ViewSpec {\n  type: string\n  tracks?: string[]\n  assembly: string\n  loc: string\n}\n\n// use extension point named e.g. LaunchView-LinearGenomeView to initialize an\n// LGV session\nexport function loadSessionSpec(\n  {\n    views,\n    sessionTracks = [],\n  }: {\n    views: ViewSpec[]\n    sessionTracks: unknown[]\n  },\n  pluginManager: PluginManager,\n) {\n  return async () => {\n    const { rootModel } = pluginManager\n    if (!rootModel) {\n      throw new Error('rootModel not initialized')\n    }\n    try {\n      // @ts-expect-error\n      rootModel.setSession({\n        name: `New session ${new Date().toLocaleString()}`,\n      })\n\n      // @ts-expect-error\n      sessionTracks.forEach(track => rootModel.session.addTrackConf(track))\n\n      await Promise.all(\n        views.map(view =>\n          pluginManager.evaluateAsyncExtensionPoint(`LaunchView-${view.type}`, {\n            ...view,\n            session: rootModel.session,\n          }),\n        ),\n      )\n    } catch (e) {\n      console.error(e)\n      rootModel.session?.notify(`${e}`)\n    }\n  }\n}\n","import React from 'react'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport NoConfigMessage from './NoConfigMessage'\n\nexport default function StartScreenErrorMessage({ error }: { error: unknown }) {\n  return /HTTP 404 fetching config.json/.exec(`${error}`) ? (\n    <div>\n      <h1>It worked!</h1>\n      <p\n        style={{\n          margin: 8,\n          padding: 8,\n          background: '#9f9',\n          border: '1px solid green',\n        }}\n      >\n        JBrowse 2 is installed. Your next step is to add and configure an\n        assembly. Follow our{' '}\n        <a href=\"https://jbrowse.org/jb2/docs/quickstart_web/\">\n          quick start guide\n        </a>{' '}\n        to continue or browse the sample data{' '}\n        <a href=\"?config=test_data/volvox/config.json\">here</a>.\n      </p>\n      {process.env.NODE_ENV === 'development' ? <NoConfigMessage /> : null}\n    </div>\n  ) : (\n    <div>\n      <h1>JBrowse Error</h1>\n      <ErrorMessage error={error} />\n    </div>\n  )\n}\n","// this is in a separate module here so it can be mocked out by jest. the\n// import.meta.url is not well recognized by jest and we use MainThreadRpc in\n// tests anyways right now\n//\n// note: this uses webpack 5 native worker modules\n//\n// see https://github.com/cmdcolin/cra-webpack5-web-worker-example for simple example\n// and docs https://webpack.js.org/guides/web-workers/\n//\n// also note: the craco config for webpack publicPath: 'auto' is needed for\n// these workers\nexport default function makeWorkerInstance() {\n  return new Worker(new URL('./rpcWorker', import.meta.url))\n}\n","import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { JBrowseModelF } from '@jbrowse/app-core'\nimport { getSnapshot, resolveIdentifier, types } from 'mobx-state-tree'\nimport clone from 'clone'\n\n// locals\nimport { removeAttr } from './util'\n\n// poke some things for testing (this stuff will eventually be removed)\n// @ts-expect-error\nwindow.getSnapshot = getSnapshot\n// @ts-expect-error\nwindow.resolveIdentifier = resolveIdentifier\n\n/**\n * #stateModel JBrowseWebConfigModel\n * #category root\n * the rootModel.jbrowse state model for JBrowse Web\n */\nexport default function JBrowseWeb({\n  pluginManager,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: AnyConfigurationSchemaType\n}) {\n  return types.snapshotProcessor(\n    JBrowseModelF({ pluginManager, assemblyConfigSchema }),\n    {\n      postProcessor(snapshot: Record<string, any>) {\n        return removeAttr(clone(snapshot), 'baseUri')\n      },\n    },\n  )\n}\n","import { getParent, types, Instance, IAnyType } from 'mobx-state-tree'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\n\n// locals\nimport { getConf, AnyConfigurationModel } from '../configuration'\nimport {\n  BaseOptions,\n  BaseRefNameAliasAdapter,\n  RegionsAdapter,\n} from '../data_adapters/BaseAdapter'\nimport PluginManager from '../PluginManager'\nimport { when, Region, Feature } from '../util'\nimport QuickLRU from '../util/QuickLRU'\nimport RpcManager from '../rpc/RpcManager'\nimport { adapterConfigCacheKey } from '../data_adapters/dataAdapterCache'\n\ntype AdapterConf = Record<string, unknown>\n\n/* biome-ignore lint/complexity/useRegexLiterals: */\nconst refNameRegex = new RegExp(\n  '[0-9A-Za-z!#$%&+./:;?@^_|~-][0-9A-Za-z!#$%&*+./:;=?@^_|~-]*',\n)\n\n// Based on the UCSC Genome Browser chromosome color palette:\n// https://github.com/ucscGenomeBrowser/kent/blob/a50ed53aff81d6fb3e34e6913ce18578292bc24e/src/hg/inc/chromColors.h\n// Some colors darkened to have at least a 3:1 contrast ratio on a white\n// background\nconst refNameColors = [\n  'rgb(153, 102, 0)',\n  'rgb(102, 102, 0)',\n  'rgb(153, 153, 30)',\n  'rgb(204, 0, 0)',\n  'rgb(255, 0, 0)',\n  'rgb(255, 0, 204)',\n  'rgb(165, 132, 132)', // originally 'rgb(255, 204, 204)'\n  'rgb(204, 122, 0)', // originally rgb(255, 153, 0)'\n  'rgb(178, 142, 0)', // originally 'rgb(255, 204, 0)'\n  'rgb(153, 153, 0)', // originally 'rgb(255, 255, 0)'\n  'rgb(122, 153, 0)', // originally 'rgb(204, 255, 0)'\n  'rgb(0, 165, 0)', // originally 'rgb(0, 255, 0)'\n  'rgb(53, 128, 0)',\n  'rgb(0, 0, 204)',\n  'rgb(96, 145, 242)', // originally 'rgb(102, 153, 255)'\n  'rgb(107, 142, 178)', // originally 'rgb(153, 204, 255)'\n  'rgb(0, 165, 165)', // originally 'rgb(0, 255, 255)'\n  'rgb(122, 153, 153)', // originally 'rgb(204, 255, 255)'\n  'rgb(153, 0, 204)',\n  'rgb(204, 51, 255)',\n  'rgb(173, 130, 216)', // originally 'rgb(204, 153, 255)'\n  'rgb(102, 102, 102)',\n  'rgb(145, 145, 145)', // originally 'rgb(153, 153, 153)'\n  'rgb(142, 142, 142)', // originally 'rgb(204, 204, 204)'\n  'rgb(142, 142, 107)', // originally 'rgb(204, 204, 153)'\n  'rgb(96, 163, 48)', // originally 'rgb(121, 204, 61)'\n]\n\nasync function loadRefNameMap(\n  assembly: Assembly,\n  adapterConfig: unknown,\n  options: BaseOptions,\n  signal?: AbortSignal,\n) {\n  const { sessionId } = options\n  await when(() => !!(assembly.regions && assembly.refNameAliases), {\n    signal,\n    name: 'when assembly ready',\n  })\n\n  const refNames = (await assembly.rpcManager.call(\n    sessionId || 'assemblyRpc',\n    'CoreGetRefNames',\n    {\n      adapterConfig,\n      signal,\n      ...options,\n    },\n    { timeout: 1000000 },\n  )) as string[]\n\n  const { refNameAliases } = assembly\n  if (!refNameAliases) {\n    throw new Error(`error loading assembly ${assembly.name}'s refNameAliases`)\n  }\n\n  const refNameMap = Object.fromEntries(\n    refNames.map(name => {\n      checkRefName(name)\n      return [assembly.getCanonicalRefName(name), name]\n    }),\n  )\n\n  return {\n    forwardMap: refNameMap,\n    reverseMap: Object.fromEntries(\n      Object.entries(refNameMap).map(([canonicalName, adapterName]) => [\n        adapterName,\n        canonicalName,\n      ]),\n    ),\n  }\n}\n\n// Valid refName pattern from https://samtools.github.io/hts-specs/SAMv1.pdf\nfunction checkRefName(refName: string) {\n  if (!refNameRegex.test(refName)) {\n    throw new Error(`Encountered invalid refName: \"${refName}\"`)\n  }\n}\n\ntype RefNameAliases = Record<string, string>\n\ninterface CacheData {\n  adapterConf: unknown\n  self: Assembly\n  sessionId: string\n  options: BaseOptions\n}\n\nexport interface RefNameMap {\n  forwardMap: RefNameAliases\n  reverseMap: RefNameAliases\n}\n\nexport interface BasicRegion {\n  start: number\n  end: number\n  refName: string\n  assemblyName: string\n}\n\n/**\n * #stateModel Assembly\n */\nexport default function assemblyFactory(\n  assemblyConfigType: IAnyType,\n  pluginManager: PluginManager,\n) {\n  const adapterLoads = new AbortablePromiseCache<CacheData, RefNameMap>({\n    cache: new QuickLRU({ maxSize: 1000 }),\n\n    // @ts-expect-error\n    async fill(\n      args: CacheData,\n      signal?: AbortSignal,\n      statusCallback?: (arg: string) => void,\n    ) {\n      const { adapterConf, self, options } = args\n      return loadRefNameMap(\n        self,\n        adapterConf,\n        { ...options, statusCallback },\n        signal,\n      )\n    },\n  })\n  return types\n    .model({\n      /**\n       * #property\n       */\n      configuration: types.safeReference(assemblyConfigType),\n    })\n    .volatile(() => ({\n      error: undefined as unknown,\n      loadingP: undefined as Promise<void> | undefined,\n      volatileRegions: undefined as BasicRegion[] | undefined,\n      refNameAliases: undefined as RefNameAliases | undefined,\n      lowerCaseRefNameAliases: undefined as RefNameAliases | undefined,\n      cytobands: undefined as Feature[] | undefined,\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      getConf(arg: string) {\n        return self.configuration ? getConf(self, arg) : undefined\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get initialized() {\n        // @ts-expect-error\n        self.load()\n        return !!self.refNameAliases\n      },\n\n      /**\n       * #getter\n       */\n      get name(): string {\n        return self.getConf('name') || ''\n      },\n\n      /**\n       * #getter\n       */\n      get regions() {\n        // @ts-expect-error\n        self.load()\n        return self.volatileRegions\n      },\n\n      /**\n       * #getter\n       */\n      get aliases(): string[] {\n        return self.getConf('aliases') || []\n      },\n\n      /**\n       * #getter\n       */\n      get displayName(): string | undefined {\n        return self.getConf('displayName')\n      },\n      /**\n       * #getter\n       */\n      hasName(name: string) {\n        return this.allAliases.includes(name)\n      },\n\n      /**\n       * #getter\n       */\n      get allAliases() {\n        return [this.name, ...this.aliases]\n      },\n\n      /**\n       * #getter\n       * note: lowerCaseRefNameAliases not included here: this allows the list\n       * of refnames to be just the \"normal casing\", but things like\n       * getCanonicalRefName can resolve a lower-case name if needed\n       */\n      get allRefNames() {\n        return !self.refNameAliases\n          ? undefined\n          : Object.keys(self.refNameAliases)\n      },\n      /**\n       * #getter\n       */\n      get lowerCaseRefNames() {\n        return !self.lowerCaseRefNameAliases\n          ? undefined\n          : Object.keys(self.lowerCaseRefNameAliases)\n      },\n\n      /**\n       * #getter\n       */\n      get allRefNamesWithLowerCase() {\n        return this.allRefNames && this.lowerCaseRefNames\n          ? [...new Set([...this.allRefNames, ...this.lowerCaseRefNames])]\n          : undefined\n      },\n      /**\n       * #getter\n       */\n      get rpcManager(): RpcManager {\n        return getParent<any>(self, 2).rpcManager\n      },\n      /**\n       * #getter\n       */\n      get refNameColors() {\n        const colors: string[] = self.getConf('refNameColors') || []\n        return colors.length === 0 ? refNameColors : colors\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get refNames() {\n        return self.regions?.map(region => region.refName)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      getCanonicalRefName(refName: string) {\n        if (!self.refNameAliases || !self.lowerCaseRefNameAliases) {\n          throw new Error(\n            'aliases not loaded, we expect them to be loaded before getCanonicalRefName can be called',\n          )\n        }\n\n        return (\n          self.refNameAliases[refName] || self.lowerCaseRefNameAliases[refName]\n        )\n      },\n      /**\n       * #method\n       */\n      getRefNameColor(refName: string) {\n        if (!self.refNames) {\n          return undefined\n        }\n        const idx = self.refNames.indexOf(refName)\n        return idx === -1\n          ? undefined\n          : self.refNameColors[idx % self.refNameColors.length]\n      },\n      /**\n       * #method\n       */\n      isValidRefName(refName: string) {\n        if (!self.refNameAliases) {\n          throw new Error(\n            'isValidRefName cannot be called yet, the assembly has not finished loading',\n          )\n        }\n        return !!this.getCanonicalRefName(refName)\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setLoaded({\n        regions,\n        refNameAliases,\n        lowerCaseRefNameAliases,\n        cytobands,\n      }: {\n        regions: Region[]\n        refNameAliases: RefNameAliases\n        lowerCaseRefNameAliases: RefNameAliases\n        cytobands: Feature[]\n      }) {\n        this.setRegions(regions)\n        this.setRefNameAliases(refNameAliases, lowerCaseRefNameAliases)\n        this.setCytobands(cytobands)\n      },\n      /**\n       * #action\n       */\n      setError(e: unknown) {\n        self.error = e\n      },\n      /**\n       * #action\n       */\n      setRegions(regions: Region[]) {\n        self.volatileRegions = regions\n      },\n      /**\n       * #action\n       */\n      setRefNameAliases(\n        aliases: RefNameAliases,\n        lowerCaseAliases: RefNameAliases,\n      ) {\n        self.refNameAliases = aliases\n        self.lowerCaseRefNameAliases = lowerCaseAliases\n      },\n      /**\n       * #action\n       */\n      setCytobands(cytobands: Feature[]) {\n        self.cytobands = cytobands\n      },\n      /**\n       * #action\n       */\n      setLoadingP(p?: Promise<void>) {\n        self.loadingP = p\n      },\n      /**\n       * #action\n       */\n      load() {\n        if (!self.loadingP) {\n          self.loadingP = this.loadPre().catch((e: unknown) => {\n            this.setLoadingP(undefined)\n            this.setError(e)\n          })\n        }\n        return self.loadingP\n      },\n      /**\n       * #action\n       */\n      async loadPre() {\n        const conf = self.configuration\n        const refNameAliasesAdapterConf = conf?.refNameAliases?.adapter\n        const cytobandAdapterConf = conf?.cytobands?.adapter\n        const sequenceAdapterConf = conf?.sequence.adapter\n        const assemblyName = self.name\n\n        const regions = await getAssemblyRegions({\n          config: sequenceAdapterConf,\n          pluginManager,\n        })\n\n        const adapterRegionsWithAssembly = regions.map(r => {\n          checkRefName(r.refName)\n          return { ...r, assemblyName }\n        })\n        const refNameAliases = {} as Record<string, string>\n\n        const refNameAliasCollection = await getRefNameAliases({\n          config: refNameAliasesAdapterConf,\n          pluginManager,\n        })\n\n        for (const { refName, aliases, override } of refNameAliasCollection) {\n          for (const alias of aliases) {\n            checkRefName(alias)\n            refNameAliases[alias] = refName\n          }\n          // the override field is supplied by a RefNameAliasAdapter to make\n          // the refName field returned by the adapter to be used as the\n          // primary names for this assembly\n          if (override) {\n            refNameAliases[refName] = refName\n          }\n        }\n        // add identity to the refNameAliases list\n        for (const region of adapterRegionsWithAssembly) {\n          // this ||= means that if the refNameAliasAdapter already set a\n          // mapping for the primary region to be an alias\n          refNameAliases[region.refName] ||= region.refName\n        }\n        const lowerCaseRefNameAliases = Object.fromEntries(\n          Object.entries(refNameAliases).map(([key, val]) => [\n            key.toLowerCase(),\n            val,\n          ]),\n        )\n\n        this.setLoaded({\n          refNameAliases,\n          regions: adapterRegionsWithAssembly.map(r => ({\n            ...r,\n            refName: refNameAliases[r.refName] || r.refName,\n          })),\n          lowerCaseRefNameAliases,\n          cytobands: await getCytobands({\n            config: cytobandAdapterConf,\n            pluginManager,\n          }),\n        })\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      getAdapterMapEntry(adapterConf: AdapterConf, options: BaseOptions) {\n        const { signal, statusCallback, ...rest } = options\n        if (!options.sessionId) {\n          throw new Error('sessionId is required')\n        }\n        return adapterLoads.get(\n          adapterConfigCacheKey(adapterConf),\n          {\n            adapterConf,\n            self,\n            options: rest,\n          } as CacheData,\n\n          // signal intentionally not passed here, fixes issues like #2221.\n          // alternative fix #2540 was proposed but non-working currently\n          undefined,\n          statusCallback,\n        )\n      },\n\n      /**\n       * #method\n       * get Map of `canonical-name -> adapter-specific-name`\n       */\n      async getRefNameMapForAdapter(\n        adapterConf: AdapterConf,\n        opts: BaseOptions,\n      ) {\n        if (!opts.sessionId) {\n          throw new Error('sessionId is required')\n        }\n        const map = await this.getAdapterMapEntry(adapterConf, opts)\n        return map.forwardMap\n      },\n\n      /**\n       * #method\n       * get Map of `adapter-specific-name -> canonical-name`\n       */\n      async getReverseRefNameMapForAdapter(\n        adapterConf: AdapterConf,\n        opts: BaseOptions,\n      ) {\n        const map = await this.getAdapterMapEntry(adapterConf, opts)\n        return map.reverseMap\n      },\n    }))\n}\n\nasync function getRefNameAliases({\n  config,\n  pluginManager,\n  signal,\n}: {\n  config: AnyConfigurationModel\n  pluginManager: PluginManager\n  signal?: AbortSignal\n}) {\n  const type = pluginManager.getAdapterType(config.type)!\n  const CLASS = await type.getAdapterClass()\n  const adapter = new CLASS(\n    config,\n    undefined,\n    pluginManager,\n  ) as BaseRefNameAliasAdapter\n  return adapter.getRefNameAliases({ signal })\n}\n\nasync function getCytobands({\n  config,\n  pluginManager,\n}: {\n  config: AnyConfigurationModel\n  pluginManager: PluginManager\n}) {\n  const type = pluginManager.getAdapterType(config.type)!\n  const CLASS = await type.getAdapterClass()\n  const adapter = new CLASS(config, undefined, pluginManager)\n\n  // @ts-expect-error\n  return adapter.getData()\n}\n\nasync function getAssemblyRegions({\n  config,\n  pluginManager,\n  signal,\n}: {\n  config: AnyConfigurationModel\n  pluginManager: PluginManager\n  signal?: AbortSignal\n}) {\n  const type = pluginManager.getAdapterType(config.type)!\n  const CLASS = await type.getAdapterClass()\n  const adapter = new CLASS(config, undefined, pluginManager) as RegionsAdapter\n  return adapter.getRegions({ signal })\n}\n\nexport type AssemblyModel = ReturnType<typeof assemblyFactory>\nexport type Assembly = Instance<AssemblyModel>\n","import { lazy } from 'react'\nimport {\n  addDisposer,\n  cast,\n  getSnapshot,\n  getType,\n  types,\n  IAnyStateTreeNode,\n  SnapshotIn,\n  Instance,\n  IAnyType,\n} from 'mobx-state-tree'\n\nimport { saveAs } from 'file-saver'\nimport { observable, autorun } from 'mobx'\nimport assemblyConfigSchemaFactory from '@jbrowse/core/assemblyManager/assemblyConfigSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport RpcManager from '@jbrowse/core/rpc/RpcManager'\nimport TextSearchManager from '@jbrowse/core/TextSearch/TextSearchManager'\nimport { AbstractSessionModel, SessionWithWidgets } from '@jbrowse/core/util'\nimport { MenuItem } from '@jbrowse/core/ui'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\nimport SettingsIcon from '@mui/icons-material/Settings'\nimport AppsIcon from '@mui/icons-material/Apps'\nimport FileCopyIcon from '@mui/icons-material/FileCopy'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\nimport GetAppIcon from '@mui/icons-material/GetApp'\nimport PublishIcon from '@mui/icons-material/Publish'\nimport ExtensionIcon from '@mui/icons-material/Extension'\nimport StorageIcon from '@mui/icons-material/Storage'\nimport SaveIcon from '@mui/icons-material/Save'\nimport UndoIcon from '@mui/icons-material/Undo'\nimport RedoIcon from '@mui/icons-material/Redo'\nimport { Cable } from '@jbrowse/core/ui/Icons'\n\n// other\nimport makeWorkerInstance from '../makeWorkerInstance'\nimport jbrowseWebFactory from '../jbrowseModel'\nimport { filterSessionInPlace } from '../util'\nimport packageJSON from '../../package.json'\nimport {\n  BaseSession,\n  BaseSessionType,\n  SessionWithDialogs,\n  InternetAccountsRootModelMixin,\n  BaseRootModelFactory,\n} from '@jbrowse/product-core'\nimport { HistoryManagementMixin, RootAppMenuMixin } from '@jbrowse/app-core'\nimport { hydrateRoot, createRoot } from 'react-dom/client'\nimport { AssemblyManager } from '@jbrowse/plugin-data-management'\n\n// locals\nconst SetDefaultSession = lazy(() => import('../components/SetDefaultSession'))\nconst PreferencesDialog = lazy(() => import('../components/PreferencesDialog'))\n\nexport interface Menu {\n  label: string\n  menuItems: MenuItem[]\n}\n\ntype AssemblyConfig = ReturnType<typeof assemblyConfigSchemaFactory>\ntype SessionModelFactory = (args: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: AssemblyConfig\n}) => IAnyType\n\n/**\n * #stateModel JBrowseWebRootModel\n *\n * composed of\n * - [BaseRootModel](../baserootmodel)\n * - [InternetAccountsMixin](../internetaccountsmixin)\n * - [HistoryManagementMixin](../historymanagementmixin)\n * - [RootAppMenuMixin](../rootappmenumixin)\n *\n * note: many properties of the root model are available through the session,\n * and we generally prefer using the session model (via e.g. getSession) over\n * the root model (via e.g. getRoot) in plugin code\n */\nexport default function RootModel({\n  pluginManager,\n  sessionModelFactory,\n  adminMode = false,\n}: {\n  pluginManager: PluginManager\n  sessionModelFactory: SessionModelFactory\n  adminMode?: boolean\n}) {\n  const assemblyConfigSchema = assemblyConfigSchemaFactory(pluginManager)\n  const jbrowseModelType = jbrowseWebFactory({\n    pluginManager,\n    assemblyConfigSchema,\n  })\n  const sessionModelType = sessionModelFactory({\n    pluginManager,\n    assemblyConfigSchema,\n  })\n  return types\n    .compose(\n      BaseRootModelFactory({\n        pluginManager,\n        jbrowseModelType,\n        sessionModelType,\n        assemblyConfigSchema,\n      }),\n      InternetAccountsRootModelMixin(pluginManager),\n      HistoryManagementMixin(),\n      RootAppMenuMixin(),\n    )\n    .props({\n      /**\n       * #property\n       */\n      configPath: types.maybe(types.string),\n    })\n    .volatile(self => ({\n      version: packageJSON.version,\n      hydrateFn: hydrateRoot,\n      createRootFn: createRoot,\n      pluginsUpdated: false,\n      rpcManager: new RpcManager(\n        pluginManager,\n        self.jbrowse.configuration.rpc,\n        {\n          WebWorkerRpcDriver: { makeWorkerInstance },\n          MainThreadRpcDriver: {},\n        },\n      ),\n      savedSessionsVolatile: observable.map<\n        string,\n        { name: string; [key: string]: unknown }\n      >({}),\n      textSearchManager: new TextSearchManager(pluginManager),\n      error: undefined as unknown,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get savedSessions() {\n        return [...self.savedSessionsVolatile.values()]\n      },\n      /**\n       * #method\n       */\n      localStorageId(name: string) {\n        return `localSaved-${name}-${self.configPath}`\n      },\n      /**\n       * #getter\n       */\n      get autosaveId() {\n        return `autosave-${self.configPath}`\n      },\n      /**\n       * #getter\n       */\n      get previousAutosaveId() {\n        return `previousAutosave-${self.configPath}`\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get savedSessionNames() {\n        return self.savedSessions.map(session => session.name)\n      },\n      /**\n       * #getter\n       */\n      get currentSessionId() {\n        const locationUrl = new URL(window.location.href)\n        const params = new URLSearchParams(locationUrl.search)\n        return params.get('session')?.split('local-')[1]\n      },\n    }))\n\n    .actions(self => ({\n      afterCreate() {\n        for (const [key, val] of Object.entries(localStorage)\n          .filter(([key, _val]) => key.startsWith('localSaved-'))\n          .filter(([key]) => key.includes(self.configPath || 'undefined'))) {\n          try {\n            const { session } = JSON.parse(val)\n            self.savedSessionsVolatile.set(key, session)\n          } catch (e) {\n            console.error('bad session encountered', key, val)\n          }\n        }\n        addDisposer(\n          self,\n          autorun(() => {\n            for (const [, val] of self.savedSessionsVolatile.entries()) {\n              try {\n                const key = self.localStorageId(val.name)\n                localStorage.setItem(key, JSON.stringify({ session: val }))\n              } catch (e) {\n                // @ts-expect-error\n                if (e.code === '22' || e.code === '1024') {\n                  alert(\n                    'Local storage is full! Please use the \"Open sessions\" panel to remove old sessions',\n                  )\n                }\n              }\n            }\n          }),\n        )\n\n        addDisposer(\n          self,\n          autorun(\n            () => {\n              if (!self.session) {\n                return\n              }\n              const snapshot = getSnapshot(self.session as BaseSession)\n              const s = JSON.stringify\n              sessionStorage.setItem('current', s({ session: snapshot }))\n              localStorage.setItem(\n                `autosave-${self.configPath}`,\n                s({\n                  session: {\n                    ...snapshot,\n                    name: `${snapshot.name}-autosaved`,\n                  },\n                }),\n              )\n\n              // this check is not able to be modularized into it's own autorun\n              // at current time because it depends on session storage snapshot\n              // being set above\n              if (self.pluginsUpdated) {\n                window.location.reload()\n              }\n            },\n            { delay: 400 },\n          ),\n        )\n      },\n      /**\n       * #action\n       */\n      setSession(sessionSnapshot?: SnapshotIn<BaseSessionType>) {\n        const oldSession = self.session\n        self.session = cast(sessionSnapshot)\n        if (self.session) {\n          // validate all references in the session snapshot\n          try {\n            filterSessionInPlace(self.session, getType(self.session))\n          } catch (error) {\n            // throws error if session filtering failed\n            self.session = oldSession\n            throw error\n          }\n        }\n      },\n\n      /**\n       * #action\n       */\n      setPluginsUpdated(flag: boolean) {\n        self.pluginsUpdated = flag\n      },\n      /**\n       * #action\n       */\n      setDefaultSession() {\n        const { defaultSession } = self.jbrowse\n        const newSession = {\n          ...defaultSession,\n          name: `${defaultSession.name} ${new Date().toLocaleString()}`,\n        }\n\n        this.setSession(newSession)\n      },\n      /**\n       * #action\n       */\n      renameCurrentSession(sessionName: string) {\n        if (self.session) {\n          const snapshot = JSON.parse(JSON.stringify(getSnapshot(self.session)))\n          snapshot.name = sessionName\n          this.setSession(snapshot)\n        }\n      },\n      /**\n       * #action\n       */\n      addSavedSession(session: { name: string }) {\n        const key = self.localStorageId(session.name)\n        self.savedSessionsVolatile.set(key, session)\n      },\n      /**\n       * #action\n       */\n      removeSavedSession(session: { name: string }) {\n        const key = self.localStorageId(session.name)\n        localStorage.removeItem(key)\n        self.savedSessionsVolatile.delete(key)\n      },\n      /**\n       * #action\n       */\n      duplicateCurrentSession() {\n        if (self.session) {\n          const snapshot = JSON.parse(JSON.stringify(getSnapshot(self.session)))\n          let newSnapshotName = `${self.session.name} (copy)`\n          if (self.savedSessionNames.includes(newSnapshotName)) {\n            let newSnapshotCopyNumber = 2\n            do {\n              newSnapshotName = `${self.session.name} (copy ${newSnapshotCopyNumber})`\n              newSnapshotCopyNumber += 1\n            } while (self.savedSessionNames.includes(newSnapshotName))\n          }\n          snapshot.name = newSnapshotName\n          this.setSession(snapshot)\n        }\n      },\n      /**\n       * #action\n       */\n      activateSession(name: string) {\n        const localId = self.localStorageId(name)\n        const newSessionSnapshot = localStorage.getItem(localId)\n        if (!newSessionSnapshot) {\n          throw new Error(\n            `Can't activate session ${name}, it is not in the savedSessions`,\n          )\n        }\n\n        this.setSession(JSON.parse(newSessionSnapshot).session)\n      },\n      /**\n       * #action\n       */\n      saveSessionToLocalStorage() {\n        if (self.session) {\n          const key = self.localStorageId(self.session.name)\n          self.savedSessionsVolatile.set(key, getSnapshot(self.session))\n        }\n      },\n      loadAutosaveSession() {\n        const previousAutosave = localStorage.getItem(self.previousAutosaveId)\n        const autosavedSession = previousAutosave\n          ? JSON.parse(previousAutosave).session\n          : {}\n        const { name } = autosavedSession\n        autosavedSession.name = `${name.replace('-autosaved', '')}-restored`\n        this.setSession(autosavedSession)\n      },\n      /**\n       * #action\n       */\n      setError(error?: unknown) {\n        self.error = error\n      },\n    }))\n    .volatile(self => ({\n      menus: [\n        {\n          label: 'File',\n          menuItems: [\n            {\n              label: 'New session',\n              icon: AddIcon,\n\n              onClick: (session: any) => {\n                const lastAutosave = localStorage.getItem(self.autosaveId)\n                if (lastAutosave) {\n                  localStorage.setItem(self.previousAutosaveId, lastAutosave)\n                }\n                session.setDefaultSession()\n              },\n            },\n            {\n              label: 'Import session…',\n              icon: PublishIcon,\n              onClick: (session: SessionWithWidgets) => {\n                const widget = session.addWidget(\n                  'ImportSessionWidget',\n                  'importSessionWidget',\n                )\n                session.showWidget(widget)\n              },\n            },\n            {\n              label: 'Export session',\n              icon: GetAppIcon,\n              onClick: (session: IAnyStateTreeNode) => {\n                const sessionBlob = new Blob(\n                  [JSON.stringify({ session: getSnapshot(session) }, null, 2)],\n                  { type: 'text/plain;charset=utf-8' },\n                )\n                saveAs(sessionBlob, 'session.json')\n              },\n            },\n            {\n              label: 'Open session…',\n              icon: FolderOpenIcon,\n              onClick: (session: SessionWithWidgets) => {\n                const widget = session.addWidget(\n                  'SessionManager',\n                  'sessionManager',\n                )\n                session.showWidget(widget)\n              },\n            },\n            {\n              label: 'Save session',\n              icon: SaveIcon,\n              onClick: (session: SessionWithWidgets) => {\n                self.saveSessionToLocalStorage()\n                session.notify(`Saved session \"${session.name}\"`, 'success')\n              },\n            },\n            {\n              label: 'Duplicate session',\n              icon: FileCopyIcon,\n              onClick: (session: AbstractSessionModel) => {\n                if (session.duplicateCurrentSession) {\n                  session.duplicateCurrentSession()\n                }\n              },\n            },\n            { type: 'divider' },\n            {\n              label: 'Open track...',\n              icon: StorageIcon,\n              onClick: (session: SessionWithWidgets) => {\n                if (session.views.length === 0) {\n                  session.notify('Please open a view to add a track first')\n                } else if (session.views.length > 0) {\n                  const widget = session.addWidget(\n                    'AddTrackWidget',\n                    'addTrackWidget',\n                    { view: session.views[0]!.id },\n                  )\n                  session.showWidget(widget)\n                  if (session.views.length > 1) {\n                    session.notify(\n                      'This will add a track to the first view. Note: if you want to open a track in a specific view open the track selector for that view and use the add track (plus icon) in the bottom right',\n                    )\n                  }\n                }\n              },\n            },\n            {\n              label: 'Open connection...',\n              icon: Cable,\n              onClick: (session: SessionWithWidgets) => {\n                session.showWidget(\n                  session.addWidget(\n                    'AddConnectionWidget',\n                    'addConnectionWidget',\n                  ),\n                )\n              },\n            },\n            { type: 'divider' },\n            {\n              label: 'Return to splash screen',\n              icon: AppsIcon,\n              onClick: () => {\n                self.setSession(undefined)\n              },\n            },\n          ],\n        },\n        ...(adminMode\n          ? [\n              {\n                label: 'Admin',\n                menuItems: [\n                  {\n                    label: 'Open assembly manager',\n                    onClick: () =>\n                      self.session.queueDialog((onClose: () => void) => [\n                        AssemblyManager,\n                        { onClose, rootModel: self },\n                      ]),\n                  },\n                  {\n                    label: 'Set default session',\n                    onClick: () =>\n                      self.session.queueDialog((onClose: () => void) => [\n                        SetDefaultSession,\n                        { rootModel: self, onClose },\n                      ]),\n                  },\n                ],\n              },\n            ]\n          : []),\n        {\n          label: 'Add',\n          menuItems: [],\n        },\n        {\n          label: 'Tools',\n          menuItems: [\n            {\n              label: 'Undo',\n              icon: UndoIcon,\n              onClick: () => {\n                if (self.history.canUndo) {\n                  self.history.undo()\n                }\n              },\n            },\n            {\n              label: 'Redo',\n              icon: RedoIcon,\n              onClick: () => {\n                if (self.history.canRedo) {\n                  self.history.redo()\n                }\n              },\n            },\n            { type: 'divider' },\n            {\n              label: 'Plugin store',\n              icon: ExtensionIcon,\n              onClick: () => {\n                if (self.session) {\n                  self.session.showWidget(\n                    self.session.addWidget(\n                      'PluginStoreWidget',\n                      'pluginStoreWidget',\n                    ),\n                  )\n                }\n              },\n            },\n            {\n              label: 'Preferences',\n              icon: SettingsIcon,\n              onClick: () => {\n                if (self.session) {\n                  ;(self.session as SessionWithDialogs).queueDialog(\n                    handleClose => [\n                      PreferencesDialog,\n                      {\n                        session: self.session,\n                        handleClose,\n                      },\n                    ],\n                  )\n                }\n              },\n            },\n          ],\n        },\n      ] as Menu[],\n      adminMode,\n    }))\n}\n\nexport type WebRootModelType = ReturnType<typeof RootModel>\nexport type WebRootModel = Instance<WebRootModelType>\n","import { ConfigurationSchema } from '../configuration'\nimport PluginManager from '../PluginManager'\n\n/**\n * #config BaseAssembly\n * #category assemblyManagement\n * This corresponds to the assemblies section of the config\n */\nfunction assemblyConfigSchema(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'BaseAssembly',\n    {\n      /**\n       * #slot\n       * aliases are \"reference name aliases\" e.g. aliases for hg38 might be\n       * \"GRCh38\"\n       */\n      aliases: {\n        type: 'stringArray',\n        defaultValue: [],\n        description: 'Other possible names for the assembly',\n      },\n\n      /**\n       * #slot\n       * sequence refers to a reference sequence track that has an adapter\n       * containing, importantly, a sequence adapter such as\n       * IndexedFastaAdapter\n       */\n      sequence: pluginManager.getTrackType('ReferenceSequenceTrack')!\n        .configSchema,\n\n      /**\n       * #slot\n       */\n      refNameColors: {\n        type: 'stringArray',\n        defaultValue: [],\n        description:\n          'Define custom colors for each reference sequence. Will cycle through this list if there are not enough colors for every sequence.',\n      },\n\n      refNameAliases: ConfigurationSchema(\n        'RefNameAliases',\n        {\n          /**\n           * #slot refNameAliases.adapter\n           * refNameAliases help resolve e.g. chr1 and 1 as the same entity the\n           * data for refNameAliases are fetched from an adapter, that is\n           * commonly a tsv like chromAliases.txt from UCSC or similar\n           */\n          adapter: pluginManager.pluggableConfigSchemaType('adapter'),\n        },\n        {\n          preProcessSnapshot: snap => {\n            // allow refNameAliases to be unspecified\n            if (!snap.adapter) {\n              return { adapter: { type: 'RefNameAliasAdapter' } }\n            }\n            return snap\n          },\n        },\n      ),\n      cytobands: ConfigurationSchema(\n        'Cytoband',\n        {\n          /**\n           * #slot cytobands.adapter\n           * cytoband data is fetched from an adapter, and can be displayed by\n           * a view type as ideograms\n           */\n          adapter: pluginManager.pluggableConfigSchemaType('adapter'),\n        },\n        {\n          preProcessSnapshot: snap => {\n            // allow cytoBand to be unspecified\n            return !snap.adapter\n              ? { adapter: { type: 'CytobandAdapter' } }\n              : snap\n          },\n        },\n      ),\n\n      /**\n       * #slot\n       */\n      displayName: {\n        type: 'string',\n        defaultValue: '',\n        description:\n          'A human readable display name for the assembly e.g. \"Homo sapiens (hg38)\" while the assembly name may just be \"hg38\"',\n      },\n    },\n    {\n      /**\n       * #identifier name\n       * the name acts as a unique identifier in the config, so it cannot be\n       * duplicated. it usually a short human readable \"id\" like hg38, but you\n       * can also optionally customize the assembly \"displayName\" config slot\n       */\n      explicitIdentifier: 'name',\n    },\n  )\n}\n\nexport default assemblyConfigSchema\nexport type BaseAssemblyConfigSchema = ReturnType<typeof assemblyConfigSchema>\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\nimport { cast, getParent, getSnapshot } from 'mobx-state-tree'\nimport RpcManager from '@jbrowse/core/rpc/RpcManager'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { PluginDefinition } from '@jbrowse/core/PluginLoader'\nimport { toJS } from 'mobx'\n\n// locals\nimport { JBrowseConfigF } from '../JBrowseConfig'\n\n/**\n * #stateModel AppCoreJBrowseModel\n * note that JBrowseRootConfig is a config model, but config models are MST\n * trees themselves, which is why this stateModel is allowed to extend it\n *\n * the AppCoreJBrowseModel is generally on a property named rootModel.jbrowse\n *\n * extends\n * - [JBrowseRootConfig](/docs/config/jbrowserootconfig)\n\n */\nexport function JBrowseModelF({\n  pluginManager,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: BaseAssemblyConfigSchema\n}) {\n  return JBrowseConfigF({ pluginManager, assemblyConfigSchema })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get assemblyNames(): string[] {\n        return self.assemblies.map(assembly => readConfObject(assembly, 'name'))\n      },\n      /**\n       * #getter\n       */\n      get rpcManager(): RpcManager {\n        return getParent<any>(self).rpcManager\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      addAssemblyConf(conf: AnyConfigurationModel) {\n        const { name } = conf\n        if (!name) {\n          throw new Error('Can\\'t add assembly with no \"name\"')\n        }\n        if (self.assemblyNames.includes(name)) {\n          throw new Error(\n            `Can't add assembly with name \"${name}\", an assembly with that name already exists`,\n          )\n        }\n        const length = self.assemblies.push({\n          ...conf,\n          sequence: {\n            type: 'ReferenceSequenceTrack',\n            trackId: `${name}-${Date.now()}`,\n            ...conf.sequence,\n          },\n        })\n        return self.assemblies[length - 1]\n      },\n      /**\n       * #action\n       */\n      removeAssemblyConf(assemblyName: string) {\n        const toRemove = self.assemblies.find(a => a.name === assemblyName)\n        if (toRemove) {\n          self.assemblies.remove(toRemove)\n        }\n      },\n      /**\n       * #action\n       */\n      addTrackConf(trackConf: AnyConfigurationModel) {\n        const { type } = trackConf\n        if (!type) {\n          throw new Error(`unknown track type ${type}`)\n        }\n        const length = self.tracks.push(trackConf)\n        return self.tracks[length - 1]\n      },\n      /**\n       * #action\n       */\n      addConnectionConf(connectionConf: AnyConfigurationModel) {\n        const { type } = connectionConf\n        if (!type) {\n          throw new Error(`unknown connection type ${type}`)\n        }\n        const length = self.connections.push(connectionConf)\n        return self.connections[length - 1]\n      },\n      /**\n       * #action\n       */\n      deleteConnectionConf(configuration: AnyConfigurationModel) {\n        const elt = self.connections.find(conn => conn.id === configuration.id)\n        return self.connections.remove(elt)\n      },\n      /**\n       * #action\n       */\n      deleteTrackConf(trackConf: AnyConfigurationModel) {\n        const elt = self.tracks.find(t => t.trackId === trackConf.trackId)\n        return self.tracks.remove(elt)\n      },\n      /**\n       * #action\n       */\n      addPlugin(pluginDefinition: PluginDefinition) {\n        self.plugins.push(pluginDefinition)\n\n        const rootModel = getParent<any>(self)\n        rootModel.setPluginsUpdated(true)\n      },\n      /**\n       * #action\n       */\n      removePlugin(pluginDefinition: PluginDefinition) {\n        self.plugins = cast(\n          self.plugins.filter(\n            plugin =>\n              // @ts-expect-error\n              plugin.url !== pluginDefinition.url ||\n              // @ts-expect-error\n              plugin.umdUrl !== pluginDefinition.umdUrl ||\n              // @ts-expect-error\n              plugin.cjsUrl !== pluginDefinition.cjsUrl ||\n              // @ts-expect-error\n              plugin.esmUrl !== pluginDefinition.esmUrl,\n          ),\n        )\n\n        getParent<any>(self).setPluginsUpdated(true)\n      },\n\n      /**\n       * #action\n       */\n      setDefaultSessionConf(sessionConf: AnyConfigurationModel) {\n        const newDefault =\n          getParent<any>(self).session.name === sessionConf.name\n            ? getSnapshot(sessionConf)\n            : toJS(sessionConf)\n\n        if (!newDefault.name) {\n          throw new Error(`unable to set default session to ${newDefault.name}`)\n        }\n\n        self.defaultSession = cast(newDefault)\n      },\n      /**\n       * #action\n       */\n      addInternetAccountConf(internetAccountConf: AnyConfigurationModel) {\n        const { type } = internetAccountConf\n        if (!type) {\n          throw new Error(`unknown internetAccount type ${type}`)\n        }\n        const length = self.internetAccounts.push(internetAccountConf)\n        return self.internetAccounts[length - 1]\n      },\n      /**\n       * #action\n       */\n      deleteInternetAccountConf(configuration: AnyConfigurationModel) {\n        const elt = self.internetAccounts.find(a => a.id === configuration.id)\n        return self.internetAccounts.remove(elt)\n      },\n    }))\n}\n","import {\n  AnyConfigurationSchemaType,\n  ConfigurationSchema,\n} from '@jbrowse/core/configuration'\n\nimport { PluginDefinition } from '@jbrowse/core/PluginLoader'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport RpcManager from '@jbrowse/core/rpc/RpcManager'\nimport {\n  FormatAboutConfigSchemaFactory,\n  FormatDetailsConfigSchemaFactory,\n  HierarchicalConfigSchemaFactory,\n} from '@jbrowse/product-core'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config JBrowseRootConfig\n * #category root\n *\n * this is a config model representing a config.json (for jbrowse-web) or\n * somefile.jbrowse (for jbrowse-desktop, where configs have the .jbrowse\n * extension)\n *\n * includes\n * - [FormatDetails](../formatdetails) for global (instead of per-track)\n *   feature detail formatters\n * - [FormatAbout](../formatabout) for global (instead of per-track) about\n *   track formatters\n * - [HierarchicalConfigSchema](../hierarchicalconfigschema) for track selector\n *   configs\n *\n * also includes any pluginManager.pluginConfigurationSchemas(), so plugins\n * that have a configurationSchema field on their class are mixed into this\n * object\n */\nexport function JBrowseConfigF({\n  pluginManager,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: AnyConfigurationSchemaType\n}) {\n  return types.model('JBrowseConfig', {\n    configuration: ConfigurationSchema('Root', {\n      /**\n       * #slot configuration.rpc\n       */\n      rpc: RpcManager.configSchema,\n\n      /**\n       * #slot configuration.highResolutionScaling\n       */\n      highResolutionScaling: {\n        type: 'number',\n        defaultValue: 2,\n      },\n\n      formatDetails: FormatDetailsConfigSchemaFactory(),\n      formatAbout: FormatAboutConfigSchemaFactory(),\n\n      /*\n       * #slot configuration.shareURL\n       */\n      shareURL: {\n        type: 'string',\n        defaultValue: 'https://share.jbrowse.org/api/v1/',\n      },\n      /**\n       * #slot configuration.disableAnalytics\n       */\n      disableAnalytics: {\n        type: 'boolean',\n        defaultValue: false,\n      },\n\n      hierarchical: HierarchicalConfigSchemaFactory(),\n      /**\n       * #slot configuration.theme\n       */\n      theme: {\n        type: 'frozen',\n        defaultValue: {},\n      },\n      /**\n       * #slot configuration.extraThemes\n       */\n      extraThemes: {\n        type: 'frozen',\n        defaultValue: {},\n      },\n      /**\n       * #slot configuration.logoPath\n       */\n      logoPath: {\n        type: 'fileLocation',\n        defaultValue: { uri: '', locationType: 'UriLocation' },\n      },\n      ...pluginManager.pluginConfigurationSchemas(),\n    }),\n    /**\n     * #slot\n     * defines plugins of the format\n     * ```typescript\n     * type PluginDefinition=\n     *    { umdUrl: string, name:string } |\n     *    { url: string, name: string } |\n     *    { esmUrl: string } |\n     *    { cjsUrl: string } |\n     *    { umdLoc: { uri: string } } |\n     *    { esmLoc: { uri: string } } |\n     * ```\n     */\n    plugins: types.array(types.frozen<PluginDefinition>()),\n    /**\n     * #slot\n     * configuration of the assemblies in the instance, see BaseAssembly\n     */\n    assemblies: types.array(assemblyConfigSchema),\n    /**\n     * #slot\n     * track configuration is an array of track config schemas. multiple\n     * instances of a track can exist that use the same configuration\n     */\n    tracks: types.array(pluginManager.pluggableConfigSchemaType('track')),\n    /**\n     * #slot\n     * configuration for internet accounts, see InternetAccounts\n     */\n    internetAccounts: types.array(\n      pluginManager.pluggableConfigSchemaType('internet account'),\n    ),\n    /**\n     * #slot\n     * configuration for aggregate text search adapters (created by e.g.\n     * jbrowse text-index, but can be a pluggable TextSearchAdapter type)\n     */\n    aggregateTextSearchAdapters: types.array(\n      pluginManager.pluggableConfigSchemaType('text search adapter'),\n    ),\n\n    /**\n     * #slot\n     * configuration for connections\n     */\n    connections: types.array(\n      pluginManager.pluggableConfigSchemaType('connection'),\n    ),\n\n    /**\n     * #slot\n     */\n    defaultSession: types.optional(types.frozen(), {\n      name: 'New Session',\n    }),\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config FormatDetails\n * generally exists on the tracks in the config.json or as a 'session' config as\n * configuration.formatDetails\n */\nexport function FormatDetailsConfigSchemaFactory() {\n  return ConfigurationSchema('FormatDetails', {\n    /**\n     * #slot configuration.formatDetails.feature\n     */\n    feature: {\n      type: 'frozen',\n      description: 'adds extra fields to the feature details',\n      defaultValue: {},\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot configuration.formatDetails.subfeatures\n     */\n    subfeatures: {\n      type: 'frozen',\n      description: 'adds extra fields to the subfeatures of a feature',\n      defaultValue: {},\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot configuration.formatDetails.depth\n     */\n    depth: {\n      type: 'number',\n      defaultValue: 2,\n      description:\n        'depth to iterate the formatDetails->subfeatures callback on subfeatures (used for example to only apply the callback to the first layer of subfeatures)',\n    },\n    /**\n     * #slot configuration.formatDetails.maxDepth\n     */\n    maxDepth: {\n      type: 'number',\n      defaultValue: 10000,\n      description: 'hide subfeatures greater than a certain depth',\n    },\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config FormatAbout\n * generally exists on the config.json or root config as configuration.formatAbout\n */\nexport function FormatAboutConfigSchemaFactory() {\n  return ConfigurationSchema('FormatAbout', {\n    /**\n     * #slot configuration.formatAbout.config\n     */\n    config: {\n      type: 'frozen',\n      description: 'formats configuration object in about dialog',\n      defaultValue: {},\n      contextVariable: ['config'],\n    },\n    /**\n     * #slot configuration.formatAbout.hideUris\n     */\n\n    hideUris: {\n      type: 'boolean',\n      defaultValue: false,\n    },\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config HierarchicalConfigSchema\n * generally exists on the config.json or root config as configuration.hierarchical\n */\nexport function HierarchicalConfigSchemaFactory() {\n  return ConfigurationSchema('hierarchical', {\n    sort: ConfigurationSchema('hierarchicalSort', {\n      /**\n       * #slot configuration.hierarchical.sort.trackNames\n       */\n      trackNames: {\n        type: 'boolean',\n        defaultValue: false,\n      },\n      /**\n       * #slot configuration.hierarchical.sort.categories\n       */\n      categories: {\n        type: 'boolean',\n        defaultValue: false,\n      },\n    }),\n    defaultCollapsed: ConfigurationSchema('defaultCollapsed', {\n      /**\n       * #slot configuration.hierarchical.defaultCollapsed.categoryNames\n       */\n      categoryNames: {\n        type: 'stringArray',\n        defaultValue: [],\n      },\n      /**\n       * #slot configuration.hierarchical.defaultCollapsed.topLevelCategories\n       */\n      topLevelCategories: {\n        type: 'boolean',\n        defaultValue: false,\n      },\n      /**\n       * #slot configuration.hierarchical.defaultCollapsed.subCategories\n       */\n      subCategories: {\n        type: 'boolean',\n        defaultValue: false,\n      },\n    }),\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport assemblyManagerFactory, {\n  BaseAssemblyConfigSchema,\n} from '@jbrowse/core/assemblyManager'\nimport RpcManager from '@jbrowse/core/rpc/RpcManager'\nimport {\n  IAnyType,\n  Instance,\n  SnapshotIn,\n  cast,\n  getSnapshot,\n  isStateTreeNode,\n  types,\n} from 'mobx-state-tree'\nimport TextSearchManager from '@jbrowse/core/TextSearch/TextSearchManager'\n\n/**\n * #stateModel BaseRootModel\n * #category root\n * factory function for the Base-level root model shared by all products\n */\nexport function BaseRootModelFactory({\n  pluginManager,\n  jbrowseModelType,\n  sessionModelType,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  jbrowseModelType: IAnyType\n  sessionModelType: IAnyType\n  assemblyConfigSchema: BaseAssemblyConfigSchema\n}) {\n  return types\n    .model('BaseRootModel', {\n      /**\n       * #property\n       * `jbrowse` is a mapping of the config.json into the in-memory state\n       * tree\n       */\n      jbrowse: jbrowseModelType,\n\n      /**\n       * #property\n       * `session` encompasses the currently active state of the app, including\n       * views open, tracks open in those views, etc.\n       */\n      session: types.maybe(sessionModelType),\n      /**\n       * #property\n       */\n      sessionPath: types.optional(types.string, ''),\n\n      /**\n       * #property\n       */\n      assemblyManager: types.optional(\n        assemblyManagerFactory(assemblyConfigSchema, pluginManager),\n        {},\n      ),\n    })\n    .volatile(self => ({\n      rpcManager: new RpcManager(\n        pluginManager,\n        self.jbrowse.configuration.rpc,\n        {\n          MainThreadRpcDriver: {},\n        },\n      ),\n\n      adminMode: false,\n      error: undefined as unknown,\n      textSearchManager: new TextSearchManager(pluginManager),\n      pluginManager,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setError(error: unknown) {\n        self.error = error\n      },\n      /**\n       * #action\n       */\n      setSession(sessionSnapshot?: SnapshotIn<IAnyType>) {\n        self.session = cast(sessionSnapshot)\n      },\n      /**\n       * #action\n       */\n      setDefaultSession() {\n        this.setSession(self.jbrowse.defaultSession)\n      },\n      /**\n       * #action\n       */\n      setSessionPath(path: string) {\n        self.sessionPath = path\n      },\n      /**\n       * #action\n       */\n      renameCurrentSession(newName: string) {\n        if (self.session) {\n          const snapshot = JSON.parse(JSON.stringify(getSnapshot(self.session)))\n          snapshot.name = newName\n          this.setSession(snapshot)\n        }\n      },\n    }))\n}\n\nexport type BaseRootModelType = ReturnType<typeof BaseRootModelFactory>\nexport type BaseRootModel = Instance<BaseRootModelType>\n\n/** Type guard for checking if something is a JB root model */\nexport function isRootModel(thing: unknown): thing is BaseRootModelType {\n  return (\n    isStateTreeNode(thing) &&\n    'session' in thing &&\n    'jbrowse' in thing &&\n    'assemblyManager' in thing\n  )\n}\n","import {\n  addDisposer,\n  cast,\n  getParent,\n  types,\n  Instance,\n  IAnyType,\n} from 'mobx-state-tree'\nimport { when } from '../util'\nimport { reaction } from 'mobx'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\nimport assemblyFactory, { Assembly } from './assembly'\nimport PluginManager from '../PluginManager'\nimport RpcManager from '../rpc/RpcManager'\n\ntype AdapterConf = Record<string, unknown>\n\n/**\n * #stateModel AssemblyManager\n */\nfunction assemblyManagerFactory(conf: IAnyType, pm: PluginManager) {\n  type Conf = Instance<typeof conf> // this is type any, try to narrow...\n  return types\n    .model({\n      /**\n       * #property\n       * this is automatically managed by an autorun which looks in the parent\n       * session.assemblies, session.sessionAssemblies, and\n       * session.temporaryAssemblies\n       */\n      assemblies: types.array(assemblyFactory(conf, pm)),\n    })\n    .views(self => ({\n      get assemblyNameMap() {\n        const obj = {} as Record<string, Assembly>\n        for (const assembly of self.assemblies) {\n          for (const name of assembly.allAliases) {\n            obj[name] = assembly\n          }\n        }\n        return obj\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      get(asmName: string) {\n        return self.assemblyNameMap[asmName]\n      },\n\n      /**\n       * #getter\n       */\n      get assemblyNamesList() {\n        return this.assemblyList.map(asm => asm.name)\n      },\n\n      /**\n       * #getter\n       * looks at jbrowse.assemblies, session.sessionAssemblies, and\n       * session.temporaryAssemblies to load from\n       */\n      get assemblyList() {\n        // name is the explicit identifier and can be accessed without getConf,\n        // hence the union with {name:string}\n        const {\n          jbrowse: { assemblies },\n          session: { sessionAssemblies = [], temporaryAssemblies = [] } = {},\n        } = getParent<any>(self)\n        return [\n          ...assemblies,\n          ...sessionAssemblies,\n          ...temporaryAssemblies,\n        ] as AnyConfigurationModel[]\n      },\n\n      get rpcManager(): RpcManager {\n        return getParent<any>(self).rpcManager\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       * use this method instead of assemblyManager.get(assemblyName)\n       * to get an assembly with regions loaded\n       */\n      async waitForAssembly(assemblyName: string) {\n        if (!assemblyName) {\n          throw new Error('no assembly name supplied to waitForAssembly')\n        }\n        let assembly = self.get(assemblyName)\n        if (!assembly) {\n          try {\n            await when(() => Boolean(self.get(assemblyName)), { timeout: 1000 })\n            assembly = self.get(assemblyName)\n          } catch (e) {\n            // ignore\n          }\n        }\n\n        if (!assembly) {\n          return undefined\n        }\n        await assembly.load()\n        await when(\n          () =>\n            !!(assembly.regions && assembly.refNameAliases) || !!assembly.error,\n        )\n        if (assembly.error) {\n          // eslint-disable-next-line @typescript-eslint/only-throw-error\n          throw assembly.error\n        }\n        return assembly\n      },\n\n      /**\n       * #method\n       */\n      async getRefNameMapForAdapter(\n        adapterConf: AdapterConf,\n        assemblyName: string | undefined,\n        opts: { signal?: AbortSignal; sessionId: string },\n      ) {\n        if (assemblyName) {\n          const asm = await this.waitForAssembly(assemblyName)\n          return asm?.getRefNameMapForAdapter(adapterConf, opts)\n        }\n        return {}\n      },\n\n      /**\n       * #method\n       */\n      async getReverseRefNameMapForAdapter(\n        adapterConf: AdapterConf,\n        assemblyName: string | undefined,\n        opts: { signal?: AbortSignal; sessionId: string },\n      ) {\n        if (assemblyName) {\n          const asm = await this.waitForAssembly(assemblyName)\n          return asm?.getReverseRefNameMapForAdapter(adapterConf, opts)\n        }\n        return {}\n      },\n\n      /**\n       * #method\n       */\n      isValidRefName(refName: string, assemblyName: string) {\n        const assembly = self.get(assemblyName)\n        if (assembly) {\n          return assembly.isValidRefName(refName)\n        }\n        throw new Error(\n          `Failed to look up refName ${refName} on ${assemblyName} because assembly does not exist`,\n        )\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          reaction(\n            () => self.assemblyList,\n            assemblyConfs => {\n              self.assemblies.forEach(asm => {\n                if (!asm.configuration) {\n                  this.removeAssembly(asm)\n                }\n              })\n              assemblyConfs.forEach(conf => {\n                if (\n                  !self.assemblies.some(\n                    a => a.name === readConfObject(conf, 'name'),\n                  )\n                ) {\n                  this.addAssembly(conf)\n                }\n              })\n            },\n            { fireImmediately: true, name: 'assemblyManagerAfterAttach' },\n          ),\n        )\n      },\n\n      /**\n       * #action\n       * private: you would generally want to add to manipulate\n       * jbrowse.assemblies, session.sessionAssemblies, or\n       * session.temporaryAssemblies instead of using this directly\n       */\n      removeAssembly(asm: Assembly) {\n        self.assemblies.remove(asm)\n      },\n\n      /**\n       * #action\n       * private: you would generally want to add to manipulate\n       * jbrowse.assemblies, session.sessionAssemblies, or\n       * session.temporaryAssemblies instead of using this directly\n       *\n       * this can take an active instance of an assembly, in which case it is\n       * referred to, or it can take an identifier e.g. assembly name, which is\n       * used as a reference. snapshots cannot be used\n       */\n      addAssembly(configuration: Conf) {\n        self.assemblies.push({ configuration })\n      },\n\n      /**\n       * #action\n       * private: you would generally want to add to manipulate\n       * jbrowse.assemblies, session.sessionAssemblies, or\n       * session.temporaryAssemblies instead of using this directly\n       */\n      replaceAssembly(idx: number, configuration: Conf) {\n        self.assemblies[idx] = cast({ configuration })\n      },\n    }))\n}\n\nexport default assemblyManagerFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { UriLocation } from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\nimport { Instance, addDisposer, types } from 'mobx-state-tree'\nimport { BaseRootModel } from './BaseRootModel'\n\n/**\n * #stateModel InternetAccountsMixin\n * #category root\n */\nexport function InternetAccountsRootModelMixin(pluginManager: PluginManager) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      internetAccounts: types.array(\n        pluginManager.pluggableMstType('internet account', 'stateModel'),\n      ),\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      initializeInternetAccount(\n        internetAccountConfig: AnyConfigurationModel,\n        initialSnapshot = {},\n      ) {\n        const internetAccountType = pluginManager.getInternetAccountType(\n          internetAccountConfig.type,\n        )\n        if (!internetAccountType) {\n          throw new Error(\n            `unknown internet account type ${internetAccountConfig.type}`,\n          )\n        }\n\n        const length = self.internetAccounts.push({\n          ...initialSnapshot,\n          type: internetAccountConfig.type,\n          configuration: internetAccountConfig,\n        })\n        return self.internetAccounts[length - 1]\n      },\n\n      /**\n       * #action\n       */\n      createEphemeralInternetAccount(\n        internetAccountId: string,\n        initialSnapshot: Record<string, unknown>,\n        url: string,\n      ) {\n        let hostUri: string | undefined\n\n        try {\n          hostUri = new URL(url).origin\n        } catch (e) {\n          // ignore\n        }\n        const internetAccountSplit = internetAccountId.split('-')\n        const configuration = {\n          type: internetAccountSplit[0]!,\n          internetAccountId: internetAccountId,\n          name: internetAccountSplit.slice(1).join('-'),\n          description: '',\n          domains: hostUri ? [hostUri] : [],\n        }\n        const type = pluginManager.getInternetAccountType(configuration.type)!\n        const internetAccount = type.stateModel.create({\n          ...initialSnapshot,\n          type: configuration.type,\n          configuration,\n        })\n        self.internetAccounts.push(internetAccount)\n        return internetAccount\n      },\n      /**\n       * #action\n       */\n      findAppropriateInternetAccount(location: UriLocation) {\n        // find the existing account selected from menu\n        const selectedId = location.internetAccountId\n        if (selectedId) {\n          const selectedAccount = self.internetAccounts.find(account => {\n            return account.internetAccountId === selectedId\n          })\n          if (selectedAccount) {\n            return selectedAccount\n          }\n        }\n\n        // if no existing account or not found, try to find working account\n        for (const account of self.internetAccounts) {\n          const handleResult = account.handlesLocation(location)\n          if (handleResult) {\n            return account\n          }\n        }\n\n        // if still no existing account, create ephemeral config to use\n        return selectedId\n          ? this.createEphemeralInternetAccount(selectedId, {}, location.uri)\n          : null\n      },\n    }))\n    .actions(self => ({\n      afterCreate() {\n        addDisposer(\n          self,\n          autorun(() => {\n            const { jbrowse } = self as typeof self & BaseRootModel\n            jbrowse.internetAccounts.forEach(self.initializeInternetAccount)\n          }),\n        )\n      },\n    }))\n}\n\nexport type RootModelWithInternetAccountsType = ReturnType<\n  typeof InternetAccountsRootModelMixin\n>\nexport type RootModelWithInternetAccounts =\n  Instance<RootModelWithInternetAccountsType>\n","import TimeTraveller from '@jbrowse/core/util/TimeTraveller'\nimport type { BaseRootModel } from '@jbrowse/product-core'\nimport { autorun } from 'mobx'\nimport { addDisposer, types } from 'mobx-state-tree'\n\n/**\n * #stateModel HistoryManagementMixin\n * #category root\n */\nexport function HistoryManagementMixin() {\n  return types\n    .model({\n      /**\n       * #property\n       * used for undo/redo\n       */\n      history: types.optional(TimeTraveller, { targetPath: '../session' }),\n    })\n    .actions(self => ({\n      afterCreate() {\n        document.addEventListener('keydown', e => {\n          if (\n            self.history.canRedo &&\n            // ctrl+shift+z or cmd+shift+z\n            (((e.ctrlKey || e.metaKey) && e.shiftKey && e.code === 'KeyZ') ||\n              // ctrl+y\n              (e.ctrlKey && !e.shiftKey && e.code === 'KeyY')) &&\n            document.activeElement?.tagName.toUpperCase() !== 'INPUT'\n          ) {\n            self.history.redo()\n          }\n          if (\n            self.history.canUndo &&\n            // ctrl+z or cmd+z\n            (e.ctrlKey || e.metaKey) &&\n            !e.shiftKey &&\n            e.code === 'KeyZ' &&\n            document.activeElement?.tagName.toUpperCase() !== 'INPUT'\n          ) {\n            self.history.undo()\n          }\n        })\n        addDisposer(\n          self,\n          autorun(() => {\n            const { session } = self as typeof self & BaseRootModel\n            if (session) {\n              // we use a specific initialization routine after session is\n              // created to get it to start tracking itself sort of related\n              // issue here\n              // https://github.com/mobxjs/mobx-state-tree/issues/1089#issuecomment-441207911\n              self.history.initialize()\n            }\n          }),\n        )\n      },\n    }))\n}\n","import { MenuItem } from '@jbrowse/core/ui/Menu'\nimport { types } from 'mobx-state-tree'\n\nexport interface Menu {\n  label: string\n  menuItems: MenuItem[]\n}\n\n/**\n * #stateModel RootAppMenuMixin\n */\nexport function RootAppMenuMixin() {\n  return types.model({}).actions(s => {\n    const self = s as { menus: Menu[] }\n    return {\n      /**\n       * #action\n       */\n      setMenus(newMenus: Menu[]) {\n        self.menus = newMenus\n      },\n      /**\n       * #action\n       * Add a top-level menu\n       *\n       * @param menuName - Name of the menu to insert.\n       *\n       * @returns The new length of the top-level menus array\n       */\n      appendMenu(menuName: string) {\n        return self.menus.push({ label: menuName, menuItems: [] })\n      },\n      /**\n       * #action\n       * Insert a top-level menu\n       *\n       * @param menuName - Name of the menu to insert.\n       *\n       * @param position - Position to insert menu. If negative, counts from th\n       * end, e.g. `insertMenu('My Menu', -1)` will insert the menu as the\n       * second-to-last one.\n       *\n       * @returns The new length of the top-level menus array\n       */\n      insertMenu(menuName: string, position: number) {\n        self.menus.splice(\n          (position < 0 ? self.menus.length : 0) + position,\n          0,\n          {\n            label: menuName,\n            menuItems: [],\n          },\n        )\n        return self.menus.length\n      },\n      /**\n       * #action\n       * Add a menu item to a top-level menu\n       *\n       * @param menuName - Name of the top-level menu to append to.\n       *\n       * @param menuItem - Menu item to append.\n       *\n       * @returns The new length of the menu\n       */\n      appendToMenu(menuName: string, menuItem: MenuItem) {\n        const menu = self.menus.find(m => m.label === menuName)\n        if (!menu) {\n          self.menus.push({ label: menuName, menuItems: [menuItem] })\n          return 1\n        }\n        return menu.menuItems.push(menuItem)\n      },\n      /**\n       * #action\n       * Insert a menu item into a top-level menu\n       *\n       * @param menuName - Name of the top-level menu to insert into\n       *\n       * @param menuItem - Menu item to insert\n       *\n       * @param position - Position to insert menu item. If negative, counts\n       * from the end, e.g. `insertMenu('My Menu', -1)` will insert the menu as\n       * the second-to-last one.\n       *\n       * @returns The new length of the menu\n       */\n      insertInMenu(menuName: string, menuItem: MenuItem, position: number) {\n        const menu = self.menus.find(m => m.label === menuName)\n        if (!menu) {\n          self.menus.push({ label: menuName, menuItems: [menuItem] })\n          return 1\n        }\n        const insertPosition =\n          position < 0 ? menu.menuItems.length + position : position\n        menu.menuItems.splice(insertPosition, 0, menuItem)\n        return menu.menuItems.length\n      },\n      /**\n       * #action\n       * Add a menu item to a sub-menu\n       *\n       * @param menuPath - Path to the sub-menu to add to, starting with the\n       * top-level menu (e.g. `['File', 'Insert']`).\n       *\n       * @param menuItem - Menu item to append.\n       *\n       * @returns The new length of the sub-menu\n       */\n      appendToSubMenu(menuPath: string[], menuItem: MenuItem) {\n        let topMenu = self.menus.find(m => m.label === menuPath[0])\n        if (!topMenu) {\n          const idx = this.appendMenu(menuPath[0]!)\n          topMenu = self.menus[idx - 1]!\n        }\n        let { menuItems: subMenu } = topMenu\n        const pathSoFar = [menuPath[0]]\n        menuPath.slice(1).forEach(menuName => {\n          pathSoFar.push(menuName)\n          let sm = subMenu.find(mi => 'label' in mi && mi.label === menuName)\n          if (!sm) {\n            const idx = subMenu.push({ label: menuName, subMenu: [] })\n            sm = subMenu[idx - 1]!\n          }\n          if (!('subMenu' in sm)) {\n            throw new Error(\n              `\"${menuName}\" in path \"${pathSoFar}\" is not a subMenu`,\n            )\n          }\n          subMenu = sm.subMenu\n        })\n        return subMenu.push(menuItem)\n      },\n      /**\n       * #action\n       * Insert a menu item into a sub-menu\n       *\n       * @param menuPath - Path to the sub-menu to add to, starting with the\n       * top-level menu (e.g. `['File', 'Insert']`).\n       *\n       * @param menuItem - Menu item to insert.\n       *\n       * @param position - Position to insert menu item. If negative, counts\n       * from the end, e.g. `insertMenu('My Menu', -1)` will insert the menu as\n       * the second-to-last one.\n       *\n       * @returns The new length of the sub-menu\n       */\n      insertInSubMenu(\n        menuPath: string[],\n        menuItem: MenuItem,\n        position: number,\n      ) {\n        let topMenu = self.menus.find(m => m.label === menuPath[0])\n        if (!topMenu) {\n          const idx = this.appendMenu(menuPath[0]!)\n          topMenu = self.menus[idx - 1]!\n        }\n        let { menuItems: subMenu } = topMenu\n        const pathSoFar = [menuPath[0]]\n        menuPath.slice(1).forEach(menuName => {\n          pathSoFar.push(menuName)\n          let sm = subMenu.find(mi => 'label' in mi && mi.label === menuName)\n          if (!sm) {\n            const idx = subMenu.push({ label: menuName, subMenu: [] })\n            sm = subMenu[idx - 1]!\n          }\n          if (!('subMenu' in sm)) {\n            throw new Error(\n              `\"${menuName}\" in path \"${pathSoFar}\" is not a subMenu`,\n            )\n          }\n          subMenu = sm.subMenu\n        })\n        subMenu.splice(position, 0, menuItem)\n        return subMenu.length\n      },\n    }\n  })\n}\n","/** MST props, views, actions, etc related to managing connections */\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  TrackViewModel,\n  getContainingView,\n  isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport {\n  IAnyStateTreeNode,\n  Instance,\n  getMembers,\n  getParent,\n  getSnapshot,\n  getType,\n  isModelType,\n  isReferenceType,\n  types,\n  walk,\n} from 'mobx-state-tree'\n\nimport type { BaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\n// locals\nimport { isBaseSession } from './BaseSession'\n\nexport interface ReferringNode {\n  node: IAnyStateTreeNode\n  key: string\n}\n\n/**\n * #stateModel ReferenceManagementSessionMixin\n */\nexport function ReferenceManagementSessionMixin(_pluginManager: PluginManager) {\n  return types\n    .model('ReferenceManagementSessionMixin', {})\n    .views(self => ({\n      /**\n       * #method\n       * See if any MST nodes currently have a types.reference to this object.\n       *\n       * @param object - object\n       * @returns An array where the first element is the node referring\n       * to the object and the second element is they property name the node is\n       * using to refer to the object\n       */\n      getReferring(object: IAnyStateTreeNode) {\n        const refs: ReferringNode[] = []\n        walk(getParent(self), node => {\n          if (isModelType(getType(node))) {\n            const members = getMembers(node)\n            Object.entries(members.properties).forEach(([key, value]) => {\n              if (isReferenceType(value) && node[key] === object) {\n                refs.push({ node, key })\n              }\n            })\n          }\n        })\n        return refs\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      removeReferring(\n        referring: ReferringNode[],\n        track: BaseTrackConfig,\n        callbacks: ((arg: string) => void)[],\n        dereferenceTypeCount: Record<string, number>,\n      ) {\n        referring.forEach(({ node }) => {\n          let dereferenced = false\n          try {\n            // If a view is referring to the track config, remove the track\n            // from the view\n            const type = 'open track(s)'\n            const view = getContainingView(node) as TrackViewModel\n            callbacks.push(() => {\n              view.hideTrack(track.trackId)\n            })\n            dereferenced = true\n            if (!dereferenceTypeCount[type]) {\n              dereferenceTypeCount[type] = 0\n            }\n            dereferenceTypeCount[type] += 1\n          } catch (err1) {\n            // ignore\n          }\n\n          if (isSessionModelWithWidgets(self) && self.widgets.has(node.id)) {\n            // If a configuration editor widget has the track config\n            // open, close the widget\n            const type = 'configuration editor widget(s)'\n            if (isSessionModelWithWidgets(self)) {\n              callbacks.push(() => {\n                self.hideWidget(node)\n              })\n            }\n            dereferenced = true\n            if (!dereferenceTypeCount[type]) {\n              dereferenceTypeCount[type] = 0\n            }\n            dereferenceTypeCount[type] += 1\n          }\n          if (!dereferenced) {\n            throw new Error(\n              `Error when closing this connection, the following node is still referring to a track configuration: ${JSON.stringify(\n                getSnapshot(node),\n              )}`,\n            )\n          }\n        })\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that manages multiple views */\nexport type SessionWithReferenceManagementType = ReturnType<\n  typeof ReferenceManagementSessionMixin\n>\n\n/** Instance of a session with MST reference management (`getReferring()`, `removeReferring()`)  */\nexport type SessionWithReferenceManagement =\n  Instance<SessionWithReferenceManagementType>\n\n/** Type guard for SessionWithReferenceManagement */\nexport function isSessionWithReferenceManagement(\n  thing: IAnyStateTreeNode,\n): thing is SessionWithReferenceManagement {\n  return (\n    isBaseSession(thing) &&\n    'getReferring' in thing &&\n    typeof thing.getReferring === 'function' &&\n    'removeReferring' in thing &&\n    typeof thing.removeReferring === 'function'\n  )\n}\n","import {\n  IAnyStateTreeNode,\n  Instance,\n  addDisposer,\n  isAlive,\n  types,\n} from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { localStorageGetItem, localStorageSetItem } from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\nimport {\n  AnyConfigurationModel,\n  isConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { isBaseSession } from './BaseSession'\n\nconst minDrawerWidth = 128\n\n/**\n * #stateModel DrawerWidgetSessionMixin\n */\nexport function DrawerWidgetSessionMixin(pluginManager: PluginManager) {\n  const widgetStateModelType = pluginManager.pluggableMstType(\n    'widget',\n    'stateModel',\n  )\n  type WidgetStateModel = Instance<typeof widgetStateModelType>\n  return types\n    .model({\n      /**\n       * #property\n       */\n      drawerPosition: types.optional(\n        types.string,\n        () => localStorageGetItem('drawerPosition') || 'right',\n      ),\n      /**\n       * #property\n       */\n      drawerWidth: types.optional(\n        types.refinement(types.integer, width => width >= minDrawerWidth),\n        384,\n      ),\n      /**\n       * #property\n       */\n      widgets: types.map(widgetStateModelType),\n      /**\n       * #property\n       */\n      activeWidgets: types.map(types.safeReference(widgetStateModelType)),\n\n      /**\n       * #property\n       */\n      minimized: types.optional(types.boolean, false),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get visibleWidget() {\n        if (isAlive(self)) {\n          // returns most recently added item in active widgets\n          return [...self.activeWidgets.values()][self.activeWidgets.size - 1]\n        }\n        return undefined\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setDrawerPosition(arg: string) {\n        self.drawerPosition = arg\n        localStorage.setItem('drawerPosition', arg)\n      },\n\n      /**\n       * #action\n       */\n      updateDrawerWidth(drawerWidth: number) {\n        if (drawerWidth === self.drawerWidth) {\n          return self.drawerWidth\n        }\n        let newDrawerWidth = drawerWidth\n        if (newDrawerWidth < minDrawerWidth) {\n          newDrawerWidth = minDrawerWidth\n        }\n        self.drawerWidth = newDrawerWidth\n        return newDrawerWidth\n      },\n\n      /**\n       * #action\n       */\n      resizeDrawer(distance: number) {\n        if (self.drawerPosition === 'left') {\n          distance *= -1\n        }\n        const oldDrawerWidth = self.drawerWidth\n        const newDrawerWidth = this.updateDrawerWidth(oldDrawerWidth - distance)\n        return oldDrawerWidth - newDrawerWidth\n      },\n\n      /**\n       * #action\n       */\n      addWidget(\n        typeName: string,\n        id: string,\n        initialState = {},\n        conf?: unknown,\n      ) {\n        const typeDefinition = pluginManager.getElementType('widget', typeName)\n        if (!typeDefinition) {\n          throw new Error(`unknown widget type ${typeName}`)\n        }\n        const data = {\n          ...initialState,\n          id,\n          type: typeName,\n          configuration: conf || { type: typeName },\n        }\n        self.widgets.set(id, data)\n        return self.widgets.get(id)\n      },\n\n      /**\n       * #action\n       */\n      showWidget(widget: WidgetStateModel) {\n        if (self.activeWidgets.has(widget.id)) {\n          self.activeWidgets.delete(widget.id)\n        }\n        self.activeWidgets.set(widget.id, widget)\n        self.minimized = false\n      },\n\n      /**\n       * #action\n       */\n      hasWidget(widget: WidgetStateModel) {\n        return self.activeWidgets.has(widget.id)\n      },\n\n      /**\n       * #action\n       */\n      hideWidget(widget: WidgetStateModel) {\n        self.activeWidgets.delete(widget.id)\n      },\n\n      /**\n       * #action\n       */\n      minimizeWidgetDrawer() {\n        self.minimized = true\n      },\n      /**\n       * #action\n       */\n      showWidgetDrawer() {\n        self.minimized = false\n      },\n      /**\n       * #action\n       */\n      hideAllWidgets() {\n        self.activeWidgets.clear()\n      },\n\n      /**\n       * #action\n       * opens a configuration editor to configure the given thing,\n       * and sets the current task to be configuring it\n       * @param configuration -\n       */\n      editConfiguration(configuration: AnyConfigurationModel) {\n        if (!isConfigurationModel(configuration)) {\n          throw new Error(\n            'must pass a configuration model to editConfiguration',\n          )\n        }\n        const editor = this.addWidget(\n          'ConfigurationEditorWidget',\n          'configEditor',\n          { target: configuration },\n        )\n        this.showWidget(editor)\n      },\n\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            localStorageSetItem('drawerPosition', self.drawerPosition)\n          }),\n        )\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that manages drawer widgets */\nexport type SessionWithDrawerWidgetsType = ReturnType<\n  typeof DrawerWidgetSessionMixin\n>\n\n/** Instance of a session that manages drawer widgets */\nexport type SessionWithDrawerWidgets = Instance<SessionWithDrawerWidgetsType>\n\n/** Type guard for SessionWithDrawerWidgets */\nexport function isSessionWithDrawerWidgets(\n  session: IAnyStateTreeNode,\n): session is SessionWithDrawerWidgets {\n  return (\n    isBaseSession(session) &&\n    'widgets' in session &&\n    'drawerPosition' in session\n  )\n}\n","import React, { lazy } from 'react'\nimport { types } from 'mobx-state-tree'\nimport { observable } from 'mobx'\n\n// locals\nimport { NotificationLevel, SnackAction } from '../util/types'\n\n// icons\nimport Report from '@mui/icons-material/Report'\n\n// lazies\nconst ErrorMessageStackTraceDialog = lazy(\n  () => import('@jbrowse/core/ui/ErrorMessageStackTraceDialog'),\n)\n\nexport interface SnackbarMessage {\n  message: string\n  level?: NotificationLevel\n  action?: SnackAction\n}\n\n/**\n * #stateModel SnackbarModel\n * #category session\n */\nexport default function SnackbarModel() {\n  return types\n    .model({})\n    .volatile(() => ({\n      /**\n       * #volatile\n       */\n      snackbarMessages: observable.array<SnackbarMessage>(),\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get snackbarMessageSet() {\n        return new Map(self.snackbarMessages.map(s => [s.message, s]))\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      notify(message: string, level?: NotificationLevel, action?: SnackAction) {\n        this.pushSnackbarMessage(message, level, action)\n        if (level === 'info' || level === 'success') {\n          setTimeout(() => {\n            this.removeSnackbarMessage(message)\n          }, 5000)\n        }\n      },\n\n      /**\n       * #action\n       */\n      notifyError(errorMessage: string, error?: unknown, extra?: unknown) {\n        this.notify(errorMessage, 'error', {\n          name: <Report />,\n          onClick: () => {\n            // @ts-expect-error\n            self.queueDialog((onClose: () => void) => [\n              ErrorMessageStackTraceDialog,\n              {\n                onClose,\n                error,\n                extra,\n              },\n            ])\n          },\n        })\n      },\n      /**\n       * #action\n       */\n      pushSnackbarMessage(\n        message: string,\n        level?: NotificationLevel,\n        action?: SnackAction,\n      ) {\n        if (action || !self.snackbarMessageSet.has(message)) {\n          self.snackbarMessages.push({ message, level, action })\n        }\n      },\n      /**\n       * #action\n       */\n      popSnackbarMessage() {\n        return self.snackbarMessages.pop()\n      },\n      /**\n       * #action\n       */\n      removeSnackbarMessage(message: string) {\n        const element = self.snackbarMessageSet.get(message)\n        if (element !== undefined) {\n          self.snackbarMessages.remove(element)\n        }\n      },\n    }))\n}\n","import { lazy } from 'react'\nimport clone from 'clone'\nimport { PluginDefinition } from '@jbrowse/core/PluginLoader'\nimport {\n  getConf,\n  AnyConfigurationModel,\n  readConfObject,\n  AnyConfiguration,\n} from '@jbrowse/core/configuration'\nimport { AssemblyManager, JBrowsePlugin } from '@jbrowse/core/util/types'\nimport { localStorageGetItem, localStorageSetItem } from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\nimport {\n  addDisposer,\n  cast,\n  getParent,\n  getSnapshot,\n  types,\n  SnapshotIn,\n  Instance,\n} from 'mobx-state-tree'\nimport TextSearchManager from '@jbrowse/core/TextSearch/TextSearchManager'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  DialogQueueSessionMixin,\n  DrawerWidgetSessionMixin,\n  MultipleViewsSessionMixin,\n  ReferenceManagementSessionMixin,\n  SessionTracksManagerSessionMixin,\n  ThemeManagerSessionMixin,\n} from '@jbrowse/product-core'\nimport {\n  AppFocusMixin,\n  SessionAssembliesMixin,\n  TemporaryAssembliesMixin,\n} from '@jbrowse/app-core'\nimport { BaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\nimport { BaseConnectionConfigModel } from '@jbrowse/core/pluggableElementTypes/models/baseConnectionConfig'\nimport SnackbarModel from '@jbrowse/core/ui/SnackbarModel'\n\n// icons\nimport SettingsIcon from '@mui/icons-material/Settings'\nimport CopyIcon from '@mui/icons-material/FileCopy'\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport InfoIcon from '@mui/icons-material/Info'\n\n// locals\nimport { WebSessionConnectionsMixin } from '../SessionConnections'\n\n// lazies\nconst AboutDialog = lazy(() => import('./AboutDialog'))\n\n/**\n * #stateModel BaseWebSession\n * used for \"web based\" products, including jbrowse-web and react-app\n * composed of\n * - [ReferenceManagementSessionMixin](../referencemanagementsessionmixin)\n * - [DrawerWidgetSessionMixin](../drawerwidgetsessionmixin)\n * - [DialogQueueSessionMixin](../dialogqueuesessionmixin)\n * - [ThemeManagerSessionMixin](../thememanagersessionmixin)\n * - [MultipleViewsSessionMixin](../multipleviewssessionmixin)\n * - [SessionTracksManagerSessionMixin](../sessiontracksmanagersessionmixin)\n * - [SessionAssembliesMixin](../sessionassembliesmixin)\n * - [TemporaryAssembliesMixin](../temporaryassembliesmixin)\n * - [WebSessionConnectionsMixin](../websessionconnectionsmixin)\n * - [AppFocusMixin](../appfocusmixin)\n */\nexport function BaseWebSession({\n  pluginManager,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: BaseAssemblyConfigSchema\n}) {\n  const sessionModel = types\n    .compose(\n      'WebCoreSessionModel',\n      types.compose(\n        'WebCoreSessionModelGroupA',\n        ReferenceManagementSessionMixin(pluginManager),\n        DrawerWidgetSessionMixin(pluginManager),\n        DialogQueueSessionMixin(pluginManager),\n        ThemeManagerSessionMixin(pluginManager),\n        MultipleViewsSessionMixin(pluginManager),\n      ),\n      types.compose(\n        'WebCoreSessionModelGroupB',\n        SessionTracksManagerSessionMixin(pluginManager),\n        SessionAssembliesMixin(pluginManager, assemblyConfigSchema),\n        TemporaryAssembliesMixin(pluginManager, assemblyConfigSchema),\n        WebSessionConnectionsMixin(pluginManager),\n        AppFocusMixin(),\n        SnackbarModel(),\n      ),\n    )\n    .props({\n      /**\n       * #property\n       */\n      margin: 0,\n      /**\n       * #property\n       */\n      sessionPlugins: types.array(types.frozen()),\n    })\n    .volatile((/* self */) => ({\n      /**\n       * #volatile\n       */\n      sessionThemeName: localStorageGetItem('themeName') || 'default',\n      /**\n       * #volatile\n       * this is the current \"task\" that is being performed in the UI.\n       * this is usually an object of the form\n       * `{ taskName: \"configure\", target: thing_being_configured }`\n       */\n      task: undefined,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get tracks(): AnyConfigurationModel[] {\n        return [...self.sessionTracks, ...self.jbrowse.tracks]\n      },\n      /**\n       * #getter\n       */\n      get root() {\n        return getParent<any>(self)\n      },\n      /**\n       * #getter\n       * list of sessionAssemblies and jbrowse config assemblies, does not\n       * include temporaryAssemblies. basically the list to be displayed in a\n       * AssemblySelector dropdown\n       */\n      get assemblies(): Instance<BaseAssemblyConfigSchema[]> {\n        return [...self.jbrowse.assemblies, ...self.sessionAssemblies]\n      },\n      /**\n       * #getter\n       * list of config connections and session connections\n       */\n      get connections(): BaseConnectionConfigModel[] {\n        return [...self.jbrowse.connections, ...self.sessionConnections]\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setName(str: string) {\n        self.name = str\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       * list of sessionAssemblies and jbrowse config assemblies, does not\n       * include temporaryAssemblies. basically the list to be displayed in a\n       * AssemblySelector dropdown\n       */\n      get assemblyNames() {\n        return self.assemblies.map(f => readConfObject(f, 'name') as string)\n      },\n      /**\n       * #getter\n       */\n      get version() {\n        return self.root.version\n      },\n      /**\n       * #getter\n       */\n      get shareURL() {\n        return getConf(self.jbrowse, 'shareURL')\n      },\n      /**\n       * #getter\n       */\n      get textSearchManager(): TextSearchManager {\n        return self.root.textSearchManager\n      },\n      /**\n       * #getter\n       */\n      get assemblyManager(): AssemblyManager {\n        return self.root.assemblyManager\n      },\n      /**\n       * #getter\n       */\n      get savedSessions() {\n        return self.root.savedSessions\n      },\n      /**\n       * #getter\n       */\n      get previousAutosaveId() {\n        return self.root.previousAutosaveId\n      },\n      /**\n       * #getter\n       */\n      get savedSessionNames() {\n        return self.root.savedSessionNames\n      },\n      /**\n       * #getter\n       */\n      get history() {\n        return self.root.history\n      },\n      /**\n       * #getter\n       */\n      get menus() {\n        return self.root.menus\n      },\n      /**\n       * #method\n       */\n      renderProps() {\n        return {\n          theme: self.theme,\n          highResolutionScaling: getConf(self, 'highResolutionScaling'),\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      addAssemblyConf(conf: AnyConfiguration) {\n        self.jbrowse.addAssemblyConf(conf)\n      },\n      /**\n       * #action\n       */\n      addSessionPlugin(plugin: JBrowsePlugin) {\n        if (self.sessionPlugins.some(p => p.name === plugin.name)) {\n          throw new Error('session plugin cannot be installed twice')\n        }\n        self.sessionPlugins.push(plugin)\n        self.root.setPluginsUpdated(true)\n      },\n\n      /**\n       * #action\n       */\n      removeSessionPlugin(pluginDefinition: PluginDefinition) {\n        self.sessionPlugins = cast(\n          self.sessionPlugins.filter(\n            plugin =>\n              // @ts-expect-error\n              plugin.url !== pluginDefinition.url ||\n              // @ts-expect-error\n              plugin.umdUrl !== pluginDefinition.umdUrl ||\n              // @ts-expect-error\n              plugin.cjsUrl !== pluginDefinition.cjsUrl ||\n              // @ts-expect-error\n              plugin.esmUrl !== pluginDefinition.esmUrl,\n          ),\n        )\n        getParent<any>(self).setPluginsUpdated(true)\n      },\n\n      /**\n       * #action\n       */\n      addSavedSession(sessionSnapshot: SnapshotIn<typeof self>) {\n        return self.root.addSavedSession(sessionSnapshot)\n      },\n\n      /**\n       * #action\n       */\n      removeSavedSession(sessionSnapshot: { name: string }) {\n        return self.root.removeSavedSession(sessionSnapshot)\n      },\n\n      /**\n       * #action\n       */\n      renameCurrentSession(sessionName: string) {\n        return self.root.renameCurrentSession(sessionName)\n      },\n\n      /**\n       * #action\n       */\n      duplicateCurrentSession() {\n        return self.root.duplicateCurrentSession()\n      },\n      /**\n       * #action\n       */\n      activateSession(sessionName: string) {\n        return self.root.activateSession(sessionName)\n      },\n\n      /**\n       * #action\n       */\n      setDefaultSession() {\n        return self.root.setDefaultSession()\n      },\n\n      /**\n       * #action\n       */\n      saveSessionToLocalStorage() {\n        return self.root.saveSessionToLocalStorage()\n      },\n\n      /**\n       * #action\n       */\n      loadAutosaveSession() {\n        return self.root.loadAutosaveSession()\n      },\n\n      /**\n       * #action\n       */\n      setSession(sessionSnapshot: SnapshotIn<typeof self>) {\n        return self.root.setSession(sessionSnapshot)\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      editTrackConfiguration(configuration: AnyConfigurationModel) {\n        const { adminMode, sessionTracks } = self\n        if (!adminMode && !sessionTracks.includes(configuration)) {\n          throw new Error(\"Can't edit the configuration of a non-session track\")\n        }\n        self.editConfiguration(configuration)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      getTrackActionMenuItems(config: BaseTrackConfig) {\n        const { adminMode, sessionTracks } = self\n        const canEdit =\n          adminMode || sessionTracks.find(t => t.trackId === config.trackId)\n\n        // disable if it is a reference sequence track\n        const isRefSeq = config.type === 'ReferenceSequenceTrack'\n        return [\n          {\n            label: 'About track',\n            priority: 1002,\n            onClick: () => {\n              self.queueDialog(handleClose => [\n                AboutDialog,\n                { config, handleClose },\n              ])\n            },\n            icon: InfoIcon,\n          },\n          {\n            label: 'Settings',\n            priority: 1001,\n            disabled: !canEdit,\n            onClick: () => {\n              self.editTrackConfiguration(config)\n            },\n            icon: SettingsIcon,\n          },\n          {\n            label: 'Delete track',\n            priority: 1000,\n            disabled: !canEdit || isRefSeq,\n            onClick: () => self.deleteTrackConf(config),\n            icon: DeleteIcon,\n          },\n          {\n            label: 'Copy track',\n            priority: 999,\n            disabled: isRefSeq,\n            onClick: () => {\n              interface Display {\n                displayId: string\n              }\n              const snap = clone(getSnapshot(config)) as {\n                [key: string]: unknown\n                displays: Display[]\n              }\n              const now = Date.now()\n              snap.trackId += `-${now}`\n              snap.displays.forEach(display => {\n                display.displayId += `-${now}`\n              })\n              // the -sessionTrack suffix to trackId is used as metadata for\n              // the track selector to store the track in a special category,\n              // and default category is also cleared\n              if (!self.adminMode) {\n                snap.trackId += '-sessionTrack'\n                snap.category = undefined\n              }\n              snap.name += ' (copy)'\n              self.addTrackConf(snap)\n            },\n            icon: CopyIcon,\n          },\n        ]\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            localStorageSetItem('drawerPosition', self.drawerPosition)\n            localStorageSetItem('themeName', self.themeName)\n          }),\n        )\n      },\n    }))\n\n  const extendedSessionModel = pluginManager.evaluateExtensionPoint(\n    'Core-extendSession',\n    sessionModel,\n  ) as typeof sessionModel\n\n  return types.snapshotProcessor(extendedSessionModel, {\n    // @ts-expect-error\n    preProcessor(snapshot) {\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      const { connectionInstances, ...rest } = snapshot || {}\n      // connectionInstances schema changed from object to an array, so any\n      // old connectionInstances as object is in snapshot, filter it out\n      // https://github.com/GMOD/jbrowse-components/issues/1903\n      return !Array.isArray(connectionInstances) ? rest : snapshot\n    },\n  })\n}\n","/** MST mixin for managing a queue of dialogs at the level of the session */\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { DialogComponentType } from '@jbrowse/core/util'\nimport { IAnyStateTreeNode, Instance, types } from 'mobx-state-tree'\nimport { isBaseSession } from './BaseSession'\n\n/**\n * #stateModel DialogQueueSessionMixin\n */\nexport function DialogQueueSessionMixin(_pluginManager: PluginManager) {\n  return types\n    .model('DialogQueueSessionMixin', {})\n    .volatile(() => ({\n      queueOfDialogs: [] as [DialogComponentType, unknown][],\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get DialogComponent() {\n        return self.queueOfDialogs[0]?.[0]\n      },\n      /**\n       * #getter\n       */\n      get DialogProps() {\n        return self.queueOfDialogs[0]?.[1]\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      removeActiveDialog() {\n        self.queueOfDialogs = self.queueOfDialogs.slice(1)\n      },\n      /**\n       * #action\n       */\n      queueDialog(\n        cb: (doneCallback: () => void) => [DialogComponentType, unknown],\n      ) {\n        const [component, props] = cb(() => {\n          this.removeActiveDialog()\n        })\n        self.queueOfDialogs = [...self.queueOfDialogs, [component, props]]\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that has `queueOfDialogs`, etc. */\nexport type SessionWithDialogsType = ReturnType<typeof DialogQueueSessionMixin>\n\n/** Instance of a session that has dialogs */\nexport type SessionWithDialogs = Instance<SessionWithDialogsType>\n\n/** Type guard for SessionWithDialogs */\nexport function isSessionWithDialogs(\n  session: IAnyStateTreeNode,\n): session is SessionWithDialogs {\n  return isBaseSession(session) && 'queueOfDialogs' in session\n}\n","import {\n  IAnyStateTreeNode,\n  Instance,\n  addDisposer,\n  types,\n} from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { createJBrowseTheme, defaultThemes } from '@jbrowse/core/ui'\nimport { localStorageGetItem, localStorageSetItem } from '@jbrowse/core/util'\nimport { ThemeOptions } from '@mui/material'\nimport { autorun } from 'mobx'\n\n// locals\nimport { BaseSession } from './BaseSession'\n\ntype ThemeMap = Record<string, ThemeOptions>\n\n/**\n * #stateModel ThemeManagerSessionMixin\n */\nexport function ThemeManagerSessionMixin(_pluginManager: PluginManager) {\n  return types\n    .model({})\n    .volatile(() => ({\n      sessionThemeName: localStorageGetItem('themeName') || 'default',\n    }))\n    .views(s => ({\n      /**\n       * #method\n       */\n      allThemes(): ThemeMap {\n        const self = s as typeof s & BaseSession\n        const extraThemes = getConf(self.jbrowse, 'extraThemes')\n        return { ...defaultThemes, ...extraThemes }\n      },\n      /**\n       * #getter\n       */\n      get themeName() {\n        const { sessionThemeName } = s\n        const all = this.allThemes()\n        return all[sessionThemeName] ? sessionThemeName : 'default'\n      },\n      /**\n       * #getter\n       */\n      get theme() {\n        const self = s as typeof s & BaseSession\n        const configTheme = getConf(self.jbrowse, 'theme')\n        const all = this.allThemes()\n        return createJBrowseTheme(configTheme, all, this.themeName)\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setThemeName(name: string) {\n        self.sessionThemeName = name\n      },\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            localStorageSetItem('themeName', self.themeName)\n          }),\n        )\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that supports theming */\nexport type SessionWithThemesType = ReturnType<typeof ThemeManagerSessionMixin>\n\n/** Instance of a session that has theming support */\nexport type SessionWithThemes = Instance<SessionWithThemesType>\n\n/** Type guard for SessionWithThemes */\nexport function isSessionWithThemes(\n  session: IAnyStateTreeNode,\n): session is SessionWithThemes {\n  return 'theme' in session\n}\n","import {\n  IAnyStateTreeNode,\n  Instance,\n  cast,\n  getSnapshot,\n  types,\n} from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { Region } from '@jbrowse/core/util'\nimport { DrawerWidgetSessionMixin } from './DrawerWidgets'\nimport { IBaseViewModel } from '@jbrowse/core/pluggableElementTypes'\nimport { IBaseViewModelWithDisplayedRegions } from '@jbrowse/core/pluggableElementTypes/models/BaseViewModel'\n\n// locals\nimport { BaseSessionModel, isBaseSession } from './BaseSession'\n\n/**\n * #stateModel MultipleViewsSessionMixin\n * composed of\n * - [BaseSessionModel](../basesessionmodel)\n * - [DrawerWidgetSessionMixin](../drawerwidgetsessionmixin)\n */\nexport function MultipleViewsSessionMixin(pluginManager: PluginManager) {\n  return types\n    .compose(\n      BaseSessionModel(pluginManager),\n      DrawerWidgetSessionMixin(pluginManager),\n    )\n    .props({\n      /**\n       * #property\n       */\n      views: types.array(pluginManager.pluggableMstType('view', 'stateModel')),\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      moveViewDown(id: string) {\n        const idx = self.views.findIndex(v => v.id === id)\n        if (idx !== -1 && idx < self.views.length - 1) {\n          self.views.splice(idx, 2, self.views[idx + 1], self.views[idx])\n        }\n      },\n      /**\n       * #action\n       */\n      moveViewUp(id: string) {\n        const idx = self.views.findIndex(view => view.id === id)\n        if (idx > 0) {\n          self.views.splice(idx - 1, 2, self.views[idx], self.views[idx - 1])\n        }\n      },\n      /**\n       * #action\n       */\n      moveViewToTop(id: string) {\n        const idx = self.views.findIndex(view => view.id === id)\n        self.views = cast([\n          self.views[idx],\n          ...self.views.filter(view => view.id !== id),\n        ])\n      },\n\n      /**\n       * #action\n       */\n      moveViewToBottom(id: string) {\n        const idx = self.views.findIndex(view => view.id === id)\n        self.views = cast([\n          ...self.views.filter(view => view.id !== id),\n          self.views[idx],\n        ])\n      },\n\n      /**\n       * #action\n       */\n      addView(typeName: string, initialState = {}) {\n        const typeDefinition = pluginManager.getElementType('view', typeName)\n        if (!typeDefinition) {\n          throw new Error(`unknown view type ${typeName}`)\n        }\n\n        const length = self.views.push({\n          ...initialState,\n          type: typeName,\n        })\n        return self.views[length - 1]\n      },\n\n      /**\n       * #action\n       */\n      removeView(view: IBaseViewModel) {\n        for (const [, widget] of self.activeWidgets) {\n          if (widget.view && widget.view.id === view.id) {\n            self.hideWidget(widget)\n          }\n        }\n        self.views.remove(view)\n      },\n\n      /**\n       * #action\n       */\n      addLinearGenomeViewOfAssembly(assemblyName: string, initialState = {}) {\n        return this.addViewOfAssembly(\n          'LinearGenomeView',\n          assemblyName,\n          initialState,\n        )\n      },\n\n      /**\n       * #action\n       */\n      addViewOfAssembly(\n        viewType: string,\n        assemblyName: string,\n        initialState: Record<string, unknown> = {},\n      ) {\n        const asm = self.assemblies.find(\n          s => readConfObject(s, 'name') === assemblyName,\n        )\n        if (!asm) {\n          throw new Error(\n            `Could not add view of assembly \"${assemblyName}\", assembly name not found`,\n          )\n        }\n        return this.addView(viewType, {\n          ...initialState,\n          displayRegionsFromAssemblyName: readConfObject(asm, 'name'),\n        })\n      },\n\n      /**\n       * #action\n       */\n      addViewFromAnotherView(\n        viewType: string,\n        otherView: IBaseViewModelWithDisplayedRegions,\n        initialState: { displayedRegions?: Region[] } = {},\n      ) {\n        const state = { ...initialState }\n        state.displayedRegions = getSnapshot(otherView.displayedRegions)\n        return this.addView(viewType, state)\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that manages multiple views */\nexport type SessionWithMultipleViewsType = ReturnType<\n  typeof MultipleViewsSessionMixin\n>\n\n/** Instance of a session with multiple views */\nexport type SessionWithMultipleViews = Instance<SessionWithMultipleViewsType>\n\n/** Type guard for SessionWithMultipleViews */\nexport function isSessionWithMultipleViews(\n  session: IAnyStateTreeNode,\n): session is SessionWithMultipleViews {\n  return isBaseSession(session) && 'views' in session\n}\n","import { IAnyStateTreeNode, Instance, types } from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  AnyConfiguration,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\n\n// locals\nimport { TracksManagerSessionMixin } from './Tracks'\nimport { isBaseSession } from './BaseSession'\n\n/**\n * #stateModel SessionTracksManagerSessionMixin\n */\nexport function SessionTracksManagerSessionMixin(pluginManager: PluginManager) {\n  return TracksManagerSessionMixin(pluginManager)\n    .named('SessionTracksManagerSessionMixin')\n    .props({\n      /**\n       * #property\n       */\n      sessionTracks: types.array(\n        pluginManager.pluggableConfigSchemaType('track'),\n      ),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get tracks(): AnyConfigurationModel[] {\n        return [...self.sessionTracks, ...self.jbrowse.tracks]\n      },\n    }))\n    .actions(self => {\n      const {\n        addTrackConf: superAddTrackConf,\n        deleteTrackConf: superDeleteTrackConf,\n      } = self\n      return {\n        /**\n         * #action\n         */\n        addTrackConf(trackConf: AnyConfiguration) {\n          if (self.adminMode) {\n            return superAddTrackConf(trackConf)\n          }\n\n          const { trackId, type } = trackConf as {\n            type: string\n            trackId: string\n          }\n          if (!type) {\n            throw new Error(`unknown track type ${type}`)\n          }\n          const track = self.sessionTracks.find(t => t.trackId === trackId)\n          if (track) {\n            return track\n          }\n          const length = self.sessionTracks.push(trackConf)\n          return self.sessionTracks[length - 1]\n        },\n\n        /**\n         * #action\n         */\n        deleteTrackConf(trackConf: AnyConfigurationModel) {\n          // try to delete it in the main config if in admin mode\n          const found = superDeleteTrackConf(trackConf)\n          if (found) {\n            return found\n          }\n          // if not found or not in admin mode, try to delete it in the\n          // sessionTracks\n          const { trackId } = trackConf\n          const idx = self.sessionTracks.findIndex(t => t.trackId === trackId)\n          if (idx === -1) {\n            return undefined\n          }\n          return self.sessionTracks.splice(idx, 1)\n        },\n      }\n    })\n}\n\n/** Session mixin MST type for a session that has `sessionTracks` */\nexport type SessionWithSessionTracksType = ReturnType<\n  typeof SessionTracksManagerSessionMixin\n>\n\n/** Instance of a session that has `sessionTracks` */\nexport type SessionWithSessionTracks = Instance<SessionWithSessionTracksType>\n\n/** Type guard for SessionWithSessionTracks */\nexport function isSessionWithSessionTracks(\n  thing: IAnyStateTreeNode,\n): thing is SessionWithSessionTracks {\n  return isBaseSession(thing) && 'sessionTracks' in thing\n}\n","import { IAnyStateTreeNode, Instance, types } from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  AnyConfiguration,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { BaseSessionModel, isBaseSession } from './BaseSession'\nimport { ReferenceManagementSessionMixin } from './ReferenceManagement'\n\n/**\n * #stateModel TracksManagerSessionMixin\n * composed of\n * - BaseSessionModel\n * - ReferenceManagementSessionMixin\n */\nexport function TracksManagerSessionMixin(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'TracksManagerSessionMixin',\n      BaseSessionModel(pluginManager),\n      ReferenceManagementSessionMixin(pluginManager),\n    )\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get tracks(): AnyConfigurationModel[] {\n        return self.jbrowse.tracks\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      addTrackConf(trackConf: AnyConfiguration) {\n        return self.jbrowse.addTrackConf(trackConf)\n      },\n\n      /**\n       * #action\n       */\n      deleteTrackConf(trackConf: AnyConfigurationModel) {\n        const callbacksToDereferenceTrack: (() => void)[] = []\n        const dereferenceTypeCount: Record<string, number> = {}\n        const referring = self.getReferring(trackConf)\n        self.removeReferring(\n          referring,\n          trackConf,\n          callbacksToDereferenceTrack,\n          dereferenceTypeCount,\n        )\n        callbacksToDereferenceTrack.forEach(cb => {\n          cb()\n        })\n        if (self.adminMode) {\n          return self.jbrowse.deleteTrackConf(trackConf)\n        }\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that has tracks */\nexport type SessionWithTracksType = ReturnType<typeof TracksManagerSessionMixin>\n\n/** Instance of a session that has tracks */\nexport type SessionWithTracks = Instance<SessionWithTracksType>\n\n/** Type guard for SessionWithTracks */\nexport function isSessionWithTracks(\n  thing: IAnyStateTreeNode,\n): thing is SessionWithTracks {\n  return isBaseSession(thing) && 'tracks' in thing\n}\n","import { types } from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfiguration } from '@jbrowse/core/configuration'\nimport { BaseSession } from '@jbrowse/product-core'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\n\n/**\n * #stateModel SessionAssembliesMixin\n * #category root\n */\nexport function SessionAssembliesMixin(\n  pluginManager: PluginManager,\n  assemblyConfigSchemasType: BaseAssemblyConfigSchema,\n) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      sessionAssemblies: types.array(assemblyConfigSchemasType),\n    })\n    .actions(s => {\n      const self = s as typeof s & BaseSession\n      return {\n        /**\n         * #action\n         */\n        addSessionAssembly(conf: AnyConfiguration) {\n          const asm = self.sessionAssemblies.find(f => f.name === conf.name)\n          if (asm) {\n            console.warn(`Assembly ${conf.name} already exists`)\n            return asm\n          }\n          const length = self.sessionAssemblies.push(conf)\n          return self.sessionAssemblies[length - 1]\n        },\n\n        /**\n         * #action\n         */\n        removeSessionAssembly(assemblyName: string) {\n          const elt = self.sessionAssemblies.find(a => a.name === assemblyName)\n          if (elt) {\n            self.sessionAssemblies.remove(elt)\n          }\n        },\n      }\n    })\n}\n","import { types } from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfiguration } from '@jbrowse/core/configuration'\nimport { BaseSession } from '@jbrowse/product-core'\n\n/**\n * #stateModel TemporaryAssembliesMixin\n * #category root\n */\nexport function TemporaryAssembliesMixin(\n  pluginManager: PluginManager,\n  assemblyConfigSchemasType = types.frozen(),\n) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      temporaryAssemblies: types.array(assemblyConfigSchemasType),\n    })\n\n    .actions(s => {\n      const self = s as typeof s & BaseSession\n      return {\n        /**\n         * #action\n         * used for read vs ref type assemblies.\n         */\n        addTemporaryAssembly(conf: AnyConfiguration) {\n          const asm = self.temporaryAssemblies.find(f => f.name === conf.name)\n          if (asm) {\n            console.warn(`Assembly ${conf.name} was already existing`)\n            return asm\n          }\n          const length = self.temporaryAssemblies.push(conf)\n          return self.temporaryAssemblies[length - 1]\n        },\n\n        /**\n         * #action\n         */\n        removeTemporaryAssembly(name: string) {\n          const elt = self.temporaryAssemblies.find(a => a.name === name)\n          if (elt) {\n            self.temporaryAssemblies.remove(elt)\n          }\n        },\n      }\n    })\n}\n","import { types } from 'mobx-state-tree'\n\nimport {\n  ConnectionManagementSessionMixin,\n  SessionWithSessionTracks,\n} from '@jbrowse/product-core'\nimport type { BaseSession } from '@jbrowse/product-core'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { BaseConnectionConfigModel } from '@jbrowse/core/pluggableElementTypes/models/baseConnectionConfig'\n\n/**\n * #stateModel WebSessionConnectionsMixin\n * #category session\n */\nexport function WebSessionConnectionsMixin(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'SessionConnectionsManagement',\n      ConnectionManagementSessionMixin(pluginManager),\n      types.model({\n        /**\n         * #property\n         */\n        sessionConnections: types.array(\n          pluginManager.pluggableConfigSchemaType('connection'),\n        ),\n      }),\n    )\n    .actions(s => {\n      const self = s as typeof s & BaseSession & SessionWithSessionTracks\n      const superDeleteConnection = self.deleteConnection\n      const superAddConnectionConf = self.addConnectionConf\n      return {\n        addConnectionConf(connectionConf: BaseConnectionConfigModel) {\n          if (self.adminMode) {\n            return superAddConnectionConf(connectionConf)\n          }\n          const { connectionId, type } = connectionConf\n          if (!type) {\n            throw new Error(`unknown connection type ${type}`)\n          }\n          const connection = self.sessionTracks.find(\n            c => c.connectionId === connectionId,\n          )\n          if (connection) {\n            return connection\n          }\n          const length = self.sessionConnections.push(connectionConf)\n          return self.sessionConnections[length - 1]\n        },\n\n        deleteConnection(configuration: AnyConfigurationModel) {\n          let deletedConn: unknown\n          if (self.adminMode) {\n            deletedConn = superDeleteConnection(configuration)\n          }\n          if (!deletedConn) {\n            const { connectionId } = configuration\n            const idx = self.sessionConnections.findIndex(\n              c => c.connectionId === connectionId,\n            )\n            if (idx === -1) {\n              return undefined\n            }\n            return self.sessionConnections.splice(idx, 1)\n          }\n          return deletedConn\n        },\n      }\n    })\n}\n","import { types } from 'mobx-state-tree'\n\n/**\n * #stateModel AppFocusMixin\n * #category session\n */\nexport function AppFocusMixin() {\n  return types\n    .model({\n      /**\n       * #property\n       * used to keep track of which view is in focus\n       */\n      focusedViewId: types.maybe(types.string),\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setFocusedViewId(viewId: string) {\n        self.focusedViewId = viewId\n      },\n    }))\n}\n","import { AbstractSessionModel } from '@jbrowse/core/util/types'\nimport { Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\nimport { BaseWebSession } from '@jbrowse/web-core'\n\n/**\n * #stateModel JBrowseWebSessionModel\n * extends [BaseWebSession](../basewebsession)\n */\nexport default function sessionModelFactory({\n  pluginManager,\n  assemblyConfigSchema,\n}: {\n  pluginManager: PluginManager\n  assemblyConfigSchema: BaseAssemblyConfigSchema\n}) {\n  return BaseWebSession({ pluginManager, assemblyConfigSchema })\n}\n\nexport type WebSessionModelType = ReturnType<typeof sessionModelFactory>\nexport type WebSessionModel = Instance<WebSessionModelType>\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction z(x: Instance<WebSessionModelType>): AbstractSessionModel {\n  // this function's sole purpose is to get typescript to check\n  // that the session model implements all of AbstractSessionModel\n  return x\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { doAnalytics } from '@jbrowse/core/util/analytics'\n\n// locals\nimport JBrowseRootModelFactory from './rootModel/rootModel'\nimport sessionModelFactory from './sessionModel'\nimport corePlugins from './corePlugins'\nimport { SessionLoaderModel, loadSessionSpec } from './SessionLoader'\n\nexport function createPluginManager(self: SessionLoaderModel) {\n  // it is ready when a session has loaded and when there is no config\n  // error Assuming that the query changes self.sessionError or\n  // self.sessionSnapshot or self.blankSession\n  const pluginManager = new PluginManager([\n    ...corePlugins.map(P => ({\n      plugin: new P(),\n      metadata: { isCore: true },\n    })),\n    ...self.runtimePlugins.map(({ plugin: P, definition }) => ({\n      plugin: new P(),\n      definition,\n      metadata: {\n        // @ts-expect-error\n        url: definition.url,\n      },\n    })),\n    ...self.sessionPlugins.map(({ plugin: P, definition }) => ({\n      plugin: new P(),\n      definition,\n      metadata: {\n        // @ts-expect-error\n        url: definition.url,\n      },\n    })),\n  ])\n  pluginManager.createPluggableElements()\n  const RootModel = JBrowseRootModelFactory({\n    pluginManager,\n    sessionModelFactory,\n    adminMode: !!self.adminKey,\n  })\n\n  if (!self.configSnapshot) {\n    return undefined\n  }\n  const rootModel = RootModel.create(\n    {\n      jbrowse: self.configSnapshot,\n      configPath: self.configPath,\n    },\n    { pluginManager },\n  )\n\n  // @ts-expect-error\n  if (!self.configSnapshot.configuration?.rpc?.defaultDriver) {\n    rootModel.jbrowse.configuration.rpc.defaultDriver.set('WebWorkerRpcDriver')\n  }\n\n  let afterInitializedCb = () => {}\n\n  // in order: saves the previous autosave for recovery, tries to load the\n  // local session if session in query, or loads the default session\n  try {\n    if (self.sessionError) {\n      // eslint-disable-next-line @typescript-eslint/only-throw-error\n      throw self.sessionError\n    } else if (self.sessionSnapshot) {\n      rootModel.setSession(self.sessionSnapshot)\n    } else if (self.sessionSpec) {\n      // @ts-expect-error\n      afterInitializedCb = loadSessionSpec(self.sessionSpec, pluginManager)\n    } else if (rootModel.jbrowse.defaultSession?.views?.length) {\n      rootModel.setDefaultSession()\n    }\n  } catch (e) {\n    rootModel.setDefaultSession()\n    const str = `${e}`\n    const m = str.replace('[mobx-state-tree] ', '').replace(/\\(.+/, '')\n    const r = m.length > 1000 ? `${m.slice(0, 1000)}...see more in console` : m\n    const s = r.startsWith('Error:') ? r : `Error: ${r}`\n    rootModel.session?.notifyError(\n      `${s}. If you received this URL from another user, request that they send you a session generated with the \"Share\" button instead of copying and pasting their URL`,\n      self.sessionError,\n      self.sessionSnapshot,\n    )\n    console.error(e)\n  }\n\n  // send analytics\n  doAnalytics(rootModel, self.initialTimestamp, self.sessionQuery)\n\n  pluginManager.setRootModel(rootModel)\n  pluginManager.configure()\n  afterInitializedCb()\n  return pluginManager\n}\n","import { readConfObject } from '../configuration'\nimport { isElectron } from '../util'\n\ntype AnalyticsObj = Record<string, any>\n\ninterface Track {\n  type: string\n}\n\nexport async function writeAWSAnalytics(\n  rootModel: any,\n  initialTimeStamp: number,\n  sessionQuery?: string | null,\n) {\n  try {\n    const url = 'https://analytics.jbrowse.org/api/v1'\n\n    const multiAssemblyTracks = rootModel.jbrowse.tracks.filter(\n      (track: any) => (readConfObject(track, 'assemblyNames') || []).length > 1,\n    ).length\n\n    const savedSessionCount = Object.keys(localStorage).filter(name =>\n      name.includes('localSaved-'),\n    ).length\n\n    const { jbrowse: config, session, version: ver } = rootModel\n    const { tracks, assemblies, plugins } = config\n\n    // stats to be recorded in db\n    const stats: AnalyticsObj = {\n      ver,\n      'plugins-count': plugins?.length || 0,\n      'plugin-names': plugins?.map((p: any) => p.name).join(','),\n      'assemblies-count': assemblies.length,\n      'tracks-count': tracks.length,\n      'session-tracks-count': session?.sessionTracks.length || 0,\n      'open-views': session?.views.length || 0,\n      'synteny-tracks-count': multiAssemblyTracks,\n      'saved-sessions-count': savedSessionCount,\n\n      // field if existing session param in query before autogenerated param\n      'existing-session-param-type': sessionQuery?.split('-')[0] || 'none',\n\n      // screen geometry\n      'scn-h': window.screen.height,\n      'scn-w': window.screen.width,\n\n      // window geometry\n      'win-h': window.innerHeight,\n      'win-w': window.innerWidth,\n\n      electron: isElectron,\n      loadTime: (Date.now() - initialTimeStamp) / 1000,\n      jb2: true,\n    }\n\n    // stringifies the track type counts, gets processed in lambda\n    tracks.forEach((track: Track) => {\n      const key = `track-types-${track.type}`\n      stats[key] = stats[key] + 1 || 1\n    })\n\n    // stringifies the session track type counts, gets processed in lambda\n    session?.sessionTracks.forEach((track: Track) => {\n      const key = `sessionTrack-types-${track.type}`\n      stats[key] = stats[key] + 1 || 1\n    })\n\n    // put stats into a query string for get request\n    const qs = Object.keys(stats)\n      .map(key => `${key}=${stats[key]}`)\n      .join('&')\n\n    await fetch(`${url}?${qs}`)\n  } catch (e) {\n    console.error('Failed to write analytics to AWS.', e)\n  }\n}\n\nexport async function writeGAAnalytics(\n  rootModel: any,\n  initialTimestamp: number,\n) {\n  const jbrowseUser = 'UA-7115575-5'\n  const stats: AnalyticsObj = {\n    'tracks-count': rootModel.jbrowse.tracks.length, // this is all possible tracks\n    ver: rootModel.version,\n    electron: isElectron,\n    loadTime: Date.now() - initialTimestamp,\n    pluginNames:\n      rootModel.jbrowse.plugins?.map((plugin: any) => plugin.name) || '',\n  }\n\n  // create script\n  let analyticsScript =\n    \"(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\"\n  analyticsScript +=\n    '(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),'\n  analyticsScript +=\n    'm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)'\n  analyticsScript +=\n    \"})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\"\n  analyticsScript += `ga('create', '${jbrowseUser}', 'auto', 'jbrowseTracker');`\n\n  const gaData: AnalyticsObj = {}\n  const googleDimensions = 'tracks-count ver electron loadTime pluginNames'\n\n  googleDimensions.split(/\\s+/).forEach((key, index) => {\n    gaData[`dimension${index + 1}`] = stats[key]\n  })\n\n  gaData.metric1 = Math.round(stats.loadTime)\n\n  analyticsScript += `ga('jbrowseTracker.send', 'pageview',${JSON.stringify(\n    gaData,\n  )});`\n\n  const analyticsScriptNode = document.createElement('script')\n  analyticsScriptNode.innerHTML = analyticsScript\n\n  document.getElementsByTagName('head')[0]!.append(analyticsScriptNode)\n}\n\nexport function doAnalytics(\n  rootModel: any,\n  initialTimestamp: number,\n  initialSessionQuery: string | null | undefined,\n) {\n  if (\n    rootModel &&\n    !readConfObject(rootModel.jbrowse.configuration, 'disableAnalytics')\n  ) {\n    // ok if these are unhandled\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    writeAWSAnalytics(rootModel, initialTimestamp, initialSessionQuery)\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    writeGAAnalytics(rootModel, initialTimestamp)\n  }\n}\n","import React, { lazy, useEffect, useState, Suspense } from 'react'\nimport { observer } from 'mobx-react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport {\n  StringParam,\n  QueryParamProvider,\n  useQueryParam,\n} from 'use-query-params'\nimport { WindowHistoryAdapter } from 'use-query-params/adapters/window'\nimport { FatalErrorDialog, LoadingEllipses } from '@jbrowse/core/ui'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport '@fontsource/roboto'\n\n// locals\nimport Loading from './Loading'\nimport JBrowse from './JBrowse'\nimport factoryReset from '../factoryReset'\nimport SessionLoader, {\n  SessionLoaderModel,\n  SessionTriagedInfo,\n} from '../SessionLoader'\nimport StartScreenErrorMessage from './StartScreenErrorMessage'\nimport { createPluginManager } from '../createPluginManager'\nimport type { WebRootModel } from '../rootModel/rootModel'\n\nconst ConfigWarningDialog = lazy(() => import('./ConfigWarningDialog'))\nconst SessionWarningDialog = lazy(() => import('./SessionWarningDialog'))\nconst StartScreen = lazy(() => import('./StartScreen'))\n\nfunction normalize<T>(param: T | null | undefined) {\n  return param === null ? undefined : param\n}\n\nexport function Loader({\n  initialTimestamp = Date.now(),\n}: {\n  initialTimestamp?: number\n}) {\n  // return value if defined, else convert null to undefined for use with\n  // types.maybe\n\n  const Str = StringParam\n\n  const [config] = useQueryParam('config', Str)\n  const [session] = useQueryParam('session', Str)\n  const [adminKey] = useQueryParam('adminKey', Str)\n  const [password, setPassword] = useQueryParam('password', Str)\n  const [loc, setLoc] = useQueryParam('loc', Str)\n  const [sessionTracks, setSessionTracks] = useQueryParam('sessionTracks', Str)\n  const [assembly, setAssembly] = useQueryParam('assembly', Str)\n  const [tracks, setTracks] = useQueryParam('tracks', Str)\n  const [highlight, setHighlight] = useQueryParam('highlight', Str)\n  const [nav, setNav] = useQueryParam('nav', Str)\n  const [tracklist, setTrackList] = useQueryParam('tracklist', Str)\n\n  const loader = SessionLoader.create({\n    configPath: normalize(config),\n    sessionQuery: normalize(session),\n    password: normalize(password),\n    adminKey: normalize(adminKey),\n    loc: normalize(loc),\n    assembly: normalize(assembly),\n    tracks: normalize(tracks),\n    sessionTracks: normalize(sessionTracks),\n    tracklist: JSON.parse(normalize(tracklist) || 'false'),\n    highlight: normalize(highlight),\n    nav: JSON.parse(normalize(nav) || 'true'),\n    initialTimestamp,\n  })\n\n  useEffect(() => {\n    setLoc(undefined, 'replaceIn')\n    setTracks(undefined, 'replaceIn')\n    setAssembly(undefined, 'replaceIn')\n    setPassword(undefined, 'replaceIn')\n    setSessionTracks(undefined, 'replaceIn')\n    setTrackList(undefined, 'replaceIn')\n    setNav(undefined, 'replaceIn')\n    setHighlight(undefined, 'replaceIn')\n  }, [\n    setAssembly,\n    setLoc,\n    setNav,\n    setTrackList,\n    setTracks,\n    setPassword,\n    setSessionTracks,\n    setHighlight,\n  ])\n\n  return <Renderer loader={loader} />\n}\n\nconst SessionTriaged = observer(function ({\n  sessionTriaged,\n  loader,\n}: {\n  loader: SessionLoaderModel\n  sessionTriaged: SessionTriagedInfo\n}) {\n  return (\n    <Suspense fallback={null}>\n      {sessionTriaged.origin === 'session' ? (\n        <SessionWarningDialog\n          loader={loader}\n          handleClose={() => {\n            loader.setSessionTriaged(undefined)\n          }}\n        />\n      ) : (\n        <ConfigWarningDialog\n          loader={loader}\n          handleClose={() => {\n            loader.setSessionTriaged(undefined)\n          }}\n        />\n      )}\n    </Suspense>\n  )\n})\n\nconst PluginManagerLoaded = observer(function ({\n  pluginManager,\n}: {\n  pluginManager: PluginManager\n}) {\n  const { rootModel } = pluginManager\n  return !rootModel?.session ? (\n    <Suspense fallback={<LoadingEllipses />}>\n      <StartScreen\n        rootModel={rootModel as WebRootModel}\n        onFactoryReset={factoryReset}\n      />\n    </Suspense>\n  ) : (\n    <JBrowse pluginManager={pluginManager} />\n  )\n})\n\nconst Renderer = observer(function ({\n  loader,\n}: {\n  loader: SessionLoaderModel\n}) {\n  const { configError, ready, sessionTriaged } = loader\n  const [pluginManager, setPluginManager] = useState<PluginManager>()\n  const [error, setError] = useState<unknown>()\n\n  useEffect(() => {\n    let pm: PluginManager | undefined\n    try {\n      if (!ready) {\n        return\n      }\n      pm = createPluginManager(loader)\n      setPluginManager(pm)\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }, [loader, ready])\n\n  const err = configError || error\n  if (err) {\n    return <StartScreenErrorMessage error={err} />\n  } else if (sessionTriaged) {\n    return <SessionTriaged loader={loader} sessionTriaged={sessionTriaged} />\n  } else if (pluginManager) {\n    return <PluginManagerLoaded pluginManager={pluginManager} />\n  } else {\n    return <Loading />\n  }\n})\n\nfunction LoaderWrapper({ initialTimestamp }: { initialTimestamp: number }) {\n  return (\n    <ErrorBoundary\n      FallbackComponent={props => (\n        <FatalErrorDialog\n          {...props}\n          resetButtonText=\"Reset Session\"\n          onFactoryReset={factoryReset}\n        />\n      )}\n    >\n      <QueryParamProvider adapter={WindowHistoryAdapter}>\n        <Loader initialTimestamp={initialTimestamp} />\n      </QueryParamProvider>\n    </ErrorBoundary>\n  )\n}\n\nexport default LoaderWrapper\n","export default async function factoryReset() {\n  // @ts-expect-error\n  window.location = window.location.pathname\n}\n","import { toUrlSafeB64 } from './util'\n\n// from https://stackoverflow.com/questions/1349404/\nfunction generateUID(length: number) {\n  return window\n    .btoa(\n      [...window.crypto.getRandomValues(new Uint8Array(length * 2))]\n        .map(b => String.fromCharCode(b))\n        .join(''),\n    )\n    .replaceAll(/[+/]/g, '')\n    .slice(0, length)\n}\n\nconst encrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  return AES.encrypt(text, password).toString()\n}\n\nconst decrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  const Utf8 = await import('crypto-js/enc-utf8')\n  const bytes = AES.decrypt(text, password)\n  return bytes.toString(Utf8)\n}\n\nfunction getErrorMsg(err: string) {\n  try {\n    const obj = JSON.parse(err)\n    return obj.message\n  } catch (e) {\n    return err\n  }\n}\n// writes the encrypted session, current datetime, and referer to DynamoDB\nexport async function shareSessionToDynamo(\n  session: unknown,\n  url: string,\n  referer: string,\n) {\n  const sess = await toUrlSafeB64(JSON.stringify(session))\n  const password = generateUID(5)\n  const encryptedSession = await encrypt(sess, password)\n\n  const data = new FormData()\n  data.append('session', encryptedSession)\n  data.append('dateShared', `${Date.now()}`)\n  data.append('referer', referer)\n\n  const response = await fetch(`${url}share`, {\n    method: 'POST',\n    mode: 'cors',\n    body: data,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n  const json = await response.json()\n  return {\n    json,\n    encryptedSession,\n    password,\n  }\n}\n\nexport async function readSessionFromDynamo(\n  baseUrl: string,\n  sessionQueryParam: string,\n  password: string,\n  signal?: AbortSignal,\n) {\n  const sessionId = sessionQueryParam.split('share-')[1]!\n  const url = `${baseUrl}?sessionId=${encodeURIComponent(sessionId)}`\n  const response = await fetch(url, {\n    signal,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n\n  const json = await response.json()\n  return decrypt(json.session, password)\n}\n","import {\n  PluginDefinition,\n  isCJSPluginDefinition,\n  isESMPluginDefinition,\n  isUMDPluginDefinition,\n} from '@jbrowse/core/PluginLoader'\nimport {\n  getPropertyMembers,\n  getChildType,\n  isArrayType,\n  isModelType,\n  isReferenceType,\n  isValidReference,\n  isMapType,\n  IAnyType,\n  IAnyStateTreeNode,\n  Instance,\n} from 'mobx-state-tree'\nimport type { types } from 'mobx-state-tree'\n\n/**\n * Pad the end of a base64 string with \"=\" to make it valid\n * @param b64 - unpadded b64 string\n */\nexport function b64PadSuffix(b64: string): string {\n  let num = 0\n  const mo = b64.length % 4\n  switch (mo) {\n    case 3:\n      num = 1\n      break\n    case 2:\n      num = 2\n      break\n    case 0:\n      num = 0\n      break\n    default:\n      throw new Error('base64 not a valid length')\n  }\n  return b64 + '='.repeat(num)\n}\n\n/**\n * Decode and inflate a url-safe base64 to a string\n * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}\n * @param b64 - a base64 string to decode and inflate\n */\nexport async function fromUrlSafeB64(b64: string) {\n  const originalB64 = b64PadSuffix(\n    b64.replaceAll('-', '+').replaceAll('_', '/'),\n  )\n  const { toByteArray } = await import('base64-js')\n  const { inflate } = await import('pako')\n  const bytes = toByteArray(originalB64)\n  const inflated = inflate(bytes)\n  return new TextDecoder().decode(inflated)\n}\n\n/**\n * Compress and encode a string as url-safe base64\n * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}\n * @param str-  a string to compress and encode\n */\nexport async function toUrlSafeB64(str: string) {\n  const bytes = new TextEncoder().encode(str)\n  const { deflate } = await import('pako')\n  const { fromByteArray } = await import('base64-js')\n  const deflated = deflate(bytes)\n  const encoded = fromByteArray(deflated)\n  const pos = encoded.indexOf('=')\n  return pos > 0\n    ? encoded.slice(0, pos).replaceAll('+', '-').replaceAll('/', '_')\n    : encoded.replaceAll('+', '-').replaceAll('/', '_')\n}\n\ntype MSTArray = Instance<ReturnType<typeof types.array>>\ntype MSTMap = Instance<ReturnType<typeof types.map>>\n\n// attempts to remove undefined references from the given MST model. can only actually\n// remove them from arrays and maps. throws MST undefined ref error if it encounters\n// undefined refs in model properties\nexport function filterSessionInPlace(\n  node: IAnyStateTreeNode | undefined,\n  type: IAnyType,\n) {\n  // makes it work with session sharing\n  if (node === undefined) {\n    return\n  }\n  if (isArrayType(type)) {\n    const array = node as MSTArray\n    const childType = getChildType(node)\n    if (isReferenceType(childType)) {\n      // filter array elements\n      for (let i = 0; i < array.length; ) {\n        if (!isValidReference(() => array[i])) {\n          array.splice(i, 1)\n        } else {\n          i += 1\n        }\n      }\n    }\n    array.forEach(el => {\n      filterSessionInPlace(el, childType)\n    })\n  } else if (isMapType(type)) {\n    const map = node as MSTMap\n    const childType = getChildType(map)\n    if (isReferenceType(childType)) {\n      // filter the map members\n      for (const key in map.keys()) {\n        if (!isValidReference(() => map.get(key))) {\n          map.delete(key)\n        }\n      }\n    }\n    map.forEach(child => {\n      filterSessionInPlace(child, childType)\n    })\n  } else if (isModelType(type)) {\n    // iterate over children\n    const { properties } = getPropertyMembers(node)\n\n    Object.entries(properties).forEach(([pname, ptype]) => {\n      // @ts-ignore\n      filterSessionInPlace(node[pname], ptype)\n    })\n  }\n}\n\nexport function addRelativeUris(\n  config: Record<string, unknown> | null,\n  base: URL,\n) {\n  if (typeof config === 'object' && config !== null) {\n    for (const key of Object.keys(config)) {\n      if (typeof config[key] === 'object' && config[key] !== null) {\n        addRelativeUris(config[key] as Record<string, unknown>, base)\n      } else if (key === 'uri') {\n        config.baseUri = base.href\n      }\n    }\n  }\n}\n\nexport interface Root {\n  configuration?: Record<string, unknown>\n}\n\n// raw readConf alternative for before conf is initialized\nexport function readConf({ configuration }: Root, attr: string, def: string) {\n  return configuration?.[attr] || def\n}\n\nexport async function fetchPlugins() {\n  const response = await fetch('https://jbrowse.org/plugin-store/plugins.json')\n  if (!response.ok) {\n    throw new Error(\n      `HTTP ${response.status} ${response.statusText} fetching plugins`,\n    )\n  }\n  return response.json() as Promise<{ plugins: PluginDefinition[] }>\n}\n\nexport async function checkPlugins(pluginsToCheck: PluginDefinition[]) {\n  if (pluginsToCheck.length === 0) {\n    return true\n  }\n  const storePlugins = await fetchPlugins()\n  return pluginsToCheck.every(p => {\n    if (isUMDPluginDefinition(p)) {\n      return storePlugins.plugins.some(\n        pp =>\n          isUMDPluginDefinition(p) &&\n          (('url' in pp && 'url' in p && p.url === pp.url) ||\n            ('umdUrl' in pp && 'umdUrl' in p && p.umdUrl === pp.umdUrl)),\n      )\n    }\n    if (isESMPluginDefinition(p)) {\n      return storePlugins.plugins.some(\n        pp =>\n          // @ts-expect-error\n          isESMPluginDefinition(p) && 'esmUrl' in p && p.esmUrl === pp.esmUrl,\n      )\n    }\n    if (isCJSPluginDefinition(p)) {\n      return storePlugins.plugins.some(\n        // @ts-expect-error\n        pp => isCJSPluginDefinition(p) && p.cjsUrl === pp.cjsUrl,\n      )\n    }\n    return false\n  })\n}\n\nexport function removeAttr(obj: Record<string, unknown>, attr: string) {\n  for (const prop in obj) {\n    if (prop === attr) {\n      delete obj[prop]\n    } else if (typeof obj[prop] === 'object') {\n      removeAttr(obj[prop] as Record<string, unknown>, attr)\n    }\n  }\n  return obj\n}\n"],"names":["isUMDPluginDefinition","def","undefined","umdUrl","url","umdLoc","name","isESMPluginDefinition","esmUrl","esmLoc","isCJSPluginDefinition","cjsUrl","pluginDescriptionString","pluginDefinition","uri","PluginLoader","definitions","constructor","defs","args","this","fetchESM","fetchCJS","JSON","parse","stringify","loadCJSPlugin","baseUri","parsedUrl","URL","protocol","Error","href","loadESMPlugin","plugin","loadUMDPlugin","moduleName","umdName","jest","async","scriptUrl","Boolean","globalThis","src","Promise","resolve","reject","domLoadScript","err","script","importScripts","loadScript","default","Plugin","loadPlugin","isElectron","installGlobalReExports","target","JBrowseExports","Object","fromEntries","entries","ReExports","map","module","load","all","definition","adapterConfigCacheKey","conf","idMaker","adapterCache","getAdapter","pluginManager","sessionId","adapterConfigSnapshot","cacheKey","adapterType","type","dataAdapterType","getAdapterType","adapterConfig","configSchema","create","getSubAdapter","bind","dataAdapter","getAdapterClass","sessionIds","Set","cacheEntry","add","freeAdapterResources","specification","deleteCount","specKeys","keys","length","forEach","delete","size","values","regions","region","refName","freeResources","abortSignalCounter","abortSignalIds","WeakMap","serializeAbortSignal","signal","callfunc","abortSignalId","get","set","addEventListener","signalId","isRemoteAbortSignal","thing","surrogateAbortControllers","Map","deserializeAbortSignal","surrogateAbortController","AbortController","CascadingContext","React","parentPopupState","rootPopupState","CascadingMenuItem","onClick","closeAfterItemClick","props","useContext","MenuItem","_extends","event","close","CascadingSubmenu","title","Icon","inset","popupId","popupState","usePopupState","variant","bindHover","bindFocus","ListItemIcon","ListItemText","primary","ChevronRight","CascadingSubmenuHover","anchorOrigin","vertical","horizontal","transformOrigin","onMenuItemClick","menuItems","classes","context","useMemo","Provider","value","HoverMenu","bindMenu","CascadingMenu","Menu","EndDecoration","item","MenuItemEndDecoration","checked","disabled","CascadingMenuList","hasIcon","some","m","icon","sort","a","b","priority","idx","key","label","subMenu","Divider","component","ListSubheader","callback","secondary","subLabel","style","flexGrow","minWidth","rest","useStyles","makeStyles","theme","closeButton","position","right","spacing","top","color","palette","grey","DialogError","error","width","margin","ErrorMessage","observer","header","children","onClose","useTheme","MUIDialog","ScopedCssBaseline","DialogTitle","SanitizedHTML","html","IconButton","className","CloseIcon","ErrorBoundary","FallbackComponent","ThemeProvider","createTheme","components","MuiInputBase","styleOverrides","input","boxSizing","inputBase","typography","left","whiteSpace","visibility","inputRoot","padding","inputFocused","borderStyle","borderWidth","ref","setValue","other","ref2","useMeasure","editedValue","setEditedValue","useState","inputNode","setInputNode","blur","setBlur","useEffect","val","Typography","InputBase","inputRef","node","inputProps","root","focused","onChange","onKeyDown","onBlur","ErrorMessageStackTraceDialog","lazy","bg","background","divider","border","iconFloat","float","marginLeft","ErrorButtons","onReset","showStack","setShowStack","Tooltip","ReportIcon","RefreshIcon","Suspense","fallback","str","str2","indexOf","str3","slice","snapshotError","trim","findStr","match","exec","match2","parseError","RedErrorMessageBox","FactoryResetDialog","open","onFactoryReset","handleDialogClose","action","Dialog","DialogContent","DialogContentText","DialogActions","Button","ContentCopy","SvgIcon","d","Indexing","TrackSelector","Cable","getColors","midnight","forrest","grape","mandarin","gray","Logomark","viewBox","LogoFull","Text","colors","fill","transform","paper","overflowY","overflowX","minHeight","maxWidth","maxHeight","outline","menuItemEndDecoration","height","ArrowRightIcon","CheckBoxIcon","CheckBoxOutlineBlankIcon","RadioButtonCheckedIcon","RadioButtonUncheckedIcon","checkIfValid","MenuPage","subMenuAnchorEl","setSubMenuAnchorEl","openSubMenuIdx","setOpenSubMenuIdx","isSubMenuOpen","setIsSubMenuOpen","selectedMenuItemIdx","setSelectedMenuItemIdx","setPosition","paperRef","useRef","anchorEl","shouldSubMenuBeOpen","timer","setTimeout","clearTimeout","rect","getBoundingClientRect","menuItem","menuItemStyle","ListContents","MenuList","autoFocusItem","dense","endDecoration","MUIMenuItem","id","String","selected","onMouseMove","e","currentTarget","document","activeElement","focus","currentIdx","findLastIndex","findPreviousValidIdx","findIndex","findNextValidIdx","Grow","in","Paper","elevation","Popover","horizontalHandle","cursor","verticalHandle","flexbox_verticalHandle","alignSelf","flexbox_horizontalHandle","onDrag","flexbox","originalClassName","onMouseDown","mouseDragging","setMouseDragging","initialPosition","prevPos","cx","mouseMove","preventDefault","pos","clientX","clientY","totalDistance","current","lastFrameDistance","mouseUp","window","removeEventListener","model","handleClose","clearView","autoFocus","added","full","RegExp","tag","join","pre","linkify","test","escapeHTML","dompurify","tagName","setAttribute","dangerouslySetInnerHTML","__html","refTheme","forest","augmentColor","main","bases","A","green","C","blue","G","orange","T","red","framesCDS","frames","stopCodon","startCodon","stockTheme","mode","tertiary","quaternary","highlight","MuiLink","defaultThemes","lightStock","lightMinimal","darkMinimal","darkStock","MuiAppBar","defaultProps","enableColorOnDark","overwriteArrayMerge","_","sourceArray","createJBrowseBaseTheme","themeP","fontSize","MuiButton","text","MuiAccordion","disableGutters","slotProps","transition","timeout","unmountOnExit","MuiFilledInput","MuiFormControl","MuiFormHelperText","MuiIconButton","MuiAutocomplete","MuiInputLabel","MuiToolbar","MuiListItem","MuiOutlinedInput","MuiFab","backgroundColor","MuiTable","MuiPopover","transitionDuration","MuiMenu","MuiMenuItem","MuiTextField","MuiCheckbox","MuiRadio","MuiFormLabel","MuiAccordionSummary","content","contrastText","MuiToggleButtonGroup","deepmerge","arrayMerge","createJBrowseTheme","configTheme","themes","themeName","augmentTheme","augmentThemePlus","importFormEntry","session","InputProps","TextFieldProps","localStorageKey","helperText","assemblyNames","assemblyManager","config","URLSearchParams","location","search","lastSelected","setLastSelected","useLocalStorage","host","pathname","selection","includes","TextField","select","assembly","displayName","getConf","ToggleButtonWithTooltip","ToggleButton","shorten","len","Math","max","description","rootModel","setLocation","fileOrUrl","isUriLocation","toggleButtonValue","setToggleButtonValue","internetAccountId","accounts","isAppRootModel","internetAccounts","filter","f","recentlyUsedInternetAccounts","setRecentlyUsedInternetAccounts","arr","s","shownAccounts","hiddenAccounts","setAnchorEl","selectedAccount","setLocationWithAccount","useCallback","locationInput","UrlChooser","selectorLabel","LocalFileChooser","SelectorComponent","Box","display","InputLabel","shrink","flexDirection","ToggleButtonGroup","exclusive","_event","newState","notEmpty","toggleContents","ArrowDropDownIcon","FormHelperText","highResolutionScaling","imageData","blockKey","showSoftClip","done","setDone","featureCanvas","canvas","getContext","drawImageOntoCanvasContext","QuickLRU","options","super","maxSize","TypeError","maxAge","Number","POSITIVE_INFINITY","onEviction","cache","oldCache","_size","_emitEvictions","_deleteIfExpired","expiry","Date","now","_getOrDeleteIfExpired","_getItemValue","_peek","_set","_moveToRecent","_entriesAscending","has","peek","deleted","clear","resize","newSize","items","removeCount","Symbol","iterator","entriesDescending","i","entriesAscending","oldCacheSize","min","callbackFunction","thisArgument","call","toStringTag","useDebounce","delay","debouncedValue","setDebouncedValue","handle","useWidthSetter","view","isAlive","requestAnimationFrame","setWidth","parseInt","useDebouncedCallback","wait","argsRef","findParentThat","predicate","hasParent","currentNode","getParent","springAnimate","fromValue","toValue","onFinish","precision","tension","friction","clamp","animationFrameId","update","animation","time","lastPosition","lastTime","velocity","lastVelocity","numSteps","floor","isVelocity","abs","isDisplacement","cancelAnimationFrame","findParentThatIs","getSession","isSessionModel","getContainingView","isViewModel","getContainingTrack","isTrackModel","getContainingDisplay","isDisplayModel","assembleLocString","assembleLocStringFast","toLocale","cb","n","assemblyName","start","end","reversed","assemblyNameString","startString","endString","rev","parseLocStringOneBased","locString","isValidRefName","endsWith","replace","assemblyMatch","assemblyName2","location2","startsWith","lastColonIdx","lastIndexOf","prefix","suffix","rangeMatch","singleMatch","replaceAll","separator","parseLocString","parsed","compareLocs","locA","locB","assemblyComp","localeCompare","refComp","startComp","endComp","compareLocStrings","num","bpToPx","bp","bpPerPx","round","oneEightyOverPi","PI","piOverOneEighty","radToDeg","radians","degToRad","degrees","polarToCartesian","rho","theta","cos","sin","cartesianToPolar","x","y","sqrt","atan","featureSpanPx","feature","bpSpanPx","leftBp","rightBp","iterMap","iter","func","sizeHint","results","Array","from","counter","array","l","findLast","makeAbortableReaction","self","dataFunction","asyncReactionFunction","reactionOptions","startedFunction","successFunction","errorFunction","inProgress","handleError","isAbortException","console","addDisposer","reaction","data","mobxReactionHandle","aborted","abort","thisInProgress","result","checkAbortSignal","renameRegionIfNeeded","refNameMap","isStateTreeNode","newRef","getSnapshot","originalRefName","renameRegionsIfNeeded","assemblyMaps","getRefNameMapForAdapter","minmax","short","coord","oob","useAssemblyName","navigator","userAgent","revcom","seqString","reverse","complement","split","complementRegex","complementTable","S","w","r","N","K","Y","V","M","h","k","g","t","W","X","v","B","H","c","D","R","rIC","requestIdleCallback","widths","measureText","total","code","charCodeAt","getFrame","strand","phase","defaultStarts","defaultStops","defaultCodonTable","TCA","TCC","TCG","TCT","TTC","TTT","TTA","TTG","TAC","TAT","TAA","TAG","TGC","TGT","TGA","TGG","CTA","CTC","CTG","CTT","CCA","CCC","CCG","CCT","CAC","CAT","CAA","CAG","CGA","CGC","CGG","CGT","ATA","ATC","ATT","ATG","ACA","ACC","ACG","ACT","AAC","AAT","AAA","AAG","AGC","AGT","AGA","AGG","GTA","GTC","GTG","GTT","GCA","GCC","GCG","GCT","GAC","GAT","GAA","GAG","GGA","GGC","GGG","GGT","generateCodonTable","table","tempCodonTable","codon","aa","nucs","nuc","charAt","toUpperCase","toLowerCase","n0","j","n1","n2","updateStatus","msg","fn","res","hashCode","hash","objectHash","obj","bytesForRegions","index","blocksForRange","flat","block","minv","blockPosition","maxv","reduce","isSupportedIndexingAdapter","getBpDisplayStr","totalBp","parseFloat","toPrecision","toLocaleString","getTickDisplayStr","toFixed","getViewParams","exportSVG","dynamicBlocks","staticBlocks","offsetPx","contentBlocks","staticblock","staticblock1","offsetPx1","getLayoutId","layoutId","initialValue","storedValue","setStoredValue","localStorage","getItem","valueToStore","Function","setItem","getUriLink","getStr","isObject","coarseStripHTML","measureGridWidth","elements","stripHTML","element","getEnv","getEnvMST","localStorageGetItem","localStorageSetItem","init","NEGATIVE_INFINITY","entry","sum","avg","groupBy","push","mergeIntervals","intervals","stack","at","pop","gatherOverlaps","memo","flatMap","group","stripAlpha","colord","alpha","toHex","getStrokeProps","strokeOpacity","stroke","getFillProps","fillOpacity","renderToStaticMarkup","createRootFn","div","createElement","flushSync","render","innerHTML","isGzip","buf","getTrackAssemblyNames","track","getConfAssemblyNames","configuration","trackAssemblyNames","readConfObject","parent","getRpcSessionId","thisNode","highestRpcSessionId","isRoot","rpcSessionId","getParentRenderProps","renderProps","UNKNOWN","UNSUPPORTED","blobMap","getBlob","getBlobMap","setBlobMap","storeBlobLocation","blobId","blob","locationType","makeIndex","localPath","makeIndexType","typeA","typeB","getFileName","guessAdapter","file","adapterHint","adapter","evaluateExtensionPoint","_file","_index","_adapterHint","adapterGuesser","guessTrackType","trackType","_adapterName","trackTypeGuesser","generateUnsupportedTrackConf","trackName","trackUrl","categories","category","trackId","generateUnknownTrackConf","getTrackName","asm","assemblies","find","sequence","ElementId","types","optional","identifier","nanoid","NoAssemblyRegion","string","number","boolean","actions","setRefName","newRefName","Region","compose","LocalPathLocation","literal","BlobLocation","UriLocationRaw","maybe","internetAccountPreAuthorization","internetAccountType","authInfo","frozen","UriLocation","snapshotProcessor","postProcessor","snap","FileLocation","union","preProcessor","BaseSessionModel","_pluginManager","volatile","hovered","views","jbrowse","rpcManager","adminMode","textSearchManager","setSelection","clearSelection","setHovered","isBaseSession","ConnectionManagementSessionMixin","connectionInstances","pluggableMstType","connections","makeConnection","initialSnapshot","getConnectionType","prepareToBreakConnection","callbacksToDeref","derefTypeCount","connection","tracks","getReferring","removeReferring","breakConnection","remove","deleteConnection","deleteConnectionConf","addConnectionConf","connectionConf","clearConnections","isSessionWithConnections","AssemblyManager","DataManagementPlugin","exports","install","UCSCTrackHubConnectionF","AddTrackWidgetF","HierarchicalTrackSelectorWidgetF","AddConnectionWidgetF","PluginStoreWidgetF","configure","snackbarMessages","latestMessage","reason","popSnackbarMessage","MUISnackbar","Alert","severity","level","message","buttonRoot","hoverOpacity","menuTitle","setOpen","ArrowDropDown","logoPath","alt","grow","light","borderColor","HeaderButtons","savedSessionNames","menus","Toolbar","menu","DropDownMenu","arrow","EditableTypography","newName","notify","renameCurrentSession","AppLogo","DialogComponent","DialogProps","zIndex","bottom","minimized","activeWidgets","drawerPosition","Fab","showWidgetDrawer","LaunchIcon","selectPaper","m2","viewTypes","getElementTypeRecord","FormControl","Select","addView","IconButtonProps","IconProps","bindTrigger","MenuIcon","bindPopover","KeyboardDoubleArrowUpIcon","moveViewToTop","KeyboardArrowUpIcon","moveViewUp","KeyboardArrowDownIcon","moveViewDown","KeyboardDoubleArrowDownIcon","moveViewToBottom","paddingBottom","paddingTop","setDisplayName","viewHeader","viewTitle","alignItems","ViewButtons","onMinimize","AddIcon","MinimizeIcon","scrollRef","scrollIntoView","ViewMenu","focusedViewId","KeyboardArrowRightIcon","ViewContainerTitle","viewContainer","overflow","focusedView","unfocusedView","dark","handleSelectView","Element","contains","setFocusedViewId","ViewHeader","viewType","getViewType","ReactComponent","ViewContainer","removeView","setMinimized","LoadingEllipses","viewsContainer","gridRow","ViewPanel","ViewLauncher","DrawerWidget","colorScheme","appContainer","gridColumn","gridTemplateRows","appBar","LazyDrawerWidget","App","visibleWidget","drawerWidth","drawerVisible","grid","gridTemplateColumns","DialogQueue","AppBar","AppToolbar","ViewsContainer","AppFab","Snackbar","undoIdx","targetPath","history","notTrackingUndo","canUndo","canRedo","targetStore","snapshotDisposer","skipNextUndoState","stopTrackingUndo","resumeTrackingUndo","addUndoState","todos","splice","shift","beforeDestroy","initialize","resolvePath","onSnapshot","debounce","snapshot","undo","applySnapshot","redo","ConfigurationSchema","workerCount","defaultValue","explicitlyTyped","baseConfiguration","BaseRpcDriverConfigSchema","defaultDriver","drivers","MainThreadRpcDriverConfigSchema","WebWorkerRpcDriverConfigSchema","MainThreadRpcDriver","WebWorkerRpcDriver","addDriverConfig","configName","configSnapshot","isClonable","LazyWorker","driver","getWorker","workerP","makeWorker","then","worker","pingTime","rpcDriverClassName","watchWorker","maxPingTime","catch","destroy","status","BaseRpcDriver","lastWorkerAssignment","workerAssignments","workerCheckFrequency","filterArgs","isArray","AbortSignal","remoteAbort","File","functionName","createWorkerPool","hardwareConcurrency","mainThread","canDetect","detectHardwareConcurrency","workers","getWorkerPool","workerPool","workerNumber","workerAssignment","unextendedWorker","rpcMethod","getRpcMethodType","serializedArgs","serializeArguments","filteredAndSerializedArgs","callP","statusCallback","finally","killedCheckInterval","killedP","setInterval","clearInterval","resultP","race","deserializeReturn","WebWorkerHandle","Rpc","Client","terminate","funcName","opts","channel","listener","on","off","workerBootConfiguration","makeWorkerInstance","instance","log","postMessage","deserializeError","DummyHandle","_functionName","_filteredArgs","_options","pm","execute","RpcManager","static","rpcConfigSchema","mainConfiguration","backendConfigurations","driverObjects","getDriver","backendName","backendConfiguration","newDriver","plugins","runtimePluginDefinitions","windowHref","getDriverForCall","_sessionId","rpcDriverName","shareDiv","textAlign","paddingLeft","shareButton","ShareDialog","startIcon","ShareIcon","adminKey","useQueryParam","StringParam","adminServer","configPath","setSessionId","currentSessionId","JBrowseRootModel","JBrowseSession","response","fetch","method","headers","body","ok","CssBaseline","ShareButton","sessionQuery","password","loc","sessionTracks","tracklist","nav","initialTimestamp","sessionTriaged","sessionSnapshot","sessionSpec","blankSession","runtimePlugins","sessionPlugins","sessionError","configError","bc1","BroadcastChannel","bc2","isSharedSession","isSpecSession","isJb1StyleSession","isEncodedSession","isJsonSession","isLocalSession","ready","isSessionLoaded","isConfigLoaded","sessionTracksParsed","setSessionQuery","setConfigError","setSessionError","setRuntimePlugins","setSessionPlugins","setConfigSnapshot","setBlankSession","flag","setSessionTriaged","setSessionSnapshotSuccess","fetchPlugins","pluginLoader","import","fetchSessionPlugins","setSessionSnapshot","userAcceptedConfirmation","checkPlugins","origin","fetchConfig","__jbrowseConfigPath","__jbrowseCacheBuster","random","openLocation","readFile","configUri","addRelativeUris","hostname","configPlugins","fetchSessionStorageSession","sessionStr","sessionStorage","query","sessionSnap","onmessage","fetchSharedSession","decryptedSession","readSessionFromDynamo","readConf","fromUrlSafeB64","decodeEncodedUrlSession","decodeSessionSpec","decodeJb1StyleSession","decodeJsonUrlSession","afterCreate","lastAutosave","autorun","StartScreenErrorMessage","Worker","resolveIdentifier","refNameRegex","refNameColors","checkRefName","assemblyFactory","assemblyConfigType","adapterLoads","AbortablePromiseCache","adapterConf","when","refNameAliases","refNames","getCanonicalRefName","forwardMap","reverseMap","canonicalName","adapterName","loadRefNameMap","safeReference","loadingP","volatileRegions","lowerCaseRefNameAliases","cytobands","arg","initialized","aliases","hasName","allAliases","allRefNames","lowerCaseRefNames","allRefNamesWithLowerCase","getRefNameColor","setLoaded","setRegions","setRefNameAliases","setCytobands","setError","lowerCaseAliases","setLoadingP","p","loadPre","refNameAliasesAdapterConf","cytobandAdapterConf","sequenceAdapterConf","getRegions","getAssemblyRegions","adapterRegionsWithAssembly","refNameAliasCollection","getRefNameAliases","override","alias","getCytobands","getAdapterMapEntry","getReverseRefNameMapForAdapter","getData","SetDefaultSession","PreferencesDialog","RootModel","sessionModelFactory","assemblyConfigSchema","getTrackType","pluggableConfigSchemaType","preProcessSnapshot","explicitIdentifier","assemblyConfigSchemaFactory","jbrowseModelType","rpc","formatDetails","contextVariable","subfeatures","depth","maxDepth","formatAbout","hideUris","shareURL","disableAnalytics","hierarchical","trackNames","defaultCollapsed","categoryNames","topLevelCategories","subCategories","extraThemes","pluginConfigurationSchemas","aggregateTextSearchAdapters","defaultSession","JBrowseConfigF","addAssemblyConf","removeAssemblyConf","toRemove","addTrackConf","trackConf","elt","conn","deleteTrackConf","addPlugin","setPluginsUpdated","removePlugin","cast","setDefaultSessionConf","sessionConf","newDefault","toJS","addInternetAccountConf","internetAccountConf","deleteInternetAccountConf","JBrowseModelF","removeAttr","clone","jbrowseWebFactory","sessionModelType","sessionPath","assemblyNameMap","asmName","assemblyNamesList","assemblyList","sessionAssemblies","temporaryAssemblies","waitForAssembly","afterAttach","assemblyConfs","removeAssembly","addAssembly","fireImmediately","replaceAssembly","TextSearchManager","setSession","setDefaultSession","setSessionPath","path","BaseRootModelFactory","initializeInternetAccount","internetAccountConfig","getInternetAccountType","createEphemeralInternetAccount","hostUri","internetAccountSplit","domains","internetAccount","stateModel","findAppropriateInternetAccount","selectedId","account","handlesLocation","InternetAccountsRootModelMixin","TimeTraveller","ctrlKey","metaKey","shiftKey","setMenus","newMenus","appendMenu","menuName","insertMenu","appendToMenu","insertInMenu","insertPosition","appendToSubMenu","menuPath","topMenu","pathSoFar","sm","mi","insertInSubMenu","version","hydrateFn","hydrateRoot","createRoot","pluginsUpdated","savedSessionsVolatile","observable","savedSessions","localStorageId","autosaveId","previousAutosaveId","locationUrl","params","_val","alert","reload","oldSession","filterSessionInPlace","getType","newSession","sessionName","addSavedSession","removeSavedSession","removeItem","duplicateCurrentSession","newSnapshotName","newSnapshotCopyNumber","activateSession","localId","newSessionSnapshot","saveSessionToLocalStorage","loadAutosaveSession","previousAutosave","autosavedSession","PublishIcon","widget","addWidget","showWidget","GetAppIcon","sessionBlob","Blob","saveAs","FolderOpenIcon","SaveIcon","FileCopyIcon","StorageIcon","AppsIcon","queueDialog","UndoIcon","RedoIcon","ExtensionIcon","SettingsIcon","ReferenceManagementSessionMixin","object","refs","walk","isModelType","members","getMembers","properties","isReferenceType","referring","callbacks","dereferenceTypeCount","dereferenced","hideTrack","err1","isSessionModelWithWidgets","widgets","hideWidget","DrawerWidgetSessionMixin","widgetStateModelType","refinement","integer","setDrawerPosition","updateDrawerWidth","newDrawerWidth","resizeDrawer","distance","oldDrawerWidth","typeName","initialState","getElementType","hasWidget","minimizeWidgetDrawer","hideAllWidgets","editConfiguration","isConfigurationModel","editor","AboutDialog","BaseWebSession","sessionModel","queueOfDialogs","removeActiveDialog","sessionThemeName","allThemes","setThemeName","addLinearGenomeViewOfAssembly","addViewOfAssembly","displayRegionsFromAssemblyName","addViewFromAnotherView","otherView","state","displayedRegions","MultipleViewsSessionMixin","callbacksToDereferenceTrack","TracksManagerSessionMixin","named","superAddTrackConf","superDeleteTrackConf","found","SessionTracksManagerSessionMixin","assemblyConfigSchemasType","addSessionAssembly","warn","removeSessionAssembly","addTemporaryAssembly","removeTemporaryAssembly","TemporaryAssembliesMixin","sessionConnections","superDeleteConnection","superAddConnectionConf","connectionId","deletedConn","WebSessionConnectionsMixin","viewId","snackbarMessageSet","pushSnackbarMessage","removeSnackbarMessage","notifyError","errorMessage","extra","Report","task","setName","addSessionPlugin","removeSessionPlugin","editTrackConfiguration","getTrackActionMenuItems","canEdit","isRefSeq","InfoIcon","DeleteIcon","displays","displayId","CopyIcon","extendedSessionModel","createPluginManager","PluginManager","corePlugins","P","metadata","isCore","createPluggableElements","JBrowseRootModelFactory","afterInitializedCb","evaluateAsyncExtensionPoint","loadSessionSpec","initialSessionQuery","initialTimeStamp","multiAssemblyTracks","savedSessionCount","ver","stats","screen","innerHeight","innerWidth","electron","loadTime","jb2","qs","writeAWSAnalytics","pluginNames","analyticsScript","gaData","metric1","analyticsScriptNode","getElementsByTagName","append","writeGAAnalytics","doAnalytics","setRootModel","ConfigWarningDialog","SessionWarningDialog","StartScreen","normalize","param","Loader","Str","setPassword","setLoc","setSessionTracks","setAssembly","setTracks","setHighlight","setNav","setTrackList","loader","SessionLoader","Renderer","SessionTriaged","PluginManagerLoaded","JBrowse","factoryReset","setPluginManager","Loading","FatalErrorDialog","resetButtonText","QueryParamProvider","WindowHistoryAdapter","encrypt","toString","decrypt","AES","Utf8","getErrorMsg","shareSessionToDynamo","referer","sess","toUrlSafeB64","btoa","crypto","getRandomValues","Uint8Array","fromCharCode","encryptedSession","FormData","json","baseUrl","sessionQueryParam","encodeURIComponent","b64","originalB64","repeat","b64PadSuffix","toByteArray","inflate","inflated","TextDecoder","decode","bytes","TextEncoder","encode","deflate","fromByteArray","encoded","isArrayType","childType","getChildType","isValidReference","el","isMapType","child","getPropertyMembers","pname","ptype","base","attr","pluginsToCheck","storePlugins","statusText","every","pp","prop"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3162.eb9bf76d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3162],{25762:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});var a=s(74893),i=s(69500);const r=(0,a.A)((0,i.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},45331:(e,t,s)=>{"use strict";s.d(t,{Ay:()=>b});var a=s(7552),i=s(93878),r=s(70799),o=s(23879),n=s(51148),l=s(60129),d=s(4785),u=s(3755),c=s(51584),m=s(57406),p=s(74823),h=s(2451),g=s(77999),$=s(69500);const f=(0,n.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:s}=e;return[t.root,s.dense&&t.dense,"flex-start"===s.alignItems&&t.alignItemsFlexStart,s.divider&&t.divider,!s.disableGutters&&t.gutters,!s.disablePadding&&t.padding,s.hasSecondaryAction&&t.secondaryAction]}})((0,l.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${h.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),v=(0,n.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),b=a.forwardRef((function(e,t){const s=(0,d.b)({props:e,name:"MuiListItem"}),{alignItems:n="center",children:l,className:h,component:b,components:y={},componentsProps:w={},ContainerComponent:A="li",ContainerProps:{className:x,...S}={},dense:I=!1,disableGutters:C=!1,disablePadding:R=!1,divider:k=!1,secondaryAction:L,slotProps:P={},slots:j={},...G}=s,M=a.useContext(m.A),z=a.useMemo((()=>({dense:I||M.dense||!1,alignItems:n,disableGutters:C})),[n,M.dense,I,C]),N=a.useRef(null),q=a.Children.toArray(l),U=q.length&&(0,u.A)(q[q.length-1],["ListItemSecondaryAction"]),_={...s,alignItems:n,dense:z.dense,disableGutters:C,disablePadding:R,divider:k,hasSecondaryAction:U},B=(e=>{const{alignItems:t,classes:s,dense:a,disableGutters:i,disablePadding:o,divider:n,hasSecondaryAction:l}=e,d={root:["root",a&&"dense",!i&&"gutters",!o&&"padding",n&&"divider","flex-start"===t&&"alignItemsFlexStart",l&&"secondaryAction"],container:["container"]};return(0,r.A)(d,p._,s)})(_),E=(0,c.A)(N,t),F=j.root||y.Root||f,O=P.root||w.root||{},T={className:(0,i.A)(B.root,O.className,h),...G};let D=b||"li";return U?(D=T.component||b?D:"div","li"===A&&("li"===D?D="div":"li"===T.component&&(T.component="div")),(0,$.jsx)(m.A.Provider,{value:z,children:(0,$.jsxs)(v,{as:A,className:(0,i.A)(B.container,x),ref:E,ownerState:_,...S,children:[(0,$.jsx)(F,{...O,...!(0,o.A)(F)&&{as:D,ownerState:{..._,...O.ownerState}},...T,children:q}),q.pop()]})})):(0,$.jsx)(m.A.Provider,{value:z,children:(0,$.jsxs)(F,{...O,as:D,ref:E,...!(0,o.A)(F)&&{ownerState:{..._,...O.ownerState}},...T,children:[q,L&&(0,$.jsx)(g.A,{children:L})]})})}))},74823:(e,t,s)=>{"use strict";s.d(t,{A:()=>o,_:()=>r});var a=s(33761),i=s(85693);function r(e){return(0,i.Ay)("MuiListItem",e)}const o=(0,a.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},2451:(e,t,s)=>{"use strict";s.d(t,{A:()=>o,Y:()=>r});var a=s(33761),i=s(85693);function r(e){return(0,i.Ay)("MuiListItemButton",e)}const o=(0,a.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,s)=>{"use strict";s.d(t,{A:()=>p});var a=s(7552),i=s(93878),r=s(70799),o=s(51148),n=s(4785),l=s(57406),d=s(87739),u=s(69500);const c=(0,o.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:s}=e;return[t.root,s.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),m=a.forwardRef((function(e,t){const s=(0,n.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:o,...m}=s,p=a.useContext(l.A),h={...s,disableGutters:p.disableGutters},g=(e=>{const{disableGutters:t,classes:s}=e,a={root:["root",t&&"disableGutters"]};return(0,r.A)(a,d.g,s)})(h);return(0,u.jsx)(c,{className:(0,i.A)(g.root,o),ownerState:h,ref:t,...m})}));m.muiName="ListItemSecondaryAction";const p=m},87739:(e,t,s)=>{"use strict";s.d(t,{A:()=>o,g:()=>r});var a=s(33761),i=s(85693);function r(e){return(0,i.Ay)("MuiListItemSecondaryAction",e)}const o=(0,a.A)("MuiListItemSecondaryAction",["root","disableGutters"])},93091:function(e){e.exports=function(){var e=[],t=[],s={},a={},i={};function r(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function o(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function n(e,t){return e.replace(t[0],(function(s,a){var i,r,n=(i=t[1],r=arguments,i.replace(/\$(\d{1,2})/g,(function(e,t){return r[t]||""})));return o(""===s?e[a-1]:s,n)}))}function l(e,t,a){if(!e.length||s.hasOwnProperty(e))return t;for(var i=a.length;i--;){var r=a[i];if(r[0].test(t))return n(t,r)}return t}function d(e,t,s){return function(a){var i=a.toLowerCase();return t.hasOwnProperty(i)?o(a,i):e.hasOwnProperty(i)?o(a,e[i]):l(i,a,s)}}function u(e,t,s,a){return function(a){var i=a.toLowerCase();return!!t.hasOwnProperty(i)||!e.hasOwnProperty(i)&&l(i,i,s)===i}}function c(e,t,s){return(s?t+" ":"")+(1===t?c.singular(e):c.plural(e))}return c.plural=d(i,a,e),c.isPlural=u(i,a,e),c.singular=d(a,i,t),c.isSingular=u(a,i,t),c.addPluralRule=function(t,s){e.push([r(t),s])},c.addSingularRule=function(e,s){t.push([r(e),s])},c.addUncountableRule=function(e){"string"!=typeof e?(c.addPluralRule(e,"$0"),c.addSingularRule(e,"$0")):s[e.toLowerCase()]=!0},c.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),i[e]=t,a[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return c.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return c.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return c.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(c.addUncountableRule),c}()}}]);
+//# sourceMappingURL=3162.eb9bf76d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3162.eb9bf76d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3162.eb9bf76d.chunk.js","mappings":"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,CAAC,qGAAsG,OACvG,CAAC,QAAS,OACV,CAAC,2CAA4C,WAC7C,CAAC,oBAAqB,SACtB,CAAC,uBAAwB,SACzB,CAAC,oBAAqB,QACtB,CAAC,gDAAiD,UAClD,CAAC,gCAAiC,SAClC,CAAC,sBAAuB,UACxB,CAAC,oBAAqB,SACtB,CAAC,SAAU,MACX,CAAC,WAAY,OACb,CAAC,OAAQ,QACTwC,SAAQ,SAAUxC,GAClB,OAAO0B,EAAUO,cAAcjC,EAAK,GAAIA,EAAK,GAC/C,IAKA,CACE,CAAC,MAAO,IACR,CAAC,SAAU,MACX,CAAC,gEAAiE,QAClE,CAAC,kCAAmC,OACpC,CAAC,QAAS,KACV,CAAC,uFAAwF,QACzF,CAAC,oBAAqB,QACtB,CAAC,uBAAwB,UACzB,CAAC,sBAAuB,MACxB,CAAC,2FAA4F,MAC7F,CAAC,qEAAsE,SACvE,CAAC,iCAAkC,MACnC,CAAC,oBAAqB,QACtB,CAAC,4FAA6F,QAC9F,CAAC,yGAA0G,QAC3G,CAAC,8FAA+F,QAChG,CAAC,0BAA2B,OAC5B,CAAC,+BAAgC,QACjC,CAAC,sBAAuB,QACxB,CAAC,oBAAqB,UACtB,CAAC,eAAgB,MACjB,CAAC,YAAa,MACd,CAAC,QAAS,QACVwC,SAAQ,SAAUxC,GAClB,OAAO0B,EAAUU,gBAAgBpC,EAAK,GAAIA,EAAK,GACjD,IAKA,CAEE,YACA,SACA,SACA,MACA,WACA,UACA,OACA,YACA,QACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,UACA,QACA,WACA,MACA,WACA,cACA,QACA,SACA,WACA,YACA,MACA,SACA,YACA,YACA,YACA,WACA,WACA,MACA,UACA,UACA,WACA,WACA,eACA,SACA,SACA,YACA,WACA,YACA,cACA,QACA,UACA,QACA,SACA,aACA,YACA,WACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,YACA,OACA,WACA,SACA,SACA,YACA,WACA,OACA,WACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,iBACA,QACA,OACA,SACA,UACA,UACA,aACA,WACA,MACA,eAEA,gBACA,SACA,SACA,YACA,WACA,QACA,WACAwC,QAAQd,EAAUW,oBAEbX,CACT,CAhfqBA,E","sources":["../../../node_modules/@mui/icons-material/esm/Delete.js","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../../../node_modules/pluralize/pluralize.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","/* global define */\n\n(function (root, pluralize) {\n  /* istanbul ignore else */\n  if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n    // Node.\n    module.exports = pluralize();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD, registers as an anonymous module.\n    define(function () {\n      return pluralize();\n    });\n  } else {\n    // Browser global.\n    root.pluralize = pluralize();\n  }\n})(this, function () {\n  // Rule storage - pluralize and singularize need to be run sequentially,\n  // while other rules can be optimized using an object for instant lookups.\n  var pluralRules = [];\n  var singularRules = [];\n  var uncountables = {};\n  var irregularPlurals = {};\n  var irregularSingles = {};\n\n  /**\n   * Sanitize a pluralization rule to a usable regular expression.\n   *\n   * @param  {(RegExp|string)} rule\n   * @return {RegExp}\n   */\n  function sanitizeRule (rule) {\n    if (typeof rule === 'string') {\n      return new RegExp('^' + rule + '$', 'i');\n    }\n\n    return rule;\n  }\n\n  /**\n   * Pass in a word token to produce a function that can replicate the case on\n   * another word.\n   *\n   * @param  {string}   word\n   * @param  {string}   token\n   * @return {Function}\n   */\n  function restoreCase (word, token) {\n    // Tokens are an exact match.\n    if (word === token) return token;\n\n    // Lower cased words. E.g. \"hello\".\n    if (word === word.toLowerCase()) return token.toLowerCase();\n\n    // Upper cased words. E.g. \"WHISKY\".\n    if (word === word.toUpperCase()) return token.toUpperCase();\n\n    // Title cased words. E.g. \"Title\".\n    if (word[0] === word[0].toUpperCase()) {\n      return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n    }\n\n    // Lower cased words. E.g. \"test\".\n    return token.toLowerCase();\n  }\n\n  /**\n   * Interpolate a regexp string.\n   *\n   * @param  {string} str\n   * @param  {Array}  args\n   * @return {string}\n   */\n  function interpolate (str, args) {\n    return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n      return args[index] || '';\n    });\n  }\n\n  /**\n   * Replace a word using a rule.\n   *\n   * @param  {string} word\n   * @param  {Array}  rule\n   * @return {string}\n   */\n  function replace (word, rule) {\n    return word.replace(rule[0], function (match, index) {\n      var result = interpolate(rule[1], arguments);\n\n      if (match === '') {\n        return restoreCase(word[index - 1], result);\n      }\n\n      return restoreCase(match, result);\n    });\n  }\n\n  /**\n   * Sanitize a word by passing in the word and sanitization rules.\n   *\n   * @param  {string}   token\n   * @param  {string}   word\n   * @param  {Array}    rules\n   * @return {string}\n   */\n  function sanitizeWord (token, word, rules) {\n    // Empty string or doesn't need fixing.\n    if (!token.length || uncountables.hasOwnProperty(token)) {\n      return word;\n    }\n\n    var len = rules.length;\n\n    // Iterate over the sanitization rules and use the first one to match.\n    while (len--) {\n      var rule = rules[len];\n\n      if (rule[0].test(word)) return replace(word, rule);\n    }\n\n    return word;\n  }\n\n  /**\n   * Replace a word with the updated word.\n   *\n   * @param  {Object}   replaceMap\n   * @param  {Object}   keepMap\n   * @param  {Array}    rules\n   * @return {Function}\n   */\n  function replaceWord (replaceMap, keepMap, rules) {\n    return function (word) {\n      // Get the correct token and case restoration functions.\n      var token = word.toLowerCase();\n\n      // Check against the keep object map.\n      if (keepMap.hasOwnProperty(token)) {\n        return restoreCase(word, token);\n      }\n\n      // Check against the replacement map for a direct word replacement.\n      if (replaceMap.hasOwnProperty(token)) {\n        return restoreCase(word, replaceMap[token]);\n      }\n\n      // Run all the rules against the word.\n      return sanitizeWord(token, word, rules);\n    };\n  }\n\n  /**\n   * Check if a word is part of the map.\n   */\n  function checkWord (replaceMap, keepMap, rules, bool) {\n    return function (word) {\n      var token = word.toLowerCase();\n\n      if (keepMap.hasOwnProperty(token)) return true;\n      if (replaceMap.hasOwnProperty(token)) return false;\n\n      return sanitizeWord(token, token, rules) === token;\n    };\n  }\n\n  /**\n   * Pluralize or singularize a word based on the passed in count.\n   *\n   * @param  {string}  word      The word to pluralize\n   * @param  {number}  count     How many of the word exist\n   * @param  {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n   * @return {string}\n   */\n  function pluralize (word, count, inclusive) {\n    var pluralized = count === 1\n      ? pluralize.singular(word) : pluralize.plural(word);\n\n    return (inclusive ? count + ' ' : '') + pluralized;\n  }\n\n  /**\n   * Pluralize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.plural = replaceWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Check if a word is plural.\n   *\n   * @type {Function}\n   */\n  pluralize.isPlural = checkWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Singularize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.singular = replaceWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Check if a word is singular.\n   *\n   * @type {Function}\n   */\n  pluralize.isSingular = checkWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Add a pluralization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addPluralRule = function (rule, replacement) {\n    pluralRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add a singularization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addSingularRule = function (rule, replacement) {\n    singularRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add an uncountable word rule.\n   *\n   * @param {(string|RegExp)} word\n   */\n  pluralize.addUncountableRule = function (word) {\n    if (typeof word === 'string') {\n      uncountables[word.toLowerCase()] = true;\n      return;\n    }\n\n    // Set singular and plural references for the word.\n    pluralize.addPluralRule(word, '$0');\n    pluralize.addSingularRule(word, '$0');\n  };\n\n  /**\n   * Add an irregular word definition.\n   *\n   * @param {string} single\n   * @param {string} plural\n   */\n  pluralize.addIrregularRule = function (single, plural) {\n    plural = plural.toLowerCase();\n    single = single.toLowerCase();\n\n    irregularSingles[single] = plural;\n    irregularPlurals[plural] = single;\n  };\n\n  /**\n   * Irregular rules.\n   */\n  [\n    // Pronouns.\n    ['I', 'we'],\n    ['me', 'us'],\n    ['he', 'they'],\n    ['she', 'they'],\n    ['them', 'them'],\n    ['myself', 'ourselves'],\n    ['yourself', 'yourselves'],\n    ['itself', 'themselves'],\n    ['herself', 'themselves'],\n    ['himself', 'themselves'],\n    ['themself', 'themselves'],\n    ['is', 'are'],\n    ['was', 'were'],\n    ['has', 'have'],\n    ['this', 'these'],\n    ['that', 'those'],\n    // Words ending in with a consonant and `o`.\n    ['echo', 'echoes'],\n    ['dingo', 'dingoes'],\n    ['volcano', 'volcanoes'],\n    ['tornado', 'tornadoes'],\n    ['torpedo', 'torpedoes'],\n    // Ends with `us`.\n    ['genus', 'genera'],\n    ['viscus', 'viscera'],\n    // Ends with `ma`.\n    ['stigma', 'stigmata'],\n    ['stoma', 'stomata'],\n    ['dogma', 'dogmata'],\n    ['lemma', 'lemmata'],\n    ['schema', 'schemata'],\n    ['anathema', 'anathemata'],\n    // Other irregular rules.\n    ['ox', 'oxen'],\n    ['axe', 'axes'],\n    ['die', 'dice'],\n    ['yes', 'yeses'],\n    ['foot', 'feet'],\n    ['eave', 'eaves'],\n    ['goose', 'geese'],\n    ['tooth', 'teeth'],\n    ['quiz', 'quizzes'],\n    ['human', 'humans'],\n    ['proof', 'proofs'],\n    ['carve', 'carves'],\n    ['valve', 'valves'],\n    ['looey', 'looies'],\n    ['thief', 'thieves'],\n    ['groove', 'grooves'],\n    ['pickaxe', 'pickaxes'],\n    ['passerby', 'passersby']\n  ].forEach(function (rule) {\n    return pluralize.addIrregularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Pluralization rules.\n   */\n  [\n    [/s?$/i, 's'],\n    [/[^\\u0000-\\u007F]$/i, '$0'],\n    [/([^aeiou]ese)$/i, '$1'],\n    [/(ax|test)is$/i, '$1es'],\n    [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n    [/(e[mn]u)s?$/i, '$1s'],\n    [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n    [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n    [/(seraph|cherub)(?:im)?$/i, '$1im'],\n    [/(her|at|gr)o$/i, '$1oes'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n    [/sis$/i, 'ses'],\n    [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n    [/([^aeiouy]|qu)y$/i, '$1ies'],\n    [/([^ch][ieo][ln])ey$/i, '$1ies'],\n    [/(x|ch|ss|sh|zz)$/i, '$1es'],\n    [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n    [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n    [/(pe)(?:rson|ople)$/i, '$1ople'],\n    [/(child)(?:ren)?$/i, '$1ren'],\n    [/eaux$/i, '$0'],\n    [/m[ae]n$/i, 'men'],\n    ['thou', 'you']\n  ].forEach(function (rule) {\n    return pluralize.addPluralRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Singularization rules.\n   */\n  [\n    [/s$/i, ''],\n    [/(ss)$/i, '$1'],\n    [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n    [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n    [/ies$/i, 'y'],\n    [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n    [/\\b(mon|smil)ies$/i, '$1ey'],\n    [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n    [/(seraph|cherub)im$/i, '$1'],\n    [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n    [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n    [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n    [/(test)(?:is|es)$/i, '$1is'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n    [/(alumn|alg|vertebr)ae$/i, '$1a'],\n    [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n    [/(matr|append)ices$/i, '$1ix'],\n    [/(pe)(rson|ople)$/i, '$1rson'],\n    [/(child)ren$/i, '$1'],\n    [/(eau)x?$/i, '$1'],\n    [/men$/i, 'man']\n  ].forEach(function (rule) {\n    return pluralize.addSingularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Uncountable rules.\n   */\n  [\n    // Singular words with no plurals.\n    'adulthood',\n    'advice',\n    'agenda',\n    'aid',\n    'aircraft',\n    'alcohol',\n    'ammo',\n    'analytics',\n    'anime',\n    'athletics',\n    'audio',\n    'bison',\n    'blood',\n    'bream',\n    'buffalo',\n    'butter',\n    'carp',\n    'cash',\n    'chassis',\n    'chess',\n    'clothing',\n    'cod',\n    'commerce',\n    'cooperation',\n    'corps',\n    'debris',\n    'diabetes',\n    'digestion',\n    'elk',\n    'energy',\n    'equipment',\n    'excretion',\n    'expertise',\n    'firmware',\n    'flounder',\n    'fun',\n    'gallows',\n    'garbage',\n    'graffiti',\n    'hardware',\n    'headquarters',\n    'health',\n    'herpes',\n    'highjinks',\n    'homework',\n    'housework',\n    'information',\n    'jeans',\n    'justice',\n    'kudos',\n    'labour',\n    'literature',\n    'machinery',\n    'mackerel',\n    'mail',\n    'media',\n    'mews',\n    'moose',\n    'music',\n    'mud',\n    'manga',\n    'news',\n    'only',\n    'personnel',\n    'pike',\n    'plankton',\n    'pliers',\n    'police',\n    'pollution',\n    'premises',\n    'rain',\n    'research',\n    'rice',\n    'salmon',\n    'scissors',\n    'series',\n    'sewage',\n    'shambles',\n    'shrimp',\n    'software',\n    'species',\n    'staff',\n    'swine',\n    'tennis',\n    'traffic',\n    'transportation',\n    'trout',\n    'tuna',\n    'wealth',\n    'welfare',\n    'whiting',\n    'wildebeest',\n    'wildlife',\n    'you',\n    /pok[eé]mon$/i,\n    // Regexes.\n    /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n    /deer$/i, // \"deer\", \"reindeer\"\n    /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n    /measles$/i,\n    /o[iu]s$/i, // \"carnivorous\"\n    /pox$/i, // \"chickpox\", \"smallpox\"\n    /sheep$/i\n  ].forEach(pluralize.addUncountableRule);\n\n  return pluralize;\n});\n"],"names":["d","ListItemRoot","name","slot","overridesResolver","props","styles","ownerState","root","dense","alignItems","alignItemsFlexStart","divider","disableGutters","gutters","disablePadding","padding","hasSecondaryAction","secondaryAction","theme","display","justifyContent","position","textDecoration","width","boxSizing","textAlign","variants","style","paddingTop","paddingBottom","paddingLeft","paddingRight","borderBottom","vars","palette","backgroundClip","button","transition","transitions","create","duration","shortest","backgroundColor","action","hover","ListItemContainer","container","inProps","ref","children","childrenProp","className","component","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","slots","other","context","childContext","listItemRef","toArray","length","classes","useUtilityClasses","handleRef","Root","rootProps","componentProps","Component","Provider","value","as","pop","getListItemUtilityClass","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","transform","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass","module","exports","pluralRules","singularRules","uncountables","irregularPlurals","irregularSingles","sanitizeRule","rule","RegExp","restoreCase","word","token","toLowerCase","toUpperCase","charAt","substr","replace","match","index","str","args","result","arguments","sanitizeWord","rules","hasOwnProperty","len","test","replaceWord","replaceMap","keepMap","checkWord","bool","pluralize","count","inclusive","singular","plural","isPlural","isSingular","addPluralRule","replacement","push","addSingularRule","addUncountableRule","addIrregularRule","single","forEach"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3167.312d0953.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3167],{23167:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var s=n(46377),a=n(66885),r=n(99834),i=n(68120),c=n(78054),o=n(72147);class l extends s.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];constructor(e,t,n){super(e,t,n);const s=this.getConf("pifGzLocation"),a=this.getConf(["index","indexType"]),c=this.getConf(["index","location"]),o=this.pluginManager;this.pif=new i.wD({filehandle:(0,r.openLocation)(s,o),csiFilehandle:"CSI"===a?(0,r.openLocation)(c,o):void 0,tbiFilehandle:"CSI"!==a?(0,r.openLocation)(c,o):void 0,chunkCacheSize:52428800})}async getHeader(){return this.pif.getHeader()}getAssemblyNames(){const e=this.getConf("assemblyNames");return 0===e.length?[this.getConf("queryAssembly"),this.getConf("targetAssembly")]:e}async hasDataForRefName(){return!0}async getRefNames(e={}){const t=e.regions?.[0]?.assemblyName;if(!t)throw new Error("no assembly name provided");const n=this.getAssemblyNames().indexOf(t),s=await this.pif.getReferenceSequenceNames(e);return 0===n?s.filter((e=>e.startsWith("q"))).map((e=>e.slice(1))):1===n?s.filter((e=>e.startsWith("t"))).map((e=>e.slice(1))):[]}getFeatures(e,t={}){return(0,a.ObservableCreate)((async n=>{const{assemblyName:s}=e,a=this.getAssemblyNames(),r=0===a.indexOf(s),i=r?"q":"t";await this.pif.getLines(i+e.refName,e.start,e.end,{lineCallback:(e,t)=>{const i=(0,c.xI)(e),l=i.qname.slice(1),u=i.qstart,m=i.qend,d=i.tname,f=i.tstart,h=i.tend,{extra:p,strand:g}=i,{numMatches:b=0,blockLen:y=1,cg:w,...x}=p;n.next(new o.A({uniqueId:t+s,assemblyName:s,start:u,end:m,type:"match",refName:l,strand:g,...x,CIGAR:p.cg,syntenyId:t,identity:b/y,numMatches:b,blockLen:y,mate:{start:f,end:h,refName:d,assemblyName:a[+r]}}))},signal:t.signal}),n.complete()}))}freeResources(){}}},72147:(e,t,n)=>{n.d(t,{A:()=>i});var s=n(99546),a=n(82727);const{getMismatches:r}=a.aF;class i extends s.SimpleFeature{get(e){return"mismatches"===e?r(this.get("CIGAR")):super.get(e)}}},78054:(e,t,n)=>{n.d(t,{PX:()=>l,TA:()=>i,fY:()=>r,gJ:()=>d,qm:()=>m,xI:()=>u,yU:()=>c});var s=n(7706),a=n(99546);function r(e){return new Map(e.split(/\n|\r\n|\r/).filter((e=>!!e||e.startsWith("#"))).map((e=>{const[t,n,s,a,r,i]=e.split("\t");return[a,{refName:t,start:+n,end:+s,score:+r,name:a,strand:"-"===i?-1:1}]})))}async function i(e,t){const n=await e.readFile(t);return new TextDecoder("utf8",{fatal:!0}).decode((0,a.isGzip)(n)?await(0,s.unzip)(n):n)}function c(e,t){return e.map(((e,n)=>[e,t[n]]))}const o="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function l(e,t){let n=0;const s=[];for(;n<e.length;){const a=e.indexOf("\n",n);if(-1===a)break;const r=e.subarray(n,a),i=(o?.decode(r)||r.toString()).trim();i&&s.push(t(i)),n=a+1}return s}function u(e){const[t,,n,s,a,r,,i,c,o,l,u,...m]=e.split("\t");return{tname:r,tstart:+i,tend:+c,qname:t,qstart:+n,qend:+s,strand:"-"===a?-1:1,extra:{numMatches:+o,blockLen:+l,mappingQual:+u,...Object.fromEntries(m.map((e=>{const t=e.indexOf(":");return[e.slice(0,t),e.slice(t+3)]})))}}}function m(e){const t=[];for(let n=e.length-2;n>=0;n-=2){t.push(e[n]);const s=e[n+1];"D"===s?t.push("I"):"I"===s?t.push("D"):t.push(s)}return t}function d(e){return e.replaceAll("D","K").replaceAll("I","D").replaceAll("K","I")}}}]);
+//# sourceMappingURL=3167.312d0953.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3167.312d0953.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3167.312d0953.chunk.js","mappings":"6NAqBe,MAAMA,UAAmBC,EAAAA,uBACtC,oBAA6B,CAAC,cAAe,eAItCC,WAAAA,CACLC,EACAC,EACAC,GAEAC,MAAMH,EAAQC,EAAeC,GAC7B,MAAME,EAAWC,KAAKC,QAAQ,iBACxBC,EAAOF,KAAKC,QAAQ,CAAC,QAAS,cAC9BE,EAAMH,KAAKC,QAAQ,CAAC,QAAS,aAC7BG,EAAKJ,KAAKH,cAEhBG,KAAKK,IAAM,IAAIC,EAAAA,GAAiB,CAC9BC,YAAYC,EAAAA,EAAAA,cAAaT,EAAUK,GACnCK,cAAwB,QAATP,GAAiBM,EAAAA,EAAAA,cAAaL,EAAKC,QAAMM,EACxDC,cAAwB,QAATT,GAAiBM,EAAAA,EAAAA,cAAaL,EAAKC,QAAMM,EACxDE,eAAgB,UAEpB,CACA,eAAMC,GACJ,OAAOb,KAAKK,IAAIQ,WAClB,CAEAC,gBAAAA,GACE,MAAMC,EAAgBf,KAAKC,QAAQ,iBACnC,OAA6B,IAAzBc,EAAcC,OACT,CACLhB,KAAKC,QAAQ,iBACbD,KAAKC,QAAQ,mBAGVc,CACT,CAEA,uBAAaE,GACX,OAAO,CACT,CAEA,iBAAMC,CAAYC,EAA6C,CAAC,GAC9D,MAAMC,EAAKD,EAAKE,UAAU,IAAIC,aAC9B,IAAKF,EACH,MAAM,IAAIG,MAAM,6BAGlB,MAAMC,EAAMxB,KAAKc,mBAAmBW,QAAQL,GACtCM,QAAc1B,KAAKK,IAAIsB,0BAA0BR,GACvD,OAAY,IAARK,EACKE,EAAME,QAAOC,GAAKA,EAAEC,WAAW,OAAMC,KAAIF,GAAKA,EAAEG,MAAM,KAC5C,IAARR,EACFE,EAAME,QAAOC,GAAKA,EAAEC,WAAW,OAAMC,KAAIF,GAAKA,EAAEG,MAAM,KAEtD,EAEX,CAEAC,WAAAA,CAAYC,EAAef,EAAmB,CAAC,GAC7C,OAAOgB,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAM,aAAEd,GAAiBY,EAEnBnB,EAAgBf,KAAKc,mBAErBuB,EAAiB,IADTtB,EAAcU,QAAQH,GAE9BgB,EAASD,EAAO,IAAM,UAEtBrC,KAAKK,IAAIkC,SAASD,EAASJ,EAAMM,QAASN,EAAMO,MAAOP,EAAMQ,IAAK,CACtEC,aAAcA,CAACC,EAAMC,KACnB,MAAMC,GAAIC,EAAAA,EAAAA,IAAaH,GACjBJ,EAAUM,EAAEE,MAAMhB,MAAM,GACxBS,EAAQK,EAAEG,OACVP,EAAMI,EAAEI,KACRC,EAAWL,EAAEM,MACbC,EAAYP,EAAEQ,OACdC,EAAUT,EAAEU,MAEZ,MAAEC,EAAK,OAAEC,GAAWZ,GACpB,WAAEa,EAAa,EAAC,SAAEC,EAAW,EAAC,GAAEC,KAAOC,GAASL,EAEtDM,EAASC,KACP,IAAIC,EAAAA,EAAe,CACjBC,SAAUrB,EAAavB,EACvBA,eACAmB,QACAC,MACAxC,KAAM,QACNsC,UACAkB,YACGI,EACHK,MAAOV,EAAMI,GACbO,UAAWvB,EACXwB,SAAUV,EAAaC,EACvBD,aACAC,WACAU,KAAM,CACJ7B,MAAOY,EACPX,IAAKa,EACLf,QAASW,EACT7B,aAAcP,GAAesB,MAGlC,EAEHkC,OAAQpD,EAAKoD,SAGfR,EAASS,UAAU,GAEvB,CAEAC,aAAAA,GAAsC,E,6DCjIxC,MAAM,cAAEC,GAAkBC,EAAAA,GAEX,MAAMV,UAAuBW,EAAAA,cAC1CC,GAAAA,CAAIC,GACF,MAAY,eAARA,EACKJ,EAAc1E,KAAK6E,IAAI,UAEzB/E,MAAM+E,IAAIC,EACnB,E,mHCJK,SAASC,EAASC,GACvB,OAAO,IAAIC,IACTD,EACGE,MAAM,cACNtD,QAAOuD,KAAOA,GAAKA,EAAErD,WAAW,OAChCC,KAAIa,IACH,MAAOJ,EAASC,EAAOC,EAAK0C,EAAMC,EAAO3B,GAAUd,EAAKsC,MAAM,MAC9D,MAAO,CACLE,EACA,CACE5C,UACAC,OAAQA,EACRC,KAAMA,EACN2C,OAAQA,EACRD,OACA1B,OAAmB,MAAXA,GAAkB,EAAI,GAEjC,IAGT,CAEOtB,eAAekD,EAASC,EAAyBpE,GACtD,MAAMqE,QAAgBD,EAAKD,SAASnE,GACpC,OAAO,IAAIsE,YAAY,OAAQ,CAAEC,OAAO,IAAQC,QAC9CC,EAAAA,EAAAA,QAAOJ,SAAgBK,EAAAA,EAAAA,OAAML,GAAUA,EAE3C,CAEO,SAASM,EAAIC,EAAaC,GAC/B,OAAOD,EAAEhE,KAAI,CAACkE,EAAGC,IAAM,CAACD,EAAGD,EAAEE,KAC/B,CAEA,MAAMC,EACmB,oBAAhBV,YAA8B,IAAIA,YAAY,aAAU/E,EAE1D,SAAS0F,EACdZ,EACAa,GAEA,IAAIC,EAAa,EACjB,MAAMC,EAAU,GAChB,KAAOD,EAAad,EAAOxE,QAAQ,CACjC,MAAMa,EAAI2D,EAAO/D,QAAQ,KAAM6E,GAC/B,IAAW,IAAPzE,EACF,MAEF,MAAMmE,EAAIR,EAAOgB,SAASF,EAAYzE,GAChCe,GAAQuD,GAASR,OAAOK,IAAMA,EAAES,YAAYC,OAC9C9D,GACF2D,EAAQI,KAAKN,EAAGzD,IAGlB0D,EAAazE,EAAI,CACnB,CACA,OAAO0E,CACT,CAEO,SAASxD,EAAaH,GAC3B,MACEI,EAAM,CAENC,EACAC,EACAQ,EACAN,EAAM,CAENE,EACAE,EACAG,EACAC,EACAgD,KACGC,GACDjE,EAAKsC,MAAM,MAWf,MAAO,CACL9B,QACAE,QAASA,EACTE,MAAOA,EACPR,QACAC,QAASA,EACTC,MAAOA,EACPQ,OAAmB,MAAXA,GAAkB,EAAI,EAC9BD,MAAO,CACLE,YAAaA,EACbC,UAAWA,EACXgD,aAAcA,KApBLE,OAAOC,YAClBF,EAAO9E,KAAIiF,IACT,MAAMlE,EAAIkE,EAAMvF,QAAQ,KAGxB,MAAO,CAFWuF,EAAMhF,MAAM,EAAGc,GACdkE,EAAMhF,MAAMc,EAAI,GACL,MAmBpC,CAEO,SAASmE,EAAUC,GACxB,MAAMC,EAAM,GACZ,IAAK,IAAIjB,EAAIgB,EAAMlG,OAAS,EAAGkF,GAAK,EAAGA,GAAK,EAAG,CAC7CiB,EAAIR,KAAKO,EAAMhB,IACf,MAAMkB,EAAKF,EAAMhB,EAAI,GACV,MAAPkB,EACFD,EAAIR,KAAK,KACO,MAAPS,EACTD,EAAIR,KAAK,KAETQ,EAAIR,KAAKS,EAEb,CACA,OAAOD,CACT,CAEO,SAASE,EAAeH,GAC7B,OAAOA,EAAMI,WAAW,IAAK,KAAKA,WAAW,IAAK,KAAKA,WAAW,IAAK,IACzE,C","sources":["../../../plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts","../../../plugins/comparative-adapters/src/SyntenyFeature/index.ts","../../../plugins/comparative-adapters/src/util.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { FileLocation, Region } from '@jbrowse/core/util/types'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { TabixIndexedFile } from '@gmod/tabix'\n\n// locals\nimport { parsePAFLine } from '../util'\nimport SyntenyFeature from '../SyntenyFeature'\n\ninterface PAFOptions extends BaseOptions {\n  config?: AnyConfigurationModel\n}\n\nexport default class PAFAdapter extends BaseFeatureDataAdapter {\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  protected pif: TabixIndexedFile\n\n  public constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const pifGzLoc = this.getConf('pifGzLocation') as FileLocation\n    const type = this.getConf(['index', 'indexType'])\n    const loc = this.getConf(['index', 'location'])\n    const pm = this.pluginManager\n\n    this.pif = new TabixIndexedFile({\n      filehandle: openLocation(pifGzLoc, pm),\n      csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined,\n      tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined,\n      chunkCacheSize: 50 * 2 ** 20,\n    })\n  }\n  async getHeader() {\n    return this.pif.getHeader()\n  }\n\n  getAssemblyNames(): string[] {\n    const assemblyNames = this.getConf('assemblyNames') as string[]\n    if (assemblyNames.length === 0) {\n      return [\n        this.getConf('queryAssembly') as string,\n        this.getConf('targetAssembly') as string,\n      ]\n    }\n    return assemblyNames\n  }\n\n  public async hasDataForRefName() {\n    return true\n  }\n\n  async getRefNames(opts: BaseOptions & { regions?: Region[] } = {}) {\n    const r1 = opts.regions?.[0]?.assemblyName\n    if (!r1) {\n      throw new Error('no assembly name provided')\n    }\n\n    const idx = this.getAssemblyNames().indexOf(r1)\n    const names = await this.pif.getReferenceSequenceNames(opts)\n    if (idx === 0) {\n      return names.filter(n => n.startsWith('q')).map(n => n.slice(1))\n    } else if (idx === 1) {\n      return names.filter(n => n.startsWith('t')).map(n => n.slice(1))\n    } else {\n      return []\n    }\n  }\n\n  getFeatures(query: Region, opts: PAFOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { assemblyName } = query\n\n      const assemblyNames = this.getAssemblyNames()\n      const index = assemblyNames.indexOf(assemblyName)\n      const flip = index === 0\n      const letter = flip ? 'q' : 't'\n\n      await this.pif.getLines(letter + query.refName, query.start, query.end, {\n        lineCallback: (line, fileOffset) => {\n          const r = parsePAFLine(line)\n          const refName = r.qname.slice(1)\n          const start = r.qstart\n          const end = r.qend\n          const mateName = r.tname\n          const mateStart = r.tstart\n          const mateEnd = r.tend\n\n          const { extra, strand } = r\n          const { numMatches = 0, blockLen = 1, cg, ...rest } = extra\n\n          observer.next(\n            new SyntenyFeature({\n              uniqueId: fileOffset + assemblyName,\n              assemblyName,\n              start,\n              end,\n              type: 'match',\n              refName,\n              strand,\n              ...rest,\n              CIGAR: extra.cg,\n              syntenyId: fileOffset,\n              identity: numMatches / blockLen,\n              numMatches,\n              blockLen,\n              mate: {\n                start: mateStart,\n                end: mateEnd,\n                refName: mateName,\n                assemblyName: assemblyNames[+flip],\n              },\n            }),\n          )\n        },\n        signal: opts.signal,\n      })\n\n      observer.complete()\n    })\n  }\n\n  freeResources(/* { query } */): void {}\n}\n","import { SimpleFeature } from '@jbrowse/core/util'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\n\n// locals\nconst { getMismatches } = MismatchParser\n\nexport default class SyntenyFeature extends SimpleFeature {\n  get(arg: string): any {\n    if (arg === 'mismatches') {\n      return getMismatches(this.get('CIGAR'))\n    }\n    return super.get(arg)\n  }\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport { PAFRecord } from './PAFAdapter/util'\n\nexport function parseBed(text: string) {\n  return new Map(\n    text\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f || f.startsWith('#'))\n      .map(line => {\n        const [refName, start, end, name, score, strand] = line.split('\\t')\n        return [\n          name,\n          {\n            refName,\n            start: +start!,\n            end: +end!,\n            score: +score!,\n            name,\n            strand: strand === '-' ? -1 : 1,\n          },\n        ]\n      }),\n  )\n}\n\nexport async function readFile(file: GenericFilehandle, opts?: BaseOptions) {\n  const buffer = (await file.readFile(opts)) as Buffer\n  return new TextDecoder('utf8', { fatal: true }).decode(\n    isGzip(buffer) ? await unzip(buffer) : buffer,\n  )\n}\n\nexport function zip(a: number[], b: number[]) {\n  return a.map((e, i) => [e, b[i]] as [number, number])\n}\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\nexport function parseLineByLine(\n  buffer: Buffer,\n  cb: (line: string) => PAFRecord,\n) {\n  let blockStart = 0\n  const entries = []\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const line = (decoder?.decode(b) || b.toString()).trim()\n    if (line) {\n      entries.push(cb(line))\n    }\n\n    blockStart = n + 1\n  }\n  return entries\n}\n\nexport function parsePAFLine(line: string) {\n  const [\n    qname,\n    ,\n    qstart,\n    qend,\n    strand,\n    tname,\n    ,\n    tstart,\n    tend,\n    numMatches,\n    blockLen,\n    mappingQual,\n    ...fields\n  ] = line.split('\\t')\n\n  const rest = Object.fromEntries(\n    fields.map(field => {\n      const r = field.indexOf(':')\n      const fieldName = field.slice(0, r)\n      const fieldValue = field.slice(r + 3)\n      return [fieldName, fieldValue]\n    }),\n  )\n\n  return {\n    tname,\n    tstart: +tstart!,\n    tend: +tend!,\n    qname,\n    qstart: +qstart!,\n    qend: +qend!,\n    strand: strand === '-' ? -1 : 1,\n    extra: {\n      numMatches: +numMatches!,\n      blockLen: +blockLen!,\n      mappingQual: +mappingQual!,\n      ...rest,\n    },\n  } as PAFRecord\n}\n\nexport function flipCigar(cigar: string[]) {\n  const arr = []\n  for (let i = cigar.length - 2; i >= 0; i -= 2) {\n    arr.push(cigar[i])\n    const op = cigar[i + 1]\n    if (op === 'D') {\n      arr.push('I')\n    } else if (op === 'I') {\n      arr.push('D')\n    } else {\n      arr.push(op)\n    }\n  }\n  return arr\n}\n\nexport function swapIndelCigar(cigar: string) {\n  return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I')\n}\n"],"names":["PAFAdapter","BaseFeatureDataAdapter","constructor","config","getSubAdapter","pluginManager","super","pifGzLoc","this","getConf","type","loc","pm","pif","TabixIndexedFile","filehandle","openLocation","csiFilehandle","undefined","tbiFilehandle","chunkCacheSize","getHeader","getAssemblyNames","assemblyNames","length","hasDataForRefName","getRefNames","opts","r1","regions","assemblyName","Error","idx","indexOf","names","getReferenceSequenceNames","filter","n","startsWith","map","slice","getFeatures","query","ObservableCreate","async","flip","letter","getLines","refName","start","end","lineCallback","line","fileOffset","r","parsePAFLine","qname","qstart","qend","mateName","tname","mateStart","tstart","mateEnd","tend","extra","strand","numMatches","blockLen","cg","rest","observer","next","SyntenyFeature","uniqueId","CIGAR","syntenyId","identity","mate","signal","complete","freeResources","getMismatches","MismatchParser","SimpleFeature","get","arg","parseBed","text","Map","split","f","name","score","readFile","file","buffer","TextDecoder","fatal","decode","isGzip","unzip","zip","a","b","e","i","decoder","parseLineByLine","cb","blockStart","entries","subarray","toString","trim","push","mappingQual","fields","Object","fromEntries","field","flipCigar","cigar","arr","op","swapIndelCigar","replaceAll"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3175.af2c93a5.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3175],{43175:(e,s,r)=>{r.r(s),r.d(s,{default:()=>i});var t=r(46377),a=r(99834);class i extends t.BaseAdapter{async getRefNameAliases(){const e=this.getConf("location");if(""===e.uri||"/path/to/my/sequence_report.tsv"===e.uri)return[];const s=this.getConf("useUcscNameOverride");return(await(0,a.openLocation)(e,this.pluginManager).readFile("utf8")).split(/\n|\r\n|\r/).slice(1).filter((e=>!!e.trim())).map((e=>e.split("\t"))).map((e=>({refName:e[12],aliases:[e[9],e[6]].filter((e=>!!e)),override:s}))).filter((e=>!!e.refName))}async freeResources(){}}}}]);
+//# sourceMappingURL=3175.af2c93a5.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3175.af2c93a5.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3175.af2c93a5.chunk.js","mappings":"iLAMe,MAAMA,UACXC,EAAAA,YAGR,uBAAMC,GACJ,MAAMC,EAAMC,KAAKC,QAAQ,YACzB,GAAgB,KAAZF,EAAIG,KAA0B,oCAAZH,EAAIG,IACxB,MAAO,GAET,MAAMC,EAAWH,KAAKC,QAAQ,uBAE9B,aADsBG,EAAAA,EAAAA,cAAaL,EAAKC,KAAKK,eAAeC,SAAS,SAElEC,MAAM,cACNC,MAAM,GACNC,QAAOC,KAAOA,EAAEC,SAChBC,KAAIC,GAAOA,EAAIN,MAAM,QACrBK,KAAIE,IAAQ,CACXC,QAASD,EAAK,IACdE,QAAS,CAACF,EAAK,GAAIA,EAAK,IAAIL,QAAQC,KAAqBA,IACzDP,eAEDM,QAAOC,KAAOA,EAAEK,SACrB,CAEA,mBAAME,GAAiB,E","sources":["../../../plugins/config/src/NcbiSequenceReportAliasAdapter/NcbiSequenceReportAliasAdapter.ts"],"sourcesContent":["import {\n  BaseRefNameAliasAdapter,\n  BaseAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\n\nexport default class NcbiSequenceReportAliasAdapter\n  extends BaseAdapter\n  implements BaseRefNameAliasAdapter\n{\n  async getRefNameAliases() {\n    const loc = this.getConf('location')\n    if (loc.uri === '' || loc.uri === '/path/to/my/sequence_report.tsv') {\n      return []\n    }\n    const override = this.getConf('useUcscNameOverride')\n    const results = await openLocation(loc, this.pluginManager).readFile('utf8')\n    return results\n      .split(/\\n|\\r\\n|\\r/)\n      .slice(1)\n      .filter(f => !!f.trim())\n      .map(row => row.split('\\t'))\n      .map(cols => ({\n        refName: cols[12]!,\n        aliases: [cols[9], cols[6]].filter((f): f is string => !!f),\n        override,\n      }))\n      .filter(f => !!f.refName)\n  }\n\n  async freeResources() {}\n}\n"],"names":["NcbiSequenceReportAliasAdapter","BaseAdapter","getRefNameAliases","loc","this","getConf","uri","override","openLocation","pluginManager","readFile","split","slice","filter","f","trim","map","row","cols","refName","aliases","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3199.a36b17a7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3199],{53199:(e,l,t)=>{t.r(l),t.d(l,{default:()=>G});var a=t(7552),n=t(68446),o=t(75785),s=t(99546),r=t(9937),i=t(23758),c=t(87731),m=t(85676),d=t(92179),b=t(66395),u=t(84495);const h=(0,a.lazy)((()=>t.e(4773).then(t.bind(t,84773)))),k=(0,o.n9)()((()=>({cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}))),w=(0,n.observer)((function({model:e}){const{classes:l}=k(),{bookmarks:t,bookmarksWithValidAssemblies:n,selectedAssemblies:o,selectedBookmarks:r}=e,i=(0,s.getSession)(e),w=new Set(o),g=t.filter((e=>w.has(e.assemblyName))).map(((e,l)=>{const{assemblyName:t,...a}=e;return{...e,id:l,assemblyName:t,locString:(0,s.assembleLocString)(a),correspondingObj:e}})),f=[50,Math.max((0,s.measureText)("Bookmark link",12)+30,(0,s.measureGridWidth)(g.map((e=>e.locString)))),Math.max((0,s.measureText)("Label",12)+30,(0,s.measureGridWidth)(g.map((e=>e.label)))),Math.max((0,s.measureText)("Assembly",12)+30,(0,s.measureGridWidth)(g.map((e=>e.assemblyName)))),100];return a.createElement(m.z,{autoHeight:!0,density:"compact",rows:g,columns:[{...d.f,width:f[0]},{field:"locString",headerName:"Bookmark link",width:f[1],renderCell:({value:t,row:n})=>a.createElement(c.A,{className:l.cell,href:"#",onClick:async l=>{l.preventDefault();const{views:a}=i;await(0,u.Jn)(t,n.assemblyName,a,e)}},t)},{field:"label",headerName:"Label",width:f[2],editable:!0},{field:"assemblyName",headerName:"Assembly",width:f[3]},{field:"highlight",headerName:"Highlight",width:f[4],renderCell:({value:l,row:t})=>a.createElement(b.Ay,{color:l||"black",onChange:l=>{e.updateBookmarkHighlight(t,l)}})}],onCellDoubleClick:({row:l})=>{(0,s.getSession)(e).queueDialog((t=>[h,{onClose:t,model:e,dialogRow:l}]))},processRowUpdate:l=>{const t=g[l.id];return e.updateBookmarkLabel(t,l.label),l},onProcessRowUpdateError:e=>{i.notifyError(`${e}`,e)},checkboxSelection:!0,onRowSelectionModelChange:l=>{n.length>0&&e.setSelectedBookmarks(l.map((e=>({...g[e]}))))},rowSelectionModel:r.map((e=>e.id)),disableRowSelectionOnClick:!0})}));var g=t(48171),f=t(17125),y=t(98360),p=t(28172),A=t(29629),v=t(32808),E=t(81453);const S=(0,n.observer)((function({model:e}){const{validAssemblies:l,selectedAssemblies:t}=e,n=0===l.size,o="Select assemblies",s="select-assemblies-label",r=new Set(t),i=[...l].every((e=>r.has(e)));return a.createElement(g.A,{disabled:n,fullWidth:!0},a.createElement(f.A,{id:s},o),a.createElement(y.A,{labelId:s,multiple:!0,value:t,onChange:l=>{e.setSelectedAssemblies([...l.target.value])},input:a.createElement(p.A,{label:o}),renderValue:e=>e.join(", ")},a.createElement(A.A,{onClickCapture:l=>{i?e.setSelectedAssemblies([]):e.setSelectedAssemblies(void 0),l.preventDefault()}},a.createElement(v.A,{checked:i,indeterminate:!i&&t.length>0}),a.createElement(E.A,{primary:"Select all"})),[...l].map((e=>a.createElement(A.A,{key:e,value:e},a.createElement(v.A,{checked:t.includes(e)}),a.createElement(E.A,{primary:e}))))))}));var C=t(922),N=t(91194),x=t(550),$=t(22168),_=t(53794),D=t(37702),B=t(25762);const z=(0,a.lazy)((()=>t.e(5746).then(t.bind(t,5746)))),L=(0,a.lazy)((()=>Promise.all([t.e(3011),t.e(3425)]).then(t.bind(t,23425)))),T=(0,a.lazy)((()=>t.e(419).then(t.bind(t,20419)))),q=(0,a.lazy)((()=>t.e(772).then(t.bind(t,70772)))),V=(0,a.lazy)((()=>t.e(1326).then(t.bind(t,11326)))),W=(0,a.lazy)((()=>t.e(1811).then(t.bind(t,71811)))),j=(0,o.n9)()({flex:{display:"flex"}}),G=(0,n.observer)((function({model:e}){const{classes:l}=j();return a.createElement("div",null,a.createElement(r.A,{severity:"info"},"Click and type within the ",a.createElement("strong",null,"label")," field to annotate your bookmark. Double click the ",a.createElement("strong",null,"label")," field to do so within a dialog."),a.createElement("div",{className:l.flex},a.createElement(i.A,{"data-testid":"grid_bookmark_menu",menuItems:[{label:"Export",icon:N.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[z,{onClose:l,model:e}]))}},{label:"Import",icon:x.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[L,{model:e,onClose:l}]))}},{label:"Delete",icon:B.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[W,{model:e,onClose:l}]))}},{label:"Share",icon:D.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[T,{model:e,onClose:l}]))}},{label:"Edit colors",icon:_.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[V,{model:e,onClose:l}]))}},{label:"Settings",icon:$.A,onClick:()=>{(0,s.getSession)(e).queueDialog((l=>[q,{model:e,onClose:l}]))}}]},a.createElement(C.A,null)),a.createElement(S,{model:e})),a.createElement(w,{model:e}))}))},84495:(e,l,t)=>{t.d(l,{Jn:()=>o,LP:()=>r,eW:()=>i,fU:()=>s});var a=t(45465),n=t(99546);async function o(e,l,t,a){const o=(0,n.getSession)(a);try{let n=t.find((e=>e.id===o.focusedViewId));if(n?.assemblyNames[0]!==l&&(n=t.find((e=>"LinearGenomeView"===e.type&&e.assemblyNames[0]===l))),!n){const e=`${a.id}_${l}`;n=o.addView("LinearGenomeView",{id:e})}await n.navToLocString(e,l)}catch(e){console.error(e),o.notifyError(`${e}`,e)}}function s(e,l){const{selectedBookmarks:t,bookmarksWithValidAssemblies:o}=l,s=0===t.length?o:t;if("BED"===e){const e="",l={};s.forEach((e=>{const{label:t}=e,a=""===t?".":t,n=`${e.refName}\t${e.start}\t${e.end}\t${a}\n`;l[e.assemblyName]?l[e.assemblyName].push(n):l[e.assemblyName]=[n]}));for(const t in l){const n=l[t].reduce(((e,l)=>e+l),e),o=new Blob([n||""],{type:"text/x-bed;charset=utf-8"}),s=`jbrowse_bookmarks_${t}.bed`;(0,a.saveAs)(o,s)}}else{const e="chrom\tstart\tend\tlabel\tassembly_name\tcoord_range\n",l=s.map((e=>{const{label:l}=e,t=""===l?".":l,a=(0,n.assembleLocString)(e);return`${e.refName}\t${e.start+1}\t${e.end}\t${t}\t${e.assemblyName}\t${a}\n`})).reduce(((e,l)=>e+l),e),t=new Blob([l||""],{type:"text/tab-separated-values;charset=utf-8"}),o="jbrowse_bookmarks.tsv";(0,a.saveAs)(t,o)}}async function r(e){const l=function(e){let l=0;switch(e.length%4){case 3:l=1;break;case 2:l=2;break;case 0:l=0;break;default:throw new Error("base64 not a valid length")}return e+"=".repeat(l)}(e.replaceAll("-","+").replaceAll("_","/")),{toByteArray:a}=await Promise.resolve().then(t.t.bind(t,47130,19)),{inflate:n}=await t.e(7864).then(t.t.bind(t,57864,23)),o=n(a(l));return(new TextDecoder).decode(o)}async function i(e){const l=(new TextEncoder).encode(e),{deflate:a}=await t.e(7864).then(t.t.bind(t,57864,23)),{fromByteArray:n}=await Promise.resolve().then(t.t.bind(t,47130,19)),o=n(a(l)),s=o.indexOf("=");return s>0?o.slice(0,s).replaceAll("+","-").replaceAll("/","_"):o.replaceAll("+","-").replaceAll("/","_")}}}]);
+//# sourceMappingURL=3199.a36b17a7.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3199.a36b17a7.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3199.a36b17a7.chunk.js","mappings":"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","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/BookmarkGrid.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/AssemblySelector.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/GridBookmarkWidget.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/utils.ts"],"sourcesContent":["import React, { lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { Link } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { DataGrid, GRID_CHECKBOX_SELECTION_COL_DEF } from '@mui/x-data-grid'\nimport {\n  getSession,\n  assembleLocString,\n  measureGridWidth,\n  measureText,\n} from '@jbrowse/core/util'\nimport ColorPicker from '@jbrowse/core/ui/ColorPicker'\n\n// locals\nimport { navToBookmark } from '../utils'\nimport { GridBookmarkModel } from '../model'\n\nconst EditBookmarkLabelDialog = lazy(\n  () => import('./dialogs/EditBookmarkLabelDialog'),\n)\n\nconst useStyles = makeStyles()(() => ({\n  cell: {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n  },\n}))\n\nconst BookmarkGrid = observer(function ({\n  model,\n}: {\n  model: GridBookmarkModel\n}) {\n  const { classes } = useStyles()\n  const {\n    bookmarks,\n    bookmarksWithValidAssemblies,\n    selectedAssemblies,\n    selectedBookmarks,\n  } = model\n\n  const session = getSession(model)\n  const selectedSet = new Set(selectedAssemblies)\n  const rows = bookmarks\n    .filter(r => selectedSet.has(r.assemblyName))\n    .map((region, index) => {\n      const { assemblyName, ...rest } = region\n      return {\n        ...region,\n        id: index,\n        assemblyName,\n        locString: assembleLocString(rest),\n        correspondingObj: region,\n      }\n    })\n\n  const widths = [\n    50,\n    Math.max(\n      measureText('Bookmark link', 12) + 30,\n      measureGridWidth(rows.map(row => row.locString)),\n    ),\n    Math.max(\n      measureText('Label', 12) + 30,\n      measureGridWidth(rows.map(row => row.label)),\n    ),\n    Math.max(\n      measureText('Assembly', 12) + 30,\n      measureGridWidth(rows.map(row => row.assemblyName)),\n    ),\n    100,\n  ]\n\n  return (\n    <DataGrid\n      autoHeight\n      density=\"compact\"\n      rows={rows}\n      columns={[\n        {\n          ...GRID_CHECKBOX_SELECTION_COL_DEF,\n          width: widths[0],\n        },\n        {\n          field: 'locString',\n          headerName: 'Bookmark link',\n          width: widths[1],\n          renderCell: ({ value, row }) => (\n            <Link\n              className={classes.cell}\n              href=\"#\"\n              onClick={async event => {\n                event.preventDefault()\n                const { views } = session\n                await navToBookmark(value, row.assemblyName, views, model)\n              }}\n            >\n              {value}\n            </Link>\n          ),\n        },\n        {\n          field: 'label',\n          headerName: 'Label',\n          width: widths[2],\n          editable: true,\n        },\n        {\n          field: 'assemblyName',\n          headerName: 'Assembly',\n          width: widths[3],\n        },\n        {\n          field: 'highlight',\n          headerName: 'Highlight',\n          width: widths[4],\n          renderCell: ({ value, row }) => (\n            <ColorPicker\n              color={value || 'black'}\n              onChange={event => {\n                model.updateBookmarkHighlight(row, event)\n              }}\n            />\n          ),\n        },\n      ]}\n      onCellDoubleClick={({ row }) => {\n        getSession(model).queueDialog(onClose => [\n          EditBookmarkLabelDialog,\n          { onClose, model, dialogRow: row },\n        ])\n      }}\n      processRowUpdate={row => {\n        const target = rows[row.id]!\n        model.updateBookmarkLabel(target, row.label)\n        return row\n      }}\n      onProcessRowUpdateError={e => {\n        session.notifyError(`${e}`, e)\n      }}\n      checkboxSelection\n      onRowSelectionModelChange={newRowSelectionModel => {\n        if (bookmarksWithValidAssemblies.length > 0) {\n          model.setSelectedBookmarks(\n            newRowSelectionModel.map(value => ({\n              ...rows[value as number]!,\n            })),\n          )\n        }\n      }}\n      rowSelectionModel={selectedBookmarks.map(r => r.id)}\n      disableRowSelectionOnClick\n    />\n  )\n})\n\nexport default BookmarkGrid\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Checkbox,\n  FormControl,\n  InputLabel,\n  ListItemText,\n  MenuItem,\n  OutlinedInput,\n  Select,\n} from '@mui/material'\n\n// locals\nimport { GridBookmarkModel } from '../model'\n\nconst AssemblySelector = observer(function ({\n  model,\n}: {\n  model: GridBookmarkModel\n}) {\n  const { validAssemblies, selectedAssemblies } = model\n  const noAssemblies = validAssemblies.size === 0\n  const label = 'Select assemblies'\n  const id = 'select-assemblies-label'\n  const selectedSet = new Set(selectedAssemblies)\n  const isAllSelected = [...validAssemblies].every(e => selectedSet.has(e))\n\n  return (\n    <FormControl disabled={noAssemblies} fullWidth>\n      <InputLabel id={id}>{label}</InputLabel>\n      <Select\n        labelId={id}\n        multiple\n        value={selectedAssemblies}\n        onChange={event => {\n          model.setSelectedAssemblies([...event.target.value])\n        }}\n        input={<OutlinedInput label={label} />}\n        renderValue={selected => selected.join(', ')}\n      >\n        <MenuItem\n          onClickCapture={event => {\n            // onClickCapture allows us to avoid the parent Select onChange from triggering\n            if (isAllSelected) {\n              model.setSelectedAssemblies([])\n            } else {\n              model.setSelectedAssemblies(undefined)\n            }\n            event.preventDefault()\n          }}\n        >\n          <Checkbox\n            checked={isAllSelected}\n            indeterminate={!isAllSelected && selectedAssemblies.length > 0}\n          />\n          <ListItemText primary=\"Select all\" />\n        </MenuItem>\n        {[...validAssemblies].map(name => (\n          <MenuItem key={name} value={name}>\n            <Checkbox checked={selectedAssemblies.includes(name)} />\n            <ListItemText primary={name} />\n          </MenuItem>\n        ))}\n      </Select>\n    </FormControl>\n  )\n})\n\nexport default AssemblySelector\n","import React, { lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession } from '@jbrowse/core/util'\nimport { Alert } from '@mui/material'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// locals\nimport BookmarkGrid from './BookmarkGrid'\nimport AssemblySelector from './AssemblySelector'\nimport { GridBookmarkModel } from '../model'\n\n// icons\nimport Menu from '@mui/icons-material/Menu'\nimport GetApp from '@mui/icons-material/GetApp'\nimport Publish from '@mui/icons-material/Publish'\nimport Settings from '@mui/icons-material/Settings'\nimport Palette from '@mui/icons-material/Palette'\nimport Share from '@mui/icons-material/Share'\nimport Delete from '@mui/icons-material/Delete'\n\n// lazies\nconst ExportBookmarksDialog = lazy(\n  () => import('./dialogs/ExportBookmarksDialog'),\n)\nconst ImportBookmarksDialog = lazy(\n  () => import('./dialogs/ImportBookmarksDialog'),\n)\nconst ShareBookmarksDialog = lazy(\n  () => import('./dialogs/ShareBookmarksDialog'),\n)\nconst HighlightSettingsDialog = lazy(\n  () => import('./dialogs/HighlightSettingsDialog'),\n)\nconst EditHighlightColorDialog = lazy(\n  () => import('./dialogs/EditHighlightColorDialog'),\n)\nconst DeleteBookmarksDialog = lazy(\n  () => import('./dialogs/DeleteBookmarksDialog'),\n)\n\nconst useStyles = makeStyles()({\n  flex: {\n    display: 'flex',\n  },\n})\n\nconst GridBookmarkWidget = observer(function GridBookmarkWidget({\n  model,\n}: {\n  model: GridBookmarkModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <div>\n      <Alert severity=\"info\">\n        Click and type within the <strong>label</strong> field to annotate your\n        bookmark. Double click the <strong>label</strong> field to do so within\n        a dialog.\n      </Alert>\n      <div className={classes.flex}>\n        <CascadingMenuButton\n          data-testid=\"grid_bookmark_menu\"\n          menuItems={[\n            {\n              label: 'Export',\n              icon: GetApp,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  ExportBookmarksDialog,\n                  { onClose, model },\n                ])\n              },\n            },\n            {\n              label: 'Import',\n              icon: Publish,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  ImportBookmarksDialog,\n                  { model, onClose },\n                ])\n              },\n            },\n            {\n              label: 'Delete',\n              icon: Delete,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  DeleteBookmarksDialog,\n                  { model, onClose },\n                ])\n              },\n            },\n            {\n              label: 'Share',\n              icon: Share,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  ShareBookmarksDialog,\n                  { model, onClose },\n                ])\n              },\n            },\n            {\n              label: 'Edit colors',\n              icon: Palette,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  EditHighlightColorDialog,\n                  { model, onClose },\n                ])\n              },\n            },\n            {\n              label: 'Settings',\n              icon: Settings,\n              onClick: () => {\n                getSession(model).queueDialog(onClose => [\n                  HighlightSettingsDialog,\n                  { model, onClose },\n                ])\n              },\n            },\n          ]}\n        >\n          <Menu />\n        </CascadingMenuButton>\n\n        <AssemblySelector model={model} />\n      </div>\n      <BookmarkGrid model={model} />\n    </div>\n  )\n})\n\nexport default GridBookmarkWidget\n","import { saveAs } from 'file-saver'\nimport { getSession, assembleLocString } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { AbstractViewModel } from '@jbrowse/core/util/types'\n\n// locals\nimport { GridBookmarkModel } from './model'\n\ntype LGV = LinearGenomeViewModel\n\ntype MaybeLGV = LGV | undefined\n\nexport async function navToBookmark(\n  locString: string,\n  assembly: string,\n  views: AbstractViewModel[],\n  model: GridBookmarkModel,\n) {\n  const session = getSession(model)\n  try {\n    // get the focused view\n    let view = views.find(view => view.id === session.focusedViewId) as MaybeLGV\n\n    // check if the focused view is the appropriate assembly, if not proceed\n    if (view?.assemblyNames[0] !== assembly) {\n      view = views.find(\n        elt =>\n          // @ts-expect-error\n          elt.type === 'LinearGenomeView' && elt.assemblyNames[0] === assembly,\n      ) as MaybeLGV\n    }\n\n    // if no view is opened of the selectedAssembly, open a new\n    // view with that assembly\n    if (!view) {\n      const newViewId = `${model.id}_${assembly}`\n      view = session.addView('LinearGenomeView', {\n        id: newViewId,\n      }) as LGV\n    }\n    await view.navToLocString(locString, assembly)\n  } catch (e) {\n    console.error(e)\n    session.notifyError(`${e}`, e)\n  }\n}\n\nexport function downloadBookmarkFile(\n  fileFormat: string,\n  model: GridBookmarkModel,\n) {\n  const { selectedBookmarks, bookmarksWithValidAssemblies } = model\n  const bookmarksToDownload =\n    selectedBookmarks.length === 0\n      ? bookmarksWithValidAssemblies\n      : selectedBookmarks\n\n  if (fileFormat === 'BED') {\n    const fileHeader = ''\n    const fileContents: Record<string, string[]> = {}\n    bookmarksToDownload.forEach(bookmark => {\n      const { label } = bookmark\n      const labelVal = label === '' ? '.' : label\n      const line = `${bookmark.refName}\\t${bookmark.start}\\t${bookmark.end}\\t${labelVal}\\n`\n\n      if (fileContents[bookmark.assemblyName]) {\n        fileContents[bookmark.assemblyName]!.push(line)\n      } else {\n        fileContents[bookmark.assemblyName] = [line]\n      }\n    })\n\n    for (const assembly in fileContents) {\n      const fileContent = fileContents[assembly]!.reduce(\n        (a, b) => a + b,\n        fileHeader,\n      )\n      const blob = new Blob([fileContent || ''], {\n        type: 'text/x-bed;charset=utf-8',\n      })\n      const fileName = `jbrowse_bookmarks_${assembly}.bed`\n      saveAs(blob, fileName)\n    }\n  } else {\n    // TSV\n    const fileHeader = 'chrom\\tstart\\tend\\tlabel\\tassembly_name\\tcoord_range\\n'\n\n    const fileContents = bookmarksToDownload\n      .map(bookmark => {\n        const { label } = bookmark\n        const labelVal = label === '' ? '.' : label\n        const locString = assembleLocString(bookmark)\n        return `${bookmark.refName}\\t${bookmark.start + 1}\\t${\n          bookmark.end\n        }\\t${labelVal}\\t${bookmark.assemblyName}\\t${locString}\\n`\n      })\n      .reduce((a, b) => a + b, fileHeader)\n\n    const blob = new Blob([fileContents || ''], {\n      type: 'text/tab-separated-values;charset=utf-8',\n    })\n    const fileName = 'jbrowse_bookmarks.tsv'\n    saveAs(blob, fileName)\n  }\n}\n\n/**\n * Pad the end of a base64 string with \"=\" to make it valid\n * @param b64 - unpadded b64 string\n */\nexport function b64PadSuffix(b64: string): string {\n  let num = 0\n  const mo = b64.length % 4\n  switch (mo) {\n    case 3:\n      num = 1\n      break\n    case 2:\n      num = 2\n      break\n    case 0:\n      num = 0\n      break\n    default:\n      throw new Error('base64 not a valid length')\n  }\n  return b64 + '='.repeat(num)\n}\n\n/**\n * Decode and inflate a url-safe base64 to a string\n * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}\n * @param b64 - a base64 string to decode and inflate\n */\nexport async function fromUrlSafeB64(b64: string) {\n  const originalB64 = b64PadSuffix(\n    b64.replaceAll('-', '+').replaceAll('_', '/'),\n  )\n  const { toByteArray } = await import('base64-js')\n  const { inflate } = await import('pako')\n  const bytes = toByteArray(originalB64)\n  const inflated = inflate(bytes)\n  return new TextDecoder().decode(inflated)\n}\n\n/**\n * Compress and encode a string as url-safe base64\n * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}\n * @param str-  a string to compress and encode\n */\nexport async function toUrlSafeB64(str: string) {\n  const bytes = new TextEncoder().encode(str)\n  const { deflate } = await import('pako')\n  const { fromByteArray } = await import('base64-js')\n  const deflated = deflate(bytes)\n  const encoded = fromByteArray(deflated)\n  const pos = encoded.indexOf('=')\n  return pos > 0\n    ? encoded.slice(0, pos).replaceAll('+', '-').replaceAll('/', '_')\n    : encoded.replaceAll('+', '-').replaceAll('/', '_')\n}\n"],"names":["EditBookmarkLabelDialog","lazy","useStyles","makeStyles","cell","whiteSpace","overflow","textOverflow","observer","model","classes","bookmarks","bookmarksWithValidAssemblies","selectedAssemblies","selectedBookmarks","session","getSession","selectedSet","Set","rows","filter","r","has","assemblyName","map","region","index","rest","id","locString","assembleLocString","correspondingObj","widths","Math","max","measureText","measureGridWidth","row","label","React","DataGrid","autoHeight","density","columns","GRID_CHECKBOX_SELECTION_COL_DEF","width","field","headerName","renderCell","value","Link","className","href","onClick","async","event","preventDefault","views","navToBookmark","editable","ColorPicker","color","onChange","updateBookmarkHighlight","onCellDoubleClick","queueDialog","onClose","dialogRow","processRowUpdate","target","updateBookmarkLabel","onProcessRowUpdateError","e","notifyError","checkboxSelection","onRowSelectionModelChange","newRowSelectionModel","length","setSelectedBookmarks","rowSelectionModel","disableRowSelectionOnClick","validAssemblies","noAssemblies","size","isAllSelected","every","FormControl","disabled","fullWidth","InputLabel","Select","labelId","multiple","setSelectedAssemblies","input","OutlinedInput","renderValue","selected","join","MenuItem","onClickCapture","undefined","Checkbox","checked","indeterminate","ListItemText","primary","name","key","includes","ExportBookmarksDialog","ImportBookmarksDialog","ShareBookmarksDialog","HighlightSettingsDialog","EditHighlightColorDialog","DeleteBookmarksDialog","flex","display","Alert","severity","CascadingMenuButton","menuItems","icon","GetApp","Publish","Delete","Share","Palette","Settings","Menu","AssemblySelector","BookmarkGrid","assembly","view","find","focusedViewId","assemblyNames","elt","type","newViewId","addView","navToLocString","console","error","downloadBookmarkFile","fileFormat","bookmarksToDownload","fileHeader","fileContents","forEach","bookmark","labelVal","line","refName","start","end","push","fileContent","reduce","a","b","blob","Blob","fileName","saveAs","fromUrlSafeB64","b64","originalB64","num","Error","repeat","b64PadSuffix","replaceAll","toByteArray","inflate","inflated","TextDecoder","decode","toUrlSafeB64","str","bytes","TextEncoder","encode","deflate","fromByteArray","encoded","pos","indexOf","slice"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3266.accbd4dc.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3266],{35960:(e,t,a)=>{a.d(t,{A:()=>O});var o=a(7552),r=a(93878),s=a(70799),i=a(72639),l=a(93876),n=a(9547),p=a(48054),d=a(15622),c=a(58520),v=a(30627),u=a(27103),g=a(74893),b=a(69500);const y=(0,g.A)((0,b.jsx)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"NavigateBefore"),m=(0,g.A)((0,b.jsx)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"NavigateNext");var h=a(43045),x=a(51148),A=a(60129),f=a(4785);const $=(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant],t[`size${(0,d.A)(a.size)}`],"text"===a.variant&&t[`text${(0,d.A)(a.color)}`],"outlined"===a.variant&&t[`outlined${(0,d.A)(a.color)}`],"rounded"===a.shape&&t.rounded,"page"===a.type&&t.page,("start-ellipsis"===a.type||"end-ellipsis"===a.type)&&t.ellipsis,("previous"===a.type||"next"===a.type)&&t.previousNext,("first"===a.type||"last"===a.type)&&t.firstLast]},C=(0,x.Ay)("div",{name:"MuiPaginationItem",slot:"Root",overridesResolver:$})((0,A.A)((({theme:e})=>({...e.typography.body2,borderRadius:16,textAlign:"center",boxSizing:"border-box",minWidth:32,padding:"0 6px",margin:"0 3px",color:(e.vars||e).palette.text.primary,height:"auto",[`&.${n.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},variants:[{props:{size:"small"},style:{minWidth:26,borderRadius:13,margin:"0 1px",padding:"0 4px"}},{props:{size:"large"},style:{minWidth:40,borderRadius:20,padding:"0 10px",fontSize:e.typography.pxToRem(15)}}]})))),z=(0,x.Ay)(p.A,{name:"MuiPaginationItem",slot:"Root",overridesResolver:$})((0,A.A)((({theme:e})=>({...e.typography.body2,borderRadius:16,textAlign:"center",boxSizing:"border-box",minWidth:32,height:32,padding:"0 6px",margin:"0 3px",color:(e.vars||e).palette.text.primary,[`&.${n.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${n.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},transition:e.transitions.create(["color","background-color"],{duration:e.transitions.duration.short}),"&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${n.A.selected}`]:{backgroundColor:(e.vars||e).palette.action.selected,"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,i.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(e.vars||e).palette.action.selected}},[`&.${n.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,i.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)},[`&.${n.A.disabled}`]:{opacity:1,color:(e.vars||e).palette.action.disabled,backgroundColor:(e.vars||e).palette.action.selected}},variants:[{props:{size:"small"},style:{minWidth:26,height:26,borderRadius:13,margin:"0 1px",padding:"0 4px"}},{props:{size:"large"},style:{minWidth:40,height:40,borderRadius:20,padding:"0 10px",fontSize:e.typography.pxToRem(15)}},{props:{shape:"rounded"},style:{borderRadius:(e.vars||e).shape.borderRadius}},{props:{variant:"outlined"},style:{border:e.vars?`1px solid rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${n.A.selected}`]:{[`&.${n.A.disabled}`]:{borderColor:(e.vars||e).palette.action.disabledBackground,color:(e.vars||e).palette.action.disabled}}}},{props:{variant:"text"},style:{[`&.${n.A.selected}`]:{[`&.${n.A.disabled}`]:{color:(e.vars||e).palette.action.disabled}}}},...Object.entries(e.palette).filter((0,c.A)(["dark","contrastText"])).map((([t])=>({props:{variant:"text",color:t},style:{[`&.${n.A.selected}`]:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}},[`&.${n.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette[t].dark},[`&.${n.A.disabled}`]:{color:(e.vars||e).palette.action.disabled}}}}))),...Object.entries(e.palette).filter((0,c.A)(["light"])).map((([t])=>({props:{variant:"outlined",color:t},style:{[`&.${n.A.selected}`]:{color:(e.vars||e).palette[t].main,border:`1px solid ${e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.5)`:(0,i.X4)(e.palette[t].main,.5)}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.activatedOpacity})`:(0,i.X4)(e.palette[t].main,e.palette.action.activatedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / calc(${e.vars.palette.action.activatedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,i.X4)(e.palette[t].main,e.palette.action.activatedOpacity+e.palette.action.focusOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${n.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / calc(${e.vars.palette.action.activatedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,i.X4)(e.palette[t].main,e.palette.action.activatedOpacity+e.palette.action.focusOpacity)}}}})))]})))),k=(0,x.Ay)("div",{name:"MuiPaginationItem",slot:"Icon",overridesResolver:(e,t)=>t.icon})((0,A.A)((({theme:e})=>({fontSize:e.typography.pxToRem(20),margin:"0 -8px",variants:[{props:{size:"small"},style:{fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{fontSize:e.typography.pxToRem(22)}}]})))),O=o.forwardRef((function(e,t){const a=(0,f.b)({props:e,name:"MuiPaginationItem"}),{className:o,color:i="standard",component:p,components:c={},disabled:g=!1,page:x,selected:A=!1,shape:$="circular",size:O="medium",slots:R={},slotProps:w={},type:P="page",variant:S="text",...L}=a,T={...a,color:i,disabled:g,selected:A,shape:$,size:O,type:P,variant:S},M=(0,l.I)(),j=(e=>{const{classes:t,color:a,disabled:o,selected:r,size:i,shape:l,type:p,variant:c}=e,v={root:["root",`size${(0,d.A)(i)}`,c,l,"standard"!==a&&`color${(0,d.A)(a)}`,"standard"!==a&&`${c}${(0,d.A)(a)}`,o&&"disabled",r&&"selected",{page:"page",first:"firstLast",last:"firstLast","start-ellipsis":"ellipsis","end-ellipsis":"ellipsis",previous:"previousNext",next:"previousNext"}[p]],icon:["icon"]};return(0,s.A)(v,n.q,t)})(T),N={slots:{previous:R.previous??c.previous,next:R.next??c.next,first:R.first??c.first,last:R.last??c.last},slotProps:w},[I,W]=(0,h.A)("previous",{elementType:y,externalForwardedProps:N,ownerState:T}),[X,F]=(0,h.A)("next",{elementType:m,externalForwardedProps:N,ownerState:T}),[V,_]=(0,h.A)("first",{elementType:v.A,externalForwardedProps:N,ownerState:T}),[q,B]=(0,h.A)("last",{elementType:u.A,externalForwardedProps:N,ownerState:T}),H=M?{previous:"next",next:"previous",first:"last",last:"first"}[P]:P,U={previous:I,next:X,first:V,last:q}[H],D={previous:W,next:F,first:_,last:B}[H];return"start-ellipsis"===P||"end-ellipsis"===P?(0,b.jsx)(C,{ref:t,ownerState:T,className:(0,r.A)(j.root,o),children:"…"}):(0,b.jsxs)(z,{ref:t,ownerState:T,component:p,disabled:g,className:(0,r.A)(j.root,o),...L,children:["page"===P&&x,U?(0,b.jsx)(k,{...D,className:j.icon,as:U}):null]})}))},83266:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o.A,getPaginationItemUtilityClass:()=>r.q,paginationItemClasses:()=>r.A});var o=a(35960),r=a(9547)},9547:(e,t,a)=>{a.d(t,{A:()=>i,q:()=>s});var o=a(33761),r=a(85693);function s(e){return(0,r.Ay)("MuiPaginationItem",e)}const i=(0,o.A)("MuiPaginationItem",["root","page","sizeSmall","sizeLarge","text","textPrimary","textSecondary","outlined","outlinedPrimary","outlinedSecondary","rounded","ellipsis","firstLast","previousNext","focusVisible","disabled","selected","icon","colorPrimary","colorSecondary"])},30627:(e,t,a)=>{a.d(t,{A:()=>s}),a(7552);var o=a(74893),r=a(69500);const s=(0,o.A)((0,r.jsx)("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"}),"FirstPage")},27103:(e,t,a)=>{a.d(t,{A:()=>s}),a(7552);var o=a(74893),r=a(69500);const s=(0,o.A)((0,r.jsx)("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"}),"LastPage")}}]);
+//# sourceMappingURL=3266.accbd4dc.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3266.accbd4dc.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3266.accbd4dc.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/svg-icons/NavigateBefore.js","../../../node_modules/@mui/material/internal/svg-icons/NavigateNext.js","../../../node_modules/@mui/material/PaginationItem/PaginationItem.js","../../../node_modules/@mui/material/PaginationItem/paginationItemClasses.js","../../../node_modules/@mui/material/internal/svg-icons/FirstPage.js","../../../node_modules/@mui/material/internal/svg-icons/LastPage.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'NavigateBefore');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'NavigateNext');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport paginationItemClasses, { getPaginationItemUtilityClass } from \"./paginationItemClasses.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport FirstPageIcon from \"../internal/svg-icons/FirstPage.js\";\nimport LastPageIcon from \"../internal/svg-icons/LastPage.js\";\nimport NavigateBeforeIcon from \"../internal/svg-icons/NavigateBefore.js\";\nimport NavigateNextIcon from \"../internal/svg-icons/NavigateNext.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.variant === 'text' && styles[`text${capitalize(ownerState.color)}`], ownerState.variant === 'outlined' && styles[`outlined${capitalize(ownerState.color)}`], ownerState.shape === 'rounded' && styles.rounded, ownerState.type === 'page' && styles.page, (ownerState.type === 'start-ellipsis' || ownerState.type === 'end-ellipsis') && styles.ellipsis, (ownerState.type === 'previous' || ownerState.type === 'next') && styles.previousNext, (ownerState.type === 'first' || ownerState.type === 'last') && styles.firstLast];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    selected,\n    size,\n    shape,\n    type,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', `size${capitalize(size)}`, variant, shape, color !== 'standard' && `color${capitalize(color)}`, color !== 'standard' && `${variant}${capitalize(color)}`, disabled && 'disabled', selected && 'selected', {\n      page: 'page',\n      first: 'firstLast',\n      last: 'firstLast',\n      'start-ellipsis': 'ellipsis',\n      'end-ellipsis': 'ellipsis',\n      previous: 'previousNext',\n      next: 'previousNext'\n    }[type]],\n    icon: ['icon']\n  };\n  return composeClasses(slots, getPaginationItemUtilityClass, classes);\n};\nconst PaginationItemEllipsis = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  height: 'auto',\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      minWidth: 26,\n      borderRadius: 26 / 2,\n      margin: '0 1px',\n      padding: '0 4px'\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      minWidth: 40,\n      borderRadius: 40 / 2,\n      padding: '0 10px',\n      fontSize: theme.typography.pxToRem(15)\n    }\n  }]\n})));\nconst PaginationItemPage = styled(ButtonBase, {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  height: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  [`&.${paginationItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  transition: theme.transitions.create(['color', 'background-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${paginationItemClasses.selected}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette.action.selected\n      }\n    },\n    [`&.${paginationItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    },\n    [`&.${paginationItemClasses.disabled}`]: {\n      opacity: 1,\n      color: (theme.vars || theme).palette.action.disabled,\n      backgroundColor: (theme.vars || theme).palette.action.selected\n    }\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      minWidth: 26,\n      height: 26,\n      borderRadius: 26 / 2,\n      margin: '0 1px',\n      padding: '0 4px'\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      minWidth: 40,\n      height: 40,\n      borderRadius: 40 / 2,\n      padding: '0 10px',\n      fontSize: theme.typography.pxToRem(15)\n    }\n  }, {\n    props: {\n      shape: 'rounded'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      border: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n      [`&.${paginationItemClasses.selected}`]: {\n        [`&.${paginationItemClasses.disabled}`]: {\n          borderColor: (theme.vars || theme).palette.action.disabledBackground,\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  }, {\n    props: {\n      variant: 'text'\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        [`&.${paginationItemClasses.disabled}`]: {\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])).map(([color]) => ({\n    props: {\n      variant: 'text',\n      color\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        color: (theme.vars || theme).palette[color].contrastText,\n        backgroundColor: (theme.vars || theme).palette[color].main,\n        '&:hover': {\n          backgroundColor: (theme.vars || theme).palette[color].dark,\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: (theme.vars || theme).palette[color].main\n          }\n        },\n        [`&.${paginationItemClasses.focusVisible}`]: {\n          backgroundColor: (theme.vars || theme).palette[color].dark\n        },\n        [`&.${paginationItemClasses.disabled}`]: {\n          color: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])).map(([color]) => ({\n    props: {\n      variant: 'outlined',\n      color\n    },\n    style: {\n      [`&.${paginationItemClasses.selected}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.5)` : alpha(theme.palette[color].main, 0.5)}`,\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.activatedOpacity})` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity),\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity),\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: 'transparent'\n          }\n        },\n        [`&.${paginationItemClasses.focusVisible}`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity)\n        }\n      }\n    }\n  }))]\n})));\nconst PaginationItemPageIcon = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})(memoTheme(({\n  theme\n}) => ({\n  fontSize: theme.typography.pxToRem(20),\n  margin: '0 -8px',\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(18)\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(22)\n    }\n  }]\n})));\nconst PaginationItem = /*#__PURE__*/React.forwardRef(function PaginationItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPaginationItem'\n  });\n  const {\n    className,\n    color = 'standard',\n    component,\n    components = {},\n    disabled = false,\n    page,\n    selected = false,\n    shape = 'circular',\n    size = 'medium',\n    slots = {},\n    slotProps = {},\n    type = 'page',\n    variant = 'text',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disabled,\n    selected,\n    shape,\n    size,\n    type,\n    variant\n  };\n  const isRtl = useRtl();\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: {\n      previous: slots.previous ?? components.previous,\n      next: slots.next ?? components.next,\n      first: slots.first ?? components.first,\n      last: slots.last ?? components.last\n    },\n    slotProps\n  };\n  const [PreviousSlot, previousSlotProps] = useSlot('previous', {\n    elementType: NavigateBeforeIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [NextSlot, nextSlotProps] = useSlot('next', {\n    elementType: NavigateNextIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [FirstSlot, firstSlotProps] = useSlot('first', {\n    elementType: FirstPageIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const [LastSlot, lastSlotProps] = useSlot('last', {\n    elementType: LastPageIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  const rtlAwareType = isRtl ? {\n    previous: 'next',\n    next: 'previous',\n    first: 'last',\n    last: 'first'\n  }[type] : type;\n  const IconSlot = {\n    previous: PreviousSlot,\n    next: NextSlot,\n    first: FirstSlot,\n    last: LastSlot\n  }[rtlAwareType];\n  const iconSlotProps = {\n    previous: previousSlotProps,\n    next: nextSlotProps,\n    first: firstSlotProps,\n    last: lastSlotProps\n  }[rtlAwareType];\n  return type === 'start-ellipsis' || type === 'end-ellipsis' ? /*#__PURE__*/_jsx(PaginationItemEllipsis, {\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    children: \"\\u2026\"\n  }) : /*#__PURE__*/_jsxs(PaginationItemPage, {\n    ref: ref,\n    ownerState: ownerState,\n    component: component,\n    disabled: disabled,\n    className: clsx(classes.root, className),\n    ...other,\n    children: [type === 'page' && page, IconSlot ? /*#__PURE__*/_jsx(PaginationItemPageIcon, {\n      ...iconSlotProps,\n      className: classes.icon,\n      as: IconSlot\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? PaginationItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The active color.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'standard']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  components: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The current page number.\n   */\n  page: PropTypes.node,\n  /**\n   * If `true` the pagination item is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The shape of the pagination item.\n   * @default 'circular'\n   */\n  shape: PropTypes.oneOf(['circular', 'rounded']),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    first: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    last: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    next: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    previous: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of pagination item.\n   * @default 'page'\n   */\n  type: PropTypes.oneOf(['end-ellipsis', 'first', 'last', 'next', 'page', 'previous', 'start-ellipsis']),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default PaginationItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaginationItemUtilityClass(slot) {\n  return generateUtilityClass('MuiPaginationItem', slot);\n}\nconst paginationItemClasses = generateUtilityClasses('MuiPaginationItem', ['root', 'page', 'sizeSmall', 'sizeLarge', 'text', 'textPrimary', 'textSecondary', 'outlined', 'outlinedPrimary', 'outlinedSecondary', 'rounded', 'ellipsis', 'firstLast', 'previousNext', 'focusVisible', 'disabled', 'selected', 'icon', 'colorPrimary', 'colorSecondary']);\nexport default paginationItemClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"\n}), 'FirstPage');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"\n}), 'LastPage');"],"names":["createSvgIcon","d","overridesResolver","props","styles","ownerState","root","variant","capitalize","size","color","shape","rounded","type","page","ellipsis","previousNext","firstLast","PaginationItemEllipsis","styled","name","slot","memoTheme","theme","typography","body2","borderRadius","textAlign","boxSizing","minWidth","padding","margin","vars","palette","text","primary","height","paginationItemClasses","disabled","opacity","action","disabledOpacity","variants","style","fontSize","pxToRem","PaginationItemPage","ButtonBase","focusVisible","backgroundColor","focus","transition","transitions","create","duration","short","hover","selected","selectedChannel","selectedOpacity","hoverOpacity","focusOpacity","border","common","onBackgroundChannel","mode","borderColor","disabledBackground","Object","entries","filter","createSimplePaletteValueFilter","map","contrastText","main","dark","mainChannel","activatedOpacity","PaginationItemPageIcon","icon","inProps","ref","className","component","components","slots","slotProps","other","isRtl","classes","first","last","previous","next","composeClasses","useUtilityClasses","externalForwardedProps","PreviousSlot","previousSlotProps","useSlot","elementType","NavigateBefore","NextSlot","nextSlotProps","NavigateNext","FirstSlot","firstSlotProps","FirstPage","LastSlot","lastSlotProps","LastPage","rtlAwareType","IconSlot","iconSlotProps","clsx","children","as","getPaginationItemUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3274.053c3df5.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3274],{31647:(e,o,t)=>{t.d(o,{A:()=>c});var a=t(7552),r=t(93878),n=t(70799),s=t(51148),i=t(4785),l=t(39339),b=t(69500);const u=(0,s.Ay)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,o)=>o.root})({width:"100%",overflowX:"auto"}),c=a.forwardRef((function(e,o){const t=(0,i.b)({props:e,name:"MuiTableContainer"}),{className:a,component:s="div",...c}=t,w={...t,component:s},C=(e=>{const{classes:o}=e;return(0,n.A)({root:["root"]},l.I,o)})(w);return(0,b.jsx)(u,{ref:o,as:s,className:(0,r.A)(C.root,a),ownerState:w,...c})}))},93274:(e,o,t)=>{t.r(o),t.d(o,{default:()=>a.A,getTableContainerUtilityClass:()=>r.I,tableContainerClasses:()=>r.A});var a=t(31647),r=t(39339)},39339:(e,o,t)=>{t.d(o,{A:()=>s,I:()=>n});var a=t(33761),r=t(85693);function n(e){return(0,r.Ay)("MuiTableContainer",e)}const s=(0,a.A)("MuiTableContainer",["root"])}}]);
+//# sourceMappingURL=3274.053c3df5.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3274.053c3df5.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3274.053c3df5.chunk.js","mappings":"yNAUA,MASMA,GAAqB,QAAO,MAAO,CACvCC,KAAM,oBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHpB,CAIxB,CACDC,MAAO,OACPC,UAAW,SAoDb,EAlDoC,cAAiB,SAAwBC,EAASC,GACpF,MAAMN,GAAQ,OAAgB,CAC5BA,MAAOK,EACPR,KAAM,uBAEF,UACJU,EAAS,UACTC,EAAY,SACTC,GACDT,EACEU,EAAa,IACdV,EACHQ,aAEIG,EA/BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAA+BS,EAAQ,EAwBpDC,CAAkBF,GAClC,OAAoB,SAAKd,EAAoB,CAC3CU,IAAKA,EACLO,GAAIL,EACJD,WAAW,OAAKI,EAAQT,KAAMK,GAC9BG,WAAYA,KACTD,GAEP,G,oNC/CO,SAASK,EAA8BhB,GAC5C,OAAO,QAAqB,oBAAqBA,EACnD,CACA,MACA,GAD8B,OAAuB,oBAAqB,CAAC,Q","sources":["../../../node_modules/@mui/material/TableContainer/TableContainer.js","../../../node_modules/@mui/material/TableContainer/tableContainerClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableContainerUtilityClass } from \"./tableContainerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n  name: 'MuiTableContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  width: '100%',\n  overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableContainer'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableContainerRoot, {\n    ref: ref,\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `Table`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;"],"names":["TableContainerRoot","name","slot","overridesResolver","props","styles","root","width","overflowX","inProps","ref","className","component","other","ownerState","classes","useUtilityClasses","as","getTableContainerUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3301.db457761.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 3301.db457761.chunk.js.LICENSE.txt */
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3301],{85120:(e,t,n)=>{n.d(t,{A:()=>re});var r=n(73123),i=Math.abs,a=String.fromCharCode,o=Object.assign;function l(e){return e.trim()}function u(e,t,n){return e.replace(t,n)}function s(e,t){return e.indexOf(t)}function c(e,t){return 0|e.charCodeAt(t)}function f(e,t,n){return e.slice(t,n)}function d(e){return e.length}function p(e){return e.length}function h(e,t){return t.push(e),e}var b=1,v=1,y=0,g=0,m=0,w="";function _(e,t,n,r,i,a,o){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:b,column:v,length:o,return:""}}function S(e,t){return o(_("",null,null,"",null,null,0),e,{length:-e.length},t)}function k(){return m=g>0?c(w,--g):0,v--,10===m&&(v=1,b--),m}function O(){return m=g<y?c(w,g++):0,v++,10===m&&(v=1,b++),m}function P(){return c(w,g)}function A(){return g}function x(e,t){return f(w,e,t)}function j(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function C(e){return b=v=1,y=d(w=e),g=0,[]}function E(e){return w="",e}function T(e){return l(x(g-1,R(91===e?e+2:40===e?e+1:e)))}function N(e){for(;(m=P())&&m<33;)O();return j(e)>2||j(m)>3?"":" "}function I(e,t){for(;--t&&O()&&!(m<48||m>102||m>57&&m<65||m>70&&m<97););return x(e,A()+(t<6&&32==P()&&32==O()))}function R(e){for(;O();)switch(m){case e:return g;case 34:case 39:34!==e&&39!==e&&R(m);break;case 40:41===e&&R(e);break;case 92:O()}return g}function M(e,t){for(;O()&&e+m!==57&&(e+m!==84||47!==P()););return"/*"+x(t,g-1)+"*"+a(47===e?e:O())}function L(e){for(;!j(P());)O();return x(e,g)}var D="-ms-",z="-moz-",V="-webkit-",$="comm",F="rule",B="decl",U="@keyframes";function H(e,t){for(var n="",r=p(e),i=0;i<r;i++)n+=t(e[i],i,e,t)||"";return n}function W(e,t,n,r){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case B:return e.return=e.return||e.value;case $:return"";case U:return e.return=e.value+"{"+H(e.children,r)+"}";case F:e.value=e.props.join(",")}return d(n=H(e.children,r))?e.return=e.value+"{"+n+"}":""}function K(e){return E(G("",null,null,null,[""],e=C(e),0,[0],e))}function G(e,t,n,r,i,o,l,f,p){for(var b=0,v=0,y=l,g=0,m=0,w=0,_=1,S=1,x=1,j=0,C="",E=i,R=o,D=r,z=C;S;)switch(w=j,j=O()){case 40:if(108!=w&&58==c(z,y-1)){-1!=s(z+=u(T(j),"&","&\f"),"&\f")&&(x=-1);break}case 34:case 39:case 91:z+=T(j);break;case 9:case 10:case 13:case 32:z+=N(w);break;case 92:z+=I(A()-1,7);continue;case 47:switch(P()){case 42:case 47:h(Q(M(O(),A()),t,n),p);break;default:z+="/"}break;case 123*_:f[b++]=d(z)*x;case 125*_:case 59:case 0:switch(j){case 0:case 125:S=0;case 59+v:-1==x&&(z=u(z,/\f/g,"")),m>0&&d(z)-y&&h(m>32?Y(z+";",r,n,y-1):Y(u(z," ","")+";",r,n,y-2),p);break;case 59:z+=";";default:if(h(D=q(z,t,n,b,v,i,f,C,E=[],R=[],y),o),123===j)if(0===v)G(z,t,D,D,E,o,y,f,R);else switch(99===g&&110===c(z,3)?100:g){case 100:case 108:case 109:case 115:G(e,D,D,r&&h(q(e,D,D,0,0,i,f,C,i,E=[],y),R),i,R,y,f,r?E:R);break;default:G(z,D,D,D,[""],R,0,f,R)}}b=v=m=0,_=x=1,C=z="",y=l;break;case 58:y=1+d(z),m=w;default:if(_<1)if(123==j)--_;else if(125==j&&0==_++&&125==k())continue;switch(z+=a(j),j*_){case 38:x=v>0?1:(z+="\f",-1);break;case 44:f[b++]=(d(z)-1)*x,x=1;break;case 64:45===P()&&(z+=T(O())),g=P(),v=y=d(C=z+=L(A())),j++;break;case 45:45===w&&2==d(z)&&(_=0)}}return o}function q(e,t,n,r,a,o,s,c,d,h,b){for(var v=a-1,y=0===a?o:[""],g=p(y),m=0,w=0,S=0;m<r;++m)for(var k=0,O=f(e,v+1,v=i(w=s[m])),P=e;k<g;++k)(P=l(w>0?y[k]+" "+O:u(O,/&\f/g,y[k])))&&(d[S++]=P);return _(e,t,n,0===a?F:c,d,h,b)}function Q(e,t,n){return _(e,t,n,$,a(m),f(e,2,-2),0)}function Y(e,t,n,r){return _(e,t,n,B,f(e,0,r),f(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,i=0;r=i,i=P(),38===r&&12===i&&(t[n]=1),!j(i);)O();return x(e,g)},J=new WeakMap,Z=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||J.get(n))&&!r){J.set(e,!0);for(var i=[],o=function(e,t){return E(function(e,t){var n=-1,r=44;do{switch(j(r)){case 0:38===r&&12===P()&&(t[n]=1),e[n]+=X(g-1,t,n);break;case 2:e[n]+=T(r);break;case 4:if(44===r){e[++n]=58===P()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=a(r)}}while(r=O());return e}(C(e),t))}(t,i),l=n.props,u=0,s=0;u<o.length;u++)for(var c=0;c<l.length;c++,s++)e.props[s]=i[u]?o[u].replace(/&\f/g,l[c]):l[c]+" "+o[u]}}},ee=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function te(e,t){switch(function(e,t){return 45^c(e,0)?(((t<<2^c(e,0))<<2^c(e,1))<<2^c(e,2))<<2^c(e,3):0}(e,t)){case 5103:return V+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return V+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return V+e+z+e+D+e+e;case 6828:case 4268:return V+e+D+e+e;case 6165:return V+e+D+"flex-"+e+e;case 5187:return V+e+u(e,/(\w+).+(:[^]+)/,V+"box-$1$2"+D+"flex-$1$2")+e;case 5443:return V+e+D+"flex-item-"+u(e,/flex-|-self/,"")+e;case 4675:return V+e+D+"flex-line-pack"+u(e,/align-content|flex-|-self/,"")+e;case 5548:return V+e+D+u(e,"shrink","negative")+e;case 5292:return V+e+D+u(e,"basis","preferred-size")+e;case 6060:return V+"box-"+u(e,"-grow","")+V+e+D+u(e,"grow","positive")+e;case 4554:return V+u(e,/([^-])(transform)/g,"$1"+V+"$2")+e;case 6187:return u(u(u(e,/(zoom-|grab)/,V+"$1"),/(image-set)/,V+"$1"),e,"")+e;case 5495:case 3959:return u(e,/(image-set\([^]*)/,V+"$1$`$1");case 4968:return u(u(e,/(.+:)(flex-)?(.*)/,V+"box-pack:$3"+D+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+V+e+e;case 4095:case 3583:case 4068:case 2532:return u(e,/(.+)-inline(.+)/,V+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(d(e)-1-t>6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return u(e,/(.+:)(.+)-([^]+)/,"$1"+V+"$2-$3$1"+z+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~s(e,"stretch")?te(u(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,d(e)-3-(~s(e,"!important")&&10))){case 107:return u(e,":",":"+V)+e;case 101:return u(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+V+(45===c(e,14)?"inline-":"")+"box$3$1"+V+"$2$3$1"+D+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return V+e+D+u(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return V+e+D+u(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return V+e+D+u(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return V+e+D+e+e}return e}var ne=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case B:e.return=te(e.value,e.length);break;case U:return H([S(e,{value:u(e.value,"@","@"+V)})],r);case F:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return H([S(e,{props:[u(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return H([S(e,{props:[u(t,/:(plac\w+)/,":"+V+"input-$1")]}),S(e,{props:[u(t,/:(plac\w+)/,":-moz-$1")]}),S(e,{props:[u(t,/:(plac\w+)/,D+"input-$1")]})],r)}return""}))}}],re=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var i,a,o=e.stylisPlugins||ne,l={},u=[];i=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)l[t[n]]=!0;u.push(e)}));var s,c,f,d,h=[W,(d=function(e){s.insert(e)},function(e){e.root||(e=e.return)&&d(e)})],b=(c=[Z,ee].concat(o,h),f=p(c),function(e,t,n,r){for(var i="",a=0;a<f;a++)i+=c[a](e,t,n,r)||"";return i});a=function(e,t,n,r){s=n,H(K(e?e+"{"+t.styles+"}":t.styles),b),r&&(v.inserted[t.name]=!0)};var v={key:t,sheet:new r.v({key:t,container:i,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:l,registered:{},insert:a};return v.sheet.hydrate(u),v}},39389:(e,t,n)=>{function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{A:()=>r})},90722:(e,t,n)=>{n.d(t,{C:()=>o,T:()=>s,_:()=>l,w:()=>u});var r=n(7552),i=n(85120),a=(n(53760),n(20387),r.createContext("undefined"!=typeof HTMLElement?(0,i.A)({key:"css"}):null)),o=a.Provider,l=function(){return(0,r.useContext)(a)},u=function(e){return(0,r.forwardRef)((function(t,n){var i=(0,r.useContext)(a);return e(t,i,n)}))},s=r.createContext({})},64761:(e,t,n)=>{n.d(t,{AH:()=>s,i7:()=>c,mL:()=>u});var r=n(90722),i=n(7552),a=n(92005),o=n(20387),l=n(53760),u=(n(85120),n(806),(0,r.w)((function(e,t){var n=e.styles,u=(0,l.J)([n],void 0,i.useContext(r.T)),s=i.useRef();return(0,o.i)((function(){var e=t.key+"-global",n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),r=!1,i=document.querySelector('style[data-emotion="'+e+" "+u.name+'"]');return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),null!==i&&(r=!0,i.setAttribute("data-emotion",e),n.hydrate([i])),s.current=[n,r],function(){n.flush()}}),[t]),(0,o.i)((function(){var e=s.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==u.next&&(0,a.sk)(t,u.next,!0),n.tags.length){var r=n.tags[n.tags.length-1].nextElementSibling;n.before=r,n.flush()}t.insert("",u,n,!1)}}),[t,u.name]),null})));function s(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,l.J)(t)}var c=function(){var e=s.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}},53760:(e,t,n)=>{n.d(t,{J:()=>v});var r={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i=n(39389),a=!1,o=/[A-Z]|^ms/g,l=/_EMO_([^_]+?)_([^]*?)_EMO_/g,u=function(e){return 45===e.charCodeAt(1)},s=function(e){return null!=e&&"boolean"!=typeof e},c=(0,i.A)((function(e){return u(e)?e:e.replace(o,"-$&").toLowerCase()})),f=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(l,(function(e,t,n){return h={name:t,styles:n,next:h},t}))}return 1===r[e]||u(e)||"number"!=typeof t||0===t?t:t+"px"},d="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function p(e,t,n){if(null==n)return"";var r=n;if(void 0!==r.__emotion_styles)return r;switch(typeof n){case"boolean":return"";case"object":var i=n;if(1===i.anim)return h={name:i.name,styles:i.styles,next:h},i.name;var o=n;if(void 0!==o.styles){var l=o.next;if(void 0!==l)for(;void 0!==l;)h={name:l.name,styles:l.styles,next:h},l=l.next;return o.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i<n.length;i++)r+=p(e,t,n[i])+";";else for(var o in n){var l=n[o];if("object"!=typeof l){var u=l;null!=t&&void 0!==t[u]?r+=o+"{"+t[u]+"}":s(u)&&(r+=c(o)+":"+f(o,u)+";")}else{if("NO_COMPONENT_SELECTOR"===o&&a)throw new Error(d);if(!Array.isArray(l)||"string"!=typeof l[0]||null!=t&&void 0!==t[l[0]]){var h=p(e,t,l);switch(o){case"animation":case"animationName":r+=c(o)+":"+h+";";break;default:r+=o+"{"+h+"}"}}else for(var b=0;b<l.length;b++)s(l[b])&&(r+=c(o)+":"+f(o,l[b])+";")}}return r}(e,t,n);case"function":if(void 0!==e){var u=h,b=n(e);return h=u,p(e,t,b)}}var v=n;if(null==t)return v;var y=t[v];return void 0!==y?y:v}var h,b=/label:\s*([^\s;\n{]+)\s*(;|$)/g;function v(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var r=!0,i="";h=void 0;var a=e[0];null==a||void 0===a.raw?(r=!1,i+=p(n,t,a)):i+=a[0];for(var o=1;o<e.length;o++)i+=p(n,t,e[o]),r&&(i+=a[o]);b.lastIndex=0;for(var l,u="";null!==(l=b.exec(i));)u+="-"+l[1];var s=function(e){for(var t,n=0,r=0,i=e.length;i>=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(i)+u;return{name:s,styles:i,next:h}}},73123:(e,t,n)=>{n.d(t,{v:()=>r});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(e){}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)})),this.tags=[],this.ctr=0},e}()},20387:(e,t,n)=>{var r;n.d(t,{i:()=>l,s:()=>o});var i=n(7552),a=!!(r||(r=n.t(i,2))).useInsertionEffect&&(r||(r=n.t(i,2))).useInsertionEffect,o=a||function(e){return e()},l=a||i.useLayoutEffect},92005:(e,t,n)=>{function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}n.d(t,{Rk:()=>r,SF:()=>i,sk:()=>a});var i=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},a=function(e,t,n){i(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var a=t;do{e.insert(t===a?"."+r:"",a,e.sheet,!0),a=a.next}while(void 0!==a)}}},16179:(e,t,n)=>{n.d(t,{qy:()=>a,rf:()=>o}),n(7552);var r=n(69743);n(69500);const i="function"==typeof(0,r.Dp)({}),a=(e,t)=>({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%",...t&&!e.vars&&{colorScheme:e.palette.mode}}),o=e=>({color:(e.vars||e).palette.text.primary,...e.typography.body1,backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}}),l=(e,t=!1)=>{const n={};t&&e.colorSchemes&&"function"==typeof e.getColorSchemeSelector&&Object.entries(e.colorSchemes).forEach((([t,r])=>{const i=e.getColorSchemeSelector(t);i.startsWith("@")?n[i]={":root":{colorScheme:r.palette?.mode}}:n[i.replace(/\s*&/,"")]={colorScheme:r.palette?.mode}}));let r={html:a(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:{margin:0,...o(e),"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}},...n};const i=e.components?.MuiCssBaseline?.styleOverrides;return i&&(r=[r,i]),r},u="mui-ecs";(0,r.Dp)(i?({theme:e,enableColorScheme:t})=>l(e,t):({theme:e})=>(e=>{const t=l(e,!1),n=Array.isArray(t)?t[0]:t;return!e.vars&&n&&(n.html[`:root:has(${u})`]={colorScheme:e.palette.mode}),e.colorSchemes&&Object.entries(e.colorSchemes).forEach((([t,r])=>{const i=e.getColorSchemeSelector(t);i.startsWith("@")?n[i]={[`:root:not(:has(.${u}))`]:{colorScheme:r.palette?.mode}}:n[i.replace(/\s*&/,"")]={[`&:not(:has(.${u}))`]:{colorScheme:r.palette?.mode}}})),t})(e))},4785:(e,t,n)=>{n.d(t,{b:()=>i}),n(7552);var r=n(53173);function i(e){return(0,r.b)(e)}n(69500)},46033:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"}},53954:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"}},55194:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"}},37231:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"}},8998:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"}},21699:(e,t,n)=>{n.d(t,{Ay:()=>u,Qw:()=>l,UL:()=>o});var r=n(4705),i=n(28875);const a=[...Array(25)].map(((e,t)=>{if(0===t)return"none";const n=(0,i.A)(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`}));function o(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function l(e){return"dark"===e?a:[]}function u(e){const{palette:t={mode:"light"},opacity:n,overlays:i,...a}=e,u=(0,r.Ay)(t);return{palette:u,opacity:{...o(u.mode),...n},overlays:i||l(u.mode),...a}}},90841:(e,t,n)=>{function r(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}n.d(t,{A:()=>r})},4705:(e,t,n)=>{n.d(t,{Ay:()=>y});var r=n(51569),i=n(78745),a=n(72639);const o={black:"#000",white:"#fff"};var l=n(55194);const u={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"};var s=n(8998),c=n(37231),f=n(46033);const d={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"};var p=n(53954);const h={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:o.white,default:o.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},b={text:{primary:o.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:o.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function v(e,t,n,r){const i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,a.a)(e.main,i):"dark"===t&&(e.dark=(0,a.e$)(e.main,o)))}function y(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:y=.2,...g}=e,m=e.primary||function(e="light"){return"dark"===e?{main:f.A[200],light:f.A[50],dark:f.A[400]}:{main:f.A[700],light:f.A[400],dark:f.A[800]}}(t),w=e.secondary||function(e="light"){return"dark"===e?{main:u[200],light:u[50],dark:u[400]}:{main:u[500],light:u[300],dark:u[700]}}(t),_=e.error||function(e="light"){return"dark"===e?{main:s.A[500],light:s.A[300],dark:s.A[700]}:{main:s.A[700],light:s.A[400],dark:s.A[800]}}(t),S=e.info||function(e="light"){return"dark"===e?{main:d[400],light:d[300],dark:d[700]}:{main:d[700],light:d[500],dark:d[900]}}(t),k=e.success||function(e="light"){return"dark"===e?{main:p.A[400],light:p.A[300],dark:p.A[700]}:{main:p.A[800],light:p.A[500],dark:p.A[900]}}(t),O=e.warning||function(e="light"){return"dark"===e?{main:c.A[400],light:c.A[300],dark:c.A[700]}:{main:"#ed6c02",light:c.A[500],dark:c.A[900]}}(t);function P(e){return(0,a.eM)(e,b.text.primary)>=n?b.text.primary:h.text.primary}const A=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:a=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error((0,r.A)(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error((0,r.A)(12,t?` (${t})`:"",JSON.stringify(e.main)));return v(e,"light",i,y),v(e,"dark",a,y),e.contrastText||(e.contrastText=P(e.main)),e},x={dark:b,light:h};return(0,i.A)({common:{...o},mode:t,primary:A({color:m,name:"primary"}),secondary:A({color:w,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:A({color:_,name:"error"}),warning:A({color:O,name:"warning"}),info:A({color:S,name:"info"}),success:A({color:k,name:"success"}),grey:l.A,contrastThreshold:n,getContrastText:P,augmentColor:A,tonalOffset:y,...x[t]},g)}},89022:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(4705),i=n(17405),a=n(86501);function o(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:(0,r.Ay)({...!0===n?{}:n.palette,mode:t})})}function l(e={},...t){const{palette:n,cssVariables:r=!1,colorSchemes:l=(n?void 0:{light:!0}),defaultColorScheme:u=n?.mode,...s}=e,c=u||"light",f=l?.[c],d={...l,...n?{[c]:{..."boolean"!=typeof f&&f,palette:n}}:void 0};if(!1===r){if(!("colorSchemes"in e))return(0,a.A)(e,...t);let r=n;"palette"in e||d[c]&&(!0!==d[c]?r=d[c].palette:"dark"===c&&(r={mode:"dark"}));const i=(0,a.A)({...e,palette:r},...t);return i.defaultColorScheme=c,i.colorSchemes=d,"light"===i.palette.mode&&(i.colorSchemes.light={...!0!==d.light&&d.light,palette:i.palette},o(i,"dark",d.dark)),"dark"===i.palette.mode&&(i.colorSchemes.dark={...!0!==d.dark&&d.dark,palette:i.palette},o(i,"light",d.light)),i}return n||"light"in d||"light"!==c||(d.light=!0),(0,i.A)({...s,colorSchemes:d,defaultColorScheme:c,..."boolean"!=typeof r&&r},...t)}},86501:(e,t,n)=>{n.d(t,{D:()=>v,A:()=>y});var r=n(51569),i=n(78745),a=n(94177),o=n(76795),l=n(72861),u=n(90841),s=n(4705),c=n(34558);function f(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const d=["none",f(0,2,1,-1,0,1,1,0,0,1,3,0),f(0,3,1,-2,0,2,2,0,0,1,5,0),f(0,3,3,-2,0,3,4,0,0,1,8,0),f(0,2,4,-1,0,4,5,0,0,1,10,0),f(0,3,5,-1,0,5,8,0,0,1,14,0),f(0,3,5,-1,0,6,10,0,0,1,18,0),f(0,4,5,-2,0,7,10,1,0,2,16,1),f(0,5,5,-3,0,8,10,1,0,3,14,2),f(0,5,6,-3,0,9,12,1,0,3,16,2),f(0,6,6,-3,0,10,14,1,0,4,18,3),f(0,6,7,-4,0,11,15,1,0,4,20,3),f(0,7,8,-4,0,12,17,2,0,5,22,4),f(0,7,8,-4,0,13,19,2,0,5,24,4),f(0,7,9,-4,0,14,21,2,0,5,26,4),f(0,8,9,-5,0,15,22,2,0,6,28,5),f(0,8,10,-5,0,16,24,2,0,6,30,5),f(0,8,11,-5,0,17,26,2,0,6,32,5),f(0,9,11,-5,0,18,28,2,0,7,34,6),f(0,9,12,-6,0,19,29,2,0,7,36,6),f(0,10,13,-6,0,20,31,3,0,8,38,7),f(0,10,13,-6,0,21,33,3,0,8,40,7),f(0,10,14,-6,0,22,35,3,0,8,42,7),f(0,11,14,-7,0,23,36,3,0,9,44,8),f(0,11,15,-7,0,24,38,3,0,9,46,8)];var p=n(94479);const h={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function b(e={},...t){const{breakpoints:n,mixins:f={},spacing:b,palette:v={},transitions:y={},typography:g={},shape:m,...w}=e;if(e.vars)throw new Error((0,r.A)(20));const _=(0,s.Ay)(v),S=(0,l.A)(e);let k=(0,i.A)(S,{mixins:(0,u.A)(S.breakpoints,f),palette:_,shadows:d.slice(),typography:(0,c.A)(_,g),transitions:(0,p.Ay)(y),zIndex:{...h}});return k=(0,i.A)(k,w),k=t.reduce(((e,t)=>(0,i.A)(e,t)),k),k.unstable_sxConfig={...a.A,...w?.unstable_sxConfig},k.unstable_sx=function(e){return(0,o.A)({sx:e,theme:this})},k}function v(...e){return b(...e)}const y=b},17405:(e,t,n)=>{n.d(t,{A:()=>x});var r=n(51569),i=n(78745);function a(e=""){function t(...n){if(!n.length)return"";const r=n[0];return"string"!=typeof r||r.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${r}`:`, var(--${e?`${e}-`:""}${r}${t(...n.slice(1))})`}return(n,...r)=>`var(--${e?`${e}-`:""}${n}${t(...r)})`}var o=n(81459),l=n(34901);function u(e){const t={};return Object.entries(e).forEach((e=>{const[n,r]=e;"object"==typeof r&&(t[n]=`${r.fontStyle?`${r.fontStyle} `:""}${r.fontVariant?`${r.fontVariant} `:""}${r.fontWeight?`${r.fontWeight} `:""}${r.fontStretch?`${r.fontStretch} `:""}${r.fontSize||""}${r.lineHeight?`/${r.lineHeight} `:""}${r.fontFamily||""}`)})),t}const s=(e,t,n,r=[])=>{let i=e;t.forEach(((e,a)=>{a===t.length-1?Array.isArray(i)?i[Number(e)]=n:i&&"object"==typeof i&&(i[e]=n):i&&"object"==typeof i&&(i[e]||(i[e]=r.includes(e)?[]:{}),i=i[e])}))};function c(e,t){const{prefix:n,shouldSkipGeneratingVar:r}=t||{},i={},a={},o={};var l,u;return l=(e,t,l)=>{if(!("string"!=typeof t&&"number"!=typeof t||r&&r(e,t))){const r=`--${n?`${n}-`:""}${e.join("-")}`,u=((e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some((t=>e.includes(t)))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t)(e,t);Object.assign(i,{[r]:u}),s(a,e,`var(${r})`,l),s(o,e,`var(${r}, ${u})`,l)}},u=e=>"vars"===e[0],function e(t,n=[],r=[]){Object.entries(t).forEach((([t,i])=>{(!u||u&&!u([...n,t]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?e(i,[...n,t],Array.isArray(i)?[...r,t]:r):l([...n,t],i,r))}))}(e),{css:i,vars:a,varsWithDefaults:o}}const f=function(e,t={}){const{getSelector:n=g,disableCssColorScheme:r,colorSchemeSelector:a}=t,{colorSchemes:o={},components:l,defaultColorScheme:u="light",...s}=e,{vars:f,css:d,varsWithDefaults:p}=c(s,t);let h=p;const b={},{[u]:v,...y}=o;if(Object.entries(y||{}).forEach((([e,n])=>{const{vars:r,css:a,varsWithDefaults:o}=c(n,t);h=(0,i.A)(h,o),b[e]={css:a,vars:r}})),v){const{css:e,vars:n,varsWithDefaults:r}=c(v,t);h=(0,i.A)(h,r),b[u]={css:e,vars:n}}function g(t,n){let r=a;if("class"===a&&(r=".%s"),"data"===a&&(r="[data-%s]"),a?.startsWith("data-")&&!a.includes("%s")&&(r=`[${a}="%s"]`),t){if("media"===r){if(e.defaultColorScheme===t)return":root";const r=o[t]?.palette?.mode||t;return{[`@media (prefers-color-scheme: ${r})`]:{":root":n}}}if(r)return e.defaultColorScheme===t?`:root, ${r.replace("%s",String(t))}`:r.replace("%s",String(t))}return":root"}return{vars:h,generateThemeVars:()=>{let e={...f};return Object.entries(b).forEach((([,{vars:t}])=>{e=(0,i.A)(e,t)})),e},generateStyleSheets:()=>{const t=[],i=e.defaultColorScheme||"light";function a(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}a(n(void 0,{...d}),d);const{[i]:l,...u}=b;if(l){const{css:e}=l,t=o[i]?.palette?.mode,u=!r&&t?{colorScheme:t,...e}:{...e};a(n(i,{...u}),u)}return Object.entries(u).forEach((([e,{css:t}])=>{const i=o[e]?.palette?.mode,l=!r&&i?{colorScheme:i,...t}:{...t};a(n(e,{...l}),l)})),t}}};var d=n(94177),p=n(76795),h=n(72639),b=n(86501),v=n(21699),y=n(59542),g=n(80040);const m=e=>(t,n)=>{const r=e.colorSchemeSelector;let i=r;if("class"===r&&(i=".%s"),"data"===r&&(i="[data-%s]"),r?.startsWith("data-")&&!r.includes("%s")&&(i=`[${r}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const r={};return(0,g.A)(e.cssVarPrefix).forEach((e=>{r[e]=n[e],delete n[e]})),"media"===i?{":root":n,"@media (prefers-color-scheme: dark)":{":root":r}}:i?{[i.replace("%s",t)]:r,[`:root, ${i.replace("%s",t)}`]:n}:{":root":{...n,...r}}}if(i&&"media"!==i)return`:root, ${i.replace("%s",String(t))}`}else if(t){if("media"===i)return{[`@media (prefers-color-scheme: ${String(t)})`]:{":root":n}};if(i)return i.replace("%s",String(t))}return":root"};function w(e={}){const t={...e};return function e(t){const n=Object.entries(t);for(let a=0;a<n.length;a++){const[o,l]=n[a];r=l,!(0,i.Q)(r)&&void 0!==r&&"string"!=typeof r&&"boolean"!=typeof r&&"number"!=typeof r&&!Array.isArray(r)||o.startsWith("unstable_")?delete t[o]:(0,i.Q)(l)&&(t[o]={...l},e(t[o]))}var r}(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function _(e,t,n){!e[t]&&n&&(e[t]=n)}function S(e){return e&&e.startsWith("hsl")?(0,h.YL)(e):e}function k(e,t){`${t}Channel`in e||(e[`${t}Channel`]=(0,h.Me)(S(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}const O=e=>{try{return e()}catch(e){}},P=(e="mui")=>a(e);function A(e,t,n,r){if(!t)return;t=!0===t?{}:t;const i="dark"===r?"dark":"light";if(!n)return void(e[r]=(0,v.Ay)({...t,palette:{mode:i,...t?.palette}}));const{palette:a,...o}=(0,b.A)({...n,palette:{mode:i,...t?.palette}});return e[r]={...t,palette:a,opacity:{...(0,v.UL)(i),...t?.opacity},overlays:t?.overlays||(0,v.Qw)(i)},o}function x(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:a,disableCssColorScheme:s=!1,cssVarPrefix:c="mui",shouldSkipGeneratingVar:b=y.A,colorSchemeSelector:v=(n.light&&n.dark?"media":void 0),...g}=e,x=Object.keys(n)[0],j=a||(n.light&&"light"!==x?"light":x),C=P(c),{[j]:E,light:T,dark:N,...I}=n,R={...I};let M=E;if(("dark"===j&&!("dark"in n)||"light"===j&&!("light"in n))&&(M=!0),!M)throw new Error((0,r.A)(21,j));const L=A(R,M,g,j);T&&!R.light&&A(R,T,void 0,"light"),N&&!R.dark&&A(R,N,void 0,"dark");let D={defaultColorScheme:j,...L,cssVarPrefix:c,colorSchemeSelector:v,getCssVar:C,colorSchemes:R,font:{...u(L.typography),...L.font},spacing:(z=g.spacing,"number"==typeof z?`${z}px`:"string"==typeof z||"function"==typeof z||Array.isArray(z)?z:"8px")};var z;Object.keys(D.colorSchemes).forEach((e=>{const t=D.colorSchemes[e].palette,n=e=>{const n=e.split("-"),r=n[1],i=n[2];return C(e,t[r][i])};var r;if("light"===t.mode&&(_(t.common,"background","#fff"),_(t.common,"onBackground","#000")),"dark"===t.mode&&(_(t.common,"background","#000"),_(t.common,"onBackground","#fff")),r=t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"].forEach((e=>{r[e]||(r[e]={})})),"light"===t.mode){_(t.Alert,"errorColor",(0,h.Nd)(t.error.light,.6)),_(t.Alert,"infoColor",(0,h.Nd)(t.info.light,.6)),_(t.Alert,"successColor",(0,h.Nd)(t.success.light,.6)),_(t.Alert,"warningColor",(0,h.Nd)(t.warning.light,.6)),_(t.Alert,"errorFilledBg",n("palette-error-main")),_(t.Alert,"infoFilledBg",n("palette-info-main")),_(t.Alert,"successFilledBg",n("palette-success-main")),_(t.Alert,"warningFilledBg",n("palette-warning-main")),_(t.Alert,"errorFilledColor",O((()=>t.getContrastText(t.error.main)))),_(t.Alert,"infoFilledColor",O((()=>t.getContrastText(t.info.main)))),_(t.Alert,"successFilledColor",O((()=>t.getContrastText(t.success.main)))),_(t.Alert,"warningFilledColor",O((()=>t.getContrastText(t.warning.main)))),_(t.Alert,"errorStandardBg",(0,h.j4)(t.error.light,.9)),_(t.Alert,"infoStandardBg",(0,h.j4)(t.info.light,.9)),_(t.Alert,"successStandardBg",(0,h.j4)(t.success.light,.9)),_(t.Alert,"warningStandardBg",(0,h.j4)(t.warning.light,.9)),_(t.Alert,"errorIconColor",n("palette-error-main")),_(t.Alert,"infoIconColor",n("palette-info-main")),_(t.Alert,"successIconColor",n("palette-success-main")),_(t.Alert,"warningIconColor",n("palette-warning-main")),_(t.AppBar,"defaultBg",n("palette-grey-100")),_(t.Avatar,"defaultBg",n("palette-grey-400")),_(t.Button,"inheritContainedBg",n("palette-grey-300")),_(t.Button,"inheritContainedHoverBg",n("palette-grey-A100")),_(t.Chip,"defaultBorder",n("palette-grey-400")),_(t.Chip,"defaultAvatarColor",n("palette-grey-700")),_(t.Chip,"defaultIconColor",n("palette-grey-700")),_(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),_(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),_(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),_(t.LinearProgress,"primaryBg",(0,h.j4)(t.primary.main,.62)),_(t.LinearProgress,"secondaryBg",(0,h.j4)(t.secondary.main,.62)),_(t.LinearProgress,"errorBg",(0,h.j4)(t.error.main,.62)),_(t.LinearProgress,"infoBg",(0,h.j4)(t.info.main,.62)),_(t.LinearProgress,"successBg",(0,h.j4)(t.success.main,.62)),_(t.LinearProgress,"warningBg",(0,h.j4)(t.warning.main,.62)),_(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.11)`),_(t.Slider,"primaryTrack",(0,h.j4)(t.primary.main,.62)),_(t.Slider,"secondaryTrack",(0,h.j4)(t.secondary.main,.62)),_(t.Slider,"errorTrack",(0,h.j4)(t.error.main,.62)),_(t.Slider,"infoTrack",(0,h.j4)(t.info.main,.62)),_(t.Slider,"successTrack",(0,h.j4)(t.success.main,.62)),_(t.Slider,"warningTrack",(0,h.j4)(t.warning.main,.62));const e=(0,h.Y9)(t.background.default,.8);_(t.SnackbarContent,"bg",e),_(t.SnackbarContent,"color",O((()=>t.getContrastText(e)))),_(t.SpeedDialAction,"fabHoverBg",(0,h.Y9)(t.background.paper,.15)),_(t.StepConnector,"border",n("palette-grey-400")),_(t.StepContent,"border",n("palette-grey-400")),_(t.Switch,"defaultColor",n("palette-common-white")),_(t.Switch,"defaultDisabledColor",n("palette-grey-100")),_(t.Switch,"primaryDisabledColor",(0,h.j4)(t.primary.main,.62)),_(t.Switch,"secondaryDisabledColor",(0,h.j4)(t.secondary.main,.62)),_(t.Switch,"errorDisabledColor",(0,h.j4)(t.error.main,.62)),_(t.Switch,"infoDisabledColor",(0,h.j4)(t.info.main,.62)),_(t.Switch,"successDisabledColor",(0,h.j4)(t.success.main,.62)),_(t.Switch,"warningDisabledColor",(0,h.j4)(t.warning.main,.62)),_(t.TableCell,"border",(0,h.j4)((0,h.Cg)(t.divider,1),.88)),_(t.Tooltip,"bg",(0,h.Cg)(t.grey[700],.92))}if("dark"===t.mode){_(t.Alert,"errorColor",(0,h.j4)(t.error.light,.6)),_(t.Alert,"infoColor",(0,h.j4)(t.info.light,.6)),_(t.Alert,"successColor",(0,h.j4)(t.success.light,.6)),_(t.Alert,"warningColor",(0,h.j4)(t.warning.light,.6)),_(t.Alert,"errorFilledBg",n("palette-error-dark")),_(t.Alert,"infoFilledBg",n("palette-info-dark")),_(t.Alert,"successFilledBg",n("palette-success-dark")),_(t.Alert,"warningFilledBg",n("palette-warning-dark")),_(t.Alert,"errorFilledColor",O((()=>t.getContrastText(t.error.dark)))),_(t.Alert,"infoFilledColor",O((()=>t.getContrastText(t.info.dark)))),_(t.Alert,"successFilledColor",O((()=>t.getContrastText(t.success.dark)))),_(t.Alert,"warningFilledColor",O((()=>t.getContrastText(t.warning.dark)))),_(t.Alert,"errorStandardBg",(0,h.Nd)(t.error.light,.9)),_(t.Alert,"infoStandardBg",(0,h.Nd)(t.info.light,.9)),_(t.Alert,"successStandardBg",(0,h.Nd)(t.success.light,.9)),_(t.Alert,"warningStandardBg",(0,h.Nd)(t.warning.light,.9)),_(t.Alert,"errorIconColor",n("palette-error-main")),_(t.Alert,"infoIconColor",n("palette-info-main")),_(t.Alert,"successIconColor",n("palette-success-main")),_(t.Alert,"warningIconColor",n("palette-warning-main")),_(t.AppBar,"defaultBg",n("palette-grey-900")),_(t.AppBar,"darkBg",n("palette-background-paper")),_(t.AppBar,"darkColor",n("palette-text-primary")),_(t.Avatar,"defaultBg",n("palette-grey-600")),_(t.Button,"inheritContainedBg",n("palette-grey-800")),_(t.Button,"inheritContainedHoverBg",n("palette-grey-700")),_(t.Chip,"defaultBorder",n("palette-grey-700")),_(t.Chip,"defaultAvatarColor",n("palette-grey-300")),_(t.Chip,"defaultIconColor",n("palette-grey-300")),_(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),_(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),_(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),_(t.LinearProgress,"primaryBg",(0,h.Nd)(t.primary.main,.5)),_(t.LinearProgress,"secondaryBg",(0,h.Nd)(t.secondary.main,.5)),_(t.LinearProgress,"errorBg",(0,h.Nd)(t.error.main,.5)),_(t.LinearProgress,"infoBg",(0,h.Nd)(t.info.main,.5)),_(t.LinearProgress,"successBg",(0,h.Nd)(t.success.main,.5)),_(t.LinearProgress,"warningBg",(0,h.Nd)(t.warning.main,.5)),_(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.13)`),_(t.Slider,"primaryTrack",(0,h.Nd)(t.primary.main,.5)),_(t.Slider,"secondaryTrack",(0,h.Nd)(t.secondary.main,.5)),_(t.Slider,"errorTrack",(0,h.Nd)(t.error.main,.5)),_(t.Slider,"infoTrack",(0,h.Nd)(t.info.main,.5)),_(t.Slider,"successTrack",(0,h.Nd)(t.success.main,.5)),_(t.Slider,"warningTrack",(0,h.Nd)(t.warning.main,.5));const e=(0,h.Y9)(t.background.default,.98);_(t.SnackbarContent,"bg",e),_(t.SnackbarContent,"color",O((()=>t.getContrastText(e)))),_(t.SpeedDialAction,"fabHoverBg",(0,h.Y9)(t.background.paper,.15)),_(t.StepConnector,"border",n("palette-grey-600")),_(t.StepContent,"border",n("palette-grey-600")),_(t.Switch,"defaultColor",n("palette-grey-300")),_(t.Switch,"defaultDisabledColor",n("palette-grey-600")),_(t.Switch,"primaryDisabledColor",(0,h.Nd)(t.primary.main,.55)),_(t.Switch,"secondaryDisabledColor",(0,h.Nd)(t.secondary.main,.55)),_(t.Switch,"errorDisabledColor",(0,h.Nd)(t.error.main,.55)),_(t.Switch,"infoDisabledColor",(0,h.Nd)(t.info.main,.55)),_(t.Switch,"successDisabledColor",(0,h.Nd)(t.success.main,.55)),_(t.Switch,"warningDisabledColor",(0,h.Nd)(t.warning.main,.55)),_(t.TableCell,"border",(0,h.Nd)((0,h.Cg)(t.divider,1),.68)),_(t.Tooltip,"bg",(0,h.Cg)(t.grey[700],.92))}k(t.background,"default"),k(t.background,"paper"),k(t.common,"background"),k(t.common,"onBackground"),k(t,"divider"),Object.keys(t).forEach((e=>{const n=t[e];n&&"object"==typeof n&&(n.main&&_(t[e],"mainChannel",(0,h.Me)(S(n.main))),n.light&&_(t[e],"lightChannel",(0,h.Me)(S(n.light))),n.dark&&_(t[e],"darkChannel",(0,h.Me)(S(n.dark))),n.contrastText&&_(t[e],"contrastTextChannel",(0,h.Me)(S(n.contrastText))),"text"===e&&(k(t[e],"primary"),k(t[e],"secondary")),"action"===e&&(n.active&&k(t[e],"active"),n.selected&&k(t[e],"selected")))}))})),D=t.reduce(((e,t)=>(0,i.A)(e,t)),D);const V={prefix:c,disableCssColorScheme:s,shouldSkipGeneratingVar:b,getSelector:m(D)},{vars:$,generateThemeVars:F,generateStyleSheets:B}=f(D,V);return D.vars=$,Object.entries(D.colorSchemes[D.defaultColorScheme]).forEach((([e,t])=>{D[e]=t})),D.generateThemeVars=F,D.generateStyleSheets=B,D.generateSpacing=function(){return(0,o.A)(g.spacing,(0,l.LX)(this))},D.getColorSchemeSelector=function(e){return function(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}(v),D.spacing=D.generateSpacing(),D.shouldSkipGeneratingVar=b,D.unstable_sxConfig={...d.A,...g?.unstable_sxConfig},D.unstable_sx=function(e){return(0,p.A)({sx:e,theme:this})},D.toRuntimeSource=w,D}},94479:(e,t,n)=>{n.d(t,{Ay:()=>l,cz:()=>r,p0:()=>i});const r={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},i={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function a(e){return`${Math.round(e)}ms`}function o(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function l(e){const t={...r,...e.easing},n={...i,...e.duration};return{getAutoHeightDuration:o,create:(e=["all"],r={})=>{const{duration:i=n.standard,easing:o=t.easeInOut,delay:l=0,...u}=r;return(Array.isArray(e)?e:[e]).map((e=>`${e} ${"string"==typeof i?i:a(i)} ${o} ${"string"==typeof l?l:a(l)}`)).join(",")},...e,easing:t,duration:n}}},34558:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(78745);const i={textTransform:"uppercase"},a='"Roboto", "Helvetica", "Arial", sans-serif';function o(e,t){const{fontFamily:n=a,fontSize:o=14,fontWeightLight:l=300,fontWeightRegular:u=400,fontWeightMedium:s=500,fontWeightBold:c=700,htmlFontSize:f=16,allVariants:d,pxToRem:p,...h}="function"==typeof t?t(e):t,b=o/14,v=p||(e=>e/f*b+"rem"),y=(e,t,r,i,o)=>{return{fontFamily:n,fontWeight:e,fontSize:v(t),lineHeight:r,...n===a?{letterSpacing:(l=i/t,Math.round(1e5*l)/1e5+"em")}:{},...o,...d};var l},g={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(s,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(s,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(s,14,1.75,.4,i),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,i),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,r.A)({htmlFontSize:f,pxToRem:v,fontFamily:n,fontSize:o,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:s,fontWeightBold:c,...g},h,{clone:!1})}},23121:(e,t,n)=>{n.d(t,{A:()=>r});const r=(0,n(89022).A)()},80040:(e,t,n)=>{n.d(t,{A:()=>r});const r=e=>[...[...Array(25)].map(((t,n)=>`--${e?`${e}-`:""}overlays-${n}`)),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`]},28875:(e,t,n)=>{function r(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}n.d(t,{A:()=>r})},74988:(e,t,n)=>{n.d(t,{A:()=>r});const r="$$material"},55270:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(36674);const i=e=>(0,r.A)(e)&&"classes"!==e},59542:(e,t,n)=>{function r(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}n.d(t,{A:()=>r})},36674:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},51148:(e,t,n)=>{n.d(t,{Ay:()=>l});var r=n(15543),i=n(23121),a=n(74988),o=n(55270);const l=(0,r.Ay)({themeId:a.A,defaultTheme:i.A,rootShouldForwardProp:o.A})},15622:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(33283).A},58520:(e,t,n)=>{function r(e=[]){return([,t])=>t&&function(e,t=[]){if(!function(e){return"string"==typeof e.main}(e))return!1;for(const n of t)if(!e.hasOwnProperty(n)||"string"!=typeof e[n])return!1;return!0}(t,e)}n.d(t,{A:()=>r})},60129:(e,t,n)=>{n.d(t,{A:()=>i});const r={theme:void 0};function i(e){let t,n;return i=>{let a=t;return void 0!==a&&i.theme===n||(r.theme=i.theme,a=e(r),t=a,n=i.theme),a}}},53791:(e,t,n)=>{n.d(t,{Ay:()=>g,q_:()=>m});var r=n(6614),i=n(7552),a=n(39389),o=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,l=(0,a.A)((function(e){return o.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),u=n(90722),s=n(92005),c=n(53760),f=n(20387),d=l,p=function(e){return"theme"!==e},h=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?d:p},b=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},v=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,s.SF)(t,n,r),(0,f.s)((function(){return(0,s.sk)(t,n,r)})),null},y=function e(t,n){var a,o,l=t.__emotion_real===t,f=l&&t.__emotion_base||t;void 0!==n&&(a=n.label,o=n.target);var d=b(t,n,l),p=d||h(f),y=!p("as");return function(){var g=arguments,m=l&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&m.push("label:"+a+";"),null==g[0]||void 0===g[0].raw)m.push.apply(m,g);else{m.push(g[0][0]);for(var w=g.length,_=1;_<w;_++)m.push(g[_],g[0][_])}var S=(0,u.w)((function(e,t,n){var r=y&&e.as||f,a="",l=[],b=e;if(null==e.theme){for(var g in b={},e)b[g]=e[g];b.theme=i.useContext(u.T)}"string"==typeof e.className?a=(0,s.Rk)(t.registered,l,e.className):null!=e.className&&(a=e.className+" ");var w=(0,c.J)(m.concat(l),t.registered,b);a+=t.key+"-"+w.name,void 0!==o&&(a+=" "+o);var _=y&&void 0===d?h(r):p,S={};for(var k in e)y&&"as"===k||_(k)&&(S[k]=e[k]);return S.className=a,n&&(S.ref=n),i.createElement(i.Fragment,null,i.createElement(v,{cache:t,serialized:w,isStringTag:"string"==typeof r}),i.createElement(r,S))}));return S.displayName=void 0!==a?a:"Styled("+("string"==typeof f?f:f.displayName||f.name||"Component")+")",S.defaultProps=t.defaultProps,S.__emotion_real=S,S.__emotion_base=f,S.__emotion_styles=m,S.__emotion_forwardProp=d,Object.defineProperty(S,"toString",{value:function(){return"."+o}}),S.withComponent=function(t,i){return e(t,(0,r.A)({},n,i,{shouldForwardProp:b(S,i,!0)})).apply(void 0,m)},S}}.bind();function g(e,t){return y(e,t)}["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){y[e]=y(e)}));const m=(e,t)=>{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},53173:(e,t,n)=>{n.d(t,{A:()=>u,b:()=>l});var r=n(7552),i=n(80007),a=n(69500);const o=r.createContext(void 0);function l({props:e,name:t}){return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const a=t.components[n];return a.defaultProps?(0,i.A)(a.defaultProps,r):a.styleOverrides||a.variants?r:(0,i.A)(a,r)}({props:e,name:t,theme:{components:r.useContext(o)}})}const u=function({value:e,children:t}){return(0,a.jsx)(o.Provider,{value:e,children:t})}},43059:(e,t,n)=>{n.d(t,{EU:()=>s,NI:()=>u,iZ:()=>f,kW:()=>d,vf:()=>c,zu:()=>a});var r=n(78745),i=n(91939);const a={xs:0,sm:600,md:900,lg:1200,xl:1536},o={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${a[e]}px)`},l={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:a[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function u(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||o;return t.reduce(((r,i,a)=>(r[e.up(e.keys[a])]=n(t[a]),r)),{})}if("object"==typeof t){const e=r.breakpoints||o;return Object.keys(t).reduce(((o,u)=>{if((0,i.ob)(e.keys,u)){const e=(0,i.CT)(r.containerQueries?r:l,u);e&&(o[e]=n(t[u],u))}else if(Object.keys(e.values||a).includes(u))o[e.up(u)]=n(t[u],u);else{const e=u;o[e]=t[e]}return o}),{})}return n(t)}function s(e={}){const t=e.keys?.reduce(((t,n)=>(t[e.up(n)]={},t)),{});return t||{}}function c(e,t){return e.reduce(((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function f(e,...t){const n=s(e),i=[n,...t].reduce(((e,t)=>(0,r.A)(e,t)),{});return c(Object.keys(n),i)}function d({values:e,breakpoints:t,base:n}){const r=n||function(e,t){if("object"!=typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach(((t,r)=>{r<e.length&&(n[t]=!0)})):r.forEach((t=>{null!=e[t]&&(n[t]=!0)})),n}(e,t),i=Object.keys(r);if(0===i.length)return e;let a;return i.reduce(((t,n,r)=>(Array.isArray(e)?(t[n]=null!=e[r]?e[r]:e[a],a=r):"object"==typeof e?(t[n]=null!=e[n]?e[n]:e[a],a=n):t[n]=e,t)),{})}},72639:(e,t,n)=>{n.d(t,{Cg:()=>b,E2:()=>o,J1:()=>d,Me:()=>u,Nd:()=>y,Ob:()=>c,X0:()=>s,X4:()=>h,Y9:()=>_,YL:()=>f,a:()=>g,e$:()=>v,eM:()=>p,j4:()=>m,rP:()=>l,tL:()=>w});var r=n(51569),i=n(93801);function a(e,t=0,n=1){return(0,i.A)(e,t,n)}function o(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(o(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error((0,r.A)(9,e));let i,a=e.substring(t+1,e.length-1);if("color"===n){if(a=a.split(" "),i=a.shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(i))throw new Error((0,r.A)(10,i))}else a=a.split(",");return a=a.map((e=>parseFloat(e))),{type:n,values:a,colorSpace:i}}const u=(e,t)=>{try{return(e=>{const t=l(e);return t.values.slice(0,3).map(((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e)).join(" ")})(e)}catch(t){return e}};function s(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function c(e){if(e.startsWith("#"))return e;const{values:t}=l(e);return`#${t.map(((e,t)=>function(e){const t=e.toString(16);return 1===t.length?`0${t}`:t}(3===t?Math.round(255*e):e))).join("")}`}function f(e){e=l(e);const{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,a=r*Math.min(i,1-i),o=(e,t=(e+n/30)%12)=>i-a*Math.max(Math.min(t-3,9-t,1),-1);let u="rgb";const c=[Math.round(255*o(0)),Math.round(255*o(8)),Math.round(255*o(4))];return"hsla"===e.type&&(u+="a",c.push(t[3])),s({type:u,values:c})}function d(e){let t="hsl"===(e=l(e)).type||"hsla"===e.type?l(f(e)).values:e.values;return t=t.map((t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function p(e,t){const n=d(e),r=d(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function h(e,t){return e=l(e),t=a(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,s(e)}function b(e,t,n){try{return h(e,t)}catch(t){return e}}function v(e,t){if(e=l(e),t=a(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return s(e)}function y(e,t,n){try{return v(e,t)}catch(t){return e}}function g(e,t){if(e=l(e),t=a(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return s(e)}function m(e,t,n){try{return g(e,t)}catch(t){return e}}function w(e,t=.15){return d(e)>.5?v(e,t):g(e,t)}function _(e,t,n){try{return w(e,t)}catch(t){return e}}},92271:(e,t,n)=>{n.d(t,{A:()=>i});const r=e=>{const t=Object.keys(e).map((t=>({key:t,val:e[t]})))||[];return t.sort(((e,t)=>e.val-t.val)),t.reduce(((e,t)=>({...e,[t.key]:t.val})),{})};function i(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:i=5,...a}=e,o=r(t),l=Object.keys(o);function u(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function s(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-i/100}${n})`}function c(e,r){const a=l.indexOf(r);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==a&&"number"==typeof t[l[a]]?t[l[a]]:r)-i/100}${n})`}return{keys:l,values:o,up:u,down:s,between:c,only:function(e){return l.indexOf(e)+1<l.length?c(e,l[l.indexOf(e)+1]):u(e)},not:function(e){const t=l.indexOf(e);return 0===t?u(l[1]):t===l.length-1?s(l[t]):c(e,l[l.indexOf(e)+1]).replace("@media","@media not all and")},unit:n,...a}}},15543:(e,t,n)=>{n.d(t,{Ay:()=>h});var r=n(53791),i=n(78745),a=n(72861),o=n(76795);const l=(0,a.A)();function u(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function s(e,t,n){return function(e){for(const t in e)return!1;return!0}(t)?n:t[e]||t}const c=Symbol("mui.processed_props");function f(e,t,n){if(c in e)return e[c];const r={...e,theme:s(t,e.theme,n)};return e[c]=r,r[c]=r,r}function d(e){return e?(t,n)=>n[e]:null}function p(e,t){const n="function"==typeof e?e(t):e;if(Array.isArray(n))return n.flatMap((e=>p(e,t)));if(Array.isArray(n?.variants)){const{variants:e,...r}=n;let i,a=r;e:for(let n=0;n<e.length;n+=1){const r=e[n];if("function"==typeof r.props){if(i??={...t,...t.ownerState,ownerState:t.ownerState},!r.props(i))continue}else for(const e in r.props)if(t[e]!==r.props[e]&&t.ownerState?.[e]!==r.props[e])continue e;Array.isArray(a)||(a=[a]),"function"==typeof r.style?(i??={...t,...t.ownerState,ownerState:t.ownerState},a.push(r.style(i))):a.push(r.style)}return a}return n}function h(e={}){const{themeId:t,defaultTheme:n=l,rootShouldForwardProp:a=u,slotShouldForwardProp:c=u}=e,h=e=>(0,o.A)(f(e,t,n));return h.__mui_systemSx=!0,(e,o={})=>{(0,r.q_)(e,(e=>e.filter((e=>!e?.__mui_systemSx))));const{name:l,slot:v,skipVariantsResolver:y,skipSx:g,overridesResolver:m=d(b(v)),...w}=o,_=void 0!==y?y:v&&"Root"!==v&&"root"!==v||!1,S=g||!1;let k=u;"Root"===v||"root"===v?k=a:v?k=c:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(k=void 0);const O=(0,r.Ay)(e,{shouldForwardProp:k,label:void 0,...w}),P=e=>"function"==typeof e&&e.__emotion_real!==e||(0,i.Q)(e)?r=>p(e,f(r,t,n)):e,A=(r,...i)=>{let a=P(r);const o=i?i.map(P):[];l&&m&&o.push((e=>{const r=s(t,e.theme,n);if(!r.components||!r.components[l]||!r.components[l].styleOverrides)return null;const i=r.components[l].styleOverrides,a={},o=f(e,t,n);for(const e in i)a[e]=p(i[e],o);return m(e,a)})),l&&!_&&o.push((e=>{const r=s(t,e.theme,n),i=r?.components?.[l]?.variants;return i?p({variants:i},f(e,t,n)):null})),S||o.push(h);const u=o.length-i.length;if(Array.isArray(r)&&u>0){const e=new Array(u).fill("");a=[...r,...e],a.raw=[...r.raw,...e]}const c=O(a,...o);return e.muiName&&(c.muiName=e.muiName),c};return O.withConfig&&(A.withConfig=O.withConfig),A}}function b(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}},81459:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(34901);function i(e=8,t=(0,r.LX)({spacing:e})){if(e.mui)return e;const n=(...e)=>(0===e.length?[1]:e).map((e=>{const n=t(e);return"number"==typeof n?`${n}px`:n})).join(" ");return n.mui=!0,n}},72861:(e,t,n)=>{n.d(t,{A:()=>f});var r=n(78745),i=n(92271),a=n(91939);const o={borderRadius:4};var l=n(81459),u=n(76795),s=n(94177);function c(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const f=function(e={},...t){const{breakpoints:n={},palette:f={},spacing:d,shape:p={},...h}=e,b=(0,i.A)(n),v=(0,l.A)(d);let y=(0,r.A)({breakpoints:b,direction:"ltr",components:{},palette:{mode:"light",...f},spacing:v,shape:{...o,...p}},h);return y=(0,a.Ay)(y),y.applyStyles=c,y=t.reduce(((e,t)=>(0,r.A)(e,t)),y),y.unstable_sxConfig={...s.A,...h?.unstable_sxConfig},y.unstable_sx=function(e){return(0,u.A)({sx:e,theme:this})},y}},91939:(e,t,n)=>{function r(e,t){if(!e.containerQueries)return t;const n=Object.keys(t).filter((e=>e.startsWith("@container"))).sort(((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)}));return n.length?n.reduce(((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e}),{...t}):t}function i(e,t){return"@"===t||t.startsWith("@")&&(e.some((e=>t.startsWith(`@${e}`)))||!!t.match(/^@\d/))}function a(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(a)}function o(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const i=t(e.breakpoints.not(...n),r);return i.includes("not all and")?i.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):i}}const r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}n.d(t,{Ay:()=>o,CT:()=>a,_S:()=>r,ob:()=>i})},99091:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(78745);const i=function(e,t){return t?(0,r.A)(e,t,{clone:!1}):e}},34901:(e,t,n)=>{n.d(t,{LX:()=>h,MA:()=>p,_W:()=>b,Lc:()=>y,Ms:()=>g});var r=n(43059),i=n(39995),a=n(99091);const o={m:"margin",p:"padding"},l={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},u={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},s=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!u[e])return[e];e=u[e]}const[t,n]=e.split(""),r=o[t],i=l[n]||"";return Array.isArray(i)?i.map((e=>r+e)):[r+i]})(t)),e[t])}(),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],f=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],d=[...c,...f];function p(e,t,n,r){const a=(0,i.Yn)(e,t,!0)??n;return"number"==typeof a||"string"==typeof a?e=>"string"==typeof e?e:"string"==typeof a?`calc(${e} * ${a})`:a*e:Array.isArray(a)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=a[t];return e>=0?n:"number"==typeof n?-n:`-${n}`}:"function"==typeof a?a:()=>{}}function h(e){return p(e,"spacing",8)}function b(e,t){return"string"==typeof t||null==t?t:e(t)}function v(e,t){const n=h(e.theme);return Object.keys(e).map((i=>function(e,t,n,i){if(!t.includes(n))return null;const a=function(e,t){return n=>e.reduce(((e,r)=>(e[r]=b(t,n),e)),{})}(s(n),i),o=e[n];return(0,r.NI)(e,o,a)}(e,t,i,n))).reduce(a.A,{})}function y(e){return v(e,c)}function g(e){return v(e,f)}function m(e){return v(e,d)}y.propTypes={},y.filterProps=c,g.propTypes={},g.filterProps=f,m.propTypes={},m.filterProps=d},39995:(e,t,n)=>{n.d(t,{Ay:()=>l,BO:()=>o,Yn:()=>a});var r=n(33283),i=n(43059);function a(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce(((e,t)=>e&&e[t]?e[t]:null),e);if(null!=n)return n}return t.split(".").reduce(((e,t)=>e&&null!=e[t]?e[t]:null),e)}function o(e,t,n,r=n){let i;return i="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:a(e,n)||r,t&&(i=t(i,r,e)),i}const l=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:l,transform:u}=e,s=e=>{if(null==e[t])return null;const s=e[t],c=a(e.theme,l)||{};return(0,i.NI)(e,s,(e=>{let i=o(c,u,e);return e===i&&"string"==typeof e&&(i=o(c,u,`${t}${"default"===e?"":(0,r.A)(e)}`,e)),!1===n?i:{[n]:i}}))};return s.propTypes={},s.filterProps=[t],s}},94177:(e,t,n)=>{n.d(t,{A:()=>R});var r=n(34901),i=n(39995),a=n(99091);const o=function(...e){const t=e.reduce(((e,t)=>(t.filterProps.forEach((n=>{e[n]=t})),e)),{}),n=e=>Object.keys(e).reduce(((n,r)=>t[r]?(0,a.A)(n,t[r](e)):n),{});return n.propTypes={},n.filterProps=e.reduce(((e,t)=>e.concat(t.filterProps)),[]),n};var l=n(43059);function u(e){return"number"!=typeof e?e:`${e}px solid`}function s(e,t){return(0,i.Ay)({prop:e,themeKey:"borders",transform:t})}const c=s("border",u),f=s("borderTop",u),d=s("borderRight",u),p=s("borderBottom",u),h=s("borderLeft",u),b=s("borderColor"),v=s("borderTopColor"),y=s("borderRightColor"),g=s("borderBottomColor"),m=s("borderLeftColor"),w=s("outline",u),_=s("outlineColor"),S=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=(0,r.MA)(e.theme,"shape.borderRadius",4,"borderRadius"),n=e=>({borderRadius:(0,r._W)(t,e)});return(0,l.NI)(e,e.borderRadius,n)}return null};S.propTypes={},S.filterProps=["borderRadius"],o(c,f,d,p,h,b,v,y,g,m,S,w,_);const k=e=>{if(void 0!==e.gap&&null!==e.gap){const t=(0,r.MA)(e.theme,"spacing",8,"gap"),n=e=>({gap:(0,r._W)(t,e)});return(0,l.NI)(e,e.gap,n)}return null};k.propTypes={},k.filterProps=["gap"];const O=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=(0,r.MA)(e.theme,"spacing",8,"columnGap"),n=e=>({columnGap:(0,r._W)(t,e)});return(0,l.NI)(e,e.columnGap,n)}return null};O.propTypes={},O.filterProps=["columnGap"];const P=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=(0,r.MA)(e.theme,"spacing",8,"rowGap"),n=e=>({rowGap:(0,r._W)(t,e)});return(0,l.NI)(e,e.rowGap,n)}return null};function A(e,t){return"grey"===t?t:e}function x(e){return e<=1&&0!==e?100*e+"%":e}P.propTypes={},P.filterProps=["rowGap"],o(k,O,P,(0,i.Ay)({prop:"gridColumn"}),(0,i.Ay)({prop:"gridRow"}),(0,i.Ay)({prop:"gridAutoFlow"}),(0,i.Ay)({prop:"gridAutoColumns"}),(0,i.Ay)({prop:"gridAutoRows"}),(0,i.Ay)({prop:"gridTemplateColumns"}),(0,i.Ay)({prop:"gridTemplateRows"}),(0,i.Ay)({prop:"gridTemplateAreas"}),(0,i.Ay)({prop:"gridArea"})),o((0,i.Ay)({prop:"color",themeKey:"palette",transform:A}),(0,i.Ay)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:A}),(0,i.Ay)({prop:"backgroundColor",themeKey:"palette",transform:A}));const j=(0,i.Ay)({prop:"width",transform:x}),C=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||l.zu[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:x(t)}};return(0,l.NI)(e,e.maxWidth,t)}return null};C.filterProps=["maxWidth"];const E=(0,i.Ay)({prop:"minWidth",transform:x}),T=(0,i.Ay)({prop:"height",transform:x}),N=(0,i.Ay)({prop:"maxHeight",transform:x}),I=(0,i.Ay)({prop:"minHeight",transform:x}),R=((0,i.Ay)({prop:"size",cssProperty:"width",transform:x}),(0,i.Ay)({prop:"size",cssProperty:"height",transform:x}),o(j,C,E,T,N,I,(0,i.Ay)({prop:"boxSizing"})),{border:{themeKey:"borders",transform:u},borderTop:{themeKey:"borders",transform:u},borderRight:{themeKey:"borders",transform:u},borderBottom:{themeKey:"borders",transform:u},borderLeft:{themeKey:"borders",transform:u},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:u},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:S},color:{themeKey:"palette",transform:A},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:A},backgroundColor:{themeKey:"palette",transform:A},p:{style:r.Ms},pt:{style:r.Ms},pr:{style:r.Ms},pb:{style:r.Ms},pl:{style:r.Ms},px:{style:r.Ms},py:{style:r.Ms},padding:{style:r.Ms},paddingTop:{style:r.Ms},paddingRight:{style:r.Ms},paddingBottom:{style:r.Ms},paddingLeft:{style:r.Ms},paddingX:{style:r.Ms},paddingY:{style:r.Ms},paddingInline:{style:r.Ms},paddingInlineStart:{style:r.Ms},paddingInlineEnd:{style:r.Ms},paddingBlock:{style:r.Ms},paddingBlockStart:{style:r.Ms},paddingBlockEnd:{style:r.Ms},m:{style:r.Lc},mt:{style:r.Lc},mr:{style:r.Lc},mb:{style:r.Lc},ml:{style:r.Lc},mx:{style:r.Lc},my:{style:r.Lc},margin:{style:r.Lc},marginTop:{style:r.Lc},marginRight:{style:r.Lc},marginBottom:{style:r.Lc},marginLeft:{style:r.Lc},marginX:{style:r.Lc},marginY:{style:r.Lc},marginInline:{style:r.Lc},marginInlineStart:{style:r.Lc},marginInlineEnd:{style:r.Lc},marginBlock:{style:r.Lc},marginBlockStart:{style:r.Lc},marginBlockEnd:{style:r.Lc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:k},rowGap:{style:P},columnGap:{style:O},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:x},maxWidth:{style:C},minWidth:{transform:x},height:{transform:x},maxHeight:{transform:x},minHeight:{transform:x},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}})},76795:(e,t,n)=>{n.d(t,{A:()=>c});var r=n(33283),i=n(99091),a=n(39995),o=n(43059),l=n(91939),u=n(94177);const s=function(){function e(e,t,n,i){const l={[e]:t,theme:n},u=i[e];if(!u)return{[e]:t};const{cssProperty:s=e,themeKey:c,transform:f,style:d}=u;if(null==t)return null;if("typography"===c&&"inherit"===t)return{[e]:t};const p=(0,a.Yn)(n,c)||{};return d?d(l):(0,o.NI)(l,t,(t=>{let n=(0,a.BO)(p,f,t);return t===n&&"string"==typeof t&&(n=(0,a.BO)(p,f,`${e}${"default"===t?"":(0,r.A)(t)}`,t)),!1===s?n:{[s]:n}}))}return function t(n){const{sx:r,theme:a={}}=n||{};if(!r)return null;const s=a.unstable_sxConfig??u.A;function c(n){let r=n;if("function"==typeof n)r=n(a);else if("object"!=typeof n)return n;if(!r)return null;const u=(0,o.EU)(a.breakpoints),c=Object.keys(u);let f=u;return Object.keys(r).forEach((n=>{const l="function"==typeof(u=r[n])?u(a):u;var u;if(null!=l)if("object"==typeof l)if(s[n])f=(0,i.A)(f,e(n,l,a,s));else{const e=(0,o.NI)({theme:a},l,(e=>({[n]:e})));!function(...e){const t=e.reduce(((e,t)=>e.concat(Object.keys(t))),[]),n=new Set(t);return e.every((e=>n.size===Object.keys(e).length))}(e,l)?f=(0,i.A)(f,e):f[n]=t({sx:l,theme:a})}else f=(0,i.A)(f,e(n,l,a,s))})),(0,l._S)(a,(0,o.vf)(c,f))}return Array.isArray(r)?r.map(c):c(r)}}();s.filterProps=["sx"];const c=s},23043:(e,t,n)=>{n.d(t,{A:()=>i});const r=e=>e,i=(()=>{let e=r;return{configure(t){e=t},generate:t=>e(t),reset(){e=r}}})()},33283:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(51569);function i(e){if("string"!=typeof e)throw new Error((0,r.A)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},93801:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}},70799:(e,t,n)=>{function r(e,t,n=void 0){const r={};for(const i in e){const a=e[i];let o="",l=!0;for(let e=0;e<a.length;e+=1){const r=a[e];r&&(o+=(!0===l?"":" ")+t(r),l=!1,n&&n[r]&&(o+=" "+n[r]))}r[i]=o}return r}n.d(t,{A:()=>r})},78745:(e,t,n)=>{function r(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function i(e){if(!r(e))return e;const t={};return Object.keys(e).forEach((n=>{t[n]=i(e[n])})),t}function a(e,t,n={clone:!0}){const o=n.clone?{...e}:e;return r(e)&&r(t)&&Object.keys(t).forEach((l=>{r(t[l])&&Object.prototype.hasOwnProperty.call(e,l)&&r(e[l])?o[l]=a(e[l],t[l],n):n.clone?o[l]=r(t[l])?i(t[l]):t[l]:o[l]=t[l]})),o}n.d(t,{A:()=>a,Q:()=>r})},51569:(e,t,n)=>{function r(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;e<arguments.length;e+=1)t+="&args[]="+encodeURIComponent(arguments[e]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}n.d(t,{A:()=>r})},85693:(e,t,n)=>{n.d(t,{Ay:()=>a});var r=n(23043);const i={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function a(e,t,n="Mui"){const a=i[t];return a?`${n}-${a}`:`${r.A.generate(e)}-${t}`}},33761:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(85693);function i(e,t,n="Mui"){const i={};return t.forEach((t=>{i[t]=(0,r.Ay)(e,t,n)})),i}},80007:(e,t,n)=>{function r(e,t){const n={...t};for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const a=i;if("components"===a||"slots"===a)n[a]={...e[a],...n[a]};else if("componentsProps"===a||"slotProps"===a){const i=e[a],o=t[a];if(o)if(i){n[a]={...o};for(const e in i)if(Object.prototype.hasOwnProperty.call(i,e)){const t=e;n[a][t]=r(i[t],o[t])}}else n[a]=o;else n[a]=i||{}}else void 0===n[a]&&(n[a]=e[a])}return n}n.d(t,{A:()=>r})},35068:e=>{var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===n}(e)}(e)},n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function i(e,t,n){return e.concat(t).map((function(e){return r(e,n)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function o(e,t){try{return t in e}catch(e){return!1}}function l(e,n,u){(u=u||{}).arrayMerge=u.arrayMerge||i,u.isMergeableObject=u.isMergeableObject||t,u.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(n);return s===Array.isArray(e)?s?u.arrayMerge(e,n,u):function(e,t,n){var i={};return n.isMergeableObject(e)&&a(e).forEach((function(t){i[t]=r(e[t],n)})),a(t).forEach((function(a){(function(e,t){return o(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,a)||(o(e,a)&&n.isMergeableObject(t[a])?i[a]=function(e,t){if(!t.customMerge)return l;var n=t.customMerge(e);return"function"==typeof n?n:l}(a,n)(e[a],t[a],n):i[a]=r(t[a],n))})),i}(e,n,u):r(n,u)}l.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return l(e,n,t)}),{})};var u=l;e.exports=u},78245:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(35451);function i(e){return("object"==typeof e&&null!==e&&"message"in e?e.message:`${e}`).replace(/\.$/,"")}class a{async getBufferFromResponse(e){const t=await e.arrayBuffer();return r.hp.from(t)}constructor(e,t={}){this.baseOverrides={},this.url=e;const n=t.fetch||globalThis.fetch.bind(globalThis);if(!n)throw new TypeError("no fetch function supplied, and none found in global environment");t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=n}async fetch(e,t){let n;try{n=await this.fetchImplementation(e,t)}catch(r){if(!`${r}`.includes("Failed to fetch"))throw new Error(`${i(r)} fetching ${e}`,{cause:r});console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{n=await this.fetchImplementation(e,{...t,cache:"reload"})}catch(t){throw new Error(`${i(t)} fetching ${e}`,{cause:t})}}return n}async read(e,t=0,n,r=0,i={}){const{headers:a={},signal:o,overrides:l={}}=i;n<1/0?a.range=`bytes=${r}-${r+n}`:n===1/0&&0!==r&&(a.range=`bytes=${r}-`);const u=await this.fetch(this.url,{...this.baseOverrides,...l,headers:{...a,...l.headers,...this.baseOverrides.headers},method:"GET",redirect:"follow",mode:"cors",signal:o});if(!u.ok)throw new Error(`HTTP ${u.status} fetching ${this.url}`);if(200===u.status&&0===r||206===u.status){const r=await this.getBufferFromResponse(u),i=r.copy(e,t,0,Math.min(n,r.length)),a=u.headers.get("content-range"),o=/\/(\d+)$/.exec(a||"");return(null==o?void 0:o[1])&&(this._stat={size:parseInt(o[1],10)}),{bytesRead:i,buffer:e}}if(200===u.status)throw new Error(`${this.url} fetch returned status 200, expected 206`);throw new Error(`HTTP ${u.status} fetching ${this.url}`)}async readFile(e={}){let t,n;"string"==typeof e?(t=e,n={}):(t=e.encoding,n=e,delete n.encoding);const{headers:r={},signal:i,overrides:a={}}=n,o=await this.fetch(this.url,{headers:r,method:"GET",redirect:"follow",mode:"cors",signal:i,...this.baseOverrides,...a});if(200!==o.status)throw new Error(`HTTP ${o.status} fetching ${this.url}`);if("utf8"===t)return o.text();if(t)throw new Error(`unsupported encoding: ${t}`);return this.getBufferFromResponse(o)}async stat(){if(!this._stat){const e=r.hp.allocUnsafe(10);if(await this.read(e,0,10,0),!this._stat)throw new Error(`unable to determine size of file at ${this.url}`)}return this._stat}async close(){}}},806:(e,t,n)=>{var r=n(76896),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function u(e){return r.isMemo(e)?o:l[e.$$typeof]||i}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=o;var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var i=p(n);i&&i!==h&&e(t,i,r)}var o=c(n);f&&(o=o.concat(f(n)));for(var l=u(t),b=u(n),v=0;v<o.length;++v){var y=o[v];if(!(a[y]||r&&r[y]||b&&b[y]||l&&l[y])){var g=d(n,y);try{s(t,y,g)}catch(e){}}}}return t}},29116:(e,t)=>{var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,s=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,b=n?Symbol.for("react.memo"):60115,v=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,m=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function _(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case a:case l:case o:case p:return e;default:switch(e=e&&e.$$typeof){case s:case d:case v:case b:case u:return e;default:return t}}case i:return t}}}function S(e){return _(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=s,t.ContextProvider=u,t.Element=r,t.ForwardRef=d,t.Fragment=a,t.Lazy=v,t.Memo=b,t.Portal=i,t.Profiler=l,t.StrictMode=o,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||_(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return _(e)===s},t.isContextProvider=function(e){return _(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return _(e)===d},t.isFragment=function(e){return _(e)===a},t.isLazy=function(e){return _(e)===v},t.isMemo=function(e){return _(e)===b},t.isPortal=function(e){return _(e)===i},t.isProfiler=function(e){return _(e)===l},t.isStrictMode=function(e){return _(e)===o},t.isSuspense=function(e){return _(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===f||e===l||e===o||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===b||e.$$typeof===u||e.$$typeof===s||e.$$typeof===d||e.$$typeof===g||e.$$typeof===m||e.$$typeof===w||e.$$typeof===y)},t.typeOf=_},76896:(e,t,n)=>{e.exports=n(29116)},8167:(e,t,n)=>{n.d(t,{P:()=>d});var r,i,a=n(7552),o=n(89059),l=n(77173),u="function"==typeof Symbol&&Symbol.for,s=null!==(i=null===(r=Object.getOwnPropertyDescriptor((function(){}),"name"))||void 0===r?void 0:r.configurable)&&void 0!==i&&i,c=u?Symbol.for("react.forward_ref"):"function"==typeof a.forwardRef&&(0,a.forwardRef)((function(e){return null})).$$typeof,f=u?Symbol.for("react.memo"):"function"==typeof a.memo&&(0,a.memo)((function(e){return null})).$$typeof;function d(e,t){var n;if(f&&e.$$typeof===f)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");if((0,o.P)())return e;var r=null!==(n=null==t?void 0:t.forwardRef)&&void 0!==n&&n,i=e,u=e.displayName||e.name;if(c&&e.$$typeof===c&&(r=!0,"function"!=typeof(i=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var d,h,b=function(e,t){return(0,l.q)((function(){return i(e,t)}),u)};return b.displayName=e.displayName,s&&Object.defineProperty(b,"name",{value:e.name,writable:!0,configurable:!0}),e.contextTypes&&(b.contextTypes=e.contextTypes),r&&(b=(0,a.forwardRef)(b)),b=(0,a.memo)(b),d=e,h=b,Object.keys(d).forEach((function(e){p[e]||Object.defineProperty(h,e,Object.getOwnPropertyDescriptor(d,e))})),b}var p={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0}},36422:(e,t,n)=>{n.r(t),n.d(t,{addDisposer:()=>K,addMiddleware:()=>Ee,applyAction:()=>we,applyPatch:()=>w,applySnapshot:()=>P,cast:()=>X,castFlowReturn:()=>It,castToReferenceSnapshot:()=>Z,castToSnapshot:()=>J,clone:()=>B,createActionTrackingMiddleware:()=>ve,createActionTrackingMiddleware2:()=>ge,decorate:()=>Te,destroy:()=>H,detach:()=>U,escapeJsonPath:()=>zt,flow:()=>Nt,getChildType:()=>y,getEnv:()=>G,getIdentifier:()=>D,getLivelinessChecking:()=>l,getMembers:()=>Y,getNodeId:()=>ee,getParent:()=>j,getParentOfType:()=>E,getPath:()=>N,getPathParts:()=>I,getPropertyMembers:()=>Q,getRelativePath:()=>F,getRoot:()=>T,getRunningActionContext:()=>Ie,getSnapshot:()=>A,getType:()=>v,hasParent:()=>x,hasParentOfType:()=>C,isActionContextChildOf:()=>Me,isActionContextThisOrChildOf:()=>Le,isAlive:()=>W,isArrayType:()=>en,isFrozenType:()=>$n,isIdentifierType:()=>Zn,isLateType:()=>Ln,isLiteralType:()=>Sn,isMapType:()=>Qt,isModelType:()=>ln,isOptionalType:()=>Tn,isPrimitiveType:()=>mn,isProtected:()=>O,isReferenceType:()=>Gn,isRefinementType:()=>On,isRoot:()=>R,isStateTreeNode:()=>Ye,isType:()=>pe,isUnionType:()=>xn,isValidReference:()=>V,joinJsonPath:()=>$t,onAction:()=>Se,onPatch:()=>g,onSnapshot:()=>m,process:()=>lt,protect:()=>S,recordActions:()=>_e,recordPatches:()=>_,resolveIdentifier:()=>L,resolvePath:()=>M,setLivelinessChecking:()=>o,setLivelynessChecking:()=>u,splitJsonPath:()=>Ft,t:()=>rr,toGenerator:()=>Mt,toGeneratorFunction:()=>Rt,tryReference:()=>z,tryResolve:()=>$,typecheck:()=>He,types:()=>rr,unescapeJsonPath:()=>Vt,unprotect:()=>k,walk:()=>q});var r,i=n(42489),a="warn";function o(e){a=e}function l(){return a}function u(e){o(e)}!function(e){e.afterCreate="afterCreate",e.afterAttach="afterAttach",e.afterCreationFinalization="afterCreationFinalization",e.beforeDetach="beforeDetach",e.beforeDestroy="beforeDestroy"}(r||(r={}));var s=function(e,t){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},s(e,t)};function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var f=function(){return f=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},f.apply(this,arguments)};function d(e,t){var n,r,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function p(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,a=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o}function b(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(h(arguments[t]));return e}function v(e){return Xe(e,1),Je(e).type}function y(e,t){return Xe(e,1),Je(e).getChildType(t)}function g(e,t){return Xe(e,1),jt(),Je(e).onPatch(t)}function m(e,t){return Xe(e,1),jt(),Je(e).onSnapshot(t)}function w(e,t){Xe(e,1),xt(),Je(e).applyPatches(vt(t))}function _(e,t){Xe(e,1);var n,r={patches:[],inversePatches:[]},i={},a={get recording(){return!!n},get patches(){return i.patches||(i.patches=r.patches.slice()),i.patches},get reversedInversePatches(){return i.reversedInversePatches||(i.reversedInversePatches=r.inversePatches.slice().reverse()),i.reversedInversePatches},get inversePatches(){return i.inversePatches||(i.inversePatches=r.inversePatches.slice()),i.inversePatches},stop:function(){n&&(n(),n=void 0)},resume:function(){n||(n=g(e,(function(e,n){t&&!t(e,n,Ie())||(r.patches.push(e),r.inversePatches.push(n),i.patches=void 0,i.inversePatches=void 0,i.reversedInversePatches=void 0)})))},replay:function(t){w(t||e,r.patches)},undo:function(t){w(t||e,r.inversePatches.slice().reverse())}};return a.resume(),a}function S(e){Xe(e,1);var t=Je(e);if(!t.isRoot)throw dt("`protect` can only be invoked on root nodes");t.isProtectionEnabled=!0}function k(e){Xe(e,1);var t=Je(e);if(!t.isRoot)throw dt("`unprotect` can only be invoked on root nodes");t.isProtectionEnabled=!1}function O(e){return Je(e).isProtected}function P(e,t){return Xe(e,1),Je(e).applySnapshot(t)}function A(e,t){void 0===t&&(t=!0),Xe(e,1);var n=Je(e);return t?n.snapshot:n.type.getSnapshot(n,!1)}function x(e,t){void 0===t&&(t=1),Xe(e,1),Ct(0,0,0);for(var n=Je(e).parent;n;){if(0==--t)return!0;n=n.parent}return!1}function j(e,t){void 0===t&&(t=1),Xe(e,1),Ct(0,0,0);for(var n=t,r=Je(e).parent;r;){if(0==--n)return r.storedValue;r=r.parent}throw dt("Failed to find the parent of "+Je(e)+" at depth "+t)}function C(e,t){Xe(e,1),he(t,2);for(var n=Je(e).parent;n;){if(t.is(n.storedValue))return!0;n=n.parent}return!1}function E(e,t){Xe(e,1),he(t,2);for(var n=Je(e).parent;n;){if(t.is(n.storedValue))return n.storedValue;n=n.parent}throw dt("Failed to find the parent of "+Je(e)+" of a given type")}function T(e){return Xe(e,1),Je(e).root.storedValue}function N(e){return Xe(e,1),Je(e).path}function I(e){return Xe(e,1),Ft(Je(e).path)}function R(e){return Xe(e,1),Je(e).isRoot}function M(e,t){Xe(e,1),Et();var n=rt(Je(e),t);return n?n.value:void 0}function L(e,t,n){he(e,1),Xe(t,2),xt();var r=Je(t).root.identifierCache.resolve(e,er(n));return null==r?void 0:r.value}function D(e){return Xe(e,1),Je(e).identifier}function z(e,t){void 0===t&&(t=!0);try{var n=e();if(null==n)return;if(Ye(n))return t?W(n)?n:void 0:n;throw dt("The reference to be checked is not one of node, null or undefined")}catch(e){if(e instanceof Bn)return;throw e}}function V(e,t){void 0===t&&(t=!0);try{var n=e();if(null==n)return!1;if(Ye(n))return!t||W(n);throw dt("The reference to be checked is not one of node, null or undefined")}catch(e){if(e instanceof Bn)return!1;throw e}}function $(e,t){Xe(e,1),Et();var n=rt(Je(e),t,!1);if(void 0!==n)try{return n.value}catch(e){return}}function F(e,t){return Xe(e,1),Xe(t,2),nt(Je(e),Je(t))}function B(e,t){void 0===t&&(t=!0),Xe(e,1);var n=Je(e);return n.type.create(n.snapshot,!0===t?n.root.environment:!1===t?void 0:t)}function U(e){return Xe(e,1),Je(e).detach(),e}function H(e){Xe(e,1);var t=Je(e);t.isRoot?t.die():t.parent.removeChild(t.subpath)}function W(e){return Xe(e,1),Je(e).observableIsAlive}function K(e,t){return Xe(e,1),jt(),Je(e).addDisposer(t),t}function G(e){return Xe(e,1),Je(e).root.environment||ct}function q(e,t){Xe(e,1),jt();var n=Je(e);n.getChildren().forEach((function(e){Ye(e.storedValue)&&q(e.storedValue,t)})),t(n.storedValue)}function Q(e){var t;return xt(t=Ye(e)?v(e):e),{name:t.name,properties:f({},t.properties)}}function Y(e){var t=Je(e).type,n=f(f({},Q(t)),{actions:[],volatile:[],views:[],flowActions:[]});return Object.getOwnPropertyNames(e).forEach((function(t){if(!(t in n.properties)){var r=Object.getOwnPropertyDescriptor(e,t);r.get?(0,i.isComputedProp)(e,t)?n.views.push(t):n.volatile.push(t):(!0===r.value._isFlowAction&&n.flowActions.push(t),!0===r.value._isMSTAction?n.actions.push(t):(0,i.isObservableProp)(e,t)?n.volatile.push(t):n.views.push(t))}})),n}function X(e){return e}function J(e){return e}function Z(e){return e}function ee(e){return Xe(e,1),Je(e).nodeId}var te=function(){function e(e,t,n,r){Object.defineProperty(this,"type",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"environment",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"_escapedSubpath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_subpath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_subpathUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pathUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"storedValue",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"aliveAtom",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:We.INITIALIZING}),Object.defineProperty(this,"_hookSubscribers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_parent",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pathAtom",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.environment=r,this.baseSetParent(t,n)}return Object.defineProperty(e.prototype,"subpath",{get:function(){return this._subpath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"subpathUponDeath",{get:function(){return this._subpathUponDeath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pathUponDeath",{get:function(){return this._pathUponDeath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.type.getValue(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},set:function(e){var t=this.isAlive;this._state=e;var n=this.isAlive;this.aliveAtom&&t!==n&&this.aliveAtom.reportChanged()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fireInternalHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._hookSubscribers&&this._hookSubscribers.emit(e,this,e)}}),Object.defineProperty(e.prototype,"registerHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._hookSubscribers||(this._hookSubscribers=new kt),this._hookSubscribers.register(e,t)}}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getReconciliationType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type}}),Object.defineProperty(e.prototype,"baseSetParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this._parent=e,this._subpath=t,this._escapedSubpath=void 0,this.pathAtom&&this.pathAtom.reportChanged()}}),Object.defineProperty(e.prototype,"path",{get:function(){return this.getEscapedPath(!0)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getEscapedPath",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e&&(this.pathAtom||(this.pathAtom=(0,i.createAtom)("path")),this.pathAtom.reportObserved()),this.parent?(void 0===this._escapedSubpath&&(this._escapedSubpath=this._subpath?zt(this._subpath):""),this.parent.getEscapedPath(e)+"/"+this._escapedSubpath):""}}),Object.defineProperty(e.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isAlive",{get:function(){return this.state!==We.DEAD},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isDetaching",{get:function(){return this.state===We.DETACHING},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"observableIsAlive",{get:function(){return this.aliveAtom||(this.aliveAtom=(0,i.createAtom)("alive")),this.aliveAtom.reportObserved(),this.isAlive},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"baseFinalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.state===We.CREATED){if(this.parent){if(this.parent.state!==We.FINALIZED)return;this.fireHook(r.afterAttach)}this.state=We.FINALIZED,e&&e()}}}),Object.defineProperty(e.prototype,"baseFinalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this._hookSubscribers&&this._hookSubscribers.clearAll(),this._subpathUponDeath=this._subpath,this._pathUponDeath=this.getEscapedPath(!1),this.baseSetParent(null,""),this.state=We.DEAD}}),Object.defineProperty(e.prototype,"baseAboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.fireHook(r.beforeDestroy)}}),e}(),ne=function(e){function t(t,n,r,i,a){var o=e.call(this,t,n,r,i)||this;try{o.storedValue=t.createNewInstance(a)}catch(e){throw o.state=We.DEAD,e}return o.state=We.CREATED,o.finalizeCreation(),o}return c(t,e),Object.defineProperty(t.prototype,"root",{get:function(){if(!this.parent)throw dt("This scalar node is not part of a tree");return this.parent.root},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"setParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.parent!==e,r=this.subpath!==t;(n||r)&&(this.environment=void 0,this.baseSetParent(this.parent,t))}}),Object.defineProperty(t.prototype,"snapshot",{get:function(){return this.getSnapshot()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type.getSnapshot(this)}}),Object.defineProperty(t.prototype,"toString",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=(this.isAlive?this.path:this.pathUponDeath)||"<root>";return this.type.name+"@"+e+(this.isAlive?"":" [dead]")}}),Object.defineProperty(t.prototype,"die",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.isAlive&&this.state!==We.DETACHING&&(this.aboutToDie(),this.finalizeDeath())}}),Object.defineProperty(t.prototype,"finalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseFinalizeCreation()}}),Object.defineProperty(t.prototype,"aboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseAboutToDie()}}),Object.defineProperty(t.prototype,"finalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseFinalizeDeath()}}),Object.defineProperty(t.prototype,"fireHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.fireInternalHook(e)}}),t}(te);ne.prototype.die=(0,i.action)(ne.prototype.die);var re,ie,ae=1,oe={onError:function(e){throw e}},le=function(e){function t(t,n,r,a,o){var l=e.call(this,t,n,r,a)||this;if(Object.defineProperty(l,"nodeId",{enumerable:!0,configurable:!0,writable:!0,value:++ae}),Object.defineProperty(l,"identifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"identifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"unnormalizedIdentifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"identifierCache",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"isProtectionEnabled",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(l,"middlewares",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"hasSnapshotPostProcessor",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(l,"_applyPatches",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_applySnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_autoUnbox",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(l,"_isRunningAction",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(l,"_hasSnapshotReaction",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(l,"_observableInstanceState",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(l,"_childNodes",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_initialSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_cachedInitialSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_cachedInitialSnapshotCreated",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(l,"_snapshotComputed",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_snapshotUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(l,"_internalEvents",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),l._snapshotComputed=(0,i.computed)((function(){return l.getSnapshot()})),l.unbox=l.unbox.bind(l),l._initialSnapshot=o,l.identifierAttribute=t.identifierAttribute,n||(l.identifierCache=new Ge),l._childNodes=t.initializeChildNodes(l,l._initialSnapshot),l.identifier=null,l.unnormalizedIdentifier=null,l.identifierAttribute&&l._initialSnapshot){var u=l._initialSnapshot[l.identifierAttribute];if(void 0===u){var s=l._childNodes[l.identifierAttribute];s&&(u=s.value)}if("string"!=typeof u&&"number"!=typeof u)throw dt("Instance identifier '"+l.identifierAttribute+"' for type '"+l.type.name+"' must be a string or a number");l.identifier=er(u),l.unnormalizedIdentifier=u}return n?n.root.identifierCache.addNodeToCache(l):l.identifierCache.addNodeToCache(l),l}return c(t,e),Object.defineProperty(t.prototype,"applyPatches",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.createObservableInstanceIfNeeded(),this._applyPatches(e)}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.createObservableInstanceIfNeeded(),this._applySnapshot(e)}}),Object.defineProperty(t.prototype,"createObservableInstanceIfNeeded",{enumerable:!1,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=!0),0===this._observableInstanceState&&this.createObservableInstance(e)}}),Object.defineProperty(t.prototype,"createObservableInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t,n,i,a;void 0===e&&(e=!0),this._observableInstanceState=1;for(var o=[],l=this.parent;l&&0===l._observableInstanceState;)o.unshift(l),l=l.parent;try{for(var u=p(o),s=u.next();!s.done;s=u.next())(h=s.value).createObservableInstanceIfNeeded(!1)}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=u.return)&&n.call(u)}finally{if(t)throw t.error}}var c=this.type;try{this.storedValue=c.createNewInstance(this._childNodes),this.preboot(),this._isRunningAction=!0,c.finalizeNewInstance(this,this.storedValue)}catch(e){throw this.state=We.DEAD,e}finally{this._isRunningAction=!1}if(this._observableInstanceState=2,this._snapshotComputed.trackAndCompute(),this.isRoot&&this._addSnapshotReaction(),this._childNodes=ct,this.state=We.CREATED,e){this.fireHook(r.afterCreate),this.finalizeCreation();try{for(var f=p(o.reverse()),d=f.next();!d.done;d=f.next()){var h;(h=d.value).fireHook(r.afterCreate),h.finalizeCreation()}}catch(e){i={error:e}}finally{try{d&&!d.done&&(a=f.return)&&a.call(f)}finally{if(i)throw i.error}}}}}),Object.defineProperty(t.prototype,"root",{get:function(){var e=this.parent;return e?e.root:this},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clearParent",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(this.parent){this.fireHook(r.beforeDetach);var e=this.state;this.state=We.DETACHING;var t=this.root,n=t.environment,i=t.identifierCache.splitCache(this);try{this.parent.removeChild(this.subpath),this.baseSetParent(null,""),this.environment=n,this.identifierCache=i}finally{this.state=e}}}}),Object.defineProperty(t.prototype,"setParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=e!==this.parent,i=t!==this.subpath;(n||i)&&(n?(this.environment=void 0,e.root.identifierCache.mergeCache(this),this.baseSetParent(e,t),this.fireHook(r.afterAttach)):i&&this.baseSetParent(this.parent,t))}}),Object.defineProperty(t.prototype,"fireHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;this.fireInternalHook(e);var n=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[e];"function"==typeof n&&(i._allowStateChangesInsideComputed?(0,i._allowStateChangesInsideComputed)((function(){n.apply(t.storedValue)})):n.apply(this.storedValue))}}),Object.defineProperty(t.prototype,"snapshot",{get:function(){return this.hasSnapshotPostProcessor&&this.createObservableInstanceIfNeeded(),this._snapshotComputed.get()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.isAlive?2===this._observableInstanceState?this._getActualSnapshot():this._getCachedInitialSnapshot():this._snapshotUponDeath}}),Object.defineProperty(t.prototype,"_getActualSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type.getSnapshot(this)}}),Object.defineProperty(t.prototype,"_getCachedInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(!this._cachedInitialSnapshotCreated){var e=this.type,t=this._childNodes,n=this._initialSnapshot;this._cachedInitialSnapshot=e.processInitialSnapshot(t,n),this._cachedInitialSnapshotCreated=!0}return this._cachedInitialSnapshot}}),Object.defineProperty(t.prototype,"isRunningAction",{enumerable:!1,configurable:!0,writable:!0,value:function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()}}),Object.defineProperty(t.prototype,"assertAlive",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t,n=l();if(!this.isAlive&&"ignore"!==n){var r=this._getAssertAliveError(e);switch(n){case"error":throw dt(r);case"warn":t=r,console.warn(new Error("[mobx-state-tree] "+t))}}}}),Object.defineProperty(t.prototype,"_getAssertAliveError",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.getEscapedPath(!1)||this.pathUponDeath||"",n=e.subpath&&zt(e.subpath)||"",r=e.actionContext||Pe();r&&"action"!==r.type&&r.parentActionEvent&&(r=r.parentActionEvent);var i="";return r&&null!=r.name&&(i=(r&&r.context&&N(r.context)||t)+"."+r.name+"()"),"You are trying to read or write to an object that is no longer part of a state tree. (Object type: '"+this.type.name+"', Path upon death: '"+t+"', Subpath: '"+n+"', Action: '"+i+"'). Either detach nodes first, or don't use objects after removing / replacing them in the tree."}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.assertAlive({subpath:e}),this._autoUnbox=!1;try{return 2===this._observableInstanceState?this.type.getChildNode(this,e):this._childNodes[e]}finally{this._autoUnbox=!0}}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.assertAlive(ct),this._autoUnbox=!1;try{return 2===this._observableInstanceState?this.type.getChildren(this):at(this._childNodes)}finally{this._autoUnbox=!0}}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.type.getChildType(e)}}),Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"assertWritable",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.assertAlive(e),!this.isRunningAction()&&this.isProtected)throw dt("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.type.removeChild(this,e)}}),Object.defineProperty(t.prototype,"unbox",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e?(this.assertAlive({subpath:e.subpath||e.subpathUponDeath}),this._autoUnbox?e.value:e):e}}),Object.defineProperty(t.prototype,"toString",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=(this.isAlive?this.path:this.pathUponDeath)||"<root>",t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+e+t+(this.isAlive?"":" [dead]")}}),Object.defineProperty(t.prototype,"finalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;this.baseFinalizeCreation((function(){var t,n;try{for(var i=p(e.getChildren()),a=i.next();!a.done;a=i.next())a.value.finalizeCreation()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}e.fireInternalHook(r.afterCreationFinalization)}))}}),Object.defineProperty(t.prototype,"detach",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(!this.isAlive)throw dt("Error while detaching, node is not alive.");this.clearParent()}}),Object.defineProperty(t.prototype,"preboot",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;this._applyPatches=Ce(this.storedValue,"@APPLY_PATCHES",(function(t){t.forEach((function(t){if(t.path){var n=Ft(t.path);it(e,n.slice(0,-1)).applyPatchLocally(n[n.length-1],t)}else e.type.applySnapshot(e,t.value)}))})),this._applySnapshot=Ce(this.storedValue,"@APPLY_SNAPSHOT",(function(t){if(t!==e.snapshot)return e.type.applySnapshot(e,t)})),_t(this.storedValue,"$treenode",this),_t(this.storedValue,"toJSON",et)}}),Object.defineProperty(t.prototype,"die",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.isAlive&&this.state!==We.DETACHING&&(this.aboutToDie(),this.finalizeDeath())}}),Object.defineProperty(t.prototype,"aboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){0!==this._observableInstanceState&&(this.getChildren().forEach((function(e){e.aboutToDie()})),this.baseAboutToDie(),this._internalEventsEmit("dispose"),this._internalEventsClear("dispose"))}}),Object.defineProperty(t.prototype,"finalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.getChildren().forEach((function(e){e.finalizeDeath()})),this.root.identifierCache.notifyDied(this);var e=this.snapshot;this._snapshotUponDeath=e,this._internalEventsClearAll(),this.baseFinalizeDeath()}}),Object.defineProperty(t.prototype,"onSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._addSnapshotReaction(),this._internalEventsRegister("snapshot",e)}}),Object.defineProperty(t.prototype,"emitSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._internalEventsEmit("snapshot",e)}}),Object.defineProperty(t.prototype,"onPatch",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._internalEventsRegister("patch",e)}}),Object.defineProperty(t.prototype,"emitPatch",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this._internalEventsHasSubscribers("patch")){var n=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0;r<t.length;r++){var i=t[r];for(var a in i)e[a]=i[a]}return e}({},e,{path:t.path.substr(this.path.length)+"/"+e.path}),r=h(function(e){if(!("oldValue"in e))throw dt("Patches without `oldValue` field cannot be inversed");return[Lt(e),Dt(e)]}(n),2),i=r[0],a=r[1];this._internalEventsEmit("patch",i,a)}this.parent&&this.parent.emitPatch(e,t)}}),Object.defineProperty(t.prototype,"hasDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._internalEventsHas("dispose",e)}}),Object.defineProperty(t.prototype,"addDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.hasDisposer(e))throw dt("cannot add a disposer when it is already registered for execution");this._internalEventsRegister("dispose",e,!0)}}),Object.defineProperty(t.prototype,"removeDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!this._internalEventsHas("dispose",e))throw dt("cannot remove a disposer which was never registered for execution");this._internalEventsUnregister("dispose",e)}}),Object.defineProperty(t.prototype,"removeMiddleware",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.middlewares){var t=this.middlewares.indexOf(e);t>=0&&this.middlewares.splice(t,1)}}}),Object.defineProperty(t.prototype,"addMiddleWare",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this;void 0===t&&(t=!0);var r={handler:e,includeHooks:t};return this.middlewares?this.middlewares.push(r):this.middlewares=[r],function(){n.removeMiddleware(r)}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this.assertWritable({subpath:e}),this.createObservableInstanceIfNeeded(),this.type.applyPatchLocally(this,e,t)}}),Object.defineProperty(t.prototype,"_addSnapshotReaction",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;if(!this._hasSnapshotReaction){var t=(0,i.reaction)((function(){return e.snapshot}),(function(t){return e.emitSnapshot(t)}),oe);this.addDisposer(t),this._hasSnapshotReaction=!0}}}),Object.defineProperty(t.prototype,"_internalEventsHasSubscribers",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return!!this._internalEvents&&this._internalEvents.hasSubscribers(e)}}),Object.defineProperty(t.prototype,"_internalEventsRegister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){return void 0===n&&(n=!1),this._internalEvents||(this._internalEvents=new kt),this._internalEvents.register(e,t,n)}}),Object.defineProperty(t.prototype,"_internalEventsHas",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!!this._internalEvents&&this._internalEvents.has(e,t)}}),Object.defineProperty(t.prototype,"_internalEventsUnregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this._internalEvents&&this._internalEvents.unregister(e,t)}}),Object.defineProperty(t.prototype,"_internalEventsEmit",{enumerable:!1,configurable:!0,writable:!0,value:function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];this._internalEvents&&(t=this._internalEvents).emit.apply(t,b([e],n))}}),Object.defineProperty(t.prototype,"_internalEventsClear",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._internalEvents&&this._internalEvents.clear(e)}}),Object.defineProperty(t.prototype,"_internalEventsClearAll",{enumerable:!1,configurable:!0,writable:!0,value:function(){this._internalEvents&&this._internalEvents.clearAll()}}),t}(te);le.prototype.createObservableInstance=(0,i.action)(le.prototype.createObservableInstance),le.prototype.detach=(0,i.action)(le.prototype.detach),le.prototype.die=(0,i.action)(le.prototype.die),function(e){e[e.String=1]="String",e[e.Number=2]="Number",e[e.Boolean=4]="Boolean",e[e.Date=8]="Date",e[e.Literal=16]="Literal",e[e.Array=32]="Array",e[e.Map=64]="Map",e[e.Object=128]="Object",e[e.Frozen=256]="Frozen",e[e.Optional=512]="Optional",e[e.Reference=1024]="Reference",e[e.Identifier=2048]="Identifier",e[e.Late=4096]="Late",e[e.Refinement=8192]="Refinement",e[e.Union=16384]="Union",e[e.Null=32768]="Null",e[e.Undefined=65536]="Undefined",e[e.Integer=131072]="Integer",e[e.Custom=262144]="Custom",e[e.SnapshotProcessor=524288]="SnapshotProcessor",e[e.Lazy=1048576]="Lazy",e[e.Finite=2097152]="Finite",e[e.Float=4194304]="Float"}(ie||(ie={}));var ue="cannotDetermine",se=Symbol("$type"),ce=function(){function e(e){Object.defineProperty(this,re,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"C",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"S",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"T",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"N",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isType",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=e}return Object.defineProperty(e.prototype,"create",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return Ue(this,e),this.instantiate(null,"",t,e).value}}),Object.defineProperty(e.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){throw dt("unimplemented method")}}),Object.defineProperty(e.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e===this}}),Object.defineProperty(e.prototype,"validate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(Ze(e)){var n=v(e);return this.isAssignableFrom(n)?$e():Fe(t,e)}return this.isValidSnapshot(e,t)}}),Object.defineProperty(e.prototype,"is",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return 0===this.validate(e,[{path:"",type:this}]).length}}),Object.defineProperty(e.prototype,"Type",{get:function(){throw dt("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"TypeWithoutSTN",{get:function(){throw dt("Factory.TypeWithoutSTN should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.TypeWithoutSTN`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"SnapshotType",{get:function(){throw dt("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"CreationType",{get:function(){throw dt("Factory.CreationType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.CreationType`")},enumerable:!1,configurable:!0}),e}();re=se,ce.prototype.create=(0,i.action)(ce.prototype.create);var fe=function(e){function t(t){var n=e.call(this,t)||this;return Object.defineProperty(n,"identifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),n}return c(t,e),Object.defineProperty(t.prototype,"create",{enumerable:!1,configurable:!0,writable:!0,value:function(t,n){return void 0===t&&(t=this.getDefaultSnapshot()),e.prototype.create.call(this,t,n)}}),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.createObservableInstanceIfNeeded(),e.storedValue}}),Object.defineProperty(t.prototype,"isMatchingSnapshotId",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!e.identifierAttribute||e.identifier===er(t[e.identifierAttribute])}}),Object.defineProperty(t.prototype,"tryToReconcileNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!(e.isDetaching||e.snapshot!==t&&(!Ye(t)||Je(t)!==e)&&(e.type!==this||!gt(t)||Ye(t)||!this.isMatchingSnapshotId(e,t)||(e.applySnapshot(t),0)))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(this.tryToReconcileNode(e,t))return e.setParent(n,r),e;if(e.die(),Ye(t)&&this.isAssignableFrom(v(t))){var i=Je(t);return i.setParent(n,r),i}return this.instantiate(n,r,void 0,t)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return null}}),t}(ce);fe.prototype.create=(0,i.action)(fe.prototype.create);var de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e}}),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(!e.isDetaching&&e.type===this&&e.storedValue===t)return e;var i=this.instantiate(n,r,void 0,t);return e.die(),i}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return null}}),t}(ce);function pe(e){return"object"==typeof e&&e&&!0===e.isType}function he(e,t){xt()}var be=new Map;function ve(e){return function(t,n,r){switch(t.type){case"action":if(e.filter&&!0!==e.filter(t))return n(t);var i=e.onStart(t);e.onResume(t,i),be.set(t.id,{call:t,context:i,async:!1});try{var a=n(t);return e.onSuspend(t,i),!1===be.get(t.id).async&&(be.delete(t.id),e.onSuccess(t,i,a)),a}catch(n){throw be.delete(t.id),e.onFail(t,i,n),n}case"flow_spawn":return(o=be.get(t.rootId)).async=!0,n(t);case"flow_resume":case"flow_resume_error":var o=be.get(t.rootId);e.onResume(t,o.context);try{return n(t)}finally{e.onSuspend(t,o.context)}case"flow_throw":return o=be.get(t.rootId),be.delete(t.rootId),e.onFail(t,o.context,t.args[0]),n(t);case"flow_return":return o=be.get(t.rootId),be.delete(t.rootId),e.onSuccess(t,o.context,t.args[0]),n(t)}}}var ye=function(){function e(e,t){Object.defineProperty(this,"hooks",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"call",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"flowsPending",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"running",{enumerable:!0,configurable:!0,writable:!0,value:!0}),e&&e.onStart(t)}return Object.defineProperty(e.prototype,"finish",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.running&&(this.running=!1,this.hooks&&this.hooks.onFinish(this.call,e))}}),Object.defineProperty(e.prototype,"incFlowsPending",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.flowsPending++}}),Object.defineProperty(e.prototype,"decFlowsPending",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.flowsPending--}}),Object.defineProperty(e.prototype,"hasFlowsPending",{get:function(){return this.flowsPending>0},enumerable:!1,configurable:!0}),e}();function ge(e){var t=new Map;return function(n,r){var i=n.parentActionEvent?t.get(n.parentActionEvent.id):void 0;if("action"===n.type){var a=f(f({},n),{env:i&&i.call.env,parentCall:i&&i.call}),o=!e.filter||e.filter(a),l=new ye(o?e:void 0,a);t.set(n.id,l);var u=void 0;try{u=r(n)}catch(e){throw t.delete(n.id),l.finish(e),e}return l.hasFlowsPending||(t.delete(n.id),l.finish()),u}if(!i)return r(n);switch(n.type){case"flow_spawn":return i.incFlowsPending(),r(n);case"flow_resume":case"flow_resume_error":return r(n);case"flow_throw":var s=n.args[0];try{return r(n)}finally{i.decFlowsPending(),i.hasFlowsPending||(t.delete(n.parentActionEvent.id),i.finish(s))}case"flow_return":try{return r(n)}finally{i.decFlowsPending(),i.hasFlowsPending||(t.delete(n.parentActionEvent.id),i.finish())}}}}function me(e){return{$MST_UNSERIALIZABLE:!0,type:e}}function we(e,t){Xe(e,1),xt(),(0,i.runInAction)((function(){vt(t).forEach((function(t){return function(e,t){var n=$(e,t.path||"");if(!n)throw dt("Invalid action path: "+(t.path||""));var r=Je(n);if("@APPLY_PATCHES"===t.name)return w.call(null,n,t.args[0]);if("@APPLY_SNAPSHOT"===t.name)return P.call(null,n,t.args[0]);if("function"!=typeof n[t.name])throw dt("Action '"+t.name+"' does not exist in '"+r.path+"'");return n[t.name].apply(n,t.args?t.args.map((function(e){return(t=e)&&"object"==typeof t&&"$MST_DATE"in t?new Date(t.$MST_DATE):t;var t})):[])}(e,t)}))}))}function _e(e,t){Xe(e,1);var n,r=[],i=function(e){(!t||t(e,Ie()))&&r.push(e)},a={actions:r,get recording(){return!!n},stop:function(){n&&(n(),n=void 0)},resume:function(){n||(n=Se(e,i))},replay:function(e){we(e,r)}};return a.resume(),a}function Se(e,t,n){return void 0===n&&(n=!1),Xe(e,1),Ee(e,(function(r,i){if("action"===r.type&&r.id===r.rootId){var a=Je(r.context),o={name:r.name,path:nt(Je(e),a),args:r.args.map((function(e,t){return function(e,t,n,r){if(r instanceof Date)return{$MST_DATE:r.getTime()};if(mt(r))return r;if(Ye(r))return me("[MSTNode: "+v(r).name+"]");if("function"==typeof r)return me("[function]");if("object"==typeof r&&!yt(r)&&!bt(r))return me("[object "+(r&&r.constructor&&r.constructor.name||"Complex Object")+"]");try{return JSON.stringify(r),r}catch(e){return me(""+e)}}(0,r.name,0,e)}))};if(n){var l=i(r);return t(o),l}return t(o),i(r)}return i(r)}))}var ke,Oe=1;function Pe(){return ke}function Ae(){return Oe++}function xe(e,t){var n=Je(e.context);"action"===e.type&&n.assertAlive({actionContext:e});var a=n._isRunningAction;n._isRunningAction=!0;var o=ke;ke=e;try{return function(e,t,n){var a=new Ne(e,n);if(a.isEmpty)return(0,i.action)(n).apply(null,t.args);var o=null;return function e(t){var l=a.getNextMiddleware(),u=l&&l.handler;return u?!l.includeHooks&&r[t.name]?e(t):(u(t,(function(t,n){o=e(t),n&&(o=n(o))}),(function(e){o=e})),o):(0,i.action)(n).apply(null,t.args)}(t)}(n,e,t)}finally{ke=o,n._isRunningAction=a}}function je(e){if(e)return"action"===e.type?e:e.parentActionEvent}function Ce(e,t,n){var r=function(){var r=Ae(),i=ke,a=je(i);return xe({type:"action",name:t,id:r,args:Ot(arguments),context:e,tree:T(e),rootId:i?i.rootId:r,parentId:i?i.id:0,allParentIds:i?b(i.allParentIds,[i.id]):[],parentEvent:i,parentActionEvent:a},n)};return r._isMSTAction=!0,r._isFlowAction=n._isFlowAction,r}function Ee(e,t,n){return void 0===n&&(n=!0),Je(e).addMiddleWare(t,n)}function Te(e,t,n){void 0===n&&(n=!0);var r={handler:e,includeHooks:n};return t.$mst_middleware=t.$mst_middleware||[],t.$mst_middleware.push(r),t}var Ne=function(){function e(e,t){Object.defineProperty(this,"arrayIndex",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"inArrayIndex",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"middlewares",{enumerable:!0,configurable:!0,writable:!0,value:[]}),t.$mst_middleware&&this.middlewares.push(t.$mst_middleware);for(var n=e;n;)n.middlewares&&this.middlewares.push(n.middlewares),n=n.parent}return Object.defineProperty(e.prototype,"isEmpty",{get:function(){return this.middlewares.length<=0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getNextMiddleware",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.middlewares[this.arrayIndex];if(e)return e[this.inArrayIndex++]||(this.arrayIndex++,this.inArrayIndex=0,this.getNextMiddleware())}}),e}();function Ie(){for(var e=Pe();e&&"action"!==e.type;)e=e.parentActionEvent;return e}function Re(e,t,n){for(var r="number"==typeof t?t:t.id,i=n?e:e.parentActionEvent;i;){if(i.id===r)return!0;i=i.parentActionEvent}return!1}function Me(e,t){return Re(e,t,!1)}function Le(e,t){return Re(e,t,!0)}function De(e){return"function"==typeof e?"<function"+(e.name?" "+e.name:"")+">":Ye(e)?"<"+e+">":"`"+function(e){try{return JSON.stringify(e)}catch(e){return"<Unserializable: "+e+">"}}(e)+"`"}function ze(e){var t=e.value,n=e.context[e.context.length-1].type,r=e.context.map((function(e){return e.path})).filter((function(e){return e.length>0})).join("/"),i=r.length>0?'at path "/'+r+'" ':"",a=Ye(t)?"value of type "+Je(t).type.name+":":mt(t)?"value":"snapshot",o=n&&Ye(t)&&n.is(Je(t).snapshot);return""+i+a+" "+De(t)+" is not assignable "+(n?"to type: `"+n.name+"`":"")+(e.message?" ("+e.message+")":"")+(n?mn(n)||mt(t)?".":", expected an instance of `"+n.name+"` or a snapshot like `"+n.describe()+"` instead."+(o?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function Ve(e,t,n){return e.concat([{path:t,type:n}])}function $e(){return st}function Fe(e,t,n){return[{context:e,value:t,message:n}]}function Be(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function Ue(e,t){"undefined"!=typeof process&&He(e,t)}function He(e,t){var n=e.validate(t,[{path:"",type:e}]);if(n.length>0)throw dt(function(e,t,n){var r;if(0!==n.length)return"Error while converting "+(((r=De(t)).length<280?r:r.substring(0,272)+"......"+r.substring(r.length-8))+" to `")+e.name+"`:\n\n    "+n.map(ze).join("\n    ")}(e,t,n))}var We,Ke=0,Ge=function(){function e(){Object.defineProperty(this,"cacheId",{enumerable:!0,configurable:!0,writable:!0,value:Ke++}),Object.defineProperty(this,"cache",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.map()}),Object.defineProperty(this,"lastCacheModificationPerId",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.map()})}return Object.defineProperty(e.prototype,"updateLastCacheModificationPerId",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.lastCacheModificationPerId.get(e);this.lastCacheModificationPerId.set(e,void 0===t?1:t+1)}}),Object.defineProperty(e.prototype,"getLastCacheModificationPerId",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.lastCacheModificationPerId.get(e)||0;return this.cacheId+"-"+t}}),Object.defineProperty(e.prototype,"addNodeToCache",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(void 0===t&&(t=!0),e.identifierAttribute){var n=e.identifier;this.cache.has(n)||this.cache.set(n,i.observable.array([],ft));var r=this.cache.get(n);if(-1!==r.indexOf(e))throw dt("Already registered");r.push(e),t&&this.updateLastCacheModificationPerId(n)}}}),Object.defineProperty(e.prototype,"mergeCache",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;(0,i.values)(e.identifierCache.cache).forEach((function(e){return e.forEach((function(e){t.addNodeToCache(e)}))}))}}),Object.defineProperty(e.prototype,"notifyDied",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.identifierAttribute){var t=e.identifier,n=this.cache.get(t);n&&(n.remove(e),n.length||this.cache.delete(t),this.updateLastCacheModificationPerId(e.identifier))}}}),Object.defineProperty(e.prototype,"splitCache",{enumerable:!1,configurable:!0,writable:!0,value:function(t){var n=this,r=new e,a=t.path+"/";return(0,i.entries)(this.cache).forEach((function(e){for(var i=h(e,2),o=i[0],l=i[1],u=!1,s=l.length-1;s>=0;s--){var c=l[s];c!==t&&0!==c.path.indexOf(a)||(r.addNodeToCache(c,!1),l.splice(s,1),l.length||n.cache.delete(o),u=!0)}u&&n.updateLastCacheModificationPerId(o)})),r}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.cache.get(t);return!!n&&n.some((function(t){return e.isAssignableFrom(t.type)}))}}),Object.defineProperty(e.prototype,"resolve",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.cache.get(t);if(!n)return null;var r=n.filter((function(t){return e.isAssignableFrom(t.type)}));switch(r.length){case 0:return null;case 1:return r[0];default:throw dt("Cannot resolve a reference to type '"+e.name+"' with id: '"+t+"' unambigously, there are multiple candidates: "+r.map((function(e){return e.path})).join(", "))}}}),e}();function qe(e,t,n,r,i){var a=Ze(i);if(a){if(a.parent)throw dt("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(t?t.path:"")+"/"+n+"', but it lives already at '"+a.path+"'");return t&&a.setParent(t,n),a}return new le(e,t,n,r,i)}function Qe(e,t,n,r,i){return new ne(e,t,n,r,i)}function Ye(e){return!(!e||!e.$treenode)}function Xe(e,t){xt()}function Je(e){if(!Ye(e))throw dt("Value "+e+" is no MST Node");return e.$treenode}function Ze(e){return e&&e.$treenode||null}function et(){return Je(this).snapshot}!function(e){e[e.INITIALIZING=0]="INITIALIZING",e[e.CREATED=1]="CREATED",e[e.FINALIZED=2]="FINALIZED",e[e.DETACHING=3]="DETACHING",e[e.DEAD=4]="DEAD"}(We||(We={}));var tt=function(e){return".."};function nt(e,t){if(e.root!==t.root)throw dt("Cannot calculate relative path: objects '"+e+"' and '"+t+"' are not part of the same object tree");for(var n=Ft(e.path),r=Ft(t.path),i=0;i<n.length&&n[i]===r[i];i++);return n.slice(i).map(tt).join("/")+$t(r.slice(i))}function rt(e,t,n){return void 0===n&&(n=!0),it(e,Ft(t),n)}function it(e,t,n){void 0===n&&(n=!0);var r=e;try{for(var i=0;i<t.length;i++){var a=t[i];if(".."===a){if(r=r.parent)continue}else{if("."===a)continue;if(r){if(r instanceof ne){var o=r.value;Ye(o)&&(r=Je(o))}if(r instanceof le&&r.getChildType(a)&&(r=r.getChildNode(a)))continue}}throw dt("Could not resolve '"+a+"' in path '"+($t(t.slice(0,i))||"/")+"' while resolving '"+$t(t)+"'")}}catch(e){if(!n)return;throw e}return r}function at(e){if(!e)return st;var t=Object.keys(e);if(!t.length)return st;var n=new Array(t.length);return t.forEach((function(t,r){n[r]=e[t]})),n}var ot="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.";function lt(e){return At("process","`process()` has been renamed to `flow()`. "+ot),Nt(e)}var ut=Object.toString(),st=Object.freeze([]),ct=Object.freeze({}),ft=(0,i._getGlobalState)().useProxies?{deep:!1}:{deep:!1,proxy:!1};function dt(e){return void 0===e&&(e="Illegal state"),new Error("[mobx-state-tree] "+e)}function pt(e){return e}Object.freeze(ft);var ht=Number.isInteger;function bt(e){return Array.isArray(e)||(0,i.isObservableArray)(e)}function vt(e){return e?bt(e)?e:[e]:st}function yt(e){var t;if(null===e||"object"!=typeof e)return!1;var n=Object.getPrototypeOf(e);return null==n||(null===(t=n.constructor)||void 0===t?void 0:t.toString())===ut}function gt(e){return!(null===e||"object"!=typeof e||e instanceof Date||e instanceof RegExp)}function mt(e,t){return void 0===t&&(t=!0),null==e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e||t&&e instanceof Date}function wt(e){return"function"!=typeof e}function _t(e,t,n){!function(e,t,n){(0,i.isObservableObject)(e)?(0,i.defineProperty)(e,t,n):Object.defineProperty(e,t,n)}(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}var St=function(){function e(){Object.defineProperty(this,"handlers",{enumerable:!0,configurable:!0,writable:!0,value:[]})}return Object.defineProperty(e.prototype,"hasSubscribers",{get:function(){return this.handlers.length>0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this;return void 0===t&&(t=!1),t?this.handlers.unshift(e):this.handlers.push(e),function(){n.unregister(e)}}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.handlers.indexOf(e)>=0}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}}),Object.defineProperty(e.prototype,"clear",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.handlers.length=0}}),Object.defineProperty(e.prototype,"emit",{enumerable:!1,configurable:!0,writable:!0,value:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.handlers.slice().forEach((function(t){return t.apply(void 0,b(e))}))}}),e}(),kt=function(){function e(){Object.defineProperty(this,"eventHandlers",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}return Object.defineProperty(e.prototype,"hasSubscribers",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.eventHandlers&&this.eventHandlers[e];return!!t&&t.hasSubscribers}}),Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){void 0===n&&(n=!1),this.eventHandlers||(this.eventHandlers={});var r=this.eventHandlers[e];return r||(r=this.eventHandlers[e]=new St),r.register(t,n)}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.eventHandlers&&this.eventHandlers[e];return!!n&&n.has(t)}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.eventHandlers&&this.eventHandlers[e];n&&n.unregister(t)}}),Object.defineProperty(e.prototype,"clear",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.eventHandlers&&delete this.eventHandlers[e]}}),Object.defineProperty(e.prototype,"clearAll",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.eventHandlers=void 0}}),Object.defineProperty(e.prototype,"emit",{enumerable:!1,configurable:!0,writable:!0,value:function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=this.eventHandlers&&this.eventHandlers[e];i&&(t=i).emit.apply(t,b(n))}}),e}();function Ot(e){for(var t=new Array(e.length),n=0;n<e.length;n++)t[n]=e[n];return t}function Pt(e,t){return 0===e.indexOf(t)}var At=function(e,t){};function xt(e,t,n,r){}function jt(e,t){}function Ct(e,t,n,r){}function Et(e,t,n){void 0===n&&(n=!0)}function Tt(e){"function"==typeof queueMicrotask?queueMicrotask(e):"function"==typeof setImmediate?setImmediate(e):setTimeout(e,1)}function Nt(e){return function(e,t){var n=function(){var r=Ae(),i=Pe();if(!i)throw dt("a mst flow must always have a parent context");var a=je(i);if(!a)throw dt("a mst flow must always have a parent action context");var o={name:e,id:r,tree:i.tree,context:i.context,parentId:i.id,allParentIds:b(i.allParentIds,[i.id]),rootId:i.rootId,parentEvent:i,parentActionEvent:a},l=arguments;function u(e,t,r){return e.$mst_middleware=n.$mst_middleware,xe(f(f({},o),{type:t,args:[r]}),e)}return new Promise((function(e,r){var i,a=function(){i=t.apply(null,arguments),s(void 0)};function s(e){var t;try{var n=u((function(e){t=i.next(e)}),"flow_resume",e);n instanceof Error&&(t=i.throw(n))}catch(e){return void Tt((function(){u((function(t){r(e)}),"flow_throw",e)}))}d(t)}function c(e){var t;try{u((function(e){t=i.throw(e)}),"flow_resume_error",e)}catch(e){return void Tt((function(){u((function(t){r(e)}),"flow_throw",e)}))}d(t)}function d(t){if(!t.done){if(!t.value||"function"!=typeof t.value.then)throw dt("Only promises can be yielded to `async`, got: "+t);return t.value.then(s,c)}Tt((function(){u((function(t){e(t)}),"flow_return",t.value)}))}a.$mst_middleware=n.$mst_middleware,xe(f(f({},o),{type:"flow_spawn",args:Ot(l)}),a)}))};return n._isFlowAction=!0,n}(e.name,e)}function It(e){return e}function Rt(e){return function(){var t,n=[];for(t=0;t<arguments.length;t++)n[t]=arguments[t];return d(this,(function(t){switch(t.label){case 0:return[4,e.apply(void 0,b(n))];case 1:return[2,t.sent()]}}))}}function Mt(e){return d(this,(function(t){switch(t.label){case 0:return[4,e];case 1:return[2,t.sent()]}}))}function Lt(e){switch(e.op){case"add":return{op:"add",path:e.path,value:e.value};case"remove":return{op:"remove",path:e.path};case"replace":return{op:"replace",path:e.path,value:e.value}}}function Dt(e){switch(e.op){case"add":return{op:"remove",path:e.path};case"remove":return{op:"add",path:e.path,value:e.oldValue};case"replace":return{op:"replace",path:e.path,value:e.oldValue}}}function zt(e){return 1==("number"==typeof e)?""+e:-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Vt(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function $t(e){if(0===e.length)return"";var t=function(e){return e.map(zt).join("/")};return"."===e[0]||".."===e[0]?t(e):"/"+t(e)}function Ft(e){var t=e.split("/").map(Vt);if(!(""===e||"."===e||".."===e||Pt(e,"/")||Pt(e,"./")||Pt(e,"../")))throw dt("a json path must be either rooted, empty or relative, but got '"+e+"'");return""===t[0]&&t.shift(),t}At.ids={};var Bt,Ut=Symbol("$preProcessorFailed"),Ht=function(e){function t(t,n,r){var i=e.call(this,r||t.name)||this;return Object.defineProperty(i,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(i,"_processors",{enumerable:!0,configurable:!0,writable:!0,value:n}),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.SnapshotProcessor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"snapshotProcessor("+this._subtype.describe()+")"}}),Object.defineProperty(t.prototype,"preProcessSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._processors.preProcessor?this._processors.preProcessor.call(null,e):e}}),Object.defineProperty(t.prototype,"preProcessSnapshotSafe",{enumerable:!1,configurable:!0,writable:!0,value:function(e){try{return this.preProcessSnapshot(e)}catch(e){return Ut}}}),Object.defineProperty(t.prototype,"postProcessSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._processors.postProcessor?this._processors.postProcessor.call(null,e,t.storedValue):e}}),Object.defineProperty(t.prototype,"_fixNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;!function(e,t){for(var n,r,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];try{for(var o=p(i),l=o.next();!l.done;l=o.next()){var u=l.value;e[u]=t[u].bind(t)}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}}(e.type,this,"create"),e instanceof le&&(e.hasSnapshotPostProcessor=!!this._processors.postProcessor);var n=e.getSnapshot;e.getSnapshot=function(){return t.postProcessSnapshot(n.call(e),e)},xn(this._subtype)||(e.getReconciliationType=function(){return t})}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=Ye(r)?r:this.preProcessSnapshot(r),a=this._subtype.instantiate(e,t,n,i);return this._fixNode(a),a}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=this._subtype.reconcile(e,Ye(t)?t:this.preProcessSnapshot(t),n,r);return i!==e&&this._fixNode(i),i}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t=!0);var n=this._subtype.getSnapshot(e);return t?this.postProcessSnapshot(n,e):n}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.preProcessSnapshotSafe(e);return n===Ut?Fe(t,e,"Failed to preprocess value"):this._subtype.validate(n,t)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),Object.defineProperty(t.prototype,"is",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=pe(e)?this._subtype:Ye(e)?A(e,!1):this.preProcessSnapshotSafe(e);return t!==Ut&&0===this._subtype.validate(t,[{path:"",type:this._subtype}]).length}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isMatchingSnapshotId",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!(this._subtype instanceof fe))return!1;var n=this.preProcessSnapshot(t);return this._subtype.isMatchingSnapshotId(e,n)}}),t}(ce),Wt="Map.put can only be used to store complex values that have an identifier type attribute";function Kt(e,t){var n,r,i=e.getSubTypes();if(i===ue)return!1;if(i){var a=vt(i);try{for(var o=p(a),l=o.next();!l.done;l=o.next())if(!Kt(l.value,t))return!1}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}}return e instanceof on&&t.push(e),!0}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.YES=1]="YES",e[e.NO=2]="NO"}(Bt||(Bt={}));var Gt=function(e){function t(t,n){return e.call(this,t,i.observable.ref.enhancer,n)||this}return c(t,e),Object.defineProperty(t.prototype,"get",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.get.call(this,""+t)}}),Object.defineProperty(t.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.has.call(this,""+t)}}),Object.defineProperty(t.prototype,"delete",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.delete.call(this,""+t)}}),Object.defineProperty(t.prototype,"set",{enumerable:!1,configurable:!0,writable:!0,value:function(t,n){return e.prototype.set.call(this,""+t,n)}}),Object.defineProperty(t.prototype,"put",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!e)throw dt("Map.put cannot be used to set empty values");if(Ye(e)){var t=Je(e);if(null===t.identifier)throw dt(Wt);return this.set(t.identifier,e),e}if(gt(e)){var n=Je(this),r=n.type;if(r.identifierMode!==Bt.YES)throw dt(Wt);var i=e[r.mapIdentifierAttribute];if(!tr(i)){var a=this.put(r.getChildType().create(e,n.environment));return this.put(A(a))}var o=er(i);return this.set(o,e),this.get(o)}throw dt("Map.put can only be used to store complex values")}}),t}(i.ObservableMap),qt=function(e){function t(t,n,r){void 0===r&&(r=[]);var i=e.call(this,t)||this;return Object.defineProperty(i,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(i,"identifierMode",{enumerable:!0,configurable:!0,writable:!0,value:Bt.UNKNOWN}),Object.defineProperty(i,"mapIdentifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(i,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Map}),Object.defineProperty(i,"hookInitializers",{enumerable:!0,configurable:!0,writable:!0,value:[]}),i._determineIdentifierMode(),i.hookInitializers=r,i}return c(t,e),Object.defineProperty(t.prototype,"hooks",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var n=this.hookInitializers.length>0?this.hookInitializers.concat(e):[e];return new t(this.name,this._subType,n)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this._determineIdentifierMode(),qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"_determineIdentifierMode",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(this.identifierMode===Bt.UNKNOWN){var e=[];if(Kt(this._subType,e)){var t=e.reduce((function(e,t){if(!t.identifierAttribute)return e;if(e&&e!==t.identifierAttribute)throw dt("The objects in a map should all have the same identifier attribute, expected '"+e+"', but child of type '"+t.name+"' declared attribute '"+t.identifierAttribute+"' as identifier");return t.identifierAttribute}),void 0);t?(this.identifierMode=Bt.YES,this.mapIdentifierAttribute=t):this.identifierMode=Bt.NO}}}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t={});var n=e.type._subType,r={};return Object.keys(t).forEach((function(i){r[i]=n.instantiate(e,i,void 0,t[i])})),r}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return new Gt(e,this.name)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){(0,i._interceptReads)(t,e.unbox),e.type.hookInitializers.forEach((function(e){var n=e(t);Object.keys(n).forEach((function(e){var r=n[e],i=Ce(t,e,r);_t(t,e,i)}))})),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return(0,i.values)(e.storedValue)}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=e.storedValue.get(""+t);if(!n)throw dt("Not a child "+t);return n}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Je(e.object),n=e.name;t.assertWritable({subpath:n});var r=t.type,i=r._subType;switch(e.type){case"update":var a=e.newValue;if(a===e.object.get(n))return null;Ue(i,a),e.newValue=i.reconcile(t.getChildNode(n),e.newValue,t,n),r.processIdentifier(n,e.newValue);break;case"add":Ue(i,e.newValue),e.newValue=i.instantiate(t,n,void 0,e.newValue),r.processIdentifier(n,e.newValue)}return e}}),Object.defineProperty(t.prototype,"processIdentifier",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this.identifierMode===Bt.YES&&t instanceof le){var n=t.identifier;if(n!==e)throw dt("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+n+"', but expected: '"+e+"'")}}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return e.getChildren().forEach((function(e){t[e.subpath]=e.snapshot})),t}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return Object.keys(e).forEach((function(n){t[n]=e[n].getSnapshot()})),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Je(e.object);switch(e.type){case"update":return void t.emitPatch({op:"replace",path:zt(e.name),value:e.newValue.snapshot,oldValue:e.oldValue?e.oldValue.snapshot:void 0},t);case"add":return void t.emitPatch({op:"add",path:zt(e.name),value:e.newValue.snapshot,oldValue:void 0},t);case"delete":var n=e.oldValue.snapshot;return e.oldValue.die(),void t.emitPatch({op:"remove",path:zt(e.name),oldValue:n},t)}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){var r=e.storedValue;switch(n.op){case"add":case"replace":r.set(t,n.value);break;case"remove":r.delete(t)}}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t);var n=e.storedValue,r={};if(Array.from(n.keys()).forEach((function(e){r[e]=!1})),t)for(var i in t)n.set(i,t[i]),r[""+i]=!0;Object.keys(r).forEach((function(e){!1===r[e]&&n.delete(e)}))}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subType}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this;return yt(e)?Be(Object.keys(e).map((function(r){return n._subType.validate(e[r],Ve(t,r,n._subType))}))):Fe(t,e,"Value is not a plain object")}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return ct}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue.delete(t)}}),t}(fe);function Qt(e){return pe(e)&&(e.flags&ie.Map)>0}qt.prototype.applySnapshot=(0,i.action)(qt.prototype.applySnapshot);var Yt=function(e){function t(t,n,r){void 0===r&&(r=[]);var i=e.call(this,t)||this;return Object.defineProperty(i,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(i,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Array}),Object.defineProperty(i,"hookInitializers",{enumerable:!0,configurable:!0,writable:!0,value:[]}),i.hookInitializers=r,i}return c(t,e),Object.defineProperty(t.prototype,"hooks",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var n=this.hookInitializers.length>0?this.hookInitializers.concat(e):[e];return new t(this.name,this._subType,n)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t=[]);var n=e.type._subType,r={};return t.forEach((function(t,i){var a=""+i;r[a]=n.instantiate(e,a,void 0,t)})),r}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=f(f({},ft),{name:this.name});return i.observable.array(at(e),t)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){(0,i._getAdministration)(t).dehancer=e.unbox,e.type.hookInitializers.forEach((function(e){var n=e(t);Object.keys(n).forEach((function(e){var r=n[e],i=Ce(t,e,r);_t(t,e,i)}))})),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue.slice()}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=Number(t);if(n<e.storedValue.length)return e.storedValue[n];throw dt("Not a child: "+t)}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Je(e.object);t.assertWritable({subpath:""+e.index});var n=t.type._subType,r=t.getChildren();switch(e.type){case"update":if(e.newValue===e.object[e.index])return null;var i=Xt(t,n,[r[e.index]],[e.newValue],[e.index]);if(!i)return null;e.newValue=i[0];break;case"splice":var a=e.index,o=e.removedCount,l=e.added,u=Xt(t,n,r.slice(a,a+o),l,l.map((function(e,t){return a+t})));if(!u)return null;e.added=u;for(var s=a+o;s<r.length;s++)r[s].setParent(t,""+(s+l.length-o))}return e}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.getChildren().map((function(e){return e.snapshot}))}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=[];return Object.keys(e).forEach((function(n){t.push(e[n].getSnapshot())})),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Je(e.object);switch(e.type){case"update":return void t.emitPatch({op:"replace",path:""+e.index,value:e.newValue.snapshot,oldValue:e.oldValue?e.oldValue.snapshot:void 0},t);case"splice":for(var n=e.removedCount-1;n>=0;n--)t.emitPatch({op:"remove",path:""+(e.index+n),oldValue:e.removed[n].snapshot},t);for(n=0;n<e.addedCount;n++)t.emitPatch({op:"add",path:""+(e.index+n),value:t.getChildNode(""+(e.index+n)).snapshot,oldValue:void 0},t);return}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){var r=e.storedValue,i="-"===t?r.length:Number(t);switch(n.op){case"replace":r[i]=n.value;break;case"add":r.splice(i,0,n.value);break;case"remove":r.splice(i,1)}}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t),e.storedValue.replace(t)}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subType}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this;return bt(e)?Be(e.map((function(e,r){return n._subType.validate(e,Ve(t,""+r,n._subType))}))):Fe(t,e,"Value is not an array")}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return st}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue.splice(Number(t),1)}}),t}(fe);function Xt(e,t,n,r,i){for(var a,o=!0,l=0;;l++){var u=l<=r.length-1,s=n[l],c=u?r[l]:void 0,f=""+i[l];if(((a=c)instanceof ne||a instanceof le)&&(c=c.storedValue),!s&&!u)break;if(u)if(s)if(Zt(s,c))n[l]=Jt(t,e,f,c,s);else{for(var d=void 0,p=l;p<n.length;p++)if(Zt(n[p],c)){d=n.splice(p,1)[0];break}o=!1,h=Jt(t,e,f,c,d),n.splice(l,0,h)}else{if(Ye(c)&&Je(c).parent===e)throw dt("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+e.path+"/"+f+"', but it lives already at '"+Je(c).path+"'");o=!1;var h=Jt(t,e,f,c);n.splice(l,0,h)}else o=!1,n.splice(l,1),s instanceof le&&s.createObservableInstanceIfNeeded(),s.die(),l--}return o?null:n}function Jt(e,t,n,r,i){Ue(e,r);var a=function(){if(Ye(r)){var a=Je(r);if(a.assertAlive(ct),null!==a.parent&&a.parent===t)return a.setParent(t,n),a}return i?e.reconcile(i,r,t,n):e.instantiate(t,n,void 0,r)}();return i&&i!==a&&(i instanceof le&&i.createObservableInstanceIfNeeded(),i.die()),a}function Zt(e,t){if(!e.isAlive)return!1;if(Ye(t)){var n=Je(t);return n.isAlive&&n===e}if(e.snapshot===t)return!0;if(!(e instanceof le))return!1;var r=e.getReconciliationType();return null!==e.identifier&&e.identifierAttribute&&yt(t)&&r.is(t)&&r.isMatchingSnapshotId(e,t)}function en(e){return pe(e)&&(e.flags&ie.Array)>0}Yt.prototype.applySnapshot=(0,i.action)(Yt.prototype.applySnapshot);var tn="preProcessSnapshot",nn="postProcessSnapshot";function rn(){return Je(this).toString()}var an={name:"AnonymousModel",properties:{},initializers:st};var on=function(e){function t(t){var n,i,a,o=e.call(this,t.name||an.name)||this;return Object.defineProperty(o,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Object}),Object.defineProperty(o,"initializers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(o,"properties",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(o,"preProcessor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(o,"postProcessor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(o,"propertyNames",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(o,"named",{enumerable:!0,configurable:!0,writable:!0,value:function(e){return o.cloneAndEnhance({name:e})}}),Object.defineProperty(o,"props",{enumerable:!0,configurable:!0,writable:!0,value:function(e){return o.cloneAndEnhance({properties:e})}}),Object.defineProperty(o,"preProcessSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var t=o.preProcessor;return t?o.cloneAndEnhance({preProcessor:function(n){return t(e(n))}}):o.cloneAndEnhance({preProcessor:e})}}),Object.defineProperty(o,"postProcessSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var t=o.postProcessor;return t?o.cloneAndEnhance({postProcessor:function(n){return e(t(n))}}):o.cloneAndEnhance({postProcessor:e})}}),Object.assign(o,an,t),o.properties=(n=o.properties,i=Object.keys(n),a=new Set,i.forEach((function(e){if(a.has(e))throw dt(e+" is declared twice in the model. Model should not contain the same keys");a.add(e)})),i.reduce((function(e,t){if(t in r)throw dt("Hook '"+t+"' was defined as property. Hooks should be defined as part of the actions");var i=Object.getOwnPropertyDescriptor(n,t);if("get"in i)throw dt("Getters are not supported as properties. Please use views instead");var a=i.value;if(null==a)throw dt("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");if(mt(a))e[t]=Cn(function(e){switch(typeof e){case"string":return sn;case"number":return cn;case"boolean":return hn;case"object":if(e instanceof Date)return gn}throw dt("Cannot determine primitive type from value "+e)}(a),a);else if(a instanceof qt)e[t]=Cn(a,{});else if(a instanceof Yt)e[t]=Cn(a,[]);else if(!pe(a))throw dt("Invalid type definition for property '"+t+"', cannot infer a type from a value like '"+a+"' ("+typeof a+")");return e}),f({},n))),o.properties,o.propertyNames=Object.keys(o.properties),o.identifierAttribute=o._getIdentifierAttribute(),o}return c(t,e),Object.defineProperty(t.prototype,"_getIdentifierAttribute",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=void 0;return this.forAllProps((function(t,n){if(n.flags&ie.Identifier){if(e)throw dt("Cannot define property '"+t+"' as object identifier, property '"+e+"' is already defined as identifier property");e=t}})),e}}),Object.defineProperty(t.prototype,"cloneAndEnhance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return new t({name:e.name||this.name,properties:Object.assign({},this.properties,e.properties),initializers:this.initializers.concat(e.initializers||[]),preProcessor:e.preProcessor||this.preProcessor,postProcessor:e.postProcessor||this.postProcessor})}}),Object.defineProperty(t.prototype,"actions",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(n){return t.instantiateActions(n,e(n)),n}]})}}),Object.defineProperty(t.prototype,"instantiateActions",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw dt("actions initializer should return a plain object containing actions");Object.keys(t).forEach((function(n){if(n===tn)throw dt("Cannot define action '"+tn+"', it should be defined using 'type.preProcessSnapshot(fn)' instead");if(n===nn)throw dt("Cannot define action '"+nn+"', it should be defined using 'type.postProcessSnapshot(fn)' instead");var i=t[n],a=e[n];if(n in r&&a){var o=i;i=function(){a.apply(null,arguments),o.apply(null,arguments)}}var l=i.$mst_middleware,u=i.bind(t);u._isFlowAction=i._isFlowAction||!1,u.$mst_middleware=l;var s=Ce(e,n,u);t[n]=s,_t(e,n,s)}))}}),Object.defineProperty(t.prototype,"volatile",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;if("function"!=typeof e)throw dt("You passed an "+typeof e+" to volatile state as an argument, when function is expected");return this.cloneAndEnhance({initializers:[function(n){return t.instantiateVolatileState(n,e(n)),n}]})}}),Object.defineProperty(t.prototype,"instantiateVolatileState",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw dt("volatile state initializer should return a plain object containing state");(0,i.set)(e,t)}}),Object.defineProperty(t.prototype,"extend",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(n){var r=e(n),i=r.actions,a=r.views,o=r.state,l=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}(r,["actions","views","state"]);for(var u in l)throw dt("The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '"+u+"'");return o&&t.instantiateVolatileState(n,o),a&&t.instantiateViews(n,a),i&&t.instantiateActions(n,i),n}]})}}),Object.defineProperty(t.prototype,"views",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(n){return t.instantiateViews(n,e(n)),n}]})}}),Object.defineProperty(t.prototype,"instantiateViews",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw dt("views initializer should return a plain object containing views");Object.getOwnPropertyNames(t).forEach((function(n){var r,a=Object.getOwnPropertyDescriptor(t,n);if("get"in a)(0,i.defineProperty)(e,n,a),(0,i.makeObservable)(e,((r={})[n]=i.computed,r));else{if("function"!=typeof a.value)throw dt("A view member should either be a function or getter based property");_t(e,n,a.value)}}))}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return qe(this,e,t,n,Ye(r)?r:this.applySnapshotPreProcessor(r))}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t={});var n=e.type,r={};return n.forAllProps((function(n,i){r[n]=i.instantiate(e,n,void 0,t[n])})),r}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=f(f({},ft),{name:this.name});return i.observable.object(e,ct,t)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){_t(t,"toString",rn),this.forAllProps((function(n){(0,i._interceptReads)(t,n,e.unbox)})),this.initializers.reduce((function(e,t){return t(e)}),t),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e,n=Je(t.object),r=t.name;n.assertWritable({subpath:r});var i=n.type.properties[r];return i&&(Ue(i,t.newValue),t.newValue=i.reconcile(n.getChildNode(r),t.newValue,n,r)),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e,n=Je(t.object);if(n.type.properties[t.name]){var r=t.oldValue?t.oldValue.snapshot:void 0;n.emitPatch({op:"replace",path:zt(t.name),value:t.newValue.snapshot,oldValue:r},n)}}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this,n=[];return this.forAllProps((function(r){n.push(t.getChildNode(e,r))})),n}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n;if(!(t in this.properties))throw dt("Not a value property: "+t);var r=(0,i._getAdministration)(e.storedValue,t),a=null===(n=r.raw)||void 0===n?void 0:n.call(r);if(!a)throw dt("Node not available for property "+t);return a}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this;void 0===t&&(t=!0);var r={};return this.forAllProps((function(t,a){try{(0,i.getAtom)(e.storedValue,t).reportObserved()}catch(e){throw dt(t+" property is declared twice")}r[t]=n.getChildNode(e,t).snapshot})),t?this.applySnapshotPostProcessor(r):r}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return Object.keys(e).forEach((function(n){t[n]=e[n].getSnapshot()})),this.applySnapshotPostProcessor(t)}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){if("replace"!==n.op&&"add"!==n.op)throw dt("object does not support operation "+n.op);e.storedValue[t]=n.value}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t);var n=this.applySnapshotPreProcessor(t);this.forAllProps((function(t){e.storedValue[t]=n[t]}))}}),Object.defineProperty(t.prototype,"applySnapshotPreProcessor",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.preProcessor;return t?t.call(null,e):e}}),Object.defineProperty(t.prototype,"applySnapshotPostProcessor",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.postProcessor;return t?t.call(null,e):e}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return Et(),this.properties[e]}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this,r=this.applySnapshotPreProcessor(e);return yt(r)?Be(this.propertyNames.map((function(e){return n.properties[e].validate(r[e],Ve(t,e,n.properties[e]))}))):Fe(t,r,"Value is not a plain object")}}),Object.defineProperty(t.prototype,"forAllProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;this.propertyNames.forEach((function(n){return e(n,t.properties[n])}))}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;return"{ "+this.propertyNames.map((function(t){return t+": "+e.properties[t].describe()})).join("; ")+" }"}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return ct}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue[t]=void 0}}),t}(fe);function ln(e){return pe(e)&&(e.flags&ie.Object)>0}on.prototype.applySnapshot=(0,i.action)(on.prototype.applySnapshot);var un=function(e){function t(t,n,r,i){void 0===i&&(i=pt);var a=e.call(this,t)||this;return Object.defineProperty(a,"flags",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(a,"checker",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(a,"initializer",{enumerable:!0,configurable:!0,writable:!0,value:i}),a.flags=n,a}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return Qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.initializer(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return mt(e)&&this.checker(e)?$e():Fe(t,e,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))}}),t}(de),sn=new un("string",ie.String,(function(e){return"string"==typeof e})),cn=new un("number",ie.Number,(function(e){return"number"==typeof e})),fn=new un("integer",ie.Integer,(function(e){return ht(e)})),dn=new un("float",ie.Float,(function(e){return t=e,Number(t)===t&&t%1!=0;var t})),pn=new un("finite",ie.Finite,(function(e){return t=e,Number.isFinite(t);var t})),hn=new un("boolean",ie.Boolean,(function(e){return"boolean"==typeof e})),bn=new un("null",ie.Null,(function(e){return null===e})),vn=new un("undefined",ie.Undefined,(function(e){return void 0===e})),yn=new un("Date",ie.Date,(function(e){return"number"==typeof e||e instanceof Date}),(function(e){return e instanceof Date?e:new Date(e)}));yn.getSnapshot=function(e){return e.storedValue.getTime()};var gn=yn;function mn(e){return pe(e)&&(e.flags&(ie.String|ie.Number|ie.Integer|ie.Boolean|ie.Date))>0}var wn=function(e){function t(t){var n=e.call(this,JSON.stringify(t))||this;return Object.defineProperty(n,"value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Literal}),n.value=t,n}return c(t,e),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return Qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return JSON.stringify(this.value)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return mt(e)&&e===this.value?$e():Fe(t,e,"Value is not a literal "+JSON.stringify(this.value))}}),t}(de);function _n(e){return new wn(e)}function Sn(e){return pe(e)&&(e.flags&ie.Literal)>0}var kn=function(e){function t(t,n,r,i){var a=e.call(this,t)||this;return Object.defineProperty(a,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(a,"_predicate",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(a,"_message",{enumerable:!0,configurable:!0,writable:!0,value:i}),a}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.Refinement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this._subtype.instantiate(e,t,n,r)}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this._subtype.validate(e,t);if(n.length>0)return n;var r=Ye(e)?Je(e).snapshot:e;return this._predicate(r)?$e():Fe(t,e,this._message(e))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this._subtype.reconcile(e,t,n,r)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),t}(ce);function On(e){return(e.flags&ie.Refinement)>0}var Pn=function(e){function t(t,n,r){var i=e.call(this,t)||this;return Object.defineProperty(i,"_types",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(i,"_dispatcher",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(i,"_eager",{enumerable:!0,configurable:!0,writable:!0,value:!0}),r=f({eager:!0,dispatcher:void 0},r),i._dispatcher=r.dispatcher,r.eager||(i._eager=!1),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){var e=ie.Union;return this._types.forEach((function(t){e|=t.flags})),e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._types.some((function(t){return t.isAssignableFrom(e)}))}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"("+this._types.map((function(e){return e.describe()})).join(" | ")+")"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=this.determineType(r,void 0);if(!i)throw dt("No matching type for union "+this.describe());return i.instantiate(e,t,n,r)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=this.determineType(t,e.getReconciliationType());if(!i)throw dt("No matching type for union "+this.describe());return i.reconcile(e,t,n,r)}}),Object.defineProperty(t.prototype,"determineType",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._dispatcher?this._dispatcher(e):t?t.is(e)?t:this._types.filter((function(e){return e!==t})).find((function(t){return t.is(e)})):this._types.find((function(t){return t.is(e)}))}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this._dispatcher)return this._dispatcher(e).validate(e,t);for(var n=[],r=0,i=0;i<this._types.length;i++){var a=this._types[i].validate(e,t);if(0===a.length){if(this._eager)return $e();r++}else n.push(a)}return 1===r?$e():Fe(t,e,"No type is applicable for the union").concat(Be(n))}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._types}}),t}(ce);function An(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=pe(e)?void 0:e,i=pe(e)?b([e],t):t,a="("+i.map((function(e){return e.name})).join(" | ")+")";return new Pn(a,i,r)}function xn(e){return(e.flags&ie.Union)>0}var jn=function(e){function t(t,n,r){var i=e.call(this,t.name)||this;return Object.defineProperty(i,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(i,"_defaultValue",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(i,"optionalValues",{enumerable:!0,configurable:!0,writable:!0,value:r}),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.Optional},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype.describe()+"?"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(this.optionalValues.indexOf(r)>=0){var i=this.getDefaultInstanceOrSnapshot();return this._subtype.instantiate(e,t,n,i)}return this._subtype.instantiate(e,t,n,r)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this._subtype.reconcile(e,this.optionalValues.indexOf(t)<0&&this._subtype.is(t)?t:this.getDefaultInstanceOrSnapshot(),n,r)}}),Object.defineProperty(t.prototype,"getDefaultInstanceOrSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e="function"==typeof this._defaultValue?this._defaultValue():this._defaultValue;return"function"==typeof this._defaultValue&&Ue(this,e),e}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this.optionalValues.indexOf(e)>=0?$e():this._subtype.validate(e,t)}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),t}(ce);function Cn(e,t,n){return function(e,t){if("function"!=typeof t&&Ye(t))throw dt("default value cannot be an instance, pass a snapshot or a function that creates an instance/snapshot instead");he()}(0,t),new jn(e,t,n||En)}var En=[void 0];function Tn(e){return pe(e)&&(e.flags&ie.Optional)>0}var Nn=Cn(vn,void 0),In=Cn(bn,null);function Rn(e){return he(),An(e,Nn)}var Mn=function(e){function t(t,n){var r=e.call(this,t)||this;return Object.defineProperty(r,"_definition",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(r,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),r}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return(this._subType?this._subType.flags:0)|ie.Late},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSubType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!this._subType){var t=void 0;try{t=this._definition()}catch(e){if(!(e instanceof ReferenceError))throw e;t=void 0}if(e&&void 0===t)throw dt("Late type seems to be used too early, the definition (still) returns undefined");t&&(this._subType=t)}return this._subType}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this.getSubType(!0).instantiate(e,t,n,r)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return this.getSubType(!0).reconcile(e,t,n,r)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.getSubType(!1);return e?e.name:"<uknown late type>"}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this.getSubType(!1);return n?n.validate(e,t):$e()}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.getSubType(!1);return!!t&&t.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.getSubType(!1)||ue}}),t}(ce);function Ln(e){return pe(e)&&(e.flags&ie.Late)>0}var Dn=function(e){function t(t,n){var r=e.call(this,t)||this;return Object.defineProperty(r,"options",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Lazy}),Object.defineProperty(r,"loadedType",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(r,"pendingNodeList",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.array()}),(0,i.when)((function(){return r.pendingNodeList.length>0&&r.pendingNodeList.some((function(e){return e.isAlive&&r.options.shouldLoadPredicate(e.parent?e.parent.value:null)}))}),(function(){r.options.loadType().then((0,i.action)((function(e){r.loadedType=e,r.pendingNodeList.forEach((function(e){e.parent&&r.loadedType&&e.parent.applyPatches([{op:"replace",path:"/"+e.subpath,value:e.snapshot}])}))})))})),r}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"<lazy "+this.name+">"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var a=this;if(this.loadedType)return this.loadedType.instantiate(e,t,n,r);var o=Qe(this,e,t,n,r);return this.pendingNodeList.push(o),(0,i.when)((function(){return!o.isAlive}),(function(){return a.pendingNodeList.splice(a.pendingNodeList.indexOf(o),1)})),o}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this.loadedType?this.loadedType.validate(e,t):wt(e)?$e():Fe(t,e,"Value is not serializable and cannot be lazy")}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(t,n,r,i){return this.loadedType?(t.die(),this.loadedType.instantiate(r,i,r.environment,n)):e.prototype.reconcile.call(this,t,n,r,i)}}),t}(de),zn=function(e){function t(t){var n=e.call(this,t?"frozen("+t.name+")":"frozen")||this;return Object.defineProperty(n,"subType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Frozen}),n}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"<any immutable value>"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return Qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return wt(e)?this.subType?this.subType.validate(e,t):$e():Fe(t,e,"Value is not serializable and cannot be frozen")}}),t}(de),Vn=new zn;function $n(e){return pe(e)&&(e.flags&ie.Frozen)>0}var Fn=function(){function e(e,t){if(Object.defineProperty(this,"targetType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"identifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"node",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"resolvedReference",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),tr(e))this.identifier=e;else{if(!Ye(e))throw dt("Can only store references to tree nodes or identifiers, got: '"+e+"'");var n=Je(e);if(!n.identifierAttribute)throw dt("Can only store references with a defined identifier attribute.");var r=n.unnormalizedIdentifier;if(null==r)throw dt("Can only store references to tree nodes with a defined identifier.");this.identifier=r}}return Object.defineProperty(e.prototype,"updateResolvedReference",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=er(this.identifier),n=e.root,r=n.identifierCache.getLastCacheModificationPerId(t);if(!this.resolvedReference||this.resolvedReference.lastCacheModification!==r){var i=this.targetType,a=n.identifierCache.resolve(i,t);if(!a)throw new Bn("[mobx-state-tree] Failed to resolve reference '"+this.identifier+"' to type '"+this.targetType.name+"' (from node: "+e.path+")");this.resolvedReference={node:a,lastCacheModification:r}}}}),Object.defineProperty(e.prototype,"resolvedValue",{get:function(){return this.updateResolvedReference(this.node),this.resolvedReference.node.value},enumerable:!1,configurable:!0}),e}(),Bn=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return c(t,e),t}(Error),Un=function(e){function t(t,n){var r=e.call(this,"reference("+t.name+")")||this;return Object.defineProperty(r,"targetType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(r,"onInvalidated",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Reference}),r}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.targetType.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return tr(e)?$e():Fe(t,e,"Value is not a valid identifier, which is a string or a number")}}),Object.defineProperty(t.prototype,"fireInvalidated",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=t.parent;if(i&&i.isAlive){var a=i.storedValue;a&&this.onInvalidated({cause:e,parent:a,invalidTarget:r?r.storedValue:void 0,invalidId:n,replaceRef:function(e){w(t.root.storedValue,{op:"replace",value:e,path:t.path})},removeRef:function(){ln(i.type)?this.replaceRef(void 0):w(t.root.storedValue,{op:"remove",path:t.path})}})}}}),Object.defineProperty(t.prototype,"addTargetNodeWatcher",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var n=this,i=this.getValue(e);if(i){var a=Je(i),o=function(i,o){var l=function(e){switch(e){case r.beforeDestroy:return"destroy";case r.beforeDetach:return"detach";default:return}}(o);l&&n.fireInvalidated(l,e,t,a)},l=a.registerHook(r.beforeDetach,o),u=a.registerHook(r.beforeDestroy,o);return function(){l(),u()}}}}),Object.defineProperty(t.prototype,"watchTargetNodeForInvalidations",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){var i=this;if(this.onInvalidated){var a;e.registerHook(r.beforeDestroy,(function(){a&&a()}));var o=function(r){a&&a();var o=e.parent,l=o&&o.storedValue;o&&o.isAlive&&l&&((n?n.get(t,l):e.root.identifierCache.has(i.targetType,er(t)))?a=i.addTargetNodeWatcher(e,t):r||i.fireInvalidated("invalidSnapshotReference",e,t,null))};e.state===We.FINALIZED?o(!0):(e.isRoot||e.root.registerHook(r.afterCreationFinalization,(function(){e.parent&&e.parent.createObservableInstanceIfNeeded()})),e.registerHook(r.afterAttach,(function(){o(!1)})))}}}),t}(de),Hn=function(e){function t(t,n){return e.call(this,t,n)||this}return c(t,e),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.isAlive)return e.storedValue.resolvedValue}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue.identifier}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=Ye(r)?D(r):r,a=new Fn(r,this.targetType),o=Qe(this,e,t,n,a);return a.node=o,this.watchTargetNodeForInvalidations(o,i,void 0),o}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(!e.isDetaching&&e.type===this){var i=Ye(t),a=e.storedValue;if(!i&&a.identifier===t||i&&a.resolvedValue===t)return e.setParent(n,r),e}var o=this.instantiate(n,r,void 0,t);return e.die(),o}}),t}(Un),Wn=function(e){function t(t,n,r){var i=e.call(this,t,r)||this;return Object.defineProperty(i,"options",{enumerable:!0,configurable:!0,writable:!0,value:n}),i}return c(t,e),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.isAlive)return this.options.get(e.storedValue,e.parent?e.parent.storedValue:null)}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=Ye(r)?this.options.set(r,e?e.storedValue:null):r,a=Qe(this,e,t,n,i);return this.watchTargetNodeForInvalidations(a,i,this.options),a}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=Ye(t)?this.options.set(t,e?e.storedValue:null):t;if(!e.isDetaching&&e.type===this&&e.storedValue===i)return e.setParent(n,r),e;var a=this.instantiate(n,r,void 0,i);return e.die(),a}}),t}(Un);function Kn(e,t){he();var n=t||void 0,r=t?t.onInvalidated:void 0;return n&&(n.get||n.set)?new Wn(e,{get:n.get,set:n.set},r):new Hn(e,r)}function Gn(e){return(e.flags&ie.Reference)>0}var qn=function(e){function t(t,n){var r=e.call(this,t)||this;return Object.defineProperty(r,"validType",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Identifier}),r}return c(t,e),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(!(e&&e.type instanceof on))throw dt("Identifier types can only be instantiated as direct child of a model type");return Qe(this,e,t,n,r)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){if(e.storedValue!==t)throw dt("Tried to change identifier from '"+e.storedValue+"' to '"+t+"'. Changing identifiers is not allowed.");return e.setParent(n,r),e}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return typeof e!==this.validType?Fe(t,e,"Value is not a valid "+this.describe()+", expected a "+this.validType):$e()}}),t}(de),Qn=function(e){function t(){var t=e.call(this,"identifier","string")||this;return Object.defineProperty(t,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Identifier}),t}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"identifier"}}),t}(qn),Yn=function(e){function t(){return e.call(this,"identifierNumber","number")||this}return c(t,e),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"identifierNumber"}}),t}(qn),Xn=new Qn,Jn=new Yn;function Zn(e){return pe(e)&&(e.flags&ie.Identifier)>0}function er(e){return""+e}function tr(e){return"string"==typeof e||"number"==typeof e}var nr=function(e){function t(t){var n=e.call(this,t.name)||this;return Object.defineProperty(n,"options",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Custom}),n}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this.options.isTargetType(e))return $e();var n=this.options.getValidationMessage(e);return n?Fe(t,e,"Invalid value for type '"+this.name+"': "+n):$e()}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.options.toSnapshot(e.storedValue)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){return Qe(this,e,t,n,this.options.isTargetType(r)?r:this.options.fromSnapshot(r,e&&e.root.environment))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n,r){var i=!this.options.isTargetType(t);if(!e.isDetaching&&e.type===this&&(i?t===e.snapshot:t===e.storedValue))return e.setParent(n,r),e;var a=i?this.options.fromSnapshot(t,n.root.environment):t,o=this.instantiate(n,r,void 0,a);return e.die(),o}}),t}(de),rr={enumeration:function(e,t){var n="string"==typeof e?t:e,r=An.apply(void 0,b(n.map((function(e){return _n(""+e)}))));return"string"==typeof e&&(r.name=e),r},model:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n="string"==typeof e[0]?e.shift():"AnonymousModel",r=e.shift()||{};return new on({name:n,properties:r})},compose:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n="string"==typeof e[0],r=n?e[0]:"AnonymousModel";return n&&e.shift(),e.reduce((function(e,t){return e.cloneAndEnhance({name:e.name+"_"+t.name,properties:t.properties,initializers:t.initializers,preProcessor:function(n){return t.applySnapshotPreProcessor(e.applySnapshotPreProcessor(n))},postProcessor:function(n){return t.applySnapshotPostProcessor(e.applySnapshotPostProcessor(n))}})})).named(r)},custom:function(e){return new nr(e)},reference:Kn,safeReference:function(e,t){var n=Kn(e,f(f({},t),{onInvalidated:function(e){t&&t.onInvalidated&&t.onInvalidated(e),e.removeRef()}}));return t&&!1===t.acceptsUndefined?n:Rn(n)},union:An,optional:Cn,literal:_n,maybe:Rn,maybeNull:function(e){return he(),An(e,In)},refinement:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n="string"==typeof e[0]?e.shift():pe(e[0])?e[0].name:null,r=e[0],i=e[1],a=e[2]?e[2]:function(e){return"Value does not respect the refinement predicate"};return he(),Et(),new kn(n,r,i,a)},string:sn,boolean:hn,number:cn,integer:fn,float:dn,finite:pn,Date:gn,map:function(e){return new qt("Map<string, "+e.name+">",e)},array:function(e){return he(),new Yt(e.name+"[]",e)},frozen:function(e){return 0===arguments.length?Vn:pe(e)?new zn(e):Cn(Vn,e)},identifier:Xn,identifierNumber:Jn,late:function(e,t){var n="string"==typeof e?e:"late("+e.toString()+")";return new Mn(n,"string"==typeof e?t:e)},lazy:function(e,t){return new Dn(e,t)},undefined:vn,null:bn,snapshotProcessor:function(e,t,n){return he(),new Ht(e,t,n)}}},42489:(e,t,n)=>{function r(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];throw new Error("number"==typeof e?"[MobX] minified error nr: "+e+(n.length?" "+n.map(String).join(","):"")+". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts":"[MobX] "+e)}n.r(t),n.d(t,{$mobx:()=>K,FlowCancellationError:()=>vn,ObservableMap:()=>_r,ObservableSet:()=>Or,Reaction:()=>Et,_allowStateChanges:()=>Qe,_allowStateChangesInsideComputed:()=>qt,_allowStateReadsEnd:()=>ht,_allowStateReadsStart:()=>pt,_autoAction:()=>Gt,_endAction:()=>qe,_getAdministration:()=>Kr,_getGlobalState:()=>_t,_interceptReads:()=>On,_isComputingDerivation:()=>lt,_resetGlobalState:()=>St,_startAction:()=>Ge,action:()=>Kt,autorun:()=>Yt,comparer:()=>Y,computed:()=>$e,configure:()=>sn,createAtom:()=>Q,defineProperty:()=>Vn,entries:()=>Rn,extendObservable:()=>cn,flow:()=>wn,flowResult:()=>Sn,get:()=>zn,getAtom:()=>Wr,getDebugName:()=>Gr,getDependencyTree:()=>fn,getObserverTree:()=>pn,has:()=>Dn,intercept:()=>Pn,isAction:()=>Qt,isBoxedObservable:()=>Ze,isComputed:()=>xn,isComputedProp:()=>jn,isFlow:()=>kn,isFlowCancellationError:()=>yn,isObservable:()=>En,isObservableArray:()=>yr,isObservableMap:()=>Sr,isObservableObject:()=>Nr,isObservableProp:()=>Tn,isObservableSet:()=>Pr,keys:()=>Nn,makeAutoObservable:()=>ar,makeObservable:()=>rr,observable:()=>Le,observe:()=>Fn,onBecomeObserved:()=>nn,onBecomeUnobserved:()=>rn,onReactionError:()=>Tt,override:()=>ee,ownKeys:()=>$n,reaction:()=>Zt,remove:()=>Ln,runInAction:()=>qt,set:()=>Mn,spy:()=>Dt,toJS:()=>Hn,trace:()=>Wn,transaction:()=>Kn,untracked:()=>ct,values:()=>In,when:()=>Gn});var i={};function a(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:i}var o=Object.assign,l=Object.getOwnPropertyDescriptor,u=Object.defineProperty,s=Object.prototype,c=[];Object.freeze(c);var f={};Object.freeze(f);var d="undefined"!=typeof Proxy,p=Object.toString();function h(){d||r("Proxy not available")}function b(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var v=function(){};function y(e){return"function"==typeof e}function g(e){switch(typeof e){case"string":case"symbol":case"number":return!0}return!1}function m(e){return null!==e&&"object"==typeof e}function w(e){if(!m(e))return!1;var t=Object.getPrototypeOf(e);if(null==t)return!0;var n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n.toString()===p}function _(e){var t=null==e?void 0:e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName)}function S(e,t,n){u(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function k(e,t,n){u(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function O(e,t){var n="isMobX"+e;return t.prototype[n]=!0,function(e){return m(e)&&!0===e[n]}}function P(e){return null!=e&&"[object Map]"===Object.prototype.toString.call(e)}function A(e){return null!=e&&"[object Set]"===Object.prototype.toString.call(e)}var x=void 0!==Object.getOwnPropertySymbols,j="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:x?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function C(e){return null===e?null:"object"==typeof e?""+e:e}function E(e,t){return s.hasOwnProperty.call(e,t)}var T=Object.getOwnPropertyDescriptors||function(e){var t={};return j(e).forEach((function(n){t[n]=l(e,n)})),t};function N(e,t){return!!(e&t)}function I(e,t,n){return n?e|=t:e&=~t,e}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,F(r.key),r)}}function L(e,t,n){return t&&M(e.prototype,t),n&&M(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function D(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return R(e,t);var n={}.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)?R(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},z.apply(null,arguments)}function V(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,$(e,t)}function $(e,t){return $=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},$(e,t)}function F(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var B=Symbol("mobx-stored-annotations");function U(e){return Object.assign((function(t,n){if(W(n))return e.decorate_20223_(t,n);H(t,n,e)}),e)}function H(e,t,n){E(e,B)||S(e,B,z({},e[B])),function(e){return e.annotationType_===Z}(n)||(e[B][t]=n)}function W(e){return"object"==typeof e&&"string"==typeof e.kind}var K=Symbol("mobx administration"),G=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.flags_=0,this.observers_=new Set,this.lastAccessedBy_=0,this.lowestObserverState_=tt.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return jt(this)},t.reportChanged=function(){At(),Ct(this),xt()},t.toString=function(){return this.name_},L(e,[{key:"isBeingObserved",get:function(){return N(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=I(this.flags_,e.isBeingObservedMask_,t)}},{key:"isPendingUnobservation",get:function(){return N(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=I(this.flags_,e.isPendingUnobservationMask_,t)}},{key:"diffValue",get:function(){return N(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=I(this.flags_,e.diffValueMask_,1===t)}}])}();G.isBeingObservedMask_=1,G.isPendingUnobservationMask_=2,G.diffValueMask_=4;var q=O("Atom",G);function Q(e,t,n){void 0===t&&(t=v),void 0===n&&(n=v);var r=new G(e);return t!==v&&nn(r,t),n!==v&&rn(r,n),r}var Y={identity:function(e,t){return e===t},structural:function(e,t){return Yr(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Yr(e,t,1)}};function X(e,t,n){return En(e)?e:Array.isArray(e)?Le.array(e,{name:n}):w(e)?Le.object(e,void 0,{name:n}):P(e)?Le.map(e,{name:n}):A(e)?Le.set(e,{name:n}):"function"!=typeof e||Qt(e)||kn(e)?e:_(e)?wn(e):Gt(n,e)}function J(e){return e}var Z="override",ee=U({annotationType_:Z,make_:function(e,t){return 0},extend_:function(e,t,n,i){r("'"+this.annotationType_+"' can only be used with 'makeObservable'")},decorate_20223_:function(e,t){console.warn("'"+this.annotationType_+"' cannot be used with decorators - this is a no-op")}});function te(e,t){return{annotationType_:e,options_:t,make_:ne,extend_:re,decorate_20223_:ie}}function ne(e,t,n,r){var i;if(null!=(i=this.options_)&&i.bound)return null===this.extend_(e,t,n,!1)?0:1;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(Qt(n.value))return 1;var a=ae(e,this,t,n,!1);return u(r,t,a),2}function re(e,t,n,r){var i=ae(e,this,t,n);return e.defineProperty_(t,i,r)}function ie(e,t){var n=t.kind,i=t.name,a=t.addInitializer,o=this;if("field"!=n){var l,u,s,c,f,d;if("method"==n)return Qt(e)||(u=e,e=We(null!=(s=null==(c=o.options_)?void 0:c.name)?s:i.toString(),u,null!=(f=null==(d=o.options_)?void 0:d.autoAction)&&f)),null!=(l=this.options_)&&l.bound&&a((function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t})),e;r("Cannot apply '"+o.annotationType_+"' to '"+String(i)+"' (kind: "+n+"):\n'"+o.annotationType_+"' can only be used on properties with a function value.")}else a((function(){H(this,i,o)}))}function ae(e,t,n,r,i){var a,o,l,u,s,c,f,d;void 0===i&&(i=wt.safeDescriptors),d=r,t.annotationType_,d.value;var p,h=r.value;return null!=(a=t.options_)&&a.bound&&(h=h.bind(null!=(p=e.proxy_)?p:e.target_)),{value:We(null!=(o=null==(l=t.options_)?void 0:l.name)?o:n.toString(),h,null!=(u=null==(s=t.options_)?void 0:s.autoAction)&&u,null!=(c=t.options_)&&c.bound?null!=(f=e.proxy_)?f:e.target_:void 0),configurable:!i||e.isPlainObject_,enumerable:!1,writable:!i}}function oe(e,t){return{annotationType_:e,options_:t,make_:le,extend_:ue,decorate_20223_:se}}function le(e,t,n,r){var i;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(null!=(i=this.options_)&&i.bound&&(!E(e.target_,t)||!kn(e.target_[t]))&&null===this.extend_(e,t,n,!1))return 0;if(kn(n.value))return 1;var a=ce(e,this,0,n,!1,!1);return u(r,t,a),2}function ue(e,t,n,r){var i,a=ce(e,this,0,n,null==(i=this.options_)?void 0:i.bound);return e.defineProperty_(t,a,r)}function se(e,t){var n,r=t.name,i=t.addInitializer;return kn(e)||(e=wn(e)),null!=(n=this.options_)&&n.bound&&i((function(){var e=this,t=e[r].bind(e);t.isMobXFlow=!0,e[r]=t})),e}function ce(e,t,n,r,i,a){var o;void 0===a&&(a=wt.safeDescriptors),o=r,t.annotationType_,o.value;var l,u=r.value;return kn(u)||(u=wn(u)),i&&((u=u.bind(null!=(l=e.proxy_)?l:e.target_)).isMobXFlow=!0),{value:u,configurable:!a||e.isPlainObject_,enumerable:!1,writable:!a}}function fe(e,t){return{annotationType_:e,options_:t,make_:de,extend_:pe,decorate_20223_:he}}function de(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function pe(e,t,n,r){return i=n,this.annotationType_,i.get,e.defineComputedProperty_(t,z({},this.options_,{get:n.get,set:n.set}),r);var i}function he(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Cr(this)[K],i=z({},n.options_,{get:e,context:this});i.name||(i.name="ObservableObject."+r.toString()),t.values_.set(r,new et(i))})),function(){return this[K].getObservablePropValue_(r)}}function be(e,t){return{annotationType_:e,options_:t,make_:ve,extend_:ye,decorate_20223_:ge}}function ve(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function ye(e,t,n,r){var i,a;return this.annotationType_,e.defineObservableProperty_(t,n.value,null!=(i=null==(a=this.options_)?void 0:a.enhancer)?i:X,r)}function ge(e,t){var n=this,r=t.kind,i=t.name,a=new WeakSet;function o(e,t){var r,o,l=Cr(e)[K],u=new Je(t,null!=(r=null==(o=n.options_)?void 0:o.enhancer)?r:X,"ObservableObject."+i.toString(),!1);l.values_.set(i,u),a.add(e)}if("accessor"==r)return{get:function(){return a.has(this)||o(this,e.get.call(this)),this[K].getObservablePropValue_(i)},set:function(e){return a.has(this)||o(this,e),this[K].setObservablePropValue_(i,e)},init:function(e){return a.has(this)||o(this,e),e}}}var me="true",we=_e();function _e(e){return{annotationType_:me,options_:e,make_:Se,extend_:ke,decorate_20223_:Oe}}function Se(e,t,n,r){var i,a,o,l;if(n.get)return $e.make_(e,t,n,r);if(n.set){var s=We(t.toString(),n.set);return r===e.target_?null===e.defineProperty_(t,{configurable:!wt.safeDescriptors||e.isPlainObject_,set:s})?0:2:(u(r,t,{configurable:!0,set:s}),2)}if(r!==e.target_&&"function"==typeof n.value)return _(n.value)?(null!=(l=this.options_)&&l.autoBind?wn.bound:wn).make_(e,t,n,r):(null!=(o=this.options_)&&o.autoBind?Gt.bound:Gt).make_(e,t,n,r);var c,f=!1===(null==(i=this.options_)?void 0:i.deep)?Le.ref:Le;return"function"==typeof n.value&&null!=(a=this.options_)&&a.autoBind&&(n.value=n.value.bind(null!=(c=e.proxy_)?c:e.target_)),f.make_(e,t,n,r)}function ke(e,t,n,r){var i,a,o;return n.get?$e.extend_(e,t,n,r):n.set?e.defineProperty_(t,{configurable:!wt.safeDescriptors||e.isPlainObject_,set:We(t.toString(),n.set)},r):("function"==typeof n.value&&null!=(i=this.options_)&&i.autoBind&&(n.value=n.value.bind(null!=(o=e.proxy_)?o:e.target_)),(!1===(null==(a=this.options_)?void 0:a.deep)?Le.ref:Le).extend_(e,t,n,r))}function Oe(e,t){r("'"+this.annotationType_+"' cannot be used as a decorator")}var Pe={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function Ae(e){return e||Pe}Object.freeze(Pe);var xe=be("observable"),je=be("observable.ref",{enhancer:J}),Ce=be("observable.shallow",{enhancer:function(e,t,n){return null==e||Nr(e)||yr(e)||Sr(e)||Pr(e)?e:Array.isArray(e)?Le.array(e,{name:n,deep:!1}):w(e)?Le.object(e,void 0,{name:n,deep:!1}):P(e)?Le.map(e,{name:n,deep:!1}):A(e)?Le.set(e,{name:n,deep:!1}):void 0}}),Ee=be("observable.struct",{enhancer:function(e,t){return Yr(e,t)?t:e}}),Te=U(xe);function Ne(e){return!0===e.deep?X:!1===e.deep?J:(t=e.defaultDecorator)&&null!=(n=null==(r=t.options_)?void 0:r.enhancer)?n:X;var t,n,r}function Ie(e,t,n){return W(t)?xe.decorate_20223_(e,t):g(t)?void H(e,t,xe):En(e)?e:w(e)?Le.object(e,t,n):Array.isArray(e)?Le.array(e,t):P(e)?Le.map(e,t):A(e)?Le.set(e,t):"object"==typeof e&&null!==e?e:Le.box(e,t)}o(Ie,Te);var Re,Me,Le=o(Ie,{box:function(e,t){var n=Ae(t);return new Je(e,Ne(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===wt.useProxies||!1===n.proxy?Hr:cr)(e,Ne(n),n.name)},map:function(e,t){var n=Ae(t);return new _r(e,Ne(n),n.name)},set:function(e,t){var n=Ae(t);return new Or(e,Ne(n),n.name)},object:function(e,t,n){return qr((function(){return cn(!1===wt.useProxies||!1===(null==n?void 0:n.proxy)?Cr({},n):function(e,t){var n,r;return h(),null!=(r=(n=(e=Cr(e,t))[K]).proxy_)?r:n.proxy_=new Proxy(e,Yn)}({},n),e,t)}))},ref:U(je),shallow:U(Ce),deep:Te,struct:U(Ee)}),De="computed",ze=fe(De),Ve=fe("computed.struct",{equals:Y.structural}),$e=function(e,t){if(W(t))return ze.decorate_20223_(e,t);if(g(t))return H(e,t,ze);if(w(e))return U(fe(De,e));var n=w(t)?t:{};return n.get=e,n.name||(n.name=e.name||""),new et(n)};Object.assign($e,ze),$e.struct=U(Ve);var Fe=0,Be=1,Ue=null!=(Re=null==(Me=l((function(){}),"name"))?void 0:Me.configurable)&&Re,He={value:"action",configurable:!0,writable:!1,enumerable:!1};function We(e,t,n,r){function i(){return Ke(e,n,t,r||this,arguments)}return void 0===n&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Ue&&(He.value=e,u(i,"name",He)),i}function Ke(e,t,n,r,i){var a=Ge(0,t);try{return n.apply(r,i)}catch(e){throw a.error_=e,e}finally{qe(a)}}function Ge(e,t,n,r){var i=wt.trackingDerivation,a=!t||!i;At();var o=wt.allowStateChanges;a&&(ft(),o=Ye(!0));var l={runAsAction_:a,prevDerivation_:i,prevAllowStateChanges_:o,prevAllowStateReads_:pt(!0),notifySpy_:!1,startTime_:0,actionId_:Be++,parentActionId_:Fe};return Fe=l.actionId_,l}function qe(e){Fe!==e.actionId_&&r(30),Fe=e.parentActionId_,void 0!==e.error_&&(wt.suppressReactionErrors=!0),Xe(e.prevAllowStateChanges_),ht(e.prevAllowStateReads_),xt(),e.runAsAction_&&dt(e.prevDerivation_),wt.suppressReactionErrors=!1}function Qe(e,t){var n=Ye(e);try{return t()}finally{Xe(n)}}function Ye(e){var t=wt.allowStateChanges;return wt.allowStateChanges=e,t}function Xe(e){wt.allowStateChanges=e}var Je=function(e){function t(t,n,r,i,a){var o;return void 0===r&&(r="ObservableValue"),void 0===i&&(i=!0),void 0===a&&(a=Y.default),(o=e.call(this,r)||this).enhancer=void 0,o.name_=void 0,o.equals=void 0,o.hasUnreportedChange_=!1,o.interceptors_=void 0,o.changeListeners_=void 0,o.value_=void 0,o.dehancer=void 0,o.enhancer=n,o.name_=r,o.equals=a,o.value_=n(t,void 0,r),o}V(t,e);var n=t.prototype;return n.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.set=function(e){this.value_,(e=this.prepareNewValue_(e))!==wt.UNCHANGED&&this.setNewValue_(e)},n.prepareNewValue_=function(e){if(Xn(this)){var t=Zn(this,{object:this,type:lr,newValue:e});if(!t)return wt.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?wt.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),er(this)&&nr(this,{type:lr,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return Jn(this,e)},n.observe_=function(e,t){return t&&e({observableKind:"value",debugObjectName:this.name_,object:this,type:lr,newValue:this.value_,oldValue:void 0}),tr(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+"["+this.value_+"]"},n.valueOf=function(){return C(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(G),Ze=O("ObservableValue",Je),et=function(){function e(e){this.dependenciesState_=tt.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.observers_=new Set,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=tt.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new it(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.isTracing_=nt.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||r(31),this.derivation=e.get,this.name_=e.name||"ComputedValue",e.set&&(this.setter_=We("ComputedValue-setter",e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?Y.structural:Y.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){!function(e){e.lowestObserverState_===tt.UP_TO_DATE_&&(e.lowestObserverState_=tt.POSSIBLY_STALE_,e.observers_.forEach((function(e){e.dependenciesState_===tt.UP_TO_DATE_&&(e.dependenciesState_=tt.POSSIBLY_STALE_,e.onBecomeStale_())})))}(this)},t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.get=function(){if(this.isComputing&&r(32,this.name_,this.derivation),0!==wt.inBatch||0!==this.observers_.size||this.keepAlive_){if(jt(this),ot(this)){var e=wt.trackingContext;this.keepAlive_&&!e&&(wt.trackingContext=this),this.trackAndCompute()&&function(e){e.lowestObserverState_!==tt.STALE_&&(e.lowestObserverState_=tt.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===tt.POSSIBLY_STALE_?t.dependenciesState_=tt.STALE_:t.dependenciesState_===tt.UP_TO_DATE_&&(e.lowestObserverState_=tt.UP_TO_DATE_)})))}(this),wt.trackingContext=e}}else ot(this)&&(this.warnAboutUntrackedRead_(),At(),this.value_=this.computeValue_(!1),xt());var t=this.value_;if(at(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter&&r(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else r(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===tt.NOT_TRACKING_,n=this.computeValue_(!0),r=t||at(e)||at(n)||!this.equals_(e,n);return r&&(this.value_=n),r},t.computeValue_=function(e){this.isComputing=!0;var t,n=Ye(!1);if(e)t=ut(this,this.derivation,this.scope_);else if(!0===wt.disableErrorBoundaries)t=this.derivation.call(this.scope_);else try{t=this.derivation.call(this.scope_)}catch(e){t=new it(e)}return Xe(n),this.isComputing=!1,t},t.suspend_=function(){this.keepAlive_||(st(this),this.value_=void 0)},t.observe_=function(e,t){var n=this,r=!0,i=void 0;return Yt((function(){var a=n.get();if(!r||t){var o=ft();e({observableKind:"computed",debugObjectName:n.name_,type:lr,object:n,newValue:a,oldValue:i}),dt(o)}r=!1,i=a}))},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return C(this.get())},t[Symbol.toPrimitive]=function(){return this.valueOf()},L(e,[{key:"isComputing",get:function(){return N(this.flags_,e.isComputingMask_)},set:function(t){this.flags_=I(this.flags_,e.isComputingMask_,t)}},{key:"isRunningSetter",get:function(){return N(this.flags_,e.isRunningSetterMask_)},set:function(t){this.flags_=I(this.flags_,e.isRunningSetterMask_,t)}},{key:"isBeingObserved",get:function(){return N(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=I(this.flags_,e.isBeingObservedMask_,t)}},{key:"isPendingUnobservation",get:function(){return N(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=I(this.flags_,e.isPendingUnobservationMask_,t)}},{key:"diffValue",get:function(){return N(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=I(this.flags_,e.diffValueMask_,1===t)}}])}();et.isComputingMask_=1,et.isRunningSetterMask_=2,et.isBeingObservedMask_=4,et.isPendingUnobservationMask_=8,et.diffValueMask_=16;var tt,nt,rt=O("ComputedValue",et);!function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"}(tt||(tt={})),function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(nt||(nt={}));var it=function(e){this.cause=void 0,this.cause=e};function at(e){return e instanceof it}function ot(e){switch(e.dependenciesState_){case tt.UP_TO_DATE_:return!1;case tt.NOT_TRACKING_:case tt.STALE_:return!0;case tt.POSSIBLY_STALE_:for(var t=pt(!0),n=ft(),r=e.observing_,i=r.length,a=0;a<i;a++){var o=r[a];if(rt(o)){if(wt.disableErrorBoundaries)o.get();else try{o.get()}catch(e){return dt(n),ht(t),!0}if(e.dependenciesState_===tt.STALE_)return dt(n),ht(t),!0}}return bt(e),dt(n),ht(t),!1}}function lt(){return null!==wt.trackingDerivation}function ut(e,t,n){var r=pt(!0);bt(e),e.newObserving_=new Array(0===e.runId_?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++wt.runId;var i,a=wt.trackingDerivation;if(wt.trackingDerivation=e,wt.inBatch++,!0===wt.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new it(e)}return wt.inBatch--,wt.trackingDerivation=a,function(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=tt.UP_TO_DATE_,i=0,a=e.unboundDepsCount_,o=0;o<a;o++){var l=n[o];0===l.diffValue&&(l.diffValue=1,i!==o&&(n[i]=l),i++),l.dependenciesState_>r&&(r=l.dependenciesState_)}for(n.length=i,e.newObserving_=null,a=t.length;a--;){var u=t[a];0===u.diffValue&&Ot(u,e),u.diffValue=0}for(;i--;){var s=n[i];1===s.diffValue&&(s.diffValue=0,kt(s,e))}r!==tt.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),ht(r),i}function st(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)Ot(t[n],e);e.dependenciesState_=tt.NOT_TRACKING_}function ct(e){var t=ft();try{return e()}finally{dt(t)}}function ft(){var e=wt.trackingDerivation;return wt.trackingDerivation=null,e}function dt(e){wt.trackingDerivation=e}function pt(e){var t=wt.allowStateReads;return wt.allowStateReads=e,t}function ht(e){wt.allowStateReads=e}function bt(e){if(e.dependenciesState_!==tt.UP_TO_DATE_){e.dependenciesState_=tt.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=tt.UP_TO_DATE_}}var vt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],yt=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},gt=!0,mt=!1,wt=function(){var e=a();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(gt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new yt).version&&(gt=!1),gt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new yt):(setTimeout((function(){mt||r(35)}),1),new yt)}();function _t(){return wt}function St(){var e=new yt;for(var t in e)-1===vt.indexOf(t)&&(wt[t]=e[t]);wt.allowStateChanges=!wt.enforceActions}function kt(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function Ot(e,t){e.observers_.delete(t),0===e.observers_.size&&Pt(e)}function Pt(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,wt.pendingUnobservations.push(e))}function At(){wt.inBatch++}function xt(){if(0==--wt.inBatch){Rt();for(var e=wt.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,0===n.observers_.size&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof et&&n.suspend_())}wt.pendingUnobservations=[]}}function jt(e){var t=wt.trackingDerivation;return null!==t?(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&wt.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved):(0===e.observers_.size&&wt.inBatch>0&&Pt(e),!1)}function Ct(e){e.lowestObserverState_!==tt.STALE_&&(e.lowestObserverState_=tt.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===tt.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=tt.STALE_})))}var Et=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=tt.NOT_TRACKING_,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.isTracing_=nt.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled||(this.isScheduled=!0,wt.pendingReactions.push(this),Rt())},t.runReaction_=function(){if(!this.isDisposed){At(),this.isScheduled=!1;var e=wt.trackingContext;if(wt.trackingContext=this,ot(this)){this.isTrackPending=!0;try{this.onInvalidate_()}catch(e){this.reportExceptionInDerivation_(e)}}wt.trackingContext=e,xt()}},t.track=function(e){if(!this.isDisposed){At(),this.isRunning=!0;var t=wt.trackingContext;wt.trackingContext=this;var n=ut(this,e,void 0);wt.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&st(this),at(n)&&this.reportExceptionInDerivation_(n.cause),xt()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(wt.disableErrorBoundaries)throw e;var n="[mobx] uncaught error in '"+this+"'";wt.suppressReactionErrors||console.error(n,e),wt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(At(),st(this),xt()))},t.getDisposer_=function(e){var t=this,n=function n(){t.dispose(),null==e||null==e.removeEventListener||e.removeEventListener("abort",n)};return null==e||null==e.addEventListener||e.addEventListener("abort",n),n[K]=this,n},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1)},L(e,[{key:"isDisposed",get:function(){return N(this.flags_,e.isDisposedMask_)},set:function(t){this.flags_=I(this.flags_,e.isDisposedMask_,t)}},{key:"isScheduled",get:function(){return N(this.flags_,e.isScheduledMask_)},set:function(t){this.flags_=I(this.flags_,e.isScheduledMask_,t)}},{key:"isTrackPending",get:function(){return N(this.flags_,e.isTrackPendingMask_)},set:function(t){this.flags_=I(this.flags_,e.isTrackPendingMask_,t)}},{key:"isRunning",get:function(){return N(this.flags_,e.isRunningMask_)},set:function(t){this.flags_=I(this.flags_,e.isRunningMask_,t)}},{key:"diffValue",get:function(){return N(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=I(this.flags_,e.diffValueMask_,1===t)}}])}();function Tt(e){return wt.globalReactionErrorHandlers.push(e),function(){var t=wt.globalReactionErrorHandlers.indexOf(e);t>=0&&wt.globalReactionErrorHandlers.splice(t,1)}}Et.isDisposedMask_=1,Et.isScheduledMask_=2,Et.isTrackPendingMask_=4,Et.isRunningMask_=8,Et.diffValueMask_=16;var Nt=100,It=function(e){return e()};function Rt(){wt.inBatch>0||wt.isRunningReactions||It(Mt)}function Mt(){wt.isRunningReactions=!0;for(var e=wt.pendingReactions,t=0;e.length>0;){++t===Nt&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].runReaction_()}wt.isRunningReactions=!1}var Lt=O("Reaction",Et);function Dt(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}}var zt="action",Vt="autoAction",$t="<unnamed action>",Ft=te(zt),Bt=te("action.bound",{bound:!0}),Ut=te(Vt,{autoAction:!0}),Ht=te("autoAction.bound",{autoAction:!0,bound:!0});function Wt(e){return function(t,n){return y(t)?We(t.name||$t,t,e):y(n)?We(t,n,e):W(n)?(e?Ut:Ft).decorate_20223_(t,n):g(n)?H(t,n,e?Ut:Ft):g(t)?U(te(e?Vt:zt,{name:t,autoAction:e})):void 0}}var Kt=Wt(!1);Object.assign(Kt,Ft);var Gt=Wt(!0);function qt(e){return Ke(e.name,!1,e,this,void 0)}function Qt(e){return y(e)&&!0===e.isMobxAction}function Yt(e,t){var n,r,i,a;void 0===t&&(t=f);var o,l=null!=(n=null==(r=t)?void 0:r.name)?n:"Autorun";if(t.scheduler||t.delay){var u=Jt(t),s=!1;o=new Et(l,(function(){s||(s=!0,u((function(){s=!1,o.isDisposed||o.track(c)})))}),t.onError,t.requiresObservable)}else o=new Et(l,(function(){this.track(c)}),t.onError,t.requiresObservable);function c(){e(o)}return null!=(i=t)&&null!=(i=i.signal)&&i.aborted||o.schedule_(),o.getDisposer_(null==(a=t)?void 0:a.signal)}Object.assign(Gt,Ut),Kt.bound=U(Bt),Gt.bound=U(Ht);var Xt=function(e){return e()};function Jt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Xt}function Zt(e,t,n){var r,i,a;void 0===n&&(n=f);var o,l,u,s=null!=(r=n.name)?r:"Reaction",c=Kt(s,n.onError?(o=n.onError,l=t,function(){try{return l.apply(this,arguments)}catch(e){o.call(this,e)}}):t),d=!n.scheduler&&!n.delay,p=Jt(n),h=!0,b=!1,v=n.compareStructural?Y.structural:n.equals||Y.default,y=new Et(s,(function(){h||d?g():b||(b=!0,p(g))}),n.onError,n.requiresObservable);function g(){if(b=!1,!y.isDisposed){var t=!1,r=u;y.track((function(){var n=Qe(!1,(function(){return e(y)}));t=h||!v(u,n),u=n})),(h&&n.fireImmediately||!h&&t)&&c(u,r,y),h=!1}}return null!=(i=n)&&null!=(i=i.signal)&&i.aborted||y.schedule_(),y.getDisposer_(null==(a=n)?void 0:a.signal)}var en="onBO",tn="onBUO";function nn(e,t,n){return an(en,e,t,n)}function rn(e,t,n){return an(tn,e,t,n)}function an(e,t,n,r){var i="function"==typeof r?Wr(t,n):Wr(t),a=y(r)?r:n,o=e+"L";return i[o]?i[o].add(a):i[o]=new Set([a]),function(){var e=i[o];e&&(e.delete(a),0===e.size&&delete i[o])}}var on="never",ln="always",un="observed";function sn(e){!0===e.isolateGlobalState&&function(){if((wt.pendingReactions.length||wt.inBatch||wt.isRunningReactions)&&r(36),mt=!0,gt){var e=a();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),wt=new yt}}();var t,n,i=e.useProxies,o=e.enforceActions;if(void 0!==i&&(wt.useProxies=i===ln||i!==on&&"undefined"!=typeof Proxy),"ifavailable"===i&&(wt.verifyProxies=!0),void 0!==o){var l=o===ln?ln:o===un;wt.enforceActions=l,wt.allowStateChanges=!0!==l&&l!==ln}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(wt[t]=!!e[t])})),wt.allowStateReads=!wt.observableRequiresReaction,e.reactionScheduler&&(t=e.reactionScheduler,n=It,It=function(e){return t((function(){return n(e)}))})}function cn(e,t,n,r){var i=T(t);return qr((function(){var t=Cr(e,r)[K];j(i).forEach((function(e){t.extend_(e,i[e],!n||!(e in n)||n[e])}))})),e}function fn(e,t){return dn(Wr(e,t))}function dn(e){var t,n={name:e.name_};return e.observing_&&e.observing_.length>0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(dn)),n}function pn(e,t){return hn(Wr(e,t))}function hn(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(hn)),t}var bn=0;function vn(){this.message="FLOW_CANCELLED"}function yn(e){return e instanceof vn}vn.prototype=Object.create(Error.prototype);var gn=oe("flow"),mn=oe("flow.bound",{bound:!0}),wn=Object.assign((function(e,t){if(W(t))return gn.decorate_20223_(e,t);if(g(t))return H(e,t,gn);var n=e,r=n.name||"<unnamed flow>",i=function(){var e,t=arguments,i=++bn,a=Kt(r+" - runid: "+i+" - init",n).apply(this,t),o=void 0,l=new Promise((function(t,n){var l=0;function u(e){var t;o=void 0;try{t=Kt(r+" - runid: "+i+" - yield "+l++,a.next).call(a,e)}catch(e){return n(e)}c(t)}function s(e){var t;o=void 0;try{t=Kt(r+" - runid: "+i+" - yield "+l++,a.throw).call(a,e)}catch(e){return n(e)}c(t)}function c(e){if(!y(null==e?void 0:e.then))return e.done?t(e.value):(o=Promise.resolve(e.value)).then(u,s);e.then(c,n)}e=n,u(void 0)}));return l.cancel=Kt(r+" - runid: "+i+" - cancel",(function(){try{o&&_n(o);var t=a.return(void 0),n=Promise.resolve(t.value);n.then(v,v),_n(n),e(new vn)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),gn);function _n(e){y(e.cancel)&&e.cancel()}function Sn(e){return e}function kn(e){return!0===(null==e?void 0:e.isMobXFlow)}function On(e,t,n){var r;return Sr(e)||yr(e)||Ze(e)?r=Kr(e):Nr(e)&&(r=Kr(e,t)),r.dehancer="function"==typeof t?t:n,function(){r.dehancer=void 0}}function Pn(e,t,n){return y(n)?function(e,t,n){return Kr(e,t).intercept_(n)}(e,t,n):function(e,t){return Kr(e).intercept_(t)}(e,t)}function An(e,t){if(void 0===t)return rt(e);if(!1===Nr(e))return!1;if(!e[K].values_.has(t))return!1;var n=Wr(e,t);return rt(n)}function xn(e){return An(e)}function jn(e,t){return An(e,t)}function Cn(e,t){return!!e&&(void 0!==t?!!Nr(e)&&e[K].values_.has(t):Nr(e)||!!e[K]||q(e)||Lt(e)||rt(e))}function En(e){return Cn(e)}function Tn(e,t){return Cn(e,t)}function Nn(e){return Nr(e)?e[K].keys_():Sr(e)||Pr(e)?Array.from(e.keys()):yr(e)?e.map((function(e,t){return t})):void r(5)}function In(e){return Nr(e)?Nn(e).map((function(t){return e[t]})):Sr(e)?Nn(e).map((function(t){return e.get(t)})):Pr(e)?Array.from(e.values()):yr(e)?e.slice():void r(6)}function Rn(e){return Nr(e)?Nn(e).map((function(t){return[t,e[t]]})):Sr(e)?Nn(e).map((function(t){return[t,e.get(t)]})):Pr(e)?Array.from(e.entries()):yr(e)?e.map((function(e,t){return[t,e]})):void r(7)}function Mn(e,t,n){if(2!==arguments.length||Pr(e))Nr(e)?e[K].set_(t,n):Sr(e)?e.set(t,n):Pr(e)?e.add(t):yr(e)?("number"!=typeof t&&(t=parseInt(t,10)),t<0&&r("Invalid index: '"+t+"'"),At(),t>=e.length&&(e.length=t+1),e[t]=n,xt()):r(8);else{At();var i=t;try{for(var a in i)Mn(e,a,i[a])}finally{xt()}}}function Ln(e,t){Nr(e)?e[K].delete_(t):Sr(e)||Pr(e)?e.delete(t):yr(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):r(9)}function Dn(e,t){return Nr(e)?e[K].has_(t):Sr(e)||Pr(e)?e.has(t):yr(e)?t>=0&&t<e.length:void r(10)}function zn(e,t){if(Dn(e,t))return Nr(e)?e[K].get_(t):Sr(e)?e.get(t):yr(e)?e[t]:void r(11)}function Vn(e,t,n){if(Nr(e))return e[K].defineProperty_(t,n);r(39)}function $n(e){if(Nr(e))return e[K].ownKeys_();r(38)}function Fn(e,t,n,r){return y(n)?function(e,t,n,r){return Kr(e,t).observe_(n,r)}(e,t,n,r):function(e,t,n){return Kr(e).observe_(t,n)}(e,t,n)}function Bn(e,t,n){return e.set(t,n),n}function Un(e,t){if(null==e||"object"!=typeof e||e instanceof Date||!En(e))return e;if(Ze(e)||rt(e))return Un(e.get(),t);if(t.has(e))return t.get(e);if(yr(e)){var n=Bn(t,e,new Array(e.length));return e.forEach((function(e,r){n[r]=Un(e,t)})),n}if(Pr(e)){var r=Bn(t,e,new Set);return e.forEach((function(e){r.add(Un(e,t))})),r}if(Sr(e)){var i=Bn(t,e,new Map);return e.forEach((function(e,n){i.set(n,Un(e,t))})),i}var a=Bn(t,e,{});return $n(e).forEach((function(n){s.propertyIsEnumerable.call(e,n)&&(a[n]=Un(e[n],t))})),a}function Hn(e,t){return Un(e,new Map)}function Wn(){}function Kn(e,t){void 0===t&&(t=void 0),At();try{return e.apply(t)}finally{xt()}}function Gn(e,t,n){return 1===arguments.length||t&&"object"==typeof t?function(e,t){var n,r,i;if(null!=t&&null!=(n=t.signal)&&n.aborted)return Object.assign(Promise.reject(new Error("WHEN_ABORTED")),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,l=qn(e,n,z({},t,{onError:a}));r=function(){l(),a(new Error("WHEN_CANCELLED"))},i=function(){l(),a(new Error("WHEN_ABORTED"))},null==t||null==(o=t.signal)||null==o.addEventListener||o.addEventListener("abort",i)})).finally((function(){var e;return null==t||null==(e=t.signal)||null==e.removeEventListener?void 0:e.removeEventListener("abort",i)}));return a.cancel=r,a}(e,t):qn(e,t,n||{})}function qn(e,t,n){var r;if("number"==typeof n.timeout){var i=new Error("WHEN_TIMEOUT");r=setTimeout((function(){if(!o[K].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name="When";var a=We("When-effect",t),o=Yt((function(t){Qe(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Qn(e){return e[K]}wn.bound=U(mn);var Yn={has:function(e,t){return Qn(e).has_(t)},get:function(e,t){return Qn(e).get_(t)},set:function(e,t,n){var r;return!!g(t)&&(null==(r=Qn(e).set_(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!g(t)&&(null==(n=Qn(e).delete_(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=Qn(e).defineProperty_(t,n))||r},ownKeys:function(e){return Qn(e).ownKeys_()},preventExtensions:function(e){r(13)}};function Xn(e){return void 0!==e.interceptors_&&e.interceptors_.length>0}function Jn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),b((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Zn(e,t){var n=ft();try{for(var i=[].concat(e.interceptors_||[]),a=0,o=i.length;a<o&&((t=i[a](t))&&!t.type&&r(14),t);a++);return t}finally{dt(n)}}function er(e){return void 0!==e.changeListeners_&&e.changeListeners_.length>0}function tr(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),b((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function nr(e,t){var n=ft(),r=e.changeListeners_;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);dt(n)}}function rr(e,t,n){return qr((function(){var r=Cr(e,n)[K];null!=t||(t=function(e){return E(e,B)||S(e,B,z({},e[B])),e[B]}(e)),j(t).forEach((function(e){return r.make_(e,t[e])}))})),e}var ir=Symbol("mobx-keys");function ar(e,t,n){return w(e)?cn(e,e,t,n):(qr((function(){var r=Cr(e,n)[K];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(j(e),j(i)));a.delete("constructor"),a.delete(K),S(i,ir,a)}e[ir].forEach((function(e){return r.make_(e,!t||!(e in t)||t[e])}))})),e)}var or="splice",lr="update",ur={get:function(e,t){var n=e[K];return t===K?n:"length"===t?n.getArrayLength_():"string"!=typeof t||isNaN(t)?E(fr,t)?fr[t]:e[t]:n.get_(parseInt(t))},set:function(e,t,n){var r=e[K];return"length"===t&&r.setArrayLength_(n),"symbol"==typeof t||isNaN(t)?e[t]=n:r.set_(parseInt(t),n),!0},preventExtensions:function(){r(15)}},sr=function(){function e(e,t,n,r){void 0===e&&(e="ObservableArray"),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.legacyMode_=r,this.atom_=new G(e),this.enhancer_=function(e,n){return t(e,n,"ObservableArray[..]")}}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.dehanceValues_=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},t.intercept_=function(e){return Jn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),tr(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&r("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var n=new Array(e-t),i=0;i<e-t;i++)n[i]=void 0;this.spliceWithArray_(t,0,n)}else this.spliceWithArray_(e,t-e)},t.updateArrayLength_=function(e,t){e!==this.lastKnownLength_&&r(16),this.lastKnownLength_+=t,this.legacyMode_&&t>0&&Ur(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;this.atom_;var i=this.values_.length;if(void 0===e?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=1===arguments.length?i-e:null==t?0:Math.max(0,Math.min(t,i-e)),void 0===n&&(n=c),Xn(this)){var a=Zn(this,{object:this.proxy_,type:or,index:e,removedCount:t,added:n});if(!a)return c;t=a.removedCount,n=a.added}if(n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_){var o=n.length-t;this.updateArrayLength_(i,o)}var l=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,l),this.dehanceValues_(l)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var i=this.values_.slice(e,e+t),a=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var o=0;o<n.length;o++)this.values_[e+o]=n[o];for(var l=0;l<a.length;l++)this.values_[e+n.length+l]=a[l];return i},t.notifyArrayChildUpdate_=function(e,t,n){var r=!this.owned_&&!1,i=er(this),a=i||r?{observableKind:"array",object:this.proxy_,type:lr,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;this.atom_.reportChanged(),i&&nr(this,a)},t.notifyArraySplice_=function(e,t,n){var r=!this.owned_&&!1,i=er(this),a=i||r?{observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:or,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.atom_.reportChanged(),i&&nr(this,a)},t.get_=function(e){if(!(this.legacyMode_&&e>=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var n=this.values_;if(this.legacyMode_&&e>n.length&&r(17,e,n.length),e<n.length){this.atom_;var i=n[e];if(Xn(this)){var a=Zn(this,{type:lr,object:this.proxy_,index:e,newValue:t});if(!a)return;t=a.newValue}(t=this.enhancer_(t,i))!==i&&(n[e]=t,this.notifyArrayChildUpdate_(e,t,i))}else{for(var o=new Array(e+1-n.length),l=0;l<o.length-1;l++)o[l]=void 0;o[o.length-1]=t,this.spliceWithArray_(n.length,0,o)}},e}();function cr(e,t,n,r){return void 0===n&&(n="ObservableArray"),void 0===r&&(r=!1),h(),qr((function(){var i=new sr(n,t,r,!1);k(i.values_,K,i);var a=new Proxy(i.values_,ur);return i.proxy_=a,e&&e.length&&i.spliceWithArray_(0,0,e),a}))}var fr={clear:function(){return this.splice(0)},replace:function(e){var t=this[K];return t.spliceWithArray_(0,t.values_.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var a=this[K];switch(arguments.length){case 0:return[];case 1:return a.spliceWithArray_(e);case 2:return a.spliceWithArray_(e,t)}return a.spliceWithArray_(e,t,r)},spliceWithArray:function(e,t,n){return this[K].spliceWithArray_(e,t,n)},push:function(){for(var e=this[K],t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.spliceWithArray_(e.values_.length,0,n),e.values_.length},pop:function(){return this.splice(Math.max(this[K].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[K],t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.spliceWithArray_(0,0,n),e.values_.length},reverse:function(){return wt.trackingDerivation&&r(37,"reverse"),this.replace(this.slice().reverse()),this},sort:function(){wt.trackingDerivation&&r(37,"sort");var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[K],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};function dr(e,t){"function"==typeof Array.prototype[e]&&(fr[e]=t(e))}function pr(e){return function(){var t=this[K];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function hr(e){return function(t,n){var r=this,i=this[K];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e]((function(e,i){return t.call(n,e,i,r)}))}}function br(e){return function(){var t=this,n=this[K];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}dr("at",pr),dr("concat",pr),dr("flat",pr),dr("includes",pr),dr("indexOf",pr),dr("join",pr),dr("lastIndexOf",pr),dr("slice",pr),dr("toString",pr),dr("toLocaleString",pr),dr("toSorted",pr),dr("toSpliced",pr),dr("with",pr),dr("every",hr),dr("filter",hr),dr("find",hr),dr("findIndex",hr),dr("findLast",hr),dr("findLastIndex",hr),dr("flatMap",hr),dr("forEach",hr),dr("map",hr),dr("some",hr),dr("toReversed",hr),dr("reduce",br),dr("reduceRight",br);var vr=O("ObservableArrayAdministration",sr);function yr(e){return m(e)&&vr(e[K])}var gr={},mr="add",wr="delete",_r=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[K]=gr,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,y(Map)||r(18),qr((function(){i.keysAtom_=Q("ObservableMap.keys()"),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!wt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Je(this.has_(e),J,"ObservableMap.key?",!1);this.hasMap_.set(e,r),rn(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Xn(this)){var r=Zn(this,{type:n?lr:mr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if(this.keysAtom_,Xn(this)&&!Zn(this,{type:wr,object:this,name:e}))return!1;if(this.has_(e)){var n=er(this),r=n?{observableKind:"map",debugObjectName:this.name_,type:wr,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return Kn((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),n&&nr(this,r),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==wt.UNCHANGED){var r=er(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:lr,object:this,oldValue:n.value_,name:e,newValue:t}:null;n.setNewValue_(t),r&&nr(this,i)}},t.addValue_=function(e,t){var n=this;this.keysAtom_,Kn((function(){var r,i=new Je(t,n.enhancer_,"ObservableMap.key",!1);n.data_.set(e,i),t=i.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=er(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:mr,object:this,name:e,newValue:t}:null;r&&nr(this,i)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Zr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return Zr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[Symbol.iterator]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=D(this);!(n=r()).done;){var i=n.value,a=i[0],o=i[1];e.call(t,o,a,this)}},t.merge=function(e){var t=this;return Sr(e)&&(e=new Map(e)),Kn((function(){var n,i,a;w(e)?function(e){var t=Object.keys(e);if(!x)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return s.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):P(e)?(n=e,i=Object.getPrototypeOf(n),a=Object.getPrototypeOf(i),null!==Object.getPrototypeOf(a)&&r(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&r(20,e)})),this},t.clear=function(){var e=this;Kn((function(){ct((function(){for(var t,n=D(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return Kn((function(){for(var n,i=function(e){if(P(e)||Sr(e))return e;if(Array.isArray(e))return new Map(e);if(w(e)){var t=new Map;for(var n in e)t.set(n,e[n]);return t}return r(21,e)}(e),a=new Map,o=!1,l=D(t.data_.keys());!(n=l()).done;){var u=n.value;if(!i.has(u))if(t.delete(u))o=!0;else{var s=t.data_.get(u);a.set(u,s)}}for(var c,f=D(i.entries());!(c=f()).done;){var d=c.value,p=d[0],h=d[1],b=t.data_.has(p);if(t.set(p,h),t.data_.has(p)){var v=t.data_.get(p);a.set(p,v),b||(o=!0)}}if(!o)if(t.data_.size!==a.size)t.keysAtom_.reportChanged();else for(var y=t.data_.keys(),g=a.keys(),m=y.next(),_=g.next();!m.done;){if(m.value!==_.value){t.keysAtom_.reportChanged();break}m=y.next(),_=g.next()}t.data_=a})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return tr(this,e)},t.intercept_=function(e){return Jn(this,e)},L(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Map"}}])}(),Sr=O("ObservableMap",_r),kr={},Or=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableSet"),this.name_=void 0,this[K]=kr,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,y(Set)||r(22),this.enhancer_=function(e,r){return t(e,r,n)},qr((function(){i.atom_=Q(i.name_),e&&i.replace(e)}))}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;Kn((function(){ct((function(){for(var t,n=D(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=D(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if(this.atom_,Xn(this)&&!Zn(this,{type:mr,object:this,newValue:e}))return this;if(!this.has(e)){Kn((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=er(this),r=n?{observableKind:"set",debugObjectName:this.name_,type:mr,object:this,newValue:e}:null;n&&nr(this,r)}return this},t.delete=function(e){var t=this;if(Xn(this)&&!Zn(this,{type:wr,object:this,oldValue:e}))return!1;if(this.has(e)){var n=er(this),r=n?{observableKind:"set",debugObjectName:this.name_,type:wr,object:this,oldValue:e}:null;return Kn((function(){t.atom_.reportChanged(),t.data_.delete(e)})),n&&nr(this,r),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Zr({next:function(){var r=e;return e+=1,r<n.length?{value:[t[r],n[r]],done:!1}:{done:!0}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var e=this,t=0,n=Array.from(this.data_.values());return Zr({next:function(){return t<n.length?{value:e.dehanceValue_(n[t++]),done:!1}:{done:!0}}})},t.intersection=function(e){return A(e)&&!Pr(e)?e.intersection(this):new Set(this).intersection(e)},t.union=function(e){return A(e)&&!Pr(e)?e.union(this):new Set(this).union(e)},t.difference=function(e){return new Set(this).difference(e)},t.symmetricDifference=function(e){return A(e)&&!Pr(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},t.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},t.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},t.isDisjointFrom=function(e){return A(e)&&!Pr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},t.replace=function(e){var t=this;return Pr(e)&&(e=new Set(e)),Kn((function(){Array.isArray(e)||A(e)?(t.clear(),e.forEach((function(e){return t.add(e)}))):null!=e&&r("Cannot initialize set from "+e)})),this},t.observe_=function(e,t){return tr(this,e)},t.intercept_=function(e){return Jn(this,e)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return"[object ObservableSet]"},t[Symbol.iterator]=function(){return this.values()},L(e,[{key:"size",get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Set"}}])}(),Pr=O("ObservableSet",Or),Ar=Object.create(null),xr="remove",jr=function(){function e(e,t,n,r){void 0===t&&(t=new Map),void 0===r&&(r=we),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.target_=e,this.values_=t,this.name_=n,this.defaultAnnotation_=r,this.keysAtom_=new G("ObservableObject.keys"),this.isPlainObject_=w(this.target_)}var t=e.prototype;return t.getObservablePropValue_=function(e){return this.values_.get(e).get()},t.setObservablePropValue_=function(e,t){var n=this.values_.get(e);if(n instanceof et)return n.set(t),!0;if(Xn(this)){var r=Zn(this,{type:lr,object:this.proxy_||this.target_,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.prepareNewValue_(t))!==wt.UNCHANGED){var i=er(this),a=i?{type:lr,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;n.setNewValue_(t),i&&nr(this,a)}return!0},t.get_=function(e){return wt.trackingDerivation&&!E(this.target_,e)&&this.has_(e),this.target_[e]},t.set_=function(e,t,n){return void 0===n&&(n=!1),E(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)},t.has_=function(e){if(!wt.trackingDerivation)return e in this.target_;this.pendingKeys_||(this.pendingKeys_=new Map);var t=this.pendingKeys_.get(e);return t||(t=new Je(e in this.target_,J,"ObservableObject.key?",!1),this.pendingKeys_.set(e,t)),t.get()},t.make_=function(e,t){if(!0===t&&(t=this.defaultAnnotation_),!1!==t){if(!(e in this.target_)){var n;if(null!=(n=this.target_[B])&&n[e])return;r(1,t.annotationType_,this.name_+"."+e.toString())}for(var i=this.target_;i&&i!==s;){var a=l(i,e);if(a){var o=t.make_(this,e,a,i);if(0===o)return;if(1===o)break}i=Object.getPrototypeOf(i)}Ir(this,0,e)}},t.extend_=function(e,t,n,r){if(void 0===r&&(r=!1),!0===n&&(n=this.defaultAnnotation_),!1===n)return this.defineProperty_(e,t,r);var i=n.extend_(this,e,t,r);return i&&Ir(this,0,e),i},t.defineProperty_=function(e,t,n){void 0===n&&(n=!1),this.keysAtom_;try{At();var r=this.delete_(e);if(!r)return r;if(Xn(this)){var i=Zn(this,{object:this.proxy_||this.target_,name:e,type:mr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=z({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else u(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{xt()}return!0},t.defineObservableProperty_=function(e,t,n,r){void 0===r&&(r=!1),this.keysAtom_;try{At();var i=this.delete_(e);if(!i)return i;if(Xn(this)){var a=Zn(this,{object:this.proxy_||this.target_,name:e,type:mr,newValue:t});if(!a)return null;t=a.newValue}var o=Tr(e),l={configurable:!wt.safeDescriptors||this.isPlainObject_,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.target_,e,l))return!1}else u(this.target_,e,l);var s=new Je(t,n,"ObservableObject.key",!1);this.values_.set(e,s),this.notifyPropertyAddition_(e,s.value_)}finally{xt()}return!0},t.defineComputedProperty_=function(e,t,n){void 0===n&&(n=!1),this.keysAtom_;try{At();var r=this.delete_(e);if(!r)return r;if(Xn(this)&&!Zn(this,{object:this.proxy_||this.target_,name:e,type:mr,newValue:void 0}))return null;t.name||(t.name="ObservableObject.key"),t.context=this.proxy_||this.target_;var i=Tr(e),a={configurable:!wt.safeDescriptors||this.isPlainObject_,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.target_,e,a))return!1}else u(this.target_,e,a);this.values_.set(e,new et(t)),this.notifyPropertyAddition_(e,void 0)}finally{xt()}return!0},t.delete_=function(e,t){if(void 0===t&&(t=!1),this.keysAtom_,!E(this.target_,e))return!0;if(Xn(this)&&!Zn(this,{object:this.proxy_||this.target_,name:e,type:xr}))return null;try{var n;At();var r,i=er(this),a=this.values_.get(e),o=void 0;if(!a&&i&&(o=null==(r=l(this.target_,e))?void 0:r.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(a&&(this.values_.delete(e),a instanceof Je&&(o=a.value_),Ct(a)),this.keysAtom_.reportChanged(),null==(n=this.pendingKeys_)||null==(n=n.get(e))||n.set(e in this.target_),i){var u={type:xr,observableKind:"object",object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:o,name:e};i&&nr(this,u)}}finally{xt()}return!0},t.observe_=function(e,t){return tr(this,e)},t.intercept_=function(e){return Jn(this,e)},t.notifyPropertyAddition_=function(e,t){var n,r=er(this);if(r){var i=r?{type:mr,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;r&&nr(this,i)}null==(n=this.pendingKeys_)||null==(n=n.get(e))||n.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),j(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function Cr(e,t){var n;if(E(e,K))return e;var r=null!=(n=null==t?void 0:t.name)?n:"ObservableObject",i=new jr(e,new Map,String(r),function(e){var t;return e?null!=(t=e.defaultDecorator)?t:_e(e):void 0}(t));return S(e,K,i),e}var Er=O("ObservableObjectAdministration",jr);function Tr(e){return Ar[e]||(Ar[e]={get:function(){return this[K].getObservablePropValue_(e)},set:function(t){return this[K].setObservablePropValue_(e,t)}})}function Nr(e){return!!m(e)&&Er(e[K])}function Ir(e,t,n){var r;null==(r=e.target_[B])||delete r[n]}var Rr,Mr,Lr=Fr(0),Dr=function(){var e=!1,t={};return Object.defineProperty(t,"0",{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),zr=0,Vr=function(){};Rr=Vr,Mr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(Rr.prototype,Mr):void 0!==Rr.prototype.__proto__?Rr.prototype.__proto__=Mr:Rr.prototype=Mr;var $r=function(e){function t(t,n,r,i){var a;return void 0===r&&(r="ObservableArray"),void 0===i&&(i=!1),a=e.call(this)||this,qr((function(){var e=new sr(r,n,i,!0);e.proxy_=a,k(a,K,e),t&&t.length&&a.spliceWithArray(0,0,t),Dr&&Object.defineProperty(a,"0",Lr)})),a}V(t,e);var n=t.prototype;return n.concat=function(){this[K].atom_.reportObserved();for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Array.prototype.concat.apply(this.slice(),t.map((function(e){return yr(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return Zr({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},L(t,[{key:"length",get:function(){return this[K].getArrayLength_()},set:function(e){this[K].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return"Array"}}])}(Vr);function Fr(e){return{enumerable:!1,configurable:!0,get:function(){return this[K].get_(e)},set:function(t){this[K].set_(e,t)}}}function Br(e){u($r.prototype,""+e,Fr(e))}function Ur(e){if(e>zr){for(var t=zr;t<e+100;t++)Br(t);zr=e}}function Hr(e,t,n){return new $r(e,t,n)}function Wr(e,t){if("object"==typeof e&&null!==e){if(yr(e))return void 0!==t&&r(23),e[K].atom_;if(Pr(e))return e.atom_;if(Sr(e)){if(void 0===t)return e.keysAtom_;var n=e.data_.get(t)||e.hasMap_.get(t);return n||r(25,t,Gr(e)),n}if(Nr(e)){if(!t)return r(26);var i=e[K].values_.get(t);return i||r(27,t,Gr(e)),i}if(q(e)||rt(e)||Lt(e))return e}else if(y(e)&&Lt(e[K]))return e[K];r(28)}function Kr(e,t){return e||r(29),void 0!==t?Kr(Wr(e,t)):q(e)||rt(e)||Lt(e)||Sr(e)||Pr(e)?e:e[K]?e[K]:void r(24,e)}function Gr(e,t){var n;if(void 0!==t)n=Wr(e,t);else{if(Qt(e))return e.name;n=Nr(e)||Sr(e)||Pr(e)?Kr(e):Wr(e)}return n.name_}function qr(e){var t=ft(),n=Ye(!0);At();try{return e()}finally{xt(),Xe(n),dt(t)}}Object.entries(fr).forEach((function(e){var t=e[0],n=e[1];"concat"!==t&&S($r.prototype,t,n)})),Ur(1e3);var Qr=s.toString;function Yr(e,t,n){return void 0===n&&(n=-1),Xr(e,t,n)}function Xr(e,t,n,r,i){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return!1;if(e!=e)return t!=t;var a=typeof e;if("function"!==a&&"object"!==a&&"object"!=typeof t)return!1;var o=Qr.call(e);if(o!==Qr.call(t))return!1;switch(o){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:0==+e?1/+e==1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case"[object Map]":case"[object Set]":n>=0&&n++}e=Jr(e),t=Jr(t);var l="[object Array]"===o;if(!l){if("object"!=typeof e||"object"!=typeof t)return!1;var u=e.constructor,s=t.constructor;if(u!==s&&!(y(u)&&u instanceof u&&y(s)&&s instanceof s)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),i=i||[];for(var c=(r=r||[]).length;c--;)if(r[c]===e)return i[c]===t;if(r.push(e),i.push(t),l){if((c=e.length)!==t.length)return!1;for(;c--;)if(!Xr(e[c],t[c],n-1,r,i))return!1}else{var f,d=Object.keys(e);if(c=d.length,Object.keys(t).length!==c)return!1;for(;c--;)if(!E(t,f=d[c])||!Xr(e[f],t[f],n-1,r,i))return!1}return r.pop(),i.pop(),!0}function Jr(e){return yr(e)?e.slice():P(e)||Sr(e)||A(e)||Pr(e)?Array.from(e.entries()):e}function Zr(e){return e[Symbol.iterator]=ei,e}function ei(){return this}["Symbol","Map","Set"].forEach((function(e){void 0===a()[e]&&r("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Dt,extras:{getDebugName:Gr},$mobx:K})},45555:(e,t,n)=>{var r=n(7552),i=n(13754);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var o=new Set,l={};function u(e,t){s(e,t),s(e+"Capture",t)}function s(e,t){for(l[e]=t,e=0;e<t.length;e++)o.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},h={};function b(e,t,n,r,i,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new b(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new b(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new b(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new b(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new b(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new b(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new b(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new b(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new b(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function g(e){return e[1].toUpperCase()}function m(e,t,n,r){var i=v.hasOwnProperty(t)?v[t]:null;(null!==i?0!==i.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!f.call(h,e)||!f.call(p,e)&&(d.test(e)?h[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,g);v[t]=new b(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,g);v[t]=new b(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,g);v[t]=new b(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new b(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new b("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new b(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_=Symbol.for("react.element"),S=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),P=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),x=Symbol.for("react.context"),j=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),T=Symbol.for("react.memo"),N=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var I=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var R=Symbol.iterator;function M(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=R&&e[R]||e["@@iterator"])?e:null}var L,D=Object.assign;function z(e){if(void 0===L)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);L=t&&t[1]||""}return"\n"+L+e}var V=!1;function $(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var i=t.stack.split("\n"),a=r.stack.split("\n"),o=i.length-1,l=a.length-1;1<=o&&0<=l&&i[o]!==a[l];)l--;for(;1<=o&&0<=l;o--,l--)if(i[o]!==a[l]){if(1!==o||1!==l)do{if(o--,0>--l||i[o]!==a[l]){var u="\n"+i[o].replace(" at new "," at ");return e.displayName&&u.includes("<anonymous>")&&(u=u.replace("<anonymous>",e.displayName)),u}}while(1<=o&&0<=l);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?z(e):""}function F(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return $(e.type,!1);case 11:return $(e.type.render,!1);case 1:return $(e.type,!0);default:return""}}function B(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case k:return"Fragment";case S:return"Portal";case P:return"Profiler";case O:return"StrictMode";case C:return"Suspense";case E:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case x:return(e.displayName||"Context")+".Consumer";case A:return(e._context.displayName||"Context")+".Provider";case j:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case T:return null!==(t=e.displayName||null)?t:B(e.type)||"Memo";case N:t=e._payload,e=e._init;try{return B(e(t))}catch(e){}}return null}function U(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return B(t);case 8:return t===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Q(e,t){var n=t.checked;return D({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&m(e,"checked",t,!1)}function J(e,t){X(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Z(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return D({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ie(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function ae(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function oe(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function ue(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var se,ce,fe=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((se=se||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function be(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ve(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=be(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(pe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ye=D({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ge(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function me(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Se=null,ke=null,Oe=null;function Pe(e){if(e=mi(e)){if("function"!=typeof Se)throw Error(a(280));var t=e.stateNode;t&&(t=_i(t),Se(e.stateNode,e.type,t))}}function Ae(e){ke?Oe?Oe.push(e):Oe=[e]:ke=e}function xe(){if(ke){var e=ke,t=Oe;if(Oe=ke=null,Pe(e),t)for(e=0;e<t.length;e++)Pe(t[e])}}function je(e,t){return e(t)}function Ce(){}var Ee=!1;function Te(e,t,n){if(Ee)return e(t,n);Ee=!0;try{return je(e,t,n)}finally{Ee=!1,(null!==ke||null!==Oe)&&(Ce(),xe())}}function Ne(e,t){var n=e.stateNode;if(null===n)return null;var r=_i(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var Ie=!1;if(c)try{var Re={};Object.defineProperty(Re,"passive",{get:function(){Ie=!0}}),window.addEventListener("test",Re,Re),window.removeEventListener("test",Re,Re)}catch(ce){Ie=!1}function Me(e,t,n,r,i,a,o,l,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var Le=!1,De=null,ze=!1,Ve=null,$e={onError:function(e){Le=!0,De=e}};function Fe(e,t,n,r,i,a,o,l,u){Le=!1,De=null,Me.apply($e,arguments)}function Be(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ue(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function He(e){if(Be(e)!==e)throw Error(a(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Be(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var o=i.alternate;if(null===o){if(null!==(r=i.return)){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return He(i),e;if(o===r)return He(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var l=!1,u=i.child;u;){if(u===n){l=!0,n=i,r=o;break}if(u===r){l=!0,r=i,n=o;break}u=u.sibling}if(!l){for(u=o.child;u;){if(u===n){l=!0,n=o,r=i;break}if(u===r){l=!0,r=o,n=i;break}u=u.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?Ke(e):null}function Ke(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ke(e);if(null!==t)return t;e=e.sibling}return null}var Ge=i.unstable_scheduleCallback,qe=i.unstable_cancelCallback,Qe=i.unstable_shouldYield,Ye=i.unstable_requestPaint,Xe=i.unstable_now,Je=i.unstable_getCurrentPriorityLevel,Ze=i.unstable_ImmediatePriority,et=i.unstable_UserBlockingPriority,tt=i.unstable_NormalPriority,nt=i.unstable_LowPriority,rt=i.unstable_IdlePriority,it=null,at=null,ot=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(lt(e)/ut|0)|0},lt=Math.log,ut=Math.LN2,st=64,ct=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,i=e.suspendedLanes,a=e.pingedLanes,o=268435455&n;if(0!==o){var l=o&~i;0!==l?r=ft(l):0!=(a&=o)&&(r=ft(a))}else 0!=(o=n&~i)?r=ft(o):0!==a&&(r=ft(a));if(0===r)return 0;if(0!==t&&t!==r&&!(t&i)&&((i=r&-r)>=(a=t&-t)||16===i&&4194240&a))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)i=1<<(n=31-ot(t)),r|=e[n],t&=~i;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function bt(){var e=st;return!(4194240&(st<<=1))&&(st=64),e}function vt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-ot(t)]=n}function gt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ot(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}var mt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var _t,St,kt,Ot,Pt,At=!1,xt=[],jt=null,Ct=null,Et=null,Tt=new Map,Nt=new Map,It=[],Rt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Mt(e,t){switch(e){case"focusin":case"focusout":jt=null;break;case"dragenter":case"dragleave":Ct=null;break;case"mouseover":case"mouseout":Et=null;break;case"pointerover":case"pointerout":Tt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Nt.delete(t.pointerId)}}function Lt(e,t,n,r,i,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},null!==t&&null!==(t=mi(t))&&St(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==i&&-1===t.indexOf(i)&&t.push(i),e)}function Dt(e){var t=gi(e.target);if(null!==t){var n=Be(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ue(n)))return e.blockedOn=t,void Pt(e.priority,(function(){kt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function zt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=mi(n))&&St(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function Vt(e,t,n){zt(e)&&n.delete(t)}function $t(){At=!1,null!==jt&&zt(jt)&&(jt=null),null!==Ct&&zt(Ct)&&(Ct=null),null!==Et&&zt(Et)&&(Et=null),Tt.forEach(Vt),Nt.forEach(Vt)}function Ft(e,t){e.blockedOn===t&&(e.blockedOn=null,At||(At=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,$t)))}function Bt(e){function t(t){return Ft(t,e)}if(0<xt.length){Ft(xt[0],e);for(var n=1;n<xt.length;n++){var r=xt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==jt&&Ft(jt,e),null!==Ct&&Ft(Ct,e),null!==Et&&Ft(Et,e),Tt.forEach(t),Nt.forEach(t),n=0;n<It.length;n++)(r=It[n]).blockedOn===e&&(r.blockedOn=null);for(;0<It.length&&null===(n=It[0]).blockedOn;)Dt(n),null===n.blockedOn&&It.shift()}var Ut=w.ReactCurrentBatchConfig,Ht=!0;function Wt(e,t,n,r){var i=mt,a=Ut.transition;Ut.transition=null;try{mt=1,Gt(e,t,n,r)}finally{mt=i,Ut.transition=a}}function Kt(e,t,n,r){var i=mt,a=Ut.transition;Ut.transition=null;try{mt=4,Gt(e,t,n,r)}finally{mt=i,Ut.transition=a}}function Gt(e,t,n,r){if(Ht){var i=Qt(e,t,n,r);if(null===i)Hr(e,t,r,qt,n),Mt(e,r);else if(function(e,t,n,r,i){switch(t){case"focusin":return jt=Lt(jt,e,t,n,r,i),!0;case"dragenter":return Ct=Lt(Ct,e,t,n,r,i),!0;case"mouseover":return Et=Lt(Et,e,t,n,r,i),!0;case"pointerover":var a=i.pointerId;return Tt.set(a,Lt(Tt.get(a)||null,e,t,n,r,i)),!0;case"gotpointercapture":return a=i.pointerId,Nt.set(a,Lt(Nt.get(a)||null,e,t,n,r,i)),!0}return!1}(i,e,t,n,r))r.stopPropagation();else if(Mt(e,r),4&t&&-1<Rt.indexOf(e)){for(;null!==i;){var a=mi(i);if(null!==a&&_t(a),null===(a=Qt(e,t,n,r))&&Hr(e,t,r,qt,n),a===i)break;i=a}null!==i&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var qt=null;function Qt(e,t,n,r){if(qt=null,null!==(e=gi(e=_e(r))))if(null===(t=Be(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=Ue(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return qt=e,null}function Yt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Ze:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,Jt=null,Zt=null;function en(){if(Zt)return Zt;var e,t,n=Jt,r=n.length,i="value"in Xt?Xt.value:Xt.textContent,a=i.length;for(e=0;e<r&&n[e]===i[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===i[a-t];t++);return Zt=i.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(null!=i.defaultPrevented?i.defaultPrevented:!1===i.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return D(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,un,sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(sn),fn=D({},sn,{view:0,detail:0}),dn=an(fn),pn=D({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Pn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(on=e.screenX-un.screenX,ln=e.screenY-un.screenY):ln=on=0,un=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),hn=an(pn),bn=an(D({},pn,{dataTransfer:0})),vn=an(D({},fn,{relatedTarget:0})),yn=an(D({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),gn=D({},sn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),mn=an(gn),wn=an(D({},sn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},kn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function On(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=kn[e])&&!!t[e]}function Pn(){return On}var An=D({},fn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Pn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),xn=an(An),jn=an(D({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Cn=an(D({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Pn})),En=an(D({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Tn=D({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Nn=an(Tn),In=[9,13,27,32],Rn=c&&"CompositionEvent"in window,Mn=null;c&&"documentMode"in document&&(Mn=document.documentMode);var Ln=c&&"TextEvent"in window&&!Mn,Dn=c&&(!Rn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),Vn=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Bn=!1,Un={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Un[e.type]:"textarea"===t}function Wn(e,t,n,r){Ae(r),0<(t=Kr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Kn=null,Gn=null;function qn(e){zr(e,0)}function Qn(e){if(G(wi(e)))return e}function Yn(e,t){if("change"===e)return t}var Xn=!1;if(c){var Jn;if(c){var Zn="oninput"in document;if(!Zn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Zn="function"==typeof er.oninput}Jn=Zn}else Jn=!1;Xn=Jn&&(!document.documentMode||9<document.documentMode)}function tr(){Kn&&(Kn.detachEvent("onpropertychange",nr),Gn=Kn=null)}function nr(e){if("value"===e.propertyName&&Qn(Gn)){var t=[];Wn(t,Gn,e,_e(e)),Te(qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Gn=n,(Kn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Gn)}function ar(e,t){if("click"===e)return Qn(t)}function or(e,t){if("input"===e||"change"===e)return Qn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function ur(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!f.call(t,i)||!lr(e[i],t[i]))return!1}return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=q((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var i=n.textContent.length,a=Math.min(r.start,i);r=void 0===r.end?a:Math.min(r.end,i),!e.extend&&a>r&&(i=r,r=a,a=i),i=cr(n,a);var o=cr(n,r);i&&o&&(1!==e.rangeCount||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&((t=t.createRange()).setStart(i.node,i.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var br=c&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,gr=null,mr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;mr||null==vr||vr!==q(r)||(r="selectionStart"in(r=vr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},gr&&ur(gr,r)||(gr=r,0<(r=Kr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}function _r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Sr={animationend:_r("Animation","AnimationEnd"),animationiteration:_r("Animation","AnimationIteration"),animationstart:_r("Animation","AnimationStart"),transitionend:_r("Transition","TransitionEnd")},kr={},Or={};function Pr(e){if(kr[e])return kr[e];if(!Sr[e])return e;var t,n=Sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Or)return kr[e]=n[t];return e}c&&(Or=document.createElement("div").style,"AnimationEvent"in window||(delete Sr.animationend.animation,delete Sr.animationiteration.animation,delete Sr.animationstart.animation),"TransitionEvent"in window||delete Sr.transitionend.transition);var Ar=Pr("animationend"),xr=Pr("animationiteration"),jr=Pr("animationstart"),Cr=Pr("transitionend"),Er=new Map,Tr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Nr(e,t){Er.set(e,t),u(t,[e])}for(var Ir=0;Ir<Tr.length;Ir++){var Rr=Tr[Ir];Nr(Rr.toLowerCase(),"on"+(Rr[0].toUpperCase()+Rr.slice(1)))}Nr(Ar,"onAnimationEnd"),Nr(xr,"onAnimationIteration"),Nr(jr,"onAnimationStart"),Nr("dblclick","onDoubleClick"),Nr("focusin","onFocus"),Nr("focusout","onBlur"),Nr(Cr,"onTransitionEnd"),s("onMouseEnter",["mouseout","mouseover"]),s("onMouseLeave",["mouseout","mouseover"]),s("onPointerEnter",["pointerout","pointerover"]),s("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Mr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Lr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Mr));function Dr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,i,o,l,u,s){if(Fe.apply(this,arguments),Le){if(!Le)throw Error(a(198));var c=De;Le=!1,De=null,ze||(ze=!0,Ve=c)}}(r,t,void 0,e),e.currentTarget=null}function zr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var l=r[o],u=l.instance,s=l.currentTarget;if(l=l.listener,u!==a&&i.isPropagationStopped())break e;Dr(i,l,s),a=u}else for(o=0;o<r.length;o++){if(u=(l=r[o]).instance,s=l.currentTarget,l=l.listener,u!==a&&i.isPropagationStopped())break e;Dr(i,l,s),a=u}}}if(ze)throw e=Ve,ze=!1,Ve=null,e}function Vr(e,t){var n=t[bi];void 0===n&&(n=t[bi]=new Set);var r=e+"__bubble";n.has(r)||(Ur(t,e,2,!1),n.add(r))}function $r(e,t,n){var r=0;t&&(r|=4),Ur(n,e,r,t)}var Fr="_reactListening"+Math.random().toString(36).slice(2);function Br(e){if(!e[Fr]){e[Fr]=!0,o.forEach((function(t){"selectionchange"!==t&&(Lr.has(t)||$r(t,!1,e),$r(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Fr]||(t[Fr]=!0,$r("selectionchange",!1,t))}}function Ur(e,t,n,r){switch(Yt(t)){case 1:var i=Wt;break;case 4:i=Kt;break;default:i=Gt}n=i.bind(null,t,n,e),i=void 0,!Ie||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(i=!0),r?void 0!==i?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):void 0!==i?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,i){var a=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var o=r.tag;if(3===o||4===o){var l=r.stateNode.containerInfo;if(l===i||8===l.nodeType&&l.parentNode===i)break;if(4===o)for(o=r.return;null!==o;){var u=o.tag;if((3===u||4===u)&&((u=o.stateNode.containerInfo)===i||8===u.nodeType&&u.parentNode===i))return;o=o.return}for(;null!==l;){if(null===(o=gi(l)))return;if(5===(u=o.tag)||6===u){r=a=o;continue e}l=l.parentNode}}r=r.return}Te((function(){var r=a,i=_e(n),o=[];e:{var l=Er.get(e);if(void 0!==l){var u=cn,s=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":u=xn;break;case"focusin":s="focus",u=vn;break;case"focusout":s="blur",u=vn;break;case"beforeblur":case"afterblur":u=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=Cn;break;case Ar:case xr:case jr:u=yn;break;case Cr:u=En;break;case"scroll":u=dn;break;case"wheel":u=Nn;break;case"copy":case"cut":case"paste":u=mn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=jn}var c=!!(4&t),f=!c&&"scroll"===e,d=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var b=(p=h).stateNode;if(5===p.tag&&null!==b&&(p=b,null!==d&&null!=(b=Ne(h,d))&&c.push(Wr(h,b,p))),f)break;h=h.return}0<c.length&&(l=new u(l,s,null,n,i),o.push({event:l,listeners:c}))}}if(!(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(s=n.relatedTarget||n.fromElement)||!gi(s)&&!s[hi])&&(u||l)&&(l=i.window===i?i:(l=i.ownerDocument)?l.defaultView||l.parentWindow:window,u?(u=r,null!==(s=(s=n.relatedTarget||n.toElement)?gi(s):null)&&(s!==(f=Be(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(u=null,s=r),u!==s)){if(c=hn,b="onMouseLeave",d="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=jn,b="onPointerLeave",d="onPointerEnter",h="pointer"),f=null==u?l:wi(u),p=null==s?l:wi(s),(l=new c(b,h+"leave",u,n,i)).target=f,l.relatedTarget=p,b=null,gi(i)===r&&((c=new c(d,h+"enter",s,n,i)).target=p,c.relatedTarget=f,b=c),f=b,u&&s)e:{for(d=s,h=0,p=c=u;p;p=Gr(p))h++;for(p=0,b=d;b;b=Gr(b))p++;for(;0<h-p;)c=Gr(c),h--;for(;0<p-h;)d=Gr(d),p--;for(;h--;){if(c===d||null!==d&&c===d.alternate)break e;c=Gr(c),d=Gr(d)}c=null}else c=null;null!==u&&qr(o,l,u,c,!1),null!==s&&null!==f&&qr(o,f,s,c,!0)}if("select"===(u=(l=r?wi(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===u&&"file"===l.type)var v=Yn;else if(Hn(l))if(Xn)v=or;else{v=ir;var y=rr}else(u=l.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(v=ar);switch(v&&(v=v(e,r))?Wn(o,v,n,i):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wi(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(vr=y,yr=r,gr=null);break;case"focusout":gr=yr=vr=null;break;case"mousedown":mr=!0;break;case"contextmenu":case"mouseup":case"dragend":mr=!1,wr(o,n,i);break;case"selectionchange":if(br)break;case"keydown":case"keyup":wr(o,n,i)}var g;if(Rn)e:{switch(e){case"compositionstart":var m="onCompositionStart";break e;case"compositionend":m="onCompositionEnd";break e;case"compositionupdate":m="onCompositionUpdate";break e}m=void 0}else Bn?$n(e,n)&&(m="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(m="onCompositionStart");m&&(Dn&&"ko"!==n.locale&&(Bn||"onCompositionStart"!==m?"onCompositionEnd"===m&&Bn&&(g=en()):(Jt="value"in(Xt=i)?Xt.value:Xt.textContent,Bn=!0)),0<(y=Kr(r,m)).length&&(m=new wn(m,e,null,n,i),o.push({event:m,listeners:y}),(g||null!==(g=Fn(n)))&&(m.data=g))),(g=Ln?function(e,t){switch(e){case"compositionend":return Fn(t);case"keypress":return 32!==t.which?null:(Vn=!0,zn);case"textInput":return(e=t.data)===zn&&Vn?null:e;default:return null}}(e,n):function(e,t){if(Bn)return"compositionend"===e||!Rn&&$n(e,t)?(e=en(),Zt=Jt=Xt=null,Bn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Dn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Kr(r,"onBeforeInput")).length&&(i=new wn("onBeforeInput","beforeinput",null,n,i),o.push({event:i,listeners:r}),i.data=g)}zr(o,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Kr(e,t){for(var n=t+"Capture",r=[];null!==e;){var i=e,a=i.stateNode;5===i.tag&&null!==a&&(i=a,null!=(a=Ne(e,n))&&r.unshift(Wr(e,a,i)),null!=(a=Ne(e,t))&&r.push(Wr(e,a,i))),e=e.return}return r}function Gr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function qr(e,t,n,r,i){for(var a=t._reactName,o=[];null!==n&&n!==r;){var l=n,u=l.alternate,s=l.stateNode;if(null!==u&&u===r)break;5===l.tag&&null!==s&&(l=s,i?null!=(u=Ne(n,a))&&o.unshift(Wr(n,u,l)):i||null!=(u=Ne(n,a))&&o.push(Wr(n,u,l))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}var Qr=/\r\n?/g,Yr=/\u0000|\uFFFD/g;function Xr(e){return("string"==typeof e?e:""+e).replace(Qr,"\n").replace(Yr,"")}function Jr(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(a(425))}function Zr(){}var ei=null,ti=null;function ni(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ri="function"==typeof setTimeout?setTimeout:void 0,ii="function"==typeof clearTimeout?clearTimeout:void 0,ai="function"==typeof Promise?Promise:void 0,oi="function"==typeof queueMicrotask?queueMicrotask:void 0!==ai?function(e){return ai.resolve(null).then(e).catch(li)}:ri;function li(e){setTimeout((function(){throw e}))}function ui(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&8===i.nodeType)if("/$"===(n=i.data)){if(0===r)return e.removeChild(i),void Bt(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=i}while(n);Bt(t)}function si(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ci(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var fi=Math.random().toString(36).slice(2),di="__reactFiber$"+fi,pi="__reactProps$"+fi,hi="__reactContainer$"+fi,bi="__reactEvents$"+fi,vi="__reactListeners$"+fi,yi="__reactHandles$"+fi;function gi(e){var t=e[di];if(t)return t;for(var n=e.parentNode;n;){if(t=n[hi]||n[di]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ci(e);null!==e;){if(n=e[di])return n;e=ci(e)}return t}n=(e=n).parentNode}return null}function mi(e){return!(e=e[di]||e[hi])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wi(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function _i(e){return e[pi]||null}var Si=[],ki=-1;function Oi(e){return{current:e}}function Pi(e){0>ki||(e.current=Si[ki],Si[ki]=null,ki--)}function Ai(e,t){ki++,Si[ki]=e.current,e.current=t}var xi={},ji=Oi(xi),Ci=Oi(!1),Ei=xi;function Ti(e,t){var n=e.type.contextTypes;if(!n)return xi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,a={};for(i in n)a[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Ni(e){return null!=e.childContextTypes}function Ii(){Pi(Ci),Pi(ji)}function Ri(e,t,n){if(ji.current!==xi)throw Error(a(168));Ai(ji,t),Ai(Ci,n)}function Mi(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in t))throw Error(a(108,U(e)||"Unknown",i));return D({},n,r)}function Li(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||xi,Ei=ji.current,Ai(ji,e),Ai(Ci,Ci.current),!0}function Di(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Mi(e,t,Ei),r.__reactInternalMemoizedMergedChildContext=e,Pi(Ci),Pi(ji),Ai(ji,e)):Pi(Ci),Ai(Ci,n)}var zi=null,Vi=!1,$i=!1;function Fi(e){null===zi?zi=[e]:zi.push(e)}function Bi(){if(!$i&&null!==zi){$i=!0;var e=0,t=mt;try{var n=zi;for(mt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}zi=null,Vi=!1}catch(t){throw null!==zi&&(zi=zi.slice(e+1)),Ge(Ze,Bi),t}finally{mt=t,$i=!1}}return null}var Ui=[],Hi=0,Wi=null,Ki=0,Gi=[],qi=0,Qi=null,Yi=1,Xi="";function Ji(e,t){Ui[Hi++]=Ki,Ui[Hi++]=Wi,Wi=e,Ki=t}function Zi(e,t,n){Gi[qi++]=Yi,Gi[qi++]=Xi,Gi[qi++]=Qi,Qi=e;var r=Yi;e=Xi;var i=32-ot(r)-1;r&=~(1<<i),n+=1;var a=32-ot(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,Yi=1<<32-ot(t)+i|n<<i|r,Xi=a+e}else Yi=1<<a|n<<i|r,Xi=e}function ea(e){null!==e.return&&(Ji(e,1),Zi(e,1,0))}function ta(e){for(;e===Wi;)Wi=Ui[--Hi],Ui[Hi]=null,Ki=Ui[--Hi],Ui[Hi]=null;for(;e===Qi;)Qi=Gi[--qi],Gi[qi]=null,Xi=Gi[--qi],Gi[qi]=null,Yi=Gi[--qi],Gi[qi]=null}var na=null,ra=null,ia=!1,aa=null;function oa(e,t){var n=Ts(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function la(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,na=e,ra=si(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,na=e,ra=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Qi?{id:Yi,overflow:Xi}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Ts(18,null,null,0)).stateNode=t,n.return=e,e.child=n,na=e,ra=null,!0);default:return!1}}function ua(e){return!(!(1&e.mode)||128&e.flags)}function sa(e){if(ia){var t=ra;if(t){var n=t;if(!la(e,t)){if(ua(e))throw Error(a(418));t=si(n.nextSibling);var r=na;t&&la(e,t)?oa(r,n):(e.flags=-4097&e.flags|2,ia=!1,na=e)}}else{if(ua(e))throw Error(a(418));e.flags=-4097&e.flags|2,ia=!1,na=e}}}function ca(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;na=e}function fa(e){if(e!==na)return!1;if(!ia)return ca(e),ia=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!ni(e.type,e.memoizedProps)),t&&(t=ra)){if(ua(e))throw da(),Error(a(418));for(;t;)oa(e,t),t=si(t.nextSibling)}if(ca(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ra=si(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ra=null}}else ra=na?si(e.stateNode.nextSibling):null;return!0}function da(){for(var e=ra;e;)e=si(e.nextSibling)}function pa(){ra=na=null,ia=!1}function ha(e){null===aa?aa=[e]:aa.push(e)}var ba=w.ReactCurrentBatchConfig;function va(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var i=r,o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:(t=function(e){var t=i.refs;null===e?delete t[o]:t[o]=e},t._stringRef=o,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function ya(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function ga(e){return(0,e._init)(e._payload)}function ma(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t){return(e=Is(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=Ds(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function s(e,t,n,r){var a=n.type;return a===k?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===N&&ga(a)===t.type)?((r=i(t,n.props)).ref=va(e,t,n),r.return=e,r):((r=Rs(n.type,n.key,n.props,null,e.mode,r)).ref=va(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zs(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function f(e,t,n,r,a){return null===t||7!==t.tag?((t=Ms(n,e.mode,r,a)).return=e,t):((t=i(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Ds(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case _:return(n=Rs(t.type,t.key,t.props,null,e.mode,n)).ref=va(e,null,t),n.return=e,n;case S:return(t=zs(t,e.mode,n)).return=e,t;case N:return d(e,(0,t._init)(t._payload),n)}if(te(t)||M(t))return(t=Ms(t,e.mode,n,null)).return=e,t;ya(e,t)}return null}function p(e,t,n,r){var i=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==i?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case _:return n.key===i?s(e,t,n,r):null;case S:return n.key===i?c(e,t,n,r):null;case N:return p(e,t,(i=n._init)(n._payload),r)}if(te(n)||M(n))return null!==i?null:f(e,t,n,r,null);ya(e,n)}return null}function h(e,t,n,r,i){if("string"==typeof r&&""!==r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,i);if("object"==typeof r&&null!==r){switch(r.$$typeof){case _:return s(t,e=e.get(null===r.key?n:r.key)||null,r,i);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,i);case N:return h(e,t,n,(0,r._init)(r._payload),i)}if(te(r)||M(r))return f(t,e=e.get(n)||null,r,i,null);ya(t,r)}return null}function b(i,a,l,u){for(var s=null,c=null,f=a,b=a=0,v=null;null!==f&&b<l.length;b++){f.index>b?(v=f,f=null):v=f.sibling;var y=p(i,f,l[b],u);if(null===y){null===f&&(f=v);break}e&&f&&null===y.alternate&&t(i,f),a=o(y,a,b),null===c?s=y:c.sibling=y,c=y,f=v}if(b===l.length)return n(i,f),ia&&Ji(i,b),s;if(null===f){for(;b<l.length;b++)null!==(f=d(i,l[b],u))&&(a=o(f,a,b),null===c?s=f:c.sibling=f,c=f);return ia&&Ji(i,b),s}for(f=r(i,f);b<l.length;b++)null!==(v=h(f,i,b,l[b],u))&&(e&&null!==v.alternate&&f.delete(null===v.key?b:v.key),a=o(v,a,b),null===c?s=v:c.sibling=v,c=v);return e&&f.forEach((function(e){return t(i,e)})),ia&&Ji(i,b),s}function v(i,l,u,s){var c=M(u);if("function"!=typeof c)throw Error(a(150));if(null==(u=c.call(u)))throw Error(a(151));for(var f=c=null,b=l,v=l=0,y=null,g=u.next();null!==b&&!g.done;v++,g=u.next()){b.index>v?(y=b,b=null):y=b.sibling;var m=p(i,b,g.value,s);if(null===m){null===b&&(b=y);break}e&&b&&null===m.alternate&&t(i,b),l=o(m,l,v),null===f?c=m:f.sibling=m,f=m,b=y}if(g.done)return n(i,b),ia&&Ji(i,v),c;if(null===b){for(;!g.done;v++,g=u.next())null!==(g=d(i,g.value,s))&&(l=o(g,l,v),null===f?c=g:f.sibling=g,f=g);return ia&&Ji(i,v),c}for(b=r(i,b);!g.done;v++,g=u.next())null!==(g=h(b,i,v,g.value,s))&&(e&&null!==g.alternate&&b.delete(null===g.key?v:g.key),l=o(g,l,v),null===f?c=g:f.sibling=g,f=g);return e&&b.forEach((function(e){return t(i,e)})),ia&&Ji(i,v),c}return function e(r,a,o,u){if("object"==typeof o&&null!==o&&o.type===k&&null===o.key&&(o=o.props.children),"object"==typeof o&&null!==o){switch(o.$$typeof){case _:e:{for(var s=o.key,c=a;null!==c;){if(c.key===s){if((s=o.type)===k){if(7===c.tag){n(r,c.sibling),(a=i(c,o.props.children)).return=r,r=a;break e}}else if(c.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===N&&ga(s)===c.type){n(r,c.sibling),(a=i(c,o.props)).ref=va(r,c,o),a.return=r,r=a;break e}n(r,c);break}t(r,c),c=c.sibling}o.type===k?((a=Ms(o.props.children,r.mode,u,o.key)).return=r,r=a):((u=Rs(o.type,o.key,o.props,null,r.mode,u)).ref=va(r,a,o),u.return=r,r=u)}return l(r);case S:e:{for(c=o.key;null!==a;){if(a.key===c){if(4===a.tag&&a.stateNode.containerInfo===o.containerInfo&&a.stateNode.implementation===o.implementation){n(r,a.sibling),(a=i(a,o.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=zs(o,r.mode,u)).return=r,r=a}return l(r);case N:return e(r,a,(c=o._init)(o._payload),u)}if(te(o))return b(r,a,o,u);if(M(o))return v(r,a,o,u);ya(r,o)}return"string"==typeof o&&""!==o||"number"==typeof o?(o=""+o,null!==a&&6===a.tag?(n(r,a.sibling),(a=i(a,o)).return=r,r=a):(n(r,a),(a=Ds(o,r.mode,u)).return=r,r=a),l(r)):n(r,a)}}var wa=ma(!0),_a=ma(!1),Sa=Oi(null),ka=null,Oa=null,Pa=null;function Aa(){Pa=Oa=ka=null}function xa(e){var t=Sa.current;Pi(Sa),e._currentValue=t}function ja(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Ca(e,t){ka=e,Pa=Oa=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(ml=!0),e.firstContext=null)}function Ea(e){var t=e._currentValue;if(Pa!==e)if(e={context:e,memoizedValue:t,next:null},null===Oa){if(null===ka)throw Error(a(308));Oa=e,ka.dependencies={lanes:0,firstContext:e}}else Oa=Oa.next=e;return t}var Ta=null;function Na(e){null===Ta?Ta=[e]:Ta.push(e)}function Ia(e,t,n,r){var i=t.interleaved;return null===i?(n.next=n,Na(t)):(n.next=i.next,i.next=n),t.interleaved=n,Ra(e,r)}function Ra(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ma=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Da(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function za(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Va(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&ju){var i=r.pending;return null===i?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Ra(e,n)}return null===(i=r.interleaved)?(t.next=t,Na(r)):(t.next=i.next,i.next=t),r.interleaved=t,Ra(e,n)}function $a(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,gt(e,n)}}function Fa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var i=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?i=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?i=a=t:a=a.next=t}else i=a=t;return n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ba(e,t,n,r){var i=e.updateQueue;Ma=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,l=i.shared.pending;if(null!==l){i.shared.pending=null;var u=l,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(l=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===l?c.firstBaseUpdate=s:l.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=i.baseState;for(o=0,c=s=u=null,l=a;;){var d=l.lane,p=l.eventTime;if((r&d)===d){null!==c&&(c=c.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var h=e,b=l;switch(d=t,p=n,b.tag){case 1:if("function"==typeof(h=b.payload)){f=h.call(p,f,d);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(d="function"==typeof(h=b.payload)?h.call(p,f,d):h))break e;f=D({},f,d);break e;case 2:Ma=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(d=i.effects)?i.effects=[l]:d.push(l))}else p={eventTime:p,lane:d,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(s=c=p,u=f):c=c.next=p,o|=d;if(null===(l=l.next)){if(null===(l=i.shared.pending))break;l=(d=l).next,d.next=null,i.lastBaseUpdate=d,i.shared.pending=null}}if(null===c&&(u=f),i.baseState=u,i.firstBaseUpdate=s,i.lastBaseUpdate=c,null!==(t=i.shared.interleaved)){i=t;do{o|=i.lane,i=i.next}while(i!==t)}else null===a&&(i.shared.lanes=0);Lu|=o,e.lanes=o,e.memoizedState=f}}function Ua(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(null!==i){if(r.callback=null,r=n,"function"!=typeof i)throw Error(a(191,i));i.call(r)}}}var Ha={},Wa=Oi(Ha),Ka=Oi(Ha),Ga=Oi(Ha);function qa(e){if(e===Ha)throw Error(a(174));return e}function Qa(e,t){switch(Ai(Ga,t),Ai(Ka,e),Ai(Wa,Ha),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ue(null,"");break;default:t=ue(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Pi(Wa),Ai(Wa,t)}function Ya(){Pi(Wa),Pi(Ka),Pi(Ga)}function Xa(e){qa(Ga.current);var t=qa(Wa.current),n=ue(t,e.type);t!==n&&(Ai(Ka,e),Ai(Wa,n))}function Ja(e){Ka.current===e&&(Pi(Wa),Pi(Ka))}var Za=Oi(0);function eo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var to=[];function no(){for(var e=0;e<to.length;e++)to[e]._workInProgressVersionPrimary=null;to.length=0}var ro=w.ReactCurrentDispatcher,io=w.ReactCurrentBatchConfig,ao=0,oo=null,lo=null,uo=null,so=!1,co=!1,fo=0,po=0;function ho(){throw Error(a(321))}function bo(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function vo(e,t,n,r,i,o){if(ao=o,oo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ro.current=null===e||null===e.memoizedState?Zo:el,e=n(r,i),co){o=0;do{if(co=!1,fo=0,25<=o)throw Error(a(301));o+=1,uo=lo=null,t.updateQueue=null,ro.current=tl,e=n(r,i)}while(co)}if(ro.current=Jo,t=null!==lo&&null!==lo.next,ao=0,uo=lo=oo=null,so=!1,t)throw Error(a(300));return e}function yo(){var e=0!==fo;return fo=0,e}function go(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===uo?oo.memoizedState=uo=e:uo=uo.next=e,uo}function mo(){if(null===lo){var e=oo.alternate;e=null!==e?e.memoizedState:null}else e=lo.next;var t=null===uo?oo.memoizedState:uo.next;if(null!==t)uo=t,lo=e;else{if(null===e)throw Error(a(310));e={memoizedState:(lo=e).memoizedState,baseState:lo.baseState,baseQueue:lo.baseQueue,queue:lo.queue,next:null},null===uo?oo.memoizedState=uo=e:uo=uo.next=e}return uo}function wo(e,t){return"function"==typeof t?t(e):t}function _o(e){var t=mo(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=lo,i=r.baseQueue,o=n.pending;if(null!==o){if(null!==i){var l=i.next;i.next=o.next,o.next=l}r.baseQueue=i=o,n.pending=null}if(null!==i){o=i.next,r=r.baseState;var u=l=null,s=null,c=o;do{var f=c.lane;if((ao&f)===f)null!==s&&(s=s.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var d={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===s?(u=s=d,l=r):s=s.next=d,oo.lanes|=f,Lu|=f}c=c.next}while(null!==c&&c!==o);null===s?l=r:s.next=u,lr(r,t.memoizedState)||(ml=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=s,n.lastRenderedState=r}if(null!==(e=n.interleaved)){i=e;do{o=i.lane,oo.lanes|=o,Lu|=o,i=i.next}while(i!==e)}else null===i&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function So(e){var t=mo(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,o=t.memoizedState;if(null!==i){n.pending=null;var l=i=i.next;do{o=e(o,l.action),l=l.next}while(l!==i);lr(o,t.memoizedState)||(ml=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function ko(){}function Oo(e,t){var n=oo,r=mo(),i=t(),o=!lr(r.memoizedState,i);if(o&&(r.memoizedState=i,ml=!0),r=r.queue,Lo(xo.bind(null,n,r,e),[e]),r.getSnapshot!==t||o||null!==uo&&1&uo.memoizedState.tag){if(n.flags|=2048,To(9,Ao.bind(null,n,r,i,t),void 0,null),null===Cu)throw Error(a(349));30&ao||Po(n,t,i)}return i}function Po(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=oo.updateQueue)?(t={lastEffect:null,stores:null},oo.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ao(e,t,n,r){t.value=n,t.getSnapshot=r,jo(t)&&Co(e)}function xo(e,t,n){return n((function(){jo(t)&&Co(e)}))}function jo(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(e){return!0}}function Co(e){var t=Ra(e,1);null!==t&&ns(t,e,1,-1)}function Eo(e){var t=go();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wo,lastRenderedState:e},t.queue=e,e=e.dispatch=qo.bind(null,oo,e),[t.memoizedState,e]}function To(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=oo.updateQueue)?(t={lastEffect:null,stores:null},oo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function No(){return mo().memoizedState}function Io(e,t,n,r){var i=go();oo.flags|=e,i.memoizedState=To(1|t,n,void 0,void 0===r?null:r)}function Ro(e,t,n,r){var i=mo();r=void 0===r?null:r;var a=void 0;if(null!==lo){var o=lo.memoizedState;if(a=o.destroy,null!==r&&bo(r,o.deps))return void(i.memoizedState=To(t,n,a,r))}oo.flags|=e,i.memoizedState=To(1|t,n,a,r)}function Mo(e,t){return Io(8390656,8,e,t)}function Lo(e,t){return Ro(2048,8,e,t)}function Do(e,t){return Ro(4,2,e,t)}function zo(e,t){return Ro(4,4,e,t)}function Vo(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function $o(e,t,n){return n=null!=n?n.concat([e]):null,Ro(4,4,Vo.bind(null,t,e),n)}function Fo(){}function Bo(e,t){var n=mo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&bo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Uo(e,t){var n=mo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&bo(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ho(e,t,n){return 21&ao?(lr(n,t)||(n=bt(),oo.lanes|=n,Lu|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,ml=!0),e.memoizedState=n)}function Wo(e,t){var n=mt;mt=0!==n&&4>n?n:4,e(!0);var r=io.transition;io.transition={};try{e(!1),t()}finally{mt=n,io.transition=r}}function Ko(){return mo().memoizedState}function Go(e,t,n){var r=ts(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Qo(e)?Yo(t,n):null!==(n=Ia(e,t,n,r))&&(ns(n,e,r,es()),Xo(n,t,r))}function qo(e,t,n){var r=ts(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Qo(e))Yo(t,i);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var o=t.lastRenderedState,l=a(o,n);if(i.hasEagerState=!0,i.eagerState=l,lr(l,o)){var u=t.interleaved;return null===u?(i.next=i,Na(t)):(i.next=u.next,u.next=i),void(t.interleaved=i)}}catch(e){}null!==(n=Ia(e,t,i,r))&&(ns(n,e,r,i=es()),Xo(n,t,r))}}function Qo(e){var t=e.alternate;return e===oo||null!==t&&t===oo}function Yo(e,t){co=so=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Xo(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,gt(e,n)}}var Jo={readContext:Ea,useCallback:ho,useContext:ho,useEffect:ho,useImperativeHandle:ho,useInsertionEffect:ho,useLayoutEffect:ho,useMemo:ho,useReducer:ho,useRef:ho,useState:ho,useDebugValue:ho,useDeferredValue:ho,useTransition:ho,useMutableSource:ho,useSyncExternalStore:ho,useId:ho,unstable_isNewReconciler:!1},Zo={readContext:Ea,useCallback:function(e,t){return go().memoizedState=[e,void 0===t?null:t],e},useContext:Ea,useEffect:Mo,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Io(4194308,4,Vo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Io(4194308,4,e,t)},useInsertionEffect:function(e,t){return Io(4,2,e,t)},useMemo:function(e,t){var n=go();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=go();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Go.bind(null,oo,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},go().memoizedState=e},useState:Eo,useDebugValue:Fo,useDeferredValue:function(e){return go().memoizedState=e},useTransition:function(){var e=Eo(!1),t=e[0];return e=Wo.bind(null,e[1]),go().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=oo,i=go();if(ia){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===Cu)throw Error(a(349));30&ao||Po(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Mo(xo.bind(null,r,o,e),[e]),r.flags|=2048,To(9,Ao.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=go(),t=Cu.identifierPrefix;if(ia){var n=Xi;t=":"+t+"R"+(n=(Yi&~(1<<32-ot(Yi)-1)).toString(32)+n),0<(n=fo++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=po++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:Ea,useCallback:Bo,useContext:Ea,useEffect:Lo,useImperativeHandle:$o,useInsertionEffect:Do,useLayoutEffect:zo,useMemo:Uo,useReducer:_o,useRef:No,useState:function(){return _o(wo)},useDebugValue:Fo,useDeferredValue:function(e){return Ho(mo(),lo.memoizedState,e)},useTransition:function(){return[_o(wo)[0],mo().memoizedState]},useMutableSource:ko,useSyncExternalStore:Oo,useId:Ko,unstable_isNewReconciler:!1},tl={readContext:Ea,useCallback:Bo,useContext:Ea,useEffect:Lo,useImperativeHandle:$o,useInsertionEffect:Do,useLayoutEffect:zo,useMemo:Uo,useReducer:So,useRef:No,useState:function(){return So(wo)},useDebugValue:Fo,useDeferredValue:function(e){var t=mo();return null===lo?t.memoizedState=e:Ho(t,lo.memoizedState,e)},useTransition:function(){return[So(wo)[0],mo().memoizedState]},useMutableSource:ko,useSyncExternalStore:Oo,useId:Ko,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=D({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:D({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var il={isMounted:function(e){return!!(e=e._reactInternals)&&Be(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=es(),i=ts(e),a=za(r,i);a.payload=t,null!=n&&(a.callback=n),null!==(t=Va(e,a,i))&&(ns(t,e,i,r),$a(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=es(),i=ts(e),a=za(r,i);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=Va(e,a,i))&&(ns(t,e,i,r),$a(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=es(),r=ts(e),i=za(n,r);i.tag=2,null!=t&&(i.callback=t),null!==(t=Va(e,i,r))&&(ns(t,e,r,n),$a(t,e,r))}};function al(e,t,n,r,i,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!(t.prototype&&t.prototype.isPureReactComponent&&ur(n,r)&&ur(i,a))}function ol(e,t,n){var r=!1,i=xi,a=t.contextType;return"object"==typeof a&&null!==a?a=Ea(a):(i=Ni(t)?Ei:ji.current,a=(r=null!=(r=t.contextTypes))?Ti(e,i):xi),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=il,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=a),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&il.enqueueReplaceState(t,t.state,null)}function ul(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs={},La(e);var a=t.contextType;"object"==typeof a&&null!==a?i.context=Ea(a):(a=Ni(t)?Ei:ji.current,i.context=Ti(e,a)),i.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(rl(e,t,a,n),i.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof i.getSnapshotBeforeUpdate||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||(t=i.state,"function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&il.enqueueReplaceState(i,i.state,null),Ba(e,n,i,r),i.state=e.memoizedState),"function"==typeof i.componentDidMount&&(e.flags|=4194308)}function sl(e,t){try{var n="",r=t;do{n+=F(r),r=r.return}while(r);var i=n}catch(e){i="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:i,digest:null}}function cl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function fl(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var dl="function"==typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=za(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hu||(Hu=!0,Wu=r),fl(0,t)},n}function hl(e,t,n){(n=za(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var i=t.value;n.payload=function(){return r(i)},n.callback=function(){fl(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){fl(0,t),"function"!=typeof r&&(null===Ku?Ku=new Set([this]):Ku.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function bl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new dl;var i=new Set;r.set(t,i)}else void 0===(i=r.get(t))&&(i=new Set,r.set(t,i));i.has(n)||(i.add(n),e=Ps.bind(null,e,t,n),t.then(e,e))}function vl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,i){return 1&e.mode?(e.flags|=65536,e.lanes=i,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=za(-1,1)).tag=2,Va(n,t,1))),n.lanes|=1),e)}var gl=w.ReactCurrentOwner,ml=!1;function wl(e,t,n,r){t.child=null===e?_a(t,null,n,r):wa(t,e.child,n,r)}function _l(e,t,n,r,i){n=n.render;var a=t.ref;return Ca(t,i),r=vo(e,t,n,r,a,i),n=yo(),null===e||ml?(ia&&n&&ea(t),t.flags|=1,wl(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Hl(e,t,i))}function Sl(e,t,n,r,i){if(null===e){var a=n.type;return"function"!=typeof a||Ns(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Rs(n.type,null,r,t,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,kl(e,t,a,r,i))}if(a=e.child,!(e.lanes&i)){var o=a.memoizedProps;if((n=null!==(n=n.compare)?n:ur)(o,r)&&e.ref===t.ref)return Hl(e,t,i)}return t.flags|=1,(e=Is(a,r)).ref=t.ref,e.return=t,t.child=e}function kl(e,t,n,r,i){if(null!==e){var a=e.memoizedProps;if(ur(a,r)&&e.ref===t.ref){if(ml=!1,t.pendingProps=r=a,!(e.lanes&i))return t.lanes=e.lanes,Hl(e,t,i);131072&e.flags&&(ml=!0)}}return Al(e,t,n,r,i)}function Ol(e,t,n){var r=t.pendingProps,i=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ai(Iu,Nu),Nu|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Ai(Iu,Nu),Nu|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ai(Iu,Nu),Nu|=n;else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Ai(Iu,Nu),Nu|=r;return wl(e,t,i,n),t.child}function Pl(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Al(e,t,n,r,i){var a=Ni(n)?Ei:ji.current;return a=Ti(t,a),Ca(t,i),n=vo(e,t,n,r,a,i),r=yo(),null===e||ml?(ia&&r&&ea(t),t.flags|=1,wl(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Hl(e,t,i))}function xl(e,t,n,r,i){if(Ni(n)){var a=!0;Li(t)}else a=!1;if(Ca(t,i),null===t.stateNode)Ul(e,t),ol(t,n,r),ul(t,n,r,i),r=!0;else if(null===e){var o=t.stateNode,l=t.memoizedProps;o.props=l;var u=o.context,s=n.contextType;s="object"==typeof s&&null!==s?Ea(s):Ti(t,s=Ni(n)?Ei:ji.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof o.getSnapshotBeforeUpdate;f||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(l!==r||u!==s)&&ll(t,o,r,s),Ma=!1;var d=t.memoizedState;o.state=d,Ba(t,r,o,i),u=t.memoizedState,l!==r||d!==u||Ci.current||Ma?("function"==typeof c&&(rl(t,n,c,r),u=t.memoizedState),(l=Ma||al(t,n,l,r,d,u,s))?(f||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4194308)):("function"==typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),o.props=r,o.state=u,o.context=s,r=l):("function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,Da(e,t),l=t.memoizedProps,s=t.type===t.elementType?l:nl(t.type,l),o.props=s,f=t.pendingProps,d=o.context,u="object"==typeof(u=n.contextType)&&null!==u?Ea(u):Ti(t,u=Ni(n)?Ei:ji.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(l!==f||d!==u)&&ll(t,o,r,u),Ma=!1,d=t.memoizedState,o.state=d,Ba(t,r,o,i);var h=t.memoizedState;l!==f||d!==h||Ci.current||Ma?("function"==typeof p&&(rl(t,n,p,r),h=t.memoizedState),(s=Ma||al(t,n,s,r,d,h,u)||!1)?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,h,u),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,h,u)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof o.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),o.props=r,o.state=h,o.context=u,r=s):("function"!=typeof o.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return jl(e,t,n,r,a,i)}function jl(e,t,n,r,i,a){Pl(e,t);var o=!!(128&t.flags);if(!r&&!o)return i&&Di(t,n,!1),Hl(e,t,a);r=t.stateNode,gl.current=t;var l=o&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&o?(t.child=wa(t,e.child,null,a),t.child=wa(t,null,l,a)):wl(e,t,l,a),t.memoizedState=r.state,i&&Di(t,n,!0),t.child}function Cl(e){var t=e.stateNode;t.pendingContext?Ri(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ri(0,t.context,!1),Qa(e,t.containerInfo)}function El(e,t,n,r,i){return pa(),ha(i),t.flags|=256,wl(e,t,n,r),t.child}var Tl,Nl,Il,Rl,Ml={dehydrated:null,treeContext:null,retryLane:0};function Ll(e){return{baseLanes:e,cachePool:null,transitions:null}}function Dl(e,t,n){var r,i=t.pendingProps,o=Za.current,l=!1,u=!!(128&t.flags);if((r=u)||(r=(null===e||null!==e.memoizedState)&&!!(2&o)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(o|=1),Ai(Za,1&o),null===e)return sa(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(u=i.children,e=i.fallback,l?(i=t.mode,l=t.child,u={mode:"hidden",children:u},1&i||null===l?l=Ls(u,i,0,null):(l.childLanes=0,l.pendingProps=u),e=Ms(e,i,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Ll(n),t.memoizedState=Ml,e):zl(t,u));if(null!==(o=e.memoizedState)&&null!==(r=o.dehydrated))return function(e,t,n,r,i,o,l){if(n)return 256&t.flags?(t.flags&=-257,Vl(e,t,l,r=cl(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(o=r.fallback,i=t.mode,r=Ls({mode:"visible",children:r.children},i,0,null),(o=Ms(o,i,l,null)).flags|=2,r.return=t,o.return=t,r.sibling=o,t.child=r,1&t.mode&&wa(t,e.child,null,l),t.child.memoizedState=Ll(l),t.memoizedState=Ml,o);if(!(1&t.mode))return Vl(e,t,l,null);if("$!"===i.data){if(r=i.nextSibling&&i.nextSibling.dataset)var u=r.dgst;return r=u,Vl(e,t,l,r=cl(o=Error(a(419)),r,void 0))}if(u=!!(l&e.childLanes),ml||u){if(null!==(r=Cu)){switch(l&-l){case 4:i=2;break;case 16:i=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}0!==(i=i&(r.suspendedLanes|l)?0:i)&&i!==o.retryLane&&(o.retryLane=i,Ra(e,i),ns(r,e,i,-1))}return bs(),Vl(e,t,l,r=cl(Error(a(421))))}return"$?"===i.data?(t.flags|=128,t.child=e.child,t=xs.bind(null,e),i._reactRetry=t,null):(e=o.treeContext,ra=si(i.nextSibling),na=t,ia=!0,aa=null,null!==e&&(Gi[qi++]=Yi,Gi[qi++]=Xi,Gi[qi++]=Qi,Yi=e.id,Xi=e.overflow,Qi=t),(t=zl(t,r.children)).flags|=4096,t)}(e,t,u,i,r,o,n);if(l){l=i.fallback,u=t.mode,r=(o=e.child).sibling;var s={mode:"hidden",children:i.children};return 1&u||t.child===o?(i=Is(o,s)).subtreeFlags=14680064&o.subtreeFlags:((i=t.child).childLanes=0,i.pendingProps=s,t.deletions=null),null!==r?l=Is(r,l):(l=Ms(l,u,n,null)).flags|=2,l.return=t,i.return=t,i.sibling=l,t.child=i,i=l,l=t.child,u=null===(u=e.child.memoizedState)?Ll(n):{baseLanes:u.baseLanes|n,cachePool:null,transitions:u.transitions},l.memoizedState=u,l.childLanes=e.childLanes&~n,t.memoizedState=Ml,i}return e=(l=e.child).sibling,i=Is(l,{mode:"visible",children:i.children}),!(1&t.mode)&&(i.lanes=n),i.return=t,i.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=i,t.memoizedState=null,i}function zl(e,t){return(t=Ls({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Vl(e,t,n,r){return null!==r&&ha(r),wa(t,e.child,null,n),(e=zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $l(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),ja(e.return,t,n)}function Fl(e,t,n,r,i){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=i)}function Bl(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;if(wl(e,t,r.children,n),2&(r=Za.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&$l(e,n,t);else if(19===e.tag)$l(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ai(Za,r),1&t.mode)switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===eo(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Fl(t,!1,i,n,a);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===eo(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Fl(t,!0,n,null,a);break;case"together":Fl(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function Ul(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Lu|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Is(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Is(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Wl(e,t){if(!ia)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Kl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=14680064&i.subtreeFlags,r|=14680064&i.flags,i.return=e,i=i.sibling;else for(i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Gl(e,t,n){var r=t.pendingProps;switch(ta(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Kl(t),null;case 1:case 17:return Ni(t.type)&&Ii(),Kl(t),null;case 3:return r=t.stateNode,Ya(),Pi(Ci),Pi(ji),no(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==aa&&(os(aa),aa=null))),Nl(e,t),Kl(t),null;case 5:Ja(t);var i=qa(Ga.current);if(n=t.type,null!==e&&null!=t.stateNode)Il(e,t,n,r,i),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Kl(t),null}if(e=qa(Wa.current),fa(t)){r=t.stateNode,n=t.type;var o=t.memoizedProps;switch(r[di]=t,r[pi]=o,e=!!(1&t.mode),n){case"dialog":Vr("cancel",r),Vr("close",r);break;case"iframe":case"object":case"embed":Vr("load",r);break;case"video":case"audio":for(i=0;i<Mr.length;i++)Vr(Mr[i],r);break;case"source":Vr("error",r);break;case"img":case"image":case"link":Vr("error",r),Vr("load",r);break;case"details":Vr("toggle",r);break;case"input":Y(r,o),Vr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!o.multiple},Vr("invalid",r);break;case"textarea":ie(r,o),Vr("invalid",r)}for(var u in ge(n,o),i=null,o)if(o.hasOwnProperty(u)){var s=o[u];"children"===u?"string"==typeof s?r.textContent!==s&&(!0!==o.suppressHydrationWarning&&Jr(r.textContent,s,e),i=["children",s]):"number"==typeof s&&r.textContent!==""+s&&(!0!==o.suppressHydrationWarning&&Jr(r.textContent,s,e),i=["children",""+s]):l.hasOwnProperty(u)&&null!=s&&"onScroll"===u&&Vr("scroll",r)}switch(n){case"input":K(r),Z(r,o,!0);break;case"textarea":K(r),oe(r);break;case"select":case"option":break;default:"function"==typeof o.onClick&&(r.onclick=Zr)}r=i,t.updateQueue=r,null!==r&&(t.flags|=4)}else{u=9===i.nodeType?i:i.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[di]=t,e[pi]=r,Tl(e,t,!1,!1),t.stateNode=e;e:{switch(u=me(n,r),n){case"dialog":Vr("cancel",e),Vr("close",e),i=r;break;case"iframe":case"object":case"embed":Vr("load",e),i=r;break;case"video":case"audio":for(i=0;i<Mr.length;i++)Vr(Mr[i],e);i=r;break;case"source":Vr("error",e),i=r;break;case"img":case"image":case"link":Vr("error",e),Vr("load",e),i=r;break;case"details":Vr("toggle",e),i=r;break;case"input":Y(e,r),i=Q(e,r),Vr("invalid",e);break;case"option":default:i=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},i=D({},r,{value:void 0}),Vr("invalid",e);break;case"textarea":ie(e,r),i=re(e,r),Vr("invalid",e)}for(o in ge(n,i),s=i)if(s.hasOwnProperty(o)){var c=s[o];"style"===o?ve(e,c):"dangerouslySetInnerHTML"===o?null!=(c=c?c.__html:void 0)&&fe(e,c):"children"===o?"string"==typeof c?("textarea"!==n||""!==c)&&de(e,c):"number"==typeof c&&de(e,""+c):"suppressContentEditableWarning"!==o&&"suppressHydrationWarning"!==o&&"autoFocus"!==o&&(l.hasOwnProperty(o)?null!=c&&"onScroll"===o&&Vr("scroll",e):null!=c&&m(e,o,c,u))}switch(n){case"input":K(e),Z(e,r,!1);break;case"textarea":K(e),oe(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(o=r.value)?ne(e,!!r.multiple,o,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof i.onClick&&(e.onclick=Zr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Kl(t),null;case 6:if(e&&null!=t.stateNode)Rl(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=qa(Ga.current),qa(Wa.current),fa(t)){if(r=t.stateNode,n=t.memoizedProps,r[di]=t,(o=r.nodeValue!==n)&&null!==(e=na))switch(e.tag){case 3:Jr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Jr(r.nodeValue,n,!!(1&e.mode))}o&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[di]=t,t.stateNode=r}return Kl(t),null;case 13:if(Pi(Za),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ia&&null!==ra&&1&t.mode&&!(128&t.flags))da(),pa(),t.flags|=98560,o=!1;else if(o=fa(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(a(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(a(317));o[di]=t}else pa(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Kl(t),o=!1}else null!==aa&&(os(aa),aa=null),o=!0;if(!o)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&Za.current?0===Ru&&(Ru=3):bs())),null!==t.updateQueue&&(t.flags|=4),Kl(t),null);case 4:return Ya(),Nl(e,t),null===e&&Br(t.stateNode.containerInfo),Kl(t),null;case 10:return xa(t.type._context),Kl(t),null;case 19:if(Pi(Za),null===(o=t.memoizedState))return Kl(t),null;if(r=!!(128&t.flags),null===(u=o.rendering))if(r)Wl(o,!1);else{if(0!==Ru||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(u=eo(e))){for(t.flags|=128,Wl(o,!1),null!==(r=u.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(o=n).flags&=14680066,null===(u=o.alternate)?(o.childLanes=0,o.lanes=e,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=u.childLanes,o.lanes=u.lanes,o.child=u.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=u.memoizedProps,o.memoizedState=u.memoizedState,o.updateQueue=u.updateQueue,o.type=u.type,e=u.dependencies,o.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ai(Za,1&Za.current|2),t.child}e=e.sibling}null!==o.tail&&Xe()>Bu&&(t.flags|=128,r=!0,Wl(o,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=eo(u))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Wl(o,!0),null===o.tail&&"hidden"===o.tailMode&&!u.alternate&&!ia)return Kl(t),null}else 2*Xe()-o.renderingStartTime>Bu&&1073741824!==n&&(t.flags|=128,r=!0,Wl(o,!1),t.lanes=4194304);o.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=o.last)?n.sibling=u:t.child=u,o.last=u)}return null!==o.tail?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Xe(),t.sibling=null,n=Za.current,Ai(Za,r?1&n|2:1&n),t):(Kl(t),null);case 22:case 23:return fs(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Nu)&&(Kl(t),6&t.subtreeFlags&&(t.flags|=8192)):Kl(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function ql(e,t){switch(ta(t),t.tag){case 1:return Ni(t.type)&&Ii(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Ya(),Pi(Ci),Pi(ji),no(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Ja(t),null;case 13:if(Pi(Za),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));pa()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Pi(Za),null;case 4:return Ya(),null;case 10:return xa(t.type._context),null;case 22:case 23:return fs(),null;default:return null}}Tl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Nl=function(){},Il=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,qa(Wa.current);var a,o=null;switch(n){case"input":i=Q(e,i),r=Q(e,r),o=[];break;case"select":i=D({},i,{value:void 0}),r=D({},r,{value:void 0}),o=[];break;case"textarea":i=re(e,i),r=re(e,r),o=[];break;default:"function"!=typeof i.onClick&&"function"==typeof r.onClick&&(e.onclick=Zr)}for(c in ge(n,r),n=null,i)if(!r.hasOwnProperty(c)&&i.hasOwnProperty(c)&&null!=i[c])if("style"===c){var u=i[c];for(a in u)u.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?o||(o=[]):(o=o||[]).push(c,null));for(c in r){var s=r[c];if(u=null!=i?i[c]:void 0,r.hasOwnProperty(c)&&s!==u&&(null!=s||null!=u))if("style"===c)if(u){for(a in u)!u.hasOwnProperty(a)||s&&s.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in s)s.hasOwnProperty(a)&&u[a]!==s[a]&&(n||(n={}),n[a]=s[a])}else n||(o||(o=[]),o.push(c,n)),n=s;else"dangerouslySetInnerHTML"===c?(s=s?s.__html:void 0,u=u?u.__html:void 0,null!=s&&u!==s&&(o=o||[]).push(c,s)):"children"===c?"string"!=typeof s&&"number"!=typeof s||(o=o||[]).push(c,""+s):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=s&&"onScroll"===c&&Vr("scroll",e),o||u===s||(o=[])):(o=o||[]).push(c,s))}n&&(o=o||[]).push("style",n);var c=o;(t.updateQueue=c)&&(t.flags|=4)}},Rl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ql=!1,Yl=!1,Xl="function"==typeof WeakSet?WeakSet:Set,Jl=null;function Zl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Os(e,t,n)}else n.current=null}function eu(e,t,n){try{n()}catch(n){Os(e,t,n)}}var tu=!1;function nu(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var i=r=r.next;do{if((i.tag&e)===e){var a=i.destroy;i.destroy=void 0,void 0!==a&&eu(t,n,a)}i=i.next}while(i!==r)}}function ru(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function iu(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function au(e){var t=e.alternate;null!==t&&(e.alternate=null,au(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[di],delete t[pi],delete t[bi],delete t[vi],delete t[yi]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ou(e){return 5===e.tag||3===e.tag||4===e.tag}function lu(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||ou(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function uu(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Zr));else if(4!==r&&null!==(e=e.child))for(uu(e,t,n),e=e.sibling;null!==e;)uu(e,t,n),e=e.sibling}function su(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(su(e,t,n),e=e.sibling;null!==e;)su(e,t,n),e=e.sibling}var cu=null,fu=!1;function du(e,t,n){for(n=n.child;null!==n;)pu(e,t,n),n=n.sibling}function pu(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(it,n)}catch(e){}switch(n.tag){case 5:Yl||Zl(n,t);case 6:var r=cu,i=fu;cu=null,du(e,t,n),fu=i,null!==(cu=r)&&(fu?(e=cu,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cu.removeChild(n.stateNode));break;case 18:null!==cu&&(fu?(e=cu,n=n.stateNode,8===e.nodeType?ui(e.parentNode,n):1===e.nodeType&&ui(e,n),Bt(e)):ui(cu,n.stateNode));break;case 4:r=cu,i=fu,cu=n.stateNode.containerInfo,fu=!0,du(e,t,n),cu=r,fu=i;break;case 0:case 11:case 14:case 15:if(!Yl&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){i=r=r.next;do{var a=i,o=a.destroy;a=a.tag,void 0!==o&&(2&a||4&a)&&eu(n,t,o),i=i.next}while(i!==r)}du(e,t,n);break;case 1:if(!Yl&&(Zl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Os(n,t,e)}du(e,t,n);break;case 21:du(e,t,n);break;case 22:1&n.mode?(Yl=(r=Yl)||null!==n.memoizedState,du(e,t,n),Yl=r):du(e,t,n);break;default:du(e,t,n)}}function hu(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xl),t.forEach((function(t){var r=js.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function bu(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var i=n[r];try{var o=e,l=t,u=l;e:for(;null!==u;){switch(u.tag){case 5:cu=u.stateNode,fu=!1;break e;case 3:case 4:cu=u.stateNode.containerInfo,fu=!0;break e}u=u.return}if(null===cu)throw Error(a(160));pu(o,l,i),cu=null,fu=!1;var s=i.alternate;null!==s&&(s.return=null),i.return=null}catch(e){Os(i,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)vu(t,e),t=t.sibling}function vu(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(bu(t,e),yu(e),4&r){try{nu(3,e,e.return),ru(3,e)}catch(t){Os(e,e.return,t)}try{nu(5,e,e.return)}catch(t){Os(e,e.return,t)}}break;case 1:bu(t,e),yu(e),512&r&&null!==n&&Zl(n,n.return);break;case 5:if(bu(t,e),yu(e),512&r&&null!==n&&Zl(n,n.return),32&e.flags){var i=e.stateNode;try{de(i,"")}catch(t){Os(e,e.return,t)}}if(4&r&&null!=(i=e.stateNode)){var o=e.memoizedProps,l=null!==n?n.memoizedProps:o,u=e.type,s=e.updateQueue;if(e.updateQueue=null,null!==s)try{"input"===u&&"radio"===o.type&&null!=o.name&&X(i,o),me(u,l);var c=me(u,o);for(l=0;l<s.length;l+=2){var f=s[l],d=s[l+1];"style"===f?ve(i,d):"dangerouslySetInnerHTML"===f?fe(i,d):"children"===f?de(i,d):m(i,f,d,c)}switch(u){case"input":J(i,o);break;case"textarea":ae(i,o);break;case"select":var p=i._wrapperState.wasMultiple;i._wrapperState.wasMultiple=!!o.multiple;var h=o.value;null!=h?ne(i,!!o.multiple,h,!1):p!==!!o.multiple&&(null!=o.defaultValue?ne(i,!!o.multiple,o.defaultValue,!0):ne(i,!!o.multiple,o.multiple?[]:"",!1))}i[pi]=o}catch(t){Os(e,e.return,t)}}break;case 6:if(bu(t,e),yu(e),4&r){if(null===e.stateNode)throw Error(a(162));i=e.stateNode,o=e.memoizedProps;try{i.nodeValue=o}catch(t){Os(e,e.return,t)}}break;case 3:if(bu(t,e),yu(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Bt(t.containerInfo)}catch(t){Os(e,e.return,t)}break;case 4:default:bu(t,e),yu(e);break;case 13:bu(t,e),yu(e),8192&(i=e.child).flags&&(o=null!==i.memoizedState,i.stateNode.isHidden=o,!o||null!==i.alternate&&null!==i.alternate.memoizedState||(Fu=Xe())),4&r&&hu(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Yl=(c=Yl)||f,bu(t,e),Yl=c):bu(t,e),yu(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!f&&1&e.mode)for(Jl=e,f=e.child;null!==f;){for(d=Jl=f;null!==Jl;){switch(h=(p=Jl).child,p.tag){case 0:case 11:case 14:case 15:nu(4,p,p.return);break;case 1:Zl(p,p.return);var b=p.stateNode;if("function"==typeof b.componentWillUnmount){r=p,n=p.return;try{t=r,b.props=t.memoizedProps,b.state=t.memoizedState,b.componentWillUnmount()}catch(e){Os(r,n,e)}}break;case 5:Zl(p,p.return);break;case 22:if(null!==p.memoizedState){_u(d);continue}}null!==h?(h.return=p,Jl=h):_u(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{i=d.stateNode,c?"function"==typeof(o=i.style).setProperty?o.setProperty("display","none","important"):o.display="none":(u=d.stateNode,l=null!=(s=d.memoizedProps.style)&&s.hasOwnProperty("display")?s.display:null,u.style.display=be("display",l))}catch(t){Os(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=c?"":d.memoizedProps}catch(t){Os(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&&(f=null),d=d.return}f===d&&(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:bu(t,e),yu(e),4&r&&hu(e);case 21:}}function yu(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(ou(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var i=r.stateNode;32&r.flags&&(de(i,""),r.flags&=-33),su(e,lu(e),i);break;case 3:case 4:var o=r.stateNode.containerInfo;uu(e,lu(e),o);break;default:throw Error(a(161))}}catch(t){Os(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function gu(e,t,n){Jl=e,mu(e,t,n)}function mu(e,t,n){for(var r=!!(1&e.mode);null!==Jl;){var i=Jl,a=i.child;if(22===i.tag&&r){var o=null!==i.memoizedState||Ql;if(!o){var l=i.alternate,u=null!==l&&null!==l.memoizedState||Yl;l=Ql;var s=Yl;if(Ql=o,(Yl=u)&&!s)for(Jl=i;null!==Jl;)u=(o=Jl).child,22===o.tag&&null!==o.memoizedState?Su(i):null!==u?(u.return=o,Jl=u):Su(i);for(;null!==a;)Jl=a,mu(a,t,n),a=a.sibling;Jl=i,Ql=l,Yl=s}wu(e)}else 8772&i.subtreeFlags&&null!==a?(a.return=i,Jl=a):wu(e)}}function wu(e){for(;null!==Jl;){var t=Jl;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Yl||ru(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Yl)if(null===n)r.componentDidMount();else{var i=t.elementType===t.type?n.memoizedProps:nl(t.type,n.memoizedProps);r.componentDidUpdate(i,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var o=t.updateQueue;null!==o&&Ua(t,o,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ua(t,l,n)}break;case 5:var u=t.stateNode;if(null===n&&4&t.flags){n=u;var s=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":s.autoFocus&&n.focus();break;case"img":s.src&&(n.src=s.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&&Bt(d)}}}break;default:throw Error(a(163))}Yl||512&t.flags&&iu(t)}catch(e){Os(t,t.return,e)}}if(t===e){Jl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Jl=n;break}Jl=t.return}}function _u(e){for(;null!==Jl;){var t=Jl;if(t===e){Jl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Jl=n;break}Jl=t.return}}function Su(e){for(;null!==Jl;){var t=Jl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ru(4,t)}catch(e){Os(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var i=t.return;try{r.componentDidMount()}catch(e){Os(t,i,e)}}var a=t.return;try{iu(t)}catch(e){Os(t,a,e)}break;case 5:var o=t.return;try{iu(t)}catch(e){Os(t,o,e)}}}catch(e){Os(t,t.return,e)}if(t===e){Jl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Jl=l;break}Jl=t.return}}var ku,Ou=Math.ceil,Pu=w.ReactCurrentDispatcher,Au=w.ReactCurrentOwner,xu=w.ReactCurrentBatchConfig,ju=0,Cu=null,Eu=null,Tu=0,Nu=0,Iu=Oi(0),Ru=0,Mu=null,Lu=0,Du=0,zu=0,Vu=null,$u=null,Fu=0,Bu=1/0,Uu=null,Hu=!1,Wu=null,Ku=null,Gu=!1,qu=null,Qu=0,Yu=0,Xu=null,Ju=-1,Zu=0;function es(){return 6&ju?Xe():-1!==Ju?Ju:Ju=Xe()}function ts(e){return 1&e.mode?2&ju&&0!==Tu?Tu&-Tu:null!==ba.transition?(0===Zu&&(Zu=bt()),Zu):0!==(e=mt)?e:e=void 0===(e=window.event)?16:Yt(e.type):1}function ns(e,t,n,r){if(50<Yu)throw Yu=0,Xu=null,Error(a(185));yt(e,n,r),2&ju&&e===Cu||(e===Cu&&(!(2&ju)&&(Du|=n),4===Ru&&ls(e,Tu)),rs(e,r),1===n&&0===ju&&!(1&t.mode)&&(Bu=Xe()+500,Vi&&Bi()))}function rs(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes;0<a;){var o=31-ot(a),l=1<<o,u=i[o];-1===u?l&n&&!(l&r)||(i[o]=pt(l,t)):u<=t&&(e.expiredLanes|=l),a&=~l}}(e,t);var r=dt(e,e===Cu?Tu:0);if(0===r)null!==n&&qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&qe(n),1===t)0===e.tag?function(e){Vi=!0,Fi(e)}(us.bind(null,e)):Fi(us.bind(null,e)),oi((function(){!(6&ju)&&Bi()})),n=null;else{switch(wt(r)){case 1:n=Ze;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Cs(n,is.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function is(e,t){if(Ju=-1,Zu=0,6&ju)throw Error(a(327));var n=e.callbackNode;if(Ss()&&e.callbackNode!==n)return null;var r=dt(e,e===Cu?Tu:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=vs(e,r);else{t=r;var i=ju;ju|=2;var o=hs();for(Cu===e&&Tu===t||(Uu=null,Bu=Xe()+500,ds(e,t));;)try{gs();break}catch(t){ps(e,t)}Aa(),Pu.current=o,ju=i,null!==Eu?t=0:(Cu=null,Tu=0,t=Ru)}if(0!==t){if(2===t&&0!==(i=ht(e))&&(r=i,t=as(e,i)),1===t)throw n=Mu,ds(e,0),ls(e,r),rs(e,Xe()),n;if(6===t)ls(e,r);else{if(i=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!lr(a(),i))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(i)||(t=vs(e,r),2===t&&(o=ht(e),0!==o&&(r=o,t=as(e,o))),1!==t)))throw n=Mu,ds(e,0),ls(e,r),rs(e,Xe()),n;switch(e.finishedWork=i,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:_s(e,$u,Uu);break;case 3:if(ls(e,r),(130023424&r)===r&&10<(t=Fu+500-Xe())){if(0!==dt(e,0))break;if(((i=e.suspendedLanes)&r)!==r){es(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=ri(_s.bind(null,e,$u,Uu),t);break}_s(e,$u,Uu);break;case 4:if(ls(e,r),(4194240&r)===r)break;for(t=e.eventTimes,i=-1;0<r;){var l=31-ot(r);o=1<<l,(l=t[l])>i&&(i=l),r&=~o}if(r=i,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ou(r/1960))-r)){e.timeoutHandle=ri(_s.bind(null,e,$u,Uu),r);break}_s(e,$u,Uu);break;default:throw Error(a(329))}}}return rs(e,Xe()),e.callbackNode===n?is.bind(null,e):null}function as(e,t){var n=Vu;return e.current.memoizedState.isDehydrated&&(ds(e,t).flags|=256),2!==(e=vs(e,t))&&(t=$u,$u=n,null!==t&&os(t)),e}function os(e){null===$u?$u=e:$u.push.apply($u,e)}function ls(e,t){for(t&=~zu,t&=~Du,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-ot(t),r=1<<n;e[n]=-1,t&=~r}}function us(e){if(6&ju)throw Error(a(327));Ss();var t=dt(e,0);if(!(1&t))return rs(e,Xe()),null;var n=vs(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=as(e,r))}if(1===n)throw n=Mu,ds(e,0),ls(e,t),rs(e,Xe()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,_s(e,$u,Uu),rs(e,Xe()),null}function ss(e,t){var n=ju;ju|=1;try{return e(t)}finally{0===(ju=n)&&(Bu=Xe()+500,Vi&&Bi())}}function cs(e){null!==qu&&0===qu.tag&&!(6&ju)&&Ss();var t=ju;ju|=1;var n=xu.transition,r=mt;try{if(xu.transition=null,mt=1,e)return e()}finally{mt=r,xu.transition=n,!(6&(ju=t))&&Bi()}}function fs(){Nu=Iu.current,Pi(Iu)}function ds(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,ii(n)),null!==Eu)for(n=Eu.return;null!==n;){var r=n;switch(ta(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ii();break;case 3:Ya(),Pi(Ci),Pi(ji),no();break;case 5:Ja(r);break;case 4:Ya();break;case 13:case 19:Pi(Za);break;case 10:xa(r.type._context);break;case 22:case 23:fs()}n=n.return}if(Cu=e,Eu=e=Is(e.current,null),Tu=Nu=t,Ru=0,Mu=null,zu=Du=Lu=0,$u=Vu=null,null!==Ta){for(t=0;t<Ta.length;t++)if(null!==(r=(n=Ta[t]).interleaved)){n.interleaved=null;var i=r.next,a=n.pending;if(null!==a){var o=a.next;a.next=i,r.next=o}n.pending=r}Ta=null}return e}function ps(e,t){for(;;){var n=Eu;try{if(Aa(),ro.current=Jo,so){for(var r=oo.memoizedState;null!==r;){var i=r.queue;null!==i&&(i.pending=null),r=r.next}so=!1}if(ao=0,uo=lo=oo=null,co=!1,fo=0,Au.current=null,null===n||null===n.return){Ru=1,Mu=t,Eu=null;break}e:{var o=e,l=n.return,u=n,s=t;if(t=Tu,u.flags|=32768,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s,f=u,d=f.tag;if(!(1&f.mode||0!==d&&11!==d&&15!==d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var h=vl(l);if(null!==h){h.flags&=-257,yl(h,l,u,0,t),1&h.mode&&bl(o,c,t),s=c;var b=(t=h).updateQueue;if(null===b){var v=new Set;v.add(s),t.updateQueue=v}else b.add(s);break e}if(!(1&t)){bl(o,c,t),bs();break e}s=Error(a(426))}else if(ia&&1&u.mode){var y=vl(l);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yl(y,l,u,0,t),ha(sl(s,u));break e}}o=s=sl(s,u),4!==Ru&&(Ru=2),null===Vu?Vu=[o]:Vu.push(o),o=l;do{switch(o.tag){case 3:o.flags|=65536,t&=-t,o.lanes|=t,Fa(o,pl(0,s,t));break e;case 1:u=s;var g=o.type,m=o.stateNode;if(!(128&o.flags||"function"!=typeof g.getDerivedStateFromError&&(null===m||"function"!=typeof m.componentDidCatch||null!==Ku&&Ku.has(m)))){o.flags|=65536,t&=-t,o.lanes|=t,Fa(o,hl(o,u,t));break e}}o=o.return}while(null!==o)}ws(n)}catch(e){t=e,Eu===n&&null!==n&&(Eu=n=n.return);continue}break}}function hs(){var e=Pu.current;return Pu.current=Jo,null===e?Jo:e}function bs(){0!==Ru&&3!==Ru&&2!==Ru||(Ru=4),null===Cu||!(268435455&Lu)&&!(268435455&Du)||ls(Cu,Tu)}function vs(e,t){var n=ju;ju|=2;var r=hs();for(Cu===e&&Tu===t||(Uu=null,ds(e,t));;)try{ys();break}catch(t){ps(e,t)}if(Aa(),ju=n,Pu.current=r,null!==Eu)throw Error(a(261));return Cu=null,Tu=0,Ru}function ys(){for(;null!==Eu;)ms(Eu)}function gs(){for(;null!==Eu&&!Qe();)ms(Eu)}function ms(e){var t=ku(e.alternate,e,Nu);e.memoizedProps=e.pendingProps,null===t?ws(e):Eu=t,Au.current=null}function ws(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=ql(n,t)))return n.flags&=32767,void(Eu=n);if(null===e)return Ru=6,void(Eu=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Gl(n,t,Nu)))return void(Eu=n);if(null!==(t=t.sibling))return void(Eu=t);Eu=t=e}while(null!==t);0===Ru&&(Ru=5)}function _s(e,t,n){var r=mt,i=xu.transition;try{xu.transition=null,mt=1,function(e,t,n,r){do{Ss()}while(null!==qu);if(6&ju)throw Error(a(327));n=e.finishedWork;var i=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var o=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var i=31-ot(n),a=1<<i;t[i]=0,r[i]=-1,e[i]=-1,n&=~a}}(e,o),e===Cu&&(Eu=Cu=null,Tu=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Gu||(Gu=!0,Cs(tt,(function(){return Ss(),null}))),o=!!(15990&n.flags),15990&n.subtreeFlags||o){o=xu.transition,xu.transition=null;var l=mt;mt=1;var u=ju;ju|=4,Au.current=null,function(e,t){if(ei=Ht,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch(e){n=null;break e}var l=0,u=-1,s=-1,c=0,f=0,d=e,p=null;t:for(;;){for(var h;d!==n||0!==i&&3!==d.nodeType||(u=l+i),d!==o||0!==r&&3!==d.nodeType||(s=l+r),3===d.nodeType&&(l+=d.nodeValue.length),null!==(h=d.firstChild);)p=d,d=h;for(;;){if(d===e)break t;if(p===n&&++c===i&&(u=l),p===o&&++f===r&&(s=l),null!==(h=d.nextSibling))break;p=(d=p).parentNode}d=h}n=-1===u||-1===s?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ti={focusedElem:e,selectionRange:n},Ht=!1,Jl=t;null!==Jl;)if(e=(t=Jl).child,1028&t.subtreeFlags&&null!==e)e.return=t,Jl=e;else for(;null!==Jl;){t=Jl;try{var b=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==b){var v=b.memoizedProps,y=b.memoizedState,g=t.stateNode,m=g.getSnapshotBeforeUpdate(t.elementType===t.type?v:nl(t.type,v),y);g.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(e){Os(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Jl=e;break}Jl=t.return}b=tu,tu=!1}(e,n),vu(n,e),hr(ti),Ht=!!ei,ti=ei=null,e.current=n,gu(n,e,i),Ye(),ju=u,mt=l,xu.transition=o}else e.current=n;if(Gu&&(Gu=!1,qu=e,Qu=i),0===(o=e.pendingLanes)&&(Ku=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(it,e,void 0,!(128&~e.current.flags))}catch(e){}}(n.stateNode),rs(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((i=t[n]).value,{componentStack:i.stack,digest:i.digest});if(Hu)throw Hu=!1,e=Wu,Wu=null,e;!!(1&Qu)&&0!==e.tag&&Ss(),1&(o=e.pendingLanes)?e===Xu?Yu++:(Yu=0,Xu=e):Yu=0,Bi()}(e,t,n,r)}finally{xu.transition=i,mt=r}return null}function Ss(){if(null!==qu){var e=wt(Qu),t=xu.transition,n=mt;try{if(xu.transition=null,mt=16>e?16:e,null===qu)var r=!1;else{if(e=qu,qu=null,Qu=0,6&ju)throw Error(a(331));var i=ju;for(ju|=4,Jl=e.current;null!==Jl;){var o=Jl,l=o.child;if(16&Jl.flags){var u=o.deletions;if(null!==u){for(var s=0;s<u.length;s++){var c=u[s];for(Jl=c;null!==Jl;){var f=Jl;switch(f.tag){case 0:case 11:case 15:nu(8,f,o)}var d=f.child;if(null!==d)d.return=f,Jl=d;else for(;null!==Jl;){var p=(f=Jl).sibling,h=f.return;if(au(f),f===c){Jl=null;break}if(null!==p){p.return=h,Jl=p;break}Jl=h}}}var b=o.alternate;if(null!==b){var v=b.child;if(null!==v){b.child=null;do{var y=v.sibling;v.sibling=null,v=y}while(null!==v)}}Jl=o}}if(2064&o.subtreeFlags&&null!==l)l.return=o,Jl=l;else e:for(;null!==Jl;){if(2048&(o=Jl).flags)switch(o.tag){case 0:case 11:case 15:nu(9,o,o.return)}var g=o.sibling;if(null!==g){g.return=o.return,Jl=g;break e}Jl=o.return}}var m=e.current;for(Jl=m;null!==Jl;){var w=(l=Jl).child;if(2064&l.subtreeFlags&&null!==w)w.return=l,Jl=w;else e:for(l=m;null!==Jl;){if(2048&(u=Jl).flags)try{switch(u.tag){case 0:case 11:case 15:ru(9,u)}}catch(e){Os(u,u.return,e)}if(u===l){Jl=null;break e}var _=u.sibling;if(null!==_){_.return=u.return,Jl=_;break e}Jl=u.return}}if(ju=i,Bi(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(it,e)}catch(e){}r=!0}return r}finally{mt=n,xu.transition=t}}return!1}function ks(e,t,n){e=Va(e,t=pl(0,t=sl(n,t),1),1),t=es(),null!==e&&(yt(e,1,t),rs(e,t))}function Os(e,t,n){if(3===e.tag)ks(e,e,n);else for(;null!==t;){if(3===t.tag){ks(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ku||!Ku.has(r))){t=Va(t,e=hl(t,e=sl(n,e),1),1),e=es(),null!==t&&(yt(t,1,e),rs(t,e));break}}t=t.return}}function Ps(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=es(),e.pingedLanes|=e.suspendedLanes&n,Cu===e&&(Tu&n)===n&&(4===Ru||3===Ru&&(130023424&Tu)===Tu&&500>Xe()-Fu?ds(e,0):zu|=n),rs(e,t)}function As(e,t){0===t&&(1&e.mode?(t=ct,!(130023424&(ct<<=1))&&(ct=4194304)):t=1);var n=es();null!==(e=Ra(e,t))&&(yt(e,t,n),rs(e,n))}function xs(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),As(e,n)}function js(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;null!==i&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),As(e,n)}function Cs(e,t){return Ge(e,t)}function Es(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ts(e,t,n,r){return new Es(e,t,n,r)}function Ns(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Is(e,t){var n=e.alternate;return null===n?((n=Ts(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Rs(e,t,n,r,i,o){var l=2;if(r=e,"function"==typeof e)Ns(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case k:return Ms(n.children,i,o,t);case O:l=8,i|=8;break;case P:return(e=Ts(12,n,t,2|i)).elementType=P,e.lanes=o,e;case C:return(e=Ts(13,n,t,i)).elementType=C,e.lanes=o,e;case E:return(e=Ts(19,n,t,i)).elementType=E,e.lanes=o,e;case I:return Ls(n,i,o,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case A:l=10;break e;case x:l=9;break e;case j:l=11;break e;case T:l=14;break e;case N:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Ts(l,n,t,i)).elementType=e,t.type=r,t.lanes=o,t}function Ms(e,t,n,r){return(e=Ts(7,e,r,t)).lanes=n,e}function Ls(e,t,n,r){return(e=Ts(22,e,r,t)).elementType=I,e.lanes=n,e.stateNode={isHidden:!1},e}function Ds(e,t,n){return(e=Ts(6,e,null,t)).lanes=n,e}function zs(e,t,n){return(t=Ts(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Vs(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vt(0),this.expirationTimes=vt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vt(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function $s(e,t,n,r,i,a,o,l,u){return e=new Vs(e,t,n,l,u),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Ts(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},La(a),e}function Fs(e){if(!e)return xi;e:{if(Be(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ni(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Ni(n))return Mi(e,n,t)}return t}function Bs(e,t,n,r,i,a,o,l,u){return(e=$s(n,r,!0,e,0,a,0,l,u)).context=Fs(null),n=e.current,(a=za(r=es(),i=ts(n))).callback=null!=t?t:null,Va(n,a,i),e.current.lanes=i,yt(e,i,r),rs(e,r),e}function Us(e,t,n,r){var i=t.current,a=es(),o=ts(i);return n=Fs(n),null===t.context?t.context=n:t.pendingContext=n,(t=za(a,o)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Va(i,t,o))&&(ns(e,i,o,a),$a(e,i,o)),o}function Hs(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Ws(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Ks(e,t){Ws(e,t),(e=e.alternate)&&Ws(e,t)}ku=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Ci.current)ml=!0;else{if(!(e.lanes&n||128&t.flags))return ml=!1,function(e,t,n){switch(t.tag){case 3:Cl(t),pa();break;case 5:Xa(t);break;case 1:Ni(t.type)&&Li(t);break;case 4:Qa(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,i=t.memoizedProps.value;Ai(Sa,r._currentValue),r._currentValue=i;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ai(Za,1&Za.current),t.flags|=128,null):n&t.child.childLanes?Dl(e,t,n):(Ai(Za,1&Za.current),null!==(e=Hl(e,t,n))?e.sibling:null);Ai(Za,1&Za.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Bl(e,t,n);t.flags|=128}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null,i.lastEffect=null),Ai(Za,Za.current),r)break;return null;case 22:case 23:return t.lanes=0,Ol(e,t,n)}return Hl(e,t,n)}(e,t,n);ml=!!(131072&e.flags)}else ml=!1,ia&&1048576&t.flags&&Zi(t,Ki,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ul(e,t),e=t.pendingProps;var i=Ti(t,ji.current);Ca(t,n),i=vo(null,t,r,e,i,n);var o=yo();return t.flags|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ni(r)?(o=!0,Li(t)):o=!1,t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null,La(t),i.updater=il,t.stateNode=i,i._reactInternals=t,ul(t,r,e,n),t=jl(null,t,r,!0,o,n)):(t.tag=0,ia&&o&&ea(t),wl(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ul(e,t),e=t.pendingProps,r=(i=r._init)(r._payload),t.type=r,i=t.tag=function(e){if("function"==typeof e)return Ns(e)?1:0;if(null!=e){if((e=e.$$typeof)===j)return 11;if(e===T)return 14}return 2}(r),e=nl(r,e),i){case 0:t=Al(null,t,r,e,n);break e;case 1:t=xl(null,t,r,e,n);break e;case 11:t=_l(null,t,r,e,n);break e;case 14:t=Sl(null,t,r,nl(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,Al(e,t,r,i=t.elementType===r?i:nl(r,i),n);case 1:return r=t.type,i=t.pendingProps,xl(e,t,r,i=t.elementType===r?i:nl(r,i),n);case 3:e:{if(Cl(t),null===e)throw Error(a(387));r=t.pendingProps,i=(o=t.memoizedState).element,Da(e,t),Ba(t,r,null,n);var l=t.memoizedState;if(r=l.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=o,t.memoizedState=o,256&t.flags){t=El(e,t,r,n,i=sl(Error(a(423)),t));break e}if(r!==i){t=El(e,t,r,n,i=sl(Error(a(424)),t));break e}for(ra=si(t.stateNode.containerInfo.firstChild),na=t,ia=!0,aa=null,n=_a(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(pa(),r===i){t=Hl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return Xa(t),null===e&&sa(t),r=t.type,i=t.pendingProps,o=null!==e?e.memoizedProps:null,l=i.children,ni(r,i)?l=null:null!==o&&ni(r,o)&&(t.flags|=32),Pl(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&sa(t),null;case 13:return Dl(e,t,n);case 4:return Qa(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=wa(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,_l(e,t,r,i=t.elementType===r?i:nl(r,i),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,l=i.value,Ai(Sa,r._currentValue),r._currentValue=l,null!==o)if(lr(o.value,l)){if(o.children===i.children&&!Ci.current){t=Hl(e,t,n);break e}}else for(null!==(o=t.child)&&(o.return=t);null!==o;){var u=o.dependencies;if(null!==u){l=o.child;for(var s=u.firstContext;null!==s;){if(s.context===r){if(1===o.tag){(s=za(-1,n&-n)).tag=2;var c=o.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?s.next=s:(s.next=f.next,f.next=s),c.pending=s}}o.lanes|=n,null!==(s=o.alternate)&&(s.lanes|=n),ja(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(10===o.tag)l=o.type===t.type?null:o.child;else if(18===o.tag){if(null===(l=o.return))throw Error(a(341));l.lanes|=n,null!==(u=l.alternate)&&(u.lanes|=n),ja(l,n,t),l=o.sibling}else l=o.child;if(null!==l)l.return=o;else for(l=o;null!==l;){if(l===t){l=null;break}if(null!==(o=l.sibling)){o.return=l.return,l=o;break}l=l.return}o=l}wl(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Ca(t,n),r=r(i=Ea(i)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return i=nl(r=t.type,t.pendingProps),Sl(e,t,r,i=nl(r.type,i),n);case 15:return kl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:nl(r,i),Ul(e,t),t.tag=1,Ni(r)?(e=!0,Li(t)):e=!1,Ca(t,n),ol(t,r,i),ul(t,r,i,n),jl(null,t,r,!0,e,n);case 19:return Bl(e,t,n);case 22:return Ol(e,t,n)}throw Error(a(156,t.tag))};var Gs="function"==typeof reportError?reportError:function(e){console.error(e)};function qs(e){this._internalRoot=e}function Qs(e){this._internalRoot=e}function Ys(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Js(){}function Zs(e,t,n,r,i){var a=n._reactRootContainer;if(a){var o=a;if("function"==typeof i){var l=i;i=function(){var e=Hs(o);l.call(e)}}Us(t,o,e,i)}else o=function(e,t,n,r,i){if(i){if("function"==typeof r){var a=r;r=function(){var e=Hs(o);a.call(e)}}var o=Bs(t,r,e,0,null,!1,0,"",Js);return e._reactRootContainer=o,e[hi]=o.current,Br(8===e.nodeType?e.parentNode:e),cs(),o}for(;i=e.lastChild;)e.removeChild(i);if("function"==typeof r){var l=r;r=function(){var e=Hs(u);l.call(e)}}var u=$s(e,0,!1,null,0,!1,0,"",Js);return e._reactRootContainer=u,e[hi]=u.current,Br(8===e.nodeType?e.parentNode:e),cs((function(){Us(t,u,n,r)})),u}(n,t,e,i,r);return Hs(o)}Qs.prototype.render=qs.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));Us(e,t,null,null)},Qs.prototype.unmount=qs.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cs((function(){Us(null,e,null,null)})),t[hi]=null}},Qs.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ot();e={blockedOn:null,target:e,priority:t};for(var n=0;n<It.length&&0!==t&&t<It[n].priority;n++);It.splice(n,0,e),0===n&&Dt(e)}},_t=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(gt(t,1|n),rs(t,Xe()),!(6&ju)&&(Bu=Xe()+500,Bi()))}break;case 13:cs((function(){var t=Ra(e,1);if(null!==t){var n=es();ns(t,e,1,n)}})),Ks(e,1)}},St=function(e){if(13===e.tag){var t=Ra(e,134217728);null!==t&&ns(t,e,134217728,es()),Ks(e,134217728)}},kt=function(e){if(13===e.tag){var t=ts(e),n=Ra(e,t);null!==n&&ns(n,e,t,es()),Ks(e,t)}},Ot=function(){return mt},Pt=function(e,t){var n=mt;try{return mt=e,t()}finally{mt=n}},Se=function(e,t,n){switch(t){case"input":if(J(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=_i(r);if(!i)throw Error(a(90));G(r),J(r,i)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},je=ss,Ce=cs;var ec={usingClientEntryPoint:!1,Events:[mi,wi,_i,Ae,xe,ss]},tc={findFiberByHostInstance:gi,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nc={bundleType:tc.bundleType,version:tc.version,rendererPackageName:tc.rendererPackageName,rendererConfig:tc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:tc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var rc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!rc.isDisabled&&rc.supportsFiber)try{it=rc.inject(nc),at=rc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ec,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Ys(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Ys(e))throw Error(a(299));var n=!1,r="",i=Gs;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(i=t.onRecoverableError)),t=$s(e,1,!1,null,0,n,0,r,i),e[hi]=t.current,Br(8===e.nodeType?e.parentNode:e),new qs(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return cs(e)},t.hydrate=function(e,t,n){if(!Xs(t))throw Error(a(200));return Zs(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Ys(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,i=!1,o="",l=Gs;if(null!=n&&(!0===n.unstable_strictMode&&(i=!0),void 0!==n.identifierPrefix&&(o=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Bs(t,null,e,1,null!=n?n:null,i,0,o,l),e[hi]=t.current,Br(e),r)for(e=0;e<r.length;e++)i=(i=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,i]:t.mutableSourceEagerHydrationData.push(n,i);return new Qs(t)},t.render=function(e,t,n){if(!Xs(t))throw Error(a(200));return Zs(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xs(e))throw Error(a(40));return!!e._reactRootContainer&&(cs((function(){Zs(null,null,e,!1,(function(){e._reactRootContainer=null,e[hi]=null}))})),!0)},t.unstable_batchedUpdates=ss,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xs(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return Zs(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},28485:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(45555)},68736:(e,t,n)=>{var r=n(7552),i=Symbol.for("react.element"),a=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,n){var r,a={},s=null,c=null;for(r in void 0!==n&&(s=""+n),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(c=t.ref),t)o.call(t,r)&&!u.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:i,type:e,key:s,ref:c,props:a,_owner:l.current}}t.Fragment=a,t.jsx=s,t.jsxs=s},78931:(e,t)=>{var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||h}function g(){}function m(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=y.prototype;var w=m.prototype=new g;w.constructor=m,b(w,y.prototype),w.isPureReactComponent=!0;var _=Array.isArray,S=Object.prototype.hasOwnProperty,k={current:null},O={key:!0,ref:!0,__self:!0,__source:!0};function P(e,t,r){var i,a={},o=null,l=null;if(null!=t)for(i in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(o=""+t.key),t)S.call(t,i)&&!O.hasOwnProperty(i)&&(a[i]=t[i]);var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}if(e&&e.defaultProps)for(i in u=e.defaultProps)void 0===a[i]&&(a[i]=u[i]);return{$$typeof:n,type:e,key:o,ref:l,props:a,_owner:k.current}}function A(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var x=/\/+/g;function j(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function C(e,t,i,a,o){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var u=!1;if(null===e)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case n:case r:u=!0}}if(u)return o=o(u=e),e=""===a?"."+j(u,0):a,_(o)?(i="",null!=e&&(i=e.replace(x,"$&/")+"/"),C(o,t,i,"",(function(e){return e}))):null!=o&&(A(o)&&(o=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,i+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(x,"$&/")+"/")+e)),t.push(o)),1;if(u=0,a=""===a?".":a+":",_(e))for(var s=0;s<e.length;s++){var c=a+j(l=e[s],s);u+=C(l,t,i,c,o)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),s=0;!(l=e.next()).done;)u+=C(l=l.value,t,i,c=a+j(l,s++),o);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function E(e,t,n){if(null==e)return e;var r=[],i=0;return C(e,r,"","",(function(e){return t.call(n,e,i++)})),r}function T(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var N={current:null},I={transition:null},R={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:I,ReactCurrentOwner:k};function M(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:E,forEach:function(e,t,n){E(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return E(e,(function(){t++})),t},toArray:function(e){return E(e,(function(e){return e}))||[]},only:function(e){if(!A(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=i,t.Profiler=o,t.PureComponent=m,t.StrictMode=a,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.act=M,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var i=b({},e.props),a=e.key,o=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(o=t.ref,l=k.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(s in t)S.call(t,s)&&!O.hasOwnProperty(s)&&(i[s]=void 0===t[s]&&void 0!==u?u[s]:t[s])}var s=arguments.length-2;if(1===s)i.children=r;else if(1<s){u=Array(s);for(var c=0;c<s;c++)u[c]=arguments[c+2];i.children=u}return{$$typeof:n,type:e.type,key:a,ref:o,props:i,_owner:l}},t.createContext=function(e){return(e={$$typeof:u,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=P,t.createFactory=function(e){var t=P.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=A,t.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=I.transition;I.transition={};try{e()}finally{I.transition=t}},t.unstable_act=M,t.useCallback=function(e,t){return N.current.useCallback(e,t)},t.useContext=function(e){return N.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return N.current.useDeferredValue(e)},t.useEffect=function(e,t){return N.current.useEffect(e,t)},t.useId=function(){return N.current.useId()},t.useImperativeHandle=function(e,t,n){return N.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return N.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return N.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return N.current.useMemo(e,t)},t.useReducer=function(e,t,n){return N.current.useReducer(e,t,n)},t.useRef=function(e){return N.current.useRef(e)},t.useState=function(e){return N.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return N.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return N.current.useTransition()},t.version="18.3.1"},7552:(e,t,n)=>{e.exports=n(78931)},69500:(e,t,n)=>{e.exports=n(68736)},79763:(e,t)=>{function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,i=e[r];if(!(0<a(i,t)))break e;e[r]=t,e[n]=i,n=r}}function r(e){return 0===e.length?null:e[0]}function i(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length,o=i>>>1;r<o;){var l=2*(r+1)-1,u=e[l],s=l+1,c=e[s];if(0>a(u,n))s<i&&0>a(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[l]=n,r=l);else{if(!(s<i&&0>a(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var l=Date,u=l.now();t.unstable_now=function(){return l.now()-u}}var s=[],c=[],f=1,d=null,p=3,h=!1,b=!1,v=!1,y="function"==typeof setTimeout?setTimeout:null,g="function"==typeof clearTimeout?clearTimeout:null,m="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)i(c);else{if(!(t.startTime<=e))break;i(c),t.sortIndex=t.expirationTime,n(s,t)}t=r(c)}}function _(e){if(v=!1,w(e),!b)if(null!==r(s))b=!0,I(S);else{var t=r(c);null!==t&&R(_,t.startTime-e)}}function S(e,n){b=!1,v&&(v=!1,g(A),A=-1),h=!0;var a=p;try{for(w(n),d=r(s);null!==d&&(!(d.expirationTime>n)||e&&!C());){var o=d.callback;if("function"==typeof o){d.callback=null,p=d.priorityLevel;var l=o(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?d.callback=l:d===r(s)&&i(s),w(n)}else i(s);d=r(s)}if(null!==d)var u=!0;else{var f=r(c);null!==f&&R(_,f.startTime-n),u=!1}return u}finally{d=null,p=a,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,O=!1,P=null,A=-1,x=5,j=-1;function C(){return!(t.unstable_now()-j<x)}function E(){if(null!==P){var e=t.unstable_now();j=e;var n=!0;try{n=P(!0,e)}finally{n?k():(O=!1,P=null)}}else O=!1}if("function"==typeof m)k=function(){m(E)};else if("undefined"!=typeof MessageChannel){var T=new MessageChannel,N=T.port2;T.port1.onmessage=E,k=function(){N.postMessage(null)}}else k=function(){y(E,0)};function I(e){P=e,O||(O=!0,k())}function R(e,n){A=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){b||h||(b=!0,I(S))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):x=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(s)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,i,a){var o=t.unstable_now();switch(a="object"==typeof a&&null!==a&&"number"==typeof(a=a.delay)&&0<a?o+a:o,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:f++,callback:i,priorityLevel:e,startTime:a,expirationTime:l=a+l,sortIndex:-1},a>o?(e.sortIndex=a,n(c,e),null===r(s)&&e===r(c)&&(v?(g(A),A=-1):v=!0,R(_,a-o))):(e.sortIndex=l,n(s,e),b||h||(b=!0,I(S))),e},t.unstable_shouldYield=C,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},13754:(e,t,n)=>{e.exports=n(79763)},6614:(e,t,n)=>{function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},93878:(e,t,n)=>{function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(i&&(i+=" "),i+=n)}else for(n in e)e[n]&&(i&&(i+=" "),i+=n);return i}n.d(t,{A:()=>i});const i=function(){for(var e,t,n=0,i="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(i&&(i+=" "),i+=t);return i}}}]);
+//# sourceMappingURL=3301.db457761.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3301.db457761.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,71 @@
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @mui/styled-engine v6.1.1
+ *
+ * @license MIT
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3301.db457761.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3301.db457761.chunk.js","mappings":"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Aa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG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","sources":["../../../node_modules/stylis/src/Utility.js","../../../node_modules/stylis/src/Tokenizer.js","../../../node_modules/stylis/src/Enum.js","../../../node_modules/stylis/src/Serializer.js","../../../node_modules/stylis/src/Parser.js","../../../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/stylis/src/Middleware.js","../../../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../../../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/@mui/material/CssBaseline/CssBaseline.js","../../../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/styles/createColorScheme.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createThemeNoVars.js","../../../node_modules/@mui/system/cssVars/createGetCssVar.js","../../../node_modules/@mui/system/cssVars/prepareTypographyVars.js","../../../node_modules/@mui/system/cssVars/cssVarsParser.js","../../../node_modules/@mui/system/cssVars/prepareCssVars.js","../../../node_modules/@mui/material/styles/createGetSelector.js","../../../node_modules/@mui/material/styles/stringifyTheme.js","../../../node_modules/@mui/material/styles/createThemeWithVars.js","../../../node_modules/@mui/system/cssVars/getColorSchemeSelector.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/excludeVariablesFromRoot.js","../../../node_modules/@mui/material/styles/getOverlayAlpha.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/rootShouldForwardProp.js","../../../node_modules/@mui/material/styles/shouldSkipGeneratingVar.js","../../../node_modules/@mui/material/styles/slotShouldForwardProp.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/utils/capitalize.js","../../../node_modules/@mui/material/utils/createSimplePaletteValueFilter.js","../../../node_modules/@mui/material/utils/memoTheme.js","../../../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../../../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../../../node_modules/@mui/styled-engine/index.js","../../../node_modules/@mui/system/DefaultPropsProvider/DefaultPropsProvider.js","../../../node_modules/@mui/system/breakpoints/breakpoints.js","../../../node_modules/@mui/system/colorManipulator/colorManipulator.js","../../../node_modules/@mui/system/createBreakpoints/createBreakpoints.js","../../../node_modules/@mui/system/createStyled/createStyled.js","../../../node_modules/@mui/system/createTheme/createSpacing.js","../../../node_modules/@mui/system/createTheme/shape.js","../../../node_modules/@mui/system/createTheme/applyStyles.js","../../../node_modules/@mui/system/createTheme/createTheme.js","../../../node_modules/@mui/system/cssContainerQueries/cssContainerQueries.js","../../../node_modules/@mui/system/merge/merge.js","../../../node_modules/@mui/system/spacing/spacing.js","../../../node_modules/@mui/system/memoize/memoize.js","../../../node_modules/@mui/system/style/style.js","../../../node_modules/@mui/system/compose/compose.js","../../../node_modules/@mui/system/borders/borders.js","../../../node_modules/@mui/system/cssGrid/cssGrid.js","../../../node_modules/@mui/system/palette/palette.js","../../../node_modules/@mui/system/sizing/sizing.js","../../../node_modules/@mui/system/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/esm/capitalize/capitalize.js","../../../node_modules/@mui/utils/esm/clamp/clamp.js","../../../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../../../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../../../node_modules/deepmerge/dist/cjs.js","../../../node_modules/generic-filehandle/src/remoteFile.ts","../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../../../node_modules/mobx-react-lite/src/observer.ts","../../../node_modules/mobx-state-tree/dist/mobx-state-tree.module.js","../../../node_modules/mobx/src/errors.ts","../../../node_modules/mobx/src/utils/global.ts","../../../node_modules/mobx/src/utils/utils.ts","../../../node_modules/mobx/src/api/decorators.ts","../../../node_modules/mobx/src/types/overrideannotation.ts","../../../node_modules/mobx/src/core/atom.ts","../../../node_modules/mobx/src/utils/comparer.ts","../../../node_modules/mobx/src/types/modifiers.ts","../../../node_modules/mobx/src/types/actionannotation.ts","../../../node_modules/mobx/src/types/flowannotation.ts","../../../node_modules/mobx/src/types/computedannotation.ts","../../../node_modules/mobx/src/types/observableannotation.ts","../../../node_modules/mobx/src/types/autoannotation.ts","../../../node_modules/mobx/src/api/observable.ts","../../../node_modules/mobx/src/types/dynamicobject.ts","../../../node_modules/mobx/src/api/computed.ts","../../../node_modules/mobx/src/core/action.ts","../../../node_modules/mobx/src/types/observablevalue.ts","../../../node_modules/mobx/src/core/computedvalue.ts","../../../node_modules/mobx/src/core/observable.ts","../../../node_modules/mobx/src/core/derivation.ts","../../../node_modules/mobx/src/core/globalstate.ts","../../../node_modules/mobx/src/core/reaction.ts","../../../node_modules/mobx/src/core/spy.ts","../../../node_modules/mobx/src/api/action.ts","../../../node_modules/mobx/src/api/autorun.ts","../../../node_modules/mobx/src/api/become-observed.ts","../../../node_modules/mobx/src/api/configure.ts","../../../node_modules/mobx/src/api/extendobservable.ts","../../../node_modules/mobx/src/api/extras.ts","../../../node_modules/mobx/src/api/flow.ts","../../../node_modules/mobx/src/api/intercept-read.ts","../../../node_modules/mobx/src/api/intercept.ts","../../../node_modules/mobx/src/api/iscomputed.ts","../../../node_modules/mobx/src/api/isobservable.ts","../../../node_modules/mobx/src/api/object-api.ts","../../../node_modules/mobx/src/api/observe.ts","../../../node_modules/mobx/src/api/tojs.ts","../../../node_modules/mobx/src/api/trace.ts","../../../node_modules/mobx/src/api/transaction.ts","../../../node_modules/mobx/src/api/when.ts","../../../node_modules/mobx/src/types/intercept-utils.ts","../../../node_modules/mobx/src/types/listen-utils.ts","../../../node_modules/mobx/src/api/makeObservable.ts","../../../node_modules/mobx/src/types/observablearray.ts","../../../node_modules/mobx/src/types/observablemap.ts","../../../node_modules/mobx/src/types/observableset.ts","../../../node_modules/mobx/src/types/observableobject.ts","../../../node_modules/mobx/src/types/legacyobservablearray.ts","../../../node_modules/mobx/src/types/type-utils.ts","../../../node_modules/mobx/src/utils/eq.ts","../../../node_modules/mobx/src/utils/iterable.ts","../../../node_modules/mobx/src/mobx.ts","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/index.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n  /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node\n    /*: HTMLStyleElement */\n    ) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  /* : Node */\n\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n    /*: HTMLStyleElement */\n    ) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n  /*: (\n  selector: string,\n  serialized: SerializedStyles,\n  sheet: StyleSheet,\n  shouldCache: boolean\n  ) => string | void */\n\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function\n      /*: void */\n    insert(selector\n    /*: string */\n    , serialized\n    /*: SerializedStyles */\n    , sheet\n    /*: StyleSheet */\n    , shouldCache\n    /*: boolean */\n    ) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache\n  /*: EmotionCache */\n  = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context<EmotionCache | null> */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* <Props, Ref: React.Ref<*>> */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent<Props> */\n{\n  return /*#__PURE__*/forwardRef(function (props\n  /*: Props */\n  , ref\n  /*: Ref */\n  ) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    return mergedTheme;\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\n/*\ntype ThemeProviderProps = {\n  theme: Object | (Object => Object),\n  children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme\n/* <Config: {}> */\n(Component\n/*: React.AbstractComponent<Config> */\n)\n/*: React.AbstractComponent<$Diff<Config, { theme: Object }>> */\n{\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  };\n\n  var WithTheme = /*#__PURE__*/React.forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n  var newProps\n  /*: any */\n  = {};\n\n  for (var key in props) {\n    if (hasOwn.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* <any, any> */\nfunction (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.className = className;\n\n  if (ref) {\n    newProps.ref = ref;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  }\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node\n    /*: HTMLStyleElement | null*/\n    = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n  name: string,\n  styles: string,\n  anim: 1,\n  toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n  /*: Keyframes */\nkeyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\n/*\ntype ClassNameArg =\n  | string\n  | boolean\n  | { [key: string]: boolean }\n  | Array<ClassNameArg>\n  | null\n  | void\n*/\n\nvar classnames = function\n  /*: string */\nclassnames(args\n/*: Array<ClassNameArg> */\n) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array<any>) => string */\n, className\n/*: string */\n) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n/*\ntype Props = {\n  children: ({\n    css: (...args: any) => string,\n    cx: (...args: Array<ClassNameArg>) => string,\n    theme: Object\n  }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent<Props>*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  }\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalCss } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\n\n// to determine if the global styles are static or dynamic\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst isDynamicSupport = typeof globalCss({}) === 'function';\nexport const html = (theme, enableColorScheme) => ({\n  WebkitFontSmoothing: 'antialiased',\n  // Antialiasing.\n  MozOsxFontSmoothing: 'grayscale',\n  // Antialiasing.\n  // Change from `box-sizing: content-box` so that `width`\n  // is not affected by `padding` or `border`.\n  boxSizing: 'border-box',\n  // Fix font resize problem in iOS\n  WebkitTextSizeAdjust: '100%',\n  // When used under CssVarsProvider, colorScheme should not be applied dynamically because it will generate the stylesheet twice for server-rendered applications.\n  ...(enableColorScheme && !theme.vars && {\n    colorScheme: theme.palette.mode\n  })\n});\nexport const body = theme => ({\n  color: (theme.vars || theme).palette.text.primary,\n  ...theme.typography.body1,\n  backgroundColor: (theme.vars || theme).palette.background.default,\n  '@media print': {\n    // Save printer ink.\n    backgroundColor: (theme.vars || theme).palette.common.white\n  }\n});\nexport const styles = (theme, enableColorScheme = false) => {\n  const colorSchemeStyles = {};\n  if (enableColorScheme && theme.colorSchemes && typeof theme.getColorSchemeSelector === 'function') {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      const selector = theme.getColorSchemeSelector(key);\n      if (selector.startsWith('@')) {\n        // for @media (prefers-color-scheme), we need to target :root\n        colorSchemeStyles[selector] = {\n          ':root': {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      } else {\n        // else, it's likely that the selector already target an element with a class or data attribute\n        colorSchemeStyles[selector.replace(/\\s*&/, '')] = {\n          colorScheme: scheme.palette?.mode\n        };\n      }\n    });\n  }\n  let defaultStyles = {\n    html: html(theme, enableColorScheme),\n    '*, *::before, *::after': {\n      boxSizing: 'inherit'\n    },\n    'strong, b': {\n      fontWeight: theme.typography.fontWeightBold\n    },\n    body: {\n      margin: 0,\n      // Remove the margin in all browsers.\n      ...body(theme),\n      // Add support for document.body.requestFullScreen().\n      // Other elements, if background transparent, are not supported.\n      '&::backdrop': {\n        backgroundColor: (theme.vars || theme).palette.background.default\n      }\n    },\n    ...colorSchemeStyles\n  };\n  const themeOverrides = theme.components?.MuiCssBaseline?.styleOverrides;\n  if (themeOverrides) {\n    defaultStyles = [defaultStyles, themeOverrides];\n  }\n  return defaultStyles;\n};\n\n// `ecs` stands for enableColorScheme. This is internal logic to make it work with Pigment CSS, so shorter is better.\nconst SELECTOR = 'mui-ecs';\nconst staticStyles = theme => {\n  const result = styles(theme, false);\n  const baseStyles = Array.isArray(result) ? result[0] : result;\n  if (!theme.vars && baseStyles) {\n    baseStyles.html[`:root:has(${SELECTOR})`] = {\n      colorScheme: theme.palette.mode\n    };\n  }\n  if (theme.colorSchemes) {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      const selector = theme.getColorSchemeSelector(key);\n      if (selector.startsWith('@')) {\n        // for @media (prefers-color-scheme), we need to target :root\n        baseStyles[selector] = {\n          [`:root:not(:has(.${SELECTOR}))`]: {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      } else {\n        // else, it's likely that the selector already target an element with a class or data attribute\n        baseStyles[selector.replace(/\\s*&/, '')] = {\n          [`&:not(:has(.${SELECTOR}))`]: {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      }\n    });\n  }\n  return result;\n};\nconst GlobalStyles = globalCss(isDynamicSupport ? ({\n  theme,\n  enableColorScheme\n}) => styles(theme, enableColorScheme) : ({\n  theme\n}) => staticStyles(theme));\n\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */\nfunction CssBaseline(inProps) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCssBaseline'\n  });\n  const {\n    children,\n    enableColorScheme = false\n  } = props;\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [isDynamicSupport && /*#__PURE__*/_jsx(GlobalStyles, {\n      enableColorScheme: enableColorScheme\n    }), !isDynamicSupport && !enableColorScheme && /*#__PURE__*/_jsx(\"span\", {\n      className: SELECTOR,\n      style: {\n        display: 'none'\n      }\n    }), children]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? CssBaseline.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * You can wrap a node.\n   */\n  children: PropTypes.node,\n  /**\n   * Enable `color-scheme` CSS property to use `theme.palette.mode`.\n   * For more details, check out https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme\n   * For browser support, check out https://caniuse.com/?search=color-scheme\n   * @default false\n   */\n  enableColorScheme: PropTypes.bool\n} : void 0;\nexport default CssBaseline;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n  return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n    ...props\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n  return useSystemDefaultProps(params);\n}","const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;","const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;","const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;","const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;","const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n  if (index === 0) {\n    return 'none';\n  }\n  const overlay = getOverlayAlpha(index);\n  return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n  return {\n    inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n    inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n    switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n    switchTrack: mode === 'dark' ? 0.3 : 0.38\n  };\n}\nexport function getOverlays(mode) {\n  return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n  const {\n    palette: paletteInput = {\n      mode: 'light'\n    },\n    // need to cast to avoid module augmentation test\n    opacity,\n    overlays,\n    ...rest\n  } = options;\n  const palette = createPalette(paletteInput);\n  return {\n    palette,\n    opacity: {\n      ...getOpacity(palette.mode),\n      ...opacity\n    },\n    overlays: overlays || getOverlays(palette.mode),\n    ...rest\n  };\n}","export default function createMixins(breakpoints, mixins) {\n  return {\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    },\n    ...mixins\n  };\n}","const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;","const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;","const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n    mode = 'light',\n    contrastThreshold = 3,\n    tonalOffset = 0.2,\n    ...other\n  } = palette;\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = {\n      ...color\n    };\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge({\n    // A collection of common colors.\n    common: {\n      ...common\n    },\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset,\n    // The light and dark mode object.\n    ...modes[mode]\n  }, other);\n  return paletteOutput;\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nexport { createMuiTheme } from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n  if (!theme.colorSchemes) {\n    return undefined;\n  }\n  if (colorScheme) {\n    theme.colorSchemes[scheme] = {\n      ...(colorScheme !== true && colorScheme),\n      palette: createPalette({\n        ...(colorScheme === true ? {} : colorScheme.palette),\n        mode: scheme\n      }) // cast type to skip module augmentation test\n    };\n  }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n  const {\n    palette,\n    cssVariables = false,\n    colorSchemes: initialColorSchemes = !palette ? {\n      light: true\n    } : undefined,\n    defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n    ...rest\n  } = options;\n  const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n  const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n  const colorSchemesInput = {\n    ...initialColorSchemes,\n    ...(palette ? {\n      [defaultColorSchemeInput]: {\n        ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n        palette\n      }\n    } : undefined)\n  };\n  if (cssVariables === false) {\n    if (!('colorSchemes' in options)) {\n      // Behaves exactly as v5\n      return createThemeNoVars(options, ...args);\n    }\n    let paletteOptions = palette;\n    if (!('palette' in options)) {\n      if (colorSchemesInput[defaultColorSchemeInput]) {\n        if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n          paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n        } else if (defaultColorSchemeInput === 'dark') {\n          // @ts-ignore to prevent the module augmentation test from failing\n          paletteOptions = {\n            mode: 'dark'\n          };\n        }\n      }\n    }\n    const theme = createThemeNoVars({\n      ...options,\n      palette: paletteOptions\n    }, ...args);\n    theme.defaultColorScheme = defaultColorSchemeInput;\n    theme.colorSchemes = colorSchemesInput;\n    if (theme.palette.mode === 'light') {\n      theme.colorSchemes.light = {\n        ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n        palette: theme.palette\n      };\n      attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n    }\n    if (theme.palette.mode === 'dark') {\n      theme.colorSchemes.dark = {\n        ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n        palette: theme.palette\n      };\n      attachColorScheme(theme, 'light', colorSchemesInput.light);\n    }\n    return theme;\n  }\n  if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n    colorSchemesInput.light = true;\n  }\n  return createThemeWithVars({\n    ...rest,\n    colorSchemes: colorSchemesInput,\n    defaultColorScheme: defaultColorSchemeInput,\n    ...(typeof cssVariables !== 'boolean' && cssVariables)\n  }, ...args);\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nfunction createThemeNoVars(options = {}, ...args) {\n  const {\n    breakpoints: breakpointsInput,\n    mixins: mixinsInput = {},\n    spacing: spacingInput,\n    palette: paletteInput = {},\n    transitions: transitionsInput = {},\n    typography: typographyInput = {},\n    shape: shapeInput,\n    ...other\n  } = options;\n  if (options.vars) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(20));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: {\n      ...zIndex\n    }\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.startsWith('Mui')) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...other?.unstable_sxConfig\n  };\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createThemeNoVars(...args);\n}\nexport default createThemeNoVars;","/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n  function appendVar(...vars) {\n    if (!vars.length) {\n      return '';\n    }\n    const value = vars[0];\n    if (typeof value === 'string' && !value.match(/(#|\\(|\\)|(-?(\\d*\\.)?\\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\\d*\\.)?\\d+)$|(\\d+ \\d+ \\d+)/)) {\n      return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n    }\n    return `, ${value}`;\n  }\n\n  // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n  const getCssVar = (field, ...fallbacks) => {\n    return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n  };\n  return getCssVar;\n}","export default function prepareTypographyVars(typography) {\n  const vars = {};\n  const entries = Object.entries(typography);\n  entries.forEach(entry => {\n    const [key, value] = entry;\n    if (typeof value === 'object') {\n      vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n    }\n  });\n  return vars;\n}","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n  let temp = obj;\n  keys.forEach((k, index) => {\n    if (index === keys.length - 1) {\n      if (Array.isArray(temp)) {\n        temp[Number(k)] = value;\n      } else if (temp && typeof temp === 'object') {\n        temp[k] = value;\n      }\n    } else if (temp && typeof temp === 'object') {\n      if (!temp[k]) {\n        temp[k] = arrayKeys.includes(k) ? [] : {};\n      }\n      temp = temp[k];\n    }\n  });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n *                   - the deepest key in source object is reached\n *                   - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n  function recurse(object, parentKeys = [], arrayKeys = []) {\n    Object.entries(object).forEach(([key, value]) => {\n      if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n        if (value !== undefined && value !== null) {\n          if (typeof value === 'object' && Object.keys(value).length > 0) {\n            recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n          } else {\n            callback([...parentKeys, key], value, arrayKeys);\n          }\n        }\n      }\n    });\n  }\n  recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n  if (typeof value === 'number') {\n    if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n      // CSS property that are unitless\n      return value;\n    }\n    const lastKey = keys[keys.length - 1];\n    if (lastKey.toLowerCase().includes('opacity')) {\n      // opacity values are unitless\n      return value;\n    }\n    return `${value}px`;\n  }\n  return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n *  prefix?: string,\n *  shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean\n * }} options.\n *  `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n *   fontSize: 12,\n *   lineHeight: 1.2,\n *   palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n  const {\n    prefix,\n    shouldSkipGeneratingVar\n  } = options || {};\n  const css = {};\n  const vars = {};\n  const varsWithDefaults = {};\n  walkObjectDeep(theme, (keys, value, arrayKeys) => {\n    if (typeof value === 'string' || typeof value === 'number') {\n      if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n        // only create css & var if `shouldSkipGeneratingVar` return false\n        const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n        const resolvedValue = getCssValue(keys, value);\n        Object.assign(css, {\n          [cssVar]: resolvedValue\n        });\n        assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n        assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n      }\n    }\n  }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n  );\n  return {\n    css,\n    vars,\n    varsWithDefaults\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n  const {\n    getSelector = defaultGetSelector,\n    disableCssColorScheme,\n    colorSchemeSelector: selector\n  } = parserConfig;\n  // @ts-ignore - ignore components do not exist\n  const {\n    colorSchemes = {},\n    components,\n    defaultColorScheme = 'light',\n    ...otherTheme\n  } = theme;\n  const {\n    vars: rootVars,\n    css: rootCss,\n    varsWithDefaults: rootVarsWithDefaults\n  } = cssVarsParser(otherTheme, parserConfig);\n  let themeVars = rootVarsWithDefaults;\n  const colorSchemesMap = {};\n  const {\n    [defaultColorScheme]: defaultScheme,\n    ...otherColorSchemes\n  } = colorSchemes;\n  Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n    const {\n      vars,\n      css,\n      varsWithDefaults\n    } = cssVarsParser(scheme, parserConfig);\n    themeVars = deepmerge(themeVars, varsWithDefaults);\n    colorSchemesMap[key] = {\n      css,\n      vars\n    };\n  });\n  if (defaultScheme) {\n    // default color scheme vars should be merged last to set as default\n    const {\n      css,\n      vars,\n      varsWithDefaults\n    } = cssVarsParser(defaultScheme, parserConfig);\n    themeVars = deepmerge(themeVars, varsWithDefaults);\n    colorSchemesMap[defaultColorScheme] = {\n      css,\n      vars\n    };\n  }\n  function defaultGetSelector(colorScheme, cssObject) {\n    let rule = selector;\n    if (selector === 'class') {\n      rule = '.%s';\n    }\n    if (selector === 'data') {\n      rule = '[data-%s]';\n    }\n    if (selector?.startsWith('data-') && !selector.includes('%s')) {\n      // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n      rule = `[${selector}=\"%s\"]`;\n    }\n    if (colorScheme) {\n      if (rule === 'media') {\n        if (theme.defaultColorScheme === colorScheme) {\n          return ':root';\n        }\n        const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n        return {\n          [`@media (prefers-color-scheme: ${mode})`]: {\n            ':root': cssObject\n          }\n        };\n      }\n      if (rule) {\n        if (theme.defaultColorScheme === colorScheme) {\n          return `:root, ${rule.replace('%s', String(colorScheme))}`;\n        }\n        return rule.replace('%s', String(colorScheme));\n      }\n    }\n    return ':root';\n  }\n  const generateThemeVars = () => {\n    let vars = {\n      ...rootVars\n    };\n    Object.entries(colorSchemesMap).forEach(([, {\n      vars: schemeVars\n    }]) => {\n      vars = deepmerge(vars, schemeVars);\n    });\n    return vars;\n  };\n  const generateStyleSheets = () => {\n    const stylesheets = [];\n    const colorScheme = theme.defaultColorScheme || 'light';\n    function insertStyleSheet(key, css) {\n      if (Object.keys(css).length) {\n        stylesheets.push(typeof key === 'string' ? {\n          [key]: {\n            ...css\n          }\n        } : key);\n      }\n    }\n    insertStyleSheet(getSelector(undefined, {\n      ...rootCss\n    }), rootCss);\n    const {\n      [colorScheme]: defaultSchemeVal,\n      ...other\n    } = colorSchemesMap;\n    if (defaultSchemeVal) {\n      // default color scheme has to come before other color schemes\n      const {\n        css\n      } = defaultSchemeVal;\n      const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n      const finalCss = !disableCssColorScheme && cssColorSheme ? {\n        colorScheme: cssColorSheme,\n        ...css\n      } : {\n        ...css\n      };\n      insertStyleSheet(getSelector(colorScheme, {\n        ...finalCss\n      }), finalCss);\n    }\n    Object.entries(other).forEach(([key, {\n      css\n    }]) => {\n      const cssColorSheme = colorSchemes[key]?.palette?.mode;\n      const finalCss = !disableCssColorScheme && cssColorSheme ? {\n        colorScheme: cssColorSheme,\n        ...css\n      } : {\n        ...css\n      };\n      insertStyleSheet(getSelector(key, {\n        ...finalCss\n      }), finalCss);\n    });\n    return stylesheets;\n  };\n  return {\n    vars: themeVars,\n    generateThemeVars,\n    generateStyleSheets\n  };\n}\nexport default prepareCssVars;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n  const selector = theme.colorSchemeSelector;\n  let rule = selector;\n  if (selector === 'class') {\n    rule = '.%s';\n  }\n  if (selector === 'data') {\n    rule = '[data-%s]';\n  }\n  if (selector?.startsWith('data-') && !selector.includes('%s')) {\n    // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n    rule = `[${selector}=\"%s\"]`;\n  }\n  if (theme.defaultColorScheme === colorScheme) {\n    if (colorScheme === 'dark') {\n      const excludedVariables = {};\n      excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n        excludedVariables[cssVar] = css[cssVar];\n        delete css[cssVar];\n      });\n      if (rule === 'media') {\n        return {\n          ':root': css,\n          [`@media (prefers-color-scheme: dark)`]: {\n            ':root': excludedVariables\n          }\n        };\n      }\n      if (rule) {\n        return {\n          [rule.replace('%s', colorScheme)]: excludedVariables,\n          [`:root, ${rule.replace('%s', colorScheme)}`]: css\n        };\n      }\n      return {\n        ':root': {\n          ...css,\n          ...excludedVariables\n        }\n      };\n    }\n    if (rule && rule !== 'media') {\n      return `:root, ${rule.replace('%s', String(colorScheme))}`;\n    }\n  } else if (colorScheme) {\n    if (rule === 'media') {\n      return {\n        [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n          ':root': css\n        }\n      };\n    }\n    if (rule) {\n      return rule.replace('%s', String(colorScheme));\n    }\n  }\n  return ':root';\n};","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n  return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme` or `extendTheme`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n *  theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n  const serializableTheme = {\n    ...baseTheme\n  };\n  function serializeTheme(object) {\n    const array = Object.entries(object);\n    // eslint-disable-next-line no-plusplus\n    for (let index = 0; index < array.length; index++) {\n      const [key, value] = array[index];\n      if (!isSerializable(value) || key.startsWith('unstable_')) {\n        delete object[key];\n      } else if (isPlainObject(value)) {\n        object[key] = {\n          ...value\n        };\n        serializeTheme(object[key]);\n      }\n    }\n  }\n  serializeTheme(serializableTheme);\n  return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction assignNode(obj, keys) {\n  keys.forEach(k => {\n    if (!obj[k]) {\n      obj[k] = {};\n    }\n  });\n}\nfunction setColor(obj, key, defaultValue) {\n  if (!obj[key] && defaultValue) {\n    obj[key] = defaultValue;\n  }\n}\nfunction toRgb(color) {\n  if (!color || !color.startsWith('hsl')) {\n    return color;\n  }\n  return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n  if (!(`${key}Channel` in obj)) {\n    // custom channel token is not provided, generate one.\n    // if channel token can't be generated, show a warning.\n    obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n  }\n}\nfunction getSpacingVal(spacingInput) {\n  if (typeof spacingInput === 'number') {\n    return `${spacingInput}px`;\n  }\n  if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n    return spacingInput;\n  }\n  return '8px';\n}\nconst silent = fn => {\n  try {\n    return fn();\n  } catch (error) {\n    // ignore error\n  }\n  return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {\n  if (!scheme) {\n    return undefined;\n  }\n  scheme = scheme === true ? {} : scheme;\n  const mode = colorScheme === 'dark' ? 'dark' : 'light';\n  if (!restTheme) {\n    colorSchemes[colorScheme] = createColorScheme({\n      ...scheme,\n      palette: {\n        mode,\n        ...scheme?.palette\n      }\n    });\n    return undefined;\n  }\n  const {\n    palette,\n    ...muiTheme\n  } = createThemeNoVars({\n    ...restTheme,\n    palette: {\n      mode,\n      ...scheme?.palette\n    }\n  });\n  colorSchemes[colorScheme] = {\n    ...scheme,\n    palette,\n    opacity: {\n      ...getOpacity(mode),\n      ...scheme?.opacity\n    },\n    overlays: scheme?.overlays || getOverlays(mode)\n  };\n  return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n  const {\n    colorSchemes: colorSchemesInput = {\n      light: true\n    },\n    defaultColorScheme: defaultColorSchemeInput,\n    disableCssColorScheme = false,\n    cssVarPrefix = 'mui',\n    shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n    colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n    ...input\n  } = options;\n  const firstColorScheme = Object.keys(colorSchemesInput)[0];\n  const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n  const getCssVar = createGetCssVar(cssVarPrefix);\n  const {\n    [defaultColorScheme]: defaultSchemeInput,\n    light: builtInLight,\n    dark: builtInDark,\n    ...customColorSchemes\n  } = colorSchemesInput;\n  const colorSchemes = {\n    ...customColorSchemes\n  };\n  let defaultScheme = defaultSchemeInput;\n\n  // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n  if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n    defaultScheme = true;\n  }\n  if (!defaultScheme) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatMuiErrorMessage(21, defaultColorScheme));\n  }\n\n  // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n  const muiTheme = attachColorScheme(colorSchemes, defaultScheme, input, defaultColorScheme);\n  if (builtInLight && !colorSchemes.light) {\n    attachColorScheme(colorSchemes, builtInLight, undefined, 'light');\n  }\n  if (builtInDark && !colorSchemes.dark) {\n    attachColorScheme(colorSchemes, builtInDark, undefined, 'dark');\n  }\n  let theme = {\n    defaultColorScheme,\n    ...muiTheme,\n    cssVarPrefix,\n    colorSchemeSelector: selector,\n    getCssVar,\n    colorSchemes,\n    font: {\n      ...prepareTypographyVars(muiTheme.typography),\n      ...muiTheme.font\n    },\n    spacing: getSpacingVal(input.spacing)\n  };\n  Object.keys(theme.colorSchemes).forEach(key => {\n    const palette = theme.colorSchemes[key].palette;\n    const setCssVarColor = cssVar => {\n      const tokens = cssVar.split('-');\n      const color = tokens[1];\n      const colorToken = tokens[2];\n      return getCssVar(cssVar, palette[color][colorToken]);\n    };\n\n    // attach black & white channels to common node\n    if (palette.mode === 'light') {\n      setColor(palette.common, 'background', '#fff');\n      setColor(palette.common, 'onBackground', '#000');\n    }\n    if (palette.mode === 'dark') {\n      setColor(palette.common, 'background', '#000');\n      setColor(palette.common, 'onBackground', '#fff');\n    }\n\n    // assign component variables\n    assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n    if (palette.mode === 'light') {\n      setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n      setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n      setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n      setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n      setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n      setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n      setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n      setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n      setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n      setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n      setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n      setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n      setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n      setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n      setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    }\n    if (palette.mode === 'dark') {\n      setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n      setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n      setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n      setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n      setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n      setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n      setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n      setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n      setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n      setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n      setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n      setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n      setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n      setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n      setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n      setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n      setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n      setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n      setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n      setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n      setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n      setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n      setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n      setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n      setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    }\n\n    // MUI X - DataGrid needs this token.\n    setColorChannel(palette.background, 'default');\n\n    // added for consistency with the `background.default` token\n    setColorChannel(palette.background, 'paper');\n    setColorChannel(palette.common, 'background');\n    setColorChannel(palette.common, 'onBackground');\n    setColorChannel(palette, 'divider');\n    Object.keys(palette).forEach(color => {\n      const colors = palette[color];\n\n      // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n      if (colors && typeof colors === 'object') {\n        // Silent the error for custom palettes.\n        if (colors.main) {\n          setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n        }\n        if (colors.light) {\n          setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n        }\n        if (colors.dark) {\n          setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n        }\n        if (colors.contrastText) {\n          setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n        }\n        if (color === 'text') {\n          // Text colors: text.primary, text.secondary\n          setColorChannel(palette[color], 'primary');\n          setColorChannel(palette[color], 'secondary');\n        }\n        if (color === 'action') {\n          // Action colors: action.active, action.selected\n          if (colors.active) {\n            setColorChannel(palette[color], 'active');\n          }\n          if (colors.selected) {\n            setColorChannel(palette[color], 'selected');\n          }\n        }\n      }\n    });\n  });\n  theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n  const parserConfig = {\n    prefix: cssVarPrefix,\n    disableCssColorScheme,\n    shouldSkipGeneratingVar,\n    getSelector: defaultGetSelector(theme)\n  };\n  const {\n    vars,\n    generateThemeVars,\n    generateStyleSheets\n  } = prepareCssVars(theme, parserConfig);\n  theme.vars = vars;\n  Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n    theme[key] = value;\n  });\n  theme.generateThemeVars = generateThemeVars;\n  theme.generateStyleSheets = generateStyleSheets;\n  theme.generateSpacing = function generateSpacing() {\n    return createSpacing(input.spacing, createUnarySpacing(this));\n  };\n  theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n  theme.spacing = theme.generateSpacing();\n  theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n  theme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...input?.unstable_sxConfig\n  };\n  theme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n  return theme;\n}","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n  return function getColorSchemeSelector(colorScheme) {\n    if (selector === 'media') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (colorScheme !== 'light' && colorScheme !== 'dark') {\n          console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n        }\n      }\n      return `@media (prefers-color-scheme: ${colorScheme})`;\n    }\n    if (selector) {\n      if (selector.startsWith('data-') && !selector.includes('%s')) {\n        return `[${selector}=\"${colorScheme}\"] &`;\n      }\n      if (selector === 'class') {\n        return `.${colorScheme} &`;\n      }\n      if (selector === 'data') {\n        return `[data-${colorScheme}] &`;\n      }\n      return `${selector.replace('%s', colorScheme)} &`;\n    }\n    return '&';\n  };\n}","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.desmos.com/calculator/vbrp3ggqet\n  return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = {\n    ...easing,\n    ...inputTransitions.easing\n  };\n  const mergedDuration = {\n    ...duration,\n    ...inputTransitions.duration\n  };\n  const create = (props = ['all'], options = {}) => {\n    const {\n      duration: durationOption = mergedDuration.standard,\n      easing: easingOption = mergedEasing.easeInOut,\n      delay = 0,\n      ...other\n    } = options;\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      const isNumber = value => !Number.isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (typeof options !== 'object') {\n        console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return {\n    getAutoHeightDuration,\n    create,\n    ...inputTransitions,\n    easing: mergedEasing,\n    duration: mergedDuration\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const {\n    fontFamily = defaultFontFamily,\n    // The default font size of the Material Specification.\n    fontSize = 14,\n    // px\n    fontWeightLight = 300,\n    fontWeightRegular = 400,\n    fontWeightMedium = 500,\n    fontWeightBold = 700,\n    // Tell MUI what's the font-size on the html element.\n    // 16px is the default font-size used by browsers.\n    htmlFontSize = 16,\n    // Apply the CSS properties to all the variants.\n    allVariants,\n    pxToRem: pxToRem2,\n    ...other\n  } = typeof typography === 'function' ? typography(palette) : typography;\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight,\n    // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n    // across font-families can cause issues with the kerning.\n    ...(fontFamily === defaultFontFamily ? {\n      letterSpacing: `${round(letterSpacing / size)}em`\n    } : {}),\n    ...casing,\n    ...allVariants\n  });\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n    // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n    inherit: {\n      fontFamily: 'inherit',\n      fontWeight: 'inherit',\n      fontSize: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  };\n  return deepmerge({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold,\n    ...variants\n  }, other, {\n    clone: false // No need to clone deep\n  });\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return Math.round(alphaValue * 10) / 1000;\n}","export default '$$material';","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","export default function shouldSkipGeneratingVar(keys) {\n  return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n  // ends with sxConfig\n  keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n  themeId: THEME_ID,\n  defaultTheme,\n  rootShouldForwardProp\n});\nexport default styled;","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","/**\n * Type guard to check if the object has a \"main\" property of type string.\n *\n * @param obj - the object to check\n * @returns boolean\n */\nfunction hasCorrectMainProperty(obj) {\n  return typeof obj.main === 'string';\n}\n/**\n * Checks if the object conforms to the SimplePaletteColorOptions type.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param obj - The object to check\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns boolean\n */\nfunction checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {\n  if (!hasCorrectMainProperty(obj)) {\n    return false;\n  }\n  for (const value of additionalPropertiesToCheck) {\n    if (!obj.hasOwnProperty(value) || typeof obj[value] !== 'string') {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Creates a filter function used to filter simple palette color options.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns ([, value]: [any, PaletteColorOptions]) => boolean\n */\nexport default function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {\n  return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);\n}","// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to\n// allocate more objects.\nconst arg = {\n  theme: undefined\n};\n\n/**\n * Memoize style function on theme.\n * Intended to be used in styled() calls that only need access to the theme.\n */\nexport default function memoTheme(styleFn) {\n  let lastValue;\n  let lastTheme;\n  return props => {\n    let value = lastValue;\n    if (value === undefined || props.theme !== lastTheme) {\n      arg.theme = props.theme;\n      value = styleFn(arg);\n      lastValue = value;\n      lastTheme = props.theme;\n    }\n    return value;\n  };\n}","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\n/* import type {\n  ElementType,\n  StatelessFunctionalComponent,\n  AbstractComponent\n} from 'react' */\n/*\nexport type Interpolations = Array<any>\n\nexport type StyledElementType<Props> =\n  | string\n  | AbstractComponent<{ ...Props, className: string }, mixed>\n\nexport type StyledOptions = {\n  label?: string,\n  shouldForwardProp?: string => boolean,\n  target?: string\n}\n\nexport type StyledComponent<Props> = StatelessFunctionalComponent<Props> & {\n  defaultProps: any,\n  toString: () => string,\n  withComponent: (\n    nextTag: StyledElementType<Props>,\n    nextOptions?: StyledOptions\n  ) => StyledComponent<Props>\n}\n\nexport type PrivateStyledComponent<Props> = StyledComponent<Props> & {\n  __emotion_real: StyledComponent<Props>,\n  __emotion_base: any,\n  __emotion_styles: any,\n  __emotion_forwardProp: any\n}\n*/\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key\n/*: string */\n) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag\n/*: ElementType */\n) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag\n/*: PrivateStyledComponent<any> */\n, options\n/*: StyledOptions | void */\n, isReal\n/*: boolean */\n) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName\n    /*: string */\n    ) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\n/*\nexport type CreateStyledComponent = <Props>(\n  ...args: Interpolations\n) => StyledComponent<Props>\n\nexport type CreateStyled = {\n  <Props>(\n    tag: StyledElementType<Props>,\n    options?: StyledOptions\n  ): (...args: Interpolations) => StyledComponent<Props>,\n  [key: string]: CreateStyledComponent,\n  bind: () => CreateStyled\n}\n*/\n\nvar isDevelopment = false;\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled\n/*: CreateStyled */\n= function createStyled\n/*: CreateStyled */\n(tag\n/*: any */\n, options\n/* ?: StyledOptions */\n) {\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  /* return function<Props>(): PrivateStyledComponent<Props> { */\n\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n\n        styles.push(args[i], args[0][i]);\n      }\n    }\n\n    var Styled\n    /*: PrivateStyledComponent<Props> */\n    = withEmotionCache(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = React.useContext(ThemeContext);\n      }\n\n      if (typeof props.className === 'string') {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if (finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n\n      if (ref) {\n        newProps.ref = ref;\n      }\n\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && isDevelopment) {\n          return 'NO_COMPONENT_SELECTOR';\n        }\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag\n    /*: StyledElementType<Props> */\n    , nextOptions\n    /* ?: StyledOptions */\n    ) {\n      return createStyled(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","/**\n * @mui/styled-engine v6.1.1\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n  value,\n  children\n}) {\n  return /*#__PURE__*/_jsx(PropsContext.Provider, {\n    value: value,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name]) {\n    return props;\n  }\n  const config = theme.components[name];\n  if (config.defaultProps) {\n    // compatible with v5 signature\n    return resolveProps(config.defaultProps, props);\n  }\n  if (!config.styleOverrides && !config.variants) {\n    // v6 signature, no property 'defaultProps'\n    return resolveProps(config, props);\n  }\n  return props;\n}\nexport function useDefaultProps({\n  props,\n  name\n}) {\n  const ctx = React.useContext(PropsContext);\n  return getThemeProps({\n    props,\n    name,\n    theme: {\n      components: ctx\n    }\n  });\n}\nexport default DefaultPropsProvider;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n  containerQueries: containerName => ({\n    up: key => {\n      let result = typeof key === 'number' ? key : values[key] || key;\n      if (typeof result === 'number') {\n        result = `${result}px`;\n      }\n      return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n    }\n  })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n        const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n        if (containerKey) {\n          acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n        }\n      }\n      // key is breakpoint\n      else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction({\n          theme,\n          ...props[key]\n        });\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n    ...styleFunction.propTypes,\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  } : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.includes('rgb')) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.includes('hsl')) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.includes('color')) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n  // Idempotent\n  if (color.startsWith('#')) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.includes('hsl')) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.includes('rgb') || color.type.includes('color')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.includes('hsl')) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.includes('rgb')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.includes('color')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return emphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return {\n      ...acc,\n      [obj.key]: obj.val\n    };\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n    // The breakpoint **start** at this value.\n    // For instance with the first breakpoint xs: [xs, sm).\n    values = {\n      xs: 0,\n      // phone\n      sm: 600,\n      // tablet\n      md: 900,\n      // small laptop\n      lg: 1200,\n      // desktop\n      xl: 1536 // large screen\n    },\n    unit = 'px',\n    step = 5,\n    ...other\n  } = breakpoints;\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return {\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit,\n    ...other\n  };\n}","/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction resolveTheme(themeId, theme, defaultTheme) {\n  return isObjectEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nconst PROCESSED_PROPS = Symbol('mui.processed_props');\nfunction attachTheme(props, themeId, defaultTheme) {\n  if (PROCESSED_PROPS in props) {\n    return props[PROCESSED_PROPS];\n  }\n  const processedProps = {\n    ...props,\n    theme: resolveTheme(themeId, props.theme, defaultTheme)\n  };\n  props[PROCESSED_PROPS] = processedProps;\n  processedProps[PROCESSED_PROPS] = processedProps;\n  return processedProps;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (_props, styles) => styles[slot];\n}\nfunction processStyle(style, props) {\n  const resolvedStyle = typeof style === 'function' ? style(props) : style;\n  if (Array.isArray(resolvedStyle)) {\n    return resolvedStyle.flatMap(subStyle => processStyle(subStyle, props));\n  }\n  if (Array.isArray(resolvedStyle?.variants)) {\n    const {\n      variants,\n      ...otherStyles\n    } = resolvedStyle;\n    let result = otherStyles;\n    let mergedState; // We might not need it, initalized lazily\n\n    /* eslint-disable no-labels */\n    variantLoop: for (let i = 0; i < variants.length; i += 1) {\n      const variant = variants[i];\n      if (typeof variant.props === 'function') {\n        mergedState ??= {\n          ...props,\n          ...props.ownerState,\n          ownerState: props.ownerState\n        };\n        if (!variant.props(mergedState)) {\n          continue;\n        }\n      } else {\n        for (const key in variant.props) {\n          if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n            continue variantLoop;\n          }\n        }\n      }\n      if (!Array.isArray(result)) {\n        result = [result];\n      }\n      if (typeof variant.style === 'function') {\n        mergedState ??= {\n          ...props,\n          ...props.ownerState,\n          ownerState: props.ownerState\n        };\n        result.push(variant.style(mergedState));\n      } else {\n        result.push(variant.style);\n      }\n    }\n    /* eslint-enable no-labels */\n\n    return result;\n  }\n  return resolvedStyle;\n}\nexport default function createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return styleFunctionSx(attachTheme(props, themeId, defaultTheme));\n  };\n  systemSx.__mui_systemSx = true;\n  const styled = (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    processStyles(tag, styles => styles.filter(style => !style?.__mui_systemSx));\n    const {\n      name: componentName,\n      slot: componentSlot,\n      skipVariantsResolver: inputSkipVariantsResolver,\n      skipSx: inputSkipSx,\n      // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n      // For more details: https://github.com/mui/material-ui/pull/37908\n      overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n      ...options\n    } = inputOptions;\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = styledEngineStyled(tag, {\n      shouldForwardProp: shouldForwardPropOption,\n      label,\n      ...options\n    });\n    const transformStyleArg = style => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof style === 'function' && style.__emotion_real !== style || isPlainObject(style)) {\n        return props => processStyle(style, attachTheme(props, themeId, defaultTheme));\n      }\n      return style;\n    };\n    const muiStyledResolver = (style, ...expressions) => {\n      let transformedStyle = transformStyleArg(style);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(themeId, props.theme, defaultTheme);\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          const propsWithTheme = attachTheme(props, themeId, defaultTheme);\n\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          // eslint-disable-next-line guard-for-in\n          for (const slotKey in styleOverrides) {\n            resolvedStyleOverrides[slotKey] = processStyle(styleOverrides[slotKey], propsWithTheme);\n          }\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(themeId, props.theme, defaultTheme);\n          const themeVariants = theme?.components?.[componentName]?.variants;\n          if (!themeVariants) {\n            return null;\n          }\n          return processStyle({\n            variants: themeVariants\n          }, attachTheme(props, themeId, defaultTheme));\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(style) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyle = [...style, ...placeholders];\n        transformedStyle.raw = [...style.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyle, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${capitalize(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${getDisplayName(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n  return styled;\n}\nfunction isObjectEmpty(object) {\n  // eslint-disable-next-line\n  for (const _ in object) {\n    return false;\n  }\n  return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n}","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n  spacing: spacingInput\n})) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","const shape = {\n  borderRadius: 4\n};\nexport default shape;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n *  - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n *  - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n *  - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n *   const Component = styled('div')(({ theme }) => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *       background: '#1c1c1c',\n *       color: '#fff',\n *     }),\n *   ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n *   <Box sx={theme => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *        background: '#1c1c1c',\n *        color: '#fff',\n *      }),\n *     ]}\n *   />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n *   extendTheme({\n *     components: {\n *       MuiButton: {\n *         styleOverrides: {\n *           root: ({ theme }) => [\n *             { background: '#e5e5e5' },\n *             theme.applyStyles('dark', {\n *               background: '#1c1c1c',\n *               color: '#fff',\n *             }),\n *           ],\n *         },\n *       }\n *     }\n *   })\n *```\n */\nexport default function applyStyles(key, styles) {\n  // @ts-expect-error this is 'any' type\n  const theme = this;\n  if (theme.vars) {\n    if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n      return {};\n    }\n    // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n    let selector = theme.getColorSchemeSelector(key);\n    if (selector === '&') {\n      return styles;\n    }\n    if (selector.includes('data-') || selector.includes('.')) {\n      // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n      selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n    }\n    return {\n      [selector]: styles\n    };\n  }\n  if (theme.palette.mode === key) {\n    return styles;\n  }\n  return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n  const {\n    breakpoints: breakpointsInput = {},\n    palette: paletteInput = {},\n    spacing: spacingInput,\n    shape: shapeInput = {},\n    ...other\n  } = options;\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: {\n      mode: 'light',\n      ...paletteInput\n    },\n    spacing,\n    shape: {\n      ...shape,\n      ...shapeInput\n    }\n  }, other);\n  muiTheme = cssContainerQueries(muiTheme);\n  muiTheme.applyStyles = applyStyles;\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...other?.unstable_sxConfig\n  };\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n *       e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n *            output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n  if (!theme.containerQueries) {\n    return css;\n  }\n  const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n    const regex = /min-width:\\s*([0-9.]+)/;\n    return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n  });\n  if (!sorted.length) {\n    return css;\n  }\n  return sorted.reduce((acc, key) => {\n    const value = css[key];\n    delete acc[key];\n    acc[key] = value;\n    return acc;\n  }, {\n    ...css\n  });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n  return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n  const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n  if (!matches) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\nFor example, \\`@sm\\` or \\`@600\\` or \\`@40rem/sidebar\\`.` : _formatMuiErrorMessage(18, `(${shorthand})`));\n    }\n    return null;\n  }\n  const [, containerQuery, containerName] = matches;\n  const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n  return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n  const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n  function attachCq(node, name) {\n    node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n    node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n    node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n    node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n    node.not = (...args) => {\n      const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n      if (result.includes('not all and')) {\n        // `@container` does not work with `not all and`, so need to invert the logic\n        return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n      }\n      return result;\n    };\n  }\n  const node = {};\n  const containerQueries = name => {\n    attachCq(node, name);\n    return node;\n  };\n  attachCq(containerQueries);\n  return {\n    ...themeInput,\n    containerQueries\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n  if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n    return val => {\n      if (typeof val === 'string') {\n        return val;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof val !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n        }\n      }\n      if (typeof themeSpacing === 'string') {\n        return `calc(${val} * ${themeSpacing})`;\n      }\n      return themeSpacing * val;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return val => {\n      if (typeof val === 'string') {\n        return val;\n      }\n      const abs = Math.abs(val);\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      const transformed = themeSpacing[abs];\n      if (val >= 0) {\n        return transformed;\n      }\n      if (typeof transformed === 'number') {\n        return -transformed;\n      }\n      return `-${transformed}`;\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (!keys.includes(prop)) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (props.theme?.breakpoints?.unit !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  font: {\n    themeKey: 'font'\n  },\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n  return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n   ---\n   These rules are preventing the performance optimizations below.\n */\n\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  for (const slotName in slots) {\n    const slot = slots[slotName];\n    let buffer = '';\n    let start = true;\n    for (let i = 0; i < slot.length; i += 1) {\n      const value = slot[i];\n      if (value) {\n        buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n        start = false;\n        if (classes && classes[value]) {\n          buffer += ' ' + classes[value];\n        }\n      }\n    }\n    output[slotName] = buffer;\n  }\n  return output;\n}","// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n  if (typeof item !== 'object' || item === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(item);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? {\n    ...target\n  } : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      if (isPlainObject(source[key]) &&\n      // Avoid prototype pollution\n      Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = {\n    ...props\n  };\n  for (const key in defaultProps) {\n    if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n      const propName = key;\n      if (propName === 'components' || propName === 'slots') {\n        output[propName] = {\n          ...defaultProps[propName],\n          ...output[propName]\n        };\n      } else if (propName === 'componentsProps' || propName === 'slotProps') {\n        const defaultSlotProps = defaultProps[propName];\n        const slotProps = props[propName];\n        if (!slotProps) {\n          output[propName] = defaultSlotProps || {};\n        } else if (!defaultSlotProps) {\n          output[propName] = slotProps;\n        } else {\n          output[propName] = {\n            ...slotProps\n          };\n          for (const slotKey in defaultSlotProps) {\n            if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n              const slotPropName = slotKey;\n              output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n            }\n          }\n        }\n      } else if (output[propName] === undefined) {\n        output[propName] = defaultProps[propName];\n      }\n    }\n  }\n  return output;\n}","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Buffer } from 'buffer'\nimport {\n  GenericFilehandle,\n  FilehandleOptions,\n  Stats,\n  Fetcher,\n  PolyfilledResponse,\n} from './filehandle'\n\nfunction getMessage(e: unknown) {\n  const r =\n    typeof e === 'object' && e !== null && 'message' in e\n      ? (e.message as string)\n      : `${e}`\n  return r.replace(/\\.$/, '')\n}\n\nexport default class RemoteFile implements GenericFilehandle {\n  protected url: string\n  private _stat?: Stats\n  private fetchImplementation: Fetcher\n  private baseOverrides: any = {}\n\n  private async getBufferFromResponse(\n    response: PolyfilledResponse,\n  ): Promise<Buffer> {\n    const resp = await response.arrayBuffer()\n    return Buffer.from(resp)\n  }\n\n  public constructor(source: string, opts: FilehandleOptions = {}) {\n    this.url = source\n    const fetch = opts.fetch || globalThis.fetch.bind(globalThis)\n    if (!fetch) {\n      throw new TypeError(\n        `no fetch function supplied, and none found in global environment`,\n      )\n    }\n    if (opts.overrides) {\n      this.baseOverrides = opts.overrides\n    }\n    this.fetchImplementation = fetch\n  }\n\n  public async fetch(\n    input: RequestInfo,\n    init: RequestInit | undefined,\n  ): Promise<PolyfilledResponse> {\n    let response\n    try {\n      response = await this.fetchImplementation(input, init)\n    } catch (e) {\n      if (`${e}`.includes('Failed to fetch')) {\n        // refetch to to help work around a chrome bug (discussed in\n        // generic-filehandle issue #72) in which the chrome cache returns a\n        // CORS error for content in its cache.  see also\n        // https://github.com/GMOD/jbrowse-components/pull/1511\n        console.warn(\n          `generic-filehandle: refetching ${input} to attempt to work around chrome CORS header caching bug`,\n        )\n        try {\n          response = await this.fetchImplementation(input, {\n            ...init,\n            cache: 'reload',\n          })\n        } catch (e) {\n          throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })\n        }\n      } else {\n        throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })\n      }\n    }\n    return response\n  }\n\n  public async read(\n    buffer: Buffer,\n    offset = 0,\n    length: number,\n    position = 0,\n    opts: FilehandleOptions = {},\n  ): Promise<{ bytesRead: number; buffer: Buffer }> {\n    const { headers = {}, signal, overrides = {} } = opts\n    if (length < Infinity) {\n      headers.range = `bytes=${position}-${position + length}`\n    } else if (length === Infinity && position !== 0) {\n      headers.range = `bytes=${position}-`\n    }\n    const res = await this.fetch(this.url, {\n      ...this.baseOverrides,\n      ...overrides,\n      headers: {\n        ...headers,\n        ...overrides.headers,\n        ...this.baseOverrides.headers,\n      },\n      method: 'GET',\n      redirect: 'follow',\n      mode: 'cors',\n      signal,\n    })\n\n    if (!res.ok) {\n      throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n    }\n\n    if ((res.status === 200 && position === 0) || res.status === 206) {\n      const resData = await this.getBufferFromResponse(res)\n      const bytesCopied = resData.copy(\n        buffer,\n        offset,\n        0,\n        Math.min(length, resData.length),\n      )\n\n      // try to parse out the size of the remote file\n      const contentRange = res.headers.get('content-range')\n      const sizeMatch = /\\/(\\d+)$/.exec(contentRange || '')\n      if (sizeMatch?.[1]) {\n        this._stat = { size: parseInt(sizeMatch[1], 10) }\n      }\n\n      return { bytesRead: bytesCopied, buffer }\n    }\n\n    if (res.status === 200) {\n      throw new Error(`${this.url} fetch returned status 200, expected 206`)\n    }\n\n    // TODO: try harder here to gather more information about what the problem is\n    throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n  }\n\n  public async readFile(): Promise<Buffer>\n  public async readFile(options: BufferEncoding): Promise<string>\n  public async readFile<T extends undefined>(\n    options:\n      | Omit<FilehandleOptions, 'encoding'>\n      | (Omit<FilehandleOptions, 'encoding'> & { encoding: T }),\n  ): Promise<Buffer>\n  public async readFile<T extends BufferEncoding>(\n    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },\n  ): Promise<string>\n  readFile<T extends BufferEncoding>(\n    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },\n  ): T extends BufferEncoding ? Promise<Buffer> : Promise<Buffer | string>\n  public async readFile(\n    options: FilehandleOptions | BufferEncoding = {},\n  ): Promise<Buffer | string> {\n    let encoding\n    let opts\n    if (typeof options === 'string') {\n      encoding = options\n      opts = {}\n    } else {\n      encoding = options.encoding\n      opts = options\n      delete opts.encoding\n    }\n    const { headers = {}, signal, overrides = {} } = opts\n    const res = await this.fetch(this.url, {\n      headers,\n      method: 'GET',\n      redirect: 'follow',\n      mode: 'cors',\n      signal,\n      ...this.baseOverrides,\n      ...overrides,\n    })\n    if (res.status !== 200) {\n      throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n    }\n    if (encoding === 'utf8') {\n      return res.text()\n    } else if (encoding) {\n      throw new Error(`unsupported encoding: ${encoding}`)\n    } else {\n      return this.getBufferFromResponse(res)\n    }\n  }\n\n  public async stat(): Promise<Stats> {\n    if (!this._stat) {\n      const buf = Buffer.allocUnsafe(10)\n      await this.read(buf, 0, 10, 0)\n      if (!this._stat) {\n        throw new Error(`unable to determine size of file at ${this.url}`)\n      }\n    }\n    return this._stat\n  }\n\n  public async close(): Promise<void> {\n    return\n  }\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\nconst isFunctionNameConfigurable =\n    Object.getOwnPropertyDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n    ? Symbol.for(\"react.forward_ref\")\n    : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n    ? Symbol.for(\"react.memo\")\n    : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n    readonly forwardRef?: boolean\n}\n\nexport function observer<P extends object, TRef = {}>(\n    baseComponent: React.ForwardRefRenderFunction<TRef, P>,\n    options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n    React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object, TRef = {}>(\n    baseComponent: React.ForwardRefExoticComponent<\n        React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n    >\n): React.MemoExoticComponent<\n    React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object>(\n    baseComponent: React.FunctionComponent<P>,\n    options?: IObserverOptions\n): React.FunctionComponent<P>\n\nexport function observer<\n    C extends React.FunctionComponent<any> | React.ForwardRefRenderFunction<any>,\n    Options extends IObserverOptions\n>(\n    baseComponent: C,\n    options?: Options\n): Options extends { forwardRef: true }\n    ? C extends React.ForwardRefRenderFunction<infer TRef, infer P>\n        ? C &\n              React.MemoExoticComponent<\n                  React.ForwardRefExoticComponent<\n                      React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n                  >\n              >\n        : never /* forwardRef set for a non forwarding component */\n    : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer<P extends object, TRef = {}>(\n    baseComponent:\n        | React.ForwardRefRenderFunction<TRef, P>\n        | React.FunctionComponent<P>\n        | React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>,\n    // TODO remove in next major\n    options?: IObserverOptions\n) {\n    if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n        warnObserverOptionsDeprecated = false\n        console.warn(\n            `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n        )\n    }\n\n    if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n        throw new Error(\n            `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n        )\n    }\n\n    // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n    if (isUsingStaticRendering()) {\n        return baseComponent\n    }\n\n    let useForwardRef = options?.forwardRef ?? false\n    let render = baseComponent\n\n    const baseComponentName = baseComponent.displayName || baseComponent.name\n\n    // If already wrapped with forwardRef, unwrap,\n    // so we can patch render and apply memo\n    if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n        useForwardRef = true\n        render = baseComponent[\"render\"]\n        if (typeof render !== \"function\") {\n            throw new Error(\n                `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n            )\n        }\n    }\n\n    let observerComponent = (props: any, ref: React.Ref<TRef>) => {\n        return useObserver(() => render(props, ref), baseComponentName)\n    }\n\n    // Inherit original name and displayName, see #3438\n    ;(observerComponent as React.FunctionComponent).displayName = baseComponent.displayName\n\n    if (isFunctionNameConfigurable) {\n        Object.defineProperty(observerComponent, \"name\", {\n            value: baseComponent.name,\n            writable: true,\n            configurable: true\n        })\n    }\n\n    // Support legacy context: `contextTypes` must be applied before `memo`\n    if ((baseComponent as any).contextTypes) {\n        ;(observerComponent as React.FunctionComponent).contextTypes = (\n            baseComponent as any\n        ).contextTypes\n    }\n\n    if (useForwardRef) {\n        // `forwardRef` must be applied prior `memo`\n        // `forwardRef(observer(cmp))` throws:\n        // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n        observerComponent = forwardRef(observerComponent)\n    }\n\n    // memo; we are not interested in deep updates\n    // in props; we assume that if deep objects are changed,\n    // this is in observables, which would have been tracked anyway\n    observerComponent = memo(observerComponent)\n\n    copyStaticProperties(baseComponent, observerComponent)\n\n    if (\"production\" !== process.env.NODE_ENV) {\n        Object.defineProperty(observerComponent, \"contextTypes\", {\n            set() {\n                throw new Error(\n                    `[mobx-react-lite] \\`${\n                        this.displayName || this.type?.displayName || this.type?.name || \"Component\"\n                    }.contextTypes\\` must be set before applying \\`observer\\`.`\n                )\n            }\n        })\n    }\n\n    return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n    $$typeof: true,\n    render: true,\n    compare: true,\n    type: true,\n    // Don't redefine `displayName`,\n    // it's defined as getter-setter pair on `memo` (see #3192).\n    displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n    Object.keys(base).forEach(key => {\n        if (!hoistBlackList[key]) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n        }\n    })\n}\n","import { isComputedProp, isObservableProp, createAtom, action, computed, _allowStateChangesInsideComputed, reaction, runInAction, observable, values, entries, _getGlobalState, isObservableArray, isObservableObject, defineProperty as defineProperty$1, ObservableMap, _interceptReads, intercept, observe, _getAdministration, set, makeObservable, getAtom, when } from 'mobx';\n\nvar livelinessChecking = \"warn\";\n/**\n * Defines what MST should do when running into reads / writes to objects that have died.\n * By default it will print a warning.\n * Use the `\"error\"` option to easy debugging to see where the error was thrown and when the offending read / write took place\n *\n * @param mode `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction setLivelinessChecking(mode) {\n    livelinessChecking = mode;\n}\n/**\n * Returns the current liveliness checking mode.\n *\n * @returns `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction getLivelinessChecking() {\n    return livelinessChecking;\n}\n/**\n * @deprecated use setLivelinessChecking instead\n * @hidden\n *\n * Defines what MST should do when running into reads / writes to objects that have died.\n * By default it will print a warning.\n * Use the `\"error\"` option to easy debugging to see where the error was thrown and when the offending read / write took place\n *\n * @param mode `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction setLivelynessChecking(mode) {\n    setLivelinessChecking(mode);\n}\n\n/**\n * @hidden\n */\nvar Hook;\n(function (Hook) {\n    Hook[\"afterCreate\"] = \"afterCreate\";\n    Hook[\"afterAttach\"] = \"afterAttach\";\n    Hook[\"afterCreationFinalization\"] = \"afterCreationFinalization\";\n    Hook[\"beforeDetach\"] = \"beforeDetach\";\n    Hook[\"beforeDestroy\"] = \"beforeDestroy\";\n})(Hook || (Hook = {}));\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\n\n/**\n * Returns the _actual_ type of the given tree node. (Or throws)\n *\n * @param object\n * @returns\n */\nfunction getType(object) {\n    assertIsStateTreeNode(object, 1);\n    return getStateTreeNode(object).type;\n}\n/**\n * Returns the _declared_ type of the given sub property of an object, array or map.\n * In the case of arrays and maps the property name is optional and will be ignored.\n *\n * Example:\n * ```ts\n * const Box = types.model({ x: 0, y: 0 })\n * const box = Box.create()\n *\n * console.log(getChildType(box, \"x\").name) // 'number'\n * ```\n *\n * @param object\n * @param propertyName\n * @returns\n */\nfunction getChildType(object, propertyName) {\n    assertIsStateTreeNode(object, 1);\n    return getStateTreeNode(object).getChildType(propertyName);\n}\n/**\n * Registers a function that will be invoked for each mutation that is applied to the provided model instance, or to any of its children.\n * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details. onPatch events are emitted immediately and will not await the end of a transaction.\n * Patches can be used to deeply observe a model tree.\n *\n * @param target the model instance from which to receive patches\n * @param callback the callback that is invoked for each patch. The reversePatch is a patch that would actually undo the emitted patch\n * @returns function to remove the listener\n */\nfunction onPatch(target, callback) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(callback, 2);\n    return getStateTreeNode(target).onPatch(callback);\n}\n/**\n * Registers a function that is invoked whenever a new snapshot for the given model instance is available.\n * The listener will only be fire at the end of the current MobX (trans)action.\n * See [snapshots](https://github.com/mobxjs/mobx-state-tree#snapshots) for more details.\n *\n * @param target\n * @param callback\n * @returns\n */\nfunction onSnapshot(target, callback) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(callback, 2);\n    return getStateTreeNode(target).onSnapshot(callback);\n}\n/**\n * Applies a JSON-patch to the given model instance or bails out if the patch couldn't be applied\n * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details.\n *\n * Can apply a single past, or an array of patches.\n *\n * @param target\n * @param patch\n * @returns\n */\nfunction applyPatch(target, patch) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertArg(patch, function (p) { return typeof p === \"object\"; }, \"object or array\", 2);\n    getStateTreeNode(target).applyPatches(asArray(patch));\n}\n/**\n * Small abstraction around `onPatch` and `applyPatch`, attaches a patch listener to a tree and records all the patches.\n * Returns a recorder object with the following signature:\n *\n * Example:\n * ```ts\n * export interface IPatchRecorder {\n *      // the recorded patches\n *      patches: IJsonPatch[]\n *      // the inverse of the recorded patches\n *      inversePatches: IJsonPatch[]\n *      // true if currently recording\n *      recording: boolean\n *      // stop recording patches\n *      stop(): void\n *      // resume recording patches\n *      resume(): void\n *      // apply all the recorded patches on the given target (the original subject if omitted)\n *      replay(target?: IAnyStateTreeNode): void\n *      // reverse apply the recorded patches on the given target  (the original subject if omitted)\n *      // stops the recorder if not already stopped\n *      undo(): void\n * }\n * ```\n *\n * The optional filter function allows to skip recording certain patches.\n *\n * @param subject\n * @param filter\n * @returns\n */\nfunction recordPatches(subject, filter) {\n    // check all arguments\n    assertIsStateTreeNode(subject, 1);\n    var data = {\n        patches: [],\n        inversePatches: []\n    };\n    // we will generate the immutable copy of patches on demand for public consumption\n    var publicData = {};\n    var disposer;\n    var recorder = {\n        get recording() {\n            return !!disposer;\n        },\n        get patches() {\n            if (!publicData.patches) {\n                publicData.patches = data.patches.slice();\n            }\n            return publicData.patches;\n        },\n        get reversedInversePatches() {\n            if (!publicData.reversedInversePatches) {\n                publicData.reversedInversePatches = data.inversePatches.slice().reverse();\n            }\n            return publicData.reversedInversePatches;\n        },\n        get inversePatches() {\n            if (!publicData.inversePatches) {\n                publicData.inversePatches = data.inversePatches.slice();\n            }\n            return publicData.inversePatches;\n        },\n        stop: function () {\n            if (disposer) {\n                disposer();\n                disposer = undefined;\n            }\n        },\n        resume: function () {\n            if (disposer)\n                return;\n            disposer = onPatch(subject, function (patch, inversePatch) {\n                // skip patches that are asked to be filtered if there's a filter in place\n                if (filter && !filter(patch, inversePatch, getRunningActionContext())) {\n                    return;\n                }\n                data.patches.push(patch);\n                data.inversePatches.push(inversePatch);\n                // mark immutable public patches as dirty\n                publicData.patches = undefined;\n                publicData.inversePatches = undefined;\n                publicData.reversedInversePatches = undefined;\n            });\n        },\n        replay: function (target) {\n            applyPatch(target || subject, data.patches);\n        },\n        undo: function (target) {\n            applyPatch(target || subject, data.inversePatches.slice().reverse());\n        }\n    };\n    recorder.resume();\n    return recorder;\n}\n/**\n * The inverse of `unprotect`.\n *\n * @param target\n */\nfunction protect(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (!node.isRoot)\n        throw fail(\"`protect` can only be invoked on root nodes\");\n    node.isProtectionEnabled = true;\n}\n/**\n * By default it is not allowed to directly modify a model. Models can only be modified through actions.\n * However, in some cases you don't care about the advantages (like replayability, traceability, etc) this yields.\n * For example because you are building a PoC or don't have any middleware attached to your tree.\n *\n * In that case you can disable this protection by calling `unprotect` on the root of your tree.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *     done: false\n * }).actions(self => ({\n *     toggle() {\n *         self.done = !self.done\n *     }\n * }))\n *\n * const todo = Todo.create()\n * todo.done = true // throws!\n * todo.toggle() // OK\n * unprotect(todo)\n * todo.done = false // OK\n * ```\n */\nfunction unprotect(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (!node.isRoot)\n        throw fail(\"`unprotect` can only be invoked on root nodes\");\n    node.isProtectionEnabled = false;\n}\n/**\n * Returns true if the object is in protected mode, @see protect\n */\nfunction isProtected(target) {\n    return getStateTreeNode(target).isProtected;\n}\n/**\n * Applies a snapshot to a given model instances. Patch and snapshot listeners will be invoked as usual.\n *\n * @param target\n * @param snapshot\n * @returns\n */\nfunction applySnapshot(target, snapshot) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).applySnapshot(snapshot);\n}\n/**\n * Calculates a snapshot from the given model instance. The snapshot will always reflect the latest state but use\n * structural sharing where possible. Doesn't require MobX transactions to be completed.\n *\n * @param target\n * @param applyPostProcess If true (the default) then postProcessSnapshot gets applied.\n * @returns\n */\nfunction getSnapshot(target, applyPostProcess) {\n    if (applyPostProcess === void 0) { applyPostProcess = true; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (applyPostProcess)\n        return node.snapshot;\n    return freeze(node.type.getSnapshot(node, false));\n}\n/**\n * Given a model instance, returns `true` if the object has a parent, that is, is part of another object, map or array.\n *\n * @param target\n * @param depth How far should we look upward? 1 by default.\n * @returns\n */\nfunction hasParent(target, depth) {\n    if (depth === void 0) { depth = 1; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsNumber(depth, 2, 0);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (--depth === 0)\n            return true;\n        parent = parent.parent;\n    }\n    return false;\n}\n/**\n * Returns the immediate parent of this object, or throws.\n *\n * Note that the immediate parent can be either an object, map or array, and\n * doesn't necessarily refer to the parent model.\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired.\n *\n * @param target\n * @param depth How far should we look upward? 1 by default.\n * @returns\n */\nfunction getParent(target, depth) {\n    if (depth === void 0) { depth = 1; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsNumber(depth, 2, 0);\n    var d = depth;\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (--d === 0)\n            return parent.storedValue;\n        parent = parent.parent;\n    }\n    throw fail(\"Failed to find the parent of \" + getStateTreeNode(target) + \" at depth \" + depth);\n}\n/**\n * Given a model instance, returns `true` if the object has a parent of given type, that is, is part of another object, map or array\n *\n * @param target\n * @param type\n * @returns\n */\nfunction hasParentOfType(target, type) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsType(type, 2);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (type.is(parent.storedValue))\n            return true;\n        parent = parent.parent;\n    }\n    return false;\n}\n/**\n * Returns the target's parent of a given type, or throws.\n *\n * @param target\n * @param type\n * @returns\n */\nfunction getParentOfType(target, type) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsType(type, 2);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (type.is(parent.storedValue))\n            return parent.storedValue;\n        parent = parent.parent;\n    }\n    throw fail(\"Failed to find the parent of \" + getStateTreeNode(target) + \" of a given type\");\n}\n/**\n * Given an object in a model tree, returns the root object of that tree.\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired.\n *\n * @param target\n * @returns\n */\nfunction getRoot(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).root.storedValue;\n}\n/**\n * Returns the path of the given object in the model tree\n *\n * @param target\n * @returns\n */\nfunction getPath(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).path;\n}\n/**\n * Returns the path of the given object as unescaped string array.\n *\n * @param target\n * @returns\n */\nfunction getPathParts(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return splitJsonPath(getStateTreeNode(target).path);\n}\n/**\n * Returns true if the given object is the root of a model tree.\n *\n * @param target\n * @returns\n */\nfunction isRoot(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).isRoot;\n}\n/**\n * Resolves a path relatively to a given object.\n * Returns undefined if no value can be found.\n *\n * @param target\n * @param path escaped json path\n * @returns\n */\nfunction resolvePath(target, path) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsString(path, 2);\n    var node = resolveNodeByPath(getStateTreeNode(target), path);\n    return node ? node.value : undefined;\n}\n/**\n * Resolves a model instance given a root target, the type and the identifier you are searching for.\n * Returns undefined if no value can be found.\n *\n * @param type\n * @param target\n * @param identifier\n * @returns\n */\nfunction resolveIdentifier(type, target, identifier) {\n    // check all arguments\n    assertIsType(type, 1);\n    assertIsStateTreeNode(target, 2);\n    assertIsValidIdentifier(identifier, 3);\n    var node = getStateTreeNode(target).root.identifierCache.resolve(type, normalizeIdentifier(identifier));\n    return node === null || node === void 0 ? void 0 : node.value;\n}\n/**\n * Returns the identifier of the target node.\n * This is the *string normalized* identifier, which might not match the type of the identifier attribute\n *\n * @param target\n * @returns\n */\nfunction getIdentifier(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).identifier;\n}\n/**\n * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns such reference if the check passes,\n * else it returns undefined.\n *\n * @param getter Function to access the reference.\n * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.\n * @returns\n */\nfunction tryReference(getter, checkIfAlive) {\n    if (checkIfAlive === void 0) { checkIfAlive = true; }\n    try {\n        var node = getter();\n        if (node === undefined || node === null) {\n            return undefined;\n        }\n        else if (isStateTreeNode(node)) {\n            if (!checkIfAlive) {\n                return node;\n            }\n            else {\n                return isAlive(node) ? node : undefined;\n            }\n        }\n        else {\n            throw fail(\"The reference to be checked is not one of node, null or undefined\");\n        }\n    }\n    catch (e) {\n        if (e instanceof InvalidReferenceError) {\n            return undefined;\n        }\n        throw e;\n    }\n}\n/**\n * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns if the check passes or not.\n *\n * @param getter Function to access the reference.\n * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.\n * @returns\n */\nfunction isValidReference(getter, checkIfAlive) {\n    if (checkIfAlive === void 0) { checkIfAlive = true; }\n    try {\n        var node = getter();\n        if (node === undefined || node === null) {\n            return false;\n        }\n        else if (isStateTreeNode(node)) {\n            return checkIfAlive ? isAlive(node) : true;\n        }\n        else {\n            throw fail(\"The reference to be checked is not one of node, null or undefined\");\n        }\n    }\n    catch (e) {\n        if (e instanceof InvalidReferenceError) {\n            return false;\n        }\n        throw e;\n    }\n}\n/**\n * Try to resolve a given path relative to a given node.\n *\n * @param target\n * @param path\n * @returns\n */\nfunction tryResolve(target, path) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsString(path, 2);\n    var node = resolveNodeByPath(getStateTreeNode(target), path, false);\n    if (node === undefined)\n        return undefined;\n    try {\n        return node.value;\n    }\n    catch (e) {\n        // For what ever reason not resolvable (e.g. totally not existing path, or value that cannot be fetched)\n        // see test / issue: 'try resolve doesn't work #686'\n        return undefined;\n    }\n}\n/**\n * Given two state tree nodes that are part of the same tree,\n * returns the shortest jsonpath needed to navigate from the one to the other\n *\n * @param base\n * @param target\n * @returns\n */\nfunction getRelativePath(base, target) {\n    // check all arguments\n    assertIsStateTreeNode(base, 1);\n    assertIsStateTreeNode(target, 2);\n    return getRelativePathBetweenNodes(getStateTreeNode(base), getStateTreeNode(target));\n}\n/**\n * Returns a deep copy of the given state tree node as new tree.\n * Shorthand for `snapshot(x) = getType(x).create(getSnapshot(x))`\n *\n * _Tip: clone will create a literal copy, including the same identifiers. To modify identifiers etc. during cloning, don't use clone but take a snapshot of the tree, modify it, and create new instance_\n *\n * @param source\n * @param keepEnvironment indicates whether the clone should inherit the same environment (`true`, the default), or not have an environment (`false`). If an object is passed in as second argument, that will act as the environment for the cloned tree.\n * @returns\n */\nfunction clone(source, keepEnvironment) {\n    if (keepEnvironment === void 0) { keepEnvironment = true; }\n    // check all arguments\n    assertIsStateTreeNode(source, 1);\n    var node = getStateTreeNode(source);\n    return node.type.create(node.snapshot, keepEnvironment === true\n        ? node.root.environment\n        : keepEnvironment === false\n            ? undefined\n            : keepEnvironment); // it's an object or something else\n}\n/**\n * Removes a model element from the state tree, and let it live on as a new state tree\n */\nfunction detach(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    getStateTreeNode(target).detach();\n    return target;\n}\n/**\n * Removes a model element from the state tree, and mark it as end-of-life; the element should not be used anymore\n */\nfunction destroy(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (node.isRoot)\n        node.die();\n    else\n        node.parent.removeChild(node.subpath);\n}\n/**\n * Returns true if the given state tree node is not killed yet.\n * This means that the node is still a part of a tree, and that `destroy`\n * has not been called. If a node is not alive anymore, the only thing one can do with it\n * is requesting it's last path and snapshot\n *\n * @param target\n * @returns\n */\nfunction isAlive(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).observableIsAlive;\n}\n/**\n * Use this utility to register a function that should be called whenever the\n * targeted state tree node is destroyed. This is a useful alternative to managing\n * cleanup methods yourself using the `beforeDestroy` hook.\n *\n * This methods returns the same disposer that was passed as argument.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   title: types.string\n * }).actions(self => ({\n *   afterCreate() {\n *     const autoSaveDisposer = reaction(\n *       () => getSnapshot(self),\n *       snapshot => sendSnapshotToServerSomehow(snapshot)\n *     )\n *     // stop sending updates to server if this\n *     // instance is destroyed\n *     addDisposer(self, autoSaveDisposer)\n *   }\n * }))\n * ```\n *\n * @param target\n * @param disposer\n * @returns The same disposer that was passed as argument\n */\nfunction addDisposer(target, disposer) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(disposer, 2);\n    var node = getStateTreeNode(target);\n    node.addDisposer(disposer);\n    return disposer;\n}\n/**\n * Returns the environment of the current state tree. For more info on environments,\n * see [Dependency injection](https://github.com/mobxjs/mobx-state-tree#dependency-injection)\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired\n *\n * Returns an empty environment if the tree wasn't initialized with an environment\n *\n * @param target\n * @returns\n */\nfunction getEnv(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    var env = node.root.environment;\n    if (!env)\n        return EMPTY_OBJECT;\n    return env;\n}\n/**\n * Performs a depth first walk through a tree.\n */\nfunction walk(target, processor) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(processor, 2);\n    var node = getStateTreeNode(target);\n    // tslint:disable-next-line:no_unused-variable\n    node.getChildren().forEach(function (child) {\n        if (isStateTreeNode(child.storedValue))\n            walk(child.storedValue, processor);\n    });\n    processor(node.storedValue);\n}\n/**\n * Returns a reflection of the model type properties and name for either a model type or model node.\n *\n * @param typeOrNode\n * @returns\n */\nfunction getPropertyMembers(typeOrNode) {\n    var type;\n    if (isStateTreeNode(typeOrNode)) {\n        type = getType(typeOrNode);\n    }\n    else {\n        type = typeOrNode;\n    }\n    assertArg(type, function (t) { return isModelType(t); }, \"model type or model instance\", 1);\n    return {\n        name: type.name,\n        properties: __assign({}, type.properties)\n    };\n}\n/**\n * Returns a reflection of the model node, including name, properties, views, volatile state,\n * and actions. `flowActions` is also provided as a separate array of names for any action that\n * came from a flow generator as well.\n *\n * In the case where a model has two actions: `doSomething` and `doSomethingWithFlow`, where\n * `doSomethingWithFlow` is a flow generator, the `actions` array will contain both actions,\n * i.e. [\"doSomething\", \"doSomethingWithFlow\"], and the `flowActions` array will contain only\n * the flow action, i.e. [\"doSomethingWithFlow\"].\n *\n * @param target\n * @returns\n */\nfunction getMembers(target) {\n    var type = getStateTreeNode(target).type;\n    var reflected = __assign(__assign({}, getPropertyMembers(type)), { actions: [], volatile: [], views: [], flowActions: [] });\n    var props = Object.getOwnPropertyNames(target);\n    props.forEach(function (key) {\n        if (key in reflected.properties)\n            return;\n        var descriptor = Object.getOwnPropertyDescriptor(target, key);\n        if (descriptor.get) {\n            if (isComputedProp(target, key))\n                reflected.views.push(key);\n            else\n                reflected.volatile.push(key);\n            return;\n        }\n        if (descriptor.value._isFlowAction === true) {\n            reflected.flowActions.push(key);\n        }\n        if (descriptor.value._isMSTAction === true) {\n            reflected.actions.push(key);\n        }\n        else if (isObservableProp(target, key)) {\n            reflected.volatile.push(key);\n        }\n        else {\n            reflected.views.push(key);\n        }\n    });\n    return reflected;\n}\n/**\n * Casts a node snapshot or instance type to an instance type so it can be assigned to a type instance.\n * Note that this is just a cast for the type system, this is, it won't actually convert a snapshot to an instance,\n * but just fool typescript into thinking so.\n * Either way, casting when outside an assignation operation won't compile.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   innerModel: ModelA\n * }).actions(self => ({\n *   someAction() {\n *     // this will allow the compiler to assign a snapshot to the property\n *     self.innerModel = cast({ a: 5 })\n *   }\n * }))\n * ```\n *\n * @param snapshotOrInstance Snapshot or instance\n * @returns The same object cast as an instance\n */\nfunction cast(snapshotOrInstance) {\n    return snapshotOrInstance;\n}\n/**\n * Casts a node instance type to a snapshot type so it can be assigned to a type snapshot (e.g. to be used inside a create call).\n * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a snapshot,\n * but just fool typescript into thinking so.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   innerModel: ModelA\n * })\n *\n * const a = ModelA.create({ n: 5 });\n * // this will allow the compiler to use a model as if it were a snapshot\n * const b = ModelB.create({ innerModel: castToSnapshot(a)})\n * ```\n *\n * @param snapshotOrInstance Snapshot or instance\n * @returns The same object cast as an input (creation) snapshot\n */\nfunction castToSnapshot(snapshotOrInstance) {\n    return snapshotOrInstance;\n}\n/**\n * Casts a node instance type to a reference snapshot type so it can be assigned to a reference snapshot (e.g. to be used inside a create call).\n * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a reference snapshot,\n * but just fool typescript into thinking so.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   id: types.identifier,\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   refA: types.reference(ModelA)\n * })\n *\n * const a = ModelA.create({ id: 'someId', n: 5 });\n * // this will allow the compiler to use a model as if it were a reference snapshot\n * const b = ModelB.create({ refA: castToReferenceSnapshot(a)})\n * ```\n *\n * @param instance Instance\n * @returns The same object cast as a reference snapshot (string or number)\n */\nfunction castToReferenceSnapshot(instance) {\n    return instance;\n}\n/**\n * Returns the unique node id (not to be confused with the instance identifier) for a\n * given instance.\n * This id is a number that is unique for each instance.\n *\n * @export\n * @param target\n * @returns\n */\nfunction getNodeId(target) {\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).nodeId;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar BaseNode = /** @class */ (function () {\n    function BaseNode(type, parent, subpath, environment) {\n        Object.defineProperty(this, \"type\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: type\n        });\n        Object.defineProperty(this, \"environment\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: environment\n        });\n        Object.defineProperty(this, \"_escapedSubpath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_subpath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_subpathUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_pathUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"storedValue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        }); // usually the same type as the value, but not always (such as with references)\n        Object.defineProperty(this, \"aliveAtom\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_state\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: NodeLifeCycle.INITIALIZING\n        });\n        Object.defineProperty(this, \"_hookSubscribers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_parent\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"pathAtom\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.environment = environment;\n        this.baseSetParent(parent, subpath);\n    }\n    Object.defineProperty(BaseNode.prototype, \"subpath\", {\n        get: function () {\n            return this._subpath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"subpathUponDeath\", {\n        get: function () {\n            return this._subpathUponDeath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"pathUponDeath\", {\n        get: function () {\n            return this._pathUponDeath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"value\", {\n        get: function () {\n            return this.type.getValue(this);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"state\", {\n        get: function () {\n            return this._state;\n        },\n        set: function (val) {\n            var wasAlive = this.isAlive;\n            this._state = val;\n            var isAlive = this.isAlive;\n            if (this.aliveAtom && wasAlive !== isAlive) {\n                this.aliveAtom.reportChanged();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"fireInternalHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            if (this._hookSubscribers) {\n                this._hookSubscribers.emit(name, this, name);\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"registerHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hook, hookHandler) {\n            if (!this._hookSubscribers) {\n                this._hookSubscribers = new EventHandlers();\n            }\n            return this._hookSubscribers.register(hook, hookHandler);\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"parent\", {\n        get: function () {\n            return this._parent;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"getReconciliationType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseSetParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath) {\n            this._parent = parent;\n            this._subpath = subpath;\n            this._escapedSubpath = undefined; // regenerate when needed\n            if (this.pathAtom) {\n                this.pathAtom.reportChanged();\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"path\", {\n        /*\n         * Returns (escaped) path representation as string\n         */\n        get: function () {\n            return this.getEscapedPath(true);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"getEscapedPath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (reportObserved) {\n            if (reportObserved) {\n                if (!this.pathAtom) {\n                    this.pathAtom = createAtom(\"path\");\n                }\n                this.pathAtom.reportObserved();\n            }\n            if (!this.parent)\n                return \"\";\n            // regenerate escaped subpath if needed\n            if (this._escapedSubpath === undefined) {\n                this._escapedSubpath = !this._subpath ? \"\" : escapeJsonPath(this._subpath);\n            }\n            return this.parent.getEscapedPath(reportObserved) + \"/\" + this._escapedSubpath;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"isRoot\", {\n        get: function () {\n            return this.parent === null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"isAlive\", {\n        get: function () {\n            return this.state !== NodeLifeCycle.DEAD;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"isDetaching\", {\n        get: function () {\n            return this.state === NodeLifeCycle.DETACHING;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"observableIsAlive\", {\n        get: function () {\n            if (!this.aliveAtom) {\n                this.aliveAtom = createAtom(\"alive\");\n            }\n            this.aliveAtom.reportObserved();\n            return this.isAlive;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseFinalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (whenFinalized) {\n            if (devMode()) {\n                if (!this.isAlive) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: cannot finalize the creation of a node that is already dead\");\n                }\n            }\n            // goal: afterCreate hooks runs depth-first. After attach runs parent first, so on afterAttach the parent has completed already\n            if (this.state === NodeLifeCycle.CREATED) {\n                if (this.parent) {\n                    if (this.parent.state !== NodeLifeCycle.FINALIZED) {\n                        // parent not ready yet, postpone\n                        return;\n                    }\n                    this.fireHook(Hook.afterAttach);\n                }\n                this.state = NodeLifeCycle.FINALIZED;\n                if (whenFinalized) {\n                    whenFinalized();\n                }\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseFinalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._hookSubscribers) {\n                this._hookSubscribers.clearAll();\n            }\n            this._subpathUponDeath = this._subpath;\n            this._pathUponDeath = this.getEscapedPath(false);\n            this.baseSetParent(null, \"\");\n            this.state = NodeLifeCycle.DEAD;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseAboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.fireHook(Hook.beforeDestroy);\n        }\n    });\n    return BaseNode;\n}());\n\n/**\n * @internal\n * @hidden\n */\nvar ScalarNode = /** @class */ (function (_super) {\n    __extends(ScalarNode, _super);\n    function ScalarNode(simpleType, parent, subpath, environment, initialSnapshot) {\n        var _this = _super.call(this, simpleType, parent, subpath, environment) || this;\n        try {\n            _this.storedValue = simpleType.createNewInstance(initialSnapshot);\n        }\n        catch (e) {\n            // short-cut to die the instance, to avoid the snapshot computed starting to throw...\n            _this.state = NodeLifeCycle.DEAD;\n            throw e;\n        }\n        _this.state = NodeLifeCycle.CREATED;\n        // for scalar nodes there's no point in firing this event since it would fire on the constructor, before\n        // anybody can actually register for/listen to it\n        // this.fireHook(Hook.AfterCreate)\n        _this.finalizeCreation();\n        return _this;\n    }\n    Object.defineProperty(ScalarNode.prototype, \"root\", {\n        get: function () {\n            // future optimization: store root ref in the node and maintain it\n            if (!this.parent)\n                throw fail(\"This scalar node is not part of a tree\");\n            return this.parent.root;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScalarNode.prototype, \"setParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (newParent, subpath) {\n            var parentChanged = this.parent !== newParent;\n            var subpathChanged = this.subpath !== subpath;\n            if (!parentChanged && !subpathChanged) {\n                return;\n            }\n            if (devMode()) {\n                if (!subpath) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: subpath expected\");\n                }\n                if (!newParent) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: parent expected\");\n                }\n                if (parentChanged) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: scalar nodes cannot change their parent\");\n                }\n            }\n            this.environment = undefined; // use parent's\n            this.baseSetParent(this.parent, subpath);\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"snapshot\", {\n        get: function () {\n            return freeze(this.getSnapshot());\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScalarNode.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type.getSnapshot(this);\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"toString\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var path = (this.isAlive ? this.path : this.pathUponDeath) || \"<root>\";\n            return this.type.name + \"@\" + path + (this.isAlive ? \"\" : \" [dead]\");\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"die\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive || this.state === NodeLifeCycle.DETACHING)\n                return;\n            this.aboutToDie();\n            this.finalizeDeath();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"finalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseFinalizeCreation();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"aboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseAboutToDie();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"finalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseFinalizeDeath();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"fireHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            this.fireInternalHook(name);\n        }\n    });\n    return ScalarNode;\n}(BaseNode));\nScalarNode.prototype.die = action(ScalarNode.prototype.die);\n\nvar nextNodeId = 1;\nvar snapshotReactionOptions = {\n    onError: function (e) {\n        throw e;\n    }\n};\n/**\n * @internal\n * @hidden\n */\nvar ObjectNode = /** @class */ (function (_super) {\n    __extends(ObjectNode, _super);\n    function ObjectNode(complexType, parent, subpath, environment, initialValue) {\n        var _this = _super.call(this, complexType, parent, subpath, environment) || this;\n        Object.defineProperty(_this, \"nodeId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: ++nextNodeId\n        });\n        Object.defineProperty(_this, \"identifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"identifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        }); // Identifier is always normalized to string, even if the identifier property isn't\n        Object.defineProperty(_this, \"unnormalizedIdentifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"identifierCache\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"isProtectionEnabled\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        Object.defineProperty(_this, \"middlewares\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"hasSnapshotPostProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_applyPatches\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_applySnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_autoUnbox\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        }); // unboxing is disabled when reading child nodes\n        Object.defineProperty(_this, \"_isRunningAction\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        }); // only relevant for root\n        Object.defineProperty(_this, \"_hasSnapshotReaction\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_observableInstanceState\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0 /* UNINITIALIZED */\n        });\n        Object.defineProperty(_this, \"_childNodes\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_initialSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_cachedInitialSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_cachedInitialSnapshotCreated\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_snapshotComputed\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_snapshotUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // #region internal event handling\n        Object.defineProperty(_this, \"_internalEvents\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        _this._snapshotComputed = computed(function () { return freeze(_this.getSnapshot()); });\n        _this.unbox = _this.unbox.bind(_this);\n        _this._initialSnapshot = freeze(initialValue);\n        _this.identifierAttribute = complexType.identifierAttribute;\n        if (!parent) {\n            _this.identifierCache = new IdentifierCache();\n        }\n        _this._childNodes = complexType.initializeChildNodes(_this, _this._initialSnapshot);\n        // identifier can not be changed during lifecycle of a node\n        // so we safely can read it from initial snapshot\n        _this.identifier = null;\n        _this.unnormalizedIdentifier = null;\n        if (_this.identifierAttribute && _this._initialSnapshot) {\n            var id = _this._initialSnapshot[_this.identifierAttribute];\n            if (id === undefined) {\n                // try with the actual node if not (for optional identifiers)\n                var childNode = _this._childNodes[_this.identifierAttribute];\n                if (childNode) {\n                    id = childNode.value;\n                }\n            }\n            if (typeof id !== \"string\" && typeof id !== \"number\") {\n                throw fail(\"Instance identifier '\" + _this.identifierAttribute + \"' for type '\" + _this.type.name + \"' must be a string or a number\");\n            }\n            // normalize internal identifier to string\n            _this.identifier = normalizeIdentifier(id);\n            _this.unnormalizedIdentifier = id;\n        }\n        if (!parent) {\n            _this.identifierCache.addNodeToCache(_this);\n        }\n        else {\n            parent.root.identifierCache.addNodeToCache(_this);\n        }\n        return _this;\n    }\n    Object.defineProperty(ObjectNode.prototype, \"applyPatches\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (patches) {\n            this.createObservableInstanceIfNeeded();\n            this._applyPatches(patches);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            this.createObservableInstanceIfNeeded();\n            this._applySnapshot(snapshot);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"createObservableInstanceIfNeeded\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fireHooks) {\n            if (fireHooks === void 0) { fireHooks = true; }\n            if (this._observableInstanceState === 0 /* UNINITIALIZED */) {\n                this.createObservableInstance(fireHooks);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"createObservableInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fireHooks) {\n            var e_1, _a, e_2, _b;\n            if (fireHooks === void 0) { fireHooks = true; }\n            if (devMode()) {\n                if (this.state !== NodeLifeCycle.INITIALIZING) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: the creation of the observable instance must be done on the initializing phase\");\n                }\n            }\n            this._observableInstanceState = 1 /* CREATING */;\n            // make sure the parent chain is created as well\n            // array with parent chain from parent to child\n            var parentChain = [];\n            var parent = this.parent;\n            // for performance reasons we never go back further than the most direct\n            // uninitialized parent\n            // this is done to avoid traversing the whole tree to the root when using\n            // the same reference again\n            while (parent &&\n                parent._observableInstanceState === 0 /* UNINITIALIZED */) {\n                parentChain.unshift(parent);\n                parent = parent.parent;\n            }\n            try {\n                // initialize the uninitialized parent chain from parent to child\n                for (var parentChain_1 = __values(parentChain), parentChain_1_1 = parentChain_1.next(); !parentChain_1_1.done; parentChain_1_1 = parentChain_1.next()) {\n                    var p = parentChain_1_1.value;\n                    // delay firing hooks until after all parents have been created\n                    p.createObservableInstanceIfNeeded(false);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (parentChain_1_1 && !parentChain_1_1.done && (_a = parentChain_1.return)) _a.call(parentChain_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            var type = this.type;\n            try {\n                this.storedValue = type.createNewInstance(this._childNodes);\n                this.preboot();\n                this._isRunningAction = true;\n                type.finalizeNewInstance(this, this.storedValue);\n            }\n            catch (e) {\n                // short-cut to die the instance, to avoid the snapshot computed starting to throw...\n                this.state = NodeLifeCycle.DEAD;\n                throw e;\n            }\n            finally {\n                this._isRunningAction = false;\n            }\n            this._observableInstanceState = 2 /* CREATED */;\n            this._snapshotComputed.trackAndCompute();\n            if (this.isRoot)\n                this._addSnapshotReaction();\n            this._childNodes = EMPTY_OBJECT;\n            this.state = NodeLifeCycle.CREATED;\n            if (fireHooks) {\n                this.fireHook(Hook.afterCreate);\n                // Note that the parent might not be finalized at this point\n                // so afterAttach won't be called until later in that case\n                this.finalizeCreation();\n                try {\n                    // fire the hooks of the parents that we created\n                    for (var _c = __values(parentChain.reverse()), _d = _c.next(); !_d.done; _d = _c.next()) {\n                        var p = _d.value;\n                        p.fireHook(Hook.afterCreate);\n                        // This will call afterAttach on the child if necessary\n                        p.finalizeCreation();\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"root\", {\n        get: function () {\n            var parent = this.parent;\n            return parent ? parent.root : this;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ObjectNode.prototype, \"clearParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.parent)\n                return;\n            // detach if attached\n            this.fireHook(Hook.beforeDetach);\n            var previousState = this.state;\n            this.state = NodeLifeCycle.DETACHING;\n            var root = this.root;\n            var newEnv = root.environment;\n            var newIdCache = root.identifierCache.splitCache(this);\n            try {\n                this.parent.removeChild(this.subpath);\n                this.baseSetParent(null, \"\");\n                this.environment = newEnv;\n                this.identifierCache = newIdCache;\n            }\n            finally {\n                this.state = previousState;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"setParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (newParent, subpath) {\n            var parentChanged = newParent !== this.parent;\n            var subpathChanged = subpath !== this.subpath;\n            if (!parentChanged && !subpathChanged) {\n                return;\n            }\n            if (devMode()) {\n                if (!subpath) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: subpath expected\");\n                }\n                if (!newParent) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: new parent expected\");\n                }\n                if (this.parent && parentChanged) {\n                    throw fail(\"A node cannot exists twice in the state tree. Failed to add \" + this + \" to path '\" + newParent.path + \"/\" + subpath + \"'.\");\n                }\n                if (!this.parent && newParent.root === this) {\n                    throw fail(\"A state tree is not allowed to contain itself. Cannot assign \" + this + \" to path '\" + newParent.path + \"/\" + subpath + \"'\");\n                }\n                if (!this.parent && !!this.environment && this.environment !== newParent.root.environment) {\n                    throw fail(\"A state tree cannot be made part of another state tree as long as their environments are different.\");\n                }\n            }\n            if (parentChanged) {\n                // attach to new parent\n                this.environment = undefined; // will use root's\n                newParent.root.identifierCache.mergeCache(this);\n                this.baseSetParent(newParent, subpath);\n                this.fireHook(Hook.afterAttach);\n            }\n            else if (subpathChanged) {\n                // moving to a new subpath on the same parent\n                this.baseSetParent(this.parent, subpath);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"fireHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            var _this = this;\n            this.fireInternalHook(name);\n            var fn = this.storedValue && typeof this.storedValue === \"object\" && this.storedValue[name];\n            if (typeof fn === \"function\") {\n                // we check for it to allow old mobx peer dependencies that don't have the method to work (even when still bugged)\n                if (_allowStateChangesInsideComputed) {\n                    _allowStateChangesInsideComputed(function () {\n                        fn.apply(_this.storedValue);\n                    });\n                }\n                else {\n                    fn.apply(this.storedValue);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"snapshot\", {\n        // advantage of using computed for a snapshot is that nicely respects transactions etc.\n        get: function () {\n            if (this.hasSnapshotPostProcessor) {\n                this.createObservableInstanceIfNeeded();\n            }\n            return this._snapshotComputed.get();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    // NOTE: we use this method to get snapshot without creating @computed overhead\n    Object.defineProperty(ObjectNode.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive)\n                return this._snapshotUponDeath;\n            return this._observableInstanceState === 2 /* CREATED */\n                ? this._getActualSnapshot()\n                : this._getCachedInitialSnapshot();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getActualSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type.getSnapshot(this);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getCachedInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this._cachedInitialSnapshotCreated) {\n                var type = this.type;\n                var childNodes = this._childNodes;\n                var snapshot = this._initialSnapshot;\n                this._cachedInitialSnapshot = type.processInitialSnapshot(childNodes, snapshot);\n                this._cachedInitialSnapshotCreated = true;\n            }\n            return this._cachedInitialSnapshot;\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"isRunningAction\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._isRunningAction)\n                return true;\n            if (this.isRoot)\n                return false;\n            return this.parent.isRunningAction();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"assertAlive\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            var livelinessChecking = getLivelinessChecking();\n            if (!this.isAlive && livelinessChecking !== \"ignore\") {\n                var error = this._getAssertAliveError(context);\n                switch (livelinessChecking) {\n                    case \"error\":\n                        throw fail(error);\n                    case \"warn\":\n                        warnError(error);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getAssertAliveError\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            var escapedPath = this.getEscapedPath(false) || this.pathUponDeath || \"\";\n            var subpath = (context.subpath && escapeJsonPath(context.subpath)) || \"\";\n            var actionContext = context.actionContext || getCurrentActionContext();\n            // try to use a real action context if possible since it includes the action name\n            if (actionContext && actionContext.type !== \"action\" && actionContext.parentActionEvent) {\n                actionContext = actionContext.parentActionEvent;\n            }\n            var actionFullPath = \"\";\n            if (actionContext && actionContext.name != null) {\n                // try to use the context, and if it not available use the node one\n                var actionPath = (actionContext && actionContext.context && getPath(actionContext.context)) || escapedPath;\n                actionFullPath = actionPath + \".\" + actionContext.name + \"()\";\n            }\n            return \"You are trying to read or write to an object that is no longer part of a state tree. (Object type: '\" + this.type.name + \"', Path upon death: '\" + escapedPath + \"', Subpath: '\" + subpath + \"', Action: '\" + actionFullPath + \"'). Either detach nodes first, or don't use objects after removing / replacing them in the tree.\";\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath) {\n            this.assertAlive({\n                subpath: subpath\n            });\n            this._autoUnbox = false;\n            try {\n                return this._observableInstanceState === 2 /* CREATED */\n                    ? this.type.getChildNode(this, subpath)\n                    : this._childNodes[subpath];\n            }\n            finally {\n                this._autoUnbox = true;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.assertAlive(EMPTY_OBJECT);\n            this._autoUnbox = false;\n            try {\n                return this._observableInstanceState === 2 /* CREATED */\n                    ? this.type.getChildren(this)\n                    : convertChildNodesToArray(this._childNodes);\n            }\n            finally {\n                this._autoUnbox = true;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (propertyName) {\n            return this.type.getChildType(propertyName);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"isProtected\", {\n        get: function () {\n            return this.root.isProtectionEnabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ObjectNode.prototype, \"assertWritable\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            this.assertAlive(context);\n            if (!this.isRunningAction() && this.isProtected) {\n                throw fail(\"Cannot modify '\" + this + \"', the object is protected and can only be modified by using an action.\");\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath) {\n            this.type.removeChild(this, subpath);\n        }\n    });\n    // bound on the constructor\n    Object.defineProperty(ObjectNode.prototype, \"unbox\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNode) {\n            if (!childNode)\n                return childNode;\n            this.assertAlive({\n                subpath: childNode.subpath || childNode.subpathUponDeath\n            });\n            return this._autoUnbox ? childNode.value : childNode;\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"toString\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var path = (this.isAlive ? this.path : this.pathUponDeath) || \"<root>\";\n            var identifier = this.identifier ? \"(id: \" + this.identifier + \")\" : \"\";\n            return this.type.name + \"@\" + path + identifier + (this.isAlive ? \"\" : \" [dead]\");\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"finalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            this.baseFinalizeCreation(function () {\n                var e_3, _a;\n                try {\n                    for (var _b = __values(_this.getChildren()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                        var child = _c.value;\n                        child.finalizeCreation();\n                    }\n                }\n                catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                finally {\n                    try {\n                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                    }\n                    finally { if (e_3) throw e_3.error; }\n                }\n                _this.fireInternalHook(Hook.afterCreationFinalization);\n            });\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"detach\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive)\n                throw fail(\"Error while detaching, node is not alive.\");\n            this.clearParent();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"preboot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var self = this;\n            this._applyPatches = createActionInvoker(this.storedValue, \"@APPLY_PATCHES\", function (patches) {\n                patches.forEach(function (patch) {\n                    if (!patch.path) {\n                        self.type.applySnapshot(self, patch.value);\n                        return;\n                    }\n                    var parts = splitJsonPath(patch.path);\n                    var node = resolveNodeByPathParts(self, parts.slice(0, -1));\n                    node.applyPatchLocally(parts[parts.length - 1], patch);\n                });\n            });\n            this._applySnapshot = createActionInvoker(this.storedValue, \"@APPLY_SNAPSHOT\", function (snapshot) {\n                // if the snapshot is the same as the current one, avoid performing a reconcile\n                if (snapshot === self.snapshot)\n                    return;\n                // else, apply it by calling the type logic\n                return self.type.applySnapshot(self, snapshot);\n            });\n            addHiddenFinalProp(this.storedValue, \"$treenode\", this);\n            addHiddenFinalProp(this.storedValue, \"toJSON\", toJSON);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"die\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive || this.state === NodeLifeCycle.DETACHING)\n                return;\n            this.aboutToDie();\n            this.finalizeDeath();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"aboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._observableInstanceState === 0 /* UNINITIALIZED */) {\n                return;\n            }\n            this.getChildren().forEach(function (node) {\n                node.aboutToDie();\n            });\n            // beforeDestroy should run before the disposers since else we could end up in a situation where\n            // a disposer added with addDisposer at this stage (beforeDestroy) is actually never released\n            this.baseAboutToDie();\n            this._internalEventsEmit(\"dispose\" /* Dispose */);\n            this._internalEventsClear(\"dispose\" /* Dispose */);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"finalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            // invariant: not called directly but from \"die\"\n            this.getChildren().forEach(function (node) {\n                node.finalizeDeath();\n            });\n            this.root.identifierCache.notifyDied(this);\n            // \"kill\" the computed prop and just store the last snapshot\n            var snapshot = this.snapshot;\n            this._snapshotUponDeath = snapshot;\n            this._internalEventsClearAll();\n            this.baseFinalizeDeath();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"onSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (onChange) {\n            this._addSnapshotReaction();\n            return this._internalEventsRegister(\"snapshot\" /* Snapshot */, onChange);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"emitSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            this._internalEventsEmit(\"snapshot\" /* Snapshot */, snapshot);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"onPatch\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (handler) {\n            return this._internalEventsRegister(\"patch\" /* Patch */, handler);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"emitPatch\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (basePatch, source) {\n            if (this._internalEventsHasSubscribers(\"patch\" /* Patch */)) {\n                var localizedPatch = extend({}, basePatch, {\n                    path: source.path.substr(this.path.length) + \"/\" + basePatch.path // calculate the relative path of the patch\n                });\n                var _a = __read(splitPatch(localizedPatch), 2), patch = _a[0], reversePatch = _a[1];\n                this._internalEventsEmit(\"patch\" /* Patch */, patch, reversePatch);\n            }\n            if (this.parent)\n                this.parent.emitPatch(basePatch, source);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"hasDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            return this._internalEventsHas(\"dispose\" /* Dispose */, disposer);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"addDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            if (!this.hasDisposer(disposer)) {\n                this._internalEventsRegister(\"dispose\" /* Dispose */, disposer, true);\n                return;\n            }\n            throw fail(\"cannot add a disposer when it is already registered for execution\");\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            if (!this._internalEventsHas(\"dispose\" /* Dispose */, disposer)) {\n                throw fail(\"cannot remove a disposer which was never registered for execution\");\n            }\n            this._internalEventsUnregister(\"dispose\" /* Dispose */, disposer);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeMiddleware\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (middleware) {\n            if (this.middlewares) {\n                var index = this.middlewares.indexOf(middleware);\n                if (index >= 0) {\n                    this.middlewares.splice(index, 1);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"addMiddleWare\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (handler, includeHooks) {\n            var _this = this;\n            if (includeHooks === void 0) { includeHooks = true; }\n            var middleware = { handler: handler, includeHooks: includeHooks };\n            if (!this.middlewares)\n                this.middlewares = [middleware];\n            else\n                this.middlewares.push(middleware);\n            return function () {\n                _this.removeMiddleware(middleware);\n            };\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath, patch) {\n            this.assertWritable({\n                subpath: subpath\n            });\n            this.createObservableInstanceIfNeeded();\n            this.type.applyPatchLocally(this, subpath, patch);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_addSnapshotReaction\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            if (!this._hasSnapshotReaction) {\n                var snapshotDisposer = reaction(function () { return _this.snapshot; }, function (snapshot) { return _this.emitSnapshot(snapshot); }, snapshotReactionOptions);\n                this.addDisposer(snapshotDisposer);\n                this._hasSnapshotReaction = true;\n            }\n        }\n    });\n    // we proxy the methods to avoid creating an EventHandlers instance when it is not needed\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsHasSubscribers\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            return !!this._internalEvents && this._internalEvents.hasSubscribers(event);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsRegister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler, atTheBeginning) {\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (!this._internalEvents) {\n                this._internalEvents = new EventHandlers();\n            }\n            return this._internalEvents.register(event, eventHandler, atTheBeginning);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsHas\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler) {\n            return !!this._internalEvents && this._internalEvents.has(event, eventHandler);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsUnregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler) {\n            if (this._internalEvents) {\n                this._internalEvents.unregister(event, eventHandler);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsEmit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var _a;\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (this._internalEvents) {\n                (_a = this._internalEvents).emit.apply(_a, __spread([event], args));\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsClear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            if (this._internalEvents) {\n                this._internalEvents.clear(event);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsClearAll\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._internalEvents) {\n                this._internalEvents.clearAll();\n            }\n        }\n    });\n    return ObjectNode;\n}(BaseNode));\nObjectNode.prototype.createObservableInstance = action(ObjectNode.prototype.createObservableInstance);\nObjectNode.prototype.detach = action(ObjectNode.prototype.detach);\nObjectNode.prototype.die = action(ObjectNode.prototype.die);\n\nvar _a;\n/**\n * @internal\n * @hidden\n */\nvar TypeFlags;\n(function (TypeFlags) {\n    TypeFlags[TypeFlags[\"String\"] = 1] = \"String\";\n    TypeFlags[TypeFlags[\"Number\"] = 2] = \"Number\";\n    TypeFlags[TypeFlags[\"Boolean\"] = 4] = \"Boolean\";\n    TypeFlags[TypeFlags[\"Date\"] = 8] = \"Date\";\n    TypeFlags[TypeFlags[\"Literal\"] = 16] = \"Literal\";\n    TypeFlags[TypeFlags[\"Array\"] = 32] = \"Array\";\n    TypeFlags[TypeFlags[\"Map\"] = 64] = \"Map\";\n    TypeFlags[TypeFlags[\"Object\"] = 128] = \"Object\";\n    TypeFlags[TypeFlags[\"Frozen\"] = 256] = \"Frozen\";\n    TypeFlags[TypeFlags[\"Optional\"] = 512] = \"Optional\";\n    TypeFlags[TypeFlags[\"Reference\"] = 1024] = \"Reference\";\n    TypeFlags[TypeFlags[\"Identifier\"] = 2048] = \"Identifier\";\n    TypeFlags[TypeFlags[\"Late\"] = 4096] = \"Late\";\n    TypeFlags[TypeFlags[\"Refinement\"] = 8192] = \"Refinement\";\n    TypeFlags[TypeFlags[\"Union\"] = 16384] = \"Union\";\n    TypeFlags[TypeFlags[\"Null\"] = 32768] = \"Null\";\n    TypeFlags[TypeFlags[\"Undefined\"] = 65536] = \"Undefined\";\n    TypeFlags[TypeFlags[\"Integer\"] = 131072] = \"Integer\";\n    TypeFlags[TypeFlags[\"Custom\"] = 262144] = \"Custom\";\n    TypeFlags[TypeFlags[\"SnapshotProcessor\"] = 524288] = \"SnapshotProcessor\";\n    TypeFlags[TypeFlags[\"Lazy\"] = 1048576] = \"Lazy\";\n    TypeFlags[TypeFlags[\"Finite\"] = 2097152] = \"Finite\";\n    TypeFlags[TypeFlags[\"Float\"] = 4194304] = \"Float\";\n})(TypeFlags || (TypeFlags = {}));\n/**\n * @internal\n * @hidden\n */\nvar cannotDetermineSubtype = \"cannotDetermine\";\n/** @hidden */\nvar $type = Symbol(\"$type\");\n/**\n * A base type produces a MST node (Node in the state tree)\n *\n * @internal\n * @hidden\n */\nvar BaseType = /** @class */ (function () {\n    function BaseType(name) {\n        Object.defineProperty(this, _a, {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // these are just to make inner types avaialable to inherited classes\n        Object.defineProperty(this, \"C\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"S\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"T\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"N\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"isType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.name = name;\n    }\n    Object.defineProperty(BaseType.prototype, \"create\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot, environment) {\n            typecheckInternal(this, snapshot);\n            return this.instantiate(null, \"\", environment, snapshot).value;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            // istanbul ignore next\n            throw fail(\"unimplemented method\");\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return type === this;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"validate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var node = getStateTreeNodeSafe(value);\n            if (node) {\n                var valueType = getType(value);\n                return this.isAssignableFrom(valueType)\n                    ? typeCheckSuccess()\n                    : typeCheckFailure(context, value);\n                // it is tempting to compare snapshots, but in that case we should always clone on assignments...\n            }\n            return this.isValidSnapshot(value, context);\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"is\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (thing) {\n            return this.validate(thing, [{ path: \"\", type: this }]).length === 0;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"Type\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"TypeWithoutSTN\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.TypeWithoutSTN should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.TypeWithoutSTN`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"SnapshotType\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"CreationType\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.CreationType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.CreationType`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return BaseType;\n}());\n_a = $type;\nBaseType.prototype.create = action(BaseType.prototype.create);\n/**\n * A complex type produces a MST node (Node in the state tree)\n *\n * @internal\n * @hidden\n */\nvar ComplexType = /** @class */ (function (_super) {\n    __extends(ComplexType, _super);\n    function ComplexType(name) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"identifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        return _this;\n    }\n    Object.defineProperty(ComplexType.prototype, \"create\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot, environment) {\n            if (snapshot === void 0) { snapshot = this.getDefaultSnapshot(); }\n            return _super.prototype.create.call(this, snapshot, environment);\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            node.createObservableInstanceIfNeeded();\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"isMatchingSnapshotId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, snapshot) {\n            return (!current.identifierAttribute ||\n                current.identifier === normalizeIdentifier(snapshot[current.identifierAttribute]));\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"tryToReconcileNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue) {\n            if (current.isDetaching)\n                return false;\n            if (current.snapshot === newValue) {\n                // newValue is the current snapshot of the node, noop\n                return true;\n            }\n            if (isStateTreeNode(newValue) && getStateTreeNode(newValue) === current) {\n                // the current node is the same as the new one\n                return true;\n            }\n            if (current.type === this &&\n                isMutable(newValue) &&\n                !isStateTreeNode(newValue) &&\n                this.isMatchingSnapshotId(current, newValue)) {\n                // the newValue has no node, so can be treated like a snapshot\n                // we can reconcile\n                current.applySnapshot(newValue);\n                return true;\n            }\n            return false;\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var nodeReconciled = this.tryToReconcileNode(current, newValue);\n            if (nodeReconciled) {\n                current.setParent(parent, subpath);\n                return current;\n            }\n            // current node cannot be recycled in any way\n            current.die(); // noop if detaching\n            // attempt to reuse the new one\n            if (isStateTreeNode(newValue) && this.isAssignableFrom(getType(newValue))) {\n                // newValue is a Node as well, move it here..\n                var newNode = getStateTreeNode(newValue);\n                newNode.setParent(parent, subpath);\n                return newNode;\n            }\n            // nothing to do, we have to create a new node\n            return this.instantiate(parent, subpath, undefined, newValue);\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return null;\n        }\n    });\n    return ComplexType;\n}(BaseType));\nComplexType.prototype.create = action(ComplexType.prototype.create);\n/**\n * @internal\n * @hidden\n */\nvar SimpleType = /** @class */ (function (_super) {\n    __extends(SimpleType, _super);\n    function SimpleType() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(SimpleType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            return snapshot;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            // if we ever find a case where scalar nodes can be accessed without iterating through its parent\n            // uncomment this to make sure the parent chain is created when this is accessed\n            // if (node.parent) {\n            //     node.parent.createObservableInstanceIfNeeded()\n            // }\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            // reconcile only if type and value are still the same, and only if the node is not detaching\n            if (!current.isDetaching && current.type === this && current.storedValue === newValue) {\n                return current;\n            }\n            var res = this.instantiate(parent, subpath, undefined, newValue);\n            current.die(); // noop if detaching\n            return res;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return null;\n        }\n    });\n    return SimpleType;\n}(BaseType));\n/**\n * Returns if a given value represents a type.\n *\n * @param value Value to check.\n * @returns `true` if the value is a type.\n */\nfunction isType(value) {\n    return typeof value === \"object\" && value && value.isType === true;\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsType(type, argNumber) {\n    assertArg(type, isType, \"mobx-state-tree type\", argNumber);\n}\n\nvar runningActions = new Map();\n/**\n * Note: Consider migrating to `createActionTrackingMiddleware2`, it is easier to use.\n *\n * Convenience utility to create action based middleware that supports async processes more easily.\n * All hooks are called for both synchronous and asynchronous actions. Except that either `onSuccess` or `onFail` is called\n *\n * The create middleware tracks the process of an action (assuming it passes the `filter`).\n * `onResume` can return any value, which will be passed as second argument to any other hook. This makes it possible to keep state during a process.\n *\n * See the `atomic` middleware for an example\n *\n * @param hooks\n * @returns\n */\nfunction createActionTrackingMiddleware(hooks) {\n    return function actionTrackingMiddleware(call, next, abort) {\n        switch (call.type) {\n            case \"action\": {\n                if (!hooks.filter || hooks.filter(call) === true) {\n                    var context = hooks.onStart(call);\n                    hooks.onResume(call, context);\n                    runningActions.set(call.id, {\n                        call: call,\n                        context: context,\n                        async: false\n                    });\n                    try {\n                        var res = next(call);\n                        hooks.onSuspend(call, context);\n                        if (runningActions.get(call.id).async === false) {\n                            runningActions.delete(call.id);\n                            hooks.onSuccess(call, context, res);\n                        }\n                        return res;\n                    }\n                    catch (e) {\n                        runningActions.delete(call.id);\n                        hooks.onFail(call, context, e);\n                        throw e;\n                    }\n                }\n                else {\n                    return next(call);\n                }\n            }\n            case \"flow_spawn\": {\n                var root = runningActions.get(call.rootId);\n                root.async = true;\n                return next(call);\n            }\n            case \"flow_resume\":\n            case \"flow_resume_error\": {\n                var root = runningActions.get(call.rootId);\n                hooks.onResume(call, root.context);\n                try {\n                    return next(call);\n                }\n                finally {\n                    hooks.onSuspend(call, root.context);\n                }\n            }\n            case \"flow_throw\": {\n                var root = runningActions.get(call.rootId);\n                runningActions.delete(call.rootId);\n                hooks.onFail(call, root.context, call.args[0]);\n                return next(call);\n            }\n            case \"flow_return\": {\n                var root = runningActions.get(call.rootId);\n                runningActions.delete(call.rootId);\n                hooks.onSuccess(call, root.context, call.args[0]);\n                return next(call);\n            }\n        }\n    };\n}\n\nvar RunningAction = /** @class */ (function () {\n    function RunningAction(hooks, call) {\n        Object.defineProperty(this, \"hooks\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: hooks\n        });\n        Object.defineProperty(this, \"call\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: call\n        });\n        Object.defineProperty(this, \"flowsPending\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"running\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        if (hooks) {\n            hooks.onStart(call);\n        }\n    }\n    Object.defineProperty(RunningAction.prototype, \"finish\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (error) {\n            if (this.running) {\n                this.running = false;\n                if (this.hooks) {\n                    this.hooks.onFinish(this.call, error);\n                }\n            }\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"incFlowsPending\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.flowsPending++;\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"decFlowsPending\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.flowsPending--;\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"hasFlowsPending\", {\n        get: function () {\n            return this.flowsPending > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return RunningAction;\n}());\n/**\n * Convenience utility to create action based middleware that supports async processes more easily.\n * The flow is like this:\n * - for each action: if filter passes -> `onStart` -> (inner actions recursively) -> `onFinish`\n *\n * Example: if we had an action `a` that called inside an action `b1`, then `b2` the flow would be:\n * - `filter(a)`\n * - `onStart(a)`\n *   - `filter(b1)`\n *   - `onStart(b1)`\n *   - `onFinish(b1)`\n *   - `filter(b2)`\n *   - `onStart(b2)`\n *   - `onFinish(b2)`\n * - `onFinish(a)`\n *\n * The flow is the same no matter if the actions are sync or async.\n *\n * See the `atomic` middleware for an example\n *\n * @param hooks\n * @returns\n */\nfunction createActionTrackingMiddleware2(middlewareHooks) {\n    var runningActions = new Map();\n    return function actionTrackingMiddleware(call, next) {\n        // find parentRunningAction\n        var parentRunningAction = call.parentActionEvent\n            ? runningActions.get(call.parentActionEvent.id)\n            : undefined;\n        if (call.type === \"action\") {\n            var newCall = __assign(__assign({}, call), { \n                // make a shallow copy of the parent action env\n                env: parentRunningAction && parentRunningAction.call.env, parentCall: parentRunningAction && parentRunningAction.call });\n            var passesFilter = !middlewareHooks.filter || middlewareHooks.filter(newCall);\n            var hooks = passesFilter ? middlewareHooks : undefined;\n            var runningAction = new RunningAction(hooks, newCall);\n            runningActions.set(call.id, runningAction);\n            var res = void 0;\n            try {\n                res = next(call);\n            }\n            catch (e) {\n                runningActions.delete(call.id);\n                runningAction.finish(e);\n                throw e;\n            }\n            // sync action finished\n            if (!runningAction.hasFlowsPending) {\n                runningActions.delete(call.id);\n                runningAction.finish();\n            }\n            return res;\n        }\n        else {\n            if (!parentRunningAction) {\n                return next(call);\n            }\n            switch (call.type) {\n                case \"flow_spawn\": {\n                    parentRunningAction.incFlowsPending();\n                    return next(call);\n                }\n                case \"flow_resume\":\n                case \"flow_resume_error\": {\n                    return next(call);\n                }\n                case \"flow_throw\": {\n                    var error = call.args[0];\n                    try {\n                        return next(call);\n                    }\n                    finally {\n                        parentRunningAction.decFlowsPending();\n                        if (!parentRunningAction.hasFlowsPending) {\n                            runningActions.delete(call.parentActionEvent.id);\n                            parentRunningAction.finish(error);\n                        }\n                    }\n                }\n                case \"flow_return\": {\n                    try {\n                        return next(call);\n                    }\n                    finally {\n                        parentRunningAction.decFlowsPending();\n                        if (!parentRunningAction.hasFlowsPending) {\n                            runningActions.delete(call.parentActionEvent.id);\n                            parentRunningAction.finish();\n                        }\n                    }\n                }\n            }\n        }\n    };\n}\n\nfunction serializeArgument(node, actionName, index, arg) {\n    if (arg instanceof Date)\n        return { $MST_DATE: arg.getTime() };\n    if (isPrimitive(arg))\n        return arg;\n    // We should not serialize MST nodes, even if we can, because we don't know if the receiving party can handle a raw snapshot instead of an\n    // MST type instance. So if one wants to serialize a MST node that was pass in, either explitly pass: 1: an id, 2: a (relative) path, 3: a snapshot\n    if (isStateTreeNode(arg))\n        return serializeTheUnserializable(\"[MSTNode: \" + getType(arg).name + \"]\");\n    if (typeof arg === \"function\")\n        return serializeTheUnserializable(\"[function]\");\n    if (typeof arg === \"object\" && !isPlainObject(arg) && !isArray(arg))\n        return serializeTheUnserializable(\"[object \" + ((arg && arg.constructor && arg.constructor.name) || \"Complex Object\") + \"]\");\n    try {\n        // Check if serializable, cycle free etc...\n        // MWE: there must be a better way....\n        JSON.stringify(arg); // or throws\n        return arg;\n    }\n    catch (e) {\n        return serializeTheUnserializable(\"\" + e);\n    }\n}\nfunction deserializeArgument(adm, value) {\n    if (value && typeof value === \"object\" && \"$MST_DATE\" in value)\n        return new Date(value[\"$MST_DATE\"]);\n    return value;\n}\nfunction serializeTheUnserializable(baseType) {\n    return {\n        $MST_UNSERIALIZABLE: true,\n        type: baseType\n    };\n}\n/**\n * Applies an action or a series of actions in a single MobX transaction.\n * Does not return any value\n * Takes an action description as produced by the `onAction` middleware.\n *\n * @param target\n * @param actions\n */\nfunction applyAction(target, actions) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertArg(actions, function (a) { return typeof a === \"object\"; }, \"object or array\", 2);\n    runInAction(function () {\n        asArray(actions).forEach(function (action) { return baseApplyAction(target, action); });\n    });\n}\nfunction baseApplyAction(target, action) {\n    var resolvedTarget = tryResolve(target, action.path || \"\");\n    if (!resolvedTarget)\n        throw fail(\"Invalid action path: \" + (action.path || \"\"));\n    var node = getStateTreeNode(resolvedTarget);\n    // Reserved functions\n    if (action.name === \"@APPLY_PATCHES\") {\n        return applyPatch.call(null, resolvedTarget, action.args[0]);\n    }\n    if (action.name === \"@APPLY_SNAPSHOT\") {\n        return applySnapshot.call(null, resolvedTarget, action.args[0]);\n    }\n    if (!(typeof resolvedTarget[action.name] === \"function\"))\n        throw fail(\"Action '\" + action.name + \"' does not exist in '\" + node.path + \"'\");\n    return resolvedTarget[action.name].apply(resolvedTarget, action.args ? action.args.map(function (v) { return deserializeArgument(node, v); }) : []);\n}\n/**\n * Small abstraction around `onAction` and `applyAction`, attaches an action listener to a tree and records all the actions emitted.\n * Returns an recorder object with the following signature:\n *\n * Example:\n * ```ts\n * export interface IActionRecorder {\n *      // the recorded actions\n *      actions: ISerializedActionCall[]\n *      // true if currently recording\n *      recording: boolean\n *      // stop recording actions\n *      stop(): void\n *      // resume recording actions\n *      resume(): void\n *      // apply all the recorded actions on the given object\n *      replay(target: IAnyStateTreeNode): void\n * }\n * ```\n *\n * The optional filter function allows to skip recording certain actions.\n *\n * @param subject\n * @returns\n */\nfunction recordActions(subject, filter) {\n    // check all arguments\n    assertIsStateTreeNode(subject, 1);\n    var actions = [];\n    var listener = function (call) {\n        var recordThis = filter ? filter(call, getRunningActionContext()) : true;\n        if (recordThis) {\n            actions.push(call);\n        }\n    };\n    var disposer;\n    var recorder = {\n        actions: actions,\n        get recording() {\n            return !!disposer;\n        },\n        stop: function () {\n            if (disposer) {\n                disposer();\n                disposer = undefined;\n            }\n        },\n        resume: function () {\n            if (disposer)\n                return;\n            disposer = onAction(subject, listener);\n        },\n        replay: function (target) {\n            applyAction(target, actions);\n        }\n    };\n    recorder.resume();\n    return recorder;\n}\n/**\n * Registers a function that will be invoked for each action that is called on the provided model instance, or to any of its children.\n * See [actions](https://github.com/mobxjs/mobx-state-tree#actions) for more details. onAction events are emitted only for the outermost called action in the stack.\n * Action can also be intercepted by middleware using addMiddleware to change the function call before it will be run.\n *\n * Not all action arguments might be serializable. For unserializable arguments, a struct like `{ $MST_UNSERIALIZABLE: true, type: \"someType\" }` will be generated.\n * MST Nodes are considered non-serializable as well (they could be serialized as there snapshot, but it is uncertain whether an replaying party will be able to handle such a non-instantiated snapshot).\n * Rather, when using `onAction` middleware, one should consider in passing arguments which are 1: an id, 2: a (relative) path, or 3: a snapshot. Instead of a real MST node.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.array(Todo)\n * }).actions(self => ({\n *   add(todo) {\n *     self.todos.push(todo);\n *   }\n * }))\n *\n * const s = TodoStore.create({ todos: [] })\n *\n * let disposer = onAction(s, (call) => {\n *   console.log(call);\n * })\n *\n * s.add({ task: \"Grab a coffee\" })\n * // Logs: { name: \"add\", path: \"\", args: [{ task: \"Grab a coffee\" }] }\n * ```\n *\n * @param target\n * @param listener\n * @param attachAfter (default false) fires the listener *after* the action has executed instead of before.\n * @returns\n */\nfunction onAction(target, listener, attachAfter) {\n    if (attachAfter === void 0) { attachAfter = false; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    if (devMode()) {\n        if (!isRoot(target))\n            warnError(\"Warning: Attaching onAction listeners to non root nodes is dangerous: No events will be emitted for actions initiated higher up in the tree.\");\n        if (!isProtected(target))\n            warnError(\"Warning: Attaching onAction listeners to non protected nodes is dangerous: No events will be emitted for direct modifications without action.\");\n    }\n    return addMiddleware(target, function handler(rawCall, next) {\n        if (rawCall.type === \"action\" && rawCall.id === rawCall.rootId) {\n            var sourceNode_1 = getStateTreeNode(rawCall.context);\n            var info = {\n                name: rawCall.name,\n                path: getRelativePathBetweenNodes(getStateTreeNode(target), sourceNode_1),\n                args: rawCall.args.map(function (arg, index) {\n                    return serializeArgument(sourceNode_1, rawCall.name, index, arg);\n                })\n            };\n            if (attachAfter) {\n                var res = next(rawCall);\n                listener(info);\n                return res;\n            }\n            else {\n                listener(info);\n                return next(rawCall);\n            }\n        }\n        else {\n            return next(rawCall);\n        }\n    });\n}\n\nvar nextActionId = 1;\nvar currentActionContext;\n/**\n * @internal\n * @hidden\n */\nfunction getCurrentActionContext() {\n    return currentActionContext;\n}\n/**\n * @internal\n * @hidden\n */\nfunction getNextActionId() {\n    return nextActionId++;\n}\n// TODO: optimize away entire action context if there is no middleware in tree?\n/**\n * @internal\n * @hidden\n */\nfunction runWithActionContext(context, fn) {\n    var node = getStateTreeNode(context.context);\n    if (context.type === \"action\") {\n        node.assertAlive({\n            actionContext: context\n        });\n    }\n    var baseIsRunningAction = node._isRunningAction;\n    node._isRunningAction = true;\n    var previousContext = currentActionContext;\n    currentActionContext = context;\n    try {\n        return runMiddleWares(node, context, fn);\n    }\n    finally {\n        currentActionContext = previousContext;\n        node._isRunningAction = baseIsRunningAction;\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction getParentActionContext(parentContext) {\n    if (!parentContext)\n        return undefined;\n    if (parentContext.type === \"action\")\n        return parentContext;\n    return parentContext.parentActionEvent;\n}\n/**\n * @internal\n * @hidden\n */\nfunction createActionInvoker(target, name, fn) {\n    var res = function () {\n        var id = getNextActionId();\n        var parentContext = currentActionContext;\n        var parentActionContext = getParentActionContext(parentContext);\n        return runWithActionContext({\n            type: \"action\",\n            name: name,\n            id: id,\n            args: argsToArray(arguments),\n            context: target,\n            tree: getRoot(target),\n            rootId: parentContext ? parentContext.rootId : id,\n            parentId: parentContext ? parentContext.id : 0,\n            allParentIds: parentContext ? __spread(parentContext.allParentIds, [parentContext.id]) : [],\n            parentEvent: parentContext,\n            parentActionEvent: parentActionContext\n        }, fn);\n    };\n    res._isMSTAction = true;\n    res._isFlowAction = fn._isFlowAction;\n    return res;\n}\n/**\n * Middleware can be used to intercept any action is invoked on the subtree where it is attached.\n * If a tree is protected (by default), this means that any mutation of the tree will pass through your middleware.\n *\n * For more details, see the [middleware docs](concepts/middleware.md)\n *\n * @param target Node to apply the middleware to.\n * @param middleware Middleware to apply.\n * @returns A callable function to dispose the middleware.\n */\nfunction addMiddleware(target, handler, includeHooks) {\n    if (includeHooks === void 0) { includeHooks = true; }\n    var node = getStateTreeNode(target);\n    if (devMode()) {\n        if (!node.isProtectionEnabled) {\n            warnError(\"It is recommended to protect the state tree before attaching action middleware, as otherwise it cannot be guaranteed that all changes are passed through middleware. See `protect`\");\n        }\n    }\n    return node.addMiddleWare(handler, includeHooks);\n}\n/**\n * Binds middleware to a specific action.\n *\n * Example:\n * ```ts\n * type.actions(self => {\n *   function takeA____() {\n *       self.toilet.donate()\n *       self.wipe()\n *       self.wipe()\n *       self.toilet.flush()\n *   }\n *   return {\n *     takeA____: decorate(atomic, takeA____)\n *   }\n * })\n * ```\n *\n * @param handler\n * @param fn\n * @param includeHooks\n * @returns The original function\n */\nfunction decorate(handler, fn, includeHooks) {\n    if (includeHooks === void 0) { includeHooks = true; }\n    var middleware = { handler: handler, includeHooks: includeHooks };\n    fn.$mst_middleware = fn.$mst_middleware || [];\n    fn.$mst_middleware.push(middleware);\n    return fn;\n}\nvar CollectedMiddlewares = /** @class */ (function () {\n    function CollectedMiddlewares(node, fn) {\n        Object.defineProperty(this, \"arrayIndex\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"inArrayIndex\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"middlewares\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        // we just push middleware arrays into an array of arrays to avoid making copies\n        if (fn.$mst_middleware) {\n            this.middlewares.push(fn.$mst_middleware);\n        }\n        var n = node;\n        // Find all middlewares. Optimization: cache this?\n        while (n) {\n            if (n.middlewares)\n                this.middlewares.push(n.middlewares);\n            n = n.parent;\n        }\n    }\n    Object.defineProperty(CollectedMiddlewares.prototype, \"isEmpty\", {\n        get: function () {\n            return this.middlewares.length <= 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(CollectedMiddlewares.prototype, \"getNextMiddleware\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var array = this.middlewares[this.arrayIndex];\n            if (!array)\n                return undefined;\n            var item = array[this.inArrayIndex++];\n            if (!item) {\n                this.arrayIndex++;\n                this.inArrayIndex = 0;\n                return this.getNextMiddleware();\n            }\n            return item;\n        }\n    });\n    return CollectedMiddlewares;\n}());\nfunction runMiddleWares(node, baseCall, originalFn) {\n    var middlewares = new CollectedMiddlewares(node, originalFn);\n    // Short circuit\n    if (middlewares.isEmpty)\n        return action(originalFn).apply(null, baseCall.args);\n    var result = null;\n    function runNextMiddleware(call) {\n        var middleware = middlewares.getNextMiddleware();\n        var handler = middleware && middleware.handler;\n        if (!handler) {\n            return action(originalFn).apply(null, call.args);\n        }\n        // skip hooks if asked to\n        if (!middleware.includeHooks && Hook[call.name]) {\n            return runNextMiddleware(call);\n        }\n        var nextInvoked = false;\n        function next(call2, callback) {\n            nextInvoked = true;\n            // the result can contain\n            // - the non manipulated return value from an action\n            // - the non manipulated abort value\n            // - one of the above but manipulated through the callback function\n            result = runNextMiddleware(call2);\n            if (callback) {\n                result = callback(result);\n            }\n        }\n        var abortInvoked = false;\n        function abort(value) {\n            abortInvoked = true;\n            // overwrite the result\n            // can be manipulated through middlewares earlier in the queue using the callback fn\n            result = value;\n        }\n        handler(call, next, abort);\n        if (devMode()) {\n            if (!nextInvoked && !abortInvoked) {\n                var node2 = getStateTreeNode(call.tree);\n                throw fail(\"Neither the next() nor the abort() callback within the middleware \" + handler.name + \" for the action: \\\"\" + call.name + \"\\\" on the node: \" + node2.type.name + \" was invoked.\");\n            }\n            else if (nextInvoked && abortInvoked) {\n                var node2 = getStateTreeNode(call.tree);\n                throw fail(\"The next() and abort() callback within the middleware \" + handler.name + \" for the action: \\\"\" + call.name + \"\\\" on the node: \" + node2.type.name + \" were invoked.\");\n            }\n        }\n        return result;\n    }\n    return runNextMiddleware(baseCall);\n}\n\n/**\n * Returns the currently executing MST action context, or undefined if none.\n */\nfunction getRunningActionContext() {\n    var current = getCurrentActionContext();\n    while (current && current.type !== \"action\") {\n        current = current.parentActionEvent;\n    }\n    return current;\n}\nfunction _isActionContextThisOrChildOf(actionContext, sameOrParent, includeSame) {\n    var parentId = typeof sameOrParent === \"number\" ? sameOrParent : sameOrParent.id;\n    var current = includeSame\n        ? actionContext\n        : actionContext.parentActionEvent;\n    while (current) {\n        if (current.id === parentId) {\n            return true;\n        }\n        current = current.parentActionEvent;\n    }\n    return false;\n}\n/**\n * Returns if the given action context is a parent of this action context.\n */\nfunction isActionContextChildOf(actionContext, parent) {\n    return _isActionContextThisOrChildOf(actionContext, parent, false);\n}\n/**\n * Returns if the given action context is this or a parent of this action context.\n */\nfunction isActionContextThisOrChildOf(actionContext, parentOrThis) {\n    return _isActionContextThisOrChildOf(actionContext, parentOrThis, true);\n}\n\nfunction safeStringify(value) {\n    try {\n        return JSON.stringify(value);\n    }\n    catch (e) {\n        // istanbul ignore next\n        return \"<Unserializable: \" + e + \">\";\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction prettyPrintValue(value) {\n    return typeof value === \"function\"\n        ? \"<function\" + (value.name ? \" \" + value.name : \"\") + \">\"\n        : isStateTreeNode(value)\n            ? \"<\" + value + \">\"\n            : \"`\" + safeStringify(value) + \"`\";\n}\nfunction shortenPrintValue(valueInString) {\n    return valueInString.length < 280\n        ? valueInString\n        : valueInString.substring(0, 272) + \"......\" + valueInString.substring(valueInString.length - 8);\n}\nfunction toErrorString(error) {\n    var value = error.value;\n    var type = error.context[error.context.length - 1].type;\n    var fullPath = error.context\n        .map(function (_a) {\n        var path = _a.path;\n        return path;\n    })\n        .filter(function (path) { return path.length > 0; })\n        .join(\"/\");\n    var pathPrefix = fullPath.length > 0 ? \"at path \\\"/\" + fullPath + \"\\\" \" : \"\";\n    var currentTypename = isStateTreeNode(value)\n        ? \"value of type \" + getStateTreeNode(value).type.name + \":\"\n        : isPrimitive(value)\n            ? \"value\"\n            : \"snapshot\";\n    var isSnapshotCompatible = type && isStateTreeNode(value) && type.is(getStateTreeNode(value).snapshot);\n    return (\"\" + pathPrefix + currentTypename + \" \" + prettyPrintValue(value) + \" is not assignable \" + (type ? \"to type: `\" + type.name + \"`\" : \"\") +\n        (error.message ? \" (\" + error.message + \")\" : \"\") +\n        (type\n            ? isPrimitiveType(type) || isPrimitive(value)\n                ? \".\"\n                : \", expected an instance of `\" + type.name + \"` or a snapshot like `\" + type.describe() + \"` instead.\" +\n                    (isSnapshotCompatible\n                        ? \" (Note that a snapshot of the provided value is compatible with the targeted type)\"\n                        : \"\")\n            : \".\"));\n}\n/**\n * @internal\n * @hidden\n */\nfunction getContextForPath(context, path, type) {\n    return context.concat([{ path: path, type: type }]);\n}\n/**\n * @internal\n * @hidden\n */\nfunction typeCheckSuccess() {\n    return EMPTY_ARRAY;\n}\n/**\n * @internal\n * @hidden\n */\nfunction typeCheckFailure(context, value, message) {\n    return [{ context: context, value: value, message: message }];\n}\n/**\n * @internal\n * @hidden\n */\nfunction flattenTypeErrors(errors) {\n    return errors.reduce(function (a, i) { return a.concat(i); }, []);\n}\n// TODO; doublecheck: typecheck should only needed to be invoked from: type.create and array / map / value.property will change\n/**\n * @internal\n * @hidden\n */\nfunction typecheckInternal(type, value) {\n    // runs typeChecking if it is in dev-mode or through a process.env.ENABLE_TYPE_CHECK flag\n    if (isTypeCheckingEnabled()) {\n        typecheck(type, value);\n    }\n}\n/**\n * Run's the typechecker for the given type on the given value, which can be a snapshot or an instance.\n * Throws if the given value is not according the provided type specification.\n * Use this if you need typechecks even in a production build (by default all automatic runtime type checks will be skipped in production builds)\n *\n * @param type Type to check against.\n * @param value Value to be checked, either a snapshot or an instance.\n */\nfunction typecheck(type, value) {\n    var errors = type.validate(value, [{ path: \"\", type: type }]);\n    if (errors.length > 0) {\n        throw fail(validationErrorsToString(type, value, errors));\n    }\n}\nfunction validationErrorsToString(type, value, errors) {\n    if (errors.length === 0) {\n        return undefined;\n    }\n    return (\"Error while converting \" + shortenPrintValue(prettyPrintValue(value)) + \" to `\" + type.name + \"`:\\n\\n    \" + errors.map(toErrorString).join(\"\\n    \"));\n}\n\nvar identifierCacheId = 0;\n/**\n * @internal\n * @hidden\n */\nvar IdentifierCache = /** @class */ (function () {\n    function IdentifierCache() {\n        Object.defineProperty(this, \"cacheId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: identifierCacheId++\n        });\n        // n.b. in cache all identifiers are normalized to strings\n        Object.defineProperty(this, \"cache\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.map()\n        });\n        // last time the cache (array) for a given time changed\n        // n.b. it is not really the time, but just an integer that gets increased after each modification to the array\n        Object.defineProperty(this, \"lastCacheModificationPerId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.map()\n        });\n    }\n    Object.defineProperty(IdentifierCache.prototype, \"updateLastCacheModificationPerId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (identifier) {\n            var lcm = this.lastCacheModificationPerId.get(identifier);\n            // we start at 1 since 0 means no update since cache creation\n            this.lastCacheModificationPerId.set(identifier, lcm === undefined ? 1 : lcm + 1);\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"getLastCacheModificationPerId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (identifier) {\n            var modificationId = this.lastCacheModificationPerId.get(identifier) || 0;\n            return this.cacheId + \"-\" + modificationId;\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"addNodeToCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, lastCacheUpdate) {\n            if (lastCacheUpdate === void 0) { lastCacheUpdate = true; }\n            if (node.identifierAttribute) {\n                var identifier = node.identifier;\n                if (!this.cache.has(identifier)) {\n                    this.cache.set(identifier, observable.array([], mobxShallow));\n                }\n                var set = this.cache.get(identifier);\n                if (set.indexOf(node) !== -1)\n                    throw fail(\"Already registered\");\n                set.push(node);\n                if (lastCacheUpdate) {\n                    this.updateLastCacheModificationPerId(identifier);\n                }\n            }\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"mergeCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            values(node.identifierCache.cache).forEach(function (nodes) {\n                return nodes.forEach(function (child) {\n                    _this.addNodeToCache(child);\n                });\n            });\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"notifyDied\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            if (node.identifierAttribute) {\n                var id = node.identifier;\n                var set = this.cache.get(id);\n                if (set) {\n                    set.remove(node);\n                    // remove empty sets from cache\n                    if (!set.length) {\n                        this.cache.delete(id);\n                    }\n                    this.updateLastCacheModificationPerId(node.identifier);\n                }\n            }\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"splitCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (splitNode) {\n            var _this = this;\n            var newCache = new IdentifierCache();\n            // The slash is added here so we only match children of the splitNode. In version 5.1.8 and\n            // earlier there was no trailing slash, so non children that started with the same path string\n            // were being matched incorrectly.\n            var basePath = splitNode.path + \"/\";\n            entries(this.cache).forEach(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], nodes = _b[1];\n                var modified = false;\n                for (var i = nodes.length - 1; i >= 0; i--) {\n                    var node = nodes[i];\n                    if (node === splitNode || node.path.indexOf(basePath) === 0) {\n                        newCache.addNodeToCache(node, false); // no need to update lastUpdated since it is a whole new cache\n                        nodes.splice(i, 1);\n                        // remove empty sets from cache\n                        if (!nodes.length) {\n                            _this.cache.delete(id);\n                        }\n                        modified = true;\n                    }\n                }\n                if (modified) {\n                    _this.updateLastCacheModificationPerId(id);\n                }\n            });\n            return newCache;\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type, identifier) {\n            var set = this.cache.get(identifier);\n            if (!set)\n                return false;\n            return set.some(function (candidate) { return type.isAssignableFrom(candidate.type); });\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"resolve\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type, identifier) {\n            var set = this.cache.get(identifier);\n            if (!set)\n                return null;\n            var matches = set.filter(function (candidate) { return type.isAssignableFrom(candidate.type); });\n            switch (matches.length) {\n                case 0:\n                    return null;\n                case 1:\n                    return matches[0];\n                default:\n                    throw fail(\"Cannot resolve a reference to type '\" + type.name + \"' with id: '\" + identifier + \"' unambigously, there are multiple candidates: \" + matches\n                        .map(function (n) { return n.path; })\n                        .join(\", \"));\n            }\n        }\n    });\n    return IdentifierCache;\n}());\n\n/**\n * @internal\n * @hidden\n */\nfunction createObjectNode(type, parent, subpath, environment, initialValue) {\n    var existingNode = getStateTreeNodeSafe(initialValue);\n    if (existingNode) {\n        if (existingNode.parent) {\n            // istanbul ignore next\n            throw fail(\"Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '\" + (parent ? parent.path : \"\") + \"/\" + subpath + \"', but it lives already at '\" + existingNode.path + \"'\");\n        }\n        if (parent) {\n            existingNode.setParent(parent, subpath);\n        }\n        // else it already has no parent since it is a pre-requisite\n        return existingNode;\n    }\n    // not a node, a snapshot\n    return new ObjectNode(type, parent, subpath, environment, initialValue);\n}\n/**\n * @internal\n * @hidden\n */\nfunction createScalarNode(type, parent, subpath, environment, initialValue) {\n    return new ScalarNode(type, parent, subpath, environment, initialValue);\n}\n/**\n * @internal\n * @hidden\n */\nfunction isNode(value) {\n    return value instanceof ScalarNode || value instanceof ObjectNode;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar NodeLifeCycle;\n(function (NodeLifeCycle) {\n    NodeLifeCycle[NodeLifeCycle[\"INITIALIZING\"] = 0] = \"INITIALIZING\";\n    NodeLifeCycle[NodeLifeCycle[\"CREATED\"] = 1] = \"CREATED\";\n    NodeLifeCycle[NodeLifeCycle[\"FINALIZED\"] = 2] = \"FINALIZED\";\n    NodeLifeCycle[NodeLifeCycle[\"DETACHING\"] = 3] = \"DETACHING\";\n    NodeLifeCycle[NodeLifeCycle[\"DEAD\"] = 4] = \"DEAD\"; // no coming back from this one\n})(NodeLifeCycle || (NodeLifeCycle = {}));\n/**\n * Returns true if the given value is a node in a state tree.\n * More precisely, that is, if the value is an instance of a\n * `types.model`, `types.array` or `types.map`.\n *\n * @param value\n * @returns true if the value is a state tree node.\n */\nfunction isStateTreeNode(value) {\n    return !!(value && value.$treenode);\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsStateTreeNode(value, argNumber) {\n    assertArg(value, isStateTreeNode, \"mobx-state-tree node\", argNumber);\n}\n/**\n * @internal\n * @hidden\n */\nfunction getStateTreeNode(value) {\n    if (!isStateTreeNode(value)) {\n        // istanbul ignore next\n        throw fail(\"Value \" + value + \" is no MST Node\");\n    }\n    return value.$treenode;\n}\n/**\n * @internal\n * @hidden\n */\nfunction getStateTreeNodeSafe(value) {\n    return (value && value.$treenode) || null;\n}\n/**\n * @internal\n * @hidden\n */\nfunction toJSON() {\n    return getStateTreeNode(this).snapshot;\n}\nvar doubleDot = function (_) { return \"..\"; };\n/**\n * @internal\n * @hidden\n */\nfunction getRelativePathBetweenNodes(base, target) {\n    // PRE condition target is (a child of) base!\n    if (base.root !== target.root) {\n        throw fail(\"Cannot calculate relative path: objects '\" + base + \"' and '\" + target + \"' are not part of the same object tree\");\n    }\n    var baseParts = splitJsonPath(base.path);\n    var targetParts = splitJsonPath(target.path);\n    var common = 0;\n    for (; common < baseParts.length; common++) {\n        if (baseParts[common] !== targetParts[common])\n            break;\n    }\n    // TODO: assert that no targetParts paths are \"..\", \".\" or \"\"!\n    return baseParts.slice(common).map(doubleDot).join(\"/\") + joinJsonPath(targetParts.slice(common));\n}\n/**\n * @internal\n * @hidden\n */\nfunction resolveNodeByPath(base, path, failIfResolveFails) {\n    if (failIfResolveFails === void 0) { failIfResolveFails = true; }\n    return resolveNodeByPathParts(base, splitJsonPath(path), failIfResolveFails);\n}\n/**\n * @internal\n * @hidden\n */\nfunction resolveNodeByPathParts(base, pathParts, failIfResolveFails) {\n    if (failIfResolveFails === void 0) { failIfResolveFails = true; }\n    var current = base;\n    try {\n        for (var i = 0; i < pathParts.length; i++) {\n            var part = pathParts[i];\n            if (part === \"..\") {\n                current = current.parent;\n                if (current)\n                    continue; // not everything has a parent\n            }\n            else if (part === \".\") {\n                continue;\n            }\n            else if (current) {\n                if (current instanceof ScalarNode) {\n                    // check if the value of a scalar resolves to a state tree node (e.g. references)\n                    // then we can continue resolving...\n                    var value = current.value;\n                    if (isStateTreeNode(value)) {\n                        current = getStateTreeNode(value);\n                        // fall through\n                    }\n                }\n                if (current instanceof ObjectNode) {\n                    var subType = current.getChildType(part);\n                    if (subType) {\n                        current = current.getChildNode(part);\n                        if (current)\n                            continue;\n                    }\n                }\n            }\n            throw fail(\"Could not resolve '\" + part + \"' in path '\" + (joinJsonPath(pathParts.slice(0, i)) || \"/\") + \"' while resolving '\" + joinJsonPath(pathParts) + \"'\");\n        }\n    }\n    catch (e) {\n        if (!failIfResolveFails) {\n            return undefined;\n        }\n        throw e;\n    }\n    return current;\n}\n/**\n * @internal\n * @hidden\n */\nfunction convertChildNodesToArray(childNodes) {\n    if (!childNodes)\n        return EMPTY_ARRAY;\n    var keys = Object.keys(childNodes);\n    if (!keys.length)\n        return EMPTY_ARRAY;\n    var result = new Array(keys.length);\n    keys.forEach(function (key, index) {\n        result[index] = childNodes[key];\n    });\n    return result;\n}\n\n// based on: https://github.com/mobxjs/mobx-utils/blob/master/src/async-action.ts\n/*\n    All contents of this file are deprecated.\n\n    The term `process` has been replaced with `flow` to avoid conflicts with the\n    global `process` object.\n\n    Refer to `flow.ts` for any further changes to this implementation.\n*/\nvar DEPRECATION_MESSAGE = \"See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. \" +\n    \"Note that the middleware event types starting with `process` now start with `flow`.\";\n/**\n * @hidden\n *\n * @deprecated has been renamed to `flow()`.\n * See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information.\n * Note that the middleware event types starting with `process` now start with `flow`.\n *\n * @returns {Promise}\n */\nfunction process$1(asyncAction) {\n    deprecated(\"process\", \"`process()` has been renamed to `flow()`. \" + DEPRECATION_MESSAGE);\n    return flow(asyncAction);\n}\n\nvar plainObjectString = Object.toString();\n/**\n * @internal\n * @hidden\n */\nvar EMPTY_ARRAY = Object.freeze([]);\n/**\n * @internal\n * @hidden\n */\nvar EMPTY_OBJECT = Object.freeze({});\n/**\n * @internal\n * @hidden\n */\nvar mobxShallow = _getGlobalState().useProxies\n    ? { deep: false }\n    : { deep: false, proxy: false };\nObject.freeze(mobxShallow);\n/**\n * @internal\n * @hidden\n */\nfunction fail(message) {\n    if (message === void 0) { message = \"Illegal state\"; }\n    return new Error(\"[mobx-state-tree] \" + message);\n}\n/**\n * @internal\n * @hidden\n */\nfunction identity(_) {\n    return _;\n}\n/**\n * @internal\n * @hidden\n */\nvar isInteger = Number.isInteger;\n/**\n * @internal\n * @hidden\n */\nfunction isFloat(val) {\n    return Number(val) === val && val % 1 !== 0;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isFinite(val) {\n    return Number.isFinite(val);\n}\n/**\n * @internal\n * @hidden\n */\nfunction isArray(val) {\n    return Array.isArray(val) || isObservableArray(val);\n}\n/**\n * @internal\n * @hidden\n */\nfunction asArray(val) {\n    if (!val)\n        return EMPTY_ARRAY;\n    if (isArray(val))\n        return val;\n    return [val];\n}\n/**\n * @internal\n * @hidden\n */\nfunction extend(a) {\n    var b = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        b[_i - 1] = arguments[_i];\n    }\n    for (var i = 0; i < b.length; i++) {\n        var current = b[i];\n        for (var key in current)\n            a[key] = current[key];\n    }\n    return a;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isPlainObject(value) {\n    var _a;\n    if (value === null || typeof value !== \"object\")\n        return false;\n    var proto = Object.getPrototypeOf(value);\n    if (proto == null)\n        return true;\n    return ((_a = proto.constructor) === null || _a === void 0 ? void 0 : _a.toString()) === plainObjectString;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isMutable(value) {\n    return (value !== null &&\n        typeof value === \"object\" &&\n        !(value instanceof Date) &&\n        !(value instanceof RegExp));\n}\n/**\n * @internal\n * @hidden\n */\nfunction isPrimitive(value, includeDate) {\n    if (includeDate === void 0) { includeDate = true; }\n    return (value === null ||\n        value === undefined ||\n        typeof value === \"string\" ||\n        typeof value === \"number\" ||\n        typeof value === \"boolean\" ||\n        (includeDate && value instanceof Date));\n}\n/**\n * @internal\n * @hidden\n * Freeze a value and return it (if not in production)\n */\nfunction freeze(value) {\n    if (!devMode())\n        return value;\n    return isPrimitive(value) || isObservableArray(value) ? value : Object.freeze(value);\n}\n/**\n * @internal\n * @hidden\n * Recursively freeze a value (if not in production)\n */\nfunction deepFreeze(value) {\n    if (!devMode())\n        return value;\n    freeze(value);\n    if (isPlainObject(value)) {\n        Object.keys(value).forEach(function (propKey) {\n            if (!isPrimitive(value[propKey]) && !Object.isFrozen(value[propKey])) {\n                deepFreeze(value[propKey]);\n            }\n        });\n    }\n    return value;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isSerializable(value) {\n    return typeof value !== \"function\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction defineProperty(object, key, descriptor) {\n    isObservableObject(object)\n        ? defineProperty$1(object, key, descriptor)\n        : Object.defineProperty(object, key, descriptor);\n}\n/**\n * @internal\n * @hidden\n */\nfunction addHiddenFinalProp(object, propName, value) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: false,\n        configurable: true,\n        value: value\n    });\n}\n/**\n * @internal\n * @hidden\n */\nfunction addHiddenWritableProp(object, propName, value) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: true,\n        configurable: true,\n        value: value\n    });\n}\n/**\n * @internal\n * @hidden\n */\nvar EventHandler = /** @class */ (function () {\n    function EventHandler() {\n        Object.defineProperty(this, \"handlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n    }\n    Object.defineProperty(EventHandler.prototype, \"hasSubscribers\", {\n        get: function () {\n            return this.handlers.length > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(EventHandler.prototype, \"register\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn, atTheBeginning) {\n            var _this = this;\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (atTheBeginning) {\n                this.handlers.unshift(fn);\n            }\n            else {\n                this.handlers.push(fn);\n            }\n            return function () {\n                _this.unregister(fn);\n            };\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            return this.handlers.indexOf(fn) >= 0;\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"unregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var index = this.handlers.indexOf(fn);\n            if (index >= 0) {\n                this.handlers.splice(index, 1);\n            }\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"clear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.handlers.length = 0;\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"emit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // make a copy just in case it changes\n            var handlers = this.handlers.slice();\n            handlers.forEach(function (f) { return f.apply(void 0, __spread(args)); });\n        }\n    });\n    return EventHandler;\n}());\n/**\n * @internal\n * @hidden\n */\nvar EventHandlers = /** @class */ (function () {\n    function EventHandlers() {\n        Object.defineProperty(this, \"eventHandlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n    }\n    Object.defineProperty(EventHandlers.prototype, \"hasSubscribers\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            return !!handler && handler.hasSubscribers;\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"register\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn, atTheBeginning) {\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (!this.eventHandlers) {\n                this.eventHandlers = {};\n            }\n            var handler = this.eventHandlers[event];\n            if (!handler) {\n                handler = this.eventHandlers[event] = new EventHandler();\n            }\n            return handler.register(fn, atTheBeginning);\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            return !!handler && handler.has(fn);\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"unregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            if (handler) {\n                handler.unregister(fn);\n            }\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"clear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            if (this.eventHandlers) {\n                delete this.eventHandlers[event];\n            }\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"clearAll\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.eventHandlers = undefined;\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"emit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var _a;\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            if (handler) {\n                (_a = handler).emit.apply(_a, __spread(args));\n            }\n        }\n    });\n    return EventHandlers;\n}());\n/**\n * @internal\n * @hidden\n */\nfunction argsToArray(args) {\n    var res = new Array(args.length);\n    for (var i = 0; i < args.length; i++)\n        res[i] = args[i];\n    return res;\n}\n/**\n * @internal\n * @hidden\n */\nfunction stringStartsWith(str, beginning) {\n    return str.indexOf(beginning) === 0;\n}\n/**\n * @internal\n * @hidden\n */\nvar deprecated = function (id, message) {\n    // skip if running production\n    if (!devMode())\n        return;\n    // warn if hasn't been warned before\n    if (deprecated.ids && !deprecated.ids.hasOwnProperty(id)) {\n        warnError(\"Deprecation warning: \" + message);\n    }\n    // mark as warned to avoid duplicate warn message\n    if (deprecated.ids)\n        deprecated.ids[id] = true;\n};\ndeprecated.ids = {};\n/**\n * @internal\n * @hidden\n */\nfunction warnError(msg) {\n    console.warn(new Error(\"[mobx-state-tree] \" + msg));\n}\n/**\n * @internal\n * @hidden\n */\nfunction isTypeCheckingEnabled() {\n    return (devMode() ||\n        (typeof process !== \"undefined\" && process.env && process.env.ENABLE_TYPE_CHECK === \"true\"));\n}\n/**\n * @internal\n * @hidden\n */\nfunction devMode() {\n    return process.env.NODE_ENV !== \"production\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertArg(value, fn, typeName, argNumber) {\n    if (devMode()) {\n        if (!fn(value)) {\n            // istanbul ignore next\n            throw fail(\"expected \" + typeName + \" as argument \" + asArray(argNumber).join(\" or \") + \", got \" + value + \" instead\");\n        }\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsFunction(value, argNumber) {\n    assertArg(value, function (fn) { return typeof fn === \"function\"; }, \"function\", argNumber);\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsNumber(value, argNumber, min, max) {\n    assertArg(value, function (n) { return typeof n === \"number\"; }, \"number\", argNumber);\n    if (min !== undefined) {\n        assertArg(value, function (n) { return n >= min; }, \"number greater than \" + min, argNumber);\n    }\n    if (max !== undefined) {\n        assertArg(value, function (n) { return n <= max; }, \"number lesser than \" + max, argNumber);\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsString(value, argNumber, canBeEmpty) {\n    if (canBeEmpty === void 0) { canBeEmpty = true; }\n    assertArg(value, function (s) { return typeof s === \"string\"; }, \"string\", argNumber);\n    if (!canBeEmpty) {\n        assertArg(value, function (s) { return s !== \"\"; }, \"not empty string\", argNumber);\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction setImmediateWithFallback(fn) {\n    if (typeof queueMicrotask === \"function\") {\n        queueMicrotask(fn);\n    }\n    else if (typeof setImmediate === \"function\") {\n        setImmediate(fn);\n    }\n    else {\n        setTimeout(fn, 1);\n    }\n}\n\n/**\n * See [asynchronous actions](concepts/async-actions.md).\n *\n * @returns The flow as a promise.\n */\nfunction flow(generator) {\n    return createFlowSpawner(generator.name, generator);\n}\n/**\n * @deprecated Not needed since TS3.6.\n * Used for TypeScript to make flows that return a promise return the actual promise result.\n *\n * @param val\n * @returns\n */\nfunction castFlowReturn(val) {\n    return val;\n}\n/**\n * @experimental\n * experimental api - might change on minor/patch releases\n *\n * Convert a promise-returning function to a generator-returning one.\n * This is intended to allow for usage of `yield*` in async actions to\n * retain the promise return type.\n *\n * Example:\n * ```ts\n * function getDataAsync(input: string): Promise<number> { ... }\n * const getDataGen = toGeneratorFunction(getDataAsync);\n *\n * const someModel.actions(self => ({\n *   someAction: flow(function*() {\n *     // value is typed as number\n *     const value = yield* getDataGen(\"input value\");\n *     ...\n *   })\n * }))\n * ```\n */\nfunction toGeneratorFunction(p) {\n    return function () {\n        var _i;\n        var args = [];\n        for (_i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, p.apply(void 0, __spread(args))];\n                case 1: return [2 /*return*/, (_a.sent())];\n            }\n        });\n    };\n}\n/**\n * @experimental\n * experimental api - might change on minor/patch releases\n *\n * Convert a promise to a generator yielding that promise\n * This is intended to allow for usage of `yield*` in async actions to\n * retain the promise return type.\n *\n * Example:\n * ```ts\n * function getDataAsync(input: string): Promise<number> { ... }\n *\n * const someModel.actions(self => ({\n *   someAction: flow(function*() {\n *     // value is typed as number\n *     const value = yield* toGenerator(getDataAsync(\"input value\"));\n *     ...\n *   })\n * }))\n * ```\n */\nfunction toGenerator(p) {\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0: return [4 /*yield*/, p];\n            case 1: return [2 /*return*/, (_a.sent())];\n        }\n    });\n}\n/**\n * @internal\n * @hidden\n */\nfunction createFlowSpawner(name, generator) {\n    var spawner = function flowSpawner() {\n        // Implementation based on https://github.com/tj/co/blob/master/index.js\n        var runId = getNextActionId();\n        var parentContext = getCurrentActionContext();\n        if (!parentContext) {\n            throw fail(\"a mst flow must always have a parent context\");\n        }\n        var parentActionContext = getParentActionContext(parentContext);\n        if (!parentActionContext) {\n            throw fail(\"a mst flow must always have a parent action context\");\n        }\n        var contextBase = {\n            name: name,\n            id: runId,\n            tree: parentContext.tree,\n            context: parentContext.context,\n            parentId: parentContext.id,\n            allParentIds: __spread(parentContext.allParentIds, [parentContext.id]),\n            rootId: parentContext.rootId,\n            parentEvent: parentContext,\n            parentActionEvent: parentActionContext\n        };\n        var args = arguments;\n        function wrap(fn, type, arg) {\n            fn.$mst_middleware = spawner.$mst_middleware; // pick up any middleware attached to the flow\n            return runWithActionContext(__assign(__assign({}, contextBase), { type: type, args: [arg] }), fn);\n        }\n        return new Promise(function (resolve, reject) {\n            var gen;\n            var init = function asyncActionInit() {\n                gen = generator.apply(null, arguments);\n                onFulfilled(undefined); // kick off the flow\n            };\n            init.$mst_middleware = spawner.$mst_middleware;\n            runWithActionContext(__assign(__assign({}, contextBase), { type: \"flow_spawn\", args: argsToArray(args) }), init);\n            function onFulfilled(res) {\n                var ret;\n                try {\n                    // prettier-ignore\n                    var cancelError = wrap(function (r) { ret = gen.next(r); }, \"flow_resume\", res);\n                    if (cancelError instanceof Error) {\n                        ret = gen.throw(cancelError);\n                    }\n                }\n                catch (e) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { reject(e); }, \"flow_throw\", e);\n                    });\n                    return;\n                }\n                next(ret);\n                return;\n            }\n            function onRejected(err) {\n                var ret;\n                try {\n                    // prettier-ignore\n                    wrap(function (r) { ret = gen.throw(r); }, \"flow_resume_error\", err); // or yieldError?\n                }\n                catch (e) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { reject(e); }, \"flow_throw\", e);\n                    });\n                    return;\n                }\n                next(ret);\n            }\n            function next(ret) {\n                if (ret.done) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { resolve(r); }, \"flow_return\", ret.value);\n                    });\n                    return;\n                }\n                // TODO: support more type of values? See https://github.com/tj/co/blob/249bbdc72da24ae44076afd716349d2089b31c4c/index.js#L100\n                if (!ret.value || typeof ret.value.then !== \"function\") {\n                    // istanbul ignore next\n                    throw fail(\"Only promises can be yielded to `async`, got: \" + ret);\n                }\n                return ret.value.then(onFulfilled, onRejected);\n            }\n        });\n    };\n    spawner._isFlowAction = true;\n    return spawner;\n}\n\n/**\n * @internal\n * @hidden\n */\nfunction splitPatch(patch) {\n    if (!(\"oldValue\" in patch))\n        throw fail(\"Patches without `oldValue` field cannot be inversed\");\n    return [stripPatch(patch), invertPatch(patch)];\n}\n/**\n * @internal\n * @hidden\n */\nfunction stripPatch(patch) {\n    // strips `oldvalue` information from the patch, so that it becomes a patch conform the json-patch spec\n    // this removes the ability to undo the patch\n    switch (patch.op) {\n        case \"add\":\n            return { op: \"add\", path: patch.path, value: patch.value };\n        case \"remove\":\n            return { op: \"remove\", path: patch.path };\n        case \"replace\":\n            return { op: \"replace\", path: patch.path, value: patch.value };\n    }\n}\nfunction invertPatch(patch) {\n    switch (patch.op) {\n        case \"add\":\n            return {\n                op: \"remove\",\n                path: patch.path\n            };\n        case \"remove\":\n            return {\n                op: \"add\",\n                path: patch.path,\n                value: patch.oldValue\n            };\n        case \"replace\":\n            return {\n                op: \"replace\",\n                path: patch.path,\n                value: patch.oldValue\n            };\n    }\n}\n/**\n * Simple simple check to check it is a number.\n */\nfunction isNumber(x) {\n    return typeof x === \"number\";\n}\n/**\n * Escape slashes and backslashes.\n *\n * http://tools.ietf.org/html/rfc6901\n */\nfunction escapeJsonPath(path) {\n    if (isNumber(path) === true) {\n        return \"\" + path;\n    }\n    if (path.indexOf(\"/\") === -1 && path.indexOf(\"~\") === -1)\n        return path;\n    return path.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\n/**\n * Unescape slashes and backslashes.\n */\nfunction unescapeJsonPath(path) {\n    return path.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\n/**\n * Generates a json-path compliant json path from path parts.\n *\n * @param path\n * @returns\n */\nfunction joinJsonPath(path) {\n    // `/` refers to property with an empty name, while `` refers to root itself!\n    if (path.length === 0)\n        return \"\";\n    var getPathStr = function (p) { return p.map(escapeJsonPath).join(\"/\"); };\n    if (path[0] === \".\" || path[0] === \"..\") {\n        // relative\n        return getPathStr(path);\n    }\n    else {\n        // absolute\n        return \"/\" + getPathStr(path);\n    }\n}\n/**\n * Splits and decodes a json path into several parts.\n *\n * @param path\n * @returns\n */\nfunction splitJsonPath(path) {\n    // `/` refers to property with an empty name, while `` refers to root itself!\n    var parts = path.split(\"/\").map(unescapeJsonPath);\n    var valid = path === \"\" ||\n        path === \".\" ||\n        path === \"..\" ||\n        stringStartsWith(path, \"/\") ||\n        stringStartsWith(path, \"./\") ||\n        stringStartsWith(path, \"../\");\n    if (!valid) {\n        throw fail(\"a json path must be either rooted, empty or relative, but got '\" + path + \"'\");\n    }\n    // '/a/b/c' -> [\"a\", \"b\", \"c\"]\n    // '../../b/c' -> [\"..\", \"..\", \"b\", \"c\"]\n    // '' -> []\n    // '/' -> ['']\n    // './a' -> [\".\", \"a\"]\n    // /./a' -> [\".\", \"a\"] equivalent to './a'\n    if (parts[0] === \"\") {\n        parts.shift();\n    }\n    return parts;\n}\n\n/** @hidden */\nvar $preProcessorFailed = Symbol(\"$preProcessorFailed\");\nvar SnapshotProcessor = /** @class */ (function (_super) {\n    __extends(SnapshotProcessor, _super);\n    function SnapshotProcessor(_subtype, _processors, name) {\n        var _this = _super.call(this, name || _subtype.name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_processors\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _processors\n        });\n        return _this;\n    }\n    Object.defineProperty(SnapshotProcessor.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.SnapshotProcessor;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"snapshotProcessor(\" + this._subtype.describe() + \")\";\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"preProcessSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn) {\n            if (this._processors.preProcessor) {\n                return this._processors.preProcessor.call(null, sn);\n            }\n            return sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"preProcessSnapshotSafe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn) {\n            try {\n                return this.preProcessSnapshot(sn);\n            }\n            catch (e) {\n                return $preProcessorFailed;\n            }\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"postProcessSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn, node) {\n            if (this._processors.postProcessor) {\n                return this._processors.postProcessor.call(null, sn, node.storedValue);\n            }\n            return sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"_fixNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            // the node has to use these methods rather than the original type ones\n            proxyNodeTypeMethods(node.type, this, \"create\");\n            if (node instanceof ObjectNode) {\n                node.hasSnapshotPostProcessor = !!this._processors.postProcessor;\n            }\n            var oldGetSnapshot = node.getSnapshot;\n            node.getSnapshot = function () { return _this.postProcessSnapshot(oldGetSnapshot.call(node), node); };\n            if (!isUnionType(this._subtype)) {\n                node.getReconciliationType = function () {\n                    return _this;\n                };\n            }\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var processedInitialValue = isStateTreeNode(initialValue)\n                ? initialValue\n                : this.preProcessSnapshot(initialValue);\n            var node = this._subtype.instantiate(parent, subpath, environment, processedInitialValue);\n            this._fixNode(node);\n            return node;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var node = this._subtype.reconcile(current, isStateTreeNode(newValue) ? newValue : this.preProcessSnapshot(newValue), parent, subpath);\n            if (node !== current) {\n                this._fixNode(node);\n            }\n            return node;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            if (applyPostProcess === void 0) { applyPostProcess = true; }\n            var sn = this._subtype.getSnapshot(node);\n            return applyPostProcess ? this.postProcessSnapshot(sn, node) : sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var processedSn = this.preProcessSnapshotSafe(value);\n            if (processedSn === $preProcessorFailed) {\n                return typeCheckFailure(context, value, \"Failed to preprocess value\");\n            }\n            return this._subtype.validate(processedSn, context);\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"is\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (thing) {\n            var value = isType(thing)\n                ? this._subtype\n                : isStateTreeNode(thing)\n                    ? getSnapshot(thing, false)\n                    : this.preProcessSnapshotSafe(thing);\n            if (value === $preProcessorFailed) {\n                return false;\n            }\n            return this._subtype.validate(value, [{ path: \"\", type: this._subtype }]).length === 0;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isMatchingSnapshotId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, snapshot) {\n            if (!(this._subtype instanceof ComplexType)) {\n                return false;\n            }\n            var processedSn = this.preProcessSnapshot(snapshot);\n            return this._subtype.isMatchingSnapshotId(current, processedSn);\n        }\n    });\n    return SnapshotProcessor;\n}(BaseType));\nfunction proxyNodeTypeMethods(nodeType, snapshotProcessorType) {\n    var e_1, _a;\n    var methods = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        methods[_i - 2] = arguments[_i];\n    }\n    try {\n        for (var methods_1 = __values(methods), methods_1_1 = methods_1.next(); !methods_1_1.done; methods_1_1 = methods_1.next()) {\n            var method = methods_1_1.value;\n            nodeType[method] = snapshotProcessorType[method].bind(snapshotProcessorType);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (methods_1_1 && !methods_1_1.done && (_a = methods_1.return)) _a.call(methods_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\n/**\n * `types.snapshotProcessor` - Runs a pre/post snapshot processor before/after serializing a given type.\n *\n * Example:\n * ```ts\n * const Todo1 = types.model({ text: types.string })\n * // in the backend the text type must be null when empty\n * interface BackendTodo {\n *     text: string | null\n * }\n *\n * const Todo2 = types.snapshotProcessor(Todo1, {\n *     // from snapshot to instance\n *     preProcessor(snapshot: BackendTodo) {\n *         return {\n *             text: sn.text || \"\";\n *         }\n *     },\n *\n *     // from instance to snapshot\n *     postProcessor(snapshot, node): BackendTodo {\n *         return {\n *             text: !sn.text ? null : sn.text\n *         }\n *     }\n * })\n * ```\n *\n * @param type Type to run the processors over.\n * @param processors Processors to run.\n * @param name Type name, or undefined to inherit the inner type one.\n * @returns\n */\nfunction snapshotProcessor(type, processors, name) {\n    assertIsType(type, 1);\n    if (devMode()) {\n        if (processors.postProcessor && typeof processors.postProcessor !== \"function\") {\n            // istanbul ignore next\n            throw fail(\"postSnapshotProcessor must be a function\");\n        }\n        if (processors.preProcessor && typeof processors.preProcessor !== \"function\") {\n            // istanbul ignore next\n            throw fail(\"preSnapshotProcessor must be a function\");\n        }\n    }\n    return new SnapshotProcessor(type, processors, name);\n}\n\nvar needsIdentifierError = \"Map.put can only be used to store complex values that have an identifier type attribute\";\nfunction tryCollectModelTypes(type, modelTypes) {\n    var e_1, _a;\n    var subtypes = type.getSubTypes();\n    if (subtypes === cannotDetermineSubtype) {\n        return false;\n    }\n    if (subtypes) {\n        var subtypesArray = asArray(subtypes);\n        try {\n            for (var subtypesArray_1 = __values(subtypesArray), subtypesArray_1_1 = subtypesArray_1.next(); !subtypesArray_1_1.done; subtypesArray_1_1 = subtypesArray_1.next()) {\n                var subtype = subtypesArray_1_1.value;\n                if (!tryCollectModelTypes(subtype, modelTypes))\n                    return false;\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (subtypesArray_1_1 && !subtypesArray_1_1.done && (_a = subtypesArray_1.return)) _a.call(subtypesArray_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    if (type instanceof ModelType) {\n        modelTypes.push(type);\n    }\n    return true;\n}\n/**\n * @internal\n * @hidden\n */\nvar MapIdentifierMode;\n(function (MapIdentifierMode) {\n    MapIdentifierMode[MapIdentifierMode[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    MapIdentifierMode[MapIdentifierMode[\"YES\"] = 1] = \"YES\";\n    MapIdentifierMode[MapIdentifierMode[\"NO\"] = 2] = \"NO\";\n})(MapIdentifierMode || (MapIdentifierMode = {}));\nvar MSTMap = /** @class */ (function (_super) {\n    __extends(MSTMap, _super);\n    function MSTMap(initialData, name) {\n        return _super.call(this, initialData, observable.ref.enhancer, name) || this;\n    }\n    Object.defineProperty(MSTMap.prototype, \"get\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            // maybe this is over-enthousiastic? normalize numeric keys to strings\n            return _super.prototype.get.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            return _super.prototype.has.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"delete\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            return _super.prototype.delete.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"set\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key, value) {\n            return _super.prototype.set.call(this, \"\" + key, value);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"put\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value) {\n            if (!value)\n                throw fail(\"Map.put cannot be used to set empty values\");\n            if (isStateTreeNode(value)) {\n                var node = getStateTreeNode(value);\n                if (devMode()) {\n                    if (!node.identifierAttribute) {\n                        throw fail(needsIdentifierError);\n                    }\n                }\n                if (node.identifier === null) {\n                    throw fail(needsIdentifierError);\n                }\n                this.set(node.identifier, value);\n                return value;\n            }\n            else if (!isMutable(value)) {\n                throw fail(\"Map.put can only be used to store complex values\");\n            }\n            else {\n                var mapNode = getStateTreeNode(this);\n                var mapType = mapNode.type;\n                if (mapType.identifierMode !== MapIdentifierMode.YES) {\n                    throw fail(needsIdentifierError);\n                }\n                var idAttr = mapType.mapIdentifierAttribute;\n                var id = value[idAttr];\n                if (!isValidIdentifier(id)) {\n                    // try again but this time after creating a node for the value\n                    // since it might be an optional identifier\n                    var newNode = this.put(mapType.getChildType().create(value, mapNode.environment));\n                    return this.put(getSnapshot(newNode));\n                }\n                var key = normalizeIdentifier(id);\n                this.set(key, value);\n                return this.get(key);\n            }\n        }\n    });\n    return MSTMap;\n}(ObservableMap));\n/**\n * @internal\n * @hidden\n */\nvar MapType = /** @class */ (function (_super) {\n    __extends(MapType, _super);\n    function MapType(name, _subType, hookInitializers) {\n        if (hookInitializers === void 0) { hookInitializers = []; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subType\n        });\n        Object.defineProperty(_this, \"identifierMode\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: MapIdentifierMode.UNKNOWN\n        });\n        Object.defineProperty(_this, \"mapIdentifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: undefined\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Map\n        });\n        Object.defineProperty(_this, \"hookInitializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        _this._determineIdentifierMode();\n        _this.hookInitializers = hookInitializers;\n        return _this;\n    }\n    Object.defineProperty(MapType.prototype, \"hooks\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hooks) {\n            var hookInitializers = this.hookInitializers.length > 0 ? this.hookInitializers.concat(hooks) : [hooks];\n            return new MapType(this.name, this._subType, hookInitializers);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            this._determineIdentifierMode();\n            return createObjectNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"_determineIdentifierMode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this.identifierMode !== MapIdentifierMode.UNKNOWN) {\n                return;\n            }\n            var modelTypes = [];\n            if (tryCollectModelTypes(this._subType, modelTypes)) {\n                var identifierAttribute = modelTypes.reduce(function (current, type) {\n                    if (!type.identifierAttribute)\n                        return current;\n                    if (current && current !== type.identifierAttribute) {\n                        throw fail(\"The objects in a map should all have the same identifier attribute, expected '\" + current + \"', but child of type '\" + type.name + \"' declared attribute '\" + type.identifierAttribute + \"' as identifier\");\n                    }\n                    return type.identifierAttribute;\n                }, undefined);\n                if (identifierAttribute) {\n                    this.identifierMode = MapIdentifierMode.YES;\n                    this.mapIdentifierAttribute = identifierAttribute;\n                }\n                else {\n                    this.identifierMode = MapIdentifierMode.NO;\n                }\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, initialSnapshot) {\n            if (initialSnapshot === void 0) { initialSnapshot = {}; }\n            var subType = objNode.type._subType;\n            var result = {};\n            Object.keys(initialSnapshot).forEach(function (name) {\n                result[name] = subType.instantiate(objNode, name, undefined, initialSnapshot[name]);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            return new MSTMap(childNodes, this.name);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            _interceptReads(instance, node.unbox);\n            var type = node.type;\n            type.hookInitializers.forEach(function (initializer) {\n                var hooks = initializer(instance);\n                Object.keys(hooks).forEach(function (name) {\n                    var hook = hooks[name];\n                    var actionInvoker = createActionInvoker(instance, name, hook);\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(instance, name, actionInvoker);\n                });\n            });\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            // return (node.storedValue as ObservableMap<any>).values()\n            return values(node.storedValue);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var childNode = node.storedValue.get(\"\" + key);\n            if (!childNode)\n                throw fail(\"Not a child \" + key);\n            return childNode;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            var key = change.name;\n            node.assertWritable({ subpath: key });\n            var mapType = node.type;\n            var subType = mapType._subType;\n            switch (change.type) {\n                case \"update\":\n                    {\n                        var newValue = change.newValue;\n                        var oldValue = change.object.get(key);\n                        if (newValue === oldValue)\n                            return null;\n                        typecheckInternal(subType, newValue);\n                        change.newValue = subType.reconcile(node.getChildNode(key), change.newValue, node, key);\n                        mapType.processIdentifier(key, change.newValue);\n                    }\n                    break;\n                case \"add\":\n                    {\n                        typecheckInternal(subType, change.newValue);\n                        change.newValue = subType.instantiate(node, key, undefined, change.newValue);\n                        mapType.processIdentifier(key, change.newValue);\n                    }\n                    break;\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"processIdentifier\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (expected, node) {\n            if (this.identifierMode === MapIdentifierMode.YES && node instanceof ObjectNode) {\n                var identifier = node.identifier;\n                if (identifier !== expected)\n                    throw fail(\"A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '\" + identifier + \"', but expected: '\" + expected + \"'\");\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var res = {};\n            node.getChildren().forEach(function (childNode) {\n                res[childNode.subpath] = childNode.snapshot;\n            });\n            return res;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = {};\n            Object.keys(childNodes).forEach(function (key) {\n                processed[key] = childNodes[key].getSnapshot();\n            });\n            return processed;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            switch (change.type) {\n                case \"update\":\n                    return void node.emitPatch({\n                        op: \"replace\",\n                        path: escapeJsonPath(change.name),\n                        value: change.newValue.snapshot,\n                        oldValue: change.oldValue ? change.oldValue.snapshot : undefined\n                    }, node);\n                case \"add\":\n                    return void node.emitPatch({\n                        op: \"add\",\n                        path: escapeJsonPath(change.name),\n                        value: change.newValue.snapshot,\n                        oldValue: undefined\n                    }, node);\n                case \"delete\":\n                    // a node got deleted, get the old snapshot and make the node die\n                    var oldSnapshot = change.oldValue.snapshot;\n                    change.oldValue.die();\n                    // emit the patch\n                    return void node.emitPatch({\n                        op: \"remove\",\n                        path: escapeJsonPath(change.name),\n                        oldValue: oldSnapshot\n                    }, node);\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            var target = node.storedValue;\n            switch (patch.op) {\n                case \"add\":\n                case \"replace\":\n                    target.set(subpath, patch.value);\n                    break;\n                case \"remove\":\n                    target.delete(subpath);\n                    break;\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var target = node.storedValue;\n            var currentKeys = {};\n            Array.from(target.keys()).forEach(function (key) {\n                currentKeys[key] = false;\n            });\n            if (snapshot) {\n                // Don't use target.replace, as it will throw away all existing items first\n                for (var key in snapshot) {\n                    target.set(key, snapshot[key]);\n                    currentKeys[\"\" + key] = true;\n                }\n            }\n            Object.keys(currentKeys).forEach(function (key) {\n                if (currentKeys[key] === false)\n                    target.delete(key);\n            });\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subType;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            if (!isPlainObject(value)) {\n                return typeCheckFailure(context, value, \"Value is not a plain object\");\n            }\n            return flattenTypeErrors(Object.keys(value).map(function (path) {\n                return _this._subType.validate(value[path], getContextForPath(context, path, _this._subType));\n            }));\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_OBJECT;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue.delete(subpath);\n        }\n    });\n    return MapType;\n}(ComplexType));\nMapType.prototype.applySnapshot = action(MapType.prototype.applySnapshot);\n/**\n * `types.map` - Creates a key based collection type who's children are all of a uniform declared type.\n * If the type stored in a map has an identifier, it is mandatory to store the child under that identifier in the map.\n *\n * This type will always produce [observable maps](https://mobx.js.org/api.html#observablemap)\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   id: types.identifier,\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.map(Todo)\n * })\n *\n * const s = TodoStore.create({ todos: {} })\n * unprotect(s)\n * s.todos.set(17, { task: \"Grab coffee\", id: 17 })\n * s.todos.put({ task: \"Grab cookie\", id: 18 }) // put will infer key from the identifier\n * console.log(s.todos.get(17).task) // prints: \"Grab coffee\"\n * ```\n *\n * @param subtype\n * @returns\n */\nfunction map(subtype) {\n    return new MapType(\"Map<string, \" + subtype.name + \">\", subtype);\n}\n/**\n * Returns if a given value represents a map type.\n *\n * @param type\n * @returns `true` if it is a map type.\n */\nfunction isMapType(type) {\n    return isType(type) && (type.flags & TypeFlags.Map) > 0;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar ArrayType = /** @class */ (function (_super) {\n    __extends(ArrayType, _super);\n    function ArrayType(name, _subType, hookInitializers) {\n        if (hookInitializers === void 0) { hookInitializers = []; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Array\n        });\n        Object.defineProperty(_this, \"hookInitializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        _this.hookInitializers = hookInitializers;\n        return _this;\n    }\n    Object.defineProperty(ArrayType.prototype, \"hooks\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hooks) {\n            var hookInitializers = this.hookInitializers.length > 0 ? this.hookInitializers.concat(hooks) : [hooks];\n            return new ArrayType(this.name, this._subType, hookInitializers);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createObjectNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, snapshot) {\n            if (snapshot === void 0) { snapshot = []; }\n            var subType = objNode.type._subType;\n            var result = {};\n            snapshot.forEach(function (item, index) {\n                var subpath = \"\" + index;\n                result[subpath] = subType.instantiate(objNode, subpath, undefined, item);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var options = __assign(__assign({}, mobxShallow), { name: this.name });\n            return observable.array(convertChildNodesToArray(childNodes), options);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            _getAdministration(instance).dehancer = node.unbox;\n            var type = node.type;\n            type.hookInitializers.forEach(function (initializer) {\n                var hooks = initializer(instance);\n                Object.keys(hooks).forEach(function (name) {\n                    var hook = hooks[name];\n                    var actionInvoker = createActionInvoker(instance, name, hook);\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(instance, name, actionInvoker);\n                });\n            });\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue.slice();\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var index = Number(key);\n            if (index < node.storedValue.length)\n                return node.storedValue[index];\n            throw fail(\"Not a child: \" + key);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            node.assertWritable({ subpath: \"\" + change.index });\n            var subType = node.type._subType;\n            var childNodes = node.getChildren();\n            switch (change.type) {\n                case \"update\":\n                    {\n                        if (change.newValue === change.object[change.index])\n                            return null;\n                        var updatedNodes = reconcileArrayChildren(node, subType, [childNodes[change.index]], [change.newValue], [change.index]);\n                        if (!updatedNodes) {\n                            return null;\n                        }\n                        change.newValue = updatedNodes[0];\n                    }\n                    break;\n                case \"splice\":\n                    {\n                        var index_1 = change.index, removedCount = change.removedCount, added = change.added;\n                        var addedNodes = reconcileArrayChildren(node, subType, childNodes.slice(index_1, index_1 + removedCount), added, added.map(function (_, i) { return index_1 + i; }));\n                        if (!addedNodes) {\n                            return null;\n                        }\n                        change.added = addedNodes;\n                        // update paths of remaining items\n                        for (var i = index_1 + removedCount; i < childNodes.length; i++) {\n                            childNodes[i].setParent(node, \"\" + (i + added.length - removedCount));\n                        }\n                    }\n                    break;\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.getChildren().map(function (childNode) { return childNode.snapshot; });\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = [];\n            Object.keys(childNodes).forEach(function (key) {\n                processed.push(childNodes[key].getSnapshot());\n            });\n            return processed;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            switch (change.type) {\n                case \"update\":\n                    return void node.emitPatch({\n                        op: \"replace\",\n                        path: \"\" + change.index,\n                        value: change.newValue.snapshot,\n                        oldValue: change.oldValue ? change.oldValue.snapshot : undefined\n                    }, node);\n                case \"splice\":\n                    for (var i = change.removedCount - 1; i >= 0; i--)\n                        node.emitPatch({\n                            op: \"remove\",\n                            path: \"\" + (change.index + i),\n                            oldValue: change.removed[i].snapshot\n                        }, node);\n                    for (var i = 0; i < change.addedCount; i++)\n                        node.emitPatch({\n                            op: \"add\",\n                            path: \"\" + (change.index + i),\n                            value: node.getChildNode(\"\" + (change.index + i)).snapshot,\n                            oldValue: undefined\n                        }, node);\n                    return;\n            }\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            var target = node.storedValue;\n            var index = subpath === \"-\" ? target.length : Number(subpath);\n            switch (patch.op) {\n                case \"replace\":\n                    target[index] = patch.value;\n                    break;\n                case \"add\":\n                    target.splice(index, 0, patch.value);\n                    break;\n                case \"remove\":\n                    target.splice(index, 1);\n                    break;\n            }\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var target = node.storedValue;\n            target.replace(snapshot);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subType;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            if (!isArray(value)) {\n                return typeCheckFailure(context, value, \"Value is not an array\");\n            }\n            return flattenTypeErrors(value.map(function (item, index) {\n                return _this._subType.validate(item, getContextForPath(context, \"\" + index, _this._subType));\n            }));\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_ARRAY;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue.splice(Number(subpath), 1);\n        }\n    });\n    return ArrayType;\n}(ComplexType));\nArrayType.prototype.applySnapshot = action(ArrayType.prototype.applySnapshot);\n/**\n * `types.array` - Creates an index based collection type who's children are all of a uniform declared type.\n *\n * This type will always produce [observable arrays](https://mobx.js.org/api.html#observablearray)\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.array(Todo)\n * })\n *\n * const s = TodoStore.create({ todos: [] })\n * unprotect(s) // needed to allow modifying outside of an action\n * s.todos.push({ task: \"Grab coffee\" })\n * console.log(s.todos[0]) // prints: \"Grab coffee\"\n * ```\n *\n * @param subtype\n * @returns\n */\nfunction array(subtype) {\n    assertIsType(subtype, 1);\n    return new ArrayType(subtype.name + \"[]\", subtype);\n}\nfunction reconcileArrayChildren(parent, childType, oldNodes, newValues, newPaths) {\n    var nothingChanged = true;\n    for (var i = 0;; i++) {\n        var hasNewNode = i <= newValues.length - 1;\n        var oldNode = oldNodes[i];\n        var newValue = hasNewNode ? newValues[i] : undefined;\n        var newPath = \"\" + newPaths[i];\n        // for some reason, instead of newValue we got a node, fallback to the storedValue\n        // TODO: https://github.com/mobxjs/mobx-state-tree/issues/340#issuecomment-325581681\n        if (isNode(newValue))\n            newValue = newValue.storedValue;\n        if (!oldNode && !hasNewNode) {\n            // both are empty, end\n            break;\n        }\n        else if (!hasNewNode) {\n            // new one does not exists\n            nothingChanged = false;\n            oldNodes.splice(i, 1);\n            if (oldNode instanceof ObjectNode) {\n                // since it is going to be returned by pop/splice/shift better create it before killing it\n                // so it doesn't end up in an undead state\n                oldNode.createObservableInstanceIfNeeded();\n            }\n            oldNode.die();\n            i--;\n        }\n        else if (!oldNode) {\n            // there is no old node, create it\n            // check if already belongs to the same parent. if so, avoid pushing item in. only swapping can occur.\n            if (isStateTreeNode(newValue) && getStateTreeNode(newValue).parent === parent) {\n                // this node is owned by this parent, but not in the reconcilable set, so it must be double\n                throw fail(\"Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '\" + parent.path + \"/\" + newPath + \"', but it lives already at '\" + getStateTreeNode(newValue).path + \"'\");\n            }\n            nothingChanged = false;\n            var newNode = valueAsNode(childType, parent, newPath, newValue);\n            oldNodes.splice(i, 0, newNode);\n        }\n        else if (areSame(oldNode, newValue)) {\n            // both are the same, reconcile\n            oldNodes[i] = valueAsNode(childType, parent, newPath, newValue, oldNode);\n        }\n        else {\n            // nothing to do, try to reorder\n            var oldMatch = undefined;\n            // find a possible candidate to reuse\n            for (var j = i; j < oldNodes.length; j++) {\n                if (areSame(oldNodes[j], newValue)) {\n                    oldMatch = oldNodes.splice(j, 1)[0];\n                    break;\n                }\n            }\n            nothingChanged = false;\n            var newNode = valueAsNode(childType, parent, newPath, newValue, oldMatch);\n            oldNodes.splice(i, 0, newNode);\n        }\n    }\n    return nothingChanged ? null : oldNodes;\n}\n/**\n * Convert a value to a node at given parent and subpath. Attempts to reuse old node if possible and given.\n */\nfunction valueAsNode(childType, parent, subpath, newValue, oldNode) {\n    // ensure the value is valid-ish\n    typecheckInternal(childType, newValue);\n    function getNewNode() {\n        // the new value has a MST node\n        if (isStateTreeNode(newValue)) {\n            var childNode = getStateTreeNode(newValue);\n            childNode.assertAlive(EMPTY_OBJECT);\n            // the node lives here\n            if (childNode.parent !== null && childNode.parent === parent) {\n                childNode.setParent(parent, subpath);\n                return childNode;\n            }\n        }\n        // there is old node and new one is a value/snapshot\n        if (oldNode) {\n            return childType.reconcile(oldNode, newValue, parent, subpath);\n        }\n        // nothing to do, create from scratch\n        return childType.instantiate(parent, subpath, undefined, newValue);\n    }\n    var newNode = getNewNode();\n    if (oldNode && oldNode !== newNode) {\n        if (oldNode instanceof ObjectNode) {\n            // since it is going to be returned by pop/splice/shift better create it before killing it\n            // so it doesn't end up in an undead state\n            oldNode.createObservableInstanceIfNeeded();\n        }\n        oldNode.die();\n    }\n    return newNode;\n}\n/**\n * Check if a node holds a value.\n */\nfunction areSame(oldNode, newValue) {\n    // never consider dead old nodes for reconciliation\n    if (!oldNode.isAlive) {\n        return false;\n    }\n    // the new value has the same node\n    if (isStateTreeNode(newValue)) {\n        var newNode = getStateTreeNode(newValue);\n        return newNode.isAlive && newNode === oldNode;\n    }\n    // the provided value is the snapshot of the old node\n    if (oldNode.snapshot === newValue) {\n        return true;\n    }\n    // Non object nodes don't get reconciled\n    if (!(oldNode instanceof ObjectNode)) {\n        return false;\n    }\n    var oldNodeType = oldNode.getReconciliationType();\n    // new value is a snapshot with the correct identifier\n    return (oldNode.identifier !== null &&\n        oldNode.identifierAttribute &&\n        isPlainObject(newValue) &&\n        oldNodeType.is(newValue) &&\n        oldNodeType.isMatchingSnapshotId(oldNode, newValue));\n}\n/**\n * Returns if a given value represents an array type.\n *\n * @param type\n * @returns `true` if the type is an array type.\n */\nfunction isArrayType(type) {\n    return isType(type) && (type.flags & TypeFlags.Array) > 0;\n}\n\nvar PRE_PROCESS_SNAPSHOT = \"preProcessSnapshot\";\nvar POST_PROCESS_SNAPSHOT = \"postProcessSnapshot\";\nfunction objectTypeToString() {\n    return getStateTreeNode(this).toString();\n}\nvar defaultObjectOptions = {\n    name: \"AnonymousModel\",\n    properties: {},\n    initializers: EMPTY_ARRAY\n};\nfunction toPropertiesObject(declaredProps) {\n    var keysList = Object.keys(declaredProps);\n    var alreadySeenKeys = new Set();\n    keysList.forEach(function (key) {\n        if (alreadySeenKeys.has(key)) {\n            throw fail(key + \" is declared twice in the model. Model should not contain the same keys\");\n        }\n        alreadySeenKeys.add(key);\n    });\n    // loop through properties and ensures that all items are types\n    return keysList.reduce(function (props, key) {\n        // warn if user intended a HOOK\n        if (key in Hook) {\n            throw fail(\"Hook '\" + key + \"' was defined as property. Hooks should be defined as part of the actions\");\n        }\n        // the user intended to use a view\n        var descriptor = Object.getOwnPropertyDescriptor(declaredProps, key);\n        if (\"get\" in descriptor) {\n            throw fail(\"Getters are not supported as properties. Please use views instead\");\n        }\n        // undefined and null are not valid\n        var value = descriptor.value;\n        if (value === null || value === undefined) {\n            throw fail(\"The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?\");\n        }\n        // its a primitive, convert to its type\n        else if (isPrimitive(value)) {\n            props[key] = optional(getPrimitiveFactoryFromValue(value), value);\n        }\n        // map defaults to empty object automatically for models\n        else if (value instanceof MapType) {\n            props[key] = optional(value, {});\n        }\n        else if (value instanceof ArrayType) {\n            props[key] = optional(value, []);\n        }\n        // its already a type\n        else if (isType(value)) ;\n        // its a function, maybe the user wanted a view?\n        else if (devMode() && typeof value === \"function\") {\n            throw fail(\"Invalid type definition for property '\" + key + \"', it looks like you passed a function. Did you forget to invoke it, or did you intend to declare a view / action?\");\n        }\n        // no other complex values\n        else if (devMode() && typeof value === \"object\") {\n            throw fail(\"Invalid type definition for property '\" + key + \"', it looks like you passed an object. Try passing another model type or a types.frozen.\");\n        }\n        else {\n            throw fail(\"Invalid type definition for property '\" + key + \"', cannot infer a type from a value like '\" + value + \"' (\" + typeof value + \")\");\n        }\n        return props;\n    }, __assign({}, declaredProps));\n}\n/**\n * @internal\n * @hidden\n */\nvar ModelType = /** @class */ (function (_super) {\n    __extends(ModelType, _super);\n    function ModelType(opts) {\n        var _this = _super.call(this, opts.name || defaultObjectOptions.name) || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Object\n        });\n        /*\n         * The original object definition\n         */\n        Object.defineProperty(_this, \"initializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"properties\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"preProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"postProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"propertyNames\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"named\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (name) {\n                return _this.cloneAndEnhance({ name: name });\n            }\n        });\n        Object.defineProperty(_this, \"props\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (properties) {\n                return _this.cloneAndEnhance({ properties: properties });\n            }\n        });\n        Object.defineProperty(_this, \"preProcessSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (preProcessor) {\n                var currentPreprocessor = _this.preProcessor;\n                if (!currentPreprocessor)\n                    return _this.cloneAndEnhance({ preProcessor: preProcessor });\n                else\n                    return _this.cloneAndEnhance({\n                        preProcessor: function (snapshot) { return currentPreprocessor(preProcessor(snapshot)); }\n                    });\n            }\n        });\n        Object.defineProperty(_this, \"postProcessSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (postProcessor) {\n                var currentPostprocessor = _this.postProcessor;\n                if (!currentPostprocessor)\n                    return _this.cloneAndEnhance({ postProcessor: postProcessor });\n                else\n                    return _this.cloneAndEnhance({\n                        postProcessor: function (snapshot) { return postProcessor(currentPostprocessor(snapshot)); }\n                    });\n            }\n        });\n        Object.assign(_this, defaultObjectOptions, opts);\n        // ensures that any default value gets converted to its related type\n        _this.properties = toPropertiesObject(_this.properties);\n        freeze(_this.properties); // make sure nobody messes with it\n        _this.propertyNames = Object.keys(_this.properties);\n        _this.identifierAttribute = _this._getIdentifierAttribute();\n        return _this;\n    }\n    Object.defineProperty(ModelType.prototype, \"_getIdentifierAttribute\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var identifierAttribute = undefined;\n            this.forAllProps(function (propName, propType) {\n                if (propType.flags & TypeFlags.Identifier) {\n                    if (identifierAttribute)\n                        throw fail(\"Cannot define property '\" + propName + \"' as object identifier, property '\" + identifierAttribute + \"' is already defined as identifier property\");\n                    identifierAttribute = propName;\n                }\n            });\n            return identifierAttribute;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"cloneAndEnhance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (opts) {\n            return new ModelType({\n                name: opts.name || this.name,\n                properties: Object.assign({}, this.properties, opts.properties),\n                initializers: this.initializers.concat(opts.initializers || []),\n                preProcessor: opts.preProcessor || this.preProcessor,\n                postProcessor: opts.postProcessor || this.postProcessor\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"actions\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var actionInitializer = function (self) {\n                _this.instantiateActions(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [actionInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateActions\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, actions) {\n            // check if return is correct\n            if (!isPlainObject(actions))\n                throw fail(\"actions initializer should return a plain object containing actions\");\n            // bind actions to the object created\n            Object.keys(actions).forEach(function (name) {\n                // warn if preprocessor was given\n                if (name === PRE_PROCESS_SNAPSHOT)\n                    throw fail(\"Cannot define action '\" + PRE_PROCESS_SNAPSHOT + \"', it should be defined using 'type.preProcessSnapshot(fn)' instead\");\n                // warn if postprocessor was given\n                if (name === POST_PROCESS_SNAPSHOT)\n                    throw fail(\"Cannot define action '\" + POST_PROCESS_SNAPSHOT + \"', it should be defined using 'type.postProcessSnapshot(fn)' instead\");\n                var action2 = actions[name];\n                // apply hook composition\n                var baseAction = self[name];\n                if (name in Hook && baseAction) {\n                    var specializedAction_1 = action2;\n                    action2 = function () {\n                        baseAction.apply(null, arguments);\n                        specializedAction_1.apply(null, arguments);\n                    };\n                }\n                // the goal of this is to make sure actions using \"this\" can call themselves,\n                // while still allowing the middlewares to register them\n                var middlewares = action2.$mst_middleware; // make sure middlewares are not lost\n                var boundAction = action2.bind(actions);\n                boundAction._isFlowAction = action2._isFlowAction || false;\n                boundAction.$mst_middleware = middlewares;\n                var actionInvoker = createActionInvoker(self, name, boundAction);\n                actions[name] = actionInvoker;\n                (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(self, name, actionInvoker);\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"volatile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            if (typeof fn !== \"function\") {\n                throw fail(\"You passed an \" + typeof fn + \" to volatile state as an argument, when function is expected\");\n            }\n            var stateInitializer = function (self) {\n                _this.instantiateVolatileState(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [stateInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateVolatileState\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, state) {\n            // check views return\n            if (!isPlainObject(state))\n                throw fail(\"volatile state initializer should return a plain object containing state\");\n            set(self, state);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"extend\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var initializer = function (self) {\n                var _a = fn(self), actions = _a.actions, views = _a.views, state = _a.state, rest = __rest(_a, [\"actions\", \"views\", \"state\"]);\n                for (var key in rest)\n                    throw fail(\"The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '\" + key + \"'\");\n                if (state)\n                    _this.instantiateVolatileState(self, state);\n                if (views)\n                    _this.instantiateViews(self, views);\n                if (actions)\n                    _this.instantiateActions(self, actions);\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [initializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"views\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var viewInitializer = function (self) {\n                _this.instantiateViews(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [viewInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateViews\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, views) {\n            // check views return\n            if (!isPlainObject(views))\n                throw fail(\"views initializer should return a plain object containing views\");\n            Object.getOwnPropertyNames(views).forEach(function (key) {\n                var _a;\n                // is this a computed property?\n                var descriptor = Object.getOwnPropertyDescriptor(views, key);\n                if (\"get\" in descriptor) {\n                    defineProperty$1(self, key, descriptor);\n                    makeObservable(self, (_a = {}, _a[key] = computed, _a));\n                }\n                else if (typeof descriptor.value === \"function\") {\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(self, key, descriptor.value);\n                }\n                else {\n                    throw fail(\"A view member should either be a function or getter based property\");\n                }\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var value = isStateTreeNode(initialValue)\n                ? initialValue\n                : this.applySnapshotPreProcessor(initialValue);\n            return createObjectNode(this, parent, subpath, environment, value);\n            // Optimization: record all prop- view- and action names after first construction, and generate an optimal base class\n            // that pre-reserves all these fields for fast object-member lookups\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, initialSnapshot) {\n            if (initialSnapshot === void 0) { initialSnapshot = {}; }\n            var type = objNode.type;\n            var result = {};\n            type.forAllProps(function (name, childType) {\n                result[name] = childType.instantiate(objNode, name, undefined, initialSnapshot[name]);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var options = __assign(__assign({}, mobxShallow), { name: this.name });\n            return observable.object(childNodes, EMPTY_OBJECT, options);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            addHiddenFinalProp(instance, \"toString\", objectTypeToString);\n            this.forAllProps(function (name) {\n                _interceptReads(instance, name, node.unbox);\n            });\n            this.initializers.reduce(function (self, fn) { return fn(self); }, instance);\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (chg) {\n            // TODO: mobx typings don't seem to take into account that newValue can be set even when removing a prop\n            var change = chg;\n            var node = getStateTreeNode(change.object);\n            var subpath = change.name;\n            node.assertWritable({ subpath: subpath });\n            var childType = node.type.properties[subpath];\n            // only properties are typed, state are stored as-is references\n            if (childType) {\n                typecheckInternal(childType, change.newValue);\n                change.newValue = childType.reconcile(node.getChildNode(subpath), change.newValue, node, subpath);\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (chg) {\n            // TODO: mobx typings don't seem to take into account that newValue can be set even when removing a prop\n            var change = chg;\n            var childNode = getStateTreeNode(change.object);\n            var childType = childNode.type.properties[change.name];\n            if (!childType) {\n                // don't emit patches for volatile state\n                return;\n            }\n            var oldChildValue = change.oldValue ? change.oldValue.snapshot : undefined;\n            childNode.emitPatch({\n                op: \"replace\",\n                path: escapeJsonPath(change.name),\n                value: change.newValue.snapshot,\n                oldValue: oldChildValue\n            }, childNode);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            var res = [];\n            this.forAllProps(function (name) {\n                res.push(_this.getChildNode(node, name));\n            });\n            return res;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var _a;\n            if (!(key in this.properties))\n                throw fail(\"Not a value property: \" + key);\n            var adm = _getAdministration(node.storedValue, key);\n            var childNode = (_a = adm.raw) === null || _a === void 0 ? void 0 : _a.call(adm);\n            if (!childNode)\n                throw fail(\"Node not available for property \" + key);\n            return childNode;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            var _this = this;\n            if (applyPostProcess === void 0) { applyPostProcess = true; }\n            var res = {};\n            this.forAllProps(function (name, type) {\n                try {\n                    // TODO: FIXME, make sure the observable ref is used!\n                    var atom = getAtom(node.storedValue, name);\n                    atom.reportObserved();\n                }\n                catch (e) {\n                    throw fail(name + \" property is declared twice\");\n                }\n                res[name] = _this.getChildNode(node, name).snapshot;\n            });\n            if (applyPostProcess) {\n                return this.applySnapshotPostProcessor(res);\n            }\n            return res;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = {};\n            Object.keys(childNodes).forEach(function (key) {\n                processed[key] = childNodes[key].getSnapshot();\n            });\n            return this.applySnapshotPostProcessor(processed);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            if (!(patch.op === \"replace\" || patch.op === \"add\")) {\n                throw fail(\"object does not support operation \" + patch.op);\n            }\n            node.storedValue[subpath] = patch.value;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var preProcessedSnapshot = this.applySnapshotPreProcessor(snapshot);\n            this.forAllProps(function (name) {\n                node.storedValue[name] = preProcessedSnapshot[name];\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshotPreProcessor\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            var processor = this.preProcessor;\n            return processor ? processor.call(null, snapshot) : snapshot;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshotPostProcessor\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            var postProcessor = this.postProcessor;\n            if (postProcessor)\n                return postProcessor.call(null, snapshot);\n            return snapshot;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (propertyName) {\n            assertIsString(propertyName, 1);\n            return this.properties[propertyName];\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            var snapshot = this.applySnapshotPreProcessor(value);\n            if (!isPlainObject(snapshot)) {\n                return typeCheckFailure(context, snapshot, \"Value is not a plain object\");\n            }\n            return flattenTypeErrors(this.propertyNames.map(function (key) {\n                return _this.properties[key].validate(snapshot[key], getContextForPath(context, key, _this.properties[key]));\n            }));\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"forAllProps\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            this.propertyNames.forEach(function (key) { return fn(key, _this.properties[key]); });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            // optimization: cache\n            return (\"{ \" +\n                this.propertyNames.map(function (key) { return key + \": \" + _this.properties[key].describe(); }).join(\"; \") +\n                \" }\");\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_OBJECT;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue[subpath] = undefined;\n        }\n    });\n    return ModelType;\n}(ComplexType));\nModelType.prototype.applySnapshot = action(ModelType.prototype.applySnapshot);\n/**\n * `types.model` - Creates a new model type by providing a name, properties, volatile state and actions.\n *\n * See the [model type](/concepts/trees#creating-models) description or the [getting started](intro/getting-started.md#getting-started-1) tutorial.\n */\nfunction model() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (devMode() && typeof args[0] !== \"string\" && args[1]) {\n        throw fail(\"Model creation failed. First argument must be a string when two arguments are provided\");\n    }\n    var name = typeof args[0] === \"string\" ? args.shift() : \"AnonymousModel\";\n    var properties = args.shift() || {};\n    return new ModelType({ name: name, properties: properties });\n}\n/**\n * `types.compose` - Composes a new model from one or more existing model types.\n * This method can be invoked in two forms:\n * Given 2 or more model types, the types are composed into a new Type.\n * Given first parameter as a string and 2 or more model types,\n * the types are composed into a new Type with the given name\n */\nfunction compose() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    // TODO: just join the base type names if no name is provided\n    var hasTypename = typeof args[0] === \"string\";\n    var typeName = hasTypename ? args[0] : \"AnonymousModel\";\n    if (hasTypename) {\n        args.shift();\n    }\n    // check all parameters\n    if (devMode()) {\n        args.forEach(function (type, i) {\n            assertArg(type, isModelType, \"mobx-state-tree model type\", hasTypename ? i + 2 : i + 1);\n        });\n    }\n    return args\n        .reduce(function (prev, cur) {\n        return prev.cloneAndEnhance({\n            name: prev.name + \"_\" + cur.name,\n            properties: cur.properties,\n            initializers: cur.initializers,\n            preProcessor: function (snapshot) {\n                return cur.applySnapshotPreProcessor(prev.applySnapshotPreProcessor(snapshot));\n            },\n            postProcessor: function (snapshot) {\n                return cur.applySnapshotPostProcessor(prev.applySnapshotPostProcessor(snapshot));\n            }\n        });\n    })\n        .named(typeName);\n}\n/**\n * Returns if a given value represents a model type.\n *\n * @param type\n * @returns\n */\nfunction isModelType(type) {\n    return isType(type) && (type.flags & TypeFlags.Object) > 0;\n}\n\n// TODO: implement CoreType using types.custom ?\n/**\n * @internal\n * @hidden\n */\nvar CoreType = /** @class */ (function (_super) {\n    __extends(CoreType, _super);\n    function CoreType(name, flags, checker, initializer) {\n        if (initializer === void 0) { initializer = identity; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: flags\n        });\n        Object.defineProperty(_this, \"checker\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: checker\n        });\n        Object.defineProperty(_this, \"initializer\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: initializer\n        });\n        _this.flags = flags;\n        return _this;\n    }\n    Object.defineProperty(CoreType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            return this.initializer(snapshot);\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (isPrimitive(value) && this.checker(value)) {\n                return typeCheckSuccess();\n            }\n            var typeName = this.name === \"Date\" ? \"Date or a unix milliseconds timestamp\" : this.name;\n            return typeCheckFailure(context, value, \"Value is not a \" + typeName);\n        }\n    });\n    return CoreType;\n}(SimpleType));\n/**\n * `types.string` - Creates a type that can only contain a string value.\n * This type is used for string values by default\n *\n * Example:\n * ```ts\n * const Person = types.model({\n *   firstName: types.string,\n *   lastName: \"Doe\"\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar string = new CoreType(\"string\", TypeFlags.String, function (v) { return typeof v === \"string\"; });\n/**\n * `types.number` - Creates a type that can only contain a numeric value.\n * This type is used for numeric values by default\n *\n * Example:\n * ```ts\n * const Vector = types.model({\n *   x: types.number,\n *   y: 1.5\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar number = new CoreType(\"number\", TypeFlags.Number, function (v) { return typeof v === \"number\"; });\n/**\n * `types.integer` - Creates a type that can only contain an integer value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.integer,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar integer = new CoreType(\"integer\", TypeFlags.Integer, function (v) { return isInteger(v); });\n/**\n * `types.float` - Creates a type that can only contain an float value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.float,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar float = new CoreType(\"float\", TypeFlags.Float, function (v) { return isFloat(v); });\n/**\n * `types.finite` - Creates a type that can only contain an finite value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.finite,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar finite = new CoreType(\"finite\", TypeFlags.Finite, function (v) { return isFinite(v); });\n/**\n * `types.boolean` - Creates a type that can only contain a boolean value.\n * This type is used for boolean values by default\n *\n * Example:\n * ```ts\n * const Thing = types.model({\n *   isCool: types.boolean,\n *   isAwesome: false\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar boolean = new CoreType(\"boolean\", TypeFlags.Boolean, function (v) { return typeof v === \"boolean\"; });\n/**\n * `types.null` - The type of the value `null`\n */\nvar nullType = new CoreType(\"null\", TypeFlags.Null, function (v) { return v === null; });\n/**\n * `types.undefined` - The type of the value `undefined`\n */\nvar undefinedType = new CoreType(\"undefined\", TypeFlags.Undefined, function (v) { return v === undefined; });\nvar _DatePrimitive = new CoreType(\"Date\", TypeFlags.Date, function (v) { return typeof v === \"number\" || v instanceof Date; }, function (v) { return (v instanceof Date ? v : new Date(v)); });\n_DatePrimitive.getSnapshot = function (node) {\n    return node.storedValue.getTime();\n};\n/**\n * `types.Date` - Creates a type that can only contain a javascript Date value.\n *\n * Example:\n * ```ts\n * const LogLine = types.model({\n *   timestamp: types.Date,\n * })\n *\n * LogLine.create({ timestamp: new Date() })\n * ```\n */\nvar DatePrimitive = _DatePrimitive;\n/**\n * @internal\n * @hidden\n */\nfunction getPrimitiveFactoryFromValue(value) {\n    switch (typeof value) {\n        case \"string\":\n            return string;\n        case \"number\":\n            return number; // In the future, isInteger(value) ? integer : number would be interesting, but would be too breaking for now\n        case \"boolean\":\n            return boolean;\n        case \"object\":\n            if (value instanceof Date)\n                return DatePrimitive;\n    }\n    throw fail(\"Cannot determine primitive type from value \" + value);\n}\n/**\n * Returns if a given value represents a primitive type.\n *\n * @param type\n * @returns\n */\nfunction isPrimitiveType(type) {\n    return (isType(type) &&\n        (type.flags &\n            (TypeFlags.String |\n                TypeFlags.Number |\n                TypeFlags.Integer |\n                TypeFlags.Boolean |\n                TypeFlags.Date)) >\n            0);\n}\n\n/**\n * @internal\n * @hidden\n */\nvar Literal = /** @class */ (function (_super) {\n    __extends(Literal, _super);\n    function Literal(value) {\n        var _this = _super.call(this, JSON.stringify(value)) || this;\n        Object.defineProperty(_this, \"value\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Literal\n        });\n        _this.value = value;\n        return _this;\n    }\n    Object.defineProperty(Literal.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Literal.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return JSON.stringify(this.value);\n        }\n    });\n    Object.defineProperty(Literal.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (isPrimitive(value) && value === this.value) {\n                return typeCheckSuccess();\n            }\n            return typeCheckFailure(context, value, \"Value is not a literal \" + JSON.stringify(this.value));\n        }\n    });\n    return Literal;\n}(SimpleType));\n/**\n * `types.literal` - The literal type will return a type that will match only the exact given type.\n * The given value must be a primitive, in order to be serialized to a snapshot correctly.\n * You can use literal to match exact strings for example the exact male or female string.\n *\n * Example:\n * ```ts\n * const Person = types.model({\n *     name: types.string,\n *     gender: types.union(types.literal('male'), types.literal('female'))\n * })\n * ```\n *\n * @param value The value to use in the strict equal check\n * @returns\n */\nfunction literal(value) {\n    // check that the given value is a primitive\n    assertArg(value, isPrimitive, \"primitive\", 1);\n    return new Literal(value);\n}\n/**\n * Returns if a given value represents a literal type.\n *\n * @param type\n * @returns\n */\nfunction isLiteralType(type) {\n    return isType(type) && (type.flags & TypeFlags.Literal) > 0;\n}\n\nvar Refinement = /** @class */ (function (_super) {\n    __extends(Refinement, _super);\n    function Refinement(name, _subtype, _predicate, _message) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_predicate\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _predicate\n        });\n        Object.defineProperty(_this, \"_message\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _message\n        });\n        return _this;\n    }\n    Object.defineProperty(Refinement.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.Refinement;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Refinement.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            // create the child type\n            return this._subtype.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var subtypeErrors = this._subtype.validate(value, context);\n            if (subtypeErrors.length > 0)\n                return subtypeErrors;\n            var snapshot = isStateTreeNode(value) ? getStateTreeNode(value).snapshot : value;\n            if (!this._predicate(snapshot)) {\n                return typeCheckFailure(context, value, this._message(value));\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this._subtype.reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    return Refinement;\n}(BaseType));\n/**\n * `types.refinement` - Creates a type that is more specific than the base type, e.g. `types.refinement(types.string, value => value.length > 5)` to create a type of strings that can only be longer then 5.\n *\n * @param name\n * @param type\n * @param predicate\n * @returns\n */\nfunction refinement() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var name = typeof args[0] === \"string\" ? args.shift() : isType(args[0]) ? args[0].name : null;\n    var type = args[0];\n    var predicate = args[1];\n    var message = args[2] ? args[2] : function (v) { return \"Value does not respect the refinement predicate\"; };\n    // ensures all parameters are correct\n    assertIsType(type, [1, 2]);\n    assertIsString(name, 1);\n    assertIsFunction(predicate, [2, 3]);\n    assertIsFunction(message, [3, 4]);\n    return new Refinement(name, type, predicate, message);\n}\n/**\n * Returns if a given value is a refinement type.\n *\n * @param type\n * @returns\n */\nfunction isRefinementType(type) {\n    return (type.flags & TypeFlags.Refinement) > 0;\n}\n\n/**\n * `types.enumeration` - Can be used to create an string based enumeration.\n * (note: this methods is just sugar for a union of string literals)\n *\n * Example:\n * ```ts\n * const TrafficLight = types.model({\n *   color: types.enumeration(\"Color\", [\"Red\", \"Orange\", \"Green\"])\n * })\n * ```\n *\n * @param name descriptive name of the enumeration (optional)\n * @param options possible values this enumeration can have\n * @returns\n */\nfunction enumeration(name, options) {\n    var realOptions = typeof name === \"string\" ? options : name;\n    // check all options\n    if (devMode()) {\n        realOptions.forEach(function (option, i) {\n            assertIsString(option, i + 1);\n        });\n    }\n    var type = union.apply(void 0, __spread(realOptions.map(function (option) { return literal(\"\" + option); })));\n    if (typeof name === \"string\")\n        type.name = name;\n    return type;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar Union = /** @class */ (function (_super) {\n    __extends(Union, _super);\n    function Union(name, _types, options) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_types\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _types\n        });\n        Object.defineProperty(_this, \"_dispatcher\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_eager\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        options = __assign({ eager: true, dispatcher: undefined }, options);\n        _this._dispatcher = options.dispatcher;\n        if (!options.eager)\n            _this._eager = false;\n        return _this;\n    }\n    Object.defineProperty(Union.prototype, \"flags\", {\n        get: function () {\n            var result = TypeFlags.Union;\n            this._types.forEach(function (type) {\n                result |= type.flags;\n            });\n            return result;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Union.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._types.some(function (subType) { return subType.isAssignableFrom(type); });\n        }\n    });\n    Object.defineProperty(Union.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"(\" + this._types.map(function (factory) { return factory.describe(); }).join(\" | \") + \")\";\n        }\n    });\n    Object.defineProperty(Union.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var type = this.determineType(initialValue, undefined);\n            if (!type)\n                throw fail(\"No matching type for union \" + this.describe()); // can happen in prod builds\n            return type.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Union.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var type = this.determineType(newValue, current.getReconciliationType());\n            if (!type)\n                throw fail(\"No matching type for union \" + this.describe()); // can happen in prod builds\n            return type.reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Union.prototype, \"determineType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, reconcileCurrentType) {\n            // try the dispatcher, if defined\n            if (this._dispatcher) {\n                return this._dispatcher(value);\n            }\n            // find the most accomodating type\n            // if we are using reconciliation try the current node type first (fix for #1045)\n            if (reconcileCurrentType) {\n                if (reconcileCurrentType.is(value)) {\n                    return reconcileCurrentType;\n                }\n                return this._types.filter(function (t) { return t !== reconcileCurrentType; }).find(function (type) { return type.is(value); });\n            }\n            else {\n                return this._types.find(function (type) { return type.is(value); });\n            }\n        }\n    });\n    Object.defineProperty(Union.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this._dispatcher) {\n                return this._dispatcher(value).validate(value, context);\n            }\n            var allErrors = [];\n            var applicableTypes = 0;\n            for (var i = 0; i < this._types.length; i++) {\n                var type = this._types[i];\n                var errors = type.validate(value, context);\n                if (errors.length === 0) {\n                    if (this._eager)\n                        return typeCheckSuccess();\n                    else\n                        applicableTypes++;\n                }\n                else {\n                    allErrors.push(errors);\n                }\n            }\n            if (applicableTypes === 1)\n                return typeCheckSuccess();\n            return typeCheckFailure(context, value, \"No type is applicable for the union\").concat(flattenTypeErrors(allErrors));\n        }\n    });\n    Object.defineProperty(Union.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._types;\n        }\n    });\n    return Union;\n}(BaseType));\n/**\n * `types.union` - Create a union of multiple types. If the correct type cannot be inferred unambiguously from a snapshot, provide a dispatcher function of the form `(snapshot) => Type`.\n *\n * @param optionsOrType\n * @param otherTypes\n * @returns\n */\nfunction union(optionsOrType) {\n    var otherTypes = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        otherTypes[_i - 1] = arguments[_i];\n    }\n    var options = isType(optionsOrType) ? undefined : optionsOrType;\n    var types = isType(optionsOrType) ? __spread([optionsOrType], otherTypes) : otherTypes;\n    var name = \"(\" + types.map(function (type) { return type.name; }).join(\" | \") + \")\";\n    // check all options\n    if (devMode()) {\n        if (options) {\n            assertArg(options, function (o) { return isPlainObject(o); }, \"object { eager?: boolean, dispatcher?: Function }\", 1);\n        }\n        types.forEach(function (type, i) {\n            assertIsType(type, options ? i + 2 : i + 1);\n        });\n    }\n    return new Union(name, types, options);\n}\n/**\n * Returns if a given value represents a union type.\n *\n * @param type\n * @returns\n */\nfunction isUnionType(type) {\n    return (type.flags & TypeFlags.Union) > 0;\n}\n\n/**\n * @hidden\n * @internal\n */\nvar OptionalValue = /** @class */ (function (_super) {\n    __extends(OptionalValue, _super);\n    function OptionalValue(_subtype, _defaultValue, optionalValues) {\n        var _this = _super.call(this, _subtype.name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_defaultValue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _defaultValue\n        });\n        Object.defineProperty(_this, \"optionalValues\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: optionalValues\n        });\n        return _this;\n    }\n    Object.defineProperty(OptionalValue.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.Optional;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(OptionalValue.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype.describe() + \"?\";\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            if (this.optionalValues.indexOf(initialValue) >= 0) {\n                var defaultInstanceOrSnapshot = this.getDefaultInstanceOrSnapshot();\n                return this._subtype.instantiate(parent, subpath, environment, defaultInstanceOrSnapshot);\n            }\n            return this._subtype.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this._subtype.reconcile(current, this.optionalValues.indexOf(newValue) < 0 && this._subtype.is(newValue)\n                ? newValue\n                : this.getDefaultInstanceOrSnapshot(), parent, subpath);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"getDefaultInstanceOrSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var defaultInstanceOrSnapshot = typeof this._defaultValue === \"function\"\n                ? this._defaultValue()\n                : this._defaultValue;\n            // while static values are already snapshots and checked on types.optional\n            // generator functions must always be rechecked just in case\n            if (typeof this._defaultValue === \"function\") {\n                typecheckInternal(this, defaultInstanceOrSnapshot);\n            }\n            return defaultInstanceOrSnapshot;\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            // defaulted values can be skipped\n            if (this.optionalValues.indexOf(value) >= 0) {\n                return typeCheckSuccess();\n            }\n            // bounce validation to the sub-type\n            return this._subtype.validate(value, context);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    return OptionalValue;\n}(BaseType));\nfunction checkOptionalPreconditions(type, defaultValueOrFunction) {\n    // make sure we never pass direct instances\n    if (typeof defaultValueOrFunction !== \"function\" && isStateTreeNode(defaultValueOrFunction)) {\n        throw fail(\"default value cannot be an instance, pass a snapshot or a function that creates an instance/snapshot instead\");\n    }\n    assertIsType(type, 1);\n    if (devMode()) {\n        // we only check default values if they are passed directly\n        // if they are generator functions they will be checked once they are generated\n        // we don't check generator function results here to avoid generating a node just for type-checking purposes\n        // which might generate side-effects\n        if (typeof defaultValueOrFunction !== \"function\") {\n            typecheckInternal(type, defaultValueOrFunction);\n        }\n    }\n}\n/**\n * `types.optional` - Can be used to create a property with a default value.\n *\n * Depending on the third argument (`optionalValues`) there are two ways of operation:\n * - If the argument is not provided, then if a value is not provided in the snapshot (`undefined` or missing),\n *   it will default to the provided `defaultValue`\n * - If the argument is provided, then if the value in the snapshot matches one of the optional values inside the array then it will\n *   default to the provided `defaultValue`. Additionally, if one of the optional values inside the array is `undefined` then a missing\n *   property is also valid.\n *\n *   Note that it is also possible to include values of the same type as the intended subtype as optional values,\n *   in this case the optional value will be transformed into the `defaultValue` (e.g. `types.optional(types.string, \"unnamed\", [undefined, \"\"])`\n *   will transform the snapshot values `undefined` (and therefore missing) and empty strings into the string `\"unnamed\"` when it gets\n *   instantiated).\n *\n * If `defaultValue` is a function, the function will be invoked for every new instance.\n * Applying a snapshot in which the optional value is one of the optional values (or `undefined`/_not_ present if none are provided) causes the\n * value to be reset.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   title: types.string,\n *   subtitle1: types.optional(types.string, \"\", [null]),\n *   subtitle2: types.optional(types.string, \"\", [null, undefined]),\n *   done: types.optional(types.boolean, false),\n *   created: types.optional(types.Date, () => new Date()),\n * })\n *\n * // if done is missing / undefined it will become false\n * // if created is missing / undefined it will get a freshly generated timestamp\n * // if subtitle1 is null it will default to \"\", but it cannot be missing or undefined\n * // if subtitle2 is null or undefined it will default to \"\"; since it can be undefined it can also be missing\n * const todo = Todo.create({ title: \"Get coffee\", subtitle1: null })\n * ```\n *\n * @param type\n * @param defaultValueOrFunction\n * @param optionalValues an optional array with zero or more primitive values (string, number, boolean, null or undefined)\n *                       that will be converted into the default. `[ undefined ]` is assumed when none is provided\n * @returns\n */\nfunction optional(type, defaultValueOrFunction, optionalValues) {\n    checkOptionalPreconditions(type, defaultValueOrFunction);\n    return new OptionalValue(type, defaultValueOrFunction, optionalValues ? optionalValues : undefinedAsOptionalValues);\n}\nvar undefinedAsOptionalValues = [undefined];\n/**\n * Returns if a value represents an optional type.\n *\n * @template IT\n * @param type\n * @returns\n */\nfunction isOptionalType(type) {\n    return isType(type) && (type.flags & TypeFlags.Optional) > 0;\n}\n\nvar optionalUndefinedType = optional(undefinedType, undefined);\nvar optionalNullType = optional(nullType, null);\n/**\n * `types.maybe` - Maybe will make a type nullable, and also optional.\n * The value `undefined` will be used to represent nullability.\n *\n * @param type\n * @returns\n */\nfunction maybe(type) {\n    assertIsType(type, 1);\n    return union(type, optionalUndefinedType);\n}\n/**\n * `types.maybeNull` - Maybe will make a type nullable, and also optional.\n * The value `null` will be used to represent no value.\n *\n * @param type\n * @returns\n */\nfunction maybeNull(type) {\n    assertIsType(type, 1);\n    return union(type, optionalNullType);\n}\n\nvar Late = /** @class */ (function (_super) {\n    __extends(Late, _super);\n    function Late(name, _definition) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_definition\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _definition\n        });\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        return _this;\n    }\n    Object.defineProperty(Late.prototype, \"flags\", {\n        get: function () {\n            return (this._subType ? this._subType.flags : 0) | TypeFlags.Late;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Late.prototype, \"getSubType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (mustSucceed) {\n            if (!this._subType) {\n                var t = undefined;\n                try {\n                    t = this._definition();\n                }\n                catch (e) {\n                    if (e instanceof ReferenceError)\n                        // can happen in strict ES5 code when a definition is self refering\n                        t = undefined;\n                    else\n                        throw e;\n                }\n                if (mustSucceed && t === undefined)\n                    throw fail(\"Late type seems to be used too early, the definition (still) returns undefined\");\n                if (t) {\n                    if (devMode() && !isType(t))\n                        throw fail(\"Failed to determine subtype, make sure types.late returns a type definition.\");\n                    this._subType = t;\n                }\n            }\n            return this._subType;\n        }\n    });\n    Object.defineProperty(Late.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return this.getSubType(true).instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this.getSubType(true).reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var t = this.getSubType(false);\n            return t ? t.name : \"<uknown late type>\";\n        }\n    });\n    Object.defineProperty(Late.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var t = this.getSubType(false);\n            if (!t) {\n                // See #916; the variable the definition closure is pointing to wasn't defined yet, so can't be evaluted yet here\n                return typeCheckSuccess();\n            }\n            return t.validate(value, context);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            var t = this.getSubType(false);\n            return t ? t.isAssignableFrom(type) : false;\n        }\n    });\n    Object.defineProperty(Late.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var subtype = this.getSubType(false);\n            return subtype ? subtype : cannotDetermineSubtype;\n        }\n    });\n    return Late;\n}(BaseType));\n/**\n * `types.late` - Defines a type that gets implemented later. This is useful when you have to deal with circular dependencies.\n * Please notice that when defining circular dependencies TypeScript isn't smart enough to inference them.\n *\n * Example:\n * ```ts\n *   // TypeScript isn't smart enough to infer self referencing types.\n *  const Node = types.model({\n *       children: types.array(types.late((): IAnyModelType => Node)) // then typecast each array element to Instance<typeof Node>\n *  })\n * ```\n *\n * @param name The name to use for the type that will be returned.\n * @param type A function that returns the type that will be defined.\n * @returns\n */\nfunction late(nameOrType, maybeType) {\n    var name = typeof nameOrType === \"string\" ? nameOrType : \"late(\" + nameOrType.toString() + \")\";\n    var type = typeof nameOrType === \"string\" ? maybeType : nameOrType;\n    // checks that the type is actually a late type\n    if (devMode()) {\n        if (!(typeof type === \"function\" && type.length === 0))\n            throw fail(\"Invalid late type, expected a function with zero arguments that returns a type, got: \" +\n                type);\n    }\n    return new Late(name, type);\n}\n/**\n * Returns if a given value represents a late type.\n *\n * @param type\n * @returns\n */\nfunction isLateType(type) {\n    return isType(type) && (type.flags & TypeFlags.Late) > 0;\n}\n\nfunction lazy(name, options) {\n    // TODO: fix this unknown casting to be stricter\n    return new Lazy(name, options);\n}\n/**\n * @internal\n * @hidden\n */\nvar Lazy = /** @class */ (function (_super) {\n    __extends(Lazy, _super);\n    function Lazy(name, options) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Lazy\n        });\n        Object.defineProperty(_this, \"loadedType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(_this, \"pendingNodeList\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.array()\n        });\n        when(function () {\n            return _this.pendingNodeList.length > 0 &&\n                _this.pendingNodeList.some(function (node) {\n                    return node.isAlive && _this.options.shouldLoadPredicate(node.parent ? node.parent.value : null);\n                });\n        }, function () {\n            _this.options.loadType().then(action(function (type) {\n                _this.loadedType = type;\n                _this.pendingNodeList.forEach(function (node) {\n                    if (!node.parent)\n                        return;\n                    if (!_this.loadedType)\n                        return;\n                    node.parent.applyPatches([\n                        {\n                            op: \"replace\",\n                            path: \"/\" + node.subpath,\n                            value: node.snapshot\n                        }\n                    ]);\n                });\n            }));\n        });\n        return _this;\n    }\n    Object.defineProperty(Lazy.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"<lazy \" + this.name + \">\";\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, value) {\n            var _this = this;\n            if (this.loadedType) {\n                return this.loadedType.instantiate(parent, subpath, environment, value);\n            }\n            var node = createScalarNode(this, parent, subpath, environment, deepFreeze(value));\n            this.pendingNodeList.push(node);\n            when(function () { return !node.isAlive; }, function () { return _this.pendingNodeList.splice(_this.pendingNodeList.indexOf(node), 1); });\n            return node;\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this.loadedType) {\n                return this.loadedType.validate(value, context);\n            }\n            if (!isSerializable(value)) {\n                return typeCheckFailure(context, value, \"Value is not serializable and cannot be lazy\");\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, value, parent, subpath) {\n            if (this.loadedType) {\n                current.die();\n                return this.loadedType.instantiate(parent, subpath, parent.environment, value);\n            }\n            return _super.prototype.reconcile.call(this, current, value, parent, subpath);\n        }\n    });\n    return Lazy;\n}(SimpleType));\n\n/**\n * @internal\n * @hidden\n */\nvar Frozen = /** @class */ (function (_super) {\n    __extends(Frozen, _super);\n    function Frozen(subType) {\n        var _this = _super.call(this, subType ? \"frozen(\" + subType.name + \")\" : \"frozen\") || this;\n        Object.defineProperty(_this, \"subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: subType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Frozen\n        });\n        return _this;\n    }\n    Object.defineProperty(Frozen.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"<any immutable value>\";\n        }\n    });\n    Object.defineProperty(Frozen.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, value) {\n            // create the node\n            return createScalarNode(this, parent, subpath, environment, deepFreeze(value));\n        }\n    });\n    Object.defineProperty(Frozen.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (!isSerializable(value)) {\n                return typeCheckFailure(context, value, \"Value is not serializable and cannot be frozen\");\n            }\n            if (this.subType)\n                return this.subType.validate(value, context);\n            return typeCheckSuccess();\n        }\n    });\n    return Frozen;\n}(SimpleType));\nvar untypedFrozenInstance = new Frozen();\n/**\n * `types.frozen` - Frozen can be used to store any value that is serializable in itself (that is valid JSON).\n * Frozen values need to be immutable or treated as if immutable. They need be serializable as well.\n * Values stored in frozen will snapshotted as-is by MST, and internal changes will not be tracked.\n *\n * This is useful to store complex, but immutable values like vectors etc. It can form a powerful bridge to parts of your application that should be immutable, or that assume data to be immutable.\n *\n * Note: if you want to store free-form state that is mutable, or not serializeable, consider using volatile state instead.\n *\n * Frozen properties can be defined in three different ways\n * 1. `types.frozen(SubType)` - provide a valid MST type and frozen will check if the provided data conforms the snapshot for that type\n * 2. `types.frozen({ someDefaultValue: true})` - provide a primitive value, object or array, and MST will infer the type from that object, and also make it the default value for the field\n * 3. `types.frozen<TypeScriptType>()` - provide a typescript type, to help in strongly typing the field (design time only)\n *\n * Example:\n * ```ts\n * const GameCharacter = types.model({\n *   name: string,\n *   location: types.frozen({ x: 0, y: 0})\n * })\n *\n * const hero = GameCharacter.create({\n *   name: \"Mario\",\n *   location: { x: 7, y: 4 }\n * })\n *\n * hero.location = { x: 10, y: 2 } // OK\n * hero.location.x = 7 // Not ok!\n * ```\n *\n * ```ts\n * type Point = { x: number, y: number }\n *    const Mouse = types.model({\n *         loc: types.frozen<Point>()\n *    })\n * ```\n *\n * @param defaultValueOrType\n * @returns\n */\nfunction frozen(arg) {\n    if (arguments.length === 0)\n        return untypedFrozenInstance;\n    else if (isType(arg))\n        return new Frozen(arg);\n    else\n        return optional(untypedFrozenInstance, arg);\n}\n/**\n * Returns if a given value represents a frozen type.\n *\n * @param type\n * @returns\n */\nfunction isFrozenType(type) {\n    return isType(type) && (type.flags & TypeFlags.Frozen) > 0;\n}\n\nfunction getInvalidationCause(hook) {\n    switch (hook) {\n        case Hook.beforeDestroy:\n            return \"destroy\";\n        case Hook.beforeDetach:\n            return \"detach\";\n        default:\n            return undefined;\n    }\n}\nvar StoredReference = /** @class */ (function () {\n    function StoredReference(value, targetType) {\n        Object.defineProperty(this, \"targetType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: targetType\n        });\n        Object.defineProperty(this, \"identifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"node\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"resolvedReference\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        if (isValidIdentifier(value)) {\n            this.identifier = value;\n        }\n        else if (isStateTreeNode(value)) {\n            var targetNode = getStateTreeNode(value);\n            if (!targetNode.identifierAttribute)\n                throw fail(\"Can only store references with a defined identifier attribute.\");\n            var id = targetNode.unnormalizedIdentifier;\n            if (id === null || id === undefined) {\n                throw fail(\"Can only store references to tree nodes with a defined identifier.\");\n            }\n            this.identifier = id;\n        }\n        else {\n            throw fail(\"Can only store references to tree nodes or identifiers, got: '\" + value + \"'\");\n        }\n    }\n    Object.defineProperty(StoredReference.prototype, \"updateResolvedReference\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var normalizedId = normalizeIdentifier(this.identifier);\n            var root = node.root;\n            var lastCacheModification = root.identifierCache.getLastCacheModificationPerId(normalizedId);\n            if (!this.resolvedReference ||\n                this.resolvedReference.lastCacheModification !== lastCacheModification) {\n                var targetType = this.targetType;\n                // reference was initialized with the identifier of the target\n                var target = root.identifierCache.resolve(targetType, normalizedId);\n                if (!target) {\n                    throw new InvalidReferenceError(\"[mobx-state-tree] Failed to resolve reference '\" + this.identifier + \"' to type '\" + this.targetType.name + \"' (from node: \" + node.path + \")\");\n                }\n                this.resolvedReference = {\n                    node: target,\n                    lastCacheModification: lastCacheModification\n                };\n            }\n        }\n    });\n    Object.defineProperty(StoredReference.prototype, \"resolvedValue\", {\n        get: function () {\n            this.updateResolvedReference(this.node);\n            return this.resolvedReference.node.value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return StoredReference;\n}());\n/**\n * @internal\n * @hidden\n */\nvar InvalidReferenceError = /** @class */ (function (_super) {\n    __extends(InvalidReferenceError, _super);\n    function InvalidReferenceError(m) {\n        var _this = _super.call(this, m) || this;\n        Object.setPrototypeOf(_this, InvalidReferenceError.prototype);\n        return _this;\n    }\n    return InvalidReferenceError;\n}(Error));\n/**\n * @internal\n * @hidden\n */\nvar BaseReferenceType = /** @class */ (function (_super) {\n    __extends(BaseReferenceType, _super);\n    function BaseReferenceType(targetType, onInvalidated) {\n        var _this = _super.call(this, \"reference(\" + targetType.name + \")\") || this;\n        Object.defineProperty(_this, \"targetType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: targetType\n        });\n        Object.defineProperty(_this, \"onInvalidated\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: onInvalidated\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Reference\n        });\n        return _this;\n    }\n    Object.defineProperty(BaseReferenceType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this.targetType.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            return isValidIdentifier(value)\n                ? typeCheckSuccess()\n                : typeCheckFailure(context, value, \"Value is not a valid identifier, which is a string or a number\");\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"fireInvalidated\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (cause, storedRefNode, referenceId, refTargetNode) {\n            // to actually invalidate a reference we need an alive parent,\n            // since it is a scalar value (immutable-ish) and we need to change it\n            // from the parent\n            var storedRefParentNode = storedRefNode.parent;\n            if (!storedRefParentNode || !storedRefParentNode.isAlive) {\n                return;\n            }\n            var storedRefParentValue = storedRefParentNode.storedValue;\n            if (!storedRefParentValue) {\n                return;\n            }\n            this.onInvalidated({\n                cause: cause,\n                parent: storedRefParentValue,\n                invalidTarget: refTargetNode ? refTargetNode.storedValue : undefined,\n                invalidId: referenceId,\n                replaceRef: function (newRef) {\n                    applyPatch(storedRefNode.root.storedValue, {\n                        op: \"replace\",\n                        value: newRef,\n                        path: storedRefNode.path\n                    });\n                },\n                removeRef: function () {\n                    if (isModelType(storedRefParentNode.type)) {\n                        this.replaceRef(undefined);\n                    }\n                    else {\n                        applyPatch(storedRefNode.root.storedValue, {\n                            op: \"remove\",\n                            path: storedRefNode.path\n                        });\n                    }\n                }\n            });\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"addTargetNodeWatcher\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode, referenceId) {\n            var _this = this;\n            // this will make sure the target node becomes created\n            var refTargetValue = this.getValue(storedRefNode);\n            if (!refTargetValue) {\n                return undefined;\n            }\n            var refTargetNode = getStateTreeNode(refTargetValue);\n            var hookHandler = function (_, refTargetNodeHook) {\n                var cause = getInvalidationCause(refTargetNodeHook);\n                if (!cause) {\n                    return;\n                }\n                _this.fireInvalidated(cause, storedRefNode, referenceId, refTargetNode);\n            };\n            var refTargetDetachHookDisposer = refTargetNode.registerHook(Hook.beforeDetach, hookHandler);\n            var refTargetDestroyHookDisposer = refTargetNode.registerHook(Hook.beforeDestroy, hookHandler);\n            return function () {\n                refTargetDetachHookDisposer();\n                refTargetDestroyHookDisposer();\n            };\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"watchTargetNodeForInvalidations\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode, identifier, customGetSet) {\n            var _this = this;\n            if (!this.onInvalidated) {\n                return;\n            }\n            var onRefTargetDestroyedHookDisposer;\n            // get rid of the watcher hook when the stored ref node is destroyed\n            // detached is ignored since scalar nodes (where the reference resides) cannot be detached\n            storedRefNode.registerHook(Hook.beforeDestroy, function () {\n                if (onRefTargetDestroyedHookDisposer) {\n                    onRefTargetDestroyedHookDisposer();\n                }\n            });\n            var startWatching = function (sync) {\n                // re-create hook in case the stored ref gets reattached\n                if (onRefTargetDestroyedHookDisposer) {\n                    onRefTargetDestroyedHookDisposer();\n                }\n                // make sure the target node is actually there and initialized\n                var storedRefParentNode = storedRefNode.parent;\n                var storedRefParentValue = storedRefParentNode && storedRefParentNode.storedValue;\n                if (storedRefParentNode && storedRefParentNode.isAlive && storedRefParentValue) {\n                    var refTargetNodeExists = void 0;\n                    if (customGetSet) {\n                        refTargetNodeExists = !!customGetSet.get(identifier, storedRefParentValue);\n                    }\n                    else {\n                        refTargetNodeExists = storedRefNode.root.identifierCache.has(_this.targetType, normalizeIdentifier(identifier));\n                    }\n                    if (!refTargetNodeExists) {\n                        // we cannot change the reference in sync mode\n                        // since we are in the middle of a reconciliation/instantiation and the change would be overwritten\n                        // for those cases just let the wrong reference be assigned and fail upon usage\n                        // (like current references do)\n                        // this means that effectively this code will only run when it is created from a snapshot\n                        if (!sync) {\n                            _this.fireInvalidated(\"invalidSnapshotReference\", storedRefNode, identifier, null);\n                        }\n                    }\n                    else {\n                        onRefTargetDestroyedHookDisposer = _this.addTargetNodeWatcher(storedRefNode, identifier);\n                    }\n                }\n            };\n            if (storedRefNode.state === NodeLifeCycle.FINALIZED) {\n                // already attached, so the whole tree is ready\n                startWatching(true);\n            }\n            else {\n                if (!storedRefNode.isRoot) {\n                    // start watching once the whole tree is ready\n                    storedRefNode.root.registerHook(Hook.afterCreationFinalization, function () {\n                        // make sure to attach it so it can start listening\n                        if (storedRefNode.parent) {\n                            storedRefNode.parent.createObservableInstanceIfNeeded();\n                        }\n                    });\n                }\n                // start watching once the node is attached somewhere / parent changes\n                storedRefNode.registerHook(Hook.afterAttach, function () {\n                    startWatching(false);\n                });\n            }\n        }\n    });\n    return BaseReferenceType;\n}(SimpleType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierReferenceType = /** @class */ (function (_super) {\n    __extends(IdentifierReferenceType, _super);\n    function IdentifierReferenceType(targetType, onInvalidated) {\n        return _super.call(this, targetType, onInvalidated) || this;\n    }\n    Object.defineProperty(IdentifierReferenceType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            if (!storedRefNode.isAlive)\n                return undefined;\n            var storedRef = storedRefNode.storedValue;\n            return storedRef.resolvedValue;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            var ref = storedRefNode.storedValue;\n            return ref.identifier;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var identifier = isStateTreeNode(initialValue) ? getIdentifier(initialValue) : initialValue;\n            var storedRef = new StoredReference(initialValue, this.targetType);\n            var storedRefNode = createScalarNode(this, parent, subpath, environment, storedRef);\n            storedRef.node = storedRefNode;\n            this.watchTargetNodeForInvalidations(storedRefNode, identifier, undefined);\n            return storedRefNode;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            if (!current.isDetaching && current.type === this) {\n                var compareByValue = isStateTreeNode(newValue);\n                var ref = current.storedValue;\n                if ((!compareByValue && ref.identifier === newValue) ||\n                    (compareByValue && ref.resolvedValue === newValue)) {\n                    current.setParent(parent, subpath);\n                    return current;\n                }\n            }\n            var newNode = this.instantiate(parent, subpath, undefined, newValue);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return IdentifierReferenceType;\n}(BaseReferenceType));\n/**\n * @internal\n * @hidden\n */\nvar CustomReferenceType = /** @class */ (function (_super) {\n    __extends(CustomReferenceType, _super);\n    function CustomReferenceType(targetType, options, onInvalidated) {\n        var _this = _super.call(this, targetType, onInvalidated) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        return _this;\n    }\n    Object.defineProperty(CustomReferenceType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            if (!storedRefNode.isAlive)\n                return undefined;\n            var referencedNode = this.options.get(storedRefNode.storedValue, storedRefNode.parent ? storedRefNode.parent.storedValue : null);\n            return referencedNode;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            return storedRefNode.storedValue;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, newValue) {\n            var identifier = isStateTreeNode(newValue)\n                ? this.options.set(newValue, parent ? parent.storedValue : null)\n                : newValue;\n            var storedRefNode = createScalarNode(this, parent, subpath, environment, identifier);\n            this.watchTargetNodeForInvalidations(storedRefNode, identifier, this.options);\n            return storedRefNode;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var newIdentifier = isStateTreeNode(newValue)\n                ? this.options.set(newValue, current ? current.storedValue : null)\n                : newValue;\n            if (!current.isDetaching && current.type === this && current.storedValue === newIdentifier) {\n                current.setParent(parent, subpath);\n                return current;\n            }\n            var newNode = this.instantiate(parent, subpath, undefined, newIdentifier);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return CustomReferenceType;\n}(BaseReferenceType));\n/**\n * `types.reference` - Creates a reference to another type, which should have defined an identifier.\n * See also the [reference and identifiers](https://github.com/mobxjs/mobx-state-tree#references-and-identifiers) section.\n */\nfunction reference(subType, options) {\n    assertIsType(subType, 1);\n    if (devMode()) {\n        if (arguments.length === 2 && typeof arguments[1] === \"string\") {\n            // istanbul ignore next\n            throw fail(\"References with base path are no longer supported. Please remove the base path.\");\n        }\n    }\n    var getSetOptions = options ? options : undefined;\n    var onInvalidated = options\n        ? options.onInvalidated\n        : undefined;\n    if (getSetOptions && (getSetOptions.get || getSetOptions.set)) {\n        if (devMode()) {\n            if (!getSetOptions.get || !getSetOptions.set) {\n                throw fail(\"reference options must either contain both a 'get' and a 'set' method or none of them\");\n            }\n        }\n        return new CustomReferenceType(subType, {\n            get: getSetOptions.get,\n            set: getSetOptions.set\n        }, onInvalidated);\n    }\n    else {\n        return new IdentifierReferenceType(subType, onInvalidated);\n    }\n}\n/**\n * Returns if a given value represents a reference type.\n *\n * @param type\n * @returns\n */\nfunction isReferenceType(type) {\n    return (type.flags & TypeFlags.Reference) > 0;\n}\n/**\n * `types.safeReference` - A safe reference is like a standard reference, except that it accepts the undefined value by default\n * and automatically sets itself to undefined (when the parent is a model) / removes itself from arrays and maps\n * when the reference it is pointing to gets detached/destroyed.\n *\n * The optional options parameter object accepts a parameter named `acceptsUndefined`, which is set to true by default, so it is suitable\n * for model properties.\n * When used inside collections (arrays/maps), it is recommended to set this option to false so it can't take undefined as value,\n * which is usually the desired in those cases.\n * Additionally, the optional options parameter object accepts a parameter named `onInvalidated`, which will be called when the reference target node that the reference is pointing to is about to be detached/destroyed\n *\n * Strictly speaking it is a `types.maybe(types.reference(X))` (when `acceptsUndefined` is set to true, the default) and\n * `types.reference(X)` (when `acceptsUndefined` is set to false), both of them with a customized `onInvalidated` option.\n *\n * @param subType\n * @param options\n * @returns\n */\nfunction safeReference(subType, options) {\n    var refType = reference(subType, __assign(__assign({}, options), { onInvalidated: function (ev) {\n            if (options && options.onInvalidated) {\n                options.onInvalidated(ev);\n            }\n            ev.removeRef();\n        } }));\n    if (options && options.acceptsUndefined === false) {\n        return refType;\n    }\n    else {\n        return maybe(refType);\n    }\n}\n\nvar BaseIdentifierType = /** @class */ (function (_super) {\n    __extends(BaseIdentifierType, _super);\n    function BaseIdentifierType(name, validType) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"validType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: validType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Identifier\n        });\n        return _this;\n    }\n    Object.defineProperty(BaseIdentifierType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            if (!parent || !(parent.type instanceof ModelType))\n                throw fail(\"Identifier types can only be instantiated as direct child of a model type\");\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(BaseIdentifierType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            // we don't consider detaching here since identifier are scalar nodes, and scalar nodes cannot be detached\n            if (current.storedValue !== newValue)\n                throw fail(\"Tried to change identifier from '\" + current.storedValue + \"' to '\" + newValue + \"'. Changing identifiers is not allowed.\");\n            current.setParent(parent, subpath);\n            return current;\n        }\n    });\n    Object.defineProperty(BaseIdentifierType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (typeof value !== this.validType) {\n                return typeCheckFailure(context, value, \"Value is not a valid \" + this.describe() + \", expected a \" + this.validType);\n            }\n            return typeCheckSuccess();\n        }\n    });\n    return BaseIdentifierType;\n}(SimpleType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierType = /** @class */ (function (_super) {\n    __extends(IdentifierType, _super);\n    function IdentifierType() {\n        var _this = _super.call(this, \"identifier\", \"string\") || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Identifier\n        });\n        return _this;\n    }\n    Object.defineProperty(IdentifierType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"identifier\";\n        }\n    });\n    return IdentifierType;\n}(BaseIdentifierType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierNumberType = /** @class */ (function (_super) {\n    __extends(IdentifierNumberType, _super);\n    function IdentifierNumberType() {\n        return _super.call(this, \"identifierNumber\", \"number\") || this;\n    }\n    Object.defineProperty(IdentifierNumberType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(IdentifierNumberType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"identifierNumber\";\n        }\n    });\n    return IdentifierNumberType;\n}(BaseIdentifierType));\n/**\n * `types.identifier` - Identifiers are used to make references, lifecycle events and reconciling works.\n * Inside a state tree, for each type can exist only one instance for each given identifier.\n * For example there couldn't be 2 instances of user with id 1. If you need more, consider using references.\n * Identifier can be used only as type property of a model.\n * This type accepts as parameter the value type of the identifier field that can be either string or number.\n *\n * Example:\n * ```ts\n *  const Todo = types.model(\"Todo\", {\n *      id: types.identifier,\n *      title: types.string\n *  })\n * ```\n *\n * @returns\n */\nvar identifier = new IdentifierType();\n/**\n * `types.identifierNumber` - Similar to `types.identifier`. This one will serialize from / to a number when applying snapshots\n *\n * Example:\n * ```ts\n *  const Todo = types.model(\"Todo\", {\n *      id: types.identifierNumber,\n *      title: types.string\n *  })\n * ```\n *\n * @returns\n */\nvar identifierNumber = new IdentifierNumberType();\n/**\n * Returns if a given value represents an identifier type.\n *\n * @param type\n * @returns\n */\nfunction isIdentifierType(type) {\n    return isType(type) && (type.flags & TypeFlags.Identifier) > 0;\n}\n/**\n * @internal\n * @hidden\n */\nfunction normalizeIdentifier(id) {\n    return \"\" + id;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isValidIdentifier(id) {\n    return typeof id === \"string\" || typeof id === \"number\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsValidIdentifier(id, argNumber) {\n    assertArg(id, isValidIdentifier, \"string or number (identifier)\", argNumber);\n}\n\n/**\n * `types.custom` - Creates a custom type. Custom types can be used for arbitrary immutable values, that have a serializable representation. For example, to create your own Date representation, Decimal type etc.\n *\n * The signature of the options is:\n * ```ts\n * export interface CustomTypeOptions<S, T> {\n *     // Friendly name\n *     name: string\n *     // given a serialized value and environment, how to turn it into the target type\n *     fromSnapshot(snapshot: S, env: any): T\n *     // return the serialization of the current value\n *     toSnapshot(value: T): S\n *     // if true, this is a converted value, if false, it's a snapshot\n *     isTargetType(value: T | S): value is T\n *     // a non empty string is assumed to be a validation error\n *     getValidationMessage?(snapshot: S): string\n * }\n * ```\n *\n * Example:\n * ```ts\n * const DecimalPrimitive = types.custom<string, Decimal>({\n *     name: \"Decimal\",\n *     fromSnapshot(value: string) {\n *         return new Decimal(value)\n *     },\n *     toSnapshot(value: Decimal) {\n *         return value.toString()\n *     },\n *     isTargetType(value: string | Decimal): boolean {\n *         return value instanceof Decimal\n *     },\n *     getValidationMessage(value: string): string {\n *         if (/^-?\\d+\\.\\d+$/.test(value)) return \"\" // OK\n *         return `'${value}' doesn't look like a valid decimal number`\n *     }\n * })\n *\n * const Wallet = types.model({\n *     balance: DecimalPrimitive\n * })\n * ```\n *\n * @param options\n * @returns\n */\nfunction custom(options) {\n    return new CustomType(options);\n}\n/**\n * @internal\n * @hidden\n */\nvar CustomType = /** @class */ (function (_super) {\n    __extends(CustomType, _super);\n    function CustomType(options) {\n        var _this = _super.call(this, options.name) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Custom\n        });\n        return _this;\n    }\n    Object.defineProperty(CustomType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this.options.isTargetType(value))\n                return typeCheckSuccess();\n            var typeError = this.options.getValidationMessage(value);\n            if (typeError) {\n                return typeCheckFailure(context, value, \"Invalid value for type '\" + this.name + \"': \" + typeError);\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return this.options.toSnapshot(node.storedValue);\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var valueToStore = this.options.isTargetType(initialValue)\n                ? initialValue\n                : this.options.fromSnapshot(initialValue, parent && parent.root.environment);\n            return createScalarNode(this, parent, subpath, environment, valueToStore);\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, value, parent, subpath) {\n            var isSnapshot = !this.options.isTargetType(value);\n            // in theory customs use scalar nodes which cannot be detached, but still...\n            if (!current.isDetaching) {\n                var unchanged = current.type === this &&\n                    (isSnapshot ? value === current.snapshot : value === current.storedValue);\n                if (unchanged) {\n                    current.setParent(parent, subpath);\n                    return current;\n                }\n            }\n            var valueToStore = isSnapshot\n                ? this.options.fromSnapshot(value, parent.root.environment)\n                : value;\n            var newNode = this.instantiate(parent, subpath, undefined, valueToStore);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return CustomType;\n}(SimpleType));\n\n// we import the types to re-export them inside types.\nvar types = {\n    enumeration: enumeration,\n    model: model,\n    compose: compose,\n    custom: custom,\n    reference: reference,\n    safeReference: safeReference,\n    union: union,\n    optional: optional,\n    literal: literal,\n    maybe: maybe,\n    maybeNull: maybeNull,\n    refinement: refinement,\n    string: string,\n    boolean: boolean,\n    number: number,\n    integer: integer,\n    float: float,\n    finite: finite,\n    Date: DatePrimitive,\n    map: map,\n    array: array,\n    frozen: frozen,\n    identifier: identifier,\n    identifierNumber: identifierNumber,\n    late: late,\n    lazy: lazy,\n    undefined: undefinedType,\n    null: nullType,\n    snapshotProcessor: snapshotProcessor\n};\n\nexport { addDisposer, addMiddleware, applyAction, applyPatch, applySnapshot, cast, castFlowReturn, castToReferenceSnapshot, castToSnapshot, clone, createActionTrackingMiddleware, createActionTrackingMiddleware2, decorate, destroy, detach, escapeJsonPath, flow, getChildType, getEnv, getIdentifier, getLivelinessChecking, getMembers, getNodeId, getParent, getParentOfType, getPath, getPathParts, getPropertyMembers, getRelativePath, getRoot, getRunningActionContext, getSnapshot, getType, hasParent, hasParentOfType, isActionContextChildOf, isActionContextThisOrChildOf, isAlive, isArrayType, isFrozenType, isIdentifierType, isLateType, isLiteralType, isMapType, isModelType, isOptionalType, isPrimitiveType, isProtected, isReferenceType, isRefinementType, isRoot, isStateTreeNode, isType, isUnionType, isValidReference, joinJsonPath, onAction, onPatch, onSnapshot, process$1 as process, protect, recordActions, recordPatches, resolveIdentifier, resolvePath, setLivelinessChecking, setLivelynessChecking, splitJsonPath, types as t, toGenerator, toGeneratorFunction, tryReference, tryResolve, typecheck, types, unescapeJsonPath, unprotect, walk };\n","const niceErrors = {\n    0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n    1(annotationType, key: PropertyKey) {\n        return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n    },\n    /*\n    2(prop) {\n        return `invalid decorator for '${prop.toString()}'`\n    },\n    3(prop) {\n        return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n    },\n    4(prop) {\n        return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n    },\n    */\n    5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n    6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n    7: \"'entries()' can only be used on observable objects, arrays and maps\",\n    8: \"'set()' can only be used on observable objects, arrays and maps\",\n    9: \"'remove()' can only be used on observable objects, arrays and maps\",\n    10: \"'has()' can only be used on observable objects, arrays and maps\",\n    11: \"'get()' can only be used on observable objects, arrays and maps\",\n    12: `Invalid annotation`,\n    13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n    14: \"Intercept handlers should return nothing or a change object\",\n    15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n    16: `Modification exception: the internal structure of an observable array was changed.`,\n    17(index, length) {\n        return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n    },\n    18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n    19(other) {\n        return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n    },\n    20(other) {\n        return \"Cannot initialize map from \" + other\n    },\n    21(dataStructure) {\n        return `Cannot convert to map from '${dataStructure}'`\n    },\n    22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n    23: \"It is not possible to get index atoms from arrays\",\n    24(thing) {\n        return \"Cannot obtain administration from \" + thing\n    },\n    25(property, name) {\n        return `the entry '${property}' does not exist in the observable map '${name}'`\n    },\n    26: \"please specify a property\",\n    27(property, name) {\n        return `no observable property '${property.toString()}' found on the observable object '${name}'`\n    },\n    28(thing) {\n        return \"Cannot obtain atom from \" + thing\n    },\n    29: \"Expecting some object\",\n    30: \"invalid action stack. did you forget to finish an action?\",\n    31: \"missing option for computed: get\",\n    32(name, derivation) {\n        return `Cycle detected in computation ${name}: ${derivation}`\n    },\n    33(name) {\n        return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n    },\n    34(name) {\n        return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n    },\n    35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n    36: \"isolateGlobalState should be called before MobX is running any reactions\",\n    37(method) {\n        return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n    },\n    38: \"'ownKeys()' can only be used on observable objects\",\n    39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n    if (__DEV__) {\n        let e: any = typeof error === \"string\" ? error : errors[error]\n        if (typeof e === \"function\") e = e.apply(null, args as any)\n        throw new Error(`[MobX] ${e}`)\n    }\n    throw new Error(\n        typeof error === \"number\"\n            ? `[MobX] minified error nr: ${error}${\n                  args.length ? \" \" + args.map(String).join(\",\") : \"\"\n              }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n            : `[MobX] ${error}`\n    )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n    if (typeof globalThis !== \"undefined\") {\n        return globalThis\n    }\n    if (typeof window !== \"undefined\") {\n        return window\n    }\n    if (typeof global !== \"undefined\") {\n        return global\n    }\n    if (typeof self !== \"undefined\") {\n        return self\n    }\n    return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n    (): void\n    name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n    if (!hasProxy) {\n        die(\n            __DEV__\n                ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n                : \"Proxy not available\"\n        )\n    }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n    if (__DEV__ && globalState.verifyProxies) {\n        die(\n            \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n                msg\n        )\n    }\n}\n\nexport function getNextId() {\n    return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n    let invoked = false\n    return function () {\n        if (invoked) {\n            return\n        }\n        invoked = true\n        return (func as any).apply(this, arguments)\n    }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n    return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n    return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n    const t = typeof value\n    switch (t) {\n        case \"string\":\n        case \"symbol\":\n        case \"number\":\n            return true\n    }\n    return false\n}\n\nexport function isObject(value: any): value is Object {\n    return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n    if (!isObject(value)) {\n        return false\n    }\n    const proto = Object.getPrototypeOf(value)\n    if (proto == null) {\n        return true\n    }\n    const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n    return (\n        typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n    )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n    const constructor = obj?.constructor\n    if (!constructor) {\n        return false\n    }\n    if (\n        \"GeneratorFunction\" === constructor.name ||\n        \"GeneratorFunction\" === constructor.displayName\n    ) {\n        return true\n    }\n    return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: true,\n        configurable: true,\n        value\n    })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: false,\n        configurable: true,\n        value\n    })\n}\n\nexport function createInstanceofPredicate<T>(\n    name: string,\n    theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n    const propName = \"isMobX\" + name\n    theClass.prototype[propName] = true\n    return function (x) {\n        return isObject(x) && x[propName] === true\n    } as any\n}\n\n/**\n * Yields true for both native and observable Map, even across different windows.\n */\nexport function isES6Map(thing: unknown): thing is Map<any, any> {\n    return thing != null && Object.prototype.toString.call(thing) === \"[object Map]\"\n}\n\n/**\n * Makes sure a Map is an instance of non-inherited native or observable Map.\n */\nexport function isPlainES6Map(thing: Map<unknown, unknown>): boolean {\n    const mapProto = Object.getPrototypeOf(thing)\n    const objectProto = Object.getPrototypeOf(mapProto)\n    const nullProto = Object.getPrototypeOf(objectProto)\n    return nullProto === null\n}\n\n/**\n * Yields true for both native and observable Set, even across different windows.\n */\nexport function isES6Set(thing: unknown): thing is Set<any> {\n    return thing != null && Object.prototype.toString.call(thing) === \"[object Set]\"\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n    const keys = Object.keys(object)\n    // Not supported in IE, so there are not going to be symbol props anyway...\n    if (!hasGetOwnPropertySymbols) {\n        return keys\n    }\n    const symbols = Object.getOwnPropertySymbols(object)\n    if (!symbols.length) {\n        return keys\n    }\n    return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n    typeof Reflect !== \"undefined\" && Reflect.ownKeys\n        ? Reflect.ownKeys\n        : hasGetOwnPropertySymbols\n        ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n        : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n    if (typeof key === \"string\") {\n        return key\n    }\n    if (typeof key === \"symbol\") {\n        return key.toString()\n    }\n    return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n    return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n    return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n    Object.getOwnPropertyDescriptors ||\n    function getOwnPropertyDescriptors(target: any) {\n        // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n        const res: any = {}\n        // Note: without polyfill for ownKeys, symbols won't be picked up\n        ownKeys(target).forEach(key => {\n            res[key] = getDescriptor(target, key)\n        })\n        return res\n    }\n\nexport function getFlag(flags: number, mask: number) {\n    return !!(flags & mask)\n}\n\nexport function setFlag(flags: number, mask: number, newValue: boolean): number {\n    if (newValue) {\n        flags |= mask\n    } else {\n        flags &= ~mask\n    }\n    return flags\n}\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nimport type { Decorator } from \"../types/decorator_fills\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation<D extends Decorator = Decorator>(\n    annotation: Annotation\n): PropertyDecorator & Annotation & D {\n    function decorator(target, property) {\n        if (is20223Decorator(property)) {\n            return annotation.decorate_20223_(target, property)\n        } else {\n            storeAnnotation(target, property, annotation)\n        }\n    }\n    return Object.assign(decorator, annotation) as any\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n    if (!hasProp(prototype, storedAnnotationsSymbol)) {\n        addHiddenProp(prototype, storedAnnotationsSymbol, {\n            // Inherit annotations\n            ...prototype[storedAnnotationsSymbol]\n        })\n    }\n    // @override must override something\n    if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n        const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n        die(\n            `'${fieldName}' is decorated with 'override', ` +\n                `but no such decorated member was found on prototype.`\n        )\n    }\n    // Cannot re-decorate\n    assertNotDecorated(prototype, annotation, key)\n\n    // Ignore override\n    if (!isOverride(annotation)) {\n        prototype[storedAnnotationsSymbol][key] = annotation\n    }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n    if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n        const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n        const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n        const requestedAnnotationType = annotation.annotationType_\n        die(\n            `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n                `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n                `\\nRe-decorating fields is not allowed.` +\n                `\\nUse '@override' decorator for methods overridden by subclass.`\n        )\n    }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n    if (!hasProp(target, storedAnnotationsSymbol)) {\n        // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n        //     die(\n        //         `No annotations were passed to makeObservable, but no decorated members have been found either`\n        //     )\n        // }\n        // We need a copy as we will remove annotation from the list once it's applied.\n        addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n    }\n    return target[storedAnnotationsSymbol]\n}\n\nexport function is20223Decorator(context): context is DecoratorContext {\n    return typeof context == \"object\" && typeof context[\"kind\"] == \"string\"\n}\n\nexport function assert20223DecoratorType(\n    context: DecoratorContext,\n    types: DecoratorContext[\"kind\"][]\n) {\n    if (__DEV__ && !types.includes(context.kind)) {\n        die(\n            `The decorator applied to '${String(context.name)}' cannot be used on a ${\n                context.kind\n            } element`\n        )\n    }\n}\n","import {\n    die,\n    Annotation,\n    hasProp,\n    createDecoratorAnnotation,\n    ObservableObjectAdministration,\n    MakeResult\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"./decorator_fills\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator & ClassMethodDecorator =\n    createDecoratorAnnotation({\n        annotationType_: OVERRIDE,\n        make_,\n        extend_,\n        decorate_20223_\n    })\n\nexport function isOverride(annotation: Annotation): boolean {\n    return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(this: Annotation, adm: ObservableObjectAdministration, key): MakeResult {\n    // Must not be plain object\n    if (__DEV__ && adm.isPlainObject_) {\n        die(\n            `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${this.annotationType_}' cannot be used on plain objects.`\n        )\n    }\n    // Must override something\n    if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n        die(\n            `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n                `but no such annotated member was found on prototype.`\n        )\n    }\n    return MakeResult.Cancel\n}\n\nfunction extend_(this: Annotation, adm, key, descriptor, proxyTrap): boolean {\n    die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: DecoratorContext) {\n    console.warn(`'${this.annotationType_}' cannot be used with decorators - this is a no-op`)\n}\n","import {\n    IDerivationState_,\n    IObservable,\n    IDerivation,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    noop,\n    onBecomeObserved,\n    onBecomeUnobserved,\n    propagateChanged,\n    reportObserved,\n    startBatch,\n    Lambda\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n    reportObserved(): boolean\n    reportChanged(): void\n}\n\nexport class Atom implements IAtom {\n    private static readonly isBeingObservedMask_ = 0b001\n    private static readonly isPendingUnobservationMask_ = 0b010\n    private static readonly diffValueMask_ = 0b100\n    private flags_ = 0b000\n\n    observers_ = new Set<IDerivation>()\n\n    lastAccessedBy_ = 0\n    lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n    /**\n     * Create a new atom. For debugging purposes it is recommended to give it a name.\n     * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n     */\n    constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n    // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n    get isBeingObserved(): boolean {\n        return getFlag(this.flags_, Atom.isBeingObservedMask_)\n    }\n    set isBeingObserved(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Atom.isBeingObservedMask_, newValue)\n    }\n\n    get isPendingUnobservation(): boolean {\n        return getFlag(this.flags_, Atom.isPendingUnobservationMask_)\n    }\n    set isPendingUnobservation(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Atom.isPendingUnobservationMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, Atom.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(this.flags_, Atom.diffValueMask_, newValue === 1 ? true : false)\n    }\n\n    // onBecomeObservedListeners\n    public onBOL: Set<Lambda> | undefined\n    // onBecomeUnobservedListeners\n    public onBUOL: Set<Lambda> | undefined\n\n    public onBO() {\n        if (this.onBOL) {\n            this.onBOL.forEach(listener => listener())\n        }\n    }\n\n    public onBUO() {\n        if (this.onBUOL) {\n            this.onBUOL.forEach(listener => listener())\n        }\n    }\n\n    /**\n     * Invoke this method to notify mobx that your atom has been used somehow.\n     * Returns true if there is currently a reactive context.\n     */\n    public reportObserved(): boolean {\n        return reportObserved(this)\n    }\n\n    /**\n     * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n     */\n    public reportChanged() {\n        startBatch()\n        propagateChanged(this)\n        endBatch()\n    }\n\n    toString() {\n        return this.name_\n    }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n    name: string,\n    onBecomeObservedHandler: () => void = noop,\n    onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n    const atom = new Atom(name)\n    // default `noop` listener will not initialize the hook Set\n    if (onBecomeObservedHandler !== noop) {\n        onBecomeObserved(atom, onBecomeObservedHandler)\n    }\n\n    if (onBecomeUnobservedHandler !== noop) {\n        onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n    }\n    return atom\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n    (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n    return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n    return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n    return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n    if (Object.is) {\n        return Object.is(a, b)\n    }\n\n    return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n    identity: identityComparer,\n    structural: structuralComparer,\n    default: defaultComparer,\n    shallow: shallowComparer\n}\n","import {\n    deepEqual,\n    isES6Map,\n    isES6Set,\n    isObservable,\n    isObservableArray,\n    isObservableMap,\n    isObservableSet,\n    isObservableObject,\n    isPlainObject,\n    observable,\n    die,\n    isAction,\n    autoAction,\n    flow,\n    isFlow,\n    isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n    (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n    // it is an observable already, done\n    if (isObservable(v)) {\n        return v\n    }\n\n    // something that can be converted and mutated?\n    if (Array.isArray(v)) {\n        return observable.array(v, { name })\n    }\n    if (isPlainObject(v)) {\n        return observable.object(v, undefined, { name })\n    }\n    if (isES6Map(v)) {\n        return observable.map(v, { name })\n    }\n    if (isES6Set(v)) {\n        return observable.set(v, { name })\n    }\n    if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n        if (isGenerator(v)) {\n            return flow(v)\n        } else {\n            return autoAction(name, v)\n        }\n    }\n    return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n    if (v === undefined || v === null) {\n        return v\n    }\n    if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n        return v\n    }\n    if (Array.isArray(v)) {\n        return observable.array(v, { name, deep: false })\n    }\n    if (isPlainObject(v)) {\n        return observable.object(v, undefined, { name, deep: false })\n    }\n    if (isES6Map(v)) {\n        return observable.map(v, { name, deep: false })\n    }\n    if (isES6Set(v)) {\n        return observable.set(v, { name, deep: false })\n    }\n\n    if (__DEV__) {\n        die(\n            \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n        )\n    }\n}\n\nexport function referenceEnhancer(newValue?) {\n    // never turn into an observable\n    return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n    if (__DEV__ && isObservable(v)) {\n        die(`observable.struct should not be used with observable values`)\n    }\n    if (deepEqual(v, oldValue)) {\n        return oldValue\n    }\n    return v\n}\n","import {\n    ObservableObjectAdministration,\n    createAction,\n    isAction,\n    defineProperty,\n    die,\n    isFunction,\n    Annotation,\n    globalState,\n    MakeResult,\n    assert20223DecoratorType,\n    storeAnnotation\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // bound\n    if (this.options_?.bound) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Break\n    }\n    // own\n    if (source === adm.target_) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Continue\n    }\n    // prototype\n    if (isAction(descriptor.value)) {\n        // A prototype could have been annotated already by other constructor,\n        // rest of the proto chain must be annotated already\n        return MakeResult.Break\n    }\n    const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n    defineProperty(source, key, actionDescriptor)\n    return MakeResult.Continue\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n    return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: DecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"method\", \"field\"])\n    }\n    const { kind, name, addInitializer } = context\n    const ann = this\n\n    const _createAction = m =>\n        createAction(ann.options_?.name ?? name!.toString(), m, ann.options_?.autoAction ?? false)\n\n    // Backwards/Legacy behavior, expects makeObservable(this)\n    if (kind == \"field\") {\n        addInitializer(function () {\n            storeAnnotation(this, name, ann)\n        })\n        return\n    }\n\n    if (kind == \"method\") {\n        if (!isAction(mthd)) {\n            mthd = _createAction(mthd)\n        }\n\n        if (this.options_?.bound) {\n            addInitializer(function () {\n                const self = this as any\n                const bound = self[name].bind(self)\n                bound.isMobxAction = true\n                self[name] = bound\n            })\n        }\n\n        return mthd\n    }\n\n    die(\n        `Cannot apply '${ann.annotationType_}' to '${String(name)}' (kind: ${kind}):` +\n            `\\n'${ann.annotationType_}' can only be used on properties with a function value.`\n    )\n}\n\nfunction assertActionDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { value }: PropertyDescriptor\n) {\n    if (__DEV__ && !isFunction(value)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on properties with a function value.`\n        )\n    }\n}\n\nexport function createActionDescriptor(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    // provides ability to disable safeDescriptors for prototypes\n    safeDescriptors: boolean = globalState.safeDescriptors\n) {\n    assertActionDescriptor(adm, annotation, key, descriptor)\n    let { value } = descriptor\n    if (annotation.options_?.bound) {\n        value = value.bind(adm.proxy_ ?? adm.target_)\n    }\n    return {\n        value: createAction(\n            annotation.options_?.name ?? key.toString(),\n            value,\n            annotation.options_?.autoAction ?? false,\n            // https://github.com/mobxjs/mobx/discussions/3140\n            annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n        ),\n        // Non-configurable for classes\n        // prevents accidental field redefinition in subclass\n        configurable: safeDescriptors ? adm.isPlainObject_ : true,\n        // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n        enumerable: false,\n        // Non-obsevable, therefore non-writable\n        // Also prevents rewriting in subclass constructor\n        writable: safeDescriptors ? false : true\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    Annotation,\n    defineProperty,\n    die,\n    flow,\n    isFlow,\n    isFunction,\n    globalState,\n    MakeResult,\n    hasProp,\n    assert20223DecoratorType\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // own\n    if (source === adm.target_) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Continue\n    }\n    // prototype\n    // bound - must annotate protos to support super.flow()\n    if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n        if (this.extend_(adm, key, descriptor, false) === null) {\n            return MakeResult.Cancel\n        }\n    }\n    if (isFlow(descriptor.value)) {\n        // A prototype could have been annotated already by other constructor,\n        // rest of the proto chain must be annotated already\n        return MakeResult.Break\n    }\n    const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n    defineProperty(source, key, flowDescriptor)\n    return MakeResult.Continue\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n    return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: ClassMethodDecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"method\"])\n    }\n    const { name, addInitializer } = context\n\n    if (!isFlow(mthd)) {\n        mthd = flow(mthd)\n    }\n\n    if (this.options_?.bound) {\n        addInitializer(function () {\n            const self = this as any\n            const bound = self[name].bind(self)\n            bound.isMobXFlow = true\n            self[name] = bound\n        })\n    }\n\n    return mthd\n}\n\nfunction assertFlowDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { value }: PropertyDescriptor\n) {\n    if (__DEV__ && !isFunction(value)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n        )\n    }\n}\n\nfunction createFlowDescriptor(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    bound: boolean,\n    // provides ability to disable safeDescriptors for prototypes\n    safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n    assertFlowDescriptor(adm, annotation, key, descriptor)\n    let { value } = descriptor\n    // In case of flow.bound, the descriptor can be from already annotated prototype\n    if (!isFlow(value)) {\n        value = flow(value)\n    }\n    if (bound) {\n        // We do not keep original function around, so we bind the existing flow\n        value = value.bind(adm.proxy_ ?? adm.target_)\n        // This is normally set by `flow`, but `bind` returns new function...\n        value.isMobXFlow = true\n    }\n    return {\n        value,\n        // Non-configurable for classes\n        // prevents accidental field redefinition in subclass\n        configurable: safeDescriptors ? adm.isPlainObject_ : true,\n        // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n        enumerable: false,\n        // Non-obsevable, therefore non-writable\n        // Also prevents rewriting in subclass constructor\n        writable: safeDescriptors ? false : true\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    die,\n    Annotation,\n    MakeResult,\n    assert20223DecoratorType,\n    $mobx,\n    asObservableObject,\n    ComputedValue\n} from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n): MakeResult {\n    return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    assertComputedDescriptor(adm, this, key, descriptor)\n    return adm.defineComputedProperty_(\n        key,\n        {\n            ...this.options_,\n            get: descriptor.get,\n            set: descriptor.set\n        },\n        proxyTrap\n    )\n}\n\nfunction decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"getter\"])\n    }\n    const ann = this\n    const { name: key, addInitializer } = context\n\n    addInitializer(function () {\n        const adm: ObservableObjectAdministration = asObservableObject(this)[$mobx]\n        const options = {\n            ...ann.options_,\n            get,\n            context: this\n        }\n        options.name ||= __DEV__\n            ? `${adm.name_}.${key.toString()}`\n            : `ObservableObject.${key.toString()}`\n        adm.values_.set(key, new ComputedValue(options))\n    })\n\n    return function () {\n        return this[$mobx].getObservablePropValue_(key)\n    }\n}\n\nfunction assertComputedDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { get }: PropertyDescriptor\n) {\n    if (__DEV__ && !get) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n        )\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    deepEnhancer,\n    die,\n    Annotation,\n    MakeResult,\n    assert20223DecoratorType,\n    ObservableValue,\n    asObservableObject,\n    $mobx\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n): MakeResult {\n    return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    assertObservableDescriptor(adm, this, key, descriptor)\n    return adm.defineObservableProperty_(\n        key,\n        descriptor.value,\n        this.options_?.enhancer ?? deepEnhancer,\n        proxyTrap\n    )\n}\n\nfunction decorate_20223_(\n    this: Annotation,\n    desc,\n    context: ClassAccessorDecoratorContext | ClassFieldDecoratorContext\n) {\n    if (__DEV__) {\n        if (context.kind === \"field\") {\n            throw die(\n                `Please use \\`@observable accessor ${String(\n                    context.name\n                )}\\` instead of \\`@observable ${String(context.name)}\\``\n            )\n        }\n        assert20223DecoratorType(context, [\"accessor\"])\n    }\n\n    const ann = this\n    const { kind, name } = context\n\n    // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n    //   `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n    //   This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n    //   before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n    //   from an object whose class did not declare it` error.\n    // TODO: it seems that this will not be required anymore in the final version of the spec\n    // See TODO: link\n    const initializedObjects = new WeakSet()\n\n    function initializeObservable(target, value) {\n        const adm: ObservableObjectAdministration = asObservableObject(target)[$mobx]\n        const observable = new ObservableValue(\n            value,\n            ann.options_?.enhancer ?? deepEnhancer,\n            __DEV__ ? `${adm.name_}.${name.toString()}` : `ObservableObject.${name.toString()}`,\n            false\n        )\n        adm.values_.set(name, observable)\n        initializedObjects.add(target)\n    }\n\n    if (kind == \"accessor\") {\n        return {\n            get() {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, desc.get.call(this))\n                }\n                return this[$mobx].getObservablePropValue_(name)\n            },\n            set(value) {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, value)\n                }\n                return this[$mobx].setObservablePropValue_(name, value)\n            },\n            init(value) {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, value)\n                }\n                return value\n            }\n        }\n    }\n\n    return\n}\n\nfunction assertObservableDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n) {\n    if (__DEV__ && !(\"value\" in descriptor)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' cannot be used on getter/setter properties`\n        )\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    observable,\n    Annotation,\n    defineProperty,\n    createAction,\n    globalState,\n    flow,\n    computed,\n    autoAction,\n    isGenerator,\n    MakeResult,\n    die\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n    return {\n        annotationType_: AUTO,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // getter -> computed\n    if (descriptor.get) {\n        return computed.make_(adm, key, descriptor, source)\n    }\n    // lone setter -> action setter\n    if (descriptor.set) {\n        // TODO make action applicable to setter and delegate to action.make_\n        const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n        // own\n        if (source === adm.target_) {\n            return adm.defineProperty_(key, {\n                configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n                set\n            }) === null\n                ? MakeResult.Cancel\n                : MakeResult.Continue\n        }\n        // proto\n        defineProperty(source, key, {\n            configurable: true,\n            set\n        })\n        return MakeResult.Continue\n    }\n    // function on proto -> autoAction/flow\n    if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n        if (isGenerator(descriptor.value)) {\n            const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n            return flowAnnotation.make_(adm, key, descriptor, source)\n        }\n        const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n        return actionAnnotation.make_(adm, key, descriptor, source)\n    }\n    // other -> observable\n    // Copy props from proto as well, see test:\n    // \"decorate should work with Object.create\"\n    let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n    // if function respect autoBind option\n    if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n        descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n    }\n    return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    // getter -> computed\n    if (descriptor.get) {\n        return computed.extend_(adm, key, descriptor, proxyTrap)\n    }\n    // lone setter -> action setter\n    if (descriptor.set) {\n        // TODO make action applicable to setter and delegate to action.extend_\n        return adm.defineProperty_(\n            key,\n            {\n                configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n                set: createAction(key.toString(), descriptor.set) as (v: any) => void\n            },\n            proxyTrap\n        )\n    }\n    // other -> observable\n    // if function respect autoBind option\n    if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n        descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n    }\n    let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n    return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: ClassGetterDecoratorContext) {\n    die(`'${this.annotationType_}' cannot be used as a decorator`)\n}\n","import {\n    IEnhancer,\n    IEqualsComparer,\n    IObservableArray,\n    IObservableMapInitialValues,\n    IObservableSetInitialValues,\n    IObservableValue,\n    ObservableMap,\n    ObservableSet,\n    ObservableValue,\n    asDynamicObservableObject,\n    createObservableArray,\n    deepEnhancer,\n    extendObservable,\n    isES6Map,\n    isES6Set,\n    isObservable,\n    isPlainObject,\n    referenceEnhancer,\n    Annotation,\n    shallowEnhancer,\n    refStructEnhancer,\n    AnnotationsMap,\n    asObservableObject,\n    storeAnnotation,\n    createDecoratorAnnotation,\n    createLegacyArray,\n    globalState,\n    assign,\n    isStringish,\n    createObservableAnnotation,\n    createAutoAnnotation,\n    is20223Decorator,\n    initObservable\n} from \"../internal\"\n\nimport type { ClassAccessorDecorator, ClassFieldDecorator } from \"../types/decorator_fills\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n    name?: string\n    equals?: IEqualsComparer<any>\n    deep?: boolean\n    defaultDecorator?: Annotation\n    proxy?: boolean\n    autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n    deep: true,\n    name: undefined,\n    defaultDecorator: undefined,\n    proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n    return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n    enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n    enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n    enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation =\n    createDecoratorAnnotation<ClassAccessorDecorator>(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n    return options.deep === true\n        ? deepEnhancer\n        : options.deep === false\n        ? referenceEnhancer\n        : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n    options?: CreateObservableOptions\n): Annotation | undefined {\n    return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n    return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n    // @observable someProp; (2022.3 Decorators)\n    if (is20223Decorator(arg2)) {\n        return observableAnnotation.decorate_20223_(v, arg2)\n    }\n\n    // @observable someProp;\n    if (isStringish(arg2)) {\n        storeAnnotation(v, arg2, observableAnnotation)\n        return\n    }\n\n    // already observable - ignore\n    if (isObservable(v)) {\n        return v\n    }\n\n    // plain object\n    if (isPlainObject(v)) {\n        return observable.object(v, arg2, arg3)\n    }\n\n    // Array\n    if (Array.isArray(v)) {\n        return observable.array(v, arg2)\n    }\n\n    // Map\n    if (isES6Map(v)) {\n        return observable.map(v, arg2)\n    }\n\n    // Set\n    if (isES6Set(v)) {\n        return observable.set(v, arg2)\n    }\n\n    // other object - ignore\n    if (typeof v === \"object\" && v !== null) {\n        return v\n    }\n\n    // anything else\n    return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n    <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n    <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory\n    extends Annotation,\n        PropertyDecorator,\n        ClassAccessorDecorator,\n        ClassFieldDecorator {\n    // TODO: remove ClassFieldDecorator, this is only temporarily support for legacy decorators\n    <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n    <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n    <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n    <T extends object>(\n        value: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ): T\n\n    box: IObservableValueFactory\n    array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n    set: <T = any>(\n        initialValues?: IObservableSetInitialValues<T>,\n        options?: CreateObservableOptions\n    ) => ObservableSet<T>\n    map: <K = any, V = any>(\n        initialValues?: IObservableMapInitialValues<K, V>,\n        options?: CreateObservableOptions\n    ) => ObservableMap<K, V>\n    object: <T = any>(\n        props: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ) => T\n\n    /**\n     * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n     */\n    ref: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    /**\n     * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n     */\n    shallow: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    deep: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    struct: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n    box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n    },\n    array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n        const o = asCreateObservableOptions(options)\n        return (\n            globalState.useProxies === false || o.proxy === false\n                ? createLegacyArray\n                : createObservableArray\n        )(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    map<K = any, V = any>(\n        initialValues?: IObservableMapInitialValues<K, V>,\n        options?: CreateObservableOptions\n    ): ObservableMap<K, V> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    set<T = any>(\n        initialValues?: IObservableSetInitialValues<T>,\n        options?: CreateObservableOptions\n    ): ObservableSet<T> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    object<T extends object = any>(\n        props: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ): T {\n        return initObservable(() =>\n            extendObservable(\n                globalState.useProxies === false || options?.proxy === false\n                    ? asObservableObject({}, options)\n                    : asDynamicObservableObject({}, options),\n                props,\n                decorators\n            )\n        )\n    },\n    ref: createDecoratorAnnotation(observableRefAnnotation),\n    shallow: createDecoratorAnnotation(observableShallowAnnotation),\n    deep: observableDecoratorAnnotation,\n    struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n    $mobx,\n    IIsObservableObject,\n    ObservableObjectAdministration,\n    warnAboutProxyRequirement,\n    assertProxies,\n    die,\n    isStringish,\n    globalState,\n    CreateObservableOptions,\n    asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n    return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n    has(target: IIsObservableObject, name: PropertyKey): boolean {\n        if (__DEV__ && globalState.trackingDerivation) {\n            warnAboutProxyRequirement(\n                \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n            )\n        }\n        return getAdm(target).has_(name)\n    },\n    get(target: IIsObservableObject, name: PropertyKey): any {\n        return getAdm(target).get_(name)\n    },\n    set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n        if (!isStringish(name)) {\n            return false\n        }\n        if (__DEV__ && !getAdm(target).values_.has(name)) {\n            warnAboutProxyRequirement(\n                \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n            )\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).set_(name, value, true) ?? true\n    },\n    deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n        if (__DEV__) {\n            warnAboutProxyRequirement(\n                \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n            )\n        }\n        if (!isStringish(name)) {\n            return false\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).delete_(name, true) ?? true\n    },\n    defineProperty(\n        target: IIsObservableObject,\n        name: PropertyKey,\n        descriptor: PropertyDescriptor\n    ): boolean {\n        if (__DEV__) {\n            warnAboutProxyRequirement(\n                \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n            )\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).defineProperty_(name, descriptor) ?? true\n    },\n    ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n        if (__DEV__ && globalState.trackingDerivation) {\n            warnAboutProxyRequirement(\n                \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n            )\n        }\n        return getAdm(target).ownKeys_()\n    },\n    preventExtensions(target) {\n        die(13)\n    }\n}\n\nexport function asDynamicObservableObject(\n    target: any,\n    options?: CreateObservableOptions\n): IIsObservableObject {\n    assertProxies()\n    target = asObservableObject(target, options)\n    return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n    ComputedValue,\n    IComputedValueOptions,\n    Annotation,\n    storeAnnotation,\n    createDecoratorAnnotation,\n    isStringish,\n    isPlainObject,\n    isFunction,\n    die,\n    IComputedValue,\n    createComputedAnnotation,\n    comparer,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassGetterDecorator } from \"../types/decorator_fills\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator, ClassGetterDecorator {\n    // @computed(opts)\n    <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator & ClassGetterDecorator\n    // computed(fn, opts)\n    <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n    struct: Annotation & PropertyDecorator & ClassGetterDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n    equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n    if (is20223Decorator(arg2)) {\n        // @computed (2022.3 Decorators)\n        return computedAnnotation.decorate_20223_(arg1, arg2)\n    }\n    if (isStringish(arg2)) {\n        // @computed\n        return storeAnnotation(arg1, arg2, computedAnnotation)\n    }\n    if (isPlainObject(arg1)) {\n        // @computed({ options })\n        return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n    }\n\n    // computed(expr, options?)\n    if (__DEV__) {\n        if (!isFunction(arg1)) {\n            die(\"First argument to `computed` should be an expression.\")\n        }\n        if (isFunction(arg2)) {\n            die(\n                \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n            )\n        }\n    }\n    const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n    opts.get = arg1\n    opts.name ||= arg1.name || \"\" /* for generated name */\n\n    return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n    IDerivation,\n    endBatch,\n    globalState,\n    isSpyEnabled,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    untrackedEnd,\n    untrackedStart,\n    isFunction,\n    allowStateReadsStart,\n    allowStateReadsEnd,\n    ACTION,\n    EMPTY_ARRAY,\n    die,\n    getDescriptor,\n    defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n    value: \"action\",\n    configurable: true,\n    writable: false,\n    enumerable: false\n}\n\nexport function createAction(\n    actionName: string,\n    fn: Function,\n    autoAction: boolean = false,\n    ref?: Object\n): Function {\n    if (__DEV__) {\n        if (!isFunction(fn)) {\n            die(\"`action` can only be invoked on functions\")\n        }\n        if (typeof actionName !== \"string\" || !actionName) {\n            die(`actions should have valid names, got: '${actionName}'`)\n        }\n    }\n    function res() {\n        return executeAction(actionName, autoAction, fn, ref || this, arguments)\n    }\n    res.isMobxAction = true\n    res.toString = () => fn.toString()\n    if (isFunctionNameConfigurable) {\n        tmpNameDescriptor.value = actionName\n        defineProperty(res, \"name\", tmpNameDescriptor)\n    }\n    return res\n}\n\nexport function executeAction(\n    actionName: string,\n    canRunAsDerivation: boolean,\n    fn: Function,\n    scope?: any,\n    args?: IArguments\n) {\n    const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n    try {\n        return fn.apply(scope, args)\n    } catch (err) {\n        runInfo.error_ = err\n        throw err\n    } finally {\n        _endAction(runInfo)\n    }\n}\n\nexport interface IActionRunInfo {\n    prevDerivation_: IDerivation | null\n    prevAllowStateChanges_: boolean\n    prevAllowStateReads_: boolean\n    notifySpy_: boolean\n    startTime_: number\n    error_?: any\n    parentActionId_: number\n    actionId_: number\n    runAsAction_?: boolean\n}\n\nexport function _startAction(\n    actionName: string,\n    canRunAsDerivation: boolean, // true for autoAction\n    scope: any,\n    args?: IArguments\n): IActionRunInfo {\n    const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n    let startTime_: number = 0\n    if (__DEV__ && notifySpy_) {\n        startTime_ = Date.now()\n        const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n        spyReportStart({\n            type: ACTION,\n            name: actionName,\n            object: scope,\n            arguments: flattenedArgs\n        })\n    }\n    const prevDerivation_ = globalState.trackingDerivation\n    const runAsAction = !canRunAsDerivation || !prevDerivation_\n    startBatch()\n    let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n    if (runAsAction) {\n        untrackedStart()\n        prevAllowStateChanges_ = allowStateChangesStart(true)\n    }\n    const prevAllowStateReads_ = allowStateReadsStart(true)\n    const runInfo = {\n        runAsAction_: runAsAction,\n        prevDerivation_,\n        prevAllowStateChanges_,\n        prevAllowStateReads_,\n        notifySpy_,\n        startTime_,\n        actionId_: nextActionId++,\n        parentActionId_: currentActionId\n    }\n    currentActionId = runInfo.actionId_\n    return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n    if (currentActionId !== runInfo.actionId_) {\n        die(30)\n    }\n    currentActionId = runInfo.parentActionId_\n\n    if (runInfo.error_ !== undefined) {\n        globalState.suppressReactionErrors = true\n    }\n    allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n    allowStateReadsEnd(runInfo.prevAllowStateReads_)\n    endBatch()\n    if (runInfo.runAsAction_) {\n        untrackedEnd(runInfo.prevDerivation_)\n    }\n    if (__DEV__ && runInfo.notifySpy_) {\n        spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n    }\n    globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n    const prev = allowStateChangesStart(allowStateChanges)\n    try {\n        return func()\n    } finally {\n        allowStateChangesEnd(prev)\n    }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n    const prev = globalState.allowStateChanges\n    globalState.allowStateChanges = allowStateChanges\n    return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n    globalState.allowStateChanges = prev\n}\n","import {\n    Atom,\n    IEnhancer,\n    IInterceptable,\n    IEqualsComparer,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    checkIfStateModificationsAreAllowed,\n    comparer,\n    createInstanceofPredicate,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isSpyEnabled,\n    notifyListeners,\n    registerInterceptor,\n    registerListener,\n    spyReport,\n    spyReportEnd,\n    spyReportStart,\n    toPrimitive,\n    globalState,\n    IUNCHANGED,\n    UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n    object: IObservableValue<T>\n    type: \"update\"\n    newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n    type: \"update\"\n    observableKind: \"value\"\n    object: IObservableValue<T>\n    debugObjectName: string\n    newValue: T\n    oldValue: T | undefined\n}\nexport type IBoxDidChange<T = any> =\n    | {\n          type: \"create\"\n          observableKind: \"value\"\n          object: IObservableValue<T>\n          debugObjectName: string\n          newValue: T\n      }\n    | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n    get(): T\n    set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n    extends Atom\n    implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n    hasUnreportedChange_ = false\n    interceptors_\n    changeListeners_\n    value_\n    dehancer: any\n\n    constructor(\n        value: T,\n        public enhancer: IEnhancer<T>,\n        public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n        notifySpy = true,\n        private equals: IEqualsComparer<any> = comparer.default\n    ) {\n        super(name_)\n        this.value_ = enhancer(value, undefined, name_)\n        if (__DEV__ && notifySpy && isSpyEnabled()) {\n            // only notify spy if this is a stand-alone observable\n            spyReport({\n                type: CREATE,\n                object: this,\n                observableKind: \"value\",\n                debugObjectName: this.name_,\n                newValue: \"\" + this.value_\n            })\n        }\n    }\n\n    private dehanceValue(value: T): T {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    public set(newValue: T) {\n        const oldValue = this.value_\n        newValue = this.prepareNewValue_(newValue) as any\n        if (newValue !== globalState.UNCHANGED) {\n            const notifySpy = isSpyEnabled()\n            if (__DEV__ && notifySpy) {\n                spyReportStart({\n                    type: UPDATE,\n                    object: this,\n                    observableKind: \"value\",\n                    debugObjectName: this.name_,\n                    newValue,\n                    oldValue\n                })\n            }\n            this.setNewValue_(newValue)\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n    }\n\n    private prepareNewValue_(newValue): T | IUNCHANGED {\n        checkIfStateModificationsAreAllowed(this)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IValueWillChange<T>>(this, {\n                object: this,\n                type: UPDATE,\n                newValue\n            })\n            if (!change) {\n                return globalState.UNCHANGED\n            }\n            newValue = change.newValue\n        }\n        // apply modifier\n        newValue = this.enhancer(newValue, this.value_, this.name_)\n        return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n    }\n\n    setNewValue_(newValue: T) {\n        const oldValue = this.value_\n        this.value_ = newValue\n        this.reportChanged()\n        if (hasListeners(this)) {\n            notifyListeners(this, {\n                type: UPDATE,\n                object: this,\n                newValue,\n                oldValue\n            })\n        }\n    }\n\n    public get(): T {\n        this.reportObserved()\n        return this.dehanceValue(this.value_)\n    }\n\n    intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        if (fireImmediately) {\n            listener({\n                observableKind: \"value\",\n                debugObjectName: this.name_,\n                object: this,\n                type: UPDATE,\n                newValue: this.value_,\n                oldValue: undefined\n            })\n        }\n        return registerListener(this, listener)\n    }\n\n    raw() {\n        // used by MST ot get undehanced value\n        return this.value_\n    }\n\n    toJSON() {\n        return this.get()\n    }\n\n    toString() {\n        return `${this.name_}[${this.value_}]`\n    }\n\n    valueOf(): T {\n        return toPrimitive(this.get())\n    }\n\n    [Symbol.toPrimitive]() {\n        return this.valueOf()\n    }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n    x: any\n) => x is IObservableValue<any>\n","import {\n    CaughtException,\n    IDerivation,\n    IDerivationState_,\n    IEqualsComparer,\n    IObservable,\n    Lambda,\n    TraceMode,\n    autorun,\n    clearObserving,\n    comparer,\n    createAction,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    globalState,\n    isCaughtException,\n    isSpyEnabled,\n    propagateChangeConfirmed,\n    propagateMaybeChanged,\n    reportObserved,\n    shouldCompute,\n    spyReport,\n    startBatch,\n    toPrimitive,\n    trackDerivedFunction,\n    untrackedEnd,\n    untrackedStart,\n    UPDATE,\n    die,\n    allowStateChangesStart,\n    allowStateChangesEnd\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport interface IComputedValue<T> {\n    get(): T\n    set(value: T): void\n}\n\nexport interface IComputedValueOptions<T> {\n    get?: () => T\n    set?: (value: T) => void\n    name?: string\n    equals?: IEqualsComparer<T>\n    context?: any\n    requiresReaction?: boolean\n    keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n    type: \"update\"\n    observableKind: \"computed\"\n    object: unknown\n    debugObjectName: string\n    newValue: T\n    oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n *    give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n *    if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n *    go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n    dependenciesState_ = IDerivationState_.NOT_TRACKING_\n    observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n    newObserving_ = null // during tracking it's an array with new observed observers\n    observers_ = new Set<IDerivation>()\n    runId_ = 0\n    lastAccessedBy_ = 0\n    lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n    unboundDepsCount_ = 0\n    protected value_: T | undefined | CaughtException = new CaughtException(null)\n    name_: string\n    triggeredBy_?: string\n\n    private static readonly isComputingMask_ = 0b00001\n    private static readonly isRunningSetterMask_ = 0b00010\n    private static readonly isBeingObservedMask_ = 0b00100\n    private static readonly isPendingUnobservationMask_ = 0b01000\n    private static readonly diffValueMask_ = 0b10000\n    private flags_ = 0b00000\n\n    derivation: () => T // N.B: unminified as it is used by MST\n    setter_?: (value: T) => void\n    isTracing_: TraceMode = TraceMode.NONE\n    scope_: Object | undefined\n    private equals_: IEqualsComparer<any>\n    private requiresReaction_: boolean | undefined\n    keepAlive_: boolean\n\n    /**\n     * Create a new computed value based on a function expression.\n     *\n     * The `name` property is for debug purposes only.\n     *\n     * The `equals` property specifies the comparer function to use to determine if a newly produced\n     * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n     * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n     * Structural comparison can be convenient if you always produce a new aggregated object and\n     * don't want to notify observers if it is structurally the same.\n     * This is useful for working with vectors, mouse coordinates etc.\n     */\n    constructor(options: IComputedValueOptions<T>) {\n        if (!options.get) {\n            die(31)\n        }\n        this.derivation = options.get!\n        this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n        if (options.set) {\n            this.setter_ = createAction(\n                __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n                options.set\n            ) as any\n        }\n        this.equals_ =\n            options.equals ||\n            ((options as any).compareStructural || (options as any).struct\n                ? comparer.structural\n                : comparer.default)\n        this.scope_ = options.context\n        this.requiresReaction_ = options.requiresReaction\n        this.keepAlive_ = !!options.keepAlive\n    }\n\n    onBecomeStale_() {\n        propagateMaybeChanged(this)\n    }\n\n    public onBOL: Set<Lambda> | undefined\n    public onBUOL: Set<Lambda> | undefined\n\n    public onBO() {\n        if (this.onBOL) {\n            this.onBOL.forEach(listener => listener())\n        }\n    }\n\n    public onBUO() {\n        if (this.onBUOL) {\n            this.onBUOL.forEach(listener => listener())\n        }\n    }\n\n    // to check for cycles\n    private get isComputing(): boolean {\n        return getFlag(this.flags_, ComputedValue.isComputingMask_)\n    }\n    private set isComputing(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isComputingMask_, newValue)\n    }\n\n    private get isRunningSetter(): boolean {\n        return getFlag(this.flags_, ComputedValue.isRunningSetterMask_)\n    }\n    private set isRunningSetter(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isRunningSetterMask_, newValue)\n    }\n\n    get isBeingObserved(): boolean {\n        return getFlag(this.flags_, ComputedValue.isBeingObservedMask_)\n    }\n    set isBeingObserved(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isBeingObservedMask_, newValue)\n    }\n\n    get isPendingUnobservation(): boolean {\n        return getFlag(this.flags_, ComputedValue.isPendingUnobservationMask_)\n    }\n    set isPendingUnobservation(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isPendingUnobservationMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, ComputedValue.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(\n            this.flags_,\n            ComputedValue.diffValueMask_,\n            newValue === 1 ? true : false\n        )\n    }\n\n    /**\n     * Returns the current value of this computed value.\n     * Will evaluate its computation first if needed.\n     */\n    public get(): T {\n        if (this.isComputing) {\n            die(32, this.name_, this.derivation)\n        }\n        if (\n            globalState.inBatch === 0 &&\n            // !globalState.trackingDerivatpion &&\n            this.observers_.size === 0 &&\n            !this.keepAlive_\n        ) {\n            if (shouldCompute(this)) {\n                this.warnAboutUntrackedRead_()\n                startBatch() // See perf test 'computed memoization'\n                this.value_ = this.computeValue_(false)\n                endBatch()\n            }\n        } else {\n            reportObserved(this)\n            if (shouldCompute(this)) {\n                let prevTrackingContext = globalState.trackingContext\n                if (this.keepAlive_ && !prevTrackingContext) {\n                    globalState.trackingContext = this\n                }\n                if (this.trackAndCompute()) {\n                    propagateChangeConfirmed(this)\n                }\n                globalState.trackingContext = prevTrackingContext\n            }\n        }\n        const result = this.value_!\n\n        if (isCaughtException(result)) {\n            throw result.cause\n        }\n        return result\n    }\n\n    public set(value: T) {\n        if (this.setter_) {\n            if (this.isRunningSetter) {\n                die(33, this.name_)\n            }\n            this.isRunningSetter = true\n            try {\n                this.setter_.call(this.scope_, value)\n            } finally {\n                this.isRunningSetter = false\n            }\n        } else {\n            die(34, this.name_)\n        }\n    }\n\n    trackAndCompute(): boolean {\n        // N.B: unminified as it is used by MST\n        const oldValue = this.value_\n        const wasSuspended =\n            /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n        const newValue = this.computeValue_(true)\n\n        const changed =\n            wasSuspended ||\n            isCaughtException(oldValue) ||\n            isCaughtException(newValue) ||\n            !this.equals_(oldValue, newValue)\n\n        if (changed) {\n            this.value_ = newValue\n\n            if (__DEV__ && isSpyEnabled()) {\n                spyReport({\n                    observableKind: \"computed\",\n                    debugObjectName: this.name_,\n                    object: this.scope_,\n                    type: \"update\",\n                    oldValue,\n                    newValue\n                } as IComputedDidChange)\n            }\n        }\n\n        return changed\n    }\n\n    computeValue_(track: boolean) {\n        this.isComputing = true\n        // don't allow state changes during computation\n        const prev = allowStateChangesStart(false)\n        let res: T | CaughtException\n        if (track) {\n            res = trackDerivedFunction(this, this.derivation, this.scope_)\n        } else {\n            if (globalState.disableErrorBoundaries === true) {\n                res = this.derivation.call(this.scope_)\n            } else {\n                try {\n                    res = this.derivation.call(this.scope_)\n                } catch (e) {\n                    res = new CaughtException(e)\n                }\n            }\n        }\n        allowStateChangesEnd(prev)\n        this.isComputing = false\n        return res\n    }\n\n    suspend_() {\n        if (!this.keepAlive_) {\n            clearObserving(this)\n            this.value_ = undefined // don't hold on to computed value!\n            if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n                console.log(\n                    `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n                )\n            }\n        }\n    }\n\n    observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        let firstTime = true\n        let prevValue: T | undefined = undefined\n        return autorun(() => {\n            // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n            let newValue = this.get()\n            if (!firstTime || fireImmediately) {\n                const prevU = untrackedStart()\n                listener({\n                    observableKind: \"computed\",\n                    debugObjectName: this.name_,\n                    type: UPDATE,\n                    object: this,\n                    newValue,\n                    oldValue: prevValue\n                })\n                untrackedEnd(prevU)\n            }\n            firstTime = false\n            prevValue = newValue\n        })\n    }\n\n    warnAboutUntrackedRead_() {\n        if (!__DEV__) {\n            return\n        }\n        if (this.isTracing_ !== TraceMode.NONE) {\n            console.log(\n                `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n            )\n        }\n        if (\n            typeof this.requiresReaction_ === \"boolean\"\n                ? this.requiresReaction_\n                : globalState.computedRequiresReaction\n        ) {\n            console.warn(\n                `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n            )\n        }\n    }\n\n    toString() {\n        return `${this.name_}[${this.derivation.toString()}]`\n    }\n\n    valueOf(): T {\n        return toPrimitive(this.get())\n    }\n\n    [Symbol.toPrimitive]() {\n        return this.valueOf()\n    }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n    Lambda,\n    ComputedValue,\n    IDependencyTree,\n    IDerivation,\n    IDerivationState_,\n    TraceMode,\n    getDependencyTree,\n    globalState,\n    runReactions,\n    checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n    name_: string\n    observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n    diffValue: number\n    /**\n     * Id of the derivation *run* that last accessed this observable.\n     * If this id equals the *run* id of the current derivation,\n     * the dependency is already established\n     */\n    lastAccessedBy_: number\n    isBeingObserved: boolean\n\n    lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n    isPendingUnobservation: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n    observers_: Set<IDerivation>\n\n    onBUO(): void\n    onBO(): void\n\n    onBUOL: Set<Lambda> | undefined\n    onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n    return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n    return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n//     const list = observable.observers\n//     const map = observable.observersIndexes\n//     const l = list.length\n//     for (let i = 0; i < l; i++) {\n//         const id = list[i].__mapid\n//         if (i) {\n//             invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n//         } else {\n//             invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n//         }\n//     }\n//     invariant(\n//         list.length === 0 || Object.keys(map).length === list.length - 1,\n//         \"INTERNAL ERROR there is no junk in map\"\n//     )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n    // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n    // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n    // invariantObservers(observable);\n\n    observable.observers_.add(node)\n    if (observable.lowestObserverState_ > node.dependenciesState_) {\n        observable.lowestObserverState_ = node.dependenciesState_\n    }\n\n    // invariantObservers(observable);\n    // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n    // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n    // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n    // invariantObservers(observable);\n    observable.observers_.delete(node)\n    if (observable.observers_.size === 0) {\n        // deleting last observer\n        queueForUnobservation(observable)\n    }\n    // invariantObservers(observable);\n    // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n    if (observable.isPendingUnobservation === false) {\n        // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n        observable.isPendingUnobservation = true\n        globalState.pendingUnobservations.push(observable)\n    }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n    globalState.inBatch++\n}\n\nexport function endBatch() {\n    if (--globalState.inBatch === 0) {\n        runReactions()\n        // the batch is actually about to finish, all unobserving should happen here.\n        const list = globalState.pendingUnobservations\n        for (let i = 0; i < list.length; i++) {\n            const observable = list[i]\n            observable.isPendingUnobservation = false\n            if (observable.observers_.size === 0) {\n                if (observable.isBeingObserved) {\n                    // if this observable had reactive observers, trigger the hooks\n                    observable.isBeingObserved = false\n                    observable.onBUO()\n                }\n                if (observable instanceof ComputedValue) {\n                    // computed values are automatically teared down when the last observer leaves\n                    // this process happens recursively, this computed might be the last observabe of another, etc..\n                    observable.suspend_()\n                }\n            }\n        }\n        globalState.pendingUnobservations = []\n    }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n    checkIfStateReadsAreAllowed(observable)\n\n    const derivation = globalState.trackingDerivation\n    if (derivation !== null) {\n        /**\n         * Simple optimization, give each derivation run an unique id (runId)\n         * Check if last time this observable was accessed the same runId is used\n         * if this is the case, the relation is already known\n         */\n        if (derivation.runId_ !== observable.lastAccessedBy_) {\n            observable.lastAccessedBy_ = derivation.runId_\n            // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n            derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n            if (!observable.isBeingObserved && globalState.trackingContext) {\n                observable.isBeingObserved = true\n                observable.onBO()\n            }\n        }\n        return observable.isBeingObserved\n    } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n        queueForUnobservation(observable)\n    }\n\n    return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n//     // it's expensive so better not run it in produciton. but temporarily helpful for testing\n//     const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n//     if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n//     throw new Error(\n//         \"lowestObserverState is wrong for \" +\n//             msg +\n//             \" because \" +\n//             min +\n//             \" < \" +\n//             observable.lowestObserverState\n//     )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n    // invariantLOS(observable, \"changed start\");\n    if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.STALE_\n\n    // Ideally we use for..of here, but the downcompiled version is really slow...\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n            if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n                logTraceInfo(d, observable)\n            }\n            d.onBecomeStale_()\n        }\n        d.dependenciesState_ = IDerivationState_.STALE_\n    })\n    // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n    // invariantLOS(observable, \"confirmed start\");\n    if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.STALE_\n\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n            d.dependenciesState_ = IDerivationState_.STALE_\n            if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n                logTraceInfo(d, observable)\n            }\n        } else if (\n            d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n        ) {\n            observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n        }\n    })\n    // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n    // invariantLOS(observable, \"maybe start\");\n    if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n            d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n            d.onBecomeStale_()\n        }\n    })\n    // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n    console.log(\n        `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n    )\n    if (derivation.isTracing_ === TraceMode.BREAK) {\n        const lines = []\n        printDepTree(getDependencyTree(derivation), lines, 1)\n\n        // prettier-ignore\n        new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n    `)()\n    }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n    if (lines.length >= 1000) {\n        lines.push(\"(and many more)\")\n        return\n    }\n    lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n    if (tree.dependencies) {\n        tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n    }\n}\n","import {\n    IAtom,\n    IDepTreeNode,\n    IObservable,\n    addObserver,\n    globalState,\n    isComputedValue,\n    removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n    // before being run or (outside batch and not being observed)\n    // at this point derivation is not holding any data about dependency tree\n    NOT_TRACKING_ = -1,\n    // no shallow dependency changed since last computation\n    // won't recalculate derivation\n    // this is what makes mobx fast\n    UP_TO_DATE_ = 0,\n    // some deep dependency changed, but don't know if shallow dependency changed\n    // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n    // currently only ComputedValue will propagate POSSIBLY_STALE\n    //\n    // having this state is second big optimization:\n    // don't have to recompute on every dependency change, but only when it's needed\n    POSSIBLY_STALE_ = 1,\n    // A shallow dependency has changed since last computation and the derivation\n    // will need to recompute when it's needed next.\n    STALE_ = 2\n}\n\nexport enum TraceMode {\n    NONE,\n    LOG,\n    BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n    observing_: IObservable[]\n    newObserving_: null | IObservable[]\n    dependenciesState_: IDerivationState_\n    /**\n     * Id of the current run of a derivation. Each time the derivation is tracked\n     * this number is increased by one. This number is globally unique\n     */\n    runId_: number\n    /**\n     * amount of dependencies used by the derivation in this run, which has not been bound yet.\n     */\n    unboundDepsCount_: number\n    onBecomeStale_(): void\n    isTracing_: TraceMode\n\n    /**\n     *  warn if the derivation has no dependencies after creation/update\n     */\n    requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n    constructor(public cause: any) {\n        // Empty\n    }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n    return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n    switch (derivation.dependenciesState_) {\n        case IDerivationState_.UP_TO_DATE_:\n            return false\n        case IDerivationState_.NOT_TRACKING_:\n        case IDerivationState_.STALE_:\n            return true\n        case IDerivationState_.POSSIBLY_STALE_: {\n            // state propagation can occur outside of action/reactive context #2195\n            const prevAllowStateReads = allowStateReadsStart(true)\n            const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n            const obs = derivation.observing_,\n                l = obs.length\n            for (let i = 0; i < l; i++) {\n                const obj = obs[i]\n                if (isComputedValue(obj)) {\n                    if (globalState.disableErrorBoundaries) {\n                        obj.get()\n                    } else {\n                        try {\n                            obj.get()\n                        } catch (e) {\n                            // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n                            untrackedEnd(prevUntracked)\n                            allowStateReadsEnd(prevAllowStateReads)\n                            return true\n                        }\n                    }\n                    // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n                    // and `derivation` is an observer of `obj`\n                    // invariantShouldCompute(derivation)\n                    if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n                        untrackedEnd(prevUntracked)\n                        allowStateReadsEnd(prevAllowStateReads)\n                        return true\n                    }\n                }\n            }\n            changeDependenciesStateTo0(derivation)\n            untrackedEnd(prevUntracked)\n            allowStateReadsEnd(prevAllowStateReads)\n            return false\n        }\n    }\n}\n\nexport function isComputingDerivation() {\n    return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n    if (!__DEV__) {\n        return\n    }\n    const hasObservers = atom.observers_.size > 0\n    // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n    if (\n        !globalState.allowStateChanges &&\n        (hasObservers || globalState.enforceActions === \"always\")\n    ) {\n        console.warn(\n            \"[MobX] \" +\n                (globalState.enforceActions\n                    ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n                    : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n                atom.name_\n        )\n    }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n    if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n        console.warn(\n            `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n        )\n    }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n    const prevAllowStateReads = allowStateReadsStart(true)\n    changeDependenciesStateTo0(derivation)\n    // Preallocate array; will be trimmed by bindDependencies.\n    derivation.newObserving_ = new Array(\n        // Reserve constant space for initial dependencies, dynamic space otherwise.\n        // See https://github.com/mobxjs/mobx/pull/3833\n        derivation.runId_ === 0 ? 100 : derivation.observing_.length\n    )\n    derivation.unboundDepsCount_ = 0\n    derivation.runId_ = ++globalState.runId\n    const prevTracking = globalState.trackingDerivation\n    globalState.trackingDerivation = derivation\n    globalState.inBatch++\n    let result\n    if (globalState.disableErrorBoundaries === true) {\n        result = f.call(context)\n    } else {\n        try {\n            result = f.call(context)\n        } catch (e) {\n            result = new CaughtException(e)\n        }\n    }\n    globalState.inBatch--\n    globalState.trackingDerivation = prevTracking\n    bindDependencies(derivation)\n\n    warnAboutDerivationWithoutDependencies(derivation)\n    allowStateReadsEnd(prevAllowStateReads)\n    return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n    if (!__DEV__) {\n        return\n    }\n\n    if (derivation.observing_.length !== 0) {\n        return\n    }\n\n    if (\n        typeof derivation.requiresObservable_ === \"boolean\"\n            ? derivation.requiresObservable_\n            : globalState.reactionRequiresObservable\n    ) {\n        console.warn(\n            `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n        )\n    }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n    // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n    const prevObserving = derivation.observing_\n    const observing = (derivation.observing_ = derivation.newObserving_!)\n    let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n    // Go through all new observables and check diffValue: (this list can contain duplicates):\n    //   0: first occurrence, change to 1 and keep it\n    //   1: extra occurrence, drop it\n    let i0 = 0,\n        l = derivation.unboundDepsCount_\n    for (let i = 0; i < l; i++) {\n        const dep = observing[i]\n        if (dep.diffValue === 0) {\n            dep.diffValue = 1\n            if (i0 !== i) {\n                observing[i0] = dep\n            }\n            i0++\n        }\n\n        // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n        // not hitting the condition\n        if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n            lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n        }\n    }\n    observing.length = i0\n\n    derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n    // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n    //   0: it's not in new observables, unobserve it\n    //   1: it keeps being observed, don't want to notify it. change to 0\n    l = prevObserving.length\n    while (l--) {\n        const dep = prevObserving[l]\n        if (dep.diffValue === 0) {\n            removeObserver(dep, derivation)\n        }\n        dep.diffValue = 0\n    }\n\n    // Go through all new observables and check diffValue: (now it should be unique)\n    //   0: it was set to 0 in last loop. don't need to do anything.\n    //   1: it wasn't observed, let's observe it. set back to 0\n    while (i0--) {\n        const dep = observing[i0]\n        if (dep.diffValue === 1) {\n            dep.diffValue = 0\n            addObserver(dep, derivation)\n        }\n    }\n\n    // Some new observed derivations may become stale during this derivation computation\n    // so they have had no chance to propagate staleness (#916)\n    if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n        derivation.dependenciesState_ = lowestNewObservingDerivationState\n        derivation.onBecomeStale_()\n    }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n    // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n    const obs = derivation.observing_\n    derivation.observing_ = []\n    let i = obs.length\n    while (i--) {\n        removeObserver(obs[i], derivation)\n    }\n\n    derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n    const prev = untrackedStart()\n    try {\n        return action()\n    } finally {\n        untrackedEnd(prev)\n    }\n}\n\nexport function untrackedStart(): IDerivation | null {\n    const prev = globalState.trackingDerivation\n    globalState.trackingDerivation = null\n    return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n    globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n    const prev = globalState.allowStateReads\n    globalState.allowStateReads = allowStateReads\n    return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n    globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n    if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n        return\n    }\n    derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n    const obs = derivation.observing_\n    let i = obs.length\n    while (i--) {\n        obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n    }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n    \"mobxGuid\",\n    \"spyListeners\",\n    \"enforceActions\",\n    \"computedRequiresReaction\",\n    \"reactionRequiresObservable\",\n    \"observableRequiresReaction\",\n    \"allowStateReads\",\n    \"disableErrorBoundaries\",\n    \"runId\",\n    \"UNCHANGED\",\n    \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n    /**\n     * MobXGlobals version.\n     * MobX compatiblity with other versions loaded in memory as long as this version matches.\n     * It indicates that the global state still stores similar information\n     *\n     * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n     * internal state storage of MobX, and can be the same across many different package versions\n     */\n    version = 6\n\n    /**\n     * globally unique token to signal unchanged\n     */\n    UNCHANGED: IUNCHANGED = {}\n\n    /**\n     * Currently running derivation\n     */\n    trackingDerivation: IDerivation | null = null\n\n    /**\n     * Currently running reaction. This determines if we currently have a reactive context.\n     * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n     * but trackingReaction can only be set by a form of Reaction)\n     */\n    trackingContext: Reaction | ComputedValue<any> | null = null\n\n    /**\n     * Each time a derivation is tracked, it is assigned a unique run-id\n     */\n    runId = 0\n\n    /**\n     * 'guid' for general purpose. Will be persisted amongst resets.\n     */\n    mobxGuid = 0\n\n    /**\n     * Are we in a batch block? (and how many of them)\n     */\n    inBatch: number = 0\n\n    /**\n     * Observables that don't have observers anymore, and are about to be\n     * suspended, unless somebody else accesses it in the same batch\n     *\n     * @type {IObservable[]}\n     */\n    pendingUnobservations: IObservable[] = []\n\n    /**\n     * List of scheduled, not yet executed, reactions.\n     */\n    pendingReactions: Reaction[] = []\n\n    /**\n     * Are we currently processing reactions?\n     */\n    isRunningReactions = false\n\n    /**\n     * Is it allowed to change observables at this point?\n     * In general, MobX doesn't allow that when running computations and React.render.\n     * To ensure that those functions stay pure.\n     */\n    allowStateChanges = false\n\n    /**\n     * Is it allowed to read observables at this point?\n     * Used to hold the state needed for `observableRequiresReaction`\n     */\n    allowStateReads = true\n\n    /**\n     * If strict mode is enabled, state changes are by default not allowed\n     */\n    enforceActions: boolean | \"always\" = true\n\n    /**\n     * Spy callbacks\n     */\n    spyListeners: { (change: any): void }[] = []\n\n    /**\n     * Globally attached error handlers that react specifically to errors in reactions\n     */\n    globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n    /**\n     * Warn if computed values are accessed outside a reactive context\n     */\n    computedRequiresReaction = false\n\n    /**\n     * (Experimental)\n     * Warn if you try to create to derivation / reactive context without accessing any observable.\n     */\n    reactionRequiresObservable = false\n\n    /**\n     * (Experimental)\n     * Warn if observables are accessed outside a reactive context\n     */\n    observableRequiresReaction = false\n\n    /*\n     * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n     * the stack when an exception occurs while debugging.\n     */\n    disableErrorBoundaries = false\n\n    /*\n     * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n     * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n     */\n    suppressReactionErrors = false\n\n    useProxies = true\n    /*\n     * print warnings about code that would fail if proxies weren't available\n     */\n    verifyProxies = false\n\n    /**\n     * False forces all object's descriptors to\n     * writable: true\n     * configurable: true\n     */\n    safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n    let global = getGlobal()\n    if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n        canMergeGlobalState = false\n    }\n    if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n        canMergeGlobalState = false\n    }\n\n    if (!canMergeGlobalState) {\n        // Because this is a IIFE we need to let isolateCalled a chance to change\n        // so we run it after the event loop completed at least 1 iteration\n        setTimeout(() => {\n            if (!isolateCalled) {\n                die(35)\n            }\n        }, 1)\n        return new MobXGlobals()\n    } else if (global.__mobxGlobals) {\n        global.__mobxInstanceCount += 1\n        if (!global.__mobxGlobals.UNCHANGED) {\n            global.__mobxGlobals.UNCHANGED = {}\n        } // make merge backward compatible\n        return global.__mobxGlobals\n    } else {\n        global.__mobxInstanceCount = 1\n        return (global.__mobxGlobals = new MobXGlobals())\n    }\n})()\n\nexport function isolateGlobalState() {\n    if (\n        globalState.pendingReactions.length ||\n        globalState.inBatch ||\n        globalState.isRunningReactions\n    ) {\n        die(36)\n    }\n    isolateCalled = true\n    if (canMergeGlobalState) {\n        let global = getGlobal()\n        if (--global.__mobxInstanceCount === 0) {\n            global.__mobxGlobals = undefined\n        }\n        globalState = new MobXGlobals()\n    }\n}\n\nexport function getGlobalState(): any {\n    return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n    const defaultGlobals = new MobXGlobals()\n    for (let key in defaultGlobals) {\n        if (persistentKeys.indexOf(key as any) === -1) {\n            globalState[key] = defaultGlobals[key]\n        }\n    }\n    globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n    $mobx,\n    IDerivation,\n    IDerivationState_,\n    IObservable,\n    Lambda,\n    TraceMode,\n    clearObserving,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    globalState,\n    isCaughtException,\n    isSpyEnabled,\n    shouldCompute,\n    spyReport,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    trace,\n    trackDerivedFunction,\n    GenericAbortSignal\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n    dispose(): void\n    trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n    (): void\n    [$mobx]: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n    observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n    newObserving_: IObservable[] = []\n    dependenciesState_ = IDerivationState_.NOT_TRACKING_\n    runId_ = 0\n    unboundDepsCount_ = 0\n\n    private static readonly isDisposedMask_ = 0b00001\n    private static readonly isScheduledMask_ = 0b00010\n    private static readonly isTrackPendingMask_ = 0b00100\n    private static readonly isRunningMask_ = 0b01000\n    private static readonly diffValueMask_ = 0b10000\n    private flags_ = 0b00000\n\n    isTracing_: TraceMode = TraceMode.NONE\n\n    constructor(\n        public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n        private onInvalidate_: () => void,\n        private errorHandler_?: (error: any, derivation: IDerivation) => void,\n        public requiresObservable_?\n    ) {}\n\n    get isDisposed() {\n        return getFlag(this.flags_, Reaction.isDisposedMask_)\n    }\n    set isDisposed(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isDisposedMask_, newValue)\n    }\n\n    get isScheduled() {\n        return getFlag(this.flags_, Reaction.isScheduledMask_)\n    }\n    set isScheduled(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isScheduledMask_, newValue)\n    }\n\n    get isTrackPending() {\n        return getFlag(this.flags_, Reaction.isTrackPendingMask_)\n    }\n    set isTrackPending(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isTrackPendingMask_, newValue)\n    }\n\n    get isRunning() {\n        return getFlag(this.flags_, Reaction.isRunningMask_)\n    }\n    set isRunning(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isRunningMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, Reaction.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(this.flags_, Reaction.diffValueMask_, newValue === 1 ? true : false)\n    }\n\n    onBecomeStale_() {\n        this.schedule_()\n    }\n\n    schedule_() {\n        if (!this.isScheduled) {\n            this.isScheduled = true\n            globalState.pendingReactions.push(this)\n            runReactions()\n        }\n    }\n\n    /**\n     * internal, use schedule() if you intend to kick off a reaction\n     */\n    runReaction_() {\n        if (!this.isDisposed) {\n            startBatch()\n            this.isScheduled = false\n            const prev = globalState.trackingContext\n            globalState.trackingContext = this\n            if (shouldCompute(this)) {\n                this.isTrackPending = true\n\n                try {\n                    this.onInvalidate_()\n                    if (__DEV__ && this.isTrackPending && isSpyEnabled()) {\n                        // onInvalidate didn't trigger track right away..\n                        spyReport({\n                            name: this.name_,\n                            type: \"scheduled-reaction\"\n                        })\n                    }\n                } catch (e) {\n                    this.reportExceptionInDerivation_(e)\n                }\n            }\n            globalState.trackingContext = prev\n            endBatch()\n        }\n    }\n\n    track(fn: () => void) {\n        if (this.isDisposed) {\n            return\n            // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n        }\n        startBatch()\n        const notify = isSpyEnabled()\n        let startTime\n        if (__DEV__ && notify) {\n            startTime = Date.now()\n            spyReportStart({\n                name: this.name_,\n                type: \"reaction\"\n            })\n        }\n        this.isRunning = true\n        const prevReaction = globalState.trackingContext // reactions could create reactions...\n        globalState.trackingContext = this\n        const result = trackDerivedFunction(this, fn, undefined)\n        globalState.trackingContext = prevReaction\n        this.isRunning = false\n        this.isTrackPending = false\n        if (this.isDisposed) {\n            // disposed during last run. Clean up everything that was bound after the dispose call.\n            clearObserving(this)\n        }\n        if (isCaughtException(result)) {\n            this.reportExceptionInDerivation_(result.cause)\n        }\n        if (__DEV__ && notify) {\n            spyReportEnd({\n                time: Date.now() - startTime\n            })\n        }\n        endBatch()\n    }\n\n    reportExceptionInDerivation_(error: any) {\n        if (this.errorHandler_) {\n            this.errorHandler_(error, this)\n            return\n        }\n\n        if (globalState.disableErrorBoundaries) {\n            throw error\n        }\n\n        const message = __DEV__\n            ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n            : `[mobx] uncaught error in '${this}'`\n        if (!globalState.suppressReactionErrors) {\n            console.error(message, error)\n            /** If debugging brought you here, please, read the above message :-). Tnx! */\n        } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n        if (__DEV__ && isSpyEnabled()) {\n            spyReport({\n                type: \"error\",\n                name: this.name_,\n                message,\n                error: \"\" + error\n            })\n        }\n\n        globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n    }\n\n    dispose() {\n        if (!this.isDisposed) {\n            this.isDisposed = true\n            if (!this.isRunning) {\n                // if disposed while running, clean up later. Maybe not optimal, but rare case\n                startBatch()\n                clearObserving(this)\n                endBatch()\n            }\n        }\n    }\n\n    getDisposer_(abortSignal?: GenericAbortSignal): IReactionDisposer {\n        const dispose = (() => {\n            this.dispose()\n            abortSignal?.removeEventListener?.(\"abort\", dispose)\n        }) as IReactionDisposer\n        abortSignal?.addEventListener?.(\"abort\", dispose)\n        dispose[$mobx] = this\n\n        return dispose\n    }\n\n    toString() {\n        return `Reaction[${this.name_}]`\n    }\n\n    trace(enterBreakPoint: boolean = false) {\n        trace(this, enterBreakPoint)\n    }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n    globalState.globalReactionErrorHandlers.push(handler)\n    return () => {\n        const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n        if (idx >= 0) {\n            globalState.globalReactionErrorHandlers.splice(idx, 1)\n        }\n    }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n    // Trampolining, if runReactions are already running, new reactions will be picked up\n    if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n        return\n    }\n    reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n    globalState.isRunningReactions = true\n    const allReactions = globalState.pendingReactions\n    let iterations = 0\n\n    // While running reactions, new reactions might be triggered.\n    // Hence we work with two variables and check whether\n    // we converge to no remaining reactions after a while.\n    while (allReactions.length > 0) {\n        if (++iterations === MAX_REACTION_ITERATIONS) {\n            console.error(\n                __DEV__\n                    ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n                          ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n                    : `[mobx] cycle in reaction: ${allReactions[0]}`\n            )\n            allReactions.splice(0) // clear reactions\n        }\n        let remainingReactions = allReactions.splice(0)\n        for (let i = 0, l = remainingReactions.length; i < l; i++) {\n            remainingReactions[i].runReaction_()\n        }\n    }\n    globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n    const baseScheduler = reactionScheduler\n    reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n    return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n    | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n    | { type: \"scheduled-reaction\"; name: string }\n    | { type: \"reaction\"; name: string }\n    | { type: \"error\"; name: string; message: string; error: string }\n    | IComputedDidChange<unknown>\n    | IObjectDidChange<unknown>\n    | IArrayDidChange<unknown>\n    | IMapDidChange<unknown, unknown>\n    | ISetDidChange<unknown>\n    | IValueDidChange<unknown>\n    | IBoxDidChange<unknown>\n    | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n    if (!__DEV__) {\n        return\n    } // dead code elimination can do the rest\n    if (!globalState.spyListeners.length) {\n        return\n    }\n    const listeners = globalState.spyListeners\n    for (let i = 0, l = listeners.length; i < l; i++) {\n        listeners[i](event)\n    }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n    if (!__DEV__) {\n        return\n    }\n    const change = { ...event, spyReportStart: true as const }\n    spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n    if (!__DEV__) {\n        return\n    }\n    if (change) {\n        spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n    } else {\n        spyReport(END_EVENT)\n    }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n    if (!__DEV__) {\n        console.warn(`[mobx.spy] Is a no-op in production builds`)\n        return function () {}\n    } else {\n        globalState.spyListeners.push(listener)\n        return once(() => {\n            globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n        })\n    }\n}\n","import {\n    createAction,\n    executeAction,\n    Annotation,\n    storeAnnotation,\n    die,\n    isFunction,\n    isStringish,\n    createDecoratorAnnotation,\n    createActionAnnotation,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassFieldDecorator, ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n    bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n    autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n    autoAction: true,\n    bound: true\n})\n\nexport interface IActionFactory\n    extends Annotation,\n        PropertyDecorator,\n        ClassMethodDecorator,\n        ClassFieldDecorator {\n    // nameless actions\n    <T extends Function | undefined | null>(fn: T): T\n    // named actions\n    <T extends Function | undefined | null>(name: string, fn: T): T\n\n    // named decorator\n    (customName: string): PropertyDecorator &\n        Annotation &\n        ClassMethodDecorator &\n        ClassFieldDecorator\n\n    // decorator (name no longer supported)\n    bound: Annotation & PropertyDecorator & ClassMethodDecorator & ClassFieldDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n    const res: IActionFactory = function action(arg1, arg2?): any {\n        // action(fn() {})\n        if (isFunction(arg1)) {\n            return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n        }\n        // action(\"name\", fn() {})\n        if (isFunction(arg2)) {\n            return createAction(arg1, arg2, autoAction)\n        }\n        // @action (2022.3 Decorators)\n        if (is20223Decorator(arg2)) {\n            return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(\n                arg1,\n                arg2\n            )\n        }\n        // @action\n        if (isStringish(arg2)) {\n            return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n        }\n        // action(\"name\") & @action(\"name\")\n        if (isStringish(arg1)) {\n            return createDecoratorAnnotation(\n                createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n                    name: arg1,\n                    autoAction\n                })\n            )\n        }\n\n        if (__DEV__) {\n            die(\"Invalid arguments for `action`\")\n        }\n    } as IActionFactory\n    return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n    return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n    return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n    EMPTY_OBJECT,\n    IEqualsComparer,\n    IReactionDisposer,\n    IReactionPublic,\n    Lambda,\n    Reaction,\n    action,\n    comparer,\n    getNextId,\n    isAction,\n    isFunction,\n    isPlainObject,\n    die,\n    allowStateChanges,\n    GenericAbortSignal\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n    delay?: number\n    name?: string\n    /**\n     * Experimental.\n     * Warns if the view doesn't track observables\n     */\n    requiresObservable?: boolean\n    scheduler?: (callback: () => void) => any\n    onError?: (error: any) => void\n    signal?: GenericAbortSignal\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n    view: (r: IReactionPublic) => any,\n    opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n    if (__DEV__) {\n        if (!isFunction(view)) {\n            die(\"Autorun expects a function as first argument\")\n        }\n        if (isAction(view)) {\n            die(\"Autorun does not accept actions since actions are untrackable\")\n        }\n    }\n\n    const name: string =\n        opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n    const runSync = !opts.scheduler && !opts.delay\n    let reaction: Reaction\n\n    if (runSync) {\n        // normal autorun\n        reaction = new Reaction(\n            name,\n            function (this: Reaction) {\n                this.track(reactionRunner)\n            },\n            opts.onError,\n            opts.requiresObservable\n        )\n    } else {\n        const scheduler = createSchedulerFromOptions(opts)\n        // debounced autorun\n        let isScheduled = false\n\n        reaction = new Reaction(\n            name,\n            () => {\n                if (!isScheduled) {\n                    isScheduled = true\n                    scheduler(() => {\n                        isScheduled = false\n                        if (!reaction.isDisposed) {\n                            reaction.track(reactionRunner)\n                        }\n                    })\n                }\n            },\n            opts.onError,\n            opts.requiresObservable\n        )\n    }\n\n    function reactionRunner() {\n        view(reaction)\n    }\n\n    if (!opts?.signal?.aborted) {\n        reaction.schedule_()\n    }\n    return reaction.getDisposer_(opts?.signal)\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n    fireImmediately?: FireImmediately\n    equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n    return opts.scheduler\n        ? opts.scheduler\n        : opts.delay\n        ? (f: Lambda) => setTimeout(f, opts.delay!)\n        : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n    expression: (r: IReactionPublic) => T,\n    effect: (\n        arg: T,\n        prev: FireImmediately extends true ? T | undefined : T,\n        r: IReactionPublic\n    ) => void,\n    opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n    if (__DEV__) {\n        if (!isFunction(expression) || !isFunction(effect)) {\n            die(\"First and second argument to reaction should be functions\")\n        }\n        if (!isPlainObject(opts)) {\n            die(\"Third argument of reactions should be an object\")\n        }\n    }\n    const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n    const effectAction = action(\n        name,\n        opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n    )\n    const runSync = !opts.scheduler && !opts.delay\n    const scheduler = createSchedulerFromOptions(opts)\n\n    let firstTime = true\n    let isScheduled = false\n    let value: T\n\n    const equals: IEqualsComparer<T> = (opts as any).compareStructural\n        ? comparer.structural\n        : opts.equals || comparer.default\n\n    const r = new Reaction(\n        name,\n        () => {\n            if (firstTime || runSync) {\n                reactionRunner()\n            } else if (!isScheduled) {\n                isScheduled = true\n                scheduler!(reactionRunner)\n            }\n        },\n        opts.onError,\n        opts.requiresObservable\n    )\n\n    function reactionRunner() {\n        isScheduled = false\n        if (r.isDisposed) {\n            return\n        }\n        let changed: boolean = false\n        const oldValue = value\n        r.track(() => {\n            const nextValue = allowStateChanges(false, () => expression(r))\n            changed = firstTime || !equals(value, nextValue)\n            value = nextValue\n        })\n\n        // This casting is nesessary as TS cannot infer proper type in current function implementation\n        type OldValue = FireImmediately extends true ? T | undefined : T\n        if (firstTime && opts.fireImmediately!) {\n            effectAction(value, oldValue as OldValue, r)\n        } else if (!firstTime && changed) {\n            effectAction(value, oldValue as OldValue, r)\n        }\n        firstTime = false\n    }\n\n    if (!opts?.signal?.aborted) {\n        r.schedule_()\n    }\n    return r.getDisposer_(opts?.signal)\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n    return function () {\n        try {\n            return baseFn.apply(this, arguments)\n        } catch (e) {\n            errorHandler.call(this, e)\n        }\n    }\n}\n","import {\n    IComputedValue,\n    IObservable,\n    IObservableArray,\n    Lambda,\n    ObservableMap,\n    getAtom,\n    ObservableSet,\n    isFunction,\n    IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n    value:\n        | IObservable\n        | IComputedValue<any>\n        | IObservableArray<any>\n        | ObservableMap<any, any>\n        | ObservableSet<any>\n        | IObservableValue<any>,\n    listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n    value: ObservableMap<K, V> | Object,\n    property: K,\n    listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n    return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n    value:\n        | IObservable\n        | IComputedValue<any>\n        | IObservableArray<any>\n        | ObservableMap<any, any>\n        | ObservableSet<any>\n        | IObservableValue<any>,\n    listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n    value: ObservableMap<K, V> | Object,\n    property: K,\n    listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n    return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n    const atom: IObservable =\n        typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n    const cb = isFunction(arg3) ? arg3 : arg2\n    const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n    if (atom[listenersKey]) {\n        atom[listenersKey]!.add(cb)\n    } else {\n        atom[listenersKey] = new Set<Lambda>([cb])\n    }\n\n    return function () {\n        const hookListeners = atom[listenersKey]\n        if (hookListeners) {\n            hookListeners.delete(cb)\n            if (hookListeners.size === 0) {\n                delete atom[listenersKey]\n            }\n        }\n    }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n    enforceActions?: \"never\" | \"always\" | \"observed\"\n    computedRequiresReaction?: boolean\n    /**\n     * Warn if you try to create to derivation / reactive context without accessing any observable.\n     */\n    reactionRequiresObservable?: boolean\n    /**\n     * Warn if observables are accessed outside a reactive context\n     */\n    observableRequiresReaction?: boolean\n    isolateGlobalState?: boolean\n    disableErrorBoundaries?: boolean\n    safeDescriptors?: boolean\n    reactionScheduler?: (f: () => void) => void\n    useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n    if (options.isolateGlobalState === true) {\n        isolateGlobalState()\n    }\n    const { useProxies, enforceActions } = options\n    if (useProxies !== undefined) {\n        globalState.useProxies =\n            useProxies === ALWAYS\n                ? true\n                : useProxies === NEVER\n                ? false\n                : typeof Proxy !== \"undefined\"\n    }\n    if (useProxies === \"ifavailable\") {\n        globalState.verifyProxies = true\n    }\n    if (enforceActions !== undefined) {\n        const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n        globalState.enforceActions = ea\n        globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n    }\n    ;[\n        \"computedRequiresReaction\",\n        \"reactionRequiresObservable\",\n        \"observableRequiresReaction\",\n        \"disableErrorBoundaries\",\n        \"safeDescriptors\"\n    ].forEach(key => {\n        if (key in options) {\n            globalState[key] = !!options[key]\n        }\n    })\n    globalState.allowStateReads = !globalState.observableRequiresReaction\n    if (__DEV__ && globalState.disableErrorBoundaries === true) {\n        console.warn(\n            \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n        )\n    }\n    if (options.reactionScheduler) {\n        setReactionScheduler(options.reactionScheduler)\n    }\n}\n","import {\n    CreateObservableOptions,\n    isObservableMap,\n    AnnotationsMap,\n    asObservableObject,\n    isPlainObject,\n    ObservableObjectAdministration,\n    isObservable,\n    die,\n    getOwnPropertyDescriptors,\n    $mobx,\n    ownKeys,\n    initObservable\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n    target: A,\n    properties: B,\n    annotations?: AnnotationsMap<B, never>,\n    options?: CreateObservableOptions\n): A & B {\n    if (__DEV__) {\n        if (arguments.length > 4) {\n            die(\"'extendObservable' expected 2-4 arguments\")\n        }\n        if (typeof target !== \"object\") {\n            die(\"'extendObservable' expects an object as first argument\")\n        }\n        if (isObservableMap(target)) {\n            die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n        }\n        if (!isPlainObject(properties)) {\n            die(`'extendObservable' only accepts plain objects as second argument`)\n        }\n        if (isObservable(properties) || isObservable(annotations)) {\n            die(`Extending an object with another observable (object) is not supported`)\n        }\n    }\n    // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n    const descriptors = getOwnPropertyDescriptors(properties)\n\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n        ownKeys(descriptors).forEach(key => {\n            adm.extend_(\n                key,\n                descriptors[key as any],\n                // must pass \"undefined\" for { key: undefined }\n                !annotations ? true : key in annotations ? annotations[key] : true\n            )\n        })\n    })\n\n    return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n    name: string\n    dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n    name: string\n    observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n    return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n    const result: IDependencyTree = {\n        name: node.name_\n    }\n    if (node.observing_ && node.observing_.length > 0) {\n        result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n    }\n    return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n    return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n    const result: IObserverTree = {\n        name: node.name_\n    }\n    if (hasObservers(node as any)) {\n        result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n    }\n    return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n    return Array.from(new Set(list))\n}\n","import {\n    action,\n    noop,\n    die,\n    isFunction,\n    Annotation,\n    isStringish,\n    storeAnnotation,\n    createFlowAnnotation,\n    createDecoratorAnnotation,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n    this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n    return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator, ClassMethodDecorator {\n    <R, Args extends any[]>(\n        generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n    ): (...args: Args) => CancellablePromise<R>\n    bound: Annotation & PropertyDecorator & ClassMethodDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n    function flow(arg1, arg2?) {\n        // @flow (2022.3 Decorators)\n        if (is20223Decorator(arg2)) {\n            return flowAnnotation.decorate_20223_(arg1, arg2)\n        }\n        // @flow\n        if (isStringish(arg2)) {\n            return storeAnnotation(arg1, arg2, flowAnnotation)\n        }\n        // flow(fn)\n        if (__DEV__ && arguments.length !== 1) {\n            die(`Flow expects single argument with generator function`)\n        }\n        const generator = arg1\n        const name = generator.name || \"<unnamed flow>\"\n\n        // Implementation based on https://github.com/tj/co/blob/master/index.js\n        const res = function () {\n            const ctx = this\n            const args = arguments\n            const runId = ++generatorId\n            const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n            let rejector: (error: any) => void\n            let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n            const promise = new Promise(function (resolve, reject) {\n                let stepId = 0\n                rejector = reject\n\n                function onFulfilled(res: any) {\n                    pendingPromise = undefined\n                    let ret\n                    try {\n                        ret = action(\n                            `${name} - runid: ${runId} - yield ${stepId++}`,\n                            gen.next\n                        ).call(gen, res)\n                    } catch (e) {\n                        return reject(e)\n                    }\n\n                    next(ret)\n                }\n\n                function onRejected(err: any) {\n                    pendingPromise = undefined\n                    let ret\n                    try {\n                        ret = action(\n                            `${name} - runid: ${runId} - yield ${stepId++}`,\n                            gen.throw!\n                        ).call(gen, err)\n                    } catch (e) {\n                        return reject(e)\n                    }\n                    next(ret)\n                }\n\n                function next(ret: any) {\n                    if (isFunction(ret?.then)) {\n                        // an async iterator\n                        ret.then(next, reject)\n                        return\n                    }\n                    if (ret.done) {\n                        return resolve(ret.value)\n                    }\n                    pendingPromise = Promise.resolve(ret.value) as any\n                    return pendingPromise!.then(onFulfilled, onRejected)\n                }\n\n                onFulfilled(undefined) // kick off the process\n            }) as any\n\n            promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n                try {\n                    if (pendingPromise) {\n                        cancelPromise(pendingPromise)\n                    }\n                    // Finally block can return (or yield) stuff..\n                    const res = gen.return!(undefined as any)\n                    // eat anything that promise would do, it's cancelled!\n                    const yieldedPromise = Promise.resolve(res.value)\n                    yieldedPromise.then(noop, noop)\n                    cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n                    // reject our original promise\n                    rejector(new FlowCancellationError())\n                } catch (e) {\n                    rejector(e) // there could be a throwing finally block\n                }\n            })\n            return promise\n        }\n        res.isMobXFlow = true\n        return res\n    } as any,\n    flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n    if (isFunction(promise.cancel)) {\n        promise.cancel()\n    }\n}\n\nexport function flowResult<T>(\n    result: T\n): T extends Generator<any, infer R, any>\n    ? CancellablePromise<R>\n    : T extends CancellablePromise<any>\n    ? T\n    : never {\n    return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n    return fn?.isMobXFlow === true\n}\n","import {\n    IObservableArray,\n    IObservableValue,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isObservableValue,\n    ObservableSet,\n    die,\n    isStringish\n} from \"../internal\"\n\nexport type ReadInterceptor<T> = (value: any) => T\n\n/** Experimental feature right now, tested indirectly via Mobx-State-Tree */\nexport function interceptReads<T>(value: IObservableValue<T>, handler: ReadInterceptor<T>): Lambda\nexport function interceptReads<T>(\n    observableArray: IObservableArray<T>,\n    handler: ReadInterceptor<T>\n): Lambda\nexport function interceptReads<K, V>(\n    observableMap: ObservableMap<K, V>,\n    handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads<V>(\n    observableSet: ObservableSet<V>,\n    handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads(\n    object: Object,\n    property: string,\n    handler: ReadInterceptor<any>\n): Lambda\nexport function interceptReads(thing, propOrHandler?, handler?): Lambda {\n    let target\n    if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n        target = getAdministration(thing)\n    } else if (isObservableObject(thing)) {\n        if (__DEV__ && !isStringish(propOrHandler)) {\n            return die(\n                `InterceptReads can only be used with a specific property, not with an object in general`\n            )\n        }\n        target = getAdministration(thing, propOrHandler)\n    } else if (__DEV__) {\n        return die(`Expected observable map, object or array as first array`)\n    }\n    if (__DEV__ && target.dehancer !== undefined) {\n        return die(`An intercept reader was already established`)\n    }\n    target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler\n    return () => {\n        target.dehancer = undefined\n    }\n}\n","import {\n    IArrayWillChange,\n    IArrayWillSplice,\n    IInterceptor,\n    IMapWillChange,\n    IObjectWillChange,\n    IObservableArray,\n    IObservableValue,\n    IValueWillChange,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    ObservableSet,\n    ISetWillChange,\n    isFunction\n} from \"../internal\"\n\nexport function intercept<T>(\n    value: IObservableValue<T>,\n    handler: IInterceptor<IValueWillChange<T>>\n): Lambda\nexport function intercept<T>(\n    observableArray: IObservableArray<T> | Array<T>,\n    handler: IInterceptor<IArrayWillChange<T> | IArrayWillSplice<T>>\n): Lambda\nexport function intercept<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    handler: IInterceptor<IMapWillChange<K, V>>\n): Lambda\nexport function intercept<V>(\n    observableSet: ObservableSet<V> | Set<V>,\n    handler: IInterceptor<ISetWillChange<V>>\n): Lambda\nexport function intercept<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    property: K,\n    handler: IInterceptor<IValueWillChange<V>>\n): Lambda\nexport function intercept(object: object, handler: IInterceptor<IObjectWillChange>): Lambda\nexport function intercept<T extends object, K extends keyof T>(\n    object: T,\n    property: K,\n    handler: IInterceptor<IValueWillChange<T[K]>>\n): Lambda\nexport function intercept(thing, propOrHandler?, handler?): Lambda {\n    if (isFunction(handler)) {\n        return interceptProperty(thing, propOrHandler, handler)\n    } else {\n        return interceptInterceptable(thing, propOrHandler)\n    }\n}\n\nfunction interceptInterceptable(thing, handler) {\n    return getAdministration(thing).intercept_(handler)\n}\n\nfunction interceptProperty(thing, property, handler) {\n    return getAdministration(thing, property).intercept_(handler)\n}\n","import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n    if (property === undefined) {\n        return isComputedValue(value)\n    }\n    if (isObservableObject(value) === false) {\n        return false\n    }\n    if (!value[$mobx].values_.has(property)) {\n        return false\n    }\n    const atom = getAtom(value, property)\n    return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n    if (__DEV__ && arguments.length > 1) {\n        return die(\n            `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n        )\n    }\n    return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n    if (__DEV__ && !isStringish(propName)) {\n        return die(`isComputed expected a property name as second argument`)\n    }\n    return _isComputed(value, propName)\n}\n","import {\n    $mobx,\n    isAtom,\n    isComputedValue,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isReaction,\n    die,\n    isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n    if (!value) {\n        return false\n    }\n    if (property !== undefined) {\n        if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n            return die(\n                \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n            )\n        }\n        if (isObservableObject(value)) {\n            return value[$mobx].values_.has(property)\n        }\n        return false\n    }\n    // For first check, see #701\n    return (\n        isObservableObject(value) ||\n        !!value[$mobx] ||\n        isAtom(value) ||\n        isReaction(value) ||\n        isComputedValue(value)\n    )\n}\n\nexport function isObservable(value: any): boolean {\n    if (__DEV__ && arguments.length !== 1) {\n        die(\n            `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n        )\n    }\n    return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n    if (__DEV__ && !isStringish(propName)) {\n        return die(`expected a property name as second argument`)\n    }\n    return _isObservable(value, propName)\n}\n","import {\n    $mobx,\n    IIsObservableObject,\n    IObservableArray,\n    ObservableMap,\n    ObservableSet,\n    ObservableObjectAdministration,\n    endBatch,\n    isObservableArray,\n    isObservableMap,\n    isObservableSet,\n    isObservableObject,\n    startBatch,\n    die\n} from \"../internal\"\n\nexport function keys<K>(map: ObservableMap<K, any>): ReadonlyArray<K>\nexport function keys<T>(ar: IObservableArray<T>): ReadonlyArray<number>\nexport function keys<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function keys<T extends Object>(obj: T): ReadonlyArray<PropertyKey>\nexport function keys(obj: any): any {\n    if (isObservableObject(obj)) {\n        return (\n            (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n        ).keys_()\n    }\n    if (isObservableMap(obj) || isObservableSet(obj)) {\n        return Array.from(obj.keys())\n    }\n    if (isObservableArray(obj)) {\n        return obj.map((_, index) => index)\n    }\n    die(5)\n}\n\nexport function values<K, T>(map: ObservableMap<K, T>): ReadonlyArray<T>\nexport function values<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function values<T>(ar: IObservableArray<T>): ReadonlyArray<T>\nexport function values<T = any>(obj: T): ReadonlyArray<T extends object ? T[keyof T] : any>\nexport function values(obj: any): string[] {\n    if (isObservableObject(obj)) {\n        return keys(obj).map(key => obj[key])\n    }\n    if (isObservableMap(obj)) {\n        return keys(obj).map(key => obj.get(key))\n    }\n    if (isObservableSet(obj)) {\n        return Array.from(obj.values())\n    }\n    if (isObservableArray(obj)) {\n        return obj.slice()\n    }\n    die(6)\n}\n\nexport function entries<K, T>(map: ObservableMap<K, T>): ReadonlyArray<[K, T]>\nexport function entries<T>(set: ObservableSet<T>): ReadonlyArray<[T, T]>\nexport function entries<T>(ar: IObservableArray<T>): ReadonlyArray<[number, T]>\nexport function entries<T = any>(\n    obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n    if (isObservableObject(obj)) {\n        return keys(obj).map(key => [key, obj[key]])\n    }\n    if (isObservableMap(obj)) {\n        return keys(obj).map(key => [key, obj.get(key)])\n    }\n    if (isObservableSet(obj)) {\n        return Array.from(obj.entries())\n    }\n    if (isObservableArray(obj)) {\n        return obj.map((key, index) => [index, key])\n    }\n    die(7)\n}\n\nexport function set<V>(obj: ObservableMap<PropertyKey, V>, values: { [key: string]: V })\nexport function set<K, V>(obj: ObservableMap<K, V>, key: K, value: V)\nexport function set<T>(obj: ObservableSet<T>, value: T)\nexport function set<T>(obj: IObservableArray<T>, index: number, value: T)\nexport function set<T extends Object>(obj: T, values: { [key: string]: any })\nexport function set<T extends Object>(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n    if (arguments.length === 2 && !isObservableSet(obj)) {\n        startBatch()\n        const values = key\n        try {\n            for (let key in values) {\n                set(obj, key, values[key])\n            }\n        } finally {\n            endBatch()\n        }\n        return\n    }\n    if (isObservableObject(obj)) {\n        ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n    } else if (isObservableMap(obj)) {\n        obj.set(key, value)\n    } else if (isObservableSet(obj)) {\n        obj.add(key)\n    } else if (isObservableArray(obj)) {\n        if (typeof key !== \"number\") {\n            key = parseInt(key, 10)\n        }\n        if (key < 0) {\n            die(`Invalid index: '${key}'`)\n        }\n        startBatch()\n        if (key >= obj.length) {\n            obj.length = key + 1\n        }\n        obj[key] = value\n        endBatch()\n    } else {\n        die(8)\n    }\n}\n\nexport function remove<K, V>(obj: ObservableMap<K, V>, key: K)\nexport function remove<T>(obj: ObservableSet<T>, key: T)\nexport function remove<T>(obj: IObservableArray<T>, index: number)\nexport function remove<T extends Object>(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n    if (isObservableObject(obj)) {\n        ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n    } else if (isObservableMap(obj)) {\n        obj.delete(key)\n    } else if (isObservableSet(obj)) {\n        obj.delete(key)\n    } else if (isObservableArray(obj)) {\n        if (typeof key !== \"number\") {\n            key = parseInt(key, 10)\n        }\n        obj.splice(key, 1)\n    } else {\n        die(9)\n    }\n}\n\nexport function has<K>(obj: ObservableMap<K, any>, key: K): boolean\nexport function has<T>(obj: ObservableSet<T>, key: T): boolean\nexport function has<T>(obj: IObservableArray<T>, index: number): boolean\nexport function has<T extends Object>(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].has_(key)\n    } else if (isObservableMap(obj)) {\n        return obj.has(key)\n    } else if (isObservableSet(obj)) {\n        return obj.has(key)\n    } else if (isObservableArray(obj)) {\n        return key >= 0 && key < obj.length\n    }\n    die(10)\n}\n\nexport function get<K, V>(obj: ObservableMap<K, V>, key: K): V | undefined\nexport function get<T>(obj: IObservableArray<T>, index: number): T | undefined\nexport function get<T extends Object>(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n    if (!has(obj, key)) {\n        return undefined\n    }\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].get_(key)\n    } else if (isObservableMap(obj)) {\n        return obj.get(key)\n    } else if (isObservableArray(obj)) {\n        return obj[key]\n    }\n    die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n    }\n    die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n    }\n    die(38)\n}\n","import {\n    IArrayDidChange,\n    IComputedValue,\n    IMapDidChange,\n    IObjectDidChange,\n    IObservableArray,\n    IObservableValue,\n    IValueDidChange,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    ObservableSet,\n    ISetDidChange,\n    isFunction\n} from \"../internal\"\n\nexport function observe<T>(\n    value: IObservableValue<T> | IComputedValue<T>,\n    listener: (change: IValueDidChange<T>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<T>(\n    observableArray: IObservableArray<T> | Array<T>,\n    listener: (change: IArrayDidChange<T>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<V>(\n    // ObservableSet/ObservableMap are required despite they implement Set/Map: https://github.com/mobxjs/mobx/pull/3180#discussion_r746542929\n    observableSet: ObservableSet<V> | Set<V>,\n    listener: (change: ISetDidChange<V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    listener: (change: IMapDidChange<K, V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    property: K,\n    listener: (change: IValueDidChange<V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe(\n    object: Object,\n    listener: (change: IObjectDidChange) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<T, K extends keyof T>(\n    object: T,\n    property: K,\n    listener: (change: IValueDidChange<T[K]>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {\n    if (isFunction(cbOrFire)) {\n        return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)\n    } else {\n        return observeObservable(thing, propOrCb, cbOrFire)\n    }\n}\n\nfunction observeObservable(thing, listener, fireImmediately: boolean) {\n    return getAdministration(thing).observe_(listener, fireImmediately)\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately: boolean) {\n    return getAdministration(thing, property).observe_(listener, fireImmediately)\n}\n","import {\n    isObservable,\n    isObservableArray,\n    isObservableValue,\n    isObservableMap,\n    isObservableSet,\n    isComputedValue,\n    die,\n    apiOwnKeys,\n    objectPrototype\n} from \"../internal\"\n\nfunction cache<K, V>(map: Map<any, any>, key: K, value: V): V {\n    map.set(key, value)\n    return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map<any, any>) {\n    if (\n        source == null ||\n        typeof source !== \"object\" ||\n        source instanceof Date ||\n        !isObservable(source)\n    ) {\n        return source\n    }\n\n    if (isObservableValue(source) || isComputedValue(source)) {\n        return toJSHelper(source.get(), __alreadySeen)\n    }\n    if (__alreadySeen.has(source)) {\n        return __alreadySeen.get(source)\n    }\n    if (isObservableArray(source)) {\n        const res = cache(__alreadySeen, source, new Array(source.length))\n        source.forEach((value, idx) => {\n            res[idx] = toJSHelper(value, __alreadySeen)\n        })\n        return res\n    }\n    if (isObservableSet(source)) {\n        const res = cache(__alreadySeen, source, new Set())\n        source.forEach(value => {\n            res.add(toJSHelper(value, __alreadySeen))\n        })\n        return res\n    }\n    if (isObservableMap(source)) {\n        const res = cache(__alreadySeen, source, new Map())\n        source.forEach((value, key) => {\n            res.set(key, toJSHelper(value, __alreadySeen))\n        })\n        return res\n    } else {\n        // must be observable object\n        const res = cache(__alreadySeen, source, {})\n        apiOwnKeys(source).forEach((key: any) => {\n            if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n                res[key] = toJSHelper(source[key], __alreadySeen)\n            }\n        })\n        return res\n    }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS<T>(source: T, options?: any): T {\n    if (__DEV__ && options) {\n        die(\"toJS no longer supports options\")\n    }\n    return toJSHelper(source, new Map())\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n    if (!__DEV__) {\n        return\n    }\n    let enterBreakPoint = false\n    if (typeof args[args.length - 1] === \"boolean\") {\n        enterBreakPoint = args.pop()\n    }\n    const derivation = getAtomFromArgs(args)\n    if (!derivation) {\n        return die(\n            `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n        )\n    }\n    if (derivation.isTracing_ === TraceMode.NONE) {\n        console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n    }\n    derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n    switch (args.length) {\n        case 0:\n            return globalState.trackingDerivation\n        case 1:\n            return getAtom(args[0])\n        case 2:\n            return getAtom(args[0], args[1])\n    }\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n    startBatch()\n    try {\n        return action.apply(thisArg)\n    } finally {\n        endBatch()\n    }\n}\n","import {\n    $mobx,\n    IReactionDisposer,\n    Lambda,\n    autorun,\n    createAction,\n    getNextId,\n    die,\n    allowStateChanges,\n    GenericAbortSignal\n} from \"../internal\"\n\nexport interface IWhenOptions {\n    name?: string\n    timeout?: number\n    onError?: (error: any) => void\n    signal?: GenericAbortSignal\n}\n\nexport function when(\n    predicate: () => boolean,\n    opts?: IWhenOptions\n): Promise<void> & { cancel(): void }\nexport function when(\n    predicate: () => boolean,\n    effect: Lambda,\n    opts?: IWhenOptions\n): IReactionDisposer\nexport function when(predicate: any, arg1?: any, arg2?: any): any {\n    if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\")) {\n        return whenPromise(predicate, arg1)\n    }\n    return _when(predicate, arg1, arg2 || {})\n}\n\nfunction _when(predicate: () => boolean, effect: Lambda, opts: IWhenOptions): IReactionDisposer {\n    let timeoutHandle: any\n    if (typeof opts.timeout === \"number\") {\n        const error = new Error(\"WHEN_TIMEOUT\")\n        timeoutHandle = setTimeout(() => {\n            if (!disposer[$mobx].isDisposed) {\n                disposer()\n                if (opts.onError) {\n                    opts.onError(error)\n                } else {\n                    throw error\n                }\n            }\n        }, opts.timeout)\n    }\n\n    opts.name = __DEV__ ? opts.name || \"When@\" + getNextId() : \"When\"\n    const effectAction = createAction(\n        __DEV__ ? opts.name + \"-effect\" : \"When-effect\",\n        effect as Function\n    )\n    // eslint-disable-next-line\n    var disposer = autorun(r => {\n        // predicate should not change state\n        let cond = allowStateChanges(false, predicate)\n        if (cond) {\n            r.dispose()\n            if (timeoutHandle) {\n                clearTimeout(timeoutHandle)\n            }\n            effectAction()\n        }\n    }, opts)\n    return disposer\n}\n\nfunction whenPromise(\n    predicate: () => boolean,\n    opts?: IWhenOptions\n): Promise<void> & { cancel(): void } {\n    if (__DEV__ && opts && opts.onError) {\n        return die(`the options 'onError' and 'promise' cannot be combined`)\n    }\n    if (opts?.signal?.aborted) {\n        return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), { cancel: () => null })\n    }\n    let cancel\n    let abort\n    const res = new Promise((resolve, reject) => {\n        let disposer = _when(predicate, resolve as Lambda, { ...opts, onError: reject })\n        cancel = () => {\n            disposer()\n            reject(new Error(\"WHEN_CANCELLED\"))\n        }\n        abort = () => {\n            disposer()\n            reject(new Error(\"WHEN_ABORTED\"))\n        }\n        opts?.signal?.addEventListener?.(\"abort\", abort)\n    }).finally(() => opts?.signal?.removeEventListener?.(\"abort\", abort))\n    ;(res as any).cancel = cancel\n    return res as any\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n    interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n    return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n    interceptable: IInterceptable<T>,\n    handler: IInterceptor<T>\n): Lambda {\n    const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n    interceptors.push(handler)\n    return once(() => {\n        const idx = interceptors.indexOf(handler)\n        if (idx !== -1) {\n            interceptors.splice(idx, 1)\n        }\n    })\n}\n\nexport function interceptChange<T>(\n    interceptable: IInterceptable<T | null>,\n    change: T | null\n): T | null {\n    const prevU = untrackedStart()\n    try {\n        // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n        const interceptors = [...(interceptable.interceptors_ || [])]\n        for (let i = 0, l = interceptors.length; i < l; i++) {\n            change = interceptors[i](change)\n            if (change && !(change as any).type) {\n                die(14)\n            }\n            if (!change) {\n                break\n            }\n        }\n        return change\n    } finally {\n        untrackedEnd(prevU)\n    }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n    changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n    return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n    const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n    listeners.push(handler)\n    return once(() => {\n        const idx = listeners.indexOf(handler)\n        if (idx !== -1) {\n            listeners.splice(idx, 1)\n        }\n    })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n    const prevU = untrackedStart()\n    let listeners = listenable.changeListeners_\n    if (!listeners) {\n        return\n    }\n    listeners = listeners.slice()\n    for (let i = 0, l = listeners.length; i < l; i++) {\n        listeners[i](change)\n    }\n    untrackedEnd(prevU)\n}\n","import {\n    $mobx,\n    asObservableObject,\n    AnnotationsMap,\n    CreateObservableOptions,\n    ObservableObjectAdministration,\n    collectStoredAnnotations,\n    isPlainObject,\n    isObservableObject,\n    die,\n    ownKeys,\n    extendObservable,\n    addHiddenProp,\n    storedAnnotationsSymbol,\n    initObservable\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\ntype MakeObservableOptions = Omit<CreateObservableOptions, \"proxy\">\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n    target: T,\n    annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n    options?: MakeObservableOptions\n): T {\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n        if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n            die(\n                `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n            )\n        }\n        // Default to decorators\n        annotations ??= collectStoredAnnotations(target)\n\n        // Annotate\n        ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n    })\n    return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n    target: T,\n    overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n    options?: MakeObservableOptions\n): T {\n    if (__DEV__) {\n        if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n            die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n        }\n        if (isObservableObject(target)) {\n            die(`makeAutoObservable can only be used on objects not already made observable`)\n        }\n    }\n\n    // Optimization: avoid visiting protos\n    // Assumes that annotation.make_/.extend_ works the same for plain objects\n    if (isPlainObject(target)) {\n        return extendObservable(target, target, overrides, options)\n    }\n\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n        // Optimization: cache keys on proto\n        // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n        if (!target[keysSymbol]) {\n            const proto = Object.getPrototypeOf(target)\n            const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n            keys.delete(\"constructor\")\n            keys.delete($mobx)\n            addHiddenProp(proto, keysSymbol, keys)\n        }\n\n        target[keysSymbol].forEach(key =>\n            adm.make_(\n                key,\n                // must pass \"undefined\" for { key: undefined }\n                !overrides ? true : key in overrides ? overrides[key] : true\n            )\n        )\n    })\n\n    return target\n}\n","import {\n    $mobx,\n    Atom,\n    EMPTY_ARRAY,\n    IAtom,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    addHiddenFinalProp,\n    checkIfStateModificationsAreAllowed,\n    createInstanceofPredicate,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isObject,\n    isSpyEnabled,\n    notifyListeners,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    assertProxies,\n    reserveArrayBuffer,\n    hasProp,\n    die,\n    globalState,\n    initObservable\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n    spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n    clear(): T[]\n    replace(newItems: T[]): T[]\n    remove(value: T): boolean\n    toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n    object: IObservableArray<T>\n    observableKind: \"array\"\n    debugObjectName: string\n    index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n    type: \"update\"\n    newValue: T\n    oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n    type: \"splice\"\n    added: T[]\n    addedCount: number\n    removed: T[]\n    removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n    object: IObservableArray<T>\n    index: number\n    type: \"update\"\n    newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n    object: IObservableArray<T>\n    index: number\n    type: \"splice\"\n    added: T[]\n    removedCount: number\n}\n\nconst arrayTraps = {\n    get(target, name) {\n        const adm: ObservableArrayAdministration = target[$mobx]\n        if (name === $mobx) {\n            return adm\n        }\n        if (name === \"length\") {\n            return adm.getArrayLength_()\n        }\n        if (typeof name === \"string\" && !isNaN(name as any)) {\n            return adm.get_(parseInt(name))\n        }\n        if (hasProp(arrayExtensions, name)) {\n            return arrayExtensions[name]\n        }\n        return target[name]\n    },\n    set(target, name, value): boolean {\n        const adm: ObservableArrayAdministration = target[$mobx]\n        if (name === \"length\") {\n            adm.setArrayLength_(value)\n        }\n        if (typeof name === \"symbol\" || isNaN(name)) {\n            target[name] = value\n        } else {\n            // numeric string\n            adm.set_(parseInt(name), value)\n        }\n        return true\n    },\n    preventExtensions() {\n        die(15)\n    }\n}\n\nexport class ObservableArrayAdministration\n    implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n    atom_: IAtom\n    readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n    interceptors_\n    changeListeners_\n    enhancer_: (newV: any, oldV: any | undefined) => any\n    dehancer: any\n    proxy_!: IObservableArray<any>\n    lastKnownLength_ = 0\n\n    constructor(\n        name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n        enhancer: IEnhancer<any>,\n        public owned_: boolean,\n        public legacyMode_: boolean\n    ) {\n        this.atom_ = new Atom(name)\n        this.enhancer_ = (newV, oldV) =>\n            enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n    }\n\n    dehanceValue_(value: any): any {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    dehanceValues_(values: any[]): any[] {\n        if (this.dehancer !== undefined && values.length > 0) {\n            return values.map(this.dehancer) as any\n        }\n        return values\n    }\n\n    intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n        return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n    }\n\n    observe_(\n        listener: (changeData: IArrayDidChange<any>) => void,\n        fireImmediately = false\n    ): Lambda {\n        if (fireImmediately) {\n            listener(<IArraySplice<any>>{\n                observableKind: \"array\",\n                object: this.proxy_ as any,\n                debugObjectName: this.atom_.name_,\n                type: \"splice\",\n                index: 0,\n                added: this.values_.slice(),\n                addedCount: this.values_.length,\n                removed: [],\n                removedCount: 0\n            })\n        }\n        return registerListener(this, listener)\n    }\n\n    getArrayLength_(): number {\n        this.atom_.reportObserved()\n        return this.values_.length\n    }\n\n    setArrayLength_(newLength: number) {\n        if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n            die(\"Out of range: \" + newLength)\n        }\n        let currentLength = this.values_.length\n        if (newLength === currentLength) {\n            return\n        } else if (newLength > currentLength) {\n            const newItems = new Array(newLength - currentLength)\n            for (let i = 0; i < newLength - currentLength; i++) {\n                newItems[i] = undefined\n            } // No Array.fill everywhere...\n            this.spliceWithArray_(currentLength, 0, newItems)\n        } else {\n            this.spliceWithArray_(newLength, currentLength - newLength)\n        }\n    }\n\n    updateArrayLength_(oldLength: number, delta: number) {\n        if (oldLength !== this.lastKnownLength_) {\n            die(16)\n        }\n        this.lastKnownLength_ += delta\n        if (this.legacyMode_ && delta > 0) {\n            reserveArrayBuffer(oldLength + delta + 1)\n        }\n    }\n\n    spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n        checkIfStateModificationsAreAllowed(this.atom_)\n        const length = this.values_.length\n\n        if (index === undefined) {\n            index = 0\n        } else if (index > length) {\n            index = length\n        } else if (index < 0) {\n            index = Math.max(0, length + index)\n        }\n\n        if (arguments.length === 1) {\n            deleteCount = length - index\n        } else if (deleteCount === undefined || deleteCount === null) {\n            deleteCount = 0\n        } else {\n            deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n        }\n\n        if (newItems === undefined) {\n            newItems = EMPTY_ARRAY\n        }\n\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n                object: this.proxy_ as any,\n                type: SPLICE,\n                index,\n                removedCount: deleteCount,\n                added: newItems\n            })\n            if (!change) {\n                return EMPTY_ARRAY\n            }\n            deleteCount = change.removedCount\n            newItems = change.added\n        }\n\n        newItems =\n            newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n        if (this.legacyMode_ || __DEV__) {\n            const lengthDelta = newItems.length - deleteCount\n            this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n        }\n        const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n        if (deleteCount !== 0 || newItems.length !== 0) {\n            this.notifyArraySplice_(index, newItems, res)\n        }\n        return this.dehanceValues_(res)\n    }\n\n    spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n        if (newItems.length < MAX_SPLICE_SIZE) {\n            return this.values_.splice(index, deleteCount, ...newItems)\n        } else {\n            // The items removed by the splice\n            const res = this.values_.slice(index, index + deleteCount)\n            // The items that that should remain at the end of the array\n            let oldItems = this.values_.slice(index + deleteCount)\n            // New length is the previous length + addition count - deletion count\n            this.values_.length += newItems.length - deleteCount\n            for (let i = 0; i < newItems.length; i++) {\n                this.values_[index + i] = newItems[i]\n            }\n            for (let i = 0; i < oldItems.length; i++) {\n                this.values_[index + newItems.length + i] = oldItems[i]\n            }\n            return res\n        }\n    }\n\n    notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n        const notifySpy = !this.owned_ && isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IArrayDidChange | null =\n            notify || notifySpy\n                ? ({\n                      observableKind: \"array\",\n                      object: this.proxy_,\n                      type: UPDATE,\n                      debugObjectName: this.atom_.name_,\n                      index,\n                      newValue,\n                      oldValue\n                  } as const)\n                : null\n\n        // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n        // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change!)\n        }\n        this.atom_.reportChanged()\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    notifyArraySplice_(index: number, added: any[], removed: any[]) {\n        const notifySpy = !this.owned_ && isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IArraySplice | null =\n            notify || notifySpy\n                ? ({\n                      observableKind: \"array\",\n                      object: this.proxy_,\n                      debugObjectName: this.atom_.name_,\n                      type: SPLICE,\n                      index,\n                      removed,\n                      added,\n                      removedCount: removed.length,\n                      addedCount: added.length\n                  } as const)\n                : null\n\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change!)\n        }\n        this.atom_.reportChanged()\n        // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    get_(index: number): any | undefined {\n        if (this.legacyMode_ && index >= this.values_.length) {\n            console.warn(\n                __DEV__\n                    ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n                    : `[mobx] Out of bounds read: ${index}`\n            )\n            return undefined\n        }\n        this.atom_.reportObserved()\n        return this.dehanceValue_(this.values_[index])\n    }\n\n    set_(index: number, newValue: any) {\n        const values = this.values_\n        if (this.legacyMode_ && index > values.length) {\n            // out of bounds\n            die(17, index, values.length)\n        }\n        if (index < values.length) {\n            // update at index in range\n            checkIfStateModificationsAreAllowed(this.atom_)\n            const oldValue = values[index]\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IArrayWillChange<any>>(this as any, {\n                    type: UPDATE,\n                    object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n                    index,\n                    newValue\n                })\n                if (!change) {\n                    return\n                }\n                newValue = change.newValue\n            }\n            newValue = this.enhancer_(newValue, oldValue)\n            const changed = newValue !== oldValue\n            if (changed) {\n                values[index] = newValue\n                this.notifyArrayChildUpdate_(index, newValue, oldValue)\n            }\n        } else {\n            // For out of bound index, we don't create an actual sparse array,\n            // but rather fill the holes with undefined (same as setArrayLength_).\n            // This could be considered a bug.\n            const newItems = new Array(index + 1 - values.length)\n            for (let i = 0; i < newItems.length - 1; i++) {\n                newItems[i] = undefined\n            } // No Array.fill everywhere...\n            newItems[newItems.length - 1] = newValue\n            this.spliceWithArray_(values.length, 0, newItems)\n        }\n    }\n}\n\nexport function createObservableArray<T>(\n    initialValues: T[] | undefined,\n    enhancer: IEnhancer<T>,\n    name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n    owned = false\n): IObservableArray<T> {\n    assertProxies()\n    return initObservable(() => {\n        const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n        addHiddenFinalProp(adm.values_, $mobx, adm)\n        const proxy = new Proxy(adm.values_, arrayTraps) as any\n        adm.proxy_ = proxy\n        if (initialValues && initialValues.length) {\n            adm.spliceWithArray_(0, 0, initialValues)\n        }\n        return proxy\n    })\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n    clear(): any[] {\n        return this.splice(0)\n    },\n\n    replace(newItems: any[]) {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        return adm.spliceWithArray_(0, adm.values_.length, newItems)\n    },\n\n    // Used by JSON.stringify\n    toJSON(): any[] {\n        return this.slice()\n    },\n\n    /*\n     * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n     * since these functions alter the inner structure of the array, the have side effects.\n     * Because the have side effects, they should not be used in computed function,\n     * and for that reason the do not call dependencyState.notifyObserved\n     */\n    splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        switch (arguments.length) {\n            case 0:\n                return []\n            case 1:\n                return adm.spliceWithArray_(index)\n            case 2:\n                return adm.spliceWithArray_(index, deleteCount)\n        }\n        return adm.spliceWithArray_(index, deleteCount, newItems)\n    },\n\n    spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n        return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n            index,\n            deleteCount,\n            newItems\n        )\n    },\n\n    push(...items: any[]): number {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.spliceWithArray_(adm.values_.length, 0, items)\n        return adm.values_.length\n    },\n\n    pop() {\n        return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n    },\n\n    shift() {\n        return this.splice(0, 1)[0]\n    },\n\n    unshift(...items: any[]): number {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.spliceWithArray_(0, 0, items)\n        return adm.values_.length\n    },\n\n    reverse(): any[] {\n        // reverse by default mutates in place before returning the result\n        // which makes it both a 'derivation' and a 'mutation'.\n        if (globalState.trackingDerivation) {\n            die(37, \"reverse\")\n        }\n        this.replace(this.slice().reverse())\n        return this\n    },\n\n    sort(): any[] {\n        // sort by default mutates in place before returning the result\n        // which goes against all good practices. Let's not change the array in place!\n        if (globalState.trackingDerivation) {\n            die(37, \"sort\")\n        }\n        const copy = this.slice()\n        copy.sort.apply(copy, arguments)\n        this.replace(copy)\n        return this\n    },\n\n    remove(value: any): boolean {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n        if (idx > -1) {\n            this.splice(idx, 1)\n            return true\n        }\n        return false\n    }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc)\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\naddArrayExtension(\"toSorted\", simpleFunc)\naddArrayExtension(\"toSpliced\", simpleFunc)\naddArrayExtension(\"with\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"findLast\", mapLikeFunc)\naddArrayExtension(\"findLastIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\naddArrayExtension(\"toReversed\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n    if (typeof Array.prototype[funcName] === \"function\") {\n        arrayExtensions[funcName] = funcFactory(funcName)\n    }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n    return function () {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        return dehancedValues[funcName].apply(dehancedValues, arguments)\n    }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction mapLikeFunc(funcName) {\n    return function (callback, thisArg) {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        return dehancedValues[funcName]((element, index) => {\n            return callback.call(thisArg, element, index, this)\n        })\n    }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n    return function () {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        // #2432 - reduce behavior depends on arguments.length\n        const callback = arguments[0]\n        arguments[0] = (accumulator, currentValue, index) => {\n            return callback(accumulator, currentValue, index, this)\n        }\n        return dehancedValues[funcName].apply(dehancedValues, arguments)\n    }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n    \"ObservableArrayAdministration\",\n    ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n    return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import {\n    $mobx,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    ObservableValue,\n    checkIfStateModificationsAreAllowed,\n    createAtom,\n    createInstanceofPredicate,\n    deepEnhancer,\n    getNextId,\n    getPlainObjectKeys,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isES6Map,\n    isPlainES6Map,\n    isPlainObject,\n    isSpyEnabled,\n    makeIterable,\n    notifyListeners,\n    referenceEnhancer,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    stringifyKey,\n    transaction,\n    untracked,\n    onBecomeUnobserved,\n    globalState,\n    die,\n    isFunction,\n    UPDATE,\n    IAtom,\n    PureSpyEvent,\n    initObservable\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n    [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IReadonlyMapEntry<K = any, V = any> = readonly [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\nexport type IReadonlyMapEntries<K = any, V = any> = IReadonlyMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n    | {\n          object: ObservableMap<K, V>\n          name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n          type: \"update\"\n          newValue: V\n          oldValue: V\n      }\n    | {\n          object: ObservableMap<K, V>\n          name: K\n          type: \"add\"\n          newValue: V\n      }\n    | {\n          object: ObservableMap<K, V>\n          name: K\n          type: \"delete\"\n          oldValue: V\n      }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n    object: ObservableMap<K, V>\n    type: \"update\" | \"add\" | \"delete\"\n    name: K\n    newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n    | IMapEntries<K, V>\n    | IReadonlyMapEntries<K, V>\n    | IKeyValueMap<V>\n    | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n    implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable\n{\n    [$mobx] = ObservableMapMarker\n    data_!: Map<K, ObservableValue<V>>\n    hasMap_!: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n    keysAtom_!: IAtom\n    interceptors_\n    changeListeners_\n    dehancer: any\n\n    constructor(\n        initialData?: IObservableMapInitialValues<K, V>,\n        public enhancer_: IEnhancer<V> = deepEnhancer,\n        public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n    ) {\n        if (!isFunction(Map)) {\n            die(18)\n        }\n        initObservable(() => {\n            this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n            this.data_ = new Map()\n            this.hasMap_ = new Map()\n            if (initialData) {\n                this.merge(initialData)\n            }\n        })\n    }\n\n    private has_(key: K): boolean {\n        return this.data_.has(key)\n    }\n\n    has(key: K): boolean {\n        if (!globalState.trackingDerivation) {\n            return this.has_(key)\n        }\n\n        let entry = this.hasMap_.get(key)\n        if (!entry) {\n            const newEntry = (entry = new ObservableValue(\n                this.has_(key),\n                referenceEnhancer,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n                false\n            ))\n            this.hasMap_.set(key, newEntry)\n            onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n        }\n\n        return entry.get()\n    }\n\n    set(key: K, value: V) {\n        const hasKey = this.has_(key)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IMapWillChange<K, V>>(this, {\n                type: hasKey ? UPDATE : ADD,\n                object: this,\n                newValue: value,\n                name: key\n            })\n            if (!change) {\n                return this\n            }\n            value = change.newValue!\n        }\n        if (hasKey) {\n            this.updateValue_(key, value)\n        } else {\n            this.addValue_(key, value)\n        }\n        return this\n    }\n\n    delete(key: K): boolean {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IMapWillChange<K, V>>(this, {\n                type: DELETE,\n                object: this,\n                name: key\n            })\n            if (!change) {\n                return false\n            }\n        }\n        if (this.has_(key)) {\n            const notifySpy = isSpyEnabled()\n            const notify = hasListeners(this)\n            const change: IMapDidChange<K, V> | null =\n                notify || notifySpy\n                    ? {\n                          observableKind: \"map\",\n                          debugObjectName: this.name_,\n                          type: DELETE,\n                          object: this,\n                          oldValue: (<any>this.data_.get(key)).value_,\n                          name: key\n                      }\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change! as PureSpyEvent)\n            } // TODO fix type\n            transaction(() => {\n                this.keysAtom_.reportChanged()\n                this.hasMap_.get(key)?.setNewValue_(false)\n                const observable = this.data_.get(key)!\n                observable.setNewValue_(undefined as any)\n                this.data_.delete(key)\n            })\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n            return true\n        }\n        return false\n    }\n\n    private updateValue_(key: K, newValue: V | undefined) {\n        const observable = this.data_.get(key)!\n        newValue = (observable as any).prepareNewValue_(newValue) as V\n        if (newValue !== globalState.UNCHANGED) {\n            const notifySpy = isSpyEnabled()\n            const notify = hasListeners(this)\n            const change: IMapDidChange<K, V> | null =\n                notify || notifySpy\n                    ? {\n                          observableKind: \"map\",\n                          debugObjectName: this.name_,\n                          type: UPDATE,\n                          object: this,\n                          oldValue: (observable as any).value_,\n                          name: key,\n                          newValue\n                      }\n                    : null\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change! as PureSpyEvent)\n            } // TODO fix type\n            observable.setNewValue_(newValue as V)\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n    }\n\n    private addValue_(key: K, newValue: V) {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        transaction(() => {\n            const observable = new ObservableValue(\n                newValue,\n                this.enhancer_,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n                false\n            )\n            this.data_.set(key, observable)\n            newValue = (observable as any).value_ // value might have been changed\n            this.hasMap_.get(key)?.setNewValue_(true)\n            this.keysAtom_.reportChanged()\n        })\n        const notifySpy = isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IMapDidChange<K, V> | null =\n            notify || notifySpy\n                ? {\n                      observableKind: \"map\",\n                      debugObjectName: this.name_,\n                      type: ADD,\n                      object: this,\n                      name: key,\n                      newValue\n                  }\n                : null\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change! as PureSpyEvent)\n        } // TODO fix type\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    get(key: K): V | undefined {\n        if (this.has(key)) {\n            return this.dehanceValue_(this.data_.get(key)!.get())\n        }\n        return this.dehanceValue_(undefined)\n    }\n\n    private dehanceValue_<X extends V | undefined>(value: X): X {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    keys(): IterableIterator<K> {\n        this.keysAtom_.reportObserved()\n        return this.data_.keys()\n    }\n\n    values(): IterableIterator<V> {\n        const self = this\n        const keys = this.keys()\n        return makeIterable({\n            next() {\n                const { done, value } = keys.next()\n                return {\n                    done,\n                    value: done ? (undefined as any) : self.get(value)\n                }\n            }\n        })\n    }\n\n    entries(): IterableIterator<IMapEntry<K, V>> {\n        const self = this\n        const keys = this.keys()\n        return makeIterable({\n            next() {\n                const { done, value } = keys.next()\n                return {\n                    done,\n                    value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n                }\n            }\n        })\n    }\n\n    [Symbol.iterator]() {\n        return this.entries()\n    }\n\n    forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n        for (const [key, value] of this) {\n            callback.call(thisArg, value, key, this)\n        }\n    }\n\n    /** Merge another object into this object, returns this. */\n    merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n        if (isObservableMap(other)) {\n            other = new Map(other)\n        }\n        transaction(() => {\n            if (isPlainObject(other)) {\n                getPlainObjectKeys(other).forEach((key: any) =>\n                    this.set(key as K, (other as IKeyValueMap)[key])\n                )\n            } else if (Array.isArray(other)) {\n                other.forEach(([key, value]) => this.set(key, value))\n            } else if (isES6Map(other)) {\n                if (!isPlainES6Map(other)) {\n                    die(19, other)\n                }\n                other.forEach((value, key) => this.set(key, value))\n            } else if (other !== null && other !== undefined) {\n                die(20, other)\n            }\n        })\n        return this\n    }\n\n    clear() {\n        transaction(() => {\n            untracked(() => {\n                for (const key of this.keys()) {\n                    this.delete(key)\n                }\n            })\n        })\n    }\n\n    replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n        // Implementation requirements:\n        // - respect ordering of replacement map\n        // - allow interceptors to run and potentially prevent individual operations\n        // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n        // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n        // - note that result map may differ from replacement map due to the interceptors\n        transaction(() => {\n            // Convert to map so we can do quick key lookups\n            const replacementMap = convertToMap(values)\n            const orderedData = new Map()\n            // Used for optimization\n            let keysReportChangedCalled = false\n            // Delete keys that don't exist in replacement map\n            // if the key deletion is prevented by interceptor\n            // add entry at the beginning of the result map\n            for (const key of this.data_.keys()) {\n                // Concurrently iterating/deleting keys\n                // iterator should handle this correctly\n                if (!replacementMap.has(key)) {\n                    const deleted = this.delete(key)\n                    // Was the key removed?\n                    if (deleted) {\n                        // _keysAtom.reportChanged() was already called\n                        keysReportChangedCalled = true\n                    } else {\n                        // Delete prevented by interceptor\n                        const value = this.data_.get(key)\n                        orderedData.set(key, value)\n                    }\n                }\n            }\n            // Merge entries\n            for (const [key, value] of replacementMap.entries()) {\n                // We will want to know whether a new key is added\n                const keyExisted = this.data_.has(key)\n                // Add or update value\n                this.set(key, value)\n                // The addition could have been prevent by interceptor\n                if (this.data_.has(key)) {\n                    // The update could have been prevented by interceptor\n                    // and also we want to preserve existing values\n                    // so use value from _data map (instead of replacement map)\n                    const value = this.data_.get(key)\n                    orderedData.set(key, value)\n                    // Was a new key added?\n                    if (!keyExisted) {\n                        // _keysAtom.reportChanged() was already called\n                        keysReportChangedCalled = true\n                    }\n                }\n            }\n            // Check for possible key order change\n            if (!keysReportChangedCalled) {\n                if (this.data_.size !== orderedData.size) {\n                    // If size differs, keys are definitely modified\n                    this.keysAtom_.reportChanged()\n                } else {\n                    const iter1 = this.data_.keys()\n                    const iter2 = orderedData.keys()\n                    let next1 = iter1.next()\n                    let next2 = iter2.next()\n                    while (!next1.done) {\n                        if (next1.value !== next2.value) {\n                            this.keysAtom_.reportChanged()\n                            break\n                        }\n                        next1 = iter1.next()\n                        next2 = iter2.next()\n                    }\n                }\n            }\n            // Use correctly ordered map\n            this.data_ = orderedData\n        })\n        return this\n    }\n\n    get size(): number {\n        this.keysAtom_.reportObserved()\n        return this.data_.size\n    }\n\n    toString(): string {\n        return \"[object ObservableMap]\"\n    }\n\n    toJSON(): [K, V][] {\n        return Array.from(this)\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Map\"\n    }\n\n    /**\n     * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n     * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n     * for callback details\n     */\n    observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n        }\n        return registerListener(this, listener)\n    }\n\n    intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n    thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n    if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n        return dataStructure\n    } else if (Array.isArray(dataStructure)) {\n        return new Map(dataStructure)\n    } else if (isPlainObject(dataStructure)) {\n        const map = new Map()\n        for (const key in dataStructure) {\n            map.set(key, dataStructure[key])\n        }\n        return map\n    } else {\n        return die(21, dataStructure)\n    }\n}\n","import {\n    $mobx,\n    createAtom,\n    deepEnhancer,\n    getNextId,\n    IEnhancer,\n    isSpyEnabled,\n    hasListeners,\n    IListenable,\n    registerListener,\n    Lambda,\n    spyReportStart,\n    notifyListeners,\n    spyReportEnd,\n    createInstanceofPredicate,\n    hasInterceptors,\n    interceptChange,\n    IInterceptable,\n    IInterceptor,\n    registerInterceptor,\n    checkIfStateModificationsAreAllowed,\n    untracked,\n    makeIterable,\n    transaction,\n    isES6Set,\n    IAtom,\n    DELETE,\n    ADD,\n    die,\n    isFunction,\n    initObservable\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n    | {\n          object: ObservableSet<T>\n          observableKind: \"set\"\n          debugObjectName: string\n          type: \"add\"\n          newValue: T\n      }\n    | {\n          object: ObservableSet<T>\n          observableKind: \"set\"\n          debugObjectName: string\n          type: \"delete\"\n          oldValue: T\n      }\n\nexport type ISetWillChange<T = any> =\n    | {\n          type: \"delete\"\n          object: ObservableSet<T>\n          oldValue: T\n      }\n    | {\n          type: \"add\"\n          object: ObservableSet<T>\n          newValue: T\n      }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n    [$mobx] = ObservableSetMarker\n    private data_: Set<any> = new Set()\n    atom_!: IAtom\n    changeListeners_\n    interceptors_\n    dehancer: any\n    enhancer_: (newV: any, oldV: any | undefined) => any\n\n    constructor(\n        initialData?: IObservableSetInitialValues<T>,\n        enhancer: IEnhancer<T> = deepEnhancer,\n        public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n    ) {\n        if (!isFunction(Set)) {\n            die(22)\n        }\n        this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n        initObservable(() => {\n            this.atom_ = createAtom(this.name_)\n            if (initialData) {\n                this.replace(initialData)\n            }\n        })\n    }\n\n    private dehanceValue_<X extends T | undefined>(value: X): X {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    clear() {\n        transaction(() => {\n            untracked(() => {\n                for (const value of this.data_.values()) {\n                    this.delete(value)\n                }\n            })\n        })\n    }\n\n    forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n        for (const value of this) {\n            callbackFn.call(thisArg, value, value, this)\n        }\n    }\n\n    get size() {\n        this.atom_.reportObserved()\n        return this.data_.size\n    }\n\n    add(value: T) {\n        checkIfStateModificationsAreAllowed(this.atom_)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<ISetWillChange<T>>(this, {\n                type: ADD,\n                object: this,\n                newValue: value\n            })\n            if (!change) {\n                return this\n            }\n            // ideally, value = change.value would be done here, so that values can be\n            // changed by interceptor. Same applies for other Set and Map api's.\n        }\n        if (!this.has(value)) {\n            transaction(() => {\n                this.data_.add(this.enhancer_(value, undefined))\n                this.atom_.reportChanged()\n            })\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const notify = hasListeners(this)\n            const change =\n                notify || notifySpy\n                    ? <ISetDidChange<T>>{\n                          observableKind: \"set\",\n                          debugObjectName: this.name_,\n                          type: ADD,\n                          object: this,\n                          newValue: value\n                      }\n                    : null\n            if (notifySpy && __DEV__) {\n                spyReportStart(change!)\n            }\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (notifySpy && __DEV__) {\n                spyReportEnd()\n            }\n        }\n\n        return this\n    }\n\n    delete(value: T) {\n        if (hasInterceptors(this)) {\n            const change = interceptChange<ISetWillChange<T>>(this, {\n                type: DELETE,\n                object: this,\n                oldValue: value\n            })\n            if (!change) {\n                return false\n            }\n        }\n        if (this.has(value)) {\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const notify = hasListeners(this)\n            const change =\n                notify || notifySpy\n                    ? <ISetDidChange<T>>{\n                          observableKind: \"set\",\n                          debugObjectName: this.name_,\n                          type: DELETE,\n                          object: this,\n                          oldValue: value\n                      }\n                    : null\n\n            if (notifySpy && __DEV__) {\n                spyReportStart(change!)\n            }\n            transaction(() => {\n                this.atom_.reportChanged()\n                this.data_.delete(value)\n            })\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (notifySpy && __DEV__) {\n                spyReportEnd()\n            }\n            return true\n        }\n        return false\n    }\n\n    has(value: T) {\n        this.atom_.reportObserved()\n        return this.data_.has(this.dehanceValue_(value))\n    }\n\n    entries() {\n        let nextIndex = 0\n        const keys = Array.from(this.keys())\n        const values = Array.from(this.values())\n        return makeIterable<[T, T]>({\n            next() {\n                const index = nextIndex\n                nextIndex += 1\n                return index < values.length\n                    ? { value: [keys[index], values[index]], done: false }\n                    : { done: true }\n            }\n        } as any)\n    }\n\n    keys(): IterableIterator<T> {\n        return this.values()\n    }\n\n    values(): IterableIterator<T> {\n        this.atom_.reportObserved()\n        const self = this\n        let nextIndex = 0\n        const observableValues = Array.from(this.data_.values())\n        return makeIterable<T>({\n            next() {\n                return nextIndex < observableValues.length\n                    ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n                    : { done: true }\n            }\n        } as any)\n    }\n\n    intersection<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T & U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.intersection(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.intersection(otherSet)\n        }\n    }\n\n    union<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.union(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.union(otherSet)\n        }\n    }\n\n    difference<U>(otherSet: ReadonlySetLike<U>): Set<T> {\n        return new Set(this).difference(otherSet)\n    }\n\n    symmetricDifference<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.symmetricDifference(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.symmetricDifference(otherSet)\n        }\n    }\n\n    isSubsetOf(otherSet: ReadonlySetLike<unknown>): boolean {\n        return new Set(this).isSubsetOf(otherSet)\n    }\n\n    isSupersetOf(otherSet: ReadonlySetLike<unknown>): boolean {\n        return new Set(this).isSupersetOf(otherSet)\n    }\n\n    isDisjointFrom(otherSet: ReadonlySetLike<unknown> | Set<unknown>): boolean {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.isDisjointFrom(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.isDisjointFrom(otherSet)\n        }\n    }\n\n    replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n        if (isObservableSet(other)) {\n            other = new Set(other)\n        }\n\n        transaction(() => {\n            if (Array.isArray(other)) {\n                this.clear()\n                other.forEach(value => this.add(value))\n            } else if (isES6Set(other)) {\n                this.clear()\n                other.forEach(value => this.add(value))\n            } else if (other !== null && other !== undefined) {\n                die(\"Cannot initialize set from \" + other)\n            }\n        })\n\n        return this\n    }\n    observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        // ... 'fireImmediately' could also be true?\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n        }\n        return registerListener(this, listener)\n    }\n\n    intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    toJSON(): T[] {\n        return Array.from(this)\n    }\n\n    toString(): string {\n        return \"[object ObservableSet]\"\n    }\n\n    [Symbol.iterator]() {\n        return this.values()\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Set\"\n    }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n    thing: any\n) => thing is ObservableSet<any>\n","import {\n    CreateObservableOptions,\n    getAnnotationFromOptions,\n    propagateChanged,\n    isAnnotation,\n    $mobx,\n    Atom,\n    Annotation,\n    ComputedValue,\n    IAtom,\n    IComputedValueOptions,\n    IEnhancer,\n    IInterceptable,\n    IListenable,\n    Lambda,\n    ObservableValue,\n    addHiddenProp,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isObject,\n    isPlainObject,\n    isSpyEnabled,\n    notifyListeners,\n    referenceEnhancer,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    stringifyKey,\n    globalState,\n    ADD,\n    UPDATE,\n    die,\n    hasProp,\n    getDescriptor,\n    storedAnnotationsSymbol,\n    ownKeys,\n    isOverride,\n    defineProperty,\n    autoAnnotation,\n    getAdministration,\n    getDebugName,\n    objectPrototype,\n    MakeResult,\n    checkIfStateModificationsAreAllowed\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n    observableKind: \"object\"\n    name: PropertyKey\n    object: T\n    debugObjectName: string\n} & (\n    | {\n          type: \"add\"\n          newValue: any\n      }\n    | {\n          type: \"update\"\n          oldValue: any\n          newValue: any\n      }\n    | {\n          type: \"remove\"\n          oldValue: any\n      }\n)\n\nexport type IObjectWillChange<T = any> =\n    | {\n          object: T\n          type: \"update\" | \"add\"\n          name: PropertyKey\n          newValue: any\n      }\n    | {\n          object: T\n          type: \"remove\"\n          name: PropertyKey\n      }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n    implements IInterceptable<IObjectWillChange>, IListenable\n{\n    keysAtom_: IAtom\n    changeListeners_\n    interceptors_\n    proxy_: any\n    isPlainObject_: boolean\n    appliedAnnotations_?: object\n    private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n    constructor(\n        public target_: any,\n        public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n        public name_: string,\n        // Used anytime annotation is not explicitely provided\n        public defaultAnnotation_: Annotation = autoAnnotation\n    ) {\n        this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n        // Optimization: we use this frequently\n        this.isPlainObject_ = isPlainObject(this.target_)\n        if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n            die(`defaultAnnotation must be valid annotation`)\n        }\n        if (__DEV__) {\n            // Prepare structure for tracking which fields were already annotated\n            this.appliedAnnotations_ = {}\n        }\n    }\n\n    getObservablePropValue_(key: PropertyKey): any {\n        return this.values_.get(key)!.get()\n    }\n\n    setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n        const observable = this.values_.get(key)\n        if (observable instanceof ComputedValue) {\n            observable.set(newValue)\n            return true\n        }\n\n        // intercept\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IObjectWillChange>(this, {\n                type: UPDATE,\n                object: this.proxy_ || this.target_,\n                name: key,\n                newValue\n            })\n            if (!change) {\n                return null\n            }\n            newValue = (change as any).newValue\n        }\n        newValue = (observable as any).prepareNewValue_(newValue)\n\n        // notify spy & observers\n        if (newValue !== globalState.UNCHANGED) {\n            const notify = hasListeners(this)\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const change: IObjectDidChange | null =\n                notify || notifySpy\n                    ? {\n                          type: UPDATE,\n                          observableKind: \"object\",\n                          debugObjectName: this.name_,\n                          object: this.proxy_ || this.target_,\n                          oldValue: (observable as any).value_,\n                          name: key,\n                          newValue\n                      }\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change!)\n            }\n            ;(observable as ObservableValue<any>).setNewValue_(newValue)\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n        return true\n    }\n\n    get_(key: PropertyKey): any {\n        if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n            // Key doesn't exist yet, subscribe for it in case it's added later\n            this.has_(key)\n        }\n        return this.target_[key]\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {any} value\n     * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n        // Don't use .has(key) - we care about own\n        if (hasProp(this.target_, key)) {\n            // Existing prop\n            if (this.values_.has(key)) {\n                // Observable (can be intercepted)\n                return this.setObservablePropValue_(key, value)\n            } else if (proxyTrap) {\n                // Non-observable - proxy\n                return Reflect.set(this.target_, key, value)\n            } else {\n                // Non-observable\n                this.target_[key] = value\n                return true\n            }\n        } else {\n            // New prop\n            return this.extend_(\n                key,\n                { value, enumerable: true, writable: true, configurable: true },\n                this.defaultAnnotation_,\n                proxyTrap\n            )\n        }\n    }\n\n    // Trap for \"in\"\n    has_(key: PropertyKey): boolean {\n        if (!globalState.trackingDerivation) {\n            // Skip key subscription outside derivation\n            return key in this.target_\n        }\n        this.pendingKeys_ ||= new Map()\n        let entry = this.pendingKeys_.get(key)\n        if (!entry) {\n            entry = new ObservableValue(\n                key in this.target_,\n                referenceEnhancer,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n                false\n            )\n            this.pendingKeys_.set(key, entry)\n        }\n        return entry.get()\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n     */\n    make_(key: PropertyKey, annotation: Annotation | boolean): void {\n        if (annotation === true) {\n            annotation = this.defaultAnnotation_\n        }\n        if (annotation === false) {\n            return\n        }\n        assertAnnotable(this, annotation, key)\n        if (!(key in this.target_)) {\n            // Throw on missing key, except for decorators:\n            // Decorator annotations are collected from whole prototype chain.\n            // When called from super() some props may not exist yet.\n            // However we don't have to worry about missing prop,\n            // because the decorator must have been applied to something.\n            if (this.target_[storedAnnotationsSymbol]?.[key]) {\n                return // will be annotated by subclass constructor\n            } else {\n                die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n            }\n        }\n        let source = this.target_\n        while (source && source !== objectPrototype) {\n            const descriptor = getDescriptor(source, key)\n            if (descriptor) {\n                const outcome = annotation.make_(this, key, descriptor, source)\n                if (outcome === MakeResult.Cancel) {\n                    return\n                }\n                if (outcome === MakeResult.Break) {\n                    break\n                }\n            }\n            source = Object.getPrototypeOf(source)\n        }\n        recordAnnotationApplied(this, annotation, key)\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    extend_(\n        key: PropertyKey,\n        descriptor: PropertyDescriptor,\n        annotation: Annotation | boolean,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        if (annotation === true) {\n            annotation = this.defaultAnnotation_\n        }\n        if (annotation === false) {\n            return this.defineProperty_(key, descriptor, proxyTrap)\n        }\n        assertAnnotable(this, annotation, key)\n        const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n        if (outcome) {\n            recordAnnotationApplied(this, annotation, key)\n        }\n        return outcome\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    defineProperty_(\n        key: PropertyKey,\n        descriptor: PropertyDescriptor,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: descriptor.value\n                })\n                if (!change) {\n                    return null\n                }\n                const { newValue } = change as any\n                if (descriptor.value !== newValue) {\n                    descriptor = {\n                        ...descriptor,\n                        value: newValue\n                    }\n                }\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            // Notify\n            this.notifyPropertyAddition_(key, descriptor.value)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    // If original descriptor becomes relevant, move this to annotation directly\n    defineObservableProperty_(\n        key: PropertyKey,\n        value: any,\n        enhancer: IEnhancer<any>,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: value\n                })\n                if (!change) {\n                    return null\n                }\n                value = (change as any).newValue\n            }\n\n            const cachedDescriptor = getCachedObservablePropDescriptor(key)\n            const descriptor = {\n                configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n                enumerable: true,\n                get: cachedDescriptor.get,\n                set: cachedDescriptor.set\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            const observable = new ObservableValue(\n                value,\n                enhancer,\n                __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n                false\n            )\n\n            this.values_.set(key, observable)\n\n            // Notify (value possibly changed by ObservableValue)\n            this.notifyPropertyAddition_(key, observable.value_)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    // If original descriptor becomes relevant, move this to annotation directly\n    defineComputedProperty_(\n        key: PropertyKey,\n        options: IComputedValueOptions<any>,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: undefined\n                })\n                if (!change) {\n                    return null\n                }\n            }\n            options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n            options.context = this.proxy_ || this.target_\n            const cachedDescriptor = getCachedObservablePropDescriptor(key)\n            const descriptor = {\n                configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n                enumerable: false,\n                get: cachedDescriptor.get,\n                set: cachedDescriptor.set\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            this.values_.set(key, new ComputedValue(options))\n\n            // Notify\n            this.notifyPropertyAddition_(key, undefined)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        // No such prop\n        if (!hasProp(this.target_, key)) {\n            return true\n        }\n\n        // Intercept\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IObjectWillChange>(this, {\n                object: this.proxy_ || this.target_,\n                name: key,\n                type: REMOVE\n            })\n            // Cancelled\n            if (!change) {\n                return null\n            }\n        }\n\n        // Delete\n        try {\n            startBatch()\n            const notify = hasListeners(this)\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const observable = this.values_.get(key)\n            // Value needed for spies/listeners\n            let value = undefined\n            // Optimization: don't pull the value unless we will need it\n            if (!observable && (notify || notifySpy)) {\n                value = getDescriptor(this.target_, key)?.value\n            }\n            // delete prop (do first, may fail)\n            if (proxyTrap) {\n                if (!Reflect.deleteProperty(this.target_, key)) {\n                    return false\n                }\n            } else {\n                delete this.target_[key]\n            }\n            // Allow re-annotating this field\n            if (__DEV__) {\n                delete this.appliedAnnotations_![key]\n            }\n            // Clear observable\n            if (observable) {\n                this.values_.delete(key)\n                // for computed, value is undefined\n                if (observable instanceof ObservableValue) {\n                    value = observable.value_\n                }\n                // Notify: autorun(() => obj[key]), see #1796\n                propagateChanged(observable)\n            }\n            // Notify \"keys/entries/values\" observers\n            this.keysAtom_.reportChanged()\n\n            // Notify \"has\" observers\n            // \"in\" as it may still exist in proto\n            this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n            // Notify spies/listeners\n            if (notify || notifySpy) {\n                const change: IObjectDidChange = {\n                    type: REMOVE,\n                    observableKind: \"object\",\n                    object: this.proxy_ || this.target_,\n                    debugObjectName: this.name_,\n                    oldValue: value,\n                    name: key\n                }\n                if (__DEV__ && notifySpy) {\n                    spyReportStart(change!)\n                }\n                if (notify) {\n                    notifyListeners(this, change)\n                }\n                if (__DEV__ && notifySpy) {\n                    spyReportEnd()\n                }\n            }\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    /**\n     * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n     * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n     * for callback details\n     */\n    observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n        }\n        return registerListener(this, callback)\n    }\n\n    intercept_(handler): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    notifyPropertyAddition_(key: PropertyKey, value: any) {\n        const notify = hasListeners(this)\n        const notifySpy = __DEV__ && isSpyEnabled()\n        if (notify || notifySpy) {\n            const change: IObjectDidChange | null =\n                notify || notifySpy\n                    ? ({\n                          type: ADD,\n                          observableKind: \"object\",\n                          debugObjectName: this.name_,\n                          object: this.proxy_ || this.target_,\n                          name: key,\n                          newValue: value\n                      } as const)\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change!)\n            }\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n\n        this.pendingKeys_?.get(key)?.set(true)\n\n        // Notify \"keys/entries/values\" observers\n        this.keysAtom_.reportChanged()\n    }\n\n    ownKeys_(): Array<string | symbol> {\n        this.keysAtom_.reportObserved()\n        return ownKeys(this.target_)\n    }\n\n    keys_(): PropertyKey[] {\n        // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n        // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n        // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n        // We choose to over-report in Object.keys(object), because:\n        // - typically it's used with simple data objects\n        // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n        this.keysAtom_.reportObserved()\n        return Object.keys(this.target_)\n    }\n}\n\nexport interface IIsObservableObject {\n    [$mobx]: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n    target: any,\n    options?: CreateObservableOptions\n): IIsObservableObject {\n    if (__DEV__ && options && isObservableObject(target)) {\n        die(`Options can't be provided for already observable objects.`)\n    }\n\n    if (hasProp(target, $mobx)) {\n        if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n            die(\n                `Cannot convert '${getDebugName(target)}' into observable object:` +\n                    `\\nThe target is already observable of different type.` +\n                    `\\nExtending builtins is not supported.`\n            )\n        }\n        return target\n    }\n\n    if (__DEV__ && !Object.isExtensible(target)) {\n        die(\"Cannot make the designated object observable; it is not extensible\")\n    }\n\n    const name =\n        options?.name ??\n        (__DEV__\n            ? `${\n                  isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n              }@${getNextId()}`\n            : \"ObservableObject\")\n\n    const adm = new ObservableObjectAdministration(\n        target,\n        new Map(),\n        String(name),\n        getAnnotationFromOptions(options)\n    )\n\n    addHiddenProp(target, $mobx, adm)\n\n    return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n    \"ObservableObjectAdministration\",\n    ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n    return (\n        descriptorCache[key] ||\n        (descriptorCache[key] = {\n            get() {\n                return this[$mobx].getObservablePropValue_(key)\n            },\n            set(value) {\n                return this[$mobx].setObservablePropValue_(key, value)\n            }\n        })\n    )\n}\n\nexport function isObservableObject(thing: any): boolean {\n    if (isObject(thing)) {\n        return isObservableObjectAdministration((thing as any)[$mobx])\n    }\n    return false\n}\n\nexport function recordAnnotationApplied(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey\n) {\n    if (__DEV__) {\n        adm.appliedAnnotations_![key] = annotation\n    }\n    // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n    delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey\n) {\n    // Valid annotation\n    if (__DEV__ && !isAnnotation(annotation)) {\n        die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n    }\n\n    /*\n    // Configurable, not sealed, not frozen\n    // Possibly not needed, just a little better error then the one thrown by engine.\n    // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n    if (__DEV__) {\n        const configurable = getDescriptor(adm.target_, key)?.configurable\n        const frozen = Object.isFrozen(adm.target_)\n        const sealed = Object.isSealed(adm.target_)\n        if (!configurable || frozen || sealed) {\n            const fieldName = `${adm.name_}.${key.toString()}`\n            const requestedAnnotationType = annotation.annotationType_\n            let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n            if (frozen) {\n                error += `\\nObject is frozen.`\n            }\n            if (sealed) {\n                error += `\\nObject is sealed.`\n            }\n            if (!configurable) {\n                error += `\\nproperty is not configurable.`\n                // Mention only if caused by us to avoid confusion\n                if (hasProp(adm.appliedAnnotations!, key)) {\n                    error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n                    error += `all annotated fields of non-plain objects (classes) are not configurable.`\n                }\n            }\n            die(error)\n        }\n    }\n    */\n\n    // Not annotated\n    if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n        const fieldName = `${adm.name_}.${key.toString()}`\n        const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n        const requestedAnnotationType = annotation.annotationType_\n        die(\n            `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n                `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n                `\\nRe-annotating fields is not allowed.` +\n                `\\nUse 'override' annotation for methods overridden by subclass.`\n        )\n    }\n}\n","import {\n    getNextId,\n    addHiddenFinalProp,\n    makeIterable,\n    addHiddenProp,\n    ObservableArrayAdministration,\n    $mobx,\n    arrayExtensions,\n    IEnhancer,\n    isObservableArray,\n    IObservableArray,\n    defineProperty,\n    initObservable\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n    let v = false\n    const p = {}\n    Object.defineProperty(p, \"0\", {\n        set: () => {\n            v = true\n        }\n    })\n    Object.create(p)[\"0\"] = 1\n    return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n    if (Object.setPrototypeOf) {\n        Object.setPrototypeOf(ctor.prototype, proto)\n    } else if (ctor.prototype.__proto__ !== undefined) {\n        ctor.prototype.__proto__ = proto\n    } else {\n        ctor.prototype = proto\n    }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nexport class LegacyObservableArray<T> extends StubArray {\n    constructor(\n        initialValues: T[] | undefined,\n        enhancer: IEnhancer<T>,\n        name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n        owned = false\n    ) {\n        super()\n        initObservable(() => {\n            const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n            adm.proxy_ = this as any\n            addHiddenFinalProp(this, $mobx, adm)\n\n            if (initialValues && initialValues.length) {\n                // @ts-ignore\n                this.spliceWithArray(0, 0, initialValues)\n            }\n\n            if (safariPrototypeSetterInheritanceBug) {\n                // Seems that Safari won't use numeric prototype setter until any * numeric property is\n                // defined on the instance. After that it works fine, even if this property is deleted.\n                Object.defineProperty(this, \"0\", ENTRY_0)\n            }\n        })\n    }\n\n    concat(...arrays: T[][]): T[] {\n        ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n        return Array.prototype.concat.apply(\n            (this as any).slice(),\n            //@ts-ignore\n            arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n        )\n    }\n\n    get length(): number {\n        return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n    }\n\n    set length(newLength: number) {\n        ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Array\"\n    }\n\n    [Symbol.iterator]() {\n        const self = this\n        let nextIndex = 0\n        return makeIterable({\n            next() {\n                return nextIndex < self.length\n                    ? { value: self[nextIndex++], done: false }\n                    : { done: true, value: undefined }\n            }\n        })\n    }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n    if (prop !== \"concat\") {\n        addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n    }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n    return {\n        enumerable: false,\n        configurable: true,\n        get: function () {\n            return this[$mobx].get_(index)\n        },\n        set: function (value) {\n            this[$mobx].set_(index, value)\n        }\n    }\n}\n\nfunction createArrayBufferItem(index: number) {\n    defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n    if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n        for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n            createArrayBufferItem(index)\n        }\n        OBSERVABLE_ARRAY_BUFFER_SIZE = max\n    }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n    initialValues: T[] | undefined,\n    enhancer: IEnhancer<T>,\n    name?: string\n): IObservableArray<T> {\n    return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n    $mobx,\n    IDepTreeNode,\n    isAtom,\n    isComputedValue,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isReaction,\n    isObservableSet,\n    die,\n    isFunction,\n    allowStateChangesStart,\n    untrackedStart,\n    allowStateChangesEnd,\n    untrackedEnd,\n    startBatch,\n    endBatch\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n    if (typeof thing === \"object\" && thing !== null) {\n        if (isObservableArray(thing)) {\n            if (property !== undefined) {\n                die(23)\n            }\n            return (thing as any)[$mobx].atom_\n        }\n        if (isObservableSet(thing)) {\n            return thing.atom_\n        }\n        if (isObservableMap(thing)) {\n            if (property === undefined) {\n                return thing.keysAtom_\n            }\n            const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n            if (!observable) {\n                die(25, property, getDebugName(thing))\n            }\n            return observable\n        }\n        if (property && !thing[$mobx]) {\n            thing[property]\n        } // See #1072\n        if (isObservableObject(thing)) {\n            if (!property) {\n                return die(26)\n            }\n            const observable = (thing as any)[$mobx].values_.get(property)\n            if (!observable) {\n                die(27, property, getDebugName(thing))\n            }\n            return observable\n        }\n        if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n            return thing\n        }\n    } else if (isFunction(thing)) {\n        if (isReaction(thing[$mobx])) {\n            // disposer function\n            return thing[$mobx]\n        }\n    }\n    die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n    if (!thing) {\n        die(29)\n    }\n    if (property !== undefined) {\n        return getAdministration(getAtom(thing, property))\n    }\n    if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n        return thing\n    }\n    if (isObservableMap(thing) || isObservableSet(thing)) {\n        return thing\n    }\n    if (thing[$mobx]) {\n        return thing[$mobx]\n    }\n    die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n    let named\n    if (property !== undefined) {\n        named = getAtom(thing, property)\n    } else if (isAction(thing)) {\n        return thing.name\n    } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n        named = getAdministration(thing)\n    } else {\n        // valid for arrays as well\n        named = getAtom(thing)\n    }\n    return named.name_\n}\n\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nexport function initObservable<T>(cb: () => T): T {\n    const derivation = untrackedStart()\n    const allowStateChanges = allowStateChangesStart(true)\n    startBatch()\n    try {\n        return cb()\n    } finally {\n        endBatch()\n        allowStateChangesEnd(allowStateChanges)\n        untrackedEnd(derivation)\n    }\n}\n","import {\n    isES6Map,\n    isObservableArray,\n    isObservableMap,\n    isES6Set,\n    isObservableSet,\n    hasProp,\n    isFunction,\n    objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n    return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n    if (a === b) {\n        return a !== 0 || 1 / a === 1 / b\n    }\n    // `null` or `undefined` only equal to itself (strict comparison).\n    if (a == null || b == null) {\n        return false\n    }\n    // `NaN`s are equivalent, but non-reflexive.\n    if (a !== a) {\n        return b !== b\n    }\n    // Exhaust primitive checks\n    const type = typeof a\n    if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n        return false\n    }\n\n    // Compare `[[Class]]` names.\n    const className = toString.call(a)\n    if (className !== toString.call(b)) {\n        return false\n    }\n    switch (className) {\n        // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n        case \"[object RegExp]\":\n        // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n        case \"[object String]\":\n            // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n            // equivalent to `new String(\"5\")`.\n            return \"\" + a === \"\" + b\n        case \"[object Number]\":\n            // `NaN`s are equivalent, but non-reflexive.\n            // Object(NaN) is equivalent to NaN.\n            if (+a !== +a) {\n                return +b !== +b\n            }\n            // An `egal` comparison is performed for other numeric values.\n            return +a === 0 ? 1 / +a === 1 / b : +a === +b\n        case \"[object Date]\":\n        case \"[object Boolean]\":\n            // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n            // millisecond representations. Note that invalid dates with millisecond representations\n            // of `NaN` are not equivalent.\n            return +a === +b\n        case \"[object Symbol]\":\n            return (\n                typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n            )\n        case \"[object Map]\":\n        case \"[object Set]\":\n            // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n            // Hide this extra level by increasing the depth.\n            if (depth >= 0) {\n                depth++\n            }\n            break\n    }\n    // Unwrap any wrapped objects.\n    a = unwrap(a)\n    b = unwrap(b)\n\n    const areArrays = className === \"[object Array]\"\n    if (!areArrays) {\n        if (typeof a != \"object\" || typeof b != \"object\") {\n            return false\n        }\n\n        // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n        // from different frames are.\n        const aCtor = a.constructor,\n            bCtor = b.constructor\n        if (\n            aCtor !== bCtor &&\n            !(\n                isFunction(aCtor) &&\n                aCtor instanceof aCtor &&\n                isFunction(bCtor) &&\n                bCtor instanceof bCtor\n            ) &&\n            \"constructor\" in a &&\n            \"constructor\" in b\n        ) {\n            return false\n        }\n    }\n\n    if (depth === 0) {\n        return false\n    } else if (depth < 0) {\n        depth = -1\n    }\n\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n    // Initializing stack of traversed objects.\n    // It's done here since we only need them for objects and arrays comparison.\n    aStack = aStack || []\n    bStack = bStack || []\n    let length = aStack.length\n    while (length--) {\n        // Linear search. Performance is inversely proportional to the number of\n        // unique nested structures.\n        if (aStack[length] === a) {\n            return bStack[length] === b\n        }\n    }\n\n    // Add the first object to the stack of traversed objects.\n    aStack.push(a)\n    bStack.push(b)\n\n    // Recursively compare objects and arrays.\n    if (areArrays) {\n        // Compare array lengths to determine if a deep comparison is necessary.\n        length = a.length\n        if (length !== b.length) {\n            return false\n        }\n        // Deep compare the contents, ignoring non-numeric properties.\n        while (length--) {\n            if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n                return false\n            }\n        }\n    } else {\n        // Deep compare objects.\n        const keys = Object.keys(a)\n        let key\n        length = keys.length\n        // Ensure that both objects contain the same number of properties before comparing deep equality.\n        if (Object.keys(b).length !== length) {\n            return false\n        }\n        while (length--) {\n            // Deep compare each member\n            key = keys[length]\n            if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n                return false\n            }\n        }\n    }\n    // Remove the first object from the stack of traversed objects.\n    aStack.pop()\n    bStack.pop()\n    return true\n}\n\nfunction unwrap(a: any) {\n    if (isObservableArray(a)) {\n        return a.slice()\n    }\n    if (isES6Map(a) || isObservableMap(a)) {\n        return Array.from(a.entries())\n    }\n    if (isES6Set(a) || isObservableSet(a)) {\n        return Array.from(a.entries())\n    }\n    return a\n}\n","export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n    iterator[Symbol.iterator] = getSelf\n    return iterator as any\n}\n\nfunction getSelf() {\n    return this\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/     Most of the public static methods exposed by the module can be found here.\n * - core/    Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/   All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/   Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n    let g = getGlobal()\n    if (typeof g[m] === \"undefined\") {\n        die(`MobX requires global '${m}' to be available or polyfilled`)\n    }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n    IObservable,\n    IDepTreeNode,\n    Reaction,\n    IReactionPublic,\n    IReactionDisposer,\n    untracked,\n    IAtom,\n    createAtom,\n    spy,\n    IComputedValue,\n    IEqualsComparer,\n    comparer,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    IObjectWillChange,\n    IObjectDidChange,\n    isObservableObject,\n    IValueDidChange,\n    IValueWillChange,\n    IObservableValue,\n    isObservableValue as isBoxedObservable,\n    IObservableArray,\n    IArrayWillChange,\n    IArrayWillSplice,\n    IArraySplice,\n    IArrayUpdate,\n    IArrayDidChange,\n    isObservableArray,\n    IKeyValueMap,\n    ObservableMap,\n    IMapEntries,\n    IMapEntry,\n    IMapWillChange,\n    IMapDidChange,\n    isObservableMap,\n    IObservableMapInitialValues,\n    ObservableSet,\n    isObservableSet,\n    ISetDidChange,\n    ISetWillChange,\n    IObservableSetInitialValues,\n    transaction,\n    observable,\n    IObservableFactory,\n    CreateObservableOptions,\n    computed,\n    IComputedFactory,\n    isObservable,\n    isObservableProp,\n    isComputed,\n    isComputedProp,\n    extendObservable,\n    observe,\n    intercept,\n    autorun,\n    IAutorunOptions,\n    reaction,\n    IReactionOptions,\n    when,\n    IWhenOptions,\n    action,\n    isAction,\n    runInAction,\n    IActionFactory,\n    keys,\n    values,\n    entries,\n    set,\n    remove,\n    has,\n    get,\n    apiOwnKeys as ownKeys,\n    apiDefineProperty as defineProperty,\n    configure,\n    onBecomeObserved,\n    onBecomeUnobserved,\n    flow,\n    isFlow,\n    flowResult,\n    FlowCancellationError,\n    isFlowCancellationError,\n    toJS,\n    trace,\n    IObserverTree,\n    IDependencyTree,\n    getDependencyTree,\n    getObserverTree,\n    resetGlobalState as _resetGlobalState,\n    getGlobalState as _getGlobalState,\n    getDebugName,\n    getAtom,\n    getAdministration as _getAdministration,\n    allowStateChanges as _allowStateChanges,\n    runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n    Lambda,\n    $mobx,\n    isComputingDerivation as _isComputingDerivation,\n    onReactionError,\n    interceptReads as _interceptReads,\n    IComputedValueOptions,\n    IActionRunInfo,\n    _startAction,\n    _endAction,\n    allowStateReadsStart as _allowStateReadsStart,\n    allowStateReadsEnd as _allowStateReadsEnd,\n    makeObservable,\n    makeAutoObservable,\n    autoAction as _autoAction,\n    AnnotationsMap,\n    AnnotationMapEntry,\n    override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n    // See: https://github.com/andykog/mobx-devtools/\n    __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n        spy,\n        extras: {\n            getDebugName\n        },\n        $mobx\n    })\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":["abs","Math","String","fromCharCode","Object","assign","trim","value","pattern","replacement","replace","indexof","search","indexOf","index","charCodeAt","begin","end","slice","length","array","push","line","column","position","character","characters","node","root","parent","type","props","children","return","prev","next","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","COMMENT","callback","output","i","stringify","element","join","compile","parse","rule","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","k","x","y","z","identifierWithPointTracking","fixedElements","WeakMap","compat","isImplicitRule","get","set","parsed","toRules","getRules","parentRules","removeLabel","hash","defaultStylisPlugins","map","exec","createCache","options","key","ssrStyles","document","querySelectorAll","Array","prototype","forEach","call","getAttribute","head","appendChild","setAttribute","container","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","split","currentSheet","collection","finalizingPlugins","insert","serializer","concat","selector","serialized","sheet","shouldCache","styles","cache","name","nonce","speedy","prepend","insertionPoint","registered","hydrate","memoize","fn","create","arg","undefined","EmotionCacheContext","HTMLElement","CacheProvider","Provider","__unsafe_useEmotionCache","useContext","withEmotionCache","func","forwardRef","ref","ThemeContext","Global","w","T","sheetRef","constructor","isSpeedy","rehydrating","querySelector","tags","before","current","flush","sheetRefCurrent","nextElementSibling","css","_len","arguments","args","_key","keyframes","insertable","apply","anim","toString","this","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","isDevelopment","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","toLowerCase","processStyleValue","match","p1","p2","cursor","noComponentSelectorMessage","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","serializedStyles","obj","string","isArray","asString","Error","interpolated","_i","createStringFromObject","previousCursor","result","cached","labelPattern","serializeStyles","stringMode","strings","raw","lastIndex","identifierName","str","h","len","StyleSheet","_this","_insertTag","tag","nextSibling","firstChild","insertBefore","ctr","_proto","nodes","createElement","createTextNode","createStyleElement","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","_tag$parentNode","parentNode","removeChild","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","useInsertionEffectWithLayoutFallback","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","registerStyles","isStringTag","insertStyles","isDynamicSupport","html","theme","enableColorScheme","WebkitFontSmoothing","MozOsxFontSmoothing","boxSizing","WebkitTextSizeAdjust","vars","colorScheme","palette","mode","body","color","text","primary","typography","body1","backgroundColor","background","default","common","white","colorSchemeStyles","colorSchemes","getColorSchemeSelector","entries","scheme","startsWith","defaultStyles","fontWeightBold","margin","themeOverrides","components","MuiCssBaseline","styleOverrides","SELECTOR","baseStyles","staticStyles","useDefaultProps","params","A100","A200","A400","A700","defaultDarkOverlays","_","overlay","getOpacity","inputPlaceholder","inputUnderline","switchTrackDisabled","switchTrack","getOverlays","createColorScheme","paletteInput","overlays","rest","createMixins","breakpoints","mixins","toolbar","minHeight","up","black","light","secondary","disabled","divider","paper","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","main","createPalette","contrastThreshold","other","blue","getDefaultPrimary","getDefaultSecondary","error","red","getDefaultError","info","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastText","augmentColor","mainShade","lightShade","darkShade","JSON","contrastText","modes","deepmerge","grey","attachColorScheme","createTheme","cssVariables","initialColorSchemes","defaultColorScheme","initialDefaultColorScheme","defaultColorSchemeInput","defaultScheme","colorSchemesInput","paletteOptions","createShadow","px","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","tooltip","createThemeNoVars","breakpointsInput","mixinsInput","spacing","spacingInput","transitions","transitionsInput","typographyInput","shape","shapeInput","systemTheme","muiTheme","shadows","createTypography","createTransitions","reduce","acc","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","sx","createMuiTheme","createGetCssVar","prefix","appendVar","field","fallbacks","prepareTypographyVars","entry","fontStyle","fontVariant","fontStretch","fontSize","fontFamily","assignNestedKeys","keys","arrayKeys","temp","Number","includes","cssVarsParser","shouldSkipGeneratingVar","varsWithDefaults","shouldSkipPaths","cssVar","resolvedValue","some","prop","getCssValue","recurse","object","parentKeys","parserConfig","getSelector","defaultGetSelector","disableCssColorScheme","colorSchemeSelector","otherTheme","rootVars","rootCss","rootVarsWithDefaults","themeVars","colorSchemesMap","otherColorSchemes","cssObject","generateThemeVars","schemeVars","generateStyleSheets","stylesheets","insertStyleSheet","defaultSchemeVal","cssColorSheme","finalCss","excludedVariables","excludeVariablesFromRoot","cssVarPrefix","stringifyTheme","baseTheme","serializableTheme","serializeTheme","val","setColor","defaultValue","toRgb","setColorChannel","silent","restTheme","createThemeWithVars","input","firstColorScheme","getCssVar","defaultSchemeInput","builtInLight","builtInDark","customColorSchemes","font","setCssVarColor","tokens","colorToken","Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","snackbarContentBackground","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip","colors","generateSpacing","createSpacing","createGetColorSchemeSelector","toRuntimeSource","easing","easeInOut","easeOut","easeIn","sharp","duration","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","round","getAutoHeightDuration","height","constant","min","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","caseAllCaps","textTransform","defaultFontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body2","button","caption","overline","inherit","clone","getOverlayAlpha","elevation","alphaValue","log","themeId","defaultTheme","rootShouldForwardProp","createSimplePaletteValueFilter","additionalPropertiesToCheck","hasCorrectMainProperty","checkSimplePaletteColorValues","memoTheme","styleFn","lastValue","lastTheme","reactPropsRegex","isPropValid","test","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","propName","Insertion","_ref","newStyled","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","label","target","defaultShouldForwardProp","shouldUseAs","Styled","FinalTag","as","classInterpolations","finalShouldForwardProp","newProps","displayName","defaultProps","defineProperty","withComponent","nextTag","nextOptions","bind","styled","tagName","internal_processStyles","processor","PropsContext","config","getThemeProps","values","xs","sm","md","lg","xl","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","item","breakpoint","containerKey","cssKey","createEmptyBreakpointObject","breakpointsInOrder","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","mergeBreakpointsInOrder","emptyBreakpoints","mergedOutput","resolveBreakpointValues","breakpointValues","base","customBase","breakpointsKeys","computeBreakpointsBase","clampWrapper","max","hexToRgb","re","RegExp","n","parseInt","decomposeColor","charAt","marker","substring","colorSpace","shift","parseFloat","private_safeColorChannel","decomposedColor","idx","colorChannel","recomposeColor","rgbToHex","int","hex","intToHex","hslToRgb","s","l","a","f","rgb","getLuminance","toFixed","getContrastRatio","foreground","lumA","lumB","alpha","private_safeAlpha","darken","coefficient","private_safeDarken","lighten","private_safeLighten","emphasize","private_safeEmphasize","sortBreakpointsValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","createBreakpoints","unit","step","sortedValues","down","between","start","endIndex","only","not","keyIndex","systemDefaultTheme","resolveTheme","isObjectEmpty","PROCESSED_PROPS","Symbol","attachTheme","processedProps","defaultOverridesResolver","slot","_props","processStyle","resolvedStyle","flatMap","subStyle","otherStyles","mergedState","variantLoop","variant","ownerState","slotShouldForwardProp","systemSx","__mui_systemSx","inputOptions","filter","componentName","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","overridesResolver","lowercaseFirstLetter","shouldForwardPropOption","defaultStyledResolver","transformStyleArg","muiStyledResolver","expressions","transformedStyle","expressionsWithDefaultTheme","resolvedStyleOverrides","propsWithTheme","slotKey","themeVariants","numOfCustomFnsApplied","placeholders","fill","Component","muiName","withConfig","transform","mui","argsInput","borderRadius","applyStyles","cssContainerQueries","sortContainerQueries","sorted","b","regex","isCqShorthand","getContainerQuery","shorthand","matches","containerQuery","isNaN","themeInput","toContainerQuery","mediaQuery","attachCq","properties","m","p","directions","t","r","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","themeSpacing","transformed","createUnarySpacing","getValue","transformer","cssProperties","cssProperty","getStyleFromPropValue","resolveCssProperty","merge","padding","propTypes","filterProps","getPath","path","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","width","maxWidth","minWidth","maxHeight","bgcolor","pt","pr","pb","pl","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginTop","marginRight","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","display","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","justifyItems","justifySelf","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","top","right","bottom","left","boxShadow","textAlign","getThemeValue","traverse","sxInput","sxObject","styleKey","maybeFn","breakpointsValues","objects","allKeys","union","Set","every","objectsHaveSameKeys","unstable_createStyleFunctionSx","defaultGenerator","generate","configure","generator","reset","createClassNameGenerator","capitalize","toUpperCase","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","composeClasses","slots","getUtilityClass","classes","slotName","buffer","isPlainObject","getPrototypeOf","toStringTag","iterator","deepClone","source","formatMuiErrorMessage","code","url","encodeURIComponent","globalStateClasses","checked","completed","expanded","focused","focusVisible","open","readOnly","required","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","resolveProps","defaultSlotProps","slotProps","slotPropName","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","defaultArrayMerge","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","arrayMerge","sourceIsArray","destination","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","deepmerge_1","module","exports","getMessage","message","RemoteFile","getBufferFromResponse","response","resp","arrayBuffer","from","opts","baseOverrides","fetch","globalThis","TypeError","overrides","fetchImplementation","init","cause","console","warn","read","headers","signal","Infinity","range","res","method","redirect","ok","status","resData","bytesCopied","copy","contentRange","sizeMatch","_stat","bytesRead","readFile","encoding","stat","buf","allocUnsafe","close","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","c","d","g","q","v","u","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","hasSymbol","isFunctionNameConfigurable","configurable","ReactForwardRefSymbol","ReactMemoSymbol","memo","observer","baseComponent","useForwardRef","baseComponentName","observerComponent","writable","hoistBlackList","Hook","livelinessChecking","setLivelinessChecking","getLivelinessChecking","setLivelynessChecking","extendStatics","setPrototypeOf","__proto__","__extends","__","__assign","__generator","thisArg","sent","trys","ops","verb","op","done","pop","__values","o","__read","ar","__spread","getType","assertIsStateTreeNode","getStateTreeNode","getChildType","propertyName","onPatch","assertIsFunction","onSnapshot","applyPatch","patch","assertArg","applyPatches","asArray","recordPatches","subject","disposer","data","patches","inversePatches","publicData","recorder","recording","reversedInversePatches","reverse","stop","resume","inversePatch","getRunningActionContext","replay","undo","protect","isRoot","fail","isProtectionEnabled","unprotect","isProtected","applySnapshot","snapshot","getSnapshot","applyPostProcess","hasParent","depth","assertIsNumber","getParent","storedValue","hasParentOfType","assertIsType","is","getParentOfType","getRoot","getPathParts","splitJsonPath","resolvePath","assertIsString","resolveNodeByPath","resolveIdentifier","identifierCache","resolve","normalizeIdentifier","getIdentifier","tryReference","getter","checkIfAlive","isStateTreeNode","isAlive","InvalidReferenceError","isValidReference","tryResolve","getRelativePath","getRelativePathBetweenNodes","keepEnvironment","environment","detach","destroy","die","subpath","observableIsAlive","addDisposer","getEnv","EMPTY_OBJECT","walk","getChildren","child","getPropertyMembers","typeOrNode","getMembers","reflected","actions","volatile","views","flowActions","isComputedProp","_isFlowAction","_isMSTAction","isObservableProp","cast","snapshotOrInstance","castToSnapshot","castToReferenceSnapshot","instance","getNodeId","nodeId","BaseNode","enumerable","NodeLifeCycle","INITIALIZING","baseSetParent","_subpath","_subpathUponDeath","_pathUponDeath","_state","wasAlive","aliveAtom","reportChanged","_hookSubscribers","emit","hook","hookHandler","EventHandlers","register","_parent","_escapedSubpath","pathAtom","getEscapedPath","reportObserved","createAtom","escapeJsonPath","state","DEAD","DETACHING","whenFinalized","CREATED","FINALIZED","fireHook","afterAttach","clearAll","beforeDestroy","ScalarNode","_super","simpleType","initialSnapshot","createNewInstance","finalizeCreation","newParent","parentChanged","subpathChanged","pathUponDeath","aboutToDie","finalizeDeath","baseFinalizeCreation","baseAboutToDie","baseFinalizeDeath","fireInternalHook","_a","TypeFlags","nextNodeId","snapshotReactionOptions","onError","ObjectNode","complexType","initialValue","_snapshotComputed","computed","unbox","_initialSnapshot","identifierAttribute","IdentifierCache","_childNodes","initializeChildNodes","unnormalizedIdentifier","id","childNode","addNodeToCache","createObservableInstanceIfNeeded","_applyPatches","_applySnapshot","fireHooks","_observableInstanceState","createObservableInstance","e_1","e_2","_b","parentChain","unshift","parentChain_1","parentChain_1_1","e_1_1","preboot","_isRunningAction","finalizeNewInstance","trackAndCompute","_addSnapshotReaction","afterCreate","_c","_d","e_2_1","beforeDetach","previousState","newEnv","newIdCache","splitCache","mergeCache","_allowStateChangesInsideComputed","hasSnapshotPostProcessor","_getActualSnapshot","_getCachedInitialSnapshot","_snapshotUponDeath","_cachedInitialSnapshotCreated","childNodes","_cachedInitialSnapshot","processInitialSnapshot","isRunningAction","context","msg","_getAssertAliveError","escapedPath","actionContext","getCurrentActionContext","parentActionEvent","actionFullPath","assertAlive","_autoUnbox","getChildNode","convertChildNodesToArray","subpathUponDeath","e_3","e_3_1","afterCreationFinalization","clearParent","self","createActionInvoker","parts","resolveNodeByPathParts","applyPatchLocally","addHiddenFinalProp","toJSON","_internalEventsEmit","_internalEventsClear","notifyDied","_internalEventsClearAll","onChange","_internalEventsRegister","handler","basePatch","_internalEventsHasSubscribers","localizedPatch","extend","substr","stripPatch","invertPatch","splitPatch","reversePatch","emitPatch","_internalEventsHas","hasDisposer","_internalEventsUnregister","middleware","middlewares","splice","includeHooks","removeMiddleware","assertWritable","_hasSnapshotReaction","snapshotDisposer","reaction","emitSnapshot","event","_internalEvents","hasSubscribers","eventHandler","atTheBeginning","has","unregister","clear","cannotDetermineSubtype","$type","BaseType","typecheckInternal","instantiate","getStateTreeNodeSafe","valueType","isAssignableFrom","typeCheckSuccess","typeCheckFailure","isValidSnapshot","thing","validate","ComplexType","getDefaultSnapshot","newValue","isDetaching","isMutable","isMatchingSnapshotId","tryToReconcileNode","setParent","newNode","SimpleType","isType","argNumber","runningActions","Map","createActionTrackingMiddleware","hooks","abort","onStart","onResume","async","onSuspend","delete","onSuccess","onFail","rootId","RunningAction","running","onFinish","flowsPending","createActionTrackingMiddleware2","middlewareHooks","parentRunningAction","newCall","env","parentCall","passesFilter","runningAction","finish","hasFlowsPending","incFlowsPending","decFlowsPending","serializeTheUnserializable","baseType","$MST_UNSERIALIZABLE","applyAction","runInAction","resolvedTarget","Date","baseApplyAction","recordActions","listener","onAction","attachAfter","addMiddleware","rawCall","sourceNode_1","actionName","$MST_DATE","getTime","isPrimitive","serializeArgument","currentActionContext","nextActionId","getNextActionId","runWithActionContext","baseIsRunningAction","previousContext","baseCall","originalFn","CollectedMiddlewares","isEmpty","runNextMiddleware","getNextMiddleware","call2","runMiddleWares","getParentActionContext","parentContext","parentActionContext","argsToArray","tree","parentId","allParentIds","parentEvent","addMiddleWare","decorate","$mst_middleware","arrayIndex","inArrayIndex","_isActionContextThisOrChildOf","sameOrParent","includeSame","isActionContextChildOf","isActionContextThisOrChildOf","parentOrThis","prettyPrintValue","safeStringify","toErrorString","fullPath","pathPrefix","currentTypename","isSnapshotCompatible","isPrimitiveType","describe","getContextForPath","EMPTY_ARRAY","flattenTypeErrors","errors","process","typecheck","valueInString","validationErrorsToString","identifierCacheId","observable","lcm","lastCacheModificationPerId","modificationId","cacheId","lastCacheUpdate","mobxShallow","updateLastCacheModificationPerId","remove","splitNode","newCache","basePath","modified","candidate","createObjectNode","existingNode","createScalarNode","$treenode","doubleDot","baseParts","targetParts","joinJsonPath","failIfResolveFails","pathParts","part","DEPRECATION_MESSAGE","process$1","asyncAction","deprecated","flow","plainObjectString","freeze","_getGlobalState","useProxies","deep","proxy","identity","isInteger","isObservableArray","proto","includeDate","isSerializable","isObservableObject","EventHandler","eventHandlers","stringStartsWith","beginning","typeName","canBeEmpty","setImmediateWithFallback","queueMicrotask","setImmediate","setTimeout","spawner","runId","contextBase","wrap","Promise","reject","gen","onFulfilled","ret","cancelError","throw","onRejected","err","then","createFlowSpawner","castFlowReturn","toGeneratorFunction","toGenerator","oldValue","unescapeJsonPath","getPathStr","ids","MapIdentifierMode","$preProcessorFailed","SnapshotProcessor","_subtype","_processors","flags","sn","preProcessor","preProcessSnapshot","postProcessor","nodeType","snapshotProcessorType","methods","methods_1","methods_1_1","proxyNodeTypeMethods","oldGetSnapshot","postProcessSnapshot","isUnionType","getReconciliationType","processedInitialValue","_fixNode","reconcile","processedSn","preProcessSnapshotSafe","needsIdentifierError","tryCollectModelTypes","modelTypes","subtypes","getSubTypes","subtypesArray","subtypesArray_1","subtypesArray_1_1","ModelType","MSTMap","initialData","enhancer","mapNode","mapType","identifierMode","YES","mapIdentifierAttribute","isValidIdentifier","put","ObservableMap","MapType","_subType","hookInitializers","UNKNOWN","_determineIdentifierMode","NO","objNode","subType","_interceptReads","initializer","actionInvoker","intercept","willChange","observe","didChange","change","processIdentifier","expected","processed","oldSnapshot","currentKeys","isMapType","ArrayType","_getAdministration","dehancer","updatedNodes","reconcileArrayChildren","index_1","removedCount","added","addedNodes","removed","addedCount","childType","oldNodes","newValues","newPaths","nothingChanged","hasNewNode","oldNode","newPath","areSame","valueAsNode","oldMatch","getNewNode","oldNodeType","isArrayType","PRE_PROCESS_SNAPSHOT","POST_PROCESS_SNAPSHOT","objectTypeToString","defaultObjectOptions","initializers","declaredProps","keysList","alreadySeenKeys","cloneAndEnhance","currentPreprocessor","currentPostprocessor","add","optional","number","boolean","DatePrimitive","getPrimitiveFactoryFromValue","propertyNames","_getIdentifierAttribute","forAllProps","propType","Identifier","instantiateActions","action2","baseAction","specializedAction_1","boundAction","instantiateVolatileState","__rest","instantiateViews","makeObservable","applySnapshotPreProcessor","chg","oldChildValue","adm","getAtom","applySnapshotPostProcessor","preProcessedSnapshot","isModelType","CoreType","checker","integer","Integer","float","Float","finite","Finite","isFinite","Boolean","nullType","Null","undefinedType","Undefined","_DatePrimitive","Literal","literal","isLiteralType","Refinement","_predicate","_message","subtypeErrors","isRefinementType","Union","_types","eager","dispatcher","_dispatcher","_eager","factory","determineType","reconcileCurrentType","find","allErrors","applicableTypes","optionsOrType","otherTypes","types","OptionalValue","_defaultValue","optionalValues","Optional","defaultInstanceOrSnapshot","getDefaultInstanceOrSnapshot","defaultValueOrFunction","checkOptionalPreconditions","undefinedAsOptionalValues","isOptionalType","optionalUndefinedType","optionalNullType","maybe","Late","_definition","mustSucceed","ReferenceError","getSubType","isLateType","when","pendingNodeList","shouldLoadPredicate","loadType","loadedType","Frozen","untypedFrozenInstance","isFrozenType","StoredReference","targetType","targetNode","normalizedId","lastCacheModification","getLastCacheModificationPerId","resolvedReference","updateResolvedReference","BaseReferenceType","onInvalidated","Reference","storedRefNode","referenceId","refTargetNode","storedRefParentNode","storedRefParentValue","invalidTarget","invalidId","replaceRef","newRef","removeRef","refTargetValue","refTargetNodeHook","getInvalidationCause","fireInvalidated","refTargetDetachHookDisposer","registerHook","refTargetDestroyHookDisposer","customGetSet","onRefTargetDestroyedHookDisposer","startWatching","sync","addTargetNodeWatcher","IdentifierReferenceType","storedRef","watchTargetNodeForInvalidations","compareByValue","CustomReferenceType","newIdentifier","getSetOptions","isReferenceType","BaseIdentifierType","validType","IdentifierType","IdentifierNumberType","identifierNumber","isIdentifierType","CustomType","Custom","isTargetType","typeError","getValidationMessage","toSnapshot","fromSnapshot","isSnapshot","valueToStore","enumeration","realOptions","option","model","compose","hasTypename","cur","named","custom","safeReference","refType","ev","acceptsUndefined","maybeNull","refinement","predicate","subtype","frozen","late","nameOrType","maybeType","lazy","null","snapshotProcessor","processors","mockGlobal","getGlobal","window","global","getDescriptor","hasProxy","Proxy","assertProxies","once","invoked","noop","isFunction","isStringish","isObject","protoConstructor","isGenerator","addHiddenProp","createInstanceofPredicate","theClass","isES6Map","isES6Set","hasGetOwnPropertySymbols","ownKeys","Reflect","toPrimitive","hasProp","getOwnPropertyDescriptors","getFlag","mask","setFlag","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","_extends","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","flags_","observers_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","onBO","onBUO","startBatch","propagateChanged","endBatch","_createClass","isBeingObservedMask_","isPendingUnobservationMask_","diffValueMask_","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","onBecomeObserved","onBecomeUnobserved","comparer","structural","deepEqual","shallow","deepEnhancer","isObservable","isAction","isFlow","autoAction","referenceEnhancer","override","make_","extend_","proxyTrap","desc","createActionAnnotation","options_","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","defineProperty_","mthd","kind","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","isMobxAction","safeDescriptors","_ref2","globalState","_adm$proxy_","_annotation$options_","proxy_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","isPlainObject_","createFlowAnnotation","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","defineObservableProperty_","_this$options_$enhanc","initializedObjects","WeakSet","initializeObservable","ObservableValue","_ann$options_$enhance","setObservablePropValue_","AUTO","autoAnnotation","createAutoAnnotation","autoBind","observableAnnotation","_this$options_4","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","arg3","box","equals","initialValues","createLegacyArray","createObservableArray","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","currentActionId","_getDescriptor$config","_getDescriptor","tmpNameDescriptor","executeAction","canRunAsDerivation","scope","runInfo","_startAction","error_","_endAction","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","runAsAction_","prevAllowStateReads_","allowStateReadsStart","notifySpy_","startTime_","actionId_","parentActionId_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","_inheritsLoose","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","hasInterceptors","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","valueOf","isObservableValue","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","derivation","setter_","isTracing_","TraceMode","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","isComputing","inBatch","shouldCompute","prevTrackingContext","trackingContext","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","isRunningSetter","wasSuspended","changed","track","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","prevValue","autorun","prevU","isComputingMask_","isRunningSetterMask_","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","isComputingDerivation","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","diffValue","removeObserver","addObserver","bindDependencies","untracked","allowStateReads","persistentKeys","MobXGlobals","version","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","getGlobalState","resetGlobalState","defaultGlobals","queueForUnobservation","isPendingUnobservation","runReactions","list","isBeingObserved","Reaction","onInvalidate_","errorHandler_","requiresObservable_","schedule_","isScheduled","runReaction_","isDisposed","isTrackPending","reportExceptionInDerivation_","isRunning","prevReaction","dispose","getDisposer_","abortSignal","_this2","removeEventListener","addEventListener","trace","enterBreakPoint","isDisposedMask_","isScheduledMask_","isTrackPendingMask_","isRunningMask_","onReactionError","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","spy","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","scheduler","createSchedulerFromOptions","reactionRunner","requiresObservable","_opts2","aborted","_opts3","run","expression","effect","errorHandler","baseFn","_opts$name2","effectAction","runSync","nextValue","_opts4","_opts5","ON_BECOME_OBSERVED","ON_BECOME_UNOBSERVED","interceptHook","cb","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","isolateGlobalState","baseScheduler","ea","annotations","descriptors","getDependencyTree","nodeToDependencyTree","dependencies","getObserverTree","nodeToObserverTree","hasObservers","observers","getObservers","generatorId","FlowCancellationError","isFlowCancellationError","flowAnnotation","flowBoundAnnotation","rejector","pendingPromise","promise","stepId","cancel","cancelPromise","yieldedPromise","flowResult","interceptReads","propOrHandler","getAdministration","interceptProperty","interceptInterceptable","_isComputed","isComputed","_isObservable","keys_","set_","delete_","has_","get_","apiDefineProperty","apiOwnKeys","ownKeys_","propOrCb","cbOrFire","observeObservableProperty","observeObservable","toJSHelper","__alreadySeen","toJS","transaction","_opts$signal","_when","_opts$signal2","_opts$signal3","whenPromise","timeoutHandle","timeout","clearTimeout","getAdm","_getAdm$set_","deleteProperty","_getAdm$delete_","_getAdm$definePropert","preventExtensions","interceptable","interceptors","listenable","listeners","collectStoredAnnotations","keysSymbol","makeAutoObservable","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","notify","owned","spliceWithArray","_len2","items","_key2","_len3","_key3","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","accumulator","currentValue","_this3","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","data_","hasMap_","keysAtom_","newEntry","hasKey","updateValue_","addValue_","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_createForOfIteratorHelperLoose","_step$value","mapProto","objectProto","symbols","getPlainObjectKeys","_this5","_step2","_iterator2","_this6","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_this7","_step4","_iterator4","_step4$value","keyExisted","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","nextIndex","observableValues","intersection","otherSet","difference","symmetricDifference","isSubsetOf","isSupersetOf","isDisjointFrom","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_2","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","getDebugName","eq","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","extras","aa","ca","da","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","stack","Na","Oa","prepareStackTrace","construct","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","ab","bb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","nb","namespaceURI","innerHTML","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","lineClamp","qb","rb","sb","setProperty","tb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","location","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","password","tel","time","week","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","D","of","pf","qf","rf","random","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","firstContext","lanes","dh","eh","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","Gj","Hj","Ij","Jj","U","Kj","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","ceil","mk","nk","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","nl","ol","rl","ql","unmount","unstable_scheduleHydration","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","toArray","PureComponent","act","cloneElement","createContext","_currentValue2","_threadCount","Consumer","_globalName","createFactory","createRef","isValidElement","startTransition","unstable_act","sortIndex","performance","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3304.65e5d8dd.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3304],{63304:(e,t,n)=>{n.d(t,{drawFeats:()=>f});var o=n(99546),r=n(36917),s=n(80544),a=n(91476);function i(e){return 2*Math.random()*e-e}function l(e,t,n,o){e.strokeStyle=o,e.beginPath(),e.moveTo(t,0),e.lineTo(t,n),e.stroke()}function f(e,t,n,f){const{chainData:d,colorBy:c,drawInter:g,drawLongRange:h,lineWidthSetting:b,jitterVal:m}=e;if(!d)return;const u=(0,o.getContainingView)(e),{assemblyManager:k}=(0,o.getSession)(e),{chains:S,stats:y}=d,P=(0,a.d)(d),p=k.get(u.assemblyNames[0]),v=c?.type||"insertSizeAndOrientation";if(p){t.lineWidth=b;for(const e of S)if(1===e.length&&h){const t=e[0];if(!P||8&t.flags){const e=[t,...(0,s.featurizeSA)(t.SA,t.id,t.strand,t.name)].sort(((e,t)=>e.clipPos-t.clipPos));for(let t=0;t<e.length-1;t++)w(e[t],e[t+1],p,!0)}else w(t,{refName:t.next_ref||"",start:t.next_pos||0,end:t.next_pos||0,strand:t.strand},p,!0)}else{const t=P?e.filter((e=>!(2048&e.flags||8&e.flags))):e.sort(((e,t)=>e.clipPos-t.clipPos)).filter((e=>!(256&e.flags)));for(let e=0;e<t.length-1;e++)w(t[e],t[e+1],p,!1)}}function w(e,n,o,s){const a=e.strand,d=n.strand,c=-1===d,h=-1===a?e.start:e.end,b=P?c?n.start:n.end:c?n.end:n.start,k=o.getCanonicalRefName(e.refName)||e.refName,S=o.getCanonicalRefName(n.refName)||n.refName,p=u.bpToPx({refName:k,coord:h})?.offsetPx,w=u.bpToPx({refName:S,coord:b})?.offsetPx;if(void 0!==p&&void 0!==w){const o=(w-p)/2,c=Math.abs(o),g=p-u.offsetPx,h=w-u.offsetPx,b=c>1e4;s&&b?(t.moveTo(g,0),t.beginPath()):(t.beginPath(),t.moveTo(g,0)),s&&b?t.strokeStyle="red":P?"insertSizeAndOrientation"===v?t.strokeStyle=(0,r.sY)(e,n,y)[0]:"orientation"===v?t.strokeStyle=(0,r.DW)(e)[0]:"insertSize"===v?t.strokeStyle=(0,r.L9)(e,n,y)?.[0]||"grey":"gradient"===v&&(t.strokeStyle=`hsl(${10*Math.log10(c)},50%,50%)`):"orientation"===v||"insertSizeAndOrientation"===v?t.strokeStyle=-1===a&&1===d?"navy":1===a&&-1===d?"green":"grey":"gradient"===v&&(t.strokeStyle=`hsl(${10*Math.log10(c)},50%,50%)`);const k=g+2*o,S=Math.min(f+i(m),c);s?c>1e5?(l(t,g+i(m),f,"red"),l(t,h+i(m),f,"red")):b?(t.arc(g+o+i(m),0,c,0,Math.PI),t.stroke()):(t.bezierCurveTo(g+i(m),S,k,S,k+i(m),0),t.stroke()):(t.bezierCurveTo(g+i(m),S,k,S,k+i(m),0),t.stroke())}else p&&g&&l(t,p-u.offsetPx,f,"purple")}}},91476:(e,t,n)=>{function o(e){for(const t of e.chains.values())if(1&t[0].flags)return!0;return!1}n.d(t,{d:()=>o})}}]);
+//# sourceMappingURL=3304.65e5d8dd.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3304.65e5d8dd.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3304.65e5d8dd.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/LinearReadArcsDisplay/drawFeats.ts","../../../plugins/alignments/src/shared/util.ts"],"sourcesContent":["import { getContainingView, getSession } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport {\n  getPairedOrientationColor,\n  getPairedInsertSizeColor,\n  getPairedInsertSizeAndOrientationColor,\n} from '../shared/color'\nimport { featurizeSA } from '../MismatchParser'\nimport { LinearReadArcsDisplayModel } from './model'\nimport { hasPairedReads } from '../shared/util'\n\ntype LGV = LinearGenomeViewModel\n\nfunction jitter(n: number) {\n  return Math.random() * 2 * n - n\n}\n\ninterface CoreFeat {\n  strand: number\n  refName: string\n  start: number\n  end: number\n}\n\nfunction drawLineAtOffset(\n  ctx: CanvasRenderingContext2D,\n  offset: number,\n  height: number,\n  color: string,\n) {\n  // draws a vertical line off to middle of nowhere if the second end not found\n  ctx.strokeStyle = color\n  ctx.beginPath()\n  ctx.moveTo(offset, 0)\n  ctx.lineTo(offset, height)\n  ctx.stroke()\n}\n\nexport function drawFeats(\n  self: LinearReadArcsDisplayModel,\n  ctx: CanvasRenderingContext2D,\n  width: number,\n  height: number,\n) {\n  const {\n    chainData,\n    colorBy,\n    drawInter,\n    drawLongRange,\n    lineWidthSetting,\n    jitterVal,\n  } = self\n  if (!chainData) {\n    return\n  }\n  const view = getContainingView(self) as LGV\n  const { assemblyManager } = getSession(self)\n  const { chains, stats } = chainData\n  const hasPaired = hasPairedReads(chainData)\n  const asm = assemblyManager.get(view.assemblyNames[0]!)\n  const type = colorBy?.type || 'insertSizeAndOrientation'\n  if (!asm) {\n    return\n  }\n  ctx.lineWidth = lineWidthSetting\n\n  function draw(\n    k1: CoreFeat & { tlen?: number; pair_orientation?: string },\n    k2: CoreFeat,\n    assembly: Assembly,\n    longRange?: boolean,\n  ) {\n    const s1 = k1.strand\n    const s2 = k2.strand\n    const f1 = s1 === -1\n    const f2 = s2 === -1\n\n    const p1 = f1 ? k1.start : k1.end\n    const p2 = hasPaired ? (f2 ? k2.start : k2.end) : f2 ? k2.end : k2.start\n    const ra1 = assembly.getCanonicalRefName(k1.refName) || k1.refName\n    const ra2 = assembly.getCanonicalRefName(k2.refName) || k2.refName\n    const r1 = view.bpToPx({ refName: ra1, coord: p1 })?.offsetPx\n    const r2 = view.bpToPx({ refName: ra2, coord: p2 })?.offsetPx\n\n    if (r1 !== undefined && r2 !== undefined) {\n      const radius = (r2 - r1) / 2\n      const absrad = Math.abs(radius)\n      const p = r1 - view.offsetPx\n      const p2 = r2 - view.offsetPx\n      const drawArcInsteadOfBezier = absrad > 10_000\n\n      // bezier (used for non-long-range arcs) requires moveTo before beginPath\n      // arc (used for long-range) requires moveTo after beginPath (or else a\n      // unwanted line at y=0 is rendered along with the arc)\n      if (longRange && drawArcInsteadOfBezier) {\n        ctx.moveTo(p, 0)\n        ctx.beginPath()\n      } else {\n        ctx.beginPath()\n        ctx.moveTo(p, 0)\n      }\n\n      if (longRange && drawArcInsteadOfBezier) {\n        ctx.strokeStyle = 'red'\n      } else {\n        if (hasPaired) {\n          if (type === 'insertSizeAndOrientation') {\n            ctx.strokeStyle = getPairedInsertSizeAndOrientationColor(\n              k1,\n              k2,\n              stats,\n            )[0]\n          } else if (type === 'orientation') {\n            ctx.strokeStyle = getPairedOrientationColor(k1)[0]\n          } else if (type === 'insertSize') {\n            ctx.strokeStyle =\n              getPairedInsertSizeColor(k1, k2, stats)?.[0] || 'grey'\n          } else if (type === 'gradient') {\n            ctx.strokeStyle = `hsl(${Math.log10(absrad) * 10},50%,50%)`\n          }\n        } else {\n          if (type === 'orientation' || type === 'insertSizeAndOrientation') {\n            if (s1 === -1 && s2 === 1) {\n              ctx.strokeStyle = 'navy'\n            } else if (s1 === 1 && s2 === -1) {\n              ctx.strokeStyle = 'green'\n            } else {\n              ctx.strokeStyle = 'grey'\n            }\n          } else if (type === 'gradient') {\n            ctx.strokeStyle = `hsl(${Math.log10(absrad) * 10},50%,50%)`\n          }\n        }\n      }\n\n      const destX = p + radius * 2\n      const destY = Math.min(height + jitter(jitterVal), absrad)\n      if (longRange) {\n        // avoid drawing gigantic circles that glitch out the rendering,\n        // instead draw vertical lines\n        if (absrad > 100_000) {\n          drawLineAtOffset(ctx, p + jitter(jitterVal), height, 'red')\n          drawLineAtOffset(ctx, p2 + jitter(jitterVal), height, 'red')\n        } else if (drawArcInsteadOfBezier) {\n          ctx.arc(p + radius + jitter(jitterVal), 0, absrad, 0, Math.PI)\n          ctx.stroke()\n        } else {\n          ctx.bezierCurveTo(\n            p + jitter(jitterVal),\n            destY,\n            destX,\n            destY,\n            destX + jitter(jitterVal),\n            0,\n          )\n          ctx.stroke()\n        }\n      } else {\n        ctx.bezierCurveTo(\n          p + jitter(jitterVal),\n          destY,\n          destX,\n          destY,\n          destX + jitter(jitterVal),\n          0,\n        )\n        ctx.stroke()\n      }\n    } else if (r1 && drawInter) {\n      drawLineAtOffset(ctx, r1 - view.offsetPx, height, 'purple')\n    }\n  }\n\n  for (const chain of chains) {\n    // chain.length === 1, singleton (other pairs/mates not in view)\n    if (chain.length === 1 && drawLongRange) {\n      const f = chain[0]!\n      if (hasPaired && !(f.flags & 8)) {\n        const mate = {\n          refName: f.next_ref || '',\n          start: f.next_pos || 0,\n          end: f.next_pos || 0,\n          strand: f.strand,\n        }\n        draw(f, mate, asm, true)\n      } else {\n        const features = [f, ...featurizeSA(f.SA, f.id, f.strand, f.name)].sort(\n          (a, b) => a.clipPos - b.clipPos,\n        )\n        for (let i = 0; i < features.length - 1; i++) {\n          const f = features[i]!\n          const v1 = features[i + 1]!\n          draw(f, v1, asm, true)\n        }\n      }\n    } else {\n      const res = hasPaired\n        ? chain.filter(f => !(f.flags & 2048) && !(f.flags & 8))\n        : chain\n            .sort((a, b) => a.clipPos - b.clipPos)\n            .filter(f => !(f.flags & 256))\n      for (let i = 0; i < res.length - 1; i++) {\n        draw(res[i]!, res[i + 1]!, asm, false)\n      }\n    }\n  }\n}\n","import { ChainData } from './fetchChains'\n\nexport function hasPairedReads(features: ChainData) {\n  for (const f of features.chains.values()) {\n    if (f[0]!.flags & 1) {\n      return true\n    }\n  }\n  return false\n}\n"],"names":["jitter","n","Math","random","drawLineAtOffset","ctx","offset","height","color","strokeStyle","beginPath","moveTo","lineTo","stroke","drawFeats","self","width","chainData","colorBy","drawInter","drawLongRange","lineWidthSetting","jitterVal","view","getContainingView","assemblyManager","getSession","chains","stats","hasPaired","hasPairedReads","asm","get","assemblyNames","type","lineWidth","chain","length","f","flags","features","featurizeSA","SA","id","strand","name","sort","a","b","clipPos","i","draw","refName","next_ref","start","next_pos","end","res","filter","k1","k2","assembly","longRange","s1","s2","f2","p1","p2","ra1","getCanonicalRefName","ra2","r1","bpToPx","coord","offsetPx","r2","undefined","radius","absrad","abs","p","drawArcInsteadOfBezier","getPairedInsertSizeAndOrientationColor","getPairedOrientationColor","getPairedInsertSizeColor","log10","destX","destY","min","arc","PI","bezierCurveTo","values"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3311.92fac4a6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3311],{23311:(e,t,r)=>{r.d(t,{renderBaseLinearDisplaySvg:()=>c});var n=r(7552),a=r(99546),i=r(66344),l=r(21479);async function c(e,t){const{height:r,id:c}=e,{overrideHeight:s}=t,m=(0,a.getContainingView)(e),{offsetPx:o,roundedDynamicBlocks:g,width:d}=m,h=await Promise.all(g.map((async r=>{const l=i.A.create({key:r.key,region:r}),c=e.regionCannotBeRenderedText(r)||e.regionCannotBeRendered(r);if(c)return[r,{reactElement:n.createElement(n.Fragment,null,n.createElement("rect",{x:0,y:0,width:d,height:20,fill:"#aaa"}),n.createElement("text",{x:0,y:15},c))}];const{rpcManager:s,renderArgs:m,renderProps:o,rendererType:g}=(0,i.s)(l,e);return[r,await g.renderInClient(s,{...m,...o,viewParams:(0,a.getViewParams)(e,!0),exportSVG:t,theme:t.theme||o.theme})]})));return n.createElement(n.Fragment,null,h.map((([e,t],i)=>{const{offsetPx:m,widthPx:g}=e,d=m-o,h=(0,l.OX)(c,i);return n.createElement(n.Fragment,{key:`frag-${i}`},n.createElement("defs",null,n.createElement("clipPath",{id:h},n.createElement("rect",{x:0,y:0,width:g,height:s||r}))),n.createElement("g",{transform:`translate(${d} 0)`},n.createElement("g",{clipPath:`url(#${h})`},n.createElement(a.ReactRendering,{rendering:t}))))})))}}}]);
+//# sourceMappingURL=3311.92fac4a6.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3311.92fac4a6.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3311.92fac4a6.chunk.js","mappings":"kNAeOA,eAAeC,EACpBC,EACAC,GAKA,MAAM,OAAEC,EAAM,GAAEC,GAAOH,GACjB,eAAEI,GAAmBH,EACrBI,GAAOC,EAAAA,EAAAA,mBAAkBN,IACvBO,SAAUC,EAAY,qBAAEC,EAAoB,MAAEC,GAAUL,EAC1DM,QAAmBC,QAAQC,IAC/BJ,EAAqBK,KAAIhB,UACvB,MAAMiB,EAAaC,EAAAA,EAAWC,OAAO,CACnCC,IAAKC,EAAMD,IACXE,OAAQD,IAKJE,EACJrB,EAAKsB,2BAA2BH,IAChCnB,EAAKuB,uBAAuBJ,GAE9B,GAAIE,EACF,MAAO,CACLF,EACA,CACEK,aACEC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,QAAMC,EAAG,EAAGC,EAAG,EAAGjB,MAAOA,EAAOR,OAAQ,GAAI0B,KAAK,SACjDH,EAAAA,cAAA,QAAMC,EAAG,EAAGC,EAAG,IACZN,MAQb,MAAM,WAAEQ,EAAU,WAAEC,EAAU,YAAEC,EAAW,aAAEC,IAC3CC,EAAAA,EAAAA,GAAgBlB,EAAYf,GAE9B,MAAO,CACLmB,QACMa,EAAaE,eAAeL,EAAY,IACzCC,KACAC,EACHI,YAAYC,EAAAA,EAAAA,eAAcpC,GAAM,GAChCqC,UAAWpC,EACXqC,MAAOrC,EAAKqC,OAASP,EAAYO,QAEpC,KAIL,OACEb,EAAAA,cAAAA,EAAAA,SAAA,KACGd,EAAWG,KAAI,EAAEK,EAAOoB,GAAYC,KACnC,MAAM,SAAEjC,EAAQ,QAAEkC,GAAYtB,EACxBuB,EAASnC,EAAWC,EACpBmC,GAASC,EAAAA,EAAAA,IAAMzC,EAAIqC,GAEzB,OAEEf,EAAAA,cAACA,EAAAA,SAAc,CAACP,IAAK,QAAQsB,KAC3Bf,EAAAA,cAAA,YACEA,EAAAA,cAAA,YAAUtB,GAAIwC,GACZlB,EAAAA,cAAA,QACEC,EAAG,EACHC,EAAG,EACHjB,MAAO+B,EACPvC,OAAQE,GAAkBF,MAIhCuB,EAAAA,cAAA,KAAGoB,UAAW,aAAaH,QACzBjB,EAAAA,cAAA,KAAGqB,SAAU,QAAQH,MACnBlB,EAAAA,cAACsB,EAAAA,eAAc,CAACR,UAAWA,MAGhB,IAK3B,C","sources":["../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/renderSvg.tsx"],"sourcesContent":["import React from 'react'\nimport { ThemeOptions } from '@mui/material'\nimport {\n  getContainingView,\n  getViewParams,\n  ReactRendering,\n} from '@jbrowse/core/util'\n\n// locals\nimport { ExportSvgOptions, LinearGenomeViewModel } from '../../LinearGenomeView'\nimport BlockState, { renderBlockData } from './serverSideRenderedBlock'\nimport { getId } from './util'\n\nimport { BaseLinearDisplayModel } from './BaseLinearDisplayModel'\n\nexport async function renderBaseLinearDisplaySvg(\n  self: BaseLinearDisplayModel,\n  opts: ExportSvgOptions & {\n    overrideHeight: number\n    theme?: ThemeOptions\n  },\n) {\n  const { height, id } = self\n  const { overrideHeight } = opts\n  const view = getContainingView(self) as LinearGenomeViewModel\n  const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view\n  const renderings = await Promise.all(\n    roundedDynamicBlocks.map(async block => {\n      const blockState = BlockState.create({\n        key: block.key,\n        region: block,\n      })\n\n      // regionCannotBeRendered can return jsx so look for plaintext\n      // version, or just get the default if none available\n      const cannotBeRenderedReason =\n        self.regionCannotBeRenderedText(block) ||\n        self.regionCannotBeRendered(block)\n\n      if (cannotBeRenderedReason) {\n        return [\n          block,\n          {\n            reactElement: (\n              <>\n                <rect x={0} y={0} width={width} height={20} fill=\"#aaa\" />\n                <text x={0} y={15}>\n                  {cannotBeRenderedReason}\n                </text>\n              </>\n            ),\n          },\n        ] as const\n      }\n\n      const { rpcManager, renderArgs, renderProps, rendererType } =\n        renderBlockData(blockState, self)\n\n      return [\n        block,\n        await rendererType.renderInClient(rpcManager, {\n          ...renderArgs,\n          ...renderProps,\n          viewParams: getViewParams(self, true),\n          exportSVG: opts,\n          theme: opts.theme || renderProps.theme,\n        }),\n      ] as const\n    }),\n  )\n\n  return (\n    <>\n      {renderings.map(([block, rendering], index) => {\n        const { offsetPx, widthPx } = block\n        const offset = offsetPx - viewOffsetPx\n        const clipid = getId(id, index)\n\n        return (\n          /* biome-ignore lint/suspicious/noArrayIndexKey: */\n          <React.Fragment key={`frag-${index}`}>\n            <defs>\n              <clipPath id={clipid}>\n                <rect\n                  x={0}\n                  y={0}\n                  width={widthPx}\n                  height={overrideHeight || height}\n                />\n              </clipPath>\n            </defs>\n            <g transform={`translate(${offset} 0)`}>\n              <g clipPath={`url(#${clipid})`}>\n                <ReactRendering rendering={rendering} />\n              </g>\n            </g>\n          </React.Fragment>\n        )\n      })}\n    </>\n  )\n}\n"],"names":["async","renderBaseLinearDisplaySvg","self","opts","height","id","overrideHeight","view","getContainingView","offsetPx","viewOffsetPx","roundedDynamicBlocks","width","renderings","Promise","all","map","blockState","BlockState","create","key","block","region","cannotBeRenderedReason","regionCannotBeRenderedText","regionCannotBeRendered","reactElement","React","x","y","fill","rpcManager","renderArgs","renderProps","rendererType","renderBlockData","renderInClient","viewParams","getViewParams","exportSVG","theme","rendering","index","widthPx","offset","clipid","getId","transform","clipPath","ReactRendering"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3368.6e9b017b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3368],{83368:(s,e,t)=>{t.r(e),t.d(e,{default:()=>a.A,getIconButtonUtilityClass:()=>b.G,iconButtonClasses:()=>b.A});var a=t(61723),b=t(72559)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3384.e146a796.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3384],{93384:(e,t,n)=>{n.r(t),n.d(t,{default:()=>w});var a=n(7552),l=n(68446),i=n(29499),o=n(36715),s=n(1343),r=n(58507),d=n(5401),c=n(49823);const w=(0,l.observer)((function({model:e,handleClose:t}){const[n,l]=(0,a.useState)(`${e.windowSizeSetting}`),[w,m]=(0,a.useState)(`${e.windowDeltaSetting}`);return a.createElement(c.Dialog,{open:!0,onClose:t,title:"Edit GC content params"},a.createElement(i.A,null,a.createElement(o.A,null,"GC content is calculated in a particular sliding window of size N, and then the sliding window moves (steps) some number of bases M forward. Note that small step sizes can result in high CPU over large areas, and it is not recommended to make the step size larger than the window size as then the sliding window will miss contents."),w>n?a.createElement(c.ErrorMessage,{error:"It is not recommended to make the step size larger than the window size"}):null,a.createElement(s.A,{label:"Size of sliding window (bp)",value:n,onChange:e=>{l(e.target.value)}}),a.createElement(s.A,{label:"Step size of sliding window (bp)",value:w,onChange:e=>{m(e.target.value)}}),a.createElement(r.A,null,a.createElement(d.A,{variant:"contained",onClick:()=>{e.setGCContentParams({windowSize:+n,windowDelta:+w}),t()}},"Submit"),a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"))))}))}}]);
+//# sourceMappingURL=3384.e146a796.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3384.e146a796.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3384.e146a796.chunk.js","mappings":"gPAWA,MAsEA,GAtEkCA,EAAAA,EAAAA,WAAS,UAAU,MACnDC,EAAK,YACLC,IASA,MAAOC,EAAYC,IAAiBC,EAAAA,EAAAA,UAAS,GAAGJ,EAAMK,sBAC/CC,EAAaC,IAAkBH,EAAAA,EAAAA,UAAS,GAAGJ,EAAMQ,sBAExD,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASX,EAAaY,MAAM,0BACvCJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAU,KAAC,+UAOXT,EAAcJ,EACbO,EAAAA,cAACO,EAAAA,aAAY,CAACC,MAAM,4EAClB,KACJR,EAAAA,cAACS,EAAAA,EAAS,CACRC,MAAM,8BACNC,MAAOlB,EACPmB,SAAUC,IACRnB,EAAcmB,EAAMC,OAAOH,MAAM,IAGrCX,EAAAA,cAACS,EAAAA,EAAS,CACRC,MAAM,mCACNC,MAAOd,EACPe,SAAUC,IACRf,EAAee,EAAMC,OAAOH,MAAM,IAItCX,EAAAA,cAACe,EAAAA,EAAa,KACZf,EAAAA,cAACgB,EAAAA,EAAM,CACLC,QAAQ,YACRC,QAASA,KACP3B,EAAM4B,mBAAmB,CACvB1B,YAAaA,EACbI,aAAcA,IAEhBL,GAAa,GAEhB,UAGDQ,EAAAA,cAACgB,EAAAA,EAAM,CACLC,QAAQ,YACRG,MAAM,YACNF,QAASA,KACP1B,GAAa,GAEhB,YAOX,G","sources":["../../../plugins/gccontent/src/LinearGCContentDisplay/components/EditGCContentParams.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\n\nconst EditGCContentParamsDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    windowSizeSetting: number\n    windowDeltaSetting: number\n    setGCContentParams: (a: { windowSize: number; windowDelta: number }) => void\n  }\n  handleClose: () => void\n}) {\n  const [windowSize, setWindowSize] = useState(`${model.windowSizeSetting}`)\n  const [windowDelta, setWindowDelta] = useState(`${model.windowDeltaSetting}`)\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Edit GC content params\">\n      <DialogContent>\n        <Typography>\n          GC content is calculated in a particular sliding window of size N, and\n          then the sliding window moves (steps) some number of bases M forward.\n          Note that small step sizes can result in high CPU over large areas,\n          and it is not recommended to make the step size larger than the window\n          size as then the sliding window will miss contents.\n        </Typography>\n        {windowDelta > windowSize ? (\n          <ErrorMessage error=\"It is not recommended to make the step size larger than the window size\" />\n        ) : null}\n        <TextField\n          label=\"Size of sliding window (bp)\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n        <TextField\n          label=\"Step size of sliding window (bp)\"\n          value={windowDelta}\n          onChange={event => {\n            setWindowDelta(event.target.value)\n          }}\n        />\n\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            onClick={() => {\n              model.setGCContentParams({\n                windowSize: +windowSize,\n                windowDelta: +windowDelta,\n              })\n              handleClose()\n            }}\n          >\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default EditGCContentParamsDialog\n"],"names":["observer","model","handleClose","windowSize","setWindowSize","useState","windowSizeSetting","windowDelta","setWindowDelta","windowDeltaSetting","React","Dialog","open","onClose","title","DialogContent","Typography","ErrorMessage","error","TextField","label","value","onChange","event","target","DialogActions","Button","variant","onClick","setGCContentParams","color"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3416.f7c72cbe.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3416],{3416:(e,a,t)=>{t.r(a),t.d(a,{default:()=>b});var r=t(7552),n=t(29499),s=t(36715),i=t(59705),o=t(1343),l=t(58507),c=t(5401),d=t(49823),m=t(75785),p=t(68584),f=t(91468),y=t(99546),u=t(82727);const{featurizeSA:g,getClip:h,getLength:v,getLengthSansClipping:w,getTag:S}=u.aF,k=(0,m.n9)()({root:{width:300}});function b({track:e,feature:a,handleClose:t}){const{classes:m}=k(),[u,b]=(0,r.useState)("0"),[A,C]=(0,r.useState)(),[$,x]=(0,r.useState)(),N=+u;return(0,r.useEffect)((()=>{(async()=>{C(void 0);try{if(2048&a.get("flags")){const t=(S(a,"SA")||"").split(";")[0],[r,n]=t.split(","),{rpcManager:s}=(0,y.getSession)(e),i=(0,p.getConf)(e,"adapter"),o=(0,f.getRpcSessionId)(e),l=(await s.call(o,"CoreGetFeatures",{adapterConfig:i,sessionId:o,regions:[{refName:r,start:+n-1,end:+n}]})).find((e=>!(e.get("name")!==a.get("name")||2048&e.get("flags")||256&e.get("flags"))));if(!l)throw new Error("primary feature not found");x(l)}else x(a)}catch(e){console.error(e),C(e)}})()}),[a,e]),r.createElement(d.Dialog,{open:!0,onClose:t,title:"Set window size"},r.createElement(n.A,null,A?r.createElement(s.A,{color:"error"},`${A}`):$?r.createElement("div",{className:m.root},256&$.get("flags")?r.createElement(s.A,{style:{color:"orange"}},"Note: You selected a secondary alignment (which generally does not have SA tags or SEQ fields) so do a full reconstruction of the alignment"):null,r.createElement(s.A,null,"Show an extra window size around each part of the split alignment. Using a larger value can allow you to see more genomic context."),r.createElement(o.A,{value:N,onChange:e=>{b(e.target.value)},label:"Set window size"})):r.createElement("div",null,r.createElement(s.A,null,"To accurately perform comparison we are fetching the primary alignment. Loading primary feature..."),r.createElement(i.A,null))),r.createElement(l.A,null,r.createElement(c.A,{variant:"contained",color:"secondary",onClick:t},"Cancel"),r.createElement(c.A,{disabled:!$,variant:"contained",color:"primary",onClick:function(){try{if(!$)return;const a=$,r=(0,y.getSession)(e),n=(0,y.getContainingView)(e),s=a.get("CIGAR"),i=a.get("flags"),o=a.get("strand"),l=S(a,"SA")||"",c=a.get("name"),d=h(s,1),m=`${c}_assembly_${Date.now()}`,[f]=(0,p.getConf)(e,"assemblyNames"),u=[f,m],k=`track-${Date.now()}`,b=`${c}_vs_${f}`,{assemblyManager:A}=r,C=A.get(f);if(!C)throw new Error("assembly not found");const x=g(l,a.id(),o,c,!0),R=a.toJSON();R.clipPos=d,R.strand=1,R.mate={refName:c,start:d,end:d+w(s)};const D=v(2048&i?x[0].CIGAR:s),E=[R,...x];E.forEach(((e,a)=>{e.refName=C.getCanonicalRefName(e.refName)||e.refName,e.syntenyId=a,e.mate.syntenyId=a,e.mate.uniqueId=`${e.uniqueId}_mate`})),E.sort(((e,a)=>e.clipPos-a.clipPos));const M=a.get("seq"),P=[...E,...E.map((e=>e.mate))],q=2*N,I=E.reduce(((e,a)=>e+a.end-a.start+q),0),L=`${c}_${Date.now()}`,T=(0,p.getConf)(C,"sequence"),_=(0,y.gatherOverlaps)(E.map((e=>({...e,start:Math.max(0,e.start-N),end:e.end+N,assemblyName:f}))));r.addTemporaryAssembly?.({name:m,sequence:{type:"ReferenceSequenceTrack",name:"Read sequence",trackId:L,assemblyNames:[m],adapter:{type:"FromConfigSequenceAdapter",noAssemblyManager:!0,features:[{start:0,end:D,seq:M||"",refName:c,uniqueId:`${Math.random()}`}]}}}),r.addView("LinearSyntenyView",{type:"LinearSyntenyView",views:[{type:"LinearGenomeView",hideHeader:!0,offsetPx:0,bpPerPx:I/n.width,displayedRegions:_,tracks:[{id:`${Math.random()}`,type:"ReferenceSequenceTrack",assemblyNames:[f],configuration:T.trackId,displays:[{id:`${Math.random()}`,type:"LinearReferenceSequenceDisplay",showReverse:!0,showTranslation:!1,height:35,configuration:`${L}-LinearReferenceSequenceDisplay`}]}]},{type:"LinearGenomeView",hideHeader:!0,offsetPx:0,bpPerPx:D/n.width,displayedRegions:[{assemblyName:m,start:0,end:D,refName:c}],tracks:[{id:`${Math.random()}`,type:"ReferenceSequenceTrack",configuration:L,displays:[{id:`${Math.random()}`,type:"LinearReferenceSequenceDisplay",showReverse:!0,showTranslation:!1,height:35,configuration:`${L}-LinearReferenceSequenceDisplay`}]}]}],viewTrackConfigs:[{type:"SyntenyTrack",assemblyNames:u,adapter:{type:"FromConfigAdapter",features:P},trackId:k,name:b}],tracks:[{configuration:k,type:"SyntenyTrack",displays:[{type:"LinearSyntenyDisplay",configuration:`${k}-LinearSyntenyDisplay`}]}],displayName:`${c} vs ${f}`}),t()}catch(e){console.error(e),C(e)}}},"Submit")))}},59705:(e,a,t)=>{t.d(a,{A:()=>k});var r=t(7552),n=t(93878),s=t(70799),i=t(64761),o=t(51148),l=t(60129),c=t(4785),d=t(15622),m=t(58520),p=t(72489),f=t(69500);const y=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,u=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,g="string"!=typeof y?i.AH`
+        animation: ${y} 1.4s linear infinite;
+      `:null,h="string"!=typeof u?i.AH`
+        animation: ${u} 1.4s ease-in-out infinite;
+      `:null,v=(0,o.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,a)=>{const{ownerState:t}=e;return[a.root,a[t.variant],a[`color${(0,d.A)(t.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:g||{animation:`${y} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,m.A)()).map((([a])=>({props:{color:a},style:{color:(e.vars||e).palette[a].main}})))]})))),w=(0,o.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,a)=>a.svg})({display:"block"}),S=(0,o.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,a)=>{const{ownerState:t}=e;return[a.circle,a[`circle${(0,d.A)(t.variant)}`],t.disableShrink&&a.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:h||{animation:`${u} 1.4s ease-in-out infinite`}}]})))),k=r.forwardRef((function(e,a){const t=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:r,color:i="primary",disableShrink:o=!1,size:l=40,style:m,thickness:y=3.6,value:u=0,variant:g="indeterminate",...h}=t,k={...t,color:i,disableShrink:o,size:l,thickness:y,value:u,variant:g},b=(e=>{const{classes:a,variant:t,color:r,disableShrink:n}=e,i={root:["root",t,`color${(0,d.A)(r)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(t)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,p.b,a)})(k),A={},C={},$={};if("determinate"===g){const e=2*Math.PI*((44-y)/2);A.strokeDasharray=e.toFixed(3),$["aria-valuenow"]=Math.round(u),A.strokeDashoffset=`${((100-u)/100*e).toFixed(3)}px`,C.transform="rotate(-90deg)"}return(0,f.jsx)(v,{className:(0,n.A)(b.root,r),style:{width:l,height:l,...C,...m},ownerState:k,ref:a,role:"progressbar",...$,...h,children:(0,f.jsx)(w,{className:b.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,f.jsx)(S,{className:b.circle,style:A,ownerState:k,cx:44,cy:44,r:(44-y)/2,fill:"none",strokeWidth:y})})})}))},72489:(e,a,t)=>{t.d(a,{A:()=>i,b:()=>s});var r=t(33761),n=t(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,r.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=3416.f7c72cbe.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3416.f7c72cbe.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3416.f7c72cbe.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearReadVsRef/LinearReadVsRef.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport {\n  Button,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n  getSession,\n  getContainingView,\n  gatherOverlaps,\n  Feature,\n} from '@jbrowse/core/util'\n\n// locals\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\nconst { featurizeSA, getClip, getLength, getLengthSansClipping, getTag } =\n  MismatchParser\n\ninterface ReducedFeature {\n  refName: string\n  start: number\n  clipPos: number\n  end: number\n  strand: number\n  seqLength: number\n  syntenyId?: number\n  uniqueId: string\n  mate: {\n    refName: string\n    start: number\n    end: number\n    syntenyId?: number\n    uniqueId?: string\n  }\n}\n\nconst useStyles = makeStyles()({\n  root: {\n    width: 300,\n  },\n})\n\nexport default function ReadVsRefDialog({\n  track,\n  feature: preFeature,\n  handleClose,\n}: {\n  feature: Feature\n  handleClose: () => void\n\n  track: any\n}) {\n  const { classes } = useStyles()\n\n  // window size stored as string, because it corresponds to a textfield which\n  // is parsed as number on submit\n  const [windowSizeText, setWindowSize] = useState('0')\n  const [error, setError] = useState<unknown>()\n  const [primaryFeature, setPrimaryFeature] = useState<Feature>()\n  const windowSize = +windowSizeText\n\n  // we need to fetch the primary alignment if the selected feature is 2048.\n  // this should be the first in the list of the SA tag\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      setError(undefined)\n      try {\n        if (preFeature.get('flags') & 2048) {\n          const SA: string = getTag(preFeature, 'SA') || ''\n          const primaryAln = SA.split(';')[0]!\n          const [saRef, saStart] = primaryAln.split(',')\n          const { rpcManager } = getSession(track)\n          const adapterConfig = getConf(track, 'adapter')\n          const sessionId = getRpcSessionId(track)\n\n          const feats = (await rpcManager.call(sessionId, 'CoreGetFeatures', {\n            adapterConfig,\n            sessionId,\n            regions: [\n              {\n                refName: saRef,\n                start: +saStart! - 1,\n                end: +saStart!,\n              },\n            ],\n          })) as Feature[]\n\n          const result = feats.find(\n            f =>\n              f.get('name') === preFeature.get('name') &&\n              !(f.get('flags') & 2048) &&\n              !(f.get('flags') & 256),\n          )\n          if (result) {\n            setPrimaryFeature(result)\n          } else {\n            throw new Error('primary feature not found')\n          }\n        } else {\n          setPrimaryFeature(preFeature)\n        }\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [preFeature, track])\n\n  function onSubmit() {\n    try {\n      if (!primaryFeature) {\n        return\n      }\n      const feature = primaryFeature\n      const session = getSession(track)\n      const view = getContainingView(track)\n      const cigar = feature.get('CIGAR') as string\n      const flags = feature.get('flags') as number\n      const origStrand = feature.get('strand') as number\n      const SA = (getTag(feature, 'SA') as string) || ''\n      const readName = feature.get('name') as string\n      const clipPos = getClip(cigar, 1)\n\n      const readAssembly = `${readName}_assembly_${Date.now()}`\n      const [trackAssembly] = getConf(track, 'assemblyNames')\n      const assemblyNames = [trackAssembly, readAssembly]\n      const trackId = `track-${Date.now()}`\n      const trackName = `${readName}_vs_${trackAssembly}`\n\n      // get the canonical refname for the read because if the\n      // read.get('refName') is chr1 and the actual fasta refName is 1 then no\n      // tracks can be opened on the top panel of the linear read vs ref\n      const { assemblyManager } = session\n      const assembly = assemblyManager.get(trackAssembly)\n      if (!assembly) {\n        throw new Error('assembly not found')\n      }\n\n      const suppAlns = featurizeSA(SA, feature.id(), origStrand, readName, true)\n\n      const feat = feature.toJSON()\n      feat.clipPos = clipPos\n      feat.strand = 1\n\n      feat.mate = {\n        refName: readName,\n        start: clipPos,\n        end: clipPos + getLengthSansClipping(cigar),\n      }\n\n      // if secondary alignment or supplementary, calculate length from SA[0]'s\n      // CIGAR which is the primary alignments. otherwise it is the primary\n      // alignment just use seq.length if primary alignment\n      const totalLength =\n        flags & 2048 ? getLength(suppAlns[0]!.CIGAR) : getLength(cigar)\n\n      const features = [feat, ...suppAlns] as ReducedFeature[]\n\n      features.forEach((f, idx) => {\n        f.refName = assembly.getCanonicalRefName(f.refName) || f.refName\n        f.syntenyId = idx\n        f.mate.syntenyId = idx\n        f.mate.uniqueId = `${f.uniqueId}_mate`\n      })\n      features.sort((a, b) => a.clipPos - b.clipPos)\n\n      const featSeq = feature.get('seq') as string | undefined\n\n      // the config feature store includes synthetic mate features\n      // mapped to the read assembly\n      const configFeatureStore = [...features, ...features.map(f => f.mate)]\n      const expand = 2 * windowSize\n      const refLen = features.reduce((a, f) => a + f.end - f.start + expand, 0)\n\n      const seqTrackId = `${readName}_${Date.now()}`\n      const sequenceTrackConf = getConf(assembly, 'sequence')\n      const lgvRegions = gatherOverlaps(\n        features.map(f => ({\n          ...f,\n          start: Math.max(0, f.start - windowSize),\n          end: f.end + windowSize,\n          assemblyName: trackAssembly,\n        })),\n      )\n\n      session.addTemporaryAssembly?.({\n        name: readAssembly,\n        sequence: {\n          type: 'ReferenceSequenceTrack',\n          name: 'Read sequence',\n          trackId: seqTrackId,\n          assemblyNames: [readAssembly],\n          adapter: {\n            type: 'FromConfigSequenceAdapter',\n            noAssemblyManager: true,\n            features: [\n              {\n                start: 0,\n                end: totalLength,\n                seq: featSeq || '', // can be empty if user clicks secondary read\n                refName: readName,\n                uniqueId: `${Math.random()}`,\n              },\n            ],\n          },\n        },\n      })\n\n      session.addView('LinearSyntenyView', {\n        type: 'LinearSyntenyView',\n        views: [\n          {\n            type: 'LinearGenomeView',\n            hideHeader: true,\n            offsetPx: 0,\n            bpPerPx: refLen / view.width,\n            displayedRegions: lgvRegions,\n            tracks: [\n              {\n                id: `${Math.random()}`,\n                type: 'ReferenceSequenceTrack',\n                assemblyNames: [trackAssembly],\n                configuration: sequenceTrackConf.trackId,\n                displays: [\n                  {\n                    id: `${Math.random()}`,\n                    type: 'LinearReferenceSequenceDisplay',\n                    showReverse: true,\n                    showTranslation: false,\n                    height: 35,\n                    configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,\n                  },\n                ],\n              },\n            ],\n          },\n          {\n            type: 'LinearGenomeView',\n            hideHeader: true,\n            offsetPx: 0,\n            bpPerPx: totalLength / view.width,\n            displayedRegions: [\n              {\n                assemblyName: readAssembly,\n                start: 0,\n                end: totalLength,\n                refName: readName,\n              },\n            ],\n            tracks: [\n              {\n                id: `${Math.random()}`,\n                type: 'ReferenceSequenceTrack',\n                configuration: seqTrackId,\n                displays: [\n                  {\n                    id: `${Math.random()}`,\n                    type: 'LinearReferenceSequenceDisplay',\n                    showReverse: true,\n                    showTranslation: false,\n                    height: 35,\n                    configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n        viewTrackConfigs: [\n          {\n            type: 'SyntenyTrack',\n            assemblyNames,\n            adapter: {\n              type: 'FromConfigAdapter',\n              features: configFeatureStore,\n            },\n            trackId,\n            name: trackName,\n          },\n        ],\n        tracks: [\n          {\n            configuration: trackId,\n            type: 'SyntenyTrack',\n            displays: [\n              {\n                type: 'LinearSyntenyDisplay',\n                configuration: `${trackId}-LinearSyntenyDisplay`,\n              },\n            ],\n          },\n        ],\n        displayName: `${readName} vs ${trackAssembly}`,\n      })\n      handleClose()\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set window size\">\n      <DialogContent>\n        {error ? (\n          <Typography color=\"error\">{`${error}`}</Typography>\n        ) : !primaryFeature ? (\n          <div>\n            <Typography>\n              To accurately perform comparison we are fetching the primary\n              alignment. Loading primary feature...\n            </Typography>\n            <CircularProgress />\n          </div>\n        ) : (\n          <div className={classes.root}>\n            {primaryFeature.get('flags') & 256 ? (\n              <Typography style={{ color: 'orange' }}>\n                Note: You selected a secondary alignment (which generally does\n                not have SA tags or SEQ fields) so do a full reconstruction of\n                the alignment\n              </Typography>\n            ) : null}\n            <Typography>\n              Show an extra window size around each part of the split alignment.\n              Using a larger value can allow you to see more genomic context.\n            </Typography>\n\n            <TextField\n              value={windowSize}\n              onChange={event => {\n                setWindowSize(event.target.value)\n              }}\n              label=\"Set window size\"\n            />\n          </div>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button variant=\"contained\" color=\"secondary\" onClick={handleClose}>\n          Cancel\n        </Button>\n        <Button\n          disabled={!primaryFeature}\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={onSubmit}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["featurizeSA","getClip","getLength","getLengthSansClipping","getTag","MismatchParser","useStyles","makeStyles","root","width","ReadVsRefDialog","track","feature","preFeature","handleClose","classes","windowSizeText","setWindowSize","useState","error","setError","primaryFeature","setPrimaryFeature","windowSize","useEffect","undefined","get","primaryAln","split","saRef","saStart","rpcManager","getSession","adapterConfig","getConf","sessionId","getRpcSessionId","result","call","regions","refName","start","end","find","f","Error","e","console","React","Dialog","open","onClose","title","DialogContent","Typography","color","className","style","TextField","value","onChange","event","target","label","CircularProgress","DialogActions","Button","variant","onClick","disabled","session","view","getContainingView","cigar","flags","origStrand","SA","readName","clipPos","readAssembly","Date","now","trackAssembly","assemblyNames","trackId","trackName","assemblyManager","assembly","suppAlns","id","feat","toJSON","strand","mate","totalLength","CIGAR","features","forEach","idx","getCanonicalRefName","syntenyId","uniqueId","sort","a","b","featSeq","configFeatureStore","map","expand","refLen","reduce","seqTrackId","sequenceTrackConf","lgvRegions","gatherOverlaps","Math","max","assemblyName","addTemporaryAssembly","name","sequence","type","adapter","noAssemblyManager","seq","random","addView","views","hideHeader","offsetPx","bpPerPx","displayedRegions","tracks","configuration","displays","showReverse","showTranslation","height","viewTrackConfigs","displayName","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","theme","display","variants","transition","transitions","create","animation","Object","entries","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","size","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","PI","toFixed","round","transform","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3425.be85a6ad.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3425],{23425:(e,t,a)=>{a.r(t),a.d(t,{default:()=>k});var n=a(7552),r=a(68446),o=a(99546),s=a(92516),i=a(49823),c=a(29499),l=a(63011),d=a(41578),m=a(36715),p=a(63165),u=a(1343),h=a(58507),f=a(5401),A=a(99834),b=a(75785),y=a(550),x=a(7720),w=a(84495),g=a(32984);const v=(0,b.n9)()((e=>({expandIcon:{color:e.palette.tertiary.contrastText||"#fff"},minWidth:{minWidth:500}}))),k=(0,r.observer)((function({onClose:e,model:t}){const{classes:a}=v(),[r,b]=(0,n.useState)(),[k,S]=(0,n.useState)(),[E,C]=(0,n.useState)(""),I=(0,o.getSession)(t),{assemblyNames:N}=I,[R,W]=(0,n.useState)(N[0]),[M,j]=(0,n.useState)("shareLinkAccordion");return n.createElement(i.Dialog,{open:!0,onClose:e,maxWidth:"xl",title:"Import bookmarks"},n.createElement(c.A,{className:a.minWidth},n.createElement(l.A,{expanded:"shareLinkAccordion"===M,onChange:()=>{j("shareLinkAccordion")}},n.createElement(d.A,{expandIcon:n.createElement(x.A,{className:a.expandIcon})},n.createElement(m.A,{style:{display:"flex",alignItems:"center",gap:"5px"}},"Import from share link")),n.createElement(p.A,null,n.createElement(m.A,null,"Paste a bookmark share link generated by the 'Share' button from the bookmarks widget"),n.createElement(u.A,{label:"Enter Share URL",variant:"outlined",fullWidth:!0,value:E,onChange:e=>{C(e.target.value)}}))),n.createElement(l.A,{expanded:"fileAccordion"===M,onChange:()=>{j("fileAccordion")}},n.createElement(d.A,{expandIcon:n.createElement(x.A,{className:a.expandIcon})},n.createElement(m.A,null,"Import from file")),n.createElement(p.A,null,n.createElement(i.FileSelector,{location:r,setLocation:b,name:"File",description:'Choose a BED or TSV format file to import. Required TSV column headers are "chrom, start, end, label, assembly_name".'}),n.createElement(i.AssemblySelector,{onChange:e=>{W(e)},helperText:"Select the assembly for BED file.",session:I,selected:R}))),k?n.createElement(i.ErrorMessage,{error:k}):null),n.createElement(h.A,null,n.createElement(f.A,{variant:"contained",color:"secondary",onClick:e},"Cancel"),n.createElement(f.A,{"data-testid":"dialogImport",variant:"contained",color:"primary",disabled:!r&&!E,startIcon:n.createElement(y.A,null),onClick:async()=>{try{if("fileAccordion"===M&&r){const e=(await(0,A.openLocation)(r).readFile("utf8")).split(/\n|\r\n|\r/).filter((e=>!!e.trim()));"BED"==((a=e[0]).startsWith("chrom")&&a.includes("assembly_name")?"TSV":"BED")?t.importBookmarks(await async function(e,t){return e.filter((e=>!e.startsWith("#"))).map((e=>{const[a,n,r,o]=e.split("\t");return{assemblyName:t,refName:a,start:+n,end:+r,label:"."===o?void 0:o}}))}(e,R)):t.importBookmarks(await async function(e){return e[0].startsWith("chrom")&&(e=e.slice(1)),e.filter((e=>!e.startsWith("#"))).map((e=>{const[t,a,n,r,o]=e.split("\t");return{assemblyName:o,refName:t,start:+a,end:+n,label:"."===r?void 0:r}}))}(e))}else"shareLinkAccordion"===M&&E&&(0,s.xv)(I)&&t.importBookmarks(await async function(e,t){const a=new URL(e),n=a.searchParams.get("bookmarks"),r=a.searchParams.get("password"),o=await(0,g.Z)(`${t??"https://share.jbrowse.org/api/v1/"}load`,n||"",r||"");return JSON.parse(await(0,w.LP)(o)).sharedBookmarks}(E,I.shareURL));e()}catch(e){console.error(e),S(e)}var a}},"Import")))}))},32984:(e,t,a)=>{a.d(t,{J:()=>i,Z:()=>c});var n=a(84495);const r=async(e,t)=>(await Promise.all([a.e(7753),a.e(9831),a.e(5156)]).then(a.t.bind(a,29831,23))).encrypt(e,t).toString(),o=async(e,t)=>{const n=await Promise.all([a.e(7753),a.e(9831),a.e(5156)]).then(a.t.bind(a,29831,23)),r=await Promise.all([a.e(7753),a.e(6235)]).then(a.t.bind(a,12598,23));return n.decrypt(e,t).toString(r)};function s(e){try{return JSON.parse(e).message}catch(t){return e}}async function i(e,t,a){const o=await(0,n.eW)(JSON.stringify(e)),i=window.btoa([...window.crypto.getRandomValues(new Uint8Array(10))].map((e=>String.fromCharCode(e))).join("")).replaceAll(/[+/]/g,"").slice(0,5);const c=await r(o,i),l=new FormData;l.append("session",c),l.append("dateShared",`${Date.now()}`),l.append("referer",a);const d=await fetch(`${t}share`,{method:"POST",mode:"cors",body:l});if(!d.ok){const e=await d.text();throw new Error(s(e))}return{json:await d.json(),encryptedSession:c,password:i}}async function c(e,t,a,n){const r=t.split("share-")[1],i=`${e}?sessionId=${encodeURIComponent(r)}`,c=await fetch(i,{signal:n});if(!c.ok){const e=await c.text();throw new Error(s(e))}const l=await c.json();return o(l.session,a)}},7720:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(74893),r=a(69500);const o=(0,n.A)((0,r.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},63165:(e,t,a)=>{a.d(t,{A:()=>p});var n=a(7552),r=a(93878),o=a(70799),s=a(51148),i=a(60129),c=a(4785),l=a(79509),d=a(69500);const m=(0,s.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>({padding:e.spacing(1,2,2)})))),p=n.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiAccordionDetails"}),{className:n,...s}=a,i=a,p=(e=>{const{classes:t}=e;return(0,o.A)({root:["root"]},l.n,t)})(i);return(0,d.jsx)(m,{className:(0,r.A)(p.root,n),ref:t,ownerState:i,...s})}))},79509:(e,t,a)=>{a.d(t,{A:()=>s,n:()=>o});var n=a(33761),r=a(85693);function o(e){return(0,r.Ay)("MuiAccordionDetails",e)}const s=(0,n.A)("MuiAccordionDetails",["root"])},41578:(e,t,a)=>{a.d(t,{A:()=>x});var n=a(7552),r=a(93878),o=a(70799),s=a(51148),i=a(60129),c=a(4785),l=a(48054),d=a(51132),m=a(33761),p=a(85693);function u(e){return(0,p.Ay)("MuiAccordionSummary",e)}const h=(0,m.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var f=a(69500);const A=(0,s.Ay)(l.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>{const t={duration:e.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create(["min-height","background-color"],t),[`&.${h.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${h.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${h.disabled})`]:{cursor:"pointer"},variants:[{props:e=>!e.disableGutters,style:{[`&.${h.expanded}`]:{minHeight:64}}}]}}))),b=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(e,t)=>t.content})((0,i.A)((({theme:e})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create(["margin"],{duration:e.transitions.duration.shortest}),[`&.${h.expanded}`]:{margin:"20px 0"}}}]})))),y=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(e,t)=>t.expandIconWrapper})((0,i.A)((({theme:e})=>({display:"flex",color:(e.vars||e).palette.action.active,transform:"rotate(0deg)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest}),[`&.${h.expanded}`]:{transform:"rotate(180deg)"}})))),x=n.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiAccordionSummary"}),{children:s,className:i,expandIcon:l,focusVisibleClassName:m,onClick:p,...h}=a,{disabled:x=!1,disableGutters:w,expanded:g,toggle:v}=n.useContext(d.A),k={...a,expanded:g,disabled:x,disableGutters:w},S=(e=>{const{classes:t,expanded:a,disabled:n,disableGutters:r}=e,s={root:["root",a&&"expanded",n&&"disabled",!r&&"gutters"],focusVisible:["focusVisible"],content:["content",a&&"expanded",!r&&"contentGutters"],expandIconWrapper:["expandIconWrapper",a&&"expanded"]};return(0,o.A)(s,u,t)})(k);return(0,f.jsxs)(A,{focusRipple:!1,disableRipple:!0,disabled:x,component:"div","aria-expanded":g,className:(0,r.A)(S.root,i),focusVisibleClassName:(0,r.A)(S.focusVisible,m),onClick:e=>{v&&v(e),p&&p(e)},ref:t,ownerState:k,...h,children:[(0,f.jsx)(b,{className:S.content,ownerState:k,children:s}),l&&(0,f.jsx)(y,{className:S.expandIconWrapper,ownerState:k,children:l})]})}))}}]);
+//# sourceMappingURL=3425.be85a6ad.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3425.be85a6ad.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3425.be85a6ad.chunk.js","mappings":"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","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/sessionSharing.ts","../../../node_modules/@mui/icons-material/esm/ExpandMore.js","../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../../../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport { FileLocation, isSessionWithShareURL } from '@jbrowse/core/util/types'\nimport { ErrorMessage, FileSelector } from '@jbrowse/core/ui'\nimport {\n  Accordion,\n  AccordionSummary,\n  AccordionDetails,\n  Button,\n  DialogContent,\n  DialogActions,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { Dialog, AssemblySelector } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport ImportIcon from '@mui/icons-material/Publish'\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\nimport { fromUrlSafeB64 } from '../../utils'\nimport { readSessionFromDynamo } from '../../sessionSharing'\n\nconst useStyles = makeStyles()(theme => ({\n  expandIcon: {\n    color: theme.palette.tertiary.contrastText || '#fff',\n  },\n  minWidth: {\n    minWidth: 500,\n  },\n}))\n\nasync function getBookmarksFromShareLink(shareLink: string, shareURL?: string) {\n  const defaultURL = 'https://share.jbrowse.org/api/v1/'\n  const urlParams = new URL(shareLink)\n  const sessionQueryParam = urlParams.searchParams.get('bookmarks')\n  const password = urlParams.searchParams.get('password')\n  const decryptedSession = await readSessionFromDynamo(\n    `${shareURL ?? defaultURL}load`,\n    sessionQueryParam || '',\n    password || '',\n  )\n\n  const sharedSession = JSON.parse(await fromUrlSafeB64(decryptedSession))\n  return sharedSession.sharedBookmarks\n}\n\nfunction guessFileType(header: string) {\n  return header.startsWith('chrom') && header.includes('assembly_name')\n    ? 'TSV'\n    : 'BED'\n}\n\nasync function getBookmarksFromTSVFile(lines: string[]) {\n  if (lines[0]!.startsWith('chrom')) {\n    lines = lines.slice(1)\n  }\n\n  return lines\n    .filter(f => !f.startsWith('#'))\n    .map(line => {\n      const [refName, start, end, label, assemblyName] = line.split('\\t')\n      return {\n        assemblyName: assemblyName!,\n        refName: refName!,\n        start: +start!,\n        end: +end!,\n        label: label === '.' ? undefined : label,\n      }\n    })\n}\n\nasync function getBookmarksFromBEDFile(lines: string[], selectedAsm: string) {\n  return lines\n    .filter(f => !f.startsWith('#'))\n    .map(line => {\n      const [refName, start, end, label] = line.split('\\t')\n      return {\n        assemblyName: selectedAsm,\n        refName: refName!,\n        start: +start!,\n        end: +end!,\n        label: label === '.' ? undefined : label,\n      }\n    })\n}\n\nconst ImportBookmarksDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: GridBookmarkModel\n}) {\n  const { classes } = useStyles()\n  const [location, setLocation] = useState<FileLocation>()\n  const [error, setError] = useState<unknown>()\n  const [shareLink, setShareLink] = useState('')\n  const session = getSession(model)\n  const { assemblyNames } = session\n  const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0]!)\n  const [expanded, setExpanded] = useState<\n    'shareLinkAccordion' | 'fileAccordion'\n  >('shareLinkAccordion')\n\n  return (\n    <Dialog open onClose={onClose} maxWidth=\"xl\" title=\"Import bookmarks\">\n      <DialogContent className={classes.minWidth}>\n        <Accordion\n          expanded={expanded === 'shareLinkAccordion'}\n          onChange={() => {\n            setExpanded('shareLinkAccordion')\n          }}\n        >\n          <AccordionSummary\n            expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n          >\n            <Typography\n              style={{ display: 'flex', alignItems: 'center', gap: '5px' }}\n            >\n              Import from share link\n            </Typography>\n          </AccordionSummary>\n          <AccordionDetails>\n            <Typography>\n              Paste a bookmark share link generated by the 'Share' button from\n              the bookmarks widget\n            </Typography>\n            <TextField\n              label=\"Enter Share URL\"\n              variant=\"outlined\"\n              fullWidth\n              value={shareLink}\n              onChange={e => {\n                setShareLink(e.target.value)\n              }}\n            />\n          </AccordionDetails>\n        </Accordion>\n        <Accordion\n          expanded={expanded === 'fileAccordion'}\n          onChange={() => {\n            setExpanded('fileAccordion')\n          }}\n        >\n          <AccordionSummary\n            expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n          >\n            <Typography>Import from file</Typography>\n          </AccordionSummary>\n          <AccordionDetails>\n            <FileSelector\n              location={location}\n              setLocation={setLocation}\n              name=\"File\"\n              description={`Choose a BED or TSV format file to import. Required TSV column headers are \"chrom, start, end, label, assembly_name\".`}\n            />\n            <AssemblySelector\n              onChange={val => {\n                setSelectedAsm(val)\n              }}\n              helperText={'Select the assembly for BED file.'}\n              session={session}\n              selected={selectedAsm}\n            />\n          </AccordionDetails>\n        </Accordion>\n        {error ? <ErrorMessage error={error} /> : null}\n      </DialogContent>\n      <DialogActions>\n        <Button variant=\"contained\" color=\"secondary\" onClick={onClose}>\n          Cancel\n        </Button>\n        <Button\n          data-testid=\"dialogImport\"\n          variant=\"contained\"\n          color=\"primary\"\n          disabled={!location && !shareLink}\n          startIcon={<ImportIcon />}\n          onClick={async () => {\n            try {\n              if (expanded === 'fileAccordion' && location) {\n                const data = await openLocation(location).readFile('utf8')\n                const lines = data.split(/\\n|\\r\\n|\\r/).filter(f => !!f.trim())\n                const fileType = guessFileType(lines[0]!)\n                if (fileType === 'BED') {\n                  model.importBookmarks(\n                    await getBookmarksFromBEDFile(lines, selectedAsm),\n                  )\n                } else {\n                  // TSV\n                  model.importBookmarks(await getBookmarksFromTSVFile(lines))\n                }\n              } else if (\n                expanded === 'shareLinkAccordion' &&\n                shareLink &&\n                isSessionWithShareURL(session)\n              ) {\n                model.importBookmarks(\n                  await getBookmarksFromShareLink(shareLink, session.shareURL),\n                )\n              }\n              onClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            }\n          }}\n        >\n          Import\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\nexport default ImportBookmarksDialog\n","// duplicated from products/jbrowse-web/src/sessionSharing.ts ; could possibly be moved into a higher directory and shared between the two\nimport { toUrlSafeB64 } from './utils'\n\n// from https://stackoverflow.com/questions/1349404/\nfunction generateUID(length: number) {\n  return window\n    .btoa(\n      [...window.crypto.getRandomValues(new Uint8Array(length * 2))]\n        .map(b => String.fromCharCode(b))\n        .join(''),\n    )\n    .replaceAll(/[+/]/g, '')\n    .slice(0, length)\n}\n\nconst encrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  return AES.encrypt(text, password).toString()\n}\n\nconst decrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  const Utf8 = await import('crypto-js/enc-utf8')\n  const bytes = AES.decrypt(text, password)\n  return bytes.toString(Utf8)\n}\n\nfunction getErrorMsg(err: string) {\n  try {\n    const obj = JSON.parse(err)\n    return obj.message\n  } catch (e) {\n    return err\n  }\n}\n// writes the encrypted session, current datetime, and referer to DynamoDB\nexport async function shareSessionToDynamo(\n  session: unknown,\n  url: string,\n  referer: string,\n) {\n  const sess = await toUrlSafeB64(JSON.stringify(session))\n  const password = generateUID(5)\n  const encryptedSession = await encrypt(sess, password)\n\n  const data = new FormData()\n  data.append('session', encryptedSession)\n  data.append('dateShared', `${Date.now()}`)\n  data.append('referer', referer)\n\n  const response = await fetch(`${url}share`, {\n    method: 'POST',\n    mode: 'cors',\n    body: data,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n  const json = await response.json()\n  return {\n    json,\n    encryptedSession,\n    password,\n  }\n}\n\nexport async function readSessionFromDynamo(\n  baseUrl: string,\n  sessionQueryParam: string,\n  password: string,\n  signal?: AbortSignal,\n) {\n  const sessionId = sessionQueryParam.split('share-')[1]!\n  const url = `${baseUrl}?sessionId=${encodeURIComponent(sessionId)}`\n  const response = await fetch(url, {\n    signal,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n\n  const json = await response.json()\n  return decrypt(json.session, password)\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getAccordionDetailsUtilityClass } from \"./accordionDetailsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n})));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionDetailsRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport AccordionContext from \"../Accordion/AccordionContext.js\";\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from \"./accordionSummaryClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    },\n    variants: [{\n      props: props => !props.disableGutters,\n      style: {\n        [`&.${accordionSummaryClasses.expanded}`]: {\n          minHeight: 64\n        }\n      }\n    }]\n  };\n}));\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0',\n  variants: [{\n    props: props => !props.disableGutters,\n    style: {\n      transition: theme.transitions.create(['margin'], {\n        duration: theme.transitions.duration.shortest\n      }),\n      [`&.${accordionSummaryClasses.expanded}`]: {\n        margin: '20px 0'\n      }\n    }\n  }]\n})));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n})));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n    children,\n    className,\n    expandIcon,\n    focusVisibleClassName,\n    onClick,\n    ...other\n  } = props;\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    expanded,\n    disabled,\n    disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, {\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;"],"names":["useStyles","makeStyles","theme","expandIcon","color","palette","tertiary","contrastText","minWidth","observer","onClose","model","classes","location","setLocation","useState","error","setError","shareLink","setShareLink","session","getSession","assemblyNames","selectedAsm","setSelectedAsm","expanded","setExpanded","React","Dialog","open","maxWidth","title","DialogContent","className","Accordion","onChange","AccordionSummary","ExpandMoreIcon","Typography","style","display","alignItems","gap","AccordionDetails","TextField","label","variant","fullWidth","value","e","target","FileSelector","name","description","AssemblySelector","val","helperText","selected","ErrorMessage","DialogActions","Button","onClick","disabled","startIcon","ImportIcon","async","lines","openLocation","readFile","split","filter","f","trim","header","startsWith","includes","importBookmarks","map","line","refName","start","end","assemblyName","undefined","getBookmarksFromBEDFile","slice","getBookmarksFromTSVFile","isSessionWithShareURL","shareURL","urlParams","URL","sessionQueryParam","searchParams","get","password","decryptedSession","readSessionFromDynamo","JSON","parse","fromUrlSafeB64","sharedBookmarks","getBookmarksFromShareLink","console","encrypt","text","toString","decrypt","AES","Utf8","getErrorMsg","err","message","shareSessionToDynamo","url","referer","sess","toUrlSafeB64","stringify","window","btoa","crypto","getRandomValues","Uint8Array","length","b","String","fromCharCode","join","replaceAll","encryptedSession","data","FormData","append","Date","now","response","fetch","method","mode","body","ok","Error","json","baseUrl","signal","sessionId","encodeURIComponent","d","AccordionDetailsRoot","slot","overridesResolver","props","styles","root","padding","spacing","inProps","ref","other","ownerState","useUtilityClasses","getAccordionDetailsUtilityClass","getAccordionSummaryUtilityClass","generateUtilityClass","generateUtilityClasses","AccordionSummaryRoot","styled","ButtonBase","memoTheme","transition","duration","transitions","shortest","minHeight","create","focusVisible","backgroundColor","vars","action","focus","opacity","disabledOpacity","cursor","variants","disableGutters","AccordionSummaryContent","content","flexGrow","margin","AccordionSummaryExpandIconWrapper","expandIconWrapper","active","transform","children","focusVisibleClassName","toggle","AccordionContext","A","slots","composeClasses","focusRipple","disableRipple","component","clsx","event"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3474.8c1888be.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3474],{91392:(e,t,n)=>{n.d(t,{KM:()=>h,en:()=>f,kb:()=>y,se:()=>p});var l=n(7552),r=n(75785),a=n(68446),o=n(36422),c=n(99546),s=n(95095),i=n(48231),m=n(90257);function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},d.apply(null,arguments)}const u=(0,r.n9)()((()=>({vtext:{gridColumn:"1/2",gridRow:"1/2",pointerEvents:"none",userSelect:"none"},htext:{gridColumn:"2/2",gridRow:"2/2",pointerEvents:"none",userSelect:"none"}}))),h=(0,a.observer)((function({model:e}){const{viewWidth:t,borderY:n}=e,{classes:r}=u();return l.createElement("svg",{width:t,height:n,className:r.htext},l.createElement(p,{model:e}))})),p=(0,a.observer)((function({model:e}){const{viewWidth:t,borderX:n,borderY:r,hview:a,htextRotation:u,hticks:h}=e,{offsetPx:p,width:f,dynamicBlocks:y,bpPerPx:E}=a,b=y.contentBlocks,g=(0,m.rQ)(b,t,p),v=(0,i.A)(),k={...(0,o.getSnapshot)(a),width:f,staticBlocks:a.staticBlocks},w=h.map((e=>[e,(0,s.eB)({refName:e.refName,coord:e.base,self:k})?.offsetPx])).filter((e=>void 0!==e[1])).map((e=>[e[0],e[1]-p]));return l.createElement(l.Fragment,null,b.filter((e=>!g.has(e.key))).map((e=>{const t=e.offsetPx,n=Math.floor(t-a.offsetPx);return l.createElement("text",d({transform:`rotate(${u},${n},0)`,key:JSON.stringify(e),x:n,y:1,fontSize:11,dominantBaseline:"hanging",textAnchor:"end"},(0,c.getFillProps)(v.palette.text.primary)),e.refName)})),w.map((([e,t])=>t>0&&t<f?l.createElement("line",d({key:`line-${JSON.stringify(e)}`,x1:t,x2:t,y1:0,y2:"major"===e.type?6:4,strokeWidth:1},(0,c.getFillProps)(v.palette.text.primary))):null)),w.filter((e=>"major"===e[0].type)).map((([e,t])=>t>10&&t<f?l.createElement("text",d({x:t-7,y:0,transform:`rotate(${u},${t},0)`,key:`text-${JSON.stringify(e)}`,fontSize:11,dominantBaseline:"middle",textAnchor:"end"},(0,c.getFillProps)(v.palette.text.primary)),(0,c.getTickDisplayStr)(e.base+1,E)):null)),l.createElement("text",d({y:r-12,x:(t-n)/2,textAnchor:"middle",fontSize:11,dominantBaseline:"hanging"},(0,c.getFillProps)(v.palette.text.primary)),a.assemblyNames.join(",")))})),f=(0,a.observer)((function({model:e}){const{borderX:t,viewHeight:n}=e,{classes:r}=u();return l.createElement("svg",{className:r.vtext,width:t,height:n},l.createElement(y,{model:e}))})),y=(0,a.observer)((function({model:e}){const{viewHeight:t,borderX:n,borderY:r,vview:a,vtextRotation:u,vticks:h}=e,{offsetPx:p,width:f,dynamicBlocks:y,bpPerPx:E}=a,b=y.contentBlocks,g=(0,m.rQ)(b,t,p),v=(0,i.A)(),k={...(0,o.getSnapshot)(a),width:f,staticBlocks:a.staticBlocks},w=h.map((e=>[e,(0,s.eB)({refName:e.refName,coord:e.base,self:k})?.offsetPx])).filter((e=>void 0!==e[1])).map((e=>[e[0],e[1]-p]));return l.createElement(l.Fragment,null,b.filter((e=>!g.has(e.key))).map((e=>{const r=e.offsetPx,a=n,o=Math.floor(t-r+p);return l.createElement("text",d({transform:`rotate(${u},${a},${r})`,key:JSON.stringify(e),x:a,y:o,fontSize:11,textAnchor:"end"},(0,c.getFillProps)(v.palette.text.primary)),e.refName)})),w.map((([e,r])=>r>0?l.createElement("line",d({key:`line-${JSON.stringify(e)}`,y1:t-r,y2:t-r,x1:n,x2:n-("major"===e.type?6:4),strokeWidth:1},(0,c.getStrokeProps)(v.palette.grey[400]))):null)),w.filter((e=>"major"===e[0].type)).map((([e,r])=>r>10&&r<t?l.createElement("text",d({y:t-r-3,x:n-7,key:`text-${JSON.stringify(e)}`,textAnchor:"end",dominantBaseline:"hanging",fontSize:11},(0,c.getFillProps)(v.palette.text.primary)),(0,c.getTickDisplayStr)(e.base+1,E)):null)),l.createElement("text",d({y:(t-r)/2,x:12,transform:`rotate(-90,12,${(t-r)/2})`,textAnchor:"middle",fontSize:11},(0,c.getFillProps)(v.palette.text.primary)),a.assemblyNames.join(",")))}))},63474:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ae});var l=n(7552),r=n(49823),a=n(68446),o=n(42489),c=n(75785),s=n(48171),i=n(22679),m=n(56089),d=n(33371),u=n(33248),h=n(75653),p=n(67314),f=n(943),y=n(36715),E=n(5401),b=n(99546);function g({radioOption:e,assembly1:t,assembly2:n,fileLocation:l,indexFileLocation:r,bed1Location:a,bed2Location:o}){if(".paf"===e)return{type:"PAFAdapter",pafLocation:l,queryAssembly:t,targetAssembly:n};if(".out"===e)return{type:"MashMapAdapter",outLocation:l,queryAssembly:t,targetAssembly:n};if(".delta"===e)return{type:"DeltaAdapter",deltaLocation:l,queryAssembly:t,targetAssembly:n};if(".chain"===e)return{type:"ChainAdapter",chainLocation:l,queryAssembly:t,targetAssembly:n};if(".anchors"===e)return{type:"MCScanAnchorsAdapter",mcscanAnchorsLocation:l,bed1Location:a,bed2Location:o,assemblyNames:[t,n]};if(".anchors.simple"===e)return{type:"MCScanSimpleAnchorsAdapter",mcscanSimpleAnchorsLocation:l,bed1Location:a,bed2Location:o,assemblyNames:[t,n]};if(".pif.gz"===e)return{type:"PairwiseIndexedPAFAdapter",pifGzLocation:l,index:{location:r},assemblyNames:[t,n]};throw new Error(`Unknown to detect type ${e} from filename (select radio button to clarify)`)}const v=(0,a.observer)((function({assembly1:e,assembly2:t,setSessionTrackData:n}){const[a,o]=(0,l.useState)(),[c,s]=(0,l.useState)(),[i,h]=(0,l.useState)(),[E,b]=(0,l.useState)(),[v,k]=(0,l.useState)(""),[w,A]=(0,l.useState)(),x=(S=i)?S.uri||S.localPath||S.name:void 0;var S;const C=v||(x?function(e){const t=e.split(".").pop();return t?`.${t}`:""}(function(e){return e.endsWith(".gz")?e.slice(0,-3):e}(x)):"");return(0,l.useEffect)((()=>{try{if(i){const l=x?x.split("#")[0].split("?")[0].split("/").pop():"MyTrack",r=`${l}-${Date.now()}`;A(void 0),n({trackId:r,name:l,assemblyNames:[t,e],type:"SyntenyTrack",adapter:g({radioOption:C,assembly1:e,assembly2:t,fileLocation:i,indexFileLocation:E,bed1Location:c,bed2Location:a})})}}catch(e){console.error(e),A(e)}}),[x,e,t,c,a,i,E,C,n]),l.createElement(f.A,{style:{padding:12}},w?l.createElement(r.ErrorMessage,{error:w}):null,l.createElement(y.A,{style:{textAlign:"center"}},"Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view. These file types can also be gzipped. The first assembly should be the query sequence (e.g. left column of the PAF) and the second assembly should be the target sequence (e.g. right column of the PAF)"),l.createElement(m.A,{value:C,onChange:e=>{k(e.target.value)}},l.createElement(p.Ay,{container:!0,justifyContent:"center"},l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".paf",control:l.createElement(u.A,null),label:".paf"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".out",control:l.createElement(u.A,null),label:".out"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".delta",control:l.createElement(u.A,null),label:".delta"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".chain",control:l.createElement(u.A,null),label:".chain"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".anchors",control:l.createElement(u.A,null),label:".anchors"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".anchors.simple",control:l.createElement(u.A,null),label:".anchors.simple"})),l.createElement(p.Ay,{item:!0},l.createElement(d.A,{value:".pif.gz",control:l.createElement(u.A,null),label:".pif.gz"})))),l.createElement(p.Ay,{container:!0,justifyContent:"center"},l.createElement(p.Ay,{item:!0},".anchors"===v||".anchors.simple"===v?l.createElement("div",null,l.createElement("div",{style:{margin:20}},"Open the ",v," and .bed files for both genome assemblies from the MCScan (Python version) pipeline"," ",l.createElement("a",{href:"https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)"},"(more info)")),l.createElement("div",{style:{display:"flex"}},l.createElement("div",null,l.createElement(r.FileSelector,{name:".anchors file",description:"",location:i,setLocation:e=>{h(e)}})),l.createElement("div",null,l.createElement(r.FileSelector,{name:"genome 1 .bed (left column of anchors file)",description:"",location:c,setLocation:e=>{s(e)}})),l.createElement("div",null,l.createElement(r.FileSelector,{name:"genome 2 .bed (right column of anchors file)",description:"",location:a,setLocation:e=>{o(e)}})))):".pif.gz"===v?l.createElement("div",{style:{display:"flex"}},l.createElement("div",null,l.createElement(r.FileSelector,{name:`${v} location`,description:"",location:i,setLocation:e=>{h(e)}})),l.createElement("div",null,l.createElement(r.FileSelector,{name:`${v} index location`,description:"",location:E,setLocation:e=>{b(e)}}))):l.createElement(r.FileSelector,{name:v?`${v} location`:"",description:"",location:i,setLocation:e=>{h(e)}}))))}));var k=n(98360),w=n(29629),A=n(91468),x=n(68584),S=n(90542);const C=(0,a.observer)((({model:e,assembly1:t,assembly2:n,setShowTrackId:a})=>{const o=(0,b.getSession)(e),{tracks:c,sessionTracks:s}=o,i=[...c,...s||[]].filter((e=>function(e,t,n){const l=(0,x.readConfObject)(e,"assemblyNames");return l.includes(t)&&l.includes(n)&&e.type.includes("Synteny")}(e,n,t))),m=i[0]?.trackId||"",[d,u]=(0,l.useState)(m);return(0,l.useEffect)((()=>{u(m)}),[m]),(0,l.useEffect)((()=>{a(d)}),[d,a]),l.createElement(f.A,{style:{padding:12}},l.createElement(y.A,{paragraph:!0},'Select a track from the select box below, the track will be shown when you hit "Launch".'),l.createElement(y.A,{paragraph:!0},"Note: there is a track selector ",l.createElement("i",null,"inside")," the DotplotView, which can turn on one or more SyntenyTracks (more than one can be displayed at once). Look for the track selector icon ",l.createElement(S.xU,null)),i.length?l.createElement(k.A,{value:d,onChange:e=>{u(e.target.value)}},i.map((e=>l.createElement(w.A,{key:e.trackId,value:e.trackId},(0,A.getTrackName)(e,o))))):l.createElement(r.ErrorMessage,{error:`No synteny tracks found for ${t},${n}`}))})),P=(0,c.n9)()((e=>({importFormContainer:{padding:e.spacing(4),margin:"0 auto"},assemblySelector:{width:"75%",margin:"0 auto"}})));function L({setSessionTrackData:e,setShowTrackId:t,sessionTrackData:n,assembly1:r,assembly2:a,model:o}){const[c,h]=(0,l.useState)("tracklist");return(0,l.useEffect)((()=>{"none"===c&&(e(void 0),t(void 0))}),[c,e,t]),l.createElement(l.Fragment,null,l.createElement(s.A,null,l.createElement(i.A,{id:"group-label"},"(Optional) Select or add a synteny track"),l.createElement(m.A,{row:!0,value:c,onChange:e=>{h(e.target.value)},"aria-labelledby":"group-label"},l.createElement(d.A,{value:"none",control:l.createElement(u.A,null),label:"None"}),l.createElement(d.A,{value:"tracklist",control:l.createElement(u.A,null),label:"Existing track"}),l.createElement(d.A,{value:"custom",control:l.createElement(u.A,null),label:"New track"}))),"custom"===c?l.createElement(v,{setSessionTrackData:e,sessionTrackData:n,assembly2:a,assembly1:r}):null,"tracklist"===c?l.createElement(C,{model:o,assembly1:r,assembly2:a,setShowTrackId:t}):null)}const M=(0,a.observer)((({model:e})=>{const{classes:t}=P(),n=(0,b.getSession)(e),{assemblyNames:a}=n,[c,i]=(0,l.useState)(a[0]||""),[m,d]=(0,l.useState)(a[0]||""),[u,g]=(0,l.useState)(),[v,k]=(0,l.useState)(),[w,A]=(0,l.useState)(),x=u||e.error;return l.createElement(h.A,{className:t.importFormContainer},x?l.createElement(r.ErrorMessage,{error:x}):null,l.createElement(p.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center",className:t.assemblySelector},l.createElement(p.Ay,{item:!0},l.createElement(f.A,{style:{padding:12}},l.createElement(y.A,{style:{textAlign:"center"}},"Select assemblies for dotplot view"),l.createElement(p.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},l.createElement(p.Ay,{item:!0},l.createElement(r.AssemblySelector,{selected:m,onChange:e=>{d(e)},session:n})),l.createElement(p.Ay,{item:!0},l.createElement(r.AssemblySelector,{selected:c,onChange:e=>{i(e)},session:n})),l.createElement(p.Ay,{item:!0},l.createElement(s.A,null,l.createElement(E.A,{onClick:function(){try{if(!(0,b.isSessionWithAddTracks)(n))return;g(void 0),e.setError(void 0),(0,o.transaction)((()=>{v?(n.addTrackConf(v),e.toggleTrack(v.trackId)):w&&e.showTrack(w),e.setViews([{bpPerPx:.1,offsetPx:0},{bpPerPx:.1,offsetPx:0}]),e.setAssemblyNames(c,m)}))}catch(e){console.error(e),g(e)}},variant:"contained",color:"primary"},"Launch"))))),l.createElement(L,{setShowTrackId:A,assembly2:c,assembly1:m,setSessionTrackData:k,sessionTrackData:v,model:e}))))}));var N=n(9937);const z=(0,l.lazy)((()=>Promise.all([n.e(8565),n.e(5676),n.e(4863)]).then(n.bind(n,75083)))),T=(0,a.observer)((function({model:e}){const t=e.tracks.filter((e=>e.displays[0].warnings?.length)),[n,r]=(0,l.useState)(!1),[a,o]=(0,l.useState)(!1);return t.length&&!a?l.createElement(N.A,{severity:"warning"},"Warnings during render"," ",l.createElement(E.A,{onClick:()=>{r(!0)}},"More info"),n?l.createElement(z,{trackWarnings:t,handleClose:()=>{r(!1)}}):null,l.createElement(E.A,{variant:"contained",onClick:()=>{o(!0)}},"Dismiss")):null}));var B=n(61723),I=n(32813),F=n(6500),O=n(99829),D=n(12756),$=n(87809),R=n(91404);const j=(0,c.n9)()({dpad:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",margin:0,position:"absolute",right:50,zIndex:1e3,top:50},icon:{padding:0,margin:0}}),V=(0,a.observer)((function({model:e}){const{classes:t}=j();return l.createElement(f.A,{className:t.dpad,elevation:6},l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>e.vview.scroll(100)},l.createElement(F.A,null)),l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>e.hview.scroll(-100)},l.createElement(O.A,null)),l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>e.hview.scroll(100)},l.createElement(D.A,null)),l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>e.vview.scroll(-100)},l.createElement(I.A,null)),l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>{e.hview.zoomIn(),e.vview.zoomIn()}},l.createElement($.A,null)),l.createElement("div",null),l.createElement(B.A,{className:t.icon,onClick:()=>{e.hview.zoomOut(),e.vview.zoomOut()}},l.createElement(R.A,null)))}));var H=n(23758),W=n(17307),q=n(2859);function Y(e){return l.createElement(q.A,e,l.createElement("path",{fill:"currentColor",d:"M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z"}))}function J(e){return l.createElement(q.A,e,l.createElement("path",{fill:"currentColor",d:"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"}))}const X=(0,a.observer)((function({model:e}){return l.createElement("div",null,l.createElement(B.A,{onClick:e.zoomOutButton},l.createElement(R.A,null)),l.createElement(B.A,{onClick:e.zoomInButton},l.createElement($.A,null)),l.createElement(B.A,{onClick:()=>e.activateTrackSelector(),title:"Open track selector"},l.createElement(S.xU,null)),l.createElement(H.A,{menuItems:[{onClick:()=>{e.squareView()},label:"Square view - same base pairs per pixel"},{onClick:()=>{e.squareViewProportional()},label:"Rectanglularize view - same total bp"},{onClick:()=>{e.showAllRegions()},label:"Show all regions"},{onClick:()=>{e.setDrawCigar(!e.drawCigar)},type:"checkbox",label:"Draw CIGAR",checked:e.drawCigar},{onClick:()=>{e.setShowPanButtons(!e.showPanButtons)},label:"Show pan buttons",type:"checkbox",checked:e.showPanButtons},{label:"Click and drag mode",subMenu:[{onClick:()=>{e.setCursorMode("move")},label:"Pan by default, select region when ctrl/cmd key is held",icon:Y,type:"radio",checked:"move"===e.cursorMode},{onClick:()=>{e.setCursorMode("crosshair")},label:"Select region by default, pan when ctrl/cmd key is held",icon:J,type:"radio",checked:"crosshair"===e.cursorMode}]},{label:"Wheel scroll mode",subMenu:[{onClick:()=>{e.setWheelMode("pan")},label:"Pans view",type:"radio",checked:"pan"===e.wheelMode},{onClick:()=>{e.setWheelMode("zoom")},label:"Zooms view",type:"radio",checked:"zoom"===e.wheelMode},{onClick:()=>{e.setWheelMode("none")},label:"Disable",type:"radio",checked:"none"===e.wheelMode}]}]},l.createElement(W.A,null)))})),K=(0,c.n9)()({bp:{display:"flex",alignItems:"center",marginLeft:10},spacer:{flexGrow:1},headerBar:{display:"flex",position:"relative"}}),_=(0,a.observer)((function({model:e,selection:t}){const{classes:n}=K(),{hview:r,vview:a,showPanButtons:o}=e;return l.createElement("div",{className:n.headerBar},l.createElement(X,{model:e}),l.createElement(y.A,{className:n.bp,variant:"body2",color:"textSecondary"},"x: ",r.assemblyNames.join(",")," ",(0,b.getBpDisplayStr)(r.currBp),l.createElement("br",null),"y: ",a.assemblyNames.join(",")," ",(0,b.getBpDisplayStr)(a.currBp)),t?l.createElement(y.A,{className:n.bp,variant:"body2",color:"textSecondary"},`width:${(0,b.getBpDisplayStr)(r.bpPerPx*t.width)}`," ",l.createElement("br",null),`height:${(0,b.getBpDisplayStr)(a.bpPerPx*t.height)}`):null,l.createElement("div",{className:n.spacer}),l.createElement(T,{model:e}),o?l.createElement(V,{model:e}):null)}));var Z=n(86495),G=n(91392);const U=(0,l.lazy)((()=>n.e(1304).then(n.bind(n,81304)))),Q=(0,l.lazy)((()=>n.e(1051).then(n.bind(n,21051)))),ee={left:0,top:0,width:0,height:0},te=(0,c.n9)()((e=>({spacer:{gridColumn:"1/2",gridRow:"2/2"},root:{position:"relative",marginBottom:e.spacing(1),overflow:"hidden"},container:{display:"grid",padding:5,position:"relative"},overlay:{pointerEvents:"none",overflow:"hidden",display:"flex",width:"100%",gridRow:"1/2",gridColumn:"2/2",zIndex:100,"& path":{cursor:"crosshair",fill:"none"}},content:{position:"relative",gridColumn:"2/2",gridRow:"1/2"},resizeHandle:{height:4,background:"#ccc",boxSizing:"border-box",borderTop:"1px solid #fafafa"}})));function ne(e,t){return e&&[e[0]-t.left,e[1]-t.top]}const le=(0,a.observer)((({model:e})=>{const{classes:t}=te();return l.createElement("div",{className:t.overlay},e.tracks.map((e=>{const[t]=e.displays,{RenderingComponent:n}=t;return n?l.createElement(n,{key:e.configuration.trackId,model:t}):null})))})),re=(0,a.observer)((function({model:e}){const{classes:t}=te(),[n,a]=(0,l.useState)(),[c,s]=(0,l.useState)(),[i,m]=(0,l.useState)(!1),[d,u]=(0,l.useState)(),h=(0,l.useRef)(null),p=(0,l.useRef)(null),f=(0,l.useRef)(0),y=(0,l.useRef)(0),E=(0,l.useRef)(!1),[b,g]=(0,l.useState)(!1),[v,k]=(0,l.useState)(!1),w=h.current?.getBoundingClientRect()||ee,A=h.current?.getBoundingClientRect()||ee,x=ne(c,w),S=ne(n,w),C=ne(d,w),P=C||S,L=d||n,M=x&&P?P[0]-x[0]:0,N=x&&P?P[1]-x[1]:0,{hview:z,vview:T,wheelMode:B,cursorMode:I}=e,F="move"===I&&!b||"crosshair"===I&&b,O="move"===I&&b||"crosshair"===I&&!b;return(0,l.useEffect)((()=>{function e(e){e.preventDefault(),f.current+=e.deltaX,y.current-=e.deltaY,E.current||(E.current=!0,window.requestAnimationFrame((()=>{(0,o.transaction)((()=>{if("pan"===B)z.scroll(f.current/3),T.scroll(y.current/10);else if("zoom"===B&&Math.abs(y.current)>2*Math.abs(f.current)&&S){const e=y.current<0?1.1:.9;z.zoomTo(z.bpPerPx*e,S[0]),T.zoomTo(T.bpPerPx*e,A.height-S[1])}})),E.current=!1,f.current=0,y.current=0})))}if(h.current){const t=h.current;return t.addEventListener("wheel",e),()=>{t.removeEventListener("wheel",e)}}return()=>{}}),[z,T,B,S,A.height]),(0,l.useEffect)((()=>{function e(e){a([e.clientX,e.clientY]),n&&c&&F&&!d&&(z.scroll(-e.clientX+n[0]),T.scroll(e.clientY-n[1]))}return window.addEventListener("mousemove",e),()=>{window.removeEventListener("mousemove",e)}}),[F,n,c,d,z,T]),(0,l.useEffect)((()=>{function e(e){(e.metaKey||e.ctrlKey)&&k(!0)}function t(e){e.metaKey||e.ctrlKey||k(!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.addEventListener("keyup",t)}}),[]),(0,l.useEffect)((()=>{function e(e){Math.abs(M)>3&&Math.abs(N)>3&&O?u([e.clientX,e.clientY]):s(void 0)}return x&&!C?(window.addEventListener("mouseup",e,!0),()=>{window.removeEventListener("mouseup",e,!0)}):()=>{}}),[O,x,C,M,N]),l.createElement("div",null,l.createElement(_,{model:e,selection:O&&x&&P?{width:Math.abs(M),height:Math.abs(N)}:void 0}),l.createElement("div",{ref:p,className:t.root,onMouseLeave:()=>{m(!1)},onMouseEnter:()=>{m(!0)}},l.createElement("div",{className:t.container},l.createElement(G.en,{model:e}),l.createElement(G.KM,{model:e}),l.createElement("div",{ref:h,className:t.content},i&&O?l.createElement(l.Suspense,{fallback:null},l.createElement(Q,{model:e,mouserect:P,mouserectClient:L,xdistance:M})):null,O?l.createElement(l.Suspense,{fallback:null},l.createElement(U,{model:e,mousedown:x,mousedownClient:c,xdistance:M,ydistance:N})):null,l.createElement("div",{style:{cursor:v?"pointer":I},onMouseDown:e=>{if(0===e.button){const{clientX:t,clientY:n}=e;s([t,n]),a([t,n]),g(v)}}},l.createElement(Z.A,{model:e},O&&x&&P?l.createElement("rect",{fill:"rgba(255,0,0,0.3)",x:Math.min(P[0],x[0]),y:Math.min(P[1],x[1]),width:Math.abs(M),height:Math.abs(N)}):null)),l.createElement("div",{className:t.spacer})),l.createElement(le,{model:e}),l.createElement(r.Menu,{open:Boolean(C),onMenuItemClick:(e,t)=>{t(),u(void 0),s(void 0)},onClose:()=>{u(void 0),s(void 0)},anchorReference:"anchorPosition",anchorPosition:d?{top:d[1]+50,left:d[0]+50}:void 0,style:{zIndex:1e4},menuItems:[{label:"Zoom in",onClick:()=>{x&&C&&e.zoomIn(x,C),m(!1)}},{label:"Open linear synteny view",onClick:()=>{x&&C&&e.onDotplotView(x,C),m(!1)}}]})),l.createElement(r.ResizeHandle,{onDrag:t=>e.setHeight(e.height+t),className:t.resizeHandle})))})),ae=(0,a.observer)((function({model:e}){const{initialized:t,loading:n,error:a}=e;return!t&&!n||a?l.createElement(M,{model:e}):n?l.createElement(r.LoadingEllipses,{variant:"h6"}):l.createElement(re,{model:e})}))},86495:(e,t,n)=>{n.d(t,{A:()=>i,z:()=>s});var l=n(7552),r=n(68446),a=n(48231),o=n(99546);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},c.apply(null,arguments)}const s=(0,r.observer)((function({model:e,children:t}){const{viewWidth:n,viewHeight:r,hview:s,vview:i}=e,m=s.dynamicBlocks.contentBlocks,d=i.dynamicBlocks.contentBlocks;if(!m.length||!d.length)return null;const u=s.displayedRegionsTotalPx-s.offsetPx,h=i.displayedRegionsTotalPx-i.offsetPx,p=m[0].offsetPx-s.offsetPx,f=d[0].offsetPx-i.offsetPx,y=(0,a.A)(),E=y.palette.divider,b=Math.max(p,0),g=Math.max(r-h,0),v=Math.min(u-p,n),k=Math.min(r-f-g,r);let w=Number.POSITIVE_INFINITY,A=Number.POSITIVE_INFINITY;return l.createElement(l.Fragment,null,l.createElement("rect",c({x:b,y:g,width:v,height:k},(0,o.getFillProps)(y.palette.background.default))),l.createElement("g",null,m.map((e=>{const t=e.offsetPx-s.offsetPx,n=Math.floor(t)!==Math.floor(w);return n&&(w=t),n?l.createElement("line",c({key:JSON.stringify(e),x1:t,y1:0,x2:t,y2:r},(0,o.getStrokeProps)(E))):null})),d.map((e=>{const t=r-(e.offsetPx-i.offsetPx),a=Math.floor(t)!==Math.floor(A);return a&&(A=t),a?l.createElement("line",c({key:JSON.stringify(e),x1:0,y1:t,x2:n,y2:t},(0,o.getStrokeProps)(E))):null})),l.createElement("line",c({x1:u,y1:0,x2:u,y2:r},(0,o.getStrokeProps)(E))),l.createElement("line",c({x1:0,y1:r-h,x2:n,y2:r-h},(0,o.getStrokeProps)(E)))),t)}));function i({model:e,children:t}){const{viewWidth:n,viewHeight:r}=e;return l.createElement("svg",{width:n,height:r,style:{background:"rgba(0,0,0,0.12)"}},l.createElement(s,{model:e},t))}}}]);
+//# sourceMappingURL=3474.8c1888be.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3474.8c1888be.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3474.8c1888be.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotView/components/Axes.tsx","../../../plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportCustomTrack.tsx","../../../plugins/dotplot-view/src/DotplotView/components/ImportForm/util.ts","../../../plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportSyntenyTrackSelector.tsx","../../../plugins/dotplot-view/src/DotplotView/components/ImportForm/index.tsx","../../../plugins/dotplot-view/src/DotplotView/components/DotplotWarnings.tsx","../../../plugins/dotplot-view/src/DotplotView/components/PanButtons.tsx","../../../plugins/dotplot-view/src/DotplotView/components/CursorIcon.tsx","../../../plugins/dotplot-view/src/DotplotView/components/DotplotControls.tsx","../../../plugins/dotplot-view/src/DotplotView/components/Header.tsx","../../../plugins/dotplot-view/src/DotplotView/components/DotplotView.tsx","../../../plugins/dotplot-view/src/DotplotView/components/Grid.tsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport {\n  getFillProps,\n  getStrokeProps,\n  getTickDisplayStr,\n} from '@jbrowse/core/util'\nimport { bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { getBlockLabelKeysToHide } from './util'\nimport { DotplotViewModel } from '../model'\n\nconst useStyles = makeStyles()(() => ({\n  vtext: {\n    gridColumn: '1/2',\n    gridRow: '1/2',\n    pointerEvents: 'none',\n    userSelect: 'none',\n  },\n  htext: {\n    gridColumn: '2/2',\n    gridRow: '2/2',\n    pointerEvents: 'none',\n    userSelect: 'none',\n  },\n}))\nexport const HorizontalAxis = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewWidth, borderY } = model\n  const { classes } = useStyles()\n  return (\n    <svg width={viewWidth} height={borderY} className={classes.htext}>\n      <HorizontalAxisRaw model={model} />\n    </svg>\n  )\n})\n\nexport const HorizontalAxisRaw = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewWidth, borderX, borderY, hview, htextRotation, hticks } = model\n  const { offsetPx, width, dynamicBlocks, bpPerPx } = hview\n  const dblocks = dynamicBlocks.contentBlocks\n  const hide = getBlockLabelKeysToHide(dblocks, viewWidth, offsetPx)\n  const theme = useTheme()\n  const hviewSnap = {\n    ...getSnapshot(hview),\n    width,\n    staticBlocks: hview.staticBlocks,\n  }\n\n  const ticks = hticks\n    .map(\n      tick =>\n        [\n          tick,\n          bpToPx({\n            refName: tick.refName,\n            coord: tick.base,\n            self: hviewSnap,\n          })?.offsetPx,\n        ] as const,\n    )\n    .filter(f => f[1] !== undefined)\n    .map(f => [f[0], f[1]! - offsetPx] as const)\n\n  return (\n    <>\n      {dblocks\n        .filter(region => !hide.has(region.key))\n        .map(region => {\n          const x = region.offsetPx\n          const y = 0\n          const xoff = Math.floor(x - hview.offsetPx)\n\n          return (\n            <text\n              transform={`rotate(${htextRotation},${xoff},${y})`}\n              key={JSON.stringify(region)}\n              x={xoff}\n              y={y + 1}\n              fontSize={11}\n              dominantBaseline=\"hanging\"\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {region.refName}\n            </text>\n          )\n        })}\n      {ticks.map(([tick, x]) =>\n        x > 0 && x < width ? (\n          <line\n            key={`line-${JSON.stringify(tick)}`}\n            x1={x}\n            x2={x}\n            y1={0}\n            y2={tick.type === 'major' ? 6 : 4}\n            strokeWidth={1}\n            {...getFillProps(theme.palette.text.primary)}\n          />\n        ) : null,\n      )}\n      {ticks\n        .filter(t => t[0].type === 'major')\n        .map(([tick, x]) =>\n          x > 10 && x < width ? (\n            <text\n              x={x - 7}\n              y={0}\n              transform={`rotate(${htextRotation},${x},0)`}\n              key={`text-${JSON.stringify(tick)}`}\n              fontSize={11}\n              dominantBaseline=\"middle\"\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {getTickDisplayStr(tick.base + 1, bpPerPx)}\n            </text>\n          ) : null,\n        )}\n      <text\n        y={borderY - 12}\n        x={(viewWidth - borderX) / 2}\n        textAnchor=\"middle\"\n        fontSize={11}\n        dominantBaseline=\"hanging\"\n        {...getFillProps(theme.palette.text.primary)}\n      >\n        {hview.assemblyNames.join(',')}\n      </text>\n    </>\n  )\n})\nexport const VerticalAxis = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { borderX, viewHeight } = model\n  const { classes } = useStyles()\n  return (\n    <svg className={classes.vtext} width={borderX} height={viewHeight}>\n      <VerticalAxisRaw model={model} />\n    </svg>\n  )\n})\n\nexport const VerticalAxisRaw = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { viewHeight, borderX, borderY, vview, vtextRotation, vticks } = model\n  const { offsetPx, width, dynamicBlocks, bpPerPx } = vview\n  const dblocks = dynamicBlocks.contentBlocks\n  const hide = getBlockLabelKeysToHide(dblocks, viewHeight, offsetPx)\n  const theme = useTheme()\n  const vviewSnap = {\n    ...getSnapshot(vview),\n    width,\n    staticBlocks: vview.staticBlocks,\n  }\n  const ticks = vticks\n    .map(\n      tick =>\n        [\n          tick,\n          bpToPx({\n            refName: tick.refName,\n            coord: tick.base,\n            self: vviewSnap,\n          })?.offsetPx,\n        ] as const,\n    )\n    .filter(f => f[1] !== undefined)\n    .map(f => [f[0], f[1]! - offsetPx] as const)\n\n  return (\n    <>\n      {dblocks\n        .filter(region => !hide.has(region.key))\n        .map(region => {\n          const y = region.offsetPx\n          const x = borderX\n          const yoff = Math.floor(viewHeight - y + offsetPx)\n\n          return (\n            <text\n              transform={`rotate(${vtextRotation},${x},${y})`}\n              key={JSON.stringify(region)}\n              x={x}\n              y={yoff}\n              fontSize={11}\n              textAnchor=\"end\"\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {region.refName}\n            </text>\n          )\n        })}\n      {ticks.map(([tick, y]) =>\n        y > 0 ? (\n          <line\n            key={`line-${JSON.stringify(tick)}`}\n            y1={viewHeight - y}\n            y2={viewHeight - y}\n            x1={borderX}\n            x2={borderX - (tick.type === 'major' ? 6 : 4)}\n            strokeWidth={1}\n            {...getStrokeProps(theme.palette.grey[400])}\n          />\n        ) : null,\n      )}\n      {ticks\n        .filter(t => t[0].type === 'major')\n        .map(([tick, y]) =>\n          y > 10 && y < viewHeight ? (\n            <text\n              y={viewHeight - y - 3}\n              x={borderX - 7}\n              key={`text-${JSON.stringify(tick)}`}\n              textAnchor=\"end\"\n              dominantBaseline=\"hanging\"\n              fontSize={11}\n              {...getFillProps(theme.palette.text.primary)}\n            >\n              {getTickDisplayStr(tick.base + 1, bpPerPx)}\n            </text>\n          ) : null,\n        )}\n      <text\n        y={(viewHeight - borderY) / 2}\n        x={12}\n        transform={`rotate(-90,12,${(viewHeight - borderY) / 2})`}\n        textAnchor=\"middle\"\n        fontSize={11}\n        {...getFillProps(theme.palette.text.primary)}\n      >\n        {vview.assemblyNames.join(',')}\n      </text>\n    </>\n  )\n})\n","import React, { useState, useEffect } from 'react'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport {\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n  Typography,\n} from '@mui/material'\nimport { ErrorMessage, FileSelector } from '@jbrowse/core/ui'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { basename, extName, getName, stripGz } from './util'\n\nfunction getAdapter({\n  radioOption,\n  assembly1,\n  assembly2,\n  fileLocation,\n  indexFileLocation,\n  bed1Location,\n  bed2Location,\n}: {\n  radioOption: string\n  assembly1: string\n  assembly2: string\n  fileLocation?: FileLocation\n  indexFileLocation?: FileLocation\n  bed1Location?: FileLocation\n  bed2Location?: FileLocation\n}) {\n  if (radioOption === '.paf') {\n    return {\n      type: 'PAFAdapter',\n      pafLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.out') {\n    return {\n      type: 'MashMapAdapter',\n      outLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.delta') {\n    return {\n      type: 'DeltaAdapter',\n      deltaLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.chain') {\n    return {\n      type: 'ChainAdapter',\n      chainLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.anchors') {\n    return {\n      type: 'MCScanAnchorsAdapter',\n      mcscanAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.anchors.simple') {\n    return {\n      type: 'MCScanSimpleAnchorsAdapter',\n      mcscanSimpleAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.pif.gz') {\n    return {\n      type: 'PairwiseIndexedPAFAdapter',\n      pifGzLocation: fileLocation,\n      index: { location: indexFileLocation },\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else {\n    throw new Error(\n      `Unknown to detect type ${radioOption} from filename (select radio button to clarify)`,\n    )\n  }\n}\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nconst ImportCustomTrack = observer(function ({\n  assembly1,\n  assembly2,\n  setSessionTrackData,\n}: {\n  sessionTrackData: Conf\n  assembly1: string\n  assembly2: string\n  setSessionTrackData: (arg: Conf) => void\n}) {\n  const [bed2Location, setBed2Location] = useState<FileLocation>()\n  const [bed1Location, setBed1Location] = useState<FileLocation>()\n  const [fileLocation, setFileLocation] = useState<FileLocation>()\n  const [indexFileLocation, setIndexFileLocation] = useState<FileLocation>()\n  const [value, setValue] = useState('')\n  const [error, setError] = useState<unknown>()\n  const fileName = getName(fileLocation)\n\n  const radioOption = value || (fileName ? extName(stripGz(fileName)) : '')\n\n  useEffect(() => {\n    try {\n      if (fileLocation) {\n        const fn = fileName ? basename(fileName) : 'MyTrack'\n        const trackId = `${fn}-${Date.now()}`\n        setError(undefined)\n\n        setSessionTrackData({\n          trackId,\n          name: fn,\n          assemblyNames: [assembly2, assembly1],\n          type: 'SyntenyTrack',\n          adapter: getAdapter({\n            radioOption,\n            assembly1,\n            assembly2,\n            fileLocation,\n            indexFileLocation,\n            bed1Location,\n            bed2Location,\n          }),\n        })\n      }\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }, [\n    fileName,\n    assembly1,\n    assembly2,\n    bed1Location,\n    bed2Location,\n    fileLocation,\n    indexFileLocation,\n    radioOption,\n    setSessionTrackData,\n  ])\n  return (\n    <Paper style={{ padding: 12 }}>\n      {error ? <ErrorMessage error={error} /> : null}\n      <Typography style={{ textAlign: 'center' }}>\n        Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or\n        .anchors.simple (MCScan) file to view. These file types can also be\n        gzipped. The first assembly should be the query sequence (e.g. left\n        column of the PAF) and the second assembly should be the target sequence\n        (e.g. right column of the PAF)\n      </Typography>\n      <RadioGroup\n        value={radioOption}\n        onChange={event => {\n          setValue(event.target.value)\n        }}\n      >\n        <Grid container justifyContent=\"center\">\n          <Grid item>\n            <FormControlLabel value=\".paf\" control={<Radio />} label=\".paf\" />\n          </Grid>\n          <Grid item>\n            <FormControlLabel value=\".out\" control={<Radio />} label=\".out\" />\n          </Grid>\n\n          <Grid item>\n            <FormControlLabel\n              value=\".delta\"\n              control={<Radio />}\n              label=\".delta\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".chain\"\n              control={<Radio />}\n              label=\".chain\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors\"\n              control={<Radio />}\n              label=\".anchors\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors.simple\"\n              control={<Radio />}\n              label=\".anchors.simple\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".pif.gz\"\n              control={<Radio />}\n              label=\".pif.gz\"\n            />\n          </Grid>\n        </Grid>\n      </RadioGroup>\n      <Grid container justifyContent=\"center\">\n        <Grid item>\n          {value === '.anchors' || value === '.anchors.simple' ? (\n            <div>\n              <div style={{ margin: 20 }}>\n                Open the {value} and .bed files for both genome assemblies from\n                the MCScan (Python version) pipeline{' '}\n                <a href=\"https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)\">\n                  (more info)\n                </a>\n              </div>\n              <div style={{ display: 'flex' }}>\n                <div>\n                  <FileSelector\n                    name=\".anchors file\"\n                    description=\"\"\n                    location={fileLocation}\n                    setLocation={loc => {\n                      setFileLocation(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 1 .bed (left column of anchors file)\"\n                    description=\"\"\n                    location={bed1Location}\n                    setLocation={loc => {\n                      setBed1Location(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 2 .bed (right column of anchors file)\"\n                    description=\"\"\n                    location={bed2Location}\n                    setLocation={loc => {\n                      setBed2Location(loc)\n                    }}\n                  />\n                </div>\n              </div>\n            </div>\n          ) : value === '.pif.gz' ? (\n            <div style={{ display: 'flex' }}>\n              <div>\n                <FileSelector\n                  name={`${value} location`}\n                  description=\"\"\n                  location={fileLocation}\n                  setLocation={loc => {\n                    setFileLocation(loc)\n                  }}\n                />\n              </div>\n              <div>\n                <FileSelector\n                  name={`${value} index location`}\n                  description=\"\"\n                  location={indexFileLocation}\n                  setLocation={loc => {\n                    setIndexFileLocation(loc)\n                  }}\n                />\n              </div>\n            </div>\n          ) : (\n            <FileSelector\n              name={value ? `${value} location` : ''}\n              description=\"\"\n              location={fileLocation}\n              setLocation={loc => {\n                setFileLocation(loc)\n              }}\n            />\n          )}\n        </Grid>\n      </Grid>\n    </Paper>\n  )\n})\n\nexport default ImportCustomTrack\n","export function getName(\n  sessionTrackData?: { uri: string } | { localPath: string } | { name: string },\n) {\n  return sessionTrackData\n    ? // @ts-expect-error\n      sessionTrackData.uri ||\n        // @ts-expect-error\n        sessionTrackData.localPath ||\n        // @ts-expect-error\n        sessionTrackData.name\n    : undefined\n}\n\nexport function stripGz(fileName: string) {\n  return fileName.endsWith('.gz') ? fileName.slice(0, -3) : fileName\n}\n\nexport function basename(str: string) {\n  return str.split('#')[0]!.split('?')[0]!.split('/').pop()\n}\nexport function extName(str: string) {\n  const r = str.split('.').pop()\n  return r ? `.${r}` : ''\n}\n","import React, { useState, useEffect } from 'react'\nimport { Select, MenuItem, Paper, Typography } from '@mui/material'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { getSession } from '@jbrowse/core/util'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\n\n// locals\nimport { DotplotViewModel } from '../../model'\n\nfunction f(track: AnyConfigurationModel, assembly1: string, assembly2: string) {\n  const assemblyNames = readConfObject(track, 'assemblyNames')\n  return (\n    assemblyNames.includes(assembly1) &&\n    assemblyNames.includes(assembly2) &&\n    track.type.includes('Synteny')\n  )\n}\n\nconst Selector = observer(\n  ({\n    model,\n    assembly1,\n    assembly2,\n    setShowTrackId,\n  }: {\n    model: DotplotViewModel\n    assembly1: string\n    assembly2: string\n    setShowTrackId: (arg: string) => void\n  }) => {\n    const session = getSession(model)\n    const { tracks, sessionTracks } = session\n    const allTracks = [\n      ...tracks,\n      ...(sessionTracks || []),\n    ] as AnyConfigurationModel[]\n    const filteredTracks = allTracks.filter(t => f(t, assembly2, assembly1))\n    const resetTrack = filteredTracks[0]?.trackId || ''\n    const [value, setValue] = useState(resetTrack)\n    useEffect(() => {\n      // if assembly1/assembly2 changes, then we will want to use this effect to change\n      // the state of the useState because it otherwise gets locked to a stale value\n      setValue(resetTrack)\n    }, [resetTrack])\n\n    useEffect(() => {\n      // sets track data in a useEffect because the initial load is needed as well as\n      // onChange's to the select box\n      setShowTrackId(value)\n    }, [value, setShowTrackId])\n\n    return (\n      <Paper style={{ padding: 12 }}>\n        <Typography paragraph>\n          Select a track from the select box below, the track will be shown when\n          you hit \"Launch\".\n        </Typography>\n\n        <Typography paragraph>\n          Note: there is a track selector <i>inside</i> the DotplotView, which\n          can turn on one or more SyntenyTracks (more than one can be displayed\n          at once). Look for the track selector icon <TrackSelectorIcon />\n        </Typography>\n        {filteredTracks.length ? (\n          <Select\n            value={value}\n            onChange={event => {\n              setValue(event.target.value)\n            }}\n          >\n            {filteredTracks.map(track => (\n              <MenuItem key={track.trackId} value={track.trackId}>\n                {getTrackName(track, session)}\n              </MenuItem>\n            ))}\n          </Select>\n        ) : (\n          <ErrorMessage\n            error={`No synteny tracks found for ${assembly1},${assembly2}`}\n          />\n        )}\n      </Paper>\n    )\n  },\n)\n\nexport default Selector\n","import React, { useState, useEffect } from 'react'\nimport {\n  Button,\n  Container,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { transaction } from 'mobx'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'\nimport { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { DotplotViewModel } from '../../model'\nimport ImportCustomTrack from './ImportCustomTrack'\nimport ImportSyntenyTrackSelector from './ImportSyntenyTrackSelector'\n\nconst useStyles = makeStyles()(theme => ({\n  importFormContainer: {\n    padding: theme.spacing(4),\n    margin: '0 auto',\n  },\n  assemblySelector: {\n    width: '75%',\n    margin: '0 auto',\n  },\n}))\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nfunction TrackSelector({\n  setSessionTrackData,\n  setShowTrackId,\n  sessionTrackData,\n  assembly1,\n  assembly2,\n  model,\n}: {\n  sessionTrackData: Conf\n  setSessionTrackData: (arg: Conf) => void\n  setShowTrackId: (arg?: string) => void\n  model: DotplotViewModel\n  assembly1: string\n  assembly2: string\n}) {\n  const [choice, setChoice] = useState('tracklist')\n\n  useEffect(() => {\n    if (choice === 'none') {\n      setSessionTrackData(undefined)\n      setShowTrackId(undefined)\n    }\n  }, [choice, setSessionTrackData, setShowTrackId])\n  return (\n    <>\n      <FormControl>\n        <FormLabel id=\"group-label\">\n          (Optional) Select or add a synteny track\n        </FormLabel>\n        <RadioGroup\n          row\n          value={choice}\n          onChange={event => {\n            setChoice(event.target.value)\n          }}\n          aria-labelledby=\"group-label\"\n        >\n          <FormControlLabel value=\"none\" control={<Radio />} label=\"None\" />\n          <FormControlLabel\n            value=\"tracklist\"\n            control={<Radio />}\n            label=\"Existing track\"\n          />\n          <FormControlLabel\n            value=\"custom\"\n            control={<Radio />}\n            label=\"New track\"\n          />\n        </RadioGroup>\n      </FormControl>\n      {choice === 'custom' ? (\n        <ImportCustomTrack\n          setSessionTrackData={setSessionTrackData}\n          sessionTrackData={sessionTrackData}\n          assembly2={assembly2}\n          assembly1={assembly1}\n        />\n      ) : null}\n      {choice === 'tracklist' ? (\n        <ImportSyntenyTrackSelector\n          model={model}\n          assembly1={assembly1}\n          assembly2={assembly2}\n          setShowTrackId={setShowTrackId}\n        />\n      ) : null}\n    </>\n  )\n}\n\nconst DotplotImportForm = observer(({ model }: { model: DotplotViewModel }) => {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { assemblyNames } = session\n  const [assembly2, setAssembly2] = useState(assemblyNames[0] || '')\n  const [assembly1, setAssembly1] = useState(assemblyNames[0] || '')\n  const [error, setError] = useState<unknown>()\n  const [sessionTrackData, setSessionTrackData] = useState<Conf>()\n  const [showTrackId, setShowTrackId] = useState<string>()\n\n  function onOpenClick() {\n    try {\n      if (!isSessionWithAddTracks(session)) {\n        return\n      }\n      setError(undefined)\n      model.setError(undefined)\n      transaction(() => {\n        if (sessionTrackData) {\n          session.addTrackConf(sessionTrackData)\n          model.toggleTrack(sessionTrackData.trackId)\n        } else if (showTrackId) {\n          model.showTrack(showTrackId)\n        }\n\n        model.setViews([\n          { bpPerPx: 0.1, offsetPx: 0 },\n          { bpPerPx: 0.1, offsetPx: 0 },\n        ])\n        model.setAssemblyNames(assembly2, assembly1)\n      })\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }\n\n  // this is a combination of any displayed error message we have\n  const displayError = error || model.error\n  return (\n    <Container className={classes.importFormContainer}>\n      {displayError ? <ErrorMessage error={displayError} /> : null}\n      <Grid\n        container\n        spacing={1}\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        className={classes.assemblySelector}\n      >\n        <Grid item>\n          <Paper style={{ padding: 12 }}>\n            <Typography style={{ textAlign: 'center' }}>\n              Select assemblies for dotplot view\n            </Typography>\n            <Grid\n              container\n              spacing={1}\n              justifyContent=\"center\"\n              alignItems=\"center\"\n            >\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly1}\n                  onChange={val => {\n                    setAssembly1(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly2}\n                  onChange={val => {\n                    setAssembly2(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <FormControl>\n                  <Button\n                    onClick={onOpenClick}\n                    variant=\"contained\"\n                    color=\"primary\"\n                  >\n                    Launch\n                  </Button>\n                </FormControl>\n              </Grid>\n            </Grid>\n          </Paper>\n          <TrackSelector\n            setShowTrackId={setShowTrackId}\n            assembly2={assembly2}\n            assembly1={assembly1}\n            setSessionTrackData={setSessionTrackData}\n            sessionTrackData={sessionTrackData}\n            model={model}\n          />\n        </Grid>\n      </Grid>\n    </Container>\n  )\n})\n\nexport default DotplotImportForm\n","import React, { lazy, useState } from 'react'\nimport { Alert, Button } from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { DotplotViewModel } from '../model'\n// lazy components\nconst WarningDialog = lazy(() => import('./WarningDialog'))\n\nconst DotplotWarnings = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const trackWarnings = model.tracks.filter(t => t.displays[0].warnings?.length)\n  const [shown, setShown] = useState(false)\n  const [hide, setHide] = useState(false)\n  return trackWarnings.length && !hide ? (\n    <Alert severity=\"warning\">\n      Warnings during render{' '}\n      <Button\n        onClick={() => {\n          setShown(true)\n        }}\n      >\n        More info\n      </Button>\n      {shown ? (\n        <WarningDialog\n          trackWarnings={trackWarnings}\n          handleClose={() => {\n            setShown(false)\n          }}\n        />\n      ) : null}\n      <Button\n        variant=\"contained\"\n        onClick={() => {\n          setHide(true)\n        }}\n      >\n        Dismiss\n      </Button>\n    </Alert>\n  ) : null\n})\n\nexport default DotplotWarnings\n","import React from 'react'\nimport { IconButton, Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// icons\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\nimport ArrowDropUp from '@mui/icons-material/ArrowDropUp'\nimport ArrowLeft from '@mui/icons-material/ArrowLeft'\nimport ArrowRight from '@mui/icons-material/ArrowRight'\nimport ZoomIn from '@mui/icons-material/ZoomIn'\nimport ZoomOut from '@mui/icons-material/ZoomOut'\n\n// locals\nimport { DotplotViewModel } from '../model'\n\nconst useStyles = makeStyles()({\n  dpad: {\n    display: 'grid',\n    gridTemplateColumns: 'repeat(3, 1fr)',\n    margin: 0,\n    position: 'absolute',\n    right: 50,\n    zIndex: 1000,\n    top: 50,\n  },\n  icon: {\n    padding: 0,\n    margin: 0,\n  },\n})\n\nconst PanButtons = observer(function PanButtons({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <Paper className={classes.dpad} elevation={6}>\n      <div />\n      <IconButton\n        className={classes.icon}\n        onClick={() => model.vview.scroll(100)}\n      >\n        <ArrowDropUp />\n      </IconButton>\n      <div />\n\n      <IconButton\n        className={classes.icon}\n        onClick={() => model.hview.scroll(-100)}\n      >\n        <ArrowLeft />\n      </IconButton>\n      <div />\n      <IconButton\n        className={classes.icon}\n        onClick={() => model.hview.scroll(100)}\n      >\n        <ArrowRight />\n      </IconButton>\n\n      <div />\n      <IconButton\n        className={classes.icon}\n        onClick={() => model.vview.scroll(-100)}\n      >\n        <ArrowDropDown />\n      </IconButton>\n      <div />\n      <IconButton\n        className={classes.icon}\n        onClick={() => {\n          model.hview.zoomIn()\n          model.vview.zoomIn()\n        }}\n      >\n        <ZoomIn />\n      </IconButton>\n      <div />\n      <IconButton\n        className={classes.icon}\n        onClick={() => {\n          model.hview.zoomOut()\n          model.vview.zoomOut()\n        }}\n      >\n        <ZoomOut />\n      </IconButton>\n    </Paper>\n  )\n})\n\nexport default PanButtons\n","import SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon'\nimport React from 'react'\n\nexport function CursorMove(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z\"\n      />\n    </SvgIcon>\n  )\n}\n\nexport function CursorMouse(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z\"\n      />\n    </SvgIcon>\n  )\n}\n","import React from 'react'\nimport { IconButton } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// icons\nimport ZoomOut from '@mui/icons-material/ZoomOut'\nimport ZoomIn from '@mui/icons-material/ZoomIn'\nimport MoreVert from '@mui/icons-material/MoreVert'\nimport { CursorMouse, CursorMove } from './CursorIcon'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\n\n// locals\nimport { DotplotViewModel } from '../model'\n\nconst DotplotControls = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  return (\n    <div>\n      <IconButton onClick={model.zoomOutButton}>\n        <ZoomOut />\n      </IconButton>\n\n      <IconButton onClick={model.zoomInButton}>\n        <ZoomIn />\n      </IconButton>\n\n      <IconButton\n        onClick={() => model.activateTrackSelector()}\n        title=\"Open track selector\"\n      >\n        <TrackSelectorIcon />\n      </IconButton>\n\n      <CascadingMenuButton\n        menuItems={[\n          {\n            onClick: () => {\n              model.squareView()\n            },\n            label: 'Square view - same base pairs per pixel',\n          },\n          {\n            onClick: () => {\n              model.squareViewProportional()\n            },\n            label: 'Rectanglularize view - same total bp',\n          },\n          {\n            onClick: () => {\n              model.showAllRegions()\n            },\n            label: 'Show all regions',\n          },\n          {\n            onClick: () => {\n              model.setDrawCigar(!model.drawCigar)\n            },\n            type: 'checkbox',\n            label: 'Draw CIGAR',\n            checked: model.drawCigar,\n          },\n          {\n            onClick: () => {\n              model.setShowPanButtons(!model.showPanButtons)\n            },\n            label: 'Show pan buttons',\n            type: 'checkbox',\n            checked: model.showPanButtons,\n          },\n          {\n            label: 'Click and drag mode',\n            subMenu: [\n              {\n                onClick: () => {\n                  model.setCursorMode('move')\n                },\n                label:\n                  'Pan by default, select region when ctrl/cmd key is held',\n                icon: CursorMove,\n                type: 'radio',\n                checked: model.cursorMode === 'move',\n              },\n              {\n                onClick: () => {\n                  model.setCursorMode('crosshair')\n                },\n                label:\n                  'Select region by default, pan when ctrl/cmd key is held',\n                icon: CursorMouse,\n                type: 'radio',\n                checked: model.cursorMode === 'crosshair',\n              },\n            ],\n          },\n          {\n            label: 'Wheel scroll mode',\n            subMenu: [\n              {\n                onClick: () => {\n                  model.setWheelMode('pan')\n                },\n                label: 'Pans view',\n                type: 'radio',\n                checked: model.wheelMode === 'pan',\n              },\n              {\n                onClick: () => {\n                  model.setWheelMode('zoom')\n                },\n                label: 'Zooms view',\n                type: 'radio',\n                checked: model.wheelMode === 'zoom',\n              },\n              {\n                onClick: () => {\n                  model.setWheelMode('none')\n                },\n                label: 'Disable',\n                type: 'radio',\n                checked: model.wheelMode === 'none',\n              },\n            ],\n          },\n        ]}\n      >\n        <MoreVert />\n      </CascadingMenuButton>\n    </div>\n  )\n})\n\nexport default DotplotControls\n","import React from 'react'\nimport { Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { getBpDisplayStr } from '@jbrowse/core/util'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport DotplotWarnings from './DotplotWarnings'\nimport PanButtons from './PanButtons'\nimport DotplotControls from './DotplotControls'\n\nconst useStyles = makeStyles()({\n  bp: {\n    display: 'flex',\n    alignItems: 'center',\n    marginLeft: 10,\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n  headerBar: {\n    display: 'flex',\n    position: 'relative',\n  },\n})\n\nconst DotplotHeader = observer(function ({\n  model,\n  selection,\n}: {\n  model: DotplotViewModel\n  selection?: { width: number; height: number }\n}) {\n  const { classes } = useStyles()\n  const { hview, vview, showPanButtons } = model\n  return (\n    <div className={classes.headerBar}>\n      <DotplotControls model={model} />\n      <Typography className={classes.bp} variant=\"body2\" color=\"textSecondary\">\n        x: {hview.assemblyNames.join(',')} {getBpDisplayStr(hview.currBp)}\n        <br />\n        y: {vview.assemblyNames.join(',')} {getBpDisplayStr(vview.currBp)}\n      </Typography>\n      {selection ? (\n        <Typography\n          className={classes.bp}\n          variant=\"body2\"\n          color=\"textSecondary\"\n        >\n          {`width:${getBpDisplayStr(hview.bpPerPx * selection.width)}`} <br />\n          {`height:${getBpDisplayStr(vview.bpPerPx * selection.height)}`}\n        </Typography>\n      ) : null}\n      <div className={classes.spacer} />\n      <DotplotWarnings model={model} />\n      {showPanButtons ? <PanButtons model={model} /> : null}\n    </div>\n  )\n})\n\nexport default DotplotHeader\n","import React, { useState, useEffect, useRef, lazy, Suspense } from 'react'\nimport { LoadingEllipses, Menu, ResizeHandle } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport { transaction } from 'mobx'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport ImportForm from './ImportForm'\nimport Header from './Header'\nimport Grid from './Grid'\nimport { VerticalAxis, HorizontalAxis } from './Axes'\n\nconst TooltipWhereClicked = lazy(() => import('./DotplotTooltipClick'))\nconst TooltipWhereMouseovered = lazy(() => import('./DotplotTooltipMouseover'))\n\nconst blank = { left: 0, top: 0, width: 0, height: 0 }\n\nconst useStyles = makeStyles()(theme => ({\n  spacer: {\n    gridColumn: '1/2',\n    gridRow: '2/2',\n  },\n  root: {\n    position: 'relative',\n    marginBottom: theme.spacing(1),\n    overflow: 'hidden',\n  },\n\n  container: {\n    display: 'grid',\n    padding: 5,\n    position: 'relative',\n  },\n  overlay: {\n    pointerEvents: 'none',\n    overflow: 'hidden',\n    display: 'flex',\n    width: '100%',\n    gridRow: '1/2',\n    gridColumn: '2/2',\n    zIndex: 100, // needs to be below controls\n    '& path': {\n      cursor: 'crosshair',\n      fill: 'none',\n    },\n  },\n\n  content: {\n    position: 'relative',\n    gridColumn: '2/2',\n    gridRow: '1/2',\n  },\n\n  resizeHandle: {\n    height: 4,\n    background: '#ccc',\n    boxSizing: 'border-box',\n    borderTop: '1px solid #fafafa',\n  },\n}))\n\ntype Coord = [number, number] | undefined\ninterface Rect {\n  left: number\n  top: number\n}\n\n// produces offsetX/offsetY coordinates from a clientX and an element's\n// getBoundingClientRect\nfunction getOffset(coord: Coord, rect: Rect) {\n  return coord && ([coord[0] - rect.left, coord[1] - rect.top] as Coord)\n}\n\nconst RenderedComponent = observer(({ model }: { model: DotplotViewModel }) => {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.overlay}>\n      {model.tracks.map(track => {\n        const [display] = track.displays\n        const { RenderingComponent } = display\n        return RenderingComponent ? (\n          <RenderingComponent\n            key={track.configuration.trackId}\n            model={display}\n          />\n        ) : null\n      })}\n    </div>\n  )\n})\n\nconst DotplotViewInternal = observer(function ({\n  model,\n}: {\n  model: DotplotViewModel\n}) {\n  const { classes } = useStyles()\n  const [mousecurrClient, setMouseCurrClient] = useState<Coord>()\n  const [mousedownClient, setMouseDownClient] = useState<Coord>()\n  const [mouseOvered, setMouseOvered] = useState(false)\n  const [mouseupClient, setMouseUpClient] = useState<Coord>()\n  const ref = useRef<HTMLDivElement>(null)\n  const root = useRef<HTMLDivElement>(null)\n  const distanceX = useRef(0)\n  const distanceY = useRef(0)\n  const scheduled = useRef(false)\n  const [ctrlKeyWasUsed, setCtrlKeyWasUsed] = useState(false)\n  const [ctrlKeyDown, setCtrlKeyDown] = useState(false)\n  const svg = ref.current?.getBoundingClientRect() || blank\n  const rootRect = ref.current?.getBoundingClientRect() || blank\n  const mousedown = getOffset(mousedownClient, svg)\n  const mousecurr = getOffset(mousecurrClient, svg)\n  const mouseup = getOffset(mouseupClient, svg)\n  const mouserect = mouseup || mousecurr\n  const mouserectClient = mouseupClient || mousecurrClient\n  const xdistance = mousedown && mouserect ? mouserect[0] - mousedown[0] : 0\n  const ydistance = mousedown && mouserect ? mouserect[1] - mousedown[1] : 0\n  const { hview, vview, wheelMode, cursorMode } = model\n\n  const validPan =\n    (cursorMode === 'move' && !ctrlKeyWasUsed) ||\n    (cursorMode === 'crosshair' && ctrlKeyWasUsed)\n\n  const validSelect =\n    (cursorMode === 'move' && ctrlKeyWasUsed) ||\n    (cursorMode === 'crosshair' && !ctrlKeyWasUsed)\n\n  // use non-React wheel handler to properly prevent body scrolling\n  useEffect(() => {\n    function onWheel(event: WheelEvent) {\n      event.preventDefault()\n\n      distanceX.current += event.deltaX\n      distanceY.current -= event.deltaY\n      if (!scheduled.current) {\n        scheduled.current = true\n\n        window.requestAnimationFrame(() => {\n          transaction(() => {\n            if (wheelMode === 'pan') {\n              hview.scroll(distanceX.current / 3)\n              vview.scroll(distanceY.current / 10)\n            } else if (wheelMode === 'zoom') {\n              if (\n                Math.abs(distanceY.current) > Math.abs(distanceX.current) * 2 &&\n                mousecurr\n              ) {\n                const val = distanceY.current < 0 ? 1.1 : 0.9\n                hview.zoomTo(hview.bpPerPx * val, mousecurr[0])\n                vview.zoomTo(\n                  vview.bpPerPx * val,\n                  rootRect.height - mousecurr[1],\n                )\n              }\n            }\n          })\n          scheduled.current = false\n          distanceX.current = 0\n          distanceY.current = 0\n        })\n      }\n    }\n    if (ref.current) {\n      const curr = ref.current\n      curr.addEventListener('wheel', onWheel)\n      return () => {\n        curr.removeEventListener('wheel', onWheel)\n      }\n    }\n    return () => {}\n  }, [hview, vview, wheelMode, mousecurr, rootRect.height])\n\n  useEffect(() => {\n    function globalMouseMove(event: MouseEvent) {\n      setMouseCurrClient([event.clientX, event.clientY])\n\n      if (mousecurrClient && mousedownClient && validPan && !mouseupClient) {\n        hview.scroll(-event.clientX + mousecurrClient[0])\n        vview.scroll(event.clientY - mousecurrClient[1])\n      }\n    }\n\n    window.addEventListener('mousemove', globalMouseMove)\n    return () => {\n      window.removeEventListener('mousemove', globalMouseMove)\n    }\n  }, [validPan, mousecurrClient, mousedownClient, mouseupClient, hview, vview])\n\n  useEffect(() => {\n    function globalCtrlKeyDown(event: KeyboardEvent) {\n      if (event.metaKey || event.ctrlKey) {\n        setCtrlKeyDown(true)\n      }\n    }\n    function globalCtrlKeyUp(event: KeyboardEvent) {\n      if (!event.metaKey && !event.ctrlKey) {\n        setCtrlKeyDown(false)\n      }\n    }\n    window.addEventListener('keydown', globalCtrlKeyDown)\n    window.addEventListener('keyup', globalCtrlKeyUp)\n    return () => {\n      window.removeEventListener('keydown', globalCtrlKeyDown)\n      window.addEventListener('keyup', globalCtrlKeyUp)\n    }\n  }, [])\n\n  // detect a mouseup after a mousedown was submitted, autoremoves mouseup once\n  // that single mouseup is set\n  useEffect(() => {\n    function globalMouseUp(event: MouseEvent) {\n      if (Math.abs(xdistance) > 3 && Math.abs(ydistance) > 3 && validSelect) {\n        setMouseUpClient([event.clientX, event.clientY])\n      } else {\n        setMouseDownClient(undefined)\n      }\n    }\n    if (mousedown && !mouseup) {\n      window.addEventListener('mouseup', globalMouseUp, true)\n      return () => {\n        window.removeEventListener('mouseup', globalMouseUp, true)\n      }\n    }\n    return () => {}\n  }, [validSelect, mousedown, mouseup, xdistance, ydistance])\n\n  return (\n    <div>\n      <Header\n        model={model}\n        selection={\n          !validSelect || !(mousedown && mouserect)\n            ? undefined\n            : {\n                width: Math.abs(xdistance),\n                height: Math.abs(ydistance),\n              }\n        }\n      />\n      <div\n        ref={root}\n        className={classes.root}\n        onMouseLeave={() => {\n          setMouseOvered(false)\n        }}\n        onMouseEnter={() => {\n          setMouseOvered(true)\n        }}\n      >\n        <div className={classes.container}>\n          <VerticalAxis model={model} />\n          <HorizontalAxis model={model} />\n          <div ref={ref} className={classes.content}>\n            {mouseOvered && validSelect ? (\n              <Suspense fallback={null}>\n                <TooltipWhereMouseovered\n                  model={model}\n                  mouserect={mouserect}\n                  mouserectClient={mouserectClient}\n                  xdistance={xdistance}\n                />\n              </Suspense>\n            ) : null}\n            {validSelect ? (\n              <Suspense fallback={null}>\n                <TooltipWhereClicked\n                  model={model}\n                  mousedown={mousedown}\n                  mousedownClient={mousedownClient}\n                  xdistance={xdistance}\n                  ydistance={ydistance}\n                />\n              </Suspense>\n            ) : null}\n            <div\n              style={{ cursor: ctrlKeyDown ? 'pointer' : cursorMode }}\n              onMouseDown={event => {\n                if (event.button === 0) {\n                  const { clientX, clientY } = event\n                  setMouseDownClient([clientX, clientY])\n                  setMouseCurrClient([clientX, clientY])\n                  setCtrlKeyWasUsed(ctrlKeyDown)\n                }\n              }}\n            >\n              <Grid model={model}>\n                {validSelect && mousedown && mouserect ? (\n                  <rect\n                    fill=\"rgba(255,0,0,0.3)\"\n                    x={Math.min(mouserect[0], mousedown[0])}\n                    y={Math.min(mouserect[1], mousedown[1])}\n                    width={Math.abs(xdistance)}\n                    height={Math.abs(ydistance)}\n                  />\n                ) : null}\n              </Grid>\n            </div>\n            <div className={classes.spacer} />\n          </div>\n          <RenderedComponent model={model} />\n          <Menu\n            open={Boolean(mouseup)}\n            onMenuItemClick={(_, callback) => {\n              callback()\n              setMouseUpClient(undefined)\n              setMouseDownClient(undefined)\n            }}\n            onClose={() => {\n              setMouseUpClient(undefined)\n              setMouseDownClient(undefined)\n            }}\n            anchorReference=\"anchorPosition\"\n            anchorPosition={\n              mouseupClient\n                ? {\n                    top: mouseupClient[1] + 50,\n                    left: mouseupClient[0] + 50,\n                  }\n                : undefined\n            }\n            style={{ zIndex: 10000 }}\n            menuItems={[\n              {\n                label: 'Zoom in',\n                onClick: () => {\n                  if (mousedown && mouseup) {\n                    model.zoomIn(mousedown, mouseup)\n                  }\n                  // below line is needed to prevent tooltip from sticking\n                  setMouseOvered(false)\n                },\n              },\n              {\n                label: 'Open linear synteny view',\n                onClick: () => {\n                  if (mousedown && mouseup) {\n                    model.onDotplotView(mousedown, mouseup)\n                  }\n                  // below line is needed to prevent tooltip from sticking\n                  setMouseOvered(false)\n                },\n              },\n            ]}\n          />\n        </div>\n        <ResizeHandle\n          onDrag={n => model.setHeight(model.height + n)}\n          className={classes.resizeHandle}\n        />\n      </div>\n    </div>\n  )\n})\nconst DotplotView = observer(function ({ model }: { model: DotplotViewModel }) {\n  const { initialized, loading, error } = model\n\n  if ((!initialized && !loading) || error) {\n    return <ImportForm model={model} />\n  }\n\n  if (loading) {\n    return <LoadingEllipses variant=\"h6\" />\n  }\n\n  return <DotplotViewInternal model={model} />\n})\n\nexport default DotplotView\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport { getFillProps, getStrokeProps } from '@jbrowse/core/util'\n\nexport const GridRaw = observer(function ({\n  model,\n  children,\n}: {\n  model: DotplotViewModel\n  children?: React.ReactNode\n}) {\n  const { viewWidth, viewHeight, hview, vview } = model\n  const hblocks = hview.dynamicBlocks.contentBlocks\n  const vblocks = vview.dynamicBlocks.contentBlocks\n  if (!hblocks.length || !vblocks.length) {\n    return null\n  }\n  const htop = hview.displayedRegionsTotalPx - hview.offsetPx\n  const vtop = vview.displayedRegionsTotalPx - vview.offsetPx\n  const hbottom = hblocks[0]!.offsetPx - hview.offsetPx\n  const vbottom = vblocks[0]!.offsetPx - vview.offsetPx\n  const theme = useTheme()\n  const stroke = theme.palette.divider\n\n  // Uses math.max/min avoid making very large SVG rect offscreen element,\n  // which can sometimes fail to draw\n  const rx = Math.max(hbottom, 0)\n  const ry = Math.max(viewHeight - vtop, 0)\n  const w = Math.min(htop - hbottom, viewWidth)\n  const h = Math.min(viewHeight - vbottom - ry, viewHeight)\n\n  let lastx = Number.POSITIVE_INFINITY\n  let lasty = Number.POSITIVE_INFINITY\n  return (\n    <>\n      <rect\n        x={rx}\n        y={ry}\n        width={w}\n        height={h}\n        {...getFillProps(theme.palette.background.default)}\n      />\n      <g>\n        {hblocks.map(region => {\n          const x = region.offsetPx - hview.offsetPx\n          const render = Math.floor(x) !== Math.floor(lastx)\n          if (render) {\n            lastx = x\n          }\n          return render ? (\n            <line\n              key={JSON.stringify(region)}\n              x1={x}\n              y1={0}\n              x2={x}\n              y2={viewHeight}\n              {...getStrokeProps(stroke)}\n            />\n          ) : null\n        })}\n        {vblocks.map(region => {\n          const y = viewHeight - (region.offsetPx - vview.offsetPx)\n          const render = Math.floor(y) !== Math.floor(lasty)\n          if (render) {\n            lasty = y\n          }\n          return render ? (\n            <line\n              key={JSON.stringify(region)}\n              x1={0}\n              y1={y}\n              x2={viewWidth}\n              y2={y}\n              {...getStrokeProps(stroke)}\n            />\n          ) : null\n        })}\n        <line\n          x1={htop}\n          y1={0}\n          x2={htop}\n          y2={viewHeight}\n          {...getStrokeProps(stroke)}\n        />\n        <line\n          x1={0}\n          y1={viewHeight - vtop}\n          x2={viewWidth}\n          y2={viewHeight - vtop}\n          {...getStrokeProps(stroke)}\n        />\n      </g>\n      {children}\n    </>\n  )\n})\n\nexport default function Grid({\n  model,\n  children,\n}: {\n  model: DotplotViewModel\n  children?: React.ReactNode\n}) {\n  const { viewWidth, viewHeight } = model\n  return (\n    <svg\n      width={viewWidth}\n      height={viewHeight}\n      style={{ background: 'rgba(0,0,0,0.12)' }}\n    >\n      <GridRaw model={model}>{children}</GridRaw>\n    </svg>\n  )\n}\n"],"names":["useStyles","makeStyles","vtext","gridColumn","gridRow","pointerEvents","userSelect","htext","HorizontalAxis","observer","model","viewWidth","borderY","classes","React","width","height","className","HorizontalAxisRaw","borderX","hview","htextRotation","hticks","offsetPx","dynamicBlocks","bpPerPx","dblocks","contentBlocks","hide","getBlockLabelKeysToHide","theme","useTheme","hviewSnap","getSnapshot","staticBlocks","ticks","map","tick","bpToPx","refName","coord","base","self","filter","f","undefined","region","has","key","x","xoff","Math","floor","_extends","transform","JSON","stringify","y","fontSize","dominantBaseline","textAnchor","getFillProps","palette","text","primary","x1","x2","y1","y2","type","strokeWidth","t","getTickDisplayStr","assemblyNames","join","VerticalAxis","viewHeight","VerticalAxisRaw","vview","vtextRotation","vticks","vviewSnap","yoff","getStrokeProps","grey","getAdapter","radioOption","assembly1","assembly2","fileLocation","indexFileLocation","bed1Location","bed2Location","pafLocation","queryAssembly","targetAssembly","outLocation","deltaLocation","chainLocation","mcscanAnchorsLocation","mcscanSimpleAnchorsLocation","pifGzLocation","index","location","Error","setSessionTrackData","setBed2Location","useState","setBed1Location","setFileLocation","setIndexFileLocation","value","setValue","error","setError","fileName","sessionTrackData","uri","localPath","name","str","r","split","pop","extName","endsWith","slice","stripGz","useEffect","fn","trackId","Date","now","adapter","e","console","Paper","style","padding","ErrorMessage","Typography","textAlign","RadioGroup","onChange","event","target","Grid","container","justifyContent","item","FormControlLabel","control","Radio","label","margin","href","display","FileSelector","description","setLocation","loc","setShowTrackId","session","getSession","tracks","sessionTracks","filteredTracks","track","readConfObject","includes","resetTrack","paragraph","TrackSelectorIcon","length","Select","MenuItem","getTrackName","importFormContainer","spacing","assemblySelector","TrackSelector","choice","setChoice","FormControl","FormLabel","id","row","ImportCustomTrack","ImportSyntenyTrackSelector","setAssembly2","setAssembly1","showTrackId","displayError","Container","alignItems","AssemblySelector","selected","val","Button","onClick","isSessionWithAddTracks","transaction","addTrackConf","toggleTrack","showTrack","setViews","setAssemblyNames","variant","color","WarningDialog","lazy","trackWarnings","displays","warnings","shown","setShown","setHide","Alert","severity","handleClose","dpad","gridTemplateColumns","position","right","zIndex","top","icon","elevation","IconButton","scroll","ArrowDropUp","ArrowLeft","ArrowRight","ArrowDropDown","zoomIn","ZoomIn","zoomOut","ZoomOut","CursorMove","props","SvgIcon","fill","d","CursorMouse","zoomOutButton","zoomInButton","activateTrackSelector","title","CascadingMenuButton","menuItems","squareView","squareViewProportional","showAllRegions","setDrawCigar","drawCigar","checked","setShowPanButtons","showPanButtons","subMenu","setCursorMode","cursorMode","setWheelMode","wheelMode","MoreVert","bp","marginLeft","spacer","flexGrow","headerBar","selection","DotplotControls","getBpDisplayStr","currBp","DotplotWarnings","PanButtons","TooltipWhereClicked","TooltipWhereMouseovered","blank","left","root","marginBottom","overflow","overlay","cursor","content","resizeHandle","background","boxSizing","borderTop","getOffset","rect","RenderedComponent","RenderingComponent","configuration","DotplotViewInternal","mousecurrClient","setMouseCurrClient","mousedownClient","setMouseDownClient","mouseOvered","setMouseOvered","mouseupClient","setMouseUpClient","ref","useRef","distanceX","distanceY","scheduled","ctrlKeyWasUsed","setCtrlKeyWasUsed","ctrlKeyDown","setCtrlKeyDown","svg","current","getBoundingClientRect","rootRect","mousedown","mousecurr","mouseup","mouserect","mouserectClient","xdistance","ydistance","validPan","validSelect","onWheel","preventDefault","deltaX","deltaY","window","requestAnimationFrame","abs","zoomTo","curr","addEventListener","removeEventListener","globalMouseMove","clientX","clientY","globalCtrlKeyDown","metaKey","ctrlKey","globalCtrlKeyUp","globalMouseUp","Header","onMouseLeave","onMouseEnter","Suspense","fallback","onMouseDown","button","min","Menu","open","Boolean","onMenuItemClick","_","callback","onClose","anchorReference","anchorPosition","onDotplotView","ResizeHandle","onDrag","n","setHeight","initialized","loading","ImportForm","LoadingEllipses","GridRaw","children","hblocks","vblocks","htop","displayedRegionsTotalPx","vtop","hbottom","vbottom","stroke","divider","rx","max","ry","w","h","lastx","Number","POSITIVE_INFINITY","lasty","default","render"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3497.9db6611b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3497],{93497:(e,a,t)=>{t.d(a,{doAfterAttach:()=>o});var n=t(36422),i=t(42489),s=t(99546);function o(e){!function(e,a){(0,n.addDisposer)(e,(0,i.autorun)((async()=>{try{await a()}catch(a){(0,n.isAlive)(e)&&e.setError(a)}}),{delay:1e3}))}(e,(async()=>{await async function(e){const{rpcSessionId:a}=(0,s.getContainingTrack)(e),{rpcManager:t}=(0,s.getSession)(e),n=(0,s.getContainingView)(e);if(!n.initialized||e.error||e.regionTooLarge)return;e.setLoading(!0);const i=await t.call(a,"CoreGetFeatures",{sessionId:a,regions:n.staticBlocks.contentBlocks,adapterConfig:e.adapterConfig});e.setFeatures((0,s.dedupe)(i,(e=>e.id()))),e.setLoading(!1)}(e)}))}}}]);
+//# sourceMappingURL=3497.9db6611b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3497.9db6611b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3497.9db6611b.chunk.js","mappings":"2LAIO,SAASA,EAA2CC,ICiIpD,SACLA,EACAC,IAGAC,EAAAA,EAAAA,aACEF,GACAG,EAAAA,EAAAA,UAAQC,UACN,UACQH,GACR,CAAE,MAAOI,IACHC,EAAAA,EAAAA,SAAQN,IACVA,EAAKO,SAASF,EAElB,IDzIF,CAAEG,MAAO,MC4Ib,CDjJEC,CACET,GACAI,gBEiCGA,eAA2BJ,GAEhC,MAAQU,aAAcC,IAAcC,EAAAA,EAAAA,oBAAmBZ,IACjD,WAAEa,IAAeC,EAAAA,EAAAA,YAAWd,GAC5Be,GAAOC,EAAAA,EAAAA,mBAAkBhB,GAE/B,IAAKe,EAAKE,aAAejB,EAAKkB,OAASlB,EAAKmB,eAC1C,OAGFnB,EAAKoB,YAAW,GAChB,MAAMC,QAAaR,EAAWS,KAAKX,EAAW,kBAAmB,CAC/DA,YACAY,QAASR,EAAKS,aAAaC,cAC3BC,cAAe1B,EAAK0B,gBAGtB1B,EAAK2B,aAAYC,EAAAA,EAAAA,QAAOP,GAAKQ,GAAKA,EAAEC,QACpC9B,EAAKoB,YAAW,EAClB,CFnDYW,CAAY/B,EAAK,GAI7B,C","sources":["../../../plugins/arc/src/LinearPairedArcDisplay/afterAttach.tsx","../../../plugins/arc/src/LinearPairedArcDisplay/util.ts","../../../plugins/arc/src/LinearPairedArcDisplay/fetchChains.ts"],"sourcesContent":["import { createAutorun } from './util'\nimport { fetchChains } from './fetchChains'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\n\nexport function doAfterAttach<T extends IAnyStateTreeNode>(self: T) {\n  createAutorun(\n    self,\n    async () => {\n      await fetchChains(self)\n    },\n    { delay: 1000 },\n  )\n}\n","import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Feature, AugmentedRegion } from '@jbrowse/core/util'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\nimport { IAnyStateTreeNode, addDisposer, isAlive } from 'mobx-state-tree'\nimport { IAutorunOptions, autorun } from 'mobx'\n\n// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and\n// BAM does not\nexport function getTag(feature: Feature, tag: string) {\n  const tags = feature.get('tags')\n  return tags !== undefined ? tags[tag] : feature.get(tag)\n}\n\n// use fallback alt tag, used in situations where upper case/lower case tags\n// exist e.g. Mm/MM for base modifications\nexport function getTagAlt(feature: Feature, tag: string, alt: string) {\n  return getTag(feature, tag) ?? getTag(feature, alt)\n}\n\n// orientation definitions from igv.js, see also\n// https://software.broadinstitute.org/software/igv/interpreting_pair_orientations\nexport const orientationTypes = {\n  fr: {\n    F1R2: 'LR',\n    F2R1: 'LR',\n\n    F1F2: 'LL',\n    F2F1: 'LL',\n\n    R1R2: 'RR',\n    R2R1: 'RR',\n\n    R1F2: 'RL',\n    R2F1: 'RL',\n  } as Record<string, string>,\n\n  rf: {\n    R1F2: 'LR',\n    R2F1: 'LR',\n\n    R1R2: 'LL',\n    R2R1: 'LL',\n\n    F1F2: 'RR',\n    F2F1: 'RR',\n\n    F1R2: 'RL',\n    F2R1: 'RL',\n  } as Record<string, string>,\n\n  ff: {\n    F2F1: 'LR',\n    R1R2: 'LR',\n\n    F2R1: 'LL',\n    R1F2: 'LL',\n\n    R2F1: 'RR',\n    F1R2: 'RR',\n\n    R2R1: 'RL',\n    F1F2: 'RL',\n  } as Record<string, string>,\n}\n\nexport const pairMap = {\n  LR: 'color_pair_lr',\n  LL: 'color_pair_ll',\n  RR: 'color_pair_rr',\n  RL: 'color_pair_rl',\n} as const\n\nexport function getColorWGBS(strand: number, base: string) {\n  if (strand === 1) {\n    if (base === 'C') {\n      return '#f00'\n    }\n    if (base === 'T') {\n      return '#00f'\n    }\n  } else if (strand === -1) {\n    if (base === 'G') {\n      return '#f00'\n    }\n    if (base === 'A') {\n      return '#00f'\n    }\n  }\n  return '#888'\n}\n\n// fetches region sequence augmenting by +/- 1bp for CpG on either side of\n// requested region\nexport async function fetchSequence(\n  region: AugmentedRegion,\n  adapter: BaseFeatureDataAdapter,\n) {\n  const { start, end, originalRefName, refName } = region\n\n  const feats = await firstValueFrom(\n    adapter\n      .getFeatures({\n        ...region,\n        refName: originalRefName || refName,\n        end: end + 1,\n        start: Math.max(0, start - 1),\n      })\n      .pipe(toArray()),\n  )\n  return feats[0]?.get('seq')\n}\n\n// has to check underlying C-G (aka CpG) on the reference sequence\nexport function shouldFetchReferenceSequence(type?: string) {\n  return type === 'methylation'\n}\n\n// adapted from IGV\n// https://github.com/igvteam/igv/blob/e803e3af2d8c9ea049961dfd4628146bdde9a574/src/main/java/org/broad/igv/sam/mods/BaseModificationColors.java#L27\nexport const modificationColors = {\n  m: 'rgb(255,0,0)',\n  h: 'rgb(11, 132, 165)',\n  o: 'rgb(111, 78, 129)',\n  f: 'rgb(246, 200, 95)',\n  c: 'rgb(157, 216, 102)',\n  g: 'rgb(255, 160, 86)',\n  e: 'rgb(141, 221, 208)',\n  b: 'rgb(202, 71, 47)',\n} as Record<string, string>\n\ntype DisplayModel = IAnyStateTreeNode & { setError: (arg: unknown) => void }\n\nexport function createAutorun(\n  self: DisplayModel,\n  cb: () => Promise<void>,\n  opts?: IAutorunOptions,\n) {\n  addDisposer(\n    self,\n    autorun(async () => {\n      try {\n        await cb()\n      } catch (e) {\n        if (isAlive(self)) {\n          self.setError(e)\n        }\n      }\n    }, opts),\n  )\n}\nexport function randomColor() {\n  return `hsl(${Math.random() * 200}, 50%, 50%)`\n}\n","import {\n  dedupe,\n  Feature,\n  getContainingTrack,\n  getContainingView,\n  getSession,\n} from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { LinearArcDisplayModel } from './model'\n\ntype LGV = LinearGenomeViewModel\n\nexport interface ReducedFeature {\n  name: string\n  strand: number\n  refName: string\n  start: number\n  end: number\n  id: string\n  flags: number\n  tlen: number\n  pair_orientation: string\n  next_ref?: string\n  next_pos?: number\n  clipPos: number\n  SA?: string\n}\n\nexport interface ChainStats {\n  max: number\n  min: number\n  upper: number\n  lower: number\n}\n\nexport interface ChainData {\n  chains: ReducedFeature[][]\n  stats?: ChainStats\n}\n\nexport async function fetchChains(self: LinearArcDisplayModel) {\n  // @ts-expect-error\n  const { rpcSessionId: sessionId } = getContainingTrack(self)\n  const { rpcManager } = getSession(self)\n  const view = getContainingView(self) as LGV\n\n  if (!view.initialized || self.error || self.regionTooLarge) {\n    return\n  }\n\n  self.setLoading(true)\n  const ret = (await rpcManager.call(sessionId, 'CoreGetFeatures', {\n    sessionId,\n    regions: view.staticBlocks.contentBlocks,\n    adapterConfig: self.adapterConfig,\n  })) as Feature[]\n\n  self.setFeatures(dedupe(ret, r => r.id()))\n  self.setLoading(false)\n}\n"],"names":["doAfterAttach","self","cb","addDisposer","autorun","async","e","isAlive","setError","delay","createAutorun","rpcSessionId","sessionId","getContainingTrack","rpcManager","getSession","view","getContainingView","initialized","error","regionTooLarge","setLoading","ret","call","regions","staticBlocks","contentBlocks","adapterConfig","setFeatures","dedupe","r","id","fetchChains"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3525.e74d3ff0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3525],{33525:(t,e,s)=>{"use strict";s.r(e),s.d(e,{default:()=>S});var r=s(16308),a=s.n(r),i=s(47046),n=s(15396),o=s.n(n);async function c(t,e,s={}){const{defaultContent:r={}}=s;let a;try{return a=await e(t,{encoding:"utf8"}),JSON.parse(a)}catch(t){if("ENOENT"===t.code||404===t.status||t.message.includes("404")||t.message.includes("ENOENT"))return r;throw t}}function h(t,e="."){return o()(t,e)}class l{constructor({readFile:t,cacheSize:e=100}){if(this.topList=[],this.chunkCache=new i.A({cache:new(a())({maxSize:e}),fill:this.readChunkItems.bind(this)}),this.readFile=t,!this.readFile)throw new Error('must provide a "readFile" function')}importExisting(t,e,s,r,a){this.topList=t,this.attrs=e,this.start=e.makeFastGetter("Start"),this.end=e.makeFastGetter("End"),this.lazyClass=a,this.baseURL=s,this.lazyUrlTemplate=r}binarySearch(t,e,s){let r,a=-1,i=t.length;for(;i-a>1;)r=a+i>>>1,s(t[r])>=e?i=r:a=r;return s===this.end?i:a}readChunkItems(t){return c(h(this.lazyUrlTemplate.replace(/\{Chunk\}/gi,t),this.baseURL),this.readFile,{defaultContent:[]})}async*iterateSublist(t,e,s,r,a,i,n){const o=this.attrs.makeGetter("Chunk"),c=this.attrs.makeGetter("Sublist"),h=[];for(let l=this.binarySearch(t,e,a);l<t.length&&l>=0&&r*i(t[l])<r*s;l+=r){if(t[l][0]===this.lazyClass){const e=o(t[l]),s=this.chunkCache.get(e,e).then((t=>[t,e]));h.push(s)}else yield[t[l],n.concat(l)];const u=c(t[l]);u&&(yield*this.iterateSublist(u,e,s,r,a,i,n.concat(l)))}for(let t=0;t<h.length;t+=1){const[o,c]=await h[t];o&&(yield*this.iterateSublist(o,e,s,r,a,i,[...n,c]))}}async*iterate(t,e){const s=t>e?-1:1,r=t>e?this.start:this.end,a=t>e?this.end:this.start;this.topList.length>0&&(yield*this.iterateSublist(this.topList,t,e,s,r,a,[0]))}async histogram(t,e,s){const r=new Array(s);r.fill(0);const a=(e-t)/s;for await(const i of this.iterate(t,e)){const e=Math.max(0,(this.start(i)-t)/a|0),n=Math.min(s,(this.end(i)-t)/a|0);for(let t=e;t<=n;t+=1)r[t]+=1}return r}}const u=class{constructor(t){this.classes=t,this.fields=[];for(let e=0;e<t.length;e+=1){this.fields[e]={};for(let s=0;s<t[e].attributes.length;s+=1)this.fields[e][t[e].attributes[s]]=s+1;void 0===t[e].proto&&(t[e].proto={}),void 0===t[e].isArrayAttr&&(t[e].isArrayAttr={})}}attrIndices(t){return this.classes.map((e=>e.attributes.indexOf(t)+1||e.attributes.indexOf(t.toLowerCase())+1||void 0))}get(t,e){if(e in this.fields[t[0]])return t[this.fields[t[0]][e]];const s=e.toLowerCase();if(s in this.fields[t[0]])return t[this.fields[t[0]][s]];const r=this.classes[t[0]].attributes.length+1;return r>=t.length||!(e in t[r])?e in this.classes[t[0]].proto?this.classes[t[0]].proto[e]:void 0:t[r][e]}makeSetter(t){return(e,s)=>{this.set(e,t,s)}}makeGetter(t){return e=>this.get(e,t)}makeFastGetter(t){const e=this.attrIndices(t);return function(t){if(void 0!==e[t[0]])return t[e[t[0]]]}}accessors(){return this._accessors||(this._accessors=this._makeAccessors()),this._accessors}_makeAccessors(){const t={},e={get(t){const e=this.get.field_accessors[t.toLowerCase()];if(e)return e.call(this)},set(t,e){const s=this.set.field_accessors[t];if(s)return s.call(this,e)},tags(){return s[this[0]]||[]}};e.get.field_accessors={},e.set.field_accessors={},this.classes.forEach(((e,s)=>{(e.attributes||[]).forEach(((e,r)=>{t[e]=t[e]||[],t[e][s]=r+1,e=e.toLowerCase(),t[e]=t[e]||[],t[e][s]=r+1}))}));const s=this.classes.map((t=>t.attributes));return Object.keys(t).forEach((s=>{const r=t[s];e.get.field_accessors[s]=r?function(){return this[r[this[0]]]}:function(){}})),e}};class d{constructor({urlTemplate:t,chunkSize:e,length:s,cacheSize:r=100,readFile:n},o){if(this.urlTemplate=t,this.chunkSize=e,this.length=s,this.baseUrl=void 0===o?"":o,this.readFile=n,!n)throw new Error("must provide readFile callback");this.chunkCache=new i.A({cache:new(a())({maxSize:r}),fill:this.getChunk.bind(this)})}index(t,e,s){this.range(t,t,e,void 0,s)}async*range(t,e){t=Math.max(0,t),e=Math.min(e,this.length-1);const s=Math.floor(t/this.chunkSize),r=Math.floor(e/this.chunkSize),a=[];for(let t=s;t<=r;t+=1)a.push(this.chunkCache.get(t,t));for(let s=0;s<a.length;s+=1){const[r,i]=await a[s];yield*this.filterChunkData(t,e,r,i)}}async getChunk(t){let e=this.urlTemplate.replace(/\{Chunk\}/gi,t);return this.baseUrl&&(e=h(e,this.baseUrl)),[t,await c(e,this.readFile)]}*filterChunkData(t,e,s,r){const a=s*this.chunkSize,i=Math.max(0,t-a),n=Math.min(e-a,this.chunkSize-1);for(let t=i;t<=n;t+=1)yield[t+a,r[t]]}}function f(){return this._uniqueID}function g(){return this._parent}function b(){return this.get("subfeatures")}const m=class{constructor({baseUrl:t,urlTemplate:e,readFile:s,cacheSize:r=10}){if(this.baseUrl=t,this.urlTemplates={root:e},this.readFile=s,!this.readFile)throw new Error('must provide a "readFile" function argument');this.dataRootCache=new i.A({cache:new(a())({maxSize:r}),fill:this.fetchDataRoot.bind(this)})}makeNCList(){return new l({readFile:this.readFile})}loadNCList(t,e,s){t.nclist.importExisting(e.intervals.nclist,t.attrs,s,e.intervals.urlTemplate,e.intervals.lazyClass)}getDataRoot(t){return this.dataRootCache.get(t,t)}fetchDataRoot(t){const e=h(this.urlTemplates.root.replace(/{\s*refseq\s*}/g,t),this.baseUrl);return c(e,this.readFile).then((t=>this.parseTrackInfo(t,e)))}parseTrackInfo(t,e){const s={nclist:this.makeNCList(),stats:{featureCount:t.featureCount||0}};t.intervals&&(s.attrs=new u(t.intervals.classes),this.loadNCList(s,t,e));const{histograms:r}=t;if(r&&r.meta){for(let t=0;t<r.meta.length;t+=1)r.meta[t].lazyArray=new d({...r.meta[t].arrayParams,readFile:this.readFile},e);s._histograms=r}return s._histograms&&Object.keys(s._histograms).forEach((t=>{s._histograms[t].forEach((t=>{Object.keys(t).forEach((e=>{"string"==typeof t[e]&&String(Number(t[e]))===t[e]&&(t[e]=Number(t[e]))}))}))})),s}async getRegionStats(t){return(await this.getDataRoot(t.ref)).stats}async getRegionFeatureDensities({refName:t,start:e,end:s,numBins:r,basesPerBin:a}){const i=await this.getDataRoot(t);if(r)a=(s-e)/r;else{if(!a)throw new TypeError("numBins or basesPerBin arg required for getRegionFeatureDensities");r=Math.ceil((s-e)/a)}const n=(i._histograms.stats||[]).find((t=>t.basesPerBin>=a));let o=i._histograms.meta[0];for(let t=0;t<i._histograms.meta.length;t+=1)a>=i._histograms.meta[t].basesPerBin&&(o=i._histograms.meta[t]);let c=a/o.basesPerBin;if(c>.9&&Math.abs(c-Math.round(c))<1e-4){const t=Math.floor(e/o.basesPerBin);c=Math.round(c);const s=[];for(let t=0;t<r;t+=1)s[t]=0;for await(const[e,a]of o.lazyArray.range(t,t+c*r-1))s[Math.floor((e-t)/c)]+=a;return{bins:s,stats:n}}return{bins:await i.nclist.histogram(e,s,r),stats:n}}async*getFeatures({refName:t,start:e,end:s}){const r=await this.getDataRoot(t),a=r.attrs&&r.attrs.accessors();for await(const[i,n]of r.nclist.iterate(e,s)){if(!i.decorated){const e=n.join(",");this.decorateFeature(a,i,`${t},${e}`)}yield i}}decorateFeature(t,e,s,r){e.get=t.get,e.tags=t.tags,e._uniqueID=s,e.id=f,e._parent=r,e.parent=g,e.children=b,(e.get("subfeatures")||[]).forEach(((r,a)=>{this.decorateFeature(t,r,`${s}-${a}`,e)})),e.decorated=!0}};var p=s(46377),w=s(66885),y=s(99546),k=s(45834);const C={refName:"seq_id"},F={seq_id:"refName"};class T{constructor(t,e,s){this.ncFeature=t,this.uniqueId=s||t.id(),this.parentHandle=e}set(){throw new Error("not implemented")}jb2TagToJb1Tag(t){return(C[t]||t).toLowerCase()}jb1TagToJb2Tag(t){const e=t.toLowerCase();return F[e]||e}get(t){const e=this.ncFeature.get(this.jb2TagToJb1Tag(t));return e&&"subfeatures"===t?e.map((t=>new T(t,this))):e}tags(){return this.ncFeature.tags().map((t=>this.jb1TagToJb2Tag(t)))}id(){return this.uniqueId}parent(){return this.parentHandle}children(){return this.get("subfeatures")}toJSON(){const t={uniqueId:this.id()};return this.ncFeature.tags().forEach((e=>{const s=this.jb1TagToJb2Tag(e),r=this.ncFeature.get(e);"subfeatures"===s?t.subfeatures=(r||[]).map((t=>new T(t,this).toJSON())):t[s]=r})),t}}class S extends p.BaseFeatureDataAdapter{constructor(t,e,s){super(t,e,s);const r=this.getConf("refNames"),a=this.getConf("rootUrlTemplate");this.configRefNames=r,this.nclist=new m({baseUrl:"",urlTemplate:a.uri,readFile:t=>new k.Tx(String(a.baseUri?new URL(t,a.baseUri).toString():t)).readFile()})}getFeatures(t,e={}){return(0,w.ObservableCreate)((async s=>{const{signal:r}=e;for await(const a of this.nclist.getFeatures(t,e))(0,y.checkAbortSignal)(r),s.next(this.wrapFeature(a));s.complete()}))}wrapFeature(t){return new T(t,void 0,`${this.id}-${t.id()}`)}async hasDataForRefName(t){const e=await this.nclist.getDataRoot(t);return!!e?.stats?.featureCount}async getRefNames(){return this.configRefNames||[]}freeResources(){}}},47046:(t,e,s)=>{"use strict";s.d(e,{A:()=>n});class r{}class a{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new r){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):"function"==typeof t.addEventListener&&t.addEventListener("abort",(()=>{this.handleAborted(t)}))}handleAborted(t){this.signals.delete(t),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class i{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class n{constructor({fill:t,cache:e}){if("function"!=typeof t)throw new TypeError("must pass a fill function");if("object"!=typeof e)throw new TypeError("must pass a cache object");if("function"!=typeof e.get||"function"!=typeof e.set||"function"!=typeof e.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return"AbortError"===t.name||"ERR_ABORTED"===t.code||"AbortError: aborted"===t.message||"Error: aborted"===t.message}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,s,r){const n=new a,o=new i;o.addCallback(r);const c={aborter:n,promise:this.fillCallback(e,n.signal,(t=>{o.callback(t)})),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};c.aborter.addSignal(s),c.aborter.signal.addEventListener("abort",(()=>{c.settled||this.evict(t,c)})),c.promise.then((()=>{c.settled=!0}),(()=>{c.settled=!0,this.evict(t,c)})).catch((t=>{throw console.error(t),t})),this.cache.set(t,c)}static checkSinglePromise(t,e){function s(){if(null==e?void 0:e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then((t=>(s(),t)),(t=>{throw s(),t}))}has(t){return this.cache.has(t)}get(t,e,s,r){if(!s&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,e,s,r)):a.settled?a.promise:(a.aborter.addSignal(s),a.statusReporter.addCallback(r),n.checkSinglePromise(a.promise,s)):(this.fill(t,e,s,r),n.checkSinglePromise(this.cache.get(t).promise,s))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let s=t.next();!s.done;s=t.next())this.delete(s.value),e+=1;return e}}},15396:function(t){t.exports=function(){"use strict";const t=/^[\w+.-]+:\/\//,e=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,s=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;function r(t){return t.startsWith("/")}function a(t){return/^[.?#]/.test(t)}function i(t){const s=e.exec(t);return n(s[1],s[2]||"",s[3],s[4]||"",s[5]||"/",s[6]||"",s[7]||"")}function n(t,e,s,r,a,i,n){return{scheme:t,user:e,host:s,port:r,path:a,query:i,hash:n,type:7}}function o(e){if(function(t){return t.startsWith("//")}(e)){const t=i("http:"+e);return t.scheme="",t.type=6,t}if(r(e)){const t=i("http://foo.com"+e);return t.scheme="",t.host="",t.type=5,t}if(function(t){return t.startsWith("file:")}(e))return function(t){const e=s.exec(t),a=e[2];return n("file:","",e[1]||"","",r(a)?a:"/"+a,e[3]||"",e[4]||"")}(e);if(function(e){return t.test(e)}(e))return i(e);const a=i("http://foo.com/"+e);return a.scheme="",a.host="",a.type=e?e.startsWith("?")?3:e.startsWith("#")?2:4:1,a}function c(t,e){const s=e<=4,r=t.path.split("/");let a=1,i=0,n=!1;for(let t=1;t<r.length;t++){const e=r[t];e?(n=!1,"."!==e&&(".."!==e?(r[a++]=e,i++):i?(n=!0,i--,a--):s&&(r[a++]=e))):n=!0}let o="";for(let t=1;t<a;t++)o+="/"+r[t];(!o||n&&!o.endsWith("/.."))&&(o+="/"),t.path=o}return function(t,e){if(!t&&!e)return"";const s=o(t);let r=s.type;if(e&&7!==r){const t=o(e),a=t.type;switch(r){case 1:s.hash=t.hash;case 2:s.query=t.query;case 3:case 4:!function(t,e){c(e,e.type),"/"===t.path?t.path=e.path:t.path=function(t){if(t.endsWith("/.."))return t;const e=t.lastIndexOf("/");return t.slice(0,e+1)}(e.path)+t.path}(s,t);case 5:s.user=t.user,s.host=t.host,s.port=t.port;case 6:s.scheme=t.scheme}a>r&&(r=a)}c(s,r);const i=s.query+s.hash;switch(r){case 2:case 3:return i;case 4:{const r=s.path.slice(1);return r?a(e||t)&&!a(r)?"./"+r+i:r+i:i||"."}case 5:return s.path+i;default:return s.scheme+"//"+s.user+s.host+s.port+s.path+i}}}()}}]);
+//# sourceMappingURL=3525.e74d3ff0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3525.e74d3ff0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3525.e74d3ff0.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/nclist/src/util.ts","../../../node_modules/@gmod/nclist/src/nclist.ts","../../../node_modules/@gmod/nclist/src/array_representation.ts","../../../node_modules/@gmod/nclist/src/lazy_array.ts","../../../node_modules/@gmod/nclist/src/feature_store.ts","../../../node_modules/@gmod/nclist/src/index.ts","../../../plugins/legacy-jbrowse/src/NCListAdapter/NCListFeature.ts","../../../plugins/legacy-jbrowse/src/NCListAdapter/NCListAdapter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@jridgewell/resolve-uri/src/resolve-uri.ts"],"sourcesContent":["//@ts-nocheck\nimport resolve from '@jridgewell/resolve-uri'\n\nexport async function readJSON(url, readFile, options = {}) {\n  const { defaultContent = {} } = options\n  let str\n  try {\n    str = await readFile(url, { encoding: 'utf8' })\n    return JSON.parse(str)\n  } catch (error) {\n    if (\n      error.code === 'ENOENT' ||\n      error.status === 404 ||\n      error.message.includes('404') ||\n      error.message.includes('ENOENT')\n    ) {\n      return defaultContent\n    }\n    throw error\n  }\n}\n\nexport function foo() {}\n\nexport function newURL(arg: string, base?: string = '.') {\n  return resolve(arg, base)\n}\n","//@ts-nocheck\nimport QuickLRU from 'quick-lru'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport { newURL, readJSON } from './util'\n\nexport default class NCList {\n  constructor({ readFile, cacheSize = 100 }) {\n    this.topList = []\n    this.chunkCache = new AbortablePromiseCache({\n      cache: new QuickLRU({ maxSize: cacheSize }),\n      fill: this.readChunkItems.bind(this),\n    })\n    this.readFile = readFile\n    if (!this.readFile) {\n      throw new Error(`must provide a \"readFile\" function`)\n    }\n  }\n\n  importExisting(nclist, attrs, baseURL, lazyUrlTemplate, lazyClass) {\n    this.topList = nclist\n    this.attrs = attrs\n    this.start = attrs.makeFastGetter('Start')\n    this.end = attrs.makeFastGetter('End')\n    this.lazyClass = lazyClass\n    this.baseURL = baseURL\n    this.lazyUrlTemplate = lazyUrlTemplate\n  }\n\n  binarySearch(arr, item, getter) {\n    let low = -1\n    let high = arr.length\n    let mid\n\n    while (high - low > 1) {\n      mid = (low + high) >>> 1\n      if (getter(arr[mid]) >= item) {\n        high = mid\n      } else {\n        low = mid\n      }\n    }\n\n    // if we're iterating rightward, return the high index;\n    // if leftward, the low index\n    if (getter === this.end) {\n      return high\n    }\n    return low\n  }\n\n  readChunkItems(chunkNum) {\n    const url = newURL(\n      this.lazyUrlTemplate.replace(/\\{Chunk\\}/gi, chunkNum),\n      this.baseURL,\n    )\n    return readJSON(url, this.readFile, { defaultContent: [] })\n  }\n\n  async *iterateSublist(arr, from, to, inc, searchGet, testGet, path) {\n    const getChunk = this.attrs.makeGetter('Chunk')\n    const getSublist = this.attrs.makeGetter('Sublist')\n\n    const pendingPromises = []\n    for (\n      let i = this.binarySearch(arr, from, searchGet);\n      i < arr.length && i >= 0 && inc * testGet(arr[i]) < inc * to;\n      i += inc\n    ) {\n      if (arr[i][0] === this.lazyClass) {\n        // this is a lazily-loaded chunk of the nclist\n        const chunkNum = getChunk(arr[i])\n        const chunkItemsP = this.chunkCache\n          .get(chunkNum, chunkNum)\n          .then(item => [item, chunkNum])\n        pendingPromises.push(chunkItemsP)\n      } else {\n        // this is just a regular feature\n        yield [arr[i], path.concat(i)]\n      }\n\n      // if this node has a contained sublist, process that too\n      const sublist = getSublist(arr[i])\n      if (sublist) {\n        yield* this.iterateSublist(\n          sublist,\n          from,\n          to,\n          inc,\n          searchGet,\n          testGet,\n          path.concat(i),\n        )\n      }\n    }\n\n    for (let i = 0; i < pendingPromises.length; i += 1) {\n      const [item, chunkNum] = await pendingPromises[i]\n      if (item) {\n        yield* this.iterateSublist(item, from, to, inc, searchGet, testGet, [\n          ...path,\n          chunkNum,\n        ])\n      }\n    }\n  }\n\n  async *iterate(from, to) {\n    // calls the given function once for each of the\n    // intervals that overlap the given interval\n    // if from <= to, iterates left-to-right, otherwise iterates right-to-left\n\n    // inc: iterate leftward or rightward\n    const inc = from > to ? -1 : 1\n    // searchGet: search on start or end\n    const searchGet = from > to ? this.start : this.end\n    // testGet: test on start or end\n    const testGet = from > to ? this.end : this.start\n\n    if (this.topList.length > 0) {\n      yield* this.iterateSublist(\n        this.topList,\n        from,\n        to,\n        inc,\n        searchGet,\n        testGet,\n        [0],\n      )\n    }\n  }\n\n  async histogram(from, to, numBins) {\n    // calls callback with a histogram of the feature density\n    // in the given interval\n\n    const result = new Array(numBins)\n    result.fill(0)\n    const binWidth = (to - from) / numBins\n    for await (const feat of this.iterate(from, to)) {\n      const firstBin = Math.max(0, ((this.start(feat) - from) / binWidth) | 0)\n      const lastBin = Math.min(\n        numBins,\n        ((this.end(feat) - from) / binWidth) | 0,\n      )\n      for (let bin = firstBin; bin <= lastBin; bin += 1) {\n        result[bin] += 1\n      }\n    }\n    return result\n  }\n}\n","//@ts-nocheck\n/**\n * @class ArrayRepr\n *\n * Class for operating on indexed array representations of objects.\n *\n * For example, if we have a lot of objects with similar attributes, e.g.:\n *\n * <pre class=\"code\">\n *     [\n *         {start: 1, end: 2, strand: -1},\n *         {start: 5, end: 6, strand: 1},\n *         ...\n *     ]\n * </pre>\n *\n * @description\n * we can represent them more compactly (e.g., in JSON) something like this:\n *\n * <pre class=\"code\">\n *     class = [\"start\", \"end\", \"strand\"]\n *     [\n *         [1, 2, -1],\n *         [5, 6, 1],\n *         ...\n *     ]\n * </pre>\n *\n * If we want to represent a few different kinds of objects in our big list,\n * we can have multiple \"class\" arrays, and tag each object to identify\n * which \"class\" array describes it.\n *\n * For example, if we have a lot of instances of a few types of objects,\n * like this:\n *\n * <pre class=\"code\">\n *     [\n *         {start: 1, end: 2, strand: 1, id: 1},\n *         {start: 5, end: 6, strand: 1, id: 2},\n *         ...\n *         {start: 10, end: 20, chunk: 1},\n *         {start: 30, end: 40, chunk: 2},\n *         ...\n *     ]\n * </pre>\n *\n * We could use the first array position to indicate the \"class\" for the\n * object, like this:\n *\n * <pre class=\"code\">\n *     classes = [[\"start\", \"end\", \"strand\", \"id\"], [\"start\", \"end\", \"chunk\"]]\n *     [\n *         [0, 1, 2, 1, 1],\n *         [0, 5, 6, 1, 2],\n *         ...\n *         [1, 10, 20, 1],\n *         [1, 30, 40, 1]\n *     ]\n * </pre>\n *\n * Also, if we occasionally want to add an ad-hoc attribute, we could just\n * stick an optional dictionary onto the end:\n *\n * <pre class=\"code\">\n *     classes = [[\"start\", \"end\", \"strand\", \"id\"], [\"start\", \"end\", \"chunk\"]]\n *     [\n *         [0, 1, 2, 1, 1],\n *         [0, 5, 6, 1, 2, {foo: 1}]\n *     ]\n * </pre>\n *\n * Given that individual objects are being represented by arrays, generic\n * code needs some way to differentiate arrays that are meant to be objects\n * from arrays that are actually meant to be arrays.\n * So for each class, we include a dict with <attribute name>: true mappings\n * for each attribute that is meant to be an array.\n *\n * Also, in cases where some attribute values are the same for all objects\n * in a particular set, it may be convenient to define a \"prototype\"\n * with default values for all objects in the set\n *\n * In the end, we get something like this:\n *\n * <pre class=\"code\">\n *     classes=[\n *         {'attributes': ['Start', 'End', 'Subfeatures'],\n *          'proto': {'Chrom': 'chr1'},\n *          'isArrayAttr': {Subfeatures: true}}\n *         ]\n * </pre>\n *\n * That's what this class facilitates.\n */\nclass ArrayRepr {\n  constructor(classes) {\n    this.classes = classes\n    this.fields = []\n    for (let cl = 0; cl < classes.length; cl += 1) {\n      this.fields[cl] = {}\n      for (let f = 0; f < classes[cl].attributes.length; f += 1) {\n        this.fields[cl][classes[cl].attributes[f]] = f + 1\n      }\n      if (classes[cl].proto === undefined) {\n        classes[cl].proto = {}\n      }\n      if (classes[cl].isArrayAttr === undefined) {\n        classes[cl].isArrayAttr = {}\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  attrIndices(attr) {\n    return this.classes.map(\n      x =>\n        x.attributes.indexOf(attr) + 1 ||\n        x.attributes.indexOf(attr.toLowerCase()) + 1 ||\n        undefined,\n    )\n  }\n\n  get(obj, attr) {\n    if (attr in this.fields[obj[0]]) {\n      return obj[this.fields[obj[0]][attr]]\n    }\n\n    // try lowercase\n    const lcattr = attr.toLowerCase()\n    if (lcattr in this.fields[obj[0]]) {\n      return obj[this.fields[obj[0]][lcattr]]\n    }\n\n    const adhocIndex = this.classes[obj[0]].attributes.length + 1\n    if (adhocIndex >= obj.length || !(attr in obj[adhocIndex])) {\n      if (attr in this.classes[obj[0]].proto) {\n        return this.classes[obj[0]].proto[attr]\n      }\n      return undefined\n    }\n    return obj[adhocIndex][attr]\n  }\n\n  makeSetter(attr) {\n    return (obj, val) => {\n      this.set(obj, attr, val)\n    }\n  }\n\n  makeGetter(attr) {\n    return obj => {\n      return this.get(obj, attr)\n    }\n  }\n\n  makeFastGetter(attr) {\n    // can be used only if attr is guaranteed to be in\n    // the \"classes\" array for this object\n    const indices = this.attrIndices(attr)\n    return function get(obj) {\n      if (indices[obj[0]] !== undefined) {\n        return obj[indices[obj[0]]]\n      }\n      return undefined\n    }\n  }\n\n  // construct(self, obj, klass) {\n  //   const result = new Array(self.classes[klass].length)\n  //   Object.keys(obj).forEach(attr => {\n  //     this.set(result, attr, obj[attr])\n  //   })\n  //   return result\n  // }\n\n  /**\n   * Returns fast pre-compiled getter and setter functions for use with\n   * Arrays that use this representation.\n   * When the returned <code>get</code> and <code>set</code> functions are\n   * added as methods to an Array that contains data in this\n   * representation, they provide fast access by name to the data.\n   *\n   * @returns {Object} <code>{ get: function() {...}, set: function(val) {...} }</code>\n   *\n   * @example\n   * var accessors = attrs.accessors();\n   * var feature = get_feature_from_someplace();\n   * feature.get = accessors.get;\n   * // print out the feature start and end\n   * console.log( feature.get('start') + ',' + feature.get('end') );\n   */\n  accessors() {\n    if (!this._accessors) {\n      this._accessors = this._makeAccessors()\n    }\n    return this._accessors\n  }\n\n  /**\n   * @private\n   */\n  _makeAccessors() {\n    const indices = {}\n\n    const accessors = {\n      get(field) {\n        const f = this.get.field_accessors[field.toLowerCase()]\n        if (f) {\n          return f.call(this)\n        }\n        return undefined\n      },\n      set(field, val) {\n        const f = this.set.field_accessors[field]\n        if (f) {\n          return f.call(this, val)\n        }\n        return undefined\n      },\n      tags() {\n        return tags[this[0]] || []\n      },\n    }\n    accessors.get.field_accessors = {}\n    accessors.set.field_accessors = {}\n\n    // make a data structure as: { attr_name: [offset,offset,offset], }\n    // that will be convenient for finding the location of the attr\n    // for a given class like: indexForAttr{attrname}[classnum]\n    this.classes.forEach((cdef, classnum) => {\n      ;(cdef.attributes || []).forEach((attrname, offset) => {\n        indices[attrname] = indices[attrname] || []\n        indices[attrname][classnum] = offset + 1\n\n        attrname = attrname.toLowerCase()\n\n        indices[attrname] = indices[attrname] || []\n        indices[attrname][classnum] = offset + 1\n      })\n    })\n\n    // lowercase all the class attributes\n    const tags = this.classes.map(c => c.attributes)\n\n    // use that to make precalculated get and set accessors for each field\n    Object.keys(indices).forEach(attrname => {\n      const attrIndices = indices[attrname]\n      // get\n      accessors.get.field_accessors[attrname] = !attrIndices\n        ? function get() {\n            return undefined\n          }\n        : function get() {\n            return this[attrIndices[this[0]]]\n          }\n\n      // // set\n      // accessors.set.field_accessors[attrname] = !attrIndices\n      //   ? () => undefined\n      //   : v => {\n      //       this[attrIndices[this[0]]] = v\n      //       return v\n      //     }\n    })\n\n    return accessors\n  }\n}\nexport default ArrayRepr\n\n/*\n\nCopyright (c) 2007-2010 The Evolutionary Software Foundation\n\nCreated by Mitchell Skinner <mitch_skinner@berkeley.edu>\n\nThis package and its accompanying libraries are free software; you can\nredistribute it and/or modify it under the terms of the LGPL (either\nversion 2.1, or at your option, any later version) or the Artistic\nLicense 2.0.  Refer to LICENSE for the full license text.\n\n*/\n","//@ts-nocheck\nimport QuickLRU from 'quick-lru'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport { newURL, readJSON } from './util'\n\n/**\n * For a JSON array that gets too large to load in one go, this class\n * helps break it up into chunks and provides an\n * async API for using the information in the array.\n */\nexport default class LazyArray {\n  constructor(\n    { urlTemplate, chunkSize, length, cacheSize = 100, readFile },\n    baseUrl,\n  ) {\n    this.urlTemplate = urlTemplate\n    this.chunkSize = chunkSize\n    this.length = length\n    this.baseUrl = baseUrl === undefined ? '' : baseUrl\n    this.readFile = readFile\n    if (!readFile) {\n      throw new Error('must provide readFile callback')\n    }\n    this.chunkCache = new AbortablePromiseCache({\n      cache: new QuickLRU({ maxSize: cacheSize }),\n      fill: this.getChunk.bind(this),\n    })\n  }\n\n  /**\n   * call the callback on one element of the array\n   * @param i index\n   * @param callback callback, gets called with (i, value, param)\n   * @param param (optional) callback will get this as its last parameter\n   */\n  index(i, callback, param) {\n    this.range(i, i, callback, undefined, param)\n  }\n\n  /**\n   * async generator for the elements in the range [start,end]\n   *\n   * @param start index of first element to call the callback on\n   * @param end index of last element to call the callback on\n   */\n  async *range(start, end) {\n    start = Math.max(0, start)\n    end = Math.min(end, this.length - 1)\n\n    const firstChunk = Math.floor(start / this.chunkSize)\n    const lastChunk = Math.floor(end / this.chunkSize)\n\n    const chunkreadFiles = []\n    for (let chunk = firstChunk; chunk <= lastChunk; chunk += 1) {\n      chunkreadFiles.push(this.chunkCache.get(chunk, chunk))\n    }\n    for (let i = 0; i < chunkreadFiles.length; i += 1) {\n      const [chunkNumber, chunkData] = await chunkreadFiles[i]\n      yield* this.filterChunkData(start, end, chunkNumber, chunkData)\n    }\n  }\n\n  async getChunk(chunkNumber) {\n    let url = this.urlTemplate.replace(/\\{Chunk\\}/gi, chunkNumber)\n    if (this.baseUrl) {\n      url = newURL(url, this.baseUrl)\n    }\n    const data = await readJSON(url, this.readFile)\n    return [chunkNumber, data]\n  }\n\n  *filterChunkData(queryStart, queryEnd, chunkNumber, chunkData) {\n    // index (in the overall lazy array) of the first position in this chunk\n    const firstIndex = chunkNumber * this.chunkSize\n    const chunkStart = Math.max(0, queryStart - firstIndex)\n    const chunkEnd = Math.min(queryEnd - firstIndex, this.chunkSize - 1)\n    for (let i = chunkStart; i <= chunkEnd; i += 1) {\n      yield [i + firstIndex, chunkData[i]]\n    }\n  }\n}\n","//@ts-nocheck\nimport QuickLRU from 'quick-lru'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\n\nimport GenericNCList from './nclist'\nimport ArrayRepr from './array_representation'\nimport LazyArray from './lazy_array'\nimport { newURL, readJSON } from './util'\n\nfunction idfunc() {\n  return this._uniqueID\n}\nfunction parentfunc() {\n  return this._parent\n}\nfunction childrenfunc() {\n  return this.get('subfeatures')\n}\n\n/**\n * Sequence feature store using nested containment\n * lists held in JSON files that are lazily read.\n *\n * @param {object} args constructor args\n * @param {string} args.baseUrl base URL for resolving relative URLs\n * @param {string} args.urlTemplate Template string for\n *  the root file of each reference sequence. The reference sequence\n *  name will be interpolated into this string where `{refseq}` appears.\n * @param {function} args.readFile function to use for reading remote from URLs.\n */\nexport default class NCListStore {\n  constructor({ baseUrl, urlTemplate, readFile, cacheSize = 10 }) {\n    this.baseUrl = baseUrl\n    this.urlTemplates = { root: urlTemplate }\n\n    this.readFile = readFile\n    if (!this.readFile) {\n      throw new Error(`must provide a \"readFile\" function argument`)\n    }\n\n    this.dataRootCache = new AbortablePromiseCache({\n      cache: new QuickLRU({ maxSize: cacheSize }),\n      fill: this.fetchDataRoot.bind(this),\n    })\n  }\n\n  makeNCList() {\n    return new GenericNCList({ readFile: this.readFile })\n  }\n\n  loadNCList(refData, trackInfo, listUrl) {\n    refData.nclist.importExisting(\n      trackInfo.intervals.nclist,\n      refData.attrs,\n      listUrl,\n      trackInfo.intervals.urlTemplate,\n      trackInfo.intervals.lazyClass,\n    )\n  }\n\n  getDataRoot(refName) {\n    return this.dataRootCache.get(refName, refName)\n  }\n\n  fetchDataRoot(refName) {\n    const url = newURL(\n      this.urlTemplates.root.replace(/{\\s*refseq\\s*}/g, refName),\n      this.baseUrl,\n    )\n\n    // fetch the trackdata\n    return readJSON(url, this.readFile).then(trackInfo =>\n      // trackInfo = JSON.parse( trackInfo );\n      this.parseTrackInfo(trackInfo, url),\n    )\n  }\n\n  parseTrackInfo(trackInfo, url) {\n    const refData = {\n      nclist: this.makeNCList(),\n      stats: {\n        featureCount: trackInfo.featureCount || 0,\n      },\n    }\n\n    if (trackInfo.intervals) {\n      refData.attrs = new ArrayRepr(trackInfo.intervals.classes)\n      this.loadNCList(refData, trackInfo, url)\n    }\n\n    const { histograms } = trackInfo\n    if (histograms && histograms.meta) {\n      for (let i = 0; i < histograms.meta.length; i += 1) {\n        histograms.meta[i].lazyArray = new LazyArray(\n          { ...histograms.meta[i].arrayParams, readFile: this.readFile },\n          url,\n        )\n      }\n      refData._histograms = histograms\n    }\n\n    // parse any strings in the histogram data that look like numbers\n    if (refData._histograms) {\n      Object.keys(refData._histograms).forEach(key => {\n        const entries = refData._histograms[key]\n        entries.forEach(entry => {\n          Object.keys(entry).forEach(key2 => {\n            if (\n              typeof entry[key2] === 'string' &&\n              String(Number(entry[key2])) === entry[key2]\n            ) {\n              entry[key2] = Number(entry[key2])\n            }\n          })\n        })\n      })\n    }\n\n    return refData\n  }\n\n  async getRegionStats(query) {\n    const data = await this.getDataRoot(query.ref)\n    return data.stats\n  }\n\n  /**\n   * fetch binned counts of feature coverage in the given region.\n   *\n   * @param {object} query\n   * @param {string} query.refName reference sequence name\n   * @param {number} query.start region start\n   * @param {number} query.end region end\n   * @param {number} query.numBins number of bins desired in the feature counts\n   * @param {number} query.basesPerBin number of bp desired in each feature counting bin\n   * @returns {object} as:\n   *    `{ bins: hist, stats: statEntry }`\n   */\n  async getRegionFeatureDensities({\n    refName,\n    start,\n    end,\n    numBins,\n    basesPerBin,\n  }) {\n    const data = await this.getDataRoot(refName)\n    if (numBins) {\n      basesPerBin = (end - start) / numBins\n    } else if (basesPerBin) {\n      numBins = Math.ceil((end - start) / basesPerBin)\n    } else {\n      throw new TypeError(\n        'numBins or basesPerBin arg required for getRegionFeatureDensities',\n      )\n    }\n\n    // pick the relevant entry in our pre-calculated stats\n    const stats = data._histograms.stats || []\n    const statEntry = stats.find(entry => entry.basesPerBin >= basesPerBin)\n\n    // The histogramMeta array describes multiple levels of histogram detail,\n    // going from the finest (smallest number of bases per bin) to the\n    // coarsest (largest number of bases per bin).\n    // We want to use coarsest histogramMeta that's at least as fine as the\n    // one we're currently rendering.\n    // TODO: take into account that the histogramMeta chosen here might not\n    // fit neatly into the current histogram (e.g., if the current histogram\n    // is at 50,000 bases/bin, and we have server histograms at 20,000\n    // and 2,000 bases/bin, then we should choose the 2,000 histogramMeta\n    // rather than the 20,000)\n    let histogramMeta = data._histograms.meta[0]\n    for (let i = 0; i < data._histograms.meta.length; i += 1) {\n      if (basesPerBin >= data._histograms.meta[i].basesPerBin) {\n        histogramMeta = data._histograms.meta[i]\n      }\n    }\n\n    // number of bins in the server-supplied histogram for each current bin\n    let binRatio = basesPerBin / histogramMeta.basesPerBin\n\n    // if the server-supplied histogram fits neatly into our requested\n    if (binRatio > 0.9 && Math.abs(binRatio - Math.round(binRatio)) < 0.0001) {\n      // console.log('server-supplied',query);\n      // we can use the server-supplied counts\n      const firstServerBin = Math.floor(start / histogramMeta.basesPerBin)\n      binRatio = Math.round(binRatio)\n      const histogram = []\n      for (let bin = 0; bin < numBins; bin += 1) {\n        histogram[bin] = 0\n      }\n\n      for await (const [i, val] of histogramMeta.lazyArray.range(\n        firstServerBin,\n        firstServerBin + binRatio * numBins - 1,\n      )) {\n        // this will count features that span the boundaries of\n        // the original histogram multiple times, so it's not\n        // perfectly quantitative.  Hopefully it's still useful, though.\n        histogram[Math.floor((i - firstServerBin) / binRatio)] += val\n      }\n      return { bins: histogram, stats: statEntry }\n    }\n    // console.log('make own',query);\n    // make our own counts\n    const hist = await data.nclist.histogram(start, end, numBins)\n    return { bins: hist, stats: statEntry }\n  }\n\n  /**\n   * Fetch features in a given region. This method is an asynchronous generator\n   * yielding feature objects.\n   *\n   * @param {object} args\n   * @param {string} args.refName reference sequence name\n   * @param {number} args.start start of region. 0-based half-open.\n   * @param {number} args.end end of region. 0-based half-open.\n   * @yields {object}\n   */\n  async *getFeatures({ refName, start, end }) {\n    const data = await this.getDataRoot(refName)\n    const accessors = data.attrs && data.attrs.accessors()\n    for await (const [feature, path] of data.nclist.iterate(start, end)) {\n      // the unique ID is a stringification of the path in the\n      // NCList where the feature lives; it's unique across the\n      // top-level NCList (the top-level NCList covers a\n      // track/chromosome combination)\n\n      // only need to decorate a feature once\n      if (!feature.decorated) {\n        const uniqueID = path.join(',')\n        this.decorateFeature(accessors, feature, `${refName},${uniqueID}`)\n      }\n      yield feature\n    }\n  }\n\n  // helper method to recursively add .get and .tags methods to a feature and its\n  // subfeatures\n  decorateFeature(accessors, feature, id, parent) {\n    feature.get = accessors.get\n    feature.tags = accessors.tags\n    feature._uniqueID = id\n    feature.id = idfunc\n    feature._parent = parent\n    feature.parent = parentfunc\n    feature.children = childrenfunc\n    ;(feature.get('subfeatures') || []).forEach((f, i) => {\n      this.decorateFeature(accessors, f, `${id}-${i}`, feature)\n    })\n    feature.decorated = true\n  }\n}\n","//@ts-nocheck\nimport NCListStore from './feature_store'\n\nexport default NCListStore\n","import {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\n\nconst jb2ToJb1 = { refName: 'seq_id' }\n\nconst jb1ToJb2 = { seq_id: 'refName' }\n\n/**\n * wrapper to adapt nclist features to act like jbrowse 2 features\n */\nexport default class NCListFeature implements Feature {\n  private parentHandle?: Feature\n\n  private uniqueId: string\n\n  constructor(\n    private ncFeature: any,\n    parent?: Feature,\n    id?: string,\n  ) {\n    this.uniqueId = id || ncFeature.id()\n    this.parentHandle = parent\n  }\n\n  set(): void {\n    throw new Error('not implemented')\n  }\n\n  jb2TagToJb1Tag(tag: string): string {\n    // @ts-expect-error\n    const mapped = jb2ToJb1[tag] || tag\n    return mapped.toLowerCase()\n  }\n\n  jb1TagToJb2Tag(tag: string): string {\n    const t = tag.toLowerCase()\n    // @ts-expect-error\n    return jb1ToJb2[t] || t\n  }\n\n  get(attrName: string): any {\n    const attr = this.ncFeature.get(this.jb2TagToJb1Tag(attrName))\n    if (attr && attrName === 'subfeatures') {\n      return attr.map((subfeature: any) => new NCListFeature(subfeature, this))\n    }\n    return attr\n  }\n\n  /**\n   * Get an array listing which data keys are present in this feature.\n   */\n  tags(): string[] {\n    return this.ncFeature.tags().map((t: string) => this.jb1TagToJb2Tag(t))\n  }\n\n  /**\n   * Get the unique ID of this feature.\n   */\n  id(): string {\n    return this.uniqueId\n  }\n\n  /**\n   * Get this feature's parent feature, or undefined if none.\n   */\n  parent(): Feature | undefined {\n    return this.parentHandle\n  }\n\n  /**\n   * Get an array of child features, or undefined if none.\n   */\n  children(): Feature[] | undefined {\n    return this.get('subfeatures')\n  }\n\n  toJSON(): SimpleFeatureSerialized {\n    // @ts-expect-error\n    const data: SimpleFeatureSerialized = { uniqueId: this.id() }\n\n    this.ncFeature.tags().forEach((tag: string) => {\n      const mappedTag = this.jb1TagToJb2Tag(tag)\n      const value = this.ncFeature.get(tag)\n      if (mappedTag === 'subfeatures') {\n        data.subfeatures = (value || []).map((f: Feature) => {\n          // note: was new NCListFeature(f, `${this.id()}-${i}`, this).toJSON()\n          return new NCListFeature(f, this).toJSON()\n        })\n      } else {\n        data[mappedTag] = value\n      }\n    })\n    return data\n  }\n}\n","import NCListStore from '@gmod/nclist'\nimport { Region } from '@jbrowse/core/util/types'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { checkAbortSignal } from '@jbrowse/core/util'\nimport { RemoteFile } from 'generic-filehandle'\nimport NCListFeature from './NCListFeature'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nexport default class NCListAdapter extends BaseFeatureDataAdapter {\n  private nclist: any\n\n  private configRefNames?: string[]\n\n  constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const refNames = this.getConf('refNames')\n    const rootUrlTemplate = this.getConf('rootUrlTemplate')\n    this.configRefNames = refNames\n\n    this.nclist = new NCListStore({\n      baseUrl: '',\n      urlTemplate: rootUrlTemplate.uri,\n      readFile: (url: string) =>\n        new RemoteFile(\n          String(\n            rootUrlTemplate.baseUri\n              ? new URL(url, rootUrlTemplate.baseUri).toString()\n              : url,\n          ),\n        ).readFile(),\n    })\n  }\n\n  /**\n   * Fetch features for a certain region. Use getFeaturesInRegion() if you also\n   * want to verify that the store has features for the given reference sequence\n   * before fetching.\n   * @param region -\n   * @param opts - [signal] optional signalling object for aborting the fetch\n   * @returns Observable of Feature objects in the region\n   */\n  getFeatures(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { signal } = opts\n      for await (const feature of this.nclist.getFeatures(region, opts)) {\n        checkAbortSignal(signal)\n        observer.next(this.wrapFeature(feature))\n      }\n      observer.complete()\n    })\n  }\n\n  wrapFeature(ncFeature: any): NCListFeature {\n    return new NCListFeature(\n      ncFeature,\n      undefined,\n      `${this.id}-${ncFeature.id()}`,\n    )\n  }\n\n  async hasDataForRefName(refName: string) {\n    const root = await this.nclist.getDataRoot(refName)\n    return !!root?.stats?.featureCount\n  }\n\n  /**\n   * NCList is unable to get list of ref names so returns empty\n   */\n  async getRefNames() {\n    return this.configRefNames || []\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  freeResources() {}\n}\n","class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n  scheme: string;\n  user: string;\n  host: string;\n  port: string;\n  path: string;\n  query: string;\n  hash: string;\n  type: UrlType;\n};\n\nconst enum UrlType {\n  Empty = 1,\n  Hash = 2,\n  Query = 3,\n  RelativePath = 4,\n  AbsolutePath = 5,\n  SchemeRelative = 6,\n  Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n  return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n  return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n  return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n  return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n  return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n  const match = urlRegex.exec(input)!;\n  return makeUrl(\n    match[1],\n    match[2] || '',\n    match[3],\n    match[4] || '',\n    match[5] || '/',\n    match[6] || '',\n    match[7] || '',\n  );\n}\n\nfunction parseFileUrl(input: string): Url {\n  const match = fileRegex.exec(input)!;\n  const path = match[2];\n  return makeUrl(\n    'file:',\n    '',\n    match[1] || '',\n    '',\n    isAbsolutePath(path) ? path : '/' + path,\n    match[3] || '',\n    match[4] || '',\n  );\n}\n\nfunction makeUrl(\n  scheme: string,\n  user: string,\n  host: string,\n  port: string,\n  path: string,\n  query: string,\n  hash: string,\n): Url {\n  return {\n    scheme,\n    user,\n    host,\n    port,\n    path,\n    query,\n    hash,\n    type: UrlType.Absolute,\n  };\n}\n\nfunction parseUrl(input: string): Url {\n  if (isSchemeRelativeUrl(input)) {\n    const url = parseAbsoluteUrl('http:' + input);\n    url.scheme = '';\n    url.type = UrlType.SchemeRelative;\n    return url;\n  }\n\n  if (isAbsolutePath(input)) {\n    const url = parseAbsoluteUrl('http://foo.com' + input);\n    url.scheme = '';\n    url.host = '';\n    url.type = UrlType.AbsolutePath;\n    return url;\n  }\n\n  if (isFileUrl(input)) return parseFileUrl(input);\n\n  if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n  const url = parseAbsoluteUrl('http://foo.com/' + input);\n  url.scheme = '';\n  url.host = '';\n  url.type = input\n    ? input.startsWith('?')\n      ? UrlType.Query\n      : input.startsWith('#')\n      ? UrlType.Hash\n      : UrlType.RelativePath\n    : UrlType.Empty;\n  return url;\n}\n\nfunction stripPathFilename(path: string): string {\n  // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n  // paths. It's not a file, so we can't strip it.\n  if (path.endsWith('/..')) return path;\n  const index = path.lastIndexOf('/');\n  return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n  normalizePath(base, base.type);\n\n  // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n  // path).\n  if (url.path === '/') {\n    url.path = base.path;\n  } else {\n    // Resolution happens relative to the base path's directory, not the file.\n    url.path = stripPathFilename(base.path) + url.path;\n  }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n  const rel = type <= UrlType.RelativePath;\n  const pieces = url.path.split('/');\n\n  // We need to preserve the first piece always, so that we output a leading slash. The item at\n  // pieces[0] is an empty string.\n  let pointer = 1;\n\n  // Positive is the number of real directories we've output, used for popping a parent directory.\n  // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n  let positive = 0;\n\n  // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n  // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n  // real directory, we won't need to append, unless the other conditions happen again.\n  let addTrailingSlash = false;\n\n  for (let i = 1; i < pieces.length; i++) {\n    const piece = pieces[i];\n\n    // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n    if (!piece) {\n      addTrailingSlash = true;\n      continue;\n    }\n\n    // If we encounter a real directory, then we don't need to append anymore.\n    addTrailingSlash = false;\n\n    // A current directory, which we can always drop.\n    if (piece === '.') continue;\n\n    // A parent directory, we need to see if there are any real directories we can pop. Else, we\n    // have an excess of parents, and we'll need to keep the \"..\".\n    if (piece === '..') {\n      if (positive) {\n        addTrailingSlash = true;\n        positive--;\n        pointer--;\n      } else if (rel) {\n        // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n        // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n        pieces[pointer++] = piece;\n      }\n      continue;\n    }\n\n    // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n    // any popped or dropped directories.\n    pieces[pointer++] = piece;\n    positive++;\n  }\n\n  let path = '';\n  for (let i = 1; i < pointer; i++) {\n    path += '/' + pieces[i];\n  }\n  if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n    path += '/';\n  }\n  url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n  if (!input && !base) return '';\n\n  const url = parseUrl(input);\n  let inputType = url.type;\n\n  if (base && inputType !== UrlType.Absolute) {\n    const baseUrl = parseUrl(base);\n    const baseType = baseUrl.type;\n\n    switch (inputType) {\n      case UrlType.Empty:\n        url.hash = baseUrl.hash;\n      // fall through\n\n      case UrlType.Hash:\n        url.query = baseUrl.query;\n      // fall through\n\n      case UrlType.Query:\n      case UrlType.RelativePath:\n        mergePaths(url, baseUrl);\n      // fall through\n\n      case UrlType.AbsolutePath:\n        // The host, user, and port are joined, you can't copy one without the others.\n        url.user = baseUrl.user;\n        url.host = baseUrl.host;\n        url.port = baseUrl.port;\n      // fall through\n\n      case UrlType.SchemeRelative:\n        // The input doesn't have a schema at least, so we need to copy at least that over.\n        url.scheme = baseUrl.scheme;\n    }\n    if (baseType > inputType) inputType = baseType;\n  }\n\n  normalizePath(url, inputType);\n\n  const queryHash = url.query + url.hash;\n  switch (inputType) {\n    // This is impossible, because of the empty checks at the start of the function.\n    // case UrlType.Empty:\n\n    case UrlType.Hash:\n    case UrlType.Query:\n      return queryHash;\n\n    case UrlType.RelativePath: {\n      // The first char is always a \"/\", and we need it to be relative.\n      const path = url.path.slice(1);\n\n      if (!path) return queryHash || '.';\n\n      if (isRelative(base || input) && !isRelative(path)) {\n        // If base started with a leading \".\", or there is no base and input started with a \".\",\n        // then we need to ensure that the relative path starts with a \".\". We don't know if\n        // relative starts with a \"..\", though, so check before prepending.\n        return './' + path + queryHash;\n      }\n\n      return path + queryHash;\n    }\n\n    case UrlType.AbsolutePath:\n      return url.path + queryHash;\n\n    default:\n      return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n  }\n}\n"],"names":["async","readJSON","url","readFile","options","defaultContent","str","encoding","JSON","parse","error","code","status","message","includes","newURL","arg","base","NCList","constructor","cacheSize","this","topList","chunkCache","AbortablePromiseCache","A","cache","maxSize","fill","readChunkItems","bind","Error","importExisting","nclist","attrs","baseURL","lazyUrlTemplate","lazyClass","start","makeFastGetter","end","binarySearch","arr","item","getter","mid","low","high","length","chunkNum","replace","iterateSublist","from","to","inc","searchGet","testGet","path","getChunk","makeGetter","getSublist","pendingPromises","i","chunkItemsP","get","then","push","concat","sublist","iterate","histogram","numBins","result","Array","binWidth","feat","firstBin","Math","max","lastBin","min","bin","classes","fields","cl","f","attributes","undefined","proto","isArrayAttr","attrIndices","attr","map","x","indexOf","toLowerCase","obj","lcattr","adhocIndex","makeSetter","val","set","indices","accessors","_accessors","_makeAccessors","field","field_accessors","call","tags","forEach","cdef","classnum","attrname","offset","c","Object","keys","LazyArray","urlTemplate","chunkSize","baseUrl","index","callback","param","range","firstChunk","floor","lastChunk","chunkreadFiles","chunk","chunkNumber","chunkData","filterChunkData","queryStart","queryEnd","firstIndex","chunkStart","chunkEnd","idfunc","_uniqueID","parentfunc","_parent","childrenfunc","urlTemplates","root","dataRootCache","fetchDataRoot","makeNCList","loadNCList","refData","trackInfo","listUrl","intervals","getDataRoot","refName","parseTrackInfo","stats","featureCount","histograms","meta","lazyArray","arrayParams","_histograms","key","entry","key2","String","Number","getRegionStats","query","ref","getRegionFeatureDensities","basesPerBin","data","TypeError","ceil","statEntry","find","histogramMeta","binRatio","abs","round","firstServerBin","bins","getFeatures","feature","decorated","uniqueID","join","decorateFeature","id","parent","children","jb2ToJb1","jb1ToJb2","seq_id","NCListFeature","ncFeature","uniqueId","parentHandle","jb2TagToJb1Tag","tag","jb1TagToJb2Tag","t","attrName","subfeature","toJSON","mappedTag","value","subfeatures","NCListAdapter","BaseFeatureDataAdapter","config","getSubAdapter","pluginManager","super","refNames","getConf","rootUrlTemplate","configRefNames","NCListStore","uri","RemoteFile","baseUri","URL","toString","region","opts","ObservableCreate","signal","checkAbortSignal","observer","next","wrapFeature","complete","hasDataForRefName","getRefNames","freeResources","NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","aborted","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","currentMessage","elt","fillCallback","isAbortException","exception","name","evict","statusCallback","aborter","statusReporter","newEntry","promise","settled","catch","console","checkSinglePromise","checkForSingleAbort","assign","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","deleteCount","done","schemeRegex","urlRegex","fileRegex","isAbsolutePath","input","startsWith","isRelative","test","parseAbsoluteUrl","match","exec","makeUrl","scheme","user","host","port","hash","type","parseUrl","isSchemeRelativeUrl","isFileUrl","parseFileUrl","isAbsoluteUrl","normalizePath","rel","pieces","split","pointer","positive","addTrailingSlash","piece","endsWith","inputType","baseType","lastIndexOf","slice","stripPathFilename","mergePaths","queryHash"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3550.089089a8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3550],{21169:(e,t,a)=>{a.r(t),a.d(t,{default:()=>g});var o=a(7552),r=a(1343),n=a(48171),s=a(29499),l=a(22679),i=a(56089),c=a(33371),d=a(33248),u=a(58507),p=a(5401),m=a(49823),v=a(75785),h=a(68446);const A=(0,v.n9)()((e=>({formElt:{margin:e.spacing(3),width:400},dialogContent:{width:"80em"},root:{padding:4}})));function b(e){return o.createElement("div",null,o.createElement(r.A,e))}function f({children:e}){return o.createElement("div",null,o.createElement(n.A,null,e))}const g=(0,h.observer)((function({handleClose:e,model:t}){const{classes:a}=A(),{upperCaseCDS:r}=t,[n,v]=(0,o.useState)(`${t.intronBp}`),[h,g]=(0,o.useState)(`${t.upDownBp}`),C=!Number.isNaN(+n),y=!Number.isNaN(+h);return o.createElement(m.Dialog,{maxWidth:"xl",open:!0,onClose:()=>{e()},title:"Feature sequence settings"},o.createElement(s.A,{className:a.dialogContent},o.createElement(b,{label:"Number of intronic bases around splice site to display",className:a.formElt,value:n,helperText:C?"":"Not a number",error:!C,onChange:e=>{v(e.target.value)}}),o.createElement(b,{label:"Number of bases up/down stream of feature to display",className:a.formElt,value:h,helperText:y?"":"Not a number",error:!y,onChange:e=>{g(e.target.value)}}),o.createElement(f,null,o.createElement(l.A,null,"Sequence capitalization"),o.createElement(i.A,{value:r?"cds":"unchanged",onChange:e=>{t.setUpperCaseCDS("cds"===e.target.value)}},o.createElement(c.A,{value:"cds",control:o.createElement(d.A,{className:a.root,size:"small"}),label:"Capitalize CDS and lower case everything else"}),o.createElement(c.A,{value:"unchanged",control:o.createElement(d.A,{className:a.root,size:"small"}),label:"Capitalization from reference genome sequence"})))),o.createElement(u.A,null,o.createElement(p.A,{onClick:()=>{t.setIntronBp(+n),t.setUpDownBp(+h),e()},disabled:!C||!y,color:"primary",variant:"contained"},"Submit"),o.createElement(p.A,{onClick:()=>{e()},color:"secondary",autoFocus:!0,variant:"contained"},"Cancel")))}))},33248:(e,t,a)=>{a.d(t,{A:()=>x});var o=a(7552),r=a(93878),n=a(70799),s=a(72639),l=a(15110),i=a(74893),c=a(69500);const d=(0,i.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),u=(0,i.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var p=a(55270),m=a(51148),v=a(60129);const h=(0,m.Ay)("span",{shouldForwardProp:p.A})({position:"relative",display:"flex"}),A=(0,m.Ay)(d)({transform:"scale(1)"}),b=(0,m.Ay)(u)((0,v.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),f=function(e){const{checked:t=!1,classes:a={},fontSize:o}=e,r={...e,checked:t};return(0,c.jsxs)(h,{className:a.root,ownerState:r,children:[(0,c.jsx)(A,{fontSize:o,className:a.background,ownerState:r}),(0,c.jsx)(b,{fontSize:o,className:a.dot,ownerState:r})]})};var g=a(15622),C=a(4402),y=a(33960),S=a(39006),w=a(38127),k=a(58520),E=a(4785);const z=(0,m.Ay)(l.A,{shouldForwardProp:e=>(0,p.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,"medium"!==a.size&&t[`size${(0,g.A)(a.size)}`],t[`color${(0,g.A)(a.color)}`]]}})((0,v.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${w.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,k.A)()).map((([t])=>({props:{color:t,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,k.A)()).map((([t])=>({props:{color:t,disabled:!1},style:{[`&.${w.A.checked}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),N=(0,c.jsx)(f,{checked:!0}),R=(0,c.jsx)(f,{}),x=o.forwardRef((function(e,t){const a=(0,E.b)({props:e,name:"MuiRadio"}),{checked:s,checkedIcon:l=N,color:i="primary",icon:d=R,name:u,onChange:p,size:m="medium",className:v,disabled:h,disableRipple:A=!1,...b}=a,f=(0,y.A)();let k=h;f&&void 0===k&&(k=f.disabled),k??=!1;const x={...a,disabled:k,disableRipple:A,color:i,size:m},j=(e=>{const{classes:t,color:a,size:o}=e,r={root:["root",`color${(0,g.A)(a)}`,"medium"!==o&&`size${(0,g.A)(o)}`]};return{...t,...(0,n.A)(r,w.q,t)}})(x),$=(0,S.A)();let M=s;const B=(0,C.A)(p,$&&$.onChange);let q=u;var O,D;return $&&(void 0===M&&(O=$.value,M="object"==typeof(D=a.value)&&null!==D?O===D:String(O)===String(D)),void 0===q&&(q=$.name)),(0,c.jsx)(z,{type:"radio",icon:o.cloneElement(d,{fontSize:R.props.fontSize??m}),checkedIcon:o.cloneElement(l,{fontSize:N.props.fontSize??m}),disabled:k,ownerState:x,classes:j,name:q,checked:M,onChange:B,ref:t,className:(0,r.A)(j.root,v),...b})}))},38127:(e,t,a)=>{a.d(t,{A:()=>s,q:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiRadio",e)}const s=(0,o.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},56089:(e,t,a)=>{a.d(t,{A:()=>m});var o=a(7552),r=a(93878),n=a(70799),s=a(83867),l=a(87625),i=a(51584),c=a(77259),d=a(76258),u=a(89456),p=a(69500);const m=o.forwardRef((function(e,t){const{actions:a,children:m,className:v,defaultValue:h,name:A,onChange:b,value:f,...g}=e,C=o.useRef(null),y=(e=>{const{classes:t,row:a,error:o}=e,r={root:["root",a&&"row",o&&"error"]};return(0,n.A)(r,l.B,t)})(e),[S,w]=(0,c.A)({controlled:f,default:h,name:"RadioGroup"});o.useImperativeHandle(a,(()=>({focus:()=>{let e=C.current.querySelector("input:not(:disabled):checked");e||(e=C.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const k=(0,i.A)(t,C),E=(0,u.A)(A),z=o.useMemo((()=>({name:E,onChange(e){w(e.target.value),b&&b(e,e.target.value)},value:S})),[E,b,w,S]);return(0,p.jsx)(d.A.Provider,{value:z,children:(0,p.jsx)(s.A,{role:"radiogroup",ref:k,className:(0,r.A)(y.root,v),...g,children:m})})}))},76258:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext(void 0)},87625:(e,t,a)=>{a.d(t,{A:()=>s,B:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiRadioGroup",e)}const s=(0,o.A)("MuiRadioGroup",["root","row","error"])},39006:(e,t,a)=>{a.d(t,{A:()=>n});var o=a(7552),r=a(76258);function n(){return o.useContext(r.A)}}}]);
+//# sourceMappingURL=3550.089089a8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3550.089089a8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3550.089089a8.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.tsx","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  FormControlLabel,\n  FormControl,\n  FormLabel,\n  Radio,\n  RadioGroup,\n  TextField,\n  TextFieldProps,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { SequenceFeatureDetailsModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  formElt: {\n    margin: theme.spacing(3),\n    width: 400,\n  },\n  dialogContent: {\n    width: '80em',\n  },\n  root: {\n    padding: 4,\n  },\n}))\n\nfunction TextField2(props: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...props} />\n    </div>\n  )\n}\n\nfunction FormControl2({ children }: { children: React.ReactNode }) {\n  return (\n    <div>\n      <FormControl>{children}</FormControl>\n    </div>\n  )\n}\n\nconst SequenceFeatureSettingsDialog = observer(function ({\n  handleClose,\n  model,\n}: {\n  handleClose: () => void\n  model: SequenceFeatureDetailsModel\n}) {\n  const { classes } = useStyles()\n  const { upperCaseCDS } = model\n  const [intronBp, setIntronBp] = useState(`${model.intronBp}`)\n  const [upDownBp, setUpDownBp] = useState(`${model.upDownBp}`)\n  const intronBpValid = !Number.isNaN(+intronBp)\n  const upDownBpValid = !Number.isNaN(+upDownBp)\n  return (\n    <Dialog\n      maxWidth=\"xl\"\n      open\n      onClose={() => {\n        handleClose()\n      }}\n      title=\"Feature sequence settings\"\n    >\n      <DialogContent className={classes.dialogContent}>\n        <TextField2\n          label=\"Number of intronic bases around splice site to display\"\n          className={classes.formElt}\n          value={intronBp}\n          helperText={!intronBpValid ? 'Not a number' : ''}\n          error={!intronBpValid}\n          onChange={event => {\n            setIntronBp(event.target.value)\n          }}\n        />\n        <TextField2\n          label=\"Number of bases up/down stream of feature to display\"\n          className={classes.formElt}\n          value={upDownBp}\n          helperText={!upDownBpValid ? 'Not a number' : ''}\n          error={!upDownBpValid}\n          onChange={event => {\n            setUpDownBp(event.target.value)\n          }}\n        />\n        <FormControl2>\n          <FormLabel>Sequence capitalization</FormLabel>\n          <RadioGroup\n            value={upperCaseCDS ? 'cds' : 'unchanged'}\n            onChange={e => {\n              model.setUpperCaseCDS(e.target.value === 'cds')\n            }}\n          >\n            <FormControlLabel\n              value=\"cds\"\n              control={<Radio className={classes.root} size=\"small\" />}\n              label=\"Capitalize CDS and lower case everything else\"\n            />\n            <FormControlLabel\n              value=\"unchanged\"\n              control={<Radio className={classes.root} size=\"small\" />}\n              label=\"Capitalization from reference genome sequence\"\n            />\n          </RadioGroup>\n        </FormControl2>\n      </DialogContent>\n\n      <DialogActions>\n        <Button\n          onClick={() => {\n            model.setIntronBp(+intronBp)\n            model.setUpDownBp(+upDownBp)\n            handleClose()\n          }}\n          disabled={!intronBpValid || !upDownBpValid}\n          color=\"primary\"\n          variant=\"contained\"\n        >\n          Submit\n        </Button>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"secondary\"\n          autoFocus\n          variant=\"contained\"\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SequenceFeatureSettingsDialog\n","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}"],"names":["useStyles","makeStyles","theme","formElt","margin","spacing","width","dialogContent","root","padding","TextField2","props","React","TextField","FormControl2","children","FormControl","observer","handleClose","model","classes","upperCaseCDS","intronBp","setIntronBp","useState","upDownBp","setUpDownBp","intronBpValid","Number","isNaN","upDownBpValid","Dialog","maxWidth","open","onClose","title","DialogContent","className","label","value","helperText","error","onChange","event","target","FormLabel","RadioGroup","e","setUpperCaseCDS","FormControlLabel","control","Radio","size","DialogActions","Button","onClick","disabled","color","variant","autoFocus","createSvgIcon","d","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","checked","style","easeOut","fontSize","ownerState","background","dot","RadioRoot","SwitchBase","prop","name","slot","overridesResolver","styles","capitalize","vars","palette","text","secondary","radioClasses","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","Object","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","inProps","ref","checkedProp","checkedIcon","icon","nameProp","onChangeProp","disabledProp","other","muiFormControl","useFormControl","slots","composeClasses","useUtilityClasses","radioGroup","useRadioGroup","createChainedFunction","a","b","String","type","clsx","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","row","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","Provider","role","undefined","getRadioGroupUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3578.058bdae5.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3578],{93578:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var s=a(46377),n=a(99834),r=a(66885),i=a(99546),u=a(68584);class c extends s.BaseSequenceAdapter{async getRefNames(e){const{fasta:t}=await this.setup(e);return[...t.keys()]}async getRegions(e){const{fasta:t}=await this.setup(e);return[...t.entries()].map((([e,t])=>({refName:e,start:0,end:t.sequence.length})))}async setupPre(e){const t=this.getConf("fastaLocation"),a=(s=await(0,n.openLocation)(t,this.pluginManager).readFile("utf8"),new Map(s.split(">").filter((e=>/\S/.test(e))).map((e=>{const[t,...a]=e.split("\n"),[s,...n]=t.split(" "),r=a.join("").replace(/\s/g,"");return[s,{description:n.join(" "),sequence:r}]}))));var s;return{fasta:new Map([...a.entries()].map((([e,t])=>[(0,u.readConfObject)(this.config,"rewriteRefNames",{refName:e})||e,t])))}}async getHeader(){const e=this.getConf("metadataLocation");return""===e.uri||"/path/to/fa.metadata.yaml"===e.uri?null:(0,n.openLocation)(e,this.pluginManager).readFile("utf8")}async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}getFeatures(e,t){const{refName:a,start:s,end:n}=e;return(0,r.ObservableCreate)((async e=>{const{fasta:r}=await this.setup(t),u=r.get(a);u&&e.next(new i.SimpleFeature({id:`${a}-${s}-${n}`,data:{refName:a,start:s,end:n,seq:u.sequence.slice(s,n)}})),e.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=3578.058bdae5.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3578.058bdae5.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3578.058bdae5.chunk.js","mappings":"kNA8Be,MAAMA,UAA8BC,EAAAA,oBAKjD,iBAAaC,CAAYC,GACvB,MAAM,MAAEC,SAAgBC,KAAKC,MAAMH,GACnC,MAAO,IAAIC,EAAMG,OACnB,CAEA,gBAAaC,CAAWL,GACtB,MAAM,MAAEC,SAAgBC,KAAKC,MAAMH,GACnC,MAAO,IAAIC,EAAMK,WAAWC,KAAI,EAAEC,EAASC,MAAU,CACnDD,UACAE,MAAO,EACPC,IAAKF,EAAKG,SAASC,UAEvB,CAEA,cAAaC,CAASC,GACpB,MAAMC,EAAgBd,KAAKe,QAAQ,iBAC7BC,GAzCeC,QA0CbC,EAAAA,EAAAA,cAAaJ,EAAed,KAAKmB,eAAeC,SAAS,QAzC5D,IAAIC,IACTJ,EACGK,MAAM,KACNC,QAAOC,GAAK,KAAKC,KAAKD,KACtBnB,KAAIqB,IACH,MAAOC,KAAYC,GAAYF,EAAUJ,MAAM,OACxCO,KAAOC,GAAeH,EAASL,MAAM,KACtCZ,EAAWkB,EAASG,KAAK,IAAIC,QAAQ,MAAO,IAClD,MAAO,CACLH,EACA,CACEC,YAAaA,EAAYC,KAAK,KAC9BrB,YAEH,MAfT,IAAyBO,EA6CrB,MAAO,CACLlB,MAAO,IAAIsB,IACT,IAAIL,EAAIZ,WAAWC,KAAI,EAAEC,EAAS2B,KACzB,EACLC,EAAAA,EAAAA,gBAAelC,KAAKmC,OAAQ,kBAAmB,CAAE7B,aAC/CA,EACF2B,MAKV,CAEA,eAAaG,GACX,MAAMC,EAAMrC,KAAKe,QAAQ,oBACzB,MAAmB,KAAZsB,EAAIC,KAA0B,8BAAZD,EAAIC,IACzB,MACApB,EAAAA,EAAAA,cAAamB,EAAKrC,KAAKmB,eAAeC,SAAS,OACrD,CAEA,WAAanB,CAAMH,GAOjB,OANKE,KAAKuC,SACRvC,KAAKuC,OAASvC,KAAKY,SAASd,GAAM0C,OAAOC,IAEvC,MADAzC,KAAKuC,YAASG,EACRD,CAAC,KAGJzC,KAAKuC,MACd,CAEOI,WAAAA,CAAYC,EAA0B9C,GAC3C,MAAM,QAAEQ,EAAO,MAAEE,EAAK,IAAEC,GAAQmC,EAChC,OAAOC,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAM,MAAE/C,SAAgBC,KAAKC,MAAMH,GAC7BiD,EAAQhD,EAAMiD,IAAI1C,GACpByC,GACFE,EAASC,KACP,IAAIC,EAAAA,cAAc,CAChBtB,GAAI,GAAGvB,KAAWE,KAASC,IAC3BF,KAAM,CACJD,UACAE,QACAC,MACA2C,IAAKL,EAAMrC,SAAS2C,MAAM7C,EAAOC,OAKzCwC,EAASK,UAAU,GAEvB,CAEOC,aAAAA,GAAuC,E","sources":["../../../plugins/sequence/src/UnindexedFastaAdapter/UnindexedFastaAdapter.ts"],"sourcesContent":["import {\n  BaseSequenceAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { FileLocation, NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { SimpleFeature, Feature } from '@jbrowse/core/util'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nfunction parseSmallFasta(text: string) {\n  return new Map(\n    text\n      .split('>')\n      .filter(t => /\\S/.test(t))\n      .map(entryText => {\n        const [defLine, ...seqLines] = entryText.split('\\n')\n        const [id, ...description] = defLine!.split(' ')\n        const sequence = seqLines.join('').replace(/\\s/g, '')\n        return [\n          id!,\n          {\n            description: description.join(' '),\n            sequence,\n          },\n        ] as const\n      }),\n  )\n}\n\nexport default class UnindexedFastaAdapter extends BaseSequenceAdapter {\n  protected setupP?: Promise<{\n    fasta: ReturnType<typeof parseSmallFasta>\n  }>\n\n  public async getRefNames(opts?: BaseOptions) {\n    const { fasta } = await this.setup(opts)\n    return [...fasta.keys()]\n  }\n\n  public async getRegions(opts?: BaseOptions) {\n    const { fasta } = await this.setup(opts)\n    return [...fasta.entries()].map(([refName, data]) => ({\n      refName,\n      start: 0,\n      end: data.sequence.length,\n    }))\n  }\n\n  public async setupPre(_opts?: BaseOptions) {\n    const fastaLocation = this.getConf('fastaLocation') as FileLocation\n    const res = parseSmallFasta(\n      await openLocation(fastaLocation, this.pluginManager).readFile('utf8'),\n    )\n\n    return {\n      fasta: new Map(\n        [...res.entries()].map(([refName, val]) => {\n          return [\n            readConfObject(this.config, 'rewriteRefNames', { refName }) ||\n              refName,\n            val,\n          ]\n        }),\n      ),\n    }\n  }\n\n  public async getHeader() {\n    const loc = this.getConf('metadataLocation')\n    return loc.uri === '' || loc.uri === '/path/to/fa.metadata.yaml'\n      ? null\n      : openLocation(loc, this.pluginManager).readFile('utf8')\n  }\n\n  public async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  public getFeatures(region: NoAssemblyRegion, opts?: BaseOptions) {\n    const { refName, start, end } = region\n    return ObservableCreate<Feature>(async observer => {\n      const { fasta } = await this.setup(opts)\n      const entry = fasta.get(refName)\n      if (entry) {\n        observer.next(\n          new SimpleFeature({\n            id: `${refName}-${start}-${end}`,\n            data: {\n              refName,\n              start,\n              end,\n              seq: entry.sequence.slice(start, end),\n            },\n          }),\n        )\n      }\n      observer.complete()\n    })\n  }\n\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["UnindexedFastaAdapter","BaseSequenceAdapter","getRefNames","opts","fasta","this","setup","keys","getRegions","entries","map","refName","data","start","end","sequence","length","setupPre","_opts","fastaLocation","getConf","res","text","openLocation","pluginManager","readFile","Map","split","filter","t","test","entryText","defLine","seqLines","id","description","join","replace","val","readConfObject","config","getHeader","loc","uri","setupP","catch","e","undefined","getFeatures","region","ObservableCreate","async","entry","get","observer","next","SimpleFeature","seq","slice","complete","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3614.af493134.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3614],{13614:(e,t,n)=>{n.r(t),n.d(t,{default:()=>he});var a=n(7552),l=n(63011),r=n(41578),o=n(36715),c=n(63165),s=n(83867),i=n(75785),m=n(68446),u=n(36422),d=n(93091),p=n(13476),E=n(68584),v=n(7720),g=n(99546),b=n(49823),A=n(23550),h=n(1343),f=n(2859),y=n(29629),C=n(943),x=n(61723),k=n(70996),N=n(17125),T=n(58181),w=n(45331),S=n(93117),j=n(5401),M=n(25467),L=n(25762);const F=(0,m.observer)((function({slot:e}){const[t,n]=(0,a.useState)(""),[l,r]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,e.name?a.createElement(N.A,null,e.name):null,a.createElement(T.A,{disablePadding:!0},e.value.map(((t,n)=>a.createElement(w.Ay,{key:`${JSON.stringify(t)}-${n}`,disableGutters:!0},a.createElement(h.A,{value:t,onChange:t=>{e.setAtIndex(n,t.target.value)},InputProps:{endAdornment:a.createElement(S.A,{position:"end"},a.createElement(x.A,{onClick:()=>{e.removeAtIndex(n)}},a.createElement(L.A,null)))}})))),l?a.createElement(w.Ay,{disableGutters:!0},a.createElement(h.A,{value:t,placeholder:"add new",onChange:e=>{n(e.target.value)},InputProps:{endAdornment:a.createElement(S.A,{position:"end"},a.createElement(a.Fragment,null,a.createElement(j.A,{color:"primary",variant:"contained",style:{margin:2},"data-testid":`stringArrayAdd-${e.name}`,onClick:()=>{r(!1),e.add(t),n("")}},"OK"),a.createElement(j.A,{color:"primary",variant:"contained",style:{margin:2},onClick:()=>{r(!1),n("")}},"Cancel")))}})):null,a.createElement(j.A,{color:"primary",variant:"contained",style:{margin:4},disabled:l,onClick:()=>{r(!0)}},"Add item")),a.createElement(M.A,null,e.description))}));var I=n(89003),O=n(43283),P=n(25914);const $='Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace',W=(0,i.n9)()((e=>({callbackEditor:{marginTop:"16px",borderBottom:`1px solid ${e.palette.divider}`,width:"100%",fontFamily:$},textAreaFont:{fontFamily:$},callbackContainer:{width:"100%",overflowX:"auto"},error:{color:"red",fontSize:"0.8em"}}))),H=(0,m.observer)((function({slot:e}){const{classes:t}=W(),[n,l]=(0,a.useState)(e.value),[r,o]=(0,a.useState)(),c=(0,g.useDebounce)(n,400);return(0,a.useEffect)((()=>{try{const t=c.startsWith("jexl:")?c:`jexl:${c}`;if("jexl:"===t)throw new Error("Empty jexl expression is not valid");(0,O.A)(t,(0,u.getEnv)(e).pluginManager?.jexl),e.set(t),o(void 0)}catch(e){console.error({e}),o(e)}}),[c,e]),a.createElement(a.Fragment,null,r?a.createElement("p",{className:t.error},`${r}`):null,a.createElement("div",{className:t.callbackContainer},a.createElement(h.A,{multiline:!0,className:t.callbackEditor,value:n.startsWith("jexl:")?n.split("jexl:")[1]:n,onChange:e=>{l(e.target.value)},style:{background:r?"#fdd":void 0},InputProps:{classes:{input:t.textAreaFont}}}),a.createElement("p",null,e.description),a.createElement(I.A,{title:a.createElement("div",null,"Callbacks are written in Jexl format. Click to learn more.",a.createElement("br",null)," Names of available context items: ",e.contextVariable),arrow:!0},a.createElement(x.A,{color:"primary",onClick:()=>{const e=window.open("https://github.com/TomFrost/Jexl","_blank","noopener,noreferrer");e&&(e.opener=null)}},a.createElement(P.A,null)))))}));var V=n(66395);function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},D.apply(null,arguments)}const _=e=>{const{value:t="#000",label:n="",TextFieldProps:l={},onChange:r}=e,[o,c]=(0,a.useState)(!1);return a.createElement("div",{style:{display:"flex"}},a.createElement(h.A,D({value:t,label:n,onClick:()=>{c(!o)},onChange:e=>{r(e.target.value)}},l)),a.createElement("div",{style:{marginTop:10}},a.createElement(a.Suspense,{fallback:null},a.createElement(V.Ay,{color:t,onChange:e=>{r(e)}}))))},K=(0,m.observer)((function(e){const{slot:t}=e;return a.createElement(_,{label:t.name,value:t.value,onChange:e=>{t.set(e)},TextFieldProps:{helperText:t.description,fullWidth:!0}})}));var z=n(64248),B=n(1773),J=n(26875),U=n(25355),G=n(374);const X=(0,i.n9)()((e=>({card:{marginTop:e.spacing(1)}}))),R=(0,m.observer)((function({slot:e}){const{classes:t}=X(),[n,l]=(0,a.useState)("");return a.createElement(a.Fragment,null,a.createElement(N.A,null,e.name),[...e.value].map((([n,l])=>a.createElement(B.A,{raised:!0,key:n,className:t.card},a.createElement(J.A,{title:n,action:a.createElement(x.A,{onClick:()=>{e.remove(n)}},a.createElement(L.A,null))}),a.createElement(U.A,null,a.createElement(F,{slot:{name:e.name,value:l,description:`Values associated with entry ${n}`,setAtIndex:(t,a)=>{e.setAtKeyIndex(n,t,a)},removeAtIndex:t=>{e.removeAtKeyIndex(n,t)},add:t=>{e.addToKey(n,t)}}}))))),a.createElement(B.A,{raised:!0,className:t.card},a.createElement(J.A,{disableTypography:!0,title:a.createElement(h.A,{fullWidth:!0,value:n,placeholder:"add new",onChange:e=>{l(e.target.value)},InputProps:{endAdornment:a.createElement(S.A,{position:"end"},a.createElement(x.A,{disabled:""===n,onClick:()=>{e.add(n,[]),l("")}},a.createElement(G.A,null)))}})})),a.createElement(M.A,null,e.description))}));function Z(){return Z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Z.apply(null,arguments)}function q(e){const{helperText:t}=e;return a.createElement(h.A,Z({},e,{helperText:a.createElement(b.SanitizedHTML,{html:t||""}),FormHelperTextProps:{component:"div"},fullWidth:!0}))}const Q=(0,m.observer)((function({slot:e}){const[t,n]=(0,a.useState)(e.value);return(0,a.useEffect)((()=>{const n=Number.parseFloat(t);Number.isNaN(n)?e.reset?.():e.set(n)}),[e,t]),a.createElement(q,{label:e.name,helperText:e.description,value:t,type:"number",onChange:e=>{n(e.target.value)}})})),Y=(0,i.n9)()((e=>({card:{marginTop:e.spacing(1)}}))),ee=(0,m.observer)((function({slot:e}){const{classes:t}=Y(),[n,l]=(0,a.useState)("");return a.createElement(a.Fragment,null,a.createElement(N.A,null,e.name),[...e.value].map((([n,l])=>a.createElement(B.A,{raised:!0,key:n,className:t.card},a.createElement(J.A,{title:n,action:a.createElement(x.A,{onClick:()=>{e.remove(n)}},a.createElement(L.A,null))}),a.createElement(U.A,null,a.createElement(Q,{slot:{value:l,set:t=>{e.add(n,t)}}}))))),a.createElement(B.A,{raised:!0,className:t.card},a.createElement(J.A,{disableTypography:!0,title:a.createElement(h.A,{fullWidth:!0,value:n,placeholder:"add new",onChange:e=>{l(e.target.value)},InputProps:{endAdornment:a.createElement(S.A,{position:"end"},a.createElement(x.A,{disabled:""===n,onClick:()=>{e.add(n,0),l("")}},a.createElement(G.A,null)))}})})),a.createElement(M.A,null,e.description))}));var te=n(48171),ne=n(33371),ae=n(32808);const le=(0,m.observer)((function({slot:e}){return a.createElement(te.A,null,a.createElement(ne.A,{label:e.name,control:a.createElement(ae.A,{checked:e.value,onChange:t=>{e.set(t.target.checked)}})}),a.createElement(M.A,null,e.description))})),re=(0,i.n9)()((e=>({paper:{display:"flex",marginBottom:e.spacing(2),position:"relative"},paperContent:{width:"100%"},slotModeSwitch:{width:24,background:e.palette.secondary.light,display:"flex",justifyContent:"center",alignItems:"center"}}))),oe=(0,m.observer)((function({slot:e}){return a.createElement(q,{label:e.name,helperText:e.description,value:e.value,onChange:t=>{e.set(t.target.value)}})})),ce=(0,m.observer)((function({slot:e}){return a.createElement(h.A,{label:e.name,helperText:e.description,multiline:!0,value:e.value,onChange:t=>{e.set(t.target.value)}})})),se=()=>a.createElement(f.A,null,a.createElement("path",{d:"M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z"})),ie=(0,m.observer)((function({slot:e}){const[t,n]=(0,a.useState)(e.value);return(0,a.useEffect)((()=>{const n=Number.parseInt(t,10);Number.isNaN(n)||e.set(n)}),[e,t]),a.createElement(q,{label:e.name,helperText:e.description,value:t,type:"number",onChange:e=>{n(e.target.value)}})})),me=(0,m.observer)((function({slot:e,slotSchema:t}){const n=(0,u.getPropertyMembers)((0,A.getSubType)(t)),l=(0,A.getUnionSubTypes)((0,A.getUnionSubTypes)((0,A.getSubType)(n.properties.value))[1]).map((e=>e.value));return a.createElement(q,{value:e.value,label:e.name,select:!0,helperText:e.description,onChange:t=>{e.set(t.target.value)}},l.map((e=>a.createElement(y.A,{key:e,value:e},e))))})),ue=(0,m.observer)((function({slot:e}){return a.createElement(b.FileSelector,{location:e.value,setLocation:t=>{e.set(t)},name:e.name,description:e.description,rootModel:(0,g.getEnv)(e).pluginManager?.rootModel})})),de={string:oe,text:ce,fileLocation:ue,stringArray:F,stringArrayMap:R,numberMap:ee,number:Q,integer:ie,color:K,stringEnum:me,boolean:le,frozen:z.A,configRelationships:z.A},pe=(0,m.observer)((function({slot:e,slotSchema:t}){const{classes:n}=re(),{type:l}=e;let r=e.isCallback?H:de[l];return r||(console.warn(`no slot editor defined for ${l}, editing as string`),r=oe),l in de||console.warn(`SlotEditor needs to implement ${l}`),a.createElement(C.A,{className:n.paper},a.createElement("div",{className:n.paperContent},a.createElement(r,{slot:e,slotSchema:t})),a.createElement("div",{className:n.slotModeSwitch},e.contextVariable.length?a.createElement(x.A,{onClick:()=>e.isCallback?e.convertToValue():e.convertToCallback(),title:"convert to "+(e.isCallback?"regular value":"callback")},e.isCallback?a.createElement(se,null):a.createElement(k.A,null)):null))})),Ee=(0,m.observer)((function({typeNameChoices:e,slot:t,slotName:n,onChange:l}){const{classes:r}=re();return a.createElement(C.A,{className:r.paper},a.createElement("div",{className:r.paperContent},a.createElement(h.A,{value:t.type,label:"Type",select:!0,helperText:`Type of ${n} to use`,fullWidth:!0,onChange:l},e.map((e=>a.createElement(y.A,{key:e,value:e},e))))))}));function ve(){return ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},ve.apply(null,arguments)}const ge=(0,i.n9)()((e=>({icon:{color:e.palette.tertiary.contrastText||"#fff"},expansionPanelDetails:{display:"block",padding:e.spacing(1)},accordion:{border:`1px solid ${e.palette.text.primary}`},noOverflow:{width:"100%",overflowX:"auto"}}))),be=(0,m.observer)((function(e){const{classes:t}=ge(),{slotName:n,slotSchema:i,schema:m,slot:u=m[n],path:p=[]}=e;if((0,E.isConfigurationSchemaType)(i)){if(u.length)return u.map(((t,l)=>{const r=t.type?`${(0,d.singular)(n)} ${t.type}`:`${(0,d.singular)(n)} ${l+1}`;return a.createElement(be,ve({key:r},e,{slot:t,slotName:r}))}));const g=(0,E.getTypeNamesFromExplicitlyTypedUnion)(i);return a.createElement(l.A,{defaultExpanded:!0,className:t.accordion},a.createElement(r.A,{expandIcon:a.createElement(v.A,{className:t.icon})},a.createElement(o.A,null,[...p,n].join("➔"))),a.createElement(c.A,{className:t.expansionPanelDetails},g.length?a.createElement(Ee,{typeNameChoices:g,slotName:n,slot:u,onChange:e=>{e.target.value!==u.type&&m.setSubschema(n,{type:e.target.value})}}):null,a.createElement(s.A,{className:t.noOverflow},a.createElement(Ae,{schema:u,path:[...p,n]}))))}return(0,E.isConfigurationSlotType)(i)?a.createElement(pe,{key:n,slot:u,slotSchema:i}):null})),Ae=(0,m.observer)((function({schema:e,path:t=[]}){const n=(0,u.getMembers)(e).properties;return a.createElement(a.Fragment,null,Object.entries(n).map((([n,l])=>a.createElement(be,{key:n,slotName:n,slotSchema:l,path:t,schema:e}))))})),he=(0,m.observer)((function({model:e}){const{classes:t}=ge(),{target:n}=e,s=(0,E.readConfObject)(n,"trackId"),i=(0,E.readConfObject)(n,"name");return a.createElement(l.A,{key:s,defaultExpanded:!0,className:t.accordion},a.createElement(r.A,{expandIcon:a.createElement(v.A,{className:t.icon})},a.createElement(o.A,null,a.createElement(p.A,{html:i??"Configuration"}))),a.createElement(c.A,{className:t.expansionPanelDetails,"data-testid":"configEditor"},a.createElement(Ae,{schema:n})))}))}}]);
+//# sourceMappingURL=3614.af493134.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3614.af493134.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3614.af493134.chunk.js","mappings":"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","sources":["../../../plugins/config/src/ConfigurationEditorWidget/components/StringArrayEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/CallbackEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/ColorEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/StringArrayMapEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/ConfigurationTextField.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/NumberEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/NumberMapEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/BooleanEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/useSlotEditorStyles.ts","../../../plugins/config/src/ConfigurationEditorWidget/components/SlotEditor.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/TypeSelector.tsx","../../../plugins/config/src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Button,\n  FormHelperText,\n  IconButton,\n  InputAdornment,\n  InputLabel,\n  List,\n  ListItem,\n  TextField,\n} from '@mui/material'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\n\nconst StringArrayEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: string[]\n    setAtIndex: (arg: number, arg2: string) => void\n    removeAtIndex: (arg: number) => void\n    add: (arg: string) => void\n    description: string\n  }\n}) {\n  const [value, setValue] = useState('')\n  const [addNew, setAddNew] = useState(false)\n  return (\n    <>\n      {slot.name ? <InputLabel>{slot.name}</InputLabel> : null}\n      <List disablePadding>\n        {slot.value.map((val, idx) => (\n          <ListItem key={`${JSON.stringify(val)}-${idx}`} disableGutters>\n            <TextField\n              value={val}\n              onChange={evt => {\n                slot.setAtIndex(idx, evt.target.value)\n              }}\n              InputProps={{\n                endAdornment: (\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      onClick={() => {\n                        slot.removeAtIndex(idx)\n                      }}\n                    >\n                      <DeleteIcon />\n                    </IconButton>\n                  </InputAdornment>\n                ),\n              }}\n            />\n          </ListItem>\n        ))}\n\n        {addNew ? (\n          <ListItem disableGutters>\n            <TextField\n              value={value}\n              placeholder=\"add new\"\n              onChange={event => {\n                setValue(event.target.value)\n              }}\n              InputProps={{\n                endAdornment: (\n                  <InputAdornment position=\"end\">\n                    <>\n                      <Button\n                        color=\"primary\"\n                        variant=\"contained\"\n                        style={{ margin: 2 }}\n                        data-testid={`stringArrayAdd-${slot.name}`}\n                        onClick={() => {\n                          setAddNew(false)\n                          slot.add(value)\n                          setValue('')\n                        }}\n                      >\n                        OK\n                      </Button>\n                      <Button\n                        color=\"primary\"\n                        variant=\"contained\"\n                        style={{ margin: 2 }}\n                        onClick={() => {\n                          setAddNew(false)\n                          setValue('')\n                        }}\n                      >\n                        Cancel\n                      </Button>\n                    </>\n                  </InputAdornment>\n                ),\n              }}\n            />\n          </ListItem>\n        ) : null}\n        <Button\n          color=\"primary\"\n          variant=\"contained\"\n          style={{ margin: 4 }}\n          disabled={addNew}\n          onClick={() => {\n            setAddNew(true)\n          }}\n        >\n          Add item\n        </Button>\n      </List>\n      <FormHelperText>{slot.description}</FormHelperText>\n    </>\n  )\n})\n\nexport default StringArrayEditor\n","import React, { useEffect, useState } from 'react'\nimport { Tooltip, IconButton, TextField } from '@mui/material'\nimport { useDebounce } from '@jbrowse/core/util'\nimport { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings'\nimport { getEnv } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport HelpIcon from '@mui/icons-material/Help'\n\n// Optimize by using system default fonts:\n// https://css-tricks.com/snippets/css/font-stacks/\nconst fontFamily =\n  'Consolas, \"Andale Mono WT\", \"Andale Mono\", \"Lucida Console\", \"Lucida Sans Typewriter\", \"DejaVu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Liberation Mono\", \"Nimbus Mono L\", Monaco, \"Courier New\", Courier, monospace'\n\nconst useStyles = makeStyles()(theme => ({\n  callbackEditor: {\n    marginTop: '16px',\n    borderBottom: `1px solid ${theme.palette.divider}`,\n    width: '100%',\n    fontFamily,\n  },\n  textAreaFont: {\n    fontFamily,\n  },\n  callbackContainer: {\n    width: '100%',\n    overflowX: 'auto',\n  },\n\n  error: {\n    color: 'red',\n    fontSize: '0.8em',\n  },\n}))\n\nconst CallbackEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    set: (arg: string) => void\n    description: string\n    name: string\n    value: string\n    contextVariable: string\n  }\n}) {\n  const { classes } = useStyles()\n\n  const [code, setCode] = useState(slot.value)\n  const [error, setCodeError] = useState<unknown>()\n  const debouncedCode = useDebounce(code, 400)\n\n  useEffect(() => {\n    try {\n      const jexlDebouncedCode = debouncedCode.startsWith('jexl:')\n        ? debouncedCode\n        : `jexl:${debouncedCode}`\n\n      if (jexlDebouncedCode === 'jexl:') {\n        throw new Error('Empty jexl expression is not valid')\n      }\n      stringToJexlExpression(\n        jexlDebouncedCode,\n        getEnv(slot).pluginManager?.jexl,\n      )\n      slot.set(jexlDebouncedCode)\n      setCodeError(undefined)\n    } catch (e) {\n      console.error({ e })\n      setCodeError(e)\n    }\n  }, [debouncedCode, slot])\n\n  // if default value is a callback, will have to remove jexl:\n  // do this last\n  return (\n    <>\n      {error ? <p className={classes.error}>{`${error}`}</p> : null}\n      <div className={classes.callbackContainer}>\n        <TextField\n          multiline\n          className={classes.callbackEditor}\n          value={code.startsWith('jexl:') ? code.split('jexl:')[1] : code}\n          onChange={event => {\n            setCode(event.target.value)\n          }}\n          style={{ background: error ? '#fdd' : undefined }}\n          InputProps={{\n            classes: {\n              input: classes.textAreaFont,\n            },\n          }}\n        />\n\n        <p>{slot.description}</p>\n        <Tooltip\n          title={\n            <div>\n              Callbacks are written in Jexl format. Click to learn more.\n              <br /> Names of available context items: {slot.contextVariable}\n            </div>\n          }\n          arrow\n        >\n          <IconButton\n            color=\"primary\"\n            onClick={() => {\n              const newWindow = window.open(\n                'https://github.com/TomFrost/Jexl',\n                '_blank',\n                'noopener,noreferrer',\n              )\n              if (newWindow) {\n                newWindow.opener = null\n              }\n            }}\n          >\n            <HelpIcon />\n          </IconButton>\n        </Tooltip>\n      </div>\n    </>\n  )\n})\n\nexport default CallbackEditor\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { TextField } from '@mui/material'\nimport ColorPicker from '@jbrowse/core/ui/ColorPicker'\n\nexport const ColorSlot = (props: {\n  value: string\n  label?: string\n  TextFieldProps?: {\n    helperText: string\n    fullWidth: boolean\n  }\n  onChange: (arg: string) => void\n}) => {\n  const { value = '#000', label = '', TextFieldProps = {}, onChange } = props\n  const [displayed, setDisplayed] = useState(false)\n\n  return (\n    <div style={{ display: 'flex' }}>\n      <TextField\n        value={value}\n        label={label}\n        onClick={() => {\n          setDisplayed(!displayed)\n        }}\n        onChange={event => {\n          onChange(event.target.value)\n        }}\n        {...TextFieldProps}\n      />\n      <div style={{ marginTop: 10 }}>\n        <React.Suspense fallback={null}>\n          <ColorPicker\n            color={value}\n            onChange={event => {\n              onChange(event)\n            }}\n          />\n        </React.Suspense>\n      </div>\n    </div>\n  )\n}\n\nconst ColorEditor = observer(function (props: {\n  slot: {\n    name: string\n    value: string\n    description: string\n    set: (arg: string) => void\n  }\n}) {\n  const { slot } = props\n  return (\n    <ColorSlot\n      label={slot.name}\n      value={slot.value}\n      onChange={color => {\n        slot.set(color)\n      }}\n      TextFieldProps={{\n        helperText: slot.description,\n        fullWidth: true,\n      }}\n    />\n  )\n})\n\nexport default ColorEditor\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Card,\n  CardContent,\n  CardHeader,\n  FormHelperText,\n  IconButton,\n  InputAdornment,\n  InputLabel,\n  TextField,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport AddIcon from '@mui/icons-material/Add'\n\n// locals\nimport StringArrayEditor from './StringArrayEditor'\n\nconst useStyles = makeStyles()(theme => ({\n  card: {\n    marginTop: theme.spacing(1),\n  },\n}))\n\nconst StringArrayMapEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: Map<string, string[]>\n    remove: (key: string) => void\n    add: (key: string, val: string[]) => void\n    description: string\n    setAtKeyIndex: (key: string, idx: number, val: string) => void\n    removeAtKeyIndex: (key: string, idx: number) => void\n    addToKey: (key: string, val: string) => void\n  }\n}) {\n  const { classes } = useStyles()\n  const [value, setValue] = useState('')\n  return (\n    <>\n      <InputLabel>{slot.name}</InputLabel>\n      {[...slot.value].map(([key, val]) => (\n        <Card raised key={key} className={classes.card}>\n          <CardHeader\n            title={key}\n            action={\n              <IconButton\n                onClick={() => {\n                  slot.remove(key)\n                }}\n              >\n                <DeleteIcon />\n              </IconButton>\n            }\n          />\n          <CardContent>\n            <StringArrayEditor\n              slot={{\n                name: slot.name,\n                value: val,\n                description: `Values associated with entry ${key}`,\n                setAtIndex: (idx: number, val: string) => {\n                  slot.setAtKeyIndex(key, idx, val)\n                },\n                removeAtIndex: (idx: number) => {\n                  slot.removeAtKeyIndex(key, idx)\n                },\n                add: (val: string) => {\n                  slot.addToKey(key, val)\n                },\n              }}\n            />\n          </CardContent>\n        </Card>\n      ))}\n      <Card raised className={classes.card}>\n        <CardHeader\n          disableTypography\n          title={\n            <TextField\n              fullWidth\n              value={value}\n              placeholder=\"add new\"\n              onChange={event => {\n                setValue(event.target.value)\n              }}\n              InputProps={{\n                endAdornment: (\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      disabled={value === ''}\n                      onClick={() => {\n                        slot.add(value, [])\n                        setValue('')\n                      }}\n                    >\n                      <AddIcon />\n                    </IconButton>\n                  </InputAdornment>\n                ),\n              }}\n            />\n          }\n        />\n      </Card>\n      <FormHelperText>{slot.description}</FormHelperText>\n    </>\n  )\n})\n\nexport default StringArrayMapEditor\n","import React from 'react'\nimport { TextField, TextFieldProps } from '@mui/material'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\n\n// adds ability to have html in helperText. note that FormHelperTextProps is\n// div because the default is p which does not like div children\nexport default function ConfigurationTextField(\n  props: { helperText?: string } & TextFieldProps,\n) {\n  const { helperText } = props\n  return (\n    <TextField\n      {...props}\n      helperText={<SanitizedHTML html={helperText || ''} />}\n      FormHelperTextProps={{\n        component: 'div',\n      }}\n      fullWidth\n    />\n  )\n}\n","import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport ConfigurationTextField from './ConfigurationTextField'\n\nconst NumberEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name?: string\n    value: string\n    description?: string\n    set: (val: number) => void\n    reset?: () => void\n  }\n}) {\n  const [val, setVal] = useState(slot.value)\n  useEffect(() => {\n    const num = Number.parseFloat(val)\n    if (Number.isNaN(num)) {\n      slot.reset?.()\n    } else {\n      slot.set(num)\n    }\n  }, [slot, val])\n  return (\n    <ConfigurationTextField\n      label={slot.name}\n      helperText={slot.description}\n      value={val}\n      type=\"number\"\n      onChange={evt => {\n        setVal(evt.target.value)\n      }}\n    />\n  )\n})\n\nexport default NumberEditor\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Card,\n  CardContent,\n  CardHeader,\n  FormHelperText,\n  IconButton,\n  InputAdornment,\n  InputLabel,\n  TextField,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport AddIcon from '@mui/icons-material/Add'\nimport NumberEditor from './NumberEditor'\n\nconst useStyles = makeStyles()(theme => ({\n  card: {\n    marginTop: theme.spacing(1),\n  },\n}))\n\nconst NumberMapEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: Map<string, string>\n    remove: (key: string) => void\n    add: (key: string, val: number) => void\n    description: string\n  }\n}) {\n  const { classes } = useStyles()\n  const [value, setValue] = useState('')\n  return (\n    <>\n      <InputLabel>{slot.name}</InputLabel>\n      {[...slot.value].map(([key, val]) => (\n        <Card raised key={key} className={classes.card}>\n          <CardHeader\n            title={key}\n            action={\n              <IconButton\n                onClick={() => {\n                  slot.remove(key)\n                }}\n              >\n                <DeleteIcon />\n              </IconButton>\n            }\n          />\n          <CardContent>\n            <NumberEditor\n              slot={{\n                value: val,\n                set: (val: number) => {\n                  slot.add(key, val)\n                },\n              }}\n            />\n          </CardContent>\n        </Card>\n      ))}\n      <Card raised className={classes.card}>\n        <CardHeader\n          disableTypography\n          title={\n            <TextField\n              fullWidth\n              value={value}\n              placeholder=\"add new\"\n              onChange={event => {\n                setValue(event.target.value)\n              }}\n              InputProps={{\n                endAdornment: (\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      disabled={value === ''}\n                      onClick={() => {\n                        slot.add(value, 0)\n                        setValue('')\n                      }}\n                    >\n                      <AddIcon />\n                    </IconButton>\n                  </InputAdornment>\n                ),\n              }}\n            />\n          }\n        />\n      </Card>\n      <FormHelperText>{slot.description}</FormHelperText>\n    </>\n  )\n})\n\nexport default NumberMapEditor\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Checkbox,\n  FormControl,\n  FormControlLabel,\n  FormHelperText,\n} from '@mui/material'\n\nconst BooleanEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: boolean\n    set: (arg: boolean) => void\n    description: string\n  }\n}) {\n  return (\n    <FormControl>\n      <FormControlLabel\n        label={slot.name}\n        control={\n          <Checkbox\n            checked={slot.value}\n            onChange={evt => {\n              slot.set(evt.target.checked)\n            }}\n          />\n        }\n      />\n      <FormHelperText>{slot.description}</FormHelperText>\n    </FormControl>\n  )\n})\n\nexport default BooleanEditor\n","import { makeStyles } from 'tss-react/mui'\n\nexport const useSlotEditorStyles = makeStyles()(theme => ({\n  paper: {\n    display: 'flex',\n    marginBottom: theme.spacing(2),\n    position: 'relative',\n  },\n  paperContent: {\n    width: '100%',\n  },\n  slotModeSwitch: {\n    width: 24,\n    background: theme.palette.secondary.light,\n    display: 'flex',\n    justifyContent: 'center',\n    alignItems: 'center',\n  },\n}))\n","import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getPropertyMembers, IAnyType } from 'mobx-state-tree'\nimport { getEnv, FileLocation } from '@jbrowse/core/util'\nimport { FileSelector } from '@jbrowse/core/ui'\nimport {\n  getSubType,\n  getUnionSubTypes,\n  ILiteralType,\n} from '@jbrowse/core/util/mst-reflection'\nimport { IconButton, MenuItem, Paper, SvgIcon, TextField } from '@mui/material'\n\n// icons\nimport RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'\n\n// locals\nimport StringArrayEditor from './StringArrayEditor'\nimport CallbackEditor from './CallbackEditor'\nimport ColorEditor from './ColorEditor'\nimport JsonEditor from './JsonEditor'\nimport StringArrayMapEditor from './StringArrayMapEditor'\nimport ConfigurationTextField from './ConfigurationTextField'\nimport NumberMapEditor from './NumberMapEditor'\nimport NumberEditor from './NumberEditor'\nimport BooleanEditor from './BooleanEditor'\nimport {\n  AnyConfigurationSlot,\n  AnyConfigurationSlotType,\n} from '@jbrowse/core/configuration'\nimport { useSlotEditorStyles } from './useSlotEditorStyles'\n\nconst StringEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    description: string\n    value: string\n    set: (arg: string) => void\n  }\n}) {\n  return (\n    <ConfigurationTextField\n      label={slot.name}\n      helperText={slot.description}\n      value={slot.value}\n      onChange={evt => {\n        slot.set(evt.target.value)\n      }}\n    />\n  )\n})\n\nconst TextEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    description: string\n    value: string\n    set: (arg: string) => void\n  }\n}) {\n  return (\n    <TextField\n      label={slot.name}\n      helperText={slot.description}\n      multiline\n      value={slot.value}\n      onChange={evt => {\n        slot.set(evt.target.value)\n      }}\n    />\n  )\n})\n\n// checked checkbox, looks like a styled (x)\nconst SvgCheckbox = () => (\n  <SvgIcon>\n    <path d=\"M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z\" />\n  </SvgIcon>\n)\n\nconst IntegerEditor = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: string\n    description: string\n    set: (num: number) => void\n  }\n}) {\n  const [val, setVal] = useState(slot.value)\n  useEffect(() => {\n    const num = Number.parseInt(val, 10)\n    if (!Number.isNaN(num)) {\n      slot.set(num)\n    }\n  }, [slot, val])\n  return (\n    <ConfigurationTextField\n      label={slot.name}\n      helperText={slot.description}\n      value={val}\n      type=\"number\"\n      onChange={evt => {\n        setVal(evt.target.value)\n      }}\n    />\n  )\n})\n\nconst StringEnumEditor = observer(function ({\n  slot,\n  slotSchema,\n}: {\n  slot: AnyConfigurationSlot\n  slotSchema: AnyConfigurationSlotType\n}) {\n  const p = getPropertyMembers(getSubType(slotSchema))\n  const choices = getUnionSubTypes(\n    getUnionSubTypes(getSubType(p.properties.value!))[1]!,\n  ).map(t => (t as ILiteralType<string>).value)\n\n  return (\n    <ConfigurationTextField\n      value={slot.value}\n      label={slot.name}\n      select\n      helperText={slot.description}\n      onChange={evt => {\n        slot.set(evt.target.value)\n      }}\n    >\n      {choices.map(str => (\n        <MenuItem key={str} value={str}>\n          {str}\n        </MenuItem>\n      ))}\n    </ConfigurationTextField>\n  )\n})\n\nconst FileSelectorWrapper = observer(function ({\n  slot,\n}: {\n  slot: {\n    name: string\n    value: FileLocation\n    set: (arg: FileLocation) => void\n    description: string\n  }\n}) {\n  return (\n    <FileSelector\n      location={slot.value}\n      setLocation={location => {\n        slot.set(location)\n      }}\n      name={slot.name}\n      description={slot.description}\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      rootModel={getEnv(slot).pluginManager?.rootModel}\n    />\n  )\n})\n\nconst valueComponents = {\n  string: StringEditor,\n  text: TextEditor,\n  fileLocation: FileSelectorWrapper,\n  stringArray: StringArrayEditor,\n  stringArrayMap: StringArrayMapEditor,\n  numberMap: NumberMapEditor,\n  number: NumberEditor,\n  integer: IntegerEditor,\n  color: ColorEditor,\n  stringEnum: StringEnumEditor,\n  boolean: BooleanEditor,\n  frozen: JsonEditor,\n  configRelationships: JsonEditor,\n}\n\nconst SlotEditor = observer(function ({\n  slot,\n  slotSchema,\n}: {\n  slot: any\n  slotSchema: IAnyType\n}) {\n  const { classes } = useSlotEditorStyles()\n  const { type } = slot\n  let ValueComponent = slot.isCallback\n    ? CallbackEditor\n    : // @ts-expect-error\n      valueComponents[type]\n  if (!ValueComponent) {\n    console.warn(`no slot editor defined for ${type}, editing as string`)\n    ValueComponent = StringEditor\n  }\n  if (!(type in valueComponents)) {\n    console.warn(`SlotEditor needs to implement ${type}`)\n  }\n  return (\n    <Paper className={classes.paper}>\n      <div className={classes.paperContent}>\n        <ValueComponent slot={slot} slotSchema={slotSchema} />\n      </div>\n      <div className={classes.slotModeSwitch}>\n        {slot.contextVariable.length ? (\n          <IconButton\n            onClick={() =>\n              slot.isCallback ? slot.convertToValue() : slot.convertToCallback()\n            }\n            title={`convert to ${\n              slot.isCallback ? 'regular value' : 'callback'\n            }`}\n          >\n            {slot.isCallback ? <SvgCheckbox /> : <RadioButtonUncheckedIcon />}\n          </IconButton>\n        ) : null}\n      </div>\n    </Paper>\n  )\n})\n\nexport default SlotEditor\n","import React from 'react'\nimport { MenuItem, Paper, TextField } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { useSlotEditorStyles } from './useSlotEditorStyles'\n\nconst TypeSelector = observer(function ({\n  typeNameChoices,\n  slot,\n  slotName,\n  onChange,\n}: {\n  typeNameChoices: string[]\n  slot: AnyConfigurationModel\n  slotName: string\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n  const { classes } = useSlotEditorStyles()\n  return (\n    <Paper className={classes.paper}>\n      <div className={classes.paperContent}>\n        <TextField\n          value={slot.type}\n          label=\"Type\"\n          select\n          helperText={`Type of ${slotName} to use`}\n          fullWidth\n          onChange={onChange}\n        >\n          {typeNameChoices.map(str => (\n            <MenuItem key={str} value={str}>\n              {str}\n            </MenuItem>\n          ))}\n        </TextField>\n      </div>\n    </Paper>\n  )\n})\n\nexport default TypeSelector\n","import React from 'react'\n\nimport {\n  FormGroup,\n  Accordion,\n  AccordionDetails,\n  AccordionSummary,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getMembers, IAnyType } from 'mobx-state-tree'\nimport { singular } from 'pluralize'\n\n// jbrowse\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML'\nimport {\n  readConfObject,\n  getTypeNamesFromExplicitlyTypedUnion,\n  isConfigurationSchemaType,\n  isConfigurationSlotType,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\n\n// icons\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\n\n// locals\nimport SlotEditor from './SlotEditor'\nimport TypeSelector from './TypeSelector'\n\nconst useStyles = makeStyles()(theme => ({\n  icon: {\n    color: theme.palette.tertiary.contrastText || '#fff',\n  },\n  expansionPanelDetails: {\n    display: 'block',\n    padding: theme.spacing(1),\n  },\n  accordion: {\n    border: `1px solid ${theme.palette.text.primary}`,\n  },\n  noOverflow: {\n    width: '100%',\n    overflowX: 'auto',\n  },\n}))\n\nconst Member = observer(function (props: {\n  slotName: string\n  slotSchema: IAnyType\n  schema: AnyConfigurationModel\n  slot?: AnyConfigurationModel | AnyConfigurationModel[]\n  path?: string[]\n}) {\n  const { classes } = useStyles()\n  const {\n    slotName,\n    slotSchema,\n    schema,\n    slot = schema[slotName],\n    path = [],\n  } = props\n  if (isConfigurationSchemaType(slotSchema)) {\n    if (slot.length) {\n      return slot.map((subslot: AnyConfigurationModel, slotIndex: number) => {\n        const key = subslot.type\n          ? `${singular(slotName)} ${subslot.type}`\n          : `${singular(slotName)} ${slotIndex + 1}`\n        return <Member key={key} {...props} slot={subslot} slotName={key} />\n      })\n    }\n    // if this is an explicitly typed schema, make a type-selecting dropdown\n    // that can be used to change its type\n    const typeNameChoices = getTypeNamesFromExplicitlyTypedUnion(slotSchema)\n    return (\n      <Accordion defaultExpanded className={classes.accordion}>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.icon} />}\n        >\n          <Typography>{[...path, slotName].join('➔')}</Typography>\n        </AccordionSummary>\n        <AccordionDetails className={classes.expansionPanelDetails}>\n          {typeNameChoices.length ? (\n            <TypeSelector\n              typeNameChoices={typeNameChoices}\n              slotName={slotName}\n              slot={slot}\n              onChange={evt => {\n                if (evt.target.value !== slot.type) {\n                  schema.setSubschema(slotName, { type: evt.target.value })\n                }\n              }}\n            />\n          ) : null}\n          <FormGroup className={classes.noOverflow}>\n            <Schema schema={slot} path={[...path, slotName]} />\n          </FormGroup>\n        </AccordionDetails>\n      </Accordion>\n    )\n  } else if (isConfigurationSlotType(slotSchema)) {\n    return <SlotEditor key={slotName} slot={slot} slotSchema={slotSchema} />\n  } else {\n    return null\n  }\n})\n\nconst Schema = observer(function ({\n  schema,\n  path = [],\n}: {\n  schema: AnyConfigurationModel\n  path?: string[]\n}) {\n  const properties = getMembers(schema).properties\n  return (\n    <>\n      {Object.entries(properties).map(([slotName, slotSchema]) => (\n        <Member\n          key={slotName}\n          slotName={slotName}\n          slotSchema={slotSchema}\n          path={path}\n          schema={schema}\n        />\n      ))}\n    </>\n  )\n})\n\nconst ConfigurationEditor = observer(function ({\n  model,\n}: {\n  model: { target: AnyConfigurationModel }\n  session?: AbstractSessionModel\n}) {\n  const { classes } = useStyles()\n  // key forces a re-render, otherwise the same field can end up being used for\n  // different tracks since only the backing model changes for example see pr\n  // #804\n  const { target } = model\n  const key = readConfObject(target, 'trackId')\n  const name = readConfObject(target, 'name')\n  return (\n    <Accordion key={key} defaultExpanded className={classes.accordion}>\n      <AccordionSummary\n        expandIcon={<ExpandMoreIcon className={classes.icon} />}\n      >\n        <Typography>\n          <SanitizedHTML html={name ?? 'Configuration'} />\n        </Typography>\n      </AccordionSummary>\n      <AccordionDetails\n        className={classes.expansionPanelDetails}\n        data-testid=\"configEditor\"\n      >\n        <Schema schema={target} />\n      </AccordionDetails>\n    </Accordion>\n  )\n})\n\nexport default ConfigurationEditor\n"],"names":["observer","slot","value","setValue","useState","addNew","setAddNew","React","name","InputLabel","List","disablePadding","map","val","idx","ListItem","key","JSON","stringify","disableGutters","TextField","onChange","evt","setAtIndex","target","InputProps","endAdornment","InputAdornment","position","IconButton","onClick","removeAtIndex","DeleteIcon","placeholder","event","Button","color","variant","style","margin","add","disabled","FormHelperText","description","fontFamily","useStyles","makeStyles","theme","callbackEditor","marginTop","borderBottom","palette","divider","width","textAreaFont","callbackContainer","overflowX","error","fontSize","classes","code","setCode","setCodeError","debouncedCode","useDebounce","useEffect","jexlDebouncedCode","startsWith","Error","stringToJexlExpression","getEnv","pluginManager","jexl","set","undefined","e","console","className","multiline","split","background","input","Tooltip","title","contextVariable","arrow","newWindow","window","open","opener","HelpIcon","ColorSlot","props","label","TextFieldProps","displayed","setDisplayed","display","_extends","fallback","ColorPicker","helperText","fullWidth","card","spacing","Card","raised","CardHeader","action","remove","CardContent","StringArrayEditor","setAtKeyIndex","removeAtKeyIndex","addToKey","disableTypography","AddIcon","ConfigurationTextField","SanitizedHTML","html","FormHelperTextProps","component","setVal","num","Number","parseFloat","isNaN","reset","type","NumberEditor","FormControl","FormControlLabel","control","Checkbox","checked","useSlotEditorStyles","paper","marginBottom","paperContent","slotModeSwitch","secondary","light","justifyContent","alignItems","StringEditor","TextEditor","SvgCheckbox","SvgIcon","d","IntegerEditor","parseInt","StringEnumEditor","slotSchema","p","getPropertyMembers","getSubType","choices","getUnionSubTypes","properties","t","select","str","MenuItem","FileSelectorWrapper","FileSelector","location","setLocation","rootModel","valueComponents","string","text","fileLocation","stringArray","stringArrayMap","StringArrayMapEditor","numberMap","NumberMapEditor","number","integer","ColorEditor","stringEnum","boolean","BooleanEditor","frozen","JsonEditor","configRelationships","ValueComponent","isCallback","CallbackEditor","warn","Paper","length","convertToValue","convertToCallback","RadioButtonUncheckedIcon","typeNameChoices","slotName","icon","tertiary","contrastText","expansionPanelDetails","padding","accordion","border","primary","noOverflow","Member","schema","path","isConfigurationSchemaType","subslot","slotIndex","singular","getTypeNamesFromExplicitlyTypedUnion","Accordion","defaultExpanded","AccordionSummary","expandIcon","ExpandMoreIcon","Typography","join","AccordionDetails","TypeSelector","setSubschema","FormGroup","Schema","isConfigurationSlotType","SlotEditor","getMembers","Object","entries","model","readConfObject"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/366.b00bf6ca.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[366],{40366:(e,o,r)=>{r.r(o),r.d(o,{breadcrumbsClasses:()=>A,default:()=>I,getBreadcrumbsUtilityClass:()=>w});var t=r(7552),l=(r(19487),r(93878)),a=r(70799),s=r(1045),n=r(51148),c=r(4785),i=r(36715),p=r(72639),d=r(60129),u=r(74893),m=r(69500);const g=(0,u.A)((0,m.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreHoriz");var h=r(48054);const b=(0,n.Ay)(h.A)((0,d.A)((({theme:e})=>({display:"flex",marginLeft:`calc(${e.spacing(1)} * 0.5)`,marginRight:`calc(${e.spacing(1)} * 0.5)`,..."light"===e.palette.mode?{backgroundColor:e.palette.grey[100],color:e.palette.grey[700]}:{backgroundColor:e.palette.grey[700],color:e.palette.grey[100]},borderRadius:2,"&:hover, &:focus":{..."light"===e.palette.mode?{backgroundColor:e.palette.grey[200]}:{backgroundColor:e.palette.grey[600]}},"&:active":{boxShadow:e.shadows[0],..."light"===e.palette.mode?{backgroundColor:(0,p.tL)(e.palette.grey[200],.12)}:{backgroundColor:(0,p.tL)(e.palette.grey[600],.12)}}})))),f=(0,n.Ay)(g)({width:24,height:16}),x=function(e){const{slots:o={},slotProps:r={},...t}=e,l=e;return(0,m.jsx)("li",{children:(0,m.jsx)(b,{focusRipple:!0,...t,ownerState:l,children:(0,m.jsx)(f,{as:o.CollapsedIcon,ownerState:l,...r.collapsedIcon})})})};var y=r(33761),C=r(85693);function w(e){return(0,C.Ay)("MuiBreadcrumbs",e)}const A=(0,y.A)("MuiBreadcrumbs",["root","ol","li","separator"]),S=(0,n.Ay)(i.A,{name:"MuiBreadcrumbs",slot:"Root",overridesResolver:(e,o)=>[{[`& .${A.li}`]:o.li},o.root]})({}),v=(0,n.Ay)("ol",{name:"MuiBreadcrumbs",slot:"Ol",overridesResolver:(e,o)=>o.ol})({display:"flex",flexWrap:"wrap",alignItems:"center",padding:0,margin:0,listStyle:"none"}),j=(0,n.Ay)("li",{name:"MuiBreadcrumbs",slot:"Separator",overridesResolver:(e,o)=>o.separator})({display:"flex",userSelect:"none",marginLeft:8,marginRight:8});function k(e,o,r,t){return e.reduce(((l,a,s)=>(s<e.length-1?l=l.concat(a,(0,m.jsx)(j,{"aria-hidden":!0,className:o,ownerState:t,children:r},`separator-${s}`)):l.push(a),l)),[])}const I=t.forwardRef((function(e,o){const r=(0,c.b)({props:e,name:"MuiBreadcrumbs"}),{children:n,className:i,component:p="nav",slots:d={},slotProps:u={},expandText:g="Show path",itemsAfterCollapse:h=1,itemsBeforeCollapse:b=1,maxItems:f=8,separator:y="/",...C}=r,[A,j]=t.useState(!1),I={...r,component:p,expanded:A,expandText:g,itemsAfterCollapse:h,itemsBeforeCollapse:b,maxItems:f,separator:y},R=(e=>{const{classes:o}=e;return(0,a.A)({root:["root"],li:["li"],ol:["ol"],separator:["separator"]},w,o)})(I),B=(0,s.A)({elementType:d.CollapsedIcon,externalSlotProps:u.collapsedIcon,ownerState:I}),M=t.useRef(null),N=t.Children.toArray(n).filter((e=>t.isValidElement(e))).map(((e,o)=>(0,m.jsx)("li",{className:R.li,children:e},`child-${o}`)));return(0,m.jsx)(S,{ref:o,component:p,color:"textSecondary",className:(0,l.A)(R.root,i),ownerState:I,...C,children:(0,m.jsx)(v,{className:R.ol,ref:M,ownerState:I,children:k(A||f&&N.length<=f?N:(e=>b+h>=e.length?e:[...e.slice(0,b),(0,m.jsx)(x,{"aria-label":g,slots:{CollapsedIcon:d.CollapsedIcon},slotProps:{collapsedIcon:B},onClick:()=>{j(!0);const e=M.current.querySelector("a[href],button,[tabindex]");e&&e.focus()}},"ellipsis"),...e.slice(e.length-h,e.length)])(N),R.separator,y,I)})})}))}}]);
+//# sourceMappingURL=366.b00bf6ca.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/366.b00bf6ca.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/366.b00bf6ca.chunk.js","mappings":"qVASA,SAAe,EAAAA,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,wJACD,a,eCDJ,MAAMC,GAA4B,EAAAC,EAAA,IAAOC,EAAA,EAAP,EAAmB,EAAAC,EAAA,IAAU,EAC7DC,YACI,CACJC,QAAS,OACTC,WAAY,QAAQF,EAAMG,QAAQ,YAClCC,YAAa,QAAQJ,EAAMG,QAAQ,eACR,UAAvBH,EAAMK,QAAQC,KAAmB,CACnCC,gBAAiBP,EAAMK,QAAQG,KAAK,KACpCC,MAAOT,EAAMK,QAAQG,KAAK,MACxB,CACFD,gBAAiBP,EAAMK,QAAQG,KAAK,KACpCC,MAAOT,EAAMK,QAAQG,KAAK,MAE5BE,aAAc,EACd,mBAAoB,IACS,UAAvBV,EAAMK,QAAQC,KAAmB,CACnCC,gBAAiBP,EAAMK,QAAQG,KAAK,MAClC,CACFD,gBAAiBP,EAAMK,QAAQG,KAAK,OAGxC,WAAY,CACVG,UAAWX,EAAMY,QAAQ,MACE,UAAvBZ,EAAMK,QAAQC,KAAmB,CACnCC,iBAAiB,QAAUP,EAAMK,QAAQG,KAAK,KAAM,MAClD,CACFD,iBAAiB,QAAUP,EAAMK,QAAQG,KAAK,KAAM,YAIpDK,GAA0B,EAAAhB,EAAA,IAAOiB,EAAP,CAAsB,CACpDC,MAAO,GACPC,OAAQ,KA+CV,EAzCA,SAA6BC,GAC3B,MAAM,MACJC,EAAQ,CAAC,EAAC,UACVC,EAAY,CAAC,KACVC,GACDH,EACEI,EAAaJ,EACnB,OAAoB,SAAK,KAAM,CAC7BK,UAAuB,SAAK1B,EAA2B,CACrD2B,aAAa,KACVH,EACHC,WAAYA,EACZC,UAAuB,SAAKT,EAAyB,CACnDW,GAAIN,EAAMO,cACVJ,WAAYA,KACTF,EAAUO,mBAIrB,E,0BCjEO,SAASC,EAA2BC,GACzC,OAAO,EAAAC,EAAA,IAAqB,iBAAkBD,EAChD,CACA,MACA,GAD2B,EAAAE,EAAA,GAAuB,iBAAkB,CAAC,OAAQ,KAAM,KAAM,cCsBnFC,GAAkB,EAAAlC,EAAA,IAAOmC,EAAA,EAAY,CACzCC,KAAM,iBACNL,KAAM,OACNM,kBAAmB,CAACjB,EAAOkB,IAClB,CAAC,CACN,CAAC,MAAM,EAAmBC,MAAOD,EAAOC,IACvCD,EAAOE,OANU,CAQrB,CAAC,GACEC,GAAgB,EAAAzC,EAAA,IAAO,KAAM,CACjCoC,KAAM,iBACNL,KAAM,KACNM,kBAAmB,CAACjB,EAAOkB,IAAWA,EAAOI,IAHzB,CAInB,CACDtC,QAAS,OACTuC,SAAU,OACVC,WAAY,SACZC,QAAS,EACTC,OAAQ,EACRC,UAAW,SAEPC,GAAuB,EAAAhD,EAAA,IAAO,KAAM,CACxCoC,KAAM,iBACNL,KAAM,YACNM,kBAAmB,CAACjB,EAAOkB,IAAWA,EAAOW,WAHlB,CAI1B,CACD7C,QAAS,OACT8C,WAAY,OACZ7C,WAAY,EACZE,YAAa,IAEf,SAAS4C,EAAiBC,EAAOC,EAAWJ,EAAWzB,GACrD,OAAO4B,EAAME,QAAO,CAACC,EAAKC,EAASC,KAC7BA,EAAQL,EAAMM,OAAS,EACzBH,EAAMA,EAAII,OAAOH,GAAsB,SAAKR,EAAsB,CAChE,eAAe,EACfK,UAAWA,EACX7B,WAAYA,EACZC,SAAUwB,GACT,aAAaQ,MAEhBF,EAAIK,KAAKJ,GAEJD,IACN,GACL,CACA,MAsKA,EAtKiC,cAAiB,SAAqBM,EAASC,GAC9E,MAAM1C,GAAQ,OAAgB,CAC5BA,MAAOyC,EACPzB,KAAM,oBAEF,SACJX,EAAQ,UACR4B,EAAS,UACTU,EAAY,MAAK,MACjB1C,EAAQ,CAAC,EAAC,UACVC,EAAY,CAAC,EAAC,WACd0C,EAAa,YAAW,mBACxBC,EAAqB,EAAC,oBACtBC,EAAsB,EAAC,SACvBC,EAAW,EAAC,UACZlB,EAAY,OACTmB,GACDhD,GACGiD,EAAUC,GAAe,YAAe,GACzC9C,EAAa,IACdJ,EACH2C,YACAM,WACAL,aACAC,qBACAC,sBACAC,WACAlB,aAEIsB,EAvFkB/C,KACxB,MAAM,QACJ+C,GACE/C,EAOJ,OAAO,EAAAgD,EAAA,GANO,CACZhC,KAAM,CAAC,QACPD,GAAI,CAAC,MACLG,GAAI,CAAC,MACLO,UAAW,CAAC,cAEenB,EAA4ByC,EAAQ,EA6EjDE,CAAkBjD,GAC5BkD,GAAyB,EAAAC,EAAA,GAAa,CAC1CC,YAAavD,EAAMO,cACnBiD,kBAAmBvD,EAAUO,cAC7BL,eAEIsD,EAAU,SAAa,MAkCvBC,EAAW,WAAeC,QAAQvD,GAAUwD,QAAOC,GAMnC,iBAAqBA,KACxCC,KAAI,CAACD,EAAOzB,KAAuB,SAAK,KAAM,CAC/CJ,UAAWkB,EAAQhC,GACnBd,SAAUyD,GACT,SAASzB,OACZ,OAAoB,SAAKvB,EAAiB,CACxC4B,IAAKA,EACLC,UAAWA,EACXnD,MAAO,gBACPyC,WAAW,EAAA+B,EAAA,GAAKb,EAAQ/B,KAAMa,GAC9B7B,WAAYA,KACT4C,EACH3C,UAAuB,SAAKgB,EAAe,CACzCY,UAAWkB,EAAQ7B,GACnBoB,IAAKgB,EACLtD,WAAYA,EACZC,SAAU0B,EAAiBkB,GAAYF,GAAYY,EAASrB,QAAUS,EAAWY,EAvDnDA,IAgB5Bb,EAAsBD,GAAsBc,EAASrB,OAIhDqB,EAEF,IAAIA,EAASM,MAAM,EAAGnB,IAAmC,SAAK,EAAqB,CACxF,aAAcF,EACd3C,MAAO,CACLO,cAAeP,EAAMO,eAEvBN,UAAW,CACTO,cAAe6C,GAEjBY,QA7BwB,KACxBhB,GAAY,GAMZ,MAAMiB,EAAYT,EAAQtB,QAAQgC,cAAc,6BAC5CD,GACFA,EAAUE,OACZ,GAoBC,eAAgBV,EAASM,MAAMN,EAASrB,OAASO,EAAoBc,EAASrB,SAwBagC,CAA0BX,GAAWR,EAAQtB,UAAWA,EAAWzB,MAGrK,G","sources":["../../../node_modules/@mui/material/internal/svg-icons/MoreHoriz.js","../../../node_modules/@mui/material/Breadcrumbs/BreadcrumbCollapsed.js","../../../node_modules/@mui/material/Breadcrumbs/breadcrumbsClasses.js","../../../node_modules/@mui/material/Breadcrumbs/Breadcrumbs.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreHoriz');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { emphasize } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport MoreHorizIcon from \"../internal/svg-icons/MoreHoriz.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst BreadcrumbCollapsedButton = styled(ButtonBase)(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  marginLeft: `calc(${theme.spacing(1)} * 0.5)`,\n  marginRight: `calc(${theme.spacing(1)} * 0.5)`,\n  ...(theme.palette.mode === 'light' ? {\n    backgroundColor: theme.palette.grey[100],\n    color: theme.palette.grey[700]\n  } : {\n    backgroundColor: theme.palette.grey[700],\n    color: theme.palette.grey[100]\n  }),\n  borderRadius: 2,\n  '&:hover, &:focus': {\n    ...(theme.palette.mode === 'light' ? {\n      backgroundColor: theme.palette.grey[200]\n    } : {\n      backgroundColor: theme.palette.grey[600]\n    })\n  },\n  '&:active': {\n    boxShadow: theme.shadows[0],\n    ...(theme.palette.mode === 'light' ? {\n      backgroundColor: emphasize(theme.palette.grey[200], 0.12)\n    } : {\n      backgroundColor: emphasize(theme.palette.grey[600], 0.12)\n    })\n  }\n})));\nconst BreadcrumbCollapsedIcon = styled(MoreHorizIcon)({\n  width: 24,\n  height: 16\n});\n\n/**\n * @ignore - internal component.\n */\nfunction BreadcrumbCollapsed(props) {\n  const {\n    slots = {},\n    slotProps = {},\n    ...otherProps\n  } = props;\n  const ownerState = props;\n  return /*#__PURE__*/_jsx(\"li\", {\n    children: /*#__PURE__*/_jsx(BreadcrumbCollapsedButton, {\n      focusRipple: true,\n      ...otherProps,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsx(BreadcrumbCollapsedIcon, {\n        as: slots.CollapsedIcon,\n        ownerState: ownerState,\n        ...slotProps.collapsedIcon\n      })\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? BreadcrumbCollapsed.propTypes = {\n  /**\n   * The props used for the CollapsedIcon slot.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    collapsedIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the BreadcumbCollapsed.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    CollapsedIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.object\n} : void 0;\nexport default BreadcrumbCollapsed;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBreadcrumbsUtilityClass(slot) {\n  return generateUtilityClass('MuiBreadcrumbs', slot);\n}\nconst breadcrumbsClasses = generateUtilityClasses('MuiBreadcrumbs', ['root', 'ol', 'li', 'separator']);\nexport default breadcrumbsClasses;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport BreadcrumbCollapsed from \"./BreadcrumbCollapsed.js\";\nimport breadcrumbsClasses, { getBreadcrumbsUtilityClass } from \"./breadcrumbsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    li: ['li'],\n    ol: ['ol'],\n    separator: ['separator']\n  };\n  return composeClasses(slots, getBreadcrumbsUtilityClass, classes);\n};\nconst BreadcrumbsRoot = styled(Typography, {\n  name: 'MuiBreadcrumbs',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    return [{\n      [`& .${breadcrumbsClasses.li}`]: styles.li\n    }, styles.root];\n  }\n})({});\nconst BreadcrumbsOl = styled('ol', {\n  name: 'MuiBreadcrumbs',\n  slot: 'Ol',\n  overridesResolver: (props, styles) => styles.ol\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  alignItems: 'center',\n  padding: 0,\n  margin: 0,\n  listStyle: 'none'\n});\nconst BreadcrumbsSeparator = styled('li', {\n  name: 'MuiBreadcrumbs',\n  slot: 'Separator',\n  overridesResolver: (props, styles) => styles.separator\n})({\n  display: 'flex',\n  userSelect: 'none',\n  marginLeft: 8,\n  marginRight: 8\n});\nfunction insertSeparators(items, className, separator, ownerState) {\n  return items.reduce((acc, current, index) => {\n    if (index < items.length - 1) {\n      acc = acc.concat(current, /*#__PURE__*/_jsx(BreadcrumbsSeparator, {\n        \"aria-hidden\": true,\n        className: className,\n        ownerState: ownerState,\n        children: separator\n      }, `separator-${index}`));\n    } else {\n      acc.push(current);\n    }\n    return acc;\n  }, []);\n}\nconst Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBreadcrumbs'\n  });\n  const {\n    children,\n    className,\n    component = 'nav',\n    slots = {},\n    slotProps = {},\n    expandText = 'Show path',\n    itemsAfterCollapse = 1,\n    itemsBeforeCollapse = 1,\n    maxItems = 8,\n    separator = '/',\n    ...other\n  } = props;\n  const [expanded, setExpanded] = React.useState(false);\n  const ownerState = {\n    ...props,\n    component,\n    expanded,\n    expandText,\n    itemsAfterCollapse,\n    itemsBeforeCollapse,\n    maxItems,\n    separator\n  };\n  const classes = useUtilityClasses(ownerState);\n  const collapsedIconSlotProps = useSlotProps({\n    elementType: slots.CollapsedIcon,\n    externalSlotProps: slotProps.collapsedIcon,\n    ownerState\n  });\n  const listRef = React.useRef(null);\n  const renderItemsBeforeAndAfter = allItems => {\n    const handleClickExpand = () => {\n      setExpanded(true);\n\n      // The clicked element received the focus but gets removed from the DOM.\n      // Let's keep the focus in the component after expanding.\n      // Moving it to the <ol> or <nav> does not cause any announcement in NVDA.\n      // By moving it to some link/button at least we have some announcement.\n      const focusable = listRef.current.querySelector('a[href],button,[tabindex]');\n      if (focusable) {\n        focusable.focus();\n      }\n    };\n\n    // This defends against someone passing weird input, to ensure that if all\n    // items would be shown anyway, we just show all items without the EllipsisItem\n    if (itemsBeforeCollapse + itemsAfterCollapse >= allItems.length) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error(['MUI: You have provided an invalid combination of props to the Breadcrumbs.', `itemsAfterCollapse={${itemsAfterCollapse}} + itemsBeforeCollapse={${itemsBeforeCollapse}} >= maxItems={${maxItems}}`].join('\\n'));\n      }\n      return allItems;\n    }\n    return [...allItems.slice(0, itemsBeforeCollapse), /*#__PURE__*/_jsx(BreadcrumbCollapsed, {\n      \"aria-label\": expandText,\n      slots: {\n        CollapsedIcon: slots.CollapsedIcon\n      },\n      slotProps: {\n        collapsedIcon: collapsedIconSlotProps\n      },\n      onClick: handleClickExpand\n    }, \"ellipsis\"), ...allItems.slice(allItems.length - itemsAfterCollapse, allItems.length)];\n  };\n  const allItems = React.Children.toArray(children).filter(child => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Breadcrumbs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    return /*#__PURE__*/React.isValidElement(child);\n  }).map((child, index) => /*#__PURE__*/_jsx(\"li\", {\n    className: classes.li,\n    children: child\n  }, `child-${index}`));\n  return /*#__PURE__*/_jsx(BreadcrumbsRoot, {\n    ref: ref,\n    component: component,\n    color: \"textSecondary\",\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(BreadcrumbsOl, {\n      className: classes.ol,\n      ref: listRef,\n      ownerState: ownerState,\n      children: insertSeparators(expanded || maxItems && allItems.length <= maxItems ? allItems : renderItemsBeforeAndAfter(allItems), classes.separator, separator, ownerState)\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Breadcrumbs.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Override the default label for the expand button.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Show path'\n   */\n  expandText: PropTypes.string,\n  /**\n   * If max items is exceeded, the number of items to show after the ellipsis.\n   * @default 1\n   */\n  itemsAfterCollapse: integerPropType,\n  /**\n   * If max items is exceeded, the number of items to show before the ellipsis.\n   * @default 1\n   */\n  itemsBeforeCollapse: integerPropType,\n  /**\n   * Specifies the maximum number of breadcrumbs to display. When there are more\n   * than the maximum number, only the first `itemsBeforeCollapse` and last `itemsAfterCollapse`\n   * will be shown, with an ellipsis in between.\n   * @default 8\n   */\n  maxItems: integerPropType,\n  /**\n   * Custom separator node.\n   * @default '/'\n   */\n  separator: PropTypes.node,\n  /**\n   * The props used for each slot inside the Breadcumb.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    collapsedIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Breadcumb.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    CollapsedIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Breadcrumbs;"],"names":["createSvgIcon","d","BreadcrumbCollapsedButton","styled","ButtonBase","memoTheme","theme","display","marginLeft","spacing","marginRight","palette","mode","backgroundColor","grey","color","borderRadius","boxShadow","shadows","BreadcrumbCollapsedIcon","MoreHoriz","width","height","props","slots","slotProps","otherProps","ownerState","children","focusRipple","as","CollapsedIcon","collapsedIcon","getBreadcrumbsUtilityClass","slot","generateUtilityClass","generateUtilityClasses","BreadcrumbsRoot","Typography","name","overridesResolver","styles","li","root","BreadcrumbsOl","ol","flexWrap","alignItems","padding","margin","listStyle","BreadcrumbsSeparator","separator","userSelect","insertSeparators","items","className","reduce","acc","current","index","length","concat","push","inProps","ref","component","expandText","itemsAfterCollapse","itemsBeforeCollapse","maxItems","other","expanded","setExpanded","classes","composeClasses","useUtilityClasses","collapsedIconSlotProps","useSlotProps","elementType","externalSlotProps","listRef","allItems","toArray","filter","child","map","clsx","slice","onClick","focusable","querySelector","focus","renderItemsBeforeAndAfter"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3682.840e721c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3682],{79529:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},47103:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList")},35099:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07-.66-.07-1 0-4.14 3.36-7.5 7.5-7.5m3.71 7.99c.02-.16.04-.32.04-.49s-.01-.33-.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25.21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.11-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49s.01.33.03.49l-1.06.83c-.09.08-.12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.12.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04.24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32zm-3.71 1.01c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5"}),"PermDataSetting")},33248:(e,t,o)=>{o.d(t,{A:()=>M});var a=o(7552),r=o(93878),s=o(70799),n=o(72639),i=o(15110),c=o(74893),l=o(69500);const d=(0,c.A)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),u=(0,c.A)((0,l.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var p=o(55270),v=o(51148),A=o(60129);const h=(0,v.Ay)("span",{shouldForwardProp:p.A})({position:"relative",display:"flex"}),m=(0,v.Ay)(d)({transform:"scale(1)"}),f=(0,v.Ay)(u)((0,A.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),b=function(e){const{checked:t=!1,classes:o={},fontSize:a}=e,r={...e,checked:t};return(0,l.jsxs)(h,{className:o.root,ownerState:r,children:[(0,l.jsx)(m,{fontSize:a,className:o.background,ownerState:r}),(0,l.jsx)(f,{fontSize:a,className:o.dot,ownerState:r})]})};var g=o(15622),y=o(4402),R=o(33960),k=o(39006),C=o(38127),S=o(58520),w=o(4785);const z=(0,v.Ay)(i.A,{shouldForwardProp:e=>(0,p.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"medium"!==o.size&&t[`size${(0,g.A)(o.size)}`],t[`color${(0,g.A)(o.color)}`]]}})((0,A.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${C.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,S.A)()).map((([t])=>({props:{color:t,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,S.A)()).map((([t])=>({props:{color:t,disabled:!1},style:{[`&.${C.A.checked}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),x=(0,l.jsx)(b,{checked:!0}),j=(0,l.jsx)(b,{}),M=a.forwardRef((function(e,t){const o=(0,w.b)({props:e,name:"MuiRadio"}),{checked:n,checkedIcon:i=x,color:c="primary",icon:d=j,name:u,onChange:p,size:v="medium",className:A,disabled:h,disableRipple:m=!1,...f}=o,b=(0,R.A)();let S=h;b&&void 0===S&&(S=b.disabled),S??=!1;const M={...o,disabled:S,disableRipple:m,color:c,size:v},$=(e=>{const{classes:t,color:o,size:a}=e,r={root:["root",`color${(0,g.A)(o)}`,"medium"!==a&&`size${(0,g.A)(a)}`]};return{...t,...(0,s.A)(r,C.q,t)}})(M),N=(0,k.A)();let G=n;const O=(0,y.A)(p,N&&N.onChange);let T=u;var I,L;return N&&(void 0===G&&(I=N.value,G="object"==typeof(L=o.value)&&null!==L?I===L:String(I)===String(L)),void 0===T&&(T=N.name)),(0,l.jsx)(z,{type:"radio",icon:a.cloneElement(d,{fontSize:j.props.fontSize??v}),checkedIcon:a.cloneElement(i,{fontSize:x.props.fontSize??v}),disabled:S,ownerState:M,classes:$,name:T,checked:G,onChange:O,ref:t,className:(0,r.A)($.root,A),...f})}))},38127:(e,t,o)=>{o.d(t,{A:()=>n,q:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiRadio",e)}const n=(0,a.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},56089:(e,t,o)=>{o.d(t,{A:()=>v});var a=o(7552),r=o(93878),s=o(70799),n=o(83867),i=o(87625),c=o(51584),l=o(77259),d=o(76258),u=o(89456),p=o(69500);const v=a.forwardRef((function(e,t){const{actions:o,children:v,className:A,defaultValue:h,name:m,onChange:f,value:b,...g}=e,y=a.useRef(null),R=(e=>{const{classes:t,row:o,error:a}=e,r={root:["root",o&&"row",a&&"error"]};return(0,s.A)(r,i.B,t)})(e),[k,C]=(0,l.A)({controlled:b,default:h,name:"RadioGroup"});a.useImperativeHandle(o,(()=>({focus:()=>{let e=y.current.querySelector("input:not(:disabled):checked");e||(e=y.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const S=(0,c.A)(t,y),w=(0,u.A)(m),z=a.useMemo((()=>({name:w,onChange(e){C(e.target.value),f&&f(e,e.target.value)},value:k})),[w,f,C,k]);return(0,p.jsx)(d.A.Provider,{value:z,children:(0,p.jsx)(n.A,{role:"radiogroup",ref:S,className:(0,r.A)(R.root,A),...g,children:v})})}))},76258:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(7552).createContext(void 0)},87625:(e,t,o)=>{o.d(t,{A:()=>n,B:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiRadioGroup",e)}const n=(0,a.A)("MuiRadioGroup",["root","row","error"])},39006:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(7552),r=o(76258);function s(){return a.useContext(r.A)}},17515:(e,t,o)=>{o.d(t,{A:()=>p});var a=o(7552),r=o(93878),s=o(70799),n=o(51148),i=o(60129),c=o(4785),l=o(89663),d=o(69500);const u=(0,n.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,!o.disableGutters&&t.gutters,t[o.variant]]}})((0,i.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=a.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiToolbar"}),{className:a,component:n="div",disableGutters:i=!1,variant:p="regular",...v}=o,A={...o,component:n,disableGutters:i,variant:p},h=(e=>{const{classes:t,disableGutters:o,variant:a}=e,r={root:["root",!o&&"gutters",a]};return(0,s.A)(r,l.U,t)})(A);return(0,d.jsx)(u,{as:n,className:(0,r.A)(h.root,a),ref:t,ownerState:A,...v})}))},89663:(e,t,o)=>{o.d(t,{A:()=>n,U:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiToolbar",e)}const n=(0,a.A)("MuiToolbar",["root","gutters","regular","dense"])},86743:(e,t,o)=>{o.d(t,{A:()=>a});const a={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"}}}]);
+//# sourceMappingURL=3682.840e721c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3682.840e721c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3682.840e721c.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/Check.js","../../../node_modules/@mui/icons-material/esm/FilterList.js","../../../node_modules/@mui/icons-material/esm/PermDataSetting.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js","../../../node_modules/@mui/material/colors/indigo.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z\"\n}), 'FilterList');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07-.66-.07-1 0-4.14 3.36-7.5 7.5-7.5m3.71 7.99c.02-.16.04-.32.04-.49s-.01-.33-.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25.21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.11-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49s.01.33.03.49l-1.06.83c-.09.08-.12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.12.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04.24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32zm-3.71 1.01c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5\"\n}), 'PermDataSetting');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","const indigo = {\n  50: '#e8eaf6',\n  100: '#c5cae9',\n  200: '#9fa8da',\n  300: '#7986cb',\n  400: '#5c6bc0',\n  500: '#3f51b5',\n  600: '#3949ab',\n  700: '#303f9f',\n  800: '#283593',\n  900: '#1a237e',\n  A100: '#8c9eff',\n  A200: '#536dfe',\n  A400: '#3d5afe',\n  A700: '#304ffe'\n};\nexport default indigo;"],"names":["d","createSvgIcon","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","theme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","props","checked","style","easeOut","classes","fontSize","ownerState","className","root","children","background","dot","RadioRoot","SwitchBase","prop","name","slot","overridesResolver","styles","size","capitalize","color","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","Object","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","inProps","ref","checkedProp","checkedIcon","icon","nameProp","onChange","onChangeProp","disabledProp","other","muiFormControl","useFormControl","slots","composeClasses","useUtilityClasses","radioGroup","useRadioGroup","createChainedFunction","a","b","value","String","type","clsx","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","row","error","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","event","target","Provider","role","undefined","getRadioGroupUtilityClass","ToolbarRoot","disableGutters","gutters","variant","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass","A100","A200","A400","A700"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3728.99a63442.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3728],{13728:(s,e,a)=>{a.r(e),a.d(e,{default:()=>b.A,getSvgIconUtilityClass:()=>l.E,svgIconClasses:()=>l.A});var b=a(2859),l=a(92703)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3778.e18101e6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3778],{7009:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(74893),o=n(69500);const i=(0,r.A)((0,o.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M14 13v4h-4v-4H7l5-5 5 5z"}),"CloudUpload")},61599:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(74893),o=n(69500);const i=(0,r.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error")},85235:(e,t)=>{"use strict";t.A=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",o=(e.type||"").toLowerCase(),i=o.replace(/\/.*$/,"");return n.some((function(e){var t=e.trim().toLowerCase();return"."===t.charAt(0)?r.toLowerCase().endsWith(t):t.endsWith("/*")?i===t.replace(/\/.*$/,""):o===t}))}return!0}},12218:(e,t,n)=>{"use strict";var r=n(905);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},15152:(e,t,n)=>{e.exports=n(12218)()},905:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},60832:(e,t,n)=>{"use strict";n.d(t,{VB:()=>re});var r=n(7552),o=n(15152),i=n.n(o),a=n(74805),c=new Map([["aac","audio/aac"],["abw","application/x-abiword"],["arc","application/x-freearc"],["avif","image/avif"],["avi","video/x-msvideo"],["azw","application/vnd.amazon.ebook"],["bin","application/octet-stream"],["bmp","image/bmp"],["bz","application/x-bzip"],["bz2","application/x-bzip2"],["cda","application/x-cdf"],["csh","application/x-csh"],["css","text/css"],["csv","text/csv"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],["eot","application/vnd.ms-fontobject"],["epub","application/epub+zip"],["gz","application/gzip"],["gif","image/gif"],["heic","image/heic"],["heif","image/heif"],["htm","text/html"],["html","text/html"],["ico","image/vnd.microsoft.icon"],["ics","text/calendar"],["jar","application/java-archive"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["js","text/javascript"],["json","application/json"],["jsonld","application/ld+json"],["mid","audio/midi"],["midi","audio/midi"],["mjs","text/javascript"],["mp3","audio/mpeg"],["mp4","video/mp4"],["mpeg","video/mpeg"],["mpkg","application/vnd.apple.installer+xml"],["odp","application/vnd.oasis.opendocument.presentation"],["ods","application/vnd.oasis.opendocument.spreadsheet"],["odt","application/vnd.oasis.opendocument.text"],["oga","audio/ogg"],["ogv","video/ogg"],["ogx","application/ogg"],["opus","audio/opus"],["otf","font/otf"],["png","image/png"],["pdf","application/pdf"],["php","application/x-httpd-php"],["ppt","application/vnd.ms-powerpoint"],["pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"],["rar","application/vnd.rar"],["rtf","application/rtf"],["sh","application/x-sh"],["svg","image/svg+xml"],["swf","application/x-shockwave-flash"],["tar","application/x-tar"],["tif","image/tiff"],["tiff","image/tiff"],["ts","video/mp2t"],["ttf","font/ttf"],["txt","text/plain"],["vsd","application/vnd.visio"],["wav","audio/wav"],["weba","audio/webm"],["webm","video/webm"],["webp","image/webp"],["woff","font/woff"],["woff2","font/woff2"],["xhtml","application/xhtml+xml"],["xls","application/vnd.ms-excel"],["xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],["xml","application/xml"],["xul","application/vnd.mozilla.xul+xml"],["zip","application/zip"],["7z","application/x-7z-compressed"],["mkv","video/x-matroska"],["mov","video/quicktime"],["msg","application/vnd.ms-outlook"]]);function u(e,t){var n=function(e){var t=e.name;if(t&&-1!==t.lastIndexOf(".")&&!e.type){var n=t.split(".").pop().toLowerCase(),r=c.get(n);r&&Object.defineProperty(e,"type",{value:r,writable:!1,configurable:!1,enumerable:!0})}return e}(e);if("string"!=typeof n.path){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:"string"==typeof t?t:"string"==typeof r&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}var l=[".DS_Store","Thumbs.db"];function s(e){return"object"==typeof e&&null!==e}function f(e){return m(e.target.files).map((function(e){return u(e)}))}function p(e){return(0,a.sH)(this,void 0,void 0,(function(){return(0,a.YH)(this,(function(t){switch(t.label){case 0:return[4,Promise.all(e.map((function(e){return e.getFile()})))];case 1:return[2,t.sent().map((function(e){return u(e)}))]}}))}))}function d(e,t){return(0,a.sH)(this,void 0,void 0,(function(){var n;return(0,a.YH)(this,(function(r){switch(r.label){case 0:return e.items?(n=m(e.items).filter((function(e){return"file"===e.kind})),"drop"!==t?[2,n]:[4,Promise.all(n.map(g))]):[3,2];case 1:return[2,v(y(r.sent()))];case 2:return[2,v(m(e.files).map((function(e){return u(e)})))]}}))}))}function v(e){return e.filter((function(e){return-1===l.indexOf(e.name)}))}function m(e){if(null===e)return[];for(var t=[],n=0;n<e.length;n++){var r=e[n];t.push(r)}return t}function g(e){if("function"!=typeof e.webkitGetAsEntry)return b(e);var t=e.webkitGetAsEntry();return t&&t.isDirectory?w(t):b(e)}function y(e){return e.reduce((function(e,t){return(0,a.fX)((0,a.fX)([],(0,a.zs)(e),!1),(0,a.zs)(Array.isArray(t)?y(t):[t]),!1)}),[])}function b(e){var t=e.getAsFile();if(!t)return Promise.reject("".concat(e," is not a File"));var n=u(t);return Promise.resolve(n)}function h(e){return(0,a.sH)(this,void 0,void 0,(function(){return(0,a.YH)(this,(function(t){return[2,e.isDirectory?w(e):D(e)]}))}))}function w(e){var t=e.createReader();return new Promise((function(e,n){var r=[];!function o(){var i=this;t.readEntries((function(t){return(0,a.sH)(i,void 0,void 0,(function(){var i,c,u;return(0,a.YH)(this,(function(a){switch(a.label){case 0:if(t.length)return[3,5];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,Promise.all(r)];case 2:return i=a.sent(),e(i),[3,4];case 3:return c=a.sent(),n(c),[3,4];case 4:return[3,6];case 5:u=Promise.all(t.map(h)),r.push(u),o(),a.label=6;case 6:return[2]}}))}))}),(function(e){n(e)}))}()}))}function D(e){return(0,a.sH)(this,void 0,void 0,(function(){return(0,a.YH)(this,(function(t){return[2,new Promise((function(t,n){e.file((function(n){var r=u(n,e.fullPath);t(r)}),(function(e){n(e)}))}))]}))}))}var O=n(85235);function x(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||k(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 j(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 A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){E(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(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=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(c)throw o}}return i}}(e,t)||k(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 k(e,t){if(e){if("string"==typeof e)return P(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)?P(e,t):void 0}}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var S=function(e){e=Array.isArray(e)&&1===e.length?e[0]:e;var t=Array.isArray(e)?"one of ".concat(e.join(", ")):e;return{code:"file-invalid-type",message:"File type must be ".concat(t)}},C=function(e){return{code:"file-too-large",message:"File is larger than ".concat(e," ").concat(1===e?"byte":"bytes")}},z=function(e){return{code:"file-too-small",message:"File is smaller than ".concat(e," ").concat(1===e?"byte":"bytes")}},T={code:"too-many-files",message:"Too many files"};function R(e,t){var n="application/x-moz-file"===e.type||(0,O.A)(e,t);return[n,n?null:S(t)]}function I(e,t,n){if(_(e.size))if(_(t)&&_(n)){if(e.size>n)return[!1,C(n)];if(e.size<t)return[!1,z(t)]}else{if(_(t)&&e.size<t)return[!1,z(t)];if(_(n)&&e.size>n)return[!1,C(n)]}return[!0,null]}function _(e){return null!=e}function M(e){return"function"==typeof e.isPropagationStopped?e.isPropagationStopped():void 0!==e.cancelBubble&&e.cancelBubble}function H(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,(function(e){return"Files"===e||"application/x-moz-file"===e})):!!e.target&&!!e.target.files}function L(e){e.preventDefault()}function B(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return t.some((function(t){return!M(e)&&t&&t.apply(void 0,[e].concat(r)),M(e)}))}}function K(e){return"audio/*"===e||"video/*"===e||"image/*"===e||"text/*"===e||/\w+\/[-+.\w]+/g.test(e)}function U(e){return/^.*\.[\w]+$/.test(e)}var Y=["children"],W=["open"],$=["refKey","role","onKeyDown","onFocus","onBlur","onClick","onDragEnter","onDragOver","onDragLeave","onDrop"],q=["refKey","onChange","onClick"];function N(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=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(c)throw o}}return i}}(e,t)||V(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 V(e,t){if(e){if("string"==typeof e)return G(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)?G(e,t):void 0}}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}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 J(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?X(Object(n),!0).forEach((function(t){Q(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):X(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ee=(0,r.forwardRef)((function(e,t){var n=e.children,o=re(Z(e,Y)),i=o.open,a=Z(o,W);return(0,r.useImperativeHandle)(t,(function(){return{open:i}}),[i]),r.createElement(r.Fragment,null,n(J(J({},a),{},{open:i})))}));ee.displayName="Dropzone";var te={disabled:!1,getFilesFromEvent:function(e){return(0,a.sH)(this,void 0,void 0,(function(){return(0,a.YH)(this,(function(t){return s(e)&&s(e.dataTransfer)?[2,d(e.dataTransfer,e.type)]:s(n=e)&&s(n.target)?[2,f(e)]:Array.isArray(e)&&e.every((function(e){return"getFile"in e&&"function"==typeof e.getFile}))?[2,p(e)]:[2,[]];var n}))}))},maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};ee.defaultProps=te,ee.propTypes={children:i().func,accept:i().objectOf(i().arrayOf(i().string)),multiple:i().bool,preventDropOnDocument:i().bool,noClick:i().bool,noKeyboard:i().bool,noDrag:i().bool,noDragEventsBubbling:i().bool,minSize:i().number,maxSize:i().number,maxFiles:i().number,disabled:i().bool,getFilesFromEvent:i().func,onFileDialogCancel:i().func,onFileDialogOpen:i().func,useFsAccessApi:i().bool,autoFocus:i().bool,onDragEnter:i().func,onDragLeave:i().func,onDragOver:i().func,onDrop:i().func,onDropAccepted:i().func,onDropRejected:i().func,onError:i().func,validator:i().func};var ne={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function re(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=J(J({},te),e),n=t.accept,o=t.disabled,i=t.getFilesFromEvent,a=t.maxSize,c=t.minSize,u=t.multiple,l=t.maxFiles,s=t.onDragEnter,f=t.onDragLeave,p=t.onDragOver,d=t.onDrop,v=t.onDropAccepted,m=t.onDropRejected,g=t.onFileDialogCancel,y=t.onFileDialogOpen,b=t.useFsAccessApi,h=t.autoFocus,w=t.preventDropOnDocument,D=t.noClick,O=t.noKeyboard,j=t.noDrag,k=t.noDragEventsBubbling,P=t.onError,S=t.validator,C=(0,r.useMemo)((function(){return function(e){if(_(e))return Object.entries(e).reduce((function(e,t){var n=F(t,2),r=n[0],o=n[1];return[].concat(x(e),[r],x(o))}),[]).filter((function(e){return K(e)||U(e)})).join(",")}(n)}),[n]),z=(0,r.useMemo)((function(){return function(e){return _(e)?[{description:"Files",accept:Object.entries(e).filter((function(e){var t=F(e,2),n=t[0],r=t[1],o=!0;return K(n)||(console.warn('Skipped "'.concat(n,'" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.')),o=!1),Array.isArray(r)&&r.every(U)||(console.warn('Skipped "'.concat(n,'" because an invalid file extension was provided.')),o=!1),o})).reduce((function(e,t){var n=F(t,2),r=n[0],o=n[1];return A(A({},e),{},E({},r,o))}),{})}]:e}(n)}),[n]),Y=(0,r.useMemo)((function(){return"function"==typeof y?y:ie}),[y]),W=(0,r.useMemo)((function(){return"function"==typeof g?g:ie}),[g]),X=(0,r.useRef)(null),ee=(0,r.useRef)(null),re=N((0,r.useReducer)(oe,ne),2),ae=re[0],ce=re[1],ue=ae.isFocused,le=ae.isFileDialogActive,se=(0,r.useRef)("undefined"!=typeof window&&window.isSecureContext&&b&&"showOpenFilePicker"in window),fe=function(){!se.current&&le&&setTimeout((function(){ee.current&&(ee.current.files.length||(ce({type:"closeDialog"}),W()))}),300)};(0,r.useEffect)((function(){return window.addEventListener("focus",fe,!1),function(){window.removeEventListener("focus",fe,!1)}}),[ee,le,W,se]);var pe=(0,r.useRef)([]),de=function(e){X.current&&X.current.contains(e.target)||(e.preventDefault(),pe.current=[])};(0,r.useEffect)((function(){return w&&(document.addEventListener("dragover",L,!1),document.addEventListener("drop",de,!1)),function(){w&&(document.removeEventListener("dragover",L),document.removeEventListener("drop",de))}}),[X,w]),(0,r.useEffect)((function(){return!o&&h&&X.current&&X.current.focus(),function(){}}),[X,h,o]);var ve=(0,r.useCallback)((function(e){P?P(e):console.error(e)}),[P]),me=(0,r.useCallback)((function(e){var t;e.preventDefault(),e.persist(),ke(e),pe.current=[].concat(function(e){if(Array.isArray(e))return G(e)}(t=pe.current)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||V(t)||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.")}(),[e.target]),H(e)&&Promise.resolve(i(e)).then((function(t){if(!M(e)||k){var n=t.length,r=n>0&&function(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,i=e.multiple,a=e.maxFiles,c=e.validator;return!(!i&&t.length>1||i&&a>=1&&t.length>a)&&t.every((function(e){var t=F(R(e,n),1)[0],i=F(I(e,r,o),1)[0],a=c?c(e):null;return t&&i&&!a}))}({files:t,accept:C,minSize:c,maxSize:a,multiple:u,maxFiles:l,validator:S});ce({isDragAccept:r,isDragReject:n>0&&!r,isDragActive:!0,type:"setDraggedFiles"}),s&&s(e)}})).catch((function(e){return ve(e)}))}),[i,s,ve,k,C,c,a,u,l,S]),ge=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),ke(e);var t=H(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect="copy"}catch(e){}return t&&p&&p(e),!1}),[p,k]),ye=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),ke(e);var t=pe.current.filter((function(e){return X.current&&X.current.contains(e)})),n=t.indexOf(e.target);-1!==n&&t.splice(n,1),pe.current=t,t.length>0||(ce({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),H(e)&&f&&f(e))}),[X,f,k]),be=(0,r.useCallback)((function(e,t){var n=[],r=[];e.forEach((function(e){var t=N(R(e,C),2),o=t[0],i=t[1],u=N(I(e,c,a),2),l=u[0],s=u[1],f=S?S(e):null;if(o&&l&&!f)n.push(e);else{var p=[i,s];f&&(p=p.concat(f)),r.push({file:e,errors:p.filter((function(e){return e}))})}})),(!u&&n.length>1||u&&l>=1&&n.length>l)&&(n.forEach((function(e){r.push({file:e,errors:[T]})})),n.splice(0)),ce({acceptedFiles:n,fileRejections:r,type:"setFiles"}),d&&d(n,r,t),r.length>0&&m&&m(r,t),n.length>0&&v&&v(n,t)}),[ce,u,C,c,a,l,d,v,m,S]),he=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),ke(e),pe.current=[],H(e)&&Promise.resolve(i(e)).then((function(t){M(e)&&!k||be(t,e)})).catch((function(e){return ve(e)})),ce({type:"reset"})}),[i,be,ve,k]),we=(0,r.useCallback)((function(){if(se.current){ce({type:"openDialog"}),Y();var e={multiple:u,types:z};window.showOpenFilePicker(e).then((function(e){return i(e)})).then((function(e){be(e,null),ce({type:"closeDialog"})})).catch((function(e){var t;(t=e)instanceof DOMException&&("AbortError"===t.name||t.code===t.ABORT_ERR)?(W(e),ce({type:"closeDialog"})):function(e){return e instanceof DOMException&&("SecurityError"===e.name||e.code===e.SECURITY_ERR)}(e)?(se.current=!1,ee.current?(ee.current.value=null,ee.current.click()):ve(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided."))):ve(e)}))}else ee.current&&(ce({type:"openDialog"}),Y(),ee.current.value=null,ee.current.click())}),[ce,Y,W,b,be,ve,z,u]),De=(0,r.useCallback)((function(e){X.current&&X.current.isEqualNode(e.target)&&(" "!==e.key&&"Enter"!==e.key&&32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),we()))}),[X,we]),Oe=(0,r.useCallback)((function(){ce({type:"focus"})}),[]),xe=(0,r.useCallback)((function(){ce({type:"blur"})}),[]),je=(0,r.useCallback)((function(){D||(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?setTimeout(we,0):we())}),[D,we]),Ae=function(e){return o?null:e},Ee=function(e){return O?null:Ae(e)},Fe=function(e){return j?null:Ae(e)},ke=function(e){k&&e.stopPropagation()},Pe=(0,r.useMemo)((function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,n=void 0===t?"ref":t,r=e.role,i=e.onKeyDown,a=e.onFocus,c=e.onBlur,u=e.onClick,l=e.onDragEnter,s=e.onDragOver,f=e.onDragLeave,p=e.onDrop,d=Z(e,$);return J(J(Q({onKeyDown:Ee(B(i,De)),onFocus:Ee(B(a,Oe)),onBlur:Ee(B(c,xe)),onClick:Ae(B(u,je)),onDragEnter:Fe(B(l,me)),onDragOver:Fe(B(s,ge)),onDragLeave:Fe(B(f,ye)),onDrop:Fe(B(p,he)),role:"string"==typeof r&&""!==r?r:"presentation"},n,X),o||O?{}:{tabIndex:0}),d)}}),[X,De,Oe,xe,je,me,ge,ye,he,O,j,o]),Se=(0,r.useCallback)((function(e){e.stopPropagation()}),[]),Ce=(0,r.useMemo)((function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,n=void 0===t?"ref":t,r=e.onChange,o=e.onClick,i=Z(e,q);return J(J({},Q({accept:C,multiple:u,type:"file",style:{display:"none"},onChange:Ae(B(r,he)),onClick:Ae(B(o,Se)),tabIndex:-1},n,ee)),i)}}),[ee,n,u,he,o]);return J(J({},ae),{},{isFocused:ue&&!o,getRootProps:Pe,getInputProps:Ce,rootRef:X,inputRef:ee,open:Ae(we)})}function oe(e,t){switch(t.type){case"focus":return J(J({},e),{},{isFocused:!0});case"blur":return J(J({},e),{},{isFocused:!1});case"openDialog":return J(J({},ne),{},{isFileDialogActive:!0});case"closeDialog":return J(J({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return J(J({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return J(J({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return J({},ne);default:return e}}function ie(){}}}]);
+//# sourceMappingURL=3778.e18101e6.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3778.e18101e6.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3778.e18101e6.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/CloudUpload.js","../../../node_modules/@mui/icons-material/esm/Error.js","../../../node_modules/attr-accept/dist/es/index.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/file-selector/src/file.ts","../../../node_modules/file-selector/src/file-selector.ts","../../../node_modules/react-dropzone/dist/es/utils/index.js","../../../node_modules/react-dropzone/dist/es/index.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M14 13v4h-4v-4H7l5-5 5 5z\"\n}), 'CloudUpload');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z\"\n}), 'Error');","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n  if (file && acceptedFiles) {\n    var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n    var fileName = file.name || '';\n    var mimeType = (file.type || '').toLowerCase();\n    var baseMimeType = mimeType.replace(/\\/.*$/, '');\n    return acceptedFilesArray.some(function (type) {\n      var validType = type.trim().toLowerCase();\n\n      if (validType.charAt(0) === '.') {\n        return fileName.toLowerCase().endsWith(validType);\n      } else if (validType.endsWith('/*')) {\n        // This is something like a image/* mime type\n        return baseMimeType === validType.replace(/\\/.*$/, '');\n      }\n\n      return mimeType === validType;\n    });\n  }\n\n  return true;\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","export const COMMON_MIME_TYPES = new Map([\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n    ['aac', 'audio/aac'],\n    ['abw', 'application/x-abiword'],\n    ['arc', 'application/x-freearc'],\n    ['avif', 'image/avif'],\n    ['avi', 'video/x-msvideo'],\n    ['azw', 'application/vnd.amazon.ebook'],\n    ['bin', 'application/octet-stream'],\n    ['bmp', 'image/bmp'],\n    ['bz', 'application/x-bzip'],\n    ['bz2', 'application/x-bzip2'],\n    ['cda', 'application/x-cdf'],\n    ['csh', 'application/x-csh'],\n    ['css', 'text/css'],\n    ['csv', 'text/csv'],\n    ['doc', 'application/msword'],\n    ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n    ['eot', 'application/vnd.ms-fontobject'],\n    ['epub', 'application/epub+zip'],\n    ['gz', 'application/gzip'],\n    ['gif', 'image/gif'],\n    ['heic', 'image/heic'],\n    ['heif', 'image/heif'],\n    ['htm', 'text/html'],\n    ['html', 'text/html'],\n    ['ico', 'image/vnd.microsoft.icon'],\n    ['ics', 'text/calendar'],\n    ['jar', 'application/java-archive'],\n    ['jpeg', 'image/jpeg'],\n    ['jpg', 'image/jpeg'],\n    ['js', 'text/javascript'],\n    ['json', 'application/json'],\n    ['jsonld', 'application/ld+json'],\n    ['mid', 'audio/midi'],\n    ['midi', 'audio/midi'],\n    ['mjs', 'text/javascript'],\n    ['mp3', 'audio/mpeg'],\n    ['mp4', 'video/mp4'],\n    ['mpeg', 'video/mpeg'],\n    ['mpkg', 'application/vnd.apple.installer+xml'],\n    ['odp', 'application/vnd.oasis.opendocument.presentation'],\n    ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n    ['odt', 'application/vnd.oasis.opendocument.text'],\n    ['oga', 'audio/ogg'],\n    ['ogv', 'video/ogg'],\n    ['ogx', 'application/ogg'],\n    ['opus', 'audio/opus'],\n    ['otf', 'font/otf'],\n    ['png', 'image/png'],\n    ['pdf', 'application/pdf'],\n    ['php', 'application/x-httpd-php'],\n    ['ppt', 'application/vnd.ms-powerpoint'],\n    ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n    ['rar', 'application/vnd.rar'],\n    ['rtf', 'application/rtf'],\n    ['sh', 'application/x-sh'],\n    ['svg', 'image/svg+xml'],\n    ['swf', 'application/x-shockwave-flash'],\n    ['tar', 'application/x-tar'],\n    ['tif', 'image/tiff'],\n    ['tiff', 'image/tiff'],\n    ['ts', 'video/mp2t'],\n    ['ttf', 'font/ttf'],\n    ['txt', 'text/plain'],\n    ['vsd', 'application/vnd.visio'],\n    ['wav', 'audio/wav'],\n    ['weba', 'audio/webm'],\n    ['webm', 'video/webm'],\n    ['webp', 'image/webp'],\n    ['woff', 'font/woff'],\n    ['woff2', 'font/woff2'],\n    ['xhtml', 'application/xhtml+xml'],\n    ['xls', 'application/vnd.ms-excel'],\n    ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n    ['xml', 'application/xml'],\n    ['xul', 'application/vnd.mozilla.xul+xml'],\n    ['zip', 'application/zip'],\n    ['7z', 'application/x-7z-compressed'],\n\n    // Others\n    ['mkv', 'video/x-matroska'],\n    ['mov', 'video/quicktime'],\n    ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n    const f = withMimeType(file);\n    if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n        const {webkitRelativePath} = file;\n        Object.defineProperty(f, 'path', {\n            value: typeof path === 'string'\n                ? path\n                // If <input webkitdirectory> is set,\n                // the File will have a {webkitRelativePath} property\n                // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n                : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n                    ? webkitRelativePath\n                    : file.name,\n            writable: false,\n            configurable: false,\n            enumerable: true\n        });\n    }\n\n    return f;\n}\n\nexport interface FileWithPath extends File {\n    readonly path?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n    const {name} = file;\n    const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n    if (hasExtension && !file.type) {\n        const ext = name.split('.')\n            .pop()!.toLowerCase();\n        const type = COMMON_MIME_TYPES.get(ext);\n        if (type) {\n            Object.defineProperty(file, 'type', {\n                value: type,\n                writable: false,\n                configurable: false,\n                enumerable: true\n            });\n        }\n    }\n\n    return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n    // Thumbnail cache files for macOS and Windows\n    '.DS_Store', // macOs\n    'Thumbs.db'  // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n    if (isObject<DragEvent>(evt) && isDataTransfer(evt.dataTransfer)) {\n        return getDataTransferFiles(evt.dataTransfer, evt.type);\n    } else if (isChangeEvt(evt)) {\n        return getInputFiles(evt);\n    } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n        return getFsHandleFiles(evt)\n    }\n    return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n    return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n    return isObject<Event>(value) && isObject(value.target);\n}\n\nfunction isObject<T>(v: any): v is T {\n    return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n    return fromList<FileWithPath>((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n    const files = await Promise.all(handles.map(h => h.getFile()));\n    return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n    // IE11 does not support dataTransfer.items\n    // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n    if (dt.items) {\n        const items = fromList<DataTransferItem>(dt.items)\n            .filter(item => item.kind === 'file');\n        // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n        // only 'dragstart' and 'drop' has access to the data (source node)\n        if (type !== 'drop') {\n            return items;\n        }\n        const files = await Promise.all(items.map(toFilePromises));\n        return noIgnoredFiles(flatten<FileWithPath>(files));\n    }\n\n    return noIgnoredFiles(fromList<FileWithPath>(dt.files)\n        .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n    return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList<T>(items: DataTransferItemList | FileList | null): T[] {\n    if (items === null) {\n        return [];\n    }\n\n    const files = [];\n\n    // tslint:disable: prefer-for-of\n    for (let i = 0; i < items.length; i++) {\n        const file = items[i];\n        files.push(file);\n    }\n\n    return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n    if (typeof item.webkitGetAsEntry !== 'function') {\n        return fromDataTransferItem(item);\n    }\n\n    const entry = item.webkitGetAsEntry();\n\n    // Safari supports dropping an image node from a different window and can be retrieved using\n    // the DataTransferItem.getAsFile() API\n    // NOTE: FileSystemEntry.file() throws if trying to get the file\n    if (entry && entry.isDirectory) {\n        return fromDirEntry(entry) as any;\n    }\n\n    return fromDataTransferItem(item);\n}\n\nfunction flatten<T>(items: any[]): T[] {\n    return items.reduce((acc, files) => [\n        ...acc,\n        ...(Array.isArray(files) ? flatten(files) : [files])\n    ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n    const file = item.getAsFile();\n    if (!file) {\n        return Promise.reject(`${item} is not a File`);\n    }\n    const fwp = toFileWithPath(file);\n    return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n    return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n    const reader = entry.createReader();\n\n    return new Promise<FileArray[]>((resolve, reject) => {\n        const entries: Promise<FileValue[]>[] = [];\n\n        function readEntries() {\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n            reader.readEntries(async (batch: any[]) => {\n                if (!batch.length) {\n                    // Done reading directory\n                    try {\n                        const files = await Promise.all(entries);\n                        resolve(files);\n                    } catch (err) {\n                        reject(err);\n                    }\n                } else {\n                    const items = Promise.all(batch.map(fromEntry));\n                    entries.push(items);\n\n                    // Continue reading\n                    readEntries();\n                }\n            }, (err: any) => {\n                reject(err);\n            });\n        }\n\n        readEntries();\n    });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n    return new Promise<FileWithPath>((resolve, reject) => {\n        entry.file((file: FileWithPath) => {\n            const fwp = toFileWithPath(file, entry.fullPath);\n            resolve(fwp);\n        }, (err: any) => {\n            reject(err);\n        });\n    });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array<FileValue> {}\ntype FileValue = FileWithPath\n    | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n  FileInvalidType: FILE_INVALID_TYPE,\n  FileTooLarge: FILE_TOO_LARGE,\n  FileTooSmall: FILE_TOO_SMALL,\n  TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n  accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n  var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n  return {\n    code: FILE_INVALID_TYPE,\n    message: \"File type must be \".concat(messageSuffix)\n  };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n  return {\n    code: FILE_TOO_LARGE,\n    message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n  return {\n    code: FILE_TOO_SMALL,\n    message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n  code: TOO_MANY_FILES,\n  message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n  var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n  return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n  if (isDefined(file.size)) {\n    if (isDefined(minSize) && isDefined(maxSize)) {\n      if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n      if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n    } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n  }\n\n  return [true, null];\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n  var files = _ref.files,\n      accept = _ref.accept,\n      minSize = _ref.minSize,\n      maxSize = _ref.maxSize,\n      multiple = _ref.multiple,\n      maxFiles = _ref.maxFiles,\n      validator = _ref.validator;\n\n  if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n    return false;\n  }\n\n  return files.every(function (file) {\n    var _fileAccepted = fileAccepted(file, accept),\n        _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n        accepted = _fileAccepted2[0];\n\n    var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n        _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n        sizeMatch = _fileMatchSize2[0];\n\n    var customErrors = validator ? validator(file) : null;\n    return accepted && sizeMatch && !customErrors;\n  });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n  if (typeof event.isPropagationStopped === \"function\") {\n    return event.isPropagationStopped();\n  } else if (typeof event.cancelBubble !== \"undefined\") {\n    return event.cancelBubble;\n  }\n\n  return false;\n}\nexport function isEvtWithFiles(event) {\n  if (!event.dataTransfer) {\n    return !!event.target && !!event.target.files;\n  } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n  return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n    return type === \"Files\" || type === \"application/x-moz-file\";\n  });\n}\nexport function isKindFile(item) {\n  return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n  event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n  return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n  return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n  var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n  return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n  for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n\n  return function (event) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    return fns.some(function (fn) {\n      if (!isPropagationStopped(event) && fn) {\n        fn.apply(void 0, [event].concat(args));\n      }\n\n      return isPropagationStopped(event);\n    });\n  };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n  return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n  if (isDefined(accept)) {\n    var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n      var _ref3 = _slicedToArray(_ref2, 2),\n          mimeType = _ref3[0],\n          ext = _ref3[1];\n\n      var ok = true;\n\n      if (!isMIMEType(mimeType)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n        ok = false;\n      }\n\n      if (!Array.isArray(ext) || !ext.every(isExt)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n        ok = false;\n      }\n\n      return ok;\n    }).reduce(function (agg, _ref4) {\n      var _ref5 = _slicedToArray(_ref4, 2),\n          mimeType = _ref5[0],\n          ext = _ref5[1];\n\n      return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n    }, {});\n    return [{\n      // description is required due to https://crbug.com/1264708\n      description: \"Files\",\n      accept: acceptForPicker\n    }];\n  }\n\n  return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n  if (isDefined(accept)) {\n    return Object.entries(accept).reduce(function (a, _ref6) {\n      var _ref7 = _slicedToArray(_ref6, 2),\n          mimeType = _ref7[0],\n          ext = _ref7[1];\n\n      return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n    }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n    .filter(function (v) {\n      return isMIMEType(v) || isExt(v);\n    }).join(\",\");\n  }\n\n  return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n  return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n  return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n  return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n  return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n    _excluded2 = [\"open\"],\n    _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n    _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n *   {({getRootProps, getInputProps}) => (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag 'n' drop some files here, or click to select files</p>\n *     </div>\n *   )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      params = _objectWithoutProperties(_ref, _excluded);\n\n  var _useDropzone = useDropzone(params),\n      open = _useDropzone.open,\n      props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n  useImperativeHandle(ref, function () {\n    return {\n      open: open\n    };\n  }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n  return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n    open: open\n  })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n  disabled: false,\n  getFilesFromEvent: fromEvent,\n  maxSize: Infinity,\n  minSize: 0,\n  multiple: true,\n  maxFiles: 0,\n  preventDropOnDocument: true,\n  noClick: false,\n  noKeyboard: false,\n  noDrag: false,\n  noDragEventsBubbling: false,\n  validator: null,\n  useFsAccessApi: true,\n  autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n  /**\n   * Render function that exposes the dropzone state and prop getter fns\n   *\n   * @param {object} params\n   * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n   * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n   * @param {Function} params.open Open the native file selection dialog\n   * @param {boolean} params.isFocused Dropzone area is in focus\n   * @param {boolean} params.isFileDialogActive File dialog is opened\n   * @param {boolean} params.isDragActive Active drag is in progress\n   * @param {boolean} params.isDragAccept Dragged files are accepted\n   * @param {boolean} params.isDragReject Some dragged files are rejected\n   * @param {File[]} params.acceptedFiles Accepted files\n   * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n   */\n  children: PropTypes.func,\n\n  /**\n   * Set accepted file types.\n   * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n   * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n   * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n   * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n   */\n  accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n  /**\n   * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n   */\n  multiple: PropTypes.bool,\n\n  /**\n   * If false, allow dropped items to take over the current browser window\n   */\n  preventDropOnDocument: PropTypes.bool,\n\n  /**\n   * If true, disables click to open the native file selection dialog\n   */\n  noClick: PropTypes.bool,\n\n  /**\n   * If true, disables SPACE/ENTER to open the native file selection dialog.\n   * Note that it also stops tracking the focus state.\n   */\n  noKeyboard: PropTypes.bool,\n\n  /**\n   * If true, disables drag 'n' drop\n   */\n  noDrag: PropTypes.bool,\n\n  /**\n   * If true, stops drag event propagation to parents\n   */\n  noDragEventsBubbling: PropTypes.bool,\n\n  /**\n   * Minimum file size (in bytes)\n   */\n  minSize: PropTypes.number,\n\n  /**\n   * Maximum file size (in bytes)\n   */\n  maxSize: PropTypes.number,\n\n  /**\n   * Maximum accepted number of files\n   * The default value is 0 which means there is no limitation to how many files are accepted.\n   */\n  maxFiles: PropTypes.number,\n\n  /**\n   * Enable/disable the dropzone\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Use this to provide a custom file aggregator\n   *\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  getFilesFromEvent: PropTypes.func,\n\n  /**\n   * Cb for when closing the file dialog with no selection\n   */\n  onFileDialogCancel: PropTypes.func,\n\n  /**\n   * Cb for when opening the file dialog\n   */\n  onFileDialogOpen: PropTypes.func,\n\n  /**\n   * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n   * to open the file picker instead of using an `<input type=\"file\">` click event.\n   */\n  useFsAccessApi: PropTypes.bool,\n\n  /**\n   * Set to true to focus the root element on render\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * Cb for when the `dragenter` event occurs.\n   *\n   * @param {DragEvent} event\n   */\n  onDragEnter: PropTypes.func,\n\n  /**\n   * Cb for when the `dragleave` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragLeave: PropTypes.func,\n\n  /**\n   * Cb for when the `dragover` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragOver: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n   *\n   * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n   * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n   * If `multiple` is set to false and additional files are dropped,\n   * all files besides the first will be rejected.\n   * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n   *\n   * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n   * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n   *\n   * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n   * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n   *\n   * ```js\n   * function onDrop(acceptedFiles) {\n   *   const req = request.post('/upload')\n   *   acceptedFiles.forEach(file => {\n   *     req.attach(file.name, file)\n   *   })\n   *   req.end(callback)\n   * }\n   * ```\n   *\n   * @param {File[]} acceptedFiles\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  onDrop: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are accepted, this callback is not invoked.\n   *\n   * @param {File[]} files\n   * @param {(DragEvent|Event)} event\n   */\n  onDropAccepted: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are rejected, this callback is not invoked.\n   *\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event\n   */\n  onDropRejected: PropTypes.func,\n\n  /**\n   * Cb for when there's some error from any of the promises.\n   *\n   * @param {Error} error\n   */\n  onError: PropTypes.func,\n\n  /**\n   * Custom validation function. It must return null if there's no errors.\n   * @param {File} file\n   * @returns {FileError|FileError[]|null}\n   */\n  validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n  isFocused: false,\n  isFileDialogActive: false,\n  isDragActive: false,\n  isDragAccept: false,\n  isDragReject: false,\n  acceptedFiles: [],\n  fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n *   const {getRootProps, getInputProps} = useDropzone({\n *     onDrop: acceptedFiles => {\n *       // do something with the File objects, e.g. upload to some server\n *     }\n *   });\n *   return (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag and drop some files here, or click to select files</p>\n *     </div>\n *   )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n *   const req = request.post('/upload')\n *   acceptedFiles.forEach(file => {\n *     req.attach(file.name, file)\n *   })\n *   req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n      accept = _defaultProps$props.accept,\n      disabled = _defaultProps$props.disabled,\n      getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n      maxSize = _defaultProps$props.maxSize,\n      minSize = _defaultProps$props.minSize,\n      multiple = _defaultProps$props.multiple,\n      maxFiles = _defaultProps$props.maxFiles,\n      onDragEnter = _defaultProps$props.onDragEnter,\n      onDragLeave = _defaultProps$props.onDragLeave,\n      onDragOver = _defaultProps$props.onDragOver,\n      onDrop = _defaultProps$props.onDrop,\n      onDropAccepted = _defaultProps$props.onDropAccepted,\n      onDropRejected = _defaultProps$props.onDropRejected,\n      onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n      onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n      useFsAccessApi = _defaultProps$props.useFsAccessApi,\n      autoFocus = _defaultProps$props.autoFocus,\n      preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n      noClick = _defaultProps$props.noClick,\n      noKeyboard = _defaultProps$props.noKeyboard,\n      noDrag = _defaultProps$props.noDrag,\n      noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n      onError = _defaultProps$props.onError,\n      validator = _defaultProps$props.validator;\n\n  var acceptAttr = useMemo(function () {\n    return acceptPropAsAcceptAttr(accept);\n  }, [accept]);\n  var pickerTypes = useMemo(function () {\n    return pickerOptionsFromAccept(accept);\n  }, [accept]);\n  var onFileDialogOpenCb = useMemo(function () {\n    return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n  }, [onFileDialogOpen]);\n  var onFileDialogCancelCb = useMemo(function () {\n    return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n  }, [onFileDialogCancel]);\n  /**\n   * @constant\n   * @type {React.MutableRefObject<HTMLElement>}\n   */\n\n  var rootRef = useRef(null);\n  var inputRef = useRef(null);\n\n  var _useReducer = useReducer(reducer, initialState),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      state = _useReducer2[0],\n      dispatch = _useReducer2[1];\n\n  var isFocused = state.isFocused,\n      isFileDialogActive = state.isFileDialogActive;\n  var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n  var onWindowFocus = function onWindowFocus() {\n    // Execute the timeout only if the file dialog is opened in the browser\n    if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n      setTimeout(function () {\n        if (inputRef.current) {\n          var files = inputRef.current.files;\n\n          if (!files.length) {\n            dispatch({\n              type: \"closeDialog\"\n            });\n            onFileDialogCancelCb();\n          }\n        }\n      }, 300);\n    }\n  };\n\n  useEffect(function () {\n    window.addEventListener(\"focus\", onWindowFocus, false);\n    return function () {\n      window.removeEventListener(\"focus\", onWindowFocus, false);\n    };\n  }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n  var dragTargetsRef = useRef([]);\n\n  var onDocumentDrop = function onDocumentDrop(event) {\n    if (rootRef.current && rootRef.current.contains(event.target)) {\n      // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n      return;\n    }\n\n    event.preventDefault();\n    dragTargetsRef.current = [];\n  };\n\n  useEffect(function () {\n    if (preventDropOnDocument) {\n      document.addEventListener(\"dragover\", onDocumentDragOver, false);\n      document.addEventListener(\"drop\", onDocumentDrop, false);\n    }\n\n    return function () {\n      if (preventDropOnDocument) {\n        document.removeEventListener(\"dragover\", onDocumentDragOver);\n        document.removeEventListener(\"drop\", onDocumentDrop);\n      }\n    };\n  }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n  useEffect(function () {\n    if (!disabled && autoFocus && rootRef.current) {\n      rootRef.current.focus();\n    }\n\n    return function () {};\n  }, [rootRef, autoFocus, disabled]);\n  var onErrCb = useCallback(function (e) {\n    if (onError) {\n      onError(e);\n    } else {\n      // Let the user know something's gone wrong if they haven't provided the onError cb.\n      console.error(e);\n    }\n  }, [onError]);\n  var onDragEnterCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        var fileCount = files.length;\n        var isDragAccept = fileCount > 0 && allFilesAccepted({\n          files: files,\n          accept: acceptAttr,\n          minSize: minSize,\n          maxSize: maxSize,\n          multiple: multiple,\n          maxFiles: maxFiles,\n          validator: validator\n        });\n        var isDragReject = fileCount > 0 && !isDragAccept;\n        dispatch({\n          isDragAccept: isDragAccept,\n          isDragReject: isDragReject,\n          isDragActive: true,\n          type: \"setDraggedFiles\"\n        });\n\n        if (onDragEnter) {\n          onDragEnter(event);\n        }\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n  }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n  var onDragOverCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event);\n    var hasFiles = isEvtWithFiles(event);\n\n    if (hasFiles && event.dataTransfer) {\n      try {\n        event.dataTransfer.dropEffect = \"copy\";\n      } catch (_unused) {}\n      /* eslint-disable-line no-empty */\n\n    }\n\n    if (hasFiles && onDragOver) {\n      onDragOver(event);\n    }\n\n    return false;\n  }, [onDragOver, noDragEventsBubbling]);\n  var onDragLeaveCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n    var targets = dragTargetsRef.current.filter(function (target) {\n      return rootRef.current && rootRef.current.contains(target);\n    }); // Make sure to remove a target present multiple times only once\n    // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n    var targetIdx = targets.indexOf(event.target);\n\n    if (targetIdx !== -1) {\n      targets.splice(targetIdx, 1);\n    }\n\n    dragTargetsRef.current = targets;\n\n    if (targets.length > 0) {\n      return;\n    }\n\n    dispatch({\n      type: \"setDraggedFiles\",\n      isDragActive: false,\n      isDragAccept: false,\n      isDragReject: false\n    });\n\n    if (isEvtWithFiles(event) && onDragLeave) {\n      onDragLeave(event);\n    }\n  }, [rootRef, onDragLeave, noDragEventsBubbling]);\n  var setFiles = useCallback(function (files, event) {\n    var acceptedFiles = [];\n    var fileRejections = [];\n    files.forEach(function (file) {\n      var _fileAccepted = fileAccepted(file, acceptAttr),\n          _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n          accepted = _fileAccepted2[0],\n          acceptError = _fileAccepted2[1];\n\n      var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n          _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n          sizeMatch = _fileMatchSize2[0],\n          sizeError = _fileMatchSize2[1];\n\n      var customErrors = validator ? validator(file) : null;\n\n      if (accepted && sizeMatch && !customErrors) {\n        acceptedFiles.push(file);\n      } else {\n        var errors = [acceptError, sizeError];\n\n        if (customErrors) {\n          errors = errors.concat(customErrors);\n        }\n\n        fileRejections.push({\n          file: file,\n          errors: errors.filter(function (e) {\n            return e;\n          })\n        });\n      }\n    });\n\n    if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n      // Reject everything and empty accepted files\n      acceptedFiles.forEach(function (file) {\n        fileRejections.push({\n          file: file,\n          errors: [TOO_MANY_FILES_REJECTION]\n        });\n      });\n      acceptedFiles.splice(0);\n    }\n\n    dispatch({\n      acceptedFiles: acceptedFiles,\n      fileRejections: fileRejections,\n      type: \"setFiles\"\n    });\n\n    if (onDrop) {\n      onDrop(acceptedFiles, fileRejections, event);\n    }\n\n    if (fileRejections.length > 0 && onDropRejected) {\n      onDropRejected(fileRejections, event);\n    }\n\n    if (acceptedFiles.length > 0 && onDropAccepted) {\n      onDropAccepted(acceptedFiles, event);\n    }\n  }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n  var onDropCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [];\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        setFiles(files, event);\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n\n    dispatch({\n      type: \"reset\"\n    });\n  }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n  var openFileDialog = useCallback(function () {\n    // No point to use FS access APIs if context is not secure\n    // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n    if (fsAccessApiWorksRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n      var opts = {\n        multiple: multiple,\n        types: pickerTypes\n      };\n      window.showOpenFilePicker(opts).then(function (handles) {\n        return getFilesFromEvent(handles);\n      }).then(function (files) {\n        setFiles(files, null);\n        dispatch({\n          type: \"closeDialog\"\n        });\n      }).catch(function (e) {\n        // AbortError means the user canceled\n        if (isAbort(e)) {\n          onFileDialogCancelCb(e);\n          dispatch({\n            type: \"closeDialog\"\n          });\n        } else if (isSecurityError(e)) {\n          fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n          // Try using the input\n\n          if (inputRef.current) {\n            inputRef.current.value = null;\n            inputRef.current.click();\n          } else {\n            onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n          }\n        } else {\n          onErrCb(e);\n        }\n      });\n      return;\n    }\n\n    if (inputRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb();\n      inputRef.current.value = null;\n      inputRef.current.click();\n    }\n  }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n  var onKeyDownCb = useCallback(function (event) {\n    // Ignore keyboard events bubbling up the DOM tree\n    if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n      return;\n    }\n\n    if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n      event.preventDefault();\n      openFileDialog();\n    }\n  }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n  var onFocusCb = useCallback(function () {\n    dispatch({\n      type: \"focus\"\n    });\n  }, []);\n  var onBlurCb = useCallback(function () {\n    dispatch({\n      type: \"blur\"\n    });\n  }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n  var onClickCb = useCallback(function () {\n    if (noClick) {\n      return;\n    } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n    // to ensure React can handle state changes\n    // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n    if (isIeOrEdge()) {\n      setTimeout(openFileDialog, 0);\n    } else {\n      openFileDialog();\n    }\n  }, [noClick, openFileDialog]);\n\n  var composeHandler = function composeHandler(fn) {\n    return disabled ? null : fn;\n  };\n\n  var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n    return noKeyboard ? null : composeHandler(fn);\n  };\n\n  var composeDragHandler = function composeDragHandler(fn) {\n    return noDrag ? null : composeHandler(fn);\n  };\n\n  var stopPropagation = function stopPropagation(event) {\n    if (noDragEventsBubbling) {\n      event.stopPropagation();\n    }\n  };\n\n  var getRootProps = useMemo(function () {\n    return function () {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref2$refKey = _ref2.refKey,\n          refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n          role = _ref2.role,\n          onKeyDown = _ref2.onKeyDown,\n          onFocus = _ref2.onFocus,\n          onBlur = _ref2.onBlur,\n          onClick = _ref2.onClick,\n          onDragEnter = _ref2.onDragEnter,\n          onDragOver = _ref2.onDragOver,\n          onDragLeave = _ref2.onDragLeave,\n          onDrop = _ref2.onDrop,\n          rest = _objectWithoutProperties(_ref2, _excluded3);\n\n      return _objectSpread(_objectSpread(_defineProperty({\n        onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n        onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n        onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n        onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n        onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n        onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n        onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n        role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n      }, refKey, rootRef), !disabled && !noKeyboard ? {\n        tabIndex: 0\n      } : {}), rest);\n    };\n  }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n  var onInputElementClick = useCallback(function (event) {\n    event.stopPropagation();\n  }, []);\n  var getInputProps = useMemo(function () {\n    return function () {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref3$refKey = _ref3.refKey,\n          refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n          onChange = _ref3.onChange,\n          onClick = _ref3.onClick,\n          rest = _objectWithoutProperties(_ref3, _excluded4);\n\n      var inputProps = _defineProperty({\n        accept: acceptAttr,\n        multiple: multiple,\n        type: \"file\",\n        style: {\n          display: \"none\"\n        },\n        onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n        tabIndex: -1\n      }, refKey, inputRef);\n\n      return _objectSpread(_objectSpread({}, inputProps), rest);\n    };\n  }, [inputRef, accept, multiple, onDropCb, disabled]);\n  return _objectSpread(_objectSpread({}, state), {}, {\n    isFocused: isFocused && !disabled,\n    getRootProps: getRootProps,\n    getInputProps: getInputProps,\n    rootRef: rootRef,\n    inputRef: inputRef,\n    open: composeHandler(openFileDialog)\n  });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n  /* istanbul ignore next */\n  switch (action.type) {\n    case \"focus\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: true\n      });\n\n    case \"blur\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: false\n      });\n\n    case \"openDialog\":\n      return _objectSpread(_objectSpread({}, initialState), {}, {\n        isFileDialogActive: true\n      });\n\n    case \"closeDialog\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFileDialogActive: false\n      });\n\n    case \"setDraggedFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isDragActive: action.isDragActive,\n        isDragAccept: action.isDragAccept,\n        isDragReject: action.isDragReject\n      });\n\n    case \"setFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        acceptedFiles: action.acceptedFiles,\n        fileRejections: action.fileRejections\n      });\n\n    case \"reset\":\n      return _objectSpread({}, initialState);\n\n    default:\n      return state;\n  }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";"],"names":["d","exports","file","acceptedFiles","acceptedFilesArray","Array","isArray","split","fileName","name","mimeType","type","toLowerCase","baseMimeType","replace","some","validType","trim","charAt","endsWith","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","module","shim","props","propName","componentName","location","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","COMMON_MIME_TYPES","Map","toFileWithPath","path","f","lastIndexOf","ext","pop","get","Object","defineProperty","value","writable","configurable","enumerable","withMimeType","webkitRelativePath","length","FILES_TO_IGNORE","isObject","v","getInputFiles","evt","fromList","target","files","map","getFsHandleFiles","handles","Promise","all","h","getFile","getDataTransferFiles","dt","items","filter","item","kind","toFilePromises","noIgnoredFiles","flatten","indexOf","i","push","webkitGetAsEntry","fromDataTransferItem","entry","isDirectory","fromDirEntry","reduce","acc","getAsFile","reject","fwp","resolve","fromEntry","fromFileEntry","reader","createReader","entries","readEntries","batch","fullPath","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableSpread","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread","arguments","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","call","next","done","_iterableToArrayLimit","_nonIterableRest","o","minLen","n","prototype","toString","slice","constructor","test","len","arr2","getInvalidTypeRejectionErr","accept","messageSuffix","concat","join","code","message","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","size","isPropagationStopped","event","cancelBubble","isEvtWithFiles","dataTransfer","types","onDocumentDragOver","preventDefault","composeEventHandlers","_len","fns","_key","_len2","args","_key2","fn","isMIMEType","isExt","_excluded","_excluded2","_excluded3","_excluded4","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","Dropzone","forwardRef","_ref","ref","children","_useDropzone","useDropzone","open","useImperativeHandle","Fragment","displayName","defaultProps","disabled","getFilesFromEvent","every","Infinity","multiple","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","useFsAccessApi","autoFocus","propTypes","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onError","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","fileRejections","undefined","_defaultProps$props","acceptAttr","useMemo","a","_ref6","_ref7","acceptPropAsAcceptAttr","pickerTypes","description","_ref2","_ref3","ok","console","warn","agg","_ref4","_ref5","pickerOptionsFromAccept","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","useRef","inputRef","_useReducer2","useReducer","reducer","state","dispatch","fsAccessApiWorksRef","window","isSecureContext","onWindowFocus","current","setTimeout","useEffect","addEventListener","removeEventListener","dragTargetsRef","onDocumentDrop","contains","document","focus","onErrCb","useCallback","e","error","onDragEnterCb","persist","stopPropagation","then","fileCount","accepted","sizeMatch","customErrors","allFilesAccepted","catch","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","DOMException","ABORT_ERR","SECURITY_ERR","isSecurityError","click","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","userAgent","navigator","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","onClick","rest","tabIndex","onInputElementClick","getInputProps","_ref3$refKey","onChange","style","display","action"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3795.0386c297.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3795,8876],{98876:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});var r=n(7552),a=n(75785),o=n(68446),l=n(68584),i=n(99546),s=n(49823),c=n(72639),m=n(9555),d=n(36715),u=n(89003);const p=(0,a.n9)()({guide:{pointerEvents:"none",height:"100%",width:1,position:"absolute",zIndex:10},sm:{fontSize:10}}),v=(0,o.observer)((function({model:e,coordX:t}){const{classes:n}=p();return r.createElement(u.A,{open:!0,placement:"top",title:e.views.map((e=>e.pxToBp(t))).map(((e,t)=>r.createElement(d.A,{className:n.sm,key:[JSON.stringify(e),t].join("-")},(0,i.stringify)(e,!0)))),arrow:!0},r.createElement("div",{className:n.guide,style:{left:t,background:"red"}}))})),b=(0,a.n9)()((e=>({rubberband:{height:"100%",background:(0,c.X4)(e.palette.tertiary.main,.7),position:"absolute",zIndex:10,textAlign:"center",overflow:"hidden"},rubberbandControl:{cursor:"crosshair",width:"100%",minHeight:8},rubberbandText:{color:e.palette.tertiary.contrastText},popover:{mouseEvents:"none",cursor:"crosshair"},paper:{paddingLeft:e.spacing(1),paddingRight:e.spacing(1)}}))),f=(0,o.observer)((function({model:e,ControlComponent:t=r.createElement("div",null)}){const[n,a]=(0,r.useState)(),[o,l]=(0,r.useState)(),[c,u]=(0,r.useState)(),[p,f]=(0,r.useState)(),g=(0,r.useRef)(null),E=(0,r.useRef)(null),{classes:h}=b(),y=void 0!==n&&void 0===c;function w(e){e.preventDefault(),e.stopPropagation();const t=e.clientX-e.target.getBoundingClientRect().left;a(t),l(t)}function C(e){const t=e.target;f(e.clientX-t.getBoundingClientRect().left)}function k(){f(void 0),e.views.forEach((e=>{e.setOffsets(void 0,void 0)}))}function N(){u(void 0),a(void 0),l(void 0)}(0,r.useEffect)((()=>{function t(e){if(g.current&&y){const t=e.clientX-g.current.getBoundingClientRect().left;l(t)}}function r(t){if(void 0!==n&&g.current){const{clientX:r,clientY:a}=t,o=r-g.current.getBoundingClientRect().left;u({offsetX:o,clientX:r,clientY:a}),e.views.forEach((e=>{const t=function(e,t){if(void 0===n)return;let r=n,a=e;return a<r&&([r,a]=[a,r]),{leftOffset:t.pxToBp(r),rightOffset:t.pxToBp(a)}}(o,e);if(t){const{leftOffset:n,rightOffset:r}=t;e.setOffsets(n,r)}})),f(void 0)}}return y?(window.addEventListener("mousemove",t),window.addEventListener("mouseup",r),()=>{window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",r)}):()=>{}}),[n,y,e]),(0,r.useEffect)((()=>{!y&&void 0!==o&&void 0!==n&&Math.abs(o-n)<=3&&N()}),[y,o,n]);const M=Boolean(c);if(void 0===n)return r.createElement(r.Fragment,null,void 0!==p?r.createElement(v,{model:e,coordX:p}):null,r.createElement("div",{ref:g,className:h.rubberbandControl,onMouseDown:w,onMouseOut:k,onMouseMove:C},t));const x=c?c.offsetX:o||0,B=x<n?x:n,S=Math.abs(x-n),{views:A}=e,T=A.map((e=>e.pxToBp(B))),O=A.map((e=>e.pxToBp(B+S))),R=A.map((e=>Math.ceil(S*e.bpPerPx)));return r.createElement(r.Fragment,null,E.current?r.createElement(r.Fragment,null,r.createElement(m.Ay,{className:h.popover,classes:{paper:h.paper},open:!0,anchorEl:E.current,anchorOrigin:{vertical:"top",horizontal:"left"},transformOrigin:{vertical:"bottom",horizontal:"right"},keepMounted:!0,disableRestoreFocus:!0},T.map(((e,t)=>r.createElement(d.A,{key:[JSON.stringify(e),t,"left"].join("-")},(0,i.stringify)(e,!0))))),r.createElement(m.Ay,{className:h.popover,classes:{paper:h.paper},open:!0,anchorEl:E.current,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"bottom",horizontal:"left"},keepMounted:!0,disableRestoreFocus:!0},O.map(((e,t)=>r.createElement(d.A,{key:[JSON.stringify(e),t,"right"].join("-")},(0,i.stringify)(e,!0)))))):null,r.createElement("div",{ref:E,className:h.rubberband,style:{left:B,width:S}},r.createElement(d.A,{variant:"h6",className:h.rubberbandText},R.map(((e,t)=>r.createElement(d.A,{key:`${e}_${t}`},`${e.toLocaleString("en-US")}bp`))))),r.createElement("div",{className:h.rubberbandControl,ref:g,onMouseDown:w,onMouseOut:k,onMouseMove:C},t),c?r.createElement(s.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:c.clientX,top:c.clientY},onMenuItemClick:function(e,t){t(),N()},open:M,onClose:N,menuItems:e.rubberBandMenuItems()}):null)}));var g=n(61723),E=n(20529),h=n(17307),y=n(90542),w=n(23758);const C=(0,a.n9)()((()=>({headerBar:{gridArea:"1/1/auto/span 2",display:"flex"},spacer:{flexGrow:1},iconButton:{margin:5},bp:{display:"flex",alignItems:"center",marginLeft:10},searchContainer:{marginLeft:5},searchBox:{display:"flex"}}))),k=(0,o.observer)((({model:e})=>r.createElement(w.A,{menuItems:[{label:"Synteny track selector",onClick:()=>e.activateTrackSelector()},...e.views.map(((e,t)=>({label:`View ${t+1} track selector`,onClick:()=>e.activateTrackSelector()})))]},r.createElement(y.xU,null)))),N=(0,o.observer)((function({model:e}){const{classes:t}=C(),[n,a]=(0,r.useState)(),o=e.views.some((e=>!e.hideHeader));return r.createElement("div",{className:t.headerBar},r.createElement(k,{model:e}),r.createElement(g.A,{onClick:e=>{a(e.currentTarget)},className:t.iconButton},r.createElement(h.A,null)),o?null:e.views.map((e=>r.createElement("div",{key:e.id,className:t.searchBox},r.createElement("div",{className:t.searchContainer},r.createElement(E.Gd,{model:e,showHelp:!1})),r.createElement("div",{className:t.bp},r.createElement(d.A,{variant:"body2",color:"textSecondary",className:t.bp},Math.round(e.coarseTotalBp).toLocaleString("en-US")," bp"))))),r.createElement("div",{className:t.spacer}),n?r.createElement(s.Menu,{anchorEl:n,open:!0,onMenuItemClick:(e,t)=>{t(),a(void 0)},menuItems:e.headerMenuItems(),onClose:()=>{a(void 0)}}):null)})),M=(0,a.n9)()((e=>({container:{display:"grid"},overlay:{zIndex:100,gridArea:"1/1"},content:{gridArea:"1/1",position:"relative"},grid:{display:"grid"},relative:{position:"relative"},rubberbandContainer:{position:"relative",overflow:"hidden"},rubberbandDiv:{width:"100%",background:e.palette.action.disabledBackground,height:15,"&:hover":{background:e.palette.action.selected}}}))),x=(0,o.observer)((({model:e})=>{const{classes:t}=M();return r.createElement(r.Fragment,null,e.tracks.map((n=>{const[a]=n.displays,{RenderingComponent:o}=a,i=(0,l.getConf)(n,"trackId");return o?r.createElement("div",{className:t.overlay,key:i,style:{height:e.middleComparativeHeight,overflow:"hidden"}},r.createElement(o,{model:a})):null})))})),B=(0,o.observer)((({model:e})=>{const{classes:t}=M(),{views:n}=e,{pluginManager:a}=(0,i.getEnv)(e),{ReactComponent:o}=a.getViewType(n[0].type);return r.createElement("div",{className:t.rubberbandContainer},r.createElement(N,{model:e}),r.createElement(f,{model:e,ControlComponent:r.createElement("div",{className:t.rubberbandDiv})}),r.createElement("div",{className:t.container},r.createElement(o,{model:n[0]}),r.createElement("div",{className:t.grid},r.createElement(x,{model:e})),r.createElement(s.ResizeHandle,{onDrag:t=>e.setMiddleComparativeHeight(e.middleComparativeHeight+t),style:{height:4,background:"#ccc"}}),r.createElement(o,{model:n[1]})))})),S=(0,o.observer)((({model:e})=>{const{classes:t}=M(),{views:n}=e,{pluginManager:a}=(0,i.getEnv)(e);return r.createElement("div",{className:t.rubberbandContainer},r.createElement(N,{model:e}),r.createElement(f,{model:e,ControlComponent:r.createElement("div",{className:t.rubberbandDiv})}),r.createElement("div",{className:t.container},r.createElement("div",{className:t.content},r.createElement("div",{className:t.relative},n.map((e=>{const{ReactComponent:t}=a.getViewType(e.type);return r.createElement(t,{key:e.id,model:e})}))),r.createElement(x,{model:e}))))})),A=(0,o.observer)((function(e){const{model:t}=e;return t.tracks.some((({displays:e})=>e.some((e=>(0,l.getConf)(e,"middle")))))?r.createElement(B,e):r.createElement(S,e)}))},13795:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var r=n(7552),a=n(68446),o=n(98876);const l=(0,r.lazy)((()=>n.e(8301).then(n.bind(n,682)))),i=(0,a.observer)((({model:e})=>e.initialized?r.createElement(o.default,{model:e}):r.createElement(l,{model:e})))}}]);
+//# sourceMappingURL=3795.0386c297.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3795.0386c297.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3795.0386c297.chunk.js","mappings":"4QASA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,MAAO,CACLC,cAAe,OACfC,OAAQ,OACRC,MAAO,EACPC,SAAU,WACVC,OAAQ,IAEVC,GAAI,CACFC,SAAU,MAuCd,GAnCsBC,EAAAA,EAAAA,WAAS,UAAU,MACvCC,EAAK,OACLC,IAKA,MAAM,QAAEC,GAAYb,IACpB,OACEc,EAAAA,cAACC,EAAAA,EAAO,CACNC,MAAI,EACJC,UAAU,MACVC,MAAOP,EAAMQ,MACVC,KAAIC,GAAQA,EAAKC,OAAOV,KACxBQ,KAAI,CAACG,EAAKC,IACTV,EAAAA,cAACW,EAAAA,EAAU,CACTC,UAAWb,EAAQL,GACnBmB,IAAK,CAACC,KAAKC,UAAUN,GAAMC,GAAKM,KAAK,OAEpCD,EAAAA,EAAAA,WAAUN,GAAK,MAGtBQ,OAAK,GAELjB,EAAAA,cAAA,OACEY,UAAWb,EAAQX,MACnB8B,MAAO,CACLC,KAAMrB,EACNsB,WAAY,SAKtB,ICxCMlC,GAAYC,EAAAA,EAAAA,KAAAA,EAAakC,IACtB,CACLC,WAAY,CACVhC,OAAQ,OACR8B,YAAYG,EAAAA,EAAAA,IAAMF,EAAMG,QAAQC,SAASC,KAAM,IAC/ClC,SAAU,WACVC,OAAQ,GACRkC,UAAW,SACXC,SAAU,UAEZC,kBAAmB,CACjBC,OAAQ,YACRvC,MAAO,OACPwC,UAAW,GAEbC,eAAgB,CACdC,MAAOZ,EAAMG,QAAQC,SAASS,cAEhCC,QAAS,CACPC,YAAa,OACbN,OAAQ,aAEVO,MAAO,CACLC,YAAajB,EAAMkB,QAAQ,GAC3BC,aAAcnB,EAAMkB,QAAQ,QAwPlC,GAnPoC3C,EAAAA,EAAAA,WAAS,UAAoB,MAC/DC,EAAK,iBACL4C,EAAmBzC,EAAAA,cAAA,cAKnB,MAAO0C,EAAQC,IAAaC,EAAAA,EAAAA,aACrBC,EAAUC,IAAeF,EAAAA,EAAAA,aAIzBG,EAAgBC,IAAqBJ,EAAAA,EAAAA,aAKrCK,EAAQC,IAAaN,EAAAA,EAAAA,YACtBO,GAAcC,EAAAA,EAAAA,QAAuB,MACrCC,GAAgBD,EAAAA,EAAAA,QAAuB,OACvC,QAAErD,GAAYb,IACdoE,OAA2BC,IAAXb,QAA2Ca,IAAnBR,EAuE9C,SAASS,EAAUC,GACjBA,EAAMC,iBACND,EAAME,kBACN,MAAMC,EACJH,EAAMI,QACLJ,EAAMK,OAA0BC,wBAAwB5C,KAC3DwB,EAAUiB,GACVd,EAAYc,EACd,CAEA,SAASI,EAAUP,GACjB,MAAMK,EAASL,EAAMK,OACrBZ,EAAUO,EAAMI,QAAUC,EAAOC,wBAAwB5C,KAC3D,CAEA,SAAS8C,IACPf,OAAUK,GACV1D,EAAMQ,MAAM6D,SAAQ3D,IAClBA,EAAK4D,gBAAWZ,OAAWA,EAAU,GAEzC,CAEA,SAASa,IACPpB,OAAkBO,GAClBZ,OAAUY,GACVT,OAAYS,EACd,EA/FAc,EAAAA,EAAAA,YAAU,KAiBR,SAASC,EAAgBb,GACvB,GAAIN,EAAYoB,SAAWjB,EAAe,CACxC,MAAMM,EACJH,EAAMI,QAAUV,EAAYoB,QAAQR,wBAAwB5C,KAC9D2B,EAAYc,EACd,CACF,CAEA,SAASY,EAAcf,GACrB,QAAeF,IAAXb,GAAwBS,EAAYoB,QAAS,CAC/C,MAAM,QAAEV,EAAO,QAAEY,GAAYhB,EAEvBiB,EAAUb,EADJV,EAAYoB,QACMR,wBAAwB5C,KAGtD6B,EAAkB,CAChB0B,UACAb,UACAY,YAEF5E,EAAMQ,MAAM6D,SAAQ3D,IAClB,MAAMoE,EArCZ,SAAwBD,EAAiBnE,GACvC,QAAegD,IAAXb,EACF,OAEF,IAAIkC,EAASlC,EACTmC,EAAUH,EAQd,OANIG,EAAUD,KACVA,EAAQC,GAAW,CAACA,EAASD,IAK1B,CAAEE,WAHUvE,EAAKC,OAAOoE,GAGVG,YAFDxE,EAAKC,OAAOqE,GAGlC,CAuBmBG,CAAeN,EAASnE,GACrC,GAAIoE,EAAM,CACR,MAAM,WAAEG,EAAU,YAAEC,GAAgBJ,EACpCpE,EAAK4D,WAAWW,EAAYC,EAC9B,KAEF7B,OAAUK,EACZ,CACF,CACA,OAAID,GACF2B,OAAOC,iBAAiB,YAAaZ,GACrCW,OAAOC,iBAAiB,UAAWV,GAC5B,KACLS,OAAOE,oBAAoB,YAAab,GACxCW,OAAOE,oBAAoB,UAAWX,EAAc,GAGjD,MAAQ,GACd,CAAC9B,EAAQY,EAAezD,KAE3BwE,EAAAA,EAAAA,YAAU,MAELf,QACYC,IAAbV,QACWU,IAAXb,GACA0C,KAAKC,IAAIxC,EAAWH,IAAW,GAE/B0B,GACF,GACC,CAACd,EAAeT,EAAUH,IA8B7B,MAAMxC,EAAOoF,QAAQvC,GAOrB,QAAeQ,IAAXb,EACF,OACE1C,EAAAA,cAAAA,EAAAA,SAAA,UACcuD,IAAXN,EACCjD,EAAAA,cAACuF,EAAa,CAAC1F,MAAOA,EAAOC,OAAQmD,IACnC,KACJjD,EAAAA,cAAA,OACEwF,IAAKrC,EACLvC,UAAWb,EAAQ8B,kBACnB4D,YAAajC,EACbkC,WAAYzB,EACZ0B,YAAa3B,GAEZvB,IAMT,MAAMmD,EAAQ7C,EAAiBA,EAAe2B,QAAU7B,GAAY,EAC9D1B,EAAOyE,EAAQlD,EAASkD,EAAQlD,EAChCnD,EAAQ6F,KAAKC,IAAIO,EAAQlD,IACzB,MAAErC,GAAUR,EACZgG,EAAexF,EAAMC,KAAIC,GAAQA,EAAKC,OAAOW,KAC7C2E,EAAgBzF,EAAMC,KAAIC,GAAQA,EAAKC,OAAOW,EAAO5B,KACrDwG,EAAkB1F,EAAMC,KAAIC,GAAQ6E,KAAKY,KAAKzG,EAAQgB,EAAK0F,WACjE,OACEjG,EAAAA,cAAAA,EAAAA,SAAA,KACGqD,EAAckB,QACbvE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACkG,EAAAA,GAAO,CACNtF,UAAWb,EAAQoC,QACnBpC,QAAS,CAAEsC,MAAOtC,EAAQsC,OAC1BnC,MAAI,EACJiG,SAAU9C,EAAckB,QACxB6B,aAAc,CACZC,SAAU,MACVC,WAAY,QAEdC,gBAAiB,CACfF,SAAU,SACVC,WAAY,SAEdE,aAAW,EACXC,qBAAmB,GAElBZ,EAAavF,KAAI,CAACoG,EAAGhG,IACpBV,EAAAA,cAACW,EAAAA,EAAU,CAACE,IAAK,CAACC,KAAKC,UAAU2F,GAAIhG,EAAK,QAAQM,KAAK,OACpDD,EAAAA,EAAAA,WAAU2F,GAAG,OAIpB1G,EAAAA,cAACkG,EAAAA,GAAO,CACNtF,UAAWb,EAAQoC,QACnBpC,QAAS,CAAEsC,MAAOtC,EAAQsC,OAC1BnC,MAAI,EACJiG,SAAU9C,EAAckB,QACxB6B,aAAc,CACZC,SAAU,MACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,SACVC,WAAY,QAEdE,aAAW,EACXC,qBAAmB,GAElBX,EAAcxF,KAAI,CAACoG,EAAGhG,IACrBV,EAAAA,cAACW,EAAAA,EAAU,CAACE,IAAK,CAACC,KAAKC,UAAU2F,GAAIhG,EAAK,SAASM,KAAK,OACrDD,EAAAA,EAAAA,WAAU2F,GAAG,QAKpB,KACJ1G,EAAAA,cAAA,OACEwF,IAAKnC,EACLzC,UAAWb,EAAQuB,WACnBJ,MAAO,CAAEC,OAAM5B,UAEfS,EAAAA,cAACW,EAAAA,EAAU,CAACgG,QAAQ,KAAK/F,UAAWb,EAAQiC,gBACzC+D,EAAgBzF,KAAI,CAACsG,EAAGC,IAEvB7G,EAAAA,cAACW,EAAAA,EAAU,CAACE,IAAK,GAAG+F,KAAKC,KACtB,GAAGD,EAAEE,eAAe,kBAK7B9G,EAAAA,cAAA,OACEY,UAAWb,EAAQ8B,kBACnB2D,IAAKrC,EACLsC,YAAajC,EACbkC,WAAYzB,EACZ0B,YAAa3B,GAEZvB,GAEFM,EACC/C,EAAAA,cAAC+G,EAAAA,KAAI,CACHC,gBAAgB,iBAChBjE,eAAgB,CACd5B,KAAM4B,EAAec,QACrBoD,IAAKlE,EAAe0B,SAEtByC,gBA/GR,SAA6BC,EAAYC,GACvCA,IACAhD,GACF,EA6GQlE,KAAMA,EACNmH,QAASjD,EACTkD,UAAWzH,EAAM0H,wBAEjB,KAGV,I,2DC5QA,MAAMrI,GAAYC,EAAAA,EAAAA,KAAAA,EAAa,KAAM,CACnCqI,UAAW,CACTC,SAAU,kBACVC,QAAS,QAEXC,OAAQ,CACNC,SAAU,GAEZC,WAAY,CACVC,OAAQ,GAEVC,GAAI,CACFL,QAAS,OACTM,WAAY,SACZC,WAAY,IAEdC,gBAAiB,CACfD,WAAY,GAEdE,UAAW,CACTT,QAAS,YAIPU,GAAgBxI,EAAAA,EAAAA,WAAS,EAAGC,WAE9BG,EAAAA,cAACqI,EAAAA,EAAmB,CAClBf,UAAW,CACT,CACEgB,MAAO,yBACPC,QAASA,IAAM1I,EAAM2I,4BAEpB3I,EAAMQ,MAAMC,KAAI,CAACC,EAAMG,KAAQ,CAChC4H,MAAO,QAAQ5H,EAAM,mBACrB6H,QAASA,IAAMhI,EAAKiI,8BAIxBxI,EAAAA,cAACyI,EAAAA,GAAiB,SA4DxB,GAvDe7I,EAAAA,EAAAA,WAAS,UAAU,MAAEC,IAClC,MAAM,QAAEE,GAAYb,KACbwJ,EAAcC,IAAmB/F,EAAAA,EAAAA,YAClCgG,EAAiB/I,EAAMQ,MAAMwI,MAAKtI,IAASA,EAAKuI,aACtD,OACE9I,EAAAA,cAAA,OAAKY,UAAWb,EAAQyH,WACtBxH,EAAAA,cAACoI,EAAa,CAACvI,MAAOA,IAEtBG,EAAAA,cAAC+I,EAAAA,EAAU,CACTR,QAAS9E,IACPkF,EAAgBlF,EAAMuF,cAAc,EAEtCpI,UAAWb,EAAQ8H,YAEnB7H,EAAAA,cAACiJ,EAAAA,EAAY,OAEbL,EAiBE,KAhBA/I,EAAMQ,MAAMC,KAAIC,GACdP,EAAAA,cAAA,OAAKa,IAAKN,EAAK2I,GAAItI,UAAWb,EAAQoI,WACpCnI,EAAAA,cAAA,OAAKY,UAAWb,EAAQmI,iBACtBlI,EAAAA,cAACmJ,EAAAA,GAAS,CAACtJ,MAAOU,EAAM6I,UAAU,KAEpCpJ,EAAAA,cAAA,OAAKY,UAAWb,EAAQgI,IACtB/H,EAAAA,cAACW,EAAAA,EAAU,CACTgG,QAAQ,QACR1E,MAAM,gBACNrB,UAAWb,EAAQgI,IAElB3C,KAAKiE,MAAM9I,EAAK+I,eAAexC,eAAe,SAAS,WAOpE9G,EAAAA,cAAA,OAAKY,UAAWb,EAAQ4H,SAEvBe,EACC1I,EAAAA,cAAC+G,EAAAA,KAAI,CACHZ,SAAUuC,EACVxI,MAAI,EACJgH,gBAAiBA,CAACqC,EAAQnC,KACxBA,IACAuB,OAAgBpF,EAAU,EAE5B+D,UAAWzH,EAAM2J,kBACjBnC,QAASA,KACPsB,OAAgBpF,EAAU,IAG5B,KAGV,ICrGMrE,GAAYC,EAAAA,EAAAA,KAAAA,EAAakC,IAAS,CACtCoI,UAAW,CACT/B,QAAS,QAEXgC,QAAS,CACPjK,OAAQ,IACRgI,SAAU,OAEZkC,QAAS,CACPlC,SAAU,MACVjI,SAAU,YAEZoK,KAAM,CACJlC,QAAS,QAEXmC,SAAU,CACRrK,SAAU,YAKZsK,oBAAqB,CACnBtK,SAAU,WACVoC,SAAU,UAGZmI,cAAe,CACbxK,MAAO,OACP6B,WAAYC,EAAMG,QAAQwI,OAAOC,mBACjC3K,OAAQ,GACR,UAAW,CACT8B,WAAYC,EAAMG,QAAQwI,OAAOE,eAOjCC,GAAWvK,EAAAA,EAAAA,WAAS,EAAGC,YAC3B,MAAM,QAAEE,GAAYb,IACpB,OACEc,EAAAA,cAAAA,EAAAA,SAAA,KACGH,EAAMuK,OAAO9J,KAAI+J,IAChB,MAAO3C,GAAW2C,EAAMC,UAClB,mBAAEC,GAAuB7C,EACzB8C,GAAUC,EAAAA,EAAAA,SAAQJ,EAAO,WAC/B,OAAOE,EACLvK,EAAAA,cAAA,OACEY,UAAWb,EAAQ2J,QACnB7I,IAAK2J,EACLtJ,MAAO,CACL5B,OAAQO,EAAM6K,wBACd9I,SAAU,WAGZ5B,EAAAA,cAACuK,EAAkB,CAAC1K,MAAO6H,KAE3B,IAAI,IAET,IAKDiD,GAAwB/K,EAAAA,EAAAA,WAAS,EAAGC,YACxC,MAAM,QAAEE,GAAYb,KACd,MAAEmB,GAAUR,GACZ,cAAE+K,IAAkBC,EAAAA,EAAAA,QAAOhL,IAC3B,eAAEiL,GAAmBF,EAAcG,YAAY1K,EAAM,GAAI2K,MAE/D,OACEhL,EAAAA,cAAA,OAAKY,UAAWb,EAAQ+J,qBACtB9J,EAAAA,cAACiL,EAAM,CAACpL,MAAOA,IACfG,EAAAA,cAACkL,EAAU,CACTrL,MAAOA,EACP4C,iBAAkBzC,EAAAA,cAAA,OAAKY,UAAWb,EAAQgK,kBAE5C/J,EAAAA,cAAA,OAAKY,UAAWb,EAAQ0J,WACtBzJ,EAAAA,cAAC8K,EAAc,CAACjL,MAAOQ,EAAM,KAC7BL,EAAAA,cAAA,OAAKY,UAAWb,EAAQ6J,MACtB5J,EAAAA,cAACmK,EAAQ,CAACtK,MAAOA,KAEnBG,EAAAA,cAACmL,EAAAA,aAAY,CACXC,OAAQxE,GACN/G,EAAMwL,2BAA2BxL,EAAM6K,wBAA0B9D,GAEnE1F,MAAO,CACL5B,OAAQ,EACR8B,WAAY,UAGhBpB,EAAAA,cAAC8K,EAAc,CAACjL,MAAOQ,EAAM,MAE3B,IAGJiL,GAAyB1L,EAAAA,EAAAA,WAAS,EAAGC,YACzC,MAAM,QAAEE,GAAYb,KACd,MAAEmB,GAAUR,GACZ,cAAE+K,IAAkBC,EAAAA,EAAAA,QAAOhL,GACjC,OACEG,EAAAA,cAAA,OAAKY,UAAWb,EAAQ+J,qBACtB9J,EAAAA,cAACiL,EAAM,CAACpL,MAAOA,IACfG,EAAAA,cAACkL,EAAU,CACTrL,MAAOA,EACP4C,iBAAkBzC,EAAAA,cAAA,OAAKY,UAAWb,EAAQgK,kBAG5C/J,EAAAA,cAAA,OAAKY,UAAWb,EAAQ0J,WACtBzJ,EAAAA,cAAA,OAAKY,UAAWb,EAAQ4J,SACtB3J,EAAAA,cAAA,OAAKY,UAAWb,EAAQ8J,UACrBxJ,EAAMC,KAAIC,IACT,MAAM,eAAEuK,GAAmBF,EAAcG,YAAYxK,EAAKyK,MAC1D,OAAOhL,EAAAA,cAAC8K,EAAc,CAACjK,IAAKN,EAAK2I,GAAIrJ,MAAOU,GAAQ,KAGxDP,EAAAA,cAACmK,EAAQ,CAACtK,MAAOA,MAGjB,IAsBV,GAlB8BD,EAAAA,EAAAA,WAAS,SAAU2L,GAI/C,MAAM,MAAE1L,GAAU0L,EAOlB,OALe1L,EAAMuK,OAAOvB,MAAK,EAAGyB,cAClCA,EAASzB,MAAM2C,IACbf,EAAAA,EAAAA,SAAQe,EAAG,cAIbxL,EAAAA,cAAC2K,EAA0BY,GAE3BvL,EAAAA,cAACsL,EAA2BC,EAEhC,G,oFChJA,MAAME,GAAaC,EAAAA,EAAAA,OAAK,IAAM,gCAY9B,GAR0B9L,EAAAA,EAAAA,WAAS,EAAGC,WAC5BA,EAAM8L,YAGZ3L,EAAAA,cAAC4L,EAAAA,QAA8B,CAAC/L,MAAOA,IAFvCG,EAAAA,cAACyL,EAAU,CAAC5L,MAAOA,K","sources":["../../../plugins/linear-comparative-view/src/LinearComparativeView/components/VerticalGuide.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/Rubberband.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/Header.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/LinearSyntenyView.tsx"],"sourcesContent":["import React from 'react'\nimport { Tooltip, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { stringify } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\nimport { LinearComparativeViewModel } from '../model'\n\ntype LCV = LinearComparativeViewModel\n\nconst useStyles = makeStyles()({\n  guide: {\n    pointerEvents: 'none',\n    height: '100%',\n    width: 1,\n    position: 'absolute',\n    zIndex: 10,\n  },\n  sm: {\n    fontSize: 10,\n  },\n})\n\nconst VerticalGuide = observer(function ({\n  model,\n  coordX,\n}: {\n  model: LCV\n  coordX: number\n}) {\n  const { classes } = useStyles()\n  return (\n    <Tooltip\n      open\n      placement=\"top\"\n      title={model.views\n        .map(view => view.pxToBp(coordX))\n        .map((elt, idx) => (\n          <Typography\n            className={classes.sm}\n            key={[JSON.stringify(elt), idx].join('-')}\n          >\n            {stringify(elt, true)}\n          </Typography>\n        ))}\n      arrow\n    >\n      <div\n        className={classes.guide}\n        style={{\n          left: coordX,\n          background: 'red',\n        }}\n      />\n    </Tooltip>\n  )\n})\n\nexport default VerticalGuide\n","import React, { useRef, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Popover, Typography, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { stringify } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport VerticalGuide from './VerticalGuide'\n\ntype LCV = LinearComparativeViewModel\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => {\n  return {\n    rubberband: {\n      height: '100%',\n      background: alpha(theme.palette.tertiary.main, 0.7),\n      position: 'absolute',\n      zIndex: 10,\n      textAlign: 'center',\n      overflow: 'hidden',\n    },\n    rubberbandControl: {\n      cursor: 'crosshair',\n      width: '100%',\n      minHeight: 8,\n    },\n    rubberbandText: {\n      color: theme.palette.tertiary.contrastText,\n    },\n    popover: {\n      mouseEvents: 'none',\n      cursor: 'crosshair',\n    },\n    paper: {\n      paddingLeft: theme.spacing(1),\n      paddingRight: theme.spacing(1),\n    },\n  }\n})\n\nconst LinearComparativeRubberband = observer(function Rubberband({\n  model,\n  ControlComponent = <div />,\n}: {\n  model: LCV\n  ControlComponent?: React.ReactElement\n}) {\n  const [startX, setStartX] = useState<number>()\n  const [currentX, setCurrentX] = useState<number>()\n\n  // clientX and clientY used for anchorPosition for menu\n  // offsetX used for calculations about width of selection\n  const [anchorPosition, setAnchorPosition] = useState<{\n    offsetX: number\n    clientX: number\n    clientY: number\n  }>()\n  const [guideX, setGuideX] = useState<number>()\n  const controlsRef = useRef<HTMLDivElement>(null)\n  const rubberbandRef = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n  const mouseDragging = startX !== undefined && anchorPosition === undefined\n\n  useEffect(() => {\n    function computeOffsets(offsetX: number, view: LGV) {\n      if (startX === undefined) {\n        return\n      }\n      let leftPx = startX\n      let rightPx = offsetX\n      // handles clicking and dragging to the left\n      if (rightPx < leftPx) {\n        ;[leftPx, rightPx] = [rightPx, leftPx]\n      }\n      const leftOffset = view.pxToBp(leftPx)\n      const rightOffset = view.pxToBp(rightPx)\n\n      return { leftOffset, rightOffset }\n    }\n\n    function globalMouseMove(event: MouseEvent) {\n      if (controlsRef.current && mouseDragging) {\n        const relativeX =\n          event.clientX - controlsRef.current.getBoundingClientRect().left\n        setCurrentX(relativeX)\n      }\n    }\n\n    function globalMouseUp(event: MouseEvent) {\n      if (startX !== undefined && controlsRef.current) {\n        const { clientX, clientY } = event\n        const ref = controlsRef.current\n        const offsetX = clientX - ref.getBoundingClientRect().left\n        // as stated above, store both clientX/Y and offsetX for different\n        // purposes\n        setAnchorPosition({\n          offsetX,\n          clientX,\n          clientY,\n        })\n        model.views.forEach(view => {\n          const args = computeOffsets(offsetX, view)\n          if (args) {\n            const { leftOffset, rightOffset } = args\n            view.setOffsets(leftOffset, rightOffset)\n          }\n        })\n        setGuideX(undefined)\n      }\n    }\n    if (mouseDragging) {\n      window.addEventListener('mousemove', globalMouseMove)\n      window.addEventListener('mouseup', globalMouseUp)\n      return () => {\n        window.removeEventListener('mousemove', globalMouseMove)\n        window.removeEventListener('mouseup', globalMouseUp)\n      }\n    }\n    return () => {}\n  }, [startX, mouseDragging, model])\n\n  useEffect(() => {\n    if (\n      !mouseDragging &&\n      currentX !== undefined &&\n      startX !== undefined &&\n      Math.abs(currentX - startX) <= 3\n    ) {\n      handleClose()\n    }\n  }, [mouseDragging, currentX, startX])\n\n  function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n    event.preventDefault()\n    event.stopPropagation()\n    const relativeX =\n      event.clientX -\n      (event.target as HTMLDivElement).getBoundingClientRect().left\n    setStartX(relativeX)\n    setCurrentX(relativeX)\n  }\n\n  function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n    const target = event.target as HTMLDivElement\n    setGuideX(event.clientX - target.getBoundingClientRect().left)\n  }\n\n  function mouseOut() {\n    setGuideX(undefined)\n    model.views.forEach(view => {\n      view.setOffsets(undefined, undefined)\n    })\n  }\n\n  function handleClose() {\n    setAnchorPosition(undefined)\n    setStartX(undefined)\n    setCurrentX(undefined)\n  }\n\n  const open = Boolean(anchorPosition)\n\n  function handleMenuItemClick(_: unknown, callback: () => void) {\n    callback()\n    handleClose()\n  }\n\n  if (startX === undefined) {\n    return (\n      <>\n        {guideX !== undefined ? (\n          <VerticalGuide model={model} coordX={guideX} />\n        ) : null}\n        <div\n          ref={controlsRef}\n          className={classes.rubberbandControl}\n          onMouseDown={mouseDown}\n          onMouseOut={mouseOut}\n          onMouseMove={mouseMove}\n        >\n          {ControlComponent}\n        </div>\n      </>\n    )\n  }\n\n  const right = anchorPosition ? anchorPosition.offsetX : currentX || 0\n  const left = right < startX ? right : startX\n  const width = Math.abs(right - startX)\n  const { views } = model\n  const leftBpOffset = views.map(view => view.pxToBp(left))\n  const rightBpOffset = views.map(view => view.pxToBp(left + width))\n  const numOfBpSelected = views.map(view => Math.ceil(width * view.bpPerPx))\n  return (\n    <>\n      {rubberbandRef.current ? (\n        <>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={rubberbandRef.current}\n            anchorOrigin={{\n              vertical: 'top',\n              horizontal: 'left',\n            }}\n            transformOrigin={{\n              vertical: 'bottom',\n              horizontal: 'right',\n            }}\n            keepMounted\n            disableRestoreFocus\n          >\n            {leftBpOffset.map((l, idx) => (\n              <Typography key={[JSON.stringify(l), idx, 'left'].join('-')}>\n                {stringify(l, true)}\n              </Typography>\n            ))}\n          </Popover>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={rubberbandRef.current}\n            anchorOrigin={{\n              vertical: 'top',\n              horizontal: 'right',\n            }}\n            transformOrigin={{\n              vertical: 'bottom',\n              horizontal: 'left',\n            }}\n            keepMounted\n            disableRestoreFocus\n          >\n            {rightBpOffset.map((l, idx) => (\n              <Typography key={[JSON.stringify(l), idx, 'right'].join('-')}>\n                {stringify(l, true)}\n              </Typography>\n            ))}\n          </Popover>\n        </>\n      ) : null}\n      <div\n        ref={rubberbandRef}\n        className={classes.rubberband}\n        style={{ left, width }}\n      >\n        <Typography variant=\"h6\" className={classes.rubberbandText}>\n          {numOfBpSelected.map((n, i) => (\n            /* biome-ignore lint/suspicious/noArrayIndexKey: */\n            <Typography key={`${n}_${i}`}>\n              {`${n.toLocaleString('en-US')}bp`}\n            </Typography>\n          ))}\n        </Typography>\n      </div>\n      <div\n        className={classes.rubberbandControl}\n        ref={controlsRef}\n        onMouseDown={mouseDown}\n        onMouseOut={mouseOut}\n        onMouseMove={mouseMove}\n      >\n        {ControlComponent}\n      </div>\n      {anchorPosition ? (\n        <Menu\n          anchorReference=\"anchorPosition\"\n          anchorPosition={{\n            left: anchorPosition.clientX,\n            top: anchorPosition.clientY,\n          }}\n          onMenuItemClick={handleMenuItemClick}\n          open={open}\n          onClose={handleClose}\n          menuItems={model.rubberBandMenuItems()}\n        />\n      ) : null}\n    </>\n  )\n})\n\nexport default LinearComparativeRubberband\n","import React, { useState } from 'react'\nimport { IconButton, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { SearchBox } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\nimport { Menu } from '@jbrowse/core/ui'\n\n// icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\ntype LCV = LinearComparativeViewModel\n\nconst useStyles = makeStyles()(() => ({\n  headerBar: {\n    gridArea: '1/1/auto/span 2',\n    display: 'flex',\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n  iconButton: {\n    margin: 5,\n  },\n  bp: {\n    display: 'flex',\n    alignItems: 'center',\n    marginLeft: 10,\n  },\n  searchContainer: {\n    marginLeft: 5,\n  },\n  searchBox: {\n    display: 'flex',\n  },\n}))\n\nconst TrackSelector = observer(({ model }: { model: LCV }) => {\n  return (\n    <CascadingMenuButton\n      menuItems={[\n        {\n          label: 'Synteny track selector',\n          onClick: () => model.activateTrackSelector(),\n        },\n        ...model.views.map((view, idx) => ({\n          label: `View ${idx + 1} track selector`,\n          onClick: () => view.activateTrackSelector(),\n        })),\n      ]}\n    >\n      <TrackSelectorIcon />\n    </CascadingMenuButton>\n  )\n})\n\nconst Header = observer(function ({ model }: { model: LCV }) {\n  const { classes } = useStyles()\n  const [menuAnchorEl, setMenuAnchorEl] = useState<HTMLElement>()\n  const anyShowHeaders = model.views.some(view => !view.hideHeader)\n  return (\n    <div className={classes.headerBar}>\n      <TrackSelector model={model} />\n\n      <IconButton\n        onClick={event => {\n          setMenuAnchorEl(event.currentTarget)\n        }}\n        className={classes.iconButton}\n      >\n        <MoreVertIcon />\n      </IconButton>\n      {!anyShowHeaders\n        ? model.views.map(view => (\n            <div key={view.id} className={classes.searchBox}>\n              <div className={classes.searchContainer}>\n                <SearchBox model={view} showHelp={false} />\n              </div>\n              <div className={classes.bp}>\n                <Typography\n                  variant=\"body2\"\n                  color=\"textSecondary\"\n                  className={classes.bp}\n                >\n                  {Math.round(view.coarseTotalBp).toLocaleString('en-US')} bp\n                </Typography>\n              </div>\n            </div>\n          ))\n        : null}\n\n      <div className={classes.spacer} />\n\n      {menuAnchorEl ? (\n        <Menu\n          anchorEl={menuAnchorEl}\n          open\n          onMenuItemClick={(_event, callback) => {\n            callback()\n            setMenuAnchorEl(undefined)\n          }}\n          menuItems={model.headerMenuItems()}\n          onClose={() => {\n            setMenuAnchorEl(undefined)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default Header\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getEnv } from '@jbrowse/core/util'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport Rubberband from './Rubberband'\nimport Header from './Header'\n\nconst useStyles = makeStyles()(theme => ({\n  container: {\n    display: 'grid',\n  },\n  overlay: {\n    zIndex: 100,\n    gridArea: '1/1',\n  },\n  content: {\n    gridArea: '1/1',\n    position: 'relative',\n  },\n  grid: {\n    display: 'grid',\n  },\n  relative: {\n    position: 'relative',\n  },\n\n  // this helps keep the vertical guide inside the parent view container,\n  // similar style exists in the single LGV's trackscontainer\n  rubberbandContainer: {\n    position: 'relative',\n    overflow: 'hidden',\n  },\n\n  rubberbandDiv: {\n    width: '100%',\n    background: theme.palette.action.disabledBackground,\n    height: 15,\n    '&:hover': {\n      background: theme.palette.action.selected,\n    },\n  },\n}))\n\ntype LCV = LinearComparativeViewModel\n\nconst Overlays = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  return (\n    <>\n      {model.tracks.map(track => {\n        const [display] = track.displays\n        const { RenderingComponent } = display\n        const trackId = getConf(track, 'trackId')\n        return RenderingComponent ? (\n          <div\n            className={classes.overlay}\n            key={trackId}\n            style={{\n              height: model.middleComparativeHeight,\n              overflow: 'hidden',\n            }}\n          >\n            <RenderingComponent model={display} />\n          </div>\n        ) : null\n      })}\n    </>\n  )\n})\n\n// The comparative is in the middle of the views\nconst MiddleComparativeView = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  const { views } = model\n  const { pluginManager } = getEnv(model)\n  const { ReactComponent } = pluginManager.getViewType(views[0]!.type)!\n\n  return (\n    <div className={classes.rubberbandContainer}>\n      <Header model={model} />\n      <Rubberband\n        model={model}\n        ControlComponent={<div className={classes.rubberbandDiv} />}\n      />\n      <div className={classes.container}>\n        <ReactComponent model={views[0]} />\n        <div className={classes.grid}>\n          <Overlays model={model} />\n        </div>\n        <ResizeHandle\n          onDrag={n =>\n            model.setMiddleComparativeHeight(model.middleComparativeHeight + n)\n          }\n          style={{\n            height: 4,\n            background: '#ccc',\n          }}\n        />\n        <ReactComponent model={views[1]} />\n      </div>\n    </div>\n  )\n})\nconst OverlayComparativeView = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  const { views } = model\n  const { pluginManager } = getEnv(model)\n  return (\n    <div className={classes.rubberbandContainer}>\n      <Header model={model} />\n      <Rubberband\n        model={model}\n        ControlComponent={<div className={classes.rubberbandDiv} />}\n      />\n\n      <div className={classes.container}>\n        <div className={classes.content}>\n          <div className={classes.relative}>\n            {views.map(view => {\n              const { ReactComponent } = pluginManager.getViewType(view.type)!\n              return <ReactComponent key={view.id} model={view} />\n            })}\n          </div>\n          <Overlays model={model} />\n        </div>\n      </div>\n    </div>\n  )\n})\n\nconst LinearComparativeView = observer(function (props: {\n  ExtraButtons?: React.ReactNode\n  model: LCV\n}) {\n  const { model } = props\n\n  const middle = model.tracks.some(({ displays }) =>\n    displays.some((d: { configuration: AnyConfigurationModel }) =>\n      getConf(d, 'middle'),\n    ),\n  )\n  return middle ? (\n    <MiddleComparativeView {...props} />\n  ) : (\n    <OverlayComparativeView {...props} />\n  )\n})\n\nexport default LinearComparativeView\n","import React, { lazy } from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport LinearComparativeViewComponent from '../../LinearComparativeView/components/LinearComparativeView'\nimport { LinearSyntenyViewModel } from '../model'\n\nconst ImportForm = lazy(() => import('./ImportForm'))\n\ntype LSV = LinearSyntenyViewModel\n\nconst LinearSyntenyView = observer(({ model }: { model: LSV }) => {\n  return !model.initialized ? (\n    <ImportForm model={model} />\n  ) : (\n    <LinearComparativeViewComponent model={model} />\n  )\n})\n\nexport default LinearSyntenyView\n"],"names":["useStyles","makeStyles","guide","pointerEvents","height","width","position","zIndex","sm","fontSize","observer","model","coordX","classes","React","Tooltip","open","placement","title","views","map","view","pxToBp","elt","idx","Typography","className","key","JSON","stringify","join","arrow","style","left","background","theme","rubberband","alpha","palette","tertiary","main","textAlign","overflow","rubberbandControl","cursor","minHeight","rubberbandText","color","contrastText","popover","mouseEvents","paper","paddingLeft","spacing","paddingRight","ControlComponent","startX","setStartX","useState","currentX","setCurrentX","anchorPosition","setAnchorPosition","guideX","setGuideX","controlsRef","useRef","rubberbandRef","mouseDragging","undefined","mouseDown","event","preventDefault","stopPropagation","relativeX","clientX","target","getBoundingClientRect","mouseMove","mouseOut","forEach","setOffsets","handleClose","useEffect","globalMouseMove","current","globalMouseUp","clientY","offsetX","args","leftPx","rightPx","leftOffset","rightOffset","computeOffsets","window","addEventListener","removeEventListener","Math","abs","Boolean","VerticalGuide","ref","onMouseDown","onMouseOut","onMouseMove","right","leftBpOffset","rightBpOffset","numOfBpSelected","ceil","bpPerPx","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","disableRestoreFocus","l","variant","n","i","toLocaleString","Menu","anchorReference","top","onMenuItemClick","_","callback","onClose","menuItems","rubberBandMenuItems","headerBar","gridArea","display","spacer","flexGrow","iconButton","margin","bp","alignItems","marginLeft","searchContainer","searchBox","TrackSelector","CascadingMenuButton","label","onClick","activateTrackSelector","TrackSelectorIcon","menuAnchorEl","setMenuAnchorEl","anyShowHeaders","some","hideHeader","IconButton","currentTarget","MoreVertIcon","id","SearchBox","showHelp","round","coarseTotalBp","_event","headerMenuItems","container","overlay","content","grid","relative","rubberbandContainer","rubberbandDiv","action","disabledBackground","selected","Overlays","tracks","track","displays","RenderingComponent","trackId","getConf","middleComparativeHeight","MiddleComparativeView","pluginManager","getEnv","ReactComponent","getViewType","type","Header","Rubberband","ResizeHandle","onDrag","setMiddleComparativeHeight","OverlayComparativeView","props","d","ImportForm","lazy","initialized","LinearComparativeViewComponent"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3862.9fd8e870.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3862],{93862:(e,t,o)=>{o.r(t),o.d(t,{default:()=>S,getTableSortLabelUtilityClass:()=>h,tableSortLabelClasses:()=>A});var r=o(70799),n=o(93878),i=o(7552),a=o(48054),c=o(74893),s=o(69500);const l=(0,c.A)((0,s.jsx)("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"}),"ArrowDownward");var d=o(51148),p=o(60129),b=o(4785),u=o(15622),v=o(33761),m=o(85693);function h(e){return(0,m.Ay)("MuiTableSortLabel",e)}const A=(0,v.A)("MuiTableSortLabel",["root","active","icon","iconDirectionDesc","iconDirectionAsc","directionDesc","directionAsc"]),f=(0,d.Ay)(a.A,{name:"MuiTableSortLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.active&&t.active]}})((0,p.A)((({theme:e})=>({cursor:"pointer",display:"inline-flex",justifyContent:"flex-start",flexDirection:"inherit",alignItems:"center","&:focus":{color:(e.vars||e).palette.text.secondary},"&:hover":{color:(e.vars||e).palette.text.secondary,[`& .${A.icon}`]:{opacity:.5}},[`&.${A.active}`]:{color:(e.vars||e).palette.text.primary,[`& .${A.icon}`]:{opacity:1,color:(e.vars||e).palette.text.secondary}}})))),y=(0,d.Ay)("span",{name:"MuiTableSortLabel",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.icon,t[`iconDirection${(0,u.A)(o.direction)}`]]}})((0,p.A)((({theme:e})=>({fontSize:18,marginRight:4,marginLeft:4,opacity:0,transition:e.transitions.create(["opacity","transform"],{duration:e.transitions.duration.shorter}),userSelect:"none",variants:[{props:{direction:"desc"},style:{transform:"rotate(0deg)"}},{props:{direction:"asc"},style:{transform:"rotate(180deg)"}}]})))),S=i.forwardRef((function(e,t){const o=(0,b.b)({props:e,name:"MuiTableSortLabel"}),{active:i=!1,children:a,className:c,direction:d="asc",hideSortIcon:p=!1,IconComponent:v=l,...m}=o,A={...o,active:i,direction:d,hideSortIcon:p,IconComponent:v},S=(e=>{const{classes:t,direction:o,active:n}=e,i={root:["root",n&&"active",`direction${(0,u.A)(o)}`],icon:["icon",`iconDirection${(0,u.A)(o)}`]};return(0,r.A)(i,h,t)})(A);return(0,s.jsxs)(f,{className:(0,n.A)(S.root,c),component:"span",disableRipple:!0,ownerState:A,ref:t,...m,children:[a,p&&!i?null:(0,s.jsx)(y,{as:v,className:(0,n.A)(S.icon),ownerState:A})]})}))}}]);
+//# sourceMappingURL=3862.9fd8e870.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3862.9fd8e870.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3862.9fd8e870.chunk.js","mappings":"4RASA,SAAe,EAAAA,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,mEACD,iB,qECTG,SAASC,EAA8BC,GAC5C,OAAO,EAAAC,EAAA,IAAqB,oBAAqBD,EACnD,CACA,MACA,GAD8B,EAAAE,EAAA,GAAuB,oBAAqB,CAAC,OAAQ,SAAU,OAAQ,oBAAqB,mBAAoB,gBAAiB,iBCqBzJC,GAAqB,EAAAC,EAAA,IAAOC,EAAA,EAAY,CAC5CC,KAAM,oBACNN,KAAM,OACNO,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMD,EAAWE,QAAUH,EAAOG,OAAO,GAPjC,EASxB,EAAAC,EAAA,IAAU,EACXC,YACI,CACJC,OAAQ,UACRC,QAAS,cACTC,eAAgB,aAChBC,cAAe,UACfC,WAAY,SACZ,UAAW,CACTC,OAAQN,EAAMO,MAAQP,GAAOQ,QAAQC,KAAKC,WAE5C,UAAW,CACTJ,OAAQN,EAAMO,MAAQP,GAAOQ,QAAQC,KAAKC,UAC1C,CAAC,MAAM,EAAsBC,QAAS,CACpCC,QAAS,KAGb,CAAC,KAAK,EAAsBd,UAAW,CACrCQ,OAAQN,EAAMO,MAAQP,GAAOQ,QAAQC,KAAKI,QAC1C,CAAC,MAAM,EAAsBF,QAAS,CACpCC,QAAS,EACTN,OAAQN,EAAMO,MAAQP,GAAOQ,QAAQC,KAAKC,iBAI1CI,GAAqB,EAAAxB,EAAA,IAAO,OAAQ,CACxCE,KAAM,oBACNN,KAAM,OACNO,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOgB,KAAMhB,EAAO,iBAAgB,EAAAoB,EAAA,GAAWnB,EAAWoB,cAAc,GAPzD,EASxB,EAAAjB,EAAA,IAAU,EACXC,YACI,CACJiB,SAAU,GACVC,YAAa,EACbC,WAAY,EACZP,QAAS,EACTQ,WAAYpB,EAAMqB,YAAYC,OAAO,CAAC,UAAW,aAAc,CAC7DC,SAAUvB,EAAMqB,YAAYE,SAASC,UAEvCC,WAAY,OACZC,SAAU,CAAC,CACThC,MAAO,CACLsB,UAAW,QAEbW,MAAO,CACLC,UAAW,iBAEZ,CACDlC,MAAO,CACLsB,UAAW,OAEbW,MAAO,CACLC,UAAW,yBAsFjB,EA9EoC,cAAiB,SAAwBC,EAASC,GACpF,MAAMpC,GAAQ,OAAgB,CAC5BA,MAAOmC,EACPrC,KAAM,uBAEF,OACJM,GAAS,EAAK,SACdiC,EAAQ,UACRC,EAAS,UACThB,EAAY,MAAK,aACjBiB,GAAe,EAAK,cACpBC,EAAgBC,KACbC,GACD1C,EACEE,EAAa,IACdF,EACHI,SACAkB,YACAiB,eACAC,iBAEIG,EA3GkBzC,KACxB,MAAM,QACJyC,EAAO,UACPrB,EAAS,OACTlB,GACEF,EACE0C,EAAQ,CACZzC,KAAM,CAAC,OAAQC,GAAU,SAAU,aAAY,EAAAiB,EAAA,GAAWC,MAC1DL,KAAM,CAAC,OAAQ,iBAAgB,EAAAI,EAAA,GAAWC,OAE5C,OAAO,EAAAuB,EAAA,GAAeD,EAAOrD,EAA+BoD,EAAQ,EAiGpDG,CAAkB5C,GAClC,OAAoB,UAAMP,EAAoB,CAC5C2C,WAAW,EAAAS,EAAA,GAAKJ,EAAQxC,KAAMmC,GAC9BU,UAAW,OACXC,eAAe,EACf/C,WAAYA,EACZkC,IAAKA,KACFM,EACHL,SAAU,CAACA,EAAUE,IAAiBnC,EAAS,MAAoB,SAAKgB,EAAoB,CAC1F8B,GAAIV,EACJF,WAAW,EAAAS,EAAA,GAAKJ,EAAQ1B,MACxBf,WAAYA,MAGlB,G","sources":["../../../node_modules/@mui/material/internal/svg-icons/ArrowDownward.js","../../../node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js","../../../node_modules/@mui/material/TableSortLabel/TableSortLabel.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableSortLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiTableSortLabel', slot);\n}\nconst tableSortLabelClasses = generateUtilityClasses('MuiTableSortLabel', ['root', 'active', 'icon', 'iconDirectionDesc', 'iconDirectionAsc', 'directionDesc', 'directionAsc']);\nexport default tableSortLabelClasses;","'use client';\n\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport ArrowDownwardIcon from \"../internal/svg-icons/ArrowDownward.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport tableSortLabelClasses, { getTableSortLabelUtilityClass } from \"./tableSortLabelClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    direction,\n    active\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active', `direction${capitalize(direction)}`],\n    icon: ['icon', `iconDirection${capitalize(direction)}`]\n  };\n  return composeClasses(slots, getTableSortLabelUtilityClass, classes);\n};\nconst TableSortLabelRoot = styled(ButtonBase, {\n  name: 'MuiTableSortLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.active && styles.active];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  cursor: 'pointer',\n  display: 'inline-flex',\n  justifyContent: 'flex-start',\n  flexDirection: 'inherit',\n  alignItems: 'center',\n  '&:focus': {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  '&:hover': {\n    color: (theme.vars || theme).palette.text.secondary,\n    [`& .${tableSortLabelClasses.icon}`]: {\n      opacity: 0.5\n    }\n  },\n  [`&.${tableSortLabelClasses.active}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    [`& .${tableSortLabelClasses.icon}`]: {\n      opacity: 1,\n      color: (theme.vars || theme).palette.text.secondary\n    }\n  }\n})));\nconst TableSortLabelIcon = styled('span', {\n  name: 'MuiTableSortLabel',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, styles[`iconDirection${capitalize(ownerState.direction)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  fontSize: 18,\n  marginRight: 4,\n  marginLeft: 4,\n  opacity: 0,\n  transition: theme.transitions.create(['opacity', 'transform'], {\n    duration: theme.transitions.duration.shorter\n  }),\n  userSelect: 'none',\n  variants: [{\n    props: {\n      direction: 'desc'\n    },\n    style: {\n      transform: 'rotate(0deg)'\n    }\n  }, {\n    props: {\n      direction: 'asc'\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n})));\n\n/**\n * A button based label for placing inside `TableCell` for column sorting.\n */\nconst TableSortLabel = /*#__PURE__*/React.forwardRef(function TableSortLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableSortLabel'\n  });\n  const {\n    active = false,\n    children,\n    className,\n    direction = 'asc',\n    hideSortIcon = false,\n    IconComponent = ArrowDownwardIcon,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    active,\n    direction,\n    hideSortIcon,\n    IconComponent\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(TableSortLabelRoot, {\n    className: clsx(classes.root, className),\n    component: \"span\",\n    disableRipple: true,\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [children, hideSortIcon && !active ? null : /*#__PURE__*/_jsx(TableSortLabelIcon, {\n      as: IconComponent,\n      className: clsx(classes.icon),\n      ownerState: ownerState\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableSortLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the label will have the active styling (should be true for the sorted column).\n   * @default false\n   */\n  active: PropTypes.bool,\n  /**\n   * Label contents, the arrow will be appended automatically.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The current sort direction.\n   * @default 'asc'\n   */\n  direction: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Hide sort icon when active is false.\n   * @default false\n   */\n  hideSortIcon: PropTypes.bool,\n  /**\n   * Sort icon to use.\n   * @default ArrowDownwardIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableSortLabel;"],"names":["createSvgIcon","d","getTableSortLabelUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TableSortLabelRoot","styled","ButtonBase","name","overridesResolver","props","styles","ownerState","root","active","memoTheme","theme","cursor","display","justifyContent","flexDirection","alignItems","color","vars","palette","text","secondary","icon","opacity","primary","TableSortLabelIcon","capitalize","direction","fontSize","marginRight","marginLeft","transition","transitions","create","duration","shorter","userSelect","variants","style","transform","inProps","ref","children","className","hideSortIcon","IconComponent","ArrowDownward","other","classes","slots","composeClasses","useUtilityClasses","clsx","component","disableRipple","as"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3902.69c7ff0c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 3902.69c7ff0c.chunk.js.LICENSE.txt */
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3902],{47046:(t,e,n)=>{n.d(e,{A:()=>a});class r{}class i{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new r){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):"function"==typeof t.addEventListener&&t.addEventListener("abort",(()=>{this.handleAborted(t)}))}handleAborted(t){this.signals.delete(t),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class s{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class a{constructor({fill:t,cache:e}){if("function"!=typeof t)throw new TypeError("must pass a fill function");if("object"!=typeof e)throw new TypeError("must pass a cache object");if("function"!=typeof e.get||"function"!=typeof e.set||"function"!=typeof e.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return"AbortError"===t.name||"ERR_ABORTED"===t.code||"AbortError: aborted"===t.message||"Error: aborted"===t.message}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,n,r){const a=new i,o=new s;o.addCallback(r);const h={aborter:a,promise:this.fillCallback(e,a.signal,(t=>{o.callback(t)})),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};h.aborter.addSignal(n),h.aborter.signal.addEventListener("abort",(()=>{h.settled||this.evict(t,h)})),h.promise.then((()=>{h.settled=!0}),(()=>{h.settled=!0,this.evict(t,h)})).catch((t=>{throw console.error(t),t})),this.cache.set(t,h)}static checkSinglePromise(t,e){function n(){if(null==e?void 0:e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then((t=>(n(),t)),(t=>{throw n(),t}))}has(t){return this.cache.has(t)}get(t,e,n,r){if(!n&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const i=this.cache.get(t);return i?i.aborted&&!i.settled?(this.evict(t,i),this.get(t,e,n,r)):i.settled?i.promise:(i.aborter.addSignal(n),i.statusReporter.addCallback(r),a.checkSinglePromise(i.promise,n)):(this.fill(t,e,n,r),a.checkSinglePromise(this.cache.get(t).promise,n))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let n=t.next();!n.done;n=t.next())this.delete(n.value),e+=1;return e}}},93902:(t,e,n)=>{n.d(e,{C:()=>Yn,j:()=>$n});const r=BigInt(32);"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(t,e){return function(t,e,n){const i=Number(!!n),s=Number(!n);return BigInt(t.getInt32(e,n)*s+t.getInt32(e+4,n)*i)<<r|BigInt(t.getUint32(e,n)*i+t.getUint32(e+4,n)*s)}(this,t,e)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(t,e){return function(t,e,n){const i=t.getUint32(e,n),s=t.getUint32(e+4,n),a=Number(!!n),o=Number(!n);return BigInt(i*o+s*a)<<r|BigInt(i*a+s*o)}(this,t,e)});var i=n(26094),s=n(47046),a=n(16308),o=n.n(a);class h{constructor(t){this.ranges=t}get min(){return this.ranges[0].min}get max(){return this.ranges.at(-1).max}contains(t){for(const e of this.ranges)if(e.min<=t&&e.max>=t)return!0;return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map((t=>new h([{min:t.min,max:t.max}])))}toString(){return this.ranges.map((t=>`[${t.min}-${t.max}]`)).join(",")}union(t){const e=[...this.getRanges(),...t.getRanges()].sort(((t,e)=>t.min<e.min?-1:t.min>e.min?1:t.max<e.max?-1:e.max>t.max?1:0)),n=[];let r=e[0];for(const t of e)t.min>r.max+1?(n.push(r),r=t):t.max>r.max&&(r=new h([{min:r.min,max:t.max}]));return n.push(r),1===n.length?n[0]:new h(n)}}function l(t){let e=t.length;for(;--e>=0;)t[e]=0}const f=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),u=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),c=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),d=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),g=new Array(576);l(g);const _=new Array(60);l(_);const p=new Array(512);l(p);const w=new Array(256);l(w);const b=new Array(29);l(b);const m=new Array(30);function y(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}let k,v,E;function x(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}l(m);const B=t=>t<256?p[t]:p[256+(t>>>7)],U=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},A=(t,e,n)=>{t.bi_valid>16-n?(t.bi_buf|=e<<t.bi_valid&65535,U(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=n-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)},z=(t,e,n)=>{A(t,n[2*e],n[2*e+1])},I=(t,e)=>{let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1},R=(t,e,n)=>{const r=new Array(16);let i,s,a=0;for(i=1;i<=15;i++)a=a+n[i-1]<<1,r[i]=a;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=I(r[e]++,e))}},O=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},S=t=>{t.bi_valid>8?U(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},T=(t,e,n,r)=>{const i=2*e,s=2*n;return t[i]<t[s]||t[i]===t[s]&&r[e]<=r[n]},L=(t,e,n)=>{const r=t.heap[n];let i=n<<1;for(;i<=t.heap_len&&(i<t.heap_len&&T(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!T(e,r,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=r},N=(t,e,n)=>{let r,i,s,a,o=0;if(0!==t.sym_next)do{r=255&t.pending_buf[t.sym_buf+o++],r+=(255&t.pending_buf[t.sym_buf+o++])<<8,i=t.pending_buf[t.sym_buf+o++],0===r?z(t,i,e):(s=w[i],z(t,s+256+1,e),a=f[s],0!==a&&(i-=b[s],A(t,i,a)),r--,s=B(r),z(t,s,n),a=u[s],0!==a&&(r-=m[s],A(t,r,a)))}while(o<t.sym_next);z(t,256,e)},D=(t,e)=>{const n=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.has_stree,s=e.stat_desc.elems;let a,o,h,l=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<s;a++)0!==n[2*a]?(t.heap[++t.heap_len]=l=a,t.depth[a]=0):n[2*a+1]=0;for(;t.heap_len<2;)h=t.heap[++t.heap_len]=l<2?++l:0,n[2*h]=1,t.depth[h]=0,t.opt_len--,i&&(t.static_len-=r[2*h+1]);for(e.max_code=l,a=t.heap_len>>1;a>=1;a--)L(t,n,a);h=s;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],L(t,n,1),o=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=o,n[2*h]=n[2*a]+n[2*o],t.depth[h]=(t.depth[a]>=t.depth[o]?t.depth[a]:t.depth[o])+1,n[2*a+1]=n[2*o+1]=h,t.heap[1]=h++,L(t,n,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const n=e.dyn_tree,r=e.max_code,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,h=e.stat_desc.max_length;let l,f,u,c,d,g,_=0;for(c=0;c<=15;c++)t.bl_count[c]=0;for(n[2*t.heap[t.heap_max]+1]=0,l=t.heap_max+1;l<573;l++)f=t.heap[l],c=n[2*n[2*f+1]+1]+1,c>h&&(c=h,_++),n[2*f+1]=c,f>r||(t.bl_count[c]++,d=0,f>=o&&(d=a[f-o]),g=n[2*f],t.opt_len+=g*(c+d),s&&(t.static_len+=g*(i[2*f+1]+d)));if(0!==_){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,_-=2}while(_>0);for(c=h;0!==c;c--)for(f=t.bl_count[c];0!==f;)u=t.heap[--l],u>r||(n[2*u+1]!==c&&(t.opt_len+=(c-n[2*u+1])*n[2*u],n[2*u+1]=c),f--)}})(t,e),R(n,l,t.bl_count)},C=(t,e,n)=>{let r,i,s=-1,a=e[1],o=0,h=7,l=4;for(0===a&&(h=138,l=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++o<h&&i===a||(o<l?t.bl_tree[2*i]+=o:0!==i?(i!==s&&t.bl_tree[2*i]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=i,0===a?(h=138,l=3):i===a?(h=6,l=3):(h=7,l=4))},Z=(t,e,n)=>{let r,i,s=-1,a=e[1],o=0,h=7,l=4;for(0===a&&(h=138,l=3),r=0;r<=n;r++)if(i=a,a=e[2*(r+1)+1],!(++o<h&&i===a)){if(o<l)do{z(t,i,t.bl_tree)}while(0!=--o);else 0!==i?(i!==s&&(z(t,i,t.bl_tree),o--),z(t,16,t.bl_tree),A(t,o-3,2)):o<=10?(z(t,17,t.bl_tree),A(t,o-3,3)):(z(t,18,t.bl_tree),A(t,o-11,7));o=0,s=i,0===a?(h=138,l=3):i===a?(h=6,l=3):(h=7,l=4)}};let F=!1;const P=(t,e,n,r)=>{A(t,0+(r?1:0),3),S(t),U(t,n),U(t,~n),n&&t.pending_buf.set(t.window.subarray(e,e+n),t.pending),t.pending+=n};var M={_tr_init:t=>{F||((()=>{let t,e,n,r,i;const s=new Array(16);for(n=0,r=0;r<28;r++)for(b[r]=n,t=0;t<1<<f[r];t++)w[n++]=r;for(w[n-1]=r,i=0,r=0;r<16;r++)for(m[r]=i,t=0;t<1<<u[r];t++)p[i++]=r;for(i>>=7;r<30;r++)for(m[r]=i<<7,t=0;t<1<<u[r]-7;t++)p[256+i++]=r;for(e=0;e<=15;e++)s[e]=0;for(t=0;t<=143;)g[2*t+1]=8,t++,s[8]++;for(;t<=255;)g[2*t+1]=9,t++,s[9]++;for(;t<=279;)g[2*t+1]=7,t++,s[7]++;for(;t<=287;)g[2*t+1]=8,t++,s[8]++;for(R(g,287,s),t=0;t<30;t++)_[2*t+1]=5,_[2*t]=I(t,5);k=new y(g,f,257,286,15),v=new y(_,u,0,30,15),E=new y(new Array(0),c,0,19,7)})(),F=!0),t.l_desc=new x(t.dyn_ltree,k),t.d_desc=new x(t.dyn_dtree,v),t.bl_desc=new x(t.bl_tree,E),t.bi_buf=0,t.bi_valid=0,O(t)},_tr_stored_block:P,_tr_flush_block:(t,e,n,r)=>{let i,s,a=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),D(t,t.l_desc),D(t,t.d_desc),a=(t=>{let e;for(C(t,t.dyn_ltree,t.l_desc.max_code),C(t,t.dyn_dtree,t.d_desc.max_code),D(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*d[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,s=t.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==e?P(t,e,n,r):4===t.strategy||s===i?(A(t,2+(r?1:0),3),N(t,g,_)):(A(t,4+(r?1:0),3),((t,e,n,r)=>{let i;for(A(t,e-257,5),A(t,n-1,5),A(t,r-4,4),i=0;i<r;i++)A(t,t.bl_tree[2*d[i]+1],3);Z(t,t.dyn_ltree,e-1),Z(t,t.dyn_dtree,n-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),N(t,t.dyn_ltree,t.dyn_dtree)),O(t),r&&S(t)},_tr_tally:(t,e,n)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=n,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(w[n]+256+1)]++,t.dyn_dtree[2*B(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{A(t,2,3),z(t,256,g),(t=>{16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}},$=(t,e,n,r)=>{let i=65535&t,s=t>>>16&65535,a=0;for(;0!==n;){a=n>2e3?2e3:n,n-=a;do{i=i+e[r++]|0,s=s+i|0}while(--a);i%=65521,s%=65521}return i|s<<16};const j=new Uint32Array((()=>{let t,e=[];for(var n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e})());var H=(t,e,n,r)=>{const i=j,s=r+n;t^=-1;for(let n=r;n<s;n++)t=t>>>8^i[255&(t^e[n])];return~t},V={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Y={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:q,_tr_stored_block:K,_tr_flush_block:G,_tr_tally:W,_tr_align:X}=M,{Z_NO_FLUSH:J,Z_PARTIAL_FLUSH:Q,Z_FULL_FLUSH:tt,Z_FINISH:et,Z_BLOCK:nt,Z_OK:rt,Z_STREAM_END:it,Z_STREAM_ERROR:st,Z_DATA_ERROR:at,Z_BUF_ERROR:ot,Z_DEFAULT_COMPRESSION:ht,Z_FILTERED:lt,Z_HUFFMAN_ONLY:ft,Z_RLE:ut,Z_FIXED:ct,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:gt,Z_DEFLATED:_t}=Y,pt=258,wt=262,bt=42,mt=113,yt=666,kt=(t,e)=>(t.msg=V[e],e),vt=t=>2*t-(t>4?9:0),Et=t=>{let e=t.length;for(;--e>=0;)t[e]=0},xt=t=>{let e,n,r,i=t.w_size;e=t.hash_size,r=e;do{n=t.head[--r],t.head[r]=n>=i?n-i:0}while(--e);e=i,r=e;do{n=t.prev[--r],t.prev[r]=n>=i?n-i:0}while(--e)};let Bt=(t,e,n)=>(e<<t.hash_shift^n)&t.hash_mask;const Ut=t=>{const e=t.state;let n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+n),t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))},At=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Ut(t.strm)},zt=(t,e)=>{t.pending_buf[t.pending++]=e},It=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,n,r)=>{let i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),n),1===t.state.wrap?t.adler=$(t.adler,e,i,n):2===t.state.wrap&&(t.adler=H(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)},Ot=(t,e)=>{let n,r,i=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match;const h=t.strstart>t.w_size-wt?t.strstart-(t.w_size-wt):0,l=t.window,f=t.w_mask,u=t.prev,c=t.strstart+pt;let d=l[s+a-1],g=l[s+a];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do{if(n=e,l[n+a]===g&&l[n+a-1]===d&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&s<c);if(r=pt-(c-s),s=c-pt,r>a){if(t.match_start=e,a=r,r>=o)break;d=l[s+a-1],g=l[s+a]}}}while((e=u[e&f])>h&&0!=--i);return a<=t.lookahead?a:t.lookahead},St=t=>{const e=t.w_size;let n,r,i;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-wt)&&(t.window.set(t.window.subarray(e,e+e-r),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),xt(t),r+=e),0===t.strm.avail_in)break;if(n=Rt(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Bt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Bt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<wt&&0!==t.strm.avail_in)},Tt=(t,e)=>{let n,r,i,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,a=0,o=t.strm.avail_in;do{if(n=65535,i=t.bi_valid+42>>3,t.strm.avail_out<i)break;if(i=t.strm.avail_out-i,r=t.strstart-t.block_start,n>r+t.strm.avail_in&&(n=r+t.strm.avail_in),n>i&&(n=i),n<s&&(0===n&&e!==et||e===J||n!==r+t.strm.avail_in))break;a=e===et&&n===r+t.strm.avail_in?1:0,K(t,0,0,a),t.pending_buf[t.pending-4]=n,t.pending_buf[t.pending-3]=n>>8,t.pending_buf[t.pending-2]=~n,t.pending_buf[t.pending-1]=~n>>8,Ut(t.strm),r&&(r>n&&(r=n),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+r),t.strm.next_out),t.strm.next_out+=r,t.strm.avail_out-=r,t.strm.total_out+=r,t.block_start+=r,n-=r),n&&(Rt(t.strm,t.strm.output,t.strm.next_out,n),t.strm.next_out+=n,t.strm.avail_out-=n,t.strm.total_out+=n)}while(0===a);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),a?4:e!==J&&e!==et&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(i=t.window_size-t.strstart,t.strm.avail_in>i&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,i+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),i>t.strm.avail_in&&(i=t.strm.avail_in),i&&(Rt(t.strm,t.window,t.strstart,i),t.strstart+=i,t.insert+=i>t.w_size-t.insert?t.w_size-t.insert:i),t.high_water<t.strstart&&(t.high_water=t.strstart),i=t.bi_valid+42>>3,i=t.pending_buf_size-i>65535?65535:t.pending_buf_size-i,s=i>t.w_size?t.w_size:i,r=t.strstart-t.block_start,(r>=s||(r||e===et)&&e!==J&&0===t.strm.avail_in&&r<=i)&&(n=r>i?i:r,a=e===et&&0===t.strm.avail_in&&n===r?1:0,K(t,t.block_start,n,a),t.block_start+=n,Ut(t.strm)),a?3:1)},Lt=(t,e)=>{let n,r;for(;;){if(t.lookahead<wt){if(St(t),t.lookahead<wt&&e===J)return 1;if(0===t.lookahead)break}if(n=0,t.lookahead>=3&&(t.ins_h=Bt(t,t.ins_h,t.window[t.strstart+3-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-wt&&(t.match_length=Ot(t,n)),t.match_length>=3)if(r=W(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Bt(t,t.ins_h,t.window[t.strstart+3-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Bt(t,t.ins_h,t.window[t.strstart+1]);else r=W(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(At(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===et?(At(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(At(t,!1),0===t.strm.avail_out)?1:2},Nt=(t,e)=>{let n,r,i;for(;;){if(t.lookahead<wt){if(St(t),t.lookahead<wt&&e===J)return 1;if(0===t.lookahead)break}if(n=0,t.lookahead>=3&&(t.ins_h=Bt(t,t.ins_h,t.window[t.strstart+3-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-wt&&(t.match_length=Ot(t,n),t.match_length<=5&&(t.strategy===lt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,r=W(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Bt(t,t.ins_h,t.window[t.strstart+3-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,r&&(At(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(r=W(t,0,t.window[t.strstart-1]),r&&At(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=W(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===et?(At(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(At(t,!1),0===t.strm.avail_out)?1:2};function Dt(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}const Ct=[new Dt(0,0,0,0,Tt),new Dt(4,4,8,4,Lt),new Dt(4,5,16,8,Lt),new Dt(4,6,32,32,Lt),new Dt(4,4,16,16,Nt),new Dt(8,16,32,32,Nt),new Dt(8,16,128,128,Nt),new Dt(8,32,128,256,Nt),new Dt(32,128,258,1024,Nt),new Dt(32,258,258,4096,Nt)];function Zt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_t,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Et(this.dyn_ltree),Et(this.dyn_dtree),Et(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Et(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Et(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ft=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==bt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==yt?1:0},Pt=t=>{if(Ft(t))return kt(t,st);t.total_in=t.total_out=0,t.data_type=gt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?bt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,q(e),rt},Mt=t=>{const e=Pt(t);var n;return e===rt&&((n=t.state).window_size=2*n.w_size,Et(n.head),n.max_lazy_match=Ct[n.level].max_lazy,n.good_match=Ct[n.level].good_length,n.nice_match=Ct[n.level].nice_length,n.max_chain_length=Ct[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),e},$t=(t,e,n,r,i,s)=>{if(!t)return st;let a=1;if(e===ht&&(e=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),i<1||i>9||n!==_t||r<8||r>15||e<0||e>9||s<0||s>ct||8===r&&1!==a)return kt(t,st);8===r&&(r=9);const o=new Zt;return t.state=o,o.strm=t,o.status=bt,o.wrap=a,o.gzhead=null,o.w_bits=r,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=n,Mt(t)};var jt=$t,Ht=(t,e)=>Ft(t)||2!==t.state.wrap?st:(t.state.gzhead=e,rt),Vt=(t,e)=>{if(Ft(t)||e>nt||e<0)return t?kt(t,st):st;const n=t.state;if(!t.output||0!==t.avail_in&&!t.input||n.status===yt&&e!==et)return kt(t,0===t.avail_out?ot:st);const r=n.last_flush;if(n.last_flush=e,0!==n.pending){if(Ut(t),0===t.avail_out)return n.last_flush=-1,rt}else if(0===t.avail_in&&vt(e)<=vt(r)&&e!==et)return kt(t,ot);if(n.status===yt&&0!==t.avail_in)return kt(t,ot);if(n.status===bt&&0===n.wrap&&(n.status=mt),n.status===bt){let e=_t+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=ft||n.level<2?0:n.level<6?1:6===n.level?2:3,e|=r<<6,0!==n.strstart&&(e|=32),e+=31-e%31,It(n,e),0!==n.strstart&&(It(n,t.adler>>>16),It(n,65535&t.adler)),t.adler=1,n.status=mt,Ut(t),0!==n.pending)return n.last_flush=-1,rt}if(57===n.status)if(t.adler=0,zt(n,31),zt(n,139),zt(n,8),n.gzhead)zt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),zt(n,255&n.gzhead.time),zt(n,n.gzhead.time>>8&255),zt(n,n.gzhead.time>>16&255),zt(n,n.gzhead.time>>24&255),zt(n,9===n.level?2:n.strategy>=ft||n.level<2?4:0),zt(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(zt(n,255&n.gzhead.extra.length),zt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=H(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(zt(n,0),zt(n,0),zt(n,0),zt(n,0),zt(n,0),zt(n,9===n.level?2:n.strategy>=ft||n.level<2?4:0),zt(n,3),n.status=mt,Ut(t),0!==n.pending)return n.last_flush=-1,rt;if(69===n.status){if(n.gzhead.extra){let e=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>e&&(t.adler=H(t.adler,n.pending_buf,n.pending-e,e)),n.gzindex+=i,Ut(t),0!==n.pending)return n.last_flush=-1,rt;e=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>e&&(t.adler=H(t.adler,n.pending_buf,n.pending-e,e)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let e,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(t.adler=H(t.adler,n.pending_buf,n.pending-r,r)),Ut(t),0!==n.pending)return n.last_flush=-1,rt;r=0}e=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,zt(n,e)}while(0!==e);n.gzhead.hcrc&&n.pending>r&&(t.adler=H(t.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let e,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(t.adler=H(t.adler,n.pending_buf,n.pending-r,r)),Ut(t),0!==n.pending)return n.last_flush=-1,rt;r=0}e=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,zt(n,e)}while(0!==e);n.gzhead.hcrc&&n.pending>r&&(t.adler=H(t.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ut(t),0!==n.pending))return n.last_flush=-1,rt;zt(n,255&t.adler),zt(n,t.adler>>8&255),t.adler=0}if(n.status=mt,Ut(t),0!==n.pending)return n.last_flush=-1,rt}if(0!==t.avail_in||0!==n.lookahead||e!==J&&n.status!==yt){let r=0===n.level?Tt(n,e):n.strategy===ft?((t,e)=>{let n;for(;;){if(0===t.lookahead&&(St(t),0===t.lookahead)){if(e===J)return 1;break}if(t.match_length=0,n=W(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(At(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===et?(At(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(At(t,!1),0===t.strm.avail_out)?1:2})(n,e):n.strategy===ut?((t,e)=>{let n,r,i,s;const a=t.window;for(;;){if(t.lookahead<=pt){if(St(t),t.lookahead<=pt&&e===J)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){s=t.strstart+pt;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&i<s);t.match_length=pt-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(n=W(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=W(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(At(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===et?(At(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(At(t,!1),0===t.strm.avail_out)?1:2})(n,e):Ct[n.level].func(n,e);if(3!==r&&4!==r||(n.status=yt),1===r||3===r)return 0===t.avail_out&&(n.last_flush=-1),rt;if(2===r&&(e===Q?X(n):e!==nt&&(K(n,0,0,!1),e===tt&&(Et(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ut(t),0===t.avail_out))return n.last_flush=-1,rt}return e!==et?rt:n.wrap<=0?it:(2===n.wrap?(zt(n,255&t.adler),zt(n,t.adler>>8&255),zt(n,t.adler>>16&255),zt(n,t.adler>>24&255),zt(n,255&t.total_in),zt(n,t.total_in>>8&255),zt(n,t.total_in>>16&255),zt(n,t.total_in>>24&255)):(It(n,t.adler>>>16),It(n,65535&t.adler)),Ut(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?rt:it)},Yt=t=>{if(Ft(t))return st;const e=t.state.status;return t.state=null,e===mt?kt(t,at):rt},qt=(t,e)=>{let n=e.length;if(Ft(t))return st;const r=t.state,i=r.wrap;if(2===i||1===i&&r.status!==bt||r.lookahead)return st;if(1===i&&(t.adler=$(t.adler,e,n,0)),r.wrap=0,n>=r.w_size){0===i&&(Et(r.head),r.strstart=0,r.block_start=0,r.insert=0);let t=new Uint8Array(r.w_size);t.set(e.subarray(n-r.w_size,n),0),e=t,n=r.w_size}const s=t.avail_in,a=t.next_in,o=t.input;for(t.avail_in=n,t.next_in=0,t.input=e,St(r);r.lookahead>=3;){let t=r.strstart,e=r.lookahead-2;do{r.ins_h=Bt(r,r.ins_h,r.window[t+3-1]),r.prev[t&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=t,t++}while(--e);r.strstart=t,r.lookahead=2,St(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,t.next_in=a,t.input=o,t.avail_in=s,r.wrap=i,rt};const Kt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Gt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const e in n)Kt(n,e)&&(t[e]=n[e])}}return t},Wt=t=>{let e=0;for(let n=0,r=t.length;n<r;n++)e+=t[n].length;const n=new Uint8Array(e);for(let e=0,r=0,i=t.length;e<i;e++){let i=t[e];n.set(i,r),r+=i.length}return n};let Xt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Xt=!1}const Jt=new Uint8Array(256);for(let t=0;t<256;t++)Jt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Jt[254]=Jt[254]=1;var Qt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,n,r,i,s,a=t.length,o=0;for(i=0;i<a;i++)n=t.charCodeAt(i),55296==(64512&n)&&i+1<a&&(r=t.charCodeAt(i+1),56320==(64512&r)&&(n=65536+(n-55296<<10)+(r-56320),i++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(e=new Uint8Array(o),s=0,i=0;s<o;i++)n=t.charCodeAt(i),55296==(64512&n)&&i+1<a&&(r=t.charCodeAt(i+1),56320==(64512&r)&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?e[s++]=n:n<2048?(e[s++]=192|n>>>6,e[s++]=128|63&n):n<65536?(e[s++]=224|n>>>12,e[s++]=128|n>>>6&63,e[s++]=128|63&n):(e[s++]=240|n>>>18,e[s++]=128|n>>>12&63,e[s++]=128|n>>>6&63,e[s++]=128|63&n);return e},te=(t,e)=>{const n=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let r,i;const s=new Array(2*n);for(i=0,r=0;r<n;){let e=t[r++];if(e<128){s[i++]=e;continue}let a=Jt[e];if(a>4)s[i++]=65533,r+=a-1;else{for(e&=2===a?31:3===a?15:7;a>1&&r<n;)e=e<<6|63&t[r++],a--;a>1?s[i++]=65533:e<65536?s[i++]=e:(e-=65536,s[i++]=55296|e>>10&1023,s[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Xt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let n="";for(let r=0;r<e;r++)n+=String.fromCharCode(t[r]);return n})(s,i)},ee=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let n=e-1;for(;n>=0&&128==(192&t[n]);)n--;return n<0||0===n?e:n+Jt[t[n]]>e?n:e},ne=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const re=Object.prototype.toString,{Z_NO_FLUSH:ie,Z_SYNC_FLUSH:se,Z_FULL_FLUSH:ae,Z_FINISH:oe,Z_OK:he,Z_STREAM_END:le,Z_DEFAULT_COMPRESSION:fe,Z_DEFAULT_STRATEGY:ue,Z_DEFLATED:ce}=Y;function de(t){this.options=Gt({level:fe,method:ce,chunkSize:16384,windowBits:15,memLevel:8,strategy:ue},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ne,this.strm.avail_out=0;let n=jt(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==he)throw new Error(V[n]);if(e.header&&Ht(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Qt(e.dictionary):"[object ArrayBuffer]"===re.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,n=qt(this.strm,t),n!==he)throw new Error(V[n]);this._dict_set=!0}}function ge(t,e){const n=new de(e);if(n.push(t,!0),n.err)throw n.msg||V[n.err];return n.result}de.prototype.push=function(t,e){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?oe:ie,"string"==typeof t?n.input=Qt(t):"[object ArrayBuffer]"===re.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===se||s===ae)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=Vt(n,s),i===le)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Yt(this.strm),this.onEnd(i),this.ended=!0,i===he;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},de.prototype.onData=function(t){this.chunks.push(t)},de.prototype.onEnd=function(t){t===he&&(this.result=Wt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var _e={Deflate:de,deflate:ge,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ge(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ge(t,e)},constants:Y};const pe=16209;var we=function(t,e){let n,r,i,s,a,o,h,l,f,u,c,d,g,_,p,w,b,m,y,k,v,E,x,B;const U=t.state;n=t.next_in,x=t.input,r=n+(t.avail_in-5),i=t.next_out,B=t.output,s=i-(e-t.avail_out),a=i+(t.avail_out-257),o=U.dmax,h=U.wsize,l=U.whave,f=U.wnext,u=U.window,c=U.hold,d=U.bits,g=U.lencode,_=U.distcode,p=(1<<U.lenbits)-1,w=(1<<U.distbits)-1;t:do{d<15&&(c+=x[n++]<<d,d+=8,c+=x[n++]<<d,d+=8),b=g[c&p];e:for(;;){if(m=b>>>24,c>>>=m,d-=m,m=b>>>16&255,0===m)B[i++]=65535&b;else{if(!(16&m)){if(64&m){if(32&m){U.mode=16191;break t}t.msg="invalid literal/length code",U.mode=pe;break t}b=g[(65535&b)+(c&(1<<m)-1)];continue e}for(y=65535&b,m&=15,m&&(d<m&&(c+=x[n++]<<d,d+=8),y+=c&(1<<m)-1,c>>>=m,d-=m),d<15&&(c+=x[n++]<<d,d+=8,c+=x[n++]<<d,d+=8),b=_[c&w];;){if(m=b>>>24,c>>>=m,d-=m,m=b>>>16&255,16&m){if(k=65535&b,m&=15,d<m&&(c+=x[n++]<<d,d+=8,d<m&&(c+=x[n++]<<d,d+=8)),k+=c&(1<<m)-1,k>o){t.msg="invalid distance too far back",U.mode=pe;break t}if(c>>>=m,d-=m,m=i-s,k>m){if(m=k-m,m>l&&U.sane){t.msg="invalid distance too far back",U.mode=pe;break t}if(v=0,E=u,0===f){if(v+=h-m,m<y){y-=m;do{B[i++]=u[v++]}while(--m);v=i-k,E=B}}else if(f<m){if(v+=h+f-m,m-=f,m<y){y-=m;do{B[i++]=u[v++]}while(--m);if(v=0,f<y){m=f,y-=m;do{B[i++]=u[v++]}while(--m);v=i-k,E=B}}}else if(v+=f-m,m<y){y-=m;do{B[i++]=u[v++]}while(--m);v=i-k,E=B}for(;y>2;)B[i++]=E[v++],B[i++]=E[v++],B[i++]=E[v++],y-=3;y&&(B[i++]=E[v++],y>1&&(B[i++]=E[v++]))}else{v=i-k;do{B[i++]=B[v++],B[i++]=B[v++],B[i++]=B[v++],y-=3}while(y>2);y&&(B[i++]=B[v++],y>1&&(B[i++]=B[v++]))}break}if(64&m){t.msg="invalid distance code",U.mode=pe;break t}b=_[(65535&b)+(c&(1<<m)-1)]}}break}}while(n<r&&i<a);y=d>>3,n-=y,d-=y<<3,c&=(1<<d)-1,t.next_in=n,t.next_out=i,t.avail_in=n<r?r-n+5:5-(n-r),t.avail_out=i<a?a-i+257:257-(i-a),U.hold=c,U.bits=d};const be=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),me=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ye=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ke=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ve=(t,e,n,r,i,s,a,o)=>{const h=o.bits;let l,f,u,c,d,g,_=0,p=0,w=0,b=0,m=0,y=0,k=0,v=0,E=0,x=0,B=null;const U=new Uint16Array(16),A=new Uint16Array(16);let z,I,R,O=null;for(_=0;_<=15;_++)U[_]=0;for(p=0;p<r;p++)U[e[n+p]]++;for(m=h,b=15;b>=1&&0===U[b];b--);if(m>b&&(m=b),0===b)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(w=1;w<b&&0===U[w];w++);for(m<w&&(m=w),v=1,_=1;_<=15;_++)if(v<<=1,v-=U[_],v<0)return-1;if(v>0&&(0===t||1!==b))return-1;for(A[1]=0,_=1;_<15;_++)A[_+1]=A[_]+U[_];for(p=0;p<r;p++)0!==e[n+p]&&(a[A[e[n+p]]++]=p);if(0===t?(B=O=a,g=20):1===t?(B=be,O=me,g=257):(B=ye,O=ke,g=0),x=0,p=0,_=w,d=s,y=m,k=0,u=-1,E=1<<m,c=E-1,1===t&&E>852||2===t&&E>592)return 1;for(;;){z=_-k,a[p]+1<g?(I=0,R=a[p]):a[p]>=g?(I=O[a[p]-g],R=B[a[p]-g]):(I=96,R=0),l=1<<_-k,f=1<<y,w=f;do{f-=l,i[d+(x>>k)+f]=z<<24|I<<16|R}while(0!==f);for(l=1<<_-1;x&l;)l>>=1;if(0!==l?(x&=l-1,x+=l):x=0,p++,0==--U[_]){if(_===b)break;_=e[n+a[p]]}if(_>m&&(x&c)!==u){for(0===k&&(k=m),d+=w,y=_-k,v=1<<y;y+k<b&&(v-=U[y+k],!(v<=0));)y++,v<<=1;if(E+=1<<y,1===t&&E>852||2===t&&E>592)return 1;u=x&c,i[u]=m<<24|y<<16|d-s}}return 0!==x&&(i[d+x]=_-k<<24|64<<16),o.bits=m,0};const{Z_FINISH:Ee,Z_BLOCK:xe,Z_TREES:Be,Z_OK:Ue,Z_STREAM_END:Ae,Z_NEED_DICT:ze,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Re,Z_MEM_ERROR:Oe,Z_BUF_ERROR:Se,Z_DEFLATED:Te}=Y,Le=16180,Ne=16190,De=16191,Ce=16192,Ze=16194,Fe=16199,Pe=16200,Me=16206,$e=16209,je=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function He(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ve=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<Le||e.mode>16211?1:0},Ye=t=>{if(Ve(t))return Ie;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Le,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,Ue},qe=t=>{if(Ve(t))return Ie;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Ye(t)},Ke=(t,e)=>{let n;if(Ve(t))return Ie;const r=t.state;return e<0?(n=0,e=-e):(n=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Ie:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,qe(t))},Ge=(t,e)=>{if(!t)return Ie;const n=new He;t.state=n,n.strm=t,n.window=null,n.mode=Le;const r=Ke(t,e);return r!==Ue&&(t.state=null),r};let We,Xe,Je=!0;const Qe=t=>{if(Je){We=new Int32Array(512),Xe=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ve(1,t.lens,0,288,We,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ve(2,t.lens,0,32,Xe,0,t.work,{bits:5}),Je=!1}t.lencode=We,t.lenbits=9,t.distcode=Xe,t.distbits=5},tn=(t,e,n,r)=>{let i;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),r>=s.wsize?(s.window.set(e.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(e.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(e.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0};var en=qe,nn=Ge,rn=(t,e)=>{let n,r,i,s,a,o,h,l,f,u,c,d,g,_,p,w,b,m,y,k,v,E,x=0;const B=new Uint8Array(4);let U,A;const z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ve(t)||!t.output||!t.input&&0!==t.avail_in)return Ie;n=t.state,n.mode===De&&(n.mode=Ce),a=t.next_out,i=t.output,h=t.avail_out,s=t.next_in,r=t.input,o=t.avail_in,l=n.hold,f=n.bits,u=o,c=h,E=Ue;t:for(;;)switch(n.mode){case Le:if(0===n.wrap){n.mode=Ce;break}for(;f<16;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(2&n.wrap&&35615===l){0===n.wbits&&(n.wbits=15),n.check=0,B[0]=255&l,B[1]=l>>>8&255,n.check=H(n.check,B,2,0),l=0,f=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",n.mode=$e;break}if((15&l)!==Te){t.msg="unknown compression method",n.mode=$e;break}if(l>>>=4,f-=4,v=8+(15&l),0===n.wbits&&(n.wbits=v),v>15||v>n.wbits){t.msg="invalid window size",n.mode=$e;break}n.dmax=1<<n.wbits,n.flags=0,t.adler=n.check=1,n.mode=512&l?16189:De,l=0,f=0;break;case 16181:for(;f<16;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(n.flags=l,(255&n.flags)!==Te){t.msg="unknown compression method",n.mode=$e;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=$e;break}n.head&&(n.head.text=l>>8&1),512&n.flags&&4&n.wrap&&(B[0]=255&l,B[1]=l>>>8&255,n.check=H(n.check,B,2,0)),l=0,f=0,n.mode=16182;case 16182:for(;f<32;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.head&&(n.head.time=l),512&n.flags&&4&n.wrap&&(B[0]=255&l,B[1]=l>>>8&255,B[2]=l>>>16&255,B[3]=l>>>24&255,n.check=H(n.check,B,4,0)),l=0,f=0,n.mode=16183;case 16183:for(;f<16;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.head&&(n.head.xflags=255&l,n.head.os=l>>8),512&n.flags&&4&n.wrap&&(B[0]=255&l,B[1]=l>>>8&255,n.check=H(n.check,B,2,0)),l=0,f=0,n.mode=16184;case 16184:if(1024&n.flags){for(;f<16;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.length=l,n.head&&(n.head.extra_len=l),512&n.flags&&4&n.wrap&&(B[0]=255&l,B[1]=l>>>8&255,n.check=H(n.check,B,2,0)),l=0,f=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(d=n.length,d>o&&(d=o),d&&(n.head&&(v=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+d),v)),512&n.flags&&4&n.wrap&&(n.check=H(n.check,r,d,s)),o-=d,s+=d,n.length-=d),n.length))break t;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===o)break t;d=0;do{v=r[s+d++],n.head&&v&&n.length<65536&&(n.head.name+=String.fromCharCode(v))}while(v&&d<o);if(512&n.flags&&4&n.wrap&&(n.check=H(n.check,r,d,s)),o-=d,s+=d,v)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=16187;case 16187:if(4096&n.flags){if(0===o)break t;d=0;do{v=r[s+d++],n.head&&v&&n.length<65536&&(n.head.comment+=String.fromCharCode(v))}while(v&&d<o);if(512&n.flags&&4&n.wrap&&(n.check=H(n.check,r,d,s)),o-=d,s+=d,v)break t}else n.head&&(n.head.comment=null);n.mode=16188;case 16188:if(512&n.flags){for(;f<16;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(4&n.wrap&&l!==(65535&n.check)){t.msg="header crc mismatch",n.mode=$e;break}l=0,f=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=De;break;case 16189:for(;f<32;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}t.adler=n.check=je(l),l=0,f=0,n.mode=Ne;case Ne:if(0===n.havedict)return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,n.hold=l,n.bits=f,ze;t.adler=n.check=1,n.mode=De;case De:if(e===xe||e===Be)break t;case Ce:if(n.last){l>>>=7&f,f-=7&f,n.mode=Me;break}for(;f<3;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}switch(n.last=1&l,l>>>=1,f-=1,3&l){case 0:n.mode=16193;break;case 1:if(Qe(n),n.mode=Fe,e===Be){l>>>=2,f-=2;break t}break;case 2:n.mode=16196;break;case 3:t.msg="invalid block type",n.mode=$e}l>>>=2,f-=2;break;case 16193:for(l>>>=7&f,f-=7&f;f<32;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if((65535&l)!=(l>>>16^65535)){t.msg="invalid stored block lengths",n.mode=$e;break}if(n.length=65535&l,l=0,f=0,n.mode=Ze,e===Be)break t;case Ze:n.mode=16195;case 16195:if(d=n.length,d){if(d>o&&(d=o),d>h&&(d=h),0===d)break t;i.set(r.subarray(s,s+d),a),o-=d,s+=d,h-=d,a+=d,n.length-=d;break}n.mode=De;break;case 16196:for(;f<14;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(n.nlen=257+(31&l),l>>>=5,f-=5,n.ndist=1+(31&l),l>>>=5,f-=5,n.ncode=4+(15&l),l>>>=4,f-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=$e;break}n.have=0,n.mode=16197;case 16197:for(;n.have<n.ncode;){for(;f<3;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.lens[z[n.have++]]=7&l,l>>>=3,f-=3}for(;n.have<19;)n.lens[z[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,U={bits:n.lenbits},E=ve(0,n.lens,0,19,n.lencode,0,n.work,U),n.lenbits=U.bits,E){t.msg="invalid code lengths set",n.mode=$e;break}n.have=0,n.mode=16198;case 16198:for(;n.have<n.nlen+n.ndist;){for(;x=n.lencode[l&(1<<n.lenbits)-1],p=x>>>24,w=x>>>16&255,b=65535&x,!(p<=f);){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(b<16)l>>>=p,f-=p,n.lens[n.have++]=b;else{if(16===b){for(A=p+2;f<A;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(l>>>=p,f-=p,0===n.have){t.msg="invalid bit length repeat",n.mode=$e;break}v=n.lens[n.have-1],d=3+(3&l),l>>>=2,f-=2}else if(17===b){for(A=p+3;f<A;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}l>>>=p,f-=p,v=0,d=3+(7&l),l>>>=3,f-=3}else{for(A=p+7;f<A;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}l>>>=p,f-=p,v=0,d=11+(127&l),l>>>=7,f-=7}if(n.have+d>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=$e;break}for(;d--;)n.lens[n.have++]=v}}if(n.mode===$e)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=$e;break}if(n.lenbits=9,U={bits:n.lenbits},E=ve(1,n.lens,0,n.nlen,n.lencode,0,n.work,U),n.lenbits=U.bits,E){t.msg="invalid literal/lengths set",n.mode=$e;break}if(n.distbits=6,n.distcode=n.distdyn,U={bits:n.distbits},E=ve(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,U),n.distbits=U.bits,E){t.msg="invalid distances set",n.mode=$e;break}if(n.mode=Fe,e===Be)break t;case Fe:n.mode=Pe;case Pe:if(o>=6&&h>=258){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,n.hold=l,n.bits=f,we(t,c),a=t.next_out,i=t.output,h=t.avail_out,s=t.next_in,r=t.input,o=t.avail_in,l=n.hold,f=n.bits,n.mode===De&&(n.back=-1);break}for(n.back=0;x=n.lencode[l&(1<<n.lenbits)-1],p=x>>>24,w=x>>>16&255,b=65535&x,!(p<=f);){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(w&&!(240&w)){for(m=p,y=w,k=b;x=n.lencode[k+((l&(1<<m+y)-1)>>m)],p=x>>>24,w=x>>>16&255,b=65535&x,!(m+p<=f);){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}l>>>=m,f-=m,n.back+=m}if(l>>>=p,f-=p,n.back+=p,n.length=b,0===w){n.mode=16205;break}if(32&w){n.back=-1,n.mode=De;break}if(64&w){t.msg="invalid literal/length code",n.mode=$e;break}n.extra=15&w,n.mode=16201;case 16201:if(n.extra){for(A=n.extra;f<A;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,f-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[l&(1<<n.distbits)-1],p=x>>>24,w=x>>>16&255,b=65535&x,!(p<=f);){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(!(240&w)){for(m=p,y=w,k=b;x=n.distcode[k+((l&(1<<m+y)-1)>>m)],p=x>>>24,w=x>>>16&255,b=65535&x,!(m+p<=f);){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}l>>>=m,f-=m,n.back+=m}if(l>>>=p,f-=p,n.back+=p,64&w){t.msg="invalid distance code",n.mode=$e;break}n.offset=b,n.extra=15&w,n.mode=16203;case 16203:if(n.extra){for(A=n.extra;f<A;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,f-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=$e;break}n.mode=16204;case 16204:if(0===h)break t;if(d=c-h,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=$e;break}d>n.wnext?(d-=n.wnext,g=n.wsize-d):g=n.wnext-d,d>n.length&&(d=n.length),_=n.window}else _=i,g=a-n.offset,d=n.length;d>h&&(d=h),h-=d,n.length-=d;do{i[a++]=_[g++]}while(--d);0===n.length&&(n.mode=Pe);break;case 16205:if(0===h)break t;i[a++]=n.length,h--,n.mode=Pe;break;case Me:if(n.wrap){for(;f<32;){if(0===o)break t;o--,l|=r[s++]<<f,f+=8}if(c-=h,t.total_out+=c,n.total+=c,4&n.wrap&&c&&(t.adler=n.check=n.flags?H(n.check,i,c,a-c):$(n.check,i,c,a-c)),c=h,4&n.wrap&&(n.flags?l:je(l))!==n.check){t.msg="incorrect data check",n.mode=$e;break}l=0,f=0}n.mode=16207;case 16207:if(n.wrap&&n.flags){for(;f<32;){if(0===o)break t;o--,l+=r[s++]<<f,f+=8}if(4&n.wrap&&l!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=$e;break}l=0,f=0}n.mode=16208;case 16208:E=Ae;break t;case $e:E=Re;break t;case 16210:return Oe;default:return Ie}return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,n.hold=l,n.bits=f,(n.wsize||c!==t.avail_out&&n.mode<$e&&(n.mode<Me||e!==Ee))&&tn(t,t.output,t.next_out,c-t.avail_out),u-=t.avail_in,c-=t.avail_out,t.total_in+=u,t.total_out+=c,n.total+=c,4&n.wrap&&c&&(t.adler=n.check=n.flags?H(n.check,i,c,t.next_out-c):$(n.check,i,c,t.next_out-c)),t.data_type=n.bits+(n.last?64:0)+(n.mode===De?128:0)+(n.mode===Fe||n.mode===Ze?256:0),(0===u&&0===c||e===Ee)&&E===Ue&&(E=Se),E},sn=t=>{if(Ve(t))return Ie;let e=t.state;return e.window&&(e.window=null),t.state=null,Ue},an=(t,e)=>{if(Ve(t))return Ie;const n=t.state;return 2&n.wrap?(n.head=e,e.done=!1,Ue):Ie},on=(t,e)=>{const n=e.length;let r,i,s;return Ve(t)?Ie:(r=t.state,0!==r.wrap&&r.mode!==Ne?Ie:r.mode===Ne&&(i=1,i=$(i,e,n,0),i!==r.check)?Re:(s=tn(t,e,n,n),s?(r.mode=16210,Oe):(r.havedict=1,Ue)))},hn=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ln=Object.prototype.toString,{Z_NO_FLUSH:fn,Z_FINISH:un,Z_OK:cn,Z_STREAM_END:dn,Z_NEED_DICT:gn,Z_STREAM_ERROR:_n,Z_DATA_ERROR:pn,Z_MEM_ERROR:wn}=Y;function bn(t){this.options=Gt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(15&e.windowBits||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ne,this.strm.avail_out=0;let n=nn(this.strm,e.windowBits);if(n!==cn)throw new Error(V[n]);if(this.header=new hn,an(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Qt(e.dictionary):"[object ArrayBuffer]"===ln.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=on(this.strm,e.dictionary),n!==cn)))throw new Error(V[n])}function mn(t,e){const n=new bn(e);if(n.push(t),n.err)throw n.msg||V[n.err];return n.result}bn.prototype.push=function(t,e){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,a,o;if(this.ended)return!1;for(a=e===~~e?e:!0===e?un:fn,"[object ArrayBuffer]"===ln.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=rn(n,a),s===gn&&i&&(s=on(n,i),s===cn?s=rn(n,a):s===pn&&(s=gn));n.avail_in>0&&s===dn&&n.state.wrap>0&&0!==t[n.next_in];)en(n),s=rn(n,a);switch(s){case _n:case pn:case gn:case wn:return this.onEnd(s),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(0===n.avail_out||s===dn))if("string"===this.options.to){let t=ee(n.output,n.next_out),e=n.next_out-t,i=te(n.output,t);n.next_out=e,n.avail_out=r-e,e&&n.output.set(n.output.subarray(t,t+e),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==cn||0!==o){if(s===dn)return s=sn(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},bn.prototype.onData=function(t){this.chunks.push(t)},bn.prototype.onEnd=function(t){t===cn&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Wt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var yn={Inflate:bn,inflate:mn,inflateRaw:function(t,e){return(e=e||{}).raw=!0,mn(t,e)},ungzip:mn,constants:Y};const{Deflate:kn,deflate:vn,deflateRaw:En,gzip:xn}=_e,{Inflate:Bn,inflate:Un,inflateRaw:An,ungzip:zn}=yn;var In=An;class Rn extends Error{constructor(t){super(t),this.code="ERR_ABORTED"}}function On(t){if(t&&t.aborted){if("undefined"==typeof DOMException){const t=new Rn("aborted");throw t.code="ERR_ABORTED",t}throw new DOMException("aborted","AbortError")}}const Sn="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function Tn(t,e,n,r){return t<r&&e>=n}class Ln{constructor(t,e,n,r,a,h){if(this.bbi=t,this.refsByName=e,this.cirTreeOffset=n,this.isBigEndian=r,this.isCompressed=a,this.blockType=h,this.featureCache=new s.A({cache:new(o())({maxSize:1e3}),fill:async(t,e)=>{const n=t.length,r=t.offset,{buffer:s}=await this.bbi.read(i.hp.alloc(n),0,n,r,{signal:e});return s}}),!(n>=0))throw new Error("invalid cirTreeOffset!")}async readWigData(t,e,n,r,s){try{const{refsByName:a,bbi:o,cirTreeOffset:l,isBigEndian:f}=this,u=a[t];void 0===u&&r.complete();const c={chrId:u,start:e,end:n};this.cirTreePromise||(this.cirTreePromise=o.read(i.hp.alloc(48),0,48,l,s));const{buffer:d}=await this.cirTreePromise,g=f?d.readUInt32BE(4):d.readUInt32LE(4);let _=[],p=0;const w=!0,b=(t,e,n)=>{try{const r=t.subarray(e),i=new DataView(r.buffer,r.byteOffset,r.length);let s=0;const a=i.getUint8(s);s+=2;const o=i.getUint16(s,w);if(s+=2,1===a){const t=[];for(let e=0;e<o;e++){const e=i.getUint32(s,w);s+=4;const n=i.getUint32(s,w);s+=4;const r=i.getUint32(s,w);s+=4;const a=i.getUint32(s,w);s+=4;const o=Number(i.getBigUint64(s,w));s+=8;const h=Number(i.getBigUint64(s,w));s+=8,t.push({startChrom:e,startBase:n,endBase:a,endChrom:r,blockOffset:o,blockSize:h,offset:s})}_=_.concat(t.filter((t=>m(t))).map((t=>({offset:t.blockOffset,length:t.blockSize}))))}else if(0===a){const t=[];for(let e=0;e<o;e++){const e=i.getUint32(s,w);s+=4;const n=i.getUint32(s,w);s+=4;const r=i.getUint32(s,w);s+=4;const a=i.getUint32(s,w);s+=4;const o=Number(i.getBigUint64(s,w));s+=8,t.push({startChrom:e,startBase:n,endChrom:r,endBase:a,blockOffset:o,offset:s})}const e=t.filter((t=>m(t))).map((t=>t.blockOffset));e.length>0&&k(e,n+1)}}catch(t){r.error(t)}},m=t=>{const{startChrom:r,startBase:i,endChrom:s,endBase:a}=t;return(r<u||r===u&&i<=n)&&(s>u||s===u&&a>=e)},y=async(t,e,n)=>{try{const i=e.max-e.min,a=e.min,o=await this.featureCache.get(`${i}_${a}`,{length:i,offset:a},null==s?void 0:s.signal);for(const i of t)e.contains(i)&&(b(o,i-a,n),p-=1,0===p&&this.readFeatures(r,_,{...s,request:c}).catch((t=>{r.error(t)})))}catch(t){r.error(t)}},k=(t,e)=>{try{p+=t.length;const n=4+32*g;let r=new h([{min:t[0],max:t[0]+n}]);for(let e=1;e<t.length;e+=1){const i=new h([{min:t[e],max:t[e]+n}]);r=r.union(i)}r.getRanges().map((n=>y(t,n,e)))}catch(t){r.error(t)}};return void k([Number(l)+48],1)}catch(t){r.error(t)}}parseSummaryBlock(t,e,n){const r=[];let i=e;const s=new DataView(t.buffer,t.byteOffset,t.length);for(;i<t.byteLength;){const t=s.getUint32(i,!0);i+=4;const e=s.getUint32(i,!0);i+=4;const a=s.getUint32(i,!0);i+=4;const o=s.getUint32(i,!0);i+=4;const h=s.getFloat32(i,!0);i+=4;const l=s.getFloat32(i,!0);i+=4;const f=s.getFloat32(i,!0);i+=4,i+=4,(!n||t===n.chrId&&Tn(e,a,n.start,n.end))&&r.push({start:e,end:a,maxScore:l,minScore:h,summary:!0,score:f/(o||1)})}return r}parseBigBedBlock(t,e,n,r){var i;const s=[];let a=e;const o=!0,h=t,l=new DataView(h.buffer,h.byteOffset,h.length);for(;a<t.byteLength;){const e=a,r=l.getUint32(a,o);a+=4;const h=l.getInt32(a,o);a+=4;const f=l.getInt32(a,o);a+=4;let u=a;for(;u<t.length&&0!==t[u];u++);const c=t.subarray(a,u),d=null!==(i=null==Sn?void 0:Sn.decode(c))&&void 0!==i?i:c.toString();a=u+1,s.push({chromId:r,start:h,end:f,rest:d,uniqueId:`bb-${n+e}`})}return r?s.filter((t=>Tn(t.start,t.end,r.start,r.end))):s}parseBigWigBlock(t,e,n){const r=t.subarray(e),i=new DataView(r.buffer,r.byteOffset,r.length);let s=0;s+=4;const a=i.getInt32(s,!0);s+=8;const o=i.getUint32(s,!0);s+=4;const h=i.getUint32(s,!0);s+=4;const l=i.getUint8(s);s+=2;const f=i.getUint16(s,!0);s+=2;const u=new Array(f);switch(l){case 1:for(let t=0;t<f;t++){const e=i.getInt32(s,!0);s+=4;const n=i.getInt32(s,!0);s+=4;const r=i.getFloat32(s,!0);s+=4,u[t]={start:e,end:n,score:r}}break;case 2:for(let t=0;t<f;t++){const e=i.getInt32(s,!0);s+=4;const n=i.getFloat32(s,!0);s+=4,u[t]={score:n,start:e,end:e+h}}break;case 3:for(let t=0;t<f;t++){const e=i.getFloat32(s,!0);s+=4;const n=a+t*o;u[t]={score:e,start:n,end:n+h}}}return n?u.filter((t=>Tn(t.start,t.end,n.start,n.end))):u}async readFeatures(t,e,n={}){try{const{blockType:r,isCompressed:i}=this,{signal:s,request:a}=n,o=function(t){t.sort(((t,e)=>t.offset-e.offset));const e=[];let n,r;for(const i of t)n&&r&&i.offset-r<=2e3?(n.length=n.length+i.length-r+i.offset,n.blocks.push(i)):e.push(n={blocks:[i],length:i.length,offset:i.offset}),r=n.offset+n.length;return e}(e);On(s),await Promise.all(o.map((async e=>{On(s);const{length:n,offset:o}=e,h=await this.featureCache.get(`${n}_${o}`,e,s);for(const n of e.blocks){On(s);let o=Number(n.offset)-Number(e.offset),f=h;switch(i&&(l=h.subarray(o),f=In(l.subarray(2)),o=0),On(s),r){case"summary":t.next(this.parseSummaryBlock(f,o,a));break;case"bigwig":t.next(this.parseBigWigBlock(f,o,a));break;case"bigbed":t.next(this.parseBigBedBlock(f,o,256*Number(n.offset),a));break;default:console.warn(`Don't know what to do with ${r}`)}}var l}))),t.complete()}catch(e){t.error(e)}}}var Nn=n(45834),Dn=n(89592),Cn=n(44728),Zn=n(82088);const Fn=-2003829722,Pn=-2021002517;class Mn{getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch((t=>{throw this.headerP=void 0,t}))),this.headerP}constructor(t){const{filehandle:e,renameRefSeqs:n=t=>t,path:r,url:i}=t;if(this.renameRefSeqs=n,e)this.bbi=e;else if(i)this.bbi=new Nn.Tx(i);else{if(!r)throw new Error("no file given");this.bbi=new Nn.EY(r)}}async _getHeader(t){const e=await this._getMainHeader(t),n=await this._readChromTree(e,t);return{...e,...n}}async _getMainHeader(t,e=2e3){const n=!0,{buffer:r}=await this.bbi.read(i.hp.alloc(e),0,e,0,t),s=this._isBigEndian(r),a=r,o=new DataView(a.buffer,a.byteOffset,a.length);let h=0;const l=o.getInt32(h,n);h+=4;const f=o.getUint16(h,n);h+=2;const u=o.getUint16(h,n);h+=2;const c=Number(o.getBigUint64(h,n));h+=8;const d=Number(o.getBigUint64(h,n));h+=8;const g=Number(o.getBigUint64(h,n));h+=8;const _=o.getUint16(h,n);h+=2;const p=o.getUint16(h,n);h+=2;const w=Number(o.getBigUint64(h,n));h+=8;const b=Number(o.getBigUint64(h,n));h+=8;const m=o.getUint32(h,n);h+=4;const y=Number(o.getBigUint64(h,n));h+=8;const k=[];for(let t=0;t<u;t++){const t=o.getUint32(h,n);h+=4;const e=o.getUint32(h,n);h+=4;const r=Number(o.getBigUint64(h,n));h+=8;const i=Number(o.getBigUint64(h,n));h+=8,k.push({reductionLevel:t,reserved:e,dataOffset:r,indexOffset:i})}const v=l===Pn?"bigbed":"bigwig";if(w>e||b>e-40)return this._getMainHeader(t,2*e);let E;if(!b)throw new Error("no stats");{const t=r.subarray(Number(b));let e=0;const i=new DataView(t.buffer,t.byteOffset,t.length),s=Number(i.getBigUint64(e,n));e+=8;const a=i.getFloat64(e,n);e+=8;const o=i.getFloat64(e,n);e+=8;const h=i.getFloat64(e,n);e+=8;const l=i.getFloat64(e,n);e+=8,E={scoreMin:a,scoreMax:o,scoreSum:h,scoreSumSquares:l,basesCovered:s}}return{zoomLevels:k,magic:l,extHeaderOffset:y,numZoomLevels:u,fieldCount:_,totalSummary:E,definedFieldCount:p,uncompressBufSize:m,asOffset:w,chromTreeOffset:c,totalSummaryOffset:b,unzoomedDataOffset:d,unzoomedIndexOffset:g,fileType:v,version:f,isBigEndian:s,autoSql:w?r.subarray(w,r.indexOf(0,w)).toString():""}}_isBigEndian(t){let e=t.readInt32LE(0);if(e===Fn||e===Pn)return!1;if(e=t.readInt32BE(0),e===Fn||e===Pn)return!0;throw new Error("not a BigWig/BigBed file")}async _readChromTree(t,e){const n=!t.isBigEndian,r=[],s={};let a=t.unzoomedDataOffset;const o=t.chromTreeOffset;for(;a%4!=0;)a+=1;const h=a-o,{buffer:l}=await this.bbi.read(i.hp.alloc(h),0,h,Number(o),e),f=l,u=new DataView(f.buffer,f.byteOffset,f.length);let c=0;c+=4,c+=4;const d=u.getUint32(c,n);c+=4,c+=4,c+=8;const g=async t=>{let e=t;if(e>=l.length)throw new Error("reading beyond end of buffer");const i=u.getUint8(e);e+=2;const a=u.getUint16(e,n);if(e+=2,i)for(let t=0;t<a;t++){const t=l.subarray(e,e+d).toString().replaceAll("\0","");e+=d;const i=u.getUint32(e,n);e+=4;const a=u.getUint32(e,n);e+=4;const o={name:t,id:i,length:a};s[this.renameRefSeqs(t)]=i,r[i]=o}else{const t=[];for(let r=0;r<a;r++){e+=d;const r=Number(u.getBigUint64(e,n));e+=8,t.push(g(Number(r)-Number(o)))}await Promise.all(t)}};return await g(32),{refsByName:s,refsByNumber:r}}async getUnzoomedView(t){const{unzoomedIndexOffset:e,refsByName:n,uncompressBufSize:r,isBigEndian:i,fileType:s}=await this.getHeader(t);return new Ln(this.bbi,n,e,i,r>0,s)}async getFeatureStream(t,e,n,r){await this.getHeader(r);const i=this.renameRefSeqs(t);let s;const{basesPerSpan:a,scale:o}=r||{};return s=a?await this.getView(1/a,r):o?await this.getView(o,r):await this.getView(1,r),new Dn.c((t=>{s.readWigData(i,e,n,t,r).catch((e=>{t.error(e)}))}))}async getFeatures(t,e,n,r){const i=await this.getFeatureStream(t,e,n,r);return(await(0,Cn._)(i.pipe((0,Zn.$)()))).flat()}}class $n extends Mn{async getView(t,e){const{zoomLevels:n,refsByName:r,isBigEndian:i,uncompressBufSize:s}=await this.getHeader(e),a=1/t;for(let t=n.length-1;t>=0;t-=1){const e=n[t];if(e&&e.reductionLevel<=2*a)return new Ln(this.bbi,r,e.indexOffset,i,s>0,"summary")}return this.getUnzoomedView(e)}}var jn=n(62718),Hn=n(69652),Vn=n(34796);class Yn extends Mn{constructor(){super(...arguments),this.readIndicesCache=new s.A({cache:new(o())({maxSize:1}),fill:(t,e)=>this._readIndices({...t,signal:e})})}readIndices(t={}){const{signal:e,...n}=t;return this.readIndicesCache.get(JSON.stringify(n),t,e)}async getView(t,e){return this.getUnzoomedView(e)}async _readIndices(t){const{extHeaderOffset:e,isBigEndian:n}=await this.getHeader(t),{buffer:r}=await this.bbi.read(i.hp.alloc(64),0,64,Number(e)),s=!n,a=r,o=new DataView(a.buffer,a.byteOffset,a.length);let h=0;h+=2;const l=o.getUint16(h,s);h+=2;const f=Number(o.getBigUint64(h,s));if(h+=8,0===l)return[];const u=20*l,{buffer:c}=await this.bbi.read(i.hp.alloc(u),0,u,Number(f)),d=[];for(let t=0;t<l;t+=1){const e=c.subarray(20*t),n=new DataView(e.buffer,e.byteOffset,e.length);let r=0;const i=n.getInt16(r,s);r+=2;const a=n.getInt16(r,s);r+=2;const o=Number(n.getBigUint64(r,s));r+=12;const h=n.getInt16(r,s);d.push({type:i,fieldcount:a,offset:Number(o),field:h})}return d}async searchExtraIndexBlocks(t,e={}){const{isBigEndian:n}=await this.getHeader(e),r=await this.readIndices(e);if(0===r.length)return[];const s=r.map((async r=>{const{offset:s,field:a}=r,{buffer:o}=await this.bbi.read(i.hp.alloc(32),0,32,s,e),h=!n,l=o,f=new DataView(l.buffer,l.byteOffset,l.length);let u=0;u+=4;const c=f.getInt32(u,h);u+=4;const d=f.getInt32(u,h);u+=4;const g=f.getInt32(u,h);u+=4,u+=8;const _=async n=>{const r=Number(n),s=4+c*(d+g),{buffer:o}=await this.bbi.read(i.hp.alloc(s),0,s,r,e),l=o,f=new DataView(l.buffer,l.byteOffset,l.length);let u=0;const p=f.getInt8(u);u+=2;const w=f.getInt16(u,h);u+=2;const b=[];if(0===p){const e=[];for(let t=0;t<w;t++){const t=l.subarray(u,u+d).toString().replaceAll("\0","");u+=d;const n=Number(f.getBigUint64(u,h));u+=8,e.push({key:t,offset:n})}let n=0;for(const{key:r,offset:i}of e){if(t.localeCompare(r)<0&&n)return _(n);n=i}return _(n)}if(1!==p);else{for(let t=0;t<w;t++){const t=l.subarray(u,u+d).toString().replaceAll("\0","");u+=d;const e=Number(f.getBigUint64(u,h));u+=8;const n=f.getUint32(u,h);u+=4;const r=f.getUint32(u,h);u+=4,b.push({key:t,offset:e,length:n,reserved:r})}for(const e of b)if(e.key===t)return{...e,field:a}}};return _(s+32)}));return(await Promise.all(s)).filter((t=>!!t))}async searchExtraIndex(t,e={}){const n=await this.searchExtraIndexBlocks(t,e);if(0===n.length)return[];const r=await this.getUnzoomedView(e),i=n.map((t=>new Dn.c((n=>{r.readFeatures(n,[t],e).catch((t=>{n.error(t)}))})).pipe((0,Hn.T)(((t,e)=>t.concat(e))),(0,Vn.T)((e=>{for(const n of e)n.field=t.field;return e})))));return(await(0,Cn._)((0,jn.h)(...i))).filter((e=>{var n;return(null===(n=e.rest)||void 0===n?void 0:n.split("\t")[(e.field||0)-3])===t}))}}},26094:(t,e,n)=>{const r=n(47130),i=n(96607),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.hp=h,e.IS=50;const a=2147483647;function o(t){if(t>a)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,n){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return l(t,e,n)}function l(t,e,n){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const n=0|_(t,e);let r=o(n);const i=r.write(t,e);return i!==n&&(r=r.slice(0,i)),r}(t,e);if(ArrayBuffer.isView(t))return function(t){if(G(t,Uint8Array)){const e=new Uint8Array(t);return d(e.buffer,e.byteOffset,e.byteLength)}return c(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(G(t,ArrayBuffer)||t&&G(t.buffer,ArrayBuffer))return d(t,e,n);if("undefined"!=typeof SharedArrayBuffer&&(G(t,SharedArrayBuffer)||t&&G(t.buffer,SharedArrayBuffer)))return d(t,e,n);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=t.valueOf&&t.valueOf();if(null!=r&&r!==t)return h.from(r,e,n);const i=function(t){if(h.isBuffer(t)){const e=0|g(t.length),n=o(e);return 0===n.length||t.copy(n,0,0,e),n}return void 0!==t.length?"number"!=typeof t.length||W(t.length)?o(0):c(t):"Buffer"===t.type&&Array.isArray(t.data)?c(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function f(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return f(t),o(t<0?0:0|g(t))}function c(t){const e=t.length<0?0:0|g(t.length),n=o(e);for(let r=0;r<e;r+=1)n[r]=255&t[r];return n}function d(t,e,n){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(n||0))throw new RangeError('"length" is outside of buffer bounds');let r;return r=void 0===e&&void 0===n?new Uint8Array(t):void 0===n?new Uint8Array(t,e):new Uint8Array(t,e,n),Object.setPrototypeOf(r,h.prototype),r}function g(t){if(t>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|t}function _(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||G(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const n=t.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return q(t).length;default:if(i)return r?-1:Y(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,n){let r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,n);case"utf8":case"utf-8":return U(this,e,n);case"ascii":return z(this,e,n);case"latin1":case"binary":return I(this,e,n);case"base64":return B(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function w(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}function b(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),W(n=+n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=h.from(e,r)),h.isBuffer(e))return 0===e.length?-1:m(t,e,n,r,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):m(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function m(t,e,n,r,i){let s,a=1,o=t.length,h=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,o/=2,h/=2,n/=2}function l(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){let r=-1;for(s=n;s<o;s++)if(l(t,s)===l(e,-1===r?0:s-r)){if(-1===r&&(r=s),s-r+1===h)return r*a}else-1!==r&&(s-=s-r),r=-1}else for(n+h>o&&(n=o-h),s=n;s>=0;s--){let n=!0;for(let r=0;r<h;r++)if(l(t,s+r)!==l(e,r)){n=!1;break}if(n)return s}return-1}function y(t,e,n,r){n=Number(n)||0;const i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;const s=e.length;let a;for(r>s/2&&(r=s/2),a=0;a<r;++a){const r=parseInt(e.substr(2*a,2),16);if(W(r))return a;t[n+a]=r}return a}function k(t,e,n,r){return K(Y(e,t.length-n),t,n,r)}function v(t,e,n,r){return K(function(t){const e=[];for(let n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function E(t,e,n,r){return K(q(e),t,n,r)}function x(t,e,n,r){return K(function(t,e){let n,r,i;const s=[];for(let a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,i=n%256,s.push(i),s.push(r);return s}(e,t.length-n),t,n,r)}function B(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function U(t,e,n){n=Math.min(t.length,n);const r=[];let i=e;for(;i<n;){const e=t[i];let s=null,a=e>239?4:e>223?3:e>191?2:1;if(i+a<=n){let n,r,o,h;switch(a){case 1:e<128&&(s=e);break;case 2:n=t[i+1],128==(192&n)&&(h=(31&e)<<6|63&n,h>127&&(s=h));break;case 3:n=t[i+1],r=t[i+2],128==(192&n)&&128==(192&r)&&(h=(15&e)<<12|(63&n)<<6|63&r,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:n=t[i+1],r=t[i+2],o=t[i+3],128==(192&n)&&128==(192&r)&&128==(192&o)&&(h=(15&e)<<18|(63&n)<<12|(63&r)<<6|63&o,h>65535&&h<1114112&&(s=h))}}null===s?(s=65533,a=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=a}return function(t){const e=t.length;if(e<=A)return String.fromCharCode.apply(String,t);let n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=A));return n}(r)}h.TYPED_ARRAY_SUPPORT=function(){try{const t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}(),h.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}}),h.poolSize=8192,h.from=function(t,e,n){return l(t,e,n)},Object.setPrototypeOf(h.prototype,Uint8Array.prototype),Object.setPrototypeOf(h,Uint8Array),h.alloc=function(t,e,n){return function(t,e,n){return f(t),t<=0?o(t):void 0!==e?"string"==typeof n?o(t).fill(e,n):o(t).fill(e):o(t)}(t,e,n)},h.allocUnsafe=function(t){return u(t)},h.allocUnsafeSlow=function(t){return u(t)},h.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==h.prototype},h.compare=function(t,e){if(G(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),G(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(t)||!h.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;let n=t.length,r=e.length;for(let i=0,s=Math.min(n,r);i<s;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},h.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},h.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return h.alloc(0);let n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;const r=h.allocUnsafe(e);let i=0;for(n=0;n<t.length;++n){let e=t[n];if(G(e,Uint8Array))i+e.length>r.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(r,i)):Uint8Array.prototype.set.call(r,e,i);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(r,i)}i+=e.length}return r},h.byteLength=_,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;e<t;e+=2)w(this,e,e+1);return this},h.prototype.swap32=function(){const t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let e=0;e<t;e+=4)w(this,e,e+3),w(this,e+1,e+2);return this},h.prototype.swap64=function(){const t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let e=0;e<t;e+=8)w(this,e,e+7),w(this,e+1,e+6),w(this,e+2,e+5),w(this,e+3,e+4);return this},h.prototype.toString=function(){const t=this.length;return 0===t?"":0===arguments.length?U(this,0,t):p.apply(this,arguments)},h.prototype.toLocaleString=h.prototype.toString,h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){let t="";const n=e.IS;return t=this.toString("hex",0,n).replace(/(.{2})/g,"$1 ").trim(),this.length>n&&(t+=" ... "),"<Buffer "+t+">"},s&&(h.prototype[s]=h.prototype.inspect),h.prototype.compare=function(t,e,n,r,i){if(G(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;let s=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0);const o=Math.min(s,a),l=this.slice(r,i),f=t.slice(e,n);for(let t=0;t<o;++t)if(l[t]!==f[t]){s=l[t],a=f[t];break}return s<a?-1:a<s?1:0},h.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},h.prototype.indexOf=function(t,e,n){return b(this,t,e,n,!0)},h.prototype.lastIndexOf=function(t,e,n){return b(this,t,e,n,!1)},h.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let s=!1;for(;;)switch(r){case"hex":return y(this,t,e,n);case"utf8":case"utf-8":return k(this,t,e,n);case"ascii":case"latin1":case"binary":return v(this,t,e,n);case"base64":return E(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,t,e,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const A=4096;function z(t,e,n){let r="";n=Math.min(t.length,n);for(let i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function I(t,e,n){let r="";n=Math.min(t.length,n);for(let i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function R(t,e,n){const r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);let i="";for(let r=e;r<n;++r)i+=X[t[r]];return i}function O(t,e,n){const r=t.slice(e,n);let i="";for(let t=0;t<r.length-1;t+=2)i+=String.fromCharCode(r[t]+256*r[t+1]);return i}function S(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function T(t,e,n,r,i,s){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<s)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function L(t,e,n,r,i){$(e,r,i,t,n,7);let s=Number(e&BigInt(4294967295));t[n++]=s,s>>=8,t[n++]=s,s>>=8,t[n++]=s,s>>=8,t[n++]=s;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[n++]=a,a>>=8,t[n++]=a,a>>=8,t[n++]=a,a>>=8,t[n++]=a,n}function N(t,e,n,r,i){$(e,r,i,t,n,7);let s=Number(e&BigInt(4294967295));t[n+7]=s,s>>=8,t[n+6]=s,s>>=8,t[n+5]=s,s>>=8,t[n+4]=s;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[n+3]=a,a>>=8,t[n+2]=a,a>>=8,t[n+1]=a,a>>=8,t[n]=a,n+8}function D(t,e,n,r,i,s){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function C(t,e,n,r,s){return e=+e,n>>>=0,s||D(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function Z(t,e,n,r,s){return e=+e,n>>>=0,s||D(t,0,n,8),i.write(t,e,n,r,52,8),n+8}h.prototype.slice=function(t,e){const n=this.length;(t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);const r=this.subarray(t,e);return Object.setPrototypeOf(r,h.prototype),r},h.prototype.readUintLE=h.prototype.readUIntLE=function(t,e,n){t>>>=0,e>>>=0,n||S(t,e,this.length);let r=this[t],i=1,s=0;for(;++s<e&&(i*=256);)r+=this[t+s]*i;return r},h.prototype.readUintBE=h.prototype.readUIntBE=function(t,e,n){t>>>=0,e>>>=0,n||S(t,e,this.length);let r=this[t+--e],i=1;for(;e>0&&(i*=256);)r+=this[t+--e]*i;return r},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||S(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||S(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||S(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||S(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||S(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=J((function(t){j(t>>>=0,"offset");const e=this[t],n=this[t+7];void 0!==e&&void 0!==n||H(t,this.length-8);const r=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+n*2**24;return BigInt(r)+(BigInt(i)<<BigInt(32))})),h.prototype.readBigUInt64BE=J((function(t){j(t>>>=0,"offset");const e=this[t],n=this[t+7];void 0!==e&&void 0!==n||H(t,this.length-8);const r=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+n;return(BigInt(r)<<BigInt(32))+BigInt(i)})),h.prototype.readIntLE=function(t,e,n){t>>>=0,e>>>=0,n||S(t,e,this.length);let r=this[t],i=1,s=0;for(;++s<e&&(i*=256);)r+=this[t+s]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},h.prototype.readIntBE=function(t,e,n){t>>>=0,e>>>=0,n||S(t,e,this.length);let r=e,i=1,s=this[t+--r];for(;r>0&&(i*=256);)s+=this[t+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*e)),s},h.prototype.readInt8=function(t,e){return t>>>=0,e||S(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||S(t,2,this.length);const n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt16BE=function(t,e){t>>>=0,e||S(t,2,this.length);const n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||S(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||S(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=J((function(t){j(t>>>=0,"offset");const e=this[t],n=this[t+7];void 0!==e&&void 0!==n||H(t,this.length-8);const r=this[t+4]+256*this[t+5]+65536*this[t+6]+(n<<24);return(BigInt(r)<<BigInt(32))+BigInt(e+256*this[++t]+65536*this[++t]+this[++t]*2**24)})),h.prototype.readBigInt64BE=J((function(t){j(t>>>=0,"offset");const e=this[t],n=this[t+7];void 0!==e&&void 0!==n||H(t,this.length-8);const r=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(r)<<BigInt(32))+BigInt(this[++t]*2**24+65536*this[++t]+256*this[++t]+n)})),h.prototype.readFloatLE=function(t,e){return t>>>=0,e||S(t,4,this.length),i.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||S(t,4,this.length),i.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||S(t,8,this.length),i.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||S(t,8,this.length),i.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,n,r){t=+t,e>>>=0,n>>>=0,r||T(this,t,e,n,Math.pow(2,8*n)-1,0);let i=1,s=0;for(this[e]=255&t;++s<n&&(i*=256);)this[e+s]=t/i&255;return e+n},h.prototype.writeUintBE=h.prototype.writeUIntBE=function(t,e,n,r){t=+t,e>>>=0,n>>>=0,r||T(this,t,e,n,Math.pow(2,8*n)-1,0);let i=n-1,s=1;for(this[e+i]=255&t;--i>=0&&(s*=256);)this[e+i]=t/s&255;return e+n},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=J((function(t,e=0){return L(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=J((function(t,e=0){return N(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e>>>=0,!r){const r=Math.pow(2,8*n-1);T(this,t,e,n,r-1,-r)}let i=0,s=1,a=0;for(this[e]=255&t;++i<n&&(s*=256);)t<0&&0===a&&0!==this[e+i-1]&&(a=1),this[e+i]=(t/s|0)-a&255;return e+n},h.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e>>>=0,!r){const r=Math.pow(2,8*n-1);T(this,t,e,n,r-1,-r)}let i=n-1,s=1,a=0;for(this[e+i]=255&t;--i>=0&&(s*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/s|0)-a&255;return e+n},h.prototype.writeInt8=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,n){return t=+t,e>>>=0,n||T(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=J((function(t,e=0){return L(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=J((function(t,e=0){return N(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,n){return C(this,t,e,!0,n)},h.prototype.writeFloatBE=function(t,e,n){return C(this,t,e,!1,n)},h.prototype.writeDoubleLE=function(t,e,n){return Z(this,t,e,!0,n)},h.prototype.writeDoubleBE=function(t,e,n){return Z(this,t,e,!1,n)},h.prototype.copy=function(t,e,n,r){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);const i=r-n;return this===t&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(e,n,r):Uint8Array.prototype.set.call(t,this.subarray(n,r),e),i},h.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!h.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===t.length){const e=t.charCodeAt(0);("utf8"===r&&e<128||"latin1"===r)&&(t=e)}}else"number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;let i;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(i=e;i<n;++i)this[i]=t;else{const s=h.isBuffer(t)?t:h.from(t,r),a=s.length;if(0===a)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(i=0;i<n-e;++i)this[i+e]=s[i%a]}return this};const F={};function P(t,e,n){F[t]=class extends n{constructor(){super(),Object.defineProperty(this,"message",{value:e.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${t}]`,this.stack,delete this.name}get code(){return t}set code(t){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:t,writable:!0})}toString(){return`${this.name} [${t}]: ${this.message}`}}}function M(t){let e="",n=t.length;const r="-"===t[0]?1:0;for(;n>=r+4;n-=3)e=`_${t.slice(n-3,n)}${e}`;return`${t.slice(0,n)}${e}`}function $(t,e,n,r,i,s){if(t>n||t<e){const r="bigint"==typeof e?"n":"";let i;throw i=s>3?0===e||e===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(s+1)}${r}`:`>= -(2${r} ** ${8*(s+1)-1}${r}) and < 2 ** ${8*(s+1)-1}${r}`:`>= ${e}${r} and <= ${n}${r}`,new F.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,n){j(e,"offset"),void 0!==t[e]&&void 0!==t[e+n]||H(e,t.length-(n+1))}(r,i,s)}function j(t,e){if("number"!=typeof t)throw new F.ERR_INVALID_ARG_TYPE(e,"number",t)}function H(t,e,n){if(Math.floor(t)!==t)throw j(t,n),new F.ERR_OUT_OF_RANGE(n||"offset","an integer",t);if(e<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${e}`,t)}P("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),P("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),P("ERR_OUT_OF_RANGE",(function(t,e,n){let r=`The value of "${t}" is out of range.`,i=n;return Number.isInteger(n)&&Math.abs(n)>2**32?i=M(String(n)):"bigint"==typeof n&&(i=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(i=M(i)),i+="n"),r+=` It must be ${e}. Received ${i}`,r}),RangeError);const V=/[^+/0-9A-Za-z-_]/g;function Y(t,e){let n;e=e||1/0;const r=t.length;let i=null;const s=[];for(let a=0;a<r;++a){if(n=t.charCodeAt(a),n>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;s.push(n)}else if(n<2048){if((e-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function q(t){return r.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function K(t,e,n,r){let i;for(i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function G(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function W(t){return t!=t}const X=function(){const t="0123456789abcdef",e=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let i=0;i<16;++i)e[r+i]=t[n]+t[i]}return e}();function J(t){return"undefined"==typeof BigInt?Q:t}function Q(){throw new Error("BigInt not supported")}}}]);
+//# sourceMappingURL=3902.69c7ff0c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3902.69c7ff0c.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,6 @@
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3902.69c7ff0c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3902.69c7ff0c.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@gmod/bbi/src/bigint-polyfill/pure.ts","../../../node_modules/@gmod/bbi/src/bigint-polyfill/polyfill.ts","../../../node_modules/@gmod/bbi/src/range.ts","../../../node_modules/@gmod/bbi/node_modules/pako/dist/pako.esm.mjs","../../../node_modules/@gmod/bbi/src/util.ts","../../../node_modules/@gmod/bbi/src/block-view.ts","../../../node_modules/@gmod/bbi/src/unzip-pako.ts","../../../node_modules/@gmod/bbi/src/bbi.ts","../../../node_modules/@gmod/bbi/src/bigwig.ts","../../../node_modules/@gmod/bbi/src/bigbed.ts","../../../node_modules/@gmod/bbi/node_modules/buffer/index.js"],"sourcesContent":["class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","const BigInt32 = BigInt(32)\n\nexport function getBigInt64(\n  dataView: DataView,\n  byteOffset: number,\n  littleEndian: boolean | undefined,\n): bigint {\n  const littleEndianMask = Number(!!littleEndian)\n  const bigEndianMask = Number(!littleEndian)\n\n  return (\n    (BigInt(\n      dataView.getInt32(byteOffset, littleEndian) * bigEndianMask +\n        dataView.getInt32(byteOffset + 4, littleEndian) * littleEndianMask,\n    ) <<\n      BigInt32) |\n    BigInt(\n      dataView.getUint32(byteOffset, littleEndian) * littleEndianMask +\n        dataView.getUint32(byteOffset + 4, littleEndian) * bigEndianMask,\n    )\n  )\n}\n\nexport function getBigUint64(\n  dataView: DataView,\n  byteOffset: number,\n  littleEndian: boolean | undefined,\n): bigint {\n  const a = dataView.getUint32(byteOffset, littleEndian)\n  const b = dataView.getUint32(byteOffset + 4, littleEndian)\n\n  const littleEndianMask = Number(!!littleEndian)\n  const bigEndianMask = Number(!littleEndian)\n\n  // This branch-less optimization is 77x faster than normal ternary operator.\n  // and only 3% slower than native implementation\n  // https://jsbench.me/p8kyhg1eqv/1\n  return (\n    (BigInt(a * bigEndianMask + b * littleEndianMask) << BigInt32) |\n    BigInt(a * littleEndianMask + b * bigEndianMask)\n  )\n}\n","import { getBigInt64, getBigUint64 } from './pure'\n\nif (!('getBigInt64' in DataView)) {\n  DataView.prototype.getBigInt64 = function (byteOffset, littleEndian) {\n    return getBigInt64(this, byteOffset, littleEndian)\n  }\n}\n\nif (!('getBigUint64' in DataView)) {\n  DataView.prototype.getBigUint64 = function (byteOffset, littleEndian) {\n    return getBigUint64(this, byteOffset, littleEndian)\n  }\n}\n","/**\n * Adapted from a combination of Range and _Compound in the\n * Dalliance Genome Explorer, (c) Thomas Down 2006-2010.\n */\n\nexport interface IRange {\n  min: number\n  max: number\n}\nexport default class Range {\n  public ranges: IRange[]\n\n  public constructor(arg1: IRange[]) {\n    this.ranges = arg1\n  }\n\n  get min() {\n    return this.ranges[0].min\n  }\n\n  get max() {\n    return this.ranges.at(-1)!.max\n  }\n\n  public contains(pos: number) {\n    for (const r of this.ranges) {\n      if (r.min <= pos && r.max >= pos) {\n        return true\n      }\n    }\n    return false\n  }\n\n  public isContiguous(): boolean {\n    return this.ranges.length > 1\n  }\n\n  public getRanges() {\n    return this.ranges.map(r => new Range([{ min: r.min, max: r.max }]))\n  }\n\n  public toString(): string {\n    return this.ranges.map(r => `[${r.min}-${r.max}]`).join(',')\n  }\n\n  public union(s1: Range) {\n    const ranges = [...this.getRanges(), ...s1.getRanges()].sort((a, b) => {\n      if (a.min < b.min) {\n        return -1\n      } else if (a.min > b.min) {\n        return 1\n      } else if (a.max < b.max) {\n        return -1\n      } else if (b.max > a.max) {\n        return 1\n      } else {\n        return 0\n      }\n    })\n    const oranges = [] as Range[]\n    let current = ranges[0]\n\n    for (const nxt of ranges) {\n      if (nxt.min > current.max + 1) {\n        oranges.push(current)\n        current = nxt\n      } else if (nxt.max > current.max) {\n        current = new Range([{ min: current.min, max: nxt.max }])\n      }\n    }\n    oranges.push(current)\n\n    return oranges.length === 1 ? oranges[0] : new Range(oranges)\n  }\n}\n","\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED          = 1;\n//const Z_HUFFMAN_ONLY      = 2;\n//const Z_RLE               = 3;\nconst Z_FIXED$1               = 4;\n//const Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY              = 0;\nconst Z_TEXT                = 1;\n//const Z_ASCII             = 1; // = Z_TEXT\nconst Z_UNKNOWN$1             = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES    = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1    = 3;\nconst MAX_MATCH$1    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1      = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1       = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1       = 30;\n/* number of distance codes */\n\nconst BL_CODES$1      = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1     = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK   = 256;\n/* end of block literal code */\n\nconst REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits =   /* extra bits for each length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits =   /* extra bits for each distance code */\n  new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits =  /* extra bits for each bit length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n  new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree  = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree  = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code    = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code  = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length   = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist     = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n  let res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nconst gen_bitlen = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n\n  const tree            = desc.dyn_tree;\n  const max_code        = desc.max_code;\n  const stree           = desc.stat_desc.static_tree;\n  const has_stree       = desc.stat_desc.has_stree;\n  const extra           = desc.stat_desc.extra_bits;\n  const base            = desc.stat_desc.extra_base;\n  const max_length      = desc.stat_desc.max_length;\n  let h;              /* heap index */\n  let n, m;           /* iterate over the tree elements */\n  let bits;           /* bit length */\n  let xbits;          /* extra bits */\n  let f;              /* frequency */\n  let overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Tracev((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n\n  const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n  let code = 0;              /* running code value */\n  let bits;                  /* bit index */\n  let n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS$1; bits++) {\n    code = (code + bl_count[bits - 1]) << 1;\n    next_code[bits] = code;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    let len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n};\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nconst tr_static_init = () => {\n\n  let n;        /* iterates over tree elements */\n  let bits;     /* bit counter */\n  let length;   /* length value */\n  let code;     /* code value */\n  let dist;     /* distance index */\n  const bl_count = new Array(MAX_BITS$1 + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES$1; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES$1; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES$1, MAX_BITS$1);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES$1, MAX_BL_BITS);\n\n  //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n  let n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES$1;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES$1;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n  const _n2 = n * 2;\n  const _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n\n  const v = s.heap[k];\n  let j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n\n  let dist;           /* distance of matched string */\n  let lc;             /* match length or unmatched char (if dist == 0) */\n  let sx = 0;         /* running index in sym_buf */\n  let code;           /* the code to send */\n  let extra;          /* number of extra bits to send */\n\n  if (s.sym_next !== 0) {\n    do {\n      dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n      dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n      lc = s.pending_buf[s.sym_buf + sx++];\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and sym_buf is ok: */\n      //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n    } while (sx < s.sym_next);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n\n  const tree     = desc.dyn_tree;\n  const stree    = desc.stat_desc.static_tree;\n  const has_stree = desc.stat_desc.has_stree;\n  const elems    = desc.stat_desc.elems;\n  let n, m;          /* iterate over heap elements */\n  let max_code = -1; /* largest code with non zero frequency */\n  let node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE$1;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n  let max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n  let rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"block list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n  /* block_mask is the bit mask of block-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  let block_mask = 0xf3ffc07f;\n  let n;\n\n  /* Check for non-textual (\"block-listed\") bytes. */\n  for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n    if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"allow-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS$1; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"block-listed\" or \"allow-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  bi_windup(s);        /* align on byte boundary */\n  put_short(s, stored_len);\n  put_short(s, ~stored_len);\n  if (stored_len) {\n    s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n  }\n  s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  let opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  let max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN$1) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->sym_next / 3));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block$1(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n  s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n  return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1  = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1  = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n  let s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n  let c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n  const t = crcTable;\n  const end = pos + len;\n\n  crc ^= -1;\n\n  for (let i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  Z_MEM_ERROR:       -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n  Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n  Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n  Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n  Z_UNKNOWN,\n  Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS      = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES       = 30;\n/* number of distance codes */\nconst BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE    =  42;    /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE    =  57;    /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE   =  69;    /* gzip extra block -> NAME_STATE */\nconst NAME_STATE    =  73;    /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE =  91;    /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE    = 103;    /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE    = 113;    /* deflate -> FINISH_STATE */\nconst FINISH_STATE  = 666;    /* stream complete */\n\nconst BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE     = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n  strm.msg = messages[errorCode];\n  return errorCode;\n};\n\nconst rank = (f) => {\n  return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n  let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n  let n, m;\n  let p;\n  let wsize = s.w_size;\n\n  n = s.hash_size;\n  p = n;\n  do {\n    m = s.head[--p];\n    s.head[p] = (m >= wsize ? m - wsize : 0);\n  } while (--n);\n  n = wsize;\n//#ifndef FASTEST\n  p = n;\n  do {\n    m = s.prev[--p];\n    s.prev[p] = (m >= wsize ? m - wsize : 0);\n    /* If n is not on any hash chain, prev[n] is garbage but\n     * its value will never be used.\n     */\n  } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n  const s = strm.state;\n\n  //_tr_flush_bits(s);\n  let len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n  strm.next_out  += len;\n  s.pending_out  += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending      -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n};\n\n\nconst flush_block_only = (s, last) => {\n  _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n  s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n  //  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n  let len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32_1(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32_1(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n  let chain_length = s.max_chain_length;      /* max hash chain length */\n  let scan = s.strstart; /* current string */\n  let match;                       /* matched string */\n  let len;                           /* length of current match */\n  let best_len = s.prev_length;              /* best match length so far */\n  let nice_match = s.nice_match;             /* stop if match long enough */\n  const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  const _win = s.window; // shortcut\n\n  const wmask = s.w_mask;\n  const prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  const strend = s.strstart + MAX_MATCH;\n  let scan_end1  = _win[scan + best_len - 1];\n  let scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nconst fill_window = (s) => {\n\n  const _w_size = s.w_size;\n  let n, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n      if (s.insert > s.strstart) {\n        s.insert = s.strstart;\n      }\n      slide_hash(s);\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    const curr = s.strstart + s.lookahead;\n//    let init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n  /* Smallest worthy block size when not flushing or finishing. By default\n   * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n   * large input and output buffers, the stored block size will be larger.\n   */\n  let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n  /* Copy as many min_block or larger stored blocks directly to next_out as\n   * possible. If flushing, copy the remaining available input to next_out as\n   * stored blocks, if there is enough space.\n   */\n  let len, left, have, last = 0;\n  let used = s.strm.avail_in;\n  do {\n    /* Set len to the maximum size block that we can copy directly with the\n     * available input data and output space. Set left to how much of that\n     * would be copied from what's left in the window.\n     */\n    len = 65535/* MAX_STORED */;     /* maximum deflate stored block length */\n    have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    if (s.strm.avail_out < have) {         /* need room for header */\n      break;\n    }\n      /* maximum stored block length that will fit in avail_out: */\n    have = s.strm.avail_out - have;\n    left = s.strstart - s.block_start;  /* bytes left in window */\n    if (len > left + s.strm.avail_in) {\n      len = left + s.strm.avail_in;   /* limit len to the input */\n    }\n    if (len > have) {\n      len = have;             /* limit len to the output */\n    }\n\n    /* If the stored block would be less than min_block in length, or if\n     * unable to copy all of the available input when flushing, then try\n     * copying to the window and the pending buffer instead. Also don't\n     * write an empty block when flushing -- deflate() does that.\n     */\n    if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n                        flush === Z_NO_FLUSH$2 ||\n                        len !== left + s.strm.avail_in)) {\n      break;\n    }\n\n    /* Make a dummy stored block in pending to get the header bytes,\n     * including any pending bits. This also updates the debugging counts.\n     */\n    last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n    _tr_stored_block(s, 0, 0, last);\n\n    /* Replace the lengths in the dummy stored block with len. */\n    s.pending_buf[s.pending - 4] = len;\n    s.pending_buf[s.pending - 3] = len >> 8;\n    s.pending_buf[s.pending - 2] = ~len;\n    s.pending_buf[s.pending - 1] = ~len >> 8;\n\n    /* Write the stored block header bytes. */\n    flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n//    /* Update debugging counts for the data about to be copied. */\n//    s->compressed_len += len << 3;\n//    s->bits_sent += len << 3;\n//#endif\n\n    /* Copy uncompressed bytes from the window to next_out. */\n    if (left) {\n      if (left > len) {\n        left = len;\n      }\n      //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n      s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n      s.strm.next_out += left;\n      s.strm.avail_out -= left;\n      s.strm.total_out += left;\n      s.block_start += left;\n      len -= left;\n    }\n\n    /* Copy uncompressed bytes directly from next_in to next_out, updating\n     * the check value.\n     */\n    if (len) {\n      read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n      s.strm.next_out += len;\n      s.strm.avail_out -= len;\n      s.strm.total_out += len;\n    }\n  } while (last === 0);\n\n  /* Update the sliding window with the last s->w_size bytes of the copied\n   * data, or append all of the copied data to the existing window if less\n   * than s->w_size bytes were copied. Also update the number of bytes to\n   * insert in the hash tables, in the event that deflateParams() switches to\n   * a non-zero compression level.\n   */\n  used -= s.strm.avail_in;    /* number of input bytes directly copied */\n  if (used) {\n    /* If any input was used, then no unused input remains in the window,\n     * therefore s->block_start == s->strstart.\n     */\n    if (used >= s.w_size) {  /* supplant the previous history */\n      s.matches = 2;     /* clear hash */\n      //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n      s.strstart = s.w_size;\n      s.insert = s.strstart;\n    }\n    else {\n      if (s.window_size - s.strstart <= used) {\n        /* Slide the window down. */\n        s.strstart -= s.w_size;\n        //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n        s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n        if (s.matches < 2) {\n          s.matches++;   /* add a pending slide_hash() */\n        }\n        if (s.insert > s.strstart) {\n          s.insert = s.strstart;\n        }\n      }\n      //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n      s.strstart += used;\n      s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n    }\n    s.block_start = s.strstart;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* If the last block was written to next_out, then done. */\n  if (last) {\n    return BS_FINISH_DONE;\n  }\n\n  /* If flushing and all input has been consumed, then done. */\n  if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n    s.strm.avail_in === 0 && s.strstart === s.block_start) {\n    return BS_BLOCK_DONE;\n  }\n\n  /* Fill the window with any remaining input. */\n  have = s.window_size - s.strstart;\n  if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n    /* Slide the window down. */\n    s.block_start -= s.w_size;\n    s.strstart -= s.w_size;\n    //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n    s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n    if (s.matches < 2) {\n      s.matches++;       /* add a pending slide_hash() */\n    }\n    have += s.w_size;      /* more space now */\n    if (s.insert > s.strstart) {\n      s.insert = s.strstart;\n    }\n  }\n  if (have > s.strm.avail_in) {\n    have = s.strm.avail_in;\n  }\n  if (have) {\n    read_buf(s.strm, s.window, s.strstart, have);\n    s.strstart += have;\n    s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* There was not enough avail_out to write a complete worthy or flushed\n   * stored block to next_out. Write a stored block to pending instead, if we\n   * have enough input for a worthy block, or if flushing and there is enough\n   * room for the remaining input as a stored block in the pending buffer.\n   */\n  have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    /* maximum stored block length that will fit in pending: */\n  have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n  min_block = have > s.w_size ? s.w_size : have;\n  left = s.strstart - s.block_start;\n  if (left >= min_block ||\n     ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n     s.strm.avail_in === 0 && left <= have)) {\n    len = left > have ? have : left;\n    last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n         len === left ? 1 : 0;\n    _tr_stored_block(s, s.block_start, len, last);\n    s.block_start += len;\n    flush_pending(s.strm);\n  }\n\n  /* We've done all we can with the available input and output. */\n  return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n  let hash_head;        /* head of the hash chain */\n  let bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n  let hash_head;          /* head of hash chain */\n  let bflush;              /* set if current block must be flushed */\n\n  let max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n  let bflush;            /* set if current block must be flushed */\n  let prev;              /* byte at distance one to match */\n  let scan, strend;      /* scan goes up to strend for length of run */\n\n  const _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n  let bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH$2) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nconst configuration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new Uint16Array(HEAP_SIZE * 2);\n  this.dyn_dtree  = new Uint16Array((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new Uint16Array((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new Uint16Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new Uint16Array(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.sym_buf = 0;        /* buffer for distances and literals/lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.sym_next = 0;      /* running index in sym_buf */\n  this.sym_end = 0;       /* symbol table full when sym_next reaches this */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const s = strm.state;\n  if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n                                s.status !== GZIP_STATE &&\n//#endif\n                                s.status !== EXTRA_STATE &&\n                                s.status !== NAME_STATE &&\n                                s.status !== COMMENT_STATE &&\n                                s.status !== HCRC_STATE &&\n                                s.status !== BUSY_STATE &&\n                                s.status !== FINISH_STATE)) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  const s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status =\n//#ifdef GZIP\n    s.wrap === 2 ? GZIP_STATE :\n//#endif\n    s.wrap ? INIT_STATE : BUSY_STATE;\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = -2;\n  _tr_init(s);\n  return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n  const ret = deflateResetKeep(strm);\n  if (ret === Z_OK$3) {\n    lm_init(strm.state);\n  }\n  return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n  if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n    return Z_STREAM_ERROR$2;\n  }\n  strm.state.gzhead = head;\n  return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR$2;\n  }\n  let wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION$1) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  const s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n  s.status = INIT_STATE;     /* to pass state test in deflateReset() */\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new Uint8Array(s.w_size * 2);\n  s.head = new Uint16Array(s.hash_size);\n  s.prev = new Uint16Array(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  /* We overlay pending_buf and sym_buf. This works since the average size\n   * for length/distance pairs over any compressed block is assured to be 31\n   * bits or less.\n   *\n   * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n   * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n   * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n   * possible fixed-codes length/distance pair is then 31 bits total.\n   *\n   * sym_buf starts one-fourth of the way into pending_buf. So there are\n   * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n   * in sym_buf is three bytes -- two for the distance and one for the\n   * literal/length. As each symbol is consumed, the pointer to the next\n   * sym_buf value to read moves forward three bytes. From that symbol, up to\n   * 31 bits are written to pending_buf. The closest the written pending_buf\n   * bits gets to the next sym_buf symbol to read is just before the last\n   * code is written. At that time, 31*(n-2) bits have been written, just\n   * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n   * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n   * symbols are written.) The closest the writing gets to what is unread is\n   * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n   * can range from 128 to 32768.\n   *\n   * Therefore, at a minimum, there are 142 bits of space between what is\n   * written and what is read in the overlain buffers, so the symbols cannot\n   * be overwritten by the compressed data. That space is actually 139 bits,\n   * due to the three-bit fixed-code block header.\n   *\n   * That covers the case where either Z_FIXED is specified, forcing fixed\n   * codes, or when the use of fixed codes is chosen, because that choice\n   * results in a smaller compressed block than dynamic codes. That latter\n   * condition then assures that the above analysis also covers all dynamic\n   * blocks. A dynamic-code block will only be chosen to be emitted if it has\n   * fewer bits than a fixed-code block would for the same set of symbols.\n   * Therefore its average symbol length is assured to be less than 31. So\n   * the compressed data for a dynamic block also cannot overwrite the\n   * symbols from which it is being constructed.\n   */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n  s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->sym_buf = s->pending_buf + s->lit_bufsize;\n  s.sym_buf = s.lit_bufsize;\n\n  //s->sym_end = (s->lit_bufsize - 1) * 3;\n  s.sym_end = (s.lit_bufsize - 1) * 3;\n  /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n  return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n  if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n\n  if (!strm.output ||\n      (strm.avail_in !== 0 && !strm.input) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n  }\n\n  const old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH$3) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n\n  /* Write the header */\n  if (s.status === INIT_STATE && s.wrap === 0) {\n    s.status = BUSY_STATE;\n  }\n  if (s.status === INIT_STATE) {\n    /* zlib header */\n    let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n    let level_flags = -1;\n\n    if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n      level_flags = 0;\n    } else if (s.level < 6) {\n      level_flags = 1;\n    } else if (s.level === 6) {\n      level_flags = 2;\n    } else {\n      level_flags = 3;\n    }\n    header |= (level_flags << 6);\n    if (s.strstart !== 0) { header |= PRESET_DICT; }\n    header += 31 - (header % 31);\n\n    putShortMSB(s, header);\n\n    /* Save the adler32 of the preset dictionary: */\n    if (s.strstart !== 0) {\n      putShortMSB(s, strm.adler >>> 16);\n      putShortMSB(s, strm.adler & 0xffff);\n    }\n    strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#ifdef GZIP\n  if (s.status === GZIP_STATE) {\n    /* gzip header */\n    strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n    put_byte(s, 31);\n    put_byte(s, 139);\n    put_byte(s, 8);\n    if (!s.gzhead) { // s->gzhead == Z_NULL\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, OS_CODE);\n      s.status = BUSY_STATE;\n\n      /* Compression must start with an empty pending buffer */\n      flush_pending(strm);\n      if (s.pending !== 0) {\n        s.last_flush = -1;\n        return Z_OK$3;\n      }\n    }\n    else {\n      put_byte(s, (s.gzhead.text ? 1 : 0) +\n                  (s.gzhead.hcrc ? 2 : 0) +\n                  (!s.gzhead.extra ? 0 : 4) +\n                  (!s.gzhead.name ? 0 : 8) +\n                  (!s.gzhead.comment ? 0 : 16)\n      );\n      put_byte(s, s.gzhead.time & 0xff);\n      put_byte(s, (s.gzhead.time >> 8) & 0xff);\n      put_byte(s, (s.gzhead.time >> 16) & 0xff);\n      put_byte(s, (s.gzhead.time >> 24) & 0xff);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, s.gzhead.os & 0xff);\n      if (s.gzhead.extra && s.gzhead.extra.length) {\n        put_byte(s, s.gzhead.extra.length & 0xff);\n        put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n      }\n      if (s.gzhead.hcrc) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n      }\n      s.gzindex = 0;\n      s.status = EXTRA_STATE;\n    }\n  }\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n      while (s.pending + left > s.pending_buf_size) {\n        let copy = s.pending_buf_size - s.pending;\n        // zmemcpy(s.pending_buf + s.pending,\n        //    s.gzhead.extra + s.gzindex, copy);\n        s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n        s.pending = s.pending_buf_size;\n        //--- HCRC_UPDATE(beg) ---//\n        if (s.gzhead.hcrc && s.pending > beg) {\n          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n        }\n        //---//\n        s.gzindex += copy;\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n        beg = 0;\n        left -= copy;\n      }\n      // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n      //              TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n      let gzhead_extra = new Uint8Array(s.gzhead.extra);\n      // zmemcpy(s->pending_buf + s->pending,\n      //     s->gzhead->extra + s->gzindex, left);\n      s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n      s.pending += left;\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = NAME_STATE;\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = COMMENT_STATE;\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n    }\n    s.status = HCRC_STATE;\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n      }\n      put_byte(s, strm.adler & 0xff);\n      put_byte(s, (strm.adler >> 8) & 0xff);\n      strm.adler = 0; //crc32(0L, Z_NULL, 0);\n    }\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#endif\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n    let bstate = s.level === 0 ? deflate_stored(s, flush) :\n                 s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n                 s.strategy === Z_RLE ? deflate_rle(s, flush) :\n                 configuration_table[s.level].func(s, flush);\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK$3;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        _tr_align(s);\n      }\n      else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        _tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH$1) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK$3;\n      }\n    }\n  }\n\n  if (flush !== Z_FINISH$3) { return Z_OK$3; }\n  if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const status = strm.state.status;\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n  let dictLength = dictionary.length;\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n  const wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    let tmpDict = new Uint8Array(s.w_size);\n    tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  const avail = strm.avail_in;\n  const next = strm.next_in;\n  const input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    let str = s.strstart;\n    let n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    const source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (const p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n  // calculate data length\n  let len = 0;\n\n  for (let i = 0, l = chunks.length; i < l; i++) {\n    len += chunks[i].length;\n  }\n\n  // join chunks\n  const result = new Uint8Array(len);\n\n  for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n    let chunk = chunks[i];\n    result.set(chunk, pos);\n    pos += chunk.length;\n  }\n\n  return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n  if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n    return new TextEncoder().encode(str);\n  }\n\n  let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new Uint8Array(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if (buf.subarray && STR_APPLY_UIA_OK) {\n      return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n    }\n  }\n\n  let result = '';\n  for (let i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n  const len = max || buf.length;\n\n  if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n    return new TextDecoder().decode(buf.subarray(0, max));\n  }\n\n  let i, out;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  const utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    let c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    let c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  let pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n  Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n  Z_DEFAULT_COMPRESSION,\n  Z_DEFAULT_STRATEGY,\n  Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n *   , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n  this.options = common.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED$1,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY\n  }, options || {});\n\n  let opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new zstream();\n  this.strm.avail_out = 0;\n\n  let status = deflate_1$2.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK$2) {\n    throw new Error(messages[status]);\n  }\n\n  if (opt.header) {\n    deflate_1$2.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    let dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK$2) {\n      throw new Error(messages[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  let status, _flush_mode;\n\n  if (this.ended) { return false; }\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    // Make sure avail_out > 6 to avoid repeating markers\n    if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    status = deflate_1$2.deflate(strm, _flush_mode);\n\n    // Ended => flush and finish\n    if (status === Z_STREAM_END$2) {\n      if (strm.next_out > 0) {\n        this.onData(strm.output.subarray(0, strm.next_out));\n      }\n      status = deflate_1$2.deflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return status === Z_OK$2;\n    }\n\n    // Flush if out buffer full\n    if (strm.avail_out === 0) {\n      this.onData(strm.output);\n      continue;\n    }\n\n    // Flush if requested and has data\n    if (_flush_mode > 0 && strm.next_out > 0) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    if (strm.avail_in === 0) break;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK$2) {\n    this.result = common.flattenChunks(this.chunks);\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n  const deflator = new Deflate$1(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209;       /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n  let _in;                    /* local strm.input */\n  let last;                   /* have enough input while in < last */\n  let _out;                   /* local strm.output */\n  let beg;                    /* inflate()'s initial strm.output */\n  let end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  let dmax;                   /* maximum distance from zlib header */\n//#endif\n  let wsize;                  /* window size or zero if not using window */\n  let whave;                  /* valid bytes in the window */\n  let wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  let s_window;               /* allocated sliding window, if wsize != 0 */\n  let hold;                   /* local strm.hold */\n  let bits;                   /* local strm.bits */\n  let lcode;                  /* local strm.lencode */\n  let dcode;                  /* local strm.distcode */\n  let lmask;                  /* mask for first level of length codes */\n  let dmask;                  /* mask for first level of distance codes */\n  let here;                   /* retrieved table entry */\n  let op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  let len;                    /* match length, unused bytes */\n  let dist;                   /* match distance */\n  let from;                   /* where to copy match from */\n  let from_source;\n\n\n  let input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  const state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD$1;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD$1;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD$1;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE$1;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD$1;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n  const bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  let len = 0;               /* a code's length in bits */\n  let sym = 0;               /* index of code symbols */\n  let min = 0, max = 0;          /* minimum and maximum code lengths */\n  let root = 0;              /* number of index bits for root table */\n  let curr = 0;              /* number of index bits for current table */\n  let drop = 0;              /* code bits to drop for sub-table */\n  let left = 0;                   /* number of prefix codes available */\n  let used = 0;              /* code entries in table used */\n  let huff = 0;              /* Huffman code */\n  let incr;              /* for incrementing code, index */\n  let fill;              /* index for replicating entries */\n  let low;               /* low bits for current root entry */\n  let mask;              /* mask for low root bits */\n  let next;             /* next available space in table */\n  let base = null;     /* base value table to use */\n//  let shoextra;    /* extra bits table to use */\n  let match;                  /* use base and extra for symbol >= match */\n  const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  let extra = null;\n\n  let here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES$1 || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES$1) {\n    base = extra = work;    /* dummy value--not used */\n    match = 20;\n\n  } else if (type === LENS$1) {\n    base = lbase;\n    extra = lext;\n    match = 257;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    match = 0;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n    (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] + 1 < match) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] >= match) {\n      here_op = extra[work[sym] - match];\n      here_val = base[work[sym] - match];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n        (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n  Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n  Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst    HEAD = 16180;       /* i: waiting for magic header */\nconst    FLAGS = 16181;      /* i: waiting for method and flags (gzip) */\nconst    TIME = 16182;       /* i: waiting for modification time (gzip) */\nconst    OS = 16183;         /* i: waiting for extra flags and operating system (gzip) */\nconst    EXLEN = 16184;      /* i: waiting for extra length (gzip) */\nconst    EXTRA = 16185;      /* i: waiting for extra bytes (gzip) */\nconst    NAME = 16186;       /* i: waiting for end of file name (gzip) */\nconst    COMMENT = 16187;    /* i: waiting for end of comment (gzip) */\nconst    HCRC = 16188;       /* i: waiting for header crc (gzip) */\nconst    DICTID = 16189;    /* i: waiting for dictionary check value */\nconst    DICT = 16190;      /* waiting for inflateSetDictionary() call */\nconst        TYPE = 16191;      /* i: waiting for type bits, including last-flag bit */\nconst        TYPEDO = 16192;    /* i: same, but skip check to exit inflate on new block */\nconst        STORED = 16193;    /* i: waiting for stored size (length and complement) */\nconst        COPY_ = 16194;     /* i/o: same as COPY below, but only first time in */\nconst        COPY = 16195;      /* i/o: waiting for input or output to copy stored block */\nconst        TABLE = 16196;     /* i: waiting for dynamic block table lengths */\nconst        LENLENS = 16197;   /* i: waiting for code length code lengths */\nconst        CODELENS = 16198;  /* i: waiting for length/lit and distance code lengths */\nconst            LEN_ = 16199;      /* i: same as LEN below, but only first time in */\nconst            LEN = 16200;       /* i: waiting for length/lit/eob code */\nconst            LENEXT = 16201;    /* i: waiting for length extra bits */\nconst            DIST = 16202;      /* i: waiting for distance code */\nconst            DISTEXT = 16203;   /* i: waiting for distance extra bits */\nconst            MATCH = 16204;     /* o: waiting for output space to copy string */\nconst            LIT = 16205;       /* o: waiting for output space to write literal */\nconst    CHECK = 16206;     /* i: waiting for 32-bit check value */\nconst    LENGTH = 16207;    /* i: waiting for 32-bit length (gzip) */\nconst    DONE = 16208;      /* finished check, done -- remain here until reset */\nconst    BAD = 16209;       /* got a data error -- remain here until reset */\nconst    MEM = 16210;       /* got an inflate() memory error -- remain here until reset */\nconst    SYNC = 16211;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n  this.strm = null;           /* pointer back to this zlib stream */\n  this.mode = 0;              /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip,\n                                 bit 2 true to validate check value */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib), or\n                                 -1 if raw or no header yet */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n  this.work = new Uint16Array(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new Int32Array(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const state = strm.state;\n  if (!state || state.strm !== strm ||\n    state.mode < HEAD || state.mode > SYNC) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.flags = -1;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n  state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n  let wrap;\n\n  /* get the state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 5;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n  if (!strm) { return Z_STREAM_ERROR$1; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  const state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.strm = strm;\n  state.window = null/*Z_NULL*/;\n  state.mode = HEAD;     /* to pass state test in inflateReset2() */\n  const ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK$1) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n  return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    lenfix = new Int32Array(512);\n    distfix = new Int32Array(32);\n\n    /* literal/length table */\n    let sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inftrees(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inftrees(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n  let dist;\n  const state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new Uint8Array(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    state.window.set(src.subarray(end - state.wsize, end), 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      state.window.set(src.subarray(end - copy, end), 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n  let state;\n  let input, output;          // input/output buffers\n  let next;                   /* next input INDEX */\n  let put;                    /* next output INDEX */\n  let have, left;             /* available input and output */\n  let hold;                   /* bit buffer */\n  let bits;                   /* bits in bit buffer */\n  let _in, _out;              /* save starting available input and output */\n  let copy;                   /* number of stored or match bytes to copy */\n  let from;                   /* where to copy match bytes from */\n  let from_source;\n  let here = 0;               /* current decoding table entry */\n  let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //let last;                   /* parent table entry */\n  let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  let len;                    /* length to copy for repeats, bits to drop */\n  let ret;                    /* return code */\n  const hbuf = new Uint8Array(4);    /* buffer for gzip header crc calculation */\n  let opts;\n\n  let n; // temporary variable for NEED_BITS\n\n  const order = /* permutation of code lengths */\n    new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n  if (inflateStateCheck(strm) || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK$1;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          if (state.wbits === 0) {\n            state.wbits = 15;\n          }\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        if (len > 15 || len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n\n        // !!! pako patch. Force use `options.windowBits` if passed.\n        // Required to always use max window size by default.\n        state.dmax = 1 << state.wbits;\n        //state.dmax = 1 << len;\n\n        state.flags = 0;               /* indicate zlib header */\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32_1(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Uint8Array(state.head.extra_len);\n              }\n              state.head.extra.set(\n                input.subarray(\n                  next,\n                  // extra field is limited to 65536 bytes\n                  // - no need for additional size check\n                  next + copy\n                ),\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if ((state.flags & 0x0200) && (state.wrap & 4)) {\n              state.check = crc32_1(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT$1;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          output.set(input.subarray(next, next + copy), put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inffast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if ((state.wrap & 4) && _out) {\n            strm.adler = state.check =\n                /*UPDATE_CHECK(state.check, put - _out, _out);*/\n                (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END$1;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR$1;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR$1;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR$1;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH$1))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if ((state.wrap & 4) && _out) {\n    strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  let state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n  const dictLength = dictionary.length;\n\n  let state;\n  let dictid;\n  let ret;\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32_1(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR$1;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR$1;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH, Z_FINISH,\n  Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n  this.options = common.assign({\n    chunkSize: 1024 * 64,\n    windowBits: 15,\n    to: ''\n  }, options || {});\n\n  const opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new zstream();\n  this.strm.avail_out = 0;\n\n  let status  = inflate_1$2.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(messages[status]);\n  }\n\n  this.header = new gzheader();\n\n  inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== Z_OK) {\n        throw new Error(messages[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n *   flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n *   `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  const dictionary = this.options.dictionary;\n  let status, _flush_mode, last_avail_out;\n\n  if (this.ended) return false;\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n  // Convert data if needed\n  if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = inflate_1$2.inflate(strm, _flush_mode);\n\n    if (status === Z_NEED_DICT && dictionary) {\n      status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n      if (status === Z_OK) {\n        status = inflate_1$2.inflate(strm, _flush_mode);\n      } else if (status === Z_DATA_ERROR) {\n        // Replace code with more verbose\n        status = Z_NEED_DICT;\n      }\n    }\n\n    // Skip snyc markers if more data follows and not raw mode\n    while (strm.avail_in > 0 &&\n           status === Z_STREAM_END &&\n           strm.state.wrap > 0 &&\n           data[strm.next_in] !== 0)\n    {\n      inflate_1$2.inflateReset(strm);\n      status = inflate_1$2.inflate(strm, _flush_mode);\n    }\n\n    switch (status) {\n      case Z_STREAM_ERROR:\n      case Z_DATA_ERROR:\n      case Z_NEED_DICT:\n      case Z_MEM_ERROR:\n        this.onEnd(status);\n        this.ended = true;\n        return false;\n    }\n\n    // Remember real `avail_out` value, because we may patch out buffer content\n    // to align utf8 strings boundaries.\n    last_avail_out = strm.avail_out;\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n        if (this.options.to === 'string') {\n\n          let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          let tail = strm.next_out - next_out_utf8;\n          let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail & realign counters\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n        }\n      }\n    }\n\n    // Must repeat iteration if out buffer is full\n    if (status === Z_OK && last_avail_out === 0) continue;\n\n    // Finalize if end of stream reached.\n    if (status === Z_STREAM_END) {\n      status = inflate_1$2.inflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return true;\n    }\n\n    if (strm.avail_in === 0) break;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n *   each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = common.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err) {\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n  const inflator = new Inflate$1(options);\n\n  inflator.push(input);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","export class AbortError extends Error {\n  public code: string\n\n  public constructor(message: string) {\n    super(message)\n    this.code = 'ERR_ABORTED'\n  }\n}\n\ninterface Block {\n  offset: number\n  length: number\n}\n// sort blocks by file offset and\n// group blocks that are within 2KB of eachother\nexport function groupBlocks(blocks: Block[]) {\n  blocks.sort((b0, b1) => b0.offset - b1.offset)\n\n  const blockGroups = []\n  let lastBlock: (Block & { blocks: Block[] }) | undefined\n  let lastBlockEnd: number | undefined\n  for (const block of blocks) {\n    if (lastBlock && lastBlockEnd && block.offset - lastBlockEnd <= 2000) {\n      lastBlock.length =\n        lastBlock.length + block.length - lastBlockEnd + block.offset\n      lastBlock.blocks.push(block)\n    } else {\n      blockGroups.push(\n        (lastBlock = {\n          blocks: [block],\n          length: block.length,\n          offset: block.offset,\n        }),\n      )\n    }\n    lastBlockEnd = lastBlock.offset + lastBlock.length\n  }\n\n  return blockGroups\n}\n\n/**\n * Properly check if the given AbortSignal is aborted. Per the standard, if the\n * signal reads as aborted, this function throws either a DOMException\n * AbortError, or a regular error with a `code` attribute set to `ERR_ABORTED`.\n *\n * For convenience, passing `undefined` is a no-op\n *\n * @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted` attribute\n * @returns nothing\n */\nexport function checkAbortSignal(signal?: AbortSignal): void {\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    if (typeof DOMException === 'undefined') {\n      const e = new AbortError('aborted')\n      e.code = 'ERR_ABORTED'\n      throw e\n    } else {\n      throw new DOMException('aborted', 'AbortError')\n    }\n  }\n}\n\n/**\n * Skips to the next tick, then runs `checkAbortSignal`.\n * Await this to inside an otherwise synchronous loop to\n * provide a place to break when an abort signal is received.\n * @param {AbortSignal} signal\n */\nexport async function abortBreakPoint(signal?: AbortSignal): Promise<void> {\n  await Promise.resolve()\n  checkAbortSignal(signal)\n}\n","import { Buffer } from 'buffer'\nimport { Observer } from 'rxjs'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport QuickLRU from 'quick-lru'\n\n// locals\nimport Range from './range'\nimport { unzip } from './unzip'\nimport { Feature } from './bbi'\nimport { groupBlocks, checkAbortSignal } from './util'\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\ninterface CoordRequest {\n  chrId: number\n  start: number\n  end: number\n}\n\ninterface ReadData {\n  offset: number\n  length: number\n}\n\ninterface Options {\n  signal?: AbortSignal\n  request?: CoordRequest\n}\n\nfunction coordFilter(s1: number, e1: number, s2: number, e2: number): boolean {\n  return s1 < e2 && e1 >= s2\n}\n\n/**\n * View into a subset of the data in a BigWig file.\n *\n * Adapted by Robert Buels and Colin Diesh from bigwig.js in the Dalliance\n * Genome Explorer by Thomas Down.\n * @constructs\n */\n\nexport class BlockView {\n  private cirTreePromise?: Promise<{ bytesRead: number; buffer: Buffer }>\n\n  private featureCache = new AbortablePromiseCache<ReadData, Buffer>({\n    cache: new QuickLRU({ maxSize: 1000 }),\n\n    fill: async (requestData, signal) => {\n      const len = requestData.length\n      const off = requestData.offset\n      const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, off, {\n        signal,\n      })\n      return buffer\n    },\n  })\n\n  public constructor(\n    private bbi: GenericFilehandle,\n    private refsByName: any,\n    private cirTreeOffset: number,\n    private isBigEndian: boolean,\n    private isCompressed: boolean,\n    private blockType: string,\n  ) {\n    if (!(cirTreeOffset >= 0)) {\n      throw new Error('invalid cirTreeOffset!')\n    }\n  }\n\n  public async readWigData(\n    chrName: string,\n    start: number,\n    end: number,\n    observer: Observer<Feature[]>,\n    opts?: Options,\n  ) {\n    try {\n      const { refsByName, bbi, cirTreeOffset, isBigEndian } = this\n      const chrId = refsByName[chrName]\n      if (chrId === undefined) {\n        observer.complete()\n      }\n      const request = { chrId, start, end }\n      if (!this.cirTreePromise) {\n        this.cirTreePromise = bbi.read(\n          Buffer.alloc(48),\n          0,\n          48,\n          cirTreeOffset,\n          opts,\n        )\n      }\n      const { buffer } = await this.cirTreePromise\n      const cirBlockSize = isBigEndian\n        ? buffer.readUInt32BE(4)\n        : buffer.readUInt32LE(4)\n      let blocksToFetch: any[] = []\n      let outstanding = 0\n      const le = true\n\n      const cirFobRecur2 = (\n        cirBlockData: Buffer,\n        offset2: number,\n        level: number,\n      ) => {\n        try {\n          const data = cirBlockData.subarray(offset2)\n\n          const b = data\n          const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n          let offset = 0\n\n          const isLeaf = dataView.getUint8(offset)\n          offset += 2 // 1 skip\n          const cnt = dataView.getUint16(offset, le)\n          offset += 2\n          if (isLeaf === 1) {\n            const blocksToFetch2 = []\n            for (let i = 0; i < cnt; i++) {\n              const startChrom = dataView.getUint32(offset, le)\n              offset += 4\n              const startBase = dataView.getUint32(offset, le)\n              offset += 4\n              const endChrom = dataView.getUint32(offset, le)\n              offset += 4\n              const endBase = dataView.getUint32(offset, le)\n              offset += 4\n              const blockOffset = Number(dataView.getBigUint64(offset, le))\n              offset += 8\n              const blockSize = Number(dataView.getBigUint64(offset, le))\n              offset += 8\n              blocksToFetch2.push({\n                startChrom,\n                startBase,\n                endBase,\n                endChrom,\n                blockOffset,\n                blockSize,\n                offset,\n              })\n            }\n            blocksToFetch = blocksToFetch.concat(\n              blocksToFetch2\n                .filter(f => filterFeats(f))\n                .map(l => ({\n                  offset: l.blockOffset,\n                  length: l.blockSize,\n                })),\n            )\n          } else if (isLeaf === 0) {\n            const recurOffsets = []\n            for (let i = 0; i < cnt; i++) {\n              const startChrom = dataView.getUint32(offset, le)\n              offset += 4\n              const startBase = dataView.getUint32(offset, le)\n              offset += 4\n              const endChrom = dataView.getUint32(offset, le)\n              offset += 4\n              const endBase = dataView.getUint32(offset, le)\n              offset += 4\n              const blockOffset = Number(dataView.getBigUint64(offset, le))\n              offset += 8\n              recurOffsets.push({\n                startChrom,\n                startBase,\n                endChrom,\n                endBase,\n                blockOffset,\n                offset,\n              })\n            }\n            const recurOffsets2 = recurOffsets\n              .filter(f => filterFeats(f))\n              .map(l => l.blockOffset)\n            if (recurOffsets2.length > 0) {\n              cirFobRecur(recurOffsets2, level + 1)\n            }\n          }\n        } catch (e) {\n          observer.error(e)\n        }\n      }\n\n      const filterFeats = (b: {\n        startChrom: number\n        startBase: number\n        endChrom: number\n        endBase: number\n      }) => {\n        const { startChrom, startBase, endChrom, endBase } = b\n        return (\n          (startChrom < chrId || (startChrom === chrId && startBase <= end)) &&\n          (endChrom > chrId || (endChrom === chrId && endBase >= start))\n        )\n      }\n\n      const cirFobStartFetch = async (\n        off: number[],\n        fr: Range,\n        level: number,\n      ) => {\n        try {\n          const length = fr.max - fr.min\n          const offset = fr.min\n          const resultBuffer: Buffer = await this.featureCache.get(\n            `${length}_${offset}`,\n            { length, offset },\n            opts?.signal,\n          )\n          for (const element of off) {\n            if (fr.contains(element)) {\n              cirFobRecur2(resultBuffer, element - offset, level)\n              outstanding -= 1\n              if (outstanding === 0) {\n                this.readFeatures(observer, blocksToFetch, {\n                  ...opts,\n                  request,\n                }).catch((e: unknown) => {\n                  observer.error(e)\n                })\n              }\n            }\n          }\n        } catch (e) {\n          observer.error(e)\n        }\n      }\n      const cirFobRecur = (offset: number[], level: number) => {\n        try {\n          outstanding += offset.length\n\n          // Upper bound on size, based on a completely full leaf node.\n          const maxCirBlockSpan = 4 + cirBlockSize * 32\n          let spans = new Range([\n            {\n              min: offset[0],\n              max: offset[0] + maxCirBlockSpan,\n            },\n          ])\n          for (let i = 1; i < offset.length; i += 1) {\n            const blockSpan = new Range([\n              {\n                min: offset[i],\n                max: offset[i] + maxCirBlockSpan,\n              },\n            ])\n            spans = spans.union(blockSpan)\n          }\n          // eslint-disable-next-line @typescript-eslint/no-floating-promises\n          spans.getRanges().map(fr => cirFobStartFetch(offset, fr, level))\n        } catch (e) {\n          observer.error(e)\n        }\n      }\n\n      cirFobRecur([Number(cirTreeOffset) + 48], 1)\n      return\n    } catch (e) {\n      observer.error(e)\n    }\n  }\n\n  private parseSummaryBlock(\n    b: Buffer,\n    startOffset: number,\n    request?: CoordRequest,\n  ) {\n    const features = [] as any[]\n    let offset = startOffset\n\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    while (offset < b.byteLength) {\n      // this was extracted from looking at the runtime code generated by\n      // binary-parser\n      const chromId = dataView.getUint32(offset, true)\n      offset += 4\n      const start = dataView.getUint32(offset, true)\n      offset += 4\n      const end = dataView.getUint32(offset, true)\n      offset += 4\n      const validCnt = dataView.getUint32(offset, true)\n      offset += 4\n      const minScore = dataView.getFloat32(offset, true)\n      offset += 4\n      const maxScore = dataView.getFloat32(offset, true)\n      offset += 4\n      const sumData = dataView.getFloat32(offset, true)\n      offset += 4\n      // unused\n      // const sumSqData = dataView.getFloat32(offset, true)\n      offset += 4\n\n      if (\n        request\n          ? chromId === request.chrId &&\n            coordFilter(start, end, request.start, request.end)\n          : true\n      ) {\n        features.push({\n          start,\n          end,\n          maxScore,\n          minScore,\n          summary: true,\n          score: sumData / (validCnt || 1),\n        })\n      }\n    }\n\n    return features\n  }\n\n  private parseBigBedBlock(\n    data: Buffer,\n    startOffset: number,\n    offset: number,\n    request?: CoordRequest,\n  ) {\n    const items = [] as Feature[]\n    let currOffset = startOffset\n    const le = true\n    const b = data\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    while (currOffset < data.byteLength) {\n      const c2 = currOffset\n      const chromId = dataView.getUint32(currOffset, le)\n      currOffset += 4\n      const start = dataView.getInt32(currOffset, le)\n      currOffset += 4\n      const end = dataView.getInt32(currOffset, le)\n      currOffset += 4\n      let i = currOffset\n      for (; i < data.length; i++) {\n        if (data[i] === 0) {\n          break\n        }\n      }\n      const b = data.subarray(currOffset, i)\n      const rest = decoder?.decode(b) ?? b.toString()\n      currOffset = i + 1\n      items.push({\n        chromId,\n        start,\n        end,\n        rest,\n        uniqueId: `bb-${offset + c2}`,\n      })\n    }\n\n    return request\n      ? items.filter((f: any) =>\n          coordFilter(f.start, f.end, request.start, request.end),\n        )\n      : items\n  }\n\n  private parseBigWigBlock(\n    buffer: Buffer,\n    startOffset: number,\n    req?: CoordRequest,\n  ) {\n    const b = buffer.subarray(startOffset)\n\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    offset += 4\n    const blockStart = dataView.getInt32(offset, true)\n    offset += 8\n    const itemStep = dataView.getUint32(offset, true)\n    offset += 4\n    const itemSpan = dataView.getUint32(offset, true)\n    offset += 4\n    const blockType = dataView.getUint8(offset)\n    offset += 2\n    const itemCount = dataView.getUint16(offset, true)\n    offset += 2\n    const items = new Array(itemCount)\n    switch (blockType) {\n      case 1: {\n        for (let i = 0; i < itemCount; i++) {\n          const start = dataView.getInt32(offset, true)\n          offset += 4\n          const end = dataView.getInt32(offset, true)\n          offset += 4\n          const score = dataView.getFloat32(offset, true)\n          offset += 4\n          items[i] = {\n            start,\n            end,\n            score,\n          }\n        }\n        break\n      }\n      case 2: {\n        for (let i = 0; i < itemCount; i++) {\n          const start = dataView.getInt32(offset, true)\n          offset += 4\n          const score = dataView.getFloat32(offset, true)\n          offset += 4\n          items[i] = {\n            score,\n            start,\n            end: start + itemSpan,\n          }\n        }\n        break\n      }\n      case 3: {\n        for (let i = 0; i < itemCount; i++) {\n          const score = dataView.getFloat32(offset, true)\n          offset += 4\n          const start = blockStart + i * itemStep\n          items[i] = {\n            score,\n            start,\n            end: start + itemSpan,\n          }\n        }\n        break\n      }\n    }\n\n    return req\n      ? items.filter(f => coordFilter(f.start, f.end, req.start, req.end))\n      : items\n  }\n\n  public async readFeatures(\n    observer: Observer<Feature[]>,\n    blocks: { offset: number; length: number }[],\n    opts: Options = {},\n  ) {\n    try {\n      const { blockType, isCompressed } = this\n      const { signal, request } = opts\n      const blockGroupsToFetch = groupBlocks(blocks)\n      checkAbortSignal(signal)\n      await Promise.all(\n        blockGroupsToFetch.map(async blockGroup => {\n          checkAbortSignal(signal)\n          const { length, offset } = blockGroup\n          const data = await this.featureCache.get(\n            `${length}_${offset}`,\n            blockGroup,\n            signal,\n          )\n          for (const block of blockGroup.blocks) {\n            checkAbortSignal(signal)\n            let blockOffset = Number(block.offset) - Number(blockGroup.offset)\n            let resultData = data\n            if (isCompressed) {\n              resultData = unzip(data.subarray(blockOffset))\n              blockOffset = 0\n            }\n            checkAbortSignal(signal)\n\n            switch (blockType) {\n              case 'summary': {\n                observer.next(\n                  this.parseSummaryBlock(resultData, blockOffset, request),\n                )\n                break\n              }\n              case 'bigwig': {\n                observer.next(\n                  this.parseBigWigBlock(resultData, blockOffset, request),\n                )\n                break\n              }\n              case 'bigbed': {\n                observer.next(\n                  this.parseBigBedBlock(\n                    resultData,\n                    blockOffset,\n                    Number(block.offset) * (1 << 8),\n                    request,\n                  ),\n                )\n                break\n              }\n              default: {\n                console.warn(`Don't know what to do with ${blockType}`)\n              }\n            }\n          }\n        }),\n      )\n      observer.complete()\n    } catch (e) {\n      observer.error(e)\n    }\n  }\n}\n","import { Buffer } from 'buffer'\nimport { inflateRaw } from 'pako'\n\nexport function unzip(input: Buffer) {\n  return inflateRaw(input.subarray(2))\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, RemoteFile, GenericFilehandle } from 'generic-filehandle'\nimport { firstValueFrom, Observable } from 'rxjs'\nimport { toArray } from 'rxjs/operators'\nimport { BlockView } from './block-view'\n\nconst BIG_WIG_MAGIC = -2003829722\nconst BIG_BED_MAGIC = -2021002517\n\ninterface ZoomLevel {\n  reductionLevel: number\n  reserved: number\n  dataOffset: number\n  indexOffset: number\n}\n\nexport interface Feature {\n  offset?: number\n  chromId: number\n  start: number\n  end: number\n  score?: number\n  rest?: string // for bigbed line\n  minScore?: number // for summary line\n  maxScore?: number // for summary line\n  summary?: boolean // is summary line\n  uniqueId?: string // for bigbed contains uniqueId calculated from file offset\n  field?: number // used in bigbed searching\n}\ninterface Statistics {\n  scoreSum: number\n  basesCovered: number\n  scoreSumSquares: number\n  scoreMin: number\n  scoreMax: number\n}\n\ninterface RefInfo {\n  name: string\n  id: number\n  length: number\n}\n\nexport interface MainHeader {\n  magic: number\n  version: number\n  autoSql: string\n  totalSummary: Statistics\n  asOffset: number\n  zoomLevels: ZoomLevel[]\n  fieldCount: number\n  numZoomLevels: number\n  unzoomedIndexOffset: number\n  totalSummaryOffset: number\n  unzoomedDataOffset: number\n  definedFieldCount: number\n  uncompressBufSize: number\n  chromTreeOffset: number\n  extHeaderOffset: number\n  isBigEndian: boolean\n  fileType: string\n}\nexport interface Header extends MainHeader {\n  refsByName: Record<string, number>\n  refsByNumber: Record<number, RefInfo>\n}\n\nexport interface RequestOptions {\n  signal?: AbortSignal\n  headers?: Record<string, string>\n  [key: string]: unknown\n}\n\nexport abstract class BBI {\n  protected bbi: GenericFilehandle\n\n  private headerP?: Promise<Header>\n\n  protected renameRefSeqs: (a: string) => string\n\n  public getHeader(opts?: RequestOptions) {\n    if (!this.headerP) {\n      this.headerP = this._getHeader(opts).catch((e: unknown) => {\n        this.headerP = undefined\n        throw e\n      })\n    }\n    return this.headerP\n  }\n\n  /*\n   * @param filehandle - a filehandle from generic-filehandle or implementing\n   * something similar to the node10 fs.promises API\n   *\n   * @param path - a Local file path as a string\n   *\n   * @param url - a URL string\n   *\n   * @param renameRefSeqs - an optional method to rename the internal reference\n   * sequences using a mapping function\n   */\n  public constructor(args: {\n    filehandle?: GenericFilehandle\n    path?: string\n    url?: string\n    renameRefSeqs?: (a: string) => string\n  }) {\n    const { filehandle, renameRefSeqs = s => s, path, url } = args\n    this.renameRefSeqs = renameRefSeqs\n    if (filehandle) {\n      this.bbi = filehandle\n    } else if (url) {\n      this.bbi = new RemoteFile(url)\n    } else if (path) {\n      this.bbi = new LocalFile(path)\n    } else {\n      throw new Error('no file given')\n    }\n  }\n\n  private async _getHeader(opts?: RequestOptions) {\n    const header = await this._getMainHeader(opts)\n    const chroms = await this._readChromTree(header, opts)\n    return { ...header, ...chroms }\n  }\n\n  private async _getMainHeader(\n    opts?: RequestOptions,\n    requestSize = 2000,\n  ): Promise<MainHeader> {\n    const le = true\n    const { buffer } = await this.bbi.read(\n      Buffer.alloc(requestSize),\n      0,\n      requestSize,\n      0,\n      opts,\n    )\n    const isBigEndian = this._isBigEndian(buffer)\n    const b = buffer\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    const magic = dataView.getInt32(offset, le)\n    offset += 4\n    const version = dataView.getUint16(offset, le)\n    offset += 2\n    const numZoomLevels = dataView.getUint16(offset, le)\n    offset += 2\n    const chromTreeOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const unzoomedDataOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const unzoomedIndexOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const fieldCount = dataView.getUint16(offset, le)\n    offset += 2\n    const definedFieldCount = dataView.getUint16(offset, le)\n    offset += 2\n    const asOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const totalSummaryOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const uncompressBufSize = dataView.getUint32(offset, le)\n    offset += 4\n    const extHeaderOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n    const zoomLevels = [] as ZoomLevel[]\n    for (let i = 0; i < numZoomLevels; i++) {\n      const reductionLevel = dataView.getUint32(offset, le)\n      offset += 4\n      const reserved = dataView.getUint32(offset, le)\n      offset += 4\n      const dataOffset = Number(dataView.getBigUint64(offset, le))\n      offset += 8\n      const indexOffset = Number(dataView.getBigUint64(offset, le))\n      offset += 8\n      zoomLevels.push({ reductionLevel, reserved, dataOffset, indexOffset })\n    }\n\n    const fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig'\n\n    // refetch header if it is too large on first pass,\n    // 8*5 is the sizeof the totalSummary struct\n    if (asOffset > requestSize || totalSummaryOffset > requestSize - 8 * 5) {\n      return this._getMainHeader(opts, requestSize * 2)\n    }\n\n    let totalSummary: Statistics\n    if (totalSummaryOffset) {\n      const b = buffer.subarray(Number(totalSummaryOffset))\n      let offset = 0\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      const basesCovered = Number(dataView.getBigUint64(offset, le))\n      offset += 8\n      const scoreMin = dataView.getFloat64(offset, le)\n      offset += 8\n      const scoreMax = dataView.getFloat64(offset, le)\n      offset += 8\n      const scoreSum = dataView.getFloat64(offset, le)\n      offset += 8\n      const scoreSumSquares = dataView.getFloat64(offset, le)\n      offset += 8\n\n      totalSummary = {\n        scoreMin,\n        scoreMax,\n        scoreSum,\n        scoreSumSquares,\n        basesCovered,\n      }\n    } else {\n      throw new Error('no stats')\n    }\n\n    return {\n      zoomLevels,\n      magic,\n      extHeaderOffset,\n      numZoomLevels,\n      fieldCount,\n      totalSummary,\n      definedFieldCount,\n      uncompressBufSize,\n      asOffset,\n      chromTreeOffset,\n      totalSummaryOffset,\n      unzoomedDataOffset,\n      unzoomedIndexOffset,\n      fileType,\n      version,\n      isBigEndian,\n      autoSql: asOffset\n        ? buffer.subarray(asOffset, buffer.indexOf(0, asOffset)).toString()\n        : '',\n    }\n  }\n\n  private _isBigEndian(buffer: Buffer) {\n    let ret = buffer.readInt32LE(0)\n    if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {\n      return false\n    }\n    ret = buffer.readInt32BE(0)\n    if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {\n      return true\n    }\n    throw new Error('not a BigWig/BigBed file')\n  }\n\n  // todo: add progress if long running\n  private async _readChromTree(\n    header: MainHeader,\n    opts?: { signal?: AbortSignal },\n  ) {\n    const isBE = header.isBigEndian\n    const le = !isBE\n    const refsByNumber: Record<\n      number,\n      { name: string; id: number; length: number }\n    > = []\n    const refsByName: Record<string, number> = {}\n\n    let unzoomedDataOffset = header.unzoomedDataOffset\n    const chromTreeOffset = header.chromTreeOffset\n    while (unzoomedDataOffset % 4 !== 0) {\n      unzoomedDataOffset += 1\n    }\n    const off = unzoomedDataOffset - chromTreeOffset\n    const { buffer } = await this.bbi.read(\n      Buffer.alloc(off),\n      0,\n      off,\n      Number(chromTreeOffset),\n      opts,\n    )\n\n    const b = buffer\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    //    const magic = dataView.getUint32(offset, le)\n    offset += 4\n    //   const blockSize = dataView.getUint32(offset, le)\n    offset += 4\n    const keySize = dataView.getUint32(offset, le)\n    offset += 4\n    //  const valSize = dataView.getUint32(offset, le)\n    offset += 4\n    // const itemCount = dataView.getBigUint64(offset, le)\n    offset += 8\n\n    const rootNodeOffset = 32\n    const bptReadNode = async (currentOffset: number) => {\n      let offset = currentOffset\n      if (offset >= buffer.length) {\n        throw new Error('reading beyond end of buffer')\n      }\n      const isLeafNode = dataView.getUint8(offset)\n      offset += 2 //skip 1\n      const cnt = dataView.getUint16(offset, le)\n      offset += 2\n      if (isLeafNode) {\n        for (let n = 0; n < cnt; n++) {\n          const key = buffer\n            .subarray(offset, offset + keySize)\n            .toString()\n            .replaceAll('\\0', '')\n          offset += keySize\n          const refId = dataView.getUint32(offset, le)\n          offset += 4\n          const refSize = dataView.getUint32(offset, le)\n          offset += 4\n\n          const refRec = { name: key, id: refId, length: refSize }\n          refsByName[this.renameRefSeqs(key)] = refId\n          refsByNumber[refId] = refRec\n        }\n      } else {\n        // parse index node\n        const nextNodes = []\n        for (let n = 0; n < cnt; n++) {\n          offset += keySize\n          const childOffset = Number(dataView.getBigUint64(offset, le))\n          offset += 8\n          nextNodes.push(\n            bptReadNode(Number(childOffset) - Number(chromTreeOffset)),\n          )\n        }\n        await Promise.all(nextNodes)\n      }\n    }\n    await bptReadNode(rootNodeOffset)\n    return {\n      refsByName,\n      refsByNumber,\n    }\n  }\n\n  /*\n   * fetches the \"unzoomed\" view of the bigwig data. this is the default for bigbed\n   * @param abortSignal - a signal to optionally abort this operation\n   */\n  protected async getUnzoomedView(opts?: RequestOptions) {\n    const {\n      unzoomedIndexOffset,\n      refsByName,\n      uncompressBufSize,\n      isBigEndian,\n      fileType,\n    } = await this.getHeader(opts)\n    return new BlockView(\n      this.bbi,\n      refsByName,\n      unzoomedIndexOffset,\n      isBigEndian,\n      uncompressBufSize > 0,\n      fileType,\n    )\n  }\n\n  /*\n   * abstract method - get the view for a given scale\n   */\n  protected abstract getView(\n    scale: number,\n    opts?: RequestOptions,\n  ): Promise<BlockView>\n\n  /**\n   * Gets features from a BigWig file\n   *\n   * @param refName - The chromosome name\n   * @param start - The start of a region\n   * @param end - The end of a region\n   * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use\n   */\n  public async getFeatureStream(\n    refName: string,\n    start: number,\n    end: number,\n    opts?: RequestOptions & { scale?: number; basesPerSpan?: number },\n  ) {\n    await this.getHeader(opts)\n    const chrName = this.renameRefSeqs(refName)\n    let view: BlockView\n    const { basesPerSpan, scale } = opts || {}\n\n    if (basesPerSpan) {\n      view = await this.getView(1 / basesPerSpan, opts)\n    } else if (scale) {\n      view = await this.getView(scale, opts)\n    } else {\n      view = await this.getView(1, opts)\n    }\n\n    return new Observable<Feature[]>(observer => {\n      view\n        .readWigData(chrName, start, end, observer, opts)\n        .catch((e: unknown) => {\n          observer.error(e)\n        })\n    })\n  }\n\n  public async getFeatures(\n    refName: string,\n    start: number,\n    end: number,\n    opts?: RequestOptions & { scale?: number; basesPerSpan?: number },\n  ) {\n    const ob = await this.getFeatureStream(refName, start, end, opts)\n\n    const ret = await firstValueFrom(ob.pipe(toArray()))\n    return ret.flat()\n  }\n}\n","import { BlockView } from './block-view'\nimport { BBI, RequestOptions } from './bbi'\n\nexport class BigWig extends BBI {\n  /**\n   * Retrieves a BlockView of a specific zoomLevel\n   *\n   * @param scale - number\n   *\n   * @param opts - An object containing basesPerSpan (e.g. pixels per basepair)\n   * or scale used to infer the zoomLevel to use\n   */\n  protected async getView(scale: number, opts: RequestOptions) {\n    const { zoomLevels, refsByName, isBigEndian, uncompressBufSize } =\n      await this.getHeader(opts)\n    const basesPerPx = 1 / scale\n    const maxLevel = zoomLevels.length - 1\n\n    for (let i = maxLevel; i >= 0; i -= 1) {\n      const zh = zoomLevels[i]\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (zh && zh.reductionLevel <= 2 * basesPerPx) {\n        return new BlockView(\n          this.bbi,\n          refsByName,\n          zh.indexOffset,\n          isBigEndian,\n          uncompressBufSize > 0,\n          'summary',\n        )\n      }\n    }\n    return this.getUnzoomedView(opts)\n  }\n}\n","import { Buffer } from 'buffer'\nimport { Observable, merge, firstValueFrom } from 'rxjs'\nimport { map, reduce } from 'rxjs/operators'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport QuickLRU from 'quick-lru'\n\n// locals\nimport { BBI, Feature, RequestOptions } from './bbi'\n\ninterface Loc {\n  key: string\n  offset: number\n  length: number\n  field?: number\n}\n\ninterface Index {\n  type: number\n  fieldcount: number\n  offset: number\n  field: number\n}\n\nexport function filterUndef<T>(ts: (T | undefined)[]): T[] {\n  return ts.filter((t: T | undefined): t is T => !!t)\n}\n\nexport class BigBed extends BBI {\n  public readIndicesCache = new AbortablePromiseCache<RequestOptions, Index[]>({\n    cache: new QuickLRU({ maxSize: 1 }),\n    fill: (args: RequestOptions, signal?: AbortSignal) =>\n      this._readIndices({ ...args, signal }),\n  })\n\n  public readIndices(opts: RequestOptions = {}) {\n    const { signal, ...rest } = opts\n    return this.readIndicesCache.get(JSON.stringify(rest), opts, signal)\n  }\n\n  /*\n   * retrieve unzoomed view for any scale\n   */\n  protected async getView(_scale: number, opts?: RequestOptions) {\n    return this.getUnzoomedView(opts)\n  }\n\n  /*\n   * parse the bigbed extraIndex fields\n   *\n   *\n   * @return a Promise for an array of Index data structure since there can be\n   * multiple extraIndexes in a bigbed, see bedToBigBed documentation\n   */\n  private async _readIndices(opts: RequestOptions) {\n    const { extHeaderOffset, isBigEndian } = await this.getHeader(opts)\n    const { buffer: data } = await this.bbi.read(\n      Buffer.alloc(64),\n      0,\n      64,\n      Number(extHeaderOffset),\n    )\n    const le = !isBigEndian\n\n    const b = data\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    // const _size = dataView.getUint16(offset, le)\n    offset += 2\n    const count = dataView.getUint16(offset, le)\n    offset += 2\n    const dataOffset = Number(dataView.getBigUint64(offset, le))\n    offset += 8\n\n    // no extra index is defined if count==0\n    if (count === 0) {\n      return []\n    }\n\n    const blocklen = 20\n    const len = blocklen * count\n    const { buffer } = await this.bbi.read(\n      Buffer.alloc(len),\n      0,\n      len,\n      Number(dataOffset),\n    )\n\n    const indices = [] as Index[]\n\n    for (let i = 0; i < count; i += 1) {\n      const b = buffer.subarray(i * blocklen)\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      let offset = 0\n      const type = dataView.getInt16(offset, le)\n      offset += 2\n      const fieldcount = dataView.getInt16(offset, le)\n      offset += 2\n      const dataOffset = Number(dataView.getBigUint64(offset, le))\n      offset += 8 + 4 //4 skip\n      const field = dataView.getInt16(offset, le)\n      indices.push({ type, fieldcount, offset: Number(dataOffset), field })\n    }\n    return indices\n  }\n\n  /*\n   * perform a search in the bigbed extraIndex to find which blocks in the\n   * bigbed data to look for the actual feature data\n   *\n   * @param name - the name to search for\n   * @param opts - a SearchOptions argument with optional signal\n   * @return a Promise for an array of bigbed block Loc entries\n   */\n  private async searchExtraIndexBlocks(\n    name: string,\n    opts: RequestOptions = {},\n  ): Promise<Loc[]> {\n    const { isBigEndian } = await this.getHeader(opts)\n    const indices = await this.readIndices(opts)\n    if (indices.length === 0) {\n      return []\n    }\n    const locs = indices.map(async (index): Promise<Loc | undefined> => {\n      const { offset: offset2, field } = index\n      const { buffer: data } = await this.bbi.read(\n        Buffer.alloc(32),\n        0,\n        32,\n        offset2,\n        opts,\n      )\n      const le = !isBigEndian\n      const b = data\n\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      let offset = 0\n      // const _magic = dataView.getInt32(offset, le)\n      offset += 4\n      const blockSize = dataView.getInt32(offset, le)\n      offset += 4\n      const keySize = dataView.getInt32(offset, le)\n      offset += 4\n      const valSize = dataView.getInt32(offset, le)\n      offset += 4\n      // const _itemCount = Number(dataView.getBigUint64(offset, le))\n      offset += 8\n\n      const bptReadNode = async (nodeOffset: number) => {\n        const val = Number(nodeOffset)\n        const len = 4 + blockSize * (keySize + valSize)\n        const { buffer } = await this.bbi.read(\n          Buffer.alloc(len),\n          0,\n          len,\n          val,\n          opts,\n        )\n        const b = buffer\n        const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n        let offset = 0\n        const nodeType = dataView.getInt8(offset)\n        offset += 2 //skip 1\n        const cnt = dataView.getInt16(offset, le)\n        offset += 2\n        const keys = []\n        if (nodeType === 0) {\n          const leafkeys = []\n          for (let i = 0; i < cnt; i++) {\n            const key = b\n              .subarray(offset, offset + keySize)\n              .toString()\n              .replaceAll('\\0', '')\n            offset += keySize\n            const dataOffset = Number(dataView.getBigUint64(offset, le))\n            offset += 8\n            leafkeys.push({ key, offset: dataOffset })\n          }\n\n          let lastOffset = 0\n          for (const { key, offset } of leafkeys) {\n            if (name.localeCompare(key) < 0 && lastOffset) {\n              return bptReadNode(lastOffset)\n            }\n            lastOffset = offset\n          }\n          return bptReadNode(lastOffset)\n        } else if (nodeType === 1) {\n          for (let i = 0; i < cnt; i++) {\n            const key = b\n              .subarray(offset, offset + keySize)\n              .toString()\n              .replaceAll('\\0', '')\n            offset += keySize\n            const dataOffset = Number(dataView.getBigUint64(offset, le))\n            offset += 8\n            const length = dataView.getUint32(offset, le)\n            offset += 4\n            const reserved = dataView.getUint32(offset, le)\n            offset += 4\n            keys.push({ key, offset: dataOffset, length, reserved })\n          }\n\n          for (const n of keys) {\n            if (n.key === name) {\n              return { ...n, field }\n            }\n          }\n\n          return undefined\n        }\n      }\n      const rootNodeOffset = 32\n      return bptReadNode(offset2 + rootNodeOffset)\n    })\n    return filterUndef(await Promise.all(locs))\n  }\n\n  /*\n   * retrieve the features from the bigbed data that were found through the\n   * lookup of the extraIndex note that there can be multiple extraIndex, see\n   * the BigBed specification and the -extraIndex argument to bedToBigBed\n   *\n   * @param name - the name to search for\n   * @param opts - a SearchOptions argument with optional signal\n   * @return a Promise for an array of Feature\n   */\n  public async searchExtraIndex(name: string, opts: RequestOptions = {}) {\n    const blocks = await this.searchExtraIndexBlocks(name, opts)\n    if (blocks.length === 0) {\n      return []\n    }\n    const view = await this.getUnzoomedView(opts)\n    const res = blocks.map(block => {\n      return new Observable<Feature[]>(observer => {\n        view.readFeatures(observer, [block], opts).catch((e: unknown) => {\n          observer.error(e)\n        })\n      }).pipe(\n        reduce((acc, curr) => acc.concat(curr)),\n        map(x => {\n          for (const element of x) {\n            element.field = block.field\n          }\n          return x\n        }),\n      )\n    })\n    const ret = await firstValueFrom(merge(...res))\n    return ret.filter(f => f.rest?.split('\\t')[(f.field || 0) - 3] === name)\n  }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n"],"names":["NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","signal","this","aborted","Error","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","callback","currentMessage","message","elt","AbortablePromiseCache","constructor","fill","cache","TypeError","get","set","fillCallback","isAbortException","exception","name","code","evict","key","entry","data","statusCallback","aborter","statusReporter","newEntry","promise","settled","then","catch","error","console","checkSinglePromise","checkForSingleAbort","Object","assign","result","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","keys","deleteCount","next","done","value","BigInt32","BigInt","DataView","prototype","getBigInt64","byteOffset","littleEndian","dataView","littleEndianMask","Number","bigEndianMask","getInt32","getUint32","getBigUint64","a","b","Range","arg1","ranges","min","max","at","contains","pos","r","isContiguous","length","getRanges","map","toString","join","union","s1","sort","oranges","current","nxt","push","zero$1","buf","len","extra_lbits","Uint8Array","extra_dbits","extra_blbits","bl_order","static_ltree","Array","static_dtree","D_CODES$1","_dist_code","_length_code","MAX_MATCH$1","base_length","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","static_l_desc","static_d_desc","static_bl_desc","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","s","w","pending_buf","pending","send_bits","bi_valid","bi_buf","send_code","c","tree","bi_reverse","res","gen_codes","bl_count","next_code","MAX_BITS$1","bits","n","init_block","LITERALS$1","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","sym_next","matches","bi_windup","smaller","m","depth","_n2","_m2","pqdownheap","k","v","heap","j","heap_len","compress_block","ltree","dtree","lc","extra","sx","sym_buf","build_tree","desc","stree","node","heap_max","base","h","xbits","f","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","count","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_stored_block$1","stored_len","last","window","subarray","trees","_tr_init","LENGTH_CODES$1","L_CODES$1","tr_static_init","l_desc","d_desc","bl_desc","_tr_stored_block","_tr_flush_block","opt_lenb","static_lenb","max_blindex","level","strm","data_type","block_mask","detect_data_type","BL_CODES$1","build_bl_tree","strategy","lcodes","dcodes","blcodes","rank","send_all_trees","_tr_tally","sym_end","_tr_align","STATIC_TREES","bi_flush","adler32_1","adler","s2","crcTable","Uint32Array","table","makeTable","crc32_1","crc","t","end","i","messages","constants$2","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","Z_NO_FLUSH$2","Z_FULL_FLUSH$1","Z_FINISH$3","Z_BLOCK$1","Z_OK$3","Z_STREAM_END$3","Z_STREAM_ERROR$2","Z_DATA_ERROR$2","Z_BUF_ERROR$1","Z_DEFAULT_COMPRESSION$1","Z_DEFAULT_STRATEGY$1","Z_DEFLATED$2","MAX_MATCH","MIN_LOOKAHEAD","INIT_STATE","BUSY_STATE","FINISH_STATE","err","errorCode","msg","zero","slide_hash","p","wsize","w_size","hash_size","head","prev","HASH","hash_shift","hash_mask","flush_pending","state","avail_out","output","pending_out","next_out","total_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","start","avail_in","input","next_in","wrap","total_in","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","more","str","window_size","insert","ins_h","deflate_stored","flush","left","have","min_block","pending_buf_size","used","high_water","deflate_fast","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","configuration_table","DeflateState","status","gzhead","gzindex","method","last_flush","w_bits","hash_bits","Uint16Array","HEAP_SIZE","MAX_BITS","lit_bufsize","deflateStateCheck","deflateResetKeep","deflateReset","ret","deflateInit2","windowBits","memLevel","deflate_1$2","old_flush","header","level_flags","text","hcrc","comment","time","os","beg","copy","gzhead_extra","val","charCodeAt","bstate","deflate_huff","deflate_rle","dictionary","dictLength","tmpDict","avail","_has","obj","hasOwnProperty","call","common","sources","slice","arguments","source","shift","chunks","l","chunk","STR_APPLY_UIA_OK","String","fromCharCode","apply","__","_utf8len","q","strings","TextEncoder","encode","c2","m_pos","str_len","buf_len","TextDecoder","decode","out","utf16buf","c_len","buf2binstring","zstream","toString$1","Z_NO_FLUSH$1","Z_FINISH$2","Z_OK$2","Z_STREAM_END$2","Z_DEFLATED$1","Deflate$1","options","chunkSize","opt","raw","gzip","ended","dict","_dict_set","deflate$1","deflator","flush_mode","_flush_mode","onData","onEnd","deflate_1$1","Deflate","deflate","deflateRaw","constants","BAD$1","inffast","_in","_out","dmax","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","op","from","from_source","lencode","distcode","lenbits","distbits","top","dolen","mode","sane","lbase","lext","dbase","dext","inftrees","type","lens","lens_index","codes","table_index","work","opts","incr","low","mask","sym","root","curr","drop","huff","MAXBITS","offs","here_bits","here_op","here_val","Z_FINISH$1","Z_OK$1","Z_STREAM_END$1","Z_NEED_DICT$1","Z_STREAM_ERROR$1","Z_DATA_ERROR$1","Z_MEM_ERROR$1","HEAD","DICT","TYPE","TYPEDO","COPY_","LEN_","LEN","CHECK","BAD","zswap32","InflateState","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","lendyn","distdyn","back","was","inflateStateCheck","inflateResetKeep","Int32Array","inflateReset","inflateReset2","inflateInit2","lenfix","distfix","virgin","fixedtables","updatewindow","src","inflate_1$2","put","last_bits","last_op","last_val","hbuf","order","inf_leave","xflags","extra_len","dictid","gzheader","Inflate$1","to","inflate$1","inflator","last_avail_out","next_out_utf8","tail","utf8str","inflate_1$1","Inflate","inflate","inflateRaw","ungzip","inflateRaw_1","AbortError","super","checkAbortSignal","DOMException","e","decoder","undefined","coordFilter","e1","e2","BlockView","bbi","refsByName","cirTreeOffset","isBigEndian","isCompressed","blockType","featureCache","A","maxSize","async","requestData","off","buffer","read","alloc","readWigData","chrName","observer","chrId","complete","request","cirTreePromise","cirBlockSize","readUInt32BE","readUInt32LE","blocksToFetch","outstanding","le","cirFobRecur2","cirBlockData","offset2","isLeaf","getUint8","cnt","getUint16","blocksToFetch2","startChrom","startBase","endChrom","endBase","blockOffset","blockSize","concat","filter","filterFeats","recurOffsets","recurOffsets2","cirFobRecur","cirFobStartFetch","fr","resultBuffer","element","readFeatures","maxCirBlockSpan","spans","blockSpan","parseSummaryBlock","startOffset","features","byteLength","chromId","validCnt","minScore","getFloat32","maxScore","sumData","summary","score","parseBigBedBlock","items","currOffset","rest","uniqueId","parseBigWigBlock","req","blockStart","itemStep","itemSpan","itemCount","blocks","blockGroupsToFetch","b0","b1","blockGroups","lastBlock","lastBlockEnd","block","groupBlocks","Promise","all","blockGroup","resultData","warn","BIG_WIG_MAGIC","BIG_BED_MAGIC","BBI","getHeader","headerP","_getHeader","args","filehandle","renameRefSeqs","path","url","_getMainHeader","chroms","_readChromTree","requestSize","_isBigEndian","magic","version","numZoomLevels","chromTreeOffset","unzoomedDataOffset","unzoomedIndexOffset","fieldCount","definedFieldCount","asOffset","totalSummaryOffset","uncompressBufSize","extHeaderOffset","zoomLevels","reductionLevel","reserved","dataOffset","indexOffset","fileType","totalSummary","basesCovered","scoreMin","getFloat64","scoreMax","scoreSum","scoreSumSquares","autoSql","indexOf","readInt32LE","readInt32BE","refsByNumber","keySize","bptReadNode","currentOffset","isLeafNode","replaceAll","refId","refSize","refRec","id","nextNodes","childOffset","getUnzoomedView","getFeatureStream","refName","view","basesPerSpan","scale","getView","Observable","getFeatures","ob","firstValueFrom","pipe","toArray","flat","BigWig","basesPerPx","zh","BigBed","readIndicesCache","_readIndices","readIndices","JSON","stringify","_scale","indices","getInt16","fieldcount","field","searchExtraIndexBlocks","locs","index","valSize","nodeOffset","nodeType","getInt8","leafkeys","lastOffset","localeCompare","searchExtraIndex","reduce","acc","x","merge","split","base64","ieee754","customInspectSymbol","Symbol","exports","Buffer","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","arg","encodingOrOffset","allocUnsafe","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","isBuffer","checked","numberIsNaN","isArray","fromObject","toPrimitive","assertSize","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","poolSize","allocUnsafeSlow","_isBuffer","compare","y","list","swap16","swap32","swap64","toLocaleString","equals","inspect","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","getMessage","Base","writable","configurable","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","base64clean","dst","alphabet","i16","fn","BufferBigIntNotDefined"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3940.c8b3da50.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[3940],{84885:(r,a,t)=>{t.d(a,{A:()=>f});var o=t(7552),n=t(93878),e=t(43583),i=t(70799),l=t(1045);var s=t(51148),c=t(60129),g=t(58520),p=t(4785),h=t(15622),d=t(47839),m=t(69500);const v=(0,s.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(r,a)=>a.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),b=(0,s.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(r,a)=>{const{ownerState:t}=r;return[a.badge,a[t.variant],a[`anchorOrigin${(0,h.A)(t.anchorOrigin.vertical)}${(0,h.A)(t.anchorOrigin.horizontal)}${(0,h.A)(t.overlap)}`],"default"!==t.color&&a[`color${(0,h.A)(t.color)}`],t.invisible&&a.invisible]}})((0,c.A)((({theme:r})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:r.typography.fontFamily,fontWeight:r.typography.fontWeightMedium,fontSize:r.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.enteringScreen}),variants:[...Object.entries(r.palette).filter((0,g.A)(["contrastText"])).map((([a])=>({props:{color:a},style:{backgroundColor:(r.vars||r).palette[a].main,color:(r.vars||r).palette[a].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${d.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.leavingScreen})}}]})))),f=o.forwardRef((function(r,a){const t=(0,p.b)({props:r,name:"MuiBadge"}),{anchorOrigin:o={vertical:"top",horizontal:"right"},className:s,classes:c,component:g,components:f={},componentsProps:u={},children:O,overlap:A="rectangular",color:y="default",invisible:w=!1,max:x=99,badgeContent:C,slots:S,slotProps:$,showZero:R=!1,variant:z="standard",...B}=t,{badgeContent:T,invisible:P,max:j,displayValue:k}=function(r){const{badgeContent:a,invisible:t=!1,max:o=99,showZero:n=!1}=r,i=(0,e.A)({badgeContent:a,max:o});let l=t;!1!==t||0!==a||n||(l=!0);const{badgeContent:s,max:c=o}=l?i:r;return{badgeContent:s,invisible:l,max:c,displayValue:s&&Number(s)>c?`${c}+`:s}}({max:x,invisible:w,badgeContent:C,showZero:R}),L=(0,e.A)({anchorOrigin:o,color:y,overlap:A,variant:z,badgeContent:C}),M=P||null==T&&"dot"!==z,{color:N=y,overlap:W=A,anchorOrigin:I=o,variant:Z=z}=M?L:t,_="dot"!==Z?k:void 0,F={...t,badgeContent:T,invisible:M,max:j,displayValue:_,showZero:R,anchorOrigin:I,color:N,overlap:W,variant:Z},V=(r=>{const{color:a,anchorOrigin:t,invisible:o,overlap:n,variant:e,classes:l={}}=r,s={root:["root"],badge:["badge",e,o&&"invisible",`anchorOrigin${(0,h.A)(t.vertical)}${(0,h.A)(t.horizontal)}`,`anchorOrigin${(0,h.A)(t.vertical)}${(0,h.A)(t.horizontal)}${(0,h.A)(n)}`,`overlap${(0,h.A)(n)}`,"default"!==a&&`color${(0,h.A)(a)}`]};return(0,i.A)(s,d.w,l)})(F),D=S?.root??f.Root??v,E=S?.badge??f.Badge??b,H=$?.root??u.root,U=$?.badge??u.badge,q=(0,l.A)({elementType:D,externalSlotProps:H,externalForwardedProps:B,additionalProps:{ref:a,as:g},ownerState:F,className:(0,n.A)(H?.className,V.root,s)}),G=(0,l.A)({elementType:E,externalSlotProps:U,ownerState:F,className:(0,n.A)(V.badge,U?.className)});return(0,m.jsxs)(D,{...q,children:[O,(0,m.jsx)(E,{...G,children:_})]})}))},47839:(r,a,t)=>{t.d(a,{A:()=>i,w:()=>e});var o=t(33761),n=t(85693);function e(r){return(0,n.Ay)("MuiBadge",r)}const i=(0,o.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},13940:(r,a,t)=>{t.r(a),t.d(a,{badgeClasses:()=>n.A,default:()=>o.A,getBadgeUtilityClass:()=>n.w});var o=t(84885),n=t(47839)}}]);
+//# sourceMappingURL=3940.c8b3da50.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/3940.c8b3da50.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/3940.c8b3da50.chunk.js","mappings":"mRAgBA,MAiBMA,GAAY,EAAAC,EAAA,IAAO,OAAQ,CAC/BC,KAAM,WACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAH7B,CAIf,CACDC,SAAU,WACVC,QAAS,cAETC,cAAe,SACfC,WAAY,IAERC,GAAa,EAAAX,EAAA,IAAO,OAAQ,CAChCC,KAAM,WACNC,KAAM,QACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJO,GACER,EACJ,MAAO,CAACC,EAAOQ,MAAOR,EAAOO,EAAWE,SAAUT,EAAO,gBAAe,EAAAU,EAAA,GAAWH,EAAWI,aAAaC,aAAY,EAAAF,EAAA,GAAWH,EAAWI,aAAaE,eAAc,EAAAH,EAAA,GAAWH,EAAWO,YAAkC,YAArBP,EAAWQ,OAAuBf,EAAO,SAAQ,EAAAU,EAAA,GAAWH,EAAWQ,UAAWR,EAAWS,WAAahB,EAAOgB,UAAU,GAPvT,EAShB,EAAAC,EAAA,IAAU,EACXC,YACI,CACJf,QAAS,OACTgB,cAAe,MACfC,SAAU,OACVC,eAAgB,SAChBC,aAAc,SACdC,WAAY,SACZrB,SAAU,WACVsB,UAAW,aACXC,WAAYP,EAAMQ,WAAWD,WAC7BE,WAAYT,EAAMQ,WAAWE,iBAC7BC,SAAUX,EAAMQ,WAAWI,QAAQ,IACnCC,SAAUC,GACVC,WAAY,EACZC,QAAS,QACTC,OAAQH,GACRI,aAvDsB,GAwDtBC,OAAQ,EAERC,WAAYpB,EAAMqB,YAAYC,OAAO,YAAa,CAChDC,OAAQvB,EAAMqB,YAAYE,OAAOC,UACjCC,SAAUzB,EAAMqB,YAAYI,SAASC,iBAEvCC,SAAU,IAAIC,OAAOC,QAAQ7B,EAAM8B,SAASC,QAAO,EAAAC,EAAA,GAA+B,CAAC,kBAAkBC,KAAI,EAAEpC,MAAW,CACpHhB,MAAO,CACLgB,SAEFqC,MAAO,CACLC,iBAAkBnC,EAAMoC,MAAQpC,GAAO8B,QAAQjC,GAAOwC,KACtDxC,OAAQG,EAAMoC,MAAQpC,GAAO8B,QAAQjC,GAAOyC,kBAE3C,CACHzD,MAAO,CACLU,QAAS,OAEX2C,MAAO,CACLhB,aA1Ea,EA2EbD,OAAQsB,EACR1B,SAAU0B,EACVvB,QAAS,IAEV,CACDnC,MAAO,EACLQ,gBACyC,QAArCA,EAAWI,aAAaC,UAA6D,UAAvCL,EAAWI,aAAaE,YAAiD,gBAAvBN,EAAWO,QACjHsC,MAAO,CACLM,IAAK,EACLC,MAAO,EACPC,UAAW,gCACXC,gBAAiB,UACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,mCAGd,CACD7D,MAAO,EACLQ,gBACyC,WAArCA,EAAWI,aAAaC,UAAgE,UAAvCL,EAAWI,aAAaE,YAAiD,gBAAvBN,EAAWO,QACpHsC,MAAO,CACLW,OAAQ,EACRJ,MAAO,EACPC,UAAW,+BACXC,gBAAiB,YACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,kCAGd,CACD7D,MAAO,EACLQ,gBACyC,QAArCA,EAAWI,aAAaC,UAA6D,SAAvCL,EAAWI,aAAaE,YAAgD,gBAAvBN,EAAWO,QAChHsC,MAAO,CACLM,IAAK,EACLM,KAAM,EACNJ,UAAW,iCACXC,gBAAiB,QACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,oCAGd,CACD7D,MAAO,EACLQ,gBACyC,WAArCA,EAAWI,aAAaC,UAAgE,SAAvCL,EAAWI,aAAaE,YAAgD,gBAAvBN,EAAWO,QACnHsC,MAAO,CACLW,OAAQ,EACRC,KAAM,EACNJ,UAAW,gCACXC,gBAAiB,UACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,mCAGd,CACD7D,MAAO,EACLQ,gBACyC,QAArCA,EAAWI,aAAaC,UAA6D,UAAvCL,EAAWI,aAAaE,YAAiD,aAAvBN,EAAWO,QACjHsC,MAAO,CACLM,IAAK,MACLC,MAAO,MACPC,UAAW,gCACXC,gBAAiB,UACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,mCAGd,CACD7D,MAAO,EACLQ,gBACyC,WAArCA,EAAWI,aAAaC,UAAgE,UAAvCL,EAAWI,aAAaE,YAAiD,aAAvBN,EAAWO,QACpHsC,MAAO,CACLW,OAAQ,MACRJ,MAAO,MACPC,UAAW,+BACXC,gBAAiB,YACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,kCAGd,CACD7D,MAAO,EACLQ,gBACyC,QAArCA,EAAWI,aAAaC,UAA6D,SAAvCL,EAAWI,aAAaE,YAAgD,aAAvBN,EAAWO,QAChHsC,MAAO,CACLM,IAAK,MACLM,KAAM,MACNJ,UAAW,iCACXC,gBAAiB,QACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,oCAGd,CACD7D,MAAO,EACLQ,gBACyC,WAArCA,EAAWI,aAAaC,UAAgE,SAAvCL,EAAWI,aAAaE,YAAgD,aAAvBN,EAAWO,QACnHsC,MAAO,CACLW,OAAQ,MACRC,KAAM,MACNJ,UAAW,gCACXC,gBAAiB,UACjB,CAAC,KAAKC,EAAA,EAAa9C,aAAc,CAC/B4C,UAAW,mCAGd,CACD7D,MAAO,CACLiB,WAAW,GAEboC,MAAO,CACLd,WAAYpB,EAAMqB,YAAYC,OAAO,YAAa,CAChDC,OAAQvB,EAAMqB,YAAYE,OAAOC,UACjCC,SAAUzB,EAAMqB,YAAYI,SAASsB,wBAwN7C,EAnN2B,cAAiB,SAAeC,EAASC,GAClE,MAAMpE,GAAQ,OAAgB,CAC5BA,MAAOmE,EACPtE,KAAM,cAGNe,aAAcyD,EAAmB,CAC/BxD,SAAU,MACVC,WAAY,SACb,UACDwD,EACAC,QAASC,EAAW,UACpBC,EAAS,WACTC,EAAa,CAAC,EAAC,gBACfC,EAAkB,CAAC,EAAC,SACpBC,EACA7D,QAAS8D,EAAc,cACvB7D,MAAO8D,EAAY,UACnB7D,UAAW8D,GAAgB,EAC3BC,IAAKC,EAAU,GACfC,aAAcC,EAAgB,MAC9BC,EAAK,UACLC,EAAS,SACTC,GAAW,EACX5E,QAAS6E,EAAc,cACpBC,GACDxF,GACE,aACJkF,EACAjE,UAAWwE,EAAiB,IAC5BT,EACAU,aAAcC,GCtOlB,SAAkBC,GAChB,MACEV,aAAcC,EACdlE,UAAW8D,GAAgB,EAC3BC,IAAKC,EAAU,GAAE,SACjBK,GAAW,GACTM,EACEC,GAAY,EAAAC,EAAA,GAAiB,CACjCZ,aAAcC,EACdH,IAAKC,IAEP,IAAIhE,EAAY8D,GACM,IAAlBA,GAAgD,IAArBI,GAA2BG,IACxDrE,GAAY,GAEd,MAAM,aACJiE,EAAY,IACZF,EAAMC,GACJhE,EAAY4E,EAAYD,EAE5B,MAAO,CACLV,eACAjE,YACA+D,MACAU,aALmBR,GAAgBa,OAAOb,GAAgBF,EAAM,GAAGA,KAASE,EAOhF,CD6MM,CAAS,CACXF,IAAKC,EACLhE,UAAW8D,EACXG,aAAcC,EACdG,aAEIO,GAAY,EAAAC,EAAA,GAAiB,CACjClF,aAAcyD,EACdrD,MAAO8D,EACP/D,QAAS8D,EACTnE,QAAS6E,EACTL,aAAcC,IAEVlE,EAAYwE,GAAqC,MAAhBP,GAAwC,QAAhBK,GACzD,MACJvE,EAAQ8D,EAAS,QACjB/D,EAAU8D,EAAW,aACrBjE,EAAeyD,EAAgB,QAC/B3D,EAAU6E,GACRtE,EAAY4E,EAAY7F,EACtB0F,EAA2B,QAAZhF,EAAoBiF,OAAuBK,EAC1DxF,EAAa,IACdR,EACHkF,eACAjE,YACA+D,MACAU,eACAJ,WACA1E,eACAI,QACAD,UACAL,WAEI6D,EAnQkB/D,KACxB,MAAM,MACJQ,EAAK,aACLJ,EAAY,UACZK,EAAS,QACTF,EAAO,QACPL,EAAO,QACP6D,EAAU,CAAC,GACT/D,EACE4E,EAAQ,CACZlF,KAAM,CAAC,QACPO,MAAO,CAAC,QAASC,EAASO,GAAa,YAAa,gBAAe,EAAAN,EAAA,GAAWC,EAAaC,aAAY,EAAAF,EAAA,GAAWC,EAAaE,cAAe,gBAAe,EAAAH,EAAA,GAAWC,EAAaC,aAAY,EAAAF,EAAA,GAAWC,EAAaE,eAAc,EAAAH,EAAA,GAAWI,KAAY,WAAU,EAAAJ,EAAA,GAAWI,KAAsB,YAAVC,GAAuB,SAAQ,EAAAL,EAAA,GAAWK,OAE3U,OAAO,EAAAiF,EAAA,GAAeb,EAAO,IAAsBb,EAAQ,EAsP3C2B,CAAkB1F,GAG5B2F,EAAWf,GAAOlF,MAAQwE,EAAW0B,MAAQzG,EAC7C0G,EAAYjB,GAAO3E,OAASiE,EAAW4B,OAAS/F,EAChDgG,EAAgBlB,GAAWnF,MAAQyE,EAAgBzE,KACnDsG,EAAiBnB,GAAW5E,OAASkE,EAAgBlE,MACrDgG,GAAY,EAAAC,EAAA,GAAa,CAC7BC,YAAaR,EACbS,kBAAmBL,EACnBM,uBAAwBrB,EACxBsB,gBAAiB,CACf1C,MACA2C,GAAItC,GAENjE,aACA8D,WAAW,EAAA0C,EAAA,GAAKT,GAAejC,UAAWC,EAAQrE,KAAMoE,KAEpD2C,GAAa,EAAAP,EAAA,GAAa,CAC9BC,YAAaN,EACbO,kBAAmBJ,EACnBhG,aACA8D,WAAW,EAAA0C,EAAA,GAAKzC,EAAQ9D,MAAO+F,GAAgBlC,aAEjD,OAAoB,UAAM6B,EAAU,IAC/BM,EACH7B,SAAU,CAACA,GAAuB,SAAKyB,EAAW,IAC7CY,EACHrC,SAAUc,MAGhB,G,qEElTO,SAASwB,EAAqBpH,GACnC,OAAO,QAAqB,WAAYA,EAC1C,CACA,MAGA,GAHqB,OAAuB,WAAY,CAAC,OAAQ,QAAS,MAAO,WAAY,uBAAwB,0BAA2B,sBAAuB,yBAA0B,YAAa,aAAc,YAAa,eAAgB,iBAAkB,eAAgB,eAAgB,qBAAsB,kBAEjU,8BAA+B,iCAAkC,+BAAgC,kCAAmC,iCAAkC,oCAAqC,kCAAmC,sC","sources":["../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;"],"names":["BadgeRoot","styled","name","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","padding","height","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","map","style","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","className","classes","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/399.e36b7683.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[399,8341,722,5484,7865,246,2627,5008],{48927:(e,t,r)=>{r.r(t),r.d(t,{default:()=>I});var n=r(7552),a=r(29499),o=r(49823),i=r(68446),l=r(42489),s=r(36422),c=r(85676),d=r(76157),m=r(13476),u=r(99546),h=r(75785),p=r(67314),f=r(1343),v=r(93117),g=r(61723),w=r(31892),b=r(17307),k=r(9469);function E({model:e}){const{faceted:t}=e,[r,a]=(0,n.useState)(null),{showOptions:i,showFilters:l,showSparse:s,useShoppingCart:c}=t;return n.createElement(n.Fragment,null,n.createElement(p.Ay,{container:!0,spacing:4,alignItems:"center"},n.createElement(p.Ay,{item:!0},n.createElement(f.A,{label:"Search...",value:t.filterText,onChange:e=>{t.setFilterText(e.target.value)},InputProps:{endAdornment:n.createElement(v.A,{position:"end"},n.createElement(g.A,{onClick:()=>{t.setFilterText("")}},n.createElement(w.A,null)))}})),n.createElement(p.Ay,{item:!0},n.createElement(g.A,{onClick:e=>{a(e.currentTarget)}},n.createElement(b.A,null))),n.createElement(p.Ay,{item:!0},n.createElement(k.A,{model:e}))),n.createElement(o.Menu,{anchorEl:r,open:!!r,onClose:()=>{a(null)},onMenuItemClick:(e,t)=>{t(),a(null)},menuItems:[{label:"Add tracks to selection instead of turning them on/off",onClick:()=>{t.setUseShoppingCart(!c)},type:"checkbox",checked:c},{label:"Show sparse metadata columns",onClick:()=>{t.setShowSparse(!s)},checked:s,type:"checkbox"},{label:"Show facet filters",onClick:()=>{t.setShowFilters(!l)},checked:l,type:"checkbox"},{label:"Show extra table options",onClick:()=>{t.setShowOptions(!i)},checked:i,type:"checkbox"}]}))}var A=r(89003),y=r(48171),C=r(36715),S=r(98360),x=r(16217),M=r(374);const T=(0,h.n9)()((e=>({facet:{margin:0,marginLeft:e.spacing(2)},select:{marginBottom:e.spacing(2)}})));function R({onClick:e}){return n.createElement(A.A,{title:"Clear selection on this facet filter"},n.createElement(g.A,{onClick:()=>{e()},size:"small"},n.createElement(w.A,null)))}function H({visible:e,onClick:t}){return n.createElement(A.A,{title:"Minimize/expand this facet filter"},n.createElement(g.A,{onClick:()=>{t()},size:"small"},e?n.createElement(x.A,null):n.createElement(M.A,null)))}const L=(0,i.observer)((function({column:e,vals:t,model:r}){const{classes:a}=T(),[o,i]=(0,n.useState)(!0),{faceted:l}=r,{filters:s}=l,{field:c}=e;return n.createElement(y.A,{className:a.facet,fullWidth:!0},n.createElement("div",null,n.createElement(C.A,{component:"span"},c),n.createElement(R,{onClick:()=>{l.setFilter(c,[])}}),n.createElement(H,{visible:o,onClick:()=>{i(!o)}})),o?n.createElement(S.A,{multiple:!0,native:!0,className:a.select,value:s.get(e.field)||[],onChange:t=>{l.setFilter(e.field,[...t.target.options].filter((e=>e.selected)).map((e=>e.value)))}},t.sort(((e,t)=>e[0].localeCompare(t[0]))).map((([e,t])=>n.createElement("option",{key:e,value:e},(0,u.coarseStripHTML)(e)," (",t,")")))):null)}));var N=r(6842);const W=(0,i.observer)((function({rows:e,columns:t,model:r}){const{faceted:a}=r,{filters:o}=a,i=t.slice(1),l=new Map(i.map((e=>[e.field,new Map]))),s=a.filters.keys(),c=i.map((e=>e.field)),d=new Set;for(const e of s)o.get(e)?.length&&d.add(e);for(const e of c)d.add(e);let m=e;for(const e of d){const t=l.get(e);for(const r of m){const n=(0,N.a)(e,r),a=t.get(n);n&&(void 0===a?t.set(n,1):t.set(n,a+1))}const r=o.get(e)?.length?new Set(o.get(e)):void 0;m=m.filter((t=>void 0===r||r.has((0,N.a)(e,t))))}return n.createElement("div",null,i.map((e=>n.createElement(L,{key:e.field,vals:[...l.get(e.field)],column:e,model:r}))))}));var $=r(48408);const F=(0,h.n9)()({cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},resizeHandle:{marginLeft:5,background:"grey",width:5}}),P=.75,D=(0,i.observer)((function({model:e}){const{classes:t}=F(),{view:r,selection:a,shownTrackIds:i,faceted:h}=e,{rows:p,panelWidth:f,showFilters:v,useShoppingCart:g,showOptions:w,filteredRows:b,filteredNonMetadataKeys:k,filteredMetadataKeys:A,visible:y}=h,{pluginManager:C}=(0,u.getEnv)(e),[S,x]=(0,n.useState)({name:(0,u.measureGridWidth)(p.map((e=>e.name)),{maxWidth:500,stripHTML:!0})+15,...Object.fromEntries(k.filter((e=>y[e])).map((e=>[e,(0,u.measureGridWidth)(p.map((t=>t[e])),{maxWidth:400,stripHTML:!0})]))),...Object.fromEntries(A.filter((e=>y[`metadata.${e}`])).map((e=>[`metadata.${e}`,(0,u.measureGridWidth)(p.map((t=>t.metadata[e])),{maxWidth:400,stripHTML:!0})])))}),M=[{field:"name",hideable:!1,renderCell:r=>{const{value:a,row:o}=r,{id:i,conf:l}=o;return n.createElement("div",{className:t.cell},n.createElement(m.A,{html:a}),n.createElement($.A,{id:i,conf:l,trackId:i,model:e}))},width:S.name??100},...k.map((e=>({field:e,width:S[e]??100,renderCell:e=>{const r=e.value;return r?n.createElement(m.A,{className:t.cell,html:r}):""}}))),...A.map((e=>({field:`metadata.${e}`,headerName:["name",...k].includes(e)?`${e} (from metadata)`:e,width:S[`metadata.${e}`]??100,valueGetter:(t,r)=>`${r.metadata[e]??""}`,renderCell:e=>{const r=e.value;return r?n.createElement(m.A,{className:t.cell,html:r}):""}})))];return n.createElement(n.Fragment,null,n.createElement(E,{model:e}),n.createElement("div",{style:{display:"flex",overflow:"hidden",height:window.innerHeight*P,width:window.innerWidth*P}},n.createElement("div",{style:{height:window.innerHeight*P,width:window.innerWidth*P-(v?f:0)}},n.createElement(c.z,{rows:b,onColumnWidthChange:e=>{x({...S,[e.colDef.field]:e.width})},columnVisibilityModel:y,onColumnVisibilityModelChange:e=>{h.setVisible(e)},columnHeaderHeight:35,checkboxSelection:!0,disableRowSelectionOnClick:!0,keepNonExistentRowsSelected:!0,onRowSelectionModelChange:t=>{if(g){const r=(0,s.getRoot)(e),n=C.pluggableConfigSchemaType("track");e.setSelection(t.map((e=>(0,s.resolveIdentifier)(n,r,e))))}else{const n=i,a=new Set(t);(0,l.transaction)((()=>{[...n].filter((e=>!a.has(e))).map((e=>r.hideTrack(e))),[...a].filter((e=>!n.has(e))).map((t=>{r.showTrack(t),e.addToRecentlyUsed(t)}))}))}},rowSelectionModel:g?a.map((e=>e.trackId)):[...i],slots:{toolbar:w?d.O:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}},columns:M,rowHeight:25})),v?n.createElement(n.Fragment,null,n.createElement(o.ResizeHandle,{vertical:!0,onDrag:e=>h.setPanelWidth(f-e),className:t.resizeHandle}),n.createElement("div",{style:{width:f,overflow:"auto"}},n.createElement(W,{model:e,rows:p,columns:M}))):null))})),I=(0,i.observer)((function(e){const{handleClose:t}=e;return n.createElement(o.Dialog,{open:!0,onClose:t,maxWidth:"xl",title:"Faceted track selector"},n.createElement(a.A,null,n.createElement(D,e)))}))},59705:(e,t,r)=>{r.d(t,{A:()=>E});var n=r(7552),a=r(93878),o=r(70799),i=r(64761),l=r(51148),s=r(60129),c=r(4785),d=r(15622),m=r(58520),u=r(72489),h=r(69500);const p=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,v="string"!=typeof p?i.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?i.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,w=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,d.A)(r.color)}`]]}})((0,s.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:v||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,m.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),b=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,d.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,s.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),E=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:l=!1,size:s=40,style:m,thickness:p=3.6,value:f=0,variant:v="indeterminate",...g}=r,E={...r,color:i,disableShrink:l,size:s,thickness:p,value:f,variant:v},A=(e=>{const{classes:t,variant:r,color:n,disableShrink:a}=e,i={root:["root",r,`color${(0,d.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(r)}`,a&&"circleDisableShrink"]};return(0,o.A)(i,u.b,t)})(E),y={},C={},S={};if("determinate"===v){const e=2*Math.PI*((44-p)/2);y.strokeDasharray=e.toFixed(3),S["aria-valuenow"]=Math.round(f),y.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,C.transform="rotate(-90deg)"}return(0,h.jsx)(w,{className:(0,a.A)(A.root,n),style:{width:s,height:s,...C,...m},ownerState:E,ref:t,role:"progressbar",...S,...g,children:(0,h.jsx)(b,{className:A.svg,ownerState:E,viewBox:"22 22 44 44",children:(0,h.jsx)(k,{className:A.circle,style:y,ownerState:E,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>o});var n=r(33761),a=r(85693);function o(e){return(0,a.Ay)("MuiCircularProgress",e)}const i=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,t,r)=>{r.d(t,{x:()=>d});var n=r(7552),a=r(29527),o=r(89887),i=r(99305),l=r(28325),s=r(69500);function c(e){return e.substring(2).toLowerCase()}function d(e){const{children:t,disableReactTree:r=!1,mouseEvent:d="onClick",onClickAway:m,touchEvent:u="onTouchEnd"}=e,h=n.useRef(!1),p=n.useRef(null),f=n.useRef(!1),v=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,a.A)((0,l.A)(t),p),w=(0,o.A)((e=>{const t=v.current;v.current=!1;const n=(0,i.A)(p.current);if(!f.current||!p.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth<e.clientX||t.documentElement.clientHeight<e.clientY}(e,n))return;if(h.current)return void(h.current=!1);let a;a=e.composedPath?e.composedPath().includes(p.current):!n.documentElement.contains(e.target)||p.current.contains(e.target),a||!r&&t||m(e)})),b=e=>r=>{v.current=!0;const n=t.props[e];n&&n(r)},k={ref:g};return!1!==u&&(k[u]=b(u)),n.useEffect((()=>{if(!1!==u){const e=c(u),t=(0,i.A)(p.current),r=()=>{h.current=!0};return t.addEventListener(e,w),t.addEventListener("touchmove",r),()=>{t.removeEventListener(e,w),t.removeEventListener("touchmove",r)}}}),[w,u]),!1!==d&&(k[d]=b(d)),n.useEffect((()=>{if(!1!==d){const e=c(d),t=(0,i.A)(p.current);return t.addEventListener(e,w),()=>{t.removeEventListener(e,w)}}}),[w,d]),(0,s.jsx)(n.Fragment,{children:n.cloneElement(t,k)})}},17515:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(7552),a=r(93878),o=r(70799),i=r(51148),l=r(60129),s=r(4785),c=r(89663),d=r(69500);const m=(0,i.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableGutters&&t.gutters,t[r.variant]]}})((0,l.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),u=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiToolbar"}),{className:n,component:i="div",disableGutters:l=!1,variant:u="regular",...h}=r,p={...r,component:i,disableGutters:l,variant:u},f=(e=>{const{classes:t,disableGutters:r,variant:n}=e,a={root:["root",!r&&"gutters",n]};return(0,o.A)(a,c.U,t)})(p);return(0,d.jsx)(m,{as:i,className:(0,a.A)(f.root,n),ref:t,ownerState:p,...h})}))},89663:(e,t,r)=>{r.d(t,{A:()=>i,U:()=>o});var n=r(33761),a=r(85693);function o(e){return(0,a.Ay)("MuiToolbar",e)}const i=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=399.e36b7683.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/399.e36b7683.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/399.e36b7683.chunk.js","mappings":"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","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport { Grid, IconButton, InputAdornment, TextField } from '@mui/material'\nimport { Menu } from '@jbrowse/core/ui'\n\n// icons\nimport ClearIcon from '@mui/icons-material/Clear'\nimport MoreVert from '@mui/icons-material/MoreVert'\n\n// locals\nimport ShoppingCart from '../ShoppingCart'\nimport { HierarchicalTrackSelectorModel } from '../../model'\n\nexport default function FacetedHeader({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { faceted } = model\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n  const { showOptions, showFilters, showSparse, useShoppingCart } = faceted\n\n  return (\n    <>\n      <Grid container spacing={4} alignItems=\"center\">\n        <Grid item>\n          <TextField\n            label=\"Search...\"\n            value={faceted.filterText}\n            onChange={event => {\n              faceted.setFilterText(event.target.value)\n            }}\n            InputProps={{\n              endAdornment: (\n                <InputAdornment position=\"end\">\n                  <IconButton\n                    onClick={() => {\n                      faceted.setFilterText('')\n                    }}\n                  >\n                    <ClearIcon />\n                  </IconButton>\n                </InputAdornment>\n              ),\n            }}\n          />\n        </Grid>\n\n        <Grid item>\n          <IconButton\n            onClick={event => {\n              setAnchorEl(event.currentTarget)\n            }}\n          >\n            <MoreVert />\n          </IconButton>\n        </Grid>\n        <Grid item>\n          <ShoppingCart model={model} />\n        </Grid>\n      </Grid>\n      <Menu\n        anchorEl={anchorEl}\n        open={!!anchorEl}\n        onClose={() => {\n          setAnchorEl(null)\n        }}\n        onMenuItemClick={(_event, callback) => {\n          callback()\n          setAnchorEl(null)\n        }}\n        menuItems={[\n          {\n            label: 'Add tracks to selection instead of turning them on/off',\n            onClick: () => {\n              faceted.setUseShoppingCart(!useShoppingCart)\n            },\n            type: 'checkbox',\n            checked: useShoppingCart,\n          },\n          {\n            label: 'Show sparse metadata columns',\n            onClick: () => {\n              faceted.setShowSparse(!showSparse)\n            },\n            checked: showSparse,\n            type: 'checkbox',\n          },\n          {\n            label: 'Show facet filters',\n            onClick: () => {\n              faceted.setShowFilters(!showFilters)\n            },\n            checked: showFilters,\n            type: 'checkbox',\n          },\n          {\n            label: 'Show extra table options',\n            onClick: () => {\n              faceted.setShowOptions(!showOptions)\n            },\n            checked: showOptions,\n            type: 'checkbox',\n          },\n        ]}\n      />\n    </>\n  )\n}\n","import React, { useState } from 'react'\nimport {\n  Typography,\n  FormControl,\n  Select,\n  IconButton,\n  Tooltip,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// icon\nimport ClearIcon from '@mui/icons-material/Clear'\nimport MinimizeIcon from '@mui/icons-material/Minimize'\nimport AddIcon from '@mui/icons-material/Add'\nimport { coarseStripHTML } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { HierarchicalTrackSelectorModel } from '../../model'\n\nconst useStyles = makeStyles()(theme => ({\n  facet: {\n    margin: 0,\n    marginLeft: theme.spacing(2),\n  },\n  select: {\n    marginBottom: theme.spacing(2),\n  },\n}))\n\nfunction ClearButton({ onClick }: { onClick: () => void }) {\n  return (\n    <Tooltip title=\"Clear selection on this facet filter\">\n      <IconButton\n        onClick={() => {\n          onClick()\n        }}\n        size=\"small\"\n      >\n        <ClearIcon />\n      </IconButton>\n    </Tooltip>\n  )\n}\n\nfunction ExpandButton({\n  visible,\n  onClick,\n}: {\n  visible: boolean\n  onClick: () => void\n}) {\n  return (\n    <Tooltip title=\"Minimize/expand this facet filter\">\n      <IconButton\n        onClick={() => {\n          onClick()\n        }}\n        size=\"small\"\n      >\n        {visible ? <MinimizeIcon /> : <AddIcon />}\n      </IconButton>\n    </Tooltip>\n  )\n}\n\nconst FacetFilter = observer(function ({\n  column,\n  vals,\n  model,\n}: {\n  column: { field: string }\n  vals: [string, number][]\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  const [visible, setVisible] = useState(true)\n  const { faceted } = model\n  const { filters } = faceted\n  const { field } = column\n  return (\n    <FormControl className={classes.facet} fullWidth>\n      <div>\n        <Typography component=\"span\">{field}</Typography>\n        <ClearButton\n          onClick={() => {\n            faceted.setFilter(field, [])\n          }}\n        />\n        <ExpandButton\n          visible={visible}\n          onClick={() => {\n            setVisible(!visible)\n          }}\n        />\n      </div>\n      {visible ? (\n        <Select\n          multiple\n          native\n          className={classes.select}\n          value={filters.get(column.field) || []}\n          onChange={event => {\n            faceted.setFilter(\n              column.field,\n              // @ts-expect-error\n              [...event.target.options]\n                .filter(opt => opt.selected)\n                .map(opt => opt.value),\n            )\n          }}\n        >\n          {vals\n            .sort((a, b) => a[0].localeCompare(b[0]))\n            .map(([name, count]) => (\n              <option key={name} value={name}>\n                {coarseStripHTML(name)} ({count})\n              </option>\n            ))}\n        </Select>\n      ) : null}\n    </FormControl>\n  )\n})\n\nexport default FacetFilter\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport FacetFilter from './FacetFilter'\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport { Row, getRowStr } from './util'\n\nconst FacetFilters = observer(function ({\n  rows,\n  columns,\n  model,\n}: {\n  rows: Row[]\n  columns: { field: string }[]\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { faceted } = model\n  const { filters } = faceted\n  const facets = columns.slice(1)\n  const uniqs = new Map(\n    facets.map(f => [f.field, new Map<string, number>()] as const),\n  )\n\n  // this code \"stages the facet filters\" in order that the user has selected\n  // them, which relies on the js behavior that the order of the returned keys is\n  // related to the insertion order.\n  const filterKeys = faceted.filters.keys()\n  const facetKeys = facets.map(f => f.field)\n  const ret = new Set<string>()\n  for (const entry of filterKeys) {\n    // give non-empty filters priority\n    if (filters.get(entry)?.length) {\n      ret.add(entry)\n    }\n  }\n  for (const entry of facetKeys) {\n    ret.add(entry)\n  }\n\n  let currentRows = rows\n  for (const facet of ret) {\n    const elt = uniqs.get(facet)!\n    for (const row of currentRows) {\n      const key = getRowStr(facet, row)\n      const val = elt.get(key)\n      // we don't allow filtering on empty yet\n      if (key) {\n        if (val === undefined) {\n          elt.set(key, 1)\n        } else {\n          elt.set(key, val + 1)\n        }\n      }\n    }\n    const filter = filters.get(facet)?.length\n      ? new Set(filters.get(facet))\n      : undefined\n\n    currentRows = currentRows.filter(row =>\n      filter !== undefined ? filter.has(getRowStr(facet, row)) : true,\n    )\n  }\n\n  return (\n    <div>\n      {facets.map(c => (\n        <FacetFilter\n          key={c.field}\n          vals={[...uniqs.get(c.field)!]}\n          column={c}\n          model={model}\n        />\n      ))}\n    </div>\n  )\n})\nexport default FacetFilters\n","import React, { useState } from 'react'\nimport { transaction } from 'mobx'\nimport { observer } from 'mobx-react'\nimport { getRoot, resolveIdentifier } from 'mobx-state-tree'\nimport { DataGrid, GridColDef, GridToolbar } from '@mui/x-data-grid'\n\n// jbrowse\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML'\nimport { getEnv, measureGridWidth } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport FacetedHeader from './FacetedHeader'\nimport FacetFilters from './FacetFilters'\nimport TrackLabelMenu from '../tree/TrackLabelMenu'\n\nexport interface InfoArgs {\n  target: HTMLElement\n  id: string\n  conf: AnyConfigurationModel\n}\n\nconst useStyles = makeStyles()({\n  cell: {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n  },\n  resizeHandle: {\n    marginLeft: 5,\n    background: 'grey',\n    width: 5,\n  },\n})\n\nconst frac = 0.75\n\nconst FacetedSelector = observer(function FacetedSelector({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  const { view, selection, shownTrackIds, faceted } = model\n  const {\n    rows,\n    panelWidth,\n    showFilters,\n    useShoppingCart,\n    showOptions,\n    filteredRows,\n    filteredNonMetadataKeys,\n    filteredMetadataKeys,\n    visible,\n  } = faceted\n  const { pluginManager } = getEnv(model)\n\n  type T = GridColDef<(typeof filteredRows)[0]>\n\n  const [widths, setWidths] = useState<Record<string, number>>({\n    name:\n      measureGridWidth(\n        rows.map(r => r.name),\n        { maxWidth: 500, stripHTML: true },\n      ) + 15,\n    ...Object.fromEntries(\n      filteredNonMetadataKeys\n        .filter(f => visible[f])\n        .map(e => [\n          e,\n          measureGridWidth(\n            rows.map(r => r[e as keyof typeof r] as string),\n            { maxWidth: 400, stripHTML: true },\n          ),\n        ]),\n    ),\n    ...Object.fromEntries(\n      filteredMetadataKeys\n        .filter(f => visible[`metadata.${f}`])\n        .map(e => {\n          return [\n            `metadata.${e}`,\n            measureGridWidth(\n              rows.map(r => r.metadata[e]),\n              { maxWidth: 400, stripHTML: true },\n            ),\n          ]\n        }),\n    ),\n  })\n  const columns: T[] = [\n    {\n      field: 'name',\n      hideable: false,\n      renderCell: params => {\n        const { value, row } = params\n        const { id, conf } = row\n        return (\n          <div className={classes.cell}>\n            <SanitizedHTML html={value as string} />\n            <TrackLabelMenu id={id} conf={conf} trackId={id} model={model} />\n          </div>\n        )\n      },\n      width: widths.name ?? 100,\n    },\n    ...filteredNonMetadataKeys.map(e => {\n      return {\n        field: e,\n        width: widths[e] ?? 100,\n        renderCell: params => {\n          const val = params.value\n          return val ? (\n            <SanitizedHTML className={classes.cell} html={val} />\n          ) : (\n            ''\n          )\n        },\n      } satisfies T\n    }),\n    ...filteredMetadataKeys.map(e => {\n      return {\n        field: `metadata.${e}`,\n        headerName: ['name', ...filteredNonMetadataKeys].includes(e)\n          ? `${e} (from metadata)`\n          : e,\n        width: widths[`metadata.${e}`] ?? 100,\n        valueGetter: (_, row) => `${row.metadata[e] ?? ''}`,\n        renderCell: params => {\n          const val = params.value\n          return val ? (\n            <SanitizedHTML className={classes.cell} html={val} />\n          ) : (\n            ''\n          )\n        },\n      } satisfies T\n    }),\n  ]\n\n  return (\n    <>\n      <FacetedHeader model={model} />\n      <div\n        style={{\n          display: 'flex',\n          overflow: 'hidden',\n          height: window.innerHeight * frac,\n          width: window.innerWidth * frac,\n        }}\n      >\n        <div\n          style={{\n            height: window.innerHeight * frac,\n            width: window.innerWidth * frac - (showFilters ? panelWidth : 0),\n          }}\n        >\n          <DataGrid\n            rows={filteredRows}\n            onColumnWidthChange={arg => {\n              setWidths({ ...widths, [arg.colDef.field]: arg.width })\n            }}\n            columnVisibilityModel={visible}\n            onColumnVisibilityModelChange={n => {\n              faceted.setVisible(n)\n            }}\n            columnHeaderHeight={35}\n            checkboxSelection\n            disableRowSelectionOnClick\n            keepNonExistentRowsSelected\n            onRowSelectionModelChange={userSelectedIds => {\n              if (!useShoppingCart) {\n                const a1 = shownTrackIds\n                const a2 = new Set(userSelectedIds as string[])\n                // synchronize the user selection with the view\n                // see share https://stackoverflow.com/a/33034768/2129219\n                transaction(() => {\n                  ;[...a1].filter(x => !a2.has(x)).map(t => view.hideTrack(t))\n                  ;[...a2]\n                    .filter(x => !a1.has(x))\n                    .map(t => {\n                      view.showTrack(t)\n                      model.addToRecentlyUsed(t)\n                    })\n                })\n              } else {\n                const root = getRoot(model)\n                const schema = pluginManager.pluggableConfigSchemaType('track')\n                model.setSelection(\n                  userSelectedIds.map(id =>\n                    resolveIdentifier(schema, root, id),\n                  ),\n                )\n              }\n            }}\n            rowSelectionModel={\n              useShoppingCart\n                ? selection.map(s => s.trackId)\n                : [...shownTrackIds]\n            }\n            slots={{ toolbar: showOptions ? GridToolbar : null }}\n            slotProps={{\n              toolbar: {\n                printOptions: {\n                  disableToolbarButton: true,\n                },\n              },\n            }}\n            columns={columns}\n            rowHeight={25}\n          />\n        </div>\n\n        {showFilters ? (\n          <>\n            <ResizeHandle\n              vertical\n              onDrag={dist => faceted.setPanelWidth(panelWidth - dist)}\n              className={classes.resizeHandle}\n            />\n            <div style={{ width: panelWidth, overflow: 'auto' }}>\n              <FacetFilters model={model} rows={rows} columns={columns} />\n            </div>\n          </>\n        ) : null}\n      </div>\n    </>\n  )\n})\n\nexport default FacetedSelector\n","import React from 'react'\nimport { DialogContent } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport FacetedSelector from './FacetedSelector'\n\nconst FacetedTrackSelectorDialog = observer(function (props: {\n  handleClose: () => void\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { handleClose } = props\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      maxWidth=\"xl\"\n      title=\"Faceted track selector\"\n    >\n      <DialogContent>\n        <FacetedSelector {...props} />\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default FacetedTrackSelectorDialog\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["FacetedHeader","model","faceted","anchorEl","setAnchorEl","useState","showOptions","showFilters","showSparse","useShoppingCart","React","Grid","container","spacing","alignItems","item","TextField","label","value","filterText","onChange","event","setFilterText","target","InputProps","endAdornment","InputAdornment","position","IconButton","onClick","ClearIcon","currentTarget","MoreVert","ShoppingCart","Menu","open","onClose","onMenuItemClick","_event","callback","menuItems","setUseShoppingCart","type","checked","setShowSparse","setShowFilters","setShowOptions","useStyles","makeStyles","theme","facet","margin","marginLeft","select","marginBottom","ClearButton","Tooltip","title","size","ExpandButton","visible","MinimizeIcon","AddIcon","observer","column","vals","classes","setVisible","filters","field","FormControl","className","fullWidth","Typography","component","setFilter","Select","multiple","native","get","options","filter","opt","selected","map","sort","a","b","localeCompare","name","count","key","coarseStripHTML","rows","columns","facets","slice","uniqs","Map","f","filterKeys","keys","facetKeys","ret","Set","entry","length","add","currentRows","elt","row","getRowStr","val","undefined","set","has","c","FacetFilter","cell","whiteSpace","overflow","textOverflow","resizeHandle","background","width","frac","view","selection","shownTrackIds","panelWidth","filteredRows","filteredNonMetadataKeys","filteredMetadataKeys","pluginManager","getEnv","widths","setWidths","measureGridWidth","r","maxWidth","stripHTML","Object","fromEntries","e","metadata","hideable","renderCell","params","id","conf","SanitizedHTML","html","TrackLabelMenu","trackId","headerName","includes","valueGetter","_","style","display","height","window","innerHeight","innerWidth","DataGrid","onColumnWidthChange","arg","colDef","columnVisibilityModel","onColumnVisibilityModelChange","n","columnHeaderHeight","checkboxSelection","disableRowSelectionOnClick","keepNonExistentRowsSelected","onRowSelectionModelChange","userSelectedIds","root","getRoot","schema","pluggableConfigSchemaType","setSelection","resolveIdentifier","a1","a2","transaction","x","t","hideTrack","showTrack","addToRecentlyUsed","rowSelectionModel","s","slots","toolbar","GridToolbar","slotProps","printOptions","disableToolbarButton","rowHeight","ResizeHandle","vertical","onDrag","dist","setPanelWidth","FacetFilters","props","handleClose","Dialog","DialogContent","FacetedSelector","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","styles","ownerState","variant","color","variants","transition","transitions","create","animation","entries","palette","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","thickness","other","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","role","children","viewBox","cx","cy","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","contains","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","paddingLeft","paddingRight","breakpoints","up","minHeight","mixins","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4033.df8ecd0d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4033],{34033:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var l=a(7552),n=a(68446),r=a(49823),o=a(29499),c=a(36715),s=a(1343),i=a(58507),h=a(5401);const u=(0,a(75785).n9)()({root:{width:500}}),m=(0,n.observer)((function({model:e,handleClose:t}){const{classes:a}=u(),{maxHeight:n=""}=e,[m,d]=(0,l.useState)(`${n}`),b=""!==m&&!Number.isNaN(+m);return l.createElement(r.Dialog,{open:!0,onClose:t,title:"Set max height"},l.createElement(o.A,{className:a.root},l.createElement(c.A,null,'Set max height for the track. For example, you can increase this if the layout says "Max height reached"'),l.createElement(s.A,{value:m,onChange:e=>{d(e.target.value)},placeholder:"Enter max score"}),b?null:l.createElement("div",{style:{color:"red"}},"Invalid number")),l.createElement(i.A,null,l.createElement(h.A,{variant:"contained",color:"primary",type:"submit",autoFocus:!0,disabled:!b,onClick:()=>{e.setMaxHeight(+m),t()}},"Submit"),l.createElement(h.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))}))}}]);
+//# sourceMappingURL=4033.df8ecd0d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4033.df8ecd0d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4033.df8ecd0d.chunk.js","mappings":"gPAYA,MAAMA,GAAYC,E,SAAAA,KAAAA,CAAa,CAC7BC,KAAM,CACJC,MAAO,OA8DX,GA1D2BC,EAAAA,EAAAA,WAAS,UAAU,MAC5CC,EAAK,YACLC,IAQA,MAAM,QAAEC,GAAYP,KACd,UAAEQ,EAAY,IAAOH,GACpBI,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,GAAGH,KAC5BI,EAAa,KAARH,IAAeI,OAAOC,OAAOL,GACxC,OACEM,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASZ,EAAaa,MAAM,kBACvCJ,EAAAA,cAACK,EAAAA,EAAa,CAACC,UAAWd,EAAQL,MAChCa,EAAAA,cAACO,EAAAA,EAAU,KAAC,4GAIZP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAOf,EACPgB,SAAUC,IACRhB,EAAOgB,EAAMC,OAAOH,MAAM,EAE5BI,YAAY,oBAEZhB,EAA0D,KAArDG,EAAAA,cAAA,OAAKc,MAAO,CAAEC,MAAO,QAAS,mBAEvCf,EAAAA,cAACgB,EAAAA,EAAa,KACZhB,EAAAA,cAACiB,EAAAA,EAAM,CACLC,QAAQ,YACRH,MAAM,UACNI,KAAK,SACLC,WAAS,EACTC,UAAWxB,EACXyB,QAASA,KACPhC,EAAMiC,cAAc7B,GACpBH,GAAa,GAEhB,UAGDS,EAAAA,cAACiB,EAAAA,EAAM,CACLC,QAAQ,YACRH,MAAM,YACNO,QAASA,KACP/B,GAAa,GAEhB,WAMT,G","sources":["../../../plugins/linear-genome-view/src/LinearBasicDisplay/components/SetMaxHeightDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  Typography,\n  TextField,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  root: {\n    width: 500,\n  },\n})\n\nconst SetMaxHeightDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    maxHeight?: number\n    setMaxHeight: (arg?: number) => void\n  }\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const { maxHeight = '' } = model\n  const [max, setMax] = useState(`${maxHeight}`)\n  const ok = max !== '' && !Number.isNaN(+max)\n  return (\n    <Dialog open onClose={handleClose} title=\"Set max height\">\n      <DialogContent className={classes.root}>\n        <Typography>\n          Set max height for the track. For example, you can increase this if\n          the layout says &quot;Max height reached&quot;\n        </Typography>\n        <TextField\n          value={max}\n          onChange={event => {\n            setMax(event.target.value)\n          }}\n          placeholder=\"Enter max score\"\n        />\n        {!ok ? <div style={{ color: 'red' }}>Invalid number</div> : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          autoFocus\n          disabled={!ok}\n          onClick={() => {\n            model.setMaxHeight(+max)\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SetMaxHeightDialog\n"],"names":["useStyles","makeStyles","root","width","observer","model","handleClose","classes","maxHeight","max","setMax","useState","ok","Number","isNaN","React","Dialog","open","onClose","title","DialogContent","className","Typography","TextField","value","onChange","event","target","placeholder","style","color","DialogActions","Button","variant","type","autoFocus","disabled","onClick","setMaxHeight"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4060.8757dbe8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4060],{24060:(e,t,r)=>{r.d(t,{makeImageData:()=>b});var a=r(68584),o=r(49823),n=r(99546);function i(e,t,r,a,o,n,i){t+a<0||t>n||(i&&(e.fillStyle=i),e.fillRect(t,r,a,o))}function s(e){const{bases:t}=e.palette;return{A:t.A.main,C:t.C.main,G:t.G.main,T:t.T.main,deletion:"#808080"}}function c(){return{charWidth:(0,n.measureText)("A"),charHeight:(0,n.measureText)("M")-2}}var l=r(36917),f=r(86576);function h({colorType:e,tag:t,feature:r,config:o,defaultColor:n,colorTagMap:i}){switch(e){case"insertSize":return function(e){return e.get("is_paired")&&e.get("refName")!==e.get("next_ref")?"#555":`hsl(${Math.abs(e.get("template_length"))/10},50%,50%)`}(r);case"strand":return function(e){return-1===e.get("strand")?"#8F8FD8":"#EC8B8B"}(r);case"mappingQuality":return function(e){return`hsl(${e.get("score")},50%,50%)`}(r);case"pairOrientation":return function(e,t){return l.pf[function(e,t){const r=(0,a.readConfObject)(t,"orientationType");return{LR:"color_pair_lr",RR:"color_pair_rr",RL:"color_pair_rl",LL:"color_pair_ll"}[f.il[r][e.get("pair_orientation")]]}(e,t)||"color_nostrand"]}(r,o);case"stranded":return function(e){return l.pf[function(e){const t=e.get("flags"),r=e.get("strand");if(1&t){const a=64&t?-1:1;return 2&t?r*a==1?"color_rev_strand":"color_fwd_strand":8&t?r*a==1?"color_rev_missing_mate":"color_fwd_missing_mate":e.get("refName")===e.get("next_ref")?r*a==1?"color_rev_strand_not_proper":"color_fwd_strand_not_proper":1===r?"color_fwd_diff_chr":"color_rev_diff_chr"}return"color_unknown"}(e)]}(r);case"xs":case"tag":{const e=r.get("tags"),a=e?e[t]:r.get(t);return"XS"===t||"TS"===t?"-"===a?l.pf.color_rev_strand:"+"===a?l.pf.color_fwd_strand:l.pf.color_nostrand:"ts"===t?"-"===a?-1===r.get("strand")?l.pf.color_fwd_strand:l.pf.color_rev_strand:"+"===a?-1===r.get("strand")?l.pf.color_rev_strand:l.pf.color_fwd_strand:l.pf.color_nostrand:i[a]||l.pf.color_nostrand}case"insertSizeAndPairOrientation":break;case"modifications":case"methylation":return 16&r.get("flags")?"#c8dcc8":"#c8c8c8";default:return n?"lightgrey":(0,a.readConfObject)(o,"color",{feature:r})}}var g=r(80544),d=r(87485);function p({ctx:e,feat:t,renderArgs:r,colorForBase:a,contrastForBase:o,charWidth:s,charHeight:c,defaultColor:l,canvasWidth:p}){const{config:u,bpPerPx:x,regions:b,colorBy:m,colorTagMap:P={}}=r,{tag:_="",type:S=""}=m||{},{feature:T}=t,M=b[0];switch(e.fillStyle=h({feature:T,config:u,tag:_,defaultColor:l,colorType:S,colorTagMap:P}),function({ctx:e,feat:t,renderArgs:r}){const{regions:a,bpPerPx:o}=r,{heightPx:i,topPx:s,feature:c}=t,l=a[0],f=c.get("start"),h=c.get("end"),[g,d]=(0,n.bpSpanPx)(f,h,l,o),p=l.reversed?-1:1,u=c.get("strand")*p;o<10&&i>5?-1===u?(e.beginPath(),e.moveTo(g-5,s+i/2),e.lineTo(g,s+i),e.lineTo(d,s+i),e.lineTo(d,s),e.lineTo(g,s),e.closePath(),e.fill()):(e.beginPath(),e.moveTo(g,s),e.lineTo(g,s+i),e.lineTo(d,s+i),e.lineTo(d+5,s+i/2),e.lineTo(d,s),e.closePath(),e.fill()):e.fillRect(g,s,d-g,i)}({ctx:e,feat:t,renderArgs:r}),S){case"perBaseQuality":!function({ctx:e,feat:t,region:r,bpPerPx:a,canvasWidth:o}){const{feature:s,topPx:c,heightPx:l}=t,f=(s.get("qual")||"").split(" ").map((e=>+e)),h=(0,g.parseCigar)(s.get("CIGAR")),d=1/a,p=s.get("start");let u=0,x=0;for(let t=0;t<h.length;t+=2){const s=+h[t],g=h[t+1];if("S"===g||"I"===g)u+=s;else if("D"===g||"N"===g)x+=s;else if("M"===g||"X"===g||"="===g){for(let t=0;t<s;t++){const s=f[u+t],h=p+x+t;i(e,(0,n.bpSpanPx)(h,h+1,r,a)[0],c,d+.5,l,o,`hsl(${255===s?150:1.5*s},55%,50%)`)}u+=s,x+=s}}}({ctx:e,feat:t,region:M,bpPerPx:x,canvasWidth:p});break;case"perBaseLettering":!function({ctx:e,feat:t,region:r,bpPerPx:a,colorForBase:o,contrastForBase:s,charWidth:c,charHeight:l,canvasWidth:f}){const h=l-2,{feature:d,topPx:p,heightPx:u}=t,x=d.get("seq"),b=(0,g.parseCigar)(d.get("CIGAR")),m=1/a,P=d.get("start");let _=0,S=0;if(x)for(let t=0;t<b.length;t+=2){const l=+b[t],g=b[t+1];if("S"===g||"I"===g)_+=l;else if("D"===g||"N"===g)S+=l;else if("M"===g||"X"===g||"="===g){for(let t=0;t<l;t++){const l=x[_+t],g=P+S+t,[d]=(0,n.bpSpanPx)(g,g+1,r,a);i(e,d,p,m+.5,u,f,o[l]),m>=c&&u>=h&&(e.fillStyle=s[l],e.fillText(l,d+(m-c)/2+1,p+u))}_+=l,S+=l}}}({ctx:e,feat:t,region:M,bpPerPx:x,colorForBase:a,contrastForBase:o,charWidth:s,charHeight:c,canvasWidth:p});break;case"modifications":!function({ctx:e,feat:t,region:r,bpPerPx:a,renderArgs:o,canvasWidth:s}){const{feature:c,topPx:l,heightPx:h}=t,{modificationTagMap:p={}}=o,u=c.get("seq");if(!u)return;const x=(0,f.c$)(c,"MM","Mm")||"",b=c.get("CIGAR"),m=c.get("start"),P=c.get("strand"),_=(0,g.parseCigar)(b),S=(0,g.getModificationProbabilities)(c),T=(0,g.getModificationPositions)(x,u,P);let M=0;for(const{type:t,positions:o}of T){const c=p[t]||"black",f=(0,d.M)(c);for(const t of(0,g.getNextRefPos)(_,o)){const o=m+t,[g,d]=(0,n.bpSpanPx)(o,o+1,r,a),p=S?.[M]||0;i(e,g,l,d-g+.5,h,s,1!==p?f.alpha(p+.1).toHslString():c),M++}}}({ctx:e,feat:t,region:M,bpPerPx:x,renderArgs:r,canvasWidth:p});break;case"methylation":!function({ctx:e,feat:t,region:r,bpPerPx:a,renderArgs:o,canvasWidth:s}){const{regionSequence:c}=o,{feature:l,topPx:f,heightPx:h}=t;if(!c)throw new Error("region sequence required for methylation");if(!l.get("seq"))return;const p=l.get("start"),u=l.get("end"),{methBins:x,methProbs:b}=(0,g.getMethBins)(l);function m(e){if(x[e]){const t=b[e]||0;return(t>.5?(0,d.M)("red").alpha(2*(t-.5)):(0,d.M)("blue").alpha(1-2*t)).toHslString()}}for(let t=0;t<u-p;t++){const o=t+p,l=c[o-r.start+1]?.toLowerCase(),g=c[o-r.start+2]?.toLowerCase();if("c"===l&&"g"===g)if(a>2){const[c,l]=(0,n.bpSpanPx)(o,o+2,r,a);i(e,c,f,l-c+.5,h,s,m(t)||m(t+1)||"blue")}else{const[c,l]=(0,n.bpSpanPx)(o,o+1,r,a);i(e,c,f,l-c+.5,h,s,m(t)||"blue");const[g,d]=(0,n.bpSpanPx)(o+1,o+2,r,a);i(e,g,f,d-g+.5,h,s,m(t+1)||"blue")}}}({ctx:e,feat:t,region:M,bpPerPx:x,renderArgs:r,canvasWidth:p})}}function u({ctx:e,feat:t,renderArgs:r,minSubfeatureWidth:a,largeInsertionIndicatorScale:o,mismatchAlpha:s,charWidth:c,charHeight:l,colorForBase:f,contrastForBase:h,canvasWidth:g,drawSNPsMuted:p,drawIndels:u=!0}){const{bpPerPx:x,regions:b}=r,{heightPx:m,topPx:P,feature:_}=t,S=b[0],T=_.get("start"),M=Math.min(1/x,2),y=_.get("mismatches"),v=l-2,C=S.reversed?1/x+1:-1;if(y){for(const t of y){const r=T+t.start,o=t.length,l=t.base,[b,_]=(0,n.bpSpanPx)(r,r+o,S,x),y=Math.max(a,Math.abs(b-_));if("mismatch"===t.type){if(!p){const r=f[t.base]||"#888",a=s?void 0===t.qual?r:(0,d.M)(r).alpha(Math.min(1,t.qual/50)).toHslString():r;i(e,Math.round(b),P,y,m,g,a)}if(y>=c&&m>=v){const r=p?"black":h[t.base]||"black";e.fillStyle=s?void 0===t.qual?r:(0,d.M)(r).alpha(Math.min(1,t.qual/50)).toHslString():r,e.fillText(l,b+(y-c)/2+1,P+m)}}else if("deletion"===t.type&&u){i(e,b,P,Math.abs(b-_),m,g,f.deletion);const r=`${t.length}`,a=(0,n.measureText)(r,10);y>=a&&m>=v&&(e.fillStyle=h.deletion,e.fillText(r,(b+_)/2-a/2,P+m))}else if("insertion"===t.type&&u){e.fillStyle="purple";const r=b+C,a=+t.base||t.length,o=Math.max(0,Math.min(1.2,1/x));if(a<10&&(i(e,r,P,o,m,g,"purple"),1/x>=c&&m>=v)){const a=r-o;i(e,a,P,3*o,1,g),i(e,a,P+m-1,3*o,1,g),e.fillText(`(${t.base})`,r+3,P+m)}}else if("hardclip"===t.type||"softclip"===t.type){const r=b+C,o="hardclip"===t.type?"red":"blue",n=Math.max(a,M);if(i(e,r,P,n,m,g,o),1/x>=c&&m>=v){const a=r-n;i(e,a,P,3*n,1,g),i(e,a,P+m-1,3*n,1,g),e.fillText(`(${t.base})`,r+3,P+m)}}else if("skip"===t.type&&b+y>0){const t=y-(x>10?1.5:0);e.clearRect(b,P,t,m),i(e,Math.max(0,b),P+m/2-1,t+(b<0?b:0),2,g,"#333")}}if(u)for(const t of y){const r=T+t.start,a=t.length,[s]=(0,n.bpSpanPx)(r,r+a,S,x),c=+t.base||t.length,f=`${c}`;if("insertion"===t.type&&c>=10)if(x>o)i(e,s-1,P,2,m,g,"purple");else if(m>l){const t=(0,n.measureText)(f),r=5;i(e,s-t/2-r,P,t+2*r,m,g,"purple"),e.fillStyle="white",e.fillText(f,s-t/2,P+m)}else{const t=2;i(e,s-t,P,2*t,m,g,"purple")}}}}function x({ctx:e,feat:t,renderArgs:r,config:o,theme:s,colorForBase:l,canvasWidth:f}){const{feature:h,topPx:d,heightPx:p}=t,{regions:u,bpPerPx:x}=r,b=u[0],m=(0,a.readConfObject)(o,"minSubfeatureWidth"),P=h.get("mismatches"),_=h.get("seq"),{charWidth:S,charHeight:T}=c();if(!_||!P)return;const M=T-2,y=(0,g.parseCigar)(h.get("CIGAR"));let v=0,C=0;for(let t=0;t<y.length;t+=2){const r=y[t+1],a=+y[t];if("S"===r){for(let r=0;r<a;r++){const o=_[v+r],c=h.get("start")-(0===t?a:0)+C+r,[g,u]=(0,n.bpSpanPx)(c,c+1,b,x),P=Math.max(m,u-g),T=l[o]||"#000000";e.fillStyle=T,i(e,g,d,P,p,f),P>=S&&p>=M&&(e.fillStyle=s.palette.getContrastText(T),e.fillText(o,g+(P-S)/2+1,d+p))}v+=a}"N"===r&&(C+=a),"M"!==r&&"="!==r&&"X"!==r||(C+=a,v+=a),"D"===r&&(C+=a),"I"===r&&(v+=a)}}function b({ctx:e,layoutRecords:t,canvasWidth:r,renderArgs:n}){const{config:i,showSoftClip:l,colorBy:f,theme:h}=n,g=(0,a.readConfObject)(i,"mismatchAlpha"),d=(0,a.readConfObject)(i,"minSubfeatureWidth"),b=(0,a.readConfObject)(i,"largeInsertionIndicatorScale"),m="#f0f"===(0,a.readConfObject)(i,"color"),P=(0,o.createJBrowseTheme)(h),_=s(P),S=function(e){return Object.fromEntries(Object.entries(s(e)).map((([t,r])=>[t,e.palette.getContrastText(r)])))}(P);e.font="bold 10px Courier New,monospace";const{charWidth:T,charHeight:M}=c(),y=(v=f?.type,["methylation","modifications"].includes(v||""));var v;for(const a of t)p({ctx:e,feat:a,renderArgs:n,defaultColor:m,colorForBase:_,contrastForBase:S,charWidth:T,charHeight:M,canvasWidth:r}),u({ctx:e,feat:a,renderArgs:n,mismatchAlpha:g,drawSNPsMuted:y,drawIndels:!0,largeInsertionIndicatorScale:b,minSubfeatureWidth:d,charWidth:T,charHeight:M,colorForBase:_,contrastForBase:S,canvasWidth:r}),l&&x({ctx:e,feat:a,renderArgs:n,colorForBase:_,config:i,theme:P,canvasWidth:r})}}}]);
+//# sourceMappingURL=4060.8757dbe8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4060.8757dbe8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4060.8757dbe8.chunk.js","mappings":"2LAGO,SAASA,EACdC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEIL,EAAIE,EAAI,GAAKF,EAAII,IAGjBC,IACFN,EAAIO,UAAYD,GAElBN,EAAID,SAASE,EAAGC,EAAGC,EAAGC,GACxB,CAEO,SAASI,EAAgBC,GAC9B,MAAM,MAAEC,GAAUD,EAAME,QACxB,MAAO,CACLC,EAAGF,EAAME,EAAEC,KACXC,EAAGJ,EAAMI,EAAED,KACXE,EAAGL,EAAMK,EAAEF,KACXG,EAAGN,EAAMM,EAAEH,KACXI,SAAU,UAEd,CA2BO,SAASC,IAGd,MAAO,CAAEC,WAFSC,EAAAA,EAAAA,aAAY,KAEVC,YADDD,EAAAA,EAAAA,aAAY,KAAO,EAExC,C,0BC/CO,SAASE,GAAuB,UACrCC,EAAS,IACTC,EAAG,QACHC,EAAO,OACPC,EAAM,aACNC,EAAY,YACZC,IAWA,OAAQL,GACN,IAAK,aACH,OCzBC,SAA2BE,GAChC,OAAOA,EAAQI,IAAI,cACjBJ,EAAQI,IAAI,aAAeJ,EAAQI,IAAI,YACrC,OACA,OAAOC,KAAKC,IAAIN,EAAQI,IAAI,oBAAsB,aACxD,CDoBaG,CAAkBP,GAC3B,IAAK,SACH,OCDC,SAAuBA,GAC5B,OAAkC,IAA3BA,EAAQI,IAAI,UAAmB,UAAY,SACpD,CDDaI,CAAcR,GACvB,IAAK,iBACH,OCtBC,SAA+BA,GACpC,MAAO,OAAOA,EAAQI,IAAI,mBAC5B,CDoBaK,CAAsBT,GAC/B,IAAK,kBACH,OCDC,SACLA,EACAC,GAEA,OAAOS,EAAAA,GAvBT,SAAwBV,EAAkBC,GACxC,MAAMU,GAAkBC,EAAAA,EAAAA,gBAAeX,EAAQ,mBAM/C,MAAO,CACLY,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBANOC,EAAAA,GAAiBN,GACLX,EAAQI,IAAI,qBAOvC,CAUmBc,CAAelB,EAASC,IAAW,iBACtD,CDJakB,CAAmBnB,EAASC,GACrC,IAAK,WACH,OCmCC,SAA+BD,GACpC,OAAOU,EAAAA,GAjCT,SAAqBV,GACnB,MAAMoB,EAAQpB,EAAQI,IAAI,SACpBiB,EAASrB,EAAQI,IAAI,UAG3B,GAAY,EAARgB,EAAW,CAEb,MAAME,EAAkB,GAARF,GAAc,EAAI,EAGlC,OAAY,EAARA,EACKC,EAASC,GAAY,EAAI,mBAAqB,mBAG3C,EAARF,EACKC,EAASC,GAAY,EACxB,yBACA,yBAGFtB,EAAQI,IAAI,aAAeJ,EAAQI,IAAI,YAClCiB,EAASC,GAAY,EACxB,8BACA,8BAIY,IAAXD,EAAe,qBAAuB,oBAC/C,CACA,MAAO,eACT,CAGmBE,CAAYvB,GAC/B,CDrCawB,CAAsBxB,GAC/B,IAAK,KACL,IAAK,MAAO,CACV,MAAMyB,EAAOzB,EAAQI,IAAI,QACnBsB,EAAMD,EAAOA,EAAK1B,GAAOC,EAAQI,IAAIL,GAE3C,MAAY,OAARA,GAAwB,OAARA,EACN,MAAR2B,EACKhB,EAAAA,GAAUiB,iBACA,MAARD,EACFhB,EAAAA,GAAUkB,iBAEVlB,EAAAA,GAAUmB,eAGT,OAAR9B,EACU,MAAR2B,GACgC,IAA3B1B,EAAQI,IAAI,UACfM,EAAAA,GAAUkB,iBACVlB,EAAAA,GAAUiB,iBACG,MAARD,GACyB,IAA3B1B,EAAQI,IAAI,UACfM,EAAAA,GAAUiB,iBACVjB,EAAAA,GAAUkB,iBAEPlB,EAAAA,GAAUmB,eAGd1B,EAAYuB,IAAQhB,EAAAA,GAAUmB,cACvC,CACA,IAAK,+BACH,MAEF,IAAK,gBACL,IAAK,cAIH,OAA8B,GAAvB7B,EAAQI,IAAI,SAAgB,UAAY,UAEjD,QACE,OAAOF,EACH,aACAU,EAAAA,EAAAA,gBAAeX,EAAQ,QAAS,CAAED,YAE5C,C,0BE5EO,SAAS8B,GAAgB,IAC9BvD,EAAG,KACHwD,EAAI,WACJC,EAAU,aACVC,EAAY,gBACZC,EAAe,UACfxC,EAAS,WACTE,EAAU,aACVM,EAAY,YACZiC,IAYA,MAAM,OAAElC,EAAM,QAAEmC,EAAO,QAAEC,EAAO,QAAEC,EAAO,YAAEnC,EAAc,CAAC,GAAM6B,GAC1D,IAAEjC,EAAM,GAAIwC,KAAMzC,EAAY,IAAOwC,GAAW,CAAC,GACjD,QAAEtC,GAAY+B,EACdS,EAASH,EAAQ,GAevB,OAbA9D,EAAIO,UAAYe,EAAuB,CACrCG,UACAC,SACAF,MACAG,eACAJ,YACAK,gBCtCG,UAA8B,IACnC5B,EAAG,KACHwD,EAAI,WACJC,IAMA,MAAM,QAAEK,EAAO,QAAED,GAAYJ,GACvB,SAAES,EAAQ,MAAEC,EAAK,QAAE1C,GAAY+B,EAC/BS,EAASH,EAAQ,GACjBM,EAAI3C,EAAQI,IAAI,SAChBwC,EAAI5C,EAAQI,IAAI,QACfyC,EAAQC,IAAWC,EAAAA,EAAAA,UAASJ,EAAGC,EAAGJ,EAAQJ,GAC3CY,EAAOR,EAAOS,UAAY,EAAI,EAC9B5B,EAASrB,EAAQI,IAAI,UAAY4C,EACnCZ,EAAU,IAAMK,EAAW,GACb,IAAZpB,GACF9C,EAAI2E,YACJ3E,EAAI4E,OAAON,EAAS,EAAGH,EAAQD,EAAW,GAC1ClE,EAAI6E,OAAOP,EAAQH,EAAQD,GAC3BlE,EAAI6E,OAAON,EAASJ,EAAQD,GAC5BlE,EAAI6E,OAAON,EAASJ,GACpBnE,EAAI6E,OAAOP,EAAQH,GACnBnE,EAAI8E,YACJ9E,EAAI+E,SAEJ/E,EAAI2E,YACJ3E,EAAI4E,OAAON,EAAQH,GACnBnE,EAAI6E,OAAOP,EAAQH,EAAQD,GAC3BlE,EAAI6E,OAAON,EAASJ,EAAQD,GAC5BlE,EAAI6E,OAAON,EAAU,EAAGJ,EAAQD,EAAW,GAC3ClE,EAAI6E,OAAON,EAASJ,GACpBnE,EAAI8E,YACJ9E,EAAI+E,QAGN/E,EAAID,SAASuE,EAAQH,EAAOI,EAAUD,EAAQJ,EAElD,CDCEc,CAAqB,CAAEhF,MAAKwD,OAAMC,eAI1BlC,GACN,IAAK,kBE9CF,UAA8B,IACnCvB,EAAG,KACHwD,EAAI,OACJS,EAAM,QACNJ,EAAO,YACPD,IAQA,MAAM,QAAEnC,EAAO,MAAE0C,EAAK,SAAED,GAAaV,EAE/ByB,GADexD,EAAQI,IAAI,SAAW,IACxBqD,MAAM,KAAKC,KAAIhC,IAAQA,IACrCiC,GAAWC,EAAAA,EAAAA,YAAW5D,EAAQI,IAAI,UAClC1B,EAAI,EAAI0D,EACRyB,EAAQ7D,EAAQI,IAAI,SAC1B,IAAI0D,EAAU,EACVC,EAAU,EAEd,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAASM,OAAQD,GAAK,EAAG,CAC3C,MAAME,GAAOP,EAASK,GAChBG,EAAKR,EAASK,EAAI,GACxB,GAAW,MAAPG,GAAqB,MAAPA,EAChBL,GAAWI,OACN,GAAW,MAAPC,GAAqB,MAAPA,EACvBJ,GAAWG,OACN,GAAW,MAAPC,GAAqB,MAAPA,GAAqB,MAAPA,EAAY,CACjD,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC5B,MAAMC,EAAQb,EAAOM,EAAUM,GACzBE,EAAST,EAAQE,EAAUK,EAGjC9F,EAASC,GAFMwE,EAAAA,EAAAA,UAASuB,EAAQA,EAAS,EAAG9B,EAAQJ,GAAS,GAEvCM,EAAOhE,EAAI,GAAK+D,EAAUN,EADtC,OAAiB,MAAVkC,EAAgB,IAAc,IAARA,aAEzC,CACAP,GAAWI,EACXH,GAAWG,CACb,CACF,CACF,CFMMK,CAAqB,CACnBhG,MACAwD,OACAS,SACAJ,UACAD,gBAEF,MAEF,IAAK,oBGxDF,UAAgC,IACrC5D,EAAG,KACHwD,EAAI,OACJS,EAAM,QACNJ,EAAO,aACPH,EAAY,gBACZC,EAAe,UACfxC,EAAS,WACTE,EAAU,YACVuC,IAYA,MAAMqC,EAAY5E,EAAa,GACzB,QAAEI,EAAO,MAAE0C,EAAK,SAAED,GAAaV,EAC/B0C,EAAMzE,EAAQI,IAAI,OAClBuD,GAAWC,EAAAA,EAAAA,YAAW5D,EAAQI,IAAI,UAClC1B,EAAI,EAAI0D,EACRyB,EAAQ7D,EAAQI,IAAI,SAC1B,IAAI0D,EAAU,EACVC,EAAU,EAEd,GAAKU,EAGL,IAAK,IAAIT,EAAI,EAAGA,EAAIL,EAASM,OAAQD,GAAK,EAAG,CAC3C,MAAME,GAAOP,EAASK,GAChBG,EAAKR,EAASK,EAAI,GACxB,GAAW,MAAPG,GAAqB,MAAPA,EAChBL,GAAWI,OACN,GAAW,MAAPC,GAAqB,MAAPA,EACvBJ,GAAWG,OACN,GAAW,MAAPC,GAAqB,MAAPA,GAAqB,MAAPA,EAAY,CACjD,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC5B,MAAMM,EAASD,EAAIX,EAAUM,GACvBO,EAAId,EAAQE,EAAUK,GACrBvB,IAAUE,EAAAA,EAAAA,UAAS4B,EAAGA,EAAI,EAAGnC,EAAQJ,GAE5C9D,EAASC,EAAKsE,EAAQH,EAAOhE,EAAI,GAAK+D,EAAUN,EADtCF,EAAayC,IAGnBhG,GAAKgB,GAAa+C,GAAY+B,IAEhCjG,EAAIO,UAAYoD,EAAgBwC,GAChCnG,EAAIqG,SACFF,EACA7B,GAAUnE,EAAIgB,GAAa,EAAI,EAC/BgD,EAAQD,GAGd,CACAqB,GAAWI,EACXH,GAAWG,CACb,CACF,CACF,CHLMW,CAAuB,CACrBtG,MACAwD,OACAS,SACAJ,UACAH,eACAC,kBACAxC,YACAE,aACAuC,gBAEF,MAEF,IAAK,iBIpDF,UAA6B,IAClC5D,EAAG,KACHwD,EAAI,OACJS,EAAM,QACNJ,EAAO,WACPJ,EAAU,YACVG,IASA,MAAM,QAAEnC,EAAO,MAAE0C,EAAK,SAAED,GAAaV,GAC/B,mBAAE+C,EAAqB,CAAC,GAAM9C,EAE9ByC,EAAMzE,EAAQI,IAAI,OAExB,IAAKqE,EACH,OAEF,MAAMM,GAAMC,EAAAA,EAAAA,IAAUhF,EAAS,KAAM,OAAoB,GACnDiF,EAAQjF,EAAQI,IAAI,SACpByD,EAAQ7D,EAAQI,IAAI,SACpBiB,EAASrB,EAAQI,IAAI,UACrBuD,GAAWC,EAAAA,EAAAA,YAAWqB,GACtBC,GAAgBC,EAAAA,EAAAA,8BAA6BnF,GAC7CoF,GAAgBC,EAAAA,EAAAA,0BAAyBN,EAAIN,EAAKpD,GAGxD,IAAIiE,EAAY,EAChB,IAAK,MAAM,KAAE/C,EAAI,UAAEgD,KAAeH,EAAe,CAC/C,MAAMI,EAAMV,EAAmBvC,IAAS,QAClCkD,GAAOC,EAAAA,EAAAA,GAAOF,GACpB,IAAK,MAAMG,KAAWC,EAAAA,EAAAA,eAAcjC,EAAU4B,GAAY,CACxD,MAAMZ,EAAId,EAAQ8B,GACX9C,EAAQC,IAAWC,EAAAA,EAAAA,UAAS4B,EAAGA,EAAI,EAAGnC,EAAQJ,GAC/CyD,EAAOX,IAAgBI,IAAc,EAG3ChH,EAASC,EAAKsE,EAAQH,EADZI,EAAUD,EAAS,GACGJ,EAAUN,EAFvB,IAAT0D,EAAaJ,EAAKK,MAAMD,EAAO,IAAKE,cAAgBP,GAG9DF,GACF,CACF,CACF,CJOMU,CAAoB,CAClBzH,MACAwD,OACAS,SACAJ,UACAJ,aACAG,gBAEF,MAEF,IAAK,eK7EF,UAA2B,IAChC5D,EAAG,KACHwD,EAAI,OACJS,EAAM,QACNJ,EAAO,WACPJ,EAAU,YACVG,IASA,MAAM,eAAE8D,GAAmBjE,GACrB,QAAEhC,EAAO,MAAE0C,EAAK,SAAED,GAAaV,EACrC,IAAKkE,EACH,MAAM,IAAIC,MAAM,4CAIlB,IADYlG,EAAQI,IAAI,OAEtB,OAEF,MAAM+F,EAASnG,EAAQI,IAAI,SACrBgG,EAAOpG,EAAQI,IAAI,QACnB,SAAEiG,EAAQ,UAAEC,IAAcC,EAAAA,EAAAA,aAAYvG,GAE5C,SAASwG,EAAOC,GACd,GAAIJ,EAASI,GAAI,CACf,MAAMC,EAAIJ,EAAUG,IAAM,EAC1B,OACEC,EAAI,IACAhB,EAAAA,EAAAA,GAAO,OAAOI,MAAkB,GAAXY,EAAI,MACzBhB,EAAAA,EAAAA,GAAO,QAAQI,MAAM,EAAQ,EAAJY,IAC7BX,aACJ,CAEF,CACA,IAAK,IAAI/B,EAAI,EAAGA,EAAIoC,EAAOD,EAAQnC,IAAK,CACtC,MAAM2C,EAAI3C,EAAImC,EACRS,EAAKX,EAAeU,EAAInE,EAAOqB,MAAQ,IAAIgD,cAC3CC,EAAKb,EAAeU,EAAInE,EAAOqB,MAAQ,IAAIgD,cAEjD,GAAW,MAAPD,GAAqB,MAAPE,EAChB,GAAI1E,EAAU,EAAG,CACf,MAAOS,EAAQC,IAAWC,EAAAA,EAAAA,UAAS4D,EAAGA,EAAI,EAAGnE,EAAQJ,GAGrD9D,EAASC,EAAKsE,EAAQH,EAFZI,EAAUD,EAAS,GAEGJ,EAAUN,EADhCqE,EAAOxC,IAAMwC,EAAOxC,EAAI,IAAM,OAE1C,KAAO,CACL,MAAOnB,EAAQC,IAAWC,EAAAA,EAAAA,UAAS4D,EAAGA,EAAI,EAAGnE,EAAQJ,GAGrD9D,EAASC,EAAKsE,EAAQH,EAFZI,EAAUD,EAAS,GAEGJ,EAAUN,EADhCqE,EAAOxC,IAAM,QAEvB,MAAO+C,EAASC,IAAYjE,EAAAA,EAAAA,UAAS4D,EAAI,EAAGA,EAAI,EAAGnE,EAAQJ,GAG3D9D,EAASC,EAAKwI,EAASrE,EAFZsE,EAAWD,EAAU,GAEEtE,EAAUN,EADjCqE,EAAOxC,EAAI,IAAM,OAE9B,CAEJ,CACF,CLeMiD,CAAkB,CAChB1I,MACAwD,OACAS,SACAJ,UACAJ,aACAG,gBAIR,CM1FO,SAAS+E,GAAiB,IAC/B3I,EAAG,KACHwD,EAAI,WACJC,EAAU,mBACVmF,EAAkB,6BAClBC,EAA4B,cAC5BC,EAAa,UACb3H,EAAS,WACTE,EAAU,aACVqC,EAAY,gBACZC,EAAe,YACfC,EAAW,cACXmF,EAAa,WACbC,GAAa,IAgBb,MAAM,QAAEnF,EAAO,QAAEC,GAAYL,GACvB,SAAES,EAAQ,MAAEC,EAAK,QAAE1C,GAAY+B,EAC/BS,EAASH,EAAQ,GACjBwB,EAAQ7D,EAAQI,IAAI,SAEpBoH,EAAUnH,KAAKoH,IAAI,EAAIrF,EAAS,GAChCsF,EAAa1H,EAAQI,IAAI,cACzBoE,EAAY5E,EAAa,EAIzB+H,EAAiCnF,EAAOS,SAAW,EAAIb,EAAU,GAAK,EAE5E,GAAKsF,EAAL,CAMA,IAAK,MAAME,KAAYF,EAAY,CACjC,MAAMG,EAAShE,EAAQ+D,EAAS/D,MAC1BiE,EAAOF,EAAS3D,OAChB8D,EAAQH,EAASnC,MAChB5C,EAAQC,IAAWC,EAAAA,EAAAA,UAAS8E,EAAQA,EAASC,EAAMtF,EAAQJ,GAC5D4F,EAAU3H,KAAK4H,IAAId,EAAoB9G,KAAKC,IAAIuC,EAASC,IAC/D,GAAsB,aAAlB8E,EAASrF,KAAqB,CAChC,IAAK+E,EAAe,CAClB,MAAMY,EAAYjG,EAAa2F,EAASnC,OAAS,OAC3C0C,EAAId,OACYe,IAAlBR,EAASS,KACPH,GACAxC,EAAAA,EAAAA,GAAOwC,GACJpC,MAAMzF,KAAKoH,IAAI,EAAGG,EAASS,KAAO,KAClCtC,cACLmC,EAEJ5J,EACEC,EACA8B,KAAKiI,MAAMzF,GACXH,EACAsF,EACAvF,EACAN,EACAgG,EAEJ,CAEA,GAAIH,GAAWtI,GAAa+C,GAAY+B,EAAW,CAEjD,MAAM+D,EAAgBjB,EAClB,QACApF,EAAgB0F,EAASnC,OAAS,QACtClH,EAAIO,UAAYuI,OACMe,IAAlBR,EAASS,KACPE,GACA7C,EAAAA,EAAAA,GAAO6C,GACJzC,MAAMzF,KAAKoH,IAAI,EAAGG,EAASS,KAAO,KAClCtC,cACLwC,EACJhK,EAAIqG,SACFmD,EACAlF,GAAUmF,EAAUtI,GAAa,EAAI,EACrCgD,EAAQD,EAEZ,CACF,MAAO,GAAsB,aAAlBmF,EAASrF,MAAuBgF,EAAY,CACrDjJ,EACEC,EACAsE,EACAH,EACArC,KAAKC,IAAIuC,EAASC,GAClBL,EACAN,EACAF,EAAazC,UAEf,MAAMgJ,EAAM,GAAGZ,EAAS3D,SAClBwE,GAAS9I,EAAAA,EAAAA,aAAY6I,EAAK,IAC5BR,GAAWS,GAAUhG,GAAY+B,IACnCjG,EAAIO,UAAYoD,EAAgB1C,SAChCjB,EAAIqG,SAAS4D,GAAM3F,EAASC,GAAW,EAAI2F,EAAS,EAAG/F,EAAQD,GAEnE,MAAO,GAAsB,cAAlBmF,EAASrF,MAAwBgF,EAAY,CACtDhJ,EAAIO,UAAY,SAChB,MAAM4J,EAAM7F,EAAS8E,EACfzD,GAAO0D,EAASnC,MAAQmC,EAAS3D,OACjC0E,EAAOtI,KAAK4H,IAAI,EAAG5H,KAAKoH,IAAI,IAAK,EAAIrF,IAC3C,GAAI8B,EAAM,KACR5F,EAASC,EAAKmK,EAAKhG,EAAOiG,EAAMlG,EAAUN,EAAa,UACnD,EAAIC,GAAW1C,GAAa+C,GAAY+B,GAAW,CACrD,MAAMhG,EAAIkK,EAAMC,EAChBrK,EAASC,EAAKC,EAAGkE,EAAc,EAAPiG,EAAU,EAAGxG,GACrC7D,EAASC,EAAKC,EAAGkE,EAAQD,EAAW,EAAU,EAAPkG,EAAU,EAAGxG,GACpD5D,EAAIqG,SAAS,IAAIgD,EAASnC,QAASiD,EAAM,EAAGhG,EAAQD,EACtD,CAEJ,MAAO,GAAsB,aAAlBmF,EAASrF,MAAyC,aAAlBqF,EAASrF,KAAqB,CACvE,MAAMmG,EAAM7F,EAAS8E,EACfQ,EAAsB,aAAlBP,EAASrF,KAAsB,MAAQ,OAC3CqG,EAAQvI,KAAK4H,IAAId,EAAoBK,GAE3C,GADAlJ,EAASC,EAAKmK,EAAKhG,EAAOkG,EAAOnG,EAAUN,EAAagG,GACpD,EAAI/F,GAAW1C,GAAa+C,GAAY+B,EAAW,CACrD,MAAMhG,EAAIkK,EAAME,EAChBtK,EAASC,EAAKC,EAAGkE,EAAe,EAARkG,EAAW,EAAGzG,GACtC7D,EAASC,EAAKC,EAAGkE,EAAQD,EAAW,EAAW,EAARmG,EAAW,EAAGzG,GACrD5D,EAAIqG,SAAS,IAAIgD,EAASnC,QAASiD,EAAM,EAAGhG,EAAQD,EACtD,CACF,MAAO,GAAsB,SAAlBmF,EAASrF,MAIdM,EAASmF,EAAU,EAAG,CAExB,MAAMa,EAAWb,GAAW5F,EAAU,GAAK,IAAM,GACjD7D,EAAIuK,UAAUjG,EAAQH,EAAOmG,EAAUpG,GACvCnE,EACEC,EACA8B,KAAK4H,IAAI,EAAGpF,GACZH,EAAQD,EAAW,EAAI,EACvBoG,GAAYhG,EAAS,EAAIA,EAAS,GAClC,EACAV,EACA,OAEJ,CAEJ,CAGA,GAAIoF,EACF,IAAK,MAAMK,KAAYF,EAAY,CACjC,MAAMG,EAAShE,EAAQ+D,EAAS/D,MAC1BiE,EAAOF,EAAS3D,QACfpB,IAAUE,EAAAA,EAAAA,UAAS8E,EAAQA,EAASC,EAAMtF,EAAQJ,GACnD8B,GAAO0D,EAASnC,MAAQmC,EAAS3D,OACjCuE,EAAM,GAAGtE,IACf,GAAsB,cAAlB0D,EAASrF,MAAwB2B,GAAO,GAC1C,GAAI9B,EAAUgF,EACZ9I,EAASC,EAAKsE,EAAS,EAAGH,EAAO,EAAGD,EAAUN,EAAa,eACtD,GAAIM,EAAW7C,EAAY,CAChC,MAAM6I,GAAS9I,EAAAA,EAAAA,aAAY6I,GACrBO,EAAU,EAChBzK,EACEC,EACAsE,EAAS4F,EAAS,EAAIM,EACtBrG,EACA+F,EAAS,EAAIM,EACbtG,EACAN,EACA,UAEF5D,EAAIO,UAAY,QAChBP,EAAIqG,SAAS4D,EAAK3F,EAAS4F,EAAS,EAAG/F,EAAQD,EACjD,KAAO,CACL,MAAMsG,EAAU,EAChBzK,EACEC,EACAsE,EAASkG,EACTrG,EACA,EAAIqG,EACJtG,EACAN,EACA,SAEJ,CAEJ,CAtJF,CAwJF,CC9LO,SAAS6G,GAAmB,IACjCzK,EAAG,KACHwD,EAAI,WACJC,EAAU,OACV/B,EAAM,MACNjB,EAAK,aACLiD,EAAY,YACZE,IAUA,MAAM,QAAEnC,EAAO,MAAE0C,EAAK,SAAED,GAAaV,GAC/B,QAAEM,EAAO,QAAED,GAAYJ,EACvBQ,EAASH,EAAQ,GACjB4G,GAAerI,EAAAA,EAAAA,gBAAeX,EAAQ,sBACtCyH,EAAa1H,EAAQI,IAAI,cACzBqE,EAAMzE,EAAQI,IAAI,QAClB,UAAEV,EAAS,WAAEE,GAAeH,IAGlC,IAAMgF,IAAOiD,EACX,OAGF,MAAMlD,EAAY5E,EAAa,EACzBsJ,GAAQtF,EAAAA,EAAAA,YAAW5D,EAAQI,IAAI,UACrC,IAAI+I,EAAY,EACZC,EAAY,EAChB,IAAK,IAAIpF,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,GAAK,EAAG,CACxC,MAAMG,EAAK+E,EAAMlF,EAAI,GACfE,GAAOgF,EAAMlF,GACnB,GAAW,MAAPG,EAAY,CACd,IAAK,IAAIsC,EAAI,EAAGA,EAAIvC,EAAKuC,IAAK,CAC5B,MAAMhB,EAAOhB,EAAI0E,EAAY1C,GACvB4C,EAAKrJ,EAAQI,IAAI,UAAkB,IAAN4D,EAAUE,EAAM,GAAKkF,EAAY3C,GAC7D5D,EAAQC,IAAWC,EAAAA,EAAAA,UAASsG,EAAIA,EAAK,EAAG7G,EAAQJ,GACjD4F,EAAU3H,KAAK4H,IAAIgB,EAAcnG,EAAUD,GAI3CqF,EAAYjG,EAAawD,IAAS,UACxClH,EAAIO,UAAYoJ,EAChB5J,EAASC,EAAKsE,EAAQH,EAAOsF,EAASvF,EAAUN,GAE5C6F,GAAWtI,GAAa+C,GAAY+B,IACtCjG,EAAIO,UAAYE,EAAME,QAAQoK,gBAAgBpB,GAC9C3J,EAAIqG,SACFa,EACA5C,GAAUmF,EAAUtI,GAAa,EAAI,EACrCgD,EAAQD,GAGd,CACA0G,GAAajF,CACf,CACW,MAAPC,IACFiF,GAAalF,GAEJ,MAAPC,GAAqB,MAAPA,GAAqB,MAAPA,IAC9BiF,GAAalF,EACbiF,GAAajF,GAKJ,MAAPC,IACFiF,GAAalF,GAEJ,MAAPC,IACFgF,GAAajF,EAEjB,CACF,CCnEO,SAASqF,GAAc,IAC5BhL,EAAG,cACHiL,EAAa,YACbrH,EAAW,WACXH,IAOA,MAAM,OAAE/B,EAAM,aAAEwJ,EAAY,QAAEnH,EAAStD,MAAO0K,GAAgB1H,EACxDqF,GAAgBzG,EAAAA,EAAAA,gBAAeX,EAAQ,iBACvCkH,GAAqBvG,EAAAA,EAAAA,gBAAeX,EAAQ,sBAC5CmH,GAA+BxG,EAAAA,EAAAA,gBACnCX,EACA,gCAEIC,EAAmD,UAApCU,EAAAA,EAAAA,gBAAeX,EAAQ,SACtCjB,GAAQ2K,EAAAA,EAAAA,oBAAmBD,GAC3BzH,EAAelD,EAAgBC,GAC/BkD,EXZD,SAA4BlD,GACjC,OAAO4K,OAAOC,YACZD,OAAOE,QAAQ/K,EAAgBC,IAAQ0E,KAAI,EAAEqG,EAAKC,KAAW,CAC3DD,EACA/K,EAAME,QAAQoK,gBAAgBU,MAGpC,CWK0BC,CAAmBjL,GAC3CT,EAAI2L,KAAO,kCAEX,MAAM,UAAExK,EAAS,WAAEE,GAAeH,IAC5B6H,GXP4B/E,EWOQD,GAASC,KXN5C,CAAC,cAAe,iBAAiB4H,SAAS5H,GAAQ,KADpD,IAA6BA,EWSlC,IAAK,MAAMR,KAAQyH,EACjB1H,EAAgB,CACdvD,MACAwD,OACAC,aACA9B,eACA+B,eACAC,kBACAxC,YACAE,aACAuC,gBAEF+E,EAAiB,CACf3I,MACAwD,OACAC,aACAqF,gBACAC,gBACAC,YXtBG,EWuBHH,+BACAD,qBACAzH,YACAE,aACAqC,eACAC,kBACAC,gBAEEsH,GACFT,EAAmB,CACjBzK,MACAwD,OACAC,aACAC,eACAhC,SACAjB,QACAmD,eAKR,C","sources":["../../../plugins/alignments/src/PileupRenderer/util.ts","../../../plugins/alignments/src/PileupRenderer/getAlignmentShapeColor.ts","../../../plugins/alignments/src/PileupRenderer/colorBy.ts","../../../plugins/alignments/src/PileupRenderer/renderAlignment.ts","../../../plugins/alignments/src/PileupRenderer/renderAlignmentShape.ts","../../../plugins/alignments/src/PileupRenderer/renderPerBaseQuality.ts","../../../plugins/alignments/src/PileupRenderer/renderPerBaseLettering.ts","../../../plugins/alignments/src/PileupRenderer/renderModifications.ts","../../../plugins/alignments/src/PileupRenderer/renderMethylation.ts","../../../plugins/alignments/src/PileupRenderer/renderMismatches.ts","../../../plugins/alignments/src/PileupRenderer/renderSoftClipping.ts","../../../plugins/alignments/src/PileupRenderer/makeImageData.ts"],"sourcesContent":["import { Feature, measureText } from '@jbrowse/core/util'\nimport { Theme } from '@mui/material'\n\nexport function fillRect(\n  ctx: CanvasRenderingContext2D,\n  l: number,\n  t: number,\n  w: number,\n  h: number,\n  cw: number,\n  color?: string,\n) {\n  if (l + w < 0 || l > cw) {\n    return\n  }\n  if (color) {\n    ctx.fillStyle = color\n  }\n  ctx.fillRect(l, t, w, h)\n}\n\nexport function getColorBaseMap(theme: Theme) {\n  const { bases } = theme.palette\n  return {\n    A: bases.A.main,\n    C: bases.C.main,\n    G: bases.G.main,\n    T: bases.T.main,\n    deletion: '#808080', // gray\n  }\n}\n\nexport function getContrastBaseMap(theme: Theme) {\n  return Object.fromEntries(\n    Object.entries(getColorBaseMap(theme)).map(([key, value]) => [\n      key,\n      theme.palette.getContrastText(value),\n    ]),\n  )\n}\n\nexport function shouldDrawSNPsMuted(type?: string) {\n  return ['methylation', 'modifications'].includes(type || '')\n}\n\nexport function shouldDrawIndels() {\n  return true\n}\n\nexport interface LayoutFeature {\n  heightPx: number\n  topPx: number\n  feature: Feature\n}\n\n// get width and height of chars the height is an approximation: width letter M\n// is approximately the height\nexport function getCharWidthHeight() {\n  const charWidth = measureText('A')\n  const charHeight = measureText('M') - 2\n  return { charWidth, charHeight }\n}\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\nimport { fillColor } from '../shared/color'\nimport {\n  colorByInsertSize,\n  colorByMappingQuality,\n  colorByOrientation,\n  colorByStrand,\n  colorByStrandedRnaSeq,\n} from './colorBy'\n\nexport function getAlignmentShapeColor({\n  colorType,\n  tag,\n  feature,\n  config,\n  defaultColor,\n  colorTagMap,\n}: {\n  colorType: string\n  tag: string\n  feature: Feature\n  defaultColor: boolean\n  config: AnyConfigurationModel\n  colorTagMap: Record<string, string>\n}) {\n  // first pass for simple color changes that change the color of the\n  // alignment\n  switch (colorType) {\n    case 'insertSize':\n      return colorByInsertSize(feature)\n    case 'strand':\n      return colorByStrand(feature)\n    case 'mappingQuality':\n      return colorByMappingQuality(feature)\n    case 'pairOrientation':\n      return colorByOrientation(feature, config)\n    case 'stranded':\n      return colorByStrandedRnaSeq(feature)\n    case 'xs':\n    case 'tag': {\n      const tags = feature.get('tags')\n      const val = tags ? tags[tag] : feature.get(tag)\n\n      if (tag === 'XS' || tag === 'TS') {\n        if (val === '-') {\n          return fillColor.color_rev_strand\n        } else if (val === '+') {\n          return fillColor.color_fwd_strand\n        } else {\n          return fillColor.color_nostrand\n        }\n      }\n      if (tag === 'ts') {\n        if (val === '-') {\n          return feature.get('strand') === -1\n            ? fillColor.color_fwd_strand\n            : fillColor.color_rev_strand\n        } else if (val === '+') {\n          return feature.get('strand') === -1\n            ? fillColor.color_rev_strand\n            : fillColor.color_fwd_strand\n        } else {\n          return fillColor.color_nostrand\n        }\n      }\n      return colorTagMap[val] || fillColor.color_nostrand\n    }\n    case 'insertSizeAndPairOrientation':\n      break\n\n    case 'modifications':\n    case 'methylation':\n      // this coloring is similar to igv.js, and is helpful to color negative\n      // strand reads differently because their c-g will be flipped (e.g. g-c\n      // read right to left)\n      return feature.get('flags') & 16 ? '#c8dcc8' : '#c8c8c8'\n\n    default:\n      return defaultColor\n        ? 'lightgrey'\n        : readConfObject(config, 'color', { feature })\n  }\n}\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\nimport { fillColor } from '../shared/color'\nimport { orientationTypes } from '../util'\n\nexport function colorByInsertSize(feature: Feature) {\n  return feature.get('is_paired') &&\n    feature.get('refName') !== feature.get('next_ref')\n    ? '#555'\n    : `hsl(${Math.abs(feature.get('template_length')) / 10},50%,50%)`\n}\n\nexport function colorByMappingQuality(feature: Feature) {\n  return `hsl(${feature.get('score')},50%,50%)`\n}\n\nfunction getOrientation(feature: Feature, config: AnyConfigurationModel) {\n  const orientationType = readConfObject(config, 'orientationType') as\n    | 'fr'\n    | 'ff'\n    | 'rf'\n  const type = orientationTypes[orientationType]\n  const orientation = type[feature.get('pair_orientation') as string]!\n  return {\n    LR: 'color_pair_lr' as const,\n    RR: 'color_pair_rr' as const,\n    RL: 'color_pair_rl' as const,\n    LL: 'color_pair_ll' as const,\n  }[orientation]\n}\n\nexport function colorByStrand(feature: Feature) {\n  return feature.get('strand') === -1 ? '#8F8FD8' : '#EC8B8B'\n}\n\nexport function colorByOrientation(\n  feature: Feature,\n  config: AnyConfigurationModel,\n) {\n  return fillColor[getOrientation(feature, config) || 'color_nostrand']\n}\nfunction getStranded(feature: Feature) {\n  const flags = feature.get('flags')\n  const strand = feature.get('strand')\n\n  // is paired\n  if (flags & 1) {\n    // first-of-pair?\n    const flipper = flags & 64 ? -1 : 1\n\n    // proper pairing\n    if (flags & 2) {\n      return strand * flipper === 1 ? 'color_rev_strand' : 'color_fwd_strand'\n    }\n    // mate missing, separate color\n    if (flags & 8) {\n      return strand * flipper === 1\n        ? 'color_rev_missing_mate'\n        : 'color_fwd_missing_mate'\n    }\n    // same chrom without proper pairing gets separate color\n    if (feature.get('refName') === feature.get('next_ref')) {\n      return strand * flipper === 1\n        ? 'color_rev_strand_not_proper'\n        : 'color_fwd_strand_not_proper'\n    }\n    // abberant chrom\n\n    return strand === 1 ? 'color_fwd_diff_chr' : 'color_rev_diff_chr'\n  }\n  return 'color_unknown'\n}\n\nexport function colorByStrandedRnaSeq(feature: Feature) {\n  return fillColor[getStranded(feature)]\n}\n","import { LayoutFeature } from './util'\n\nimport { getAlignmentShapeColor } from './getAlignmentShapeColor'\nimport { renderAlignmentShape } from './renderAlignmentShape'\nimport { renderPerBaseQuality } from './renderPerBaseQuality'\nimport { renderPerBaseLettering } from './renderPerBaseLettering'\nimport { renderModifications } from './renderModifications'\nimport { renderMethylation } from './renderMethylation'\nimport { RenderArgsWithColor } from './makeImageData'\n\nexport function renderAlignment({\n  ctx,\n  feat,\n  renderArgs,\n  colorForBase,\n  contrastForBase,\n  charWidth,\n  charHeight,\n  defaultColor,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  renderArgs: RenderArgsWithColor\n  colorForBase: Record<string, string>\n  contrastForBase: Record<string, string>\n  charWidth: number\n  charHeight: number\n  defaultColor: boolean\n  canvasWidth: number\n}) {\n  const { config, bpPerPx, regions, colorBy, colorTagMap = {} } = renderArgs\n  const { tag = '', type: colorType = '' } = colorBy || {}\n  const { feature } = feat\n  const region = regions[0]!\n\n  ctx.fillStyle = getAlignmentShapeColor({\n    feature,\n    config,\n    tag,\n    defaultColor,\n    colorType,\n    colorTagMap,\n  })\n\n  renderAlignmentShape({ ctx, feat, renderArgs })\n\n  // second pass for color types that render per-base things that go over the\n  // existing drawing\n  switch (colorType) {\n    case 'perBaseQuality':\n      renderPerBaseQuality({\n        ctx,\n        feat,\n        region,\n        bpPerPx,\n        canvasWidth,\n      })\n      break\n\n    case 'perBaseLettering':\n      renderPerBaseLettering({\n        ctx,\n        feat,\n        region,\n        bpPerPx,\n        colorForBase,\n        contrastForBase,\n        charWidth,\n        charHeight,\n        canvasWidth,\n      })\n      break\n\n    case 'modifications':\n      renderModifications({\n        ctx,\n        feat,\n        region,\n        bpPerPx,\n        renderArgs,\n        canvasWidth,\n      })\n      break\n\n    case 'methylation':\n      renderMethylation({\n        ctx,\n        feat,\n        region,\n        bpPerPx,\n        renderArgs,\n        canvasWidth,\n      })\n      break\n  }\n}\n","import { bpSpanPx } from '@jbrowse/core/util'\nimport { RenderArgsDeserialized } from './PileupRenderer'\nimport { LayoutFeature } from './util'\n\nexport function renderAlignmentShape({\n  ctx,\n  feat,\n  renderArgs,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  renderArgs: RenderArgsDeserialized\n}) {\n  const { regions, bpPerPx } = renderArgs\n  const { heightPx, topPx, feature } = feat\n  const region = regions[0]!\n  const s = feature.get('start')\n  const e = feature.get('end')\n  const [leftPx, rightPx] = bpSpanPx(s, e, region, bpPerPx)\n  const flip = region.reversed ? -1 : 1\n  const strand = feature.get('strand') * flip\n  if (bpPerPx < 10 && heightPx > 5) {\n    if (strand === -1) {\n      ctx.beginPath()\n      ctx.moveTo(leftPx - 5, topPx + heightPx / 2)\n      ctx.lineTo(leftPx, topPx + heightPx)\n      ctx.lineTo(rightPx, topPx + heightPx)\n      ctx.lineTo(rightPx, topPx)\n      ctx.lineTo(leftPx, topPx)\n      ctx.closePath()\n      ctx.fill()\n    } else {\n      ctx.beginPath()\n      ctx.moveTo(leftPx, topPx)\n      ctx.lineTo(leftPx, topPx + heightPx)\n      ctx.lineTo(rightPx, topPx + heightPx)\n      ctx.lineTo(rightPx + 5, topPx + heightPx / 2)\n      ctx.lineTo(rightPx, topPx)\n      ctx.closePath()\n      ctx.fill()\n    }\n  } else {\n    ctx.fillRect(leftPx, topPx, rightPx - leftPx, heightPx)\n  }\n}\n","import { bpSpanPx, Region } from '@jbrowse/core/util'\nimport { parseCigar } from '../MismatchParser'\nimport { fillRect, LayoutFeature } from './util'\n\nexport function renderPerBaseQuality({\n  ctx,\n  feat,\n  region,\n  bpPerPx,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  region: Region\n  bpPerPx: number\n  canvasWidth: number\n}) {\n  const { feature, topPx, heightPx } = feat\n  const qual: string = feature.get('qual') || ''\n  const scores = qual.split(' ').map(val => +val)\n  const cigarOps = parseCigar(feature.get('CIGAR'))\n  const w = 1 / bpPerPx\n  const start = feature.get('start')\n  let soffset = 0 // sequence offset\n  let roffset = 0 // reference offset\n\n  for (let i = 0; i < cigarOps.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]!\n    if (op === 'S' || op === 'I') {\n      soffset += len\n    } else if (op === 'D' || op === 'N') {\n      roffset += len\n    } else if (op === 'M' || op === 'X' || op === '=') {\n      for (let m = 0; m < len; m++) {\n        const score = scores[soffset + m]!\n        const start0 = start + roffset + m\n        const leftPx = bpSpanPx(start0, start0 + 1, region, bpPerPx)[0]\n        const c = `hsl(${score === 255 ? 150 : score * 1.5},55%,50%)`\n        fillRect(ctx, leftPx, topPx, w + 0.5, heightPx, canvasWidth, c)\n      }\n      soffset += len\n      roffset += len\n    }\n  }\n}\n","import { bpSpanPx, Region } from '@jbrowse/core/util'\nimport { parseCigar } from '../MismatchParser'\nimport { fillRect, LayoutFeature } from './util'\n\nexport function renderPerBaseLettering({\n  ctx,\n  feat,\n  region,\n  bpPerPx,\n  colorForBase,\n  contrastForBase,\n  charWidth,\n  charHeight,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  region: Region\n  bpPerPx: number\n  colorForBase: Record<string, string>\n  contrastForBase: Record<string, string>\n  charWidth: number\n  charHeight: number\n  canvasWidth: number\n}) {\n  const heightLim = charHeight - 2\n  const { feature, topPx, heightPx } = feat\n  const seq = feature.get('seq') as string | undefined\n  const cigarOps = parseCigar(feature.get('CIGAR'))\n  const w = 1 / bpPerPx\n  const start = feature.get('start')\n  let soffset = 0\n  let roffset = 0\n\n  if (!seq) {\n    return\n  }\n  for (let i = 0; i < cigarOps.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]!\n    if (op === 'S' || op === 'I') {\n      soffset += len\n    } else if (op === 'D' || op === 'N') {\n      roffset += len\n    } else if (op === 'M' || op === 'X' || op === '=') {\n      for (let m = 0; m < len; m++) {\n        const letter = seq[soffset + m]!\n        const r = start + roffset + m\n        const [leftPx] = bpSpanPx(r, r + 1, region, bpPerPx)\n        const c = colorForBase[letter]\n        fillRect(ctx, leftPx, topPx, w + 0.5, heightPx, canvasWidth, c)\n\n        if (w >= charWidth && heightPx >= heightLim) {\n          // normal SNP coloring\n          ctx.fillStyle = contrastForBase[letter]!\n          ctx.fillText(\n            letter,\n            leftPx + (w - charWidth) / 2 + 1,\n            topPx + heightPx,\n          )\n        }\n      }\n      soffset += len\n      roffset += len\n    }\n  }\n}\n","import { bpSpanPx, Region } from '@jbrowse/core/util'\nimport {\n  getModificationPositions,\n  getModificationProbabilities,\n  getNextRefPos,\n  parseCigar,\n} from '../MismatchParser'\nimport { getTagAlt } from '../util'\nimport { fillRect, LayoutFeature } from './util'\nimport { RenderArgsWithColor } from './makeImageData'\nimport { colord } from '@jbrowse/core/util/colord'\n\n// render modifications stored in MM tag in BAM\n//\n// ML stores probabilities as array of numerics and MP is scaled phred scores\n// https://github.com/samtools/hts-specs/pull/418/files#diff-e765c6479316309f56b636f88189cdde8c40b854c7bdcce9ee7fe87a4e76febcR596\n//\n// if we have ML or Ml, it is an 8bit probability, divide by 255\n//\n// if we have MP or Mp it is phred scaled ASCII, which can go up to 90 but\n// has very high likelihood basecalls at that point, we really only care\n// about low qual calls <20 approx\nexport function renderModifications({\n  ctx,\n  feat,\n  region,\n  bpPerPx,\n  renderArgs,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  region: Region\n  bpPerPx: number\n  renderArgs: RenderArgsWithColor\n  canvasWidth: number\n}) {\n  const { feature, topPx, heightPx } = feat\n  const { modificationTagMap = {} } = renderArgs\n\n  const seq = feature.get('seq') as string | undefined\n\n  if (!seq) {\n    return\n  }\n  const mm = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n  const cigar = feature.get('CIGAR')\n  const start = feature.get('start')\n  const strand = feature.get('strand')\n  const cigarOps = parseCigar(cigar)\n  const probabilities = getModificationProbabilities(feature)\n  const modifications = getModificationPositions(mm, seq, strand)\n\n  // probIndex applies across multiple modifications e.g.\n  let probIndex = 0\n  for (const { type, positions } of modifications) {\n    const col = modificationTagMap[type] || 'black'\n    const base = colord(col)\n    for (const readPos of getNextRefPos(cigarOps, positions)) {\n      const r = start + readPos\n      const [leftPx, rightPx] = bpSpanPx(r, r + 1, region, bpPerPx)\n      const prob = probabilities?.[probIndex] || 0\n      const c = prob !== 1 ? base.alpha(prob + 0.1).toHslString() : col\n      const w = rightPx - leftPx + 0.5\n      fillRect(ctx, leftPx, topPx, w, heightPx, canvasWidth, c)\n      probIndex++\n    }\n  }\n}\n","import { bpSpanPx, Region } from '@jbrowse/core/util'\nimport { getMethBins } from '../MismatchParser'\nimport { fillRect, LayoutFeature } from './util'\nimport { RenderArgsWithColor } from './makeImageData'\nimport { colord } from '@jbrowse/core/util/colord'\n\n// Color by methylation is slightly modified version of color by\n// modifications that focuses on CpG sites, with non-methylated CpG colored\nexport function renderMethylation({\n  ctx,\n  feat,\n  region,\n  bpPerPx,\n  renderArgs,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  region: Region\n  bpPerPx: number\n  renderArgs: RenderArgsWithColor\n  canvasWidth: number\n}) {\n  const { regionSequence } = renderArgs\n  const { feature, topPx, heightPx } = feat\n  if (!regionSequence) {\n    throw new Error('region sequence required for methylation')\n  }\n\n  const seq = feature.get('seq') as string | undefined\n  if (!seq) {\n    return\n  }\n  const fstart = feature.get('start')\n  const fend = feature.get('end')\n  const { methBins, methProbs } = getMethBins(feature)\n\n  function getCol(k: number) {\n    if (methBins[k]) {\n      const p = methProbs[k] || 0\n      return (\n        p > 0.5\n          ? colord('red').alpha((p - 0.5) * 2)\n          : colord('blue').alpha(1 - p * 2)\n      ).toHslString()\n    }\n    return undefined\n  }\n  for (let i = 0; i < fend - fstart; i++) {\n    const j = i + fstart\n    const l1 = regionSequence[j - region.start + 1]?.toLowerCase()\n    const l2 = regionSequence[j - region.start + 2]?.toLowerCase()\n\n    if (l1 === 'c' && l2 === 'g') {\n      if (bpPerPx > 2) {\n        const [leftPx, rightPx] = bpSpanPx(j, j + 2, region, bpPerPx)\n        const w = rightPx - leftPx + 0.5\n        const c = getCol(i) || getCol(i + 1) || 'blue'\n        fillRect(ctx, leftPx, topPx, w, heightPx, canvasWidth, c)\n      } else {\n        const [leftPx, rightPx] = bpSpanPx(j, j + 1, region, bpPerPx)\n        const w = rightPx - leftPx + 0.5\n        const c = getCol(i) || 'blue'\n        fillRect(ctx, leftPx, topPx, w, heightPx, canvasWidth, c)\n        const [leftPx2, rightPx2] = bpSpanPx(j + 1, j + 2, region, bpPerPx)\n        const w2 = rightPx2 - leftPx2 + 0.5\n        const c2 = getCol(i + 1) || 'blue'\n        fillRect(ctx, leftPx2, topPx, w2, heightPx, canvasWidth, c2)\n      }\n    }\n  }\n}\n","import { bpSpanPx, measureText } from '@jbrowse/core/util'\nimport { Mismatch } from '../MismatchParser'\nimport { fillRect, LayoutFeature } from './util'\nimport { RenderArgsWithColor } from './makeImageData'\nimport { colord } from '@jbrowse/core/util/colord'\n\nexport function renderMismatches({\n  ctx,\n  feat,\n  renderArgs,\n  minSubfeatureWidth,\n  largeInsertionIndicatorScale,\n  mismatchAlpha,\n  charWidth,\n  charHeight,\n  colorForBase,\n  contrastForBase,\n  canvasWidth,\n  drawSNPsMuted,\n  drawIndels = true,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  renderArgs: RenderArgsWithColor\n  colorForBase: Record<string, string>\n  contrastForBase: Record<string, string>\n  mismatchAlpha?: boolean\n  drawIndels?: boolean\n  drawSNPsMuted?: boolean\n  minSubfeatureWidth: number\n  largeInsertionIndicatorScale: number\n  charWidth: number\n  charHeight: number\n  canvasWidth: number\n}) {\n  const { bpPerPx, regions } = renderArgs\n  const { heightPx, topPx, feature } = feat\n  const region = regions[0]!\n  const start = feature.get('start')\n\n  const pxPerBp = Math.min(1 / bpPerPx, 2)\n  const mismatches = feature.get('mismatches') as Mismatch[] | undefined\n  const heightLim = charHeight - 2\n\n  // extraHorizontallyFlippedOffset is used to draw interbase items, which\n  // are located to the left when forward and right when reversed\n  const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx + 1 : -1\n\n  if (!mismatches) {\n    return\n  }\n\n  // two pass rendering: first pass, draw all the mismatches except wide\n  // insertion markers\n  for (const mismatch of mismatches) {\n    const mstart = start + mismatch.start\n    const mlen = mismatch.length\n    const mbase = mismatch.base\n    const [leftPx, rightPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n    const widthPx = Math.max(minSubfeatureWidth, Math.abs(leftPx - rightPx))\n    if (mismatch.type === 'mismatch') {\n      if (!drawSNPsMuted) {\n        const baseColor = colorForBase[mismatch.base] || '#888'\n        const c = mismatchAlpha\n          ? mismatch.qual === undefined\n            ? baseColor\n            : colord(baseColor)\n                .alpha(Math.min(1, mismatch.qual / 50))\n                .toHslString()\n          : baseColor\n\n        fillRect(\n          ctx,\n          Math.round(leftPx),\n          topPx,\n          widthPx,\n          heightPx,\n          canvasWidth,\n          c,\n        )\n      }\n\n      if (widthPx >= charWidth && heightPx >= heightLim) {\n        // normal SNP coloring\n        const contrastColor = drawSNPsMuted\n          ? 'black'\n          : contrastForBase[mismatch.base] || 'black'\n        ctx.fillStyle = mismatchAlpha\n          ? mismatch.qual === undefined\n            ? contrastColor\n            : colord(contrastColor)\n                .alpha(Math.min(1, mismatch.qual / 50))\n                .toHslString()\n          : contrastColor\n        ctx.fillText(\n          mbase,\n          leftPx + (widthPx - charWidth) / 2 + 1,\n          topPx + heightPx,\n        )\n      }\n    } else if (mismatch.type === 'deletion' && drawIndels) {\n      fillRect(\n        ctx,\n        leftPx,\n        topPx,\n        Math.abs(leftPx - rightPx),\n        heightPx,\n        canvasWidth,\n        colorForBase.deletion,\n      )\n      const txt = `${mismatch.length}`\n      const rwidth = measureText(txt, 10)\n      if (widthPx >= rwidth && heightPx >= heightLim) {\n        ctx.fillStyle = contrastForBase.deletion!\n        ctx.fillText(txt, (leftPx + rightPx) / 2 - rwidth / 2, topPx + heightPx)\n      }\n    } else if (mismatch.type === 'insertion' && drawIndels) {\n      ctx.fillStyle = 'purple'\n      const pos = leftPx + extraHorizontallyFlippedOffset\n      const len = +mismatch.base || mismatch.length\n      const insW = Math.max(0, Math.min(1.2, 1 / bpPerPx))\n      if (len < 10) {\n        fillRect(ctx, pos, topPx, insW, heightPx, canvasWidth, 'purple')\n        if (1 / bpPerPx >= charWidth && heightPx >= heightLim) {\n          const l = pos - insW\n          fillRect(ctx, l, topPx, insW * 3, 1, canvasWidth)\n          fillRect(ctx, l, topPx + heightPx - 1, insW * 3, 1, canvasWidth)\n          ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n        }\n      }\n    } else if (mismatch.type === 'hardclip' || mismatch.type === 'softclip') {\n      const pos = leftPx + extraHorizontallyFlippedOffset\n      const c = mismatch.type === 'hardclip' ? 'red' : 'blue'\n      const clipW = Math.max(minSubfeatureWidth, pxPerBp)\n      fillRect(ctx, pos, topPx, clipW, heightPx, canvasWidth, c)\n      if (1 / bpPerPx >= charWidth && heightPx >= heightLim) {\n        const l = pos - clipW\n        fillRect(ctx, l, topPx, clipW * 3, 1, canvasWidth)\n        fillRect(ctx, l, topPx + heightPx - 1, clipW * 3, 1, canvasWidth)\n        ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n      }\n    } else if (mismatch.type === 'skip') {\n      // fix to avoid bad rendering note that this was also related to chrome\n      // bug https://bugs.chromium.org/p/chromium/issues/detail?id=1131528\n      // also affected firefox ref #1236 #2750\n      if (leftPx + widthPx > 0) {\n        // make small exons more visible when zoomed far out\n        const adjustPx = widthPx - (bpPerPx > 10 ? 1.5 : 0)\n        ctx.clearRect(leftPx, topPx, adjustPx, heightPx)\n        fillRect(\n          ctx,\n          Math.max(0, leftPx),\n          topPx + heightPx / 2 - 1,\n          adjustPx + (leftPx < 0 ? leftPx : 0),\n          2,\n          canvasWidth,\n          '#333',\n        )\n      }\n    }\n  }\n\n  // second pass, draw wide insertion markers on top\n  if (drawIndels) {\n    for (const mismatch of mismatches) {\n      const mstart = start + mismatch.start\n      const mlen = mismatch.length\n      const [leftPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n      const len = +mismatch.base || mismatch.length\n      const txt = `${len}`\n      if (mismatch.type === 'insertion' && len >= 10) {\n        if (bpPerPx > largeInsertionIndicatorScale) {\n          fillRect(ctx, leftPx - 1, topPx, 2, heightPx, canvasWidth, 'purple')\n        } else if (heightPx > charHeight) {\n          const rwidth = measureText(txt)\n          const padding = 5\n          fillRect(\n            ctx,\n            leftPx - rwidth / 2 - padding,\n            topPx,\n            rwidth + 2 * padding,\n            heightPx,\n            canvasWidth,\n            'purple',\n          )\n          ctx.fillStyle = 'white'\n          ctx.fillText(txt, leftPx - rwidth / 2, topPx + heightPx)\n        } else {\n          const padding = 2\n          fillRect(\n            ctx,\n            leftPx - padding,\n            topPx,\n            2 * padding,\n            heightPx,\n            canvasWidth,\n            'purple',\n          )\n        }\n      }\n    }\n  }\n}\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { bpSpanPx } from '@jbrowse/core/util'\nimport { Theme } from '@mui/material'\n\n// locals\nimport { Mismatch, parseCigar } from '../MismatchParser'\nimport { RenderArgsDeserializedWithFeaturesAndLayout } from './PileupRenderer'\nimport { fillRect, getCharWidthHeight, LayoutFeature } from './util'\n\nexport function renderSoftClipping({\n  ctx,\n  feat,\n  renderArgs,\n  config,\n  theme,\n  colorForBase,\n  canvasWidth,\n}: {\n  ctx: CanvasRenderingContext2D\n  feat: LayoutFeature\n  renderArgs: RenderArgsDeserializedWithFeaturesAndLayout\n  config: AnyConfigurationModel\n  colorForBase: Record<string, string>\n  theme: Theme\n  canvasWidth: number\n}) {\n  const { feature, topPx, heightPx } = feat\n  const { regions, bpPerPx } = renderArgs\n  const region = regions[0]!\n  const minFeatWidth = readConfObject(config, 'minSubfeatureWidth')\n  const mismatches = feature.get('mismatches') as Mismatch[] | undefined\n  const seq = feature.get('seq') as string | undefined\n  const { charWidth, charHeight } = getCharWidthHeight()\n\n  // Display all bases softclipped off in lightened colors\n  if (!(seq && mismatches)) {\n    return\n  }\n\n  const heightLim = charHeight - 2\n  const CIGAR = parseCigar(feature.get('CIGAR'))\n  let seqOffset = 0\n  let refOffset = 0\n  for (let i = 0; i < CIGAR.length; i += 2) {\n    const op = CIGAR[i + 1]!\n    const len = +CIGAR[i]!\n    if (op === 'S') {\n      for (let k = 0; k < len; k++) {\n        const base = seq[seqOffset + k]!\n        const s0 = feature.get('start') - (i === 0 ? len : 0) + refOffset + k\n        const [leftPx, rightPx] = bpSpanPx(s0, s0 + 1, region, bpPerPx)\n        const widthPx = Math.max(minFeatWidth, rightPx - leftPx)\n\n        // Black accounts for IUPAC ambiguity code bases such as N that\n        // show in soft clipping\n        const baseColor = colorForBase[base] || '#000000'\n        ctx.fillStyle = baseColor\n        fillRect(ctx, leftPx, topPx, widthPx, heightPx, canvasWidth)\n\n        if (widthPx >= charWidth && heightPx >= heightLim) {\n          ctx.fillStyle = theme.palette.getContrastText(baseColor)\n          ctx.fillText(\n            base,\n            leftPx + (widthPx - charWidth) / 2 + 1,\n            topPx + heightPx,\n          )\n        }\n      }\n      seqOffset += len\n    }\n    if (op === 'N') {\n      refOffset += len\n    }\n    if (op === 'M' || op === '=' || op === 'X') {\n      refOffset += len\n      seqOffset += len\n    }\n    if (op === 'H') {\n      // do nothing\n    }\n    if (op === 'D') {\n      refOffset += len\n    }\n    if (op === 'I') {\n      seqOffset += len\n    }\n  }\n}\n","import { Feature } from '@jbrowse/core/util'\nimport { RenderArgsDeserializedWithFeaturesAndLayout } from './PileupRenderer'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport {\n  getCharWidthHeight,\n  getColorBaseMap,\n  getContrastBaseMap,\n  shouldDrawIndels,\n  shouldDrawSNPsMuted,\n} from './util'\nimport { renderAlignment } from './renderAlignment'\nimport { renderMismatches } from './renderMismatches'\nimport { renderSoftClipping } from './renderSoftClipping'\n\nexport type RenderArgsWithColor = RenderArgsDeserializedWithFeaturesAndLayout\n\ninterface LayoutFeature {\n  heightPx: number\n  topPx: number\n  feature: Feature\n}\n\nexport function makeImageData({\n  ctx,\n  layoutRecords,\n  canvasWidth,\n  renderArgs,\n}: {\n  ctx: CanvasRenderingContext2D\n  canvasWidth: number\n  layoutRecords: LayoutFeature[]\n  renderArgs: RenderArgsWithColor\n}) {\n  const { config, showSoftClip, colorBy, theme: configTheme } = renderArgs\n  const mismatchAlpha = readConfObject(config, 'mismatchAlpha')\n  const minSubfeatureWidth = readConfObject(config, 'minSubfeatureWidth')\n  const largeInsertionIndicatorScale = readConfObject(\n    config,\n    'largeInsertionIndicatorScale',\n  )\n  const defaultColor = readConfObject(config, 'color') === '#f0f'\n  const theme = createJBrowseTheme(configTheme)\n  const colorForBase = getColorBaseMap(theme)\n  const contrastForBase = getContrastBaseMap(theme)\n  ctx.font = 'bold 10px Courier New,monospace'\n\n  const { charWidth, charHeight } = getCharWidthHeight()\n  const drawSNPsMuted = shouldDrawSNPsMuted(colorBy?.type)\n  const drawIndels = shouldDrawIndels()\n  for (const feat of layoutRecords) {\n    renderAlignment({\n      ctx,\n      feat,\n      renderArgs,\n      defaultColor,\n      colorForBase,\n      contrastForBase,\n      charWidth,\n      charHeight,\n      canvasWidth,\n    })\n    renderMismatches({\n      ctx,\n      feat,\n      renderArgs,\n      mismatchAlpha,\n      drawSNPsMuted,\n      drawIndels,\n      largeInsertionIndicatorScale,\n      minSubfeatureWidth,\n      charWidth,\n      charHeight,\n      colorForBase,\n      contrastForBase,\n      canvasWidth,\n    })\n    if (showSoftClip) {\n      renderSoftClipping({\n        ctx,\n        feat,\n        renderArgs,\n        colorForBase,\n        config,\n        theme,\n        canvasWidth,\n      })\n    }\n  }\n  return undefined\n}\n"],"names":["fillRect","ctx","l","t","w","h","cw","color","fillStyle","getColorBaseMap","theme","bases","palette","A","main","C","G","T","deletion","getCharWidthHeight","charWidth","measureText","charHeight","getAlignmentShapeColor","colorType","tag","feature","config","defaultColor","colorTagMap","get","Math","abs","colorByInsertSize","colorByStrand","colorByMappingQuality","fillColor","orientationType","readConfObject","LR","RR","RL","LL","orientationTypes","getOrientation","colorByOrientation","flags","strand","flipper","getStranded","colorByStrandedRnaSeq","tags","val","color_rev_strand","color_fwd_strand","color_nostrand","renderAlignment","feat","renderArgs","colorForBase","contrastForBase","canvasWidth","bpPerPx","regions","colorBy","type","region","heightPx","topPx","s","e","leftPx","rightPx","bpSpanPx","flip","reversed","beginPath","moveTo","lineTo","closePath","fill","renderAlignmentShape","scores","split","map","cigarOps","parseCigar","start","soffset","roffset","i","length","len","op","m","score","start0","renderPerBaseQuality","heightLim","seq","letter","r","fillText","renderPerBaseLettering","modificationTagMap","mm","getTagAlt","cigar","probabilities","getModificationProbabilities","modifications","getModificationPositions","probIndex","positions","col","base","colord","readPos","getNextRefPos","prob","alpha","toHslString","renderModifications","regionSequence","Error","fstart","fend","methBins","methProbs","getMethBins","getCol","k","p","j","l1","toLowerCase","l2","leftPx2","rightPx2","renderMethylation","renderMismatches","minSubfeatureWidth","largeInsertionIndicatorScale","mismatchAlpha","drawSNPsMuted","drawIndels","pxPerBp","min","mismatches","extraHorizontallyFlippedOffset","mismatch","mstart","mlen","mbase","widthPx","max","baseColor","c","undefined","qual","round","contrastColor","txt","rwidth","pos","insW","clipW","adjustPx","clearRect","padding","renderSoftClipping","minFeatWidth","CIGAR","seqOffset","refOffset","s0","getContrastText","makeImageData","layoutRecords","showSoftClip","configTheme","createJBrowseTheme","Object","fromEntries","entries","key","value","getContrastBaseMap","font","includes"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4133.451f5e47.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4133,7706],{47046:(t,e,r)=>{r.d(e,{A:()=>a});class n{}class s{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new n){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):"function"==typeof t.addEventListener&&t.addEventListener("abort",(()=>{this.handleAborted(t)}))}handleAborted(t){this.signals.delete(t),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class i{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class a{constructor({fill:t,cache:e}){if("function"!=typeof t)throw new TypeError("must pass a fill function");if("object"!=typeof e)throw new TypeError("must pass a cache object");if("function"!=typeof e.get||"function"!=typeof e.set||"function"!=typeof e.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return"AbortError"===t.name||"ERR_ABORTED"===t.code||"AbortError: aborted"===t.message||"Error: aborted"===t.message}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,r,n){const a=new s,o=new i;o.addCallback(n);const h={aborter:a,promise:this.fillCallback(e,a.signal,(t=>{o.callback(t)})),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};h.aborter.addSignal(r),h.aborter.signal.addEventListener("abort",(()=>{h.settled||this.evict(t,h)})),h.promise.then((()=>{h.settled=!0}),(()=>{h.settled=!0,this.evict(t,h)})).catch((t=>{throw console.error(t),t})),this.cache.set(t,h)}static checkSinglePromise(t,e){function r(){if(null==e?void 0:e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then((t=>(r(),t)),(t=>{throw r(),t}))}has(t){return this.cache.has(t)}get(t,e,r,n){if(!r&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const s=this.cache.get(t);return s?s.aborted&&!s.settled?(this.evict(t,s),this.get(t,e,r,n)):s.settled?s.promise:(s.aborter.addSignal(r),s.statusReporter.addCallback(n),a.checkSinglePromise(s.promise,r)):(this.fill(t,e,r,n),a.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),e+=1;return e}}},34133:(t,e,r)=>{r.d(e,{j9:()=>C,Wg:()=>A});class n{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}static min(...t){let e,r=0;for(;!e;r+=1)e=t[r];for(;r<t.length;r+=1)e.compareTo(t[r])>0&&(e=t[r]);return e}}function s(t,e=0,r=!1){if(r)throw new Error("big-endian virtual file offsets not implemented");return new n(1099511627776*t[e+7]+4294967296*t[e+6]+16777216*t[e+5]+65536*t[e+4]+256*t[e+3]+t[e+2],t[e+1]<<8|t[e])}class i{constructor(t,e,r,n){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=n}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return void 0!==this._fetchedSize?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}var a=r(59086),o=r.n(a);function h(t){return new Promise((e=>setTimeout(e,t)))}function l(t,e){const r=[];let n;if(0===t.length)return t;t.sort(((t,e)=>{const r=t.minv.blockPosition-e.minv.blockPosition;return 0===r?t.minv.dataPosition-e.minv.dataPosition:r}));for(const a of t)(!e||a.maxv.compareTo(e)>0)&&(void 0===n?(r.push(a),n=a):(s=n,(i=a).minv.blockPosition-s.maxv.blockPosition<65e3&&i.maxv.blockPosition-s.minv.blockPosition<5e6?a.maxv.compareTo(n.maxv)>0&&(n.maxv=a.maxv):(r.push(a),n=a)));var s,i;return r}function c(t,e){return{lineCount:function(t){if(t.greaterThan(Number.MAX_SAFE_INTEGER)||t.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return t.toNumber()}(o().fromBytesLE(Array.prototype.slice.call(t,e,e+8),!0))}}function d(t,e){return t?t.compareTo(e)>0?e:t:e}function f(t,e=t=>t){let r=0,n=0;const s=[],i={};for(let a=0;a<t.length;a+=1)if(!t[a]){if(n<a){let o=t.toString("utf8",n,a);o=e(o),s[r]=o,i[o]=r}n=a+1,r+=1}return{refNameToId:i,refIdToName:s}}class u{constructor({filehandle:t,renameRefSeq:e=t=>t}){this.filehandle=t,this.renameRefSeq=e}}class g extends u{async lineCount(t,e){var r,n;return(null===(n=null===(r=(await this.parse(e)).indices[t])||void 0===r?void 0:r.stats)||void 0===n?void 0:n.lineCount)||0}async _parse(t){const e=await this.filehandle.readFile(t);if(21578050!==e.readUInt32LE(0))throw new Error("Not a BAI file");const r=e.readInt32LE(4);let n,a=8;const o=new Array(r);for(let t=0;t<r;t++){const r=e.readInt32LE(a);let h;a+=4;const l={};for(let t=0;t<r;t+=1){const t=e.readUInt32LE(a);if(a+=4,37450===t)a+=4,h=c(e,a+16),a+=32;else{if(t>37450)throw new Error("bai index contains too many bins, please use CSI");{const r=e.readInt32LE(a);a+=4;const o=new Array(r);for(let h=0;h<r;h++){const r=s(e,a);a+=8;const l=s(e,a);a+=8,n=d(n,r),o[h]=new i(r,l,t)}l[t]=o}}}const f=e.readInt32LE(a);a+=4;const u=new Array(f);for(let t=0;t<f;t++){const r=s(e,a);a+=8,n=d(n,r),u[t]=r}o[t]={binIndex:l,linearIndex:u,stats:h}}return{bai:!0,firstDataLine:n,maxBlockSize:65536,indices:o,refCount:r}}async indexCov(t,e,r,n={}){const s=16384,i=void 0!==e,a=(await this.parse(n)).indices[t];if(!a)return[];const{linearIndex:o=[],stats:h}=a;if(0===o.length)return[];const l=void 0===r?(o.length-1)*s:(c=r)-c%s+16384;var c;const d=void 0===e?0:function(t){return t-t%16384}(e),f=new Array(i?(l-d)/s:o.length-1),u=o[o.length-1].blockPosition;if(l>(o.length-1)*s)throw new Error("query outside of range of linear index");let g=o[d/s].blockPosition;for(let t=d/s,e=0;t<l/s;t++,e++)f[e]={score:o[t+1].blockPosition-g,start:t*s,end:t*s+s},g=o[t+1].blockPosition;return f.map((t=>({...t,score:t.score*((null==h?void 0:h.lineCount)||0)/u})))}async blocksForRange(t,e,r,n={}){e<0&&(e=0);const s=await this.parse(n);if(!s)return[];const i=s.indices[t];if(!i)return[];const a=(h=r,[[0,0],[1+((o=e)>>26),1+((h-=1)>>26)],[9+(o>>23),9+(h>>23)],[73+(o>>20),73+(h>>20)],[585+(o>>17),585+(h>>17)],[4681+(o>>14),4681+(h>>14)]]);var o,h;const c=[];for(const[t,e]of a)for(let r=t;r<=e;r++)if(i.binIndex[r]){const t=i.binIndex[r];for(const e of t)c.push(e)}const d=i.linearIndex.length;let f;const u=Math.min(e>>14,d-1),g=Math.min(r>>14,d-1);for(let t=u;t<=g;++t){const e=i.linearIndex[t];e&&(!f||e.compareTo(f)<0)&&(f=e)}return l(c,f)}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch((t=>{throw this.setupP=void 0,t}))),this.setupP}async hasRefSeq(t,e={}){var r;return!!(null===(r=(await this.parse(e)).indices[t])||void 0===r?void 0:r.binIndex)}}var b=r(35451),m=r(91454),p=r(7706),w=r(45834),_=r(47046),y=r(16308),v=r.n(y);function E(t,e){return Math.floor(t/2**e)}class x extends u{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e){var r,n;return(null===(n=null===(r=(await this.parse(e)).indices[t])||void 0===r?void 0:r.stats)||void 0===n?void 0:n.lineCount)||0}async indexCov(){return[]}parseAuxData(t,e){const r=t.readInt32LE(e),n=65536&r?"zero-based-half-open":"1-based-closed",s={0:"generic",1:"SAM",2:"VCF"}[15&r];if(!s)throw new Error(`invalid Tabix preset format flags ${r}`);const i={ref:t.readInt32LE(e+4),start:t.readInt32LE(e+8),end:t.readInt32LE(e+12)},a=t.readInt32LE(e+16),o=a?String.fromCharCode(a):"",h=t.readInt32LE(e+20),l=t.readInt32LE(e+24);return{columnNumbers:i,coordinateType:n,metaValue:a,metaChar:o,skipLines:h,format:s,formatFlags:r,...f(t.subarray(e+28,e+28+l),this.renameRefSeq)}}async _parse(t){const e=await this.filehandle.readFile(t),r=await(0,p.unzip)(e);let n;if(21582659===r.readUInt32LE(0))n=1;else{if(38359875!==r.readUInt32LE(0))throw new Error("Not a CSI file");n=2}this.minShift=r.readInt32LE(4),this.depth=r.readInt32LE(8),this.maxBinNumber=((1<<3*(this.depth+1))-1)/7;const a=r.readInt32LE(12),o=a>=30?this.parseAuxData(r,16):void 0,h=r.readInt32LE(16+a);let l,f=16+a+4;const u=new Array(h);for(let t=0;t<h;t++){const e=r.readInt32LE(f);f+=4;const n={};let a;for(let t=0;t<e;t++){const t=r.readUInt32LE(f);if(f+=4,t>this.maxBinNumber)a=c(r,f+28),f+=44;else{l=d(l,s(r,f)),f+=8;const e=r.readInt32LE(f);f+=4;const a=new Array(e);for(let n=0;n<e;n+=1){const e=s(r,f);f+=8;const o=s(r,f);f+=8,l=d(l,e),a[n]=new i(e,o,t)}n[t]=a}}u[t]={binIndex:n,stats:a}}return{csiVersion:n,firstDataLine:l,indices:u,refCount:h,csi:!0,maxBlockSize:65536,...o}}async blocksForRange(t,e,r,s={}){e<0&&(e=0);const i=await this.parse(s),a=null==i?void 0:i.indices[t];if(!a)return[];const o=this.reg2bins(e,r);if(0===o.length)return[];const h=[];for(const[t,e]of o)for(let r=t;r<=e;r++)if(a.binIndex[r]){const t=a.binIndex[r];for(const e of t)h.push(e)}return l(h,new n(0,0))}reg2bins(t,e){(t-=1)<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,n=0,s=this.minShift+3*this.depth;const i=[];for(;r<=this.depth;s-=3,n+=1*2**(3*r),r+=1){const r=n+E(t,s),a=n+E(e,s);if(a-r+i.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);i.push([r,a])}return i}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch((t=>{throw this.setupP=void 0,t}))),this.setupP}async hasRefSeq(t,e={}){var r;return!!(null===(r=(await this.parse(e)).indices[t])||void 0===r?void 0:r.binIndex)}}const I="=ACMGRSVTWYHKDBN".split(""),k="MIDNSHP=X???????".split("");class S{constructor(t){this.data={},this._tagList=[],this._allTagsParsed=!1;const{bytes:e,fileOffset:r}=t,{byteArray:n,start:s}=e;this.data={start:n.readInt32LE(s+8)},this.bytes=e,this._id=r,this._refID=n.readInt32LE(s+4),this.flags=(4294901760&n.readInt32LE(s+16))>>16}get(t){return this[t]?(this.data[t]||(this.data[t]=this[t]()),this.data[t]):this._get(t.toLowerCase())}end(){return this.get("start")+this.get("length_on_ref")}seq_id(){return this._refID}_get(t){return t in this.data||(this.data[t]=this._parseTag(t)),this.data[t]}_tags(){this._parseAllTags();let t=["seq"];this.isSegmentUnmapped()||t.push("start","end","strand","score","qual","MQ","CIGAR","length_on_ref","template_length"),this.isPaired()&&t.push("next_segment_position","pair_orientation"),t=t.concat(this._tagList||[]);for(const e of Object.keys(this.data))e.startsWith("_")||"next_seq_id"===e||t.push(e);const e={};return t.filter((t=>{if(t in this.data&&void 0===this.data[t]||"CG"===t||"cg"===t)return!1;const r=t.toLowerCase(),n=e[r];return e[r]=!0,!n}))}parent(){}children(){return this.get("subfeatures")}id(){return this._id}mq(){const t=(65280&this.get("_bin_mq_nl"))>>8;return 255===t?void 0:t}score(){return this.get("mq")}qual(){var t;return null===(t=this.qualRaw())||void 0===t?void 0:t.join(" ")}qualRaw(){if(this.isSegmentUnmapped())return;const{start:t,byteArray:e}=this.bytes,r=t+36+this.get("_l_read_name")+4*this.get("_n_cigar_op")+this.get("_seq_bytes"),n=this.get("seq_length");return e.subarray(r,r+n)}strand(){return this.isReverseComplemented()?-1:1}multi_segment_next_segment_strand(){if(!this.isMateUnmapped())return this.isMateReverseComplemented()?-1:1}name(){return this.get("_read_name")}_read_name(){const t=this.get("_l_read_name"),{byteArray:e,start:r}=this.bytes;return e.toString("ascii",r+36,r+36+t-1)}_parseTag(t){if(this._allTagsParsed)return;const{byteArray:e,start:r}=this.bytes;let n=this._tagOffset||r+36+this.get("_l_read_name")+4*this.get("_n_cigar_op")+this.get("_seq_bytes")+this.get("seq_length");const s=this.bytes.end;let i;for(;n<s&&i!==t;){const r=String.fromCharCode(e[n],e[n+1]);i=r.toLowerCase();const a=String.fromCharCode(e[n+2]);let o;switch(n+=3,a){case"A":o=String.fromCharCode(e[n]),n+=1;break;case"i":o=e.readInt32LE(n),n+=4;break;case"I":o=e.readUInt32LE(n),n+=4;break;case"c":o=e.readInt8(n),n+=1;break;case"C":o=e.readUInt8(n),n+=1;break;case"s":o=e.readInt16LE(n),n+=2;break;case"S":o=e.readUInt16LE(n),n+=2;break;case"f":o=e.readFloatLE(n),n+=4;break;case"Z":case"H":for(o="";n<=s;){const t=e[n++];if(0===t)break;o+=String.fromCharCode(t)}break;case"B":{o="";const t=e[n++],s=String.fromCharCode(t),i=e.readInt32LE(n);if(n+=4,"i"===s)if("CG"===r)for(let t=0;t<i;t++){const t=e.readInt32LE(n);o+=(t>>4)+k[15&t],n+=4}else for(let t=0;t<i;t++)o+=e.readInt32LE(n),t+1<i&&(o+=","),n+=4;if("I"===s)if("CG"===r)for(let t=0;t<i;t++){const t=e.readUInt32LE(n);o+=(t>>4)+k[15&t],n+=4}else for(let t=0;t<i;t++)o+=e.readUInt32LE(n),t+1<i&&(o+=","),n+=4;if("s"===s)for(let t=0;t<i;t++)o+=e.readInt16LE(n),t+1<i&&(o+=","),n+=2;if("S"===s)for(let t=0;t<i;t++)o+=e.readUInt16LE(n),t+1<i&&(o+=","),n+=2;if("c"===s)for(let t=0;t<i;t++)o+=e.readInt8(n),t+1<i&&(o+=","),n+=1;if("C"===s)for(let t=0;t<i;t++)o+=e.readUInt8(n),t+1<i&&(o+=","),n+=1;if("f"===s)for(let t=0;t<i;t++)o+=e.readFloatLE(n),t+1<i&&(o+=","),n+=4;break}default:console.warn(`Unknown BAM tag type '${a}', tags may be incomplete`),o=void 0,n=s}if(this._tagOffset=n,this._tagList.push(r),i===t)return o;this.data[i]=o}this._allTagsParsed=!0}_parseAllTags(){this._parseTag("")}_parseCigar(t){return t.match(/\d+\D/g).map((t=>[/\D/.exec(t)[0].toUpperCase(),Number.parseInt(t,10)]))}isPaired(){return!!(1&this.flags)}isProperlyPaired(){return!!(2&this.flags)}isSegmentUnmapped(){return!!(4&this.flags)}isMateUnmapped(){return!!(8&this.flags)}isReverseComplemented(){return!!(16&this.flags)}isMateReverseComplemented(){return!!(32&this.flags)}isRead1(){return!!(64&this.flags)}isRead2(){return!!(128&this.flags)}isSecondary(){return!!(256&this.flags)}isFailedQc(){return!!(512&this.flags)}isDuplicate(){return!!(1024&this.flags)}isSupplementary(){return!!(2048&this.flags)}cigar(){if(this.isSegmentUnmapped())return;const{byteArray:t,start:e}=this.bytes,r=this.get("_n_cigar_op");let n=e+36+this.get("_l_read_name");const s=this.get("seq_length");let i="",a=0,o=t.readInt32LE(n),h=o>>4,l=k[15&o];if("S"===l&&h===s)return n+=4,o=t.readInt32LE(n),h=o>>4,l=k[15&o],"N"!==l&&console.warn("CG tag with no N tag"),this.data.length_on_ref=h,this.get("CG");for(let e=0;e<r;++e)o=t.readInt32LE(n),h=o>>4,l=k[15&o],i+=h+l,"H"!==l&&"S"!==l&&"I"!==l&&(a+=h),n+=4;return this.data.length_on_ref=a,i}length_on_ref(){return this.data.length_on_ref||this.get("cigar"),this.data.length_on_ref}_n_cigar_op(){return 65535&this.get("_flag_nc")}_l_read_name(){return 255&this.get("_bin_mq_nl")}_seq_bytes(){return this.get("seq_length")+1>>1}getReadBases(){return this.seq()}seq(){const{byteArray:t,start:e}=this.bytes,r=e+36+this.get("_l_read_name")+4*this.get("_n_cigar_op"),n=this.get("_seq_bytes"),s=this.get("seq_length");let i="",a=0;for(let e=0;e<n;++e){const n=t[r+e];i+=I[(240&n)>>4],a++,a<s&&(i+=I[15&n],a++)}return i}getPairOrientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this._refID===this._next_refid()){const t=this.isReverseComplemented()?"R":"F",e=this.isMateReverseComplemented()?"R":"F";let r=" ",n=" ";this.isRead1()?(r="1",n="2"):this.isRead2()&&(r="2",n="1");const s=[];return this.template_length()>0?(s[0]=t,s[1]=r,s[2]=e,s[3]=n):(s[2]=t,s[3]=r,s[0]=e,s[1]=n),s.join("")}return""}_bin_mq_nl(){return this.bytes.byteArray.readInt32LE(this.bytes.start+12)}_flag_nc(){return this.bytes.byteArray.readInt32LE(this.bytes.start+16)}seq_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+20)}_next_refid(){return this.bytes.byteArray.readInt32LE(this.bytes.start+24)}_next_pos(){return this.bytes.byteArray.readInt32LE(this.bytes.start+28)}template_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+32)}toJSON(){const t={};for(const e of Object.keys(this))e.startsWith("_")||"bytes"===e||(t[e]=this[e]);return t}}function P(t){const e=t.split(/\r?\n/),r=[];for(const t of e){const[e,...n]=t.split(/\t/);e&&r.push({tag:e.slice(1),data:n.map((t=>{const e=t.indexOf(":");return{tag:t.slice(0,e),value:t.slice(e+1)}}))})}return r}const T=21840194;class L{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}class C{constructor({bamFilehandle:t,bamPath:e,bamUrl:r,baiPath:n,baiFilehandle:s,baiUrl:i,csiPath:a,csiFilehandle:o,csiUrl:h,htsget:l,yieldThreadTime:c=100,renameRefSeqs:d=t=>t}){if(this.htsget=!1,this.featureCache=new _.A({cache:new(v())({maxSize:50}),fill:async(t,e)=>{const{chunk:r,opts:n}=t,{data:s,cpositions:i,dpositions:a}=await this._readChunk({chunk:r,opts:{...n,signal:e}});return this.readBamFeatures(s,i,a,r)}}),this.renameRefSeq=d,t)this.bam=t;else if(e)this.bam=new w.EY(e);else if(r)this.bam=new w.Tx(r);else{if(!l)throw new Error("unable to initialize bam");this.htsget=!0,this.bam=new L}if(o)this.index=new x({filehandle:o});else if(a)this.index=new x({filehandle:new w.EY(a)});else if(h)this.index=new x({filehandle:new w.Tx(h)});else if(s)this.index=new g({filehandle:s});else if(n)this.index=new g({filehandle:new w.EY(n)});else if(i)this.index=new g({filehandle:new w.Tx(i)});else if(e)this.index=new g({filehandle:new w.EY(`${e}.bai`)});else if(r)this.index=new g({filehandle:new w.Tx(`${r}.bai`)});else{if(!l)throw new Error("unable to infer index format");this.htsget=!0}this.yieldThreadTime=c}async getHeaderPre(t){const e=function(t={}){return"aborted"in t?{signal:t}:t}(t);if(!this.index)return;const r=await this.index.parse(e),n=r.firstDataLine?r.firstDataLine.blockPosition+65535:void 0;let s;if(n){const t=n+65536,r=await this.bam.read(b.hp.alloc(t),0,t,0,e);if(!r.bytesRead)throw new Error("Error reading header");s=r.buffer.subarray(0,Math.min(r.bytesRead,n))}else s=await this.bam.readFile(e);const i=await(0,p.unzip)(s);if(i.readInt32LE(0)!==T)throw new Error("Not a BAM file");const a=i.readInt32LE(4);this.header=i.toString("utf8",8,8+a);const{chrToIndex:o,indexToChr:h}=await this._readRefSeqs(a+8,65535,e);return this.chrToIndex=o,this.indexToChr=h,P(this.header)}getHeader(t){return this.headerP||(this.headerP=this.getHeaderPre(t).catch((t=>{throw this.headerP=void 0,t}))),this.headerP}async getHeaderText(t={}){return await this.getHeader(t),this.header}async _readRefSeqs(t,e,r){if(t>e)return this._readRefSeqs(t,2*e,r);const n=e+65536,{bytesRead:s,buffer:i}=await this.bam.read(b.hp.alloc(n),0,e,0,r);if(!s)throw new Error("Error reading refseqs from header");const a=await(0,p.unzip)(i.subarray(0,Math.min(s,e))),o=a.readInt32LE(t);let h=t+4;const l={},c=[];for(let n=0;n<o;n+=1){const s=a.readInt32LE(h),i=this.renameRefSeq(a.toString("utf8",h+4,h+4+s-1)),o=a.readInt32LE(h+s+4);if(l[i]=n,c.push({refName:i,length:o}),h=h+8+s,h>a.length)return console.warn(`BAM header is very big.  Re-fetching ${e} bytes.`),this._readRefSeqs(t,2*e,r)}return{chrToIndex:l,indexToChr:c}}async getRecordsForRange(t,e,r,n){return async function(t){let e=[];for await(const r of t)e=e.concat(r);return e}(this.streamRecordsForRange(t,e,r,n))}async*streamRecordsForRange(t,e,r,n){var s;await this.getHeader(n);const i=null===(s=this.chrToIndex)||void 0===s?void 0:s[t];if(void 0!==i&&this.index){const t=await this.index.blocksForRange(i,e-1,r,n);yield*this._fetchChunkFeatures(t,i,e,r,n)}else yield[]}async*_fetchChunkFeatures(t,e,r,n,s={}){const{viewAsPairs:i}=s,a=[];let o=!1;for(const i of t){const t=await this.featureCache.get(i.toString(),{chunk:i,opts:s},s.signal),h=[];for(const s of t)if(s.seq_id()===e){if(s.get("start")>=n){o=!0;break}s.get("end")>=r&&h.push(s)}if(a.push(h),yield h,o)break}(function(t){if(t&&t.aborted){if("undefined"==typeof DOMException){const t=new Error("aborted");throw t.code="ERR_ABORTED",t}throw new DOMException("aborted","AbortError")}})(s.signal),i&&(yield this.fetchPairs(e,a,s))}async fetchPairs(t,e,r){const{pairAcrossChr:n,maxInsertSize:s=2e5}=r,i={},a={};e.map((t=>{const e={};for(const r of t){const t=r.name(),n=r.id();e[t]||(e[t]=0),e[t]++,a[n]=1}for(const[t,r]of Object.entries(e))1===r&&(i[t]=!0)}));const o=[];e.map((e=>{for(const a of e){const e=a.name(),h=a.get("start"),l=a._next_pos(),c=a._next_refid();this.index&&i[e]&&(n||c===t&&Math.abs(h-l)<s)&&o.push(this.index.blocksForRange(c,l,l+1,r))}}));const h=new Map,l=await Promise.all(o);for(const t of l.flat())h.has(t.toString())||h.set(t.toString(),t);return(await Promise.all([...h.values()].map((async t=>{const{data:e,cpositions:n,dpositions:s,chunk:o}=await this._readChunk({chunk:t,opts:r}),h=[];for(const t of await this.readBamFeatures(e,n,s,o))i[t.get("name")]&&!a[t.id()]&&h.push(t);return h})))).flat()}async _readRegion(t,e,r={}){const{bytesRead:n,buffer:s}=await this.bam.read(b.hp.alloc(e),0,e,t,r);return s.subarray(0,Math.min(n,e))}async _readChunk({chunk:t,opts:e}){const r=await this._readRegion(t.minv.blockPosition,t.fetchedSize(),e),{buffer:n,cpositions:s,dpositions:i}=await(0,p.i2)(r,t);return{data:n,cpositions:s,dpositions:i,chunk:t}}async readBamFeatures(t,e,r,n){let s=0;const i=[];let a=0,o=+Date.now();for(;s+4<t.length;){const l=s+4+t.readInt32LE(s)-1;if(r){for(;s+n.minv.dataPosition>=r[a++];);a--}if(l<t.length){const c=new S({bytes:{byteArray:t,start:s,end:l},fileOffset:e.length>0?256*e[a]+(s-r[a])+n.minv.dataPosition+1:m.A.signed(t.slice(s,l))});i.push(c),this.yieldThreadTime&&+Date.now()-o>this.yieldThreadTime&&(await h(1),o=+Date.now())}s=l+1}return i}async hasRefSeq(t){var e,r;const n=null===(e=this.chrToIndex)||void 0===e?void 0:e[t];return void 0!==n&&(null===(r=this.index)||void 0===r?void 0:r.hasRefSeq(n))}async lineCount(t){var e;const r=null===(e=this.chrToIndex)||void 0===e?void 0:e[t];return void 0!==r&&this.index?this.index.lineCount(r):0}async indexCov(t,e,r){var n;if(!this.index)return[];await this.index.parse();const s=null===(n=this.chrToIndex)||void 0===n?void 0:n[t];return void 0===s?[]:this.index.indexCov(s,e,r)}async blocksForRange(t,e,r,n){var s;if(!this.index)return[];await this.index.parse();const i=null===(s=this.chrToIndex)||void 0===s?void 0:s[t];return void 0===i?[]:this.index.blocksForRange(i,e,r,n)}}async function R(t,e){const r=await Promise.all(t.map((async t=>{const{url:r,headers:n}=t;if(r.startsWith("data:"))return b.hp.from(r.split(",")[1],"base64");{const{referer:t,...s}=n,i=await fetch(r,{...e,headers:{...null==e?void 0:e.headers,...s}});if(!i.ok)throw new Error(`HTTP ${i.status} fetching ${r}: ${await i.text()}`);return b.hp.from(await i.arrayBuffer())}})));return b.hp.concat(await Promise.all(r.map((t=>(0,p.unzip)(t)))))}class A extends C{constructor(t){super({htsget:!0}),this.baseUrl=t.baseUrl,this.trackId=t.trackId}async*streamRecordsForRange(t,e,r,n){var s;const i=`${this.baseUrl}/${this.trackId}?referenceName=${t}&start=${e}&end=${r}&format=BAM`,a=null===(s=this.chrToIndex)||void 0===s?void 0:s[t];if(void 0===a)yield[];else{const s=await fetch(i,{...n});if(!s.ok)throw new Error(`HTTP ${s.status} fetching ${i}: ${await s.text()}`);const o=await s.json(),h=await R(o.htsget.urls.slice(1),n);yield*this._fetchChunkFeatures([{buffer:h,_fetchedSize:void 0,bin:0,compareTo:()=>0,toUniqueString:()=>`${t}_${e}_${r}`,fetchedSize:()=>0,minv:{dataPosition:0,blockPosition:0,compareTo:()=>0},maxv:{dataPosition:Number.MAX_SAFE_INTEGER,blockPosition:0,compareTo:()=>0},toString:()=>`${t}_${e}_${r}`}],a,e,r,n)}}async _readChunk({chunk:t}){if(!t.buffer)throw new Error("expected chunk.buffer in htsget");return{data:t.buffer,cpositions:[],dpositions:[],chunk:t}}async getHeader(t={}){const e=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(e,t);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${e}: ${await r.text()}`);const n=await r.json(),s=await R(n.htsget.urls,t);if(s.readInt32LE(0)!==T)throw new Error("Not a BAM file");const i=s.readInt32LE(4),a=P(s.toString("utf8",8,8+i)),o=[],h={},l=a.filter((t=>"SQ"===t.tag));for(const[t,e]of l.entries()){let r="",n=0;for(const t of e.data)"SN"===t.tag?r=t.value:"LN"===t.tag&&(n=+t.value);h[r]=t,o[t]={refName:r,length:n}}return this.chrToIndex=h,this.indexToChr=o,a}}},7706:(t,e,r)=>{r.d(e,{sG:()=>d,unzip:()=>a,i2:()=>o});var n=r(35451),s=r(45834),i=r(57864);async function a(t){try{let e,r=0,s=0;const a=[];let o,h=0;do{const n=t.subarray(r);if(o=new i.Inflate,({strm:e}=o),o.push(n,i.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);r+=e.next_in,a[s]=o.result,h+=a[s].length,s+=1}while(e.avail_in);const l=new Uint8Array(h);for(let t=0,e=0;t<a.length;t++)l.set(a[t],e),e+=a[t].length;return n.hp.from(l)}catch(t){if(`${t}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw t}}async function o(t,e){try{let r;const{minv:s,maxv:a}=e;let o=s.blockPosition,h=s.dataPosition;const l=[],c=[],d=[];let f=0,u=0;do{const e=t.subarray(o-s.blockPosition),n=new i.Inflate;if(({strm:r}=n),n.push(e,i.Z_SYNC_FLUSH),n.err)throw new Error(n.msg);const g=n.result;l.push(g);let b=g.length;c.push(o),d.push(h),1===l.length&&s.dataPosition&&(l[0]=l[0].subarray(s.dataPosition),b=l[0].length);const m=o;if(o+=r.next_in,h+=b,m>=a.blockPosition){l[u]=l[u].subarray(0,a.blockPosition===s.blockPosition?a.dataPosition-s.dataPosition+1:a.dataPosition+1),c.push(o),d.push(h),f+=l[u].length;break}f+=l[u].length,u++}while(r.avail_in);const g=new Uint8Array(f);for(let t=0,e=0;t<l.length;t++)g.set(l[t],e),e+=l[t].length;return{buffer:n.hp.from(g),cpositions:c,dpositions:d}}catch(t){if(`${t}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw t}}var h=r(59086),l=r.n(h);class c{constructor({filehandle:t,path:e}){if(t)this.filehandle=t;else{if(!e)throw new TypeError("either filehandle or path must be defined");this.filehandle=new s.EY(e)}}_readLongWithOverflow(t,e=0,r=!0){const n=l().fromBytesLE(t.slice(e,e+8),r);if(n.greaterThan(Number.MAX_SAFE_INTEGER)||n.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return n.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let t=n.hp.allocUnsafe(8);await this.filehandle.read(t,0,8,0);const e=this._readLongWithOverflow(t,0,!0);if(!e)return[[0,0]];const r=new Array(e+1);r[0]=[0,0];const s=16*e;if(s>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");t=n.hp.allocUnsafe(s),await this.filehandle.read(t,0,s,8);for(let n=0;n<e;n+=1){const e=this._readLongWithOverflow(t,16*n),s=this._readLongWithOverflow(t,16*n+8);r[n+1]=[e,s]}return r}async getLastBlock(){const t=await this._getIndex();if(t.length)return t[t.length-1]}async getRelevantBlocksForRead(t,e){const r=e+t;if(0===t)return[];const n=await this._getIndex(),s=[],i=(t,r)=>{const n=t[1],s=r?r[1]:1/0;return n<=e&&s>e?0:n<e?-1:1};let a=0,o=n.length-1,h=Math.floor(n.length/2),l=i(n[h],n[h+1]);for(;0!==l;)l>0?o=h-1:l<0&&(a=h+1),h=Math.ceil((o-a)/2)+a,l=i(n[h],n[h+1]);s.push(n[h]);let c=h+1;for(;c<n.length&&(s.push(n[c]),!(n[c][1]>=r));c+=1);return s[s.length-1][1]<r&&s.push([]),s}}class d{constructor({filehandle:t,path:e,gziFilehandle:r,gziPath:n}){if(t)this.filehandle=t;else{if(!e)throw new TypeError("either filehandle or path must be defined");this.filehandle=new s.EY(e)}if(!r&&!n&&!e)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:r,path:r||n||!e?`${e}.gzi`:n})}async stat(){const t=await this.filehandle.stat();return Object.assign(t,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,t]=await this.gzi.getLastBlock(),{size:e}=await this.filehandle.stat(),r=n.hp.allocUnsafe(4),{bytesRead:s}=await this.filehandle.read(r,0,4,e-28-4);if(4!==s)throw new Error("read error");return t+r.readUInt32LE(0)}async _readAndUncompressBlock(t,[e],[r]){let n=r;n||(n=(await this.filehandle.stat()).size);const s=n-e;return await this.filehandle.read(t,0,s,e),await a(t.slice(0,s))}async read(t,e,r,s){const i=await this.gzi.getRelevantBlocksForRead(r,s),a=n.hp.allocUnsafe(65536);let o=e,h=0;for(let e=0;e<i.length-1;e+=1){const n=await this._readAndUncompressBlock(a,i[e],i[e+1]),[,l]=i[e],c=l>=s?0:s-l,d=Math.min(s+r,l+n.length)-l;c>=0&&c<n.length&&(n.copy(t,o,c,d),o+=d-c,h+=d-c)}return{bytesRead:h,buffer:t}}}},91454:(t,e,r)=>{r.d(e,{A:()=>a});let n=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(n=new Int32Array(n));var s=r(35451);const i=(t,e)=>s.hp.from(t,e),a=function(t,e){const r=(t,r)=>e(i(t),r)>>>0;return r.signed=(t,r)=>e(i(t),r),r.unsigned=r,r.model="crc-32",r}(0,((t,e)=>{let r=0===e?0:~e;for(let e=0;e<t.length;e++)r=n[255&(r^t[e])]^r>>>8;return~r}))}}]);
+//# sourceMappingURL=4133.451f5e47.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4133.451f5e47.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4133.451f5e47.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@gmod/bam/src/virtualOffset.ts","../../../node_modules/@gmod/bam/src/chunk.ts","../../../node_modules/@gmod/bam/src/util.ts","../../../node_modules/@gmod/bam/src/indexFile.ts","../../../node_modules/@gmod/bam/src/bai.ts","../../../node_modules/@gmod/bam/src/csi.ts","../../../node_modules/@gmod/bam/src/constants.ts","../../../node_modules/@gmod/bam/src/record.ts","../../../node_modules/@gmod/bam/src/sam.ts","../../../node_modules/@gmod/bam/src/bamFile.ts","../../../node_modules/@gmod/bam/src/htsget.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts","../../../node_modules/crc/mjs/calculators/crc32.js","../../../node_modules/crc/mjs/create_buffer.js","../../../node_modules/crc/mjs/crc32.js","../../../node_modules/crc/mjs/define_crc.js"],"sourcesContent":["class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","export default class VirtualOffset {\n  public blockPosition: number\n  public dataPosition: number\n  constructor(blockPosition: number, dataPosition: number) {\n    this.blockPosition = blockPosition // < offset of the compressed data block\n    this.dataPosition = dataPosition // < offset into the uncompressed data\n  }\n\n  toString() {\n    return `${this.blockPosition}:${this.dataPosition}`\n  }\n\n  compareTo(b: VirtualOffset) {\n    return (\n      this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition\n    )\n  }\n\n  static min(...args: VirtualOffset[]) {\n    let min\n    let i = 0\n    for (; !min; i += 1) {\n      min = args[i]\n    }\n    for (; i < args.length; i += 1) {\n      if (min.compareTo(args[i]) > 0) {\n        min = args[i]\n      }\n    }\n    return min\n  }\n}\nexport function fromBytes(bytes: Buffer, offset = 0, bigendian = false) {\n  if (bigendian) {\n    throw new Error('big-endian virtual file offsets not implemented')\n  }\n\n  return new VirtualOffset(\n    bytes[offset + 7] * 0x10000000000 +\n      bytes[offset + 6] * 0x100000000 +\n      bytes[offset + 5] * 0x1000000 +\n      bytes[offset + 4] * 0x10000 +\n      bytes[offset + 3] * 0x100 +\n      bytes[offset + 2],\n    (bytes[offset + 1] << 8) | bytes[offset],\n  )\n}\n","import VirtualOffset from './virtualOffset'\n\n// little class representing a chunk in the index\nexport default class Chunk {\n  public buffer?: Buffer\n\n  constructor(\n    public minv: VirtualOffset,\n    public maxv: VirtualOffset,\n    public bin: number,\n    public _fetchedSize?: number,\n  ) {}\n\n  toUniqueString() {\n    return `${this.minv.toString()}..${this.maxv.toString()} (bin ${\n      this.bin\n    }, fetchedSize ${this.fetchedSize()})`\n  }\n\n  toString() {\n    return this.toUniqueString()\n  }\n\n  compareTo(b: Chunk) {\n    return (\n      this.minv.compareTo(b.minv) ||\n      this.maxv.compareTo(b.maxv) ||\n      this.bin - b.bin\n    )\n  }\n\n  fetchedSize() {\n    if (this._fetchedSize !== undefined) {\n      return this._fetchedSize\n    }\n    return this.maxv.blockPosition + (1 << 16) - this.minv.blockPosition\n  }\n}\n","import Long from 'long'\nimport Chunk from './chunk'\nimport VirtualOffset from './virtualOffset'\n\nexport function timeout(ms: number) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nexport function longToNumber(long: Long) {\n  if (\n    long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n    long.lessThan(Number.MIN_SAFE_INTEGER)\n  ) {\n    throw new Error('integer overflow')\n  }\n  return long.toNumber()\n}\n\n/**\n * Properly check if the given AbortSignal is aborted.\n * Per the standard, if the signal reads as aborted,\n * this function throws either a DOMException AbortError, or a regular error\n * with a `code` attribute set to `ERR_ABORTED`.\n *\n * For convenience, passing `undefined` is a no-op\n *\n * @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted` attribute\n * @returns nothing\n */\nexport function checkAbortSignal(signal?: AbortSignal) {\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    // console.log('bam aborted!')\n    if (typeof DOMException === 'undefined') {\n      const e = new Error('aborted')\n      //@ts-ignore\n      e.code = 'ERR_ABORTED'\n      throw e\n    } else {\n      throw new DOMException('aborted', 'AbortError')\n    }\n  }\n}\n\n/**\n * Skips to the next tick, then runs `checkAbortSignal`.\n * Await this to inside an otherwise synchronous loop to\n * provide a place to break when an abort signal is received.\n * @param {AbortSignal} signal\n */\nexport async function abortBreakPoint(signal?: AbortSignal) {\n  await Promise.resolve()\n  checkAbortSignal(signal)\n}\n\nexport function canMergeBlocks(chunk1: Chunk, chunk2: Chunk) {\n  return (\n    chunk2.minv.blockPosition - chunk1.maxv.blockPosition < 65000 &&\n    chunk2.maxv.blockPosition - chunk1.minv.blockPosition < 5000000\n  )\n}\n\nexport interface BamOpts {\n  viewAsPairs?: boolean\n  pairAcrossChr?: boolean\n  maxInsertSize?: number\n  signal?: AbortSignal\n}\n\nexport interface BaseOpts {\n  signal?: AbortSignal\n}\n\nexport function makeOpts(obj: AbortSignal | BaseOpts = {}): BaseOpts {\n  return 'aborted' in obj ? ({ signal: obj } as BaseOpts) : obj\n}\n\nexport function optimizeChunks(chunks: Chunk[], lowest?: VirtualOffset) {\n  const mergedChunks: Chunk[] = []\n  let lastChunk: Chunk | undefined\n\n  if (chunks.length === 0) {\n    return chunks\n  }\n\n  chunks.sort((c0, c1) => {\n    const dif = c0.minv.blockPosition - c1.minv.blockPosition\n    return dif === 0 ? c0.minv.dataPosition - c1.minv.dataPosition : dif\n  })\n\n  for (const chunk of chunks) {\n    if (!lowest || chunk.maxv.compareTo(lowest) > 0) {\n      if (lastChunk === undefined) {\n        mergedChunks.push(chunk)\n        lastChunk = chunk\n      } else {\n        if (canMergeBlocks(lastChunk, chunk)) {\n          if (chunk.maxv.compareTo(lastChunk.maxv) > 0) {\n            lastChunk.maxv = chunk.maxv\n          }\n        } else {\n          mergedChunks.push(chunk)\n          lastChunk = chunk\n        }\n      }\n    }\n  }\n\n  return mergedChunks\n}\n\nexport function parsePseudoBin(bytes: Buffer, offset: number) {\n  const lineCount = longToNumber(\n    Long.fromBytesLE(\n      Array.prototype.slice.call(bytes, offset, offset + 8),\n      true,\n    ),\n  )\n  return { lineCount }\n}\n\nexport function findFirstData(\n  firstDataLine: VirtualOffset | undefined,\n  virtualOffset: VirtualOffset,\n) {\n  return firstDataLine\n    ? firstDataLine.compareTo(virtualOffset) > 0\n      ? virtualOffset\n      : firstDataLine\n    : virtualOffset\n}\n\nexport function parseNameBytes(\n  namesBytes: Buffer,\n  renameRefSeq: (arg: string) => string = s => s,\n) {\n  let currRefId = 0\n  let currNameStart = 0\n  const refIdToName = []\n  const refNameToId: Record<string, number> = {}\n  for (let i = 0; i < namesBytes.length; i += 1) {\n    if (!namesBytes[i]) {\n      if (currNameStart < i) {\n        let refName = namesBytes.toString('utf8', currNameStart, i)\n        refName = renameRefSeq(refName)\n        refIdToName[currRefId] = refName\n        refNameToId[refName] = currRefId\n      }\n      currNameStart = i + 1\n      currRefId += 1\n    }\n  }\n  return { refNameToId, refIdToName }\n}\n","import { GenericFilehandle } from 'generic-filehandle'\nimport Chunk from './chunk'\nimport { BaseOpts } from './util'\n\nexport default abstract class IndexFile {\n  public filehandle: GenericFilehandle\n  public renameRefSeq: (s: string) => string\n\n  /**\n   * @param {filehandle} filehandle\n   * @param {function} [renameRefSeqs]\n   */\n  constructor({\n    filehandle,\n    renameRefSeq = (n: string) => n,\n  }: {\n    filehandle: GenericFilehandle\n    renameRefSeq?: (a: string) => string\n  }) {\n    this.filehandle = filehandle\n    this.renameRefSeq = renameRefSeq\n  }\n  public abstract lineCount(refId: number): Promise<number>\n  public abstract indexCov(\n    refId: number,\n    start?: number,\n    end?: number,\n  ): Promise<{ start: number; end: number; score: number }[]>\n\n  public abstract blocksForRange(\n    chrId: number,\n    start: number,\n    end: number,\n    opts?: BaseOpts,\n  ): Promise<Chunk[]>\n}\n","import VirtualOffset, { fromBytes } from './virtualOffset'\nimport Chunk from './chunk'\n\nimport { optimizeChunks, parsePseudoBin, findFirstData, BaseOpts } from './util'\nimport IndexFile from './indexFile'\n\nconst BAI_MAGIC = 21578050 // BAI\\1\n\nfunction roundDown(n: number, multiple: number) {\n  return n - (n % multiple)\n}\nfunction roundUp(n: number, multiple: number) {\n  return n - (n % multiple) + multiple\n}\n\nfunction reg2bins(beg: number, end: number) {\n  end -= 1\n  return [\n    [0, 0],\n    [1 + (beg >> 26), 1 + (end >> 26)],\n    [9 + (beg >> 23), 9 + (end >> 23)],\n    [73 + (beg >> 20), 73 + (end >> 20)],\n    [585 + (beg >> 17), 585 + (end >> 17)],\n    [4681 + (beg >> 14), 4681 + (end >> 14)],\n  ]\n}\n\nexport default class BAI extends IndexFile {\n  public setupP?: ReturnType<BAI['_parse']>\n\n  async lineCount(refId: number, opts?: BaseOpts) {\n    const indexData = await this.parse(opts)\n    return indexData.indices[refId]?.stats?.lineCount || 0\n  }\n\n  // fetch and parse the index\n  async _parse(opts?: BaseOpts) {\n    const bytes = (await this.filehandle.readFile(opts)) as Buffer\n\n    // check BAI magic numbers\n    if (bytes.readUInt32LE(0) !== BAI_MAGIC) {\n      throw new Error('Not a BAI file')\n    }\n\n    const refCount = bytes.readInt32LE(4)\n    const depth = 5\n    const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7\n\n    // read the indexes for each reference sequence\n    let curr = 8\n    let firstDataLine: VirtualOffset | undefined\n\n    type BinIndex = Record<string, Chunk[]>\n    type LinearIndex = VirtualOffset[]\n    const indices = new Array<{\n      binIndex: BinIndex\n      linearIndex: LinearIndex\n      stats?: { lineCount: number }\n    }>(refCount)\n    for (let i = 0; i < refCount; i++) {\n      // the binning index\n      const binCount = bytes.readInt32LE(curr)\n      let stats\n\n      curr += 4\n      const binIndex: Record<number, Chunk[]> = {}\n\n      for (let j = 0; j < binCount; j += 1) {\n        const bin = bytes.readUInt32LE(curr)\n        curr += 4\n        if (bin === binLimit + 1) {\n          curr += 4\n          stats = parsePseudoBin(bytes, curr + 16)\n          curr += 32\n        } else if (bin > binLimit + 1) {\n          throw new Error('bai index contains too many bins, please use CSI')\n        } else {\n          const chunkCount = bytes.readInt32LE(curr)\n          curr += 4\n          const chunks = new Array<Chunk>(chunkCount)\n          for (let k = 0; k < chunkCount; k++) {\n            const u = fromBytes(bytes, curr)\n            curr += 8\n            const v = fromBytes(bytes, curr)\n            curr += 8\n            firstDataLine = findFirstData(firstDataLine, u)\n            chunks[k] = new Chunk(u, v, bin)\n          }\n          binIndex[bin] = chunks\n        }\n      }\n\n      const linearCount = bytes.readInt32LE(curr)\n      curr += 4\n      // as we're going through the linear index, figure out the smallest\n      // virtual offset in the indexes, which tells us where the BAM header\n      // ends\n      const linearIndex = new Array<VirtualOffset>(linearCount)\n      for (let j = 0; j < linearCount; j++) {\n        const offset = fromBytes(bytes, curr)\n        curr += 8\n        firstDataLine = findFirstData(firstDataLine, offset)\n        linearIndex[j] = offset\n      }\n\n      indices[i] = { binIndex, linearIndex, stats }\n    }\n\n    return {\n      bai: true,\n      firstDataLine,\n      maxBlockSize: 1 << 16,\n      indices,\n      refCount,\n    }\n  }\n\n  async indexCov(\n    seqId: number,\n    start?: number,\n    end?: number,\n    opts: BaseOpts = {},\n  ): Promise<{ start: number; end: number; score: number }[]> {\n    const v = 16384\n    const range = start !== undefined\n    const indexData = await this.parse(opts)\n    const seqIdx = indexData.indices[seqId]\n    if (!seqIdx) {\n      return []\n    }\n    const { linearIndex = [], stats } = seqIdx\n    if (linearIndex.length === 0) {\n      return []\n    }\n    const e = end === undefined ? (linearIndex.length - 1) * v : roundUp(end, v)\n    const s = start === undefined ? 0 : roundDown(start, v)\n    const depths = range\n      ? new Array((e - s) / v)\n      : new Array(linearIndex.length - 1)\n    const totalSize = linearIndex[linearIndex.length - 1].blockPosition\n    if (e > (linearIndex.length - 1) * v) {\n      throw new Error('query outside of range of linear index')\n    }\n    let currentPos = linearIndex[s / v].blockPosition\n    for (let i = s / v, j = 0; i < e / v; i++, j++) {\n      depths[j] = {\n        score: linearIndex[i + 1].blockPosition - currentPos,\n        start: i * v,\n        end: i * v + v,\n      }\n      currentPos = linearIndex[i + 1].blockPosition\n    }\n    return depths.map(d => ({\n      ...d,\n      score: (d.score * (stats?.lineCount || 0)) / totalSize,\n    }))\n  }\n\n  async blocksForRange(\n    refId: number,\n    min: number,\n    max: number,\n    opts: BaseOpts = {},\n  ) {\n    if (min < 0) {\n      min = 0\n    }\n\n    const indexData = await this.parse(opts)\n    if (!indexData) {\n      return []\n    }\n    const ba = indexData.indices[refId]\n    if (!ba) {\n      return []\n    }\n\n    // List of bin #s that overlap min, max\n    const overlappingBins = reg2bins(min, max)\n    const chunks: Chunk[] = []\n\n    // Find chunks in overlapping bins.  Leaf bins (< 4681) are not pruned\n    for (const [start, end] of overlappingBins) {\n      for (let bin = start; bin <= end; bin++) {\n        if (ba.binIndex[bin]) {\n          const binChunks = ba.binIndex[bin]\n          for (const binChunk of binChunks) {\n            chunks.push(binChunk)\n          }\n        }\n      }\n    }\n\n    // Use the linear index to find minimum file position of chunks that could\n    // contain alignments in the region\n    const nintv = ba.linearIndex.length\n    let lowest: VirtualOffset | undefined\n    const minLin = Math.min(min >> 14, nintv - 1)\n    const maxLin = Math.min(max >> 14, nintv - 1)\n    for (let i = minLin; i <= maxLin; ++i) {\n      const vp = ba.linearIndex[i]\n      if (vp && (!lowest || vp.compareTo(lowest) < 0)) {\n        lowest = vp\n      }\n    }\n\n    return optimizeChunks(chunks, lowest)\n  }\n\n  async parse(opts: BaseOpts = {}) {\n    if (!this.setupP) {\n      this.setupP = this._parse(opts).catch(e => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async hasRefSeq(seqId: number, opts: BaseOpts = {}) {\n    const header = await this.parse(opts)\n    return !!header.indices[seqId]?.binIndex\n  }\n}\n","import { unzip } from '@gmod/bgzf-filehandle'\nimport VirtualOffset, { fromBytes } from './virtualOffset'\nimport Chunk from './chunk'\nimport {\n  optimizeChunks,\n  findFirstData,\n  parsePseudoBin,\n  parseNameBytes,\n  BaseOpts,\n} from './util'\n\nimport IndexFile from './indexFile'\n\nconst CSI1_MAGIC = 21582659 // CSI\\1\nconst CSI2_MAGIC = 38359875 // CSI\\2\n\nfunction lshift(num: number, bits: number) {\n  return num * 2 ** bits\n}\nfunction rshift(num: number, bits: number) {\n  return Math.floor(num / 2 ** bits)\n}\n\nexport default class CSI extends IndexFile {\n  private maxBinNumber = 0\n  private depth = 0\n  private minShift = 0\n\n  public setupP?: ReturnType<CSI['_parse']>\n\n  async lineCount(refId: number, opts?: BaseOpts) {\n    const indexData = await this.parse(opts)\n    return indexData.indices[refId]?.stats?.lineCount || 0\n  }\n\n  async indexCov() {\n    return []\n  }\n\n  parseAuxData(bytes: Buffer, offset: number) {\n    const formatFlags = bytes.readInt32LE(offset)\n    const coordinateType =\n      formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed'\n    const format = (\n      { 0: 'generic', 1: 'SAM', 2: 'VCF' } as Record<number, string>\n    )[formatFlags & 0xf]\n    if (!format) {\n      throw new Error(`invalid Tabix preset format flags ${formatFlags}`)\n    }\n    const columnNumbers = {\n      ref: bytes.readInt32LE(offset + 4),\n      start: bytes.readInt32LE(offset + 8),\n      end: bytes.readInt32LE(offset + 12),\n    }\n    const metaValue = bytes.readInt32LE(offset + 16)\n    const metaChar = metaValue ? String.fromCharCode(metaValue) : ''\n    const skipLines = bytes.readInt32LE(offset + 20)\n    const nameSectionLength = bytes.readInt32LE(offset + 24)\n\n    return {\n      columnNumbers,\n      coordinateType,\n      metaValue,\n      metaChar,\n      skipLines,\n      format,\n      formatFlags,\n      ...parseNameBytes(\n        bytes.subarray(offset + 28, offset + 28 + nameSectionLength),\n        this.renameRefSeq,\n      ),\n    }\n  }\n\n  // fetch and parse the index\n  async _parse(opts: { signal?: AbortSignal }) {\n    const buffer = await this.filehandle.readFile(opts)\n    const bytes = await unzip(buffer)\n\n    let csiVersion\n    // check TBI magic numbers\n    if (bytes.readUInt32LE(0) === CSI1_MAGIC) {\n      csiVersion = 1\n    } else if (bytes.readUInt32LE(0) === CSI2_MAGIC) {\n      csiVersion = 2\n    } else {\n      throw new Error('Not a CSI file')\n      // TODO: do we need to support big-endian CSI files?\n    }\n\n    this.minShift = bytes.readInt32LE(4)\n    this.depth = bytes.readInt32LE(8)\n    this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7\n    const auxLength = bytes.readInt32LE(12)\n    const aux = auxLength >= 30 ? this.parseAuxData(bytes, 16) : undefined\n    const refCount = bytes.readInt32LE(16 + auxLength)\n\n    type BinIndex = Record<string, Chunk[]>\n\n    // read the indexes for each reference sequence\n    let curr = 16 + auxLength + 4\n    let firstDataLine: VirtualOffset | undefined\n    const indices = new Array<{\n      binIndex: BinIndex\n      stats?: { lineCount: number }\n    }>(refCount)\n    for (let i = 0; i < refCount; i++) {\n      // the binning index\n      const binCount = bytes.readInt32LE(curr)\n      curr += 4\n      const binIndex: Record<string, Chunk[]> = {}\n      let stats // < provided by parsing a pseudo-bin, if present\n      for (let j = 0; j < binCount; j++) {\n        const bin = bytes.readUInt32LE(curr)\n        curr += 4\n        if (bin > this.maxBinNumber) {\n          stats = parsePseudoBin(bytes, curr + 28)\n          curr += 28 + 16\n        } else {\n          firstDataLine = findFirstData(firstDataLine, fromBytes(bytes, curr))\n          curr += 8\n          const chunkCount = bytes.readInt32LE(curr)\n          curr += 4\n          const chunks = new Array<Chunk>(chunkCount)\n          for (let k = 0; k < chunkCount; k += 1) {\n            const u = fromBytes(bytes, curr)\n            curr += 8\n            const v = fromBytes(bytes, curr)\n            curr += 8\n            firstDataLine = findFirstData(firstDataLine, u)\n            chunks[k] = new Chunk(u, v, bin)\n          }\n          binIndex[bin] = chunks\n        }\n      }\n\n      indices[i] = { binIndex, stats }\n    }\n\n    return {\n      csiVersion,\n      firstDataLine,\n      indices,\n      refCount,\n      csi: true,\n      maxBlockSize: 1 << 16,\n      ...aux,\n    }\n  }\n\n  async blocksForRange(\n    refId: number,\n    min: number,\n    max: number,\n    opts: BaseOpts = {},\n  ) {\n    if (min < 0) {\n      min = 0\n    }\n\n    const indexData = await this.parse(opts)\n    const ba = indexData?.indices[refId]\n    if (!ba) {\n      return []\n    }\n    const overlappingBins = this.reg2bins(min, max)\n\n    if (overlappingBins.length === 0) {\n      return []\n    }\n\n    const chunks = []\n    // Find chunks in overlapping bins.  Leaf bins (< 4681) are not pruned\n    for (const [start, end] of overlappingBins) {\n      for (let bin = start; bin <= end; bin++) {\n        if (ba.binIndex[bin]) {\n          const binChunks = ba.binIndex[bin]\n          for (const c of binChunks) {\n            chunks.push(c)\n          }\n        }\n      }\n    }\n\n    return optimizeChunks(chunks, new VirtualOffset(0, 0))\n  }\n\n  /**\n   * calculate the list of bins that may overlap with region [beg,end)\n   * (zero-based half-open)\n   */\n  reg2bins(beg: number, end: number) {\n    beg -= 1 // < convert to 1-based closed\n    if (beg < 1) {\n      beg = 1\n    }\n    if (end > 2 ** 50) {\n      end = 2 ** 34\n    } // 17 GiB ought to be enough for anybody\n    end -= 1\n    let l = 0\n    let t = 0\n    let s = this.minShift + this.depth * 3\n    const bins = []\n    for (; l <= this.depth; s -= 3, t += lshift(1, l * 3), l += 1) {\n      const b = t + rshift(beg, s)\n      const e = t + rshift(end, s)\n      if (e - b + bins.length > this.maxBinNumber) {\n        throw new Error(\n          `query ${beg}-${end} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`,\n        )\n      }\n      bins.push([b, e])\n    }\n    return bins\n  }\n\n  async parse(opts: BaseOpts = {}) {\n    if (!this.setupP) {\n      this.setupP = this._parse(opts).catch(e => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async hasRefSeq(seqId: number, opts: BaseOpts = {}) {\n    const header = await this.parse(opts)\n    return !!header.indices[seqId]?.binIndex\n  }\n}\n","export default {\n  //  the read is paired in sequencing, no matter whether it is mapped in a pair\n  BAM_FPAIRED: 1,\n  //  the read is mapped in a proper pair\n  BAM_FPROPER_PAIR: 2,\n  //  the read itself is unmapped; conflictive with BAM_FPROPER_PAIR\n  BAM_FUNMAP: 4,\n  //  the mate is unmapped\n  BAM_FMUNMAP: 8,\n  //  the read is mapped to the reverse strand\n  BAM_FREVERSE: 16,\n  //  the mate is mapped to the reverse strand\n  BAM_FMREVERSE: 32,\n  //  this is read1\n  BAM_FREAD1: 64,\n  //  this is read2\n  BAM_FREAD2: 128,\n  //  not primary alignment\n  BAM_FSECONDARY: 256,\n  //  QC failure\n  BAM_FQCFAIL: 512,\n  //  optical or PCR duplicate\n  BAM_FDUP: 1024,\n  //  supplementary alignment\n  BAM_FSUPPLEMENTARY: 2048,\n}\n","import Constants from './constants'\n\nconst SEQRET_DECODER = '=ACMGRSVTWYHKDBN'.split('')\nconst CIGAR_DECODER = 'MIDNSHP=X???????'.split('')\n\n/**\n * Class of each BAM record returned by this API.\n */\nexport default class BamRecord {\n  private data = {} as Record<string, any>\n  private bytes: { start: number; end: number; byteArray: Buffer }\n  private _id: number\n  private _tagOffset: number | undefined\n  private _tagList: string[] = []\n  private _allTagsParsed = false\n\n  public flags: any\n  public _refID: number\n  constructor(args: any) {\n    const { bytes, fileOffset } = args\n    const { byteArray, start } = bytes\n    this.data = { start: byteArray.readInt32LE(start + 8) }\n    this.bytes = bytes\n    this._id = fileOffset\n    this._refID = byteArray.readInt32LE(start + 4)\n    this.flags = (byteArray.readInt32LE(start + 16) & 0xffff0000) >> 16\n  }\n\n  get(field: string) {\n    //@ts-ignore\n    if (this[field]) {\n      //@ts-ignore\n      if (this.data[field]) {\n        return this.data[field]\n      }\n      //@ts-ignore\n      this.data[field] = this[field]()\n      return this.data[field]\n    }\n    return this._get(field.toLowerCase())\n  }\n\n  end() {\n    return this.get('start') + this.get('length_on_ref')\n  }\n\n  seq_id() {\n    return this._refID\n  }\n\n  // same as get(), except requires lower-case arguments.  used\n  // internally to save lots of calls to field.toLowerCase()\n  _get(field: string) {\n    if (field in this.data) {\n      return this.data[field]\n    }\n    this.data[field] = this._parseTag(field)\n    return this.data[field]\n  }\n\n  _tags() {\n    this._parseAllTags()\n\n    let tags = ['seq']\n\n    if (!this.isSegmentUnmapped()) {\n      tags.push(\n        'start',\n        'end',\n        'strand',\n        'score',\n        'qual',\n        'MQ',\n        'CIGAR',\n        'length_on_ref',\n        'template_length',\n      )\n    }\n    if (this.isPaired()) {\n      tags.push('next_segment_position', 'pair_orientation')\n    }\n    tags = tags.concat(this._tagList || [])\n\n    for (const k of Object.keys(this.data)) {\n      if (!k.startsWith('_') && k !== 'next_seq_id') {\n        tags.push(k)\n      }\n    }\n\n    const seen: Record<string, boolean> = {}\n    return tags.filter(t => {\n      if (\n        (t in this.data && this.data[t] === undefined) ||\n        t === 'CG' ||\n        t === 'cg'\n      ) {\n        return false\n      }\n\n      const lt = t.toLowerCase()\n      const s = seen[lt]\n      seen[lt] = true\n      return !s\n    })\n  }\n\n  parent() {\n    return\n  }\n\n  children() {\n    return this.get('subfeatures')\n  }\n\n  id() {\n    return this._id\n  }\n\n  // special parsers\n  /**\n   * Mapping quality score.\n   */\n  mq() {\n    const mq = (this.get('_bin_mq_nl') & 0xff00) >> 8\n    return mq === 255 ? undefined : mq\n  }\n\n  score() {\n    return this.get('mq')\n  }\n\n  qual() {\n    return this.qualRaw()?.join(' ')\n  }\n\n  qualRaw() {\n    if (this.isSegmentUnmapped()) {\n      return\n    }\n\n    const { start, byteArray } = this.bytes\n    const p =\n      start +\n      36 +\n      this.get('_l_read_name') +\n      this.get('_n_cigar_op') * 4 +\n      this.get('_seq_bytes')\n    const lseq = this.get('seq_length')\n    return byteArray.subarray(p, p + lseq)\n  }\n\n  strand() {\n    return this.isReverseComplemented() ? -1 : 1\n  }\n\n  multi_segment_next_segment_strand() {\n    if (this.isMateUnmapped()) {\n      return\n    }\n    return this.isMateReverseComplemented() ? -1 : 1\n  }\n\n  name() {\n    return this.get('_read_name')\n  }\n\n  _read_name() {\n    const nl = this.get('_l_read_name')\n    const { byteArray, start } = this.bytes\n    return byteArray.toString('ascii', start + 36, start + 36 + nl - 1)\n  }\n\n  /**\n   * Get the value of a tag, parsing the tags as far as necessary.\n   * Only called if we have not already parsed that field.\n   */\n  _parseTag(tagName?: string) {\n    // if all of the tags have been parsed and we're still being\n    // called, we already know that we have no such tag, because\n    // it would already have been cached.\n    if (this._allTagsParsed) {\n      return\n    }\n\n    const { byteArray, start } = this.bytes\n    let p =\n      this._tagOffset ||\n      start +\n        36 +\n        this.get('_l_read_name') +\n        this.get('_n_cigar_op') * 4 +\n        this.get('_seq_bytes') +\n        this.get('seq_length')\n\n    const blockEnd = this.bytes.end\n    let lcTag\n    while (p < blockEnd && lcTag !== tagName) {\n      const tag = String.fromCharCode(byteArray[p], byteArray[p + 1])\n      lcTag = tag.toLowerCase()\n      const type = String.fromCharCode(byteArray[p + 2])\n      p += 3\n\n      let value\n      switch (type) {\n        case 'A': {\n          value = String.fromCharCode(byteArray[p])\n          p += 1\n          break\n        }\n        case 'i': {\n          value = byteArray.readInt32LE(p)\n          p += 4\n          break\n        }\n        case 'I': {\n          value = byteArray.readUInt32LE(p)\n          p += 4\n          break\n        }\n        case 'c': {\n          value = byteArray.readInt8(p)\n          p += 1\n          break\n        }\n        case 'C': {\n          value = byteArray.readUInt8(p)\n          p += 1\n          break\n        }\n        case 's': {\n          value = byteArray.readInt16LE(p)\n          p += 2\n          break\n        }\n        case 'S': {\n          value = byteArray.readUInt16LE(p)\n          p += 2\n          break\n        }\n        case 'f': {\n          value = byteArray.readFloatLE(p)\n          p += 4\n          break\n        }\n        case 'Z':\n        case 'H': {\n          value = ''\n          while (p <= blockEnd) {\n            const cc = byteArray[p++]\n            if (cc === 0) {\n              break\n            } else {\n              value += String.fromCharCode(cc)\n            }\n          }\n          break\n        }\n        case 'B': {\n          value = ''\n          const cc = byteArray[p++]\n          const Btype = String.fromCharCode(cc)\n          const limit = byteArray.readInt32LE(p)\n          p += 4\n          if (Btype === 'i') {\n            if (tag === 'CG') {\n              for (let k = 0; k < limit; k++) {\n                const cigop = byteArray.readInt32LE(p)\n                const lop = cigop >> 4\n                const op = CIGAR_DECODER[cigop & 0xf]\n                value += lop + op\n                p += 4\n              }\n            } else {\n              for (let k = 0; k < limit; k++) {\n                value += byteArray.readInt32LE(p)\n                if (k + 1 < limit) {\n                  value += ','\n                }\n                p += 4\n              }\n            }\n          }\n          if (Btype === 'I') {\n            if (tag === 'CG') {\n              for (let k = 0; k < limit; k++) {\n                const cigop = byteArray.readUInt32LE(p)\n                const lop = cigop >> 4\n                const op = CIGAR_DECODER[cigop & 0xf]\n                value += lop + op\n                p += 4\n              }\n            } else {\n              for (let k = 0; k < limit; k++) {\n                value += byteArray.readUInt32LE(p)\n                if (k + 1 < limit) {\n                  value += ','\n                }\n                p += 4\n              }\n            }\n          }\n          if (Btype === 's') {\n            for (let k = 0; k < limit; k++) {\n              value += byteArray.readInt16LE(p)\n              if (k + 1 < limit) {\n                value += ','\n              }\n              p += 2\n            }\n          }\n          if (Btype === 'S') {\n            for (let k = 0; k < limit; k++) {\n              value += byteArray.readUInt16LE(p)\n              if (k + 1 < limit) {\n                value += ','\n              }\n              p += 2\n            }\n          }\n          if (Btype === 'c') {\n            for (let k = 0; k < limit; k++) {\n              value += byteArray.readInt8(p)\n              if (k + 1 < limit) {\n                value += ','\n              }\n              p += 1\n            }\n          }\n          if (Btype === 'C') {\n            for (let k = 0; k < limit; k++) {\n              value += byteArray.readUInt8(p)\n              if (k + 1 < limit) {\n                value += ','\n              }\n              p += 1\n            }\n          }\n          if (Btype === 'f') {\n            for (let k = 0; k < limit; k++) {\n              value += byteArray.readFloatLE(p)\n              if (k + 1 < limit) {\n                value += ','\n              }\n              p += 4\n            }\n          }\n          break\n        }\n        default: {\n          console.warn(`Unknown BAM tag type '${type}', tags may be incomplete`)\n          value = undefined\n          p = blockEnd\n        } // stop parsing tags\n      }\n\n      this._tagOffset = p\n\n      this._tagList.push(tag)\n      if (lcTag === tagName) {\n        return value\n      }\n\n      this.data[lcTag] = value\n    }\n    this._allTagsParsed = true\n    return\n  }\n\n  _parseAllTags() {\n    this._parseTag('')\n  }\n\n  _parseCigar(cigar: string) {\n    return (\n      //@ts-ignore\n      cigar\n        .match(/\\d+\\D/g)\n        //@ts-ignore\n        .map(op => [/\\D/.exec(op)[0].toUpperCase(), Number.parseInt(op, 10)])\n    )\n  }\n\n  /**\n   * @returns {boolean} true if the read is paired, regardless of whether both\n   * segments are mapped\n   */\n  isPaired() {\n    return !!(this.flags & Constants.BAM_FPAIRED)\n  }\n\n  /** @returns {boolean} true if the read is paired, and both segments are mapped */\n  isProperlyPaired() {\n    return !!(this.flags & Constants.BAM_FPROPER_PAIR)\n  }\n\n  /** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */\n  isSegmentUnmapped() {\n    return !!(this.flags & Constants.BAM_FUNMAP)\n  }\n\n  /** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */\n  isMateUnmapped() {\n    return !!(this.flags & Constants.BAM_FMUNMAP)\n  }\n\n  /** @returns {boolean} true if the read is mapped to the reverse strand */\n  isReverseComplemented() {\n    return !!(this.flags & Constants.BAM_FREVERSE)\n  }\n\n  /** @returns {boolean} true if the mate is mapped to the reverse strand */\n  isMateReverseComplemented() {\n    return !!(this.flags & Constants.BAM_FMREVERSE)\n  }\n\n  /** @returns {boolean} true if this is read number 1 in a pair */\n  isRead1() {\n    return !!(this.flags & Constants.BAM_FREAD1)\n  }\n\n  /** @returns {boolean} true if this is read number 2 in a pair */\n  isRead2() {\n    return !!(this.flags & Constants.BAM_FREAD2)\n  }\n\n  /** @returns {boolean} true if this is a secondary alignment */\n  isSecondary() {\n    return !!(this.flags & Constants.BAM_FSECONDARY)\n  }\n\n  /** @returns {boolean} true if this read has failed QC checks */\n  isFailedQc() {\n    return !!(this.flags & Constants.BAM_FQCFAIL)\n  }\n\n  /** @returns {boolean} true if the read is an optical or PCR duplicate */\n  isDuplicate() {\n    return !!(this.flags & Constants.BAM_FDUP)\n  }\n\n  /** @returns {boolean} true if this is a supplementary alignment */\n  isSupplementary() {\n    return !!(this.flags & Constants.BAM_FSUPPLEMENTARY)\n  }\n\n  cigar() {\n    if (this.isSegmentUnmapped()) {\n      return\n    }\n\n    const { byteArray, start } = this.bytes\n    const numCigarOps = this.get('_n_cigar_op')\n    let p = start + 36 + this.get('_l_read_name')\n    const seqLen = this.get('seq_length')\n    let cigar = ''\n    let lref = 0\n\n    // check for CG tag by inspecting whether the CIGAR field\n    // contains a clip that consumes entire seqLen\n    let cigop = byteArray.readInt32LE(p)\n    let lop = cigop >> 4\n    let op = CIGAR_DECODER[cigop & 0xf]\n    if (op === 'S' && lop === seqLen) {\n      // if there is a CG the second CIGAR field will\n      // be a N tag the represents the length on ref\n      p += 4\n      cigop = byteArray.readInt32LE(p)\n      lop = cigop >> 4\n      op = CIGAR_DECODER[cigop & 0xf]\n      if (op !== 'N') {\n        console.warn('CG tag with no N tag')\n      }\n      this.data.length_on_ref = lop\n      return this.get('CG')\n    } else {\n      for (let c = 0; c < numCigarOps; ++c) {\n        cigop = byteArray.readInt32LE(p)\n        lop = cigop >> 4\n        op = CIGAR_DECODER[cigop & 0xf]\n        cigar += lop + op\n\n        // soft clip, hard clip, and insertion don't count toward\n        // the length on the reference\n        if (op !== 'H' && op !== 'S' && op !== 'I') {\n          lref += lop\n        }\n\n        p += 4\n      }\n\n      this.data.length_on_ref = lref\n      return cigar\n    }\n  }\n\n  length_on_ref() {\n    if (this.data.length_on_ref) {\n      return this.data.length_on_ref\n    } else {\n      this.get('cigar') // the length_on_ref is set as a side effect\n      return this.data.length_on_ref\n    }\n  }\n\n  _n_cigar_op() {\n    return this.get('_flag_nc') & 0xffff\n  }\n\n  _l_read_name() {\n    return this.get('_bin_mq_nl') & 0xff\n  }\n\n  /**\n   * number of bytes in the sequence field\n   */\n  _seq_bytes() {\n    return (this.get('seq_length') + 1) >> 1\n  }\n\n  getReadBases() {\n    return this.seq()\n  }\n\n  seq() {\n    const { byteArray, start } = this.bytes\n    const p =\n      start + 36 + this.get('_l_read_name') + this.get('_n_cigar_op') * 4\n    const seqBytes = this.get('_seq_bytes')\n    const len = this.get('seq_length')\n    let buf = ''\n    let i = 0\n    for (let j = 0; j < seqBytes; ++j) {\n      const sb = byteArray[p + j]\n      buf += SEQRET_DECODER[(sb & 0xf0) >> 4]\n      i++\n      if (i < len) {\n        buf += SEQRET_DECODER[sb & 0x0f]\n        i++\n      }\n    }\n    return buf\n  }\n\n  // adapted from igv.js\n  getPairOrientation() {\n    if (\n      !this.isSegmentUnmapped() &&\n      !this.isMateUnmapped() &&\n      this._refID === this._next_refid()\n    ) {\n      const s1 = this.isReverseComplemented() ? 'R' : 'F'\n      const s2 = this.isMateReverseComplemented() ? 'R' : 'F'\n      let o1 = ' '\n      let o2 = ' '\n      if (this.isRead1()) {\n        o1 = '1'\n        o2 = '2'\n      } else if (this.isRead2()) {\n        o1 = '2'\n        o2 = '1'\n      }\n\n      const tmp = []\n      const isize = this.template_length()\n      if (isize > 0) {\n        tmp[0] = s1\n        tmp[1] = o1\n        tmp[2] = s2\n        tmp[3] = o2\n      } else {\n        tmp[2] = s1\n        tmp[3] = o1\n        tmp[0] = s2\n        tmp[1] = o2\n      }\n      return tmp.join('')\n    }\n    return ''\n  }\n\n  _bin_mq_nl() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 12)\n  }\n\n  _flag_nc() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 16)\n  }\n\n  seq_length() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 20)\n  }\n\n  _next_refid() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 24)\n  }\n\n  _next_pos() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 28)\n  }\n\n  template_length() {\n    return this.bytes.byteArray.readInt32LE(this.bytes.start + 32)\n  }\n\n  toJSON() {\n    const data: Record<string, any> = {}\n    for (const k of Object.keys(this)) {\n      if (k.startsWith('_') || k === 'bytes') {\n        continue\n      }\n      //@ts-ignore\n      data[k] = this[k]\n    }\n\n    return data\n  }\n}\n","export function parseHeaderText(text: string) {\n  const lines = text.split(/\\r?\\n/)\n  const data: { tag: string; data: { tag: string; value: string }[] }[] = []\n  for (const line of lines) {\n    const [tag, ...fields] = line.split(/\\t/)\n    if (tag) {\n      data.push({\n        tag: tag.slice(1),\n        data: fields.map(f => {\n          const r = f.indexOf(':')\n          const fieldTag = f.slice(0, r)\n          const value = f.slice(r + 1)\n          return { tag: fieldTag, value }\n        }),\n      })\n    }\n  }\n  return data\n}\n","import { Buffer } from 'buffer'\nimport crc32 from 'crc/crc32'\nimport { unzip, unzipChunkSlice } from '@gmod/bgzf-filehandle'\nimport { LocalFile, RemoteFile, GenericFilehandle } from 'generic-filehandle'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport QuickLRU from 'quick-lru'\n\n// locals\nimport BAI from './bai'\nimport CSI from './csi'\nimport Chunk from './chunk'\nimport BAMFeature from './record'\nimport { parseHeaderText } from './sam'\nimport { checkAbortSignal, timeout, makeOpts, BamOpts, BaseOpts } from './util'\n\nexport const BAM_MAGIC = 21840194\n\nconst blockLen = 1 << 16\n\nasync function gen2array<T>(gen: AsyncIterable<T[]>): Promise<T[]> {\n  let out: T[] = []\n  for await (const x of gen) {\n    out = out.concat(x)\n  }\n  return out\n}\n\ninterface Args {\n  chunk: Chunk\n  opts: BaseOpts\n}\n\nclass NullFilehandle {\n  public read(): Promise<any> {\n    throw new Error('never called')\n  }\n  public stat(): Promise<any> {\n    throw new Error('never called')\n  }\n\n  public readFile(): Promise<any> {\n    throw new Error('never called')\n  }\n\n  public close(): Promise<any> {\n    throw new Error('never called')\n  }\n}\nexport default class BamFile {\n  public renameRefSeq: (a: string) => string\n  public bam: GenericFilehandle\n  public header?: string\n  public chrToIndex?: Record<string, number>\n  public indexToChr?: { refName: string; length: number }[]\n  public yieldThreadTime: number\n  public index?: BAI | CSI\n  public htsget = false\n  public headerP?: ReturnType<BamFile['getHeaderPre']>\n\n  private featureCache = new AbortablePromiseCache<Args, BAMFeature[]>({\n    cache: new QuickLRU({\n      maxSize: 50,\n    }),\n    fill: async (args: Args, signal) => {\n      const { chunk, opts } = args\n      const { data, cpositions, dpositions } = await this._readChunk({\n        chunk,\n        opts: { ...opts, signal },\n      })\n      return this.readBamFeatures(data, cpositions, dpositions, chunk)\n    },\n  })\n\n  constructor({\n    bamFilehandle,\n    bamPath,\n    bamUrl,\n    baiPath,\n    baiFilehandle,\n    baiUrl,\n    csiPath,\n    csiFilehandle,\n    csiUrl,\n    htsget,\n    yieldThreadTime = 100,\n    renameRefSeqs = n => n,\n  }: {\n    bamFilehandle?: GenericFilehandle\n    bamPath?: string\n    bamUrl?: string\n    baiPath?: string\n    baiFilehandle?: GenericFilehandle\n    baiUrl?: string\n    csiPath?: string\n    csiFilehandle?: GenericFilehandle\n    csiUrl?: string\n    renameRefSeqs?: (a: string) => string\n    yieldThreadTime?: number\n    htsget?: boolean\n  }) {\n    this.renameRefSeq = renameRefSeqs\n\n    if (bamFilehandle) {\n      this.bam = bamFilehandle\n    } else if (bamPath) {\n      this.bam = new LocalFile(bamPath)\n    } else if (bamUrl) {\n      this.bam = new RemoteFile(bamUrl)\n    } else if (htsget) {\n      this.htsget = true\n      this.bam = new NullFilehandle()\n    } else {\n      throw new Error('unable to initialize bam')\n    }\n    if (csiFilehandle) {\n      this.index = new CSI({ filehandle: csiFilehandle })\n    } else if (csiPath) {\n      this.index = new CSI({ filehandle: new LocalFile(csiPath) })\n    } else if (csiUrl) {\n      this.index = new CSI({ filehandle: new RemoteFile(csiUrl) })\n    } else if (baiFilehandle) {\n      this.index = new BAI({ filehandle: baiFilehandle })\n    } else if (baiPath) {\n      this.index = new BAI({ filehandle: new LocalFile(baiPath) })\n    } else if (baiUrl) {\n      this.index = new BAI({ filehandle: new RemoteFile(baiUrl) })\n    } else if (bamPath) {\n      this.index = new BAI({ filehandle: new LocalFile(`${bamPath}.bai`) })\n    } else if (bamUrl) {\n      this.index = new BAI({ filehandle: new RemoteFile(`${bamUrl}.bai`) })\n    } else if (htsget) {\n      this.htsget = true\n    } else {\n      throw new Error('unable to infer index format')\n    }\n    this.yieldThreadTime = yieldThreadTime\n  }\n\n  async getHeaderPre(origOpts?: BaseOpts) {\n    const opts = makeOpts(origOpts)\n    if (!this.index) {\n      return\n    }\n    const indexData = await this.index.parse(opts)\n    const ret = indexData.firstDataLine\n      ? indexData.firstDataLine.blockPosition + 65535\n      : undefined\n    let buffer\n    if (ret) {\n      const s = ret + blockLen\n      const res = await this.bam.read(Buffer.alloc(s), 0, s, 0, opts)\n      if (!res.bytesRead) {\n        throw new Error('Error reading header')\n      }\n      buffer = res.buffer.subarray(0, Math.min(res.bytesRead, ret))\n    } else {\n      buffer = await this.bam.readFile(opts)\n    }\n\n    const uncba = await unzip(buffer)\n\n    if (uncba.readInt32LE(0) !== BAM_MAGIC) {\n      throw new Error('Not a BAM file')\n    }\n    const headLen = uncba.readInt32LE(4)\n\n    this.header = uncba.toString('utf8', 8, 8 + headLen)\n    const { chrToIndex, indexToChr } = await this._readRefSeqs(\n      headLen + 8,\n      65535,\n      opts,\n    )\n    this.chrToIndex = chrToIndex\n    this.indexToChr = indexToChr\n\n    return parseHeaderText(this.header)\n  }\n\n  getHeader(opts?: BaseOpts) {\n    if (!this.headerP) {\n      this.headerP = this.getHeaderPre(opts).catch(e => {\n        this.headerP = undefined\n        throw e\n      })\n    }\n    return this.headerP\n  }\n\n  async getHeaderText(opts: BaseOpts = {}) {\n    await this.getHeader(opts)\n    return this.header\n  }\n\n  // the full length of the refseq block is not given in advance so this grabs\n  // a chunk and doubles it if all refseqs haven't been processed\n  async _readRefSeqs(\n    start: number,\n    refSeqBytes: number,\n    opts?: BaseOpts,\n  ): Promise<{\n    chrToIndex: Record<string, number>\n    indexToChr: { refName: string; length: number }[]\n  }> {\n    if (start > refSeqBytes) {\n      return this._readRefSeqs(start, refSeqBytes * 2, opts)\n    }\n    const size = refSeqBytes + blockLen\n    const { bytesRead, buffer } = await this.bam.read(\n      Buffer.alloc(size),\n      0,\n      refSeqBytes,\n      0,\n      opts,\n    )\n    if (!bytesRead) {\n      throw new Error('Error reading refseqs from header')\n    }\n    const uncba = await unzip(\n      buffer.subarray(0, Math.min(bytesRead, refSeqBytes)),\n    )\n    const nRef = uncba.readInt32LE(start)\n    let p = start + 4\n    const chrToIndex: Record<string, number> = {}\n    const indexToChr: { refName: string; length: number }[] = []\n    for (let i = 0; i < nRef; i += 1) {\n      const lName = uncba.readInt32LE(p)\n      const refName = this.renameRefSeq(\n        uncba.toString('utf8', p + 4, p + 4 + lName - 1),\n      )\n      const lRef = uncba.readInt32LE(p + lName + 4)\n\n      chrToIndex[refName] = i\n      indexToChr.push({ refName, length: lRef })\n\n      p = p + 8 + lName\n      if (p > uncba.length) {\n        console.warn(\n          `BAM header is very big.  Re-fetching ${refSeqBytes} bytes.`,\n        )\n        return this._readRefSeqs(start, refSeqBytes * 2, opts)\n      }\n    }\n    return { chrToIndex, indexToChr }\n  }\n\n  async getRecordsForRange(\n    chr: string,\n    min: number,\n    max: number,\n    opts?: BamOpts,\n  ) {\n    return gen2array(this.streamRecordsForRange(chr, min, max, opts))\n  }\n\n  async *streamRecordsForRange(\n    chr: string,\n    min: number,\n    max: number,\n    opts?: BamOpts,\n  ) {\n    await this.getHeader(opts)\n    const chrId = this.chrToIndex?.[chr]\n    if (chrId === undefined || !this.index) {\n      yield []\n    } else {\n      const chunks = await this.index.blocksForRange(chrId, min - 1, max, opts)\n      yield* this._fetchChunkFeatures(chunks, chrId, min, max, opts)\n    }\n  }\n\n  async *_fetchChunkFeatures(\n    chunks: Chunk[],\n    chrId: number,\n    min: number,\n    max: number,\n    opts: BamOpts = {},\n  ) {\n    const { viewAsPairs } = opts\n    const feats = [] as BAMFeature[][]\n    let done = false\n\n    for (const chunk of chunks) {\n      const records = await this.featureCache.get(\n        chunk.toString(),\n        { chunk, opts },\n        opts.signal,\n      )\n\n      const recs = [] as BAMFeature[]\n      for (const feature of records) {\n        if (feature.seq_id() === chrId) {\n          if (feature.get('start') >= max) {\n            // past end of range, can stop iterating\n            done = true\n            break\n          } else if (feature.get('end') >= min) {\n            // must be in range\n            recs.push(feature)\n          }\n        }\n      }\n      feats.push(recs)\n      yield recs\n      if (done) {\n        break\n      }\n    }\n\n    checkAbortSignal(opts.signal)\n    if (viewAsPairs) {\n      yield this.fetchPairs(chrId, feats, opts)\n    }\n  }\n\n  async fetchPairs(chrId: number, feats: BAMFeature[][], opts: BamOpts) {\n    const { pairAcrossChr, maxInsertSize = 200000 } = opts\n    const unmatedPairs: Record<string, boolean> = {}\n    const readIds: Record<string, number> = {}\n    feats.map(ret => {\n      const readNames: Record<string, number> = {}\n      for (const element of ret) {\n        const name = element.name()\n        const id = element.id()\n        if (!readNames[name]) {\n          readNames[name] = 0\n        }\n        readNames[name]++\n        readIds[id] = 1\n      }\n      for (const [k, v] of Object.entries(readNames)) {\n        if (v === 1) {\n          unmatedPairs[k] = true\n        }\n      }\n    })\n\n    const matePromises: Promise<Chunk[]>[] = []\n    feats.map(ret => {\n      for (const f of ret) {\n        const name = f.name()\n        const start = f.get('start')\n        const pnext = f._next_pos()\n        const rnext = f._next_refid()\n        if (\n          this.index &&\n          unmatedPairs[name] &&\n          (pairAcrossChr ||\n            (rnext === chrId && Math.abs(start - pnext) < maxInsertSize))\n        ) {\n          matePromises.push(\n            this.index.blocksForRange(rnext, pnext, pnext + 1, opts),\n          )\n        }\n      }\n    })\n\n    // filter out duplicate chunks (the blocks are lists of chunks, blocks are\n    // concatenated, then filter dup chunks)\n    const map = new Map<string, Chunk>()\n    const res = await Promise.all(matePromises)\n    for (const m of res.flat()) {\n      if (!map.has(m.toString())) {\n        map.set(m.toString(), m)\n      }\n    }\n\n    const mateFeatPromises = await Promise.all(\n      [...map.values()].map(async c => {\n        const { data, cpositions, dpositions, chunk } = await this._readChunk({\n          chunk: c,\n          opts,\n        })\n        const mateRecs = [] as BAMFeature[]\n        for (const feature of await this.readBamFeatures(\n          data,\n          cpositions,\n          dpositions,\n          chunk,\n        )) {\n          if (unmatedPairs[feature.get('name')] && !readIds[feature.id()]) {\n            mateRecs.push(feature)\n          }\n        }\n        return mateRecs\n      }),\n    )\n    return mateFeatPromises.flat()\n  }\n\n  async _readRegion(position: number, size: number, opts: BaseOpts = {}) {\n    const { bytesRead, buffer } = await this.bam.read(\n      Buffer.alloc(size),\n      0,\n      size,\n      position,\n      opts,\n    )\n\n    return buffer.subarray(0, Math.min(bytesRead, size))\n  }\n\n  async _readChunk({ chunk, opts }: { chunk: Chunk; opts: BaseOpts }) {\n    const buffer = await this._readRegion(\n      chunk.minv.blockPosition,\n      chunk.fetchedSize(),\n      opts,\n    )\n\n    const {\n      buffer: data,\n      cpositions,\n      dpositions,\n    } = await unzipChunkSlice(buffer, chunk)\n    return { data, cpositions, dpositions, chunk }\n  }\n\n  async readBamFeatures(\n    ba: Buffer,\n    cpositions: number[],\n    dpositions: number[],\n    chunk: Chunk,\n  ) {\n    let blockStart = 0\n    const sink = [] as BAMFeature[]\n    let pos = 0\n    let last = +Date.now()\n\n    while (blockStart + 4 < ba.length) {\n      const blockSize = ba.readInt32LE(blockStart)\n      const blockEnd = blockStart + 4 + blockSize - 1\n\n      // increment position to the current decompressed status\n      if (dpositions) {\n        while (blockStart + chunk.minv.dataPosition >= dpositions[pos++]) {}\n        pos--\n      }\n\n      // only try to read the feature if we have all the bytes for it\n      if (blockEnd < ba.length) {\n        const feature = new BAMFeature({\n          bytes: {\n            byteArray: ba,\n            start: blockStart,\n            end: blockEnd,\n          },\n          // the below results in an automatically calculated file-offset based\n          // ID if the info for that is available, otherwise crc32 of the\n          // features\n          //\n          // cpositions[pos] refers to actual file offset of a bgzip block\n          // boundaries\n          //\n          // we multiply by (1 <<8) in order to make sure each block has a\n          // \"unique\" address space so that data in that block could never\n          // overlap\n          //\n          // then the blockStart-dpositions is an uncompressed file offset from\n          // that bgzip block boundary, and since the cpositions are multiplied\n          // by (1 << 8) these uncompressed offsets get a unique space\n          //\n          // this has an extra chunk.minv.dataPosition added on because it\n          // blockStart starts at 0 instead of chunk.minv.dataPosition\n          //\n          // the +1 is just to avoid any possible uniqueId 0 but this does not\n          // realistically happen\n          fileOffset:\n            cpositions.length > 0\n              ? cpositions[pos] * (1 << 8) +\n                (blockStart - dpositions[pos]) +\n                chunk.minv.dataPosition +\n                1\n              : // must be slice, not subarray for buffer polyfill on web\n                crc32.signed(ba.slice(blockStart, blockEnd)),\n        })\n\n        sink.push(feature)\n        if (this.yieldThreadTime && +Date.now() - last > this.yieldThreadTime) {\n          await timeout(1)\n          last = +Date.now()\n        }\n      }\n\n      blockStart = blockEnd + 1\n    }\n    return sink\n  }\n\n  async hasRefSeq(seqName: string) {\n    const seqId = this.chrToIndex?.[seqName]\n    return seqId === undefined ? false : this.index?.hasRefSeq(seqId)\n  }\n\n  async lineCount(seqName: string) {\n    const seqId = this.chrToIndex?.[seqName]\n    return seqId === undefined || !this.index ? 0 : this.index.lineCount(seqId)\n  }\n\n  async indexCov(seqName: string, start?: number, end?: number) {\n    if (!this.index) {\n      return []\n    }\n    await this.index.parse()\n    const seqId = this.chrToIndex?.[seqName]\n    return seqId === undefined ? [] : this.index.indexCov(seqId, start, end)\n  }\n\n  async blocksForRange(\n    seqName: string,\n    start: number,\n    end: number,\n    opts?: BaseOpts,\n  ) {\n    if (!this.index) {\n      return []\n    }\n    await this.index.parse()\n    const seqId = this.chrToIndex?.[seqName]\n    return seqId === undefined\n      ? []\n      : this.index.blocksForRange(seqId, start, end, opts)\n  }\n}\n","import { unzip } from '@gmod/bgzf-filehandle'\nimport { Buffer } from 'buffer'\nimport { BaseOpts, BamOpts } from './util'\nimport BamFile, { BAM_MAGIC } from './bamFile'\nimport Chunk from './chunk'\nimport { parseHeaderText } from './sam'\n\ninterface HtsgetChunk {\n  url: string\n  headers?: Record<string, string>\n}\nasync function concat(arr: HtsgetChunk[], opts?: Record<string, any>) {\n  const res = await Promise.all(\n    arr.map(async chunk => {\n      const { url, headers } = chunk\n      if (url.startsWith('data:')) {\n        return Buffer.from(url.split(',')[1], 'base64')\n      } else {\n        //remove referer header, it is not even allowed to be specified\n        // @ts-expect-error\n\n        const { referer, ...rest } = headers\n        const res = await fetch(url, {\n          ...opts,\n          headers: { ...opts?.headers, ...rest },\n        })\n        if (!res.ok) {\n          throw new Error(\n            `HTTP ${res.status} fetching ${url}: ${await res.text()}`,\n          )\n        }\n        return Buffer.from(await res.arrayBuffer())\n      }\n    }),\n  )\n\n  return Buffer.concat(await Promise.all(res.map(elt => unzip(elt))))\n}\n\nexport default class HtsgetFile extends BamFile {\n  private baseUrl: string\n\n  private trackId: string\n\n  constructor(args: { trackId: string; baseUrl: string }) {\n    super({ htsget: true })\n    this.baseUrl = args.baseUrl\n    this.trackId = args.trackId\n  }\n\n  async *streamRecordsForRange(\n    chr: string,\n    min: number,\n    max: number,\n    opts?: BamOpts,\n  ) {\n    const base = `${this.baseUrl}/${this.trackId}`\n    const url = `${base}?referenceName=${chr}&start=${min}&end=${max}&format=BAM`\n    const chrId = this.chrToIndex?.[chr]\n    if (chrId === undefined) {\n      yield []\n    } else {\n      const result = await fetch(url, { ...opts })\n      if (!result.ok) {\n        throw new Error(\n          `HTTP ${result.status} fetching ${url}: ${await result.text()}`,\n        )\n      }\n      const data = await result.json()\n      const uncba = await concat(data.htsget.urls.slice(1), opts)\n\n      yield* this._fetchChunkFeatures(\n        [\n          // fake stuff to pretend to be a Chunk\n          {\n            buffer: uncba,\n            _fetchedSize: undefined,\n            bin: 0,\n            compareTo() {\n              return 0\n            },\n            toUniqueString() {\n              return `${chr}_${min}_${max}`\n            },\n            fetchedSize() {\n              return 0\n            },\n            minv: {\n              dataPosition: 0,\n              blockPosition: 0,\n              compareTo: () => 0,\n            },\n            maxv: {\n              dataPosition: Number.MAX_SAFE_INTEGER,\n              blockPosition: 0,\n              compareTo: () => 0,\n            },\n            toString() {\n              return `${chr}_${min}_${max}`\n            },\n          },\n        ],\n        chrId,\n        min,\n        max,\n        opts,\n      )\n    }\n  }\n\n  async _readChunk({ chunk }: { chunk: Chunk; opts: BaseOpts }) {\n    if (!chunk.buffer) {\n      throw new Error('expected chunk.buffer in htsget')\n    }\n    return { data: chunk.buffer, cpositions: [], dpositions: [], chunk }\n  }\n\n  async getHeader(opts: BaseOpts = {}) {\n    const url = `${this.baseUrl}/${this.trackId}?referenceName=na&class=header`\n    const result = await fetch(url, opts)\n    if (!result.ok) {\n      throw new Error(\n        `HTTP ${result.status} fetching ${url}: ${await result.text()}`,\n      )\n    }\n    const data = await result.json()\n    const uncba = await concat(data.htsget.urls, opts)\n\n    if (uncba.readInt32LE(0) !== BAM_MAGIC) {\n      throw new Error('Not a BAM file')\n    }\n    const headLen = uncba.readInt32LE(4)\n    const headerText = uncba.toString('utf8', 8, 8 + headLen)\n    const samHeader = parseHeaderText(headerText)\n\n    // use the @SQ lines in the header to figure out the\n    // mapping between ref ref ID numbers and names\n    const idToName: { refName: string; length: number }[] = []\n    const nameToId: Record<string, number> = {}\n    const sqLines = samHeader.filter(l => l.tag === 'SQ')\n    for (const [refId, sqLine] of sqLines.entries()) {\n      let refName = ''\n      let length = 0\n      for (const item of sqLine.data) {\n        if (item.tag === 'SN') {\n          refName = item.value\n        } else if (item.tag === 'LN') {\n          length = +item.value\n        }\n      }\n      nameToId[refName] = refId\n      idToName[refId] = { refName, length }\n    }\n    this.chrToIndex = nameToId\n    this.indexToChr = idToName\n    return samHeader\n  }\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n","// Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c`\nlet TABLE = [\n    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n];\nif (typeof Int32Array !== 'undefined') {\n    TABLE = new Int32Array(TABLE);\n}\nconst crc32 = (current, previous) => {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    let crc = previous === 0 ? 0 : ~~previous ^ -1;\n    for (let index = 0; index < current.length; index++) {\n        crc = TABLE[(crc ^ current[index]) & 0xff] ^ (crc >>> 8);\n    }\n    return crc ^ -1;\n};\nexport default crc32;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-prototype-builtins */\nimport { Buffer } from 'buffer';\nconst createBuffer = (value, encoding) => Buffer.from(value, encoding);\nexport default createBuffer;\n","import crc32 from './calculators/crc32.js';\nimport defineCrc from './define_crc.js';\nexport default defineCrc('crc-32', crc32);\n","import createBuffer from './create_buffer.js';\nexport default function defineCrc(model, calculator) {\n    const result = (value, previous) => calculator(createBuffer(value), previous) >>> 0;\n    result.signed = (value, previous) => calculator(createBuffer(value), previous);\n    result.unsigned = result;\n    result.model = model;\n    return result;\n}\n"],"names":["NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","signal","this","aborted","Error","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","callback","currentMessage","message","elt","AbortablePromiseCache","constructor","fill","cache","TypeError","get","set","fillCallback","isAbortException","exception","name","code","evict","key","entry","data","statusCallback","aborter","statusReporter","newEntry","promise","settled","then","catch","error","console","checkSinglePromise","checkForSingleAbort","Object","assign","result","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","keys","deleteCount","next","done","value","VirtualOffset","blockPosition","dataPosition","toString","compareTo","b","min","args","i","length","fromBytes","bytes","offset","bigendian","Chunk","minv","maxv","bin","_fetchedSize","toUniqueString","fetchedSize","undefined","timeout","ms","Promise","resolve","setTimeout","optimizeChunks","chunks","lowest","mergedChunks","lastChunk","sort","c0","c1","dif","chunk","push","chunk1","chunk2","parsePseudoBin","lineCount","long","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","longToNumber","Array","prototype","slice","call","findFirstData","firstDataLine","virtualOffset","parseNameBytes","namesBytes","renameRefSeq","s","currRefId","currNameStart","refIdToName","refNameToId","refName","IndexFile","filehandle","n","BAI","refId","opts","parse","indices","stats","_parse","readFile","readUInt32LE","refCount","readInt32LE","curr","binCount","binIndex","j","binLimit","chunkCount","k","u","v","linearCount","linearIndex","bai","maxBlockSize","indexCov","seqId","start","end","range","seqIdx","e","roundDown","depths","totalSize","currentPos","score","map","d","blocksForRange","max","indexData","ba","overlappingBins","beg","binChunks","binChunk","nintv","minLin","Math","maxLin","vp","setupP","hasRefSeq","rshift","num","bits","floor","CSI","maxBinNumber","depth","minShift","parseAuxData","formatFlags","coordinateType","format","columnNumbers","ref","metaValue","metaChar","String","fromCharCode","skipLines","nameSectionLength","subarray","buffer","unzip","csiVersion","auxLength","aux","csi","reg2bins","c","l","t","bins","SEQRET_DECODER","split","CIGAR_DECODER","BamRecord","_tagList","_allTagsParsed","fileOffset","byteArray","_id","_refID","flags","field","_get","toLowerCase","seq_id","_parseTag","_tags","_parseAllTags","tags","isSegmentUnmapped","isPaired","concat","startsWith","seen","filter","lt","parent","children","id","mq","qual","qualRaw","join","p","lseq","strand","isReverseComplemented","multi_segment_next_segment_strand","isMateUnmapped","isMateReverseComplemented","_read_name","nl","tagName","_tagOffset","blockEnd","lcTag","tag","type","readInt8","readUInt8","readInt16LE","readUInt16LE","readFloatLE","cc","Btype","limit","cigop","warn","_parseCigar","cigar","match","op","exec","toUpperCase","parseInt","isProperlyPaired","isRead1","isRead2","isSecondary","isFailedQc","isDuplicate","isSupplementary","numCigarOps","seqLen","lref","lop","length_on_ref","_n_cigar_op","_l_read_name","_seq_bytes","getReadBases","seq","seqBytes","len","buf","sb","getPairOrientation","_next_refid","s1","s2","o1","o2","tmp","template_length","_bin_mq_nl","_flag_nc","seq_length","_next_pos","toJSON","parseHeaderText","text","lines","line","fields","f","r","indexOf","BAM_MAGIC","NullFilehandle","read","stat","close","BamFile","bamFilehandle","bamPath","bamUrl","baiPath","baiFilehandle","baiUrl","csiPath","csiFilehandle","csiUrl","htsget","yieldThreadTime","renameRefSeqs","featureCache","A","maxSize","async","cpositions","dpositions","_readChunk","readBamFeatures","bam","index","getHeaderPre","origOpts","obj","makeOpts","ret","res","alloc","bytesRead","uncba","headLen","header","chrToIndex","indexToChr","_readRefSeqs","getHeader","headerP","getHeaderText","refSeqBytes","nRef","lName","lRef","getRecordsForRange","chr","gen","out","x","gen2array","streamRecordsForRange","chrId","_fetchChunkFeatures","viewAsPairs","feats","records","recs","feature","DOMException","checkAbortSignal","fetchPairs","pairAcrossChr","maxInsertSize","unmatedPairs","readIds","readNames","element","entries","matePromises","pnext","rnext","abs","Map","all","m","flat","values","mateRecs","_readRegion","position","blockStart","sink","pos","last","Date","now","crc32","signed","seqName","arr","url","headers","from","referer","rest","fetch","ok","status","arrayBuffer","HtsgetFile","super","baseUrl","trackId","json","urls","samHeader","idToName","nameToId","sqLines","sqLine","item","inputData","strm","inflator","remainingInput","Inflate","Z_SYNC_FLUSH","err","msg","next_in","avail_in","Uint8Array","unzipChunkSlice","cpos","dpos","origCpos","GziIndex","path","_readLongWithOverflow","unsigned","_getIndex","_readIndex","allocUnsafe","numEntries","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","endPosition","relevant","compare","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","compressedStat","getUncompressedFileSize","blocks","blksize","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","copy","TABLE","Int32Array","encoding","model","calculator","previous","current","crc"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4138.57ad92a3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4138],{44138:(e,n,o)=>{o.r(n),o.d(n,{default:()=>d});var t=o(7552),c=o(33371),a=o(32808),r=o(36715),s=o(29499),i=o(58507),l=o(5401),m=o(49823),b=o(75785),u=o(68446),C=o(68584);const f=(0,b.n9)()((e=>({connectionContainer:{width:500,margin:e.spacing(4)}}))),h=(0,u.observer)((function({conf:e,session:n,breakConnection:o}){const{connectionInstances:r=[]}=n,s=(0,C.readConfObject)(e,"name"),i=(0,C.readConfObject)(e,"assemblyNames"),l=r.find((e=>s===e.name));return t.createElement(c.A,{key:e.connectionId,control:t.createElement(a.A,{checked:!!l,onChange:()=>{l?o(e):n.makeConnection?.(e)},color:"primary"}),label:[s,i.length?`(${m=i.join(","),m.length>20?`${m.slice(0,20)}...`:m})`:""].filter((e=>!!e)).join(" ")});var m})),k=(0,u.observer)((function({session:e,breakConnection:n}){const{classes:o}=f();return t.createElement("div",{className:o.connectionContainer},e.connections.length?e.connections.map(((o,c)=>t.createElement("div",{key:`${o.name}_${c}`},t.createElement(h,{conf:o,session:e,breakConnection:n})))):t.createElement(r.A,null,"No connections found"))})),d=(0,u.observer)((function({session:e,handleClose:n,breakConnection:o}){return t.createElement(m.Dialog,{open:!0,onClose:n,maxWidth:"lg",title:"Turn on/off connections"},t.createElement(s.A,null,t.createElement(r.A,null,"Use the checkbox to turn on/off connections"),t.createElement(k,{session:e,breakConnection:o})),t.createElement(i.A,null,t.createElement(l.A,{onClick:()=>{n()},variant:"contained",color:"primary"},"Close")))}))}}]);
+//# sourceMappingURL=4138.57ad92a3.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4138.57ad92a3.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4138.57ad92a3.chunk.js","mappings":"kRAsBA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,oBAAqB,CACnBC,MAAO,IACPC,OAAQH,EAAMI,QAAQ,QAIpBC,GAAgBC,EAAAA,EAAAA,WAAS,UAAuB,KACpDC,EAAI,QACJC,EAAO,gBACPC,IAMA,MAAQC,oBAAqBC,EAAY,IAAOH,EAC1CI,GAAOC,EAAAA,EAAAA,gBAAeN,EAAM,QAC5BO,GAAgBD,EAAAA,EAAAA,gBAAeN,EAAM,iBACrCQ,EAAQJ,EAAUK,MAAKC,GAAQL,IAASK,EAAKL,OACnD,OACEM,EAAAA,cAACC,EAAAA,EAAgB,CACfC,IAAKb,EAAKc,aACVC,QACEJ,EAAAA,cAACK,EAAAA,EAAQ,CACPC,UAAWT,EACXU,SAAUA,KACJV,EACFN,EAAgBF,GAEhBC,EAAQkB,iBAAiBnB,EAC3B,EAEFoB,MAAM,YAGVC,MAAO,CACLhB,EACAE,EAAce,OAAS,IA1CbC,EA0C0BhB,EAAciB,KAAK,KAzCtDD,EAAKD,OAAS,GAAK,GAAGC,EAAKE,MAAM,EAAG,SAAWF,KAyCkB,IAEjEG,QAAOC,KAAOA,IACdH,KAAK,OA7Cd,IAAkBD,CAgDlB,IAEMK,GAAiB7B,EAAAA,EAAAA,WAAS,UAAyB,QACvDE,EAAO,gBACPC,IAKA,MAAM,QAAE2B,GAAYtC,IACpB,OACEoB,EAAAA,cAAA,OAAKmB,UAAWD,EAAQnC,qBACpBO,EAAQ8B,YAAYT,OAGpBrB,EAAQ8B,YAAYC,KAAI,CAAChC,EAAMiC,IAC7BtB,EAAAA,cAAA,OAAKE,IAAK,GAAGb,EAAKK,QAAQ4B,KACxBtB,EAAAA,cAACb,EAAa,CACZE,KAAMA,EACNC,QAASA,EACTC,gBAAiBA,OAPvBS,EAAAA,cAACuB,EAAAA,EAAU,KAAC,wBAcpB,IAqCA,GAnC+BnC,EAAAA,EAAAA,WAAS,UAAU,QAChDE,EAAO,YACPkC,EAAW,gBACXjC,IAMA,OACES,EAAAA,cAACyB,EAAAA,OAAM,CACLC,MAAI,EACJC,QAASH,EACTI,SAAS,KACTC,MAAM,2BAEN7B,EAAAA,cAAC8B,EAAAA,EAAa,KACZ9B,EAAAA,cAACuB,EAAAA,EAAU,KAAC,+CACZvB,EAAAA,cAACiB,EAAc,CAAC3B,QAASA,EAASC,gBAAiBA,KAErDS,EAAAA,cAAC+B,EAAAA,EAAa,KACZ/B,EAAAA,cAACgC,EAAAA,EAAM,CACLC,QAASA,KACPT,GAAa,EAEfU,QAAQ,YACRzB,MAAM,WACP,UAMT,G","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  Button,\n  Checkbox,\n  DialogContent,\n  DialogActions,\n  FormControlLabel,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\nfunction ellipses(slug: string) {\n  return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug\n}\n\nconst useStyles = makeStyles()(theme => ({\n  connectionContainer: {\n    width: 500,\n    margin: theme.spacing(4),\n  },\n}))\n\nconst ConnectionRow = observer(function ConnectionRow({\n  conf,\n  session,\n  breakConnection,\n}: {\n  conf: AnyConfigurationModel\n  session: AbstractSessionModel\n  breakConnection: (arg: AnyConfigurationModel) => void\n}) {\n  const { connectionInstances: instances = [] } = session\n  const name = readConfObject(conf, 'name')\n  const assemblyNames = readConfObject(conf, 'assemblyNames')\n  const found = instances.find(conn => name === conn.name)\n  return (\n    <FormControlLabel\n      key={conf.connectionId}\n      control={\n        <Checkbox\n          checked={!!found}\n          onChange={() => {\n            if (found) {\n              breakConnection(conf)\n            } else {\n              session.makeConnection?.(conf)\n            }\n          }}\n          color=\"primary\"\n        />\n      }\n      label={[\n        name,\n        assemblyNames.length ? `(${ellipses(assemblyNames.join(','))})` : '',\n      ]\n        .filter(f => !!f)\n        .join(' ')}\n    />\n  )\n})\n\nconst ConnectionList = observer(function ConnectionsList({\n  session,\n  breakConnection,\n}: {\n  session: AbstractSessionModel\n  breakConnection: (arg: AnyConfigurationModel) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.connectionContainer}>\n      {!session.connections.length ? (\n        <Typography>No connections found</Typography>\n      ) : (\n        session.connections.map((conf, idx) => (\n          <div key={`${conf.name}_${idx}`}>\n            <ConnectionRow\n              conf={conf}\n              session={session}\n              breakConnection={breakConnection}\n            />\n          </div>\n        ))\n      )}\n    </div>\n  )\n})\n\nconst ToggleConnectionDialog = observer(function ({\n  session,\n  handleClose,\n  breakConnection,\n}: {\n  handleClose: () => void\n  session: AbstractSessionModel\n  breakConnection: (arg: AnyConfigurationModel) => void\n}) {\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      maxWidth=\"lg\"\n      title=\"Turn on/off connections\"\n    >\n      <DialogContent>\n        <Typography>Use the checkbox to turn on/off connections</Typography>\n        <ConnectionList session={session} breakConnection={breakConnection} />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default ToggleConnectionDialog\n"],"names":["useStyles","makeStyles","theme","connectionContainer","width","margin","spacing","ConnectionRow","observer","conf","session","breakConnection","connectionInstances","instances","name","readConfObject","assemblyNames","found","find","conn","React","FormControlLabel","key","connectionId","control","Checkbox","checked","onChange","makeConnection","color","label","length","slug","join","slice","filter","f","ConnectionList","classes","className","connections","map","idx","Typography","handleClose","Dialog","open","onClose","maxWidth","title","DialogContent","DialogActions","Button","onClick","variant"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/419.021427b6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[419],{20419:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var n=a(7552),r=a(68446),o=a(36422),s=a(29499),l=a(9937),i=a(99123),c=a(36715),d=a(1343),h=a(58507),m=a(5401),w=a(75785),u=a(31409),p=a.n(u),f=a(99546),k=a(49823),b=a(90542),g=a(32984);const y=(0,w.n9)()((()=>({flexItem:{margin:5},content:{display:"flex",flexFlow:"column",gap:"5px"}}))),E=(0,r.observer)((function({onClose:e,model:t}){const{classes:a}=y(),[r,w]=(0,n.useState)(""),[u,E]=(0,n.useState)(),[S,C]=(0,n.useState)(!0),U=(0,f.getSession)(t),{selectedBookmarks:A}=t,R=0===A.length,L=0===A.length?t.allBookmarksModel:t.sharedBookmarksModel;return(0,n.useEffect)((()=>{(async()=>{try{if(!(0,f.isSessionWithShareURL)(U))throw new Error("No shareURL configured");C(!0);const e=(0,o.getSnapshot)(L),t=new URL(window.location.href),a=await(0,g.J)(e,U.shareURL,t.href),n=new URLSearchParams(t.search);n.set("bookmarks",`share-${a.json.sessionId}`),n.set("password",a.password),t.search=n.toString(),w(t.href),C(!1)}catch(e){E(e)}finally{C(!1)}})()}),[L,U]),n.createElement(k.Dialog,{open:!0,onClose:e,title:"Share bookmarks"},n.createElement(s.A,{className:a.content},n.createElement(l.A,{severity:"info"},R?n.createElement(n.Fragment,null,n.createElement("span",null,"All bookmarks will be shared."),n.createElement("br",null),n.createElement("span",null,"Use the checkboxes to select individual bookmarks to share.")):"Only selected bookmarks will be shared."),n.createElement(i.A,null,"Copy the URL below to share your bookmarks."),u?n.createElement(k.ErrorMessage,{error:u}):S?n.createElement(c.A,null,"Generating short URL..."):n.createElement(d.A,{label:"URL",value:r,slotProps:{input:{readOnly:!0}},variant:"filled",fullWidth:!0,onClick:e=>{e.target.select()}}),n.createElement(i.A,null,'The URL should be pasted into the "Import from share link" field in the "Import" form found in the "Bookmarked regions" drawer.')),n.createElement(h.A,null,n.createElement(m.A,{className:a.flexItem,"data-testid":"dialogShare",variant:"contained",color:"primary",disabled:S,startIcon:n.createElement(b.PM,null),onClick:async()=>{p()(r),U.notify("Copied to clipboard","success"),e()}},"Copy share link")))}))},32984:(e,t,a)=>{a.d(t,{J:()=>l,Z:()=>i});var n=a(84495);const r=async(e,t)=>(await Promise.all([a.e(7753),a.e(9831),a.e(5156)]).then(a.t.bind(a,29831,23))).encrypt(e,t).toString(),o=async(e,t)=>{const n=await Promise.all([a.e(7753),a.e(9831),a.e(5156)]).then(a.t.bind(a,29831,23)),r=await Promise.all([a.e(7753),a.e(6235)]).then(a.t.bind(a,12598,23));return n.decrypt(e,t).toString(r)};function s(e){try{return JSON.parse(e).message}catch(t){return e}}async function l(e,t,a){const o=await(0,n.eW)(JSON.stringify(e)),l=window.btoa([...window.crypto.getRandomValues(new Uint8Array(10))].map((e=>String.fromCharCode(e))).join("")).replaceAll(/[+/]/g,"").slice(0,5);const i=await r(o,l),c=new FormData;c.append("session",i),c.append("dateShared",`${Date.now()}`),c.append("referer",a);const d=await fetch(`${t}share`,{method:"POST",mode:"cors",body:c});if(!d.ok){const e=await d.text();throw new Error(s(e))}return{json:await d.json(),encryptedSession:i,password:l}}async function i(e,t,a,n){const r=t.split("share-")[1],l=`${e}?sessionId=${encodeURIComponent(r)}`,i=await fetch(l,{signal:n});if(!i.ok){const e=await i.text();throw new Error(s(e))}const c=await i.json();return o(c.session,a)}}}]);
+//# sourceMappingURL=419.021427b6.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/419.021427b6.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/419.021427b6.chunk.js","mappings":"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","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/sessionSharing.ts"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\n\nimport {\n  Alert,\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport copy from 'copy-to-clipboard'\n\nimport { getSession, isSessionWithShareURL } from '@jbrowse/core/util'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\n\n// locals\nimport { shareSessionToDynamo } from '../../sessionSharing'\nimport { GridBookmarkModel } from '../../model'\n\nconst useStyles = makeStyles()(() => ({\n  flexItem: {\n    margin: 5,\n  },\n  content: {\n    display: 'flex',\n    flexFlow: 'column',\n    gap: '5px',\n  },\n}))\n\nconst ShareBookmarksDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: GridBookmarkModel\n}) {\n  const { classes } = useStyles()\n  const [url, setUrl] = useState('')\n  const [error, setError] = useState<unknown>()\n  const [loading, setLoading] = useState(true)\n  const session = getSession(model)\n  const { selectedBookmarks } = model\n  const shareAll = selectedBookmarks.length === 0\n  const bookmarksToShare =\n    selectedBookmarks.length === 0\n      ? model.allBookmarksModel\n      : model.sharedBookmarksModel\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        if (!isSessionWithShareURL(session)) {\n          throw new Error('No shareURL configured')\n        }\n        setLoading(true)\n        const snap = getSnapshot(bookmarksToShare)\n        const locationUrl = new URL(window.location.href)\n        const result = await shareSessionToDynamo(\n          snap,\n          session.shareURL,\n          locationUrl.href,\n        )\n        const params = new URLSearchParams(locationUrl.search)\n        params.set('bookmarks', `share-${result.json.sessionId}`)\n        params.set('password', result.password)\n        locationUrl.search = params.toString()\n        setUrl(locationUrl.href)\n        setLoading(false)\n      } catch (e) {\n        setError(e)\n      } finally {\n        setLoading(false)\n      }\n    })()\n  }, [bookmarksToShare, session])\n  return (\n    <Dialog open onClose={onClose} title=\"Share bookmarks\">\n      <DialogContent className={classes.content}>\n        <Alert severity=\"info\">\n          {shareAll ? (\n            <>\n              <span>All bookmarks will be shared.</span>\n              <br />\n              <span>\n                Use the checkboxes to select individual bookmarks to share.\n              </span>\n            </>\n          ) : (\n            'Only selected bookmarks will be shared.'\n          )}\n        </Alert>\n        <DialogContentText>\n          Copy the URL below to share your bookmarks.\n        </DialogContentText>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <Typography>Generating short URL...</Typography>\n        ) : (\n          <TextField\n            label=\"URL\"\n            value={url}\n            slotProps={{\n              input: {\n                readOnly: true,\n              },\n            }}\n            variant=\"filled\"\n            fullWidth\n            onClick={event => {\n              const target = event.target as HTMLTextAreaElement\n              target.select()\n            }}\n          />\n        )}\n        <DialogContentText>\n          The URL should be pasted into the \"Import from share link\" field in\n          the \"Import\" form found in the \"Bookmarked regions\" drawer.\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          className={classes.flexItem}\n          data-testid=\"dialogShare\"\n          variant=\"contained\"\n          color=\"primary\"\n          disabled={loading}\n          startIcon={<ContentCopyIcon />}\n          onClick={async () => {\n            copy(url)\n            session.notify('Copied to clipboard', 'success')\n            onClose()\n          }}\n        >\n          Copy share link\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default ShareBookmarksDialog\n","// duplicated from products/jbrowse-web/src/sessionSharing.ts ; could possibly be moved into a higher directory and shared between the two\nimport { toUrlSafeB64 } from './utils'\n\n// from https://stackoverflow.com/questions/1349404/\nfunction generateUID(length: number) {\n  return window\n    .btoa(\n      [...window.crypto.getRandomValues(new Uint8Array(length * 2))]\n        .map(b => String.fromCharCode(b))\n        .join(''),\n    )\n    .replaceAll(/[+/]/g, '')\n    .slice(0, length)\n}\n\nconst encrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  return AES.encrypt(text, password).toString()\n}\n\nconst decrypt = async (text: string, password: string) => {\n  const AES = await import('crypto-js/aes')\n  const Utf8 = await import('crypto-js/enc-utf8')\n  const bytes = AES.decrypt(text, password)\n  return bytes.toString(Utf8)\n}\n\nfunction getErrorMsg(err: string) {\n  try {\n    const obj = JSON.parse(err)\n    return obj.message\n  } catch (e) {\n    return err\n  }\n}\n// writes the encrypted session, current datetime, and referer to DynamoDB\nexport async function shareSessionToDynamo(\n  session: unknown,\n  url: string,\n  referer: string,\n) {\n  const sess = await toUrlSafeB64(JSON.stringify(session))\n  const password = generateUID(5)\n  const encryptedSession = await encrypt(sess, password)\n\n  const data = new FormData()\n  data.append('session', encryptedSession)\n  data.append('dateShared', `${Date.now()}`)\n  data.append('referer', referer)\n\n  const response = await fetch(`${url}share`, {\n    method: 'POST',\n    mode: 'cors',\n    body: data,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n  const json = await response.json()\n  return {\n    json,\n    encryptedSession,\n    password,\n  }\n}\n\nexport async function readSessionFromDynamo(\n  baseUrl: string,\n  sessionQueryParam: string,\n  password: string,\n  signal?: AbortSignal,\n) {\n  const sessionId = sessionQueryParam.split('share-')[1]!\n  const url = `${baseUrl}?sessionId=${encodeURIComponent(sessionId)}`\n  const response = await fetch(url, {\n    signal,\n  })\n\n  if (!response.ok) {\n    const err = await response.text()\n    throw new Error(getErrorMsg(err))\n  }\n\n  const json = await response.json()\n  return decrypt(json.session, password)\n}\n"],"names":["useStyles","makeStyles","flexItem","margin","content","display","flexFlow","gap","observer","onClose","model","classes","url","setUrl","useState","error","setError","loading","setLoading","session","getSession","selectedBookmarks","shareAll","length","bookmarksToShare","allBookmarksModel","sharedBookmarksModel","useEffect","isSessionWithShareURL","Error","snap","getSnapshot","locationUrl","URL","window","location","href","result","shareSessionToDynamo","shareURL","params","URLSearchParams","search","set","json","sessionId","password","toString","e","React","Dialog","open","title","DialogContent","className","Alert","severity","DialogContentText","ErrorMessage","Typography","TextField","label","value","slotProps","input","readOnly","variant","fullWidth","onClick","event","target","select","DialogActions","Button","color","disabled","startIcon","ContentCopyIcon","async","copy","notify","encrypt","text","decrypt","AES","Utf8","getErrorMsg","err","JSON","parse","message","referer","sess","toUrlSafeB64","stringify","btoa","crypto","getRandomValues","Uint8Array","map","b","String","fromCharCode","join","replaceAll","slice","encryptedSession","data","FormData","append","Date","now","response","fetch","method","mode","body","ok","readSessionFromDynamo","baseUrl","sessionQueryParam","signal","split","encodeURIComponent"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4234.63e1ba57.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4234],{14234:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var s=a(93902),r=a(46377),i=a(99834),n=a(99546),u=a(66885),o=a(37957);class c extends r.BaseFeatureDataAdapter{static capabilities=["hasResolution","hasLocalStats","hasGlobalStats"];async setupPre(e){const{statusCallback:t=()=>{}}=e||{},a=this.pluginManager,r=new s.j({filehandle:(0,i.openLocation)(this.getConf("bigWigLocation"),a)}),u=await(0,n.updateStatus)("Downloading bigwig header",t,(()=>r.getHeader(e)));return{bigwig:r,header:u}}async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async getRefNames(e){const{header:t}=await this.setup(e);return Object.keys(t.refsByName)}async refIdToName(e){const{header:t}=await this.setup();return t.refsByNumber[e]?.name}async getGlobalStats(e){const{header:t}=await this.setup(e);return(0,o.WD)(t.totalSummary)}getFeatures(e,t={}){const{refName:a,start:s,end:r}=e,{bpPerPx:i=0,signal:n,resolution:o=1,statusCallback:c=()=>{}}=t;return(0,u.ObservableCreate)((async n=>{c("Downloading bigwig data");const u=this.getConf("source"),{bigwig:h}=await this.setup(t),l=await h.getFeatures(a,s,r,{...t,basesPerSpan:i/o});for(const t of l){u&&(t.source=u);const s=`${u}:${e.refName}:${t.start}-${t.end}`;t.refName=a,t.uniqueId=s,n.next({get:e=>t[e],id:()=>s,toJSON:()=>t})}n.complete()}),n)}async getMultiRegionFeatureDensityStats(e){return{featureDensity:0}}freeResources(){}}}}]);
+//# sourceMappingURL=4234.63e1ba57.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4234.63e1ba57.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4234.63e1ba57.chunk.js","mappings":"6NAkBe,MAAMA,UAAsBC,EAAAA,uBAMzC,oBAA6B,CAC3B,gBACA,gBACA,kBAGF,cAAcC,CAASC,GACrB,MAAM,eAAEC,EAAiBA,QAAaD,GAAQ,CAAC,EACzCE,EAAKC,KAAKC,cACVC,EAAS,IAAIC,EAAAA,EAAO,CACxBC,YAAYC,EAAAA,EAAAA,cAAaL,KAAKM,QAAQ,kBAAmBP,KAErDQ,QAAeC,EAAAA,EAAAA,cACnB,4BACAV,GACA,IAAMI,EAAOO,UAAUZ,KAEzB,MAAO,CAAEK,SAAQK,SACnB,CAEA,WAAMG,CAAMb,GAOV,OANKG,KAAKW,SACRX,KAAKW,OAASX,KAAKJ,SAASC,GAAMe,OAAOC,IAEvC,MADAb,KAAKW,YAASG,EACRD,CAAC,KAGJb,KAAKW,MACd,CAEA,iBAAaI,CAAYlB,GACvB,MAAM,OAAEU,SAAiBP,KAAKU,MAAMb,GACpC,OAAOmB,OAAOC,KAAKV,EAAOW,WAC5B,CAEA,iBAAaC,CAAYC,GACvB,MAAM,OAAEb,SAAiBP,KAAKU,QAC9B,OAAOH,EAAOc,aAAaD,IAAQE,IACrC,CAEA,oBAAaC,CAAe1B,GAC1B,MAAM,OAAEU,SAAiBP,KAAKU,MAAMb,GACpC,OAAO2B,EAAAA,EAAAA,IAAajB,EAAOkB,aAC7B,CAEOC,WAAAA,CAAYC,EAAgB9B,EAAsB,CAAC,GACxD,MAAM,QAAE+B,EAAO,MAAEC,EAAK,IAAEC,GAAQH,GAC1B,QACJI,EAAU,EAAC,OACXC,EAAM,WACNC,EAAa,EAAC,eACdnC,EAAiBA,QACfD,EACJ,OAAOqC,EAAAA,EAAAA,mBAA0BC,UAC/BrC,EAAe,2BACf,MAAMsC,EAASpC,KAAKM,QAAQ,WACtB,OAAEJ,SAAiBF,KAAKU,MAAMb,GAC9BwC,QAAcnC,EAAOwB,YAAYE,EAASC,EAAOC,EAAK,IACvDjC,EACHyC,aAAcP,EAAUE,IAG1B,IAAK,MAAMM,KAAQF,EAAO,CACpBD,IAEFG,EAAKH,OAASA,GAEhB,MAAMI,EAAW,GAAGJ,KAAUT,EAAOC,WAAWW,EAAKV,SAASU,EAAKT,MAEnES,EAAKX,QAAUA,EACfW,EAAKC,SAAWA,EAChBC,EAASC,KAAK,CAEZC,IAAMC,GAAiBL,EAAiCK,GACxDC,GAAIA,IAAML,EAEVM,OAAQA,IAAMP,GAElB,CACAE,EAASM,UAAU,GAClBf,EACL,CAGA,uCAAMgB,CAAkCC,GACtC,MAAO,CAAEC,eAAgB,EAC3B,CAEOC,aAAAA,GAAuB,E","sources":["../../../plugins/wiggle/src/BigWigAdapter/BigWigAdapter.ts"],"sourcesContent":["import { BigWig } from '@gmod/bbi'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { updateStatus, Feature } from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport {\n  rectifyStats,\n  UnrectifiedQuantitativeStats,\n} from '@jbrowse/core/util/stats'\n\ninterface WiggleOptions extends BaseOptions {\n  resolution?: number\n}\n\nexport default class BigWigAdapter extends BaseFeatureDataAdapter {\n  private setupP?: Promise<{\n    bigwig: BigWig\n    header: Awaited<ReturnType<BigWig['getHeader']>>\n  }>\n\n  public static capabilities = [\n    'hasResolution',\n    'hasLocalStats',\n    'hasGlobalStats',\n  ]\n\n  private async setupPre(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const pm = this.pluginManager\n    const bigwig = new BigWig({\n      filehandle: openLocation(this.getConf('bigWigLocation'), pm),\n    })\n    const header = await updateStatus(\n      'Downloading bigwig header',\n      statusCallback,\n      () => bigwig.getHeader(opts),\n    )\n    return { bigwig, header }\n  }\n\n  async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  public async getRefNames(opts?: BaseOptions) {\n    const { header } = await this.setup(opts)\n    return Object.keys(header.refsByName)\n  }\n\n  public async refIdToName(refId: number) {\n    const { header } = await this.setup()\n    return header.refsByNumber[refId]?.name\n  }\n\n  public async getGlobalStats(opts?: BaseOptions) {\n    const { header } = await this.setup(opts)\n    return rectifyStats(header.totalSummary as UnrectifiedQuantitativeStats)\n  }\n\n  public getFeatures(region: Region, opts: WiggleOptions = {}) {\n    const { refName, start, end } = region\n    const {\n      bpPerPx = 0,\n      signal,\n      resolution = 1,\n      statusCallback = () => {},\n    } = opts\n    return ObservableCreate<Feature>(async observer => {\n      statusCallback('Downloading bigwig data')\n      const source = this.getConf('source')\n      const { bigwig } = await this.setup(opts)\n      const feats = await bigwig.getFeatures(refName, start, end, {\n        ...opts,\n        basesPerSpan: bpPerPx / resolution,\n      })\n\n      for (const data of feats) {\n        if (source) {\n          // @ts-expect-error\n          data.source = source\n        }\n        const uniqueId = `${source}:${region.refName}:${data.start}-${data.end}`\n        // @ts-expect-error\n        data.refName = refName\n        data.uniqueId = uniqueId\n        observer.next({\n          // @ts-expect-error\n          get: (str: string) => (data as Record<string, unknown>)[str],\n          id: () => uniqueId,\n          // @ts-expect-error\n          toJSON: () => data,\n        })\n      }\n      observer.complete()\n    }, signal)\n  }\n\n  // always render bigwig instead of calculating a feature density for it\n  async getMultiRegionFeatureDensityStats(_regions: Region[]) {\n    return { featureDensity: 0 }\n  }\n\n  public freeResources(): void {}\n}\n"],"names":["BigWigAdapter","BaseFeatureDataAdapter","setupPre","opts","statusCallback","pm","this","pluginManager","bigwig","BigWig","filehandle","openLocation","getConf","header","updateStatus","getHeader","setup","setupP","catch","e","undefined","getRefNames","Object","keys","refsByName","refIdToName","refId","refsByNumber","name","getGlobalStats","rectifyStats","totalSummary","getFeatures","region","refName","start","end","bpPerPx","signal","resolution","ObservableCreate","async","source","feats","basesPerSpan","data","uniqueId","observer","next","get","str","id","toJSON","complete","getMultiRegionFeatureDensityStats","_regions","featureDensity","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4284.61dbc58f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4284,7706],{94284:(e,t,n)=>{n.r(t),n.d(t,{default:()=>o});var r=n(7706),i=n(99546),a=n(99834),s=n(46377);class o extends s.BaseAdapter{async getData(){const e=this.pluginManager,t=this.getConf("cytobandLocation");if(""===t.uri||"/path/to/cytoband.txt.gz"===t.uri)return[];const n=await(0,a.openLocation)(t,e).readFile(),s=(0,i.isGzip)(n)?await(0,r.unzip)(n):n;return new TextDecoder("utf8",{fatal:!0}).decode(s).split(/\n|\r\n|\r/).filter((e=>!!e.trim())).map(((e,t)=>{const[n,r,a,s,o]=e.split("\t");return new i.SimpleFeature({uniqueId:`${t}`,refName:n,start:+r,end:+a,name:s,type:o})}))}freeResources(){}}},7706:(e,t,n)=>{n.d(t,{sG:()=>d,unzip:()=>s,i2:()=>o});var r=n(35451),i=n(45834),a=n(57864);async function s(e){try{let t,n=0,i=0;const s=[];let o,l=0;do{const r=e.subarray(n);if(o=new a.Inflate,({strm:t}=o),o.push(r,a.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);n+=t.next_in,s[i]=o.result,l+=s[i].length,i+=1}while(t.avail_in);const h=new Uint8Array(l);for(let e=0,t=0;e<s.length;e++)h.set(s[e],t),t+=s[e].length;return r.hp.from(h)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let n;const{minv:i,maxv:s}=t;let o=i.blockPosition,l=i.dataPosition;const h=[],c=[],d=[];let f=0,w=0;do{const t=e.subarray(o-i.blockPosition),r=new a.Inflate;if(({strm:n}=r),r.push(t,a.Z_SYNC_FLUSH),r.err)throw new Error(r.msg);const u=r.result;h.push(u);let g=u.length;c.push(o),d.push(l),1===h.length&&i.dataPosition&&(h[0]=h[0].subarray(i.dataPosition),g=h[0].length);const p=o;if(o+=n.next_in,l+=g,p>=s.blockPosition){h[w]=h[w].subarray(0,s.blockPosition===i.blockPosition?s.dataPosition-i.dataPosition+1:s.dataPosition+1),c.push(o),d.push(l),f+=h[w].length;break}f+=h[w].length,w++}while(n.avail_in);const u=new Uint8Array(f);for(let e=0,t=0;e<h.length;e++)u.set(h[e],t),t+=h[e].length;return{buffer:r.hp.from(u),cpositions:c,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var l=n(59086),h=n.n(l);class c{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new i.EY(t)}}_readLongWithOverflow(e,t=0,n=!0){const r=h().fromBytesLE(e.slice(t,t+8),n);if(r.greaterThan(Number.MAX_SAFE_INTEGER)||r.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return r.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=r.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const n=new Array(t+1);n[0]=[0,0];const i=16*t;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=r.hp.allocUnsafe(i),await this.filehandle.read(e,0,i,8);for(let r=0;r<t;r+=1){const t=this._readLongWithOverflow(e,16*r),i=this._readLongWithOverflow(e,16*r+8);n[r+1]=[t,i]}return n}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const n=t+e;if(0===e)return[];const r=await this._getIndex(),i=[],a=(e,n)=>{const r=e[1],i=n?n[1]:1/0;return r<=t&&i>t?0:r<t?-1:1};let s=0,o=r.length-1,l=Math.floor(r.length/2),h=a(r[l],r[l+1]);for(;0!==h;)h>0?o=l-1:h<0&&(s=l+1),l=Math.ceil((o-s)/2)+s,h=a(r[l],r[l+1]);i.push(r[l]);let c=l+1;for(;c<r.length&&(i.push(r[c]),!(r[c][1]>=n));c+=1);return i[i.length-1][1]<n&&i.push([]),i}}class d{constructor({filehandle:e,path:t,gziFilehandle:n,gziPath:r}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new i.EY(t)}if(!n&&!r&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:n,path:n||r||!t?`${t}.gzi`:r})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),n=r.hp.allocUnsafe(4),{bytesRead:i}=await this.filehandle.read(n,0,4,t-28-4);if(4!==i)throw new Error("read error");return e+n.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[n]){let r=n;r||(r=(await this.filehandle.stat()).size);const i=r-t;return await this.filehandle.read(e,0,i,t),await s(e.slice(0,i))}async read(e,t,n,i){const a=await this.gzi.getRelevantBlocksForRead(n,i),s=r.hp.allocUnsafe(65536);let o=t,l=0;for(let t=0;t<a.length-1;t+=1){const r=await this._readAndUncompressBlock(s,a[t],a[t+1]),[,h]=a[t],c=h>=i?0:i-h,d=Math.min(i+n,h+r.length)-h;c>=0&&c<r.length&&(r.copy(e,o,c,d),o+=d-c,l+=d-c)}return{bytesRead:l,buffer:e}}}}}]);
+//# sourceMappingURL=4284.61dbc58f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4284.61dbc58f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4284.61dbc58f.chunk.js","mappings":"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","sources":["../../../packages/core/data_adapters/CytobandAdapter/CytobandAdapter.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts"],"sourcesContent":["import { unzip } from '@gmod/bgzf-filehandle'\n\n// locals\nimport { isGzip, SimpleFeature } from '../../util'\nimport { openLocation } from '../../util/io'\nimport { BaseAdapter } from '../BaseAdapter'\n\nexport default class CytobandAdapter extends BaseAdapter {\n  async getData() {\n    const pm = this.pluginManager\n    const loc = this.getConf('cytobandLocation')\n    if (loc.uri === '' || loc.uri === '/path/to/cytoband.txt.gz') {\n      return []\n    }\n    const buffer = await openLocation(loc, pm).readFile()\n    const buf = isGzip(buffer) ? await unzip(buffer) : buffer\n    const text = new TextDecoder('utf8', { fatal: true }).decode(buf)\n    return text\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f.trim())\n      .map((line, i) => {\n        const [refName, start, end, name, type] = line.split('\\t')\n        return new SimpleFeature({\n          uniqueId: `${i}`,\n          refName: refName!,\n          start: +start!,\n          end: +end!,\n          name: name!,\n          type: type!,\n        })\n      })\n  }\n\n  freeResources(/* { region } */): void {}\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n"],"names":["CytobandAdapter","BaseAdapter","getData","pm","this","pluginManager","loc","getConf","uri","buffer","openLocation","readFile","buf","isGzip","unzip","TextDecoder","fatal","decode","split","filter","f","trim","map","line","i","refName","start","end","name","type","SimpleFeature","uniqueId","freeResources","async","inputData","strm","pos","chunks","inflator","totalSize","remainingInput","subarray","Inflate","push","Z_SYNC_FLUSH","err","Error","msg","next_in","result","length","avail_in","Uint8Array","offset","set","from","e","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","len","origCpos","GziIndex","constructor","filehandle","path","TypeError","_readLongWithOverflow","unsigned","long","slice","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","index","_readIndex","allocUnsafe","read","numEntries","entries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","entry","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","Object","assign","size","getUncompressedFileSize","blocks","undefined","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","next","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4345.0a9072cc.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4345],{53740:(e,t,n)=>{n.d(t,{A:()=>d});var r=n(7552),o=n(68446),a=n(99546),l=n(68584),s=n(9502);function i(e,t){const n=t?(0,s.h)(t):void 0,r=e.get("start");let o=e.get("end");const a=e.get("strand"),l=e.get("mate"),i=e.get("refName");let c,m=0,u=0,f=0,g=0;if(["<TRA","<DEL","<INV","<INS","<DUP","<CNV"].some((e=>t?.startsWith(e)))){const t=e.get("INFO"),n=t?.END?.[0]??o;c=t?.CHR2?.[0]??i,m=n,u=n-1,o=r+1}else if(n?.MatePosition){const e=n.MatePosition.split(":");g="left"===n.MateDirection?1:-1,f="left"===n.Join?-1:1,m=+e[1],u=+e[1]-1,c=e[0]}return{k1:{refName:i,start:r,end:o,strand:a,mateDirection:g},k2:l??{refName:c||"unknown",end:m,start:u,mateDirection:f}}}function c(e,t){const{k1:n,k2:r}=i(e,t);return[e.get("name"),e.get("id"),(0,a.assembleLocString)(n),(0,a.assembleLocString)(r),e.get("INFO")?.SVTYPE,t].filter((e=>!!e)).join(" - ")}function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(null,arguments)}const u=(0,r.lazy)((()=>n.e(2241).then(n.bind(n,72241)))),f=(0,o.observer)((function({model:e,feature:t,alt:n,assembly:o,view:s}){const[f,g]=(0,r.useState)(!1),{height:d}=e,{k1:h,k2:b}=i(t,n),k=(0,r.useRef)(null),p=(0,l.getConf)(e,"color",{feature:t,alt:n}),v=o.getCanonicalRefName(h.refName)||h.refName,E=o.getCanonicalRefName(b.refName)||b.refName,w=h.start,y=b.start,N=s.bpToPx({refName:v,coord:w})?.offsetPx,P=s.bpToPx({refName:E,coord:y})?.offsetPx;if(void 0!==N&&void 0!==P){const o=(P-N)/2,l=Math.abs(o),i=Math.min(d,l),v=N-s.offsetPx,E=P-s.offsetPx,w=f?"black":p,y=3;return l>1?r.createElement(r.Fragment,null,r.createElement("path",m({d:`M ${v} 0 C ${v} ${i}, ${E} ${i}, ${E} 0`,ref:k},(0,a.getStrokeProps)(w),{strokeWidth:y,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},fill:"none",pointerEvents:"stroke"})),h.mateDirection?r.createElement("line",m({},(0,a.getStrokeProps)(w),{strokeWidth:y,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},x1:v,x2:v+20*h.mateDirection,y1:1.5,y2:1.5})):null,b.mateDirection?r.createElement("line",m({},(0,a.getStrokeProps)(w),{strokeWidth:y,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},x1:E,x2:E+20*b.mateDirection,y1:1.5,y2:1.5})):null,f?r.createElement(r.Suspense,{fallback:null},r.createElement(u,{contents:c(t,n)})):null):null}return null})),g=(0,o.observer)((function({model:e,exportSVG:t,children:n}){const{height:o}=e,l=(0,a.getContainingView)(e),s=Math.round(l.dynamicBlocks.totalWidthPx);return t?n:r.createElement("svg",{width:s,height:o},n)})),d=(0,o.observer)((function({model:e,exportSVG:t}){const n=(0,a.getContainingView)(e),o=(0,a.getSession)(e),{assemblyManager:l}=o,{features:s}=e,i=l.get(n.assemblyNames[0]);return i?r.createElement(g,{model:e,exportSVG:t},s?.map((t=>{const a=t.get("ALT");return a?.map((a=>r.createElement(f,{key:`${t.id()}-${a}`,session:o,feature:t,alt:a,view:n,model:e,assembly:i})))??r.createElement(f,{key:t.id(),session:o,feature:t,view:n,model:e,assembly:i})}))):null}))},44345:(e,t,n)=>{n.d(t,{renderArcSvg:()=>l});var r=n(7552),o=n(99546),a=n(53740);async function l(e,t){await(0,o.when)((()=>!e.loading));const n=(0,o.getContainingView)(e).dynamicBlocks.totalWidthPx,l=e.height,s=`arc-${e.id}`;return r.createElement(r.Fragment,null,r.createElement("defs",null,r.createElement("clipPath",{id:s},r.createElement("rect",{x:0,y:0,width:n,height:l}))),r.createElement("g",{clipPath:`url(#${s})`},r.createElement(a.A,{model:e,exportSVG:!0})))}}}]);
+//# sourceMappingURL=4345.0a9072cc.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4345.0a9072cc.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4345.0a9072cc.chunk.js","mappings":"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","sources":["../../../plugins/arc/src/LinearPairedArcDisplay/components/util.ts","../../../plugins/arc/src/LinearPairedArcDisplay/components/Arcs.tsx","../../../plugins/arc/src/LinearPairedArcDisplay/renderSvg.tsx"],"sourcesContent":["import { parseBreakend } from '@gmod/vcf'\nimport { Feature, assembleLocString } from '@jbrowse/core/util'\n\nexport function makeFeaturePair(feature: Feature, alt?: string) {\n  const bnd = alt ? parseBreakend(alt) : undefined\n  const start = feature.get('start')\n  let end = feature.get('end')\n  const strand = feature.get('strand')\n  const mate = feature.get('mate') as\n    | {\n        refName: string\n        start: number\n        end: number\n        mateDirection?: number\n      }\n    | undefined\n  const refName = feature.get('refName')\n\n  let mateRefName: string | undefined\n  let mateEnd = 0\n  let mateStart = 0\n  let joinDirection = 0\n  let mateDirection = 0\n\n  // one sided bracket used, because there could be <INS:ME> and we just check\n  // startswith below\n  const symbolicAlleles = ['<TRA', '<DEL', '<INV', '<INS', '<DUP', '<CNV']\n  if (symbolicAlleles.some(a => alt?.startsWith(a))) {\n    // END is defined to be a single value, not an array. CHR2 not defined in\n    // VCF spec, but should be similar\n    const info = feature.get('INFO')\n    const e = info?.END?.[0] ?? end\n    mateRefName = info?.CHR2?.[0] ?? refName\n    mateEnd = e\n    mateStart = e - 1\n    // re-adjust the arc to be from start to end of feature by re-assigning end\n    // to the 'mate'\n    end = start + 1\n  } else if (bnd?.MatePosition) {\n    const matePosition = bnd.MatePosition.split(':')\n    mateDirection = bnd.MateDirection === 'left' ? 1 : -1\n    joinDirection = bnd.Join === 'left' ? -1 : 1\n    mateEnd = +matePosition[1]!\n    mateStart = +matePosition[1]! - 1\n    mateRefName = matePosition[0]\n  }\n\n  return {\n    k1: {\n      refName,\n      start,\n      end,\n      strand,\n      mateDirection,\n    },\n    k2: mate ?? {\n      refName: mateRefName || 'unknown',\n      end: mateEnd,\n      start: mateStart,\n      mateDirection: joinDirection,\n    },\n  }\n}\n\nexport function makeSummary(feature: Feature, alt?: string) {\n  const { k1, k2 } = makeFeaturePair(feature, alt)\n  return [\n    feature.get('name'),\n    feature.get('id'),\n    assembleLocString(k1),\n    assembleLocString(k2),\n    feature.get('INFO')?.SVTYPE,\n    alt,\n  ]\n    .filter(f => !!f)\n    .join(' - ')\n}\n","import React, { lazy, Suspense, useRef, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  AbstractSessionModel,\n  Feature,\n  getContainingView,\n  getSession,\n  getStrokeProps,\n} from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { getConf } from '@jbrowse/core/configuration'\n\n// local\nimport { LinearArcDisplayModel } from '../model'\nimport { makeFeaturePair, makeSummary } from './util'\n\nconst ArcTooltip = lazy(() => import('../../ArcTooltip'))\n\ntype LGV = LinearGenomeViewModel\n\nconst Arc = observer(function ({\n  model,\n  feature,\n  alt,\n  assembly,\n  view,\n}: {\n  feature: Feature\n  alt?: string\n  model: LinearArcDisplayModel\n  assembly: Assembly\n  session: AbstractSessionModel\n  view: LinearGenomeViewModel\n}) {\n  const [mouseOvered, setMouseOvered] = useState(false)\n  const { height } = model\n  const { k1, k2 } = makeFeaturePair(feature, alt)\n  const ref = useRef<SVGPathElement>(null)\n  const c = getConf(model, 'color', { feature, alt })\n  const ra1 = assembly.getCanonicalRefName(k1.refName) || k1.refName\n  const ra2 = assembly.getCanonicalRefName(k2.refName) || k2.refName\n  const p1 = k1.start\n  const p2 = k2.start\n  const r1 = view.bpToPx({ refName: ra1, coord: p1 })?.offsetPx\n  const r2 = view.bpToPx({ refName: ra2, coord: p2 })?.offsetPx\n\n  if (r1 !== undefined && r2 !== undefined) {\n    const radius = (r2 - r1) / 2\n    const absrad = Math.abs(radius)\n    const destY = Math.min(height, absrad)\n    const p1 = r1 - view.offsetPx\n    const p2 = r2 - view.offsetPx\n    const left = p1\n    const right = p2\n    const col = mouseOvered ? 'black' : c\n    const sw = 3\n\n    return absrad > 1 ? (\n      <>\n        <path\n          d={`M ${left} 0 C ${left} ${destY}, ${right} ${destY}, ${right} 0`}\n          ref={ref}\n          {...getStrokeProps(col)}\n          strokeWidth={sw}\n          onMouseOut={() => {\n            setMouseOvered(false)\n          }}\n          onMouseOver={() => {\n            setMouseOvered(true)\n          }}\n          onClick={() => {\n            model.selectFeature(feature)\n          }}\n          fill=\"none\"\n          pointerEvents=\"stroke\"\n        />\n        {k1.mateDirection ? (\n          <line\n            {...getStrokeProps(col)}\n            strokeWidth={sw}\n            onMouseOut={() => {\n              setMouseOvered(false)\n            }}\n            onMouseOver={() => {\n              setMouseOvered(true)\n            }}\n            onClick={() => {\n              model.selectFeature(feature)\n            }}\n            x1={left}\n            x2={left + k1.mateDirection * 20}\n            y1={1.5}\n            y2={1.5}\n          />\n        ) : null}\n        {k2.mateDirection ? (\n          <line\n            {...getStrokeProps(col)}\n            strokeWidth={sw}\n            onMouseOut={() => {\n              setMouseOvered(false)\n            }}\n            onMouseOver={() => {\n              setMouseOvered(true)\n            }}\n            onClick={() => {\n              model.selectFeature(feature)\n            }}\n            x1={right}\n            x2={right + k2.mateDirection * 20}\n            y1={1.5}\n            y2={1.5}\n          />\n        ) : null}\n        {mouseOvered ? (\n          <Suspense fallback={null}>\n            <ArcTooltip contents={makeSummary(feature, alt)} />\n          </Suspense>\n        ) : null}\n      </>\n    ) : null\n  }\n  return null\n})\n\nconst Wrapper = observer(function ({\n  model,\n  exportSVG,\n  children,\n}: {\n  model: LinearArcDisplayModel\n  exportSVG?: boolean\n  children: React.ReactNode\n}) {\n  const { height } = model\n  const view = getContainingView(model) as LGV\n  const width = Math.round(view.dynamicBlocks.totalWidthPx)\n  return exportSVG ? (\n    children\n  ) : (\n    <svg width={width} height={height}>\n      {children}\n    </svg>\n  )\n})\n\nconst Arcs = observer(function ({\n  model,\n  exportSVG,\n}: {\n  model: LinearArcDisplayModel\n  exportSVG?: boolean\n}) {\n  const view = getContainingView(model) as LGV\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const { features } = model\n  const assembly = assemblyManager.get(view.assemblyNames[0]!)\n\n  return assembly ? (\n    <Wrapper model={model} exportSVG={exportSVG}>\n      {features?.map(f => {\n        const alts = f.get('ALT') as string[] | undefined\n        return (\n          alts?.map(a => (\n            <Arc\n              key={`${f.id()}-${a}`}\n              session={session}\n              feature={f}\n              alt={a}\n              view={view}\n              model={model}\n              assembly={assembly}\n            />\n          )) ?? (\n            <Arc\n              key={f.id()}\n              session={session}\n              feature={f}\n              view={view}\n              model={model}\n              assembly={assembly}\n            />\n          )\n        )\n      })}\n    </Wrapper>\n  ) : null\n})\n\nexport default Arcs\n","import React from 'react'\nimport { getContainingView, when } from '@jbrowse/core/util'\n\n// locals\nimport { LinearArcDisplayModel } from './model'\nimport Arcs from './components/Arcs'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\nexport async function renderArcSvg(\n  model: LinearArcDisplayModel,\n  _opts: {\n    rasterizeLayers?: boolean\n  },\n) {\n  await when(() => !model.loading)\n\n  const view = getContainingView(model) as LinearGenomeViewModel\n  const width = view.dynamicBlocks.totalWidthPx\n  const height = model.height\n  const clipid = `arc-${model.id}`\n  return (\n    <>\n      <defs>\n        <clipPath id={clipid}>\n          <rect x={0} y={0} width={width} height={height} />\n        </clipPath>\n      </defs>\n      <g clipPath={`url(#${clipid})`}>\n        <Arcs model={model} exportSVG={true} />\n      </g>\n    </>\n  )\n}\n"],"names":["makeFeaturePair","feature","alt","bnd","parseBreakend","undefined","start","get","end","strand","mate","refName","mateRefName","mateEnd","mateStart","joinDirection","mateDirection","some","a","startsWith","info","e","END","CHR2","MatePosition","matePosition","split","MateDirection","Join","k1","k2","makeSummary","assembleLocString","SVTYPE","filter","f","join","ArcTooltip","lazy","Arc","observer","model","assembly","view","mouseOvered","setMouseOvered","useState","height","ref","useRef","c","getConf","ra1","getCanonicalRefName","ra2","p1","p2","r1","bpToPx","coord","offsetPx","r2","radius","absrad","Math","abs","destY","min","left","right","col","sw","React","_extends","d","getStrokeProps","strokeWidth","onMouseOut","onMouseOver","onClick","selectFeature","fill","pointerEvents","x1","x2","y1","y2","Suspense","fallback","contents","Wrapper","exportSVG","children","getContainingView","width","round","dynamicBlocks","totalWidthPx","session","getSession","assemblyManager","features","assemblyNames","map","alts","key","id","async","renderArcSvg","_opts","when","loading","clipid","x","y","clipPath","Arcs"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/439.bdc14632.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[439],{1773:(r,e,o)=>{o.d(e,{A:()=>A});var s=o(7552),a=o(93878),t=o(70799),n=o(51148),d=o(4785),i=o(943),l=o(50885),u=o(69500);const c=(0,n.Ay)(i.A,{name:"MuiCard",slot:"Root",overridesResolver:(r,e)=>e.root})({overflow:"hidden"}),A=s.forwardRef((function(r,e){const o=(0,d.b)({props:r,name:"MuiCard"}),{className:s,raised:n=!1,...i}=o,A={...o,raised:n},b=(r=>{const{classes:e}=r;return(0,t.A)({root:["root"]},l.T,e)})(A);return(0,u.jsx)(c,{className:(0,a.A)(b.root,s),elevation:n?8:void 0,ref:e,ownerState:A,...i})}))},50885:(r,e,o)=>{o.d(e,{A:()=>n,T:()=>t});var s=o(33761),a=o(85693);function t(r){return(0,a.Ay)("MuiCard",r)}const n=(0,s.A)("MuiCard",["root"])},50439:(r,e,o)=>{o.r(e),o.d(e,{cardClasses:()=>a.A,default:()=>s.A,getCardUtilityClass:()=>a.T});var s=o(1773),a=o(50885)}}]);
+//# sourceMappingURL=439.bdc14632.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/439.bdc14632.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/439.bdc14632.chunk.js","mappings":"gOAYA,MASMA,GAAW,QAAO,IAAO,CAC7BC,KAAM,UACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAH9B,CAId,CACDC,SAAU,WAyDZ,EAvD0B,cAAiB,SAAcC,EAASC,GAChE,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,aAEF,UACJS,EAAS,OACTC,GAAS,KACNC,GACDR,EACES,EAAa,IACdT,EACHO,UAEIG,EA9BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZP,KAAM,CAAC,SAEoB,IAAqBQ,EAAQ,EAuB1CC,CAAkBF,GAClC,OAAoB,SAAKb,EAAU,CACjCU,WAAW,OAAKI,EAAQR,KAAMI,GAC9BM,UAAWL,EAAS,OAAIM,EACxBR,IAAKA,EACLI,WAAYA,KACTD,GAEP,G,qEChDO,SAASM,EAAoBhB,GAClC,OAAO,QAAqB,UAAWA,EACzC,CACA,MACA,GADoB,OAAuB,UAAW,CAAC,Q","sources":["../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;"],"names":["CardRoot","name","slot","overridesResolver","props","styles","root","overflow","inProps","ref","className","raised","other","ownerState","classes","useUtilityClasses","elevation","undefined","getCardUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4395.8fda7b8b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4395],{44395:(s,e,a)=>{a.r(e),a.d(e,{default:()=>b.A,getInputUtilityClass:()=>l.B,inputClasses:()=>l.A});var b=a(60947),l=a(7495)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4414.7f4caeab.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4414],{64414:(e,s,i)=>{i.r(s),i.d(s,{default:()=>a.A,dividerClasses:()=>b.A,getDividerUtilityClass:()=>b.K});var a=i(24387),b=i(919)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4435.a57cabe2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4435],{15560:(e,t,a)=>{a.d(t,{A:()=>i});const i=a(7552).createContext()},70156:(e,t,a)=>{a.d(t,{A:()=>i});const i=a(7552).createContext()},75199:(e,t,a)=>{a.d(t,{A:()=>b});var i=a(7552),r=a(93878),n=a(70799),o=a(72639),l=a(15622),s=a(15560),d=a(70156),p=a(51148),g=a(60129),c=a(4785),y=a(48459),h=a(69500);const x=(0,p.Ay)("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant],t[`size${(0,l.A)(a.size)}`],"normal"!==a.padding&&t[`padding${(0,l.A)(a.padding)}`],"inherit"!==a.align&&t[`align${(0,l.A)(a.align)}`],a.stickyHeader&&t.stickyHeader]}})((0,g.A)((({theme:e})=>({...e.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid\n    ${"light"===e.palette.mode?(0,o.a)((0,o.X4)(e.palette.divider,1),.88):(0,o.e$)((0,o.X4)(e.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(e.vars||e).palette.text.primary}},{props:{variant:"footer"},style:{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${y.A.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:e})=>e.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default}}]})))),b=i.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiTableCell"}),{align:o="inherit",className:p,component:g,padding:b,scope:u,size:A,sortDirection:v,variant:m,...f}=a,C=i.useContext(s.A),k=i.useContext(d.A),w=k&&"head"===k.variant;let z;z=g||(w?"th":"td");let T=u;"td"===z?T=void 0:!T&&w&&(T="col");const H=m||k&&k.variant,$={...a,align:o,component:z,padding:b||(C&&C.padding?C.padding:"normal"),size:A||(C&&C.size?C.size:"medium"),sortDirection:v,stickyHeader:"head"===H&&C&&C.stickyHeader,variant:H},R=(e=>{const{classes:t,variant:a,align:i,padding:r,size:o,stickyHeader:s}=e,d={root:["root",a,s&&"stickyHeader","inherit"!==i&&`align${(0,l.A)(i)}`,"normal"!==r&&`padding${(0,l.A)(r)}`,`size${(0,l.A)(o)}`]};return(0,n.A)(d,y.r,t)})($);let M=null;return v&&(M="asc"===v?"ascending":"descending"),(0,h.jsx)(x,{as:z,ref:t,className:(0,r.A)(R.root,p),"aria-sort":M,scope:T,ownerState:$,...f})}))},74435:(e,t,a)=>{a.r(t),a.d(t,{default:()=>i.A,getTableCellUtilityClass:()=>r.r,tableCellClasses:()=>r.A});var i=a(75199),r=a(48459)},48459:(e,t,a)=>{a.d(t,{A:()=>o,r:()=>n});var i=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableCell",e)}const o=(0,i.A)("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"])}}]);
+//# sourceMappingURL=4435.a57cabe2.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4435.a57cabe2.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4435.a57cabe2.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Table/TableContext.js","../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableCell/TableCell.js","../../../node_modules/@mui/material/TableCell/tableCellClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, alpha, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport TableContext from \"../Table/TableContext.js\";\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableCellClasses, { getTableCellUtilityClass } from \"./tableCellClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16,\n  variants: [{\n    props: {\n      variant: 'head'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary,\n      lineHeight: theme.typography.pxToRem(24),\n      fontWeight: theme.typography.fontWeightMedium\n    }\n  }, {\n    props: {\n      variant: 'body'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary\n    }\n  }, {\n    props: {\n      variant: 'footer'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      lineHeight: theme.typography.pxToRem(21),\n      fontSize: theme.typography.pxToRem(12)\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: '6px 16px',\n      [`&.${tableCellClasses.paddingCheckbox}`]: {\n        width: 24,\n        // prevent the checkbox column from growing\n        padding: '0 12px 0 16px',\n        '& > *': {\n          padding: 0\n        }\n      }\n    }\n  }, {\n    props: {\n      padding: 'checkbox'\n    },\n    style: {\n      width: 48,\n      // prevent the checkbox column from growing\n      padding: '0 0 0 4px'\n    }\n  }, {\n    props: {\n      padding: 'none'\n    },\n    style: {\n      padding: 0\n    }\n  }, {\n    props: {\n      align: 'left'\n    },\n    style: {\n      textAlign: 'left'\n    }\n  }, {\n    props: {\n      align: 'center'\n    },\n    style: {\n      textAlign: 'center'\n    }\n  }, {\n    props: {\n      align: 'right'\n    },\n    style: {\n      textAlign: 'right',\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      align: 'justify'\n    },\n    style: {\n      textAlign: 'justify'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 2,\n      backgroundColor: (theme.vars || theme).palette.background.default\n    }\n  }]\n})));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/React.forwardRef(function TableCell(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n    align = 'inherit',\n    className,\n    component: componentProp,\n    padding: paddingProp,\n    scope: scopeProp,\n    size: sizeProp,\n    sortDirection,\n    variant: variantProp,\n    ...other\n  } = props;\n  const table = React.useContext(TableContext);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = {\n    ...props,\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/_jsx(TableCellRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body', 'footer', 'head']), PropTypes.string])\n} : void 0;\nexport default TableCell;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n  return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;"],"names":["TableCellRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","size","padding","align","stickyHeader","theme","typography","body2","display","verticalAlign","borderBottom","vars","palette","TableCell","border","mode","divider","textAlign","variants","style","color","text","primary","lineHeight","pxToRem","fontWeight","fontWeightMedium","secondary","fontSize","paddingCheckbox","width","flexDirection","position","top","zIndex","backgroundColor","background","default","inProps","ref","className","component","componentProp","paddingProp","scope","scopeProp","sizeProp","sortDirection","variantProp","other","table","tablelvl2","isHeadCell","undefined","classes","slots","useUtilityClasses","ariaSort","as","getTableCellUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4456.93a06b74.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4456],{45858:(e,n,t)=>{if(t.d(n,{DH:()=>c,qk:()=>a}),8792==t.j)var o=t(36422);var r=t(8832);function c(e){return o.types.model({id:r.ElementId,name:o.types.string,margin:0}).volatile((()=>({selection:void 0,hovered:void 0}))).views((e=>({get root(){return(0,o.getParent)(e)}}))).views((e=>({get jbrowse(){return e.root.jbrowse},get rpcManager(){return e.root.rpcManager},get configuration(){return this.jbrowse.configuration},get adminMode(){return e.root.adminMode},get textSearchManager(){return e.root.textSearchManager}}))).views((e=>({get assemblies(){return e.jbrowse.assemblies}}))).actions((e=>({setSelection(n){e.selection=n},clearSelection(){e.selection=void 0},setHovered(n){e.hovered=n}})))}function a(e){return"id"in e&&"name"in e&&"root"in e}},49204:(e,n,t)=>{t.d(n,{F:()=>a,M:()=>i});var o=t(68584);if(8792==t.j)var r=t(36422);var c=t(45858);function a(e){return r.types.model({connectionInstances:r.types.array(e.pluggableMstType("connection","stateModel"))}).views((e=>({get connections(){const{jbrowse:n}=e;return n.connections}}))).actions((n=>({makeConnection(t,r={}){const c=t.type;if(!c)throw new Error("track configuration has no `type` listed");const a=(0,o.readConfObject)(t,"name");if(!e.getConnectionType(c))throw new Error(`unknown connection type ${c}`);const i=n.connectionInstances.push({...r,name:a,type:c,configuration:t});return n.connectionInstances[i-1]},prepareToBreakConnection(e){const t=n,r=[],c={},a=(0,o.readConfObject)(e,"name"),i=n.connectionInstances.find((e=>e.name===a));if(i){for(const e of i.tracks){const n=t.getReferring(e);t.removeReferring(n,e,r,c)}return[()=>{r.forEach((e=>{e()})),this.breakConnection(e)},c]}},breakConnection(e){const t=(0,o.readConfObject)(e,"name"),r=n.connectionInstances.find((e=>e.name===t));if(!r)throw new Error(`no connection found with name ${t}`);n.connectionInstances.remove(r)},deleteConnection(e){const{jbrowse:t}=n;return t.deleteConnectionConf(e)},addConnectionConf(e){const{jbrowse:t}=n;return t.addConnectionConf(e)},clearConnections(){n.connectionInstances.clear()}})))}function i(e){return(0,c.qk)(e)&&"connectionInstances"in e}},44456:(e,n,t)=>{t.r(n),t.d(n,{default:()=>k});var o=t(7552),r=t(85059),c=t(27897),a=t(96403),i=t(22133),s=t(5401),l=t(99546),m=t(75785),u=t(68446),d=t(59099),g=t(49823);const p=(0,u.observer)((function({connectionType:e,model:n,session:t}){const r=e.configEditorComponent||d.SS;return o.createElement(o.Suspense,{fallback:o.createElement(g.LoadingEllipses,null)},o.createElement(r,{model:{target:n},session:t}))}));var f=t(1343),C=t(61723),b=t(29629),v=t(52686);const h=(0,u.observer)((function({connectionTypeChoices:e,connectionType:n,setConnectionType:t}){const r=e[0];return(0,o.useEffect)((()=>{n||t(r)}),[n,r,t]),o.createElement("form",{autoComplete:"off"},n?o.createElement(f.A,{value:n.name,label:"connectionType",helperText:n.description?o.createElement(o.Fragment,null,n.description,n.url?o.createElement(C.A,{href:n.url,rel:"noopener noreferrer",target:"_blank"},o.createElement(v.A,null)):null):null,select:!0,fullWidth:!0,onChange:n=>{t(e.find((e=>e.name===n.target.value)))},variant:"outlined"},e.map((e=>o.createElement(b.A,{key:e.name,value:e.name},e.displayName||e.name)))):null)}));var E=t(49204);const w=(0,m.n9)()((e=>({root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)}}))),y=["Select a Connection Type","Configure Connection"],k=(0,u.observer)((function({model:e}){const[n,t]=(0,o.useState)(),[m,u]=(0,o.useState)(),[d,g]=(0,o.useState)(0),{classes:f}=w(),C=(0,l.getSession)(e),{pluginManager:b}=(0,l.getEnv)(C),v=(0,o.useMemo)((()=>n?.configSchema.create({connectionId:m},(0,l.getEnv)(e))),[m,n,e]);return o.createElement("div",{className:f.root},o.createElement(r.A,{className:f.stepper,activeStep:d,orientation:"vertical"},y.map((r=>o.createElement(c.A,{key:r},o.createElement(a.A,null,r),o.createElement(i.A,null,0===d?o.createElement(h,{connectionTypeChoices:b.getConnectionElements(),connectionType:n,setConnectionType:e=>{t(e),e&&u(`${e.name}-${Date.now()}`)}}):n&&v?o.createElement(p,{connectionType:n,model:v,session:C}):null,o.createElement("div",{className:f.actionsContainer},o.createElement(s.A,{disabled:0===d,onClick:()=>{g(d-1)},className:f.button},"Back"),o.createElement(s.A,{disabled:!(0===d&&n||1===d&&v),variant:"contained",color:"primary",onClick:()=>{if(d===y.length-1){if(v&&(0,E.M)(C)){const e=C.addConnectionConf(v);C.makeConnection(e)}else C.notify("No config model to add");(0,l.isSessionModelWithWidgets)(C)&&C.hideWidget(e)}else g(d+1)},className:f.button,"data-testid":"addConnectionNext"},d===y.length-1?"Connect":"Next"))))))))}))}}]);
+//# sourceMappingURL=4456.93a06b74.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4456.93a06b74.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4456.93a06b74.chunk.js","mappings":"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","sources":["../../../packages/product-core/src/Session/BaseSession.ts","../../../packages/product-core/src/Session/Connections.ts","../../../plugins/data-management/src/AddConnectionWidget/components/ConfigureConnection.tsx","../../../plugins/data-management/src/AddConnectionWidget/components/ConnectionTypeSelect.tsx","../../../plugins/data-management/src/AddConnectionWidget/components/AddConnectionWidget.tsx"],"sourcesContent":["import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  IAnyStateTreeNode,\n  Instance,\n  getParent,\n  isStateTreeNode,\n  types,\n} from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\nimport { BaseAssemblyConfigSchema } from '@jbrowse/core/assemblyManager'\n\n// locals\nimport type { BaseRootModelType } from '../RootModel/BaseRootModel'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\n\n/**\n * #stateModel BaseSessionModel\n *\n * base session shared by all JBrowse products. Be careful what you include\n * here, everything will use it.\n */\nexport function BaseSessionModel<\n  ROOT_MODEL_TYPE extends BaseRootModelType,\n  JB_CONFIG_SCHEMA extends AnyConfigurationSchemaType,\n>(_pluginManager: PluginManager) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      name: types.string,\n      /**\n       * #property\n       */\n      margin: 0,\n    })\n    .volatile(() => ({\n      /**\n       * #volatile\n       * this is the globally \"selected\" object. can be anything. code that\n       * wants to deal with this should examine it to see what kind of thing it\n       * is.\n       */\n      selection: undefined as unknown,\n      /**\n       * #volatile\n       * this is the globally \"hovered\" object. can be anything. code that\n       * wants to deal with this should examine it to see what kind of thing it\n       * is.\n       */\n      hovered: undefined as unknown,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get root() {\n        return getParent<ROOT_MODEL_TYPE>(self)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get jbrowse() {\n        return self.root.jbrowse\n      },\n      /**\n       * #getter\n       */\n      get rpcManager() {\n        return self.root.rpcManager\n      },\n      /**\n       * #getter\n       */\n      get configuration(): Instance<JB_CONFIG_SCHEMA> {\n        return this.jbrowse.configuration\n      },\n      /**\n       * #getter\n       */\n      get adminMode() {\n        return self.root.adminMode\n      },\n\n      /**\n       * #getter\n       */\n      get textSearchManager() {\n        return self.root.textSearchManager\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get assemblies(): Instance<BaseAssemblyConfigSchema>[] {\n        return self.jbrowse.assemblies\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       * set the global selection, i.e. the globally-selected object. can be a\n       * feature, a view, just about anything\n       */\n      setSelection(thing: unknown) {\n        self.selection = thing\n      },\n\n      /**\n       * #action\n       * clears the global selection\n       */\n      clearSelection() {\n        self.selection = undefined\n      },\n      /**\n       * #action\n       */\n      setHovered(thing: unknown) {\n        self.hovered = thing\n      },\n    }))\n}\n\n/** Session mixin MST type for the most basic session */\nexport type BaseSessionType = ReturnType<typeof BaseSessionModel>\n\n/** Instance of the most basic possible session */\nexport type BaseSession = Instance<BaseSessionType>\n\n/** Type guard for BaseSession */\nexport function isBaseSession(thing: IAnyStateTreeNode): thing is BaseSession {\n  return 'id' in thing && 'name' in thing && 'root' in thing\n}\n\n/** Type guard for whether a thing is JBrowse session */\nexport function isSession(thing: unknown): thing is BaseSession {\n  return isStateTreeNode(thing) && isBaseSession(thing)\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { IAnyStateTreeNode, Instance, types } from 'mobx-state-tree'\nimport { BaseConnectionConfigModel } from '@jbrowse/core/pluggableElementTypes/models/baseConnectionConfig'\nimport { BaseConnectionModel } from '@jbrowse/core/pluggableElementTypes/models/BaseConnectionModelFactory'\n\n// locals\nimport type { BaseRootModelType } from '../RootModel/BaseRootModel'\nimport type { SessionWithReferenceManagementType } from './ReferenceManagement'\nimport { isBaseSession } from './BaseSession'\n\n/**\n * #stateModel ConnectionManagementSessionMixin\n */\nexport function ConnectionManagementSessionMixin(pluginManager: PluginManager) {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      connectionInstances: types.array(\n        pluginManager.pluggableMstType(\n          'connection',\n          'stateModel',\n        ) as BaseConnectionModel,\n      ),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get connections(): BaseConnectionConfigModel[] {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.connections\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      makeConnection(\n        configuration: AnyConfigurationModel,\n        initialSnapshot = {},\n      ) {\n        const type = configuration.type as string\n        if (!type) {\n          throw new Error('track configuration has no `type` listed')\n        }\n        const name = readConfObject(configuration, 'name')\n        const connectionType = pluginManager.getConnectionType(type)\n        if (!connectionType) {\n          throw new Error(`unknown connection type ${type}`)\n        }\n        const length = self.connectionInstances.push({\n          ...initialSnapshot,\n          name,\n          // @ts-expect-error unsure why ts doesn't like `type` here, but is\n          // needed\n          type,\n          configuration,\n        })\n        return self.connectionInstances[length - 1]\n      },\n\n      /**\n       * #action\n       */\n      prepareToBreakConnection(configuration: AnyConfigurationModel) {\n        const root = self as typeof self &\n          Instance<SessionWithReferenceManagementType>\n        const callbacksToDeref: (() => void)[] = []\n        const derefTypeCount: Record<string, number> = {}\n        const name = readConfObject(configuration, 'name')\n        const connection = self.connectionInstances.find(c => c.name === name)\n        if (!connection) {\n          return undefined\n        }\n        for (const track of connection.tracks) {\n          const ref = root.getReferring(track)\n          root.removeReferring(ref, track, callbacksToDeref, derefTypeCount)\n        }\n        return [\n          () => {\n            callbacksToDeref.forEach(cb => {\n              cb()\n            })\n            this.breakConnection(configuration)\n          },\n          derefTypeCount,\n        ]\n      },\n\n      /**\n       * #action\n       */\n      breakConnection(configuration: AnyConfigurationModel) {\n        const name = readConfObject(configuration, 'name')\n        const connection = self.connectionInstances.find(c => c.name === name)\n        if (!connection) {\n          throw new Error(`no connection found with name ${name}`)\n        }\n        self.connectionInstances.remove(connection)\n      },\n\n      /**\n       * #action\n       */\n      deleteConnection(configuration: AnyConfigurationModel) {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.deleteConnectionConf(configuration)\n      },\n\n      /**\n       * #action\n       */\n      addConnectionConf(connectionConf: AnyConfigurationModel) {\n        const { jbrowse } = self as typeof self & Instance<BaseRootModelType>\n        return jbrowse.addConnectionConf(connectionConf)\n      },\n\n      /**\n       * #action\n       */\n      clearConnections() {\n        self.connectionInstances.clear()\n      },\n    }))\n}\n\n/** Session mixin MST type for a session that has connections */\nexport type SessionWithConnectionsType = ReturnType<\n  typeof ConnectionManagementSessionMixin\n>\n\n/** Instance of a session that has connections: `connectionInstances`,\n * `makeConnection()`, etc. */\nexport type SessionWithConnections = Instance<SessionWithConnectionsType>\n\n/** Type guard for SessionWithConnections */\nexport function isSessionWithConnections(\n  session: IAnyStateTreeNode,\n): session is SessionWithConnections {\n  return isBaseSession(session) && 'connectionInstances' in session\n}\n","import React, { Suspense } from 'react'\nimport { observer } from 'mobx-react'\nimport { ConfigurationEditor } from '@jbrowse/plugin-config'\nimport { ConnectionType } from '@jbrowse/core/pluggableElementTypes'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\n\nconst ConfigureConnection = observer(function ({\n  connectionType,\n  model,\n  session,\n}: {\n  connectionType: ConnectionType\n  model: AnyConfigurationModel\n  session: AbstractSessionModel\n}) {\n  const ConfigEditorComponent =\n    connectionType.configEditorComponent || ConfigurationEditor\n\n  return (\n    <Suspense fallback={<LoadingEllipses />}>\n      <ConfigEditorComponent model={{ target: model }} session={session} />\n    </Suspense>\n  )\n})\n\nexport default ConfigureConnection\n","import React, { useEffect } from 'react'\nimport { IconButton, MenuItem, TextField } from '@mui/material'\nimport { ConnectionType } from '@jbrowse/core/pluggableElementTypes'\nimport { observer } from 'mobx-react'\n\n// icons\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew'\n\nconst ConnectionTypeSelect = observer(function ConnectionTypeSelect({\n  connectionTypeChoices,\n  connectionType,\n  setConnectionType,\n}: {\n  connectionTypeChoices: ConnectionType[]\n  connectionType?: ConnectionType\n  setConnectionType: (c?: ConnectionType) => void\n}) {\n  const firstChoice = connectionTypeChoices[0]\n  useEffect(() => {\n    if (!connectionType) {\n      setConnectionType(firstChoice)\n    }\n  }, [connectionType, firstChoice, setConnectionType])\n\n  return (\n    <form autoComplete=\"off\">\n      {connectionType ? (\n        <TextField\n          value={connectionType.name}\n          label=\"connectionType\"\n          helperText={\n            connectionType.description ? (\n              <>\n                {connectionType.description}\n                {connectionType.url ? (\n                  <IconButton\n                    href={connectionType.url}\n                    rel=\"noopener noreferrer\"\n                    target=\"_blank\"\n                  >\n                    <OpenInNewIcon />\n                  </IconButton>\n                ) : null}\n              </>\n            ) : null\n          }\n          select\n          fullWidth\n          onChange={event => {\n            setConnectionType(\n              connectionTypeChoices.find(c => c.name === event.target.value),\n            )\n          }}\n          variant=\"outlined\"\n        >\n          {connectionTypeChoices.map(c => (\n            <MenuItem key={c.name} value={c.name}>\n              {c.displayName || c.name}\n            </MenuItem>\n          ))}\n        </TextField>\n      ) : null}\n    </form>\n  )\n})\n\nexport default ConnectionTypeSelect\n","import React, { useMemo, useState } from 'react'\nimport { Button, Step, StepContent, StepLabel, Stepper } from '@mui/material'\nimport {\n  getSession,\n  getEnv,\n  isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { ConnectionType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport ConfigureConnection from './ConfigureConnection'\nimport ConnectionTypeSelect from './ConnectionTypeSelect'\nimport { isSessionWithConnections } from '@jbrowse/product-core'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    marginTop: theme.spacing(1),\n  },\n  stepper: {\n    backgroundColor: theme.palette.background.default,\n  },\n  button: {\n    marginTop: theme.spacing(1),\n    marginRight: theme.spacing(1),\n  },\n  actionsContainer: {\n    marginBottom: theme.spacing(2),\n  },\n}))\n\nconst steps = ['Select a Connection Type', 'Configure Connection']\n\nconst AddConnectionWidget = observer(function ({ model }: { model: unknown }) {\n  const [connectionType, setConnectionType] = useState<ConnectionType>()\n  const [connectionId, setConnectionId] = useState<string>()\n  const [activeStep, setActiveStep] = useState(0)\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { pluginManager } = getEnv(session)\n\n  // useMemo is needed for react@18+mobx-react@9, previous code called configScema.create directly in a setConfigModel useState hook setter but this caused infinite loop\n  const configModel = useMemo(\n    () => connectionType?.configSchema.create({ connectionId }, getEnv(model)),\n    [connectionId, connectionType, model],\n  )\n\n  return (\n    <div className={classes.root}>\n      <Stepper\n        className={classes.stepper}\n        activeStep={activeStep}\n        orientation=\"vertical\"\n      >\n        {steps.map(label => (\n          <Step key={label}>\n            <StepLabel>{label}</StepLabel>\n            <StepContent>\n              {activeStep === 0 ? (\n                <ConnectionTypeSelect\n                  connectionTypeChoices={pluginManager.getConnectionElements()}\n                  connectionType={connectionType}\n                  setConnectionType={c => {\n                    setConnectionType(c)\n                    if (!c) {\n                      return\n                    }\n                    setConnectionId(`${c.name}-${Date.now()}`)\n                  }}\n                />\n              ) : connectionType && configModel ? (\n                <ConfigureConnection\n                  connectionType={connectionType}\n                  model={configModel}\n                  session={session}\n                />\n              ) : null}\n              <div className={classes.actionsContainer}>\n                <Button\n                  disabled={activeStep === 0}\n                  onClick={() => {\n                    setActiveStep(activeStep - 1)\n                  }}\n                  className={classes.button}\n                >\n                  Back\n                </Button>\n                <Button\n                  disabled={\n                    !(\n                      (activeStep === 0 && connectionType) ||\n                      (activeStep === 1 && configModel)\n                    )\n                  }\n                  variant=\"contained\"\n                  color=\"primary\"\n                  onClick={() => {\n                    if (activeStep === steps.length - 1) {\n                      if (configModel && isSessionWithConnections(session)) {\n                        const conf = session.addConnectionConf(configModel)\n                        session.makeConnection(conf)\n                      } else {\n                        session.notify('No config model to add')\n                      }\n\n                      if (isSessionModelWithWidgets(session)) {\n                        session.hideWidget(model)\n                      }\n                    } else {\n                      setActiveStep(activeStep + 1)\n                    }\n                  }}\n                  className={classes.button}\n                  data-testid=\"addConnectionNext\"\n                >\n                  {activeStep === steps.length - 1 ? 'Connect' : 'Next'}\n                </Button>\n              </div>\n            </StepContent>\n          </Step>\n        ))}\n      </Stepper>\n    </div>\n  )\n})\n\nexport default AddConnectionWidget\n"],"names":["BaseSessionModel","_pluginManager","types","model","id","ElementId","name","string","margin","volatile","selection","undefined","hovered","views","self","root","getParent","jbrowse","rpcManager","configuration","this","adminMode","textSearchManager","assemblies","actions","setSelection","thing","clearSelection","setHovered","isBaseSession","ConnectionManagementSessionMixin","pluginManager","connectionInstances","array","pluggableMstType","connections","makeConnection","initialSnapshot","type","Error","readConfObject","getConnectionType","length","push","prepareToBreakConnection","callbacksToDeref","derefTypeCount","connection","find","c","track","tracks","ref","getReferring","removeReferring","forEach","cb","breakConnection","remove","deleteConnection","deleteConnectionConf","addConnectionConf","connectionConf","clearConnections","clear","isSessionWithConnections","session","observer","connectionType","ConfigEditorComponent","configEditorComponent","ConfigurationEditor","React","Suspense","fallback","LoadingEllipses","target","connectionTypeChoices","setConnectionType","firstChoice","useEffect","autoComplete","TextField","value","label","helperText","description","url","IconButton","href","rel","OpenInNewIcon","select","fullWidth","onChange","event","variant","map","MenuItem","key","displayName","useStyles","makeStyles","theme","marginTop","spacing","stepper","backgroundColor","palette","background","default","button","marginRight","actionsContainer","marginBottom","steps","useState","connectionId","setConnectionId","activeStep","setActiveStep","classes","getSession","getEnv","configModel","useMemo","configSchema","create","className","Stepper","orientation","Step","StepLabel","StepContent","ConnectionTypeSelect","getConnectionElements","Date","now","ConfigureConnection","Button","disabled","onClick","color","conf","notify","isSessionModelWithWidgets","hideWidget"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4499.3f0b2e70.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4499,7706],{7706:(t,e,r)=>{r.d(e,{sG:()=>u,unzip:()=>o,i2:()=>s});var i=r(35451),l=r(45834),n=r(57864);async function o(t){try{let e,r=0,l=0;const o=[];let s,h=0;do{const i=t.subarray(r);if(s=new n.Inflate,({strm:e}=s),s.push(i,n.Z_SYNC_FLUSH),s.err)throw new Error(s.msg);r+=e.next_in,o[l]=s.result,h+=o[l].length,l+=1}while(e.avail_in);const a=new Uint8Array(h);for(let t=0,e=0;t<o.length;t++)a.set(o[t],e),e+=o[t].length;return i.hp.from(a)}catch(t){if(`${t}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw t}}async function s(t,e){try{let r;const{minv:l,maxv:o}=e;let s=l.blockPosition,h=l.dataPosition;const a=[],c=[],u=[];let _=0,p=0;do{const e=t.subarray(s-l.blockPosition),i=new n.Inflate;if(({strm:r}=i),i.push(e,n.Z_SYNC_FLUSH),i.err)throw new Error(i.msg);const m=i.result;a.push(m);let f=m.length;c.push(s),u.push(h),1===a.length&&l.dataPosition&&(a[0]=a[0].subarray(l.dataPosition),f=a[0].length);const d=s;if(s+=r.next_in,h+=f,d>=o.blockPosition){a[p]=a[p].subarray(0,o.blockPosition===l.blockPosition?o.dataPosition-l.dataPosition+1:o.dataPosition+1),c.push(s),u.push(h),_+=a[p].length;break}_+=a[p].length,p++}while(r.avail_in);const m=new Uint8Array(_);for(let t=0,e=0;t<a.length;t++)m.set(a[t],e),e+=a[t].length;return{buffer:i.hp.from(m),cpositions:c,dpositions:u}}catch(t){if(`${t}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw t}}var h=r(59086),a=r.n(h);class c{constructor({filehandle:t,path:e}){if(t)this.filehandle=t;else{if(!e)throw new TypeError("either filehandle or path must be defined");this.filehandle=new l.EY(e)}}_readLongWithOverflow(t,e=0,r=!0){const i=a().fromBytesLE(t.slice(e,e+8),r);if(i.greaterThan(Number.MAX_SAFE_INTEGER)||i.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return i.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let t=i.hp.allocUnsafe(8);await this.filehandle.read(t,0,8,0);const e=this._readLongWithOverflow(t,0,!0);if(!e)return[[0,0]];const r=new Array(e+1);r[0]=[0,0];const l=16*e;if(l>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");t=i.hp.allocUnsafe(l),await this.filehandle.read(t,0,l,8);for(let i=0;i<e;i+=1){const e=this._readLongWithOverflow(t,16*i),l=this._readLongWithOverflow(t,16*i+8);r[i+1]=[e,l]}return r}async getLastBlock(){const t=await this._getIndex();if(t.length)return t[t.length-1]}async getRelevantBlocksForRead(t,e){const r=e+t;if(0===t)return[];const i=await this._getIndex(),l=[],n=(t,r)=>{const i=t[1],l=r?r[1]:1/0;return i<=e&&l>e?0:i<e?-1:1};let o=0,s=i.length-1,h=Math.floor(i.length/2),a=n(i[h],i[h+1]);for(;0!==a;)a>0?s=h-1:a<0&&(o=h+1),h=Math.ceil((s-o)/2)+o,a=n(i[h],i[h+1]);l.push(i[h]);let c=h+1;for(;c<i.length&&(l.push(i[c]),!(i[c][1]>=r));c+=1);return l[l.length-1][1]<r&&l.push([]),l}}class u{constructor({filehandle:t,path:e,gziFilehandle:r,gziPath:i}){if(t)this.filehandle=t;else{if(!e)throw new TypeError("either filehandle or path must be defined");this.filehandle=new l.EY(e)}if(!r&&!i&&!e)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:r,path:r||i||!e?`${e}.gzi`:i})}async stat(){const t=await this.filehandle.stat();return Object.assign(t,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,t]=await this.gzi.getLastBlock(),{size:e}=await this.filehandle.stat(),r=i.hp.allocUnsafe(4),{bytesRead:l}=await this.filehandle.read(r,0,4,e-28-4);if(4!==l)throw new Error("read error");return t+r.readUInt32LE(0)}async _readAndUncompressBlock(t,[e],[r]){let i=r;i||(i=(await this.filehandle.stat()).size);const l=i-e;return await this.filehandle.read(t,0,l,e),await o(t.slice(0,l))}async read(t,e,r,l){const n=await this.gzi.getRelevantBlocksForRead(r,l),o=i.hp.allocUnsafe(65536);let s=e,h=0;for(let e=0;e<n.length-1;e+=1){const i=await this._readAndUncompressBlock(o,n[e],n[e+1]),[,a]=n[e],c=a>=l?0:l-a,u=Math.min(l+r,a+i.length)-a;c>=0&&c<i.length&&(i.copy(t,s,c,u),s+=u-c,h+=u-c)}return{bytesRead:h,buffer:t}}}},32598:(t,e,r)=>{r.d(e,{Ay:()=>n});const i=class t{constructor(t,e){this.low=t,this.high=e}clone(){return new t(this.low,this.high)}get max(){return this.clone()}less_than(t){return this.low<t.low||this.low===t.low&&this.high<t.high}equal_to(t){return this.low===t.low&&this.high===t.high}intersect(t){return!this.not_intersect(t)}not_intersect(t){return this.high<t.low||t.high<this.low}merge(e){return new t(void 0===this.low?e.low:this.low<e.low?this.low:e.low,void 0===this.high?e.high:this.high>e.high?this.high:e.high)}output(){return[this.low,this.high]}static comparable_max(t,e){return t.merge(e)}static comparable_less_than(t,e){return t<e}};class l{constructor(t=void 0,e=void 0,r=null,l=null,n=null,o=1){if(this.left=r,this.right=l,this.parent=n,this.color=o,this.item={key:t,value:e},t&&t instanceof Array&&2===t.length&&!Number.isNaN(t[0])&&!Number.isNaN(t[1])){let[e,r]=t;e>r&&([e,r]=[r,e]),this.item.key=new i(e,r)}this.max=this.item.key?this.item.key.max:void 0}isNil(){return void 0===this.item.key&&void 0===this.item.value&&null===this.left&&null===this.right&&1===this.color}_value_less_than(t){return this.item.value&&t.item.value&&this.item.value.less_than?this.item.value.less_than(t.item.value):this.item.value<t.item.value}less_than(t){return this.item.value===this.item.key&&t.item.value===t.item.key?this.item.key.less_than(t.item.key):this.item.key.less_than(t.item.key)||this.item.key.equal_to(t.item.key)&&this._value_less_than(t)}_value_equal(t){return this.item.value&&t.item.value&&this.item.value.equal_to?this.item.value.equal_to(t.item.value):this.item.value===t.item.value}equal_to(t){return this.item.value===this.item.key&&t.item.value===t.item.key?this.item.key.equal_to(t.item.key):this.item.key.equal_to(t.item.key)&&this._value_equal(t)}intersect(t){return this.item.key.intersect(t.item.key)}copy_data(t){this.item.key=t.item.key,this.item.value=t.item.value}update_max(){if(this.max=this.item.key?this.item.key.max:void 0,this.right&&this.right.max){const t=this.item.key.constructor.comparable_max;this.max=t(this.max,this.right.max)}if(this.left&&this.left.max){const t=this.item.key.constructor.comparable_max;this.max=t(this.max,this.left.max)}}not_intersect_left_subtree(t){return(0,this.item.key.constructor.comparable_less_than)(void 0!==this.left.max.high?this.left.max.high:this.left.max,t.item.key.low)}not_intersect_right_subtree(t){const e=this.item.key.constructor.comparable_less_than;let r=void 0!==this.right.max.low?this.right.max.low:this.right.item.key.low;return e(t.item.key.high,r)}}class n{constructor(){this.root=null,this.nil_node=new l}get size(){let t=0;return this.tree_walk(this.root,(()=>t++)),t}get keys(){let t=[];return this.tree_walk(this.root,(e=>t.push(e.item.key.output?e.item.key.output():e.item.key))),t}get values(){let t=[];return this.tree_walk(this.root,(e=>t.push(e.item.value))),t}get items(){let t=[];return this.tree_walk(this.root,(e=>t.push({key:e.item.key.output?e.item.key.output():e.item.key,value:e.item.value}))),t}isEmpty(){return null==this.root||this.root===this.nil_node}clear(){this.root=null}insert(t,e=t){if(void 0===t)return;let r=new l(t,e,this.nil_node,this.nil_node,null,0);return this.tree_insert(r),this.recalc_max(r),r}exist(t,e=t){let r=new l(t,e);return!!this.tree_search(this.root,r)}remove(t,e=t){let r=new l(t,e),i=this.tree_search(this.root,r);return i&&this.tree_delete(i),i}search(t,e=(t,e)=>t===e?e.output():t){let r=new l(t),i=[];return this.tree_search_interval(this.root,r,i),i.map((t=>e(t.item.value,t.item.key)))}intersect_any(t){let e=new l(t);return this.tree_find_any_interval(this.root,e)}forEach(t){this.tree_walk(this.root,(e=>t(e.item.key,e.item.value)))}map(t){const e=new n;return this.tree_walk(this.root,(r=>e.insert(r.item.key,t(r.item.value,r.item.key)))),e}*iterate(t,e=(t,e)=>t===e?e.output():t){let r;for(t?r=this.tree_search_nearest_forward(this.root,new l(t)):this.root&&(r=this.local_minimum(this.root));r;)yield e(r.item.value,r.item.key),r=this.tree_successor(r)}recalc_max(t){let e=t;for(;null!=e.parent;)e.parent.update_max(),e=e.parent}tree_insert(t){let e=this.root,r=null;if(null==this.root||this.root===this.nil_node)this.root=t;else{for(;e!==this.nil_node;)r=e,e=t.less_than(e)?e.left:e.right;t.parent=r,t.less_than(r)?r.left=t:r.right=t}this.insert_fixup(t)}insert_fixup(t){let e,r;for(e=t;e!==this.root&&0===e.parent.color;)e.parent===e.parent.parent.left?(r=e.parent.parent.right,0===r.color?(e.parent.color=1,r.color=1,e.parent.parent.color=0,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,this.rotate_left(e)),e.parent.color=1,e.parent.parent.color=0,this.rotate_right(e.parent.parent))):(r=e.parent.parent.left,0===r.color?(e.parent.color=1,r.color=1,e.parent.parent.color=0,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,this.rotate_right(e)),e.parent.color=1,e.parent.parent.color=0,this.rotate_left(e.parent.parent)));this.root.color=1}tree_delete(t){let e,r;e=t.left===this.nil_node||t.right===this.nil_node?t:this.tree_successor(t),r=e.left!==this.nil_node?e.left:e.right,r.parent=e.parent,e===this.root?this.root=r:(e===e.parent.left?e.parent.left=r:e.parent.right=r,e.parent.update_max()),this.recalc_max(r),e!==t&&(t.copy_data(e),t.update_max(),this.recalc_max(t)),1===e.color&&this.delete_fixup(r)}delete_fixup(t){let e,r=t;for(;r!==this.root&&null!=r.parent&&1===r.color;)r===r.parent.left?(e=r.parent.right,0===e.color&&(e.color=1,r.parent.color=0,this.rotate_left(r.parent),e=r.parent.right),1===e.left.color&&1===e.right.color?(e.color=0,r=r.parent):(1===e.right.color&&(e.color=0,e.left.color=1,this.rotate_right(e),e=r.parent.right),e.color=r.parent.color,r.parent.color=1,e.right.color=1,this.rotate_left(r.parent),r=this.root)):(e=r.parent.left,0===e.color&&(e.color=1,r.parent.color=0,this.rotate_right(r.parent),e=r.parent.left),1===e.left.color&&1===e.right.color?(e.color=0,r=r.parent):(1===e.left.color&&(e.color=0,e.right.color=1,this.rotate_left(e),e=r.parent.left),e.color=r.parent.color,r.parent.color=1,e.left.color=1,this.rotate_right(r.parent),r=this.root));r.color=1}tree_search(t,e){if(null!=t&&t!==this.nil_node)return e.equal_to(t)?t:e.less_than(t)?this.tree_search(t.left,e):this.tree_search(t.right,e)}tree_search_nearest_forward(t,e){let r,i=t;for(;i&&i!==this.nil_node;)i.less_than(e)?i.intersect(e)?(r=i,i=i.left):i=i.right:(r&&!i.less_than(r)||(r=i),i=i.left);return r||null}tree_search_interval(t,e,r){null!=t&&t!==this.nil_node&&(t.left===this.nil_node||t.not_intersect_left_subtree(e)||this.tree_search_interval(t.left,e,r),t.intersect(e)&&r.push(t),t.right===this.nil_node||t.not_intersect_right_subtree(e)||this.tree_search_interval(t.right,e,r))}tree_find_any_interval(t,e){let r=!1;return null!=t&&t!==this.nil_node&&(t.left===this.nil_node||t.not_intersect_left_subtree(e)||(r=this.tree_find_any_interval(t.left,e)),r||(r=t.intersect(e)),r||t.right===this.nil_node||t.not_intersect_right_subtree(e)||(r=this.tree_find_any_interval(t.right,e))),r}local_minimum(t){let e=t;for(;null!=e.left&&e.left!==this.nil_node;)e=e.left;return e}local_maximum(t){let e=t;for(;null!=e.right&&e.right!==this.nil_node;)e=e.right;return e}tree_successor(t){let e,r,i;if(t.right!==this.nil_node)e=this.local_minimum(t.right);else{for(r=t,i=t.parent;null!=i&&i.right===r;)r=i,i=i.parent;e=i}return e}rotate_left(t){let e=t.right;t.right=e.left,e.left!==this.nil_node&&(e.left.parent=t),e.parent=t.parent,t===this.root?this.root=e:t===t.parent.left?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e,null!=t&&t!==this.nil_node&&t.update_max(),e=t.parent,null!=e&&e!==this.nil_node&&e.update_max()}rotate_right(t){let e=t.left;t.left=e.right,e.right!==this.nil_node&&(e.right.parent=t),e.parent=t.parent,t===this.root?this.root=e:t===t.parent.left?t.parent.left=e:t.parent.right=e,e.right=t,t.parent=e,null!==t&&t!==this.nil_node&&t.update_max(),e=t.parent,null!=e&&e!==this.nil_node&&e.update_max()}tree_walk(t,e){null!=t&&t!==this.nil_node&&(this.tree_walk(t.left,e),e(t),this.tree_walk(t.right,e))}testRedBlackProperty(){let t=!0;return this.tree_walk(this.root,(function(e){0===e.color&&(1===e.left.color&&1===e.right.color||(t=!1))})),t}testBlackHeightProperty(t){let e=0,r=0,i=0;if(1===t.color&&e++,r=t.left!==this.nil_node?this.testBlackHeightProperty(t.left):1,i=t.right!==this.nil_node?this.testBlackHeightProperty(t.right):1,r!==i)throw new Error("Red-black height property violated");return e+=r,e}}}}]);
+//# sourceMappingURL=4499.3f0b2e70.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4499.3f0b2e70.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4499.3f0b2e70.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts","../../../node_modules/@flatten-js/interval-tree/dist/main.mjs"],"sourcesContent":["import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n","/**\n * Created by Alex Bol on 4/1/2017.\n */\n\n/**\n * Interval is a pair of numbers or a pair of any comparable objects on which may be defined predicates\n * *equal*, *less* and method *max(p1, p1)* that returns maximum in a pair.\n * When interval is an object rather than a pair of numbers, this object should have properties *low*, *high*, *max*\n * and implement methods *less_than(), equal_to(), intersect(), not_intersect(), clone(), output()*.\n * Two static methods *comparable_max(), comparable_less_than()* define how to compare values in pair. <br/>\n * This interface is described in typescript definition file *index.d.ts*\n *\n * Axis aligned rectangle is an example of such interval.\n * We may look at rectangle as an interval between its low left and top right corners.\n * See **Box** class in [flatten-js](https://github.com/alexbol99/flatten-js) library as the example\n * of Interval interface implementation\n * @type {Interval}\n */\nconst Interval = class Interval {\n    /**\n     * Accept two comparable values and creates new instance of interval\n     * Predicate Interval.comparable_less(low, high) supposed to return true on these values\n     * @param low\n     * @param high\n     */\n    constructor(low, high) {\n        this.low = low;\n        this.high = high;\n    }\n\n    /**\n     * Clone interval\n     * @returns {Interval}\n     */\n    clone() {\n        return new Interval(this.low, this.high);\n    }\n\n    /**\n     * Propery max returns clone of this interval\n     * @returns {Interval}\n     */\n    get max() {\n        return this.clone();   // this.high;\n    }\n\n    /**\n     * Predicate returns true is this interval less than other interval\n     * @param other_interval\n     * @returns {boolean}\n     */\n    less_than(other_interval) {\n        return this.low < other_interval.low ||\n            this.low === other_interval.low && this.high < other_interval.high;\n    }\n\n    /**\n     * Predicate returns true is this interval equals to other interval\n     * @param other_interval\n     * @returns {boolean}\n     */\n    equal_to(other_interval) {\n        return this.low === other_interval.low && this.high === other_interval.high;\n    }\n\n    /**\n     * Predicate returns true if this interval intersects other interval\n     * @param other_interval\n     * @returns {boolean}\n     */\n    intersect(other_interval) {\n        return !this.not_intersect(other_interval);\n    }\n\n    /**\n     * Predicate returns true if this interval does not intersect other interval\n     * @param other_interval\n     * @returns {boolean}\n     */\n    not_intersect(other_interval) {\n        return (this.high < other_interval.low || other_interval.high < this.low);\n    }\n\n    /**\n     * Returns new interval merged with other interval\n     * @param {Interval} other_interval - Other interval to merge with\n     * @returns {Interval}\n     */\n    merge(other_interval) {\n        return new Interval(\n            this.low === undefined ?\n                other_interval.low : (this.low < other_interval.low ? this.low : other_interval.low),\n            this.high === undefined ?\n                other_interval.high : (this.high > other_interval.high ? this.high : other_interval.high)\n        );\n    }\n\n    /**\n     * Returns how key should return\n     */\n    output() {\n        return [this.low, this.high];\n    }\n\n    /**\n     * Function returns maximum between two comparable values\n     * @param interval1\n     * @param interval2\n     * @returns {Interval}\n     */\n    static comparable_max(interval1, interval2) {\n        return interval1.merge(interval2);\n    }\n\n    /**\n     * Predicate returns true if first value less than second value\n     * @param val1\n     * @param val2\n     * @returns {boolean}\n     */\n    static comparable_less_than(val1, val2 ) {\n        return val1 < val2;\n    }\n};\n\n/**\n * Created by Alex Bol on 3/28/2017.\n */\n\n\n// module.exports = {\n//     RB_TREE_COLOR_RED: 0,\n//     RB_TREE_COLOR_BLACK: 1\n// };\n\nconst RB_TREE_COLOR_RED = 0;\nconst RB_TREE_COLOR_BLACK = 1;\n\n/**\n * Created by Alex Bol on 4/1/2017.\n */\n\n\nclass Node {\n    constructor(key = undefined, value = undefined,\n                left = null, right = null, parent = null, color = RB_TREE_COLOR_BLACK) {\n        this.left = left;                     // reference to left child node\n        this.right = right;                   // reference to right child node\n        this.parent = parent;                 // reference to parent node\n        this.color = color;\n\n        this.item = {key: key, value: value};   // key is supposed to be instance of Interval\n\n        /* If not, this should by an array of two numbers */\n        if (key && key instanceof Array && key.length === 2) {\n            if (!Number.isNaN(key[0]) && !Number.isNaN(key[1])) {\n                let [low, high] = key;\n                if (low > high) [low, high] = [high, low];\n                this.item.key = new Interval(low, high);\n            }\n        }\n\n        this.max = this.item.key ? this.item.key.max : undefined;\n    }\n\n    isNil() {\n        return (this.item.key === undefined && this.item.value === undefined &&\n            this.left === null && this.right === null && this.color === RB_TREE_COLOR_BLACK);\n    }\n\n    _value_less_than(other_node) {\n        return this.item.value && other_node.item.value && this.item.value.less_than ?\n            this.item.value.less_than(other_node.item.value) :\n            this.item.value < other_node.item.value;\n    }\n\n    less_than(other_node) {\n        // if tree stores only keys\n        if (this.item.value === this.item.key && other_node.item.value === other_node.item.key) {\n            return this.item.key.less_than(other_node.item.key);\n        }\n        else {    // if tree stores keys and values\n            return this.item.key.less_than(other_node.item.key) ||\n                this.item.key.equal_to((other_node.item.key)) && this._value_less_than(other_node)\n        }\n    }\n\n    _value_equal(other_node) {\n        return this.item.value && other_node.item.value && this.item.value.equal_to ?\n            this.item.value.equal_to(other_node.item.value) :\n            this.item.value === other_node.item.value;\n    }\n    equal_to(other_node) {\n        // if tree stores only keys\n        if (this.item.value === this.item.key && other_node.item.value === other_node.item.key) {\n            return this.item.key.equal_to(other_node.item.key);\n        }\n        else {    // if tree stores keys and values\n            return this.item.key.equal_to(other_node.item.key) && this._value_equal(other_node);\n        }\n    }\n\n    intersect(other_node) {\n        return this.item.key.intersect(other_node.item.key);\n    }\n\n    copy_data(other_node) {\n        this.item.key = other_node.item.key;\n        this.item.value = other_node.item.value;\n    }\n\n    update_max() {\n        // use key (Interval) max property instead of key.high\n        this.max = this.item.key ? this.item.key.max : undefined;\n        if (this.right && this.right.max) {\n            const comparable_max = this.item.key.constructor.comparable_max;  // static method\n            this.max = comparable_max(this.max, this.right.max);\n        }\n        if (this.left && this.left.max) {\n            const comparable_max = this.item.key.constructor.comparable_max;  // static method\n            this.max = comparable_max(this.max, this.left.max);\n        }\n    }\n\n    // Other_node does not intersect any node of left subtree, if this.left.max < other_node.item.key.low\n    not_intersect_left_subtree(search_node) {\n        const comparable_less_than = this.item.key.constructor.comparable_less_than;  // static method\n        let high = this.left.max.high !== undefined ? this.left.max.high : this.left.max;\n        return comparable_less_than(high, search_node.item.key.low);\n    }\n\n    // Other_node does not intersect right subtree if other_node.item.key.high < this.right.key.low\n    not_intersect_right_subtree(search_node) {\n        const comparable_less_than = this.item.key.constructor.comparable_less_than;  // static method\n        let low = this.right.max.low !== undefined ? this.right.max.low : this.right.item.key.low;\n        return comparable_less_than(search_node.item.key.high, low);\n    }\n}\n\n/**\n * Created by Alex Bol on 3/31/2017.\n */\n\n// const nil_node = new Node();\n\n/**\n * Implementation of interval binary search tree <br/>\n * Interval tree stores items which are couples of {key:interval, value: value} <br/>\n * Interval is an object with high and low properties or simply pair [low,high] of numeric values <br />\n * @type {IntervalTree}\n */\nclass IntervalTree {\n    /**\n     * Construct new empty instance of IntervalTree\n     */\n    constructor() {\n        this.root = null;\n        this.nil_node = new Node();\n    }\n\n    /**\n     * Returns number of items stored in the interval tree\n     * @returns {number}\n     */\n    get size() {\n        let count = 0;\n        this.tree_walk(this.root, () => count++);\n        return count;\n    }\n\n    /**\n     * Returns array of sorted keys in the ascending order\n     * @returns {Array}\n     */\n    get keys() {\n        let res = [];\n        this.tree_walk(this.root, (node) => res.push(\n            node.item.key.output ? node.item.key.output() : node.item.key\n        ));\n        return res;\n    }\n\n    /**\n     * Return array of values in the ascending keys order\n     * @returns {Array}\n     */\n    get values() {\n        let res = [];\n        this.tree_walk(this.root, (node) => res.push(node.item.value));\n        return res;\n    }\n\n    /**\n     * Returns array of items (<key,value> pairs) in the ascended keys order\n     * @returns {Array}\n     */\n    get items() {\n        let res = [];\n        this.tree_walk(this.root, (node) => res.push({\n            key: node.item.key.output ? node.item.key.output() : node.item.key,\n            value: node.item.value\n        }));\n        return res;\n    }\n\n    /**\n     * Returns true if tree is empty\n     * @returns {boolean}\n     */\n    isEmpty() {\n        return (this.root == null || this.root === this.nil_node);\n    }\n\n    /**\n     * Clear tree\n     */\n    clear() {\n        this.root = null;\n    }\n\n    /**\n     * Insert new item into interval tree\n     * @param {Interval} key - interval object or array of two numbers [low, high]\n     * @param {any} value - value representing any object (optional)\n     * @returns {Node} returns reference to inserted node as an object {key:interval, value: value}\n     */\n    insert(key, value = key) {\n        if (key === undefined) return;\n        let insert_node = new Node(key, value, this.nil_node, this.nil_node, null, RB_TREE_COLOR_RED);\n        this.tree_insert(insert_node);\n        this.recalc_max(insert_node);\n        return insert_node;\n    }\n\n    /**\n     * Returns true if item {key,value} exist in the tree\n     * @param {Interval} key - interval correspondent to keys stored in the tree\n     * @param {any} value - value object to be checked\n     * @returns {boolean} true if item {key, value} exist in the tree, false otherwise\n     */\n    exist(key, value = key) {\n        let search_node = new Node(key, value);\n        return !!this.tree_search(this.root, search_node);\n    }\n\n    /**\n     * Remove entry {key, value} from the tree\n     * @param {Interval} key - interval correspondent to keys stored in the tree\n     * @param {any} value - value object\n     * @returns {boolean} true if item {key, value} deleted, false if not found\n     */\n    remove(key, value = key) {\n        let search_node = new Node(key, value);\n        let delete_node = this.tree_search(this.root, search_node);\n        if (delete_node) {\n            this.tree_delete(delete_node);\n        }\n        return delete_node;\n    }\n\n    /**\n     * Returns array of entry values which keys intersect with given interval <br/>\n     * If no values stored in the tree, returns array of keys which intersect given interval\n     * @param {Interval} interval - search interval, or tuple [low, high]\n     * @param outputMapperFn(value,key) - optional function that maps (value, key) to custom output\n     * @returns {Array}\n     */\n    search(interval, outputMapperFn = (value, key) => value === key ? key.output() : value) {\n        let search_node = new Node(interval);\n        let resp_nodes = [];\n        this.tree_search_interval(this.root, search_node, resp_nodes);\n        return resp_nodes.map(node => outputMapperFn(node.item.value, node.item.key))\n    }\n\n    /**\n     * Returns true if intersection between given and any interval stored in the tree found\n     * @param {Interval} interval - search interval or tuple [low, high]\n     * @returns {boolean}\n     */\n    intersect_any(interval) {\n        let search_node = new Node(interval);\n        return this.tree_find_any_interval(this.root, search_node);\n    }\n\n    /**\n     * Tree visitor. For each node implement a callback function. <br/>\n     * Method calls a callback function with two parameters (key, value)\n     * @param visitor(key,value) - function to be called for each tree item\n     */\n    forEach(visitor) {\n        this.tree_walk(this.root, (node) => visitor(node.item.key, node.item.value));\n    }\n\n    /**\n     * Value Mapper. Walk through every node and map node value to another value\n     * @param callback(value,key) - function to be called for each tree item\n     */\n    map(callback) {\n        const tree = new IntervalTree();\n        this.tree_walk(this.root, (node) => tree.insert(node.item.key, callback(node.item.value, node.item.key)));\n        return tree;\n    }\n\n    /**\n     * @param {Interval} interval - optional if the iterator is intended to start from the beginning\n     * @param outputMapperFn(value,key) - optional function that maps (value, key) to custom output\n     * @returns {Iterator}\n     */\n    *iterate(interval, outputMapperFn = (value, key) => value === key ? key.output() : value) {\n        let node;\n        if (interval) {\n            node = this.tree_search_nearest_forward(this.root, new Node(interval));\n        } else if (this.root) {\n            node = this.local_minimum(this.root);\n        }\n        while (node) {\n            yield outputMapperFn(node.item.value, node.item.key);\n            node = this.tree_successor(node);\n        }\n    }\n\n    recalc_max(node) {\n        let node_current = node;\n        while (node_current.parent != null) {\n            node_current.parent.update_max();\n            node_current = node_current.parent;\n        }\n    }\n\n    tree_insert(insert_node) {\n        let current_node = this.root;\n        let parent_node = null;\n\n        if (this.root == null || this.root === this.nil_node) {\n            this.root = insert_node;\n        }\n        else {\n            while (current_node !== this.nil_node) {\n                parent_node = current_node;\n                if (insert_node.less_than(current_node)) {\n                    current_node = current_node.left;\n                }\n                else {\n                    current_node = current_node.right;\n                }\n            }\n\n            insert_node.parent = parent_node;\n\n            if (insert_node.less_than(parent_node)) {\n                parent_node.left = insert_node;\n            }\n            else {\n                parent_node.right = insert_node;\n            }\n        }\n\n        this.insert_fixup(insert_node);\n    }\n\n// After insertion insert_node may have red-colored parent, and this is a single possible violation\n// Go upwords to the root and re-color until violation will be resolved\n    insert_fixup(insert_node) {\n        let current_node;\n        let uncle_node;\n\n        current_node = insert_node;\n        while (current_node !== this.root && current_node.parent.color === RB_TREE_COLOR_RED) {\n            if (current_node.parent === current_node.parent.parent.left) {   // parent is left child of grandfather\n                uncle_node = current_node.parent.parent.right;              // right brother of parent\n                if (uncle_node.color === RB_TREE_COLOR_RED) {             // Case 1. Uncle is red\n                    // re-color father and uncle into black\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;\n                    uncle_node.color = RB_TREE_COLOR_BLACK;\n                    current_node.parent.parent.color = RB_TREE_COLOR_RED;\n                    current_node = current_node.parent.parent;\n                }\n                else {                                                    // Case 2 & 3. Uncle is black\n                    if (current_node === current_node.parent.right) {     // Case 2. Current if right child\n                        // This case is transformed into Case 3.\n                        current_node = current_node.parent;\n                        this.rotate_left(current_node);\n                    }\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;    // Case 3. Current is left child.\n                    // Re-color father and grandfather, rotate grandfather right\n                    current_node.parent.parent.color = RB_TREE_COLOR_RED;\n                    this.rotate_right(current_node.parent.parent);\n                }\n            }\n            else {                                                         // parent is right child of grandfather\n                uncle_node = current_node.parent.parent.left;              // left brother of parent\n                if (uncle_node.color === RB_TREE_COLOR_RED) {             // Case 4. Uncle is red\n                    // re-color father and uncle into black\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;\n                    uncle_node.color = RB_TREE_COLOR_BLACK;\n                    current_node.parent.parent.color = RB_TREE_COLOR_RED;\n                    current_node = current_node.parent.parent;\n                }\n                else {\n                    if (current_node === current_node.parent.left) {             // Case 5. Current is left child\n                        // Transform into case 6\n                        current_node = current_node.parent;\n                        this.rotate_right(current_node);\n                    }\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;    // Case 6. Current is right child.\n                    // Re-color father and grandfather, rotate grandfather left\n                    current_node.parent.parent.color = RB_TREE_COLOR_RED;\n                    this.rotate_left(current_node.parent.parent);\n                }\n            }\n        }\n\n        this.root.color = RB_TREE_COLOR_BLACK;\n    }\n\n    tree_delete(delete_node) {\n        let cut_node;   // node to be cut - either delete_node or successor_node  (\"y\" from 14.4)\n        let fix_node;   // node to fix rb tree property   (\"x\" from 14.4)\n\n        if (delete_node.left === this.nil_node || delete_node.right === this.nil_node) {  // delete_node has less then 2 children\n            cut_node = delete_node;\n        }\n        else {                                                    // delete_node has 2 children\n            cut_node = this.tree_successor(delete_node);\n        }\n\n        // fix_node if single child of cut_node\n        if (cut_node.left !== this.nil_node) {\n            fix_node = cut_node.left;\n        }\n        else {\n            fix_node = cut_node.right;\n        }\n\n        // remove cut_node from parent\n        /*if (fix_node != this.nil_node) {*/\n            fix_node.parent = cut_node.parent;\n        /*}*/\n\n        if (cut_node === this.root) {\n            this.root = fix_node;\n        }\n        else {\n            if (cut_node === cut_node.parent.left) {\n                cut_node.parent.left = fix_node;\n            }\n            else {\n                cut_node.parent.right = fix_node;\n            }\n            cut_node.parent.update_max();        // update max property of the parent\n        }\n\n        this.recalc_max(fix_node);              // update max property upward from fix_node to root\n\n        // COPY DATA !!!\n        // Delete_node becomes cut_node, it means that we cannot hold reference\n        // to node in outer structure and we will have to delete by key, additional search need\n        if (cut_node !== delete_node) {\n            delete_node.copy_data(cut_node);\n            delete_node.update_max();           // update max property of the cut node at the new place\n            this.recalc_max(delete_node);       // update max property upward from delete_node to root\n        }\n\n        if (/*fix_node != this.nil_node && */cut_node.color === RB_TREE_COLOR_BLACK) {\n            this.delete_fixup(fix_node);\n        }\n    }\n\n    delete_fixup(fix_node) {\n        let current_node = fix_node;\n        let brother_node;\n\n        while (current_node !== this.root && current_node.parent != null && current_node.color === RB_TREE_COLOR_BLACK) {\n            if (current_node === current_node.parent.left) {          // fix node is left child\n                brother_node = current_node.parent.right;\n                if (brother_node.color === RB_TREE_COLOR_RED) {   // Case 1. Brother is red\n                    brother_node.color = RB_TREE_COLOR_BLACK;         // re-color brother\n                    current_node.parent.color = RB_TREE_COLOR_RED;    // re-color father\n                    this.rotate_left(current_node.parent);\n                    brother_node = current_node.parent.right;                      // update brother\n                }\n                // Derive to cases 2..4: brother is black\n                if (brother_node.left.color === RB_TREE_COLOR_BLACK &&\n                    brother_node.right.color === RB_TREE_COLOR_BLACK) {  // case 2: both nephews black\n                    brother_node.color = RB_TREE_COLOR_RED;              // re-color brother\n                    current_node = current_node.parent;                  // continue iteration\n                }\n                else {\n                    if (brother_node.right.color === RB_TREE_COLOR_BLACK) {   // case 3: left nephew red, right nephew black\n                        brother_node.color = RB_TREE_COLOR_RED;          // re-color brother\n                        brother_node.left.color = RB_TREE_COLOR_BLACK;   // re-color nephew\n                        this.rotate_right(brother_node);\n                        brother_node = current_node.parent.right;                     // update brother\n                        // Derive to case 4: left nephew black, right nephew red\n                    }\n                    // case 4: left nephew black, right nephew red\n                    brother_node.color = current_node.parent.color;\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;\n                    brother_node.right.color = RB_TREE_COLOR_BLACK;\n                    this.rotate_left(current_node.parent);\n                    current_node = this.root;                         // exit from loop\n                }\n            }\n            else {                                             // fix node is right child\n                brother_node = current_node.parent.left;\n                if (brother_node.color === RB_TREE_COLOR_RED) {   // Case 1. Brother is red\n                    brother_node.color = RB_TREE_COLOR_BLACK;         // re-color brother\n                    current_node.parent.color = RB_TREE_COLOR_RED;    // re-color father\n                    this.rotate_right(current_node.parent);\n                    brother_node = current_node.parent.left;                        // update brother\n                }\n                // Go to cases 2..4\n                if (brother_node.left.color === RB_TREE_COLOR_BLACK &&\n                    brother_node.right.color === RB_TREE_COLOR_BLACK) {   // case 2\n                    brother_node.color = RB_TREE_COLOR_RED;             // re-color brother\n                    current_node = current_node.parent;                              // continue iteration\n                }\n                else {\n                    if (brother_node.left.color === RB_TREE_COLOR_BLACK) {  // case 3: right nephew red, left nephew black\n                        brother_node.color = RB_TREE_COLOR_RED;            // re-color brother\n                        brother_node.right.color = RB_TREE_COLOR_BLACK;    // re-color nephew\n                        this.rotate_left(brother_node);\n                        brother_node = current_node.parent.left;                        // update brother\n                        // Derive to case 4: right nephew black, left nephew red\n                    }\n                    // case 4: right nephew black, left nephew red\n                    brother_node.color = current_node.parent.color;\n                    current_node.parent.color = RB_TREE_COLOR_BLACK;\n                    brother_node.left.color = RB_TREE_COLOR_BLACK;\n                    this.rotate_right(current_node.parent);\n                    current_node = this.root;                               // force exit from loop\n                }\n            }\n        }\n\n        current_node.color = RB_TREE_COLOR_BLACK;\n    }\n\n    tree_search(node, search_node) {\n        if (node == null || node === this.nil_node)\n            return undefined;\n\n        if (search_node.equal_to(node)) {\n            return node;\n        }\n        if (search_node.less_than(node)) {\n            return this.tree_search(node.left, search_node);\n        }\n        else {\n            return this.tree_search(node.right, search_node);\n        }\n    }\n\n    tree_search_nearest_forward(node, search_node) {\n        let best;\n        let curr = node;\n        while (curr && curr !== this.nil_node) {\n            if (curr.less_than(search_node)) {\n                if (curr.intersect(search_node)) {\n                    best = curr;\n                    curr = curr.left;\n                } else {\n                    curr = curr.right;\n                }\n            } else {\n                if (!best || curr.less_than(best)) best = curr;\n                curr = curr.left;\n            }\n        }\n        return best || null;\n    }\n\n    // Original search_interval method; container res support push() insertion\n    // Search all intervals intersecting given one\n    tree_search_interval(node, search_node, res) {\n        if (node != null && node !== this.nil_node) {\n            // if (node->left != this.nil_node && node->left->max >= low) {\n            if (node.left !== this.nil_node && !node.not_intersect_left_subtree(search_node)) {\n                this.tree_search_interval(node.left, search_node, res);\n            }\n            // if (low <= node->high && node->low <= high) {\n            if (node.intersect(search_node)) {\n                res.push(node);\n            }\n            // if (node->right != this.nil_node && node->low <= high) {\n            if (node.right !== this.nil_node && !node.not_intersect_right_subtree(search_node)) {\n                this.tree_search_interval(node.right, search_node, res);\n            }\n        }\n    }\n\n    tree_find_any_interval(node, search_node) {\n        let found = false;\n        if (node != null && node !== this.nil_node) {\n            if (node.left !== this.nil_node && !node.not_intersect_left_subtree(search_node)) {\n                found = this.tree_find_any_interval(node.left, search_node);\n            }\n            if (!found) {\n                found = node.intersect(search_node);\n            }\n            if (!found && node.right !== this.nil_node && !node.not_intersect_right_subtree(search_node)) {\n                found = this.tree_find_any_interval(node.right, search_node);\n            }\n        }\n        return found;\n    }\n\n    local_minimum(node) {\n        let node_min = node;\n        while (node_min.left != null && node_min.left !== this.nil_node) {\n            node_min = node_min.left;\n        }\n        return node_min;\n    }\n\n    // not in use\n    local_maximum(node) {\n        let node_max = node;\n        while (node_max.right != null && node_max.right !== this.nil_node) {\n            node_max = node_max.right;\n        }\n        return node_max;\n    }\n\n    tree_successor(node) {\n        let node_successor;\n        let current_node;\n        let parent_node;\n\n        if (node.right !== this.nil_node) {\n            node_successor = this.local_minimum(node.right);\n        }\n        else {\n            current_node = node;\n            parent_node = node.parent;\n            while (parent_node != null && parent_node.right === current_node) {\n                current_node = parent_node;\n                parent_node = parent_node.parent;\n            }\n            node_successor = parent_node;\n        }\n        return node_successor;\n    }\n\n    //           |            right-rotate(T,y)       |\n    //           y            ---------------.       x\n    //          / \\                                  / \\\n    //         x   c          left-rotate(T,x)      a   y\n    //        / \\             <---------------         / \\\n    //       a   b                                    b   c\n\n    rotate_left(x) {\n        let y = x.right;\n\n        x.right = y.left;           // b goes to x.right\n\n        if (y.left !== this.nil_node) {\n            y.left.parent = x;     // x becomes parent of b\n        }\n        y.parent = x.parent;       // move parent\n\n        if (x === this.root) {\n            this.root = y;           // y becomes root\n        }\n        else {                        // y becomes child of x.parent\n            if (x === x.parent.left) {\n                x.parent.left = y;\n            }\n            else {\n                x.parent.right = y;\n            }\n        }\n        y.left = x;                 // x becomes left child of y\n        x.parent = y;               // and y becomes parent of x\n\n        if (x != null && x !== this.nil_node) {\n            x.update_max();\n        }\n\n        y = x.parent;\n        if (y != null && y !== this.nil_node) {\n            y.update_max();\n        }\n    }\n\n    rotate_right(y) {\n        let x = y.left;\n\n        y.left = x.right;           // b goes to y.left\n\n        if (x.right !== this.nil_node) {\n            x.right.parent = y;        // y becomes parent of b\n        }\n        x.parent = y.parent;          // move parent\n\n        if (y === this.root) {        // x becomes root\n            this.root = x;\n        }\n        else {                        // y becomes child of x.parent\n            if (y === y.parent.left) {\n                y.parent.left = x;\n            }\n            else {\n                y.parent.right = x;\n            }\n        }\n        x.right = y;                 // y becomes right child of x\n        y.parent = x;               // and x becomes parent of y\n\n        if (y !== null && y !== this.nil_node) {\n            y.update_max();\n        }\n\n        x = y.parent;\n        if (x != null && x !== this.nil_node) {\n            x.update_max();\n        }\n    }\n\n    tree_walk(node, action) {\n        if (node != null && node !== this.nil_node) {\n            this.tree_walk(node.left, action);\n            // arr.push(node.toArray());\n            action(node);\n            this.tree_walk(node.right, action);\n        }\n    }\n\n    /* Return true if all red nodes have exactly two black child nodes */\n    testRedBlackProperty() {\n        let res = true;\n        this.tree_walk(this.root, function (node) {\n            if (node.color === RB_TREE_COLOR_RED) {\n                if (!(node.left.color === RB_TREE_COLOR_BLACK && node.right.color === RB_TREE_COLOR_BLACK)) {\n                    res = false;\n                }\n            }\n        });\n        return res;\n    }\n\n    /* Throw error if not every path from root to bottom has same black height */\n    testBlackHeightProperty(node) {\n        let height = 0;\n        let heightLeft = 0;\n        let heightRight = 0;\n        if (node.color === RB_TREE_COLOR_BLACK) {\n            height++;\n        }\n        if (node.left !== this.nil_node) {\n            heightLeft = this.testBlackHeightProperty(node.left);\n        }\n        else {\n            heightLeft = 1;\n        }\n        if (node.right !== this.nil_node) {\n            heightRight = this.testBlackHeightProperty(node.right);\n        }\n        else {\n            heightRight = 1;\n        }\n        if (heightLeft !== heightRight) {\n            throw new Error('Red-black height property violated');\n        }\n        height += heightLeft;\n        return height;\n    }\n}\n\nexport { Interval, Node, IntervalTree as default };\n"],"names":["async","unzip","inputData","strm","pos","i","chunks","inflator","totalSize","remainingInput","subarray","Inflate","push","Z_SYNC_FLUSH","err","Error","msg","next_in","result","length","avail_in","Uint8Array","offset","set","from","e","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","buffer","len","origCpos","GziIndex","constructor","filehandle","path","this","TypeError","_readLongWithOverflow","buf","unsigned","long","slice","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","index","_readIndex","allocUnsafe","read","numEntries","entries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","entry","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","Object","assign","size","getUncompressedFileSize","blocks","undefined","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","next","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy","Interval","low","high","clone","max","less_than","other_interval","equal_to","intersect","not_intersect","merge","output","comparable_max","interval1","interval2","comparable_less_than","val1","val2","Node","key","value","left","right","parent","color","item","isNaN","isNil","_value_less_than","other_node","_value_equal","copy_data","update_max","not_intersect_left_subtree","search_node","not_intersect_right_subtree","IntervalTree","root","nil_node","count","tree_walk","keys","res","node","values","items","isEmpty","clear","insert","insert_node","tree_insert","recalc_max","exist","tree_search","remove","delete_node","tree_delete","search","interval","outputMapperFn","resp_nodes","tree_search_interval","map","intersect_any","tree_find_any_interval","forEach","visitor","callback","tree","iterate","tree_search_nearest_forward","local_minimum","tree_successor","node_current","current_node","parent_node","insert_fixup","uncle_node","rotate_left","rotate_right","cut_node","fix_node","delete_fixup","brother_node","best","curr","found","node_min","local_maximum","node_max","node_successor","x","y","action","testRedBlackProperty","testBlackHeightProperty","height","heightLeft","heightRight"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/457.6d7b716d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[457],{2141:(e,a,t)=>{t.d(a,{L:()=>g,q:()=>h});var n=t(7552),o=t(68446),i=t(29499),r=t(58507),s=t(5401),l=t(36422),c=t(49823),m=t(42489),d=t(99546),p=t(33371),w=t(32808);const b=(0,t(75785).n9)()({block:{display:"block"}});function v({checked:e,disabled:a,label:t,onChange:o}){const{classes:i}=b();return n.createElement(p.A,{disabled:a,className:i.block,control:n.createElement(w.A,{checked:e,onChange:o}),label:t})}function y(e){return e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))})))}const g=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:p,view:w}){const[b,g]=(0,n.useState)(!0),[k,h]=(0,n.useState)(!0);return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Multi-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:b,label:"Copy tracks into the new view",onChange:e=>{g(e.target.checked)}}),b?n.createElement(v,{checked:k,disabled:!b,label:"Mirror the copied tracks (only available if copying tracks and using two level)",onChange:e=>{h(e.target.checked)}}):null),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{(async()=>{const a=(0,d.getSession)(e);try{const e=await a.assemblyManager.waitForAssembly(o);if(!e)throw new Error(`assembly ${o} not found`);const{refName:n,pos:i,mateRefName:r,matePos:s}=p.getBreakendCoveringRegions({feature:t,assembly:e}),c=(0,l.getSnapshot)(w.tracks),d=a.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",hideHeader:!0,tracks:y((0,l.getSnapshot)(w.tracks))},{type:"LinearGenomeView",hideHeader:!0,tracks:y(k?[...c].reverse():c)}]}),b=e.regions.find((e=>e.refName===n)),v=e.regions.find((e=>e.refName===r));if(!b||!v)throw new Error("can't find regions");await Promise.all([d.views[0].navToLocations([{refName:n,start:b.start,end:i,assemblyName:o},{refName:n,start:i+1,end:b.end,assemblyName:o}]),d.views[1].navToLocations([{refName:r,start:v.start,end:s,assemblyName:o},{refName:r,start:s+1,end:v.end,assemblyName:o}])]),await(0,m.when)((()=>d.views[1].initialized&&d.views[0].initialized)),d.views[1].zoomTo(10),d.views[0].zoomTo(10),d.views[1].centerAt(s,r),d.views[0].centerAt(i,n)}catch(e){console.error(e),a.notify(`${e}`)}})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}));var k=t(1343);const h=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:m,view:p}){const[w,b]=(0,n.useState)(!0),[y,g]=(0,d.useLocalStorage)("breakpointWindowSize","5000");return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Single-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:w,label:"Copy tracks into the new view",onChange:e=>{b(e.target.checked)}}),n.createElement(k.A,{label:"Window size (bp)",value:y,onChange:e=>{g(e.target.value)}})),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{const n=(0,d.getSession)(e);(async()=>{try{const a=n.assemblyManager.get(o),i=+y;if(Number.isNaN(i))throw new Error("windowSize not a number");const{refName:r,pos:s,mateRefName:c,matePos:w}=m.getBreakendCoveringRegions({feature:t,assembly:a}),b=n.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",tracks:(e=(0,l.getSnapshot)(p.tracks),e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))}))))}]});await b.views[0].navToLocations((0,d.gatherOverlaps)([{refName:r,start:Math.max(0,s-i),end:s+i,assemblyName:o},{refName:c,start:Math.max(0,w-i),end:w+i,assemblyName:o}],i))}catch(e){console.error(e),n.notify(`${e}`)}var e})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}))},80457:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n.q});var n=t(2141)}}]);
+//# sourceMappingURL=457.6d7b716d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/457.6d7b716d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/457.6d7b716d.chunk.js","mappings":"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","sources":["../../../packages/sv-core/src/Checkbox2.tsx","../../../packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx","../../../packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, FormControlLabel } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  block: {\n    display: 'block',\n  },\n})\n\nexport default function Checkbox2({\n  checked,\n  disabled,\n  label,\n  onChange,\n}: {\n  checked: boolean\n  disabled?: boolean\n  label: string\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <FormControlLabel\n      disabled={disabled}\n      className={classes.block}\n      control={<Checkbox checked={checked} onChange={onChange} />}\n      label={label}\n    />\n  )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { when } from 'mobx'\nimport { getSession, Feature } from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendMultiLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [mirror, setMirror] = useState(true)\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Multi-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        {copyTracks ? (\n          <Checkbox2\n            checked={mirror}\n            disabled={!copyTracks}\n            label=\"Mirror the copied tracks (only available if copying tracks and using two level)\"\n            onChange={event => {\n              setMirror(event.target.checked)\n            }}\n          />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              const session = getSession(model)\n              try {\n                const asm =\n                  await session.assemblyManager.waitForAssembly(assemblyName)\n                if (!asm) {\n                  throw new Error(`assembly ${assemblyName} not found`)\n                }\n\n                const { refName, pos, mateRefName, matePos } =\n                  viewType.getBreakendCoveringRegions({\n                    feature,\n                    assembly: asm,\n                  })\n\n                const viewTracks = getSnapshot(view.tracks) as Track[]\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(\n                          mirror ? [...viewTracks].reverse() : viewTracks,\n                        ),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n                const r1 = asm.regions!.find(r => r.refName === refName)\n                const r2 = asm.regions!.find(r => r.refName === mateRefName)\n                if (!r1 || !r2) {\n                  throw new Error(\"can't find regions\")\n                }\n                await Promise.all([\n                  breakpointSplitView.views[0]!.navToLocations([\n                    {\n                      refName,\n                      start: r1.start,\n                      end: pos,\n                      assemblyName,\n                    },\n                    {\n                      refName,\n                      start: pos + 1,\n                      end: r1.end,\n                      assemblyName,\n                    },\n                  ]),\n                  breakpointSplitView.views[1]!.navToLocations([\n                    {\n                      refName: mateRefName,\n                      start: r2.start,\n                      end: matePos,\n                      assemblyName,\n                    },\n                    {\n                      refName: mateRefName,\n                      start: matePos + 1,\n                      end: r2.end,\n                      assemblyName,\n                    },\n                  ]),\n                ])\n                await when(\n                  () =>\n                    breakpointSplitView.views[1]!.initialized &&\n                    breakpointSplitView.views[0]!.initialized,\n                )\n                breakpointSplitView.views[1]!.zoomTo(10)\n                breakpointSplitView.views[0]!.zoomTo(10)\n                breakpointSplitView.views[1]!.centerAt(matePos, mateRefName)\n                breakpointSplitView.views[0]!.centerAt(pos, refName)\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendMultiLevelOptionDialog\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, TextField } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  Feature,\n  gatherOverlaps,\n  useLocalStorage,\n} from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendSingleLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [windowSize, setWindowSize] = useLocalStorage(\n    'breakpointWindowSize',\n    '5000',\n  )\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Single-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        <TextField\n          label=\"Window size (bp)\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            const session = getSession(model)\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                const assembly = session.assemblyManager.get(assemblyName)\n                const w = +windowSize\n                if (Number.isNaN(w)) {\n                  throw new Error('windowSize not a number')\n                }\n                const { refName, pos, mateRefName, matePos } =\n                  // @ts-expect-error\n                  viewType.getBreakendCoveringRegions({ feature, assembly })\n\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n\n                await breakpointSplitView.views[0]!.navToLocations(\n                  gatherOverlaps(\n                    [\n                      {\n                        refName,\n                        start: Math.max(0, pos - w),\n                        end: pos + w,\n                        assemblyName,\n                      },\n                      {\n                        refName: mateRefName,\n                        start: Math.max(0, matePos - w),\n                        end: matePos + w,\n                        assemblyName,\n                      },\n                    ],\n                    w,\n                  ),\n                )\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendSingleLevelOptionDialog\n"],"names":["useStyles","makeStyles","block","display","Checkbox2","checked","disabled","label","onChange","classes","React","FormControlLabel","className","control","Checkbox","stripIds","arr","map","id","displays","rest","observer","model","handleClose","feature","assemblyName","viewType","view","copyTracks","setCopyTracks","useState","mirror","setMirror","Dialog","open","onClose","title","DialogContent","event","target","DialogActions","Button","onClick","session","getSession","asm","assemblyManager","waitForAssembly","Error","refName","pos","mateRefName","matePos","getBreakendCoveringRegions","assembly","viewTracks","getSnapshot","tracks","breakpointSplitView","addView","type","displayName","get","views","hideHeader","reverse","r1","regions","find","r","r2","Promise","all","navToLocations","start","end","when","initialized","zoomTo","centerAt","e","console","error","notify","variant","color","autoFocus","windowSize","setWindowSize","useLocalStorage","TextField","value","w","Number","isNaN","gatherOverlaps","Math","max"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4615.dc35870f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4615],{54615:(s,e,a)=>{a.r(e),a.d(e,{default:()=>l.A,getScopedCssBaselineUtilityClass:()=>b.r,scopedCssBaselineClasses:()=>b.A});var l=a(2187),b=a(11263)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4629.1f1a55a3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4629],{87731:(e,n,r)=>{r.d(n,{A:()=>k});var t=r(7552),o=r(93878),a=r(72639),l=r(70799),i=r(91527),s=r(15622),u=r(51148),c=r(48231),p=r(60129),d=r(58520),y=r(4785),b=r(36715),v=r(58161),m=r(39995);const A=({theme:e,ownerState:n})=>{const r=n.color,t=(0,m.Yn)(e,`palette.${r}`,!1)||n.color,o=(0,m.Yn)(e,`palette.${r}Channel`);return"vars"in e&&o?`rgba(${o} / 0.4)`:(0,a.X4)(t,.4)};var h=r(69500);const w={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},x=(0,u.Ay)(b.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:r}=e;return[n.root,n[`underline${(0,s.A)(r.underline)}`],"button"===r.component&&n.button]}})((0,p.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:n})=>"always"===e&&"inherit"!==n.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,d.A)()).map((([n])=>({props:{underline:"always",color:n},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[n].mainChannel} / 0.4)`:(0,a.X4)(e.palette[n].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${v.A.focusVisible}`]:{outline:"auto"}}}]})))),k=t.forwardRef((function(e,n){const r=(0,y.b)({props:e,name:"MuiLink"}),a=(0,c.A)(),{className:u,color:p="primary",component:d="a",onBlur:b,onFocus:m,TypographyClasses:k,underline:C="always",variant:g="inherit",sx:f,...L}=r,[S,$]=t.useState(!1),D={...r,color:p,component:d,focusVisible:S,underline:C,variant:g},M=(e=>{const{classes:n,component:r,focusVisible:t,underline:o}=e,a={root:["root",`underline${(0,s.A)(o)}`,"button"===r&&"button",t&&"focusVisible"]};return(0,l.A)(a,v.t,n)})(D);return(0,h.jsx)(x,{color:p,className:(0,o.A)(M.root,u),classes:k,component:d,onBlur:e=>{(0,i.A)(e.target)||$(!1),b&&b(e)},onFocus:e=>{(0,i.A)(e.target)&&$(!0),m&&m(e)},ref:n,ownerState:D,variant:g,...L,sx:[...void 0===w[p]?[{color:p}]:[],...Array.isArray(f)?f:[f]],style:{...L.style,..."always"===C&&"inherit"!==p&&!w[p]&&{"--Link-underlineColor":A({theme:a,ownerState:D})}}})}))},94629:(e,n,r)=>{r.r(n),r.d(n,{default:()=>t.A,getLinkUtilityClass:()=>o.t,linkClasses:()=>o.A});var t=r(87731),o=r(58161)},58161:(e,n,r)=>{r.d(n,{A:()=>l,t:()=>a});var t=r(33761),o=r(85693);function a(e){return(0,o.Ay)("MuiLink",e)}const l=(0,t.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])}}]);
+//# sourceMappingURL=4629.1f1a55a3.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4629.1f1a55a3.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4629.1f1a55a3.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js"],"sourcesContent":["import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;"],"names":["theme","ownerState","transformedColor","color","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","Typography","name","slot","overridesResolver","props","styles","root","capitalize","underline","component","button","memoTheme","variants","style","textDecoration","textDecorationColor","Object","entries","palette","filter","createSimplePaletteValueFilter","map","vars","mainChannel","main","text","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","margin","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","inProps","ref","useTheme","className","onBlur","onFocus","TypographyClasses","variant","sx","other","setFocusVisible","classes","slots","composeClasses","useUtilityClasses","clsx","event","isFocusVisible","target","undefined","Array","isArray","getLinkUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4630.f0bdb9f0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4630],{74630:(e,t,n)=>{n.r(t),n.d(t,{default:()=>x});var r=n(7552),o=n(87731),a=n(72639),s=n(36715),c=n(29499),i=n(58507),l=n(5401),u=n(75785),w=n(1631),m=n(31409),p=n.n(m),h=n(92562),f=n(37565);function d({href:e,children:t}){return r.createElement(o.A,{target:"_blank",href:e},t)}async function b(e){const t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e}: ${await t.text()}`);return t}const g={};async function E(e){if(void 0!==g[e])return g[e];const t=new URL(e).search,n=await async function(e){return(await b(e)).text()}(e);let r=new RegExp(/\/\/# sourceMappingURL=(.*)/).exec(n)?.[1]||"";r=new URL(r,e).href+t;const o=await async function(e){return(await b(e)).json()}(r),a=new w.SourceMapConsumer(o);return g[e]=a,a}const $=1e4,k=(0,u.n9)()((e=>({pre:{background:(0,a.X4)(e.palette.error.main,.2),border:`1px solid ${e.palette.divider}`,overflow:"auto",margin:20,maxHeight:300}})));function y({text:e,extra:t}){const{classes:n}=k(),o=encodeURIComponent(`${["I got this error from JBrowse, here is the stack trace:\n","```",e,"```",t?`supporting data: ${JSON.stringify(t,null,2)}`:""].join("\n")}\n`),a=[e,t?`supporting data: ${JSON.stringify(t,null,2)}`:""].join("\n"),c="jbrowse2@berkeley.edu",i=`https://github.com/GMOD/jbrowse-components/issues/new?labels=bug&title=JBrowse+issue&body=${o}`,l=`mailto:${c}?subject=JBrowse%202%20error&body=${o}`;return r.createElement(r.Fragment,null,r.createElement(s.A,null,"Post a new issue at ",r.createElement(d,{href:i},"GitHub")," or send an email to ",r.createElement(d,{href:l},c)," "),r.createElement("pre",{className:n.pre},a))}function x({error:e,onClose:t,extra:n}){const[o,a]=(0,r.useState)(),[s,u]=(0,r.useState)(),[w,m]=(0,r.useState)(!1),d=e?`${e}`:"",b=function(e,t){if(e.startsWith("Error:")){const n=`${t}`;return e.slice(n.length)}return e}(`${"object"==typeof e&&null!==e&&"stack"in e?e.stack:""}`,d);(0,r.useEffect)((()=>{(async()=>{try{const e=await async function(e){const t=e.split("\n"),n=[];for(const e of t){const t=new RegExp(/(.*)(https?:\/\/.*):(\d+):(\d+)/).exec(e);if(null===t){n.push(e);continue}const r=t[2],o=(await E(r)).originalPositionFor({line:Number.parseInt(t[3]),column:Number.parseInt(t[4])});o.source&&o.line&&o.column?n.push(`${o.source}:${o.line}:${o.column+1} (${t[1].trim()})`):n.push(e)}return n.join("\n")}(b);a(e)}catch(e){console.error(e),a(b),u(e)}})()}),[b]);const g=[s?"Error loading source map, showing raw stack trace below:":"",d.length>$?`${d.slice(0,$)}...`:d,o||"No stack trace available",window.JBrowseSession?`JBrowse ${window.JBrowseSession.version}`:""].filter((e=>!!e)).join("\n");return r.createElement(h.A,{open:!0,onClose:t,title:"Stack trace",maxWidth:"xl"},r.createElement(c.A,null,void 0===o?r.createElement(f.A,{variant:"h6"}):r.createElement(y,{text:g,extra:n})),r.createElement(i.A,null,r.createElement(l.A,{variant:"contained",color:"secondary",onClick:()=>{p()(g),m(!0),setTimeout((()=>{m(!1)}),1e3)}},w?"Copied!":"Copy stack trace to clipboard"),r.createElement(l.A,{variant:"contained",color:"primary",onClick:t},"Close")))}}}]);
+//# sourceMappingURL=4630.f0bdb9f0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4630.f0bdb9f0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4630.f0bdb9f0.chunk.js","mappings":"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","sources":["../../../packages/core/ui/ErrorMessageStackTraceDialog.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  Link,\n  Typography,\n  alpha,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nimport { SourceMapConsumer } from 'source-map-js'\nimport copy from 'copy-to-clipboard'\n\n// locals\nimport Dialog from './Dialog'\nimport LoadingEllipses from './LoadingEllipses'\n\nfunction Link2({\n  href,\n  children,\n}: {\n  href: string\n  children: React.ReactNode\n}) {\n  return (\n    <Link target=\"_blank\" href={href}>\n      {children}\n    </Link>\n  )\n}\n\nasync function myfetch(uri: string) {\n  const res = await fetch(uri)\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status} fetching ${uri}: ${await res.text()}`)\n  }\n  return res\n}\n\nasync function myfetchjson(uri: string) {\n  const res = await myfetch(uri)\n  return res.json()\n}\n\nasync function myfetchtext(uri: string) {\n  const res = await myfetch(uri)\n  return res.text()\n}\n\n// produce a source-map resolved stack trace\n// reference code https://stackoverflow.com/a/77158517/2129219\nconst sourceMaps: Record<string, SourceMapConsumer> = {}\nasync function getSourceMapFromUri(uri: string) {\n  if (sourceMaps[uri] !== undefined) {\n    return sourceMaps[uri]\n  }\n  const uriQuery = new URL(uri).search\n  const currentScriptContent = await myfetchtext(uri)\n\n  let mapUri =\n    new RegExp(/\\/\\/# sourceMappingURL=(.*)/).exec(currentScriptContent)?.[1] ||\n    ''\n  mapUri = new URL(mapUri, uri).href + uriQuery\n\n  const data = await myfetchjson(mapUri)\n  const map = new SourceMapConsumer(data)\n  sourceMaps[uri] = map\n  return map\n}\n\nasync function mapStackTrace(stack: string) {\n  const stackLines = stack.split('\\n')\n  const mappedStack = []\n\n  for (const line of stackLines) {\n    const match = new RegExp(/(.*)(https?:\\/\\/.*):(\\d+):(\\d+)/).exec(line)\n    if (match === null) {\n      mappedStack.push(line)\n      continue\n    }\n\n    const uri = match[2]!\n    const consumer = await getSourceMapFromUri(uri)\n\n    const originalPosition = consumer.originalPositionFor({\n      line: Number.parseInt(match[3]!),\n      column: Number.parseInt(match[4]!),\n    })\n\n    if (\n      !originalPosition.source ||\n      !originalPosition.line ||\n      !originalPosition.column\n    ) {\n      mappedStack.push(line)\n      continue\n    }\n\n    mappedStack.push(\n      `${originalPosition.source}:${originalPosition.line}:${\n        originalPosition.column + 1\n      } (${match[1]!.trim()})`,\n    )\n  }\n\n  return mappedStack.join('\\n')\n}\n\nconst MAX_ERR_LEN = 10_000\n\n// Chrome has the error message in the stacktrace, firefox doesn't\nfunction stripMessage(trace: string, error: unknown) {\n  if (trace.startsWith('Error:')) {\n    // remove the error message, which can be very long due to mobx-state-tree\n    // stuff, to get just the stack trace\n    const err = `${error}`\n    return trace.slice(err.length)\n  } else {\n    return trace\n  }\n}\n\nconst useStyles = makeStyles()(theme => ({\n  pre: {\n    background: alpha(theme.palette.error.main, 0.2),\n    border: `1px solid ${theme.palette.divider}`,\n    overflow: 'auto',\n    margin: 20,\n    maxHeight: 300,\n  },\n}))\n\nfunction Contents({ text, extra }: { text: string; extra?: unknown }) {\n  const { classes } = useStyles()\n  const err = encodeURIComponent(\n    `${[\n      'I got this error from JBrowse, here is the stack trace:\\n',\n      '```',\n      text,\n      '```',\n      extra ? `supporting data: ${JSON.stringify(extra, null, 2)}` : '',\n    ].join('\\n')}\\n`,\n  )\n\n  const err2 = [\n    text,\n    extra ? `supporting data: ${JSON.stringify(extra, null, 2)}` : '',\n  ].join('\\n')\n\n  const email = 'jbrowse2@berkeley.edu'\n  const githubLink = `https://github.com/GMOD/jbrowse-components/issues/new?labels=bug&title=JBrowse+issue&body=${err}`\n  const emailLink = `mailto:${email}?subject=JBrowse%202%20error&body=${err}`\n\n  return (\n    <>\n      <Typography>\n        Post a new issue at <Link2 href={githubLink}>GitHub</Link2> or send an\n        email to <Link2 href={emailLink}>{email}</Link2>{' '}\n      </Typography>\n      <pre className={classes.pre}>{err2}</pre>\n    </>\n  )\n}\n\nexport default function ErrorMessageStackTraceDialog({\n  error,\n  onClose,\n  extra,\n}: {\n  onClose: () => void\n  error: unknown\n  extra?: unknown\n}) {\n  const [mappedStackTrace, setMappedStackTrace] = useState<string>()\n  const [secondaryError, setSecondaryError] = useState<unknown>()\n  const [clicked, setClicked] = useState(false)\n  const stackTracePreProcessed = `${typeof error === 'object' && error !== null && 'stack' in error ? error.stack : ''}`\n  const errorText = error ? `${error}` : ''\n  const stackTrace = stripMessage(stackTracePreProcessed, errorText)\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        const res = await mapStackTrace(stackTrace)\n        setMappedStackTrace(res)\n      } catch (e) {\n        console.error(e)\n        setMappedStackTrace(stackTrace)\n        setSecondaryError(e)\n      }\n    })()\n  }, [stackTrace])\n\n  const errorBoxText = [\n    secondaryError\n      ? 'Error loading source map, showing raw stack trace below:'\n      : '',\n    errorText.length > MAX_ERR_LEN\n      ? `${errorText.slice(0, MAX_ERR_LEN)}...`\n      : errorText,\n    mappedStackTrace || 'No stack trace available',\n    // @ts-expect-error add version info at bottom if we are in jbrowse-web\n    window.JBrowseSession ? `JBrowse ${window.JBrowseSession.version}` : '',\n  ]\n    .filter(f => !!f)\n    .join('\\n')\n\n  return (\n    <Dialog open onClose={onClose} title=\"Stack trace\" maxWidth=\"xl\">\n      <DialogContent>\n        {mappedStackTrace === undefined ? (\n          <LoadingEllipses variant=\"h6\" />\n        ) : (\n          <Contents text={errorBoxText} extra={extra} />\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            copy(errorBoxText)\n            setClicked(true)\n            setTimeout(() => {\n              setClicked(false)\n            }, 1000)\n          }}\n        >\n          {clicked ? 'Copied!' : 'Copy stack trace to clipboard'}\n        </Button>\n        <Button variant=\"contained\" color=\"primary\" onClick={onClose}>\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["Link2","href","children","React","Link","target","async","myfetch","uri","res","fetch","ok","Error","status","text","sourceMaps","getSourceMapFromUri","undefined","uriQuery","URL","search","currentScriptContent","myfetchtext","mapUri","RegExp","exec","data","json","myfetchjson","map","SourceMapConsumer","MAX_ERR_LEN","useStyles","makeStyles","theme","pre","background","alpha","palette","error","main","border","divider","overflow","margin","maxHeight","Contents","extra","classes","err","encodeURIComponent","JSON","stringify","join","err2","email","githubLink","emailLink","Typography","className","ErrorMessageStackTraceDialog","onClose","mappedStackTrace","setMappedStackTrace","useState","secondaryError","setSecondaryError","clicked","setClicked","errorText","stackTrace","trace","startsWith","slice","length","stripMessage","stack","useEffect","stackLines","split","mappedStack","line","match","push","originalPosition","originalPositionFor","Number","parseInt","column","source","trim","mapStackTrace","e","console","errorBoxText","window","JBrowseSession","version","filter","f","Dialog","open","title","maxWidth","DialogContent","LoadingEllipses","variant","DialogActions","Button","color","onClick","copy","setTimeout"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4659.b65d8547.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4659],{24659:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.A});var a=s(93321)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4704.9b3995ff.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4704],{2141:(e,a,t)=>{t.d(a,{L:()=>g,q:()=>h});var n=t(7552),o=t(68446),i=t(29499),r=t(58507),s=t(5401),l=t(36422),c=t(49823),m=t(42489),d=t(99546),p=t(33371),w=t(32808);const b=(0,t(75785).n9)()({block:{display:"block"}});function v({checked:e,disabled:a,label:t,onChange:o}){const{classes:i}=b();return n.createElement(p.A,{disabled:a,className:i.block,control:n.createElement(w.A,{checked:e,onChange:o}),label:t})}function y(e){return e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))})))}const g=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:p,view:w}){const[b,g]=(0,n.useState)(!0),[k,h]=(0,n.useState)(!0);return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Multi-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:b,label:"Copy tracks into the new view",onChange:e=>{g(e.target.checked)}}),b?n.createElement(v,{checked:k,disabled:!b,label:"Mirror the copied tracks (only available if copying tracks and using two level)",onChange:e=>{h(e.target.checked)}}):null),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{(async()=>{const a=(0,d.getSession)(e);try{const e=await a.assemblyManager.waitForAssembly(o);if(!e)throw new Error(`assembly ${o} not found`);const{refName:n,pos:i,mateRefName:r,matePos:s}=p.getBreakendCoveringRegions({feature:t,assembly:e}),c=(0,l.getSnapshot)(w.tracks),d=a.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",hideHeader:!0,tracks:y((0,l.getSnapshot)(w.tracks))},{type:"LinearGenomeView",hideHeader:!0,tracks:y(k?[...c].reverse():c)}]}),b=e.regions.find((e=>e.refName===n)),v=e.regions.find((e=>e.refName===r));if(!b||!v)throw new Error("can't find regions");await Promise.all([d.views[0].navToLocations([{refName:n,start:b.start,end:i,assemblyName:o},{refName:n,start:i+1,end:b.end,assemblyName:o}]),d.views[1].navToLocations([{refName:r,start:v.start,end:s,assemblyName:o},{refName:r,start:s+1,end:v.end,assemblyName:o}])]),await(0,m.when)((()=>d.views[1].initialized&&d.views[0].initialized)),d.views[1].zoomTo(10),d.views[0].zoomTo(10),d.views[1].centerAt(s,r),d.views[0].centerAt(i,n)}catch(e){console.error(e),a.notify(`${e}`)}})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}));var k=t(1343);const h=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:m,view:p}){const[w,b]=(0,n.useState)(!0),[y,g]=(0,d.useLocalStorage)("breakpointWindowSize","5000");return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Single-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:w,label:"Copy tracks into the new view",onChange:e=>{b(e.target.checked)}}),n.createElement(k.A,{label:"Window size (bp)",value:y,onChange:e=>{g(e.target.value)}})),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{const n=(0,d.getSession)(e);(async()=>{try{const a=n.assemblyManager.get(o),i=+y;if(Number.isNaN(i))throw new Error("windowSize not a number");const{refName:r,pos:s,mateRefName:c,matePos:w}=m.getBreakendCoveringRegions({feature:t,assembly:a}),b=n.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",tracks:(e=(0,l.getSnapshot)(p.tracks),e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))}))))}]});await b.views[0].navToLocations((0,d.gatherOverlaps)([{refName:r,start:Math.max(0,s-i),end:s+i,assemblyName:o},{refName:c,start:Math.max(0,w-i),end:w+i,assemblyName:o}],i))}catch(e){console.error(e),n.notify(`${e}`)}var e})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}))},84704:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n.L});var n=t(2141)}}]);
+//# sourceMappingURL=4704.9b3995ff.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4704.9b3995ff.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4704.9b3995ff.chunk.js","mappings":"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","sources":["../../../packages/sv-core/src/Checkbox2.tsx","../../../packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx","../../../packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, FormControlLabel } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  block: {\n    display: 'block',\n  },\n})\n\nexport default function Checkbox2({\n  checked,\n  disabled,\n  label,\n  onChange,\n}: {\n  checked: boolean\n  disabled?: boolean\n  label: string\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <FormControlLabel\n      disabled={disabled}\n      className={classes.block}\n      control={<Checkbox checked={checked} onChange={onChange} />}\n      label={label}\n    />\n  )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { when } from 'mobx'\nimport { getSession, Feature } from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendMultiLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [mirror, setMirror] = useState(true)\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Multi-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        {copyTracks ? (\n          <Checkbox2\n            checked={mirror}\n            disabled={!copyTracks}\n            label=\"Mirror the copied tracks (only available if copying tracks and using two level)\"\n            onChange={event => {\n              setMirror(event.target.checked)\n            }}\n          />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              const session = getSession(model)\n              try {\n                const asm =\n                  await session.assemblyManager.waitForAssembly(assemblyName)\n                if (!asm) {\n                  throw new Error(`assembly ${assemblyName} not found`)\n                }\n\n                const { refName, pos, mateRefName, matePos } =\n                  viewType.getBreakendCoveringRegions({\n                    feature,\n                    assembly: asm,\n                  })\n\n                const viewTracks = getSnapshot(view.tracks) as Track[]\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(\n                          mirror ? [...viewTracks].reverse() : viewTracks,\n                        ),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n                const r1 = asm.regions!.find(r => r.refName === refName)\n                const r2 = asm.regions!.find(r => r.refName === mateRefName)\n                if (!r1 || !r2) {\n                  throw new Error(\"can't find regions\")\n                }\n                await Promise.all([\n                  breakpointSplitView.views[0]!.navToLocations([\n                    {\n                      refName,\n                      start: r1.start,\n                      end: pos,\n                      assemblyName,\n                    },\n                    {\n                      refName,\n                      start: pos + 1,\n                      end: r1.end,\n                      assemblyName,\n                    },\n                  ]),\n                  breakpointSplitView.views[1]!.navToLocations([\n                    {\n                      refName: mateRefName,\n                      start: r2.start,\n                      end: matePos,\n                      assemblyName,\n                    },\n                    {\n                      refName: mateRefName,\n                      start: matePos + 1,\n                      end: r2.end,\n                      assemblyName,\n                    },\n                  ]),\n                ])\n                await when(\n                  () =>\n                    breakpointSplitView.views[1]!.initialized &&\n                    breakpointSplitView.views[0]!.initialized,\n                )\n                breakpointSplitView.views[1]!.zoomTo(10)\n                breakpointSplitView.views[0]!.zoomTo(10)\n                breakpointSplitView.views[1]!.centerAt(matePos, mateRefName)\n                breakpointSplitView.views[0]!.centerAt(pos, refName)\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendMultiLevelOptionDialog\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, TextField } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  Feature,\n  gatherOverlaps,\n  useLocalStorage,\n} from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendSingleLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [windowSize, setWindowSize] = useLocalStorage(\n    'breakpointWindowSize',\n    '5000',\n  )\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Single-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        <TextField\n          label=\"Window size (bp)\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            const session = getSession(model)\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                const assembly = session.assemblyManager.get(assemblyName)\n                const w = +windowSize\n                if (Number.isNaN(w)) {\n                  throw new Error('windowSize not a number')\n                }\n                const { refName, pos, mateRefName, matePos } =\n                  // @ts-expect-error\n                  viewType.getBreakendCoveringRegions({ feature, assembly })\n\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n\n                await breakpointSplitView.views[0]!.navToLocations(\n                  gatherOverlaps(\n                    [\n                      {\n                        refName,\n                        start: Math.max(0, pos - w),\n                        end: pos + w,\n                        assemblyName,\n                      },\n                      {\n                        refName: mateRefName,\n                        start: Math.max(0, matePos - w),\n                        end: matePos + w,\n                        assemblyName,\n                      },\n                    ],\n                    w,\n                  ),\n                )\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendSingleLevelOptionDialog\n"],"names":["useStyles","makeStyles","block","display","Checkbox2","checked","disabled","label","onChange","classes","React","FormControlLabel","className","control","Checkbox","stripIds","arr","map","id","displays","rest","observer","model","handleClose","feature","assemblyName","viewType","view","copyTracks","setCopyTracks","useState","mirror","setMirror","Dialog","open","onClose","title","DialogContent","event","target","DialogActions","Button","onClick","session","getSession","asm","assemblyManager","waitForAssembly","Error","refName","pos","mateRefName","matePos","getBreakendCoveringRegions","assembly","viewTracks","getSnapshot","tracks","breakpointSplitView","addView","type","displayName","get","views","hideHeader","reverse","r1","regions","find","r","r2","Promise","all","navToLocations","start","end","when","initialized","zoomTo","centerAt","e","console","error","notify","variant","color","autoFocus","windowSize","setWindowSize","useLocalStorage","TextField","value","w","Number","isNaN","gatherOverlaps","Math","max"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4741.5a289f5d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4741],{84741:(e,t,o)=>{o.r(t),o.d(t,{default:()=>g});var a=o(7552),n=o(49823),r=o(29499),s=o(99123),l=o(61723),i=o(48171),c=o(56089),d=o(33371),u=o(33248),h=o(74893),p=o(69500);const m=(0,h.A)((0,p.jsx)("path",{d:"M11 18h2v-2h-2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4"}),"HelpOutline");function v({onClose:e,open:t}){return a.createElement(n.Dialog,{onClose:()=>{e()},open:t,title:"Info about session URLs"},a.createElement(r.A,null,a.createElement(s.A,null,"Because everything about the JBrowse session is encoded in the URL (e.g. state of the tracks, views, features selected, etc.) the sessions can get very long. Therefore, we created a URL shortener, both as a convenience and because long URLs can break some programs. Note that both the long and short URLs encode the same data, but due to long URLs causing problems with some programs, we recommend sharing short URLs."),a.createElement(s.A,null,'We generate the short URLs in a secure manner which involves encrypting the session on the client side with a random password string and uploading them to a central database. Then the random password is added to the URL but is not uploaded to the central database, making these short URLs effectively "end-to-end encrypted"'),a.createElement(s.A,null,"Only users with a share link can read the session.")))}const A="jbrowse-shareURL";function g(e){const{onClose:t,open:o,currentSetting:h}=e,[p,g]=(0,a.useState)(h),[b,f]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(n.Dialog,{onClose:()=>{localStorage.setItem(A,p),t(p)},open:o,title:"Configure session sharing"},a.createElement(r.A,null,a.createElement(s.A,null,"Select between generating long or short URLs for the session sharing",a.createElement(l.A,{onClick:()=>{f(!0)}},a.createElement(m,null))),a.createElement(i.A,{component:"fieldset"},a.createElement(c.A,{value:p,onChange:e=>{g(e.target.value)}},a.createElement(d.A,{value:"short",control:a.createElement(u.A,null),label:"Short URL"}),a.createElement(d.A,{value:"long",control:a.createElement(u.A,null),label:"Long URL"}))))),a.createElement(v,{open:b,onClose:()=>{f(!1)}}))}},33248:(e,t,o)=>{o.d(t,{A:()=>x});var a=o(7552),n=o(93878),r=o(70799),s=o(72639),l=o(15110),i=o(74893),c=o(69500);const d=(0,i.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),u=(0,i.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var h=o(55270),p=o(51148),m=o(60129);const v=(0,p.Ay)("span",{shouldForwardProp:h.A})({position:"relative",display:"flex"}),A=(0,p.Ay)(d)({transform:"scale(1)"}),g=(0,p.Ay)(u)((0,m.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),b=function(e){const{checked:t=!1,classes:o={},fontSize:a}=e,n={...e,checked:t};return(0,c.jsxs)(v,{className:o.root,ownerState:n,children:[(0,c.jsx)(A,{fontSize:a,className:o.background,ownerState:n}),(0,c.jsx)(g,{fontSize:a,className:o.dot,ownerState:n})]})};var f=o(15622),R=o(4402),C=o(33960),w=o(39006),y=o(38127),k=o(58520),S=o(4785);const E=(0,p.Ay)(l.A,{shouldForwardProp:e=>(0,h.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"medium"!==o.size&&t[`size${(0,f.A)(o.size)}`],t[`color${(0,f.A)(o.color)}`]]}})((0,m.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${y.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,k.A)()).map((([t])=>({props:{color:t,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,k.A)()).map((([t])=>({props:{color:t,disabled:!1},style:{[`&.${y.A.checked}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),z=(0,c.jsx)(b,{checked:!0}),j=(0,c.jsx)(b,{}),x=a.forwardRef((function(e,t){const o=(0,S.b)({props:e,name:"MuiRadio"}),{checked:s,checkedIcon:l=z,color:i="primary",icon:d=j,name:u,onChange:h,size:p="medium",className:m,disabled:v,disableRipple:A=!1,...g}=o,b=(0,C.A)();let k=v;b&&void 0===k&&(k=b.disabled),k??=!1;const x={...o,disabled:k,disableRipple:A,color:i,size:p},L=(e=>{const{classes:t,color:o,size:a}=e,n={root:["root",`color${(0,f.A)(o)}`,"medium"!==a&&`size${(0,f.A)(a)}`]};return{...t,...(0,r.A)(n,y.q,t)}})(x),U=(0,w.A)();let M=s;const $=(0,R.A)(h,U&&U.onChange);let O=u;var N,B;return U&&(void 0===M&&(N=U.value,M="object"==typeof(B=o.value)&&null!==B?N===B:String(N)===String(B)),void 0===O&&(O=U.name)),(0,c.jsx)(E,{type:"radio",icon:a.cloneElement(d,{fontSize:j.props.fontSize??p}),checkedIcon:a.cloneElement(l,{fontSize:z.props.fontSize??p}),disabled:k,ownerState:x,classes:L,name:O,checked:M,onChange:$,ref:t,className:(0,n.A)(L.root,m),...g})}))},38127:(e,t,o)=>{o.d(t,{A:()=>s,q:()=>r});var a=o(33761),n=o(85693);function r(e){return(0,n.Ay)("MuiRadio",e)}const s=(0,a.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},56089:(e,t,o)=>{o.d(t,{A:()=>p});var a=o(7552),n=o(93878),r=o(70799),s=o(83867),l=o(87625),i=o(51584),c=o(77259),d=o(76258),u=o(89456),h=o(69500);const p=a.forwardRef((function(e,t){const{actions:o,children:p,className:m,defaultValue:v,name:A,onChange:g,value:b,...f}=e,R=a.useRef(null),C=(e=>{const{classes:t,row:o,error:a}=e,n={root:["root",o&&"row",a&&"error"]};return(0,r.A)(n,l.B,t)})(e),[w,y]=(0,c.A)({controlled:b,default:v,name:"RadioGroup"});a.useImperativeHandle(o,(()=>({focus:()=>{let e=R.current.querySelector("input:not(:disabled):checked");e||(e=R.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const k=(0,i.A)(t,R),S=(0,u.A)(A),E=a.useMemo((()=>({name:S,onChange(e){y(e.target.value),g&&g(e,e.target.value)},value:w})),[S,g,y,w]);return(0,h.jsx)(d.A.Provider,{value:E,children:(0,h.jsx)(s.A,{role:"radiogroup",ref:k,className:(0,n.A)(C.root,m),...f,children:p})})}))},76258:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(7552).createContext(void 0)},87625:(e,t,o)=>{o.d(t,{A:()=>s,B:()=>r});var a=o(33761),n=o(85693);function r(e){return(0,n.Ay)("MuiRadioGroup",e)}const s=(0,a.A)("MuiRadioGroup",["root","row","error"])},39006:(e,t,o)=>{o.d(t,{A:()=>r});var a=o(7552),n=o(76258);function r(){return a.useContext(n.A)}}}]);
+//# sourceMappingURL=4741.5a289f5d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4741.5a289f5d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4741.5a289f5d.chunk.js","mappings":"mRAIA,SAAe,EAAAA,EAAA,IAA4B,SAAK,OAAQ,CACtDC,EAAG,mPACD,eCFW,SAASC,GAAW,QACjCC,EAAO,KACPC,IAKA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CACLH,QAASA,KACPA,GAAS,EAEXC,KAAMA,EACNG,MAAM,2BAENF,EAAAA,cAACG,EAAAA,EAAa,KACZH,EAAAA,cAACI,EAAAA,EAAiB,KAAC,qaASnBJ,EAAAA,cAACI,EAAAA,EAAiB,KAAC,uUAQnBJ,EAAAA,cAACI,EAAAA,EAAiB,KAAC,uDAM3B,CC3BA,MAAMC,EAA6B,mBAEpB,SAASC,EAAeC,GAKrC,MAAM,QAAET,EAAO,KAAEC,EAAI,eAAES,GAAmBD,GACnCE,EAASC,IAAcC,EAAAA,EAAAA,UAASH,IAChCI,EAAgBC,IAAqBF,EAAAA,EAAAA,WAAS,GAOrD,OACEX,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACC,EAAAA,OAAM,CACLH,QARcgB,KAClBC,aAAaC,QAAQX,EAA4BI,GACjDX,EAAQW,EAAQ,EAOZV,KAAMA,EACNG,MAAM,6BAENF,EAAAA,cAACG,EAAAA,EAAa,KACZH,EAAAA,cAACI,EAAAA,EAAiB,KAAC,uEAEjBJ,EAAAA,cAACiB,EAAAA,EAAU,CACTC,QAASA,KACPL,GAAkB,EAAK,GAGzBb,EAAAA,cAACmB,EAAe,QAGpBnB,EAAAA,cAACoB,EAAAA,EAAW,CAACC,UAAU,YACrBrB,EAAAA,cAACsB,EAAAA,EAAU,CACTC,MAAOd,EACPe,SAAUC,IACRf,EAAWe,EAAMC,OAAOH,MAAM,GAGhCvB,EAAAA,cAAC2B,EAAAA,EAAgB,CACfJ,MAAM,QACNK,QAAS5B,EAAAA,cAAC6B,EAAAA,EAAK,MACfC,MAAM,cAER9B,EAAAA,cAAC2B,EAAAA,EAAgB,CACfJ,MAAM,OACNK,QAAS5B,EAAAA,cAAC6B,EAAAA,EAAK,MACfC,MAAM,iBAMhB9B,EAAAA,cAACH,EAAU,CACTE,KAAMa,EACNd,QAASA,KACPe,GAAkB,EAAM,IAKlC,C,mHCtEA,SAAe,EAAAlB,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,iIACD,wBCFJ,GAAe,EAAAD,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,gLACD,sB,qCCDJ,MAAMmC,GAAsB,EAAAC,EAAA,IAAO,OAAQ,CACzCC,kBAAmBC,EAAA,GADO,CAEzB,CACDC,SAAU,WACVC,QAAS,SAELC,GAA4B,EAAAL,EAAA,IAAOM,EAAP,CAAiC,CAEjEC,UAAW,aAEPC,GAAqB,EAAAR,EAAA,IAAOS,EAAP,EAA+B,EAAAC,EAAA,IAAU,EAClEC,YACI,CACJC,KAAM,EACNT,SAAU,WACVI,UAAW,WACXM,WAAYF,EAAMG,YAAYC,OAAO,YAAa,CAChDC,OAAQL,EAAMG,YAAYE,OAAOC,OACjCC,SAAUP,EAAMG,YAAYI,SAASC,WAEvCC,SAAU,CAAC,CACT7C,MAAO,CACL8C,SAAS,GAEXC,MAAO,CACLf,UAAW,WACXM,WAAYF,EAAMG,YAAYC,OAAO,YAAa,CAChDC,OAAQL,EAAMG,YAAYE,OAAOO,QACjCL,SAAUP,EAAMG,YAAYI,SAASC,mBAgD7C,EAvCA,SAAyB5C,GACvB,MAAM,QACJ8C,GAAU,EAAK,QACfG,EAAU,CAAC,EAAC,SACZC,GACElD,EACEmD,EAAa,IACdnD,EACH8C,WAEF,OAAoB,UAAMtB,EAAqB,CAC7C4B,UAAWH,EAAQI,KACnBF,WAAYA,EACZG,SAAU,EAAc,SAAKxB,EAA2B,CACtDoB,SAAUA,EACVE,UAAWH,EAAQM,WACnBJ,WAAYA,KACG,SAAKlB,EAAoB,CACxCiB,SAAUA,EACVE,UAAWH,EAAQO,IACnBL,WAAYA,MAGlB,E,+ECjDA,MAcMM,GAAY,EAAAhC,EAAA,IAAOiC,EAAA,EAAY,CACnChC,kBAAmBiC,IAAQ,EAAAhC,EAAA,GAAsBgC,IAAkB,YAATA,EAC1DC,KAAM,WACNC,KAAM,OACNC,kBAAmB,CAAC9D,EAAO+D,KACzB,MAAM,WACJZ,GACEnD,EACJ,MAAO,CAAC+D,EAAOV,KAA0B,WAApBF,EAAWa,MAAqBD,EAAO,QAAO,EAAAE,EAAA,GAAWd,EAAWa,SAAUD,EAAO,SAAQ,EAAAE,EAAA,GAAWd,EAAWe,UAAU,GARpI,EAUf,EAAA/B,EAAA,IAAU,EACXC,YACI,CACJ8B,OAAQ9B,EAAM+B,MAAQ/B,GAAOgC,QAAQC,KAAKC,UAC1C,CAAC,KAAKC,EAAA,EAAaC,YAAa,CAC9BN,OAAQ9B,EAAM+B,MAAQ/B,GAAOgC,QAAQK,OAAOD,UAE9C3B,SAAU,CAAC,CACT7C,MAAO,CACLkE,MAAO,UACPM,UAAU,EACVE,eAAe,GAEjB3B,MAAO,CACL,UAAW,CACT4B,gBAAiBvC,EAAM+B,KAAO,QAAQ/B,EAAM+B,KAAKC,QAAQK,OAAOG,mBAAmBxC,EAAM+B,KAAKC,QAAQK,OAAOI,iBAAkB,QAAMzC,EAAMgC,QAAQK,OAAOK,OAAQ1C,EAAMgC,QAAQK,OAAOI,oBAGvLE,OAAOC,QAAQ5C,EAAMgC,SAASa,QAAO,EAAAC,EAAA,MAAkCC,KAAI,EAAEjB,MAAW,CAC5FlE,MAAO,CACLkE,QACAM,UAAU,EACVE,eAAe,GAEjB3B,MAAO,CACL,UAAW,CACT4B,gBAAiBvC,EAAM+B,KAAO,QAAQ/B,EAAM+B,KAAKC,QAAQF,GAAOkB,iBAAiBhD,EAAM+B,KAAKC,QAAQK,OAAOI,iBAAkB,QAAMzC,EAAMgC,QAAQF,GAAOmB,KAAMjD,EAAMgC,QAAQK,OAAOI,uBAGjLE,OAAOC,QAAQ5C,EAAMgC,SAASa,QAAO,EAAAC,EAAA,MAAkCC,KAAI,EAAEjB,MAAW,CAC9FlE,MAAO,CACLkE,QACAM,UAAU,GAEZzB,MAAO,CACL,CAAC,KAAKwB,EAAA,EAAazB,WAAY,CAC7BoB,OAAQ9B,EAAM+B,MAAQ/B,GAAOgC,QAAQF,GAAOmB,WAG7C,CAEHrF,MAAO,CACL0E,eAAe,GAEjB3B,MAAO,CAEL,UAAW,CACT,uBAAwB,CACtB4B,gBAAiB,wBAcrBW,GAAkC,SAAK,EAAiB,CAC5DxC,SAAS,IAELyC,GAA2B,SAAK,EAAiB,CAAC,GAyJxD,EAxJ2B,cAAiB,SAAeC,EAASC,GAClE,MAAMzF,GAAQ,OAAgB,CAC5BA,MAAOwF,EACP5B,KAAM,cAGNd,QAAS4C,EAAW,YACpBC,EAAcL,EAAkB,MAChCpB,EAAQ,UAAS,KACjB0B,EAAOL,EACP3B,KAAMiC,EACN5E,SAAU6E,EAAY,KACtB9B,EAAO,SAAQ,UACfZ,EACAoB,SAAUuB,EAAY,cACtBrB,GAAgB,KACbsB,GACDhG,EACEiG,GAAiB,EAAAC,EAAA,KACvB,IAAI1B,EAAWuB,EACXE,QACsB,IAAbzB,IACTA,EAAWyB,EAAezB,UAG9BA,KAAa,EACb,MAAMrB,EAAa,IACdnD,EACHwE,WACAE,gBACAR,QACAF,QAEIf,EA3HkBE,KACxB,MAAM,QACJF,EAAO,MACPiB,EAAK,KACLF,GACEb,EACEgD,EAAQ,CACZ9C,KAAM,CAAC,OAAQ,SAAQ,EAAAY,EAAA,GAAWC,KAAmB,WAATF,GAAqB,QAAO,EAAAC,EAAA,GAAWD,OAErF,MAAO,IACFf,MACA,EAAAmD,EAAA,GAAeD,EAAO,IAAsBlD,GAChD,EA+GeoD,CAAkBlD,GAC5BmD,GAAa,EAAAC,EAAA,KACnB,IAAIzD,EAAU4C,EACd,MAAMzE,GAAW,EAAAuF,EAAA,GAAsBV,EAAcQ,GAAcA,EAAWrF,UAC9E,IAAI2C,EAAOiC,EAjDb,IAAwBY,EAAGC,EA0DzB,OARIJ,SACqB,IAAZxD,IAnDS2D,EAoDOH,EAAWtF,MAApC8B,EAnDa,iBADQ4D,EAoDsB1G,EAAMgB,QAnDlB,OAAN0F,EACpBD,IAAMC,EAIRC,OAAOF,KAAOE,OAAOD,SAgDN,IAAT9C,IACTA,EAAO0C,EAAW1C,QAGF,SAAKH,EAAW,CAClCmD,KAAM,QACNhB,KAAmB,eAAmBA,EAAM,CAC1C1C,SAAUqC,EAAYvF,MAAMkD,UAAYc,IAE1C2B,YAA0B,eAAmBA,EAAa,CACxDzC,SAAUoC,EAAmBtF,MAAMkD,UAAYc,IAEjDQ,SAAUA,EACVrB,WAAYA,EACZF,QAASA,EACTW,KAAMA,EACNd,QAASA,EACT7B,SAAUA,EACVwE,IAAKA,EACLrC,WAAW,EAAAyD,EAAA,GAAK5D,EAAQI,KAAMD,MAC3B4C,GAEP,G,qEC7KO,SAASc,EAAqBjD,GACnC,OAAO,QAAqB,WAAYA,EAC1C,CACA,MACA,GADqB,OAAuB,WAAY,CAAC,OAAQ,UAAW,WAAY,eAAgB,iBAAkB,a,oJCQ1H,MAoGA,EAzFgC,cAAiB,SAAoB7D,EAAOyF,GAC1E,MAAM,QAGJsB,EAAO,SACPzD,EAAQ,UACRF,EAAS,aACT4D,EACApD,KAAMiC,EAAQ,SACd5E,EACAD,MAAOiG,KACJjB,GACDhG,EACEkH,EAAU,SAAa,MACvBjE,EAzBkBjD,KACxB,MAAM,QACJiD,EAAO,IACPkE,EAAG,MACHC,GACEpH,EACEmG,EAAQ,CACZ9C,KAAM,CAAC,OAAQ8D,GAAO,MAAOC,GAAS,UAExC,OAAO,OAAejB,EAAO,IAA2BlD,EAAQ,EAgBhDoD,CAAkBrG,IAC3BgB,EAAOqG,IAAiB,OAAc,CAC3CC,WAAYL,EACZM,QAASP,EACTpD,KAAM,eAER,sBAA0BmD,GAAS,KAAM,CACvCS,MAAO,KACL,IAAIC,EAAQP,EAAQQ,QAAQC,cAAc,gCACrCF,IACHA,EAAQP,EAAQQ,QAAQC,cAAc,yBAEpCF,GACFA,EAAMD,OACR,KAEA,IACJ,MAAMI,GAAY,OAAWnC,EAAKyB,GAC5BtD,GAAO,OAAMiC,GACbgC,EAAe,WAAc,KAAM,CACvCjE,OACA,QAAA3C,CAASC,GACPmG,EAAcnG,EAAMC,OAAOH,OACvBC,GACFA,EAASC,EAAOA,EAAMC,OAAOH,MAEjC,EACAA,WACE,CAAC4C,EAAM3C,EAAUoG,EAAerG,IACpC,OAAoB,SAAK,IAAkB8G,SAAU,CACnD9G,MAAO6G,EACPvE,UAAuB,SAAK,IAAW,CACrCyE,KAAM,aACNtC,IAAKmC,EACLxE,WAAW,OAAKH,EAAQI,KAAMD,MAC3B4C,EACH1C,SAAUA,KAGhB,G,mCCrEA,Q,QAJuC,mBAAoB0E,E,qECFpD,SAASC,EAA0BpE,GACxC,OAAO,QAAqB,gBAAiBA,EAC/C,CACA,MACA,GAD0B,OAAuB,gBAAiB,CAAC,OAAQ,MAAO,S,4DCDnE,SAAS0C,IACtB,OAAO,aAAiB,IAC1B,C","sources":["../../../node_modules/@mui/icons-material/esm/HelpOutline.js","components/ShareInfoDialog.tsx","components/ShareSettingsDialog.tsx","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 18h2v-2h-2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4\"\n}), 'HelpOutline');","import React from 'react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { DialogContent, DialogContentText } from '@mui/material'\n\nexport default function InfoDialog({\n  onClose,\n  open,\n}: {\n  open: boolean\n  onClose: () => void\n}) {\n  return (\n    <Dialog\n      onClose={() => {\n        onClose()\n      }}\n      open={open}\n      title=\"Info about session URLs\"\n    >\n      <DialogContent>\n        <DialogContentText>\n          Because everything about the JBrowse session is encoded in the URL\n          (e.g. state of the tracks, views, features selected, etc.) the\n          sessions can get very long. Therefore, we created a URL shortener,\n          both as a convenience and because long URLs can break some programs.\n          Note that both the long and short URLs encode the same data, but due\n          to long URLs causing problems with some programs, we recommend sharing\n          short URLs.\n        </DialogContentText>\n        <DialogContentText>\n          We generate the short URLs in a secure manner which involves\n          encrypting the session on the client side with a random password\n          string and uploading them to a central database. Then the random\n          password is added to the URL but is not uploaded to the central\n          database, making these short URLs effectively &quot;end-to-end\n          encrypted&quot;\n        </DialogContentText>\n        <DialogContentText>\n          Only users with a share link can read the session.\n        </DialogContentText>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import React, { useState } from 'react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  DialogContent,\n  DialogContentText,\n  IconButton,\n  FormControl,\n  FormControlLabel,\n  Radio,\n  RadioGroup,\n} from '@mui/material'\n\n// icons\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline'\nimport InfoDialog from './ShareInfoDialog'\n\nconst SHARE_URL_LOCALSTORAGE_KEY = 'jbrowse-shareURL'\n\nexport default function SettingsDialog(props: {\n  open: boolean\n  onClose: (arg?: string) => void\n  currentSetting: string\n}) {\n  const { onClose, open, currentSetting } = props\n  const [setting, setSetting] = useState(currentSetting)\n  const [infoDialogOpen, setInfoDialogOpen] = useState(false)\n\n  const handleClose = () => {\n    localStorage.setItem(SHARE_URL_LOCALSTORAGE_KEY, setting)\n    onClose(setting)\n  }\n\n  return (\n    <>\n      <Dialog\n        onClose={handleClose}\n        open={open}\n        title=\"Configure session sharing\"\n      >\n        <DialogContent>\n          <DialogContentText>\n            Select between generating long or short URLs for the session sharing\n            <IconButton\n              onClick={() => {\n                setInfoDialogOpen(true)\n              }}\n            >\n              <HelpOutlineIcon />\n            </IconButton>\n          </DialogContentText>\n          <FormControl component=\"fieldset\">\n            <RadioGroup\n              value={setting}\n              onChange={event => {\n                setSetting(event.target.value)\n              }}\n            >\n              <FormControlLabel\n                value=\"short\"\n                control={<Radio />}\n                label=\"Short URL\"\n              />\n              <FormControlLabel\n                value=\"long\"\n                control={<Radio />}\n                label=\"Long URL\"\n              />\n            </RadioGroup>\n          </FormControl>\n        </DialogContent>\n      </Dialog>\n      <InfoDialog\n        open={infoDialogOpen}\n        onClose={() => {\n          setInfoDialogOpen(false)\n        }}\n      />\n    </>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}"],"names":["createSvgIcon","d","InfoDialog","onClose","open","React","Dialog","title","DialogContent","DialogContentText","SHARE_URL_LOCALSTORAGE_KEY","SettingsDialog","props","currentSetting","setting","setSetting","useState","infoDialogOpen","setInfoDialogOpen","handleClose","localStorage","setItem","IconButton","onClick","HelpOutlineIcon","FormControl","component","RadioGroup","value","onChange","event","target","FormControlLabel","control","Radio","label","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","theme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","checked","style","easeOut","classes","fontSize","ownerState","className","root","children","background","dot","RadioRoot","SwitchBase","prop","name","slot","overridesResolver","styles","size","capitalize","color","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","Object","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","inProps","ref","checkedProp","checkedIcon","icon","nameProp","onChangeProp","disabledProp","other","muiFormControl","useFormControl","slots","composeClasses","useUtilityClasses","radioGroup","useRadioGroup","createChainedFunction","a","b","String","type","clsx","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","row","error","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","Provider","role","undefined","getRadioGroupUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4753.834007ba.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4753],{44753:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var o=n(7552),a=n(75785),r=n(68446),i=n(49823),s=n(99546),c=n(42489),l=n(30385);function f({model:e,onClose:t,anchorEl:n}){const a=(0,s.getContainingView)(e),{clientX:r,clientY:c,feature:l}=n;return o.createElement(i.Menu,{onMenuItemClick:(e,n)=>{n(e),t()},anchorEl:{nodeType:1,getBoundingClientRect:()=>({top:c,left:r,bottom:c,right:r,width:0,height:0,x:r,y:c,toJSON(){}})},onClose:t,open:Boolean(n),menuItems:[{label:"Center on feature",onClick:()=>{const{f:t}=l,n=t.get("start"),o=t.get("end"),r=t.get("refName"),i=t.get("mate");a.views[0].navToLocString(`${r}:${n}-${o}`).catch((t=>{console.error(t),(0,s.getSession)(e).notifyError(`${t}`,t)})),a.views[1].navToLocString(`${i.refName}:${i.start}-${i.end}`).catch((t=>{console.error(t),(0,s.getSession)(e).notifyError(`${t}`,t)}))}}]})}var u=n(79610);const d=(0,o.lazy)((()=>n.e(7831).then(n.bind(n,47831)))),g=(0,a.n9)()({pix:{imageRendering:"pixelated",pointerEvents:"none",visibility:"hidden",position:"absolute"},rel:{position:"relative"},abs:{position:"absolute"},none:{pointEvents:"none"}}),h=(0,r.observer)((function({model:e}){const{classes:t,cx:n}=g(),a=(0,o.useRef)(0),r=(0,o.useRef)(),i=(0,s.getContainingView)(e),h=i.middleComparativeHeight,m=i.width,v=(0,o.useRef)(0),b=(0,o.useRef)(),[C,p]=(0,o.useState)(),[M,x]=(0,o.useState)(""),[w,k]=(0,o.useState)(),[S,T]=(0,o.useState)(),[E,P]=(0,o.useState)(),[$,y]=(0,o.useState)(),{mouseoverId:I}=e,X=(0,o.useCallback)((t=>{e.setMouseoverCanvasRef(t)}),[e,h,m]),R=(0,o.useCallback)((t=>{function n(e){if(e.preventDefault(),e.ctrlKey){v.current+=e.deltaY/500;for(const e of i.views)e.setScaleFactor(v.current<0?1-v.current:1/(1+v.current));b.current&&clearTimeout(b.current),b.current=setTimeout((()=>{for(const n of i.views)n.setScaleFactor(1),n.zoomTo(v.current>0?n.bpPerPx*(1+v.current):n.bpPerPx/(1-v.current),e.clientX-(t?.getBoundingClientRect().left||0));v.current=0}),300)}else Math.abs(e.deltaY)<Math.abs(e.deltaX)&&(a.current+=e.deltaX/2),void 0===r.current&&(r.current=requestAnimationFrame((()=>{(0,c.transaction)((()=>{for(const e of i.views)e.horizontalScroll(a.current);a.current=0,r.current=void 0}))})))}return e.setMainCanvasRef(t),t?.addEventListener("wheel",n),()=>{t?.removeEventListener("wheel",n)}}),[e,h,m]),L=(0,o.useCallback)((t=>{e.setClickMapCanvasRef(t)}),[e,h,m]),N=(0,o.useCallback)((t=>{e.setCigarClickMapCanvasRef(t)}),[e,h,m]);return o.createElement("div",{className:t.rel},o.createElement("canvas",{ref:X,width:m,height:h,className:n(t.abs,t.none)}),o.createElement("canvas",{ref:R,onMouseMove:t=>{if(void 0!==S)a.current+=S-t.clientX,T(t.clientX),void 0===r.current&&(r.current=requestAnimationFrame((()=>{(0,c.transaction)((()=>{for(const e of i.views)e.horizontalScroll(a.current);a.current=0,r.current=void 0}))})));else{const n=e.clickMapCanvas,o=e.cigarClickMapCanvas;if(!n||!o)return;const a=n.getBoundingClientRect(),r=n.getContext("2d"),i=o.getContext("2d");if(!r||!i)return;const{clientX:s,clientY:c}=t,f=s-a.left,d=c-a.top;k(s),y(c);const[g,h,m]=r.getImageData(f,d,1,1).data,[v,b,C]=i.getImageData(f,d,1,1).data,p=Math.floor(l.xx/e.numFeats),M=(0,l.OX)(g,h,m,p);if(e.setMouseoverId(e.featPositions[M]?.f.id()),-1===M)x("");else if(e.featPositions[M]){const{f:t,cigar:n}=e.featPositions[M],o=Math.floor(l.xx/n.length),a=(0,l.OX)(v,b,C,o);x((0,u.Eg)(t,n[a],n[a+1]))}}},onMouseLeave:()=>{e.setMouseoverId(void 0),P(void 0),T(void 0)},onMouseDown:e=>{T(e.clientX),P(e.clientX)},onMouseUp:t=>{T(void 0),void 0!==E&&Math.abs(t.clientX-E)<5&&(0,u.WT)(t,e)},onContextMenu:t=>{(0,u.f0)(t,e,p)},"data-testid":"synteny_canvas",className:t.abs,width:m,height:h}),o.createElement("canvas",{ref:L,className:t.pix,width:m,height:h}),o.createElement("canvas",{ref:N,className:t.pix,width:m,height:h}),I&&M&&w&&$?o.createElement(d,{title:M}):null,C?o.createElement(f,{model:e,anchorEl:C,onClose:()=>{p(void 0)}}):null)})),m=(0,a.n9)()((e=>{const t=e.palette.action.disabledBackground;return{loading:{paddingLeft:"0.6em",backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${t} 5px, ${t} 10px)`,textAlign:"center"},blockMessage:{background:"#f1f1f1",padding:10},blockError:{background:"#f1f1f1",padding:10,color:"red"}}}));function v(){const[e,t]=(0,o.useState)(!1),{classes:n}=m();return(0,o.useEffect)((()=>{const e=setTimeout((()=>{t(!0)}),300);return()=>{clearTimeout(e)}})),e?o.createElement("div",{className:n.loading},o.createElement(i.LoadingEllipses,null)):null}function b({messageText:e}){const{classes:t}=m();return o.createElement("div",{className:t.blockMessage},e)}function C({error:e}){const{classes:t}=m();return o.createElement("div",{className:t.blockError},`${e}`)}const p=(0,r.observer)((function({model:e}){return e.error?o.createElement(C,{error:e.error}):e.message?o.createElement(b,{messageText:e.message}):e.features?o.createElement(h,{model:e}):o.createElement(v,null)}))},79610:(e,t,n)=>{n.d(t,{$2:()=>i,Eg:()=>l,WT:()=>s,f0:()=>c,mr:()=>r});var o=n(99546),a=n(30385);function r({feature:e,ctx:t,offsets:n,cb:a,height:r,drawCurves:s,oobLimit:c,viewWidth:l,hideTiny:f}){const{p11:u,p12:d,p21:g,p22:h}=e,m=u.offsetPx-n[0],v=d.offsetPx-n[0],b=g.offsetPx-n[1],C=h.offsetPx-n[1],p=Math.abs(v-m),M=Math.abs(C-b),x=r,w=(x-0)/2,k=Math.min(b,C),S=Math.max(b,C);(0,o.doesIntersect2)(k,S,-c,l+c)&&(p<=1&&M<=1?f||(t.beginPath(),t.moveTo(m,0),s?t.bezierCurveTo(m,w,b,w,b,x):t.lineTo(b,x),t.stroke()):(i(t,m,v,0,C,b,x,w,s),a(t)))}function i(e,t,n,o,a,r,i,s,c){c?function(e,t,n,o,a,r,i,s){const c=Math.abs(t-n),l=Math.abs(t-n);if(c<5&&l<5&&n<t&&Math.abs(t-a)>100){const e=t;t=n,n=e}e.beginPath(),e.moveTo(t,o),e.lineTo(n,o),e.bezierCurveTo(n,s,a,s,a,i),e.lineTo(r,i),e.bezierCurveTo(r,s,t,s,t,o),e.closePath(),e.fill()}(e,t,n,o,a,r,i,s):function(e,t,n,o,a,r,i){e.beginPath(),e.moveTo(t,o),e.lineTo(n,o),e.lineTo(a,i),e.lineTo(r,i),e.closePath(),e.fill()}(e,t,n,o,a,r,i)}function s(e,t){const n=(0,o.getContainingView)(t),r=(0,o.getContainingTrack)(t),i=t.clickMapCanvas,s=t.cigarClickMapCanvas;if(!i||!s)return;const c=i.getBoundingClientRect(),l=i.getContext("2d"),f=s.getContext("2d");if(!l||!f)return;const u=e.clientX-c.left,d=e.clientY-c.top,[g,h,m]=l.getImageData(u,d,1,1).data,v=Math.floor(a.xx/t.numFeats),b=(0,a.OX)(g,h,m,v),C=t.featPositions[b];if(C){const{f:e}=C;t.setClickId(e.id());const a=(0,o.getSession)(t);(0,o.isSessionModelWithWidgets)(a)&&a.showWidget(a.addWidget("BaseFeatureWidget","baseFeature",{view:n,track:r,featureData:e.toJSON()}))}return C}function c(e,t,n){e.preventDefault();const o=t.clickMapCanvas,r=t.cigarClickMapCanvas;if(!o||!r)return;const i=o.getBoundingClientRect(),s=o.getContext("2d"),c=r.getContext("2d");if(!s||!c)return;const{clientX:l,clientY:f}=e,u=l-i.left,d=f-i.top,[g,h,m]=s.getImageData(u,d,1,1).data,v=Math.floor(a.xx/t.numFeats),b=(0,a.OX)(g,h,m,v),C=t.featPositions[b];C&&(t.setClickId(C.f.id()),n({clientX:l,clientY:f,feature:C}))}function l(e,t,n){const a=e.toJSON(),r=a.mate,i=a.end-a.start,s=r.end-r.start,c=a.identity,l=a.name,f=r.name;return[`Loc1: ${(0,o.assembleLocString)(a)}`,`Loc2: ${(0,o.assembleLocString)(r)}`,`Inverted: ${-1===a.strand}`,`Query len: ${i.toLocaleString("en-US")}`,`Target len: ${s.toLocaleString("en-US")}`,c?`Identity: ${c.toPrecision(2)}`:"",t?`CIGAR operator: ${t}${n}`:"",l?`Name 1: ${l}`:"",f?`Name 1: ${f}`:""].filter((e=>!!e)).join("<br/>")}},30385:(e,t,n)=>{n.d(t,{C4:()=>d,OX:()=>f,Ww:()=>u,xx:()=>r});var o=n(99546),a=n(79610);const r=16581375;function i(e){return`rgb(${Math.floor(e/65025)%255},${Math.floor(e/255)%255},${e%255})`}const s={I:"#ff03",N:"#0a03",D:"#00f3",X:"brown",M:"#f003","=":"#f003"},c=3,l=1600;function f(e,t,n,o){return Math.floor((255*e*255+255*t+n-1)/o)}function u(e,t,n){const f=(0,o.getContainingView)(e),u=f.drawCurves,d=f.drawCIGAR,g=f.middleComparativeHeight,h=f.width,m=f.views.map((e=>e.bpPerPx));n&&(n.imageSmoothingEnabled=!1),t.beginPath();const v=e.featPositions,b=f.views.map((e=>e.offsetPx)),C=Math.floor(r/v.length);t.fillStyle=s.M,t.strokeStyle=s.M;for(const{p11:e,p12:n,p21:o,p22:a}of v){const r=e.offsetPx-b[0],i=n.offsetPx-b[0],s=o.offsetPx-b[1],f=a.offsetPx-b[1],d=Math.abs(i-r),m=Math.abs(f-s),v=0,C=g,p=(C-v)/2;d<=c&&m<=c&&s<h+l&&s>-l&&(t.moveTo(r,v),u?t.bezierCurveTo(r,p,s,p,s,C):t.lineTo(s,C))}t.stroke(),t.fillStyle=s.M,t.strokeStyle=s.M;for(const{p11:e,p12:C,p21:p,p22:M,f:x,cigar:w}of v){const v=e.offsetPx-b[0],k=C.offsetPx-b[0],S=p.offsetPx-b[1],T=M.offsetPx-b[1],E=Math.abs(k-v),P=Math.abs(T-S),$=Math.min(S,T),y=Math.max(S,T),I=0,X=g,R=(X-I)/2;if(!(E<=c&&P<=c)&&(0,o.doesIntersect2)($,y,-l,f.width+l)){const e=x.get("strand"),o=-1===e?k:v,c=o<(-1===e?v:k)?1:-1,l=(S<T?1:-1)*e;let f=o,g=-1===e?T:S;if(w.length&&d){let e=!1,o=0,d=0;const v=Math.floor(r/w.length);for(let r=0;r<w.length;r+=2){const b=r*v+1,C=+w[r],p=w[r+1];e||(o=f,d=g);const M=C/m[0],x=C/m[1];if("M"===p||"="===p||"X"===p?(f+=M*c,g+=x*l):"D"===p||"N"===p?f+=M*c:"I"===p&&(g+=x*l),!(Math.max(o,d,f,g)<0||Math.min(o,d,f,g)>h)){const c=r<w.length-2;Math.abs(f-o)<=1&&Math.abs(g-d)<=1&&c?e=!0:(t.fillStyle=s[e&&M>1||x>1?p:"M"],e=!1,(0,a.$2)(t,o,f,I,g,d,X,R,u),n&&(n.fillStyle=i(b),(0,a.$2)(n,o,f,I,g,d,X,R,u)))}}}else(0,a.$2)(t,v,k,I,T,S,X,R,u)}}const p=e.clickMapCanvas?.getContext("2d");if(p){p.imageSmoothingEnabled=!1,p.clearRect(0,0,h,g);for(let e=0;e<v.length;e++){const t=v[e],n=e*C+1;p.fillStyle=i(n),(0,a.mr)({cb:e=>{e.fill()},feature:t,ctx:p,drawCurves:u,offsets:b,oobLimit:l,viewWidth:f.width,hideTiny:!0,height:g})}}}function d(e){const{clickId:t,mouseoverId:n}=e,r=(0,o.getContainingView)(e),i=r.drawCurves,s=r.middleComparativeHeight,c=r.width,f=e.mouseoverCanvas?.getContext("2d"),u=r.views.map((e=>e.offsetPx));if(!f)return;f.resetTransform(),f.scale(1,1),f.clearRect(0,0,c,s);const d=e.featMap[n||""];d&&(f.fillStyle="rgb(0,0,0,0.1)",(0,a.mr)({cb:e=>{e.fill()},feature:d,ctx:f,oobLimit:l,viewWidth:r.width,drawCurves:i,offsets:u,height:s}));const g=e.featMap[t||""];g&&(f.strokeStyle="rgb(0, 0, 0, 0.9)",(0,a.mr)({cb:e=>{e.stroke()},feature:g,ctx:f,oobLimit:l,viewWidth:r.width,drawCurves:i,offsets:u,height:s}))}}}]);
+//# sourceMappingURL=4753.834007ba.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4753.834007ba.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4753.834007ba.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/SyntenyContextMenu.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/Component.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/drawSynteny.ts"],"sourcesContent":["import React from 'react'\nimport { getContainingView, getSession, Feature } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearSyntenyDisplayModel } from '../model'\nimport { LinearSyntenyViewModel } from '../../LinearSyntenyView/model'\n\ninterface ClickCoord {\n  clientX: number\n  clientY: number\n  feature: { f: Feature }\n}\n\nexport default function SyntenyContextMenu({\n  model,\n  onClose,\n  anchorEl,\n}: {\n  onClose: () => void\n  model: LinearSyntenyDisplayModel\n  anchorEl: ClickCoord\n}) {\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const { clientX, clientY, feature } = anchorEl\n  return (\n    <Menu\n      onMenuItemClick={(event, callback) => {\n        callback(event)\n        onClose()\n      }}\n      anchorEl={{\n        nodeType: 1,\n        getBoundingClientRect: () => {\n          const x = clientX\n          const y = clientY\n          return {\n            top: y,\n            left: x,\n            bottom: y,\n            right: x,\n            width: 0,\n            height: 0,\n            x,\n            y,\n            toJSON() {},\n          }\n        },\n      }}\n      onClose={onClose}\n      open={Boolean(anchorEl)}\n      menuItems={[\n        {\n          label: 'Center on feature',\n          onClick: () => {\n            const { f } = feature\n            const start = f.get('start')\n            const end = f.get('end')\n            const refName = f.get('refName')\n            const mate = f.get('mate')\n            view.views[0]!.navToLocString(`${refName}:${start}-${end}`).catch(\n              (e: unknown) => {\n                console.error(e)\n                getSession(model).notifyError(`${e}`, e)\n              },\n            )\n            view.views[1]!.navToLocString(\n              `${mate.refName}:${mate.start}-${mate.end}`,\n            ).catch((e: unknown) => {\n              console.error(e)\n              getSession(model).notifyError(`${e}`, e)\n            })\n          },\n        },\n      ]}\n    />\n  )\n}\n","import React, { useState, useCallback, useRef, lazy } from 'react'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { transaction } from 'mobx'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { LinearSyntenyDisplayModel } from '../model'\nimport { getId, MAX_COLOR_RANGE } from '../drawSynteny'\nimport { LinearSyntenyViewModel } from '../../LinearSyntenyView/model'\nimport SyntenyContextMenu from './SyntenyContextMenu'\nimport { ClickCoord, getTooltip, onSynClick, onSynContextClick } from './util'\n\nconst SyntenyTooltip = lazy(() => import('./SyntenyTooltip'))\n\ntype Timer = ReturnType<typeof setTimeout>\n\nconst useStyles = makeStyles()({\n  pix: {\n    imageRendering: 'pixelated',\n    pointerEvents: 'none',\n    visibility: 'hidden',\n    position: 'absolute',\n  },\n  rel: {\n    position: 'relative',\n  },\n  abs: {\n    position: 'absolute',\n  },\n  none: {\n    pointEvents: 'none',\n  },\n})\n\nconst LinearSyntenyRendering = observer(function ({\n  model,\n}: {\n  model: LinearSyntenyDisplayModel\n}) {\n  const { classes, cx } = useStyles()\n  const xOffset = useRef<number>(0)\n  const currScrollFrame = useRef<number>()\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const delta = useRef(0)\n  const timeout = useRef<Timer>()\n  const [anchorEl, setAnchorEl] = useState<ClickCoord>()\n  const [tooltip, setTooltip] = useState('')\n  const [currX, setCurrX] = useState<number>()\n  const [mouseCurrDownX, setMouseCurrDownX] = useState<number>()\n  const [mouseInitialDownX, setMouseInitialDownX] = useState<number>()\n  const [currY, setCurrY] = useState<number>()\n  const { mouseoverId } = model\n\n  // these useCallbacks avoid new refs from being created on any mouseover,\n  // etc.\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const k1 = useCallback(\n    (ref: HTMLCanvasElement | null) => {\n      model.setMouseoverCanvasRef(ref)\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, height, width],\n  )\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const k2 = useCallback(\n    (ref: HTMLCanvasElement | null) => {\n      model.setMainCanvasRef(ref)\n      function onWheel(event: WheelEvent) {\n        event.preventDefault()\n        if (event.ctrlKey) {\n          delta.current += event.deltaY / 500\n          for (const v of view.views) {\n            v.setScaleFactor(\n              delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current),\n            )\n          }\n          if (timeout.current) {\n            clearTimeout(timeout.current)\n          }\n          timeout.current = setTimeout(() => {\n            for (const v of view.views) {\n              v.setScaleFactor(1)\n              v.zoomTo(\n                delta.current > 0\n                  ? v.bpPerPx * (1 + delta.current)\n                  : v.bpPerPx / (1 - delta.current),\n                event.clientX - (ref?.getBoundingClientRect().left || 0),\n              )\n            }\n            delta.current = 0\n          }, 300)\n        } else {\n          if (Math.abs(event.deltaY) < Math.abs(event.deltaX)) {\n            xOffset.current += event.deltaX / 2\n          }\n          if (currScrollFrame.current === undefined) {\n            currScrollFrame.current = requestAnimationFrame(() => {\n              transaction(() => {\n                for (const v of view.views) {\n                  v.horizontalScroll(xOffset.current)\n                }\n                xOffset.current = 0\n                currScrollFrame.current = undefined\n              })\n            })\n          }\n        }\n      }\n      ref?.addEventListener('wheel', onWheel)\n\n      // this is a react 19-ism to have a cleanup in the ref callback\n      // https://react.dev/blog/2024/04/25/react-19#cleanup-functions-for-refs\n      // note: it warns in earlier versions of react\n      return () => {\n        ref?.removeEventListener('wheel', onWheel)\n      }\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, height, width],\n  )\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const k3 = useCallback(\n    (ref: HTMLCanvasElement | null) => {\n      model.setClickMapCanvasRef(ref)\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, height, width],\n  )\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const k4 = useCallback(\n    (ref: HTMLCanvasElement | null) => {\n      model.setCigarClickMapCanvasRef(ref)\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, height, width],\n  )\n\n  return (\n    <div className={classes.rel}>\n      <canvas\n        ref={k1}\n        width={width}\n        height={height}\n        className={cx(classes.abs, classes.none)}\n      />\n      <canvas\n        ref={k2}\n        onMouseMove={event => {\n          if (mouseCurrDownX !== undefined) {\n            xOffset.current += mouseCurrDownX - event.clientX\n            setMouseCurrDownX(event.clientX)\n            if (currScrollFrame.current === undefined) {\n              currScrollFrame.current = requestAnimationFrame(() => {\n                transaction(() => {\n                  for (const v of view.views) {\n                    v.horizontalScroll(xOffset.current)\n                  }\n                  xOffset.current = 0\n                  currScrollFrame.current = undefined\n                })\n              })\n            }\n          } else {\n            const ref1 = model.clickMapCanvas\n            const ref2 = model.cigarClickMapCanvas\n            if (!ref1 || !ref2) {\n              return\n            }\n            const rect = ref1.getBoundingClientRect()\n            const ctx1 = ref1.getContext('2d')\n            const ctx2 = ref2.getContext('2d')\n            if (!ctx1 || !ctx2) {\n              return\n            }\n            const { clientX, clientY } = event\n            const x = clientX - rect.left\n            const y = clientY - rect.top\n            setCurrX(clientX)\n            setCurrY(clientY)\n            const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n            const [r2, g2, b2] = ctx2.getImageData(x, y, 1, 1).data\n            const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n            const id = getId(r1!, g1!, b1!, unitMultiplier)\n            model.setMouseoverId(model.featPositions[id]?.f.id())\n            if (id === -1) {\n              setTooltip('')\n            } else if (model.featPositions[id]) {\n              const { f, cigar } = model.featPositions[id]\n              const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length)\n              const cigarIdx = getId(r2!, g2!, b2!, unitMultiplier2)\n              setTooltip(getTooltip(f, cigar[cigarIdx], cigar[cigarIdx + 1]))\n            }\n          }\n        }}\n        onMouseLeave={() => {\n          model.setMouseoverId(undefined)\n          setMouseInitialDownX(undefined)\n          setMouseCurrDownX(undefined)\n        }}\n        onMouseDown={evt => {\n          setMouseCurrDownX(evt.clientX)\n          setMouseInitialDownX(evt.clientX)\n        }}\n        onMouseUp={evt => {\n          setMouseCurrDownX(undefined)\n          if (\n            mouseInitialDownX !== undefined &&\n            Math.abs(evt.clientX - mouseInitialDownX) < 5\n          ) {\n            onSynClick(evt, model)\n          }\n        }}\n        onContextMenu={evt => {\n          onSynContextClick(evt, model, setAnchorEl)\n        }}\n        data-testid=\"synteny_canvas\"\n        className={classes.abs}\n        width={width}\n        height={height}\n      />\n      <canvas ref={k3} className={classes.pix} width={width} height={height} />\n      <canvas ref={k4} className={classes.pix} width={width} height={height} />\n      {mouseoverId && tooltip && currX && currY ? (\n        <SyntenyTooltip title={tooltip} />\n      ) : null}\n      {anchorEl ? (\n        <SyntenyContextMenu\n          model={model}\n          anchorEl={anchorEl}\n          onClose={() => {\n            setAnchorEl(undefined)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default LinearSyntenyRendering\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\n\n// locals\nimport LinearSyntenyRendering from './LinearSyntenyRendering'\nimport { LinearSyntenyDisplayModel } from '../model'\n\nconst useStyles = makeStyles()(theme => {\n  const bg = theme.palette.action.disabledBackground\n  return {\n    loading: {\n      paddingLeft: '0.6em',\n      backgroundColor: theme.palette.background.default,\n      backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,\n      textAlign: 'center',\n    },\n    blockMessage: {\n      background: '#f1f1f1',\n      padding: 10,\n    },\n    blockError: {\n      background: '#f1f1f1',\n      padding: 10,\n      color: 'red',\n    },\n  }\n})\n\nfunction LoadingMessage() {\n  // only show the loading message after 300ms to prevent excessive flickering\n  const [shown, setShown] = useState(false)\n  const { classes } = useStyles()\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setShown(true)\n    }, 300)\n    return () => {\n      clearTimeout(timeout)\n    }\n  })\n\n  return shown ? (\n    <div className={classes.loading}>\n      <LoadingEllipses />\n    </div>\n  ) : null\n}\n\nfunction BlockMessage({ messageText }: { messageText: string }) {\n  const { classes } = useStyles()\n  return <div className={classes.blockMessage}>{messageText}</div>\n}\n\nfunction BlockError({ error }: { error: unknown }) {\n  const { classes } = useStyles()\n  return <div className={classes.blockError}>{`${error}`}</div>\n}\n\nconst ServerSideRenderedBlockContent = observer(function ({\n  model,\n}: {\n  model: LinearSyntenyDisplayModel\n}) {\n  if (model.error) {\n    return <BlockError error={model.error} />\n  }\n  if (model.message) {\n    return <BlockMessage messageText={model.message} />\n  }\n  if (!model.features) {\n    return <LoadingMessage />\n  }\n\n  return <LinearSyntenyRendering model={model} />\n})\n\nexport default ServerSideRenderedBlockContent\n","import React from 'react'\nimport {\n  assembleLocString,\n  doesIntersect2,\n  getSession,\n  isSessionModelWithWidgets,\n  Feature,\n  getContainingTrack,\n  getContainingView,\n} from '@jbrowse/core/util'\n\n// locals\nimport { getId, MAX_COLOR_RANGE } from '../drawSynteny'\nimport { LinearSyntenyDisplayModel } from '../model'\n\ninterface Pos {\n  offsetPx: number\n}\n\nexport interface ClickCoord {\n  clientX: number\n  clientY: number\n  feature: { f: Feature }\n}\n\ninterface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\nexport function drawMatchSimple({\n  feature,\n  ctx,\n  offsets,\n  cb,\n  height,\n  drawCurves,\n  oobLimit,\n  viewWidth,\n  hideTiny,\n}: {\n  feature: FeatPos\n  ctx: CanvasRenderingContext2D\n  offsets: number[]\n  oobLimit: number\n  viewWidth: number\n  cb: (ctx: CanvasRenderingContext2D) => void\n  height: number\n  drawCurves?: boolean\n  hideTiny?: boolean\n}) {\n  const { p11, p12, p21, p22 } = feature\n\n  const x11 = p11.offsetPx - offsets[0]!\n  const x12 = p12.offsetPx - offsets[0]!\n  const x21 = p21.offsetPx - offsets[1]!\n  const x22 = p22.offsetPx - offsets[1]!\n\n  const l1 = Math.abs(x12 - x11)\n  const l2 = Math.abs(x22 - x21)\n  const y1 = 0\n  const y2 = height\n  const mid = (y2 - y1) / 2\n  const minX = Math.min(x21, x22)\n  const maxX = Math.max(x21, x22)\n\n  if (!doesIntersect2(minX, maxX, -oobLimit, viewWidth + oobLimit)) {\n    return\n  }\n\n  // drawing a line if the results are thin: drawing a line results in much\n  // less pixellation than filling in a thin polygon\n  if (l1 <= 1 && l2 <= 1) {\n    // hideTiny can be used to avoid drawing mouseover for thin lines in this\n    // case\n    if (!hideTiny) {\n      ctx.beginPath()\n      ctx.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx.lineTo(x21, y2)\n      }\n      ctx.stroke()\n    }\n  } else {\n    draw(ctx, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n    cb(ctx)\n  }\n}\n\nexport function draw(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n  drawCurves?: boolean,\n) {\n  if (drawCurves) {\n    drawBezierBox(ctx, x1, x2, y1, x3, x4, y2, mid)\n  } else {\n    drawBox(ctx, x1, x2, y1, x3, x4, y2)\n  }\n}\n\nexport function drawBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n) {\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.lineTo(x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function drawBezierBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n) {\n  const len1 = Math.abs(x1 - x2)\n  const len2 = Math.abs(x1 - x2)\n\n  // heuristic to not draw hourglass inversions with bezier curves when they\n  // are thin and far apart because it results in areas that are not drawn well\n  // demo https://codesandbox.io/s/fast-glitter-q3b1or?file=/src/index.js\n  if (len1 < 5 && len2 < 5 && x2 < x1 && Math.abs(x1 - x3) > 100) {\n    const tmp = x1\n    x1 = x2\n    x2 = tmp\n  }\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.bezierCurveTo(x2, mid, x3, mid, x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.bezierCurveTo(x4, mid, x1, mid, x1, y1)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function onSynClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n) {\n  const view = getContainingView(model)\n  const track = getContainingTrack(model)\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const x = event.clientX - rect.left\n  const y = event.clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const feat = model.featPositions[id]\n  if (feat) {\n    const { f } = feat\n    model.setClickId(f.id())\n    const session = getSession(model)\n    if (isSessionModelWithWidgets(session)) {\n      session.showWidget(\n        session.addWidget('BaseFeatureWidget', 'baseFeature', {\n          view,\n          track,\n          featureData: f.toJSON(),\n        }),\n      )\n    }\n  }\n  return feat\n}\n\nexport function onSynContextClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n  setAnchorEl: (arg: ClickCoord) => void,\n) {\n  event.preventDefault()\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const { clientX, clientY } = event\n  const x = clientX - rect.left\n  const y = clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const f = model.featPositions[id]\n  if (f) {\n    model.setClickId(f.f.id())\n    setAnchorEl({ clientX, clientY, feature: f })\n  }\n}\n\nexport function getTooltip(f: Feature, cigarOp?: string, cigarOpLen?: string) {\n  // @ts-expect-error\n  const f1 = f.toJSON() as {\n    refName: string\n    start: number\n    end: number\n    strand?: number\n    assemblyName: string\n    identity?: number\n    name?: string\n    mate: {\n      start: number\n      end: number\n      refName: string\n      name: string\n    }\n  }\n  const f2 = f1.mate\n  const l1 = f1.end - f1.start\n  const l2 = f2.end - f2.start\n  const identity = f1.identity\n  const n1 = f1.name\n  const n2 = f2.name\n  return [\n    `Loc1: ${assembleLocString(f1)}`,\n    `Loc2: ${assembleLocString(f2)}`,\n    `Inverted: ${f1.strand === -1}`,\n    `Query len: ${l1.toLocaleString('en-US')}`,\n    `Target len: ${l2.toLocaleString('en-US')}`,\n    identity ? `Identity: ${identity.toPrecision(2)}` : '',\n    cigarOp ? `CIGAR operator: ${cigarOp}${cigarOpLen}` : '',\n    n1 ? `Name 1: ${n1}` : '',\n    n2 ? `Name 1: ${n2}` : '',\n  ]\n    .filter(f => !!f)\n    .join('<br/>')\n}\n","import { doesIntersect2, getContainingView } from '@jbrowse/core/util'\n// locals\nimport { LinearSyntenyViewModel } from '../LinearSyntenyView/model'\nimport { LinearSyntenyDisplayModel } from './model'\nimport { draw, drawMatchSimple } from './components/util'\n\nexport const MAX_COLOR_RANGE = 255 * 255 * 255 // max color range\n\nfunction makeColor(idx: number) {\n  const r = Math.floor(idx / (255 * 255)) % 255\n  const g = Math.floor(idx / 255) % 255\n  const b = idx % 255\n  return `rgb(${r},${g},${b})`\n}\n\nconst colorMap = {\n  I: '#ff03',\n  N: '#0a03',\n  D: '#00f3',\n  X: 'brown',\n  M: '#f003',\n  '=': '#f003',\n}\n\nconst lineLimit = 3\n\nconst oobLimit = 1600\n\nexport function getId(r: number, g: number, b: number, unitMultiplier: number) {\n  return Math.floor((r * 255 * 255 + g * 255 + b - 1) / unitMultiplier)\n}\n\nexport function drawRef(\n  model: LinearSyntenyDisplayModel,\n  ctx1: CanvasRenderingContext2D,\n  ctx3?: CanvasRenderingContext2D,\n) {\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const drawCIGAR = view.drawCIGAR\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const bpPerPxs = view.views.map(v => v.bpPerPx)\n\n  if (ctx3) {\n    ctx3.imageSmoothingEnabled = false\n  }\n\n  ctx1.beginPath()\n  const featPos = model.featPositions\n  const offsets = view.views.map(v => v.offsetPx)\n\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / featPos.length)\n\n  // this loop is optimized to draw many thin lines with a single ctx.stroke\n  // call, a separate loop below draws larger boxes\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22 } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    // drawing a line if the results are thin results in much less pixellation\n    // than filling in a thin polygon\n    if (\n      l1 <= lineLimit &&\n      l2 <= lineLimit &&\n      x21 < width + oobLimit &&\n      x21 > -oobLimit\n    ) {\n      ctx1.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx1.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx1.lineTo(x21, y2)\n      }\n    }\n  }\n  ctx1.stroke()\n\n  // this loop only draws small lines as a polyline, the polyline calls\n  // ctx.stroke once is much more efficient than calling stroke() many times\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22, f, cigar } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const minX = Math.min(x21, x22)\n    const maxX = Math.max(x21, x22)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    if (\n      !(l1 <= lineLimit && l2 <= lineLimit) &&\n      doesIntersect2(minX, maxX, -oobLimit, view.width + oobLimit)\n    ) {\n      const s1 = f.get('strand')\n      const k1 = s1 === -1 ? x12 : x11\n      const k2 = s1 === -1 ? x11 : x12\n\n      // rev1/rev2 flip the direction of the CIGAR drawing in horizontally flipped\n      // modes. somewhat heuristically determined, but tested for\n      const rev1 = k1 < k2 ? 1 : -1\n      const rev2 = (x21 < x22 ? 1 : -1) * s1\n\n      // cx1/cx2 are the current x positions on top and bottom rows\n      let cx1 = k1\n      let cx2 = s1 === -1 ? x22 : x21\n      if (cigar.length && drawCIGAR) {\n        // continuingFlag skips drawing commands on very small CIGAR features\n        let continuingFlag = false\n\n        // px1/px2 are the previous x positions on the top and bottom rows\n        let px1 = 0\n        let px2 = 0\n        const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length)\n        for (let j = 0; j < cigar.length; j += 2) {\n          const idx = j * unitMultiplier2 + 1\n\n          const len = +cigar[j]!\n          const op = cigar[j + 1] as keyof typeof colorMap\n\n          if (!continuingFlag) {\n            px1 = cx1\n            px2 = cx2\n          }\n\n          const d1 = len / bpPerPxs[0]!\n          const d2 = len / bpPerPxs[1]!\n\n          if (op === 'M' || op === '=' || op === 'X') {\n            cx1 += d1 * rev1\n            cx2 += d2 * rev2\n          } else if (op === 'D' || op === 'N') {\n            cx1 += d1 * rev1\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          else if (op === 'I') {\n            cx2 += d2 * rev2\n          }\n\n          // check that we are even drawing in view here, e.g. that all\n          // points are not all less than 0 or greater than width\n          if (\n            !(\n              Math.max(px1, px2, cx1, cx2) < 0 ||\n              Math.min(px1, px2, cx1, cx2) > width\n            )\n          ) {\n            // if it is a small feature and not the last element of the\n            // CIGAR (which could skip rendering it entire if we did turn\n            // it on), then turn on continuing flag\n            const isNotLast = j < cigar.length - 2\n            if (\n              Math.abs(cx1 - px1) <= 1 &&\n              Math.abs(cx2 - px2) <= 1 &&\n              isNotLast\n            ) {\n              continuingFlag = true\n            } else {\n              // allow rendering the dominant color when using continuing flag\n              // if the last element of continuing was a large feature, else\n              // just use match\n              ctx1.fillStyle =\n                colorMap[(continuingFlag && d1 > 1) || d2 > 1 ? op : 'M']\n              continuingFlag = false\n\n              draw(ctx1, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              if (ctx3) {\n                ctx3.fillStyle = makeColor(idx)\n                draw(ctx3, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              }\n            }\n          }\n        }\n      } else {\n        draw(ctx1, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n      }\n    }\n  }\n\n  // draw click map\n  const ctx2 = model.clickMapCanvas?.getContext('2d')\n  if (!ctx2) {\n    return\n  }\n  ctx2.imageSmoothingEnabled = false\n  ctx2.clearRect(0, 0, width, height)\n  for (let i = 0; i < featPos.length; i++) {\n    const feature = featPos[i]!\n    const idx = i * unitMultiplier + 1\n    ctx2.fillStyle = makeColor(idx)\n\n    // too many click map false positives with colored stroked lines\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature,\n      ctx: ctx2,\n      drawCurves,\n      offsets,\n      oobLimit,\n      viewWidth: view.width,\n      hideTiny: true,\n      height,\n    })\n  }\n  return undefined\n}\n\nexport function drawMouseoverSynteny(model: LinearSyntenyDisplayModel) {\n  const { clickId, mouseoverId } = model\n  const highResolutionScaling = 1\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const ctx = model.mouseoverCanvas?.getContext('2d')\n  const offsets = view.views.map(v => v.offsetPx)\n\n  if (!ctx) {\n    return\n  }\n  ctx.resetTransform()\n  ctx.scale(highResolutionScaling, highResolutionScaling)\n  ctx.clearRect(0, 0, width, height)\n  const feature1 = model.featMap[mouseoverId || '']\n  if (feature1) {\n    ctx.fillStyle = 'rgb(0,0,0,0.1)'\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature: feature1,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n  const feature2 = model.featMap[clickId || '']\n  if (feature2) {\n    ctx.strokeStyle = 'rgb(0, 0, 0, 0.9)'\n\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.stroke()\n      },\n      feature: feature2,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n}\n"],"names":["SyntenyContextMenu","model","onClose","anchorEl","view","getContainingView","clientX","clientY","feature","React","Menu","onMenuItemClick","event","callback","nodeType","getBoundingClientRect","top","left","bottom","right","width","height","x","y","toJSON","open","Boolean","menuItems","label","onClick","f","start","get","end","refName","mate","views","navToLocString","catch","e","console","error","getSession","notifyError","SyntenyTooltip","lazy","useStyles","makeStyles","pix","imageRendering","pointerEvents","visibility","position","rel","abs","none","pointEvents","observer","classes","cx","xOffset","useRef","currScrollFrame","middleComparativeHeight","delta","timeout","setAnchorEl","useState","tooltip","setTooltip","currX","setCurrX","mouseCurrDownX","setMouseCurrDownX","mouseInitialDownX","setMouseInitialDownX","currY","setCurrY","mouseoverId","k1","useCallback","ref","setMouseoverCanvasRef","k2","onWheel","preventDefault","ctrlKey","current","deltaY","v","setScaleFactor","clearTimeout","setTimeout","zoomTo","bpPerPx","Math","deltaX","undefined","requestAnimationFrame","transaction","horizontalScroll","setMainCanvasRef","addEventListener","removeEventListener","k3","setClickMapCanvasRef","k4","setCigarClickMapCanvasRef","className","onMouseMove","ref1","clickMapCanvas","ref2","cigarClickMapCanvas","rect","ctx1","getContext","ctx2","r1","g1","b1","getImageData","data","r2","g2","b2","unitMultiplier","floor","MAX_COLOR_RANGE","numFeats","id","getId","setMouseoverId","featPositions","cigar","unitMultiplier2","length","cigarIdx","getTooltip","onMouseLeave","onMouseDown","evt","onMouseUp","onSynClick","onContextMenu","onSynContextClick","title","theme","bg","palette","action","disabledBackground","loading","paddingLeft","backgroundColor","background","default","backgroundImage","textAlign","blockMessage","padding","blockError","color","LoadingMessage","shown","setShown","useEffect","LoadingEllipses","BlockMessage","messageText","BlockError","message","features","LinearSyntenyRendering","drawMatchSimple","ctx","offsets","cb","drawCurves","oobLimit","viewWidth","hideTiny","p11","p12","p21","p22","x11","offsetPx","x12","x21","x22","l1","l2","y2","mid","minX","min","maxX","max","doesIntersect2","beginPath","moveTo","bezierCurveTo","lineTo","stroke","draw","x1","x2","y1","x3","x4","len1","len2","tmp","closePath","fill","drawBezierBox","drawBox","track","getContainingTrack","feat","setClickId","session","isSessionModelWithWidgets","showWidget","addWidget","featureData","cigarOp","cigarOpLen","f1","f2","identity","n1","name","n2","assembleLocString","strand","toLocaleString","toPrecision","filter","join","makeColor","idx","colorMap","I","N","D","X","M","lineLimit","r","g","b","drawRef","ctx3","drawCIGAR","bpPerPxs","map","imageSmoothingEnabled","featPos","fillStyle","strokeStyle","s1","rev1","rev2","cx1","cx2","continuingFlag","px1","px2","j","len","op","d1","d2","isNotLast","clearRect","i","drawMouseoverSynteny","clickId","mouseoverCanvas","resetTransform","scale","feature1","featMap","feature2"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4755.8d938db2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4755],{54755:(e,t,a)=>{a.r(t),a.d(t,{default:()=>v});var n=a(7552),l=a(68446),o=a(49823),i=a(29499),r=a(99123),s=a(1343),u=a(98459),d=a(58507),c=a(5401),m=a(75785),g=a(99546),b=a(61723),h=a(7720);const p=(0,m.n9)()((e=>({dialogContent:{display:"flex",flexDirection:"column"},expand:{transform:"rotate(0deg)",marginLeft:"auto",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest})},expandOpen:{transform:"rotate(180deg)"}}))),v=(0,l.observer)((function({onClose:e,model:t}){const{classes:a,cx:l}=p(),[m,v]=(0,n.useState)(""),[E,f]=(0,n.useState)(""),[A,C]=(0,n.useState)(""),[S,w]=(0,n.useState)(""),[U,k]=(0,n.useState)(!1),{jbrowse:x}=(0,g.getSession)(t),y=Boolean(m&&E||A||S);function L(){m&&E?x.addPlugin({name:m,umdUrl:E}):A?x.addPlugin({esmUrl:A}):S&&x.addPlugin({cjsUrl:S})}return n.createElement(o.Dialog,{open:!0,onClose:e,title:"Add custom plugin"},n.createElement("form",{onSubmit:L},n.createElement(i.A,{className:a.dialogContent},n.createElement(r.A,null,"Enter the name of the plugin and its URL. The name should match what is defined in the plugin's build."),n.createElement(s.A,{label:"Plugin name",variant:"outlined",value:m,onChange:e=>{v(e.target.value)}}),n.createElement(s.A,{label:"Plugin URL",variant:"outlined",value:E,onChange:e=>{f(e.target.value)}}),n.createElement(r.A,{onClick:()=>{k(!U)}},n.createElement(b.A,{className:l(a.expand,{[a.expandOpen]:U}),"aria-expanded":U,"aria-label":"show more"},n.createElement(h.A,null)),"Advanced options"),n.createElement(u.A,{in:U},n.createElement("div",{className:a.dialogContent},n.createElement(r.A,null,"The above fields assume that the plugin is built in UMD format. If your plugin is in another format, or you have additional builds you want to add (such as a CJS build for using NodeJS APIs in desktop), you can enter the URLs for those builds below."),n.createElement(s.A,{label:"ESM build URL",variant:"outlined",value:A,onChange:e=>{C(e.target.value)}}),n.createElement(s.A,{label:"CJS build URL",variant:"outlined",value:S,onChange:e=>{w(e.target.value)}})))),n.createElement(d.A,null,n.createElement(c.A,{variant:"contained",onClick:e},"Cancel"),n.createElement(c.A,{variant:"contained",color:"primary",onClick:L,disabled:!y},"Submit"))))}))}}]);
+//# sourceMappingURL=4755.8d938db2.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4755.8d938db2.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4755.8d938db2.chunk.js","mappings":"sSAqBA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,cAAe,CACbC,QAAS,OACTC,cAAe,UAEjBC,OAAQ,CACNC,UAAW,eACXC,WAAY,OACZC,WAAYP,EAAMQ,YAAYC,OAAO,YAAa,CAChDC,SAAUV,EAAMQ,YAAYE,SAASC,YAGzCC,WAAY,CACVP,UAAW,sBAqHf,GAjH8BQ,EAAAA,EAAAA,WAAS,UAAU,QAC/CC,EAAO,MACPC,IAKA,MAAM,QAAEC,EAAO,GAAEC,GAAOnB,KACjBoB,EAAeC,IAAoBC,EAAAA,EAAAA,UAAS,KAC5CC,EAAcC,IAAmBF,EAAAA,EAAAA,UAAS,KAC1CG,EAAcC,IAAmBJ,EAAAA,EAAAA,UAAS,KAC1CK,EAAcC,IAAmBN,EAAAA,EAAAA,UAAS,KAC1CO,EAAqBC,IAA0BR,EAAAA,EAAAA,WAAS,IACzD,QAAES,IAAYC,EAAAA,EAAAA,YAAWf,GACzBgB,EAAQC,QACXd,GAAiBG,GAAiBE,GAAgBE,GAGrD,SAASQ,IACHf,GAAiBG,EACnBQ,EAAQK,UAAU,CAAEC,KAAMjB,EAAekB,OAAQf,IACxCE,EACTM,EAAQK,UAAU,CAAEG,OAAQd,IACnBE,GACTI,EAAQK,UAAU,CAAEI,OAAQb,GAEhC,CAEA,OACEc,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAAC3B,QAASA,EAAS4B,MAAM,qBACnCH,EAAAA,cAAA,QAAMI,SAAUV,GACdM,EAAAA,cAACK,EAAAA,EAAa,CAACC,UAAW7B,EAAQf,eAChCsC,EAAAA,cAACO,EAAAA,EAAiB,KAAC,0GAInBP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAM,cACNC,QAAQ,WACRC,MAAOhC,EACPiC,SAAUC,IACRjC,EAAiBiC,EAAMC,OAAOH,MAAM,IAGxCX,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAM,aACNC,QAAQ,WACRC,MAAO7B,EACP8B,SAAUC,IACR9B,EAAgB8B,EAAMC,OAAOH,MAAM,IAGvCX,EAAAA,cAACO,EAAAA,EAAiB,CAChBQ,QAASA,KACP1B,GAAwBD,EAAoB,GAG9CY,EAAAA,cAACgB,EAAAA,EAAU,CACTV,UAAW5B,EAAGD,EAAQZ,OAAQ,CAC5B,CAACY,EAAQJ,YAAae,IAExB,gBAAeA,EACf,aAAW,aAEXY,EAAAA,cAACiB,EAAAA,EAAc,OACJ,oBAGfjB,EAAAA,cAACkB,EAAAA,EAAQ,CAACC,GAAI/B,GACZY,EAAAA,cAAA,OAAKM,UAAW7B,EAAQf,eACtBsC,EAAAA,cAACO,EAAAA,EAAiB,KAAC,6PAMnBP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAM,gBACNC,QAAQ,WACRC,MAAO3B,EACP4B,SAAUC,IACR5B,EAAgB4B,EAAMC,OAAOH,MAAM,IAGvCX,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAM,gBACNC,QAAQ,WACRC,MAAOzB,EACP0B,SAAUC,IACR1B,EAAgB0B,EAAMC,OAAOH,MAAM,OAM7CX,EAAAA,cAACoB,EAAAA,EAAa,KACZpB,EAAAA,cAACqB,EAAAA,EAAM,CAACX,QAAQ,YAAYK,QAASxC,GAAS,UAG9CyB,EAAAA,cAACqB,EAAAA,EAAM,CACLX,QAAQ,YACRY,MAAM,UACNP,QAASrB,EACT6B,UAAW/B,GACZ,YAOX,G","sources":["../../../plugins/data-management/src/PluginStoreWidget/components/AddCustomPluginDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  Button,\n  Collapse,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n  TextField,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession } from '@jbrowse/core/util'\n\n// icons\nimport IconButton from '@mui/material/IconButton'\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\n\n// locals\nimport { PluginStoreModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  dialogContent: {\n    display: 'flex',\n    flexDirection: 'column',\n  },\n  expand: {\n    transform: 'rotate(0deg)',\n    marginLeft: 'auto',\n    transition: theme.transitions.create('transform', {\n      duration: theme.transitions.duration.shortest,\n    }),\n  },\n  expandOpen: {\n    transform: 'rotate(180deg)',\n  },\n}))\n\nconst AddCustomPluginDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: PluginStoreModel\n}) {\n  const { classes, cx } = useStyles()\n  const [umdPluginName, setUMDPluginName] = useState('')\n  const [umdPluginUrl, setUMDPluginUrl] = useState('')\n  const [esmPluginUrl, setESMPluginUrl] = useState('')\n  const [cjsPluginUrl, setCJSPluginUrl] = useState('')\n  const [advancedOptionsOpen, setAdvancedOptionsOpen] = useState(false)\n  const { jbrowse } = getSession(model)\n  const ready = Boolean(\n    (umdPluginName && umdPluginUrl) || esmPluginUrl || cjsPluginUrl,\n  )\n\n  function handleSubmit() {\n    if (umdPluginName && umdPluginUrl) {\n      jbrowse.addPlugin({ name: umdPluginName, umdUrl: umdPluginUrl })\n    } else if (esmPluginUrl) {\n      jbrowse.addPlugin({ esmUrl: esmPluginUrl })\n    } else if (cjsPluginUrl) {\n      jbrowse.addPlugin({ cjsUrl: cjsPluginUrl })\n    }\n  }\n\n  return (\n    <Dialog open onClose={onClose} title=\"Add custom plugin\">\n      <form onSubmit={handleSubmit}>\n        <DialogContent className={classes.dialogContent}>\n          <DialogContentText>\n            Enter the name of the plugin and its URL. The name should match what\n            is defined in the plugin&apos;s build.\n          </DialogContentText>\n          <TextField\n            label=\"Plugin name\"\n            variant=\"outlined\"\n            value={umdPluginName}\n            onChange={event => {\n              setUMDPluginName(event.target.value)\n            }}\n          />\n          <TextField\n            label=\"Plugin URL\"\n            variant=\"outlined\"\n            value={umdPluginUrl}\n            onChange={event => {\n              setUMDPluginUrl(event.target.value)\n            }}\n          />\n          <DialogContentText\n            onClick={() => {\n              setAdvancedOptionsOpen(!advancedOptionsOpen)\n            }}\n          >\n            <IconButton\n              className={cx(classes.expand, {\n                [classes.expandOpen]: advancedOptionsOpen,\n              })}\n              aria-expanded={advancedOptionsOpen}\n              aria-label=\"show more\"\n            >\n              <ExpandMoreIcon />\n            </IconButton>\n            Advanced options\n          </DialogContentText>\n          <Collapse in={advancedOptionsOpen}>\n            <div className={classes.dialogContent}>\n              <DialogContentText>\n                The above fields assume that the plugin is built in UMD format.\n                If your plugin is in another format, or you have additional\n                builds you want to add (such as a CJS build for using NodeJS\n                APIs in desktop), you can enter the URLs for those builds below.\n              </DialogContentText>\n              <TextField\n                label=\"ESM build URL\"\n                variant=\"outlined\"\n                value={esmPluginUrl}\n                onChange={event => {\n                  setESMPluginUrl(event.target.value)\n                }}\n              />\n              <TextField\n                label=\"CJS build URL\"\n                variant=\"outlined\"\n                value={cjsPluginUrl}\n                onChange={event => {\n                  setCJSPluginUrl(event.target.value)\n                }}\n              />\n            </div>\n          </Collapse>\n        </DialogContent>\n        <DialogActions>\n          <Button variant=\"contained\" onClick={onClose}>\n            Cancel\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            onClick={handleSubmit}\n            disabled={!ready}\n          >\n            Submit\n          </Button>\n        </DialogActions>\n      </form>\n    </Dialog>\n  )\n})\n\nexport default AddCustomPluginDialog\n"],"names":["useStyles","makeStyles","theme","dialogContent","display","flexDirection","expand","transform","marginLeft","transition","transitions","create","duration","shortest","expandOpen","observer","onClose","model","classes","cx","umdPluginName","setUMDPluginName","useState","umdPluginUrl","setUMDPluginUrl","esmPluginUrl","setESMPluginUrl","cjsPluginUrl","setCJSPluginUrl","advancedOptionsOpen","setAdvancedOptionsOpen","jbrowse","getSession","ready","Boolean","handleSubmit","addPlugin","name","umdUrl","esmUrl","cjsUrl","React","Dialog","open","title","onSubmit","DialogContent","className","DialogContentText","TextField","label","variant","value","onChange","event","target","onClick","IconButton","ExpandMoreIcon","Collapse","in","DialogActions","Button","color","disabled"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4770.3d757d6b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4770],{94770:(e,t,r)=>{r.r(t),r.d(t,{default:()=>u});var a=r(34133),s=r(46377),i=r(99546),n=r(99834),o=r(66885),c=r(82088),d=r(44728),g=r(80544);class h{constructor(e,t,r){this.record=e,this.adapter=t,this.ref=r}_get_name(){return this.record.get("name")}_get_type(){return"match"}_get_score(){return this.record.get("mq")}_get_flags(){return this.record.flags}_get_strand(){return this.record.isReverseComplemented()?-1:1}_get_pair_orientation(){return this.record.isPaired()?this.record.getPairOrientation():void 0}_get_next_ref(){return this.record.isPaired()?this.adapter.refIdToName(this.record._next_refid()):void 0}_get_next_pos(){return this.record.isPaired()?this.record._next_pos():void 0}_get_next_segment_position(){return this.record.isPaired()?`${this.adapter.refIdToName(this.record._next_refid())}:${this.record._next_pos()+1}`:void 0}_get_seq(){return this.record.getReadBases()}qualRaw(){return this.record.qualRaw()}set(){}tags(){const e=Object.getOwnPropertyNames(h.prototype);return[...new Set(e.filter((e=>e.startsWith("_get_")&&"_get_mismatches"!==e&&"_get_tags"!==e)).map((e=>e.replace("_get_",""))).concat(this.record._tags()))]}id(){return`${this.adapter.id}-${this.record.id()}`}get(e){const t=`_get_${e}`;return this[t]?this[t]():this.record.get(e)}_get_refName(){return this.adapter.refIdToName(this.record.seq_id())}parent(){}children(){}pairedFeature(){return!1}toJSON(){return{...Object.fromEntries(this.tags().map((e=>[e,this.get(e)])).filter((e=>void 0!==e[1]))),uniqueId:this.id()}}_get_mismatches(){return(0,g.getMismatches)(this.get("CIGAR"),this.get("MD"),this.get("seq"),this.ref,this.qualRaw())}_get_clipPos(){const e=this.get("CIGAR")||"";return(0,g.getClip)(e,this.get("strand"))}}class u extends s.BaseFeatureDataAdapter{async configurePre(){const e=this.getConf("bamLocation"),t=this.getConf(["index","location"]),r=this.getConf(["index","indexType"]),s=this.pluginManager,i="CSI"===r,o=new a.j9({bamFilehandle:(0,n.openLocation)(e,s),csiFilehandle:i?(0,n.openLocation)(t,s):void 0,baiFilehandle:i?void 0:(0,n.openLocation)(t,s),yieldThreadTime:Number.POSITIVE_INFINITY}),c=this.getConf("sequenceAdapter");if(c&&this.getSubAdapter){const{dataAdapter:e}=await this.getSubAdapter(c);return{bam:o,sequenceAdapter:e}}return{bam:o}}async configure(){return this.configureP||(this.configureP=this.configurePre().catch((e=>{throw this.configureP=void 0,e}))),this.configureP}async getHeader(e){const{bam:t}=await this.configure();return t.getHeaderText(e)}async setupPre(e){const{statusCallback:t=()=>{}}=e||{},{bam:r}=await this.configure();return this.samHeader=await(0,i.updateStatus)("Downloading index",t,(async()=>{const t=await r.getHeader(e),a=[],s={};return t?.filter((e=>"SQ"===e.tag)).forEach(((e,t)=>{const r=e.data.find((e=>"SN"===e.tag));if(r){const e=r.value;s[e]=t,a[t]=e}})),{idToName:a,nameToId:s}})),this.samHeader}async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async getRefNames(e){const{idToName:t}=await this.setup(e);return t}async seqFetch(e,t,r){const{sequenceAdapter:a}=await this.configure();if(!a)return;if(!e)return;const s=a.getFeatures({refName:e,start:t,end:r,assemblyName:""}),i=await(0,d._)(s.pipe((0,c.$)()));let n="";if(i.sort(((e,t)=>e.get("start")-t.get("start"))).forEach((e=>{const a=e.get("start"),s=e.get("end"),i=Math.max(t-a,0),o=Math.min(r-a,s-a)-i,c=e.get("seq")||e.get("residues");n+=c.slice(i,i+o)})),n.length!==r-t)throw new Error(`sequence fetch failed: fetching ${e}:${(t-1).toLocaleString()}-${r.toLocaleString()} returned ${n.length.toLocaleString()} bases, but should have returned ${(r-t).toLocaleString()}`);return n}getFeatures(e,t){const{refName:r,start:a,end:s,originalRefName:n}=e,{signal:c,filterBy:d,statusCallback:g=()=>{}}=t||{};return(0,o.ObservableCreate)((async e=>{const{bam:o}=await this.configure();await this.setup(t);const c=await(0,i.updateStatus)("Downloading alignments",g,(()=>o.getRecordsForRange(r,a,s,t)));await(0,i.updateStatus)("Processing alignments",g,(async()=>{const{flagInclude:t=0,flagExclude:a=0,tagFilter:s,readName:i}=d||{};for(const o of c){let c;o.get("MD")||(c=await this.seqFetch(n||r,o.get("start"),o.get("end")));const d=o.flags;if((d&t)===t||d&a){if(s){const e=o.get(s.tag),t=s.value;if("*"===t?void 0!==e:`${e}`!=`${t}`)continue}i&&o.get("name")!==i||e.next(new h(o,this,c))}}e.complete()}))}),c)}async getMultiRegionFeatureDensityStats(e,t){const{bam:r}=await this.configure();return r.index?{bytes:await(0,i.bytesForRegions)(e,r),fetchSizeLimit:this.getConf("fetchSizeLimit")}:super.getMultiRegionFeatureDensityStats(e,t)}freeResources(){}refIdToName(e){return this.samHeader?.idToName[e]}}}}]);
+//# sourceMappingURL=4770.3d757d6b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4770.3d757d6b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4770.3d757d6b.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/BamAdapter/BamSlightlyLazyFeature.ts","../../../plugins/alignments/src/BamAdapter/BamAdapter.ts"],"sourcesContent":["import {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { BamRecord } from '@gmod/bam'\n\n// locals\nimport { getClip, getMismatches } from '../MismatchParser'\nimport BamAdapter from './BamAdapter'\n\nexport default class BamSlightlyLazyFeature implements Feature {\n  // uses parameter properties to automatically create fields on the class\n  // https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties\n  constructor(\n    private record: BamRecord,\n    private adapter: BamAdapter,\n    private ref?: string,\n  ) {}\n\n  _get_name() {\n    return this.record.get('name')\n  }\n\n  _get_type(): string {\n    return 'match'\n  }\n\n  _get_score(): number {\n    return this.record.get('mq')\n  }\n\n  _get_flags(): string {\n    return this.record.flags\n  }\n\n  _get_strand(): number {\n    return this.record.isReverseComplemented() ? -1 : 1\n  }\n\n  _get_pair_orientation() {\n    return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n  }\n\n  _get_next_ref() {\n    return this.record.isPaired()\n      ? this.adapter.refIdToName(this.record._next_refid())\n      : undefined\n  }\n\n  _get_next_pos() {\n    return this.record.isPaired() ? this.record._next_pos() : undefined\n  }\n\n  _get_next_segment_position() {\n    return this.record.isPaired()\n      ? `${this.adapter.refIdToName(this.record._next_refid())}:${\n          this.record._next_pos() + 1\n        }`\n      : undefined\n  }\n\n  _get_seq() {\n    return this.record.getReadBases()\n  }\n\n  qualRaw() {\n    return this.record.qualRaw()\n  }\n\n  set() {}\n\n  tags() {\n    const properties = Object.getOwnPropertyNames(\n      BamSlightlyLazyFeature.prototype,\n    )\n\n    return [\n      ...new Set(\n        properties\n          .filter(\n            prop =>\n              prop.startsWith('_get_') &&\n              prop !== '_get_mismatches' &&\n              prop !== '_get_tags',\n          )\n          .map(methodName => methodName.replace('_get_', ''))\n          .concat(this.record._tags()),\n      ),\n    ]\n  }\n\n  id() {\n    return `${this.adapter.id}-${this.record.id()}`\n  }\n\n  get(field: string): any {\n    const methodName = `_get_${field}`\n    // @ts-expect-error\n    if (this[methodName]) {\n      // @ts-expect-error\n      return this[methodName]()\n    }\n    return this.record.get(field)\n  }\n\n  _get_refName() {\n    return this.adapter.refIdToName(this.record.seq_id())\n  }\n\n  parent() {\n    return undefined\n  }\n\n  children() {\n    return undefined\n  }\n\n  pairedFeature() {\n    return false\n  }\n\n  toJSON(): SimpleFeatureSerialized {\n    return {\n      ...Object.fromEntries(\n        this.tags()\n          .map(t => [t, this.get(t)])\n          .filter(elt => elt[1] !== undefined),\n      ),\n      uniqueId: this.id(),\n    }\n  }\n\n  _get_mismatches() {\n    return getMismatches(\n      this.get('CIGAR'),\n      this.get('MD'),\n      this.get('seq'),\n      this.ref,\n      this.qualRaw(),\n    )\n  }\n\n  _get_clipPos() {\n    const cigar = this.get('CIGAR') || ''\n    return getClip(cigar, this.get('strand'))\n  }\n}\n","import { BamFile } from '@gmod/bam'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { bytesForRegions, updateStatus, Feature } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport BamSlightlyLazyFeature from './BamSlightlyLazyFeature'\nimport { IFilter } from '../shared'\n\ninterface Header {\n  idToName: string[]\n  nameToId: Record<string, number>\n}\n\nexport default class BamAdapter extends BaseFeatureDataAdapter {\n  private samHeader?: Header\n\n  private setupP?: Promise<Header>\n  private configureP?: Promise<{\n    bam: BamFile\n    sequenceAdapter?: BaseFeatureDataAdapter\n  }>\n\n  // derived classes may not use the same configuration so a custom configure\n  // method allows derived classes to override this behavior\n  protected async configurePre() {\n    const bamLocation = this.getConf('bamLocation')\n    const location = this.getConf(['index', 'location'])\n    const indexType = this.getConf(['index', 'indexType'])\n    const pm = this.pluginManager\n    const csi = indexType === 'CSI'\n    const bam = new BamFile({\n      bamFilehandle: openLocation(bamLocation, pm),\n      csiFilehandle: csi ? openLocation(location, pm) : undefined,\n      baiFilehandle: !csi ? openLocation(location, pm) : undefined,\n      yieldThreadTime: Number.POSITIVE_INFINITY,\n    })\n\n    const adapterConfig = this.getConf('sequenceAdapter')\n    if (adapterConfig && this.getSubAdapter) {\n      const { dataAdapter } = await this.getSubAdapter(adapterConfig)\n      return {\n        bam,\n        sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n      }\n    }\n    return { bam }\n  }\n\n  protected async configure() {\n    if (!this.configureP) {\n      this.configureP = this.configurePre().catch((e: unknown) => {\n        this.configureP = undefined\n        throw e\n      })\n    }\n    return this.configureP\n  }\n\n  async getHeader(opts?: BaseOptions) {\n    const { bam } = await this.configure()\n    return bam.getHeaderText(opts)\n  }\n\n  private async setupPre(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const { bam } = await this.configure()\n    this.samHeader = await updateStatus(\n      'Downloading index',\n      statusCallback,\n      async () => {\n        const samHeader = await bam.getHeader(opts)\n\n        // use the @SQ lines in the header to figure out the\n        // mapping between ref ref ID numbers and names\n        const idToName: string[] = []\n        const nameToId: Record<string, number> = {}\n        samHeader\n          ?.filter(l => l.tag === 'SQ')\n          .forEach((sqLine, refId) => {\n            const SN = sqLine.data.find(item => item.tag === 'SN')\n            if (SN) {\n              // this is the ref name\n              const refName = SN.value\n              nameToId[refName] = refId\n              idToName[refId] = refName\n            }\n          })\n\n        return { idToName, nameToId }\n      },\n    )\n    return this.samHeader\n  }\n\n  async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async getRefNames(opts?: BaseOptions) {\n    const { idToName } = await this.setup(opts)\n    return idToName\n  }\n\n  private async seqFetch(refName: string, start: number, end: number) {\n    const { sequenceAdapter } = await this.configure()\n    const refSeqStore = sequenceAdapter\n    if (!refSeqStore) {\n      return undefined\n    }\n    if (!refName) {\n      return undefined\n    }\n\n    const features = refSeqStore.getFeatures({\n      refName,\n      start,\n      end,\n      assemblyName: '',\n    })\n\n    const seqChunks = await firstValueFrom(features.pipe(toArray()))\n\n    let sequence = ''\n    seqChunks\n      .sort((a, b) => a.get('start') - b.get('start'))\n      .forEach(chunk => {\n        const chunkStart = chunk.get('start')\n        const chunkEnd = chunk.get('end')\n        const trimStart = Math.max(start - chunkStart, 0)\n        const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n        const trimLength = trimEnd - trimStart\n        const chunkSeq = chunk.get('seq') || chunk.get('residues')\n        sequence += chunkSeq.slice(trimStart, trimStart + trimLength)\n      })\n\n    if (sequence.length !== end - start) {\n      throw new Error(\n        `sequence fetch failed: fetching ${refName}:${(\n          start - 1\n        ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n          end - start\n        ).toLocaleString()}`,\n      )\n    }\n    return sequence\n  }\n\n  getFeatures(\n    region: Region & { originalRefName?: string },\n    opts?: BaseOptions & {\n      filterBy: IFilter\n    },\n  ) {\n    const { refName, start, end, originalRefName } = region\n    const { signal, filterBy, statusCallback = () => {} } = opts || {}\n    return ObservableCreate<Feature>(async observer => {\n      const { bam } = await this.configure()\n      await this.setup(opts)\n      const records = await updateStatus(\n        'Downloading alignments',\n        statusCallback,\n        () => bam.getRecordsForRange(refName, start, end, opts),\n      )\n\n      await updateStatus('Processing alignments', statusCallback, async () => {\n        const {\n          flagInclude = 0,\n          flagExclude = 0,\n          tagFilter,\n          readName,\n        } = filterBy || {}\n\n        for (const record of records) {\n          let ref: string | undefined\n          if (!record.get('MD')) {\n            ref = await this.seqFetch(\n              originalRefName || refName,\n              record.get('start'),\n              record.get('end'),\n            )\n          }\n\n          const flags = record.flags\n          if ((flags & flagInclude) !== flagInclude && !(flags & flagExclude)) {\n            continue\n          }\n\n          if (tagFilter) {\n            const readVal = record.get(tagFilter.tag)\n            const filterVal = tagFilter.value\n            if (\n              filterVal === '*'\n                ? readVal !== undefined\n                : `${readVal}` !== `${filterVal}`\n            ) {\n              continue\n            }\n          }\n\n          if (readName && record.get('name') !== readName) {\n            continue\n          }\n\n          observer.next(new BamSlightlyLazyFeature(record, this, ref))\n        }\n        observer.complete()\n      })\n    }, signal)\n  }\n\n  async getMultiRegionFeatureDensityStats(\n    regions: Region[],\n    opts?: BaseOptions,\n  ) {\n    const { bam } = await this.configure()\n    // this is a method to avoid calling on htsget adapters\n    if (bam.index) {\n      const bytes = await bytesForRegions(regions, bam)\n      const fetchSizeLimit = this.getConf('fetchSizeLimit')\n      return { bytes, fetchSizeLimit }\n    }\n    return super.getMultiRegionFeatureDensityStats(regions, opts)\n  }\n\n  freeResources(/* { region } */): void {}\n\n  // depends on setup being called before the BAM constructor\n  refIdToName(refId: number) {\n    return this.samHeader?.idToName[refId]\n  }\n}\n"],"names":["BamSlightlyLazyFeature","constructor","record","adapter","ref","_get_name","this","get","_get_type","_get_score","_get_flags","flags","_get_strand","isReverseComplemented","_get_pair_orientation","isPaired","getPairOrientation","undefined","_get_next_ref","refIdToName","_next_refid","_get_next_pos","_next_pos","_get_next_segment_position","_get_seq","getReadBases","qualRaw","set","tags","properties","Object","getOwnPropertyNames","prototype","Set","filter","prop","startsWith","map","methodName","replace","concat","_tags","id","field","_get_refName","seq_id","parent","children","pairedFeature","toJSON","fromEntries","t","elt","uniqueId","_get_mismatches","getMismatches","_get_clipPos","cigar","getClip","BamAdapter","BaseFeatureDataAdapter","configurePre","bamLocation","getConf","location","indexType","pm","pluginManager","csi","bam","BamFile","bamFilehandle","openLocation","csiFilehandle","baiFilehandle","yieldThreadTime","Number","POSITIVE_INFINITY","adapterConfig","getSubAdapter","dataAdapter","sequenceAdapter","configure","configureP","catch","e","getHeader","opts","getHeaderText","setupPre","statusCallback","samHeader","updateStatus","async","idToName","nameToId","l","tag","forEach","sqLine","refId","SN","data","find","item","refName","value","setup","setupP","getRefNames","seqFetch","start","end","features","getFeatures","assemblyName","seqChunks","firstValueFrom","pipe","toArray","sequence","sort","a","b","chunk","chunkStart","chunkEnd","trimStart","Math","max","trimLength","min","chunkSeq","slice","length","Error","toLocaleString","region","originalRefName","signal","filterBy","ObservableCreate","records","getRecordsForRange","flagInclude","flagExclude","tagFilter","readName","readVal","filterVal","observer","next","complete","getMultiRegionFeatureDensityStats","regions","index","bytes","bytesForRegions","fetchSizeLimit","super","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4773.6cd74b80.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4773],{84773:(e,l,t)=>{t.r(l),t.d(l,{default:()=>d});var a=t(7552),o=t(29499),n=t(9937),r=t(1343),i=t(58507),s=t(5401),u=t(49823),b=t(68446),c=t(99546);const d=(0,b.observer)((function({model:e,onClose:l,dialogRow:t}){const[b,d]=(0,a.useState)(t.label||"");return a.createElement(u.Dialog,{open:!0,onClose:l,title:"Edit bookmark label"},a.createElement(o.A,null,a.createElement(n.A,null,"Editing label for bookmark"," ",a.createElement("strong",null,(0,c.assembleLocString)(t.correspondingObj)),":"),a.createElement(r.A,{fullWidth:!0,inputProps:{"data-testid":"edit-bookmark-label-field"},variant:"outlined",value:b,onChange:e=>{d(e.target.value)},autoFocus:!0})),a.createElement(i.A,null,a.createElement(s.A,{variant:"contained",color:"primary",onClick:()=>{b&&e.updateBookmarkLabel(t,b),d(""),l()}},"Confirm")))}))}}]);
+//# sourceMappingURL=4773.6cd74b80.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4773.6cd74b80.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4773.6cd74b80.chunk.js","mappings":"0PAcA,MA+CA,GA/CgCA,EAAAA,EAAAA,WAAS,UAAU,MACjDC,EAAK,QACLC,EAAO,UACPC,IAMA,MAAOC,EAAUC,IAAeC,EAAAA,EAAAA,UAASH,EAAUI,OAAS,IAC5D,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACR,QAASA,EAASS,MAAM,uBACnCH,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAK,KAAC,6BACsB,IAC3BL,EAAAA,cAAA,eAASM,EAAAA,EAAAA,mBAAkBX,EAAUY,mBAA2B,KAElEP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,WAAS,EACTC,WAAY,CAAE,cAAe,6BAC7BC,QAAQ,WACRC,MAAOhB,EACPiB,SAAUC,IACRjB,EAAYiB,EAAEC,OAAOH,MAAM,EAE7BI,WAAS,KAGbhB,EAAAA,cAACiB,EAAAA,EAAa,KACZjB,EAAAA,cAACkB,EAAAA,EAAM,CACLP,QAAQ,YACRQ,MAAM,UACNC,QAASA,KACHxB,GACFH,EAAM4B,oBAAoB1B,EAAWC,GAEvCC,EAAY,IACZH,GAAS,GAEZ,YAMT,G","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/EditBookmarkLabelDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Alert,\n  DialogContent,\n  DialogActions,\n  Button,\n  TextField,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport { assembleLocString } from '@jbrowse/core/util'\n\nimport { GridBookmarkModel, IExtendedLabeledRegionModel } from '../../model'\n\nconst EditBookmarkLabelDialog = observer(function ({\n  model,\n  onClose,\n  dialogRow,\n}: {\n  model: GridBookmarkModel\n  dialogRow: IExtendedLabeledRegionModel\n  onClose: () => void\n}) {\n  const [newLabel, setNewLabel] = useState(dialogRow.label || '')\n  return (\n    <Dialog open onClose={onClose} title=\"Edit bookmark label\">\n      <DialogContent>\n        <Alert>\n          Editing label for bookmark{' '}\n          <strong>{assembleLocString(dialogRow.correspondingObj)}</strong>:\n        </Alert>\n        <TextField\n          fullWidth\n          inputProps={{ 'data-testid': 'edit-bookmark-label-field' }}\n          variant=\"outlined\"\n          value={newLabel}\n          onChange={e => {\n            setNewLabel(e.target.value)\n          }}\n          autoFocus\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            if (newLabel) {\n              model.updateBookmarkLabel(dialogRow, newLabel)\n            }\n            setNewLabel('')\n            onClose()\n          }}\n        >\n          Confirm\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default EditBookmarkLabelDialog\n"],"names":["observer","model","onClose","dialogRow","newLabel","setNewLabel","useState","label","React","Dialog","open","title","DialogContent","Alert","assembleLocString","correspondingObj","TextField","fullWidth","inputProps","variant","value","onChange","e","target","autoFocus","DialogActions","Button","color","onClick","updateBookmarkLabel"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4806.7e497d7a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4806],{74806:(e,t,a)=>{a.r(t),a.d(t,{default:()=>p});var n=a(7552),l=a(68446),o=a(29499),r=a(36715),s=a(33371),c=a(32808),i=a(1343),u=a(58507),d=a(5401),g=a(49823),f=a(36422),m=a(99546),h=a(20561);const p=(0,l.observer)((function(e){const{model:t,handleClose:a}=e,[l,p]=(0,n.useState)(""),[b,E]=(0,n.useState)(),[k,v]=(0,n.useState)(!1),[y,w]=(0,n.useState)(),[C,S]=(0,n.useState)(!0),A=/^[A-Za-z][A-Za-z0-9]$/.exec(l),T=2===l.length&&!A,$=(0,m.useDebounce)(l,1e3);return(0,n.useEffect)((()=>{(async()=>{try{if(!T){w(void 0),v(!0);const e=await(0,h.s_)({self:t,tag:$,blocks:(0,m.getContainingView)(t).staticBlocks});E(e)}}catch(e){console.error(e),w(e)}finally{v(!1)}})()}),[t,T,$]),n.createElement(g.Dialog,{open:!0,onClose:a,title:"Group by tag"},n.createElement(o.A,null,n.createElement(r.A,null,"Set the tag to group by. NOTE: this will make a set of fully functional subtracks with the filter by by default set to the values of the tag that are visible in the current view"),n.createElement(r.A,{color:"textSecondary"},"Examples: HP for haplotype, RG for read group, etc."),n.createElement(s.A,{control:n.createElement(c.A,{checked:C,onChange:()=>{S(!C)}}),label:"Make a new subtrack for undefined values of tag as well?"}),n.createElement(i.A,{value:l,onChange:e=>{p(e.target.value)},placeholder:"Enter tag name",inputProps:{maxLength:2,"data-testid":"group-tag-name-input"},error:T,helperText:T?"Not a valid tag":"",autoComplete:"off","data-testid":"group-tag-name"}),y?n.createElement(g.ErrorMessage,{error:y}):k?n.createElement(g.LoadingEllipses,{title:"Loading unique tags"}):b?n.createElement("div",null,n.createElement("div",null,"Found unique ",l," values:"),n.createElement("div",null,b.join(", "))):null),n.createElement(u.A,null,n.createElement(d.A,{variant:"contained",color:"primary",type:"submit",disabled:!b,autoFocus:!0,onClick:()=>{const e=(0,m.getContainingTrack)(t),n=(o=(0,f.getSnapshot)(e.configuration),JSON.parse(JSON.stringify(o)));var o;const r=(0,m.getSession)(t);if(b){const e=[...b];C&&e.push(void 0);for(const a of e){const e=r.addTrackConf({...n,trackId:`${n.trackId}-${l}:${a}-${+Date.now()}-sessionTrack`,name:`${n.name} ${l}:${a}`,displays:void 0});(0,m.getContainingView)(t).showTrack(e.trackId).displays[0].setFilterBy({flagInclude:0,flagExclude:1540,tagFilter:{tag:l,value:a}})}}a()}},"Submit"),n.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{a()}},"Cancel")))}))}}]);
+//# sourceMappingURL=4806.7e497d7a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4806.7e497d7a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4806.7e497d7a.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/GroupByDialog.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  Checkbox,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui'\nimport { getSnapshot, IAnyStateTreeNode } from 'mobx-state-tree'\nimport {\n  getContainingTrack,\n  getContainingView,\n  getSession,\n  useDebounce,\n} from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { getUniqueTagValues } from '../../shared'\nimport { LinearAlignmentsDisplayModel } from '../../LinearAlignmentsDisplay/models/model'\n\nfunction clone(c: unknown) {\n  return JSON.parse(JSON.stringify(c))\n}\n\nconst GroupByTagDialog = observer(function (props: {\n  model: {\n    adapterConfig: AnyConfigurationModel\n    configuration: AnyConfigurationModel\n  } & IAnyStateTreeNode\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const [tag, setTag] = useState('')\n  const [tagSet, setTagSet] = useState<string[]>()\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [includeUndefined, setIncludeUndefined] = useState(true)\n\n  const validTag = /^[A-Za-z][A-Za-z0-9]$/.exec(tag)\n  const isInvalid = tag.length === 2 && !validTag\n  const debouncedTag = useDebounce(tag, 1000)\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        if (!isInvalid) {\n          setError(undefined)\n          setLoading(true)\n          const vals = await getUniqueTagValues({\n            self: model,\n            tag: debouncedTag,\n            blocks: (getContainingView(model) as LinearGenomeViewModel)\n              .staticBlocks,\n          })\n          setTagSet(vals)\n        }\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      } finally {\n        setLoading(false)\n      }\n    })()\n  }, [model, isInvalid, debouncedTag])\n  return (\n    <Dialog open onClose={handleClose} title=\"Group by tag\">\n      <DialogContent>\n        <Typography>\n          Set the tag to group by. NOTE: this will make a set of fully\n          functional subtracks with the filter by by default set to the values\n          of the tag that are visible in the current view\n        </Typography>\n        <Typography color=\"textSecondary\">\n          Examples: HP for haplotype, RG for read group, etc.\n        </Typography>\n\n        <FormControlLabel\n          control={\n            <Checkbox\n              checked={includeUndefined}\n              onChange={() => {\n                setIncludeUndefined(!includeUndefined)\n              }}\n            />\n          }\n          label=\"Make a new subtrack for undefined values of tag as well?\"\n        />\n        <TextField\n          value={tag}\n          onChange={event => {\n            setTag(event.target.value)\n          }}\n          placeholder=\"Enter tag name\"\n          inputProps={{\n            maxLength: 2,\n            'data-testid': 'group-tag-name-input',\n          }}\n          error={isInvalid}\n          helperText={isInvalid ? 'Not a valid tag' : ''}\n          autoComplete=\"off\"\n          data-testid=\"group-tag-name\"\n        />\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingEllipses title=\"Loading unique tags\" />\n        ) : tagSet ? (\n          <div>\n            <div>Found unique {tag} values:</div>\n            <div>{tagSet.join(', ')}</div>\n          </div>\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          disabled={!tagSet}\n          autoFocus\n          onClick={() => {\n            const track = getContainingTrack(model)\n            const trackConf = clone(getSnapshot(track.configuration))\n            const session = getSession(model)\n            if (tagSet) {\n              const ret = [...tagSet] as (string | undefined)[]\n              if (includeUndefined) {\n                ret.push(undefined)\n              }\n              for (const tagValue of ret) {\n                // @ts-expect-error\n                const newTrackConf = session.addTrackConf({\n                  ...trackConf,\n                  trackId: `${trackConf.trackId}-${tag}:${tagValue}-${+Date.now()}-sessionTrack`,\n                  name: `${trackConf.name} ${tag}:${tagValue}`,\n                  displays: undefined,\n                })\n                const view = getContainingView(model) as LinearGenomeViewModel\n                const t = view.showTrack(newTrackConf.trackId)\n                const d = t.displays[0] as LinearAlignmentsDisplayModel\n                d.setFilterBy({\n                  flagInclude: 0,\n                  flagExclude: 1540,\n                  tagFilter: {\n                    tag,\n                    value: tagValue,\n                  },\n                })\n              }\n            }\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default GroupByTagDialog\n"],"names":["observer","props","model","handleClose","tag","setTag","useState","tagSet","setTagSet","loading","setLoading","error","setError","includeUndefined","setIncludeUndefined","validTag","exec","isInvalid","length","debouncedTag","useDebounce","useEffect","undefined","vals","getUniqueTagValues","self","blocks","getContainingView","staticBlocks","e","console","React","Dialog","open","onClose","title","DialogContent","Typography","color","FormControlLabel","control","Checkbox","checked","onChange","label","TextField","value","event","target","placeholder","inputProps","maxLength","helperText","autoComplete","ErrorMessage","LoadingEllipses","join","DialogActions","Button","variant","type","disabled","autoFocus","onClick","track","getContainingTrack","trackConf","c","getSnapshot","configuration","JSON","parse","stringify","session","getSession","ret","push","tagValue","newTrackConf","addTrackConf","trackId","Date","now","name","displays","showTrack","setFilterBy","flagInclude","flagExclude","tagFilter"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4861.6244e4c0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4861],{54861:(s,e,t)=>{t.r(e),t.d(e,{buttonClasses:()=>a.A,default:()=>b.A,getButtonUtilityClass:()=>a.B});var b=t(5401),a=t(57897)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4863.9dfed19c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4863,8341,722,5484,7865,246,2627,5008],{75083:(e,r,t)=>{t.r(r),t.d(r,{default:()=>p});var n=t(7552),a=t(29499),o=t(99123),i=t(49823),s=t(68446),l=t(75785),c=t(85676),d=t(68584),g=t(99546);const u=(0,l.n9)()({content:{minWidth:600}}),p=(0,s.observer)((function({trackWarnings:e,handleClose:r}){const{classes:t}=u(),s=[];for(let r=0;r<e.length;r++){const t=e[r],n=(0,d.getConf)(t,"name"),a=t.displays[0];for(let e=0;e<a.warnings.length;e++){const t=a.warnings[e];s.push({name:n,...t,id:`${r}_${e}`})}}const l=[{field:"name"},{field:"message",width:(0,g.measureGridWidth)(s.map((e=>e.message)))},{field:"effect",width:(0,g.measureGridWidth)(s.map((e=>e.effect)))}];return n.createElement(i.Dialog,{open:!0,onClose:r,maxWidth:"xl",title:"Dotplot rendered with warnings"},n.createElement(a.A,{className:t.content},n.createElement(o.A,null,"Found warnings while rendering the dotplot. This is often due to out-of-bound features that may indicate the wrong assemblies are being used. Check that the query and target are configured correctly, and that the right assemblies are being compared."),n.createElement("div",{style:{height:600,width:"100%",overflow:"auto"}},n.createElement(c.z,{rows:s,columns:l,disableRowSelectionOnClick:!0,rowHeight:25,disableColumnMenu:!0}))))}))},84885:(e,r,t)=>{t.d(r,{A:()=>v});var n=t(7552),a=t(93878),o=t(43583),i=t(70799),s=t(1045);var l=t(51148),c=t(60129),d=t(58520),g=t(4785),u=t(15622),p=t(47839),h=t(69500);const m=(0,l.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(e,r)=>r.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),f=(0,l.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.badge,r[t.variant],r[`anchorOrigin${(0,u.A)(t.anchorOrigin.vertical)}${(0,u.A)(t.anchorOrigin.horizontal)}${(0,u.A)(t.overlap)}`],"default"!==t.color&&r[`color${(0,u.A)(t.color)}`],t.invisible&&r.invisible]}})((0,c.A)((({theme:e})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:e.typography.fontFamily,fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.enteringScreen}),variants:[...Object.entries(e.palette).filter((0,d.A)(["contrastText"])).map((([r])=>({props:{color:r},style:{backgroundColor:(e.vars||e).palette[r].main,color:(e.vars||e).palette[r].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.leavingScreen})}}]})))),v=n.forwardRef((function(e,r){const t=(0,g.b)({props:e,name:"MuiBadge"}),{anchorOrigin:n={vertical:"top",horizontal:"right"},className:l,classes:c,component:d,components:v={},componentsProps:b={},children:y,overlap:A="rectangular",color:w="default",invisible:O=!1,max:x=99,badgeContent:S,slots:k,slotProps:C,showZero:R=!1,variant:$="standard",...E}=t,{badgeContent:T,invisible:M,max:z,displayValue:P}=function(e){const{badgeContent:r,invisible:t=!1,max:n=99,showZero:a=!1}=e,i=(0,o.A)({badgeContent:r,max:n});let s=t;!1!==t||0!==r||a||(s=!0);const{badgeContent:l,max:c=n}=s?i:e;return{badgeContent:l,invisible:s,max:c,displayValue:l&&Number(l)>c?`${c}+`:l}}({max:x,invisible:O,badgeContent:S,showZero:R}),L=(0,o.A)({anchorOrigin:n,color:w,overlap:A,variant:$,badgeContent:S}),B=M||null==T&&"dot"!==$,{color:N=w,overlap:W=A,anchorOrigin:j=n,variant:D=$}=B?L:t,I="dot"!==D?P:void 0,F={...t,badgeContent:T,invisible:B,max:z,displayValue:I,showZero:R,anchorOrigin:j,color:N,overlap:W,variant:D},G=(e=>{const{color:r,anchorOrigin:t,invisible:n,overlap:a,variant:o,classes:s={}}=e,l={root:["root"],badge:["badge",o,n&&"invisible",`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}`,`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}${(0,u.A)(a)}`,`overlap${(0,u.A)(a)}`,"default"!==r&&`color${(0,u.A)(r)}`]};return(0,i.A)(l,p.w,s)})(F),H=k?.root??v.Root??m,_=k?.badge??v.Badge??f,Z=C?.root??b.root,V=C?.badge??b.badge,U=(0,s.A)({elementType:H,externalSlotProps:Z,externalForwardedProps:E,additionalProps:{ref:r,as:d},ownerState:F,className:(0,a.A)(Z?.className,G.root,l)}),X=(0,s.A)({elementType:_,externalSlotProps:V,ownerState:F,className:(0,a.A)(G.badge,V?.className)});return(0,h.jsxs)(H,{...U,children:[y,(0,h.jsx)(_,{...X,children:I})]})}))},47839:(e,r,t)=>{t.d(r,{A:()=>i,w:()=>o});var n=t(33761),a=t(85693);function o(e){return(0,a.Ay)("MuiBadge",e)}const i=(0,n.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},59705:(e,r,t)=>{t.d(r,{A:()=>w});var n=t(7552),a=t(93878),o=t(70799),i=t(64761),s=t(51148),l=t(60129),c=t(4785),d=t(15622),g=t(58520),u=t(72489),p=t(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,m=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,f="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,v="string"!=typeof m?i.AH`
+        animation: ${m} 1.4s ease-in-out infinite;
+      `:null,b=(0,s.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,d.A)(t.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:f||{animation:`${h} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,g.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,s.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,s.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,d.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:v||{animation:`${m} 1.4s ease-in-out infinite`}}]})))),w=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:s=!1,size:l=40,style:g,thickness:h=3.6,value:m=0,variant:f="indeterminate",...v}=t,w={...t,color:i,disableShrink:s,size:l,thickness:h,value:m,variant:f},O=(e=>{const{classes:r,variant:t,color:n,disableShrink:a}=e,i={root:["root",t,`color${(0,d.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(t)}`,a&&"circleDisableShrink"]};return(0,o.A)(i,u.b,r)})(w),x={},S={},k={};if("determinate"===f){const e=2*Math.PI*((44-h)/2);x.strokeDasharray=e.toFixed(3),k["aria-valuenow"]=Math.round(m),x.strokeDashoffset=`${((100-m)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,p.jsx)(b,{className:(0,a.A)(O.root,n),style:{width:l,height:l,...S,...g},ownerState:w,ref:r,role:"progressbar",...k,...v,children:(0,p.jsx)(y,{className:O.svg,ownerState:w,viewBox:"22 22 44 44",children:(0,p.jsx)(A,{className:O.circle,style:x,ownerState:w,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>i,b:()=>o});var n=t(33761),a=t(85693);function o(e){return(0,a.Ay)("MuiCircularProgress",e)}const i=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>d});var n=t(7552),a=t(29527),o=t(89887),i=t(99305),s=t(28325),l=t(69500);function c(e){return e.substring(2).toLowerCase()}function d(e){const{children:r,disableReactTree:t=!1,mouseEvent:d="onClick",onClickAway:g,touchEvent:u="onTouchEnd"}=e,p=n.useRef(!1),h=n.useRef(null),m=n.useRef(!1),f=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{m.current=!0}),0),()=>{m.current=!1})),[]);const v=(0,a.A)((0,s.A)(r),h),b=(0,o.A)((e=>{const r=f.current;f.current=!1;const n=(0,i.A)(h.current);if(!m.current||!h.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(p.current)return void(p.current=!1);let a;a=e.composedPath?e.composedPath().includes(h.current):!n.documentElement.contains(e.target)||h.current.contains(e.target),a||!t&&r||g(e)})),y=e=>t=>{f.current=!0;const n=r.props[e];n&&n(t)},A={ref:v};return!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=c(u),r=(0,i.A)(h.current),t=()=>{p.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,u]),!1!==d&&(A[d]=y(d)),n.useEffect((()=>{if(!1!==d){const e=c(d),r=(0,i.A)(h.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,d]),(0,l.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>u});var n=t(7552),a=t(93878),o=t(70799),i=t(51148),s=t(60129),l=t(4785),c=t(89663),d=t(69500);const g=(0,i.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,s.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),u=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiToolbar"}),{className:n,component:i="div",disableGutters:s=!1,variant:u="regular",...p}=t,h={...t,component:i,disableGutters:s,variant:u},m=(e=>{const{classes:r,disableGutters:t,variant:n}=e,a={root:["root",!t&&"gutters",n]};return(0,o.A)(a,c.U,r)})(h);return(0,d.jsx)(g,{as:i,className:(0,a.A)(m.root,n),ref:r,ownerState:h,...p})}))},89663:(e,r,t)=>{t.d(r,{A:()=>i,U:()=>o});var n=t(33761),a=t(85693);function o(e){return(0,a.Ay)("MuiToolbar",e)}const i=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=4863.9dfed19c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4863.9dfed19c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4863.9dfed19c.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotView/components/WarningDialog.tsx","../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["import React from 'react'\nimport { DialogContent, DialogContentText } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { DataGrid } from '@mui/x-data-grid'\nimport { AnyConfigurationModel, getConf } from '@jbrowse/core/configuration'\nimport { measureGridWidth } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()({\n  content: {\n    minWidth: 600,\n  },\n})\n\ninterface TrackWarning {\n  configuration: AnyConfigurationModel\n  displays: { warnings: { message: string; effect: string }[] }[]\n}\n\nconst WarningDialog = observer(function WarningDialog({\n  trackWarnings,\n  handleClose,\n}: {\n  handleClose: () => void\n  trackWarnings: TrackWarning[]\n}) {\n  const { classes } = useStyles()\n  const rows = [] as {\n    name: string\n    message: string\n    effect: string\n    id: string\n  }[]\n  for (let i = 0; i < trackWarnings.length; i++) {\n    const track = trackWarnings[i]!\n    const name = getConf(track, 'name')\n    const d = track.displays[0]!\n    for (let j = 0; j < d.warnings.length; j++) {\n      const warning = d.warnings[j]!\n      rows.push({ name, ...warning, id: `${i}_${j}` })\n    }\n  }\n  const columns = [\n    { field: 'name' },\n    { field: 'message', width: measureGridWidth(rows.map(r => r.message)) },\n    { field: 'effect', width: measureGridWidth(rows.map(r => r.effect)) },\n  ]\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      maxWidth=\"xl\"\n      title=\"Dotplot rendered with warnings\"\n    >\n      <DialogContent className={classes.content}>\n        <DialogContentText>\n          Found warnings while rendering the dotplot. This is often due to\n          out-of-bound features that may indicate the wrong assemblies are being\n          used. Check that the query and target are configured correctly, and\n          that the right assemblies are being compared.\n        </DialogContentText>\n        <div style={{ height: 600, width: '100%', overflow: 'auto' }}>\n          <DataGrid\n            rows={rows}\n            columns={columns}\n            disableRowSelectionOnClick\n            rowHeight={25}\n            disableColumnMenu\n          />\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default WarningDialog\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["useStyles","makeStyles","content","minWidth","observer","trackWarnings","handleClose","classes","rows","i","length","track","name","getConf","d","displays","j","warnings","warning","push","id","columns","field","width","measureGridWidth","map","r","message","effect","React","Dialog","open","onClose","maxWidth","title","DialogContent","className","DialogContentText","style","height","overflow","DataGrid","disableRowSelectionOnClick","rowHeight","disableColumnMenu","BadgeRoot","styled","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","RADIUS_STANDARD","lineHeight","padding","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","animation","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","size","thickness","value","circleStyle","rootStyle","circumference","Math","PI","toFixed","round","role","viewBox","cx","cy","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4864.28cfc358.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4864],{34864:(t,e,r)=>{r.r(e),r.d(e,{default:()=>h});var a=r(60972),s=r(46377),n=r(99834),o=r(66885),i=r(99546),c=r(32598),l=r(7706),u=r(4101);class h extends s.BaseFeatureDataAdapter{intervalTrees={};static capabilities=["getFeatures","getRefNames"];async loadDataP(t={}){const e=this.pluginManager,r=this.getConf("bedLocation"),s=await(0,n.openLocation)(r,e).readFile(t),o=(0,i.isGzip)(s)?await(0,l.unzip)(s):s;if(o.length>536870888)throw new Error("Data exceeds maximum string length (512MB)");const c=new TextDecoder("utf8",{fatal:!0}).decode(o).split(/\n|\r\n|\r/).filter((t=>!!t)),u=[];let h=0;for(;h<c.length&&c[h].startsWith("#");h++)u.push(c[h]);const d=u.join("\n"),f={};for(;h<c.length;h++){const t=c[h],e=t.indexOf("\t"),r=t.slice(0,e);f[r]||(f[r]=[]),f[r].push(t)}const m=this.getConf("autoSql");return{header:d,features:f,parser:new a.A({autoSql:m}),columnNames:this.getConf("columnNames"),scoreColumn:this.getConf("scoreColumn"),colRef:this.getConf("colRef"),colStart:this.getConf("colStart"),colEnd:this.getConf("colEnd")}}async loadData(t={}){return this.bedFeatures||(this.bedFeatures=this.loadDataP(t).catch((t=>{throw this.bedFeatures=void 0,t}))),this.bedFeatures}async getRefNames(t={}){const{features:e}=await this.loadData(t);return Object.keys(e)}async getHeader(t={}){const{header:e}=await this.loadData(t);return e}async getNames(){const{header:t,columnNames:e}=await this.loadData();if(e.length)return e;const r=t.split(/\n|\r\n|\r/).filter((t=>!!t)).at(-1);return r?.includes("\t")?r.slice(1).split("\t").map((t=>t.trim())):void 0}async loadFeatureIntervalTreeHelper(t){const{colRef:e,colStart:r,colEnd:a,features:s,parser:n,scoreColumn:o}=await this.loadData(),i=s[t];if(!i)return;const l=await this.getNames(),h=new c.Ay,d=i.map(((s,i)=>{const c=`${this.id}-${t}-${i}`;return(0,u.dE)(s,e,r,a,o,n,c,l)}));for(const t of d)h.insert([t.get("start"),t.get("end")],t);return h}async loadFeatureIntervalTree(t){return this.intervalTrees[t]||(this.intervalTrees[t]=this.loadFeatureIntervalTreeHelper(t).catch((e=>{throw this.intervalTrees[t]=void 0,e}))),this.intervalTrees[t]}getFeatures(t,e={}){return(0,o.ObservableCreate)((async e=>{const{start:r,end:a,refName:s}=t,n=await this.loadFeatureIntervalTree(s);n?.search([r,a]).forEach((t=>{e.next(t)})),e.complete()}),e.signal)}freeResources(){}}},4101:(t,e,r)=>{r.d(e,{BX:()=>s,Vl:()=>i,dE:()=>o,zZ:()=>n});var a=r(99546);function s(t){const{subfeatures:e,thickStart:r,thickEnd:a,blockCount:s,blockSizes:n,chromStarts:o,refName:i,strand:c=0,...l}=t;if(!r||!a||!c)return t;const u=[];return e.filter((t=>"block"===t.type)).sort(((t,e)=>t.start-e.start)).forEach((t=>{const e=t.start,s=t.end;if(r>=s){const t=c>0?"five":"three";u.push({type:`${t}_prime_UTR`,start:e,end:s,refName:i})}else if(r>e&&r<s&&a>=s){const t=c>0?"five":"three";u.push({type:`${t}_prime_UTR`,start:e,end:r,refName:i},{type:"CDS",start:r,end:s,refName:i})}else if(r<=e&&a>=s)u.push({type:"CDS",start:e,end:s,refName:i});else if(r>e&&r<s&&a<s){const t=c>0?"five":"three",n=c>0?"three":"five";u.push({type:`${t}_prime_UTR`,start:e,end:r,refName:i},{type:"CDS",start:r,end:a,refName:i},{type:`${n}_prime_UTR`,start:a,end:s,refName:i})}else if(r<=e&&a>e&&a<s){const t=c>0?"three":"five";u.push({type:"CDS",start:e,end:a,refName:i},{type:`${t}_prime_UTR`,start:a,end:s,refName:i})}else if(a<=e){const t=c>0?"three":"five";u.push({type:`${t}_prime_UTR`,start:e,end:s,refName:i})}})),{...l,strand:c,type:"mRNA",refName:i,subfeatures:u}}function n({start:t,uniqueId:e,refName:r,chromStarts:a,blockCount:s,blockSizes:n,blockStarts:o}){const i=[],c=a||o||[];for(let a=0;a<s;a++){const s=(c[a]||0)+t,o=s+(n[a]||0);i.push({uniqueId:`${e}-${a}`,start:s,end:o,refName:r,type:"block"})}return i}function o(t,e,r,o,c,l,u,h){const d=t.split("\t"),f=d[e],m=+d[r],p=r===o?1:0,b=+d[o]+p,k=h?function(t,e){const r=Object.fromEntries(e.split("\t").map(((e,r)=>[t[r],e]))),{blockStarts:a,blockCount:s,chromStarts:n,thickEnd:o,thickStart:i,blockSizes:c,...l}=r;return{...l,blockStarts:a?.split(",").map((t=>+t)),chromStarts:n?.split(",").map((t=>+t)),blockSizes:c?.split(",").map((t=>+t)),thickStart:i?+i:void 0,thickEnd:o?+o:void 0,blockCount:s?+s:void 0}}(h,t):l.parseLine(t,{uniqueId:u}),{blockCount:S,blockSizes:g,blockStarts:y,chromStarts:C,thickStart:N,thickEnd:v,type:w,score:T,chrom:_,chromStart:E,chromEnd:D,...F}=k,R=S?n({start:m,uniqueId:u,refName:f,chromStarts:C,blockCount:S,blockSizes:g,blockStarts:y}):[],$={...F,type:w,score:c?+k[c]:T,start:m,end:b,refName:f,uniqueId:u,subfeatures:R};return new a.SimpleFeature({id:u,data:i(k)?s({thickStart:N,thickEnd:v,blockCount:S,blockSizes:g,chromStarts:C,...$}):$})}function i(t){return t.thickStart&&t.blockCount&&0!==t.strand}}}]);
+//# sourceMappingURL=4864.28cfc358.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4864.28cfc358.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4864.28cfc358.chunk.js","mappings":"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","sources":["../../../plugins/bed/src/BedAdapter/BedAdapter.ts","../../../plugins/bed/src/util.ts"],"sourcesContent":["import BED from '@gmod/bed'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Region, Feature, isGzip } from '@jbrowse/core/util'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport { unzip } from '@gmod/bgzf-filehandle'\n\n// locals\nimport { featureData } from '../util'\n\nexport default class BedAdapter extends BaseFeatureDataAdapter {\n  protected bedFeatures?: Promise<{\n    header: string\n    features: Record<string, string[]>\n    parser: BED\n    columnNames: string[]\n    scoreColumn: string\n    colRef: number\n    colStart: number\n    colEnd: number\n  }>\n\n  protected intervalTrees: Record<\n    string,\n    Promise<IntervalTree | undefined> | undefined\n  > = {}\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  private async loadDataP(opts: BaseOptions = {}) {\n    const pm = this.pluginManager\n    const bedLoc = this.getConf('bedLocation')\n    const buf = await openLocation(bedLoc, pm).readFile(opts)\n    const buffer = isGzip(buf) ? await unzip(buf) : buf\n    // 512MB  max chrome string length is 512MB\n    if (buffer.length > 536_870_888) {\n      throw new Error('Data exceeds maximum string length (512MB)')\n    }\n    const data = new TextDecoder('utf8', { fatal: true }).decode(buffer)\n    const lines = data.split(/\\n|\\r\\n|\\r/).filter(f => !!f)\n    const headerLines = []\n    let i = 0\n    for (; i < lines.length && lines[i]!.startsWith('#'); i++) {\n      headerLines.push(lines[i])\n    }\n    const header = headerLines.join('\\n')\n    const features = {} as Record<string, string[]>\n    for (; i < lines.length; i++) {\n      const line = lines[i]!\n      const tab = line.indexOf('\\t')\n      const refName = line.slice(0, tab)\n      if (!features[refName]) {\n        features[refName] = []\n      }\n      features[refName].push(line)\n    }\n\n    const autoSql = this.getConf('autoSql') as string\n    const parser = new BED({ autoSql })\n    const columnNames = this.getConf('columnNames')\n    const scoreColumn = this.getConf('scoreColumn')\n    const colRef = this.getConf('colRef')\n    const colStart = this.getConf('colStart')\n    const colEnd = this.getConf('colEnd')\n\n    return {\n      header,\n      features,\n      parser,\n      columnNames,\n      scoreColumn,\n      colRef,\n      colStart,\n      colEnd,\n    }\n  }\n\n  private async loadData(opts: BaseOptions = {}) {\n    if (!this.bedFeatures) {\n      this.bedFeatures = this.loadDataP(opts).catch((e: unknown) => {\n        this.bedFeatures = undefined\n        throw e\n      })\n    }\n\n    return this.bedFeatures\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    const { features } = await this.loadData(opts)\n    return Object.keys(features)\n  }\n\n  async getHeader(opts: BaseOptions = {}) {\n    const { header } = await this.loadData(opts)\n    return header\n  }\n\n  async getNames() {\n    const { header, columnNames } = await this.loadData()\n    if (columnNames.length) {\n      return columnNames\n    }\n    const defs = header.split(/\\n|\\r\\n|\\r/).filter(f => !!f)\n    const defline = defs.at(-1)\n    return defline?.includes('\\t')\n      ? defline\n          .slice(1)\n          .split('\\t')\n          .map(field => field.trim())\n      : undefined\n  }\n\n  private async loadFeatureIntervalTreeHelper(refName: string) {\n    const { colRef, colStart, colEnd, features, parser, scoreColumn } =\n      await this.loadData()\n    const lines = features[refName]\n    if (!lines) {\n      return undefined\n    }\n    const names = await this.getNames()\n\n    const intervalTree = new IntervalTree()\n    const ret = lines.map((f, i) => {\n      const uniqueId = `${this.id}-${refName}-${i}`\n      return featureData(\n        f,\n        colRef,\n        colStart,\n        colEnd,\n        scoreColumn,\n        parser,\n        uniqueId,\n        names,\n      )\n    })\n\n    for (const obj of ret) {\n      intervalTree.insert([obj.get('start'), obj.get('end')], obj)\n    }\n    return intervalTree\n  }\n\n  private async loadFeatureIntervalTree(refName: string) {\n    if (!this.intervalTrees[refName]) {\n      this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(\n        refName,\n      ).catch((e: unknown) => {\n        this.intervalTrees[refName] = undefined\n        throw e\n      })\n    }\n    return this.intervalTrees[refName]\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { start, end, refName } = query\n      const intervalTree = await this.loadFeatureIntervalTree(refName)\n      intervalTree?.search([start, end]).forEach(f => {\n        observer.next(f)\n      })\n      observer.complete()\n    }, opts.signal)\n  }\n\n  public freeResources(): void {}\n}\n","import BED from '@gmod/bed'\nimport { SimpleFeature } from '@jbrowse/core/util'\n\nexport interface MinimalFeature {\n  type: string\n  start: number\n  end: number\n  refName: string\n  [key: string]: unknown\n}\nexport interface TranscriptFeat extends MinimalFeature {\n  thickStart: number\n  thickEnd: number\n  blockCount: number\n  blockSizes: number[]\n  chromStarts: number[]\n  refName: string\n  strand?: number\n  subfeatures: MinimalFeature[]\n}\n\nexport function ucscProcessedTranscript(feature: TranscriptFeat) {\n  const {\n    subfeatures: oldSubfeatures,\n    thickStart,\n    thickEnd,\n    blockCount,\n    blockSizes,\n    chromStarts,\n    refName,\n    strand = 0,\n    ...rest\n  } = feature\n\n  if (!thickStart || !thickEnd || !strand) {\n    return feature\n  }\n\n  const subfeatures: MinimalFeature[] = []\n  oldSubfeatures\n    .filter(child => child.type === 'block')\n    .sort((a, b) => a.start - b.start)\n    .forEach(block => {\n      const start = block.start\n      const end = block.end\n      if (thickStart >= end) {\n        // left-side UTR\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd >= end) {\n        // UTR | CDS\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push(\n          {\n            type: `${prime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd >= end) {\n        // CDS\n        subfeatures.push({\n          type: 'CDS',\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd < end) {\n        // UTR | CDS | UTR\n        const leftPrime = strand > 0 ? 'five' : 'three'\n        const rightPrime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: `${leftPrime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${rightPrime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd > start && thickEnd < end) {\n        // CDS | UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: 'CDS',\n            start,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${prime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickEnd <= start) {\n        // right-side UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      }\n    })\n\n  return { ...rest, strand, type: 'mRNA', refName, subfeatures }\n}\n\nfunction defaultParser(fields: string[], line: string) {\n  const obj = Object.fromEntries(\n    line.split('\\t').map((f, i) => [fields[i]!, f] as const),\n  )\n  const {\n    blockStarts,\n    blockCount,\n    chromStarts,\n    thickEnd,\n    thickStart,\n    blockSizes,\n    ...rest\n  } = obj\n\n  return {\n    ...rest,\n    blockStarts: blockStarts?.split(',').map(r => +r),\n    chromStarts: chromStarts?.split(',').map(r => +r),\n    blockSizes: blockSizes?.split(',').map(r => +r),\n    thickStart: thickStart ? +thickStart : undefined,\n    thickEnd: thickEnd ? +thickEnd : undefined,\n    blockCount: blockCount ? +blockCount : undefined,\n  } as Record<string, unknown>\n}\n\nexport function makeBlocks({\n  start,\n  uniqueId,\n  refName,\n  chromStarts,\n  blockCount,\n  blockSizes,\n  blockStarts,\n}: {\n  blockCount: number\n  start: number\n  uniqueId: string\n  refName: string\n  chromStarts?: number[]\n  blockSizes: number[]\n  blockStarts?: number[]\n}) {\n  const subfeatures = []\n  const starts = chromStarts || blockStarts || []\n  for (let b = 0; b < blockCount; b++) {\n    const bmin = (starts[b] || 0) + start\n    const bmax = bmin + (blockSizes[b] || 0)\n    subfeatures.push({\n      uniqueId: `${uniqueId}-${b}`,\n      start: bmin,\n      end: bmax,\n      refName,\n      type: 'block',\n    })\n  }\n  return subfeatures\n}\nexport function featureData(\n  line: string,\n  colRef: number,\n  colStart: number,\n  colEnd: number,\n  scoreColumn: string,\n  parser: BED,\n  uniqueId: string,\n  names?: string[],\n) {\n  const l = line.split('\\t')\n  const refName = l[colRef]!\n  const start = +l[colStart]!\n  const colSame = colStart === colEnd ? 1 : 0\n  const end = +l[colEnd]! + colSame\n  const data = names\n    ? defaultParser(names, line)\n    : parser.parseLine(line, { uniqueId })\n\n  const {\n    blockCount,\n    blockSizes,\n    blockStarts,\n    chromStarts,\n    thickStart,\n    thickEnd,\n    type,\n    score,\n    chrom: _1,\n    chromStart: _2,\n    chromEnd: _3,\n    ...rest\n  } = data\n  const subfeatures = blockCount\n    ? makeBlocks({\n        start,\n        uniqueId,\n        refName,\n        chromStarts,\n        blockCount,\n        blockSizes,\n        blockStarts,\n      })\n    : []\n  const f = {\n    ...rest,\n    type,\n    score: scoreColumn ? +data[scoreColumn] : score,\n    start,\n    end,\n    refName,\n    uniqueId,\n    subfeatures,\n  }\n  return new SimpleFeature({\n    id: uniqueId,\n    data: isUcscProcessedTranscript(data)\n      ? ucscProcessedTranscript({\n          thickStart: thickStart!,\n          thickEnd: thickEnd!,\n          blockCount: blockCount!,\n          blockSizes: blockSizes!,\n          chromStarts: chromStarts,\n          ...f,\n        })\n      : f,\n  })\n}\n\nexport function isUcscProcessedTranscript(f: {\n  thickStart?: number\n  blockCount?: number\n  strand?: number\n}) {\n  return f.thickStart && f.blockCount && f.strand !== 0\n}\n"],"names":["BedAdapter","BaseFeatureDataAdapter","intervalTrees","loadDataP","opts","pm","this","pluginManager","bedLoc","getConf","buf","openLocation","readFile","buffer","isGzip","unzip","length","Error","lines","TextDecoder","fatal","decode","split","filter","f","headerLines","i","startsWith","push","header","join","features","line","tab","indexOf","refName","slice","autoSql","parser","BED","columnNames","scoreColumn","colRef","colStart","colEnd","loadData","bedFeatures","catch","e","undefined","getRefNames","Object","keys","getHeader","getNames","defline","at","includes","map","field","trim","loadFeatureIntervalTreeHelper","names","intervalTree","IntervalTree","ret","uniqueId","id","featureData","obj","insert","get","loadFeatureIntervalTree","getFeatures","query","ObservableCreate","async","start","end","search","forEach","observer","next","complete","signal","freeResources","ucscProcessedTranscript","feature","subfeatures","oldSubfeatures","thickStart","thickEnd","blockCount","blockSizes","chromStarts","strand","rest","child","type","sort","a","b","block","prime","leftPrime","rightPrime","makeBlocks","blockStarts","starts","bmin","bmax","l","colSame","data","fields","fromEntries","r","defaultParser","parseLine","score","chrom","_1","chromStart","_2","chromEnd","_3","SimpleFeature","isUcscProcessedTranscript"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/489.43cb4a5f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[489],{80489:(e,t,l)=>{l.r(t),l.d(t,{default:()=>s});var n=l(7552),r=l(68446),a=l(99546),c=l(17970);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var n in l)({}).hasOwnProperty.call(l,n)&&(e[n]=l[n])}return e},u.apply(null,arguments)}const o=(e,t)=>`${((e=0)=>+(+e).toFixed(1))(e/(t||1)*100)}%`,m=n.forwardRef((function({feature:e},t){const l=e.get("start"),r=e.get("end"),c=e.get("refName"),{refbase:u,all:m,total:s,ref:E,"-1":d,1:i,0:f,...p}=e.get("snpinfo"),b=[c,l===r?(0,a.toLocale)(l):`${(0,a.toLocale)(l)}..${(0,a.toLocale)(r)}`].filter((e=>!!e)).join(":");return n.createElement("div",{ref:t},n.createElement("table",null,n.createElement("caption",null,b),n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"Base"),n.createElement("th",null,"Count"),n.createElement("th",null,"% of Total"),n.createElement("th",null,"Strands"),n.createElement("th",null,"Source"))),n.createElement("tbody",null,n.createElement("tr",null,n.createElement("td",null,"Total"),n.createElement("td",null,m)),n.createElement("tr",null,n.createElement("td",null,"REF ",u?`(${u.toUpperCase()})`:""),n.createElement("td",null,E),n.createElement("td",null,o(E,m)),n.createElement("td",null,d?`${d}(-)`:"",i?`${i}(+)`:""),n.createElement("td",null)),Object.entries(p).map((([e,t])=>Object.entries(t).map((([t,l])=>n.createElement("tr",{key:t},n.createElement("td",null,t.toUpperCase()),n.createElement("td",null,l.total),n.createElement("td",null,"total"===t||"skip"===t?"---":o(l.total,m)),n.createElement("td",null,l[-1]?`${l[-1]}(-)`:"",l[1]?`${l[1]}(+)`:""),n.createElement("td",null,e)))))))))})),s=(0,r.observer)((function(e){const{model:t}=e,{featureUnderMouse:l}=t;return l&&"skip"===l.get("type")?null:n.createElement(c.m_,u({TooltipContents:m},e))}))}}]);
+//# sourceMappingURL=489.43cb4a5f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/489.43cb4a5f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/489.43cb4a5f.chunk.js","mappings":"6ZA6BA,MAEMA,EAAMA,CAACC,EAAWC,IAAkB,GAF9BC,EAACC,EAAI,OAASA,GAAGC,QAAQ,GAEQF,CAAKF,GAAKC,GAAS,GAAM,QAMhEI,EAAkBC,EAAAA,YACtB,UAA0B,QAAEC,GAAWC,GACrC,MAAMC,EAAQF,EAAQG,IAAI,SACpBC,EAAMJ,EAAQG,IAAI,OAClBE,EAAOL,EAAQG,IAAI,YACnB,QACJG,EAAO,IACPC,EAAG,MACHb,EAAK,IACLc,EACA,KAAMC,EACN,EAAKC,EACL,EAAKC,KACFC,GACDZ,EAAQG,IAAI,WACVU,EAAM,CACVR,EACAH,IAAUE,GAAMU,EAAAA,EAAAA,UAASZ,GAAS,IAAGY,EAAAA,EAAAA,UAASZ,QAAWY,EAAAA,EAAAA,UAASV,MAEjEW,QAAOC,KAAOA,IACdC,KAAK,KAER,OACElB,EAAAA,cAAA,OAAKS,IAAKP,GACRF,EAAAA,cAAA,aACEA,EAAAA,cAAA,eAAUc,GACVd,EAAAA,cAAA,aACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,QACJA,EAAAA,cAAA,UAAI,SACJA,EAAAA,cAAA,UAAI,cACJA,EAAAA,cAAA,UAAI,WACJA,EAAAA,cAAA,UAAI,YAGRA,EAAAA,cAAA,aACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,SACJA,EAAAA,cAAA,UAAKQ,IAEPR,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,OAAKO,EAAU,IAAIA,EAAQY,iBAAmB,IAClDnB,EAAAA,cAAA,UAAKS,GACLT,EAAAA,cAAA,UAAKP,EAAIgB,EAAKD,IACdR,EAAAA,cAAA,UACGU,EAAM,GAAGA,OAAW,GACpBC,EAAK,GAAGA,OAAU,IAErBX,EAAAA,cAAA,YAGDoB,OAAOC,QAAQR,GAAMS,KAAI,EAAEC,EAAKC,KAC/BJ,OAAOC,QAAQG,GAAOF,KAAI,EAAEG,EAAMC,KAChC1B,EAAAA,cAAA,MAAIuB,IAAKE,GACPzB,EAAAA,cAAA,UAAKyB,EAAKN,eACVnB,EAAAA,cAAA,UAAK0B,EAAM/B,OACXK,EAAAA,cAAA,UACY,UAATyB,GAA6B,SAATA,EACjB,MACAhC,EAAIiC,EAAM/B,MAAOa,IAEvBR,EAAAA,cAAA,UACG0B,GAAM,GAAQ,GAAGA,GAAM,QAAa,GACpCA,EAAM,GAAO,GAAGA,EAAM,QAAY,IAErC1B,EAAAA,cAAA,UAAKuB,UAQrB,IAqBF,GAhB2BI,EAAAA,EAAAA,WAAS,SAAUC,GAS5C,MAAM,MAAEC,GAAUD,GACVE,kBAAmBC,GAASF,EACpC,OAAOE,GAA6B,SAArBA,EAAK3B,IAAI,QAAqB,KAC3CJ,EAAAA,cAACgC,EAAAA,GAAOC,EAAA,CAAClC,gBAAiBA,GAAqB6B,GAEnD,G","sources":["../../../plugins/alignments/src/LinearSNPCoverageDisplay/components/Tooltip.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature, toLocale } from '@jbrowse/core/util'\nimport { Tooltip } from '@jbrowse/plugin-wiggle'\n\ntype Count = Record<\n  string,\n  {\n    total: number\n    '-1': number\n    '0': number\n    '1': number\n  }\n>\n\ninterface SNPInfo {\n  cov: Count\n  lowqual: Count\n  noncov: Count\n  delskips: Count\n  refbase: string\n  total: number\n  ref: number\n  all: number\n  '-1': number\n  '0': number\n  '1': number\n}\n\nconst toP = (s = 0) => +(+s).toFixed(1)\n\nconst pct = (n: number, total: number) => `${toP((n / (total || 1)) * 100)}%`\n\ninterface Props {\n  feature: Feature\n}\n\nconst TooltipContents = React.forwardRef<HTMLDivElement, Props>(\n  function TooltipContents2({ feature }, reactRef) {\n    const start = feature.get('start')\n    const end = feature.get('end')\n    const name = feature.get('refName')\n    const {\n      refbase,\n      all,\n      total,\n      ref,\n      '-1': rn1,\n      '1': r1,\n      '0': r0,\n      ...info\n    } = feature.get('snpinfo') as SNPInfo\n    const loc = [\n      name,\n      start === end ? toLocale(start) : `${toLocale(start)}..${toLocale(end)}`,\n    ]\n      .filter(f => !!f)\n      .join(':')\n\n    return (\n      <div ref={reactRef}>\n        <table>\n          <caption>{loc}</caption>\n          <thead>\n            <tr>\n              <th>Base</th>\n              <th>Count</th>\n              <th>% of Total</th>\n              <th>Strands</th>\n              <th>Source</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>Total</td>\n              <td>{all}</td>\n            </tr>\n            <tr>\n              <td>REF {refbase ? `(${refbase.toUpperCase()})` : ''}</td>\n              <td>{ref}</td>\n              <td>{pct(ref, all)}</td>\n              <td>\n                {rn1 ? `${rn1}(-)` : ''}\n                {r1 ? `${r1}(+)` : ''}\n              </td>\n              <td />\n            </tr>\n\n            {Object.entries(info).map(([key, entry]) =>\n              Object.entries(entry).map(([base, score]) => (\n                <tr key={base}>\n                  <td>{base.toUpperCase()}</td>\n                  <td>{score.total}</td>\n                  <td>\n                    {base === 'total' || base === 'skip'\n                      ? '---'\n                      : pct(score.total, all)}\n                  </td>\n                  <td>\n                    {score['-1'] ? `${score['-1']}(-)` : ''}\n                    {score['1'] ? `${score['1']}(+)` : ''}\n                  </td>\n                  <td>{key}</td>\n                </tr>\n              )),\n            )}\n          </tbody>\n        </table>\n      </div>\n    )\n  },\n)\n\ntype Coord = [number, number]\n\nconst SNPCoverageTooltip = observer(function (props: {\n  model: {\n    featureUnderMouse?: Feature\n  }\n  height: number\n  offsetMouseCoord: Coord\n  clientMouseCoord: Coord\n  clientRect?: DOMRect\n}) {\n  const { model } = props\n  const { featureUnderMouse: feat } = model\n  return feat && feat.get('type') === 'skip' ? null : (\n    <Tooltip TooltipContents={TooltipContents} {...props} />\n  )\n})\n\nexport default SNPCoverageTooltip\n"],"names":["pct","n","total","toP","s","toFixed","TooltipContents","React","feature","reactRef","start","get","end","name","refbase","all","ref","rn1","r1","r0","info","loc","toLocale","filter","f","join","toUpperCase","Object","entries","map","key","entry","base","score","observer","props","model","featureUnderMouse","feat","Tooltip","_extends"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4902.452e575b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4902],{83162:(r,a,e)=>{e.d(a,{A:()=>A});var t=e(7552),o=e(93878),s=e(70799),n=e(51148),l=e(60129),i=e(4785),c=e(74893),u=e(69500);const d=(0,c.A)((0,u.jsx)("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");var p=e(28375),v=e(43045);const m=(0,n.Ay)("div",{name:"MuiAvatar",slot:"Root",overridesResolver:(r,a)=>{const{ownerState:e}=r;return[a.root,a[e.variant],e.colorDefault&&a.colorDefault]}})((0,l.A)((({theme:r})=>({position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:r.typography.fontFamily,fontSize:r.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none",variants:[{props:{variant:"rounded"},style:{borderRadius:(r.vars||r).shape.borderRadius}},{props:{variant:"square"},style:{borderRadius:0}},{props:{colorDefault:!0},style:{color:(r.vars||r).palette.background.default,...r.vars?{backgroundColor:r.vars.palette.Avatar.defaultBg}:{backgroundColor:r.palette.grey[400],...r.applyStyles("dark",{backgroundColor:r.palette.grey[600]})}}}]})))),g=(0,n.Ay)("img",{name:"MuiAvatar",slot:"Img",overridesResolver:(r,a)=>a.img})({width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:1e4}),f=(0,n.Ay)(d,{name:"MuiAvatar",slot:"Fallback",overridesResolver:(r,a)=>a.fallback})({width:"75%",height:"75%"}),A=t.forwardRef((function(r,a){const e=(0,i.b)({props:r,name:"MuiAvatar"}),{alt:n,children:l,className:c,component:d="div",slots:A={},slotProps:h={},imgProps:y,sizes:b,src:w,srcSet:x,variant:k="circular",...S}=e;let M=null;const R=function({crossOrigin:r,referrerPolicy:a,src:e,srcSet:o}){const[s,n]=t.useState(!1);return t.useEffect((()=>{if(!e&&!o)return;n(!1);let t=!0;const s=new Image;return s.onload=()=>{t&&n("loaded")},s.onerror=()=>{t&&n("error")},s.crossOrigin=r,s.referrerPolicy=a,s.src=e,o&&(s.srcset=o),()=>{t=!1}}),[r,a,e,o]),s}({...y,src:w,srcSet:x}),P=w||x,j=P&&"error"!==R,C={...e,colorDefault:!j,component:d,variant:k};delete C.ownerState;const N=(r=>{const{classes:a,variant:e,colorDefault:t}=r,o={root:["root",e,t&&"colorDefault"],img:["img"],fallback:["fallback"]};return(0,s.A)(o,p.k,a)})(C),[D,G]=(0,v.A)("img",{className:N.img,elementType:g,externalForwardedProps:{slots:A,slotProps:{img:{...y,...h.img}}},additionalProps:{alt:n,src:w,srcSet:x,sizes:b},ownerState:C});return M=j?(0,u.jsx)(D,{...G}):l||0===l?l:P&&n?n[0]:(0,u.jsx)(f,{ownerState:C,className:N.fallback}),(0,u.jsx)(m,{as:d,className:(0,o.A)(N.root,c),ref:a,...S,ownerState:C,children:M})}))},28375:(r,a,e)=>{e.d(a,{A:()=>n,k:()=>s});var t=e(33761),o=e(85693);function s(r){return(0,o.Ay)("MuiAvatar",r)}const n=(0,t.A)("MuiAvatar",["root","colorDefault","circular","rounded","square","img","fallback"])},34902:(r,a,e)=>{e.r(a),e.d(a,{avatarGroupClasses:()=>m,default:()=>y,getAvatarGroupUtilityClass:()=>v});var t=e(7552),o=(e(19487),e(93878)),s=e(70799),n=e(51148),l=e(60129),i=e(4785),c=e(28375),u=e(83162),d=e(33761),p=e(85693);function v(r){return(0,p.Ay)("MuiAvatarGroup",r)}const m=(0,d.A)("MuiAvatarGroup",["root","avatar"]);var g=e(43045),f=e(69500);const A={small:-16,medium:-8},h=(0,n.Ay)("div",{name:"MuiAvatarGroup",slot:"Root",overridesResolver:(r,a)=>({[`& .${m.avatar}`]:a.avatar,...a.root})})((0,l.A)((({theme:r})=>({display:"flex",flexDirection:"row-reverse",[`& .${c.A.root}`]:{border:`2px solid ${(r.vars||r).palette.background.default}`,boxSizing:"content-box",marginLeft:"var(--AvatarGroup-spacing, -8px)","&:last-child":{marginLeft:0}}})))),y=t.forwardRef((function(r,a){const e=(0,i.b)({props:r,name:"MuiAvatarGroup"}),{children:n,className:l,component:c="div",componentsProps:d,max:p=5,renderSurplus:m,slotProps:y={},slots:b={},spacing:w="medium",total:x,variant:k="circular",...S}=e;let M=p<2?2:p;const R={...e,max:p,spacing:w,component:c,variant:k},P=(r=>{const{classes:a}=r;return(0,s.A)({root:["root"],avatar:["avatar"]},v,a)})(R),j=t.Children.toArray(n).filter((r=>t.isValidElement(r))),C=x||j.length;C===M&&(M+=1),M=Math.min(C+1,M);const N=Math.min(j.length,M-1),D=Math.max(C-M,C-N,0),G=m?m(D):`+${D}`,z=R.spacing&&void 0!==A[R.spacing]?A[R.spacing]:-R.spacing||-8,F={slots:b,slotProps:{surplus:y.additionalAvatar??d?.additionalAvatar,...d,...y}},[T,$]=(0,g.A)("surplus",{elementType:u.A,externalForwardedProps:F,className:P.avatar,ownerState:R,additionalProps:{variant:k,style:{"--AvatarRoot-spacing":z?`${z}px`:void 0,...S.style}}});return(0,f.jsxs)(h,{as:c,ownerState:R,className:(0,o.A)(P.root,l),ref:a,...S,children:[D?(0,f.jsx)(T,{...$,children:G}):null,j.slice(0,N).reverse().map((r=>t.cloneElement(r,{className:(0,o.A)(r.props.className,P.avatar),variant:r.props.variant||k})))]})}))}}]);
+//# sourceMappingURL=4902.452e575b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4902.452e575b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4902.452e575b.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/svg-icons/Person.js","../../../node_modules/@mui/material/Avatar/Avatar.js","../../../node_modules/@mui/material/Avatar/avatarClasses.js","../../../node_modules/@mui/material/AvatarGroup/avatarGroupClasses.js","../../../node_modules/@mui/material/AvatarGroup/AvatarGroup.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Person from \"../internal/svg-icons/Person.js\";\nimport { getAvatarUtilityClass } from \"./avatarClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    colorDefault\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, colorDefault && 'colorDefault'],\n    img: ['img'],\n    fallback: ['fallback']\n  };\n  return composeClasses(slots, getAvatarUtilityClass, classes);\n};\nconst AvatarRoot = styled('div', {\n  name: 'MuiAvatar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  flexShrink: 0,\n  width: 40,\n  height: 40,\n  fontFamily: theme.typography.fontFamily,\n  fontSize: theme.typography.pxToRem(20),\n  lineHeight: 1,\n  borderRadius: '50%',\n  overflow: 'hidden',\n  userSelect: 'none',\n  variants: [{\n    props: {\n      variant: 'rounded'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'square'\n    },\n    style: {\n      borderRadius: 0\n    }\n  }, {\n    props: {\n      colorDefault: true\n    },\n    style: {\n      color: (theme.vars || theme).palette.background.default,\n      ...(theme.vars ? {\n        backgroundColor: theme.vars.palette.Avatar.defaultBg\n      } : {\n        backgroundColor: theme.palette.grey[400],\n        ...theme.applyStyles('dark', {\n          backgroundColor: theme.palette.grey[600]\n        })\n      })\n    }\n  }]\n})));\nconst AvatarImg = styled('img', {\n  name: 'MuiAvatar',\n  slot: 'Img',\n  overridesResolver: (props, styles) => styles.img\n})({\n  width: '100%',\n  height: '100%',\n  textAlign: 'center',\n  // Handle non-square image.\n  objectFit: 'cover',\n  // Hide alt text.\n  color: 'transparent',\n  // Hide the image broken icon, only works on Chrome.\n  textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n  name: 'MuiAvatar',\n  slot: 'Fallback',\n  overridesResolver: (props, styles) => styles.fallback\n})({\n  width: '75%',\n  height: '75%'\n});\nfunction useLoaded({\n  crossOrigin,\n  referrerPolicy,\n  src,\n  srcSet\n}) {\n  const [loaded, setLoaded] = React.useState(false);\n  React.useEffect(() => {\n    if (!src && !srcSet) {\n      return undefined;\n    }\n    setLoaded(false);\n    let active = true;\n    const image = new Image();\n    image.onload = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('loaded');\n    };\n    image.onerror = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('error');\n    };\n    image.crossOrigin = crossOrigin;\n    image.referrerPolicy = referrerPolicy;\n    image.src = src;\n    if (srcSet) {\n      image.srcset = srcSet;\n    }\n    return () => {\n      active = false;\n    };\n  }, [crossOrigin, referrerPolicy, src, srcSet]);\n  return loaded;\n}\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAvatar'\n  });\n  const {\n    alt,\n    children: childrenProp,\n    className,\n    component = 'div',\n    slots = {},\n    slotProps = {},\n    imgProps,\n    sizes,\n    src,\n    srcSet,\n    variant = 'circular',\n    ...other\n  } = props;\n  let children = null;\n\n  // Use a hook instead of onError on the img element to support server-side rendering.\n  const loaded = useLoaded({\n    ...imgProps,\n    src,\n    srcSet\n  });\n  const hasImg = src || srcSet;\n  const hasImgNotFailing = hasImg && loaded !== 'error';\n  const ownerState = {\n    ...props,\n    colorDefault: !hasImgNotFailing,\n    component,\n    variant\n  };\n  // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184\n  delete ownerState.ownerState;\n  const classes = useUtilityClasses(ownerState);\n  const [ImgSlot, imgSlotProps] = useSlot('img', {\n    className: classes.img,\n    elementType: AvatarImg,\n    externalForwardedProps: {\n      slots,\n      slotProps: {\n        img: {\n          ...imgProps,\n          ...slotProps.img\n        }\n      }\n    },\n    additionalProps: {\n      alt,\n      src,\n      srcSet,\n      sizes\n    },\n    ownerState\n  });\n  if (hasImgNotFailing) {\n    children = /*#__PURE__*/_jsx(ImgSlot, {\n      ...imgSlotProps\n    });\n    // We only render valid children, non valid children are rendered with a fallback\n    // We consider that invalid children are all falsy values, except 0, which is valid.\n  } else if (!!childrenProp || childrenProp === 0) {\n    children = childrenProp;\n  } else if (hasImg && alt) {\n    children = alt[0];\n  } else {\n    children = /*#__PURE__*/_jsx(AvatarFallback, {\n      ownerState: ownerState,\n      className: classes.fallback\n    });\n  }\n  return /*#__PURE__*/_jsx(AvatarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    ownerState: ownerState,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Used in combination with `src` or `srcSet` to\n   * provide an alt attribute for the rendered `img` element.\n   */\n  alt: PropTypes.string,\n  /**\n   * Used to render icon or text elements inside the Avatar if `src` is not set.\n   * This can be an element, or just a string.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n   * It can be used to listen for the loading error event.\n   */\n  imgProps: PropTypes.object,\n  /**\n   * The `sizes` attribute for the `img` element.\n   */\n  sizes: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    img: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    img: PropTypes.elementType\n  }),\n  /**\n   * The `src` attribute for the `img` element.\n   */\n  src: PropTypes.string,\n  /**\n   * The `srcSet` attribute for the `img` element.\n   * Use this attribute for responsive image display.\n   */\n  srcSet: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The shape of the avatar.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAvatarGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatarGroup', slot);\n}\nconst avatarGroupClasses = generateUtilityClasses('MuiAvatarGroup', ['root', 'avatar']);\nexport default avatarGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { isFragment } from 'react-is';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Avatar, { avatarClasses } from \"../Avatar/index.js\";\nimport avatarGroupClasses, { getAvatarGroupUtilityClass } from \"./avatarGroupClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SPACINGS = {\n  small: -16,\n  medium: -8\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    avatar: ['avatar']\n  };\n  return composeClasses(slots, getAvatarGroupUtilityClass, classes);\n};\nconst AvatarGroupRoot = styled('div', {\n  name: 'MuiAvatarGroup',\n  slot: 'Root',\n  overridesResolver: (props, styles) => ({\n    [`& .${avatarGroupClasses.avatar}`]: styles.avatar,\n    ...styles.root\n  })\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row-reverse',\n  [`& .${avatarClasses.root}`]: {\n    border: `2px solid ${(theme.vars || theme).palette.background.default}`,\n    boxSizing: 'content-box',\n    marginLeft: 'var(--AvatarGroup-spacing, -8px)',\n    '&:last-child': {\n      marginLeft: 0\n    }\n  }\n})));\nconst AvatarGroup = /*#__PURE__*/React.forwardRef(function AvatarGroup(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAvatarGroup'\n  });\n  const {\n    children: childrenProp,\n    className,\n    component = 'div',\n    componentsProps,\n    max = 5,\n    renderSurplus,\n    slotProps = {},\n    slots = {},\n    spacing = 'medium',\n    total,\n    variant = 'circular',\n    ...other\n  } = props;\n  let clampedMax = max < 2 ? 2 : max;\n  const ownerState = {\n    ...props,\n    max,\n    spacing,\n    component,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const children = React.Children.toArray(childrenProp).filter(child => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The AvatarGroup component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    return /*#__PURE__*/React.isValidElement(child);\n  });\n  const totalAvatars = total || children.length;\n  if (totalAvatars === clampedMax) {\n    clampedMax += 1;\n  }\n  clampedMax = Math.min(totalAvatars + 1, clampedMax);\n  const maxAvatars = Math.min(children.length, clampedMax - 1);\n  const extraAvatars = Math.max(totalAvatars - clampedMax, totalAvatars - maxAvatars, 0);\n  const extraAvatarsElement = renderSurplus ? renderSurplus(extraAvatars) : `+${extraAvatars}`;\n  const marginValue = ownerState.spacing && SPACINGS[ownerState.spacing] !== undefined ? SPACINGS[ownerState.spacing] : -ownerState.spacing || -8;\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      surplus: slotProps.additionalAvatar ?? componentsProps?.additionalAvatar,\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [SurplusSlot, surplusProps] = useSlot('surplus', {\n    elementType: Avatar,\n    externalForwardedProps,\n    className: classes.avatar,\n    ownerState,\n    additionalProps: {\n      variant,\n      style: {\n        '--AvatarRoot-spacing': marginValue ? `${marginValue}px` : undefined,\n        ...other.style\n      }\n    }\n  });\n  return /*#__PURE__*/_jsxs(AvatarGroupRoot, {\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    children: [extraAvatars ? /*#__PURE__*/_jsx(SurplusSlot, {\n      ...surplusProps,\n      children: extraAvatarsElement\n    }) : null, children.slice(0, maxAvatars).reverse().map(child => {\n      return /*#__PURE__*/React.cloneElement(child, {\n        className: clsx(child.props.className, classes.avatar),\n        variant: child.props.variant || variant\n      });\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AvatarGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The avatars to stack.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    additionalAvatar: PropTypes.object\n  }),\n  /**\n   * Max avatars to show before +x.\n   * @default 5\n   */\n  max: chainPropTypes(PropTypes.number, props => {\n    if (props.max < 2) {\n      return new Error(['MUI: The prop `max` should be equal to 2 or above.', 'A value below is clamped to 2.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * custom renderer of extraAvatars\n   * @param {number} surplus number of extra avatars\n   * @returns {React.ReactNode} custom element to display\n   */\n  renderSurplus: PropTypes.func,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    additionalAvatar: PropTypes.object,\n    surplus: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    surplus: PropTypes.elementType\n  }),\n  /**\n   * Spacing between avatars.\n   * @default 'medium'\n   */\n  spacing: PropTypes.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.number]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The total number of avatars. Used for calculating the number of extra avatars.\n   * @default children.length\n   */\n  total: PropTypes.number,\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default AvatarGroup;"],"names":["createSvgIcon","d","AvatarRoot","styled","name","slot","overridesResolver","props","styles","ownerState","root","variant","colorDefault","memoTheme","theme","position","display","alignItems","justifyContent","flexShrink","width","height","fontFamily","typography","fontSize","pxToRem","lineHeight","borderRadius","overflow","userSelect","variants","style","vars","shape","color","palette","background","default","backgroundColor","Avatar","defaultBg","grey","applyStyles","AvatarImg","img","textAlign","objectFit","textIndent","AvatarFallback","Person","fallback","inProps","ref","alt","children","childrenProp","className","component","slots","slotProps","imgProps","sizes","src","srcSet","other","loaded","crossOrigin","referrerPolicy","setLoaded","active","image","Image","onload","onerror","srcset","useLoaded","hasImg","hasImgNotFailing","classes","composeClasses","useUtilityClasses","ImgSlot","imgSlotProps","useSlot","elementType","externalForwardedProps","additionalProps","as","clsx","getAvatarUtilityClass","getAvatarGroupUtilityClass","generateUtilityClass","generateUtilityClasses","SPACINGS","small","medium","AvatarGroupRoot","avatar","flexDirection","avatarClasses","border","boxSizing","marginLeft","componentsProps","max","renderSurplus","spacing","total","clampedMax","toArray","filter","child","totalAvatars","length","Math","min","maxAvatars","extraAvatars","extraAvatarsElement","marginValue","undefined","surplus","additionalAvatar","SurplusSlot","surplusProps","A","slice","reverse","map"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/491.0011d1ad.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[491,6833],{86833:(e,t,s)=>{s.r(t),s.d(t,{default:()=>f,makeFeatures:()=>u});var r=s(46377),a=s(6434),n=s(66885),o=s(68584);function u(e){const t=new Map;for(const s of e){const e=new a.A(s),r=e.get("refName");let n=t.get(r);n||(n=[],t.set(r,n)),n.push(e)}for(const e of t.values())e.sort(((e,t)=>e.get("start")-t.get("start")));return t}class f extends r.BaseFeatureDataAdapter{constructor(e,t,s){super(e,t,s);const r=(0,o.readConfObject)(e,"features");this.features=u(r)}async getRefNames(){return[...this.features.keys()]}async getRefNameAliases(){return[...this.features.values()].map((e=>({refName:e[0].get("refName"),aliases:e[0].get("aliases")})))}getFeatures(e){const{refName:t,start:s,end:r}=e;return(0,n.ObservableCreate)((async e=>{const a=this.features.get(t)||[];for(const t of a)t.get("end")>s&&t.get("start")<r&&e.next(t);e.complete()}))}freeResources(){}}},80491:(e,t,s)=>{s.r(t),s.d(t,{default:()=>o});var r=s(46377),a=s(68584),n=s(86833);class o extends r.BaseAdapter{constructor(e,t,s){super(e,t,s);const r=(0,a.readConfObject)(e,"features");this.features=(0,n.makeFeatures)(r)}async getRegions(){const e=[];for(const[t,s]of this.features){let r;for(const a of s)r&&r.end>=a.get("start")&&r.start<=a.get("end")?r.end=a.get("end"):(r&&e.push(r),r={refName:t,start:a.get("start"),end:a.get("end")});r&&e.push(r)}return e.sort(((e,t)=>e.refName.localeCompare(t.refName))),e}freeResources(){}}}}]);
+//# sourceMappingURL=491.0011d1ad.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/491.0011d1ad.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/491.0011d1ad.chunk.js","mappings":"6NAcO,SAASA,EAAaC,GAC3B,MAAMC,EAAW,IAAIC,IACrB,IAAK,MAAMC,KAASH,EAAO,CACzB,MAAMI,EAAI,IAAIC,EAAAA,EAAcF,GACtBG,EAAUF,EAAEG,IAAI,WACtB,IAAIC,EAASP,EAASM,IAAID,GACrBE,IACHA,EAAS,GACTP,EAASQ,IAAIH,EAASE,IAGxBA,EAAOE,KAAKN,EACd,CAGA,IAAK,MAAMO,KAAeV,EAASW,SACjCD,EAAYE,MAAK,CAACC,EAAGC,IAAMD,EAAEP,IAAI,SAAWQ,EAAER,IAAI,WAGpD,OAAON,CACT,CAEe,MAAMe,UAA0BC,EAAAA,uBAG7CC,WAAAA,CACEC,EACAC,EACAC,GAEAC,MAAMH,EAAMC,EAAeC,GAC3B,MAAME,GAAQC,EAAAA,EAAAA,gBAAeL,EAAM,YACnCM,KAAKxB,SAAWF,EAAawB,EAC/B,CAEA,iBAAMG,GACJ,MAAO,IAAID,KAAKxB,SAAS0B,OAC3B,CAEA,uBAAMC,GACJ,MAAO,IAAIH,KAAKxB,SAASW,UAAUiB,KAAIC,IAAgB,CACrDxB,QAASwB,EAAa,GAAIvB,IAAI,WAC9BwB,QAASD,EAAa,GAAIvB,IAAI,cAElC,CAEAyB,WAAAA,CAAYC,GACV,MAAM,QAAE3B,EAAO,MAAE4B,EAAK,IAAEC,GAAQF,EAEhC,OAAOG,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAMpC,EAAWwB,KAAKxB,SAASM,IAAID,IAAY,GAC/C,IAAK,MAAMF,KAAKH,EACVG,EAAEG,IAAI,OAAS2B,GAAS9B,EAAEG,IAAI,SAAW4B,GAC3CG,EAASC,KAAKnC,GAGlBkC,EAASE,UAAU,GAEvB,CAEAC,aAAAA,GAAuC,E,qFCrD1B,MAAMC,UACXC,EAAAA,YAKRzB,WAAAA,CACE0B,EACAxB,EACAC,GAEAC,MAAMsB,EAAQxB,EAAeC,GAC7B,MAAMjB,GAAIoB,EAAAA,EAAAA,gBAAeoB,EAAQ,YACjCnB,KAAKxB,UAAWF,EAAAA,EAAAA,cAAaK,EAC/B,CAKA,gBAAMyC,GACJ,MAAMC,EAAU,GAGhB,IAAK,MAAOxC,EAASL,KAAawB,KAAKxB,SAAU,CAC/C,IAAI8C,EAGJ,IAAK,MAAMC,KAAW/C,EAElB8C,GACAA,EAAcZ,KAAOa,EAAQzC,IAAI,UACjCwC,EAAcb,OAASc,EAAQzC,IAAI,OAEnCwC,EAAcZ,IAAMa,EAAQzC,IAAI,QAE5BwC,GACFD,EAAQpC,KAAKqC,GAEfA,EAAgB,CACdzC,UACA4B,MAAOc,EAAQzC,IAAI,SACnB4B,IAAKa,EAAQzC,IAAI,SAInBwC,GACFD,EAAQpC,KAAKqC,EAEjB,CAKA,OAFAD,EAAQjC,MAAK,CAACC,EAAGC,IAAMD,EAAER,QAAQ2C,cAAclC,EAAET,WAE1CwC,CACT,CAEAL,aAAAA,GAAuC,E","sources":["../../../plugins/config/src/FromConfigAdapter/FromConfigAdapter.ts","../../../plugins/config/src/FromConfigRegionsAdapter/FromConfigRegionsAdapter.ts"],"sourcesContent":["import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport SimpleFeature, {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nexport function makeFeatures(fdata: SimpleFeatureSerialized[]) {\n  const features = new Map<string, Feature[]>()\n  for (const entry of fdata) {\n    const f = new SimpleFeature(entry)\n    const refName = f.get('refName') as string\n    let bucket = features.get(refName)\n    if (!bucket) {\n      bucket = []\n      features.set(refName, bucket)\n    }\n\n    bucket.push(f)\n  }\n\n  // sort the features on each reference sequence by start coordinate\n  for (const refFeatures of features.values()) {\n    refFeatures.sort((a, b) => a.get('start') - b.get('start'))\n  }\n\n  return features\n}\n\nexport default class FromConfigAdapter extends BaseFeatureDataAdapter {\n  protected features: Map<string, Feature[]>\n\n  constructor(\n    conf: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(conf, getSubAdapter, pluginManager)\n    const feats = readConfObject(conf, 'features') as SimpleFeatureSerialized[]\n    this.features = makeFeatures(feats)\n  }\n\n  async getRefNames() {\n    return [...this.features.keys()]\n  }\n\n  async getRefNameAliases() {\n    return [...this.features.values()].map(featureArray => ({\n      refName: featureArray[0]!.get('refName'),\n      aliases: featureArray[0]!.get('aliases'),\n    }))\n  }\n\n  getFeatures(region: NoAssemblyRegion) {\n    const { refName, start, end } = region\n\n    return ObservableCreate<Feature>(async observer => {\n      const features = this.features.get(refName) || []\n      for (const f of features) {\n        if (f.get('end') > start && f.get('start') < end) {\n          observer.next(f)\n        }\n      }\n      observer.complete()\n    })\n  }\n\n  freeResources(/* { region } */): void {}\n}\n","import {\n  BaseAdapter,\n  RegionsAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { makeFeatures } from '../FromConfigAdapter/FromConfigAdapter'\n\n/**\n * Adapter that just returns the features defined in its `features` configuration\n * key, like:\n *   `\"features\": [ { \"refName\": \"ctgA\", \"start\":1, \"end\":20 }, ... ]`\n */\nexport default class FromConfigRegionsAdapter\n  extends BaseAdapter\n  implements RegionsAdapter\n{\n  private features: Map<string, Feature[]>\n\n  constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const f = readConfObject(config, 'features') as SimpleFeatureSerialized[]\n    this.features = makeFeatures(f)\n  }\n\n  /**\n   * Get refName, start, and end for all features after collapsing any overlaps\n   */\n  async getRegions() {\n    const regions = []\n\n    // recall: features are stored in this object sorted by start coordinate\n    for (const [refName, features] of this.features) {\n      let currentRegion:\n        | { refName: string; start: number; end: number }\n        | undefined\n      for (const feature of features) {\n        if (\n          currentRegion &&\n          currentRegion.end >= feature.get('start') &&\n          currentRegion.start <= feature.get('end')\n        ) {\n          currentRegion.end = feature.get('end')\n        } else {\n          if (currentRegion) {\n            regions.push(currentRegion)\n          }\n          currentRegion = {\n            refName,\n            start: feature.get('start'),\n            end: feature.get('end'),\n          }\n        }\n      }\n      if (currentRegion) {\n        regions.push(currentRegion)\n      }\n    }\n\n    // sort the regions by refName\n    regions.sort((a, b) => a.refName.localeCompare(b.refName))\n\n    return regions\n  }\n\n  freeResources(/* { region } */): void {}\n}\n"],"names":["makeFeatures","fdata","features","Map","entry","f","SimpleFeature","refName","get","bucket","set","push","refFeatures","values","sort","a","b","FromConfigAdapter","BaseFeatureDataAdapter","constructor","conf","getSubAdapter","pluginManager","super","feats","readConfObject","this","getRefNames","keys","getRefNameAliases","map","featureArray","aliases","getFeatures","region","start","end","ObservableCreate","async","observer","next","complete","freeResources","FromConfigRegionsAdapter","BaseAdapter","config","getRegions","regions","currentRegion","feature","localeCompare"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4947.2e80fd2d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4947],{34947:(e,s,t)=>{t.r(s),t.d(s,{default:()=>b,getNativeSelectUtilityClasses:()=>m.w,nativeSelectClasses:()=>m.A});var o=t(7552),n=t(93878),a=t(70799),r=t(39923),c=t(32498),i=t(33960),l=t(62646),p=t(60947),u=t(31049),m=t(72851),v=t(69500);const w=(0,v.jsx)(p.A,{}),A=o.forwardRef((function(e,s){const t=(0,u.A)({name:"MuiNativeSelect",props:e}),{className:p,children:A,classes:b={},IconComponent:h=l.A,input:C=w,inputProps:d,variant:N,...f}=t,g=(0,i.A)(),j=(0,c.A)({props:t,muiFormControl:g,states:["variant"]}),k=(e=>{const{classes:s}=e;return(0,a.A)({root:["root"]},m.w,s)})({...t,classes:b}),{root:S,..._}=b;return(0,v.jsx)(o.Fragment,{children:o.cloneElement(C,{inputComponent:r.Ay,inputProps:{children:A,classes:_,IconComponent:h,variant:j.variant,type:void 0,...d,...C?C.props.inputProps:{}},ref:s,...f,className:(0,n.A)(k.root,C.props.className,p)})})}));A.muiName="Select";const b=A}}]);
+//# sourceMappingURL=4947.2e80fd2d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4947.2e80fd2d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4947.2e80fd2d.chunk.js","mappings":"qVAcA,MASMA,GAA4B,SAAKC,EAAA,EAAO,CAAC,GAIzCC,EAA4B,cAAiB,SAAsBC,EAASC,GAChF,MAAMC,GAAQ,EAAAC,EAAA,GAAc,CAC1BC,KAAM,kBACNF,MAAOF,KAEH,UACJK,EAAS,SACTC,EACAC,QAASC,EAAc,CAAC,EAAC,cACzBC,EAAgBC,EAAAC,EAAiB,MACjCC,EAAQf,EAAY,WACpBgB,EAAU,QACVC,KACGC,GACDb,EACEc,GAAiB,EAAAC,EAAA,KACjBC,GAAM,EAAAC,EAAA,GAAiB,CAC3BjB,QACAc,iBACAI,OAAQ,CAAC,aAMLb,EAtCkBc,KACxB,MAAM,QACJd,GACEc,EAIJ,OAAO,EAAAC,EAAA,GAHO,CACZC,KAAM,CAAC,SAEoB,IAA+BhB,EAAQ,EA+BpDiB,CAJG,IACdtB,EACHK,QAASC,KAGL,KACJe,KACGE,GACDjB,EACJ,OAAoB,SAAK,WAAgB,CACvCF,SAAuB,eAAmBM,EAAO,CAG/Cc,eAAgBC,EAAA,GAChBd,WAAY,CACVP,WACAC,QAASkB,EACThB,gBACAK,QAASI,EAAIJ,QACbc,UAAMC,KAEHhB,KACCD,EAAQA,EAAMV,MAAMW,WAAa,CAAC,GAExCZ,SACGc,EACHV,WAAW,EAAAyB,EAAA,GAAKvB,EAAQgB,KAAMX,EAAMV,MAAMG,UAAWA,MAG3D,IAsDAN,EAAagC,QAAU,SACvB,S","sources":["../../../node_modules/@mui/material/NativeSelect/NativeSelect.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport NativeSelectInput from \"./NativeSelectInput.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport ArrowDropDownIcon from \"../internal/svg-icons/ArrowDropDown.js\";\nimport Input from \"../Input/index.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nimport { getNativeSelectUtilityClasses } from \"./nativeSelectClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nconst defaultInput = /*#__PURE__*/_jsx(Input, {});\n/**\n * An alternative to `<Select native />` with a much smaller bundle size footprint.\n */\nconst NativeSelect = /*#__PURE__*/React.forwardRef(function NativeSelect(inProps, ref) {\n  const props = useThemeProps({\n    name: 'MuiNativeSelect',\n    props: inProps\n  });\n  const {\n    className,\n    children,\n    classes: classesProp = {},\n    IconComponent = ArrowDropDownIcon,\n    input = defaultInput,\n    inputProps,\n    variant,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant']\n  });\n  const ownerState = {\n    ...props,\n    classes: classesProp\n  };\n  const classes = useUtilityClasses(ownerState);\n  const {\n    root,\n    ...otherClasses\n  } = classesProp;\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(input, {\n      // Most of the logic is implemented in `NativeSelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent: NativeSelectInput,\n      inputProps: {\n        children,\n        classes: otherClasses,\n        IconComponent,\n        variant: fcs.variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        ...inputProps,\n        ...(input ? input.props.inputProps : {})\n      },\n      ref,\n      ...other,\n      className: clsx(classes.root, input.props.className, className)\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelect.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   * @default <Input />\n   */\n  input: PropTypes.element,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attributes) applied to the `select` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {React.ChangeEvent<HTMLSelectElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The `input` value. The DOM API casts this to a string.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nNativeSelect.muiName = 'Select';\nexport default NativeSelect;"],"names":["defaultInput","Input","NativeSelect","inProps","ref","props","useThemeProps","name","className","children","classes","classesProp","IconComponent","ArrowDropDown","A","input","inputProps","variant","other","muiFormControl","useFormControl","fcs","formControlState","states","ownerState","composeClasses","root","useUtilityClasses","otherClasses","inputComponent","NativeSelectInput","type","undefined","clsx","muiName"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4974.cf97ef5b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[4974],{74974:(e,r,n)=>{n.r(r),n.d(r,{default:()=>u});var t=n(7552),o=n(68446),a=n(99546),l=n(75785),s=n(36715),i=n(87731);const c=(0,l.n9)()((e=>({root:{margin:e.spacing(2)},subtitle:{margin:e.spacing(1)}}))),u=(0,o.observer)((function({model:e}){const{classes:r}=c(),n=e?(0,a.getSession)(e):{version:""};return t.createElement("div",{className:r.root},t.createElement(s.A,{variant:"h4",align:"center"},"JBrowse 2"),t.createElement(s.A,{variant:"h6",align:"center",className:r.subtitle},n.version),t.createElement(s.A,null,"Here are some resources to get help. Please report the version number above when asking questions. Thanks!"),t.createElement("ul",null,t.createElement("li",null,t.createElement(i.A,{href:"https://github.com/GMOD/jbrowse-components/discussions",target:"_blank",rel:"noopener noreferrer"},"Question & answer forum")),t.createElement("li",null,t.createElement(i.A,{href:"https://github.com/GMOD/jbrowse-components/issues/new/choose",target:"_blank",rel:"noopener noreferrer"},"Report a bug")),t.createElement("li",null,t.createElement(i.A,{href:"https://jbrowse.org/jb2/docs/user_guide",target:"_blank",rel:"noopener noreferrer"},"User guide")),t.createElement("li",null,t.createElement(i.A,{href:"https://jbrowse.org/jb2/docs/",target:"_blank",rel:"noopener noreferrer"},"Documentation"))))}))},87731:(e,r,n)=>{n.d(r,{A:()=>f});var t=n(7552),o=n(93878),a=n(72639),l=n(70799),s=n(91527),i=n(15622),c=n(51148),u=n(48231),p=n(60129),d=n(58520),b=n(4785),m=n(36715),h=n(58161),y=n(39995);const g=({theme:e,ownerState:r})=>{const n=r.color,t=(0,y.Yn)(e,`palette.${n}`,!1)||r.color,o=(0,y.Yn)(e,`palette.${n}Channel`);return"vars"in e&&o?`rgba(${o} / 0.4)`:(0,a.X4)(t,.4)};var v=n(69500);const w={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},A=(0,c.Ay)(m.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:n}=e;return[r.root,r[`underline${(0,i.A)(n.underline)}`],"button"===n.component&&r.button]}})((0,p.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:r})=>"always"===e&&"inherit"!==r.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{underline:"always",color:r},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[r].mainChannel} / 0.4)`:(0,a.X4)(e.palette[r].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${h.A.focusVisible}`]:{outline:"auto"}}}]})))),f=t.forwardRef((function(e,r){const n=(0,b.b)({props:e,name:"MuiLink"}),a=(0,u.A)(),{className:c,color:p="primary",component:d="a",onBlur:m,onFocus:y,TypographyClasses:f,underline:k="always",variant:x="inherit",sx:C,...E}=n,[D,S]=t.useState(!1),j={...n,color:p,component:d,focusVisible:D,underline:k,variant:x},L=(e=>{const{classes:r,component:n,focusVisible:t,underline:o}=e,a={root:["root",`underline${(0,i.A)(o)}`,"button"===n&&"button",t&&"focusVisible"]};return(0,l.A)(a,h.t,r)})(j);return(0,v.jsx)(A,{color:p,className:(0,o.A)(L.root,c),classes:f,component:d,onBlur:e=>{(0,s.A)(e.target)||S(!1),m&&m(e)},onFocus:e=>{(0,s.A)(e.target)&&S(!0),y&&y(e)},ref:r,ownerState:j,variant:x,...E,sx:[...void 0===w[p]?[{color:p}]:[],...Array.isArray(C)?C:[C]],style:{...E.style,..."always"===k&&"inherit"!==p&&!w[p]&&{"--Link-underlineColor":g({theme:a,ownerState:j})}}})}))},58161:(e,r,n)=>{n.d(r,{A:()=>l,t:()=>a});var t=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiLink",e)}const l=(0,t.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])}}]);
+//# sourceMappingURL=4974.cf97ef5b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/4974.cf97ef5b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/4974.cf97ef5b.chunk.js","mappings":"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","sources":["../../../plugins/menus/src/HelpWidget/components/HelpWidget.tsx","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport { getSession } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\nimport { Link, Typography } from '@mui/material'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(2),\n  },\n  subtitle: {\n    margin: theme.spacing(1),\n  },\n}))\n\nconst HelpWidget = observer(function Help({\n  model,\n}: {\n  model?: IAnyStateTreeNode\n}) {\n  const { classes } = useStyles()\n  const root = model ? getSession(model) : { version: '' }\n  return (\n    <div className={classes.root}>\n      <Typography variant=\"h4\" align=\"center\">\n        JBrowse 2\n      </Typography>\n      <Typography variant=\"h6\" align=\"center\" className={classes.subtitle}>\n        {root.version}\n      </Typography>\n\n      <Typography>\n        Here are some resources to get help. Please report the version number\n        above when asking questions. Thanks!\n      </Typography>\n      <ul>\n        <li>\n          <Link\n            href=\"https://github.com/GMOD/jbrowse-components/discussions\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            Question & answer forum\n          </Link>\n        </li>\n        <li>\n          <Link\n            href=\"https://github.com/GMOD/jbrowse-components/issues/new/choose\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            Report a bug\n          </Link>\n        </li>\n        <li>\n          <Link\n            href=\"https://jbrowse.org/jb2/docs/user_guide\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            User guide\n          </Link>\n        </li>\n        <li>\n          <Link\n            href=\"https://jbrowse.org/jb2/docs/\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            Documentation\n          </Link>\n        </li>\n      </ul>\n    </div>\n  )\n})\n\nexport default HelpWidget\n","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;"],"names":["useStyles","makeStyles","theme","root","margin","spacing","subtitle","observer","model","classes","getSession","version","React","className","Typography","variant","align","Link","href","target","rel","ownerState","transformedColor","color","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","name","slot","overridesResolver","props","styles","capitalize","underline","component","button","memoTheme","variants","style","textDecoration","textDecorationColor","Object","entries","palette","filter","createSimplePaletteValueFilter","map","vars","mainChannel","main","text","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","inProps","ref","useTheme","onBlur","onFocus","TypographyClasses","sx","other","setFocusVisible","slots","composeClasses","useUtilityClasses","clsx","event","isFocusVisible","undefined","Array","isArray","getLinkUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5008.f8d32f92.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5008,8341,722,5484,7865,246,2627],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=5008.f8d32f92.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5008.f8d32f92.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5008.f8d32f92.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5031.6eccfd35.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5031,8341,722,5484,7865,246,2627,5008],{25762:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},91194:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"GetApp")},922:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu")},550:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z"}),"Publish")},22168:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},37702:(r,e,t)=>{t.d(e,{A:()=>a});var n=t(74893),o=t(69500);const a=(0,n.A)((0,o.jsx)("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"}),"Share")},84885:(r,e,t)=>{t.d(e,{A:()=>f});var n=t(7552),o=t(93878),a=t(43583),i=t(70799),s=t(1045);var l=t(51148),c=t(60129),d=t(58520),p=t(4785),u=t(15622),g=t(47839),h=t(69500);const v=(0,l.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(r,e)=>e.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),m=(0,l.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.badge,e[t.variant],e[`anchorOrigin${(0,u.A)(t.anchorOrigin.vertical)}${(0,u.A)(t.anchorOrigin.horizontal)}${(0,u.A)(t.overlap)}`],"default"!==t.color&&e[`color${(0,u.A)(t.color)}`],t.invisible&&e.invisible]}})((0,c.A)((({theme:r})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:r.typography.fontFamily,fontWeight:r.typography.fontWeightMedium,fontSize:r.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.enteringScreen}),variants:[...Object.entries(r.palette).filter((0,d.A)(["contrastText"])).map((([e])=>({props:{color:e},style:{backgroundColor:(r.vars||r).palette[e].main,color:(r.vars||r).palette[e].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.leavingScreen})}}]})))),f=n.forwardRef((function(r,e){const t=(0,p.b)({props:r,name:"MuiBadge"}),{anchorOrigin:n={vertical:"top",horizontal:"right"},className:l,classes:c,component:d,components:f={},componentsProps:b={},children:A,overlap:y="rectangular",color:x="default",invisible:w=!1,max:O=99,badgeContent:S,slots:k,slotProps:C,showZero:R=!1,variant:$="standard",...M}=t,{badgeContent:z,invisible:L,max:T,displayValue:j}=function(r){const{badgeContent:e,invisible:t=!1,max:n=99,showZero:o=!1}=r,i=(0,a.A)({badgeContent:e,max:n});let s=t;!1!==t||0!==e||o||(s=!0);const{badgeContent:l,max:c=n}=s?i:r;return{badgeContent:l,invisible:s,max:c,displayValue:l&&Number(l)>c?`${c}+`:l}}({max:O,invisible:w,badgeContent:S,showZero:R}),P=(0,a.A)({anchorOrigin:n,color:x,overlap:y,variant:$,badgeContent:S}),D=L||null==z&&"dot"!==$,{color:E=x,overlap:B=y,anchorOrigin:N=n,variant:H=$}=D?P:t,V="dot"!==H?j:void 0,W={...t,badgeContent:z,invisible:D,max:T,displayValue:V,showZero:R,anchorOrigin:N,color:E,overlap:B,variant:H},F=(r=>{const{color:e,anchorOrigin:t,invisible:n,overlap:o,variant:a,classes:s={}}=r,l={root:["root"],badge:["badge",a,n&&"invisible",`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}`,`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}${(0,u.A)(o)}`,`overlap${(0,u.A)(o)}`,"default"!==e&&`color${(0,u.A)(e)}`]};return(0,i.A)(l,g.w,s)})(W),I=k?.root??f.Root??v,G=k?.badge??f.Badge??m,X=C?.root??b.root,Z=C?.badge??b.badge,_=(0,s.A)({elementType:I,externalSlotProps:X,externalForwardedProps:M,additionalProps:{ref:e,as:d},ownerState:W,className:(0,o.A)(X?.className,F.root,l)}),Y=(0,s.A)({elementType:G,externalSlotProps:Z,ownerState:W,className:(0,o.A)(F.badge,Z?.className)});return(0,h.jsxs)(I,{..._,children:[A,(0,h.jsx)(G,{...Y,children:V})]})}))},47839:(r,e,t)=>{t.d(e,{A:()=>i,w:()=>a});var n=t(33761),o=t(85693);function a(r){return(0,o.Ay)("MuiBadge",r)}const i=(0,n.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},59705:(r,e,t)=>{t.d(e,{A:()=>x});var n=t(7552),o=t(93878),a=t(70799),i=t(64761),s=t(51148),l=t(60129),c=t(4785),d=t(15622),p=t(58520),u=t(72489),g=t(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,v=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,m="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,f="string"!=typeof v?i.AH`
+        animation: ${v} 1.4s ease-in-out infinite;
+      `:null,b=(0,s.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[t.variant],e[`color${(0,d.A)(t.color)}`]]}})((0,l.A)((({theme:r})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:r.transitions.create("transform")}},{props:{variant:"indeterminate"},style:m||{animation:`${h} 1.4s linear infinite`}},...Object.entries(r.palette).filter((0,p.A)()).map((([e])=>({props:{color:e},style:{color:(r.vars||r).palette[e].main}})))]})))),A=(0,s.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(r,e)=>e.svg})({display:"block"}),y=(0,s.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.circle,e[`circle${(0,d.A)(t.variant)}`],t.disableShrink&&e.circleDisableShrink]}})((0,l.A)((({theme:r})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:r.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:r})=>"indeterminate"===r.variant&&!r.disableShrink,style:f||{animation:`${v} 1.4s ease-in-out infinite`}}]})))),x=n.forwardRef((function(r,e){const t=(0,c.b)({props:r,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:s=!1,size:l=40,style:p,thickness:h=3.6,value:v=0,variant:m="indeterminate",...f}=t,x={...t,color:i,disableShrink:s,size:l,thickness:h,value:v,variant:m},w=(r=>{const{classes:e,variant:t,color:n,disableShrink:o}=r,i={root:["root",t,`color${(0,d.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(t)}`,o&&"circleDisableShrink"]};return(0,a.A)(i,u.b,e)})(x),O={},S={},k={};if("determinate"===m){const r=2*Math.PI*((44-h)/2);O.strokeDasharray=r.toFixed(3),k["aria-valuenow"]=Math.round(v),O.strokeDashoffset=`${((100-v)/100*r).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,g.jsx)(b,{className:(0,o.A)(w.root,n),style:{width:l,height:l,...S,...p},ownerState:x,ref:e,role:"progressbar",...k,...f,children:(0,g.jsx)(A,{className:w.svg,ownerState:x,viewBox:"22 22 44 44",children:(0,g.jsx)(y,{className:w.circle,style:O,ownerState:x,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(r,e,t)=>{t.d(e,{A:()=>i,b:()=>a});var n=t(33761),o=t(85693);function a(r){return(0,o.Ay)("MuiCircularProgress",r)}const i=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(r,e,t)=>{t.d(e,{x:()=>d});var n=t(7552),o=t(29527),a=t(89887),i=t(99305),s=t(28325),l=t(69500);function c(r){return r.substring(2).toLowerCase()}function d(r){const{children:e,disableReactTree:t=!1,mouseEvent:d="onClick",onClickAway:p,touchEvent:u="onTouchEnd"}=r,g=n.useRef(!1),h=n.useRef(null),v=n.useRef(!1),m=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{v.current=!0}),0),()=>{v.current=!1})),[]);const f=(0,o.A)((0,s.A)(e),h),b=(0,a.A)((r=>{const e=m.current;m.current=!1;const n=(0,i.A)(h.current);if(!v.current||!h.current||"clientX"in r&&function(r,e){return e.documentElement.clientWidth<r.clientX||e.documentElement.clientHeight<r.clientY}(r,n))return;if(g.current)return void(g.current=!1);let o;o=r.composedPath?r.composedPath().includes(h.current):!n.documentElement.contains(r.target)||h.current.contains(r.target),o||!t&&e||p(r)})),A=r=>t=>{m.current=!0;const n=e.props[r];n&&n(t)},y={ref:f};return!1!==u&&(y[u]=A(u)),n.useEffect((()=>{if(!1!==u){const r=c(u),e=(0,i.A)(h.current),t=()=>{g.current=!0};return e.addEventListener(r,b),e.addEventListener("touchmove",t),()=>{e.removeEventListener(r,b),e.removeEventListener("touchmove",t)}}}),[b,u]),!1!==d&&(y[d]=A(d)),n.useEffect((()=>{if(!1!==d){const r=c(d),e=(0,i.A)(h.current);return e.addEventListener(r,b),()=>{e.removeEventListener(r,b)}}}),[b,d]),(0,l.jsx)(n.Fragment,{children:n.cloneElement(e,y)})}},87731:(r,e,t)=>{t.d(e,{A:()=>x});var n=t(7552),o=t(93878),a=t(72639),i=t(70799),s=t(91527),l=t(15622),c=t(51148),d=t(48231),p=t(60129),u=t(58520),g=t(4785),h=t(36715),v=t(58161),m=t(39995);const f=({theme:r,ownerState:e})=>{const t=e.color,n=(0,m.Yn)(r,`palette.${t}`,!1)||e.color,o=(0,m.Yn)(r,`palette.${t}Channel`);return"vars"in r&&o?`rgba(${o} / 0.4)`:(0,a.X4)(n,.4)};var b=t(69500);const A={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},y=(0,c.Ay)(h.A,{name:"MuiLink",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[`underline${(0,l.A)(t.underline)}`],"button"===t.component&&e.button]}})((0,p.A)((({theme:r})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:r,ownerState:e})=>"always"===r&&"inherit"!==e.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{underline:"always",color:e},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette[e].mainChannel} / 0.4)`:(0,a.X4)(r.palette[e].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(r.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(r.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(r.vars||r).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${v.A.focusVisible}`]:{outline:"auto"}}}]})))),x=n.forwardRef((function(r,e){const t=(0,g.b)({props:r,name:"MuiLink"}),a=(0,d.A)(),{className:c,color:p="primary",component:u="a",onBlur:h,onFocus:m,TypographyClasses:x,underline:w="always",variant:O="inherit",sx:S,...k}=t,[C,R]=n.useState(!1),$={...t,color:p,component:u,focusVisible:C,underline:w,variant:O},M=(r=>{const{classes:e,component:t,focusVisible:n,underline:o}=r,a={root:["root",`underline${(0,l.A)(o)}`,"button"===t&&"button",n&&"focusVisible"]};return(0,i.A)(a,v.t,e)})($);return(0,b.jsx)(y,{color:p,className:(0,o.A)(M.root,c),classes:x,component:u,onBlur:r=>{(0,s.A)(r.target)||R(!1),h&&h(r)},onFocus:r=>{(0,s.A)(r.target)&&R(!0),m&&m(r)},ref:e,ownerState:$,variant:O,...k,sx:[...void 0===A[p]?[{color:p}]:[],...Array.isArray(S)?S:[S]],style:{...k.style,..."always"===w&&"inherit"!==p&&!A[p]&&{"--Link-underlineColor":f({theme:a,ownerState:$})}}})}))},58161:(r,e,t)=>{t.d(e,{A:()=>i,t:()=>a});var n=t(33761),o=t(85693);function a(r){return(0,o.Ay)("MuiLink",r)}const i=(0,n.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])},17515:(r,e,t)=>{t.d(e,{A:()=>u});var n=t(7552),o=t(93878),a=t(70799),i=t(51148),s=t(60129),l=t(4785),c=t(89663),d=t(69500);const p=(0,i.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,!t.disableGutters&&e.gutters,e[t.variant]]}})((0,s.A)((({theme:r})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:r})=>!r.disableGutters,style:{paddingLeft:r.spacing(2),paddingRight:r.spacing(2),[r.breakpoints.up("sm")]:{paddingLeft:r.spacing(3),paddingRight:r.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:r.mixins.toolbar}]})))),u=n.forwardRef((function(r,e){const t=(0,l.b)({props:r,name:"MuiToolbar"}),{className:n,component:i="div",disableGutters:s=!1,variant:u="regular",...g}=t,h={...t,component:i,disableGutters:s,variant:u},v=(r=>{const{classes:e,disableGutters:t,variant:n}=r,o={root:["root",!t&&"gutters",n]};return(0,a.A)(o,c.U,e)})(h);return(0,d.jsx)(p,{as:i,className:(0,o.A)(v.root,n),ref:e,ownerState:h,...g})}))},89663:(r,e,t)=>{t.d(e,{A:()=>i,U:()=>a});var n=t(33761),o=t(85693);function a(r){return(0,o.Ay)("MuiToolbar",r)}const i=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])},24959:(r,e,t)=>{t.d(e,{A:()=>n});const n=(0,t(15543).Ay)()}}]);
+//# sourceMappingURL=5031.6eccfd35.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5031.6eccfd35.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5031.6eccfd35.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/Delete.js","../../../node_modules/@mui/icons-material/esm/GetApp.js","../../../node_modules/@mui/icons-material/esm/Menu.js","../../../node_modules/@mui/icons-material/esm/Publish.js","../../../node_modules/@mui/icons-material/esm/Settings.js","../../../node_modules/@mui/icons-material/esm/Share.js","../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z\"\n}), 'GetApp');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z\"\n}), 'Publish');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92\"\n}), 'Share');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["d","BadgeRoot","styled","name","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","padding","height","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","map","style","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","className","classes","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","animation","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","size","thickness","value","circleStyle","rootStyle","circumference","Math","PI","toFixed","round","width","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","transformedColor","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","Typography","underline","button","textDecoration","textDecorationColor","mainChannel","text","primaryChannel","secondaryChannel","disabled","WebkitTapHighlightColor","outline","border","margin","cursor","userSelect","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","useTheme","onBlur","onFocus","TypographyClasses","sx","setFocusVisible","isFocusVisible","Array","isArray","getLinkUtilityClass","ToolbarRoot","disableGutters","gutters","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5090.bc77ac67.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5090],{5090:(s,a,b)=>{b.r(a),b.d(a,{default:()=>e.A,getSnackbarUtilityClass:()=>l.W,snackbarClasses:()=>l.A});var e=b(42418),l=b(58763)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5099.14f82444.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 5099.14f82444.chunk.js.LICENSE.txt */
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5099],{75099:(e,t,A)=>{"use strict";A.d(t,{Wb:()=>Fe,bQ:()=>Le});const r=1,n=2,o=4,i=8,a=1,s=2,g=4,c=8,f=16,I=32,h=64,C=128,d=256,l=512,u=1024,B=2048,Q={a:0,A:0,c:1,C:1,g:2,G:2,t:3,T:3,n:4,N:4};function E(e){const t={};for(const[A,r]of e)t[`is${r}`]=e=>!!(e&A),t[`set${r}`]=e=>e|A;return t}const w=E([[1,"Paired"],[2,"ProperlyPaired"],[4,"SegmentUnmapped"],[8,"MateUnmapped"],[16,"ReverseComplemented"],[32,"MateReverseComplemented"],[64,"Read1"],[128,"Read2"],[256,"Secondary"],[512,"FailedQc"],[1024,"Duplicate"],[2048,"Supplementary"]]),m=E([[1,"PreservingQualityScores"],[2,"Detached"],[4,"WithMateDownstream"],[8,"DecodeSequenceAsStar"]]),y=E([[1,"OnNegativeStrand"],[2,"Unmapped"]]);class p{constructor({flags:e,cramFlags:t,readLength:A,mappingQuality:r,lengthOnRef:n,qualityScores:o,mateRecordNumber:i,readBases:a,readFeatures:s,mateToUse:g,readGroupId:c,readName:f,sequenceId:I,uniqueId:h,templateSize:C,alignmentStart:d,tags:l}){this.flags=e,this.cramFlags=t,this.readLength=A,this.mappingQuality=r,this.lengthOnRef=n,this.qualityScores=o,a&&(this.readBases=a),this.readGroupId=c,this.readName=f,this.sequenceId=I,this.uniqueId=h,this.templateSize=C,this.alignmentStart=d,this.tags=l,s&&(this.readFeatures=s),g&&(this.mate={flags:g.mateFlags,readName:g.mateReadName,sequenceId:g.mateSequenceId,alignmentStart:g.mateAlignmentStart}),i&&(this.mateRecordNumber=i)}isPaired(){return!!(this.flags&a)}isProperlyPaired(){return!!(this.flags&s)}isSegmentUnmapped(){return!!(this.flags&g)}isMateUnmapped(){return!!(this.flags&c)}isReverseComplemented(){return!!(this.flags&f)}isMateReverseComplemented(){return!!(this.flags&I)}isRead1(){return!!(this.flags&h)}isRead2(){return!!(this.flags&C)}isSecondary(){return!!(this.flags&d)}isFailedQc(){return!!(this.flags&l)}isDuplicate(){return!!(this.flags&u)}isSupplementary(){return!!(this.flags&B)}isDetached(){return!!(this.cramFlags&n)}hasMateDownStream(){return!!(this.cramFlags&o)}isPreservingQualityScores(){return!!(this.cramFlags&r)}isUnknownBases(){return!!(this.cramFlags&i)}getReadBases(){if(!this.readBases&&this._refRegion){const e=function(e,t){if(!e.lengthOnRef&&!e.readLength)return null;if(e.isUnknownBases())return null;const A=e.alignmentStart-t.start;if(!e.readFeatures)return t.seq.slice(A,A+(e.lengthOnRef||0)).toUpperCase();let r="",n=A,o=0;for(;r.length<e.readLength;)if(o<e.readFeatures.length){const A=e.readFeatures[o];if("Q"===A.code||"q"===A.code)o+=1;else if(A.pos===r.length+1)if(o+=1,"b"===A.code){const e=A.data;r+=e,n+=e.length}else"B"===A.code?(r+=A.data[0],n+=1):"X"===A.code?(r+=A.sub,n+=1):"I"===A.code?r+=A.data:"D"===A.code?n+=A.data:"i"===A.code?r+=A.data:"N"===A.code?n+=A.data:"S"===A.code?r+=A.data:"P"===A.code||A.code;else if(o<e.readFeatures.length){const e=t.seq.slice(n,n+A.pos-r.length-1);r+=e,n+=e.length}}else{const A=t.seq.slice(n,n+e.readLength-r.length);r+=A,n+=A.length}return r.toUpperCase()}(this,this._refRegion);e&&(this.readBases=e)}return this.readBases}getPairOrientation(){if(!this.isSegmentUnmapped()&&this.isPaired()&&!this.isMateUnmapped()&&this.mate&&this.sequenceId===this.mate.sequenceId){const e=this.isReverseComplemented()?"R":"F",t=this.isMateReverseComplemented()?"R":"F";let A=" ",r=" ";this.isRead1()?(A="1",r="2"):this.isRead2()&&(A="2",r="1");const n=[];let o=this.templateLength||this.templateSize;if(void 0===o)throw new Error("One of templateSize and templateLength must be set");return this.alignmentStart>this.mate.alignmentStart&&o>0&&(o=-o),o>0?(n[0]=e,n[1]=A,n[2]=t,n[3]=r):(n[2]=e,n[3]=A,n[0]=t,n[1]=r),n.join("")}return null}addReferenceSequence(e,t){this.readFeatures&&this.readFeatures.forEach((A=>{"X"===A.code&&function(e,t,A,r){const n=r.refPos-t.start,o=t.seq.charAt(n);o&&(r.ref=o);let i=Q[o];void 0===i&&(i=4);const a=A.substitutionMatrix[i][r.data];a&&(r.sub=a)}(0,e,t,A)})),!this.readBases&&e.start<=this.alignmentStart&&e.end>=this.alignmentStart+(this.lengthOnRef||this.readLength)-1&&(this._refRegion=e)}toJSON(){const e={};return Object.keys(this).forEach((t=>{t.startsWith("_")||(e[t]=this[t])})),e.readBases=this.getReadBases(),e}}var v=A(35451),D=A(91454),S=A(16308),b=A.n(S),N=A(25164),R=A.n(N),k=A(22823),q=A.n(k),F=A(41967);class L extends Error{}class M extends Error{}class U extends L{}class _ extends L{}var x=A(57864);function J(e){return v.hp.from((0,x.inflate)(e))}const H=12,G=4096,Y=1<<23;class W{constructor(){this.F=void 0,this.C=void 0}}function K(e,t,A,r){return A*(e>>r)+(e&(1<<r)-1)-t}const P={FC:W,AriDecoder:class{constructor(){this.fc=new Array(256);for(let e=0;e<this.fc.length;e+=1)this.fc[e]=new W;this.R=null}},DecodingSymbol:class{constructor(){this.start=void 0,this.freq=void 0}},symbolInit:function(e,t,A){if(!(t<=65536))throw new U("assertion failed: start <= 1<<16");if(!(A<=65536-t))throw new U("assertion failed: freq <= 1<<16");e.start=t,e.freq=A},advanceStep:K,advanceSymbolStep:function(e,t,A){return K(e,t.start,t.freq,A)},get:function(e,t){return e&(1<<t)-1},advanceSymbol:function(e,t,A,r){return function(e,t,A,r,n){if((e=r*(e>>n)+(e&(1<<n)-1)-A)<Y)do{e=e<<8|255&t.get()}while(e<Y);return e}(e,t,A.start,A.freq,r)},renormalize:function(e,t){if(e<Y)do{e=e<<8|255&t.get()}while(e<Y);return e}};function T(e){if(!e)throw new U("assertion failed")}class z{constructor(e,t=0){this._buffer=e,this._position=t,this.length=e.length}get(){const e=this._buffer[this._position];return this._position+=1,e}getByte(){return this.get()}getByteAt(e){return this._buffer[e]}position(){return this._position}put(e){return this._buffer[this._position]=e,this._position+=1,e}putAt(e,t){return this._buffer[e]=t,t}setPosition(e){return this._position=e,e}getInt(){const e=this._buffer.readInt32LE(this._position);return this._position+=4,e}remaining(){return this._buffer.length-this._position}}var O=A(12363),V=A.n(O),X=A(59086),j=A.n(X);class $ extends Error{}function Z(e,t,A){let r=0;if(t.bytePosition+(7-t.bitPosition+A)/8>e.length)throw new $("read error during decoding. the file seems to be truncated.");for(let n=A;n;n--)r<<=1,r|=e[t.bytePosition]>>t.bitPosition&1,t.bitPosition-=1,t.bitPosition<0&&(t.bytePosition+=1),t.bitPosition&=7;return r}function ee(e,t){let A=t;const r=e[A];let n;if(r<128?(n=r,A+=1):r<192?(n=16383&(r<<8|e[A+1]),A+=2):r<224?(n=2097151&(r<<16|e[A+1]<<8|e[A+2]),A+=3):r<240?(n=268435455&(r<<24|e[A+1]<<16|e[A+2]<<8|e[A+3]),A+=4):(n=(15&r)<<28|e[A+1]<<20|e[A+2]<<12|e[A+3]<<4|15&e[A+4],A+=5),A>e.length)throw new $("Attempted to read beyond end of buffer; this file seems truncated.");return[n,A-t]}function te(e,t){let A=t;const r=e[A];let n;if(r<128)n=r,A+=1;else if(r<192)n=16383&(e[A]<<8|e[A+1]),A+=2;else if(r<224)n=2097151&(e[A]<<16|e[A+1]<<8|e[A+2]),n=(63&r)<<16|e.readUInt16LE(A+1),A+=3;else if(r<240)n=268435455&(e[A]<<24|e[A+1]<<16|e[A+2]<<8|e[A+3]),A+=4;else if(r<248)n=(15&e[A])*2**32+(e[A+1]<<24)|e[A+2]<<16|e[A+3]<<8|e[A+4],A+=5;else if(r<252)n=((7&e[A])<<8|e[A+1])*2**32+(e[A+2]<<24)|e[A+3]<<16|e[A+4]<<8|e[A+5],A+=6;else if(r<254)n=((3&e[A])<<16|e[A+1]<<8|e[A+2])*2**32+(e[A+3]<<24)|e[A+4]<<16|e[A+5]<<8|e[A+6],A+=7;else if(r<255){if(n=j().fromBytesBE(e.slice(A+1,A+8)),n.greaterThan(Number.MAX_SAFE_INTEGER)||n.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");n=n.toNumber(),A+=8}else{if(n=j().fromBytesBE(e.slice(A+1,A+9)),n.greaterThan(Number.MAX_SAFE_INTEGER)||n.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");n=n.toNumber(),A+=9}return[n,A-t]}function Ae(e,t,A=0,r=0){const{offset:n,value:o}=t(e,A);return{...o,_endPosition:n+r,_size:n-A}}function re(e,t){const A=e.prototype[t],r=`_memo_${t}`;e.prototype[t]=function(){if(!(r in this)){const e=A.call(this);this[r]=e,Promise.resolve(e).catch((()=>{delete this[r]}))}return this[r]}}function ne(){return{parser:(e,t=0)=>{const A=e,r=new DataView(A.buffer,A.byteOffset,A.length);let n=0;const o=e.subarray(n,n+4).toString();n+=4;const i=r.getUint8(n);n+=1;const a=r.getUint8(n);n+=1;const s=A.subarray(n,n+20).toString().replaceAll("\0","");return n+=20,{value:{magic:o,majorVersion:i,minorVersion:a,fileId:s},offset:n}},maxLength:26}}function oe(e,t,A){const r=e.toString("utf8",t,A),n=[];for(let e=0;e<r.length;e+=3)n.push(r.slice(e,e+3));return n}function ie(e){const t={};for(const{key:A,value:r}of e.ents)t[A]&&console.warn(`duplicate key ${A} in map`),t[A]=r;return t}function ae(e){return"number"==typeof e.refSeqId}function se(e){let t=0;return t+=5,t+=9,t+=10,t+=16,{parser:(t,A)=>{const[r,n]=ee(t,A);A+=n;let o=0;if(e>=3){const[e,r]=te(t,A);A+=r,o=e}else if(2===e){const[e,r]=ee(t,A);A+=r,o=e}else console.warn("recordCounter=0");const[i,a]=ee(t,A);A+=a;const[s,g]=ee(t,A);A+=g;const c=[];for(let e=0;e<s;e++){const[e,r]=ee(t,A);A+=r,c.push(e)}let f;return e>=2&&(f=[...t.subarray(A,A+16)],A+=16),{value:{recordCounter:o,md5:f,contentIds:c,numContentIds:s,numBlocks:i,numRecords:r},offset:A}},maxLength:e=>40+5*e}}function ge(e){let t=0;return t+=20,t+=9,t+=15,t+=16,{parser:(t,A)=>{const[r,n]=ee(t,A);A+=n;const[o,i]=ee(t,A);A+=i;const[a,s]=ee(t,A);A+=s;const[g,c]=ee(t,A);A+=c;let f=0;if(e>=3){const[e,r]=te(t,A);A+=r,f=e}else if(2===e){const[e,r]=ee(t,A);A+=r,f=e}else console.warn("majorVersion is <2, recordCounter set to 0");const[I,h]=ee(t,A);A+=h;const[C,d]=ee(t,A);A+=d;const l=[];for(let e=0;e<C;e++){const[e,r]=ee(t,A);A+=r,l.push(e)}const[u,B]=ee(t,A);let Q;return A+=B,e>=2&&(Q=[...t.subarray(A,A+16)],A+=16),{value:{md5:Q,numBlocks:I,numRecords:g,numContentIds:C,refSeqSpan:a,refSeqId:r,refSeqStart:o,recordCounter:f,refBaseBlockId:u,contentIds:l},offset:A}},maxLength:e=>60+5*e}}function ce(e,t){const A=e,r=new DataView(A.buffer,A.byteOffset,A.length),[n,o]=ee(e,t);t+=o;const[i,a]=ee(e,t);t+=a;const s={};if(0===n);else if(1===n){const[A,r]=ee(e,t);s.blockContentId=A,t+=r}else if(2===n){const[A,r]=ee(e,t);s.offset=A,t+=r;const[n,o]=ee(e,t);s.M=n,t+=o}else if(3===n){const A=ee(e,t),r=A[0];t+=A[1];const n=[];for(let A=0;A<r;A++){const A=ee(e,t);n.push(A[0]),t+=A[1]}s.symbols=n;const o=ee(e,t),i=A[0];s.numLengths=i,s.numCodes=r,s.numLengths=i,t+=o[1];const a=[];for(let A=0;A<i;A++){const A=ee(e,t);t+=A[1],a.push(A[0])}s.bitLengths=a}else if(4===n){const{value:A,offset:r}=ce(e,t);s.lengthsEncoding=A,t=r;const{value:n,offset:o}=ce(e,t);s.valuesEncoding=n,t=o}else if(5===n){s.stopByte=r.getUint8(t),t+=1;const[A,n]=ee(e,t);s.blockContentId=A,t+=n}else if(6===n){const[A,r]=ee(e,t);s.offset=A,t+=r;const[n,o]=ee(e,t);s.length=n,t+=o}else if(7===n){const[A,r]=ee(e,t);s.offset=A,t+=r;const[n,o]=ee(e,t);s.K=n,t+=o}else if(8===n){const[A,r]=ee(e,t);s.offset=A,t+=r;const[n,o]=ee(e,t);s.log2m=n,t+=o}else{if(9!==n)throw new Error(`unknown codecId ${n}`);{const[A,r]=ee(e,t);s.offset=A,t+=r}}return{value:{codecId:n,parametersBytes:i,parameters:s},offset:t}}function fe(){return{parser:(e,t)=>{const[A,r]=ee(e,t);t+=r;const[n,o]=ee(e,t);t+=o;const i=[];for(let A=0;A<n;A++){const A=String.fromCharCode(e[t])+String.fromCharCode(e[t+1]);t+=2;const{value:r,offset:n}=ce(e,t);t=n,i.push({key:A,value:r})}return{value:{mapSize:A,ents:i,mapCount:n},offset:t}}}}function Ie(){return{parser:(e,t)=>{const[A,r]=ee(e,t);t+=r;const[n,o]=ee(e,t);t+=o;const i=[];for(let A=0;A<n;A++){const[A,r]=ee(e,t);t+=r;const n=String.fromCharCode(A>>16&255)+String.fromCharCode(A>>8&255)+String.fromCharCode(255&A),{value:o,offset:a}=ce(e,t);t=a,i.push({key:n,value:o})}return{value:{mapSize:A,ents:i,mapCount:n},offset:t}}}}function he(e){let t=4;return t+=20,t+=9,t+=9,t+=10,{maxLength:52,parser:(t,A)=>{const r=t,n=new DataView(r.buffer,r.byteOffset,r.length).getInt32(A,!0);A+=4;const[o,i]=ee(t,A);A+=i;const[a,s]=ee(t,A);A+=s;const[g,c]=ee(t,A);A+=c;const[f,I]=ee(t,A);A+=I;let h,C=0;if(e>=3){const[e,r]=te(t,A);C=e,A+=r}else if(2===e){const[e,r]=ee(t,A);C=e,A+=r}else console.warn("setting recordCounter=0");if(e>1){const[e,r]=te(t,A);h=e,A+=r}const[d,l]=ee(t,A);A+=l;const[u,B]=ee(t,A);return{value:{length:n,refSeqId:o,refSeqStart:a,alignmentSpan:g,numBlocks:d,numLandmarks:u,numBases:h,recordCounter:C,numRecords:f},offset:A+=B}}}}function Ce(e){return{parser:(t,A)=>{const r=t,n=new DataView(r.buffer,r.byteOffset,r.length),[o,i]=ee(t,A);A+=i;const a=[];for(let e=0;e<o;e++){const[e,r]=ee(t,A);A+=r,a.push(e)}let s;return e>=3&&(s=n.getUint32(A,!0),A+=4),{value:{...void 0===s?{}:{crc32:s},numLandmarks:o,landmarks:a},offset:A}},maxLength:e=>5+5*e+4}}function de(e){return{cramFileDefinition:ne(),cramBlockHeader:{parser:(e,t=0)=>{const A=e,r=new DataView(A.buffer,A.byteOffset,A.length);let n=0;const o=r.getUint8(n),i=["raw","gzip","bzip2","lzma","rans","rans4x16","arith","fqzcomp","tok3"][o];if(!i)throw new Error(`compression method number ${o} not implemented`);n+=1;const a=r.getUint8(n),s=["FILE_HEADER","COMPRESSION_HEADER","MAPPED_SLICE_HEADER","UNMAPPED_SLICE_HEADER","EXTERNAL_DATA","CORE_DATA"][a];if(!s)throw new Error(`invalid block content type id ${a}`);n+=1;const[g,c]=ee(e,n);n+=c;const[f,I]=ee(e,n);n+=I;const[h,C]=ee(e,n);return n+=C,{offset:n,value:{uncompressedSize:h,compressedSize:f,contentId:g,contentType:s,compressionMethod:i}}},maxLength:17},cramBlockCrc32:{parser:(e,t)=>{const A=e,r=new DataView(A.buffer,A.byteOffset,A.length).getUint32(t,!0);return{offset:t+=4,value:{crc32:r}}},maxLength:4},cramDataSeriesEncodingMap:fe(),cramTagEncodingMap:Ie(),cramCompressionHeader:{parser:(e,t)=>{const{value:A,offset:r}=((e,t)=>{const A=e,r=new DataView(A.buffer,A.byteOffset,A.length),[n,o]=ee(e,t);t+=o;const[i,a]=ee(e,t);t+=a;const s=[];for(let A=0;A<i;A++){const A=String.fromCharCode(e[t])+String.fromCharCode(e[t+1]);if(t+=2,"MI"===A||"UI"===A||"PI"===A||"RN"===A||"AP"===A||"RR"===A)s.push({key:A,value:!!r.getUint8(t)}),t+=1;else if("SM"===A)s.push({key:A,value:[r.getUint8(t),r.getUint8(t+1),r.getUint8(t+2),r.getUint8(t+3),r.getUint8(t+4)]}),t+=5;else{if("TD"!==A)throw new Error(`unknown key ${A}`);{const{offset:r,value:n}=((e,t)=>{const[A,r]=ee(e,t);t+=r;const n=e.subarray(t,t+A);t+=A;const o=[];let i=0,a=0;for(;a<n.length;a++)n[a]||(o.push(oe(n,i,a)),i=a+1);return a>i&&o.push(oe(n,i,a)),{value:{size:A,ents:o},offset:t}})(e,t);s.push({key:A,value:n.ents}),t=r}}}return{value:{mapSize:n,mapCount:i,ents:s},offset:t}})(e,t);t=r;const{value:n,offset:o}=fe().parser(e,t);t=o;const{value:i,offset:a}=Ie().parser(e,t);return t=a,{value:{dataSeriesEncoding:ie(n),preservation:ie(A),tagEncoding:ie(i)},offset:t}}},cramEncoding:{parser:(e,t)=>ce(e,t)},cramUnmappedSliceHeader:se(e),cramMappedSliceHeader:ge(e),cramContainerHeader1:he(e),cramContainerHeader2:Ce(e)}}function le(e){let t="";for(let A=0;A<e.length&&0!==e[A];A++)t+=String.fromCharCode(e[A]);return t}function ue(e,t){if("Z"===e)return le(t);if("A"===e)return String.fromCharCode(t[0]);if("I"===e)return new Uint32Array(t.buffer)[0];if("i"===e)return new Int32Array(t.buffer)[0];if("s"===e)return new Int16Array(t.buffer)[0];if("S"===e)return new Uint16Array(t.buffer)[0];if("c"===e)return new Int8Array(t.buffer)[0];if("C"===e)return t[0];if("f"===e)return new Float32Array(t.buffer)[0];if("H"===e)return Number.parseInt(le(t).replace(/^0x/,""),16);if("B"===e)return function(e){const t=String.fromCharCode(e[0]),A=Int32Array.from(e.slice(1))[0],r=new Array(A);if(e=e.slice(5),"c"===t){const t=new Int8Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else if("C"===t){const t=new Uint8Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else if("s"===t){const t=new Int16Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else if("S"===t){const t=new Uint16Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else if("i"===t){const t=new Int32Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else if("I"===t){const t=new Uint32Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}else{if("f"!==t)throw new Error(`unknown type: ${t}`);{const t=new Float32Array(e.buffer);for(let e=0;e<A;e+=1)r[e]=t[e]}}return r}(t);throw new U(`Unrecognized tag type ${e}`)}function Be(e,t,A,r,n,o,i,a,s){let g=t("BF");const c=t("CF");if(!ae(r.parsedContent))throw new Error("slice header not mapped");const f=a>1&&-2===r.parsedContent.refSeqId?t("RI"):r.parsedContent.refSeqId,I=t("RL");let h=t("AP");A.APdelta&&(h+=i.lastAlignmentStart),i.lastAlignmentStart=h;const C=t("RG");let d,l,u,B;if(A.readNamesIncluded&&(d=le(t("RN"))),m.isDetached(c)){const e=t("MF");let r;A.readNamesIncluded||(r=le(t("RN")),d=r);const n=t("NS"),o=t("NP");(e||n>-1)&&(l={mateFlags:e,mateSequenceId:n,mateAlignmentStart:o,mateReadName:r}),u=t("TS"),y.isUnmapped(e)&&(g=w.setMateUnmapped(g)),y.isOnNegativeStrand(e)&&(g=w.setMateReverseComplemented(g))}else m.isWithMateDownstream(c)&&(B=t("NF")+s+1);const Q=t("TL");if(Q<0)throw new U("invalid TL index");const E={},p=A.getTagNames(Q),v=p.length;for(let t=0;t<v;t+=1){const r=p[t],a=r.slice(0,2),s=r.slice(2,3),g=A.getCodecForTag(r).decode(e,n,o,i);E[a]="number"==typeof g?g:ue(s,g)}let D,S,b,N,R;if(w.isSegmentUnmapped(g))if(m.isDecodeSequenceAsStar(c))R=null,N=null;else{const e=new Array(I);for(let A=0;A<e.length;A+=1)e[A]=t("BA");if(R=String.fromCharCode(...e),m.isPreservingQualityScores(c)){N=new Array(I);for(let A=0;A<e.length;A+=1)N[A]=t("QS")}}else{const e=t("FN");if(e&&(D=function(e,t,A,r,n){let o=0,i=e-1;const a=new Array(t);function s([e,t]){const r=A(t);if("character"===e)return String.fromCharCode(r);if("string"===e){let e="";for(let t=0;t<r.byteLength;t++)e+=String.fromCharCode(r[t]);return e}return"numArray"===e?r.toArray():r}for(let e=0;e<t;e+=1){const t=String.fromCharCode(A("FC")),r=A("FP"),g={B:["character","BA"],S:["string",n>1?"SC":"IN"],X:["number","BS"],D:["number","DL"],I:["string","IN"],i:["character","BA"],b:["string","BB"],q:["numArray","QQ"],Q:["number","QS"],H:["number","HC"],P:["number","PD"],N:["number","RS"]}[t];if(!g)throw new U(`invalid read feature code "${t}"`);let c=s(g);const f={B:["number","QS"]}[t];f&&(c=[c,s(f)]),o+=r;const I=o;i+=r;const h=i;"D"===t||"N"===t?i+=c:"I"===t||"S"===t?i-=c.length:"i"===t&&(i-=1),a[e]={code:t,pos:I,refPos:h,data:c}}return a}(h,e,t,0,a)),S=I,D)for(const{code:e,data:t}of D)"D"===e||"N"===e?S+=t:"I"===e||"S"===e?S-=t.length:"i"===e&&(S-=1);if(Number.isNaN(S)&&(console.warn(`${d||`${f}:${h}`} record has invalid read features`),S=I),b=t("MQ"),m.isPreservingQualityScores(c)){N=new Array(I);for(let e=0;e<N.length;e++)N[e]=t("QS")}}return{readLength:I,sequenceId:f,cramFlags:c,flags:g,alignmentStart:h,readGroupId:C,readName:d,mateToUse:l,templateSize:u,mateRecordNumber:B,readFeatures:D,lengthOnRef:S,mappingQuality:b,qualityScores:N,readBases:R,tags:E}}function Qe(e,t,A,r){const n=!!(r.mate||void 0!==r.mateRecordNumber&&r.mateRecordNumber!==t);A.readName||(A.readName=String(A.uniqueId),r.readName=A.readName),A.mate={sequenceId:r.sequenceId,alignmentStart:r.alignmentStart,uniqueId:r.uniqueId},r.readName&&(A.mate.readName=r.readName),r.mate||void 0!==r.mateRecordNumber||(r.mate={sequenceId:A.sequenceId,alignmentStart:A.alignmentStart,uniqueId:A.uniqueId},A.readName&&(r.mate.readName=A.readName)),A.flags|=a,r.flags&g&&(A.flags|=c),A.flags&g&&(r.flags|=c),r.flags&f&&(A.flags|=I),A.flags&f&&(r.flags|=I),void 0===A.templateLength&&(n?function(e,t,A){const r=function t(A){const r=[A];if(void 0!==A.mateRecordNumber&&A.mateRecordNumber>=0){const n=e[A.mateRecordNumber];if(!n)throw new U("intra-slice mate record not found, this file seems malformed");r.push(...t(n))}return r}(A),n=r.map((e=>e.alignmentStart)),o=r.map((e=>e.alignmentStart+e.readLength-1)),i=Math.max(...o)-Math.min(...n)+1;i>=0&&r.forEach((e=>{if(void 0!==e.templateLength)throw new U("mate pair group has some members that have template lengths already, this file seems malformed");e.templateLength=i}))}(e,0,A):function(e,t){const A=Math.min(e.alignmentStart,t.alignmentStart),r=Math.max(e.alignmentStart+e.readLength-1,t.alignmentStart+t.readLength-1)-A+1;e.templateLength=r,t.templateLength=r}(A,r)),A.mateRecordNumber=void 0}class Ee{constructor(e,t,A){this.container=e,this.containerPosition=t,this.sliceSize=A,this.file=e.file}async getHeader(){const{majorVersion:e}=await this.file.getDefinition(),t=de(e),A=await this.container.getHeader();if(!A)throw new Error("no container header detected");const r=await this.file.readBlock(A._endPosition+this.containerPosition);if(void 0===r)throw new Error("block header undefined");if("MAPPED_SLICE_HEADER"===r.contentType){const e=Ae(r.content,t.cramMappedSliceHeader.parser,0,A._endPosition);return{...r,parsedContent:e}}if("UNMAPPED_SLICE_HEADER"===r.contentType){const e=Ae(r.content,t.cramUnmappedSliceHeader.parser,0,A._endPosition);return{...r,parsedContent:e}}throw new U(`error reading slice header block, invalid content type ${r.contentType}`)}async getBlocks(){const e=await this.getHeader();let t=e._endPosition;const A=new Array(e.parsedContent.numBlocks);for(let e=0;e<A.length;e++){const r=await this.file.readBlock(t);if(void 0===r)throw new Error("block undefined");A[e]=r,t=A[e]._endPosition}return A}async getCoreDataBlock(){return(await this.getBlocks())[0]}async _getBlocksContentIdIndex(){const e=await this.getBlocks(),t={};return e.forEach((e=>{"EXTERNAL_DATA"===e.contentType&&(t[e.contentId]=e)})),t}async getBlockByContentId(e){return(await this._getBlocksContentIdIndex())[e]}async getReferenceRegion(){const e=(await this.getHeader()).parsedContent;if(!ae(e))throw new Error("slice header not mapped");if(e.refSeqId<0)return;const t=await this.container.getCompressionScheme();if(void 0===t)throw new Error("compression scheme undefined");if(e.refBaseBlockId>=0){const t=await this.getBlockByContentId(e.refBaseBlockId);if(!t)throw new U("embedded reference specified, but reference block does not exist");return{seq:t.data.toString("utf8"),start:e.refSeqStart,end:e.refSeqStart+e.refSeqSpan-1,span:e.refSeqSpan}}if(t.referenceRequired||this.file.fetchReferenceSequenceCallback){if(!this.file.fetchReferenceSequenceCallback)throw new Error("reference sequence not embedded, and seqFetch callback not provided, cannot fetch reference sequence");const t=await this.file.fetchReferenceSequenceCallback(e.refSeqId,e.refSeqStart,e.refSeqStart+e.refSeqSpan-1);if(t.length!==e.refSeqSpan)throw new _("seqFetch callback returned a reference sequence of the wrong length");return{seq:t,start:e.refSeqStart,end:e.refSeqStart+e.refSeqSpan-1,span:e.refSeqSpan}}}getAllRecords(){return this.getRecords((()=>!0))}async _fetchRecords(){var e,t;const{majorVersion:A}=await this.file.getDefinition(),r=await this.container.getCompressionScheme();if(void 0===r)throw new Error("compression scheme undefined");const n=await this.getHeader(),o=await this._getBlocksContentIdIndex();if(A>1&&this.file.options.checkSequenceMD5&&ae(n.parsedContent)&&n.parsedContent.refSeqId>=0&&"0000000000000000"!==(null===(e=n.parsedContent.md5)||void 0===e?void 0:e.join(""))){const e=await this.getReferenceRegion();if(e){const{seq:A,start:r,end:o}=e,i=function(e){return V()(e.toUpperCase().replaceAll(/[^\u0021-\u007e]/g,""))}(A),a=null===(t=n.parsedContent.md5)||void 0===t?void 0:t.map((e=>(e<16?"0":"")+e.toString(16))).join("");if(i!==a)throw new U(`MD5 checksum reference mismatch for ref ${n.parsedContent.refSeqId} pos ${r}..${o}. recorded MD5: ${a}, calculated MD5: ${i}`)}}const i=await this.getCoreDataBlock(),a={lastAlignmentStart:ae(n.parsedContent)?n.parsedContent.refSeqStart:0,coreBlock:{bitPosition:7,bytePosition:0},externalBlocks:{map:new Map,getCursor(e){let t=this.map.get(e);return void 0===t&&(t={bitPosition:7,bytePosition:0},this.map.set(e,t)),t}}},s=e=>{const t=r.getCodecForDataSeries(e);if(!t)throw new U(`no codec defined for ${e} data series`);return t.decode(this,i,o,a)},g=new Array(n.parsedContent.numRecords);for(let e=0;e<g.length;e+=1)try{const t=Be(this,s,r,n,i,o,a,A,e);g[e]=new p({...t,uniqueId:n.contentPosition+n.parsedContent.recordCounter+e+1})}catch(e){if(e instanceof $){console.warn("read attempted beyond end of buffer, file seems truncated.");break}throw e}for(let e=0;e<g.length;e+=1){const{mateRecordNumber:t}=g[e];void 0!==t&&t>=0&&Qe(g,e,g[e],g[t])}return g}async getRecords(e){const t=this.container.filePosition+this.containerPosition;let A=this.file.featureCache.get(t.toString());A||(A=this._fetchRecords(),this.file.featureCache.set(t.toString(),A));const r=(await A).filter(e);if(r.length&&this.file.fetchReferenceSequenceCallback){const e=await this.getHeader();if(ae(e.parsedContent)&&(e.parsedContent.refSeqId>=0||-2===e.parsedContent.refSeqId)){const t=e.parsedContent.refSeqId>=0?e.parsedContent.refSeqId:void 0,A=await this.container.getCompressionScheme();if(void 0===A)throw new Error("compression scheme undefined");const n={};for(const e of r){const A=void 0!==t?t:e.sequenceId;let r=n[A];r||(r={id:A,start:e.alignmentStart,end:Number.NEGATIVE_INFINITY,seq:null},n[A]=r);const o=e.alignmentStart+(e.lengthOnRef||e.readLength)-1;o>r.end&&(r.end=o),e.alignmentStart<r.start&&(r.start=e.alignmentStart)}await Promise.all(Object.values(n).map((async e=>{-1!==e.id&&e.start<=e.end&&this.file.fetchReferenceSequenceCallback&&(e.seq=await this.file.fetchReferenceSequenceCallback(e.id,e.start,e.end))})));for(const e of r){const r=n[void 0!==t?t:e.sequenceId];if(null==r?void 0:r.seq){const t=r.seq;e.addReferenceSequence({...r,seq:t},A)}}}}return r}}"getHeader getBlocks _getBlocksContentIdIndex".split(" ").forEach((e=>{re(Ee,e)}));class we{constructor(e,t){this.parameters=e,this.dataType=t}}class me extends we{constructor(e,t,A){super(e,t),this.instantiateCodec=A}decode(e,t,A,r){const n=this._getLengthCodec().decode(e,t,A,r),o=this._getDataCodec(),i=new Uint8Array(n);for(let a=0;a<n;a+=1)i[a]=o.decode(e,t,A,r);return i}_getLengthCodec(){const e=this.parameters.lengthsEncoding;return this.instantiateCodec(e,"int")}_getDataCodec(){const e=this.parameters.valuesEncoding;return this.instantiateCodec(e,"byte")}}"_getLengthCodec _getDataCodec".split(" ").forEach((e=>{re(me,e)}));const ye={1:class extends we{constructor(e,t){if(super(e,t),"int"===this.dataType)this._decodeData=this._decodeInt;else{if("byte"!==this.dataType)throw new M(`${this.dataType} decoding not yet implemented by EXTERNAL codec`);this._decodeData=this._decodeByte}}decode(e,t,A,r){const{blockContentId:n}=this.parameters,o=A[n];if(!o)throw new U(`no block found with content ID ${n}}`);const i=r.externalBlocks.getCursor(n);return this._decodeData(o,i)}_decodeInt(e,t){const[A,r]=ee(e.content,t.bytePosition);return t.bytePosition=t.bytePosition+r,A}_decodeByte(e,t){if(t.bytePosition>=e.content.length)throw new $("attempted to read beyond end of block. this file seems truncated.");return e.content[t.bytePosition++]}},3:class extends we{constructor(e,t){if(super(e,t),this.codes={},this.codeBook={},this.sortedCodes=[],this.sortedValuesByBitCode=[],this.sortedBitCodes=[],this.sortedBitLengthsByBitCode=[],this.bitCodeToValue=[],!["byte","int"].includes(this.dataType))throw new TypeError(`${this.dataType} decoding not yet implemented by HUFFMAN_INT codec`);this.buildCodeBook(),this.buildCodes(),this.buildCaches(),0===this.sortedCodes[0].bitLength&&(this._decode=this._decodeZeroLengthCode)}buildCodeBook(){let e=new Array(this.parameters.numCodes);for(let t=0;t<this.parameters.numCodes;t++)e[t]={symbol:this.parameters.symbols[t],bitLength:this.parameters.bitLengths[t]};e=e.sort(((e,t)=>e.bitLength-t.bitLength||e.symbol-t.symbol)),this.codeBook={},e.forEach((e=>{this.codeBook[e.bitLength]||(this.codeBook[e.bitLength]=[]),this.codeBook[e.bitLength].push(e.symbol)}))}buildCodes(){this.codes={};let e=0,t=-1;Object.entries(this.codeBook).forEach((([A,r])=>{const n=Number.parseInt(A,10);r.forEach((A=>{const r={bitLength:n,value:A,bitCode:0};t+=1;const o=n-e;if(t<<=o,r.bitCode=t,e+=o,function(e){let t=e-(e>>1)&1431655765;return t=(858993459&t)+(t>>2&858993459),16843009*(t+(t>>4)&252645135)>>24}(t)>n)throw new U("Symbol out of range");this.codes[A]=r}))}))}buildCaches(){this.sortedCodes=Object.values(this.codes).sort(((e,t)=>e.bitLength-t.bitLength||e.bitCode-t.bitCode)),this.sortedValuesByBitCode=this.sortedCodes.map((e=>e.value)),this.sortedBitCodes=this.sortedCodes.map((e=>e.bitCode)),this.sortedBitLengthsByBitCode=this.sortedCodes.map((e=>e.bitLength));const e=Math.max(...this.sortedBitCodes);this.bitCodeToValue=new Array(e+1).fill(-1);for(let e=0;e<this.sortedBitCodes.length;e+=1)this.bitCodeToValue[this.sortedCodes[e].bitCode]=e}decode(e,t,A,r){return this._decode(e,t,r.coreBlock)}_decodeZeroLengthCode(){return this.sortedCodes[0].value}_decode(e,t,A){const r=t.content;let n=0,o=0;for(let e=0;e<this.sortedCodes.length;e+=1){const t=this.sortedCodes[e].bitLength;o<<=t-n,o|=Z(r,A,t-n),n=t;{const A=this.bitCodeToValue[o];if(A>-1&&this.sortedBitLengthsByBitCode[A]===t)return this.sortedValuesByBitCode[A];for(let A=e;this.sortedCodes[A+1].bitLength===t&&A<this.sortedCodes.length;A+=1)e+=1}}throw new U("Huffman symbol not found.")}},4:me,5:class extends we{decode(e,t,A,r){const{blockContentId:n}=this.parameters,o=A[n];if(!o)throw new U(`no block found with content ID ${n}`);const i=r.externalBlocks.getCursor(n);return this._decodeByteArray(o,i)}_decodeByteArray(e,t){const A=e.content,{stopByte:r}=this.parameters,n=t.bytePosition;let o=t.bytePosition;for(;A[o]!==r&&o<A.length;){if(o===A.length)throw new $("byteArrayStop reading beyond length of data buffer?");o+=1}return t.bytePosition=o+1,A.subarray(n,o)}},6:class extends we{constructor(e,t){if(super(e,t),"int"!==this.dataType)throw new M(`${this.dataType} decoding not yet implemented by BETA codec`)}decode(e,t,A,r){return Z(t.content,r.coreBlock,this.parameters.length)-this.parameters.offset}},7:class extends we{constructor(e,t){if(super(e,t),"int"!==this.dataType)throw new M(`${this.dataType} decoding not yet implemented by SUBEXP codec`)}decode(e,t,A,r){let n,o,i=0;for(;Z(t.content,r.coreBlock,1);)i+=1;return 0===i?(n=this.parameters.K,o=Z(t.content,r.coreBlock,n)):(n=i+this.parameters.K-1,o=1<<n|Z(t.content,r.coreBlock,n)),o-this.parameters.offset}},9:class extends we{constructor(e,t){if(super(e,t),"int"!==this.dataType)throw new M(`${this.dataType} decoding not yet implemented by GAMMA codec`)}decode(e,t,A,r){let n=1;for(;0===Z(t.content,r.coreBlock,1);)n+=1;return(Z(t.content,r.coreBlock,n-1)|1<<n-1)-this.parameters.offset}}};function pe(e,t){const A=(r="ignore"===t?0:e.codecId,ye[r]);var r;if(!A)throw new M(`no codec implemented for codec ID ${e.codecId}`);return new A(e.parameters,t,pe)}const ve={BF:"int",CF:"int",RI:"int",RL:"int",AP:"int",RG:"int",MF:"int",NS:"int",NP:"int",TS:"int",NF:"int",TC:"byte",TN:"int",FN:"int",FC:"byte",FP:"int",BS:"byte",IN:"byteArray",SC:"byteArray",DL:"int",BA:"byte",BB:"byteArray",RS:"int",PD:"int",HC:"int",MQ:"int",RN:"byteArray",QS:"byte",QQ:"byteArray",TL:"int"};class De{constructor(e){this.dataSeriesCodecCache={},this.tagCodecCache={},this.tagEncoding={},this.readNamesIncluded=e.preservation.RN,this.APdelta=e.preservation.AP,this.referenceRequired=!!e.preservation.RR,this.tagIdsDictionary=e.preservation.TD,this.substitutionMatrix=function(e){const t=new Array(5);for(let e=0;e<5;e+=1)t[e]=new Array(4);return t[0][e[0]>>6&3]="C",t[0][e[0]>>4&3]="G",t[0][e[0]>>2&3]="T",t[0][3&e[0]]="N",t[1][e[1]>>6&3]="A",t[1][e[1]>>4&3]="G",t[1][e[1]>>2&3]="T",t[1][3&e[1]]="N",t[2][e[2]>>6&3]="A",t[2][e[2]>>4&3]="C",t[2][e[2]>>2&3]="T",t[2][3&e[2]]="N",t[3][e[3]>>6&3]="A",t[3][e[3]>>4&3]="C",t[3][e[3]>>2&3]="G",t[3][3&e[3]]="N",t[4][e[4]>>6&3]="A",t[4][e[4]>>4&3]="C",t[4][e[4]>>2&3]="G",t[4][3&e[4]]="T",t}(e.preservation.SM),this.dataSeriesEncoding=e.dataSeriesEncoding,this.tagEncoding=e.tagEncoding}getCodecForTag(e){const t=this.tagCodecCache[e];if(t)return t;{const t=this.tagEncoding[e];if(!t)throw new Error("Error, no tag encoding");const A=pe(t,"byteArray");return this.tagCodecCache[e]=A,A}}getTagNames(e){return this.tagIdsDictionary[e]}getCodecForDataSeries(e){let t=this.dataSeriesCodecCache[e];if(void 0===t){const A=this.dataSeriesEncoding[e];if(A){const r=ve[e];if(!r)throw new U(`data series name ${e} not defined in file compression header`);t=pe(A,r),this.dataSeriesCodecCache[e]=t}}return t}toJSON(){const e={};return Object.keys(this).forEach((t=>{t.endsWith("Cache")||(e[t]=this[t])})),e}}class Se{constructor(e,t){this.file=e,this.filePosition=t}getHeader(){return this._readContainerHeader(this.filePosition)}async getCompressionHeaderBlock(){const e=await this.getHeader();if(!(null==e?void 0:e.numRecords))return null;const{majorVersion:t}=await this.file.getDefinition(),A=de(t),r=await this.getFirstBlock();if(void 0===r)return;if("COMPRESSION_HEADER"!==r.contentType)throw new U(`invalid content type ${r.contentType} in compression header block`);const n=Ae(r.content,A.cramCompressionHeader.parser,0,r.contentPosition);return{...r,parsedContent:n}}async getFirstBlock(){const e=await this.getHeader();if(e)return this.file.readBlock(e._endPosition)}async getCompressionScheme(){const e=await this.getCompressionHeaderBlock();if(e)return new De(e.parsedContent)}getSlice(e,t){return new Ee(this,e,t)}async _readContainerHeader(e){const{majorVersion:t}=await this.file.getDefinition(),A=de(t),{cramContainerHeader1:r,cramContainerHeader2:n}=A,{size:o}=await this.file.stat();if(e>=o)return void console.warn(`pos:${e}>=fileSize:${o} in cram container`);const i=v.hp.allocUnsafe(r.maxLength);await this.file.read(i,0,r.maxLength,e);const a=Ae(i,r.parser),s=-128&(g=a.numLandmarks)?-16384&g?-2097152&g?-268435456&g?5:4:3:2:1;var g;if(e+a.length>=o)return void console.warn(`container at ${e} is beyond fileSize:${o}, skipping`);const c=v.hp.allocUnsafe(n.maxLength(a.numLandmarks));await this.file.read(c,0,n.maxLength(a.numLandmarks),e+a._size-s);const f=Ae(c,n.parser);return this.file.validateChecksums&&void 0!==f.crc32&&await this.file.checkCrc32(e,a._size+f._size-s-4,f.crc32,`container header beginning at position ${e}`),Object.assign(a,f,{_size:a._size+f._size-s,_endPosition:a._size+f._size-s+e})}}"getHeader getCompressionHeaderBlock getCompressionScheme".split(" ").forEach((e=>{re(Se,e)}));var be=A(45834);function Ne(e,t,A){if(A)return A;if(e)return new be.Tx(e);if(t)return new be.EY(t);throw new Error("no url, path, or filehandle provided, cannot open")}function Re(e){const t=e.split(/\r?\n/),A=[];for(const e of t){const[t,...r]=e.split(/\t/);t&&A.push({tag:t.slice(1),data:r.map((e=>{const t=e.indexOf(":");return-1!==t?{tag:e.slice(0,t),value:e.slice(t+1)}:{tag:e,value:""}}))})}return A}class ke{constructor(e){var t;if(this.file=Ne(e.url,e.path,e.filehandle),this.validateChecksums=!0,this.fetchReferenceSequenceCallback=e.seqFetch,this.options={checkSequenceMD5:e.checkSequenceMD5,cacheSize:null!==(t=e.cacheSize)&&void 0!==t?t:2e4},this.featureCache=new(b())({maxSize:this.options.cacheSize}),function(){const e=new Uint32Array([287454020]),t=new Uint8Array(e.buffer);return 68===t[0]?0:17===t[0]?1:2}()>0)throw new Error("Detected big-endian machine, may be unable to run")}read(e,t,A,r){return this.file.read(e,t,A,r)}stat(){return this.file.stat()}async getDefinition(){const{maxLength:e,parser:t}=ne(),A=v.hp.allocUnsafe(e);await this.file.read(A,0,e,0);const r=t(A).value;if(2!==r.majorVersion&&3!==r.majorVersion)throw new M(`CRAM version ${r.majorVersion} not supported`);return r}async getSamHeader(){const e=await this.getContainerById(0);if(!e)throw new U("file contains no containers");const t=await e.getFirstBlock();if(void 0===t)return Re("");const A=t.content,r=A.readInt32LE(0),n=A.toString("utf8",4,4+r);return this.header=n,Re(n)}async getHeaderText(){return await this.getSamHeader(),this.header}async getContainerById(e){const{majorVersion:t}=await this.getDefinition(),A=de(t);let r=A.cramFileDefinition.maxLength;const{size:n}=await this.file.stat(),{cramContainerHeader1:o}=A;let i;for(let t=0;t<=e;t++){if(r+o.maxLength+8>=n)return;i=this.getContainerAtPosition(r);const A=await i.getHeader();if(!A)throw new U(`container ${e} not found in file`);if(0===t){r=A._endPosition;for(let e=0;e<A.numBlocks;e++){const e=await this.readBlock(r);if(void 0===e)return;r=e._endPosition}}else r+=A._size+A.length}return i}async checkCrc32(e,t,A,r){const n=v.hp.allocUnsafe(t);await this.file.read(n,0,t,e);const o=D.A.unsigned(n);if(o!==A)throw new U(`crc mismatch in ${r}: recorded CRC32 = ${A}, but calculated CRC32 = ${o}`)}async containerCount(){const{majorVersion:e}=await this.getDefinition(),t=de(e),{size:A}=await this.file.stat(),{cramContainerHeader1:r}=t;let n=0,o=t.cramFileDefinition.maxLength;for(;o+r.maxLength+8<A;){const e=await this.getContainerAtPosition(o).getHeader();if(!e)break;if(0===n){o=e._endPosition;for(let t=0;t<e.numBlocks;t++){const e=await this.readBlock(o);if(void 0===e)return;o=e._endPosition}}else o+=e._size+e.length;n+=1}return n}getContainerAtPosition(e){return new Se(this,e)}async readBlockHeader(e){const{majorVersion:t}=await this.getDefinition(),A=de(t),{cramBlockHeader:r}=A,{size:n}=await this.file.stat();if(e+r.maxLength>=n)return;const o=v.hp.allocUnsafe(r.maxLength);return await this.file.read(o,0,r.maxLength,e),Ae(o,r.parser,0,e)}async _parseSection(e,t,A=e.maxLength,r){let n;if(r)n=r;else{const{size:e}=await this.file.stat();if(t+A>=e)return;n=v.hp.allocUnsafe(A),await this.file.read(n,0,A,t)}const o=Ae(n,e.parser,0,t);if(o._size!==A)throw new U(`section read error: requested size ${A} does not equal parsed size ${o._size}`);return o}async _uncompress(e,t,A){if("gzip"===e)J(t).copy(A);else if("bzip2"===e){const e=q().array(t);let r,n=q().header(e),o=0;do{r=q().decompress(e,n),-1!==r&&(v.hp.from(r).copy(A,o),o+=r.length,n-=r.length)}while(-1!==r)}else if("lzma"===e){const e=new Response(new F.XzReadableStream((r=t,new ReadableStream({start(e){e.enqueue(r),e.close()}}))));v.hp.from(await e.arrayBuffer()).copy(A)}else if("rans"===e)!function(e,t,A=0){if(0===e.length)return t.fill(0),t;const r=new z(e,A),n=r.get();if(0!==n&&1!==n)throw new U(`Invalid rANS order ${n}`);if(r.getInt()!==r.remaining()-4)throw new U("Incorrect input length.");const o=r.getInt(),i=new z(t||v.hp.allocUnsafe(o));if(i.length<o)throw new U(`Output buffer too small to fit ${o} bytes.`);switch(n){case 0:return function(e,t){const A=new P.AriDecoder,r=new Array(256);for(let e=0;e<r.length;e+=1)r[e]=new P.DecodingSymbol;return function(e,t,A){let r=0,n=0,o=255&e.get();do{null==t.fc[o]&&(t.fc[o]=new P.FC),t.fc[o].F=255&e.get(),t.fc[o].F>=128&&(t.fc[o].F&=-129,t.fc[o].F=(127&t.fc[o].F)<<8|255&e.get()),t.fc[o].C=n,P.symbolInit(A[o],t.fc[o].C,t.fc[o].F),t.R||(t.R=new Array(G)),t.R.fill(o,n,n+t.fc[o].F),n+=t.fc[o].F,0===r&&o+1===(255&e.getByteAt(e.position()))?(o=255&e.get(),r=255&e.get()):0!==r?(r-=1,o+=1):o=255&e.get()}while(0!==o);T(n<G)}(e,A,r),function(e,t,A,r){let n=e.getInt(),o=e.getInt(),i=e.getInt(),a=e.getInt();const s=r.remaining(),g=-4&s;for(let s=0;s<g;s+=4){const g=t.R[P.get(n,H)],c=t.R[P.get(o,H)],f=t.R[P.get(i,H)],I=t.R[P.get(a,H)];r.putAt(s,g),r.putAt(s+1,c),r.putAt(s+2,f),r.putAt(s+3,I),n=P.advanceSymbolStep(n,A[255&g],H),o=P.advanceSymbolStep(o,A[255&c],H),i=P.advanceSymbolStep(i,A[255&f],H),a=P.advanceSymbolStep(a,A[255&I],H),n=P.renormalize(n,e),o=P.renormalize(o,e),i=P.renormalize(i,e),a=P.renormalize(a,e)}let c;switch(r.setPosition(g),3&s){case 0:break;case 1:c=t.R[P.get(n,H)],P.advanceSymbol(n,e,A[255&c],H),r.put(c);break;case 2:c=t.R[P.get(n,H)],P.advanceSymbol(n,e,A[255&c],H),r.put(c),c=t.R[P.get(o,H)],P.advanceSymbol(o,e,A[255&c],H),r.put(c);break;case 3:c=t.R[P.get(n,H)],P.advanceSymbol(n,e,A[255&c],H),r.put(c),c=t.R[P.get(o,H)],P.advanceSymbol(o,e,A[255&c],H),r.put(c),c=t.R[P.get(i,H)],P.advanceSymbol(i,e,A[255&c],H),r.put(c);break;default:throw new U("invalid output size encountered during rANS decoding")}r.setPosition(0)}(e,A,r,t),t}(r,i);case 1:return function(e,t){const A=new Array(256);for(let e=0;e<A.length;e+=1)A[e]=new P.AriDecoder;const r=new Array(256);for(let e=0;e<r.length;e+=1){r[e]=new Array(256);for(let t=0;t<r[e].length;t+=1)r[e][t]=new P.DecodingSymbol}return function(e,t,A){let r=0,n=255&e.get();do{let o=0,i=0,a=255&e.get();null==t[n]&&(t[n]=new P.AriDecoder);do{null==t[n].fc[a]&&(t[n].fc[a]=new P.FC),t[n].fc[a].F=255&e.get(),t[n].fc[a].F>=128&&(t[n].fc[a].F&=-129,t[n].fc[a].F=(127&t[n].fc[a].F)<<8|255&e.get()),t[n].fc[a].C=i,0===t[n].fc[a].F&&(t[n].fc[a].F=G),null==A[n][a]&&(A[n][a]=new P.RansDecSymbol),P.symbolInit(A[n][a],t[n].fc[a].C,t[n].fc[a].F),null==t[n].R&&(t[n].R=new Array(G)),t[n].R.fill(a,i,i+t[n].fc[a].F),i+=t[n].fc[a].F,T(i<=G),0===o&&a+1===(255&e.getByteAt(e.position()))?(a=255&e.get(),o=255&e.get()):0!==o?(o-=1,a+=1):a=255&e.get()}while(0!==a);0===r&&n+1===(255&e.getByteAt(e.position()))?(n=255&e.get(),r=255&e.get()):0!==r?(r-=1,n+=1):n=255&e.get()}while(0!==n)}(e,A,r),function(e,t,A,r){const n=t.remaining();let o=e.getInt(),i=e.getInt(),a=e.getInt(),s=e.getInt();const g=n>>2;let c=0,f=g,I=2*g,h=3*g,C=0,d=0,l=0,u=0;for(;c<g;c+=1,f+=1,I+=1,h+=1){const n=255&A[C].R[P.get(o,H)],g=255&A[d].R[P.get(i,H)],B=255&A[l].R[P.get(a,H)],Q=255&A[u].R[P.get(s,H)];t.putAt(c,n),t.putAt(f,g),t.putAt(I,B),t.putAt(h,Q),o=P.advanceSymbolStep(o,r[C][n],H),i=P.advanceSymbolStep(i,r[d][g],H),a=P.advanceSymbolStep(a,r[l][B],H),s=P.advanceSymbolStep(s,r[u][Q],H),o=P.renormalize(o,e),i=P.renormalize(i,e),a=P.renormalize(a,e),s=P.renormalize(s,e),C=n,d=g,l=B,u=Q}for(;h<n;h+=1){const n=255&A[u].R[P.get(s,H)];t.putAt(h,n),s=P.advanceSymbol(s,e,r[u][n],H),u=n}}(e,t,A,r),t}(r,i);default:throw new U(`Invalid rANS order: ${n}`)}}(t,A);else if("rans4x16"===e)R().r4x16_uncompress(t,A);else if("arith"===e)R().arith_uncompress(t,A);else if("fqzcomp"===e)R().fqzcomp_uncompress(t,A);else{if("tok3"!==e)throw new M(`${e} decompression not yet implemented`);R().tok3_uncompress(t,A)}var r}async readBlock(e){const{majorVersion:t}=await this.getDefinition(),A=de(t),r=await this.readBlockHeader(e);if(void 0===r)return;const n=r._endPosition,o=v.hp.allocUnsafe(r.uncompressedSize),i={...r,_endPosition:n,contentPosition:n,content:o};if("raw"!==r.compressionMethod){const e=v.hp.allocUnsafe(r.compressedSize);await this.read(e,0,r.compressedSize,n),await this._uncompress(r.compressionMethod,e,o)}else await this.read(o,0,r.uncompressedSize,n);if(t>=3){const t=await this._parseSection(A.cramBlockCrc32,n+r.compressedSize);if(void 0===t)return;i.crc32=t.crc32,this.validateChecksums&&await this.checkCrc32(e,r._size+r.compressedSize,t.crc32,"block data"),i._endPosition=t._endPosition,i._size=i.compressedSize+A.cramBlockCrc32.maxLength}else i._endPosition=n+i.compressedSize,i._size=i.compressedSize;return i}}function qe(e,t){const[A,r,n,o,i,a]=t,s=A;e[s]||(e[s]=[]),e[s].push({start:r,span:n,containerStart:o,sliceStart:i,sliceBytes:a})}"getDefinition getSectionParsers getSamHeader".split(" ").forEach((e=>{re(ke,e)}));class Fe{constructor(e){this.filehandle=Ne(e.url,e.path,e.filehandle)}async parseIndex(){const e={},t=31===(A=await this.filehandle.readFile())[0]&&139===A[1]?J(A):A;var A;if(t.length>4&&21578050===t.readUInt32LE(0))throw new U("invalid .crai index file. note: file appears to be a .bai index. this is technically legal but please open a github issue if you need support");let r=[],n="";for(const A of t)if(A>=48&&A<=57||!n&&45===A)n+=String.fromCharCode(A);else if(9===A)r.push(Number.parseInt(n,10)),n="";else if(10===A)r.push(Number.parseInt(n,10)),n="",qe(e,r),r=[];else if(13!==A&&32!==A)throw new U("invalid .crai index file");return n&&r.push(Number.parseInt(n,10)),6===r.length&&qe(e,r),Object.entries(e).forEach((([t,A])=>{const r=A;e[t]=r.sort(((e,t)=>e.start-t.start||e.span-t.span))})),e}getIndex(){return this.parseIndexP||(this.parseIndexP=this.parseIndex().catch((e=>{throw this.parseIndexP=void 0,e}))),this.parseIndexP}async hasDataForReferenceSequence(e){return!!(await this.getIndex())[e]}async getEntriesForRange(e,t,A){const r=(await this.getIndex())[e];if(!r)return[];const n=e=>{const r=e.start,n=e.start+e.span;return r>A?-1:n<=t?1:0},o=[];for(const e of r)0===n(e)&&o.push(e);return o}}class Le{constructor(e){var t;if(this.cram=null!==(t=e.cram)&&void 0!==t?t:new ke({url:e.cramUrl,path:e.cramPath,filehandle:e.cramFilehandle,seqFetch:e.seqFetch,checkSequenceMD5:e.checkSequenceMD5,cacheSize:e.cacheSize}),!(this.cram instanceof ke))throw new Error("invalid arguments: no cramfile");this.index=e.index}async getRecordsForRange(e,t,A,r={}){if(r.viewAsPairs=r.viewAsPairs||!1,r.pairAcrossChr=r.pairAcrossChr||!1,r.maxInsertSize=r.maxInsertSize||2e5,"string"==typeof e)throw new M("string sequence names not yet supported");const n=e,o=await this.index.getEntriesForRange(n,t,A),i=r=>r.sequenceId===e&&r.alignmentStart<=A&&void 0!==r.lengthOnRef&&r.alignmentStart+r.lengthOnRef-1>=t,a=await Promise.all(o.map((e=>this.getRecordsInSlice(e,i))));let s=Array.prototype.concat(...a);if(r.viewAsPairs){const e={},t={};for(const A of s){const r=A.readName;if(void 0===r)throw new Error("readName undefined");const n=A.uniqueId;e[r]||(e[r]=0),e[r]+=1,t[n]=1}const A={};Object.entries(e).forEach((([e,t])=>{1===t&&(A[e]=!0)}));const o=[];for(const e of s){const t=e.readName;if(void 0===t)throw new Error("readName undefined");if(A[t]&&e.mate&&(e.mate.sequenceId===n||r.pairAcrossChr)&&Math.abs(e.alignmentStart-e.mate.alignmentStart)<r.maxInsertSize){const t=this.index.getEntriesForRange(e.mate.sequenceId,e.mate.alignmentStart,e.mate.alignmentStart+1);o.push(t)}}const i=await Promise.all(o);let a=[];for(const e of i)a.push(...e);a=a.sort(((e,t)=>e.toString().localeCompare(t.toString()))).filter(((e,t,A)=>!t||e.toString()!==A[t-1].toString()));const g=[],c=[];for(const e of a){let r=this.cram.featureCache.get(e.toString());r||(r=this.getRecordsInSlice(e,(()=>!0)),this.cram.featureCache.set(e.toString(),r)),g.push(r);const n=r.then((e=>{const r=[];for(const n of e){if(void 0===n.readName)throw new Error("readName undefined");A[n.readName]&&!t[n.uniqueId]&&r.push(n)}return r}));c.push(n)}const f=await Promise.all(c);if(f.length){const e=f.reduce(((e,t)=>e.concat(t)));s=s.concat(e)}}return s}getRecordsInSlice({containerStart:e,sliceStart:t,sliceBytes:A},r){return this.cram.getContainerAtPosition(e).getSlice(t,A).getRecords(r)}hasDataForReferenceSequence(e){return this.index.hasDataForReferenceSequence(e)}}},85911:(e,t,A)=>{const r=A(88946),n=A(76526),o=A(38298),i=A(22823),a=128;e.exports=class{decode(e){return this.stream=new n(e),this.decodeStream(this.stream)}decodeStream(e,t=0){var A=this.stream.ReadByte();16&A||(t=this.stream.ReadUint7());var r,n=t,o=1&A;if(8&A)return this.decodeStripe(this.stream,t);if(A&a&&([r,n]=this.decodePackMeta(this.stream)),32&A)var i=this.decodeCat(this.stream,n);else i=4&A?this.decodeExt(this.stream,n):64&A?o?this.decodeRLE1(this.stream,n):this.decodeRLE0(this.stream,n):o?this.decode1(this.stream,n):this.decode0(this.stream,n);return A&a&&(i=this.decodePack(i,r,t)),i}encode(e,t){if(this.stream=new n("",0,1.1*e.length+100),this.stream.WriteByte(t),16&t||this.stream.WriteUint7(e.length),8&t)return Buffer.concat([this.stream.buf.slice(0,this.stream.pos),this.encodeStripe(this.stream,e,t>>8)]);var A,r=1&t,o=e.length;return t&a&&([A,e,o]=this.encodePack(e)),t&a&&this.stream.WriteStream(A),64&t?r?this.encodeRLE1(e,o,this.stream):this.encodeRLE0(e,o,this.stream):r?this.encode1(e,o,this.stream):this.encode0(e,o,this.stream)}decode0(e,t){var A=new Buffer.allocUnsafe(t),n=e.ReadByte();0==n&&(n=256);var i=new o(n),a=new r(e);a.RangeStartDecode(e);for(var s=0;s<t;s++)A[s]=i.ModelDecode(e,a);return A}encode0(e,t,A){for(var n=0,i=0;i<t;i++)n<e[i]&&(n=e[i]);n++;var a=new o(n);A.WriteByte(n);var s=new r(A);for(i=0;i<t;i++)a.ModelEncode(A,s,e[i]);return s.RangeFinishEncode(A),A.buf.slice(0,A.pos)}decode1(e,t){var A=new Buffer.allocUnsafe(t),n=e.ReadByte();0==n&&(n=256);for(var i=new Array(n),a=0;a<n;a++)i[a]=new o(n);var s=new r(e);s.RangeStartDecode(e);var g=0;for(a=0;a<t;a++)A[a]=i[g].ModelDecode(e,s),g=A[a];return A}encode1(e,t,A){for(var n=0,i=0;i<t;i++)n<e[i]&&(n=e[i]);n++;var a=new Array(n);for(i=0;i<n;i++)a[i]=new o(n);A.WriteByte(n);var s=new r(A),g=0;for(i=0;i<t;i++)a[g].ModelEncode(A,s,e[i]),g=e[i];return s.RangeFinishEncode(A),A.buf.slice(0,A.pos)}decodeExt(e,t){var A=new Buffer.allocUnsafe(t),r=i.array(e.buf.slice(e.pos)),n=i.header(r),o=0;do{var a=i.decompress(r,n);-1!=a&&(Buffer.from(a).copy(A,o),o+=a.length,n-=a.length)}while(-1!=a);return A}encodeExt(e,t){}decodeRLE0(e,t){var A=new Buffer.allocUnsafe(t),n=e.ReadByte();0==n&&(n=256);for(var i=new o(n),a=new Array(258),s=0;s<=257;s++)a[s]=new o(4);var g=new r(e);for(g.RangeStartDecode(e),s=0;s<t;){A[s]=i.ModelDecode(e,g);for(var c=a[A[s]].ModelDecode(e,g),f=c,I=256;3==c;)c=a[I].ModelDecode(e,g),I=257,f+=c;for(var h=1;h<=f;h++)A[s+h]=A[s];s+=f+1}return A}encodeRLE0(e,t,A){for(var n=0,i=0;i<t;i++)n<e[i]&&(n=e[i]);n++;var a=new o(n),s=new Array(258);for(i=0;i<=257;i++)s[i]=new o(4);A.WriteByte(n);var g=new r(A);for(i=0;i<t;){a.ModelEncode(A,g,e[i]);for(var c=1;i+c<t&&e[i+c]==e[i];)c++;c--;var f=e[i];e[i],i+=c+1;var I=c>=3?3:c;for(s[f].ModelEncode(A,g,I),c-=I,f=256;3==I;)I=c>=3?3:c,s[f].ModelEncode(A,g,I),f=257,c-=I}return g.RangeFinishEncode(A),A.buf.slice(0,A.pos)}decodeRLE1(e,t){var A=new Buffer.allocUnsafe(t),n=e.ReadByte();0==n&&(n=256);for(var i=new Array(n),a=0;a<n;a++)i[a]=new o(n);var s=new Array(258);for(a=0;a<=257;a++)s[a]=new o(4);var g=new r(e);g.RangeStartDecode(e);var c=0;for(a=0;a<t;){A[a]=i[c].ModelDecode(e,g),c=A[a];for(var f=s[A[a]].ModelDecode(e,g),I=f,h=256;3==f;)f=s[h].ModelDecode(e,g),h=257,I+=f;for(var C=1;C<=I;C++)A[a+C]=A[a];a+=I+1}return A}encodeRLE1(e,t,A){for(var n=0,i=0;i<t;i++)n<e[i]&&(n=e[i]);n++;var a=new Array(n);for(i=0;i<n;i++)a[i]=new o(n);var s=new Array(258);for(i=0;i<=257;i++)s[i]=new o(4);A.WriteByte(n);for(var g=new r(A),c=(i=0,0);i<t;){a[c].ModelEncode(A,g,e[i]);for(var f=1;i+f<t&&e[i+f]==e[i];)f++;f--;var I=e[i];c=e[i],i+=f+1;var h=f>=3?3:f;for(s[I].ModelEncode(A,g,h),f-=h,I=256;3==h;)h=f>=3?3:f,s[I].ModelEncode(A,g,h),I=257,f-=h}return g.RangeFinishEncode(A),A.buf.slice(0,A.pos)}decodePackMeta(e){this.nsym=e.ReadByte();for(var t=new Array(this.nsym),A=0;A<this.nsym;A++)t[A]=e.ReadByte();return[t,e.ReadUint7()]}decodePack(e,t,A){var r=new Buffer.allocUnsafe(A);if(this.nsym<=1)for(var n=0;n<A;n++)r[n]=t[0];else if(this.nsym<=2){n=0;for(var o=0;n<A;n++){if(n%8==0)var i=e[o++];r[n]=t[1&i],i>>=1}}else if(this.nsym<=4)for(n=0,o=0;n<A;n++)n%4==0&&(i=e[o++]),r[n]=t[3&i],i>>=2;else{if(!(this.nsym<=16))return e;for(n=0,o=0;n<A;n++)n%2==0&&(i=e[o++]),r[n]=t[15&i],i>>=4}return r}packMeta(e){for(var t=new n("",0,1024),A=new Array(256),r=0;r<e.length;r++)A[e[r]]=1;var o=0;for(r=0;r<256;r++)A[r]&&(A[r]=++o);for(t.WriteByte(o),r=0;r<256;r++)A[r]&&(t.WriteByte(r),A[r]--);return[t,A,o]}encodePack(e){var t,A,r;[t,A,r]=this.packMeta(e);var n=e.length,o=0;if(r<=1)return t.WriteUint7(0),[t,new Buffer.allocUnsafe(0),0];if(r<=2){for(var i=new Buffer.allocUnsafe(Math.floor((n+7)/8)),a=(o=0,0);o<(-8&n);o+=8,a++)i[a]=(0|A[e[o+0]])+(A[e[o+1]]<<1)+(A[e[o+2]]<<2)+(A[e[o+3]]<<3)+(A[e[o+4]]<<4)+(A[e[o+5]]<<5)+(A[e[o+6]]<<6)+(A[e[o+7]]<<7);if(o<n){i[a]=0;for(var s=0;o<n;)i[a]|=A[e[o++]]<<s,s++;a++}return t.WriteUint7(a),[t,i,i.length]}if(r<=4){for(i=new Buffer.allocUnsafe(Math.floor((n+3)/4)),o=0,a=0;o<(-4&n);o+=4,a++)i[a]=(0|A[e[o+0]])+(A[e[o+1]]<<2)+(A[e[o+2]]<<4)+(A[e[o+3]]<<6);if(o<n){for(i[a]=0,s=0;o<n;)i[a]|=A[e[o++]]<<s,s+=2;a++}return t.WriteUint7(a),[t,i,i.length]}if(r<=16){for(i=new Buffer.allocUnsafe(Math.floor((n+1)/2)),o=0,a=0;o<(-2&n);o+=2,a++)i[a]=(0|A[e[o+0]])+(A[e[o+1]]<<4);return o<n&&(i[a++]=A[e[o++]]),t.WriteUint7(a),[t,i,i.length]}return t.WriteUint7(e.length),[t,e,e.length]}encodeStripe(e,t,A){0==A&&(A=4);for(var r=new Array(A),o=new Array(A),i=0;i<A;i++)o[i]=Math.floor(t.length/A)+(t.length%A>i),r[i]=new Array(o[i]);for(var a=0,s=0;s<t.length;s+=A,a++)for(var g=0;g<A;g++)a<r[g].length&&(r[g][a]=t[s+g]);var c=new Array(A),f=0;for(i=0;i<A;i++){var I=this.encode(r[i],0),h=this.encode(r[i],1);c[i]=h.length<I.length?h:I,f+=c[i].length}var C=new n("",0,f+5*A+1);for(C.WriteByte(A),i=0;i<A;i++)C.WriteUint7(c[i].length);for(i=0;i<A;i++)C.WriteData(c[i],c[i].length);return C.buf.slice(0,C.buf.pos)}decodeStripe(e,t){for(var A=e.ReadByte(),r=new Array(A),n=new Array(A),o=0;o<A;o++)r[o]=e.ReadUint7();var i=new Array(A);for(o=0;o<A;o++)n[o]=Math.floor(t/A)+(t%A>o),i[o]=this.decodeStream(e,n[o]);var a=new Buffer.allocUnsafe(t);for(o=0;o<A;o++)for(var s=0;s<n[o];s++)a[s*A+o]=i[o][s];return a}decodeCat(e,t){for(var A=new Buffer.allocUnsafe(t),r=0;r<t;r++)A[r]=e.ReadByte();return A}}},88946:e=>{e.exports=class{constructor(e){this.low=0,this.range=4294967295,this.code=0,this.FFnum=0,this.carry=0,this.cache=0}RangeStartDecode(e){for(var t=0;t<5;t++)this.code=(this.code<<8)+e.ReadByte();this.code&=4294967295,this.code>>>=0}RangeGetFrequency(e){return this.range=Math.floor(this.range/e),Math.floor(this.code/this.range)}RangeDecode(e,t,A,r){for(this.code-=t*this.range,this.range*=A;this.range<1<<24;)this.range*=256,this.code=256*this.code+e.ReadByte()}RangeShiftLow(e){if(this.low<4278190080|this.carry){for(e.WriteByte(this.cache+this.carry);this.FFnum;)e.WriteByte(this.carry-1),this.FFnum--;this.cache=this.low>>>24,this.carry=0}else this.FFnum++;this.low<<=8,this.low>>>=0}RangeEncode(e,t,A,r){var n=this.low;for(this.range=Math.floor(this.range/r),this.low+=t*this.range,this.low>>>=0,this.range*=A,this.low<n&&(0!=this.carry&&console.log("ERROR: Multiple carry"),this.carry=1);this.range<1<<24;)this.range*=256,this.RangeShiftLow(e)}RangeFinishEncode(e){for(var t=0;t<5;t++)this.RangeShiftLow(e)}}},38298:e=>{e.exports=class{constructor(e=256){this.total_freq=e,this.max_sym=e-1,this.S=new Array,this.F=new Array;for(var t=0;t<=this.max_sym;t++)this.S[t]=t,this.F[t]=1}ModelDecode(e,t){for(var A=t.RangeGetFrequency(this.total_freq),r=0,n=0;r+this.F[n]<=A;)r+=this.F[n++];t.RangeDecode(e,r,this.F[n],this.total_freq),this.F[n]+=16,this.total_freq+=16,this.total_freq>65519&&this.ModelRenormalise();var o=this.S[n];if(n>0&&this.F[n]>this.F[n-1]){var i=this.F[n];this.F[n]=this.F[n-1],this.F[n-1]=i,i=this.S[n],this.S[n]=this.S[n-1],this.S[n-1]=i}return o}ModelRenormalise(){this.total_freq=0;for(var e=0;e<=this.max_sym;e++)this.F[e]-=Math.floor(this.F[e]/2),this.total_freq+=this.F[e]}ModelEncode(e,t,A){for(var r=0,n=0;this.S[n]!=A;n++)r+=this.F[n];if(t.RangeEncode(e,r,this.F[n],this.total_freq),this.F[n]+=16,this.total_freq+=16,this.total_freq>65519&&this.ModelRenormalise(),A=this.S[n],n>0&&this.F[n]>this.F[n-1]){var o=this.F[n];this.F[n]=this.F[n-1],this.F[n-1]=o,o=this.S[n],this.S[n]=this.S[n-1],this.S[n-1]=o}}}},50786:(e,t,A)=>{const r=A(76526),n=A(38298),o=A(88946);function i(e,t,A){for(var r=0,n=0,o=-1,i=new Array(1024);n<A;){var a=e.ReadByte();if(i[r++]=a,n+=a,a==o){var s=e.ReadByte();for(n+=a*s;s--;)i[r++]=a}o=a}var g=0;for(r=0,n=0;n<A;){var c=0;do{var f=i[r++];c+=f}while(255==f);for(;c--;)t[n++]=g;g++}}function a(e,t,A){var r=e.context;return t.qctx=(t.qctx<<e.qshift)+e.qtab[A],r+=(t.qctx&(1<<e.qbits)-1)<<e.qloc,e.do_pos&&(r+=e.ptab[Math.min(t.p,1023)]<<e.ploc),e.do_delta&&(r+=e.dtab[Math.min(t.delta,255)]<<e.dloc,t.delta+=t.prevq!=A?1:0,t.prevq=A),e.do_sel&&(r+=t.s<<e.sloc),t.p--,65535&r}function s(e){var t={};t.context=e.ReadUint16(),t.pflags=e.ReadByte(),t.do_dedup=2&t.pflags,t.fixed_len=4&t.pflags,t.do_sel=8&t.pflags,t.do_qmap=16&t.pflags,t.do_pos=32&t.pflags,t.do_delta=64&t.pflags,t.do_qtab=128&t.pflags,t.max_sym=e.ReadByte();var A=e.ReadByte();if(t.qbits=A>>4,t.qshift=15&A,A=e.ReadByte(),t.qloc=A>>4,t.sloc=15&A,A=e.ReadByte(),t.ploc=A>>4,t.dloc=15&A,t.qmap=new Array(256),16&t.pflags)for(var r=0;r<t.max_sym;r++)t.qmap[r]=e.ReadByte();else for(r=0;r<256;r++)t.qmap[r]=r;if(t.qtab=new Array(1024),t.qbits>0&&128&t.pflags)i(e,t.qtab,256);else for(r=0;r<256;r++)t.qtab[r]=r;return t.ptab=new Array(1024),32&t.pflags&&i(e,t.ptab,1024),t.dtab=new Array(256),64&t.pflags&&i(e,t.dtab,256),t}function g(e,t,A,r,n,o){A.max_sel>0?n.s=r.sel.ModelDecode(e,t):n.s=0,n.x=A.stab[n.s];var i=A.params[n.x];if(i.fixed_len>=0){var a=r.len[0].ModelDecode(e,t);a|=r.len[1].ModelDecode(e,t)<<8,a|=r.len[2].ModelDecode(e,t)<<16,a|=r.len[3].ModelDecode(e,t)<<24,i.fixed_len>0&&(i.fixed_len=-a)}else a=-i.fixed_len;n.len=a,A.do_rev&&(o[n.rec]=r.rev.ModelDecode(e,t)),n.is_dup=0,2&i.pflags&&r.dup.ModelDecode(e,t)&&(n.is_dup=1),n.p=a,n.delta=0,n.qctx=0,n.prevq=0,n.rec++}function c(e,t,A){for(var r=0,n=0,o=new Array(2*A),i=0;r<A;){for(var a=r;r<A&&t[r]==n;)r++;var s=r-a;do{var g=Math.min(255,s);o[i++]=g,s-=g}while(255==g);n++}var c=-1,f=new Array(2*A),I=0;for(r=0;r<i;){var h=o[r++];if(f[I++]=h,h==c){for(a=r;r<i&&o[r]==c&&r-a<255;)r++;f[I++]=r-a}else c=h}e.WriteData(f,I)}e.exports={decode:function(e,t){return function(e,t){var A=e.ReadUint7(),r=function(e){var t={max_sym:0};if(5==e.ReadByte()){var A=e.ReadByte(),r=1&A?e.ReadByte():1,n=A.nparam>1?A.nparam-1:0,o=new Array(256);if(2&A)n=e.ReadByte(),i(e,o,256);else{for(var a=0;a<r;a++)o[a]=a;for(;a<256;a++)o[a]=r-1}t.do_rev=4&A,t.stab=o,t.max_sel=n,t.params=new Array(t.nparam);for(var g=0;g<r;g++)t.params[g]=s(e),t.max_sym<t.params[g].max_sym&&(t.max_sym=t.params[g].max_sym);return t}console.error("Invalid FQZComp version number")}(e);if(r){var c=r.params,f=new Array(t.length),I=function(e){var t={};t.qual=new Array(65536);for(var A=0;A<65536;A++)t.qual[A]=new n(e.max_sym+1);for(t.len=new Array(4),A=0;A<4;A++)t.len[A]=new n(256);return t.rev=new n(2),t.dup=new n(2),e.max_sel>0&&(t.sel=new n(e.max_sel+1)),t}(r),h=new o(e);h.RangeStartDecode(e);for(var C=new Buffer.allocUnsafe(A),d={qctx:0,prevq:0,delta:0,p:0,s:0,x:0,len:0,is_dup:0,rec:0},l=0;l<A;){if(0==d.p){if(g(e,h,r,I,d,f),d.is_dup>0&&I.dup.ModelDecode(e,h)){for(var u=0;u<len;u++)C[l+u]=C[l+u-d.len];l+=d.len,d.p=0;continue}t.push(d.len);var B=(c=r.params[d.x]).context}var Q=I.qual[B].ModelDecode(e,h);C[l++]=c.qmap[Q],B=a(c,d,Q)}return r.do_rev&&function(e,t,A,r){for(var n=0,o=0;o<t;){if(A[n])for(var i=0,a=r[n]-1;i<a;){var s=e[o+i];e[o+i]=e[o+a],e[o+a]=s,i++,a--}o+=r[n++]}}(C,A,f,t),C}}(new r(e),t)},encode:function(e,t,A){for(var i=new Array(2),a=new Array(2),s=new Array(2),g=new Array(2),f=new Array(256),I=0;I<2;I++)i[I]=new Array(256),a[I]=new Array(256),s[I]=new Array(1024),g[I]=new Array(256);(C=new r("",0,1.1*e.length+100)).WriteUint7(e.length);var h=function(e,t,A,r){for(var n=A[0],o=0;o<A.length&&A[o]==n;o++);var i=o==A.length?1:0,a=0,s=0;for(o=0;o<256;o++)r[0][o]=0;var g=0,c=0;for(o=0;o<e.length;o++)0==c&&(c=t[g<t.length-1?g++:g]),r[0][e[o]]++,c--;for(o=0;o<256;o++)r[0][o]&&(s<o&&(s=o),a++);var f=5,I=0;return a<=16&&(I=1,f=a<=2?1:a<=4?2:a<=8?3:4),[{qbits:8+(f>4),qshift:f,qloc:7,pbits:7,pshift:t[0]>128?1:0,ploc:0,dbits:f>4?0:1,dshift:3,dloc:15,sbits:0,sloc:15,do_stab:0,context:0,max_sym:s,nsym:a,do_qmap:I,do_dedup:0,fixed_len:1==t.length?1:0,do_sel:0,do_rev:0,do_pos:1,do_delta:f<=4?1:0,do_qtab:0,qbits:8+(f>4)-(0==i),sbits:1,sloc:15-(f<=4),do_stab:1,do_sel:1}]}(e,t,A,i),C=function(e,t,A,r,n,o,i){for(var a=[0,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7],s=0;s<t.length;s++)i[s]=s;for(;s<256;s++)i[s]=t.length-1;e.WriteByte(5);var g=(t.length>1?1:0)|(t[0].do_stab?2:0);if(e.WriteByte(g),1&g&&e.WriteByte(t.length),2&g){var f=1<<t[0].sbits;f>0&&f--,e.WriteByte(f),c(e,i,256)}for(var I=0;I<t.length;I++){if(e.WriteUint16(t[I].context),e.WriteByte((t[I].do_qtab?128:0)|(t[I].do_delta?64:0)|(t[I].do_pos?32:0)|(t[I].do_qmap?16:0)|(t[I].do_sel?8:0)|(t[I].fixed_len?4:0)|(t[I].do_dedup?2:0)),t[I].do_qmap?e.WriteByte(t[I].nsym):e.WriteByte(t[I].max_sym),e.WriteByte(t[I].qbits<<4|t[I].qshift),e.WriteByte(t[I].qloc<<4|t[I].sloc),e.WriteByte(t[I].ploc<<4|t[I].dloc),t[I].do_qmap){t[I].max_sym=t[I].nsym;var h=0;for(s=0;s<256;s++)A[I][s]&&(e.WriteByte(s),A[I][s]=h++);for(;h<t[I].nsym;h++)e.WriteByte(0)}else for(s=0;s<256;s++)A[I][s]=s;if(t[I].qbits>0){for(s=0;s<256;s++)r[I][s]=s;t[I].do_qtab&&c(e,r[I],256)}if(t[I].pbits>0){for(s=0;s<1024;s++)n[I][s]=Math.min((1<<t[I].pbits)-1,s>>t[I].pshift);c(e,n[I],1024)}if(t[I].dbits>0){for(s=0;s<256;s++)a[s]>(1<<t[I].dbits)-1&&(a[s]=(1<<t[I].dbits)-1);for(s=0;s<256;s++)o[I][s]=a[Math.min(a.length-1,s>>t[I].dshift)];c(e,o[I],256)}}return e}(C,h,i,a,s,g,f);return function(e,t,A,r,i,a,s,g,c,f){var I=1<<i[0].sbits;I>0&&I--;for(var h=t.length,C=0,d=0;d<i.length;d++)C<i[d].max_sym&&(C=i[d].max_sym);for(var l=new Array(65536),u=0;u<65536;u++)l[u]=new n(C+1);var B=new Array(4);for(u=0;u<4;u++)B[u]=new n(256);new n(2),new n(2);for(var Q=new n(I+1),E=new o(t),w=(d=0,u=0,0);u<h;){if(0==d){var m=r[w];i[0].sbits>0&&Q.ModelEncode(e,E,m);var y=f[m],p=A[Math.min(A.length-1,w++)];i[y].fixed_len?i[y].fixed_len>0&&(B[0].ModelEncode(e,E,255&p),B[1].ModelEncode(e,E,p>>8&255),B[2].ModelEncode(e,E,p>>16&255),B[3].ModelEncode(e,E,p>>24&255),i[y].fixed_len=-1):(B[0].ModelEncode(e,E,255&p),B[1].ModelEncode(e,E,p>>8&255),B[2].ModelEncode(e,E,p>>16&255),B[3].ModelEncode(e,E,p>>24&255)),i[y].do_dedup&&process.exit(1),d=p;var v=0,D=i[y].context,S=0,b=0}var N=t[u++],R=a[y][N];l[D].ModelEncode(e,E,R),S=(S<<i[y].qshift)+s[y][R],D=i[y].context,D+=(S&(1<<i[y].qbits)-1)<<i[y].qloc,i[y].pbits>0&&(D+=g[y][Math.min(d,1023)]<<i[y].ploc),i[y].dbits>0&&(D+=c[y][Math.min(v,255)]<<i[y].dloc,v+=b!=R?1:0,b=R),i[y].do_sel&&(D+=m<<i[y].sloc),D&=65535,d--}return E.RangeFinishEncode(e),e.buf.slice(0,e.pos)}(C,e,t,A,h,i,a,s,g,f)}}},25164:(e,t,A)=>{"use strict";var r=A(5960),n=A(57379),o=A(85911),i=A(50786),a=A(57561);e.exports={r4x8_uncompress:function(e,t){r.decode(e).copy(t,0,0)},r4x16_uncompress:function(e,t){n.decode(e).copy(t,0,0)},arith_uncompress:function(e,t){o.decode(e).copy(t,0,0)},fqzcomp_uncompress:function(e,t){var A=new Array;i.decode(e,A).copy(t,0,0)},tok3_uncompress:function(e,t){var A=a.decode(e,0,"\0");Buffer.from(A,"binary").copy(t,0,0)}}},76526:e=>{e.exports=class{constructor(e,t=0,A=0){0!=A?(this.buf=Buffer.allocUnsafe(A),this.length=A):(this.buf=e,this.length=e.length),this.pos=t}EOF(){return this.pos>=this.length}ReadData(e){var t=this.buf.slice(this.pos,this.pos+e);return this.pos+=e,t}ReadByte(){const e=this.buf[this.pos];return this.pos++,e}ReadChar(){const e=this.buf[this.pos];return this.pos++,String.fromCharCode(e)}ReadUint16(){return this.ReadByte()|this.ReadByte()<<8}ReadUint32(){const e=this.buf.readInt32LE(this.pos);return this.pos+=4,e}ReadString(){var e="";do{var t=this.buf[this.pos++];t&&(e+=String.fromCharCode(t))}while(t);return e}ReadUint7(){var e=0;do{var t=this.ReadByte();e=e<<7|127&t}while(128&t);return e}ReadITF8(){var e=this.buf[this.pos];return this.pos++,e>=240?(e=(15&e)<<28,e+=(this.buf[this.pos+0]<<20)+(this.buf[this.pos+1]<<12)+(this.buf[this.pos+2]<<4)+(this.buf[this.pos+3]>>4),this.pos+=4):e>=224?(e=(15&e)<<24,e+=(this.buf[this.pos+0]<<16)+(this.buf[this.pos+1]<<8)+(0|this.buf[this.pos+2]),this.pos+=3):e>=192?(e=(31&e)<<16,e+=(this.buf[this.pos+0]<<8)+(0|this.buf[this.pos+1]),this.pos+=2):e>=128&&(e=(63&e)<<8,e+=this.buf[this.pos],this.pos++),e}WriteByte(e){this.buf[this.pos++]=e}WriteChar(e){this.buf[this.pos++]=e.charCodeAt(0)}WriteString(e){for(var t=0;t<e.length;t++)this.buf[this.pos++]=e.charCodeAt(t);this.buf[this.pos++]=0}WriteData(e,t){for(var A=0;A<t;A++)this.buf[this.pos++]=e[A]}WriteStream(e){this.WriteData(e.buf,e.pos)}WriteUint16(e){this.WriteByte(255&e),this.WriteByte(e>>8&255)}WriteUint32(e){this.buf.writeInt32LE(e,this.pos),this.pos+=4}WriteUint7(e){var t=0,A=e;do{t+=7,A>>=7}while(A>0);do{t-=7,this.WriteByte((e>>t&127)+((t>0)<<7))}while(t>0)}WriteITF8(e){e<0&&(e=1+e),e<=127?this.buf[this.pos++]=e:e<=16383?(this.buf[this.pos++]=128|Math.floor(e/256),this.buf[this.pos++]=255&e):e<131071?(this.buf[this.pos++]=192|Math.floor(e/65536),this.buf[this.pos++]=255&Math.floor(e/256),this.buf[this.pos++]=255&e):e<268435455?(this.buf[this.pos++]=224|Math.floor(e/16777216),this.buf[this.pos++]=255&Math.floor(e/65536),this.buf[this.pos++]=255&Math.floor(e/256),this.buf[this.pos++]=255&e):(this.buf[this.pos++]=240|Math.floor(e/268435456),this.buf[this.pos++]=255&Math.floor(e/1048576),this.buf[this.pos++]=255&Math.floor(e/4096),this.buf[this.pos++]=255&Math.floor(e/4),this.buf[this.pos++]=15&e)}WriteByteNeg(e){this.buf[--this.pos]=e}}},5960:(e,t,A)=>{const r=A(76526);function n(e){return 4095&e}function o(e,t){for(var A=0;t>=e[A+1];)A++;return A}function i(e){for(var t=new Array(4096),A=0,r=0;r<4096;r++){for(;r>=e[A+1];)A++;t[r]=A}return t}function a(e,t,A){return A*(e>>12)+(4095&e)-t}function s(e,t){for(;t<1<<23;)t=(t<<8)+e.ReadByte();return t}function g(e,t){t.WriteByteNeg(e>>24&255),t.WriteByteNeg(e>>16&255),t.WriteByteNeg(e>>8&255),t.WriteByteNeg(255&e)}function c(e,t,A,r,n){return e=function(e,t,A,r){for(var n=(1<<23>>r<<8)*A;e>=n;)t.WriteByteNeg(255&e),e>>=8;return e}(e,t,r,n),(Math.floor(e/r)<<n)+e%r+A}function f(e,t,A){for(var r=0;r<256;r++)t[r]=0;var n=e.ReadByte(),o=n,i=0;do{var a=e.ReadITF8();t[n]=a,i>0?(i--,n++):(n=e.ReadByte())==o+1&&(i=e.ReadByte()),o=n}while(0!=n);for(A[0]=0,r=0;r<=255;r++)A[r+1]=A[r]+t[r]}function I(e){for(var t=0,A=0;A<256;A++)t+=e[A];const r=4096;var n=r/t;do{var o=0,i=0,a=0;for(t=0,A=0;A<256;A++)0!=e[A]&&(o<e[A]&&(o=e[A],i=A),e[A]=Math.floor(e[A]*n),0==e[A]&&(e[A]=1),t+=e[A]);t<r?e[i]+=r-t:t-r<e[i]/2&&e[i]>2?e[i]-=t-r:t!=r&&(n*=.99,a=1)}while(a)}function h(e,t){for(var A=0,r=0;r<256;r++)if(t[r]){if(A>0)A--;else if(e.WriteByte(r),r>0&&t[r-1]>0){for(A=r+1;A<256&&t[A];A++);A-=r+1,e.WriteByte(A)}e.WriteITF8(t[r])}e.WriteByte(0)}e.exports={decode:function(e){var t=new r(e),A=t.ReadByte(),g=(t.ReadUint32(),t.ReadUint32());return 0==A?function(e,t){var A=new Array(256),r=new Array(256);f(e,A,r);for(var o=i(r),g=new Array(4),c=0;c<4;c++)g[c]=e.ReadUint32();var I=new Buffer.allocUnsafe(t);for(c=0;c<t;c++){var h=c%4,C=o[n(g[h])];I[c]=C,g[h]=a(g[h],r[C],A[C]),g[h]=s(e,g[h])}return I}(t,g):function(e,t){var A=new Array(256),r=new Array(256);!function(e,t,A){for(var r=0;r<256;r++){t[r]=new Array(256),A[r]=new Array(256);for(var n=0;n<256;n++)t[r][n]=0}var o=e.ReadByte(),i=o,a=0;do{f(e,t[o],A[o]),a>0?(a--,o++):(o=e.ReadByte())==i+1&&(a=e.ReadByte()),i=o}while(0!=o)}(e,A,r);for(var g=new Array(256),c=0;c<256;c++)g[c]=i(r[c]);for(var I=new Array(4),h=new Array(4),C=0;C<4;C++)I[C]=e.ReadUint32(),h[C]=0;var d=new Buffer.allocUnsafe(t),l=Math.floor(t/4);for(c=0;c<l;c++)for(C=0;C<4;C++){var u=n(I[C]),B=g[h[C]][u];d[c+C*l]=B,I[C]=a(I[C],r[h[C]][B],A[h[C]][B]),I[C]=s(e,I[C]),h[C]=B}for(c*=4;c<t;)u=n(I[3]),B=o(r[h[3]],u),d[c++]=B,I[3]=a(I[3],r[h[3]][B],A[h[3]][B]),I[3]=s(e,I[3]),h[3]=B;return d}(t,g)},encode:function(e,t){return 0==t?function(e){const t=e.length;var A=new r("",0,780);A.WriteByte(0),A.WriteUint32(0),A.WriteUint32(0);var n=new Array(256);(function(e,t){for(var A=0;A<256;A++)t[A]=0;for(A=0;A<e.length;A++)t[e[A]]++})(e,n),I(n),h(A,n);var o=new Array(256);o[0]=0;for(var i=1;i<256;i++)o[i]=o[i-1]+n[i-1];var a=new Array(4);for(i=0;i<4;i++)a[i]=1<<23;var s=Math.floor(1.05*t+100),f=new r("",s,s);for(i=t-1;i>=0;i--)a[i%4]=c(a[i%4],f,o[e[i]],n[e[i]],12);for(i=3;i>=0;i--)g(a[i],f);var C=A.pos;return A.buf.writeInt32LE(C-9+(f.length-f.pos),1),A.buf.writeInt32LE(t,5),Buffer.concat([A.buf.slice(0,A.pos),f.buf.slice(f.pos,f.length)],A.pos+f.length-f.pos)}(e):function(e){const t=e.length;var A=new r("",0,198156);A.WriteByte(1),A.WriteUint32(0),A.WriteUint32(0);for(var n=new Array(256),o=new Array(256),i=new Array(256),a=0;a<256;a++)o[a]=new Array(256),i[a]=new Array(256);for(function(e,t,A){for(var r=0;r<256;r++){A[r]=0;for(var n=0;n<256;n++)t[r][n]=0}var o=0;for(r=0;r<e.length;r++)A[e[r]]++,t[o][e[r]]++,o=e[r];t[0][e[1*(e.length>>2)]]++,t[0][e[2*(e.length>>2)]]++,t[0][e[3*(e.length>>2)]]++,A[0]+=3}(e,o,n),function(e,t){for(var A=0;A<256;A++)t[A]&&I(e[A])}(o,n),function(e,t,A){for(var r=0,n=0;n<256;n++)if(A[n]){if(r>0)r--;else if(e.WriteByte(n),n>0&&A[n-1]>0){for(r=n+1;r<256&&A[r];r++);r-=n+1,e.WriteByte(r)}h(e,t[n])}e.WriteByte(0)}(A,o,n),a=0;a<256;a++)if(n[a]){i[a][0]=0;for(var s=1;s<256;s++)i[a][s]=i[a][s-1]+o[a][s-1]}var f=new Array(4),C=new Array(4);for(s=0;s<4;s++)f[s]=1<<23,C[s]=0;var d=new r("",t,t),l=Math.floor(t/4),u=new Array(4),B=new Array(4);for(s=0;s<4;s++)u[s]=(s+1)*l-2,B[s]=e[u[s]+1];for(B[3]=e[t-1],a=t-2;a>4*l-2;a--)f[3]=c(f[3],d,i[e[a]][B[3]],o[e[a]][B[3]],12),B[3]=e[a];for(;u[0]>=0;)for(s=3;s>=0;s--){var Q=e[u[s]];f[s]=c(f[s],d,i[Q][B[s]],o[Q][B[s]],12),B[s]=Q,u[s]--}for(s=3;s>=0;s--)f[s]=c(f[s],d,i[0][B[s]],o[0][B[s]],12);for(a=3;a>=0;a--)g(f[a],d);var E=A.pos;return A.buf.writeInt32LE(E-9+(d.length-d.pos),1),A.buf.writeInt32LE(t,5),Buffer.concat([A.buf.slice(0,A.pos),d.buf.slice(d.pos,d.length)],A.pos+d.length-d.pos)}(e)}}},57379:(e,t,A)=>{const r=A(76526);function n(e,t){return e&(1<<t)-1}function o(e,t){for(var A=0;t>=e[A+1];)A++;return A}function i(e,t){for(var A=1<<t,r=new Array(A),n=0,o=0;o<A;o++){for(;o>=e[n+1];)n++;r[o]=n}return r}function a(e,t,A,r){return A*(e>>r)+(e&(1<<r)-1)-t}function s(e,t){return t<32768&&(t=(t<<16)+e.ReadUint16()),t}function g(e,t){t.WriteByteNeg(e>>24&255),t.WriteByteNeg(e>>16&255),t.WriteByteNeg(e>>8&255),t.WriteByteNeg(255&e)}function c(e,t,A,r,n){return e=function(e,t,A,r){for(var n=(1<<31-r)*A;e>=n;)t.WriteByteNeg(e>>8&255),t.WriteByteNeg(255&e),e>>=16;return e}(e,t,r,n),(Math.floor(e/r)<<n)+e%r+A}function f(e,t,A){0==A&&(A=4);for(var n=new Array(A),o=new Array(A),i=0;i<A;i++)o[i]=Math.floor(t.length/A)+(t.length%A>i),n[i]=new Array(o[i]);for(var a=0,s=0;s<t.length;s+=A,a++)for(var g=0;g<A;g++)a<n[g].length&&(n[g][a]=t[s+g]);var c=new Array(A),f=0;for(i=0;i<A;i++){var I=h(n[i],0),C=h(n[i],1);c[i]=C.length<I.length?C:I,f+=c[i].length}var d=new r("",0,f+5*A+1);for(d.WriteByte(A),i=0;i<A;i++)d.WriteUint7(c[i].length);for(i=0;i<A;i++)d.WriteData(c[i],c[i].length);return d.buf.slice(0,d.buf.pos)}function I(e,t){var A=e.ReadByte(),g=1&A,c=8&A,f=32&A,h=64&A,l=128&A;if(16&A||(t=e.ReadUint7()),c)return function(e,t){for(var A=e.ReadByte(),r=new Array(A),n=new Array(A),o=0;o<A;o++)r[o]=e.ReadUint7();var i=new Array(A);for(o=0;o<A;o++)n[o]=Math.floor(t/A)+(t%A>o),i[o]=I(e,n[o]);var a=new Buffer.allocUnsafe(t);for(o=0;o<A;o++)for(var s=0;s<n[o];s++)a[s*A+o]=i[o][s];return a}(e,t);if(l)var B=t,[Q,E,t]=function(e){for(var t=e.ReadByte(),A=new Array(t),r=0;r<t;r++)A[r]=e.ReadByte();return[A,t,e.ReadUint7()]}(e);if(h)var w=t,[m,y,t]=function(e){var t=e.ReadUint7(),A=e.ReadUint7();if(1&t)var n=e.ReadData((t-1)/2);else{var o=e.ReadUint7();n=e.ReadData(o),n=d(new r(n),t/2)}n=new r(n);var i=new Array(256),a=n.ReadByte();0==a&&(a=256);for(var s=0;s<a;s++)i[n.ReadByte()]=1;return[i,n,A]}(e);if(f)var p=e.ReadData(t);else p=0==g?d(e,t):function(e,t){var A=(I=e.ReadByte())>>4,g=e;if(1&I){var c=e.ReadUint7(),f=e.ReadUint7(),I=new r(e.ReadData(f));g=new r(d(I,c))}var h=new Array(256),l=new Array(256);!function(e,t,A,r){for(var n=0;n<256;n++){t[n]=new Array(256),A[n]=new Array(256);for(var o=0;o<256;o++)t[n][o]=0}var i=C(e);for(n=0;n<256;n++)if(i[n]){var a=0;for(o=0;o<256;o++)i[o]&&(a>0?a--:(t[n][o]=e.ReadUint7(),0==t[n][o]&&(a=e.ReadByte())));for(u(t[n],r),A[n][0]=0,o=0;o<256;o++)A[n][o+1]=A[n][o]+t[n][o]}}(g,h,l,A);for(var B=new Array(256),Q=0;Q<256;Q++)B[Q]=i(l[Q],A);for(var E=new Array(4),w=new Array(4),m=0;m<4;m++)E[m]=e.ReadUint32(),w[m]=0;var y=new Buffer.allocUnsafe(t),p=Math.floor(t/4);for(Q=0;Q<p;Q++)for(m=0;m<4;m++){var v=n(E[m],A),D=B[w[m]][v];y[Q+m*p]=D,E[m]=a(E[m],l[w[m]][D],h[w[m]][D],A),E[m]=s(e,E[m]),w[m]=D}for(Q*=4;Q<t;)v=n(E[3],A),D=o(l[w[3]],v),y[Q++]=D,E[3]=a(E[3],l[w[3]][D],h[w[3]][D],A),E[3]=s(e,E[3]),w[3]=D;return y}(e,t);return h&&(p=function(e,t,A,n){new r(e);for(var o=new Buffer.allocUnsafe(n),i=0,a=0;i<n;a++){var s=e[a];if(t[s])for(var g=A.ReadUint7(),c=0;c<=g;c++)o[i++]=s;else o[i++]=s}return o}(p,m,y,w)),l&&(p=function(e,t,A,r){var n=new Buffer.allocUnsafe(r),o=0;if(A<=1)for(var i=0;i<r;i++)n[i]=t[0];else if(A<=2)for(i=0;i<r;i++){if(i%8==0)var a=e[o++];n[i]=t[1&a],a>>=1}else if(A<=4)for(i=0;i<r;i++)i%4==0&&(a=e[o++]),n[i]=t[3&a],a>>=2;else if(A<=16)for(i=0;i<r;i++)i%2==0&&(a=e[o++]),n[i]=t[15&a],a>>=4;return n}(p,Q,E,B)),p}function h(e,t){var A=new r("",0,10);A.WriteByte(t);var n=1&t,o=8&t,i=32&t,a=64&t,s=128&t,I=t>>8;if(16&t||A.WriteUint7(e.length),o)return Buffer.concat([A.buf.slice(0,A.pos),f(0,e,I)]);var h=new Buffer.alloc(0);s&&([h,e]=function(e){for(var t=new Array(256),A=0;A<256;A++)t[A]=0;for(A=0;A<e.length;A++)t[e[A]]++;var n=new Array(256),o=0;for(A=0;A<256;A++)t[A]>0&&(n[A]=o++);if(!(o>16)){if(o<=1)var i=new Buffer.allocUnsafe(0);else if(o<=2){i=new Buffer.allocUnsafe(Math.ceil(e.length/8));var a=-1;for(A=0;A<e.length;A++)A%8==0&&(i[++a]=0),i[a]+=n[e[A]]<<A%8}else if(o<=4)for(i=new Buffer.allocUnsafe(Math.ceil(e.length/4)),a=-1,A=0;A<e.length;A++)A%4==0&&(i[++a]=0),i[a]+=n[e[A]]<<A%4*2;else for(i=new Buffer.allocUnsafe(Math.ceil(e.length/2)),a=-1,A=0;A<e.length;A++)A%2==0&&(i[++a]=0),i[a]+=n[e[A]]<<A%2*4;var s=new r("",0,o+5);for(s.WriteByte(o),a=0,A=0;A<256;A++)t[A]>0&&(t[A]=a++,s.WriteByte(A));return s.WriteUint7(i.length),[s.buf.slice(0,s.pos),i]}}(e));var C=new Buffer.alloc(0);if(a&&([C,e]=function(e){for(var t=new Array(256),A=0;A<256;A++)t[A]=0;var n=-1;for(A=0;A<e.length;A++)t[e[A]]+=e[A]==n?1:-1,n=e[A];var o=0;for(A=0;A<256;A++)t[A]>0&&o++;for(o||(o=1,t[0]=1),(g=new r("",0,o+1+e.length)).WriteByte(o),A=0;A<256;A++)t[A]>0&&g.WriteByte(A);var i=new Buffer.allocUnsafe(e.length),a=0;for(A=0;A<e.length;A++)if(i[a++]=e[A],t[e[A]]>0){n=e[A];for(var s=0;A+s+1<e.length&&e[A+s+1]==n;)s++;g.WriteUint7(s),A+=s}var g,c=Q(g.buf.slice(0,g.pos)),f=new r("",0,16);return f.WriteUint7(2*g.pos),f.WriteUint7(a),f.WriteUint7(c.length),[g=Buffer.concat([f.buf.slice(0,f.pos),c]),i.slice(0,a)]}(e)),e.length<4&&1==n&&(n=0,A.buf[0]&=-2),i)var d=e;else d=0==n?Q(e):function(e){const t=e.length;for(var A=new r("",0,198156),n=new Array(256),o=new Array(256),i=new Array(256),a=0;a<256;a++)o[a]=new Array(256),i[a]=new Array(256);var s=12;(function(e,t,A){for(var r=0;r<256;r++){A[r]=0;for(var n=0;n<256;n++)t[r][n]=0}var o=0;for(r=0;r<e.length;r++)A[o]++,t[o][e[r]]++,o=e[r];A[o]++,t[0][e[1*(e.length>>2)]]++,t[0][e[2*(e.length>>2)]]++,t[0][e[3*(e.length>>2)]]++,A[0]+=3})(e,o,n),function(e,t){for(var A=0;A<256;A++)if(t[A]){var r=Math.ceil(Math.log2(t[A]));r>12&&(r=12),l(e[A],r)}}(o,n);var f=new r("",0,198156);!function(e,t,A){B(e,A);for(var r=0;r<256;r++)if(A[r])for(var n=0,o=0;o<256;o++)if(A[o])if(n)n--;else if(e.WriteUint7(t[r][o]),!t[r][o]){for(var i=o+1;i<256;i++)if(A[i]){if(0!=t[r][i])break;n++}e.WriteByte(n)}}(f,o,n);var I=Q(f.buf.slice(0,f.pos));for(I.length<f.pos?(A.WriteByte(193),A.WriteUint7(f.pos),A.WriteUint7(I.length),A.WriteData(I,I.length)):(A.WriteByte(192),A.WriteData(f.buf,f.pos)),function(e,t){for(var A=0;A<256;A++)t[A]&&u(e[A],12)}(o,n),a=0;a<256;a++)if(n[a]){i[a][0]=0;for(var h=1;h<256;h++)i[a][h]=i[a][h-1]+o[a][h-1]}var C=new Array(4),d=new Array(4);for(h=0;h<4;h++)C[h]=32768,d[h]=0;var E=new r("",1.05*t+100|0,1.05*t+100|0),w=Math.floor(t/4),m=new Array(4),y=new Array(4);for(h=0;h<4;h++)m[h]=(h+1)*w-2,y[h]=e[m[h]+1];for(y[3]=e[t-1],a=t-2;a>4*w-2;a--)C[3]=c(C[3],E,i[e[a]][y[3]],o[e[a]][y[3]],s),y[3]=e[a];for(;m[0]>=0;)for(h=3;h>=0;h--){var p=e[m[h]];C[h]=c(C[h],E,i[p][y[h]],o[p][y[h]],s),y[h]=p,m[h]--}for(h=3;h>=0;h--)C[h]=c(C[h],E,i[0][y[h]],o[0][y[h]],s);for(a=3;a>=0;a--)g(C[a],E);return Buffer.concat([A.buf.slice(0,A.pos),E.buf.slice(E.pos,E.length)],A.pos+E.length-E.pos)}(e);return Buffer.concat([A.buf.slice(0,A.pos),h,C,d])}function C(e){for(var t=new Array(256),A=0;A<256;A++)t[A]=0;var r=0,n=e.ReadByte(),o=n;do{t[n]=1,r>0?(r--,n++):(n=e.ReadByte())==o+1&&(r=e.ReadByte()),o=n}while(0!=n);return t}function d(e,t){var A=new Array(256),r=new Array(256);!function(e,t,A){for(var r=0;r<256;r++)t[r]=0;var n=C(e);for(r=0;r<256;r++)n[r]>0&&(t[r]=e.ReadUint7());for(u(t,12),A[0]=0,r=0;r<=255;r++)A[r+1]=A[r]+t[r]}(e,A,r);for(var o=i(r,12),g=new Array(4),c=0;c<4;c++)g[c]=e.ReadUint32();var f=new Buffer.allocUnsafe(t);for(c=0;c<t;c++){var I=c%4,h=o[n(g[I],12)];f[c]=h,g[I]=a(g[I],r[h],A[h],12),g[I]=s(e,g[I])}return f}function l(e,t){for(var A=0,r=0;r<256;r++)A+=e[r];const n=1<<t;var o=n/A;do{var i=0,a=0,s=0;for(A=0,r=0;r<256;r++)0!=e[r]&&(i<e[r]&&(i=e[r],a=r),e[r]=Math.floor(e[r]*o),0==e[r]&&(e[r]=1),A+=e[r]);A<n?e[a]+=n-A:A-n<e[a]/2&&e[a]>2?e[a]-=A-n:A!=n&&(o=n/A,s=1)}while(s)}function u(e,t){for(var A=0,r=0;r<256;r++)A+=e[r];if(0!=A&&A!=1<<t){for(var n=0;A<1<<t;)A*=2,n++;for(r=0;r<256;r++)e[r]<<=n}}function B(e,t){for(var A=0,r=0;r<256;r++)if(t[r])if(A>0)A--;else if(e.WriteByte(r),r>0&&t[r-1]>0){for(A=r+1;A<256&&t[A];A++);A-=r+1,e.WriteByte(A)}e.WriteByte(0)}function Q(e){const t=e.length;var A=new r("",0,780),n=new Array(256);!function(e,t){for(var A=0;A<256;A++)t[A]=0;for(A=0;A<e.length;A++)t[e[A]]++}(e,n);var o=Math.ceil(Math.log2(t));o>12&&(o=12),l(n,o),function(e,t){B(e,t);for(var A=0;A<256;A++)t[A]&&e.WriteUint7(t[A])}(A,n),l(n,12);var i=new Array(256);i[0]=0;for(var a=1;a<256;a++)i[a]=i[a-1]+n[a-1];var s=new Array(4);for(a=0;a<4;a++)s[a]=32768;var f=new r("",1.05*t+100|0,1.05*t+100|0);for(a=t-1;a>=0;a--)s[a%4]=c(s[a%4],f,i[e[a]],n[e[a]],12);for(a=3;a>=0;a--)g(s[a],f);return Buffer.concat([A.buf.slice(0,A.pos),f.buf.slice(f.pos,f.length)],A.pos+f.length-f.pos)}e.exports={decode:function(e){return I(new r(e),0)},encode:h}},57561:(e,t,A)=>{const r=A(76526),n=A(57379);var o=new(A(85911));function i(e,t){for(var A=e+"";A.length<t;)A="0"+A;return A}function a(e,t,A,r){var n=e[0][0].ReadByte(),o=r-e[0][n].ReadUint32();if(5==n)return t[r]=t[o],A[r]=A[o],t[r];var a=1;t[r]="",A[r]=new Array(256);do{switch(n=e[a][0].ReadByte()){case 2:A[r][a]=e[a][2].ReadChar();break;case 1:A[r][a]=e[a][1].ReadString();break;case 7:A[r][a]=e[a][7].ReadUint32();break;case 3:var s=e[a][3].ReadUint32(),g=e[a][4].ReadByte();A[r][a]=i(s,g);break;case 8:A[r][a]=(0|A[o][a])+e[a][8].ReadByte();break;case 9:s=(0|A[o][a])+e[a][9].ReadByte(),g=A[o][a].length,A[r][a]=i(s,g);break;case 10:A[r][a]=A[o][a];break;default:A[r][a]=""}t[r]+=A[r][a++]}while(12!=n);return t[r]}function s(e,t,A,r,n,o){for(var i=0;i<r.length;i++)if(!(A>0&&5==t[i][0].type)&&t[i][A])switch(e[0].WriteByte(t[i][A].type),t[i][A].type){case 6:e[6].WriteUint32(t[i][A].val);break;case 5:e[5].WriteUint32(t[i][A].val);break;case 1:e[1].WriteString(t[i][A].val);break;case 2:e[2].WriteChar(t[i][A].val);break;case 7:e[7].WriteUint32(t[i][A].val);break;case 3:e[3].WriteUint32(t[i][A].val),e[4].WriteByte(t[i][A].val.length);break;case 8:case 9:e[t[i][A].type].WriteByte(t[i][A].val)}}function g(e,t,A,r){for(var n=0;n<=12;n++)if(!(e[n].pos<=0)){r.WriteByte(n+(0==n?128:0)),e[n]=e[n].buf.slice(0,e[n].pos);var o=c(e[n],A);r.WriteUint7(o.length),r.WriteData(o,o.length)}}function c(e,t){var A,r=1<<30,i=[0,1,64,65,128,129,201];for(var a in i){var s=i[a];if(!(1&s&&e.length<100||8&s&&e.length%4!=0)){try{var g=t?o.encode(e,s):n.encode(e,s)}catch(e){g=0}g&&r>g.length&&(r=g.length,A=g)}}return A}function f(e,t,A,r,n){var o=0,i=n-1;e[n]=new Array(256),t[r]?e[n][0]={type:5,val:n-t[r]}:e[n][0]={type:6,val:0==n?0:1},t[r]=n;for(var a=r.match(/([a-zA-Z0-9]{1,9})|([^a-zA-Z0-9]+)/g),s=0;s<a.length;s++){var g=s+1,c=1,f=a[s];if(a[s].match(/^0+[0-9]*$/g)?c=3:a[s].match(/^[0-9]+$/g)?c=7:1==a[s].length&&(c=2),i>=0&&e[i][g])if(e[i][g].str==a[s])c=10,f="";else if(7==e[i][g].type||8==e[i][g].type){var I=f-e[i][g].str;A[g]++,I>=0&&I<256&&A[g]>n/2&&(c=8,f=I)}else 3!=e[i][g].type&&9!=e[i][g].type||e[i][g].str.length!=f.length||(I=f-e[i][g].str,A[g]++,I>=0&&I<256&&A[g]>n/2&&(c=9,f=I));e[n][g]={str:a[s],val:f,type:c},o<e[n][g].val.length+3&&(o=e[n][g].val.length+3)}return e[n][++g]={type:12},[g+1,o]}e.exports={encode:function(e,t){var A=e.toString();"\n"==A[A.length-1]&&(A=A.substring(0,A.length-1));var n=A.split("\n"),o=new r("",0,2*A.length+1e4);o.WriteUint32(A.length),o.WriteUint32(n.length),o.WriteByte(t);for(var i=new Array(n.length),a={},c=new Array(256).fill(0),I=0,h=0,C=0;C<n.length;C++){var[d,l]=f(i,a,c,n[C],C);I<d&&(I=d),h<l&&(h=l)}for(var u=0;u<I;u++){for(var B=new Array(13),Q=0;Q<=12;Q++)B[Q]=new r("",0,n.length*h);s(B,i,u,n),g(B,0,t,o)}return o.buf.slice(0,o.pos)},decode:function(e,t,A){(e=new r(e)).ReadUint32();var i=e.ReadUint32(),s=e.ReadByte(),g=function(e,t,A,i){for(var a=-1,s=new Array(256);!e.EOF();){var g=e.ReadByte(),c=128&g,f=64&g,I=63&g;if(c&&(s[++a]=new Array(13)),0!=I&&c){var h=new Array(i-1).fill(10);s[a][0]=new r(Buffer.from([I].concat(h)))}if(f){var C=e.ReadByte(),d=e.ReadByte();s[a][I]=new r(s[C][d].buf)}else{var l=e.ReadUint7(),u=e.ReadData(l);s[a][I]=A?o.decode(u):n.decode(u),s[a][I]=new r(s[a][I])}}return s}(e,0,s,i),c=new Array(i),f=new Array(i),I="";void 0===A&&(A="\n");for(var h=0;h<i;h++)I+=a(g,c,f,h)+A;return I}}},22823:e=>{var t={array:function(e){var t=0,A=0,r=[0,1,3,7,15,31,63,127,255];return function(n){for(var o=0;n>0;){var i=8-t;n>=i?(o<<=i,o|=r[i]&e[A++],t=0,n-=i):(o<<=n,o|=(e[A]&r[n]<<8-n-t)>>8-n-t,t+=n,n=0)}return o}},simple:function(e){var A,r,n=t.header(e),o=[],i=0;do{-1!=(r=t.decompress(e,n))&&(o.push(r),i+=r.byteLength)}while(-1!=r);A=new Uint8Array(i),i=0;for(var a=0;a<o.length;++a)r=o[a],A.set(r,i),i+=r.byteLength;return A},header:function(e){if(4348520!=e(24))throw"No magic number found";var t=e(8)-48;if(t<1||t>9)throw"Not a BZIP archive";return t},decompress:function(e,t,A){for(var r=9e5,n="",o=0;o<6;o++)n+=e(8).toString(16);if("177245385090"==n)return-1;if("314159265359"!=n)throw"eek not valid bzip data";if(e(32),e(1))throw"unsupported obsolete version";var i=e(24);if(i>r)throw"Initial position larger than buffer size";var a=e(16),s=new Uint8Array(256),g=0;for(o=0;o<16;o++)if(a&1<<15-o){var c=e(16);for(d=0;d<16;d++)c&1<<15-d&&(s[g++]=16*o+d)}var f=e(3);if(f<2||f>6)throw"another error";var I=e(15);if(0==I)throw"meh";var h=[];for(o=0;o<f;o++)h[o]=o;var C=new Uint8Array(32768);for(o=0;o<I;o++){for(var d=0;e(1);d++)if(d>=f)throw"whoops another error";var l=h[d];h.splice(d,1),h.splice(0,0,l),C[o]=l}var u=g+2,B=[];for(d=0;d<f;d++){var Q,E,w,m=new Uint8Array(258),y=new Uint8Array(21);for(a=e(5),o=0;o<u;o++){for(;;){if(a<1||a>20)throw"I gave up a while ago on writing error messages";if(!e(1))break;e(1)?a--:a++}m[o]=a}for(Q=E=m[0],o=1;o<u;o++)m[o]>E?E=m[o]:m[o]<Q&&(Q=m[o]);(w=B[d]={}).permute=new Uint32Array(258),w.limit=new Uint32Array(21),w.base=new Uint32Array(21),w.minLen=Q,w.maxLen=E;var p=w.base.subarray(1),v=w.limit.subarray(1),D=0;for(o=Q;o<=E;o++)for(a=0;a<u;a++)m[a]==o&&(w.permute[D++]=a);for(o=Q;o<=E;o++)y[o]=v[o]=0;for(o=0;o<u;o++)y[m[o]]++;for(D=a=0,o=Q;o<E;o++)D+=y[o],v[o]=D-1,D<<=1,p[o+1]=D-(a+=y[o]);v[E]=D+y[E]-1,p[Q]=0}var S,b,N,R=new Uint32Array(256);for(o=0;o<256;o++)h[o]=o;S=b=u=N=0;for(var k=new Uint32Array(r);;){if(!u--){if(u=49,N>=I)throw"meow i'm a kitty, that's an error";p=(w=B[C[N++]]).base.subarray(1),v=w.limit.subarray(1)}for(d=e(o=w.minLen);;){if(o>w.maxLen)throw"rawr i'm a dinosaur";if(d<=v[o])break;o++,d=d<<1|e(1)}if((d-=p[o])<0||d>=258)throw"moo i'm a cow";var q=w.permute[d];if(0!=q&&1!=q){if(S){if(S=0,b+a>=r)throw"Boom.";for(R[l=s[h[0]]]+=a;a--;)k[b++]=l}if(q>g)break;if(b>=r)throw"I can't think of anything. Error";l=h[o=q-1],h.splice(o,1),h.splice(0,0,l),R[l=s[l]]++,k[b++]=l}else S||(S=1,a=0),a+=0==q?S:2*S,S<<=1}if(i<0||i>=b)throw"I'm a monkey and I'm throwing something at someone, namely you";for(d=0,o=0;o<256;o++)c=d+R[o],R[o]=d,d=c;for(o=0;o<b;o++)k[R[l=255&k[o]]]|=o<<8,R[l]++;var F=0,L=0,M=0;b&&(L=255&(F=k[i]),F>>=8,M=-1);var U,_,x,J=new Uint8Array(r),H=0;for(A||(A=1/0);b;){for(b--,_=L,L=255&(F=k[F]),F>>=8,3==M++?(U=L,x=_,L=-1):(U=1,x=L);U--;)if(J[H++]=x,! --A)return J;L!=_&&(M=0)}return J.subarray(0,H)}};e.exports=t},14579:e=>{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],A=0;A<e.length;A++)t.push(255&e.charCodeAt(A));return t},bytesToString:function(e){for(var t=[],A=0;A<e.length;A++)t.push(String.fromCharCode(e[A]));return t.join("")}}};e.exports=t},93647:e=>{var t,A;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&A.rotl(e,8)|4278255360&A.rotl(e,24);for(var t=0;t<e.length;t++)e[t]=A.endian(e[t]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],A=0,r=0;A<e.length;A++,r+=8)t[r>>>5]|=e[A]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],A=0;A<32*e.length;A+=8)t.push(e[A>>>5]>>>24-A%32&255);return t},bytesToHex:function(e){for(var t=[],A=0;A<e.length;A++)t.push((e[A]>>>4).toString(16)),t.push((15&e[A]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],A=0;A<e.length;A+=2)t.push(parseInt(e.substr(A,2),16));return t},bytesToBase64:function(e){for(var A=[],r=0;r<e.length;r+=3)for(var n=e[r]<<16|e[r+1]<<8|e[r+2],o=0;o<4;o++)8*r+6*o<=8*e.length?A.push(t.charAt(n>>>6*(3-o)&63)):A.push("=");return A.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var A=[],r=0,n=0;r<e.length;n=++r%4)0!=n&&A.push((t.indexOf(e.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|t.indexOf(e.charAt(r))>>>6-2*n);return A}},e.exports=A},80962:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},12363:(e,t,A)=>{var r,n,o,i,a;r=A(93647),n=A(14579).utf8,o=A(80962),i=A(14579).bin,(a=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?i.stringToBytes(e):n.stringToBytes(e):o(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var A=r.bytesToWords(e),s=8*e.length,g=1732584193,c=-271733879,f=-1732584194,I=271733878,h=0;h<A.length;h++)A[h]=16711935&(A[h]<<8|A[h]>>>24)|4278255360&(A[h]<<24|A[h]>>>8);A[s>>>5]|=128<<s%32,A[14+(s+64>>>9<<4)]=s;var C=a._ff,d=a._gg,l=a._hh,u=a._ii;for(h=0;h<A.length;h+=16){var B=g,Q=c,E=f,w=I;g=C(g,c,f,I,A[h+0],7,-680876936),I=C(I,g,c,f,A[h+1],12,-389564586),f=C(f,I,g,c,A[h+2],17,606105819),c=C(c,f,I,g,A[h+3],22,-1044525330),g=C(g,c,f,I,A[h+4],7,-176418897),I=C(I,g,c,f,A[h+5],12,1200080426),f=C(f,I,g,c,A[h+6],17,-1473231341),c=C(c,f,I,g,A[h+7],22,-45705983),g=C(g,c,f,I,A[h+8],7,1770035416),I=C(I,g,c,f,A[h+9],12,-1958414417),f=C(f,I,g,c,A[h+10],17,-42063),c=C(c,f,I,g,A[h+11],22,-1990404162),g=C(g,c,f,I,A[h+12],7,1804603682),I=C(I,g,c,f,A[h+13],12,-40341101),f=C(f,I,g,c,A[h+14],17,-1502002290),g=d(g,c=C(c,f,I,g,A[h+15],22,1236535329),f,I,A[h+1],5,-165796510),I=d(I,g,c,f,A[h+6],9,-1069501632),f=d(f,I,g,c,A[h+11],14,643717713),c=d(c,f,I,g,A[h+0],20,-373897302),g=d(g,c,f,I,A[h+5],5,-701558691),I=d(I,g,c,f,A[h+10],9,38016083),f=d(f,I,g,c,A[h+15],14,-660478335),c=d(c,f,I,g,A[h+4],20,-405537848),g=d(g,c,f,I,A[h+9],5,568446438),I=d(I,g,c,f,A[h+14],9,-1019803690),f=d(f,I,g,c,A[h+3],14,-187363961),c=d(c,f,I,g,A[h+8],20,1163531501),g=d(g,c,f,I,A[h+13],5,-1444681467),I=d(I,g,c,f,A[h+2],9,-51403784),f=d(f,I,g,c,A[h+7],14,1735328473),g=l(g,c=d(c,f,I,g,A[h+12],20,-1926607734),f,I,A[h+5],4,-378558),I=l(I,g,c,f,A[h+8],11,-2022574463),f=l(f,I,g,c,A[h+11],16,1839030562),c=l(c,f,I,g,A[h+14],23,-35309556),g=l(g,c,f,I,A[h+1],4,-1530992060),I=l(I,g,c,f,A[h+4],11,1272893353),f=l(f,I,g,c,A[h+7],16,-155497632),c=l(c,f,I,g,A[h+10],23,-1094730640),g=l(g,c,f,I,A[h+13],4,681279174),I=l(I,g,c,f,A[h+0],11,-358537222),f=l(f,I,g,c,A[h+3],16,-722521979),c=l(c,f,I,g,A[h+6],23,76029189),g=l(g,c,f,I,A[h+9],4,-640364487),I=l(I,g,c,f,A[h+12],11,-421815835),f=l(f,I,g,c,A[h+15],16,530742520),g=u(g,c=l(c,f,I,g,A[h+2],23,-995338651),f,I,A[h+0],6,-198630844),I=u(I,g,c,f,A[h+7],10,1126891415),f=u(f,I,g,c,A[h+14],15,-1416354905),c=u(c,f,I,g,A[h+5],21,-57434055),g=u(g,c,f,I,A[h+12],6,1700485571),I=u(I,g,c,f,A[h+3],10,-1894986606),f=u(f,I,g,c,A[h+10],15,-1051523),c=u(c,f,I,g,A[h+1],21,-2054922799),g=u(g,c,f,I,A[h+8],6,1873313359),I=u(I,g,c,f,A[h+15],10,-30611744),f=u(f,I,g,c,A[h+6],15,-1560198380),c=u(c,f,I,g,A[h+13],21,1309151649),g=u(g,c,f,I,A[h+4],6,-145523070),I=u(I,g,c,f,A[h+11],10,-1120210379),f=u(f,I,g,c,A[h+2],15,718787259),c=u(c,f,I,g,A[h+9],21,-343485551),g=g+B>>>0,c=c+Q>>>0,f=f+E>>>0,I=I+w>>>0}return r.endian([g,c,f,I])})._ff=function(e,t,A,r,n,o,i){var a=e+(t&A|~t&r)+(n>>>0)+i;return(a<<o|a>>>32-o)+t},a._gg=function(e,t,A,r,n,o,i){var a=e+(t&r|A&~r)+(n>>>0)+i;return(a<<o|a>>>32-o)+t},a._hh=function(e,t,A,r,n,o,i){var a=e+(t^A^r)+(n>>>0)+i;return(a<<o|a>>>32-o)+t},a._ii=function(e,t,A,r,n,o,i){var a=e+(A^(t|~r))+(n>>>0)+i;return(a<<o|a>>>32-o)+t},a._blocksize=16,a._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var A=r.wordsToBytes(a(e,t));return t&&t.asBytes?A:t&&t.asString?i.bytesToString(A):r.bytesToHex(A)}},41967:function(e,t,A){var r;r=e=>(()=>{"use strict";var t=[,e=>{e.exports="data:application/wasm;base64,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IgENAAsLIAJCf4UL1RACDH8CfgJAAkAgACgCJEUNACAAKAIAIQIMAQtBACECIABBADoAKCAAQgA3AwAgAEIANwMYIABByABqQQBB5AAQhoCAgAAaIABBrAFqQQw2AgALIAAgASgCBCIDNgIQIABBsAFqIQQgAEHgAGohBSAAQcgAaiEGIABBtgFqIQcgAEGoAWohCCABKAIQIQkCQAJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIOCgECAAQFBgcICQoPCyABKAIAIQogACgCqAEhAiAAKAKsASELIAEoAgQhDCABKAIIIQ0MAgsgCCAAKAKoASIMakEIaiABKAIAIAEoAgQiAmogASgCCCACayICIAAoAqwBIAxrIgwgAiAMSRsiAhCHgICAABogASABKAIEIAJqNgIEQQAhDCAAQQAgACgCqAEgAmoiAiACIAAoAqwBIgtGGzYCqAEgAiALRw0RIABBATYCAAJAIARBqIiAgABBBhCEgICAAEUNAEEFIQwMEgsgB0ECQQAQjYCAgAAgACgAuAFHDRBBBiEMIActAAANESAAIAAtALcBIgI2AiAgAkEESw0RQQEgAnRBE3FFDRELIAEoAgQiDCABKAIIIg1GDQ4CQCABKAIAIgogDGotAAAiCw0AIAAgDDYCECABIAxBAWo2AgRBBiECDAwLQQAhAiAAQQA2AqgBIABBAjYCACAAIAtBAnRBBGoiCzYCrAEgACALNgJACyAIIAJqQQhqIAogDGogDSAMayIMIAsgAmsiAiAMIAJJGyICEIeAgIAAGiABIAIgASgCBGo2AgRBACEMIABBACAAKAKoASACaiICIAIgACgCrAEiC0YbNgKoASACIAtHDQ8gACACQXxqIgI2AqwBQQchDCAEIAJBABCNgICAACAAIAAoAqwBIgtqQbABaigAAEcNDyAAQQI2AqgBIAAtALEBIgJBP3ENDAJAAkAgAkHAAHFFDQAgACAEIAggCxCRgICAAEEBRw0RIAAgACkDCDcDMCAALQCxASECDAELIABCfzcDMAtCfyEOAkAgAkEYdEEYdUF/Sg0AIAAgBCAIIAAoAqwBEJGAgIAAQQFHDRAgACkDCCEOCyAAIA43AzggACgCrAEiDSAAKAKoASICa0ECSQ0PIAAgAkEBaiIKNgKoASAIIAJqQQhq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IgM2AhAgACAOQQh0IAAoAgwgCWotAAByIg42AgQgAyEJCwJAAkAgDiALQQt2IA8vAQAiCmwiA08iEg0AIAAgAzYCACAKQYAQIAprQQV2aiEKDAELIAAgDiADayIONgIEIAAgCyADayIDNgIAIAogCkEFdmshCkEAIQ0LIA8gCjsBACANIBFzIQ0gBEEBdCASciIEQYACSQ0ACwsgACACQQFqNgIgIAAoAhggAmogBDoAAAJAIAAoAiQgACgCICICTw0AIAAgAjYCJAtBACEDAkAgACgCZCIEQQRJDQACQCAEQQlLDQAgBEF9aiEDDAELIARBemohAwsgACADNgJkDAELIAAgDiADayIONgIEIAAgBCADayIDNgIAIA0gDyAPQQV2azsBACAAIApBAXRqIg9B+ANqIQQCQAJAIANB////B00NACAJIQoMAQsgACADQQh0IgM2AgAgACAJQQFqIgo2AhAgACAOQQh0IAAoAgwgCWotAAByIg42AgQLAkACQCAOIANBC3YgBC8BACINbCIJSQ0AIAAgDiAJayIONgIEIAAgAyAJayIDNgIAIAQgDSANQQV2azsBACAPQZAEaiENAkACQCADQf///wdNDQAgCiEQDAELIAAgA0EIdCIDNgIAIAAgCkEBaiIQNgIQIAAgDkEIdCAAKAIMIApqLQAAciIONgIECwJAAkAgDiADQQt2IA0vAQAiCWwiBE8NACANIAlBgBAgCWtBBXZqOwEAIAxB2ARqIQMCQCAEQf///wdLDQAgACAEQQh0IgQ2AgAgACAQQQFqNgIQIAAgDkEIdCAAKAIMIBBqLQAAciIONgIECwJAIA4gBEELdiADLwEAIg1sIglJDQAgACAOIAlrNgIEIAAgBCAJazYCACADIA0gDUEFdms7AQAMAgsgAyANQYAQIA1rQQV2ajsBACAAIAk2AgAgAEEBNgJoIABBCUELIAAoAmRBB0kbNgJkDAMLIAAgDiAEayIONgIEIA0gCSAJQQV2azsBACAPQagEaiENAkACQCADIARrIgNB////B00NACAQIQoMAQsgACADQQh0IgM2AgAgACAQQQFqIgo2AhAgACAOQQh0IAAoAgwgEGotAAByIg42AgQLAkACQCAOIANBC3YgDS8BACIEbCIJTw0AIAAgCTYCACANIARBgBAgBGtBBXZqOwEAIAAoAlghAwwBCyAAIA4gCWsiDjYCBCANIAQgBEEFdms7AQAgD0HABGohBAJAIAMgCWsiA0H///8HSw0AIAAgA0EIdCIDNgIAIAAgCkEBajYCECAAIA5BCHQgACgCDCAKai0AAHIiDjYCBAsCQAJAIA4gA0ELdiAELwEAIg1sIglPDQAgACAJNgIAIAQgDUGAECANa0EFdmo7AQAgACgCXCEDDAELIAAgDiAJazYCBCAAIAMgCWs2AgAgACgCYCEDIAAgACgCXDYCYCAEIA0gDUEFdms7AQALIAAgACgCWDYCXAsgACAAKAJUNgJYIAAgAzYCVAsgAEEIQQsgACgCZEEHSRs2AmQgACAHIAsQn4CAgAAMAQsgBCANQYAQIA1rQQV2ajsBACAAIAk2AgAgACAAKAJcNgJgIAAgACkCVDcCWCAAQQdBCiAAKAJkQQdJGzYCZCAAIAUgCxCfgICAACAAKAJoIgNBfmpBAyADQQZJGyEKIAAoAgAhA0EBIQ4DQCAAIApBB3RqIA5BAXQiDmpB2AdqIQ0CQAJAIANBgICACEkNACAAKAIEIQQMAQsgACADQQh0IgM2AgAgACAAKAIQIgRBAWo2AhAgACAAKAIEQQh0IAQgACgCDGotAAByIgQ2AgQLAkACQCAEIANBC3YgDS8BACIJbCIPSQ0AIAAgBCAPayIENgIEIAAgAyAPayIDNgIAIA0gCSAJQQV2azsBACAOQQFyIQ4MAQsgACAPNgIAIA0gCUGAECAJa0EFdmo7AQAgDyEDCyAOQcAASQ0ACwJAIA5BQGoiCUEDSw0AIAAgCTYCVAwBCyAAIA5BAXFBAnIiDTYCVCAJQQF2IQ8CQCAJQQ1LDQAgACANIA9Bf2oiDHQiCzYCVEEBIQ0gCCALQQF0akGEC2ohEEE/IA5rIRFBACEPA0AgECARIA1qQQF0aiEOAkACQCADQf///wdNDQAgAyEKDAELIAAgA0EIdCIKNgIAIAAgACgCECIDQQFqNgIQIAAgBEEIdCADIAAoAgxqLQAAciIENgIECwJAAkAgBCAKQQt2IA4vAQAiCWwiA0kNACAAIAQgA2siBDYCBCAAIAogA2siAzYCACAOIAkgCUEFdms7AQAgAEEBIA90IAtqIgs2AlQgDUEBdEEBciENDAELIAAgAzYCACAOIAlBgBAgCWtBBXZqOwEAIA1BAXQhDQsgDCAPQQFqIg9HDQAMAgsLIA9Be2ohDgNAAkAgA0H///8HSw0AIAAgA0EIdCIDNgIAIAAgACgCECIJQQFqNgIQIARBCHQgCSAAKAIMai0AAHIhBAsgACADQQF2IgM2AgAgACAEIANrIgRBH3UiCSANQQF0akEBaiINNgJUIAAgCSADcSAEaiIENgIEIA5Bf2oiDg0ACyAAIA1BBHQiCzYCVEEAIQ9BASEOA0AgACAOQQF0Ig5qQbwNaiENAkACQCADQf///wdNDQAgAyEKDAELIAAgA0EIdCIKNgIAIAAgACgCECIDQQFqNgIQIAAgBEEIdCADIAAoAgxqLQAAciIENgIECwJAAkAgBCAKQQt2IA0vAQAiCWwiA0kNACAAIAQgA2siBDYCBCAAIAogA2siAzYCACANIAkgCUEFdms7AQAgAEEBIA90IAtqIgs2AlQgDkEBciEODAELIAAgAzYCACANIAlBgBAgCWtBBXZqOwEACyAPQQFqIg9BBEcNAAsLAkAgASAGIAAoAlQQnoCAgAANAEEADwsgACgCICECCyACIAAoAihJDQALC0EBIQMCQCAAKAIAIgRB////B0sNACAAIARBCHQ2AgBBASEDIAAgACgCECIEQQFqNgIQIAAgACgCBEEIdCAEIAAoAgxqLQAAcjYCBAsgAwtwAQF/AkBBqN4BEICAgIAAIgJFDQAgAkE0aiABNgIAIAJBPGogADYCAAJAAkACQCAAQX9qDgIAAQILIAIgARCAgICAACIANgIYIAANASACEIKAgIAADAILIAJBADYCGCACQThqQQA2AgALIAIPC0EAC9IBAQJ/QQYhAgJAIAFBJ0sNACAAQTBqIAFBAXFBAnIgAUEBdkELanQiATYCAAJAAkAgAEE8aigCACIDRQ0AQQQhAiABIABBNGooAgBLDQIgAEEsaiABNgIAIANBAkcNACAAQThqIgMoAgAgAU8NACAAIAE2AjggACgCGBCCgICAACAAIAAoAjAQgICAgAAiATYCGCABDQBBAyECDAELQQAhAiAAQQA2AkAgAEHQAGpBAToAACAAQegAakEANgIAIABB5N0BaiEDCyADQQA2AgALIAILIwACQCAAQTxqKAIARQ0AIAAoAhgQgoCAgAALIAAQgoCAgAAL9QEBBH9BACEDAkAgACgCDCACTQ0AIAAoAhggAk0NACABIAEoAgAiBCAAKAIQIAAoAggiBWsiBiAEIAYgBEkbIgRrNgIAIAUgAkF/c2ohAQJAIAUgAksNACAAKAIUIAFqIQELIAAoAgAiAiABai0AACEGQQEhAyAAIAVBAWo2AgggAiAFaiAGOgAAAkAgBEF/aiICRQ0AA0AgACgCACIFQQAgAUEBaiIBIAEgACgCFEYbIgFqLQAAIQQgACAAKAIIIgZBAWo2AgggBSAGaiAEOgAAIAJBf2oiAg0ACwsgACgCDCAAKAIIIgFPDQAgACABNgIMCyADC8gEAQd/AkACQCAAKAIAIgNBgICACEkNACAAKAIEIQQMAQsgACADQQh0IgM2AgAgACAAKAIQIgVBAWo2AhAgACAAKAIEQQh0IAUgACgCDGotAAByIgQ2AgQLAkACQCAEIANBC3YgAS8BACIGbCIFTw0AIAEgBkGAECAGa0EFdmo7AQAgASACQQR0akEEaiEHQQghCEECIQkMAQsgACAEIAVrIgQ2AgQgASAGIAZBBXZrOwEAAkAgAyAFayIDQf///wdLDQAgACADQQh0IgM2AgAgACAAKAIQIgVBAWo2AhAgACAEQQh0IAUgACgCDGotAAByIgQ2AgQLAkAgBCADQQt2IAEvAQIiBmwiBU8NACABIAZBgBAgBmtBBXZqOwECIAEgAkEEdGpBhAJqIQdBCCEIQQohCQwBCyAAIAQgBWsiBDYCBCABIAYgBkEFdms7AQIgAUGEBGohByADIAVrIQVBgAIhCEESIQkLIABB6ABqIAk2AgBBASEBA0AgByABQQF0IgFqIQMCQAJAIAVB////B00NACAFIQIMAQsgACAFQQh0IgI2AgAgACAAKAIQIgVBAWo2AhAgACAEQQh0IAUgACgCDGotAAByIgQ2AgQLAkACQCAEIAJBC3YgAy8BACIGbCIFSQ0AIAAgBCAFayIENgIEIAAgAiAFayIFNgIAIAMgBiAGQQV2azsBACABQQFyIQEMAQsgACAFNgIAIAMgBkGAECAGa0EFdmo7AQALIAEgCEkNAAsgAEHoAGogASAIayAJajYCAAsLNQEAQYAICy4IAAAAEAAAABgAAAAgAAAAKAAAADAAAABAAAAAUAAAAIAAAAAAAQAA/Td6WFoA"},t=>{t.exports=e}],A={};function r(e){var n=A[e];if(void 0!==n)return n.exports;var o=A[e]={exports:{}};return t[e](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var A in t)r.o(t,A)&&!r.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{XzReadableStream:()=>o});var e=r(1);const t=globalThis.ReadableStream||r(2).ReadableStream;class A{constructor(e){this.exports=e.exports,this.memory=this.exports.memory,this.ptr=this.exports.create_context(),this._refresh(),this.bufSize=this.mem32[0],this.inStart=this.mem32[1]-this.ptr,this.inEnd=this.inStart+this.bufSize,this.outStart=this.mem32[4]-this.ptr}supplyInput(e){this._refresh(),this.mem8.subarray(this.inStart,this.inEnd).set(e,0),this.exports.supply_input(this.ptr,e.byteLength),this._refresh()}getNextOutput(){const e=this.exports.get_next_output(this.ptr);if(this._refresh(),0!==e&&1!==e)throw new Error(`get_next_output failed with error code ${e}`);return{outChunk:this.mem8.slice(this.outStart,this.outStart+this.mem32[5]),finished:1===e}}needsMoreInput(){return this.mem32[2]===this.mem32[3]}outputBufferIsFull(){return this.mem32[5]===this.bufSize}resetOutputBuffer(){this.outPos=this.mem32[5]=0}dispose(){this.exports.destroy_context(this.ptr),this.exports=null}_refresh(){this.memory.buffer!==this.mem8?.buffer&&(this.mem8=new Uint8Array(this.memory.buffer,this.ptr),this.mem32=new Uint32Array(this.memory.buffer,this.ptr))}}class o extends t{static _moduleInstancePromise;static _moduleInstance;static async _getModuleInstance(){const t=e.replace("data:application/wasm;base64,",""),A=Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer,r=await WebAssembly.instantiate(A,{});o._moduleInstance=r.instance}constructor(e){let t,r=null;const n=e.getReader();super({async start(e){o._moduleInstance||await(o._moduleInstancePromise||(o._moduleInstancePromise=o._getModuleInstance())),t=new A(o._moduleInstance)},async pull(e){if(t.needsMoreInput()){if(null===r||0===r.byteLength){const{done:e,value:t}=await n.read();e||(r=t)}const e=Math.min(t.bufSize,r.byteLength);t.supplyInput(r.subarray(0,e)),r=r.subarray(e)}const A=t.getNextOutput();e.enqueue(A.outChunk),t.resetOutputBuffer(),A.finished&&(t.dispose(),e.close())},cancel:()=>(t.dispose(),n.cancel())})}}})(),n})(),e.exports=r(A(81239))},91454:(e,t,A)=>{"use strict";A.d(t,{A:()=>i});let r=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(r=new Int32Array(r));var n=A(35451);const o=(e,t)=>n.hp.from(e,t),i=function(e,t){const A=(e,A)=>t(o(e),A)>>>0;return A.signed=(e,A)=>t(o(e),A),A.unsigned=A,A.model="crc-32",A}(0,((e,t)=>{let A=0===t?0:~t;for(let t=0;t<e.length;t++)A=r[255&(A^e[t])]^A>>>8;return~A}))}}]);
+//# sourceMappingURL=5099.14f82444.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5099.14f82444.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,12 @@
+/*!
+ * Based on xzwasm (c) Steve Sanderson. License: MIT - https://github.com/SteveSanderson/xzwasm
+ * Contains xz-embedded by Lasse Collin and Igor Pavlov. License: Public domain - https://tukaani.org/xz/embedded.html
+ * and walloc (c) 2020 Igalia, S.L. License: MIT - https://github.com/wingo/walloc
+ */
+
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5099.14f82444.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5099.14f82444.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/cram/src/cramFile/constants.ts","../../../node_modules/@gmod/cram/src/cramFile/record.ts","../../../node_modules/@gmod/cram/src/errors.ts","../../../node_modules/@gmod/cram/src/unzip-pako.ts","../../../node_modules/@gmod/cram/src/rans/constants.ts","../../../node_modules/@gmod/cram/src/rans/decoding.ts","../../../node_modules/@gmod/cram/src/rans/frequencies.ts","../../../node_modules/@gmod/cram/src/rans/index.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/getBits.ts","../../../node_modules/@gmod/cram/src/cramFile/util.ts","../../../node_modules/@gmod/cram/src/cramFile/sectionParsers.ts","../../../node_modules/@gmod/cram/src/cramFile/slice/decodeRecord.ts","../../../node_modules/@gmod/cram/src/cramFile/slice/index.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/_base.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/byteArrayLength.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/index.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/external.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/huffman.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/byteArrayStop.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/beta.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/subexp.ts","../../../node_modules/@gmod/cram/src/cramFile/codecs/gamma.ts","../../../node_modules/@gmod/cram/src/cramFile/container/compressionScheme.ts","../../../node_modules/@gmod/cram/src/cramFile/container/index.ts","../../../node_modules/@gmod/cram/src/io/index.ts","../../../node_modules/@gmod/cram/src/sam.ts","../../../node_modules/@gmod/cram/src/cramFile/file.ts","../../../node_modules/@gmod/cram/src/rans/d04.ts","../../../node_modules/@gmod/cram/src/rans/d14.ts","../../../node_modules/@gmod/cram/src/craiIndex.ts","../../../node_modules/@gmod/cram/src/indexedCramFile.ts","../../../node_modules/@jkbonfield/htscodecs/arith_gen.js","../../../node_modules/@jkbonfield/htscodecs/arith_sh.js","../../../node_modules/@jkbonfield/htscodecs/byte_model.js","../../../node_modules/@jkbonfield/htscodecs/fqzcomp.js","../../../node_modules/@jkbonfield/htscodecs/index.js","../../../node_modules/@jkbonfield/htscodecs/iostream.js","../../../node_modules/@jkbonfield/htscodecs/rans.js","../../../node_modules/@jkbonfield/htscodecs/rans4x16.js","../../../node_modules/@jkbonfield/htscodecs/tok3.js","../../../node_modules/bzip2/bzip2.js","../../../node_modules/charenc/charenc.js","../../../node_modules/crypt/crypt.js","../../../node_modules/is-buffer/index.js","../../../node_modules/md5/md5.js","../../../node_modules/xz-decompress/dist/package/xz-decompress.js","../../../node_modules/crc/mjs/calculators/crc32.js","../../../node_modules/crc/mjs/create_buffer.js","../../../node_modules/crc/mjs/crc32.js","../../../node_modules/crc/mjs/define_crc.js"],"sourcesContent":["const Constants = {\n  CRAM_FLAG_PRESERVE_QUAL_SCORES: 1 << 0,\n  CRAM_FLAG_DETACHED: 1 << 1,\n  CRAM_FLAG_MATE_DOWNSTREAM: 1 << 2,\n  CRAM_FLAG_NO_SEQ: 1 << 3,\n  CRAM_FLAG_MASK: (1 << 4) - 1,\n\n  // mate read is reversed\n  CRAM_M_REVERSE: 1,\n  // mated read is unmapped\n  CRAM_M_UNMAP: 2,\n\n  //  the read is paired in sequencing, no matter whether it is mapped in a pair\n  BAM_FPAIRED: 1,\n  //  the read is mapped in a proper pair\n  BAM_FPROPER_PAIR: 2,\n  //  the read itself is unmapped; conflictive with BAM_FPROPER_PAIR\n  BAM_FUNMAP: 4,\n  //  the mate is unmapped\n  BAM_FMUNMAP: 8,\n  //  the read is mapped to the reverse strand\n  BAM_FREVERSE: 16,\n  //  the mate is mapped to the reverse strand\n  BAM_FMREVERSE: 32,\n  //  this is read1\n  BAM_FREAD1: 64,\n  //  this is read2\n  BAM_FREAD2: 128,\n  //  not primary alignment\n  BAM_FSECONDARY: 256,\n  //  QC failure\n  BAM_FQCFAIL: 512,\n  //  optical or PCR duplicate\n  BAM_FDUP: 1024,\n  //  supplementary alignment\n  BAM_FSUPPLEMENTARY: 2048,\n\n  BAM_CMATCH: 0,\n  BAM_CINS: 1,\n  BAM_CDEL: 2,\n  BAM_CREF_SKIP: 3,\n  BAM_CSOFT_CLIP: 4,\n  BAM_CHARD_CLIP: 5,\n  BAM_CPAD: 6,\n  BAM_CEQUAL: 7,\n  BAM_CDIFF: 8,\n  BAM_CBACK: 9,\n\n  BAM_CIGAR_STR: 'MIDNSHP:XB',\n  BAM_CIGAR_SHIFT: 4,\n  BAM_CIGAR_MASK: 0xf,\n  BAM_CIGAR_TYPE: 0x3c1a7,\n}\n\nexport default Constants\n","import Constants from './constants'\nimport CramContainerCompressionScheme from './container/compressionScheme'\nimport type decodeRecord from './slice/decodeRecord'\n\nexport interface RefRegion {\n  start: number\n  end: number\n  seq: string\n}\n\nexport interface ReadFeature {\n  code: string\n  pos: number\n  refPos: number\n  data: any\n\n  ref?: string\n  sub?: string\n}\n\nfunction decodeReadSequence(cramRecord: CramRecord, refRegion: RefRegion) {\n  // if it has no length, it has no sequence\n  if (!cramRecord.lengthOnRef && !cramRecord.readLength) {\n    return null\n  }\n\n  if (cramRecord.isUnknownBases()) {\n    return null\n  }\n\n  // remember: all coordinates are 1-based closed\n  const regionSeqOffset = cramRecord.alignmentStart - refRegion.start\n\n  if (!cramRecord.readFeatures) {\n    return refRegion.seq\n      .slice(regionSeqOffset, regionSeqOffset + (cramRecord.lengthOnRef || 0))\n      .toUpperCase()\n  }\n\n  let bases = ''\n  let regionPos = regionSeqOffset\n  let currentReadFeature = 0\n  while (bases.length < cramRecord.readLength) {\n    if (currentReadFeature < cramRecord.readFeatures.length) {\n      const feature = cramRecord.readFeatures[currentReadFeature]!\n      if (feature.code === 'Q' || feature.code === 'q') {\n        currentReadFeature += 1\n      } else if (feature.pos === bases.length + 1) {\n        // process the read feature\n        currentReadFeature += 1\n\n        if (feature.code === 'b') {\n          // specify a base pair for some reason\n          const added = feature.data\n          bases += added\n          regionPos += added.length\n        } else if (feature.code === 'B') {\n          // base pair and associated quality\n          // TODO: do we need to set the quality in the qual scores?\n          bases += feature.data[0]\n          regionPos += 1\n        } else if (feature.code === 'X') {\n          // base substitution\n          bases += feature.sub\n          regionPos += 1\n        } else if (feature.code === 'I') {\n          // insertion\n          bases += feature.data\n        } else if (feature.code === 'D') {\n          // deletion\n          regionPos += feature.data\n        } else if (feature.code === 'i') {\n          // insert single base\n          bases += feature.data\n        } else if (feature.code === 'N') {\n          // reference skip. delete some bases\n          // do nothing\n          // seqBases.splice(feature.pos - 1, feature.data)\n          regionPos += feature.data\n        } else if (feature.code === 'S') {\n          // soft clipped bases that should be present in the read seq\n          // seqBases.splice(feature.pos - 1, 0, ...feature.data.split(''))\n          bases += feature.data\n        } else if (feature.code === 'P') {\n          // padding, do nothing\n        } else if (feature.code === 'H') {\n          // hard clip, do nothing\n        }\n      } else if (currentReadFeature < cramRecord.readFeatures.length) {\n        // put down a chunk of sequence up to the next read feature\n        const chunk = refRegion.seq.slice(\n          regionPos,\n          regionPos + feature.pos - bases.length - 1,\n        )\n        bases += chunk\n        regionPos += chunk.length\n      }\n    } else {\n      // put down a chunk of reference up to the full read length\n      const chunk = refRegion.seq.slice(\n        regionPos,\n        regionPos + cramRecord.readLength - bases.length,\n      )\n      bases += chunk\n      regionPos += chunk.length\n    }\n  }\n\n  return bases.toUpperCase()\n}\n\nconst baseNumbers = {\n  a: 0,\n  A: 0,\n  c: 1,\n  C: 1,\n  g: 2,\n  G: 2,\n  t: 3,\n  T: 3,\n  n: 4,\n  N: 4,\n}\n\nfunction decodeBaseSubstitution(\n  cramRecord: CramRecord,\n  refRegion: RefRegion,\n  compressionScheme: CramContainerCompressionScheme,\n  readFeature: ReadFeature,\n) {\n  // decode base substitution code using the substitution matrix\n  const refCoord = readFeature.refPos - refRegion.start\n  const refBase = refRegion.seq.charAt(refCoord)\n  if (refBase) {\n    readFeature.ref = refBase\n  }\n  let baseNumber = (baseNumbers as any)[refBase]\n  if (baseNumber === undefined) {\n    baseNumber = 4\n  }\n  const substitutionScheme = compressionScheme.substitutionMatrix[baseNumber]!\n  const base = substitutionScheme[readFeature.data]\n  if (base) {\n    readFeature.sub = base\n  }\n}\n\nexport interface MateRecord {\n  readName?: string\n  sequenceId: number\n  alignmentStart: number\n  flags?: number\n\n  uniqueId?: number\n}\n\nexport const BamFlags = [\n  [0x1, 'Paired'],\n  [0x2, 'ProperlyPaired'],\n  [0x4, 'SegmentUnmapped'],\n  [0x8, 'MateUnmapped'],\n  [0x10, 'ReverseComplemented'],\n  //  the mate is mapped to the reverse strand\n  [0x20, 'MateReverseComplemented'],\n  //  this is read1\n  [0x40, 'Read1'],\n  //  this is read2\n  [0x80, 'Read2'],\n  //  not primary alignment\n  [0x100, 'Secondary'],\n  //  QC failure\n  [0x200, 'FailedQc'],\n  //  optical or PCR duplicate\n  [0x400, 'Duplicate'],\n  //  supplementary alignment\n  [0x800, 'Supplementary'],\n] as const\n\nexport const CramFlags = [\n  [0x1, 'PreservingQualityScores'],\n  [0x2, 'Detached'],\n  [0x4, 'WithMateDownstream'],\n  [0x8, 'DecodeSequenceAsStar'],\n] as const\n\nexport const MateFlags = [\n  [0x1, 'OnNegativeStrand'],\n  [0x2, 'Unmapped'],\n] as const\n\ntype FlagsDecoder<Type> = {\n  [Property in Type as `is${Capitalize<string & Property>}`]: (\n    flags: number,\n  ) => boolean\n}\n\ntype FlagsEncoder<Type> = {\n  [Property in Type as `set${Capitalize<string & Property>}`]: (\n    flags: number,\n  ) => number\n}\n\nfunction makeFlagsHelper<T>(\n  x: readonly (readonly [number, T])[],\n): FlagsDecoder<T> & FlagsEncoder<T> {\n  const r: any = {}\n  for (const [code, name] of x) {\n    r[`is${name}`] = (flags: number) => !!(flags & code)\n    r[`set${name}`] = (flags: number) => flags | code\n  }\n\n  return r\n}\n\nexport const BamFlagsDecoder = makeFlagsHelper(BamFlags)\nexport const CramFlagsDecoder = makeFlagsHelper(CramFlags)\nexport const MateFlagsDecoder = makeFlagsHelper(MateFlags)\n\n/**\n * Class of each CRAM record returned by this API.\n */\nexport default class CramRecord {\n  public tags: Record<string, string>\n  public flags: number\n  public cramFlags: number\n  public readBases?: string | null\n  public _refRegion?: RefRegion\n  public readFeatures?: ReadFeature[]\n  public alignmentStart: number\n  public lengthOnRef: number | undefined\n  public readLength: number\n  public templateLength?: number\n  public templateSize?: number\n  public readName?: string\n  public mateRecordNumber?: number\n  public mate?: MateRecord\n  public uniqueId: number\n  public sequenceId: number\n  public readGroupId: number\n  public mappingQuality: number | undefined\n  public qualityScores: number[] | null | undefined\n\n  constructor({\n    flags,\n    cramFlags,\n    readLength,\n    mappingQuality,\n    lengthOnRef,\n    qualityScores,\n    mateRecordNumber,\n    readBases,\n    readFeatures,\n    mateToUse,\n    readGroupId,\n    readName,\n    sequenceId,\n    uniqueId,\n    templateSize,\n    alignmentStart,\n    tags,\n  }: ReturnType<typeof decodeRecord> & { uniqueId: number }) {\n    this.flags = flags\n    this.cramFlags = cramFlags\n    this.readLength = readLength\n    this.mappingQuality = mappingQuality\n    this.lengthOnRef = lengthOnRef\n    this.qualityScores = qualityScores\n    if (readBases) {\n      this.readBases = readBases\n    }\n\n    this.readGroupId = readGroupId\n    this.readName = readName\n    this.sequenceId = sequenceId\n    this.uniqueId = uniqueId\n    this.templateSize = templateSize\n    this.alignmentStart = alignmentStart\n    this.tags = tags\n\n    // backwards compatibility\n    if (readFeatures) {\n      this.readFeatures = readFeatures\n    }\n    if (mateToUse) {\n      this.mate = {\n        flags: mateToUse.mateFlags,\n        readName: mateToUse.mateReadName,\n        sequenceId: mateToUse.mateSequenceId,\n        alignmentStart: mateToUse.mateAlignmentStart,\n      }\n    }\n    if (mateRecordNumber) {\n      this.mateRecordNumber = mateRecordNumber\n    }\n  }\n\n  /**\n   * @returns {boolean} true if the read is paired, regardless of whether both segments are mapped\n   */\n  isPaired() {\n    return !!(this.flags & Constants.BAM_FPAIRED)\n  }\n\n  /** @returns {boolean} true if the read is paired, and both segments are mapped */\n  isProperlyPaired() {\n    return !!(this.flags & Constants.BAM_FPROPER_PAIR)\n  }\n\n  /** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */\n  isSegmentUnmapped() {\n    return !!(this.flags & Constants.BAM_FUNMAP)\n  }\n\n  /** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */\n  isMateUnmapped() {\n    return !!(this.flags & Constants.BAM_FMUNMAP)\n  }\n\n  /** @returns {boolean} true if the read is mapped to the reverse strand */\n  isReverseComplemented() {\n    return !!(this.flags & Constants.BAM_FREVERSE)\n  }\n\n  /** @returns {boolean} true if the mate is mapped to the reverse strand */\n  isMateReverseComplemented() {\n    return !!(this.flags & Constants.BAM_FMREVERSE)\n  }\n\n  /** @returns {boolean} true if this is read number 1 in a pair */\n  isRead1() {\n    return !!(this.flags & Constants.BAM_FREAD1)\n  }\n\n  /** @returns {boolean} true if this is read number 2 in a pair */\n  isRead2() {\n    return !!(this.flags & Constants.BAM_FREAD2)\n  }\n\n  /** @returns {boolean} true if this is a secondary alignment */\n  isSecondary() {\n    return !!(this.flags & Constants.BAM_FSECONDARY)\n  }\n\n  /** @returns {boolean} true if this read has failed QC checks */\n  isFailedQc() {\n    return !!(this.flags & Constants.BAM_FQCFAIL)\n  }\n\n  /** @returns {boolean} true if the read is an optical or PCR duplicate */\n  isDuplicate() {\n    return !!(this.flags & Constants.BAM_FDUP)\n  }\n\n  /** @returns {boolean} true if this is a supplementary alignment */\n  isSupplementary() {\n    return !!(this.flags & Constants.BAM_FSUPPLEMENTARY)\n  }\n\n  /**\n   * @returns {boolean} true if the read is detached\n   */\n  isDetached() {\n    return !!(this.cramFlags & Constants.CRAM_FLAG_DETACHED)\n  }\n\n  /** @returns {boolean} true if the read has a mate in this same CRAM segment */\n  hasMateDownStream() {\n    return !!(this.cramFlags & Constants.CRAM_FLAG_MATE_DOWNSTREAM)\n  }\n\n  /** @returns {boolean} true if the read contains qual scores */\n  isPreservingQualityScores() {\n    return !!(this.cramFlags & Constants.CRAM_FLAG_PRESERVE_QUAL_SCORES)\n  }\n\n  /** @returns {boolean} true if the read has no sequence bases */\n  isUnknownBases() {\n    return !!(this.cramFlags & Constants.CRAM_FLAG_NO_SEQ)\n  }\n\n  /**\n   * Get the original sequence of this read.\n   * @returns {String} sequence basepairs\n   */\n  getReadBases() {\n    if (!this.readBases && this._refRegion) {\n      const decoded = decodeReadSequence(this, this._refRegion)\n      if (decoded) {\n        this.readBases = decoded\n      }\n    }\n    return this.readBases\n  }\n\n  /**\n   * Get the pair orientation of a paired read. Adapted from igv.js\n   * @returns {String} of paired orientatin\n   */\n  getPairOrientation() {\n    if (\n      !this.isSegmentUnmapped() &&\n      this.isPaired() &&\n      !this.isMateUnmapped() &&\n      this.mate &&\n      this.sequenceId === this.mate.sequenceId\n    ) {\n      const s1 = this.isReverseComplemented() ? 'R' : 'F'\n      const s2 = this.isMateReverseComplemented() ? 'R' : 'F'\n      let o1 = ' '\n      let o2 = ' '\n      if (this.isRead1()) {\n        o1 = '1'\n        o2 = '2'\n      } else if (this.isRead2()) {\n        o1 = '2'\n        o2 = '1'\n      }\n\n      const tmp = []\n      let isize = this.templateLength || this.templateSize\n      if (isize === undefined) {\n        throw new Error('One of templateSize and templateLength must be set')\n      }\n      if (this.alignmentStart > this.mate.alignmentStart && isize > 0) {\n        isize = -isize\n      }\n      if (isize > 0) {\n        tmp[0] = s1\n        tmp[1] = o1\n        tmp[2] = s2\n        tmp[3] = o2\n      } else {\n        tmp[2] = s1\n        tmp[3] = o1\n        tmp[0] = s2\n        tmp[1] = o2\n      }\n      return tmp.join('')\n    }\n    return null\n  }\n\n  /**\n   * Annotates this feature with the given reference sequence basepair\n   * information. This will add a `sub` and a `ref` item to base\n   * substitution read features given the actual substituted and reference\n   * base pairs, and will make the `getReadSequence()` method work.\n   *\n   * @param {object} refRegion\n   * @param {number} refRegion.start\n   * @param {number} refRegion.end\n   * @param {string} refRegion.seq\n   * @param {CramContainerCompressionScheme} compressionScheme\n   * @returns {undefined} nothing\n   */\n  addReferenceSequence(\n    refRegion: RefRegion,\n    compressionScheme: CramContainerCompressionScheme,\n  ) {\n    if (this.readFeatures) {\n      // use the reference bases to decode the bases\n      // substituted in each base substitution\n      this.readFeatures.forEach(readFeature => {\n        if (readFeature.code === 'X') {\n          decodeBaseSubstitution(\n            this,\n            refRegion,\n            compressionScheme,\n            readFeature,\n          )\n        }\n      })\n    }\n\n    // if this region completely covers this read,\n    // keep a reference to it\n    if (\n      !this.readBases &&\n      refRegion.start <= this.alignmentStart &&\n      refRegion.end >=\n        this.alignmentStart + (this.lengthOnRef || this.readLength) - 1\n    ) {\n      this._refRegion = refRegion\n    }\n  }\n\n  toJSON() {\n    const data: any = {}\n    Object.keys(this).forEach(k => {\n      if (k.startsWith('_')) {\n        return\n      }\n      data[k] = (this as any)[k]\n    })\n\n    data.readBases = this.getReadBases()\n\n    return data\n  }\n}\n","export class CramError extends Error {}\n\n/** Error caused by encountering a part of the CRAM spec that has not yet been implemented */\nexport class CramUnimplementedError extends Error {}\n\n/** An error caused by malformed data.  */\nexport class CramMalformedError extends CramError {}\n\n/**\n * An error caused by data being too big, exceeding a size limit.\n */\nexport class CramSizeLimitError extends CramError {}\n\n/**\n * An invalid argument was supplied to a cram-js method or object.\n */\nexport class CramArgumentError extends CramError {}\n","import { inflate } from 'pako'\nimport { Buffer } from 'buffer'\n\nexport function unzip(input: Buffer) {\n  return Buffer.from(inflate(input))\n}\n","const TF_SHIFT = 12\nconst TOTFREQ = 1 << TF_SHIFT\nconst RANS_BYTE_L = 1 << 23\n\nexport { TF_SHIFT, TOTFREQ, RANS_BYTE_L }\n","// @ts-nocheck\nimport { CramMalformedError } from '../errors'\n\nimport { RANS_BYTE_L } from './constants'\n\nclass FC {\n  // int F, C;\n  constructor() {\n    this.F = undefined\n    this.C = undefined\n  }\n}\n\nclass AriDecoder {\n  // final FC[] fc = new FC[256];\n  // byte[] R;\n\n  constructor() {\n    this.fc = new Array(256)\n    for (let i = 0; i < this.fc.length; i += 1) {\n      this.fc[i] = new FC()\n    }\n    this.R = null\n  }\n}\n\nclass DecodingSymbol {\n  // int start; // Start of range.\n  // int freq; // Symbol frequency.\n  constructor() {\n    this.start = undefined\n    this.freq = undefined\n  }\n}\n\n// Initialize a decoder symbol to start \"start\" and frequency \"freq\"\nfunction symbolInit(sym, start, freq) {\n  if (!(start <= 1 << 16)) {\n    throw new CramMalformedError('assertion failed: start <= 1<<16')\n  }\n  if (!(freq <= (1 << 16) - start)) {\n    throw new CramMalformedError('assertion failed: freq <= 1<<16')\n  }\n  sym.start = start\n  sym.freq = freq\n}\n\n// Advances in the bit stream by \"popping\" a single symbol with range start\n// \"start\" and frequency \"freq\". All frequencies are assumed to sum to\n// \"1 << scaleBits\".\n// No renormalization or output happens.\n/* private static int */ function advanceStep(\n  /* final int */ r,\n  /* final int */ start,\n  /* final int */ freq,\n  /* final int */ scaleBits,\n) {\n  /* final int */ const mask = (1 << scaleBits) - 1\n\n  // s, x = D(x)\n  return freq * (r >> scaleBits) + (r & mask) - start\n}\n\n// Equivalent to RansDecAdvanceStep that takes a symbol.\n/* static int  */ function advanceSymbolStep(\n  /* final int */ r,\n  /* final RansDecSymbol */ sym,\n  /* final int */ scaleBits,\n) {\n  return advanceStep(r, sym.start, sym.freq, scaleBits)\n}\n\n// Returns the current cumulative frequency (map it to a symbol yourself!)\n/* static int */ function get(/* final int */ r, /* final int */ scaleBits) {\n  return r & ((1 << scaleBits) - 1)\n}\n\n// Advances in the bit stream by \"popping\" a single symbol with range start\n// \"start\" and frequency \"freq\". All frequencies are assumed to sum to\n// \"1 << scaleBits\",\n// and the resulting bytes get written to ptr (which is updated).\n/* private static int */ function advance(\n  /* int */ r,\n  /* final ByteBuffer */ pptr,\n  /* final int */ start,\n  /* final int */ freq,\n  /* final int */ scaleBits,\n) {\n  /* final int */ const mask = (1 << scaleBits) - 1\n\n  // s, x = D(x)\n  r = freq * (r >> scaleBits) + (r & mask) - start\n\n  // re-normalize\n  if (r < RANS_BYTE_L) {\n    do {\n      /* final int */ const b = 0xff & pptr.get()\n      r = (r << 8) | b\n    } while (r < RANS_BYTE_L)\n  }\n\n  return r\n}\n\n// Equivalent to RansDecAdvance that takes a symbol.\n/*  static int */ function advanceSymbol(\n  /* final int */ r,\n  /* final ByteBuffer */ pptr,\n  /* final RansDecSymbol */ sym,\n  /* final int */ scaleBits,\n) {\n  return advance(r, pptr, sym.start, sym.freq, scaleBits)\n}\n\n// Re-normalize.\n/*  static int */ function renormalize(\n  /* int */ r,\n  /* final ByteBuffer */ pptr,\n) {\n  // re-normalize\n  if (r < RANS_BYTE_L) {\n    do {\n      r = (r << 8) | (0xff & pptr.get())\n    } while (r < RANS_BYTE_L)\n  }\n\n  return r\n}\n\nexport default {\n  FC,\n  AriDecoder,\n  DecodingSymbol,\n  symbolInit,\n  advanceStep,\n  advanceSymbolStep,\n  get,\n  advanceSymbol,\n  renormalize,\n}\n","// @ts-nocheck\nimport { CramMalformedError } from '../errors'\n\nimport { TOTFREQ } from './constants'\nimport Decoding from './decoding'\n\nfunction assert(result) {\n  if (!result) {\n    throw new CramMalformedError('assertion failed')\n  }\n}\n\nexport function readStatsO0(\n  /* ByteBuffer */ cp,\n  /* Decoding.AriDecoder */ decoder,\n  /* Decoding.RansDecSymbol[] */ syms,\n) {\n  // Pre-compute reverse lookup of frequency.\n  let rle = 0\n  let x = 0\n  let j = cp.get() & 0xff\n  do {\n    if (decoder.fc[j] == null) {\n      decoder.fc[j] = new Decoding.FC()\n    }\n    decoder.fc[j].F = cp.get() & 0xff\n    if (decoder.fc[j].F >= 128) {\n      decoder.fc[j].F &= ~128\n      decoder.fc[j].F = ((decoder.fc[j].F & 127) << 8) | (cp.get() & 0xff)\n    }\n    decoder.fc[j].C = x\n\n    Decoding.symbolInit(syms[j], decoder.fc[j].C, decoder.fc[j].F)\n\n    /* Build reverse lookup table */\n    if (!decoder.R) {\n      decoder.R = new Array(TOTFREQ)\n    }\n    decoder.R.fill(j, x, x + decoder.fc[j].F)\n\n    x += decoder.fc[j].F\n\n    if (rle === 0 && j + 1 === (0xff & cp.getByteAt(cp.position()))) {\n      j = cp.get() & 0xff\n      rle = cp.get() & 0xff\n    } else if (rle !== 0) {\n      rle -= 1\n      j += 1\n    } else {\n      j = cp.get() & 0xff\n    }\n  } while (j !== 0)\n\n  assert(x < TOTFREQ)\n}\n\nexport function readStatsO1(\n  /* ByteBuffer */ cp,\n  /*  Decoding.AriDecoder[] */ D,\n  /* Decoding.RansDecSymbol[][] */ syms,\n) {\n  let rlei = 0\n  let i = 0xff & cp.get()\n  do {\n    let rlej = 0\n    let x = 0\n    let j = 0xff & cp.get()\n    if (D[i] == null) {\n      D[i] = new Decoding.AriDecoder()\n    }\n    do {\n      if (D[i].fc[j] == null) {\n        D[i].fc[j] = new Decoding.FC()\n      }\n      D[i].fc[j].F = 0xff & cp.get()\n      if (D[i].fc[j].F >= 128) {\n        D[i].fc[j].F &= ~128\n        D[i].fc[j].F = ((D[i].fc[j].F & 127) << 8) | (0xff & cp.get())\n      }\n      D[i].fc[j].C = x\n\n      if (D[i].fc[j].F === 0) {\n        D[i].fc[j].F = TOTFREQ\n      }\n\n      if (syms[i][j] == null) {\n        syms[i][j] = new Decoding.RansDecSymbol()\n      }\n\n      Decoding.symbolInit(syms[i][j], D[i].fc[j].C, D[i].fc[j].F)\n\n      /* Build reverse lookup table */\n      if (D[i].R == null) {\n        D[i].R = new Array(TOTFREQ)\n      }\n      D[i].R.fill(j, x, x + D[i].fc[j].F)\n\n      x += D[i].fc[j].F\n      assert(x <= TOTFREQ)\n\n      if (rlej === 0 && j + 1 === (0xff & cp.getByteAt(cp.position()))) {\n        j = 0xff & cp.get()\n        rlej = 0xff & cp.get()\n      } else if (rlej !== 0) {\n        rlej -= 1\n        j += 1\n      } else {\n        j = 0xff & cp.get()\n      }\n    } while (j !== 0)\n\n    if (rlei === 0 && i + 1 === (0xff & cp.getByteAt(cp.position()))) {\n      i = 0xff & cp.get()\n      rlei = 0xff & cp.get()\n    } else if (rlei !== 0) {\n      rlei -= 1\n      i += 1\n    } else {\n      i = 0xff & cp.get()\n    }\n  } while (i !== 0)\n}\n","// @ts-nocheck\nimport { Buffer } from 'buffer'\nimport { CramMalformedError } from '../errors'\n\nimport Decoding from './decoding'\nimport { readStatsO0, readStatsO1 } from './frequencies'\n\nimport D04 from './d04'\nimport D14 from './d14'\n\n// const /* int */ ORDER_BYTE_LENGTH = 1\n// const /* int */ COMPRESSED_BYTE_LENGTH = 4\nconst /* int */ RAW_BYTE_LENGTH = 4\n// const /* int */ PREFIX_BYTE_LENGTH =\n//   ORDER_BYTE_LENGTH + COMPRESSED_BYTE_LENGTH + RAW_BYTE_LENGTH\n\n// enum ORDER {\n//     ZERO, ONE;\n\n//     static ORDER fromInt(const /* int */ value) {\n//         try {\n//             return ORDER.values()[value];\n//         } catch (const ArrayIndexOutOfBoundsException e) {\n//             throw new RuntimeException(\"Unknown rANS order: \" + value);\n//         }\n//     }\n// }\n\n// static ByteBuffer compress(const ByteBuffer input, const ORDER order, const ByteBuffer out) {\n//     if (input.remaining() == 0)\n//         return EMPTY_BUFFER;\n\n//     if (input.remaining() < 4)\n//         return encode_order0_way4(input, out);\n\n//     switch (order) {\n//         case ZERO:\n//             return encode_order0_way4(input, out);\n//         case ONE:\n//             return encode_order1_way4(input, out);\n\n//         default:\n//             throw new RuntimeException(\"Unknown rANS order: \" + order);\n//     }\n// }\n\n// static /* ByteBuffer */ allocateIfNeeded(/* const int */ in_size,\n//                                            /* const ByteBuffer */ out_buf) {\n//     const /* int */ compressedSize = (/* int */) (1.05 * in_size + 257 * 257 * 3 + 4);\n//     if (out_buf == null)\n//         return ByteBuffer.allocate(compressedSize);\n//     if (out_buf.remaining() < compressedSize)\n//         throw new RuntimeException(\"Insufficient buffer size.\");\n//     out_buf.order(ByteOrder.LITTLE_ENDIAN);\n//     return out_buf;\n// }\n\n// static ByteBuffer encode_order0_way4(const ByteBuffer input,\n//                                              ByteBuffer out_buf) {\n//     const /* int */ in_size = input.remaining();\n//     out_buf = allocateIfNeeded(in_size, out_buf);\n//     const /* int */ freqTableStart = PREFIX_BYTE_LENGTH;\n//     out_buf.position(freqTableStart);\n\n//     const /* int */[] F = Frequencies.calcFrequencies_o0(in);\n//     const RansEncSymbol[] syms = Frequencies.buildSyms_o0(F);\n\n//     const ByteBuffer cp = out_buf.slice();\n//     const /* int */ frequencyTable_size = Frequencies.writeFrequencies_o0(cp, F);\n\n//     input.rewind();\n//     const /* int */ compressedBlob_size = E04.compress(input, syms, cp);\n\n//     finalizeCompressed(0, out_buf, in_size, frequencyTable_size,\n//             compressedBlob_size);\n//     return out_buf;\n// }\n\n// static ByteBuffer encode_order1_way4(const ByteBuffer input,\n//                                              ByteBuffer out_buf) {\n//     const /* int */ in_size = input.remaining();\n//     out_buf = allocateIfNeeded(in_size, out_buf);\n//     const /* int */ freqTableStart = PREFIX_BYTE_LENGTH;\n//     out_buf.position(freqTableStart);\n\n//     const /* int */[][] F = Frequencies.calcFrequencies_o1(in);\n//     const RansEncSymbol[][] syms = Frequencies.buildSyms_o1(F);\n\n//     const ByteBuffer cp = out_buf.slice();\n//     const /* int */ frequencyTable_size = Frequencies.writeFrequencies_o1(cp, F);\n\n//     input.rewind();\n//     const /* int */ compressedBlob_size = E14.compress(input, syms, cp);\n\n//     finalizeCompressed(1, out_buf, in_size, frequencyTable_size,\n//             compressedBlob_size);\n//     return out_buf;\n// }\n\n// static void finalizeCompressed(const /* int */ order, const ByteBuffer out_buf,\n//                                        const /* int */ in_size, const /* int */ frequencyTable_size, const /* int */ compressedBlob_size) {\n//     out_buf.limit(PREFIX_BYTE_LENGTH + frequencyTable_size\n//             + compressedBlob_size);\n//     out_buf.put(0, (byte) order);\n//     out_buf.order(ByteOrder.LITTLE_ENDIAN);\n//     const /* int */ compressedSizeOffset = ORDER_BYTE_LENGTH;\n//     out_buf.putInt(compressedSizeOffset, frequencyTable_size\n//             + compressedBlob_size);\n//     const /* int */ rawSizeOffset = ORDER_BYTE_LENGTH + COMPRESSED_BYTE_LENGTH;\n//     out_buf.putInt(rawSizeOffset, in_size);\n//     out_buf.rewind();\n// }\n\nfunction /* static ByteBuffer */ uncompressOrder0Way4(\n  /* const ByteBuffer  */ input,\n  /* const ByteBuffer  */ out,\n) {\n  // input.order(ByteOrder.LITTLE_ENDIAN);\n  const D = new Decoding.AriDecoder()\n  const syms = new Array(256)\n  for (let i = 0; i < syms.length; i += 1) {\n    syms[i] = new Decoding.DecodingSymbol()\n  }\n\n  readStatsO0(input, D, syms)\n\n  D04(input, D, syms, out)\n\n  return out\n}\n\nfunction /* static ByteBuffer */ uncompressOrder1Way4(\n  /* const ByteBuffer */ input,\n  /* const ByteBuffer */ output,\n) {\n  const D = new Array(256)\n  for (let i = 0; i < D.length; i += 1) {\n    D[i] = new Decoding.AriDecoder()\n  }\n  const /* Decoding.RansDecSymbol[][]  */ syms = new Array(256)\n  for (let i = 0; i < syms.length; i += 1) {\n    syms[i] = new Array(256)\n    for (let j = 0; j < syms[i].length; j += 1) {\n      syms[i][j] = new Decoding.DecodingSymbol()\n    }\n  }\n  readStatsO1(input, D, syms)\n\n  D14(input, output, D, syms)\n\n  return output\n}\n\n/* compat layer to make a node buffer act like a java ByteBuffer */\nclass ByteBuffer {\n  constructor(nodeBuffer, initialInputPosition = 0) {\n    this._buffer = nodeBuffer\n    this._position = initialInputPosition\n    this.length = nodeBuffer.length\n  }\n\n  get() {\n    const b = this._buffer[this._position]\n    this._position += 1\n    return b\n  }\n\n  getByte() {\n    return this.get()\n  }\n\n  getByteAt(position) {\n    return this._buffer[position]\n  }\n\n  position() {\n    return this._position\n  }\n\n  put(val) {\n    this._buffer[this._position] = val\n    this._position += 1\n    return val\n  }\n\n  putAt(position, val) {\n    this._buffer[position] = val\n    return val\n  }\n\n  setPosition(pos) {\n    this._position = pos\n    return pos\n  }\n\n  getInt() {\n    const i = this._buffer.readInt32LE(this._position)\n    this._position += 4\n    return i\n  }\n\n  remaining() {\n    return this._buffer.length - this._position\n  }\n}\n\n// static /* const */ ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate(0);\nexport default function uncompress(\n  inputBuffer,\n  outputBuffer,\n  initialInputPosition = 0,\n) {\n  if (inputBuffer.length === 0) {\n    outputBuffer.fill(0)\n    return outputBuffer\n  }\n\n  const input = new ByteBuffer(inputBuffer, initialInputPosition)\n  // input.order(ByteOrder.LITTLE_ENDIAN);\n\n  const order = input.get()\n  if (order !== 0 && order !== 1) {\n    throw new CramMalformedError(`Invalid rANS order ${order}`)\n  }\n\n  const /* int */ inputSize = input.getInt()\n  if (inputSize !== input.remaining() - RAW_BYTE_LENGTH) {\n    throw new CramMalformedError('Incorrect input length.')\n  }\n\n  const /* int */ outputSize = input.getInt()\n  const output = new ByteBuffer(outputBuffer || Buffer.allocUnsafe(outputSize))\n  // TODO output.limit(outputSize)\n\n  if (output.length < outputSize) {\n    throw new CramMalformedError(\n      `Output buffer too small to fit ${outputSize} bytes.`,\n    )\n  }\n\n  switch (order) {\n    case 0:\n      return uncompressOrder0Way4(input, output)\n\n    case 1:\n      return uncompressOrder1Way4(input, output)\n\n    default:\n      throw new CramMalformedError(`Invalid rANS order: ${order}`)\n  }\n}\n","export class CramBufferOverrunError extends Error {}\n\nexport function getBits(\n  data: Buffer,\n  cursor: { bytePosition: number; bitPosition: number },\n  numBits: number,\n) {\n  let val = 0\n  if (\n    cursor.bytePosition + (7 - cursor.bitPosition + numBits) / 8 >\n    data.length\n  ) {\n    throw new CramBufferOverrunError(\n      'read error during decoding. the file seems to be truncated.',\n    )\n  }\n  for (let dlen = numBits; dlen; dlen--) {\n    // get the next `dlen` bits in the input, put them in val\n    val <<= 1\n    val |= (data[cursor.bytePosition]! >> cursor.bitPosition) & 1\n    cursor.bitPosition -= 1\n    if (cursor.bitPosition < 0) {\n      cursor.bytePosition += 1\n    }\n    cursor.bitPosition &= 7\n  }\n  return val\n}\n","import md5 from 'md5'\nimport Long from 'long'\nimport { CramBufferOverrunError } from './codecs/getBits'\n\nexport function itf8Size(v: number) {\n  if (!(v & ~0x7f)) {\n    return 1\n  }\n  if (!(v & ~0x3fff)) {\n    return 2\n  }\n  if (!(v & ~0x1fffff)) {\n    return 3\n  }\n  if (!(v & ~0xfffffff)) {\n    return 4\n  }\n  return 5\n}\n\nexport function parseItf8(buffer: Uint8Array, initialOffset: number) {\n  let offset = initialOffset\n  const countFlags = buffer[offset]!\n  let result: number\n  if (countFlags < 0x80) {\n    result = countFlags\n    offset = offset + 1\n  } else if (countFlags < 0xc0) {\n    result = ((countFlags << 8) | buffer[offset + 1]!) & 0x3fff\n    offset = offset + 2\n  } else if (countFlags < 0xe0) {\n    result =\n      ((countFlags << 16) | (buffer[offset + 1]! << 8) | buffer[offset + 2]!) &\n      0x1fffff\n    offset = offset + 3\n  } else if (countFlags < 0xf0) {\n    result =\n      ((countFlags << 24) |\n        (buffer[offset + 1]! << 16) |\n        (buffer[offset + 2]! << 8) |\n        buffer[offset + 3]!) &\n      0x0fffffff\n    offset = offset + 4\n  } else {\n    result =\n      ((countFlags & 0x0f) << 28) |\n      (buffer[offset + 1]! << 20) |\n      (buffer[offset + 2]! << 12) |\n      (buffer[offset + 3]! << 4) |\n      (buffer[offset + 4]! & 0x0f)\n    // x=((0xff & 0x0f)<<28) | (0xff<<20) | (0xff<<12) | (0xff<<4) | (0x0f & 0x0f);\n    // TODO *val_p = uv < 0x80000000UL ? uv : -((int32_t) (0xffffffffUL - uv)) - 1;\n    offset = offset + 5\n  }\n  if (offset > buffer.length) {\n    throw new CramBufferOverrunError(\n      'Attempted to read beyond end of buffer; this file seems truncated.',\n    )\n  }\n  return [result, offset - initialOffset] as const\n}\n\nexport function parseLtf8(buffer: Buffer, initialOffset: number) {\n  let offset = initialOffset\n  const countFlags = buffer[offset]!\n  let n: number | Long\n  if (countFlags < 0x80) {\n    n = countFlags\n    offset += 1\n  } else if (countFlags < 0xc0) {\n    n = ((buffer[offset]! << 8) | buffer[offset + 1]!) & 0x3fff\n    offset += 2\n  } else if (countFlags < 0xe0) {\n    n =\n      ((buffer[offset]! << 16) |\n        (buffer[offset + 1]! << 8) |\n        buffer[offset + 2]!) &\n      0x1fffff\n    n = ((countFlags & 63) << 16) | buffer.readUInt16LE(offset + 1)\n    offset += 3\n  } else if (countFlags < 0xf0) {\n    n =\n      ((buffer[offset]! << 24) |\n        (buffer[offset + 1]! << 16) |\n        (buffer[offset + 2]! << 8) |\n        buffer[offset + 3]!) &\n      0x0fffffff\n    offset += 4\n  } else if (countFlags < 0xf8) {\n    n =\n      ((buffer[offset]! & 15) * 2 ** 32 + (buffer[offset + 1]! << 24)) |\n      ((buffer[offset + 2]! << 16) |\n        (buffer[offset + 3]! << 8) |\n        buffer[offset + 4]!)\n    // TODO *val_p = uv < 0x80000000UL ? uv : -((int32_t) (0xffffffffUL - uv)) - 1;\n    offset += 5\n  } else if (countFlags < 0xfc) {\n    n =\n      ((((buffer[offset]! & 7) << 8) | buffer[offset + 1]!) * 2 ** 32 +\n        (buffer[offset + 2]! << 24)) |\n      ((buffer[offset + 3]! << 16) |\n        (buffer[offset + 4]! << 8) |\n        buffer[offset + 5]!)\n    offset += 6\n  } else if (countFlags < 0xfe) {\n    n =\n      ((((buffer[offset]! & 3) << 16) |\n        (buffer[offset + 1]! << 8) |\n        buffer[offset + 2]!) *\n        2 ** 32 +\n        (buffer[offset + 3]! << 24)) |\n      ((buffer[offset + 4]! << 16) |\n        (buffer[offset + 5]! << 8) |\n        buffer[offset + 6]!)\n    offset += 7\n  } else if (countFlags < 0xff) {\n    n = Long.fromBytesBE(\n      buffer.slice(offset + 1, offset + 8) as unknown as number[],\n    )\n    if (\n      n.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      n.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new Error('integer overflow')\n    }\n    n = n.toNumber()\n    offset += 8\n  } else {\n    n = Long.fromBytesBE(\n      buffer.slice(offset + 1, offset + 9) as unknown as number[],\n    )\n    if (\n      n.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      n.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new Error('integer overflow')\n    }\n    n = n.toNumber()\n    offset += 9\n  }\n  return [n, offset - initialOffset] as const\n}\n\nexport function parseItem<T>(\n  buffer: Buffer,\n  parser: (buffer: Buffer, offset: number) => { offset: number; value: T },\n  startBufferPosition = 0,\n  startFilePosition = 0,\n) {\n  const { offset, value } = parser(buffer, startBufferPosition)\n  return {\n    ...value,\n    _endPosition: offset + startFilePosition,\n    _size: offset - startBufferPosition,\n  }\n}\n\n// this would be nice as a decorator, but i'm a little worried about babel\n// support for it going away or changing. memoizes a method in the stupidest\n// possible way, with no regard for the arguments.  actually, this only works\n// on methods that take no arguments\nexport function tinyMemoize(_class: any, methodName: any) {\n  const method = _class.prototype[methodName]\n  const memoAttrName = `_memo_${methodName}`\n  _class.prototype[methodName] = function _tinyMemoized() {\n    if (!(memoAttrName in this)) {\n      const res = method.call(this)\n      this[memoAttrName] = res\n      Promise.resolve(res).catch(() => {\n         \n        delete this[memoAttrName]\n      })\n    }\n    return this[memoAttrName]\n  }\n}\n\nexport function sequenceMD5(seq: string) {\n  return md5(seq.toUpperCase().replaceAll(/[^\\u0021-\\u007e]/g, ''))\n}\n","import { TupleOf } from '../typescript'\nimport { parseItf8, parseLtf8 } from './util'\nimport { DataSeriesEncodingMap } from './codecs/dataSeriesTypes'\nimport { CramEncoding } from './encoding'\n\nexport function cramFileDefinition() {\n  return {\n    parser: (buffer: Buffer, _startOffset = 0) => {\n      const b = buffer\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      let offset = 0\n      const magic = buffer.subarray(offset, offset + 4).toString()\n      offset += 4\n      const majorVersion = dataView.getUint8(offset)\n      offset += 1\n      const minorVersion = dataView.getUint8(offset)\n      offset += 1\n      const fileId = b\n        .subarray(offset, offset + 20)\n        .toString()\n        .replaceAll('\\0', '')\n      offset += 20\n      return {\n        value: {\n          magic,\n          majorVersion,\n          minorVersion,\n          fileId,\n        },\n        offset,\n      }\n    },\n    maxLength: 26,\n  }\n}\nexport function cramBlockHeader() {\n  const parser = (buffer: Buffer, _startOffset = 0) => {\n    const b = buffer\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    const d = dataView.getUint8(offset)\n    const compressionMethod = [\n      'raw',\n      'gzip',\n      'bzip2',\n      'lzma',\n      'rans',\n      'rans4x16',\n      'arith',\n      'fqzcomp',\n      'tok3',\n    ][d]\n    if (!compressionMethod) {\n      throw new Error(`compression method number ${d} not implemented`)\n    }\n    offset += 1\n\n    const c = dataView.getUint8(offset)\n    const contentType = [\n      'FILE_HEADER',\n      'COMPRESSION_HEADER',\n      'MAPPED_SLICE_HEADER',\n      'UNMAPPED_SLICE_HEADER', // < only used in cram v1\n      'EXTERNAL_DATA',\n      'CORE_DATA',\n    ][c]\n    if (!contentType) {\n      throw new Error(`invalid block content type id ${c}`)\n    }\n    offset += 1\n\n    const [contentId, newOffset1] = parseItf8(buffer, offset)\n    offset += newOffset1\n    const [compressedSize, newOffset2] = parseItf8(buffer, offset)\n    offset += newOffset2\n    const [uncompressedSize, newOffset3] = parseItf8(buffer, offset)\n    offset += newOffset3\n    return {\n      offset,\n      value: {\n        uncompressedSize,\n        compressedSize,\n        contentId,\n        contentType: contentType as\n          | 'FILE_HEADER'\n          | 'COMPRESSION_HEADER'\n          | 'MAPPED_SLICE_HEADER'\n          | 'UNMAPPED_SLICE_HEADER' // < only used in cram v1\n          | 'EXTERNAL_DATA'\n          | 'CORE_DATA',\n        compressionMethod: compressionMethod as CompressionMethod,\n      },\n    }\n  }\n  return { parser, maxLength: 17 }\n}\n\nexport function cramBlockCrc32() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const b = buffer\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      const crc32 = dataView.getUint32(offset, true)\n      offset += 4\n      return {\n        offset,\n        value: {\n          crc32,\n        },\n      }\n    },\n    maxLength: 4,\n  }\n}\n\nexport type CramTagDictionary = string[][]\n\nfunction makeTagSet(buffer: Buffer, stringStart: number, stringEnd: number) {\n  const str = buffer.toString('utf8', stringStart, stringEnd)\n  const tags = []\n  for (let i = 0; i < str.length; i += 3) {\n    tags.push(str.slice(i, i + 3))\n  }\n  return tags\n}\n\nexport function cramTagDictionary() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const [size, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const subbuf = buffer.subarray(offset, offset + size)\n      offset += size\n\n      const tagSets = []\n      let stringStart = 0\n      let i = 0\n      for (; i < subbuf.length; i++) {\n        if (!subbuf[i]) {\n          tagSets.push(makeTagSet(subbuf, stringStart, i))\n          stringStart = i + 1\n        }\n      }\n      if (i > stringStart) {\n        tagSets.push(makeTagSet(subbuf, stringStart, i))\n      }\n\n      return {\n        value: {\n          size,\n          ents: tagSets,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nexport interface CramPreservationMap {\n  MI: boolean\n  UI: boolean\n  PI: boolean\n  RN: boolean\n  AP: boolean\n  RR: boolean\n  SM: [number, number, number, number, number]\n  TD: CramTagDictionary\n}\n\nexport function cramPreservationMap() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const b = buffer\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      const [mapSize, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const [mapCount, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      const ents = []\n      for (let i = 0; i < mapCount; i++) {\n        const key =\n          String.fromCharCode(buffer[offset]!) +\n          String.fromCharCode(buffer[offset + 1]!)\n        offset += 2\n\n        if (\n          key === 'MI' ||\n          key === 'UI' ||\n          key === 'PI' ||\n          key === 'RN' ||\n          key === 'AP' ||\n          key === 'RR'\n        ) {\n          ents.push({\n            key,\n            value: !!dataView.getUint8(offset),\n          })\n          offset += 1\n        } else if (key === 'SM') {\n          ents.push({\n            key,\n            value: [\n              dataView.getUint8(offset),\n              dataView.getUint8(offset + 1),\n              dataView.getUint8(offset + 2),\n              dataView.getUint8(offset + 3),\n              dataView.getUint8(offset + 4),\n            ],\n          })\n          offset += 5\n        } else if (key === 'TD') {\n          const { offset: offsetRet, value } = cramTagDictionary().parser(\n            buffer,\n            offset,\n          )\n          ents.push({ key, value: value.ents })\n          offset = offsetRet\n        } else {\n          throw new Error(`unknown key ${key}`)\n        }\n      }\n      return {\n        value: {\n          mapSize,\n          mapCount,\n          ents,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nfunction formatMap(data: { ents: { key: string; value: unknown }[] }) {\n  const map: Record<string, unknown> = {}\n  for (const { key, value } of data.ents) {\n    if (map[key]) {\n      console.warn(`duplicate key ${key} in map`)\n    }\n    map[key] = value\n  }\n  return map\n}\n\nexport interface MappedSliceHeader {\n  refSeqId: number\n  refSeqStart: number\n  refSeqSpan: number\n  numRecords: number\n  recordCounter: number\n  numBlocks: number\n  numContentIds: number\n  contentIds: number[]\n  refBaseBlockId: number\n  md5?: TupleOf<number, 16>\n}\n\nexport interface UnmappedSliceHeader {\n  numRecords: number\n  recordCounter: number\n  numBlocks: number\n  numContentIds: number\n  contentIds: number[]\n  md5?: TupleOf<number, 16>\n}\n\nexport function isMappedSliceHeader(\n  header: unknown,\n): header is MappedSliceHeader {\n  return typeof (header as any).refSeqId === 'number'\n}\n\ninterface Value {\n  codecId: number\n  parametersBytes: number\n  parameters: Record<string, unknown>\n}\n// assemble a section parser for the unmapped slice header, with slight\n// variations depending on the major version of the cram file\nfunction cramUnmappedSliceHeader(majorVersion: number) {\n  let maxLength = 0\n  maxLength += 5\n  maxLength += 9\n  maxLength += 5 * 2\n  maxLength += 16\n\n  const parser = (buffer: Buffer, offset: number) => {\n    const [numRecords, newOffset1] = parseItf8(buffer, offset)\n    offset += newOffset1\n    let recordCounter = 0\n\n    // recordCounter is itf8 in a CRAM v2 file, absent in CRAM v1\n    if (majorVersion >= 3) {\n      const [rc, newOffset2] = parseLtf8(buffer, offset)\n      offset += newOffset2\n      recordCounter = rc\n    } else if (majorVersion === 2) {\n      const [rc, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      recordCounter = rc\n    } else {\n      console.warn('recordCounter=0')\n    }\n\n    const [numBlocks, newOffset3] = parseItf8(buffer, offset)\n    offset += newOffset3\n    const [numContentIds, newOffset4] = parseItf8(buffer, offset)\n    offset += newOffset4\n    const contentIds = []\n    for (let i = 0; i < numContentIds; i++) {\n      const [id, newOffset5] = parseItf8(buffer, offset)\n      offset += newOffset5\n      contentIds.push(id)\n    }\n\n    // the md5 sum is missing in cram v1\n    let md5: TupleOf<number, 16> | undefined\n    if (majorVersion >= 2) {\n      md5 = [...buffer.subarray(offset, offset + 16)] as TupleOf<number, 16>\n      offset += 16\n    }\n\n    return {\n      value: {\n        recordCounter,\n        md5,\n        contentIds,\n        numContentIds,\n        numBlocks,\n        numRecords,\n      },\n      offset,\n    }\n  }\n  return {\n    parser,\n    maxLength: (numContentIds: number) => maxLength + numContentIds * 5,\n  }\n}\n\n// assembles a section parser for the unmapped slice header, with slight\n// variations depending on the major version of the cram file\nfunction cramMappedSliceHeader(majorVersion: number) {\n  let maxLength = 0\n  maxLength += 5 * 4 // EL0\n  maxLength += 9 // EL1\n  maxLength += 5 * 3 // EL2 ITF8s\n  maxLength += 16 // MD5\n\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      // L0\n      const [refSeqId, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const [refSeqStart, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      const [refSeqSpan, newOffset3] = parseItf8(buffer, offset)\n      offset += newOffset3\n      const [numRecords, newOffset4] = parseItf8(buffer, offset)\n      offset += newOffset4\n      // EL0\n\n      // L1\n      let recordCounter = 0\n      if (majorVersion >= 3) {\n        const [rc, newOffset5] = parseLtf8(buffer, offset)\n        offset += newOffset5\n        recordCounter = rc\n      } else if (majorVersion === 2) {\n        const [rc, newOffset5] = parseItf8(buffer, offset)\n        offset += newOffset5\n        recordCounter = rc\n      } else {\n        console.warn('majorVersion is <2, recordCounter set to 0')\n      }\n      // EL1\n\n      // L2\n      const [numBlocks, newOffset6] = parseItf8(buffer, offset)\n      offset += newOffset6\n      const [numContentIds, newOffset7] = parseItf8(buffer, offset)\n      offset += newOffset7\n      const contentIds = []\n      for (let i = 0; i < numContentIds; i++) {\n        const [id, newOffset5] = parseItf8(buffer, offset)\n        offset += newOffset5\n        contentIds.push(id)\n      }\n      const [refBaseBlockId, newOffset8] = parseItf8(buffer, offset)\n      offset += newOffset8\n      // EL2\n\n      // the md5 sum is missing in cram v1\n      let md5: TupleOf<number, 16> | undefined\n      if (majorVersion >= 2) {\n        md5 = [...buffer.subarray(offset, offset + 16)] as TupleOf<number, 16>\n        offset += 16\n      }\n\n      return {\n        value: {\n          md5,\n          numBlocks,\n          numRecords,\n          numContentIds,\n          refSeqSpan,\n          refSeqId,\n          refSeqStart,\n          recordCounter,\n          refBaseBlockId,\n          contentIds,\n        },\n        offset,\n      }\n    },\n    maxLength: (numContentIds: number) => maxLength + numContentIds * 5,\n  }\n}\n\nfunction cramEncoding() {\n  return {\n    parser: (buffer: Buffer, offset: number) => cramEncodingSub(buffer, offset),\n  }\n}\n\nfunction cramEncodingSub(\n  buffer: Buffer,\n  offset: number,\n): { value: Value; offset: number } {\n  const b = buffer\n  const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n  const [codecId, newOffset1] = parseItf8(buffer, offset)\n  offset += newOffset1\n  const [parametersBytes, newOffset2] = parseItf8(buffer, offset)\n  offset += newOffset2\n\n  const parameters = {} as Record<string, unknown>\n\n  if (codecId === 0) {\n    // NULL\n  } else if (codecId === 1) {\n    // EXTERNAL\n    const [bc, newOffset3] = parseItf8(buffer, offset)\n    parameters.blockContentId = bc\n    offset += newOffset3\n  } else if (codecId === 2) {\n    // GOLUMB\n    const [off, newOffset3] = parseItf8(buffer, offset)\n    parameters.offset = off\n    offset += newOffset3\n    const [M2, newOffset4] = parseItf8(buffer, offset)\n    parameters.M = M2\n    offset += newOffset4\n  } else if (codecId === 3) {\n    // HUFFMAN_INT\n    const val = parseItf8(buffer, offset)\n    const numCodes = val[0]\n    offset += val[1]\n    const symbols = [] as number[]\n    for (let i = 0; i < numCodes; i++) {\n      const code = parseItf8(buffer, offset)\n      symbols.push(code[0])\n      offset += code[1]\n    }\n    parameters.symbols = symbols\n    const val2 = parseItf8(buffer, offset)\n    const numLengths = val[0]\n    parameters.numLengths = numLengths\n    parameters.numCodes = numCodes\n    parameters.numLengths = numLengths\n    offset += val2[1]\n    const bitLengths = [] as number[]\n    for (let i = 0; i < numLengths; i++) {\n      const len = parseItf8(buffer, offset)\n      offset += len[1]\n      bitLengths.push(len[0])\n    }\n    parameters.bitLengths = bitLengths\n  } else if (codecId === 4) {\n    // BYTE_ARRAY_LEN\n    const { value: lengthsEncoding, offset: newOffset1 } = cramEncodingSub(\n      buffer,\n      offset,\n    )\n    parameters.lengthsEncoding = lengthsEncoding\n    offset = newOffset1\n    const { value: valuesEncoding, offset: newOffset2 } = cramEncodingSub(\n      buffer,\n      offset,\n    )\n    parameters.valuesEncoding = valuesEncoding\n    offset = newOffset2\n  } else if (codecId === 5) {\n    // BYTE_ARRAY_STOP\n    parameters.stopByte = dataView.getUint8(offset)\n    offset += 1\n    const [blockContentId, newOffset1] = parseItf8(buffer, offset)\n    parameters.blockContentId = blockContentId\n    offset += newOffset1\n  } else if (codecId === 6) {\n    // BETA\n    const [off, newOffset1] = parseItf8(buffer, offset)\n    parameters.offset = off\n    offset += newOffset1\n    const [len, newOffset2] = parseItf8(buffer, offset)\n    parameters.length = len\n    offset += newOffset2\n  } else if (codecId === 7) {\n    // SUBEXP\n    const [off, newOffset1] = parseItf8(buffer, offset)\n    parameters.offset = off\n    offset += newOffset1\n    const [K, newOffset2] = parseItf8(buffer, offset)\n    parameters.K = K\n    offset += newOffset2\n  } else if (codecId === 8) {\n    // GOLOMB_RICE\n    const [off, newOffset1] = parseItf8(buffer, offset)\n    parameters.offset = off\n    offset += newOffset1\n    const [l2m, newOffset2] = parseItf8(buffer, offset)\n    parameters.log2m = l2m\n    offset += newOffset2\n  } else if (codecId === 9) {\n    // GAMMA\n    const [off, newOffset1] = parseItf8(buffer, offset)\n    parameters.offset = off\n    offset += newOffset1\n  } else {\n    throw new Error(`unknown codecId ${codecId}`)\n  }\n\n  return {\n    value: {\n      codecId,\n      parametersBytes,\n      parameters,\n    },\n    offset,\n  }\n}\n\nfunction cramDataSeriesEncodingMap() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const [mapSize, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const [mapCount, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      const ents = []\n      for (let i = 0; i < mapCount; i++) {\n        const key =\n          String.fromCharCode(buffer[offset]!) +\n          String.fromCharCode(buffer[offset + 1]!)\n        offset += 2\n\n        const { value, offset: newOffset4 } = cramEncodingSub(buffer, offset)\n        offset = newOffset4\n        ents.push({ key, value })\n      }\n      return {\n        value: {\n          mapSize,\n          ents,\n          mapCount,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nfunction cramTagEncodingMap() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const [mapSize, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const [mapCount, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      const ents = []\n      for (let i = 0; i < mapCount; i++) {\n        const [k0, newOffset3] = parseItf8(buffer, offset)\n        offset += newOffset3\n        const key =\n          String.fromCharCode((k0 >> 16) & 0xff) +\n          String.fromCharCode((k0 >> 8) & 0xff) +\n          String.fromCharCode(k0 & 0xff)\n\n        const { value, offset: newOffset4 } = cramEncodingSub(buffer, offset)\n        offset = newOffset4\n        ents.push({ key, value })\n      }\n      return {\n        value: {\n          mapSize,\n          ents,\n          mapCount,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nfunction cramCompressionHeader() {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      // TODO: if we want to support CRAM v1, we will need to refactor\n      // compression header into 2 parts to parse the landmarks, like the\n      // container header\n      const { value: preservation, offset: newOffset1 } =\n        cramPreservationMap().parser(buffer, offset)\n      offset = newOffset1\n\n      const { value: dataSeriesEncoding, offset: newOffset2 } =\n        cramDataSeriesEncodingMap().parser(buffer, offset)\n      offset = newOffset2\n\n      const { value: tagEncoding, offset: newOffset3 } =\n        cramTagEncodingMap().parser(buffer, offset)\n      offset = newOffset3\n\n      return {\n        value: {\n          dataSeriesEncoding: formatMap(\n            dataSeriesEncoding,\n          ) as DataSeriesEncodingMap,\n          preservation: formatMap(\n            preservation,\n          ) as unknown as CramPreservationMap,\n          tagEncoding: formatMap(tagEncoding) as Record<string, CramEncoding>,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nfunction cramContainerHeader1(majorVersion: number) {\n  let maxLength = 4\n  maxLength += 5 * 4\n  maxLength += 9\n  maxLength += 9\n  maxLength += 5 + 5\n  return {\n    maxLength,\n    parser: (buffer: Buffer, offset: number) => {\n      const b = buffer\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      // byte size of the container data (blocks)\n      const length = dataView.getInt32(offset, true)\n      offset += 4\n      // reference sequence identifier, -1 for unmapped reads, -2 for multiple\n      // reference sequences\n      const [refSeqId, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const [refSeqStart, newOffset2] = parseItf8(buffer, offset)\n      offset += newOffset2\n      const [alignmentSpan, newOffset3] = parseItf8(buffer, offset)\n      offset += newOffset3\n      const [numRecords, newOffset4] = parseItf8(buffer, offset)\n      offset += newOffset4\n\n      let recordCounter = 0\n      if (majorVersion >= 3) {\n        const [rc, newOffset5] = parseLtf8(buffer, offset)\n        recordCounter = rc\n        offset += newOffset5\n      } else if (majorVersion === 2) {\n        const [rc, newOffset5] = parseItf8(buffer, offset)\n        recordCounter = rc\n        offset += newOffset5\n      } else {\n        console.warn('setting recordCounter=0')\n      }\n\n      let numBases: number | undefined\n      if (majorVersion > 1) {\n        const [n, newOffset5] = parseLtf8(buffer, offset)\n        numBases = n\n        offset += newOffset5\n      }\n      const [numBlocks, newOffset6] = parseItf8(buffer, offset)\n      offset += newOffset6\n      const [numLandmarks, newOffset7] = parseItf8(buffer, offset)\n      offset += newOffset7\n      return {\n        value: {\n          length,\n          refSeqId,\n          refSeqStart,\n          alignmentSpan,\n          numBlocks,\n          numLandmarks,\n          numBases,\n          recordCounter,\n          numRecords,\n        },\n        offset,\n      }\n    },\n  }\n}\n\nfunction cramContainerHeader2(majorVersion: number) {\n  return {\n    parser: (buffer: Buffer, offset: number) => {\n      const b = buffer\n      const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n      const [numLandmarks, newOffset1] = parseItf8(buffer, offset)\n      offset += newOffset1\n      const landmarks = []\n      for (let i = 0; i < numLandmarks; i++) {\n        const [landmark, newOffset2] = parseItf8(buffer, offset)\n        offset += newOffset2\n        landmarks.push(landmark)\n      }\n\n      let crc32: number | undefined\n      if (majorVersion >= 3) {\n        crc32 = dataView.getUint32(offset, true)\n        offset += 4\n      }\n      return {\n        value: {\n          ...(crc32 === undefined ? {} : { crc32 }),\n          numLandmarks,\n          landmarks,\n        },\n        offset,\n      }\n    },\n    maxLength: (numLandmarks: number) => 5 + 5 * numLandmarks + 4,\n  }\n}\n\nexport type CompressionMethod =\n  | 'raw'\n  | 'gzip'\n  | 'bzip2'\n  | 'lzma'\n  | 'rans'\n  | 'rans4x16'\n  | 'arith'\n  | 'fqzcomp'\n  | 'tok3'\n\nexport interface BlockHeader {\n  compressionMethod: CompressionMethod\n  contentType:\n    | 'FILE_HEADER'\n    | 'COMPRESSION_HEADER'\n    | 'MAPPED_SLICE_HEADER'\n    | 'UNMAPPED_SLICE_HEADER' // < only used in cram v1\n    | 'EXTERNAL_DATA'\n    | 'CORE_DATA'\n  contentId: number\n  compressedSize: number\n  uncompressedSize: number\n}\n\nexport interface CramCompressionHeader {\n  preservation: CramPreservationMap\n  dataSeriesEncoding: DataSeriesEncodingMap\n  tagEncoding: Record<string, CramEncoding>\n  _size: number\n  _endPosition: number\n}\n\nexport function getSectionParsers(majorVersion: number) {\n  return {\n    cramFileDefinition: cramFileDefinition(),\n    cramBlockHeader: cramBlockHeader(),\n    cramBlockCrc32: cramBlockCrc32(),\n    cramDataSeriesEncodingMap: cramDataSeriesEncodingMap(),\n    cramTagEncodingMap: cramTagEncodingMap(),\n    cramCompressionHeader: cramCompressionHeader(),\n    cramEncoding: cramEncoding(),\n    cramUnmappedSliceHeader: cramUnmappedSliceHeader(majorVersion),\n    cramMappedSliceHeader: cramMappedSliceHeader(majorVersion),\n    cramContainerHeader1: cramContainerHeader1(majorVersion),\n    cramContainerHeader2: cramContainerHeader2(majorVersion),\n  }\n}\n","import { CramMalformedError } from '../../errors'\nimport {\n  BamFlagsDecoder,\n  CramFlagsDecoder,\n  MateFlagsDecoder,\n  ReadFeature,\n} from '../record'\nimport CramSlice, { SliceHeader } from './index'\nimport { isMappedSliceHeader } from '../sectionParsers'\nimport CramContainerCompressionScheme, {\n  DataSeriesTypes,\n} from '../container/compressionScheme'\nimport { CramFileBlock } from '../file'\nimport { Cursors, DataTypeMapping } from '../codecs/_base'\nimport { DataSeriesEncodingKey } from '../codecs/dataSeriesTypes'\n\n/**\n * given a Buffer, read a string up to the first null character\n * @private\n */\nfunction readNullTerminatedString(buffer: Uint8Array) {\n  let r = ''\n  for (let i = 0; i < buffer.length && buffer[i] !== 0; i++) {\n    r += String.fromCharCode(buffer[i]!)\n  }\n  return r\n}\n\n/**\n * parse a BAM tag's array value from a binary buffer\n * @private\n */\nfunction parseTagValueArray(buffer: Uint8Array) {\n  const arrayType = String.fromCharCode(buffer[0]!)\n  const length = Int32Array.from(buffer.slice(1))[0]!\n\n  const array: number[] = new Array(length)\n  buffer = buffer.slice(5)\n\n  if (arrayType === 'c') {\n    const arr = new Int8Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 'C') {\n    const arr = new Uint8Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 's') {\n    const arr = new Int16Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 'S') {\n    const arr = new Uint16Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 'i') {\n    const arr = new Int32Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 'I') {\n    const arr = new Uint32Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else if (arrayType === 'f') {\n    const arr = new Float32Array(buffer.buffer)\n    for (let i = 0; i < length; i += 1) {\n      array[i] = arr[i]!\n    }\n  } else {\n    throw new Error(`unknown type: ${arrayType}`)\n  }\n\n  return array\n}\n\nfunction parseTagData(tagType: string, buffer: Uint8Array) {\n  if (tagType === 'Z') {\n    return readNullTerminatedString(buffer)\n  }\n  if (tagType === 'A') {\n    return String.fromCharCode(buffer[0]!)\n  }\n  if (tagType === 'I') {\n    return new Uint32Array(buffer.buffer)[0]\n  }\n  if (tagType === 'i') {\n    return new Int32Array(buffer.buffer)[0]\n  }\n  if (tagType === 's') {\n    return new Int16Array(buffer.buffer)[0]\n  }\n  if (tagType === 'S') {\n    return new Uint16Array(buffer.buffer)[0]\n  }\n  if (tagType === 'c') {\n    return new Int8Array(buffer.buffer)[0]\n  }\n  if (tagType === 'C') {\n    return buffer[0]!\n  }\n  if (tagType === 'f') {\n    return new Float32Array(buffer.buffer)[0]\n  }\n  if (tagType === 'H') {\n    return Number.parseInt(\n      readNullTerminatedString(buffer).replace(/^0x/, ''),\n      16,\n    )\n  }\n  if (tagType === 'B') {\n    return parseTagValueArray(buffer)\n  }\n\n  throw new CramMalformedError(`Unrecognized tag type ${tagType}`)\n}\n\nfunction decodeReadFeatures(\n  alignmentStart: number,\n  readFeatureCount: number,\n  decodeDataSeries: any,\n  compressionScheme: CramContainerCompressionScheme,\n  majorVersion: number,\n) {\n  let currentReadPos = 0\n  let currentRefPos = alignmentStart - 1\n  const readFeatures: ReadFeature[] = new Array(readFeatureCount)\n\n  function decodeRFData([type, dataSeriesName]: readonly [\n    type: string,\n    dataSeriesName: string,\n  ]) {\n    const data = decodeDataSeries(dataSeriesName)\n    if (type === 'character') {\n      return String.fromCharCode(data)\n    }\n    if (type === 'string') {\n      let r = ''\n      for (let i = 0; i < data.byteLength; i++) {\n        r += String.fromCharCode(data[i])\n      }\n      return r\n    }\n    if (type === 'numArray') {\n      return data.toArray()\n    }\n    // else if (type === 'number') {\n    //   return data[0]\n    // }\n    return data\n  }\n\n  for (let i = 0; i < readFeatureCount; i += 1) {\n    const code = String.fromCharCode(decodeDataSeries('FC'))\n\n    const readPosDelta = decodeDataSeries('FP')\n\n    // map of operator name -> data series name\n    const data1Schema = {\n      B: ['character', 'BA'] as const,\n      S: ['string', majorVersion > 1 ? 'SC' : 'IN'] as const, // IN if cram v1, SC otherwise\n      X: ['number', 'BS'] as const,\n      D: ['number', 'DL'] as const,\n      I: ['string', 'IN'] as const,\n      i: ['character', 'BA'] as const,\n      b: ['string', 'BB'] as const,\n      q: ['numArray', 'QQ'] as const,\n      Q: ['number', 'QS'] as const,\n      H: ['number', 'HC'] as const,\n      P: ['number', 'PD'] as const,\n      N: ['number', 'RS'] as const,\n    }[code]\n\n    if (!data1Schema) {\n      throw new CramMalformedError(`invalid read feature code \"${code}\"`)\n    }\n\n    let data = decodeRFData(data1Schema)\n\n    // if this is a tag with two data items, make the data an array and add the second item\n    const data2Schema = { B: ['number', 'QS'] as const }[code]\n    if (data2Schema) {\n      data = [data, decodeRFData(data2Schema)]\n    }\n\n    currentReadPos += readPosDelta\n    const pos = currentReadPos\n\n    currentRefPos += readPosDelta\n    const refPos = currentRefPos\n\n    // for gapping features, adjust the reference position for read features that follow\n    if (code === 'D' || code === 'N') {\n      currentRefPos += data\n    } else if (code === 'I' || code === 'S') {\n      currentRefPos -= data.length\n    } else if (code === 'i') {\n      currentRefPos -= 1\n    }\n\n    readFeatures[i] = { code, pos, refPos, data }\n  }\n  return readFeatures\n}\n\nexport type DataSeriesDecoder = <T extends DataSeriesEncodingKey>(\n  dataSeriesName: T,\n) => DataTypeMapping[DataSeriesTypes[T]]\n\nexport default function decodeRecord(\n  slice: CramSlice,\n  decodeDataSeries: DataSeriesDecoder,\n  compressionScheme: CramContainerCompressionScheme,\n  sliceHeader: SliceHeader,\n  coreDataBlock: CramFileBlock,\n  blocksByContentId: Record<number, CramFileBlock>,\n  cursors: Cursors,\n  majorVersion: number,\n  recordNumber: number,\n) {\n  let flags = decodeDataSeries('BF')\n\n  // note: the C data type of compressionFlags is byte in cram v1\n  // and int32 in cram v2+, but that does not matter for us here\n  // in javascript land.\n  const cramFlags = decodeDataSeries('CF')\n\n  if (!isMappedSliceHeader(sliceHeader.parsedContent)) {\n    throw new Error('slice header not mapped')\n  }\n\n  const sequenceId =\n    majorVersion > 1 && sliceHeader.parsedContent.refSeqId === -2\n      ? decodeDataSeries('RI')\n      : sliceHeader.parsedContent.refSeqId\n\n  const readLength = decodeDataSeries('RL')\n  // if APDelta, will calculate the true start in a second pass\n  let alignmentStart = decodeDataSeries('AP')\n  if (compressionScheme.APdelta) {\n    alignmentStart = alignmentStart + cursors.lastAlignmentStart\n  }\n  cursors.lastAlignmentStart = alignmentStart\n  const readGroupId = decodeDataSeries('RG')\n\n  let readName: string | undefined\n  if (compressionScheme.readNamesIncluded) {\n    readName = readNullTerminatedString(decodeDataSeries('RN'))\n  }\n\n  let mateToUse:\n    | {\n        mateFlags: number\n        mateSequenceId: number\n        mateAlignmentStart: number\n        mateReadName: string | undefined\n      }\n    | undefined\n  let templateSize: number | undefined\n  let mateRecordNumber: number | undefined\n  // mate record\n  if (CramFlagsDecoder.isDetached(cramFlags)) {\n    // note: the MF is a byte in 1.0, int32 in 2+, but once again this doesn't\n    // matter for javascript\n    const mateFlags = decodeDataSeries('MF')\n    let mateReadName: string | undefined\n    if (!compressionScheme.readNamesIncluded) {\n      mateReadName = readNullTerminatedString(decodeDataSeries('RN'))\n      readName = mateReadName\n    }\n    const mateSequenceId = decodeDataSeries('NS')\n    const mateAlignmentStart = decodeDataSeries('NP')\n    if (mateFlags || mateSequenceId > -1) {\n      mateToUse = {\n        mateFlags,\n        mateSequenceId,\n        mateAlignmentStart,\n        mateReadName,\n      }\n    }\n\n    templateSize = decodeDataSeries('TS')\n\n    // set mate unmapped if needed\n    if (MateFlagsDecoder.isUnmapped(mateFlags)) {\n      flags = BamFlagsDecoder.setMateUnmapped(flags)\n    }\n    // set mate reversed if needed\n    if (MateFlagsDecoder.isOnNegativeStrand(mateFlags)) {\n      flags = BamFlagsDecoder.setMateReverseComplemented(flags)\n    }\n\n    // detachedCount++\n  } else if (CramFlagsDecoder.isWithMateDownstream(cramFlags)) {\n    mateRecordNumber = decodeDataSeries('NF') + recordNumber + 1\n  }\n\n  // TODO: the aux tag parsing will have to be refactored if we want to support\n  // cram v1\n  const TLindex = decodeDataSeries('TL')\n  if (TLindex < 0) {\n    /* TODO: check nTL: TLindex >= compressionHeader.tagEncoding.size */\n    throw new CramMalformedError('invalid TL index')\n  }\n\n  const tags: Record<string, any> = {}\n  // TN = tag names\n  const TN = compressionScheme.getTagNames(TLindex)!\n  const ntags = TN.length\n  for (let i = 0; i < ntags; i += 1) {\n    const tagId = TN[i]!\n    const tagName = tagId.slice(0, 2)\n    const tagType = tagId.slice(2, 3)\n\n    const tagData = compressionScheme\n      .getCodecForTag(tagId)\n      .decode(slice, coreDataBlock, blocksByContentId, cursors)\n    tags[tagName] =\n      typeof tagData === 'number' ? tagData : parseTagData(tagType, tagData)\n  }\n\n  let readFeatures: ReadFeature[] | undefined\n  let lengthOnRef: number | undefined\n  let mappingQuality: number | undefined\n  let qualityScores: number[] | undefined | null\n  let readBases = undefined\n  if (!BamFlagsDecoder.isSegmentUnmapped(flags)) {\n    // reading read features\n    const readFeatureCount = decodeDataSeries('FN')\n    if (readFeatureCount) {\n      readFeatures = decodeReadFeatures(\n        alignmentStart,\n        readFeatureCount,\n        decodeDataSeries,\n        compressionScheme,\n        majorVersion,\n      )\n    }\n\n    // compute the read's true span on the reference sequence, and the end\n    // coordinate of the alignment on the reference\n    lengthOnRef = readLength\n    if (readFeatures) {\n      for (const { code, data } of readFeatures) {\n        if (code === 'D' || code === 'N') {\n          lengthOnRef += data\n        } else if (code === 'I' || code === 'S') {\n          lengthOnRef = lengthOnRef - data.length\n        } else if (code === 'i') {\n          lengthOnRef = lengthOnRef - 1\n        }\n      }\n    }\n    if (Number.isNaN(lengthOnRef)) {\n      console.warn(\n        `${\n          readName || `${sequenceId}:${alignmentStart}`\n        } record has invalid read features`,\n      )\n      lengthOnRef = readLength\n    }\n\n    // mapping quality\n    mappingQuality = decodeDataSeries('MQ')\n    if (CramFlagsDecoder.isPreservingQualityScores(cramFlags)) {\n      qualityScores = new Array(readLength)\n      for (let i = 0; i < qualityScores.length; i++) {\n        qualityScores[i] = decodeDataSeries('QS')\n      }\n    }\n  } else if (CramFlagsDecoder.isDecodeSequenceAsStar(cramFlags)) {\n    readBases = null\n    qualityScores = null\n  } else {\n    const bases = new Array(readLength) as number[]\n    for (let i = 0; i < bases.length; i += 1) {\n      bases[i] = decodeDataSeries('BA')\n    }\n    readBases = String.fromCharCode(...bases)\n\n    if (CramFlagsDecoder.isPreservingQualityScores(cramFlags)) {\n      qualityScores = new Array(readLength)\n      for (let i = 0; i < bases.length; i += 1) {\n        qualityScores[i] = decodeDataSeries('QS')\n      }\n    }\n  }\n\n  return {\n    readLength,\n    sequenceId,\n    cramFlags,\n    flags,\n    alignmentStart,\n    readGroupId,\n    readName,\n    mateToUse,\n    templateSize,\n    mateRecordNumber,\n    readFeatures,\n    lengthOnRef,\n    mappingQuality,\n    qualityScores,\n    readBases,\n    tags,\n  }\n}\n","import { CramArgumentError, CramMalformedError } from '../../errors'\nimport { parseItem, sequenceMD5, tinyMemoize } from '../util'\n\nimport Constants from '../constants'\nimport decodeRecord, { DataSeriesDecoder } from './decodeRecord'\nimport CramRecord from '../record'\nimport CramContainer from '../container'\nimport CramFile, { CramFileBlock } from '../file'\nimport {\n  getSectionParsers,\n  isMappedSliceHeader,\n  MappedSliceHeader,\n  UnmappedSliceHeader,\n} from '../sectionParsers'\nimport { CramBufferOverrunError } from '../codecs/getBits'\nimport { Cursors, DataTypeMapping } from '../codecs/_base'\nimport { DataSeriesEncodingKey } from '../codecs/dataSeriesTypes'\nimport { DataSeriesTypes } from '../container/compressionScheme'\n\nexport type SliceHeader = CramFileBlock & {\n  parsedContent: MappedSliceHeader | UnmappedSliceHeader\n}\n\n/**\n * @private\n * Try to estimate the template length from a bunch of interrelated multi-segment reads.\n * @param {Array[CramRecord]} allRecords\n * @param {number} currentRecordNumber\n * @param {CramRecord} thisRecord\n */\nfunction calculateMultiSegmentMatedTemplateLength(\n  allRecords: CramRecord[],\n  currentRecordNumber: number,\n  thisRecord: CramRecord,\n) {\n  function getAllMatedRecords(startRecord: CramRecord) {\n    const records = [startRecord]\n    if (\n      startRecord.mateRecordNumber !== undefined &&\n      startRecord.mateRecordNumber >= 0\n    ) {\n      const mateRecord = allRecords[startRecord.mateRecordNumber]\n      if (!mateRecord) {\n        throw new CramMalformedError(\n          'intra-slice mate record not found, this file seems malformed',\n        )\n      }\n      records.push(...getAllMatedRecords(mateRecord))\n    }\n    return records\n  }\n\n  const matedRecords = getAllMatedRecords(thisRecord)\n  const starts = matedRecords.map(r => r.alignmentStart)\n  const ends = matedRecords.map(r => r.alignmentStart + r.readLength - 1)\n  const estimatedTemplateLength = Math.max(...ends) - Math.min(...starts) + 1\n  if (estimatedTemplateLength >= 0) {\n    matedRecords.forEach(r => {\n      if (r.templateLength !== undefined) {\n        throw new CramMalformedError(\n          'mate pair group has some members that have template lengths already, this file seems malformed',\n        )\n      }\n      r.templateLength = estimatedTemplateLength\n    })\n  }\n}\n\n/**\n * @private\n * Attempt to calculate the `templateLength` for a pair of intra-slice paired reads.\n * Ported from htslib. Algorithm is imperfect.\n * @param {CramRecord} thisRecord\n * @param {CramRecord} mateRecord\n */\nfunction calculateIntraSliceMatePairTemplateLength(\n  thisRecord: CramRecord,\n  mateRecord: CramRecord,\n) {\n  // this just estimates the template length by using the simple (non-gapped) end coordinate of each\n  // read, because gapping in the alignment doesn't mean the template is longer or shorter\n  const start = Math.min(thisRecord.alignmentStart, mateRecord.alignmentStart)\n  const end = Math.max(\n    thisRecord.alignmentStart + thisRecord.readLength - 1,\n    mateRecord.alignmentStart + mateRecord.readLength - 1,\n  )\n  const lengthEstimate = end - start + 1\n  thisRecord.templateLength = lengthEstimate\n  mateRecord.templateLength = lengthEstimate\n}\n\n/**\n * @private establishes a mate-pair relationship between two records in the\n * same slice. CRAM compresses mate-pair relationships between records in the\n * same slice down into just one record having the index in the slice of its\n * mate\n */\nfunction associateIntraSliceMate(\n  allRecords: CramRecord[],\n  currentRecordNumber: number,\n  thisRecord: CramRecord,\n  mateRecord: CramRecord,\n) {\n  const complicatedMultiSegment = !!(\n    mateRecord.mate ||\n    (mateRecord.mateRecordNumber !== undefined &&\n      mateRecord.mateRecordNumber !== currentRecordNumber)\n  )\n\n  // Deal with lossy read names\n  if (!thisRecord.readName) {\n    thisRecord.readName = String(thisRecord.uniqueId)\n    mateRecord.readName = thisRecord.readName\n  }\n\n  thisRecord.mate = {\n    sequenceId: mateRecord.sequenceId,\n    alignmentStart: mateRecord.alignmentStart,\n    uniqueId: mateRecord.uniqueId,\n  }\n  if (mateRecord.readName) {\n    thisRecord.mate.readName = mateRecord.readName\n  }\n\n  // the mate record might have its own mate pointer, if this is some kind of\n  // multi-segment (more than paired) scheme, so only relate that one back to this one\n  // if it does not have any other relationship\n  if (!mateRecord.mate && mateRecord.mateRecordNumber === undefined) {\n    mateRecord.mate = {\n      sequenceId: thisRecord.sequenceId,\n      alignmentStart: thisRecord.alignmentStart,\n      uniqueId: thisRecord.uniqueId,\n    }\n    if (thisRecord.readName) {\n      mateRecord.mate.readName = thisRecord.readName\n    }\n  }\n\n  // make sure the proper flags and cramFlags are set on both records\n  // paired\n  thisRecord.flags |= Constants.BAM_FPAIRED\n\n  // set mate unmapped if needed\n  if (mateRecord.flags & Constants.BAM_FUNMAP) {\n    thisRecord.flags |= Constants.BAM_FMUNMAP\n    // thisRecord.templateLength = 0\n  }\n  if (thisRecord.flags & Constants.BAM_FUNMAP) {\n    // thisRecord.templateLength = 0\n    mateRecord.flags |= Constants.BAM_FMUNMAP\n  }\n\n  // set mate reversed if needed\n  if (mateRecord.flags & Constants.BAM_FREVERSE) {\n    thisRecord.flags |= Constants.BAM_FMREVERSE\n  }\n  if (thisRecord.flags & Constants.BAM_FREVERSE) {\n    mateRecord.flags |= Constants.BAM_FMREVERSE\n  }\n\n  if (thisRecord.templateLength === undefined) {\n    if (complicatedMultiSegment) {\n      calculateMultiSegmentMatedTemplateLength(\n        allRecords,\n        currentRecordNumber,\n        thisRecord,\n      )\n    } else {\n      calculateIntraSliceMatePairTemplateLength(thisRecord, mateRecord)\n    }\n  }\n\n  // delete this last because it's used by the\n  // complicated template length estimation\n  thisRecord.mateRecordNumber = undefined\n}\n\nexport default class CramSlice {\n  private file: CramFile\n\n  constructor(\n    public container: CramContainer,\n    public containerPosition: number,\n    public sliceSize: number,\n  ) {\n    this.file = container.file\n  }\n\n  // memoize\n  async getHeader() {\n    // fetch and parse the slice header\n    const { majorVersion } = await this.file.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    const containerHeader = await this.container.getHeader()\n    if (!containerHeader) {\n      throw new Error('no container header detected')\n    }\n\n    const header = await this.file.readBlock(\n      containerHeader._endPosition + this.containerPosition,\n    )\n    if (header === undefined) {\n      throw new Error('block header undefined')\n    }\n    if (header.contentType === 'MAPPED_SLICE_HEADER') {\n      const content = parseItem(\n        header.content,\n        sectionParsers.cramMappedSliceHeader.parser,\n        0,\n        containerHeader._endPosition,\n      )\n      return { ...header, parsedContent: content }\n    } else if (header.contentType === 'UNMAPPED_SLICE_HEADER') {\n      const content = parseItem(\n        header.content,\n        sectionParsers.cramUnmappedSliceHeader.parser,\n        0,\n        containerHeader._endPosition,\n      )\n      return { ...header, parsedContent: content }\n    } else {\n      throw new CramMalformedError(\n        `error reading slice header block, invalid content type ${header.contentType}`,\n      )\n    }\n  }\n\n  // memoize\n  async getBlocks() {\n    const header = await this.getHeader()\n    // read all the blocks into memory and store them\n    let blockPosition = header._endPosition\n    const blocks: CramFileBlock[] = new Array(header.parsedContent.numBlocks)\n    for (let i = 0; i < blocks.length; i++) {\n      const block = await this.file.readBlock(blockPosition)\n      if (block === undefined) {\n        throw new Error('block undefined')\n      }\n      blocks[i] = block\n      blockPosition = blocks[i]!._endPosition\n    }\n\n    return blocks\n  }\n\n  // no memoize\n  async getCoreDataBlock() {\n    const blocks = await this.getBlocks()\n    return blocks[0]!\n  }\n\n  // memoize\n  async _getBlocksContentIdIndex(): Promise<Record<number, CramFileBlock>> {\n    const blocks = await this.getBlocks()\n    const blocksByContentId: Record<number, CramFileBlock> = {}\n    blocks.forEach(block => {\n      if (block.contentType === 'EXTERNAL_DATA') {\n        blocksByContentId[block.contentId] = block\n      }\n    })\n    return blocksByContentId\n  }\n\n  async getBlockByContentId(id: number) {\n    const blocksByContentId = await this._getBlocksContentIdIndex()\n    return blocksByContentId[id]\n  }\n\n  async getReferenceRegion() {\n    // read the slice header\n    const sliceHeader = (await this.getHeader()).parsedContent\n    if (!isMappedSliceHeader(sliceHeader)) {\n      throw new Error('slice header not mapped')\n    }\n\n    if (sliceHeader.refSeqId < 0) {\n      return undefined\n    }\n\n    const compressionScheme = await this.container.getCompressionScheme()\n    if (compressionScheme === undefined) {\n      throw new Error('compression scheme undefined')\n    }\n\n    if (sliceHeader.refBaseBlockId >= 0) {\n      const refBlock = await this.getBlockByContentId(\n        sliceHeader.refBaseBlockId,\n      )\n      if (!refBlock) {\n        throw new CramMalformedError(\n          'embedded reference specified, but reference block does not exist',\n        )\n      }\n\n      // TODO: we do not read anything named 'span'\n      // if (sliceHeader.span > refBlock.uncompressedSize) {\n      //   throw new CramMalformedError('Embedded reference is too small')\n      // }\n\n      // TODO verify\n      return {\n        seq: (refBlock as any).data.toString('utf8'),\n        start: sliceHeader.refSeqStart,\n        end: sliceHeader.refSeqStart + sliceHeader.refSeqSpan - 1,\n        span: sliceHeader.refSeqSpan,\n      }\n    }\n    if (\n      compressionScheme.referenceRequired ||\n      this.file.fetchReferenceSequenceCallback\n    ) {\n      if (!this.file.fetchReferenceSequenceCallback) {\n        throw new Error(\n          'reference sequence not embedded, and seqFetch callback not provided, cannot fetch reference sequence',\n        )\n      }\n\n      const seq = await this.file.fetchReferenceSequenceCallback(\n        sliceHeader.refSeqId,\n        sliceHeader.refSeqStart,\n        sliceHeader.refSeqStart + sliceHeader.refSeqSpan - 1,\n      )\n\n      if (seq.length !== sliceHeader.refSeqSpan) {\n        throw new CramArgumentError(\n          'seqFetch callback returned a reference sequence of the wrong length',\n        )\n      }\n\n      return {\n        seq,\n        start: sliceHeader.refSeqStart,\n        end: sliceHeader.refSeqStart + sliceHeader.refSeqSpan - 1,\n        span: sliceHeader.refSeqSpan,\n      }\n    }\n\n    return undefined\n  }\n\n  getAllRecords() {\n    return this.getRecords(() => true)\n  }\n\n  async _fetchRecords() {\n    const { majorVersion } = await this.file.getDefinition()\n\n    const compressionScheme = await this.container.getCompressionScheme()\n    if (compressionScheme === undefined) {\n      throw new Error('compression scheme undefined')\n    }\n\n    const sliceHeader = await this.getHeader()\n    const blocksByContentId = await this._getBlocksContentIdIndex()\n\n    // check MD5 of reference if available\n    if (\n      majorVersion > 1 &&\n      this.file.options.checkSequenceMD5 &&\n      isMappedSliceHeader(sliceHeader.parsedContent) &&\n      sliceHeader.parsedContent.refSeqId >= 0 &&\n      sliceHeader.parsedContent.md5?.join('') !== '0000000000000000'\n    ) {\n      const refRegion = await this.getReferenceRegion()\n      if (refRegion) {\n        const { seq, start, end } = refRegion\n        const seqMd5 = sequenceMD5(seq)\n        const storedMd5 = sliceHeader.parsedContent.md5\n          ?.map(byte => (byte < 16 ? '0' : '') + byte.toString(16))\n          .join('')\n        if (seqMd5 !== storedMd5) {\n          throw new CramMalformedError(\n            `MD5 checksum reference mismatch for ref ${sliceHeader.parsedContent.refSeqId} pos ${start}..${end}. recorded MD5: ${storedMd5}, calculated MD5: ${seqMd5}`,\n          )\n        }\n      }\n    }\n\n    // tracks the read position within the block. codec.decode() methods\n    // advance the byte and bit positions in the cursor as they decode\n    // data note that we are only decoding a single block here, the core\n    // data block\n    const coreDataBlock = await this.getCoreDataBlock()\n    const cursors: Cursors = {\n      lastAlignmentStart: isMappedSliceHeader(sliceHeader.parsedContent)\n        ? sliceHeader.parsedContent.refSeqStart\n        : 0,\n      coreBlock: { bitPosition: 7, bytePosition: 0 },\n      externalBlocks: {\n        map: new Map(),\n        getCursor(contentId: number) {\n          let r = this.map.get(contentId)\n          if (r === undefined) {\n            r = { bitPosition: 7, bytePosition: 0 }\n            this.map.set(contentId, r)\n          }\n          return r\n        },\n      },\n    }\n\n    const decodeDataSeries: DataSeriesDecoder = <\n      T extends DataSeriesEncodingKey,\n    >(\n      dataSeriesName: T,\n    ): DataTypeMapping[DataSeriesTypes[T]] => {\n      const codec = compressionScheme.getCodecForDataSeries(dataSeriesName)\n      if (!codec) {\n        throw new CramMalformedError(\n          `no codec defined for ${dataSeriesName} data series`,\n        )\n      }\n      // console.log(dataSeriesName, Object.getPrototypeOf(codec))\n      const decoded = codec.decode(\n        this,\n        coreDataBlock,\n        blocksByContentId,\n        cursors,\n      )\n      return decoded\n    }\n    const records: CramRecord[] = new Array(\n      sliceHeader.parsedContent.numRecords,\n    )\n    for (let i = 0; i < records.length; i += 1) {\n      try {\n        const init = decodeRecord(\n          this,\n          decodeDataSeries,\n          compressionScheme,\n          sliceHeader,\n          coreDataBlock,\n          blocksByContentId,\n          cursors,\n          majorVersion,\n          i,\n        )\n        records[i] = new CramRecord({\n          ...init,\n          uniqueId:\n            sliceHeader.contentPosition +\n            sliceHeader.parsedContent.recordCounter +\n            i +\n            1,\n        })\n      } catch (e) {\n        if (e instanceof CramBufferOverrunError) {\n          console.warn(\n            'read attempted beyond end of buffer, file seems truncated.',\n          )\n          break\n        } else {\n          throw e\n        }\n      }\n    }\n\n    // interpret `recordsToNextFragment` attributes to make standard `mate`\n    // objects Resolve mate pair cross-references between records in this slice\n    for (let i = 0; i < records.length; i += 1) {\n      const { mateRecordNumber } = records[i]!\n      if (mateRecordNumber !== undefined && mateRecordNumber >= 0) {\n        associateIntraSliceMate(\n          records,\n          i,\n          records[i]!,\n          records[mateRecordNumber]!,\n        )\n      }\n    }\n\n    return records\n  }\n\n  async getRecords(filterFunction: (r: CramRecord) => boolean) {\n    // fetch the features if necessary, using the file-level feature cache\n    const cacheKey = this.container.filePosition + this.containerPosition\n    let recordsPromise = this.file.featureCache.get(cacheKey.toString())\n    if (!recordsPromise) {\n      recordsPromise = this._fetchRecords()\n      this.file.featureCache.set(cacheKey.toString(), recordsPromise)\n    }\n\n    const unfiltered = await recordsPromise\n    const records = unfiltered.filter(filterFunction)\n\n    // if we can fetch reference sequence, add the reference sequence to the records\n    if (records.length && this.file.fetchReferenceSequenceCallback) {\n      const sliceHeader = await this.getHeader()\n      if (\n        isMappedSliceHeader(sliceHeader.parsedContent) &&\n        (sliceHeader.parsedContent.refSeqId >= 0 || // single-ref slice\n          sliceHeader.parsedContent.refSeqId === -2) // multi-ref slice\n      ) {\n        const singleRefId =\n          sliceHeader.parsedContent.refSeqId >= 0\n            ? sliceHeader.parsedContent.refSeqId\n            : undefined\n        const compressionScheme = await this.container.getCompressionScheme()\n        if (compressionScheme === undefined) {\n          throw new Error('compression scheme undefined')\n        }\n        const refRegions: Record<\n          string,\n          { id: number; start: number; end: number; seq: string | null }\n        > = {}\n\n        // iterate over the records to find the spans of the reference\n        // sequences we need to fetch\n        for (const record of records) {\n          const seqId =\n            singleRefId !== undefined ? singleRefId : record.sequenceId\n          let refRegion = refRegions[seqId]\n          if (!refRegion) {\n            refRegion = {\n              id: seqId,\n              start: record.alignmentStart,\n              end: Number.NEGATIVE_INFINITY,\n              seq: null,\n            }\n            refRegions[seqId] = refRegion\n          }\n\n          const end =\n            record.alignmentStart +\n            (record.lengthOnRef || record.readLength) -\n            1\n          if (end > refRegion.end) {\n            refRegion.end = end\n          }\n          if (record.alignmentStart < refRegion.start) {\n            refRegion.start = record.alignmentStart\n          }\n        }\n\n        // fetch the `seq` for all of the ref regions\n        await Promise.all(\n          Object.values(refRegions).map(async refRegion => {\n            if (\n              refRegion.id !== -1 &&\n              refRegion.start <= refRegion.end &&\n              this.file.fetchReferenceSequenceCallback\n            ) {\n              refRegion.seq = await this.file.fetchReferenceSequenceCallback(\n                refRegion.id,\n                refRegion.start,\n                refRegion.end,\n              )\n            }\n          }),\n        )\n\n        // now decorate all the records with them\n        for (const record of records) {\n          const seqId =\n            singleRefId !== undefined ? singleRefId : record.sequenceId\n          const refRegion = refRegions[seqId]\n          if (refRegion?.seq) {\n            const seq = refRegion.seq\n            record.addReferenceSequence(\n              { ...refRegion, seq },\n              compressionScheme,\n            )\n          }\n        }\n      }\n    }\n\n    return records\n  }\n}\n\n// memoize several methods in the class for performance\n'getHeader getBlocks _getBlocksContentIdIndex'.split(' ').forEach(method => {\n  tinyMemoize(CramSlice, method)\n})\n","import CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { DataType } from './dataSeriesTypes'\n\nexport interface DataTypeMapping {\n  byte: number\n  int: number\n  long: number\n  byteArray: Uint8Array\n}\n\nexport interface Cursor {\n  bitPosition: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7\n  bytePosition: number\n}\n\nexport interface Cursors {\n  lastAlignmentStart: number\n  coreBlock: Cursor\n  externalBlocks: {\n    map: Map<any, any>\n    getCursor: (contentId: number) => Cursor\n  }\n}\n\n// codec base class\nexport default abstract class CramCodec<\n  TResult extends DataType = DataType,\n  TParameters = unknown,\n> {\n  public parameters: TParameters\n  public dataType: DataType\n\n  constructor(parameters: TParameters, dataType: TResult) {\n    this.parameters = parameters\n    this.dataType = dataType\n  }\n\n  abstract decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ): DataTypeMapping[TResult]\n}\n","import CramCodec, { Cursors } from './_base'\nimport { ByteArrayLengthEncoding, CramEncoding } from '../encoding'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { DataType } from './dataSeriesTypes'\nimport { tinyMemoize } from '../util'\n\ntype CramCodecFactory = <TData extends DataType = DataType>(\n  encodingData: CramEncoding,\n  dataType: TData | 'ignore',\n) => CramCodec<TData>\n\nexport default class ByteArrayStopCodec extends CramCodec<\n  'byteArray',\n  ByteArrayLengthEncoding['parameters']\n> {\n  private instantiateCodec: CramCodecFactory\n\n  constructor(\n    parameters: ByteArrayLengthEncoding['parameters'],\n    dataType: 'byteArray',\n    instantiateCodec: CramCodecFactory,\n  ) {\n    super(parameters, dataType)\n    this.instantiateCodec = instantiateCodec\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    const lengthCodec = this._getLengthCodec()\n    const arrayLength = lengthCodec.decode(\n      slice,\n      coreDataBlock,\n      blocksByContentId,\n      cursors,\n    )\n\n    const dataCodec = this._getDataCodec()\n    const data = new Uint8Array(arrayLength)\n    for (let i = 0; i < arrayLength; i += 1) {\n      data[i] = dataCodec.decode(\n        slice,\n        coreDataBlock,\n        blocksByContentId,\n        cursors,\n      )\n    }\n\n    return data\n  }\n\n  // memoize\n  _getLengthCodec() {\n    const encodingParams = this.parameters.lengthsEncoding\n    return this.instantiateCodec(encodingParams, 'int')\n  }\n\n  // memoize\n  _getDataCodec() {\n    const encodingParams = this.parameters.valuesEncoding\n    return this.instantiateCodec(encodingParams, 'byte')\n  }\n}\n\n'_getLengthCodec _getDataCodec'.split(' ').forEach(method => {\n  tinyMemoize(ByteArrayStopCodec, method)\n})\n","import { CramUnimplementedError } from '../../errors'\n\nimport HuffmanIntCodec from './huffman'\nimport ExternalCodec from './external'\nimport ByteArrayStopCodec from './byteArrayStop'\nimport ByteArrayLengthCodec from './byteArrayLength'\nimport BetaCodec from './beta'\nimport GammaCodec from './gamma'\nimport SubexpCodec from './subexp'\nimport CramCodec from './_base'\nimport { CramEncoding } from '../encoding'\nimport { DataType } from './dataSeriesTypes'\n\nconst codecClasses = {\n  1: ExternalCodec,\n  // 2: GolombCodec,\n  3: HuffmanIntCodec,\n  4: ByteArrayLengthCodec,\n  5: ByteArrayStopCodec,\n  6: BetaCodec,\n  7: SubexpCodec,\n  // 8: GolombRiceCodec,\n  9: GammaCodec,\n}\n\nfunction getCodecClassWithId(id: number) {\n  return (codecClasses as any)[id]\n}\n\nexport function instantiateCodec<TResult extends DataType = DataType>(\n  encodingData: CramEncoding,\n  dataType: DataType | 'ignore',\n): CramCodec<TResult> {\n  const CodecClass = getCodecClassWithId(\n    dataType === 'ignore' ? 0 : encodingData.codecId,\n  )\n  if (!CodecClass) {\n    throw new CramUnimplementedError(\n      `no codec implemented for codec ID ${encodingData.codecId}`,\n    )\n  }\n\n  return new CodecClass(encodingData.parameters, dataType, instantiateCodec)\n}\n","import { CramMalformedError, CramUnimplementedError } from '../../errors'\nimport CramCodec, { Cursor, Cursors } from './_base'\nimport { parseItf8 } from '../util'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { CramBufferOverrunError } from './getBits'\nimport { ExternalCramEncoding } from '../encoding'\n\nexport default class ExternalCodec extends CramCodec<\n  'int' | 'byte',\n  ExternalCramEncoding['parameters']\n> {\n  private readonly _decodeData: (\n    contentBlock: CramFileBlock,\n    cursor: Cursor,\n  ) => number\n\n  constructor(\n    parameters: ExternalCramEncoding['parameters'],\n    dataType: 'int' | 'byte',\n  ) {\n    super(parameters, dataType)\n    if (this.dataType === 'int') {\n      this._decodeData = this._decodeInt\n    } else if (this.dataType === 'byte') {\n      this._decodeData = this._decodeByte\n    } else {\n      throw new CramUnimplementedError(\n        `${this.dataType} decoding not yet implemented by EXTERNAL codec`,\n      )\n    }\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    const { blockContentId } = this.parameters\n    const contentBlock = blocksByContentId[blockContentId]\n    if (!contentBlock) {\n      throw new CramMalformedError(\n        `no block found with content ID ${blockContentId}}`,\n      )\n    }\n    const cursor = cursors.externalBlocks.getCursor(blockContentId)\n    return this._decodeData(contentBlock, cursor)\n  }\n\n  _decodeInt(contentBlock: CramFileBlock, cursor: Cursor) {\n    const [result, bytesRead] = parseItf8(\n      contentBlock.content,\n      cursor.bytePosition,\n    )\n    cursor.bytePosition = cursor.bytePosition + bytesRead\n    return result\n  }\n\n  _decodeByte(contentBlock: CramFileBlock, cursor: Cursor) {\n    if (cursor.bytePosition >= contentBlock.content.length) {\n      throw new CramBufferOverrunError(\n        'attempted to read beyond end of block. this file seems truncated.',\n      )\n    }\n    return contentBlock.content[cursor.bytePosition++]!\n  }\n}\n","import { CramMalformedError } from '../../errors'\nimport CramCodec, { Cursor, Cursors } from './_base'\nimport { getBits } from './getBits'\nimport { HuffmanEncoding } from '../encoding'\n\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\n\nfunction numberOfSetBits(ii: number) {\n  let i = (ii - (ii >> 1)) & 0x55555555\n  i = (i & 0x33333333) + ((i >> 2) & 0x33333333)\n  return (((i + (i >> 4)) & 0x0f0f0f0f) * 0x01010101) >> 24\n}\n\ninterface Code {\n  bitLength: number\n  value: number\n  bitCode: number\n}\n\nexport default class HuffmanIntCodec extends CramCodec<\n  'byte' | 'int',\n  HuffmanEncoding['parameters']\n> {\n  private codes: Record<number, Code> = {}\n  private codeBook: Record<number, number[]> = {}\n  private sortedCodes: Code[] = []\n  private sortedValuesByBitCode: number[] = []\n  private sortedBitCodes: number[] = []\n  private sortedBitLengthsByBitCode: number[] = []\n  private bitCodeToValue: number[] = []\n\n  constructor(\n    parameters: HuffmanEncoding['parameters'],\n    dataType: 'byte' | 'int',\n  ) {\n    super(parameters, dataType)\n    if (!['byte', 'int'].includes(this.dataType)) {\n      throw new TypeError(\n        `${this.dataType} decoding not yet implemented by HUFFMAN_INT codec`,\n      )\n    }\n\n    this.buildCodeBook()\n    this.buildCodes()\n    this.buildCaches()\n\n    // if this is a degenerate zero-length huffman code, special-case the\n    // decoding\n    if (this.sortedCodes[0]!.bitLength === 0) {\n      this._decode = this._decodeZeroLengthCode\n    }\n  }\n\n  buildCodeBook() {\n    // parse the parameters together into a `codes` data structure\n    let codes = new Array<{ symbol: number; bitLength: number }>(\n      this.parameters.numCodes,\n    )\n    for (let i = 0; i < this.parameters.numCodes; i++) {\n      codes[i] = {\n        symbol: this.parameters.symbols[i]!,\n        bitLength: this.parameters.bitLengths[i]!,\n      }\n    }\n    // sort the codes by bit length and symbol value\n    codes = codes.sort(\n      (a, b) => a.bitLength - b.bitLength || a.symbol - b.symbol,\n    )\n\n    this.codeBook = {}\n    codes.forEach(code => {\n      if (!this.codeBook[code.bitLength]) {\n        this.codeBook[code.bitLength] = []\n      }\n      this.codeBook[code.bitLength]!.push(code.symbol)\n    })\n  }\n\n  buildCodes() {\n    this.codes = {} /*  new TreeMap<Integer, HuffmanBitCode>(); */\n    let codeLength = 0\n    let codeValue = -1\n    Object.entries(this.codeBook).forEach(([bitLength, symbols]) => {\n      const bitLengthInt = Number.parseInt(bitLength, 10)\n      symbols.forEach(symbol => {\n        const code = {\n          bitLength: bitLengthInt,\n          value: symbol,\n          bitCode: 0,\n        }\n        codeValue = codeValue + 1\n        const delta = bitLengthInt - codeLength // new length?\n        codeValue = codeValue << delta // pad with 0's\n        code.bitCode = codeValue // calculated: huffman code\n        codeLength = codeLength + delta // adjust current code length\n\n        if (numberOfSetBits(codeValue) > bitLengthInt) {\n          throw new CramMalformedError('Symbol out of range')\n        }\n\n        this.codes[symbol] = code\n      })\n    })\n  }\n\n  buildCaches() {\n    this.sortedCodes = Object.values(this.codes).sort(\n      (a, b) => a.bitLength - b.bitLength || a.bitCode - b.bitCode,\n    )\n\n    this.sortedValuesByBitCode = this.sortedCodes.map(c => c.value)\n    this.sortedBitCodes = this.sortedCodes.map(c => c.bitCode)\n    this.sortedBitLengthsByBitCode = this.sortedCodes.map(c => c.bitLength)\n    const maxBitCode = Math.max(...this.sortedBitCodes)\n\n    this.bitCodeToValue = new Array(maxBitCode + 1).fill(-1)\n    for (let i = 0; i < this.sortedBitCodes.length; i += 1) {\n      this.bitCodeToValue[this.sortedCodes[i]!.bitCode] = i\n    }\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    return this._decode(slice, coreDataBlock, cursors.coreBlock)\n  }\n\n  // _decodeNull() {\n  //   return -1\n  // }\n\n  // the special case for zero-length codes\n  _decodeZeroLengthCode() {\n    return this.sortedCodes[0]!.value\n  }\n\n  _decode(slice: CramSlice, coreDataBlock: CramFileBlock, coreCursor: Cursor) {\n    const input = coreDataBlock.content\n\n    let prevLen = 0\n    let bits = 0\n    for (let i = 0; i < this.sortedCodes.length; i += 1) {\n      const length = this.sortedCodes[i]!.bitLength\n      bits <<= length - prevLen\n      bits |= getBits(input, coreCursor, length - prevLen)\n      prevLen = length\n      {\n        const index = this.bitCodeToValue[bits]!\n        if (index > -1 && this.sortedBitLengthsByBitCode[index] === length) {\n          return this.sortedValuesByBitCode[index]!\n        }\n\n        for (\n          let j = i;\n          this.sortedCodes[j + 1]!.bitLength === length &&\n          j < this.sortedCodes.length;\n          j += 1\n        ) {\n          i += 1\n        }\n      }\n    }\n    throw new CramMalformedError('Huffman symbol not found.')\n  }\n}\n","import { CramMalformedError } from '../../errors'\n\nimport CramCodec, { Cursor, Cursors } from './_base'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { ByteArrayStopCramEncoding } from '../encoding'\nimport { CramBufferOverrunError } from './getBits'\n\nexport default class ByteArrayStopCodec extends CramCodec<\n  'byteArray',\n  ByteArrayStopCramEncoding['parameters']\n> {\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    const { blockContentId } = this.parameters\n    const contentBlock = blocksByContentId[blockContentId]\n    if (!contentBlock) {\n      throw new CramMalformedError(\n        `no block found with content ID ${blockContentId}`,\n      )\n    }\n    const cursor = cursors.externalBlocks.getCursor(blockContentId)\n    return this._decodeByteArray(contentBlock, cursor)\n  }\n\n  _decodeByteArray(contentBlock: CramFileBlock, cursor: Cursor) {\n    const dataBuffer = contentBlock.content\n    const { stopByte } = this.parameters\n    // scan to the next stop byte\n    const startPosition = cursor.bytePosition\n    let stopPosition = cursor.bytePosition\n    while (\n      dataBuffer[stopPosition] !== stopByte &&\n      stopPosition < dataBuffer.length\n    ) {\n      if (stopPosition === dataBuffer.length) {\n        throw new CramBufferOverrunError(\n          'byteArrayStop reading beyond length of data buffer?',\n        )\n      }\n      stopPosition = stopPosition + 1\n    }\n    cursor.bytePosition = stopPosition + 1\n    return dataBuffer.subarray(startPosition, stopPosition)\n  }\n}\n","import { CramUnimplementedError } from '../../errors'\nimport CramCodec, { Cursors } from './_base'\nimport { getBits } from './getBits'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { BetaEncoding } from '../encoding'\n\nexport default class BetaCodec extends CramCodec<\n  'int',\n  BetaEncoding['parameters']\n> {\n  constructor(parameters: BetaEncoding['parameters'], dataType: 'int') {\n    super(parameters, dataType)\n    if (this.dataType !== 'int') {\n      throw new CramUnimplementedError(\n        `${this.dataType} decoding not yet implemented by BETA codec`,\n      )\n    }\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    const fromBits = getBits(\n      coreDataBlock.content,\n      cursors.coreBlock,\n      this.parameters.length,\n    )\n    return fromBits - this.parameters.offset\n  }\n}\n","import { CramUnimplementedError } from '../../errors'\nimport CramCodec, { Cursors } from './_base'\nimport { getBits } from './getBits'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\nimport { SubexpEncoding } from '../encoding'\n\nexport default class SubexpCodec extends CramCodec<\n  'int',\n  SubexpEncoding['parameters']\n> {\n  constructor(parameters: SubexpEncoding['parameters'], dataType: 'int') {\n    super(parameters, dataType)\n    if (this.dataType !== 'int') {\n      throw new CramUnimplementedError(\n        `${this.dataType} decoding not yet implemented by SUBEXP codec`,\n      )\n    }\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    let numLeadingOnes = 0\n    while (getBits(coreDataBlock.content, cursors.coreBlock, 1)) {\n      numLeadingOnes = numLeadingOnes + 1\n    }\n\n    let b: number\n    let n: number\n    if (numLeadingOnes === 0) {\n      b = this.parameters.K\n      n = getBits(coreDataBlock.content, cursors.coreBlock, b)\n    } else {\n      b = numLeadingOnes + this.parameters.K - 1\n      const bits = getBits(coreDataBlock.content, cursors.coreBlock, b)\n      n = (1 << b) | bits\n    }\n\n    return n - this.parameters.offset\n  }\n}\n","import { CramUnimplementedError } from '../../errors'\nimport CramCodec, { Cursors } from './_base'\nimport { getBits } from './getBits'\nimport { GammaEncoding } from '../encoding'\nimport CramSlice from '../slice'\nimport { CramFileBlock } from '../file'\n\nexport default class GammaCodec extends CramCodec<\n  'int',\n  GammaEncoding['parameters']\n> {\n  constructor(parameters: GammaEncoding['parameters'], dataType: 'int') {\n    super(parameters, dataType)\n    if (this.dataType !== 'int') {\n      throw new CramUnimplementedError(\n        `${this.dataType} decoding not yet implemented by GAMMA codec`,\n      )\n    }\n  }\n\n  decode(\n    slice: CramSlice,\n    coreDataBlock: CramFileBlock,\n    blocksByContentId: Record<number, CramFileBlock>,\n    cursors: Cursors,\n  ) {\n    let length = 1\n\n    while (getBits(coreDataBlock.content, cursors.coreBlock, 1) === 0) {\n      length = length + 1\n    }\n\n    const readBits = getBits(\n      coreDataBlock.content,\n      cursors.coreBlock,\n      length - 1,\n    )\n\n    const value = readBits | (1 << (length - 1))\n    return value - this.parameters.offset\n  }\n}\n","import { instantiateCodec } from '../codecs'\nimport CramCodec from '../codecs/_base'\nimport { CramCompressionHeader } from '../sectionParsers'\nimport { CramEncoding } from '../encoding'\nimport { CramMalformedError } from '../../errors'\nimport {\n  DataSeriesEncodingKey,\n  DataSeriesEncodingMap,\n} from '../codecs/dataSeriesTypes'\n\n// the hardcoded data type to be decoded for each core\n// data field\nconst dataSeriesTypes = {\n  BF: 'int',\n  CF: 'int',\n  RI: 'int',\n  RL: 'int',\n  AP: 'int',\n  RG: 'int',\n  MF: 'int',\n  NS: 'int',\n  NP: 'int',\n  TS: 'int',\n  NF: 'int',\n  TC: 'byte',\n  TN: 'int',\n  FN: 'int',\n  FC: 'byte',\n  FP: 'int',\n  BS: 'byte',\n  IN: 'byteArray',\n  SC: 'byteArray',\n  DL: 'int',\n  BA: 'byte',\n  BB: 'byteArray',\n  RS: 'int',\n  PD: 'int',\n  HC: 'int',\n  MQ: 'int',\n  RN: 'byteArray',\n  QS: 'byte',\n  QQ: 'byteArray',\n  TL: 'int',\n  // TM: 'ignore',\n  // TV: 'ignore',\n} as const\n\nexport type DataSeriesTypes = typeof dataSeriesTypes\n\nfunction parseSubstitutionMatrix(byteArray: number[]) {\n  const matrix: string[][] = new Array(5)\n  for (let i = 0; i < 5; i += 1) {\n    matrix[i] = new Array(4)\n  }\n\n  matrix[0]![(byteArray[0]! >> 6) & 3] = 'C'\n  matrix[0]![(byteArray[0]! >> 4) & 3] = 'G'\n  matrix[0]![(byteArray[0]! >> 2) & 3] = 'T'\n  matrix[0]![(byteArray[0]! >> 0) & 3] = 'N'\n\n  matrix[1]![(byteArray[1]! >> 6) & 3] = 'A'\n  matrix[1]![(byteArray[1]! >> 4) & 3] = 'G'\n  matrix[1]![(byteArray[1]! >> 2) & 3] = 'T'\n  matrix[1]![(byteArray[1]! >> 0) & 3] = 'N'\n\n  matrix[2]![(byteArray[2]! >> 6) & 3] = 'A'\n  matrix[2]![(byteArray[2]! >> 4) & 3] = 'C'\n  matrix[2]![(byteArray[2]! >> 2) & 3] = 'T'\n  matrix[2]![(byteArray[2]! >> 0) & 3] = 'N'\n\n  matrix[3]![(byteArray[3]! >> 6) & 3] = 'A'\n  matrix[3]![(byteArray[3]! >> 4) & 3] = 'C'\n  matrix[3]![(byteArray[3]! >> 2) & 3] = 'G'\n  matrix[3]![(byteArray[3]! >> 0) & 3] = 'N'\n\n  matrix[4]![(byteArray[4]! >> 6) & 3] = 'A'\n  matrix[4]![(byteArray[4]! >> 4) & 3] = 'C'\n  matrix[4]![(byteArray[4]! >> 2) & 3] = 'G'\n  matrix[4]![(byteArray[4]! >> 0) & 3] = 'T'\n\n  return matrix\n}\n\ntype DataSeriesCache = {\n  [K in DataSeriesEncodingKey]?: CramCodec<DataSeriesTypes[K]>\n}\n\nexport default class CramContainerCompressionScheme {\n  public readNamesIncluded: boolean\n  public APdelta: boolean\n  public referenceRequired: boolean\n  public tagIdsDictionary: Record<number, string[]>\n  public substitutionMatrix: string[][]\n  public dataSeriesCodecCache: DataSeriesCache = {}\n  public tagCodecCache: Record<string, CramCodec> = {}\n  public tagEncoding: Record<string, CramEncoding> = {}\n  public dataSeriesEncoding: DataSeriesEncodingMap\n\n  constructor(content: CramCompressionHeader) {\n    // interpret some of the preservation map tags for convenient use\n    this.readNamesIncluded = content.preservation.RN\n    this.APdelta = content.preservation.AP\n    this.referenceRequired = !!content.preservation.RR\n    this.tagIdsDictionary = content.preservation.TD\n    this.substitutionMatrix = parseSubstitutionMatrix(content.preservation.SM)\n    this.dataSeriesEncoding = content.dataSeriesEncoding\n    this.tagEncoding = content.tagEncoding\n  }\n\n  /**\n   * @param {string} tagName three-character tag name\n   * @private\n   */\n  getCodecForTag(tagName: string): CramCodec {\n    const test = this.tagCodecCache[tagName]\n    if (!test) {\n      const encodingData = this.tagEncoding[tagName]\n      if (!encodingData) {\n        throw new Error('Error, no tag encoding')\n      }\n      const ret = instantiateCodec(\n        encodingData,\n        'byteArray', // all tags are byte array data\n      )\n      this.tagCodecCache[tagName] = ret\n      return ret\n    } else {\n      return test\n    }\n  }\n\n  /**\n   *\n   * @param {number} tagListId ID of the tag list to fetch from the tag dictionary\n   * @private\n   */\n  getTagNames(tagListId: number) {\n    return this.tagIdsDictionary[tagListId]\n  }\n\n  getCodecForDataSeries<TDataSeries extends DataSeriesEncodingKey>(\n    dataSeriesName: TDataSeries,\n  ): CramCodec<DataSeriesTypes[TDataSeries]> | undefined {\n    let r: CramCodec<DataSeriesTypes[TDataSeries]> | undefined =\n      this.dataSeriesCodecCache[dataSeriesName]\n    if (r === undefined) {\n      const encodingData = this.dataSeriesEncoding[dataSeriesName]\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (encodingData) {\n        const dataType = dataSeriesTypes[dataSeriesName]\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        if (!dataType) {\n          throw new CramMalformedError(\n            `data series name ${dataSeriesName} not defined in file compression header`,\n          )\n        }\n        r = instantiateCodec(encodingData, dataType)\n        // didn't find a way to make TS understand this\n        this.dataSeriesCodecCache[dataSeriesName] = r as CramCodec<any>\n      }\n    }\n    return r\n  }\n\n  toJSON() {\n    const data: any = {}\n    Object.keys(this).forEach(k => {\n      if (k.endsWith('Cache')) {\n        return\n      }\n      data[k] = (this as any)[k]\n    })\n    return data\n  }\n}\n","import { Buffer } from 'buffer'\nimport { CramMalformedError } from '../../errors'\n// locals\nimport { itf8Size, parseItem, tinyMemoize } from '../util'\nimport CramSlice from '../slice'\nimport CramContainerCompressionScheme from './compressionScheme'\nimport CramFile from '../file'\nimport { getSectionParsers } from '../sectionParsers'\n\nexport default class CramContainer {\n  constructor(\n    public file: CramFile,\n    public filePosition: number,\n  ) {}\n\n  getHeader() {\n    return this._readContainerHeader(this.filePosition)\n  }\n\n  async getCompressionHeaderBlock() {\n    const containerHeader = await this.getHeader()\n\n    // if there are no records in the container, there will be no compression\n    // header\n    if (!containerHeader?.numRecords) {\n      return null\n    }\n    const { majorVersion } = await this.file.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n\n    const block = await this.getFirstBlock()\n    if (block === undefined) {\n      return undefined\n    }\n    if (block.contentType !== 'COMPRESSION_HEADER') {\n      throw new CramMalformedError(\n        `invalid content type ${block.contentType} in compression header block`,\n      )\n    }\n\n    const content = parseItem(\n      block.content,\n      sectionParsers.cramCompressionHeader.parser,\n      0,\n      block.contentPosition,\n    )\n    return {\n      ...block,\n      parsedContent: content,\n    }\n  }\n\n  async getFirstBlock() {\n    const containerHeader = await this.getHeader()\n    if (!containerHeader) {\n      return undefined\n    }\n    return this.file.readBlock(containerHeader._endPosition)\n  }\n\n  // parses the compression header data into a CramContainerCompressionScheme\n  // object\n  async getCompressionScheme() {\n    const header = await this.getCompressionHeaderBlock()\n    if (!header) {\n      return undefined\n    }\n\n    return new CramContainerCompressionScheme(header.parsedContent)\n  }\n\n  getSlice(slicePosition: number, sliceSize: number) {\n    // note: slicePosition is relative to the end of the container header\n    // TODO: perhaps we should cache slices?\n    return new CramSlice(this, slicePosition, sliceSize)\n  }\n\n  async _readContainerHeader(position: number) {\n    const { majorVersion } = await this.file.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    const { cramContainerHeader1, cramContainerHeader2 } = sectionParsers\n    const { size: fileSize } = await this.file.stat()\n\n    if (position >= fileSize) {\n      console.warn(`pos:${position}>=fileSize:${fileSize} in cram container`)\n      return undefined\n    }\n\n    // parse the container header. do it in 2 pieces because you cannot tell\n    // how much to buffer until you read numLandmarks\n    const bytes1 = Buffer.allocUnsafe(cramContainerHeader1.maxLength)\n    await this.file.read(bytes1, 0, cramContainerHeader1.maxLength, position)\n    const header1 = parseItem(bytes1, cramContainerHeader1.parser)\n    const numLandmarksSize = itf8Size(header1.numLandmarks)\n    if (position + header1.length >= fileSize) {\n      // header indicates container goes beyond fileSize\n      console.warn(\n        `container at ${position} is beyond fileSize:${fileSize}, skipping`,\n      )\n      return undefined\n    }\n    const bytes2 = Buffer.allocUnsafe(\n      cramContainerHeader2.maxLength(header1.numLandmarks),\n    )\n    await this.file.read(\n      bytes2,\n      0,\n      cramContainerHeader2.maxLength(header1.numLandmarks),\n      position + header1._size - numLandmarksSize,\n    )\n    const header2 = parseItem(bytes2, cramContainerHeader2.parser)\n\n    if (this.file.validateChecksums && header2.crc32 !== undefined) {\n      await this.file.checkCrc32(\n        position,\n        header1._size + header2._size - numLandmarksSize - 4,\n        header2.crc32,\n        `container header beginning at position ${position}`,\n      )\n    }\n\n    const completeHeader = Object.assign(header1, header2, {\n      _size: header1._size + header2._size - numLandmarksSize,\n      _endPosition: header1._size + header2._size - numLandmarksSize + position,\n    })\n\n    return completeHeader\n  }\n}\n\n'getHeader getCompressionHeaderBlock getCompressionScheme'\n  .split(' ')\n  .forEach(method => {\n    tinyMemoize(CramContainer, method)\n  })\n","import { Filehandle } from '../cramFile/filehandle'\nimport { LocalFile, RemoteFile } from 'generic-filehandle'\n\nfunction open(\n  maybeUrl?: string,\n  maybePath?: string,\n  maybeFilehandle?: Filehandle,\n): Filehandle {\n  if (maybeFilehandle) {\n    return maybeFilehandle\n  }\n  if (maybeUrl) {\n    return new RemoteFile(maybeUrl)\n  }\n  if (maybePath) {\n    return new LocalFile(maybePath)\n  }\n  throw new Error('no url, path, or filehandle provided, cannot open')\n}\n\nexport { open }\n\nexport { LocalFile, RemoteFile } from 'generic-filehandle'\n","export function parseHeaderText(text: string) {\n  const lines = text.split(/\\r?\\n/)\n  const data: {\n    tag: string\n    data: {\n      tag: string\n      value: string\n    }[]\n  }[] = []\n  for (const line of lines) {\n    const [tag, ...fields] = line.split(/\\t/)\n    if (tag) {\n      data.push({\n        tag: tag.slice(1),\n        data: fields.map(f => {\n          const r = f.indexOf(':')\n          return r !== -1\n            ? {\n                tag: f.slice(0, r),\n                value: f.slice(r + 1),\n              }\n            : // @CO lines are not comma separated.\n              // See \"samtools view -H c2\\#pad.3.0.cram\"\n              // so, just store value tag and value itself\n              {\n                tag: f,\n                value: '',\n              }\n        }),\n      })\n    }\n  }\n  return data\n}\n","import { Buffer } from 'buffer'\nimport crc32 from 'crc/crc32'\nimport QuickLRU from 'quick-lru'\nimport htscodecs from '@jkbonfield/htscodecs'\nimport bzip2 from 'bzip2'\nimport { XzReadableStream } from 'xz-decompress'\nimport { CramMalformedError, CramUnimplementedError } from '../errors'\n// locals\nimport { unzip } from '../unzip'\nimport ransuncompress from '../rans'\nimport {\n  BlockHeader,\n  CompressionMethod,\n  cramFileDefinition,\n  getSectionParsers,\n} from './sectionParsers'\nimport CramContainer from './container'\nimport CramRecord from './record'\nimport { open } from '../io'\nimport { parseItem, tinyMemoize } from './util'\nimport { parseHeaderText } from '../sam'\nimport { Filehandle } from './filehandle'\n\nfunction bufferToStream(buf: Buffer) {\n  return new ReadableStream({\n    start(controller) {\n      controller.enqueue(buf)\n      controller.close()\n    },\n  })\n}\n\n// source: https://abdulapopoola.com/2019/01/20/check-endianness-with-javascript/\nfunction getEndianness() {\n  const uInt32 = new Uint32Array([0x11223344])\n  const uInt8 = new Uint8Array(uInt32.buffer)\n\n  if (uInt8[0] === 0x44) {\n    return 0 // little-endian\n  } else if (uInt8[0] === 0x11) {\n    return 1 // big-endian\n  } else {\n    return 2 // mixed-endian?\n  }\n}\n\nexport interface CramFileSource {\n  filehandle?: Filehandle\n  url?: string\n  path?: string\n}\n\nexport type SeqFetch = (\n  seqId: number,\n  start: number,\n  end: number,\n) => Promise<string>\n\nexport type CramFileArgs = CramFileSource & {\n  checkSequenceMD5?: boolean\n  cacheSize?: number\n  seqFetch?: SeqFetch\n}\n\nexport type CramFileBlock = BlockHeader & {\n  _endPosition: number\n  contentPosition: number\n  _size: number\n  content: Buffer\n  crc32?: number\n}\n\nexport default class CramFile {\n  private file: Filehandle\n  public validateChecksums: boolean\n  public fetchReferenceSequenceCallback?: SeqFetch\n  public options: {\n    checkSequenceMD5?: boolean\n    cacheSize: number\n  }\n  public featureCache: QuickLRU<string, Promise<CramRecord[]>>\n  private header: string | undefined\n\n  constructor(args: CramFileArgs) {\n    this.file = open(args.url, args.path, args.filehandle)\n    this.validateChecksums = true\n    this.fetchReferenceSequenceCallback = args.seqFetch\n    this.options = {\n      checkSequenceMD5: args.checkSequenceMD5,\n      cacheSize: args.cacheSize ?? 20000,\n    }\n\n    // cache of features in a slice, keyed by the slice offset. caches all of\n    // the features in a slice, or none. the cache is actually used by the\n    // slice object, it's just kept here at the level of the file\n    this.featureCache = new QuickLRU({\n      maxSize: this.options.cacheSize,\n    })\n    if (getEndianness() > 0) {\n      throw new Error('Detected big-endian machine, may be unable to run')\n    }\n  }\n\n  // can just read this object like a filehandle\n  read(buffer: Buffer, offset: number, length: number, position: number) {\n    return this.file.read(buffer, offset, length, position)\n  }\n\n  // can just stat this object like a filehandle\n  stat() {\n    return this.file.stat()\n  }\n\n  // memoized\n  async getDefinition() {\n    const { maxLength, parser } = cramFileDefinition()\n    const headbytes = Buffer.allocUnsafe(maxLength)\n    await this.file.read(headbytes, 0, maxLength, 0)\n    const definition = parser(headbytes).value\n    if (definition.majorVersion !== 2 && definition.majorVersion !== 3) {\n      throw new CramUnimplementedError(\n        `CRAM version ${definition.majorVersion} not supported`,\n      )\n    }\n    return definition\n  }\n\n  // memoize\n  async getSamHeader() {\n    const firstContainer = await this.getContainerById(0)\n    if (!firstContainer) {\n      throw new CramMalformedError('file contains no containers')\n    }\n\n    const firstBlock = await firstContainer.getFirstBlock()\n    if (firstBlock === undefined) {\n      return parseHeaderText('')\n    }\n    const content = firstBlock.content\n    // find the end of the trailing zeros in the header text\n    const headerLength = content.readInt32LE(0)\n    const textStart = 4\n    // let textEnd = content.length - 1\n    // while (textEnd >= textStart && !content[textEnd]) textEnd -= 1\n    // trim off the trailing zeros\n    const text = content.toString('utf8', textStart, textStart + headerLength)\n    this.header = text\n    return parseHeaderText(text)\n  }\n\n  async getHeaderText() {\n    await this.getSamHeader()\n    return this.header\n  }\n\n  async getContainerById(containerNumber: number) {\n    const { majorVersion } = await this.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    let position = sectionParsers.cramFileDefinition.maxLength\n    const { size: fileSize } = await this.file.stat()\n    const { cramContainerHeader1 } = sectionParsers\n\n    // skip with a series of reads to the proper container\n    let currentContainer: CramContainer | undefined\n    for (let i = 0; i <= containerNumber; i++) {\n      // if we are about to go off the end of the file\n      // and have not found that container, it does not exist\n      if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {\n        return undefined\n      }\n\n      currentContainer = this.getContainerAtPosition(position)\n      const currentHeader = await currentContainer.getHeader()\n      if (!currentHeader) {\n        throw new CramMalformedError(\n          `container ${containerNumber} not found in file`,\n        )\n      }\n      // if this is the first container, read all the blocks in the container\n      // to determine its length, because we cannot trust the container\n      // header's given length due to a bug somewhere in htslib\n      if (i === 0) {\n        position = currentHeader._endPosition\n        for (let j = 0; j < currentHeader.numBlocks; j++) {\n          const block = await this.readBlock(position)\n          if (block === undefined) {\n            return undefined\n          }\n          position = block._endPosition\n        }\n      } else {\n        // otherwise, just traverse to the next container using the container's length\n        position += currentHeader._size + currentHeader.length\n      }\n    }\n\n    return currentContainer\n  }\n\n  async checkCrc32(\n    position: number,\n    length: number,\n    recordedCrc32: number,\n    description: string,\n  ) {\n    const b = Buffer.allocUnsafe(length)\n    await this.file.read(b, 0, length, position)\n    const calculatedCrc32 = crc32.unsigned(b)\n    if (calculatedCrc32 !== recordedCrc32) {\n      throw new CramMalformedError(\n        `crc mismatch in ${description}: recorded CRC32 = ${recordedCrc32}, but calculated CRC32 = ${calculatedCrc32}`,\n      )\n    }\n  }\n\n  /**\n   * @returns {Promise[number]} the number of containers in the file\n   */\n  async containerCount(): Promise<number | undefined> {\n    const { majorVersion } = await this.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    const { size: fileSize } = await this.file.stat()\n    const { cramContainerHeader1 } = sectionParsers\n\n    let containerCount = 0\n    let position = sectionParsers.cramFileDefinition.maxLength\n    while (position + cramContainerHeader1.maxLength + 8 < fileSize) {\n      const currentHeader =\n        await this.getContainerAtPosition(position).getHeader()\n      if (!currentHeader) {\n        break\n      }\n      // if this is the first container, read all the blocks in the\n      // container, because we cannot trust the container\n      // header's given length due to a bug somewhere in htslib\n      if (containerCount === 0) {\n        position = currentHeader._endPosition\n        for (let j = 0; j < currentHeader.numBlocks; j++) {\n          const block = await this.readBlock(position)\n          if (block === undefined) {\n            return undefined\n          }\n          position = block._endPosition\n        }\n      } else {\n        // otherwise, just traverse to the next container using the container's length\n        position += currentHeader._size + currentHeader.length\n      }\n      containerCount += 1\n    }\n\n    return containerCount\n  }\n\n  getContainerAtPosition(position: number) {\n    return new CramContainer(this, position)\n  }\n\n  async readBlockHeader(position: number) {\n    const { majorVersion } = await this.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    const { cramBlockHeader } = sectionParsers\n    const { size: fileSize } = await this.file.stat()\n\n    if (position + cramBlockHeader.maxLength >= fileSize) {\n      return undefined\n    }\n\n    const buffer = Buffer.allocUnsafe(cramBlockHeader.maxLength)\n    await this.file.read(buffer, 0, cramBlockHeader.maxLength, position)\n    return parseItem(buffer, cramBlockHeader.parser, 0, position)\n  }\n\n  async _parseSection<T>(\n    section: {\n      maxLength: number\n      parser: (buffer: Buffer, offset: number) => { offset: number; value: T }\n    },\n    position: number,\n    size = section.maxLength,\n    preReadBuffer?: Buffer,\n  ) {\n    let buffer: Buffer\n    if (preReadBuffer) {\n      buffer = preReadBuffer\n    } else {\n      const { size: fileSize } = await this.file.stat()\n      if (position + size >= fileSize) {\n        return undefined\n      }\n      buffer = Buffer.allocUnsafe(size)\n      await this.file.read(buffer, 0, size, position)\n    }\n    const data = parseItem(buffer, section.parser, 0, position)\n    if (data._size !== size) {\n      throw new CramMalformedError(\n        `section read error: requested size ${size} does not equal parsed size ${data._size}`,\n      )\n    }\n    return data\n  }\n\n  async _uncompress(\n    compressionMethod: CompressionMethod,\n    inputBuffer: Buffer,\n    outputBuffer: Buffer,\n  ) {\n    if (compressionMethod === 'gzip') {\n      const result = unzip(inputBuffer)\n      result.copy(outputBuffer)\n    } else if (compressionMethod === 'bzip2') {\n      const bits = bzip2.array(inputBuffer)\n      let size = bzip2.header(bits)\n      let j = 0\n      let chunk: Uint8Array | -1\n      do {\n        chunk = bzip2.decompress(bits, size)\n        if (chunk !== -1) {\n          Buffer.from(chunk).copy(outputBuffer, j)\n          j += chunk.length\n          size -= chunk.length\n        }\n      } while (chunk !== -1)\n    } else if (compressionMethod === 'lzma') {\n      const decompressedResponse = new Response(\n        new XzReadableStream(bufferToStream(inputBuffer)),\n      )\n      const ret = Buffer.from(await decompressedResponse.arrayBuffer())\n      ret.copy(outputBuffer)\n    } else if (compressionMethod === 'rans') {\n      ransuncompress(inputBuffer, outputBuffer)\n      // htscodecs r4x8 is slower, but compatible.\n      // htscodecs.r4x8_uncompress(inputBuffer, outputBuffer);\n    } else if (compressionMethod === 'rans4x16') {\n      htscodecs.r4x16_uncompress(inputBuffer, outputBuffer)\n    } else if (compressionMethod === 'arith') {\n      htscodecs.arith_uncompress(inputBuffer, outputBuffer)\n    } else if (compressionMethod === 'fqzcomp') {\n      htscodecs.fqzcomp_uncompress(inputBuffer, outputBuffer)\n    } else if (compressionMethod === 'tok3') {\n      htscodecs.tok3_uncompress(inputBuffer, outputBuffer)\n    } else {\n      throw new CramUnimplementedError(\n        `${compressionMethod} decompression not yet implemented`,\n      )\n    }\n  }\n\n  async readBlock(position: number) {\n    const { majorVersion } = await this.getDefinition()\n    const sectionParsers = getSectionParsers(majorVersion)\n    const blockHeader = await this.readBlockHeader(position)\n    if (blockHeader === undefined) {\n      return undefined\n    }\n    const blockContentPosition = blockHeader._endPosition\n\n    const uncompressedData = Buffer.allocUnsafe(blockHeader.uncompressedSize)\n\n    const block: CramFileBlock = {\n      ...blockHeader,\n      _endPosition: blockContentPosition,\n      contentPosition: blockContentPosition,\n      content: uncompressedData,\n    }\n\n    if (blockHeader.compressionMethod !== 'raw') {\n      const compressedData = Buffer.allocUnsafe(blockHeader.compressedSize)\n      await this.read(\n        compressedData,\n        0,\n        blockHeader.compressedSize,\n        blockContentPosition,\n      )\n\n      await this._uncompress(\n        blockHeader.compressionMethod,\n        compressedData,\n        uncompressedData,\n      )\n    } else {\n      await this.read(\n        uncompressedData,\n        0,\n        blockHeader.uncompressedSize,\n        blockContentPosition,\n      )\n    }\n\n    if (majorVersion >= 3) {\n      // parse the crc32\n      const crc = await this._parseSection(\n        sectionParsers.cramBlockCrc32,\n        blockContentPosition + blockHeader.compressedSize,\n      )\n      if (crc === undefined) {\n        return undefined\n      }\n      block.crc32 = crc.crc32\n\n      // check the block data crc32\n      if (this.validateChecksums) {\n        await this.checkCrc32(\n          position,\n          blockHeader._size + blockHeader.compressedSize,\n          crc.crc32,\n          'block data',\n        )\n      }\n\n      // make the endposition and size reflect the whole block\n      block._endPosition = crc._endPosition\n      block._size =\n        block.compressedSize + sectionParsers.cramBlockCrc32.maxLength\n    } else {\n      block._endPosition = blockContentPosition + block.compressedSize\n      block._size = block.compressedSize\n    }\n\n    return block\n  }\n}\n\n'getDefinition getSectionParsers getSamHeader'.split(' ').forEach(method => {\n  tinyMemoize(CramFile, method)\n})\n","// @ts-nocheck\nimport { CramMalformedError } from '../errors'\n\nimport { TF_SHIFT } from './constants'\nimport Decoding from './decoding'\n\nexport default function uncompress(\n  /* ByteBuffer */ input,\n  /* Decoding.AriDecoder */ D,\n  /* Decoding.Symbol[] */ syms,\n  /* ByteBuffer */ out,\n) {\n  let rans0 = input.getInt()\n  let rans1 = input.getInt()\n  let rans2 = input.getInt()\n  let rans3 = input.getInt()\n\n  const /* int */ outputSize = out.remaining()\n  const /* int */ outputEnd = outputSize & ~3\n  for (let i = 0; i < outputEnd; i += 4) {\n    const /* byte */ c0 = D.R[Decoding.get(rans0, TF_SHIFT)]\n    const /* byte */ c1 = D.R[Decoding.get(rans1, TF_SHIFT)]\n    const /* byte */ c2 = D.R[Decoding.get(rans2, TF_SHIFT)]\n    const /* byte */ c3 = D.R[Decoding.get(rans3, TF_SHIFT)]\n\n    out.putAt(i, c0)\n    out.putAt(i + 1, c1)\n    out.putAt(i + 2, c2)\n    out.putAt(i + 3, c3)\n\n    rans0 = Decoding.advanceSymbolStep(rans0, syms[0xff & c0], TF_SHIFT)\n    rans1 = Decoding.advanceSymbolStep(rans1, syms[0xff & c1], TF_SHIFT)\n    rans2 = Decoding.advanceSymbolStep(rans2, syms[0xff & c2], TF_SHIFT)\n    rans3 = Decoding.advanceSymbolStep(rans3, syms[0xff & c3], TF_SHIFT)\n\n    rans0 = Decoding.renormalize(rans0, input)\n    rans1 = Decoding.renormalize(rans1, input)\n    rans2 = Decoding.renormalize(rans2, input)\n    rans3 = Decoding.renormalize(rans3, input)\n  }\n\n  out.setPosition(outputEnd)\n  let /* byte */ c: number\n  switch (outputSize & 3) {\n    case 0:\n      break\n    case 1:\n      c = D.R[Decoding.get(rans0, TF_SHIFT)]\n      Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n      break\n\n    case 2:\n      c = D.R[Decoding.get(rans0, TF_SHIFT)]\n      Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n\n      c = D.R[Decoding.get(rans1, TF_SHIFT)]\n      Decoding.advanceSymbol(rans1, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n      break\n\n    case 3:\n      c = D.R[Decoding.get(rans0, TF_SHIFT)]\n      Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n\n      c = D.R[Decoding.get(rans1, TF_SHIFT)]\n      Decoding.advanceSymbol(rans1, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n\n      c = D.R[Decoding.get(rans2, TF_SHIFT)]\n      Decoding.advanceSymbol(rans2, input, syms[0xff & c], TF_SHIFT)\n      out.put(c)\n      break\n\n    default:\n      throw new CramMalformedError(\n        'invalid output size encountered during rANS decoding',\n      )\n  }\n\n  out.setPosition(0)\n}\n","// @ts-nocheck\nimport { TF_SHIFT } from './constants'\nimport Decoding from './decoding'\n\nexport default function uncompress(\n  /* ByteBuffer */ input,\n  /* ByteBuffer */ output,\n  /* Decoding.AriDecoder[] */ D,\n  /* Decoding.Symbol[][] */ syms,\n) {\n  const /* int */ outputSize = output.remaining()\n  let rans0 = input.getInt()\n  let rans1 = input.getInt()\n  let rans2 = input.getInt()\n  let rans7 = input.getInt()\n\n  const /* int */ isz4 = outputSize >> 2\n  let /* int */ i0 = 0\n  let /* int */ i1 = isz4\n  let /* int */ i2 = 2 * isz4\n  let /* int */ i7 = 3 * isz4\n  let /* int */ l0 = 0\n  let /* int */ l1 = 0\n  let /* int */ l2 = 0\n  let /* int */ l7 = 0\n  for (; i0 < isz4; i0 += 1, i1 += 1, i2 += 1, i7 += 1) {\n    const /* int */ c0 = 0xff & D[l0].R[Decoding.get(rans0, TF_SHIFT)]\n    const /* int */ c1 = 0xff & D[l1].R[Decoding.get(rans1, TF_SHIFT)]\n    const /* int */ c2 = 0xff & D[l2].R[Decoding.get(rans2, TF_SHIFT)]\n    const /* int */ c7 = 0xff & D[l7].R[Decoding.get(rans7, TF_SHIFT)]\n\n    output.putAt(i0, c0)\n    output.putAt(i1, c1)\n    output.putAt(i2, c2)\n    output.putAt(i7, c7)\n\n    rans0 = Decoding.advanceSymbolStep(rans0, syms[l0][c0], TF_SHIFT)\n    rans1 = Decoding.advanceSymbolStep(rans1, syms[l1][c1], TF_SHIFT)\n    rans2 = Decoding.advanceSymbolStep(rans2, syms[l2][c2], TF_SHIFT)\n    rans7 = Decoding.advanceSymbolStep(rans7, syms[l7][c7], TF_SHIFT)\n\n    rans0 = Decoding.renormalize(rans0, input)\n    rans1 = Decoding.renormalize(rans1, input)\n    rans2 = Decoding.renormalize(rans2, input)\n    rans7 = Decoding.renormalize(rans7, input)\n\n    l0 = c0\n    l1 = c1\n    l2 = c2\n    l7 = c7\n  }\n\n  // Remainder\n  for (; i7 < outputSize; i7 += 1) {\n    const /* int */ c7 = 0xff & D[l7].R[Decoding.get(rans7, TF_SHIFT)]\n    output.putAt(i7, c7)\n    rans7 = Decoding.advanceSymbol(rans7, input, syms[l7][c7], TF_SHIFT)\n    l7 = c7\n  }\n}\n","import { unzip } from './unzip'\nimport { open } from './io'\nimport { CramMalformedError } from './errors'\nimport { CramFileSource } from './cramFile/file'\nimport { Filehandle } from './cramFile/filehandle'\n\nconst BAI_MAGIC = 21_578_050 // BAI\\1\n\nexport interface Slice {\n  start: number\n  span: number\n  containerStart: number\n  sliceStart: number\n  sliceBytes: number\n}\n\ntype ParsedIndex = Record<string, Slice[] | undefined>\n\nfunction addRecordToIndex(index: ParsedIndex, record: number[]) {\n  const [seqId, start, span, containerStart, sliceStart, sliceBytes] = record\n\n  const s = seqId!\n  if (!index[s]) {\n    index[s] = []\n  }\n\n  index[s].push({\n    start: start!,\n    span: span!,\n    containerStart: containerStart!,\n    sliceStart: sliceStart!,\n    sliceBytes: sliceBytes!,\n  })\n}\n\nfunction maybeUnzip(data: Buffer) {\n  if (data[0] === 31 && data[1] === 139) {\n    return unzip(data)\n  }\n  return data\n}\n\nexport default class CraiIndex {\n  // A CRAM index (.crai) is a gzipped tab delimited file containing the\n  // following columns:\n  //\n  // 1. Sequence id\n  // 2. Alignment start\n  // 3. Alignment span\n  // 4. Container start byte position in the file\n  // 5. Slice start byte position in the container data (‘blocks’)\n  // 6. Slice size in bytes\n  // Each line represents a slice in the CRAM file. Please note that all slices must be listed in index file.\n  private parseIndexP?: Promise<ParsedIndex>\n\n  private filehandle: Filehandle\n\n  /**\n   *\n   * @param {object} args\n   * @param {string} [args.path]\n   * @param {string} [args.url]\n   * @param {FileHandle} [args.filehandle]\n   */\n  constructor(args: CramFileSource) {\n    this.filehandle = open(args.url, args.path, args.filehandle)\n  }\n\n  async parseIndex() {\n    const index: ParsedIndex = {}\n    const uncompressedBuffer = maybeUnzip(await this.filehandle.readFile())\n    if (\n      uncompressedBuffer.length > 4 &&\n      uncompressedBuffer.readUInt32LE(0) === BAI_MAGIC\n    ) {\n      throw new CramMalformedError(\n        'invalid .crai index file. note: file appears to be a .bai index. this is technically legal but please open a github issue if you need support',\n      )\n    }\n    // interpret the text as regular ascii, since it is\n    // supposed to be only digits and whitespace characters\n    // this is written in a deliberately low-level fashion for performance,\n    // because some .crai files can be pretty large.\n    let currentRecord: number[] = []\n    let currentString = ''\n    for (const charCode of uncompressedBuffer) {\n      if (\n        (charCode >= 48 && charCode <= 57) /* 0-9 */ ||\n        (!currentString && charCode === 45) /* leading - */\n      ) {\n        currentString += String.fromCharCode(charCode)\n      } else if (charCode === 9 /* \\t */) {\n        currentRecord.push(Number.parseInt(currentString, 10))\n        currentString = ''\n      } else if (charCode === 10 /* \\n */) {\n        currentRecord.push(Number.parseInt(currentString, 10))\n        currentString = ''\n        addRecordToIndex(index, currentRecord)\n        currentRecord = []\n      } else if (charCode !== 13 /* \\r */ && charCode !== 32 /* space */) {\n        // if there are other characters in the file besides\n        // space and \\r, something is wrong.\n        throw new CramMalformedError('invalid .crai index file')\n      }\n    }\n\n    // if the file ends without a \\n, we need to flush our buffers\n    if (currentString) {\n      currentRecord.push(Number.parseInt(currentString, 10))\n    }\n    if (currentRecord.length === 6) {\n      addRecordToIndex(index, currentRecord)\n    }\n\n    // sort each of them by start\n    Object.entries(index).forEach(([seqId, ent]) => {\n      const e2 = ent!\n      index[seqId] = e2.sort((a, b) => a.start - b.start || a.span - b.span)\n    })\n    return index\n  }\n\n  getIndex() {\n    if (!this.parseIndexP) {\n      this.parseIndexP = this.parseIndex().catch((e: unknown) => {\n        this.parseIndexP = undefined\n        throw e\n      })\n    }\n    return this.parseIndexP\n  }\n\n  /**\n   * @param {number} seqId\n   * @returns {Promise} true if the index contains entries for\n   * the given reference sequence ID, false otherwise\n   */\n  async hasDataForReferenceSequence(seqId: number) {\n    return !!(await this.getIndex())[seqId]\n  }\n\n  /**\n   * fetch index entries for the given range\n   *\n   * @param {number} seqId\n   * @param {number} queryStart\n   * @param {number} queryEnd\n   *\n   * @returns {Promise} promise for\n   * an array of objects of the form\n   * `{start, span, containerStart, sliceStart, sliceBytes }`\n   */\n  async getEntriesForRange(\n    seqId: number,\n    queryStart: number,\n    queryEnd: number,\n  ): Promise<Slice[]> {\n    const seqEntries = (await this.getIndex())[seqId]\n    if (!seqEntries) {\n      return []\n    }\n\n    const compare = (entry: Slice) => {\n      const entryStart = entry.start\n      const entryEnd = entry.start + entry.span\n      if (entryStart > queryEnd) {\n        return -1\n      } // entry is ahead of query\n      if (entryEnd <= queryStart) {\n        return 1\n      } // entry is behind query\n      return 0 // entry overlaps query\n    }\n    const bins = [] as Slice[]\n    for (const entry of seqEntries) {\n      if (compare(entry) === 0) {\n        bins.push(entry)\n      }\n    }\n    return bins\n  }\n}\n","import { CramUnimplementedError } from './errors'\nimport CramFile from './cramFile'\nimport CramRecord from './cramFile/record'\nimport { SeqFetch } from './cramFile/file'\nimport { Filehandle } from './cramFile/filehandle'\nimport { Slice } from './craiIndex'\n\nexport interface CramFileSource {\n  cramFilehandle?: Filehandle\n  cramUrl?: string\n  cramPath?: string\n}\n\nexport interface CramIndexLike {\n  getEntriesForRange: (\n    seqId: number,\n    start: number,\n    end: number,\n  ) => Promise<Slice[]>\n  hasDataForReferenceSequence: (seqId: number) => Promise<boolean>\n}\n\nexport default class IndexedCramFile {\n  public cram: CramFile\n  public index: CramIndexLike\n\n  /**\n   *\n   * @param {object} args\n   * @param {CramFile} args.cram\n   * @param {Index-like} args.index object that supports getEntriesForRange(seqId,start,end) -> Promise[Array[index entries]]\n   * @param {number} [args.cacheSize] optional maximum number of CRAM records to cache.  default 20,000\n   * @param {boolean} [args.checkSequenceMD5] - default true. if false, disables verifying the MD5\n   * checksum of the reference sequence underlying a slice. In some applications, this check can cause an inconvenient amount (many megabases) of sequences to be fetched.\n   */\n  constructor(\n    args: {\n      index: CramIndexLike\n    } & (\n      | { cram: CramFile }\n      | ({\n          cram?: undefined\n          seqFetch?: SeqFetch\n          checkSequenceMD5?: boolean\n          cacheSize?: number\n        } & CramFileSource)\n    ),\n  ) {\n    // { cram, index, seqFetch /* fasta, fastaIndex */ }) {\n    this.cram =\n      args.cram ??\n      new CramFile({\n        url: args.cramUrl,\n        path: args.cramPath,\n        filehandle: args.cramFilehandle,\n        seqFetch: args.seqFetch,\n        checkSequenceMD5: args.checkSequenceMD5,\n        cacheSize: args.cacheSize,\n      })\n\n    if (!(this.cram instanceof CramFile)) {\n      throw new Error('invalid arguments: no cramfile')\n    }\n\n    this.index = args.index\n  }\n\n  /**\n   *\n   * @param {number} seq numeric ID of the reference sequence\n   * @param {number} start start of the range of interest. 1-based closed coordinates.\n   * @param {number} end end of the range of interest. 1-based closed coordinates.\n   * @returns {Promise[Array[CramRecord]]}\n   */\n  async getRecordsForRange(\n    seq: number,\n    start: number,\n    end: number,\n    opts: {\n      viewAsPairs?: boolean\n      pairAcrossChr?: boolean\n      maxInsertSize?: number\n    } = {},\n  ) {\n    opts.viewAsPairs = opts.viewAsPairs || false\n    opts.pairAcrossChr = opts.pairAcrossChr || false\n    opts.maxInsertSize = opts.maxInsertSize || 200000\n\n    if (typeof seq === 'string') {\n      // TODO: support string reference sequence names somehow\n      throw new CramUnimplementedError(\n        'string sequence names not yet supported',\n      )\n    }\n    const seqId = seq\n    const slices = await this.index.getEntriesForRange(seqId, start, end)\n\n    // TODO: do we need to merge or de-duplicate the blocks?\n\n    // fetch all the slices and parse the feature data\n    const filter = (feature: CramRecord) =>\n      feature.sequenceId === seq &&\n      feature.alignmentStart <= end &&\n      feature.lengthOnRef !== undefined &&\n      feature.alignmentStart + feature.lengthOnRef - 1 >= start\n    const sliceResults = await Promise.all(\n      slices.map(slice => this.getRecordsInSlice(slice, filter)),\n    )\n\n    let ret: CramRecord[] = Array.prototype.concat(...sliceResults)\n    if (opts.viewAsPairs) {\n      const readNames: Record<string, number> = {}\n      const readIds: Record<string, number> = {}\n      for (const read of ret) {\n        const name = read.readName\n        if (name === undefined) {\n          throw new Error('readName undefined')\n        }\n        const id = read.uniqueId\n        if (!readNames[name]) {\n          readNames[name] = 0\n        }\n        readNames[name] += 1\n        readIds[id] = 1\n      }\n      const unmatedPairs: Record<string, boolean> = {}\n      Object.entries(readNames).forEach(([k, v]) => {\n        if (v === 1) {\n          unmatedPairs[k] = true\n        }\n      })\n      const matePromises = []\n      for (const cramRecord of ret) {\n        const name = cramRecord.readName\n        if (name === undefined) {\n          throw new Error('readName undefined')\n        }\n        if (\n          unmatedPairs[name] &&\n          cramRecord.mate &&\n          (cramRecord.mate.sequenceId === seqId || opts.pairAcrossChr) &&\n          Math.abs(cramRecord.alignmentStart - cramRecord.mate.alignmentStart) <\n            opts.maxInsertSize\n        ) {\n          const mateSlices = this.index.getEntriesForRange(\n            cramRecord.mate.sequenceId,\n            cramRecord.mate.alignmentStart,\n            cramRecord.mate.alignmentStart + 1,\n          )\n          matePromises.push(mateSlices)\n        }\n      }\n      const mateBlocks = await Promise.all(matePromises)\n      let mateChunks = [] as Slice[]\n      for (const block of mateBlocks) {\n        mateChunks.push(...block)\n      }\n      // filter out duplicates\n      mateChunks = mateChunks\n        .sort((a, b) => a.toString().localeCompare(b.toString()))\n        .filter(\n          (item, pos, ary) =>\n            !pos || item.toString() !== ary[pos - 1]!.toString(),\n        )\n\n      const mateRecordPromises = []\n      const mateFeatPromises: Promise<CramRecord[]>[] = []\n      for (const c of mateChunks) {\n        let recordPromise = this.cram.featureCache.get(c.toString())\n        if (!recordPromise) {\n          recordPromise = this.getRecordsInSlice(c, () => true)\n          this.cram.featureCache.set(c.toString(), recordPromise)\n        }\n        mateRecordPromises.push(recordPromise)\n        const featPromise = recordPromise.then(feats => {\n          const mateRecs = []\n          for (const feature of feats) {\n            if (feature.readName === undefined) {\n              throw new Error('readName undefined')\n            }\n            if (unmatedPairs[feature.readName] && !readIds[feature.uniqueId]) {\n              mateRecs.push(feature)\n            }\n          }\n          return mateRecs\n        })\n        mateFeatPromises.push(featPromise)\n      }\n      const newMateFeats = await Promise.all(mateFeatPromises)\n      if (newMateFeats.length) {\n        const newMates = newMateFeats.reduce((result, current) =>\n          result.concat(current),\n        )\n        ret = ret.concat(newMates)\n      }\n    }\n    return ret\n  }\n\n  getRecordsInSlice(\n    {\n      containerStart,\n      sliceStart,\n      sliceBytes,\n    }: { containerStart: number; sliceStart: number; sliceBytes: number },\n    filterFunction: (r: CramRecord) => boolean,\n  ) {\n    const container = this.cram.getContainerAtPosition(containerStart)\n    const slice = container.getSlice(sliceStart, sliceBytes)\n    return slice.getRecords(filterFunction)\n  }\n\n  /**\n   *\n   * @param {number} seqId\n   * @returns {Promise} true if the CRAM file contains data for the given\n   * reference sequence numerical ID\n   */\n  hasDataForReferenceSequence(seqId: number) {\n    return this.index.hasDataForReferenceSequence(seqId)\n  }\n}\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst RangeCoder = require(\"./arith_sh\");\nconst IOStream = require(\"./iostream\");\nconst ByteModel = require(\"./byte_model\");\nconst bzip2 = require(\"bzip2\");\n\nconst ARITH_ORDER  = 1\nconst ARITH_EXT    = 4\nconst ARITH_STRIPE = 8\nconst ARITH_NOSIZE = 16\nconst ARITH_CAT    = 32\nconst ARITH_RLE    = 64\nconst ARITH_PACK   = 128\n\nmodule.exports = class RangeCoderGen {\n    decode(src) {\n\tthis.stream = new IOStream(src);\n\treturn this.decodeStream(this.stream)\n    }\n\n    decodeStream(stream, n_out=0) {\n\tvar flags = this.stream.ReadByte();\n\tif (!(flags & ARITH_NOSIZE))\n\t    n_out = this.stream.ReadUint7();\n\tvar e_len = n_out;\n\n\tvar order = flags & ARITH_ORDER;\n\n\t// 4-way recursion\n\tif (flags & ARITH_STRIPE)\n\t    return this.decodeStripe(this.stream, n_out)\n\n\t// Meta data\n\tif (flags & ARITH_PACK) {\n\t    var P\n\t    [P, e_len] = this.decodePackMeta(this.stream)\n\t}\n\n\t// NOP, useful for tiny blocks\n\tif (flags & ARITH_CAT)\n\t    var data = this.decodeCat(this.stream, e_len)\n\n\t// Entropy decode\n\telse if (flags & ARITH_EXT) {\n\t    var data = this.decodeExt(this.stream, e_len)\n\t} else if (flags & ARITH_RLE) {\n\t    var data = order\n\t\t? this.decodeRLE1(this.stream, e_len)\n\t\t: this.decodeRLE0(this.stream, e_len)\n\t} else {\n\t    var data = order\n\t\t? this.decode1(this.stream, e_len)\n\t\t: this.decode0(this.stream, e_len)\n\t}\n\n\t// Transforms\n\tif (flags & ARITH_PACK)\n\t    data = this.decodePack(data, P, n_out)\n\n\treturn data\n    }\n\n    encode(src, flags) {\n\tthis.stream = new IOStream(\"\", 0, src.length*1.1 + 100); // guestimate worst case!\n\n\tthis.stream.WriteByte(flags);\n\tif (!(flags & ARITH_NOSIZE))\n\t    this.stream.WriteUint7(src.length);\n\n\tif (flags & ARITH_STRIPE)\n\t    return Buffer.concat([this.stream.buf.slice(0, this.stream.pos),\n\t\t\t\t  this.encodeStripe(this.stream, src, flags>>8)])\n\n\tvar order = flags & ARITH_ORDER;\n\tvar e_len = src.length;\n\n\t// step 1: Encode meta-data\n\tvar pack_meta\n\tif (flags & ARITH_PACK)\n\t    [pack_meta, src, e_len] = this.encodePack(src)\n\n\t// step 2: Write any meta data\n\tif (flags & ARITH_PACK)\n\t    this.stream.WriteStream(pack_meta)\n\n\t// step 3: arith encoding below\n\tif (flags & ARITH_RLE) {\n\t    return order\n\t\t? this.encodeRLE1(src, e_len, this.stream)\n\t\t: this.encodeRLE0(src, e_len, this.stream);\n\t} else {\n\t    return order\n\t\t? this.encode1(src, e_len, this.stream)\n\t\t: this.encode0(src, e_len, this.stream);\n\t}\n    }\n\n    //----------------------------------------------------------------------\n    // Order-0 codec\n    decode0(stream, n_out) {\n\tvar output = new Buffer.allocUnsafe(n_out);\n\n\tvar max_sym = stream.ReadByte()\n\tif (max_sym == 0)\n\t    max_sym = 256\n\n\tvar byte_model = new ByteModel(max_sym);\n\n\tvar rc = new RangeCoder(stream);\n\trc.RangeStartDecode(stream);\n\n\tfor (var i = 0; i < n_out; i++)\n\t    output[i] = byte_model.ModelDecode(stream, rc);\n\n\treturn output;\n    }\n\n    encode0(src, n_in, out) {\n\t// Count the maximum symbol present\n\tvar max_sym = 0;\n\tfor (var i = 0; i < n_in; i++)\n\t    if (max_sym < src[i])\n\t\tmax_sym = src[i]\n\tmax_sym++;  // FIXME not what spec states!?\n\n\tvar byte_model = new ByteModel(max_sym);\n\tout.WriteByte(max_sym);\n\tvar rc = new RangeCoder(out);\n\n\tfor (var i = 0; i < n_in; i++)\n\t    byte_model.ModelEncode(out, rc, src[i])\n\trc.RangeFinishEncode(out)\n\n\treturn out.buf.slice(0, out.pos);\n    }\n\n    //----------------------------------------------------------------------\n    // Order-1 codec\n\n    decode1(stream, n_out) {\n\tvar output = new Buffer.allocUnsafe(n_out);\n\n\tvar max_sym = stream.ReadByte()\n\tif (max_sym == 0)\n\t    max_sym = 256\n\n\tvar byte_model = new Array(max_sym);\n\tfor (var i = 0; i < max_sym; i++)\n\t    byte_model[i] = new ByteModel(max_sym);\n\n\tvar rc = new RangeCoder(stream);\n\trc.RangeStartDecode(stream);\n\n\tvar last = 0;\n\tfor (var i = 0; i < n_out; i++) {\n\t    output[i] = byte_model[last].ModelDecode(stream, rc);\n\t    last = output[i];\n\t}\n\n\treturn output;\n    }\n\n    encode1(src, n_in, out) {\n\t// Count the maximum symbol present\n\tvar max_sym = 0;\n\tfor (var i = 0; i < n_in; i++)\n\t    if (max_sym < src[i])\n\t\tmax_sym = src[i]\n\tmax_sym++;  // FIXME not what spec states!\n\n\tvar byte_model = new Array(max_sym);\n\tfor (var i = 0; i < max_sym; i++)\n\t    byte_model[i] = new ByteModel(max_sym);\n\tout.WriteByte(max_sym);\n\tvar rc = new RangeCoder(out);\n\n\tvar last = 0;\n\tfor (var i = 0; i < n_in; i++) {\n\t    byte_model[last].ModelEncode(out, rc, src[i])\n\t    last = src[i]\n\t}\n\trc.RangeFinishEncode(out)\n\n\treturn out.buf.slice(0, out.pos);\n    }\n\n    //----------------------------------------------------------------------\n    // External codec\n    decodeExt(stream, n_out) {\n\t// Bzip2 only for now\n\tvar output = new Buffer.allocUnsafe(n_out)\n\tvar bits = bzip2.array(stream.buf.slice(stream.pos))\n\tvar size = bzip2.header(bits)\n\tvar j = 0\n\tdo {\n\t    var chunk = bzip2.decompress(bits, size);\n\t    if (chunk != -1) {\n\t        Buffer.from(chunk).copy(output, j)\n\t        j += chunk.length\n\t\tsize -= chunk.length\n\t    }\n\t} while(chunk != -1);\n\n\treturn output\n    }\n\n    encodeExt(stream, n_out) {\n\t// We cannot compress using Bzip2 now as it's\n\t// absent from bzip2.js, but consider using\n\t// https://github.com/cscott/compressjs\n    }\n\n    //----------------------------------------------------------------------\n    // Order-0 RLE codec\n    decodeRLE0(stream, n_out) {\n\tvar output = new Buffer.allocUnsafe(n_out);\n\n\tvar max_sym = stream.ReadByte()\n\tif (max_sym == 0)\n\t    max_sym = 256\n\n\tvar model_lit = new ByteModel(max_sym);\n\tvar model_run = new Array(258);\n\tfor (var i = 0; i <= 257; i++)\n\t    model_run[i] = new ByteModel(4)\n\n\tvar rc = new RangeCoder(stream);\n\trc.RangeStartDecode(stream);\n\n\tvar i = 0;\n\twhile (i < n_out) {\n\t    output[i] = model_lit.ModelDecode(stream, rc)\n\t    var part = model_run[output[i]].ModelDecode(stream, rc)\n\t    var run = part\n\t    var rctx = 256\n\t    while (part == 3) {\n\t\tpart = model_run[rctx].ModelDecode(stream, rc)\n\t\trctx = 257\n\t\trun += part\n\t    }\n\t    for (var j = 1; j <= run; j++)\n\t\toutput[i+j] = output[i]\n\t    i += run+1\n\t}\n\n\treturn output;\n    }\n\n    encodeRLE0(src, n_in, out) {\n\t// Count the maximum symbol present\n\tvar max_sym = 0;\n\tfor (var i = 0; i < n_in; i++)\n\t    if (max_sym < src[i])\n\t\tmax_sym = src[i]\n\tmax_sym++;  // FIXME not what spec states!\n\n\tvar model_lit = new ByteModel(max_sym);\n\tvar model_run = new Array(258);\n\tfor (var i = 0; i <= 257; i++)\n\t    model_run[i] = new ByteModel(4)\n\n\tout.WriteByte(max_sym);\n\tvar rc = new RangeCoder(out);\n\n\tvar i = 0\n\twhile (i < n_in) {\n\t    model_lit.ModelEncode(out, rc, src[i])\n\t    var run = 1\n\t    while (i+run < n_in && src[i+run] == src[i])\n\t\trun++\n\t    run--\n\n\t    var rctx = src[i]\n\t    var last = src[i]\n\t    i += run+1\n\n\t    var part = run >= 3 ? 3 : run\n\t    model_run[rctx].ModelEncode(out, rc, part)\n\t    run -= part\n\t    rctx = 256\n\t    while (part == 3) {\n\t\tpart = run >= 3 ? 3 : run\n\t\tmodel_run[rctx].ModelEncode(out, rc, part)\n\t\trctx = 257\n\t\trun -= part\n\t    }\n\t}\n\trc.RangeFinishEncode(out)\n\n\treturn out.buf.slice(0, out.pos);\n    }\n\n    //----------------------------------------------------------------------\n    // Order-1 RLE codec\n\n    decodeRLE1(stream, n_out) {\n\tvar output = new Buffer.allocUnsafe(n_out);\n\n\tvar max_sym = stream.ReadByte()\n\tif (max_sym == 0)\n\t    max_sym = 256\n\n\tvar model_lit = new Array(max_sym);\n\tfor (var i = 0; i < max_sym; i++)\n\t    model_lit[i] = new ByteModel(max_sym);\n\n\tvar model_run = new Array(258);\n\tfor (var i = 0; i <= 257; i++)\n\t    model_run[i] = new ByteModel(4)\n\n\tvar rc = new RangeCoder(stream);\n\trc.RangeStartDecode(stream);\n\n\tvar last = 0;\n\tvar i = 0;\n\twhile (i < n_out) {\n\t    output[i] = model_lit[last].ModelDecode(stream, rc)\n\t    last = output[i]\n\t    var part = model_run[output[i]].ModelDecode(stream, rc)\n\t    var run = part\n\t    var rctx = 256\n\t    while (part == 3) {\n\t\tpart = model_run[rctx].ModelDecode(stream, rc)\n\t\trctx = 257\n\t\trun += part\n\t    }\n\t    for (var j = 1; j <= run; j++)\n\t\toutput[i+j] = output[i]\n\t    i += run+1\n\t}\n\n\treturn output;\n    }\n\n    encodeRLE1(src, n_in, out) {\n\t// Count the maximum symbol present\n\tvar max_sym = 0;\n\tfor (var i = 0; i < n_in; i++)\n\t    if (max_sym < src[i])\n\t\tmax_sym = src[i]\n\tmax_sym++;  // FIXME not what spec states!\n\n\tvar model_lit = new Array(max_sym)\n\tfor (var i = 0; i < max_sym; i++)\n\t    model_lit[i] = new ByteModel(max_sym);\n\tvar model_run = new Array(258);\n\tfor (var i = 0; i <= 257; i++)\n\t    model_run[i] = new ByteModel(4)\n\n\tout.WriteByte(max_sym);\n\tvar rc = new RangeCoder(out);\n\n\tvar i = 0\n\tvar last = 0\n\twhile (i < n_in) {\n\t    model_lit[last].ModelEncode(out, rc, src[i])\n\t    var run = 1\n\t    while (i+run < n_in && src[i+run] == src[i])\n\t\trun++\n\t    run--\n\n\t    var rctx = src[i]\n\t    last = src[i]\n\t    i += run+1\n\n\t    var part = run >= 3 ? 3 : run\n\t    model_run[rctx].ModelEncode(out, rc, part)\n\t    run -= part\n\t    rctx = 256\n\t    while (part == 3) {\n\t\tpart = run >= 3 ? 3 : run\n\t\tmodel_run[rctx].ModelEncode(out, rc, part)\n\t\trctx = 257\n\t\trun -= part\n\t    }\n\t}\n\trc.RangeFinishEncode(out)\n\n\treturn out.buf.slice(0, out.pos);\n    }\n\n    //----------------------------------------------------------------------\n    // Pack method\n    decodePackMeta(stream) {\n\tthis.nsym  = stream.ReadByte()\n\n\tvar M = new Array(this.nsym);\n\tfor (var i = 0; i < this.nsym; i++)\n\t    M[i] = stream.ReadByte()\n\n\tvar e_len = stream.ReadUint7(); // Could be derived data from nsym and n_out\n\n\treturn [M, e_len]\n    }\n\n    decodePack(data, M, len) {\n\tvar out = new Buffer.allocUnsafe(len);\n\n\tif (this.nsym <= 1) {\n\t    // Constant value\n\t    for (var i = 0; i < len; i++)\n\t\tout[i] = M[0]\n\n\t} else if (this.nsym <= 2) {\n\t    // 1 bit per value\n\t    for (var i = 0, j = 0; i < len; i++) {\n\t\tif (i % 8 == 0)\n\t\t    var v = data[j++]\n\t\tout[i] = M[v & 1]\n\t\tv >>= 1\n\t    }\n\n\t} else if (this.nsym <= 4) {\n\t    // 2 bits per value\n\t    for (var i = 0, j = 0; i < len; i++) {\n\t\tif (i % 4 == 0)\n\t\t    var v = data[j++]\n\t\tout[i] = M[v & 3]\n\t\tv >>= 2\n\t    }\n\n\t} else if (this.nsym <= 16) {\n\t    // 4 bits per value\n\t    for (var i = 0, j = 0; i < len; i++) {\n\t\tif (i % 2 == 0)\n\t\t    var v = data[j++]\n\t\tout[i] = M[v & 15]\n\t\tv >>= 4\n\t    }\n\n\t} else {\n\t    // 8 bits per value: NOP\n\t    return data\n\t}\n\n\treturn out\n    }\n\n    // Compute M array and return meta-data stream\n    packMeta(src) {\n\tvar stream = new IOStream(\"\", 0, 1024)\n\n\t// Count symbols\n\tvar M = new Array(256)\n\tfor (var i = 0; i < src.length; i++)\n\t    M[src[i]] = 1\n\n\t// Write Map\n\tfor (var nsym = 0, i = 0; i < 256; i++)\n\t    if (M[i])\n\t\tM[i] = ++nsym; // map to 1..N\n\tstream.WriteByte(nsym);\n\n\t// FIXME: add check for nsym > 16?\n\t// Or just accept it as an inefficient waste of time.\n\tfor (var i = 0; i < 256; i++) {\n\t    if (M[i]) {\n\t\tstream.WriteByte(i) // adjust to 0..N-1\n\t\tM[i]--;\n\t    }\n\t}\n\n\treturn [stream, M, nsym]\n    }\n\n    encodePack(data) {\n\tvar meta, M, nsym\n\t[meta, M, nsym] = this.packMeta(data)\n\n\tvar len = data.length\n\tvar i = 0;\n\tif (nsym <= 1) {\n\t    // Constant values\n\t    meta.WriteUint7(0)\n\t    return [meta, new Buffer.allocUnsafe(0), 0];\n\t}\n\n\tif (nsym <= 2) {\n\t    // 1 bit per value\n\t    var out = new Buffer.allocUnsafe(Math.floor((len+7)/8));\n\t    for (var i = 0, j = 0; i < (len & ~7); i+=8, j++)\n\t\tout[j] = (M[data[i+0]]<<0)\n\t\t       + (M[data[i+1]]<<1)\n\t\t       + (M[data[i+2]]<<2)\n\t\t       + (M[data[i+3]]<<3)\n\t\t       + (M[data[i+4]]<<4)\n\t\t       + (M[data[i+5]]<<5)\n\t\t       + (M[data[i+6]]<<6)\n\t\t       + (M[data[i+7]]<<7)\n\t    if (i < len) {\n\t\tout[j] = 0;\n\t\tvar v = 0;\n\t\twhile (i < len) {\n\t\t    out[j] |= M[data[i++]]<<v;\n\t\t    v++;\n\t\t}\n\t\tj++;\n\t    }\n\n\t    meta.WriteUint7(j)\n\t    return [meta, out, out.length]\n\t}\n\n\tif (nsym <= 4) {\n\t    // 2 bits per value\n\t    var out = new Buffer.allocUnsafe(Math.floor((len+3)/4));\n\t    for (var i = 0, j = 0; i < (len & ~3); i+=4, j++)\n\t\tout[j] = (M[data[i+0]]<<0)\n\t\t       + (M[data[i+1]]<<2)\n\t\t       + (M[data[i+2]]<<4)\n\t\t       + (M[data[i+3]]<<6)\n\n\t    if (i < len) {\n\t\tout[j] = 0;\n\t\tvar v = 0;\n\t\twhile (i < len) {\n\t\t    out[j] |= M[data[i++]]<<v;\n\t\t    v+=2;\n\t\t}\n\t\tj++;\n\t    }\n\n\t    meta.WriteUint7(j)\n\t    return [meta, out, out.length]\n\t}\n\n\tif (nsym <= 16) {\n\t    // 4 bits per value\n\t    var out = new Buffer.allocUnsafe(Math.floor((len+1)/2));\n\t    for (var i = 0, j = 0; i < (len & ~1); i+=2, j++)\n\t\tout[j] = (M[data[i+0]]<<0)\n\t\t       + (M[data[i+1]]<<4)\n\t    if (i < len)\n\t\tout[j++] = M[data[i++]];\n\n\t    meta.WriteUint7(j)\n\t    return [meta, out, out.length]\n\t}\n\n\t// Otherwise an expensive NOP\n\tmeta.WriteUint7(data.length)\n\treturn [meta, data, data.length]\n    }\n\n    //----------------------------------------------------------------------\n    // STRIPE method\n    encodeStripe(hdr, src, N) {\n    if (N == 0)\n\tN = 4; // old default\n\n\t// Split into multiple streams\n\tvar part = new Array(N)\n\tvar ulen = new Array(N)\n\tfor (var s = 0; s < N; s++) {\n\t    ulen[s] = Math.floor(src.length / N) + ((src.length % N) > s);\n\t    part[s] = new Array(ulen[s])\n\t}\n\n\tfor (var x = 0, i = 0; i < src.length; i+=N, x++) {\n\t    for (var j = 0; j < N; j++)\n\t\tif (x < part[j].length)\n\t\t    part[j][x] = src[i+j]\n\t}\n\n\t// Compress each part\n\tvar comp = new Array(N)\n\tvar total = 0\n\tfor (var s = 0; s < N; s++) {\n\t    // Example: try O0 and O1 and choose best\n\t    var comp0 = this.encode(part[s], 0)\n\t    var comp1 = this.encode(part[s], 1)\n\t    comp[s] = (comp1.length < comp0.length) ? comp1 : comp0\n\t    total += comp[s].length\n\t}\n\n\t// Serialise\n\tvar out = new IOStream(\"\", 0, total+5*N + 1)\n\tout.WriteByte(N)\n\tfor (var s = 0; s < N; s++)\n\t    out.WriteUint7(comp[s].length)\n\n\tfor (var s = 0; s < N; s++)\n\t    out.WriteData(comp[s], comp[s].length)\n\n\treturn out.buf.slice(0, out.buf.pos)\n    }\n\n    decodeStripe(stream, len) {\n\tvar N = stream.ReadByte()\n\t\n\t// Retrieve lengths\n\tvar clen = new Array(N)\n\tvar ulen = new Array(N)\n\tfor (var j = 0; j < N; j++)\n\t    clen[j] = stream.ReadUint7()\n\n\t// Decode streams\n\tvar T = new Array(N);\n\tfor (var j = 0; j < N; j++) {\n\t    ulen[j] = Math.floor(len / N) + ((len % N) > j)\n\t    T[j] = this.decodeStream(stream, ulen[j])\n\t}\n\n\t// Transpose\n\tvar out = new Buffer.allocUnsafe(len)\n\tfor (var j = 0; j < N; j++) {\n\t    for (var i = 0; i < ulen[j]; i++) {\n\t\tout[i*N + j] = T[j][i];\n\t    }\n\t}\n\n\treturn out\n    }\n\n    //----------------------------------------------------------------------\n    // Cat method\n    decodeCat(stream, len) {\n\tvar out = new Buffer.allocUnsafe(len);\n\tfor (var i = 0; i < len; i++)\n\t    out[i] = stream.ReadByte()\n\n\treturn out\n    }\n}\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// An arithmetic coder, based on Eugene Shelwien's reimplementation of\n// Michael Schindler range coder.\n//\n// Order-0 byte stream of ~/scratch/data/q40b\n// C:              3.1s decode  (approx same vs 32-bit and 64-bit)\n// Arith_sh.js     6.7s decode  (32-bit with carries)\n// Arith.js      317.0s decode  (64-bit no carries); int64 crippling it.\n\n//----------------------------------------------------------------------\n// Arithmetic (range) coder\nmodule.exports = class RangeCoder {\n    constructor(src) {\n\tthis.low   = 0;\n\tthis.range = 0xffffffff;\n\tthis.code  = 0;\n\tthis.FFnum = 0;\n\tthis.carry = 0;\n\tthis.cache = 0;\n    }\n\n    RangeStartDecode(src) {\n\tfor (var i = 0; i < 5; i++)\n\t    this.code = (this.code << 8) + src.ReadByte();\n\tthis.code &= 0xffffffff;\n\tthis.code >>>= 0; // force to be +ve int\n    }\n\n    RangeGetFrequency(tot_freq) {\n\tthis.range = Math.floor(this.range / tot_freq);\n\t//return this.code / this.range;\n\treturn Math.floor(this.code / this.range);\n\n\t// Conceptual scenario; return freq only and don't modify range yet\n\t//return Math.floor(this.code / (Math.floor(this.range / tot_freq)));\n    }\n\n    RangeDecode(src, sym_low, sym_freq, tot_freq) {\n\t// Conceptually we divide range here, but in practice we cached it earlier\n\t//this.range = Math.floor(this.range / tot_freq);\n\n\tthis.code  -= sym_low * this.range;\n\tthis.range *= sym_freq;\n\n\twhile (this.range < (1<<24)) {\n\t    this.range *= 256;\n\t    this.code = (this.code*256 + src.ReadByte());\n\t}\n    }\n\n    RangeShiftLow(dst) {\n\t// We know range is < (1<<24) as we got here.  We already have a\n\t// cached copy of 8 bits from low.  Is this correct, or does it need\n\t// fixing?  Possible scenarios.\n\t// 1. Low < 0xff000000 thus low+range < 0xffffffff and cache\n\t//    cannot possibly change.  Output cache and as many ffs as needed.\n\t// 2. We already detected an overflow in RangeEncode, setting carry.\n\t//    In this case output cached byte + 1 and any 00s needed.\n\t// 3. Neither case - range is low but we haven't yet detected if we're\n\t//    XXffffff or XY000000 scenario.  Increase counter for ff/00s.\n\n\tif (this.low < 0xff000000 | this.carry) {\n\t    // cached byte if no overflow, byte+1 otherwise\n\t    dst.WriteByte(this.cache + this.carry);\n\n\t    // Flush any tracked FFs (no carry) or 00s (carry).\n\t    while (this.FFnum) {\n\t\tdst.WriteByte(this.carry-1);\n\t\tthis.FFnum--;\n\t    }\n\n\t    // Take a copy of top byte ready for next flush\n\t    this.cache = this.low >>> 24;\n\t    this.carry = 0;\n\t} else {\n\t    this.FFnum++; // keep track of number of trailing ff/00 bytes to write\n\t}\n\tthis.low <<= 8;\n\tthis.low >>>= 0; // force to be +ve int\n    }\n\n    RangeEncode(dst, sym_low, sym_freq, tot_freq) {\n\tvar old_low = this.low\n\tthis.range  = Math.floor(this.range / tot_freq)\n\tthis.low   += sym_low * this.range;\n\tthis.low >>>= 0; // Truncate to +ve int so we can spot overflow\n\tthis.range *= sym_freq;\n\n\t// \"low + sym*range < old_low\" means we overflow; set carry.\n\t// NB: can this.low < old_low occur twice before range < (1<<24)?\n\t// We claim not, but prove it!\n\tif (this.low < old_low) {\n\t    if (this.carry != 0) console.log(\"ERROR: Multiple carry\")\n\t    this.carry = 1\n\t}\n\n\t// Renormalise if range gets too small\n\twhile (this.range < (1<<24)) {\n\t    this.range *= 256;\n\t    this.RangeShiftLow(dst);\n\t}\n    }\n\n    RangeFinishEncode(dst) {\n\tfor (var i = 0; i < 5; i++)\n\t    this.RangeShiftLow(dst)\n    }\n};\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// An adaptive probability model for encoding and decoding of symbols\n// within a given alphabet, using the range coder to get/put the\n// compressed data.\n\nconst MAX_FREQ = ((1<<16)-17)\nconst STEP     = 16\n\nmodule.exports = class ByteModel {\n    constructor(max_sym = 256) {\n\tthis.total_freq = max_sym;\n\tthis.max_sym = max_sym-1;\n\tthis.S = new Array\n\tthis.F = new Array\n\n\tfor (var i = 0; i <= this.max_sym; i++) {\n\t    this.S[i] = i;\n\t    this.F[i] = 1;\n\t}\n    }\n\n    ModelDecode(src, rc) {\n\t// Find symbol\n\tvar freq = rc.RangeGetFrequency(this.total_freq);\n\n\t// Linear scan to find cumulative frequency 'freq'\n\tvar acc = 0;\n\tvar x = 0;\n\twhile (acc + this.F[x] <= freq)\n\t    acc += this.F[x++];\n\n//\tfor (var acc = 0; (acc += this.F[x]) <= freq; x++)\n//\t    ;\n//\tacc -= this.F[x];\n\n\t// Update range coder\n\trc.RangeDecode(src, acc, this.F[x], this.total_freq);\n\n\t// Update model\n\tthis.F[x]       += STEP;\n\tthis.total_freq += STEP;\n\tif (this.total_freq > MAX_FREQ)\n\t    this.ModelRenormalise();\n\t\n\n\t// Keep symbols approximately frequency sorted\n\tvar sym = this.S[x];\n\tif (x > 0 && this.F[x] > this.F[x-1]) {\n\t    var tmp = this.F[x];\n\t    this.F[x] = this.F[x-1];\n\t    this.F[x-1] = tmp;\n\n\t    tmp = this.S[x];\n\t    this.S[x] = this.S[x-1];\n\t    this.S[x-1] = tmp;\n\t}\n\n\treturn sym;\n    }\n\n    ModelRenormalise() {\n\t// Halve all the frequencies, being careful not to hit zero\n\tthis.total_freq = 0;\n\tfor (var i = 0; i <= this.max_sym; i++) {\n\t    this.F[i] -= Math.floor(this.F[i] / 2);\n\t    this.total_freq += this.F[i];\n\t}\n    }\n\n    ModelEncode(dst, rc, sym) {\n\t// Find cumulative frequency\n\tvar acc = 0;\n\tfor (var x = 0; this.S[x] != sym; x++)\n\t    acc += this.F[x];\n\n\t// Encode\n\trc.RangeEncode(dst, acc, this.F[x], this.total_freq);\n\n\t// Update model\n\tthis.F[x]       += STEP;\n\tthis.total_freq += STEP;\n\tif (this.total_freq > MAX_FREQ) // FIXME x2\n\t    this.ModelRenormalise();\n\n\t// Keep symbols approximately frequency sorted\n\tvar sym = this.S[x];\n\tif (x > 0 && this.F[x] > this.F[x-1]) {\n\t    var tmp = this.F[x];\n\t    this.F[x] = this.F[x-1];\n\t    this.F[x-1] = tmp;\n\n\t    tmp = this.S[x];\n\t    this.S[x] = this.S[x-1];\n\t    this.S[x-1] = tmp;\n\t}\n    }\n};\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst IOStream = require(\"./iostream\");\nconst ByteModel = require(\"./byte_model\");\nconst RangeCoder = require(\"./arith_sh\");\n\n\n//----------------------------------------------------------------------\n// Main arithmetic entry function: decodes a compressed src and\n// returns the uncompressed buffer.\n\nfunction read_array(src, tab, size) {\n    var j = 0; // array value\n    var z = 0; // array index: tab[j]\n    var last = -1;\n\n    // Remove first level of run-length encoding\n    var R = new Array(1024) // runs\n    while (z < size) {\n\tvar run = src.ReadByte()\n\tR[j++] = run\n\tz += run\n\n\tif (run == last) {\n\t    var copy = src.ReadByte()\n\t    z += run * copy\n\t    while (copy--)\n\t\tR[j++] = run\n\t}\n\tlast = run\n    }\n\n    // Now expand runs in R to tab, noting 255 is max run\n    var i = 0\n    j = 0\n    z = 0\n    while (z < size) {\n\tvar run_len = 0\n\tdo {\n\t    var part = R[j++]\n\t    run_len += part\n\t} while (part == 255)\n\t\n\twhile (run_len--)\n\t    tab[z++] = i;\n\ti++\n    }\n}\n\nconst QMAX = 256\n\nconst FLAG_DEDUP  = 2\nconst FLAG_FLEN   = 4\nconst FLAG_SEL    = 8    // whether selector is used in context\nconst FLAG_QMAP   = 16\nconst FLAG_PTAB   = 32\nconst FLAG_DTAB   = 64\nconst FLAG_QTAB   = 128\n\nconst GFLAG_MULTI_PARAM = 1\nconst GFLAG_HAVE_STAB   = 2\nconst GFLAG_DO_REV      = 4\n\n// Compute a new context from our current state and qual q\nfunction fqz_update_ctx(params, state, q) {\n    var last = params.context\n    state.qctx = ((state.qctx << params.qshift) + params.qtab[q]); // >>> 0\n    last += ((state.qctx & ((1<<params.qbits)-1)) << params.qloc); // >>> 0\n\n    if (params.do_pos)\n\tlast += params.ptab[Math.min(state.p, 1023)] << params.ploc\n\n    if (params.do_delta) {\n\tlast += params.dtab[Math.min(state.delta, 255)] << params.dloc\n\t// Is it better to use q here or qtab[q]?\n\t// If qtab[q] we can map eg [a-z0-9A-Z]->0 ,->1 and have\n\t// delta being a token number count into comma separated lists?\n\tstate.delta += (state.prevq != q) ? 1 : 0\n\tstate.prevq = q\n    }\n\n    if (params.do_sel)\n\tlast += state.s << params.sloc\n\n    state.p--\n\n    return last & 0xffff\n}\n\nfunction decode_fqz_single_param(src) {\n    var p = {} // params\n    \n    // Load FQZ parameters\n    p.context = src.ReadUint16()\n    p.pflags  = src.ReadByte()\n\n    p.do_dedup  = p.pflags & FLAG_DEDUP\n    p.fixed_len = p.pflags & FLAG_FLEN\n    p.do_sel    = p.pflags & FLAG_SEL\n    p.do_qmap   = p.pflags & FLAG_QMAP\n    p.do_pos    = p.pflags & FLAG_PTAB\n    p.do_delta  = p.pflags & FLAG_DTAB\n    p.do_qtab   = p.pflags & FLAG_QTAB\n\n    p.max_sym = src.ReadByte()\n\n    var x = src.ReadByte()\n    p.qbits  = x>>4\n    p.qshift = x&15\n    x = src.ReadByte()\n    p.qloc = x>>4\n    p.sloc = x&15\n    x = src.ReadByte()\n    p.ploc = x>>4\n    p.dloc = x&15\n\n    // Qual map, eg to \"unbin\" Illumina qualities\n    p.qmap = new Array(256);\n    if (p.pflags & FLAG_QMAP) {\n\tfor (var i = 0; i < p.max_sym; i++)\n\t    p.qmap[i] = src.ReadByte()\n    } else {\n\t// Useful optimisation to speed up main loop\n\tfor (var i = 0; i < 256; i++)\n\t    p.qmap[i] = i;  // NOP\n    }\n\n    // Read tables\n    p.qtab = new Array(1024);\n    if (p.qbits > 0 && (p.pflags & FLAG_QTAB)) {\n\tread_array(src, p.qtab, 256)\n    } else {\n\t// Useful optimisation to speed up main loop\n\tfor (var i = 0; i < 256; i++)\n\t    p.qtab[i] = i;  // NOP\n    }\n\n    p.ptab = new Array(1024);\n    if (p.pflags & FLAG_PTAB)\n\tread_array(src, p.ptab, 1024);\n\n    p.dtab = new Array(256);\n    if (p.pflags & FLAG_DTAB)\n\tread_array(src, p.dtab, 256);\n\n    return p\n}\n\nfunction decode_fqz_params(src) {\n    var gparams = {\n\tmax_sym: 0\n    }\n\n    // Check fqz format version\n    var vers = src.ReadByte()\n    if (vers != 5) {\n\tconsole.error(\"Invalid FQZComp version number\");\n\treturn;\n    }\n\n    var gflags = src.ReadByte()\n    var nparam = (gflags & GFLAG_MULTI_PARAM) ? src.ReadByte() : 1\n    var max_sel = gflags.nparam > 1 ? gflags.nparam-1 : 0 // Note max_sel, not num_sel\n\n    var stab = new Array(256);\n    if (gflags & GFLAG_HAVE_STAB) {\n\tmax_sel = src.ReadByte()\n\tread_array(src, stab, 256);\n    } else {\n\tfor (var i = 0; i < nparam; i++)\n\t    stab[i] = i;\n\tfor (; i < 256; i++)\n\t    stab[i] = nparam-1;\n    }\n    gparams.do_rev = (gflags & GFLAG_DO_REV)\n    gparams.stab = stab\n    gparams.max_sel = max_sel\n\n    gparams.params = new Array(gparams.nparam)\n    for (var p = 0; p < nparam; p++) {\n\tgparams.params[p] = decode_fqz_single_param(src)\n\tif (gparams.max_sym < gparams.params[p].max_sym)\n\t    gparams.max_sym = gparams.params[p].max_sym\n    }\n\n    return gparams\n}\n\nfunction fqz_create_models(gparams) {\n    var model = {}\n\n    model.qual = new Array(1<<16)\n    for (var i = 0; i < (1<<16); i++)\n\tmodel.qual[i] = new ByteModel(gparams.max_sym+1) // +1 as max value not num. values\n\n    model.len = new Array(4)\n    for (var i = 0; i < 4; i++)\n\tmodel.len[i] = new ByteModel(256)\n\n    model.rev   = new ByteModel(2)\n    model.dup   = new ByteModel(2)\n\n    if (gparams.max_sel > 0)\n\tmodel.sel = new ByteModel(gparams.max_sel+1) // +1 as max value not num. values\n\n    return model\n}\n\n// Initialise a new record, updating state.\n// Returns 1 if dup, otherwise 0\nfunction decode_fqz_new_record(src, rc, gparams, model, state, rev) {\n    // Parameter selector\n    if (gparams.max_sel > 0) {\n\tstate.s = model.sel.ModelDecode(src, rc)\n    } else {\n\tstate.s = 0;\n    }\n    state.x = gparams.stab[state.s]\n\n    var params = gparams.params[state.x]\n\n    // Reset contexts at the start of each new record\n    if (params.fixed_len >= 0) {\n\t// Not fixed or fixed but first record\n\tvar len = model.len[0].ModelDecode(src, rc)\n\tlen |= model.len[1].ModelDecode(src, rc) << 8\n\tlen |= model.len[2].ModelDecode(src, rc) << 16\n\tlen |= model.len[3].ModelDecode(src, rc) << 24\n\tif (params.fixed_len > 0)\n\t    params.fixed_len = -len\n    } else {\n\tlen = -params.fixed_len\n    }\n    state.len = len\n\n    if (gparams.do_rev)\n\trev[state.rec] = model.rev.ModelDecode(src, rc)\n\n    state.is_dup = 0\n    if (params.pflags & FLAG_DEDUP) {\n\tif (model.dup.ModelDecode(src, rc))\n\t    state.is_dup = 1\n    }\n\n    state.p = len;  // number of remaining bytes in this record\n    state.delta = 0\n    state.qctx = 0\n    state.prevq = 0\n    state.rec++\n}\n\nfunction decode_fqz(src, q_lens) {\n    // Decode parameter block\n    var n_out = src.ReadUint7()\n    var gparams = decode_fqz_params(src)\n    if (!gparams) return\n    var params = gparams.params\n    var rev = new Array(q_lens.length)\n\n    // Create initial models\n    var model = fqz_create_models(gparams)\n\n    // Create our entropy encoder and output buffers\n    var rc = new RangeCoder(src)\n    rc.RangeStartDecode(src)\n    var output = new Buffer.allocUnsafe(n_out)\n\n    // Internal FQZ state\n    var state = {\n\tqctx:0,   // Qual-only sub-context\n\tprevq:0,  // Previous quality value\n\tdelta:0,  // Running delta (q vs prevq)\n\tp:0,      // Number of bases left in current record\n\ts:0,      // Current parameter selector value (0 if unused)\n\tx:0,      // \"stab\" tabulated copy of s\n\tlen:0,    // Length of current string\n\tis_dup:0, // This string is a duplicate of last\n\trec:0     // Record number\n    }\n\n    // The main decode loop itself\n    var i = 0     // position in output buffer\n    while (i < n_out) {\n\tif (state.p == 0) {\n\t    decode_fqz_new_record(src, rc, gparams, model, state, rev)\n\t    if (state.is_dup > 0) {\n\t\tif (model.dup.ModelDecode(src, rc)) {\n\t\t    // Duplicate of last line\n\t\t    for (var x = 0; x < len; x++)\n\t\t\toutput[i+x] = output[i+x-state.len]\n\t\t    i += state.len\n\t\t    state.p = 0\n\t\t    continue\n\t\t}\n\t    }\n\t    q_lens.push(state.len)\n\n\t    var params = gparams.params[state.x]\n\t    var last = params.context\n\t}\n\n\t// Decode the current quality (possibly mapped via qmap)\n\tvar Q = model.qual[last].ModelDecode(src, rc)\n\n\t//if (params.do_qmap)\n\t//    output[i++] = params.qmap[Q];\n\t//else\n\t//    output[i++] = Q\n\toutput[i++] = params.qmap[Q]; // optimised version of above\n\tlast = fqz_update_ctx(params, state, Q)\n    }\n\n    if (gparams.do_rev)\n\treverse_qualities(output, n_out, rev, q_lens)\n\n    return output;\n}\n\nfunction reverse_qualities(qual, qual_len, rev, len) {\n    var rec = 0\n    var i = 0\n    while (i < qual_len) {\n\tif (rev[rec]) {\n\t    var j = 0\n\t    var k = len[rec]-1\n\t    while (j < k) {\n\t\tvar tmp   = qual[i+j]\n\t\tqual[i+j] = qual[i+k]\n\t\tqual[i+k] = tmp\n\t\tj++\n\t\tk--\n\t    }\n\t}\n\n\ti += len[rec++];\n    }\n}\n\nfunction decode(src, q_lens) {\n    var stream = new IOStream(src);\n\n    //var n_out = stream.ReadUint32(); stream.ReadUint32(); // move to main\n\n    return decode_fqz(stream, q_lens);\n}\n    \n//----------------------------------------------------------------------\n// FQZComp encoder.\n\nfunction pick_fqz_params(src, q_lens, q_dirs, qhist) {\n    // Find cardinality of q_dirs\n    var qd_last = q_dirs[0];\n    for (var i = 0; i < q_dirs.length; i++)\n\tif (q_dirs[i] != qd_last)\n\t    break;\n    var qd_fixed = (i == q_dirs.length) ? 1 : 0\n\n    // Scan input to find number of symbols and max symbol\n    var nsym = 0\n    var max_sym = 0\n\n    // selector == 0: Assume one single input dataset\n    for (var i = 0; i < 256; i++)\n\tqhist[0][i] = 0;\n\n    var rec = 0;\n    var len = 0\n    for (var i = 0; i < src.length; i++) {\n\tif (len == 0) {\n\t    len = q_lens[rec < q_lens.length-1 ? rec++ : rec]\n\t}\n\tqhist[0][src[i]]++;\n\tlen--;\n    }\n    for (var i = 0; i < 256; i++) {\n\tif (!qhist[0][i])\n\t    continue;\n\tif (max_sym < i)\n\t    max_sym = i;\n\tnsym++;\n    }\n\n    var qshift = 5\n    var do_qmap = 0\n    // Reduced symbol frequencies implies lower qshift and\n    // a lookup table to go from qual to Q\n    if (nsym <= 16) {\n\tdo_qmap = 1 // based on qhist\n\tif (nsym <= 2)\n\t    qshift = 1\n\telse if (nsym <= 4)\n\t    qshift = 2\n\telse if (nsym <= 8)\n\t    qshift = 3\n\telse\n\t    qshift = 4\n    }\n\n//    // Two params and a 1-bit selector.\n//    // This is 1% overhead vs two data sets compressed independently.\n//    // It's 6.9% smaller than compressing both together with 1 param.\n//    if (0) return [{\n//\t// q4\n//\tqbits:     8,\n//\tqshift:    2,\n//\tqloc:      7,\n//\n//\tpbits:     7,\n//\tpshift:    1,\n//\tploc:      0,\n//\n//\tdbits:     0,\n//\tdshift:    0,\n//\tdloc:      0,\n//\n//      sbits:     0,\n//      sloc:      0,\n//\n//\t//sbits:     2,\n//\t//do_stab:   1,\n//\tsbits:     1,\n//\tdo_stab:   0,\n//\tcontext:   (0<<15),\n//\n//\tmax_sym:   36,\n//\tnsym:      4,\n//\n//\tdo_qmap:   1,\n//\tdo_dedup:  0,\n//\tfixed_len: 1,\n//\tdo_sel:  0,\n//\tdo_rev:    0,\n//\tdo_pos:    1,\n//\tdo_delta:  0,\n//\tdo_qtab:   0\n//    }, {\n//\t//q40\n//\tqbits:     9,\n//\tqshift:    5,\n//\tqloc:      7,\n//\n//\tpbits:     7,\n//\tpshift:    0,\n//\tploc:      0,\n//\n//\tdbits:     0,\n//\tdshift:    0,\n//\tdloc:      0,\n//\n//      sbits:     0,\n//      sloc:      0,\n//\n//\t//sbits:     2,\n//\t//do_stab:   1,\n//\tsbits:     1,\n//\tdo_stab:   0,\n//\tcontext:   (1<<15),\n//\n//\tmax_sym:   44,\n//\tnsym:      45,\n//\n//\tdo_qmap:   0,\n//\tdo_dedup:  0,\n//\tfixed_len: 1,\n//\tdo_sel:  0,\n//\tdo_rev:    0,\n//\tdo_pos:    1,\n//\tdo_delta:  0,\n//\tdo_qtab:   0\n//    }]\n\n    return [{qbits:     8+(qshift>4),\n\t     qshift:    qshift,\n\t     qloc:      7,\n\n\t     pbits:     7,\n\t     pshift:    q_lens[0] > 128 ? 1 : 0,\n\t     ploc:      0,\n\n\t     dbits:     qshift>4 ? 0 : 1,\n\t     dshift:    3,\n\t     dloc:      15,\n\n\n\t     // NB: Also useful as a way of embedding sel and doing sel\n\t     // specific contexts. Identical bar context. Eg 0<<15 or 1<<15.\n\t     sbits:     0,\n\t     sloc:      15,\n\t     do_stab:   0,\n\t     context:   (0<<15),\n\n\t     max_sym:   max_sym,\n\t     nsym:      nsym,\n\n\t     do_qmap:   do_qmap,\n\t     do_dedup:  0,\n\t     fixed_len: (q_lens.length == 1) ? 1 : 0,\n\t     do_sel:    0,\n\t     do_rev:    0,\n\t     do_pos:    1,\n\t     do_delta:  (qshift <= 4) ? 1 : 0,\n\t     do_qtab:   0,\n\n\t     // Override above with some attempt at using selectors\n\t     // when the q_dirs are specific and non-fixed.\n\t     qbits:     8+(qshift>4)-(qd_fixed==0),\n\t     sbits:     1,\n\t     sloc:      15-(qshift<=4), // read1 vs read2\n\t     do_stab:   1,\n\t     do_sel:    1,\n\t     \n//\t     // q4+dir: 7245769 with, 7353962 without. 1.5% saving\n//\t     qbits:     6,\n//\t     dbits:     2,\n//\t     dshift:    2,\n//\t     dloc:      13,\n//\t     sbits:     1,\n//\t     sloc:      15,\n//\t     do_stab:   1,\n//\t     do_sel:    1,\n\n\t     // with 20 bits of context, q40 = 31741545\n\t     // qbits 10, dbits 2, pbits 7, sbits 1\n\t    }]\n}\n\nfunction store_array(out, tab, size) {\n    var i = 0; // index into tab\n    var j = 0; // current value in tab[i]\n\n    var tmp1 = new Array(size*2);\n    var sz1 = 0;\n\n    // First level of RLE.  Replace all runs of 'j' values\n    // with run-lengths, including zeros for missing values.\n    // Eg 0 1 2 2 2 3 3 3 4 4 4 5 5 5 5   7 7\n    // to 1 1 3     3     3     4       0 2\n    while (i < size) {\n\t// Length of j^{th} element\n\tvar i_start = i\n\twhile (i < size && tab[i] == j)\n\t    i++;\n\tvar run_len = i - i_start\n\n\t// Encode run length to tmp array\n\tdo {\n\t    var r = Math.min(255, run_len)\n\t    tmp1[sz1++] = r\n\t    run_len -= r\n\t} while (r == 255)\n\tj++;\n    }\n\n    // Second round of RLE on our tmp array, using a different\n    // RLE algorithm.\n    // Eg 1 1    3 3  3 4 0 2\n    // to 1 1 +0 3 3 +1 4 0 2\n    var last = -1\n    var tmp2 = new Array(size*2)\n    var sz2 = 0\n    i = 0  // index into tmp1]\n    // k is used size of tmp1[]\n    while (i < sz1) {\n\tvar curr = tmp1[i++];\n\ttmp2[sz2++] = curr\n\tif (curr == last) {\n\t    var i_start = i;\n\t    while (i < sz1 && tmp1[i] == last && i - i_start < 255)\n\t\ti++;\n\t    tmp2[sz2++] = i - i_start;\n\t} else {\n\t    last = curr\n\t}\n    }\n\n    // Append 2nd RLE, tmp2, to out.\n    out.WriteData(tmp2, sz2)\n}\n\n\t\t\t\t     \n\n// q_lens is an array of quality lengths per record.\n// (If they're all the same, just set one value.)\nfunction encode_fqz_params(out, params, qhist, qtab, ptab, dtab, stab) {\n    var dsqr = [\n        0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,\n        4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5,\n        5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n        6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7\n    ]\n\n    for (var i = 0; i < params.length; i++)\n\tstab[i] = i; // 1 parameter set per selector value\n    for (; i < 256; i++)\n\tstab[i] = params.length-1;\n\n    // Store global meta-data\n    out.WriteByte(5);            // FQZ format number\n    var gflags = ((params.length > 1) ? GFLAG_MULTI_PARAM : 0)\n\t       | ((params[0].do_stab) ? GFLAG_HAVE_STAB   : 0)\n    out.WriteByte(gflags)\n\n    if (gflags & GFLAG_MULTI_PARAM)\n\tout.WriteByte(params.length) // Number of parameter blocks.\n\n    if (gflags & GFLAG_HAVE_STAB) {\n\tvar max_sel = 1<<params[0].sbits;\n\tif (max_sel > 0) max_sel--;\n\tout.WriteByte(max_sel)\n\tstore_array(out, stab, 256)\n    }\n\n    // Store per-param meta-data\n    for (var p = 0; p < params.length; p++) {\n\tout.WriteUint16(params[p].context)\n\tout.WriteByte((params[p].do_qtab  ? FLAG_QTAB  : 0) |  // FLAG\n\t\t      (params[p].do_delta ? FLAG_DTAB  : 0) |\n\t\t      (params[p].do_pos   ? FLAG_PTAB  : 0) |\n\t\t      (params[p].do_qmap  ? FLAG_QMAP  : 0) |\n\t\t      (params[p].do_sel   ? FLAG_SEL   : 0) |\n\t\t      (params[p].fixed_len? FLAG_FLEN  : 0) |\n\t\t      (params[p].do_dedup ? FLAG_DEDUP : 0))\n\tif (params[p].do_qmap)\n\t    out.WriteByte(params[p].nsym)\n\telse\n\t    out.WriteByte(params[p].max_sym)\n\tout.WriteByte((params[p].qbits << 4) | (params[p].qshift))\n\tout.WriteByte((params[p].qloc  << 4) | (params[p].sloc))\n\tout.WriteByte((params[p].ploc  << 4) | (params[p].dloc))\n\n\tif (params[p].do_qmap) {\n\t    params[p].max_sym = params[p].nsym\n\t    var n = 0;\n\t    for (var i = 0; i < 256; i++) {\n\t\tif (qhist[p][i]) {\n\t\t    out.WriteByte(i)\n\t\t    qhist[p][i] = n++;\n\t\t}\n\t    }\n\t    // Ensure we have all matched input params\n\t    for (; n < params[p].nsym; n++)\n\t\tout.WriteByte(0)\n\t} else {\n\t    //params[p].nsym = 255;\n\t    for (var i = 0; i < 256; i++)\n\t\tqhist[p][i] = i; // NOP\n\t}\n\n\tif (params[p].qbits > 0) {\n\t    //\t// Eg map 0-44 to a smaller range, to improve context usage.\n\t    //\t// Makes q40 test set go from 33596471 to 33450075 (-0.4%)\n\t    //\tparams[p].do_qtab = 1;\n\t    //\tfor (var j = i = 0; i < params[p].max_sym; i++) {\n\t    //\t    qtab[i]=j;\n\t    //\t    if ((i%3)!=0 | i >= 28) j++\n\t    //\t    console.log(\"qtab[\",i,\"]=\",qtab[i]);\n\t    //\t}\n\t    //\tfor (; i < 256; i++)\n\t    //\t    qtab[i] = qtab[params[p].max_sym-1]\n\n\t    for (var i = 0; i < 256; i++)\n\t\tqtab[p][i] = i; // NOP for now\n\n\t    if (params[p].do_qtab)\n\t\tstore_array(out, qtab[p], 256)\n\t}\n\n\tif (params[p].pbits > 0) {\n\t    for (var i = 0; i < 1024; i++)\n\t\tptab[p][i] = Math.min((1<<params[p].pbits)-1, i >> params[p].pshift)\n\n\t    store_array(out, ptab[p], 1024)\n\t}\n\n\tif (params[p].dbits > 0) {\n\t    for (var i = 0; i < 256; i++)\n\t\tif (dsqr[i] > (1<<params[p].dbits) - 1)\n\t\t    dsqr[i] = (1<<params[p].dbits) - 1\n\t    for (var i = 0; i < 256; i++)\n\t\tdtab[p][i] = dsqr[Math.min(dsqr.length-1, i >> params[p].dshift)]\n\n\t    store_array(out, dtab[p], 256)\n\t}\n    }\n\n    return out\n}\n\nfunction encode_fqz(out, src, q_lens, q_dirs, params, qhist, qtab, ptab, dtab, stab) {\n    //console.error(\"0:\",params[0])\n    //console.error(\"1:\",params[1])\n\n    var max_sel = 1<<params[0].sbits\n    if (max_sel > 0) max_sel--\n    var n_in = src.length\n\n    // Create the models\n    var max_sym = 0;\n    for (var p = 0; p < params.length; p++)\n\tif (max_sym < params[p].max_sym)\n\t    max_sym = params[p].max_sym;\n\n    var model_qual = new Array(1<<16)\n    for (var i = 0; i < (1<<16); i++)\n\tmodel_qual[i] = new ByteModel(max_sym+1)\n\n    var model_len = new Array(4)\n    for (var i = 0; i < 4; i++)\n\tmodel_len[i] = new ByteModel(256)\n\n    var model_rev    = new ByteModel(2)\n    var model_dup    = new ByteModel(2)\n    var model_sel    = new ByteModel(max_sel+1)\n\n    // Note: our JavaScript encoder doesn't have a way for reversing\n    // some quality strings, so we ignore do_rev for now.\n    var rc = new RangeCoder(src)\n\n    // The main encoding loop\n    var p = 0; // remaining position along current record\n    var i = 0; // index in src data\n    var rec = 0;\n\n    while (i < n_in) {\n\tif (p == 0) {\n\t    //var s = 0 // single non-mixed sample\n\t    var s = q_dirs[rec]\n\t    if (params[0].sbits > 0) {// FIXME: check All params[].do_stab / sbits must be identical\n\t\t//console.log(\"Ssel\", s)\n\t        model_sel.ModelEncode(out, rc, s)\n\t    }\n\t    var x = stab[s]\n\n\t    // Reset contexts at the statr of each new record\n\t    var len = q_lens[Math.min(q_lens.length-1, rec++)]\n\t    if (params[x].fixed_len) {\n\t\tif (params[x].fixed_len > 0) { // First length\n\t\t    //console.log(\"Len\", len)\n\t\t    model_len[0].ModelEncode(out, rc, len       & 0xff)\n\t\t    model_len[1].ModelEncode(out, rc, (len>>8)  & 0xff)\n\t\t    model_len[2].ModelEncode(out, rc, (len>>16) & 0xff)\n\t\t    model_len[3].ModelEncode(out, rc, (len>>24) & 0xff)\n\t\t    params[x].fixed_len = -1; // indicate we've stored it once\n\t\t}\n\t    } else {\n\t\t//console.log(\"len\", len)\n\t\tmodel_len[0].ModelEncode(out, rc, len       & 0xff)\n\t\tmodel_len[1].ModelEncode(out, rc, (len>>8)  & 0xff)\n\t\tmodel_len[2].ModelEncode(out, rc, (len>>16) & 0xff)\n\t\tmodel_len[3].ModelEncode(out, rc, (len>>24) & 0xff)\n\t    }\n\n\t    if (params[x].do_dedup)\n\t\tprocess.exit(1) // FIXME\n\n\t    p = len\n\t    var delta = 0\n\t    //var last  = 0\n\t    var last  = params[x].context\n\t    var qlast = 0\n\t    var q1    = 0\n\t}\n\n\t// Encode current quality\n\tvar q = src[i++]\n\tvar Q = qhist[x][q]\n\tmodel_qual[last].ModelEncode(out, rc, Q)\n\t//console.log(\"Ctx\",last,qhist[x][q])\n\n\t// Update contexts for next quality\n\tqlast = (qlast << params[x].qshift) + qtab[x][Q]\n\tlast  = params[x].context\n\tlast += (qlast & ((1<<params[x].qbits)-1)) << params[x].qloc\n\n\t// 46.6-48.6 billion cycles with ifs + \"<< params[x].?loc\" shifts\n\t// 47.3-47.3 billion cycles with ifs\n\t// 47.1-47.9 billion cycles without ifs\n\tif (params[x].pbits > 0)\n\t    last += ptab[x][Math.min(p, 1023)] << params[x].ploc\n\n\tif (params[x].dbits > 0) {\n\t    last += dtab[x][Math.min(delta, 255)] << params[x].dloc\n\t    delta += (q1 != Q) ? 1 : 0\n\t    q1 = Q\n\t}\n\n\tif (params[x].do_sel)\n\t    last += s << params[x].sloc\n\n\tlast = (last & 0xffff)\n\tp--\n    }\n\n    rc.RangeFinishEncode(out)\n    return out.buf.slice(0, out.pos)\n}\n\nfunction encode(src, q_lens, q_dirs) {\n    var qhist = new Array(2)\n    var qtab  = new Array(2)\n    var ptab  = new Array(2)\n    var dtab  = new Array(2)\n    var stab  = new Array(256)\n\n    for (var s = 0; s < 2; s++) {\n        qhist[s] = new Array(256)\n        qtab[s]  = new Array(256)\n        ptab[s]  = new Array(1024) \n        dtab[s]  = new Array(256)\n    }\n\n    var out = new IOStream(\"\", 0, src.length*1.1 + 100); // FIXME: guestimate worst case\n\n    out.WriteUint7(src.length);\n    var params = pick_fqz_params(src, q_lens, q_dirs, qhist)\n    var out = encode_fqz_params(out, params, qhist, qtab, ptab, dtab, stab)\n    return encode_fqz(out, src, q_lens, q_dirs, params, qhist, qtab, ptab, dtab, stab)\n}\n\nmodule.exports = { decode, encode }\n","/*\n * Copyright (c) 2020 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// This is an interface to the htscodecs reference implementation of\n// the CRAM 3.1 codecs.\n\n// This JavaScript file is not part of the reference implementation\n// and is simply and interface to get a consistent interface for cram-js.\n\n\"use strict\";\n\nvar r4x8    = require('./rans');\nvar r4x16   = require('./rans4x16');\nvar arith   = require('./arith_gen');\nvar fqzcomp = require('./fqzcomp');\nvar tok3    = require('./tok3');\n\nfunction r4x8_uncompress(inputBuffer, outputBuffer) {\n    r4x8.decode(inputBuffer).copy(outputBuffer, 0, 0);\n}\n\nfunction r4x16_uncompress(inputBuffer, outputBuffer) {\n    r4x16.decode(inputBuffer).copy(outputBuffer, 0, 0);\n}\n\nfunction arith_uncompress(inputBuffer, outputBuffer) {\n    arith.decode(inputBuffer).copy(outputBuffer, 0, 0);\n}\n\nfunction fqzcomp_uncompress(inputBuffer, outputBuffer) {\n    var q_lens = new Array\n    fqzcomp.decode(inputBuffer, q_lens).copy(outputBuffer, 0, 0);\n}\n\nfunction tok3_uncompress(inputBuffer, outputBuffer) {\n    // Returns in string form instead of buffer\n    var out = tok3.decode(inputBuffer, 0, '\\0');\n    Buffer.from(out, 'binary').copy(outputBuffer, 0, 0);\n}\n\nmodule.exports = {\n  r4x8_uncompress:    r4x8_uncompress,\n  r4x16_uncompress:   r4x16_uncompress,\n  arith_uncompress:   arith_uncompress,\n  fqzcomp_uncompress: fqzcomp_uncompress,\n  tok3_uncompress:    tok3_uncompress,\n};\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// Turn a buffer into a fake stream with get / put commands.\n// This enables up to closely match the published pseudocode.\nmodule.exports = class IOStream {\n    constructor(buf, start_pos = 0, size = 0) {\n\tif (size != 0) {\n\t    this.buf = Buffer.allocUnsafe(size)\n\t    this.length = size\n\t} else {\n\t    this.buf = buf\n\t    this.length = buf.length\n\t}\n\tthis.pos = start_pos\n    }\n\n    // ----------\n    // Reading\n    EOF() {\n\treturn this.pos >= this.length\n    }\n\n    ReadData(len) {\n\tvar A = this.buf.slice(this.pos, this.pos+len)\n\tthis.pos += len;\n\treturn A\n    }\n\n    ReadByte() {\n\tconst b = this.buf[this.pos]\n\tthis.pos++\n\treturn b\n    }\n\n    ReadChar() {\n\tconst b = this.buf[this.pos]\n\tthis.pos++\n\treturn String.fromCharCode(b)\n    }\n\n    ReadUint16() {\n\tvar i = this.ReadByte()\n\ti |= this.ReadByte()<<8\n\treturn i\n    }\n\n    ReadUint32() {\n\tconst i = this.buf.readInt32LE(this.pos)\n\tthis.pos += 4\n\treturn i\n    }\n\n    // nul terminated string\n    ReadString() {\n\tvar s = \"\"\n\tdo {\n\t    var b = this.buf[this.pos++]\n\t    if (b)\n\t\ts += String.fromCharCode(b)\n\t} while (b)\n\treturn s\n    }\n\n//    ReadUint7() {\n//\t// Variable sized unsigned integers\n//\tvar i = 0;\n//\tvar s = 0;\n//\tdo {\n//\t    var c = this.ReadByte();\n//\t    i = i | ((c & 0x7f)<<s);\n//\t    s += 7;\n//\t} while ((c & 0x80))\n//\n//\treturn i;\n//    }\n\n    ReadUint7() {\n\t// Variable sized unsigned integers\n\tvar i = 0;\n\tdo {\n\t    var c = this.ReadByte();\n\t    i = (i<<7) | (c & 0x7f)\n\t} while ((c & 0x80))\n\n\treturn i;\n    }\n\n    ReadITF8() {\n\tvar i = this.buf[this.pos];\n\tthis.pos++;\n\n\t//process.stderr.write(\"i=\"+i+\"\\n\");\n\n\tif (i >= 0xf0) {\n\t    // 1111xxxx => +4 bytes\n\t    i = (i & 0x0f) << 28;\n\t    i += (this.buf[this.pos+0] << 20)\n\t      +  (this.buf[this.pos+1] << 12)\n\t      +  (this.buf[this.pos+2] <<  4)\n\t      +  (this.buf[this.pos+3] >>  4);\n\t    this.pos += 4;\n\t    //process.stderr.write(\"  4i=\"+i+\"\\n\");\n\t} else if (i >= 0xe0) {\n\t    // 1110xxxx => +3 bytes\n\t    i = (i & 0x0f) << 24;\n\t    i += (this.buf[this.pos+0] << 16)\n\t      +  (this.buf[this.pos+1] <<  8)\n\t      +  (this.buf[this.pos+2] <<  0);\n\t    this.pos += 3;\n\t    //process.stderr.write(\"  3i=\"+i+\"\\n\");\n\t} else if (i >= 0xc0) {\n\t    // 110xxxxx => +2 bytes\n\t    i = (i & 0x1f) << 16;\n\t    i += (this.buf[this.pos+0] << 8)\n\t      +  (this.buf[this.pos+1] << 0);\n\t    this.pos += 2;\n\t    //process.stderr.write(\"  2i=\"+i+\"\\n\");\n\t} else if (i >= 0x80) {\n\t    // 10xxxxxx => +1 bytes\n\t    i = (i & 0x3f) << 8;\n\t    i += this.buf[this.pos];\n\t    this.pos++;;\n\t    //process.stderr.write(\"  1i=\"+i+\"\\n\");\n\t} else {\n\t    // 0xxxxxxx => +0 bytes\n\t}\n\n\treturn i;\n    }\n\n    // ----------\n    // Writing\n    WriteByte(b) {\n\tthis.buf[this.pos++] = b\n    }\n\n    WriteChar(b) {\n\tthis.buf[this.pos++] = b.charCodeAt(0)\n    }\n\n    WriteString(str) {\n\tfor (var i = 0; i < str.length; i++)\n\t    this.buf[this.pos++] = str.charCodeAt(i)\n\tthis.buf[this.pos++] = 0\n    }\n\n    WriteData(buf, len) {\n\tfor (var i = 0; i < len; i++)\n\t    this.buf[this.pos++] = buf[i]\n    }\n\n    WriteStream(stream) {\n\tthis.WriteData(stream.buf, stream.pos)\n    }\n\n    WriteUint16(u) {\n\t//this.buf.writeInt16LE(u, this.pos);\n\tthis.WriteByte(u&0xff)\n\tthis.WriteByte((u>>8)&0xff)\n    }\n\n    WriteUint32(u) {\n\tthis.buf.writeInt32LE(u, this.pos);\n\tthis.pos += 4;\n    }\n\n//    WriteUint7(i) {\n//\tdo {\n//\t    this.WriteByte((i & 0x7f) | ((i > 0x80) << 7));\n//\t    i >>= 7;\n//\t} while (i > 0);\n//    }\n\n    WriteUint7(i) {\n\tvar s = 0;\n\tvar X = i;\n\tdo {\n\t    s += 7;\n\t    X >>= 7;\n\t} while (X > 0);\n\n\tdo {\n\t    s -= 7;\n\t    this.WriteByte(((i >> s) & 0x7f) + ((s > 0) << 7))\n\t} while (s > 0);\n    }\n\n    WriteITF8(i) {\n\t// Horrid, ITF8 is unsigned, but we still write signed into it\n\tif (i < 0)\n\t    i = (1<<32) + i\n\n\tif (i <= 0x0000007f) {\n\t    // 1 byte\n\t    this.buf[this.pos++] = i\n\t} else if (i <= 0x00003fff) {\n\t    // 2 bytes\n\t    this.buf[this.pos++] = 0x80 | Math.floor(i / 256)\n\t    this.buf[this.pos++] = i & 0xff;\n\t} else if (i < 0x0001ffff) {\n\t    // 3 bytes\n\t    this.buf[this.pos++] = 0xc0 | Math.floor(i / 65536)\n\t    this.buf[this.pos++] = Math.floor(i / 256) & 0xff\n\t    this.buf[this.pos++] = i & 0xff;\n\t} else if (i < 0x0fffffff) {\n\t    // 4 bytes\n\t    this.buf[this.pos++] = 0xe0 | Math.floor(i / 16777216)\n\t    this.buf[this.pos++] = Math.floor(i / 65536) & 0xff\n\t    this.buf[this.pos++] = Math.floor(i /   256) & 0xff\n\t    this.buf[this.pos++] = i & 0xff;\n\t} else {\n\t    // 5 bytes; oddly using 4.5 bytes\n\t    this.buf[this.pos++] = 0xf0 | Math.floor(i / 268435456)\n\t    this.buf[this.pos++] = Math.floor(i / 1048576) & 0xff\n\t    this.buf[this.pos++] = Math.floor(i /    4096) & 0xff\n\t    this.buf[this.pos++] = Math.floor(i /       4) & 0xff\n\t    this.buf[this.pos++] = i & 0x0f;\n\t}\n    }\n\n    // ----------\n    // Writing from end of buffer going backwards.\n    // Needed by rANS codec.\n    WriteByteNeg(b) {\n\tthis.buf[--this.pos] = b;\n    }\n};\n","/*\n * Copyright (c) 2019-2020 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst IOStream = require(\"./iostream\");\n\n//----------------------------------------------------------------------\n// rANS primitives itself\n//\n// RansGet* is decoder side\n\nfunction RansGetCumulativeFreq(R) {\n    return R & 0xfff;\n}\n\nfunction RansGetSymbolFromFreq(C, f) {\n    // NOTE: Inefficient.\n    // In practice we would implement this via a precomputed\n    // lookup table C2S[f]; see RansBuildC2S below.\n    var s = 0;\n    while (f >= C[s+1])\n\ts++;\n\n    return s;\n}\n\nfunction RansBuildC2S(C) {\n    var C2S = new Array(0x1000);\n    var s = 0;\n    for (var f = 0; f < 0x1000; f++) {\n\twhile (f >= C[s+1])\n\t    s++;\n\tC2S[f] = s;\n    }\n    return C2S;\n}\n\nfunction RansAdvanceStep(R, c, f) {\n    return f * (R >> 12) + (R & 0xfff) - c;\n}\n\nfunction RansRenorm(src, R) {\n    while (R < (1<<23))\n\tR = (R << 8) + src.ReadByte();\n\n    return R;\n}\n\n\n// RanEnc* is for encoder\nfunction RansEncInit() {\n    return 1<<23;\n}\n\nfunction RansEncFlush(R, dst) {\n    dst.WriteByteNeg((R >> 24) & 0xff);\n    dst.WriteByteNeg((R >> 16) & 0xff);\n    dst.WriteByteNeg((R >>  8) & 0xff);\n    dst.WriteByteNeg((R >>  0) & 0xff);\n}\n\nfunction RansEncRenorm(R, dst, freq, scale_bits) {\n    var R_max = (((1 << 23) >> scale_bits) << 8) * freq;\n\n    while (R >= R_max) {\n\tdst.WriteByteNeg(R & 0xff);\n\tR >>= 8;\n    }\n    return R;\n}\n\n// Puts a symbol with frequency freq, cumulative freq start\n// and total freq 1<<scale_bits.\n//\n// Note with static probabilities, /freq and %freq could be\n// precomputed via multiplies and shifts.\nfunction RansEncPut(R, dst, start, freq, scale_bits) {\n    var scale = 1<<scale_bits;\n    R = RansEncRenorm(R, dst, freq, scale_bits);\n    R = (Math.floor(R / freq) << scale_bits) + (R % freq) + start;\n    return R;\n}\n\n//----------------------------------------------------------------------\n// Main rANS entry function: decodes a compressed src and\n// returns the uncompressed buffer.\nfunction decode(src) {\n    var stream = new IOStream(src);\n    var order = stream.ReadByte();\n    var n_in  = stream.ReadUint32();\n    var n_out = stream.ReadUint32();\n\n    if (order == 0) {\n\treturn RansDecode0(stream, n_out)\n    } else {\n\treturn RansDecode1(stream, n_out)\n    }\n}\n\nfunction encode(src, order) {\n    //var stream = new IOStream(src);\n    //var n_in  = stream.ReadUint32();\n    //var n_out = stream.ReadUint32();\n\n    if (order == 0) {\n\treturn RansEncode0(src)\n    } else {\n\treturn RansEncode1(src)\n    }\n}\n\n//----------------------------------------------------------------------\n// Order-0 decoder\n\n// Decode a single table of order-0 frequences,\n// filling out the F and C arrays.\nfunction ReadFrequencies0(src, F, C) {\n    // Initialise; not in the specification - implicit?\n    for (var i = 0; i < 256; i++)\n\tF[i] = 0;\n\n    var sym = src.ReadByte();\n    var last_sym = sym;\n    var rle = 0;\n\n    // Read F[]\n    do {\n\tvar f = src.ReadITF8();\n\tF[sym] = f;\n\tif (rle > 0) {\n\t    rle--;\n\t    sym++;\n\t} else {\n\t    sym = src.ReadByte();\n\t    if (sym == last_sym+1)\n\t\trle = src.ReadByte();\n\t}\n\tlast_sym = sym;\n    } while (sym != 0);\n\n    // Compute C[] from F[]\n    C[0] = 0;\n    for (var i = 0; i <= 255; i++)\n\tC[i+1] = C[i] + F[i];\n}\n\nfunction RansDecode0(src, nbytes) {\n    // Decode frequencies\n    var F = new Array(256);\n    var C = new Array(256);\n    ReadFrequencies0(src, F, C);\n\n    // Fast lookup to avoid slow RansGetSymbolFromFreq\n    var C2S = RansBuildC2S(C);\n\n    // Initialise rANS state\n    var R = new Array(4);\n    for (var i = 0; i < 4; i++)\n\tR[i] = src.ReadUint32();\n\n    // Main decode loop\n    var output = new Buffer.allocUnsafe(nbytes);\n    for (var i = 0; i < nbytes; i++) {\n\tvar i4 = i%4;\n\tvar f = RansGetCumulativeFreq(R[i4]);\n\tvar s = C2S[f]; // Equiv to RansGetSymbolFromFreq(C, f);\n\n\toutput[i] = s;\n\tR[i4] = RansAdvanceStep(R[i4], C[s], F[s]);\n\tR[i4] = RansRenorm(src, R[i4]);\n    }\n\n    return output;\n}\n\n//----------------------------------------------------------------------\n// Order-0 encoder\n\nfunction BuildFrequencies0(src, F) {\n    for (var i = 0; i < 256; i++)\n\tF[i] = 0;\n\n    for (var i = 0; i < src.length; i++)\n\tF[src[i]]++;\n}\n\nfunction NormaliseFrequencies0(F) {\n    // Compute total\n    var tot = 0;\n    for (var i = 0; i < 256; i++)\n\ttot += F[i];\n\n    // Scale total of frequencies to max\n    const max = (1<<12);\n    var scale = max / tot;\n    do {\n\tvar max_val = 0;\n\tvar max_idx = 0;\n\tvar renorm = 0;\n\ttot = 0;\n\tfor (var i = 0; i < 256; i++) {\n\t    if (F[i] == 0)\n\t\tcontinue\n\n\t    if (max_val < F[i]) {\n\t\tmax_val = F[i]\n\t\tmax_idx = i\n\t    }\n\n\t    F[i] = Math.floor(F[i] * scale);\n\t    if (F[i] == 0)\n\t\tF[i] = 1;\n\n\t    tot += F[i];\n\t}\n\n\t// Adjust new tot to ensure it matches.\n\tif (tot < max) {\n\t    // Too low, boost the most common symbol\n\t    F[max_idx] += max-tot;\n\t} else if (tot-max < F[max_idx]/2 && F[max_idx] > 2) {\n\t    // Too high, reduce the common symbol\n\t    F[max_idx] -= tot-max;\n\t} else if (tot != max) {\n\t    // Much too high, fudge scale and try again.\n\t    scale = scale * 0.99\n\t    renorm = 1;\n\t}\n    } while (renorm)\n}\n\nfunction WriteFrequencies0(out, F) {\n    var rle = 0;\n    for (var i = 0; i < 256; i++) {\n\tif (!F[i])\n\t    continue\n\n\t// Output Symbol if needed and Frequency\n\tif (rle > 0)\n\t    rle--\n\telse {\n\t    out.WriteByte(i)\n\n\t    if (i > 0 && F[i-1] > 0) {\n\t\t// We've encoded two symbol frequencies in a row.\n\t\t// How many more are there?  Store that count so\n\t\t// we can avoid writing consecutive symbols.\n\t\tfor (rle = i+1; rle<256 && F[rle]; rle++)\n\t\t    ;\n\t\trle -= i+1;\n\n\t\tout.WriteByte(rle);\n\t    }\n\t}\n\n\tout.WriteITF8(F[i])\n    }\n    out.WriteByte(0);\n}\n\nfunction RansEncode0(src) {\n    const nbytes = src.length\n    var output = new IOStream(\"\", 0, 257*3+9);\n\n    output.WriteByte(0);   // Order 0\n    output.WriteUint32(0); // compressed size: correct later\n    output.WriteUint32(0); // uncompressed size: correct later\n\n    // Compute frequencies\n    var F = new Array(256)\n    BuildFrequencies0(src, F)\n    NormaliseFrequencies0(F);\n    WriteFrequencies0(output, F);\n\n    // Compute cumulative frequencies\n    var C = new Array(256)\n    C[0] = 0;\n    for (var i = 1; i < 256; i++)\n\tC[i] = C[i-1] + F[i-1];\n\n    // Initialise rANS state\n    var R = new Array(4);\n    for (var i = 0; i < 4; i++)\n\tR[i] = RansEncInit();\n\n    var alloc = Math.floor(nbytes*1.05+100)\n    var rans_out = new IOStream(\"\", alloc, alloc)\n\n    // Main encode loop\n    for (var i = nbytes-1; i >= 0; i--)\n\tR[i%4] = RansEncPut(R[i%4], rans_out, C[src[i]], F[src[i]], 12);\n\n    for (var i = 3; i >= 0; i--)\n\tRansEncFlush(R[i], rans_out);\n\n    // Stitch blocks together into final output buffer\n    var freq_tab = output.pos\n    output.buf.writeInt32LE(freq_tab-9 + (rans_out.length - rans_out.pos), 1);\n    output.buf.writeInt32LE(nbytes, 5);\n\n    return Buffer.concat([output.buf.slice(0, output.pos),\n\t\t\t  rans_out.buf.slice(rans_out.pos, rans_out.length)],\n\t\t\t output.pos + rans_out.length - rans_out.pos);\n}\n\n//----------------------------------------------------------------------\n// Order-1 decoder\n\n// Decode a table of order-1 frequences,\n// filling out the F and C arrays.\nfunction ReadFrequencies1(src, F, C) {\n    // Initialise; not in the specification - implicit?\n    for (var i = 0; i < 256; i++) {\n\tF[i] = new Array(256);\n\tC[i] = new Array(256);\n\tfor (var j = 0; j < 256; j++)\n\t    F[i][j] = 0;\n    }\n\n    var sym = src.ReadByte();\n    var last_sym = sym;\n    var rle = 0;\n\n    // Read F[]\n    do {\n\tReadFrequencies0(src, F[sym], C[sym]);\n\n\tif (rle > 0) {\n\t    rle--;\n\t    sym++;\n\t} else {\n\t    sym = src.ReadByte();\n\t    if (sym == last_sym+1)\n\t\trle = src.ReadByte();\n\t}\n\tlast_sym = sym;\n    } while (sym != 0);\n}\n\nfunction RansDecode1(src, nbytes) {\n    // Decode frequencies\n    var F = new Array(256);\n    var C = new Array(256);\n    ReadFrequencies1(src, F, C);\n\n    // Fast lookup to avoid slow RansGetSymbolFromFreq\n    var C2S = new Array(256);\n    for (var i = 0; i < 256; i++)\n\tC2S[i] = RansBuildC2S(C[i]);\n\n    // Initialise rANS state\n    var R = new Array(4);\n    var L = new Array(4);\n    for (var j = 0; j < 4; j++) {\n\tR[j] = src.ReadUint32();\n\tL[j] = 0;\n    }\n\n    // Main decode loop\n    var output = new Buffer.allocUnsafe(nbytes);\n    var nbytes4 = Math.floor(nbytes/4);\n    for (var i = 0; i < nbytes4; i++) {\n\tfor (var j = 0; j < 4; j++) {\n\t    var f = RansGetCumulativeFreq(R[j]);\n\n\t    //var s = RansGetSymbolFromFreq(C[L[j]], f);\n\t    var s = C2S[L[j]][f]; // Precomputed version of above\n\n\t    output[i+j*nbytes4] = s;\n\t    R[j] = RansAdvanceStep(R[j], C[L[j]][s], F[L[j]][s]);\n\t    R[j] = RansRenorm(src, R[j]);\n\t    L[j] = s;\n\t}\n    }\n\n    // Now deal with the remainder if buffer size is not a multiple of 4,\n    // using rANS state 3 exclusively.  (It'd have been nice to have\n    // designed this to just act as if we kept going with a bail out.)\n    i = 4*i;\n    while (i < nbytes) {\n\tvar f = RansGetCumulativeFreq(R[3]);\n\tvar s = RansGetSymbolFromFreq(C[L[3]], f);\n\toutput[i++] = s;\n\tR[3] = RansAdvanceStep(R[3], C[L[3]][s], F[L[3]][s]);\n\tR[3] = RansRenorm(src, R[3]);\n\tL[3] = s;\n    }\n\n    return output;\n}\n\n//----------------------------------------------------------------------\n// Order-1 encoder\n\nfunction BuildFrequencies1(src, F, F0) {\n    for (var i = 0; i < 256; i++) {\n\tF0[i] = 0;\n\tfor (var j = 0; j < 256; j++)\n\t    F[i][j] = 0;\n    }\n\n    var last = 0;\n    for (var i = 0; i < src.length; i++) {\n\tF0[src[i]]++;\n\tF[last][src[i]]++;\n\t//F[last][src[i]]++;\n\tlast = src[i];\n    }\n\n    // Also accept we'll be starting at 4 points, not just byte 0\n    F[0][src[1*(src.length >> 2)]]++;\n    F[0][src[2*(src.length >> 2)]]++;\n    F[0][src[3*(src.length >> 2)]]++;\n    F0[0] += 3;\n}\n\nfunction NormaliseFrequencies1(F, F0) {\n    for (var i = 0; i < 256; i++)\n\tif (F0[i])\n\t    NormaliseFrequencies0(F[i])\n}\n\nfunction WriteFrequencies1(out, F, F0) {\n    var rle = 0;\n    var last_sym = 0;\n\n    for (var i = 0; i < 256; i++) {\n\tif (!F0[i])\n\t    continue\n\n\t// Output Symbol if needed and Frequency\n\tif (rle > 0)\n\t    rle--\n\telse {\n\t    out.WriteByte(i)\n\n\t    if (i > 0 && F0[i-1] > 0) {\n\t\tfor (rle = i+1; rle<256 && F0[rle]; rle++)\n\t\t    ;\n\t\trle -= i+1;\n\t\tout.WriteByte(rle);\n\t    }\n\t}\n\n\tWriteFrequencies0(out, F[i]);\n    }\n    out.WriteByte(0);\n}\n\nfunction RansEncode1(src) {\n    const nbytes = src.length;\n    var output = new IOStream(\"\", 0, 257*257*3+9);\n\n    output.WriteByte(1);   // Order 0\n    output.WriteUint32(0); // compressed size: correct later\n    output.WriteUint32(0); // uncompressed size: correct later\n\n    // Compute frequencies\n    var F0 = new Array(256)\n    var F = new Array(256)\n    var C = new Array(256)\n    for (var i = 0; i < 256; i++) {\n\tF[i] = new Array(256);\n\tC[i] = new Array(256);\n    }\n\n    BuildFrequencies1(src, F, F0)\n    NormaliseFrequencies1(F, F0);\n    WriteFrequencies1(output, F, F0);\n\n    // Compute cumulative frequencies\n    for (var i = 0; i < 256; i++) {\n\tif (!F0[i])\n\t    continue;\n\n\tC[i][0] = 0;\n\tfor (var j = 1; j < 256; j++)\n\t    C[i][j] = C[i][j-1] + F[i][j-1];\n    }\n\n    // Initialise rANS state\n    var R = new Array(4);\n    var L = new Array(4);\n    for (var j = 0; j < 4; j++) {\n\tR[j] = RansEncInit();\n\tL[j] = 0;\n    }\n    var rans_out = new IOStream(\"\", nbytes, nbytes);\n\n    // We have 4 rans codecs running in parallel on its own 1/4tr of buffer\n    var nbytes4 = Math.floor(nbytes/4);\n    var idx = new Array(4);\n    var last = new Array(4)\n    for (var j = 0; j < 4; j++) {\n\tidx[j] = (j+1)*nbytes4 - 2;\n\tlast[j] = src[idx[j]+1]\n    }\n\n    // Deal with the remainder if not a multiple of 4\n    last[3] = src[nbytes-1];\n    for (var i = nbytes-2; i > 4*nbytes4-2; i--) {\n\tR[3] = RansEncPut(R[3], rans_out, C[src[i]][last[3]], F[src[i]][last[3]], 12);\n\tlast[3] = src[i];\n    }\n\n    // Main encode loop\n    while (idx[0] >= 0) {\n\tfor (var j = 3; j >= 0; j--) {\n\t    var s = src[idx[j]]\n\t    R[j] = RansEncPut(R[j], rans_out, C[s][last[j]], F[s][last[j]], 12);\n\t    last[j] = s;\n\t    idx[j]--;\n\t}\n    }\n\n    for (var j = 3; j >= 0; j--) {\n        R[j] = RansEncPut(R[j], rans_out, C[0][last[j]], F[0][last[j]], 12)\n    }\n\n    for (var i = 3; i >= 0; i--)\n\tRansEncFlush(R[i], rans_out);\n\n    // Stitch blocks together into final output buffer\n    var freq_tab = output.pos;\n    output.buf.writeInt32LE(freq_tab-9 + (rans_out.length - rans_out.pos), 1);\n    output.buf.writeInt32LE(nbytes, 5);\n\n    return Buffer.concat([output.buf.slice(0, output.pos),\n\t\t\t  rans_out.buf.slice(rans_out.pos, rans_out.length)],\n\t\t\t output.pos + rans_out.length - rans_out.pos);\n}\n\nmodule.exports = { decode, encode }\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst IOStream = require(\"./iostream\");\n\n//----------------------------------------------------------------------\n// rANS primitives itself\n//\n// RansGet* is decoder side\n\nfunction RansGetCumulativeFreq(R, bits) {\n    return R & ((1<<bits)-1)\n}\n\nfunction RansGetSymbolFromFreq(C, f) {\n    // NOTE: Inefficient.\n    // In practice we would implement this via a precomputed\n    // lookup table C2S[f]; see RansBuildC2S below.\n    var s = 0;\n    while (f >= C[s+1])\n\ts++;\n\n    //console.error(f, C, s)\n\n    return s;\n}\n\nfunction RansBuildC2S(C, bits) {\n    var max = 1<<bits\n    var C2S = new Array(max);\n    var s = 0;\n    for (var f = 0; f < max; f++) {\n\twhile (f >= C[s+1])\n\t    s++;\n\tC2S[f] = s;\n    }\n    return C2S;\n}\n\nfunction RansAdvanceStep(R, c, f, bits) {\n    return f * (R >> bits) + (R & ((1<<bits)-1)) - c;\n}\n\nfunction RansRenorm(src, R) {\n    if (R < (1<<15))\n\tR = (R << 16) + src.ReadUint16();\n\n    return R;\n}\n\n\n// RanEnc* is for encoder\nfunction RansEncInit() {\n    return 1<<15;\n}\n\nfunction RansEncFlush(R, dst) {\n    dst.WriteByteNeg((R >> 24) & 0xff);\n    dst.WriteByteNeg((R >> 16) & 0xff);\n    dst.WriteByteNeg((R >>  8) & 0xff);\n    dst.WriteByteNeg((R >>  0) & 0xff);\n}\n\nfunction RansEncRenorm(R, dst, freq, scale_bits) {\n    //var R_max = (((1 << 15) >> scale_bits) << 16) * freq;\n    var R_max = (1 << (31-scale_bits)) * freq\n\n    while (R >= R_max) {\n\tdst.WriteByteNeg((R>>8) & 0xff);\n\tdst.WriteByteNeg(R & 0xff);\n\tR >>= 16;\n    }\n    return R;\n}\n\n// Puts a symbol with frequency freq, cumulative freq start\n// and total freq 1<<scale_bits.\n//\n// Note with static probabilities, /freq and %freq could be\n// precomputed via multiplies and shifts.\nfunction RansEncPut(R, dst, start, freq, scale_bits) {\n    var scale = 1<<scale_bits;\n    R = RansEncRenorm(R, dst, freq, scale_bits);\n    R = (Math.floor(R / freq) << scale_bits) + (R % freq) + start;\n    return R;\n}\n\n\n//----------------------------------------------------------------------\n// Run length encoding\nfunction EncodeRLE(src) {\n    // Step 1: find which symbols benefit from RLE\n    var L = new Array(256)\n    for (var i = 0; i < 256; i++)\n\tL[i] = 0\n\n    var last = -1\n    for (var i = 0; i < src.length; i++) {\n\tL[src[i]] += src[i] == last ? 1 : -1\n\tlast = src[i]\n    }\n\n    var nrle = 0;\n    for (var i = 0; i < 256; i++)\n\tif (L[i] > 0)\n\t    nrle++\n\n    if (!nrle) {\n\t// Format cannot cope with zero RLE symbols, so pick one!\n\tnrle = 1;\n\tL[0] = 1;\n    }\n\n    // Start meta-data as list of symbols to RLE\n    var meta = new IOStream(\"\", 0, nrle+1 + src.length)\n    meta.WriteByte(nrle)\n    for (var i = 0; i < 256; i++)\n\tif (L[i] > 0)\n\t    meta.WriteByte(i)\n\n    // Step 2: Now apply RLE itself\n    var data = new Buffer.allocUnsafe(src.length)\n    var dpos = 0\n    for (var i = 0; i < src.length; i++) {\n\tdata[dpos++] = src[i]\n\tif (L[src[i]] > 0) {\n\t    last = src[i];\n\t    var run = 0;\n\t    while (i+run+1 < src.length && src[i+run+1] == last)\n\t\trun++;\n\t    meta.WriteUint7(run)\n\t    i += run\n\t}\n    }\n\n    // Compress the meta-data\n    var cmeta = RansEncode0(meta.buf.slice(0, meta.pos))\n    var hdr = new IOStream(\"\", 0, 16)\n    hdr.WriteUint7(meta.pos*2)   // Uncompressed meta-data length + compressed-bit-flag(0)\n    hdr.WriteUint7(dpos)         // Length of RLE encoded data\n    hdr.WriteUint7(cmeta.length) // Compressed meta-data length\n    var meta = Buffer.concat([hdr.buf.slice(0,hdr.pos), cmeta])\n\n    return [meta, data.slice(0, dpos)]\n}\n\nfunction DecodeRLEMeta(src) {\n    var u_meta_len = src.ReadUint7()\n    var rle_len = src.ReadUint7()\n\n    // Decode RLE lengths\n    if (u_meta_len & 1) {\n\tvar rle_meta = src.ReadData((u_meta_len-1)/2)\n    } else {\n\tvar comp_meta_len = src.ReadUint7()\n\tvar rle_meta = src.ReadData(comp_meta_len)\n\trle_meta = RansDecode0(new IOStream(rle_meta), u_meta_len/2)\n    }\n\n    // Decode list of symbols for which RLE lengths are applied\n    var rle_meta = new IOStream(rle_meta)\n    var L = new Array(256)\n    var n = rle_meta.ReadByte()\n    if (n == 0)\n\tn = 256;\n    for (var i = 0; i < n; i++)\n\tL[rle_meta.ReadByte()] = 1\n\n    return [L, rle_meta, rle_len]\n}\n\nfunction DecodeRLE(buf, L, rle_meta, len) {\n    var src = new IOStream(buf);\n\n    var out = new Buffer.allocUnsafe(len)\n\n    // Expand up buf+meta to out; i = buf index, j = out index\n    var j = 0;\n    for (var i = 0; j < len; i++) {\n\tvar sym = buf[i];\n\tif (L[sym]) {\n\t    var run = rle_meta.ReadUint7()\n\t    for (var r = 0; r <= run; r++)\n\t\tout[j++] = sym\n\t} else {\n\t    out[j++] = sym\n\t}\n    }\n\n    return out\n}\n\n//----------------------------------------------------------------------\n// Bit packing\n\nfunction EncodePack(src) {\n    // Step 1: identify number of distinct symbols\n    var F = new Array(256)\n    for (var i = 0; i < 256; i++)\n\tF[i] = 0\n\n    for (var i = 0; i < src.length; i++)\n\tF[src[i]]++\n\n    var P = new Array(256)\n    var nsym = 0;\n    for (var i = 0; i < 256; i++)\n\tif (F[i] > 0)\n\t    P[i] = nsym++\n\n    if (nsym > 16) {\n\t//console.error(\"Too many symbols to pack:\",nsym)\n\treturn\n    }\n\n\n    // Pack data\n    if (nsym <= 1) {\n\t// Constant\n\tvar data = new Buffer.allocUnsafe(0)\n    }\n\n    else if (nsym <= 2) {\n\t// 1 bit per value\n\tvar data = new Buffer.allocUnsafe(Math.ceil(src.length/8))\n\tvar j = -1\n\tfor (i = 0; i < src.length; i++) {\n\t    if (i % 8 == 0)\n\t\tdata[++j] = 0\n\t    data[j] += P[src[i]] << (i % 8)\n\t}\n    }\n\n    else if (nsym <= 4) {\n\t// 2 bits per value\n\tvar data = new Buffer.allocUnsafe(Math.ceil(src.length/4))\n\tvar j = -1\n\tfor (i = 0; i < src.length; i++) {\n\t    if (i % 4 == 0)\n\t\tdata[++j] = 0\n\t    data[j] += P[src[i]] << ((i % 4) * 2)\n\t}\n    }\n\n    else {\n\t// 4 bits per value\n\tvar data = new Buffer.allocUnsafe(Math.ceil(src.length/2))\n\tvar j = -1\n\tfor (i = 0; i < src.length; i++) {\n\t    if (i % 2 == 0)\n\t\tdata[++j] = 0\n\t    data[j] += P[src[i]] << ((i % 2) * 4)\n\t}\n    }\n\n\n    // Produce pack meta-data\n    var meta = new IOStream(\"\", 0, nsym+5)\n    meta.WriteByte(nsym)\n    var j = 0\n    for (var i = 0; i < 256; i++) {\n\tif (F[i] > 0) {\n\t    F[i] = j++;\n\t    meta.WriteByte(i)\n\t}\n    }\n    meta.WriteUint7(data.length)\n\n    return [meta.buf.slice(0, meta.pos), data]\n}\n\n\n// Pack meta data is the number and value of distinct symbols plus\n// the length of the packed byte stream.\nfunction DecodePackMeta(src) {\n    var nsym = src.ReadByte()\n    var P = new Array(nsym)\n\n    for (var i = 0; i < nsym; i++)\n\tP[i] = src.ReadByte()\n\n    var len = src.ReadUint7()\n\n    return [P, nsym, len]\n}\n\n// Extract bits from src producing output of length len.\n// Nsym is number of distinct symbols used.\nfunction DecodePack(data, P, nsym, len) {\n    var out = new Buffer.allocUnsafe(len)\n    var j = 0;\n\n    // Constant value\n    if (nsym <= 1) {\n\tfor (var i = 0; i < len; i++)\n\t    out[i] = P[0]\n    }\n\n    // 1 bit per value\n    else if (nsym <= 2) {\n\tfor (i = 0; i < len; i++) {\n\t    if (i % 8 == 0)\n\t\tvar v = data[j++];\n\n\t    out[i] = P[v & 1]\n\t    v >>= 1\n\t}\n    }\n\n    // 2 bits per value\n    else if (nsym <= 4) {\n\tfor (i = 0; i < len; i++) {\n\t    if (i % 4 == 0)\n\t\tvar v = data[j++];\n\n\t    out[i] = P[v & 3]\n\t    v >>= 2\n\t}\n    }\n\n    // 4 bits per value\n    else if (nsym <= 16) {\n\tfor (i = 0; i < len; i++) {\n\t    if (i % 2 == 0)\n\t\tvar v = data[j++];\n\n\t    out[i] = P[v & 15]\n\t    v >>= 4\n\t}\n    }\n\n    return out\n}\n\n\n//----------------------------------------------------------------------\n// 4 way interleaving.\n// This is simply 4 rANS streams interleaved to form bytes 0,4,8...,\n// 1,5,9..., 2,6,10... and 3,7,11...\n//\n// It works well when the distributions differ for each of the 4 bytes,\n// for example when compressing a series of 32-bit integers.\n//\n// Maybe make this more general purpose of X* where we specify the stripe\n// size instead of fixing it at 4?\nfunction RansEncodeStripe(hdr, src, N) {\n    if (N == 0)\n\tN = 4; // old default\n\n    // Split into multiple streams\n    var part = new Array(N)\n    var ulen = new Array(N)\n    for (var s = 0; s < N; s++) {\n\tulen[s] = Math.floor(src.length / N) + ((src.length % N) > s);\n\tpart[s] = new Array(ulen[s])\n    }\n\n    for (var x = 0, i = 0; i < src.length; i+=N, x++) {\n\tfor (var j = 0; j < N; j++)\n\t    if (x < part[j].length)\n\t\tpart[j][x] = src[i+j]\n    }\n\n    // Compress each part\n    var comp = new Array(N)\n    var total = 0\n    for (var s = 0; s < N; s++) {\n\t// Example: try O0 and O1 and choose best\n\tvar comp0 = encode(part[s], 0)\n\tvar comp1 = encode(part[s], 1)\n\tcomp[s] = (comp1.length < comp0.length) ? comp1 : comp0\n\ttotal += comp[s].length\n    }\n\n    // Serialise\n    var out = new IOStream(\"\", 0, total+5*N+1)\n    out.WriteByte(N)\n    for (var s = 0; s < N; s++)\n\tout.WriteUint7(comp[s].length)\n\n    for (var s = 0; s < N; s++)\n\tout.WriteData(comp[s], comp[s].length)\n\n    return out.buf.slice(0, out.buf.pos)\n}\n\nfunction RansDecodeStripe(src, len) {\n    var N = src.ReadByte()\n\n    // Retrieve lengths\n    var clen = new Array(N)\n    var ulen = new Array(N)\n    for (var j = 0; j < N; j++)\n\tclen[j] = src.ReadUint7()\n\n    // Decode streams\n    var T = new Array(N);\n    for (var j = 0; j < N; j++) {\n\tulen[j] = Math.floor(len / N) + ((len % N) > j)\n\tT[j] = RansDecodeStream(src, ulen[j])\n    }\n\n    // Transpose\n    var out = new Buffer.allocUnsafe(len)\n    for (var j = 0; j < N; j++) {\n\tfor (var i = 0; i < ulen[j]; i++) {\n\t    out[i*N + j] = T[j][i];\n\t}\n    }\n\n    return out;\n}\n\n\n//----------------------------------------------------------------------\n// Main rANS entry function: decodes a compressed src and\n// returns the uncompressed buffer.\nfunction decode(src) {\n    var stream = new IOStream(src)\n    return RansDecodeStream(stream, 0)\n}\n\nfunction RansDecodeStream(stream, n_out) {\n    var format = stream.ReadByte();\n    var order  = format & 1\n    var stripe = format & 8\n    var nosz   = format & 16\n    var cat    = format & 32\n    var rle    = format & 64\n    var pack   = format & 128\n\n    if (!nosz)\n\tn_out = stream.ReadUint7();\n\n    // N-way interleaving\n    if (stripe)\n\treturn RansDecodeStripe(stream, n_out)\n\n    // Bit packing\n    if (pack) {\n\tvar pack_len = n_out\n\tvar [P, nsym, n_out] = DecodePackMeta(stream)\n    }\n\n    // Run length encoding\n    if (rle) {\n\tvar rle_len = n_out\n\tvar [L, rle_meta, n_out] = DecodeRLEMeta(stream)\n    }\n\n    // Uncompress data (all, packed or run literals)\n    if (cat)\n\tvar buf = stream.ReadData(n_out)\n    else if (order == 0)\n\tvar buf = RansDecode0(stream, n_out)\n    else\n\tvar buf = RansDecode1(stream, n_out)\n\n    // Apply expansion transforms\n    if (rle)\n\tbuf = DecodeRLE(buf, L, rle_meta, rle_len)\n\n    if (pack)\n\tbuf = DecodePack(buf, P, nsym, pack_len)\n\n    return buf\n}\n\nfunction encode(src, format) {\n    var hdr = new IOStream(\"\", 0, 10);\n    hdr.WriteByte(format);\n\n    var order = format & 1\n    var stripe= format & 8\n    var nosz  = format & 16\n    var cat   = format & 32\n    var rle   = format & 64\n    var pack  = format & 128\n\n    var N     = format>>8\n\n    if (!nosz)\n\thdr.WriteUint7(src.length);\n\n    if (stripe)\n\treturn Buffer.concat([hdr.buf.slice(0, hdr.pos), RansEncodeStripe(hdr, src, N)])\n\n    var pack_meta = new Buffer.alloc(0)\n    if (pack)\n\t[pack_meta, src] = EncodePack(src)\n\n    var rle_meta = new Buffer.alloc(0)\n    if (rle)\n\t[rle_meta, src] = EncodeRLE(src)\n\n    if (src.length < 4 && order == 1) {\n\t// Protect against short order-1 data due to RLE/Pack\n\torder = 0\n\thdr.buf[0] &= ~1\n    }\n\n    if (cat)\n\tvar comp = src\n    else if (order == 0)\n\tvar comp = RansEncode0(src)\n    else\n\tvar comp = RansEncode1(src)\n\n    return Buffer.concat([hdr.buf.slice(0,hdr.pos), pack_meta, rle_meta, comp])\n}\n\n//----------------------------------------------------------------------\n// Order-0 decoder\n\nfunction ReadAlphabet(src) {\n    var A = new Array(256)\n    for (var i = 0; i < 256; i++)\n\tA[i] = 0;\n\n    var rle = 0\n    var sym = src.ReadByte()\n    var last_sym = sym\n\n    do {\n\tA[sym] = 1;\n\tif (rle > 0) {\n\t    rle--\n\t    sym++\n\t} else {\n\t    sym = src.ReadByte()\n\t    if (sym == last_sym+1)\n\t\trle = src.ReadByte()\n\t}\n\tlast_sym = sym\n    } while (sym != 0)\n\n    return A\n}\n\n// Decode a single table of order-0 frequences,\n// filling out the F and C arrays.\nfunction ReadFrequencies0(src, F, C) {\n    // Initialise; not in the specification - implicit?\n    for (var i = 0; i < 256; i++)\n\tF[i] = 0;\n\n    // Fetch alphabet\n    var A = ReadAlphabet(src);\n\n    // Fetch frequencies for the symbols listed in our alphabet\n    for (var i = 0; i < 256; i++) {\n\tif (A[i] > 0)\n\t    F[i] = src.ReadUint7()\n    }\n\n    NormaliseFrequencies0_Shift(F, 12)\n\n    // Compute C[] from F[]\n    C[0] = 0;\n    for (var i = 0; i <= 255; i++)\n\tC[i+1] = C[i] + F[i];\n}\n\nfunction RansDecode0(src, nbytes) {\n    // Decode frequencies\n    var F = new Array(256);\n    var C = new Array(256);\n    ReadFrequencies0(src, F, C);\n\n    // Fast lookup to avoid slow RansGetSymbolFromFreq\n    var C2S = RansBuildC2S(C, 12);\n\n    // Initialise rANS state\n    var R = new Array(4);\n    for (var i = 0; i < 4; i++)\n\tR[i] = src.ReadUint32();\n\n    // Main decode loop\n    var output = new Buffer.allocUnsafe(nbytes);\n    for (var i = 0; i < nbytes; i++) {\n\tvar i4 = i%4;\n\tvar f = RansGetCumulativeFreq(R[i4], 12);\n\tvar s = C2S[f]; // Equiv to RansGetSymbolFromFreq(C, f);\n\n\toutput[i] = s;\n\tR[i4] = RansAdvanceStep(R[i4], C[s], F[s], 12);\n\tR[i4] = RansRenorm(src, R[i4]);\n    }\n\n    return output;\n}\n\n//----------------------------------------------------------------------\n// Order-0 encoder\n\nfunction BuildFrequencies0(src, F) {\n    for (var i = 0; i < 256; i++)\n\tF[i] = 0;\n\n    for (var i = 0; i < src.length; i++)\n\tF[src[i]]++;\n}\n\nfunction NormaliseFrequencies0(F, bits) {\n    // Compute total\n    var tot = 0;\n    for (var i = 0; i < 256; i++)\n\ttot += F[i];\n\n    // Scale total of frequencies to max\n    const max = (1<<bits);\n    var scale = max / tot;\n    do {\n\tvar max_val = 0;\n\tvar max_idx = 0;\n\tvar renorm = 0;\n\ttot = 0;\n\tfor (var i = 0; i < 256; i++) {\n\t    if (F[i] == 0)\n\t\tcontinue\n\n\t    if (max_val < F[i]) {\n\t\tmax_val = F[i]\n\t\tmax_idx = i\n\t    }\n\n\t    F[i] = Math.floor(F[i] * scale);\n\t    if (F[i] == 0)\n\t\tF[i] = 1;\n\n\t    tot += F[i];\n\t}\n\n\t// Adjust new tot to ensure it matches.\n\tif (tot < max) {\n\t    // Too low, boost the most common symbol\n\t    F[max_idx] += max-tot;\n\t} else if (tot-max < F[max_idx]/2 && F[max_idx] > 2) {\n\t    // Too high, reduce the common symbol\n\t    F[max_idx] -= tot-max;\n\t} else if (tot != max) {\n\t    // Much too high, fudge scale and try again.\n\t    scale = max / tot;\n\t    renorm = 1;\n\t}\n    } while (renorm)\n}\n\nfunction NormaliseFrequencies0_Shift(F, bits) {\n    // Compute total and number of bits to shift by\n    var tot = 0;\n    for (var i = 0; i < 256; i++)\n\ttot += F[i];\n\n    if (tot == 0 || tot == (1<<bits))\n\treturn\n\n    var shift = 0;\n    while (tot < (1<<bits)) {\n\ttot *= 2;\n\tshift++;\n    }\n\n    // Scale total of frequencies to (1<<bits)\n    for (var i = 0; i < 256; i++)\n\tF[i] <<= shift;\n}\n\nfunction WriteAlphabet(out, F) {\n    var rle = 0;\n    for (var i = 0; i < 256; i++) {\n\tif (!F[i])\n\t    continue\n\n\tif (rle > 0)\n\t    rle--\n\telse {\n\t    out.WriteByte(i)\n\n\t    if (i > 0 && F[i-1] > 0) {\n\t\t// We've encoded two symbol frequencies in a row.\n\t\t// How many more are there?  Store that count so\n\t\t// we can avoid writing consecutive symbols.\n\t\tfor (rle = i+1; rle<256 && F[rle]; rle++)\n\t\t    ;\n\t\trle -= i+1;\n\n\t\tout.WriteByte(rle);\n\t    }\n\t}\n    }\n    out.WriteByte(0)\n}\n\nfunction WriteFrequencies0(out, F) {\n    WriteAlphabet(out, F)\n\n    for (var i = 0; i < 256; i++) {\n\tif (F[i])\n\t    out.WriteUint7(F[i])\n    }\n}\n\nfunction RansEncode0(src) {\n    const nbytes = src.length;\n    var output = new IOStream(\"\", 0, 257*3+9);\n\n    // Compute frequencies\n    var F = new Array(256)\n    BuildFrequencies0(src, F)\n    var bit_size = Math.ceil(Math.log2(nbytes));\n    if (bit_size > 12)\n\tbit_size = 12;\n    NormaliseFrequencies0(F, bit_size);\n    WriteFrequencies0(output, F);\n    NormaliseFrequencies0(F, 12);\n\n    // Compute cumulative frequencies\n    var C = new Array(256)\n    C[0] = 0;\n    for (var i = 1; i < 256; i++)\n\tC[i] = C[i-1] + F[i-1];\n\n    // Initialise rANS state\n    var R = new Array(4);\n    for (var i = 0; i < 4; i++)\n\tR[i] = RansEncInit();\n\n    // Allow expansion room if trying to compress random data.\n    var rans_out = new IOStream(\"\", (nbytes*1.05+100)>>0, (nbytes*1.05+100)>>0);\n\n    // Main encode loop\n    for (var i = nbytes-1; i >= 0; i--)\n\tR[i%4] = RansEncPut(R[i%4], rans_out, C[src[i]], F[src[i]], 12);\n\n    for (var i = 3; i >= 0; i--)\n\tRansEncFlush(R[i], rans_out);\n\n    // Stitch blocks together into final output buffer\n    //console.error(\"pos=\",rans_out.pos, \" len=\",rans_out.length)\n    //console.error(rans_out.buf.slice(rans_out.pos, rans_out.length))\n    return Buffer.concat([output.buf.slice(0, output.pos),\n\t\t\t  rans_out.buf.slice(rans_out.pos, rans_out.length)],\n\t\t\t output.pos + rans_out.length - rans_out.pos);\n}\n\n//----------------------------------------------------------------------\n// Order-1 decoder\n\n// Decode a table of order-1 frequences,\n// filling out the F and C arrays.\nfunction ReadFrequencies1(src, F, C, shift) {\n    // Initialise; not in the specification - implicit?\n    for (var i = 0; i < 256; i++) {\n\tF[i] = new Array(256);\n\tC[i] = new Array(256);\n\tfor (var j = 0; j < 256; j++)\n\t    F[i][j] = 0;\n    }\n\n    // Fetch alphabet\n    var A = ReadAlphabet(src);\n\n    // Read F[]\n    for (var i = 0; i < 256; i++) {\n\tif (!A[i])\n\t    continue\n\n\tvar run = 0;\n\tfor (var j = 0; j < 256; j++) {\n\t    if (!A[j])\n\t\tcontinue\n\n\t    if (run > 0) {\n\t\trun--\n\t    } else {\n\t\tF[i][j] = src.ReadUint7();\n\t\tif (F[i][j] == 0)\n\t\t    run = src.ReadByte();\n\t    }\n\t}\n\n\tNormaliseFrequencies0_Shift(F[i], shift)\n\n\t// Compute C[] from F[]\n\tC[i][0] = 0;\n\tfor (var j = 0; j < 256; j++)\n\t    C[i][j+1] = C[i][j] + F[i][j];\n    }\n}\n\nfunction RansDecode1(src, nbytes) {\n    // FIXME: this bit is missing from the RansDecode0 pseudocode.\n\n    var comp = src.ReadByte();\n    var shift = comp >> 4;\n\n    var freq_src = src\n    if (comp & 1) {\n\tvar ulen = src.ReadUint7()\n\tvar clen = src.ReadUint7()\n\tvar comp = new IOStream(src.ReadData(clen))\n\tvar freq_src = new IOStream(RansDecode0(comp, ulen));\n    }\n\n    // Decode frequencies\n    var F = new Array(256);\n    var C = new Array(256);\n    ReadFrequencies1(freq_src, F, C, shift);\n\n    // Fast lookup to avoid slow RansGetSymbolFromFreq\n    var C2S = new Array(256);\n    for (var i = 0; i < 256; i++)\n\t// Could do only for symbols in alphabet?\n\tC2S[i] = RansBuildC2S(C[i], shift);\n\n    // Initialise rANS state\n    var R = new Array(4);\n    var L = new Array(4);\n    for (var j = 0; j < 4; j++) {\n\tR[j] = src.ReadUint32();\n\tL[j] = 0;\n    }\n\n    // Main decode loop\n    var output = new Buffer.allocUnsafe(nbytes);\n    var nbytes4 = Math.floor(nbytes/4);\n    for (var i = 0; i < nbytes4; i++) {\n\tfor (var j = 0; j < 4; j++) {\n\t    var f = RansGetCumulativeFreq(R[j], shift);\n\n\t    //var s = RansGetSymbolFromFreq(C[L[j]], f);\n\t    var s = C2S[L[j]][f]; // Precomputed version of above\n\n\t    output[i+j*nbytes4] = s;\n\t    R[j] = RansAdvanceStep(R[j], C[L[j]][s], F[L[j]][s], shift);\n\t    R[j] = RansRenorm(src, R[j]);\n\t    L[j] = s;\n\t}\n    }\n\n    // Now deal with the remainder if buffer size is not a multiple of 4,\n    // using rANS state 3 exclusively.  (It'd have been nice to have\n    // designed this to just act as if we kept going with a bail out.)\n    i = 4*i;\n    while (i < nbytes) {\n\tvar f = RansGetCumulativeFreq(R[3], shift);\n\tvar s = RansGetSymbolFromFreq(C[L[3]], f);\n\toutput[i++] = s;\n\tR[3] = RansAdvanceStep(R[3], C[L[3]][s], F[L[3]][s], shift);\n\tR[3] = RansRenorm(src, R[3]);\n\tL[3] = s;\n    }\n\n    return output;\n}\n\n//----------------------------------------------------------------------\n// Order-1 encoder\n\nfunction BuildFrequencies1(src, F, F0) {\n    for (var i = 0; i < 256; i++) {\n\tF0[i] = 0;\n\tfor (var j = 0; j < 256; j++)\n\t    F[i][j] = 0;\n    }\n\n    var last = 0;\n    for (var i = 0; i < src.length; i++) {\n\tF0[last]++;\n\tF[last][src[i]]++;\n\tlast = src[i];\n    }\n    F0[last]++;\n\n    // Also accept we'll be starting at 4 points, not just byte 0\n    F[0][src[1*(src.length >> 2)]]++;\n    F[0][src[2*(src.length >> 2)]]++;\n    F[0][src[3*(src.length >> 2)]]++;\n    F0[0] += 3;\n}\n\nfunction NormaliseFrequencies1(F, F0, shift) {\n\n    for (var i = 0; i < 256; i++) {\n\tif (!F0[i])\n\t    continue;\n\n\tvar bit_size = Math.ceil(Math.log2(F0[i]));\n\tif (bit_size > shift)\n\t    bit_size = shift;\n\n\tNormaliseFrequencies0(F[i], bit_size)\n    }\n}\n\nfunction NormaliseFrequencies1_Shift(F, F0, shift) {\n    for (var i = 0; i < 256; i++)\n\tif (F0[i])\n\t    NormaliseFrequencies0_Shift(F[i], shift)\n}\n\nfunction WriteFrequencies1(out, F, F0) {\n    WriteAlphabet(out, F0)\n\n    for (var i = 0; i < 256; i++) {\n\tif (!F0[i])\n\t    continue\n\n\tvar run = 0\n\tfor (var j = 0; j < 256; j++) {\n\t    if (!F0[j])\n\t\tcontinue\n\n\t    if (run) {\n\t\trun--\n\t    } else {\n\t\tout.WriteUint7(F[i][j])\n\n\t\tif (!F[i][j]) {\n\t\t    // Count how many more zero-freqs we have\n\t\t    for (var k = j+1; k < 256; k++) {\n\t\t\tif (!F0[k])\n\t\t\t    continue\n\n\t\t\tif (F[i][k] == 0)\n\t\t\t    run++\n\t\t\telse\n\t\t\t    break\n\t\t    }\n\t\t    out.WriteByte(run)\n\t\t}\n\t    }\n\t}\n    }\n}\n\nfunction RansEncode1(src) {\n    const nbytes = src.length;\n    var output = new IOStream(\"\", 0, 257*257*3+9);\n\n    // Compute frequencies\n    var F0 = new Array(256)\n    var F = new Array(256)\n    var C = new Array(256)\n    for (var i = 0; i < 256; i++) {\n\tF[i] = new Array(256);\n\tC[i] = new Array(256);\n    }\n\n    // Frequency precision\n    var shift = 12;\n\n    BuildFrequencies1(src, F, F0)\n    NormaliseFrequencies1(F, F0, shift);\n\n    // Store frequencies, possibly compressed\n    var freq = new IOStream(\"\", 0, 257*257*3+9);\n\n    WriteFrequencies1(freq, F, F0);\n\n    var cfreq = RansEncode0(freq.buf.slice(0, freq.pos))\n    if (cfreq.length < freq.pos) {\n\toutput.WriteByte(1 | (shift<<4));\n\toutput.WriteUint7(freq.pos)\n\toutput.WriteUint7(cfreq.length)\n\toutput.WriteData(cfreq, cfreq.length);\n    } else {\n\toutput.WriteByte(0 | (shift<<4));\n\toutput.WriteData(freq.buf, freq.pos);\n    }\n\n    // Normalise and compute cumulative frequencies\n    NormaliseFrequencies1_Shift(F, F0, shift);\n    for (var i = 0; i < 256; i++) {\n\tif (!F0[i])\n\t    continue;\n\n\tC[i][0] = 0;\n\tfor (var j = 1; j < 256; j++)\n\t    C[i][j] = C[i][j-1] + F[i][j-1];\n    }\n\n    // Initialise rANS state\n    var R = new Array(4);\n    var L = new Array(4);\n    for (var j = 0; j < 4; j++) {\n\tR[j] = RansEncInit();\n\tL[j] = 0;\n    }\n    var rans_out = new IOStream(\"\", (nbytes*1.05+100)>>0, (nbytes*1.05+100)>>0);\n\n    // We have 4 rans codecs running in parallel on its own 1/4tr of buffer\n    var nbytes4 = Math.floor(nbytes/4);\n    var idx = new Array(4);\n    var last = new Array(4)\n    for (var j = 0; j < 4; j++) {\n\tidx[j] = (j+1)*nbytes4 - 2;\n\tlast[j] = src[idx[j]+1]\n    }\n\n    // Deal with the remainder if not a multiple of 4\n    last[3] = src[nbytes-1];\n    for (var i = nbytes-2; i > 4*nbytes4-2; i--) {\n\tR[3] = RansEncPut(R[3], rans_out, C[src[i]][last[3]], F[src[i]][last[3]], shift);\n\tlast[3] = src[i];\n    }\n\n    // Main encode loop\n    while (idx[0] >= 0) {\n\tfor (var j = 3; j >= 0; j--) {\n\t    var s = src[idx[j]]\n\t    R[j] = RansEncPut(R[j], rans_out, C[s][last[j]], F[s][last[j]], shift);\n\t    last[j] = s;\n\t    idx[j]--;\n\t}\n    }\n\n    for (var j = 3; j >= 0; j--) {\n        R[j] = RansEncPut(R[j], rans_out, C[0][last[j]], F[0][last[j]], shift)\n    }\n\n    for (var i = 3; i >= 0; i--)\n\tRansEncFlush(R[i], rans_out);\n\n    // Stitch blocks together into final output buffer\n    return Buffer.concat([output.buf.slice(0, output.pos),\n\t\t\t  rans_out.buf.slice(rans_out.pos, rans_out.length)],\n\t\t\t output.pos + rans_out.length - rans_out.pos);\n}\n\nmodule.exports = { decode, encode }\n","/*\n * Copyright (c) 2019 Genome Research Ltd.\n * Author(s): James Bonfield\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above\n *       copyright notice, this list of conditions and the following\n *       disclaimer in the documentation and/or other materials provided\n *       with the distribution.\n *\n *    3. Neither the names Genome Research Ltd and Wellcome Trust Sanger\n *       Institute nor the names of its contributors may be used to endorse\n *       or promote products derived from this software without specific\n *       prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH\n * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// Name tokeniser\n//\n// This is a reference implementation designed to match the\n// written specification as closely as possible.  It is *NOT*\n// an efficient implementation, but see comments below.\n\nconst IOStream  = require(\"./iostream\");\nconst rans      = require(\"./rans4x16\");\nconst arith_gen = require(\"./arith_gen\");\n\nvar arith = new arith_gen()\n\nconst TOK_TYPE    = 0\nconst TOK_STRING  = 1\nconst TOK_CHAR    = 2\nconst TOK_DIGITS0 = 3\nconst TOK_DZLEN   = 4\nconst TOK_DUP     = 5\nconst TOK_DIFF    = 6\nconst TOK_DIGITS  = 7\nconst TOK_DELTA   = 8\nconst TOK_DELTA0  = 9\nconst TOK_MATCH   = 10\nconst TOK_NOP     = 11\nconst TOK_END     = 12\n\n//----------------------------------------------------------------------\n// Token byte streams\nfunction DecodeTokenByteStreams(src, in_size, use_arith, nnames) {\n    var t = -1\n\n    var B = new Array(256)\n\n    while (!src.EOF()) {\n\tvar ttype = src.ReadByte()\n\tvar tok_new = ttype & 128\n\tvar tok_dup = ttype & 64\n\tvar type    = ttype & 63\n\n\tif (tok_new) {\n\t    t++\n\t    B[t] = new Array(13)\n\t}\n\n\tif (type != TOK_TYPE && tok_new) {\n\t    var M = new Array(nnames-1).fill(TOK_MATCH)\n\t    B[t][TOK_TYPE] = new IOStream(Buffer.from([type].concat(M)))\n        }\n\n\tif (tok_dup) {\n\t    var dup_pos  = src.ReadByte()\n\t    var dup_type = src.ReadByte()\n\t    B[t][type] = new IOStream(B[dup_pos][dup_type].buf)\n\t} else {\n\t    var clen = src.ReadUint7()\n\t    var data = src.ReadData(clen)\n\n\t    if (use_arith)\n\t\tB[t][type] = arith.decode(data)\n\t    else\n\t\tB[t][type] = rans.decode(data)\n\t    B[t][type] = new IOStream(B[t][type])\n\t}\n    }\n\n    return B\n}\n\n//----------------------------------------------------------------------\n// Token decode\nfunction LeftPadNumber(val, len) {\n    var str = val+\"\"\n    while (str.length < len)\n\tstr = \"0\" + str\n\n    return str\n}\n\nfunction DecodeSingleName(B, N, T, n) {\n    var type = B[0][TOK_TYPE].ReadByte()\n    var dist = B[0][type].ReadUint32()\n    var m = n - dist\n\n    if (type == TOK_DUP) {\n\tN[n] = N[m]\n\tT[n] = T[m]\n\treturn N[n]\n    }\n    \n    var t = 1\n    N[n] = \"\"\n    T[n] = new Array(256)\n    do {\n\ttype = B[t][TOK_TYPE].ReadByte()\n\n\tswitch(type) {\n\tcase TOK_CHAR:\n\t    T[n][t] = B[t][TOK_CHAR].ReadChar()\n\t    break\n\n\tcase TOK_STRING:\n\t    T[n][t] = B[t][TOK_STRING].ReadString()\n\t    break\n\t\n\tcase TOK_DIGITS:\n\t    T[n][t] = B[t][TOK_DIGITS].ReadUint32()\n\t    break\n\n\tcase TOK_DIGITS0:\n\t    var d = B[t][TOK_DIGITS0].ReadUint32()\n\t    var l = B[t][TOK_DZLEN].ReadByte()\n\t    T[n][t] = LeftPadNumber(d, l)\n\t    break\n\n\tcase TOK_DELTA:\n\t    T[n][t] = (T[m][t]>>0) + B[t][TOK_DELTA].ReadByte()\n\t    break\n\n\tcase TOK_DELTA0:\n\t    var d = (T[m][t]>>0) + B[t][TOK_DELTA0].ReadByte()\n\t    var l = T[m][t].length\n\t    T[n][t] = LeftPadNumber(d, l)\n\t    break\n\n\tcase TOK_MATCH:\n\t    T[n][t] = T[m][t]\n\t    break\n\n\tdefault:\n\t    T[n][t] = \"\"\n\t    break\n\t}\n\n\tN[n] += T[n][t++]\n    } while (type != TOK_END)\n\n    return N[n]\n}\n\n//----------------------------------------------------------------------\n// Main tokeniser decode entry function: decodes a compressed src and\n// returns the uncompressed buffer.\nfunction decode(src, len, separator) {\n    var src = new IOStream(src)\n    var ulen = src.ReadUint32()\n    var nnames = src.ReadUint32()\n    var use_arith = src.ReadByte()\n\n    var B = DecodeTokenByteStreams(src, len, use_arith, nnames)\n    var N = new Array(nnames)\n    var T = new Array(nnames)\n\n    var str = \"\"\n    if (typeof separator === 'undefined')\n\tseparator = '\\n'\n    for (var i = 0; i < nnames; i++)\n\tstr += DecodeSingleName(B, N, T, i) + separator\n\n    return str\n}\n\n//----------------------------------------------------------------------\n// Main tokeniser encode function\n\n// Encoder is trickier than decode as we have a lot of decisions to make.\n// However here we just make a simple guess without anything complex,\n// to demonstrate the basic idea.  See the C implementation for further\n// expansion on this.\nfunction encode(src, use_arith) {\n    // Convert buffer to array of names\n    var str = src.toString()\n    if (str[str.length-1] == '\\n')\n\tstr = str.substring(0,str.length-1)\n    var names = str.split(\"\\n\")\n\n    var out = new IOStream(\"\", 0, str.length*2 + 10000) // guess max size\n    out.WriteUint32(str.length)\n    out.WriteUint32(names.length)\n    out.WriteByte(use_arith)\n\n    // Tokenise names\n    var T = new Array(names.length)\n    var H = {}\n    var F = new Array(256).fill(0) // DELTA vs DIGIT frequency\n    var max_tok = 0\n    var max_len = 0\n    for (var i = 0; i < names.length; i++) {\n\tvar [ntok,len] = TokeniseName(T, H, F, names[i], i)\n\tif (max_tok < ntok)\n\t    max_tok = ntok\n\tif (max_len < len)\n\t    max_len = len\n    }\n\n    // Convert tokens to byte streams and serialise\n    for (var tnum = 0; tnum < max_tok; tnum++) {\n\tvar B = new Array(TOK_END+1)\n\tfor (var type = 0; type <= TOK_END; type++)\n\t    B[type] = new IOStream(\"\", 0, names.length * max_len)\n\n\tFillByteStreams(B, T, tnum, names, max_tok, max_len)\n\tSerialiseByteStreams(B, tnum, use_arith, out)\n    }\n\n    return out.buf.slice(0, out.pos)\n}\n\nfunction FillByteStreams(B, T, tnum, names, max_tok, max_len) {\n    // Create byte streams B[]\n    for (var n = 0; n < names.length; n++) {\n\tif (tnum > 0 && T[n][0].type == TOK_DUP)\n\t    continue\n\n\tif (!T[n][tnum])\n\t    continue\n\n\tB[TOK_TYPE].WriteByte(T[n][tnum].type)\n\n\tswitch (T[n][tnum].type) {\n\tcase TOK_DIFF:\n\t    B[TOK_DIFF].WriteUint32(T[n][tnum].val)\n\t    break\n\n\tcase TOK_DUP:\n\t    B[TOK_DUP].WriteUint32(T[n][tnum].val)\n\t    break\n\n\tcase TOK_STRING:\n\t    B[TOK_STRING].WriteString(T[n][tnum].val)\n\t    break\n\n\tcase TOK_CHAR:\n\t    B[TOK_CHAR].WriteChar(T[n][tnum].val)\n\t    break\n\n\tcase TOK_DIGITS:\n\t    B[TOK_DIGITS].WriteUint32(T[n][tnum].val)\n\t    break\n\n\tcase TOK_DIGITS0:\n\t    B[TOK_DIGITS0].WriteUint32(T[n][tnum].val)\n\t    B[TOK_DZLEN].WriteByte(T[n][tnum].val.length)\n\t    break\n\n\tcase TOK_DELTA:\n\t    B[T[n][tnum].type].WriteByte(T[n][tnum].val)\n\t    break\n\n\tcase TOK_DELTA0:\n\t    B[T[n][tnum].type].WriteByte(T[n][tnum].val)\n\t    break\n\t}\n    }\n}\n\nfunction SerialiseByteStreams(B, tnum, use_arith, out) {\n    // Compress and serialise byte streams B[]\n    for (var type = 0; type <= TOK_END; type++) {\n\tif (B[type].pos <= 0)\n\t    continue\n\n\tout.WriteByte(type + ((type == 0) ? 128 : 0))\n\n\t// IOStream to sized buffer\n\tB[type] = B[type].buf.slice(0, B[type].pos)\n\tvar comp = try_compress(B[type], use_arith)\n\n\tout.WriteUint7(comp.length)\n\tout.WriteData(comp, comp.length)\n    }\n}\n\nfunction try_compress(src, use_arith) {\n    var best = 1<<30\n    var comp\n\n    var methods = [0, 1, 64, 65, 128, 129, 193+8]\n    for (var i in methods) {\n\tvar lvl = methods[i]\n\tif ((lvl & 1) && src.length < 100)\n\t    continue\n\n\tif ((lvl & 8) && (src.length % 4) != 0)\n\t    continue\n\n\ttry {\n\t    var tmp = use_arith\n\t\t? arith.encode(src, lvl)\n\t\t: rans.encode(src, lvl)\n\t} catch (e) {\n\t    var tmp = 0\n\t}\n\tif (tmp && best > tmp.length) {\n\t    best = tmp.length\n\t    comp = tmp\n\t}\n    }\n\n    return comp\n}\n\nfunction TokeniseName(T, H, F, name, n) {\n    var max_len = 0\n\n    // Always compare against last name only\n    var p = n-1\n    T[n] = new Array(256)\n\n    if (H[name]) {\n\t//console.error(name,H[name],n)\n\tT[n][0] = {\n\t    type: TOK_DUP,\n\t    val:  n - H[name]\n\t}\n    } else {\n\tT[n][0] = {\n\t    type: TOK_DIFF,\n\t    val:  n == 0 ? 0 : 1\n\t}\n    }\n\n    H[name] = n\n\n    // Splits on alphanumerics, punctuation\n    var tok = name.match(/([a-zA-Z0-9]{1,9})|([^a-zA-Z0-9]+)/g)\n    for (var i = 0; i < tok.length; i++) {\n\tvar t = i+1 // token 0 = DIFF vs DUP\n\tvar type = TOK_STRING\n\tvar val = tok[i]\n\tif (tok[i].match(/^0+[0-9]*$/g))\n\t    type = TOK_DIGITS0\n\telse if (tok[i].match(/^[0-9]+$/g))\n\t    type = TOK_DIGITS\n\telse if (tok[i].length == 1)\n\t    type = TOK_CHAR\n\n\tif (p >= 0 && T[p][t]) {\n\t    if (T[p][t].str == tok[i]) {\n\t\ttype = TOK_MATCH\n\t\tval = \"\"\n\t    } else if (T[p][t].type == TOK_DIGITS || T[p][t].type == TOK_DELTA) {\n\t\tvar d = val - T[p][t].str;\n\t\tF[t]++\n\t\tif (d >= 0 && d < 256 && F[t] > n/2) {\n\t\t    type = TOK_DELTA\n\t\t    val = d\n\t\t}\n\t    } else if ((T[p][t].type == TOK_DIGITS0 || T[p][t].type == TOK_DELTA0)\n\t\t       && T[p][t].str.length == val.length) {\n\t\tvar d = val - T[p][t].str;\n\t\tF[t]++\n\t\tif (d >= 0 && d < 256 && F[t] > n/2) {\n\t\t    type = TOK_DELTA0\n\t\t    val = d\n\t\t}\n\t    }\n\t}\n\n\tT[n][t] = {\n\t    str:  tok[i],\n\t    val:  val,\n\t    type: type\n\t}\n\n\tif (max_len < T[n][t].val.length+3)  // +3 for integers; 5 -> (Uint32)5\n\t    max_len = T[n][t].val.length+3\n\n\t//console.error(t,T[n][t])\n    }\n    T[n][++t] = {\n\ttype: TOK_END\n    }\n\n    return [t+1, max_len]\n}\n\nmodule.exports = { encode, decode }\n","/*\nbzip2.js - a small bzip2 decompression implementation\n\nCopyright 2011 by antimatter15 (antimatter15@gmail.com)\n\nBased on micro-bunzip by Rob Landley (rob@landley.net).\n\nBased on bzip2 decompression code by Julian R Seward (jseward@acm.org),\nwhich also acknowledges contributions by Mike Burrows, David Wheeler,\nPeter Fenwick, Alistair Moffat, Radford Neal, Ian H. Witten,\nRobert Sedgewick, and Jon L. Bentley.\n\nI hereby release this code under the GNU Library General Public License\n(LGPL) version 2, available at http://www.gnu.org/copyleft/lgpl.html\n*/\n\nvar bzip2 = {};\n\nbzip2.array = function (bytes) {\n    var bit = 0,\n        byte = 0;\n    var BITMASK = [0, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF];\n    return function (n) {\n        var result = 0;\n        while (n > 0) {\n            var left = 8 - bit;\n            if (n >= left) {\n                result <<= left;\n                result |= (BITMASK[left] & bytes[byte++]);\n                bit = 0;\n                n -= left;\n            } else {\n                result <<= n;\n                result |= ((bytes[byte] & (BITMASK[n] << (8 - n - bit))) >> (8 - n - bit));\n                bit += n;\n                n = 0;\n            }\n        }\n        return result\n    }\n}\n\nbzip2.simple = function (bits) {\n    var size = bzip2.header(bits);\n    var all, chunk, chunks = [];\n    var index = 0;\n    do {\n        //all += chunk;\n        chunk = bzip2.decompress(bits, size);\n        //all.set(chunk, index);\n        if (chunk != -1) {\n            chunks.push(chunk);\n            index += chunk.byteLength;\n        }\n    } while (chunk != -1);\n    all = new Uint8Array(index);\n    index = 0;\n    for (var i = 0; i < chunks.length; ++i) {\n        chunk = chunks[i];\n        all.set(chunk, index);\n        index += chunk.byteLength;\n    }\n    return all;\n}\n\nbzip2.header = function (bits) {\n    if (bits(8 * 3) != 4348520)\n        throw \"No magic number found\";\n    var i = bits(8) - 48;\n    if (i < 1 || i > 9)\n        throw \"Not a BZIP archive\";\n    return i;\n};\n\n//takes a function for reading the block data (starting with 0x314159265359)\n//a block size (0-9) (optional, defaults to 9)\n//a length at which to stop decompressing and return the output\nbzip2.decompress = function (bits, size, len) {\n    var MAX_HUFCODE_BITS = 20;\n    var MAX_SYMBOLS = 258;\n    var SYMBOL_RUNA = 0;\n    var SYMBOL_RUNB = 1;\n    var GROUP_SIZE = 50;\n\n    var bufsize = 100000 * 9;\n    for (var h = '', i = 0; i < 6; i++)\n        h += bits(8).toString(16);\n    if (h == \"177245385090\")\n        return -1; //last block\n    if (h != \"314159265359\")\n        throw \"eek not valid bzip data\";\n    bits(32); //ignore CRC codes\n    if (bits(1))\n        throw \"unsupported obsolete version\";\n    var origPtr = bits(24);\n    if (origPtr > bufsize)\n        throw \"Initial position larger than buffer size\";\n    var t = bits(16);\n    var symToByte = new Uint8Array(256),\n        symTotal = 0;\n    for (i = 0; i < 16; i++) {\n        if (t & (1 << (15 - i))) {\n            var k = bits(16);\n            for (j = 0; j < 16; j++) {\n                if (k & (1 << (15 - j))) {\n                    symToByte[symTotal++] = (16 * i) + j;\n                }\n            }\n        }\n    }\n\n    var groupCount = bits(3);\n    if (groupCount < 2 || groupCount > 6)\n        throw \"another error\";\n    var nSelectors = bits(15);\n    if (nSelectors == 0)\n        throw \"meh\";\n    var mtfSymbol = []; //TODO: possibly replace JS array with typed arrays\n    for (var i = 0; i < groupCount; i++)\n        mtfSymbol[i] = i;\n    var selectors = new Uint8Array(32768);\n\n    for (var i = 0; i < nSelectors; i++) {\n        for (var j = 0; bits(1); j++)\n            if (j >= groupCount)\n                throw \"whoops another error\";\n        var uc = mtfSymbol[j];\n        mtfSymbol.splice(j, 1); //this is a probably inefficient MTF transform\n        mtfSymbol.splice(0, 0, uc);\n        selectors[i] = uc;\n    }\n\n    var symCount = symTotal + 2;\n    var groups = [];\n    for (var j = 0; j < groupCount; j++) {\n        var length = new Uint8Array(MAX_SYMBOLS),\n            temp = new Uint8Array(MAX_HUFCODE_BITS + 1);\n        t = bits(5); //lengths\n        for (var i = 0; i < symCount; i++) {\n            while (true) {\n                if (t < 1 || t > MAX_HUFCODE_BITS)\n                    throw \"I gave up a while ago on writing error messages\";\n                if (!bits(1))\n                    break;\n                if (!bits(1))\n                    t++;\n                else\n                    t--;\n            }\n            length[i] = t;\n        }\n        var minLen, maxLen;\n        minLen = maxLen = length[0];\n        for (var i = 1; i < symCount; i++) {\n            if (length[i] > maxLen)\n                maxLen = length[i];\n            else if (length[i] < minLen)\n                minLen = length[i];\n        }\n        var hufGroup;\n        hufGroup = groups[j] = {};\n        hufGroup.permute = new Uint32Array(MAX_SYMBOLS);\n        hufGroup.limit = new Uint32Array(MAX_HUFCODE_BITS + 1);\n        hufGroup.base = new Uint32Array(MAX_HUFCODE_BITS + 1);\n        hufGroup.minLen = minLen;\n        hufGroup.maxLen = maxLen;\n        var base = hufGroup.base.subarray(1);\n        var limit = hufGroup.limit.subarray(1);\n        var pp = 0;\n        for (var i = minLen; i <= maxLen; i++)\n            for (var t = 0; t < symCount; t++)\n                if (length[t] == i)\n                    hufGroup.permute[pp++] = t;\n        for (i = minLen; i <= maxLen; i++)\n            temp[i] = limit[i] = 0;\n        for (i = 0; i < symCount; i++)\n            temp[length[i]]++;\n        pp = t = 0;\n        for (i = minLen; i < maxLen; i++) {\n            pp += temp[i];\n            limit[i] = pp - 1;\n            pp <<= 1;\n            base[i + 1] = pp - (t += temp[i]);\n        }\n        limit[maxLen] = pp + temp[maxLen] - 1;\n        base[minLen] = 0;\n    }\n    var byteCount = new Uint32Array(256);\n    for (var i = 0; i < 256; i++)\n        mtfSymbol[i] = i;\n    var runPos, count, symCount, selector;\n    runPos = count = symCount = selector = 0;\n    var buf = new Uint32Array(bufsize);\n    while (true) {\n        if (!(symCount--)) {\n            symCount = GROUP_SIZE - 1;\n            if (selector >= nSelectors)\n                throw \"meow i'm a kitty, that's an error\";\n            hufGroup = groups[selectors[selector++]];\n            base = hufGroup.base.subarray(1);\n            limit = hufGroup.limit.subarray(1);\n        }\n        i = hufGroup.minLen;\n        j = bits(i);\n        while (true) {\n            if (i > hufGroup.maxLen)\n                throw \"rawr i'm a dinosaur\";\n            if (j <= limit[i])\n                break;\n            i++;\n            j = (j << 1) | bits(1);\n        }\n        j -= base[i];\n        if (j < 0 || j >= MAX_SYMBOLS)\n            throw \"moo i'm a cow\";\n        var nextSym = hufGroup.permute[j];\n        if (nextSym == SYMBOL_RUNA || nextSym == SYMBOL_RUNB) {\n            if (!runPos) {\n                runPos = 1;\n                t = 0;\n            }\n            if (nextSym == SYMBOL_RUNA)\n                t += runPos;\n            else\n                t += 2 * runPos;\n            runPos <<= 1;\n            continue;\n        }\n        if (runPos) {\n            runPos = 0;\n            if (count + t >= bufsize)\n                throw \"Boom.\";\n            uc = symToByte[mtfSymbol[0]];\n            byteCount[uc] += t;\n            while (t--)\n                buf[count++] = uc;\n        }\n        if (nextSym > symTotal)\n            break;\n        if (count >= bufsize)\n            throw \"I can't think of anything. Error\";\n        i = nextSym - 1;\n        uc = mtfSymbol[i];\n        mtfSymbol.splice(i, 1);\n        mtfSymbol.splice(0, 0, uc);\n        uc = symToByte[uc];\n        byteCount[uc]++;\n        buf[count++] = uc;\n    }\n    if (origPtr < 0 || origPtr >= count)\n        throw \"I'm a monkey and I'm throwing something at someone, namely you\";\n    var j = 0;\n    for (var i = 0; i < 256; i++) {\n        k = j + byteCount[i];\n        byteCount[i] = j;\n        j = k;\n    }\n    for (var i = 0; i < count; i++) {\n        uc = buf[i] & 0xff;\n        buf[byteCount[uc]] |= (i << 8);\n        byteCount[uc]++;\n    }\n    var pos = 0,\n        current = 0,\n        run = 0;\n    if (count) {\n        pos = buf[origPtr];\n        current = (pos & 0xff);\n        pos >>= 8;\n        run = -1;\n    }\n    count = count;\n    var output = new Uint8Array(bufsize);\n    var copies, previous, outbyte;\n    var index = 0;\n    if (!len)\n        len = Infinity;\n    while (count) {\n        count--;\n        previous = current;\n        pos = buf[pos];\n        current = pos & 0xff;\n        pos >>= 8;\n        if (run++ == 3) {\n            copies = current;\n            outbyte = previous;\n            current = -1;\n        } else {\n            copies = 1;\n            outbyte = current;\n        }\n        while (copies--) {\n            //output += (String.fromCharCode(outbyte));\n            output[index++] = outbyte;\n            //index++;\n            if (!--len)\n                return output;\n        }\n        if (current != previous)\n            run = 0;\n    }\n    //return output;\n    //return output.subarray(0,index-1);\n    return output.subarray(0, index);\n}\n\nmodule.exports = bzip2;\n","var charenc = {\n  // UTF-8 encoding\n  utf8: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n    }\n  },\n\n  // Binary encoding\n  bin: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      for (var bytes = [], i = 0; i < str.length; i++)\n        bytes.push(str.charCodeAt(i) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      for (var str = [], i = 0; i < bytes.length; i++)\n        str.push(String.fromCharCode(bytes[i]));\n      return str.join('');\n    }\n  }\n};\n\nmodule.exports = charenc;\n","(function() {\n  var base64map\n      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n  crypt = {\n    // Bit-wise rotation left\n    rotl: function(n, b) {\n      return (n << b) | (n >>> (32 - b));\n    },\n\n    // Bit-wise rotation right\n    rotr: function(n, b) {\n      return (n << (32 - b)) | (n >>> b);\n    },\n\n    // Swap big-endian to little-endian and vice versa\n    endian: function(n) {\n      // If number given, swap endian\n      if (n.constructor == Number) {\n        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n      }\n\n      // Else, assume array and swap all items\n      for (var i = 0; i < n.length; i++)\n        n[i] = crypt.endian(n[i]);\n      return n;\n    },\n\n    // Generate an array of any length of random bytes\n    randomBytes: function(n) {\n      for (var bytes = []; n > 0; n--)\n        bytes.push(Math.floor(Math.random() * 256));\n      return bytes;\n    },\n\n    // Convert a byte array to big-endian 32-bit words\n    bytesToWords: function(bytes) {\n      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n        words[b >>> 5] |= bytes[i] << (24 - b % 32);\n      return words;\n    },\n\n    // Convert big-endian 32-bit words to a byte array\n    wordsToBytes: function(words) {\n      for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a hex string\n    bytesToHex: function(bytes) {\n      for (var hex = [], i = 0; i < bytes.length; i++) {\n        hex.push((bytes[i] >>> 4).toString(16));\n        hex.push((bytes[i] & 0xF).toString(16));\n      }\n      return hex.join('');\n    },\n\n    // Convert a hex string to a byte array\n    hexToBytes: function(hex) {\n      for (var bytes = [], c = 0; c < hex.length; c += 2)\n        bytes.push(parseInt(hex.substr(c, 2), 16));\n      return bytes;\n    },\n\n    // Convert a byte array to a base-64 string\n    bytesToBase64: function(bytes) {\n      for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n        for (var j = 0; j < 4; j++)\n          if (i * 8 + j * 6 <= bytes.length * 8)\n            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n          else\n            base64.push('=');\n      }\n      return base64.join('');\n    },\n\n    // Convert a base-64 string to a byte array\n    base64ToBytes: function(base64) {\n      // Remove non-base-64 characters\n      base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n          imod4 = ++i % 4) {\n        if (imod4 == 0) continue;\n        bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n      }\n      return bytes;\n    }\n  };\n\n  module.exports = crypt;\n})();\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n  var crypt = require('crypt'),\r\n      utf8 = require('charenc').utf8,\r\n      isBuffer = require('is-buffer'),\r\n      bin = require('charenc').bin,\r\n\r\n  // The core\r\n  md5 = function (message, options) {\r\n    // Convert to byte array\r\n    if (message.constructor == String)\r\n      if (options && options.encoding === 'binary')\r\n        message = bin.stringToBytes(message);\r\n      else\r\n        message = utf8.stringToBytes(message);\r\n    else if (isBuffer(message))\r\n      message = Array.prototype.slice.call(message, 0);\r\n    else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n      message = message.toString();\r\n    // else, assume byte array already\r\n\r\n    var m = crypt.bytesToWords(message),\r\n        l = message.length * 8,\r\n        a =  1732584193,\r\n        b = -271733879,\r\n        c = -1732584194,\r\n        d =  271733878;\r\n\r\n    // Swap endian\r\n    for (var i = 0; i < m.length; i++) {\r\n      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;\r\n    }\r\n\r\n    // Padding\r\n    m[l >>> 5] |= 0x80 << (l % 32);\r\n    m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n    // Method shortcuts\r\n    var FF = md5._ff,\r\n        GG = md5._gg,\r\n        HH = md5._hh,\r\n        II = md5._ii;\r\n\r\n    for (var i = 0; i < m.length; i += 16) {\r\n\r\n      var aa = a,\r\n          bb = b,\r\n          cc = c,\r\n          dd = d;\r\n\r\n      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);\r\n      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);\r\n      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);\r\n      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);\r\n      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);\r\n      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n      c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n      b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n      a = FF(a, b, c, d, m[i+12],  7,  1804603682);\r\n      d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n      c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n      b = FF(b, c, d, a, m[i+15], 22,  1236535329);\r\n\r\n      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);\r\n      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);\r\n      c = GG(c, d, a, b, m[i+11], 14,  643717713);\r\n      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);\r\n      d = GG(d, a, b, c, m[i+10],  9,  38016083);\r\n      c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);\r\n      d = GG(d, a, b, c, m[i+14],  9, -1019803690);\r\n      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);\r\n      a = GG(a, b, c, d, m[i+13],  5, -1444681467);\r\n      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);\r\n      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);\r\n      b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n      a = HH(a, b, c, d, m[i+ 5],  4, -378558);\r\n      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n      c = HH(c, d, a, b, m[i+11], 16,  1839030562);\r\n      b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);\r\n      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);\r\n      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n      b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n      a = HH(a, b, c, d, m[i+13],  4,  681279174);\r\n      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);\r\n      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);\r\n      d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n      c = HH(c, d, a, b, m[i+15], 16,  530742520);\r\n      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n      a = II(a, b, c, d, m[i+ 0],  6, -198630844);\r\n      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);\r\n      c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n      b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n      a = II(a, b, c, d, m[i+12],  6,  1700485571);\r\n      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n      c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);\r\n      d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n      b = II(b, c, d, a, m[i+13], 21,  1309151649);\r\n      a = II(a, b, c, d, m[i+ 4],  6, -145523070);\r\n      d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n      c = II(c, d, a, b, m[i+ 2], 15,  718787259);\r\n      b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n      a = (a + aa) >>> 0;\r\n      b = (b + bb) >>> 0;\r\n      c = (c + cc) >>> 0;\r\n      d = (d + dd) >>> 0;\r\n    }\r\n\r\n    return crypt.endian([a, b, c, d]);\r\n  };\r\n\r\n  // Auxiliary functions\r\n  md5._ff  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._gg  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._hh  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._ii  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n\r\n  // Package private blocksize\r\n  md5._blocksize = 16;\r\n  md5._digestsize = 16;\r\n\r\n  module.exports = function (message, options) {\r\n    if (message === undefined || message === null)\r\n      throw new Error('Illegal argument ' + message);\r\n\r\n    var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n    return options && options.asBytes ? digestbytes :\r\n        options && options.asString ? bin.bytesToString(digestbytes) :\r\n        crypt.bytesToHex(digestbytes);\r\n  };\r\n\r\n})();\r\n","/*!\n * Based on xzwasm (c) Steve Sanderson. License: MIT - https://github.com/SteveSanderson/xzwasm\n * Contains xz-embedded by Lasse Collin and Igor Pavlov. License: Public domain - https://tukaani.org/xz/embedded.html\n * and walloc (c) 2020 Igalia, S.L. License: MIT - https://github.com/wingo/walloc\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"stream/web\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"stream/web\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"xz-decompress\"] = factory(require(\"stream/web\"));\n\telse\n\t\troot[\"xz-decompress\"] = factory(root[\"stream/web\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__2__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((module) => {\n\nmodule.exports = \"data:application/wasm;base64,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IgENAAsLIAJCf4UL1RACDH8CfgJAAkAgACgCJEUNACAAKAIAIQIMAQtBACECIABBADoAKCAAQgA3AwAgAEIANwMYIABByABqQQBB5AAQhoCAgAAaIABBrAFqQQw2AgALIAAgASgCBCIDNgIQIABBsAFqIQQgAEHgAGohBSAAQcgAaiEGIABBtgFqIQcgAEGoAWohCCABKAIQIQkCQAJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIOCgECAAQFBgcICQoPCyABKAIAIQogACgCqAEhAiAAKAKsASELIAEoAgQhDCABKAIIIQ0MAgsgCCAAKAKoASIMakEIaiABKAIAIAEoAgQiAmogASgCCCACayICIAAoAqwBIAxrIgwgAiAMSRsiAhCHgICAABogASABKAIEIAJqNgIEQQAhDCAAQQAgACgCqAEgAmoiAiACIAAoAqwBIgtGGzYCqAEgAiALRw0RIABBATYCAAJAIARBqIiAgABBBhCEgICAAEUNAEEFIQwMEgsgB0ECQQAQjYCAgAAgACgAuAFHDRBBBiEMIActAAANESAAIAAtALcBIgI2AiAgAkEESw0RQQEgAnRBE3FFDRELIAEoAgQiDCABKAIIIg1GDQ4CQCABKAIAIgogDGotAAAiCw0AIAAgDDYCECABIAxBAWo2AgRBBiECDAwLQQAhAiAAQQA2AqgBIABBAjYCACAAIAtBAnRBBGoiCzYCrAEgACALNgJACyAIIAJqQQhqIAogDGogDSAMayIMIAsgAmsiAiAMIAJJGyICEIeAgIAAGiABIAIgASgCBGo2AgRBACEMIABBACAAKAKoASACaiICIAIgACgCrAEiC0YbNgKoASACIAtHDQ8gACACQXxqIgI2AqwBQQchDCAEIAJBABCNgICAACAAIAAoAqwBIgtqQbABaigAAEcNDyAAQQI2AqgBIAAtALEBIgJBP3ENDAJAAkAgAkHAAHFFDQAgACAEIAggCxCRgICAAEEBRw0RIAAgACkDCDcDMCAALQCxASECDAELIABCfzcDMAtCfyEOAkAgAkEYdEEYdUF/Sg0AIAAgBCAIIAAoAqwBEJGAgIAAQQFHDRAgACkDCCEOCyAAIA43AzggACgCrAEiDSAAKAKoASICa0ECSQ0PIAAgAkEBaiIKNgKoASAIIAJqQQhq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IgM2AhAgACAOQQh0IAAoAgwgCWotAAByIg42AgQgAyEJCwJAAkAgDiALQQt2IA8vAQAiCmwiA08iEg0AIAAgAzYCACAKQYAQIAprQQV2aiEKDAELIAAgDiADayIONgIEIAAgCyADayIDNgIAIAogCkEFdmshCkEAIQ0LIA8gCjsBACANIBFzIQ0gBEEBdCASciIEQYACSQ0ACwsgACACQQFqNgIgIAAoAhggAmogBDoAAAJAIAAoAiQgACgCICICTw0AIAAgAjYCJAtBACEDAkAgACgCZCIEQQRJDQACQCAEQQlLDQAgBEF9aiEDDAELIARBemohAwsgACADNgJkDAELIAAgDiADayIONgIEIAAgBCADayIDNgIAIA0gDyAPQQV2azsBACAAIApBAXRqIg9B+ANqIQQCQAJAIANB////B00NACAJIQoMAQsgACADQQh0IgM2AgAgACAJQQFqIgo2AhAgACAOQQh0IAAoAgwgCWotAAByIg42AgQLAkACQCAOIANBC3YgBC8BACINbCIJSQ0AIAAgDiAJayIONgIEIAAgAyAJayIDNgIAIAQgDSANQQV2azsBACAPQZAEaiENAkACQCADQf///wdNDQAgCiEQDAELIAAgA0EIdCIDNgIAIAAgCkEBaiIQNgIQIAAgDkEIdCAAKAIMIApqLQAAciIONgIECwJAAkAgDiADQQt2IA0vAQAiCWwiBE8NACANIAlBgBAgCWtBBXZqOwEAIAxB2ARqIQMCQCAEQf///wdLDQAgACAEQQh0IgQ2AgAgACAQQQFqNgIQIAAgDkEIdCAAKAIMIBBqLQAAciIONgIECwJAIA4gBEELdiADLwEAIg1sIglJDQAgACAOIAlrNgIEIAAgBCAJazYCACADIA0gDUEFdms7AQAMAgsgAyANQYAQIA1rQQV2ajsBACAAIAk2AgAgAEEBNgJoIABBCUELIAAoAmRBB0kbNgJkDAMLIAAgDiAEayIONgIEIA0gCSAJQQV2azsBACAPQagEaiENAkACQCADIARrIgNB////B00NACAQIQoMAQsgACADQQh0IgM2AgAgACAQQQFqIgo2AhAgACAOQQh0IAAoAgwgEGotAAByIg42AgQLAkACQCAOIANBC3YgDS8BACIEbCIJTw0AIAAgCTYCACANIARBgBAgBGtBBXZqOwEAIAAoAlghAwwBCyAAIA4gCWsiDjYCBCANIAQgBEEFdms7AQAgD0HABGohBAJAIAMgCWsiA0H///8HSw0AIAAgA0EIdCIDNgIAIAAgCkEBajYCECAAIA5BCHQgACgCDCAKai0AAHIiDjYCBAsCQAJAIA4gA0ELdiAELwEAIg1sIglPDQAgACAJNgIAIAQgDUGAECANa0EFdmo7AQAgACgCXCEDDAELIAAgDiAJazYCBCAAIAMgCWs2AgAgACgCYCEDIAAgACgCXDYCYCAEIA0gDUEFdms7AQALIAAgACgCWDYCXAsgACAAKAJUNgJYIAAgAzYCVAsgAEEIQQsgACgCZEEHSRs2AmQgACAHIAsQn4CAgAAMAQsgBCANQYAQIA1rQQV2ajsBACAAIAk2AgAgACAAKAJcNgJgIAAgACkCVDcCWCAAQQdBCiAAKAJkQQdJGzYCZCAAIAUgCxCfgICAACAAKAJoIgNBfmpBAyADQQZJGyEKIAAoAgAhA0EBIQ4DQCAAIApBB3RqIA5BAXQiDmpB2AdqIQ0CQAJAIANBgICACEkNACAAKAIEIQQMAQsgACADQQh0IgM2AgAgACAAKAIQIgRBAWo2AhAgACAAKAIEQQh0IAQgACgCDGotAAByIgQ2AgQLAkACQCAEIANBC3YgDS8BACIJbCIPSQ0AIAAgBCAPayIENgIEIAAgAyAPayIDNgIAIA0gCSAJQQV2azsBACAOQQFyIQ4MAQsgACAPNgIAIA0gCUGAECAJa0EFdmo7AQAgDyEDCyAOQcAASQ0ACwJAIA5BQGoiCUEDSw0AIAAgCTYCVAwBCyAAIA5BAXFBAnIiDTYCVCAJQQF2IQ8CQCAJQQ1LDQAgACANIA9Bf2oiDHQiCzYCVEEBIQ0gCCALQQF0akGEC2ohEEE/IA5rIRFBACEPA0AgECARIA1qQQF0aiEOAkACQCADQf///wdNDQAgAyEKDAELIAAgA0EIdCIKNgIAIAAgACgCECIDQQFqNgIQIAAgBEEIdCADIAAoAgxqLQAAciIENgIECwJAAkAgBCAKQQt2IA4vAQAiCWwiA0kNACAAIAQgA2siBDYCBCAAIAogA2siAzYCACAOIAkgCUEFdms7AQAgAEEBIA90IAtqIgs2AlQgDUEBdEEBciENDAELIAAgAzYCACAOIAlBgBAgCWtBBXZqOwEAIA1BAXQhDQsgDCAPQQFqIg9HDQAMAgsLIA9Be2ohDgNAAkAgA0H///8HSw0AIAAgA0EIdCIDNgIAIAAgACgCECIJQQFqNgIQIARBCHQgCSAAKAIMai0AAHIhBAsgACADQQF2IgM2AgAgACAEIANrIgRBH3UiCSANQQF0akEBaiINNgJUIAAgCSADcSAEaiIENgIEIA5Bf2oiDg0ACyAAIA1BBHQiCzYCVEEAIQ9BASEOA0AgACAOQQF0Ig5qQbwNaiENAkACQCADQf///wdNDQAgAyEKDAELIAAgA0EIdCIKNgIAIAAgACgCECIDQQFqNgIQIAAgBEEIdCADIAAoAgxqLQAAciIENgIECwJAAkAgBCAKQQt2IA0vAQAiCWwiA0kNACAAIAQgA2siBDYCBCAAIAogA2siAzYCACANIAkgCUEFdms7AQAgAEEBIA90IAtqIgs2AlQgDkEBciEODAELIAAgAzYCACANIAlBgBAgCWtBBXZqOwEACyAPQQFqIg9BBEcNAAsLAkAgASAGIAAoAlQQnoCAgAANAEEADwsgACgCICECCyACIAAoAihJDQALC0EBIQMCQCAAKAIAIgRB////B0sNACAAIARBCHQ2AgBBASEDIAAgACgCECIEQQFqNgIQIAAgACgCBEEIdCAEIAAoAgxqLQAAcjYCBAsgAwtwAQF/AkBBqN4BEICAgIAAIgJFDQAgAkE0aiABNgIAIAJBPGogADYCAAJAAkACQCAAQX9qDgIAAQILIAIgARCAgICAACIANgIYIAANASACEIKAgIAADAILIAJBADYCGCACQThqQQA2AgALIAIPC0EAC9IBAQJ/QQYhAgJAIAFBJ0sNACAAQTBqIAFBAXFBAnIgAUEBdkELanQiATYCAAJAAkAgAEE8aigCACIDRQ0AQQQhAiABIABBNGooAgBLDQIgAEEsaiABNgIAIANBAkcNACAAQThqIgMoAgAgAU8NACAAIAE2AjggACgCGBCCgICAACAAIAAoAjAQgICAgAAiATYCGCABDQBBAyECDAELQQAhAiAAQQA2AkAgAEHQAGpBAToAACAAQegAakEANgIAIABB5N0BaiEDCyADQQA2AgALIAILIwACQCAAQTxqKAIARQ0AIAAoAhgQgoCAgAALIAAQgoCAgAAL9QEBBH9BACEDAkAgACgCDCACTQ0AIAAoAhggAk0NACABIAEoAgAiBCAAKAIQIAAoAggiBWsiBiAEIAYgBEkbIgRrNgIAIAUgAkF/c2ohAQJAIAUgAksNACAAKAIUIAFqIQELIAAoAgAiAiABai0AACEGQQEhAyAAIAVBAWo2AgggAiAFaiAGOgAAAkAgBEF/aiICRQ0AA0AgACgCACIFQQAgAUEBaiIBIAEgACgCFEYbIgFqLQAAIQQgACAAKAIIIgZBAWo2AgggBSAGaiAEOgAAIAJBf2oiAg0ACwsgACgCDCAAKAIIIgFPDQAgACABNgIMCyADC8gEAQd/AkACQCAAKAIAIgNBgICACEkNACAAKAIEIQQMAQsgACADQQh0IgM2AgAgACAAKAIQIgVBAWo2AhAgACAAKAIEQQh0IAUgACgCDGotAAByIgQ2AgQLAkACQCAEIANBC3YgAS8BACIGbCIFTw0AIAEgBkGAECAGa0EFdmo7AQAgASACQQR0akEEaiEHQQghCEECIQkMAQsgACAEIAVrIgQ2AgQgASAGIAZBBXZrOwEAAkAgAyAFayIDQf///wdLDQAgACADQQh0IgM2AgAgACAAKAIQIgVBAWo2AhAgACAEQQh0IAUgACgCDGotAAByIgQ2AgQLAkAgBCADQQt2IAEvAQIiBmwiBU8NACABIAZBgBAgBmtBBXZqOwECIAEgAkEEdGpBhAJqIQdBCCEIQQohCQwBCyAAIAQgBWsiBDYCBCABIAYgBkEFdms7AQIgAUGEBGohByADIAVrIQVBgAIhCEESIQkLIABB6ABqIAk2AgBBASEBA0AgByABQQF0IgFqIQMCQAJAIAVB////B00NACAFIQIMAQsgACAFQQh0IgI2AgAgACAAKAIQIgVBAWo2AhAgACAEQQh0IAUgACgCDGotAAByIgQ2AgQLAkACQCAEIAJBC3YgAy8BACIGbCIFSQ0AIAAgBCAFayIENgIEIAAgAiAFayIFNgIAIAMgBiAGQQV2azsBACABQQFyIQEMAQsgACAFNgIAIAMgBkGAECAGa0EFdmo7AQALIAEgCEkNAAsgAEHoAGogASAIayAJajYCAAsLNQEAQYAICy4IAAAAEAAAABgAAAAgAAAAKAAAADAAAABAAAAAUAAAAIAAAAAAAQAA/Td6WFoA\";\n\n/***/ }),\n/* 2 */\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__2__;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   XzReadableStream: () => (/* binding */ XzReadableStream)\n/* harmony export */ });\n/* harmony import */ var _dist_native_xz_decompress_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n\n\nconst ReadableStream = globalThis.ReadableStream\n    // Node < 18 support web streams, but it's not available as a global, so we need to require it.\n    // This won't be reached in modern browsers, and bundlers will ignore due to 'browser' field in package.json:\n    || (__webpack_require__(2).ReadableStream);\n\nconst XZ_OK = 0;\nconst XZ_STREAM_END = 1;\n\nclass XzContext {\n    constructor(moduleInstance) {\n        this.exports = moduleInstance.exports;\n        this.memory = this.exports.memory;\n        this.ptr = this.exports.create_context();\n        this._refresh();\n        this.bufSize = this.mem32[0];\n        this.inStart = this.mem32[1] - this.ptr;\n        this.inEnd = this.inStart + this.bufSize;\n        this.outStart = this.mem32[4] - this.ptr;\n    }\n\n    supplyInput(sourceDataUint8Array) {\n        this._refresh();\n        const inBuffer = this.mem8.subarray(this.inStart, this.inEnd);\n        inBuffer.set(sourceDataUint8Array, 0);\n        this.exports.supply_input(this.ptr, sourceDataUint8Array.byteLength);\n        this._refresh();\n    }\n\n    getNextOutput() {\n        const result = this.exports.get_next_output(this.ptr);\n        this._refresh();\n        if (result !== XZ_OK && result !== XZ_STREAM_END) {\n            throw new Error(`get_next_output failed with error code ${result}`);\n        }\n        const outChunk = this.mem8.slice(this.outStart, this.outStart + /* outPos */ this.mem32[5]);\n        return { outChunk, finished: result === XZ_STREAM_END };\n    }\n\n    needsMoreInput() {\n        return /* inPos */ this.mem32[2] === /* inSize */ this.mem32[3];\n    }\n\n    outputBufferIsFull() {\n        return /* outPos */ this.mem32[5] === this.bufSize;\n    }\n\n    resetOutputBuffer() {\n        this.outPos = this.mem32[5] = 0;\n    }\n\n    dispose() {\n        this.exports.destroy_context(this.ptr);\n        this.exports = null;\n    }\n\n    _refresh() {\n        if (this.memory.buffer !== this.mem8?.buffer) {\n            this.mem8 = new Uint8Array(this.memory.buffer, this.ptr);\n            this.mem32 = new Uint32Array(this.memory.buffer, this.ptr);\n        }\n    }\n}\n\nclass XzReadableStream extends ReadableStream {\n    static _moduleInstancePromise;\n    static _moduleInstance;\n    static async _getModuleInstance() {\n        const base64Wasm = _dist_native_xz_decompress_wasm__WEBPACK_IMPORTED_MODULE_0__.replace('data:application/wasm;base64,', '');\n        const wasmBytes = Uint8Array.from(atob(base64Wasm), c => c.charCodeAt(0)).buffer;\n        const wasmOptions = {};\n        const module = await WebAssembly.instantiate(wasmBytes, wasmOptions);\n        XzReadableStream._moduleInstance = module.instance;\n    }\n\n    constructor(compressedStream) {\n        let xzContext;\n        let unconsumedInput = null;\n        const compressedReader = compressedStream.getReader();\n\n        super({\n            async start(controller) {\n                if (!XzReadableStream._moduleInstance) {\n                    await (XzReadableStream._moduleInstancePromise || (XzReadableStream._moduleInstancePromise = XzReadableStream._getModuleInstance()));\n                }\n                xzContext = new XzContext(XzReadableStream._moduleInstance);\n            },\n\n            async pull(controller) {\n                if (xzContext.needsMoreInput()) {\n                    if (unconsumedInput === null || unconsumedInput.byteLength === 0) {\n                        const { done, value } = await compressedReader.read();\n                        if (!done) {\n                            unconsumedInput = value;\n                        }\n                    }\n                    const nextInputLength = Math.min(xzContext.bufSize, unconsumedInput.byteLength);\n                    xzContext.supplyInput(unconsumedInput.subarray(0, nextInputLength));\n                    unconsumedInput = unconsumedInput.subarray(nextInputLength);\n                }\n\n                const nextOutputResult = xzContext.getNextOutput();\n                controller.enqueue(nextOutputResult.outChunk);\n                xzContext.resetOutputBuffer();\n\n                if (nextOutputResult.finished) {\n                    xzContext.dispose(); // Not sure if this always happens\n                    controller.close();\n                }\n            },\n            cancel() {\n                xzContext.dispose(); // Not sure if this always happens\n                return compressedReader.cancel();\n            }\n        });\n    }\n}\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","// Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c`\nlet TABLE = [\n    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n];\nif (typeof Int32Array !== 'undefined') {\n    TABLE = new Int32Array(TABLE);\n}\nconst crc32 = (current, previous) => {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    let crc = previous === 0 ? 0 : ~~previous ^ -1;\n    for (let index = 0; index < current.length; index++) {\n        crc = TABLE[(crc ^ current[index]) & 0xff] ^ (crc >>> 8);\n    }\n    return crc ^ -1;\n};\nexport default crc32;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-prototype-builtins */\nimport { Buffer } from 'buffer';\nconst createBuffer = (value, encoding) => Buffer.from(value, encoding);\nexport default createBuffer;\n","import crc32 from './calculators/crc32.js';\nimport defineCrc from './define_crc.js';\nexport default defineCrc('crc-32', crc32);\n","import createBuffer from './create_buffer.js';\nexport default function defineCrc(model, calculator) {\n    const result = (value, previous) => calculator(createBuffer(value), previous) >>> 0;\n    result.signed = (value, previous) => calculator(createBuffer(value), previous);\n    result.unsigned = result;\n    result.model = model;\n    return result;\n}\n"],"names":["baseNumbers","a","A","c","C","g","G","t","T","n","N","makeFlagsHelper","x","r","code","name","flags","BamFlagsDecoder","CramFlagsDecoder","MateFlagsDecoder","CramRecord","constructor","cramFlags","readLength","mappingQuality","lengthOnRef","qualityScores","mateRecordNumber","readBases","readFeatures","mateToUse","readGroupId","readName","sequenceId","uniqueId","templateSize","alignmentStart","tags","this","mate","mateFlags","mateReadName","mateSequenceId","mateAlignmentStart","isPaired","isProperlyPaired","isSegmentUnmapped","isMateUnmapped","isReverseComplemented","isMateReverseComplemented","isRead1","isRead2","isSecondary","isFailedQc","isDuplicate","isSupplementary","isDetached","hasMateDownStream","isPreservingQualityScores","isUnknownBases","getReadBases","_refRegion","decoded","cramRecord","refRegion","regionSeqOffset","start","seq","slice","toUpperCase","bases","regionPos","currentReadFeature","length","feature","pos","added","data","sub","chunk","decodeReadSequence","getPairOrientation","s1","s2","o1","o2","tmp","isize","templateLength","undefined","Error","join","addReferenceSequence","compressionScheme","forEach","readFeature","refCoord","refPos","refBase","charAt","ref","baseNumber","base","substitutionMatrix","decodeBaseSubstitution","end","toJSON","Object","keys","k","startsWith","CramError","CramUnimplementedError","CramMalformedError","CramArgumentError","unzip","input","from","inflate","TF_SHIFT","TOTFREQ","RANS_BYTE_L","FC","F","advanceStep","freq","scaleBits","AriDecoder","fc","Array","i","R","DecodingSymbol","symbolInit","sym","advanceSymbolStep","get","advanceSymbol","pptr","advance","renormalize","assert","result","ByteBuffer","nodeBuffer","initialInputPosition","_buffer","_position","b","getByte","getByteAt","position","put","val","putAt","setPosition","getInt","readInt32LE","remaining","CramBufferOverrunError","getBits","cursor","numBits","bytePosition","bitPosition","dlen","parseItf8","buffer","initialOffset","offset","countFlags","parseLtf8","readUInt16LE","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","parseItem","parser","startBufferPosition","startFilePosition","value","_endPosition","_size","tinyMemoize","_class","methodName","method","prototype","memoAttrName","res","call","Promise","resolve","catch","cramFileDefinition","_startOffset","dataView","DataView","byteOffset","magic","subarray","toString","majorVersion","getUint8","minorVersion","fileId","replaceAll","maxLength","makeTagSet","stringStart","stringEnd","str","push","formatMap","map","key","ents","console","warn","isMappedSliceHeader","header","refSeqId","cramUnmappedSliceHeader","numRecords","newOffset1","recordCounter","rc","newOffset2","numBlocks","newOffset3","numContentIds","newOffset4","contentIds","id","newOffset5","md5","cramMappedSliceHeader","refSeqStart","refSeqSpan","newOffset6","newOffset7","refBaseBlockId","newOffset8","cramEncodingSub","codecId","parametersBytes","parameters","bc","blockContentId","off","M2","M","numCodes","symbols","val2","numLengths","bitLengths","len","lengthsEncoding","valuesEncoding","stopByte","K","l2m","log2m","cramDataSeriesEncodingMap","mapSize","mapCount","String","fromCharCode","cramTagEncodingMap","k0","cramContainerHeader1","getInt32","alignmentSpan","numBases","numLandmarks","cramContainerHeader2","landmarks","landmark","crc32","getUint32","getSectionParsers","cramBlockHeader","d","compressionMethod","contentType","contentId","compressedSize","uncompressedSize","cramBlockCrc32","cramCompressionHeader","preservation","offsetRet","size","subbuf","tagSets","cramTagDictionary","cramPreservationMap","dataSeriesEncoding","tagEncoding","cramEncoding","readNullTerminatedString","parseTagData","tagType","Uint32Array","Int32Array","Int16Array","Uint16Array","Int8Array","Float32Array","parseInt","replace","arrayType","array","arr","Uint8Array","parseTagValueArray","decodeRecord","decodeDataSeries","sliceHeader","coreDataBlock","blocksByContentId","cursors","recordNumber","parsedContent","APdelta","lastAlignmentStart","readNamesIncluded","isUnmapped","setMateUnmapped","isOnNegativeStrand","setMateReverseComplemented","isWithMateDownstream","TLindex","TN","getTagNames","ntags","tagId","tagName","tagData","getCodecForTag","decode","isDecodeSequenceAsStar","readFeatureCount","currentReadPos","currentRefPos","decodeRFData","type","dataSeriesName","byteLength","toArray","readPosDelta","data1Schema","B","S","X","D","I","q","Q","H","P","data2Schema","decodeReadFeatures","isNaN","associateIntraSliceMate","allRecords","currentRecordNumber","thisRecord","mateRecord","complicatedMultiSegment","matedRecords","getAllMatedRecords","startRecord","records","starts","ends","estimatedTemplateLength","Math","max","min","calculateMultiSegmentMatedTemplateLength","lengthEstimate","calculateIntraSliceMatePairTemplateLength","CramSlice","container","containerPosition","sliceSize","file","getHeader","getDefinition","sectionParsers","containerHeader","readBlock","content","getBlocks","blockPosition","blocks","block","getCoreDataBlock","_getBlocksContentIdIndex","getBlockByContentId","getReferenceRegion","getCompressionScheme","refBlock","span","referenceRequired","fetchReferenceSequenceCallback","getAllRecords","getRecords","_fetchRecords","options","checkSequenceMD5","seqMd5","sequenceMD5","storedMd5","byte","coreBlock","externalBlocks","Map","getCursor","set","codec","getCodecForDataSeries","init","contentPosition","e","filterFunction","cacheKey","filePosition","recordsPromise","featureCache","filter","singleRefId","refRegions","record","seqId","NEGATIVE_INFINITY","all","values","async","split","CramCodec","dataType","instantiateCodec","super","arrayLength","_getLengthCodec","dataCodec","_getDataCodec","encodingParams","codecClasses","_decodeData","_decodeInt","_decodeByte","contentBlock","bytesRead","codes","codeBook","sortedCodes","sortedValuesByBitCode","sortedBitCodes","sortedBitLengthsByBitCode","bitCodeToValue","includes","TypeError","buildCodeBook","buildCodes","buildCaches","bitLength","_decode","_decodeZeroLengthCode","symbol","sort","codeLength","codeValue","entries","bitLengthInt","bitCode","delta","ii","numberOfSetBits","maxBitCode","fill","coreCursor","prevLen","bits","index","j","_decodeByteArray","dataBuffer","startPosition","stopPosition","numLeadingOnes","encodingData","CodecClass","dataSeriesTypes","BF","CF","RI","RL","AP","RG","MF","NS","NP","TS","NF","TC","FN","FP","BS","IN","SC","DL","BA","BB","RS","PD","HC","MQ","RN","QS","QQ","TL","CramContainerCompressionScheme","dataSeriesCodecCache","tagCodecCache","RR","tagIdsDictionary","TD","byteArray","matrix","parseSubstitutionMatrix","SM","test","ret","tagListId","endsWith","CramContainer","_readContainerHeader","getCompressionHeaderBlock","getFirstBlock","getSlice","slicePosition","fileSize","stat","bytes1","allocUnsafe","read","header1","numLandmarksSize","v","bytes2","header2","validateChecksums","checkCrc32","assign","maybeUrl","maybePath","maybeFilehandle","parseHeaderText","text","lines","line","tag","fields","f","indexOf","CramFile","args","url","path","filehandle","seqFetch","cacheSize","maxSize","uInt32","uInt8","getEndianness","headbytes","definition","getSamHeader","firstContainer","getContainerById","firstBlock","headerLength","getHeaderText","containerNumber","currentContainer","getContainerAtPosition","currentHeader","recordedCrc32","description","calculatedCrc32","unsigned","containerCount","readBlockHeader","_parseSection","section","preReadBuffer","_uncompress","inputBuffer","outputBuffer","copy","decompressedResponse","Response","XzReadableStream","buf","ReadableStream","controller","enqueue","close","arrayBuffer","order","outputSize","output","out","syms","cp","decoder","rle","readStatsO0","rans0","rans1","rans2","rans3","outputEnd","c0","c1","c2","c3","uncompressOrder0Way4","rlei","rlej","RansDecSymbol","readStatsO1","rans7","isz4","i0","i1","i2","i7","l0","l1","l2","l7","c7","uncompressOrder1Way4","blockHeader","blockContentPosition","uncompressedData","compressedData","crc","addRecordToIndex","containerStart","sliceStart","sliceBytes","s","CraiIndex","parseIndex","uncompressedBuffer","readFile","readUInt32LE","currentRecord","currentString","charCode","ent","e2","getIndex","parseIndexP","hasDataForReferenceSequence","getEntriesForRange","queryStart","queryEnd","seqEntries","compare","entry","entryStart","entryEnd","bins","IndexedCramFile","cram","cramUrl","cramPath","cramFilehandle","getRecordsForRange","opts","viewAsPairs","pairAcrossChr","maxInsertSize","slices","sliceResults","getRecordsInSlice","concat","readNames","readIds","unmatedPairs","matePromises","abs","mateSlices","mateBlocks","mateChunks","localeCompare","item","ary","mateRecordPromises","mateFeatPromises","recordPromise","featPromise","then","feats","mateRecs","newMateFeats","newMates","reduce","current","RangeCoder","IOStream","ByteModel","bzip2","ARITH_PACK","module","exports","src","stream","decodeStream","n_out","ReadByte","ReadUint7","e_len","decodeStripe","decodePackMeta","decodeCat","decodeExt","decodeRLE1","decodeRLE0","decode1","decode0","decodePack","encode","WriteByte","WriteUint7","Buffer","encodeStripe","pack_meta","encodePack","WriteStream","encodeRLE1","encodeRLE0","encode1","encode0","max_sym","byte_model","RangeStartDecode","ModelDecode","n_in","ModelEncode","RangeFinishEncode","last","decompress","encodeExt","model_lit","model_run","part","run","rctx","nsym","packMeta","meta","floor","hdr","ulen","comp","total","comp0","comp1","WriteData","clen","low","range","FFnum","carry","cache","RangeGetFrequency","tot_freq","RangeDecode","sym_low","sym_freq","RangeShiftLow","dst","RangeEncode","old_low","log","total_freq","acc","ModelRenormalise","read_array","tab","z","run_len","fqz_update_ctx","params","state","context","qctx","qshift","qtab","qbits","qloc","do_pos","ptab","p","ploc","do_delta","dtab","dloc","prevq","do_sel","sloc","decode_fqz_single_param","ReadUint16","pflags","do_dedup","fixed_len","do_qmap","do_qtab","qmap","decode_fqz_new_record","gparams","model","rev","max_sel","sel","stab","do_rev","rec","is_dup","dup","store_array","tmp1","sz1","i_start","tmp2","sz2","curr","q_lens","gflags","nparam","error","decode_fqz_params","qual","fqz_create_models","qual_len","reverse_qualities","decode_fqz","q_dirs","qhist","qd_last","qd_fixed","pbits","pshift","dbits","dshift","sbits","do_stab","pick_fqz_params","dsqr","WriteUint16","encode_fqz_params","model_qual","model_len","model_sel","process","exit","qlast","q1","encode_fqz","r4x8","r4x16","arith","fqzcomp","tok3","r4x8_uncompress","r4x16_uncompress","arith_uncompress","fqzcomp_uncompress","tok3_uncompress","start_pos","EOF","ReadData","ReadChar","ReadUint32","ReadString","ReadITF8","WriteChar","charCodeAt","WriteString","u","WriteUint32","writeInt32LE","WriteITF8","WriteByteNeg","RansGetCumulativeFreq","RansGetSymbolFromFreq","RansBuildC2S","C2S","RansAdvanceStep","RansRenorm","RansEncFlush","RansEncPut","scale_bits","R_max","RansEncRenorm","ReadFrequencies0","last_sym","NormaliseFrequencies0","tot","scale","max_val","max_idx","renorm","WriteFrequencies0","nbytes","i4","RansDecode0","ReadFrequencies1","L","nbytes4","RansDecode1","BuildFrequencies0","alloc","rans_out","freq_tab","RansEncode0","F0","BuildFrequencies1","NormaliseFrequencies1","WriteFrequencies1","idx","RansEncode1","RansEncodeStripe","RansDecodeStream","format","stripe","cat","pack","RansDecodeStripe","pack_len","DecodePackMeta","rle_len","rle_meta","u_meta_len","comp_meta_len","DecodeRLEMeta","shift","freq_src","ReadAlphabet","NormaliseFrequencies0_Shift","DecodeRLE","DecodePack","ceil","EncodePack","nrle","dpos","cmeta","EncodeRLE","bit_size","log2","WriteAlphabet","cfreq","NormaliseFrequencies1_Shift","rans","LeftPadNumber","DecodeSingleName","m","l","FillByteStreams","tnum","names","max_tok","max_len","SerialiseByteStreams","use_arith","try_compress","best","methods","lvl","TokeniseName","tok","match","substring","ntok","TOK_END","separator","nnames","in_size","ttype","tok_new","tok_dup","dup_pos","dup_type","DecodeTokenByteStreams","bytes","bit","BITMASK","left","chunks","bufsize","h","origPtr","symToByte","symTotal","groupCount","nSelectors","mtfSymbol","selectors","uc","splice","symCount","groups","minLen","maxLen","hufGroup","temp","MAX_HUFCODE_BITS","permute","limit","pp","runPos","count","selector","byteCount","GROUP_SIZE","nextSym","copies","previous","outbyte","Infinity","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","decodeURIComponent","escape","base64map","crypt","rotl","rotr","endian","randomBytes","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","substr","bytesToBase64","base64","triplet","base64ToBytes","imod4","pow","isBuffer","obj","readFloatLE","isSlowBuffer","_isBuffer","message","encoding","isArray","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","factory","__WEBPACK_EXTERNAL_MODULE__2__","__webpack_modules__","__webpack_module_cache__","moduleId","cachedModule","o","defineProperty","enumerable","prop","hasOwnProperty","Symbol","toStringTag","_dist_native_xz_decompress_wasm__WEBPACK_IMPORTED_MODULE_0__","globalThis","XzContext","moduleInstance","memory","ptr","create_context","_refresh","bufSize","mem32","inStart","inEnd","outStart","supplyInput","sourceDataUint8Array","mem8","supply_input","getNextOutput","get_next_output","outChunk","finished","needsMoreInput","outputBufferIsFull","resetOutputBuffer","outPos","dispose","destroy_context","static","_getModuleInstance","base64Wasm","wasmBytes","atob","WebAssembly","instantiate","_moduleInstance","instance","compressedStream","xzContext","unconsumedInput","compressedReader","getReader","_moduleInstancePromise","pull","done","nextInputLength","nextOutputResult","cancel","TABLE","calculator","signed"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5101.993a6b6e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5101],{63165:(o,s,e)=>{e.d(s,{A:()=>u});var r=e(7552),t=e(93878),a=e(70799),i=e(51148),n=e(60129),c=e(4785),l=e(79509),d=e(69500);const A=(0,i.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(o,s)=>s.root})((0,n.A)((({theme:o})=>({padding:o.spacing(1,2,2)})))),u=r.forwardRef((function(o,s){const e=(0,c.b)({props:o,name:"MuiAccordionDetails"}),{className:r,...i}=e,n=e,u=(o=>{const{classes:s}=o;return(0,a.A)({root:["root"]},l.n,s)})(n);return(0,d.jsx)(A,{className:(0,t.A)(u.root,r),ref:s,ownerState:n,...i})}))},79509:(o,s,e)=>{e.d(s,{A:()=>i,n:()=>a});var r=e(33761),t=e(85693);function a(o){return(0,t.Ay)("MuiAccordionDetails",o)}const i=(0,r.A)("MuiAccordionDetails",["root"])},75101:(o,s,e)=>{e.r(s),e.d(s,{accordionDetailsClasses:()=>t.A,default:()=>r.A,getAccordionDetailsUtilityClass:()=>t.n});var r=e(63165),t=e(79509)}}]);
+//# sourceMappingURL=5101.993a6b6e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5101.993a6b6e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5101.993a6b6e.chunk.js","mappings":"oOAWA,MASMA,GAAuB,QAAO,MAAO,CACzCC,KAAM,sBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHlB,EAI1B,QAAU,EACXC,YACI,CACJC,QAASD,EAAME,QAAQ,EAAG,EAAG,QA0C/B,EAxCsC,cAAiB,SAA0BC,EAASC,GACxF,MAAMP,GAAQ,OAAgB,CAC5BA,MAAOM,EACPT,KAAM,yBAEF,UACJW,KACGC,GACDT,EACEU,EAAaV,EACbW,EA5BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAAiCS,EAAQ,EAqBtDC,CAAkBF,GAClC,OAAoB,SAAKd,EAAsB,CAC7CY,WAAW,OAAKG,EAAQT,KAAMM,GAC9BD,IAAKA,EACLG,WAAYA,KACTD,GAEP,G,qEC5CO,SAASI,EAAgCf,GAC9C,OAAO,QAAqB,sBAAuBA,EACrD,CACA,MACA,GADgC,OAAuB,sBAAuB,CAAC,Q","sources":["../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../../../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getAccordionDetailsUtilityClass } from \"./accordionDetailsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n})));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionDetailsRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;"],"names":["AccordionDetailsRoot","name","slot","overridesResolver","props","styles","root","theme","padding","spacing","inProps","ref","className","other","ownerState","classes","useUtilityClasses","getAccordionDetailsUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5132.00a31df0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5132],{55132:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});var a=n(7552),r=n(943),i=n(68446),o=n(33039),l=n.n(o),s=n(68984),c=n(51762);const d={AM:"The smallest template-independent mapping quality in the template",AS:"Alignment score generated by aligner",BC:"Barcode sequence identifying the sample",BQ:"Offset to base alignment quality (BAQ)",BZ:"Phred quality of the unique molecular barcode bases in the {OX} tag",CB:"Cell identifier",CC:"Reference name of the next hit",CM:"Edit distance between the color sequence and the color reference (see also {NM})",CO:"Free-text comments",CP:"Leftmost coordinate of the next hit",CQ:"Color read base qualities",CR:"Cellular barcode sequence bases (uncorrected)",CS:"Color read sequence",CT:"Complete read annotation tag, used for consensus annotation dummy features",CY:"Phred quality of the cellular barcode sequence in the {CR} tag",E2:"The 2nd most likely base calls",FI:"The index of segment in the template",FS:"Segment suffix",FZ:"Flow signal intensities",GC:"Reserved for backwards compatibility reasons",GQ:"Reserved for backwards compatibility reasons",GS:"Reserved for backwards compatibility reasons",H0:"Number of perfect hits",H1:"Number of 1-difference hits (see also {NM})",H2:"Number of 2-difference hits",HI:"Query hit index",IH:"Query hit total count",LB:"Library",MC:"CIGAR string for mate/next segment",MD:"String encoding mismatched and deleted reference bases",MF:"Reserved for backwards compatibility reasons",MI:"Molecular identifier; a string that uniquely identifies the molecule from which the record was derived",ML:"Base modification probabilities",MM:"Base modifications / methylation ",MQ:"Mapping quality of the mate/next segment",NH:"Number of reported alignments that contain the query in the current record",NM:"Edit distance to the reference",OA:"Original alignment",OC:"Original CIGAR (deprecated; use {OA} instead)",OP:"Original mapping position (deprecated; use {OA} instead)",OQ:"Original base quality",OX:"Original unique molecular barcode bases",PG:"Program",PQ:"Phred likelihood of the template",PT:"Read annotations for parts of the padded read sequence",PU:"Platform unit",Q2:"Phred quality of the mate/next segment sequence in the {R2} tag",QT:"Phred quality of the sample barcode sequence in the {BC} tag",QX:"Quality score of the unique molecular identifier in the {RX} tag",R2:"Sequence of the mate/next segment in the template",RG:"Read group",RT:"Reserved for backwards compatibility reasons",RX:"Sequence bases of the (possibly corrected) unique molecular identifier",S2:"Reserved for backwards compatibility reasons",SA:"Other canonical alignments in a chimeric alignment",SM:"Template-independent mapping quality",SQ:"Reserved for backwards compatibility reasons",TC:"The number of segments in the template",TS:"Transcript strand",U2:"Phred probability of the 2nd call being wrong conditional on the best being wrong",UQ:"Phred likelihood of the segment, conditional on the mapping being correct"};var u=n(83867),m=n(33371),f=n(32808),h=n(75785),p=n(32106);function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},g.apply(null,arguments)}const b=(0,h.n9)()({compact:{paddingRight:0,paddingTop:0,paddingBottom:0}}),y=["read paired","read mapped in proper pair","read unmapped","mate unmapped","read reverse strand","mate reverse strand","first in pair","second in pair","not primary alignment","read fails platform/vendor quality checks","read is PCR or optical duplicate","supplementary alignment"];function v(e){const{classes:t}=b(),{feature:n}=e,{flags:r}=n;return a.createElement(s.BaseCard,g({},e,{title:"Flags"}),a.createElement(p.A,{name:"Flag",value:r}),a.createElement(u.A,null,y.map(((e,n)=>{const i=r&1<<n,o=`${e}_${i}`;return a.createElement(m.A,{key:o,control:a.createElement(f.A,{className:t.compact,checked:Boolean(i),name:e,readOnly:!0}),label:e})}))))}var C=n(87731);function w({locString:e,model:t}){return a.createElement(C.A,{onClick:n=>{n.preventDefault(),(0,c.h)(e,t)},href:"#"},e)}var q=n(31409),O=n.n(q);function S({value:e}){const[t,n]=(0,a.useState)(!1),[r,i]=(0,a.useState)(!1),o=String(e);return o.length>100?a.createElement(a.Fragment,null,a.createElement("button",{type:"button",onClick:()=>{O()(o),i(!0),setTimeout((()=>{i(!1)}),700)}},r?"Copied to clipboard":"Copy"),a.createElement("button",{type:"button",onClick:()=>{n((e=>!e))}},t?"Show less":"Show more"),a.createElement("div",null,t?o:`${o.slice(0,100)}...`)):a.createElement("div",null,o)}function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},E.apply(null,arguments)}const R=(0,a.lazy)((()=>n.e(5736).then(n.bind(n,15736)))),k=(0,a.lazy)((()=>n.e(9114).then(n.bind(n,9114)))),P=["clipPos","flags"],A=(0,i.observer)((function(e){const{model:t}=e,{featureData:n}=t,i=l()(n),o=(0,c.b)("SA",i),{flags:u}=i;return a.createElement(r.A,{"data-testid":"alignment-side-drawer"},a.createElement(s.FeatureDetails,E({},e,{omit:P,descriptions:{...d,tags:d},feature:i,formatter:(e,n)=>"next_segment_position"===n?a.createElement(w,{model:t,locString:e}):a.createElement(S,{value:e})})),void 0!==o?a.createElement(R,{model:t,tag:o,feature:i}):null,1&u?a.createElement(k,{model:t,feature:i}):null,void 0!==u?a.createElement(v,E({feature:i},e)):null)}))},51762:(e,t,n)=>{n.d(t,{b:()=>r,h:()=>i});var a=n(99546);function r(e,t){return t.tags?.[e]||t[e]}async function i(e,t){const n=(0,a.getSession)(t),{view:r}=t;try{if(!r)throw new Error("No view associated with this view anymore");await r.navToLocString(e)}catch(e){console.error(e),n.notify(`${e}`)}}}}]);
+//# sourceMappingURL=5132.00a31df0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5132.00a31df0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5132.00a31df0.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/AlignmentsFeatureDetail/tagInfo.ts","../../../plugins/alignments/src/AlignmentsFeatureDetail/Flags.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/PairLink.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/Formatter.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/util.ts"],"sourcesContent":["export const tags = {\n  AM: 'The smallest template-independent mapping quality in the template',\n  AS: 'Alignment score generated by aligner',\n  BC: 'Barcode sequence identifying the sample',\n  BQ: 'Offset to base alignment quality (BAQ)',\n  BZ: 'Phred quality of the unique molecular barcode bases in the {OX} tag',\n  CB: 'Cell identifier',\n  CC: 'Reference name of the next hit',\n  CM: 'Edit distance between the color sequence and the color reference (see also {NM})',\n  CO: 'Free-text comments',\n  CP: 'Leftmost coordinate of the next hit',\n  CQ: 'Color read base qualities',\n  CR: 'Cellular barcode sequence bases (uncorrected)',\n  CS: 'Color read sequence',\n  CT: 'Complete read annotation tag, used for consensus annotation dummy features',\n  CY: 'Phred quality of the cellular barcode sequence in the {CR} tag',\n  E2: 'The 2nd most likely base calls',\n  FI: 'The index of segment in the template',\n  FS: 'Segment suffix',\n  FZ: 'Flow signal intensities',\n  GC: 'Reserved for backwards compatibility reasons',\n  GQ: 'Reserved for backwards compatibility reasons',\n  GS: 'Reserved for backwards compatibility reasons',\n  H0: 'Number of perfect hits',\n  H1: 'Number of 1-difference hits (see also {NM})',\n  H2: 'Number of 2-difference hits',\n  HI: 'Query hit index',\n  IH: 'Query hit total count',\n  LB: 'Library',\n  MC: 'CIGAR string for mate/next segment',\n  MD: 'String encoding mismatched and deleted reference bases',\n  MF: 'Reserved for backwards compatibility reasons',\n  MI: 'Molecular identifier; a string that uniquely identifies the molecule from which the record was derived',\n  ML: 'Base modification probabilities',\n  MM: 'Base modifications / methylation ',\n  MQ: 'Mapping quality of the mate/next segment',\n  NH: 'Number of reported alignments that contain the query in the current record',\n  NM: 'Edit distance to the reference',\n  OA: 'Original alignment',\n  OC: 'Original CIGAR (deprecated; use {OA} instead)',\n  OP: 'Original mapping position (deprecated; use {OA} instead)',\n  OQ: 'Original base quality',\n  OX: 'Original unique molecular barcode bases',\n  PG: 'Program',\n  PQ: 'Phred likelihood of the template',\n  PT: 'Read annotations for parts of the padded read sequence',\n  PU: 'Platform unit',\n  Q2: 'Phred quality of the mate/next segment sequence in the {R2} tag',\n  QT: 'Phred quality of the sample barcode sequence in the {BC} tag',\n  QX: 'Quality score of the unique molecular identifier in the {RX} tag',\n  R2: 'Sequence of the mate/next segment in the template',\n  RG: 'Read group',\n  RT: 'Reserved for backwards compatibility reasons',\n  RX: 'Sequence bases of the (possibly corrected) unique molecular identifier',\n  S2: 'Reserved for backwards compatibility reasons',\n  SA: 'Other canonical alignments in a chimeric alignment',\n  SM: 'Template-independent mapping quality',\n  SQ: 'Reserved for backwards compatibility reasons',\n  TC: 'The number of segments in the template',\n  TS: 'Transcript strand',\n  U2: 'Phred probability of the 2nd call being wrong conditional on the best being wrong',\n  UQ: 'Phred likelihood of the segment, conditional on the mapping being correct',\n}\n","import React from 'react'\nimport { Checkbox, FormControlLabel, FormGroup } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport SimpleField from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/SimpleField'\n\nconst useStyles = makeStyles()({\n  compact: {\n    paddingRight: 0,\n    paddingTop: 0,\n    paddingBottom: 0,\n  },\n})\n\nconst flagNames = [\n  'read paired',\n  'read mapped in proper pair',\n  'read unmapped',\n  'mate unmapped',\n  'read reverse strand',\n  'mate reverse strand',\n  'first in pair',\n  'second in pair',\n  'not primary alignment',\n  'read fails platform/vendor quality checks',\n  'read is PCR or optical duplicate',\n  'supplementary alignment',\n]\n\nexport default function AlignmentFlags(props: { feature: { flags: number } }) {\n  const { classes } = useStyles()\n  const { feature } = props\n  const { flags } = feature\n\n  return (\n    <BaseCard {...props} title=\"Flags\">\n      <SimpleField name=\"Flag\" value={flags} />\n      <FormGroup>\n        {flagNames.map((name, idx) => {\n          const val = flags & (1 << idx)\n          const key = `${name}_${val}`\n          return (\n            <FormControlLabel\n              key={key}\n              control={\n                <Checkbox\n                  className={classes.compact}\n                  checked={Boolean(val)}\n                  name={name}\n                  readOnly\n                />\n              }\n              label={name}\n            />\n          )\n        })}\n      </FormGroup>\n    </BaseCard>\n  )\n}\n","import React from 'react'\nimport { Link } from '@mui/material'\n\n// locals\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\nimport { navToLoc } from './util'\n\nexport default function PairLink({\n  locString,\n  model,\n}: {\n  locString: string\n  model: AlignmentFeatureWidgetModel\n}) {\n  return (\n    <Link\n      onClick={event => {\n        event.preventDefault()\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        navToLoc(locString, model)\n      }}\n      href=\"#\"\n    >\n      {locString}\n    </Link>\n  )\n}\n","import React, { useState } from 'react'\nimport copy from 'copy-to-clipboard'\n\n// this 'show more...' used specifically as a formatter on alignments feature\n// details because long SEQ or CRAM files, even a single div full of a ton of\n// data from a long read, can slow down the rest of the app\nexport default function Formatter({ value }: { value: unknown }) {\n  const [show, setShow] = useState(false)\n  const [copied, setCopied] = useState(false)\n  const display = String(value)\n  return display.length > 100 ? (\n    <>\n      <button\n        type=\"button\"\n        onClick={() => {\n          copy(display)\n          setCopied(true)\n          setTimeout(() => {\n            setCopied(false)\n          }, 700)\n        }}\n      >\n        {copied ? 'Copied to clipboard' : 'Copy'}\n      </button>\n      <button\n        type=\"button\"\n        onClick={() => {\n          setShow(val => !val)\n        }}\n      >\n        {show ? 'Show less' : 'Show more'}\n      </button>\n      <div>{show ? display : `${display.slice(0, 100)}...`}</div>\n    </>\n  ) : (\n    <div>{display}</div>\n  )\n}\n","import React, { lazy } from 'react'\nimport { Paper } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport clone from 'clone'\nimport { FeatureDetails } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\n\n// locals\nimport { getTag } from './util'\nimport { tags } from './tagInfo'\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\n\n// local components\nimport Flags from './Flags'\nimport PairLink from './PairLink'\nimport Formatter from './Formatter'\n\n// lazies\nconst SupplementaryAlignments = lazy(() => import('./SupplementaryAlignments'))\nconst LinkedPairedAlignments = lazy(() => import('./LinkedPairedAlignments'))\n\nconst omit = ['clipPos', 'flags']\n\nconst AlignmentsFeatureDetails = observer(function (props: {\n  model: AlignmentFeatureWidgetModel\n}) {\n  const { model } = props\n  const { featureData } = model\n  const feat = clone(featureData)\n  const SA = getTag('SA', feat) as string | undefined\n  const { flags } = feat\n  return (\n    <Paper data-testid=\"alignment-side-drawer\">\n      <FeatureDetails\n        {...props}\n        omit={omit}\n        // @ts-expect-error\n        descriptions={{ ...tags, tags: tags }}\n        feature={feat}\n        formatter={(value, key) =>\n          key === 'next_segment_position' ? (\n            <PairLink model={model} locString={value as string} />\n          ) : (\n            <Formatter value={value} />\n          )\n        }\n      />\n      {SA !== undefined ? (\n        <SupplementaryAlignments model={model} tag={SA} feature={feat} />\n      ) : null}\n      {flags & 1 ? (\n        <LinkedPairedAlignments model={model} feature={feat} />\n      ) : null}\n\n      {flags !== undefined ? <Flags feature={feat} {...props} /> : null}\n    </Paper>\n  )\n})\n\nexport default AlignmentsFeatureDetails\n","import { getSession } from '@jbrowse/core/util'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\n\nexport function getTag(\n  tag: string,\n  feat: {\n    tags?: Record<string, unknown>\n    [key: string]: unknown\n  },\n) {\n  return feat.tags?.[tag] || feat[tag]\n}\n\nexport async function navToLoc(locString: string, model: IAnyStateTreeNode) {\n  const session = getSession(model)\n  const { view } = model\n  try {\n    if (view) {\n      await view.navToLocString(locString)\n    } else {\n      throw new Error('No view associated with this view anymore')\n    }\n  } catch (e) {\n    console.error(e)\n    session.notify(`${e}`)\n  }\n}\n"],"names":["tags","AM","AS","BC","BQ","BZ","CB","CC","CM","CO","CP","CQ","CR","CS","CT","CY","E2","FI","FS","FZ","GC","GQ","GS","H0","H1","H2","HI","IH","LB","MC","MD","MF","MI","ML","MM","MQ","NH","NM","OA","OC","OP","OQ","OX","PG","PQ","PT","PU","Q2","QT","QX","R2","RG","RT","RX","S2","SA","SM","SQ","TC","TS","U2","UQ","useStyles","makeStyles","compact","paddingRight","paddingTop","paddingBottom","flagNames","AlignmentFlags","props","classes","feature","flags","React","BaseCard","_extends","title","SimpleField","name","value","FormGroup","map","idx","val","key","FormControlLabel","control","Checkbox","className","checked","Boolean","readOnly","label","PairLink","locString","model","Link","onClick","event","preventDefault","navToLoc","href","Formatter","show","setShow","useState","copied","setCopied","display","String","length","type","copy","setTimeout","slice","SupplementaryAlignments","lazy","LinkedPairedAlignments","omit","observer","featureData","feat","clone","getTag","Paper","FeatureDetails","descriptions","formatter","undefined","tag","Flags","async","session","getSession","view","Error","navToLocString","e","console","error","notify"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5156.75195722.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5156],{2775:()=>{}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/518.7222a328.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,33 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[518],{27943:(t,e,a)=>{a.d(e,{A:()=>v});var n=a(7552),i=a(93878),r=a(70799),o=a(86259),s=a(72639),l=a(64761),h=a(51148),d=a(60129),p=a(4785),u=a(76819),c=a(69500);const m=l.i7`
+  0% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0.4;
+  }
+
+  100% {
+    opacity: 1;
+  }
+`,f=l.i7`
+  0% {
+    transform: translateX(-100%);
+  }
+
+  50% {
+    /* +0.5s of delay between each loop */
+    transform: translateX(100%);
+  }
+
+  100% {
+    transform: translateX(100%);
+  }
+`,g="string"!=typeof m?l.AH`
+        animation: ${m} 2s ease-in-out 0.5s infinite;
+      `:null,b="string"!=typeof f?l.AH`
+        &::after {
+          animation: ${f} 2s linear 0.5s infinite;
+        }
+      `:null,w=(0,h.Ay)("span",{name:"MuiSkeleton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:a}=t;return[e.root,e[a.variant],!1!==a.animation&&e[a.animation],a.hasChildren&&e.withChildren,a.hasChildren&&!a.width&&e.fitContent,a.hasChildren&&!a.height&&e.heightAuto]}})((0,d.A)((({theme:t})=>{const e=(0,o.l_)(t.shape.borderRadius)||"px",a=(0,o.db)(t.shape.borderRadius);return{display:"block",backgroundColor:t.vars?t.vars.palette.Skeleton.bg:(0,s.X4)(t.palette.text.primary,"light"===t.palette.mode?.11:.13),height:"1.2em",variants:[{props:{variant:"text"},style:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 55%",transform:"scale(1, 0.60)",borderRadius:`${a}${e}/${Math.round(a/.6*10)/10}${e}`,"&:empty:before":{content:'"\\00a0"'}}},{props:{variant:"circular"},style:{borderRadius:"50%"}},{props:{variant:"rounded"},style:{borderRadius:(t.vars||t).shape.borderRadius}},{props:({ownerState:t})=>t.hasChildren,style:{"& > *":{visibility:"hidden"}}},{props:({ownerState:t})=>t.hasChildren&&!t.width,style:{maxWidth:"fit-content"}},{props:({ownerState:t})=>t.hasChildren&&!t.height,style:{height:"auto"}},{props:{animation:"pulse"},style:g||{animation:`${m} 2s ease-in-out 0.5s infinite`}},{props:{animation:"wave"},style:{position:"relative",overflow:"hidden",WebkitMaskImage:"-webkit-radial-gradient(white, black)","&::after":{background:`linear-gradient(\n                90deg,\n                transparent,\n                ${(t.vars||t).palette.action.hover},\n                transparent\n              )`,content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}}},{props:{animation:"wave"},style:b||{"&::after":{animation:`${f} 2s linear 0.5s infinite`}}}]}}))),v=n.forwardRef((function(t,e){const a=(0,p.b)({props:t,name:"MuiSkeleton"}),{animation:n="pulse",className:o,component:s="span",height:l,style:h,variant:d="text",width:m,...f}=a,g={...a,animation:n,component:s,variant:d,hasChildren:Boolean(f.children)},b=(t=>{const{classes:e,variant:a,animation:n,hasChildren:i,width:o,height:s}=t,l={root:["root",a,n,i&&"withChildren",i&&!o&&"fitContent",i&&!s&&"heightAuto"]};return(0,r.A)(l,u.E,e)})(g);return(0,c.jsx)(w,{as:s,ref:e,className:(0,i.A)(b.root,o),ownerState:g,...f,style:{width:m,height:l,...h}})}))},50518:(t,e,a)=>{a.r(e),a.d(e,{default:()=>n.A,getSkeletonUtilityClass:()=>i.E,skeletonClasses:()=>i.A});var n=a(27943),i=a(76819)},76819:(t,e,a)=>{a.d(e,{A:()=>o,E:()=>r});var n=a(33761),i=a(85693);function r(t){return(0,i.Ay)("MuiSkeleton",t)}const o=(0,n.A)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"])}}]);
+//# sourceMappingURL=518.7222a328.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/518.7222a328.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/518.7222a328.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Skeleton/Skeleton.js","../../../node_modules/@mui/material/Skeleton/skeletonClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from \"../styles/index.js\";\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getSkeletonUtilityClass } from \"./skeletonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    animation,\n    hasChildren,\n    width,\n    height\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n  };\n  return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes`\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0.4;\n  }\n\n  100% {\n    opacity: 1;\n  }\n`;\nconst waveKeyframe = keyframes`\n  0% {\n    transform: translateX(-100%);\n  }\n\n  50% {\n    /* +0.5s of delay between each loop */\n    transform: translateX(100%);\n  }\n\n  100% {\n    transform: translateX(100%);\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst pulseAnimation = typeof pulseKeyframe !== 'string' ? css`\n        animation: ${pulseKeyframe} 2s ease-in-out 0.5s infinite;\n      ` : null;\nconst waveAnimation = typeof waveKeyframe !== 'string' ? css`\n        &::after {\n          animation: ${waveKeyframe} 2s linear 0.5s infinite;\n        }\n      ` : null;\nconst SkeletonRoot = styled('span', {\n  name: 'MuiSkeleton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n  const radiusValue = toUnitless(theme.shape.borderRadius);\n  return {\n    display: 'block',\n    // Create a \"on paper\" color with sufficient contrast retaining the color\n    backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n    height: '1.2em',\n    variants: [{\n      props: {\n        variant: 'text'\n      },\n      style: {\n        marginTop: 0,\n        marginBottom: 0,\n        height: 'auto',\n        transformOrigin: '0 55%',\n        transform: 'scale(1, 0.60)',\n        borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n        '&:empty:before': {\n          content: '\"\\\\00a0\"'\n        }\n      }\n    }, {\n      props: {\n        variant: 'circular'\n      },\n      style: {\n        borderRadius: '50%'\n      }\n    }, {\n      props: {\n        variant: 'rounded'\n      },\n      style: {\n        borderRadius: (theme.vars || theme).shape.borderRadius\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren,\n      style: {\n        '& > *': {\n          visibility: 'hidden'\n        }\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren && !ownerState.width,\n      style: {\n        maxWidth: 'fit-content'\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren && !ownerState.height,\n      style: {\n        height: 'auto'\n      }\n    }, {\n      props: {\n        animation: 'pulse'\n      },\n      style: pulseAnimation || {\n        animation: `${pulseKeyframe} 2s ease-in-out 0.5s infinite`\n      }\n    }, {\n      props: {\n        animation: 'wave'\n      },\n      style: {\n        position: 'relative',\n        overflow: 'hidden',\n        /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n        WebkitMaskImage: '-webkit-radial-gradient(white, black)',\n        '&::after': {\n          background: `linear-gradient(\n                90deg,\n                transparent,\n                ${(theme.vars || theme).palette.action.hover},\n                transparent\n              )`,\n          content: '\"\"',\n          position: 'absolute',\n          transform: 'translateX(-100%)' /* Avoid flash during server-side hydration */,\n          bottom: 0,\n          left: 0,\n          right: 0,\n          top: 0\n        }\n      }\n    }, {\n      props: {\n        animation: 'wave'\n      },\n      style: waveAnimation || {\n        '&::after': {\n          animation: `${waveKeyframe} 2s linear 0.5s infinite`\n        }\n      }\n    }]\n  };\n}));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSkeleton'\n  });\n  const {\n    animation = 'pulse',\n    className,\n    component = 'span',\n    height,\n    style,\n    variant = 'text',\n    width,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    animation,\n    component,\n    variant,\n    hasChildren: Boolean(other.children)\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(SkeletonRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other,\n    style: {\n      width,\n      height,\n      ...style\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The animation.\n   * If `false` the animation effect is disabled.\n   * @default 'pulse'\n   */\n  animation: PropTypes.oneOf(['pulse', 'wave', false]),\n  /**\n   * Optional children to infer width and height from.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Height of the skeleton.\n   * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n   */\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of content that will be rendered.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n  /**\n   * Width of the skeleton.\n   * Useful when the skeleton is inside an inline element with no width of its own.\n   */\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n  return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;"],"names":["pulseKeyframe","waveKeyframe","pulseAnimation","waveAnimation","SkeletonRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","animation","hasChildren","withChildren","width","fitContent","height","heightAuto","theme","radiusUnit","shape","borderRadius","radiusValue","display","backgroundColor","vars","palette","Skeleton","bg","text","primary","mode","variants","style","marginTop","marginBottom","transformOrigin","transform","Math","round","content","visibility","maxWidth","position","overflow","WebkitMaskImage","background","action","hover","bottom","left","right","top","inProps","ref","className","component","other","Boolean","children","classes","slots","useUtilityClasses","as","getSkeletonUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5189.3e22269d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5189],{98459:(e,t,o)=>{o.d(t,{A:()=>S});var n=o(7552),r=o(93878),a=o(16157),i=o(26218),l=o(70799),s=o(51148),c=o(48231),p=o(60129),d=o(4785),u=o(94479),v=o(46302),m=o(51584),h=o(72367),b=o(69500);const A=(0,s.Ay)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],"entered"===o.state&&t.entered,"exited"===o.state&&!o.in&&"0px"===o.collapsedSize&&t.hidden]}})((0,p.A)((({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:e})=>"exited"===e.state&&!e.in&&"0px"===e.collapsedSize,style:{visibility:"hidden"}}]})))),x=(0,s.Ay)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),y=(0,s.Ay)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),f=n.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiCollapse"}),{addEndListener:s,children:p,className:f,collapsedSize:S="0px",component:L,easing:g,in:w,onEnter:C,onEntered:M,onEntering:R,onExit:j,onExited:z,onExiting:N,orientation:$="vertical",style:I,timeout:E=u.p0.standard,TransitionComponent:T=a.Ay,...D}=o,P={...o,orientation:$,collapsedSize:S},k=(e=>{const{orientation:t,classes:o}=e,n={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return(0,l.A)(n,h.E,o)})(P),W=(0,c.A)(),F=(0,i.A)(),H=n.useRef(null),_=n.useRef(),B="number"==typeof S?`${S}px`:S,G="horizontal"===$,K=G?"width":"height",O=n.useRef(null),V=(0,m.A)(t,O),q=e=>t=>{if(e){const o=O.current;void 0===t?e(o):e(o,t)}},J=()=>H.current?H.current[G?"clientWidth":"clientHeight"]:0,Q=q(((e,t)=>{H.current&&G&&(H.current.style.position="absolute"),e.style[K]=B,C&&C(e,t)})),U=q(((e,t)=>{const o=J();H.current&&G&&(H.current.style.position="");const{duration:n,easing:r}=(0,v.c)({style:I,timeout:E,easing:g},{mode:"enter"});if("auto"===E){const t=W.transitions.getAutoHeightDuration(o);e.style.transitionDuration=`${t}ms`,_.current=t}else e.style.transitionDuration="string"==typeof n?n:`${n}ms`;e.style[K]=`${o}px`,e.style.transitionTimingFunction=r,R&&R(e,t)})),X=q(((e,t)=>{e.style[K]="auto",M&&M(e,t)})),Y=q((e=>{e.style[K]=`${J()}px`,j&&j(e)})),Z=q(z),ee=q((e=>{const t=J(),{duration:o,easing:n}=(0,v.c)({style:I,timeout:E,easing:g},{mode:"exit"});if("auto"===E){const o=W.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${o}ms`,_.current=o}else e.style.transitionDuration="string"==typeof o?o:`${o}ms`;e.style[K]=B,e.style.transitionTimingFunction=n,N&&N(e)}));return(0,b.jsx)(T,{in:w,onEnter:Q,onEntered:X,onEntering:U,onExit:Y,onExited:Z,onExiting:ee,addEndListener:e=>{"auto"===E&&F.start(_.current||0,e),s&&s(O.current,e)},nodeRef:O,timeout:"auto"===E?null:E,...D,children:(e,t)=>(0,b.jsx)(A,{as:L,className:(0,r.A)(k.root,f,{entered:k.entered,exited:!w&&"0px"===B&&k.hidden}[e]),style:{[G?"minWidth":"minHeight"]:B,...I},ref:V,...t,ownerState:{...P,state:e},children:(0,b.jsx)(x,{ownerState:{...P,state:e},className:k.wrapper,ref:H,children:(0,b.jsx)(y,{ownerState:{...P,state:e},className:k.wrapperInner,children:p})})})})}));f&&(f.muiSupportAuto=!0);const S=f},72367:(e,t,o)=>{o.d(t,{A:()=>i,E:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiCollapse",e)}const i=(0,n.A)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"])},27897:(e,t,o)=>{o.d(t,{A:()=>v});var n=o(7552),r=o(93878),a=o(70799),i=o(29628),l=o(81762),s=o(51148),c=o(4785),p=o(5110),d=o(69500);const u=(0,s.Ay)("div",{name:"MuiStep",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.completed&&t.completed]}})({variants:[{props:{orientation:"horizontal"},style:{paddingLeft:8,paddingRight:8}},{props:{alternativeLabel:!0},style:{flex:1,position:"relative"}}]}),v=n.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiStep"}),{active:s,children:v,className:m,component:h="div",completed:b,disabled:A,expanded:x=!1,index:y,last:f,...S}=o,{activeStep:L,connector:g,alternativeLabel:w,orientation:C,nonLinear:M}=n.useContext(i.A);let[R=!1,j=!1,z=!1]=[s,b,A];L===y?R=void 0===s||s:!M&&L>y?j=void 0===b||b:!M&&L<y&&(z=void 0===A||A);const N=n.useMemo((()=>({index:y,last:f,expanded:x,icon:y+1,active:R,completed:j,disabled:z})),[y,f,x,R,j,z]),$={...o,active:R,orientation:C,alternativeLabel:w,completed:j,disabled:z,expanded:x,component:h},I=(e=>{const{classes:t,orientation:o,alternativeLabel:n,completed:r}=e,i={root:["root",o,n&&"alternativeLabel",r&&"completed"]};return(0,a.A)(i,p.L,t)})($),E=(0,d.jsxs)(u,{as:h,className:(0,r.A)(I.root,m),ref:t,ownerState:$,...S,children:[g&&w&&0!==y?g:null,v]});return(0,d.jsx)(l.A.Provider,{value:N,children:g&&!w&&0!==y?(0,d.jsxs)(n.Fragment,{children:[g,E]}):E})}))},81762:(e,t,o)=>{o.d(t,{A:()=>i,P:()=>a});var n=o(7552);const r=n.createContext({});function a(){return n.useContext(r)}const i=r},5110:(e,t,o)=>{o.d(t,{A:()=>i,L:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStep",e)}const i=(0,n.A)("MuiStep",["root","horizontal","vertical","alternativeLabel","completed"])},23491:(e,t,o)=>{o.d(t,{A:()=>b});var n=o(7552),r=o(93878),a=o(70799),i=o(15622),l=o(51148),s=o(60129),c=o(4785),p=o(29628),d=o(81762),u=o(62487),v=o(69500);const m=(0,l.Ay)("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.completed&&t.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),h=(0,l.Ay)("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.line,t[`line${(0,i.A)(o.orientation)}`]]}})((0,s.A)((({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[600];return{display:"block",borderColor:e.vars?e.vars.palette.StepConnector.border:t,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}}))),b=n.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiStepConnector"}),{className:l,...s}=o,{alternativeLabel:b,orientation:A="horizontal"}=n.useContext(p.A),{active:x,disabled:y,completed:f}=n.useContext(d.A),S={...o,alternativeLabel:b,orientation:A,active:x,completed:f,disabled:y},L=(e=>{const{classes:t,orientation:o,alternativeLabel:n,active:r,completed:l,disabled:s}=e,c={root:["root",o,n&&"alternativeLabel",r&&"active",l&&"completed",s&&"disabled"],line:["line",`line${(0,i.A)(o)}`]};return(0,a.A)(c,u.G,t)})(S);return(0,v.jsx)(m,{className:(0,r.A)(L.root,l),ref:t,ownerState:S,...s,children:(0,v.jsx)(h,{className:L.line,ownerState:S})})}))},62487:(e,t,o)=>{o.d(t,{A:()=>i,G:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepConnector",e)}const i=(0,n.A)("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"])},22133:(e,t,o)=>{o.d(t,{A:()=>x});var n=o(7552),r=o(93878),a=o(70799),i=o(51148),l=o(60129),s=o(4785),c=o(98459),p=o(29628),d=o(81762),u=o(33761),v=o(85693);function m(e){return(0,v.Ay)("MuiStepContent",e)}(0,u.A)("MuiStepContent",["root","last","transition"]);var h=o(69500);const b=(0,i.Ay)("div",{name:"MuiStepContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.last&&t.last]}})((0,l.A)((({theme:e})=>({marginLeft:12,paddingLeft:20,paddingRight:8,borderLeft:e.vars?`1px solid ${e.vars.palette.StepContent.border}`:`1px solid ${"light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[600]}`,variants:[{props:{last:!0},style:{borderLeft:"none"}}]})))),A=(0,i.Ay)(c.A,{name:"MuiStepContent",slot:"Transition",overridesResolver:(e,t)=>t.transition})({}),x=n.forwardRef((function(e,t){const o=(0,s.b)({props:e,name:"MuiStepContent"}),{children:i,className:l,TransitionComponent:u=c.A,transitionDuration:v="auto",TransitionProps:x,...y}=o,{orientation:f}=n.useContext(p.A),{active:S,last:L,expanded:g}=n.useContext(d.A),w={...o,last:L},C=(e=>{const{classes:t,last:o}=e,n={root:["root",o&&"last"],transition:["transition"]};return(0,a.A)(n,m,t)})(w);let M=v;return"auto"!==v||u.muiSupportAuto||(M=void 0),(0,h.jsx)(b,{className:(0,r.A)(C.root,l),ref:t,ownerState:w,...y,children:(0,h.jsx)(A,{as:u,in:S||g,className:C.transition,ownerState:w,timeout:M,unmountOnExit:!0,...x,children:i})})}))},47450:(e,t,o)=>{o.d(t,{A:()=>x});var n=o(7552),r=o(93878),a=o(70799),i=o(51148),l=o(60129),s=o(4785),c=o(74893),p=o(69500);const d=(0,c.A)((0,p.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),u=(0,c.A)((0,p.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var v,m=o(2859),h=o(72755);const b=(0,i.Ay)(m.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(e,t)=>t.root})((0,l.A)((({theme:e})=>({display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${h.A.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${h.A.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${h.A.error}`]:{color:(e.vars||e).palette.error.main}})))),A=(0,i.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(e,t)=>t.text})((0,l.A)((({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})))),x=n.forwardRef((function(e,t){const o=(0,s.b)({props:e,name:"MuiStepIcon"}),{active:n=!1,className:i,completed:l=!1,error:c=!1,icon:m,...x}=o,y={...o,active:n,completed:l,error:c},f=(e=>{const{classes:t,active:o,completed:n,error:r}=e,i={root:["root",o&&"active",n&&"completed",r&&"error"],text:["text"]};return(0,a.A)(i,h.K,t)})(y);if("number"==typeof m||"string"==typeof m){const e=(0,r.A)(i,f.root);return c?(0,p.jsx)(b,{as:u,className:e,ref:t,ownerState:y,...x}):l?(0,p.jsx)(b,{as:d,className:e,ref:t,ownerState:y,...x}):(0,p.jsxs)(b,{className:e,ref:t,ownerState:y,...x,children:[v||(v=(0,p.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,p.jsx)(A,{className:f.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:y,children:m})]})}return m}))},72755:(e,t,o)=>{o.d(t,{A:()=>i,K:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepIcon",e)}const i=(0,n.A)("MuiStepIcon",["root","active","completed","error","text"])},96403:(e,t,o)=>{o.d(t,{A:()=>f});var n=o(70799),r=o(93878),a=o(7552),i=o(81762),l=o(47450),s=o(29628),c=o(51148),p=o(60129),d=o(4785),u=o(34247),v=o(43045),m=o(69500);const h=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation]]}})({display:"flex",alignItems:"center",[`&.${u.A.alternativeLabel}`]:{flexDirection:"column"},[`&.${u.A.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),b=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Label",overridesResolver:(e,t)=>t.label})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),[`&.${u.A.active}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${u.A.completed}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${u.A.alternativeLabel}`]:{marginTop:16},[`&.${u.A.error}`]:{color:(e.vars||e).palette.error.main}})))),A=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"IconContainer",overridesResolver:(e,t)=>t.iconContainer})({flexShrink:0,display:"flex",paddingRight:8,[`&.${u.A.alternativeLabel}`]:{paddingRight:0}}),x=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"LabelContainer",overridesResolver:(e,t)=>t.labelContainer})((0,p.A)((({theme:e})=>({width:"100%",color:(e.vars||e).palette.text.secondary,[`&.${u.A.alternativeLabel}`]:{textAlign:"center"}})))),y=a.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiStepLabel"}),{children:c,className:p,componentsProps:y={},error:f=!1,icon:S,optional:L,slots:g={},slotProps:w={},StepIconComponent:C,StepIconProps:M,...R}=o,{alternativeLabel:j,orientation:z}=a.useContext(s.A),{active:N,disabled:$,completed:I,icon:E}=a.useContext(i.A),T=S||E;let D=C;T&&!D&&(D=l.A);const P={...o,active:N,alternativeLabel:j,completed:I,disabled:$,error:f,orientation:z},k=(e=>{const{classes:t,orientation:o,active:r,completed:a,error:i,disabled:l,alternativeLabel:s}=e,c={root:["root",o,i&&"error",l&&"disabled",s&&"alternativeLabel"],label:["label",r&&"active",a&&"completed",i&&"error",l&&"disabled",s&&"alternativeLabel"],iconContainer:["iconContainer",r&&"active",a&&"completed",i&&"error",l&&"disabled",s&&"alternativeLabel"],labelContainer:["labelContainer",s&&"alternativeLabel"]};return(0,n.A)(c,u.p,t)})(P),W={slots:g,slotProps:{stepIcon:M,...y,...w}},[F,H]=(0,v.A)("label",{elementType:b,externalForwardedProps:W,ownerState:P}),[_,B]=(0,v.A)("stepIcon",{elementType:D,externalForwardedProps:W,ownerState:P});return(0,m.jsxs)(h,{className:(0,r.A)(k.root,p),ref:t,ownerState:P,...R,children:[T||_?(0,m.jsx)(A,{className:k.iconContainer,ownerState:P,children:(0,m.jsx)(_,{completed:I,active:N,error:f,icon:T,...B})}):null,(0,m.jsxs)(x,{className:k.labelContainer,ownerState:P,children:[c?(0,m.jsx)(F,{...H,className:(0,r.A)(k.label,H?.className),children:c}):null,L]})]})}));y&&(y.muiName="StepLabel");const f=y},34247:(e,t,o)=>{o.d(t,{A:()=>i,p:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepLabel",e)}const i=(0,n.A)("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"])},85059:(e,t,o)=>{o.d(t,{A:()=>m});var n=o(7552),r=o(93878),a=o(70799),i=o(51148),l=o(4785),s=o(25367),c=o(23491),p=o(29628),d=o(69500);const u=(0,i.Ay)("div",{name:"MuiStepper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.nonLinear&&t.nonLinear]}})({display:"flex",variants:[{props:{orientation:"horizontal"},style:{flexDirection:"row",alignItems:"center"}},{props:{orientation:"vertical"},style:{flexDirection:"column"}},{props:{alternativeLabel:!0},style:{alignItems:"flex-start"}}]}),v=(0,d.jsx)(c.A,{}),m=n.forwardRef((function(e,t){const o=(0,l.b)({props:e,name:"MuiStepper"}),{activeStep:i=0,alternativeLabel:c=!1,children:m,className:h,component:b="div",connector:A=v,nonLinear:x=!1,orientation:y="horizontal",...f}=o,S={...o,nonLinear:x,alternativeLabel:c,orientation:y,component:b},L=(e=>{const{orientation:t,nonLinear:o,alternativeLabel:n,classes:r}=e,i={root:["root",t,o&&"nonLinear",n&&"alternativeLabel"]};return(0,a.A)(i,s.g,r)})(S),g=n.Children.toArray(m).filter(Boolean),w=g.map(((e,t)=>n.cloneElement(e,{index:t,last:t+1===g.length,...e.props}))),C=n.useMemo((()=>({activeStep:i,alternativeLabel:c,connector:A,nonLinear:x,orientation:y})),[i,c,A,x,y]);return(0,d.jsx)(p.A.Provider,{value:C,children:(0,d.jsx)(u,{as:b,ownerState:S,className:(0,r.A)(L.root,h),ref:t,...f,children:w})})}))},29628:(e,t,o)=>{o.d(t,{A:()=>i,s:()=>a});var n=o(7552);const r=n.createContext({});function a(){return n.useContext(r)}const i=r},25367:(e,t,o)=>{o.d(t,{A:()=>i,g:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepper",e)}const i=(0,n.A)("MuiStepper",["root","horizontal","vertical","nonLinear","alternativeLabel"])}}]);
+//# sourceMappingURL=5189.3e22269d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5189.3e22269d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5189.3e22269d.chunk.js","mappings":"sSAiBA,MAcMA,GAAe,QAAO,MAAO,CACjCC,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAmC,YAArBF,EAAWG,OAAuBJ,EAAOK,QAA8B,WAArBJ,EAAWG,QAAuBH,EAAWK,IAAmC,QAA7BL,EAAWM,eAA2BP,EAAOQ,OAAO,GAP7L,EASlB,QAAU,EACXC,YACI,CACJC,OAAQ,EACRC,SAAU,SACVC,WAAYH,EAAMI,YAAYC,OAAO,UACrCC,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACLN,OAAQ,OACRO,MAAO,EACPL,WAAYH,EAAMI,YAAYC,OAAO,WAEtC,CACDf,MAAO,CACLK,MAAO,WAETY,MAAO,CACLN,OAAQ,OACRC,SAAU,YAEX,CACDZ,MAAO,CACLK,MAAO,UACPD,YAAa,cAEfa,MAAO,CACLC,MAAO,SAER,CACDlB,MAAO,EACLE,gBACyB,WAArBA,EAAWG,QAAuBH,EAAWK,IAAmC,QAA7BL,EAAWM,cACpES,MAAO,CACLE,WAAY,iBAIZC,GAAkB,QAAO,MAAO,CACpCvB,KAAM,cACNC,KAAM,UACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOoB,SAHvB,CAIrB,CAEDC,QAAS,OACTJ,MAAO,OACPF,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACLC,MAAO,OACPP,OAAQ,YAIRY,GAAuB,QAAO,MAAO,CACzC1B,KAAM,cACNC,KAAM,eACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOuB,cAHlB,CAI1B,CACDN,MAAO,OACPF,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACLC,MAAO,OACPP,OAAQ,YAURc,EAAwB,cAAiB,SAAkBC,EAASC,GACxE,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,iBAEF,eACJ+B,EAAc,SACdC,EAAQ,UACRC,EACAtB,cAAeuB,EAAoB,MAAK,UACxCC,EAAS,OACTC,EACA1B,GAAI2B,EAAM,QACVC,EAAO,UACPC,EAAS,WACTC,EAAU,OACVC,EAAM,SACNC,EAAQ,UACRC,EAAS,YACTpC,EAAc,WAAU,MACxBa,EAAK,QACLwB,EAAU,KAASC,SAAQ,oBAE3BC,EAAsB,QACnBC,GACD5C,EACEE,EAAa,IACdF,EACHI,cACAI,cAAeuB,GAEXc,EAtIkB3C,KACxB,MAAM,YACJE,EAAW,QACXyC,GACE3C,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQ,GAAGC,KAClBE,QAAS,CAAC,WACVG,OAAQ,CAAC,UACTY,QAAS,CAAC,UAAW,GAAGjB,KACxBoB,aAAc,CAAC,eAAgB,GAAGpB,MAEpC,OAAO,OAAe0C,EAAO,IAAyBD,EAAQ,EA0H9CE,CAAkB7C,GAC5BQ,GAAQ,SACRsC,GAAQ,SACRC,EAAa,SAAa,MAC1BC,EAAyB,WACzB1C,EAA6C,iBAAtBuB,EAAiC,GAAGA,MAAwBA,EACnFoB,EAA+B,eAAhB/C,EACfgD,EAAOD,EAAe,QAAU,SAChCE,EAAU,SAAa,MACvBC,GAAY,OAAW3B,EAAK0B,GAC5BE,EAA+BC,GAAYC,IAC/C,GAAID,EAAU,CACZ,MAAME,EAAOL,EAAQM,aAGIC,IAArBH,EACFD,EAASE,GAETF,EAASE,EAAMD,EAEnB,GAEII,EAAiB,IAAMZ,EAAWU,QAAUV,EAAWU,QAAQR,EAAe,cAAgB,gBAAkB,EAChHW,EAAcP,GAA6B,CAACG,EAAMK,KAClDd,EAAWU,SAAWR,IAExBF,EAAWU,QAAQ1C,MAAM+C,SAAW,YAEtCN,EAAKzC,MAAMmC,GAAQ5C,EACf2B,GACFA,EAAQuB,EAAMK,EAChB,IAEIE,EAAiBV,GAA6B,CAACG,EAAMK,KACzD,MAAMG,EAAcL,IAChBZ,EAAWU,SAAWR,IAExBF,EAAWU,QAAQ1C,MAAM+C,SAAW,IAEtC,MACEG,SAAUC,EACVnC,OAAQoC,IACN,OAAmB,CACrBpD,QACAwB,UACAR,UACC,CACDqC,KAAM,UAER,GAAgB,SAAZ7B,EAAoB,CACtB,MAAM8B,EAAY7D,EAAMI,YAAY0D,sBAAsBN,GAC1DR,EAAKzC,MAAMmD,mBAAqB,GAAGG,MACnCrB,EAAuBS,QAAUY,CACnC,MACEb,EAAKzC,MAAMmD,mBAAmD,iBAAvBA,EAAkCA,EAAqB,GAAGA,MAEnGV,EAAKzC,MAAMmC,GAAQ,GAAGc,MACtBR,EAAKzC,MAAMoD,yBAA2BA,EAClChC,GACFA,EAAWqB,EAAMK,EACnB,IAEIU,EAAgBlB,GAA6B,CAACG,EAAMK,KACxDL,EAAKzC,MAAMmC,GAAQ,OACfhB,GACFA,EAAUsB,EAAMK,EAClB,IAEIW,EAAanB,GAA6BG,IAC9CA,EAAKzC,MAAMmC,GAAQ,GAAGS,QAClBvB,GACFA,EAAOoB,EACT,IAEIiB,EAAepB,EAA6BhB,GAC5CqC,GAAgBrB,GAA6BG,IACjD,MAAMQ,EAAcL,KAElBM,SAAUC,EACVnC,OAAQoC,IACN,OAAmB,CACrBpD,QACAwB,UACAR,UACC,CACDqC,KAAM,SAER,GAAgB,SAAZ7B,EAAoB,CAGtB,MAAM8B,EAAY7D,EAAMI,YAAY0D,sBAAsBN,GAC1DR,EAAKzC,MAAMmD,mBAAqB,GAAGG,MACnCrB,EAAuBS,QAAUY,CACnC,MACEb,EAAKzC,MAAMmD,mBAAmD,iBAAvBA,EAAkCA,EAAqB,GAAGA,MAEnGV,EAAKzC,MAAMmC,GAAQ5C,EACnBkD,EAAKzC,MAAMoD,yBAA2BA,EAClC7B,GACFA,EAAUkB,EACZ,IAWF,OAAoB,SAAKf,EAAqB,CAC5CpC,GAAI2B,EACJC,QAAS2B,EACT1B,UAAWqC,EACXpC,WAAY4B,EACZ3B,OAAQoC,EACRnC,SAAUoC,EACVnC,UAAWoC,GACXhD,eAjB2BiD,IACX,SAAZpC,GACFO,EAAM8B,MAAM5B,EAAuBS,SAAW,EAAGkB,GAE/CjD,GAEFA,EAAeyB,EAAQM,QAASkB,EAClC,EAWAxB,QAASA,EACTZ,QAAqB,SAAZA,EAAqB,KAAOA,KAClCG,EACHf,SAAU,CAACxB,EAAO0E,KAA4B,SAAKnF,EAAc,CAC/DoF,GAAIhD,EACJF,WAAW,OAAKe,EAAQ1C,KAAM2B,EAAW,CACvC,QAAWe,EAAQvC,QACnB,QAAW4B,GAA4B,QAAlB1B,GAA2BqC,EAAQpC,QACxDJ,IACFY,MAAO,CACL,CAACkC,EAAe,WAAa,aAAc3C,KACxCS,GAELU,IAAK2B,KACFyB,EAGH7E,WAAY,IACPA,EACHG,SAEFwB,UAAuB,SAAKT,EAAiB,CAC3ClB,WAAY,IACPA,EACHG,SAEFyB,UAAWe,EAAQxB,QACnBM,IAAKsB,EACLpB,UAAuB,SAAKN,EAAsB,CAChDrB,WAAY,IACPA,EACHG,SAEFyB,UAAWe,EAAQrB,aACnBK,SAAUA,SAKpB,IAgGIJ,IACFA,EAASwD,gBAAiB,GAE5B,S,qECvZO,SAASC,EAAwBpF,GACtC,OAAO,QAAqB,cAAeA,EAC7C,CACA,MACA,GADwB,OAAuB,cAAe,CAAC,OAAQ,aAAc,WAAY,UAAW,SAAU,UAAW,gB,uICQjI,MAYMqF,GAAW,QAAO,MAAO,CAC7BtF,KAAM,UACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAcF,EAAWkF,kBAAoBnF,EAAOmF,iBAAkBlF,EAAWmF,WAAapF,EAAOoF,UAAU,GAPzI,CASd,CACDrE,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACLqE,YAAa,EACbC,aAAc,IAEf,CACDvF,MAAO,CACLoF,kBAAkB,GAEpBnE,MAAO,CACLuE,KAAM,EACNxB,SAAU,gBA8HhB,EA1H0B,cAAiB,SAActC,EAASC,GAChE,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,aAGN4F,OAAQC,EAAU,SAClB7D,EAAQ,UACRC,EAAS,UACTE,EAAY,MACZqD,UAAWM,EACXC,SAAUC,EAAY,SACtBC,GAAW,EAAK,MAChBC,EAAK,KACLC,KACGpD,GACD5C,GACE,WACJiG,EAAU,UACVC,EAAS,iBACTd,EAAgB,YAChBhF,EAAW,UACX+F,GACE,aAAiB,KACrB,IAAKV,GAAS,EAAOJ,GAAY,EAAOO,GAAW,GAAS,CAACF,EAAYC,EAAeE,GACpFI,IAAeF,EACjBN,OAAwB7B,IAAf8B,GAA2BA,GAC1BS,GAAaF,EAAaF,EACpCV,OAA8BzB,IAAlB+B,GAA8BA,GAChCQ,GAAaF,EAAaF,IACpCH,OAA4BhC,IAAjBiC,GAA6BA,GAE1C,MAAMO,EAAe,WAAc,KAAM,CACvCL,QACAC,OACAF,WACAO,KAAMN,EAAQ,EACdN,SACAJ,YACAO,cACE,CAACG,EAAOC,EAAMF,EAAUL,EAAQJ,EAAWO,IACzC1F,EAAa,IACdF,EACHyF,SACArF,cACAgF,mBACAC,YACAO,WACAE,WACA9D,aAEIa,EA3FkB3C,KACxB,MAAM,QACJ2C,EAAO,YACPzC,EAAW,iBACXgF,EAAgB,UAChBC,GACEnF,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQC,EAAagF,GAAoB,mBAAoBC,GAAa,cAEnF,OAAO,OAAevC,EAAO,IAAqBD,EAAQ,EAiF1CE,CAAkB7C,GAC5BoG,GAA2B,UAAMnB,EAAU,CAC/CH,GAAIhD,EACJF,WAAW,OAAKe,EAAQ1C,KAAM2B,GAC9BH,IAAKA,EACLzB,WAAYA,KACT0C,EACHf,SAAU,CAACqE,GAAad,GAA8B,IAAVW,EAAcG,EAAY,KAAMrE,KAE9E,OAAoB,SAAK,IAAY0E,SAAU,CAC7CC,MAAOJ,EACPvE,SAAUqE,IAAcd,GAA8B,IAAVW,GAA2B,UAAM,WAAgB,CAC3FlE,SAAU,CAACqE,EAAWI,KACnBA,GAET,G,yDCnHA,MAAMG,EAA2B,gBAAoB,CAAC,GAS/C,SAASC,IACd,OAAO,aAAiBD,EAC1B,CACA,S,oECdO,SAASE,EAAoB7G,GAClC,OAAO,QAAqB,UAAWA,EACzC,CACA,MACA,GADoB,OAAuB,UAAW,CAAC,OAAQ,aAAc,WAAY,mBAAoB,a,8JCS7G,MAeM8G,GAAoB,QAAO,MAAO,CACtC/G,KAAM,mBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAcF,EAAWkF,kBAAoBnF,EAAOmF,iBAAkBlF,EAAWmF,WAAapF,EAAOoF,UAAU,GAPhI,CASvB,CACDG,KAAM,WACNxE,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,YAEfa,MAAO,CACL4F,WAAY,KAEb,CACD7G,MAAO,CACLoF,kBAAkB,GAEpBnE,MAAO,CACL+C,SAAU,WACV8C,IAAK,GACLC,KAAM,oBACNC,MAAO,wBAIPC,GAAoB,QAAO,OAAQ,CACvCpH,KAAM,mBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOiH,KAAMjH,EAAO,QAAO,OAAWC,EAAWE,gBAAgB,GAPnD,EASvB,QAAU,EACXM,YAEA,MAAMyG,EAAqC,UAAvBzG,EAAM0G,QAAQ9C,KAAmB5D,EAAM0G,QAAQC,KAAK,KAAO3G,EAAM0G,QAAQC,KAAK,KAClG,MAAO,CACL/F,QAAS,QACT6F,YAAazG,EAAM4G,KAAO5G,EAAM4G,KAAKF,QAAQG,cAAcC,OAASL,EACpEnG,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACLwG,eAAgB,QAChBC,eAAgB,IAEjB,CACD1H,MAAO,CACLI,YAAa,YAEfa,MAAO,CACL0G,gBAAiB,QACjBC,gBAAiB,EACjBC,UAAW,MAGhB,KA0DH,EAxDmC,cAAiB,SAAuBnG,EAASC,GAClF,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,sBAEF,UACJiC,KACGc,GACD5C,GACE,iBACJoF,EAAgB,YAChBhF,EAAc,cACZ,aAAiB,MACf,OACJqF,EAAM,SACNG,EAAQ,UACRP,GACE,aAAiB,KACfnF,EAAa,IACdF,EACHoF,mBACAhF,cACAqF,SACAJ,YACAO,YAEI/C,EA3GkB3C,KACxB,MAAM,QACJ2C,EAAO,YACPzC,EAAW,iBACXgF,EAAgB,OAChBK,EAAM,UACNJ,EAAS,SACTO,GACE1F,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQC,EAAagF,GAAoB,mBAAoBK,GAAU,SAAUJ,GAAa,YAAaO,GAAY,YAC9HsB,KAAM,CAAC,OAAQ,QAAO,OAAW9G,OAEnC,OAAO,OAAe0C,EAAO,IAA8BD,EAAQ,EA8FnDE,CAAkB7C,GAClC,OAAoB,SAAK0G,EAAmB,CAC1C9E,WAAW,OAAKe,EAAQ1C,KAAM2B,GAC9BH,IAAKA,EACLzB,WAAYA,KACT0C,EACHf,UAAuB,SAAKoF,EAAmB,CAC7CnF,UAAWe,EAAQqE,KACnBhH,WAAYA,KAGlB,G,qEClIO,SAAS4H,EAA6BhI,GAC3C,OAAO,QAAqB,mBAAoBA,EAClD,CACA,MACA,GAD6B,OAAuB,mBAAoB,CAAC,OAAQ,aAAc,WAAY,mBAAoB,SAAU,YAAa,WAAY,OAAQ,iBAAkB,gB,8JCHrL,SAASiI,EAA2BjI,GACzC,OAAO,EAAAkI,EAAA,IAAqB,iBAAkBlI,EAChD,EAC2B,EAAAmI,EAAA,GAAuB,iBAAkB,CAAC,OAAQ,OAAQ,e,eCSrF,MAWMC,GAAkB,EAAAC,EAAA,IAAO,MAAO,CACpCtI,KAAM,iBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMD,EAAW8F,MAAQ/F,EAAO+F,KAAK,GAPhC,EASrB,EAAAoC,EAAA,IAAU,EACX1H,YACI,CACJmG,WAAY,GAEZvB,YAAa,GAEbC,aAAc,EACd8C,WAAY3H,EAAM4G,KAAO,aAAa5G,EAAM4G,KAAKF,QAAQkB,YAAYd,SAAW,aAAoC,UAAvB9G,EAAM0G,QAAQ9C,KAAmB5D,EAAM0G,QAAQC,KAAK,KAAO3G,EAAM0G,QAAQC,KAAK,OAC3KrG,SAAU,CAAC,CACThB,MAAO,CACLgG,MAAM,GAER/E,MAAO,CACLoH,WAAY,eAIZE,GAAwB,EAAAJ,EAAA,IAAO1G,EAAA,EAAU,CAC7C5B,KAAM,iBACNC,KAAM,aACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOY,YAHjB,CAI3B,CAAC,GAkGJ,EAjGiC,cAAiB,SAAqBa,EAASC,GAC9E,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,oBAEF,SACJgC,EAAQ,UACRC,EAAS,oBACTa,EAAsBlB,EAAA,EACtB2C,mBAAoBoE,EAAyB,OAAM,gBACnDC,KACG7F,GACD5C,GACE,YACJI,GACE,aAAiBsI,EAAA,IACf,OACJjD,EAAM,KACNO,EAAI,SACJF,GACE,aAAiBW,EAAA,GACfvG,EAAa,IACdF,EACHgG,QAEInD,EApEkB3C,KACxB,MAAM,QACJ2C,EAAO,KACPmD,GACE9F,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQ6F,GAAQ,QACvBnF,WAAY,CAAC,eAEf,OAAO,EAAA8H,EAAA,GAAe7F,EAAOiF,EAA4BlF,EAAQ,EA2DjDE,CAAkB7C,GAMlC,IAAIkE,EAAqBoE,EAIzB,MAH+B,SAA3BA,GAAsC7F,EAAoBsC,iBAC5Db,OAAqBR,IAEH,SAAKsE,EAAiB,CACxCpG,WAAW,EAAA8G,EAAA,GAAK/F,EAAQ1C,KAAM2B,GAC9BH,IAAKA,EACLzB,WAAYA,KACT0C,EACHf,UAAuB,SAAK0G,EAAuB,CACjDvD,GAAIrC,EACJpC,GAAIkF,GAAUK,EACdhE,UAAWe,EAAQhC,WACnBX,WAAYA,EACZuC,QAAS2B,EACTyE,eAAe,KACZJ,EACH5G,SAAUA,KAGhB,G,6HCnGA,SAAe,EAAAiH,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,2FACD,eCFJ,GAAe,EAAAD,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,uDACD,W,ICTAC,E,qBAaJ,MAaMC,GAAe,EAAAd,EAAA,IAAOe,EAAA,EAAS,CACnCrJ,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOE,MAH1B,EAIlB,EAAAiI,EAAA,IAAU,EACX1H,YACI,CACJY,QAAS,QACTT,WAAYH,EAAMI,YAAYC,OAAO,QAAS,CAC5CoD,SAAUzD,EAAMI,YAAYqD,SAASgF,WAEvCC,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQiC,KAAKzD,SAC1C,CAAC,KAAK0D,EAAA,EAAgBjE,aAAc,CAClC+D,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQmC,QAAQC,MAE/C,CAAC,KAAKF,EAAA,EAAgB7D,UAAW,CAC/B2D,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQmC,QAAQC,MAE/C,CAAC,KAAKF,EAAA,EAAgBG,SAAU,CAC9BL,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQqC,MAAMD,WAGzCE,GAAe,EAAAvB,EAAA,IAAO,OAAQ,CAClCtI,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOoJ,MAH1B,EAIlB,EAAAjB,EAAA,IAAU,EACX1H,YACI,CACJiJ,MAAOjJ,EAAM4G,MAAQ5G,GAAO0G,QAAQmC,QAAQK,aAC5CC,SAAUnJ,EAAMoJ,WAAWC,QAAQF,SACnCG,WAAYtJ,EAAMoJ,WAAWE,gBAqG/B,EAnG8B,cAAiB,SAAkBtI,EAASC,GACxE,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,iBAEF,OACJ4F,GAAS,EACT3D,UAAWmI,EAAa,UACxB5E,GAAY,EAAK,MACjBoE,GAAQ,EAAK,KACbpD,KACGzD,GACD5C,EACEE,EAAa,IACdF,EACHyF,SACAJ,YACAoE,SAEI5G,EAjEkB3C,KACxB,MAAM,QACJ2C,EAAO,OACP4C,EAAM,UACNJ,EAAS,MACToE,GACEvJ,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQsF,GAAU,SAAUJ,GAAa,YAAaoE,GAAS,SACtEJ,KAAM,CAAC,SAET,OAAO,EAAAV,EAAA,GAAe7F,EAAO,IAAyBD,EAAQ,EAsD9CE,CAAkB7C,GAClC,GAAoB,iBAATmG,GAAqC,iBAATA,EAAmB,CACxD,MAAMvE,GAAY,EAAA8G,EAAA,GAAKqB,EAAepH,EAAQ1C,MAC9C,OAAIsJ,GACkB,SAAKR,EAAc,CACrCjE,GAAIkF,EACJpI,UAAWA,EACXH,IAAKA,EACLzB,WAAYA,KACT0C,IAGHyC,GACkB,SAAK4D,EAAc,CACrCjE,GAAImF,EACJrI,UAAWA,EACXH,IAAKA,EACLzB,WAAYA,KACT0C,KAGa,UAAMqG,EAAc,CACtCnH,UAAWA,EACXH,IAAKA,EACLzB,WAAYA,KACT0C,EACHf,SAAU,CAACmH,IAAYA,GAAuB,SAAK,SAAU,CAC3DoB,GAAI,KACJC,GAAI,KACJC,EAAG,SACa,SAAKZ,EAAc,CACnC5H,UAAWe,EAAQwG,KACnBkB,EAAG,KACHC,EAAG,KACHC,WAAY,SACZC,iBAAkB,UAClBxK,WAAYA,EACZ2B,SAAUwE,MAGhB,CACA,OAAOA,CACT,G,qECxHO,SAASsE,EAAwB7K,GACtC,OAAO,QAAqB,cAAeA,EAC7C,CACA,MACA,GADwB,OAAuB,cAAe,CAAC,OAAQ,SAAU,YAAa,QAAS,Q,yKCUvG,MAkBM8K,GAAgB,QAAO,OAAQ,CACnC/K,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAa,GAPlC,CASnB,CACDkB,QAAS,OACTuJ,WAAY,SACZ,CAAC,KAAK,IAAiBzF,oBAAqB,CAC1C0F,cAAe,UAEjB,CAAC,KAAK,IAAiBlF,YAAa,CAClCmF,OAAQ,WAEV/J,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,YAEfa,MAAO,CACL+J,UAAW,OACXC,QAAS,aAITC,GAAiB,QAAO,OAAQ,CACpCrL,KAAM,eACNC,KAAM,QACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOkL,OAHxB,EAIpB,QAAU,EACXzK,YACI,IACDA,EAAMoJ,WAAWsB,MACpB9J,QAAS,QACTT,WAAYH,EAAMI,YAAYC,OAAO,QAAS,CAC5CoD,SAAUzD,EAAMI,YAAYqD,SAASgF,WAEvC,CAAC,KAAK,IAAiB1D,UAAW,CAChC2D,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQiC,KAAKE,QAC1C8B,WAAY,KAEd,CAAC,KAAK,IAAiBhG,aAAc,CACnC+D,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQiC,KAAKE,QAC1C8B,WAAY,KAEd,CAAC,KAAK,IAAiBjG,oBAAqB,CAC1CkG,UAAW,IAEb,CAAC,KAAK,IAAiB7B,SAAU,CAC/BL,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQqC,MAAMD,WAGzC+B,GAAyB,QAAO,OAAQ,CAC5C1L,KAAM,eACNC,KAAM,gBACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOuL,eAHhB,CAI5B,CACDC,WAAY,EACZnK,QAAS,OACTiE,aAAc,EACd,CAAC,KAAK,IAAiBH,oBAAqB,CAC1CG,aAAc,KAGZmG,GAA0B,QAAO,OAAQ,CAC7C7L,KAAM,eACNC,KAAM,iBACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO0L,gBAHf,EAI7B,QAAU,EACXjL,YACI,CACJQ,MAAO,OACPkI,OAAQ1I,EAAM4G,MAAQ5G,GAAO0G,QAAQiC,KAAKuC,UAC1C,CAAC,KAAK,IAAiBxG,oBAAqB,CAC1C4F,UAAW,eAGTa,EAAyB,cAAiB,SAAmBnK,EAASC,GAC1E,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,kBAEF,SACJgC,EAAQ,UACRC,EAAS,gBACTgK,EAAkB,CAAC,EAAC,MACpBrC,GAAQ,EACRpD,KAAM0F,EAAQ,SACdC,EAAQ,MACRlJ,EAAQ,CAAC,EAAC,UACVmJ,EAAY,CAAC,EACbC,kBAAmBC,EAAqB,cACxCC,KACGxJ,GACD5C,GACE,iBACJoF,EAAgB,YAChBhF,GACE,aAAiB,MACf,OACJqF,EAAM,SACNG,EAAQ,UACRP,EACAgB,KAAMgG,GACJ,aAAiB,KACfhG,EAAO0F,GAAYM,EACzB,IAAIH,EAAoBC,EACpB9F,IAAS6F,IACXA,EAAoB,KAEtB,MAAMhM,EAAa,IACdF,EACHyF,SACAL,mBACAC,YACAO,WACA6D,QACArJ,eAEIyC,EA5IkB3C,KACxB,MAAM,QACJ2C,EAAO,YACPzC,EAAW,OACXqF,EAAM,UACNJ,EAAS,MACToE,EAAK,SACL7D,EAAQ,iBACRR,GACElF,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQC,EAAaqJ,GAAS,QAAS7D,GAAY,WAAYR,GAAoB,oBAC1F+F,MAAO,CAAC,QAAS1F,GAAU,SAAUJ,GAAa,YAAaoE,GAAS,QAAS7D,GAAY,WAAYR,GAAoB,oBAC7HoG,cAAe,CAAC,gBAAiB/F,GAAU,SAAUJ,GAAa,YAAaoE,GAAS,QAAS7D,GAAY,WAAYR,GAAoB,oBAC7IuG,eAAgB,CAAC,iBAAkBvG,GAAoB,qBAEzD,OAAO,OAAetC,EAAO,IAA0BD,EAAQ,EA4H/CE,CAAkB7C,GAC5BoM,EAAyB,CAC7BxJ,QACAmJ,UAAW,CACTM,SAAUH,KACPN,KACAG,KAGAO,EAAWC,IAAc,OAAQ,QAAS,CAC/CC,YAAaxB,EACboB,yBACApM,gBAEKyM,EAAcC,IAAiB,OAAQ,WAAY,CACxDF,YAAaR,EACbI,yBACApM,eAEF,OAAoB,UAAM0K,EAAe,CACvC9I,WAAW,OAAKe,EAAQ1C,KAAM2B,GAC9BH,IAAKA,EACLzB,WAAYA,KACT0C,EACHf,SAAU,CAACwE,GAAQsG,GAA4B,SAAKpB,EAAwB,CAC1EzJ,UAAWe,EAAQ2I,cACnBtL,WAAYA,EACZ2B,UAAuB,SAAK8K,EAAc,CACxCtH,UAAWA,EACXI,OAAQA,EACRgE,MAAOA,EACPpD,KAAMA,KACHuG,MAEF,MAAmB,UAAMlB,EAAyB,CACrD5J,UAAWe,EAAQ8I,eACnBzL,WAAYA,EACZ2B,SAAU,CAACA,GAAwB,SAAK2K,EAAW,IAC9CC,EACH3K,WAAW,OAAKe,EAAQsI,MAAOsB,GAAY3K,WAC3CD,SAAUA,IACP,KAAMmK,OAGjB,IAoEIH,IACFA,EAAUgB,QAAU,aAEtB,S,qEC5QO,SAASC,EAAyBhN,GACvC,OAAO,QAAqB,eAAgBA,EAC9C,CACA,MACA,GADyB,OAAuB,eAAgB,CAAC,OAAQ,aAAc,WAAY,QAAS,SAAU,YAAa,QAAS,WAAY,gBAAiB,mBAAoB,kB,wICQ7L,MAYMiN,GAAc,QAAO,MAAO,CAChClN,KAAM,aACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAcF,EAAWkF,kBAAoBnF,EAAOmF,iBAAkBlF,EAAWiG,WAAalG,EAAOkG,UAAU,GAPtI,CASjB,CACD7E,QAAS,OACTN,SAAU,CAAC,CACThB,MAAO,CACLI,YAAa,cAEfa,MAAO,CACL6J,cAAe,MACfD,WAAY,WAEb,CACD7K,MAAO,CACLI,YAAa,YAEfa,MAAO,CACL6J,cAAe,WAEhB,CACD9K,MAAO,CACLoF,kBAAkB,GAEpBnE,MAAO,CACL4J,WAAY,kBAIZmC,GAAgC,SAAK,IAAe,CAAC,GA0G3D,EAzG6B,cAAiB,SAAiBtL,EAASC,GACtE,MAAM3B,GAAQ,OAAgB,CAC5BA,MAAO0B,EACP7B,KAAM,gBAEF,WACJoG,EAAa,EAAC,iBACdb,GAAmB,EAAK,SACxBvD,EAAQ,UACRC,EAAS,UACTE,EAAY,MAAK,UACjBkE,EAAY8G,EAAgB,UAC5B7G,GAAY,EAAK,YACjB/F,EAAc,gBACXwC,GACD5C,EACEE,EAAa,IACdF,EACHmG,YACAf,mBACAhF,cACA4B,aAEIa,EAvEkB3C,KACxB,MAAM,YACJE,EAAW,UACX+F,EAAS,iBACTf,EAAgB,QAChBvC,GACE3C,EACE4C,EAAQ,CACZ3C,KAAM,CAAC,OAAQC,EAAa+F,GAAa,YAAaf,GAAoB,qBAE5E,OAAO,OAAetC,EAAO,EAAAmK,EAAwBpK,EAAQ,EA6D7CE,CAAkB7C,GAC5BgN,EAAgB,WAAeC,QAAQtL,GAAUuL,OAAOC,SACxDC,EAAQJ,EAAcK,KAAI,CAACC,EAAMzH,IACjB,eAAmByH,EAAM,CAC3CzH,QACAC,KAAMD,EAAQ,IAAMmH,EAAcO,UAC/BD,EAAKxN,UAGNoG,EAAe,WAAc,KAAM,CACvCH,aACAb,mBACAc,YACAC,YACA/F,iBACE,CAAC6F,EAAYb,EAAkBc,EAAWC,EAAW/F,IACzD,OAAoB,SAAK,IAAemG,SAAU,CAChDC,MAAOJ,EACPvE,UAAuB,SAAKkL,EAAa,CACvC/H,GAAIhD,EACJ9B,WAAYA,EACZ4B,WAAW,OAAKe,EAAQ1C,KAAM2B,GAC9BH,IAAKA,KACFiB,EACHf,SAAUyL,KAGhB,G,yDC3GA,MAAM5E,EAA8B,gBAAoB,CAAC,GASlD,SAASgF,IACd,OAAO,aAAiBhF,EAC1B,CACA,S,qECdO,SAASiF,EAAuB7N,GACrC,OAAO,QAAqB,aAAcA,EAC5C,CACA,MACA,GADuB,OAAuB,aAAc,CAAC,OAAQ,aAAc,WAAY,YAAa,oB","sources":["../../../node_modules/@mui/material/Collapse/Collapse.js","../../../node_modules/@mui/material/Collapse/collapseClasses.js","../../../node_modules/@mui/material/Step/Step.js","../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/Step/stepClasses.js","../../../node_modules/@mui/material/StepConnector/StepConnector.js","../../../node_modules/@mui/material/StepConnector/stepConnectorClasses.js","../../../node_modules/@mui/material/StepContent/stepContentClasses.js","../../../node_modules/@mui/material/StepContent/StepContent.js","../../../node_modules/@mui/material/internal/svg-icons/CheckCircle.js","../../../node_modules/@mui/material/internal/svg-icons/Warning.js","../../../node_modules/@mui/material/StepIcon/StepIcon.js","../../../node_modules/@mui/material/StepIcon/stepIconClasses.js","../../../node_modules/@mui/material/StepLabel/StepLabel.js","../../../node_modules/@mui/material/StepLabel/stepLabelClasses.js","../../../node_modules/@mui/material/Stepper/Stepper.js","../../../node_modules/@mui/material/Stepper/StepperContext.js","../../../node_modules/@mui/material/Stepper/stepperClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { duration } from \"../styles/createTransitions.js\";\nimport { getTransitionProps } from \"../transitions/utils.js\";\nimport { useForkRef } from \"../utils/index.js\";\nimport { getCollapseUtilityClass } from \"./collapseClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height'),\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      height: 'auto',\n      width: 0,\n      transition: theme.transitions.create('width')\n    }\n  }, {\n    props: {\n      state: 'entered'\n    },\n    style: {\n      height: 'auto',\n      overflow: 'visible'\n    }\n  }, {\n    props: {\n      state: 'entered',\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px',\n    style: {\n      visibility: 'hidden'\n    }\n  }]\n})));\nconst CollapseWrapper = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\nconst CollapseWrapperInner = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})({\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n    addEndListener,\n    children,\n    className,\n    collapsedSize: collapsedSizeProp = '0px',\n    component,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    orientation = 'vertical',\n    style,\n    timeout = duration.standard,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    orientation,\n    collapsedSize: collapsedSizeProp\n  };\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const timer = useTimeout();\n  const wrapperRef = React.useRef(null);\n  const autoTransitionDuration = React.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTransitionDuration.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout,\n    ...other,\n    children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, {\n      as: component,\n      className: clsx(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: {\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize,\n        ...style\n      },\n      ref: handleRef,\n      ...childProps,\n      // `ownerState` is set after `childProps` to override any existing `ownerState` property in `childProps`\n      // that might have been forwarded from the Transition component.\n      ownerState: {\n        ...ownerState,\n        state\n      },\n      children: /*#__PURE__*/_jsx(CollapseWrapper, {\n        ownerState: {\n          ...ownerState,\n          state\n        },\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n          ownerState: {\n            ...ownerState,\n            state\n          },\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * The content node to be collapsed.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nif (Collapse) {\n  Collapse.muiSupportAuto = true;\n}\nexport default Collapse;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n  return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"./StepContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getStepUtilityClass } from \"./stepClasses.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    alternativeLabel,\n    completed\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, alternativeLabel && 'alternativeLabel', completed && 'completed']\n  };\n  return composeClasses(slots, getStepUtilityClass, classes);\n};\nconst StepRoot = styled('div', {\n  name: 'MuiStep',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.completed && styles.completed];\n  }\n})({\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      paddingLeft: 8,\n      paddingRight: 8\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      flex: 1,\n      position: 'relative'\n    }\n  }]\n});\nconst Step = /*#__PURE__*/React.forwardRef(function Step(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStep'\n  });\n  const {\n    active: activeProp,\n    children,\n    className,\n    component = 'div',\n    completed: completedProp,\n    disabled: disabledProp,\n    expanded = false,\n    index,\n    last,\n    ...other\n  } = props;\n  const {\n    activeStep,\n    connector,\n    alternativeLabel,\n    orientation,\n    nonLinear\n  } = React.useContext(StepperContext);\n  let [active = false, completed = false, disabled = false] = [activeProp, completedProp, disabledProp];\n  if (activeStep === index) {\n    active = activeProp !== undefined ? activeProp : true;\n  } else if (!nonLinear && activeStep > index) {\n    completed = completedProp !== undefined ? completedProp : true;\n  } else if (!nonLinear && activeStep < index) {\n    disabled = disabledProp !== undefined ? disabledProp : true;\n  }\n  const contextValue = React.useMemo(() => ({\n    index,\n    last,\n    expanded,\n    icon: index + 1,\n    active,\n    completed,\n    disabled\n  }), [index, last, expanded, active, completed, disabled]);\n  const ownerState = {\n    ...props,\n    active,\n    orientation,\n    alternativeLabel,\n    completed,\n    disabled,\n    expanded,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  const newChildren = /*#__PURE__*/_jsxs(StepRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [connector && alternativeLabel && index !== 0 ? connector : null, children]\n  });\n  return /*#__PURE__*/_jsx(StepContext.Provider, {\n    value: contextValue,\n    children: connector && !alternativeLabel && index !== 0 ? /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [connector, newChildren]\n    }) : newChildren\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Step.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Sets the step as active. Is passed to child components.\n   */\n  active: PropTypes.bool,\n  /**\n   * Should be `Step` sub-components such as `StepLabel`, `StepContent`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   */\n  completed: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the step is disabled, will also disable the button if\n   * `StepButton` is a child of `Step`. Is passed to child components.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Expand the step.\n   * @default false\n   */\n  expanded: PropTypes.bool,\n  /**\n   * The position of the step.\n   * The prop defaults to the value inherited from the parent Stepper component.\n   */\n  index: integerPropType,\n  /**\n   * If `true`, the Step is displayed as rendered last.\n   * The prop defaults to the value inherited from the parent Stepper component.\n   */\n  last: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Step;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepUtilityClass(slot) {\n  return generateUtilityClass('MuiStep', slot);\n}\nconst stepClasses = generateUtilityClasses('MuiStep', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'completed']);\nexport default stepClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"../Step/StepContext.js\";\nimport { getStepConnectorUtilityClass } from \"./stepConnectorClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    alternativeLabel,\n    active,\n    completed,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, alternativeLabel && 'alternativeLabel', active && 'active', completed && 'completed', disabled && 'disabled'],\n    line: ['line', `line${capitalize(orientation)}`]\n  };\n  return composeClasses(slots, getStepConnectorUtilityClass, classes);\n};\nconst StepConnectorRoot = styled('div', {\n  name: 'MuiStepConnector',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.completed && styles.completed];\n  }\n})({\n  flex: '1 1 auto',\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      marginLeft: 12 // half icon\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      position: 'absolute',\n      top: 8 + 4,\n      left: 'calc(-50% + 20px)',\n      right: 'calc(50% + 20px)'\n    }\n  }]\n});\nconst StepConnectorLine = styled('span', {\n  name: 'MuiStepConnector',\n  slot: 'Line',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.line, styles[`line${capitalize(ownerState.orientation)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600];\n  return {\n    display: 'block',\n    borderColor: theme.vars ? theme.vars.palette.StepConnector.border : borderColor,\n    variants: [{\n      props: {\n        orientation: 'horizontal'\n      },\n      style: {\n        borderTopStyle: 'solid',\n        borderTopWidth: 1\n      }\n    }, {\n      props: {\n        orientation: 'vertical'\n      },\n      style: {\n        borderLeftStyle: 'solid',\n        borderLeftWidth: 1,\n        minHeight: 24\n      }\n    }]\n  };\n}));\nconst StepConnector = /*#__PURE__*/React.forwardRef(function StepConnector(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepConnector'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation = 'horizontal'\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed\n  } = React.useContext(StepContext);\n  const ownerState = {\n    ...props,\n    alternativeLabel,\n    orientation,\n    active,\n    completed,\n    disabled\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(StepConnectorRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(StepConnectorLine, {\n      className: classes.line,\n      ownerState: ownerState\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepConnector.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepConnector;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepConnectorUtilityClass(slot) {\n  return generateUtilityClass('MuiStepConnector', slot);\n}\nconst stepConnectorClasses = generateUtilityClasses('MuiStepConnector', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'active', 'completed', 'disabled', 'line', 'lineHorizontal', 'lineVertical']);\nexport default stepConnectorClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepContentUtilityClass(slot) {\n  return generateUtilityClass('MuiStepContent', slot);\n}\nconst stepContentClasses = generateUtilityClasses('MuiStepContent', ['root', 'last', 'transition']);\nexport default stepContentClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Collapse from \"../Collapse/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"../Step/StepContext.js\";\nimport { getStepContentUtilityClass } from \"./stepContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    last\n  } = ownerState;\n  const slots = {\n    root: ['root', last && 'last'],\n    transition: ['transition']\n  };\n  return composeClasses(slots, getStepContentUtilityClass, classes);\n};\nconst StepContentRoot = styled('div', {\n  name: 'MuiStepContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.last && styles.last];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  marginLeft: 12,\n  // half icon\n  paddingLeft: 8 + 12,\n  // margin + half icon\n  paddingRight: 8,\n  borderLeft: theme.vars ? `1px solid ${theme.vars.palette.StepContent.border}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600]}`,\n  variants: [{\n    props: {\n      last: true\n    },\n    style: {\n      borderLeft: 'none'\n    }\n  }]\n})));\nconst StepContentTransition = styled(Collapse, {\n  name: 'MuiStepContent',\n  slot: 'Transition',\n  overridesResolver: (props, styles) => styles.transition\n})({});\nconst StepContent = /*#__PURE__*/React.forwardRef(function StepContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepContent'\n  });\n  const {\n    children,\n    className,\n    TransitionComponent = Collapse,\n    transitionDuration: transitionDurationProp = 'auto',\n    TransitionProps,\n    ...other\n  } = props;\n  const {\n    orientation\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    last,\n    expanded\n  } = React.useContext(StepContext);\n  const ownerState = {\n    ...props,\n    last\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (orientation !== 'vertical') {\n      console.error('MUI: <StepContent /> is only designed for use with the vertical stepper.');\n    }\n  }\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n  return /*#__PURE__*/_jsx(StepContentRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(StepContentTransition, {\n      as: TransitionComponent,\n      in: active || expanded,\n      className: classes.transition,\n      ownerState: ownerState,\n      timeout: transitionDuration,\n      unmountOnExit: true,\n      ...TransitionProps,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Collapse\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Adjust the duration of the content expand transition.\n   * Passed as a prop to the transition component.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default StepContent;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z\"\n}), 'CheckCircle');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');","'use client';\n\nvar _circle;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport CheckCircle from \"../internal/svg-icons/CheckCircle.js\";\nimport Warning from \"../internal/svg-icons/Warning.js\";\nimport SvgIcon from \"../SvgIcon/index.js\";\nimport stepIconClasses, { getStepIconUtilityClass } from \"./stepIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    active,\n    completed,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active', completed && 'completed', error && 'error'],\n    text: ['text']\n  };\n  return composeClasses(slots, getStepIconUtilityClass, classes);\n};\nconst StepIconRoot = styled(SvgIcon, {\n  name: 'MuiStepIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  color: (theme.vars || theme).palette.text.disabled,\n  [`&.${stepIconClasses.completed}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.active}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepIconText = styled('text', {\n  name: 'MuiStepIcon',\n  slot: 'Text',\n  overridesResolver: (props, styles) => styles.text\n})(memoTheme(({\n  theme\n}) => ({\n  fill: (theme.vars || theme).palette.primary.contrastText,\n  fontSize: theme.typography.caption.fontSize,\n  fontFamily: theme.typography.fontFamily\n})));\nconst StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepIcon'\n  });\n  const {\n    active = false,\n    className: classNameProp,\n    completed = false,\n    error = false,\n    icon,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    active,\n    completed,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (typeof icon === 'number' || typeof icon === 'string') {\n    const className = clsx(classNameProp, classes.root);\n    if (error) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: Warning,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    if (completed) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: CheckCircle,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    return /*#__PURE__*/_jsxs(StepIconRoot, {\n      className: className,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      children: [_circle || (_circle = /*#__PURE__*/_jsx(\"circle\", {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"12\"\n      })), /*#__PURE__*/_jsx(StepIconText, {\n        className: classes.text,\n        x: \"12\",\n        y: \"12\",\n        textAnchor: \"middle\",\n        dominantBaseline: \"central\",\n        ownerState: ownerState,\n        children: icon\n      })]\n    });\n  }\n  return icon;\n});\nprocess.env.NODE_ENV !== \"production\" ? StepIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Whether this step is active.\n   * @default false\n   */\n  active: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   * @default false\n   */\n  completed: PropTypes.bool,\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * The label displayed in the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepIconUtilityClass(slot) {\n  return generateUtilityClass('MuiStepIcon', slot);\n}\nconst stepIconClasses = generateUtilityClasses('MuiStepIcon', ['root', 'active', 'completed', 'error', 'text']);\nexport default stepIconClasses;","'use client';\n\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport StepContext from \"../Step/StepContext.js\";\nimport StepIcon from \"../StepIcon/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport stepLabelClasses, { getStepLabelUtilityClass } from \"./stepLabelClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    active,\n    completed,\n    error,\n    disabled,\n    alternativeLabel\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    label: ['label', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    iconContainer: ['iconContainer', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    labelContainer: ['labelContainer', alternativeLabel && 'alternativeLabel']\n  };\n  return composeClasses(slots, getStepLabelUtilityClass, classes);\n};\nconst StepLabelRoot = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation]];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    flexDirection: 'column'\n  },\n  [`&.${stepLabelClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      textAlign: 'left',\n      padding: '8px 0'\n    }\n  }]\n});\nconst StepLabelLabel = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Label',\n  overridesResolver: (props, styles) => styles.label\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${stepLabelClasses.active}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.completed}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    marginTop: 16\n  },\n  [`&.${stepLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepLabelIconContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'IconContainer',\n  overridesResolver: (props, styles) => styles.iconContainer\n})({\n  flexShrink: 0,\n  display: 'flex',\n  paddingRight: 8,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    paddingRight: 0\n  }\n});\nconst StepLabelLabelContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'LabelContainer',\n  overridesResolver: (props, styles) => styles.labelContainer\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    textAlign: 'center'\n  }\n})));\nconst StepLabel = /*#__PURE__*/React.forwardRef(function StepLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepLabel'\n  });\n  const {\n    children,\n    className,\n    componentsProps = {},\n    error = false,\n    icon: iconProp,\n    optional,\n    slots = {},\n    slotProps = {},\n    StepIconComponent: StepIconComponentProp,\n    StepIconProps,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed,\n    icon: iconContext\n  } = React.useContext(StepContext);\n  const icon = iconProp || iconContext;\n  let StepIconComponent = StepIconComponentProp;\n  if (icon && !StepIconComponent) {\n    StepIconComponent = StepIcon;\n  }\n  const ownerState = {\n    ...props,\n    active,\n    alternativeLabel,\n    completed,\n    disabled,\n    error,\n    orientation\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      stepIcon: StepIconProps,\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [LabelSlot, labelProps] = useSlot('label', {\n    elementType: StepLabelLabel,\n    externalForwardedProps,\n    ownerState\n  });\n  const [StepIconSlot, stepIconProps] = useSlot('stepIcon', {\n    elementType: StepIconComponent,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(StepLabelRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [icon || StepIconSlot ? /*#__PURE__*/_jsx(StepLabelIconContainer, {\n      className: classes.iconContainer,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsx(StepIconSlot, {\n        completed: completed,\n        active: active,\n        error: error,\n        icon: icon,\n        ...stepIconProps\n      })\n    }) : null, /*#__PURE__*/_jsxs(StepLabelLabelContainer, {\n      className: classes.labelContainer,\n      ownerState: ownerState,\n      children: [children ? /*#__PURE__*/_jsx(LabelSlot, {\n        ...labelProps,\n        className: clsx(classes.label, labelProps?.className),\n        children: children\n      }) : null, optional]\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * In most cases will simply be a string containing a title for the label.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    label: PropTypes.object\n  }),\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Override the default label of the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The optional node to display.\n   */\n  optional: PropTypes.node,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    label: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    stepIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    label: PropTypes.elementType,\n    stepIcon: PropTypes.elementType\n  }),\n  /**\n   * The component to render in place of the [`StepIcon`](https://mui.com/material-ui/api/step-icon/).\n   */\n  StepIconComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`StepIcon`](https://mui.com/material-ui/api/step-icon/) element.\n   */\n  StepIconProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nif (StepLabel) {\n  StepLabel.muiName = 'StepLabel';\n}\nexport default StepLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiStepLabel', slot);\n}\nconst stepLabelClasses = generateUtilityClasses('MuiStepLabel', ['root', 'horizontal', 'vertical', 'label', 'active', 'completed', 'error', 'disabled', 'iconContainer', 'alternativeLabel', 'labelContainer']);\nexport default stepLabelClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getStepperUtilityClass } from \"./stepperClasses.js\";\nimport StepConnector from \"../StepConnector/index.js\";\nimport StepperContext from \"./StepperContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    nonLinear,\n    alternativeLabel,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, nonLinear && 'nonLinear', alternativeLabel && 'alternativeLabel']\n  };\n  return composeClasses(slots, getStepperUtilityClass, classes);\n};\nconst StepperRoot = styled('div', {\n  name: 'MuiStepper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.nonLinear && styles.nonLinear];\n  }\n})({\n  display: 'flex',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      flexDirection: 'row',\n      alignItems: 'center'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }]\n});\nconst defaultConnector = /*#__PURE__*/_jsx(StepConnector, {});\nconst Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepper'\n  });\n  const {\n    activeStep = 0,\n    alternativeLabel = false,\n    children,\n    className,\n    component = 'div',\n    connector = defaultConnector,\n    nonLinear = false,\n    orientation = 'horizontal',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    nonLinear,\n    alternativeLabel,\n    orientation,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  const steps = childrenArray.map((step, index) => {\n    return /*#__PURE__*/React.cloneElement(step, {\n      index,\n      last: index + 1 === childrenArray.length,\n      ...step.props\n    });\n  });\n  const contextValue = React.useMemo(() => ({\n    activeStep,\n    alternativeLabel,\n    connector,\n    nonLinear,\n    orientation\n  }), [activeStep, alternativeLabel, connector, nonLinear, orientation]);\n  return /*#__PURE__*/_jsx(StepperContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(StepperRoot, {\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ...other,\n      children: steps\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Stepper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the active step (zero based index).\n   * Set to -1 to disable all the steps.\n   * @default 0\n   */\n  activeStep: integerPropType,\n  /**\n   * If set to 'true' and orientation is horizontal,\n   * then the step label will be positioned under the icon.\n   * @default false\n   */\n  alternativeLabel: PropTypes.bool,\n  /**\n   * Two or more `<Step />` components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * An element to be placed between each step.\n   * @default <StepConnector />\n   */\n  connector: PropTypes.element,\n  /**\n   * If set the `Stepper` will not assist in controlling steps for linear flow.\n   * @default false\n   */\n  nonLinear: PropTypes.bool,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Stepper;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepperUtilityClass(slot) {\n  return generateUtilityClass('MuiStepper', slot);\n}\nconst stepperClasses = generateUtilityClasses('MuiStepper', ['root', 'horizontal', 'vertical', 'nonLinear', 'alternativeLabel']);\nexport default stepperClasses;"],"names":["CollapseRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","state","entered","in","collapsedSize","hidden","theme","height","overflow","transition","transitions","create","variants","style","width","visibility","CollapseWrapper","wrapper","display","CollapseWrapperInner","wrapperInner","Collapse","inProps","ref","addEndListener","children","className","collapsedSizeProp","component","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","timeout","standard","TransitionComponent","other","classes","slots","useUtilityClasses","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","nodeRef","handleRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","current","undefined","getWrapperSize","handleEnter","isAppearing","position","handleEntering","wrapperSize","duration","transitionDuration","transitionTimingFunction","mode","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","next","start","childProps","as","muiSupportAuto","getCollapseUtilityClass","StepRoot","alternativeLabel","completed","paddingLeft","paddingRight","flex","active","activeProp","completedProp","disabled","disabledProp","expanded","index","last","activeStep","connector","nonLinear","contextValue","icon","newChildren","Provider","value","StepContext","useStepContext","getStepUtilityClass","StepConnectorRoot","marginLeft","top","left","right","StepConnectorLine","line","borderColor","palette","grey","vars","StepConnector","border","borderTopStyle","borderTopWidth","borderLeftStyle","borderLeftWidth","minHeight","getStepConnectorUtilityClass","getStepContentUtilityClass","generateUtilityClass","generateUtilityClasses","StepContentRoot","styled","memoTheme","borderLeft","StepContent","StepContentTransition","transitionDurationProp","TransitionProps","StepperContext","composeClasses","clsx","unmountOnExit","createSvgIcon","d","_circle","StepIconRoot","SvgIcon","shortest","color","text","stepIconClasses","primary","main","error","StepIconText","fill","contrastText","fontSize","typography","caption","fontFamily","classNameProp","Warning","CheckCircle","cx","cy","r","x","y","textAnchor","dominantBaseline","getStepIconUtilityClass","StepLabelRoot","alignItems","flexDirection","cursor","textAlign","padding","StepLabelLabel","label","body2","fontWeight","marginTop","StepLabelIconContainer","iconContainer","flexShrink","StepLabelLabelContainer","labelContainer","secondary","StepLabel","componentsProps","iconProp","optional","slotProps","StepIconComponent","StepIconComponentProp","StepIconProps","iconContext","externalForwardedProps","stepIcon","LabelSlot","labelProps","elementType","StepIconSlot","stepIconProps","muiName","getStepLabelUtilityClass","StepperRoot","defaultConnector","g","childrenArray","toArray","filter","Boolean","steps","map","step","length","useStepperContext","getStepperUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5243.9de20396.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5243],{15243:(e,r,t)=>{t.r(r),t.d(r,{default:()=>g});var a=t(7552),n=t(59705),s=t(36715),i=t(1343),o=t(29499),l=t(29629),c=t(33371),m=t(32808),u=t(58507),d=t(5401),h=t(49823),p=t(99546);function v(){return a.createElement("div",null,a.createElement(n.A,{size:20,style:{marginRight:20}}),a.createElement(s.A,{display:"inline"},"Creating SVG"))}function f({children:e,...r}){return a.createElement("div",null,a.createElement(i.A,r,e))}function y(e,r){return(0,p.useLocalStorage)(`svg-${e}`,r)}function g({model:e,handleClose:r}){const t=(0,p.getSession)(e),n="undefined"!=typeof OffscreenCanvas,[i,g]=(0,a.useState)(n),[k,b]=(0,a.useState)(!1),[A,S]=(0,a.useState)(),[x,w]=y("file","jbrowse.svg"),[C,E]=y("theme",t.themeName||"default");return a.createElement(h.Dialog,{open:!0,onClose:r,title:"Export SVG"},a.createElement(o.A,null,A?a.createElement(h.ErrorMessage,{error:A}):k?a.createElement(v,null):null,a.createElement(f,{helperText:"filename",value:x,onChange:e=>{w(e.target.value)}}),t.allThemes?a.createElement(f,{select:!0,label:"Theme",value:C,onChange:e=>{E(e.target.value)}},Object.entries(t.allThemes()).map((([e,r])=>a.createElement(l.A,{key:e,value:e},r.name||"(Unknown name)")))):null,n?a.createElement(c.A,{control:a.createElement(m.A,{checked:i,onChange:()=>{g((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):a.createElement(s.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),a.createElement(u.A,null,a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{b(!0),S(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:x,themeName:C}),r()}catch(e){console.error(e),S(e)}finally{b(!1)}}},"Submit")))}},59705:(e,r,t)=>{t.d(r,{A:()=>A});var a=t(7552),n=t(93878),s=t(70799),i=t(64761),o=t(51148),l=t(60129),c=t(4785),m=t(15622),u=t(58520),d=t(72489),h=t(69500);const p=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,v=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,f="string"!=typeof p?i.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,y="string"!=typeof v?i.AH`
+        animation: ${v} 1.4s ease-in-out infinite;
+      `:null,g=(0,o.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,m.A)(t.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:f||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),k=(0,o.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),b=(0,o.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,m.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${v} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:o=!1,size:l=40,style:u,thickness:p=3.6,value:v=0,variant:f="indeterminate",...y}=t,A={...t,color:i,disableShrink:o,size:l,thickness:p,value:v,variant:f},S=(e=>{const{classes:r,variant:t,color:a,disableShrink:n}=e,i={root:["root",t,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(t)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,d.b,r)})(A),x={},w={},C={};if("determinate"===f){const e=2*Math.PI*((44-p)/2);x.strokeDasharray=e.toFixed(3),C["aria-valuenow"]=Math.round(v),x.strokeDashoffset=`${((100-v)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,h.jsx)(g,{className:(0,n.A)(S.root,a),style:{width:l,height:l,...w,...u},ownerState:A,ref:r,role:"progressbar",...C,...y,children:(0,h.jsx)(k,{className:S.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,h.jsx)(b,{className:S.circle,style:x,ownerState:A,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>i,b:()=>s});var a=t(33761),n=t(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=5243.9de20396.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5243.9de20396.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5243.9de20396.chunk.js","mappings":"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","sources":["../../../plugins/circular-view/src/CircularView/components/ExportSvgDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\n\n// locals\nimport { ExportSvgOptions } from '../models/model'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                themeName,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["LoadingMessage","React","CircularProgress","size","style","marginRight","Typography","display","TextField2","children","rest","TextField","useSvgLocal","key","val","useLocalStorage","ExportSvgDialog","model","handleClose","session","getSession","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","useState","loading","setLoading","error","setError","filename","setFilename","themeName","setThemeName","Dialog","open","onClose","title","DialogContent","ErrorMessage","helperText","value","onChange","event","target","allThemes","select","label","Object","entries","map","MenuItem","name","FormControlLabel","control","Checkbox","checked","DialogActions","Button","variant","color","onClick","type","async","undefined","exportSvg","e","console","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","root","theme","variants","transition","transitions","create","animation","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5255.af554ced.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,76 @@
+/*! For license information please see 5255.af554ced.chunk.js.LICENSE.txt */
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5255],{18196:(e,t,r)=>{"use strict";r.d(t,{j:()=>c});var n=r(35451),o=r(16308),i=r.n(o);class a{constructor({minimumTTL:e}){this.minimumTTL=e}calculateChunkExpirationDate(e){const{headers:t={},requestDate:r,responseDate:n}=e;let o=n||r;if(!o){if(!t.date)return;o=new Date(t.date)}const i=e=>new Date(o.getTime()+e);if(/\bno-cache\b/.test(t.pragma))return i(this.minimumTTL);const a=function(e){if("string"!=typeof e)return{};const t={};return e.toLowerCase().replace(/(?:^|(?:\s*,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((e,r,n,o)=>{const i=n||o;return t[r]=!i||i.toLowerCase(),""}))?{}:(Object.keys(t).forEach((e=>{if(/^[\d]+$/.test(t[e]))try{const r=parseInt(t[e],10);Number.isNaN(r)||(t[e]=r)}catch(e){}})),t)}(t["cache-control"]);if(a["no-cache"]||a["no-store"]||a["must-revalidate"])return i(this.minimumTTL);if(void 0!==a["max-age"]){const e=1e3*a["max-age"];return i(Math.max(e,this.minimumTTL))}if(this._coerceToDate(t.expires))return this._coerceToDate(t.expires);if(this._coerceToDate(t["last-modified"])){const e=this._coerceToDate(t["last-modified"]);return i((o.getTime()-e.getTime())/10)}}_coerceToDate(e){if(e){if(e instanceof Date)return e;if("string"==typeof e||"number"==typeof e)return new Date(e)}}cachedChunkIsValid(e){const t=this.calculateChunkExpirationDate(e);return!t||new Date<=t}chunkIsCacheable(){return!0}}class s{constructor({frequency:e=100,fetch:t,maxExtraSize:r=32e3,maxFetchSize:n=1e6}){this.requestQueues={},this.fetchCallback=t,this.frequency=e,this.maxExtraSize=r,this.maxFetchSize=n}_canAggregate(e,t){return t.start<=e.end+this.maxExtraSize&&t.end-t.start+e.end-e.start<this.maxFetchSize}_allSignalsFired(e){return new Promise((t=>{let r=e.filter((e=>!e.aborted)).length;e.forEach((e=>{e.addEventListener("abort",(()=>{r-=1,r||t()}))}))})).catch((e=>{console.error(e)}))}_dispatch({url:e,start:t,end:r,requests:n}){const o=new AbortController,i=[];n.forEach((({requestOptions:e})=>{(null==e?void 0:e.signal)&&i.push(e.signal)})),i.length===n.length&&this._allSignalsFired(i).then((()=>o.abort())),this.fetchCallback(e,t,r-1,{signal:o.signal}).then((e=>{const r=e.buffer;n.forEach((({start:n,end:o,resolve:i})=>{i({headers:e.headers,buffer:r.slice(n-t,o-t)})}))}),(e=>{n.forEach((({reject:t})=>t(e)))}))}_aggregateAndDispatch(){Object.entries(this.requestQueues).forEach((([e,t])=>{if(!(null==t?void 0:t.length))return;const r=[];if(t.forEach((e=>{var t;const{requestOptions:n,reject:o}=e;(null===(t=null==n?void 0:n.signal)||void 0===t?void 0:t.aborted)?o(Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})):r.push(e)})),r.sort(((e,t)=>e.start-t.start)),t.length=0,!r.length)return;let n;for(const t of r)n&&this._canAggregate(n,t)?(n.requests.push(t),n.end=t.end):(n&&this._dispatch(n),n={requests:[t],url:e,start:t.start,end:t.end});n&&this._dispatch(n)}))}_enQueue(e,t){this.requestQueues[e]||(this.requestQueues[e]=[]),this.requestQueues[e].push(t)}fetch(e,t,r,n={}){return new Promise(((o,i)=>{this._enQueue(e,{start:t,end:r,resolve:o,reject:i,requestOptions:n}),this.timeout||(this.timeout=setTimeout((()=>{this.timeout=void 0,this._aggregateAndDispatch()}),this.frequency||1))}))}}async function l(e,t,r,o={}){const i=new Date,a=Object.assign({method:"GET",headers:{range:`bytes=${t}-${r}`}},o),s=await fetch(e,a),l=new Date;if(206!==s.status&&200!==s.status)throw new Error(`HTTP ${s.status} when fetching ${e} bytes ${t}-${r}`);if(200===s.status)throw new Error(`HTTP ${s.status} when fetching ${e} bytes ${t}-${r}`);const c=await s.arrayBuffer().then((e=>n.hp.from(e)));return{headers:s.headers.map,requestDate:i,responseDate:l,buffer:c}}class c{constructor({fetch:e=l,size:t=1e7,chunkSize:r=32768,aggregationTime:n=100,minimumTTL:o=1e3,maxFetchSize:c=4*r,maxExtraFetch:u=r}){this.aggregator=new s({fetch:e,frequency:n,maxFetchSize:c,maxExtraSize:u}),this.chunkSize=r,this.chunkCache=new(i())({maxSize:Math.floor(t/r)||1}),this.cacheSemantics=new a({minimumTTL:o}),this.stats=new(i())({maxSize:20})}async getRange(e,t=0,r,o={}){let i=r;if(void 0===i){const r=await this.stat(e);if(void 0===r.size)throw new Error("length not specified, and could not determine size of the remote file");i=r.size-t}const a=Math.floor(t/this.chunkSize),s=Math.floor((t+i-1)/this.chunkSize),l=new Array(s-a+1);for(let t=a;t<=s;t+=1)l[t-a]=this._getChunk(e,t,o).then((e=>e&&{headers:e.headers,buffer:e.buffer,chunkNumber:t}));let c=await Promise.all(l);if(c=c.filter((e=>!!e)),!c.length)return{headers:{},buffer:n.hp.allocUnsafe(0)};const u=t-c[0].chunkNumber*this.chunkSize;return{headers:this._makeHeaders(c[0].headers,t,t+i-1),buffer:this._makeBuffer(c,u,i)}}_makeBuffer(e,t,r){if(1===e.length)return e[0].buffer.slice(t,t+r);if(0===e.length)return n.hp.allocUnsafe(0);const o=e.map((e=>e.buffer)),i=o.shift().slice(t);let a=o.pop(),s=i.length+o.reduce(((e,t)=>e+t.length),0)+a.length-r;return s<0&&(s=0),a=a.slice(0,a.length-s),n.hp.concat([i,...o,a])}async stat(e){let t=this.stats.get(e);if(!t){const r=await this._getChunk(e,0);if(this._recordStatsIfNecessary(e,r),t=this.stats.get(e),!t)throw new Error(`failed to retrieve file size for ${e}`)}return t}_headersToStats(e){const{headers:t}=e,r={};if(t["content-range"]){const e=t["content-range"].match(/\d+-\d+\/(\d+)/);e&&(r.size=parseInt(e[1],10),Number.isNaN(r.size)&&delete r.size)}return t["last-modified"]&&(r.mtime=new Date(t["last-modified"]),"Invalid Date"===r.mtime.toString()&&delete r.mtime,r.mtime&&(r.mtimeMs=r.mtime.getTime())),r}_makeHeaders(e,t,r){const n=Object.assign({},e||{});n["content-length"]=r-t;const o=(n["content-range"]||"").match(/\d+-\d+\/(\d+)/);return o&&(n["content-range"]=`${t}-${r-1}/${o[1]}`,n["x-resource-length"]=o[1]),n}async _getChunk(e,t,r){const n=`${e}/${t}`,o=this.chunkCache.get(n);if(o){let a,s;try{a=await o}catch(e){if("AbortError"!==(i=e).name&&"ERR_ABORTED"!==i.code&&!i.message.match(/\b(aborted|AbortError)\b/i))throw e;s=!0}return s||!this.cacheSemantics.cachedChunkIsValid(a)?(this._uncacheIfSame(n,o),this._getChunk(e,t,r)):(this._recordStatsIfNecessary(e,a),a)}var i;const a=t*this.chunkSize;let s=a+this.chunkSize;const l=this.stats.get(e);if(null==l?void 0:l.size){if(a>=l.size)return;s>=l.size&&(s=l.size)}let c=!1;const u=this.aggregator.fetch(e,a,s,r).catch((e=>{throw c=!0,this._uncacheIfSame(n,u),e}));c||this.chunkCache.set(n,u);const d=await u;return this._recordStatsIfNecessary(e,d),this.cacheSemantics.chunkIsCacheable(d)||this._uncacheIfSame(n,u),d}_recordStatsIfNecessary(e,t){this.stats.has(e)||this.stats.set(e,this._headersToStats(t))}_uncacheIfSame(e,t){this.chunkCache.get(e)===t&&this.chunkCache.delete(e)}reset(){this.stats.clear(),this.chunkCache.clear()}}},9502:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,h:()=>i});const n={InfoFields:{AA:{Number:1,Type:"String",Description:"Ancestral allele"},AC:{Number:"A",Type:"Integer",Description:"Allele count in genotypes, for each ALT allele, in the same order as listed"},AD:{Number:"R",Type:"Integer",Description:"Total read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},AF:{Number:"A",Type:"Float",Description:"Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)"},AN:{Number:1,Type:"Integer",Description:"Total number of alleles in called genotypes"},BQ:{Number:1,Type:"Float",Description:"RMS base quality"},CIGAR:{Number:1,Type:"Float",Description:"Cigar string describing how to align an alternate allele to the reference allele"},DB:{Number:0,Type:"Flag",Description:"dbSNP membership"},DP:{Number:1,Type:"Integer",Description:"combined depth across samples"},END:{Number:1,Type:"Integer",Description:"End position (for use with symbolic alleles)"},H2:{Number:0,Type:"Flag",Description:"HapMap2 membership"},H3:{Number:0,Type:"Flag",Description:"HapMap3 membership"},MQ:{Number:1,Type:null,Description:"RMS mapping quality"},MQ0:{Number:1,Type:"Integer",Description:"Number of MAPQ == 0 reads"},NS:{Number:1,Type:"Integer",Description:"Number of samples with data"},SB:{Number:4,Type:"Integer",Description:"Strand bias"},SOMATIC:{Number:0,Type:"Flag",Description:"Somatic mutation (for cancer genomics)"},VALIDATED:{Number:0,Type:"Flag",Description:"Validated by follow-up experiment"},"1000G":{Number:0,Type:"Flag",Description:"1000 Genomes membership"},IMPRECISE:{Number:0,Type:"Flag",Description:"Imprecise structural variation"},NOVEL:{Number:0,Type:"Flag",Description:"Indicates a novel structural variation"},SVTYPE:{Number:1,Type:"String",Description:"Type of structural variant"},SVLEN:{Number:null,Type:"Integer",Description:"Difference in length between REF and ALT alleles"},CIPOS:{Number:2,Type:"Integer",Description:"Confidence interval around POS for imprecise variants"},CIEND:{Number:2,Type:"Integer",Description:"Confidence interval around END for imprecise variants"},HOMLEN:{Type:"Integer",Description:"Length of base pair identical micro-homology at event breakpoints"},HOMSEQ:{Type:"String",Description:"Sequence of base pair identical micro-homology at event breakpoints"},BKPTID:{Type:"String",Description:"ID of the assembled alternate allele in the assembly file"},MEINFO:{Number:4,Type:"String",Description:"Mobile element info of the form NAME,START,END,POLARITY"},METRANS:{Number:4,Type:"String",Description:"Mobile element transduction info of the form CHR,START,END,POLARITY"},DGVID:{Number:1,Type:"String",Description:"ID of this element in Database of Genomic Variation"},DBVARID:{Number:1,Type:"String",Description:"ID of this element in DBVAR"},DBRIPID:{Number:1,Type:"String",Description:"ID of this element in DBRIP"},MATEID:{Number:null,Type:"String",Description:"ID of mate breakends"},PARID:{Number:1,Type:"String",Description:"ID of partner breakend"},EVENT:{Number:1,Type:"String",Description:"ID of event associated to breakend"},CILEN:{Number:2,Type:"Integer",Description:"Confidence interval around the inserted material between breakend"},DPADJ:{Type:"Integer",Description:"Read Depth of adjacency"},CN:{Number:1,Type:"Integer",Description:"Copy number of segment containing breakend"},CNADJ:{Number:null,Type:"Integer",Description:"Copy number of adjacency"},CICN:{Number:2,Type:"Integer",Description:"Confidence interval around copy number for the segment"},CICNADJ:{Number:null,Type:"Integer",Description:"Confidence interval around copy number for the adjacency"}},GenotypeFields:{AD:{Number:"R",Type:"Integer",Description:"Read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},DP:{Number:1,Type:"Integer",Description:"Read depth"},EC:{Number:"A",Type:"Integer",Description:"Expected alternate allele counts"},FT:{Number:1,Type:"String",Description:'Filter indicating if this genotype was "called"'},GL:{Number:"G",Type:"Float",Description:"Genotype likelihoods"},GP:{Number:"G",Type:"Float",Description:"Genotype posterior probabilities"},GQ:{Number:1,Type:"Integer",Description:"Conditional genotype quality"},GT:{Number:1,Type:"String",Description:"Genotype"},HQ:{Number:2,Type:"Integer",Description:"Haplotype quality"},MQ:{Number:1,Type:"Integer",Description:"RMS mapping quality"},PL:{Number:"G",Type:"Integer",Description:"Phred-scaled genotype likelihoods rounded to the closest integer"},PQ:{Number:1,Type:"Integer",Description:"Phasing quality"},PS:{Number:1,Type:"Integer",Description:"Phase set"}},AltTypes:{DEL:{Description:"Deletion relative to the reference"},INS:{Description:"Insertion of novel sequence relative to the reference"},DUP:{Description:"Region of elevated copy number relative to the reference"},INV:{Description:"Inversion of reference sequence"},CNV:{Description:"Copy number variable region (may be both deletion and duplication)"},"DUP:TANDEM":{Description:"Tandem duplication"},"DEL:ME":{Description:"Deletion of mobile element relative to the reference"},"INS:ME":{Description:"Insertion of a mobile element relative to the reference"},NON_REF:{Description:"Represents any possible alternative allele at this location"},"*":{Description:"Represents any possible alternative allele at this location"}},FilterTypes:{PASS:{Description:"Passed all filters"}}};function o(e){Object.assign(this,e)}function i(e){const t=e.split(/[[\]]/);if(t.length>1){const r=e.includes("[")?"right":"left";let n,o,i;for(let e=0;e<t.length;e+=1){const r=t[e];r&&(r.includes(":")?(i=r,n=o?"right":"left"):o=r)}if(!(i&&n&&o))throw new Error(`Invalid breakend: ${e}`);return{MatePosition:i,Join:n,Replacement:o,MateDirection:r}}if(e.startsWith("."))return{Join:"left",SingleBreakend:!0,Replacement:e.slice(1)};if(e.endsWith("."))return{Join:"right",SingleBreakend:!0,Replacement:e.slice(0,e.length-1)};if("<"===e[0]){const t=e.match("<(.*)>(.*)");if(!t)throw new Error(`failed to parse ${e}`);const r=null==t?void 0:t[2];return r?{Join:"left",Replacement:r,MateDirection:"right",MatePosition:`<${null==t?void 0:t[1]}>:1`}:void 0}if(e.includes("<")){const t=e.match("(.*)<(.*)>");if(!t)throw new Error(`failed to parse ${e}`);const r=null==t?void 0:t[1];return r?{Join:"right",Replacement:r,MateDirection:"right",MatePosition:`<${null==t?void 0:t[2]}>:1`}:void 0}}const a=class{constructor({header:e="",strict:t=!0}){if(!e||!e.length)throw new Error("empty header received");const r=e.split(/[\r\n]+/).filter((e=>e));if(!r.length)throw new Error("no non-empty header lines specified");let o;if(this.strict=t,this.metadata=JSON.parse(JSON.stringify({INFO:n.InfoFields,FORMAT:n.GenotypeFields,ALT:n.AltTypes,FILTER:n.FilterTypes})),r.forEach((e=>{if(!e.startsWith("#"))throw new Error(`Bad line in header:\n${e}`);e.startsWith("##")?this._parseMetadata(e):o=e})),!o)throw new Error("No format line found in header");const i=o.trim().split("\t"),a=i.slice(0,8),s=["#CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO"];if(i.length<8)throw new Error(`VCF header missing columns:\n${o}`);if(a.length!==s.length||!a.every(((e,t)=>e===s[t])))throw new Error(`VCF column headers not correct:\n${o}`);this.samples=i.slice(9)}_parseGenotypes(e,t){const r=t.split("\t"),n={},o=null==e?void 0:e.split(":");return o&&this.samples.forEach(((e,t)=>{n[e]={},o.forEach((t=>{n[e][t]=null})),r[t].split(":").filter((e=>e)).forEach(((t,r)=>{let i;if(""===t||"."===t||void 0===t)i=null;else{const e=t.split(",").map((e=>"."===e?null:e)),n=this.getMetadata("FORMAT",o[r],"Type");i="Integer"===n||"Float"===n?e.map((e=>e?+e:e)):e}n[e][o[r]]=i}),{})})),n}_parseMetadata(e){const t=e.trim().match(/^##(.+?)=(.*)/);if(!t)throw new Error(`Line is not a valid metadata line: ${e}`);const[r,n]=t.slice(1,3);if(n.startsWith("<")){r in this.metadata||(this.metadata[r]={});const[e,t]=this._parseStructuredMetaVal(n);this.metadata[r][e]=t}else this.metadata[r]=n}_parseStructuredMetaVal(e){const t=this._parseKeyValue(e.replace(/^<|>$/g,""),","),r=t.ID;return delete t.ID,"Number"in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[r,t]}getMetadata(...e){let t=this.metadata;for(let r=0;r<e.length;r+=1)if(t=t[e[r]],!t)return t;return t}_parseKeyValue(e,t=";"){const r={};let n="",o="",i=1;for(let a=0;a<e.length;a+=1)1===i?"="===e[a]?i=2:e[a]!==t?n+=e[a]:""===o&&(r[n]=null,n=""):2===i?e[a]===t?(r[n]=o,n="",o="",i=1):'"'===e[a]?i=3:o+=e[a]:3===i&&('"'!==e[a]?o+=e[a]:i=2);return 2===i||3===i?r[n]=o:1===i&&(r[n]=null),r}parseLine(e){if(!(e=e.trim()).length)return;const t=this;let r=0;for(let t=0;r<e.length&&("\t"===e[r]&&(t+=1),9!==t);r+=1);const n=e.substr(0,r).split("\t"),i=e.substr(r+1),[a,s,l,c,u,d,p]=n,f=a,h=+s,m="."===l?null:l.split(";"),v=c,g="."===u?null:u.split(","),y="."===d?null:+d,b="."===p?null:p.split(";");if(this.strict&&void 0===n[7])throw new Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");const x=void 0===n[7]||"."===n[7]?{}:this._parseKeyValue(n[7]);Object.keys(x).forEach((e=>{let t;t=x[e]?x[e].split(",").map((e=>"."===e?null:e)).map((e=>e?function(e){try{return decodeURIComponent(e)}catch(t){return e}}(e):e)):x[e];const r=this.getMetadata("INFO",e,"Type");r&&("Integer"===r||"Float"===r?t=t.map((e=>null===e?null:Number(e))):"Flag"===r&&(x[e]?console.warn(`Info field ${e} is a Flag and should not have a value (got value ${x[e]})`):t=!0)),x[e]=t}));const A=new o({CHROM:f,POS:h,ALT:g,INFO:x,REF:v,FILTER:b&&1===b.length&&"PASS"===b[0]?"PASS":b,ID:m,QUAL:y});return Object.defineProperty(A,"SAMPLES",{get(){const e=t._parseGenotypes(n[8],i);return Object.defineProperty(this,"SAMPLES",{value:e,configurable:!1}),e},configurable:!0}),A}}},374:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add")},97147:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack")},32813:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown")},40631:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"}),"ArrowForward")},12756:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m10 17 5-5-5-5z"}),"ArrowRight")},11353:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2"}),"Bookmark")},29948:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m19 18 2 1V3c0-1.1-.9-2-2-2H8.99C7.89 1 7 1.9 7 3h10c1.1 0 2 .9 2 2zM15 5H5c-1.1 0-2 .9-2 2v16l7-3 7 3V7c0-1.1-.9-2-2-2"}),"Bookmarks")},24250:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3 17h18v2H3zm0-7h18v5H3zm0-4h18v2H3z"}),"CalendarViewDay")},86013:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m-7 7H3v4c0 1.1.9 2 2 2h4v-2H5zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2m0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2z"}),"CenterFocusStrong")},49296:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2m-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckBox")},23224:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 5v14H5V5zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2"}),"CheckBoxOutlineBlank")},68850:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight")},31892:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear")},28669:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M5 13h14v-2H5zm-2 4h14v-2H3zM7 7v2h14V7z"}),"ClearAll")},30157:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},39794:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8m-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12m3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8m5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8m3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5"}),"ColorLens")},52521:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2"}),"CropFree")},98450:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M13 2.05v3.03c3.39.49 6 3.39 6 6.92 0 .9-.18 1.75-.48 2.54l2.6 1.53c.56-1.24.88-2.62.88-4.07 0-5.18-3.95-9.45-9-9.95M12 19c-3.87 0-7-3.13-7-7 0-3.53 2.61-6.43 6-6.92V2.05c-5.06.5-9 4.76-9 9.95 0 5.52 4.47 10 9.99 10 3.31 0 6.24-1.61 8.06-4.09l-2.6-1.53C16.17 17.98 14.21 19 12 19"}),"DataUsage")},4449:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done")},35050:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2m-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"DragIndicator")},29417:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen")},25914:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"Help")},17037:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m6 14 3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.88l1.41-1.41 2.12 2.12L5.62 8zm13.46.71 2.12-2.12 1.41 1.41L18.38 8z"}),"Highlight")},36993:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info")},66195:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z"}),"KeyboardArrowDown")},21430:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z"}),"KeyboardArrowUp")},91388:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)([(0,o.jsx)("path",{d:"M18 6.41 16.59 5 12 9.58 7.41 5 6 6.41l6 6z"},"0"),(0,o.jsx)("path",{d:"m18 13-1.41-1.41L12 16.17l-4.59-4.58L6 13l6 6z"},"1")],"KeyboardDoubleArrowDown")},42281:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)([(0,o.jsx)("path",{d:"M6 17.59 7.41 19 12 14.42 16.59 19 18 17.59l-6-6z"},"0"),(0,o.jsx)("path",{d:"m6 11 1.41 1.41L12 7.83l4.59 4.58L18 11l-6-6z"},"1")],"KeyboardDoubleArrowUp")},95947:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12z"}),"Label")},11370:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3 16h5v-2H3zm6.5 0h5v-2h-5zm6.5 0h5v-2h-5zM3 20h2v-2H3zm4 0h2v-2H7zm4 0h2v-2h-2zm4 0h2v-2h-2zm4 0h2v-2h-2zM3 12h8v-2H3zm10 0h8v-2h-8zM3 4v4h18V4z"}),"LineStyle")},75441:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link")},63670:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3 18h13v-2H3zm0-5h10v-2H3zm0-7v2h13V6zm18 9.59L17.42 12 21 8.41 19.59 7l-5 5 5 5z"}),"MenuOpen")},16217:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M6 19h12v2H6z"}),"Minimize")},17307:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert")},52686:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"}),"OpenInNew")},53794:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette")},64502:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)([(0,o.jsx)("circle",{cx:"12",cy:"12",r:"3.2"},"0"),(0,o.jsx)("path",{d:"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5"},"1")],"PhotoCamera")},69381:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"RadioButtonChecked")},70996:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"RadioButtonUnchecked")},4902:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh")},71627:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27zM12 17.3c-.72 0-1.3-.58-1.3-1.3s.58-1.3 1.3-1.3 1.3.58 1.3 1.3-.58 1.3-1.3 1.3m1-4.3h-2V7h2z"}),"Report")},59121:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),"Search")},91049:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort")},25611:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"m18 12 4-4-4-4v3H3v2h15zM6 12l-4 4 4 4v-3h15v-2H6z"}),"SyncAlt")},67393:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2M3 19c0 1.1.9 2 2 2h3V10H3z"}),"TableChart")},24006:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2"}),"Timeline")},39494:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M2 4v7h20V4zm8 16h12v-7H10zm-8 0h6v-7H2z"}),"ViewComfy")},1633:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},11008:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M6 13c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m6-10C9.8 3 8 4.8 8 7s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m6 10c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4"}),"Workspaces")},87809:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)([(0,o.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),(0,o.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn")},91404:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut")},9937:(e,t,r)=>{"use strict";r.d(t,{A:()=>R});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(51148),l=r(60129),c=r(4785),u=r(43045),d=r(15622),p=r(58520),f=r(943),h=r(67015),m=r(61723),v=r(74893),g=r(69500);const y=(0,v.A)((0,g.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),b=(0,v.A)((0,g.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),x=(0,v.A)((0,g.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),A=(0,v.A)((0,g.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined");var w=r(68890);const S=(0,s.Ay)(f.A,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,d.A)(r.color||r.severity)}`]]}})((0,l.A)((({theme:e})=>{const t="light"===e.palette.mode?a.e$:a.a,r="light"===e.palette.mode?a.a:a.e$;return{...e.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(e.palette).filter((0,p.A)(["light"])).map((([n])=>({props:{colorSeverity:n,variant:"standard"},style:{color:e.vars?e.vars.palette.Alert[`${n}Color`]:t(e.palette[n].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${n}StandardBg`]:r(e.palette[n].light,.9),[`& .${h.A.icon}`]:e.vars?{color:e.vars.palette.Alert[`${n}IconColor`]}:{color:e.palette[n].main}}}))),...Object.entries(e.palette).filter((0,p.A)(["light"])).map((([r])=>({props:{colorSeverity:r,variant:"outlined"},style:{color:e.vars?e.vars.palette.Alert[`${r}Color`]:t(e.palette[r].light,.6),border:`1px solid ${(e.vars||e).palette[r].light}`,[`& .${h.A.icon}`]:e.vars?{color:e.vars.palette.Alert[`${r}IconColor`]}:{color:e.palette[r].main}}}))),...Object.entries(e.palette).filter((0,p.A)(["dark"])).map((([t])=>({props:{colorSeverity:t,variant:"filled"},style:{fontWeight:e.typography.fontWeightMedium,...e.vars?{color:e.vars.palette.Alert[`${t}FilledColor`],backgroundColor:e.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[t].dark:e.palette[t].main,color:e.palette.getContrastText(e.palette[t].main)}}})))]}}))),k=(0,s.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),E=(0,s.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),C=(0,s.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),T={success:(0,g.jsx)(y,{fontSize:"inherit"}),warning:(0,g.jsx)(b,{fontSize:"inherit"}),error:(0,g.jsx)(x,{fontSize:"inherit"}),info:(0,g.jsx)(A,{fontSize:"inherit"})},R=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiAlert"}),{action:n,children:a,className:s,closeText:l="Close",color:p,components:f={},componentsProps:v={},icon:y,iconMapping:b=T,onClose:x,role:A="alert",severity:R="success",slotProps:M={},slots:O={},variant:P="standard",...I}=r,N={...r,color:p,severity:R,variant:P,colorSeverity:p||R},$=(e=>{const{variant:t,color:r,severity:n,classes:o}=e,a={root:["root",`color${(0,d.A)(r||n)}`,`${t}${(0,d.A)(r||n)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]};return(0,i.A)(a,h.X,o)})(N),_={slots:{closeButton:f.CloseButton,closeIcon:f.CloseIcon,...O},slotProps:{...v,...M}},[L,j]=(0,u.A)("closeButton",{elementType:m.A,externalForwardedProps:_,ownerState:N}),[z,D]=(0,u.A)("closeIcon",{elementType:w.A,externalForwardedProps:_,ownerState:N});return(0,g.jsxs)(S,{role:A,elevation:0,ownerState:N,className:(0,o.A)($.root,s),ref:t,...I,children:[!1!==y?(0,g.jsx)(k,{ownerState:N,className:$.icon,children:y||b[R]||T[R]}):null,(0,g.jsx)(E,{ownerState:N,className:$.message,children:a}),null!=n?(0,g.jsx)(C,{ownerState:N,className:$.action,children:n}):null,null==n&&x?(0,g.jsx)(C,{ownerState:N,className:$.action,children:(0,g.jsx)(L,{size:"small","aria-label":l,title:l,color:"inherit",onClick:x,...j,children:(0,g.jsx)(z,{fontSize:"small",...D})})}):null]})}))},67015:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,X:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiAlert",e)}const a=(0,n.A)("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"])},48901:(e,t,r)=>{"use strict";r.d(t,{A:()=>D});var n,o,i=r(7552),a=r(93878),s=r(70799),l=r(72639),c=r(25419),u=r(20350),d=r(55851),p=r(943),f=r(61723),h=r(15779),m=r(7495),v=r(3275),g=r(29683),y=r(25075),b=r(68890),x=r(62646),A=r(51148),w=r(60129),S=r(4785),k=r(73917),E=r(15622),C=r(43045),T=r(69500);const R=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{fullWidth:n,hasClearIcon:o,hasPopupIcon:i,inputFocused:a,size:s}=r;return[{[`& .${k.A.tag}`]:t.tag},{[`& .${k.A.tag}`]:t[`tagSize${(0,E.A)(s)}`]},{[`& .${k.A.inputRoot}`]:t.inputRoot},{[`& .${k.A.input}`]:t.input},{[`& .${k.A.input}`]:a&&t.inputFocused},t.root,n&&t.fullWidth,i&&t.hasPopupIcon,o&&t.hasClearIcon]}})({[`&.${k.A.focused} .${k.A.clearIndicator}`]:{visibility:"visible"},"@media (pointer: fine)":{[`&:hover .${k.A.clearIndicator}`]:{visibility:"visible"}},[`& .${k.A.tag}`]:{margin:3,maxWidth:"calc(100% - 6px)"},[`& .${k.A.inputRoot}`]:{[`.${k.A.hasPopupIcon}&, .${k.A.hasClearIcon}&`]:{paddingRight:30},[`.${k.A.hasPopupIcon}.${k.A.hasClearIcon}&`]:{paddingRight:56},[`& .${k.A.input}`]:{width:0,minWidth:30}},[`& .${m.A.root}`]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},[`& .${m.A.root}.${v.A.sizeSmall}`]:{[`& .${m.A.input}`]:{padding:"2px 4px 3px 0"}},[`& .${g.A.root}`]:{padding:9,[`.${k.A.hasPopupIcon}&, .${k.A.hasClearIcon}&`]:{paddingRight:39},[`.${k.A.hasPopupIcon}.${k.A.hasClearIcon}&`]:{paddingRight:65},[`& .${k.A.input}`]:{padding:"7.5px 4px 7.5px 5px"},[`& .${k.A.endAdornment}`]:{right:9}},[`& .${g.A.root}.${v.A.sizeSmall}`]:{paddingTop:6,paddingBottom:6,paddingLeft:6,[`& .${k.A.input}`]:{padding:"2.5px 4px 2.5px 8px"}},[`& .${y.A.root}`]:{paddingTop:19,paddingLeft:8,[`.${k.A.hasPopupIcon}&, .${k.A.hasClearIcon}&`]:{paddingRight:39},[`.${k.A.hasPopupIcon}.${k.A.hasClearIcon}&`]:{paddingRight:65},[`& .${y.A.input}`]:{padding:"7px 4px"},[`& .${k.A.endAdornment}`]:{right:9}},[`& .${y.A.root}.${v.A.sizeSmall}`]:{paddingBottom:1,[`& .${y.A.input}`]:{padding:"2.5px 4px"}},[`& .${v.A.hiddenLabel}`]:{paddingTop:8},[`& .${y.A.root}.${v.A.hiddenLabel}`]:{paddingTop:0,paddingBottom:0,[`& .${k.A.input}`]:{paddingTop:16,paddingBottom:17}},[`& .${y.A.root}.${v.A.hiddenLabel}.${v.A.sizeSmall}`]:{[`& .${k.A.input}`]:{paddingTop:8,paddingBottom:9}},[`& .${k.A.input}`]:{flexGrow:1,textOverflow:"ellipsis",opacity:0},variants:[{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{[`& .${k.A.tag}`]:{margin:2,maxWidth:"calc(100% - 4px)"}}},{props:{inputFocused:!0},style:{[`& .${k.A.input}`]:{opacity:1}}},{props:{multiple:!0},style:{[`& .${k.A.inputRoot}`]:{flexWrap:"wrap"}}}]}),M=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(e,t)=>t.endAdornment})({position:"absolute",right:0,top:"50%",transform:"translate(0, -50%)"}),O=(0,A.Ay)(f.A,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(e,t)=>t.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),P=(0,A.Ay)(f.A,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:({ownerState:e},t)=>({...t.popupIndicator,...e.popupOpen&&t.popupIndicatorOpen})})({padding:2,marginRight:-2,variants:[{props:{popupOpen:!0},style:{transform:"rotate(180deg)"}}]}),I=(0,A.Ay)(u.A,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${k.A.option}`]:t.option},t.popper,r.disablePortal&&t.popperDisablePortal]}})((0,w.A)((({theme:e})=>({zIndex:(e.vars||e).zIndex.modal,variants:[{props:{disablePortal:!0},style:{position:"absolute"}}]})))),N=(0,A.Ay)(p.A,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(e,t)=>t.paper})((0,w.A)((({theme:e})=>({...e.typography.body1,overflow:"auto"})))),$=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(e,t)=>t.loading})((0,w.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,padding:"14px 16px"})))),_=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(e,t)=>t.noOptions})((0,w.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,padding:"14px 16px"})))),L=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})((0,w.A)((({theme:e})=>({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",[`& .${k.A.option}`]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[e.breakpoints.up("sm")]:{minHeight:"auto"},[`&.${k.A.focused}`]:{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${k.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${k.A.focused}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(e.vars||e).palette.action.selected}},[`&.${k.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}}}})))),j=(0,A.Ay)(d.A,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(e,t)=>t.groupLabel})((0,w.A)((({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,top:-8})))),z=(0,A.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(e,t)=>t.groupUl})({padding:0,[`& .${k.A.option}`]:{paddingLeft:24}}),D=i.forwardRef((function(e,t){const r=(0,S.b)({props:e,name:"MuiAutocomplete"}),{autoComplete:l=!1,autoHighlight:d=!1,autoSelect:f=!1,blurOnSelect:m=!1,ChipProps:v,className:g,clearIcon:y=n||(n=(0,T.jsx)(b.A,{fontSize:"small"})),clearOnBlur:A=!r.freeSolo,clearOnEscape:w=!1,clearText:D="Clear",closeText:F="Close",componentsProps:B,defaultValue:W=(r.multiple?[]:null),disableClearable:H=!1,disableCloseOnSelect:U=!1,disabled:V=!1,disabledItemsFocusable:q=!1,disableListWrap:X=!1,disablePortal:Y=!1,filterOptions:G,filterSelectedOptions:K=!1,forcePopupIcon:J="auto",freeSolo:Z=!1,fullWidth:Q=!1,getLimitTagsText:ee=e=>`+${e}`,getOptionDisabled:te,getOptionKey:re,getOptionLabel:ne,isOptionEqualToValue:oe,groupBy:ie,handleHomeEndKeys:ae=!r.freeSolo,id:se,includeInputInList:le=!1,inputValue:ce,limitTags:ue=-1,ListboxComponent:de,ListboxProps:pe,loading:fe=!1,loadingText:he="Loading…",multiple:me=!1,noOptionsText:ve="No options",onChange:ge,onClose:ye,onHighlightChange:be,onInputChange:xe,onOpen:Ae,open:we,openOnFocus:Se=!1,openText:ke="Open",options:Ee,PaperComponent:Ce,PopperComponent:Te,popupIcon:Re=o||(o=(0,T.jsx)(x.A,{})),readOnly:Me=!1,renderGroup:Oe,renderInput:Pe,renderOption:Ie,renderTags:Ne,selectOnFocus:$e=!r.freeSolo,size:_e="medium",slots:Le={},slotProps:je={},value:ze,...De}=r,{getRootProps:Fe,getInputProps:Be,getInputLabelProps:We,getPopupIndicatorProps:He,getClearProps:Ue,getTagProps:Ve,getListboxProps:qe,getOptionProps:Xe,value:Ye,dirty:Ge,expanded:Ke,id:Je,popupOpen:Ze,focused:Qe,focusedTag:et,anchorEl:tt,setAnchorEl:rt,inputValue:nt,groupedOptions:ot}=(0,c.A)({...r,componentName:"Autocomplete"}),it=!H&&!V&&Ge&&!Me,at=(!Z||!0===J)&&!1!==J,{onMouseDown:st}=Be(),{ref:lt,...ct}=qe(),ut=ne||(e=>e.label??e),dt={...r,disablePortal:Y,expanded:Ke,focused:Qe,fullWidth:Q,getOptionLabel:ut,hasClearIcon:it,hasPopupIcon:at,inputFocused:-1===et,popupOpen:Ze,size:_e},pt=(e=>{const{classes:t,disablePortal:r,expanded:n,focused:o,fullWidth:i,hasClearIcon:a,hasPopupIcon:l,inputFocused:c,popupOpen:u,size:d}=e,p={root:["root",n&&"expanded",o&&"focused",i&&"fullWidth",a&&"hasClearIcon",l&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",c&&"inputFocused"],tag:["tag",`tagSize${(0,E.A)(d)}`],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",u&&"popupIndicatorOpen"],popper:["popper",r&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,s.A)(p,k.r,t)})(dt),ft={slots:{listbox:de,paper:Ce,popper:Te,...Le},slotProps:{chip:v,listbox:pe,...B,...je}},[ht,mt]=(0,C.A)("listbox",{elementType:"ul",externalForwardedProps:ft,ownerState:dt,className:pt.listbox,additionalProps:ct,ref:lt}),[vt,gt]=(0,C.A)("paper",{elementType:p.A,externalForwardedProps:ft,ownerState:dt,className:pt.paper}),[yt,bt]=(0,C.A)("popper",{elementType:u.A,externalForwardedProps:ft,ownerState:dt,className:pt.popper,additionalProps:{disablePortal:Y,style:{width:tt?tt.clientWidth:null},role:"presentation",anchorEl:tt,open:Ze}});let xt;if(me&&Ye.length>0){const e=e=>({className:pt.tag,disabled:V,...Ve(e)});xt=Ne?Ne(Ye,e,dt):Ye.map(((t,r)=>{const{key:n,...o}=e({index:r});return(0,T.jsx)(h.A,{label:ut(t),size:_e,...o,...ft.slotProps.chip},n)}))}if(ue>-1&&Array.isArray(xt)){const e=xt.length-ue;!Qe&&e>0&&(xt=xt.splice(0,ue),xt.push((0,T.jsx)("span",{className:pt.tag,children:ee(e)},xt.length)))}const At=Oe||(e=>(0,T.jsxs)("li",{children:[(0,T.jsx)(j,{className:pt.groupLabel,ownerState:dt,component:"div",children:e.group}),(0,T.jsx)(z,{className:pt.groupUl,ownerState:dt,children:e.children})]},e.key)),wt=Ie||((e,t)=>{const{key:r,...n}=e;return(0,T.jsx)("li",{...n,children:ut(t)},r)}),St=(e,t)=>{const r=Xe({option:e,index:t});return wt({...r,className:pt.option},e,{selected:r["aria-selected"],index:t,inputValue:nt},dt)},kt=ft.slotProps.clearIndicator,Et=ft.slotProps.popupIndicator,Ct=e=>(0,T.jsx)(I,{as:yt,...bt,children:(0,T.jsx)(N,{as:vt,...gt,children:e})});let Tt=null;return ot.length>0?Tt=Ct((0,T.jsx)(L,{as:ht,...mt,children:ot.map(((e,t)=>ie?At({key:e.key,group:e.group,children:e.options.map(((t,r)=>St(t,e.index+r)))}):St(e,t)))})):fe&&0===ot.length?Tt=Ct((0,T.jsx)($,{className:pt.loading,ownerState:dt,children:he})):0!==ot.length||Z||fe||(Tt=Ct((0,T.jsx)(_,{className:pt.noOptions,ownerState:dt,role:"presentation",onMouseDown:e=>{e.preventDefault()},children:ve}))),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(R,{ref:t,className:(0,a.A)(pt.root,g),ownerState:dt,...Fe(De),children:Pe({id:Je,disabled:V,fullWidth:!0,size:"small"===_e?"small":void 0,InputLabelProps:We(),InputProps:{ref:rt,className:pt.inputRoot,startAdornment:xt,onClick:e=>{e.target===e.currentTarget&&st(e)},...(it||at)&&{endAdornment:(0,T.jsxs)(M,{className:pt.endAdornment,ownerState:dt,children:[it?(0,T.jsx)(O,{...Ue(),"aria-label":D,title:D,ownerState:dt,...kt,className:(0,a.A)(pt.clearIndicator,kt?.className),children:y}):null,at?(0,T.jsx)(P,{...He(),disabled:V,"aria-label":Ze?F:ke,title:Ze?F:ke,ownerState:dt,...Et,className:(0,a.A)(pt.popupIndicator,Et?.className),children:Re}):null]})}},inputProps:{className:pt.input,disabled:V,readOnly:Me,...Be()}})}),tt?Tt:null]})}))},73917:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,r:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiAutocomplete",e)}const a=(0,n.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"])},19937:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(4785),l=r(43045),c=r(93321),u=r(32049),d=r(69500);const p=(0,a.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.invisible&&t.invisible]}})({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent",variants:[{props:{invisible:!0},style:{backgroundColor:"transparent"}}]}),f=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiBackdrop"}),{children:n,className:a,component:f="div",invisible:h=!1,open:m,components:v={},componentsProps:g={},slotProps:y={},slots:b={},TransitionComponent:x,transitionDuration:A,...w}=r,S={...r,component:f,invisible:h},k=(e=>{const{classes:t,invisible:r}=e,n={root:["root",r&&"invisible"]};return(0,i.A)(n,u.R,t)})(S),E={slots:{transition:x,root:v.Root,...b},slotProps:{...g,...y}},[C,T]=(0,l.A)("root",{elementType:p,externalForwardedProps:E,className:(0,o.A)(k.root,a),ownerState:S}),[R,M]=(0,l.A)("transition",{elementType:c.A,externalForwardedProps:E,ownerState:S}),O=(e=>{const{ownerState:t,...r}=e;return r})(M);return(0,d.jsx)(R,{in:m,timeout:A,...w,...O,children:(0,d.jsx)(C,{"aria-hidden":!0,...T,classes:k,ref:t,children:n})})}))},32049:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,R:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiBackdrop",e)}const a=(0,n.A)("MuiBackdrop",["root","invisible"])},17776:(e,t,r)=>{"use strict";r.d(t,{A:()=>v});var n=r(7552),o=r(93878),i=r(53791),a=r(76795),s=r(8455),l=r(67109),c=r(69500),u=r(23043),d=r(89022),p=r(74988),f=r(92239);const h=(0,d.A)(),m=function(e={}){const{themeId:t,defaultTheme:r,defaultClassName:u="MuiBox-root",generateClassName:d}=e,p=(0,i.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(a.A);return n.forwardRef((function(e,n){const i=(0,l.A)(r),{className:a,component:f="div",...h}=(0,s.A)(e);return(0,c.jsx)(p,{as:f,ref:n,className:(0,o.A)(a,d?d(u):u),theme:t&&i[t]||i,...h})}))}({themeId:p.A,defaultTheme:h,defaultClassName:f.A.root,generateClassName:u.A.generate}),v=m},92239:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=(0,r(33761).A)("MuiBox",["root"])},5401:(e,t,r)=>{"use strict";r.d(t,{A:()=>S});var n=r(7552),o=r(93878),i=r(80007),a=r(70799),s=r(72639),l=r(55270),c=r(51148),u=r(60129),d=r(4785),p=r(48054),f=r(15622),h=r(58520),m=r(57897),v=r(21572),g=r(97712),y=r(69500);const b=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],x=(0,c.Ay)(p.A,{shouldForwardProp:e=>(0,l.A)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,f.A)(r.color)}`],t[`size${(0,f.A)(r.size)}`],t[`${r.variant}Size${(0,f.A)(r.size)}`],"inherit"===r.color&&t.colorInherit,r.disableElevation&&t.disableElevation,r.fullWidth&&t.fullWidth]}})((0,u.A)((({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],r="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${m.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${m.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${m.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${m.A.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(e.palette).filter((0,h.A)(["dark","contrastText"])).map((([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.5)`:(0,s.X4)(e.palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}}))),{props:{color:"inherit"},style:{"--variant-containedColor":e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(t),"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:r,"--variant-textBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.text.primary,e.palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${m.A.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${m.A.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}}]}}))),A=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.startIcon,t[`iconSize${(0,f.A)(r.size)}`]]}})({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},...b]}),w=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.endIcon,t[`iconSize${(0,f.A)(r.size)}`]]}})({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},...b]}),S=n.forwardRef((function(e,t){const r=n.useContext(v.A),s=n.useContext(g.A),l=(0,i.A)(r,e),c=(0,d.b)({props:l,name:"MuiButton"}),{children:u,color:p="primary",component:h="button",className:b,disabled:S=!1,disableElevation:k=!1,disableFocusRipple:E=!1,endIcon:C,focusVisibleClassName:T,fullWidth:R=!1,size:M="medium",startIcon:O,type:P,variant:I="text",...N}=c,$={...c,color:p,component:h,disabled:S,disableElevation:k,disableFocusRipple:E,fullWidth:R,size:M,type:P,variant:I},_=(e=>{const{color:t,disableElevation:r,fullWidth:n,size:o,variant:i,classes:s}=e,l={root:["root",i,`${i}${(0,f.A)(t)}`,`size${(0,f.A)(o)}`,`${i}Size${(0,f.A)(o)}`,`color${(0,f.A)(t)}`,r&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["icon","startIcon",`iconSize${(0,f.A)(o)}`],endIcon:["icon","endIcon",`iconSize${(0,f.A)(o)}`]},c=(0,a.A)(l,m.B,s);return{...s,...c}})($),L=O&&(0,y.jsx)(A,{className:_.startIcon,ownerState:$,children:O}),j=C&&(0,y.jsx)(w,{className:_.endIcon,ownerState:$,children:C}),z=s||"";return(0,y.jsxs)(x,{ownerState:$,className:(0,o.A)(r.className,_.root,b,z),component:h,disabled:S,focusRipple:!E,focusVisibleClassName:(0,o.A)(_.focusVisible,T),ref:t,type:P,...N,classes:_,children:[L,u,j]})}))},57897:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,B:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiButton",e)}const a=(0,n.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge"])},48054:(e,t,r)=>{"use strict";r.d(t,{A:()=>D});var n=r(7552),o=r(93878),i=r(70799),a=r(91527),s=r(51148),l=r(4785),c=r(51584),u=r(87422),d=r(53131);class p{static create(){return new p}static use(){const e=(0,d.A)(p.create).current,[t,r]=n.useState(!1);return e.shouldMount=t,e.setShouldMount=r,n.useEffect(e.mountEffect,[t]),e}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=function(){let e,t;const r=new Promise(((r,n)=>{e=r,t=n}));return r.resolve=e,r.reject=t,r}(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then((()=>this.ref.current?.start(...e)))}stop(...e){this.mount().then((()=>this.ref.current?.stop(...e)))}pulsate(...e){this.mount().then((()=>this.ref.current?.pulsate(...e)))}}var f=r(83673),h=r(6614),m=r(60191),v=r(80467),g=r(20309);function y(e,t){var r=Object.create(null);return e&&n.Children.map(e,(function(e){return e})).forEach((function(e){r[e.key]=function(e){return t&&(0,n.isValidElement)(e)?t(e):e}(e)})),r}function b(e,t,r){return null!=r[t]?r[t]:e.props[t]}function x(e,t,r){var o=y(e.children),i=function(e,t){function r(r){return r in t?t[r]:e[r]}e=e||{},t=t||{};var n,o=Object.create(null),i=[];for(var a in e)a in t?i.length&&(o[a]=i,i=[]):i.push(a);var s={};for(var l in t){if(o[l])for(n=0;n<o[l].length;n++){var c=o[l][n];s[o[l][n]]=r(c)}s[l]=r(l)}for(n=0;n<i.length;n++)s[i[n]]=r(i[n]);return s}(t,o);return Object.keys(i).forEach((function(a){var s=i[a];if((0,n.isValidElement)(s)){var l=a in t,c=a in o,u=t[a],d=(0,n.isValidElement)(u)&&!u.props.in;!c||l&&!d?c||!l||d?c&&l&&(0,n.isValidElement)(u)&&(i[a]=(0,n.cloneElement)(s,{onExited:r.bind(null,s),in:u.props.in,exit:b(s,"exit",e),enter:b(s,"enter",e)})):i[a]=(0,n.cloneElement)(s,{in:!1}):i[a]=(0,n.cloneElement)(s,{onExited:r.bind(null,s),in:!0,exit:b(s,"exit",e),enter:b(s,"enter",e)})}})),i}var A=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},w=function(e){function t(t,r){var n,o=(n=e.call(this,t,r)||this).handleExited.bind((0,m.A)(n));return n.state={contextValue:{isMounting:!0},handleExited:o,firstRender:!0},n}(0,v.A)(t,e);var r=t.prototype;return r.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},r.componentWillUnmount=function(){this.mounted=!1},t.getDerivedStateFromProps=function(e,t){var r,o,i=t.children,a=t.handleExited;return{children:t.firstRender?(r=e,o=a,y(r.children,(function(e){return(0,n.cloneElement)(e,{onExited:o.bind(null,e),in:!0,appear:b(e,"appear",r),enter:b(e,"enter",r),exit:b(e,"exit",r)})}))):x(e,i,a),firstRender:!1}},r.handleExited=function(e,t){var r=y(this.props.children);e.key in r||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState((function(t){var r=(0,h.A)({},t.children);return delete r[e.key],{children:r}})))},r.render=function(){var e=this.props,t=e.component,r=e.childFactory,o=(0,f.A)(e,["component","childFactory"]),i=this.state.contextValue,a=A(this.state.children).map(r);return delete o.appear,delete o.enter,delete o.exit,null===t?n.createElement(g.A.Provider,{value:i},a):n.createElement(g.A.Provider,{value:i},n.createElement(t,o,a))},t}(n.Component);w.propTypes={},w.defaultProps={component:"div",childFactory:function(e){return e}};const S=w;var k=r(26218),E=r(64761),C=r(69500);var T=r(33761);const R=(0,T.A)("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),M=E.i7`
+  0% {
+    transform: scale(0);
+    opacity: 0.1;
+  }
+
+  100% {
+    transform: scale(1);
+    opacity: 0.3;
+  }
+`,O=E.i7`
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+  }
+`,P=E.i7`
+  0% {
+    transform: scale(1);
+  }
+
+  50% {
+    transform: scale(0.92);
+  }
+
+  100% {
+    transform: scale(1);
+  }
+`,I=(0,s.Ay)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),N=(0,s.Ay)((function(e){const{className:t,classes:r,pulsate:i=!1,rippleX:a,rippleY:s,rippleSize:l,in:c,onExited:u,timeout:d}=e,[p,f]=n.useState(!1),h=(0,o.A)(t,r.ripple,r.rippleVisible,i&&r.ripplePulsate),m={width:l,height:l,top:-l/2+s,left:-l/2+a},v=(0,o.A)(r.child,p&&r.childLeaving,i&&r.childPulsate);return c||p||f(!0),n.useEffect((()=>{if(!c&&null!=u){const e=setTimeout(u,d);return()=>{clearTimeout(e)}}}),[u,c,d]),(0,C.jsx)("span",{className:h,style:m,children:(0,C.jsx)("span",{className:v})})}),{name:"MuiTouchRipple",slot:"Ripple"})`
+  opacity: 0;
+  position: absolute;
+
+  &.${R.rippleVisible} {
+    opacity: 0.3;
+    transform: scale(1);
+    animation-name: ${M};
+    animation-duration: ${550}ms;
+    animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
+  }
+
+  &.${R.ripplePulsate} {
+    animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms;
+  }
+
+  & .${R.child} {
+    opacity: 1;
+    display: block;
+    width: 100%;
+    height: 100%;
+    border-radius: 50%;
+    background-color: currentColor;
+  }
+
+  & .${R.childLeaving} {
+    opacity: 0;
+    animation-name: ${O};
+    animation-duration: ${550}ms;
+    animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
+  }
+
+  & .${R.childPulsate} {
+    position: absolute;
+    /* @noflip */
+    left: 0px;
+    top: 0;
+    animation-name: ${P};
+    animation-duration: 2500ms;
+    animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
+    animation-iteration-count: infinite;
+    animation-delay: 200ms;
+  }
+`,$=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiTouchRipple"}),{center:i=!1,classes:a={},className:s,...c}=r,[u,d]=n.useState([]),p=n.useRef(0),f=n.useRef(null);n.useEffect((()=>{f.current&&(f.current(),f.current=null)}),[u]);const h=n.useRef(!1),m=(0,k.A)(),v=n.useRef(null),g=n.useRef(null),y=n.useCallback((e=>{const{pulsate:t,rippleX:r,rippleY:n,rippleSize:i,cb:s}=e;d((e=>[...e,(0,C.jsx)(N,{classes:{ripple:(0,o.A)(a.ripple,R.ripple),rippleVisible:(0,o.A)(a.rippleVisible,R.rippleVisible),ripplePulsate:(0,o.A)(a.ripplePulsate,R.ripplePulsate),child:(0,o.A)(a.child,R.child),childLeaving:(0,o.A)(a.childLeaving,R.childLeaving),childPulsate:(0,o.A)(a.childPulsate,R.childPulsate)},timeout:550,pulsate:t,rippleX:r,rippleY:n,rippleSize:i},p.current)])),p.current+=1,f.current=s}),[a]),b=n.useCallback(((e={},t={},r=()=>{})=>{const{pulsate:n=!1,center:o=i||t.pulsate,fakeElement:a=!1}=t;if("mousedown"===e?.type&&h.current)return void(h.current=!1);"touchstart"===e?.type&&(h.current=!0);const s=a?null:g.current,l=s?s.getBoundingClientRect():{width:0,height:0,left:0,top:0};let c,u,d;if(o||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(l.width/2),u=Math.round(l.height/2);else{const{clientX:t,clientY:r}=e.touches&&e.touches.length>0?e.touches[0]:e;c=Math.round(t-l.left),u=Math.round(r-l.top)}if(o)d=Math.sqrt((2*l.width**2+l.height**2)/3),d%2==0&&(d+=1);else{const e=2*Math.max(Math.abs((s?s.clientWidth:0)-c),c)+2,t=2*Math.max(Math.abs((s?s.clientHeight:0)-u),u)+2;d=Math.sqrt(e**2+t**2)}e?.touches?null===v.current&&(v.current=()=>{y({pulsate:n,rippleX:c,rippleY:u,rippleSize:d,cb:r})},m.start(80,(()=>{v.current&&(v.current(),v.current=null)}))):y({pulsate:n,rippleX:c,rippleY:u,rippleSize:d,cb:r})}),[i,y,m]),x=n.useCallback((()=>{b({},{pulsate:!0})}),[b]),A=n.useCallback(((e,t)=>{if(m.clear(),"touchend"===e?.type&&v.current)return v.current(),v.current=null,void m.start(0,(()=>{A(e,t)}));v.current=null,d((e=>e.length>0?e.slice(1):e)),f.current=t}),[m]);return n.useImperativeHandle(t,(()=>({pulsate:x,start:b,stop:A})),[x,b,A]),(0,C.jsx)(I,{className:(0,o.A)(R.root,a.root,s),ref:g,...c,children:(0,C.jsx)(S,{component:null,exit:!0,children:u})})}));var _=r(85693);function L(e){return(0,_.Ay)("MuiButtonBase",e)}const j=(0,T.A)("MuiButtonBase",["root","disabled","focusVisible"]),z=(0,s.Ay)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${j.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),D=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiButtonBase"}),{action:s,centerRipple:d=!1,children:f,className:h,component:m="button",disabled:v=!1,disableRipple:g=!1,disableTouchRipple:y=!1,focusRipple:b=!1,focusVisibleClassName:x,LinkComponent:A="a",onBlur:w,onClick:S,onContextMenu:k,onDragLeave:E,onFocus:T,onFocusVisible:R,onKeyDown:M,onKeyUp:O,onMouseDown:P,onMouseLeave:I,onMouseUp:N,onTouchEnd:_,onTouchMove:j,onTouchStart:D,tabIndex:F=0,TouchRippleProps:B,touchRippleRef:W,type:H,...U}=r,V=n.useRef(null),q=p.use(),X=(0,c.A)(q.ref,W),[Y,G]=n.useState(!1);v&&Y&&G(!1),n.useImperativeHandle(s,(()=>({focusVisible:()=>{G(!0),V.current.focus()}})),[]);const K=q.shouldMount&&!g&&!v;function J(e,t,r=y){return(0,u.A)((n=>(t&&t(n),r||q[e](n),!0)))}n.useEffect((()=>{Y&&b&&!g&&q.pulsate()}),[g,b,Y,q]);const Z=J("start",P),Q=J("stop",k),ee=J("stop",E),te=J("stop",N),re=J("stop",(e=>{Y&&e.preventDefault(),I&&I(e)})),ne=J("start",D),oe=J("stop",_),ie=J("stop",j),ae=J("stop",(e=>{(0,a.A)(e.target)||G(!1),w&&w(e)}),!1),se=(0,u.A)((e=>{V.current||(V.current=e.currentTarget),(0,a.A)(e.target)&&(G(!0),R&&R(e)),T&&T(e)})),le=()=>{const e=V.current;return m&&"button"!==m&&!("A"===e.tagName&&e.href)},ce=(0,u.A)((e=>{b&&!e.repeat&&Y&&" "===e.key&&q.stop(e,(()=>{q.start(e)})),e.target===e.currentTarget&&le()&&" "===e.key&&e.preventDefault(),M&&M(e),e.target===e.currentTarget&&le()&&"Enter"===e.key&&!v&&(e.preventDefault(),S&&S(e))})),ue=(0,u.A)((e=>{b&&" "===e.key&&Y&&!e.defaultPrevented&&q.stop(e,(()=>{q.pulsate(e)})),O&&O(e),S&&e.target===e.currentTarget&&le()&&" "===e.key&&!e.defaultPrevented&&S(e)}));let de=m;"button"===de&&(U.href||U.to)&&(de=A);const pe={};"button"===de?(pe.type=void 0===H?"button":H,pe.disabled=v):(U.href||U.to||(pe.role="button"),v&&(pe["aria-disabled"]=v));const fe=(0,c.A)(t,V),he={...r,centerRipple:d,component:m,disabled:v,disableRipple:g,disableTouchRipple:y,focusRipple:b,tabIndex:F,focusVisible:Y},me=(e=>{const{disabled:t,focusVisible:r,focusVisibleClassName:n,classes:o}=e,a={root:["root",t&&"disabled",r&&"focusVisible"]},s=(0,i.A)(a,L,o);return r&&n&&(s.root+=` ${n}`),s})(he);return(0,C.jsxs)(z,{as:de,className:(0,o.A)(me.root,h),ownerState:he,onBlur:ae,onClick:S,onContextMenu:Q,onFocus:se,onKeyDown:ce,onKeyUp:ue,onMouseDown:Z,onMouseLeave:re,onMouseUp:te,onDragLeave:ee,onTouchEnd:oe,onTouchMove:ie,onTouchStart:ne,ref:fe,tabIndex:v?-1:F,type:H,...pe,...U,children:[f,K?(0,C.jsx)($,{ref:X,center:d,...B}):null]})}))},97712:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext(void 0)},21572:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext({})},32808:(e,t,r)=>{"use strict";r.d(t,{A:()=>k});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(15110),l=r(74893),c=r(69500);const u=(0,l.A)((0,c.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),d=(0,l.A)((0,c.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),p=(0,l.A)((0,c.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");var f=r(15622),h=r(55270),m=r(42687),v=r(51148),g=r(60129),y=r(58520),b=r(4785);const x=(0,v.Ay)(s.A,{shouldForwardProp:e=>(0,h.A)(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.indeterminate&&t.indeterminate,t[`size${(0,f.A)(r.size)}`],"default"!==r.color&&t[`color${(0,f.A)(r.color)}`]]}})((0,g.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,a.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,y.A)()).map((([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,a.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,y.A)()).map((([t])=>({props:{color:t},style:{[`&.${m.A.checked}, &.${m.A.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${m.A.disabled}`]:{color:(e.vars||e).palette.action.disabled}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),A=(0,c.jsx)(d,{}),w=(0,c.jsx)(u,{}),S=(0,c.jsx)(p,{}),k=n.forwardRef((function(e,t){const r=(0,b.b)({props:e,name:"MuiCheckbox"}),{checkedIcon:a=A,color:s="primary",icon:l=w,indeterminate:u=!1,indeterminateIcon:d=S,inputProps:p,size:h="medium",disableRipple:v=!1,className:g,...y}=r,k=u?d:l,E=u?d:a,C={...r,disableRipple:v,color:s,indeterminate:u,size:h},T=(e=>{const{classes:t,indeterminate:r,color:n,size:o}=e,a={root:["root",r&&"indeterminate",`color${(0,f.A)(n)}`,`size${(0,f.A)(o)}`]},s=(0,i.A)(a,m.w,t);return{...t,...s}})(C);return(0,c.jsx)(x,{type:"checkbox",inputProps:{"data-indeterminate":u,...p},icon:n.cloneElement(k,{fontSize:k.props.fontSize??h}),checkedIcon:n.cloneElement(E,{fontSize:E.props.fontSize??h}),ownerState:C,ref:t,className:(0,o.A)(T.root,g),...y,classes:T})}))},42687:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,w:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiCheckbox",e)}const a=(0,n.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"])},15779:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(74893),l=r(69500);const c=(0,s.A)((0,l.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");var u=r(51584),d=r(15622),p=r(48054),f=r(51148),h=r(60129),m=r(58520),v=r(4785),g=r(32625);const y=(0,f.Ay)("div",{name:"MuiChip",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{color:n,iconColor:o,clickable:i,onDelete:a,size:s,variant:l}=r;return[{[`& .${g.A.avatar}`]:t.avatar},{[`& .${g.A.avatar}`]:t[`avatar${(0,d.A)(s)}`]},{[`& .${g.A.avatar}`]:t[`avatarColor${(0,d.A)(n)}`]},{[`& .${g.A.icon}`]:t.icon},{[`& .${g.A.icon}`]:t[`icon${(0,d.A)(s)}`]},{[`& .${g.A.icon}`]:t[`iconColor${(0,d.A)(o)}`]},{[`& .${g.A.deleteIcon}`]:t.deleteIcon},{[`& .${g.A.deleteIcon}`]:t[`deleteIcon${(0,d.A)(s)}`]},{[`& .${g.A.deleteIcon}`]:t[`deleteIconColor${(0,d.A)(n)}`]},{[`& .${g.A.deleteIcon}`]:t[`deleteIcon${(0,d.A)(l)}Color${(0,d.A)(n)}`]},t.root,t[`size${(0,d.A)(s)}`],t[`color${(0,d.A)(n)}`],i&&t.clickable,i&&"default"!==n&&t[`clickableColor${(0,d.A)(n)})`],a&&t.deletable,a&&"default"!==n&&t[`deletableColor${(0,d.A)(n)}`],t[l],t[`${l}${(0,d.A)(n)}`]]}})((0,h.A)((({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[700]:e.palette.grey[300];return{maxWidth:"100%",fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(e.vars||e).palette.text.primary,backgroundColor:(e.vars||e).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${g.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${g.A.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:e.vars?e.vars.palette.Chip.defaultAvatarColor:t,fontSize:e.typography.pxToRem(12)},[`& .${g.A.avatarColorPrimary}`]:{color:(e.vars||e).palette.primary.contrastText,backgroundColor:(e.vars||e).palette.primary.dark},[`& .${g.A.avatarColorSecondary}`]:{color:(e.vars||e).palette.secondary.contrastText,backgroundColor:(e.vars||e).palette.secondary.dark},[`& .${g.A.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:e.typography.pxToRem(10)},[`& .${g.A.icon}`]:{marginLeft:5,marginRight:-6},[`& .${g.A.deleteIcon}`]:{WebkitTapHighlightColor:"transparent",color:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.26)`:(0,a.X4)(e.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.primary,.4)}},variants:[{props:{size:"small"},style:{height:24,[`& .${g.A.icon}`]:{fontSize:18,marginLeft:4,marginRight:-4},[`& .${g.A.deleteIcon}`]:{fontSize:16,marginRight:4,marginLeft:-4}}},...Object.entries(e.palette).filter((0,m.A)(["contrastText"])).map((([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main,color:(e.vars||e).palette[t].contrastText,[`& .${g.A.deleteIcon}`]:{color:e.vars?`rgba(${e.vars.palette[t].contrastTextChannel} / 0.7)`:(0,a.X4)(e.palette[t].contrastText,.7),"&:hover, &:active":{color:(e.vars||e).palette[t].contrastText}}}}))),{props:e=>e.iconColor===e.color,style:{[`& .${g.A.icon}`]:{color:e.vars?e.vars.palette.Chip.defaultIconColor:t}}},{props:e=>e.iconColor===e.color&&"default"!==e.color,style:{[`& .${g.A.icon}`]:{color:"inherit"}}},{props:{onDelete:!0},style:{[`&.${g.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,a.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}}},...Object.entries(e.palette).filter((0,m.A)(["dark"])).map((([t])=>({props:{color:t,onDelete:!0},style:{[`&.${g.A.focusVisible}`]:{background:(e.vars||e).palette[t].dark}}}))),{props:{clickable:!0},style:{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,a.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)},[`&.${g.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,a.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)},"&:active":{boxShadow:(e.vars||e).shadows[1]}}},...Object.entries(e.palette).filter((0,m.A)(["dark"])).map((([t])=>({props:{color:t,clickable:!0},style:{[`&:hover, &.${g.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette[t].dark}}}))),{props:{variant:"outlined"},style:{backgroundColor:"transparent",border:e.vars?`1px solid ${e.vars.palette.Chip.defaultBorder}`:`1px solid ${"light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[700]}`,[`&.${g.A.clickable}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${g.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`& .${g.A.avatar}`]:{marginLeft:4},[`& .${g.A.avatarSmall}`]:{marginLeft:2},[`& .${g.A.icon}`]:{marginLeft:4},[`& .${g.A.iconSmall}`]:{marginLeft:2},[`& .${g.A.deleteIcon}`]:{marginRight:5},[`& .${g.A.deleteIconSmall}`]:{marginRight:3}}},...Object.entries(e.palette).filter((0,m.A)()).map((([t])=>({props:{variant:"outlined",color:t},style:{color:(e.vars||e).palette[t].main,border:`1px solid ${e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.7)`:(0,a.X4)(e.palette[t].main,.7)}`,[`&.${g.A.clickable}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,a.X4)(e.palette[t].main,e.palette.action.hoverOpacity)},[`&.${g.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.focusOpacity})`:(0,a.X4)(e.palette[t].main,e.palette.action.focusOpacity)},[`& .${g.A.deleteIcon}`]:{color:e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.7)`:(0,a.X4)(e.palette[t].main,.7),"&:hover, &:active":{color:(e.vars||e).palette[t].main}}}})))]}}))),b=(0,f.Ay)("span",{name:"MuiChip",slot:"Label",overridesResolver:(e,t)=>{const{ownerState:r}=e,{size:n}=r;return[t.label,t[`label${(0,d.A)(n)}`]]}})({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap",variants:[{props:{variant:"outlined"},style:{paddingLeft:11,paddingRight:11}},{props:{size:"small"},style:{paddingLeft:8,paddingRight:8}},{props:{size:"small",variant:"outlined"},style:{paddingLeft:7,paddingRight:7}}]});function x(e){return"Backspace"===e.key||"Delete"===e.key}const A=n.forwardRef((function(e,t){const r=(0,v.b)({props:e,name:"MuiChip"}),{avatar:a,className:s,clickable:f,color:h="default",component:m,deleteIcon:A,disabled:w=!1,icon:S,label:k,onClick:E,onDelete:C,onKeyDown:T,onKeyUp:R,size:M="medium",variant:O="filled",tabIndex:P,skipFocusWhenDisabled:I=!1,...N}=r,$=n.useRef(null),_=(0,u.A)($,t),L=e=>{e.stopPropagation(),C&&C(e)},j=!(!1===f||!E)||f,z=j||C?p.A:m||"div",D={...r,component:z,disabled:w,size:M,color:h,iconColor:n.isValidElement(S)&&S.props.color||h,onDelete:!!C,clickable:j,variant:O},F=(e=>{const{classes:t,disabled:r,size:n,color:o,iconColor:a,onDelete:s,clickable:l,variant:c}=e,u={root:["root",c,r&&"disabled",`size${(0,d.A)(n)}`,`color${(0,d.A)(o)}`,l&&"clickable",l&&`clickableColor${(0,d.A)(o)}`,s&&"deletable",s&&`deletableColor${(0,d.A)(o)}`,`${c}${(0,d.A)(o)}`],label:["label",`label${(0,d.A)(n)}`],avatar:["avatar",`avatar${(0,d.A)(n)}`,`avatarColor${(0,d.A)(o)}`],icon:["icon",`icon${(0,d.A)(n)}`,`iconColor${(0,d.A)(a)}`],deleteIcon:["deleteIcon",`deleteIcon${(0,d.A)(n)}`,`deleteIconColor${(0,d.A)(o)}`,`deleteIcon${(0,d.A)(c)}Color${(0,d.A)(o)}`]};return(0,i.A)(u,g.f,t)})(D),B=z===p.A?{component:m||"div",focusVisibleClassName:F.focusVisible,...C&&{disableRipple:!0}}:{};let W=null;C&&(W=A&&n.isValidElement(A)?n.cloneElement(A,{className:(0,o.A)(A.props.className,F.deleteIcon),onClick:L}):(0,l.jsx)(c,{className:(0,o.A)(F.deleteIcon),onClick:L}));let H=null;a&&n.isValidElement(a)&&(H=n.cloneElement(a,{className:(0,o.A)(F.avatar,a.props.className)}));let U=null;return S&&n.isValidElement(S)&&(U=n.cloneElement(S,{className:(0,o.A)(F.icon,S.props.className)})),(0,l.jsxs)(y,{as:z,className:(0,o.A)(F.root,s),disabled:!(!j||!w)||void 0,onClick:E,onKeyDown:e=>{e.currentTarget===e.target&&x(e)&&e.preventDefault(),T&&T(e)},onKeyUp:e=>{e.currentTarget===e.target&&C&&x(e)&&C(e),R&&R(e)},ref:_,tabIndex:I&&w?-1:P,ownerState:D,...B,...N,children:[H||U,(0,l.jsx)(b,{className:(0,o.A)(F.label),ownerState:D,children:k}),W]})}))},32625:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,f:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiChip",e)}const a=(0,n.A)("MuiChip",["root","sizeSmall","sizeMedium","colorDefault","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"])},40985:(e,t,r)=>{"use strict";r.d(t,{A:()=>S});var n=r(7552),o=r(93878),i=r(70799),a=r(50089),s=r(15622),l=r(31694),c=r(93321),u=r(943),d=r(23113),p=r(29666),f=r(19937),h=r(51148),m=r(48231),v=r(60129),g=r(4785),y=r(69500);const b=(0,h.Ay)(f.A,{name:"MuiDialog",slot:"Backdrop",overrides:(e,t)=>t.backdrop})({zIndex:-1}),x=(0,h.Ay)(l.A,{name:"MuiDialog",slot:"Root",overridesResolver:(e,t)=>t.root})({"@media print":{position:"absolute !important"}}),A=(0,h.Ay)("div",{name:"MuiDialog",slot:"Container",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.container,t[`scroll${(0,s.A)(r.scroll)}`]]}})({height:"100%","@media print":{height:"auto"},outline:0,variants:[{props:{scroll:"paper"},style:{display:"flex",justifyContent:"center",alignItems:"center"}},{props:{scroll:"body"},style:{overflowY:"auto",overflowX:"hidden",textAlign:"center","&::after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}}}]}),w=(0,h.Ay)(u.A,{name:"MuiDialog",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.paper,t[`scrollPaper${(0,s.A)(r.scroll)}`],t[`paperWidth${(0,s.A)(String(r.maxWidth))}`],r.fullWidth&&t.paperFullWidth,r.fullScreen&&t.paperFullScreen]}})((0,v.A)((({theme:e})=>({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"},variants:[{props:{scroll:"paper"},style:{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"}},{props:{scroll:"body"},style:{display:"inline-block",verticalAlign:"middle",textAlign:"initial"}},{props:({ownerState:e})=>!e.maxWidth,style:{maxWidth:"calc(100% - 64px)"}},{props:{maxWidth:"xs"},style:{maxWidth:"px"===e.breakpoints.unit?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${d.A.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:"calc(100% - 64px)"}}}},...Object.keys(e.breakpoints.values).filter((e=>"xs"!==e)).map((t=>({props:{maxWidth:t},style:{maxWidth:`${e.breakpoints.values[t]}${e.breakpoints.unit}`,[`&.${d.A.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t]+64)]:{maxWidth:"calc(100% - 64px)"}}}}))),{props:({ownerState:e})=>e.fullWidth,style:{width:"calc(100% - 64px)"}},{props:({ownerState:e})=>e.fullScreen,style:{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,[`&.${d.A.paperScrollBody}`]:{margin:0,maxWidth:"100%"}}}]})))),S=n.forwardRef((function(e,t){const r=(0,g.b)({props:e,name:"MuiDialog"}),l=(0,m.A)(),f={enter:l.transitions.duration.enteringScreen,exit:l.transitions.duration.leavingScreen},{"aria-describedby":h,"aria-labelledby":v,BackdropComponent:S,BackdropProps:k,children:E,className:C,disableEscapeKeyDown:T=!1,fullScreen:R=!1,fullWidth:M=!1,maxWidth:O="sm",onBackdropClick:P,onClick:I,onClose:N,open:$,PaperComponent:_=u.A,PaperProps:L={},scroll:j="paper",TransitionComponent:z=c.A,transitionDuration:D=f,TransitionProps:F,...B}=r,W={...r,disableEscapeKeyDown:T,fullScreen:R,fullWidth:M,maxWidth:O,scroll:j},H=(e=>{const{classes:t,scroll:r,maxWidth:n,fullWidth:o,fullScreen:a}=e,l={root:["root"],container:["container",`scroll${(0,s.A)(r)}`],paper:["paper",`paperScroll${(0,s.A)(r)}`,`paperWidth${(0,s.A)(String(n))}`,o&&"paperFullWidth",a&&"paperFullScreen"]};return(0,i.A)(l,d.f,t)})(W),U=n.useRef(),V=(0,a.A)(v),q=n.useMemo((()=>({titleId:V})),[V]);return(0,y.jsx)(x,{className:(0,o.A)(H.root,C),closeAfterTransition:!0,components:{Backdrop:b},componentsProps:{backdrop:{transitionDuration:D,as:S,...k}},disableEscapeKeyDown:T,onClose:N,open:$,ref:t,onClick:e=>{I&&I(e),U.current&&(U.current=null,P&&P(e),N&&N(e,"backdropClick"))},ownerState:W,...B,children:(0,y.jsx)(z,{appear:!0,in:$,timeout:D,role:"presentation",...F,children:(0,y.jsx)(A,{className:(0,o.A)(H.container),onMouseDown:e=>{U.current=e.target===e.currentTarget},ownerState:W,children:(0,y.jsx)(w,{as:_,elevation:24,role:"dialog","aria-describedby":h,"aria-labelledby":V,...L,className:(0,o.A)(H.paper,L.className),ownerState:W,children:(0,y.jsx)(p.A.Provider,{value:q,children:E})})})})})}))},29666:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext({})},23113:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,f:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDialog",e)}const a=(0,n.A)("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"])},58507:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(4785),l=r(94911),c=r(69500);const u=(0,a.Ay)("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState:e})=>!e.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),d=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiDialogActions"}),{className:n,disableSpacing:a=!1,...d}=r,p={...r,disableSpacing:a},f=(e=>{const{classes:t,disableSpacing:r}=e,n={root:["root",!r&&"spacing"]};return(0,i.A)(n,l.C,t)})(p);return(0,c.jsx)(u,{className:(0,o.A)(f.root,n),ownerState:p,ref:t,...d})}))},94911:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,C:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDialogActions",e)}const a=(0,n.A)("MuiDialogActions",["root","spacing"])},29499:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(60129),l=r(4785),c=r(64271),u=r(99791),d=r(69500);const p=(0,a.Ay)("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.dividers&&t.dividers]}})((0,s.A)((({theme:e})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState:e})=>e.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>!e.dividers,style:{[`.${u.A.root} + &`]:{paddingTop:0}}}]})))),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiDialogContent"}),{className:n,dividers:a=!1,...s}=r,u={...r,dividers:a},f=(e=>{const{classes:t,dividers:r}=e,n={root:["root",r&&"dividers"]};return(0,i.A)(n,c.E,t)})(u);return(0,d.jsx)(p,{className:(0,o.A)(f.root,n),ownerState:u,ref:t,...s})}))},64271:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,E:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDialogContent",e)}const a=(0,n.A)("MuiDialogContent",["root","dividers"])},99123:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(55270),s=r(51148),l=r(4785),c=r(36715),u=r(48839),d=r(69500);const p=(0,s.Ay)(c.A,{shouldForwardProp:e=>(0,a.A)(e)||"classes"===e,name:"MuiDialogContentText",slot:"Root",overridesResolver:(e,t)=>t.root})({}),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiDialogContentText"}),{children:n,className:a,...s}=r,c=(e=>{const{classes:t}=e,r=(0,i.A)({root:["root"]},u.D,t);return{...t,...r}})(s);return(0,d.jsx)(p,{component:"p",variant:"body1",color:"textSecondary",ref:t,ownerState:s,className:(0,o.A)(c.root,a),...r,classes:c})}))},48839:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,D:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDialogContentText",e)}const a=(0,n.A)("MuiDialogContentText",["root"])},43163:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(36715),s=r(51148),l=r(4785),c=r(99791),u=r(29666),d=r(69500);const p=(0,s.Ay)(a.A,{name:"MuiDialogTitle",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:"16px 24px",flex:"0 0 auto"}),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiDialogTitle"}),{className:a,id:s,...f}=r,h=r,m=(e=>{const{classes:t}=e;return(0,i.A)({root:["root"]},c.t,t)})(h),{titleId:v=s}=n.useContext(u.A);return(0,d.jsx)(p,{component:"h2",className:(0,o.A)(m.root,a),ownerState:h,ref:t,variant:"h6",id:s??v,...f})}))},99791:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,t:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDialogTitle",e)}const a=(0,n.A)("MuiDialogTitle",["root"])},24387:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(51148),l=r(60129),c=r(4785),u=r(919),d=r(69500);const p=(0,s.Ay)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.absolute&&t.absolute,t[r.variant],r.light&&t.light,"vertical"===r.orientation&&t.vertical,r.flexItem&&t.flexItem,r.children&&t.withChildren,r.children&&"vertical"===r.orientation&&t.withChildrenVertical,"right"===r.textAlign&&"vertical"!==r.orientation&&t.textAlignRight,"left"===r.textAlign&&"vertical"!==r.orientation&&t.textAlignLeft]}})((0,l.A)((({theme:e})=>({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin",variants:[{props:{absolute:!0},style:{position:"absolute",bottom:0,left:0,width:"100%"}},{props:{light:!0},style:{borderColor:e.vars?`rgba(${e.vars.palette.dividerChannel} / 0.08)`:(0,a.X4)(e.palette.divider,.08)}},{props:{variant:"inset"},style:{marginLeft:72}},{props:{variant:"middle",orientation:"horizontal"},style:{marginLeft:e.spacing(2),marginRight:e.spacing(2)}},{props:{variant:"middle",orientation:"vertical"},style:{marginTop:e.spacing(1),marginBottom:e.spacing(1)}},{props:{orientation:"vertical"},style:{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}},{props:{flexItem:!0},style:{alignSelf:"stretch",height:"auto"}},{props:({ownerState:e})=>!!e.children,style:{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}}},{props:({ownerState:e})=>e.children&&"vertical"!==e.orientation,style:{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`,borderTopStyle:"inherit"}}},{props:({ownerState:e})=>"vertical"===e.orientation&&e.children,style:{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`,borderLeftStyle:"inherit"}}},{props:({ownerState:e})=>"right"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"90%"},"&::after":{width:"10%"}}},{props:({ownerState:e})=>"left"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"10%"},"&::after":{width:"90%"}}}]})))),f=(0,s.Ay)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.wrapper,"vertical"===r.orientation&&t.wrapperVertical]}})((0,l.A)((({theme:e})=>({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`,variants:[{props:{orientation:"vertical"},style:{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}}]})))),h=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiDivider"}),{absolute:n=!1,children:a,className:s,orientation:l="horizontal",component:h=(a||"vertical"===l?"div":"hr"),flexItem:m=!1,light:v=!1,role:g=("hr"!==h?"separator":void 0),textAlign:y="center",variant:b="fullWidth",...x}=r,A={...r,absolute:n,component:h,flexItem:m,light:v,orientation:l,role:g,textAlign:y,variant:b},w=(e=>{const{absolute:t,children:r,classes:n,flexItem:o,light:a,orientation:s,textAlign:l,variant:c}=e,d={root:["root",t&&"absolute",c,a&&"light","vertical"===s&&"vertical",o&&"flexItem",r&&"withChildren",r&&"vertical"===s&&"withChildrenVertical","right"===l&&"vertical"!==s&&"textAlignRight","left"===l&&"vertical"!==s&&"textAlignLeft"],wrapper:["wrapper","vertical"===s&&"wrapperVertical"]};return(0,i.A)(d,u.K,n)})(A);return(0,d.jsx)(p,{as:h,className:(0,o.A)(w.root,s),role:g,ref:t,ownerState:A,"aria-orientation":"separator"!==g||"hr"===h&&"vertical"!==l?void 0:l,...x,children:a?(0,d.jsx)(f,{className:w.wrapper,ownerState:A,children:a}):null})}));h&&(h.muiSkipListHighlight=!0);const m=h},919:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,K:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiDivider",e)}const a=(0,n.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"])},93321:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),o=r(16157),i=r(28325),a=r(48231),s=r(46302),l=r(51584),c=r(69500);const u={entering:{opacity:1},entered:{opacity:1}},d=n.forwardRef((function(e,t){const r=(0,a.A)(),d={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:p,appear:f=!0,children:h,easing:m,in:v,onEnter:g,onEntered:y,onEntering:b,onExit:x,onExited:A,onExiting:w,style:S,timeout:k=d,TransitionComponent:E=o.Ay,...C}=e,T=n.useRef(null),R=(0,l.A)(T,(0,i.A)(h),t),M=e=>t=>{if(e){const r=T.current;void 0===t?e(r):e(r,t)}},O=M(b),P=M(((e,t)=>{(0,s.q)(e);const n=(0,s.c)({style:S,timeout:k,easing:m},{mode:"enter"});e.style.webkitTransition=r.transitions.create("opacity",n),e.style.transition=r.transitions.create("opacity",n),g&&g(e,t)})),I=M(y),N=M(w),$=M((e=>{const t=(0,s.c)({style:S,timeout:k,easing:m},{mode:"exit"});e.style.webkitTransition=r.transitions.create("opacity",t),e.style.transition=r.transitions.create("opacity",t),x&&x(e)})),_=M(A);return(0,c.jsx)(E,{appear:f,in:v,nodeRef:T,onEnter:P,onEntered:I,onEntering:O,onExit:$,onExited:_,onExiting:N,addEndListener:e=>{p&&p(T.current,e)},timeout:k,...C,children:(e,t)=>n.cloneElement(h,{style:{opacity:0,visibility:"exited"!==e||v?void 0:"hidden",...u[e],...S,...h.props.style},ref:R,...t})})}))},29287:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(7552),o=r(78745),i=r(70799),a=r(98879),s=r(55270),l=r(51148),c=r(60129),u=r(58520),d=r(4785),p=r(25075),f=r(15622),h=r(69500);const m=(0,l.Ay)(a.Sh,{shouldForwardProp:e=>(0,s.A)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[...(0,a.WC)(e,t),!r.disableUnderline&&t.underline]}})((0,c.A)((({theme:e})=>{const t="light"===e.palette.mode,r=t?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",n=t?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",o=t?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",i=t?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return{position:"relative",backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n,borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),"&:hover":{backgroundColor:e.vars?e.vars.palette.FilledInput.hoverBg:o,"@media (hover: none)":{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n}},[`&.${p.A.focused}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n},[`&.${p.A.disabled}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.disabledBg:i},variants:[{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${p.A.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${p.A.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`:r}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${p.A.disabled}, .${p.A.error}):before`]:{borderBottom:`1px solid ${(e.vars||e).palette.text.primary}`},[`&.${p.A.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{disableUnderline:!1,color:t},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t]?.main}`}}}))),{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:12}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:12}},{props:({ownerState:e})=>e.multiline,style:{padding:"25px 12px 8px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}}]}}))),v=(0,l.Ay)(a.ck,{name:"MuiFilledInput",slot:"Input",overridesResolver:a.Oj})((0,c.A)((({theme:e})=>({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12,...!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},...e.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},variants:[{props:{size:"small"},style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}},{props:({ownerState:e})=>e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}},{props:({ownerState:e})=>e.multiline,style:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0}}]})))),g=n.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiFilledInput"}),{disableUnderline:n=!1,components:s={},componentsProps:l,fullWidth:c=!1,hiddenLabel:u,inputComponent:g="input",multiline:y=!1,slotProps:b,slots:x={},type:A="text",...w}=r,S={...r,disableUnderline:n,fullWidth:c,inputComponent:g,multiline:y,type:A},k=(e=>{const{classes:t,disableUnderline:r,startAdornment:n,endAdornment:o,size:a,hiddenLabel:s,multiline:l}=e,c={root:["root",!r&&"underline",n&&"adornedStart",o&&"adornedEnd","small"===a&&`size${(0,f.A)(a)}`,s&&"hiddenLabel",l&&"multiline"],input:["input"]},u=(0,i.A)(c,p.N,t);return{...t,...u}})(r),E={root:{ownerState:S},input:{ownerState:S}},C=b??l?(0,o.A)(E,b??l):E,T=x.root??s.Root??m,R=x.input??s.Input??v;return(0,h.jsx)(a.Ay,{slots:{root:T,input:R},componentsProps:C,fullWidth:c,inputComponent:g,multiline:y,ref:t,type:A,...w,classes:k})}));g&&(g.muiName="Input");const y=g},25075:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,N:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFilledInput",e)}const a={...r(3275).A,...(0,n.A)("MuiFilledInput",["root","underline","input","adornedStart","adornedEnd","sizeSmall","multiline","hiddenLabel"])}},48171:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(4785),l=r(53999),c=r(15622),u=r(3755),d=r(37860),p=r(92319),f=r(69500);const h=(0,a.Ay)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:({ownerState:e},t)=>({...t.root,...t[`margin${(0,c.A)(e.margin)}`],...e.fullWidth&&t.fullWidth})})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),m=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiFormControl"}),{children:a,className:m,color:v="primary",component:g="div",disabled:y=!1,error:b=!1,focused:x,fullWidth:A=!1,hiddenLabel:w=!1,margin:S="none",required:k=!1,size:E="medium",variant:C="outlined",...T}=r,R={...r,color:v,component:g,disabled:y,error:b,fullWidth:A,hiddenLabel:w,margin:S,required:k,size:E,variant:C},M=(e=>{const{classes:t,margin:r,fullWidth:n}=e,o={root:["root","none"!==r&&`margin${(0,c.A)(r)}`,n&&"fullWidth"]};return(0,i.A)(o,p.c,t)})(R),[O,P]=n.useState((()=>{let e=!1;return a&&n.Children.forEach(a,(t=>{if(!(0,u.A)(t,["Input","Select"]))return;const r=(0,u.A)(t,["Select"])?t.props.input:t;r&&(0,l.gr)(r.props)&&(e=!0)})),e})),[I,N]=n.useState((()=>{let e=!1;return a&&n.Children.forEach(a,(t=>{(0,u.A)(t,["Input","Select"])&&((0,l.lq)(t.props,!0)||(0,l.lq)(t.props.inputProps,!0))&&(e=!0)})),e})),[$,_]=n.useState(!1);y&&$&&_(!1);const L=void 0===x||y?$:x;let j;n.useRef(!1);const z=n.useMemo((()=>({adornedStart:O,setAdornedStart:P,color:v,disabled:y,error:b,filled:I,focused:L,fullWidth:A,hiddenLabel:w,size:E,onBlur:()=>{_(!1)},onEmpty:()=>{N(!1)},onFilled:()=>{N(!0)},onFocus:()=>{_(!0)},registerEffect:j,required:k,variant:C})),[O,v,y,b,I,L,A,w,j,k,E,C]);return(0,f.jsx)(d.A.Provider,{value:z,children:(0,f.jsx)(h,{as:g,ownerState:R,className:(0,o.A)(M.root,m),ref:t,...T,children:a})})}))},37860:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext(void 0)},92319:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,c:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFormControl",e)}const a=(0,n.A)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"])},32498:(e,t,r)=>{"use strict";function n({props:e,states:t,muiFormControl:r}){return t.reduce(((t,n)=>(t[n]=e[n],r&&void 0===e[n]&&(t[n]=r[n]),t)),{})}r.d(t,{A:()=>n})},33960:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(37860);function i(){return n.useContext(o.A)}},33371:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(7552),o=r(93878),i=r(70799),a=r(33960),s=r(51148),l=r(60129),c=r(4785),u=r(36715),d=r(15622),p=r(18095),f=r(32498),h=r(43045),m=r(69500);const v=(0,s.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${p.A.label}`]:t.label},t.root,t[`labelPlacement${(0,d.A)(r.labelPlacement)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${p.A.disabled}`]:{cursor:"default"},[`& .${p.A.label}`]:{[`&.${p.A.disabled}`]:{color:(e.vars||e).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:e})=>"start"===e||"top"===e||"bottom"===e,style:{marginLeft:16}}]})))),g=(0,s.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})((0,l.A)((({theme:e})=>({[`&.${p.A.error}`]:{color:(e.vars||e).palette.error.main}})))),y=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiFormControlLabel"}),{checked:s,className:l,componentsProps:y={},control:b,disabled:x,disableTypography:A,inputRef:w,label:S,labelPlacement:k="end",name:E,onChange:C,required:T,slots:R={},slotProps:M={},value:O,...P}=r,I=(0,a.A)(),N=x??b.props.disabled??I?.disabled,$=T??b.props.required,_={disabled:N,required:$};["checked","name","onChange","value","inputRef"].forEach((e=>{void 0===b.props[e]&&void 0!==r[e]&&(_[e]=r[e])}));const L=(0,f.A)({props:r,muiFormControl:I,states:["error"]}),j={...r,disabled:N,labelPlacement:k,required:$,error:L.error},z=(e=>{const{classes:t,disabled:r,labelPlacement:n,error:o,required:a}=e,s={root:["root",r&&"disabled",`labelPlacement${(0,d.A)(n)}`,o&&"error",a&&"required"],label:["label",r&&"disabled"],asterisk:["asterisk",o&&"error"]};return(0,i.A)(s,p.u,t)})(j),D={slots:R,slotProps:{...y,...M}},[F,B]=(0,h.A)("typography",{elementType:u.A,externalForwardedProps:D,ownerState:j});let W=S;return null==W||W.type===u.A||A||(W=(0,m.jsx)(F,{component:"span",...B,className:(0,o.A)(z.label,B?.className),children:W})),(0,m.jsxs)(v,{className:(0,o.A)(z.root,l),ownerState:j,ref:t,...P,children:[n.cloneElement(b,_),$?(0,m.jsxs)("div",{children:[W,(0,m.jsxs)(g,{ownerState:j,"aria-hidden":!0,className:z.asterisk,children:[" ","*"]})]}):W]})}))},18095:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,u:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFormControlLabel",e)}const a=(0,n.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"])},83867:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(4785),l=r(46479),c=r(33960),u=r(32498),d=r(69500);const p=(0,a.Ay)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.row&&t.row]}})({display:"flex",flexDirection:"column",flexWrap:"wrap",variants:[{props:{row:!0},style:{flexDirection:"row"}}]}),f=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiFormGroup"}),{className:n,row:a=!1,...f}=r,h=(0,c.A)(),m=(0,u.A)({props:r,muiFormControl:h,states:["error"]}),v={...r,row:a,error:m.error},g=(e=>{const{classes:t,row:r,error:n}=e,o={root:["root",r&&"row",n&&"error"]};return(0,i.A)(o,l.c,t)})(v);return(0,d.jsx)(p,{className:(0,o.A)(g.root,n),ownerState:v,ref:t,...f})}))},46479:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,c:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFormGroup",e)}const a=(0,n.A)("MuiFormGroup",["root","row","error"])},25467:(e,t,r)=>{"use strict";r.d(t,{A:()=>v});var n,o=r(7552),i=r(93878),a=r(70799),s=r(32498),l=r(33960),c=r(51148),u=r(60129),d=r(4785),p=r(15622),f=r(18735),h=r(69500);const m=(0,c.Ay)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.size&&t[`size${(0,p.A)(r.size)}`],r.contained&&t.contained,r.filled&&t.filled]}})((0,u.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${f.A.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${f.A.error}`]:{color:(e.vars||e).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:e})=>e.contained,style:{marginLeft:14,marginRight:14}}]})))),v=o.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiFormHelperText"}),{children:o,className:c,component:u="p",disabled:v,error:g,filled:y,focused:b,margin:x,required:A,variant:w,...S}=r,k=(0,l.A)(),E=(0,s.A)({props:r,muiFormControl:k,states:["variant","size","disabled","error","filled","focused","required"]}),C={...r,component:u,contained:"filled"===E.variant||"outlined"===E.variant,variant:E.variant,size:E.size,disabled:E.disabled,error:E.error,filled:E.filled,focused:E.focused,required:E.required};delete C.ownerState;const T=(e=>{const{classes:t,contained:r,size:n,disabled:o,error:i,filled:s,focused:l,required:c}=e,u={root:["root",o&&"disabled",i&&"error",n&&`size${(0,p.A)(n)}`,r&&"contained",l&&"focused",s&&"filled",c&&"required"]};return(0,a.A)(u,f.h,t)})(C);return(0,h.jsx)(m,{as:u,className:(0,i.A)(T.root,c),ref:t,...S,ownerState:C,children:" "===o?n||(n=(0,h.jsx)("span",{className:"notranslate",children:"​"})):o})}))},18735:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,h:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFormHelperText",e)}const a=(0,n.A)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"])},22679:(e,t,r)=>{"use strict";r.d(t,{A:()=>g,d:()=>m});var n=r(7552),o=r(93878),i=r(70799),a=r(32498),s=r(33960),l=r(15622),c=r(51148),u=r(60129),d=r(58520),p=r(4785),f=r(82275),h=r(69500);const m=(0,c.Ay)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:({ownerState:e},t)=>({...t.root,..."secondary"===e.color&&t.colorSecondary,...e.filled&&t.filled})})((0,u.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{[`&.${f.A.focused}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{},style:{[`&.${f.A.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${f.A.error}`]:{color:(e.vars||e).palette.error.main}}}]})))),v=(0,c.Ay)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})((0,u.A)((({theme:e})=>({[`&.${f.A.error}`]:{color:(e.vars||e).palette.error.main}})))),g=n.forwardRef((function(e,t){const r=(0,p.b)({props:e,name:"MuiFormLabel"}),{children:n,className:c,color:u,component:d="label",disabled:g,error:y,filled:b,focused:x,required:A,...w}=r,S=(0,s.A)(),k=(0,a.A)({props:r,muiFormControl:S,states:["color","required","focused","disabled","error","filled"]}),E={...r,color:k.color||"primary",component:d,disabled:k.disabled,error:k.error,filled:k.filled,focused:k.focused,required:k.required},C=(e=>{const{classes:t,color:r,focused:n,disabled:o,error:a,filled:s,required:c}=e,u={root:["root",`color${(0,l.A)(r)}`,o&&"disabled",a&&"error",s&&"filled",n&&"focused",c&&"required"],asterisk:["asterisk",a&&"error"]};return(0,i.A)(u,f.Z,t)})(E);return(0,h.jsxs)(m,{as:d,ownerState:E,className:(0,o.A)(C.root,c),ref:t,...w,children:[n,k.required&&(0,h.jsxs)(v,{ownerState:E,"aria-hidden":!0,className:C.asterisk,children:[" ","*"]})]})}))},82275:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,Z:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiFormLabel",e)}const a=(0,n.A)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"])},67314:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>g});var n=r(7552),o=r(93878),i=r(43059),a=r(8455),s=r(70799),l=r(51148),c=r(31049),u=r(48231);const d=n.createContext();var p=r(16745),f=r(69500);function h({breakpoints:e,values:t}){let r="";Object.keys(t).forEach((e=>{""===r&&0!==t[e]&&(r=e)}));const n=Object.keys(e).sort(((t,r)=>e[t]-e[r]));return n.slice(0,n.indexOf(r))}const m=(0,l.Ay)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{container:n,direction:o,item:i,spacing:a,wrap:s,zeroMinWidth:l,breakpoints:c}=r;let u=[];n&&(u=function(e,t,r={}){if(!e||e<=0)return[];if("string"==typeof e&&!Number.isNaN(Number(e))||"number"==typeof e)return[r[`spacing-xs-${String(e)}`]];const n=[];return t.forEach((t=>{const o=e[t];Number(o)>0&&n.push(r[`spacing-${t}-${String(o)}`])})),n}(a,c,t));const d=[];return c.forEach((e=>{const n=r[e];n&&d.push(t[`grid-${e}-${String(n)}`])})),[t.root,n&&t.container,i&&t.item,l&&t.zeroMinWidth,...u,"row"!==o&&t[`direction-xs-${String(o)}`],"wrap"!==s&&t[`wrap-xs-${String(s)}`],...d]}})((({ownerState:e})=>({boxSizing:"border-box",...e.container&&{display:"flex",flexWrap:"wrap",width:"100%"},...e.item&&{margin:0},...e.zeroMinWidth&&{minWidth:0},..."wrap"!==e.wrap&&{flexWrap:e.wrap}})),(function({theme:e,ownerState:t}){const r=(0,i.kW)({values:t.direction,breakpoints:e.breakpoints.values});return(0,i.NI)({theme:e},r,(e=>{const t={flexDirection:e};return e.startsWith("column")&&(t[`& > .${p.A.item}`]={maxWidth:"none"}),t}))}),(function({theme:e,ownerState:t}){const{container:r,rowSpacing:n}=t;let o={};if(r&&0!==n){const t=(0,i.kW)({values:n,breakpoints:e.breakpoints.values});let r;"object"==typeof t&&(r=h({breakpoints:e.breakpoints.values,values:t})),o=(0,i.NI)({theme:e},t,((t,n)=>{const o=e.spacing(t);return"0px"!==o?{marginTop:e.spacing(-t),[`& > .${p.A.item}`]:{paddingTop:o}}:r?.includes(n)?{}:{marginTop:0,[`& > .${p.A.item}`]:{paddingTop:0}}}))}return o}),(function({theme:e,ownerState:t}){const{container:r,columnSpacing:n}=t;let o={};if(r&&0!==n){const t=(0,i.kW)({values:n,breakpoints:e.breakpoints.values});let r;"object"==typeof t&&(r=h({breakpoints:e.breakpoints.values,values:t})),o=(0,i.NI)({theme:e},t,((t,n)=>{const o=e.spacing(t);return"0px"!==o?{width:`calc(100% + ${o})`,marginLeft:e.spacing(-t),[`& > .${p.A.item}`]:{paddingLeft:o}}:r?.includes(n)?{}:{width:"100%",marginLeft:0,[`& > .${p.A.item}`]:{paddingLeft:0}}}))}return o}),(function({theme:e,ownerState:t}){let r;return e.breakpoints.keys.reduce(((n,o)=>{let a={};if(t[o]&&(r=t[o]),!r)return n;if(!0===r)a={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if("auto"===r)a={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const s=(0,i.kW)({values:t.columns,breakpoints:e.breakpoints.values}),l="object"==typeof s?s[o]:s;if(null==l)return n;const c=Math.round(r/l*1e8)/1e6+"%";let u={};if(t.container&&t.item&&0!==t.columnSpacing){const r=e.spacing(t.columnSpacing);if("0px"!==r){const e=`calc(${c} + ${r})`;u={flexBasis:e,maxWidth:e}}}a={flexBasis:c,flexGrow:0,maxWidth:c,...u}}return 0===e.breakpoints.values[o]?Object.assign(n,a):n[e.breakpoints.up(o)]=a,n}),{})})),v=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiGrid"}),{breakpoints:i}=(0,u.A)(),l=(0,a.A)(r),{className:h,columns:v,columnSpacing:g,component:y="div",container:b=!1,direction:x="row",item:A=!1,rowSpacing:w,spacing:S=0,wrap:k="wrap",zeroMinWidth:E=!1,...C}=l,T=w||S,R=g||S,M=n.useContext(d),O=b?v||12:M,P={},I={...C};i.keys.forEach((e=>{null!=C[e]&&(P[e]=C[e],delete I[e])}));const N={...l,columns:O,container:b,direction:x,item:A,rowSpacing:T,columnSpacing:R,wrap:k,zeroMinWidth:E,spacing:S,...P,breakpoints:i.keys},$=(e=>{const{classes:t,container:r,direction:n,item:o,spacing:i,wrap:a,zeroMinWidth:l,breakpoints:c}=e;let u=[];r&&(u=function(e,t){if(!e||e<=0)return[];if("string"==typeof e&&!Number.isNaN(Number(e))||"number"==typeof e)return[`spacing-xs-${String(e)}`];const r=[];return t.forEach((t=>{const n=e[t];if(Number(n)>0){const e=`spacing-${t}-${String(n)}`;r.push(e)}})),r}(i,c));const d=[];c.forEach((t=>{const r=e[t];r&&d.push(`grid-${t}-${String(r)}`)}));const f={root:["root",r&&"container",o&&"item",l&&"zeroMinWidth",...u,"row"!==n&&`direction-xs-${String(n)}`,"wrap"!==a&&`wrap-xs-${String(a)}`,...d]};return(0,s.A)(f,p.n,t)})(N);return(0,f.jsx)(d.Provider,{value:O,children:(0,f.jsx)(m,{ownerState:N,className:(0,o.A)($.root,h),as:y,ref:t,...I})})})),g=v},16745:(e,t,r)=>{"use strict";r.d(t,{A:()=>s,n:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiGrid",e)}const a=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],s=(0,n.A)("MuiGrid",["root","container","item","zeroMinWidth",...[0,1,2,3,4,5,6,7,8,9,10].map((e=>`spacing-xs-${e}`)),...["column-reverse","column","row-reverse","row"].map((e=>`direction-xs-${e}`)),...["nowrap","wrap-reverse","wrap"].map((e=>`wrap-xs-${e}`)),...a.map((e=>`grid-xs-${e}`)),...a.map((e=>`grid-sm-${e}`)),...a.map((e=>`grid-md-${e}`)),...a.map((e=>`grid-lg-${e}`)),...a.map((e=>`grid-xl-${e}`))])},4407:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),o=r(26218),i=r(28325),a=r(16157),s=r(48231),l=r(46302),c=r(51584),u=r(69500);function d(e){return`scale(${e}, ${e**2})`}const p={entering:{opacity:1,transform:d(1)},entered:{opacity:1,transform:"none"}},f="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),h=n.forwardRef((function(e,t){const{addEndListener:r,appear:h=!0,children:m,easing:v,in:g,onEnter:y,onEntered:b,onEntering:x,onExit:A,onExited:w,onExiting:S,style:k,timeout:E="auto",TransitionComponent:C=a.Ay,...T}=e,R=(0,o.A)(),M=n.useRef(),O=(0,s.A)(),P=n.useRef(null),I=(0,c.A)(P,(0,i.A)(m),t),N=e=>t=>{if(e){const r=P.current;void 0===t?e(r):e(r,t)}},$=N(x),_=N(((e,t)=>{(0,l.q)(e);const{duration:r,delay:n,easing:o}=(0,l.c)({style:k,timeout:E,easing:v},{mode:"enter"});let i;"auto"===E?(i=O.transitions.getAutoHeightDuration(e.clientHeight),M.current=i):i=r,e.style.transition=[O.transitions.create("opacity",{duration:i,delay:n}),O.transitions.create("transform",{duration:f?i:.666*i,delay:n,easing:o})].join(","),y&&y(e,t)})),L=N(b),j=N(S),z=N((e=>{const{duration:t,delay:r,easing:n}=(0,l.c)({style:k,timeout:E,easing:v},{mode:"exit"});let o;"auto"===E?(o=O.transitions.getAutoHeightDuration(e.clientHeight),M.current=o):o=t,e.style.transition=[O.transitions.create("opacity",{duration:o,delay:r}),O.transitions.create("transform",{duration:f?o:.666*o,delay:f?r:r||.333*o,easing:n})].join(","),e.style.opacity=0,e.style.transform=d(.75),A&&A(e)})),D=N(w);return(0,u.jsx)(C,{appear:h,in:g,nodeRef:P,onEnter:_,onEntered:L,onEntering:$,onExit:z,onExited:D,onExiting:j,addEndListener:e=>{"auto"===E&&R.start(M.current||0,e),r&&r(P.current,e)},timeout:"auto"===E?null:E,...T,children:(e,t)=>n.cloneElement(m,{style:{opacity:0,transform:d(.75),visibility:"exited"!==e||g?void 0:"hidden",...p[e],...k,...m.props.style},ref:I,...t})})}));h&&(h.muiSupportAuto=!0);const m=h},61723:(e,t,r)=>{"use strict";r.d(t,{A:()=>v});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(51148),l=r(60129),c=r(58520),u=r(4785),d=r(48054),p=r(15622),f=r(72559),h=r(69500);const m=(0,s.Ay)(d.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,p.A)(r.color)}`],r.edge&&t[`edge${(0,p.A)(r.edge)}`],t[`size${(0,p.A)(r.size)}`]]}})((0,l.A)((({theme:e})=>({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),variants:[{props:{disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,a.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:{edge:"start"},style:{marginLeft:-12}},{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:{edge:"end"},style:{marginRight:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}}]}))),(0,l.A)((({theme:e})=>({variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(e.palette).filter((0,c.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))),...Object.entries(e.palette).filter((0,c.A)()).map((([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${(e.vars||e).palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,a.X4)((e.vars||e).palette[t].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}}}))),{props:{size:"small"},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${f.A.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})))),v=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiIconButton"}),{edge:n=!1,children:a,className:s,color:l="default",disabled:c=!1,disableFocusRipple:d=!1,disableRipple:v=!1,size:g="medium",...y}=r,b={...r,edge:n,color:l,disabled:c,disableFocusRipple:d,disableRipple:v,size:g},x=(e=>{const{classes:t,disabled:r,color:n,edge:o,size:a}=e,s={root:["root",r&&"disabled","default"!==n&&`color${(0,p.A)(n)}`,o&&`edge${(0,p.A)(o)}`,`size${(0,p.A)(a)}`]};return(0,i.A)(s,f.G,t)})(b);return(0,h.jsx)(m,{className:(0,o.A)(x.root,s),centerRipple:!0,focusRipple:!d,disabled:c,disableRipple:v,ref:t,...y,ownerState:b,children:a})}))},72559:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,G:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiIconButton",e)}const a=(0,n.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"])},60947:(e,t,r)=>{"use strict";r.d(t,{A:()=>g});var n=r(7552),o=r(70799),i=r(78745),a=r(98879),s=r(55270),l=r(51148),c=r(60129),u=r(58520),d=r(4785),p=r(7495),f=r(69500);const h=(0,l.Ay)(a.Sh,{shouldForwardProp:e=>(0,s.A)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[...(0,a.WC)(e,t),!r.disableUnderline&&t.underline]}})((0,c.A)((({theme:e})=>{let t="light"===e.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return e.vars&&(t=`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`),{position:"relative",variants:[{props:({ownerState:e})=>e.formControl,style:{"label + &":{marginTop:16}}},{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${p.A.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${p.A.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${t}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${p.A.disabled}, .${p.A.error}):before`]:{borderBottom:`2px solid ${(e.vars||e).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${t}`}},[`&.${p.A.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t,disableUnderline:!1},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t].main}`}}})))]}}))),m=(0,l.Ay)(a.ck,{name:"MuiInput",slot:"Input",overridesResolver:a.Oj})({}),v=n.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiInput"}),{disableUnderline:n=!1,components:s={},componentsProps:l,fullWidth:c=!1,inputComponent:u="input",multiline:v=!1,slotProps:g,slots:y={},type:b="text",...x}=r,A=(e=>{const{classes:t,disableUnderline:r}=e,n={root:["root",!r&&"underline"],input:["input"]},i=(0,o.A)(n,p.B,t);return{...t,...i}})(r),w={root:{ownerState:{disableUnderline:n}}},S=g??l?(0,i.A)(g??l,w):w,k=y.root??s.Root??h,E=y.input??s.Input??m;return(0,f.jsx)(a.Ay,{slots:{root:k,input:E},slotProps:S,fullWidth:c,inputComponent:u,multiline:v,ref:t,type:b,...x,classes:A})}));v&&(v.muiName="Input");const g=v},7495:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,B:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiInput",e)}const a={...r(3275).A,...(0,n.A)("MuiInput",["root","underline","input"])}},93117:(e,t,r)=>{"use strict";r.d(t,{A:()=>g});var n,o=r(7552),i=r(93878),a=r(70799),s=r(15622),l=r(36715),c=r(37860),u=r(33960),d=r(51148),p=r(60129),f=r(4785),h=r(85845),m=r(69500);const v=(0,d.Ay)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`position${(0,s.A)(r.position)}`],!0===r.disablePointerEvents&&t.disablePointerEvents,t[r.variant]]}})((0,p.A)((({theme:e})=>({display:"flex",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(e.vars||e).palette.action.active,variants:[{props:{variant:"filled"},style:{[`&.${h.A.positionStart}&:not(.${h.A.hiddenLabel})`]:{marginTop:16}}},{props:{position:"start"},style:{marginRight:8}},{props:{position:"end"},style:{marginLeft:8}},{props:{disablePointerEvents:!0},style:{pointerEvents:"none"}}]})))),g=o.forwardRef((function(e,t){const r=(0,f.b)({props:e,name:"MuiInputAdornment"}),{children:d,className:p,component:g="div",disablePointerEvents:y=!1,disableTypography:b=!1,position:x,variant:A,...w}=r,S=(0,u.A)()||{};let k=A;A&&S.variant,S&&!k&&(k=S.variant);const E={...r,hiddenLabel:S.hiddenLabel,size:S.size,disablePointerEvents:y,position:x,variant:k},C=(e=>{const{classes:t,disablePointerEvents:r,hiddenLabel:n,position:o,size:i,variant:l}=e,c={root:["root",r&&"disablePointerEvents",o&&`position${(0,s.A)(o)}`,l,n&&"hiddenLabel",i&&`size${(0,s.A)(i)}`]};return(0,a.A)(c,h.P,t)})(E);return(0,m.jsx)(c.A.Provider,{value:null,children:(0,m.jsx)(v,{as:g,ownerState:E,className:(0,i.A)(C.root,p),ref:t,...w,children:"string"!=typeof d||b?(0,m.jsxs)(o.Fragment,{children:["start"===x?n||(n=(0,m.jsx)("span",{className:"notranslate",children:"​"})):null,d]}):(0,m.jsx)(l.A,{color:"textSecondary",children:d})})})}))},85845:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,P:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiInputAdornment",e)}const a=(0,n.A)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"])},98879:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>R,Oj:()=>k,Sh:()=>E,WC:()=>S,ck:()=>C});var n,o=r(51569),i=r(7552),a=r(93878),s=r(70799),l=r(26549),c=r(23879),u=r(32498),d=r(37860),p=r(33960),f=r(51148),h=r(69743),m=r(60129),v=r(4785),g=r(15622),y=r(51584),b=r(82910),x=r(53999),A=r(3275),w=r(69500);const S=(e,t)=>{const{ownerState:r}=e;return[t.root,r.formControl&&t.formControl,r.startAdornment&&t.adornedStart,r.endAdornment&&t.adornedEnd,r.error&&t.error,"small"===r.size&&t.sizeSmall,r.multiline&&t.multiline,r.color&&t[`color${(0,g.A)(r.color)}`],r.fullWidth&&t.fullWidth,r.hiddenLabel&&t.hiddenLabel]},k=(e,t)=>{const{ownerState:r}=e;return[t.input,"small"===r.size&&t.inputSizeSmall,r.multiline&&t.inputMultiline,"search"===r.type&&t.inputTypeSearch,r.startAdornment&&t.inputAdornedStart,r.endAdornment&&t.inputAdornedEnd,r.hiddenLabel&&t.inputHiddenLabel]},E=(0,f.Ay)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:S})((0,m.A)((({theme:e})=>({...e.typography.body1,color:(e.vars||e).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${A.A.disabled}`]:{color:(e.vars||e).palette.text.disabled,cursor:"default"},variants:[{props:({ownerState:e})=>e.multiline,style:{padding:"4px 0 5px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:1}},{props:({ownerState:e})=>e.fullWidth,style:{width:"100%"}}]})))),C=(0,f.Ay)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:k})((0,m.A)((({theme:e})=>{const t="light"===e.palette.mode,r={color:"currentColor",...e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5},transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})},n={opacity:"0 !important"},o=e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5};return{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%","&::-webkit-input-placeholder":r,"&::-moz-placeholder":r,"&::-ms-input-placeholder":r,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${A.A.formControl} &`]:{"&::-webkit-input-placeholder":n,"&::-moz-placeholder":n,"&::-ms-input-placeholder":n,"&:focus::-webkit-input-placeholder":o,"&:focus::-moz-placeholder":o,"&:focus::-ms-input-placeholder":o},[`&.${A.A.disabled}`]:{opacity:1,WebkitTextFillColor:(e.vars||e).palette.text.disabled},variants:[{props:({ownerState:e})=>!e.disableInjectingGlobalStyles,style:{animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}}},{props:{size:"small"},style:{paddingTop:1}},{props:({ownerState:e})=>e.multiline,style:{height:"auto",resize:"none",padding:0,paddingTop:0}},{props:{type:"search"},style:{MozAppearance:"textfield"}}]}}))),T=(0,h.Dp)({"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}),R=i.forwardRef((function(e,t){const r=(0,v.b)({props:e,name:"MuiInputBase"}),{"aria-describedby":f,autoComplete:h,autoFocus:m,className:S,color:k,components:R={},componentsProps:M={},defaultValue:O,disabled:P,disableInjectingGlobalStyles:I,endAdornment:N,error:$,fullWidth:_=!1,id:L,inputComponent:j="input",inputProps:z={},inputRef:D,margin:F,maxRows:B,minRows:W,multiline:H=!1,name:U,onBlur:V,onChange:q,onClick:X,onFocus:Y,onKeyDown:G,onKeyUp:K,placeholder:J,readOnly:Z,renderSuffix:Q,rows:ee,size:te,slotProps:re={},slots:ne={},startAdornment:oe,type:ie="text",value:ae,...se}=r,le=null!=z.value?z.value:ae,{current:ce}=i.useRef(null!=le),ue=i.useRef(),de=i.useCallback((e=>{}),[]),pe=(0,y.A)(ue,D,z.ref,de),[fe,he]=i.useState(!1),me=(0,p.A)(),ve=(0,u.A)({props:r,muiFormControl:me,states:["color","disabled","error","hiddenLabel","size","required","filled"]});ve.focused=me?me.focused:fe,i.useEffect((()=>{!me&&P&&fe&&(he(!1),V&&V())}),[me,P,fe,V]);const ge=me&&me.onFilled,ye=me&&me.onEmpty,be=i.useCallback((e=>{(0,x.lq)(e)?ge&&ge():ye&&ye()}),[ge,ye]);(0,b.A)((()=>{ce&&be({value:le})}),[le,be,ce]),i.useEffect((()=>{be(ue.current)}),[]);let xe=j,Ae=z;H&&"input"===xe&&(Ae=ee?{type:void 0,minRows:ee,maxRows:ee,...Ae}:{type:void 0,maxRows:B,minRows:W,...Ae},xe=l.A),i.useEffect((()=>{me&&me.setAdornedStart(Boolean(oe))}),[me,oe]);const we={...r,color:ve.color||"primary",disabled:ve.disabled,endAdornment:N,error:ve.error,focused:ve.focused,formControl:me,fullWidth:_,hiddenLabel:ve.hiddenLabel,multiline:H,size:ve.size,startAdornment:oe,type:ie},Se=(e=>{const{classes:t,color:r,disabled:n,error:o,endAdornment:i,focused:a,formControl:l,fullWidth:c,hiddenLabel:u,multiline:d,readOnly:p,size:f,startAdornment:h,type:m}=e,v={root:["root",`color${(0,g.A)(r)}`,n&&"disabled",o&&"error",c&&"fullWidth",a&&"focused",l&&"formControl",f&&"medium"!==f&&`size${(0,g.A)(f)}`,d&&"multiline",h&&"adornedStart",i&&"adornedEnd",u&&"hiddenLabel",p&&"readOnly"],input:["input",n&&"disabled","search"===m&&"inputTypeSearch",d&&"inputMultiline","small"===f&&"inputSizeSmall",u&&"inputHiddenLabel",h&&"inputAdornedStart",i&&"inputAdornedEnd",p&&"readOnly"]};return(0,s.A)(v,A.g,t)})(we),ke=ne.root||R.Root||E,Ee=re.root||M.root||{},Ce=ne.input||R.Input||C;return Ae={...Ae,...re.input??M.input},(0,w.jsxs)(i.Fragment,{children:[!I&&"function"==typeof T&&(n||(n=(0,w.jsx)(T,{}))),(0,w.jsxs)(ke,{...Ee,ref:t,onClick:e=>{ue.current&&e.currentTarget===e.target&&ue.current.focus(),X&&X(e)},...se,...!(0,c.A)(ke)&&{ownerState:{...we,...Ee.ownerState}},className:(0,a.A)(Se.root,Ee.className,S,Z&&"MuiInputBase-readOnly"),children:[oe,(0,w.jsx)(d.A.Provider,{value:null,children:(0,w.jsx)(Ce,{"aria-invalid":ve.error,"aria-describedby":f,autoComplete:h,autoFocus:m,defaultValue:O,disabled:ve.disabled,id:L,onAnimationStart:e=>{be("mui-auto-fill-cancel"===e.animationName?ue.current:{value:"x"})},name:U,placeholder:J,readOnly:Z,required:ve.required,rows:ee,value:le,onKeyDown:G,onKeyUp:K,type:ie,...Ae,...!(0,c.A)(Ce)&&{as:xe,ownerState:{...we,...Ae.ownerState}},ref:pe,className:(0,a.A)(Se.input,Ae.className,Z&&"MuiInputBase-readOnly"),onBlur:e=>{V&&V(e),z.onBlur&&z.onBlur(e),me&&me.onBlur?me.onBlur(e):he(!1)},onChange:(e,...t)=>{if(!ce){const t=e.target||ue.current;if(null==t)throw new Error((0,o.A)(1));be({value:t.value})}z.onChange&&z.onChange(e,...t),q&&q(e,...t)},onFocus:e=>{Y&&Y(e),z.onFocus&&z.onFocus(e),me&&me.onFocus?me.onFocus(e):he(!0)}})}),N,Q?Q({...ve,startAdornment:oe}):null]})]})}))},3275:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,g:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiInputBase",e)}const a=(0,n.A)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"])},53999:(e,t,r)=>{"use strict";function n(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function o(e,t=!1){return e&&(n(e.value)&&""!==e.value||t&&n(e.defaultValue)&&""!==e.defaultValue)}function i(e){return e.startAdornment}r.d(t,{gr:()=>i,lq:()=>o})},17125:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(7552),o=r(70799),i=r(93878),a=r(32498),s=r(33960),l=r(22679),c=r(82275),u=r(15622),d=r(55270),p=r(51148),f=r(60129),h=r(4785),m=r(15485),v=r(69500);const g=(0,p.Ay)(l.A,{shouldForwardProp:e=>(0,d.A)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${c.A.asterisk}`]:t.asterisk},t.root,r.formControl&&t.formControl,"small"===r.size&&t.sizeSmall,r.shrink&&t.shrink,!r.disableAnimation&&t.animated,r.focused&&t.focused,t[r.variant]]}})((0,f.A)((({theme:e})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:e})=>e.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:e})=>e.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:e})=>!e.disableAnimation,style:{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:e,ownerState:t})=>"filled"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:e,ownerState:t,size:r})=>"filled"===e&&t.shrink&&"small"===r,style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:e,ownerState:t})=>"outlined"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]})))),y=n.forwardRef((function(e,t){const r=(0,h.b)({name:"MuiInputLabel",props:e}),{disableAnimation:n=!1,margin:l,shrink:c,variant:d,className:p,...f}=r,y=(0,s.A)();let b=c;void 0===b&&y&&(b=y.filled||y.focused||y.adornedStart);const x=(0,a.A)({props:r,muiFormControl:y,states:["size","variant","required","focused"]}),A={...r,disableAnimation:n,formControl:y,shrink:b,size:x.size,variant:x.variant,required:x.required,focused:x.focused},w=(e=>{const{classes:t,formControl:r,size:n,shrink:i,disableAnimation:a,variant:s,required:l}=e,c={root:["root",r&&"formControl",!a&&"animated",i&&"shrink",n&&"normal"!==n&&`size${(0,u.A)(n)}`,s],asterisk:[l&&"asterisk"]},d=(0,o.A)(c,m.R,t);return{...t,...d}})(A);return(0,v.jsx)(g,{"data-shrink":b,ref:t,className:(0,i.A)(w.root,p),...f,ownerState:A,classes:w})}))},15485:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,R:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiInputLabel",e)}const a=(0,n.A)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"])},58181:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(4785),l=r(57406),c=r(5085),u=r(69500);const d=(0,a.Ay)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disablePadding&&t.padding,r.dense&&t.dense,r.subheader&&t.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>e.subheader,style:{paddingTop:0}}]}),p=n.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiList"}),{children:a,className:p,component:f="ul",dense:h=!1,disablePadding:m=!1,subheader:v,...g}=r,y=n.useMemo((()=>({dense:h})),[h]),b={...r,component:f,dense:h,disablePadding:m},x=(e=>{const{classes:t,disablePadding:r,dense:n,subheader:o}=e,a={root:["root",!r&&"padding",n&&"dense",o&&"subheader"]};return(0,i.A)(a,c.H,t)})(b);return(0,u.jsx)(l.A.Provider,{value:y,children:(0,u.jsxs)(d,{as:f,className:(0,o.A)(x.root,p),ref:t,ownerState:b,...g,children:[v,a]})})}))},57406:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext({})},5085:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,H:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiList",e)}const a=(0,n.A)("MuiList",["root","padding","dense","subheader"])},66765:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(60129),l=r(4785),c=r(16421),u=r(57406),d=r(69500);const p=(0,a.Ay)("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"flex-start"===r.alignItems&&t.alignItemsFlexStart]}})((0,s.A)((({theme:e})=>({minWidth:56,color:(e.vars||e).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]})))),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiListItemIcon"}),{className:a,...s}=r,f=n.useContext(u.A),h={...r,alignItems:f.alignItems},m=(e=>{const{alignItems:t,classes:r}=e,n={root:["root","flex-start"===t&&"alignItemsFlexStart"]};return(0,i.A)(n,c.f,r)})(h);return(0,d.jsx)(p,{className:(0,o.A)(m.root,a),ownerState:h,ref:t,...s})}))},16421:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,f:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiListItemIcon",e)}const a=(0,n.A)("MuiListItemIcon",["root","alignItemsFlexStart"])},81453:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(7552),o=r(93878),i=r(70799),a=r(90175),s=r(36715),l=r(57406),c=r(51148),u=r(4785),d=r(69285),p=r(69500);const f=(0,c.Ay)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${d.A.primary}`]:t.primary},{[`& .${d.A.secondary}`]:t.secondary},t.root,r.inset&&t.inset,r.primary&&r.secondary&&t.multiline,r.dense&&t.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${a.A.root}:where(& .${d.A.primary})`]:{display:"block"},[`.${a.A.root}:where(& .${d.A.secondary})`]:{display:"block"},variants:[{props:({ownerState:e})=>e.primary&&e.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:e})=>e.inset,style:{paddingLeft:56}}]}),h=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiListItemText"}),{children:a,className:c,disableTypography:h=!1,inset:m=!1,primary:v,primaryTypographyProps:g,secondary:y,secondaryTypographyProps:b,...x}=r,{dense:A}=n.useContext(l.A);let w=null!=v?v:a,S=y;const k={...r,disableTypography:h,inset:m,primary:!!w,secondary:!!S,dense:A},E=(e=>{const{classes:t,inset:r,primary:n,secondary:o,dense:a}=e,s={root:["root",r&&"inset",a&&"dense",n&&o&&"multiline"],primary:["primary"],secondary:["secondary"]};return(0,i.A)(s,d.b,t)})(k);return null==w||w.type===s.A||h||(w=(0,p.jsx)(s.A,{variant:A?"body2":"body1",className:E.primary,component:g?.variant?void 0:"span",...g,children:w})),null==S||S.type===s.A||h||(S=(0,p.jsx)(s.A,{variant:"body2",className:E.secondary,color:"textSecondary",...b,children:S})),(0,p.jsxs)(f,{className:(0,o.A)(E.root,c),ownerState:k,ref:t,...x,children:[w,S]})}))},69285:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,b:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiListItemText",e)}const a=(0,n.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"])},55851:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(60129),l=r(4785),c=r(15622),u=r(15423),d=r(69500);const p=(0,a.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,c.A)(r.color)}`],!r.disableGutters&&t.gutters,r.inset&&t.inset,!r.disableSticky&&t.sticky]}})((0,s.A)((({theme:e})=>({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(e.vars||e).palette.text.secondary,fontFamily:e.typography.fontFamily,fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.pxToRem(14),variants:[{props:{color:"primary"},style:{color:(e.vars||e).palette.primary.main}},{props:{color:"inherit"},style:{color:"inherit"}},{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.inset,style:{paddingLeft:72}},{props:({ownerState:e})=>!e.disableSticky,style:{position:"sticky",top:0,zIndex:1,backgroundColor:(e.vars||e).palette.background.paper}}]})))),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiListSubheader"}),{className:n,color:a="default",component:s="li",disableGutters:f=!1,disableSticky:h=!1,inset:m=!1,...v}=r,g={...r,color:a,component:s,disableGutters:f,disableSticky:h,inset:m},y=(e=>{const{classes:t,color:r,disableGutters:n,inset:o,disableSticky:a}=e,s={root:["root","default"!==r&&`color${(0,c.A)(r)}`,!n&&"gutters",o&&"inset",!a&&"sticky"]};return(0,i.A)(s,u.g,t)})(g);return(0,d.jsx)(p,{as:s,className:(0,o.A)(y.root,n),ref:t,ownerState:g,...v})}));f&&(f.muiSkipListHighlight=!0);const h=f},15423:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,g:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiListSubheader",e)}const a=(0,n.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"])},2051:(e,t,r)=>{"use strict";r.d(t,{A:()=>x});var n=r(7552),o=(r(19487),r(93878)),i=r(70799),a=r(93876),s=r(1045),l=r(6679),c=r(9555),u=r(55270),d=r(51148),p=r(4785),f=r(78199),h=r(69500);const m={vertical:"top",horizontal:"right"},v={vertical:"top",horizontal:"left"},g=(0,d.Ay)(c.Ay,{shouldForwardProp:e=>(0,u.A)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),y=(0,d.Ay)(c.IJ,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),b=(0,d.Ay)(l.A,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),x=n.forwardRef((function(e,t){const r=(0,p.b)({props:e,name:"MuiMenu"}),{autoFocus:l=!0,children:c,className:u,disableAutoFocusItem:d=!1,MenuListProps:x={},onClose:A,open:w,PaperProps:S={},PopoverClasses:k,transitionDuration:E="auto",TransitionProps:{onEntering:C,...T}={},variant:R="selectedMenu",slots:M={},slotProps:O={},...P}=r,I=(0,a.I)(),N={...r,autoFocus:l,disableAutoFocusItem:d,MenuListProps:x,onEntering:C,PaperProps:S,transitionDuration:E,TransitionProps:T,variant:R},$=(e=>{const{classes:t}=e;return(0,i.A)({root:["root"],paper:["paper"],list:["list"]},f.e,t)})(N),_=l&&!d&&w,L=n.useRef(null);let j=-1;n.Children.map(c,((e,t)=>{n.isValidElement(e)&&(e.props.disabled||("selectedMenu"===R&&e.props.selected||-1===j)&&(j=t))}));const z=M.paper??y,D=O.paper??S,F=(0,s.A)({elementType:M.root,externalSlotProps:O.root,ownerState:N,className:[$.root,u]}),B=(0,s.A)({elementType:z,externalSlotProps:D,ownerState:N,className:$.paper});return(0,h.jsx)(g,{onClose:A,anchorOrigin:{vertical:"bottom",horizontal:I?"right":"left"},transformOrigin:I?m:v,slots:{paper:z,root:M.root},slotProps:{root:F,paper:B},open:w,ref:t,transitionDuration:E,TransitionProps:{onEntering:(e,t)=>{L.current&&L.current.adjustStyleForScrollbar(e,{direction:I?"rtl":"ltr"}),C&&C(e,t)},...T},ownerState:N,...P,classes:k,children:(0,h.jsx)(b,{onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),A&&A(e,"tabKeyDown"))},actions:L,autoFocus:l&&(-1===j||d),autoFocusItem:_,variant:R,...x,className:(0,o.A)($.list,x.className),children:c})})}))},78199:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,e:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiMenu",e)}const a=(0,n.A)("MuiMenu",["root","paper","list"])},29629:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(55270),l=r(51148),c=r(60129),u=r(4785),d=r(57406),p=r(48054),f=r(82910),h=r(51584),m=r(919),v=r(16421),g=r(69285),y=r(49045),b=r(69500);const x=(0,l.Ay)(p.A,{shouldForwardProp:e=>(0,s.A)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.dense&&t.dense,r.divider&&t.divider,!r.disableGutters&&t.gutters]}})((0,c.A)((({theme:e})=>({...e.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${y.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,a.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${y.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,a.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${y.A.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,a.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,a.X4)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${y.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${y.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${m.A.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${m.A.inset}`]:{marginLeft:52},[`& .${g.A.root}`]:{marginTop:0,marginBottom:0},[`& .${g.A.inset}`]:{paddingLeft:36},[`& .${v.A.root}`]:{minWidth:36},variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>!e.dense,style:{[e.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:e})=>e.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...e.typography.body2,[`& .${v.A.root} svg`]:{fontSize:"1.25rem"}}}]})))),A=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiMenuItem"}),{autoFocus:a=!1,component:s="li",dense:l=!1,divider:c=!1,disableGutters:p=!1,focusVisibleClassName:m,role:v="menuitem",tabIndex:g,className:A,...w}=r,S=n.useContext(d.A),k=n.useMemo((()=>({dense:l||S.dense||!1,disableGutters:p})),[S.dense,l,p]),E=n.useRef(null);(0,f.A)((()=>{a&&E.current&&E.current.focus()}),[a]);const C={...r,dense:k.dense,divider:c,disableGutters:p},T=(e=>{const{disabled:t,dense:r,divider:n,disableGutters:o,selected:a,classes:s}=e,l={root:["root",r&&"dense",t&&"disabled",!o&&"gutters",n&&"divider",a&&"selected"]},c=(0,i.A)(l,y.Z,s);return{...s,...c}})(r),R=(0,h.A)(E,t);let M;return r.disabled||(M=void 0!==g?g:-1),(0,b.jsx)(d.A.Provider,{value:k,children:(0,b.jsx)(x,{ref:R,role:v,tabIndex:M,component:s,focusVisibleClassName:(0,o.A)(T.focusVisible,m),className:(0,o.A)(T.root,A),...w,ownerState:C,classes:T})})}))},49045:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,Z:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiMenuItem",e)}const a=(0,n.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"])},6679:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(7552),o=(r(19487),r(6676)),i=r(58181);const a=r(25577).A;var s=r(51584),l=r(82910),c=r(69500);function u(e,t,r){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:r?null:e.firstChild}function d(e,t,r){return e===t?r?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:r?null:e.lastChild}function p(e,t){if(void 0===t)return!0;let r=e.innerText;return void 0===r&&(r=e.textContent),r=r.trim().toLowerCase(),0!==r.length&&(t.repeating?r[0]===t.keys[0]:r.startsWith(t.keys.join("")))}function f(e,t,r,n,o,i){let a=!1,s=o(e,t,!!t&&r);for(;s;){if(s===e.firstChild){if(a)return!1;a=!0}const t=!n&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&p(s,i)&&!t)return s.focus(),!0;s=o(e,s,r)}return!1}const h=n.forwardRef((function(e,t){const{actions:r,autoFocus:h=!1,autoFocusItem:m=!1,children:v,className:g,disabledItemsFocusable:y=!1,disableListWrap:b=!1,onKeyDown:x,variant:A="selectedMenu",...w}=e,S=n.useRef(null),k=n.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,l.A)((()=>{h&&S.current.focus()}),[h]),n.useImperativeHandle(r,(()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const r=!S.current.style.width;if(e.clientHeight<S.current.clientHeight&&r){const r=`${a((0,o.A)(e))}px`;S.current.style["rtl"===t?"paddingLeft":"paddingRight"]=r,S.current.style.width=`calc(100% + ${r})`}return S.current}})),[]);const E=(0,s.A)(S,t);let C=-1;n.Children.forEach(v,((e,t)=>{n.isValidElement(e)?(e.props.disabled||("selectedMenu"===A&&e.props.selected||-1===C)&&(C=t),C===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(C+=1,C>=v.length&&(C=-1))):C===t&&(C+=1,C>=v.length&&(C=-1))}));const T=n.Children.map(v,((e,t)=>{if(t===C){const t={};return m&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===A&&(t.tabIndex=0),n.cloneElement(e,t)}return e}));return(0,c.jsx)(i.A,{role:"menu",ref:E,className:g,onKeyDown:e=>{const t=S.current,r=e.key;if(e.ctrlKey||e.metaKey||e.altKey)return void(x&&x(e));const n=(0,o.A)(t).activeElement;if("ArrowDown"===r)e.preventDefault(),f(t,n,b,y,u);else if("ArrowUp"===r)e.preventDefault(),f(t,n,b,y,d);else if("Home"===r)e.preventDefault(),f(t,null,b,y,u);else if("End"===r)e.preventDefault(),f(t,null,b,y,d);else if(1===r.length){const o=k.current,i=r.toLowerCase(),a=performance.now();o.keys.length>0&&(a-o.lastTime>500?(o.keys=[],o.repeating=!0,o.previousKeyMatched=!0):o.repeating&&i!==o.keys[0]&&(o.repeating=!1)),o.lastTime=a,o.keys.push(i);const s=n&&!o.repeating&&p(n,o);o.previousKeyMatched&&(s||f(t,n,!1,y,u,o))?e.preventDefault():o.previousKeyMatched=!1}x&&x(e)},tabIndex:h?0:-1,...w,children:T})}))},31694:(e,t,r)=>{"use strict";r.d(t,{A:()=>E});var n=r(7552),o=r(93878),i=r(70799),a=r(61864),s=r(26993),l=r(51148),c=r(60129),u=r(4785),d=r(19937),p=r(29527),f=r(99305),h=r(89887),m=r(87797),v=r(29091),g=r(28276);const y=new g.P;var b=r(48331),x=r(43045),A=r(51584),w=r(69500);const S=(0,l.Ay)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.open&&r.exited&&t.hidden]}})((0,c.A)((({theme:e})=>({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:e})=>!e.open&&e.exited,style:{visibility:"hidden"}}]})))),k=(0,l.Ay)(d.A,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),E=n.forwardRef((function(e,t){const r=(0,u.b)({name:"MuiModal",props:e}),{BackdropComponent:l=k,BackdropProps:c,classes:d,className:E,closeAfterTransition:C=!1,children:T,container:R,component:M,components:O={},componentsProps:P={},disableAutoFocus:I=!1,disableEnforceFocus:N=!1,disableEscapeKeyDown:$=!1,disablePortal:_=!1,disableRestoreFocus:L=!1,disableScrollLock:j=!1,hideBackdrop:z=!1,keepMounted:D=!1,onBackdropClick:F,onClose:B,onTransitionEnter:W,onTransitionExited:H,open:U,slotProps:V={},slots:q={},theme:X,...Y}=r,G={...r,closeAfterTransition:C,disableAutoFocus:I,disableEnforceFocus:N,disableEscapeKeyDown:$,disablePortal:_,disableRestoreFocus:L,disableScrollLock:j,hideBackdrop:z,keepMounted:D},{getRootProps:K,getBackdropProps:J,getTransitionProps:Z,portalRef:Q,isTopModal:ee,exited:te,hasTransition:re}=function(e){const{container:t,disableEscapeKeyDown:r=!1,disableScrollLock:o=!1,manager:i=y,closeAfterTransition:a=!1,onTransitionEnter:s,onTransitionExited:l,children:c,onClose:u,open:d,rootRef:b}=e,x=n.useRef({}),A=n.useRef(null),w=n.useRef(null),S=(0,p.A)(w,b),[k,E]=n.useState(!d),C=function(e){return!!e&&e.props.hasOwnProperty("in")}(c);let T=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(T=!1);const R=()=>(x.current.modalRef=w.current,x.current.mount=A.current,x.current),M=()=>{i.mount(R(),{disableScrollLock:o}),w.current&&(w.current.scrollTop=0)},O=(0,h.A)((()=>{const e=function(e){return"function"==typeof e?e():e}(t)||(0,f.A)(A.current).body;i.add(R(),e),w.current&&M()})),P=n.useCallback((()=>i.isTopModal(R())),[i]),I=(0,h.A)((e=>{A.current=e,e&&(d&&P()?M():w.current&&(0,g.M)(w.current,T))})),N=n.useCallback((()=>{i.remove(R(),T)}),[T,i]);n.useEffect((()=>()=>{N()}),[N]),n.useEffect((()=>{d?O():C&&a||N()}),[d,N,C,a,O]);const $=e=>t=>{e.onKeyDown?.(t),"Escape"===t.key&&229!==t.which&&P()&&(r||(t.stopPropagation(),u&&u(t,"escapeKeyDown")))},_=e=>t=>{e.onClick?.(t),t.target===t.currentTarget&&u&&u(t,"backdropClick")};return{getRootProps:(t={})=>{const r=(0,v.A)(e);delete r.onTransitionEnter,delete r.onTransitionExited;const n={...r,...t};return{role:"presentation",...n,onKeyDown:$(n),ref:S}},getBackdropProps:(e={})=>{const t=e;return{"aria-hidden":!0,...t,onClick:_(t),open:d}},getTransitionProps:()=>({onEnter:(0,m.A)((()=>{E(!1),s&&s()}),c?.props.onEnter),onExited:(0,m.A)((()=>{E(!0),l&&l(),a&&N()}),c?.props.onExited)}),rootRef:S,portalRef:I,isTopModal:P,exited:k,hasTransition:C}}({...G,rootRef:t}),ne={...G,exited:te},oe=(e=>{const{open:t,exited:r,classes:n}=e,o={root:["root",!t&&r&&"hidden"],backdrop:["backdrop"]};return(0,i.A)(o,b.M,n)})(ne),ie={};if(void 0===T.props.tabIndex&&(ie.tabIndex="-1"),re){const{onEnter:e,onExited:t}=Z();ie.onEnter=e,ie.onExited=t}const ae={...Y,slots:{root:O.Root,backdrop:O.Backdrop,...q},slotProps:{...P,...V}},[se,le]=(0,x.A)("root",{elementType:S,externalForwardedProps:ae,getSlotProps:K,additionalProps:{ref:t,as:M},ownerState:ne,className:(0,o.A)(E,oe?.root,!ne.open&&ne.exited&&oe?.hidden)}),[ce,ue]=(0,x.A)("backdrop",{elementType:l,externalForwardedProps:ae,additionalProps:c,getSlotProps:e=>J({...e,onClick:t=>{F&&F(t),e?.onClick&&e.onClick(t)}}),className:(0,o.A)(c?.className,oe?.backdrop),ownerState:ne}),de=(0,A.A)(c?.ref,ue.ref);return D||U||re&&!te?(0,w.jsx)(s.A,{ref:Q,container:R,disablePortal:_,children:(0,w.jsxs)(se,{...le,children:[!z&&l?(0,w.jsx)(ce,{...ue,ref:de}):null,(0,w.jsx)(a.A,{disableEnforceFocus:N,disableAutoFocus:I,disableRestoreFocus:L,isEnabled:ee,open:U,children:n.cloneElement(T,ie)})]})}):null}))},28276:(e,t,r)=>{"use strict";r.d(t,{M:()=>a,P:()=>u});var n=r(99305),o=r(16849),i=r(25577);function a(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function s(e){return parseInt((0,o.A)(e).getComputedStyle(e).paddingRight,10)||0}function l(e,t,r,n,o){const i=[t,r,...n];[].forEach.call(e.children,(e=>{const t=!i.includes(e),r=!function(e){const t=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(e.tagName),r="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||r}(e);t&&r&&a(e,o)}))}function c(e,t){let r=-1;return e.some(((e,n)=>!!t(e)&&(r=n,!0))),r}class u{constructor(){this.modals=[],this.containers=[]}add(e,t){let r=this.modals.indexOf(e);if(-1!==r)return r;r=this.modals.length,this.modals.push(e),e.modalRef&&a(e.modalRef,!1);const n=function(e){const t=[];return[].forEach.call(e.children,(e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)})),t}(t);l(t,e.mount,e.modalRef,n,!0);const o=c(this.containers,(e=>e.container===t));return-1!==o?(this.containers[o].modals.push(e),r):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:n}),r)}mount(e,t){const r=c(this.containers,(t=>t.modals.includes(e))),a=this.containers[r];a.restore||(a.restore=function(e,t){const r=[],a=e.container;if(!t.disableScrollLock){if(function(e){const t=(0,n.A)(e);return t.body===e?(0,o.A)(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(a)){const e=(0,i.A)((0,n.A)(a));r.push({value:a.style.paddingRight,property:"padding-right",el:a}),a.style.paddingRight=`${s(a)+e}px`;const t=(0,n.A)(a).querySelectorAll(".mui-fixed");[].forEach.call(t,(t=>{r.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${s(t)+e}px`}))}let e;if(a.parentNode instanceof DocumentFragment)e=(0,n.A)(a).body;else{const t=a.parentElement,r=(0,o.A)(a);e="HTML"===t?.nodeName&&"scroll"===r.getComputedStyle(t).overflowY?t:a}r.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{r.forEach((({value:e,el:t,property:r})=>{e?t.style.setProperty(r,e):t.style.removeProperty(r)}))}}(a,t))}remove(e,t=!0){const r=this.modals.indexOf(e);if(-1===r)return r;const n=c(this.containers,(t=>t.modals.includes(e))),o=this.containers[n];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(r,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&a(e.modalRef,t),l(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(n,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&a(e.modalRef,!1)}return r}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}}},48331:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,M:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiModal",e)}const a=(0,n.A)("MuiModal",["root","hidden","backdrop"])},39923:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>m,nE:()=>f,y3:()=>d});var n=r(7552),o=r(93878),i=r(70799),a=r(15622),s=r(72851),l=r(51148),c=r(55270),u=r(69500);const d=(0,l.Ay)("select")((({theme:e})=>({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":{borderRadius:0},[`&.${s.A.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(e.vars||e).palette.background.paper},variants:[{props:({ownerState:e})=>"filled"!==e.variant&&"outlined"!==e.variant,style:{"&&&":{paddingRight:24,minWidth:16}}},{props:{variant:"filled"},style:{"&&&":{paddingRight:32}}},{props:{variant:"outlined"},style:{borderRadius:(e.vars||e).shape.borderRadius,"&:focus":{borderRadius:(e.vars||e).shape.borderRadius},"&&&":{paddingRight:32}}}]}))),p=(0,l.Ay)(d,{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:c.A,overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.select,t[r.variant],r.error&&t.error,{[`&.${s.A.multiple}`]:t.multiple}]}})({}),f=(0,l.Ay)("svg")((({theme:e})=>({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(e.vars||e).palette.action.active,[`&.${s.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:({ownerState:e})=>e.open,style:{transform:"rotate(180deg)"}},{props:{variant:"filled"},style:{right:7}},{props:{variant:"outlined"},style:{right:7}}]}))),h=(0,l.Ay)(f,{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.icon,r.variant&&t[`icon${(0,a.A)(r.variant)}`],r.open&&t.iconOpen]}})({}),m=n.forwardRef((function(e,t){const{className:r,disabled:l,error:c,IconComponent:d,inputRef:f,variant:m="standard",...v}=e,g={...e,disabled:l,variant:m,error:c},y=(e=>{const{classes:t,variant:r,disabled:n,multiple:o,open:l,error:c}=e,u={select:["select",r,n&&"disabled",o&&"multiple",c&&"error"],icon:["icon",`icon${(0,a.A)(r)}`,l&&"iconOpen",n&&"disabled"]};return(0,i.A)(u,s.w,t)})(g);return(0,u.jsxs)(n.Fragment,{children:[(0,u.jsx)(p,{ownerState:g,className:(0,o.A)(y.select,r),disabled:l,ref:f||t,...v}),e.multiple?null:(0,u.jsx)(h,{as:d,ownerState:g,className:y.icon})]})}))},72851:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,w:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiNativeSelect",e)}const a=(0,n.A)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"])},28172:(e,t,r)=>{"use strict";r.d(t,{A:()=>w});var n,o=r(7552),i=r(70799),a=r(55270),s=r(51148),l=r(60129),c=r(69500);const u=(0,s.Ay)("fieldset",{shouldForwardProp:a.A})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),d=(0,s.Ay)("legend",{shouldForwardProp:a.A})((0,l.A)((({theme:e})=>({float:"unset",width:"auto",overflow:"hidden",variants:[{props:({ownerState:e})=>!e.withLabel,style:{padding:0,lineHeight:"11px",transition:e.transitions.create("width",{duration:150,easing:e.transitions.easing.easeOut})}},{props:({ownerState:e})=>e.withLabel,style:{display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:e.transitions.create("max-width",{duration:50,easing:e.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}}},{props:({ownerState:e})=>e.withLabel&&e.notched,style:{maxWidth:"100%",transition:e.transitions.create("max-width",{duration:100,easing:e.transitions.easing.easeOut,delay:50})}}]}))));var p=r(33960),f=r(32498),h=r(58520),m=r(4785),v=r(29683),g=r(98879);const y=(0,s.Ay)(g.Sh,{shouldForwardProp:e=>(0,a.A)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:g.WC})((0,l.A)((({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{position:"relative",borderRadius:(e.vars||e).shape.borderRadius,[`&:hover .${v.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.text.primary},[`&.${v.A.focused} .${v.A.notchedOutline}`]:{borderWidth:2},variants:[...Object.entries(e.palette).filter((0,h.A)()).map((([t])=>({props:{color:t},style:{[`&.${v.A.focused} .${v.A.notchedOutline}`]:{borderColor:(e.vars||e).palette[t].main}}}))),{props:{},style:{"@media (hover: none)":{[`&:hover .${v.A.notchedOutline}`]:{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:t}},[`&.${v.A.error} .${v.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.error.main},[`&.${v.A.disabled} .${v.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.action.disabled}}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:14}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:14}},{props:({ownerState:e})=>e.multiline,style:{padding:"16.5px 14px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{padding:"8.5px 14px"}}]}}))),b=(0,s.Ay)((function(e){const{children:t,classes:r,className:o,label:i,notched:a,...s}=e,l=null!=i&&""!==i,p={...e,notched:a,withLabel:l};return(0,c.jsx)(u,{"aria-hidden":!0,className:o,ownerState:p,...s,children:(0,c.jsx)(d,{ownerState:p,children:l?(0,c.jsx)("span",{children:i}):n||(n=(0,c.jsx)("span",{className:"notranslate",children:"​"}))})})}),{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})((0,l.A)((({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:t}}))),x=(0,s.Ay)(g.ck,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:g.Oj})((0,l.A)((({theme:e})=>({padding:"16.5px 14px",...!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderRadius:"inherit"}},...e.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},variants:[{props:{size:"small"},style:{padding:"8.5px 14px"}},{props:({ownerState:e})=>e.multiline,style:{padding:0}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}}]})))),A=o.forwardRef((function(e,t){var r;const n=(0,m.b)({props:e,name:"MuiOutlinedInput"}),{components:a={},fullWidth:s=!1,inputComponent:l="input",label:u,multiline:d=!1,notched:h,slots:A={},type:w="text",...S}=n,k=(e=>{const{classes:t}=e,r=(0,i.A)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},v.v,t);return{...t,...r}})(n),E=(0,p.A)(),C=(0,f.A)({props:n,muiFormControl:E,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),T={...n,color:C.color||"primary",disabled:C.disabled,error:C.error,focused:C.focused,formControl:E,fullWidth:s,hiddenLabel:C.hiddenLabel,multiline:d,size:C.size,type:w},R=A.root??a.Root??y,M=A.input??a.Input??x;return(0,c.jsx)(g.Ay,{slots:{root:R,input:M},renderSuffix:e=>(0,c.jsx)(b,{ownerState:T,className:k.notchedOutline,label:null!=u&&""!==u&&C.required?r||(r=(0,c.jsxs)(o.Fragment,{children:[u," ","*"]})):u,notched:void 0!==h?h:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:s,inputComponent:l,multiline:d,ref:t,type:w,...S,classes:{...k,notchedOutline:null}})}));A&&(A.muiName="Input");const w=A},29683:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,v:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiOutlinedInput",e)}const a={...r(3275).A,...(0,n.A)("MuiOutlinedInput",["root","notchedOutline","input"])}},943:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(51148),l=r(48231),c=r(60129),u=r(4785),d=r(28875),p=r(40795),f=r(69500);const h=(0,s.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],!r.square&&t.rounded,"elevation"===r.variant&&t[`elevation${r.elevation}`]]}})((0,c.A)((({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]})))),m=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiPaper"}),n=(0,l.A)(),{className:s,component:c="div",elevation:m=1,square:v=!1,variant:g="elevation",...y}=r,b={...r,component:c,elevation:m,square:v,variant:g},x=(e=>{const{square:t,elevation:r,variant:n,classes:o}=e,a={root:["root",n,!t&&"rounded","elevation"===n&&`elevation${r}`]};return(0,i.A)(a,p.j,o)})(b);return(0,f.jsx)(h,{as:c,ownerState:b,className:(0,o.A)(x.root,s),ref:t,...y,style:{..."elevation"===g&&{"--Paper-shadow":(n.vars||n).shadows[m],...n.vars&&{"--Paper-overlay":n.vars.overlays?.[m]},...!n.vars&&"dark"===n.palette.mode&&{"--Paper-overlay":`linear-gradient(${(0,a.X4)("#fff",(0,d.A)(m))}, ${(0,a.X4)("#fff",(0,d.A)(m))})`}},...y.style}})}))},40795:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,j:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiPaper",e)}const a=(0,n.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"])},9555:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>E,Dy:()=>b,IJ:()=>k,fB:()=>x,yt:()=>S});var n=r(7552),o=r(93878),i=r(70799),a=r(23879),s=r(51148),l=r(4785),c=r(987),u=r(6676),d=r(46689),p=r(51584),f=r(4407),h=r(31694),m=r(943),v=r(51015),g=r(43045),y=r(69500);function b(e,t){let r=0;return"number"==typeof t?r=t:"center"===t?r=e.height/2:"bottom"===t&&(r=e.height),r}function x(e,t){let r=0;return"number"==typeof t?r=t:"center"===t?r=e.width/2:"right"===t&&(r=e.width),r}function A(e){return[e.horizontal,e.vertical].map((e=>"number"==typeof e?`${e}px`:e)).join(" ")}function w(e){return"function"==typeof e?e():e}const S=(0,s.Ay)(h.A,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),k=(0,s.Ay)(m.A,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),E=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiPopover"}),{action:s,anchorEl:h,anchorOrigin:m={vertical:"top",horizontal:"left"},anchorPosition:E,anchorReference:C="anchorEl",children:T,className:R,container:M,elevation:O=8,marginThreshold:P=16,open:I,PaperProps:N={},slots:$={},slotProps:_={},transformOrigin:L={vertical:"top",horizontal:"left"},TransitionComponent:j=f.A,transitionDuration:z="auto",TransitionProps:{onEntering:D,...F}={},disableScrollLock:B=!1,...W}=r,H=_?.paper??N,U=n.useRef(),V={...r,anchorOrigin:m,anchorReference:C,elevation:O,marginThreshold:P,externalPaperSlotProps:H,transformOrigin:L,TransitionComponent:j,transitionDuration:z,TransitionProps:F},q=(e=>{const{classes:t}=e;return(0,i.A)({root:["root"],paper:["paper"]},v.K,t)})(V),X=n.useCallback((()=>{if("anchorPosition"===C)return E;const e=w(h),t=(e&&1===e.nodeType?e:(0,u.A)(U.current).body).getBoundingClientRect();return{top:t.top+b(t,m.vertical),left:t.left+x(t,m.horizontal)}}),[h,m.horizontal,m.vertical,E,C]),Y=n.useCallback((e=>({vertical:b(e,L.vertical),horizontal:x(e,L.horizontal)})),[L.horizontal,L.vertical]),G=n.useCallback((e=>{const t={width:e.offsetWidth,height:e.offsetHeight},r=Y(t);if("none"===C)return{top:null,left:null,transformOrigin:A(r)};const n=X();let o=n.top-r.vertical,i=n.left-r.horizontal;const a=o+t.height,s=i+t.width,l=(0,d.A)(w(h)),c=l.innerHeight-P,u=l.innerWidth-P;if(null!==P&&o<P){const e=o-P;o-=e,r.vertical+=e}else if(null!==P&&a>c){const e=a-c;o-=e,r.vertical+=e}if(null!==P&&i<P){const e=i-P;i-=e,r.horizontal+=e}else if(s>u){const e=s-u;i-=e,r.horizontal+=e}return{top:`${Math.round(o)}px`,left:`${Math.round(i)}px`,transformOrigin:A(r)}}),[h,C,X,Y,P]),[K,J]=n.useState(I),Z=n.useCallback((()=>{const e=U.current;if(!e)return;const t=G(e);null!==t.top&&e.style.setProperty("top",t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,J(!0)}),[G]);n.useEffect((()=>(B&&window.addEventListener("scroll",Z),()=>window.removeEventListener("scroll",Z))),[h,B,Z]),n.useEffect((()=>{I&&Z()})),n.useImperativeHandle(s,(()=>I?{updatePosition:()=>{Z()}}:null),[I,Z]),n.useEffect((()=>{if(!I)return;const e=(0,c.A)((()=>{Z()})),t=(0,d.A)(h);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}}),[h,I,Z]);let Q=z;"auto"!==z||j.muiSupportAuto||(Q=void 0);const ee=M||(h?(0,u.A)(w(h)).body:void 0),te={slots:$,slotProps:{..._,paper:H}},[re,ne]=(0,g.A)("paper",{elementType:k,externalForwardedProps:te,additionalProps:{elevation:O,className:(0,o.A)(q.paper,H?.className),style:K?H.style:{...H.style,opacity:0}},ownerState:V}),[oe,{slotProps:ie,...ae}]=(0,g.A)("root",{elementType:S,externalForwardedProps:te,additionalProps:{slotProps:{backdrop:{invisible:!0}},container:ee,open:I},ownerState:V,className:(0,o.A)(q.root,R)}),se=(0,p.A)(U,ne.ref);return(0,y.jsx)(oe,{...ae,...!(0,a.A)(oe)&&{slotProps:ie,disableScrollLock:B},...W,ref:t,children:(0,y.jsx)(j,{appear:!0,in:I,onEntering:(e,t)=>{D&&D(e,t),Z()},onExited:()=>{J(!1)},timeout:Q,...F,children:(0,y.jsx)(re,{...ne,ref:se,children:T})})})}))},51015:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,K:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiPopover",e)}const a=(0,n.A)("MuiPopover",["root","paper"])},20350:(e,t,r)=>{"use strict";r.d(t,{A:()=>Re});var n=r(93876),o=r(7552),i=r(29527),a=r(83933),s=r(99305);function l(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function c(e){return e instanceof l(e).Element||e instanceof Element}function u(e){return e instanceof l(e).HTMLElement||e instanceof HTMLElement}function d(e){return"undefined"!=typeof ShadowRoot&&(e instanceof l(e).ShadowRoot||e instanceof ShadowRoot)}var p=Math.max,f=Math.min,h=Math.round;function m(){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 v(){return!/^((?!chrome|android).)*safari/i.test(m())}function g(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!1);var n=e.getBoundingClientRect(),o=1,i=1;t&&u(e)&&(o=e.offsetWidth>0&&h(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&h(n.height)/e.offsetHeight||1);var a=(c(e)?l(e):window).visualViewport,s=!v()&&r,d=(n.left+(s&&a?a.offsetLeft:0))/o,p=(n.top+(s&&a?a.offsetTop:0))/i,f=n.width/o,m=n.height/i;return{width:f,height:m,top:p,right:d+f,bottom:p+m,left:d,x:d,y:p}}function y(e){var t=l(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function b(e){return e?(e.nodeName||"").toLowerCase():null}function x(e){return((c(e)?e.ownerDocument:e.document)||window.document).documentElement}function A(e){return g(x(e)).left+y(e).scrollLeft}function w(e){return l(e).getComputedStyle(e)}function S(e){var t=w(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function k(e,t,r){void 0===r&&(r=!1);var n,o,i=u(t),a=u(t)&&function(e){var t=e.getBoundingClientRect(),r=h(t.width)/e.offsetWidth||1,n=h(t.height)/e.offsetHeight||1;return 1!==r||1!==n}(t),s=x(t),c=g(e,a,r),d={scrollLeft:0,scrollTop:0},p={x:0,y:0};return(i||!i&&!r)&&(("body"!==b(t)||S(s))&&(d=(n=t)!==l(n)&&u(n)?{scrollLeft:(o=n).scrollLeft,scrollTop:o.scrollTop}:y(n)),u(t)?((p=g(t,!0)).x+=t.clientLeft,p.y+=t.clientTop):s&&(p.x=A(s))),{x:c.left+d.scrollLeft-p.x,y:c.top+d.scrollTop-p.y,width:c.width,height:c.height}}function E(e){var t=g(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function C(e){return"html"===b(e)?e:e.assignedSlot||e.parentNode||(d(e)?e.host:null)||x(e)}function T(e){return["html","body","#document"].indexOf(b(e))>=0?e.ownerDocument.body:u(e)&&S(e)?e:T(C(e))}function R(e,t){var r;void 0===t&&(t=[]);var n=T(e),o=n===(null==(r=e.ownerDocument)?void 0:r.body),i=l(n),a=o?[i].concat(i.visualViewport||[],S(n)?n:[]):n,s=t.concat(a);return o?s:s.concat(R(C(a)))}function M(e){return["table","td","th"].indexOf(b(e))>=0}function O(e){return u(e)&&"fixed"!==w(e).position?e.offsetParent:null}function P(e){for(var t=l(e),r=O(e);r&&M(r)&&"static"===w(r).position;)r=O(r);return r&&("html"===b(r)||"body"===b(r)&&"static"===w(r).position)?t:r||function(e){var t=/firefox/i.test(m());if(/Trident/i.test(m())&&u(e)&&"fixed"===w(e).position)return null;var r=C(e);for(d(r)&&(r=r.host);u(r)&&["html","body"].indexOf(b(r))<0;){var n=w(r);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return r;r=r.parentNode}return null}(e)||t}var I="top",N="bottom",$="right",_="left",L="auto",j=[I,N,$,_],z="start",D="end",F="viewport",B="popper",W=j.reduce((function(e,t){return e.concat([t+"-"+z,t+"-"+D])}),[]),H=[].concat(j,[L]).reduce((function(e,t){return e.concat([t,t+"-"+z,t+"-"+D])}),[]),U=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function V(e){var t=new Map,r=new Set,n=[];function o(e){r.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!r.has(e)){var n=t.get(e);n&&o(n)}})),n.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){r.has(e.name)||o(e)})),n}var q={placement:"bottom",modifiers:[],strategy:"absolute"};function X(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function Y(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,n=void 0===r?[]:r,o=t.defaultOptions,i=void 0===o?q:o;return function(e,t,r){void 0===r&&(r=i);var o,a,s={placement:"bottom",orderedModifiers:[],options:Object.assign({},q,i),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],u=!1,d={state:s,setOptions:function(r){var o="function"==typeof r?r(s.options):r;p(),s.options=Object.assign({},i,s.options,o),s.scrollParents={reference:c(e)?R(e):e.contextElement?R(e.contextElement):[],popper:R(t)};var a,u,f=function(e){var t=V(e);return U.reduce((function(e,r){return e.concat(t.filter((function(e){return e.phase===r})))}),[])}((a=[].concat(n,s.options.modifiers),u=a.reduce((function(e,t){var r=e[t.name];return e[t.name]=r?Object.assign({},r,t,{options:Object.assign({},r.options,t.options),data:Object.assign({},r.data,t.data)}):t,e}),{}),Object.keys(u).map((function(e){return u[e]}))));return s.orderedModifiers=f.filter((function(e){return e.enabled})),s.orderedModifiers.forEach((function(e){var t=e.name,r=e.options,n=void 0===r?{}:r,o=e.effect;if("function"==typeof o){var i=o({state:s,name:t,instance:d,options:n});l.push(i||function(){})}})),d.update()},forceUpdate:function(){if(!u){var e=s.elements,t=e.reference,r=e.popper;if(X(t,r)){s.rects={reference:k(t,P(r),"fixed"===s.options.strategy),popper:E(r)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach((function(e){return s.modifiersData[e.name]=Object.assign({},e.data)}));for(var n=0;n<s.orderedModifiers.length;n++)if(!0!==s.reset){var o=s.orderedModifiers[n],i=o.fn,a=o.options,l=void 0===a?{}:a,c=o.name;"function"==typeof i&&(s=i({state:s,options:l,name:c,instance:d})||s)}else s.reset=!1,n=-1}}},update:(o=function(){return new Promise((function(e){d.forceUpdate(),e(s)}))},function(){return a||(a=new Promise((function(e){Promise.resolve().then((function(){a=void 0,e(o())}))}))),a}),destroy:function(){p(),u=!0}};if(!X(e,t))return d;function p(){l.forEach((function(e){return e()})),l=[]}return d.setOptions(r).then((function(e){!u&&r.onFirstUpdate&&r.onFirstUpdate(e)})),d}}var G={passive:!0};function K(e){return e.split("-")[0]}function J(e){return e.split("-")[1]}function Z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Q(e){var t,r=e.reference,n=e.element,o=e.placement,i=o?K(o):null,a=o?J(o):null,s=r.x+r.width/2-n.width/2,l=r.y+r.height/2-n.height/2;switch(i){case I:t={x:s,y:r.y-n.height};break;case N:t={x:s,y:r.y+r.height};break;case $:t={x:r.x+r.width,y:l};break;case _:t={x:r.x-n.width,y:l};break;default:t={x:r.x,y:r.y}}var c=i?Z(i):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case z:t[c]=t[c]-(r[u]/2-n[u]/2);break;case D:t[c]=t[c]+(r[u]/2-n[u]/2)}}return t}var ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var t,r=e.popper,n=e.popperRect,o=e.placement,i=e.variation,a=e.offsets,s=e.position,c=e.gpuAcceleration,u=e.adaptive,d=e.roundOffsets,p=e.isFixed,f=a.x,m=void 0===f?0:f,v=a.y,g=void 0===v?0:v,y="function"==typeof d?d({x:m,y:g}):{x:m,y:g};m=y.x,g=y.y;var b=a.hasOwnProperty("x"),A=a.hasOwnProperty("y"),S=_,k=I,E=window;if(u){var C=P(r),T="clientHeight",R="clientWidth";C===l(r)&&"static"!==w(C=x(r)).position&&"absolute"===s&&(T="scrollHeight",R="scrollWidth"),(o===I||(o===_||o===$)&&i===D)&&(k=N,g-=(p&&C===E&&E.visualViewport?E.visualViewport.height:C[T])-n.height,g*=c?1:-1),o!==_&&(o!==I&&o!==N||i!==D)||(S=$,m-=(p&&C===E&&E.visualViewport?E.visualViewport.width:C[R])-n.width,m*=c?1:-1)}var M,O=Object.assign({position:s},u&&ee),L=!0===d?function(e,t){var r=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:h(r*o)/o||0,y:h(n*o)/o||0}}({x:m,y:g},l(r)):{x:m,y:g};return m=L.x,g=L.y,c?Object.assign({},O,((M={})[k]=A?"0":"",M[S]=b?"0":"",M.transform=(E.devicePixelRatio||1)<=1?"translate("+m+"px, "+g+"px)":"translate3d("+m+"px, "+g+"px, 0)",M)):Object.assign({},O,((t={})[k]=A?g+"px":"",t[S]=b?m+"px":"",t.transform="",t))}var re={left:"right",right:"left",bottom:"top",top:"bottom"};function ne(e){return e.replace(/left|right|bottom|top/g,(function(e){return re[e]}))}var oe={start:"end",end:"start"};function ie(e){return e.replace(/start|end/g,(function(e){return oe[e]}))}function ae(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&d(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function se(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function le(e,t,r){return t===F?se(function(e,t){var r=l(e),n=x(e),o=r.visualViewport,i=n.clientWidth,a=n.clientHeight,s=0,c=0;if(o){i=o.width,a=o.height;var u=v();(u||!u&&"fixed"===t)&&(s=o.offsetLeft,c=o.offsetTop)}return{width:i,height:a,x:s+A(e),y:c}}(e,r)):c(t)?function(e,t){var r=g(e,!1,"fixed"===t);return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}(t,r):se(function(e){var t,r=x(e),n=y(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=p(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=p(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-n.scrollLeft+A(e),l=-n.scrollTop;return"rtl"===w(o||r).direction&&(s+=p(r.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:l}}(x(e)))}function ce(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function ue(e,t){return t.reduce((function(t,r){return t[r]=e,t}),{})}function de(e,t){void 0===t&&(t={});var r=t,n=r.placement,o=void 0===n?e.placement:n,i=r.strategy,a=void 0===i?e.strategy:i,s=r.boundary,l=void 0===s?"clippingParents":s,d=r.rootBoundary,h=void 0===d?F:d,m=r.elementContext,v=void 0===m?B:m,y=r.altBoundary,A=void 0!==y&&y,S=r.padding,k=void 0===S?0:S,E=ce("number"!=typeof k?k:ue(k,j)),T=v===B?"reference":B,M=e.rects.popper,O=e.elements[A?T:v],_=function(e,t,r,n){var o="clippingParents"===t?function(e){var t=R(C(e)),r=["absolute","fixed"].indexOf(w(e).position)>=0&&u(e)?P(e):e;return c(r)?t.filter((function(e){return c(e)&&ae(e,r)&&"body"!==b(e)})):[]}(e):[].concat(t),i=[].concat(o,[r]),a=i[0],s=i.reduce((function(t,r){var o=le(e,r,n);return t.top=p(o.top,t.top),t.right=f(o.right,t.right),t.bottom=f(o.bottom,t.bottom),t.left=p(o.left,t.left),t}),le(e,a,n));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(c(O)?O:O.contextElement||x(e.elements.popper),l,h,a),L=g(e.elements.reference),z=Q({reference:L,element:M,strategy:"absolute",placement:o}),D=se(Object.assign({},M,z)),W=v===B?D:L,H={top:_.top-W.top+E.top,bottom:W.bottom-_.bottom+E.bottom,left:_.left-W.left+E.left,right:W.right-_.right+E.right},U=e.modifiersData.offset;if(v===B&&U){var V=U[o];Object.keys(H).forEach((function(e){var t=[$,N].indexOf(e)>=0?1:-1,r=[I,N].indexOf(e)>=0?"y":"x";H[e]+=V[r]*t}))}return H}function pe(e,t,r){return p(e,f(t,r))}function fe(e,t,r){return void 0===r&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function he(e){return[I,$,N,_].some((function(t){return e[t]>=0}))}var me=Y({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,i=void 0===o||o,a=n.resize,s=void 0===a||a,c=l(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach((function(e){e.addEventListener("scroll",r.update,G)})),s&&c.addEventListener("resize",r.update,G),function(){i&&u.forEach((function(e){e.removeEventListener("scroll",r.update,G)})),s&&c.removeEventListener("resize",r.update,G)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,r=e.name;t.modifiersData[r]=Q({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,r=e.options,n=r.gpuAcceleration,o=void 0===n||n,i=r.adaptive,a=void 0===i||i,s=r.roundOffsets,l=void 0===s||s,c={placement:K(t.placement),variation:J(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var r=t.styles[e]||{},n=t.attributes[e]||{},o=t.elements[e];u(o)&&b(o)&&(Object.assign(o.style,r),Object.keys(n).forEach((function(e){var t=n[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach((function(e){var n=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:r[e]).reduce((function(e,t){return e[t]="",e}),{});u(n)&&b(n)&&(Object.assign(n.style,i),Object.keys(o).forEach((function(e){n.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,r=e.options,n=e.name,o=r.offset,i=void 0===o?[0,0]:o,a=H.reduce((function(e,r){return e[r]=function(e,t,r){var n=K(e),o=[_,I].indexOf(n)>=0?-1:1,i="function"==typeof r?r(Object.assign({},t,{placement:e})):r,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[_,$].indexOf(n)>=0?{x:s,y:a}:{x:a,y:s}}(r,t.rects,i),e}),{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[n]=a}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,i=void 0===o||o,a=r.altAxis,s=void 0===a||a,l=r.fallbackPlacements,c=r.padding,u=r.boundary,d=r.rootBoundary,p=r.altBoundary,f=r.flipVariations,h=void 0===f||f,m=r.allowedAutoPlacements,v=t.options.placement,g=K(v),y=l||(g!==v&&h?function(e){if(K(e)===L)return[];var t=ne(e);return[ie(e),t,ie(t)]}(v):[ne(v)]),b=[v].concat(y).reduce((function(e,r){return e.concat(K(r)===L?function(e,t){void 0===t&&(t={});var r=t,n=r.placement,o=r.boundary,i=r.rootBoundary,a=r.padding,s=r.flipVariations,l=r.allowedAutoPlacements,c=void 0===l?H:l,u=J(n),d=u?s?W:W.filter((function(e){return J(e)===u})):j,p=d.filter((function(e){return c.indexOf(e)>=0}));0===p.length&&(p=d);var f=p.reduce((function(t,r){return t[r]=de(e,{placement:r,boundary:o,rootBoundary:i,padding:a})[K(r)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:r,boundary:u,rootBoundary:d,padding:c,flipVariations:h,allowedAutoPlacements:m}):r)}),[]),x=t.rects.reference,A=t.rects.popper,w=new Map,S=!0,k=b[0],E=0;E<b.length;E++){var C=b[E],T=K(C),R=J(C)===z,M=[I,N].indexOf(T)>=0,O=M?"width":"height",P=de(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:p,padding:c}),D=M?R?$:_:R?N:I;x[O]>A[O]&&(D=ne(D));var F=ne(D),B=[];if(i&&B.push(P[T]<=0),s&&B.push(P[D]<=0,P[F]<=0),B.every((function(e){return e}))){k=C,S=!1;break}w.set(C,B)}if(S)for(var U=function(e){var t=b.find((function(t){var r=w.get(t);if(r)return r.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},V=h?3:1;V>0&&"break"!==U(V);V--);t.placement!==k&&(t.modifiersData[n]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,i=void 0===o||o,a=r.altAxis,s=void 0!==a&&a,l=r.boundary,c=r.rootBoundary,u=r.altBoundary,d=r.padding,h=r.tether,m=void 0===h||h,v=r.tetherOffset,g=void 0===v?0:v,y=de(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),b=K(t.placement),x=J(t.placement),A=!x,w=Z(b),S="x"===w?"y":"x",k=t.modifiersData.popperOffsets,C=t.rects.reference,T=t.rects.popper,R="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,M="number"==typeof R?{mainAxis:R,altAxis:R}:Object.assign({mainAxis:0,altAxis:0},R),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(k){if(i){var j,D="y"===w?I:_,F="y"===w?N:$,B="y"===w?"height":"width",W=k[w],H=W+y[D],U=W-y[F],V=m?-T[B]/2:0,q=x===z?C[B]:T[B],X=x===z?-T[B]:-C[B],Y=t.elements.arrow,G=m&&Y?E(Y):{width:0,height:0},Q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=Q[D],te=Q[F],re=pe(0,C[B],G[B]),ne=A?C[B]/2-V-re-ee-M.mainAxis:q-re-ee-M.mainAxis,oe=A?-C[B]/2+V+re+te+M.mainAxis:X+re+te+M.mainAxis,ie=t.elements.arrow&&P(t.elements.arrow),ae=ie?"y"===w?ie.clientTop||0:ie.clientLeft||0:0,se=null!=(j=null==O?void 0:O[w])?j:0,le=W+oe-se,ce=pe(m?f(H,W+ne-se-ae):H,W,m?p(U,le):U);k[w]=ce,L[w]=ce-W}if(s){var ue,fe="x"===w?I:_,he="x"===w?N:$,me=k[S],ve="y"===S?"height":"width",ge=me+y[fe],ye=me-y[he],be=-1!==[I,_].indexOf(b),xe=null!=(ue=null==O?void 0:O[S])?ue:0,Ae=be?ge:me-C[ve]-T[ve]-xe+M.altAxis,we=be?me+C[ve]+T[ve]-xe-M.altAxis:ye,Se=m&&be?function(e,t,r){var n=pe(e,t,r);return n>r?r:n}(Ae,me,we):pe(m?Ae:ge,me,m?we:ye);k[S]=Se,L[S]=Se-me}t.modifiersData[n]=L}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,r=e.state,n=e.name,o=e.options,i=r.elements.arrow,a=r.modifiersData.popperOffsets,s=K(r.placement),l=Z(s),c=[_,$].indexOf(s)>=0?"height":"width";if(i&&a){var u=function(e,t){return ce("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:ue(e,j))}(o.padding,r),d=E(i),p="y"===l?I:_,f="y"===l?N:$,h=r.rects.reference[c]+r.rects.reference[l]-a[l]-r.rects.popper[c],m=a[l]-r.rects.reference[l],v=P(i),g=v?"y"===l?v.clientHeight||0:v.clientWidth||0:0,y=h/2-m/2,b=u[p],x=g-d[c]-u[f],A=g/2-d[c]/2+y,w=pe(b,A,x),S=l;r.modifiersData[n]=((t={})[S]=w,t.centerOffset=w-A,t)}},effect:function(e){var t=e.state,r=e.options.element,n=void 0===r?"[data-popper-arrow]":r;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&ae(t.elements.popper,n)&&(t.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=de(t,{elementContext:"reference"}),s=de(t,{altBoundary:!0}),l=fe(a,n),c=fe(s,o,i),u=he(l),d=he(c);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]}),ve=r(70799),ge=r(1045),ye=r(26993),be=r(55349),xe=r(69500);function Ae(e){return"function"==typeof e?e():e}const we={},Se=o.forwardRef((function(e,t){const{anchorEl:r,children:n,direction:s,disablePortal:l,modifiers:c,open:u,placement:d,popperOptions:p,popperRef:f,slotProps:h={},slots:m={},TransitionProps:v,ownerState:g,...y}=e,b=o.useRef(null),x=(0,i.A)(b,t),A=o.useRef(null),w=(0,i.A)(A,f),S=o.useRef(w);(0,a.A)((()=>{S.current=w}),[w]),o.useImperativeHandle(f,(()=>A.current),[]);const k=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(d,s),[E,C]=o.useState(k),[T,R]=o.useState(Ae(r));o.useEffect((()=>{A.current&&A.current.forceUpdate()})),o.useEffect((()=>{r&&R(Ae(r))}),[r]),(0,a.A)((()=>{if(!T||!u)return;let e=[{name:"preventOverflow",options:{altBoundary:l}},{name:"flip",options:{altBoundary:l}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{C(e.placement)}}];null!=c&&(e=e.concat(c)),p&&null!=p.modifiers&&(e=e.concat(p.modifiers));const t=me(T,b.current,{placement:k,...p,modifiers:e});return S.current(t),()=>{t.destroy(),S.current(null)}}),[T,l,c,u,p,k]);const M={placement:E};null!==v&&(M.TransitionProps=v);const O=(e=>{const{classes:t}=e;return(0,ve.A)({root:["root"]},be.b,t)})(e),P=m.root??"div",I=(0,ge.A)({elementType:P,externalSlotProps:h.root,externalForwardedProps:y,additionalProps:{role:"tooltip",ref:x},ownerState:e,className:O.root});return(0,xe.jsx)(P,{...I,children:"function"==typeof n?n(M):n})})),ke=o.forwardRef((function(e,t){const{anchorEl:r,children:n,container:i,direction:a="ltr",disablePortal:l=!1,keepMounted:c=!1,modifiers:u,open:d,placement:p="bottom",popperOptions:f=we,popperRef:h,style:m,transition:v=!1,slotProps:g={},slots:y={},...b}=e,[x,A]=o.useState(!0);if(!c&&!d&&(!v||x))return null;let w;if(i)w=i;else if(r){const e=Ae(r);w=e&&void 0!==e.nodeType?(0,s.A)(e).body:(0,s.A)(null).body}const S=d||!c||v&&!x?void 0:"none",k=v?{in:d,onEnter:()=>{A(!1)},onExited:()=>{A(!0)}}:void 0;return(0,xe.jsx)(ye.A,{disablePortal:l,container:w,children:(0,xe.jsx)(Se,{anchorEl:r,direction:a,disablePortal:l,modifiers:u,ref:t,open:v?!x:d,placement:p,popperOptions:f,popperRef:h,slotProps:g,slots:y,...b,style:{position:"fixed",top:0,left:0,display:S,...m},TransitionProps:k,children:n})})}));var Ee=r(51148),Ce=r(4785);const Te=(0,Ee.Ay)(ke,{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Re=o.forwardRef((function(e,t){const r=(0,n.I)(),o=(0,Ce.b)({props:e,name:"MuiPopper"}),{anchorEl:i,component:a,components:s,componentsProps:l,container:c,disablePortal:u,keepMounted:d,modifiers:p,open:f,placement:h,popperOptions:m,popperRef:v,transition:g,slots:y,slotProps:b,...x}=o,A=y?.root??s?.Root,w={anchorEl:i,container:c,disablePortal:u,keepMounted:d,modifiers:p,open:f,placement:h,popperOptions:m,popperRef:v,transition:g,...x};return(0,xe.jsx)(Te,{as:a,direction:r?"rtl":"ltr",slots:{root:A},slotProps:b??l,...w,ref:t})}))},55349:(e,t,r)=>{"use strict";r.d(t,{b:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiPopper",e)}(0,n.A)("MuiPopper",["root"])},26993:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(7552),o=r(28485),i=r(29527),a=r(28325),s=r(83933),l=r(21337),c=r(69500);const u=n.forwardRef((function(e,t){const{children:r,container:u,disablePortal:d=!1}=e,[p,f]=n.useState(null),h=(0,i.A)((0,a.A)(r),t);if((0,s.A)((()=>{d||f(function(e){return"function"==typeof e?e():e}(u)||document.body)}),[u,d]),(0,s.A)((()=>{if(p&&!d)return(0,l.A)(t,p),()=>{(0,l.A)(t,null)}}),[t,p,d]),d){if(n.isValidElement(r)){const e={ref:h};return n.cloneElement(r,e)}return(0,c.jsx)(n.Fragment,{children:r})}return(0,c.jsx)(n.Fragment,{children:p?o.createPortal(r,p):p})}))},2187:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(7552),o=r(93878),i=r(70799),a=r(51148),s=r(60129),l=r(4785),c=r(16179),u=r(11263),d=r(69500);const p=(0,a.Ay)("div",{name:"MuiScopedCssBaseline",slot:"Root",overridesResolver:(e,t)=>t.root})((0,s.A)((({theme:e})=>{const t={};return e.colorSchemes&&Object.entries(e.colorSchemes).forEach((([r,n])=>{const o=e.getColorSchemeSelector(r);o.startsWith("@")?t[o]={colorScheme:n.palette?.mode}:t[`&${o.replace(/\s*&/,"")}`]={colorScheme:n.palette?.mode}})),{...(0,c.qy)(e,!1),...(0,c.rf)(e),"& *, & *::before, & *::after":{boxSizing:"inherit"},"& strong, & b":{fontWeight:e.typography.fontWeightBold},variants:[{props:{enableColorScheme:!0},style:e.vars?t:{colorScheme:e.palette.mode}}]}}))),f=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiScopedCssBaseline"}),{className:n,component:a="div",enableColorScheme:s,...c}=r,f={...r,component:a},h=(e=>{const{classes:t}=e;return(0,i.A)({root:["root"]},u.r,t)})(f);return(0,d.jsx)(p,{as:a,className:(0,o.A)(h.root,n),ref:t,ownerState:f,...c})}))},11263:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,r:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiScopedCssBaseline",e)}const a=(0,n.A)("MuiScopedCssBaseline",["root"])},98360:(e,t,r)=>{"use strict";r.d(t,{A:()=>B});var n,o=r(7552),i=r(93878),a=r(78745),s=r(28325),l=r(51569),c=(r(19487),r(70799)),u=r(50089),d=r(6676),p=r(15622),f=r(2051),h=r(39923),m=r(53999),v=r(51148),g=r(36674),y=r(51584),b=r(77259),x=r(10613),A=r(69500);const w=(0,v.Ay)(h.y3,{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`&.${x.A.select}`]:t.select},{[`&.${x.A.select}`]:t[r.variant]},{[`&.${x.A.error}`]:t.error},{[`&.${x.A.multiple}`]:t.multiple}]}})({[`&.${x.A.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),S=(0,v.Ay)(h.nE,{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.icon,r.variant&&t[`icon${(0,p.A)(r.variant)}`],r.open&&t.iconOpen]}})({}),k=(0,v.Ay)("input",{shouldForwardProp:e=>(0,g.A)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function E(e,t){return"object"==typeof t&&null!==t?e===t:String(e)===String(t)}function C(e){return null==e||"string"==typeof e&&!e.trim()}const T=o.forwardRef((function(e,t){const{"aria-describedby":r,"aria-label":a,autoFocus:s,autoWidth:h,children:v,className:g,defaultOpen:T,defaultValue:R,disabled:M,displayEmpty:O,error:P=!1,IconComponent:I,inputRef:N,labelId:$,MenuProps:_={},multiple:L,name:j,onBlur:z,onChange:D,onClose:F,onFocus:B,onOpen:W,open:H,readOnly:U,renderValue:V,SelectDisplayProps:q={},tabIndex:X,type:Y,value:G,variant:K="standard",...J}=e,[Z,Q]=(0,b.A)({controlled:G,default:R,name:"Select"}),[ee,te]=(0,b.A)({controlled:H,default:T,name:"Select"}),re=o.useRef(null),ne=o.useRef(null),[oe,ie]=o.useState(null),{current:ae}=o.useRef(null!=H),[se,le]=o.useState(),ce=(0,y.A)(t,N),ue=o.useCallback((e=>{ne.current=e,e&&ie(e)}),[]),de=oe?.parentNode;o.useImperativeHandle(ce,(()=>({focus:()=>{ne.current.focus()},node:re.current,value:Z})),[Z]),o.useEffect((()=>{T&&ee&&oe&&!ae&&(le(h?null:de.clientWidth),ne.current.focus())}),[oe,h]),o.useEffect((()=>{s&&ne.current.focus()}),[s]),o.useEffect((()=>{if(!$)return;const e=(0,d.A)(ne.current).getElementById($);if(e){const t=()=>{getSelection().isCollapsed&&ne.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}}),[$]);const pe=(e,t)=>{e?W&&W(t):F&&F(t),ae||(le(h?null:de.clientWidth),te(e))},fe=o.Children.toArray(v),he=e=>t=>{let r;if(t.currentTarget.hasAttribute("tabindex")){if(L){r=Array.isArray(Z)?Z.slice():[];const t=Z.indexOf(e.props.value);-1===t?r.push(e.props.value):r.splice(t,1)}else r=e.props.value;if(e.props.onClick&&e.props.onClick(t),Z!==r&&(Q(r),D)){const n=t.nativeEvent||t,o=new n.constructor(n.type,n);Object.defineProperty(o,"target",{writable:!0,value:{value:r,name:j}}),D(o,e)}L||pe(!1,t)}},me=null!==oe&&ee;let ve,ge;delete J["aria-invalid"];const ye=[];let be=!1,xe=!1;((0,m.lq)({value:Z})||O)&&(V?ve=V(Z):be=!0);const Ae=fe.map((e=>{if(!o.isValidElement(e))return null;let t;if(L){if(!Array.isArray(Z))throw new Error((0,l.A)(2));t=Z.some((t=>E(t,e.props.value))),t&&be&&ye.push(e.props.children)}else t=E(Z,e.props.value),t&&be&&(ge=e.props.children);return t&&(xe=!0),o.cloneElement(e,{"aria-selected":t?"true":"false",onClick:he(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})}));be&&(ve=L?0===ye.length?null:ye.reduce(((e,t,r)=>(e.push(t),r<ye.length-1&&e.push(", "),e)),[]):ge);let we,Se=se;!h&&ae&&oe&&(Se=de.clientWidth),we=void 0!==X?X:M?null:0;const ke=q.id||(j?`mui-component-select-${j}`:void 0),Ee={...e,variant:K,value:Z,open:me,error:P},Ce=(e=>{const{classes:t,variant:r,disabled:n,multiple:o,open:i,error:a}=e,s={select:["select",r,n&&"disabled",o&&"multiple",a&&"error"],icon:["icon",`icon${(0,p.A)(r)}`,i&&"iconOpen",n&&"disabled"],nativeInput:["nativeInput"]};return(0,c.A)(s,x.T,t)})(Ee),Te={..._.PaperProps,..._.slotProps?.paper},Re=(0,u.A)();return(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)(w,{as:"div",ref:ue,tabIndex:we,role:"combobox","aria-controls":Re,"aria-disabled":M?"true":void 0,"aria-expanded":me?"true":"false","aria-haspopup":"listbox","aria-label":a,"aria-labelledby":[$,ke].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{U||[" ","ArrowUp","ArrowDown","Enter"].includes(e.key)&&(e.preventDefault(),pe(!0,e))},onMouseDown:M||U?null:e=>{0===e.button&&(e.preventDefault(),ne.current.focus(),pe(!0,e))},onBlur:e=>{!me&&z&&(Object.defineProperty(e,"target",{writable:!0,value:{value:Z,name:j}}),z(e))},onFocus:B,...q,ownerState:Ee,className:(0,i.A)(q.className,Ce.select,g),id:ke,children:C(ve)?n||(n=(0,A.jsx)("span",{className:"notranslate",children:"​"})):ve}),(0,A.jsx)(k,{"aria-invalid":P,value:Array.isArray(Z)?Z.join(","):Z,name:j,ref:re,"aria-hidden":!0,onChange:e=>{const t=fe.find((t=>t.props.value===e.target.value));void 0!==t&&(Q(t.props.value),D&&D(e,t))},tabIndex:-1,disabled:M,className:Ce.nativeInput,autoFocus:s,...J,ownerState:Ee}),(0,A.jsx)(S,{as:I,className:Ce.icon,ownerState:Ee}),(0,A.jsx)(f.A,{id:`menu-${j||""}`,anchorEl:de,open:me,onClose:e=>{pe(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},..._,MenuListProps:{"aria-labelledby":$,role:"listbox","aria-multiselectable":L?"true":void 0,disableListWrap:!0,id:Re,..._.MenuListProps},slotProps:{..._.slotProps,paper:{...Te,style:{minWidth:Se,...null!=Te?Te.style:null}}},children:Ae})]})}));var R=r(32498),M=r(33960),O=r(62646),P=r(60947),I=r(29287),N=r(28172),$=r(31049),_=r(55270);const L={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,_.A)(e)&&"variant"!==e,slot:"Root"},j=(0,v.Ay)(P.A,L)(""),z=(0,v.Ay)(N.A,L)(""),D=(0,v.Ay)(I.A,L)(""),F=o.forwardRef((function(e,t){const r=(0,$.A)({name:"MuiSelect",props:e}),{autoWidth:n=!1,children:l,classes:c={},className:u,defaultOpen:d=!1,displayEmpty:p=!1,IconComponent:f=O.A,id:m,input:v,inputProps:g,label:b,labelId:x,MenuProps:w,multiple:S=!1,native:k=!1,onClose:E,onOpen:C,open:P,renderValue:I,SelectDisplayProps:N,variant:_="outlined",...L}=r,F=k?h.Ay:T,B=(0,M.A)(),W=(0,R.A)({props:r,muiFormControl:B,states:["variant","error"]}),H=W.variant||_,U={...r,variant:H,classes:c},V=(e=>{const{classes:t}=e;return t})(U),{root:q,...X}=V,Y=v||{standard:(0,A.jsx)(j,{ownerState:U}),outlined:(0,A.jsx)(z,{label:b,ownerState:U}),filled:(0,A.jsx)(D,{ownerState:U})}[H],G=(0,y.A)(t,(0,s.A)(Y));return(0,A.jsx)(o.Fragment,{children:o.cloneElement(Y,{inputComponent:F,inputProps:{children:l,error:W.error,IconComponent:f,variant:H,type:void 0,multiple:S,...k?{id:m}:{autoWidth:n,defaultOpen:d,displayEmpty:p,labelId:x,MenuProps:w,onClose:E,onOpen:C,open:P,renderValue:I,SelectDisplayProps:{id:m,...N}},...g,classes:g?(0,a.A)(X,g.classes):X,...v?v.props.inputProps:{}},...(S&&k||p)&&"outlined"===H?{notched:!0}:{},ref:G,className:(0,i.A)(Y.props.className,u,V.root),...!v&&{variant:H},...L})})}));F.muiName="Select";const B=F},10613:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,T:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiSelect",e)}const a=(0,n.A)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"])},77005:(e,t,r)=>{"use strict";r.d(t,{d6:()=>V,xO:()=>q,Ww:()=>B,g1:()=>F,OQ:()=>H,hB:()=>W,nx:()=>U,Ay:()=>G});var n=r(7552),o=r(93878),i=r(70799),a=r(72639),s=r(93876),l=r(1045),c=r(99305),u=r(97609),d=r(93801),p=r(29527),f=r(91527),h=r(83933),m=r(89887),v=r(25649),g=r(29091);function y(e,t){return e-t}function b(e,t){const{index:r}=e.reduce(((e,r,n)=>{const o=Math.abs(t-r);return null===e||o<e.distance||o===e.distance?{distance:o,index:n}:e}),null)??{};return r}function x(e,t){if(void 0!==t.current&&e.changedTouches){const r=e;for(let e=0;e<r.changedTouches.length;e+=1){const n=r.changedTouches[e];if(n.identifier===t.current)return{x:n.clientX,y:n.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function A(e,t,r){return 100*(e-t)/(r-t)}function w({values:e,newValue:t,index:r}){const n=e.slice();return n[r]=t,n.sort(y)}function S({sliderRef:e,activeIndex:t,setActive:r}){const n=(0,c.A)(e.current);e.current?.contains(n.activeElement)&&Number(n?.activeElement?.getAttribute("data-index"))===t||e.current?.querySelector(`[type="range"][data-index="${t}"]`).focus(),r&&r(t)}function k(e,t){return"number"==typeof e&&"number"==typeof t?e===t:"object"==typeof e&&"object"==typeof t&&function(e,t,r=(e,t)=>e===t){return e.length===t.length&&e.every(((e,n)=>r(e,t[n])))}(e,t)}const E={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},C=e=>e;let T;function R(){return void 0===T&&(T="undefined"==typeof CSS||"function"!=typeof CSS.supports||CSS.supports("touch-action","none")),T}function M(e){const{"aria-labelledby":t,defaultValue:r,disabled:o=!1,disableSwap:i=!1,isRtl:a=!1,marks:s=!1,max:l=100,min:T=0,name:M,onChange:O,onChangeCommitted:P,orientation:I="horizontal",rootRef:N,scale:$=C,step:_=1,shiftStep:L=10,tabIndex:j,value:z}=e,D=n.useRef(void 0),[F,B]=n.useState(-1),[W,H]=n.useState(-1),[U,V]=n.useState(!1),q=n.useRef(0),[X,Y]=(0,u.A)({controlled:z,default:r??T,name:"Slider"}),G=O&&((e,t,r)=>{const n=e.nativeEvent||e,o=new n.constructor(n.type,n);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:M}}),O(o,t,r)}),K=Array.isArray(X);let J=K?X.slice().sort(y):[X];J=J.map((e=>null==e?T:(0,d.A)(e,T,l)));const Z=!0===s&&null!==_?[...Array(Math.floor((l-T)/_)+1)].map(((e,t)=>({value:T+_*t}))):s||[],Q=Z.map((e=>e.value)),[ee,te]=n.useState(-1),re=n.useRef(null),ne=(0,p.A)(N,re),oe=e=>t=>{const r=Number(t.currentTarget.getAttribute("data-index"));(0,f.A)(t.target)&&te(r),H(r),e?.onFocus?.(t)},ie=e=>t=>{(0,f.A)(t.target)||te(-1),H(-1),e?.onBlur?.(t)},ae=(e,t)=>{const r=Number(e.currentTarget.getAttribute("data-index")),n=J[r],o=Q.indexOf(n);let a=t;if(Z&&null==_){const e=Q[Q.length-1];a=a>e?e:a<Q[0]?Q[0]:a<n?Q[o-1]:Q[o+1]}if(a=(0,d.A)(a,T,l),K){i&&(a=(0,d.A)(a,J[r-1]||-1/0,J[r+1]||1/0));const e=a;a=w({values:J,newValue:a,index:r});let t=r;i||(t=a.indexOf(e)),S({sliderRef:re,activeIndex:t})}Y(a),te(r),G&&!k(a,X)&&G(e,a,r),P&&P(e,a)},se=e=>t=>{if(null!==_){const e=Number(t.currentTarget.getAttribute("data-index")),r=J[e];let n=null;("ArrowLeft"===t.key||"ArrowDown"===t.key)&&t.shiftKey||"PageDown"===t.key?n=Math.max(r-L,T):(("ArrowRight"===t.key||"ArrowUp"===t.key)&&t.shiftKey||"PageUp"===t.key)&&(n=Math.min(r+L,l)),null!==n&&(ae(t,n),t.preventDefault())}e?.onKeyDown?.(t)};(0,h.A)((()=>{o&&re.current.contains(document.activeElement)&&document.activeElement?.blur()}),[o]),o&&-1!==F&&B(-1),o&&-1!==ee&&te(-1);const le=n.useRef(void 0);let ce=I;a&&"horizontal"===I&&(ce+="-reverse");const ue=({finger:e,move:t=!1})=>{const{current:r}=re,{width:n,height:o,bottom:a,left:s}=r.getBoundingClientRect();let c,u;if(c=ce.startsWith("vertical")?(a-e.y)/o:(e.x-s)/n,ce.includes("-reverse")&&(c=1-c),u=function(e,t,r){return(r-t)*e+t}(c,T,l),_)u=function(e,t,r){const n=Math.round((e-r)/t)*t+r;return Number(n.toFixed(function(e){if(Math.abs(e)<1){const t=e.toExponential().split("e-"),r=t[0].split(".")[1];return(r?r.length:0)+parseInt(t[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}(t)))}(u,_,T);else{const e=b(Q,u);u=Q[e]}u=(0,d.A)(u,T,l);let p=0;if(K){p=t?le.current:b(J,u),i&&(u=(0,d.A)(u,J[p-1]||-1/0,J[p+1]||1/0));const e=u;u=w({values:J,newValue:u,index:p}),i&&t||(p=u.indexOf(e),le.current=p)}return{newValue:u,activeIndex:p}},de=(0,m.A)((e=>{const t=x(e,D);if(!t)return;if(q.current+=1,"mousemove"===e.type&&0===e.buttons)return void pe(e);const{newValue:r,activeIndex:n}=ue({finger:t,move:!0});S({sliderRef:re,activeIndex:n,setActive:B}),Y(r),!U&&q.current>2&&V(!0),G&&!k(r,X)&&G(e,r,n)})),pe=(0,m.A)((e=>{const t=x(e,D);if(V(!1),!t)return;const{newValue:r}=ue({finger:t,move:!0});B(-1),"touchend"===e.type&&H(-1),P&&P(e,r),D.current=void 0,he()})),fe=(0,m.A)((e=>{if(o)return;R()||e.preventDefault();const t=e.changedTouches[0];null!=t&&(D.current=t.identifier);const r=x(e,D);if(!1!==r){const{newValue:t,activeIndex:n}=ue({finger:r});S({sliderRef:re,activeIndex:n,setActive:B}),Y(t),G&&!k(t,X)&&G(e,t,n)}q.current=0;const n=(0,c.A)(re.current);n.addEventListener("touchmove",de,{passive:!0}),n.addEventListener("touchend",pe,{passive:!0})})),he=n.useCallback((()=>{const e=(0,c.A)(re.current);e.removeEventListener("mousemove",de),e.removeEventListener("mouseup",pe),e.removeEventListener("touchmove",de),e.removeEventListener("touchend",pe)}),[pe,de]);n.useEffect((()=>{const{current:e}=re;return e.addEventListener("touchstart",fe,{passive:R()}),()=>{e.removeEventListener("touchstart",fe),he()}}),[he,fe]),n.useEffect((()=>{o&&he()}),[o,he]);const me=A(K?J[0]:T,T,l),ve=A(J[J.length-1],T,l)-me,ge=e=>t=>{e.onMouseLeave?.(t),H(-1)};return{active:F,axis:ce,axisProps:E,dragging:U,focusedThumbIndex:ee,getHiddenInputProps:(r={})=>{const n=(0,g.A)(r),i={onChange:(s=n||{},e=>{s.onChange?.(e),ae(e,e.target.valueAsNumber)}),onFocus:oe(n||{}),onBlur:ie(n||{}),onKeyDown:se(n||{})};var s;const c={...n,...i};return{tabIndex:j,"aria-labelledby":t,"aria-orientation":I,"aria-valuemax":$(l),"aria-valuemin":$(T),name:M,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":e.step??void 0,disabled:o,...r,...c,style:{...v.A,direction:a?"rtl":"ltr",width:"100%",height:"100%"}}},getRootProps:(e={})=>{const t=(0,g.A)(e),r={onMouseDown:(n=t||{},e=>{if(n.onMouseDown?.(e),o)return;if(e.defaultPrevented)return;if(0!==e.button)return;e.preventDefault();const t=x(e,D);if(!1!==t){const{newValue:r,activeIndex:n}=ue({finger:t});S({sliderRef:re,activeIndex:n,setActive:B}),Y(r),G&&!k(r,X)&&G(e,r,n)}q.current=0;const r=(0,c.A)(re.current);r.addEventListener("mousemove",de,{passive:!0}),r.addEventListener("mouseup",pe)})};var n;const i={...t,...r};return{...e,ref:ne,...i}},getThumbProps:(e={})=>{const t=(0,g.A)(e),r={onMouseOver:(n=t||{},e=>{n.onMouseOver?.(e);const t=Number(e.currentTarget.getAttribute("data-index"));H(t)}),onMouseLeave:ge(t||{})};var n;return{...e,...t,...r}},marks:Z,open:W,range:K,rootRef:ne,trackLeap:ve,trackOffset:me,values:J,getThumbStyle:e=>({pointerEvents:-1!==F&&F!==e?"none":void 0})}}var O=r(23879),P=r(51148),I=r(60129),N=r(4785),$=r(36674);var _=r(15622),L=r(58520),j=r(19951),z=r(69500);function D(e){return e}const F=(0,P.Ay)("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`color${(0,_.A)(r.color)}`],"medium"!==r.size&&t[`size${(0,_.A)(r.size)}`],r.marked&&t.marked,"vertical"===r.orientation&&t.vertical,"inverted"===r.track&&t.trackInverted,!1===r.track&&t.trackFalse]}})((0,I.A)((({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${j.A.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${j.A.dragging}`]:{[`& .${j.A.thumb}, & .${j.A.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter((0,L.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]})))),B=(0,P.Ay)("span",{name:"MuiSlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),W=(0,P.Ay)("span",{name:"MuiSlider",slot:"Track",overridesResolver:(e,t)=>t.track})((0,I.A)((({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{border:"none"}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter((0,L.A)()).map((([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:(0,a.a)(e.palette[t].main,.62),borderColor:(0,a.a)(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:(0,a.e$)(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:(0,a.e$)(e.palette[t].main,.5)})}}})))]})))),H=(0,P.Ay)("span",{name:"MuiSlider",slot:"Thumb",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.thumb,t[`thumbColor${(0,_.A)(r.color)}`],"medium"!==r.size&&t[`thumbSize${(0,_.A)(r.size)}`]]}})((0,I.A)((({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${j.A.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter((0,L.A)()).map((([t])=>({props:{color:t},style:{[`&:hover, &.${j.A.focusVisible}`]:{...e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${(0,a.X4)(e.palette[t].main,.16)}`},"@media (hover: none)":{boxShadow:"none"}},[`&.${j.A.active}`]:{...e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${(0,a.X4)(e.palette[t].main,.16)}`}}}})))]})))),U=(0,P.Ay)((function(e){const{children:t,className:r,value:i}=e,a=(e=>{const{open:t}=e;return{offset:(0,o.A)(t&&j.A.valueLabelOpen),circle:j.A.valueLabelCircle,label:j.A.valueLabelLabel}})(e);return t?n.cloneElement(t,{className:(0,o.A)(t.props.className)},(0,z.jsxs)(n.Fragment,{children:[t.props.children,(0,z.jsx)("span",{className:(0,o.A)(a.offset,r),"aria-hidden":!0,children:(0,z.jsx)("span",{className:a.circle,children:(0,z.jsx)("span",{className:a.label,children:i})})})]})):null}),{name:"MuiSlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})((0,I.A)((({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${j.A.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${j.A.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]})))),V=(0,P.Ay)("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>(0,$.A)(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:r}=e;return[t.mark,r&&t.markActive]}})((0,I.A)((({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]})))),q=(0,P.Ay)("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>(0,$.A)(e)&&"markLabelActive"!==e,overridesResolver:(e,t)=>t.markLabel})((0,I.A)((({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]})))),X=({children:e})=>e,Y=n.forwardRef((function(e,t){const r=(0,N.b)({props:e,name:"MuiSlider"}),a=(0,s.I)(),{"aria-label":c,"aria-valuetext":u,"aria-labelledby":d,component:p="span",components:f={},componentsProps:h={},color:m="primary",classes:v,className:g,disableSwap:y=!1,disabled:b=!1,getAriaLabel:x,getAriaValueText:w,marks:S=!1,max:k=100,min:E=0,name:C,onChange:T,onChangeCommitted:R,orientation:P="horizontal",shiftStep:I=10,size:$="medium",step:L=1,scale:Y=D,slotProps:G,slots:K,tabIndex:J,track:Z="normal",value:Q,valueLabelDisplay:ee="off",valueLabelFormat:te=D,...re}=r,ne={...r,isRtl:a,max:k,min:E,classes:v,disabled:b,disableSwap:y,orientation:P,marks:S,color:m,size:$,step:L,shiftStep:I,scale:Y,track:Z,valueLabelDisplay:ee,valueLabelFormat:te},{axisProps:oe,getRootProps:ie,getHiddenInputProps:ae,getThumbProps:se,open:le,active:ce,axis:ue,focusedThumbIndex:de,range:pe,dragging:fe,marks:he,values:me,trackOffset:ve,trackLeap:ge,getThumbStyle:ye}=M({...ne,rootRef:t});ne.marked=he.length>0&&he.some((e=>e.label)),ne.dragging=fe,ne.focusedThumbIndex=de;const be=(e=>{const{disabled:t,dragging:r,marked:n,orientation:o,track:a,classes:s,color:l,size:c}=e,u={root:["root",t&&"disabled",r&&"dragging",n&&"marked","vertical"===o&&"vertical","inverted"===a&&"trackInverted",!1===a&&"trackFalse",l&&`color${(0,_.A)(l)}`,c&&`size${(0,_.A)(c)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled",c&&`thumbSize${(0,_.A)(c)}`,l&&`thumbColor${(0,_.A)(l)}`],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]};return(0,i.A)(u,j.W,s)})(ne),xe=K?.root??f.Root??F,Ae=K?.rail??f.Rail??B,we=K?.track??f.Track??W,Se=K?.thumb??f.Thumb??H,ke=K?.valueLabel??f.ValueLabel??U,Ee=K?.mark??f.Mark??V,Ce=K?.markLabel??f.MarkLabel??q,Te=K?.input??f.Input??"input",Re=G?.root??h.root,Me=G?.rail??h.rail,Oe=G?.track??h.track,Pe=G?.thumb??h.thumb,Ie=G?.valueLabel??h.valueLabel,Ne=G?.mark??h.mark,$e=G?.markLabel??h.markLabel,_e=G?.input??h.input,Le=(0,l.A)({elementType:xe,getSlotProps:ie,externalSlotProps:Re,externalForwardedProps:re,additionalProps:{...(Ue=xe,(!Ue||!(0,O.A)(Ue))&&{as:p})},ownerState:{...ne,...Re?.ownerState},className:[be.root,g]}),je=(0,l.A)({elementType:Ae,externalSlotProps:Me,ownerState:ne,className:be.rail}),ze=(0,l.A)({elementType:we,externalSlotProps:Oe,additionalProps:{style:{...oe[ue].offset(ve),...oe[ue].leap(ge)}},ownerState:{...ne,...Oe?.ownerState},className:be.track}),De=(0,l.A)({elementType:Se,getSlotProps:se,externalSlotProps:Pe,ownerState:{...ne,...Pe?.ownerState},className:be.thumb}),Fe=(0,l.A)({elementType:ke,externalSlotProps:Ie,ownerState:{...ne,...Ie?.ownerState},className:be.valueLabel}),Be=(0,l.A)({elementType:Ee,externalSlotProps:Ne,ownerState:ne,className:be.mark}),We=(0,l.A)({elementType:Ce,externalSlotProps:$e,ownerState:ne,className:be.markLabel}),He=(0,l.A)({elementType:Te,getSlotProps:ae,externalSlotProps:_e,ownerState:ne});var Ue;return(0,z.jsxs)(xe,{...Le,children:[(0,z.jsx)(Ae,{...je}),(0,z.jsx)(we,{...ze}),he.filter((e=>e.value>=E&&e.value<=k)).map(((e,t)=>{const r=A(e.value,E,k),i=oe[ue].offset(r);let a;return a=!1===Z?me.includes(e.value):"normal"===Z&&(pe?e.value>=me[0]&&e.value<=me[me.length-1]:e.value<=me[0])||"inverted"===Z&&(pe?e.value<=me[0]||e.value>=me[me.length-1]:e.value>=me[0]),(0,z.jsxs)(n.Fragment,{children:[(0,z.jsx)(Ee,{"data-index":t,...Be,...!(0,O.A)(Ee)&&{markActive:a},style:{...i,...Be.style},className:(0,o.A)(Be.className,a&&be.markActive)}),null!=e.label?(0,z.jsx)(Ce,{"aria-hidden":!0,"data-index":t,...We,...!(0,O.A)(Ce)&&{markLabelActive:a},style:{...i,...We.style},className:(0,o.A)(be.markLabel,We.className,a&&be.markLabelActive),children:e.label}):null]},t)})),me.map(((e,t)=>{const r=A(e,E,k),n=oe[ue].offset(r),i="off"===ee?X:ke;return(0,z.jsx)(i,{...!(0,O.A)(i)&&{valueLabelFormat:te,valueLabelDisplay:ee,value:"function"==typeof te?te(Y(e),t):te,index:t,open:le===t||ce===t||"on"===ee,disabled:b},...Fe,children:(0,z.jsx)(Se,{"data-index":t,...De,className:(0,o.A)(be.thumb,De.className,ce===t&&be.active,de===t&&be.focusVisible),style:{...n,...ye(t),...De.style},children:(0,z.jsx)(Te,{"data-index":t,"aria-label":x?x(t):c,"aria-valuenow":Y(e),"aria-labelledby":d,"aria-valuetext":w?w(Y(e),t):u,value:me[t],...He})})},t)}))]})})),G=Y},19951:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,W:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiSlider",e)}const a=(0,n.A)("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","thumbColorPrimary","thumbColorSecondary","thumbColorError","thumbColorSuccess","thumbColorInfo","thumbColorWarning","track","trackInverted","trackFalse","thumbSizeSmall","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"])},2859:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(7552),o=r(93878),i=r(70799),a=r(15622),s=r(51148),l=r(60129),c=r(4785),u=r(92703),d=r(69500);const p=(0,s.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"inherit"!==r.color&&t[`color${(0,a.A)(r.color)}`],t[`fontSize${(0,a.A)(r.fontSize)}`]]}})((0,l.A)((({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter((([,e])=>e&&e.main)).map((([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}}))),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]})))),f=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiSvgIcon"}),{children:s,className:l,color:f="inherit",component:h="svg",fontSize:m="medium",htmlColor:v,inheritViewBox:g=!1,titleAccess:y,viewBox:b="0 0 24 24",...x}=r,A=n.isValidElement(s)&&"svg"===s.type,w={...r,color:f,component:h,fontSize:m,instanceFontSize:e.fontSize,inheritViewBox:g,viewBox:b,hasSvgAsChild:A},S={};g||(S.viewBox=b);const k=(e=>{const{color:t,fontSize:r,classes:n}=e,o={root:["root","inherit"!==t&&`color${(0,a.A)(t)}`,`fontSize${(0,a.A)(r)}`]};return(0,i.A)(o,u.E,n)})(w);return(0,d.jsxs)(p,{as:h,className:(0,o.A)(k.root,l),focusable:"false",color:v,"aria-hidden":!y||void 0,role:y?"img":void 0,ref:t,...S,...x,...A&&s.props,ownerState:w,children:[A?s.props.children:s,y?(0,d.jsx)("title",{children:y}):null]})}));f&&(f.muiName="SvgIcon");const h=f},92703:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,E:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiSvgIcon",e)}const a=(0,n.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"])},1343:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(7552),o=r(93878),i=r(70799),a=r(50089),s=r(51148),l=r(4785),c=r(60947),u=r(29287),d=r(28172),p=r(17125),f=r(48171),h=r(25467),m=r(98360),v=r(96555),g=r(43045),y=r(69500);const b={standard:c.A,filled:u.A,outlined:d.A},x=(0,s.Ay)(f.A,{name:"MuiTextField",slot:"Root",overridesResolver:(e,t)=>t.root})({}),A=n.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiTextField"}),{autoComplete:n,autoFocus:s=!1,children:c,className:u,color:d="primary",defaultValue:f,disabled:A=!1,error:w=!1,FormHelperTextProps:S,fullWidth:k=!1,helperText:E,id:C,InputLabelProps:T,inputProps:R,InputProps:M,inputRef:O,label:P,maxRows:I,minRows:N,multiline:$=!1,name:_,onBlur:L,onChange:j,onFocus:z,placeholder:D,required:F=!1,rows:B,select:W=!1,SelectProps:H,slots:U={},slotProps:V={},type:q,value:X,variant:Y="outlined",...G}=r,K={...r,autoFocus:s,color:d,disabled:A,error:w,fullWidth:k,multiline:$,required:F,select:W,variant:Y},J=(e=>{const{classes:t}=e;return(0,i.A)({root:["root"]},v._,t)})(K),Z=(0,a.A)(C),Q=E&&Z?`${Z}-helper-text`:void 0,ee=P&&Z?`${Z}-label`:void 0,te=b[Y],re={slots:U,slotProps:{input:M,inputLabel:T,htmlInput:R,formHelperText:S,select:H,...V}},ne={},oe=re.slotProps.inputLabel;"outlined"===Y&&(oe&&void 0!==oe.shrink&&(ne.notched=oe.shrink),ne.label=P),W&&(H&&H.native||(ne.id=void 0),ne["aria-describedby"]=void 0);const[ie,ae]=(0,g.A)("input",{elementType:te,externalForwardedProps:re,additionalProps:ne,ownerState:K}),[se,le]=(0,g.A)("inputLabel",{elementType:p.A,externalForwardedProps:re,ownerState:K}),[ce,ue]=(0,g.A)("htmlInput",{elementType:"input",externalForwardedProps:re,ownerState:K}),[de,pe]=(0,g.A)("formHelperText",{elementType:h.A,externalForwardedProps:re,ownerState:K}),[fe,he]=(0,g.A)("select",{elementType:m.A,externalForwardedProps:re,ownerState:K}),me=(0,y.jsx)(ie,{"aria-describedby":Q,autoComplete:n,autoFocus:s,defaultValue:f,fullWidth:k,multiline:$,name:_,rows:B,maxRows:I,minRows:N,type:q,value:X,id:Z,inputRef:O,onBlur:L,onChange:j,onFocus:z,placeholder:D,inputProps:ue,slots:{input:U.htmlInput?ce:void 0},...ae});return(0,y.jsxs)(x,{className:(0,o.A)(J.root,u),disabled:A,error:w,fullWidth:k,ref:t,required:F,color:d,variant:Y,ownerState:K,...G,children:[null!=P&&""!==P&&(0,y.jsx)(se,{htmlFor:Z,id:ee,...le,children:P}),W?(0,y.jsx)(fe,{"aria-describedby":Q,id:Z,labelId:ee,value:X,input:me,...he,children:c}):me,E&&(0,y.jsx)(de,{id:Q,...pe,children:E})]})}))},96555:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,_:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiTextField",e)}const a=(0,n.A)("MuiTextField",["root"])},26549:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),o=r(29527),i=r(16849),a=r(83933),s=r(86949),l=r(69500);function c(e){return parseInt(e,10)||0}const u={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"},d=n.forwardRef((function(e,t){const{onChange:r,maxRows:d,minRows:p=1,style:f,value:h,...m}=e,{current:v}=n.useRef(null!=h),g=n.useRef(null),y=(0,o.A)(t,g),b=n.useRef(null),x=n.useRef(null),A=n.useCallback((()=>{const t=g.current,r=(0,i.A)(t).getComputedStyle(t);if("0px"===r.width)return{outerHeightStyle:0,overflowing:!1};const n=x.current;n.style.width=r.width,n.value=t.value||e.placeholder||"x","\n"===n.value.slice(-1)&&(n.value+=" ");const o=r.boxSizing,a=c(r.paddingBottom)+c(r.paddingTop),s=c(r.borderBottomWidth)+c(r.borderTopWidth),l=n.scrollHeight;n.value="x";const u=n.scrollHeight;let f=l;return p&&(f=Math.max(Number(p)*u,f)),d&&(f=Math.min(Number(d)*u,f)),f=Math.max(f,u),{outerHeightStyle:f+("border-box"===o?a+s:0),overflowing:Math.abs(f-l)<=1}}),[d,p,e.placeholder]),w=n.useCallback((()=>{const e=A();if(null==(t=e)||0===Object.keys(t).length||0===t.outerHeightStyle&&!t.overflowing)return;var t;const r=e.outerHeightStyle,n=g.current;b.current!==r&&(b.current=r,n.style.height=`${r}px`),n.style.overflow=e.overflowing?"hidden":""}),[A]);return(0,a.A)((()=>{const e=()=>{w()};const t=(0,s.A)(e),r=g.current,n=(0,i.A)(r);let o;return n.addEventListener("resize",t),"undefined"!=typeof ResizeObserver&&(o=new ResizeObserver(e),o.observe(r)),()=>{t.clear(),cancelAnimationFrame(undefined),n.removeEventListener("resize",t),o&&o.disconnect()}}),[A,w]),(0,a.A)((()=>{w()})),(0,l.jsxs)(n.Fragment,{children:[(0,l.jsx)("textarea",{value:h,onChange:e=>{v||w(),r&&r(e)},ref:y,rows:p,style:f,...m}),(0,l.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:x,tabIndex:-1,style:{...u,...f,paddingTop:0,paddingBottom:0}})]})}))},82620:(e,t,r)=>{"use strict";r.d(t,{A:()=>x});var n=r(7552),o=r(93878),i=r(80007),a=r(70799),s=r(72639),l=r(48054),c=r(15622),u=r(51148),d=r(60129),p=r(58520),f=r(4785),h=r(72225),m=r(88996),v=r(6832);function g(e,t){return void 0!==t&&void 0!==e&&(Array.isArray(t)?t.includes(e):e===t)}var y=r(69500);const b=(0,u.Ay)(l.A,{name:"MuiToggleButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`size${(0,c.A)(r.size)}`]]}})((0,d.A)((({theme:e})=>({...e.typography.button,borderRadius:(e.vars||e).shape.borderRadius,padding:11,border:`1px solid ${(e.vars||e).palette.divider}`,color:(e.vars||e).palette.action.active,[`&.${h.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"&:hover":{textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[{props:{color:"standard"},style:{[`&.${h.A.selected}`]:{color:(e.vars||e).palette.text.primary,backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette.text.primary,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,s.X4)(e.palette.text.primary,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette.text.primary,e.palette.action.selectedOpacity)}}}}},...Object.entries(e.palette).filter((0,p.A)()).map((([t])=>({props:{color:t},style:{[`&.${h.A.selected}`]:{color:(e.vars||e).palette[t].main,backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,s.X4)(e.palette[t].main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.selectedOpacity)}}}}}))),{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{padding:7,fontSize:e.typography.pxToRem(13)}},{props:{size:"large"},style:{padding:15,fontSize:e.typography.pxToRem(15)}}]})))),x=n.forwardRef((function(e,t){const{value:r,...s}=n.useContext(m.A),l=n.useContext(v.A),u=(0,i.A)({...s,selected:g(e.value,r)},e),d=(0,f.b)({props:u,name:"MuiToggleButton"}),{children:p,className:x,color:A="standard",disabled:w=!1,disableFocusRipple:S=!1,fullWidth:k=!1,onChange:E,onClick:C,selected:T,size:R="medium",value:M,...O}=d,P={...d,color:A,disabled:w,disableFocusRipple:S,fullWidth:k,size:R},I=(e=>{const{classes:t,fullWidth:r,selected:n,disabled:o,size:i,color:s}=e,l={root:["root",n&&"selected",o&&"disabled",r&&"fullWidth",`size${(0,c.A)(i)}`,s]};return(0,a.A)(l,h.J,t)})(P),N=l||"";return(0,y.jsx)(b,{className:(0,o.A)(s.className,I.root,x,N),disabled:w,focusRipple:!S,ref:t,onClick:e=>{C&&(C(e,M),e.defaultPrevented)||E&&E(e,M)},onChange:E,value:M,ownerState:P,"aria-pressed":T,...O,children:p})}))},72225:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,J:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiToggleButton",e)}const a=(0,n.A)("MuiToggleButton",["root","disabled","selected","standard","primary","secondary","sizeSmall","sizeMedium","sizeLarge","fullWidth"])},43787:(e,t,r)=>{"use strict";r.d(t,{A:()=>g});var n=r(7552),o=(r(19487),r(93878)),i=r(70799),a=r(27921),s=r(51148),l=r(60129),c=r(4785),u=r(15622),d=r(67647),p=r(88996),f=r(6832),h=r(72225),m=r(69500);const v=(0,s.Ay)("div",{name:"MuiToggleButtonGroup",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${d.A.grouped}`]:t.grouped},{[`& .${d.A.grouped}`]:t[`grouped${(0,u.A)(r.orientation)}`]},{[`& .${d.A.firstButton}`]:t.firstButton},{[`& .${d.A.lastButton}`]:t.lastButton},{[`& .${d.A.middleButton}`]:t.middleButton},t.root,"vertical"===r.orientation&&t.vertical,r.fullWidth&&t.fullWidth]}})((0,l.A)((({theme:e})=>({display:"inline-flex",borderRadius:(e.vars||e).shape.borderRadius,variants:[{props:{orientation:"vertical"},style:{flexDirection:"column",[`& .${d.A.grouped}`]:{[`&.${d.A.selected} + .${d.A.grouped}.${d.A.selected}`]:{borderTop:0,marginTop:0}},[`& .${d.A.firstButton},& .${d.A.middleButton}`]:{borderBottomLeftRadius:0,borderBottomRightRadius:0},[`& .${d.A.lastButton},& .${d.A.middleButton}`]:{marginTop:-1,borderTop:"1px solid transparent",borderTopLeftRadius:0,borderTopRightRadius:0},[`& .${d.A.lastButton}.${h.A.disabled},& .${d.A.middleButton}.${h.A.disabled}`]:{borderTop:"1px solid transparent"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{orientation:"horizontal"},style:{[`& .${d.A.grouped}`]:{[`&.${d.A.selected} + .${d.A.grouped}.${d.A.selected}`]:{borderLeft:0,marginLeft:0}},[`& .${d.A.firstButton},& .${d.A.middleButton}`]:{borderTopRightRadius:0,borderBottomRightRadius:0},[`& .${d.A.lastButton},& .${d.A.middleButton}`]:{marginLeft:-1,borderLeft:"1px solid transparent",borderTopLeftRadius:0,borderBottomLeftRadius:0},[`& .${d.A.lastButton}.${h.A.disabled},& .${d.A.middleButton}.${h.A.disabled}`]:{borderLeft:"1px solid transparent"}}}]})))),g=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiToggleButtonGroup"}),{children:s,className:l,color:h="standard",disabled:g=!1,exclusive:y=!1,fullWidth:b=!1,onChange:x,orientation:A="horizontal",size:w="medium",value:S,...k}=r,E={...r,disabled:g,fullWidth:b,orientation:A,size:w},C=(e=>{const{classes:t,orientation:r,fullWidth:n,disabled:o}=e,a={root:["root",r,n&&"fullWidth"],grouped:["grouped",`grouped${(0,u.A)(r)}`,o&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]};return(0,i.A)(a,d.y,t)})(E),T=n.useCallback(((e,t)=>{if(!x)return;const r=S&&S.indexOf(t);let n;S&&r>=0?(n=S.slice(),n.splice(r,1)):n=S?S.concat(t):[t],x(e,n)}),[x,S]),R=n.useCallback(((e,t)=>{x&&x(e,S===t?null:t)}),[x,S]),M=n.useMemo((()=>({className:C.grouped,onChange:y?R:T,value:S,size:w,fullWidth:b,color:h,disabled:g})),[C.grouped,y,R,T,S,w,b,h,g]),O=(0,a.A)(s),P=O.length,I=e=>{const t=0===e,r=e===P-1;return t&&r?"":t?C.firstButton:r?C.lastButton:C.middleButton};return(0,m.jsx)(v,{role:"group",className:(0,o.A)(C.root,l),ref:t,ownerState:E,...k,children:(0,m.jsx)(p.A.Provider,{value:M,children:O.map(((e,t)=>(0,m.jsx)(f.A.Provider,{value:I(t),children:e},t)))})})}))},6832:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext(void 0)},88996:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext({})},67647:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,y:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiToggleButtonGroup",e)}const a=(0,n.A)("MuiToggleButtonGroup",["root","selected","horizontal","vertical","disabled","grouped","groupedHorizontal","groupedVertical","fullWidth","firstButton","lastButton","middleButton"])},89003:(e,t,r)=>{"use strict";r.d(t,{A:()=>I});var n=r(7552),o=r(93878),i=r(26218),a=r(70799),s=r(72639),l=r(93876),c=r(91527),u=r(60622),d=r(28325),p=r(51148),f=r(48231),h=r(60129),m=r(4785),v=r(15622),g=r(4407),y=r(20350),b=r(87422),x=r(51584),A=r(89456),w=r(77259),S=r(23724),k=r(69500);const E=(0,p.Ay)(y.A,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.popper,!r.disableInteractive&&t.popperInteractive,r.arrow&&t.popperArrow,!r.open&&t.popperClose]}})((0,h.A)((({theme:e})=>({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:e})=>!e.disableInteractive,style:{pointerEvents:"auto"}},{props:({open:e})=>!e,style:{pointerEvents:"none"}},{props:({ownerState:e})=>e.arrow,style:{[`&[data-popper-placement*="bottom"] .${S.A.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${S.A.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${S.A.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${S.A.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="right"] .${S.A.arrow}`]:{left:0,marginLeft:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="right"] .${S.A.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="left"] .${S.A.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="left"] .${S.A.arrow}`]:{left:0,marginLeft:"-0.71em"}}}]})))),C=(0,p.Ay)("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.tooltip,r.touch&&t.touch,r.arrow&&t.tooltipArrow,t[`tooltipPlacement${(0,v.A)(r.placement.split("-")[0])}`]]}})((0,h.A)((({theme:e})=>{return{backgroundColor:e.vars?e.vars.palette.Tooltip.bg:(0,s.X4)(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium,[`.${S.A.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center"},[`.${S.A.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center"},[`.${S.A.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${S.A.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:e})=>e.arrow,style:{position:"relative",margin:0}},{props:({ownerState:e})=>e.touch,style:{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:(t=16/14,Math.round(1e5*t)/1e5+"em"),fontWeight:e.typography.fontWeightRegular}},{props:({ownerState:e})=>!e.isRtl,style:{[`.${S.A.popper}[data-popper-placement*="left"] &`]:{marginRight:"14px"},[`.${S.A.popper}[data-popper-placement*="right"] &`]:{marginLeft:"14px"}}},{props:({ownerState:e})=>!e.isRtl&&e.touch,style:{[`.${S.A.popper}[data-popper-placement*="left"] &`]:{marginRight:"24px"},[`.${S.A.popper}[data-popper-placement*="right"] &`]:{marginLeft:"24px"}}},{props:({ownerState:e})=>!!e.isRtl,style:{[`.${S.A.popper}[data-popper-placement*="left"] &`]:{marginLeft:"14px"},[`.${S.A.popper}[data-popper-placement*="right"] &`]:{marginRight:"14px"}}},{props:({ownerState:e})=>!!e.isRtl&&e.touch,style:{[`.${S.A.popper}[data-popper-placement*="left"] &`]:{marginLeft:"24px"},[`.${S.A.popper}[data-popper-placement*="right"] &`]:{marginRight:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${S.A.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${S.A.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]};var t}))),T=(0,p.Ay)("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(e,t)=>t.arrow})((0,h.A)((({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:(0,s.X4)(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}))));let R=!1;const M=new i.E;let O={x:0,y:0};function P(e,t){return(r,...n)=>{t&&t(r,...n),e(r,...n)}}const I=n.forwardRef((function(e,t){const r=(0,m.b)({props:e,name:"MuiTooltip"}),{arrow:s=!1,children:p,classes:h,components:I={},componentsProps:N={},describeChild:$=!1,disableFocusListener:_=!1,disableHoverListener:L=!1,disableInteractive:j=!1,disableTouchListener:z=!1,enterDelay:D=100,enterNextDelay:F=0,enterTouchDelay:B=700,followCursor:W=!1,id:H,leaveDelay:U=0,leaveTouchDelay:V=1500,onClose:q,onOpen:X,open:Y,placement:G="bottom",PopperComponent:K,PopperProps:J={},slotProps:Z={},slots:Q={},title:ee,TransitionComponent:te=g.A,TransitionProps:re,...ne}=r,oe=n.isValidElement(p)?p:(0,k.jsx)("span",{children:p}),ie=(0,f.A)(),ae=(0,l.I)(),[se,le]=n.useState(),[ce,ue]=n.useState(null),de=n.useRef(!1),pe=j||W,fe=(0,i.A)(),he=(0,i.A)(),me=(0,i.A)(),ve=(0,i.A)(),[ge,ye]=(0,w.A)({controlled:Y,default:!1,name:"Tooltip",state:"open"});let be=ge;const xe=(0,A.A)(H),Ae=n.useRef(),we=(0,b.A)((()=>{void 0!==Ae.current&&(document.body.style.WebkitUserSelect=Ae.current,Ae.current=void 0),ve.clear()}));n.useEffect((()=>we),[we]);const Se=e=>{M.clear(),R=!0,ye(!0),X&&!be&&X(e)},ke=(0,b.A)((e=>{M.start(800+U,(()=>{R=!1})),ye(!1),q&&be&&q(e),fe.start(ie.transitions.duration.shortest,(()=>{de.current=!1}))})),Ee=e=>{de.current&&"touchstart"!==e.type||(se&&se.removeAttribute("title"),he.clear(),me.clear(),D||R&&F?he.start(R?F:D,(()=>{Se(e)})):Se(e))},Ce=e=>{he.clear(),me.start(U,(()=>{ke(e)}))},[,Te]=n.useState(!1),Re=e=>{(0,c.A)(e.target)||(Te(!1),Ce(e))},Me=e=>{se||le(e.currentTarget),(0,c.A)(e.target)&&(Te(!0),Ee(e))},Oe=e=>{de.current=!0;const t=oe.props;t.onTouchStart&&t.onTouchStart(e)};n.useEffect((()=>{if(be)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){"Escape"===e.key&&ke(e)}}),[ke,be]);const Pe=(0,x.A)((0,d.A)(oe),le,t);ee||0===ee||(be=!1);const Ie=n.useRef(),Ne={},$e="string"==typeof ee;$?(Ne.title=be||!$e||L?null:ee,Ne["aria-describedby"]=be?xe:null):(Ne["aria-label"]=$e?ee:null,Ne["aria-labelledby"]=be&&!$e?xe:null);const _e={...Ne,...ne,...oe.props,className:(0,o.A)(ne.className,oe.props.className),onTouchStart:Oe,ref:Pe,...W?{onMouseMove:e=>{const t=oe.props;t.onMouseMove&&t.onMouseMove(e),O={x:e.clientX,y:e.clientY},Ie.current&&Ie.current.update()}}:{}},Le={};z||(_e.onTouchStart=e=>{Oe(e),me.clear(),fe.clear(),we(),Ae.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",ve.start(B,(()=>{document.body.style.WebkitUserSelect=Ae.current,Ee(e)}))},_e.onTouchEnd=e=>{oe.props.onTouchEnd&&oe.props.onTouchEnd(e),we(),me.start(V,(()=>{ke(e)}))}),L||(_e.onMouseOver=P(Ee,_e.onMouseOver),_e.onMouseLeave=P(Ce,_e.onMouseLeave),pe||(Le.onMouseOver=Ee,Le.onMouseLeave=Ce)),_||(_e.onFocus=P(Me,_e.onFocus),_e.onBlur=P(Re,_e.onBlur),pe||(Le.onFocus=Me,Le.onBlur=Re));const je=n.useMemo((()=>{let e=[{name:"arrow",enabled:Boolean(ce),options:{element:ce,padding:4}}];return J.popperOptions?.modifiers&&(e=e.concat(J.popperOptions.modifiers)),{...J.popperOptions,modifiers:e}}),[ce,J]),ze={...r,isRtl:ae,arrow:s,disableInteractive:pe,placement:G,PopperComponentProp:K,touch:de.current},De=(e=>{const{classes:t,disableInteractive:r,arrow:n,touch:o,placement:i}=e,s={popper:["popper",!r&&"popperInteractive",n&&"popperArrow"],tooltip:["tooltip",n&&"tooltipArrow",o&&"touch",`tooltipPlacement${(0,v.A)(i.split("-")[0])}`],arrow:["arrow"]};return(0,a.A)(s,S.E,t)})(ze),Fe=Q.popper??I.Popper??E,Be=Q.transition??I.Transition??te??g.A,We=Q.tooltip??I.Tooltip??C,He=Q.arrow??I.Arrow??T,Ue=(0,u.A)(Fe,{...J,...Z.popper??N.popper,className:(0,o.A)(De.popper,J?.className,(Z.popper??N.popper)?.className)},ze),Ve=(0,u.A)(Be,{...re,...Z.transition??N.transition},ze),qe=(0,u.A)(We,{...Z.tooltip??N.tooltip,className:(0,o.A)(De.tooltip,(Z.tooltip??N.tooltip)?.className)},ze),Xe=(0,u.A)(He,{...Z.arrow??N.arrow,className:(0,o.A)(De.arrow,(Z.arrow??N.arrow)?.className)},ze);return(0,k.jsxs)(n.Fragment,{children:[n.cloneElement(oe,_e),(0,k.jsx)(Fe,{as:K??y.A,placement:G,anchorEl:W?{getBoundingClientRect:()=>({top:O.y,left:O.x,right:O.x,bottom:O.y,width:0,height:0})}:se,popperRef:Ie,open:!!se&&be,id:xe,transition:!0,...Le,...Ue,popperOptions:je,children:({TransitionProps:e})=>(0,k.jsx)(Be,{timeout:ie.transitions.duration.shorter,...e,...Ve,children:(0,k.jsxs)(We,{...qe,children:[ee,s?(0,k.jsx)(He,{...Xe,ref:ue}):null]})})})]})}))},23724:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,E:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiTooltip",e)}const a=(0,n.A)("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"])},36715:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(7552),o=r(93878),i=r(70799),a=r(69743),s=r(51148),l=r(60129),c=r(4785),u=r(15622),d=r(58520),p=r(90175),f=r(69500);const h={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},m=(0,a.Dg)(),v=(0,s.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,u.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((0,l.A)((({theme:e})=>({margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(e.typography).filter((([e,t])=>"inherit"!==e&&t&&"object"==typeof t)).map((([e,t])=>({props:{variant:e},style:t}))),...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))),...Object.entries(e.palette?.text||{}).filter((([,e])=>"string"==typeof e)).map((([t])=>({props:{color:`text${(0,u.A)(t)}`},style:{color:(e.vars||e).palette.text[t]}}))),{props:({ownerState:e})=>"inherit"!==e.align,style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:e})=>e.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:e})=>e.gutterBottom,style:{marginBottom:"0.35em"}},{props:({ownerState:e})=>e.paragraph,style:{marginBottom:16}}]})))),g={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},y=n.forwardRef((function(e,t){const{color:r,...n}=(0,c.b)({props:e,name:"MuiTypography"}),a=m({...n,...!h[r]&&{color:r}}),{align:s="inherit",className:l,component:d,gutterBottom:y=!1,noWrap:b=!1,paragraph:x=!1,variant:A="body1",variantMapping:w=g,...S}=a,k={...a,align:s,color:r,className:l,component:d,gutterBottom:y,noWrap:b,paragraph:x,variant:A,variantMapping:w},E=d||(x?"p":w[A]||g[A])||"span",C=(e=>{const{align:t,gutterBottom:r,noWrap:n,paragraph:o,variant:a,classes:s}=e,l={root:["root",a,"inherit"!==e.align&&`align${(0,u.A)(t)}`,r&&"gutterBottom",n&&"noWrap",o&&"paragraph"]};return(0,i.A)(l,p.y,s)})(k);return(0,f.jsx)(v,{as:E,ref:t,className:(0,o.A)(C.root,l),...S,ownerState:k,style:{..."inherit"!==s&&{"--Typography-textAlign":s},...S.style}})}))},90175:(e,t,r)=>{"use strict";r.d(t,{A:()=>a,y:()=>i});var n=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiTypography",e)}const a=(0,n.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"])},61864:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),o=r(29527),i=r(28325),a=r(99305),s=r(69500);const l=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function c(e){const t=[],r=[];return Array.from(e.querySelectorAll(l)).forEach(((e,n)=>{const o=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==o&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let r=t(`[name="${e.name}"]:checked`);return r||(r=t(`[name="${e.name}"]`)),r!==e}(e))}(e)&&(0===o?t.push(e):r.push({documentOrder:n,tabIndex:o,node:e}))})),r.sort(((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex)).map((e=>e.node)).concat(t)}function u(){return!0}const d=function(e){const{children:t,disableAutoFocus:r=!1,disableEnforceFocus:l=!1,disableRestoreFocus:d=!1,getTabbable:p=c,isEnabled:f=u,open:h}=e,m=n.useRef(!1),v=n.useRef(null),g=n.useRef(null),y=n.useRef(null),b=n.useRef(null),x=n.useRef(!1),A=n.useRef(null),w=(0,o.A)((0,i.A)(t),A),S=n.useRef(null);n.useEffect((()=>{h&&A.current&&(x.current=!r)}),[r,h]),n.useEffect((()=>{if(!h||!A.current)return;const e=(0,a.A)(A.current);return A.current.contains(e.activeElement)||(A.current.hasAttribute("tabIndex")||A.current.setAttribute("tabIndex","-1"),x.current&&A.current.focus()),()=>{d||(y.current&&y.current.focus&&(m.current=!0,y.current.focus()),y.current=null)}}),[h]),n.useEffect((()=>{if(!h||!A.current)return;const e=(0,a.A)(A.current),t=t=>{S.current=t,!l&&f()&&"Tab"===t.key&&e.activeElement===A.current&&t.shiftKey&&(m.current=!0,g.current&&g.current.focus())},r=()=>{const t=A.current;if(null===t)return;if(!e.hasFocus()||!f()||m.current)return void(m.current=!1);if(t.contains(e.activeElement))return;if(l&&e.activeElement!==v.current&&e.activeElement!==g.current)return;if(e.activeElement!==b.current)b.current=null;else if(null!==b.current)return;if(!x.current)return;let r=[];if(e.activeElement!==v.current&&e.activeElement!==g.current||(r=p(A.current)),r.length>0){const e=Boolean(S.current?.shiftKey&&"Tab"===S.current?.key),t=r[0],n=r[r.length-1];"string"!=typeof t&&"string"!=typeof n&&(e?n.focus():t.focus())}else t.focus()};e.addEventListener("focusin",r),e.addEventListener("keydown",t,!0);const n=setInterval((()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&r()}),50);return()=>{clearInterval(n),e.removeEventListener("focusin",r),e.removeEventListener("keydown",t,!0)}}),[r,l,d,f,h,p]);const k=e=>{null===y.current&&(y.current=e.relatedTarget),x.current=!0};return(0,s.jsxs)(n.Fragment,{children:[(0,s.jsx)("div",{tabIndex:h?0:-1,onFocus:k,ref:v,"data-testid":"sentinelStart"}),n.cloneElement(t,{ref:w,onFocus:e=>{null===y.current&&(y.current=e.relatedTarget),x.current=!0,b.current=e.target;const r=t.props.onFocus;r&&r(e)}}),(0,s.jsx)("div",{tabIndex:h?0:-1,onFocus:k,ref:g,"data-testid":"sentinelEnd"})]})}},15110:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(7552),o=r(93878),i=r(70799),a=r(15622),s=r(55270),l=r(51148),c=r(77259),u=r(33960),d=r(48054),p=r(33761),f=r(85693);function h(e){return(0,f.Ay)("PrivateSwitchBase",e)}(0,p.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var m=r(69500);const v=(0,l.Ay)(d.A)({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>"start"===e&&"small"!==t.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>"end"===e&&"small"!==t.size,style:{marginRight:-12}}]}),g=(0,l.Ay)("input",{shouldForwardProp:s.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),y=n.forwardRef((function(e,t){const{autoFocus:r,checked:n,checkedIcon:s,className:l,defaultChecked:d,disabled:p,disableFocusRipple:f=!1,edge:y=!1,icon:b,id:x,inputProps:A,inputRef:w,name:S,onBlur:k,onChange:E,onFocus:C,readOnly:T,required:R=!1,tabIndex:M,type:O,value:P,...I}=e,[N,$]=(0,c.A)({controlled:n,default:Boolean(d),name:"SwitchBase",state:"checked"}),_=(0,u.A)();let L=p;_&&void 0===L&&(L=_.disabled);const j="checkbox"===O||"radio"===O,z={...e,checked:N,disabled:L,disableFocusRipple:f,edge:y},D=(e=>{const{classes:t,checked:r,disabled:n,edge:o}=e,s={root:["root",r&&"checked",n&&"disabled",o&&`edge${(0,a.A)(o)}`],input:["input"]};return(0,i.A)(s,h,t)})(z);return(0,m.jsxs)(v,{component:"span",className:(0,o.A)(D.root,l),centerRipple:!0,focusRipple:!f,disabled:L,tabIndex:null,role:void 0,onFocus:e=>{C&&C(e),_&&_.onFocus&&_.onFocus(e)},onBlur:e=>{k&&k(e),_&&_.onBlur&&_.onBlur(e)},ownerState:z,ref:t,...I,children:[(0,m.jsx)(g,{autoFocus:r,checked:n,defaultChecked:d,className:D.input,disabled:L,id:j?x:void 0,name:S,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;$(t),E&&E(e,t)},readOnly:T,ref:w,required:R,ownerState:z,tabIndex:M,type:O,..."checkbox"===O&&void 0===P?{}:{value:P},...A}),N?s:b]})}))},62646:(e,t,r)=>{"use strict";r.d(t,{A:()=>i}),r(7552);var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown")},68890:(e,t,r)=>{"use strict";r.d(t,{A:()=>i}),r(7552);var n=r(74893),o=r(69500);const i=(0,n.A)((0,o.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},20139:(e,t,r)=>{"use strict";r.d(t,{A:()=>l}),r(7552);var n=r(70034),o=r(74988),i=r(69500);function a({theme:e,...t}){const r=o.A in e?e[o.A]:void 0;return(0,i.jsx)(n.A,{...t,themeId:r?o.A:void 0,theme:r||e})}var s=r(22892);function l({theme:e,...t}){return"function"==typeof e?(0,i.jsx)(a,{theme:e,...t}):"colorSchemes"in(o.A in e?e[o.A]:e)?(0,i.jsx)(s.Zr,{theme:e,...t}):(0,i.jsx)(a,{theme:e,...t})}},22892:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>R,Gk:()=>E,Gs:()=>T,Ut:()=>S});var n=r(7552),o=r(76795),i=r(92104),a=r(57522),s=r(70034),l=r(69500);const c="mode",u="color-scheme",d="data-color-scheme";function p(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function f(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function h(e,t){if("undefined"==typeof window)return;let r;try{r=localStorage.getItem(e)||void 0,r||localStorage.setItem(e,t)}catch(e){}return r||t}var m=r(89022),v=r(34558),g=r(74988);const y="mui-color-scheme",b="light",x="dark",A="mui-mode",{CssVarsProvider:w,useColorScheme:S,getInitColorSchemeScript:k}=function(e){const{themeId:t,theme:r={},modeStorageKey:o=c,colorSchemeStorageKey:m=u,disableTransitionOnChange:v=!1,defaultColorScheme:g,resolveTheme:y}=e,b={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},x=n.createContext(void 0),A="string"==typeof g?g:g.light,w="string"==typeof g?g:g.dark;return{CssVarsProvider:function(e){const{children:d,theme:b,modeStorageKey:A=o,colorSchemeStorageKey:w=m,disableTransitionOnChange:S=v,storageWindow:k=("undefined"==typeof window?void 0:window),documentNode:E=("undefined"==typeof document?void 0:document),colorSchemeNode:C=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:T=!1,disableStyleSheetGeneration:R=!1}=e,M=n.useRef(!1),O=(0,a.A)(),P=n.useContext(x),I=!!P&&!T,N=n.useMemo((()=>b||("function"==typeof r?r():r)),[b]),$=N[t],{colorSchemes:_={},components:L={},cssVarPrefix:j,...z}=$||N,D=Object.keys(_).filter((e=>!!_[e])).join(","),F=n.useMemo((()=>D.split(",")),[D]),B="string"==typeof g?g:g.light,W="string"==typeof g?g:g.dark,H=_[B]&&_[W]?"system":_[z.defaultColorScheme]?.palette?.mode||z.palette?.mode,{mode:U,setMode:V,systemMode:q,lightColorScheme:X,darkColorScheme:Y,colorScheme:G,setColorScheme:K}=function(e){const{defaultMode:t="light",defaultLightColorScheme:r,defaultDarkColorScheme:o,supportedColorSchemes:i=[],modeStorageKey:a=c,colorSchemeStorageKey:s=u,storageWindow:l=("undefined"==typeof window?void 0:window)}=e,d=i.join(","),m=i.length>1,[v,g]=n.useState((()=>{const e=h(a,t),n=h(`${s}-light`,r),i=h(`${s}-dark`,o);return{mode:e,systemMode:p(e),lightColorScheme:n,darkColorScheme:i}})),[,y]=n.useState(!1),b=n.useRef(!1);n.useEffect((()=>{m&&y(!0),b.current=!0}),[m]);const x=function(e){return f(e,(t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0))}(v),A=n.useCallback((e=>{g((r=>{if(e===r.mode)return r;const n=e??t;try{localStorage.setItem(a,n)}catch(e){}return{...r,mode:n,systemMode:p(n)}}))}),[a,t]),w=n.useCallback((e=>{e?"string"==typeof e?e&&!d.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):g((t=>{const r={...t};return f(t,(t=>{try{localStorage.setItem(`${s}-${t}`,e)}catch(e){}"light"===t&&(r.lightColorScheme=e),"dark"===t&&(r.darkColorScheme=e)})),r})):g((t=>{const n={...t},i=null===e.light?r:e.light,a=null===e.dark?o:e.dark;if(i)if(d.includes(i)){n.lightColorScheme=i;try{localStorage.setItem(`${s}-light`,i)}catch(e){}}else console.error(`\`${i}\` does not exist in \`theme.colorSchemes\`.`);if(a)if(d.includes(a)){n.darkColorScheme=a;try{localStorage.setItem(`${s}-dark`,a)}catch(e){}}else console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`);return n})):g((e=>{try{localStorage.setItem(`${s}-light`,r),localStorage.setItem(`${s}-dark`,o)}catch(e){}return{...e,lightColorScheme:r,darkColorScheme:o}}))}),[d,s,r,o]),S=n.useCallback((e=>{"system"===v.mode&&g((t=>{const r=e?.matches?"dark":"light";return t.systemMode===r?t:{...t,systemMode:r}}))}),[v.mode]),k=n.useRef(S);return k.current=S,n.useEffect((()=>{if("function"!=typeof window.matchMedia||!m)return;const e=(...e)=>k.current(...e),t=window.matchMedia("(prefers-color-scheme: dark)");return t.addListener(e),e(t),()=>{t.removeListener(e)}}),[m]),n.useEffect((()=>{if(l&&m){const e=e=>{const r=e.newValue;"string"!=typeof e.key||!e.key.startsWith(s)||r&&!d.match(r)||(e.key.endsWith("light")&&w({light:r}),e.key.endsWith("dark")&&w({dark:r})),e.key!==a||r&&!["light","dark","system"].includes(r)||A(r||t)};return l.addEventListener("storage",e),()=>{l.removeEventListener("storage",e)}}}),[w,A,a,s,d,t,l,m]),{...v,mode:b.current||!m?v.mode:void 0,systemMode:b.current||!m?v.systemMode:void 0,colorScheme:b.current||!m?x:void 0,setMode:A,setColorScheme:w}}({supportedColorSchemes:F,defaultLightColorScheme:B,defaultDarkColorScheme:W,modeStorageKey:A,colorSchemeStorageKey:w,defaultMode:H,storageWindow:k});let J=U,Z=G;I&&(J=P.mode,Z=P.colorScheme);const Q=Z||z.defaultColorScheme,ee=z.generateThemeVars?.()||z.vars,te={...z,components:L,colorSchemes:_,cssVarPrefix:j,vars:ee};if("function"==typeof te.generateSpacing&&(te.spacing=te.generateSpacing()),Q){const e=_[Q];e&&"object"==typeof e&&Object.keys(e).forEach((t=>{e[t]&&"object"==typeof e[t]?te[t]={...te[t],...e[t]}:te[t]=e[t]}))}const re=z.colorSchemeSelector;n.useEffect((()=>{if(Z&&C&&re&&"media"!==re){const e=re;let t=re;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))C.classList.remove(...F.map((e=>t.substring(1).replace("%s",e)))),C.classList.add(t.substring(1).replace("%s",Z));else{const e=t.replace("%s",Z).match(/\[([^\]]+)\]/);if(e){const[t,r]=e[1].split("=");r||F.forEach((e=>{C.removeAttribute(t.replace(Z,e))})),C.setAttribute(t,r?r.replace(/"|'/g,""):"")}else C.setAttribute(t,Z)}}}),[Z,re,C,F]),n.useEffect((()=>{let e;if(S&&M.current&&E){const t=E.createElement("style");t.appendChild(E.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),E.head.appendChild(t),window.getComputedStyle(E.body),e=setTimeout((()=>{E.head.removeChild(t)}),1)}return()=>{clearTimeout(e)}}),[Z,S,E]),n.useEffect((()=>(M.current=!0,()=>{M.current=!1})),[]);const ne=n.useMemo((()=>({allColorSchemes:F,colorScheme:Z,darkColorScheme:Y,lightColorScheme:X,mode:J,setColorScheme:K,setMode:V,systemMode:q})),[F,Z,Y,X,J,K,V,q]);let oe=!0;(R||!1===z.cssVariables||I&&O?.cssVarPrefix===j)&&(oe=!1);const ie=(0,l.jsxs)(n.Fragment,{children:[(0,l.jsx)(s.A,{themeId:$?t:void 0,theme:y?y(te):te,children:d}),oe&&(0,l.jsx)(i.A,{styles:te.generateStyleSheets?.()||[]})]});return I?ie:(0,l.jsx)(x.Provider,{value:ne,children:ie})},useColorScheme:()=>n.useContext(x)||b,getInitColorSchemeScript:e=>function(e){const{defaultLightColorScheme:t="light",defaultDarkColorScheme:r="dark",modeStorageKey:n=c,colorSchemeStorageKey:o=u,attribute:i=d,colorSchemeNode:a="document.documentElement",nonce:s}=e||{};let p="",f=i;if("class"===i&&(f=".%s"),"data"===i&&(f="[data-%s]"),f.startsWith(".")){const e=f.substring(1);p+=`${a}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n      ${a}.classList.add('${e}'.replace('%s', colorScheme));`}const h=f.match(/\[([^\]]+)\]/);if(h){const[e,t]=h[1].split("=");t||(p+=`${a}.removeAttribute('${e}'.replace('%s', light));\n      ${a}.removeAttribute('${e}'.replace('%s', dark));`),p+=`\n      ${a}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else p+=`${a}.setAttribute('${f}', colorScheme);`;return(0,l.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?s:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n  let colorScheme = '';\n  const mode = localStorage.getItem('${n}') || 'system';\n  const dark = localStorage.getItem('${o}-dark') || '${r}';\n  const light = localStorage.getItem('${o}-light') || '${t}';\n  if (mode === 'system') {\n    // handle system mode\n    const mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      colorScheme = dark\n    } else {\n      colorScheme = light\n    }\n  }\n  if (mode === 'light') {\n    colorScheme = light;\n  }\n  if (mode === 'dark') {\n    colorScheme = dark;\n  }\n  if (colorScheme) {\n    ${p}\n  }\n} catch(e){}})();`}},"mui-color-scheme-init")}({colorSchemeStorageKey:m,defaultLightColorScheme:A,defaultDarkColorScheme:w,modeStorageKey:o,...e})}}({themeId:g.A,theme:()=>(0,m.A)({cssVariables:!0}),colorSchemeStorageKey:y,modeStorageKey:A,defaultColorScheme:{light:b,dark:x},resolveTheme:e=>{const t={...e,typography:(0,v.A)(e.palette,e.typography)};return t.unstable_sx=function(e){return(0,o.A)({sx:e,theme:this})},t}});function E(e){return(0,l.jsx)(w,{...e})}let C=!1;const T=e=>(C||(console.warn(["MUI: The getInitColorSchemeScript function has been deprecated.","","You should use `import InitColorSchemeScript from '@mui/material/InitColorSchemeScript'`","and replace the function call with `<InitColorSchemeScript />` instead."].join("\n")),C=!0),k(e)),R=w},86259:(e,t,r)=>{"use strict";function n(e){return String(parseFloat(e)).length===String(e).length}function o(e){return String(e).match(/[\d.\-+]*\s*(.*)/)[1]||""}function i(e){return parseFloat(e)}function a(e){return(t,r)=>{const n=o(t);if(n===r)return t;let a=i(t);"px"!==n&&("em"===n||"rem"===n)&&(a=i(t)*i(e));let s=a;if("px"!==r)if("em"===r)s=a/i(e);else{if("rem"!==r)return t;s=a/i(e)}return parseFloat(s.toFixed(5))+r}}function s({size:e,grid:t}){const r=e-e%t,n=r+t;return e-r<n-e?r:n}function l({lineHeight:e,pixels:t,htmlFontSize:r}){return t/(e*r)}function c({cssProperty:e,min:t,max:r,unit:n="rem",breakpoints:o=[600,900,1200],transform:i=null}){const a={[e]:`${t}${n}`},s=(r-t)/o[o.length-1];return o.forEach((r=>{let o=t+s*r;null!==i&&(o=i(o)),a[`@media (min-width:${r}px)`]={[e]:`${Math.round(1e4*o)/1e4}${n}`}})),a}r.d(t,{I3:()=>a,VR:()=>s,a9:()=>n,db:()=>i,l_:()=>o,qW:()=>l,yL:()=>c})},46322:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CssVarsProvider:()=>N.Zr,Experimental_CssVarsProvider:()=>N.Gk,StyledEngineProvider:()=>M,THEME_ID:()=>o.A,ThemeProvider:()=>S.A,adaptV4Theme:()=>s,alpha:()=>l.X4,createColorScheme:()=>b.Ay,createMuiTheme:()=>d.D,createStyles:()=>m,createTheme:()=>u.A,createTransitions:()=>y.Ay,css:()=>c.AH,darken:()=>l.e$,decomposeColor:()=>l.rP,duration:()=>y.p0,easing:()=>y.cz,emphasize:()=>l.tL,experimentalStyled:()=>w.Ay,experimental_extendTheme:()=>L,experimental_sx:()=>W,extendTheme:()=>$.A,getContrastRatio:()=>l.eM,getInitColorSchemeScript:()=>N.Gs,getLuminance:()=>l.J1,getOverlayAlpha:()=>j.A,hexToRgb:()=>l.E2,hslToRgb:()=>l.YL,keyframes:()=>c.i7,lighten:()=>l.a,makeStyles:()=>O,private_createMixins:()=>F.A,private_createTypography:()=>D.A,private_excludeVariablesFromRoot:()=>B.A,recomposeColor:()=>l.X0,responsiveFontSizes:()=>g,rgbToHex:()=>l.Ob,shouldSkipGeneratingVar:()=>z.A,styled:()=>w.Ay,unstable_createBreakpoints:()=>a.A,unstable_createMuiStrictModeTheme:()=>f,unstable_getUnit:()=>v.l_,unstable_toUnitless:()=>v.db,useColorScheme:()=>N.Ut,useTheme:()=>x.A,useThemeProps:()=>A.A,withStyles:()=>P,withTheme:()=>I});var n=r(51569),o=r(74988),i=r(81459),a=r(92271);function s(e){const{defaultProps:t={},mixins:r={},overrides:n={},palette:o={},props:s={},styleOverrides:l={},...c}=e,u={...c,components:{}};Object.keys(t).forEach((e=>{const r=u.components[e]||{};r.defaultProps=t[e],u.components[e]=r})),Object.keys(s).forEach((e=>{const t=u.components[e]||{};t.defaultProps=s[e],u.components[e]=t})),Object.keys(l).forEach((e=>{const t=u.components[e]||{};t.styleOverrides=l[e],u.components[e]=t})),Object.keys(n).forEach((e=>{const t=u.components[e]||{};t.styleOverrides=n[e],u.components[e]=t})),u.spacing=(0,i.A)(e.spacing);const d=(0,a.A)(e.breakpoints||{}),p=u.spacing;u.mixins={gutters:(e={})=>({paddingLeft:p(2),paddingRight:p(2),...e,[d.up("sm")]:{paddingLeft:p(3),paddingRight:p(3),...e[d.up("sm")]}}),...r};const{type:f,mode:h,...m}=o,v=h||f||"light";return u.palette={text:{hint:"dark"===v?"rgba(255, 255, 255, 0.5)":"rgba(0, 0, 0, 0.38)"},mode:v,type:v,...m},u}var l=r(72639),c=r(64761),u=r(89022),d=r(86501),p=r(78745);function f(e,...t){return(0,u.A)((0,p.A)({unstable_strictMode:!0},e),...t)}let h=!1;function m(e){return h||(console.warn(["MUI: createStyles from @mui/material/styles is deprecated.","Please use @mui/styles/createStyles"].join("\n")),h=!0),e}var v=r(86259);function g(e,t={}){const{breakpoints:r=["sm","md","lg"],disableAlign:o=!1,factor:i=2,variants:a=["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","button","overline"]}=t,s={...e};s.typography={...s.typography};const l=s.typography,c=(0,v.I3)(l.htmlFontSize),u=r.map((e=>s.breakpoints.values[e]));return a.forEach((e=>{const t=l[e];if(!t)return;const r=parseFloat(c(t.fontSize,"rem"));if(r<=1)return;const a=r,s=1+(a-1)/i;let{lineHeight:d}=t;if(!(0,v.a9)(d)&&!o)throw new Error((0,n.A)(6));(0,v.a9)(d)||(d=parseFloat(c(d,"rem"))/parseFloat(r));let p=null;o||(p=e=>(0,v.VR)({size:e,grid:(0,v.qW)({pixels:4,lineHeight:d,htmlFontSize:l.htmlFontSize})})),l[e]={...t,...(0,v.yL)({cssProperty:"fontSize",min:s,max:a,unit:"rem",breakpoints:u,transform:p})}})),s}var y=r(94479),b=r(21699),x=r(48231),A=r(31049),w=r(51148),S=r(20139),k=(r(7552),r(90722)),E=r(85120),C=r(73123),T=r(69500);let R;function M(e){const{injectFirst:t,children:r}=e;return t&&R?(0,T.jsx)(k.C,{value:R,children:r}):r}function O(){throw new Error((0,n.A)(14))}function P(){throw new Error((0,n.A)(15))}function I(){throw new Error((0,n.A)(16))}"object"==typeof document&&(R=(e=>{const t=(0,E.A)(e);class r extends C.v{constructor(e){super(e),this.prepend=t.sheet.prepend}}return t.sheet=new r({key:t.key,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy,prepend:t.sheet.prepend,insertionPoint:t.sheet.insertionPoint}),t})({key:"css",prepend:!0}));var N=r(22892),$=r(17405);let _=!1;function L(...e){return _||(console.warn(["MUI: The `experimental_extendTheme` has been stabilized.","","You should use `import { extendTheme } from '@mui/material/styles'`"].join("\n")),_=!0),(0,$.A)(...e)}var j=r(28875),z=r(59542),D=r(34558),F=r(90841),B=r(80040);function W(){throw new Error((0,n.A)(19))}},48231:(e,t,r)=>{"use strict";r.d(t,{A:()=>a}),r(7552);var n=r(67109),o=r(23121),i=r(74988);function a(){const e=(0,n.A)(o.A);return e[i.A]||e}},31049:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(82081),o=r(23121),i=r(74988);function a({props:e,name:t}){return(0,n.A)({props:e,name:t,defaultTheme:o.A,themeId:i.A})}},46302:(e,t,r)=>{"use strict";r.d(t,{c:()=>o,q:()=>n});const n=e=>e.scrollTop;function o(e,t){const{timeout:r,easing:n,style:o={}}=e;return{duration:o.transitionDuration??("number"==typeof r?r:r[t.mode]||0),easing:o.transitionTimingFunction??("object"==typeof n?n[t.mode]:n),delay:o.transitionDelay}}},25419:(e,t,r)=>{"use strict";r.d(t,{A:()=>h,Z:()=>u});var n=r(7552),o=r(50089),i=r(97609),a=r(43583),s=r(89887),l=r(21337);function c(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function u(e={}){const{ignoreAccents:t=!0,ignoreCase:r=!0,limit:n,matchFrom:o="any",stringify:i,trim:a=!1}=e;return(e,{inputValue:s,getOptionLabel:l})=>{let u=a?s.trim():s;r&&(u=u.toLowerCase()),t&&(u=c(u));const d=u?e.filter((e=>{let n=(i||l)(e);return r&&(n=n.toLowerCase()),t&&(n=c(n)),"start"===o?n.startsWith(u):n.includes(u)})):e;return"number"==typeof n?d.slice(0,n):d}}const d=u(),p=e=>null!==e.current&&e.current.parentElement?.contains(document.activeElement),f=[],h=function(e){const{unstable_isActiveElementInListbox:t=p,unstable_classNamePrefix:r="Mui",autoComplete:c=!1,autoHighlight:u=!1,autoSelect:h=!1,blurOnSelect:m=!1,clearOnBlur:v=!e.freeSolo,clearOnEscape:g=!1,componentName:y="useAutocomplete",defaultValue:b=(e.multiple?f:null),disableClearable:x=!1,disableCloseOnSelect:A=!1,disabled:w,disabledItemsFocusable:S=!1,disableListWrap:k=!1,filterOptions:E=d,filterSelectedOptions:C=!1,freeSolo:T=!1,getOptionDisabled:R,getOptionKey:M,getOptionLabel:O=e=>e.label??e,groupBy:P,handleHomeEndKeys:I=!e.freeSolo,id:N,includeInputInList:$=!1,inputValue:_,isOptionEqualToValue:L=(e,t)=>e===t,multiple:j=!1,onChange:z,onClose:D,onHighlightChange:F,onInputChange:B,onOpen:W,open:H,openOnFocus:U=!1,options:V,readOnly:q=!1,selectOnFocus:X=!e.freeSolo,value:Y}=e,G=(0,o.A)(N);let K=O;K=e=>{const t=O(e);return"string"!=typeof t?String(t):t};const J=n.useRef(!1),Z=n.useRef(!0),Q=n.useRef(null),ee=n.useRef(null),[te,re]=n.useState(null),[ne,oe]=n.useState(-1),ie=u?0:-1,ae=n.useRef(ie),[se,le]=(0,i.A)({controlled:Y,default:b,name:y}),[ce,ue]=(0,i.A)({controlled:_,default:"",name:y,state:"inputValue"}),[de,pe]=n.useState(!1),fe=n.useCallback(((e,t,r)=>{if(!(j?se.length<t.length:null!==t)&&!v)return;let n;if(j)n="";else if(null==t)n="";else{const e=K(t);n="string"==typeof e?e:""}ce!==n&&(ue(n),B&&B(e,n,r))}),[K,ce,j,B,ue,v,se]),[he,me]=(0,i.A)({controlled:H,default:!1,name:y,state:"open"}),[ve,ge]=n.useState(!0),ye=!j&&null!=se&&ce===K(se),be=he&&!q,xe=be?E(V.filter((e=>!C||!(j?se:[se]).some((t=>null!==t&&L(e,t))))),{inputValue:ye&&ve?"":ce,getOptionLabel:K}):[],Ae=(0,a.A)({filteredOptions:xe,value:se,inputValue:ce});n.useEffect((()=>{const e=se!==Ae.value;de&&!e||T&&!e||fe(null,se,"reset")}),[se,fe,de,Ae.value,T]);const we=he&&xe.length>0&&!q,Se=(0,s.A)((e=>{-1===e?Q.current.focus():te.querySelector(`[data-tag-index="${e}"]`).focus()}));n.useEffect((()=>{j&&ne>se.length-1&&(oe(-1),Se(-1))}),[se,j,ne,Se]);const ke=(0,s.A)((({event:e,index:t,reason:n="auto"})=>{if(ae.current=t,-1===t?Q.current.removeAttribute("aria-activedescendant"):Q.current.setAttribute("aria-activedescendant",`${G}-option-${t}`),F&&F(e,-1===t?null:xe[t],n),!ee.current)return;const o=ee.current.querySelector(`[role="option"].${r}-focused`);o&&(o.classList.remove(`${r}-focused`),o.classList.remove(`${r}-focusVisible`));let i=ee.current;if("listbox"!==ee.current.getAttribute("role")&&(i=ee.current.parentElement.querySelector('[role="listbox"]')),!i)return;if(-1===t)return void(i.scrollTop=0);const a=ee.current.querySelector(`[data-option-index="${t}"]`);if(a&&(a.classList.add(`${r}-focused`),"keyboard"===n&&a.classList.add(`${r}-focusVisible`),i.scrollHeight>i.clientHeight&&"mouse"!==n&&"touch"!==n)){const e=a,t=i.clientHeight+i.scrollTop,r=e.offsetTop+e.offsetHeight;r>t?i.scrollTop=r-i.clientHeight:e.offsetTop-e.offsetHeight*(P?1.3:0)<i.scrollTop&&(i.scrollTop=e.offsetTop-e.offsetHeight*(P?1.3:0))}})),Ee=(0,s.A)((({event:e,diff:t,direction:r="next",reason:n="auto"})=>{if(!be)return;const o=function(e,t){if(!ee.current||e<0||e>=xe.length)return-1;let r=e;for(;;){const n=ee.current.querySelector(`[data-option-index="${r}"]`),o=!S&&(!n||n.disabled||"true"===n.getAttribute("aria-disabled"));if(n&&n.hasAttribute("tabindex")&&!o)return r;if(r="next"===t?(r+1)%xe.length:(r-1+xe.length)%xe.length,r===e)return-1}}((()=>{const e=xe.length-1;if("reset"===t)return ie;if("start"===t)return 0;if("end"===t)return e;const r=ae.current+t;return r<0?-1===r&&$?-1:k&&-1!==ae.current||Math.abs(t)>1?0:e:r>e?r===e+1&&$?-1:k||Math.abs(t)>1?e:0:r})(),r);if(ke({index:o,reason:n,event:e}),c&&"reset"!==t)if(-1===o)Q.current.value=ce;else{const e=K(xe[o]);Q.current.value=e,0===e.toLowerCase().indexOf(ce.toLowerCase())&&ce.length>0&&Q.current.setSelectionRange(ce.length,e.length)}})),Ce=n.useCallback((()=>{if(!be)return;const e=(()=>{if(-1!==ae.current&&Ae.filteredOptions&&Ae.filteredOptions.length!==xe.length&&Ae.inputValue===ce&&(j?se.length===Ae.value.length&&Ae.value.every(((e,t)=>K(se[t])===K(e))):(e=Ae.value,t=se,(e?K(e):"")===(t?K(t):"")))){const e=Ae.filteredOptions[ae.current];if(e)return xe.findIndex((t=>K(t)===K(e)))}var e,t;return-1})();if(-1!==e)return void(ae.current=e);const t=j?se[0]:se;if(0!==xe.length&&null!=t){if(ee.current)if(null==t)ae.current>=xe.length-1?ke({index:xe.length-1}):ke({index:ae.current});else{const e=xe[ae.current];if(j&&e&&-1!==se.findIndex((t=>L(e,t))))return;const r=xe.findIndex((e=>L(e,t)));-1===r?Ee({diff:"reset"}):ke({index:r})}}else Ee({diff:"reset"})}),[xe.length,!j&&se,C,Ee,ke,be,ce,j]),Te=(0,s.A)((e=>{(0,l.A)(ee,e),e&&Ce()}));n.useEffect((()=>{Ce()}),[Ce]);const Re=e=>{he||(me(!0),ge(!0),W&&W(e))},Me=(e,t)=>{he&&(me(!1),D&&D(e,t))},Oe=(e,t,r,n)=>{if(j){if(se.length===t.length&&se.every(((e,r)=>e===t[r])))return}else if(se===t)return;z&&z(e,t,r,n),le(t)},Pe=n.useRef(!1),Ie=(e,t,r="selectOption",n="options")=>{let o=r,i=t;if(j){i=Array.isArray(se)?se.slice():[];const e=i.findIndex((e=>L(t,e)));-1===e?i.push(t):"freeSolo"!==n&&(i.splice(e,1),o="removeOption")}fe(e,i,o),Oe(e,i,o,{option:t}),A||e&&(e.ctrlKey||e.metaKey)||Me(e,o),(!0===m||"touch"===m&&Pe.current||"mouse"===m&&!Pe.current)&&Q.current.blur()},Ne=(e,t)=>{if(!j)return;""===ce&&Me(e,"toggleInput");let r=ne;-1===ne?""===ce&&"previous"===t&&(r=se.length-1):(r+="next"===t?1:-1,r<0&&(r=0),r===se.length&&(r=-1)),r=function(e,t){if(-1===e)return-1;let r=e;for(;;){if("next"===t&&r===se.length||"previous"===t&&-1===r)return-1;const e=te.querySelector(`[data-tag-index="${r}"]`);if(e&&e.hasAttribute("tabindex")&&!e.disabled&&"true"!==e.getAttribute("aria-disabled"))return r;r+="next"===t?1:-1}}(r,t),oe(r),Se(r)},$e=e=>{J.current=!0,ue(""),B&&B(e,"","clear"),Oe(e,j?[]:null,"clear")},_e=e=>t=>{if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1===ne||["ArrowLeft","ArrowRight"].includes(t.key)||(oe(-1),Se(-1)),229!==t.which))switch(t.key){case"Home":be&&I&&(t.preventDefault(),Ee({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":be&&I&&(t.preventDefault(),Ee({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),Ee({diff:-5,direction:"previous",reason:"keyboard",event:t}),Re(t);break;case"PageDown":t.preventDefault(),Ee({diff:5,direction:"next",reason:"keyboard",event:t}),Re(t);break;case"ArrowDown":t.preventDefault(),Ee({diff:1,direction:"next",reason:"keyboard",event:t}),Re(t);break;case"ArrowUp":t.preventDefault(),Ee({diff:-1,direction:"previous",reason:"keyboard",event:t}),Re(t);break;case"ArrowLeft":Ne(t,"previous");break;case"ArrowRight":Ne(t,"next");break;case"Enter":if(-1!==ae.current&&be){const e=xe[ae.current],r=!!R&&R(e);if(t.preventDefault(),r)return;Ie(t,e,"selectOption"),c&&Q.current.setSelectionRange(Q.current.value.length,Q.current.value.length)}else T&&""!==ce&&!1===ye&&(j&&t.preventDefault(),Ie(t,ce,"createOption","freeSolo"));break;case"Escape":be?(t.preventDefault(),t.stopPropagation(),Me(t,"escape")):g&&(""!==ce||j&&se.length>0)&&(t.preventDefault(),t.stopPropagation(),$e(t));break;case"Backspace":if(j&&!q&&""===ce&&se.length>0){const e=-1===ne?se.length-1:ne,r=se.slice();r.splice(e,1),Oe(t,r,"removeOption",{option:se[e]})}break;case"Delete":if(j&&!q&&""===ce&&se.length>0&&-1!==ne){const e=ne,r=se.slice();r.splice(e,1),Oe(t,r,"removeOption",{option:se[e]})}}},Le=e=>{pe(!0),U&&!J.current&&Re(e)},je=e=>{t(ee)?Q.current.focus():(pe(!1),Z.current=!0,J.current=!1,h&&-1!==ae.current&&be?Ie(e,xe[ae.current],"blur"):h&&T&&""!==ce?Ie(e,ce,"blur","freeSolo"):v&&fe(e,se,"blur"),Me(e,"blur"))},ze=e=>{const t=e.target.value;ce!==t&&(ue(t),ge(!1),B&&B(e,t,"input")),""===t?x||j||Oe(e,null,"clear"):Re(e)},De=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));ae.current!==t&&ke({event:e,index:t,reason:"mouse"})},Fe=e=>{ke({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),Pe.current=!0},Be=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));Ie(e,xe[t],"selectOption"),Pe.current=!1},We=e=>t=>{const r=se.slice();r.splice(e,1),Oe(t,r,"removeOption",{option:se[e]})},He=e=>{he?Me(e,"toggleInput"):Re(e)},Ue=e=>{e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==G&&e.preventDefault()},Ve=e=>{e.currentTarget.contains(e.target)&&(Q.current.focus(),X&&Z.current&&Q.current.selectionEnd-Q.current.selectionStart==0&&Q.current.select(),Z.current=!1)},qe=e=>{w||""!==ce&&he||He(e)};let Xe=T&&ce.length>0;Xe=Xe||(j?se.length>0:null!==se);let Ye=xe;return P&&(new Map,Ye=xe.reduce(((e,t,r)=>{const n=P(t);return e.length>0&&e[e.length-1].group===n?e[e.length-1].options.push(t):e.push({key:r,index:r,group:n,options:[t]}),e}),[])),w&&de&&je(),{getRootProps:(e={})=>({"aria-owns":we?`${G}-listbox`:null,...e,onKeyDown:_e(e),onMouseDown:Ue,onClick:Ve}),getInputLabelProps:()=>({id:`${G}-label`,htmlFor:G}),getInputProps:()=>({id:G,value:ce,onBlur:je,onFocus:Le,onChange:ze,onMouseDown:qe,"aria-activedescendant":be?"":null,"aria-autocomplete":c?"both":"list","aria-controls":we?`${G}-listbox`:void 0,"aria-expanded":we,autoComplete:"off",ref:Q,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:w}),getClearProps:()=>({tabIndex:-1,type:"button",onClick:$e}),getPopupIndicatorProps:()=>({tabIndex:-1,type:"button",onClick:He}),getTagProps:({index:e})=>({key:e,"data-tag-index":e,tabIndex:-1,...!q&&{onDelete:We(e)}}),getListboxProps:()=>({role:"listbox",id:`${G}-listbox`,"aria-labelledby":`${G}-label`,ref:Te,onMouseDown:e=>{e.preventDefault()}}),getOptionProps:({index:e,option:t})=>{const r=(j?se:[se]).some((e=>null!=e&&L(t,e))),n=!!R&&R(t);return{key:M?.(t)??K(t),tabIndex:-1,role:"option",id:`${G}-option-${e}`,onMouseMove:De,onClick:Be,onTouchStart:Fe,"data-option-index":e,"aria-disabled":n,"aria-selected":r}},id:G,inputValue:ce,value:se,dirty:Xe,expanded:be&&te,popupOpen:be,focused:de||-1!==ne,anchorEl:te,setAnchorEl:re,focusedTag:ne,groupedOptions:Ye}}},4402:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(87797).A},74893:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(7552),o=r(2859),i=r(69500);function a(e,t){function r(r,n){return(0,i.jsx)(o.A,{"data-testid":`${t}Icon`,ref:n,...r,children:e})}return r.muiName=o.A.muiName,n.memo(n.forwardRef(r))}},987:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(86949).A},78301:(e,t,r)=>{"use strict";r.r(t),r.d(t,{capitalize:()=>o.A,createChainedFunction:()=>i.A,createSvgIcon:()=>a.A,debounce:()=>s.A,deprecatedPropType:()=>l,isMuiElement:()=>c.A,ownerDocument:()=>d.A,ownerWindow:()=>p.A,requirePropFactory:()=>f,setRef:()=>h,unstable_ClassNameGenerator:()=>A,unstable_memoTheme:()=>u.A,unstable_useEnhancedEffect:()=>m.A,unstable_useId:()=>v.A,unsupportedProp:()=>g,useControlled:()=>y.A,useEventCallback:()=>b.A,useForkRef:()=>x.A});var n=r(23043),o=r(15622),i=r(4402),a=r(74893),s=r(987);const l=function(e,t){return()=>null};var c=r(3755),u=r(60129),d=r(6676),p=r(46689);const f=function(e,t){return()=>null},h=r(21337).A;var m=r(82910),v=r(89456);const g=function(e,t,r,n,o){return null};var y=r(77259),b=r(87422),x=r(51584);const A={configure:e=>{n.A.configure(e)}}},23879:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=function(e){return"string"==typeof e}},3755:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);const o=function(e,t){return n.isValidElement(e)&&-1!==t.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}},6676:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(99305).A},46689:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(16849).A},77259:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(97609).A},82910:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(83933).A},87422:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(89887).A},51584:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(29527).A},89456:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(50089).A},43045:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(29527),o=r(60622),i=r(5289),a=r(39221);function s(e,t){const{className:r,elementType:s,ownerState:l,externalForwardedProps:c,getSlotOwnerState:u,internalForwardedProps:d,...p}=t,{component:f,slots:h={[e]:void 0},slotProps:m={[e]:void 0},...v}=c,g=h[e]||s,y=(0,i.A)(m[e],l),{props:{component:b,...x},internalRef:A}=(0,a.A)({className:r,...p,externalForwardedProps:"root"===e?v:void 0,externalSlotProps:y}),w=(0,n.A)(A,y?.ref,t.ref),S=u?u(x):{},k={...l,...S},E="root"===e?b||f:b,C=(0,o.A)(g,{..."root"===e&&!f&&!h[e]&&d,..."root"!==e&&!h[e]&&d,...x,...E&&{as:E},ref:w},k);return Object.keys(S).forEach((e=>{delete C[e]})),[g,C]}},69743:(e,t,r)=>{"use strict";r.d(t,{Dp:()=>d,Dg:()=>p}),r(7552);var n=r(8455),o=r(92104),i=r(67109),a=r(69500);const s=function({styles:e,themeId:t,defaultTheme:r={}}){const n=(0,i.A)(r),s="function"==typeof e?e(t&&n[t]||n):e;return(0,a.jsx)(o.A,{styles:s})};var l=r(23121),c=r(74988);const u=function(e){return(0,a.jsx)(s,{...e,defaultTheme:l.A,themeId:c.A})};function d(e){return function(t){return(0,a.jsx)(u,{styles:"function"==typeof e?r=>e({theme:r,...t}):e})}}function p(){return n.A}},15006:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext(null)},57522:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(15006);function i(){return n.useContext(o.A)}},92104:(e,t,r)=>{"use strict";r.d(t,{A:()=>i}),r(7552);var n=r(64761),o=r(69500);function i(e){const{styles:t,defaultTheme:r={}}=e,i="function"==typeof t?e=>{return t(null==(n=e)||0===Object.keys(n).length?r:e);var n}:t;return(0,o.jsx)(n.mL,{styles:i})}},93876:(e,t,r)=>{"use strict";r.d(t,{A:()=>s,I:()=>a});var n=r(7552),o=r(69500);const i=n.createContext(),a=()=>n.useContext(i)??!1,s=function({value:e,...t}){return(0,o.jsx)(i.Provider,{value:e??!0,...t})}},70034:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),o=r(57522),i=r(15006);const a="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var s=r(69500);const l=function(e){const{children:t,theme:r}=e,l=(0,o.A)(),c=n.useMemo((()=>{const e=null===l?{...r}:function(e,t){return"function"==typeof t?t(e):{...e,...t}}(l,r);return null!=e&&(e[a]=null!==l),e}),[r,l]);return(0,s.jsx)(i.A.Provider,{value:c,children:t})};var c=r(90722),u=r(40015),d=r(93876),p=r(53173);const f={};function h(e,t,r,o=!1){return n.useMemo((()=>{const n=e&&t[e]||t;if("function"==typeof r){const i=r(n),a=e?{...t,[e]:i}:i;return o?()=>a:a}return e?{...t,[e]:r}:{...t,...r}}),[e,t,r,o])}const m=function(e){const{children:t,theme:r,themeId:n}=e,i=(0,u.A)(f),a=(0,o.A)()||f,m=h(n,i,r),v=h(n,a,r,!0),g="rtl"===m.direction;return(0,s.jsx)(l,{theme:v,children:(0,s.jsx)(c.T.Provider,{value:m,children:(0,s.jsx)(d.A,{value:g,children:(0,s.jsx)(p.A,{value:m?.components,children:t})})})})}},8455:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(78745),o=r(94177);const i=e=>{const t={systemProps:{},otherProps:{}},r=e?.theme?.unstable_sxConfig??o.A;return Object.keys(e).forEach((n=>{r[n]?t.systemProps[n]=e[n]:t.otherProps[n]=e[n]})),t};function a(e){const{sx:t,...r}=e,{systemProps:o,otherProps:a}=i(r);let s;return s=Array.isArray(t)?[o,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,n.Q)(r)?{...o,...r}:o}:{...o,...t},{...a,sx:s}}},67109:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(72861),o=r(40015);const i=(0,n.A)(),a=function(e=i){return(0,o.A)(e)}},82081:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(80007),o=r(67109);function i({props:e,name:t,defaultTheme:r,themeId:i}){let a=(0,o.A)(r);return i&&(a=a[i]||a),function(e){const{theme:t,name:r,props:o}=e;return t&&t.components&&t.components[r]&&t.components[r].defaultProps?(0,n.A)(t.components[r].defaultProps,o):o}({theme:a,name:t,props:e})}},40015:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(90722);const i=function(e=null){const t=n.useContext(o.T);return t&&(r=t,0!==Object.keys(r).length)?t:e;var r}},60622:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=function(e,t,r){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...r}}}},87797:(e,t,r)=>{"use strict";function n(...e){return e.reduce(((e,t)=>null==t?e:function(...r){e.apply(this,r),t.apply(this,r)}),(()=>{}))}r.d(t,{A:()=>n})},86949:(e,t,r)=>{"use strict";function n(e,t=166){let r;function n(...n){clearTimeout(r),r=setTimeout((()=>{e.apply(this,n)}),t)}return n.clear=()=>{clearTimeout(r)},n}r.d(t,{A:()=>n})},29091:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=function(e,t=[]){if(void 0===e)return{};const r={};return Object.keys(e).filter((r=>r.match(/^on[A-Z]/)&&"function"==typeof e[r]&&!t.includes(r))).forEach((t=>{r[t]=e[t]})),r}},28325:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);function o(e){return e&&n.isValidElement(e)?e.props.propertyIsEnumerable("ref")?e.props.ref:e.ref:null}},25577:(e,t,r)=>{"use strict";function n(e){const t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}r.d(t,{A:()=>n})},27921:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);function o(e){return n.Children.toArray(e).filter((e=>n.isValidElement(e)))}},91527:(e,t,r)=>{"use strict";function n(e){try{return e.matches(":focus-visible")}catch(e){}return!1}r.d(t,{A:()=>n})},39221:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(93878),o=r(29091);const i=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter((t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t]))).forEach((r=>{t[r]=e[r]})),t},a=function(e){const{getSlotProps:t,additionalProps:r,externalSlotProps:a,externalForwardedProps:s,className:l}=e;if(!t){const e=(0,n.A)(r?.className,l,s?.className,a?.className),t={...r?.style,...s?.style,...a?.style},o={...r,...s,...a};return e.length>0&&(o.className=e),Object.keys(t).length>0&&(o.style=t),{props:o,internalRef:void 0}}const c=(0,o.A)({...s,...a}),u=i(a),d=i(s),p=t(c),f=(0,n.A)(p?.className,r?.className,l,s?.className,a?.className),h={...p?.style,...r?.style,...s?.style,...a?.style},m={...p,...r,...d,...u};return f.length>0&&(m.className=f),Object.keys(h).length>0&&(m.style=h),{props:m,internalRef:p.ref}}},99305:(e,t,r)=>{"use strict";function n(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>n})},16849:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(99305);function o(e){return(0,n.A)(e).defaultView||window}},5289:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=function(e,t,r){return"function"==typeof e?e(t,r):e}},21337:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof e?e(t):e&&(e.current=t)}r.d(t,{A:()=>n})},97609:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);function o({controlled:e,default:t,name:r,state:o="value"}){const{current:i}=n.useRef(void 0!==e),[a,s]=n.useState(t);return[i?e:a,n.useCallback((e=>{i||s(e)}),[])]}},83933:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);const o="undefined"!=typeof window?n.useLayoutEffect:n.useEffect},89887:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(83933);const i=function(e){const t=n.useRef(e);return(0,o.A)((()=>{t.current=e})),n.useRef(((...e)=>(0,t.current)(...e))).current}},29527:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(21337);function i(...e){return n.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{(0,o.A)(e,t)}))}),e)}},50089:(e,t,r)=>{"use strict";var n;r.d(t,{A:()=>s});var o=r(7552);let i=0;const a={...n||(n=r.t(o,2))}.useId;function s(e){if(void 0!==a){const t=a();return e??t}return function(e){const[t,r]=o.useState(e),n=e||t;return o.useEffect((()=>{null==t&&(i+=1,r(`mui-${i}`))}),[t]),n}(e)}},53131:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552);const o={};function i(e,t){const r=n.useRef(o);return r.current===o&&(r.current=e(t)),r}},43583:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);const o=e=>{const t=n.useRef({});return n.useEffect((()=>{t.current=e})),t.current}},1045:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(29527),o=r(60622),i=r(39221),a=r(5289);const s=function(e){const{elementType:t,externalSlotProps:r,ownerState:s,skipResolvingSlotProps:l=!1,...c}=e,u=l?{}:(0,a.A)(r,s),{props:d,internalRef:p}=(0,i.A)({...c,externalSlotProps:u}),f=(0,n.A)(p,u?.ref,e.additionalProps?.ref);return(0,o.A)(t,{...d,ref:f},s)}},26218:(e,t,r)=>{"use strict";r.d(t,{E:()=>a,A:()=>s});var n=r(53131),o=r(7552);const i=[];class a{static create(){return new a}currentId=null;start(e,t){this.clear(),this.currentId=setTimeout((()=>{this.currentId=null,t()}),e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear}function s(){const e=(0,n.A)(a.create).current;var t;return t=e.disposeEffect,o.useEffect(t,i),e}},25649:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"}},92019:(e,t,r)=>{"use strict";r.d(t,{k:()=>n});const n=r(7552).createContext(void 0)},65568:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});const n=r(7552).createContext(void 0)},76404:(e,t,r)=>{"use strict";r.d(t,{h:()=>i});var n=r(7552),o=r(92019);function i(){const e=n.useContext(o.k);if(void 0===e)throw new Error(["MUI X: Could not find the data grid context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join("\n"));return e}},3274:(e,t,r)=>{"use strict";r.d(t,{b:()=>o});var n=r(7552);const o=()=>n.useRef({})},64565:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(65568);const i=()=>{const e=n.useContext(o.y);if(!e)throw new Error("MUI X: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.");return e}},47130:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,i=s(e),a=i[0],l=i[1],c=new o(function(e,t,r){return 3*(t+r)/4-r}(0,a,l)),u=0,d=l>0?a-4:a;for(r=0;r<d;r+=4)t=n[e.charCodeAt(r)]<<18|n[e.charCodeAt(r+1)]<<12|n[e.charCodeAt(r+2)]<<6|n[e.charCodeAt(r+3)],c[u++]=t>>16&255,c[u++]=t>>8&255,c[u++]=255&t;return 2===l&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,c[u++]=255&t),1===l&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t),c},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=16383,s=0,c=n-o;s<c;s+=a)i.push(l(e,s,s+a>c?c:s+a));return 1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),i.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)r[a]=i[a],n[i.charCodeAt(a)]=a;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function l(e,t,n){for(var o,i,a=[],s=t;s<n;s+=3)o=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),a.push(r[(i=o)>>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},35451:(e,t,r)=>{"use strict";var n=r(47130),o=r(96607),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;var a=2147483647;function s(e){if(e>a)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return c(e,t,r)}function c(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|m(e,t),n=s(r),o=n.write(e,t);return o!==r&&(n=n.slice(0,o)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(B(e,Uint8Array)){var t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(B(e,ArrayBuffer)||e&&B(e.buffer,ArrayBuffer))return f(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(B(e,SharedArrayBuffer)||e&&B(e.buffer,SharedArrayBuffer)))return f(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,r);var o=function(e){if(l.isBuffer(e)){var t=0|h(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||W(e.length)?s(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return u(e),s(e<0?0:0|h(e))}function p(e){for(var t=e.length<0?0:0|h(e.length),r=s(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function f(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,l.prototype),n}function h(e){if(e>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||B(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return D(e).length;default:if(o)return n?-1:z(e).length;t=(""+t).toLowerCase(),o=!0}}function v(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return M(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),W(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,o){var i,a=1,s=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,r/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var u=-1;for(i=r;i<s;i++)if(c(e,i)===c(t,-1===u?0:i-u)){if(-1===u&&(u=i),i-u+1===l)return u*a}else-1!==u&&(i-=i-u),u=-1}else for(r+l>s&&(r=s-l),i=r;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(c(e,i+p)!==c(t,p)){d=!1;break}if(d)return i}return-1}function x(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var a=0;a<n;++a){var s=parseInt(t.substr(2*a,2),16);if(W(s))return a;e[r+a]=s}return a}function A(e,t,r,n){return F(z(t,e.length-r),e,r,n)}function w(e,t,r,n){return F(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function S(e,t,r,n){return F(D(t),e,r,n)}function k(e,t,r,n){return F(function(e,t){for(var r,n,o,i=[],a=0;a<e.length&&!((t-=2)<0);++a)n=(r=e.charCodeAt(a))>>8,o=r%256,i.push(o),i.push(n);return i}(t,e.length-r),e,r,n)}function E(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function C(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,a,s,l,c=e[o],u=null,d=c>239?4:c>223?3:c>191?2:1;if(o+d<=r)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(l=(15&c)<<12|(63&i)<<6|63&a)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(l=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),o+=d}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=T));return r}(n)}l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,r){return c(e,t,r)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,r){return function(e,t,r){return u(e),e<=0?s(e):void 0!==t?"string"==typeof r?s(e).fill(t,r):s(e).fill(t):s(e)}(e,t,r)},l.allocUnsafe=function(e){return d(e)},l.allocUnsafeSlow=function(e){return d(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(B(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),B(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=l.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var i=e[r];if(B(i,Uint8Array))o+i.length>n.length?l.from(i).copy(n,o):Uint8Array.prototype.set.call(n,i,o);else{if(!l.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o)}o+=i.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?C(this,0,e):v.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",r=t.IS;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},i&&(l.prototype[i]=l.prototype.inspect),l.prototype.compare=function(e,t,r,n,o){if(B(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(i,a),c=this.slice(n,o),u=e.slice(t,r),d=0;d<s;++d)if(c[d]!==u[d]){i=c[d],a=u[d];break}return i<a?-1:a<i?1:0},l.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},l.prototype.indexOf=function(e,t,r){return y(this,e,t,r,!0)},l.prototype.lastIndexOf=function(e,t,r){return y(this,e,t,r,!1)},l.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return x(this,e,t,r);case"utf8":case"utf-8":return A(this,e,t,r);case"ascii":case"latin1":case"binary":return w(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function R(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function M(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function O(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=H[e[i]];return o}function P(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length-1;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function I(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,r,n,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function $(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function _(e,t,r,n,i){return t=+t,r>>>=0,i||$(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function L(e,t,r,n,i){return t=+t,r>>>=0,i||$(e,0,r,8),o.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,l.prototype),n},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||I(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||I(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||I(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||I(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||N(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||N(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);N(this,e,t,r,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i<r&&(a*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/a|0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);N(this,e,t,r,o-1,-o)}var i=r-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a|0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,r){return _(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return _(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return L(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return L(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),o},l.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!l.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var o=e.charCodeAt(0);("utf8"===n&&o<128||"latin1"===n)&&(e=o)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{var a=l.isBuffer(e)?e:l.from(e,n),s=a.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=a[i%s]}return this};var j=/[^+/0-9A-Za-z-_]/g;function z(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],a=0;a<n;++a){if((r=e.charCodeAt(a))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function D(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(j,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function F(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function B(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function W(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var n=16*r,o=0;o<16;++o)t[n+o]=e[r]+e[o];return t}()},13862:e=>{"use strict";var t={},r={};const n={METHOD:"method",PROPERTY:"property"};class o{constructor(e,t){this.inst=e,this.args=t}}const i={[n.METHOD]:class extends o{constructor(e,t){super(e,t),this.type=n.METHOD}execute(e){e[this.inst](...this.args)}},[n.PROPERTY]:class extends o{constructor(e,t){super(e,t),this.type=n.PROPERTY}execute(e){e[this.inst]=this.args[0]}}};class a{constructor(e,t,r){return new i[e](t,r)}}Object.entries(n).forEach((([e,t])=>{Object.defineProperty(a,e,{value:t,configurable:!1,enumerable:!0,writable:!1})})),r=a;const s=Object.freeze({METHODS:["addHitRegion","arc","arcTo","beginPath","bezierCurveTo","clearHitRegions","clearRect","clip","closePath","drawFocusIfNeeded","drawImage","ellipse","fill","fillRect","fillText","lineTo","moveTo","putImageData","quadraticCurveTo","rect","removeHitRegion","resetTransform","restore","rotate","save","scale","scrollPathIntoView","setLineDash","setTransform","stroke","strokeRect","strokeText","transform","translate"],PROPERTIES:["direction","fillStyle","filter","font","globalAlpha","globalCompositeOperation","imageSmoothingEnabled","imageSmoothingQuality","lineCap","lineDashOffset","lineJoin","lineWidth","miterLimit","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","strokeStyle","textAlign","textBaseline"]}),l=Object.freeze({sequence:Symbol.for("sequence"),push:Symbol.for("push"),fromJSON:Symbol.for("fromJSON")});class c{constructor(e=null){this[l.sequence]=[],e&&this[l.fromJSON](e)}[l.fromJSON](e={sequence:[]}){e.sequence.forEach((({type:e,inst:t,args:r})=>{this[l.push](e,t,r)}))}[l.push](e,t,n){this[l.sequence].push(new r(e,t,n))}execute(e){e.save(),this[l.sequence].forEach((t=>t.execute(e))),e.restore()}toJSON(){return{sequence:this[l.sequence]}}}var u;s.METHODS.forEach((e=>{Object.defineProperty(c.prototype,e,{value:function(...t){this[l.push](r.METHOD,e,t)},writable:!1,enumerable:!0,configurable:!1})})),s.PROPERTIES.forEach((e=>{Object.defineProperty(c.prototype,e,{get(){throw`Invalid canvas sequencer interaction, cannot get ${e}.`},set(t){this[l.push](r.PROPERTY,e,[t])},enumerable:!0,configurable:!1})})),t=c;const d=Object.freeze({sequence:Symbol.for("sequence"),push:Symbol.for("push")});u=class extends t{build(e={}){const r=new t;return this[d.sequence].forEach((({type:t,inst:n,args:o})=>{const i=o.map((t=>"string"==typeof t?function(e,t){const r=e.replace(/^\{|\}$/gu,"");return r!==e?t.hasOwnProperty(r)?t[r]:r:e}(t,e):t));r[d.push](t,n,i)})),r}execute(){throw new TypeError("Cannot execute a blueprint.")}},e.exports={CanvasSequence:t,CanvasBlueprint:u}},33039:e=>{var t=function(){"use strict";function e(e,t){return null!=t&&e instanceof t}var t,r,n;try{t=Map}catch(e){t=function(){}}try{r=Set}catch(e){r=function(){}}try{n=Promise}catch(e){n=function(){}}function o(i,s,l,c,u){"object"==typeof s&&(l=s.depth,c=s.prototype,u=s.includeNonEnumerable,s=s.circular);var d=[],p=[],f="undefined"!=typeof Buffer;return void 0===s&&(s=!0),void 0===l&&(l=1/0),function i(l,h){if(null===l)return null;if(0===h)return l;var m,v;if("object"!=typeof l)return l;if(e(l,t))m=new t;else if(e(l,r))m=new r;else if(e(l,n))m=new n((function(e,t){l.then((function(t){e(i(t,h-1))}),(function(e){t(i(e,h-1))}))}));else if(o.__isArray(l))m=[];else if(o.__isRegExp(l))m=new RegExp(l.source,a(l)),l.lastIndex&&(m.lastIndex=l.lastIndex);else if(o.__isDate(l))m=new Date(l.getTime());else{if(f&&Buffer.isBuffer(l))return m=Buffer.allocUnsafe?Buffer.allocUnsafe(l.length):new Buffer(l.length),l.copy(m),m;e(l,Error)?m=Object.create(l):void 0===c?(v=Object.getPrototypeOf(l),m=Object.create(v)):(m=Object.create(c),v=c)}if(s){var g=d.indexOf(l);if(-1!=g)return p[g];d.push(l),p.push(m)}for(var y in e(l,t)&&l.forEach((function(e,t){var r=i(t,h-1),n=i(e,h-1);m.set(r,n)})),e(l,r)&&l.forEach((function(e){var t=i(e,h-1);m.add(t)})),l){var b;v&&(b=Object.getOwnPropertyDescriptor(v,y)),b&&null==b.set||(m[y]=i(l[y],h-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(l);for(y=0;y<x.length;y++){var A=x[y];(!(S=Object.getOwnPropertyDescriptor(l,A))||S.enumerable||u)&&(m[A]=i(l[A],h-1),S.enumerable||Object.defineProperty(m,A,{enumerable:!1}))}}if(u){var w=Object.getOwnPropertyNames(l);for(y=0;y<w.length;y++){var S,k=w[y];(S=Object.getOwnPropertyDescriptor(l,k))&&S.enumerable||(m[k]=i(l[k],h-1),Object.defineProperty(m,k,{enumerable:!1}))}}return m}(i,l)}function i(e){return Object.prototype.toString.call(e)}function a(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}return o.clonePrototype=function(e){if(null===e)return null;var t=function(){};return t.prototype=e,new t},o.__objToStr=i,o.__isDate=function(e){return"object"==typeof e&&"[object Date]"===i(e)},o.__isArray=function(e){return"object"==typeof e&&"[object Array]"===i(e)},o.__isRegExp=function(e){return"object"==typeof e&&"[object RegExp]"===i(e)},o.__getRegExpFlags=a,o}();e.exports&&(e.exports=t)},31409:(e,t,r)=>{"use strict";var n=r(76430),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,i,a,s,l,c,u=!1;t||(t={}),r=t.debug||!1;try{if(a=n(),s=document.createRange(),l=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(c),s.selectNodeContents(c),l.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(s):l.removeAllRanges()),c&&document.body.removeChild(c),a()}return u}},70777:e=>{e.exports=!1},53778:function(e){e.exports=function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:r,getPrototypeOf:n,getOwnPropertyDescriptor:o}=Object;let{freeze:i,seal:a,create:s}=Object,{apply:l,construct:c}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),l||(l=function(e,t,r){return e.apply(t,r)}),c||(c=function(e,t){return new e(...t)});const u=S(Array.prototype.forEach),d=S(Array.prototype.pop),p=S(Array.prototype.push),f=S(String.prototype.toLowerCase),h=S(String.prototype.toString),m=S(String.prototype.match),v=S(String.prototype.replace),g=S(String.prototype.indexOf),y=S(String.prototype.trim),b=S(Object.prototype.hasOwnProperty),x=S(RegExp.prototype.test),A=(w=TypeError,function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return c(w,t)});var w;function S(e){return function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];return l(e,t,n)}}function k(e,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f;t&&t(e,null);let i=n.length;for(;i--;){let t=n[i];if("string"==typeof t){const e=o(t);e!==t&&(r(n)||(n[i]=e),t=e)}e[t]=!0}return e}function E(e){for(let t=0;t<e.length;t++)b(e,t)||(e[t]=null);return e}function C(t){const r=s(null);for(const[n,o]of e(t))b(t,n)&&(Array.isArray(o)?r[n]=E(o):o&&"object"==typeof o&&o.constructor===Object?r[n]=C(o):r[n]=o);return r}function T(e,t){for(;null!==e;){const r=o(e,t);if(r){if(r.get)return S(r.get);if("function"==typeof r.value)return S(r.value)}e=n(e)}return function(){return null}}const R=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),M=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),O=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),P=i(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),I=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),N=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),$=i(["#text"]),_=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),L=i(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),j=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),z=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),D=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),F=a(/<%[\w\W]*|[\w\W]*%>/gm),B=a(/\${[\w\W]*}/gm),W=a(/^data-[\-\w.\u00B7-\uFFFF]/),H=a(/^aria-[\-\w]+$/),U=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),V=a(/^(?:\w+script|data):/i),q=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),X=a(/^html$/i),Y=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var G=Object.freeze({__proto__:null,MUSTACHE_EXPR:D,ERB_EXPR:F,TMPLIT_EXPR:B,DATA_ATTR:W,ARIA_ATTR:H,IS_ALLOWED_URI:U,IS_SCRIPT_OR_DATA:V,ATTR_WHITESPACE:q,DOCTYPE_NAME:X,CUSTOM_ELEMENT:Y});const K=1,J=3,Z=7,Q=8,ee=9,te=function(){return"undefined"==typeof window?null:window};return function t(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:te();const n=e=>t(e);if(n.version="3.1.6",n.removed=[],!r||!r.document||r.document.nodeType!==ee)return n.isSupported=!1,n;let{document:o}=r;const a=o,l=a.currentScript,{DocumentFragment:c,HTMLTemplateElement:w,Node:S,Element:E,NodeFilter:D,NamedNodeMap:F=r.NamedNodeMap||r.MozNamedAttrMap,HTMLFormElement:B,DOMParser:W,trustedTypes:H}=r,V=E.prototype,q=T(V,"cloneNode"),Y=T(V,"remove"),re=T(V,"nextSibling"),ne=T(V,"childNodes"),oe=T(V,"parentNode");if("function"==typeof w){const e=o.createElement("template");e.content&&e.content.ownerDocument&&(o=e.content.ownerDocument)}let ie,ae="";const{implementation:se,createNodeIterator:le,createDocumentFragment:ce,getElementsByTagName:ue}=o,{importNode:de}=a;let pe={};n.isSupported="function"==typeof e&&"function"==typeof oe&&se&&void 0!==se.createHTMLDocument;const{MUSTACHE_EXPR:fe,ERB_EXPR:he,TMPLIT_EXPR:me,DATA_ATTR:ve,ARIA_ATTR:ge,IS_SCRIPT_OR_DATA:ye,ATTR_WHITESPACE:be,CUSTOM_ELEMENT:xe}=G;let{IS_ALLOWED_URI:Ae}=G,we=null;const Se=k({},[...R,...M,...O,...I,...$]);let ke=null;const Ee=k({},[..._,...L,...j,...z]);let Ce=Object.seal(s(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Te=null,Re=null,Me=!0,Oe=!0,Pe=!1,Ie=!0,Ne=!1,$e=!0,_e=!1,Le=!1,je=!1,ze=!1,De=!1,Fe=!1,Be=!0,We=!1,He=!0,Ue=!1,Ve={},qe=null;const Xe=k({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ye=null;const Ge=k({},["audio","video","img","source","image","track"]);let Ke=null;const Je=k({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ze="http://www.w3.org/1998/Math/MathML",Qe="http://www.w3.org/2000/svg",et="http://www.w3.org/1999/xhtml";let tt=et,rt=!1,nt=null;const ot=k({},[Ze,Qe,et],h);let it=null;const at=["application/xhtml+xml","text/html"];let st=null,lt=null;const ct=o.createElement("form"),ut=function(e){return e instanceof RegExp||e instanceof Function},dt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!lt||lt!==e){if(e&&"object"==typeof e||(e={}),e=C(e),it=-1===at.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,st="application/xhtml+xml"===it?h:f,we=b(e,"ALLOWED_TAGS")?k({},e.ALLOWED_TAGS,st):Se,ke=b(e,"ALLOWED_ATTR")?k({},e.ALLOWED_ATTR,st):Ee,nt=b(e,"ALLOWED_NAMESPACES")?k({},e.ALLOWED_NAMESPACES,h):ot,Ke=b(e,"ADD_URI_SAFE_ATTR")?k(C(Je),e.ADD_URI_SAFE_ATTR,st):Je,Ye=b(e,"ADD_DATA_URI_TAGS")?k(C(Ge),e.ADD_DATA_URI_TAGS,st):Ge,qe=b(e,"FORBID_CONTENTS")?k({},e.FORBID_CONTENTS,st):Xe,Te=b(e,"FORBID_TAGS")?k({},e.FORBID_TAGS,st):{},Re=b(e,"FORBID_ATTR")?k({},e.FORBID_ATTR,st):{},Ve=!!b(e,"USE_PROFILES")&&e.USE_PROFILES,Me=!1!==e.ALLOW_ARIA_ATTR,Oe=!1!==e.ALLOW_DATA_ATTR,Pe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ie=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Ne=e.SAFE_FOR_TEMPLATES||!1,$e=!1!==e.SAFE_FOR_XML,_e=e.WHOLE_DOCUMENT||!1,ze=e.RETURN_DOM||!1,De=e.RETURN_DOM_FRAGMENT||!1,Fe=e.RETURN_TRUSTED_TYPE||!1,je=e.FORCE_BODY||!1,Be=!1!==e.SANITIZE_DOM,We=e.SANITIZE_NAMED_PROPS||!1,He=!1!==e.KEEP_CONTENT,Ue=e.IN_PLACE||!1,Ae=e.ALLOWED_URI_REGEXP||U,tt=e.NAMESPACE||et,Ce=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ce.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ce.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ce.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ne&&(Oe=!1),De&&(ze=!0),Ve&&(we=k({},$),ke=[],!0===Ve.html&&(k(we,R),k(ke,_)),!0===Ve.svg&&(k(we,M),k(ke,L),k(ke,z)),!0===Ve.svgFilters&&(k(we,O),k(ke,L),k(ke,z)),!0===Ve.mathMl&&(k(we,I),k(ke,j),k(ke,z))),e.ADD_TAGS&&(we===Se&&(we=C(we)),k(we,e.ADD_TAGS,st)),e.ADD_ATTR&&(ke===Ee&&(ke=C(ke)),k(ke,e.ADD_ATTR,st)),e.ADD_URI_SAFE_ATTR&&k(Ke,e.ADD_URI_SAFE_ATTR,st),e.FORBID_CONTENTS&&(qe===Xe&&(qe=C(qe)),k(qe,e.FORBID_CONTENTS,st)),He&&(we["#text"]=!0),_e&&k(we,["html","head","body"]),we.table&&(k(we,["tbody"]),delete Te.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ie=e.TRUSTED_TYPES_POLICY,ae=ie.createHTML("")}else void 0===ie&&(ie=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let r=null;const n="data-tt-policy-suffix";t&&t.hasAttribute(n)&&(r=t.getAttribute(n));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(H,l)),null!==ie&&"string"==typeof ae&&(ae=ie.createHTML(""));i&&i(e),lt=e}},pt=k({},["mi","mo","mn","ms","mtext"]),ft=k({},["foreignobject","annotation-xml"]),ht=k({},["title","style","font","a","script"]),mt=k({},[...M,...O,...P]),vt=k({},[...I,...N]),gt=function(e){p(n.removed,{element:e});try{oe(e).removeChild(e)}catch(t){Y(e)}},yt=function(e,t){try{p(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!ke[e])if(ze||De)try{gt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},bt=function(e){let t=null,r=null;if(je)e="<remove></remove>"+e;else{const t=m(e,/^[\r\n\t ]+/);r=t&&t[0]}"application/xhtml+xml"===it&&tt===et&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const n=ie?ie.createHTML(e):e;if(tt===et)try{t=(new W).parseFromString(n,it)}catch(e){}if(!t||!t.documentElement){t=se.createDocument(tt,"template",null);try{t.documentElement.innerHTML=rt?ae:n}catch(e){}}const i=t.body||t.documentElement;return e&&r&&i.insertBefore(o.createTextNode(r),i.childNodes[0]||null),tt===et?ue.call(t,_e?"html":"body")[0]:_e?t.documentElement:i},xt=function(e){return le.call(e.ownerDocument||e,e,D.SHOW_ELEMENT|D.SHOW_COMMENT|D.SHOW_TEXT|D.SHOW_PROCESSING_INSTRUCTION|D.SHOW_CDATA_SECTION,null)},At=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof F)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},wt=function(e){return"function"==typeof S&&e instanceof S},St=function(e,t,r){pe[e]&&u(pe[e],(e=>{e.call(n,t,r,lt)}))},kt=function(e){let t=null;if(St("beforeSanitizeElements",e,null),At(e))return gt(e),!0;const r=st(e.nodeName);if(St("uponSanitizeElement",e,{tagName:r,allowedTags:we}),e.hasChildNodes()&&!wt(e.firstElementChild)&&x(/<[/\w]/g,e.innerHTML)&&x(/<[/\w]/g,e.textContent))return gt(e),!0;if(e.nodeType===Z)return gt(e),!0;if($e&&e.nodeType===Q&&x(/<[/\w]/g,e.data))return gt(e),!0;if(!we[r]||Te[r]){if(!Te[r]&&Ct(r)){if(Ce.tagNameCheck instanceof RegExp&&x(Ce.tagNameCheck,r))return!1;if(Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(r))return!1}if(He&&!qe[r]){const t=oe(e)||e.parentNode,r=ne(e)||e.childNodes;if(r&&t)for(let n=r.length-1;n>=0;--n){const o=q(r[n],!0);o.__removalCount=(e.__removalCount||0)+1,t.insertBefore(o,re(e))}}return gt(e),!0}return e instanceof E&&!function(e){let t=oe(e);t&&t.tagName||(t={namespaceURI:tt,tagName:"template"});const r=f(e.tagName),n=f(t.tagName);return!!nt[e.namespaceURI]&&(e.namespaceURI===Qe?t.namespaceURI===et?"svg"===r:t.namespaceURI===Ze?"svg"===r&&("annotation-xml"===n||pt[n]):Boolean(mt[r]):e.namespaceURI===Ze?t.namespaceURI===et?"math"===r:t.namespaceURI===Qe?"math"===r&&ft[n]:Boolean(vt[r]):e.namespaceURI===et?!(t.namespaceURI===Qe&&!ft[n])&&!(t.namespaceURI===Ze&&!pt[n])&&!vt[r]&&(ht[r]||!mt[r]):!("application/xhtml+xml"!==it||!nt[e.namespaceURI]))}(e)?(gt(e),!0):"noscript"!==r&&"noembed"!==r&&"noframes"!==r||!x(/<\/no(script|embed|frames)/i,e.innerHTML)?(Ne&&e.nodeType===J&&(t=e.textContent,u([fe,he,me],(e=>{t=v(t,e," ")})),e.textContent!==t&&(p(n.removed,{element:e.cloneNode()}),e.textContent=t)),St("afterSanitizeElements",e,null),!1):(gt(e),!0)},Et=function(e,t,r){if(Be&&("id"===t||"name"===t)&&(r in o||r in ct))return!1;if(Oe&&!Re[t]&&x(ve,t));else if(Me&&x(ge,t));else if(!ke[t]||Re[t]){if(!(Ct(e)&&(Ce.tagNameCheck instanceof RegExp&&x(Ce.tagNameCheck,e)||Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(e))&&(Ce.attributeNameCheck instanceof RegExp&&x(Ce.attributeNameCheck,t)||Ce.attributeNameCheck instanceof Function&&Ce.attributeNameCheck(t))||"is"===t&&Ce.allowCustomizedBuiltInElements&&(Ce.tagNameCheck instanceof RegExp&&x(Ce.tagNameCheck,r)||Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(r))))return!1}else if(Ke[t]);else if(x(Ae,v(r,be,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==g(r,"data:")||!Ye[e])if(Pe&&!x(ye,v(r,be,"")));else if(r)return!1;return!0},Ct=function(e){return"annotation-xml"!==e&&m(e,xe)},Tt=function(e){St("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ke};let o=t.length;for(;o--;){const i=t[o],{name:a,namespaceURI:s,value:l}=i,c=st(a);let p="value"===a?l:y(l);if(r.attrName=c,r.attrValue=p,r.keepAttr=!0,r.forceKeepAttr=void 0,St("uponSanitizeAttribute",e,r),p=r.attrValue,$e&&x(/((--!?|])>)|<\/(style|title)/i,p)){yt(a,e);continue}if(r.forceKeepAttr)continue;if(yt(a,e),!r.keepAttr)continue;if(!Ie&&x(/\/>/i,p)){yt(a,e);continue}Ne&&u([fe,he,me],(e=>{p=v(p,e," ")}));const f=st(e.nodeName);if(Et(f,c,p)){if(!We||"id"!==c&&"name"!==c||(yt(a,e),p="user-content-"+p),ie&&"object"==typeof H&&"function"==typeof H.getAttributeType)if(s);else switch(H.getAttributeType(f,c)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{s?e.setAttributeNS(s,a,p):e.setAttribute(a,p),At(e)?gt(e):d(n.removed)}catch(e){}}}St("afterSanitizeAttributes",e,null)},Rt=function e(t){let r=null;const n=xt(t);for(St("beforeSanitizeShadowDOM",t,null);r=n.nextNode();)St("uponSanitizeShadowNode",r,null),kt(r)||(r.content instanceof c&&e(r.content),Tt(r));St("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null,o=null,i=null,s=null;if(rt=!e,rt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!wt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Le||dt(t),n.removed=[],"string"==typeof e&&(Ue=!1),Ue){if(e.nodeName){const t=st(e.nodeName);if(!we[t]||Te[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof S)r=bt("\x3c!----\x3e"),o=r.ownerDocument.importNode(e,!0),o.nodeType===K&&"BODY"===o.nodeName||"HTML"===o.nodeName?r=o:r.appendChild(o);else{if(!ze&&!Ne&&!_e&&-1===e.indexOf("<"))return ie&&Fe?ie.createHTML(e):e;if(r=bt(e),!r)return ze?null:Fe?ae:""}r&&je&&gt(r.firstChild);const l=xt(Ue?e:r);for(;i=l.nextNode();)kt(i)||(i.content instanceof c&&Rt(i.content),Tt(i));if(Ue)return e;if(ze){if(De)for(s=ce.call(r.ownerDocument);r.firstChild;)s.appendChild(r.firstChild);else s=r;return(ke.shadowroot||ke.shadowrootmode)&&(s=de.call(a,s,!0)),s}let d=_e?r.outerHTML:r.innerHTML;return _e&&we["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&x(X,r.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+r.ownerDocument.doctype.name+">\n"+d),Ne&&u([fe,he,me],(e=>{d=v(d,e," ")})),ie&&Fe?ie.createHTML(d):d},n.setConfig=function(){dt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Le=!0},n.clearConfig=function(){lt=null,Le=!1},n.isValidAttribute=function(e,t,r){lt||dt({});const n=st(e),o=st(t);return Et(n,o,r)},n.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},n.removeHook=function(e){if(pe[e])return d(pe[e])},n.removeHooks=function(e){pe[e]&&(pe[e]=[])},n.removeAllHooks=function(){pe={}},n}()}()},10424:e=>{"use strict";var t=/["'&<>]/;e.exports=function(e){var r,n=""+e,o=t.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a<n.length;a++){switch(n.charCodeAt(a)){case 34:r="&quot;";break;case 38:r="&amp;";break;case 39:r="&#39;";break;case 60:r="&lt;";break;case 62:r="&gt;";break;default:continue}s!==a&&(i+=n.substring(s,a)),s=a+1,i+=r}return s!==a?i+n.substring(s,a):i}},41365:e=>{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,o,i;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(o=n;0!=o--;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(i=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(o=n;0!=o--;)if(!Object.prototype.hasOwnProperty.call(r,i[o]))return!1;for(o=n;0!=o--;){var a=i[o];if(!e(t[a],r[a]))return!1}return!0}return t!=t&&r!=r}},45465:function(e,t,r){var n,o;void 0===(o="function"==typeof(n=function(){"use strict";function t(e,t,r){var n=new XMLHttpRequest;n.open("GET",e),n.responseType="blob",n.onload=function(){s(n.response,t,r)},n.onerror=function(){console.error("could not download file")},n.send()}function n(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function o(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(r){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof r.g&&r.g.global===r.g?r.g:void 0,a=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=i.saveAs||("object"!=typeof window||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(e,r,a){var s=i.URL||i.webkitURL,l=document.createElement("a");r=r||e.name||"download",l.download=r,l.rel="noopener","string"==typeof e?(l.href=e,l.origin===location.origin?o(l):n(l.href)?t(e,r,a):o(l,l.target="_blank")):(l.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(l.href)}),4e4),setTimeout((function(){o(l)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,r,i){if(r=r||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}(e,i),r);else if(n(e))t(e,r,i);else{var a=document.createElement("a");a.href=e,a.target="_blank",setTimeout((function(){o(a)}))}}:function(e,r,n,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return t(e,r,n);var s="application/octet-stream"===e.type,l=/constructor/i.test(i.HTMLElement)||i.safari,c=/CriOS\/[\d]+/.test(navigator.userAgent);if((c||s&&l||a)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var e=u.result;e=c?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},u.readAsDataURL(e)}else{var d=i.URL||i.webkitURL,p=d.createObjectURL(e);o?o.location=p:location.href=p,o=null,setTimeout((function(){d.revokeObjectURL(p)}),4e4)}});i.saveAs=s.saveAs=s,e.exports=s})?n.apply(t,[]):n)||(e.exports=o)},45834:(e,t,r)=>{"use strict";r.d(t,{Ki:()=>l,EY:()=>o(),Tx:()=>i.A});var n=r(52404),o=r.n(n),i=r(78245),a=r(35451);function s(e){const t=new FileReader;return new Promise(((r,n)=>{t.onerror=()=>{t.abort(),n(new Error("problem reading blob"))},t.onabort=()=>{n(new Error("blob reading was aborted"))},t.onload=()=>{t.result&&"string"!=typeof t.result?r(t.result):n(new Error("unknown error reading blob"))},t.readAsArrayBuffer(e)}))}class l{constructor(e){this.blob=e,this.size=e.size}async read(e,t=0,r,n=0){if(!r)return{bytesRead:0,buffer:e};const o=n,i=o+r,l=await s(this.blob.slice(o,i)),c=a.hp.from(l);return{bytesRead:c.copy(e,t),buffer:c}}async readFile(e){const t="string"==typeof e?e:null==e?void 0:e.encoding;if("utf8"===t)return function(e){const t=new FileReader;return new Promise(((r,n)=>{t.onerror=()=>{t.abort(),n(new Error("problem reading blob"))},t.onabort=()=>{n(new Error("blob reading was aborted"))},t.onload=()=>{t.result&&"string"==typeof t.result?r(t.result):n(new Error("unknown error reading blob"))},t.readAsText(e)}))}(this.blob);if(t)throw new Error(`unsupported encoding: ${t}`);const r=await s(this.blob);return a.hp.from(r)}async stat(){return{size:this.size}}async close(){}}},96607:(e,t)=>{t.read=function(e,t,r,n,o){var i,a,s=8*o-n-1,l=(1<<s)-1,c=l>>1,u=-7,d=r?o-1:0,p=r?-1:1,f=e[t+d];for(d+=p,i=f&(1<<-u)-1,f>>=-u,u+=s;u>0;i=256*i+e[t+d],d+=p,u-=8);for(a=i&(1<<-u)-1,i>>=-u,u+=n;u>0;a=256*a+e[t+d],d+=p,u-=8);if(0===i)i=1-c;else{if(i===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),i-=c}return(f?-1:1)*a*Math.pow(2,i-n)},t.write=function(e,t,r,n,o,i){var a,s,l,c=8*i-o-1,u=(1<<c)-1,d=u>>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:i-1,h=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=u?(s=0,a=u):a+d>=1?(s=(t*l-1)*Math.pow(2,o),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,o),a=0));o>=8;e[r+f]=255&s,f+=h,s/=256,o-=8);for(a=a<<o|s,c+=o;c>0;e[r+f]=255&a,f+=h,a/=256,c-=8);e[r+f-h]|=128*m}},503:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&null!==e}},75751:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(2005)),i=n(r(91301)),a=r(42942),s=r(50947),l=r(95274),c=r(25435),u=function(){function e(t,r){(0,o.default)(this,e),this._grammar=t,this._exprStr=r,this._ast=null}return(0,i.default)(e,[{key:"compile",value:function(){var e=new s(this._grammar),t=new l(this._grammar),r=e.tokenize(this._exprStr);return t.addTokens(r),this._ast=t.complete(),this}},{key:"eval",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._eval(e,Promise)}},{key:"evalSync",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this._eval(e,c);if(t.error)throw t.error;return t.value}},{key:"_eval",value:function(e,t){var r=this;return t.resolve().then((function(){var n=r._getAst();return new a(r._grammar,e,void 0,t).eval(n)}))}},{key:"_getAst",value:function(){return this._ast||this.compile(),this._ast}}]),e}();e.exports=u},26400:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(80403)),i=n(r(2005)),a=n(r(91301)),s=r(75751),l=r(78800).getGrammar,c=function(){function e(){(0,i.default)(this,e),this.expr=this.expr.bind(this),this._grammar=l()}return(0,a.default)(e,[{key:"addBinaryOp",value:function(e,t,r,n){this._addGrammarElement(e,(0,o.default)({type:"binaryOp",precedence:t},n?"evalOnDemand":"eval",r))}},{key:"addFunction",value:function(e,t){this._grammar.functions[e]=t}},{key:"addFunctions",value:function(e){for(var t in e)this._grammar.functions[t]=e[t]}},{key:"addUnaryOp",value:function(e,t){this._addGrammarElement(e,{type:"unaryOp",weight:1/0,eval:t})}},{key:"addTransform",value:function(e,t){this._grammar.transforms[e]=t}},{key:"addTransforms",value:function(e){for(var t in e)this._grammar.transforms[t]=e[t]}},{key:"compile",value:function(e){return this.createExpression(e).compile()}},{key:"createExpression",value:function(e){return new s(this._grammar,e)}},{key:"getFunction",value:function(e){return this._grammar.functions[e]}},{key:"getTransform",value:function(e){return this._grammar.transforms[e]}},{key:"eval",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.createExpression(e).eval(t)}},{key:"evalSync",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.createExpression(e).evalSync(t)}},{key:"expr",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=e.reduce((function(e,t,n){return e+(t+(n<r.length?r[n]:""))}),"");return this.createExpression(o)}},{key:"removeOp",value:function(e){!this._grammar.elements[e]||"binaryOp"!==this._grammar.elements[e].type&&"unaryOp"!==this._grammar.elements[e].type||delete this._grammar.elements[e]}},{key:"_addGrammarElement",value:function(e,t){this._grammar.elements[e]=t}}]),e}();e.exports=new c,e.exports.Jexl=c},50947:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(2005)),i=n(r(91301)),a=/^-?(?:(?:[0-9]*\.[0-9]+)|[0-9]+)$/,s=/^[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][a-zA-Zа-яА-Я0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*$/,l=/\\\\/,c=/^\s*$/,u=["'(?:(?:\\\\')|[^'])*'",'"(?:(?:\\\\")|[^"])*"',"\\s+","\\btrue\\b","\\bfalse\\b"],d=["[a-zA-Zа-яА-Я_À-ÖØ-öø-ÿ\\$][a-zA-Z0-9а-яА-Я_À-ÖØ-öø-ÿ\\$]*","(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)"],p=["binaryOp","unaryOp","openParen","openBracket","question","colon"],f=function(){function e(t){(0,o.default)(this,e),this._grammar=t}return(0,i.default)(e,[{key:"getElements",value:function(e){var t=this._getSplitRegex();return e.split(t).filter((function(e){return e}))}},{key:"getTokens",value:function(e){for(var t=[],r=!1,n=0;n<e.length;n++)this._isWhitespace(e[n])?t.length&&(t[t.length-1].raw+=e[n]):"-"===e[n]&&this._isNegative(t)?r=!0:(r&&(e[n]="-"+e[n],r=!1),t.push(this._createToken(e[n])));return r&&t.push(this._createToken("-")),t}},{key:"tokenize",value:function(e){var t=this.getElements(e);return this.getTokens(t)}},{key:"_createToken",value:function(e){var t={type:"literal",value:e,raw:e};if('"'===e[0]||"'"===e[0])t.value=this._unquote(e);else if(e.match(a))t.value=parseFloat(e);else if("true"===e||"false"===e)t.value="true"===e;else if(this._grammar.elements[e])t.type=this._grammar.elements[e].type;else{if(!e.match(s))throw new Error("Invalid expression token: ".concat(e));t.type="identifier"}return t}},{key:"_escapeRegExp",value:function(e){return(e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).match(s)&&(e="\\b"+e+"\\b"),e}},{key:"_getSplitRegex",value:function(){var e=this;if(!this._splitRegex){var t=Object.keys(this._grammar.elements).sort((function(e,t){return t.length-e.length})).map((function(t){return e._escapeRegExp(t)}),this);this._splitRegex=new RegExp("("+[u.join("|"),t.join("|"),d.join("|")].join("|")+")")}return this._splitRegex}},{key:"_isNegative",value:function(e){return!e.length||p.some((function(t){return t===e[e.length-1].type}))}},{key:"_isWhitespace",value:function(e){return!!e.match(c)}},{key:"_unquote",value:function(e){var t=e[0],r=new RegExp("\\\\"+t,"g");return e.substr(1,e.length-2).replace(r,t).replace(l,"\\")}}]),e}();e.exports=f},25435:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(2005)),i=n(r(91301)),a=function(){function e(t){(0,o.default)(this,e),t(this._resolve.bind(this),this._reject.bind(this))}return(0,i.default)(e,[{key:"catch",value:function(e){if(this.error)try{this._resolve(e(this.error))}catch(e){this._reject(e)}return this}},{key:"then",value:function(e,t){if(!this.error)try{this._resolve(e(this.value))}catch(e){this._reject(e)}return t&&this.catch(t),this}},{key:"_reject",value:function(e){this.value=void 0,this.error=e}},{key:"_resolve",value:function(t){t instanceof e?t.error?this._reject(t.error):this._resolve(t.value):(this.value=t,this.error=void 0)}}]),e}();a.all=function(e){return new a((function(t){t(e.map((function(e){for(;e instanceof a;){if(e.error)throw Error(e.error);e=e.value}return e})))}))},a.resolve=function(e){return new a((function(t){return t(e)}))},a.reject=function(e){return new a((function(t,r){return r(e)}))},e.exports=a},42942:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(2005)),i=n(r(91301)),a=r(39098),s=function(){function e(t,r,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Promise;(0,o.default)(this,e),this._grammar=t,this._context=r||{},this._relContext=n||this._context,this.Promise=i}return(0,i.default)(e,[{key:"eval",value:function(e){var t=this;return this.Promise.resolve().then((function(){return a[e.type].call(t,e)}))}},{key:"evalArray",value:function(e){var t=this;return this.Promise.all(e.map((function(e){return t.eval(e)})))}},{key:"evalMap",value:function(e){var t=this,r=Object.keys(e),n={},o=r.map((function(r){return t.eval(e[r])}));return this.Promise.all(o).then((function(e){return e.forEach((function(e,t){n[r[t]]=e})),n}))}},{key:"_filterRelative",value:function(t,r){var n=this,o=[];return Array.isArray(t)||(t=void 0===t?[]:[t]),t.forEach((function(t){var i=new e(n._grammar,n._context,t,n.Promise);o.push(i.eval(r))})),this.Promise.all(o).then((function(e){var r=[];return e.forEach((function(e,n){e&&r.push(t[n])})),r}))}},{key:"_filterStatic",value:function(e,t){return this.eval(t).then((function(t){return"boolean"==typeof t?t?e:void 0:e[t]}))}}]),e}();e.exports=s},39098:(e,t,r)=>{"use strict";var n=r(92120)(r(28946)),o={functions:"Jexl Function",transforms:"Transform"};t.ArrayLiteral=function(e){return this.evalArray(e.value)},t.BinaryExpression=function(e){var t=this,r=this._grammar.elements[e.operator];if(r.evalOnDemand){var n=function(e){return{eval:function(){return t.eval(e)}}};return r.evalOnDemand(n(e.left),n(e.right))}return this.Promise.all([this.eval(e.left),this.eval(e.right)]).then((function(e){return r.eval(e[0],e[1])}))},t.ConditionalExpression=function(e){var t=this;return this.eval(e.test).then((function(r){return r?e.consequent?t.eval(e.consequent):r:t.eval(e.alternate)}))},t.FilterExpression=function(e){var t=this;return this.eval(e.subject).then((function(r){return e.relative?t._filterRelative(r,e.expr):t._filterStatic(r,e.expr)}))},t.Identifier=function(e){return e.from?this.eval(e.from).then((function(t){if(null!=t)return Array.isArray(t)&&(t=t[0]),t[e.value]})):e.relative?this._relContext[e.value]:this._context[e.value]},t.Literal=function(e){return e.value},t.ObjectLiteral=function(e){return this.evalMap(e.value)},t.FunctionCall=function(e){var t=o[e.pool];if(!t)throw new Error("Corrupt AST: Pool '".concat(e.pool,"' not found"));var r=this._grammar[e.pool][e.name];if(!r)throw new Error("".concat(t," ").concat(e.name," is not defined."));return this.evalArray(e.args||[]).then((function(e){return r.apply(void 0,(0,n.default)(e))}))},t.UnaryExpression=function(e){var t=this;return this.eval(e.right).then((function(r){return t._grammar.elements[e.operator].eval(r)}))}},78800:(e,t)=>{"use strict";t.getGrammar=function(){return{elements:{".":{type:"dot"},"[":{type:"openBracket"},"]":{type:"closeBracket"},"|":{type:"pipe"},"{":{type:"openCurl"},"}":{type:"closeCurl"},":":{type:"colon"},",":{type:"comma"},"(":{type:"openParen"},")":{type:"closeParen"},"?":{type:"question"},"+":{type:"binaryOp",precedence:30,eval:function(e,t){return e+t}},"-":{type:"binaryOp",precedence:30,eval:function(e,t){return e-t}},"*":{type:"binaryOp",precedence:40,eval:function(e,t){return e*t}},"/":{type:"binaryOp",precedence:40,eval:function(e,t){return e/t}},"//":{type:"binaryOp",precedence:40,eval:function(e,t){return Math.floor(e/t)}},"%":{type:"binaryOp",precedence:50,eval:function(e,t){return e%t}},"^":{type:"binaryOp",precedence:50,eval:function(e,t){return Math.pow(e,t)}},"==":{type:"binaryOp",precedence:20,eval:function(e,t){return e==t}},"!=":{type:"binaryOp",precedence:20,eval:function(e,t){return e!=t}},">":{type:"binaryOp",precedence:20,eval:function(e,t){return e>t}},">=":{type:"binaryOp",precedence:20,eval:function(e,t){return e>=t}},"<":{type:"binaryOp",precedence:20,eval:function(e,t){return e<t}},"<=":{type:"binaryOp",precedence:20,eval:function(e,t){return e<=t}},"&&":{type:"binaryOp",precedence:10,evalOnDemand:function(e,t){return e.eval().then((function(e){return e?t.eval():e}))}},"||":{type:"binaryOp",precedence:10,evalOnDemand:function(e,t){return e.eval().then((function(e){return e||t.eval()}))}},in:{type:"binaryOp",precedence:20,eval:function(e,t){return"string"==typeof t?-1!==t.indexOf(e):!!Array.isArray(t)&&t.some((function(t){return t===e}))}},"!":{type:"unaryOp",precedence:1/0,eval:function(e){return!e}}},functions:{},transforms:{}}}},95274:(e,t,r)=>{"use strict";var n=r(92120),o=n(r(2005)),i=n(r(91301)),a=r(91444),s=r(46167).x,l=function(){function e(t,r,n){(0,o.default)(this,e),this._grammar=t,this._state="expectOperand",this._tree=null,this._exprStr=r||"",this._relative=!1,this._stopMap=n||{}}return(0,i.default)(e,[{key:"addToken",value:function(e){if("complete"===this._state)throw new Error("Cannot add a new token to a completed Parser");var t=s[this._state],r=this._exprStr;if(this._exprStr+=e.raw,t.subHandler){this._subParser||this._startSubExpression(r);var n=this._subParser.addToken(e);if(n){if(this._endSubExpression(),this._parentStop)return n;this._state=n}}else{if(!t.tokenTypes[e.type]){if(this._stopMap[e.type])return this._stopMap[e.type];throw new Error("Token ".concat(e.raw," (").concat(e.type,") unexpected in expression: ").concat(this._exprStr))}var o=t.tokenTypes[e.type],i=a[e.type];o.handler&&(i=o.handler),i&&i.call(this,e),o.toState&&(this._state=o.toState)}return!1}},{key:"addTokens",value:function(e){e.forEach(this.addToken,this)}},{key:"complete",value:function(){if(this._cursor&&!s[this._state].completable)throw new Error("Unexpected end of expression: ".concat(this._exprStr));return this._subParser&&this._endSubExpression(),this._state="complete",this._cursor?this._tree:null}},{key:"isRelative",value:function(){return this._relative}},{key:"_endSubExpression",value:function(){s[this._state].subHandler.call(this,this._subParser.complete()),this._subParser=null}},{key:"_placeAtCursor",value:function(e){this._cursor?(this._cursor.right=e,this._setParent(e,this._cursor)):this._tree=e,this._cursor=e}},{key:"_placeBeforeCursor",value:function(e){this._cursor=this._cursor._parent,this._placeAtCursor(e)}},{key:"_setParent",value:function(e,t){Object.defineProperty(e,"_parent",{value:t,writable:!0})}},{key:"_startSubExpression",value:function(t){var r=s[this._state].endStates;r||(this._parentStop=!0,r=this._stopMap),this._subParser=new e(this._grammar,t,r)}}]),e}();e.exports=l},91444:(e,t)=>{"use strict";t.argVal=function(e){e&&this._cursor.args.push(e)},t.arrayStart=function(){this._placeAtCursor({type:"ArrayLiteral",value:[]})},t.arrayVal=function(e){e&&this._cursor.value.push(e)},t.binaryOp=function(e){for(var t=this._grammar.elements[e.value].precedence||0,r=this._cursor._parent;r&&r.operator&&this._grammar.elements[r.operator].precedence>=t;)this._cursor=r,r=r._parent;var n={type:"BinaryExpression",operator:e.value,left:this._cursor};this._setParent(this._cursor,n),this._cursor=r,this._placeAtCursor(n)},t.dot=function(){this._nextIdentEncapsulate=this._cursor&&"UnaryExpression"!==this._cursor.type&&("BinaryExpression"!==this._cursor.type||"BinaryExpression"===this._cursor.type&&this._cursor.right),this._nextIdentRelative=!this._cursor||this._cursor&&!this._nextIdentEncapsulate,this._nextIdentRelative&&(this._relative=!0)},t.filter=function(e){this._placeBeforeCursor({type:"FilterExpression",expr:e,relative:this._subParser.isRelative(),subject:this._cursor})},t.functionCall=function(){this._placeBeforeCursor({type:"FunctionCall",name:this._cursor.value,args:[],pool:"functions"})},t.identifier=function(e){var t={type:"Identifier",value:e.value};this._nextIdentEncapsulate?(t.from=this._cursor,this._placeBeforeCursor(t),this._nextIdentEncapsulate=!1):(this._nextIdentRelative&&(t.relative=!0,this._nextIdentRelative=!1),this._placeAtCursor(t))},t.literal=function(e){this._placeAtCursor({type:"Literal",value:e.value})},t.objKey=function(e){this._curObjKey=e.value},t.objStart=function(){this._placeAtCursor({type:"ObjectLiteral",value:{}})},t.objVal=function(e){this._cursor.value[this._curObjKey]=e},t.subExpression=function(e){this._placeAtCursor(e)},t.ternaryEnd=function(e){this._cursor.alternate=e},t.ternaryMid=function(e){this._cursor.consequent=e},t.ternaryStart=function(){this._tree={type:"ConditionalExpression",test:this._tree},this._cursor=this._tree},t.transform=function(e){this._placeBeforeCursor({type:"FunctionCall",name:e.value,args:[this._cursor],pool:"transforms"})},t.unaryOp=function(e){this._placeAtCursor({type:"UnaryExpression",operator:e.value})}},46167:(e,t,r)=>{"use strict";var n=r(91444);t.x={expectOperand:{tokenTypes:{literal:{toState:"expectBinOp"},identifier:{toState:"identifier"},unaryOp:{},openParen:{toState:"subExpression"},openCurl:{toState:"expectObjKey",handler:n.objStart},dot:{toState:"traverse"},openBracket:{toState:"arrayVal",handler:n.arrayStart}}},expectBinOp:{tokenTypes:{binaryOp:{toState:"expectOperand"},pipe:{toState:"expectTransform"},dot:{toState:"traverse"},question:{toState:"ternaryMid",handler:n.ternaryStart}},completable:!0},expectTransform:{tokenTypes:{identifier:{toState:"postTransform",handler:n.transform}}},expectObjKey:{tokenTypes:{identifier:{toState:"expectKeyValSep",handler:n.objKey},closeCurl:{toState:"expectBinOp"}}},expectKeyValSep:{tokenTypes:{colon:{toState:"objVal"}}},postTransform:{tokenTypes:{openParen:{toState:"argVal"},binaryOp:{toState:"expectOperand"},dot:{toState:"traverse"},openBracket:{toState:"filter"},pipe:{toState:"expectTransform"}},completable:!0},postArgs:{tokenTypes:{binaryOp:{toState:"expectOperand"},dot:{toState:"traverse"},openBracket:{toState:"filter"},pipe:{toState:"expectTransform"}},completable:!0},identifier:{tokenTypes:{binaryOp:{toState:"expectOperand"},dot:{toState:"traverse"},openBracket:{toState:"filter"},openParen:{toState:"argVal",handler:n.functionCall},pipe:{toState:"expectTransform"},question:{toState:"ternaryMid",handler:n.ternaryStart}},completable:!0},traverse:{tokenTypes:{identifier:{toState:"identifier"}}},filter:{subHandler:n.filter,endStates:{closeBracket:"identifier"}},subExpression:{subHandler:n.subExpression,endStates:{closeParen:"expectBinOp"}},argVal:{subHandler:n.argVal,endStates:{comma:"argVal",closeParen:"postArgs"}},objVal:{subHandler:n.objVal,endStates:{comma:"expectObjKey",closeCurl:"expectBinOp"}},arrayVal:{subHandler:n.arrayVal,endStates:{comma:"arrayVal",closeBracket:"expectBinOp"}},ternaryMid:{subHandler:n.ternaryMid,endStates:{colon:"ternaryEnd"}},ternaryEnd:{subHandler:n.ternaryEnd,completable:!0}}},76519:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});class n{constructor(){this.events=Object.create(null)}on(e,t){var r=this.events[e];return r||(r=[],this.events[e]=r),r.push(t),this}off(e,t){var r=this.events[e];if(r){var n=r.indexOf(t);-1!==n&&r.splice(n,1)}return this}emit(e,t){var r=this.events[e];if(r)for(var n=0;n<r.length;n++)r[n](t);return this}}function o(e,t=[]){if(function(e){try{return e instanceof ArrayBuffer||e instanceof ImageBitmap||e instanceof OffscreenCanvas||e instanceof MessagePort}catch(e){return!1}}(e))t.push(e);else if(n=e,Object(n)===n&&!("containsNoTransferables"in e))for(var r in e)o(e[r],t);var n;return t}var i=r(39154);const a={Client:class extends n{constructor({workers:e}){super(),this.idx=0,this.calls={},this.timeouts={},this.errors={},this.workers=[...e],this.handler=this.handler.bind(this),this.catch=this.catch.bind(this),this.init()}init(){this.workers.forEach(this.listen,this)}listen(e){e.addEventListener("message",this.handler),e.addEventListener("error",this.catch)}handler(e){var{uid:t,error:r,method:n,eventName:o,data:i,libRpc:a}=e.data;a&&(r?this.reject(t,r):n?this.resolve(t,i):o&&this.emit(o,i))}catch({message:e,lineno:t,filename:r,libRpc:n}){n&&this.emit("error",{message:e,lineno:t,filename:r})}reject(e,t){this.errors[e]&&(this.errors[e]((0,i.deserializeError)(t)),this.clear(e))}resolve(e,t){this.calls[e]&&(this.calls[e](t),this.clear(e))}clear(e){clearTimeout(this.timeouts[e]),delete this.timeouts[e],delete this.calls[e],delete this.errors[e]}call(e,t,{timeout:r=2e3}={}){var n=Math.floor(1e10*(1+Math.random())).toString(16),i=o(t);return new Promise(((o,a)=>{this.timeouts[n]=setTimeout((()=>this.reject(n,new Error(`Timeout exceeded for RPC method "${e}"`))),r),this.calls[n]=o,this.errors[n]=a,this.workers[this.idx].postMessage({method:e,uid:n,data:t,libRpc:!0},i),this.idx=++this.idx%this.workers.length}))}},Server:class{constructor(e){this.methods=e,this.listen()}listen(){self.addEventListener("message",this.handler.bind(this))}handler(e){var{libRpc:t,method:r,uid:n,data:o}=e.data;t&&(this.methods[r]?Promise.resolve(o).then(this.methods[r]).then((e=>this.reply(n,r,e)),(e=>this.throw(n,(0,i.serializeError)(e)))):this.throw(n,`Unknown RPC method "${r}"`))}reply(e,t,r){try{var n=o(r);self.postMessage({uid:e,method:t,data:r,libRpc:!0},n)}catch(t){this.throw(e,(0,i.serializeError)(t))}}throw(e,t){self.postMessage({uid:e,error:t,libRpc:!0})}emit(e,t){var r=o(t);self.postMessage({eventName:e,data:t,libRpc:!0},r)}}}},45103:e=>{function t(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function r(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}e.exports=function(e,n,o){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("script");"function"==typeof n&&(o=n,n={}),n=n||{},o=o||function(){},a.type=n.type||"text/javascript",a.charset=n.charset||"utf8",a.async=!("async"in n)||!!n.async,a.src=e,n.attrs&&function(e,t){for(var r in t)e.setAttribute(r,t[r])}(a,n.attrs),n.text&&(a.text=""+n.text),("onload"in a?t:r)(a,o),a.onload||t(a,o),i.appendChild(a)}},2356:(e,t,r)=>{"use strict";r.d(t,{nu:()=>p,FH:()=>u.Y,eO:()=>c.e,Pe:()=>c.P,PA:()=>d.P,tl:()=>s,WO:()=>h,iz:()=>f,WC:()=>m,q3:()=>v,uR:()=>g});var n=r(42489),o=r(7552);if(!o.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!n.makeObservable)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");var i=r(28485);function a(e){e()}function s(e){e||(e=a),(0,n.configure)({reactionScheduler:e})}var l=r(77173),c=r(89059),u=r(66821),d=r(8167);function p(e){var t=e.children,r=e.render,n=t||r;return"function"!=typeof n?null:(0,l.q)(n)}function f(e,t){return(0,o.useState)((function(){return(0,n.observable)(e(),t,{autoBind:!0})}))[0]}function h(e){var t=(0,o.useState)((function(){return(0,n.observable)(e,{},{deep:!1})}))[0];return(0,n.runInAction)((function(){Object.assign(t,e)})),t}function m(e,t){var r=t&&h(t);return(0,o.useState)((function(){return(0,n.observable)(e(r),void 0,{autoBind:!0})}))[0]}function v(e,t){return void 0===t&&(t="observed"),(0,l.q)(e,t)}function g(e){(0,c.e)(e)}p.displayName="Observer",s(i.unstable_batchedUpdates),u.Y.finalizeAllImmediately},89059:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,e:()=>o});var n=!1;function o(e){n=e}function i(){return n}},77173:(e,t,r)=>{"use strict";r.d(t,{q:()=>u});var n=r(42489),o=r(7552);function i(e){return(0,n.getDependencyTree)(e)}var a=r(89059),s=r(66821),l=r(95436);function c(e){e.reaction=new n.Reaction("observer".concat(e.name),(function(){var t;e.stateVersion=Symbol(),null===(t=e.onStoreChange)||void 0===t||t.call(e)}))}function u(e,t){if(void 0===t&&(t="observed"),(0,a.P)())return e();var r=o.useRef(null);if(!r.current){var n={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:t,subscribe:function(e){return s.Y.unregister(n),n.onStoreChange=e,n.reaction||(c(n),n.stateVersion=Symbol()),function(){var e;n.onStoreChange=null,null===(e=n.reaction)||void 0===e||e.dispose(),n.reaction=null}},getSnapshot:function(){return n.stateVersion}};r.current=n}var u,d,p=r.current;if(p.reaction||(c(p),s.Y.register(r,p,p)),o.useDebugValue(p.reaction,i),(0,l.useSyncExternalStore)(p.subscribe,p.getSnapshot,p.getSnapshot),p.reaction.track((function(){try{u=e()}catch(e){d=e}})),d)throw d;return u}},66821:(e,t,r)=>{"use strict";r.d(t,{Y:()=>o});var n=function(){function e(e){var t=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var r=Date.now();t.registrations.forEach((function(n,o){r-n.registeredAt>=e&&(t.finalize(n.value),t.registrations.delete(o))})),t.registrations.size>0&&t.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){this.registrations.set(r,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.registrations.delete(e)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}}),e}(),o=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:n)((function(e){var t;null===(t=e.reaction)||void 0===t||t.dispose(),e.reaction=null}))},68446:(e,t,r)=>{"use strict";r.r(t),r.d(t,{MobXProviderContext:()=>S,Observer:()=>i.nu,PropTypes:()=>j,Provider:()=>k,disposeOnUnmount:()=>I,enableStaticRendering:()=>i.eO,inject:()=>C,isUsingStaticRendering:()=>i.Pe,observer:()=>x,observerBatching:()=>i.tl,useAsObservableSource:()=>i.WO,useLocalObservable:()=>i.iz,useLocalStore:()=>i.WC,useObserver:()=>i.q3,useStaticRendering:()=>i.uR});var n=r(42489),o=r(7552),i=r(2356);function a(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}var s={$$typeof:1,render:1,compare:1,type:1,childContextTypes:1,contextType:1,contextTypes:1,defaultProps:1,getDefaultProps:1,getDerivedStateFromError:1,getDerivedStateFromProps:1,mixins:1,displayName:1,propTypes:1},l=Symbol("patchMixins"),c=Symbol("patchedDefinition");function u(e,t){for(var r=this,n=arguments.length,o=new Array(n>2?n-2:0),i=2;i<n;i++)o[i-2]=arguments[i];t.locks++;try{var a;return null!=e&&(a=e.apply(this,o)),a}finally{t.locks--,0===t.locks&&t.methods.forEach((function(e){e.apply(r,o)}))}}function d(e,t){return function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];u.call.apply(u,[this,e,t].concat(n))}}function p(e,t,r){var n=function(e,t){var r=e[l]=e[l]||{},n=r[t]=r[t]||{};return n.locks=n.locks||0,n.methods=n.methods||[],n}(e,t);n.methods.indexOf(r)<0&&n.methods.push(r);var o=Object.getOwnPropertyDescriptor(e,t);if(!o||!o[c]){var i=e[t],a=f(e,t,o?o.enumerable:void 0,n,i);Object.defineProperty(e,t,a)}}function f(e,t,r,n,o){var i,a=d(o,n);return(i={})[c]=!0,i.get=function(){return a},i.set=function(o){if(this===e)a=d(o,n);else{var i=f(this,t,r,n,o);Object.defineProperty(this,t,i)}},i.configurable=!0,i.enumerable=r,i}var h=Symbol("ObserverAdministration"),m=Symbol("isMobXReactObserver");function v(e){var t;return null!=(t=e[h])?t:e[h]={reaction:null,mounted:!1,reactionInvalidatedBeforeMount:!1,forceUpdate:null,name:g(e.constructor),state:void 0,props:void 0,context:void 0}}function g(e){return e.displayName||e.name||"<component>"}function y(e){var t=e.bind(this),r=v(this);return function(){r.reaction||(r.reaction=function(e){return new n.Reaction(e.name+".render()",(function(){if(e.mounted)try{null==e.forceUpdate||e.forceUpdate()}catch(r){var t;null==(t=e.reaction)||t.dispose(),e.reaction=null}else e.reactionInvalidatedBeforeMount=!0}))}(r),r.mounted||i.FH.register(this,r,this));var e=void 0,o=void 0;if(r.reaction.track((function(){try{o=(0,n._allowStateChanges)(!1,t)}catch(t){e=t}})),e)throw e;return o}}function b(e,t){return(0,i.Pe)()&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==t||!function(e,t){if(a(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(var o=0;o<r.length;o++)if(!Object.hasOwnProperty.call(t,r[o])||!a(e[r[o]],t[r[o]]))return!1;return!0}(this.props,e)}function x(e,t){if(t&&"class"!==t.kind)throw new Error("The @observer decorator can be used on classes only");return!0===e.isMobxInjector&&console.warn("Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`"),Object.prototype.isPrototypeOf.call(o.Component,e)||Object.prototype.isPrototypeOf.call(o.PureComponent,e)?function(e){var t=e.prototype;if(e[m]){var r=g(e);throw new Error("The provided component class ("+r+") has already been declared as an observer component.")}if(e[m]=!0,t.componentWillReact)throw new Error("The componentWillReact life-cycle event is no longer supported");if(e.__proto__!==o.PureComponent)if(t.shouldComponentUpdate){if(t.shouldComponentUpdate!==b)throw new Error("It is not allowed to use shouldComponentUpdate in observer based components.")}else t.shouldComponentUpdate=b;var n=t.render;if("function"!=typeof n){var a=g(e);throw new Error("[mobx-react] class component ("+a+") is missing `render` method.\n`observer` requires `render` being a function defined on prototype.\n`render = () => {}` or `render = function() {}` is not supported.")}t.render=function(){return Object.defineProperty(this,"render",{configurable:!1,writable:!1,value:(0,i.Pe)()?n:y.call(this,n)}),this.render()};var s=t.componentDidMount;return t.componentDidMount=function(){var e=this,t=v(this);return t.mounted=!0,i.FH.unregister(this),t.forceUpdate=function(){return e.forceUpdate()},t.reaction&&!t.reactionInvalidatedBeforeMount||t.forceUpdate(),null==s?void 0:s.apply(this,arguments)},p(t,"componentWillUnmount",(function(){var e;if(!(0,i.Pe)()){var t=v(this);null==(e=t.reaction)||e.dispose(),t.reaction=null,t.forceUpdate=null,t.mounted=!1,t.reactionInvalidatedBeforeMount=!1}})),e}(e):(0,i.PA)(e)}function A(){return A=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},A.apply(this,arguments)}var w=["children"],S=o.createContext({});function k(e){var t=e.children,r=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,w),n=o.useContext(S),i=o.useRef(A({},n,r)).current;return o.createElement(S.Provider,{value:i},t)}function E(e,t,r,n){var i,a,l,c=o.forwardRef((function(r,n){var i=A({},r),a=o.useContext(S);return Object.assign(i,e(a||{},i)||{}),n&&(i.ref=n),o.createElement(t,i)}));return n&&(c=x(c)),c.isMobxInjector=!0,i=t,a=c,l=Object.getOwnPropertyNames(Object.getPrototypeOf(i)),Object.getOwnPropertyNames(i).forEach((function(e){s[e]||-1!==l.indexOf(e)||Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(i,e))})),c.wrappedComponent=t,c.displayName=function(e,t){var r=e.displayName||e.name||e.constructor&&e.constructor.name||"Component";return t?"inject-with-"+t+"("+r+")":"inject("+r+")"}(t,r),c}function C(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if("function"==typeof arguments[0]){var n=arguments[0];return function(e){return E(n,e,n.name,!0)}}return function(e){return E(function(e){return function(t,r){return e.forEach((function(e){if(!(e in r)){if(!(e in t))throw new Error("MobX injector: Store '"+e+"' is not available! Make sure it is provided by some Provider");r[e]=t[e]}})),r}}(t),e,t.join("-"),!1)}}k.displayName="MobXProvider";var T=Number.parseInt(o.version.split(".")[0]),R=!1,M=Symbol("disposeOnUnmountProto"),O=Symbol("disposeOnUnmountInst");function P(){var e=this;[].concat(this[M]||[],this[O]||[]).forEach((function(t){var r="string"==typeof t?e[t]:t;null!=r&&(Array.isArray(r)?r.map((function(e){return e()})):r())}))}function I(e,t){if(Array.isArray(t))return t.map((function(t){return I(e,t)}));R||(T>=18?console.error("[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it."):console.warn("[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher."),R=!0);var r=Object.getPrototypeOf(e).constructor,n=Object.getPrototypeOf(e.constructor),i=Object.getPrototypeOf(Object.getPrototypeOf(e));if(r!==o.Component&&r!==o.PureComponent&&n!==o.Component&&n!==o.PureComponent&&i!==o.Component&&i!==o.PureComponent)throw new Error("[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.");if("string"!=typeof t&&"function"!=typeof t&&!Array.isArray(t))throw new Error("[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.");var a="string"==typeof t,s=!!e[M]||!!e[O];return(a?e[M]||(e[M]=[]):e[O]||(e[O]=[])).push(t),s||p(e,"componentWillUnmount",P),"string"!=typeof t?t:void 0}function N(e){function t(t,r,o,i,a,s){for(var l=arguments.length,c=new Array(l>6?l-6:0),u=6;u<l;u++)c[u-6]=arguments[u];return(0,n.untracked)((function(){if(i=i||"<<anonymous>>",s=s||o,null==r[o]){if(t){var n=null===r[o]?"null":"undefined";return new Error("The "+a+" `"+s+"` is marked as required in `"+i+"`, but its value is `"+n+"`.")}return null}return e.apply(void 0,[r,o,i,a,s].concat(c))}))}var r=t.bind(null,!1);return r.isRequired=t.bind(null,!0),r}function $(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||"Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol}(t,e)?"symbol":t}function _(e,t){return N((function(r,o,i,a,s){return(0,n.untracked)((function(){if(e&&$(r[o])===t.toLowerCase())return null;var a;switch(t){case"Array":a=n.isObservableArray;break;case"Object":a=n.isObservableObject;break;case"Map":a=n.isObservableMap;break;default:throw new Error("Unexpected mobxType: "+t)}var l=r[o];if(!a(l)){var c=function(e){var t=$(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}(l),u=e?" or javascript `"+t.toLowerCase()+"`":"";return new Error("Invalid prop `"+s+"` of type `"+c+"` supplied to `"+i+"`, expected `mobx.Observable"+t+"`"+u+".")}return null}))}))}function L(e,t){return N((function(r,o,i,a,s){for(var l=arguments.length,c=new Array(l>5?l-5:0),u=5;u<l;u++)c[u-5]=arguments[u];return(0,n.untracked)((function(){if("function"!=typeof t)return new Error("Property `"+s+"` of component `"+i+"` has invalid PropType notation.");var n=_(e,"Array")(r,o,i,a,s);if(n instanceof Error)return n;for(var l=r[o],u=0;u<l.length;u++)if((n=t.apply(void 0,[l,u,i,a,s+"["+u+"]"].concat(c)))instanceof Error)return n;return null}))}))}var j={observableArray:_(!1,"Array"),observableArrayOf:L.bind(null,!1),observableMap:_(!1,"Map"),observableObject:_(!1,"Object"),arrayOrObservableArray:_(!0,"Array"),arrayOrObservableArrayOf:L.bind(null,!0),objectOrObservableObject:_(!0,"Object")};if(!o.Component)throw new Error("mobx-react requires React to be available");if(!n.observable)throw new Error("mobx-react requires mobx to be available")},16308:e=>{"use strict";class t{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,t){this.cache.set(e,t),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const t=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,t),t}}set(e,t){return this.cache.has(e)?this.cache.set(e,t):this._set(e,t),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){return this.cache.has(e)?this.cache.get(e):this.oldCache.has(e)?this.oldCache.get(e):void 0}delete(e){const t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[t]=e;this.cache.has(t)||(yield e)}}get size(){let e=0;for(const t of this.oldCache.keys())this.cache.has(t)||e++;return this._size+e}}e.exports=t},22593:function(e){e.exports=function(){"use strict";function e(e,n,o,i,a){!function e(r,n,o,i,a){for(;i>o;){if(i-o>600){var s=i-o+1,l=n-o+1,c=Math.log(s),u=.5*Math.exp(2*c/3),d=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1);e(r,n,Math.max(o,Math.floor(n-l*u/s+d)),Math.min(i,Math.floor(n+(s-l)*u/s+d)),a)}var p=r[n],f=o,h=i;for(t(r,o,n),a(r[i],p)>0&&t(r,o,i);f<h;){for(t(r,f,h),f++,h--;a(r[f],p)<0;)f++;for(;a(r[h],p)>0;)h--}0===a(r[o],p)?t(r,o,h):t(r,++h,i),h<=n&&(o=h+1),n<=h&&(i=h-1)}}(e,n,o||0,i||e.length-1,a||r)}function t(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function r(e,t){return e<t?-1:e>t?1:0}var n=function(e){void 0===e&&(e=9),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(e,t,r){if(!r)return t.indexOf(e);for(var n=0;n<t.length;n++)if(r(e,t[n]))return n;return-1}function i(e,t){a(e,0,e.children.length,t,e)}function a(e,t,r,n,o){o||(o=h(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(var i=t;i<r;i++){var a=e.children[i];s(o,e.leaf?n(a):a)}return o}function s(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function l(e,t){return e.minX-t.minX}function c(e,t){return e.minY-t.minY}function u(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function d(e){return e.maxX-e.minX+(e.maxY-e.minY)}function p(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function f(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function h(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function m(t,r,n,o,i){for(var a=[r,n];a.length;)if(!((n=a.pop())-(r=a.pop())<=o)){var s=r+Math.ceil((n-r)/o/2)*o;e(t,s,r,n,i),a.push(r,s,s,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(e){var t=this.data,r=[];if(!f(e,t))return r;for(var n=this.toBBox,o=[];t;){for(var i=0;i<t.children.length;i++){var a=t.children[i],s=t.leaf?n(a):a;f(e,s)&&(t.leaf?r.push(a):p(e,s)?this._all(a,r):o.push(a))}t=o.pop()}return r},n.prototype.collides=function(e){var t=this.data;if(!f(e,t))return!1;for(var r=[];t;){for(var n=0;n<t.children.length;n++){var o=t.children[n],i=t.leaf?this.toBBox(o):o;if(f(e,i)){if(t.leaf||p(e,i))return!0;r.push(o)}}t=r.pop()}return!1},n.prototype.load=function(e){if(!e||!e.length)return this;if(e.length<this._minEntries){for(var t=0;t<e.length;t++)this.insert(e[t]);return this}var r=this._build(e.slice(),0,e.length-1,0);if(this.data.children.length)if(this.data.height===r.height)this._splitRoot(this.data,r);else{if(this.data.height<r.height){var n=this.data;this.data=r,r=n}this._insert(r,this.data.height-r.height-1,!0)}else this.data=r;return this},n.prototype.insert=function(e){return e&&this._insert(e,this.data.height-1),this},n.prototype.clear=function(){return this.data=h([]),this},n.prototype.remove=function(e,t){if(!e)return this;for(var r,n,i,a=this.data,s=this.toBBox(e),l=[],c=[];a||l.length;){if(a||(a=l.pop(),n=l[l.length-1],r=c.pop(),i=!0),a.leaf){var u=o(e,a.children,t);if(-1!==u)return a.children.splice(u,1),l.push(a),this._condense(l),this}i||a.leaf||!p(a,s)?n?(r++,a=n.children[r],i=!1):a=null:(l.push(a),c.push(r),r=0,n=a,a=a.children[0])}return this},n.prototype.toBBox=function(e){return e},n.prototype.compareMinX=function(e,t){return e.minX-t.minX},n.prototype.compareMinY=function(e,t){return e.minY-t.minY},n.prototype.toJSON=function(){return this.data},n.prototype.fromJSON=function(e){return this.data=e,this},n.prototype._all=function(e,t){for(var r=[];e;)e.leaf?t.push.apply(t,e.children):r.push.apply(r,e.children),e=r.pop();return t},n.prototype._build=function(e,t,r,n){var o,a=r-t+1,s=this._maxEntries;if(a<=s)return i(o=h(e.slice(t,r+1)),this.toBBox),o;n||(n=Math.ceil(Math.log(a)/Math.log(s)),s=Math.ceil(a/Math.pow(s,n-1))),(o=h([])).leaf=!1,o.height=n;var l=Math.ceil(a/s),c=l*Math.ceil(Math.sqrt(s));m(e,t,r,c,this.compareMinX);for(var u=t;u<=r;u+=c){var d=Math.min(u+c-1,r);m(e,u,d,l,this.compareMinY);for(var p=u;p<=d;p+=l){var f=Math.min(p+l-1,d);o.children.push(this._build(e,p,f,n-1))}}return i(o,this.toBBox),o},n.prototype._chooseSubtree=function(e,t,r,n){for(;n.push(t),!t.leaf&&n.length-1!==r;){for(var o=1/0,i=1/0,a=void 0,s=0;s<t.children.length;s++){var l=t.children[s],c=u(l),d=(p=e,f=l,(Math.max(f.maxX,p.maxX)-Math.min(f.minX,p.minX))*(Math.max(f.maxY,p.maxY)-Math.min(f.minY,p.minY))-c);d<i?(i=d,o=c<o?c:o,a=l):d===i&&c<o&&(o=c,a=l)}t=a||t.children[0]}var p,f;return t},n.prototype._insert=function(e,t,r){var n=r?e:this.toBBox(e),o=[],i=this._chooseSubtree(n,this.data,t,o);for(i.children.push(e),s(i,n);t>=0&&o[t].children.length>this._maxEntries;)this._split(o,t),t--;this._adjustParentBBoxes(n,o,t)},n.prototype._split=function(e,t){var r=e[t],n=r.children.length,o=this._minEntries;this._chooseSplitAxis(r,o,n);var a=this._chooseSplitIndex(r,o,n),s=h(r.children.splice(a,r.children.length-a));s.height=r.height,s.leaf=r.leaf,i(r,this.toBBox),i(s,this.toBBox),t?e[t-1].children.push(s):this._splitRoot(r,s)},n.prototype._splitRoot=function(e,t){this.data=h([e,t]),this.data.height=e.height+1,this.data.leaf=!1,i(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(e,t,r){for(var n,o,i,s,l,c,d,p=1/0,f=1/0,h=t;h<=r-t;h++){var m=a(e,0,h,this.toBBox),v=a(e,h,r,this.toBBox),g=(o=m,i=v,void 0,void 0,void 0,void 0,s=Math.max(o.minX,i.minX),l=Math.max(o.minY,i.minY),c=Math.min(o.maxX,i.maxX),d=Math.min(o.maxY,i.maxY),Math.max(0,c-s)*Math.max(0,d-l)),y=u(m)+u(v);g<p?(p=g,n=h,f=y<f?y:f):g===p&&y<f&&(f=y,n=h)}return n||r-t},n.prototype._chooseSplitAxis=function(e,t,r){var n=e.leaf?this.compareMinX:l,o=e.leaf?this.compareMinY:c;this._allDistMargin(e,t,r,n)<this._allDistMargin(e,t,r,o)&&e.children.sort(n)},n.prototype._allDistMargin=function(e,t,r,n){e.children.sort(n);for(var o=this.toBBox,i=a(e,0,t,o),l=a(e,r-t,r,o),c=d(i)+d(l),u=t;u<r-t;u++){var p=e.children[u];s(i,e.leaf?o(p):p),c+=d(i)}for(var f=r-t-1;f>=t;f--){var h=e.children[f];s(l,e.leaf?o(h):h),c+=d(l)}return c},n.prototype._adjustParentBBoxes=function(e,t,r){for(var n=r;n>=0;n--)s(t[n],e)},n.prototype._condense=function(e){for(var t=e.length-1,r=void 0;t>=0;t--)0===e[t].children.length?t>0?(r=e[t-1].children).splice(r.indexOf(e[t]),1):this.clear():i(e[t],this.toBBox)},n}()},14317:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.LEFT=t.BOTTOM=t.RIGHT=t.TOP=void 0;const o=n(r(7552));function i(e,t,r){const n=e(r);return`translate(${Number.isFinite(n)?n:t(r)},0)`}function a(e,t,r){const n=e(r);return`translate(0,${Number.isFinite(n)?n:t(r)})`}t.TOP="TOP",t.RIGHT="RIGHT",t.BOTTOM="BOTTOM",t.LEFT="LEFT";const s={orient:t.BOTTOM,tickSizeInner:6,tickSizeOuter:6,tickPadding:3,strokeWidth:1,tickFont:"sans-serif",tickFontSize:10};t.default=function({style:e,range:r,values:n,position:l,format:c,shadow:u=0,bg:d="white",fg:p="black"}){const f={...s,...e},{orient:h,tickSizeInner:m,tickPadding:v,tickSizeOuter:g,strokeWidth:y,tickFont:b,tickFontSize:x}=f,A=h===t.TOP||h===t.BOTTOM?i:a,w=h===t.TOP||h===t.LEFT?-1:1,S=h===t.RIGHT,k=h===t.LEFT,E=h===t.TOP,C=h===t.BOTTOM,T=S||k,R=T?"x":"y",M=T?"y":"x",O=y/2,P=r[0]+O,I=r[r.length-1]+O,N=Math.max(m,0)+v;return o.default.createElement("g",{fill:"none",fontSize:x,fontFamily:b,textAnchor:S?"start":k?"end":"middle",strokeWidth:y},o.default.createElement("path",{stroke:p,d:T?`M${w*g},${P}H${O}V${I}H${w*g}`:`M${P},${w*g}V${O}H${I}V${w*g}`}),n.map(((e,t)=>{let r={stroke:p};r[`${R}2`]=w*m,r[`${M}1`]=O,r[`${M}2`]=O;let n={fill:p,dy:E?"0em":C?"0.71em":"0.32em"};return n[`${R}`]=w*N,n[`${M}`]=O,o.default.createElement("g",{key:`tick-${t}`,opacity:1,transform:(i=e,A(l,l,i))},o.default.createElement("line",{...r}),u?o.default.createElement("text",{style:{stroke:d,strokeWidth:u},...n},c(e)):null,o.default.createElement("text",{...n},c(e)));var i})))}},26410:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return{range:e.range(),values:e.ticks(t),format:e.tickFormat(t),position:e.copy()}}},77126:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.LEFT=t.BOTTOM=t.RIGHT=t.TOP=t.Axis=t.axisPropsFromTickScale=void 0;var o=r(26410);Object.defineProperty(t,"axisPropsFromTickScale",{enumerable:!0,get:function(){return n(o).default}});var i=r(14317);Object.defineProperty(t,"Axis",{enumerable:!0,get:function(){return n(i).default}}),Object.defineProperty(t,"TOP",{enumerable:!0,get:function(){return i.TOP}}),Object.defineProperty(t,"RIGHT",{enumerable:!0,get:function(){return i.RIGHT}}),Object.defineProperty(t,"BOTTOM",{enumerable:!0,get:function(){return i.BOTTOM}}),Object.defineProperty(t,"LEFT",{enumerable:!0,get:function(){return i.LEFT}})},29709:(e,t,r)=>{"use strict";var n=r(7552);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=Object.prototype.hasOwnProperty,a=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,s={},l={};function c(e){return!!i.call(l,e)||!i.call(s,e)&&(a.test(e)?l[e]=!0:(s[e]=!0,!1))}function u(e,t,r,n,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var d={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){d[e]=new u(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];d[t]=new u(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){d[e]=new u(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){d[e]=new u(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){d[e]=new u(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){d[e]=new u(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){d[e]=new u(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){d[e]=new u(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){d[e]=new u(e,5,!1,e.toLowerCase(),null,!1,!1)}));var p=/[\-:]([a-z])/g;function f(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(p,f);d[t]=new u(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(p,f);d[t]=new u(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(p,f);d[t]=new u(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){d[e]=new u(e,1,!1,e.toLowerCase(),null,!1,!1)})),d.xlinkHref=new u("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){d[e]=new u(e,1,!1,e.toLowerCase(),null,!0,!0)}));var h={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},m=["Webkit","ms","Moz","O"];Object.keys(h).forEach((function(e){m.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),h[t]=h[e]}))}));var v=/["'&<>]/;function g(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=v.exec(e);if(t){var r,n="",o=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:t="&quot;";break;case 38:t="&amp;";break;case 39:t="&#x27;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}o!==r&&(n+=e.substring(o,r)),o=r+1,n+=t}e=o!==r?n+e.substring(o,r):n}return e}var y=/([A-Z])/g,b=/^ms-/,x=Array.isArray;function A(e,t){return{insertionMode:e,selectedValue:t}}var w=new Map;function S(e,t,r){if("object"!=typeof r)throw Error(o(62));for(var n in t=!0,r)if(i.call(r,n)){var a=r[n];if(null!=a&&"boolean"!=typeof a&&""!==a){if(0===n.indexOf("--")){var s=g(n);a=g((""+a).trim())}else{s=n;var l=w.get(s);void 0!==l||(l=g(s.replace(y,"-$1").toLowerCase().replace(b,"-ms-")),w.set(s,l)),s=l,a="number"==typeof a?0===a||i.call(h,n)?""+a:a+"px":g((""+a).trim())}t?(t=!1,e.push(' style="',s,":",a)):e.push(";",s,":",a)}}t||e.push('"')}function k(e,t,r,n){switch(r){case"style":return void S(e,t,n);case"defaultValue":case"defaultChecked":case"innerHTML":case"suppressContentEditableWarning":case"suppressHydrationWarning":return}if(!(2<r.length)||"o"!==r[0]&&"O"!==r[0]||"n"!==r[1]&&"N"!==r[1])if(null!==(t=d.hasOwnProperty(r)?d[r]:null)){switch(typeof n){case"function":case"symbol":return;case"boolean":if(!t.acceptsBooleans)return}switch(r=t.attributeName,t.type){case 3:n&&e.push(" ",r,'=""');break;case 4:!0===n?e.push(" ",r,'=""'):!1!==n&&e.push(" ",r,'="',g(n),'"');break;case 5:isNaN(n)||e.push(" ",r,'="',g(n),'"');break;case 6:!isNaN(n)&&1<=n&&e.push(" ",r,'="',g(n),'"');break;default:t.sanitizeURL&&(n=""+n),e.push(" ",r,'="',g(n),'"')}}else if(c(r)){switch(typeof n){case"function":case"symbol":return;case"boolean":if("data-"!==(t=r.toLowerCase().slice(0,5))&&"aria-"!==t)return}e.push(" ",r,'="',g(n),'"')}}function E(e,t,r){if(null!=t){if(null!=r)throw Error(o(60));if("object"!=typeof t||!("__html"in t))throw Error(o(61));null!=(t=t.__html)&&e.push(""+t)}}function C(e,t,r,n){e.push(M(r));var o,a=r=null;for(o in t)if(i.call(t,o)){var s=t[o];if(null!=s)switch(o){case"children":r=s;break;case"dangerouslySetInnerHTML":a=s;break;default:k(e,n,o,s)}}return e.push(">"),E(e,a,r),"string"==typeof r?(e.push(g(r)),null):r}var T=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,R=new Map;function M(e){var t=R.get(e);if(void 0===t){if(!T.test(e))throw Error(o(65,e));t="<"+e,R.set(e,t)}return t}function O(e,t,r){if(e.push('\x3c!--$?--\x3e<template id="'),null===r)throw Error(o(395));return e.push(r),e.push('"></template>')}var P=/[<\u2028\u2029]/g;function I(e){return JSON.stringify(e).replace(P,(function(e){switch(e){case"<":return"\\u003c";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React")}}))}function N(e,t,r,n){return r.generateStaticMarkup?(e.push(g(t)),!1):(""===t?e=n:(n&&e.push("\x3c!-- --\x3e"),e.push(g(t)),e=!0),e)}var $=Object.assign,_=Symbol.for("react.element"),L=Symbol.for("react.portal"),j=Symbol.for("react.fragment"),z=Symbol.for("react.strict_mode"),D=Symbol.for("react.profiler"),F=Symbol.for("react.provider"),B=Symbol.for("react.context"),W=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),U=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),X=Symbol.for("react.scope"),Y=Symbol.for("react.debug_trace_mode"),G=Symbol.for("react.legacy_hidden"),K=Symbol.for("react.default_value"),J=Symbol.iterator;function Z(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case j:return"Fragment";case L:return"Portal";case D:return"Profiler";case z:return"StrictMode";case H:return"Suspense";case U:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case B:return(e.displayName||"Context")+".Consumer";case F:return(e._context.displayName||"Context")+".Provider";case W:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case V:return null!==(t=e.displayName||null)?t:Z(e.type)||"Memo";case q:t=e._payload,e=e._init;try{return Z(e(t))}catch(e){}}return null}var Q={};function ee(e,t){if(!(e=e.contextTypes))return Q;var r,n={};for(r in e)n[r]=t[r];return n}var te=null;function re(e,t){if(e!==t){e.context._currentValue2=e.parentValue,e=e.parent;var r=t.parent;if(null===e){if(null!==r)throw Error(o(401))}else{if(null===r)throw Error(o(401));re(e,r)}t.context._currentValue2=t.value}}function ne(e){e.context._currentValue2=e.parentValue,null!==(e=e.parent)&&ne(e)}function oe(e){var t=e.parent;null!==t&&oe(t),e.context._currentValue2=e.value}function ie(e,t){if(e.context._currentValue2=e.parentValue,null===(e=e.parent))throw Error(o(402));e.depth===t.depth?re(e,t):ie(e,t)}function ae(e,t){var r=t.parent;if(null===r)throw Error(o(402));e.depth===r.depth?re(e,r):ae(e,r),t.context._currentValue2=t.value}function se(e){var t=te;t!==e&&(null===t?oe(e):null===e?ne(t):t.depth===e.depth?re(t,e):t.depth>e.depth?ie(t,e):ae(t,e),te=e)}var le={isMounted:function(){return!1},enqueueSetState:function(e,t){null!==(e=e._reactInternals).queue&&e.queue.push(t)},enqueueReplaceState:function(e,t){(e=e._reactInternals).replace=!0,e.queue=[t]},enqueueForceUpdate:function(){}};function ce(e,t,r,n){var o=void 0!==e.state?e.state:null;e.updater=le,e.props=r,e.state=o;var i={queue:[],replace:!1};e._reactInternals=i;var a=t.contextType;if(e.context="object"==typeof a&&null!==a?a._currentValue2:n,"function"==typeof(a=t.getDerivedStateFromProps)&&(o=null==(a=a(r,o))?o:$({},o,a),e.state=o),"function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate&&("function"==typeof e.UNSAFE_componentWillMount||"function"==typeof e.componentWillMount))if(t=e.state,"function"==typeof e.componentWillMount&&e.componentWillMount(),"function"==typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),t!==e.state&&le.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(t=i.queue,a=i.replace,i.queue=null,i.replace=!1,a&&1===t.length)e.state=t[0];else{for(i=a?t[0]:e.state,o=!0,a=a?1:0;a<t.length;a++){var s=t[a];null!=(s="function"==typeof s?s.call(e,i,r,n):s)&&(o?(o=!1,i=$({},i,s)):$(i,s))}e.state=i}else i.queue=null}var ue={id:1,overflow:""};function de(e,t,r){var n=e.id;e=e.overflow;var o=32-pe(n)-1;n&=~(1<<o),r+=1;var i=32-pe(t)+o;if(30<i){var a=o-o%5;return i=(n&(1<<a)-1).toString(32),n>>=a,o-=a,{id:1<<32-pe(t)+o|r<<o|n,overflow:i+e}}return{id:1<<i|r<<o|n,overflow:e}}var pe=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(fe(e)/he|0)|0},fe=Math.log,he=Math.LN2,me="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ve=null,ge=null,ye=null,be=null,xe=!1,Ae=!1,we=0,Se=null,ke=0;function Ee(){if(null===ve)throw Error(o(321));return ve}function Ce(){if(0<ke)throw Error(o(312));return{memoizedState:null,queue:null,next:null}}function Te(){return null===be?null===ye?(xe=!1,ye=be=Ce()):(xe=!0,be=ye):null===be.next?(xe=!1,be=be.next=Ce()):(xe=!0,be=be.next),be}function Re(){ge=ve=null,Ae=!1,ye=null,ke=0,be=Se=null}function Me(e,t){return"function"==typeof t?t(e):t}function Oe(e,t,r){if(ve=Ee(),be=Te(),xe){var n=be.queue;if(t=n.dispatch,null!==Se&&void 0!==(r=Se.get(n))){Se.delete(n),n=be.memoizedState;do{n=e(n,r.action),r=r.next}while(null!==r);return be.memoizedState=n,[n,t]}return[be.memoizedState,t]}return e=e===Me?"function"==typeof t?t():t:void 0!==r?r(t):t,be.memoizedState=e,e=(e=be.queue={last:null,dispatch:null}).dispatch=Ie.bind(null,ve,e),[be.memoizedState,e]}function Pe(e,t){if(ve=Ee(),t=void 0===t?null:t,null!==(be=Te())){var r=be.memoizedState;if(null!==r&&null!==t){var n=r[1];e:if(null===n)n=!1;else{for(var o=0;o<n.length&&o<t.length;o++)if(!me(t[o],n[o])){n=!1;break e}n=!0}if(n)return r[0]}}return e=e(),be.memoizedState=[e,t],e}function Ie(e,t,r){if(25<=ke)throw Error(o(301));if(e===ve)if(Ae=!0,e={action:r,next:null},null===Se&&(Se=new Map),void 0===(r=Se.get(t)))Se.set(t,e);else{for(t=r;null!==t.next;)t=t.next;t.next=e}}function Ne(){throw Error(o(394))}function $e(){}var _e={readContext:function(e){return e._currentValue2},useContext:function(e){return Ee(),e._currentValue2},useMemo:Pe,useReducer:Oe,useRef:function(e){ve=Ee();var t=(be=Te()).memoizedState;return null===t?(e={current:e},be.memoizedState=e):t},useState:function(e){return Oe(Me,e)},useInsertionEffect:$e,useLayoutEffect:function(){},useCallback:function(e,t){return Pe((function(){return e}),t)},useImperativeHandle:$e,useEffect:$e,useDebugValue:$e,useDeferredValue:function(e){return Ee(),e},useTransition:function(){return Ee(),[!1,Ne]},useId:function(){var e=ge.treeContext,t=e.overflow;e=((e=e.id)&~(1<<32-pe(e)-1)).toString(32)+t;var r=Le;if(null===r)throw Error(o(404));return t=we++,e=":"+r.idPrefix+"R"+e,0<t&&(e+="H"+t.toString(32)),e+":"},useMutableSource:function(e,t){return Ee(),t(e._source)},useSyncExternalStore:function(e,t,r){if(void 0===r)throw Error(o(407));return r()}},Le=null,je=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function ze(e){return console.error(e),null}function De(){}function Fe(e,t,r,n,o,i,a,s){e.allPendingTasks++,null===r?e.pendingRootTasks++:r.pendingTasks++;var l={node:t,ping:function(){var t=e.pingedTasks;t.push(l),1===t.length&&tt(e)},blockedBoundary:r,blockedSegment:n,abortSet:o,legacyContext:i,context:a,treeContext:s};return o.add(l),l}function Be(e,t,r,n,o,i){return{status:0,id:-1,index:t,parentFlushed:!1,chunks:[],children:[],formatContext:n,boundary:r,lastPushedText:o,textEmbedded:i}}function We(e,t){if(null!=(e=e.onError(t))&&"string"!=typeof e)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof e+'" instead');return e}function He(e,t){var r=e.onShellError;r(t),(r=e.onFatalError)(t),null!==e.destination?(e.status=2,e.destination.destroy(t)):(e.status=1,e.fatalError=t)}function Ue(e,t,r,n,o){for(ve={},ge=t,we=0,e=r(n,o);Ae;)Ae=!1,we=0,ke+=1,be=null,e=r(n,o);return Re(),e}function Ve(e,t,r,n){var i=r.render(),a=n.childContextTypes;if(null!=a){var s=t.legacyContext;if("function"!=typeof r.getChildContext)n=s;else{for(var l in r=r.getChildContext())if(!(l in a))throw Error(o(108,Z(n)||"Unknown",l));n=$({},s,r)}t.legacyContext=n,Ye(e,t,i),t.legacyContext=s}else Ye(e,t,i)}function qe(e,t){if(e&&e.defaultProps){for(var r in t=$({},t),e=e.defaultProps)void 0===t[r]&&(t[r]=e[r]);return t}return t}function Xe(e,t,r,a,s){if("function"==typeof r)if(r.prototype&&r.prototype.isReactComponent){s=ee(r,t.legacyContext);var l=r.contextType;ce(l=new r(a,"object"==typeof l&&null!==l?l._currentValue2:s),r,a,s),Ve(e,t,l,r)}else{s=Ue(e,t,r,a,l=ee(r,t.legacyContext));var u=0!==we;if("object"==typeof s&&null!==s&&"function"==typeof s.render&&void 0===s.$$typeof)ce(s,r,a,l),Ve(e,t,s,r);else if(u){a=t.treeContext,t.treeContext=de(a,1,0);try{Ye(e,t,s)}finally{t.treeContext=a}}else Ye(e,t,s)}else{if("string"!=typeof r){switch(r){case G:case Y:case z:case D:case j:case U:return void Ye(e,t,a.children);case X:throw Error(o(343));case H:e:{r=t.blockedBoundary,s=t.blockedSegment,l=a.fallback,a=a.children;var d={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:u=new Set,errorDigest:null},p=Be(0,s.chunks.length,d,s.formatContext,!1,!1);s.children.push(p),s.lastPushedText=!1;var f=Be(0,0,null,s.formatContext,!1,!1);f.parentFlushed=!0,t.blockedBoundary=d,t.blockedSegment=f;try{if(Ke(e,t,a),e.responseState.generateStaticMarkup||f.lastPushedText&&f.textEmbedded&&f.chunks.push("\x3c!-- --\x3e"),f.status=1,Qe(d,f),0===d.pendingTasks)break e}catch(t){f.status=4,d.forceClientRender=!0,d.errorDigest=We(e,t)}finally{t.blockedBoundary=r,t.blockedSegment=s}t=Fe(e,l,r,p,u,t.legacyContext,t.context,t.treeContext),e.pingedTasks.push(t)}return}if("object"==typeof r&&null!==r)switch(r.$$typeof){case W:if(a=Ue(e,t,r.render,a,s),0!==we){r=t.treeContext,t.treeContext=de(r,1,0);try{Ye(e,t,a)}finally{t.treeContext=r}}else Ye(e,t,a);return;case V:return void Xe(e,t,r=r.type,a=qe(r,a),s);case F:if(s=a.children,r=r._context,a=a.value,l=r._currentValue2,r._currentValue2=a,te=a={parent:u=te,depth:null===u?0:u.depth+1,context:r,parentValue:l,value:a},t.context=a,Ye(e,t,s),null===(e=te))throw Error(o(403));return a=e.parentValue,e.context._currentValue2=a===K?e.context._defaultValue:a,e=te=e.parent,void(t.context=e);case B:return void Ye(e,t,a=(a=a.children)(r._currentValue2));case q:return void Xe(e,t,r=(s=r._init)(r._payload),a=qe(r,a),void 0)}throw Error(o(130,null==r?r:typeof r,""))}switch(l=function(e,t,r,a,s){switch(t){case"select":e.push(M("select"));var l=null,u=null;for(h in r)if(i.call(r,h)){var d=r[h];if(null!=d)switch(h){case"children":l=d;break;case"dangerouslySetInnerHTML":u=d;break;case"defaultValue":case"value":break;default:k(e,a,h,d)}}return e.push(">"),E(e,u,l),l;case"option":u=s.selectedValue,e.push(M("option"));var p=d=null,f=null,h=null;for(l in r)if(i.call(r,l)){var m=r[l];if(null!=m)switch(l){case"children":d=m;break;case"selected":f=m;break;case"dangerouslySetInnerHTML":h=m;break;case"value":p=m;default:k(e,a,l,m)}}if(null!=u)if(r=null!==p?""+p:function(e){var t="";return n.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(d),x(u)){for(a=0;a<u.length;a++)if(""+u[a]===r){e.push(' selected=""');break}}else""+u===r&&e.push(' selected=""');else f&&e.push(' selected=""');return e.push(">"),E(e,h,d),d;case"textarea":for(d in e.push(M("textarea")),h=u=l=null,r)if(i.call(r,d)&&null!=(p=r[d]))switch(d){case"children":h=p;break;case"value":l=p;break;case"defaultValue":u=p;break;case"dangerouslySetInnerHTML":throw Error(o(91));default:k(e,a,d,p)}if(null===l&&null!==u&&(l=u),e.push(">"),null!=h){if(null!=l)throw Error(o(92));if(x(h)&&1<h.length)throw Error(o(93));l=""+h}return"string"==typeof l&&"\n"===l[0]&&e.push("\n"),null!==l&&e.push(g(""+l)),null;case"input":for(u in e.push(M("input")),p=h=d=l=null,r)if(i.call(r,u)&&null!=(f=r[u]))switch(u){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,"input"));case"defaultChecked":p=f;break;case"defaultValue":d=f;break;case"checked":h=f;break;case"value":l=f;break;default:k(e,a,u,f)}return null!==h?k(e,a,"checked",h):null!==p&&k(e,a,"checked",p),null!==l?k(e,a,"value",l):null!==d&&k(e,a,"value",d),e.push("/>"),null;case"menuitem":for(var v in e.push(M("menuitem")),r)if(i.call(r,v)&&null!=(l=r[v]))switch(v){case"children":case"dangerouslySetInnerHTML":throw Error(o(400));default:k(e,a,v,l)}return e.push(">"),null;case"title":for(m in e.push(M("title")),l=null,r)if(i.call(r,m)&&null!=(u=r[m]))switch(m){case"children":l=u;break;case"dangerouslySetInnerHTML":throw Error(o(434));default:k(e,a,m,u)}return e.push(">"),l;case"listing":case"pre":for(p in e.push(M(t)),u=l=null,r)if(i.call(r,p)&&null!=(d=r[p]))switch(p){case"children":l=d;break;case"dangerouslySetInnerHTML":u=d;break;default:k(e,a,p,d)}if(e.push(">"),null!=u){if(null!=l)throw Error(o(60));if("object"!=typeof u||!("__html"in u))throw Error(o(61));null!=(r=u.__html)&&("string"==typeof r&&0<r.length&&"\n"===r[0]?e.push("\n",r):e.push(""+r))}return"string"==typeof l&&"\n"===l[0]&&e.push("\n"),l;case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":for(var y in e.push(M(t)),r)if(i.call(r,y)&&null!=(l=r[y]))switch(y){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,t));default:k(e,a,y,l)}return e.push("/>"),null;case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return C(e,r,t,a);case"html":return 0===s.insertionMode&&e.push("<!DOCTYPE html>"),C(e,r,t,a);default:if(-1===t.indexOf("-")&&"string"!=typeof r.is)return C(e,r,t,a);for(f in e.push(M(t)),u=l=null,r)if(i.call(r,f)&&null!=(d=r[f]))switch(f){case"children":l=d;break;case"dangerouslySetInnerHTML":u=d;break;case"style":S(e,a,d);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":break;default:c(f)&&"function"!=typeof d&&"symbol"!=typeof d&&e.push(" ",f,'="',g(d),'"')}return e.push(">"),E(e,u,l),l}}((s=t.blockedSegment).chunks,r,a,e.responseState,s.formatContext),s.lastPushedText=!1,u=s.formatContext,s.formatContext=function(e,t,r){switch(t){case"select":return A(1,null!=r.value?r.value:r.defaultValue);case"svg":return A(2,null);case"math":return A(3,null);case"foreignObject":return A(1,null);case"table":return A(4,null);case"thead":case"tbody":case"tfoot":return A(5,null);case"colgroup":return A(7,null);case"tr":return A(6,null)}return 4<=e.insertionMode||0===e.insertionMode?A(1,null):e}(u,r,a),Ke(e,t,l),s.formatContext=u,r){case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"input":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":break;default:s.chunks.push("</",r,">")}s.lastPushedText=!1}}function Ye(e,t,r){if(t.node=r,"object"==typeof r&&null!==r){switch(r.$$typeof){case _:return void Xe(e,t,r.type,r.props,r.ref);case L:throw Error(o(257));case q:var n=r._init;return void Ye(e,t,r=n(r._payload))}if(x(r))return void Ge(e,t,r);if((n=null===r||"object"!=typeof r?null:"function"==typeof(n=J&&r[J]||r["@@iterator"])?n:null)&&(n=n.call(r))){if(!(r=n.next()).done){var i=[];do{i.push(r.value),r=n.next()}while(!r.done);Ge(e,t,i)}return}throw e=Object.prototype.toString.call(r),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(r).join(", ")+"}":e))}"string"==typeof r?(n=t.blockedSegment).lastPushedText=N(t.blockedSegment.chunks,r,e.responseState,n.lastPushedText):"number"==typeof r&&((n=t.blockedSegment).lastPushedText=N(t.blockedSegment.chunks,""+r,e.responseState,n.lastPushedText))}function Ge(e,t,r){for(var n=r.length,o=0;o<n;o++){var i=t.treeContext;t.treeContext=de(i,n,o);try{Ke(e,t,r[o])}finally{t.treeContext=i}}}function Ke(e,t,r){var n=t.blockedSegment.formatContext,o=t.legacyContext,i=t.context;try{return Ye(e,t,r)}catch(l){if(Re(),"object"!=typeof l||null===l||"function"!=typeof l.then)throw t.blockedSegment.formatContext=n,t.legacyContext=o,t.context=i,se(i),l;r=l;var a=t.blockedSegment,s=Be(0,a.chunks.length,null,a.formatContext,a.lastPushedText,!0);a.children.push(s),a.lastPushedText=!1,e=Fe(e,t.node,t.blockedBoundary,s,t.abortSet,t.legacyContext,t.context,t.treeContext).ping,r.then(e,e),t.blockedSegment.formatContext=n,t.legacyContext=o,t.context=i,se(i)}}function Je(e){var t=e.blockedBoundary;(e=e.blockedSegment).status=3,et(this,t,e)}function Ze(e,t,r){var n=e.blockedBoundary;e.blockedSegment.status=3,null===n?(t.allPendingTasks--,2!==t.status&&(t.status=2,null!==t.destination&&t.destination.push(null))):(n.pendingTasks--,n.forceClientRender||(n.forceClientRender=!0,e=void 0===r?Error(o(432)):r,n.errorDigest=t.onError(e),n.parentFlushed&&t.clientRenderedBoundaries.push(n)),n.fallbackAbortableTasks.forEach((function(e){return Ze(e,t,r)})),n.fallbackAbortableTasks.clear(),t.allPendingTasks--,0===t.allPendingTasks&&(n=t.onAllReady)())}function Qe(e,t){if(0===t.chunks.length&&1===t.children.length&&null===t.children[0].boundary){var r=t.children[0];r.id=t.id,r.parentFlushed=!0,1===r.status&&Qe(e,r)}else e.completedSegments.push(t)}function et(e,t,r){if(null===t){if(r.parentFlushed){if(null!==e.completedRootSegment)throw Error(o(389));e.completedRootSegment=r}e.pendingRootTasks--,0===e.pendingRootTasks&&(e.onShellError=De,(t=e.onShellReady)())}else t.pendingTasks--,t.forceClientRender||(0===t.pendingTasks?(r.parentFlushed&&1===r.status&&Qe(t,r),t.parentFlushed&&e.completedBoundaries.push(t),t.fallbackAbortableTasks.forEach(Je,e),t.fallbackAbortableTasks.clear()):r.parentFlushed&&1===r.status&&(Qe(t,r),1===t.completedSegments.length&&t.parentFlushed&&e.partialBoundaries.push(t)));e.allPendingTasks--,0===e.allPendingTasks&&(e=e.onAllReady)()}function tt(e){if(2!==e.status){var t=te,r=je.current;je.current=_e;var n=Le;Le=e.responseState;try{var o,i=e.pingedTasks;for(o=0;o<i.length;o++){var a=i[o],s=e,l=a.blockedSegment;if(0===l.status){se(a.context);try{Ye(s,a,a.node),s.responseState.generateStaticMarkup||l.lastPushedText&&l.textEmbedded&&l.chunks.push("\x3c!-- --\x3e"),a.abortSet.delete(a),l.status=1,et(s,a.blockedBoundary,l)}catch(e){if(Re(),"object"==typeof e&&null!==e&&"function"==typeof e.then){var c=a.ping;e.then(c,c)}else{a.abortSet.delete(a),l.status=4;var u=a.blockedBoundary,d=e,p=We(s,d);null===u?He(s,d):(u.pendingTasks--,u.forceClientRender||(u.forceClientRender=!0,u.errorDigest=p,u.parentFlushed&&s.clientRenderedBoundaries.push(u))),s.allPendingTasks--,0===s.allPendingTasks&&(0,s.onAllReady)()}}}}i.splice(0,o),null!==e.destination&&st(e,e.destination)}catch(t){We(e,t),He(e,t)}finally{Le=n,je.current=r,r===_e&&se(t)}}}function rt(e,t,r){switch(r.parentFlushed=!0,r.status){case 0:var n=r.id=e.nextSegmentId++;return r.lastPushedText=!1,r.textEmbedded=!1,e=e.responseState,t.push('<template id="'),t.push(e.placeholderPrefix),e=n.toString(16),t.push(e),t.push('"></template>');case 1:r.status=2;var i=!0;n=r.chunks;var a=0;r=r.children;for(var s=0;s<r.length;s++){for(i=r[s];a<i.index;a++)t.push(n[a]);i=nt(e,t,i)}for(;a<n.length-1;a++)t.push(n[a]);return a<n.length&&(i=t.push(n[a])),i;default:throw Error(o(390))}}function nt(e,t,r){var n=r.boundary;if(null===n)return rt(e,t,r);if(n.parentFlushed=!0,n.forceClientRender)return e.responseState.generateStaticMarkup||(n=n.errorDigest,t.push("\x3c!--$!--\x3e"),t.push("<template"),n&&(t.push(' data-dgst="'),n=g(n),t.push(n),t.push('"')),t.push("></template>")),rt(e,t,r),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e");if(0<n.pendingTasks){n.rootSegmentID=e.nextSegmentId++,0<n.completedSegments.length&&e.partialBoundaries.push(n);var i=e.responseState,a=i.nextSuspenseID++;return i=i.boundaryPrefix+a.toString(16),n=n.id=i,O(t,e.responseState,n),rt(e,t,r),t.push("\x3c!--/$--\x3e")}if(n.byteSize>e.progressiveChunkSize)return n.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(n),O(t,e.responseState,n.id),rt(e,t,r),t.push("\x3c!--/$--\x3e");if(e.responseState.generateStaticMarkup||t.push("\x3c!--$--\x3e"),1!==(r=n.completedSegments).length)throw Error(o(391));return nt(e,t,r[0]),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e")}function ot(e,t,r){return function(e,t,r,n){switch(r.insertionMode){case 0:case 1:return e.push('<div hidden id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 2:return e.push('<svg aria-hidden="true" style="display:none" id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 3:return e.push('<math aria-hidden="true" style="display:none" id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 4:return e.push('<table hidden id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 5:return e.push('<table hidden><tbody id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 6:return e.push('<table hidden><tr id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');case 7:return e.push('<table hidden><colgroup id="'),e.push(t.segmentPrefix),t=n.toString(16),e.push(t),e.push('">');default:throw Error(o(397))}}(t,e.responseState,r.formatContext,r.id),nt(e,t,r),function(e,t){switch(t.insertionMode){case 0:case 1:return e.push("</div>");case 2:return e.push("</svg>");case 3:return e.push("</math>");case 4:return e.push("</table>");case 5:return e.push("</tbody></table>");case 6:return e.push("</tr></table>");case 7:return e.push("</colgroup></table>");default:throw Error(o(397))}}(t,r.formatContext)}function it(e,t,r){for(var n=r.completedSegments,i=0;i<n.length;i++)at(e,t,r,n[i]);if(n.length=0,e=e.responseState,n=r.id,r=r.rootSegmentID,t.push(e.startInlineScript),e.sentCompleteBoundaryFunction?t.push('$RC("'):(e.sentCompleteBoundaryFunction=!0,t.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("')),null===n)throw Error(o(395));return r=r.toString(16),t.push(n),t.push('","'),t.push(e.segmentPrefix),t.push(r),t.push('")<\/script>')}function at(e,t,r,n){if(2===n.status)return!0;var i=n.id;if(-1===i){if(-1===(n.id=r.rootSegmentID))throw Error(o(392));return ot(e,t,n)}return ot(e,t,n),e=e.responseState,t.push(e.startInlineScript),e.sentCompleteSegmentFunction?t.push('$RS("'):(e.sentCompleteSegmentFunction=!0,t.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("')),t.push(e.segmentPrefix),i=i.toString(16),t.push(i),t.push('","'),t.push(e.placeholderPrefix),t.push(i),t.push('")<\/script>')}function st(e,t){try{var r=e.completedRootSegment;if(null!==r&&0===e.pendingRootTasks){nt(e,t,r),e.completedRootSegment=null;var n=e.responseState.bootstrapChunks;for(r=0;r<n.length-1;r++)t.push(n[r]);r<n.length&&t.push(n[r])}var i,a=e.clientRenderedBoundaries;for(i=0;i<a.length;i++){var s=a[i];n=t;var l=e.responseState,c=s.id,u=s.errorDigest,d=s.errorMessage,p=s.errorComponentStack;if(n.push(l.startInlineScript),l.sentClientRenderFunction?n.push('$RX("'):(l.sentClientRenderFunction=!0,n.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("')),null===c)throw Error(o(395));if(n.push(c),n.push('"'),u||d||p){n.push(",");var f=I(u||"");n.push(f)}if(d||p){n.push(",");var h=I(d||"");n.push(h)}if(p){n.push(",");var m=I(p);n.push(m)}if(!n.push(")<\/script>"))return e.destination=null,i++,void a.splice(0,i)}a.splice(0,i);var v=e.completedBoundaries;for(i=0;i<v.length;i++)if(!it(e,t,v[i]))return e.destination=null,i++,void v.splice(0,i);v.splice(0,i);var g=e.partialBoundaries;for(i=0;i<g.length;i++){var y=g[i];e:{a=e,s=t;var b=y.completedSegments;for(l=0;l<b.length;l++)if(!at(a,s,y,b[l])){l++,b.splice(0,l);var x=!1;break e}b.splice(0,l),x=!0}if(!x)return e.destination=null,i++,void g.splice(0,i)}g.splice(0,i);var A=e.completedBoundaries;for(i=0;i<A.length;i++)if(!it(e,t,A[i]))return e.destination=null,i++,void A.splice(0,i);A.splice(0,i)}finally{0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&t.push(null)}}function lt(e,t){try{var r=e.abortableTasks;r.forEach((function(r){return Ze(r,e,t)})),r.clear(),null!==e.destination&&st(e,e.destination)}catch(t){We(e,t),He(e,t)}}function ct(){}function ut(e,t,r,n){var i=!1,a=null,s="",l={push:function(e){return null!==e&&(s+=e),!0},destroy:function(e){i=!0,a=e}},c=!1;if(e=function(e,t,r,n,o,i,a){var s=[],l=new Set;return(r=Be(t={destination:null,responseState:t,progressiveChunkSize:n,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:l,pingedTasks:s,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===o?ze:o,onAllReady:De,onShellReady:void 0===a?De:a,onShellError:De,onFatalError:De},0,null,r,!1,!1)).parentFlushed=!0,e=Fe(t,e,null,r,l,Q,null,ue),s.push(e),t}(e,function(e,t){return{bootstrapChunks:[],startInlineScript:"<script>",placeholderPrefix:(t=void 0===t?"":t)+"P:",segmentPrefix:t+"S:",boundaryPrefix:t+"B:",idPrefix:t,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:e}}(r,t?t.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},1/0,ct,0,(function(){c=!0})),tt(e),lt(e,n),1===e.status)e.status=2,l.destroy(e.fatalError);else if(2!==e.status&&null===e.destination){e.destination=l;try{st(e,l)}catch(t){We(e,t),He(e,t)}}if(i)throw a;if(!c)throw Error(o(426));return s}t.renderToNodeStream=function(){throw Error(o(207))},t.renderToStaticMarkup=function(e,t){return ut(e,t,!0,'The server used "renderToStaticMarkup" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server')},t.renderToStaticNodeStream=function(){throw Error(o(208))},t.renderToString=function(e,t){return ut(e,t,!1,'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server')},t.version="18.3.1"},23459:(e,t,r)=>{"use strict";var n=r(7552);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=null,a=0;function s(e,t){if(0!==t.length)if(512<t.length)0<a&&(e.enqueue(new Uint8Array(i.buffer,0,a)),i=new Uint8Array(512),a=0),e.enqueue(t);else{var r=i.length-a;r<t.length&&(0===r?e.enqueue(i):(i.set(t.subarray(0,r),a),e.enqueue(i),t=t.subarray(r)),i=new Uint8Array(512),a=0),i.set(t,a),a+=t.length}}function l(e,t){return s(e,t),!0}function c(e){i&&0<a&&(e.enqueue(new Uint8Array(i.buffer,0,a)),i=null,a=0)}var u=new TextEncoder;function d(e){return u.encode(e)}function p(e){return u.encode(e)}function f(e,t){"function"==typeof e.error?e.error(t):e.close()}var h=Object.prototype.hasOwnProperty,m=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,v={},g={};function y(e){return!!h.call(g,e)||!h.call(v,e)&&(m.test(e)?g[e]=!0:(v[e]=!0,!1))}function b(e,t,r,n,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var x={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){x[e]=new b(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];x[t]=new b(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){x[e]=new b(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){x[e]=new b(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){x[e]=new b(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){x[e]=new b(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){x[e]=new b(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){x[e]=new b(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){x[e]=new b(e,5,!1,e.toLowerCase(),null,!1,!1)}));var A=/[\-:]([a-z])/g;function w(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(A,w);x[t]=new b(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(A,w);x[t]=new b(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(A,w);x[t]=new b(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){x[e]=new b(e,1,!1,e.toLowerCase(),null,!1,!1)})),x.xlinkHref=new b("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){x[e]=new b(e,1,!1,e.toLowerCase(),null,!0,!0)}));var S={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},k=["Webkit","ms","Moz","O"];Object.keys(S).forEach((function(e){k.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),S[t]=S[e]}))}));var E=/["'&<>]/;function C(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=E.exec(e);if(t){var r,n="",o=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:t="&quot;";break;case 38:t="&amp;";break;case 39:t="&#x27;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}o!==r&&(n+=e.substring(o,r)),o=r+1,n+=t}e=o!==r?n+e.substring(o,r):n}return e}var T=/([A-Z])/g,R=/^ms-/,M=Array.isArray,O=p("<script>"),P=p("<\/script>"),I=p('<script src="'),N=p('<script type="module" src="'),$=p('" async=""><\/script>'),_=/(<\/|<)(s)(cript)/gi;function L(e,t,r,n){return t+("s"===r?"\\u0073":"\\u0053")+n}function j(e,t){return{insertionMode:e,selectedValue:t}}var z=p("\x3c!-- --\x3e");function D(e,t,r,n){return""===t?n:(n&&e.push(z),e.push(d(C(t))),!0)}var F=new Map,B=p(' style="'),W=p(":"),H=p(";");function U(e,t,r){if("object"!=typeof r)throw Error(o(62));for(var n in t=!0,r)if(h.call(r,n)){var i=r[n];if(null!=i&&"boolean"!=typeof i&&""!==i){if(0===n.indexOf("--")){var a=d(C(n));i=d(C((""+i).trim()))}else{a=n;var s=F.get(a);void 0!==s||(s=p(C(a.replace(T,"-$1").toLowerCase().replace(R,"-ms-"))),F.set(a,s)),a=s,i="number"==typeof i?0===i||h.call(S,n)?d(""+i):d(i+"px"):d(C((""+i).trim()))}t?(t=!1,e.push(B,a,W,i)):e.push(H,a,W,i)}}t||e.push(X)}var V=p(" "),q=p('="'),X=p('"'),Y=p('=""');function G(e,t,r,n){switch(r){case"style":return void U(e,t,n);case"defaultValue":case"defaultChecked":case"innerHTML":case"suppressContentEditableWarning":case"suppressHydrationWarning":return}if(!(2<r.length)||"o"!==r[0]&&"O"!==r[0]||"n"!==r[1]&&"N"!==r[1])if(null!==(t=x.hasOwnProperty(r)?x[r]:null)){switch(typeof n){case"function":case"symbol":return;case"boolean":if(!t.acceptsBooleans)return}switch(r=d(t.attributeName),t.type){case 3:n&&e.push(V,r,Y);break;case 4:!0===n?e.push(V,r,Y):!1!==n&&e.push(V,r,q,d(C(n)),X);break;case 5:isNaN(n)||e.push(V,r,q,d(C(n)),X);break;case 6:!isNaN(n)&&1<=n&&e.push(V,r,q,d(C(n)),X);break;default:t.sanitizeURL&&(n=""+n),e.push(V,r,q,d(C(n)),X)}}else if(y(r)){switch(typeof n){case"function":case"symbol":return;case"boolean":if("data-"!==(t=r.toLowerCase().slice(0,5))&&"aria-"!==t)return}e.push(V,d(r),q,d(C(n)),X)}}var K=p(">"),J=p("/>");function Z(e,t,r){if(null!=t){if(null!=r)throw Error(o(60));if("object"!=typeof t||!("__html"in t))throw Error(o(61));null!=(t=t.__html)&&e.push(d(""+t))}}var Q=p(' selected=""');function ee(e,t,r,n){e.push(oe(r));var o,i=r=null;for(o in t)if(h.call(t,o)){var a=t[o];if(null!=a)switch(o){case"children":r=a;break;case"dangerouslySetInnerHTML":i=a;break;default:G(e,n,o,a)}}return e.push(K),Z(e,i,r),"string"==typeof r?(e.push(d(C(r))),null):r}var te=p("\n"),re=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ne=new Map;function oe(e){var t=ne.get(e);if(void 0===t){if(!re.test(e))throw Error(o(65,e));t=p("<"+e),ne.set(e,t)}return t}var ie=p("<!DOCTYPE html>");var ae=p("</"),se=p(">"),le=p('<template id="'),ce=p('"></template>'),ue=p("\x3c!--$--\x3e"),de=p('\x3c!--$?--\x3e<template id="'),pe=p('"></template>'),fe=p("\x3c!--$!--\x3e"),he=p("\x3c!--/$--\x3e"),me=p("<template"),ve=p('"'),ge=p(' data-dgst="');p(' data-msg="'),p(' data-stck="');var ye=p("></template>");function be(e,t,r){if(s(e,de),null===r)throw Error(o(395));return s(e,r),l(e,pe)}var xe=p('<div hidden id="'),Ae=p('">'),we=p("</div>"),Se=p('<svg aria-hidden="true" style="display:none" id="'),ke=p('">'),Ee=p("</svg>"),Ce=p('<math aria-hidden="true" style="display:none" id="'),Te=p('">'),Re=p("</math>"),Me=p('<table hidden id="'),Oe=p('">'),Pe=p("</table>"),Ie=p('<table hidden><tbody id="'),Ne=p('">'),$e=p("</tbody></table>"),_e=p('<table hidden><tr id="'),Le=p('">'),je=p("</tr></table>"),ze=p('<table hidden><colgroup id="'),De=p('">'),Fe=p("</colgroup></table>"),Be=p('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("'),We=p('$RS("'),He=p('","'),Ue=p('")<\/script>'),Ve=p('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("'),qe=p('$RC("'),Xe=p('","'),Ye=p('")<\/script>'),Ge=p('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("'),Ke=p('$RX("'),Je=p('"'),Ze=p(")<\/script>"),Qe=p(","),et=/[<\u2028\u2029]/g;function tt(e){return JSON.stringify(e).replace(et,(function(e){switch(e){case"<":return"\\u003c";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React")}}))}var rt=Object.assign,nt=Symbol.for("react.element"),ot=Symbol.for("react.portal"),it=Symbol.for("react.fragment"),at=Symbol.for("react.strict_mode"),st=Symbol.for("react.profiler"),lt=Symbol.for("react.provider"),ct=Symbol.for("react.context"),ut=Symbol.for("react.forward_ref"),dt=Symbol.for("react.suspense"),pt=Symbol.for("react.suspense_list"),ft=Symbol.for("react.memo"),ht=Symbol.for("react.lazy"),mt=Symbol.for("react.scope"),vt=Symbol.for("react.debug_trace_mode"),gt=Symbol.for("react.legacy_hidden"),yt=Symbol.for("react.default_value"),bt=Symbol.iterator;function xt(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case it:return"Fragment";case ot:return"Portal";case st:return"Profiler";case at:return"StrictMode";case dt:return"Suspense";case pt:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ct:return(e.displayName||"Context")+".Consumer";case lt:return(e._context.displayName||"Context")+".Provider";case ut:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case ft:return null!==(t=e.displayName||null)?t:xt(e.type)||"Memo";case ht:t=e._payload,e=e._init;try{return xt(e(t))}catch(e){}}return null}var At={};function wt(e,t){if(!(e=e.contextTypes))return At;var r,n={};for(r in e)n[r]=t[r];return n}var St=null;function kt(e,t){if(e!==t){e.context._currentValue=e.parentValue,e=e.parent;var r=t.parent;if(null===e){if(null!==r)throw Error(o(401))}else{if(null===r)throw Error(o(401));kt(e,r)}t.context._currentValue=t.value}}function Et(e){e.context._currentValue=e.parentValue,null!==(e=e.parent)&&Et(e)}function Ct(e){var t=e.parent;null!==t&&Ct(t),e.context._currentValue=e.value}function Tt(e,t){if(e.context._currentValue=e.parentValue,null===(e=e.parent))throw Error(o(402));e.depth===t.depth?kt(e,t):Tt(e,t)}function Rt(e,t){var r=t.parent;if(null===r)throw Error(o(402));e.depth===r.depth?kt(e,r):Rt(e,r),t.context._currentValue=t.value}function Mt(e){var t=St;t!==e&&(null===t?Ct(e):null===e?Et(t):t.depth===e.depth?kt(t,e):t.depth>e.depth?Tt(t,e):Rt(t,e),St=e)}var Ot={isMounted:function(){return!1},enqueueSetState:function(e,t){null!==(e=e._reactInternals).queue&&e.queue.push(t)},enqueueReplaceState:function(e,t){(e=e._reactInternals).replace=!0,e.queue=[t]},enqueueForceUpdate:function(){}};function Pt(e,t,r,n){var o=void 0!==e.state?e.state:null;e.updater=Ot,e.props=r,e.state=o;var i={queue:[],replace:!1};e._reactInternals=i;var a=t.contextType;if(e.context="object"==typeof a&&null!==a?a._currentValue:n,"function"==typeof(a=t.getDerivedStateFromProps)&&(o=null==(a=a(r,o))?o:rt({},o,a),e.state=o),"function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate&&("function"==typeof e.UNSAFE_componentWillMount||"function"==typeof e.componentWillMount))if(t=e.state,"function"==typeof e.componentWillMount&&e.componentWillMount(),"function"==typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),t!==e.state&&Ot.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(t=i.queue,a=i.replace,i.queue=null,i.replace=!1,a&&1===t.length)e.state=t[0];else{for(i=a?t[0]:e.state,o=!0,a=a?1:0;a<t.length;a++){var s=t[a];null!=(s="function"==typeof s?s.call(e,i,r,n):s)&&(o?(o=!1,i=rt({},i,s)):rt(i,s))}e.state=i}else i.queue=null}var It={id:1,overflow:""};function Nt(e,t,r){var n=e.id;e=e.overflow;var o=32-$t(n)-1;n&=~(1<<o),r+=1;var i=32-$t(t)+o;if(30<i){var a=o-o%5;return i=(n&(1<<a)-1).toString(32),n>>=a,o-=a,{id:1<<32-$t(t)+o|r<<o|n,overflow:i+e}}return{id:1<<i|r<<o|n,overflow:e}}var $t=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(_t(e)/Lt|0)|0},_t=Math.log,Lt=Math.LN2,jt="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},zt=null,Dt=null,Ft=null,Bt=null,Wt=!1,Ht=!1,Ut=0,Vt=null,qt=0;function Xt(){if(null===zt)throw Error(o(321));return zt}function Yt(){if(0<qt)throw Error(o(312));return{memoizedState:null,queue:null,next:null}}function Gt(){return null===Bt?null===Ft?(Wt=!1,Ft=Bt=Yt()):(Wt=!0,Bt=Ft):null===Bt.next?(Wt=!1,Bt=Bt.next=Yt()):(Wt=!0,Bt=Bt.next),Bt}function Kt(){Dt=zt=null,Ht=!1,Ft=null,qt=0,Bt=Vt=null}function Jt(e,t){return"function"==typeof t?t(e):t}function Zt(e,t,r){if(zt=Xt(),Bt=Gt(),Wt){var n=Bt.queue;if(t=n.dispatch,null!==Vt&&void 0!==(r=Vt.get(n))){Vt.delete(n),n=Bt.memoizedState;do{n=e(n,r.action),r=r.next}while(null!==r);return Bt.memoizedState=n,[n,t]}return[Bt.memoizedState,t]}return e=e===Jt?"function"==typeof t?t():t:void 0!==r?r(t):t,Bt.memoizedState=e,e=(e=Bt.queue={last:null,dispatch:null}).dispatch=er.bind(null,zt,e),[Bt.memoizedState,e]}function Qt(e,t){if(zt=Xt(),t=void 0===t?null:t,null!==(Bt=Gt())){var r=Bt.memoizedState;if(null!==r&&null!==t){var n=r[1];e:if(null===n)n=!1;else{for(var o=0;o<n.length&&o<t.length;o++)if(!jt(t[o],n[o])){n=!1;break e}n=!0}if(n)return r[0]}}return e=e(),Bt.memoizedState=[e,t],e}function er(e,t,r){if(25<=qt)throw Error(o(301));if(e===zt)if(Ht=!0,e={action:r,next:null},null===Vt&&(Vt=new Map),void 0===(r=Vt.get(t)))Vt.set(t,e);else{for(t=r;null!==t.next;)t=t.next;t.next=e}}function tr(){throw Error(o(394))}function rr(){}var nr={readContext:function(e){return e._currentValue},useContext:function(e){return Xt(),e._currentValue},useMemo:Qt,useReducer:Zt,useRef:function(e){zt=Xt();var t=(Bt=Gt()).memoizedState;return null===t?(e={current:e},Bt.memoizedState=e):t},useState:function(e){return Zt(Jt,e)},useInsertionEffect:rr,useLayoutEffect:function(){},useCallback:function(e,t){return Qt((function(){return e}),t)},useImperativeHandle:rr,useEffect:rr,useDebugValue:rr,useDeferredValue:function(e){return Xt(),e},useTransition:function(){return Xt(),[!1,tr]},useId:function(){var e=Dt.treeContext,t=e.overflow;e=((e=e.id)&~(1<<32-$t(e)-1)).toString(32)+t;var r=or;if(null===r)throw Error(o(404));return t=Ut++,e=":"+r.idPrefix+"R"+e,0<t&&(e+="H"+t.toString(32)),e+":"},useMutableSource:function(e,t){return Xt(),t(e._source)},useSyncExternalStore:function(e,t,r){if(void 0===r)throw Error(o(407));return r()}},or=null,ir=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function ar(e){return console.error(e),null}function sr(){}function lr(e,t,r,n,o,i,a,s){e.allPendingTasks++,null===r?e.pendingRootTasks++:r.pendingTasks++;var l={node:t,ping:function(){var t=e.pingedTasks;t.push(l),1===t.length&&Sr(e)},blockedBoundary:r,blockedSegment:n,abortSet:o,legacyContext:i,context:a,treeContext:s};return o.add(l),l}function cr(e,t,r,n,o,i){return{status:0,id:-1,index:t,parentFlushed:!1,chunks:[],children:[],formatContext:n,boundary:r,lastPushedText:o,textEmbedded:i}}function ur(e,t){if(null!=(e=e.onError(t))&&"string"!=typeof e)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof e+'" instead');return e}function dr(e,t){var r=e.onShellError;r(t),(r=e.onFatalError)(t),null!==e.destination?(e.status=2,f(e.destination,t)):(e.status=1,e.fatalError=t)}function pr(e,t,r,n,o){for(zt={},Dt=t,Ut=0,e=r(n,o);Ht;)Ht=!1,Ut=0,qt+=1,Bt=null,e=r(n,o);return Kt(),e}function fr(e,t,r,n){var i=r.render(),a=n.childContextTypes;if(null!=a){var s=t.legacyContext;if("function"!=typeof r.getChildContext)n=s;else{for(var l in r=r.getChildContext())if(!(l in a))throw Error(o(108,xt(n)||"Unknown",l));n=rt({},s,r)}t.legacyContext=n,vr(e,t,i),t.legacyContext=s}else vr(e,t,i)}function hr(e,t){if(e&&e.defaultProps){for(var r in t=rt({},t),e=e.defaultProps)void 0===t[r]&&(t[r]=e[r]);return t}return t}function mr(e,t,r,i,a){if("function"==typeof r)if(r.prototype&&r.prototype.isReactComponent){a=wt(r,t.legacyContext);var s=r.contextType;Pt(s=new r(i,"object"==typeof s&&null!==s?s._currentValue:a),r,i,a),fr(e,t,s,r)}else{a=pr(e,t,r,i,s=wt(r,t.legacyContext));var l=0!==Ut;if("object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof)Pt(a,r,i,s),fr(e,t,a,r);else if(l){i=t.treeContext,t.treeContext=Nt(i,1,0);try{vr(e,t,a)}finally{t.treeContext=i}}else vr(e,t,a)}else{if("string"!=typeof r){switch(r){case gt:case vt:case at:case st:case it:case pt:return void vr(e,t,i.children);case mt:throw Error(o(343));case dt:e:{r=t.blockedBoundary,a=t.blockedSegment,s=i.fallback,i=i.children;var c={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:l=new Set,errorDigest:null},u=cr(0,a.chunks.length,c,a.formatContext,!1,!1);a.children.push(u),a.lastPushedText=!1;var p=cr(0,0,null,a.formatContext,!1,!1);p.parentFlushed=!0,t.blockedBoundary=c,t.blockedSegment=p;try{if(yr(e,t,i),p.lastPushedText&&p.textEmbedded&&p.chunks.push(z),p.status=1,Ar(c,p),0===c.pendingTasks)break e}catch(t){p.status=4,c.forceClientRender=!0,c.errorDigest=ur(e,t)}finally{t.blockedBoundary=r,t.blockedSegment=a}t=lr(e,s,r,u,l,t.legacyContext,t.context,t.treeContext),e.pingedTasks.push(t)}return}if("object"==typeof r&&null!==r)switch(r.$$typeof){case ut:if(i=pr(e,t,r.render,i,a),0!==Ut){r=t.treeContext,t.treeContext=Nt(r,1,0);try{vr(e,t,i)}finally{t.treeContext=r}}else vr(e,t,i);return;case ft:return void mr(e,t,r=r.type,i=hr(r,i),a);case lt:if(a=i.children,r=r._context,i=i.value,s=r._currentValue,r._currentValue=i,St=i={parent:l=St,depth:null===l?0:l.depth+1,context:r,parentValue:s,value:i},t.context=i,vr(e,t,a),null===(e=St))throw Error(o(403));return i=e.parentValue,e.context._currentValue=i===yt?e.context._defaultValue:i,e=St=e.parent,void(t.context=e);case ct:return void vr(e,t,i=(i=i.children)(r._currentValue));case ht:return void mr(e,t,r=(a=r._init)(r._payload),i=hr(r,i),void 0)}throw Error(o(130,null==r?r:typeof r,""))}switch(s=function(e,t,r,i,a){switch(t){case"select":e.push(oe("select"));var s=null,l=null;for(f in r)if(h.call(r,f)){var c=r[f];if(null!=c)switch(f){case"children":s=c;break;case"dangerouslySetInnerHTML":l=c;break;case"defaultValue":case"value":break;default:G(e,i,f,c)}}return e.push(K),Z(e,l,s),s;case"option":l=a.selectedValue,e.push(oe("option"));var u=c=null,p=null,f=null;for(s in r)if(h.call(r,s)){var m=r[s];if(null!=m)switch(s){case"children":c=m;break;case"selected":p=m;break;case"dangerouslySetInnerHTML":f=m;break;case"value":u=m;default:G(e,i,s,m)}}if(null!=l)if(r=null!==u?""+u:function(e){var t="";return n.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(c),M(l)){for(i=0;i<l.length;i++)if(""+l[i]===r){e.push(Q);break}}else""+l===r&&e.push(Q);else p&&e.push(Q);return e.push(K),Z(e,f,c),c;case"textarea":for(c in e.push(oe("textarea")),f=l=s=null,r)if(h.call(r,c)&&null!=(u=r[c]))switch(c){case"children":f=u;break;case"value":s=u;break;case"defaultValue":l=u;break;case"dangerouslySetInnerHTML":throw Error(o(91));default:G(e,i,c,u)}if(null===s&&null!==l&&(s=l),e.push(K),null!=f){if(null!=s)throw Error(o(92));if(M(f)&&1<f.length)throw Error(o(93));s=""+f}return"string"==typeof s&&"\n"===s[0]&&e.push(te),null!==s&&e.push(d(C(""+s))),null;case"input":for(l in e.push(oe("input")),u=f=c=s=null,r)if(h.call(r,l)&&null!=(p=r[l]))switch(l){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,"input"));case"defaultChecked":u=p;break;case"defaultValue":c=p;break;case"checked":f=p;break;case"value":s=p;break;default:G(e,i,l,p)}return null!==f?G(e,i,"checked",f):null!==u&&G(e,i,"checked",u),null!==s?G(e,i,"value",s):null!==c&&G(e,i,"value",c),e.push(J),null;case"menuitem":for(var v in e.push(oe("menuitem")),r)if(h.call(r,v)&&null!=(s=r[v]))switch(v){case"children":case"dangerouslySetInnerHTML":throw Error(o(400));default:G(e,i,v,s)}return e.push(K),null;case"title":for(m in e.push(oe("title")),s=null,r)if(h.call(r,m)&&null!=(l=r[m]))switch(m){case"children":s=l;break;case"dangerouslySetInnerHTML":throw Error(o(434));default:G(e,i,m,l)}return e.push(K),s;case"listing":case"pre":for(u in e.push(oe(t)),l=s=null,r)if(h.call(r,u)&&null!=(c=r[u]))switch(u){case"children":s=c;break;case"dangerouslySetInnerHTML":l=c;break;default:G(e,i,u,c)}if(e.push(K),null!=l){if(null!=s)throw Error(o(60));if("object"!=typeof l||!("__html"in l))throw Error(o(61));null!=(r=l.__html)&&("string"==typeof r&&0<r.length&&"\n"===r[0]?e.push(te,d(r)):e.push(d(""+r)))}return"string"==typeof s&&"\n"===s[0]&&e.push(te),s;case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":for(var g in e.push(oe(t)),r)if(h.call(r,g)&&null!=(s=r[g]))switch(g){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,t));default:G(e,i,g,s)}return e.push(J),null;case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return ee(e,r,t,i);case"html":return 0===a.insertionMode&&e.push(ie),ee(e,r,t,i);default:if(-1===t.indexOf("-")&&"string"!=typeof r.is)return ee(e,r,t,i);for(p in e.push(oe(t)),l=s=null,r)if(h.call(r,p)&&null!=(c=r[p]))switch(p){case"children":s=c;break;case"dangerouslySetInnerHTML":l=c;break;case"style":U(e,i,c);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":break;default:y(p)&&"function"!=typeof c&&"symbol"!=typeof c&&e.push(V,d(p),q,d(C(c)),X)}return e.push(K),Z(e,l,s),s}}((a=t.blockedSegment).chunks,r,i,e.responseState,a.formatContext),a.lastPushedText=!1,l=a.formatContext,a.formatContext=function(e,t,r){switch(t){case"select":return j(1,null!=r.value?r.value:r.defaultValue);case"svg":return j(2,null);case"math":return j(3,null);case"foreignObject":return j(1,null);case"table":return j(4,null);case"thead":case"tbody":case"tfoot":return j(5,null);case"colgroup":return j(7,null);case"tr":return j(6,null)}return 4<=e.insertionMode||0===e.insertionMode?j(1,null):e}(l,r,i),yr(e,t,s),a.formatContext=l,r){case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"input":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":break;default:a.chunks.push(ae,d(r),se)}a.lastPushedText=!1}}function vr(e,t,r){if(t.node=r,"object"==typeof r&&null!==r){switch(r.$$typeof){case nt:return void mr(e,t,r.type,r.props,r.ref);case ot:throw Error(o(257));case ht:var n=r._init;return void vr(e,t,r=n(r._payload))}if(M(r))return void gr(e,t,r);if((n=null===r||"object"!=typeof r?null:"function"==typeof(n=bt&&r[bt]||r["@@iterator"])?n:null)&&(n=n.call(r))){if(!(r=n.next()).done){var i=[];do{i.push(r.value),r=n.next()}while(!r.done);gr(e,t,i)}return}throw e=Object.prototype.toString.call(r),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(r).join(", ")+"}":e))}"string"==typeof r?(n=t.blockedSegment).lastPushedText=D(t.blockedSegment.chunks,r,e.responseState,n.lastPushedText):"number"==typeof r&&((n=t.blockedSegment).lastPushedText=D(t.blockedSegment.chunks,""+r,e.responseState,n.lastPushedText))}function gr(e,t,r){for(var n=r.length,o=0;o<n;o++){var i=t.treeContext;t.treeContext=Nt(i,n,o);try{yr(e,t,r[o])}finally{t.treeContext=i}}}function yr(e,t,r){var n=t.blockedSegment.formatContext,o=t.legacyContext,i=t.context;try{return vr(e,t,r)}catch(l){if(Kt(),"object"!=typeof l||null===l||"function"!=typeof l.then)throw t.blockedSegment.formatContext=n,t.legacyContext=o,t.context=i,Mt(i),l;r=l;var a=t.blockedSegment,s=cr(0,a.chunks.length,null,a.formatContext,a.lastPushedText,!0);a.children.push(s),a.lastPushedText=!1,e=lr(e,t.node,t.blockedBoundary,s,t.abortSet,t.legacyContext,t.context,t.treeContext).ping,r.then(e,e),t.blockedSegment.formatContext=n,t.legacyContext=o,t.context=i,Mt(i)}}function br(e){var t=e.blockedBoundary;(e=e.blockedSegment).status=3,wr(this,t,e)}function xr(e,t,r){var n=e.blockedBoundary;e.blockedSegment.status=3,null===n?(t.allPendingTasks--,2!==t.status&&(t.status=2,null!==t.destination&&t.destination.close())):(n.pendingTasks--,n.forceClientRender||(n.forceClientRender=!0,e=void 0===r?Error(o(432)):r,n.errorDigest=t.onError(e),n.parentFlushed&&t.clientRenderedBoundaries.push(n)),n.fallbackAbortableTasks.forEach((function(e){return xr(e,t,r)})),n.fallbackAbortableTasks.clear(),t.allPendingTasks--,0===t.allPendingTasks&&(n=t.onAllReady)())}function Ar(e,t){if(0===t.chunks.length&&1===t.children.length&&null===t.children[0].boundary){var r=t.children[0];r.id=t.id,r.parentFlushed=!0,1===r.status&&Ar(e,r)}else e.completedSegments.push(t)}function wr(e,t,r){if(null===t){if(r.parentFlushed){if(null!==e.completedRootSegment)throw Error(o(389));e.completedRootSegment=r}e.pendingRootTasks--,0===e.pendingRootTasks&&(e.onShellError=sr,(t=e.onShellReady)())}else t.pendingTasks--,t.forceClientRender||(0===t.pendingTasks?(r.parentFlushed&&1===r.status&&Ar(t,r),t.parentFlushed&&e.completedBoundaries.push(t),t.fallbackAbortableTasks.forEach(br,e),t.fallbackAbortableTasks.clear()):r.parentFlushed&&1===r.status&&(Ar(t,r),1===t.completedSegments.length&&t.parentFlushed&&e.partialBoundaries.push(t)));e.allPendingTasks--,0===e.allPendingTasks&&(e=e.onAllReady)()}function Sr(e){if(2!==e.status){var t=St,r=ir.current;ir.current=nr;var n=or;or=e.responseState;try{var o,i=e.pingedTasks;for(o=0;o<i.length;o++){var a=i[o],s=e,l=a.blockedSegment;if(0===l.status){Mt(a.context);try{vr(s,a,a.node),l.lastPushedText&&l.textEmbedded&&l.chunks.push(z),a.abortSet.delete(a),l.status=1,wr(s,a.blockedBoundary,l)}catch(e){if(Kt(),"object"==typeof e&&null!==e&&"function"==typeof e.then){var c=a.ping;e.then(c,c)}else{a.abortSet.delete(a),l.status=4;var u=a.blockedBoundary,d=e,p=ur(s,d);null===u?dr(s,d):(u.pendingTasks--,u.forceClientRender||(u.forceClientRender=!0,u.errorDigest=p,u.parentFlushed&&s.clientRenderedBoundaries.push(u))),s.allPendingTasks--,0===s.allPendingTasks&&(0,s.onAllReady)()}}}}i.splice(0,o),null!==e.destination&&Mr(e,e.destination)}catch(t){ur(e,t),dr(e,t)}finally{or=n,ir.current=r,r===nr&&Mt(t)}}}function kr(e,t,r){switch(r.parentFlushed=!0,r.status){case 0:var n=r.id=e.nextSegmentId++;return r.lastPushedText=!1,r.textEmbedded=!1,e=e.responseState,s(t,le),s(t,e.placeholderPrefix),s(t,e=d(n.toString(16))),l(t,ce);case 1:r.status=2;var i=!0;n=r.chunks;var a=0;r=r.children;for(var c=0;c<r.length;c++){for(i=r[c];a<i.index;a++)s(t,n[a]);i=Er(e,t,i)}for(;a<n.length-1;a++)s(t,n[a]);return a<n.length&&(i=l(t,n[a])),i;default:throw Error(o(390))}}function Er(e,t,r){var n=r.boundary;if(null===n)return kr(e,t,r);if(n.parentFlushed=!0,n.forceClientRender)n=n.errorDigest,l(t,fe),s(t,me),n&&(s(t,ge),s(t,d(C(n))),s(t,ve)),l(t,ye),kr(e,t,r);else if(0<n.pendingTasks){n.rootSegmentID=e.nextSegmentId++,0<n.completedSegments.length&&e.partialBoundaries.push(n);var i=e.responseState,a=i.nextSuspenseID++;i=p(i.boundaryPrefix+a.toString(16)),n=n.id=i,be(t,e.responseState,n),kr(e,t,r)}else if(n.byteSize>e.progressiveChunkSize)n.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(n),be(t,e.responseState,n.id),kr(e,t,r);else{if(l(t,ue),1!==(r=n.completedSegments).length)throw Error(o(391));Er(e,t,r[0])}return l(t,he)}function Cr(e,t,r){return function(e,t,r,n){switch(r.insertionMode){case 0:case 1:return s(e,xe),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,Ae);case 2:return s(e,Se),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,ke);case 3:return s(e,Ce),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,Te);case 4:return s(e,Me),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,Oe);case 5:return s(e,Ie),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,Ne);case 6:return s(e,_e),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,Le);case 7:return s(e,ze),s(e,t.segmentPrefix),s(e,d(n.toString(16))),l(e,De);default:throw Error(o(397))}}(t,e.responseState,r.formatContext,r.id),Er(e,t,r),function(e,t){switch(t.insertionMode){case 0:case 1:return l(e,we);case 2:return l(e,Ee);case 3:return l(e,Re);case 4:return l(e,Pe);case 5:return l(e,$e);case 6:return l(e,je);case 7:return l(e,Fe);default:throw Error(o(397))}}(t,r.formatContext)}function Tr(e,t,r){for(var n=r.completedSegments,i=0;i<n.length;i++)Rr(e,t,r,n[i]);if(n.length=0,e=e.responseState,n=r.id,r=r.rootSegmentID,s(t,e.startInlineScript),e.sentCompleteBoundaryFunction?s(t,qe):(e.sentCompleteBoundaryFunction=!0,s(t,Ve)),null===n)throw Error(o(395));return r=d(r.toString(16)),s(t,n),s(t,Xe),s(t,e.segmentPrefix),s(t,r),l(t,Ye)}function Rr(e,t,r,n){if(2===n.status)return!0;var i=n.id;if(-1===i){if(-1===(n.id=r.rootSegmentID))throw Error(o(392));return Cr(e,t,n)}return Cr(e,t,n),s(t,(e=e.responseState).startInlineScript),e.sentCompleteSegmentFunction?s(t,We):(e.sentCompleteSegmentFunction=!0,s(t,Be)),s(t,e.segmentPrefix),s(t,i=d(i.toString(16))),s(t,He),s(t,e.placeholderPrefix),s(t,i),l(t,Ue)}function Mr(e,t){i=new Uint8Array(512),a=0;try{var r=e.completedRootSegment;if(null!==r&&0===e.pendingRootTasks){Er(e,t,r),e.completedRootSegment=null;var n=e.responseState.bootstrapChunks;for(r=0;r<n.length-1;r++)s(t,n[r]);r<n.length&&l(t,n[r])}var u,p=e.clientRenderedBoundaries;for(u=0;u<p.length;u++){var f=p[u];n=t;var h=e.responseState,m=f.id,v=f.errorDigest,g=f.errorMessage,y=f.errorComponentStack;if(s(n,h.startInlineScript),h.sentClientRenderFunction?s(n,Ke):(h.sentClientRenderFunction=!0,s(n,Ge)),null===m)throw Error(o(395));if(s(n,m),s(n,Je),(v||g||y)&&(s(n,Qe),s(n,d(tt(v||"")))),(g||y)&&(s(n,Qe),s(n,d(tt(g||"")))),y&&(s(n,Qe),s(n,d(tt(y)))),!l(n,Ze))return e.destination=null,u++,void p.splice(0,u)}p.splice(0,u);var b=e.completedBoundaries;for(u=0;u<b.length;u++)if(!Tr(e,t,b[u]))return e.destination=null,u++,void b.splice(0,u);b.splice(0,u),c(t),i=new Uint8Array(512),a=0;var x=e.partialBoundaries;for(u=0;u<x.length;u++){var A=x[u];e:{p=e,f=t;var w=A.completedSegments;for(h=0;h<w.length;h++)if(!Rr(p,f,A,w[h])){h++,w.splice(0,h);var S=!1;break e}w.splice(0,h),S=!0}if(!S)return e.destination=null,u++,void x.splice(0,u)}x.splice(0,u);var k=e.completedBoundaries;for(u=0;u<k.length;u++)if(!Tr(e,t,k[u]))return e.destination=null,u++,void k.splice(0,u);k.splice(0,u)}finally{c(t),0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&t.close()}}function Or(e,t){try{var r=e.abortableTasks;r.forEach((function(r){return xr(r,e,t)})),r.clear(),null!==e.destination&&Mr(e,e.destination)}catch(t){ur(e,t),dr(e,t)}}t.renderToReadableStream=function(e,t){return new Promise((function(r,n){var o,i,a=new Promise((function(e,t){i=e,o=t})),s=function(e,t,r,n,o,i,a,s,l){var c=[],u=new Set;return(r=cr(t={destination:null,responseState:t,progressiveChunkSize:void 0===n?12800:n,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:u,pingedTasks:c,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===o?ar:o,onAllReady:void 0===i?sr:i,onShellReady:void 0===a?sr:a,onShellError:void 0===s?sr:s,onFatalError:void 0===l?sr:l},0,null,r,!1,!1)).parentFlushed=!0,e=lr(t,e,null,r,u,At,null,It),c.push(e),t}(e,function(e,t,r,n,o){e=void 0===e?"":e,t=void 0===t?O:p('<script nonce="'+C(t)+'">');var i=[];if(void 0!==r&&i.push(t,d((""+r).replace(_,L)),P),void 0!==n)for(r=0;r<n.length;r++)i.push(I,d(C(n[r])),$);if(void 0!==o)for(n=0;n<o.length;n++)i.push(N,d(C(o[n])),$);return{bootstrapChunks:i,startInlineScript:t,placeholderPrefix:p(e+"P:"),segmentPrefix:p(e+"S:"),boundaryPrefix:e+"B:",idPrefix:e,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}(t?t.identifierPrefix:void 0,t?t.nonce:void 0,t?t.bootstrapScriptContent:void 0,t?t.bootstrapScripts:void 0,t?t.bootstrapModules:void 0),function(e){return j("http://www.w3.org/2000/svg"===e?2:"http://www.w3.org/1998/Math/MathML"===e?3:0,null)}(t?t.namespaceURI:void 0),t?t.progressiveChunkSize:void 0,t?t.onError:void 0,i,(function(){var e=new ReadableStream({type:"bytes",pull:function(e){if(1===s.status)s.status=2,f(e,s.fatalError);else if(2!==s.status&&null===s.destination){s.destination=e;try{Mr(s,e)}catch(e){ur(s,e),dr(s,e)}}},cancel:function(){Or(s)}},{highWaterMark:0});e.allReady=a,r(e)}),(function(e){a.catch((function(){})),n(e)}),o);if(t&&t.signal){var l=t.signal,c=function(){Or(s,l.reason),l.removeEventListener("abort",c)};l.addEventListener("abort",c)}Sr(s)}))},t.version="18.3.1"},48180:(e,t,r)=>{"use strict";var n,o;n=r(29709),o=r(23459),n.version,t.F0=n.renderToString,n.renderToStaticMarkup,n.renderToNodeStream,n.renderToStaticNodeStream,o.renderToReadableStream},82725:(e,t,r)=>{"use strict";r.d(t,{tH:()=>a});var n=r(7552);const o=(0,n.createContext)(null),i={didCatch:!1,error:null};class a extends n.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=i}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){const{error:e}=this.state;if(null!==e){for(var t,r,n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];null===(t=(r=this.props).onReset)||void 0===t||t.call(r,{args:o,reason:"imperative-api"}),this.setState(i)}}componentDidCatch(e,t){var r,n;null===(r=(n=this.props).onError)||void 0===r||r.call(n,e,t)}componentDidUpdate(e,t){const{didCatch:r}=this.state,{resetKeys:n}=this.props;var o,a;r&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some(((e,r)=>!Object.is(e,t[r])))}(e.resetKeys,n)&&(null===(o=(a=this.props).onReset)||void 0===o||o.call(a,{next:n,prev:e.resetKeys,reason:"keys"}),this.setState(i))}render(){const{children:e,fallbackRender:t,FallbackComponent:r,fallback:i}=this.props,{didCatch:a,error:s}=this.state;let l=e;if(a){const e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,n.createElement)(r,e);else{if(null!==i&&!(0,n.isValidElement)(i))throw s;l=i}}return(0,n.createElement)(o.Provider,{value:{didCatch:a,error:s,resetErrorBoundary:this.resetErrorBoundary}},l)}}},17259:(e,t)=>{"use strict";Symbol.for("react.element"),Symbol.for("react.portal"),Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.server_context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.suspense_list"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.for("react.offscreen");Symbol.for("react.module.reference")},19487:(e,t,r)=>{"use strict";r(17259)},16157:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>m});var n=r(83673),o=r(80467),i=r(7552),a=r(28485);var s=r(20309),l="unmounted",c="exited",u="entering",d="entered",p="exiting",f=function(e){function t(t,r){var n;n=e.call(this,t,r)||this;var o,i=r&&!r.isMounting?t.enter:t.appear;return n.appearStatus=null,t.in?i?(o=c,n.appearStatus=u):o=d:o=t.unmountOnExit||t.mountOnEnter?l:c,n.state={status:o},n.nextCallback=null,n}(0,o.A)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===l?{status:c}:null};var r=t.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var r=this.state.status;this.props.in?r!==u&&r!==d&&(t=u):r!==u&&r!==d||(t=p)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,r,n=this.props.timeout;return e=t=r=n,null!=n&&"number"!=typeof n&&(e=n.exit,t=n.enter,r=void 0!==n.appear?n.appear:t),{exit:e,enter:t,appear:r}},r.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===u){if(this.props.unmountOnExit||this.props.mountOnEnter){var r=this.props.nodeRef?this.props.nodeRef.current:a.findDOMNode(this);r&&function(e){e.scrollTop}(r)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===c&&this.setState({status:l})},r.performEnter=function(e){var t=this,r=this.props.enter,n=this.context?this.context.isMounting:e,o=this.props.nodeRef?[n]:[a.findDOMNode(this),n],i=o[0],s=o[1],l=this.getTimeouts(),c=n?l.appear:l.enter;e||r?(this.props.onEnter(i,s),this.safeSetState({status:u},(function(){t.props.onEntering(i,s),t.onTransitionEnd(c,(function(){t.safeSetState({status:d},(function(){t.props.onEntered(i,s)}))}))}))):this.safeSetState({status:d},(function(){t.props.onEntered(i)}))},r.performExit=function(){var e=this,t=this.props.exit,r=this.getTimeouts(),n=this.props.nodeRef?void 0:a.findDOMNode(this);t?(this.props.onExit(n),this.safeSetState({status:p},(function(){e.props.onExiting(n),e.onTransitionEnd(r.exit,(function(){e.safeSetState({status:c},(function(){e.props.onExited(n)}))}))}))):this.safeSetState({status:c},(function(){e.props.onExited(n)}))},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,r=!0;return this.nextCallback=function(n){r&&(r=!1,t.nextCallback=null,e(n))},this.nextCallback.cancel=function(){r=!1},this.nextCallback},r.onTransitionEnd=function(e,t){this.setNextCallback(t);var r=this.props.nodeRef?this.props.nodeRef.current:a.findDOMNode(this),n=null==e&&!this.props.addEndListener;if(r&&!n){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[r,this.nextCallback],i=o[0],s=o[1];this.props.addEndListener(i,s)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var e=this.state.status;if(e===l)return null;var t=this.props,r=t.children,o=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,n.A)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return i.createElement(s.A.Provider,{value:null},"function"==typeof r?r(e,o):i.cloneElement(i.Children.only(r),o))},t}(i.Component);function h(){}f.contextType=s.A,f.propTypes={},f.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:h,onEntering:h,onEntered:h,onExit:h,onExiting:h,onExited:h},f.UNMOUNTED=l,f.EXITED=c,f.ENTERING=u,f.ENTERED=d,f.EXITING=p;const m=f},20309:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(7552).createContext(null)},89592:(e,t,r)=>{"use strict";r.d(t,{c:()=>u});var n=r(38028),o=r(54151),i=r(89728),a=r(63999);var s=r(17324),l=r(74829),c=r(89612),u=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(e,t,r){var i,a=this,s=(i=e)&&i instanceof n.vU||function(e){return e&&(0,l.T)(e.next)&&(0,l.T)(e.error)&&(0,l.T)(e.complete)}(i)&&(0,o.Uv)(i)?e:new n.Ms(e,t,r);return(0,c.Y)((function(){var e=a,t=e.operator,r=e.source;s.add(t?t.call(s,r):r?a._subscribe(s):a._trySubscribe(s))})),s},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var r=this;return new(t=d(t))((function(t,o){var i=new n.Ms({next:function(t){try{e(t)}catch(e){o(e),i.unsubscribe()}},error:o,complete:t});r.subscribe(i)}))},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[i.s]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return(0===(r=e).length?a.D:1===r.length?r[0]:function(e){return r.reduce((function(e,t){return t(e)}),e)})(this);var r},e.prototype.toPromise=function(e){var t=this;return new(e=d(e))((function(e,r){var n;t.subscribe((function(e){return n=e}),(function(e){return r(e)}),(function(){return e(n)}))}))},e.create=function(t){return new e(t)},e}();function d(e){var t;return null!==(t=null!=e?e:s.$.Promise)&&void 0!==t?t:Promise}},38028:(e,t,r)=>{"use strict";r.d(t,{Ms:()=>g,vU:()=>f});var n=r(74805),o=r(74829),i=r(54151),a=r(17324),s=r(83208),l=r(73281),c=u("C",void 0,void 0);function u(e,t,r){return{kind:e,value:t,error:r}}var d=r(83196),p=r(89612),f=function(e){function t(t){var r=e.call(this)||this;return r.isStopped=!1,t?(r.destination=t,(0,i.Uv)(t)&&t.add(r)):r.destination=x,r}return(0,n.C6)(t,e),t.create=function(e,t,r){return new g(e,t,r)},t.prototype.next=function(e){this.isStopped?b(function(e){return u("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?b(u("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?b(c,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(i.yU),h=Function.prototype.bind;function m(e,t){return h.call(e,t)}var v=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){y(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){y(e)}else y(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){y(e)}},e}(),g=function(e){function t(t,r,n){var i,s,l=e.call(this)||this;return(0,o.T)(t)||!t?i={next:null!=t?t:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:l&&a.$.useDeprecatedNextContext?((s=Object.create(t)).unsubscribe=function(){return l.unsubscribe()},i={next:t.next&&m(t.next,s),error:t.error&&m(t.error,s),complete:t.complete&&m(t.complete,s)}):i=t,l.destination=new v(i),l}return(0,n.C6)(t,e),t}(f);function y(e){a.$.useDeprecatedSynchronousErrorHandling?(0,p.l)(e):(0,s.m)(e)}function b(e,t){var r=a.$.onStoppedNotification;r&&d.f.setTimeout((function(){return r(e,t)}))}var x={closed:!0,next:l.l,error:function(e){throw e},complete:l.l}},54151:(e,t,r)=>{"use strict";r.d(t,{yU:()=>s,Uv:()=>l});var n=r(74805),o=r(74829),i=(0,r(3719).L)((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n  "):"",this.name="UnsubscriptionError",this.errors=t}}));function a(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var s=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,r,a,s;if(!this.closed){this.closed=!0;var l=this._parentage;if(l)if(this._parentage=null,Array.isArray(l))try{for(var u=(0,n.Ju)(l),d=u.next();!d.done;d=u.next())d.value.remove(this)}catch(t){e={error:t}}finally{try{d&&!d.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}else l.remove(this);var p=this.initialTeardown;if((0,o.T)(p))try{p()}catch(e){s=e instanceof i?e.errors:[e]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var h=(0,n.Ju)(f),m=h.next();!m.done;m=h.next()){var v=m.value;try{c(v)}catch(e){s=null!=s?s:[],e instanceof i?s=(0,n.fX)((0,n.fX)([],(0,n.zs)(s)),(0,n.zs)(e.errors)):s.push(e)}}}catch(e){r={error:e}}finally{try{m&&!m.done&&(a=h.return)&&a.call(h)}finally{if(r)throw r.error}}}if(s)throw new i(s)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)c(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&a(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&a(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function l(e){return e instanceof s||e&&"closed"in e&&(0,o.T)(e.remove)&&(0,o.T)(e.add)&&(0,o.T)(e.unsubscribe)}function c(e){(0,o.T)(e)?e():e.unsubscribe()}s.EMPTY},17324:(e,t,r)=>{"use strict";r.d(t,{$:()=>n});var n={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},44728:(e,t,r)=>{"use strict";r.d(t,{_:()=>i});var n=(0,r(3719).L)((function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}})),o=r(38028);function i(e,t){var r="object"==typeof t;return new Promise((function(i,a){var s=new o.Ms({next:function(e){i(e),s.unsubscribe()},error:a,complete:function(){r?i(t.defaultValue):a(new n)}});e.subscribe(s)}))}},3862:(e,t,r)=>{"use strict";r.d(t,{R:()=>h});var n=r(74805),o=r(85032),i=r(89592),a=r(54688),s=r(96491),l=r(74829),c=r(34796),u=Array.isArray;var d=["addListener","removeListener"],p=["addEventListener","removeEventListener"],f=["on","off"];function h(e,t,r,v){if((0,l.T)(r)&&(v=r,r=void 0),v)return h(e,t,r).pipe((g=v,(0,c.T)((function(e){return function(e,t){return u(t)?e.apply(void 0,(0,n.fX)([],(0,n.zs)(t))):e(t)}(g,e)}))));var g,y=(0,n.zs)(function(e){return(0,l.T)(e.addEventListener)&&(0,l.T)(e.removeEventListener)}(e)?p.map((function(n){return function(o){return e[n](t,o,r)}})):function(e){return(0,l.T)(e.addListener)&&(0,l.T)(e.removeListener)}(e)?d.map(m(e,t)):function(e){return(0,l.T)(e.on)&&(0,l.T)(e.off)}(e)?f.map(m(e,t)):[],2),b=y[0],x=y[1];if(!b&&(0,s.X)(e))return(0,a.Z)((function(e){return h(e,t,r)}))((0,o.Tg)(e));if(!b)throw new TypeError("Invalid event target");return new i.c((function(e){var t=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return e.next(1<t.length?t:t[0])};return b(t),function(){return x(t)}}))}function m(e,t){return function(r){return function(n){return e[r](t,n)}}}},85032:(e,t,r)=>{"use strict";r.d(t,{Tg:()=>m});var n=r(74805),o=r(96491),i=r(95460),a=r(89592),s=r(91801),l=r(50187),c=r(9325),u=r(33663),d=r(28018),p=r(74829),f=r(83208),h=r(89728);function m(e){if(e instanceof a.c)return e;if(null!=e){if((0,s.l)(e))return y=e,new a.c((function(e){var t=y[h.s]();if((0,p.T)(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")}));if((0,o.X)(e))return g=e,new a.c((function(e){for(var t=0;t<g.length&&!e.closed;t++)e.next(g[t]);e.complete()}));if((0,i.y)(e))return m=e,new a.c((function(e){m.then((function(t){e.closed||(e.next(t),e.complete())}),(function(t){return e.error(t)})).then(null,f.m)}));if((0,l.T)(e))return v(e);if((0,u.x)(e))return r=e,new a.c((function(e){var t,o;try{for(var i=(0,n.Ju)(r),a=i.next();!a.done;a=i.next()){var s=a.value;if(e.next(s),e.closed)return}}catch(e){t={error:e}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(t)throw t.error}}e.complete()}));if((0,d.U)(e))return t=e,v((0,d.C)(t))}var t,r,m,g,y;throw(0,c.L)(e)}function v(e){return new a.c((function(t){(function(e,t){var r,o,i,a;return(0,n.sH)(this,void 0,void 0,(function(){var s,l;return(0,n.YH)(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),r=(0,n.xN)(e),c.label=1;case 1:return[4,r.next()];case 2:if((o=c.sent()).done)return[3,4];if(s=o.value,t.next(s),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return l=c.sent(),i={error:l},[3,11];case 6:return c.trys.push([6,,9,10]),o&&!o.done&&(a=r.return)?[4,a.call(r)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}}))}))})(e,t).catch((function(e){return t.error(e)}))}))}},62718:(e,t,r)=>{"use strict";r.d(t,{h:()=>k});var n=r(54688),o=r(63999),i=r(85032),a=r(89592),s=new a.c((function(e){return e.complete()})),l=r(74829);function c(e){return e[e.length-1]}var u=r(49239),d=r(49496),p=r(21650);function f(e,t){return void 0===t&&(t=0),(0,d.N)((function(r,n){r.subscribe((0,p._)(n,(function(r){return(0,u.N)(n,e,(function(){return n.next(r)}),t)}),(function(){return(0,u.N)(n,e,(function(){return n.complete()}),t)}),(function(r){return(0,u.N)(n,e,(function(){return n.error(r)}),t)})))}))}function h(e,t){return void 0===t&&(t=0),(0,d.N)((function(r,n){n.add(e.schedule((function(){return r.subscribe(n)}),t))}))}var m=r(68719);function v(e,t){if(!e)throw new Error("Iterable cannot be null");return new a.c((function(r){(0,u.N)(r,t,(function(){var n=e[Symbol.asyncIterator]();(0,u.N)(r,t,(function(){n.next().then((function(e){e.done?r.complete():r.next(e.value)}))}),0,!0)}))}))}var g=r(91801),y=r(95460),b=r(96491),x=r(33663),A=r(50187),w=r(9325),S=r(28018);function k(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=function(e){return(t=c(e))&&(0,l.T)(t.schedule)?e.pop():void 0;var t}(e),d=function(e){return"number"==typeof c(e)?e.pop():1/0}(e),p=e;return p.length?1===p.length?(0,i.Tg)(p[0]):function(e){return void 0===e&&(e=1/0),(0,n.Z)(o.D,e)}(d)(function(e,t){return t?function(e,t){if(null!=e){if((0,g.l)(e))return function(e,t){return(0,i.Tg)(e).pipe(h(t),f(t))}(e,t);if((0,b.X)(e))return function(e,t){return new a.c((function(r){var n=0;return t.schedule((function(){n===e.length?r.complete():(r.next(e[n++]),r.closed||this.schedule())}))}))}(e,t);if((0,y.y)(e))return function(e,t){return(0,i.Tg)(e).pipe(h(t),f(t))}(e,t);if((0,A.T)(e))return v(e,t);if((0,x.x)(e))return function(e,t){return new a.c((function(r){var n;return(0,u.N)(r,t,(function(){n=e[m.l](),(0,u.N)(r,t,(function(){var e,t,o;try{t=(e=n.next()).value,o=e.done}catch(e){return void r.error(e)}o?r.complete():r.next(t)}),0,!0)})),function(){return(0,l.T)(null==n?void 0:n.return)&&n.return()}}))}(e,t);if((0,S.U)(e))return function(e,t){return v((0,S.C)(e),t)}(e,t)}throw(0,w.L)(e)}(e,t):(0,i.Tg)(e)}(p,r)):s}},21650:(e,t,r)=>{"use strict";r.d(t,{_:()=>o});var n=r(74805);function o(e,t,r,n,o){return new i(e,t,r,n,o)}var i=function(e){function t(t,r,n,o,i,a){var s=e.call(this,t)||this;return s.onFinalize=i,s.shouldUnsubscribe=a,s._next=r?function(e){try{r(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=o?function(e){try{o(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return(0,n.C6)(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;e.prototype.unsubscribe.call(this),!r&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(r(38028).vU)},27570:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var n=r(49496),o=r(21650);function i(e,t){return(0,n.N)((function(r,n){var i=0;r.subscribe((0,o._)(n,(function(r){return e.call(t,r,i++)&&n.next(r)})))}))}},34796:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(49496),o=r(21650);function i(e,t){return(0,n.N)((function(r,n){var i=0;r.subscribe((0,o._)(n,(function(r){n.next(e.call(t,r,i++))})))}))}},54688:(e,t,r)=>{"use strict";r.d(t,{Z:()=>l});var n=r(34796),o=r(85032),i=r(49496),a=(r(49239),r(21650)),s=r(74829);function l(e,t,r){return void 0===r&&(r=1/0),(0,s.T)(t)?l((function(r,i){return(0,n.T)((function(e,n){return t(r,e,i,n)}))((0,o.Tg)(e(r,i)))}),r):("number"==typeof t&&(r=t),(0,i.N)((function(t,n){return function(e,t,r,n){var i=[],s=0,l=0,c=!1,u=function(){!c||i.length||s||t.complete()},d=function(e){return s<n?p(e):i.push(e)},p=function(e){s++;var c=!1;(0,o.Tg)(r(e,l++)).subscribe((0,a._)(t,(function(e){t.next(e)}),(function(){c=!0}),void 0,(function(){if(c)try{s--;for(;i.length&&s<n;)e=void 0,e=i.shift(),p(e);u()}catch(e){t.error(e)}var e})))};return e.subscribe((0,a._)(t,d,(function(){c=!0,u()}))),function(){}}(t,n,e,r)})))}},69652:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(21650),o=r(49496);function i(e,t){return(0,o.N)(function(e,t,r){return function(o,i){var a=r,s=t,l=0;o.subscribe((0,n._)(i,(function(t){var r=l++;s=a?e(s,t,r):(a=!0,t)}),(function(){a&&i.next(s),i.complete()})))}}(e,t,arguments.length>=2))}},85419:(e,t,r)=>{"use strict";r.d(t,{Q:()=>s});var n=r(49496),o=r(21650),i=r(85032),a=r(73281);function s(e){return(0,n.N)((function(t,r){(0,i.Tg)(e).subscribe((0,o._)(r,(function(){return r.complete()}),a.l)),!r.closed&&t.subscribe(r)}))}},82088:(e,t,r)=>{"use strict";r.d(t,{$:()=>a});var n=r(69652),o=r(49496),i=function(e,t){return e.push(t),e};function a(){return(0,o.N)((function(e,t){(0,n.T)(i,[])(e).subscribe(t)}))}},83196:(e,t,r)=>{"use strict";r.d(t,{f:()=>o});var n=r(74805),o={setTimeout:function(e,t){for(var r=[],i=2;i<arguments.length;i++)r[i-2]=arguments[i];var a=o.delegate;return(null==a?void 0:a.setTimeout)?a.setTimeout.apply(a,(0,n.fX)([e,t],(0,n.zs)(r))):setTimeout.apply(void 0,(0,n.fX)([e,t],(0,n.zs)(r)))},clearTimeout:function(e){var t=o.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0}},68719:(e,t,r)=>{"use strict";r.d(t,{l:()=>n});var n="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"},89728:(e,t,r)=>{"use strict";r.d(t,{s:()=>n});var n="function"==typeof Symbol&&Symbol.observable||"@@observable"},3719:(e,t,r)=>{"use strict";function n(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}r.d(t,{L:()=>n})},89612:(e,t,r)=>{"use strict";r.d(t,{Y:()=>i,l:()=>a});var n=r(17324),o=null;function i(e){if(n.$.useDeprecatedSynchronousErrorHandling){var t=!o;if(t&&(o={errorThrown:!1,error:null}),e(),t){var r=o,i=r.errorThrown,a=r.error;if(o=null,i)throw a}}else e()}function a(e){n.$.useDeprecatedSynchronousErrorHandling&&o&&(o.errorThrown=!0,o.error=e)}},49239:(e,t,r)=>{"use strict";function n(e,t,r,n,o){void 0===n&&(n=0),void 0===o&&(o=!1);var i=t.schedule((function(){r(),o?e.add(this.schedule(null,n)):this.unsubscribe()}),n);if(e.add(i),!o)return i}r.d(t,{N:()=>n})},63999:(e,t,r)=>{"use strict";function n(e){return e}r.d(t,{D:()=>n})},96491:(e,t,r)=>{"use strict";r.d(t,{X:()=>n});var n=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e}},50187:(e,t,r)=>{"use strict";r.d(t,{T:()=>o});var n=r(74829);function o(e){return Symbol.asyncIterator&&(0,n.T)(null==e?void 0:e[Symbol.asyncIterator])}},74829:(e,t,r)=>{"use strict";function n(e){return"function"==typeof e}r.d(t,{T:()=>n})},91801:(e,t,r)=>{"use strict";r.d(t,{l:()=>i});var n=r(89728),o=r(74829);function i(e){return(0,o.T)(e[n.s])}},33663:(e,t,r)=>{"use strict";r.d(t,{x:()=>i});var n=r(68719),o=r(74829);function i(e){return(0,o.T)(null==e?void 0:e[n.l])}},95460:(e,t,r)=>{"use strict";r.d(t,{y:()=>o});var n=r(74829);function o(e){return(0,n.T)(null==e?void 0:e.then)}},28018:(e,t,r)=>{"use strict";r.d(t,{C:()=>i,U:()=>a});var n=r(74805),o=r(74829);function i(e){return(0,n.AQ)(this,arguments,(function(){var t,r,o;return(0,n.YH)(this,(function(i){switch(i.label){case 0:t=e.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,(0,n.N3)(t.read())];case 3:return r=i.sent(),o=r.value,r.done?[4,(0,n.N3)(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,(0,n.N3)(o)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}}))}))}function a(e){return(0,o.T)(null==e?void 0:e.getReader)}},49496:(e,t,r)=>{"use strict";r.d(t,{N:()=>o});var n=r(74829);function o(e){return function(t){if(function(e){return(0,n.T)(null==e?void 0:e.lift)}(t))return t.lift((function(t){try{return e(t,this)}catch(e){this.error(e)}}));throw new TypeError("Unable to lift unknown Observable type")}}},73281:(e,t,r)=>{"use strict";function n(){}r.d(t,{l:()=>n})},83208:(e,t,r)=>{"use strict";r.d(t,{m:()=>i});var n=r(17324),o=r(83196);function i(e){o.f.setTimeout((function(){var t=n.$.onUnhandledError;if(!t)throw e;t(e)}))}},9325:(e,t,r)=>{"use strict";function n(e){return new TypeError("You provided "+(null!==e&&"object"==typeof e?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}r.d(t,{L:()=>n})},39154:e=>{"use strict";class t extends Error{constructor(e){super(t._prepareSuperMessage(e)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,t)}static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{return String(e)}}}const r=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],n=Symbol(".toJSON called"),o=({from:e,seen:t,to_:i,forceEnumerable:a,maxDepth:s,depth:l})=>{const c=i||(Array.isArray(e)?[]:{});if(t.push(e),l>=s)return c;if("function"==typeof e.toJSON&&!0!==e[n])return(e=>{e[n]=!0;const t=e.toJSON();return delete e[n],t})(e);for(const[r,n]of Object.entries(e))"function"==typeof Buffer&&Buffer.isBuffer(n)?c[r]="[object Buffer]":"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?c[r]="[Circular]":(l++,c[r]=o({from:e[r],seen:t.slice(),forceEnumerable:a,maxDepth:s,depth:l})):c[r]=n);for(const{property:t,enumerable:n}of r)"string"==typeof e[t]&&Object.defineProperty(c,t,{value:e[t],enumerable:!!a||n,configurable:!0,writable:!0});return c};e.exports={serializeError:(e,t={})=>{const{maxDepth:r=Number.POSITIVE_INFINITY}=t;return"object"==typeof e&&null!==e?o({from:e,seen:[],forceEnumerable:!0,maxDepth:r,depth:0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e},deserializeError:(e,r={})=>{const{maxDepth:n=Number.POSITIVE_INFINITY}=r;if(e instanceof Error)return e;if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=new Error;return o({from:e,seen:[],to_:t,maxDepth:n,depth:0}),t}return new t(e)}}},2401:e=>{var t=/\{([0-9a-zA-Z_]+)\}/g;e.exports=function(e){var r;if(2===arguments.length&&"object"==typeof arguments[1])r=arguments[1];else{r=new Array(arguments.length-1);for(var n=1;n<arguments.length;++n)r[n-1]=arguments[n]}return r&&r.hasOwnProperty||(r={}),e.replace(t,(function(t,n,o){var i;return"{"===e[o-1]&&"}"===e[o+t.length]?n:null==(i=r.hasOwnProperty(n)?r[n]:null)?"":i}))}},76430:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},96373:(e,t,r)=>{"use strict";r.d(t,{n:()=>u});var n=r(57973),o=r(45806);const i=e=>{const t=e.length;let r=0,a="";for(;r<t;r++){const t=e[r];if(null==t)continue;let s;switch(typeof t){case"boolean":break;case"object":if(Array.isArray(t))s=i(t);else{(0,n.v)(!(0,o.E)(t,!1)),s="";for(const e in t)t[e]&&e&&(s&&(s+=" "),s+=e)}break;default:s=t}s&&(a&&(a+=" "),a+=s)}return a};var a=r(53760),s=r(92005),l=r(7552);const{createCssAndCx:c}={createCssAndCx:function(e){const{cache:t}=e,r=(...e)=>{const r=(0,a.J)(e,t.registered);(0,s.sk)(t,r,!1);const n=`${t.key}-${r.name}`;{const r=e[0];(function(e){return e instanceof Object&&!("styles"in e)&&!("length"in e)&&!("__emotion_styles"in e)})(r)&&d.saveClassNameCSSObjectMapping(t,n,r)}return n};return{css:r,cx:(...e)=>{const n=i(e),o=d.fixClassName(t,n,r);return function(e,t,r){const n=[],o=(0,s.Rk)(e,n,r);return n.length<2?r:o+t(n)}(t.registered,r,o)}}}};function u(e){const{useCache:t}=e;return{useCssAndCx:function(){const e=t(),{css:r,cx:n}=function(t,r){var n;const o=(0,l.useRef)();return(!o.current||r.length!==(null===(n=o.current.prevDeps)||void 0===n?void 0:n.length)||o.current.prevDeps.map(((e,t)=>e===r[t])).indexOf(!1)>=0)&&(o.current={v:c({cache:e}),prevDeps:[...r]}),o.current.v}(0,[e]);return{css:r,cx:n}}}}const d=(()=>{const e=new WeakMap;return{saveClassNameCSSObjectMapping:(t,r,n)=>{let o=e.get(t);void 0===o&&(o=new Map,e.set(t,o)),o.set(r,n)},fixClassName:(t,r,n)=>{const o=e.get(t);return i(function(e){let t=!1;return e.map((([e,r])=>{if(void 0===r)return e;let n;if(t)n={"&&":r};else{n=e;for(const e in r)if(e.startsWith("@media")){t=!0;break}}return n}))}(r.split(" ").map((e=>[e,null==o?void 0:o.get(e)]))).map((e=>"string"==typeof e?e:n(e))))}}})()},73329:(e,t,r)=>{"use strict";r.d(t,{Q2:()=>f,i7:()=>p.i7});var n=r(32439),o=r(7552);function i(e){return e.charAt(0).toUpperCase()+e.slice(1)}function a(e){const{useTheme:t,cache:r}=e,{makeStyles:a}=(0,n.x6)({useTheme:t,cache:r});function l(e,t,r){const n="string"==typeof e?(()=>{const t=e,r=function({children:e,...r}){return(0,o.createElement)(t,r,e)};return Object.defineProperty(r,"name",{value:i(t)}),r})():e,l=(()=>{{const{name:e}=null!=r?r:{};if(void 0!==e)return"object"!=typeof e?e:Object.keys(e)[0]}let e;{const t=n.displayName;"string"==typeof t&&""!==t&&(e=t)}e:{if(void 0!==e)break e;const t=n.name;"string"==typeof t&&""!==t&&(e=t)}if(void 0!==e)return e=e.replace(/\$/g,"usd"),e=e.replace(/\(/g,"_").replace(/\)/g,"_"),e=e.replace(/[^a-zA-Z0-9-_]/g,"_"),e})(),c=a({...r,name:l})("function"==typeof t?(e,r,n)=>u(t(e,r,n)):u(t));function d(e){for(const t in e)if("root"!==t)return!0;return!1}const p=(0,o.forwardRef)((function(t,r){const{className:i,classes:a,...l}=t,{classes:u,cx:p}=c(t,{props:t}),f=p(u.root,i);return s.set(u,{...u,root:f}),o.createElement(n,{ref:r,className:d(u)?i:f,..."string"==typeof e?{}:{classes:u},...l})}));return void 0!==l&&(p.displayName=`${i(l)}WithStyles`,Object.defineProperty(p,"name",{value:p.displayName})),p}return l.getClasses=c,{withStyles:l}}const s=new WeakMap,l="getClasses should only be used in conjunction with withStyles";function c(e){const t=e.classes;if(void 0===t)throw new Error(l);const r=s.get(t);if(void 0===r)throw new Error(l);return r}function u(e){const t={},r={};return Object.keys(e).forEach((n=>(n.startsWith("@media")?r:t)[n]=e[n])),Object.keys(r).forEach((e=>{const n=r[e];Object.keys(n).forEach((r=>{var o;return t[r]={...null!==(o=t[r])&&void 0!==o?o:{},[e]:n[r]}}))})),t}var d=r(62432),p=r(64761);function f(e){return{...(0,n.x6)(e),...a(e)}}const{tss:h}=(0,d.d)({useContext:()=>({})});h.create({})},32439:(e,t,r)=>{"use strict";r.d(t,{QS:()=>v,x6:()=>h});var n=r(7552),o=r(66755),i=r(42788),a=r(96373),s=r(19676),l=r(45806),c=r(57973),u=r(68859),d=r(70549),p=r(90722);let f=0;function h(e){const{useTheme:t,cache:r}=e,{useCache:p}=v({cacheProvidedAtInception:r}),{useCssAndCx:h}=(0,a.n)({useCache:p});return{makeStyles:function(e){const{name:r,uniqId:a=""+f++}=null!=e?e:{},m="object"!=typeof r?r:Object.keys(r)[0];return function(e){const r="function"==typeof e?e:()=>e;return function(e,f){const v=t();let{css:g,cx:y}=h();const b=p();let x=(0,n.useMemo)((()=>{const t={},n="undefined"!=typeof Proxy&&new Proxy({},{get:(e,r)=>("symbol"==typeof r&&(0,c.v)(!1),t[r]=`${b.key}-${a}${void 0!==m?`-${m}`:""}-${r}-ref`)}),s=r(v,e,n||{}),u=(0,o.M)((0,i.u)(s).map((e=>{const r=s[e];return r.label||(r.label=`${void 0!==m?`${m}-`:""}${e}`),[e,`${g(r)}${(0,l.E)(e,e in t)?` ${t[e]}`:""}`]})));return(0,i.u)(t).forEach((e=>{e in u||(u[e]=t[e])})),u}),[b,g,y,v,(0,s.o)(e)]);{const e=null==f?void 0:f.props.classes;x=(0,n.useMemo)((()=>(0,u.z)(x,e,y)),[x,(0,s.o)(e),y])}{const e=(0,d.L)({classes:x,css:g,cx:y,name:null!=m?m:"makeStyle no name",idOfUseStyles:a,muiStyleOverridesParams:f,theme:v});void 0!==e.classes&&(x=e.classes),void 0!==e.css&&(g=e.css),void 0!==e.cx&&(y=e.cx)}return{classes:x,theme:v,css:g,cx:y}}}},useStyles:function(){const e=t(),{css:r,cx:n}=h();return{theme:e,css:r,cx:n}}}}const m=(0,n.createContext)(void 0),{createUseCache:v}={createUseCache:function(e){const{cacheProvidedAtInception:t}=e;return{useCache:function(){var e;const r=(0,p._)(),o=(0,n.useContext)(m),i=null!==(e=null!=t?t:o)&&void 0!==e?e:r;if(null===i)throw new Error(["In order to get SSR working with tss-react you need to explicitly provide an Emotion cache.","MUI users be aware: This is not an error strictly related to tss-react, with or without tss-react,","MUI needs an Emotion cache to be provided for SSR to work.","Here is the MUI documentation related to SSR setup: https://mui.com/material-ui/guides/server-rendering/","TSS provides helper that makes the process of setting up SSR easier: https://docs.tss-react.dev/ssr"].join("\n"));return i}}}}},68859:(e,t,r)=>{"use strict";r.d(t,{z:()=>o});var n=r(42788);function o(e,t,r){if(!(t instanceof Object))return e;const o={};return(0,n.u)(e).forEach((n=>o[n]=r(e[n],t[n]))),(0,n.u)(t).forEach((r=>{if(r in e)return;const n=t[r];"string"==typeof n&&(o[r]=n)})),o}},75785:(e,t,r)=>{"use strict";r.d(t,{n9:()=>s});var n=r(48231),o=r(73329),i=r(62432),a=r(70549);const{makeStyles:s,withStyles:l}=(0,o.Q2)({useTheme:n.A}),{tss:c}=(0,i.d)({useContext:function(){return{theme:(0,n.A)()}},usePlugin:a.L});c.create({})},70549:(e,t,r)=>{"use strict";r.d(t,{L:()=>a});var n=r(7552),o=r(19676),i=r(68859);const a=({classes:e,theme:t,muiStyleOverridesParams:r,css:a,cx:s,name:l})=>{var c,u;if("makeStyle no name"!==l){if(void 0!==r&&void 0===l)throw new Error("To use muiStyleOverridesParams, you must specify a name using .withName('MyComponent')")}else l=void 0;let d;try{d=void 0===l?void 0:(null===(u=null===(c=t.components)||void 0===c?void 0:c[l])||void 0===u?void 0:u.styleOverrides)||void 0}catch(e){}const p=(0,n.useMemo)((()=>{if(void 0===d)return;const e={};for(const n in d){const o=d[n];o instanceof Object&&(e[n]=a("function"==typeof o?o({theme:t,ownerState:null==r?void 0:r.ownerState,...null==r?void 0:r.props}):o))}return e}),[d,(0,o.o)(null==r?void 0:r.props),(0,o.o)(null==r?void 0:r.ownerState),a]);return{classes:e=(0,n.useMemo)((()=>(0,i.z)(e,p,s)),[e,p,s])}}},57973:(e,t,r)=>{"use strict";function n(e,t){if(!e)throw new Error(t)}r.d(t,{v:()=>n})},19676:(e,t,r)=>{"use strict";function n(e){if(!(e instanceof Object)||"function"==typeof e)return e;const t=[];for(const r in e){const n=e[r],o=typeof n;if("string"!==o&&("number"!==o||isNaN(n))&&"boolean"!==o&&null!=n)return e;t.push(`${r}:${o}_${n}`)}return"xSqLiJdLMd9s"+t.join("|")}r.d(t,{o:()=>n})},42788:(e,t,r)=>{"use strict";function n(e){return Object.keys(e)}r.d(t,{u:()=>n})},66755:(e,t,r)=>{"use strict";r.d(t,{M:()=>n});const n=Object.fromEntries?Object.fromEntries:e=>{if(!e||!e[Symbol.iterator])throw new Error("Object.fromEntries() requires a single iterable argument");const t={};return Object.keys(e).forEach((r=>{const[n,o]=e[r];t[n]=o})),t}},45806:(e,t,r)=>{"use strict";function n(e,t){return t}r.d(t,{E:()=>n})},62432:(e,t,r)=>{"use strict";r.d(t,{d:()=>p});var n=r(32439),o=r(96373),i=r(57973),a=r(66755),s=r(42788),l=r(45806),c=r(19676),u=r(68859);const d=(()=>{const e="object"==typeof document&&"function"==typeof(null===document||void 0===document?void 0:document.getElementById),t="undefined"!=typeof jest,r="undefined"!=typeof mocha,n="undefined"!=typeof __vitest_worker__;return!(e||t||r||n)})();function p(e){f=0,h.splice(0,h.length);const{useContext:t,usePlugin:r,cache:i}=e,{useCache:a}=(0,n.QS)({cacheProvidedAtInception:i}),{useCssAndCx:s}=(0,o.n)({useCache:a});return{tss:m({useContext:t,useCache:a,useCssAndCx:s,usePlugin:null!=r?r:({classes:e,cx:t,css:r})=>({classes:e,cx:t,css:r}),name:void 0,doesUseNestedSelectors:!1})}}let f=0;const h=[];function m(e){const{useContext:t,useCache:r,useCssAndCx:n,usePlugin:o,name:p,doesUseNestedSelectors:g}=e;return{withParams:()=>m({...e}),withName:t=>m({...e,name:"object"!=typeof t?t:Object.keys(t)[0]}),withNestedSelectors:()=>m({...e,doesUseNestedSelectors:!0}),create:e=>{const m="x"+f++;if(void 0!==p)for(;;){const e=h.find((e=>e.name===p));if(void 0===e)break;h.splice(h.indexOf(e),1)}const y="function"==typeof e?e:()=>e;return function(f){var b,x,A;const{classesOverrides:w,...S}=null!=f?f:{},k=t(),{css:E,cx:C}=n(),T=r(),R=function(e){const{cache:t,cssObjectByRuleNameOrGetCssObjectByRuleName:r,classesOverridesRef:n,paramsAndPluginParamsRef:o,idOfUseStyles:a,context:l,getClasses:u}=e;e:{const e=v.get(t);if(void 0===e)break e;const i=e.get(r);if(void 0===i)break e;const u=i.get(n);if(void 0===u)break e;const d=u.get(o);if(void 0===d)break e;const p=d.find((({context:e})=>{if(e===l)return!0;if((0,s.u)(e).length!==(0,s.u)(l).length)return!1;for(const t in e)if((0,c.o)(e[t])!==(0,c.o)(l[t]))return!1;return!0}));if(void 0!==p){if((null==p?void 0:p.idOfUseStyles)===a)return p.result;d.splice(d.indexOf(p),1)}}const d=u();{v.has(t)||v.set(t,new WeakMap);const e=v.get(t);(0,i.v)(void 0!==e),e.has(r)||e.set(r,new Map);const s=e.get(r);(0,i.v)(void 0!==s),s.has(n)||(s.size>200&&s.clear(),s.set(n,new Map));const c=s.get(n);if((0,i.v)(void 0!==c),!c.has(o)){{const e="string"==typeof o?257:5;c.size<e||c.clear()}c.set(o,[])}let u=c.get(o);(0,i.v)(void 0!==u),u.length>5&&(u=[]),u.push({idOfUseStyles:a,context:l,result:d})}return d}({cache:T,cssObjectByRuleNameOrGetCssObjectByRuleName:e,classesOverridesRef:(0,c.o)(w),paramsAndPluginParamsRef:(0,c.o)(S),idOfUseStyles:m,context:k,getClasses:()=>{const e={},t=y({...f,...k,...g?{classes:"undefined"==typeof Proxy?{}:new Proxy({},{get:(t,r)=>{if("symbol"==typeof r&&(0,i.v)(!1),d&&void 0===p)throw new Error(["tss-react: In SSR setups, in order to use nested selectors, you must also give a unique name to the useStyle function.",'Solution: Use tss.withName("ComponentName").withNestedSelectors<...>()... to set a name.'].join("\n"));e:{if(void 0===p)break e;let e=h.find((e=>e.name===p&&e.idOfUseStyles===m));void 0===e&&(e={name:p,idOfUseStyles:m,nestedSelectorRuleNames:new Set},h.push(e)),e.nestedSelectorRuleNames.add(r)}if(void 0!==p&&void 0!==h.find((e=>e.name===p&&e.idOfUseStyles!==m&&e.nestedSelectorRuleNames.has(r))))throw new Error([`tss-react: There are in your codebase two different useStyles named "${p}" that`,`both use use the nested selector ${r}.\n`,"This may lead to CSS class name collisions, causing nested selectors to target elements outside of the intended scope.\n","Solution: Ensure each useStyles using nested selectors has a unique name.\n",'Use: tss.withName("UniqueName").withNestedSelectors<...>()...'].join(" "));return e[r]=`${T.key}-${void 0!==p?p:m}-${r}-ref`}})}:{}});let r=(0,a.M)((0,s.u)(t).map((r=>{const n=t[r];return n.label||(n.label=`${void 0!==p?`${p}-`:""}${r}`),[r,`${E(n)}${(0,l.E)(r,r in e)?` ${e[r]}`:""}`]})));return(0,s.u)(e).forEach((t=>{t in r||(r[t]=e[t])})),r=(0,u.z)(r,w,C),r}}),M=o({classes:R,css:E,cx:C,idOfUseStyles:m,name:p,...k,...S});return{classes:null!==(b=M.classes)&&void 0!==b?b:R,css:null!==(x=M.css)&&void 0!==x?x:E,cx:null!==(A=M.cx)&&void 0!==A?A:C,...k}}}}}const v=new WeakMap},54731:(e,t,r)=>{"use strict";var n=r(7552),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=n.useState,a=n.useEffect,s=n.useLayoutEffect,l=n.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!o(e,r)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),n=i({inst:{value:r,getSnapshot:t}}),o=n[0].inst,u=n[1];return s((function(){o.value=r,o.getSnapshot=t,c(o)&&u({inst:o})}),[e,r,t]),a((function(){return c(o)&&u({inst:o}),e((function(){c(o)&&u({inst:o})}))}),[e]),l(r),r};t.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:u},95436:(e,t,r)=>{"use strict";e.exports=r(54731)},27785:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n},e.exports.__esModule=!0,e.exports.default=e.exports},35251:(e,t,r)=>{var n=r(27785);e.exports=function(e){if(Array.isArray(e))return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},2005:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},91301:(e,t,r)=>{var n=r(51458);function o(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,n(o.key),o)}}e.exports=function(e,t,r){return t&&o(e.prototype,t),r&&o(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},80403:(e,t,r)=>{var n=r(51458);e.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},92120:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},80965:e=>{e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.__esModule=!0,e.exports.default=e.exports},8231:e=>{e.exports=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.")},e.exports.__esModule=!0,e.exports.default=e.exports},28946:(e,t,r)=>{var n=r(35251),o=r(80965),i=r(65112),a=r(8231);e.exports=function(e){return n(e)||o(e)||i(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},31943:(e,t,r)=>{var n=r(78604).default;e.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},51458:(e,t,r)=>{var n=r(78604).default,o=r(31943);e.exports=function(e){var t=o(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},78604:e=>{function t(r){return e.exports=t="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},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},65112:(e,t,r)=>{var n=r(27785);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},60191:(e,t,r)=>{"use strict";function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}r.d(t,{A:()=>n})},80467:(e,t,r)=>{"use strict";function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,n(e,t)}r.d(t,{A:()=>o})},83673:(e,t,r)=>{"use strict";function n(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}r.d(t,{A:()=>n})},77089:(e,t,r)=>{"use strict";r.d(t,{ju:()=>he,we:()=>me,bv:()=>be});var n=r(7552),o=r.t(n,2);function i(){return"undefined"!=typeof window}function a(e){return c(e)?(e.nodeName||"").toLowerCase():"#document"}function s(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function l(e){var t;return null==(t=(c(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function c(e){return!!i()&&(e instanceof Node||e instanceof s(e).Node)}function u(e){return!!i()&&(e instanceof Element||e instanceof s(e).Element)}function d(e){return!!i()&&(e instanceof HTMLElement||e instanceof s(e).HTMLElement)}function p(e){return!(!i()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof s(e).ShadowRoot)}function f(e){const{overflow:t,overflowX:r,overflowY:n,display:o}=b(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!["inline","contents"].includes(o)}function h(e){return["table","td","th"].includes(a(e))}function m(e){return[":popover-open",":modal"].some((t=>{try{return e.matches(t)}catch(e){return!1}}))}function v(e){const t=g(),r=u(e)?b(e):e;return"none"!==r.transform||"none"!==r.perspective||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||["transform","perspective","filter"].some((e=>(r.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(r.contain||"").includes(e)))}function g(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function y(e){return["html","body","#document"].includes(a(e))}function b(e){return s(e).getComputedStyle(e)}function x(e){return u(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function A(e){if("html"===a(e))return e;const t=e.assignedSlot||e.parentNode||p(e)&&e.host||l(e);return p(t)?t.host:t}function w(e){const t=A(e);return y(t)?e.ownerDocument?e.ownerDocument.body:e.body:d(t)&&f(t)?t:w(t)}function S(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);const o=w(e),i=o===(null==(n=e.ownerDocument)?void 0:n.body),a=s(o);if(i){const e=k(a);return t.concat(a,a.visualViewport||[],f(o)?o:[],e&&r?S(e):[])}return t.concat(o,S(o,[],r))}function k(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var E=r(28485);const C=Math.min,T=Math.max,R=Math.round,M=(Math.floor,e=>({x:e,y:e}));function O(e){return e.split("-")[0]}function P(e){return["top","bottom"].includes(O(e))?"y":"x"}function I(e){const{x:t,y:r,width:n,height:o}=e;return{width:n,height:o,top:r,left:t,right:t+n,bottom:r+o,x:t,y:r}}function N(e,t,r){let{reference:n,floating:o}=e;const i=P(t),a=function(e){return"x"===P(e)?"y":"x"}(t),s="y"===a?"height":"width",l=O(t),c="y"===i,u=n.x+n.width/2-o.width/2,d=n.y+n.height/2-o.height/2,p=n[s]/2-o[s]/2;let f;switch(l){case"top":f={x:u,y:n.y-o.height};break;case"bottom":f={x:u,y:n.y+n.height};break;case"right":f={x:n.x+n.width,y:d};break;case"left":f={x:n.x-o.width,y:d};break;default:f={x:n.x,y:n.y}}switch(function(e){return e.split("-")[1]}(t)){case"start":f[a]-=p*(r&&c?-1:1);break;case"end":f[a]+=p*(r&&c?-1:1)}return f}function $(e){const t=b(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const o=d(e),i=o?e.offsetWidth:r,a=o?e.offsetHeight:n,s=R(r)!==i||R(n)!==a;return s&&(r=i,n=a),{width:r,height:n,$:s}}function _(e){return u(e)?e:e.contextElement}function L(e){const t=_(e);if(!d(t))return M(1);const r=t.getBoundingClientRect(),{width:n,height:o,$:i}=$(t);let a=(i?R(r.width):r.width)/n,s=(i?R(r.height):r.height)/o;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const j=M(0);function z(e){const t=s(e);return g()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:j}function D(e,t,r,n){void 0===t&&(t=!1),void 0===r&&(r=!1);const o=e.getBoundingClientRect(),i=_(e);let a=M(1);t&&(n?u(n)&&(a=L(n)):a=L(e));const l=function(e,t,r){return void 0===t&&(t=!1),!(!r||t&&r!==s(e))&&t}(i,r,n)?z(i):M(0);let c=(o.left+l.x)/a.x,d=(o.top+l.y)/a.y,p=o.width/a.x,f=o.height/a.y;if(i){const e=s(i),t=n&&u(n)?s(n):n;let r=e,o=k(r);for(;o&&n&&t!==r;){const e=L(o),t=o.getBoundingClientRect(),n=b(o),i=t.left+(o.clientLeft+parseFloat(n.paddingLeft))*e.x,a=t.top+(o.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,d*=e.y,p*=e.x,f*=e.y,c+=i,d+=a,r=s(o),o=k(r)}}return I({width:p,height:f,x:c,y:d})}function F(e,t){const r=x(e).scrollLeft;return t?t.left+r:D(l(e)).left+r}function B(e,t,r){let n;if("viewport"===t)n=function(e,t){const r=s(e),n=l(e),o=r.visualViewport;let i=n.clientWidth,a=n.clientHeight,c=0,u=0;if(o){i=o.width,a=o.height;const e=g();(!e||e&&"fixed"===t)&&(c=o.offsetLeft,u=o.offsetTop)}return{width:i,height:a,x:c,y:u}}(e,r);else if("document"===t)n=function(e){const t=l(e),r=x(e),n=e.ownerDocument.body,o=T(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=T(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let a=-r.scrollLeft+F(e);const s=-r.scrollTop;return"rtl"===b(n).direction&&(a+=T(t.clientWidth,n.clientWidth)-o),{width:o,height:i,x:a,y:s}}(l(e));else if(u(t))n=function(e,t){const r=D(e,!0,"fixed"===t),n=r.top+e.clientTop,o=r.left+e.clientLeft,i=d(e)?L(e):M(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:o*i.x,y:n*i.y}}(t,r);else{const r=z(e);n={...t,x:t.x-r.x,y:t.y-r.y}}return I(n)}function W(e,t){const r=A(e);return!(r===t||!u(r)||y(r))&&("fixed"===b(r).position||W(r,t))}function H(e,t,r){const n=d(t),o=l(t),i="fixed"===r,s=D(e,!0,i,t);let c={scrollLeft:0,scrollTop:0};const u=M(0);if(n||!n&&!i)if(("body"!==a(t)||f(o))&&(c=x(t)),n){const e=D(t,!0,i,t);u.x=e.x+t.clientLeft,u.y=e.y+t.clientTop}else o&&(u.x=F(o));let p=0,h=0;if(o&&!n&&!i){const e=o.getBoundingClientRect();h=e.top+c.scrollTop,p=e.left+c.scrollLeft-F(o,e)}return{x:s.left+c.scrollLeft-u.x-p,y:s.top+c.scrollTop-u.y-h,width:s.width,height:s.height}}function U(e){return"static"===b(e).position}function V(e,t){if(!d(e)||"fixed"===b(e).position)return null;if(t)return t(e);let r=e.offsetParent;return l(e)===r&&(r=r.ownerDocument.body),r}function q(e,t){const r=s(e);if(m(e))return r;if(!d(e)){let t=A(e);for(;t&&!y(t);){if(u(t)&&!U(t))return t;t=A(t)}return r}let n=V(e,t);for(;n&&h(n)&&U(n);)n=V(n,t);return n&&y(n)&&U(n)&&!v(n)?r:n||function(e){let t=A(e);for(;d(t)&&!y(t);){if(v(t))return t;if(m(t))return null;t=A(t)}return null}(e)||r}const X={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:o}=e;const i="fixed"===o,s=l(n),c=!!t&&m(t.floating);if(n===s||c&&i)return r;let u={scrollLeft:0,scrollTop:0},p=M(1);const h=M(0),v=d(n);if((v||!v&&!i)&&(("body"!==a(n)||f(s))&&(u=x(n)),d(n))){const e=D(n);p=L(n),h.x=e.x+n.clientLeft,h.y=e.y+n.clientTop}return{width:r.width*p.x,height:r.height*p.y,x:r.x*p.x-u.scrollLeft*p.x+h.x,y:r.y*p.y-u.scrollTop*p.y+h.y}},getDocumentElement:l,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:o}=e;const i=[..."clippingAncestors"===r?m(t)?[]:function(e,t){const r=t.get(e);if(r)return r;let n=S(e,[],!1).filter((e=>u(e)&&"body"!==a(e))),o=null;const i="fixed"===b(e).position;let s=i?A(e):e;for(;u(s)&&!y(s);){const t=b(s),r=v(s);r||"fixed"!==t.position||(o=null),(i?!r&&!o:!r&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||f(s)&&!r&&W(e,s))?n=n.filter((e=>e!==s)):o=t,s=A(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=i[0],l=i.reduce(((e,r)=>{const n=B(t,r,o);return e.top=T(n.top,e.top),e.right=C(n.right,e.right),e.bottom=C(n.bottom,e.bottom),e.left=T(n.left,e.left),e}),B(t,s,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:q,getElementRects:async function(e){const t=this.getOffsetParent||q,r=this.getDimensions,n=await r(e.floating);return{reference:H(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:r}=$(e);return{width:t,height:r}},getScale:L,isElement:u,isRTL:function(e){return"rtl"===b(e).direction}},Y=(e,t,r)=>{const n=new Map,o={platform:X,...r},i={...o.platform,_c:n};return(async(e,t,r)=>{const{placement:n="bottom",strategy:o="absolute",middleware:i=[],platform:a}=r,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=N(c,n,l),p=n,f={},h=0;for(let r=0;r<s.length;r++){const{name:i,fn:m}=s[r],{x:v,y:g,data:y,reset:b}=await m({x:u,y:d,initialPlacement:n,placement:p,strategy:o,middlewareData:f,rects:c,platform:a,elements:{reference:e,floating:t}});u=null!=v?v:u,d=null!=g?g:d,f={...f,[i]:{...f[i],...y}},b&&h<=50&&(h++,"object"==typeof b&&(b.placement&&(p=b.placement),b.rects&&(c=!0===b.rects?await a.getElementRects({reference:e,floating:t,strategy:o}):b.rects),({x:u,y:d}=N(c,p,l))),r=-1)}return{x:u,y:d,placement:p,strategy:o,middlewareData:f}})(e,t,{...o,platform:i})};var G="undefined"!=typeof document?n.useLayoutEffect:n.useEffect;function K(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let r,n,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(n=r;0!=n--;)if(!K(e[n],t[n]))return!1;return!0}if(o=Object.keys(e),r=o.length,r!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!{}.hasOwnProperty.call(t,o[n]))return!1;for(n=r;0!=n--;){const r=o[n];if(!("_owner"===r&&e.$$typeof||K(e[r],t[r])))return!1}return!0}return e!=e&&t!=t}function J(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Z(e,t){const r=J(e);return Math.round(t*r)/r}function Q(e){const t=n.useRef(e);return G((()=>{t.current=e})),t}const ee={...o},te=ee.useInsertionEffect||(e=>e());function re(e){const t=n.useRef((()=>{}));return te((()=>{t.current=e})),n.useCallback((function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return null==t.current?void 0:t.current(...r)}),[])}var ne="undefined"!=typeof document?n.useLayoutEffect:n.useEffect;let oe=!1,ie=0;const ae=()=>"floating-ui-"+Math.random().toString(36).slice(2,6)+ie++,se=ee.useId||function(){const[e,t]=n.useState((()=>oe?ae():void 0));return ne((()=>{null==e&&t(ae())}),[]),n.useEffect((()=>{oe=!0}),[]),e};const le=n.createContext(null),ce=n.createContext(null),ue=()=>{var e;return(null==(e=n.useContext(le))?void 0:e.id)||null},de=()=>n.useContext(ce),pe="data-floating-ui-focusable";function fe(e){return null!=e&&null!=e.clientX}function he(e,t){void 0===t&&(t={});const{open:r,dataRef:o,elements:{floating:i,domReference:a},refs:l}=e,{enabled:c=!0,axis:u="both",x:d=null,y:f=null}=t,h=n.useRef(!1),m=n.useRef(null),[v,g]=n.useState(),[y,b]=n.useState([]),x=re(((e,t)=>{h.current||o.current.openEvent&&!fe(o.current.openEvent)||l.setPositionReference(function(e,t){let r=null,n=null,o=!1;return{contextElement:e||void 0,getBoundingClientRect(){var i;const a=(null==e?void 0:e.getBoundingClientRect())||{width:0,height:0,x:0,y:0},s="x"===t.axis||"both"===t.axis,l="y"===t.axis||"both"===t.axis,c=["mouseenter","mousemove"].includes((null==(i=t.dataRef.current.openEvent)?void 0:i.type)||"")&&"touch"!==t.pointerType;let u=a.width,d=a.height,p=a.x,f=a.y;return null==r&&t.x&&s&&(r=a.x-t.x),null==n&&t.y&&l&&(n=a.y-t.y),p-=r||0,f-=n||0,u=0,d=0,!o||c?(u="y"===t.axis?a.width:0,d="x"===t.axis?a.height:0,p=s&&null!=t.x?t.x:p,f=l&&null!=t.y?t.y:f):o&&!c&&(d="x"===t.axis?a.height:d,u="y"===t.axis?a.width:u),o=!0,{width:u,height:d,x:p,y:f,top:f,right:p+u,bottom:f+d,left:p}}}}(a,{x:e,y:t,axis:u,dataRef:o,pointerType:v}))})),A=re((e=>{null==d&&null==f&&(r?m.current||b([]):x(e.clientX,e.clientY))})),w=function(e){const t=["mouse","pen"];return t.push("",void 0),t.includes(e)}(v)?i:r,S=n.useCallback((()=>{if(!w||!c||null!=d||null!=f)return;const e=s(i);function t(r){const n=function(e){return"composedPath"in e?e.composedPath()[0]:e.target}(r);!function(e,t){if(!e||!t)return!1;const r=null==t.getRootNode?void 0:t.getRootNode();if(e.contains(t))return!0;if(r&&p(r)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}(i,n)?x(r.clientX,r.clientY):(e.removeEventListener("mousemove",t),m.current=null)}if(!o.current.openEvent||fe(o.current.openEvent)){e.addEventListener("mousemove",t);const r=()=>{e.removeEventListener("mousemove",t),m.current=null};return m.current=r,r}l.setPositionReference(a)}),[w,c,d,f,i,o,l,a,x]);n.useEffect((()=>S()),[S,y]),n.useEffect((()=>{c&&!i&&(h.current=!1)}),[c,i]),n.useEffect((()=>{!c&&r&&(h.current=!0)}),[c,r]),ne((()=>{!c||null==d&&null==f||(h.current=!1,x(d,f))}),[c,d,f,x]);const k=n.useMemo((()=>{function e(e){let{pointerType:t}=e;g(t)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:A,onMouseEnter:A}}),[A]);return n.useMemo((()=>c?{reference:k}:{}),[c,k])}function me(e){void 0===e&&(e={});const{nodeId:t}=e,r=function(e){const{open:t=!1,onOpenChange:r,elements:o}=e,i=se(),a=n.useRef({}),[s]=n.useState((()=>function(){const e=new Map;return{emit(t,r){var n;null==(n=e.get(t))||n.forEach((e=>e(r)))},on(t,r){e.set(t,[...e.get(t)||[],r])},off(t,r){var n;e.set(t,(null==(n=e.get(t))?void 0:n.filter((e=>e!==r)))||[])}}}())),l=null!=ue(),[c,u]=n.useState(o.reference),d=re(((e,t,n)=>{a.current.openEvent=e?t:void 0,s.emit("openchange",{open:e,event:t,reason:n,nested:l}),null==r||r(e,t,n)})),p=n.useMemo((()=>({setPositionReference:u})),[]),f=n.useMemo((()=>({reference:c||o.reference||null,floating:o.floating||null,domReference:o.reference})),[c,o.reference,o.floating]);return n.useMemo((()=>({dataRef:a,open:t,onOpenChange:d,elements:f,events:s,floatingId:i,refs:p})),[t,d,f,s,i,p])}({...e,elements:{reference:null,floating:null,...e.elements}}),o=e.rootContext||r,i=o.elements,[a,s]=n.useState(null),[l,c]=n.useState(null),d=(null==i?void 0:i.reference)||a,p=n.useRef(null),f=de();ne((()=>{d&&(p.current=d)}),[d]);const h=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:o=[],platform:i,elements:{reference:a,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=e,[d,p]=n.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=n.useState(o);K(f,o)||h(o);const[m,v]=n.useState(null),[g,y]=n.useState(null),b=n.useCallback((e=>{e!==S.current&&(S.current=e,v(e))}),[]),x=n.useCallback((e=>{e!==k.current&&(k.current=e,y(e))}),[]),A=a||m,w=s||g,S=n.useRef(null),k=n.useRef(null),C=n.useRef(d),T=null!=c,R=Q(c),M=Q(i),O=Q(u),P=n.useCallback((()=>{if(!S.current||!k.current)return;const e={placement:t,strategy:r,middleware:f};M.current&&(e.platform=M.current),Y(S.current,k.current,e).then((e=>{const t={...e,isPositioned:!1!==O.current};I.current&&!K(C.current,t)&&(C.current=t,E.flushSync((()=>{p(t)})))}))}),[f,t,r,M,O]);G((()=>{!1===u&&C.current.isPositioned&&(C.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[u]);const I=n.useRef(!1);G((()=>(I.current=!0,()=>{I.current=!1})),[]),G((()=>{if(A&&(S.current=A),w&&(k.current=w),A&&w){if(R.current)return R.current(A,w,P);P()}}),[A,w,P,R,T]);const N=n.useMemo((()=>({reference:S,floating:k,setReference:b,setFloating:x})),[b,x]),$=n.useMemo((()=>({reference:A,floating:w})),[A,w]),_=n.useMemo((()=>{const e={position:r,left:0,top:0};if(!$.floating)return e;const t=Z($.floating,d.x),n=Z($.floating,d.y);return l?{...e,transform:"translate("+t+"px, "+n+"px)",...J($.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,l,$.floating,d.x,d.y]);return n.useMemo((()=>({...d,update:P,refs:N,elements:$,floatingStyles:_})),[d,P,N,$,_])}({...e,elements:{...i,...l&&{reference:l}}}),m=n.useCallback((e=>{const t=u(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),contextElement:e}:e;c(t),h.refs.setReference(t)}),[h.refs]),v=n.useCallback((e=>{(u(e)||null===e)&&(p.current=e,s(e)),(u(h.refs.reference.current)||null===h.refs.reference.current||null!==e&&!u(e))&&h.refs.setReference(e)}),[h.refs]),g=n.useMemo((()=>({...h.refs,setReference:v,setPositionReference:m,domReference:p})),[h.refs,v,m]),y=n.useMemo((()=>({...h.elements,domReference:d})),[h.elements,d]),b=n.useMemo((()=>({...h,...o,refs:g,elements:y,nodeId:t})),[h,g,y,t,o]);return ne((()=>{o.dataRef.current.floatingContext=b;const e=null==f?void 0:f.nodesRef.current.find((e=>e.id===t));e&&(e.context=b)})),n.useMemo((()=>({...h,context:b,refs:g,elements:y})),[h,g,y,b])}const ve="active",ge="selected";function ye(e,t,r){const n=new Map,o="item"===r;let i=e;if(o&&e){const{[ve]:t,[ge]:r,...n}=e;i=n}return{..."floating"===r&&{tabIndex:-1,[pe]:""},...i,...t.map((t=>{const n=t?t[r]:null;return"function"==typeof n?e?n(e):null:n})).concat(e).reduce(((e,t)=>t?(Object.entries(t).forEach((t=>{let[r,i]=t;var a;o&&[ve,ge].includes(r)||(0===r.indexOf("on")?(n.has(r)||n.set(r,[]),"function"==typeof i&&(null==(a=n.get(r))||a.push(i),e[r]=function(){for(var e,t=arguments.length,o=new Array(t),i=0;i<t;i++)o[i]=arguments[i];return null==(e=n.get(r))?void 0:e.map((e=>e(...o))).find((e=>void 0!==e))})):e[r]=i)})),e):e),{})}}function be(e){void 0===e&&(e=[]);const t=e.map((e=>null==e?void 0:e.reference)),r=e.map((e=>null==e?void 0:e.floating)),o=e.map((e=>null==e?void 0:e.item)),i=n.useCallback((t=>ye(t,e,"reference")),t),a=n.useCallback((t=>ye(t,e,"floating")),r),s=n.useCallback((t=>ye(t,e,"item")),o);return n.useMemo((()=>({getReferenceProps:i,getFloatingProps:a,getItemProps:s})),[i,a,s])}},76958:(e,t,r)=>{"use strict";r.d(t,{Mj:()=>R,X$:()=>O});var n={grad:.9,turn:360,rad:360/(2*Math.PI)},o=function(e){return"string"==typeof e?e.length>0:"number"==typeof e},i=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},a=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=1),e>r?r:e>t?e:t},s=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},l=function(e){return{r:a(e.r,0,255),g:a(e.g,0,255),b:a(e.b,0,255),a:a(e.a)}},c=function(e){return{r:i(e.r),g:i(e.g),b:i(e.b),a:i(e.a,3)}},u=/^#([0-9a-f]{3,8})$/i,d=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},p=function(e){var t=e.r,r=e.g,n=e.b,o=e.a,i=Math.max(t,r,n),a=i-Math.min(t,r,n),s=a?i===t?(r-n)/a:i===r?2+(n-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:o}},f=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;t=t/360*6,r/=100,n/=100;var i=Math.floor(t),a=n*(1-r),s=n*(1-(t-i)*r),l=n*(1-(1-t+i)*r),c=i%6;return{r:255*[n,s,a,a,l,n][c],g:255*[l,n,n,s,a,a][c],b:255*[a,a,l,n,n,s][c],a:o}},h=function(e){return{h:s(e.h),s:a(e.s,0,100),l:a(e.l,0,100),a:a(e.a)}},m=function(e){return{h:i(e.h),s:i(e.s),l:i(e.l),a:i(e.a,3)}},v=function(e){return f((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},g=function(e){return{h:(t=p(e)).h,s:(o=(200-(r=t.s))*(n=t.v)/100)>0&&o<200?r*n/100/(o<=100?o:200-o)*100:0,l:o/2,a:t.a};var t,r,n,o},y=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,b=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,x=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,w={string:[[function(e){var t=u.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?i(parseInt(e[3]+e[3],16)/255,2):1}:6===e.length||8===e.length?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:8===e.length?i(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=x.exec(e)||A.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:l({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=y.exec(e)||b.exec(e);if(!t)return null;var r,o,i=h({h:(r=t[1],o=t[2],void 0===o&&(o="deg"),Number(r)*(n[o]||1)),s:Number(t[3]),l:Number(t[4]),a:void 0===t[5]?1:Number(t[5])/(t[6]?100:1)});return v(i)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=void 0===i?1:i;return o(t)&&o(r)&&o(n)?l({r:Number(t),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,i=e.a,a=void 0===i?1:i;if(!o(t)||!o(r)||!o(n))return null;var s=h({h:Number(t),s:Number(r),l:Number(n),a:Number(a)});return v(s)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,i=e.a,l=void 0===i?1:i;if(!o(t)||!o(r)||!o(n))return null;var c=function(e){return{h:s(e.h),s:a(e.s,0,100),v:a(e.v,0,100),a:a(e.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(l)});return f(c)},"hsv"]]},S=function(e,t){for(var r=0;r<t.length;r++){var n=t[r][0](e);if(n)return[n,t[r][1]]}return[null,void 0]},k=function(e,t){var r=g(e);return{h:r.h,s:a(r.s+100*t,0,100),l:r.l,a:r.a}},E=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},C=function(e,t){var r=g(e);return{h:r.h,s:r.s,l:a(r.l+100*t,0,100),a:r.a}},T=function(){function e(e){this.parsed=function(e){return"string"==typeof e?S(e.trim(),w.string):"object"==typeof e&&null!==e?S(e,w.object):[null,void 0]}(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return null!==this.parsed},e.prototype.brightness=function(){return i(E(this.rgba),2)},e.prototype.isDark=function(){return E(this.rgba)<.5},e.prototype.isLight=function(){return E(this.rgba)>=.5},e.prototype.toHex=function(){return t=(e=c(this.rgba)).r,r=e.g,n=e.b,a=(o=e.a)<1?d(i(255*o)):"","#"+d(t)+d(r)+d(n)+a;var e,t,r,n,o,a},e.prototype.toRgb=function(){return c(this.rgba)},e.prototype.toRgbString=function(){return t=(e=c(this.rgba)).r,r=e.g,n=e.b,(o=e.a)<1?"rgba("+t+", "+r+", "+n+", "+o+")":"rgb("+t+", "+r+", "+n+")";var e,t,r,n,o},e.prototype.toHsl=function(){return m(g(this.rgba))},e.prototype.toHslString=function(){return t=(e=m(g(this.rgba))).h,r=e.s,n=e.l,(o=e.a)<1?"hsla("+t+", "+r+"%, "+n+"%, "+o+")":"hsl("+t+", "+r+"%, "+n+"%)";var e,t,r,n,o},e.prototype.toHsv=function(){return e=p(this.rgba),{h:i(e.h),s:i(e.s),v:i(e.v),a:i(e.a,3)};var e},e.prototype.invert=function(){return R({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return void 0===e&&(e=.1),R(k(this.rgba,e))},e.prototype.desaturate=function(e){return void 0===e&&(e=.1),R(k(this.rgba,-e))},e.prototype.grayscale=function(){return R(k(this.rgba,-1))},e.prototype.lighten=function(e){return void 0===e&&(e=.1),R(C(this.rgba,e))},e.prototype.darken=function(e){return void 0===e&&(e=.1),R(C(this.rgba,-e))},e.prototype.rotate=function(e){return void 0===e&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return"number"==typeof e?R({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):i(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=g(this.rgba);return"number"==typeof e?R({h:e,s:t.s,l:t.l,a:t.a}):i(t.h)},e.prototype.isEqual=function(e){return this.toHex()===R(e).toHex()},e}(),R=function(e){return e instanceof T?e:new T(e)},M=[],O=function(e){e.forEach((function(e){M.indexOf(e)<0&&(e(T,w),M.push(e))}))}},8145:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=1),e>r?r:e>t?e:t},o=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},i=function(e){return 255*(e>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e)},a=96.422,s=82.521,l=function(e){var t,r,o=.9555766*(t=e).x+-.0230393*t.y+.0631636*t.z,a=-.0282895*t.x+1.0099416*t.y+.0210077*t.z,s=.0122982*t.x+-.020483*t.y+1.3299098*t.z;return r={r:i(.032404542*o-.015371385*a-.004985314*s),g:i(-.00969266*o+.018760108*a+41556e-8*s),b:i(556434e-9*o-.002040259*a+.010572252*s),a:e.a},{r:n(r.r,0,255),g:n(r.g,0,255),b:n(r.b,0,255),a:n(r.a)}},c=function(e){var t=o(e.r),r=o(e.g),i=o(e.b);return function(e){return{x:n(e.x,0,a),y:n(e.y,0,100),z:n(e.z,0,s),a:n(e.a)}}(function(e){return{x:1.0478112*e.x+.0228866*e.y+-.050127*e.z,y:.0295424*e.x+.9904844*e.y+-.0170491*e.z,z:-.0092345*e.x+.0150436*e.y+.7521316*e.z,a:e.a}}({x:100*(.4124564*t+.3575761*r+.1804375*i),y:100*(.2126729*t+.7151522*r+.072175*i),z:100*(.0193339*t+.119192*r+.9503041*i),a:e.a}))},u=216/24389,d=24389/27,p=function(e){var t=c(e),r=t.x/a,n=t.y/100,o=t.z/s;return r=r>u?Math.cbrt(r):(d*r+16)/116,{l:116*(n=n>u?Math.cbrt(n):(d*n+16)/116)-16,a:500*(r-n),b:200*(n-(o=o>u?Math.cbrt(o):(d*o+16)/116)),alpha:t.a}},f=function(e,t,r){var o,i=p(e),c=p(t);return function(e){var t=(e.l+16)/116,r=e.a/500+t,n=t-e.b/200;return l({x:(Math.pow(r,3)>u?Math.pow(r,3):(116*r-16)/d)*a,y:100*(e.l>8?Math.pow((e.l+16)/116,3):e.l/d),z:(Math.pow(n,3)>u?Math.pow(n,3):(116*n-16)/d)*s,a:e.alpha})}({l:n((o={l:i.l*(1-r)+c.l*r,a:i.a*(1-r)+c.a*r,b:i.b*(1-r)+c.b*r,alpha:i.alpha*(1-r)+c.alpha*r}).l,0,400),a:o.a,b:o.b,alpha:n(o.alpha)})};function h(e){function t(e,t,r){void 0===r&&(r=5);for(var n=[],o=1/(r-1),i=0;i<=r-1;i++)n.push(e.mix(t,o*i));return n}e.prototype.mix=function(t,r){void 0===r&&(r=.5);var n=t instanceof e?t:new e(t),o=f(this.toRgb(),n.toRgb(),r);return new e(o)},e.prototype.tints=function(e){return t(this,"#fff",e)},e.prototype.shades=function(e){return t(this,"#000",e)},e.prototype.tones=function(e){return t(this,"#808080",e)}}},81687:(e,t,r)=>{"use strict";function n(e,t){var r={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},n={};for(var o in r)n[r[o]]=o;var i={};e.prototype.toName=function(t){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,s=n[this.toHex()];if(s)return s;if(null==t?void 0:t.closest){var l=this.toRgb(),c=1/0,u="black";if(!i.length)for(var d in r)i[d]=new e(r[d]).toRgb();for(var p in r){var f=(o=l,a=i[p],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));f<c&&(c=f,u=p)}return u}},t.string.push([function(t){var n=t.toLowerCase(),o="transparent"===n?"#0000":r[n];return o?new e(o).toRgb():null},"name"])}r.d(t,{A:()=>n})},88627:(e,t,r)=>{"use strict";function n(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function o(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function i(e){let t,r,i;function s(e,n,o=0,i=e.length){if(o<i){if(0!==t(n,n))return i;do{const t=o+i>>>1;r(e[t],n)<0?o=t+1:i=t}while(o<i)}return o}return 2!==e.length?(t=n,r=(t,r)=>n(e(t),r),i=(t,r)=>e(t)-r):(t=e===n||e===o?e:a,r=e,i=e),{left:s,center:function(e,t,r=0,n=e.length){const o=s(e,t,r,n-1);return o>r&&i(e[o-1],t)>-i(e[o],t)?o-1:o},right:function(e,n,o=0,i=e.length){if(o<i){if(0!==t(n,n))return i;do{const t=o+i>>>1;r(e[t],n)<=0?o=t+1:i=t}while(o<i)}return o}}}function a(){return 0}r.d(t,{Ay:()=>c});const s=i(n),l=s.right,c=(s.left,i((function(e){return null===e?NaN:+e})).center,l)},42480:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>s,lq:()=>l,sG:()=>c});const n=Math.sqrt(50),o=Math.sqrt(10),i=Math.sqrt(2);function a(e,t,r){const s=(t-e)/Math.max(0,r),l=Math.floor(Math.log10(s)),c=s/Math.pow(10,l),u=c>=n?10:c>=o?5:c>=i?2:1;let d,p,f;return l<0?(f=Math.pow(10,-l)/u,d=Math.round(e*f),p=Math.round(t*f),d/f<e&&++d,p/f>t&&--p,f=-f):(f=Math.pow(10,l)*u,d=Math.round(e/f),p=Math.round(t/f),d*f<e&&++d,p*f>t&&--p),p<d&&.5<=r&&r<2?a(e,t,2*r):[d,p,f]}function s(e,t,r){if(!((r=+r)>0))return[];if((e=+e)==(t=+t))return[e];const n=t<e,[o,i,s]=n?a(t,e,r):a(e,t,r);if(!(i>=o))return[];const l=i-o+1,c=new Array(l);if(n)if(s<0)for(let e=0;e<l;++e)c[e]=(i-e)/-s;else for(let e=0;e<l;++e)c[e]=(i-e)*s;else if(s<0)for(let e=0;e<l;++e)c[e]=(o+e)/-s;else for(let e=0;e<l;++e)c[e]=(o+e)*s;return c}function l(e,t,r){return a(e=+e,t=+t,r=+r)[2]}function c(e,t,r){r=+r;const n=(t=+t)<(e=+e),o=n?l(t,e,r):l(e,t,r);return(n?-1:1)*(o<0?1/-o:o)}},25319:(e,t,r)=>{"use strict";function n(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function o(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function i(){}r.d(t,{Ay:()=>A,Qh:()=>k});var a=.7,s=1/a,l="\\s*([+-]?\\d+)\\s*",c="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",u="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",d=/^#([0-9a-f]{3,8})$/,p=new RegExp(`^rgb\\(${l},${l},${l}\\)$`),f=new RegExp(`^rgb\\(${u},${u},${u}\\)$`),h=new RegExp(`^rgba\\(${l},${l},${l},${c}\\)$`),m=new RegExp(`^rgba\\(${u},${u},${u},${c}\\)$`),v=new RegExp(`^hsl\\(${c},${u},${u}\\)$`),g=new RegExp(`^hsla\\(${c},${u},${u},${c}\\)$`),y={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function b(){return this.rgb().formatHex()}function x(){return this.rgb().formatRgb()}function A(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=d.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?w(t):3===r?new E(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?S(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?S(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=p.exec(e))?new E(t[1],t[2],t[3],1):(t=f.exec(e))?new E(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=h.exec(e))?S(t[1],t[2],t[3],t[4]):(t=m.exec(e))?S(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=v.exec(e))?P(t[1],t[2]/100,t[3]/100,1):(t=g.exec(e))?P(t[1],t[2]/100,t[3]/100,t[4]):y.hasOwnProperty(e)?w(y[e]):"transparent"===e?new E(NaN,NaN,NaN,0):null}function w(e){return new E(e>>16&255,e>>8&255,255&e,1)}function S(e,t,r,n){return n<=0&&(e=t=r=NaN),new E(e,t,r,n)}function k(e,t,r,n){return 1===arguments.length?((o=e)instanceof i||(o=A(o)),o?new E((o=o.rgb()).r,o.g,o.b,o.opacity):new E):new E(e,t,r,null==n?1:n);var o}function E(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function C(){return`#${O(this.r)}${O(this.g)}${O(this.b)}`}function T(){const e=R(this.opacity);return`${1===e?"rgb(":"rgba("}${M(this.r)}, ${M(this.g)}, ${M(this.b)}${1===e?")":`, ${e})`}`}function R(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function M(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function O(e){return((e=M(e))<16?"0":"")+e.toString(16)}function P(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new N(e,t,r,n)}function I(e){if(e instanceof N)return new N(e.h,e.s,e.l,e.opacity);if(e instanceof i||(e=A(e)),!e)return new N;if(e instanceof N)return e;var t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,l=a-o,c=(a+o)/2;return l?(s=t===a?(r-n)/l+6*(r<n):r===a?(n-t)/l+2:(t-r)/l+4,l/=c<.5?a+o:2-a-o,s*=60):l=c>0&&c<1?0:s,new N(s,l,c,e.opacity)}function N(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function $(e){return(e=(e||0)%360)<0?e+360:e}function _(e){return Math.max(0,Math.min(1,e||0))}function L(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}n(i,A,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:b,formatHex:b,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return I(this).formatHsl()},formatRgb:x,toString:x}),n(E,k,o(i,{brighter(e){return e=null==e?s:Math.pow(s,e),new E(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?a:Math.pow(a,e),new E(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new E(M(this.r),M(this.g),M(this.b),R(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:C,formatHex:C,formatHex8:function(){return`#${O(this.r)}${O(this.g)}${O(this.b)}${O(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:T,toString:T})),n(N,(function(e,t,r,n){return 1===arguments.length?I(e):new N(e,t,r,null==n?1:n)}),o(i,{brighter(e){return e=null==e?s:Math.pow(s,e),new N(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?a:Math.pow(a,e),new N(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new E(L(e>=240?e-240:e+120,o,n),L(e,o,n),L(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new N($(this.h),_(this.s),_(this.l),R(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=R(this.opacity);return`${1===e?"hsl(":"hsla("}${$(this.h)}, ${100*_(this.s)}%, ${100*_(this.l)}%${1===e?")":`, ${e})`}`}}))},64643:(e,t,r)=>{"use strict";r.d(t,{GP:()=>d,s:()=>p});var n,o=r(12197),i=r(46317),a=r(58646);function s(e,t){var r=(0,a.f)(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}const l={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:a.A,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>s(100*e,t),r:s,s:function(e,t){var r=(0,a.f)(e,t);if(!r)return e+"";var o=r[0],i=r[1],s=i-(n=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,l=o.length;return s===l?o:s>l?o+new Array(s-l+1).join("0"):s>0?o.slice(0,s)+"."+o.slice(s):"0."+new Array(1-s).join("0")+(0,a.f)(e,Math.max(0,t+s-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function c(e){return e}var u,d,p,f=Array.prototype.map,h=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];u=function(e){var t,r,a=void 0===e.grouping||void 0===e.thousands?c:(t=f.call(e.grouping,Number),r=e.thousands+"",function(e,n){for(var o=e.length,i=[],a=0,s=t[0],l=0;o>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),i.push(e.substring(o-=s,o+s)),!((l+=s+1)>n));)s=t[a=(a+1)%t.length];return i.reverse().join(r)}),s=void 0===e.currency?"":e.currency[0]+"",u=void 0===e.currency?"":e.currency[1]+"",d=void 0===e.decimal?".":e.decimal+"",p=void 0===e.numerals?c:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(f.call(e.numerals,String)),m=void 0===e.percent?"%":e.percent+"",v=void 0===e.minus?"−":e.minus+"",g=void 0===e.nan?"NaN":e.nan+"";function y(e){var t=(e=(0,i.A)(e)).fill,r=e.align,o=e.sign,c=e.symbol,f=e.zero,y=e.width,b=e.comma,x=e.precision,A=e.trim,w=e.type;"n"===w?(b=!0,w="g"):l[w]||(void 0===x&&(x=12),A=!0,w="g"),(f||"0"===t&&"="===r)&&(f=!0,t="0",r="=");var S="$"===c?s:"#"===c&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",k="$"===c?u:/[%p]/.test(w)?m:"",E=l[w],C=/[defgprs%]/.test(w);function T(e){var i,s,l,c=S,u=k;if("c"===w)u=E(e)+u,e="";else{var m=(e=+e)<0||1/e<0;if(e=isNaN(e)?g:E(Math.abs(e),x),A&&(e=function(e){e:for(var t,r=e.length,n=1,o=-1;n<r;++n)switch(e[n]){case".":o=t=n;break;case"0":0===o&&(o=n),t=n;break;default:if(!+e[n])break e;o>0&&(o=0)}return o>0?e.slice(0,o)+e.slice(t+1):e}(e)),m&&0==+e&&"+"!==o&&(m=!1),c=(m?"("===o?o:v:"-"===o||"("===o?"":o)+c,u=("s"===w?h[8+n/3]:"")+u+(m&&"("===o?")":""),C)for(i=-1,s=e.length;++i<s;)if(48>(l=e.charCodeAt(i))||l>57){u=(46===l?d+e.slice(i+1):e.slice(i))+u,e=e.slice(0,i);break}}b&&!f&&(e=a(e,1/0));var T=c.length+e.length+u.length,R=T<y?new Array(y-T+1).join(t):"";switch(b&&f&&(e=a(R+e,R.length?y-u.length:1/0),R=""),r){case"<":e=c+e+u+R;break;case"=":e=c+R+e+u;break;case"^":e=R.slice(0,T=R.length>>1)+c+e+u+R.slice(T);break;default:e=R+c+e+u}return p(e)}return x=void 0===x?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x)),T.toString=function(){return e+""},T}return{format:y,formatPrefix:function(e,t){var r=y(((e=(0,i.A)(e)).type="f",e)),n=3*Math.max(-8,Math.min(8,Math.floor((0,o.A)(t)/3))),a=Math.pow(10,-n),s=h[8+n/3];return function(e){return r(a*e)+s}}}}({thousands:",",grouping:[3],currency:["$",""]}),d=u.format,p=u.formatPrefix},12197:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(58646);function o(e){return(e=(0,n.f)(Math.abs(e)))?e[1]:NaN}},58646:(e,t,r)=>{"use strict";function n(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function o(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}r.d(t,{A:()=>n,f:()=>o})},46317:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function o(e){if(!(t=n.exec(e)))throw new Error("invalid format: "+e);var t;return new i({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function i(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}o.prototype=i.prototype,i.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type}},82442:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=e=>()=>e},24963:(e,t,r)=>{"use strict";function n(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}r.d(t,{A:()=>n})},20095:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>s,Ik:()=>c});var n=r(25319);function o(e,t,r,n,o){var i=e*e,a=i*e;return((1-3*e+3*i-a)*t+(4-6*i+3*a)*r+(1+3*e+3*i-3*a)*n+a*o)/6}var i=r(82442);function a(e,t){var r=t-e;return r?function(e,t){return function(r){return e+r*t}}(e,r):(0,i.A)(isNaN(e)?t:e)}const s=function e(t){var r=function(e){return 1==(e=+e)?a:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}(t,r,e):(0,i.A)(isNaN(t)?r:t)}}(t);function o(e,t){var o=r((e=(0,n.Qh)(e)).r,(t=(0,n.Qh)(t)).r),i=r(e.g,t.g),s=r(e.b,t.b),l=a(e.opacity,t.opacity);return function(t){return e.r=o(t),e.g=i(t),e.b=s(t),e.opacity=l(t),e+""}}return o.gamma=e,o}(1);function l(e){return function(t){var r,o,i=t.length,a=new Array(i),s=new Array(i),l=new Array(i);for(r=0;r<i;++r)o=(0,n.Qh)(t[r]),a[r]=o.r||0,s[r]=o.g||0,l[r]=o.b||0;return a=e(a),s=e(s),l=e(l),o.opacity=1,function(e){return o.r=a(e),o.g=s(e),o.b=l(e),o+""}}}var c=l((function(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],s=n>0?e[n-1]:2*i-a,l=n<t-1?e[n+2]:2*a-i;return o((r-n/t)*t,s,i,a,l)}}));l((function(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],s=e[(n+1)%t],l=e[(n+2)%t];return o((r-n/t)*t,i,a,s,l)}}))},61300:(e,t,r)=>{"use strict";function n(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}r.d(t,{A:()=>n})},20314:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(25319),o=r(20095);function i(e,t){var r,n=t?t.length:0,o=e?Math.min(n,e.length):0,i=new Array(o),a=new Array(n);for(r=0;r<o;++r)i[r]=h(e[r],t[r]);for(;r<n;++r)a[r]=t[r];return function(e){for(r=0;r<o;++r)a[r]=i[r](e);return a}}function a(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var s=r(24963);function l(e,t){var r,n={},o={};for(r in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)r in e?n[r]=h(e[r],t[r]):o[r]=t[r];return function(e){for(r in n)o[r]=n[r](e);return o}}var c=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,u=new RegExp(c.source,"g");function d(e,t){var r,n,o,i=c.lastIndex=u.lastIndex=0,a=-1,l=[],d=[];for(e+="",t+="";(r=c.exec(e))&&(n=u.exec(t));)(o=n.index)>i&&(o=t.slice(i,o),l[a]?l[a]+=o:l[++a]=o),(r=r[0])===(n=n[0])?l[a]?l[a]+=n:l[++a]=n:(l[++a]=null,d.push({i:a,x:(0,s.A)(r,n)})),i=u.lastIndex;return i<t.length&&(o=t.slice(i),l[a]?l[a]+=o:l[++a]=o),l.length<2?d[0]?function(e){return function(t){return e(t)+""}}(d[0].x):function(e){return function(){return e}}(t):(t=d.length,function(e){for(var r,n=0;n<t;++n)l[(r=d[n]).i]=r.x(e);return l.join("")})}var p=r(82442);function f(e,t){t||(t=[]);var r,n=e?Math.min(t.length,e.length):0,o=t.slice();return function(i){for(r=0;r<n;++r)o[r]=e[r]*(1-i)+t[r]*i;return o}}function h(e,t){var r,c,u=typeof t;return null==t||"boolean"===u?(0,p.A)(t):("number"===u?s.A:"string"===u?(r=(0,n.Ay)(t))?(t=r,o.Ay):d:t instanceof n.Ay?o.Ay:t instanceof Date?a:(c=t,!ArrayBuffer.isView(c)||c instanceof DataView?Array.isArray(t)?i:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?l:s.A:f))(e,t)}},90493:(e,t,r)=>{"use strict";r.d(t,{C:()=>f,Ay:()=>m,D_:()=>c,Gu:()=>h});var n=r(88627),o=r(20314),i=r(24963),a=r(61300);function s(e){return+e}var l=[0,1];function c(e){return e}function u(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:(r=isNaN(t)?NaN:.5,function(){return r});var r}function d(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o<n?(n=u(o,n),i=r(a,i)):(n=u(n,o),i=r(i,a)),function(e){return i(n(e))}}function p(e,t,r){var o=Math.min(e.length,t.length)-1,i=new Array(o),a=new Array(o),s=-1;for(e[o]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<o;)i[s]=u(e[s],e[s+1]),a[s]=r(t[s],t[s+1]);return function(t){var r=(0,n.Ay)(e,t,1,o)-1;return a[r](i[r](t))}}function f(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function h(){var e,t,r,n,u,f,h=l,m=l,v=o.A,g=c;function y(){var e,t,r,o=Math.min(h.length,m.length);return g!==c&&(e=h[0],t=h[o-1],e>t&&(r=e,e=t,t=r),g=function(r){return Math.max(e,Math.min(t,r))}),n=o>2?p:d,u=f=null,b}function b(t){return null==t||isNaN(t=+t)?r:(u||(u=n(h.map(e),m,v)))(e(g(t)))}return b.invert=function(r){return g(t((f||(f=n(m,h.map(e),i.A)))(r)))},b.domain=function(e){return arguments.length?(h=Array.from(e,s),y()):h.slice()},b.range=function(e){return arguments.length?(m=Array.from(e),y()):m.slice()},b.rangeRound=function(e){return m=Array.from(e),v=a.A,y()},b.clamp=function(e){return arguments.length?(g=!!e||c,y()):g!==c},b.interpolate=function(e){return arguments.length?(v=e,y()):v},b.unknown=function(e){return arguments.length?(r=e,b):r},function(r,n){return e=r,t=n,y()}}function m(){return h()(c,c)}},6219:(e,t,r)=>{"use strict";function n(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function o(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}r.d(t,{C:()=>n,K:()=>o})},45824:(e,t,r)=>{"use strict";r.d(t,{A:()=>u,C:()=>c});var n=r(42480),o=r(90493),i=r(6219),a=r(46317),s=r(12197),l=r(64643);function c(e){var t=e.domain;return e.ticks=function(e){var r=t();return(0,n.Ay)(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var o=t();return function(e,t,r,o){var i,c=(0,n.sG)(e,t,r);switch((o=(0,a.A)(null==o?",f":o)).type){case"s":var u=Math.max(Math.abs(e),Math.abs(t));return null!=o.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor((0,s.A)(t)/3)))-(0,s.A)(Math.abs(e)))}(c,u))||(o.precision=i),(0,l.s)(o,u);case"":case"e":case"g":case"p":case"r":null!=o.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,(0,s.A)(t)-(0,s.A)(e))+1}(c,Math.max(Math.abs(e),Math.abs(t))))||(o.precision=i-("e"===o.type));break;case"f":case"%":null!=o.precision||isNaN(i=function(e){return Math.max(0,-(0,s.A)(Math.abs(e)))}(c))||(o.precision=i-2*("%"===o.type))}return(0,l.GP)(o)}(o[0],o[o.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var o,i,a=t(),s=0,l=a.length-1,c=a[s],u=a[l],d=10;for(u<c&&(i=c,c=u,u=i,i=s,s=l,l=i);d-- >0;){if((i=(0,n.lq)(c,u,r))===o)return a[s]=c,a[l]=u,t(a);if(i>0)c=Math.floor(c/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,u=Math.floor(u*i)/i}o=i}return e},e}function u(){var e=(0,o.Ay)();return e.copy=function(){return(0,o.C)(e,u())},i.C.apply(e,arguments),c(e)}},35873:(e,t,r)=>{"use strict";r.d(t,{A:()=>m,g:()=>h});var n=r(42480),o=r(46317),i=r(64643),a=r(90493),s=r(6219);function l(e){return Math.log(e)}function c(e){return Math.exp(e)}function u(e){return-Math.log(-e)}function d(e){return-Math.exp(-e)}function p(e){return isFinite(e)?+("1e"+e):e<0?0:e}function f(e){return(t,r)=>-e(-t,r)}function h(e){const t=e(l,c),r=t.domain;let a,s,h=10;function m(){return a=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(h),s=function(e){return 10===e?p:e===Math.E?Math.exp:t=>Math.pow(e,t)}(h),r()[0]<0?(a=f(a),s=f(s),e(u,d)):e(l,c),t}return t.base=function(e){return arguments.length?(h=+e,m()):h},t.domain=function(e){return arguments.length?(r(e),m()):r()},t.ticks=e=>{const t=r();let o=t[0],i=t[t.length-1];const l=i<o;l&&([o,i]=[i,o]);let c,u,d=a(o),p=a(i);const f=null==e?10:+e;let m=[];if(!(h%1)&&p-d<f){if(d=Math.floor(d),p=Math.ceil(p),o>0){for(;d<=p;++d)for(c=1;c<h;++c)if(u=d<0?c/s(-d):c*s(d),!(u<o)){if(u>i)break;m.push(u)}}else for(;d<=p;++d)for(c=h-1;c>=1;--c)if(u=d>0?c/s(-d):c*s(d),!(u<o)){if(u>i)break;m.push(u)}2*m.length<f&&(m=(0,n.Ay)(o,i,f))}else m=(0,n.Ay)(d,p,Math.min(p-d,f)).map(s);return l?m.reverse():m},t.tickFormat=(e,r)=>{if(null==e&&(e=10),null==r&&(r=10===h?"s":","),"function"!=typeof r&&(h%1||null!=(r=(0,o.A)(r)).precision||(r.trim=!0),r=(0,i.GP)(r)),e===1/0)return r;const n=Math.max(1,h*e/t.ticks().length);return e=>{let t=e/s(Math.round(a(e)));return t*h<h-.5&&(t*=h),t<=n?r(e):""}},t.nice=()=>r(function(e,t){var r,n=0,o=(e=e.slice()).length-1,i=e[n],a=e[o];return a<i&&(r=n,n=o,o=r,r=i,i=a,a=r),e[n]=t.floor(i),e[o]=t.ceil(a),e}(r(),{floor:e=>s(Math.floor(a(e))),ceil:e=>s(Math.ceil(a(e)))})),t}function m(){const e=h((0,a.Gu)()).domain([1,10]);return e.copy=()=>(0,a.C)(e,m()).base(e.base()),s.C.apply(e,arguments),e}},6754:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(88627),o=r(45824),i=r(6219);function a(){var e,t=0,r=1,s=1,l=[.5],c=[0,1];function u(t){return null!=t&&t<=t?c[(0,n.Ay)(l,t,0,s)]:e}function d(){var e=-1;for(l=new Array(s);++e<s;)l[e]=((e+1)*r-(e-s)*t)/(s+1);return u}return u.domain=function(e){return arguments.length?([t,r]=e,t=+t,r=+r,d()):[t,r]},u.range=function(e){return arguments.length?(s=(c=Array.from(e)).length-1,d()):c.slice()},u.invertExtent=function(e){var n=c.indexOf(e);return n<0?[NaN,NaN]:n<1?[t,l[0]]:n>=s?[l[s-1],r]:[l[n-1],l[n]]},u.unknown=function(t){return arguments.length?(e=t,u):u},u.thresholds=function(){return l.slice()},u.copy=function(){return a().domain([t,r]).range(c).unknown(e)},i.C.apply((0,o.C)(u),arguments)}},63672:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(6614),o=r(7552);const i=function(e){const t=e;return t.__esModule?t.default:e}(r(2051).A),a=o.forwardRef((function(e,t){var r,a;const s=o.useMemo((()=>{var t;const r=null===(t=e.slotProps)||void 0===t?void 0:t.paper;return r instanceof Function?e=>{const t=r(e);return{...t,style:{pointerEvents:"auto",...null==t?void 0:t.style}}}:{...r,style:{pointerEvents:"auto",...null==r?void 0:r.style}}}),[null===(r=e.slotProps)||void 0===r?void 0:r.paper]);return o.createElement(i,(0,n.A)({},e,{ref:t,style:{pointerEvents:"none",...e.style},PaperProps:{...e.PaperProps,style:{pointerEvents:"auto",...null===(a=e.PaperProps)||void 0===a?void 0:a.style}},slotProps:{...e.slotProps,paper:s}}))}))},45266:(e,t,r)=>{"use strict";r.d(t,{oe:()=>h,_k:()=>f,NA:()=>v,dB:()=>m,cO:()=>p,T6:()=>u});var n=r(7552),o=r.t(n,2);function i(e){if("undefined"==typeof window)return e;const t=n.useRef(null);return n.useLayoutEffect((()=>{t.current=e})),n.useCallback(((...e)=>{var r;null===(r=t.current)||void 0===r||r.call(t,...e)}),[])}const a={},s={isOpen:!1,setAnchorElUsed:!1,anchorEl:void 0,anchorPosition:void 0,hovered:!1,focused:!1,_openEventType:null,_childPopupState:null,_deferNextOpen:!1,_deferNextClose:!1},l=o,c="useId"in o?()=>l.useId():()=>{};function u({parentPopupState:e,popupId:t=c(),variant:r,disableAutoFocus:o}){const l=(0,n.useRef)(!0);(0,n.useEffect)((()=>(l.current=!0,()=>{l.current=!1})),[]);const[u,d]=(0,n.useState)(s),p=(0,n.useCallback)((e=>{l.current&&d(e)}),[]),f=(0,n.useCallback)((e=>p((t=>({...t,setAnchorElUsed:!0,anchorEl:e??void 0})))),[]),h=i((e=>(u.isOpen?y(e):m(e),u))),m=i((t=>{const n=t instanceof Element?void 0:t,o=t instanceof Element?t:(null==t?void 0:t.currentTarget)instanceof Element?t.currentTarget:void 0;if("touchstart"===(null==n?void 0:n.type))return void p((e=>({...e,_deferNextOpen:!0})));const i=null==n?void 0:n.clientX,s=null==n?void 0:n.clientY,l="number"==typeof i&&"number"==typeof s?{left:i,top:s}:void 0,c=i=>{if(t||i.setAnchorElUsed||"dialog"===r||(a["missingEventOrAnchorEl"]||(a.missingEventOrAnchorEl=!0,console.error("[material-ui-popup-state] WARNING","eventOrAnchorEl should be defined if setAnchorEl is not used"))),e){if(!e.isOpen)return i;setTimeout((()=>e._setChildPopupState(S)))}const s={...i,isOpen:!0,anchorPosition:l,hovered:"mouseover"===(null==n?void 0:n.type)||i.hovered,focused:"focus"===(null==n?void 0:n.type)||i.focused,_openEventType:null==n?void 0:n.type};return i.setAnchorElUsed||(null!=n&&n.currentTarget?s.anchorEl=null==n?void 0:n.currentTarget:o&&(s.anchorEl=o)),s};p((e=>e._deferNextOpen?(setTimeout((()=>p(c)),0),{...e,_deferNextOpen:!1}):c(e)))})),v=t=>{const{_childPopupState:r}=t;return setTimeout((()=>{null==r||r.close(),null==e||e._setChildPopupState(null)})),{...t,isOpen:!1,hovered:!1,focused:!1}},y=i((e=>{const t=e instanceof Element?void 0:e;"touchstart"!==(null==t?void 0:t.type)?p((e=>e._deferNextClose?(setTimeout((()=>p(v)),0),{...e,_deferNextClose:!1}):v(e))):p((e=>({...e,_deferNextClose:!0})))})),b=(0,n.useCallback)(((e,t)=>{e?m(t):y(t)}),[]),x=i((e=>{const{relatedTarget:t}=e;p((e=>!e.hovered||t instanceof Element&&g(t,S)?e:e.focused?{...e,hovered:!1}:v(e)))})),A=i((e=>{if(!e)return;const{relatedTarget:t}=e;p((e=>!e.focused||t instanceof Element&&g(t,S)?e:e.hovered?{...e,focused:!1}:v(e)))})),w=(0,n.useCallback)((e=>p((t=>({...t,_childPopupState:e})))),[]),S={...u,setAnchorEl:f,popupId:t??void 0,variant:r,open:m,close:y,toggle:h,setOpen:b,onBlur:A,onMouseLeave:x,disableAutoFocus:o??Boolean(u.hovered||u.focused),_setChildPopupState:w};return S}function d({isOpen:e,popupId:t,variant:r}){return{..."popover"===r?{"aria-haspopup":!0,"aria-controls":e?t:void 0}:"popper"===r?{"aria-describedby":e?t:void 0}:void 0}}function p(e){return{...d(e),onClick:e.open,onTouchStart:e.open}}function f(e){const{open:t,onMouseLeave:r}=e;return{...d(e),onTouchStart:t,onMouseOver:t,onMouseLeave:r}}function h(e){const{open:t,onBlur:r}=e;return{...d(e),onFocus:t,onBlur:r}}function m({isOpen:e,anchorEl:t,anchorPosition:r,close:n,popupId:o,onMouseLeave:i,disableAutoFocus:a,_openEventType:s}){return{id:o,anchorEl:t,anchorPosition:r,anchorReference:"contextmenu"===s?"anchorPosition":"anchorEl",open:e,onClose:n,onMouseLeave:i,...a&&{disableAutoFocus:!0,disableEnforceFocus:!0,disableRestoreFocus:!0}}}function v({isOpen:e,anchorEl:t,anchorPosition:r,close:n,popupId:o,onMouseLeave:i,disableAutoFocus:a,_openEventType:s}){return{id:o,anchorEl:t,anchorPosition:r,anchorReference:"contextmenu"===s?"anchorPosition":"anchorEl",open:e,onClose:n,onMouseLeave:i,...a&&{autoFocus:!1,disableAutoFocusItem:!0,disableAutoFocus:!0,disableEnforceFocus:!0,disableRestoreFocus:!0}}}function g(e,t){const{anchorEl:r,_childPopupState:n}=t;return y(r,e)||y(function(e,{popupId:t}){if(!t)return null;const r="function"==typeof e.getRootNode?e.getRootNode():document;return"function"==typeof r.getElementById?r.getElementById(t):null}(e,t),e)||null!=n&&g(e,n)}function y(e,t){if(!e)return!1;for(;t;){if(t===e)return!0;t=t.parentElement}return!1}},74805:(e,t,r)=>{"use strict";r.d(t,{AQ:()=>d,C6:()=>o,Ju:()=>s,N3:()=>u,YH:()=>a,fX:()=>c,sH:()=>i,xN:()=>p,zs:()=>l});var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)};function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function i(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{l(n.next(e))}catch(e){i(e)}}function s(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))}function a(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,n=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}}function s(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function l(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function c(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}function u(e){return this instanceof u?(this.v=e,this):new u(e)}function d(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(e,t||[]),i=[];return n=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",(function(e){return function(t){return Promise.resolve(t).then(e,c)}})),n[Symbol.asyncIterator]=function(){return this},n;function a(e,t){o[e]&&(n[e]=function(t){return new Promise((function(r,n){i.push([e,t,r,n])>1||s(e,t)}))},t&&(n[e]=t(n[e])))}function s(e,t){try{(r=o[e](t)).value instanceof u?Promise.resolve(r.value.v).then(l,c):d(i[0][2],r)}catch(e){d(i[0][3],e)}var r}function l(e){s("next",e)}function c(e){s("throw",e)}function d(e,t){e(t),i.shift(),i.length&&s(i[0][0],i[0][1])}}function p(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=s(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){!function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}(n,o,(t=e[r](t)).done,t.value)}))}}}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError}}]);
+//# sourceMappingURL=5255.af554ced.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5255.af554ced.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,58 @@
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */
+
+/*!
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */
+
+/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */
+
+/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
+
+/**
+ * @license React
+ * react-dom-server-legacy.browser.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-dom-server.browser.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * use-sync-external-store-shim.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5255.af554ced.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5255.af554ced.chunk.js","mappings":"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,EAAqB7U,EAAQhqC,KAG/CvwC,MAAMud,QAAQlkB,GAChB02F,EAAUx/C,GAAYu/C,EAAWz2F,GAEjCA,GACiB,iBAAVA,GACPA,EAAMzB,cAAgB0B,OAEtBy2F,EAAUx/C,GAAYm6C,EAAMrxF,GAE5B02F,EAAUx/C,GAAYl3C,GAK5B,OAAO02F,CACT,CASA,SAASC,EAAazV,EAAQh6D,GAC5B,KAAkB,OAAXg6D,GAAiB,CACtB,MAAM0V,EAAO/D,EAAyB3R,EAAQh6D,GAE9C,GAAI0vE,EAAM,CACR,GAAIA,EAAK5uF,IACP,OAAOstF,EAAQsB,EAAK5uF,KAGtB,GAA0B,mBAAf4uF,EAAK52F,MACd,OAAOs1F,EAAQsB,EAAK52F,MAExB,CAEAkhF,EAASsR,EAAetR,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC1LO,MAAM55B,EAAOqpC,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIWkG,EAAMlG,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWmG,EAAanG,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWoG,EAAgBpG,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWqG,EAASrG,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKWsG,EAAmBtG,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGWx0E,EAAOw0E,EAAO,CAAC,UCrRfrpC,EAAOqpC,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGWkG,EAAMlG,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWqG,EAASrG,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SA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","sources":["../../../node_modules/@gmod/http-range-fetcher/src/cacheSemantics.ts","../../../node_modules/@gmod/http-range-fetcher/src/aggregatingFetcher.ts","../../../node_modules/@gmod/http-range-fetcher/src/crossFetchBinaryRange.ts","../../../node_modules/@gmod/http-range-fetcher/src/httpRangeFetcher.ts","../../../node_modules/@gmod/vcf/src/vcfReserved.ts","../../../node_modules/@gmod/vcf/src/parse.ts","../../../node_modules/@gmod/vcf/src/index.ts","../../../node_modules/@mui/icons-material/esm/Add.js","../../../node_modules/@mui/icons-material/esm/ArrowBack.js","../../../node_modules/@mui/icons-material/esm/ArrowDropDown.js","../../../node_modules/@mui/icons-material/esm/ArrowForward.js","../../../node_modules/@mui/icons-material/esm/ArrowRight.js","../../../node_modules/@mui/icons-material/esm/Bookmark.js","../../../node_modules/@mui/icons-material/esm/Bookmarks.js","../../../node_modules/@mui/icons-material/esm/CalendarViewDay.js","../../../node_modules/@mui/icons-material/esm/CenterFocusStrong.js","../../../node_modules/@mui/icons-material/esm/CheckBox.js","../../../node_modules/@mui/icons-material/esm/CheckBoxOutlineBlank.js","../../../node_modules/@mui/icons-material/esm/ChevronRight.js","../../../node_modules/@mui/icons-material/esm/Clear.js","../../../node_modules/@mui/icons-material/esm/ClearAll.js","../../../node_modules/@mui/icons-material/esm/Close.js","../../../node_modules/@mui/icons-material/esm/ColorLens.js","../../../node_modules/@mui/icons-material/esm/CropFree.js","../../../node_modules/@mui/icons-material/esm/DataUsage.js","../../../node_modules/@mui/icons-material/esm/Done.js","../../../node_modules/@mui/icons-material/esm/DragIndicator.js","../../../node_modules/@mui/icons-material/esm/FolderOpen.js","../../../node_modules/@mui/icons-material/esm/Help.js","../../../node_modules/@mui/icons-material/esm/Highlight.js","../../../node_modules/@mui/icons-material/esm/Info.js","../../../node_modules/@mui/icons-material/esm/KeyboardArrowDown.js","../../../node_modules/@mui/icons-material/esm/KeyboardArrowUp.js","../../../node_modules/@mui/icons-material/esm/KeyboardDoubleArrowDown.js","../../../node_modules/@mui/icons-material/esm/KeyboardDoubleArrowUp.js","../../../node_modules/@mui/icons-material/esm/Label.js","../../../node_modules/@mui/icons-material/esm/LineStyle.js","../../../node_modules/@mui/icons-material/esm/Link.js","../../../node_modules/@mui/icons-material/esm/MenuOpen.js","../../../node_modules/@mui/icons-material/esm/Minimize.js","../../../node_modules/@mui/icons-material/esm/MoreVert.js","../../../node_modules/@mui/icons-material/esm/OpenInNew.js","../../../node_modules/@mui/icons-material/esm/Palette.js","../../../node_modules/@mui/icons-material/esm/PhotoCamera.js","../../../node_modules/@mui/icons-material/esm/RadioButtonChecked.js","../../../node_modules/@mui/icons-material/esm/RadioButtonUnchecked.js","../../../node_modules/@mui/icons-material/esm/Refresh.js","../../../node_modules/@mui/icons-material/esm/Report.js","../../../node_modules/@mui/icons-material/esm/Search.js","../../../node_modules/@mui/icons-material/esm/Sort.js","../../../node_modules/@mui/icons-material/esm/SyncAlt.js","../../../node_modules/@mui/icons-material/esm/TableChart.js","../../../node_modules/@mui/icons-material/esm/Timeline.js","../../../node_modules/@mui/icons-material/esm/ViewComfy.js","../../../node_modules/@mui/icons-material/esm/Visibility.js","../../../node_modules/@mui/icons-material/esm/Workspaces.js","../../../node_modules/@mui/icons-material/esm/ZoomIn.js","../../../node_modules/@mui/icons-material/esm/ZoomOut.js","../../../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../../../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../../../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../../../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../../../node_modules/@mui/material/Alert/Alert.js","../../../node_modules/@mui/material/Alert/alertClasses.js","../../../node_modules/@mui/material/Autocomplete/Autocomplete.js","../../../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../../../node_modules/@mui/material/Backdrop/Backdrop.js","../../../node_modules/@mui/material/Backdrop/backdropClasses.js","../../../node_modules/@mui/material/Box/Box.js","../../../node_modules/@mui/system/createBox/createBox.js","../../../node_modules/@mui/material/Box/boxClasses.js","../../../node_modules/@mui/material/Button/Button.js","../../../node_modules/@mui/material/Button/buttonClasses.js","../../../node_modules/@mui/material/useLazyRipple/useLazyRipple.js","../../../node_modules/react-transition-group/esm/utils/ChildMapping.js","../../../node_modules/react-transition-group/esm/TransitionGroup.js","../../../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../../../node_modules/@mui/material/ButtonBase/TouchRipple.js","../../../node_modules/@mui/material/ButtonBase/Ripple.js","../../../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../../../node_modules/@mui/material/ButtonBase/ButtonBase.js","../../../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../../../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../../../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../../../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../../../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../../../node_modules/@mui/material/Checkbox/Checkbox.js","../../../node_modules/@mui/material/Checkbox/checkboxClasses.js","../../../node_modules/@mui/material/internal/svg-icons/Cancel.js","../../../node_modules/@mui/material/Chip/Chip.js","../../../node_modules/@mui/material/Chip/chipClasses.js","../../../node_modules/@mui/material/Dialog/Dialog.js","../../../node_modules/@mui/material/Dialog/DialogContext.js","../../../node_modules/@mui/material/Dialog/dialogClasses.js","../../../node_modules/@mui/material/DialogActions/DialogActions.js","../../../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../../../node_modules/@mui/material/DialogContent/DialogContent.js","../../../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../../../node_modules/@mui/material/DialogContentText/DialogContentText.js","../../../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../../../node_modules/@mui/material/DialogTitle/DialogTitle.js","../../../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../../../node_modules/@mui/material/Divider/Divider.js","../../../node_modules/@mui/material/Divider/dividerClasses.js","../../../node_modules/@mui/material/Fade/Fade.js","../../../node_modules/@mui/material/FilledInput/FilledInput.js","../../../node_modules/@mui/material/FilledInput/filledInputClasses.js","../../../node_modules/@mui/material/FormControl/FormControl.js","../../../node_modules/@mui/material/FormControl/FormControlContext.js","../../../node_modules/@mui/material/FormControl/formControlClasses.js","../../../node_modules/@mui/material/FormControl/formControlState.js","../../../node_modules/@mui/material/FormControl/useFormControl.js","../../../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../../../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../../../node_modules/@mui/material/FormGroup/FormGroup.js","../../../node_modules/@mui/material/FormGroup/formGroupClasses.js","../../../node_modules/@mui/material/FormHelperText/FormHelperText.js","../../../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../../../node_modules/@mui/material/FormLabel/FormLabel.js","../../../node_modules/@mui/material/FormLabel/formLabelClasses.js","../../../node_modules/@mui/material/Grid/GridContext.js","../../../node_modules/@mui/material/Grid/Grid.js","../../../node_modules/@mui/material/Grid/gridClasses.js","../../../node_modules/@mui/material/Grow/Grow.js","../../../node_modules/@mui/material/IconButton/IconButton.js","../../../node_modules/@mui/material/IconButton/iconButtonClasses.js","../../../node_modules/@mui/material/Input/Input.js","../../../node_modules/@mui/material/Input/inputClasses.js","../../../node_modules/@mui/material/InputAdornment/InputAdornment.js","../../../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../../../node_modules/@mui/material/InputBase/InputBase.js","../../../node_modules/@mui/material/InputBase/inputBaseClasses.js","../../../node_modules/@mui/material/InputBase/utils.js","../../../node_modules/@mui/material/InputLabel/InputLabel.js","../../../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../../../node_modules/@mui/material/List/List.js","../../../node_modules/@mui/material/List/ListContext.js","../../../node_modules/@mui/material/List/listClasses.js","../../../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","../../../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../../../node_modules/@mui/material/ListItemText/ListItemText.js","../../../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../../../node_modules/@mui/material/ListSubheader/ListSubheader.js","../../../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../../../node_modules/@mui/material/Menu/Menu.js","../../../node_modules/@mui/material/Menu/menuClasses.js","../../../node_modules/@mui/material/MenuItem/MenuItem.js","../../../node_modules/@mui/material/MenuItem/menuItemClasses.js","../../../node_modules/@mui/material/utils/getScrollbarSize.js","../../../node_modules/@mui/material/MenuList/MenuList.js","../../../node_modules/@mui/material/Modal/useModal.js","../../../node_modules/@mui/material/Modal/Modal.js","../../../node_modules/@mui/material/Modal/ModalManager.js","../../../node_modules/@mui/material/Modal/modalClasses.js","../../../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../../../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../../../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../../../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../../../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../../../node_modules/@mui/material/Paper/Paper.js","../../../node_modules/@mui/material/Paper/paperClasses.js","../../../node_modules/@mui/material/Popover/Popover.js","../../../node_modules/@mui/material/Popover/popoverClasses.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@mui/material/Popper/BasePopper.js","../../../node_modules/@mui/material/Popper/Popper.js","../../../node_modules/@mui/material/Popper/popperClasses.js","../../../node_modules/@mui/material/Portal/Portal.js","../../../node_modules/@mui/material/ScopedCssBaseline/ScopedCssBaseline.js","../../../node_modules/@mui/material/ScopedCssBaseline/scopedCssBaselineClasses.js","../../../node_modules/@mui/material/Select/SelectInput.js","../../../node_modules/@mui/material/Select/Select.js","../../../node_modules/@mui/material/Select/selectClasses.js","../../../node_modules/@mui/material/Slider/useSlider.js","../../../node_modules/@mui/material/utils/areArraysEqual.js","../../../node_modules/@mui/material/Slider/Slider.js","../../../node_modules/@mui/material/Slider/SliderValueLabel.js","../../../node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js","../../../node_modules/@mui/material/Slider/sliderClasses.js","../../../node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/@mui/material/TextField/TextField.js","../../../node_modules/@mui/material/TextField/textFieldClasses.js","../../../node_modules/@mui/material/TextareaAutosize/TextareaAutosize.js","../../../node_modules/@mui/material/ToggleButtonGroup/isValueSelected.js","../../../node_modules/@mui/material/ToggleButton/ToggleButton.js","../../../node_modules/@mui/material/ToggleButton/toggleButtonClasses.js","../../../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroup.js","../../../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroupButtonContext.js","../../../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroupContext.js","../../../node_modules/@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js","../../../node_modules/@mui/material/Tooltip/Tooltip.js","../../../node_modules/@mui/material/Tooltip/tooltipClasses.js","../../../node_modules/@mui/material/Typography/Typography.js","../../../node_modules/@mui/material/Typography/typographyClasses.js","../../../node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","../../../node_modules/@mui/material/internal/switchBaseClasses.js","../../../node_modules/@mui/material/internal/SwitchBase.js","../../../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../../../node_modules/@mui/material/internal/svg-icons/Close.js","../../../node_modules/@mui/material/styles/ThemeProviderNoVars.js","../../../node_modules/@mui/material/styles/ThemeProvider.js","../../../node_modules/@mui/system/InitColorSchemeScript/InitColorSchemeScript.js","../../../node_modules/@mui/system/cssVars/useCurrentColorScheme.js","../../../node_modules/@mui/material/InitColorSchemeScript/InitColorSchemeScript.js","../../../node_modules/@mui/material/styles/ThemeProviderWithVars.js","../../../node_modules/@mui/system/cssVars/createCssVarsProvider.js","../../../node_modules/@mui/material/styles/cssUtils.js","../../../node_modules/@mui/material/styles/adaptV4Theme.js","../../../node_modules/@mui/material/styles/createMuiStrictModeTheme.js","../../../node_modules/@mui/material/styles/createStyles.js","../../../node_modules/@mui/material/styles/responsiveFontSizes.js","../../../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../../../node_modules/@mui/material/styles/makeStyles.js","../../../node_modules/@mui/material/styles/withStyles.js","../../../node_modules/@mui/material/styles/withTheme.js","../../../node_modules/@mui/material/styles/experimental_extendTheme.js","../../../node_modules/@mui/material/styles/index.js","../../../node_modules/@mui/material/styles/useTheme.js","../../../node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/@mui/material/transitions/utils.js","../../../node_modules/@mui/material/useAutocomplete/useAutocomplete.js","../../../node_modules/@mui/material/utils/createChainedFunction.js","../../../node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/@mui/material/utils/debounce.js","../../../node_modules/@mui/material/utils/deprecatedPropType.js","../../../node_modules/@mui/utils/esm/deprecatedPropType/deprecatedPropType.js","../../../node_modules/@mui/material/utils/requirePropFactory.js","../../../node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js","../../../node_modules/@mui/material/utils/setRef.js","../../../node_modules/@mui/material/utils/unsupportedProp.js","../../../node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js","../../../node_modules/@mui/material/utils/index.js","../../../node_modules/@mui/material/utils/isHostComponent.js","../../../node_modules/@mui/material/utils/isMuiElement.js","../../../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../../../node_modules/@mui/material/utils/ownerDocument.js","../../../node_modules/@mui/material/utils/ownerWindow.js","../../../node_modules/@mui/material/utils/useControlled.js","../../../node_modules/@mui/material/utils/useEnhancedEffect.js","../../../node_modules/@mui/material/utils/useEventCallback.js","../../../node_modules/@mui/material/utils/useForkRef.js","../../../node_modules/@mui/material/utils/useId.js","../../../node_modules/@mui/material/utils/useSlot.js","../../../node_modules/@mui/system/GlobalStyles/GlobalStyles.js","../../../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../../../node_modules/@mui/material/zero-styled/index.js","../../../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../../../node_modules/@mui/private-theming/useTheme/useTheme.js","../../../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../../../node_modules/@mui/system/RtlProvider/index.js","../../../node_modules/@mui/private-theming/ThemeProvider/nested.js","../../../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../../../node_modules/@mui/system/ThemeProvider/ThemeProvider.js","../../../node_modules/@mui/system/styleFunctionSx/extendSxProp.js","../../../node_modules/@mui/system/useTheme/useTheme.js","../../../node_modules/@mui/system/useThemeProps/useThemeProps.js","../../../node_modules/@mui/system/useThemeProps/getThemeProps.js","../../../node_modules/@mui/system/useThemeWithoutDefault/useThemeWithoutDefault.js","../../../node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../../../node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../../../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../../../node_modules/@mui/utils/esm/debounce/debounce.js","../../../node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../../../node_modules/@mui/utils/esm/getReactNodeRef/getReactNodeRef.js","../../../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","../../../node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js","../../../node_modules/@mui/utils/esm/isFocusVisible/isFocusVisible.js","../../../node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../../../node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../../../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../../../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../../../node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../../../node_modules/@mui/utils/esm/setRef/setRef.js","../../../node_modules/@mui/utils/esm/useControlled/useControlled.js","../../../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../../../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../../../node_modules/@mui/utils/esm/useId/useId.js","../../../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../../../node_modules/@mui/utils/esm/usePreviousProps/usePreviousProps.js","../../../node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../../../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../../../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../../../node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js","../../../node_modules/@mui/x-data-grid/components/GridApiContext.js","../../../node_modules/@mui/x-data-grid/context/GridRootPropsContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiRef.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridRootProps.js","../../../node_modules/base64-js/index.js","../../../node_modules/buffer/index.js","../../../node_modules/canvas-sequencer/dist/src/CanvasAtom.js","../../../node_modules/canvas-sequencer/dist/src/CanvasSequence.js","../../../node_modules/canvas-sequencer/dist/src/CanvasBlueprint.js","../../../node_modules/canvas-sequencer/dist/index.js","../../../node_modules/clone/clone.js","../../../node_modules/copy-to-clipboard/index.js","../../../node_modules/detect-node/browser.js","../../../node_modules/dompurify/src/utils.js","../../../node_modules/dompurify/src/tags.js","../../../node_modules/dompurify/src/attrs.js","../../../node_modules/dompurify/src/regexp.js","../../../node_modules/dompurify/src/purify.js","../../../node_modules/escape-html/index.js","../../../node_modules/fast-deep-equal/index.js","../../../node_modules/file-saver/src/FileSaver.js","../../../node_modules/generic-filehandle/src/blobFile.ts","../../../node_modules/ieee754/index.js","../../../node_modules/is-object/index.js","../../../node_modules/jexl/dist/Expression.js","../../../node_modules/jexl/dist/Jexl.js","../../../node_modules/jexl/dist/Lexer.js","../../../node_modules/jexl/dist/PromiseSync.js","../../../node_modules/jexl/dist/evaluator/Evaluator.js","../../../node_modules/jexl/dist/evaluator/handlers.js","../../../node_modules/jexl/dist/grammar.js","../../../node_modules/jexl/dist/parser/Parser.js","../../../node_modules/jexl/dist/parser/handlers.js","../../../node_modules/jexl/dist/parser/states.js","../../../node_modules/librpc-web-mod/esm/ee.js","../../../node_modules/librpc-web-mod/esm/utils.js","../../../node_modules/librpc-web-mod/esm/index.js","../../../node_modules/librpc-web-mod/esm/client.js","../../../node_modules/librpc-web-mod/esm/server.js","../../../node_modules/load-script/index.js","../../../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../../../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../../../node_modules/mobx-react-lite/src/ObserverComponent.ts","../../../node_modules/mobx-react-lite/src/useLocalObservable.ts","../../../node_modules/mobx-react-lite/src/useAsObservableSource.ts","../../../node_modules/mobx-react-lite/src/useLocalStore.ts","../../../node_modules/mobx-react-lite/src/index.ts","../../../node_modules/mobx-react-lite/src/staticRendering.ts","../../../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../../../node_modules/mobx-react-lite/src/useObserver.ts","../../../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../../../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../../../node_modules/mobx-react/src/utils/utils.ts","../../../node_modules/mobx-react/src/observerClass.ts","../../../node_modules/mobx-react/src/observer.tsx","../../../node_modules/mobx-react/src/Provider.tsx","../../../node_modules/mobx-react/src/inject.ts","../../../node_modules/mobx-react/src/disposeOnUnmount.ts","../../../node_modules/mobx-react/src/propTypes.ts","../../../node_modules/mobx-react/src/index.ts","../../../node_modules/quick-lru/index.js","../../../node_modules/rbush/rbush.min.js","../../../node_modules/react-d3-axis-mod/src/Axis.tsx","../../../node_modules/react-d3-axis-mod/src/axisPropsFromTickScale.ts","../../../node_modules/react-d3-axis-mod/src/index.ts","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/index.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/rxjs/src/internal/Observable.ts","../../../node_modules/rxjs/src/internal/util/pipe.ts","../../../node_modules/rxjs/src/internal/NotificationFactories.ts","../../../node_modules/rxjs/src/internal/Subscriber.ts","../../../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../../../node_modules/rxjs/src/internal/util/arrRemove.ts","../../../node_modules/rxjs/src/internal/Subscription.ts","../../../node_modules/rxjs/src/internal/config.ts","../../../node_modules/rxjs/src/internal/util/EmptyError.ts","../../../node_modules/rxjs/src/internal/firstValueFrom.ts","../../../node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts","../../../node_modules/rxjs/src/internal/observable/fromEvent.ts","../../../node_modules/rxjs/src/internal/observable/innerFrom.ts","../../../node_modules/rxjs/src/internal/observable/empty.ts","../../../node_modules/rxjs/src/internal/util/args.ts","../../../node_modules/rxjs/src/internal/operators/observeOn.ts","../../../node_modules/rxjs/src/internal/operators/subscribeOn.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts","../../../node_modules/rxjs/src/internal/observable/merge.ts","../../../node_modules/rxjs/src/internal/util/isScheduler.ts","../../../node_modules/rxjs/src/internal/operators/mergeAll.ts","../../../node_modules/rxjs/src/internal/observable/from.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../../../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../../../node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts","../../../node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts","../../../node_modules/rxjs/src/internal/operators/filter.ts","../../../node_modules/rxjs/src/internal/operators/map.ts","../../../node_modules/rxjs/src/internal/operators/mergeMap.ts","../../../node_modules/rxjs/src/internal/operators/mergeInternals.ts","../../../node_modules/rxjs/src/internal/operators/reduce.ts","../../../node_modules/rxjs/src/internal/operators/scanInternals.ts","../../../node_modules/rxjs/src/internal/operators/takeUntil.ts","../../../node_modules/rxjs/src/internal/operators/toArray.ts","../../../node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts","../../../node_modules/rxjs/src/internal/symbol/iterator.ts","../../../node_modules/rxjs/src/internal/symbol/observable.ts","../../../node_modules/rxjs/src/internal/util/createErrorClass.ts","../../../node_modules/rxjs/src/internal/util/errorContext.ts","../../../node_modules/rxjs/src/internal/util/executeSchedule.ts","../../../node_modules/rxjs/src/internal/util/identity.ts","../../../node_modules/rxjs/src/internal/util/isArrayLike.ts","../../../node_modules/rxjs/src/internal/util/isAsyncIterable.ts","../../../node_modules/rxjs/src/internal/util/isFunction.ts","../../../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../../../node_modules/rxjs/src/internal/util/isIterable.ts","../../../node_modules/rxjs/src/internal/util/isPromise.ts","../../../node_modules/rxjs/src/internal/util/isReadableStreamLike.ts","../../../node_modules/rxjs/src/internal/util/lift.ts","../../../node_modules/rxjs/src/internal/util/noop.ts","../../../node_modules/rxjs/src/internal/util/reportUnhandledError.ts","../../../node_modules/rxjs/src/internal/util/throwUnobservableError.ts","../../../node_modules/serialize-error/index.js","../../../node_modules/string-template/index.js","../../../node_modules/toggle-selection/index.js","../../../node_modules/tss-react/esm/tools/classnames.js","../../../node_modules/tss-react/esm/cssAndCx.js","../../../node_modules/tss-react/esm/types.js","../../../node_modules/tss-react/esm/tools/useGuaranteedMemo.js","../../../node_modules/tss-react/esm/tools/capitalize.js","../../../node_modules/tss-react/esm/withStyles.js","../../../node_modules/tss-react/esm/index.js","../../../node_modules/tss-react/esm/makeStyles.js","../../../node_modules/tss-react/esm/mergeClasses.js","../../../node_modules/tss-react/esm/mui/mui.js","../../../node_modules/tss-react/esm/mui/themeStyleOverridesPlugin.js","../../../node_modules/tss-react/esm/tools/assert.js","../../../node_modules/tss-react/esm/tools/getDependencyArrayRef.js","../../../node_modules/tss-react/esm/tools/objectKeys.js","../../../node_modules/tss-react/esm/tools/polyfills/Object.fromEntries.js","../../../node_modules/tss-react/esm/tools/typeGuard.js","../../../node_modules/tss-react/esm/tools/isSSR.js","../../../node_modules/tss-react/esm/tss.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/createClass.js","../../../node_modules/@babel/runtime/helpers/defineProperty.js","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../../../node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../../../node_modules/colord/index.mjs","../../../node_modules/colord/plugins/mix.mjs","../../../node_modules/colord/plugins/names.mjs","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/basis.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/basisClosed.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-scale/src/log.js","../../../node_modules/d3-scale/src/nice.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/material-ui-popup-state/src/HoverMenu.tsx","../../../node_modules/src/util/interopRequireDefault.ts","../../../node_modules/material-ui-popup-state/src/useEvent.ts","../../../node_modules/material-ui-popup-state/src/hooks.ts","../../../node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["//@ts-nocheck\nexport function parseCacheControl(field) {\n  if (typeof field !== 'string') {\n    return {}\n  }\n\n  const parsed = {}\n  const invalid = field\n    .toLowerCase()\n    .replace(\n      /(?:^|(?:\\s*,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,\n      (match, fieldName, three, four) => {\n        const value = three || four\n        parsed[fieldName] = value ? value.toLowerCase() : true\n        return ''\n      },\n    )\n\n  if (invalid) {\n    return {}\n  }\n\n  // parse any things that seem to be numbers\n  Object.keys(parsed).forEach(key => {\n    if (/^[\\d]+$/.test(parsed[key])) {\n      try {\n        const num = parseInt(parsed[key], 10)\n        if (!Number.isNaN(num)) {\n          parsed[key] = num\n        }\n      } catch (e) {\n        /* ignore */\n      }\n    }\n  })\n\n  return parsed\n}\n\nexport class CacheSemantics {\n  constructor({ minimumTTL }) {\n    this.minimumTTL = minimumTTL\n  }\n\n  calculateChunkExpirationDate(chunkResponse) {\n    const { headers = {}, requestDate, responseDate } = chunkResponse\n    let baselineDate = responseDate || requestDate\n    if (!baselineDate) {\n      if (!headers.date) {\n        return undefined\n      }\n      baselineDate = new Date(headers.date)\n    }\n\n    const basePlus = ttl => new Date(baselineDate.getTime() + ttl)\n\n    // results that are not really cacheable expire after the minimum time to live\n    if (/\\bno-cache\\b/.test(headers.pragma)) {\n      return basePlus(this.minimumTTL)\n    }\n\n    const cacheControl = parseCacheControl(headers['cache-control'])\n    if (\n      cacheControl['no-cache'] ||\n      cacheControl['no-store'] ||\n      cacheControl['must-revalidate']\n    ) {\n      return basePlus(this.minimumTTL)\n    }\n\n    if (cacheControl['max-age'] !== undefined) {\n      const ttl = cacheControl['max-age'] * 1000 // max-age is in seconds\n      return basePlus(Math.max(ttl, this.minimumTTL))\n    } else if (this._coerceToDate(headers.expires)) {\n      return this._coerceToDate(headers.expires)\n    } else if (this._coerceToDate(headers['last-modified'])) {\n      const lastModified = this._coerceToDate(headers['last-modified'])\n      const ttl = (baselineDate.getTime() - lastModified.getTime()) / 10\n      return basePlus(ttl)\n    }\n\n    // otherwise, we just cache forever\n    return undefined\n  }\n\n  _coerceToDate(thing) {\n    if (thing) {\n      if (thing instanceof Date) {\n        return thing\n      }\n      if (typeof thing === 'string' || typeof thing === 'number') {\n        return new Date(thing)\n      }\n    }\n    return undefined\n  }\n\n  /**\n   * check whether a cached chunk response is still valid and can be used\n   * @param {object} chunkResponse\n   * @returns {boolean}\n   */\n  cachedChunkIsValid(chunkResponse) {\n    const expiration = this.calculateChunkExpirationDate(chunkResponse)\n    return !expiration || new Date() <= expiration\n  }\n\n  /**\n   * check whether the response for this chunk fetch can be cached\n   * @param {object} chunkResponse\n   * @returns {boolean}\n   */\n  chunkIsCacheable() {\n    // right now, we are caching everything, we just give it a very short\n    // time to live if it's not supposed to be cached\n    return true\n  }\n}\n","//@ts-nocheck\n\n/**\n * takes fetch requests and aggregates them at a certain time frequency\n */\nexport default class AggregatingFetcher {\n  /**\n   *\n   * @param {object} params\n   * @param {number} [params.frequency] number of milliseconds to wait for requests to aggregate\n   */\n  constructor({\n    frequency = 100,\n    fetch,\n    maxExtraSize = 32000,\n    maxFetchSize = 1000000,\n  }: {\n    frequency: number\n    maxExtraSize: number\n    maxFetchSize: number\n  }) {\n    this.requestQueues = {} // url => array of requests\n    this.fetchCallback = fetch\n    this.frequency = frequency\n    this.maxExtraSize = maxExtraSize\n    this.maxFetchSize = maxFetchSize\n  }\n\n  _canAggregate(requestGroup, request) {\n    return (\n      // the fetches overlap, or come close\n      request.start <= requestGroup.end + this.maxExtraSize &&\n      // aggregating would not result in a fetch that is too big\n      request.end - request.start + requestGroup.end - requestGroup.start <\n        this.maxFetchSize\n    )\n  }\n\n  // returns a promise that only resolves\n  // when all of the signals in the given array\n  // have fired their abort signal\n  _allSignalsFired(signals) {\n    return new Promise(resolve => {\n      let signalsLeft = signals.filter(s => !s.aborted).length\n      signals.forEach(signal => {\n        signal.addEventListener('abort', () => {\n          signalsLeft -= 1\n          // console.log('aggregatingfetcher received an abort')\n          if (!signalsLeft) {\n            // console.log('aggregatingfetcher aborting aggegated request')\n            resolve()\n          }\n        })\n      })\n    }).catch(e => {\n      console.error(e)\n    })\n  }\n\n  // dispatch a request group as a single request\n  // and then slice the result back up to satisfy\n  // the individual requests\n  _dispatch({ url, start, end, requests }) {\n    // if any of the requests have an AbortSignal `signal` in their requestOptions,\n    // make our aggregating abortcontroller track it, aborting the request if\n    // all of the abort signals that are aggregated here have fired\n\n    const abortWholeRequest = new AbortController()\n    const signals = []\n    requests.forEach(({ requestOptions }) => {\n      if (requestOptions?.signal) {\n        signals.push(requestOptions.signal)\n      }\n    })\n    if (signals.length === requests.length) {\n      // may need review\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this._allSignalsFired(signals).then(() => abortWholeRequest.abort())\n    }\n\n    this.fetchCallback(url, start, end - 1, {\n      signal: abortWholeRequest.signal,\n    }).then(\n      response => {\n        const data = response.buffer\n\n        requests.forEach(({ start: reqStart, end: reqEnd, resolve }) => {\n          // remember Buffer.slice does not copy, it creates\n          // an offset child buffer pointing to the same data\n          resolve({\n            headers: response.headers,\n            buffer: data.slice(reqStart - start, reqEnd - start),\n          })\n        })\n      },\n      err => {\n        requests.forEach(({ reject }) => reject(err))\n      },\n    )\n  }\n\n  _aggregateAndDispatch() {\n    Object.entries(this.requestQueues).forEach(([url, requests]) => {\n      if (!requests?.length) {\n        return\n      }\n      // console.log(url, requests)\n\n      // we are now going to aggregate the requests in this url's queue\n      // into groups of requests that can be dispatched as one\n      const requestsToDispatch = []\n\n      // look to see if any of the requests are aborted, and if they are, just\n      // reject them now and forget about them\n      requests.forEach(request => {\n        const { requestOptions, reject } = request\n        if (requestOptions?.signal?.aborted) {\n          reject(Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' }))\n        } else {\n          requestsToDispatch.push(request)\n        }\n      })\n\n      requestsToDispatch.sort((a, b) => a.start - b.start)\n\n      requests.length = 0\n      if (!requestsToDispatch.length) {\n        return\n      }\n\n      let currentRequestGroup\n      for (const next of requestsToDispatch) {\n        if (\n          currentRequestGroup &&\n          this._canAggregate(currentRequestGroup, next)\n        ) {\n          // aggregate it into the current group\n          currentRequestGroup.requests.push(next)\n          currentRequestGroup.end = next.end\n        } else {\n          // out of range, dispatch the current request group\n          if (currentRequestGroup) {\n            this._dispatch(currentRequestGroup)\n          }\n          // and start on a new one\n          currentRequestGroup = {\n            requests: [next],\n            url,\n            start: next.start,\n            end: next.end,\n          }\n        }\n      }\n      if (currentRequestGroup) {\n        this._dispatch(currentRequestGroup)\n      }\n    })\n  }\n\n  _enQueue(url, request) {\n    if (!this.requestQueues[url]) {\n      this.requestQueues[url] = []\n    }\n    this.requestQueues[url].push(request)\n  }\n\n  /**\n   *\n   * @param {string} url\n   * @param {number} start 0-based half-open\n   * @param {number} end 0-based half-open\n   * @param {object} [requestOptions] options passed to the underlying fetch call\n   */\n  fetch(url, start, end, requestOptions = {}) {\n    return new Promise((resolve, reject) => {\n      this._enQueue(url, { start, end, resolve, reject, requestOptions })\n      if (!this.timeout) {\n        this.timeout = setTimeout(() => {\n          this.timeout = undefined\n          this._aggregateAndDispatch()\n        }, this.frequency || 1)\n      }\n    })\n  }\n}\n","//@ts-nocheck\nimport { Buffer } from 'buffer'\n\nexport default async function crossFetchBinaryRange(\n  url,\n  start,\n  end,\n  options = {},\n) {\n  const requestDate = new Date()\n  const fetchOptions = Object.assign(\n    {\n      method: 'GET',\n      headers: { range: `bytes=${start}-${end}` },\n    },\n    options,\n  )\n  const res = await fetch(url, fetchOptions)\n  const responseDate = new Date()\n  if (res.status !== 206 && res.status !== 200) {\n    throw new Error(\n      `HTTP ${res.status} when fetching ${url} bytes ${start}-${end}`,\n    )\n  }\n\n  if (res.status === 200) {\n    // TODO: check that the response satisfies the byte range,\n    // and is not too big (check maximum size),\n    // because we actually ended up getting served the whole file\n    throw new Error(\n      `HTTP ${res.status} when fetching ${url} bytes ${start}-${end}`,\n    )\n  }\n\n  const buffer = await res\n    .arrayBuffer()\n    .then(arrayBuffer => Buffer.from(arrayBuffer))\n\n  // return the response headers, and the data buffer\n  return {\n    headers: res.headers.map,\n    requestDate,\n    responseDate,\n    buffer,\n  }\n}\n","//@ts-nocheck\nimport { Buffer } from 'buffer'\nimport LRU from 'quick-lru'\n\nimport { CacheSemantics } from './cacheSemantics'\nimport AggregatingFetcher from './aggregatingFetcher'\n\nimport crossFetchBinaryRange from './crossFetchBinaryRange'\n\n/**\n * check if the given exception was caused by an operation being intentionally aborted\n * @param {Error} exception\n * @returns {boolean}\n */\nfunction isAbortException(exception) {\n  return (\n    // DOMException\n    exception.name === 'AbortError' ||\n    // standard-ish non-DOM abort exception\n    // @ts-ignore\n    exception.code === 'ERR_ABORTED' ||\n    // message contains aborted for bubbling through RPC\n    // things we have seen that we want to catch here\n    // Error: aborted\n    // AbortError: aborted\n    // AbortError: The user aborted a request.\n    !!exception.message.match(/\\b(aborted|AbortError)\\b/i)\n  )\n}\n\n// TODO: fire events when a remote file is detected as having been changed\n\n/**\n * smart cache that fetches chunks of remote files.\n * caches chunks in an LRU cache, and aggregates upstream fetches\n */\nexport default class HttpRangeFetcher {\n  /**\n   * @param {object} args the arguments object\n   * @param {number} [args.fetch] callback with signature `(key, start, end) => Promise({ headers, buffer })`\n   * @param {number} [args.size] size in bytes of cache to keep\n   * @param {number} [args.chunkSize] size in bytes of cached chunks\n   * @param {number} [args.aggregationTime] time in ms over which to pool requests before dispatching them\n   * @param {number} [args.minimumTTL] time in ms a non-cacheable response will be cached\n   * @param {number} [args.maxFetchSize] maximum size of an aggregated request\n   * @param {number} [args.maxExtraFetch] max number of additional bytes to fetch when aggregating requests\n   * that don't actually overlap\n   */\n  constructor({\n    fetch = crossFetchBinaryRange,\n    size = 10000000,\n    chunkSize = 32768,\n    aggregationTime = 100,\n    minimumTTL = 1000,\n    maxFetchSize = chunkSize * 4,\n    maxExtraFetch = chunkSize,\n  }) {\n    this.aggregator = new AggregatingFetcher({\n      fetch,\n      frequency: aggregationTime,\n      maxFetchSize,\n      maxExtraSize: maxExtraFetch,\n    })\n    this.chunkSize = chunkSize\n    this.chunkCache = new LRU({ maxSize: Math.floor(size / chunkSize) || 1 })\n    this.cacheSemantics = new CacheSemantics({ minimumTTL })\n    this.stats = new LRU({ maxSize: 20 })\n  }\n\n  /**\n   * Fetch a range of a remote resource.\n   * @param {string} key the resource's unique identifier, this would usually be a URL.\n   * This is passed along to the fetch callback.\n   * @param {number} [position] offset in the file at which to start fetching\n   * @param {number} [length] number of bytes to fetch, defaults to the remainder of the file\n   * @param {object} [options] request options\n   * @param {AbortSignal} [options.signal] AbortSignal object that can be used to abort the fetch\n   */\n  async getRange(key, position = 0, requestedLength, options = {}) {\n    let length = requestedLength\n    if (length === undefined) {\n      const stat = await this.stat(key)\n      if (stat.size === undefined) {\n        throw new Error(\n          `length not specified, and could not determine size of the remote file`,\n        )\n      }\n      length = stat.size - position\n    }\n\n    // calculate the list of chunks involved in this fetch\n    const firstChunk = Math.floor(position / this.chunkSize)\n    const lastChunk = Math.floor((position + length - 1) / this.chunkSize)\n\n    // fetch them all as necessary\n    const fetches = new Array(lastChunk - firstChunk + 1)\n    for (let chunk = firstChunk; chunk <= lastChunk; chunk += 1) {\n      fetches[chunk - firstChunk] = this._getChunk(key, chunk, options).then(\n        response =>\n          response && {\n            headers: response.headers,\n            buffer: response.buffer,\n            chunkNumber: chunk,\n          },\n      )\n    }\n\n    // return a \"composite buffer\" that lets the array of chunks be accessed like a flat buffer\n    let chunkResponses = await Promise.all(fetches)\n    chunkResponses = chunkResponses.filter(r => !!r) // filter out any undefined (out of range) responses\n    if (!chunkResponses.length) {\n      return { headers: {}, buffer: Buffer.allocUnsafe(0) }\n    }\n    const chunksOffset =\n      position - chunkResponses[0].chunkNumber * this.chunkSize\n    return {\n      headers: this._makeHeaders(\n        chunkResponses[0].headers,\n        position,\n        position + length - 1,\n      ),\n      buffer: this._makeBuffer(chunkResponses, chunksOffset, length),\n    }\n  }\n\n  _makeBuffer(chunkResponses, chunksOffset, length) {\n    if (chunkResponses.length === 1) {\n      return chunkResponses[0].buffer.slice(chunksOffset, chunksOffset + length)\n    } else if (chunkResponses.length === 0) {\n      return Buffer.allocUnsafe(0)\n    }\n    // 2 or more buffers\n    const buffers = chunkResponses.map(r => r.buffer)\n    const first = buffers.shift().slice(chunksOffset)\n    let last = buffers.pop()\n    let trimEnd =\n      first.length +\n      buffers.reduce((sum, buf) => sum + buf.length, 0) +\n      last.length -\n      length\n    if (trimEnd < 0) {\n      trimEnd = 0\n    }\n    last = last.slice(0, last.length - trimEnd)\n    return Buffer.concat([first, ...buffers, last])\n  }\n\n  /**\n   * Fetches the first few bytes of the remote file (if necessary) and uses\n   * the returned headers to populate a `fs`-like stat object.\n   *\n   * Currently, this attempts to set `size`, `mtime`, and `mtimeMs`, if\n   * the information is available from HTTP headers.\n   *\n   * @param {string} key\n   * @returns {Promise} for a stats object\n   */\n  async stat(key) {\n    let stat = this.stats.get(key)\n    if (!stat) {\n      const chunk = await this._getChunk(key, 0)\n      this._recordStatsIfNecessary(key, chunk)\n      stat = this.stats.get(key)\n      if (!stat) {\n        throw new Error(`failed to retrieve file size for ${key}`)\n      }\n    }\n    return stat\n  }\n\n  _headersToStats(chunkResponse) {\n    const { headers } = chunkResponse\n    const stat = {}\n    if (headers['content-range']) {\n      const match = headers['content-range'].match(/\\d+-\\d+\\/(\\d+)/)\n      if (match) {\n        stat.size = parseInt(match[1], 10)\n        if (Number.isNaN(stat.size)) {\n          delete stat.size\n        }\n      }\n    }\n    if (headers['last-modified']) {\n      stat.mtime = new Date(headers['last-modified'])\n      if (stat.mtime.toString() === 'Invalid Date') {\n        delete stat.mtime\n      }\n      if (stat.mtime) {\n        stat.mtimeMs = stat.mtime.getTime()\n      }\n    }\n    return stat\n  }\n\n  _makeHeaders(originalHeaders, newStart, newEnd) {\n    const newHeaders = Object.assign({}, originalHeaders || {})\n    newHeaders['content-length'] = newEnd - newStart\n    const oldContentRange = newHeaders['content-range'] || ''\n    const match = oldContentRange.match(/\\d+-\\d+\\/(\\d+)/)\n    if (match) {\n      newHeaders['content-range'] = `${newStart}-${newEnd - 1}/${match[1]}`\n\n      newHeaders['x-resource-length'] = match[1]\n    }\n    return newHeaders\n  }\n\n  async _getChunk(key, chunkNumber, requestOptions) {\n    const chunkKey = `${key}/${chunkNumber}`\n    const cachedPromise = this.chunkCache.get(chunkKey)\n\n    if (cachedPromise) {\n      let chunk\n      let chunkAborted\n      try {\n        chunk = await cachedPromise\n      } catch (err) {\n        if (isAbortException(err)) {\n          // fetch was aborted\n          chunkAborted = true\n        } else {\n          throw err\n        }\n      }\n      // when the cached chunk is resolved, validate it before returning it.\n      // if invalid or aborted, delete it from the cache and redispatch the request\n      if (chunkAborted || !this.cacheSemantics.cachedChunkIsValid(chunk)) {\n        this._uncacheIfSame(chunkKey, cachedPromise)\n        return this._getChunk(key, chunkNumber, requestOptions)\n      }\n\n      // gather the stats for the file from the headers\n      this._recordStatsIfNecessary(key, chunk)\n      return chunk\n    }\n\n    const fetchStart = chunkNumber * this.chunkSize\n    let fetchEnd = fetchStart + this.chunkSize\n\n    // clamp the end of the fetch to the size if we have a cached size for the file\n    const stat = this.stats.get(key)\n    if (stat?.size) {\n      if (fetchStart >= stat.size) {\n        return undefined\n      }\n      if (fetchEnd >= stat.size) {\n        fetchEnd = stat.size\n      }\n    }\n\n    let alreadyRejected = false\n    const freshPromise = this.aggregator\n      .fetch(key, fetchStart, fetchEnd, requestOptions)\n      .catch(err => {\n        // if the request fails, remove its promise\n        // from the cache and keep the error\n        alreadyRejected = true\n        this._uncacheIfSame(chunkKey, freshPromise)\n        throw err\n      })\n\n    if (!alreadyRejected) {\n      this.chunkCache.set(chunkKey, freshPromise)\n    }\n\n    const freshChunk = await freshPromise\n\n    // gather the stats for the file from the headers\n    this._recordStatsIfNecessary(key, freshChunk)\n\n    // remove the promise from the cache\n    // if it turns out not to be cacheable. this is\n    // done after the fact because we want multiple requests\n    // for the same chunk to reuse the same cached promise\n    if (!this.cacheSemantics.chunkIsCacheable(freshChunk)) {\n      this._uncacheIfSame(chunkKey, freshPromise)\n    }\n\n    return freshChunk\n  }\n\n  // if the stats for a resource haven't been recorded yet, record them\n  _recordStatsIfNecessary(key, chunk) {\n    if (!this.stats.has(key)) {\n      this.stats.set(key, this._headersToStats(chunk))\n    }\n  }\n\n  // delete a promise from the cache if it is still in there.\n  // need to check if it is still the same because it might\n  // have been overwritten sometime while the promise was in flight\n  _uncacheIfSame(key, cachedPromise) {\n    if (this.chunkCache.get(key) === cachedPromise) {\n      this.chunkCache.delete(key)\n    }\n  }\n\n  /**\n   * Throw away all cached data, resetting the cache.\n   */\n  reset() {\n    this.stats.clear()\n    this.chunkCache.clear()\n  }\n}\n","export default {\n  // INFO fields\n  InfoFields: {\n    // from the VCF4.3 spec, https://samtools.github.io/hts-specs/VCFv4.3.pdf\n    AA: { Number: 1, Type: 'String', Description: 'Ancestral allele' },\n    AC: {\n      Number: 'A',\n      Type: 'Integer',\n      Description:\n        'Allele count in genotypes, for each ALT allele, in the same order as listed',\n    },\n    AD: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Total read depth for each allele',\n    },\n    ADF: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Read depth for each allele on the forward strand',\n    },\n    ADR: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Read depth for each allele on the reverse strand',\n    },\n    AF: {\n      Number: 'A',\n      Type: 'Float',\n      Description:\n        'Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)',\n    },\n    AN: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Total number of alleles in called genotypes',\n    },\n    BQ: {\n      Number: 1,\n      Type: 'Float',\n      Description: 'RMS base quality',\n    },\n    CIGAR: {\n      Number: 1,\n      Type: 'Float',\n      Description:\n        'Cigar string describing how to align an alternate allele to the reference allele',\n    },\n    DB: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'dbSNP membership',\n    },\n    DP: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'combined depth across samples',\n    },\n    END: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'End position (for use with symbolic alleles)',\n    },\n    H2: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'HapMap2 membership',\n    },\n    H3: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'HapMap3 membership',\n    },\n    MQ: {\n      Number: 1,\n      Type: null,\n      Description: 'RMS mapping quality',\n    },\n    MQ0: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Number of MAPQ == 0 reads',\n    },\n    NS: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Number of samples with data',\n    },\n    SB: {\n      Number: 4,\n      Type: 'Integer',\n      Description: 'Strand bias',\n    },\n    SOMATIC: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'Somatic mutation (for cancer genomics)',\n    },\n    VALIDATED: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'Validated by follow-up experiment',\n    },\n    '1000G': {\n      Number: 0,\n      Type: 'Flag',\n      Description: '1000 Genomes membership',\n    },\n    // specifically for structural variants\n    IMPRECISE: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'Imprecise structural variation',\n    },\n    NOVEL: {\n      Number: 0,\n      Type: 'Flag',\n      Description: 'Indicates a novel structural variation',\n    },\n    // For precise variants, END is POS + length of REF allele - 1,\n    // and the for imprecise variants the corresponding best estimate.\n    SVTYPE: {\n      Number: 1,\n      Type: 'String',\n      Description: 'Type of structural variant',\n    },\n    // Value should be one of DEL, INS, DUP, INV, CNV, BND. This key can\n    // be derived from the REF/ALT fields but is useful for filtering.\n    SVLEN: {\n      Number: null,\n      Type: 'Integer',\n      Description: 'Difference in length between REF and ALT alleles',\n    },\n    // One value for each ALT allele. Longer ALT alleles (e.g. insertions)\n    // have positive values, shorter ALT alleles (e.g. deletions)\n    // have negative values.\n    CIPOS: {\n      Number: 2,\n      Type: 'Integer',\n      Description: 'Confidence interval around POS for imprecise variants',\n    },\n    CIEND: {\n      Number: 2,\n      Type: 'Integer',\n      Description: 'Confidence interval around END for imprecise variants',\n    },\n    HOMLEN: {\n      Type: 'Integer',\n      Description:\n        'Length of base pair identical micro-homology at event breakpoints',\n    },\n    HOMSEQ: {\n      Type: 'String',\n      Description:\n        'Sequence of base pair identical micro-homology at event breakpoints',\n    },\n    BKPTID: {\n      Type: 'String',\n      Description: 'ID of the assembled alternate allele in the assembly file',\n    },\n    // For precise variants, the consensus sequence the alternate allele assembly\n    // is derivable from the REF and ALT fields. However, the alternate allele\n    // assembly file may contain additional information about the characteristics\n    // of the alt allele contigs.\n    MEINFO: {\n      Number: 4,\n      Type: 'String',\n      Description: 'Mobile element info of the form NAME,START,END,POLARITY',\n    },\n    METRANS: {\n      Number: 4,\n      Type: 'String',\n      Description:\n        'Mobile element transduction info of the form CHR,START,END,POLARITY',\n    },\n    DGVID: {\n      Number: 1,\n      Type: 'String',\n      Description: 'ID of this element in Database of Genomic Variation',\n    },\n    DBVARID: {\n      Number: 1,\n      Type: 'String',\n      Description: 'ID of this element in DBVAR',\n    },\n    DBRIPID: {\n      Number: 1,\n      Type: 'String',\n      Description: 'ID of this element in DBRIP',\n    },\n    MATEID: {\n      Number: null,\n      Type: 'String',\n      Description: 'ID of mate breakends',\n    },\n    PARID: {\n      Number: 1,\n      Type: 'String',\n      Description: 'ID of partner breakend',\n    },\n    EVENT: {\n      Number: 1,\n      Type: 'String',\n      Description: 'ID of event associated to breakend',\n    },\n    CILEN: {\n      Number: 2,\n      Type: 'Integer',\n      Description:\n        'Confidence interval around the inserted material between breakend',\n    },\n    DPADJ: { Type: 'Integer', Description: 'Read Depth of adjacency' },\n    CN: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Copy number of segment containing breakend',\n    },\n    CNADJ: {\n      Number: null,\n      Type: 'Integer',\n      Description: 'Copy number of adjacency',\n    },\n    CICN: {\n      Number: 2,\n      Type: 'Integer',\n      Description: 'Confidence interval around copy number for the segment',\n    },\n    CICNADJ: {\n      Number: null,\n      Type: 'Integer',\n      Description: 'Confidence interval around copy number for the adjacency',\n    },\n  },\n\n  // FORMAT fields\n  GenotypeFields: {\n    // from the VCF4.3 spec, https://samtools.github.io/hts-specs/VCFv4.3.pdf\n    AD: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Read depth for each allele',\n    },\n    ADF: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Read depth for each allele on the forward strand',\n    },\n    ADR: {\n      Number: 'R',\n      Type: 'Integer',\n      Description: 'Read depth for each allele on the reverse strand',\n    },\n    DP: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Read depth',\n    },\n    EC: {\n      Number: 'A',\n      Type: 'Integer',\n      Description: 'Expected alternate allele counts',\n    },\n    FT: {\n      Number: 1,\n      Type: 'String',\n      Description: 'Filter indicating if this genotype was \"called\"',\n    },\n    GL: {\n      Number: 'G',\n      Type: 'Float',\n      Description: 'Genotype likelihoods',\n    },\n    GP: {\n      Number: 'G',\n      Type: 'Float',\n      Description: 'Genotype posterior probabilities',\n    },\n    GQ: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Conditional genotype quality',\n    },\n    GT: {\n      Number: 1,\n      Type: 'String',\n      Description: 'Genotype',\n    },\n    HQ: {\n      Number: 2,\n      Type: 'Integer',\n      Description: 'Haplotype quality',\n    },\n    MQ: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'RMS mapping quality',\n    },\n    PL: {\n      Number: 'G',\n      Type: 'Integer',\n      Description:\n        'Phred-scaled genotype likelihoods rounded to the closest integer',\n    },\n    PQ: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Phasing quality',\n    },\n    PS: {\n      Number: 1,\n      Type: 'Integer',\n      Description: 'Phase set',\n    },\n  },\n\n  // ALT fields\n  AltTypes: {\n    DEL: {\n      Description: 'Deletion relative to the reference',\n    },\n    INS: {\n      Description: 'Insertion of novel sequence relative to the reference',\n    },\n    DUP: {\n      Description: 'Region of elevated copy number relative to the reference',\n    },\n    INV: {\n      Description: 'Inversion of reference sequence',\n    },\n    CNV: {\n      Description:\n        'Copy number variable region (may be both deletion and duplication)',\n    },\n    'DUP:TANDEM': {\n      Description: 'Tandem duplication',\n    },\n    'DEL:ME': {\n      Description: 'Deletion of mobile element relative to the reference',\n    },\n    'INS:ME': {\n      Description: 'Insertion of a mobile element relative to the reference',\n    },\n    NON_REF: {\n      Description:\n        'Represents any possible alternative allele at this location',\n    },\n    '*': {\n      Description:\n        'Represents any possible alternative allele at this location',\n    },\n  },\n\n  // FILTER fields\n  FilterTypes: {\n    PASS: {\n      Description: 'Passed all filters',\n    },\n  },\n}\n","import vcfReserved from './vcfReserved'\n\nfunction Variant(stuff: any) {\n  //@ts-ignore\n  Object.assign(this, stuff)\n}\n\nfunction decodeURIComponentNoThrow(uri: string) {\n  try {\n    return decodeURIComponent(uri)\n  } catch (e) {\n    // avoid throwing exception on a failure to decode URI component\n    return uri\n  }\n}\n\n/**\n * Class representing a VCF parser, instantiated with the VCF header.\n * @param {object} args\n * @param {string} args.header - The VCF header. Supports both LF and CRLF\n * newlines.\n * @param {boolean} args.strict - Whether to parse in strict mode or not (default true)\n */\nexport default class VCF {\n  private metadata: Record<string, any>\n  public strict: boolean\n  public samples: string[]\n\n  constructor({\n    header = '',\n    strict = true,\n  }: {\n    header: string\n    strict?: boolean\n  }) {\n    if (!header || !header.length) {\n      throw new Error('empty header received')\n    }\n    const headerLines = header.split(/[\\r\\n]+/).filter(line => line)\n    if (!headerLines.length) {\n      throw new Error('no non-empty header lines specified')\n    }\n\n    this.strict = strict\n    this.metadata = JSON.parse(\n      JSON.stringify({\n        INFO: vcfReserved.InfoFields,\n        FORMAT: vcfReserved.GenotypeFields,\n        ALT: vcfReserved.AltTypes,\n        FILTER: vcfReserved.FilterTypes,\n      }),\n    )\n\n    let lastLine: string | undefined\n    headerLines.forEach(line => {\n      if (!line.startsWith('#')) {\n        throw new Error(`Bad line in header:\\n${line}`)\n      } else if (line.startsWith('##')) {\n        this._parseMetadata(line)\n      } else {\n        lastLine = line\n      }\n    })\n\n    if (!lastLine) {\n      throw new Error('No format line found in header')\n    }\n    const fields = lastLine.trim().split('\\t')\n    const thisHeader = fields.slice(0, 8)\n    const correctHeader = [\n      '#CHROM',\n      'POS',\n      'ID',\n      'REF',\n      'ALT',\n      'QUAL',\n      'FILTER',\n      'INFO',\n    ]\n    if (fields.length < 8) {\n      throw new Error(`VCF header missing columns:\\n${lastLine}`)\n    } else if (\n      thisHeader.length !== correctHeader.length ||\n      !thisHeader.every((value, index) => value === correctHeader[index])\n    ) {\n      throw new Error(`VCF column headers not correct:\\n${lastLine}`)\n    }\n    this.samples = fields.slice(9)\n  }\n\n  _parseGenotypes(format: string | undefined, prerest: string) {\n    const rest = prerest.split('\\t')\n    const genotypes = {} as any\n    const formatKeys = format?.split(':')\n    if (formatKeys) {\n      this.samples.forEach((sample, index) => {\n        genotypes[sample] = {}\n        formatKeys.forEach(key => {\n          genotypes[sample][key] = null\n        })\n        rest[index]\n          .split(':')\n          .filter(f => f)\n          .forEach((val, index) => {\n            let thisValue: unknown\n            if (val === '' || val === '.' || val === undefined) {\n              thisValue = null\n            } else {\n              const entries = val\n                .split(',')\n                .map(ent => (ent === '.' ? null : ent))\n\n              const valueType = this.getMetadata(\n                'FORMAT',\n                formatKeys[index],\n                'Type',\n              )\n              if (valueType === 'Integer' || valueType === 'Float') {\n                thisValue = entries.map(val => (val ? +val : val))\n              } else {\n                thisValue = entries\n              }\n            }\n\n            genotypes[sample][formatKeys[index]] = thisValue\n          }, {})\n      })\n    }\n    return genotypes\n  }\n\n  /**\n   * Parse a VCF metadata line (i.e. a line that starts with \"##\") and add its\n   * properties to the object.\n   * @param {string} line - A line from the VCF. Supports both LF and CRLF\n   * newlines.\n   */\n  _parseMetadata(line: string) {\n    const match = line.trim().match(/^##(.+?)=(.*)/)\n    if (!match) {\n      throw new Error(`Line is not a valid metadata line: ${line}`)\n    }\n    const [metaKey, metaVal] = match.slice(1, 3)\n\n    if (metaVal.startsWith('<')) {\n      if (!(metaKey in this.metadata)) {\n        this.metadata[metaKey] = {}\n      }\n      const [id, keyVals] = this._parseStructuredMetaVal(metaVal)\n      this.metadata[metaKey][id] = keyVals\n    } else {\n      this.metadata[metaKey] = metaVal\n    }\n  }\n\n  /**\n   * Parse a VCF header structured meta string (i.e. a meta value that starts\n   * with \"<ID=...\")\n   * @param {string} metaVal - The VCF metadata value\n   *\n   * @returns {Array} - Array with two entries, 1) a string of the metadata ID\n   * and 2) an object with the other key-value pairs in the metadata\n   */\n  _parseStructuredMetaVal(metaVal: string) {\n    const keyVals = this._parseKeyValue(metaVal.replace(/^<|>$/g, ''), ',')\n    const id = keyVals.ID\n    delete keyVals.ID\n    if ('Number' in keyVals) {\n      if (!Number.isNaN(Number(keyVals.Number))) {\n        keyVals.Number = Number(keyVals.Number)\n      }\n    }\n    return [id, keyVals]\n  }\n\n  /**\n   * Get metadata filtered by the elements in args. For example, can pass\n   * ('INFO', 'DP') to only get info on an metadata tag that was like\n   * \"##INFO=<ID=DP,...>\"\n   * @param  {...string} args - List of metadata filter strings.\n   *\n   * @returns {any} An object, string, or number, depending on the filtering\n   */\n  getMetadata(...args: string[]) {\n    let filteredMetadata: any = this.metadata\n    for (let i = 0; i < args.length; i += 1) {\n      filteredMetadata = filteredMetadata[args[i]]\n      if (!filteredMetadata) {\n        return filteredMetadata\n      }\n    }\n    return filteredMetadata\n  }\n\n  /**\n   * Sometimes VCFs have key-value strings that allow the separator within\n   * the value if it's in quotes, like:\n   * 'ID=DB,Number=0,Type=Flag,Description=\"dbSNP membership, build 129\"'\n   *\n   * Parse this at a low level since we can't just split at \",\" (or whatever\n   * separator). Above line would be parsed to:\n   * {ID: 'DB', Number: '0', Type: 'Flag', Description: 'dbSNP membership, build 129'}\n   * @param {string} str - Key-value pairs in a string\n   * @param {string} [pairSeparator] - A string that separates sets of key-value\n   * pairs\n   *\n   * @returns {object} An object containing the key-value pairs\n   */\n  _parseKeyValue(str: string, pairSeparator = ';') {\n    const data: any = {}\n    let currKey = ''\n    let currValue = ''\n    let state = 1 // states: 1: read key to = or pair sep, 2: read value to sep or quote, 3: read value to quote\n    for (let i = 0; i < str.length; i += 1) {\n      if (state === 1) {\n        // read key to = or pair sep\n        if (str[i] === '=') {\n          state = 2\n        } else if (str[i] !== pairSeparator) {\n          currKey += str[i]\n        } else if (currValue === '') {\n          data[currKey] = null\n          currKey = ''\n        }\n      } else if (state === 2) {\n        // read value to pair sep or quote\n        if (str[i] === pairSeparator) {\n          data[currKey] = currValue\n          currKey = ''\n          currValue = ''\n          state = 1\n        } else if (str[i] === '\"') {\n          state = 3\n        } else {\n          currValue += str[i]\n        }\n      } else if (state === 3) {\n        // read value to quote\n        if (str[i] !== '\"') {\n          currValue += str[i]\n        } else {\n          state = 2\n        }\n      }\n    }\n    if (state === 2 || state === 3) {\n      data[currKey] = currValue\n    } else if (state === 1) {\n      data[currKey] = null\n    }\n    return data\n  }\n\n  /**\n   * Parse a VCF line into an object like { CHROM POS ID REF ALT QUAL FILTER\n   * INFO } with SAMPLES optionally included if present in the VCF\n   * @param {string} line - A string of a line from a VCF. Supports both LF and\n   * CRLF newlines.\n   */\n  parseLine(line: string) {\n    // eslint-disable-next-line no-param-reassign\n    line = line.trim()\n    if (!line.length) {\n      return undefined\n    }\n\n    //@ts-ignore\n    const parser = this // so we can include this in lazy-property closure\n\n    let currChar = 0\n    for (let currField = 0; currChar < line.length; currChar += 1) {\n      if (line[currChar] === '\\t') {\n        currField += 1\n      }\n      if (currField === 9) {\n        // reached genotypes, rest of fields are evaluated lazily\n        break\n      }\n    }\n    const fields = line.substr(0, currChar).split('\\t')\n    const rest = line.substr(currChar + 1)\n    const [CHROM, POS, ID, REF, ALT, QUAL, FILTER] = fields\n    const chrom = CHROM\n    const pos = +POS\n    const id = ID === '.' ? null : ID.split(';')\n    const ref = REF\n    const alt = ALT === '.' ? null : ALT.split(',')\n    const qual = QUAL === '.' ? null : +QUAL\n    const filter = FILTER === '.' ? null : FILTER.split(';')\n\n    if (this.strict && fields[7] === undefined) {\n      throw new Error(\n        \"no INFO field specified, must contain at least a '.' (turn off strict mode to allow)\",\n      )\n    }\n    const info: any =\n      fields[7] === undefined || fields[7] === '.'\n        ? {}\n        : this._parseKeyValue(fields[7])\n\n    Object.keys(info).forEach(key => {\n      let items\n      if (info[key]) {\n        items = (info[key] as string)\n          .split(',')\n          .map(val => (val === '.' ? null : val))\n          .map(f => (f ? decodeURIComponentNoThrow(f) : f))\n      } else {\n        // it will be falsy so just assign whatever is there\n        items = info[key]\n      }\n      const itemType = this.getMetadata('INFO', key, 'Type')\n      if (itemType) {\n        if (itemType === 'Integer' || itemType === 'Float') {\n          items = items.map((val: string) => {\n            if (val === null) {\n              return null\n            }\n            return Number(val)\n          })\n        } else if (itemType === 'Flag') {\n          if (info[key]) {\n            // eslint-disable-next-line no-console\n            console.warn(\n              `Info field ${key} is a Flag and should not have a value (got value ${info[key]})`,\n            )\n          } else {\n            items = true\n          }\n        }\n      }\n      info[key] = items\n    })\n\n    //@ts-ignore\n    const variant = new Variant({\n      CHROM: chrom,\n      POS: pos,\n      ALT: alt,\n      INFO: info,\n      REF: ref,\n      FILTER:\n        filter && filter.length === 1 && filter[0] === 'PASS' ? 'PASS' : filter,\n      ID: id,\n      QUAL: qual,\n    })\n\n    Object.defineProperty(variant, 'SAMPLES', {\n      get() {\n        const samples = parser._parseGenotypes(fields[8], rest)\n\n        Object.defineProperty(this, 'SAMPLES', {\n          value: samples,\n          configurable: false,\n        })\n\n        return samples\n      },\n      configurable: true,\n    })\n\n    //@ts-ignore\n    return variant\n  }\n}\n","import VCF from './parse'\n\nexport interface Breakend {\n  Join: string\n  Replacement: string\n  MatePosition?: string\n  MateDirection?: string\n  SingleBreakend?: boolean\n}\n\nexport function parseBreakend(breakendString: string): Breakend | undefined {\n  const tokens = breakendString.split(/[[\\]]/)\n  if (tokens.length > 1) {\n    const MateDirection = breakendString.includes('[') ? 'right' : 'left'\n    let Join\n    let Replacement\n    let MatePosition\n    for (let i = 0; i < tokens.length; i += 1) {\n      const tok = tokens[i]\n      if (tok) {\n        if (tok.includes(':')) {\n          // this is the remote location\n          MatePosition = tok\n          Join = Replacement ? 'right' : 'left'\n        } else {\n          // this is the local alteration\n          Replacement = tok\n        }\n      }\n    }\n    if (!(MatePosition && Join && Replacement)) {\n      throw new Error(`Invalid breakend: ${breakendString}`)\n    }\n    return { MatePosition, Join, Replacement, MateDirection }\n  } else {\n    if (breakendString.startsWith('.')) {\n      return {\n        Join: 'left',\n        SingleBreakend: true,\n        Replacement: breakendString.slice(1),\n      }\n    } else if (breakendString.endsWith('.')) {\n      return {\n        Join: 'right',\n        SingleBreakend: true,\n        Replacement: breakendString.slice(0, breakendString.length - 1),\n      }\n    } else if (breakendString[0] === '<') {\n      const res = breakendString.match('<(.*)>(.*)')\n      if (!res) {\n        throw new Error(`failed to parse ${breakendString}`)\n      }\n      const Replacement = res?.[2]\n      return Replacement\n        ? {\n            Join: 'left',\n            Replacement,\n            MateDirection: 'right',\n            MatePosition: `<${res?.[1]}>:1`,\n          }\n        : undefined\n    } else if (breakendString.includes('<')) {\n      const res = breakendString.match('(.*)<(.*)>')\n      if (!res) {\n        throw new Error(`failed to parse ${breakendString}`)\n      }\n      const Replacement = res?.[1]\n      return Replacement\n        ? {\n            Join: 'right',\n            Replacement,\n            MateDirection: 'right',\n            MatePosition: `<${res?.[2]}>:1`,\n          }\n        : undefined\n    }\n  }\n  return undefined\n}\n\nexport default VCF\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"\n}), 'Add');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"\n}), 'ArrowBack');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"\n}), 'ArrowForward');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m10 17 5-5-5-5z\"\n}), 'ArrowRight');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2\"\n}), 'Bookmark');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m19 18 2 1V3c0-1.1-.9-2-2-2H8.99C7.89 1 7 1.9 7 3h10c1.1 0 2 .9 2 2zM15 5H5c-1.1 0-2 .9-2 2v16l7-3 7 3V7c0-1.1-.9-2-2-2\"\n}), 'Bookmarks');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 17h18v2H3zm0-7h18v5H3zm0-4h18v2H3z\"\n}), 'CalendarViewDay');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m-7 7H3v4c0 1.1.9 2 2 2h4v-2H5zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2m0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2z\"\n}), 'CenterFocusStrong');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2m-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"\n}), 'CheckBox');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 5v14H5V5zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2\"\n}), 'CheckBoxOutlineBlank');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M5 13h14v-2H5zm-2 4h14v-2H3zM7 7v2h14V7z\"\n}), 'ClearAll');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8m-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12m3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8m5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8m3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5\"\n}), 'ColorLens');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2\"\n}), 'CropFree');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M13 2.05v3.03c3.39.49 6 3.39 6 6.92 0 .9-.18 1.75-.48 2.54l2.6 1.53c.56-1.24.88-2.62.88-4.07 0-5.18-3.95-9.45-9-9.95M12 19c-3.87 0-7-3.13-7-7 0-3.53 2.61-6.43 6-6.92V2.05c-5.06.5-9 4.76-9 9.95 0 5.52 4.47 10 9.99 10 3.31 0 6.24-1.61 8.06-4.09l-2.6-1.53C16.17 17.98 14.21 19 12 19\"\n}), 'DataUsage');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z\"\n}), 'Done');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2m-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"\n}), 'DragIndicator');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z\"\n}), 'FolderOpen');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25\"\n}), 'Help');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m6 14 3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.88l1.41-1.41 2.12 2.12L5.62 8zm13.46.71 2.12-2.12 1.41 1.41L18.38 8z\"\n}), 'Highlight');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z\"\n}), 'Info');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\"\n}), 'KeyboardArrowDown');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z\"\n}), 'KeyboardArrowUp');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon([/*#__PURE__*/_jsx(\"path\", {\n  d: \"M18 6.41 16.59 5 12 9.58 7.41 5 6 6.41l6 6z\"\n}, \"0\"), /*#__PURE__*/_jsx(\"path\", {\n  d: \"m18 13-1.41-1.41L12 16.17l-4.59-4.58L6 13l6 6z\"\n}, \"1\")], 'KeyboardDoubleArrowDown');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon([/*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 17.59 7.41 19 12 14.42 16.59 19 18 17.59l-6-6z\"\n}, \"0\"), /*#__PURE__*/_jsx(\"path\", {\n  d: \"m6 11 1.41 1.41L12 7.83l4.59 4.58L18 11l-6-6z\"\n}, \"1\")], 'KeyboardDoubleArrowUp');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12z\"\n}), 'Label');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 16h5v-2H3zm6.5 0h5v-2h-5zm6.5 0h5v-2h-5zM3 20h2v-2H3zm4 0h2v-2H7zm4 0h2v-2h-2zm4 0h2v-2h-2zm4 0h2v-2h-2zM3 12h8v-2H3zm10 0h8v-2h-8zM3 4v4h18V4z\"\n}), 'LineStyle');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5\"\n}), 'Link');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h13v-2H3zm0-5h10v-2H3zm0-7v2h13V6zm18 9.59L17.42 12 21 8.41 19.59 7l-5 5 5 5z\"\n}), 'MenuOpen');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19h12v2H6z\"\n}), 'Minimize');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"\n}), 'MoreVert');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z\"\n}), 'OpenInNew');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5\"\n}), 'Palette');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon([/*#__PURE__*/_jsx(\"circle\", {\n  cx: \"12\",\n  cy: \"12\",\n  r: \"3.2\"\n}, \"0\"), /*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5\"\n}, \"1\")], 'PhotoCamera');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"\n}), 'RadioButtonChecked');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"\n}), 'RadioButtonUnchecked');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z\"\n}), 'Refresh');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27zM12 17.3c-.72 0-1.3-.58-1.3-1.3s.58-1.3 1.3-1.3 1.3.58 1.3 1.3-.58 1.3-1.3 1.3m1-4.3h-2V7h2z\"\n}), 'Report');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"\n}), 'Search');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z\"\n}), 'Sort');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m18 12 4-4-4-4v3H3v2h15zM6 12l-4 4 4 4v-3h15v-2H6z\"\n}), 'SyncAlt');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2M3 19c0 1.1.9 2 2 2h3V10H3z\"\n}), 'TableChart');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2\"\n}), 'Timeline');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M2 4v7h20V4zm8 16h12v-7H10zm-8 0h6v-7H2z\"\n}), 'ViewComfy');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\"\n}), 'Visibility');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 13c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m6-10C9.8 3 8 4.8 8 7s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m6 10c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4\"\n}), 'Workspaces');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon([/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"\n}, \"0\"), /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z\"\n}, \"1\")], 'ZoomIn');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z\"\n}), 'ZoomOut');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport Paper from \"../Paper/index.js\";\nimport alertClasses, { getAlertUtilityClass } from \"./alertClasses.js\";\nimport IconButton from \"../IconButton/index.js\";\nimport SuccessOutlinedIcon from \"../internal/svg-icons/SuccessOutlined.js\";\nimport ReportProblemOutlinedIcon from \"../internal/svg-icons/ReportProblemOutlined.js\";\nimport ErrorOutlineIcon from \"../internal/svg-icons/ErrorOutline.js\";\nimport InfoOutlinedIcon from \"../internal/svg-icons/InfoOutlined.js\";\nimport CloseIcon from \"../internal/svg-icons/Close.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    variant,\n    color,\n    severity,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color || severity)}`, `${variant}${capitalize(color || severity)}`, `${variant}`],\n    icon: ['icon'],\n    message: ['message'],\n    action: ['action']\n  };\n  return composeClasses(slots, getAlertUtilityClass, classes);\n};\nconst AlertRoot = styled(Paper, {\n  name: 'MuiAlert',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const getColor = theme.palette.mode === 'light' ? darken : lighten;\n  const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;\n  return {\n    ...theme.typography.body2,\n    backgroundColor: 'transparent',\n    display: 'flex',\n    padding: '6px 16px',\n    variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'standard'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'outlined'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark'])).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'filled'\n      },\n      style: {\n        fontWeight: theme.typography.fontWeightMedium,\n        ...(theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}FilledColor`],\n          backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n        } : {\n          backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n          color: theme.palette.getContrastText(theme.palette[color].main)\n        })\n      }\n    }))]\n  };\n}));\nconst AlertIcon = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})({\n  marginRight: 12,\n  padding: '7px 0',\n  display: 'flex',\n  fontSize: 22,\n  opacity: 0.9\n});\nconst AlertMessage = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0',\n  minWidth: 0,\n  overflow: 'auto'\n});\nconst AlertAction = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'flex-start',\n  padding: '4px 0 0 16px',\n  marginLeft: 'auto',\n  marginRight: -8\n});\nconst defaultIconMapping = {\n  success: /*#__PURE__*/_jsx(SuccessOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  warning: /*#__PURE__*/_jsx(ReportProblemOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  error: /*#__PURE__*/_jsx(ErrorOutlineIcon, {\n    fontSize: \"inherit\"\n  }),\n  info: /*#__PURE__*/_jsx(InfoOutlinedIcon, {\n    fontSize: \"inherit\"\n  })\n};\nconst Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAlert'\n  });\n  const {\n    action,\n    children,\n    className,\n    closeText = 'Close',\n    color,\n    components = {},\n    componentsProps = {},\n    icon,\n    iconMapping = defaultIconMapping,\n    onClose,\n    role = 'alert',\n    severity = 'success',\n    slotProps = {},\n    slots = {},\n    variant = 'standard',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    severity,\n    variant,\n    colorSeverity: color || severity\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: {\n      closeButton: components.CloseButton,\n      closeIcon: components.CloseIcon,\n      ...slots\n    },\n    slotProps: {\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [CloseButtonSlot, closeButtonProps] = useSlot('closeButton', {\n    elementType: IconButton,\n    externalForwardedProps,\n    ownerState\n  });\n  const [CloseIconSlot, closeIconProps] = useSlot('closeIcon', {\n    elementType: CloseIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(AlertRoot, {\n    role: role,\n    elevation: 0,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    children: [icon !== false ? /*#__PURE__*/_jsx(AlertIcon, {\n      ownerState: ownerState,\n      className: classes.icon,\n      children: icon || iconMapping[severity] || defaultIconMapping[severity]\n    }) : null, /*#__PURE__*/_jsx(AlertMessage, {\n      ownerState: ownerState,\n      className: classes.message,\n      children: children\n    }), action != null ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: action\n    }) : null, action == null && onClose ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: /*#__PURE__*/_jsx(CloseButtonSlot, {\n        size: \"small\",\n        \"aria-label\": closeText,\n        title: closeText,\n        color: \"inherit\",\n        onClick: onClose,\n        ...closeButtonProps,\n        children: /*#__PURE__*/_jsx(CloseIconSlot, {\n          fontSize: \"small\",\n          ...closeIconProps\n        })\n      })\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the alert.\n   */\n  action: PropTypes.node,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Override the default label for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The color of the component. Unless provided, the value is taken from the `severity` prop.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    CloseButton: PropTypes.elementType,\n    CloseIcon: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    closeButton: PropTypes.object,\n    closeIcon: PropTypes.object\n  }),\n  /**\n   * Override the icon displayed before the children.\n   * Unless provided, the icon is mapped to the value of the `severity` prop.\n   * Set to `false` to remove the `icon`.\n   */\n  icon: PropTypes.node,\n  /**\n   * The component maps the `severity` prop to a range of different icons,\n   * for instance success to `<SuccessOutlined>`.\n   * If you wish to change this mapping, you can provide your own.\n   * Alternatively, you can use the `icon` prop to override the icon displayed.\n   */\n  iconMapping: PropTypes.shape({\n    error: PropTypes.node,\n    info: PropTypes.node,\n    success: PropTypes.node,\n    warning: PropTypes.node\n  }),\n  /**\n   * Callback fired when the component requests to be closed.\n   * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: PropTypes.string,\n  /**\n   * The severity of the alert. This defines the color and icon used.\n   * @default 'success'\n   */\n  severity: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    closeButton: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    closeIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    closeButton: PropTypes.elementType,\n    closeIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default Alert;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n  return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'colorSuccess', 'colorInfo', 'colorWarning', 'colorError', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;","'use client';\n\nvar _ClearIcon, _ArrowDropDownIcon;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport useAutocomplete, { createFilterOptions } from \"../useAutocomplete/index.js\";\nimport Popper from \"../Popper/index.js\";\nimport ListSubheader from \"../ListSubheader/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport IconButton from \"../IconButton/index.js\";\nimport Chip from \"../Chip/index.js\";\nimport inputClasses from \"../Input/inputClasses.js\";\nimport inputBaseClasses from \"../InputBase/inputBaseClasses.js\";\nimport outlinedInputClasses from \"../OutlinedInput/outlinedInputClasses.js\";\nimport filledInputClasses from \"../FilledInput/filledInputClasses.js\";\nimport ClearIcon from \"../internal/svg-icons/Close.js\";\nimport ArrowDropDownIcon from \"../internal/svg-icons/ArrowDropDown.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport autocompleteClasses, { getAutocompleteUtilityClass } from \"./autocompleteClasses.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused,\n    popupOpen,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n    inputRoot: ['inputRoot'],\n    input: ['input', inputFocused && 'inputFocused'],\n    tag: ['tag', `tagSize${capitalize(size)}`],\n    endAdornment: ['endAdornment'],\n    clearIndicator: ['clearIndicator'],\n    popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n    popper: ['popper', disablePortal && 'popperDisablePortal'],\n    paper: ['paper'],\n    listbox: ['listbox'],\n    loading: ['loading'],\n    noOptions: ['noOptions'],\n    option: ['option'],\n    groupLabel: ['groupLabel'],\n    groupUl: ['groupUl']\n  };\n  return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      fullWidth,\n      hasClearIcon,\n      hasPopupIcon,\n      inputFocused,\n      size\n    } = ownerState;\n    return [{\n      [`& .${autocompleteClasses.tag}`]: styles.tag\n    }, {\n      [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n    }, {\n      [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n    }, {\n      [`& .${autocompleteClasses.input}`]: styles.input\n    }, {\n      [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n    }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n  }\n})({\n  [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n    visibility: 'visible'\n  },\n  /* Avoid double tap issue on iOS */\n  '@media (pointer: fine)': {\n    [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n      visibility: 'visible'\n    }\n  },\n  [`& .${autocompleteClasses.tag}`]: {\n    margin: 3,\n    maxWidth: 'calc(100% - 6px)'\n  },\n  [`& .${autocompleteClasses.inputRoot}`]: {\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      width: 0,\n      minWidth: 30\n    }\n  },\n  [`& .${inputClasses.root}`]: {\n    paddingBottom: 1,\n    '& .MuiInput-input': {\n      padding: '4px 4px 4px 0px'\n    }\n  },\n  [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${inputClasses.input}`]: {\n      padding: '2px 4px 3px 0'\n    }\n  },\n  [`& .${outlinedInputClasses.root}`]: {\n    padding: 9,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '7.5px 4px 7.5px 5px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    // Don't specify paddingRight, as it overrides the default value set when there is only\n    // one of the popup or clear icon as the specificity is equal so the latter one wins\n    paddingTop: 6,\n    paddingBottom: 6,\n    paddingLeft: 6,\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '2.5px 4px 2.5px 8px'\n    }\n  },\n  [`& .${filledInputClasses.root}`]: {\n    paddingTop: 19,\n    paddingLeft: 8,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${filledInputClasses.input}`]: {\n      padding: '7px 4px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    paddingBottom: 1,\n    [`& .${filledInputClasses.input}`]: {\n      padding: '2.5px 4px'\n    }\n  },\n  [`& .${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 8\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 0,\n    paddingBottom: 0,\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  },\n  [`& .${autocompleteClasses.input}`]: {\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n    opacity: 0\n  },\n  variants: [{\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      [`& .${autocompleteClasses.tag}`]: {\n        margin: 2,\n        maxWidth: 'calc(100% - 4px)'\n      }\n    }\n  }, {\n    props: {\n      inputFocused: true\n    },\n    style: {\n      [`& .${autocompleteClasses.input}`]: {\n        opacity: 1\n      }\n    }\n  }, {\n    props: {\n      multiple: true\n    },\n    style: {\n      [`& .${autocompleteClasses.inputRoot}`]: {\n        flexWrap: 'wrap'\n      }\n    }\n  }]\n});\nconst AutocompleteEndAdornment = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'EndAdornment',\n  overridesResolver: (props, styles) => styles.endAdornment\n})({\n  // We use a position absolute to support wrapping tags.\n  position: 'absolute',\n  right: 0,\n  top: '50%',\n  transform: 'translate(0, -50%)'\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'ClearIndicator',\n  overridesResolver: (props, styles) => styles.clearIndicator\n})({\n  marginRight: -2,\n  padding: 4,\n  visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'PopupIndicator',\n  overridesResolver: ({\n    ownerState\n  }, styles) => ({\n    ...styles.popupIndicator,\n    ...(ownerState.popupOpen && styles.popupIndicatorOpen)\n  })\n})({\n  padding: 2,\n  marginRight: -2,\n  variants: [{\n    props: {\n      popupOpen: true\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n});\nconst AutocompletePopper = styled(Popper, {\n  name: 'MuiAutocomplete',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${autocompleteClasses.option}`]: styles.option\n    }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.modal,\n  variants: [{\n    props: {\n      disablePortal: true\n    },\n    style: {\n      position: 'absolute'\n    }\n  }]\n})));\nconst AutocompletePaper = styled(Paper, {\n  name: 'MuiAutocomplete',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body1,\n  overflow: 'auto'\n})));\nconst AutocompleteLoading = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Loading',\n  overridesResolver: (props, styles) => styles.loading\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n})));\nconst AutocompleteNoOptions = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'NoOptions',\n  overridesResolver: (props, styles) => styles.noOptions\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n})));\nconst AutocompleteListbox = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Listbox',\n  overridesResolver: (props, styles) => styles.listbox\n})(memoTheme(({\n  theme\n}) => ({\n  listStyle: 'none',\n  margin: 0,\n  padding: '8px 0',\n  maxHeight: '40vh',\n  overflow: 'auto',\n  position: 'relative',\n  [`& .${autocompleteClasses.option}`]: {\n    minHeight: 48,\n    display: 'flex',\n    overflow: 'hidden',\n    justifyContent: 'flex-start',\n    alignItems: 'center',\n    cursor: 'pointer',\n    paddingTop: 6,\n    boxSizing: 'border-box',\n    outline: '0',\n    WebkitTapHighlightColor: 'transparent',\n    paddingBottom: 6,\n    paddingLeft: 16,\n    paddingRight: 16,\n    [theme.breakpoints.up('sm')]: {\n      minHeight: 'auto'\n    },\n    [`&.${autocompleteClasses.focused}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.hover,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    '&[aria-disabled=\"true\"]': {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`&.${autocompleteClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n      [`&.${autocompleteClasses.focused}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette.action.selected\n        }\n      },\n      [`&.${autocompleteClasses.focusVisible}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n      }\n    }\n  }\n})));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n  name: 'MuiAutocomplete',\n  slot: 'GroupLabel',\n  overridesResolver: (props, styles) => styles.groupLabel\n})(memoTheme(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  top: -8\n})));\nconst AutocompleteGroupUl = styled('ul', {\n  name: 'MuiAutocomplete',\n  slot: 'GroupUl',\n  overridesResolver: (props, styles) => styles.groupUl\n})({\n  padding: 0,\n  [`& .${autocompleteClasses.option}`]: {\n    paddingLeft: 24\n  }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAutocomplete'\n  });\n\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  const {\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    ChipProps: ChipPropsProp,\n    className,\n    clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n      fontSize: \"small\"\n    })),\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    clearText = 'Clear',\n    closeText = 'Close',\n    componentsProps,\n    defaultValue = props.multiple ? [] : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled = false,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    disablePortal = false,\n    filterOptions,\n    filterSelectedOptions = false,\n    forcePopupIcon = 'auto',\n    freeSolo = false,\n    fullWidth = false,\n    getLimitTagsText = more => `+${more}`,\n    getOptionDisabled,\n    getOptionKey,\n    getOptionLabel: getOptionLabelProp,\n    isOptionEqualToValue,\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    limitTags = -1,\n    ListboxComponent: ListboxComponentProp,\n    ListboxProps: ListboxPropsProp,\n    loading = false,\n    loadingText = 'Loading…',\n    multiple = false,\n    noOptionsText = 'No options',\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open,\n    openOnFocus = false,\n    openText = 'Open',\n    options,\n    PaperComponent: PaperComponentProp,\n    PopperComponent: PopperComponentProp,\n    popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n    readOnly = false,\n    renderGroup: renderGroupProp,\n    renderInput,\n    renderOption: renderOptionProp,\n    renderTags,\n    selectOnFocus = !props.freeSolo,\n    size = 'medium',\n    slots = {},\n    slotProps = {},\n    value: valueProp,\n    ...other\n  } = props;\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n\n  const {\n    getRootProps,\n    getInputProps,\n    getInputLabelProps,\n    getPopupIndicatorProps,\n    getClearProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    expanded,\n    id,\n    popupOpen,\n    focused,\n    focusedTag,\n    anchorEl,\n    setAnchorEl,\n    inputValue,\n    groupedOptions\n  } = useAutocomplete({\n    ...props,\n    componentName: 'Autocomplete'\n  });\n  const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n  const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n  const {\n    onMouseDown: handleInputMouseDown\n  } = getInputProps();\n  const {\n    ref: listboxRef,\n    ...otherListboxProps\n  } = getListboxProps();\n  const defaultGetOptionLabel = option => option.label ?? option;\n  const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n  // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n  const ownerState = {\n    ...props,\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    getOptionLabel,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused: focusedTag === -1,\n    popupOpen,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: {\n      listbox: ListboxComponentProp,\n      paper: PaperComponentProp,\n      popper: PopperComponentProp,\n      ...slots\n    },\n    slotProps: {\n      chip: ChipPropsProp,\n      listbox: ListboxPropsProp,\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [ListboxSlot, listboxProps] = useSlot('listbox', {\n    elementType: 'ul',\n    externalForwardedProps,\n    ownerState,\n    className: classes.listbox,\n    additionalProps: otherListboxProps,\n    ref: listboxRef\n  });\n  const [PaperSlot, paperProps] = useSlot('paper', {\n    elementType: Paper,\n    externalForwardedProps,\n    ownerState,\n    className: classes.paper\n  });\n  const [PopperSlot, popperProps] = useSlot('popper', {\n    elementType: Popper,\n    externalForwardedProps,\n    ownerState,\n    className: classes.popper,\n    additionalProps: {\n      disablePortal,\n      style: {\n        width: anchorEl ? anchorEl.clientWidth : null\n      },\n      role: 'presentation',\n      anchorEl,\n      open: popupOpen\n    }\n  });\n  let startAdornment;\n  if (multiple && value.length > 0) {\n    const getCustomizedTagProps = params => ({\n      className: classes.tag,\n      disabled,\n      ...getTagProps(params)\n    });\n    if (renderTags) {\n      startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n    } else {\n      startAdornment = value.map((option, index) => {\n        const {\n          key,\n          ...customTagProps\n        } = getCustomizedTagProps({\n          index\n        });\n        return /*#__PURE__*/_jsx(Chip, {\n          label: getOptionLabel(option),\n          size: size,\n          ...customTagProps,\n          ...externalForwardedProps.slotProps.chip\n        }, key);\n      });\n    }\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags;\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags);\n      startAdornment.push(/*#__PURE__*/_jsx(\"span\", {\n        className: classes.tag,\n        children: getLimitTagsText(more)\n      }, startAdornment.length));\n    }\n  }\n  const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n    children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n      className: classes.groupLabel,\n      ownerState: ownerState,\n      component: \"div\",\n      children: params.group\n    }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n      className: classes.groupUl,\n      ownerState: ownerState,\n      children: params.children\n    })]\n  }, params.key);\n  const renderGroup = renderGroupProp || defaultRenderGroup;\n  const defaultRenderOption = (props2, option) => {\n    // Need to clearly apply key because of https://github.com/vercel/next.js/issues/55642\n    const {\n      key,\n      ...otherProps\n    } = props2;\n    return /*#__PURE__*/_jsx(\"li\", {\n      ...otherProps,\n      children: getOptionLabel(option)\n    }, key);\n  };\n  const renderOption = renderOptionProp || defaultRenderOption;\n  const renderListOption = (option, index) => {\n    const optionProps = getOptionProps({\n      option,\n      index\n    });\n    return renderOption({\n      ...optionProps,\n      className: classes.option\n    }, option, {\n      selected: optionProps['aria-selected'],\n      index,\n      inputValue\n    }, ownerState);\n  };\n  const clearIndicatorSlotProps = externalForwardedProps.slotProps.clearIndicator;\n  const popupIndicatorSlotProps = externalForwardedProps.slotProps.popupIndicator;\n  const renderAutocompletePopperChildren = children => /*#__PURE__*/_jsx(AutocompletePopper, {\n    as: PopperSlot,\n    ...popperProps,\n    children: /*#__PURE__*/_jsx(AutocompletePaper, {\n      as: PaperSlot,\n      ...paperProps,\n      children: children\n    })\n  });\n  let autocompletePopper = null;\n  if (groupedOptions.length > 0) {\n    autocompletePopper = renderAutocompletePopperChildren(/*#__PURE__*/_jsx(AutocompleteListbox, {\n      as: ListboxSlot,\n      ...listboxProps,\n      children: groupedOptions.map((option, index) => {\n        if (groupBy) {\n          return renderGroup({\n            key: option.key,\n            group: option.group,\n            children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n          });\n        }\n        return renderListOption(option, index);\n      })\n    }));\n  } else if (loading && groupedOptions.length === 0) {\n    autocompletePopper = renderAutocompletePopperChildren(/*#__PURE__*/_jsx(AutocompleteLoading, {\n      className: classes.loading,\n      ownerState: ownerState,\n      children: loadingText\n    }));\n  } else if (groupedOptions.length === 0 && !freeSolo && !loading) {\n    autocompletePopper = renderAutocompletePopperChildren(/*#__PURE__*/_jsx(AutocompleteNoOptions, {\n      className: classes.noOptions,\n      ownerState: ownerState,\n      role: \"presentation\",\n      onMouseDown: event => {\n        // Prevent input blur when interacting with the \"no options\" content\n        event.preventDefault();\n      },\n      children: noOptionsText\n    }));\n  }\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(AutocompleteRoot, {\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState,\n      ...getRootProps(other),\n      children: renderInput({\n        id,\n        disabled,\n        fullWidth: true,\n        size: size === 'small' ? 'small' : undefined,\n        InputLabelProps: getInputLabelProps(),\n        InputProps: {\n          ref: setAnchorEl,\n          className: classes.inputRoot,\n          startAdornment,\n          onClick: event => {\n            if (event.target === event.currentTarget) {\n              handleInputMouseDown(event);\n            }\n          },\n          ...((hasClearIcon || hasPopupIcon) && {\n            endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n              className: classes.endAdornment,\n              ownerState: ownerState,\n              children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, {\n                ...getClearProps(),\n                \"aria-label\": clearText,\n                title: clearText,\n                ownerState: ownerState,\n                ...clearIndicatorSlotProps,\n                className: clsx(classes.clearIndicator, clearIndicatorSlotProps?.className),\n                children: clearIcon\n              }) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, {\n                ...getPopupIndicatorProps(),\n                disabled: disabled,\n                \"aria-label\": popupOpen ? closeText : openText,\n                title: popupOpen ? closeText : openText,\n                ownerState: ownerState,\n                ...popupIndicatorSlotProps,\n                className: clsx(classes.popupIndicator, popupIndicatorSlotProps?.className),\n                children: popupIcon\n              }) : null]\n            })\n          })\n        },\n        inputProps: {\n          className: classes.input,\n          disabled,\n          readOnly,\n          ...getInputProps()\n        }\n      })\n    }), anchorEl ? autocompletePopper : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the portion of the selected suggestion that the user hasn't typed,\n   * known as the completion string, appears inline after the input cursor in the textbox.\n   * The inline completion string is visually highlighted and has a selected state.\n   * @default false\n   */\n  autoComplete: PropTypes.bool,\n  /**\n   * If `true`, the first option is automatically highlighted.\n   * @default false\n   */\n  autoHighlight: PropTypes.bool,\n  /**\n   * If `true`, the selected option becomes the value of the input\n   * when the Autocomplete loses focus unless the user chooses\n   * a different option or changes the character string in the input.\n   *\n   * When using the `freeSolo` mode, the typed value will be the input value\n   * if the Autocomplete loses focus without highlighting an option.\n   * @default false\n   */\n  autoSelect: PropTypes.bool,\n  /**\n   * Control if the input should be blurred when an option is selected:\n   *\n   * - `false` the input is not blurred.\n   * - `true` the input is always blurred.\n   * - `touch` the input is blurred after a touch event.\n   * - `mouse` the input is blurred after a mouse event.\n   * @default false\n   */\n  blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n  /**\n   * Props applied to the [`Chip`](https://mui.com/material-ui/api/chip/) element.\n   */\n  ChipProps: PropTypes.object,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display in place of the default clear icon.\n   * @default <ClearIcon fontSize=\"small\" />\n   */\n  clearIcon: PropTypes.node,\n  /**\n   * If `true`, the input's text is cleared on blur if no value is selected.\n   *\n   * Set it to `true` if you want to help the user enter a new value.\n   * Set it to `false` if you want to help the user resume their search.\n   * @default !props.freeSolo\n   */\n  clearOnBlur: PropTypes.bool,\n  /**\n   * If `true`, clear all values when the user presses escape and the popup is closed.\n   * @default false\n   */\n  clearOnEscape: PropTypes.bool,\n  /**\n   * Override the default text for the *clear* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Clear'\n   */\n  clearText: PropTypes.string,\n  /**\n   * Override the default text for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default props.multiple ? [] : null\n   */\n  defaultValue: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n      return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * If `true`, the input can't be cleared.\n   * @default false\n   */\n  disableClearable: PropTypes.bool,\n  /**\n   * If `true`, the popup won't close when a value is selected.\n   * @default false\n   */\n  disableCloseOnSelect: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the list box in the popup will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * A function that determines the filtered options to be rendered on search.\n   *\n   * @default createFilterOptions()\n   * @param {Value[]} options The options to render.\n   * @param {object} state The state of the component.\n   * @returns {Value[]}\n   */\n  filterOptions: PropTypes.func,\n  /**\n   * If `true`, hide the selected options from the list box.\n   * @default false\n   */\n  filterSelectedOptions: PropTypes.bool,\n  /**\n   * Force the visibility display of the popup icon.\n   * @default 'auto'\n   */\n  forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n  /**\n   * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n   * @default false\n   */\n  freeSolo: PropTypes.bool,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The label to display when the tags are truncated (`limitTags`).\n   *\n   * @param {number} more The number of truncated tags.\n   * @returns {ReactNode}\n   * @default (more) => `+${more}`\n   */\n  getLimitTagsText: PropTypes.func,\n  /**\n   * Used to determine the disabled state for a given option.\n   *\n   * @param {Value} option The option to test.\n   * @returns {boolean}\n   */\n  getOptionDisabled: PropTypes.func,\n  /**\n   * Used to determine the key for a given option.\n   * This can be useful when the labels of options are not unique (since labels are used as keys by default).\n   *\n   * @param {Value} option The option to get the key for.\n   * @returns {string | number}\n   */\n  getOptionKey: PropTypes.func,\n  /**\n   * Used to determine the string value for a given option.\n   * It's used to fill the input (and the list box options if `renderOption` is not provided).\n   *\n   * If used in free solo mode, it must accept both the type of the options and a string.\n   *\n   * @param {Value} option\n   * @returns {string}\n   * @default (option) => option.label ?? option\n   */\n  getOptionLabel: PropTypes.func,\n  /**\n   * If provided, the options will be grouped under the returned string.\n   * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n   *\n   * @param {Value} options The options to group.\n   * @returns {string}\n   */\n  groupBy: PropTypes.func,\n  /**\n   * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n   * It should move focus to the first option and last option, respectively.\n   * @default !props.freeSolo\n   */\n  handleHomeEndKeys: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide an id it will fall back to a randomly generated one.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the highlight can move to the input.\n   * @default false\n   */\n  includeInputInList: PropTypes.bool,\n  /**\n   * The input value.\n   */\n  inputValue: PropTypes.string,\n  /**\n   * Used to determine if the option represents the given value.\n   * Uses strict equality by default.\n   * ⚠️ Both arguments need to be handled, an option can only match with one value.\n   *\n   * @param {Value} option The option to test.\n   * @param {Value} value The value to test against.\n   * @returns {boolean}\n   */\n  isOptionEqualToValue: PropTypes.func,\n  /**\n   * The maximum number of tags that will be visible when not focused.\n   * Set `-1` to disable the limit.\n   * @default -1\n   */\n  limitTags: integerPropType,\n  /**\n   * The component used to render the listbox.\n   * @default 'ul'\n   */\n  ListboxComponent: PropTypes.elementType,\n  /**\n   * Props applied to the Listbox element.\n   */\n  ListboxProps: PropTypes.object,\n  /**\n   * If `true`, the component is in a loading state.\n   * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, for example `options` are empty).\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Text to display when in a loading state.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Loading…'\n   */\n  loadingText: PropTypes.node,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Text to display when there are no options.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'No options'\n   */\n  noOptionsText: PropTypes.node,\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value|Value[]} value The new value of the component.\n   * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n   * @param {string} [details]\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the highlight option changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value} option The highlighted option.\n   * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n   */\n  onHighlightChange: PropTypes.func,\n  /**\n   * Callback fired when the input value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} value The new value of the text input.\n   * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`, `\"blur\"`, `\"selectOption\"`, `\"removeOption\"`\n   */\n  onInputChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * If `true`, the popup will open on input focus.\n   * @default false\n   */\n  openOnFocus: PropTypes.bool,\n  /**\n   * Override the default text for the *open popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Open'\n   */\n  openText: PropTypes.string,\n  /**\n   * A list of options that will be shown in the Autocomplete.\n   */\n  options: PropTypes.array.isRequired,\n  /**\n   * The component used to render the body of the popup.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * The component used to position the popup.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * The icon to display in place of the default popup icon.\n   * @default <ArrowDropDownIcon />\n   */\n  popupIcon: PropTypes.node,\n  /**\n   * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the group.\n   *\n   * @param {AutocompleteRenderGroupParams} params The group to render.\n   * @returns {ReactNode}\n   */\n  renderGroup: PropTypes.func,\n  /**\n   * Render the input.\n   *\n   * @param {object} params\n   * @returns {ReactNode}\n   */\n  renderInput: PropTypes.func.isRequired,\n  /**\n   * Render the option, use `getOptionLabel` by default.\n   *\n   * @param {object} props The props to apply on the li element.\n   * @param {Value} option The option to render.\n   * @param {object} state The state of each option.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderOption: PropTypes.func,\n  /**\n   * Render the selected value.\n   *\n   * @param {Value[]} value The `value` provided to the component.\n   * @param {function} getTagProps A tag props getter.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderTags: PropTypes.func,\n  /**\n   * If `true`, the input's text is selected on focus.\n   * It helps the user clear the selected value.\n   * @default !props.freeSolo\n   */\n  selectOnFocus: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    chip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    clearIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    listbox: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    popper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    popupIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    listbox: PropTypes.elementType,\n    paper: PropTypes.elementType,\n    popper: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the autocomplete.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n   */\n  value: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n      return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n    }\n    return null;\n  })\n} : void 0;\nexport default Autocomplete;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n  return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport Fade from \"../Fade/index.js\";\nimport { getBackdropUtilityClass } from \"./backdropClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst removeOwnerState = props => {\n  const {\n    ownerState,\n    ...rest\n  } = props;\n  return rest;\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    invisible\n  } = ownerState;\n  const slots = {\n    root: ['root', invisible && 'invisible']\n  };\n  return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n  name: 'MuiBackdrop',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.invisible && styles.invisible];\n  }\n})({\n  position: 'fixed',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  backgroundColor: 'rgba(0, 0, 0, 0.5)',\n  WebkitTapHighlightColor: 'transparent',\n  variants: [{\n    props: {\n      invisible: true\n    },\n    style: {\n      backgroundColor: 'transparent'\n    }\n  }]\n});\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBackdrop'\n  });\n  const {\n    children,\n    className,\n    component = 'div',\n    invisible = false,\n    open,\n    components = {},\n    componentsProps = {},\n    slotProps = {},\n    slots = {},\n    TransitionComponent: TransitionComponentProp,\n    transitionDuration,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    invisible\n  };\n  const classes = useUtilityClasses(ownerState);\n  const backwardCompatibleSlots = {\n    transition: TransitionComponentProp,\n    root: components.Root,\n    ...slots\n  };\n  const backwardCompatibleSlotProps = {\n    ...componentsProps,\n    ...slotProps\n  };\n  const externalForwardedProps = {\n    slots: backwardCompatibleSlots,\n    slotProps: backwardCompatibleSlotProps\n  };\n  const [RootSlot, rootProps] = useSlot('root', {\n    elementType: BackdropRoot,\n    externalForwardedProps,\n    className: clsx(classes.root, className),\n    ownerState\n  });\n  const [TransitionSlot, transitionProps] = useSlot('transition', {\n    elementType: Fade,\n    externalForwardedProps,\n    ownerState\n  });\n  const transitionPropsRemoved = removeOwnerState(transitionProps);\n  return /*#__PURE__*/_jsx(TransitionSlot, {\n    in: open,\n    timeout: transitionDuration,\n    ...other,\n    ...transitionPropsRemoved,\n    children: /*#__PURE__*/_jsx(RootSlot, {\n      \"aria-hidden\": true,\n      ...rootProps,\n      classes: classes,\n      ref: ref,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType,\n    transition: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Backdrop;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n  return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from \"../className/index.js\";\nimport { createTheme } from \"../styles/index.js\";\nimport THEME_ID from \"../styles/identifier.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst defaultTheme = createTheme();\nconst Box = createBox({\n  themeId: THEME_ID,\n  defaultTheme,\n  defaultClassName: boxClasses.root,\n  generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n  const {\n    themeId,\n    defaultTheme,\n    defaultClassName = 'MuiBox-root',\n    generateClassName\n  } = options;\n  const BoxRoot = styled('div', {\n    shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n  })(styleFunctionSx);\n  const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n    const theme = useTheme(defaultTheme);\n    const {\n      className,\n      component = 'div',\n      ...other\n    } = extendSxProp(inProps);\n    return /*#__PURE__*/_jsx(BoxRoot, {\n      as: component,\n      ref: ref,\n      className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n      theme: themeId ? theme[themeId] || theme : theme,\n      ...other\n    });\n  });\n  return Box;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport buttonClasses, { getButtonUtilityClass } from \"./buttonClasses.js\";\nimport ButtonGroupContext from \"../ButtonGroup/ButtonGroupContext.js\";\nimport ButtonGroupButtonContext from \"../ButtonGroup/ButtonGroupButtonContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    disableElevation,\n    fullWidth,\n    size,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, `color${capitalize(color)}`, disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n    label: ['label'],\n    startIcon: ['icon', 'startIcon', `iconSize${capitalize(size)}`],\n    endIcon: ['icon', 'endIcon', `iconSize${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst commonIconStyles = [{\n  props: {\n    size: 'small'\n  },\n  style: {\n    '& > *:nth-of-type(1)': {\n      fontSize: 18\n    }\n  }\n}, {\n  props: {\n    size: 'medium'\n  },\n  style: {\n    '& > *:nth-of-type(1)': {\n      fontSize: 20\n    }\n  }\n}, {\n  props: {\n    size: 'large'\n  },\n  style: {\n    '& > *:nth-of-type(1)': {\n      fontSize: 22\n    }\n  }\n}];\nconst ButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const inheritContainedBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey[300] : theme.palette.grey[800];\n  const inheritContainedHoverBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey.A100 : theme.palette.grey[700];\n  return {\n    ...theme.typography.button,\n    minWidth: 64,\n    padding: '6px 16px',\n    border: 0,\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short\n    }),\n    '&:hover': {\n      textDecoration: 'none'\n    },\n    [`&.${buttonClasses.disabled}`]: {\n      color: (theme.vars || theme).palette.action.disabled\n    },\n    variants: [{\n      props: {\n        variant: 'contained'\n      },\n      style: {\n        color: `var(--variant-containedColor)`,\n        backgroundColor: `var(--variant-containedBg)`,\n        boxShadow: (theme.vars || theme).shadows[2],\n        '&:hover': {\n          boxShadow: (theme.vars || theme).shadows[4],\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            boxShadow: (theme.vars || theme).shadows[2]\n          }\n        },\n        '&:active': {\n          boxShadow: (theme.vars || theme).shadows[8]\n        },\n        [`&.${buttonClasses.focusVisible}`]: {\n          boxShadow: (theme.vars || theme).shadows[6]\n        },\n        [`&.${buttonClasses.disabled}`]: {\n          color: (theme.vars || theme).palette.action.disabled,\n          boxShadow: (theme.vars || theme).shadows[0],\n          backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n        }\n      }\n    }, {\n      props: {\n        variant: 'outlined'\n      },\n      style: {\n        padding: '5px 15px',\n        border: '1px solid currentColor',\n        borderColor: `var(--variant-outlinedBorder, currentColor)`,\n        backgroundColor: `var(--variant-outlinedBg)`,\n        color: `var(--variant-outlinedColor)`,\n        [`&.${buttonClasses.disabled}`]: {\n          border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n        }\n      }\n    }, {\n      props: {\n        variant: 'text'\n      },\n      style: {\n        padding: '6px 8px',\n        color: `var(--variant-textColor)`,\n        backgroundColor: `var(--variant-textBg)`\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])).map(([color]) => ({\n      props: {\n        color\n      },\n      style: {\n        '--variant-textColor': (theme.vars || theme).palette[color].main,\n        '--variant-outlinedColor': (theme.vars || theme).palette[color].main,\n        '--variant-outlinedBorder': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.5)` : alpha(theme.palette[color].main, 0.5),\n        '--variant-containedColor': (theme.vars || theme).palette[color].contrastText,\n        '--variant-containedBg': (theme.vars || theme).palette[color].main,\n        '@media (hover: hover)': {\n          '&:hover': {\n            '--variant-containedBg': (theme.vars || theme).palette[color].dark,\n            '--variant-textBg': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity),\n            '--variant-outlinedBorder': (theme.vars || theme).palette[color].main,\n            '--variant-outlinedBg': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n          }\n        }\n      }\n    })), {\n      props: {\n        color: 'inherit'\n      },\n      style: {\n        '--variant-containedColor': theme.vars ?\n        // this is safe because grey does not change between default light/dark mode\n        theme.vars.palette.text.primary : theme.palette.getContrastText?.(inheritContainedBackgroundColor),\n        '--variant-containedBg': theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,\n        '@media (hover: hover)': {\n          '&:hover': {\n            '--variant-containedBg': theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,\n            '--variant-textBg': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n            '--variant-outlinedBg': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity)\n          }\n        }\n      }\n    }, {\n      props: {\n        size: 'small',\n        variant: 'text'\n      },\n      style: {\n        padding: '4px 5px',\n        fontSize: theme.typography.pxToRem(13)\n      }\n    }, {\n      props: {\n        size: 'large',\n        variant: 'text'\n      },\n      style: {\n        padding: '8px 11px',\n        fontSize: theme.typography.pxToRem(15)\n      }\n    }, {\n      props: {\n        size: 'small',\n        variant: 'outlined'\n      },\n      style: {\n        padding: '3px 9px',\n        fontSize: theme.typography.pxToRem(13)\n      }\n    }, {\n      props: {\n        size: 'large',\n        variant: 'outlined'\n      },\n      style: {\n        padding: '7px 21px',\n        fontSize: theme.typography.pxToRem(15)\n      }\n    }, {\n      props: {\n        size: 'small',\n        variant: 'contained'\n      },\n      style: {\n        padding: '4px 10px',\n        fontSize: theme.typography.pxToRem(13)\n      }\n    }, {\n      props: {\n        size: 'large',\n        variant: 'contained'\n      },\n      style: {\n        padding: '8px 22px',\n        fontSize: theme.typography.pxToRem(15)\n      }\n    }, {\n      props: {\n        disableElevation: true\n      },\n      style: {\n        boxShadow: 'none',\n        '&:hover': {\n          boxShadow: 'none'\n        },\n        [`&.${buttonClasses.focusVisible}`]: {\n          boxShadow: 'none'\n        },\n        '&:active': {\n          boxShadow: 'none'\n        },\n        [`&.${buttonClasses.disabled}`]: {\n          boxShadow: 'none'\n        }\n      }\n    }, {\n      props: {\n        fullWidth: true\n      },\n      style: {\n        width: '100%'\n      }\n    }]\n  };\n}));\nconst ButtonStartIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'StartIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})({\n  display: 'inherit',\n  marginRight: 8,\n  marginLeft: -4,\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      marginLeft: -2\n    }\n  }, ...commonIconStyles]\n});\nconst ButtonEndIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'EndIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})({\n  display: 'inherit',\n  marginRight: -4,\n  marginLeft: 8,\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      marginRight: -2\n    }\n  }, ...commonIconStyles]\n});\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const contextProps = React.useContext(ButtonGroupContext);\n  const buttonGroupButtonContextPositionClassName = React.useContext(ButtonGroupButtonContext);\n  const resolvedProps = resolveProps(contextProps, inProps);\n  const props = useDefaultProps({\n    props: resolvedProps,\n    name: 'MuiButton'\n  });\n  const {\n    children,\n    color = 'primary',\n    component = 'button',\n    className,\n    disabled = false,\n    disableElevation = false,\n    disableFocusRipple = false,\n    endIcon: endIconProp,\n    focusVisibleClassName,\n    fullWidth = false,\n    size = 'medium',\n    startIcon: startIconProp,\n    type,\n    variant = 'text',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    fullWidth,\n    size,\n    type,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n    className: classes.startIcon,\n    ownerState: ownerState,\n    children: startIconProp\n  });\n  const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n    className: classes.endIcon,\n    ownerState: ownerState,\n    children: endIconProp\n  });\n  const positionClassName = buttonGroupButtonContextPositionClassName || '';\n  return /*#__PURE__*/_jsxs(ButtonRoot, {\n    ownerState: ownerState,\n    className: clsx(contextProps.className, classes.root, className, positionClassName),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ref: ref,\n    type: type,\n    ...other,\n    classes: classes,\n    children: [startIcon, children, endIcon]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * Element placed after the children.\n   */\n  endIcon: PropTypes.node,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * Element placed before the children.\n   */\n  startIcon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","'use client';\n\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\n/**\n * Lazy initialization container for the Ripple instance. This improves\n * performance by delaying mounting the ripple until it's needed.\n */\nexport class LazyRipple {\n  /** React ref to the ripple instance */\n\n  /** If the ripple component should be mounted */\n\n  /** Promise that resolves when the ripple component is mounted */\n\n  /** If the ripple component has been mounted */\n\n  /** React state hook setter */\n\n  static create() {\n    return new LazyRipple();\n  }\n  static use() {\n    /* eslint-disable */\n    const ripple = useLazyRef(LazyRipple.create).current;\n    const [shouldMount, setShouldMount] = React.useState(false);\n    ripple.shouldMount = shouldMount;\n    ripple.setShouldMount = setShouldMount;\n    React.useEffect(ripple.mountEffect, [shouldMount]);\n    /* eslint-enable */\n\n    return ripple;\n  }\n  constructor() {\n    this.ref = {\n      current: null\n    };\n    this.mounted = null;\n    this.didMount = false;\n    this.shouldMount = false;\n    this.setShouldMount = null;\n  }\n  mount() {\n    if (!this.mounted) {\n      this.mounted = createControlledPromise();\n      this.shouldMount = true;\n      this.setShouldMount(this.shouldMount);\n    }\n    return this.mounted;\n  }\n  mountEffect = () => {\n    if (this.shouldMount && !this.didMount) {\n      if (this.ref.current !== null) {\n        this.didMount = true;\n        this.mounted.resolve();\n      }\n    }\n  };\n\n  /* Ripple API */\n\n  start(...args) {\n    this.mount().then(() => this.ref.current?.start(...args));\n  }\n  stop(...args) {\n    this.mount().then(() => this.ref.current?.stop(...args));\n  }\n  pulsate(...args) {\n    this.mount().then(() => this.ref.current?.pulsate(...args));\n  }\n}\nexport default function useLazyRipple() {\n  return LazyRipple.use();\n}\nfunction createControlledPromise() {\n  let resolve;\n  let reject;\n  const p = new Promise((resolveFn, rejectFn) => {\n    resolve = resolveFn;\n    reject = rejectFn;\n  });\n  p.resolve = resolve;\n  p.reject = reject;\n  return p;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n  return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { keyframes, styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Ripple from \"./Ripple.js\";\nimport touchRippleClasses from \"./touchRippleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`;\nconst exitKeyframe = keyframes`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`;\nconst pulsateKeyframe = keyframes`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`;\nexport const TouchRippleRoot = styled('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})`\n  opacity: 0;\n  position: absolute;\n\n  &.${touchRippleClasses.rippleVisible} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${enterKeyframe};\n    animation-duration: ${DURATION}ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n  }\n\n  &.${touchRippleClasses.ripplePulsate} {\n    animation-duration: ${({\n  theme\n}) => theme.transitions.duration.shorter}ms;\n  }\n\n  & .${touchRippleClasses.child} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${touchRippleClasses.childLeaving} {\n    opacity: 0;\n    animation-name: ${exitKeyframe};\n    animation-duration: ${DURATION}ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n  }\n\n  & .${touchRippleClasses.childPulsate} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${pulsateKeyframe};\n    animation-duration: 2500ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`;\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n    center: centerProp = false,\n    classes = {},\n    className,\n    ...other\n  } = props;\n  const [ripples, setRipples] = React.useState([]);\n  const nextKey = React.useRef(0);\n  const rippleCallback = React.useRef(null);\n  React.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = React.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = useTimeout();\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = React.useRef(null);\n  const container = React.useRef(null);\n  const startCommit = React.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n      classes: {\n        ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n        rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n        ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n        child: clsx(classes.child, touchRippleClasses.child),\n        childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n        childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if (event?.type === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if (event?.type === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event?.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        // We have to make a tradeoff with this delay value.\n        startTimer.start(DELAY_RIPPLE, () => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        });\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit, startTimer]);\n  const pulsate = React.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = React.useCallback((event, cb) => {\n    startTimer.clear();\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if (event?.type === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.start(0, () => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, [startTimer]);\n  React.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/_jsx(TouchRippleRoot, {\n    className: clsx(touchRippleClasses.root, classes.root, className),\n    ref: container,\n    ...other,\n    children: /*#__PURE__*/_jsx(TransitionGroup, {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n  const {\n    className,\n    classes,\n    pulsate = false,\n    rippleX,\n    rippleY,\n    rippleSize,\n    in: inProp,\n    onExited,\n    timeout\n  } = props;\n  const [leaving, setLeaving] = React.useState(false);\n  const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n  const rippleStyles = {\n    width: rippleSize,\n    height: rippleSize,\n    top: -(rippleSize / 2) + rippleY,\n    left: -(rippleSize / 2) + rippleX\n  };\n  const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n  if (!inProp && !leaving) {\n    setLeaving(true);\n  }\n  React.useEffect(() => {\n    if (!inProp && onExited != null) {\n      // react-transition-group#onExited\n      const timeoutId = setTimeout(onExited, timeout);\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    }\n    return undefined;\n  }, [onExited, inProp, timeout]);\n  return /*#__PURE__*/_jsx(\"span\", {\n    className: rippleClassName,\n    style: rippleStyles,\n    children: /*#__PURE__*/_jsx(\"span\", {\n      className: childClassName\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes /* remove-proptypes */ = {\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object.isRequired,\n  className: PropTypes.string,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  onExited: PropTypes.func,\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: PropTypes.bool,\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: PropTypes.number,\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: PropTypes.number,\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: PropTypes.number,\n  /**\n   * exit delay\n   */\n  timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useLazyRipple from \"../useLazyRipple/index.js\";\nimport TouchRipple from \"./TouchRipple.js\";\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from \"./buttonBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    focusVisible,\n    focusVisibleClassName,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n  };\n  const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n  if (focusVisible && focusVisibleClassName) {\n    composedClasses.root += ` ${focusVisibleClassName}`;\n  }\n  return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n  name: 'MuiButtonBase',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'inline-flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  WebkitTapHighlightColor: 'transparent',\n  backgroundColor: 'transparent',\n  // Reset default value\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  border: 0,\n  margin: 0,\n  // Remove the margin in Safari\n  borderRadius: 0,\n  padding: 0,\n  // Remove the padding in Firefox\n  cursor: 'pointer',\n  userSelect: 'none',\n  verticalAlign: 'middle',\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  textDecoration: 'none',\n  // So we take precedent over the style of a native <a /> element.\n  color: 'inherit',\n  '&::-moz-focus-inner': {\n    borderStyle: 'none' // Remove Firefox dotted outline.\n  },\n  [`&.${buttonBaseClasses.disabled}`]: {\n    pointerEvents: 'none',\n    // Disable link interactions\n    cursor: 'default'\n  },\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiButtonBase'\n  });\n  const {\n    action,\n    centerRipple = false,\n    children,\n    className,\n    component = 'button',\n    disabled = false,\n    disableRipple = false,\n    disableTouchRipple = false,\n    focusRipple = false,\n    focusVisibleClassName,\n    LinkComponent = 'a',\n    onBlur,\n    onClick,\n    onContextMenu,\n    onDragLeave,\n    onFocus,\n    onFocusVisible,\n    onKeyDown,\n    onKeyUp,\n    onMouseDown,\n    onMouseLeave,\n    onMouseUp,\n    onTouchEnd,\n    onTouchMove,\n    onTouchStart,\n    tabIndex = 0,\n    TouchRippleProps,\n    touchRippleRef,\n    type,\n    ...other\n  } = props;\n  const buttonRef = React.useRef(null);\n  const ripple = useLazyRipple();\n  const handleRippleRef = useForkRef(ripple.ref, touchRippleRef);\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  if (disabled && focusVisible) {\n    setFocusVisible(false);\n  }\n  React.useImperativeHandle(action, () => ({\n    focusVisible: () => {\n      setFocusVisible(true);\n      buttonRef.current.focus();\n    }\n  }), []);\n  const enableTouchRipple = ripple.shouldMount && !disableRipple && !disabled;\n  React.useEffect(() => {\n    if (focusVisible && focusRipple && !disableRipple) {\n      ripple.pulsate();\n    }\n  }, [disableRipple, focusRipple, focusVisible, ripple]);\n  function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n    return useEventCallback(event => {\n      if (eventCallback) {\n        eventCallback(event);\n      }\n      const ignore = skipRippleAction;\n      if (!ignore) {\n        ripple[rippleAction](event);\n      }\n      return true;\n    });\n  }\n  const handleMouseDown = useRippleHandler('start', onMouseDown);\n  const handleContextMenu = useRippleHandler('stop', onContextMenu);\n  const handleDragLeave = useRippleHandler('stop', onDragLeave);\n  const handleMouseUp = useRippleHandler('stop', onMouseUp);\n  const handleMouseLeave = useRippleHandler('stop', event => {\n    if (focusVisible) {\n      event.preventDefault();\n    }\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n  });\n  const handleTouchStart = useRippleHandler('start', onTouchStart);\n  const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n  const handleTouchMove = useRippleHandler('stop', onTouchMove);\n  const handleBlur = useRippleHandler('stop', event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  }, false);\n  const handleFocus = useEventCallback(event => {\n    // Fix for https://github.com/facebook/react/issues/7769\n    if (!buttonRef.current) {\n      buttonRef.current = event.currentTarget;\n    }\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n      if (onFocusVisible) {\n        onFocusVisible(event);\n      }\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  });\n  const isNonNativeButton = () => {\n    const button = buttonRef.current;\n    return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n  };\n  const handleKeyDown = useEventCallback(event => {\n    // Check if key is already down to avoid repeats being counted as multiple activations\n    if (focusRipple && !event.repeat && focusVisible && event.key === ' ') {\n      ripple.stop(event, () => {\n        ripple.start(event);\n      });\n    }\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n      event.preventDefault();\n      if (onClick) {\n        onClick(event);\n      }\n    }\n  });\n  const handleKeyUp = useEventCallback(event => {\n    // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n    // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n    if (focusRipple && event.key === ' ' && focusVisible && !event.defaultPrevented) {\n      ripple.stop(event, () => {\n        ripple.pulsate(event);\n      });\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n      onClick(event);\n    }\n  });\n  let ComponentProp = component;\n  if (ComponentProp === 'button' && (other.href || other.to)) {\n    ComponentProp = LinkComponent;\n  }\n  const buttonProps = {};\n  if (ComponentProp === 'button') {\n    buttonProps.type = type === undefined ? 'button' : type;\n    buttonProps.disabled = disabled;\n  } else {\n    if (!other.href && !other.to) {\n      buttonProps.role = 'button';\n    }\n    if (disabled) {\n      buttonProps['aria-disabled'] = disabled;\n    }\n  }\n  const handleRef = useForkRef(ref, buttonRef);\n  const ownerState = {\n    ...props,\n    centerRipple,\n    component,\n    disabled,\n    disableRipple,\n    disableTouchRipple,\n    focusRipple,\n    tabIndex,\n    focusVisible\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(ButtonBaseRoot, {\n    as: ComponentProp,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    onBlur: handleBlur,\n    onClick: onClick,\n    onContextMenu: handleContextMenu,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    onMouseDown: handleMouseDown,\n    onMouseLeave: handleMouseLeave,\n    onMouseUp: handleMouseUp,\n    onDragLeave: handleDragLeave,\n    onTouchEnd: handleTouchEnd,\n    onTouchMove: handleTouchMove,\n    onTouchStart: handleTouchStart,\n    ref: handleRef,\n    tabIndex: disabled ? -1 : tabIndex,\n    type: type,\n    ...buttonProps,\n    ...other,\n    children: [children, enableTouchRipple ? /*#__PURE__*/_jsx(TouchRipple, {\n      ref: handleRippleRef,\n      center: centerRipple,\n      ...TouchRippleProps\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: refType,\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  /**\n   * The component used to render a link when the `href` prop is provided.\n   * @default 'a'\n   */\n  LinkComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onContextMenu: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onDragLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchEnd: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchMove: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchStart: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupButtonContext.displayName = 'ButtonGroupButtonContext';\n}\nexport default ButtonGroupButtonContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport CheckBoxOutlineBlankIcon from \"../internal/svg-icons/CheckBoxOutlineBlank.js\";\nimport CheckBoxIcon from \"../internal/svg-icons/CheckBox.js\";\nimport IndeterminateCheckBoxIcon from \"../internal/svg-icons/IndeterminateCheckBox.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport checkboxClasses, { getCheckboxUtilityClass } from \"./checkboxClasses.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    indeterminate,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`, `size${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the disabled and checked classes to the SwitchBase\n    ...composedClasses\n  };\n};\nconst CheckboxRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiCheckbox',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  variants: [{\n    props: {\n      color: 'default',\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n        color: (theme.vars || theme).palette[color].main\n      },\n      [`&.${checkboxClasses.disabled}`]: {\n        color: (theme.vars || theme).palette.action.disabled\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCheckbox'\n  });\n  const {\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon: iconProp = defaultIcon,\n    indeterminate = false,\n    indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n    inputProps,\n    size = 'medium',\n    disableRipple = false,\n    className,\n    ...other\n  } = props;\n  const icon = indeterminate ? indeterminateIconProp : iconProp;\n  const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n  const ownerState = {\n    ...props,\n    disableRipple,\n    color,\n    indeterminate,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CheckboxRoot, {\n    type: \"checkbox\",\n    inputProps: {\n      'data-indeterminate': indeterminate,\n      ...inputProps\n    },\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: icon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n      fontSize: indeterminateIcon.props.fontSize ?? size\n    }),\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other,\n    classes: classes\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <CheckBoxIcon />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <CheckBoxOutlineBlankIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the component appears indeterminate.\n   * This does not set the native input element to indeterminate due\n   * to inconsistent behavior across browsers.\n   * However, we set a `data-indeterminate` attribute on the `input`.\n   * @default false\n   */\n  indeterminate: PropTypes.bool,\n  /**\n   * The icon to display when the component is indeterminate.\n   * @default <IndeterminateCheckBoxIcon />\n   */\n  indeterminateIcon: PropTypes.node,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense checkbox styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Checkbox;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n  return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium']);\nexport default checkboxClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport CancelIcon from \"../internal/svg-icons/Cancel.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport unsupportedProp from \"../utils/unsupportedProp.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport chipClasses, { getChipUtilityClass } from \"./chipClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    size,\n    color,\n    iconColor,\n    onDelete,\n    clickable,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n    label: ['label', `label${capitalize(size)}`],\n    avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n    icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n    deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n  name: 'MuiChip',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      color,\n      iconColor,\n      clickable,\n      onDelete,\n      size,\n      variant\n    } = ownerState;\n    return [{\n      [`& .${chipClasses.avatar}`]: styles.avatar\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles.icon\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n    }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n  return {\n    maxWidth: '100%',\n    fontFamily: theme.typography.fontFamily,\n    fontSize: theme.typography.pxToRem(13),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 32,\n    color: (theme.vars || theme).palette.text.primary,\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    borderRadius: 32 / 2,\n    whiteSpace: 'nowrap',\n    transition: theme.transitions.create(['background-color', 'box-shadow']),\n    // reset cursor explicitly in case ButtonBase is used\n    cursor: 'unset',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    textDecoration: 'none',\n    border: 0,\n    // Remove `button` border\n    padding: 0,\n    // Remove `button` padding\n    verticalAlign: 'middle',\n    boxSizing: 'border-box',\n    [`&.${chipClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`& .${chipClasses.avatar}`]: {\n      marginLeft: 5,\n      marginRight: -6,\n      width: 24,\n      height: 24,\n      color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n      fontSize: theme.typography.pxToRem(12)\n    },\n    [`& .${chipClasses.avatarColorPrimary}`]: {\n      color: (theme.vars || theme).palette.primary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    },\n    [`& .${chipClasses.avatarColorSecondary}`]: {\n      color: (theme.vars || theme).palette.secondary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.secondary.dark\n    },\n    [`& .${chipClasses.avatarSmall}`]: {\n      marginLeft: 4,\n      marginRight: -4,\n      width: 18,\n      height: 18,\n      fontSize: theme.typography.pxToRem(10)\n    },\n    [`& .${chipClasses.icon}`]: {\n      marginLeft: 5,\n      marginRight: -6\n    },\n    [`& .${chipClasses.deleteIcon}`]: {\n      WebkitTapHighlightColor: 'transparent',\n      color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : alpha(theme.palette.text.primary, 0.26),\n      fontSize: 22,\n      cursor: 'pointer',\n      margin: '0 5px 0 -6px',\n      '&:hover': {\n        color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    },\n    variants: [{\n      props: {\n        size: 'small'\n      },\n      style: {\n        height: 24,\n        [`& .${chipClasses.icon}`]: {\n          fontSize: 18,\n          marginLeft: 4,\n          marginRight: -4\n        },\n        [`& .${chipClasses.deleteIcon}`]: {\n          fontSize: 16,\n          marginRight: 4,\n          marginLeft: -4\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => {\n      return {\n        props: {\n          color\n        },\n        style: {\n          backgroundColor: (theme.vars || theme).palette[color].main,\n          color: (theme.vars || theme).palette[color].contrastText,\n          [`& .${chipClasses.deleteIcon}`]: {\n            color: theme.vars ? `rgba(${theme.vars.palette[color].contrastTextChannel} / 0.7)` : alpha(theme.palette[color].contrastText, 0.7),\n            '&:hover, &:active': {\n              color: (theme.vars || theme).palette[color].contrastText\n            }\n          }\n        }\n      };\n    }), {\n      props: props => props.iconColor === props.color,\n      style: {\n        [`& .${chipClasses.icon}`]: {\n          color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n        }\n      }\n    }, {\n      props: props => props.iconColor === props.color && props.color !== 'default',\n      style: {\n        [`& .${chipClasses.icon}`]: {\n          color: 'inherit'\n        }\n      }\n    }, {\n      props: {\n        onDelete: true\n      },\n      style: {\n        [`&.${chipClasses.focusVisible}`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark'])).map(([color]) => {\n      return {\n        props: {\n          color,\n          onDelete: true\n        },\n        style: {\n          [`&.${chipClasses.focusVisible}`]: {\n            background: (theme.vars || theme).palette[color].dark\n          }\n        }\n      };\n    }), {\n      props: {\n        clickable: true\n      },\n      style: {\n        userSelect: 'none',\n        WebkitTapHighlightColor: 'transparent',\n        cursor: 'pointer',\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n        },\n        [`&.${chipClasses.focusVisible}`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n        },\n        '&:active': {\n          boxShadow: (theme.vars || theme).shadows[1]\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark'])).map(([color]) => ({\n      props: {\n        color,\n        clickable: true\n      },\n      style: {\n        [`&:hover, &.${chipClasses.focusVisible}`]: {\n          backgroundColor: (theme.vars || theme).palette[color].dark\n        }\n      }\n    })), {\n      props: {\n        variant: 'outlined'\n      },\n      style: {\n        backgroundColor: 'transparent',\n        border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n        [`&.${chipClasses.clickable}:hover`]: {\n          backgroundColor: (theme.vars || theme).palette.action.hover\n        },\n        [`&.${chipClasses.focusVisible}`]: {\n          backgroundColor: (theme.vars || theme).palette.action.focus\n        },\n        [`& .${chipClasses.avatar}`]: {\n          marginLeft: 4\n        },\n        [`& .${chipClasses.avatarSmall}`]: {\n          marginLeft: 2\n        },\n        [`& .${chipClasses.icon}`]: {\n          marginLeft: 4\n        },\n        [`& .${chipClasses.iconSmall}`]: {\n          marginLeft: 2\n        },\n        [`& .${chipClasses.deleteIcon}`]: {\n          marginRight: 5\n        },\n        [`& .${chipClasses.deleteIconSmall}`]: {\n          marginRight: 3\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()) // no need to check for mainChannel as it's calculated from main\n    .map(([color]) => ({\n      props: {\n        variant: 'outlined',\n        color\n      },\n      style: {\n        color: (theme.vars || theme).palette[color].main,\n        border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.7)` : alpha(theme.palette[color].main, 0.7)}`,\n        [`&.${chipClasses.clickable}:hover`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n        },\n        [`&.${chipClasses.focusVisible}`]: {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[color].main, theme.palette.action.focusOpacity)\n        },\n        [`& .${chipClasses.deleteIcon}`]: {\n          color: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.7)` : alpha(theme.palette[color].main, 0.7),\n          '&:hover, &:active': {\n            color: (theme.vars || theme).palette[color].main\n          }\n        }\n      }\n    }))]\n  };\n}));\nconst ChipLabel = styled('span', {\n  name: 'MuiChip',\n  slot: 'Label',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      size\n    } = ownerState;\n    return [styles.label, styles[`label${capitalize(size)}`]];\n  }\n})({\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  paddingLeft: 12,\n  paddingRight: 12,\n  whiteSpace: 'nowrap',\n  variants: [{\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      paddingLeft: 11,\n      paddingRight: 11\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      paddingLeft: 8,\n      paddingRight: 8\n    }\n  }, {\n    props: {\n      size: 'small',\n      variant: 'outlined'\n    },\n    style: {\n      paddingLeft: 7,\n      paddingRight: 7\n    }\n  }]\n});\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n  return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiChip'\n  });\n  const {\n    avatar: avatarProp,\n    className,\n    clickable: clickableProp,\n    color = 'default',\n    component: ComponentProp,\n    deleteIcon: deleteIconProp,\n    disabled = false,\n    icon: iconProp,\n    label,\n    onClick,\n    onDelete,\n    onKeyDown,\n    onKeyUp,\n    size = 'medium',\n    variant = 'filled',\n    tabIndex,\n    skipFocusWhenDisabled = false,\n    // TODO v6: Rename to `focusableWhenDisabled`.\n    ...other\n  } = props;\n  const chipRef = React.useRef(null);\n  const handleRef = useForkRef(chipRef, ref);\n  const handleDeleteIconClick = event => {\n    // Stop the event from bubbling up to the `Chip`\n    event.stopPropagation();\n    if (onDelete) {\n      onDelete(event);\n    }\n  };\n  const handleKeyDown = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n      // Will be handled in keyUp, otherwise some browsers\n      // might init navigation\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleKeyUp = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target) {\n      if (onDelete && isDeleteKeyboardEvent(event)) {\n        onDelete(event);\n      }\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n  };\n  const clickable = clickableProp !== false && onClick ? true : clickableProp;\n  const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n  const ownerState = {\n    ...props,\n    component,\n    disabled,\n    size,\n    color,\n    iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n    onDelete: !!onDelete,\n    clickable,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const moreProps = component === ButtonBase ? {\n    component: ComponentProp || 'div',\n    focusVisibleClassName: classes.focusVisible,\n    ...(onDelete && {\n      disableRipple: true\n    })\n  } : {};\n  let deleteIcon = null;\n  if (onDelete) {\n    deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? (/*#__PURE__*/React.cloneElement(deleteIconProp, {\n      className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    })) : /*#__PURE__*/_jsx(CancelIcon, {\n      className: clsx(classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    });\n  }\n  let avatar = null;\n  if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n    avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n      className: clsx(classes.avatar, avatarProp.props.className)\n    });\n  }\n  let icon = null;\n  if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n    icon = /*#__PURE__*/React.cloneElement(iconProp, {\n      className: clsx(classes.icon, iconProp.props.className)\n    });\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (avatar && icon) {\n      console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(ChipRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    disabled: clickable && disabled ? true : undefined,\n    onClick: onClick,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    ref: handleRef,\n    tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n    ownerState: ownerState,\n    ...moreProps,\n    ...other,\n    children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n      className: clsx(classes.label),\n      ownerState: ownerState,\n      children: label\n    }), deleteIcon]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.element,\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the chip will appear clickable, and will raise when pressed,\n   * even if the onClick prop is not defined.\n   * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n   * This can be used, for example,\n   * along with the component prop to indicate an anchor Chip is clickable.\n   * Note: this controls the UI and does not affect the onClick event.\n   */\n  clickable: PropTypes.bool,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Override the default delete icon element. Shown only if `onDelete` is set.\n   */\n  deleteIcon: PropTypes.element,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Icon element.\n   */\n  icon: PropTypes.element,\n  /**\n   * The content of the component.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the delete icon is clicked.\n   * If set, the delete icon will be shown.\n   */\n  onDelete: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * If `true`, allows the disabled chip to escape focus.\n   * If `false`, allows the disabled chip to receive focus.\n   * @default false\n   */\n  skipFocusWhenDisabled: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The variant to use.\n   * @default 'filled'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n  return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorDefault', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport capitalize from \"../utils/capitalize.js\";\nimport Modal from \"../Modal/index.js\";\nimport Fade from \"../Fade/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport dialogClasses, { getDialogUtilityClass } from \"./dialogClasses.js\";\nimport DialogContext from \"./DialogContext.js\";\nimport Backdrop from \"../Backdrop/index.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n  name: 'MuiDialog',\n  slot: 'Backdrop',\n  overrides: (props, styles) => styles.backdrop\n})({\n  // Improve scrollable dialog support.\n  zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    scroll,\n    maxWidth,\n    fullWidth,\n    fullScreen\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    container: ['container', `scroll${capitalize(scroll)}`],\n    paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n  };\n  return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n  name: 'MuiDialog',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  '@media print': {\n    // Use !important to override the Modal inline-style.\n    position: 'absolute !important'\n  }\n});\nconst DialogContainer = styled('div', {\n  name: 'MuiDialog',\n  slot: 'Container',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n  }\n})({\n  height: '100%',\n  '@media print': {\n    height: 'auto'\n  },\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  variants: [{\n    props: {\n      scroll: 'paper'\n    },\n    style: {\n      display: 'flex',\n      justifyContent: 'center',\n      alignItems: 'center'\n    }\n  }, {\n    props: {\n      scroll: 'body'\n    },\n    style: {\n      overflowY: 'auto',\n      overflowX: 'hidden',\n      textAlign: 'center',\n      '&::after': {\n        content: '\"\"',\n        display: 'inline-block',\n        verticalAlign: 'middle',\n        height: '100%',\n        width: '0'\n      }\n    }\n  }]\n});\nconst DialogPaper = styled(Paper, {\n  name: 'MuiDialog',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  margin: 32,\n  position: 'relative',\n  overflowY: 'auto',\n  '@media print': {\n    overflowY: 'visible',\n    boxShadow: 'none'\n  },\n  variants: [{\n    props: {\n      scroll: 'paper'\n    },\n    style: {\n      display: 'flex',\n      flexDirection: 'column',\n      maxHeight: 'calc(100% - 64px)'\n    }\n  }, {\n    props: {\n      scroll: 'body'\n    },\n    style: {\n      display: 'inline-block',\n      verticalAlign: 'middle',\n      textAlign: 'initial'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.maxWidth,\n    style: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }, {\n    props: {\n      maxWidth: 'xs'\n    },\n    style: {\n      maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n      [`&.${dialogClasses.paperScrollBody}`]: {\n        [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n          maxWidth: 'calc(100% - 64px)'\n        }\n      }\n    }\n  }, ...Object.keys(theme.breakpoints.values).filter(maxWidth => maxWidth !== 'xs').map(maxWidth => ({\n    props: {\n      maxWidth\n    },\n    style: {\n      maxWidth: `${theme.breakpoints.values[maxWidth]}${theme.breakpoints.unit}`,\n      [`&.${dialogClasses.paperScrollBody}`]: {\n        [theme.breakpoints.down(theme.breakpoints.values[maxWidth] + 32 * 2)]: {\n          maxWidth: 'calc(100% - 64px)'\n        }\n      }\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.fullWidth,\n    style: {\n      width: 'calc(100% - 64px)'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.fullScreen,\n    style: {\n      margin: 0,\n      width: '100%',\n      maxWidth: '100%',\n      height: '100%',\n      maxHeight: 'none',\n      borderRadius: 0,\n      [`&.${dialogClasses.paperScrollBody}`]: {\n        margin: 0,\n        maxWidth: '100%'\n      }\n    }\n  }]\n})));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialog'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    'aria-describedby': ariaDescribedby,\n    'aria-labelledby': ariaLabelledbyProp,\n    BackdropComponent,\n    BackdropProps,\n    children,\n    className,\n    disableEscapeKeyDown = false,\n    fullScreen = false,\n    fullWidth = false,\n    maxWidth = 'sm',\n    onBackdropClick,\n    onClick,\n    onClose,\n    open,\n    PaperComponent = Paper,\n    PaperProps = {},\n    scroll = 'paper',\n    TransitionComponent = Fade,\n    transitionDuration = defaultTransitionDuration,\n    TransitionProps,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableEscapeKeyDown,\n    fullScreen,\n    fullWidth,\n    maxWidth,\n    scroll\n  };\n  const classes = useUtilityClasses(ownerState);\n  const backdropClick = React.useRef();\n  const handleMouseDown = event => {\n    // We don't want to close the dialog when clicking the dialog content.\n    // Make sure the event starts and ends on the same DOM element.\n    backdropClick.current = event.target === event.currentTarget;\n  };\n  const handleBackdropClick = event => {\n    if (onClick) {\n      onClick(event);\n    }\n\n    // Ignore the events not coming from the \"backdrop\".\n    if (!backdropClick.current) {\n      return;\n    }\n    backdropClick.current = null;\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const ariaLabelledby = useId(ariaLabelledbyProp);\n  const dialogContextValue = React.useMemo(() => {\n    return {\n      titleId: ariaLabelledby\n    };\n  }, [ariaLabelledby]);\n  return /*#__PURE__*/_jsx(DialogRoot, {\n    className: clsx(classes.root, className),\n    closeAfterTransition: true,\n    components: {\n      Backdrop: DialogBackdrop\n    },\n    componentsProps: {\n      backdrop: {\n        transitionDuration,\n        as: BackdropComponent,\n        ...BackdropProps\n      }\n    },\n    disableEscapeKeyDown: disableEscapeKeyDown,\n    onClose: onClose,\n    open: open,\n    ref: ref,\n    onClick: handleBackdropClick,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(TransitionComponent, {\n      appear: true,\n      in: open,\n      timeout: transitionDuration,\n      role: \"presentation\",\n      ...TransitionProps,\n      children: /*#__PURE__*/_jsx(DialogContainer, {\n        className: clsx(classes.container),\n        onMouseDown: handleMouseDown,\n        ownerState: ownerState,\n        children: /*#__PURE__*/_jsx(DialogPaper, {\n          as: PaperComponent,\n          elevation: 24,\n          role: \"dialog\",\n          \"aria-describedby\": ariaDescribedby,\n          \"aria-labelledby\": ariaLabelledby,\n          ...PaperProps,\n          className: clsx(classes.paper, PaperProps.className),\n          ownerState: ownerState,\n          children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n            value: dialogContextValue,\n            children: children\n          })\n        })\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The id(s) of the element(s) that describe the dialog.\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * The id(s) of the element(s) that label the dialog.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * Dialog children, usually the included sub-components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * If `true`, the dialog is full-screen.\n   * @default false\n   */\n  fullScreen: PropTypes.bool,\n  /**\n   * If `true`, the dialog stretches to `maxWidth`.\n   *\n   * Notice that the dialog width grow is limited by the default margin.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Determine the max-width of the dialog.\n   * The dialog width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'sm'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The component used to render the body of the dialog.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Paper`](https://mui.com/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Determine the container for scrolling the dialog.\n   * @default 'paper'\n   */\n  scroll: PropTypes.oneOf(['body', 'paper']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n  return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDialogActionsUtilityClass } from \"./dialogActionsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\nconst DialogActionsRoot = styled('div', {\n  name: 'MuiDialogActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  justifyContent: 'flex-end',\n  flex: '0 0 auto',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableSpacing,\n    style: {\n      '& > :not(style) ~ :not(style)': {\n        marginLeft: 8\n      }\n    }\n  }]\n});\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogActions'\n  });\n  const {\n    className,\n    disableSpacing = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableSpacing\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DialogActionsRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDialogContentUtilityClass } from \"./dialogContentClasses.js\";\nimport dialogTitleClasses from \"../DialogTitle/dialogTitleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    dividers\n  } = ownerState;\n  const slots = {\n    root: ['root', dividers && 'dividers']\n  };\n  return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\nconst DialogContentRoot = styled('div', {\n  name: 'MuiDialogContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.dividers && styles.dividers];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  flex: '1 1 auto',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  overflowY: 'auto',\n  padding: '20px 24px',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.dividers,\n    style: {\n      padding: '16px 24px',\n      borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.dividers,\n    style: {\n      [`.${dialogTitleClasses.root} + &`]: {\n        paddingTop: 0\n      }\n    }\n  }]\n})));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogContent'\n  });\n  const {\n    className,\n    dividers = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    dividers\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DialogContentRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Display the top and bottom dividers.\n   * @default false\n   */\n  dividers: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogContentUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport { getDialogContentTextUtilityClass } from \"./dialogContentTextClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  const composedClasses = composeClasses(slots, getDialogContentTextUtilityClass, classes);\n  return {\n    ...classes,\n    // forward classes to the Typography\n    ...composedClasses\n  };\n};\nconst DialogContentTextRoot = styled(Typography, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiDialogContentText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nconst DialogContentText = /*#__PURE__*/React.forwardRef(function DialogContentText(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogContentText'\n  });\n  const {\n    children,\n    className,\n    ...ownerState\n  } = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DialogContentTextRoot, {\n    component: \"p\",\n    variant: \"body1\",\n    color: \"textSecondary\",\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ...props,\n    classes: classes\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContentText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContentText;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogContentTextUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from \"../Typography/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDialogTitleUtilityClass } from \"./dialogTitleClasses.js\";\nimport DialogContext from \"../Dialog/DialogContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getDialogTitleUtilityClass, classes);\n};\nconst DialogTitleRoot = styled(Typography, {\n  name: 'MuiDialogTitle',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: '16px 24px',\n  flex: '0 0 auto'\n});\nconst DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogTitle'\n  });\n  const {\n    className,\n    id: idProp,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const {\n    titleId = idProp\n  } = React.useContext(DialogContext);\n  return /*#__PURE__*/_jsx(DialogTitleRoot, {\n    component: \"h2\",\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    variant: \"h6\",\n    id: idProp ?? titleId,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogTitle.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  id: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogTitle;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDividerUtilityClass } from \"./dividerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    absolute,\n    children,\n    classes,\n    flexItem,\n    light,\n    orientation,\n    textAlign,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n    wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n  };\n  return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n  name: 'MuiDivider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  margin: 0,\n  // Reset browser default style.\n  flexShrink: 0,\n  borderWidth: 0,\n  borderStyle: 'solid',\n  borderColor: (theme.vars || theme).palette.divider,\n  borderBottomWidth: 'thin',\n  variants: [{\n    props: {\n      absolute: true\n    },\n    style: {\n      position: 'absolute',\n      bottom: 0,\n      left: 0,\n      width: '100%'\n    }\n  }, {\n    props: {\n      light: true\n    },\n    style: {\n      borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n    }\n  }, {\n    props: {\n      variant: 'inset'\n    },\n    style: {\n      marginLeft: 72\n    }\n  }, {\n    props: {\n      variant: 'middle',\n      orientation: 'horizontal'\n    },\n    style: {\n      marginLeft: theme.spacing(2),\n      marginRight: theme.spacing(2)\n    }\n  }, {\n    props: {\n      variant: 'middle',\n      orientation: 'vertical'\n    },\n    style: {\n      marginTop: theme.spacing(1),\n      marginBottom: theme.spacing(1)\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      height: '100%',\n      borderBottomWidth: 0,\n      borderRightWidth: 'thin'\n    }\n  }, {\n    props: {\n      flexItem: true\n    },\n    style: {\n      alignSelf: 'stretch',\n      height: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.children,\n    style: {\n      display: 'flex',\n      whiteSpace: 'nowrap',\n      textAlign: 'center',\n      border: 0,\n      borderTopStyle: 'solid',\n      borderLeftStyle: 'solid',\n      '&::before, &::after': {\n        content: '\"\"',\n        alignSelf: 'center'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.children && ownerState.orientation !== 'vertical',\n    style: {\n      '&::before, &::after': {\n        width: '100%',\n        borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n        borderTopStyle: 'inherit'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.orientation === 'vertical' && ownerState.children,\n    style: {\n      flexDirection: 'column',\n      '&::before, &::after': {\n        height: '100%',\n        borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n        borderLeftStyle: 'inherit'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical',\n    style: {\n      '&::before': {\n        width: '90%'\n      },\n      '&::after': {\n        width: '10%'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical',\n    style: {\n      '&::before': {\n        width: '10%'\n      },\n      '&::after': {\n        width: '90%'\n      }\n    }\n  }]\n})));\nconst DividerWrapper = styled('span', {\n  name: 'MuiDivider',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingRight: `calc(${theme.spacing(1)} * 1.2)`,\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n      paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n    }\n  }]\n})));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDivider'\n  });\n  const {\n    absolute = false,\n    children,\n    className,\n    orientation = 'horizontal',\n    component = children || orientation === 'vertical' ? 'div' : 'hr',\n    flexItem = false,\n    light = false,\n    role = component !== 'hr' ? 'separator' : undefined,\n    textAlign = 'center',\n    variant = 'fullWidth',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    absolute,\n    component,\n    flexItem,\n    light,\n    orientation,\n    role,\n    textAlign,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DividerRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    role: role,\n    ref: ref,\n    ownerState: ownerState,\n    \"aria-orientation\": role === 'separator' && (component !== 'hr' || orientation === 'vertical') ? orientation : undefined,\n    ...other,\n    children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n      className: classes.wrapper,\n      ownerState: ownerState,\n      children: children\n    }) : null\n  });\n});\n\n/**\n * The following flag is used to ensure that this component isn't tabbable i.e.\n * does not get highlight/focus inside of MUI List.\n */\nif (Divider) {\n  Divider.muiSkipListHighlight = true;\n}\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Absolutely position the element.\n   * @default false\n   */\n  absolute: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, a vertical divider will have the correct height when used in flex container.\n   * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n   * @default false\n   */\n  flexItem: PropTypes.bool,\n  /**\n   * If `true`, the divider will have a lighter color.\n   * @default false\n   * @deprecated Use <Divider sx={{ opacity: 0.6 }} /> (or any opacity or color) instead. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  light: PropTypes.bool,\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The text alignment.\n   * @default 'center'\n   */\n  textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n  /**\n   * The variant to use.\n   * @default 'fullWidth'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n  return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { reflow, getTransitionProps } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n  const theme = useTheme();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    addEndListener,\n    appear = true,\n    children,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    style,\n    timeout = defaultTimeout,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const enableStrictModeCompat = true;\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, getReactNodeRef(children), ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    appear: appear,\n    in: inProp,\n    nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout,\n    ...other,\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, {\n        style: {\n          opacity: 0,\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n          ...styles[state],\n          ...style,\n          ...children.props.style\n        },\n        ref: handleRef,\n        ...childProps\n      });\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Fade;","'use client';\n\nimport * as React from 'react';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport InputBase from \"../InputBase/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport filledInputClasses, { getFilledInputUtilityClass } from \"./filledInputClasses.js\";\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseInput } from \"../InputBase/InputBase.js\";\nimport { capitalize } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline,\n    startAdornment,\n    endAdornment,\n    size,\n    hiddenLabel,\n    multiline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', size === 'small' && `size${capitalize(size)}`, hiddenLabel && 'hiddenLabel', multiline && 'multiline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n  return {\n    ...classes,\n    // forward classes to the InputBase\n    ...composedClasses\n  };\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiFilledInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return {\n    position: 'relative',\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${filledInputClasses.focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${filledInputClasses.disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    },\n    variants: [{\n      props: ({\n        ownerState\n      }) => !ownerState.disableUnderline,\n      style: {\n        '&::after': {\n          left: 0,\n          bottom: 0,\n          content: '\"\"',\n          position: 'absolute',\n          right: 0,\n          transform: 'scaleX(0)',\n          transition: theme.transitions.create('transform', {\n            duration: theme.transitions.duration.shorter,\n            easing: theme.transitions.easing.easeOut\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&.${filledInputClasses.focused}:after`]: {\n          // translateX(0) is a workaround for Safari transform scale bug\n          // See https://github.com/mui/material-ui/issues/31766\n          transform: 'scaleX(1) translateX(0)'\n        },\n        [`&.${filledInputClasses.error}`]: {\n          '&::before, &::after': {\n            borderBottomColor: (theme.vars || theme).palette.error.main\n          }\n        },\n        '&::before': {\n          borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n          left: 0,\n          bottom: 0,\n          content: '\"\\\\00a0\"',\n          position: 'absolute',\n          right: 0,\n          transition: theme.transitions.create('border-bottom-color', {\n            duration: theme.transitions.duration.shorter\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n          borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n        },\n        [`&.${filledInputClasses.disabled}:before`]: {\n          borderBottomStyle: 'dotted'\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()) // check all the used fields in the style below\n    .map(([color]) => ({\n      props: {\n        disableUnderline: false,\n        color\n      },\n      style: {\n        '&::after': {\n          borderBottom: `2px solid ${(theme.vars || theme).palette[color]?.main}`\n        }\n      }\n    })), {\n      props: ({\n        ownerState\n      }) => ownerState.startAdornment,\n      style: {\n        paddingLeft: 12\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.endAdornment,\n      style: {\n        paddingRight: 12\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.multiline,\n      style: {\n        padding: '25px 12px 8px'\n      }\n    }, {\n      props: ({\n        ownerState,\n        size\n      }) => ownerState.multiline && size === 'small',\n      style: {\n        paddingTop: 21,\n        paddingBottom: 4\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.multiline && ownerState.hiddenLabel,\n      style: {\n        paddingTop: 16,\n        paddingBottom: 17\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.multiline && ownerState.hiddenLabel && ownerState.size === 'small',\n      style: {\n        paddingTop: 8,\n        paddingBottom: 9\n      }\n    }]\n  };\n}));\nconst FilledInputInput = styled(InputBaseInput, {\n  name: 'MuiFilledInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12,\n  ...(!theme.vars && {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n      caretColor: theme.palette.mode === 'light' ? null : '#fff',\n      borderTopLeftRadius: 'inherit',\n      borderTopRightRadius: 'inherit'\n    }\n  }),\n  ...(theme.vars && {\n    '&:-webkit-autofill': {\n      borderTopLeftRadius: 'inherit',\n      borderTopRightRadius: 'inherit'\n    },\n    [theme.getColorSchemeSelector('dark')]: {\n      '&:-webkit-autofill': {\n        WebkitBoxShadow: '0 0 0 100px #266798 inset',\n        WebkitTextFillColor: '#fff',\n        caretColor: '#fff'\n      }\n    }\n  }),\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      paddingTop: 21,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hiddenLabel,\n    style: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.startAdornment,\n    style: {\n      paddingLeft: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.endAdornment,\n    style: {\n      paddingRight: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hiddenLabel && ownerState.size === 'small',\n    style: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.multiline,\n    style: {\n      paddingTop: 0,\n      paddingBottom: 0,\n      paddingLeft: 0,\n      paddingRight: 0\n    }\n  }]\n})));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFilledInput'\n  });\n  const {\n    disableUnderline = false,\n    components = {},\n    componentsProps: componentsPropsProp,\n    fullWidth = false,\n    hiddenLabel,\n    // declare here to prevent spreading to DOM\n    inputComponent = 'input',\n    multiline = false,\n    slotProps,\n    slots = {},\n    type = 'text',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableUnderline,\n    fullWidth,\n    inputComponent,\n    multiline,\n    type\n  };\n  const classes = useUtilityClasses(props);\n  const filledInputComponentsProps = {\n    root: {\n      ownerState\n    },\n    input: {\n      ownerState\n    }\n  };\n  const componentsProps = slotProps ?? componentsPropsProp ? deepmerge(filledInputComponentsProps, slotProps ?? componentsPropsProp) : filledInputComponentsProps;\n  const RootSlot = slots.root ?? components.Root ?? FilledInputRoot;\n  const InputSlot = slots.input ?? components.Input ?? FilledInputInput;\n  return /*#__PURE__*/_jsx(InputBase, {\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    componentsProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type,\n    ...other,\n    classes: classes\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the input will not have an underline.\n   * @default false\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](https://mui.com/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nif (FilledInput) {\n  FilledInput.muiName = 'Input';\n}\nexport default FilledInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from \"../InputBase/index.js\";\nexport function getFilledInputUtilityClass(slot) {\n  return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = {\n  ...inputBaseClasses,\n  ...generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input', 'adornedStart', 'adornedEnd', 'sizeSmall', 'multiline', 'hiddenLabel'])\n};\nexport default filledInputClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { isFilled, isAdornedStart } from \"../InputBase/utils.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport FormControlContext from \"./FormControlContext.js\";\nimport { getFormControlUtilityClasses } from \"./formControlClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    margin,\n    fullWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n  };\n  return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n  name: 'MuiFormControl',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return {\n      ...styles.root,\n      ...styles[`margin${capitalize(ownerState.margin)}`],\n      ...(ownerState.fullWidth && styles.fullWidth)\n    };\n  }\n})({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  // Reset fieldset default style.\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top',\n  // Fix alignment issue on Safari.\n  variants: [{\n    props: {\n      margin: 'normal'\n    },\n    style: {\n      marginTop: 16,\n      marginBottom: 8\n    }\n  }, {\n    props: {\n      margin: 'dense'\n    },\n    style: {\n      marginTop: 8,\n      marginBottom: 4\n    }\n  }, {\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }]\n});\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n *   <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n *   <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n *   <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormControl'\n  });\n  const {\n    children,\n    className,\n    color = 'primary',\n    component = 'div',\n    disabled = false,\n    error = false,\n    focused: visuallyFocused,\n    fullWidth = false,\n    hiddenLabel = false,\n    margin = 'none',\n    required = false,\n    size = 'medium',\n    variant = 'outlined',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    error,\n    fullWidth,\n    hiddenLabel,\n    margin,\n    required,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const [adornedStart, setAdornedStart] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialAdornedStart = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n        if (input && isAdornedStart(input.props)) {\n          initialAdornedStart = true;\n        }\n      });\n    }\n    return initialAdornedStart;\n  });\n  const [filled, setFilled] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialFilled = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n          initialFilled = true;\n        }\n      });\n    }\n    return initialFilled;\n  });\n  const [focusedState, setFocused] = React.useState(false);\n  if (disabled && focusedState) {\n    setFocused(false);\n  }\n  const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n  let registerEffect;\n  const registeredInput = React.useRef(false);\n  if (process.env.NODE_ENV !== 'production') {\n    registerEffect = () => {\n      if (registeredInput.current) {\n        console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n      }\n      registeredInput.current = true;\n      return () => {\n        registeredInput.current = false;\n      };\n    };\n  }\n  const childContext = React.useMemo(() => {\n    return {\n      adornedStart,\n      setAdornedStart,\n      color,\n      disabled,\n      error,\n      filled,\n      focused,\n      fullWidth,\n      hiddenLabel,\n      size,\n      onBlur: () => {\n        setFocused(false);\n      },\n      onEmpty: () => {\n        setFilled(false);\n      },\n      onFilled: () => {\n        setFilled(true);\n      },\n      onFocus: () => {\n        setFocused(true);\n      },\n      registerEffect,\n      required,\n      variant\n    };\n  }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(FormControlRoot, {\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the component will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","export default function formControlState({\n  props,\n  states,\n  muiFormControl\n}) {\n  return states.reduce((acc, state) => {\n    acc[state] = props[state];\n    if (muiFormControl) {\n      if (typeof props[state] === 'undefined') {\n        acc[state] = muiFormControl[state];\n      }\n    }\n    return acc;\n  }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from \"./FormControlContext.js\";\nexport default function useFormControl() {\n  return React.useContext(FormControlContext);\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useFormControl } from \"../FormControl/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport formControlLabelClasses, { getFormControlLabelUtilityClasses } from \"./formControlLabelClasses.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    labelPlacement,\n    error,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error', required && 'required'],\n    label: ['label', disabled && 'disabled'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return composeClasses(slots, getFormControlLabelUtilityClasses, classes);\n};\nexport const FormControlLabelRoot = styled('label', {\n  name: 'MuiFormControlLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${formControlLabelClasses.label}`]: styles.label\n    }, styles.root, styles[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-flex',\n  alignItems: 'center',\n  cursor: 'pointer',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  WebkitTapHighlightColor: 'transparent',\n  marginLeft: -11,\n  marginRight: 16,\n  // used for row presentation of radio/checkbox\n  [`&.${formControlLabelClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  [`& .${formControlLabelClasses.label}`]: {\n    [`&.${formControlLabelClasses.disabled}`]: {\n      color: (theme.vars || theme).palette.text.disabled\n    }\n  },\n  variants: [{\n    props: {\n      labelPlacement: 'start'\n    },\n    style: {\n      flexDirection: 'row-reverse',\n      marginRight: -11\n    }\n  }, {\n    props: {\n      labelPlacement: 'top'\n    },\n    style: {\n      flexDirection: 'column-reverse'\n    }\n  }, {\n    props: {\n      labelPlacement: 'bottom'\n    },\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: ({\n      labelPlacement\n    }) => labelPlacement === 'start' || labelPlacement === 'top' || labelPlacement === 'bottom',\n    style: {\n      marginLeft: 16 // used for row presentation of radio/checkbox\n    }\n  }]\n})));\nconst AsteriskComponent = styled('span', {\n  name: 'MuiFormControlLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(memoTheme(({\n  theme\n}) => ({\n  [`&.${formControlLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormControlLabel'\n  });\n  const {\n    checked,\n    className,\n    componentsProps = {},\n    control,\n    disabled: disabledProp,\n    disableTypography,\n    inputRef,\n    label: labelProp,\n    labelPlacement = 'end',\n    name,\n    onChange,\n    required: requiredProp,\n    slots = {},\n    slotProps = {},\n    value,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  const disabled = disabledProp ?? control.props.disabled ?? muiFormControl?.disabled;\n  const required = requiredProp ?? control.props.required;\n  const controlProps = {\n    disabled,\n    required\n  };\n  ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n    if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n      controlProps[key] = props[key];\n    }\n  });\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['error']\n  });\n  const ownerState = {\n    ...props,\n    disabled,\n    labelPlacement,\n    required,\n    error: fcs.error\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [TypographySlot, typographySlotProps] = useSlot('typography', {\n    elementType: Typography,\n    externalForwardedProps,\n    ownerState\n  });\n  let label = labelProp;\n  if (label != null && label.type !== Typography && !disableTypography) {\n    label = /*#__PURE__*/_jsx(TypographySlot, {\n      component: \"span\",\n      ...typographySlotProps,\n      className: clsx(classes.label, typographySlotProps?.className),\n      children: label\n    });\n  }\n  return /*#__PURE__*/_jsxs(FormControlLabelRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [/*#__PURE__*/React.cloneElement(control, controlProps), required ? /*#__PURE__*/_jsxs(\"div\", {\n      children: [label, /*#__PURE__*/_jsxs(AsteriskComponent, {\n        ownerState: ownerState,\n        \"aria-hidden\": true,\n        className: classes.asterisk,\n        children: [\"\\u2009\", '*']\n      })]\n    }) : label]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component appears selected.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    typography: PropTypes.object\n  }),\n  /**\n   * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n   */\n  control: PropTypes.element.isRequired,\n  /**\n   * If `true`, the control is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is rendered as it is passed without an additional typography node.\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * A text or an element to be used in an enclosing label element.\n   */\n  label: PropTypes.node,\n  /**\n   * The position of the label.\n   * @default 'end'\n   */\n  labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    typography: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    typography: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default FormControlLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error', 'required', 'asterisk']);\nexport default formControlLabelClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getFormGroupUtilityClass } from \"./formGroupClasses.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    row,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n  name: 'MuiFormGroup',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.row && styles.row];\n  }\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  flexWrap: 'wrap',\n  variants: [{\n    props: {\n      row: true\n    },\n    style: {\n      flexDirection: 'row'\n    }\n  }]\n});\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormGroup'\n  });\n  const {\n    className,\n    row = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['error']\n  });\n  const ownerState = {\n    ...props,\n    row,\n    error: fcs.error\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormGroupRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Display group of elements in a compact row.\n   * @default false\n   */\n  row: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormGroup;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","'use client';\n\nvar _span;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from \"./formHelperTextClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    contained,\n    size,\n    disabled,\n    error,\n    filled,\n    focused,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n  };\n  return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n  name: 'MuiFormHelperText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  ...theme.typography.caption,\n  textAlign: 'left',\n  marginTop: 3,\n  marginRight: 0,\n  marginBottom: 0,\n  marginLeft: 0,\n  [`&.${formHelperTextClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${formHelperTextClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      marginTop: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.contained,\n    style: {\n      marginLeft: 14,\n      marginRight: 14\n    }\n  }]\n})));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormHelperText'\n  });\n  const {\n    children,\n    className,\n    component = 'p',\n    disabled,\n    error,\n    filled,\n    focused,\n    margin,\n    required,\n    variant,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n  });\n  const ownerState = {\n    ...props,\n    component,\n    contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n    variant: fcs.variant,\n    size: fcs.size,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  };\n\n  // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184\n  delete ownerState.ownerState;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormHelperTextRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    ownerState: ownerState,\n    children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n    _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n      className: \"notranslate\",\n      children: \"\\u200B\"\n    })) : children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   *\n   * If `' '` is provided, the component reserves one line height for displaying a future message.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the helper text should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, helper text should be displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use focused classes key.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * If `true`, the helper text should use required classes key.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport formLabelClasses, { getFormLabelUtilityClasses } from \"./formLabelClasses.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    focused,\n    disabled,\n    error,\n    filled,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n  name: 'MuiFormLabel',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return {\n      ...styles.root,\n      ...(ownerState.color === 'secondary' && styles.colorSecondary),\n      ...(ownerState.filled && styles.filled)\n    };\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  ...theme.typography.body1,\n  lineHeight: '1.4375em',\n  padding: 0,\n  position: 'relative',\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${formLabelClasses.focused}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    props: {},\n    style: {\n      [`&.${formLabelClasses.disabled}`]: {\n        color: (theme.vars || theme).palette.text.disabled\n      },\n      [`&.${formLabelClasses.error}`]: {\n        color: (theme.vars || theme).palette.error.main\n      }\n    }\n  }]\n})));\nconst AsteriskComponent = styled('span', {\n  name: 'MuiFormLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(memoTheme(({\n  theme\n}) => ({\n  [`&.${formLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormLabel'\n  });\n  const {\n    children,\n    className,\n    color,\n    component = 'label',\n    disabled,\n    error,\n    filled,\n    focused,\n    required,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n  });\n  const ownerState = {\n    ...props,\n    color: fcs.color || 'primary',\n    component,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(FormLabelRoot, {\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n      ownerState: ownerState,\n      \"aria-hidden\": true,\n      className: classes.asterisk,\n      children: [\"\\u2009\", '*']\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the label should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the input of this label is focused (used by `FormGroup` components).\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst GridContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  GridContext.displayName = 'GridContext';\n}\nexport default GridContext;","'use client';\n\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport requirePropFactory from \"../utils/requirePropFactory.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nimport useTheme from \"../styles/useTheme.js\";\nimport GridContext from \"./GridContext.js\";\nimport gridClasses, { getGridUtilityClass } from \"./gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function generateGrid({\n  theme,\n  ownerState\n}) {\n  let size;\n  return theme.breakpoints.keys.reduce((globalStyles, breakpoint) => {\n    // Use side effect over immutability for better performance.\n    let styles = {};\n    if (ownerState[breakpoint]) {\n      size = ownerState[breakpoint];\n    }\n    if (!size) {\n      return globalStyles;\n    }\n    if (size === true) {\n      // For the auto layouting\n      styles = {\n        flexBasis: 0,\n        flexGrow: 1,\n        maxWidth: '100%'\n      };\n    } else if (size === 'auto') {\n      styles = {\n        flexBasis: 'auto',\n        flexGrow: 0,\n        flexShrink: 0,\n        maxWidth: 'none',\n        width: 'auto'\n      };\n    } else {\n      const columnsBreakpointValues = resolveBreakpointValues({\n        values: ownerState.columns,\n        breakpoints: theme.breakpoints.values\n      });\n      const columnValue = typeof columnsBreakpointValues === 'object' ? columnsBreakpointValues[breakpoint] : columnsBreakpointValues;\n      if (columnValue === undefined || columnValue === null) {\n        return globalStyles;\n      }\n      // Keep 7 significant numbers.\n      const width = `${Math.round(size / columnValue * 10e7) / 10e5}%`;\n      let more = {};\n      if (ownerState.container && ownerState.item && ownerState.columnSpacing !== 0) {\n        const themeSpacing = theme.spacing(ownerState.columnSpacing);\n        if (themeSpacing !== '0px') {\n          const fullWidth = `calc(${width} + ${themeSpacing})`;\n          more = {\n            flexBasis: fullWidth,\n            maxWidth: fullWidth\n          };\n        }\n      }\n\n      // Close to the bootstrap implementation:\n      // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n      styles = {\n        flexBasis: width,\n        flexGrow: 0,\n        maxWidth: width,\n        ...more\n      };\n    }\n\n    // No need for a media query for the first size.\n    if (theme.breakpoints.values[breakpoint] === 0) {\n      Object.assign(globalStyles, styles);\n    } else {\n      globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n    }\n    return globalStyles;\n  }, {});\n}\nexport function generateDirection({\n  theme,\n  ownerState\n}) {\n  const directionValues = resolveBreakpointValues({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  });\n  return handleBreakpoints({\n    theme\n  }, directionValues, propValue => {\n    const output = {\n      flexDirection: propValue\n    };\n    if (propValue.startsWith('column')) {\n      output[`& > .${gridClasses.item}`] = {\n        maxWidth: 'none'\n      };\n    }\n    return output;\n  });\n}\n\n/**\n * Extracts zero value breakpoint keys before a non-zero value breakpoint key.\n * @example { xs: 0, sm: 0, md: 2, lg: 0, xl: 0 } or [0, 0, 2, 0, 0]\n * @returns [xs, sm]\n */\nfunction extractZeroValueBreakpointKeys({\n  breakpoints,\n  values\n}) {\n  let nonZeroKey = '';\n  Object.keys(values).forEach(key => {\n    if (nonZeroKey !== '') {\n      return;\n    }\n    if (values[key] !== 0) {\n      nonZeroKey = key;\n    }\n  });\n  const sortedBreakpointKeysByValue = Object.keys(breakpoints).sort((a, b) => {\n    return breakpoints[a] - breakpoints[b];\n  });\n  return sortedBreakpointKeysByValue.slice(0, sortedBreakpointKeysByValue.indexOf(nonZeroKey));\n}\nexport function generateRowGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    rowSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && rowSpacing !== 0) {\n    const rowSpacingValues = resolveBreakpointValues({\n      values: rowSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof rowSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: rowSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, rowSpacingValues, (propValue, breakpoint) => {\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          marginTop: theme.spacing(-propValue),\n          [`& > .${gridClasses.item}`]: {\n            paddingTop: themeSpacing\n          }\n        };\n      }\n      if (zeroValueBreakpointKeys?.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        marginTop: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingTop: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function generateColumnGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    columnSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && columnSpacing !== 0) {\n    const columnSpacingValues = resolveBreakpointValues({\n      values: columnSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof columnSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: columnSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, columnSpacingValues, (propValue, breakpoint) => {\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        const negativeValue = theme.spacing(-propValue);\n        return {\n          width: `calc(100% + ${themeSpacing})`,\n          marginLeft: negativeValue,\n          [`& > .${gridClasses.item}`]: {\n            paddingLeft: themeSpacing\n          }\n        };\n      }\n      if (zeroValueBreakpointKeys?.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        width: '100%',\n        marginLeft: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingLeft: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function resolveSpacingStyles(spacing, breakpoints, styles = {}) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [styles[`spacing-xs-${String(spacing)}`]];\n  }\n  // in case of object `spacing`\n  const spacingStyles = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);\n    }\n  });\n  return spacingStyles;\n}\n\n// Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\nconst GridRoot = styled('div', {\n  name: 'MuiGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      container,\n      direction,\n      item,\n      spacing,\n      wrap,\n      zeroMinWidth,\n      breakpoints\n    } = ownerState;\n    let spacingStyles = [];\n\n    // in case of grid item\n    if (container) {\n      spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);\n    }\n    const breakpointsStyles = [];\n    breakpoints.forEach(breakpoint => {\n      const value = ownerState[breakpoint];\n      if (value) {\n        breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);\n      }\n    });\n    return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];\n  }\n})(\n// FIXME(romgrk): Can't use memoTheme here\n({\n  ownerState\n}) => ({\n  boxSizing: 'border-box',\n  ...(ownerState.container && {\n    display: 'flex',\n    flexWrap: 'wrap',\n    width: '100%'\n  }),\n  ...(ownerState.item && {\n    margin: 0 // For instance, it's useful when used with a `figure` element.\n  }),\n  ...(ownerState.zeroMinWidth && {\n    minWidth: 0\n  }),\n  ...(ownerState.wrap !== 'wrap' && {\n    flexWrap: ownerState.wrap\n  })\n}), generateDirection, generateRowGap, generateColumnGap, generateGrid);\nexport function resolveSpacingClasses(spacing, breakpoints) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [`spacing-xs-${String(spacing)}`];\n  }\n  // in case of object `spacing`\n  const classes = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      const className = `spacing-${breakpoint}-${String(value)}`;\n      classes.push(className);\n    }\n  });\n  return classes;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    container,\n    direction,\n    item,\n    spacing,\n    wrap,\n    zeroMinWidth,\n    breakpoints\n  } = ownerState;\n  let spacingClasses = [];\n\n  // in case of grid item\n  if (container) {\n    spacingClasses = resolveSpacingClasses(spacing, breakpoints);\n  }\n  const breakpointsClasses = [];\n  breakpoints.forEach(breakpoint => {\n    const value = ownerState[breakpoint];\n    if (value) {\n      breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);\n    }\n  });\n  const slots = {\n    root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]\n  };\n  return composeClasses(slots, getGridUtilityClass, classes);\n};\n\n/**\n * @deprecated Use the [`Grid2`](https://mui.com/material-ui/react-grid2/) component instead.\n */\nconst Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiGrid'\n  });\n  const {\n    breakpoints\n  } = useTheme();\n  const props = extendSxProp(themeProps);\n  const {\n    className,\n    columns: columnsProp,\n    columnSpacing: columnSpacingProp,\n    component = 'div',\n    container = false,\n    direction = 'row',\n    item = false,\n    rowSpacing: rowSpacingProp,\n    spacing = 0,\n    wrap = 'wrap',\n    zeroMinWidth = false,\n    ...other\n  } = props;\n  const rowSpacing = rowSpacingProp || spacing;\n  const columnSpacing = columnSpacingProp || spacing;\n  const columnsContext = React.useContext(GridContext);\n\n  // columns set with default breakpoint unit of 12\n  const columns = container ? columnsProp || 12 : columnsContext;\n  const breakpointsValues = {};\n  const otherFiltered = {\n    ...other\n  };\n  breakpoints.keys.forEach(breakpoint => {\n    if (other[breakpoint] != null) {\n      breakpointsValues[breakpoint] = other[breakpoint];\n      delete otherFiltered[breakpoint];\n    }\n  });\n  const ownerState = {\n    ...props,\n    columns,\n    container,\n    direction,\n    item,\n    rowSpacing,\n    columnSpacing,\n    wrap,\n    zeroMinWidth,\n    spacing,\n    ...breakpointsValues,\n    breakpoints: breakpoints.keys\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(GridContext.Provider, {\n    value: columns,\n    children: /*#__PURE__*/_jsx(GridRoot, {\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref,\n      ...otherFiltered\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grid.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The number of columns.\n   * @default 12\n   */\n  columns: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number, PropTypes.object]),\n  /**\n   * Defines the horizontal space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  columnSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component will have the flex *container* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  container: PropTypes.bool,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'row'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * If `true`, the component will have the flex *item* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  item: PropTypes.bool,\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `lg` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  lg: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `md` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  md: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the vertical space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  rowSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `sm` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  sm: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the space between the type `item` components.\n   * It can only be used on a type `container` component.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Defines the `flex-wrap` style property.\n   * It's applied for all screen sizes.\n   * @default 'wrap'\n   */\n  wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `xl` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  xl: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for all the screen sizes with the lowest priority.\n   * @default false\n   */\n  xs: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If `true`, it sets `min-width: 0` on the item.\n   * Refer to the limitations section of the documentation to better understand the use case.\n   * @default false\n   */\n  zeroMinWidth: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  const requireProp = requirePropFactory('Grid', Grid);\n  // eslint-disable-next-line no-useless-concat\n  Grid['propTypes' + ''] = {\n    // eslint-disable-next-line react/forbid-foreign-prop-types\n    ...Grid.propTypes,\n    direction: requireProp('container'),\n    lg: requireProp('item'),\n    md: requireProp('item'),\n    sm: requireProp('item'),\n    spacing: requireProp('container'),\n    wrap: requireProp('container'),\n    xs: requireProp('item'),\n    zeroMinWidth: requireProp('item')\n  };\n}\nexport default Grid;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getGridUtilityClass(slot) {\n  return generateUtilityClass('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item', 'zeroMinWidth',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default gridClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport { Transition } from 'react-transition-group';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { getTransitionProps, reflow } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n  return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: 'none'\n  }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n  const {\n    addEndListener,\n    appear = true,\n    children,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    style,\n    timeout = 'auto',\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const timer = useTimeout();\n  const autoTimeout = React.useRef();\n  const theme = useTheme();\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, getReactNodeRef(children), ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay,\n      easing: transitionTimingFunction\n    })].join(',');\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay: isWebKit154 ? delay : delay || duration * 0.333,\n      easing: transitionTimingFunction\n    })].join(',');\n    node.style.opacity = 0;\n    node.style.transform = getScale(0.75);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTimeout.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout === 'auto' ? null : timeout,\n    ...other,\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, {\n        style: {\n          opacity: 0,\n          transform: getScale(0.75),\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n          ...styles[state],\n          ...style,\n          ...children.props.style\n        },\n        ref: handleRef,\n        ...childProps\n      });\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nif (Grow) {\n  Grow.muiSupportAuto = true;\n}\nexport default Grow;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport iconButtonClasses, { getIconButtonUtilityClass } from \"./iconButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    color,\n    edge,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = styled(ButtonBase, {\n  name: 'MuiIconButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  textAlign: 'center',\n  flex: '0 0 auto',\n  fontSize: theme.typography.pxToRem(24),\n  padding: 8,\n  borderRadius: '50%',\n  color: (theme.vars || theme).palette.action.active,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: {\n      edge: 'start'\n    },\n    style: {\n      marginLeft: -12\n    }\n  }, {\n    props: {\n      edge: 'start',\n      size: 'small'\n    },\n    style: {\n      marginLeft: -3\n    }\n  }, {\n    props: {\n      edge: 'end'\n    },\n    style: {\n      marginRight: -12\n    }\n  }, {\n    props: {\n      edge: 'end',\n      size: 'small'\n    },\n    style: {\n      marginRight: -3\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${(theme.vars || theme).palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha((theme.vars || theme).palette[color].main, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  })), {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: 5,\n      fontSize: theme.typography.pxToRem(18)\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      padding: 12,\n      fontSize: theme.typography.pxToRem(28)\n    }\n  }],\n  [`&.${iconButtonClasses.disabled}`]: {\n    backgroundColor: 'transparent',\n    color: (theme.vars || theme).palette.action.disabled\n  }\n})));\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiIconButton'\n  });\n  const {\n    edge = false,\n    children,\n    className,\n    color = 'default',\n    disabled = false,\n    disableFocusRipple = false,\n    disableRipple = false,\n    size = 'medium',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    edge,\n    color,\n    disabled,\n    disableFocusRipple,\n    disableRipple,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(IconButtonRoot, {\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    disableRipple: disableRipple,\n    ref: ref,\n    ...other,\n    ownerState: ownerState,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The icon to display.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n    if (found) {\n      return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default IconButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getIconButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport InputBase from \"../InputBase/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport inputClasses, { getInputUtilityClass } from \"./inputClasses.js\";\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseInput } from \"../InputBase/InputBase.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n  return {\n    ...classes,\n    // forward classes to the InputBase\n    ...composedClasses\n  };\n};\nconst InputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return {\n    position: 'relative',\n    variants: [{\n      props: ({\n        ownerState\n      }) => ownerState.formControl,\n      style: {\n        'label + &': {\n          marginTop: 16\n        }\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => !ownerState.disableUnderline,\n      style: {\n        '&::after': {\n          left: 0,\n          bottom: 0,\n          content: '\"\"',\n          position: 'absolute',\n          right: 0,\n          transform: 'scaleX(0)',\n          transition: theme.transitions.create('transform', {\n            duration: theme.transitions.duration.shorter,\n            easing: theme.transitions.easing.easeOut\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&.${inputClasses.focused}:after`]: {\n          // translateX(0) is a workaround for Safari transform scale bug\n          // See https://github.com/mui/material-ui/issues/31766\n          transform: 'scaleX(1) translateX(0)'\n        },\n        [`&.${inputClasses.error}`]: {\n          '&::before, &::after': {\n            borderBottomColor: (theme.vars || theme).palette.error.main\n          }\n        },\n        '&::before': {\n          borderBottom: `1px solid ${bottomLineColor}`,\n          left: 0,\n          bottom: 0,\n          content: '\"\\\\00a0\"',\n          position: 'absolute',\n          right: 0,\n          transition: theme.transitions.create('border-bottom-color', {\n            duration: theme.transitions.duration.shorter\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n          borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            borderBottom: `1px solid ${bottomLineColor}`\n          }\n        },\n        [`&.${inputClasses.disabled}:before`]: {\n          borderBottomStyle: 'dotted'\n        }\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        color,\n        disableUnderline: false\n      },\n      style: {\n        '&::after': {\n          borderBottom: `2px solid ${(theme.vars || theme).palette[color].main}`\n        }\n      }\n    }))]\n  };\n}));\nconst InputInput = styled(InputBaseInput, {\n  name: 'MuiInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInput'\n  });\n  const {\n    disableUnderline = false,\n    components = {},\n    componentsProps: componentsPropsProp,\n    fullWidth = false,\n    inputComponent = 'input',\n    multiline = false,\n    slotProps,\n    slots = {},\n    type = 'text',\n    ...other\n  } = props;\n  const classes = useUtilityClasses(props);\n  const ownerState = {\n    disableUnderline\n  };\n  const inputComponentsProps = {\n    root: {\n      ownerState\n    }\n  };\n  const componentsProps = slotProps ?? componentsPropsProp ? deepmerge(slotProps ?? componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n  const RootSlot = slots.root ?? components.Root ?? InputRoot;\n  const InputSlot = slots.input ?? components.Input ?? InputInput;\n  return /*#__PURE__*/_jsx(InputBase, {\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    slotProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type,\n    ...other,\n    classes: classes\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `input` will not have an underline.\n   * @default false\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](https://mui.com/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nif (Input) {\n  Input.muiName = 'Input';\n}\nexport default Input;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from \"../InputBase/index.js\";\nexport function getInputUtilityClass(slot) {\n  return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = {\n  ...inputBaseClasses,\n  ...generateUtilityClasses('MuiInput', ['root', 'underline', 'input'])\n};\nexport default inputClasses;","'use client';\n\nvar _span;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport Typography from \"../Typography/index.js\";\nimport FormControlContext from \"../FormControl/FormControlContext.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from \"./inputAdornmentClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePointerEvents,\n    hiddenLabel,\n    position,\n    size,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n  name: 'MuiInputAdornment',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  maxHeight: '2em',\n  alignItems: 'center',\n  whiteSpace: 'nowrap',\n  color: (theme.vars || theme).palette.action.active,\n  variants: [{\n    props: {\n      variant: 'filled'\n    },\n    style: {\n      [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n        marginTop: 16\n      }\n    }\n  }, {\n    props: {\n      position: 'start'\n    },\n    style: {\n      marginRight: 8\n    }\n  }, {\n    props: {\n      position: 'end'\n    },\n    style: {\n      marginLeft: 8\n    }\n  }, {\n    props: {\n      disablePointerEvents: true\n    },\n    style: {\n      pointerEvents: 'none'\n    }\n  }]\n})));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInputAdornment'\n  });\n  const {\n    children,\n    className,\n    component = 'div',\n    disablePointerEvents = false,\n    disableTypography = false,\n    position,\n    variant: variantProp,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl() || {};\n  let variant = variantProp;\n  if (variantProp && muiFormControl.variant) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (variantProp === muiFormControl.variant) {\n        console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n      }\n    }\n  }\n  if (muiFormControl && !variant) {\n    variant = muiFormControl.variant;\n  }\n  const ownerState = {\n    ...props,\n    hiddenLabel: muiFormControl.hiddenLabel,\n    size: muiFormControl.size,\n    disablePointerEvents,\n    position,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: null,\n    children: /*#__PURE__*/_jsx(InputAdornmentRoot, {\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ...other,\n      children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n        color: \"textSecondary\",\n        children: children\n      }) : /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [position === 'start' ? (/* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n          className: \"notranslate\",\n          children: \"\\u200B\"\n        }))) : null, children]\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or string.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Disable pointer events on the root.\n   * This allows for the content of the adornment to focus the `input` on click.\n   * @default false\n   */\n  disablePointerEvents: PropTypes.bool,\n  /**\n   * If children is a string then disable wrapping in a Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * The position this adornment should appear relative to the `Input`.\n   */\n  position: PropTypes.oneOf(['end', 'start']).isRequired,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * Note: If you are using the `TextField` component or the `FormControl` component\n   * you do not have to set this manually.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n  return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","'use client';\n\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nvar _InputGlobalStyles;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport TextareaAutosize from \"../TextareaAutosize/index.js\";\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport FormControlContext from \"../FormControl/FormControlContext.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport { styled, globalCss } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport { isFilled } from \"./utils.js\";\nimport inputBaseClasses, { getInputBaseUtilityClass } from \"./inputBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    error,\n    endAdornment,\n    focused,\n    formControl,\n    fullWidth,\n    hiddenLabel,\n    multiline,\n    readOnly,\n    size,\n    startAdornment,\n    type\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n    input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n  };\n  return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n  name: 'MuiInputBase',\n  slot: 'Root',\n  overridesResolver: rootOverridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body1,\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: '1.4375em',\n  // 23px\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  position: 'relative',\n  cursor: 'text',\n  display: 'inline-flex',\n  alignItems: 'center',\n  [`&.${inputBaseClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled,\n    cursor: 'default'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.multiline,\n    style: {\n      padding: '4px 0 5px'\n    }\n  }, {\n    props: ({\n      ownerState,\n      size\n    }) => ownerState.multiline && size === 'small',\n    style: {\n      paddingTop: 1\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.fullWidth,\n    style: {\n      width: '100%'\n    }\n  }]\n})));\nexport const InputBaseInput = styled('input', {\n  name: 'MuiInputBase',\n  slot: 'Input',\n  overridesResolver: inputOverridesResolver\n})(memoTheme(({\n  theme\n}) => {\n  const light = theme.palette.mode === 'light';\n  const placeholder = {\n    color: 'currentColor',\n    ...(theme.vars ? {\n      opacity: theme.vars.opacity.inputPlaceholder\n    } : {\n      opacity: light ? 0.42 : 0.5\n    }),\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  };\n  const placeholderHidden = {\n    opacity: '0 !important'\n  };\n  const placeholderVisible = theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  };\n  return {\n    font: 'inherit',\n    letterSpacing: 'inherit',\n    color: 'currentColor',\n    padding: '4px 0 5px',\n    border: 0,\n    boxSizing: 'content-box',\n    background: 'none',\n    height: '1.4375em',\n    // Reset 23pxthe native input line-height\n    margin: 0,\n    // Reset for Safari\n    WebkitTapHighlightColor: 'transparent',\n    display: 'block',\n    // Make the flex item shrink with Firefox\n    minWidth: 0,\n    width: '100%',\n    '&::-webkit-input-placeholder': placeholder,\n    '&::-moz-placeholder': placeholder,\n    // Firefox 19+\n    '&::-ms-input-placeholder': placeholder,\n    // Edge\n    '&:focus': {\n      outline: 0\n    },\n    // Reset Firefox invalid required input style\n    '&:invalid': {\n      boxShadow: 'none'\n    },\n    '&::-webkit-search-decoration': {\n      // Remove the padding when type=search.\n      WebkitAppearance: 'none'\n    },\n    // Show and hide the placeholder logic\n    [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n      '&::-webkit-input-placeholder': placeholderHidden,\n      '&::-moz-placeholder': placeholderHidden,\n      // Firefox 19+\n      '&::-ms-input-placeholder': placeholderHidden,\n      // Edge\n      '&:focus::-webkit-input-placeholder': placeholderVisible,\n      '&:focus::-moz-placeholder': placeholderVisible,\n      // Firefox 19+\n      '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n    },\n    [`&.${inputBaseClasses.disabled}`]: {\n      opacity: 1,\n      // Reset iOS opacity\n      WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n    },\n    variants: [{\n      props: ({\n        ownerState\n      }) => !ownerState.disableInjectingGlobalStyles,\n      style: {\n        animationName: 'mui-auto-fill-cancel',\n        animationDuration: '10ms',\n        '&:-webkit-autofill': {\n          animationDuration: '5000s',\n          animationName: 'mui-auto-fill'\n        }\n      }\n    }, {\n      props: {\n        size: 'small'\n      },\n      style: {\n        paddingTop: 1\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.multiline,\n      style: {\n        height: 'auto',\n        resize: 'none',\n        padding: 0,\n        paddingTop: 0\n      }\n    }, {\n      props: {\n        type: 'search'\n      },\n      style: {\n        MozAppearance: 'textfield' // Improve type search style.\n      }\n    }]\n  };\n}));\nconst InputGlobalStyles = globalCss({\n  '@keyframes mui-auto-fill': {\n    from: {\n      display: 'block'\n    }\n  },\n  '@keyframes mui-auto-fill-cancel': {\n    from: {\n      display: 'block'\n    }\n  }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInputBase'\n  });\n  const {\n    'aria-describedby': ariaDescribedby,\n    autoComplete,\n    autoFocus,\n    className,\n    color,\n    components = {},\n    componentsProps = {},\n    defaultValue,\n    disabled,\n    disableInjectingGlobalStyles,\n    endAdornment,\n    error,\n    fullWidth = false,\n    id,\n    inputComponent = 'input',\n    inputProps: inputPropsProp = {},\n    inputRef: inputRefProp,\n    margin,\n    maxRows,\n    minRows,\n    multiline = false,\n    name,\n    onBlur,\n    onChange,\n    onClick,\n    onFocus,\n    onKeyDown,\n    onKeyUp,\n    placeholder,\n    readOnly,\n    renderSuffix,\n    rows,\n    size,\n    slotProps = {},\n    slots = {},\n    startAdornment,\n    type = 'text',\n    value: valueProp,\n    ...other\n  } = props;\n  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef();\n  const handleInputRefWarning = React.useCallback(instance => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n        console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n      }\n    }\n  }, []);\n  const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n  const [focused, setFocused] = React.useState(false);\n  const muiFormControl = useFormControl();\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (muiFormControl) {\n        return muiFormControl.registerEffect();\n      }\n      return undefined;\n    }, [muiFormControl]);\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n  });\n  fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n  // The blur won't fire when the disabled state is set on a focused input.\n  // We need to book keep the focused state manually.\n  React.useEffect(() => {\n    if (!muiFormControl && disabled && focused) {\n      setFocused(false);\n      if (onBlur) {\n        onBlur();\n      }\n    }\n  }, [muiFormControl, disabled, focused, onBlur]);\n  const onFilled = muiFormControl && muiFormControl.onFilled;\n  const onEmpty = muiFormControl && muiFormControl.onEmpty;\n  const checkDirty = React.useCallback(obj => {\n    if (isFilled(obj)) {\n      if (onFilled) {\n        onFilled();\n      }\n    } else if (onEmpty) {\n      onEmpty();\n    }\n  }, [onFilled, onEmpty]);\n  useEnhancedEffect(() => {\n    if (isControlled) {\n      checkDirty({\n        value\n      });\n    }\n  }, [value, checkDirty, isControlled]);\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (inputPropsProp.onFocus) {\n      inputPropsProp.onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    } else {\n      setFocused(true);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (inputPropsProp.onBlur) {\n      inputPropsProp.onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    } else {\n      setFocused(false);\n    }\n  };\n  const handleChange = (event, ...args) => {\n    if (!isControlled) {\n      const element = event.target || inputRef.current;\n      if (element == null) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n      }\n      checkDirty({\n        value: element.value\n      });\n    }\n    if (inputPropsProp.onChange) {\n      inputPropsProp.onChange(event, ...args);\n    }\n\n    // Perform in the willUpdate\n    if (onChange) {\n      onChange(event, ...args);\n    }\n  };\n\n  // Check the input state on mount, in case it was filled by the user\n  // or auto filled by the browser before the hydration (for SSR).\n  React.useEffect(() => {\n    checkDirty(inputRef.current);\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const handleClick = event => {\n    if (inputRef.current && event.currentTarget === event.target) {\n      inputRef.current.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  let InputComponent = inputComponent;\n  let inputProps = inputPropsProp;\n  if (multiline && InputComponent === 'input') {\n    if (rows) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (minRows || maxRows) {\n          console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n        }\n      }\n      inputProps = {\n        type: undefined,\n        minRows: rows,\n        maxRows: rows,\n        ...inputProps\n      };\n    } else {\n      inputProps = {\n        type: undefined,\n        maxRows,\n        minRows,\n        ...inputProps\n      };\n    }\n    InputComponent = TextareaAutosize;\n  }\n  const handleAutoFill = event => {\n    // Provide a fake value as Chrome might not let you access it for security reasons.\n    checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n      value: 'x'\n    });\n  };\n  React.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  const ownerState = {\n    ...props,\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    endAdornment,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    startAdornment,\n    type\n  };\n  const classes = useUtilityClasses(ownerState);\n  const Root = slots.root || components.Root || InputBaseRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const Input = slots.input || components.Input || InputBaseInput;\n  inputProps = {\n    ...inputProps,\n    ...(slotProps.input ?? componentsProps.input)\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [!disableInjectingGlobalStyles && typeof InputGlobalStyles === 'function' && (// For Emotion/Styled-components, InputGlobalStyles will be a function\n    // For Pigment CSS, this has no effect because the InputGlobalStyles will be null.\n    _InputGlobalStyles || (_InputGlobalStyles = /*#__PURE__*/_jsx(InputGlobalStyles, {}))), /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      ref: ref,\n      onClick: handleClick,\n      ...other,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n      children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n        value: null,\n        children: /*#__PURE__*/_jsx(Input, {\n          \"aria-invalid\": fcs.error,\n          \"aria-describedby\": ariaDescribedby,\n          autoComplete: autoComplete,\n          autoFocus: autoFocus,\n          defaultValue: defaultValue,\n          disabled: fcs.disabled,\n          id: id,\n          onAnimationStart: handleAutoFill,\n          name: name,\n          placeholder: placeholder,\n          readOnly: readOnly,\n          required: fcs.required,\n          rows: rows,\n          value: value,\n          onKeyDown: onKeyDown,\n          onKeyUp: onKeyUp,\n          type: type,\n          ...inputProps,\n          ...(!isHostComponent(Input) && {\n            as: InputComponent,\n            ownerState: {\n              ...ownerState,\n              ...inputProps.ownerState\n            }\n          }),\n          ref: handleInputRef,\n          className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n          onBlur: handleBlur,\n          onChange: handleChange,\n          onFocus: handleFocus\n        })\n      }), endAdornment, renderSuffix ? renderSuffix({\n        ...fcs,\n        startAdornment\n      }) : null]\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n   * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n   * @default false\n   */\n  disableInjectingGlobalStyles: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: elementTypeAcceptingRef,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](https://mui.com/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * Notice that the first argument (event) might be undefined.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   */\n  onInvalid: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  renderSuffix: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default InputBase;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\nexport function isAdornedStart(obj) {\n  return obj.startAdornment;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport FormLabel, { formLabelClasses } from \"../FormLabel/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getInputLabelUtilityClasses } from \"./inputLabelClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    formControl,\n    size,\n    shrink,\n    disableAnimation,\n    variant,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n    asterisk: [required && 'asterisk']\n  };\n  const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the FormLabel\n    ...composedClasses\n  };\n};\nconst InputLabelRoot = styled(FormLabel, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInputLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n    }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, ownerState.focused && styles.focused, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  transformOrigin: 'top left',\n  whiteSpace: 'nowrap',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  maxWidth: '100%',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.formControl,\n    style: {\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      // slight alteration to spec spacing to match visual spec result\n      transform: 'translate(0, 20px) scale(1)'\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      // Compensation for the `Input.inputSizeSmall` style.\n      transform: 'translate(0, 17px) scale(1)'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.shrink,\n    style: {\n      transform: 'translate(0, -1.5px) scale(0.75)',\n      transformOrigin: 'top left',\n      maxWidth: '133%'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disableAnimation,\n    style: {\n      transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      })\n    }\n  }, {\n    props: {\n      variant: 'filled'\n    },\n    style: {\n      // Chrome's autofill feature gives the input field a yellow background.\n      // Since the input field is behind the label in the HTML tree,\n      // the input field is drawn last and hides the label with an opaque background color.\n      // zIndex: 1 will raise the label above opaque background-colors of input.\n      zIndex: 1,\n      pointerEvents: 'none',\n      transform: 'translate(12px, 16px) scale(1)',\n      maxWidth: 'calc(100% - 24px)'\n    }\n  }, {\n    props: {\n      variant: 'filled',\n      size: 'small'\n    },\n    style: {\n      transform: 'translate(12px, 13px) scale(1)'\n    }\n  }, {\n    props: ({\n      variant,\n      ownerState\n    }) => variant === 'filled' && ownerState.shrink,\n    style: {\n      userSelect: 'none',\n      pointerEvents: 'auto',\n      transform: 'translate(12px, 7px) scale(0.75)',\n      maxWidth: 'calc(133% - 24px)'\n    }\n  }, {\n    props: ({\n      variant,\n      ownerState,\n      size\n    }) => variant === 'filled' && ownerState.shrink && size === 'small',\n    style: {\n      transform: 'translate(12px, 4px) scale(0.75)'\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      // see comment above on filled.zIndex\n      zIndex: 1,\n      pointerEvents: 'none',\n      transform: 'translate(14px, 16px) scale(1)',\n      maxWidth: 'calc(100% - 24px)'\n    }\n  }, {\n    props: {\n      variant: 'outlined',\n      size: 'small'\n    },\n    style: {\n      transform: 'translate(14px, 9px) scale(1)'\n    }\n  }, {\n    props: ({\n      variant,\n      ownerState\n    }) => variant === 'outlined' && ownerState.shrink,\n    style: {\n      userSelect: 'none',\n      pointerEvents: 'auto',\n      // Theoretically, we should have (8+5)*2/0.75 = 34px\n      // but it feels a better when it bleeds a bit on the left, so 32px.\n      maxWidth: 'calc(133% - 32px)',\n      transform: 'translate(14px, -9px) scale(0.75)'\n    }\n  }]\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n  const props = useDefaultProps({\n    name: 'MuiInputLabel',\n    props: inProps\n  });\n  const {\n    disableAnimation = false,\n    margin,\n    shrink: shrinkProp,\n    variant,\n    className,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let shrink = shrinkProp;\n  if (typeof shrink === 'undefined' && muiFormControl) {\n    shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['size', 'variant', 'required', 'focused']\n  });\n  const ownerState = {\n    ...props,\n    disableAnimation,\n    formControl: muiFormControl,\n    shrink,\n    size: fcs.size,\n    variant: fcs.variant,\n    required: fcs.required,\n    focused: fcs.focused\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(InputLabelRoot, {\n    \"data-shrink\": shrink,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other,\n    ownerState: ownerState,\n    classes: classes\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the transition animation is disabled.\n   * @default false\n   */\n  disableAnimation: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` of this label is focused.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * if `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * If `true`, the label is shrunk.\n   */\n  shrink: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'normal'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"./ListContext.js\";\nimport { getListUtilityClass } from \"./listClasses.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePadding,\n    dense,\n    subheader\n  } = ownerState;\n  const slots = {\n    root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n  };\n  return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n  name: 'MuiList',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n  }\n})({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  position: 'relative',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.subheader,\n    style: {\n      paddingTop: 0\n    }\n  }]\n});\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiList'\n  });\n  const {\n    children,\n    className,\n    component = 'ul',\n    dense = false,\n    disablePadding = false,\n    subheader,\n    ...other\n  } = props;\n  const context = React.useMemo(() => ({\n    dense\n  }), [dense]);\n  const ownerState = {\n    ...props,\n    component,\n    dense,\n    disablePadding\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsxs(ListRoot, {\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      children: [subheader, children]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n  return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getListItemIconUtilityClass } from \"./listItemIconClasses.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n  };\n  return composeClasses(slots, getListItemIconUtilityClass, classes);\n};\nconst ListItemIconRoot = styled('div', {\n  name: 'MuiListItemIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  minWidth: 56,\n  color: (theme.vars || theme).palette.action.active,\n  flexShrink: 0,\n  display: 'inline-flex',\n  variants: [{\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      marginTop: 8\n    }\n  }]\n})));\n\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\nconst ListItemIcon = /*#__PURE__*/React.forwardRef(function ListItemIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemIcon'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    alignItems: context.alignItems\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemIconRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `Icon`, `SvgIcon`,\n   * or a `@mui/icons-material` SVG icon element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography, { typographyClasses } from \"../Typography/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport listItemTextClasses, { getListItemTextUtilityClass } from \"./listItemTextClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    inset,\n    primary,\n    secondary,\n    dense\n  } = ownerState;\n  const slots = {\n    root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n    primary: ['primary'],\n    secondary: ['secondary']\n  };\n  return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n  name: 'MuiListItemText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${listItemTextClasses.primary}`]: styles.primary\n    }, {\n      [`& .${listItemTextClasses.secondary}`]: styles.secondary\n    }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n  }\n})({\n  flex: '1 1 auto',\n  minWidth: 0,\n  marginTop: 4,\n  marginBottom: 4,\n  [`.${typographyClasses.root}:where(& .${listItemTextClasses.primary})`]: {\n    display: 'block'\n  },\n  [`.${typographyClasses.root}:where(& .${listItemTextClasses.secondary})`]: {\n    display: 'block'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.primary && ownerState.secondary,\n    style: {\n      marginTop: 6,\n      marginBottom: 6\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.inset,\n    style: {\n      paddingLeft: 56\n    }\n  }]\n});\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemText'\n  });\n  const {\n    children,\n    className,\n    disableTypography = false,\n    inset = false,\n    primary: primaryProp,\n    primaryTypographyProps,\n    secondary: secondaryProp,\n    secondaryTypographyProps,\n    ...other\n  } = props;\n  const {\n    dense\n  } = React.useContext(ListContext);\n  let primary = primaryProp != null ? primaryProp : children;\n  let secondary = secondaryProp;\n  const ownerState = {\n    ...props,\n    disableTypography,\n    inset,\n    primary: !!primary,\n    secondary: !!secondary,\n    dense\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (primary != null && primary.type !== Typography && !disableTypography) {\n    primary = /*#__PURE__*/_jsx(Typography, {\n      variant: dense ? 'body2' : 'body1',\n      className: classes.primary,\n      component: primaryTypographyProps?.variant ? undefined : 'span',\n      ...primaryTypographyProps,\n      children: primary\n    });\n  }\n  if (secondary != null && secondary.type !== Typography && !disableTypography) {\n    secondary = /*#__PURE__*/_jsx(Typography, {\n      variant: \"body2\",\n      className: classes.secondary,\n      color: \"textSecondary\",\n      ...secondaryTypographyProps,\n      children: secondary\n    });\n  }\n  return /*#__PURE__*/_jsxs(ListItemTextRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [primary, secondary]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Alias for the `primary` prop.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the children won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `children` (or `primary`) text, and optional `secondary` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * If `true`, the children are indented.\n   * This should be used if there is no left avatar or left icon.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The main content element.\n   */\n  primary: PropTypes.node,\n  /**\n   * These props will be forwarded to the primary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  primaryTypographyProps: PropTypes.object,\n  /**\n   * The secondary content element.\n   */\n  secondary: PropTypes.node,\n  /**\n   * These props will be forwarded to the secondary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  secondaryTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { getListSubheaderUtilityClass } from \"./listSubheaderClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disableGutters,\n    inset,\n    disableSticky\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n  };\n  return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n  name: 'MuiListSubheader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  boxSizing: 'border-box',\n  lineHeight: '48px',\n  listStyle: 'none',\n  color: (theme.vars || theme).palette.text.secondary,\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(14),\n  variants: [{\n    props: {\n      color: 'primary'\n    },\n    style: {\n      color: (theme.vars || theme).palette.primary.main\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.inset,\n    style: {\n      paddingLeft: 72\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disableSticky,\n    style: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 1,\n      backgroundColor: (theme.vars || theme).palette.background.paper\n    }\n  }]\n})));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListSubheader'\n  });\n  const {\n    className,\n    color = 'default',\n    component = 'li',\n    disableGutters = false,\n    disableSticky = false,\n    inset = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disableGutters,\n    disableSticky,\n    inset\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListSubheaderRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nif (ListSubheader) {\n  ListSubheader.muiSkipListHighlight = true;\n}\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * @default 'default'\n   */\n  color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the List Subheader will not have gutters.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   * @default false\n   */\n  disableSticky: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader is indented.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n  return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport MenuList from \"../MenuList/index.js\";\nimport Popover, { PopoverPaper } from \"../Popover/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getMenuUtilityClass } from \"./menuClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper'],\n    list: ['list']\n  };\n  return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenu',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const MenuPaper = styled(PopoverPaper, {\n  name: 'MuiMenu',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  // specZ: The maximum height of a simple menu should be one or more rows less than the view\n  // height. This ensures a tappable area outside of the simple menu with which to dismiss\n  // the menu.\n  maxHeight: 'calc(100% - 96px)',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n  name: 'MuiMenu',\n  slot: 'List',\n  overridesResolver: (props, styles) => styles.list\n})({\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiMenu'\n  });\n  const {\n    autoFocus = true,\n    children,\n    className,\n    disableAutoFocusItem = false,\n    MenuListProps = {},\n    onClose,\n    open,\n    PaperProps = {},\n    PopoverClasses,\n    transitionDuration = 'auto',\n    TransitionProps: {\n      onEntering,\n      ...TransitionProps\n    } = {},\n    variant = 'selectedMenu',\n    slots = {},\n    slotProps = {},\n    ...other\n  } = props;\n  const isRtl = useRtl();\n  const ownerState = {\n    ...props,\n    autoFocus,\n    disableAutoFocusItem,\n    MenuListProps,\n    onEntering,\n    PaperProps,\n    transitionDuration,\n    TransitionProps,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n  const menuListActionsRef = React.useRef(null);\n  const handleEntering = (element, isAppearing) => {\n    if (menuListActionsRef.current) {\n      menuListActionsRef.current.adjustStyleForScrollbar(element, {\n        direction: isRtl ? 'rtl' : 'ltr'\n      });\n    }\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n      if (onClose) {\n        onClose(event, 'tabKeyDown');\n      }\n    }\n  };\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.map(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  const PaperSlot = slots.paper ?? MenuPaper;\n  const paperExternalSlotProps = slotProps.paper ?? PaperProps;\n  const rootSlotProps = useSlotProps({\n    elementType: slots.root,\n    externalSlotProps: slotProps.root,\n    ownerState,\n    className: [classes.root, className]\n  });\n  const paperSlotProps = useSlotProps({\n    elementType: PaperSlot,\n    externalSlotProps: paperExternalSlotProps,\n    ownerState,\n    className: classes.paper\n  });\n  return /*#__PURE__*/_jsx(MenuRoot, {\n    onClose: onClose,\n    anchorOrigin: {\n      vertical: 'bottom',\n      horizontal: isRtl ? 'right' : 'left'\n    },\n    transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n    slots: {\n      paper: PaperSlot,\n      root: slots.root\n    },\n    slotProps: {\n      root: rootSlotProps,\n      paper: paperSlotProps\n    },\n    open: open,\n    ref: ref,\n    transitionDuration: transitionDuration,\n    TransitionProps: {\n      onEntering: handleEntering,\n      ...TransitionProps\n    },\n    ownerState: ownerState,\n    ...other,\n    classes: PopoverClasses,\n    children: /*#__PURE__*/_jsx(MenuMenuList, {\n      onKeyDown: handleListKeyDown,\n      actions: menuListActionsRef,\n      autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n      autoFocusItem: autoFocusItem,\n      variant: variant,\n      ...MenuListProps,\n      className: clsx(classes.list, MenuListProps.className),\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the menu.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n   * children are not focusable. If you set this prop to `false` focus will be placed\n   * on the parent modal container. This has severe accessibility implications\n   * and should only be considered if you manage focus otherwise.\n   * @default true\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n   * unless `autoFocus` is also set to `false`. Not using the default means not\n   * following WAI-ARIA authoring practices. Please be considerate about possible\n   * accessibility implications.\n   * @default false\n   */\n  disableAutoFocusItem: PropTypes.bool,\n  /**\n   * Props applied to the [`MenuList`](https://mui.com/material-ui/api/menu-list/) element.\n   * @default {}\n   */\n  MenuListProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * `classes` prop applied to the [`Popover`](https://mui.com/material-ui/api/popover/) element.\n   */\n  PopoverClasses: PropTypes.object,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n  return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { dividerClasses } from \"../Divider/index.js\";\nimport { listItemIconClasses } from \"../ListItemIcon/index.js\";\nimport { listItemTextClasses } from \"../ListItemText/index.js\";\nimport menuItemClasses, { getMenuItemUtilityClass } from \"./menuItemClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dense,\n    divider,\n    disableGutters,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n  return {\n    ...classes,\n    ...composedClasses\n  };\n};\nconst MenuItemRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenuItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body1,\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minHeight: 48,\n  paddingTop: 6,\n  paddingBottom: 6,\n  boxSizing: 'border-box',\n  whiteSpace: 'nowrap',\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${menuItemClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${menuItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${menuItemClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${menuItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${menuItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  [`& + .${dividerClasses.root}`]: {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(1)\n  },\n  [`& + .${dividerClasses.inset}`]: {\n    marginLeft: 52\n  },\n  [`& .${listItemTextClasses.root}`]: {\n    marginTop: 0,\n    marginBottom: 0\n  },\n  [`& .${listItemTextClasses.inset}`]: {\n    paddingLeft: 36\n  },\n  [`& .${listItemIconClasses.root}`]: {\n    minWidth: 36\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.dense,\n    style: {\n      [theme.breakpoints.up('sm')]: {\n        minHeight: 'auto'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.dense,\n    style: {\n      minHeight: 32,\n      // https://m2.material.io/components/menus#specs > Dense\n      paddingTop: 4,\n      paddingBottom: 4,\n      ...theme.typography.body2,\n      [`& .${listItemIconClasses.root} svg`]: {\n        fontSize: '1.25rem'\n      }\n    }\n  }]\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiMenuItem'\n  });\n  const {\n    autoFocus = false,\n    component = 'li',\n    dense = false,\n    divider = false,\n    disableGutters = false,\n    focusVisibleClassName,\n    role = 'menuitem',\n    tabIndex: tabIndexProp,\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    disableGutters\n  }), [context.dense, dense, disableGutters]);\n  const menuItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (menuItemRef.current) {\n        menuItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = {\n    ...props,\n    dense: childContext.dense,\n    divider,\n    disableGutters\n  };\n  const classes = useUtilityClasses(props);\n  const handleRef = useForkRef(menuItemRef, ref);\n  let tabIndex;\n  if (!props.disabled) {\n    tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(MenuItemRoot, {\n      ref: handleRef,\n      role: role,\n      tabIndex: tabIndex,\n      component: component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      className: clsx(classes.root, className),\n      ...other,\n      ownerState: ownerState,\n      classes: classes\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent Menu component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the menu item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * If `true`, the component is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n  return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","import getScrollbarSize from '@mui/utils/getScrollbarSize';\nexport default getScrollbarSize;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport List from \"../List/index.js\";\nimport getScrollbarSize from \"../utils/getScrollbarSize.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.startsWith(textCriteria.keys.join(''));\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n    } else {\n      nextFocus.focus();\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    autoFocus = false,\n    autoFocusItem = false,\n    children,\n    className,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    onKeyDown,\n    variant = 'selectedMenu',\n    ...other\n  } = props;\n  const listRef = React.useRef(null);\n  const textCriteriaRef = React.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, {\n      direction\n    }) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n        listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;\n    if (isModifierKeyPressed) {\n      if (onKeyDown) {\n        onKeyDown(event);\n      }\n      return;\n    }\n\n    /**\n     * @type {Element} - will always be defined since we are in a keydown handler\n     * attached to an element. A keydown event is either dispatched to the activeElement\n     * or document.body or document.documentElement. Only the first case will\n     * trigger this specific handler.\n     */\n    const currentFocus = ownerDocument(list).activeElement;\n    if (key === 'ArrowDown') {\n      // Prevent scroll of the page\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'ArrowUp') {\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key === 'Home') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'End') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key.length === 1) {\n      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\n      if (criteria.keys.length > 0) {\n        // Reset\n        if (currTime - criteria.lastTime > 500) {\n          criteria.keys = [];\n          criteria.repeating = true;\n          criteria.previousKeyMatched = true;\n        } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n          criteria.repeating = false;\n        }\n      }\n      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = useForkRef(listRef, ref);\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      if (activeItemIndex === index) {\n        activeItemIndex += 1;\n        if (activeItemIndex >= children.length) {\n          // there are no focusable items within the list.\n          activeItemIndex = -1;\n        }\n      }\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n    if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n      activeItemIndex += 1;\n      if (activeItemIndex >= children.length) {\n        // there are no focusable items within the list.\n        activeItemIndex = -1;\n      }\n    }\n  });\n  const items = React.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/React.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/_jsx(List, {\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1,\n    ...other,\n    children: items\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: PropTypes.bool,\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n   * and the vertical alignment relative to the anchor element.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","'use client';\n\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\nimport { ModalManager, ariaHidden } from \"./ModalManager.js\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n/**\n *\n * Demos:\n *\n * - [Modal](https://mui.com/base-ui/react-modal/#hook)\n *\n * API:\n *\n * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)\n */\nfunction useModal(parameters) {\n  const {\n    container,\n    disableEscapeKeyDown = false,\n    disableScrollLock = false,\n    // @ts-ignore internal logic - Base UI supports the manager as a prop too\n    manager = defaultManager,\n    closeAfterTransition = false,\n    onTransitionEnter,\n    onTransitionExited,\n    children,\n    onClose,\n    open,\n    rootRef\n  } = parameters;\n\n  // @ts-ignore internal logic\n  const modal = React.useRef({});\n  const mountNodeRef = React.useRef(null);\n  const modalRef = React.useRef(null);\n  const handleRef = useForkRef(modalRef, rootRef);\n  const [exited, setExited] = React.useState(!open);\n  const hasTransition = getHasTransition(children);\n  let ariaHiddenProp = true;\n  if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {\n    ariaHiddenProp = false;\n  }\n  const getDoc = () => ownerDocument(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mount = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = useEventCallback(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n  const handlePortalRef = useEventCallback(node => {\n    mountNodeRef.current = node;\n    if (!node) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else if (modalRef.current) {\n      ariaHidden(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = React.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [ariaHiddenProp, manager]);\n  React.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  React.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const createHandleKeyDown = otherHandlers => event => {\n    otherHandlers.onKeyDown?.(event);\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || event.which === 229 ||\n    // Wait until IME is settled.\n    !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const createHandleBackdropClick = otherHandlers => event => {\n    otherHandlers.onClick?.(event);\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const getRootProps = (otherHandlers = {}) => {\n    const propsEventHandlers = extractEventHandlers(parameters);\n\n    // The custom event handlers shouldn't be spread on the root element\n    delete propsEventHandlers.onTransitionEnter;\n    delete propsEventHandlers.onTransitionExited;\n    const externalEventHandlers = {\n      ...propsEventHandlers,\n      ...otherHandlers\n    };\n    return {\n      role: 'presentation',\n      ...externalEventHandlers,\n      onKeyDown: createHandleKeyDown(externalEventHandlers),\n      ref: handleRef\n    };\n  };\n  const getBackdropProps = (otherHandlers = {}) => {\n    const externalEventHandlers = otherHandlers;\n    return {\n      'aria-hidden': true,\n      ...externalEventHandlers,\n      onClick: createHandleBackdropClick(externalEventHandlers),\n      open\n    };\n  };\n  const getTransitionProps = () => {\n    const handleEnter = () => {\n      setExited(false);\n      if (onTransitionEnter) {\n        onTransitionEnter();\n      }\n    };\n    const handleExited = () => {\n      setExited(true);\n      if (onTransitionExited) {\n        onTransitionExited();\n      }\n      if (closeAfterTransition) {\n        handleClose();\n      }\n    };\n    return {\n      onEnter: createChainedFunction(handleEnter, children?.props.onEnter),\n      onExited: createChainedFunction(handleExited, children?.props.onExited)\n    };\n  };\n  return {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    rootRef: handleRef,\n    portalRef: handlePortalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  };\n}\nexport default useModal;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FocusTrap from \"../Unstable_TrapFocus/index.js\";\nimport Portal from \"../Portal/index.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Backdrop from \"../Backdrop/index.js\";\nimport useModal from \"./useModal.js\";\nimport { getModalUtilityClass } from \"./modalClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { useForkRef } from \"../utils/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    exited,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', !open && exited && 'hidden'],\n    backdrop: ['backdrop']\n  };\n  return composeClasses(slots, getModalUtilityClass, classes);\n};\nconst ModalRoot = styled('div', {\n  name: 'MuiModal',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'fixed',\n  zIndex: (theme.vars || theme).zIndex.modal,\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.open && ownerState.exited,\n    style: {\n      visibility: 'hidden'\n    }\n  }]\n})));\nconst ModalBackdrop = styled(Backdrop, {\n  name: 'MuiModal',\n  slot: 'Backdrop',\n  overridesResolver: (props, styles) => {\n    return styles.backdrop;\n  }\n})({\n  zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n  const props = useDefaultProps({\n    name: 'MuiModal',\n    props: inProps\n  });\n  const {\n    BackdropComponent = ModalBackdrop,\n    BackdropProps,\n    classes: classesProp,\n    className,\n    closeAfterTransition = false,\n    children,\n    container,\n    component,\n    components = {},\n    componentsProps = {},\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableEscapeKeyDown = false,\n    disablePortal = false,\n    disableRestoreFocus = false,\n    disableScrollLock = false,\n    hideBackdrop = false,\n    keepMounted = false,\n    onBackdropClick,\n    onClose,\n    onTransitionEnter,\n    onTransitionExited,\n    open,\n    slotProps = {},\n    slots = {},\n    // eslint-disable-next-line react/prop-types\n    theme,\n    ...other\n  } = props;\n  const propsWithDefaults = {\n    ...props,\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    hideBackdrop,\n    keepMounted\n  };\n  const {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    portalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  } = useModal({\n    ...propsWithDefaults,\n    rootRef: ref\n  });\n  const ownerState = {\n    ...propsWithDefaults,\n    exited\n  };\n  const classes = useUtilityClasses(ownerState);\n  const childProps = {};\n  if (children.props.tabIndex === undefined) {\n    childProps.tabIndex = '-1';\n  }\n\n  // It's a Transition like component\n  if (hasTransition) {\n    const {\n      onEnter,\n      onExited\n    } = getTransitionProps();\n    childProps.onEnter = onEnter;\n    childProps.onExited = onExited;\n  }\n  const externalForwardedProps = {\n    ...other,\n    slots: {\n      root: components.Root,\n      backdrop: components.Backdrop,\n      ...slots\n    },\n    slotProps: {\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [RootSlot, rootProps] = useSlot('root', {\n    elementType: ModalRoot,\n    externalForwardedProps,\n    getSlotProps: getRootProps,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(className, classes?.root, !ownerState.open && ownerState.exited && classes?.hidden)\n  });\n  const [BackdropSlot, backdropProps] = useSlot('backdrop', {\n    elementType: BackdropComponent,\n    externalForwardedProps,\n    additionalProps: BackdropProps,\n    getSlotProps: otherHandlers => {\n      return getBackdropProps({\n        ...otherHandlers,\n        onClick: e => {\n          if (onBackdropClick) {\n            onBackdropClick(e);\n          }\n          if (otherHandlers?.onClick) {\n            otherHandlers.onClick(e);\n          }\n        }\n      });\n    },\n    className: clsx(BackdropProps?.className, classes?.backdrop),\n    ownerState\n  });\n  const backdropRef = useForkRef(BackdropProps?.ref, backdropProps.ref);\n  if (!keepMounted && !open && (!hasTransition || exited)) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(Portal, {\n    ref: portalRef,\n    container: container,\n    disablePortal: disablePortal,\n    children: /*#__PURE__*/_jsxs(RootSlot, {\n      ...rootProps,\n      children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropSlot, {\n        ...backdropProps,\n        ref: backdropRef\n      }) : null, /*#__PURE__*/_jsx(FocusTrap, {\n        disableEnforceFocus: disableEnforceFocus,\n        disableAutoFocus: disableAutoFocus,\n        disableRestoreFocus: disableRestoreFocus,\n        isEnabled: isTopModal,\n        open: open,\n        children: /*#__PURE__*/React.cloneElement(children, childProps)\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Backdrop`](https://mui.com/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.backdrop` instead.\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Backdrop: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * A function called when a transition enters.\n   */\n  onTransitionEnter: PropTypes.func,\n  /**\n   * A function called when a transition has exited.\n   */\n  onTransitionExited: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    backdrop: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n  const doc = ownerDocument(container);\n  if (doc.body === container) {\n    return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n  }\n  return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n  if (show) {\n    element.setAttribute('aria-hidden', 'true');\n  } else {\n    element.removeAttribute('aria-hidden');\n  }\n}\nfunction getPaddingRight(element) {\n  return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n  // The forbidden HTML tags are the ones from ARIA specification that\n  // can be children of body and can't have aria-hidden attribute.\n  // cf. https://www.w3.org/TR/html-aria/#docconformance\n  const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n  const isForbiddenTagName = forbiddenTagNames.includes(element.tagName);\n  const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n  return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n  const blacklist = [mountElement, currentElement, ...elementsToExclude];\n  [].forEach.call(container.children, element => {\n    const isNotExcludedElement = !blacklist.includes(element);\n    const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n    if (isNotExcludedElement && isNotForbiddenElement) {\n      ariaHidden(element, show);\n    }\n  });\n}\nfunction findIndexOf(items, callback) {\n  let idx = -1;\n  items.some((item, index) => {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n    return false;\n  });\n  return idx;\n}\nfunction handleContainer(containerInfo, props) {\n  const restoreStyle = [];\n  const container = containerInfo.container;\n  if (!props.disableScrollLock) {\n    if (isOverflowing(container)) {\n      // Compute the size before applying overflow hidden to avoid any scroll jumps.\n      const scrollbarSize = getScrollbarSize(ownerDocument(container));\n      restoreStyle.push({\n        value: container.style.paddingRight,\n        property: 'padding-right',\n        el: container\n      });\n      // Use computed style, here to get the real padding to add our scrollbar width.\n      container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n      // .mui-fixed is a global helper.\n      const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n      [].forEach.call(fixedElements, element => {\n        restoreStyle.push({\n          value: element.style.paddingRight,\n          property: 'padding-right',\n          el: element\n        });\n        element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n      });\n    }\n    let scrollContainer;\n    if (container.parentNode instanceof DocumentFragment) {\n      scrollContainer = ownerDocument(container).body;\n    } else {\n      // Support html overflow-y: auto for scroll stability between pages\n      // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n      const parent = container.parentElement;\n      const containerWindow = ownerWindow(container);\n      scrollContainer = parent?.nodeName === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n    }\n\n    // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n    // screensize shrink.\n    restoreStyle.push({\n      value: scrollContainer.style.overflow,\n      property: 'overflow',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowX,\n      property: 'overflow-x',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowY,\n      property: 'overflow-y',\n      el: scrollContainer\n    });\n    scrollContainer.style.overflow = 'hidden';\n  }\n  const restore = () => {\n    restoreStyle.forEach(({\n      value,\n      el,\n      property\n    }) => {\n      if (value) {\n        el.style.setProperty(property, value);\n      } else {\n        el.style.removeProperty(property);\n      }\n    });\n  };\n  return restore;\n}\nfunction getHiddenSiblings(container) {\n  const hiddenSiblings = [];\n  [].forEach.call(container.children, element => {\n    if (element.getAttribute('aria-hidden') === 'true') {\n      hiddenSiblings.push(element);\n    }\n  });\n  return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport class ModalManager {\n  constructor() {\n    this.modals = [];\n    this.containers = [];\n  }\n  add(modal, container) {\n    let modalIndex = this.modals.indexOf(modal);\n    if (modalIndex !== -1) {\n      return modalIndex;\n    }\n    modalIndex = this.modals.length;\n    this.modals.push(modal);\n\n    // If the modal we are adding is already in the DOM.\n    if (modal.modalRef) {\n      ariaHidden(modal.modalRef, false);\n    }\n    const hiddenSiblings = getHiddenSiblings(container);\n    ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n    const containerIndex = findIndexOf(this.containers, item => item.container === container);\n    if (containerIndex !== -1) {\n      this.containers[containerIndex].modals.push(modal);\n      return modalIndex;\n    }\n    this.containers.push({\n      modals: [modal],\n      container,\n      restore: null,\n      hiddenSiblings\n    });\n    return modalIndex;\n  }\n  mount(modal, props) {\n    const containerIndex = findIndexOf(this.containers, item => item.modals.includes(modal));\n    const containerInfo = this.containers[containerIndex];\n    if (!containerInfo.restore) {\n      containerInfo.restore = handleContainer(containerInfo, props);\n    }\n  }\n  remove(modal, ariaHiddenState = true) {\n    const modalIndex = this.modals.indexOf(modal);\n    if (modalIndex === -1) {\n      return modalIndex;\n    }\n    const containerIndex = findIndexOf(this.containers, item => item.modals.includes(modal));\n    const containerInfo = this.containers[containerIndex];\n    containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n    this.modals.splice(modalIndex, 1);\n\n    // If that was the last modal in a container, clean up the container.\n    if (containerInfo.modals.length === 0) {\n      // The modal might be closed before it had the chance to be mounted in the DOM.\n      if (containerInfo.restore) {\n        containerInfo.restore();\n      }\n      if (modal.modalRef) {\n        // In case the modal wasn't in the DOM yet.\n        ariaHidden(modal.modalRef, ariaHiddenState);\n      }\n      ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n      this.containers.splice(containerIndex, 1);\n    } else {\n      // Otherwise make sure the next top modal is visible to a screen reader.\n      const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n      // as soon as a modal is adding its modalRef is undefined. it can't set\n      // aria-hidden because the dom element doesn't exist either\n      // when modal was unmounted before modalRef gets null\n      if (nextTop.modalRef) {\n        ariaHidden(nextTop.modalRef, false);\n      }\n    }\n    return modalIndex;\n  }\n  isTopModal(modal) {\n    return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n  }\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n  return generateUtilityClass('MuiModal', slot);\n}\nconst modalClasses = generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);\nexport default modalClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from \"./nativeSelectClasses.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n  };\n  return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const StyledSelectSelect = styled('select')(({\n  theme\n}) => ({\n  // Reset\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // When interacting quickly, the text can end up selected.\n  // Native select can't be selected either.\n  userSelect: 'none',\n  // Reset\n  borderRadius: 0,\n  cursor: 'pointer',\n  '&:focus': {\n    // Reset Chrome style\n    borderRadius: 0\n  },\n  [`&.${nativeSelectClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  '&[multiple]': {\n    height: 'auto'\n  },\n  '&:not([multiple]) option, &:not([multiple]) optgroup': {\n    backgroundColor: (theme.vars || theme).palette.background.paper\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.variant !== 'filled' && ownerState.variant !== 'outlined',\n    style: {\n      // Bump specificity to allow extending custom inputs\n      '&&&': {\n        paddingRight: 24,\n        minWidth: 16 // So it doesn't collapse.\n      }\n    }\n  }, {\n    props: {\n      variant: 'filled'\n    },\n    style: {\n      '&&&': {\n        paddingRight: 32\n      }\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius,\n      '&:focus': {\n        borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n      },\n      '&&&': {\n        paddingRight: 32\n      }\n    }\n  }]\n}));\nconst NativeSelectSelect = styled(StyledSelectSelect, {\n  name: 'MuiNativeSelect',\n  slot: 'Select',\n  shouldForwardProp: rootShouldForwardProp,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.select, styles[ownerState.variant], ownerState.error && styles.error, {\n      [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})({});\nexport const StyledSelectIcon = styled('svg')(({\n  theme\n}) => ({\n  // We use a position absolute over a flexbox in order to forward the pointer events\n  // to the input and to support wrapping tags..\n  position: 'absolute',\n  right: 0,\n  // Center vertically, height is 1em\n  top: 'calc(50% - .5em)',\n  // Don't block pointer events on the select under the icon.\n  pointerEvents: 'none',\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${nativeSelectClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.open,\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }, {\n    props: {\n      variant: 'filled'\n    },\n    style: {\n      right: 7\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      right: 7\n    }\n  }]\n}));\nconst NativeSelectIcon = styled(StyledSelectIcon, {\n  name: 'MuiNativeSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})({});\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n  const {\n    className,\n    disabled,\n    error,\n    IconComponent,\n    inputRef,\n    variant = 'standard',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disabled,\n    variant,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(NativeSelectSelect, {\n      ownerState: ownerState,\n      className: clsx(classes.select, className),\n      disabled: disabled,\n      ref: inputRef || ref,\n      ...other\n    }), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n      as: IconComponent,\n      ownerState: ownerState,\n      className: classes.icon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Use that prop to pass a ref to the native select element.\n   * @deprecated\n   */\n  inputRef: refType,\n  /**\n   * @ignore\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default nativeSelectClasses;","'use client';\n\nvar _span;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  textAlign: 'left',\n  position: 'absolute',\n  bottom: 0,\n  right: 0,\n  top: -5,\n  left: 0,\n  margin: 0,\n  padding: '0 8px',\n  pointerEvents: 'none',\n  borderRadius: 'inherit',\n  borderStyle: 'solid',\n  borderWidth: 1,\n  overflow: 'hidden',\n  minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend', {\n  shouldForwardProp: rootShouldForwardProp\n})(memoTheme(({\n  theme\n}) => ({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden',\n  // Fix Horizontal scroll when label too long\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.withLabel,\n    style: {\n      padding: 0,\n      lineHeight: '11px',\n      // sync with `height` in `legend` styles\n      transition: theme.transitions.create('width', {\n        duration: 150,\n        easing: theme.transitions.easing.easeOut\n      })\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.withLabel,\n    style: {\n      display: 'block',\n      // Fix conflict with normalize.css and sanitize.css\n      padding: 0,\n      height: 11,\n      // sync with `lineHeight` in `legend` styles\n      fontSize: '0.75em',\n      visibility: 'hidden',\n      maxWidth: 0.01,\n      transition: theme.transitions.create('max-width', {\n        duration: 50,\n        easing: theme.transitions.easing.easeOut\n      }),\n      whiteSpace: 'nowrap',\n      '& > span': {\n        paddingLeft: 5,\n        paddingRight: 5,\n        display: 'inline-block',\n        opacity: 0,\n        visibility: 'visible'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.withLabel && ownerState.notched,\n    style: {\n      maxWidth: '100%',\n      transition: theme.transitions.create('max-width', {\n        duration: 100,\n        easing: theme.transitions.easing.easeOut,\n        delay: 50\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n  const {\n    children,\n    classes,\n    className,\n    label,\n    notched,\n    ...other\n  } = props;\n  const withLabel = label != null && label !== '';\n  const ownerState = {\n    ...props,\n    notched,\n    withLabel\n  };\n  return /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n    \"aria-hidden\": true,\n    className: className,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n      ownerState: ownerState,\n      children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n        children: label\n      }) : // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      }))\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes /* remove-proptypes */ = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The label.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport NotchedOutline from \"./NotchedOutline.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from \"./outlinedInputClasses.js\";\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseInput } from \"../InputBase/InputBase.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n  return {\n    ...classes,\n    // forward classes to the InputBase\n    ...composedClasses\n  };\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiOutlinedInput',\n  slot: 'Root',\n  overridesResolver: inputBaseRootOverridesResolver\n})(memoTheme(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    position: 'relative',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n      borderWidth: 2\n    },\n    variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        color\n      },\n      style: {\n        [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n          borderColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    })), {\n      props: {},\n      // to overide the above style\n      style: {\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n            borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n          }\n        },\n        [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n          borderColor: (theme.vars || theme).palette.error.main\n        },\n        [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n          borderColor: (theme.vars || theme).palette.action.disabled\n        }\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.startAdornment,\n      style: {\n        paddingLeft: 14\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.endAdornment,\n      style: {\n        paddingRight: 14\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.multiline,\n      style: {\n        padding: '16.5px 14px'\n      }\n    }, {\n      props: ({\n        ownerState,\n        size\n      }) => ownerState.multiline && size === 'small',\n      style: {\n        padding: '8.5px 14px'\n      }\n    }]\n  };\n}));\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n  name: 'MuiOutlinedInput',\n  slot: 'NotchedOutline',\n  overridesResolver: (props, styles) => styles.notchedOutline\n})(memoTheme(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n}));\nconst OutlinedInputInput = styled(InputBaseInput, {\n  name: 'MuiOutlinedInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  padding: '16.5px 14px',\n  ...(!theme.vars && {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n      caretColor: theme.palette.mode === 'light' ? null : '#fff',\n      borderRadius: 'inherit'\n    }\n  }),\n  ...(theme.vars && {\n    '&:-webkit-autofill': {\n      borderRadius: 'inherit'\n    },\n    [theme.getColorSchemeSelector('dark')]: {\n      '&:-webkit-autofill': {\n        WebkitBoxShadow: '0 0 0 100px #266798 inset',\n        WebkitTextFillColor: '#fff',\n        caretColor: '#fff'\n      }\n    }\n  }),\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: '8.5px 14px'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.multiline,\n    style: {\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.startAdornment,\n    style: {\n      paddingLeft: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.endAdornment,\n    style: {\n      paddingRight: 0\n    }\n  }]\n})));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n  var _React$Fragment;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiOutlinedInput'\n  });\n  const {\n    components = {},\n    fullWidth = false,\n    inputComponent = 'input',\n    label,\n    multiline = false,\n    notched,\n    slots = {},\n    type = 'text',\n    ...other\n  } = props;\n  const classes = useUtilityClasses(props);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'focused', 'hiddenLabel', 'size', 'required']\n  });\n  const ownerState = {\n    ...props,\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    type\n  };\n  const RootSlot = slots.root ?? components.Root ?? OutlinedInputRoot;\n  const InputSlot = slots.input ?? components.Input ?? OutlinedInputInput;\n  return /*#__PURE__*/_jsx(InputBase, {\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n      ownerState: ownerState,\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [label, \"\\u2009\", '*']\n      })) : label,\n      notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n    }),\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type,\n    ...other,\n    classes: {\n      ...classes,\n      notchedOutline: null\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label of the `input`. It is only used for layout. The actual labelling\n   * is handled by `InputLabel`.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](https://mui.com/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nif (OutlinedInput) {\n  OutlinedInput.muiName = 'Input';\n}\nexport default OutlinedInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from \"../InputBase/index.js\";\nexport function getOutlinedInputUtilityClass(slot) {\n  return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = {\n  ...inputBaseClasses,\n  ...generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input'])\n};\nexport default outlinedInputClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport getOverlayAlpha from \"../styles/getOverlayAlpha.js\";\nimport { getPaperUtilityClass } from \"./paperClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    square,\n    elevation,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n  };\n  return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n  name: 'MuiPaper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  color: (theme.vars || theme).palette.text.primary,\n  transition: theme.transitions.create('box-shadow'),\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.square,\n    style: {\n      borderRadius: theme.shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'outlined'\n    },\n    style: {\n      border: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: {\n      variant: 'elevation'\n    },\n    style: {\n      boxShadow: 'var(--Paper-shadow)',\n      backgroundImage: 'var(--Paper-overlay)'\n    }\n  }]\n})));\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPaper'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    component = 'div',\n    elevation = 1,\n    square = false,\n    variant = 'elevation',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    elevation,\n    square,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (theme.shadows[elevation] === undefined) {\n      console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n    }\n  }\n  return /*#__PURE__*/_jsx(PaperRoot, {\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ...other,\n    style: {\n      ...(variant === 'elevation' && {\n        '--Paper-shadow': (theme.vars || theme).shadows[elevation],\n        ...(theme.vars && {\n          '--Paper-overlay': theme.vars.overlays?.[elevation]\n        }),\n        ...(!theme.vars && theme.palette.mode === 'dark' && {\n          '--Paper-overlay': `linear-gradient(${alpha('#fff', getOverlayAlpha(elevation))}, ${alpha('#fff', getOverlayAlpha(elevation))})`\n        })\n      }),\n      ...other.style\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It accepts values between 0 and 24 inclusive.\n   * @default 1\n   */\n  elevation: chainPropTypes(integerPropType, props => {\n    const {\n      elevation,\n      variant\n    } = props;\n    if (elevation > 0 && variant === 'outlined') {\n      return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n    }\n    return null;\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'elevation'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n  return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport debounce from \"../utils/debounce.js\";\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport ownerWindow from \"../utils/ownerWindow.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport Grow from \"../Grow/index.js\";\nimport Modal from \"../Modal/index.js\";\nimport PaperBase from \"../Paper/index.js\";\nimport { getPopoverUtilityClass } from \"./popoverClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n  let offset = 0;\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n  return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n  let offset = 0;\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n  return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nexport const PopoverRoot = styled(Modal, {\n  name: 'MuiPopover',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const PopoverPaper = styled(PaperBase, {\n  name: 'MuiPopover',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  position: 'absolute',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // So we see the popover when it's empty.\n  // It's most likely on issue on userland.\n  minWidth: 16,\n  minHeight: 16,\n  maxWidth: 'calc(100% - 32px)',\n  maxHeight: 'calc(100% - 32px)',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPopover'\n  });\n  const {\n    action,\n    anchorEl,\n    anchorOrigin = {\n      vertical: 'top',\n      horizontal: 'left'\n    },\n    anchorPosition,\n    anchorReference = 'anchorEl',\n    children,\n    className,\n    container: containerProp,\n    elevation = 8,\n    marginThreshold = 16,\n    open,\n    PaperProps: PaperPropsProp = {},\n    slots = {},\n    slotProps = {},\n    transformOrigin = {\n      vertical: 'top',\n      horizontal: 'left'\n    },\n    TransitionComponent = Grow,\n    transitionDuration: transitionDurationProp = 'auto',\n    TransitionProps: {\n      onEntering,\n      ...TransitionProps\n    } = {},\n    disableScrollLock = false,\n    ...other\n  } = props;\n  const externalPaperSlotProps = slotProps?.paper ?? PaperPropsProp;\n  const paperRef = React.useRef();\n  const ownerState = {\n    ...props,\n    anchorOrigin,\n    anchorReference,\n    elevation,\n    marginThreshold,\n    externalPaperSlotProps,\n    transformOrigin,\n    TransitionComponent,\n    transitionDuration: transitionDurationProp,\n    TransitionProps\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // Returns the top/left offset of the position\n  // to attach to on the anchor element (or body if none is provided)\n  const getAnchorOffset = React.useCallback(() => {\n    if (anchorReference === 'anchorPosition') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (!anchorPosition) {\n          console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n        }\n      }\n      return anchorPosition;\n    }\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n    // If an anchor element wasn't provided, just use the parent body element of this Popover\n    const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n    const anchorRect = anchorElement.getBoundingClientRect();\n    if (process.env.NODE_ENV !== 'production') {\n      const box = anchorElement.getBoundingClientRect();\n      if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n        console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n      }\n    }\n    return {\n      top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n      left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n    };\n  }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n  // Returns the base transform origin using the element\n  const getTransformOrigin = React.useCallback(elemRect => {\n    return {\n      vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n      horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n    };\n  }, [transformOrigin.horizontal, transformOrigin.vertical]);\n  const getPositioningStyle = React.useCallback(element => {\n    const elemRect = {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n\n    // Get the transform origin point on the element itself\n    const elemTransformOrigin = getTransformOrigin(elemRect);\n    if (anchorReference === 'none') {\n      return {\n        top: null,\n        left: null,\n        transformOrigin: getTransformOriginValue(elemTransformOrigin)\n      };\n    }\n\n    // Get the offset of the anchoring element\n    const anchorOffset = getAnchorOffset();\n\n    // Calculate element positioning\n    let top = anchorOffset.top - elemTransformOrigin.vertical;\n    let left = anchorOffset.left - elemTransformOrigin.horizontal;\n    const bottom = top + elemRect.height;\n    const right = left + elemRect.width;\n\n    // Use the parent window of the anchorEl if provided\n    const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n    // Window thresholds taking required margin into account\n    const heightThreshold = containerWindow.innerHeight - marginThreshold;\n    const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n    // Check if the vertical axis needs shifting\n    if (marginThreshold !== null && top < marginThreshold) {\n      const diff = top - marginThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    } else if (marginThreshold !== null && bottom > heightThreshold) {\n      const diff = bottom - heightThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n        console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n      }\n    }\n\n    // Check if the horizontal axis needs shifting\n    if (marginThreshold !== null && left < marginThreshold) {\n      const diff = left - marginThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    } else if (right > widthThreshold) {\n      const diff = right - widthThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    }\n    return {\n      top: `${Math.round(top)}px`,\n      left: `${Math.round(left)}px`,\n      transformOrigin: getTransformOriginValue(elemTransformOrigin)\n    };\n  }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n  const [isPositioned, setIsPositioned] = React.useState(open);\n  const setPositioningStyles = React.useCallback(() => {\n    const element = paperRef.current;\n    if (!element) {\n      return;\n    }\n    const positioning = getPositioningStyle(element);\n    if (positioning.top !== null) {\n      element.style.setProperty('top', positioning.top);\n    }\n    if (positioning.left !== null) {\n      element.style.left = positioning.left;\n    }\n    element.style.transformOrigin = positioning.transformOrigin;\n    setIsPositioned(true);\n  }, [getPositioningStyle]);\n  React.useEffect(() => {\n    if (disableScrollLock) {\n      window.addEventListener('scroll', setPositioningStyles);\n    }\n    return () => window.removeEventListener('scroll', setPositioningStyles);\n  }, [anchorEl, disableScrollLock, setPositioningStyles]);\n  const handleEntering = (element, isAppearing) => {\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n    setPositioningStyles();\n  };\n  const handleExited = () => {\n    setIsPositioned(false);\n  };\n  React.useEffect(() => {\n    if (open) {\n      setPositioningStyles();\n    }\n  });\n  React.useImperativeHandle(action, () => open ? {\n    updatePosition: () => {\n      setPositioningStyles();\n    }\n  } : null, [open, setPositioningStyles]);\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      setPositioningStyles();\n    });\n    const containerWindow = ownerWindow(anchorEl);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [anchorEl, open, setPositioningStyles]);\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      ...slotProps,\n      paper: externalPaperSlotProps\n    }\n  };\n  const [PaperSlot, paperProps] = useSlot('paper', {\n    elementType: PopoverPaper,\n    externalForwardedProps,\n    additionalProps: {\n      elevation,\n      className: clsx(classes.paper, externalPaperSlotProps?.className),\n      style: isPositioned ? externalPaperSlotProps.style : {\n        ...externalPaperSlotProps.style,\n        opacity: 0\n      }\n    },\n    ownerState\n  });\n  const [RootSlot, {\n    slotProps: rootSlotPropsProp,\n    ...rootProps\n  }] = useSlot('root', {\n    elementType: PopoverRoot,\n    externalForwardedProps,\n    additionalProps: {\n      slotProps: {\n        backdrop: {\n          invisible: true\n        }\n      },\n      container,\n      open\n    },\n    ownerState,\n    className: clsx(classes.root, className)\n  });\n  const handlePaperRef = useForkRef(paperRef, paperProps.ref);\n  return /*#__PURE__*/_jsx(RootSlot, {\n    ...rootProps,\n    ...(!isHostComponent(RootSlot) && {\n      slotProps: rootSlotPropsProp,\n      disableScrollLock\n    }),\n    ...other,\n    ref: ref,\n    children: /*#__PURE__*/_jsx(TransitionComponent, {\n      appear: true,\n      in: open,\n      onEntering: handleEntering,\n      onExited: handleExited,\n      timeout: transitionDuration,\n      ...TransitionProps,\n      children: /*#__PURE__*/_jsx(PaperSlot, {\n        ...paperProps,\n        ref: handlePaperRef,\n        children: children\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports updatePosition() action.\n   */\n  action: refType,\n  /**\n   * An HTML element, [PopoverVirtualElement](https://mui.com/material-ui/react-popover/#virtual-element),\n   * or a function that returns either.\n   * It's used to set the position of the popover.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element or PopoverVirtualElement instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * This is the position that may be used to set the position of the popover.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition: PropTypes.shape({\n    left: PropTypes.number.isRequired,\n    top: PropTypes.number.isRequired\n  }),\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the popover.\n   * @default 'anchorEl'\n   */\n  anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slotProps.root.slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slotProps.root.slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.root.slotProps.backdrop` instead.\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * An HTML element, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   *\n   * By default, it uses the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * The elevation of the popover.\n   * @default 8\n   */\n  elevation: integerPropType,\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   * If null, the popover will not be constrained by the window.\n   * @default 16\n   */\n  marginThreshold: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Props applied to the [`Paper`](https://mui.com/material-ui/api/paper/) element.\n   *\n   * This prop is an alias for `slotProps.paper` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.paper` instead.\n   *\n   * @default {}\n   */\n  PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    component: elementTypeAcceptingRef\n  }),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n  return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","'use client';\n\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport Portal from \"../Portal/index.js\";\nimport { getPopperUtilityClass } from \"./popperClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n  if (direction === 'ltr') {\n    return placement;\n  }\n  switch (placement) {\n    case 'bottom-end':\n      return 'bottom-start';\n    case 'bottom-start':\n      return 'bottom-end';\n    case 'top-end':\n      return 'top-start';\n    case 'top-start':\n      return 'top-end';\n    default:\n      return placement;\n  }\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n  return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n  return !isHTMLElement(element);\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPopperUtilityClass, classes);\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n  const {\n    anchorEl,\n    children,\n    direction,\n    disablePortal,\n    modifiers,\n    open,\n    placement: initialPlacement,\n    popperOptions,\n    popperRef: popperRefProp,\n    slotProps = {},\n    slots = {},\n    TransitionProps,\n    // @ts-ignore internal logic\n    ownerState: ownerStateProp,\n    // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n    ...other\n  } = props;\n  const tooltipRef = React.useRef(null);\n  const ownRef = useForkRef(tooltipRef, forwardedRef);\n  const popperRef = React.useRef(null);\n  const handlePopperRef = useForkRef(popperRef, popperRefProp);\n  const handlePopperRefRef = React.useRef(handlePopperRef);\n  useEnhancedEffect(() => {\n    handlePopperRefRef.current = handlePopperRef;\n  }, [handlePopperRef]);\n  React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n  const rtlPlacement = flipPlacement(initialPlacement, direction);\n  /**\n   * placement initialized from prop but can change during lifetime if modifiers.flip.\n   * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n   */\n  const [placement, setPlacement] = React.useState(rtlPlacement);\n  const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n  React.useEffect(() => {\n    if (popperRef.current) {\n      popperRef.current.forceUpdate();\n    }\n  });\n  React.useEffect(() => {\n    if (anchorEl) {\n      setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n    }\n  }, [anchorEl]);\n  useEnhancedEffect(() => {\n    if (!resolvedAnchorElement || !open) {\n      return undefined;\n    }\n    const handlePopperUpdate = data => {\n      setPlacement(data.placement);\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n        const box = resolvedAnchorElement.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      }\n    }\n    let popperModifiers = [{\n      name: 'preventOverflow',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'flip',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'onUpdate',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: ({\n        state\n      }) => {\n        handlePopperUpdate(state);\n      }\n    }];\n    if (modifiers != null) {\n      popperModifiers = popperModifiers.concat(modifiers);\n    }\n    if (popperOptions && popperOptions.modifiers != null) {\n      popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n    }\n    const popper = createPopper(resolvedAnchorElement, tooltipRef.current, {\n      placement: rtlPlacement,\n      ...popperOptions,\n      modifiers: popperModifiers\n    });\n    handlePopperRefRef.current(popper);\n    return () => {\n      popper.destroy();\n      handlePopperRefRef.current(null);\n    };\n  }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n  const childProps = {\n    placement: placement\n  };\n  if (TransitionProps !== null) {\n    childProps.TransitionProps = TransitionProps;\n  }\n  const classes = useUtilityClasses(props);\n  const Root = slots.root ?? 'div';\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      role: 'tooltip',\n      ref: ownRef\n    },\n    ownerState: props,\n    className: classes.root\n  });\n  return /*#__PURE__*/_jsx(Root, {\n    ...rootProps,\n    children: typeof children === 'function' ? children(childProps) : children\n  });\n});\n\n/**\n * @ignore - internal component.\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n  const {\n    anchorEl,\n    children,\n    container: containerProp,\n    direction = 'ltr',\n    disablePortal = false,\n    keepMounted = false,\n    modifiers,\n    open,\n    placement = 'bottom',\n    popperOptions = defaultPopperOptions,\n    popperRef,\n    style,\n    transition = false,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const [exited, setExited] = React.useState(true);\n  const handleEnter = () => {\n    setExited(false);\n  };\n  const handleExited = () => {\n    setExited(true);\n  };\n  if (!keepMounted && !open && (!transition || exited)) {\n    return null;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  let container;\n  if (containerProp) {\n    container = containerProp;\n  } else if (anchorEl) {\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n    container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n  }\n  const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n  const transitionProps = transition ? {\n    in: open,\n    onEnter: handleEnter,\n    onExited: handleExited\n  } : undefined;\n  return /*#__PURE__*/_jsx(Portal, {\n    disablePortal: disablePortal,\n    container: container,\n    children: /*#__PURE__*/_jsx(PopperTooltip, {\n      anchorEl: anchorEl,\n      direction: direction,\n      disablePortal: disablePortal,\n      modifiers: modifiers,\n      ref: forwardedRef,\n      open: transition ? !exited : open,\n      placement: placement,\n      popperOptions: popperOptions,\n      popperRef: popperRef,\n      slotProps: slotProps,\n      slots: slots,\n      ...other,\n      style: {\n        // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n        position: 'fixed',\n        // Fix Popper.js display issue\n        top: 0,\n        left: 0,\n        display,\n        ...style\n      },\n      TransitionProps: transitionProps,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Direction of the text.\n   * @default 'ltr'\n   */\n  direction: PropTypes.oneOf(['ltr', 'rtl']),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport { useRtl } from '@mui/system/RtlProvider';\nimport refType from '@mui/utils/refType';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport BasePopper from \"./BasePopper.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n  name: 'MuiPopper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n  const isRtl = useRtl();\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPopper'\n  });\n  const {\n    anchorEl,\n    component,\n    components,\n    componentsProps,\n    container,\n    disablePortal,\n    keepMounted,\n    modifiers,\n    open,\n    placement,\n    popperOptions,\n    popperRef,\n    transition,\n    slots,\n    slotProps,\n    ...other\n  } = props;\n  const RootComponent = slots?.root ?? components?.Root;\n  const otherProps = {\n    anchorEl,\n    container,\n    disablePortal,\n    keepMounted,\n    modifiers,\n    open,\n    placement,\n    popperOptions,\n    popperRef,\n    transition,\n    ...other\n  };\n  return /*#__PURE__*/_jsx(PopperRoot, {\n    as: component,\n    direction: isRtl ? 'rtl' : 'ltr',\n    slots: {\n      root: RootComponent\n    },\n    slotProps: slotProps ?? componentsProps,\n    ...otherProps,\n    ref: ref\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The props used for each slot inside the Popper.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopperUtilityClass(slot) {\n  return generateUtilityClass('MuiPopper', slot);\n}\nconst popperClasses = generateUtilityClasses('MuiPopper', ['root']);\nexport default popperClasses;","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef, unstable_getReactNodeRef as getReactNodeRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/material-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/material-ui/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n  const {\n    children,\n    container,\n    disablePortal = false\n  } = props;\n  const [mountNode, setMountNode] = React.useState(null);\n  const handleRef = useForkRef(getReactNodeRef(children), forwardedRef);\n  useEnhancedEffect(() => {\n    if (!disablePortal) {\n      setMountNode(getContainer(container) || document.body);\n    }\n  }, [container, disablePortal]);\n  useEnhancedEffect(() => {\n    if (mountNode && !disablePortal) {\n      setRef(forwardedRef, mountNode);\n      return () => {\n        setRef(forwardedRef, null);\n      };\n    }\n    return undefined;\n  }, [forwardedRef, mountNode, disablePortal]);\n  if (disablePortal) {\n    if (/*#__PURE__*/React.isValidElement(children)) {\n      const newProps = {\n        ref: handleRef\n      };\n      return /*#__PURE__*/React.cloneElement(children, newProps);\n    }\n    return /*#__PURE__*/_jsx(React.Fragment, {\n      children: children\n    });\n  }\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The children to render into the `container`.\n   */\n  children: PropTypes.node,\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { html, body } from \"../CssBaseline/CssBaseline.js\";\nimport { getScopedCssBaselineUtilityClass } from \"./scopedCssBaselineClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getScopedCssBaselineUtilityClass, classes);\n};\nconst ScopedCssBaselineRoot = styled('div', {\n  name: 'MuiScopedCssBaseline',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const colorSchemeStyles = {};\n  if (theme.colorSchemes) {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      const selector = theme.getColorSchemeSelector(key);\n      if (selector.startsWith('@')) {\n        colorSchemeStyles[selector] = {\n          colorScheme: scheme.palette?.mode\n        };\n      } else {\n        colorSchemeStyles[`&${selector.replace(/\\s*&/, '')}`] = {\n          colorScheme: scheme.palette?.mode\n        };\n      }\n    });\n  }\n  return {\n    ...html(theme, false),\n    ...body(theme),\n    '& *, & *::before, & *::after': {\n      boxSizing: 'inherit'\n    },\n    '& strong, & b': {\n      fontWeight: theme.typography.fontWeightBold\n    },\n    variants: [{\n      props: {\n        enableColorScheme: true\n      },\n      style: theme.vars ? colorSchemeStyles : {\n        colorScheme: theme.palette.mode\n      }\n    }]\n  };\n}));\nconst ScopedCssBaseline = /*#__PURE__*/React.forwardRef(function ScopedCssBaseline(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiScopedCssBaseline'\n  });\n  const {\n    className,\n    component = 'div',\n    enableColorScheme,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ScopedCssBaselineRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ScopedCssBaseline.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Enable `color-scheme` CSS property to use `theme.palette.mode`.\n   * For more details, check out https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme\n   * For browser support, check out https://caniuse.com/?search=color-scheme\n   */\n  enableColorScheme: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ScopedCssBaseline;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getScopedCssBaselineUtilityClass(slot) {\n  return generateUtilityClass('MuiScopedCssBaseline', slot);\n}\nconst scopedCssBaselineClasses = generateUtilityClasses('MuiScopedCssBaseline', ['root']);\nexport default scopedCssBaselineClasses;","'use client';\n\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nvar _span;\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport Menu from \"../Menu/Menu.js\";\nimport { StyledSelectSelect, StyledSelectIcon } from \"../NativeSelect/NativeSelectInput.js\";\nimport { isFilled } from \"../InputBase/utils.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport slotShouldForwardProp from \"../styles/slotShouldForwardProp.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport selectClasses, { getSelectUtilityClasses } from \"./selectClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled(StyledSelectSelect, {\n  name: 'MuiSelect',\n  slot: 'Select',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [\n    // Win specificity over the input base\n    {\n      [`&.${selectClasses.select}`]: styles.select\n    }, {\n      [`&.${selectClasses.select}`]: styles[ownerState.variant]\n    }, {\n      [`&.${selectClasses.error}`]: styles.error\n    }, {\n      [`&.${selectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})({\n  // Win specificity over the input base\n  [`&.${selectClasses.select}`]: {\n    height: 'auto',\n    // Resets for multiple select with chips\n    minHeight: '1.4375em',\n    // Required for select\\text-field height consistency\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  }\n});\nconst SelectIcon = styled(StyledSelectIcon, {\n  name: 'MuiSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})({});\nconst SelectNativeInput = styled('input', {\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n  name: 'MuiSelect',\n  slot: 'NativeInput',\n  overridesResolver: (props, styles) => styles.nativeInput\n})({\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  opacity: 0,\n  pointerEvents: 'none',\n  width: '100%',\n  boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nfunction isEmpty(display) {\n  return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n    nativeInput: ['nativeInput']\n  };\n  return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n  const {\n    'aria-describedby': ariaDescribedby,\n    'aria-label': ariaLabel,\n    autoFocus,\n    autoWidth,\n    children,\n    className,\n    defaultOpen,\n    defaultValue,\n    disabled,\n    displayEmpty,\n    error = false,\n    IconComponent,\n    inputRef: inputRefProp,\n    labelId,\n    MenuProps = {},\n    multiple,\n    name,\n    onBlur,\n    onChange,\n    onClose,\n    onFocus,\n    onOpen,\n    open: openProp,\n    readOnly,\n    renderValue,\n    SelectDisplayProps = {},\n    tabIndex: tabIndexProp,\n    // catching `type` from Input which makes no sense for SelectInput\n    type,\n    value: valueProp,\n    variant = 'standard',\n    ...other\n  } = props;\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Select'\n  });\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: defaultOpen,\n    name: 'Select'\n  });\n  const inputRef = React.useRef(null);\n  const displayRef = React.useRef(null);\n  const [displayNode, setDisplayNode] = React.useState(null);\n  const {\n    current: isOpenControlled\n  } = React.useRef(openProp != null);\n  const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n  const handleRef = useForkRef(ref, inputRefProp);\n  const handleDisplayRef = React.useCallback(node => {\n    displayRef.current = node;\n    if (node) {\n      setDisplayNode(node);\n    }\n  }, []);\n  const anchorElement = displayNode?.parentNode;\n  React.useImperativeHandle(handleRef, () => ({\n    focus: () => {\n      displayRef.current.focus();\n    },\n    node: inputRef.current,\n    value\n  }), [value]);\n\n  // Resize menu on `defaultOpen` automatic toggle.\n  React.useEffect(() => {\n    if (defaultOpen && openState && displayNode && !isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      displayRef.current.focus();\n    }\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [displayNode, autoWidth]);\n  // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n  // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n  React.useEffect(() => {\n    if (autoFocus) {\n      displayRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useEffect(() => {\n    if (!labelId) {\n      return undefined;\n    }\n    const label = ownerDocument(displayRef.current).getElementById(labelId);\n    if (label) {\n      const handler = () => {\n        if (getSelection().isCollapsed) {\n          displayRef.current.focus();\n        }\n      };\n      label.addEventListener('click', handler);\n      return () => {\n        label.removeEventListener('click', handler);\n      };\n    }\n    return undefined;\n  }, [labelId]);\n  const update = (open, event) => {\n    if (open) {\n      if (onOpen) {\n        onOpen(event);\n      }\n    } else if (onClose) {\n      onClose(event);\n    }\n    if (!isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      setOpenState(open);\n    }\n  };\n  const handleMouseDown = event => {\n    // Ignore everything but left-click\n    if (event.button !== 0) {\n      return;\n    }\n    // Hijack the default focus behavior.\n    event.preventDefault();\n    displayRef.current.focus();\n    update(true, event);\n  };\n  const handleClose = event => {\n    update(false, event);\n  };\n  const childrenArray = React.Children.toArray(children);\n\n  // Support autofill.\n  const handleChange = event => {\n    const child = childrenArray.find(childItem => childItem.props.value === event.target.value);\n    if (child === undefined) {\n      return;\n    }\n    setValueState(child.props.value);\n    if (onChange) {\n      onChange(event, child);\n    }\n  };\n  const handleItemClick = child => event => {\n    let newValue;\n\n    // We use the tabindex attribute to signal the available options.\n    if (!event.currentTarget.hasAttribute('tabindex')) {\n      return;\n    }\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      const itemIndex = value.indexOf(child.props.value);\n      if (itemIndex === -1) {\n        newValue.push(child.props.value);\n      } else {\n        newValue.splice(itemIndex, 1);\n      }\n    } else {\n      newValue = child.props.value;\n    }\n    if (child.props.onClick) {\n      child.props.onClick(event);\n    }\n    if (value !== newValue) {\n      setValueState(newValue);\n      if (onChange) {\n        // Redefine target to allow name and value to be read.\n        // This allows seamless integration with the most popular form libraries.\n        // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n        // Clone the event to not override `target` of the original event.\n        const nativeEvent = event.nativeEvent || event;\n        const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        Object.defineProperty(clonedEvent, 'target', {\n          writable: true,\n          value: {\n            value: newValue,\n            name\n          }\n        });\n        onChange(clonedEvent, child);\n      }\n    }\n    if (!multiple) {\n      update(false, event);\n    }\n  };\n  const handleKeyDown = event => {\n    if (!readOnly) {\n      const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n      // The native select doesn't respond to enter on macOS, but it's recommended by\n      // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n      'Enter'];\n      if (validKeys.includes(event.key)) {\n        event.preventDefault();\n        update(true, event);\n      }\n    }\n  };\n  const open = displayNode !== null && openState;\n  const handleBlur = event => {\n    // if open event.stopImmediatePropagation\n    if (!open && onBlur) {\n      // Preact support, target is read only property on a native event.\n      Object.defineProperty(event, 'target', {\n        writable: true,\n        value: {\n          value,\n          name\n        }\n      });\n      onBlur(event);\n    }\n  };\n  delete other['aria-invalid'];\n  let display;\n  let displaySingle;\n  const displayMultiple = [];\n  let computeDisplay = false;\n  let foundMatch = false;\n\n  // No need to display any value if the field is empty.\n  if (isFilled({\n    value\n  }) || displayEmpty) {\n    if (renderValue) {\n      display = renderValue(value);\n    } else {\n      computeDisplay = true;\n    }\n  }\n  const items = childrenArray.map(child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    let selected;\n    if (multiple) {\n      if (!Array.isArray(value)) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n      }\n      selected = value.some(v => areEqualValues(v, child.props.value));\n      if (selected && computeDisplay) {\n        displayMultiple.push(child.props.children);\n      }\n    } else {\n      selected = areEqualValues(value, child.props.value);\n      if (selected && computeDisplay) {\n        displaySingle = child.props.children;\n      }\n    }\n    if (selected) {\n      foundMatch = true;\n    }\n    return /*#__PURE__*/React.cloneElement(child, {\n      'aria-selected': selected ? 'true' : 'false',\n      onClick: handleItemClick(child),\n      onKeyUp: event => {\n        if (event.key === ' ') {\n          // otherwise our MenuItems dispatches a click event\n          // it's not behavior of the native <option> and causes\n          // the select to close immediately since we open on space keydown\n          event.preventDefault();\n        }\n        if (child.props.onKeyUp) {\n          child.props.onKeyUp(event);\n        }\n      },\n      role: 'option',\n      selected,\n      value: undefined,\n      // The value is most likely not a valid HTML attribute.\n      'data-value': child.props.value // Instead, we provide it as a data attribute.\n    });\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!foundMatch && !multiple && value !== '') {\n        const values = childrenArray.map(child => child.props.value);\n        console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n      }\n    }, [foundMatch, childrenArray, multiple, name, value]);\n  }\n  if (computeDisplay) {\n    if (multiple) {\n      if (displayMultiple.length === 0) {\n        display = null;\n      } else {\n        display = displayMultiple.reduce((output, child, index) => {\n          output.push(child);\n          if (index < displayMultiple.length - 1) {\n            output.push(', ');\n          }\n          return output;\n        }, []);\n      }\n    } else {\n      display = displaySingle;\n    }\n  }\n\n  // Avoid performing a layout computation in the render method.\n  let menuMinWidth = menuMinWidthState;\n  if (!autoWidth && isOpenControlled && displayNode) {\n    menuMinWidth = anchorElement.clientWidth;\n  }\n  let tabIndex;\n  if (typeof tabIndexProp !== 'undefined') {\n    tabIndex = tabIndexProp;\n  } else {\n    tabIndex = disabled ? null : 0;\n  }\n  const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n  const ownerState = {\n    ...props,\n    variant,\n    value,\n    open,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  const paperProps = {\n    ...MenuProps.PaperProps,\n    ...MenuProps.slotProps?.paper\n  };\n  const listboxId = useId();\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(SelectSelect, {\n      as: \"div\",\n      ref: handleDisplayRef,\n      tabIndex: tabIndex,\n      role: \"combobox\",\n      \"aria-controls\": listboxId,\n      \"aria-disabled\": disabled ? 'true' : undefined,\n      \"aria-expanded\": open ? 'true' : 'false',\n      \"aria-haspopup\": \"listbox\",\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n      \"aria-describedby\": ariaDescribedby,\n      onKeyDown: handleKeyDown,\n      onMouseDown: disabled || readOnly ? null : handleMouseDown,\n      onBlur: handleBlur,\n      onFocus: onFocus,\n      ...SelectDisplayProps,\n      ownerState: ownerState,\n      className: clsx(SelectDisplayProps.className, classes.select, className)\n      // The id is required for proper a11y\n      ,\n      id: buttonId,\n      children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })) : display\n    }), /*#__PURE__*/_jsx(SelectNativeInput, {\n      \"aria-invalid\": error,\n      value: Array.isArray(value) ? value.join(',') : value,\n      name: name,\n      ref: inputRef,\n      \"aria-hidden\": true,\n      onChange: handleChange,\n      tabIndex: -1,\n      disabled: disabled,\n      className: classes.nativeInput,\n      autoFocus: autoFocus,\n      ...other,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(SelectIcon, {\n      as: IconComponent,\n      className: classes.icon,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(Menu, {\n      id: `menu-${name || ''}`,\n      anchorEl: anchorElement,\n      open: open,\n      onClose: handleClose,\n      anchorOrigin: {\n        vertical: 'bottom',\n        horizontal: 'center'\n      },\n      transformOrigin: {\n        vertical: 'top',\n        horizontal: 'center'\n      },\n      ...MenuProps,\n      MenuListProps: {\n        'aria-labelledby': labelId,\n        role: 'listbox',\n        'aria-multiselectable': multiple ? 'true' : undefined,\n        disableListWrap: true,\n        id: listboxId,\n        ...MenuProps.MenuListProps\n      },\n      slotProps: {\n        ...MenuProps.slotProps,\n        paper: {\n          ...paperProps,\n          style: {\n            minWidth: menuMinWidth,\n            ...(paperProps != null ? paperProps.style : null)\n          }\n        }\n      },\n      children: items\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * @ignore\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * @ignore\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<MenuItem>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n   * Equivalent to `ref`\n   */\n  inputRef: refType,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * @param {object} [child] The react element that was selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the selected value.\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.any,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport SelectInput from \"./SelectInput.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport ArrowDropDownIcon from \"../internal/svg-icons/ArrowDropDown.js\";\nimport Input from \"../Input/index.js\";\nimport NativeSelectInput from \"../NativeSelect/NativeSelectInput.js\";\nimport FilledInput from \"../FilledInput/index.js\";\nimport OutlinedInput from \"../OutlinedInput/index.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return classes;\n};\nconst styledRootConfig = {\n  name: 'MuiSelect',\n  overridesResolver: (props, styles) => styles.root,\n  shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n  slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n  const props = useThemeProps({\n    name: 'MuiSelect',\n    props: inProps\n  });\n  const {\n    autoWidth = false,\n    children,\n    classes: classesProp = {},\n    className,\n    defaultOpen = false,\n    displayEmpty = false,\n    IconComponent = ArrowDropDownIcon,\n    id,\n    input,\n    inputProps,\n    label,\n    labelId,\n    MenuProps,\n    multiple = false,\n    native = false,\n    onClose,\n    onOpen,\n    open,\n    renderValue,\n    SelectDisplayProps,\n    variant: variantProp = 'outlined',\n    ...other\n  } = props;\n  const inputComponent = native ? NativeSelectInput : SelectInput;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'error']\n  });\n  const variant = fcs.variant || variantProp;\n  const ownerState = {\n    ...props,\n    variant,\n    classes: classesProp\n  };\n  const classes = useUtilityClasses(ownerState);\n  const {\n    root,\n    ...restOfClasses\n  } = classes;\n  const InputComponent = input || {\n    standard: /*#__PURE__*/_jsx(StyledInput, {\n      ownerState: ownerState\n    }),\n    outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n      label: label,\n      ownerState: ownerState\n    }),\n    filled: /*#__PURE__*/_jsx(StyledFilledInput, {\n      ownerState: ownerState\n    })\n  }[variant];\n  const inputComponentRef = useForkRef(ref, getReactNodeRef(InputComponent));\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(InputComponent, {\n      // Most of the logic is implemented in `SelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent,\n      inputProps: {\n        children,\n        error: fcs.error,\n        IconComponent,\n        variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        multiple,\n        ...(native ? {\n          id\n        } : {\n          autoWidth,\n          defaultOpen,\n          displayEmpty,\n          labelId,\n          MenuProps,\n          onClose,\n          onOpen,\n          open,\n          renderValue,\n          SelectDisplayProps: {\n            id,\n            ...SelectDisplayProps\n          }\n        }),\n        ...inputProps,\n        classes: inputProps ? deepmerge(restOfClasses, inputProps.classes) : restOfClasses,\n        ...(input ? input.props.inputProps : {})\n      },\n      ...((multiple && native || displayEmpty) && variant === 'outlined' ? {\n        notched: true\n      } : {}),\n      ref: inputComponentRef,\n      className: clsx(InputComponent.props.className, className, classes.root),\n      // If a custom input is provided via 'input' prop, do not allow 'variant' to be propagated to it's root element. See https://github.com/mui/material-ui/issues/33894.\n      ...(!input && {\n        variant\n      }),\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   * @default false\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   *\n   * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n   * You can only use it when the `native` prop is `false` (default).\n   * @default false\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, a value is displayed even if no items are selected.\n   *\n   * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n   * returns the value to be displayed when no items are selected.\n   *\n   * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n   * The label should either be hidden or forced to a shrunk state.\n   * @default false\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * The `id` of the wrapper element or the `select` element when `native`.\n   */\n  id: PropTypes.string,\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: PropTypes.element,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * When `native` is `true`, the attributes are applied on the `select` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * See [OutlinedInput#label](https://mui.com/material-ui/api/outlined-input/#props)\n   */\n  label: PropTypes.node,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](https://mui.com/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * If `true`, the component uses a native `select` element.\n   * @default false\n   */\n  native: PropTypes.bool,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {SelectChangeEvent<Value>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapses).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  open: PropTypes.bool,\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` prop is `false` (default).\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The `input` value. Providing an empty string will select no options.\n   * Set to an empty string `''` if you don't want any of the available options to be selected.\n   *\n   * If the value is an object it must have reference equality with the option in order to be selected.\n   * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n   */\n  value: PropTypes.oneOfType([PropTypes.oneOf(['']), PropTypes.any]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default selectClasses;","'use client';\n\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useControlled as useControlled, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_useForkRef as useForkRef, unstable_isFocusVisible as isFocusVisible, visuallyHidden, clamp } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\nimport areArraysEqual from \"../utils/areArraysEqual.js\";\nconst INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\nfunction asc(a, b) {\n  return a - b;\n}\nfunction findClosest(values, currentValue) {\n  const {\n    index: closestIndex\n  } = values.reduce((acc, value, index) => {\n    const distance = Math.abs(currentValue - value);\n    if (acc === null || distance < acc.distance || distance === acc.distance) {\n      return {\n        distance,\n        index\n      };\n    }\n    return acc;\n  }, null) ?? {};\n  return closestIndex;\n}\nfunction trackFinger(event, touchId) {\n  // The event is TouchEvent\n  if (touchId.current !== undefined && event.changedTouches) {\n    const touchEvent = event;\n    for (let i = 0; i < touchEvent.changedTouches.length; i += 1) {\n      const touch = touchEvent.changedTouches[i];\n      if (touch.identifier === touchId.current) {\n        return {\n          x: touch.clientX,\n          y: touch.clientY\n        };\n      }\n    }\n    return false;\n  }\n\n  // The event is MouseEvent\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n}\nexport function valueToPercent(value, min, max) {\n  return (value - min) * 100 / (max - min);\n}\nfunction percentToValue(percent, min, max) {\n  return (max - min) * percent + min;\n}\nfunction getDecimalPrecision(num) {\n  // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n  // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n  if (Math.abs(num) < 1) {\n    const parts = num.toExponential().split('e-');\n    const matissaDecimalPart = parts[0].split('.')[1];\n    return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n  }\n  const decimalPart = num.toString().split('.')[1];\n  return decimalPart ? decimalPart.length : 0;\n}\nfunction roundValueToStep(value, step, min) {\n  const nearest = Math.round((value - min) / step) * step + min;\n  return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\nfunction setValueIndex({\n  values,\n  newValue,\n  index\n}) {\n  const output = values.slice();\n  output[index] = newValue;\n  return output.sort(asc);\n}\nfunction focusThumb({\n  sliderRef,\n  activeIndex,\n  setActive\n}) {\n  const doc = ownerDocument(sliderRef.current);\n  if (!sliderRef.current?.contains(doc.activeElement) || Number(doc?.activeElement?.getAttribute('data-index')) !== activeIndex) {\n    sliderRef.current?.querySelector(`[type=\"range\"][data-index=\"${activeIndex}\"]`).focus();\n  }\n  if (setActive) {\n    setActive(activeIndex);\n  }\n}\nfunction areValuesEqual(newValue, oldValue) {\n  if (typeof newValue === 'number' && typeof oldValue === 'number') {\n    return newValue === oldValue;\n  }\n  if (typeof newValue === 'object' && typeof oldValue === 'object') {\n    return areArraysEqual(newValue, oldValue);\n  }\n  return false;\n}\nconst axisProps = {\n  horizontal: {\n    offset: percent => ({\n      left: `${percent}%`\n    }),\n    leap: percent => ({\n      width: `${percent}%`\n    })\n  },\n  'horizontal-reverse': {\n    offset: percent => ({\n      right: `${percent}%`\n    }),\n    leap: percent => ({\n      width: `${percent}%`\n    })\n  },\n  vertical: {\n    offset: percent => ({\n      bottom: `${percent}%`\n    }),\n    leap: percent => ({\n      height: `${percent}%`\n    })\n  }\n};\nexport const Identity = x => x;\n\n// TODO: remove support for Safari < 13.\n// https://caniuse.com/#search=touch-action\n//\n// Safari, on iOS, supports touch action since v13.\n// Over 80% of the iOS phones are compatible\n// in August 2020.\n// Utilizing the CSS.supports method to check if touch-action is supported.\n// Since CSS.supports is supported on all but Edge@12 and IE and touch-action\n// is supported on both Edge@12 and IE if CSS.supports is not available that means that\n// touch-action will be supported\nlet cachedSupportsTouchActionNone;\nfunction doesSupportTouchActionNone() {\n  if (cachedSupportsTouchActionNone === undefined) {\n    if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {\n      cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');\n    } else {\n      cachedSupportsTouchActionNone = true;\n    }\n  }\n  return cachedSupportsTouchActionNone;\n}\n/**\n *\n * Demos:\n *\n * - [Slider](https://mui.com/base-ui/react-slider/#hook)\n *\n * API:\n *\n * - [useSlider API](https://mui.com/base-ui/react-slider/hooks-api/#use-slider)\n */\nexport function useSlider(parameters) {\n  const {\n    'aria-labelledby': ariaLabelledby,\n    defaultValue,\n    disabled = false,\n    disableSwap = false,\n    isRtl = false,\n    marks: marksProp = false,\n    max = 100,\n    min = 0,\n    name,\n    onChange,\n    onChangeCommitted,\n    orientation = 'horizontal',\n    rootRef: ref,\n    scale = Identity,\n    step = 1,\n    shiftStep = 10,\n    tabIndex,\n    value: valueProp\n  } = parameters;\n  const touchId = React.useRef(undefined);\n  // We can't use the :active browser pseudo-classes.\n  // - The active state isn't triggered when clicking on the rail.\n  // - The active state isn't transferred when inversing a range slider.\n  const [active, setActive] = React.useState(-1);\n  const [open, setOpen] = React.useState(-1);\n  const [dragging, setDragging] = React.useState(false);\n  const moveCount = React.useRef(0);\n  const [valueDerived, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue ?? min,\n    name: 'Slider'\n  });\n  const handleChange = onChange && ((event, value, thumbIndex) => {\n    // Redefine target to allow name and value to be read.\n    // This allows seamless integration with the most popular form libraries.\n    // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n    // Clone the event to not override `target` of the original event.\n    const nativeEvent = event.nativeEvent || event;\n    // @ts-ignore The nativeEvent is function, not object\n    const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n    Object.defineProperty(clonedEvent, 'target', {\n      writable: true,\n      value: {\n        value,\n        name\n      }\n    });\n    onChange(clonedEvent, value, thumbIndex);\n  });\n  const range = Array.isArray(valueDerived);\n  let values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n  values = values.map(value => value == null ? min : clamp(value, min, max));\n  const marks = marksProp === true && step !== null ? [...Array(Math.floor((max - min) / step) + 1)].map((_, index) => ({\n    value: min + step * index\n  })) : marksProp || [];\n  const marksValues = marks.map(mark => mark.value);\n  const [focusedThumbIndex, setFocusedThumbIndex] = React.useState(-1);\n  const sliderRef = React.useRef(null);\n  const handleRef = useForkRef(ref, sliderRef);\n  const createHandleHiddenInputFocus = otherHandlers => event => {\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    if (isFocusVisible(event.target)) {\n      setFocusedThumbIndex(index);\n    }\n    setOpen(index);\n    otherHandlers?.onFocus?.(event);\n  };\n  const createHandleHiddenInputBlur = otherHandlers => event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusedThumbIndex(-1);\n    }\n    setOpen(-1);\n    otherHandlers?.onBlur?.(event);\n  };\n  const changeValue = (event, valueInput) => {\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    const value = values[index];\n    const marksIndex = marksValues.indexOf(value);\n    let newValue = valueInput;\n    if (marks && step == null) {\n      const maxMarksValue = marksValues[marksValues.length - 1];\n      if (newValue > maxMarksValue) {\n        newValue = maxMarksValue;\n      } else if (newValue < marksValues[0]) {\n        newValue = marksValues[0];\n      } else {\n        newValue = newValue < value ? marksValues[marksIndex - 1] : marksValues[marksIndex + 1];\n      }\n    }\n    newValue = clamp(newValue, min, max);\n    if (range) {\n      // Bound the new value to the thumb's neighbours.\n      if (disableSwap) {\n        newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n      }\n      const previousValue = newValue;\n      newValue = setValueIndex({\n        values,\n        newValue,\n        index\n      });\n      let activeIndex = index;\n\n      // Potentially swap the index if needed.\n      if (!disableSwap) {\n        activeIndex = newValue.indexOf(previousValue);\n      }\n      focusThumb({\n        sliderRef,\n        activeIndex\n      });\n    }\n    setValueState(newValue);\n    setFocusedThumbIndex(index);\n    if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n      handleChange(event, newValue, index);\n    }\n    if (onChangeCommitted) {\n      onChangeCommitted(event, newValue);\n    }\n  };\n  const createHandleHiddenInputKeyDown = otherHandlers => event => {\n    // The Shift + Up/Down keyboard shortcuts for moving the slider makes sense to be supported\n    // only if the step is defined. If the step is null, this means tha the marks are used for specifying the valid values.\n    if (step !== null) {\n      const index = Number(event.currentTarget.getAttribute('data-index'));\n      const value = values[index];\n      let newValue = null;\n      if ((event.key === 'ArrowLeft' || event.key === 'ArrowDown') && event.shiftKey || event.key === 'PageDown') {\n        newValue = Math.max(value - shiftStep, min);\n      } else if ((event.key === 'ArrowRight' || event.key === 'ArrowUp') && event.shiftKey || event.key === 'PageUp') {\n        newValue = Math.min(value + shiftStep, max);\n      }\n      if (newValue !== null) {\n        changeValue(event, newValue);\n        event.preventDefault();\n      }\n    }\n    otherHandlers?.onKeyDown?.(event);\n  };\n  useEnhancedEffect(() => {\n    if (disabled && sliderRef.current.contains(document.activeElement)) {\n      // This is necessary because Firefox and Safari will keep focus\n      // on a disabled element:\n      // https://codesandbox.io/p/sandbox/mui-pr-22247-forked-h151h?file=/src/App.js\n      // @ts-ignore\n      document.activeElement?.blur();\n    }\n  }, [disabled]);\n  if (disabled && active !== -1) {\n    setActive(-1);\n  }\n  if (disabled && focusedThumbIndex !== -1) {\n    setFocusedThumbIndex(-1);\n  }\n  const createHandleHiddenInputChange = otherHandlers => event => {\n    otherHandlers.onChange?.(event);\n    // @ts-ignore\n    changeValue(event, event.target.valueAsNumber);\n  };\n  const previousIndex = React.useRef(undefined);\n  let axis = orientation;\n  if (isRtl && orientation === 'horizontal') {\n    axis += '-reverse';\n  }\n  const getFingerNewValue = ({\n    finger,\n    move = false\n  }) => {\n    const {\n      current: slider\n    } = sliderRef;\n    const {\n      width,\n      height,\n      bottom,\n      left\n    } = slider.getBoundingClientRect();\n    let percent;\n    if (axis.startsWith('vertical')) {\n      percent = (bottom - finger.y) / height;\n    } else {\n      percent = (finger.x - left) / width;\n    }\n    if (axis.includes('-reverse')) {\n      percent = 1 - percent;\n    }\n    let newValue;\n    newValue = percentToValue(percent, min, max);\n    if (step) {\n      newValue = roundValueToStep(newValue, step, min);\n    } else {\n      const closestIndex = findClosest(marksValues, newValue);\n      newValue = marksValues[closestIndex];\n    }\n    newValue = clamp(newValue, min, max);\n    let activeIndex = 0;\n    if (range) {\n      if (!move) {\n        activeIndex = findClosest(values, newValue);\n      } else {\n        activeIndex = previousIndex.current;\n      }\n\n      // Bound the new value to the thumb's neighbours.\n      if (disableSwap) {\n        newValue = clamp(newValue, values[activeIndex - 1] || -Infinity, values[activeIndex + 1] || Infinity);\n      }\n      const previousValue = newValue;\n      newValue = setValueIndex({\n        values,\n        newValue,\n        index: activeIndex\n      });\n\n      // Potentially swap the index if needed.\n      if (!(disableSwap && move)) {\n        activeIndex = newValue.indexOf(previousValue);\n        previousIndex.current = activeIndex;\n      }\n    }\n    return {\n      newValue,\n      activeIndex\n    };\n  };\n  const handleTouchMove = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId);\n    if (!finger) {\n      return;\n    }\n    moveCount.current += 1;\n\n    // Cancel move in case some other element consumed a mouseup event and it was not fired.\n    // @ts-ignore buttons doesn't not exists on touch event\n    if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      handleTouchEnd(nativeEvent);\n      return;\n    }\n    const {\n      newValue,\n      activeIndex\n    } = getFingerNewValue({\n      finger,\n      move: true\n    });\n    focusThumb({\n      sliderRef,\n      activeIndex,\n      setActive\n    });\n    setValueState(newValue);\n    if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n      setDragging(true);\n    }\n    if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n      handleChange(nativeEvent, newValue, activeIndex);\n    }\n  });\n  const handleTouchEnd = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId);\n    setDragging(false);\n    if (!finger) {\n      return;\n    }\n    const {\n      newValue\n    } = getFingerNewValue({\n      finger,\n      move: true\n    });\n    setActive(-1);\n    if (nativeEvent.type === 'touchend') {\n      setOpen(-1);\n    }\n    if (onChangeCommitted) {\n      onChangeCommitted(nativeEvent, newValue);\n    }\n    touchId.current = undefined;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    stopListening();\n  });\n  const handleTouchStart = useEventCallback(nativeEvent => {\n    if (disabled) {\n      return;\n    }\n    // If touch-action: none; is not supported we need to prevent the scroll manually.\n    if (!doesSupportTouchActionNone()) {\n      nativeEvent.preventDefault();\n    }\n    const touch = nativeEvent.changedTouches[0];\n    if (touch != null) {\n      // A number that uniquely identifies the current finger in the touch session.\n      touchId.current = touch.identifier;\n    }\n    const finger = trackFinger(nativeEvent, touchId);\n    if (finger !== false) {\n      const {\n        newValue,\n        activeIndex\n      } = getFingerNewValue({\n        finger\n      });\n      focusThumb({\n        sliderRef,\n        activeIndex,\n        setActive\n      });\n      setValueState(newValue);\n      if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n        handleChange(nativeEvent, newValue, activeIndex);\n      }\n    }\n    moveCount.current = 0;\n    const doc = ownerDocument(sliderRef.current);\n    doc.addEventListener('touchmove', handleTouchMove, {\n      passive: true\n    });\n    doc.addEventListener('touchend', handleTouchEnd, {\n      passive: true\n    });\n  });\n  const stopListening = React.useCallback(() => {\n    const doc = ownerDocument(sliderRef.current);\n    doc.removeEventListener('mousemove', handleTouchMove);\n    doc.removeEventListener('mouseup', handleTouchEnd);\n    doc.removeEventListener('touchmove', handleTouchMove);\n    doc.removeEventListener('touchend', handleTouchEnd);\n  }, [handleTouchEnd, handleTouchMove]);\n  React.useEffect(() => {\n    const {\n      current: slider\n    } = sliderRef;\n    slider.addEventListener('touchstart', handleTouchStart, {\n      passive: doesSupportTouchActionNone()\n    });\n    return () => {\n      slider.removeEventListener('touchstart', handleTouchStart);\n      stopListening();\n    };\n  }, [stopListening, handleTouchStart]);\n  React.useEffect(() => {\n    if (disabled) {\n      stopListening();\n    }\n  }, [disabled, stopListening]);\n  const createHandleMouseDown = otherHandlers => event => {\n    otherHandlers.onMouseDown?.(event);\n    if (disabled) {\n      return;\n    }\n    if (event.defaultPrevented) {\n      return;\n    }\n\n    // Only handle left clicks\n    if (event.button !== 0) {\n      return;\n    }\n\n    // Avoid text selection\n    event.preventDefault();\n    const finger = trackFinger(event, touchId);\n    if (finger !== false) {\n      const {\n        newValue,\n        activeIndex\n      } = getFingerNewValue({\n        finger\n      });\n      focusThumb({\n        sliderRef,\n        activeIndex,\n        setActive\n      });\n      setValueState(newValue);\n      if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n        handleChange(event, newValue, activeIndex);\n      }\n    }\n    moveCount.current = 0;\n    const doc = ownerDocument(sliderRef.current);\n    doc.addEventListener('mousemove', handleTouchMove, {\n      passive: true\n    });\n    doc.addEventListener('mouseup', handleTouchEnd);\n  };\n  const trackOffset = valueToPercent(range ? values[0] : min, min, max);\n  const trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n  const getRootProps = (externalProps = {}) => {\n    const externalHandlers = extractEventHandlers(externalProps);\n    const ownEventHandlers = {\n      onMouseDown: createHandleMouseDown(externalHandlers || {})\n    };\n    const mergedEventHandlers = {\n      ...externalHandlers,\n      ...ownEventHandlers\n    };\n    return {\n      ...externalProps,\n      ref: handleRef,\n      ...mergedEventHandlers\n    };\n  };\n  const createHandleMouseOver = otherHandlers => event => {\n    otherHandlers.onMouseOver?.(event);\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    setOpen(index);\n  };\n  const createHandleMouseLeave = otherHandlers => event => {\n    otherHandlers.onMouseLeave?.(event);\n    setOpen(-1);\n  };\n  const getThumbProps = (externalProps = {}) => {\n    const externalHandlers = extractEventHandlers(externalProps);\n    const ownEventHandlers = {\n      onMouseOver: createHandleMouseOver(externalHandlers || {}),\n      onMouseLeave: createHandleMouseLeave(externalHandlers || {})\n    };\n    return {\n      ...externalProps,\n      ...externalHandlers,\n      ...ownEventHandlers\n    };\n  };\n  const getThumbStyle = index => {\n    return {\n      // So the non active thumb doesn't show its label on hover.\n      pointerEvents: active !== -1 && active !== index ? 'none' : undefined\n    };\n  };\n  const getHiddenInputProps = (externalProps = {}) => {\n    const externalHandlers = extractEventHandlers(externalProps);\n    const ownEventHandlers = {\n      onChange: createHandleHiddenInputChange(externalHandlers || {}),\n      onFocus: createHandleHiddenInputFocus(externalHandlers || {}),\n      onBlur: createHandleHiddenInputBlur(externalHandlers || {}),\n      onKeyDown: createHandleHiddenInputKeyDown(externalHandlers || {})\n    };\n    const mergedEventHandlers = {\n      ...externalHandlers,\n      ...ownEventHandlers\n    };\n    return {\n      tabIndex,\n      'aria-labelledby': ariaLabelledby,\n      'aria-orientation': orientation,\n      'aria-valuemax': scale(max),\n      'aria-valuemin': scale(min),\n      name,\n      type: 'range',\n      min: parameters.min,\n      max: parameters.max,\n      step: parameters.step === null && parameters.marks ? 'any' : parameters.step ?? undefined,\n      disabled,\n      ...externalProps,\n      ...mergedEventHandlers,\n      style: {\n        ...visuallyHidden,\n        direction: isRtl ? 'rtl' : 'ltr',\n        // So that VoiceOver's focus indicator matches the thumb's dimensions\n        width: '100%',\n        height: '100%'\n      }\n    };\n  };\n  return {\n    active,\n    axis: axis,\n    axisProps,\n    dragging,\n    focusedThumbIndex,\n    getHiddenInputProps,\n    getRootProps,\n    getThumbProps,\n    marks: marks,\n    open,\n    range,\n    rootRef: handleRef,\n    trackLeap,\n    trackOffset,\n    values,\n    getThumbStyle\n  };\n}","function areArraysEqual(array1, array2, itemComparer = (a, b) => a === b) {\n  return array1.length === array2.length && array1.every((value, index) => itemComparer(value, array2[index]));\n}\nexport default areArraysEqual;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, lighten, darken } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { useSlider, valueToPercent } from \"./useSlider.js\";\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport slotShouldForwardProp from \"../styles/slotShouldForwardProp.js\";\nimport shouldSpreadAdditionalProps from \"../utils/shouldSpreadAdditionalProps.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport BaseSliderValueLabel from \"./SliderValueLabel.js\";\nimport sliderClasses, { getSliderUtilityClass } from \"./sliderClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction Identity(x) {\n  return x;\n}\nexport const SliderRoot = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], ownerState.marked && styles.marked, ownerState.orientation === 'vertical' && styles.vertical, ownerState.track === 'inverted' && styles.trackInverted, ownerState.track === false && styles.trackFalse];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  borderRadius: 12,\n  boxSizing: 'content-box',\n  display: 'inline-block',\n  position: 'relative',\n  cursor: 'pointer',\n  touchAction: 'none',\n  WebkitTapHighlightColor: 'transparent',\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  [`&.${sliderClasses.disabled}`]: {\n    pointerEvents: 'none',\n    cursor: 'default',\n    color: (theme.vars || theme).palette.grey[400]\n  },\n  [`&.${sliderClasses.dragging}`]: {\n    [`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]: {\n      transition: 'none'\n    }\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      height: 4,\n      width: '100%',\n      padding: '13px 0',\n      // The primary input mechanism of the device includes a pointing device of limited accuracy.\n      '@media (pointer: coarse)': {\n        // Reach 42px touch target, about ~8mm on screen.\n        padding: '20px 0'\n      }\n    }\n  }, {\n    props: {\n      orientation: 'horizontal',\n      size: 'small'\n    },\n    style: {\n      height: 2\n    }\n  }, {\n    props: {\n      orientation: 'horizontal',\n      marked: true\n    },\n    style: {\n      marginBottom: 20\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      height: '100%',\n      width: 4,\n      padding: '0 13px',\n      // The primary input mechanism of the device includes a pointing device of limited accuracy.\n      '@media (pointer: coarse)': {\n        // Reach 42px touch target, about ~8mm on screen.\n        padding: '0 20px'\n      }\n    }\n  }, {\n    props: {\n      orientation: 'vertical',\n      size: 'small'\n    },\n    style: {\n      width: 2\n    }\n  }, {\n    props: {\n      orientation: 'vertical',\n      marked: true\n    },\n    style: {\n      marginRight: 44\n    }\n  }]\n})));\nexport const SliderRail = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Rail',\n  overridesResolver: (props, styles) => styles.rail\n})({\n  display: 'block',\n  position: 'absolute',\n  borderRadius: 'inherit',\n  backgroundColor: 'currentColor',\n  opacity: 0.38,\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: '100%',\n      height: 'inherit',\n      top: '50%',\n      transform: 'translateY(-50%)'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      height: '100%',\n      width: 'inherit',\n      left: '50%',\n      transform: 'translateX(-50%)'\n    }\n  }, {\n    props: {\n      track: 'inverted'\n    },\n    style: {\n      opacity: 1\n    }\n  }]\n});\nexport const SliderTrack = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    display: 'block',\n    position: 'absolute',\n    borderRadius: 'inherit',\n    border: '1px solid currentColor',\n    backgroundColor: 'currentColor',\n    transition: theme.transitions.create(['left', 'width', 'bottom', 'height'], {\n      duration: theme.transitions.duration.shortest\n    }),\n    variants: [{\n      props: {\n        size: 'small'\n      },\n      style: {\n        border: 'none'\n      }\n    }, {\n      props: {\n        orientation: 'horizontal'\n      },\n      style: {\n        height: 'inherit',\n        top: '50%',\n        transform: 'translateY(-50%)'\n      }\n    }, {\n      props: {\n        orientation: 'vertical'\n      },\n      style: {\n        width: 'inherit',\n        left: '50%',\n        transform: 'translateX(-50%)'\n      }\n    }, {\n      props: {\n        track: false\n      },\n      style: {\n        display: 'none'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        color,\n        track: 'inverted'\n      },\n      style: {\n        ...(theme.vars ? {\n          backgroundColor: theme.vars.palette.Slider[`${color}Track`],\n          borderColor: theme.vars.palette.Slider[`${color}Track`]\n        } : {\n          backgroundColor: lighten(theme.palette[color].main, 0.62),\n          borderColor: lighten(theme.palette[color].main, 0.62),\n          ...theme.applyStyles('dark', {\n            backgroundColor: darken(theme.palette[color].main, 0.5)\n          }),\n          ...theme.applyStyles('dark', {\n            borderColor: darken(theme.palette[color].main, 0.5)\n          })\n        })\n      }\n    }))]\n  };\n}));\nexport const SliderThumb = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.thumb, styles[`thumbColor${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`thumbSize${capitalize(ownerState.size)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  width: 20,\n  height: 20,\n  boxSizing: 'border-box',\n  borderRadius: '50%',\n  outline: 0,\n  backgroundColor: 'currentColor',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  transition: theme.transitions.create(['box-shadow', 'left', 'bottom'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  '&::before': {\n    position: 'absolute',\n    content: '\"\"',\n    borderRadius: 'inherit',\n    width: '100%',\n    height: '100%',\n    boxShadow: (theme.vars || theme).shadows[2]\n  },\n  '&::after': {\n    position: 'absolute',\n    content: '\"\"',\n    borderRadius: '50%',\n    // 42px is the hit target\n    width: 42,\n    height: 42,\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)'\n  },\n  [`&.${sliderClasses.disabled}`]: {\n    '&:hover': {\n      boxShadow: 'none'\n    }\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 12,\n      height: 12,\n      '&::before': {\n        boxShadow: 'none'\n      }\n    }\n  }, {\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      top: '50%',\n      transform: 'translate(-50%, -50%)'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      left: '50%',\n      transform: 'translate(-50%, 50%)'\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&:hover, &.${sliderClasses.focusVisible}`]: {\n        ...(theme.vars ? {\n          boxShadow: `0px 0px 0px 8px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`\n        } : {\n          boxShadow: `0px 0px 0px 8px ${alpha(theme.palette[color].main, 0.16)}`\n        }),\n        '@media (hover: none)': {\n          boxShadow: 'none'\n        }\n      },\n      [`&.${sliderClasses.active}`]: {\n        ...(theme.vars ? {\n          boxShadow: `0px 0px 0px 14px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`\n        } : {\n          boxShadow: `0px 0px 0px 14px ${alpha(theme.palette[color].main, 0.16)}`\n        })\n      }\n    }\n  }))]\n})));\nexport const SliderValueLabel = styled(BaseSliderValueLabel, {\n  name: 'MuiSlider',\n  slot: 'ValueLabel',\n  overridesResolver: (props, styles) => styles.valueLabel\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: 1,\n  whiteSpace: 'nowrap',\n  ...theme.typography.body2,\n  fontWeight: 500,\n  transition: theme.transitions.create(['transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  position: 'absolute',\n  backgroundColor: (theme.vars || theme).palette.grey[600],\n  borderRadius: 2,\n  color: (theme.vars || theme).palette.common.white,\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  padding: '0.25rem 0.75rem',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      transform: 'translateY(-100%) scale(0)',\n      top: '-10px',\n      transformOrigin: 'bottom center',\n      '&::before': {\n        position: 'absolute',\n        content: '\"\"',\n        width: 8,\n        height: 8,\n        transform: 'translate(-50%, 50%) rotate(45deg)',\n        backgroundColor: 'inherit',\n        bottom: 0,\n        left: '50%'\n      },\n      [`&.${sliderClasses.valueLabelOpen}`]: {\n        transform: 'translateY(-100%) scale(1)'\n      }\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      transform: 'translateY(-50%) scale(0)',\n      right: '30px',\n      top: '50%',\n      transformOrigin: 'right center',\n      '&::before': {\n        position: 'absolute',\n        content: '\"\"',\n        width: 8,\n        height: 8,\n        transform: 'translate(-50%, -50%) rotate(45deg)',\n        backgroundColor: 'inherit',\n        right: -8,\n        top: '50%'\n      },\n      [`&.${sliderClasses.valueLabelOpen}`]: {\n        transform: 'translateY(-50%) scale(1)'\n      }\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      fontSize: theme.typography.pxToRem(12),\n      padding: '0.25rem 0.5rem'\n    }\n  }, {\n    props: {\n      orientation: 'vertical',\n      size: 'small'\n    },\n    style: {\n      right: '20px'\n    }\n  }]\n})));\nexport const SliderMark = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Mark',\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markActive',\n  overridesResolver: (props, styles) => {\n    const {\n      markActive\n    } = props;\n    return [styles.mark, markActive && styles.markActive];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  width: 2,\n  height: 2,\n  borderRadius: 1,\n  backgroundColor: 'currentColor',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      top: '50%',\n      transform: 'translate(-1px, -50%)'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      left: '50%',\n      transform: 'translate(-50%, 1px)'\n    }\n  }, {\n    props: {\n      markActive: true\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette.background.paper,\n      opacity: 0.8\n    }\n  }]\n})));\nexport const SliderMarkLabel = styled('span', {\n  name: 'MuiSlider',\n  slot: 'MarkLabel',\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markLabelActive',\n  overridesResolver: (props, styles) => styles.markLabel\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  color: (theme.vars || theme).palette.text.secondary,\n  position: 'absolute',\n  whiteSpace: 'nowrap',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      top: 30,\n      transform: 'translateX(-50%)',\n      '@media (pointer: coarse)': {\n        top: 40\n      }\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      left: 36,\n      transform: 'translateY(50%)',\n      '@media (pointer: coarse)': {\n        left: 44\n      }\n    }\n  }, {\n    props: {\n      markLabelActive: true\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary\n    }\n  }]\n})));\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dragging,\n    marked,\n    orientation,\n    track,\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', dragging && 'dragging', marked && 'marked', orientation === 'vertical' && 'vertical', track === 'inverted' && 'trackInverted', track === false && 'trackFalse', color && `color${capitalize(color)}`, size && `size${capitalize(size)}`],\n    rail: ['rail'],\n    track: ['track'],\n    mark: ['mark'],\n    markActive: ['markActive'],\n    markLabel: ['markLabel'],\n    markLabelActive: ['markLabelActive'],\n    valueLabel: ['valueLabel'],\n    thumb: ['thumb', disabled && 'disabled', size && `thumbSize${capitalize(size)}`, color && `thumbColor${capitalize(color)}`],\n    active: ['active'],\n    disabled: ['disabled'],\n    focusVisible: ['focusVisible']\n  };\n  return composeClasses(slots, getSliderUtilityClass, classes);\n};\nconst Forward = ({\n  children\n}) => children;\nconst Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {\n  const props = useDefaultProps({\n    props: inputProps,\n    name: 'MuiSlider'\n  });\n  const isRtl = useRtl();\n  const {\n    'aria-label': ariaLabel,\n    'aria-valuetext': ariaValuetext,\n    'aria-labelledby': ariaLabelledby,\n    // eslint-disable-next-line react/prop-types\n    component = 'span',\n    components = {},\n    componentsProps = {},\n    color = 'primary',\n    classes: classesProp,\n    className,\n    disableSwap = false,\n    disabled = false,\n    getAriaLabel,\n    getAriaValueText,\n    marks: marksProp = false,\n    max = 100,\n    min = 0,\n    name,\n    onChange,\n    onChangeCommitted,\n    orientation = 'horizontal',\n    shiftStep = 10,\n    size = 'medium',\n    step = 1,\n    scale = Identity,\n    slotProps,\n    slots,\n    tabIndex,\n    track = 'normal',\n    value: valueProp,\n    valueLabelDisplay = 'off',\n    valueLabelFormat = Identity,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    isRtl,\n    max,\n    min,\n    classes: classesProp,\n    disabled,\n    disableSwap,\n    orientation,\n    marks: marksProp,\n    color,\n    size,\n    step,\n    shiftStep,\n    scale,\n    track,\n    valueLabelDisplay,\n    valueLabelFormat\n  };\n  const {\n    axisProps,\n    getRootProps,\n    getHiddenInputProps,\n    getThumbProps,\n    open,\n    active,\n    axis,\n    focusedThumbIndex,\n    range,\n    dragging,\n    marks,\n    values,\n    trackOffset,\n    trackLeap,\n    getThumbStyle\n  } = useSlider({\n    ...ownerState,\n    rootRef: ref\n  });\n  ownerState.marked = marks.length > 0 && marks.some(mark => mark.label);\n  ownerState.dragging = dragging;\n  ownerState.focusedThumbIndex = focusedThumbIndex;\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? SliderRoot;\n  const RailSlot = slots?.rail ?? components.Rail ?? SliderRail;\n  const TrackSlot = slots?.track ?? components.Track ?? SliderTrack;\n  const ThumbSlot = slots?.thumb ?? components.Thumb ?? SliderThumb;\n  const ValueLabelSlot = slots?.valueLabel ?? components.ValueLabel ?? SliderValueLabel;\n  const MarkSlot = slots?.mark ?? components.Mark ?? SliderMark;\n  const MarkLabelSlot = slots?.markLabel ?? components.MarkLabel ?? SliderMarkLabel;\n  const InputSlot = slots?.input ?? components.Input ?? 'input';\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const railSlotProps = slotProps?.rail ?? componentsProps.rail;\n  const trackSlotProps = slotProps?.track ?? componentsProps.track;\n  const thumbSlotProps = slotProps?.thumb ?? componentsProps.thumb;\n  const valueLabelSlotProps = slotProps?.valueLabel ?? componentsProps.valueLabel;\n  const markSlotProps = slotProps?.mark ?? componentsProps.mark;\n  const markLabelSlotProps = slotProps?.markLabel ?? componentsProps.markLabel;\n  const inputSlotProps = slotProps?.input ?? componentsProps.input;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    getSlotProps: getRootProps,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ...(shouldSpreadAdditionalProps(RootSlot) && {\n        as: component\n      })\n    },\n    ownerState: {\n      ...ownerState,\n      ...rootSlotProps?.ownerState\n    },\n    className: [classes.root, className]\n  });\n  const railProps = useSlotProps({\n    elementType: RailSlot,\n    externalSlotProps: railSlotProps,\n    ownerState,\n    className: classes.rail\n  });\n  const trackProps = useSlotProps({\n    elementType: TrackSlot,\n    externalSlotProps: trackSlotProps,\n    additionalProps: {\n      style: {\n        ...axisProps[axis].offset(trackOffset),\n        ...axisProps[axis].leap(trackLeap)\n      }\n    },\n    ownerState: {\n      ...ownerState,\n      ...trackSlotProps?.ownerState\n    },\n    className: classes.track\n  });\n  const thumbProps = useSlotProps({\n    elementType: ThumbSlot,\n    getSlotProps: getThumbProps,\n    externalSlotProps: thumbSlotProps,\n    ownerState: {\n      ...ownerState,\n      ...thumbSlotProps?.ownerState\n    },\n    className: classes.thumb\n  });\n  const valueLabelProps = useSlotProps({\n    elementType: ValueLabelSlot,\n    externalSlotProps: valueLabelSlotProps,\n    ownerState: {\n      ...ownerState,\n      ...valueLabelSlotProps?.ownerState\n    },\n    className: classes.valueLabel\n  });\n  const markProps = useSlotProps({\n    elementType: MarkSlot,\n    externalSlotProps: markSlotProps,\n    ownerState,\n    className: classes.mark\n  });\n  const markLabelProps = useSlotProps({\n    elementType: MarkLabelSlot,\n    externalSlotProps: markLabelSlotProps,\n    ownerState,\n    className: classes.markLabel\n  });\n  const inputSliderProps = useSlotProps({\n    elementType: InputSlot,\n    getSlotProps: getHiddenInputProps,\n    externalSlotProps: inputSlotProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [/*#__PURE__*/_jsx(RailSlot, {\n      ...railProps\n    }), /*#__PURE__*/_jsx(TrackSlot, {\n      ...trackProps\n    }), marks.filter(mark => mark.value >= min && mark.value <= max).map((mark, index) => {\n      const percent = valueToPercent(mark.value, min, max);\n      const style = axisProps[axis].offset(percent);\n      let markActive;\n      if (track === false) {\n        markActive = values.includes(mark.value);\n      } else {\n        markActive = track === 'normal' && (range ? mark.value >= values[0] && mark.value <= values[values.length - 1] : mark.value <= values[0]) || track === 'inverted' && (range ? mark.value <= values[0] || mark.value >= values[values.length - 1] : mark.value >= values[0]);\n      }\n      return /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [/*#__PURE__*/_jsx(MarkSlot, {\n          \"data-index\": index,\n          ...markProps,\n          ...(!isHostComponent(MarkSlot) && {\n            markActive\n          }),\n          style: {\n            ...style,\n            ...markProps.style\n          },\n          className: clsx(markProps.className, markActive && classes.markActive)\n        }), mark.label != null ? /*#__PURE__*/_jsx(MarkLabelSlot, {\n          \"aria-hidden\": true,\n          \"data-index\": index,\n          ...markLabelProps,\n          ...(!isHostComponent(MarkLabelSlot) && {\n            markLabelActive: markActive\n          }),\n          style: {\n            ...style,\n            ...markLabelProps.style\n          },\n          className: clsx(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),\n          children: mark.label\n        }) : null]\n      }, index);\n    }), values.map((value, index) => {\n      const percent = valueToPercent(value, min, max);\n      const style = axisProps[axis].offset(percent);\n      const ValueLabelComponent = valueLabelDisplay === 'off' ? Forward : ValueLabelSlot;\n      return (\n        /*#__PURE__*/\n        /* TODO v6: Change component structure. It will help in avoiding the complicated React.cloneElement API added in SliderValueLabel component. Should be: Thumb -> Input, ValueLabel. Follow Joy UI's Slider structure. */\n        _jsx(ValueLabelComponent, {\n          ...(!isHostComponent(ValueLabelComponent) && {\n            valueLabelFormat,\n            valueLabelDisplay,\n            value: typeof valueLabelFormat === 'function' ? valueLabelFormat(scale(value), index) : valueLabelFormat,\n            index,\n            open: open === index || active === index || valueLabelDisplay === 'on',\n            disabled\n          }),\n          ...valueLabelProps,\n          children: /*#__PURE__*/_jsx(ThumbSlot, {\n            \"data-index\": index,\n            ...thumbProps,\n            className: clsx(classes.thumb, thumbProps.className, active === index && classes.active, focusedThumbIndex === index && classes.focusVisible),\n            style: {\n              ...style,\n              ...getThumbStyle(index),\n              ...thumbProps.style\n            },\n            children: /*#__PURE__*/_jsx(InputSlot, {\n              \"data-index\": index,\n              \"aria-label\": getAriaLabel ? getAriaLabel(index) : ariaLabel,\n              \"aria-valuenow\": scale(value),\n              \"aria-labelledby\": ariaLabelledby,\n              \"aria-valuetext\": getAriaValueText ? getAriaValueText(scale(value), index) : ariaValuetext,\n              value: values[index],\n              ...inputSliderProps\n            })\n          })\n        }, index)\n      );\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Slider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The label of the slider.\n   */\n  'aria-label': chainPropTypes(PropTypes.string, props => {\n    const range = Array.isArray(props.value || props.defaultValue);\n    if (range && props['aria-label'] != null) {\n      return new Error('MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider.');\n    }\n    return null;\n  }),\n  /**\n   * The id of the element containing a label for the slider.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A string value that provides a user-friendly name for the current value of the slider.\n   */\n  'aria-valuetext': chainPropTypes(PropTypes.string, props => {\n    const range = Array.isArray(props.value || props.defaultValue);\n    if (range && props['aria-valuetext'] != null) {\n      return new Error('MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider.');\n    }\n    return null;\n  }),\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Mark: PropTypes.elementType,\n    MarkLabel: PropTypes.elementType,\n    Rail: PropTypes.elementType,\n    Root: PropTypes.elementType,\n    Thumb: PropTypes.elementType,\n    Track: PropTypes.elementType,\n    ValueLabel: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    mark: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    markLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    rail: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    thumb: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    track: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    valueLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n      children: PropTypes.element,\n      className: PropTypes.string,\n      open: PropTypes.bool,\n      style: PropTypes.object,\n      value: PropTypes.number,\n      valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])\n    })])\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the active thumb doesn't swap when moving pointer over a thumb while dragging another thumb.\n   * @default false\n   */\n  disableSwap: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider.\n   * This is important for screen reader users.\n   * @param {number} index The thumb label's index to format.\n   * @returns {string}\n   */\n  getAriaLabel: PropTypes.func,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider.\n   * This is important for screen reader users.\n   * @param {number} value The thumb label's value to format.\n   * @param {number} index The thumb label's index to format.\n   * @returns {string}\n   */\n  getAriaValueText: PropTypes.func,\n  /**\n   * Marks indicate predetermined values to which the user can move the slider.\n   * If `true` the marks are spaced according the value of the `step` prop.\n   * If an array, it should contain objects with `value` and an optional `label` keys.\n   * @default false\n   */\n  marks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n    label: PropTypes.node,\n    value: PropTypes.number.isRequired\n  })), PropTypes.bool]),\n  /**\n   * The maximum allowed value of the slider.\n   * Should not be equal to min.\n   * @default 100\n   */\n  max: PropTypes.number,\n  /**\n   * The minimum allowed value of the slider.\n   * Should not be equal to max.\n   * @default 0\n   */\n  min: PropTypes.number,\n  /**\n   * Name attribute of the hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback function that is fired when the slider's value changed.\n   *\n   * @param {Event} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event not a change event.\n   * @param {number | number[]} value The new value.\n   * @param {number} activeThumb Index of the currently moved thumb.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback function that is fired when the `mouseup` is triggered.\n   *\n   * @param {React.SyntheticEvent | Event} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {number | number[]} value The new value.\n   */\n  onChangeCommitted: PropTypes.func,\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * A transformation function, to change the scale of the slider.\n   * @param {any} x\n   * @returns {any}\n   * @default function Identity(x) {\n   *   return x;\n   * }\n   */\n  scale: PropTypes.func,\n  /**\n   * The granularity with which the slider can step through values when using Page Up/Page Down or Shift + Arrow Up/Arrow Down.\n   * @default 10\n   */\n  shiftStep: PropTypes.number,\n  /**\n   * The size of the slider.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside the Slider.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    mark: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    markLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    rail: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    thumb: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    track: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    valueLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n      children: PropTypes.element,\n      className: PropTypes.string,\n      open: PropTypes.bool,\n      style: PropTypes.object,\n      value: PropTypes.number,\n      valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])\n    })])\n  }),\n  /**\n   * The components used for each slot inside the Slider.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    mark: PropTypes.elementType,\n    markLabel: PropTypes.elementType,\n    rail: PropTypes.elementType,\n    root: PropTypes.elementType,\n    thumb: PropTypes.elementType,\n    track: PropTypes.elementType,\n    valueLabel: PropTypes.elementType\n  }),\n  /**\n   * The granularity with which the slider can step through values. (A \"discrete\" slider.)\n   * The `min` prop serves as the origin for the valid values.\n   * We recommend (max - min) to be evenly divisible by the step.\n   *\n   * When step is `null`, the thumb can only be slid onto marks provided with the `marks` prop.\n   * @default 1\n   */\n  step: PropTypes.number,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Tab index attribute of the hidden `input` element.\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The track presentation:\n   *\n   * - `normal` the track will render a bar representing the slider value.\n   * - `inverted` the track will render a bar representing the remaining slider value.\n   * - `false` the track will render without a bar.\n   * @default 'normal'\n   */\n  track: PropTypes.oneOf(['inverted', 'normal', false]),\n  /**\n   * The value of the slider.\n   * For ranged sliders, provide an array with two values.\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n  /**\n   * Controls when the value label is displayed:\n   *\n   * - `auto` the value label will display when the thumb is hovered or focused.\n   * - `on` will display persistently.\n   * - `off` will never display.\n   * @default 'off'\n   */\n  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on']),\n  /**\n   * The format function the value label's value.\n   *\n   * When a function is provided, it should have the following signature:\n   *\n   * - {number} value The value label's value to format\n   * - {number} index The value label's index to format\n   * @param {any} x\n   * @returns {any}\n   * @default function Identity(x) {\n   *   return x;\n   * }\n   */\n  valueLabelFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n} : void 0;\nexport default Slider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport sliderClasses from \"./sliderClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useValueLabelClasses = props => {\n  const {\n    open\n  } = props;\n  const utilityClasses = {\n    offset: clsx(open && sliderClasses.valueLabelOpen),\n    circle: sliderClasses.valueLabelCircle,\n    label: sliderClasses.valueLabelLabel\n  };\n  return utilityClasses;\n};\n\n/**\n * @ignore - internal component.\n */\nexport default function SliderValueLabel(props) {\n  const {\n    children,\n    className,\n    value\n  } = props;\n  const classes = useValueLabelClasses(props);\n  if (!children) {\n    return null;\n  }\n  return /*#__PURE__*/React.cloneElement(children, {\n    className: clsx(children.props.className)\n  }, /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [children.props.children, /*#__PURE__*/_jsx(\"span\", {\n      className: clsx(classes.offset, className),\n      \"aria-hidden\": true,\n      children: /*#__PURE__*/_jsx(\"span\", {\n        className: classes.circle,\n        children: /*#__PURE__*/_jsx(\"span\", {\n          className: classes.label,\n          children: value\n        })\n      })\n    })]\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? SliderValueLabel.propTypes = {\n  children: PropTypes.element.isRequired,\n  className: PropTypes.string,\n  value: PropTypes.node\n} : void 0;","import isHostComponent from \"./isHostComponent.js\";\nconst shouldSpreadAdditionalProps = Slot => {\n  return !Slot || !isHostComponent(Slot);\n};\nexport default shouldSpreadAdditionalProps;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSliderUtilityClass(slot) {\n  return generateUtilityClass('MuiSlider', slot);\n}\nconst sliderClasses = generateUtilityClasses('MuiSlider', ['root', 'active', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'disabled', 'dragging', 'focusVisible', 'mark', 'markActive', 'marked', 'markLabel', 'markLabelActive', 'rail', 'sizeSmall', 'thumb', 'thumbColorPrimary', 'thumbColorSecondary', 'thumbColorError', 'thumbColorSuccess', 'thumbColorInfo', 'thumbColorWarning', 'track', 'trackInverted', 'trackFalse', 'thumbSizeSmall', 'valueLabel', 'valueLabelOpen', 'valueLabelCircle', 'valueLabelLabel', 'vertical']);\nexport default sliderClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getSvgIconUtilityClass } from \"./svgIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n  };\n  return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n  name: 'MuiSvgIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  userSelect: 'none',\n  width: '1em',\n  height: '1em',\n  display: 'inline-block',\n  flexShrink: 0,\n  transition: theme.transitions?.create?.('fill', {\n    duration: (theme.vars ?? theme).transitions?.duration?.shorter\n  }),\n  variants: [{\n    props: props => !props.hasSvgAsChild,\n    style: {\n      // the <svg> will define the property that has `currentColor`\n      // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n      fill: 'currentColor'\n    }\n  }, {\n    props: {\n      fontSize: 'inherit'\n    },\n    style: {\n      fontSize: 'inherit'\n    }\n  }, {\n    props: {\n      fontSize: 'small'\n    },\n    style: {\n      fontSize: theme.typography?.pxToRem?.(20) || '1.25rem'\n    }\n  }, {\n    props: {\n      fontSize: 'medium'\n    },\n    style: {\n      fontSize: theme.typography?.pxToRem?.(24) || '1.5rem'\n    }\n  }, {\n    props: {\n      fontSize: 'large'\n    },\n    style: {\n      fontSize: theme.typography?.pxToRem?.(35) || '2.1875rem'\n    }\n  },\n  // TODO v5 deprecate color prop, v6 remove for sx\n  ...Object.entries((theme.vars ?? theme).palette).filter(([, value]) => value && value.main).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars ?? theme).palette?.[color]?.main\n    }\n  })), {\n    props: {\n      color: 'action'\n    },\n    style: {\n      color: (theme.vars ?? theme).palette?.action?.active\n    }\n  }, {\n    props: {\n      color: 'disabled'\n    },\n    style: {\n      color: (theme.vars ?? theme).palette?.action?.disabled\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: undefined\n    }\n  }]\n})));\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSvgIcon'\n  });\n  const {\n    children,\n    className,\n    color = 'inherit',\n    component = 'svg',\n    fontSize = 'medium',\n    htmlColor,\n    inheritViewBox = false,\n    titleAccess,\n    viewBox = '0 0 24 24',\n    ...other\n  } = props;\n  const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    fontSize,\n    instanceFontSize: inProps.fontSize,\n    inheritViewBox,\n    viewBox,\n    hasSvgAsChild\n  };\n  const more = {};\n  if (!inheritViewBox) {\n    more.viewBox = viewBox;\n  }\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SvgIconRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    focusable: \"false\",\n    color: htmlColor,\n    \"aria-hidden\": titleAccess ? undefined : true,\n    role: titleAccess ? 'img' : undefined,\n    ref: ref,\n    ...more,\n    ...other,\n    ...(hasSvgAsChild && children.props),\n    ownerState: ownerState,\n    children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n      children: titleAccess\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Node passed into the SVG element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n   * @default 'inherit'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  htmlColor: PropTypes.string,\n  /**\n   * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n   * prop will be ignored.\n   * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n   * `component`'s viewBox to the root node.\n   * @default false\n   */\n  inheritViewBox: PropTypes.bool,\n  /**\n   * The shape-rendering attribute. The behavior of the different options is described on the\n   * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n   * If you are having issues with blurry icons you should investigate this prop.\n   */\n  shapeRendering: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: PropTypes.string,\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   * @default '0 0 24 24'\n   */\n  viewBox: PropTypes.string\n} : void 0;\nif (SvgIcon) {\n  SvgIcon.muiName = 'SvgIcon';\n}\nexport default SvgIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Input from \"../Input/index.js\";\nimport FilledInput from \"../FilledInput/index.js\";\nimport OutlinedInput from \"../OutlinedInput/index.js\";\nimport InputLabel from \"../InputLabel/index.js\";\nimport FormControl from \"../FormControl/index.js\";\nimport FormHelperText from \"../FormHelperText/index.js\";\nimport Select from \"../Select/index.js\";\nimport { getTextFieldUtilityClass } from \"./textFieldClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst variantComponent = {\n  standard: Input,\n  filled: FilledInput,\n  outlined: OutlinedInput\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = styled(FormControl, {\n  name: 'MuiTextField',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n *   step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/React.forwardRef(function TextField(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTextField'\n  });\n  const {\n    autoComplete,\n    autoFocus = false,\n    children,\n    className,\n    color = 'primary',\n    defaultValue,\n    disabled = false,\n    error = false,\n    FormHelperTextProps: FormHelperTextPropsProp,\n    fullWidth = false,\n    helperText,\n    id: idOverride,\n    InputLabelProps: InputLabelPropsProp,\n    inputProps: inputPropsProp,\n    InputProps: InputPropsProp,\n    inputRef,\n    label,\n    maxRows,\n    minRows,\n    multiline = false,\n    name,\n    onBlur,\n    onChange,\n    onFocus,\n    placeholder,\n    required = false,\n    rows,\n    select = false,\n    SelectProps: SelectPropsProp,\n    slots = {},\n    slotProps = {},\n    type,\n    value,\n    variant = 'outlined',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    autoFocus,\n    color,\n    disabled,\n    error,\n    fullWidth,\n    multiline,\n    required,\n    select,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (select && !children) {\n      console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n    }\n  }\n  const id = useId(idOverride);\n  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n  const inputLabelId = label && id ? `${id}-label` : undefined;\n  const InputComponent = variantComponent[variant];\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      input: InputPropsProp,\n      inputLabel: InputLabelPropsProp,\n      htmlInput: inputPropsProp,\n      formHelperText: FormHelperTextPropsProp,\n      select: SelectPropsProp,\n      ...slotProps\n    }\n  };\n  const inputAdditionalProps = {};\n  const inputLabelSlotProps = externalForwardedProps.slotProps.inputLabel;\n  if (variant === 'outlined') {\n    if (inputLabelSlotProps && typeof inputLabelSlotProps.shrink !== 'undefined') {\n      inputAdditionalProps.notched = inputLabelSlotProps.shrink;\n    }\n    inputAdditionalProps.label = label;\n  }\n  if (select) {\n    // unset defaults from textbox inputs\n    if (!SelectPropsProp || !SelectPropsProp.native) {\n      inputAdditionalProps.id = undefined;\n    }\n    inputAdditionalProps['aria-describedby'] = undefined;\n  }\n  const [InputSlot, inputProps] = useSlot('input', {\n    elementType: InputComponent,\n    externalForwardedProps,\n    additionalProps: inputAdditionalProps,\n    ownerState\n  });\n  const [InputLabelSlot, inputLabelProps] = useSlot('inputLabel', {\n    elementType: InputLabel,\n    externalForwardedProps,\n    ownerState\n  });\n  const [HtmlInputSlot, htmlInputProps] = useSlot('htmlInput', {\n    elementType: 'input',\n    externalForwardedProps,\n    ownerState\n  });\n  const [FormHelperTextSlot, formHelperTextProps] = useSlot('formHelperText', {\n    elementType: FormHelperText,\n    externalForwardedProps,\n    ownerState\n  });\n  const [SelectSlot, selectProps] = useSlot('select', {\n    elementType: Select,\n    externalForwardedProps,\n    ownerState\n  });\n  const InputElement = /*#__PURE__*/_jsx(InputSlot, {\n    \"aria-describedby\": helperTextId,\n    autoComplete: autoComplete,\n    autoFocus: autoFocus,\n    defaultValue: defaultValue,\n    fullWidth: fullWidth,\n    multiline: multiline,\n    name: name,\n    rows: rows,\n    maxRows: maxRows,\n    minRows: minRows,\n    type: type,\n    value: value,\n    id: id,\n    inputRef: inputRef,\n    onBlur: onBlur,\n    onChange: onChange,\n    onFocus: onFocus,\n    placeholder: placeholder,\n    inputProps: htmlInputProps,\n    slots: {\n      input: slots.htmlInput ? HtmlInputSlot : undefined\n    },\n    ...inputProps\n  });\n  return /*#__PURE__*/_jsxs(TextFieldRoot, {\n    className: clsx(classes.root, className),\n    disabled: disabled,\n    error: error,\n    fullWidth: fullWidth,\n    ref: ref,\n    required: required,\n    color: color,\n    variant: variant,\n    ownerState: ownerState,\n    ...other,\n    children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabelSlot, {\n      htmlFor: id,\n      id: inputLabelId,\n      ...inputLabelProps,\n      children: label\n    }), select ? /*#__PURE__*/_jsx(SelectSlot, {\n      \"aria-describedby\": helperTextId,\n      id: id,\n      labelId: inputLabelId,\n      value: value,\n      input: InputElement,\n      ...selectProps,\n      children: children\n    }) : InputElement, helperText && /*#__PURE__*/_jsx(FormHelperTextSlot, {\n      id: helperTextId,\n      ...formHelperTextProps,\n      children: helperText\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Props applied to the [`FormHelperText`](https://mui.com/material-ui/api/form-helper-text/) element.\n   * @deprecated Use `slotProps.formHelperText` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  FormHelperTextProps: PropTypes.object,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: PropTypes.string,\n  /**\n   * Props applied to the [`InputLabel`](https://mui.com/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   * @deprecated Use `slotProps.inputLabel` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputLabelProps: PropTypes.object,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @deprecated Use `slotProps.htmlInput` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](https://mui.com/material-ui/api/filled-input/),\n   * [`OutlinedInput`](https://mui.com/material-ui/api/outlined-input/) or [`Input`](https://mui.com/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   * @deprecated Use `slotProps.input` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a `textarea` element is rendered instead of an input.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Render a [`Select`](https://mui.com/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n   * If this option is set you must pass the options of the select as children.\n   * @default false\n   */\n  select: PropTypes.bool,\n  /**\n   * Props applied to the [`Select`](https://mui.com/material-ui/api/select/) element.\n   * @deprecated Use `slotProps.select` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  SelectProps: PropTypes.object,\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    formHelperText: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    htmlInput: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    inputLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    select: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    formHelperText: PropTypes.elementType,\n    htmlInput: PropTypes.elementType,\n    input: PropTypes.elementType,\n    inputLabel: PropTypes.elementType,\n    select: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   */\n  type: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default TextField;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTextFieldUtilityClass(slot) {\n  return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n  return parseInt(value, 10) || 0;\n}\nconst styles = {\n  shadow: {\n    // Visibility needed to hide the extra text area on iPads\n    visibility: 'hidden',\n    // Remove from the content flow\n    position: 'absolute',\n    // Ignore the scrollbar width\n    overflow: 'hidden',\n    height: 0,\n    top: 0,\n    left: 0,\n    // Create a new layer, increase the isolation of the computed values\n    transform: 'translateZ(0)'\n  }\n};\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflowing;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/material-ui/api/textarea-autosize/)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n  const {\n    onChange,\n    maxRows,\n    minRows = 1,\n    style,\n    value,\n    ...other\n  } = props;\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef(null);\n  const handleRef = useForkRef(forwardedRef, inputRef);\n  const heightRef = React.useRef(null);\n  const shadowRef = React.useRef(null);\n  const calculateTextareaStyles = React.useCallback(() => {\n    const input = inputRef.current;\n    const containerWindow = ownerWindow(input);\n    const computedStyle = containerWindow.getComputedStyle(input);\n\n    // If input's width is shrunk and it's not visible, don't sync height.\n    if (computedStyle.width === '0px') {\n      return {\n        outerHeightStyle: 0,\n        overflowing: false\n      };\n    }\n    const inputShallow = shadowRef.current;\n    inputShallow.style.width = computedStyle.width;\n    inputShallow.value = input.value || props.placeholder || 'x';\n    if (inputShallow.value.slice(-1) === '\\n') {\n      // Certain fonts which overflow the line height will cause the textarea\n      // to report a different scrollHeight depending on whether the last line\n      // is empty. Make it non-empty to avoid this issue.\n      inputShallow.value += ' ';\n    }\n    const boxSizing = computedStyle.boxSizing;\n    const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n    const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n    // The height of the inner content\n    const innerHeight = inputShallow.scrollHeight;\n\n    // Measure height of a textarea with a single row\n    inputShallow.value = 'x';\n    const singleRowHeight = inputShallow.scrollHeight;\n\n    // The height of the outer content\n    let outerHeight = innerHeight;\n    if (minRows) {\n      outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n    }\n    if (maxRows) {\n      outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight);\n\n    // Take the box sizing into account for applying this value as a style.\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n    const overflowing = Math.abs(outerHeight - innerHeight) <= 1;\n    return {\n      outerHeightStyle,\n      overflowing\n    };\n  }, [maxRows, minRows, props.placeholder]);\n  const syncHeight = React.useCallback(() => {\n    const textareaStyles = calculateTextareaStyles();\n    if (isEmpty(textareaStyles)) {\n      return;\n    }\n    const outerHeightStyle = textareaStyles.outerHeightStyle;\n    const input = inputRef.current;\n    if (heightRef.current !== outerHeightStyle) {\n      heightRef.current = outerHeightStyle;\n      input.style.height = `${outerHeightStyle}px`;\n    }\n    input.style.overflow = textareaStyles.overflowing ? 'hidden' : '';\n  }, [calculateTextareaStyles]);\n  useEnhancedEffect(() => {\n    const handleResize = () => {\n      syncHeight();\n    };\n    // Workaround a \"ResizeObserver loop completed with undelivered notifications\" error\n    // in test.\n    // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38\n    // Also see https://github.com/mui/mui-x/issues/8733\n    let rAF;\n    const rAFHandleResize = () => {\n      cancelAnimationFrame(rAF);\n      rAF = requestAnimationFrame(() => {\n        handleResize();\n      });\n    };\n    const debounceHandleResize = debounce(handleResize);\n    const input = inputRef.current;\n    const containerWindow = ownerWindow(input);\n    containerWindow.addEventListener('resize', debounceHandleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(process.env.NODE_ENV === 'test' ? rAFHandleResize : handleResize);\n      resizeObserver.observe(input);\n    }\n    return () => {\n      debounceHandleResize.clear();\n      cancelAnimationFrame(rAF);\n      containerWindow.removeEventListener('resize', debounceHandleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [calculateTextareaStyles, syncHeight]);\n  useEnhancedEffect(() => {\n    syncHeight();\n  });\n  const handleChange = event => {\n    if (!isControlled) {\n      syncHeight();\n    }\n    if (onChange) {\n      onChange(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"textarea\", {\n      value: value,\n      onChange: handleChange,\n      ref: handleRef\n      // Apply the rows prop to get a \"correct\" first SSR paint\n      ,\n      rows: minRows,\n      style: style,\n      ...other\n    }), /*#__PURE__*/_jsx(\"textarea\", {\n      \"aria-hidden\": true,\n      className: props.className,\n      readOnly: true,\n      ref: shadowRef,\n      tabIndex: -1,\n      style: {\n        ...styles.shadow,\n        ...style,\n        paddingTop: 0,\n        paddingBottom: 0\n      }\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Maximum number of rows to display.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display.\n   * @default 1\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  placeholder: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * @ignore\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;","// Determine if the toggle button value matches, or is contained in, the\n// candidate group value.\nexport default function isValueSelected(value, candidate) {\n  if (candidate === undefined || value === undefined) {\n    return false;\n  }\n  if (Array.isArray(candidate)) {\n    return candidate.includes(value);\n  }\n  return value === candidate;\n}","'use client';\n\n// @inheritedComponent ButtonBase\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport toggleButtonClasses, { getToggleButtonUtilityClass } from \"./toggleButtonClasses.js\";\nimport ToggleButtonGroupContext from \"../ToggleButtonGroup/ToggleButtonGroupContext.js\";\nimport ToggleButtonGroupButtonContext from \"../ToggleButtonGroup/ToggleButtonGroupButtonContext.js\";\nimport isValueSelected from \"../ToggleButtonGroup/isValueSelected.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    fullWidth,\n    selected,\n    disabled,\n    size,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', disabled && 'disabled', fullWidth && 'fullWidth', `size${capitalize(size)}`, color]\n  };\n  return composeClasses(slots, getToggleButtonUtilityClass, classes);\n};\nconst ToggleButtonRoot = styled(ButtonBase, {\n  name: 'MuiToggleButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  padding: 11,\n  border: `1px solid ${(theme.vars || theme).palette.divider}`,\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${toggleButtonClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n  },\n  '&:hover': {\n    textDecoration: 'none',\n    // Reset on mouse devices\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  variants: [{\n    props: {\n      color: 'standard'\n    },\n    style: {\n      [`&.${toggleButtonClasses.selected}`]: {\n        color: (theme.vars || theme).palette.text.primary,\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.selectedOpacity),\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.text.primary, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.selectedOpacity)\n          }\n        }\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${toggleButtonClasses.selected}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette[color].main, theme.palette.action.selectedOpacity),\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette[color].main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette[color].main, theme.palette.action.selectedOpacity)\n          }\n        }\n      }\n    }\n  })), {\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: 7,\n      fontSize: theme.typography.pxToRem(13)\n    }\n  }, {\n    props: {\n      size: 'large'\n    },\n    style: {\n      padding: 15,\n      fontSize: theme.typography.pxToRem(15)\n    }\n  }]\n})));\nconst ToggleButton = /*#__PURE__*/React.forwardRef(function ToggleButton(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const {\n    value: contextValue,\n    ...contextProps\n  } = React.useContext(ToggleButtonGroupContext);\n  const toggleButtonGroupButtonContextPositionClassName = React.useContext(ToggleButtonGroupButtonContext);\n  const resolvedProps = resolveProps({\n    ...contextProps,\n    selected: isValueSelected(inProps.value, contextValue)\n  }, inProps);\n  const props = useDefaultProps({\n    props: resolvedProps,\n    name: 'MuiToggleButton'\n  });\n  const {\n    children,\n    className,\n    color = 'standard',\n    disabled = false,\n    disableFocusRipple = false,\n    fullWidth = false,\n    onChange,\n    onClick,\n    selected,\n    size = 'medium',\n    value,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disabled,\n    disableFocusRipple,\n    fullWidth,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleChange = event => {\n    if (onClick) {\n      onClick(event, value);\n      if (event.defaultPrevented) {\n        return;\n      }\n    }\n    if (onChange) {\n      onChange(event, value);\n    }\n  };\n  const positionClassName = toggleButtonGroupButtonContextPositionClassName || '';\n  return /*#__PURE__*/_jsx(ToggleButtonRoot, {\n    className: clsx(contextProps.className, classes.root, className, positionClassName),\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    ref: ref,\n    onClick: handleChange,\n    onChange: onChange,\n    value: value,\n    ownerState: ownerState,\n    \"aria-pressed\": selected,\n    ...other,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ToggleButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the button when it is in an active state.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Callback fired when the state changes.\n   *\n   * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n   * @param {any} value of the selected button.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the button is clicked.\n   *\n   * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n   * @param {any} value of the selected button.\n   */\n  onClick: PropTypes.func,\n  /**\n   * If `true`, the button is rendered in an active state.\n   */\n  selected: PropTypes.bool,\n  /**\n   * The size of the component.\n   * The prop defaults to the value inherited from the parent ToggleButtonGroup component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value to associate with the button when selected in a\n   * ToggleButtonGroup.\n   */\n  value: PropTypes /* @typescript-to-proptypes-ignore */.any.isRequired\n} : void 0;\nexport default ToggleButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToggleButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiToggleButton', slot);\n}\nconst toggleButtonClasses = generateUtilityClasses('MuiToggleButton', ['root', 'disabled', 'selected', 'standard', 'primary', 'secondary', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'fullWidth']);\nexport default toggleButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport getValidReactChildren from '@mui/utils/getValidReactChildren';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport toggleButtonGroupClasses, { getToggleButtonGroupUtilityClass } from \"./toggleButtonGroupClasses.js\";\nimport ToggleButtonGroupContext from \"./ToggleButtonGroupContext.js\";\nimport ToggleButtonGroupButtonContext from \"./ToggleButtonGroupButtonContext.js\";\nimport toggleButtonClasses from \"../ToggleButton/toggleButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    fullWidth,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, fullWidth && 'fullWidth'],\n    grouped: ['grouped', `grouped${capitalize(orientation)}`, disabled && 'disabled'],\n    firstButton: ['firstButton'],\n    lastButton: ['lastButton'],\n    middleButton: ['middleButton']\n  };\n  return composeClasses(slots, getToggleButtonGroupUtilityClass, classes);\n};\nconst ToggleButtonGroupRoot = styled('div', {\n  name: 'MuiToggleButtonGroup',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${toggleButtonGroupClasses.grouped}`]: styles.grouped\n    }, {\n      [`& .${toggleButtonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.orientation)}`]\n    }, {\n      [`& .${toggleButtonGroupClasses.firstButton}`]: styles.firstButton\n    }, {\n      [`& .${toggleButtonGroupClasses.lastButton}`]: styles.lastButton\n    }, {\n      [`& .${toggleButtonGroupClasses.middleButton}`]: styles.middleButton\n    }, styles.root, ownerState.orientation === 'vertical' && styles.vertical, ownerState.fullWidth && styles.fullWidth];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-flex',\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      flexDirection: 'column',\n      [`& .${toggleButtonGroupClasses.grouped}`]: {\n        [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]: {\n          borderTop: 0,\n          marginTop: 0\n        }\n      },\n      [`& .${toggleButtonGroupClasses.firstButton},& .${toggleButtonGroupClasses.middleButton}`]: {\n        borderBottomLeftRadius: 0,\n        borderBottomRightRadius: 0\n      },\n      [`& .${toggleButtonGroupClasses.lastButton},& .${toggleButtonGroupClasses.middleButton}`]: {\n        marginTop: -1,\n        borderTop: '1px solid transparent',\n        borderTopLeftRadius: 0,\n        borderTopRightRadius: 0\n      },\n      [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled},& .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]: {\n        borderTop: '1px solid transparent'\n      }\n    }\n  }, {\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      [`& .${toggleButtonGroupClasses.grouped}`]: {\n        [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]: {\n          borderLeft: 0,\n          marginLeft: 0\n        }\n      },\n      [`& .${toggleButtonGroupClasses.firstButton},& .${toggleButtonGroupClasses.middleButton}`]: {\n        borderTopRightRadius: 0,\n        borderBottomRightRadius: 0\n      },\n      [`& .${toggleButtonGroupClasses.lastButton},& .${toggleButtonGroupClasses.middleButton}`]: {\n        marginLeft: -1,\n        borderLeft: '1px solid transparent',\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0\n      },\n      [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled},& .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]: {\n        borderLeft: '1px solid transparent'\n      }\n    }\n  }]\n})));\nconst ToggleButtonGroup = /*#__PURE__*/React.forwardRef(function ToggleButtonGroup(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToggleButtonGroup'\n  });\n  const {\n    children,\n    className,\n    color = 'standard',\n    disabled = false,\n    exclusive = false,\n    fullWidth = false,\n    onChange,\n    orientation = 'horizontal',\n    size = 'medium',\n    value,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disabled,\n    fullWidth,\n    orientation,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleChange = React.useCallback((event, buttonValue) => {\n    if (!onChange) {\n      return;\n    }\n    const index = value && value.indexOf(buttonValue);\n    let newValue;\n    if (value && index >= 0) {\n      newValue = value.slice();\n      newValue.splice(index, 1);\n    } else {\n      newValue = value ? value.concat(buttonValue) : [buttonValue];\n    }\n    onChange(event, newValue);\n  }, [onChange, value]);\n  const handleExclusiveChange = React.useCallback((event, buttonValue) => {\n    if (!onChange) {\n      return;\n    }\n    onChange(event, value === buttonValue ? null : buttonValue);\n  }, [onChange, value]);\n  const context = React.useMemo(() => ({\n    className: classes.grouped,\n    onChange: exclusive ? handleExclusiveChange : handleChange,\n    value,\n    size,\n    fullWidth,\n    color,\n    disabled\n  }), [classes.grouped, exclusive, handleExclusiveChange, handleChange, value, size, fullWidth, color, disabled]);\n  const validChildren = getValidReactChildren(children);\n  const childrenCount = validChildren.length;\n  const getButtonPositionClassName = index => {\n    const isFirstButton = index === 0;\n    const isLastButton = index === childrenCount - 1;\n    if (isFirstButton && isLastButton) {\n      return '';\n    }\n    if (isFirstButton) {\n      return classes.firstButton;\n    }\n    if (isLastButton) {\n      return classes.lastButton;\n    }\n    return classes.middleButton;\n  };\n  return /*#__PURE__*/_jsx(ToggleButtonGroupRoot, {\n    role: \"group\",\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(ToggleButtonGroupContext.Provider, {\n      value: context,\n      children: validChildren.map((child, index) => {\n        if (process.env.NODE_ENV !== 'production') {\n          if (isFragment(child)) {\n            console.error([\"MUI: The ToggleButtonGroup component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n          }\n        }\n        return /*#__PURE__*/_jsx(ToggleButtonGroupButtonContext.Provider, {\n          value: getButtonPositionClassName(index),\n          children: child\n        }, index);\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ToggleButtonGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the button when it is selected.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled. This implies that all ToggleButton children will be disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, only allow one of the child ToggleButton values to be selected.\n   * @default false\n   */\n  exclusive: PropTypes.bool,\n  /**\n   * If `true`, the button group will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n   * @param {any} value of the selected buttons. When `exclusive` is true\n   * this is a single value; when false an array of selected values. If no value\n   * is selected and `exclusive` is true the value is null; when false an empty array.\n   */\n  onChange: PropTypes.func,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The currently selected value within the group or an array of selected\n   * values when `exclusive` is false.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default ToggleButtonGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ToggleButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  ToggleButtonGroupButtonContext.displayName = 'ToggleButtonGroupButtonContext';\n}\nexport default ToggleButtonGroupButtonContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ToggleButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ToggleButtonGroupContext.displayName = 'ToggleButtonGroupContext';\n}\nexport default ToggleButtonGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToggleButtonGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiToggleButtonGroup', slot);\n}\nconst toggleButtonGroupClasses = generateUtilityClasses('MuiToggleButtonGroup', ['root', 'selected', 'horizontal', 'vertical', 'disabled', 'grouped', 'groupedHorizontal', 'groupedVertical', 'fullWidth', 'firstButton', 'lastButton', 'middleButton']);\nexport default toggleButtonGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useTimeout, { Timeout } from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport Grow from \"../Grow/index.js\";\nimport Popper from \"../Popper/index.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useId from \"../utils/useId.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport tooltipClasses, { getTooltipUtilityClass } from \"./tooltipClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableInteractive,\n    arrow,\n    touch,\n    placement\n  } = ownerState;\n  const slots = {\n    popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n    tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n    arrow: ['arrow']\n  };\n  return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n  name: 'MuiTooltip',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.tooltip,\n  pointerEvents: 'none',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableInteractive,\n    style: {\n      pointerEvents: 'auto'\n    }\n  }, {\n    props: ({\n      open\n    }) => !open,\n    style: {\n      pointerEvents: 'none'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.arrow,\n    style: {\n      [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n        top: 0,\n        marginTop: '-0.71em',\n        '&::before': {\n          transformOrigin: '0 100%'\n        }\n      },\n      [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n        bottom: 0,\n        marginBottom: '-0.71em',\n        '&::before': {\n          transformOrigin: '100% 0'\n        }\n      },\n      [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n        height: '1em',\n        width: '0.71em',\n        '&::before': {\n          transformOrigin: '100% 100%'\n        }\n      },\n      [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n        height: '1em',\n        width: '0.71em',\n        '&::before': {\n          transformOrigin: '0 0'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.arrow && !ownerState.isRtl,\n    style: {\n      [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n        left: 0,\n        marginLeft: '-0.71em'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.arrow && !!ownerState.isRtl,\n    style: {\n      [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n        right: 0,\n        marginRight: '-0.71em'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.arrow && !ownerState.isRtl,\n    style: {\n      [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n        right: 0,\n        marginRight: '-0.71em'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.arrow && !!ownerState.isRtl,\n    style: {\n      [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n        left: 0,\n        marginLeft: '-0.71em'\n      }\n    }\n  }]\n})));\nconst TooltipTooltip = styled('div', {\n  name: 'MuiTooltip',\n  slot: 'Tooltip',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  color: (theme.vars || theme).palette.common.white,\n  fontFamily: theme.typography.fontFamily,\n  padding: '4px 8px',\n  fontSize: theme.typography.pxToRem(11),\n  maxWidth: 300,\n  margin: 2,\n  wordWrap: 'break-word',\n  fontWeight: theme.typography.fontWeightMedium,\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n    transformOrigin: 'right center'\n  },\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n    transformOrigin: 'left center'\n  },\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n    transformOrigin: 'center bottom',\n    marginBottom: '14px'\n  },\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n    transformOrigin: 'center top',\n    marginTop: '14px'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.arrow,\n    style: {\n      position: 'relative',\n      margin: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.touch,\n    style: {\n      padding: '8px 16px',\n      fontSize: theme.typography.pxToRem(14),\n      lineHeight: `${round(16 / 14)}em`,\n      fontWeight: theme.typography.fontWeightRegular\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.isRtl,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n        marginRight: '14px'\n      },\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n        marginLeft: '14px'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.isRtl && ownerState.touch,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n        marginRight: '24px'\n      },\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n        marginLeft: '24px'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.isRtl,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n        marginLeft: '14px'\n      },\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n        marginRight: '14px'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.isRtl && ownerState.touch,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n        marginLeft: '24px'\n      },\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n        marginRight: '24px'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.touch,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n        marginBottom: '24px'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.touch,\n    style: {\n      [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n        marginTop: '24px'\n      }\n    }\n  }]\n})));\nconst TooltipArrow = styled('span', {\n  name: 'MuiTooltip',\n  slot: 'Arrow',\n  overridesResolver: (props, styles) => styles.arrow\n})(memoTheme(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  position: 'absolute',\n  width: '1em',\n  height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n  boxSizing: 'border-box',\n  color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n  '&::before': {\n    content: '\"\"',\n    margin: 'auto',\n    display: 'block',\n    width: '100%',\n    height: '100%',\n    backgroundColor: 'currentColor',\n    transform: 'rotate(45deg)'\n  }\n})));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n  x: 0,\n  y: 0\n};\nexport function testReset() {\n  hystersisOpen = false;\n  hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n  return (event, ...params) => {\n    if (eventHandler) {\n      eventHandler(event, ...params);\n    }\n    handler(event, ...params);\n  };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTooltip'\n  });\n  const {\n    arrow = false,\n    children: childrenProp,\n    classes: classesProp,\n    components = {},\n    componentsProps = {},\n    describeChild = false,\n    disableFocusListener = false,\n    disableHoverListener = false,\n    disableInteractive: disableInteractiveProp = false,\n    disableTouchListener = false,\n    enterDelay = 100,\n    enterNextDelay = 0,\n    enterTouchDelay = 700,\n    followCursor = false,\n    id: idProp,\n    leaveDelay = 0,\n    leaveTouchDelay = 1500,\n    onClose,\n    onOpen,\n    open: openProp,\n    placement = 'bottom',\n    PopperComponent: PopperComponentProp,\n    PopperProps = {},\n    slotProps = {},\n    slots = {},\n    title,\n    TransitionComponent: TransitionComponentProp = Grow,\n    TransitionProps,\n    ...other\n  } = props;\n\n  // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n  const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n    children: childrenProp\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const [childNode, setChildNode] = React.useState();\n  const [arrowRef, setArrowRef] = React.useState(null);\n  const ignoreNonTouchEvents = React.useRef(false);\n  const disableInteractive = disableInteractiveProp || followCursor;\n  const closeTimer = useTimeout();\n  const enterTimer = useTimeout();\n  const leaveTimer = useTimeout();\n  const touchTimer = useTimeout();\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: 'Tooltip',\n    state: 'open'\n  });\n  let open = openState;\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n    const {\n      current: isControlled\n    } = React.useRef(openProp !== undefined);\n\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n    React.useEffect(() => {\n      if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n        console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n      }\n    }, [title, childNode, isControlled]);\n  }\n  const id = useId(idProp);\n  const prevUserSelect = React.useRef();\n  const stopTouchInteraction = useEventCallback(() => {\n    if (prevUserSelect.current !== undefined) {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      prevUserSelect.current = undefined;\n    }\n    touchTimer.clear();\n  });\n  React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n  const handleOpen = event => {\n    hystersisTimer.clear();\n    hystersisOpen = true;\n\n    // The mouseover event will trigger for every nested element in the tooltip.\n    // We can skip rerendering when the tooltip is already open.\n    // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n    setOpenState(true);\n    if (onOpen && !open) {\n      onOpen(event);\n    }\n  };\n  const handleClose = useEventCallback(\n  /**\n   * @param {React.SyntheticEvent | Event} event\n   */\n  event => {\n    hystersisTimer.start(800 + leaveDelay, () => {\n      hystersisOpen = false;\n    });\n    setOpenState(false);\n    if (onClose && open) {\n      onClose(event);\n    }\n    closeTimer.start(theme.transitions.duration.shortest, () => {\n      ignoreNonTouchEvents.current = false;\n    });\n  });\n  const handleMouseOver = event => {\n    if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n      return;\n    }\n\n    // Remove the title ahead of time.\n    // We don't want to wait for the next render commit.\n    // We would risk displaying two tooltips at the same time (native + this one).\n    if (childNode) {\n      childNode.removeAttribute('title');\n    }\n    enterTimer.clear();\n    leaveTimer.clear();\n    if (enterDelay || hystersisOpen && enterNextDelay) {\n      enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n        handleOpen(event);\n      });\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleMouseLeave = event => {\n    enterTimer.clear();\n    leaveTimer.start(leaveDelay, () => {\n      handleClose(event);\n    });\n  };\n  const [, setChildIsFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setChildIsFocusVisible(false);\n      handleMouseLeave(event);\n    }\n  };\n  const handleFocus = event => {\n    // Workaround for https://github.com/facebook/react/issues/7769\n    // The autoFocus of React might trigger the event before the componentDidMount.\n    // We need to account for this eventuality.\n    if (!childNode) {\n      setChildNode(event.currentTarget);\n    }\n    if (isFocusVisible(event.target)) {\n      setChildIsFocusVisible(true);\n      handleMouseOver(event);\n    }\n  };\n  const detectTouchStart = event => {\n    ignoreNonTouchEvents.current = true;\n    const childrenProps = children.props;\n    if (childrenProps.onTouchStart) {\n      childrenProps.onTouchStart(event);\n    }\n  };\n  const handleTouchStart = event => {\n    detectTouchStart(event);\n    leaveTimer.clear();\n    closeTimer.clear();\n    stopTouchInteraction();\n    prevUserSelect.current = document.body.style.WebkitUserSelect;\n    // Prevent iOS text selection on long-tap.\n    document.body.style.WebkitUserSelect = 'none';\n    touchTimer.start(enterTouchDelay, () => {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      handleMouseOver(event);\n    });\n  };\n  const handleTouchEnd = event => {\n    if (children.props.onTouchEnd) {\n      children.props.onTouchEnd(event);\n    }\n    stopTouchInteraction();\n    leaveTimer.start(leaveTouchDelay, () => {\n      handleClose(event);\n    });\n  };\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      if (nativeEvent.key === 'Escape') {\n        handleClose(nativeEvent);\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleClose, open]);\n  const handleRef = useForkRef(getReactNodeRef(children), setChildNode, ref);\n\n  // There is no point in displaying an empty tooltip.\n  // So we exclude all falsy values, except 0, which is valid.\n  if (!title && title !== 0) {\n    open = false;\n  }\n  const popperRef = React.useRef();\n  const handleMouseMove = event => {\n    const childrenProps = children.props;\n    if (childrenProps.onMouseMove) {\n      childrenProps.onMouseMove(event);\n    }\n    cursorPosition = {\n      x: event.clientX,\n      y: event.clientY\n    };\n    if (popperRef.current) {\n      popperRef.current.update();\n    }\n  };\n  const nameOrDescProps = {};\n  const titleIsString = typeof title === 'string';\n  if (describeChild) {\n    nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n    nameOrDescProps['aria-describedby'] = open ? id : null;\n  } else {\n    nameOrDescProps['aria-label'] = titleIsString ? title : null;\n    nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n  }\n  const childrenProps = {\n    ...nameOrDescProps,\n    ...other,\n    ...children.props,\n    className: clsx(other.className, children.props.className),\n    onTouchStart: detectTouchStart,\n    ref: handleRef,\n    ...(followCursor ? {\n      onMouseMove: handleMouseMove\n    } : {})\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    childrenProps['data-mui-internal-clone-element'] = true;\n\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n    React.useEffect(() => {\n      if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n        console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n      }\n    }, [childNode]);\n  }\n  const interactiveWrapperListeners = {};\n  if (!disableTouchListener) {\n    childrenProps.onTouchStart = handleTouchStart;\n    childrenProps.onTouchEnd = handleTouchEnd;\n  }\n  if (!disableHoverListener) {\n    childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n    childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onMouseOver = handleMouseOver;\n      interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n    }\n  }\n  if (!disableFocusListener) {\n    childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n    childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onFocus = handleFocus;\n      interactiveWrapperListeners.onBlur = handleBlur;\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (children.props.title) {\n      console.error(['MUI: You have provided a `title` prop to the child of <Tooltip />.', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n    }\n  }\n  const popperOptions = React.useMemo(() => {\n    let tooltipModifiers = [{\n      name: 'arrow',\n      enabled: Boolean(arrowRef),\n      options: {\n        element: arrowRef,\n        padding: 4\n      }\n    }];\n    if (PopperProps.popperOptions?.modifiers) {\n      tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n    }\n    return {\n      ...PopperProps.popperOptions,\n      modifiers: tooltipModifiers\n    };\n  }, [arrowRef, PopperProps]);\n  const ownerState = {\n    ...props,\n    isRtl,\n    arrow,\n    disableInteractive,\n    placement,\n    PopperComponentProp,\n    touch: ignoreNonTouchEvents.current\n  };\n  const classes = useUtilityClasses(ownerState);\n  const PopperComponent = slots.popper ?? components.Popper ?? TooltipPopper;\n  const TransitionComponent = slots.transition ?? components.Transition ?? TransitionComponentProp ?? Grow;\n  const TooltipComponent = slots.tooltip ?? components.Tooltip ?? TooltipTooltip;\n  const ArrowComponent = slots.arrow ?? components.Arrow ?? TooltipArrow;\n  const popperProps = appendOwnerState(PopperComponent, {\n    ...PopperProps,\n    ...(slotProps.popper ?? componentsProps.popper),\n    className: clsx(classes.popper, PopperProps?.className, (slotProps.popper ?? componentsProps.popper)?.className)\n  }, ownerState);\n  const transitionProps = appendOwnerState(TransitionComponent, {\n    ...TransitionProps,\n    ...(slotProps.transition ?? componentsProps.transition)\n  }, ownerState);\n  const tooltipProps = appendOwnerState(TooltipComponent, {\n    ...(slotProps.tooltip ?? componentsProps.tooltip),\n    className: clsx(classes.tooltip, (slotProps.tooltip ?? componentsProps.tooltip)?.className)\n  }, ownerState);\n  const tooltipArrowProps = appendOwnerState(ArrowComponent, {\n    ...(slotProps.arrow ?? componentsProps.arrow),\n    className: clsx(classes.arrow, (slotProps.arrow ?? componentsProps.arrow)?.className)\n  }, ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, {\n      as: PopperComponentProp ?? Popper,\n      placement: placement,\n      anchorEl: followCursor ? {\n        getBoundingClientRect: () => ({\n          top: cursorPosition.y,\n          left: cursorPosition.x,\n          right: cursorPosition.x,\n          bottom: cursorPosition.y,\n          width: 0,\n          height: 0\n        })\n      } : childNode,\n      popperRef: popperRef,\n      open: childNode ? open : false,\n      id: id,\n      transition: true,\n      ...interactiveWrapperListeners,\n      ...popperProps,\n      popperOptions: popperOptions,\n      children: ({\n        TransitionProps: TransitionPropsInner\n      }) => /*#__PURE__*/_jsx(TransitionComponent, {\n        timeout: theme.transitions.duration.shorter,\n        ...TransitionPropsInner,\n        ...transitionProps,\n        children: /*#__PURE__*/_jsxs(TooltipComponent, {\n          ...tooltipProps,\n          children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, {\n            ...tooltipArrowProps,\n            ref: setArrowRef\n          }) : null]\n        })\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, adds an arrow to the tooltip.\n   * @default false\n   */\n  arrow: PropTypes.bool,\n  /**\n   * Tooltip reference element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Arrow: PropTypes.elementType,\n    Popper: PropTypes.elementType,\n    Tooltip: PropTypes.elementType,\n    Transition: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * Set to `true` if the `title` acts as an accessible description.\n   * By default the `title` acts as an accessible label for the child.\n   * @default false\n   */\n  describeChild: PropTypes.bool,\n  /**\n   * Do not respond to focus-visible events.\n   * @default false\n   */\n  disableFocusListener: PropTypes.bool,\n  /**\n   * Do not respond to hover events.\n   * @default false\n   */\n  disableHoverListener: PropTypes.bool,\n  /**\n   * Makes a tooltip not interactive, i.e. it will close when the user\n   * hovers over the tooltip before the `leaveDelay` is expired.\n   * @default false\n   */\n  disableInteractive: PropTypes.bool,\n  /**\n   * Do not respond to long press touch events.\n   * @default false\n   */\n  disableTouchListener: PropTypes.bool,\n  /**\n   * The number of milliseconds to wait before showing the tooltip.\n   * This prop won't impact the enter touch delay (`enterTouchDelay`).\n   * @default 100\n   */\n  enterDelay: PropTypes.number,\n  /**\n   * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n   * @default 0\n   */\n  enterNextDelay: PropTypes.number,\n  /**\n   * The number of milliseconds a user must touch the element before showing the tooltip.\n   * @default 700\n   */\n  enterTouchDelay: PropTypes.number,\n  /**\n   * If `true`, the tooltip follow the cursor over the wrapped element.\n   * @default false\n   */\n  followCursor: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: PropTypes.string,\n  /**\n   * The number of milliseconds to wait before hiding the tooltip.\n   * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n   * @default 0\n   */\n  leaveDelay: PropTypes.number,\n  /**\n   * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n   * @default 1500\n   */\n  leaveTouchDelay: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be open.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * Tooltip placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * The component used for the popper.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element.\n   * @default {}\n   */\n  PopperProps: PropTypes.object,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    arrow: PropTypes.elementType,\n    popper: PropTypes.elementType,\n    tooltip: PropTypes.elementType,\n    transition: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n   */\n  title: PropTypes.node,\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n  return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, internal_createExtendSxProp } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getTypographyUtilityClass } from \"./typographyClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst extendSxProp = internal_createExtendSxProp();\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n  };\n  return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n  name: 'MuiTypography',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  margin: 0,\n  variants: [{\n    props: {\n      variant: 'inherit'\n    },\n    style: {\n      // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.\n      font: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  }, ...Object.entries(theme.typography).filter(([variant, value]) => variant !== 'inherit' && value && typeof value === 'object').map(([variant, value]) => ({\n    props: {\n      variant\n    },\n    style: value\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  })), ...Object.entries(theme.palette?.text || {}).filter(([, value]) => typeof value === 'string').map(([color]) => ({\n    props: {\n      color: `text${capitalize(color)}`\n    },\n    style: {\n      color: (theme.vars || theme).palette.text[color]\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.align !== 'inherit',\n    style: {\n      textAlign: 'var(--Typography-textAlign)'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.noWrap,\n    style: {\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.gutterBottom,\n    style: {\n      marginBottom: '0.35em'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.paragraph,\n    style: {\n      marginBottom: 16\n    }\n  }]\n})));\nconst defaultVariantMapping = {\n  h1: 'h1',\n  h2: 'h2',\n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  subtitle1: 'h6',\n  subtitle2: 'h6',\n  body1: 'p',\n  body2: 'p',\n  inherit: 'p'\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n  const {\n    color,\n    ...themeProps\n  } = useDefaultProps({\n    props: inProps,\n    name: 'MuiTypography'\n  });\n  const isSxColor = !v6Colors[color];\n  // TODO: Remove `extendSxProp` in v7\n  const props = extendSxProp({\n    ...themeProps,\n    ...(isSxColor && {\n      color\n    })\n  });\n  const {\n    align = 'inherit',\n    className,\n    component,\n    gutterBottom = false,\n    noWrap = false,\n    paragraph = false,\n    variant = 'body1',\n    variantMapping = defaultVariantMapping,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    align,\n    color,\n    className,\n    component,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    variantMapping\n  };\n  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TypographyRoot, {\n    as: Component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other,\n    ownerState: ownerState,\n    style: {\n      ...(align !== 'inherit' && {\n        '--Typography-textAlign': align\n      }),\n      ...other.style\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the component.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the text will have a bottom margin.\n   * @default false\n   */\n  gutterBottom: PropTypes.bool,\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n   *\n   * Note that text overflow can only happen with block or inline-block level elements\n   * (the element needs to have a width in order to overflow).\n   * @default false\n   */\n  noWrap: PropTypes.bool,\n  /**\n   * If `true`, the element will be a paragraph element.\n   * @default false\n   * @deprecated Use the `component` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  paragraph: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Applies the theme typography styles.\n   * @default 'body1'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n  /**\n   * The component maps the variant prop to a range of different HTML element types.\n   * For instance, subtitle1 to `<h6>`.\n   * If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` prop.\n   * @default {\n   *   h1: 'h1',\n   *   h2: 'h2',\n   *   h3: 'h3',\n   *   h4: 'h4',\n   *   h5: 'h5',\n   *   h6: 'h6',\n   *   subtitle1: 'h6',\n   *   subtitle2: 'h6',\n   *   body1: 'p',\n   *   body2: 'p',\n   *   inherit: 'p',\n   * }\n   */\n  variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n  return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","'use client';\n\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument, unstable_getReactNodeRef as getReactNodeRef } from '@mui/utils';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n  const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n  if (!Number.isNaN(tabindexAttr)) {\n    return tabindexAttr;\n  }\n\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n  //  `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n  //  yet they are still part of the regular tab order; in FF, they get a default\n  //  `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n  //  order, consider their tab index to be 0.\n  if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n    return 0;\n  }\n  return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n  if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n    return false;\n  }\n  if (!node.name) {\n    return false;\n  }\n  const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n  let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n  if (!roving) {\n    roving = getRadio(`[name=\"${node.name}\"]`);\n  }\n  return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n  if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n    return false;\n  }\n  return true;\n}\nfunction defaultGetTabbable(root) {\n  const regularTabNodes = [];\n  const orderedTabNodes = [];\n  Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n    const nodeTabIndex = getTabIndex(node);\n    if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n      return;\n    }\n    if (nodeTabIndex === 0) {\n      regularTabNodes.push(node);\n    } else {\n      orderedTabNodes.push({\n        documentOrder: i,\n        tabIndex: nodeTabIndex,\n        node: node\n      });\n    }\n  });\n  return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n  return true;\n}\n\n/**\n * @ignore - internal component.\n */\nfunction FocusTrap(props) {\n  const {\n    children,\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableRestoreFocus = false,\n    getTabbable = defaultGetTabbable,\n    isEnabled = defaultIsEnabled,\n    open\n  } = props;\n  const ignoreNextEnforceFocus = React.useRef(false);\n  const sentinelStart = React.useRef(null);\n  const sentinelEnd = React.useRef(null);\n  const nodeToRestore = React.useRef(null);\n  const reactFocusEventTarget = React.useRef(null);\n  // This variable is useful when disableAutoFocus is true.\n  // It waits for the active element to move into the component to activate.\n  const activated = React.useRef(false);\n  const rootRef = React.useRef(null);\n  const handleRef = useForkRef(getReactNodeRef(children), rootRef);\n  const lastKeydown = React.useRef(null);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    activated.current = !disableAutoFocus;\n  }, [disableAutoFocus, open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    if (!rootRef.current.contains(doc.activeElement)) {\n      if (!rootRef.current.hasAttribute('tabIndex')) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n        }\n        rootRef.current.setAttribute('tabIndex', '-1');\n      }\n      if (activated.current) {\n        rootRef.current.focus();\n      }\n    }\n    return () => {\n      // restoreLastFocus()\n      if (!disableRestoreFocus) {\n        // In IE11 it is possible for document.activeElement to be null resulting\n        // in nodeToRestore.current being null.\n        // Not all elements in IE11 have a focus method.\n        // Once IE11 support is dropped the focus() call can be unconditional.\n        if (nodeToRestore.current && nodeToRestore.current.focus) {\n          ignoreNextEnforceFocus.current = true;\n          nodeToRestore.current.focus();\n        }\n        nodeToRestore.current = null;\n      }\n    };\n    // Missing `disableRestoreFocus` which is fine.\n    // We don't support changing that prop on an open FocusTrap\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    const loopFocus = nativeEvent => {\n      lastKeydown.current = nativeEvent;\n      if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n        return;\n      }\n\n      // Make sure the next tab starts from the right place.\n      // doc.activeElement refers to the origin.\n      if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n        // We need to ignore the next contain as\n        // it will try to move the focus back to the rootRef element.\n        ignoreNextEnforceFocus.current = true;\n        if (sentinelEnd.current) {\n          sentinelEnd.current.focus();\n        }\n      }\n    };\n    const contain = () => {\n      const rootElement = rootRef.current;\n\n      // Cleanup functions are executed lazily in React 17.\n      // Contain can be called between the component being unmounted and its cleanup function being run.\n      if (rootElement === null) {\n        return;\n      }\n      if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {\n        ignoreNextEnforceFocus.current = false;\n        return;\n      }\n\n      // The focus is already inside\n      if (rootElement.contains(doc.activeElement)) {\n        return;\n      }\n\n      // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)\n      if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {\n        return;\n      }\n\n      // if the focus event is not coming from inside the children's react tree, reset the refs\n      if (doc.activeElement !== reactFocusEventTarget.current) {\n        reactFocusEventTarget.current = null;\n      } else if (reactFocusEventTarget.current !== null) {\n        return;\n      }\n      if (!activated.current) {\n        return;\n      }\n      let tabbable = [];\n      if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n        tabbable = getTabbable(rootRef.current);\n      }\n\n      // one of the sentinel nodes was focused, so move the focus\n      // to the first/last tabbable element inside the focus trap\n      if (tabbable.length > 0) {\n        const isShiftTab = Boolean(lastKeydown.current?.shiftKey && lastKeydown.current?.key === 'Tab');\n        const focusNext = tabbable[0];\n        const focusPrevious = tabbable[tabbable.length - 1];\n        if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n          if (isShiftTab) {\n            focusPrevious.focus();\n          } else {\n            focusNext.focus();\n          }\n        }\n        // no tabbable elements in the trap focus or the focus was outside of the focus trap\n      } else {\n        rootElement.focus();\n      }\n    };\n    doc.addEventListener('focusin', contain);\n    doc.addEventListener('keydown', loopFocus, true);\n\n    // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n    // for example https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n    // Instead, we can look if the active element was restored on the BODY element.\n    //\n    // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n    // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n    const interval = setInterval(() => {\n      if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n        contain();\n      }\n    }, 50);\n    return () => {\n      clearInterval(interval);\n      doc.removeEventListener('focusin', contain);\n      doc.removeEventListener('keydown', loopFocus, true);\n    };\n  }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n  const onFocus = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n    reactFocusEventTarget.current = event.target;\n    const childrenPropsHandler = children.props.onFocus;\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const handleFocusSentinel = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelStart,\n      \"data-testid\": \"sentinelStart\"\n    }), /*#__PURE__*/React.cloneElement(children, {\n      ref: handleRef,\n      onFocus\n    }), /*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelEnd,\n      \"data-testid\": \"sentinelEnd\"\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef,\n  /**\n   * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not restore focus to previously focused element once\n   * focus trap is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n   * For instance, you can provide the \"tabbable\" npm dependency.\n   * @param {HTMLElement} root\n   */\n  getTabbable: PropTypes.func,\n  /**\n   * This prop extends the `open` prop.\n   * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n   * This prop should be memoized.\n   * It can be used to support multiple focus trap mounted at the same time.\n   * @default function defaultIsEnabled(): boolean {\n   *   return true;\n   * }\n   */\n  isEnabled: PropTypes.func,\n  /**\n   * If `true`, focus is locked.\n   */\n  open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport default FocusTrap;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n  return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport { getSwitchBaseUtilityClass } from \"./switchBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    checked,\n    disabled,\n    edge\n  } = ownerState;\n  const slots = {\n    root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n    input: ['input']\n  };\n  return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)({\n  padding: 9,\n  borderRadius: '50%',\n  variants: [{\n    props: {\n      edge: 'start',\n      size: 'small'\n    },\n    style: {\n      marginLeft: -3\n    }\n  }, {\n    props: ({\n      edge,\n      ownerState\n    }) => edge === 'start' && ownerState.size !== 'small',\n    style: {\n      marginLeft: -12\n    }\n  }, {\n    props: {\n      edge: 'end',\n      size: 'small'\n    },\n    style: {\n      marginRight: -3\n    }\n  }, {\n    props: ({\n      edge,\n      ownerState\n    }) => edge === 'end' && ownerState.size !== 'small',\n    style: {\n      marginRight: -12\n    }\n  }]\n});\nconst SwitchBaseInput = styled('input', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  cursor: 'inherit',\n  position: 'absolute',\n  opacity: 0,\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  margin: 0,\n  padding: 0,\n  zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n  const {\n    autoFocus,\n    checked: checkedProp,\n    checkedIcon,\n    className,\n    defaultChecked,\n    disabled: disabledProp,\n    disableFocusRipple = false,\n    edge = false,\n    icon,\n    id,\n    inputProps,\n    inputRef,\n    name,\n    onBlur,\n    onChange,\n    onFocus,\n    readOnly,\n    required = false,\n    tabIndex,\n    type,\n    value,\n    ...other\n  } = props;\n  const [checked, setCheckedState] = useControlled({\n    controlled: checkedProp,\n    default: Boolean(defaultChecked),\n    name: 'SwitchBase',\n    state: 'checked'\n  });\n  const muiFormControl = useFormControl();\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    }\n  };\n  const handleInputChange = event => {\n    // Workaround for https://github.com/facebook/react/issues/9023\n    if (event.nativeEvent.defaultPrevented) {\n      return;\n    }\n    const newChecked = event.target.checked;\n    setCheckedState(newChecked);\n    if (onChange) {\n      // TODO v6: remove the second argument.\n      onChange(event, newChecked);\n    }\n  };\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  const hasLabelFor = type === 'checkbox' || type === 'radio';\n  const ownerState = {\n    ...props,\n    checked,\n    disabled,\n    disableFocusRipple,\n    edge\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SwitchBaseRoot, {\n    component: \"span\",\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    tabIndex: null,\n    role: undefined,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [/*#__PURE__*/_jsx(SwitchBaseInput, {\n      autoFocus: autoFocus,\n      checked: checkedProp,\n      defaultChecked: defaultChecked,\n      className: classes.input,\n      disabled: disabled,\n      id: hasLabelFor ? id : undefined,\n      name: name,\n      onChange: handleInputChange,\n      readOnly: readOnly,\n      ref: inputRef,\n      required: required,\n      ownerState: ownerState,\n      tabIndex: tabIndex,\n      type: type,\n      ...(type === 'checkbox' && value === undefined ? {} : {\n        value\n      }),\n      ...inputProps\n    }), checked ? checkedIcon : icon]\n  });\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node.isRequired,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /*\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The input component prop `type`.\n   */\n  type: PropTypes.string.isRequired,\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","'use client';\n\nimport * as React from 'react';\nimport { ThemeProvider as SystemThemeProvider } from '@mui/system';\nimport THEME_ID from \"./identifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProviderNoVars({\n  theme: themeInput,\n  ...props\n}) {\n  const scopedTheme = THEME_ID in themeInput ? themeInput[THEME_ID] : undefined;\n  return /*#__PURE__*/_jsx(SystemThemeProvider, {\n    ...props,\n    themeId: scopedTheme ? THEME_ID : undefined,\n    theme: scopedTheme || themeInput\n  });\n}","'use client';\n\nimport * as React from 'react';\nimport ThemeProviderNoVars from \"./ThemeProviderNoVars.js\";\nimport { CssVarsProvider } from \"./ThemeProviderWithVars.js\";\nimport THEME_ID from \"./identifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProvider({\n  theme,\n  ...props\n}) {\n  if (typeof theme === 'function') {\n    return /*#__PURE__*/_jsx(ThemeProviderNoVars, {\n      theme: theme,\n      ...props\n    });\n  }\n  const muiTheme = THEME_ID in theme ? theme[THEME_ID] : theme;\n  if (!('colorSchemes' in muiTheme)) {\n    return /*#__PURE__*/_jsx(ThemeProviderNoVars, {\n      theme: theme,\n      ...props\n    });\n  }\n  return /*#__PURE__*/_jsx(CssVarsProvider, {\n    theme: theme,\n    ...props\n  });\n}","/**\n * Split this component for RSC import\n */\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_MODE_STORAGE_KEY = 'mode';\nexport const DEFAULT_COLOR_SCHEME_STORAGE_KEY = 'color-scheme';\nexport const DEFAULT_ATTRIBUTE = 'data-color-scheme';\nexport default function InitColorSchemeScript(options) {\n  const {\n    defaultLightColorScheme = 'light',\n    defaultDarkColorScheme = 'dark',\n    modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    attribute: initialAttribute = DEFAULT_ATTRIBUTE,\n    colorSchemeNode = 'document.documentElement',\n    nonce\n  } = options || {};\n  let setter = '';\n  let attribute = initialAttribute;\n  if (initialAttribute === 'class') {\n    attribute = '.%s';\n  }\n  if (initialAttribute === 'data') {\n    attribute = '[data-%s]';\n  }\n  if (attribute.startsWith('.')) {\n    const selector = attribute.substring(1);\n    setter += `${colorSchemeNode}.classList.remove('${selector}'.replace('%s', light), '${selector}'.replace('%s', dark));\n      ${colorSchemeNode}.classList.add('${selector}'.replace('%s', colorScheme));`;\n  }\n  const matches = attribute.match(/\\[([^\\]]+)\\]/); // case [data-color-scheme=%s] or [data-color-scheme]\n  if (matches) {\n    const [attr, value] = matches[1].split('=');\n    if (!value) {\n      setter += `${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', light));\n      ${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', dark));`;\n    }\n    setter += `\n      ${colorSchemeNode}.setAttribute('${attr}'.replace('%s', colorScheme), ${value ? `${value}.replace('%s', colorScheme)` : '\"\"'});`;\n  } else {\n    setter += `${colorSchemeNode}.setAttribute('${attribute}', colorScheme);`;\n  }\n  return /*#__PURE__*/_jsx(\"script\", {\n    suppressHydrationWarning: true,\n    nonce: typeof window === 'undefined' ? nonce : ''\n    // eslint-disable-next-line react/no-danger\n    ,\n    dangerouslySetInnerHTML: {\n      __html: `(function() {\ntry {\n  let colorScheme = '';\n  const mode = localStorage.getItem('${modeStorageKey}') || 'system';\n  const dark = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n  const light = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n  if (mode === 'system') {\n    // handle system mode\n    const mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      colorScheme = dark\n    } else {\n      colorScheme = light\n    }\n  }\n  if (mode === 'light') {\n    colorScheme = light;\n  }\n  if (mode === 'dark') {\n    colorScheme = dark;\n  }\n  if (colorScheme) {\n    ${setter}\n  }\n} catch(e){}})();`\n    }\n  }, \"mui-color-scheme-init\");\n}","'use client';\n\nimport * as React from 'react';\nimport { DEFAULT_MODE_STORAGE_KEY, DEFAULT_COLOR_SCHEME_STORAGE_KEY } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nexport function getSystemMode(mode) {\n  if (typeof window !== 'undefined' && typeof window.matchMedia === 'function' && mode === 'system') {\n    const mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      return 'dark';\n    }\n    return 'light';\n  }\n  return undefined;\n}\nfunction processState(state, callback) {\n  if (state.mode === 'light' || state.mode === 'system' && state.systemMode === 'light') {\n    return callback('light');\n  }\n  if (state.mode === 'dark' || state.mode === 'system' && state.systemMode === 'dark') {\n    return callback('dark');\n  }\n  return undefined;\n}\nexport function getColorScheme(state) {\n  return processState(state, mode => {\n    if (mode === 'light') {\n      return state.lightColorScheme;\n    }\n    if (mode === 'dark') {\n      return state.darkColorScheme;\n    }\n    return undefined;\n  });\n}\nfunction initializeValue(key, defaultValue) {\n  if (typeof window === 'undefined') {\n    return undefined;\n  }\n  let value;\n  try {\n    value = localStorage.getItem(key) || undefined;\n    if (!value) {\n      // the first time that user enters the site.\n      localStorage.setItem(key, defaultValue);\n    }\n  } catch (e) {\n    // Unsupported\n  }\n  return value || defaultValue;\n}\nexport default function useCurrentColorScheme(options) {\n  const {\n    defaultMode = 'light',\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    supportedColorSchemes = [],\n    modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    storageWindow = typeof window === 'undefined' ? undefined : window\n  } = options;\n  const joinedColorSchemes = supportedColorSchemes.join(',');\n  const isMultiSchemes = supportedColorSchemes.length > 1;\n  const [state, setState] = React.useState(() => {\n    const initialMode = initializeValue(modeStorageKey, defaultMode);\n    const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n    const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n    return {\n      mode: initialMode,\n      systemMode: getSystemMode(initialMode),\n      lightColorScheme,\n      darkColorScheme\n    };\n  });\n  // This could be improved with `React.useSyncExternalStore` in the future.\n  const [, setHasMounted] = React.useState(false);\n  const hasMounted = React.useRef(false);\n  React.useEffect(() => {\n    if (isMultiSchemes) {\n      setHasMounted(true); // to rerender the component after hydration\n    }\n    hasMounted.current = true;\n  }, [isMultiSchemes]);\n  const colorScheme = getColorScheme(state);\n  const setMode = React.useCallback(mode => {\n    setState(currentState => {\n      if (mode === currentState.mode) {\n        // do nothing if mode does not change\n        return currentState;\n      }\n      const newMode = mode ?? defaultMode;\n      try {\n        localStorage.setItem(modeStorageKey, newMode);\n      } catch (e) {\n        // Unsupported\n      }\n      return {\n        ...currentState,\n        mode: newMode,\n        systemMode: getSystemMode(newMode)\n      };\n    });\n  }, [modeStorageKey, defaultMode]);\n  const setColorScheme = React.useCallback(value => {\n    if (!value) {\n      setState(currentState => {\n        try {\n          localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n          localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n        } catch (e) {\n          // Unsupported\n        }\n        return {\n          ...currentState,\n          lightColorScheme: defaultLightColorScheme,\n          darkColorScheme: defaultDarkColorScheme\n        };\n      });\n    } else if (typeof value === 'string') {\n      if (value && !joinedColorSchemes.includes(value)) {\n        console.error(`\\`${value}\\` does not exist in \\`theme.colorSchemes\\`.`);\n      } else {\n        setState(currentState => {\n          const newState = {\n            ...currentState\n          };\n          processState(currentState, mode => {\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);\n            } catch (e) {\n              // Unsupported\n            }\n            if (mode === 'light') {\n              newState.lightColorScheme = value;\n            }\n            if (mode === 'dark') {\n              newState.darkColorScheme = value;\n            }\n          });\n          return newState;\n        });\n      }\n    } else {\n      setState(currentState => {\n        const newState = {\n          ...currentState\n        };\n        const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;\n        const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;\n        if (newLightColorScheme) {\n          if (!joinedColorSchemes.includes(newLightColorScheme)) {\n            console.error(`\\`${newLightColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.lightColorScheme = newLightColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        if (newDarkColorScheme) {\n          if (!joinedColorSchemes.includes(newDarkColorScheme)) {\n            console.error(`\\`${newDarkColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.darkColorScheme = newDarkColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        return newState;\n      });\n    }\n  }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);\n  const handleMediaQuery = React.useCallback(event => {\n    if (state.mode === 'system') {\n      setState(currentState => {\n        const systemMode = event?.matches ? 'dark' : 'light';\n\n        // Early exit, nothing changed.\n        if (currentState.systemMode === systemMode) {\n          return currentState;\n        }\n        return {\n          ...currentState,\n          systemMode\n        };\n      });\n    }\n  }, [state.mode]);\n\n  // Ref hack to avoid adding handleMediaQuery as a dep\n  const mediaListener = React.useRef(handleMediaQuery);\n  mediaListener.current = handleMediaQuery;\n  React.useEffect(() => {\n    if (typeof window.matchMedia !== 'function' || !isMultiSchemes) {\n      return undefined;\n    }\n    const handler = (...args) => mediaListener.current(...args);\n\n    // Always listen to System preference\n    const media = window.matchMedia('(prefers-color-scheme: dark)');\n\n    // Intentionally use deprecated listener methods to support iOS & old browsers\n    media.addListener(handler);\n    handler(media);\n    return () => {\n      media.removeListener(handler);\n    };\n  }, [isMultiSchemes]);\n\n  // Handle when localStorage has changed\n  React.useEffect(() => {\n    if (storageWindow && isMultiSchemes) {\n      const handleStorage = event => {\n        const value = event.newValue;\n        if (typeof event.key === 'string' && event.key.startsWith(colorSchemeStorageKey) && (!value || joinedColorSchemes.match(value))) {\n          // If the key is deleted, value will be null then reset color scheme to the default one.\n          if (event.key.endsWith('light')) {\n            setColorScheme({\n              light: value\n            });\n          }\n          if (event.key.endsWith('dark')) {\n            setColorScheme({\n              dark: value\n            });\n          }\n        }\n        if (event.key === modeStorageKey && (!value || ['light', 'dark', 'system'].includes(value))) {\n          setMode(value || defaultMode);\n        }\n      };\n      // For syncing color-scheme changes between iframes\n      storageWindow.addEventListener('storage', handleStorage);\n      return () => {\n        storageWindow.removeEventListener('storage', handleStorage);\n      };\n    }\n    return undefined;\n  }, [setColorScheme, setMode, modeStorageKey, colorSchemeStorageKey, joinedColorSchemes, defaultMode, storageWindow, isMultiSchemes]);\n  return {\n    ...state,\n    mode: hasMounted.current || !isMultiSchemes ? state.mode : undefined,\n    systemMode: hasMounted.current || !isMultiSchemes ? state.systemMode : undefined,\n    colorScheme: hasMounted.current || !isMultiSchemes ? colorScheme : undefined,\n    setMode,\n    setColorScheme\n  };\n}","import * as React from 'react';\nimport SystemInitColorSchemeScript from '@mui/system/InitColorSchemeScript';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const defaultConfig = {\n  attribute: 'data-mui-color-scheme',\n  colorSchemeStorageKey: 'mui-color-scheme',\n  defaultLightColorScheme: 'light',\n  defaultDarkColorScheme: 'dark',\n  modeStorageKey: 'mui-mode'\n};\nexport default (function InitColorSchemeScript(props) {\n  return /*#__PURE__*/_jsx(SystemInitColorSchemeScript, {\n    ...defaultConfig,\n    ...props\n  });\n});","'use client';\n\nimport * as React from 'react';\nimport styleFunctionSx from '@mui/system/styleFunctionSx';\nimport { unstable_createCssVarsProvider as createCssVarsProvider } from '@mui/system';\nimport createTheme from \"./createTheme.js\";\nimport createTypography from \"./createTypography.js\";\nimport THEME_ID from \"./identifier.js\";\nimport { defaultConfig } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst {\n  CssVarsProvider: InternalCssVarsProvider,\n  useColorScheme,\n  getInitColorSchemeScript: deprecatedGetInitColorSchemeScript\n} = createCssVarsProvider({\n  themeId: THEME_ID,\n  // @ts-ignore ignore module augmentation tests\n  theme: () => createTheme({\n    cssVariables: true\n  }),\n  colorSchemeStorageKey: defaultConfig.colorSchemeStorageKey,\n  modeStorageKey: defaultConfig.modeStorageKey,\n  defaultColorScheme: {\n    light: defaultConfig.defaultLightColorScheme,\n    dark: defaultConfig.defaultDarkColorScheme\n  },\n  resolveTheme: theme => {\n    const newTheme = {\n      ...theme,\n      typography: createTypography(theme.palette, theme.typography)\n    };\n    newTheme.unstable_sx = function sx(props) {\n      return styleFunctionSx({\n        sx: props,\n        theme: this\n      });\n    };\n    return newTheme;\n  }\n});\nlet warnedOnce = false;\n\n// TODO: remove in v7\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction Experimental_CssVarsProvider(props) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      console.warn(['MUI: The Experimental_CssVarsProvider component has been ported into ThemeProvider.', '', \"You should use `import { ThemeProvider } from '@mui/material/styles'` instead.\", 'For more details, check out https://mui.com/material-ui/customization/css-theme-variables/usage/'].join('\\n'));\n      warnedOnce = true;\n    }\n  }\n  return /*#__PURE__*/_jsx(InternalCssVarsProvider, {\n    ...props\n  });\n}\nlet warnedInitScriptOnce = false;\n\n// TODO: remove in v7\nconst getInitColorSchemeScript = params => {\n  if (!warnedInitScriptOnce) {\n    console.warn(['MUI: The getInitColorSchemeScript function has been deprecated.', '', \"You should use `import InitColorSchemeScript from '@mui/material/InitColorSchemeScript'`\", 'and replace the function call with `<InitColorSchemeScript />` instead.'].join('\\n'));\n    warnedInitScriptOnce = true;\n  }\n  return deprecatedGetInitColorSchemeScript(params);\n};\n\n/**\n * TODO: remove this export in v7\n * @deprecated\n * The `CssVarsProvider` component has been deprecated and ported into `ThemeProvider`.\n *\n * You should use `ThemeProvider` and `createTheme` instead:\n *\n * ```diff\n * - import { CssVarsProvider, extendTheme } from '@mui/material/styles';\n * + import { ThemeProvider, createTheme } from '@mui/material/styles';\n *\n * - const theme = extendTheme();\n * + const theme = createTheme({\n * +   cssVariables: true,\n * +   colorSchemes: { light: true, dark: true },\n * + });\n *\n * - <CssVarsProvider theme={theme}>\n * + <ThemeProvider theme={theme}>\n * ```\n *\n * To see the full documentation, check out https://mui.com/material-ui/customization/css-theme-variables/usage/.\n */\nexport const CssVarsProvider = InternalCssVarsProvider;\nexport { useColorScheme, getInitColorSchemeScript, Experimental_CssVarsProvider };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles } from '@mui/styled-engine';\nimport { useTheme as muiUseTheme } from '@mui/private-theming';\nimport ThemeProvider from \"../ThemeProvider/index.js\";\nimport InitColorSchemeScript, { DEFAULT_COLOR_SCHEME_STORAGE_KEY, DEFAULT_MODE_STORAGE_KEY } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nimport useCurrentColorScheme from \"./useCurrentColorScheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DISABLE_CSS_TRANSITION = '*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';\nexport default function createCssVarsProvider(options) {\n  const {\n    themeId,\n    /**\n     * This `theme` object needs to follow a certain structure to\n     * be used correctly by the finel `CssVarsProvider`. It should have a\n     * `colorSchemes` key with the light and dark (and any other) palette.\n     * It should also ideally have a vars object created using `prepareCssVars`.\n     */\n    theme: defaultTheme = {},\n    modeStorageKey: defaultModeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey: defaultColorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    disableTransitionOnChange: designSystemTransitionOnChange = false,\n    defaultColorScheme,\n    resolveTheme\n  } = options;\n  const defaultContext = {\n    allColorSchemes: [],\n    colorScheme: undefined,\n    darkColorScheme: undefined,\n    lightColorScheme: undefined,\n    mode: undefined,\n    setColorScheme: () => {},\n    setMode: () => {},\n    systemMode: undefined\n  };\n  const ColorSchemeContext = /*#__PURE__*/React.createContext(undefined);\n  if (process.env.NODE_ENV !== 'production') {\n    ColorSchemeContext.displayName = 'ColorSchemeContext';\n  }\n  const useColorScheme = () => React.useContext(ColorSchemeContext) || defaultContext;\n  function CssVarsProvider(props) {\n    const {\n      children,\n      theme: themeProp,\n      modeStorageKey = defaultModeStorageKey,\n      colorSchemeStorageKey = defaultColorSchemeStorageKey,\n      disableTransitionOnChange = designSystemTransitionOnChange,\n      storageWindow = typeof window === 'undefined' ? undefined : window,\n      documentNode = typeof document === 'undefined' ? undefined : document,\n      colorSchemeNode = typeof document === 'undefined' ? undefined : document.documentElement,\n      disableNestedContext = false,\n      disableStyleSheetGeneration = false\n    } = props;\n    const hasMounted = React.useRef(false);\n    const upperTheme = muiUseTheme();\n    const ctx = React.useContext(ColorSchemeContext);\n    const nested = !!ctx && !disableNestedContext;\n    const initialTheme = React.useMemo(() => {\n      if (themeProp) {\n        return themeProp;\n      }\n      return typeof defaultTheme === 'function' ? defaultTheme() : defaultTheme;\n    }, [themeProp]);\n    const scopedTheme = initialTheme[themeId];\n    const {\n      colorSchemes = {},\n      components = {},\n      cssVarPrefix,\n      ...restThemeProp\n    } = scopedTheme || initialTheme;\n    const joinedColorSchemes = Object.keys(colorSchemes).filter(k => !!colorSchemes[k]).join(',');\n    const allColorSchemes = React.useMemo(() => joinedColorSchemes.split(','), [joinedColorSchemes]);\n    const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n    const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n    const defaultMode = colorSchemes[defaultLightColorScheme] && colorSchemes[defaultDarkColorScheme] ? 'system' : colorSchemes[restThemeProp.defaultColorScheme]?.palette?.mode || restThemeProp.palette?.mode;\n\n    // 1. Get the data about the `mode`, `colorScheme`, and setter functions.\n    const {\n      mode: stateMode,\n      setMode,\n      systemMode,\n      lightColorScheme,\n      darkColorScheme,\n      colorScheme: stateColorScheme,\n      setColorScheme\n    } = useCurrentColorScheme({\n      supportedColorSchemes: allColorSchemes,\n      defaultLightColorScheme,\n      defaultDarkColorScheme,\n      modeStorageKey,\n      colorSchemeStorageKey,\n      defaultMode,\n      storageWindow\n    });\n    let mode = stateMode;\n    let colorScheme = stateColorScheme;\n    if (nested) {\n      mode = ctx.mode;\n      colorScheme = ctx.colorScheme;\n    }\n\n    // `colorScheme` is undefined on the server and hydration phase\n    const calculatedColorScheme = colorScheme || restThemeProp.defaultColorScheme;\n\n    // 2. get the `vars` object that refers to the CSS custom properties\n    const themeVars = restThemeProp.generateThemeVars?.() || restThemeProp.vars;\n\n    // 3. Start composing the theme object\n    const theme = {\n      ...restThemeProp,\n      components,\n      colorSchemes,\n      cssVarPrefix,\n      vars: themeVars\n    };\n    if (typeof theme.generateSpacing === 'function') {\n      theme.spacing = theme.generateSpacing();\n    }\n\n    // 4. Resolve the color scheme and merge it to the theme\n    if (calculatedColorScheme) {\n      const scheme = colorSchemes[calculatedColorScheme];\n      if (scheme && typeof scheme === 'object') {\n        // 4.1 Merge the selected color scheme to the theme\n        Object.keys(scheme).forEach(schemeKey => {\n          if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') {\n            // shallow merge the 1st level structure of the theme.\n            theme[schemeKey] = {\n              ...theme[schemeKey],\n              ...scheme[schemeKey]\n            };\n          } else {\n            theme[schemeKey] = scheme[schemeKey];\n          }\n        });\n      }\n    }\n\n    // 5. Declaring effects\n    // 5.1 Updates the selector value to use the current color scheme which tells CSS to use the proper stylesheet.\n    const colorSchemeSelector = restThemeProp.colorSchemeSelector;\n    React.useEffect(() => {\n      if (colorScheme && colorSchemeNode && colorSchemeSelector && colorSchemeSelector !== 'media') {\n        const selector = colorSchemeSelector;\n        let rule = colorSchemeSelector;\n        if (selector === 'class') {\n          rule = `.%s`;\n        }\n        if (selector === 'data') {\n          rule = `[data-%s]`;\n        }\n        if (selector?.startsWith('data-') && !selector.includes('%s')) {\n          // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n          rule = `[${selector}=\"%s\"]`;\n        }\n        if (rule.startsWith('.')) {\n          colorSchemeNode.classList.remove(...allColorSchemes.map(scheme => rule.substring(1).replace('%s', scheme)));\n          colorSchemeNode.classList.add(rule.substring(1).replace('%s', colorScheme));\n        } else {\n          const matches = rule.replace('%s', colorScheme).match(/\\[([^\\]]+)\\]/);\n          if (matches) {\n            const [attr, value] = matches[1].split('=');\n            if (!value) {\n              // for attributes like `data-theme-dark`, `data-theme-light`\n              // remove all the existing data attributes before setting the new one\n              allColorSchemes.forEach(scheme => {\n                colorSchemeNode.removeAttribute(attr.replace(colorScheme, scheme));\n              });\n            }\n            colorSchemeNode.setAttribute(attr, value ? value.replace(/\"|'/g, '') : '');\n          } else {\n            colorSchemeNode.setAttribute(rule, colorScheme);\n          }\n        }\n      }\n    }, [colorScheme, colorSchemeSelector, colorSchemeNode, allColorSchemes]);\n\n    // 5.2 Remove the CSS transition when color scheme changes to create instant experience.\n    // credit: https://github.com/pacocoursey/next-themes/blob/b5c2bad50de2d61ad7b52a9c5cdc801a78507d7a/index.tsx#L313\n    React.useEffect(() => {\n      let timer;\n      if (disableTransitionOnChange && hasMounted.current && documentNode) {\n        const css = documentNode.createElement('style');\n        css.appendChild(documentNode.createTextNode(DISABLE_CSS_TRANSITION));\n        documentNode.head.appendChild(css);\n\n        // Force browser repaint\n        (() => window.getComputedStyle(documentNode.body))();\n        timer = setTimeout(() => {\n          documentNode.head.removeChild(css);\n        }, 1);\n      }\n      return () => {\n        clearTimeout(timer);\n      };\n    }, [colorScheme, disableTransitionOnChange, documentNode]);\n    React.useEffect(() => {\n      hasMounted.current = true;\n      return () => {\n        hasMounted.current = false;\n      };\n    }, []);\n    const contextValue = React.useMemo(() => ({\n      allColorSchemes,\n      colorScheme,\n      darkColorScheme,\n      lightColorScheme,\n      mode,\n      setColorScheme,\n      setMode,\n      systemMode\n    }), [allColorSchemes, colorScheme, darkColorScheme, lightColorScheme, mode, setColorScheme, setMode, systemMode]);\n    let shouldGenerateStyleSheet = true;\n    if (disableStyleSheetGeneration || restThemeProp.cssVariables === false || nested && upperTheme?.cssVarPrefix === cssVarPrefix) {\n      shouldGenerateStyleSheet = false;\n    }\n    const element = /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [/*#__PURE__*/_jsx(ThemeProvider, {\n        themeId: scopedTheme ? themeId : undefined,\n        theme: resolveTheme ? resolveTheme(theme) : theme,\n        children: children\n      }), shouldGenerateStyleSheet && /*#__PURE__*/_jsx(GlobalStyles, {\n        styles: theme.generateStyleSheets?.() || []\n      })]\n    });\n    if (nested) {\n      return element;\n    }\n    return /*#__PURE__*/_jsx(ColorSchemeContext.Provider, {\n      value: contextValue,\n      children: element\n    });\n  }\n  process.env.NODE_ENV !== \"production\" ? CssVarsProvider.propTypes = {\n    /**\n     * The component tree.\n     */\n    children: PropTypes.node,\n    /**\n     * The node used to attach the color-scheme attribute\n     */\n    colorSchemeNode: PropTypes.any,\n    /**\n     * localStorage key used to store `colorScheme`\n     */\n    colorSchemeStorageKey: PropTypes.string,\n    /**\n     * If `true`, the provider creates its own context and generate stylesheet as if it is a root `CssVarsProvider`.\n     */\n    disableNestedContext: PropTypes.bool,\n    /**\n     * If `true`, the style sheet won't be generated.\n     *\n     * This is useful for controlling nested CssVarsProvider behavior.\n     */\n    disableStyleSheetGeneration: PropTypes.bool,\n    /**\n     * Disable CSS transitions when switching between modes or color schemes.\n     */\n    disableTransitionOnChange: PropTypes.bool,\n    /**\n     * The document to attach the attribute to.\n     */\n    documentNode: PropTypes.any,\n    /**\n     * The key in the local storage used to store current color scheme.\n     */\n    modeStorageKey: PropTypes.string,\n    /**\n     * The window that attaches the 'storage' event listener.\n     * @default window\n     */\n    storageWindow: PropTypes.any,\n    /**\n     * The calculated theme object that will be passed through context.\n     */\n    theme: PropTypes.object\n  } : void 0;\n  const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n  const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n  const getInitColorSchemeScript = params => InitColorSchemeScript({\n    colorSchemeStorageKey: defaultColorSchemeStorageKey,\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    modeStorageKey: defaultModeStorageKey,\n    ...params\n  });\n  return {\n    CssVarsProvider,\n    useColorScheme,\n    getInitColorSchemeScript\n  };\n}","export function isUnitless(value) {\n  return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n  return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n  return parseFloat(length);\n}\n\n// Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n  return (length, toUnit) => {\n    const fromUnit = getUnit(length);\n\n    // Optimize for cases where `from` and `to` units are accidentally the same.\n    if (fromUnit === toUnit) {\n      return length;\n    }\n\n    // Convert input length to pixels.\n    let pxLength = toUnitless(length);\n    if (fromUnit !== 'px') {\n      if (fromUnit === 'em') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      } else if (fromUnit === 'rem') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      }\n    }\n\n    // Convert length in pixels to the output unit\n    let outputLength = pxLength;\n    if (toUnit !== 'px') {\n      if (toUnit === 'em') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else if (toUnit === 'rem') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else {\n        return length;\n      }\n    }\n    return parseFloat(outputLength.toFixed(5)) + toUnit;\n  };\n}\nexport function alignProperty({\n  size,\n  grid\n}) {\n  const sizeBelow = size - size % grid;\n  const sizeAbove = sizeBelow + grid;\n  return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n  lineHeight,\n  pixels,\n  htmlFontSize\n}) {\n  return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n *   cssProperty: 'fontSize',\n *   min: 15,\n *   max: 20,\n *   unit: 'px',\n *   breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n *   fontSize: '15px',\n *   '@media (min-width:300px)': {\n *     fontSize: '17.5px',\n *   },\n *   '@media (min-width:600px)': {\n *     fontSize: '20px',\n *   },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints]  - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n  cssProperty,\n  min,\n  max,\n  unit = 'rem',\n  breakpoints = [600, 900, 1200],\n  transform = null\n}) {\n  const output = {\n    [cssProperty]: `${min}${unit}`\n  };\n  const factor = (max - min) / breakpoints[breakpoints.length - 1];\n  breakpoints.forEach(breakpoint => {\n    let value = min + factor * breakpoint;\n    if (transform !== null) {\n      value = transform(value);\n    }\n    output[`@media (min-width:${breakpoint}px)`] = {\n      [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n    };\n  });\n  return output;\n}","import { createBreakpoints, createSpacing } from '@mui/system';\nexport default function adaptV4Theme(inputTheme) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\\n'));\n  }\n  const {\n    defaultProps = {},\n    mixins = {},\n    overrides = {},\n    palette = {},\n    props = {},\n    styleOverrides = {},\n    ...other\n  } = inputTheme;\n  const theme = {\n    ...other,\n    components: {}\n  };\n\n  // default props\n  Object.keys(defaultProps).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.defaultProps = defaultProps[component];\n    theme.components[component] = componentValue;\n  });\n  Object.keys(props).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.defaultProps = props[component];\n    theme.components[component] = componentValue;\n  });\n\n  // CSS overrides\n  Object.keys(styleOverrides).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.styleOverrides = styleOverrides[component];\n    theme.components[component] = componentValue;\n  });\n  Object.keys(overrides).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.styleOverrides = overrides[component];\n    theme.components[component] = componentValue;\n  });\n\n  // theme.spacing\n  theme.spacing = createSpacing(inputTheme.spacing);\n\n  // theme.mixins.gutters\n  const breakpoints = createBreakpoints(inputTheme.breakpoints || {});\n  const spacing = theme.spacing;\n  theme.mixins = {\n    gutters: (styles = {}) => {\n      return {\n        paddingLeft: spacing(2),\n        paddingRight: spacing(2),\n        ...styles,\n        [breakpoints.up('sm')]: {\n          paddingLeft: spacing(3),\n          paddingRight: spacing(3),\n          ...styles[breakpoints.up('sm')]\n        }\n      };\n    },\n    ...mixins\n  };\n  const {\n    type: typeInput,\n    mode: modeInput,\n    ...paletteRest\n  } = palette;\n  const finalMode = modeInput || typeInput || 'light';\n  theme.palette = {\n    // theme.palette.text.hint\n    text: {\n      hint: finalMode === 'dark' ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.38)'\n    },\n    mode: finalMode,\n    type: finalMode,\n    ...paletteRest\n  };\n  return theme;\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createTheme from \"./createTheme.js\";\nexport default function createMuiStrictModeTheme(options, ...args) {\n  return createTheme(deepmerge({\n    unstable_strictMode: true\n  }, options), ...args);\n}","let warnedOnce = false;\n\n// To remove in v6\nexport default function createStyles(styles) {\n  if (!warnedOnce) {\n    console.warn(['MUI: createStyles from @mui/material/styles is deprecated.', 'Please use @mui/styles/createStyles'].join('\\n'));\n    warnedOnce = true;\n  }\n  return styles;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport { isUnitless, convertLength, responsiveProperty, alignProperty, fontGrid } from \"./cssUtils.js\";\nexport default function responsiveFontSizes(themeInput, options = {}) {\n  const {\n    breakpoints = ['sm', 'md', 'lg'],\n    disableAlign = false,\n    factor = 2,\n    variants = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline']\n  } = options;\n  const theme = {\n    ...themeInput\n  };\n  theme.typography = {\n    ...theme.typography\n  };\n  const typography = theme.typography;\n\n  // Convert between CSS lengths e.g. em->px or px->rem\n  // Set the baseFontSize for your project. Defaults to 16px (also the browser default).\n  const convert = convertLength(typography.htmlFontSize);\n  const breakpointValues = breakpoints.map(x => theme.breakpoints.values[x]);\n  variants.forEach(variant => {\n    const style = typography[variant];\n    if (!style) {\n      return;\n    }\n    const remFontSize = parseFloat(convert(style.fontSize, 'rem'));\n    if (remFontSize <= 1) {\n      return;\n    }\n    const maxFontSize = remFontSize;\n    const minFontSize = 1 + (maxFontSize - 1) / factor;\n    let {\n      lineHeight\n    } = style;\n    if (!isUnitless(lineHeight) && !disableAlign) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported non-unitless line height with grid alignment.\nUse unitless line heights instead.` : _formatMuiErrorMessage(6));\n    }\n    if (!isUnitless(lineHeight)) {\n      // make it unitless\n      lineHeight = parseFloat(convert(lineHeight, 'rem')) / parseFloat(remFontSize);\n    }\n    let transform = null;\n    if (!disableAlign) {\n      transform = value => alignProperty({\n        size: value,\n        grid: fontGrid({\n          pixels: 4,\n          lineHeight,\n          htmlFontSize: typography.htmlFontSize\n        })\n      });\n    }\n    typography[variant] = {\n      ...style,\n      ...responsiveProperty({\n        cssProperty: 'fontSize',\n        min: minFontSize,\n        max: maxFontSize,\n        unit: 'rem',\n        breakpoints: breakpointValues,\n        transform\n      })\n    };\n  });\n  return theme;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { StyleSheet } from '@emotion/sheet';\n\n// We might be able to remove this when this issue is fixed:\n// https://github.com/emotion-js/emotion/issues/2790\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst createEmotionCache = options => {\n  const cache = createCache(options);\n\n  /**\n   * This is for client-side apps only.\n   * A custom sheet is required to make the GlobalStyles API work with `prepend: true`.\n   * This is because the [sheet](https://github.com/emotion-js/emotion/blob/main/packages/react/src/global.js#L94-L99) does not consume the options.\n   */\n  class MyStyleSheet extends StyleSheet {\n    constructor(args) {\n      super(args);\n      this.prepend = cache.sheet.prepend;\n    }\n  }\n\n  // Do the same as https://github.com/emotion-js/emotion/blob/main/packages/cache/src/index.js#L238-L245\n  cache.sheet = new MyStyleSheet({\n    key: cache.key,\n    nonce: cache.sheet.nonce,\n    container: cache.sheet.container,\n    speedy: cache.sheet.isSpeedy,\n    prepend: cache.sheet.prepend,\n    insertionPoint: cache.sheet.insertionPoint\n  });\n  return cache;\n};\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nlet cache;\nif (typeof document === 'object') {\n  cache = createEmotionCache({\n    key: 'css',\n    prepend: true\n  });\n}\nexport default function StyledEngineProvider(props) {\n  const {\n    injectFirst,\n    children\n  } = props;\n  return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n    value: cache,\n    children: children\n  }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * By default, the styles are injected last in the <head> element of the page.\n   * As a result, they gain more specificity than any other style sheet.\n   * If you want to override MUI's styles, set this prop.\n   */\n  injectFirst: PropTypes.bool\n} : void 0;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nexport default function makeStyles() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: makeStyles is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : _formatMuiErrorMessage(14));\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nexport default function withStyles() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: withStyles is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : _formatMuiErrorMessage(15));\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nexport default function withTheme() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: withTheme is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : _formatMuiErrorMessage(16));\n}","import extendTheme from \"./createThemeWithVars.js\";\nlet warnedOnce = false;\nexport default function deprecatedExtendTheme(...args) {\n  if (!warnedOnce) {\n    console.warn(['MUI: The `experimental_extendTheme` has been stabilized.', '', \"You should use `import { extendTheme } from '@mui/material/styles'`\"].join('\\n'));\n    warnedOnce = true;\n  }\n  return extendTheme(...args);\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nexport { default as THEME_ID } from \"./identifier.js\";\nexport { default as adaptV4Theme } from \"./adaptV4Theme.js\";\nexport { hexToRgb, rgbToHex, hslToRgb, decomposeColor, recomposeColor, getContrastRatio, getLuminance, emphasize, alpha, darken, lighten, css, keyframes } from '@mui/system';\nexport { unstable_createBreakpoints } from '@mui/system/createBreakpoints';\n// TODO: Remove this function in v6.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function experimental_sx() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`experimental_sx\\` has been moved to \\`theme.unstable_sx\\`.For more details, see https://github.com/mui/material-ui/pull/35150.` : _formatMuiErrorMessage(19));\n}\nexport { default as createTheme, createMuiTheme } from \"./createTheme.js\";\nexport { default as unstable_createMuiStrictModeTheme } from \"./createMuiStrictModeTheme.js\";\nexport { default as createStyles } from \"./createStyles.js\";\nexport { getUnit as unstable_getUnit, toUnitless as unstable_toUnitless } from \"./cssUtils.js\";\nexport { default as responsiveFontSizes } from \"./responsiveFontSizes.js\";\nexport { default as createTransitions, duration, easing } from \"./createTransitions.js\";\nexport { default as createColorScheme } from \"./createColorScheme.js\";\nexport { default as useTheme } from \"./useTheme.js\";\nexport { default as useThemeProps } from \"./useThemeProps.js\";\nexport { default as styled } from \"./styled.js\";\nexport { default as experimentalStyled } from \"./styled.js\";\nexport { default as ThemeProvider } from \"./ThemeProvider.js\";\nexport { StyledEngineProvider } from '@mui/system';\n// The legacy utilities from @mui/styles\n// These are just empty functions that throws when invoked\nexport { default as makeStyles } from \"./makeStyles.js\";\nexport { default as withStyles } from \"./withStyles.js\";\nexport { default as withTheme } from \"./withTheme.js\";\nexport * from \"./ThemeProviderWithVars.js\";\nexport { default as extendTheme } from \"./createThemeWithVars.js\";\nexport { default as experimental_extendTheme } from \"./experimental_extendTheme.js\"; // TODO: Remove in v7\nexport { default as getOverlayAlpha } from \"./getOverlayAlpha.js\";\nexport { default as shouldSkipGeneratingVar } from \"./shouldSkipGeneratingVar.js\";\n\n// Private methods for creating parts of the theme\nexport { default as private_createTypography } from \"./createTypography.js\";\nexport { default as private_createMixins } from \"./createMixins.js\";\nexport { default as private_excludeVariablesFromRoot } from \"./excludeVariablesFromRoot.js\";","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useTheme() {\n  const theme = useThemeSystem(defaultTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme[THEME_ID] || theme;\n}","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useThemeProps({\n  props,\n  name\n}) {\n  return systemUseThemeProps({\n    props,\n    name,\n    defaultTheme,\n    themeId: THEME_ID\n  });\n}","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n  const {\n    timeout,\n    easing,\n    style = {}\n  } = props;\n  return {\n    duration: style.transitionDuration ?? (typeof timeout === 'number' ? timeout : timeout[options.mode] || 0),\n    easing: style.transitionTimingFunction ?? (typeof easing === 'object' ? easing[options.mode] : easing),\n    delay: style.transitionDelay\n  };\n}","'use client';\n\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\nfunction stripDiacritics(string) {\n  return string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\nexport function createFilterOptions(config = {}) {\n  const {\n    ignoreAccents = true,\n    ignoreCase = true,\n    limit,\n    matchFrom = 'any',\n    stringify,\n    trim = false\n  } = config;\n  return (options, {\n    inputValue,\n    getOptionLabel\n  }) => {\n    let input = trim ? inputValue.trim() : inputValue;\n    if (ignoreCase) {\n      input = input.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n    }\n    const filteredOptions = !input ? options : options.filter(option => {\n      let candidate = (stringify || getOptionLabel)(option);\n      if (ignoreCase) {\n        candidate = candidate.toLowerCase();\n      }\n      if (ignoreAccents) {\n        candidate = stripDiacritics(candidate);\n      }\n      return matchFrom === 'start' ? candidate.startsWith(input) : candidate.includes(input);\n    });\n    return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n  };\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => listboxRef.current !== null && listboxRef.current.parentElement?.contains(document.activeElement);\nconst MULTIPLE_DEFAULT_VALUE = [];\nfunction useAutocomplete(props) {\n  const {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_classNamePrefix = 'Mui',\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    componentName = 'useAutocomplete',\n    defaultValue = props.multiple ? MULTIPLE_DEFAULT_VALUE : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled: disabledProp,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    filterOptions = defaultFilterOptions,\n    filterSelectedOptions = false,\n    freeSolo = false,\n    getOptionDisabled,\n    getOptionKey,\n    getOptionLabel: getOptionLabelProp = option => option.label ?? option,\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    isOptionEqualToValue = (option, value) => option === value,\n    multiple = false,\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open: openProp,\n    openOnFocus = false,\n    options,\n    readOnly = false,\n    selectOnFocus = !props.freeSolo,\n    value: valueProp\n  } = props;\n  const id = useId(idProp);\n  let getOptionLabel = getOptionLabelProp;\n  getOptionLabel = option => {\n    const optionLabel = getOptionLabelProp(option);\n    if (typeof optionLabel !== 'string') {\n      if (process.env.NODE_ENV !== 'production') {\n        const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n        console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n      }\n      return String(optionLabel);\n    }\n    return optionLabel;\n  };\n  const ignoreFocus = React.useRef(false);\n  const firstFocus = React.useRef(true);\n  const inputRef = React.useRef(null);\n  const listboxRef = React.useRef(null);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [focusedTag, setFocusedTag] = React.useState(-1);\n  const defaultHighlighted = autoHighlight ? 0 : -1;\n  const highlightedIndexRef = React.useRef(defaultHighlighted);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: componentName\n  });\n  const [inputValue, setInputValueState] = useControlled({\n    controlled: inputValueProp,\n    default: '',\n    name: componentName,\n    state: 'inputValue'\n  });\n  const [focused, setFocused] = React.useState(false);\n  const resetInputValue = React.useCallback((event, newValue, reason) => {\n    // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n    // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n    const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n    if (!isOptionSelected && !clearOnBlur) {\n      return;\n    }\n    let newInputValue;\n    if (multiple) {\n      newInputValue = '';\n    } else if (newValue == null) {\n      newInputValue = '';\n    } else {\n      const optionLabel = getOptionLabel(newValue);\n      newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n    }\n    if (inputValue === newInputValue) {\n      return;\n    }\n    setInputValueState(newInputValue);\n    if (onInputChange) {\n      onInputChange(event, newInputValue, reason);\n    }\n  }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n  const [open, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: componentName,\n    state: 'open'\n  });\n  const [inputPristine, setInputPristine] = React.useState(true);\n  const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n  const popupOpen = open && !readOnly;\n  const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n    if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n      return false;\n    }\n    return true;\n  }),\n  // we use the empty string to manipulate `filterOptions` to not filter any options\n  // i.e. the filter predicate always returns true\n  {\n    inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n    getOptionLabel\n  }) : [];\n  const previousProps = usePreviousProps({\n    filteredOptions,\n    value,\n    inputValue\n  });\n  React.useEffect(() => {\n    const valueChange = value !== previousProps.value;\n    if (focused && !valueChange) {\n      return;\n    }\n\n    // Only reset the input's value when freeSolo if the component's value changes.\n    if (freeSolo && !valueChange) {\n      return;\n    }\n    resetInputValue(null, value, 'reset');\n  }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n  const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n  const focusTag = useEventCallback(tagToFocus => {\n    if (tagToFocus === -1) {\n      inputRef.current.focus();\n    } else {\n      anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n    }\n  });\n\n  // Ensure the focusedTag is never inconsistent\n  React.useEffect(() => {\n    if (multiple && focusedTag > value.length - 1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n  }, [value, multiple, focusedTag, focusTag]);\n  function validOptionIndex(index, direction) {\n    if (!listboxRef.current || index < 0 || index >= filteredOptions.length) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n      if (option && option.hasAttribute('tabindex') && !nextFocusDisabled) {\n        // The next option is available\n        return nextFocus;\n      }\n\n      // The next option is disabled, move to the next element.\n      // with looped index\n      if (direction === 'next') {\n        nextFocus = (nextFocus + 1) % filteredOptions.length;\n      } else {\n        nextFocus = (nextFocus - 1 + filteredOptions.length) % filteredOptions.length;\n      }\n\n      // We end up with initial index, that means we don't have available options.\n      // All of them are disabled\n      if (nextFocus === index) {\n        return -1;\n      }\n    }\n  }\n  const setHighlightedIndex = useEventCallback(({\n    event,\n    index,\n    reason = 'auto'\n  }) => {\n    highlightedIndexRef.current = index;\n\n    // does the index exist?\n    if (index === -1) {\n      inputRef.current.removeAttribute('aria-activedescendant');\n    } else {\n      inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n    }\n    if (onHighlightChange) {\n      onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n    const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n    if (prev) {\n      prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n      prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n    }\n    let listboxNode = listboxRef.current;\n    if (listboxRef.current.getAttribute('role') !== 'listbox') {\n      listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n    }\n\n    // \"No results\"\n    if (!listboxNode) {\n      return;\n    }\n    if (index === -1) {\n      listboxNode.scrollTop = 0;\n      return;\n    }\n    const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n    if (!option) {\n      return;\n    }\n    option.classList.add(`${unstable_classNamePrefix}-focused`);\n    if (reason === 'keyboard') {\n      option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n    }\n\n    // Scroll active descendant into view.\n    // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n    // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n    // Consider this API instead once it has a better browser support:\n    // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n    if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n      const element = option;\n      const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n      const elementBottom = element.offsetTop + element.offsetHeight;\n      if (elementBottom > scrollBottom) {\n        listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n      } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n        listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n      }\n    }\n  });\n  const changeHighlightedIndex = useEventCallback(({\n    event,\n    diff,\n    direction = 'next',\n    reason = 'auto'\n  }) => {\n    if (!popupOpen) {\n      return;\n    }\n    const getNextIndex = () => {\n      const maxIndex = filteredOptions.length - 1;\n      if (diff === 'reset') {\n        return defaultHighlighted;\n      }\n      if (diff === 'start') {\n        return 0;\n      }\n      if (diff === 'end') {\n        return maxIndex;\n      }\n      const newIndex = highlightedIndexRef.current + diff;\n      if (newIndex < 0) {\n        if (newIndex === -1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n          return 0;\n        }\n        return maxIndex;\n      }\n      if (newIndex > maxIndex) {\n        if (newIndex === maxIndex + 1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap || Math.abs(diff) > 1) {\n          return maxIndex;\n        }\n        return 0;\n      }\n      return newIndex;\n    };\n    const nextIndex = validOptionIndex(getNextIndex(), direction);\n    setHighlightedIndex({\n      index: nextIndex,\n      reason,\n      event\n    });\n\n    // Sync the content of the input with the highlighted option.\n    if (autoComplete && diff !== 'reset') {\n      if (nextIndex === -1) {\n        inputRef.current.value = inputValue;\n      } else {\n        const option = getOptionLabel(filteredOptions[nextIndex]);\n        inputRef.current.value = option;\n\n        // The portion of the selected suggestion that has not been typed by the user,\n        // a completion string, appears inline after the input cursor in the textbox.\n        const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n        if (index === 0 && inputValue.length > 0) {\n          inputRef.current.setSelectionRange(inputValue.length, option.length);\n        }\n      }\n    }\n  });\n  const getPreviousHighlightedOptionIndex = () => {\n    const isSameValue = (value1, value2) => {\n      const label1 = value1 ? getOptionLabel(value1) : '';\n      const label2 = value2 ? getOptionLabel(value2) : '';\n      return label1 === label2;\n    };\n    if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n      const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n      if (previousHighlightedOption) {\n        return filteredOptions.findIndex(option => {\n          return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n        });\n      }\n    }\n    return -1;\n  };\n  const syncHighlightedIndex = React.useCallback(() => {\n    if (!popupOpen) {\n      return;\n    }\n\n    // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n    // If it exists and the value and the inputValue haven't changed, just update its index, otherwise continue execution\n    const previousHighlightedOptionIndex = getPreviousHighlightedOptionIndex();\n    if (previousHighlightedOptionIndex !== -1) {\n      highlightedIndexRef.current = previousHighlightedOptionIndex;\n      return;\n    }\n    const valueItem = multiple ? value[0] : value;\n\n    // The popup is empty, reset\n    if (filteredOptions.length === 0 || valueItem == null) {\n      changeHighlightedIndex({\n        diff: 'reset'\n      });\n      return;\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n\n    // Synchronize the value with the highlighted index\n    if (valueItem != null) {\n      const currentOption = filteredOptions[highlightedIndexRef.current];\n\n      // Keep the current highlighted index if possible\n      if (multiple && currentOption && value.findIndex(val => isOptionEqualToValue(currentOption, val)) !== -1) {\n        return;\n      }\n      const itemIndex = filteredOptions.findIndex(optionItem => isOptionEqualToValue(optionItem, valueItem));\n      if (itemIndex === -1) {\n        changeHighlightedIndex({\n          diff: 'reset'\n        });\n      } else {\n        setHighlightedIndex({\n          index: itemIndex\n        });\n      }\n      return;\n    }\n\n    // Prevent the highlighted index to leak outside the boundaries.\n    if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n      setHighlightedIndex({\n        index: filteredOptions.length - 1\n      });\n      return;\n    }\n\n    // Restore the focus to the previous index.\n    setHighlightedIndex({\n      index: highlightedIndexRef.current\n    });\n    // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n  // Only sync the highlighted index when the option switch between empty and not\n  filteredOptions.length,\n  // Don't sync the highlighted index with the value when multiple\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n  const handleListboxRef = useEventCallback(node => {\n    setRef(listboxRef, node);\n    if (!node) {\n      return;\n    }\n    syncHighlightedIndex();\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n        if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n          console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n        } else {\n          console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n        }\n      }\n    }, [componentName]);\n  }\n  React.useEffect(() => {\n    syncHighlightedIndex();\n  }, [syncHighlightedIndex]);\n  const handleOpen = event => {\n    if (open) {\n      return;\n    }\n    setOpenState(true);\n    setInputPristine(true);\n    if (onOpen) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (event, reason) => {\n    if (!open) {\n      return;\n    }\n    setOpenState(false);\n    if (onClose) {\n      onClose(event, reason);\n    }\n  };\n  const handleValue = (event, newValue, reason, details) => {\n    if (multiple) {\n      if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n        return;\n      }\n    } else if (value === newValue) {\n      return;\n    }\n    if (onChange) {\n      onChange(event, newValue, reason, details);\n    }\n    setValueState(newValue);\n  };\n  const isTouch = React.useRef(false);\n  const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n    let reason = reasonProp;\n    let newValue = option;\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      if (process.env.NODE_ENV !== 'production') {\n        const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n        if (matches.length > 1) {\n          console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n        }\n      }\n      const itemIndex = newValue.findIndex(valueItem => isOptionEqualToValue(option, valueItem));\n      if (itemIndex === -1) {\n        newValue.push(option);\n      } else if (origin !== 'freeSolo') {\n        newValue.splice(itemIndex, 1);\n        reason = 'removeOption';\n      }\n    }\n    resetInputValue(event, newValue, reason);\n    handleValue(event, newValue, reason, {\n      option\n    });\n    if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n      handleClose(event, reason);\n    }\n    if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n      inputRef.current.blur();\n    }\n  };\n  function validTagIndex(index, direction) {\n    if (index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const handleFocusTag = (event, direction) => {\n    if (!multiple) {\n      return;\n    }\n    if (inputValue === '') {\n      handleClose(event, 'toggleInput');\n    }\n    let nextTag = focusedTag;\n    if (focusedTag === -1) {\n      if (inputValue === '' && direction === 'previous') {\n        nextTag = value.length - 1;\n      }\n    } else {\n      nextTag += direction === 'next' ? 1 : -1;\n      if (nextTag < 0) {\n        nextTag = 0;\n      }\n      if (nextTag === value.length) {\n        nextTag = -1;\n      }\n    }\n    nextTag = validTagIndex(nextTag, direction);\n    setFocusedTag(nextTag);\n    focusTag(nextTag);\n  };\n  const handleClear = event => {\n    ignoreFocus.current = true;\n    setInputValueState('');\n    if (onInputChange) {\n      onInputChange(event, '', 'clear');\n    }\n    handleValue(event, multiple ? [] : null, 'clear');\n  };\n  const handleKeyDown = other => event => {\n    if (other.onKeyDown) {\n      other.onKeyDown(event);\n    }\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (focusedTag !== -1 && !['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n\n    // Wait until IME is settled.\n    if (event.which !== 229) {\n      switch (event.key) {\n        case 'Home':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'start',\n              direction: 'next',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'End':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'end',\n              direction: 'previous',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'PageUp':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -pageSize,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'PageDown':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: pageSize,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowDown':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: 1,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowUp':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -1,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowLeft':\n          handleFocusTag(event, 'previous');\n          break;\n        case 'ArrowRight':\n          handleFocusTag(event, 'next');\n          break;\n        case 'Enter':\n          if (highlightedIndexRef.current !== -1 && popupOpen) {\n            const option = filteredOptions[highlightedIndexRef.current];\n            const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n            // Avoid early form validation, let the end-users continue filling the form.\n            event.preventDefault();\n            if (disabled) {\n              return;\n            }\n            selectNewValue(event, option, 'selectOption');\n\n            // Move the selection to the end.\n            if (autoComplete) {\n              inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n            }\n          } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n            if (multiple) {\n              // Allow people to add new values before they submit the form.\n              event.preventDefault();\n            }\n            selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n          }\n          break;\n        case 'Escape':\n          if (popupOpen) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClose(event, 'escape');\n          } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClear(event);\n          }\n          break;\n        case 'Backspace':\n          // Remove the value on the left of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n            const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        case 'Delete':\n          // Remove the value on the right of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n            const index = focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        default:\n      }\n    }\n  };\n  const handleFocus = event => {\n    setFocused(true);\n    if (openOnFocus && !ignoreFocus.current) {\n      handleOpen(event);\n    }\n  };\n  const handleBlur = event => {\n    // Ignore the event when using the scrollbar with IE11\n    if (unstable_isActiveElementInListbox(listboxRef)) {\n      inputRef.current.focus();\n      return;\n    }\n    setFocused(false);\n    firstFocus.current = true;\n    ignoreFocus.current = false;\n    if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n      selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n    } else if (autoSelect && freeSolo && inputValue !== '') {\n      selectNewValue(event, inputValue, 'blur', 'freeSolo');\n    } else if (clearOnBlur) {\n      resetInputValue(event, value, 'blur');\n    }\n    handleClose(event, 'blur');\n  };\n  const handleInputChange = event => {\n    const newValue = event.target.value;\n    if (inputValue !== newValue) {\n      setInputValueState(newValue);\n      setInputPristine(false);\n      if (onInputChange) {\n        onInputChange(event, newValue, 'input');\n      }\n    }\n    if (newValue === '') {\n      if (!disableClearable && !multiple) {\n        handleValue(event, null, 'clear');\n      }\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleOptionMouseMove = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    if (highlightedIndexRef.current !== index) {\n      setHighlightedIndex({\n        event,\n        index,\n        reason: 'mouse'\n      });\n    }\n  };\n  const handleOptionTouchStart = event => {\n    setHighlightedIndex({\n      event,\n      index: Number(event.currentTarget.getAttribute('data-option-index')),\n      reason: 'touch'\n    });\n    isTouch.current = true;\n  };\n  const handleOptionClick = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    selectNewValue(event, filteredOptions[index], 'selectOption');\n    isTouch.current = false;\n  };\n  const handleTagDelete = index => event => {\n    const newValue = value.slice();\n    newValue.splice(index, 1);\n    handleValue(event, newValue, 'removeOption', {\n      option: value[index]\n    });\n  };\n  const handlePopupIndicator = event => {\n    if (open) {\n      handleClose(event, 'toggleInput');\n    } else {\n      handleOpen(event);\n    }\n  };\n\n  // Prevent input blur when interacting with the combobox\n  const handleMouseDown = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    if (event.target.getAttribute('id') !== id) {\n      event.preventDefault();\n    }\n  };\n\n  // Focus the input when interacting with the combobox\n  const handleClick = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    inputRef.current.focus();\n    if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n      inputRef.current.select();\n    }\n    firstFocus.current = false;\n  };\n  const handleInputMouseDown = event => {\n    if (!disabledProp && (inputValue === '' || !open)) {\n      handlePopupIndicator(event);\n    }\n  };\n  let dirty = freeSolo && inputValue.length > 0;\n  dirty = dirty || (multiple ? value.length > 0 : value !== null);\n  let groupedOptions = filteredOptions;\n  if (groupBy) {\n    // used to keep track of key and indexes in the result array\n    const indexBy = new Map();\n    let warn = false;\n    groupedOptions = filteredOptions.reduce((acc, option, index) => {\n      const group = groupBy(option);\n      if (acc.length > 0 && acc[acc.length - 1].group === group) {\n        acc[acc.length - 1].options.push(option);\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (indexBy.get(group) && !warn) {\n            console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n            warn = true;\n          }\n          indexBy.set(group, true);\n        }\n        acc.push({\n          key: index,\n          index,\n          group,\n          options: [option]\n        });\n      }\n      return acc;\n    }, []);\n  }\n  if (disabledProp && focused) {\n    handleBlur();\n  }\n  return {\n    getRootProps: (other = {}) => ({\n      'aria-owns': listboxAvailable ? `${id}-listbox` : null,\n      ...other,\n      onKeyDown: handleKeyDown(other),\n      onMouseDown: handleMouseDown,\n      onClick: handleClick\n    }),\n    getInputLabelProps: () => ({\n      id: `${id}-label`,\n      htmlFor: id\n    }),\n    getInputProps: () => ({\n      id,\n      value: inputValue,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      onChange: handleInputChange,\n      onMouseDown: handleInputMouseDown,\n      // if open then this is handled imperatively so don't let react override\n      // only have an opinion about this when closed\n      'aria-activedescendant': popupOpen ? '' : null,\n      'aria-autocomplete': autoComplete ? 'both' : 'list',\n      'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n      'aria-expanded': listboxAvailable,\n      // Disable browser's suggestion that might overlap with the popup.\n      // Handle autocomplete but not autofill.\n      autoComplete: 'off',\n      ref: inputRef,\n      autoCapitalize: 'none',\n      spellCheck: 'false',\n      role: 'combobox',\n      disabled: disabledProp\n    }),\n    getClearProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handleClear\n    }),\n    getPopupIndicatorProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handlePopupIndicator\n    }),\n    getTagProps: ({\n      index\n    }) => ({\n      key: index,\n      'data-tag-index': index,\n      tabIndex: -1,\n      ...(!readOnly && {\n        onDelete: handleTagDelete(index)\n      })\n    }),\n    getListboxProps: () => ({\n      role: 'listbox',\n      id: `${id}-listbox`,\n      'aria-labelledby': `${id}-label`,\n      ref: handleListboxRef,\n      onMouseDown: event => {\n        // Prevent blur\n        event.preventDefault();\n      }\n    }),\n    getOptionProps: ({\n      index,\n      option\n    }) => {\n      const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n      const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n      return {\n        key: getOptionKey?.(option) ?? getOptionLabel(option),\n        tabIndex: -1,\n        role: 'option',\n        id: `${id}-option-${index}`,\n        onMouseMove: handleOptionMouseMove,\n        onClick: handleOptionClick,\n        onTouchStart: handleOptionTouchStart,\n        'data-option-index': index,\n        'aria-disabled': disabled,\n        'aria-selected': selected\n      };\n    },\n    id,\n    inputValue,\n    value,\n    dirty,\n    expanded: popupOpen && anchorEl,\n    popupOpen,\n    focused: focused || focusedTag !== -1,\n    anchorEl,\n    setAnchorEl,\n    focusedTag,\n    groupedOptions\n  };\n}\nexport default useAutocomplete;","import createChainedFunction from '@mui/utils/createChainedFunction';\nexport default createChainedFunction;","'use client';\n\nimport * as React from 'react';\nimport SvgIcon from \"../SvgIcon/index.js\";\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n  function Component(props, ref) {\n    return /*#__PURE__*/_jsx(SvgIcon, {\n      \"data-testid\": `${displayName}Icon`,\n      ref: ref,\n      ...props,\n      children: path\n    });\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // Need to set `displayName` on the inner component for React.memo.\n    // React prior to 16.14 ignores `displayName` on the wrapper.\n    Component.displayName = `${displayName}Icon`;\n  }\n  Component.muiName = SvgIcon.muiName;\n  return /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(Component));\n}","import debounce from '@mui/utils/debounce';\nexport default debounce;","import deprecatedPropType from '@mui/utils/deprecatedPropType';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n  return (props, propName, componentName, location, propFullName) => {\n    const componentNameSafe = componentName || '<<anonymous>>';\n    const propFullNameSafe = propFullName || propName;\n    if (typeof props[propName] !== 'undefined') {\n      return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n    }\n    return null;\n  };\n}","import requirePropFactory from '@mui/utils/requirePropFactory';\nexport default requirePropFactory;","export default function requirePropFactory(componentNameInError, Component) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n\n  // eslint-disable-next-line react/forbid-foreign-prop-types\n  const prevPropTypes = Component ? {\n    ...Component.propTypes\n  } : null;\n  const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n    const propFullNameSafe = propFullName || propName;\n    const defaultTypeChecker = prevPropTypes?.[propFullNameSafe];\n    if (defaultTypeChecker) {\n      const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n      if (typeCheckerResult) {\n        return typeCheckerResult;\n      }\n    }\n    if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n      return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n    }\n    return null;\n  };\n  return requireProp;\n}","import setRef from '@mui/utils/setRef';\nexport default setRef;","import unsupportedProp from '@mui/utils/unsupportedProp';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n  const propFullNameSafe = propFullName || propName;\n  if (typeof props[propName] !== 'undefined') {\n    return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n  }\n  return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/utils';\nexport { default as capitalize } from \"./capitalize.js\";\nexport { default as createChainedFunction } from \"./createChainedFunction.js\";\nexport { default as createSvgIcon } from \"./createSvgIcon.js\";\nexport { default as debounce } from \"./debounce.js\";\nexport { default as deprecatedPropType } from \"./deprecatedPropType.js\";\nexport { default as isMuiElement } from \"./isMuiElement.js\";\nexport { default as unstable_memoTheme } from \"./memoTheme.js\";\nexport { default as ownerDocument } from \"./ownerDocument.js\";\nexport { default as ownerWindow } from \"./ownerWindow.js\";\nexport { default as requirePropFactory } from \"./requirePropFactory.js\";\nexport { default as setRef } from \"./setRef.js\";\nexport { default as unstable_useEnhancedEffect } from \"./useEnhancedEffect.js\";\nexport { default as unstable_useId } from \"./useId.js\";\nexport { default as unsupportedProp } from \"./unsupportedProp.js\";\nexport { default as useControlled } from \"./useControlled.js\";\nexport { default as useEventCallback } from \"./useEventCallback.js\";\nexport { default as useForkRef } from \"./useForkRef.js\";\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n  configure: generator => {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n    }\n    ClassNameGenerator.configure(generator);\n  }\n};","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;","import isMuiElement from '@mui/utils/isMuiElement';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n  return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(\n  // For server components `muiName` is avaialble in element.type._payload.value.muiName\n  // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n  // eslint-disable-next-line no-underscore-dangle\n  element.type.muiName ?? element.type?._payload?.value?.muiName) !== -1;\n}","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport mergeSlotProps from '@mui/utils/mergeSlotProps';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n  const {\n    className,\n    elementType: initialElementType,\n    ownerState,\n    externalForwardedProps,\n    getSlotOwnerState,\n    internalForwardedProps,\n    ...useSlotPropsParams\n  } = parameters;\n  const {\n    component: rootComponent,\n    slots = {\n      [name]: undefined\n    },\n    slotProps = {\n      [name]: undefined\n    },\n    ...other\n  } = externalForwardedProps;\n  const elementType = slots[name] || initialElementType;\n\n  // `slotProps[name]` can be a callback that receives the component's ownerState.\n  // `resolvedComponentsProps` is always a plain object.\n  const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n  const {\n    props: {\n      component: slotComponent,\n      ...mergedProps\n    },\n    internalRef\n  } = mergeSlotProps({\n    className,\n    ...useSlotPropsParams,\n    externalForwardedProps: name === 'root' ? other : undefined,\n    externalSlotProps: resolvedComponentsProps\n  });\n  const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.ref);\n  const slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps) : {};\n  const finalOwnerState = {\n    ...ownerState,\n    ...slotOwnerState\n  };\n  const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n  const props = appendOwnerState(elementType, {\n    ...(name === 'root' && !rootComponent && !slots[name] && internalForwardedProps),\n    ...(name !== 'root' && !slots[name] && internalForwardedProps),\n    ...mergedProps,\n    ...(LeafComponent && {\n      as: LeafComponent\n    }),\n    ref\n  }, finalOwnerState);\n  Object.keys(slotOwnerState).forEach(propName => {\n    delete props[propName];\n  });\n  return [elementType, props];\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n  styles,\n  themeId,\n  defaultTheme = {}\n}) {\n  const upperTheme = useTheme(defaultTheme);\n  const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n  return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  defaultTheme: PropTypes.object,\n  /**\n   * @ignore\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n  /**\n   * @ignore\n   */\n  themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from \"../styles/defaultTheme.js\";\nimport THEME_ID from \"../styles/identifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n  return /*#__PURE__*/_jsx(SystemGlobalStyles, {\n    ...props,\n    defaultTheme: defaultTheme,\n    themeId: THEME_ID\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The styles you want to apply globally.\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","import * as React from 'react';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport useTheme from \"../styles/useTheme.js\";\nimport GlobalStyles from \"../GlobalStyles/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport { css, keyframes } from '@mui/system';\nexport { default as styled } from \"../styles/styled.js\";\nexport function globalCss(styles) {\n  return function GlobalStylesWrapper(props) {\n    return (\n      /*#__PURE__*/\n      // Pigment CSS `globalCss` support callback with theme inside an object but `GlobalStyles` support theme as a callback value.\n      _jsx(GlobalStyles, {\n        styles: typeof styles === 'function' ? theme => styles({\n          theme,\n          ...props\n        }) : styles\n      })\n    );\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_createExtendSxProp() {\n  return extendSxProp;\n}\nexport { useTheme };","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from \"./ThemeContext.js\";\nexport default function useTheme() {\n  const theme = React.useContext(ThemeContext);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO: uncomment once we enable eslint-plugin-react-compiler eslint-disable-next-line react-compiler/react-compiler\n    // eslint-disable-next-line react-hooks/rules-of-hooks -- It's not required to run React.useDebugValue in production\n    React.useDebugValue(theme);\n  }\n  return theme;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n  const {\n    styles,\n    defaultTheme = {}\n  } = props;\n  const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n  return /*#__PURE__*/_jsx(Global, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n  defaultTheme: PropTypes.object,\n  styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider({\n  value,\n  ...props\n}) {\n  return /*#__PURE__*/_jsx(RtlContext.Provider, {\n    value: value ?? true,\n    ...props\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n  children: PropTypes.node,\n  value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n  const value = React.useContext(RtlContext);\n  return value ?? false;\n};\nexport default RtlProvider;","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from \"../useTheme/ThemeContext.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport nested from \"./nested.js\";\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n  if (typeof localTheme === 'function') {\n    const mergedTheme = localTheme(outerTheme);\n    if (process.env.NODE_ENV !== 'production') {\n      if (!mergedTheme) {\n        console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n      }\n    }\n    return mergedTheme;\n  }\n  return {\n    ...outerTheme,\n    ...localTheme\n  };\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  const outerTheme = useTheme();\n  if (process.env.NODE_ENV !== 'production') {\n    if (outerTheme === null && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const theme = React.useMemo(() => {\n    const output = outerTheme === null ? {\n      ...localTheme\n    } : mergeOuterLocalTheme(outerTheme, localTheme);\n    if (output != null) {\n      output[nested] = outerTheme !== null;\n    }\n    return output;\n  }, [localTheme, outerTheme]);\n  return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n    value: theme,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nimport RtlProvider from \"../RtlProvider/index.js\";\nimport DefaultPropsProvider from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n  return React.useMemo(() => {\n    const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n    if (typeof localTheme === 'function') {\n      const mergedTheme = localTheme(resolvedTheme);\n      const result = themeId ? {\n        ...upperTheme,\n        [themeId]: mergedTheme\n      } : mergedTheme;\n      // must return a function for the private theme to NOT merge with the upper theme.\n      // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n      if (isPrivate) {\n        return () => result;\n      }\n      return result;\n    }\n    return themeId ? {\n      ...upperTheme,\n      [themeId]: localTheme\n    } : {\n      ...upperTheme,\n      ...localTheme\n    };\n  }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme,\n    themeId\n  } = props;\n  const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n  const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n  if (process.env.NODE_ENV !== 'production') {\n    if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n  const rtlValue = engineTheme.direction === 'rtl';\n  return /*#__PURE__*/_jsx(MuiThemeProvider, {\n    theme: privateTheme,\n    children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n      value: engineTheme,\n      children: /*#__PURE__*/_jsx(RtlProvider, {\n        value: rtlValue,\n        children: /*#__PURE__*/_jsx(DefaultPropsProvider, {\n          value: engineTheme?.components,\n          children: children\n        })\n      })\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n  /**\n   * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n   */\n  themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nexport default function extendSxProp(props) {\n  const {\n    sx: inSx,\n    ...other\n  } = props;\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!isPlainObject(result)) {\n        return systemProps;\n      }\n      return {\n        ...systemProps,\n        ...result\n      };\n    };\n  } else {\n    finalSx = {\n      ...systemProps,\n      ...inSx\n    };\n  }\n  return {\n    ...otherProps,\n    sx: finalSx\n  };\n}","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport getThemeProps from \"./getThemeProps.js\";\nimport useTheme from \"../useTheme/index.js\";\nexport default function useThemeProps({\n  props,\n  name,\n  defaultTheme,\n  themeId\n}) {\n  let theme = useTheme(defaultTheme);\n  if (themeId) {\n    theme = theme[themeId] || theme;\n  }\n  return getThemeProps({\n    theme,\n    name,\n    props\n  });\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return {\n    ...otherProps,\n    ownerState: {\n      ...otherProps.ownerState,\n      ...ownerState\n    }\n  };\n}\nexport default appendOwnerState;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n  return funcs.reduce((acc, func) => {\n    if (func == null) {\n      return acc;\n    }\n    return function chainedFunction(...args) {\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      // @ts-ignore\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default extractEventHandlers;","import * as React from 'react';\n\n/**\n * Returns the ref of a React node handling differences between React 19 and older versions.\n * It will return null if the node is not a valid React element.\n *\n * @param element React.ReactNode\n * @returns React.Ref<any> | null\n */\nexport default function getReactNodeRef(element) {\n  if (!element || ! /*#__PURE__*/React.isValidElement(element)) {\n    return null;\n  }\n\n  // 'ref' is passed as prop in React 19, whereas 'ref' is directly attached to children in older versions\n  return element.props.propertyIsEnumerable('ref') ? element.props.ref :\n  // @ts-expect-error element.ref is not included in the ReactElement type\n  // We cannot check for it, but isValidElement is true at this point\n  // https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/70189\n  element.ref;\n}","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n  const documentWidth = doc.documentElement.clientWidth;\n  return Math.abs(window.innerWidth - documentWidth);\n}","import * as React from 'react';\n\n/**\n * Gets only the valid children of a component,\n * and ignores any nullish or falsy child.\n *\n * @param children the children\n */\nexport default function getValidReactChildren(children) {\n  return React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child));\n}","/**\n * Returns a boolean indicating if the event's target has :focus-visible\n */\nexport default function isFocusVisible(element) {\n  try {\n    return element.matches(':focus-visible');\n  } catch (error) {\n    // Do not warn on jsdom tests, otherwise all tests that rely on focus have to be skipped\n    // Tests that rely on `:focus-visible` will still have to be skipped in jsdom\n    if (process.env.NODE_ENV !== 'production' && !/jsdom/.test(window.navigator.userAgent)) {\n      console.warn(['MUI: The `:focus-visible` pseudo class is not supported in this browser.', 'Some components rely on this feature to work properly.'].join('\\n'));\n    }\n  }\n  return false;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n    const mergedStyle = {\n      ...additionalProps?.style,\n      ...externalForwardedProps?.style,\n      ...externalSlotProps?.style\n    };\n    const props = {\n      ...additionalProps,\n      ...externalForwardedProps,\n      ...externalSlotProps\n    };\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers({\n    ...externalForwardedProps,\n    ...externalSlotProps\n  });\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n  const mergedStyle = {\n    ...internalSlotProps?.style,\n    ...additionalProps?.style,\n    ...externalForwardedProps?.style,\n    ...externalSlotProps?.style\n  };\n  const props = {\n    ...internalSlotProps,\n    ...additionalProps,\n    ...otherPropsWithoutEventHandlers,\n    ...componentsPropsWithoutEventHandlers\n  };\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}\nexport default mergeSlotProps;","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n  const doc = ownerDocument(node);\n  return doc.defaultView || window;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}\nexport default resolveComponentProps;","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n  controlled,\n  default: defaultProp,\n  name,\n  state = 'value'\n}) {\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = React.useRef(controlled !== undefined);\n  const [valueState, setValue] = React.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = React.useRef(defaultProp);\n    React.useEffect(() => {\n      // Object.is() is not equivalent to the === operator.\n      // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is for more details.\n      if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = React.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n  return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from \"../setRef/index.js\";\nexport default function useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        setRef(ref, instance);\n      });\n    };\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n  ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  // React.useId() is only available from React 17.0.0.\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride ?? reactId;\n  }\n\n  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n  const ref = React.useRef({});\n  React.useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePreviousProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n  const {\n    elementType,\n    externalSlotProps,\n    ownerState,\n    skipResolvingSlotProps = false,\n    ...other\n  } = parameters;\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps({\n    ...other,\n    externalSlotProps: resolvedComponentsProps\n  });\n  const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n  const props = appendOwnerState(elementType, {\n    ...mergedProps,\n    ref\n  }, ownerState);\n  return props;\n}\nexport default useSlotProps;","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(fn, EMPTY);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from \"../useLazyRef/useLazyRef.js\";\nimport useOnMount from \"../useOnMount/useOnMount.js\";\nexport class Timeout {\n  static create() {\n    return new Timeout();\n  }\n  currentId = null;\n\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n  clear = () => {\n    if (this.currentId !== null) {\n      clearTimeout(this.currentId);\n      this.currentId = null;\n    }\n  };\n  disposeEffect = () => {\n    return this.clear;\n  };\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}","const visuallyHidden = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'absolute',\n  whiteSpace: 'nowrap',\n  width: '1px'\n};\nexport default visuallyHidden;","import * as React from 'react';\nexport const GridApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  GridApiContext.displayName = 'GridApiContext';\n}","import * as React from 'react';\nconst GridRootPropsContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  GridRootPropsContext.displayName = 'GridRootPropsContext';\n}\nexport { GridRootPropsContext };","import * as React from 'react';\nimport { GridApiContext } from \"../../components/GridApiContext.js\";\nexport function useGridApiContext() {\n  const apiRef = React.useContext(GridApiContext);\n  if (apiRef === undefined) {\n    throw new Error(['MUI X: Could not find the data grid context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n  }\n  return apiRef;\n}","import * as React from 'react';\n/**\n * Hook that instantiate a [[GridApiRef]].\n */\nexport const useGridApiRef = () => React.useRef({});","import * as React from 'react';\nimport { GridRootPropsContext } from \"../../context/GridRootPropsContext.js\";\nexport const useGridRootProps = () => {\n  const contextValue = React.useContext(GridRootPropsContext);\n  if (!contextValue) {\n    throw new Error('MUI X: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.');\n  }\n  return contextValue;\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    var proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n","/*\n * Author: Michael van der Kamp\n * Date: July/August, 2018\n *\n * This file defines the low level 'CanvasAtom' for use by a CanvasSequence.\n *\n * A CanvasAtom is a unit of execution in a CanvasSequence. It comes in two\n * flavours: one for describing a method call, one for describing a property\n * assignment.\n */\n\n'use strict';\n\n/**\n * The types of CanvasAtoms that are available.\n *\n * @enum {string}\n * @readonly\n * @lends CanvasAtom\n */\nconst TYPES = {\n  /** @const */ METHOD:   'method',\n  /** @const */ PROPERTY: 'property',\n};\n\n/**\n * Internal common constructor definition for Canvas Atoms.\n *\n * @param {string} inst - The canvas context instruction.\n * @param {*[]} args - The arguments to the instruction.\n */\nclass Atom {\n  constructor(inst, args) {\n    /**\n     * The canvas context instruction.\n     *\n     * @private\n     * @type {string}\n     */\n    this.inst = inst;\n\n    /**\n     * The arguments to the instruction.\n     *\n     * @private\n     * @type {*[]}\n     */\n    this.args = args;\n  }\n}\n\n/**\n * A MethodCanvasAtom is used for canvas context methods. The arguments will be\n * treated as an actual array, all of which will be passed to the method when\n * the atom is executed.\n *\n * @extends Atom\n */\nclass MethodCanvasAtom extends Atom {\n  constructor(inst, args) {\n    super(inst, args);\n\n    /**\n     * The type of atom.\n     *\n     * @private\n     * @type {string}\n     */\n    this.type = TYPES.METHOD;\n  }\n\n  /**\n   * Execute the atom on the given context.\n   *\n   * @param {CanvasRenderingContext2D} context\n   */\n  execute(context) {\n    context[this.inst](...this.args);\n  }\n}\n\n/**\n * A PropertyCanvasAtom is used for canvas context properties (a.k.a. fields).\n * Only the first argument will be used, and will be the value assigned to the\n * field.\n *\n * @extends Atom\n */\nclass PropertyCanvasAtom extends Atom {\n  constructor(inst, args) {\n    super(inst, args);\n    this.type = TYPES.PROPERTY;\n  }\n\n  /**\n   * Execute the atom on the given context.\n   *\n   * @param {CanvasRenderingContext2D} context\n   */\n  execute(context) {\n    context[this.inst] = this.args[0];\n  }\n}\n\n/*\n * This object is for demultiplexing types in the CanvasAtom constructor.\n * Defined outside the constructor so it doesn't need to be redefined every\n * time a new atom is constructed. Defined outside the class so that it is not\n * externally exposed.\n */\nconst atomOf = {\n  [TYPES.METHOD]:   MethodCanvasAtom,\n  [TYPES.PROPERTY]: PropertyCanvasAtom,\n};\n\n/**\n * The exposed CanvasAtom class. Results in the instantiation of either a\n * MethodCanvasAtom or a PropertyCanvasAtom, depending on the given type.\n *\n * @param {string} type - Either CanvasAtom.METHOD or CanvasAtom.PROPERTY.\n * @param {string} inst - The canvas context instruction.\n * @param {*[]} args - The arguments to the instruction.\n */\nclass CanvasAtom {\n  constructor(type, inst, args) {\n    return new atomOf[type](inst, args);\n  }\n}\n\n/*\n * Define the types once locally, but make them available externally as\n * immutable properties on the class.\n */\nObject.entries(TYPES).forEach(([p, v]) => {\n  Object.defineProperty(CanvasAtom, p, {\n    value:        v,\n    configurable: false,\n    enumerable:   true,\n    writable:     false,\n  });\n});\n\nmodule.exports = CanvasAtom;\n\n","/*\n * Author: Michael van der Kamp\n * Date: July/August, 2018\n *\n * This file provides the definition of the CanvasSequence class.\n */\n\n'use strict';\n\nconst CanvasAtom = require('./CanvasAtom.js');\n\nconst locals = Object.freeze({\n  METHODS: [\n    'addHitRegion',\n    'arc',\n    'arcTo',\n    'beginPath',\n    'bezierCurveTo',\n    'clearHitRegions',\n    'clearRect',\n    'clip',\n    'closePath',\n    'drawFocusIfNeeded',\n    'drawImage',\n    'ellipse',\n    'fill',\n    'fillRect',\n    'fillText',\n    'lineTo',\n    'moveTo',\n    'putImageData',\n    'quadraticCurveTo',\n    'rect',\n    'removeHitRegion',\n    'resetTransform',\n    'restore',\n    'rotate',\n    'save',\n    'scale',\n    'scrollPathIntoView',\n    'setLineDash',\n    'setTransform',\n    'stroke',\n    'strokeRect',\n    'strokeText',\n    'transform',\n    'translate',\n  ],\n\n  PROPERTIES: [\n    'direction',\n    'fillStyle',\n    'filter',\n    'font',\n    'globalAlpha',\n    'globalCompositeOperation',\n    'imageSmoothingEnabled',\n    'imageSmoothingQuality',\n    'lineCap',\n    'lineDashOffset',\n    'lineJoin',\n    'lineWidth',\n    'miterLimit',\n    'shadowBlur',\n    'shadowColor',\n    'shadowOffsetX',\n    'shadowOffsetY',\n    'strokeStyle',\n    'textAlign',\n    'textBaseline',\n  ],\n});\n\n// Mark properties as intended for internal use.\nconst symbols = Object.freeze({\n  sequence: Symbol.for('sequence'),\n  push:     Symbol.for('push'),\n  fromJSON: Symbol.for('fromJSON'),\n});\n\n/**\n * A CanvasSequence is a linear collection of CanvasAtoms, capable of being\n * executed on a CanvasRenderingContext2D.\n *\n * @param {CanvasSequence} [data=null] - An unrevived (i.e. freshly transmitted)\n * CanvasSequence. If present, the constructor revives the sequence. Note that\n * an already revived CanvasSequence cannot be used as the argument here.\n */\nclass CanvasSequence {\n  constructor(data = null) {\n    /**\n     * The CanvasAtoms that form the sequence.\n     *\n     * @private\n     * @type {CanvasAtom[]}\n     */\n    this[symbols.sequence] = [];\n\n    // If data is present, assume it is a CanvasSequence that needs reviving.\n    if (data) this[symbols.fromJSON](data);\n  }\n\n  /**\n   * Revive the sequence from transmitted JSON data.\n   *\n   * @private\n   * @param {CanvasSequence} [data={}]\n   */\n  [symbols.fromJSON](data = { sequence: [] }) {\n    data.sequence.forEach(({ type, inst, args }) => {\n      this[symbols.push](type, inst, args);\n    });\n  }\n\n  /**\n   * Push a new CanvasAtom onto the end of the sequence.\n   *\n   * @private\n   * @param {string} type - The type of CanvasAtom to push.\n   * @param {string} inst - The canvas context instruction.\n   * @param {*[]} args - The arguments to the canvas context instruction.\n   */\n  [symbols.push](type, inst, args) {\n    this[symbols.sequence].push(new CanvasAtom(type, inst, args));\n  }\n\n  /**\n   * Execute the sequence on the given context.\n   *\n   * @param {CanvasRenderingContext2D} context\n   */\n  execute(context) {\n    context.save();\n    this[symbols.sequence].forEach(a => a.execute(context));\n    context.restore();\n  }\n\n  /**\n   * Export a JSON serialized version of the sequence, ready for transmission.\n   *\n   * @return {CanvasSequence} In JSON serialized form.\n   */\n  toJSON() {\n    return { sequence: this[symbols.sequence] };\n  }\n}\n\nlocals.METHODS.forEach(m => {\n  Object.defineProperty(CanvasSequence.prototype, m, {\n    value: function pushMethodCall(...args) {\n      this[symbols.push](CanvasAtom.METHOD, m, args);\n    },\n    writable:     false,\n    enumerable:   true,\n    configurable: false,\n  });\n});\n\nlocals.PROPERTIES.forEach(p => {\n  Object.defineProperty(CanvasSequence.prototype, p, {\n    get()  { throw `Invalid canvas sequencer interaction, cannot get ${p}.`; },\n    set(v) { this[symbols.push](CanvasAtom.PROPERTY, p, [v]); },\n    enumerable:   true,\n    configurable: false,\n  });\n});\n\nmodule.exports = CanvasSequence;\n\n","/*\n * Author: Michael van der Kamp\n * Date: July/August, 2018\n *\n * Thie file provides the definition of the CanvasBlueprint class.\n *\n * A CanvasBlueprint is similar to a plain CanvasSequence, except that it\n * accepts tag strings as arguments, and before it can be executed it  needs to\n * be 'built' with an object defining which values should replace the tags.\n */\n\n'use strict';\n\nconst CanvasSequence = require('./CanvasSequence.js');\n\n// Mark properties as intended for internal use.\nconst symbols = Object.freeze({\n  sequence: Symbol.for('sequence'),\n  push:     Symbol.for('push'),\n});\n\n/**\n * Replace tags in the given string with correlated value in values.\n *\n * Rules:\n * - Strings not surrounded by curly braces {} will be returned.\n * - Strings surrounded by curly braces but not corresponding to a property on\n *   'values' will result in a string without the curly braces being returned.\n * - Strings surrounded by curly braces, with the inner string corresponding to\n *   a property on 'values' will result in the corresponding value being\n *   returned.\n *\n * @inner\n * @private\n *\n * @param {string} str\n * @param {object} values\n *\n * @return {string|mixed} Either the original string if no replacement was\n * performed, or the appropriate value.\n */\nfunction replaceTags(str, values) {\n  const tag = str.replace(/^\\{|\\}$/gu, '');\n  if (tag !== str) {\n    return values.hasOwnProperty(tag) ? values[tag] : tag;\n  }\n  return str;\n}\n\n/**\n * A CanvasBlueprint is a rebuildable CanvasSequence. It accepts tagged\n * arguments. When built, tags will be replaced using properties from a provided\n * object.\n *\n * @extends CanvasSequence\n */\nclass CanvasBlueprint extends CanvasSequence {\n  /**\n   * Build the blueprint using the provided values.\n   *\n   * Rules:\n   * - Strings not surrounded by curly braces {} will be returned.\n   * - Strings surrounded by curly braces but not corresponding to a property on\n   *   'values' will result in a string without the curly braces being returned.\n   * - Strings surrounded by curly braces, with the inner string corresponding\n   *   to a property on 'values' will result in the corresponding value being\n   *   returned.\n   *\n   * @param {object} values - The values with which to construct the sequence.\n   *\n   * @return {CanvasSequence} The constructed sequence.\n   */\n  build(values = {}) {\n    const seq = new CanvasSequence();\n    this[symbols.sequence].forEach(({ type, inst, args }) => {\n      const realArgs = args.map(v => {\n        return (typeof v === 'string') ? replaceTags(v, values) : v;\n      });\n      seq[symbols.push](type, inst, realArgs);\n    });\n    return seq;\n  }\n\n  /**\n   * CanvasBlueprints cannot be directly executed!\n   *\n   * @throws TypeError\n   */\n  execute() {\n    throw new TypeError('Cannot execute a blueprint.');\n  }\n}\n\nmodule.exports = CanvasBlueprint;\n\n","/*\n * Access point for npm.\n */\n\n'use strict';\n\nconst CanvasSequence = require('./src/CanvasSequence.js');\nconst CanvasBlueprint = require('./src/CanvasBlueprint.js');\n\nmodule.exports = { CanvasSequence, CanvasBlueprint };\n\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n","module.exports = false;\n\n","const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n  return (...args) => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\nfunction addToSet(set, array, transformCaseFunc = stringToLowerCase) {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue() {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n]);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n]);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n]);\n\nexport const text = freeze(['#text']);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n  'slot',\n]);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n]);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  arrayForEach,\n  arrayPop,\n  arrayPush,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n} from './utils.js';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\nconst getGlobal = function () {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n  const DOMPurify = (root) => createDOMPurify(root);\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = VERSION;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg = {}) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n      ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n      : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n      ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n      : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n      ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n      : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n      ? addToSet(\n          clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n          cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n          transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n      : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n      ? addToSet(\n          clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n          cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n          transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n      : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n      ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n      : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n      ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n      : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n      ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n      : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES\n      : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n        'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(\n          trustedTypes,\n          currentScript\n        );\n      }\n\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  const HTML_INTEGRATION_POINTS = addToSet({}, [\n    'foreignobject',\n    'annotation-xml',\n  ]);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element) {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  const _forceRemove = function (node) {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  const _removeAttribute = function (name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node,\n      });\n    }\n\n    node.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\"\" attributes\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param  {Node} root The root element or node to start traversing on.\n   * @return {NodeIterator} The created NodeIterator\n   */\n  const _createNodeIterator = function (root) {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  const _isClobbered = function (elm) {\n    return (\n      elm instanceof HTMLFormElement &&\n      (typeof elm.nodeName !== 'string' ||\n        typeof elm.textContent !== 'string' ||\n        typeof elm.removeChild !== 'function' ||\n        !(elm.attributes instanceof NamedNodeMap) ||\n        typeof elm.removeAttribute !== 'function' ||\n        typeof elm.setAttribute !== 'function' ||\n        typeof elm.namespaceURI !== 'string' ||\n        typeof elm.insertBefore !== 'function' ||\n        typeof elm.hasChildNodes !== 'function')\n    );\n  };\n\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param  {Node} object object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  const _isNode = function (object) {\n    return typeof Node === 'function' && object instanceof Node;\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  const _executeHook = function (entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    arrayForEach(hooks[entryPoint], (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode) {\n    let content = null;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(/<[/\\w]/g, currentNode.data)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n          regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n        ) {\n          return false;\n        }\n\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n        ) {\n          return false;\n        }\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        content = stringReplace(content, expr, ' ');\n      });\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_isBasicCustomElement(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n    } else if (value) {\n      return false;\n    } else {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    }\n\n    return true;\n  };\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param {string} tagName name of the tag of the node to sanitize\n   * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode) {\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n    };\n    let l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (\n        trustedTypesPolicy &&\n        typeof trustedTypes === 'object' &&\n        typeof trustedTypes.getAttributeType === 'function'\n      ) {\n        if (namespaceURI) {\n          /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n        } else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML': {\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n            }\n\n            case 'TrustedScriptURL': {\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n            }\n\n            default: {\n              break;\n            }\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(shadowNode)) {\n        continue;\n      }\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(shadowNode);\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} cfg object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(currentNode)) {\n        continue;\n      }\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(currentNode);\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {String} tag Tag name of containing element.\n   * @param  {String} attr Attribute name.\n   * @param  {String} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   * @return {Function} removed(popped) hook\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      return arrayPop(hooks[entryPoint]);\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34: // \"\n        escape = '&quot;';\n        break;\n      case 38: // &\n        escape = '&amp;';\n        break;\n      case 39: // '\n        escape = '&#39;';\n        break;\n      case 60: // <\n        escape = '&lt;';\n        break;\n      case 62: // >\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index\n    ? html + str.substring(lastIndex, index)\n    : html;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source  : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n  ? window : typeof self === 'object' && self.self === self\n  ? self : typeof global === 'object' && global.global === global\n  ? global\n  : this\n\nfunction bom (blob, opts) {\n  if (typeof opts === 'undefined') opts = { autoBom: false }\n  else if (typeof opts !== 'object') {\n    console.warn('Deprecated: Expected third argument to be a object')\n    opts = { autoBom: !opts }\n  }\n\n  // prepend BOM for UTF-8 XML and text/* types (including HTML)\n  // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n  if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n    return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n  }\n  return blob\n}\n\nfunction download (url, name, opts) {\n  var xhr = new XMLHttpRequest()\n  xhr.open('GET', url)\n  xhr.responseType = 'blob'\n  xhr.onload = function () {\n    saveAs(xhr.response, name, opts)\n  }\n  xhr.onerror = function () {\n    console.error('could not download file')\n  }\n  xhr.send()\n}\n\nfunction corsEnabled (url) {\n  var xhr = new XMLHttpRequest()\n  // use sync to avoid popup blocker\n  xhr.open('HEAD', url, false)\n  try {\n    xhr.send()\n  } catch (e) {}\n  return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n  try {\n    node.dispatchEvent(new MouseEvent('click'))\n  } catch (e) {\n    var evt = document.createEvent('MouseEvents')\n    evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n                          20, false, false, false, false, 0, null)\n    node.dispatchEvent(evt)\n  }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n  // probably in some web worker\n  (typeof window !== 'object' || window !== _global)\n    ? function saveAs () { /* noop */ }\n\n  // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n  : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n  ? function saveAs (blob, name, opts) {\n    var URL = _global.URL || _global.webkitURL\n    var a = document.createElement('a')\n    name = name || blob.name || 'download'\n\n    a.download = name\n    a.rel = 'noopener' // tabnabbing\n\n    // TODO: detect chrome extensions & packaged apps\n    // a.target = '_blank'\n\n    if (typeof blob === 'string') {\n      // Support regular links\n      a.href = blob\n      if (a.origin !== location.origin) {\n        corsEnabled(a.href)\n          ? download(blob, name, opts)\n          : click(a, a.target = '_blank')\n      } else {\n        click(a)\n      }\n    } else {\n      // Support blobs\n      a.href = URL.createObjectURL(blob)\n      setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n      setTimeout(function () { click(a) }, 0)\n    }\n  }\n\n  // Use msSaveOrOpenBlob as a second approach\n  : 'msSaveOrOpenBlob' in navigator\n  ? function saveAs (blob, name, opts) {\n    name = name || blob.name || 'download'\n\n    if (typeof blob === 'string') {\n      if (corsEnabled(blob)) {\n        download(blob, name, opts)\n      } else {\n        var a = document.createElement('a')\n        a.href = blob\n        a.target = '_blank'\n        setTimeout(function () { click(a) })\n      }\n    } else {\n      navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n    }\n  }\n\n  // Fallback to using FileReader and a popup\n  : function saveAs (blob, name, opts, popup) {\n    // Open a popup immediately do go around popup blocker\n    // Mostly only available on user interaction and the fileReader is async so...\n    popup = popup || open('', '_blank')\n    if (popup) {\n      popup.document.title =\n      popup.document.body.innerText = 'downloading...'\n    }\n\n    if (typeof blob === 'string') return download(blob, name, opts)\n\n    var force = blob.type === 'application/octet-stream'\n    var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n    var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n    if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n      // Safari doesn't allow downloading of blob URLs\n      var reader = new FileReader()\n      reader.onloadend = function () {\n        var url = reader.result\n        url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n        if (popup) popup.location.href = url\n        else location = url\n        popup = null // reverse-tabnabbing #460\n      }\n      reader.readAsDataURL(blob)\n    } else {\n      var URL = _global.URL || _global.webkitURL\n      var url = URL.createObjectURL(blob)\n      if (popup) popup.location = url\n      else location.href = url\n      popup = null // reverse-tabnabbing #460\n      setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n    }\n  }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n  module.exports = saveAs;\n}\n","import { Buffer } from 'buffer'\nimport { GenericFilehandle, FilehandleOptions, Stats } from './filehandle'\n\n// Using this you can \"await\" the file like a normal promise\n// https://blog.shovonhasan.com/using-promises-with-filereader/\nfunction readBlobAsArrayBuffer(blob: Blob): Promise<ArrayBuffer> {\n  const fileReader = new FileReader()\n\n  return new Promise((resolve, reject): void => {\n    fileReader.onerror = (): void => {\n      fileReader.abort()\n      reject(new Error('problem reading blob'))\n    }\n\n    fileReader.onabort = (): void => {\n      reject(new Error('blob reading was aborted'))\n    }\n\n    fileReader.onload = (): void => {\n      if (fileReader.result && typeof fileReader.result !== 'string') {\n        resolve(fileReader.result)\n      } else {\n        reject(new Error('unknown error reading blob'))\n      }\n    }\n    fileReader.readAsArrayBuffer(blob)\n  })\n}\n\nfunction readBlobAsText(blob: Blob): Promise<string> {\n  const fileReader = new FileReader()\n\n  return new Promise((resolve, reject): void => {\n    fileReader.onerror = (): void => {\n      fileReader.abort()\n      reject(new Error('problem reading blob'))\n    }\n\n    fileReader.onabort = (): void => {\n      reject(new Error('blob reading was aborted'))\n    }\n\n    fileReader.onload = (): void => {\n      if (fileReader.result && typeof fileReader.result === 'string') {\n        resolve(fileReader.result)\n      } else {\n        reject(new Error('unknown error reading blob'))\n      }\n    }\n    fileReader.readAsText(blob)\n  })\n}\n\n/**\n * Blob of binary data fetched from a local file (with FileReader).\n *\n * Adapted by Robert Buels and Garrett Stevens from the BlobFetchable object in\n * the Dalliance Genome Explorer, which is copyright Thomas Down 2006-2011.\n */\nexport default class BlobFile implements GenericFilehandle {\n  private blob: Blob\n  private size: number\n  public constructor(blob: Blob) {\n    this.blob = blob\n    this.size = blob.size\n  }\n\n  public async read(\n    buffer: Buffer,\n    offset = 0,\n    length: number,\n    position = 0,\n  ): Promise<{ bytesRead: number; buffer: Buffer }> {\n    // short-circuit a read of 0 bytes here, because browsers actually sometimes\n    // crash if you try to read 0 bytes from a local file!\n    if (!length) {\n      return { bytesRead: 0, buffer }\n    }\n\n    const start = position\n    const end = start + length\n\n    const result = await readBlobAsArrayBuffer(this.blob.slice(start, end))\n    const resultBuffer = Buffer.from(result)\n\n    const bytesCopied = resultBuffer.copy(buffer, offset)\n\n    return { bytesRead: bytesCopied, buffer: resultBuffer }\n  }\n\n  public async readFile(): Promise<Buffer>\n  public async readFile(options: BufferEncoding): Promise<string>\n  public async readFile<T extends undefined>(\n    options:\n      | Omit<FilehandleOptions, 'encoding'>\n      | (Omit<FilehandleOptions, 'encoding'> & { encoding: T }),\n  ): Promise<Buffer>\n  public async readFile<T extends BufferEncoding>(\n    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },\n  ): Promise<string>\n  public async readFile(\n    options?: FilehandleOptions | BufferEncoding,\n  ): Promise<Buffer | string> {\n    const encoding = typeof options === 'string' ? options : options?.encoding\n    if (encoding === 'utf8') {\n      return readBlobAsText(this.blob)\n    }\n    if (encoding) {\n      throw new Error(`unsupported encoding: ${encoding}`)\n    }\n    const result = await readBlobAsArrayBuffer(this.blob)\n    return Buffer.from(result)\n  }\n\n  public async stat(): Promise<Stats> {\n    return { size: this.size }\n  }\n\n  public async close(): Promise<void> {\n    return\n  }\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === 'object' && x !== null;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar Evaluator = require('./evaluator/Evaluator');\n\nvar Lexer = require('./Lexer');\n\nvar Parser = require('./parser/Parser');\n\nvar PromiseSync = require('./PromiseSync');\n\nvar Expression = /*#__PURE__*/function () {\n  function Expression(grammar, exprStr) {\n    (0, _classCallCheck2.default)(this, Expression);\n    this._grammar = grammar;\n    this._exprStr = exprStr;\n    this._ast = null;\n  }\n  /**\n   * Forces a compilation of the expression string that this Expression object\n   * was constructed with. This function can be called multiple times; useful\n   * if the language elements of the associated Jexl instance change.\n   * @returns {Expression} this Expression instance, for convenience\n   */\n\n\n  (0, _createClass2.default)(Expression, [{\n    key: \"compile\",\n    value: function compile() {\n      var lexer = new Lexer(this._grammar);\n      var parser = new Parser(this._grammar);\n      var tokens = lexer.tokenize(this._exprStr);\n      parser.addTokens(tokens);\n      this._ast = parser.complete();\n      return this;\n    }\n    /**\n     * Asynchronously evaluates the expression within an optional context.\n     * @param {Object} [context] A mapping of variables to values, which will be\n     *      made accessible to the Jexl expression when evaluating it\n     * @returns {Promise<*>} resolves with the result of the evaluation.\n     */\n\n  }, {\n    key: \"eval\",\n    value: function _eval() {\n      var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return this._eval(context, Promise);\n    }\n    /**\n     * Synchronously evaluates the expression within an optional context.\n     * @param {Object} [context] A mapping of variables to values, which will be\n     *      made accessible to the Jexl expression when evaluating it\n     * @returns {*} the result of the evaluation.\n     * @throws {*} on error\n     */\n\n  }, {\n    key: \"evalSync\",\n    value: function evalSync() {\n      var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      var res = this._eval(context, PromiseSync);\n\n      if (res.error) throw res.error;\n      return res.value;\n    }\n  }, {\n    key: \"_eval\",\n    value: function _eval(context, promise) {\n      var _this = this;\n\n      return promise.resolve().then(function () {\n        var ast = _this._getAst();\n\n        var evaluator = new Evaluator(_this._grammar, context, undefined, promise);\n        return evaluator.eval(ast);\n      });\n    }\n  }, {\n    key: \"_getAst\",\n    value: function _getAst() {\n      if (!this._ast) this.compile();\n      return this._ast;\n    }\n  }]);\n  return Expression;\n}();\n\nmodule.exports = Expression;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar Expression = require('./Expression');\n\nvar _require = require('./grammar'),\n    getGrammar = _require.getGrammar;\n/**\n * Jexl is the Javascript Expression Language, capable of parsing and\n * evaluating basic to complex expression strings, combined with advanced\n * xpath-like drilldown into native Javascript objects.\n * @constructor\n */\n\n\nvar Jexl = /*#__PURE__*/function () {\n  function Jexl() {\n    (0, _classCallCheck2.default)(this, Jexl);\n    // Allow expr to be called outside of the jexl context\n    this.expr = this.expr.bind(this);\n    this._grammar = getGrammar();\n  }\n  /**\n   * Adds a binary operator to Jexl at the specified precedence. The higher the\n   * precedence, the earlier the operator is applied in the order of operations.\n   * For example, * has a higher precedence than +, because multiplication comes\n   * before division.\n   *\n   * Please see grammar.js for a listing of all default operators and their\n   * precedence values in order to choose the appropriate precedence for the\n   * new operator.\n   * @param {string} operator The operator string to be added\n   * @param {number} precedence The operator's precedence\n   * @param {function} fn A function to run to calculate the result. The function\n   *      will be called with two arguments: left and right, denoting the values\n   *      on either side of the operator. It should return either the resulting\n   *      value, or a Promise that resolves with the resulting value.\n   * @param {boolean} [manualEval] If true, the `left` and `right` arguments\n   *      will be wrapped in objects with an `eval` function. Calling\n   *      left.eval() or right.eval() will return a promise that resolves to\n   *      that operand's actual value. This is useful to conditionally evaluate\n   *      operands.\n   */\n\n\n  (0, _createClass2.default)(Jexl, [{\n    key: \"addBinaryOp\",\n    value: function addBinaryOp(operator, precedence, fn, manualEval) {\n      this._addGrammarElement(operator, (0, _defineProperty2.default)({\n        type: 'binaryOp',\n        precedence: precedence\n      }, manualEval ? 'evalOnDemand' : 'eval', fn));\n    }\n    /**\n     * Adds or replaces an expression function in this Jexl instance.\n     * @param {string} name The name of the expression function, as it will be\n     *      used within Jexl expressions\n     * @param {function} fn The javascript function to be executed when this\n     *      expression function is invoked. It will be provided with each argument\n     *      supplied in the expression, in the same order.\n     */\n\n  }, {\n    key: \"addFunction\",\n    value: function addFunction(name, fn) {\n      this._grammar.functions[name] = fn;\n    }\n    /**\n     * Syntactic sugar for calling {@link #addFunction} repeatedly. This function\n     * accepts a map of one or more expression function names to their javascript\n     * function counterpart.\n     * @param {{}} map A map of expression function names to javascript functions\n     */\n\n  }, {\n    key: \"addFunctions\",\n    value: function addFunctions(map) {\n      for (var key in map) {\n        this._grammar.functions[key] = map[key];\n      }\n    }\n    /**\n     * Adds a unary operator to Jexl. Unary operators are currently only supported\n     * on the left side of the value on which it will operate.\n     * @param {string} operator The operator string to be added\n     * @param {function} fn A function to run to calculate the result. The function\n     *      will be called with one argument: the literal value to the right of the\n     *      operator. It should return either the resulting value, or a Promise\n     *      that resolves with the resulting value.\n     */\n\n  }, {\n    key: \"addUnaryOp\",\n    value: function addUnaryOp(operator, fn) {\n      this._addGrammarElement(operator, {\n        type: 'unaryOp',\n        weight: Infinity,\n        eval: fn\n      });\n    }\n    /**\n     * Adds or replaces a transform function in this Jexl instance.\n     * @param {string} name The name of the transform function, as it will be used\n     *      within Jexl expressions\n     * @param {function} fn The function to be executed when this transform is\n     *      invoked. It will be provided with at least one argument:\n     *          - {*} value: The value to be transformed\n     *          - {...*} args: The arguments for this transform\n     */\n\n  }, {\n    key: \"addTransform\",\n    value: function addTransform(name, fn) {\n      this._grammar.transforms[name] = fn;\n    }\n    /**\n     * Syntactic sugar for calling {@link #addTransform} repeatedly.  This function\n     * accepts a map of one or more transform names to their transform function.\n     * @param {{}} map A map of transform names to transform functions\n     */\n\n  }, {\n    key: \"addTransforms\",\n    value: function addTransforms(map) {\n      for (var key in map) {\n        this._grammar.transforms[key] = map[key];\n      }\n    }\n    /**\n     * Creates an Expression object from the given Jexl expression string, and\n     * immediately compiles it. The returned Expression object can then be\n     * evaluated multiple times with new contexts, without generating any\n     * additional string processing overhead.\n     * @param {string} expression The Jexl expression to be compiled\n     * @returns {Expression} The compiled Expression object\n     */\n\n  }, {\n    key: \"compile\",\n    value: function compile(expression) {\n      var exprObj = this.createExpression(expression);\n      return exprObj.compile();\n    }\n    /**\n     * Constructs an Expression object from a Jexl expression string.\n     * @param {string} expression The Jexl expression to be wrapped in an\n     *    Expression object\n     * @returns {Expression} The Expression object representing the given string\n     */\n\n  }, {\n    key: \"createExpression\",\n    value: function createExpression(expression) {\n      return new Expression(this._grammar, expression);\n    }\n    /**\n     * Retrieves a previously set expression function.\n     * @param {string} name The name of the expression function\n     * @returns {function} The expression function\n     */\n\n  }, {\n    key: \"getFunction\",\n    value: function getFunction(name) {\n      return this._grammar.functions[name];\n    }\n    /**\n     * Retrieves a previously set transform function.\n     * @param {string} name The name of the transform function\n     * @returns {function} The transform function\n     */\n\n  }, {\n    key: \"getTransform\",\n    value: function getTransform(name) {\n      return this._grammar.transforms[name];\n    }\n    /**\n     * Asynchronously evaluates a Jexl string within an optional context.\n     * @param {string} expression The Jexl expression to be evaluated\n     * @param {Object} [context] A mapping of variables to values, which will be\n     *      made accessible to the Jexl expression when evaluating it\n     * @returns {Promise<*>} resolves with the result of the evaluation.\n     */\n\n  }, {\n    key: \"eval\",\n    value: function _eval(expression) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var exprObj = this.createExpression(expression);\n      return exprObj.eval(context);\n    }\n    /**\n     * Synchronously evaluates a Jexl string within an optional context.\n     * @param {string} expression The Jexl expression to be evaluated\n     * @param {Object} [context] A mapping of variables to values, which will be\n     *      made accessible to the Jexl expression when evaluating it\n     * @returns {*} the result of the evaluation.\n     * @throws {*} on error\n     */\n\n  }, {\n    key: \"evalSync\",\n    value: function evalSync(expression) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var exprObj = this.createExpression(expression);\n      return exprObj.evalSync(context);\n    }\n    /**\n     * A JavaScript template literal to allow expressions to be defined by the\n     * syntax: expr`40 + 2`\n     * @param {Array<string>} strs\n     * @param  {...any} args\n     */\n\n  }, {\n    key: \"expr\",\n    value: function expr(strs) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      var exprStr = strs.reduce(function (acc, str, idx) {\n        var arg = idx < args.length ? args[idx] : '';\n        acc += str + arg;\n        return acc;\n      }, '');\n      return this.createExpression(exprStr);\n    }\n    /**\n     * Removes a binary or unary operator from the Jexl grammar.\n     * @param {string} operator The operator string to be removed\n     */\n\n  }, {\n    key: \"removeOp\",\n    value: function removeOp(operator) {\n      if (this._grammar.elements[operator] && (this._grammar.elements[operator].type === 'binaryOp' || this._grammar.elements[operator].type === 'unaryOp')) {\n        delete this._grammar.elements[operator];\n      }\n    }\n    /**\n     * Adds an element to the grammar map used by this Jexl instance.\n     * @param {string} str The key string to be added\n     * @param {{type: <string>}} obj A map of configuration options for this\n     *      grammar element\n     * @private\n     */\n\n  }, {\n    key: \"_addGrammarElement\",\n    value: function _addGrammarElement(str, obj) {\n      this._grammar.elements[str] = obj;\n    }\n  }]);\n  return Jexl;\n}();\n\nmodule.exports = new Jexl();\nmodule.exports.Jexl = Jexl;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar numericRegex = /^-?(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)$/;\nvar identRegex = /^[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][a-zA-Zа-яА-Я0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*$/;\nvar escEscRegex = /\\\\\\\\/;\nvar whitespaceRegex = /^\\s*$/;\nvar preOpRegexElems = [// Strings\n\"'(?:(?:\\\\\\\\')|[^'])*'\", '\"(?:(?:\\\\\\\\\")|[^\"])*\"', // Whitespace\n'\\\\s+', // Booleans\n'\\\\btrue\\\\b', '\\\\bfalse\\\\b'];\nvar postOpRegexElems = [// Identifiers\n\"[a-zA-Z\\u0430-\\u044F\\u0410-\\u042F_\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\\\$][a-zA-Z0-9\\u0430-\\u044F\\u0410-\\u042F_\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\\\$]*\", // Numerics (without negative symbol)\n'(?:(?:[0-9]*\\\\.[0-9]+)|[0-9]+)'];\nvar minusNegatesAfter = ['binaryOp', 'unaryOp', 'openParen', 'openBracket', 'question', 'colon'];\n/**\n * Lexer is a collection of stateless, statically-accessed functions for the\n * lexical parsing of a Jexl string.  Its responsibility is to identify the\n * \"parts of speech\" of a Jexl expression, and tokenize and label each, but\n * to do only the most minimal syntax checking; the only errors the Lexer\n * should be concerned with are if it's unable to identify the utility of\n * any of its tokens.  Errors stemming from these tokens not being in a\n * sensible configuration should be left for the Parser to handle.\n * @type {{}}\n */\n\nvar Lexer = /*#__PURE__*/function () {\n  function Lexer(grammar) {\n    (0, _classCallCheck2.default)(this, Lexer);\n    this._grammar = grammar;\n  }\n  /**\n   * Splits a Jexl expression string into an array of expression elements.\n   * @param {string} str A Jexl expression string\n   * @returns {Array<string>} An array of substrings defining the functional\n   *      elements of the expression.\n   */\n\n\n  (0, _createClass2.default)(Lexer, [{\n    key: \"getElements\",\n    value: function getElements(str) {\n      var regex = this._getSplitRegex();\n\n      return str.split(regex).filter(function (elem) {\n        // Remove empty strings\n        return elem;\n      });\n    }\n    /**\n     * Converts an array of expression elements into an array of tokens.  Note that\n     * the resulting array may not equal the element array in length, as any\n     * elements that consist only of whitespace get appended to the previous\n     * token's \"raw\" property.  For the structure of a token object, please see\n     * {@link Lexer#tokenize}.\n     * @param {Array<string>} elements An array of Jexl expression elements to be\n     *      converted to tokens\n     * @returns {Array<{type, value, raw}>} an array of token objects.\n     */\n\n  }, {\n    key: \"getTokens\",\n    value: function getTokens(elements) {\n      var tokens = [];\n      var negate = false;\n\n      for (var i = 0; i < elements.length; i++) {\n        if (this._isWhitespace(elements[i])) {\n          if (tokens.length) {\n            tokens[tokens.length - 1].raw += elements[i];\n          }\n        } else if (elements[i] === '-' && this._isNegative(tokens)) {\n          negate = true;\n        } else {\n          if (negate) {\n            elements[i] = '-' + elements[i];\n            negate = false;\n          }\n\n          tokens.push(this._createToken(elements[i]));\n        }\n      } // Catch a - at the end of the string. Let the parser handle that issue.\n\n\n      if (negate) {\n        tokens.push(this._createToken('-'));\n      }\n\n      return tokens;\n    }\n    /**\n     * Converts a Jexl string into an array of tokens.  Each token is an object\n     * in the following format:\n     *\n     *     {\n     *         type: <string>,\n     *         [name]: <string>,\n     *         value: <boolean|number|string>,\n     *         raw: <string>\n     *     }\n     *\n     * Type is one of the following:\n     *\n     *      literal, identifier, binaryOp, unaryOp\n     *\n     * OR, if the token is a control character its type is the name of the element\n     * defined in the Grammar.\n     *\n     * Name appears only if the token is a control string found in\n     * {@link grammar#elements}, and is set to the name of the element.\n     *\n     * Value is the value of the token in the correct type (boolean or numeric as\n     * appropriate). Raw is the string representation of this value taken directly\n     * from the expression string, including any trailing spaces.\n     * @param {string} str The Jexl string to be tokenized\n     * @returns {Array<{type, value, raw}>} an array of token objects.\n     * @throws {Error} if the provided string contains an invalid token.\n     */\n\n  }, {\n    key: \"tokenize\",\n    value: function tokenize(str) {\n      var elements = this.getElements(str);\n      return this.getTokens(elements);\n    }\n    /**\n     * Creates a new token object from an element of a Jexl string. See\n     * {@link Lexer#tokenize} for a description of the token object.\n     * @param {string} element The element from which a token should be made\n     * @returns {{value: number|boolean|string, [name]: string, type: string,\n     *      raw: string}} a token object describing the provided element.\n     * @throws {Error} if the provided string is not a valid expression element.\n     * @private\n     */\n\n  }, {\n    key: \"_createToken\",\n    value: function _createToken(element) {\n      var token = {\n        type: 'literal',\n        value: element,\n        raw: element\n      };\n\n      if (element[0] === '\"' || element[0] === \"'\") {\n        token.value = this._unquote(element);\n      } else if (element.match(numericRegex)) {\n        token.value = parseFloat(element);\n      } else if (element === 'true' || element === 'false') {\n        token.value = element === 'true';\n      } else if (this._grammar.elements[element]) {\n        token.type = this._grammar.elements[element].type;\n      } else if (element.match(identRegex)) {\n        token.type = 'identifier';\n      } else {\n        throw new Error(\"Invalid expression token: \".concat(element));\n      }\n\n      return token;\n    }\n    /**\n     * Escapes a string so that it can be treated as a string literal within a\n     * regular expression.\n     * @param {string} str The string to be escaped\n     * @returns {string} the RegExp-escaped string.\n     * @see https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions\n     * @private\n     */\n\n  }, {\n    key: \"_escapeRegExp\",\n    value: function _escapeRegExp(str) {\n      str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n      if (str.match(identRegex)) {\n        str = '\\\\b' + str + '\\\\b';\n      }\n\n      return str;\n    }\n    /**\n     * Gets a RegEx object appropriate for splitting a Jexl string into its core\n     * elements.\n     * @returns {RegExp} An element-splitting RegExp object\n     * @private\n     */\n\n  }, {\n    key: \"_getSplitRegex\",\n    value: function _getSplitRegex() {\n      var _this = this;\n\n      if (!this._splitRegex) {\n        // Sort by most characters to least, then regex escape each\n        var elemArray = Object.keys(this._grammar.elements).sort(function (a, b) {\n          return b.length - a.length;\n        }).map(function (elem) {\n          return _this._escapeRegExp(elem);\n        }, this);\n        this._splitRegex = new RegExp('(' + [preOpRegexElems.join('|'), elemArray.join('|'), postOpRegexElems.join('|')].join('|') + ')');\n      }\n\n      return this._splitRegex;\n    }\n    /**\n     * Determines whether the addition of a '-' token should be interpreted as a\n     * negative symbol for an upcoming number, given an array of tokens already\n     * processed.\n     * @param {Array<Object>} tokens An array of tokens already processed\n     * @returns {boolean} true if adding a '-' should be considered a negative\n     *      symbol; false otherwise\n     * @private\n     */\n\n  }, {\n    key: \"_isNegative\",\n    value: function _isNegative(tokens) {\n      if (!tokens.length) return true;\n      return minusNegatesAfter.some(function (type) {\n        return type === tokens[tokens.length - 1].type;\n      });\n    }\n    /**\n     * A utility function to determine if a string consists of only space\n     * characters.\n     * @param {string} str A string to be tested\n     * @returns {boolean} true if the string is empty or consists of only spaces;\n     *      false otherwise.\n     * @private\n     */\n\n  }, {\n    key: \"_isWhitespace\",\n    value: function _isWhitespace(str) {\n      return !!str.match(whitespaceRegex);\n    }\n    /**\n     * Removes the beginning and trailing quotes from a string, unescapes any\n     * escaped quotes on its interior, and unescapes any escaped escape\n     * characters. Note that this function is not defensive; it assumes that the\n     * provided string is not empty, and that its first and last characters are\n     * actually quotes.\n     * @param {string} str A string whose first and last characters are quotes\n     * @returns {string} a string with the surrounding quotes stripped and escapes\n     *      properly processed.\n     * @private\n     */\n\n  }, {\n    key: \"_unquote\",\n    value: function _unquote(str) {\n      var quote = str[0];\n      var escQuoteRegex = new RegExp('\\\\\\\\' + quote, 'g');\n      return str.substr(1, str.length - 2).replace(escQuoteRegex, quote).replace(escEscRegex, '\\\\');\n    }\n  }]);\n  return Lexer;\n}();\n\nmodule.exports = Lexer;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar PromiseSync = /*#__PURE__*/function () {\n  function PromiseSync(fn) {\n    (0, _classCallCheck2.default)(this, PromiseSync);\n    fn(this._resolve.bind(this), this._reject.bind(this));\n  }\n\n  (0, _createClass2.default)(PromiseSync, [{\n    key: \"catch\",\n    value: function _catch(rejected) {\n      if (this.error) {\n        try {\n          this._resolve(rejected(this.error));\n        } catch (e) {\n          this._reject(e);\n        }\n      }\n\n      return this;\n    }\n  }, {\n    key: \"then\",\n    value: function then(resolved, rejected) {\n      if (!this.error) {\n        try {\n          this._resolve(resolved(this.value));\n        } catch (e) {\n          this._reject(e);\n        }\n      }\n\n      if (rejected) this.catch(rejected);\n      return this;\n    }\n  }, {\n    key: \"_reject\",\n    value: function _reject(error) {\n      this.value = undefined;\n      this.error = error;\n    }\n  }, {\n    key: \"_resolve\",\n    value: function _resolve(val) {\n      if (val instanceof PromiseSync) {\n        if (val.error) {\n          this._reject(val.error);\n        } else {\n          this._resolve(val.value);\n        }\n      } else {\n        this.value = val;\n        this.error = undefined;\n      }\n    }\n  }]);\n  return PromiseSync;\n}();\n\nPromiseSync.all = function (vals) {\n  return new PromiseSync(function (resolve) {\n    var resolved = vals.map(function (val) {\n      while (val instanceof PromiseSync) {\n        if (val.error) throw Error(val.error);\n        val = val.value;\n      }\n\n      return val;\n    });\n    resolve(resolved);\n  });\n};\n\nPromiseSync.resolve = function (val) {\n  return new PromiseSync(function (resolve) {\n    return resolve(val);\n  });\n};\n\nPromiseSync.reject = function (error) {\n  return new PromiseSync(function (resolve, reject) {\n    return reject(error);\n  });\n};\n\nmodule.exports = PromiseSync;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar handlers = require('./handlers');\n/**\n * The Evaluator takes a Jexl expression tree as generated by the\n * {@link Parser} and calculates its value within a given context. The\n * collection of transforms, context, and a relative context to be used as the\n * root for relative identifiers, are all specific to an Evaluator instance.\n * When any of these things change, a new instance is required.  However, a\n * single instance can be used to simultaneously evaluate many different\n * expressions, and does not have to be reinstantiated for each.\n * @param {{}} grammar A grammar object against which to evaluate the expression\n *      tree\n * @param {{}} [context] A map of variable keys to their values. This will be\n *      accessed to resolve the value of each non-relative identifier. Any\n *      Promise values will be passed to the expression as their resolved\n *      value.\n * @param {{}|Array<{}|Array>} [relativeContext] A map or array to be accessed\n *      to resolve the value of a relative identifier.\n * @param {function} promise A constructor for the Promise class to be used;\n *      probably either Promise or PromiseSync.\n */\n\n\nvar Evaluator = /*#__PURE__*/function () {\n  function Evaluator(grammar, context, relativeContext) {\n    var promise = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Promise;\n    (0, _classCallCheck2.default)(this, Evaluator);\n    this._grammar = grammar;\n    this._context = context || {};\n    this._relContext = relativeContext || this._context;\n    this.Promise = promise;\n  }\n  /**\n   * Evaluates an expression tree within the configured context.\n   * @param {{}} ast An expression tree object\n   * @returns {Promise<*>} resolves with the resulting value of the expression.\n   */\n\n\n  (0, _createClass2.default)(Evaluator, [{\n    key: \"eval\",\n    value: function _eval(ast) {\n      var _this = this;\n\n      return this.Promise.resolve().then(function () {\n        return handlers[ast.type].call(_this, ast);\n      });\n    }\n    /**\n     * Simultaneously evaluates each expression within an array, and delivers the\n     * response as an array with the resulting values at the same indexes as their\n     * originating expressions.\n     * @param {Array<string>} arr An array of expression strings to be evaluated\n     * @returns {Promise<Array<{}>>} resolves with the result array\n     */\n\n  }, {\n    key: \"evalArray\",\n    value: function evalArray(arr) {\n      var _this2 = this;\n\n      return this.Promise.all(arr.map(function (elem) {\n        return _this2.eval(elem);\n      }));\n    }\n    /**\n     * Simultaneously evaluates each expression within a map, and delivers the\n     * response as a map with the same keys, but with the evaluated result for each\n     * as their value.\n     * @param {{}} map A map of expression names to expression trees to be\n     *      evaluated\n     * @returns {Promise<{}>} resolves with the result map.\n     */\n\n  }, {\n    key: \"evalMap\",\n    value: function evalMap(map) {\n      var _this3 = this;\n\n      var keys = Object.keys(map);\n      var result = {};\n      var asts = keys.map(function (key) {\n        return _this3.eval(map[key]);\n      });\n      return this.Promise.all(asts).then(function (vals) {\n        vals.forEach(function (val, idx) {\n          result[keys[idx]] = val;\n        });\n        return result;\n      });\n    }\n    /**\n     * Applies a filter expression with relative identifier elements to a subject.\n     * The intent is for the subject to be an array of subjects that will be\n     * individually used as the relative context against the provided expression\n     * tree. Only the elements whose expressions result in a truthy value will be\n     * included in the resulting array.\n     *\n     * If the subject is not an array of values, it will be converted to a single-\n     * element array before running the filter.\n     * @param {*} subject The value to be filtered usually an array. If this value is\n     *      not an array, it will be converted to an array with this value as the\n     *      only element.\n     * @param {{}} expr The expression tree to run against each subject. If the\n     *      tree evaluates to a truthy result, then the value will be included in\n     *      the returned array otherwise, it will be eliminated.\n     * @returns {Promise<Array>} resolves with an array of values that passed the\n     *      expression filter.\n     * @private\n     */\n\n  }, {\n    key: \"_filterRelative\",\n    value: function _filterRelative(subject, expr) {\n      var _this4 = this;\n\n      var promises = [];\n\n      if (!Array.isArray(subject)) {\n        subject = subject === undefined ? [] : [subject];\n      }\n\n      subject.forEach(function (elem) {\n        var evalInst = new Evaluator(_this4._grammar, _this4._context, elem, _this4.Promise);\n        promises.push(evalInst.eval(expr));\n      });\n      return this.Promise.all(promises).then(function (values) {\n        var results = [];\n        values.forEach(function (value, idx) {\n          if (value) {\n            results.push(subject[idx]);\n          }\n        });\n        return results;\n      });\n    }\n    /**\n     * Applies a static filter expression to a subject value.  If the filter\n     * expression evaluates to boolean true, the subject is returned if false,\n     * undefined.\n     *\n     * For any other resulting value of the expression, this function will attempt\n     * to respond with the property at that name or index of the subject.\n     * @param {*} subject The value to be filtered.  Usually an Array (for which\n     *      the expression would generally resolve to a numeric index) or an\n     *      Object (for which the expression would generally resolve to a string\n     *      indicating a property name)\n     * @param {{}} expr The expression tree to run against the subject\n     * @returns {Promise<*>} resolves with the value of the drill-down.\n     * @private\n     */\n\n  }, {\n    key: \"_filterStatic\",\n    value: function _filterStatic(subject, expr) {\n      return this.eval(expr).then(function (res) {\n        if (typeof res === 'boolean') {\n          return res ? subject : undefined;\n        }\n\n        return subject[res];\n      });\n    }\n  }]);\n  return Evaluator;\n}();\n\nmodule.exports = Evaluator;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar poolNames = {\n  functions: 'Jexl Function',\n  transforms: 'Transform'\n};\n/**\n * Evaluates an ArrayLiteral by returning its value, with each element\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n *      ObjectLiteral as the top node\n * @returns {Promise.<[]>} resolves to a map contained evaluated values.\n * @private\n */\n\nexports.ArrayLiteral = function (ast) {\n  return this.evalArray(ast.value);\n};\n/**\n * Evaluates a BinaryExpression node by running the Grammar's evaluator for\n * the given operator. Note that binary expressions support two types of\n * evaluators: `eval` is called with the left and right operands pre-evaluated.\n * `evalOnDemand`, if it exists, will be called with the left and right operands\n * each individually wrapped in an object with an \"eval\" function that returns\n * a promise with the resulting value. This allows the binary expression to\n * evaluate the operands conditionally.\n * @param {{type: 'BinaryExpression', operator: <string>, left: {},\n *      right: {}}} ast An expression tree with a BinaryExpression as the top\n *      node\n * @returns {Promise<*>} resolves with the value of the BinaryExpression.\n * @private\n */\n\n\nexports.BinaryExpression = function (ast) {\n  var _this = this;\n\n  var grammarOp = this._grammar.elements[ast.operator];\n\n  if (grammarOp.evalOnDemand) {\n    var wrap = function wrap(subAst) {\n      return {\n        eval: function _eval() {\n          return _this.eval(subAst);\n        }\n      };\n    };\n\n    return grammarOp.evalOnDemand(wrap(ast.left), wrap(ast.right));\n  }\n\n  return this.Promise.all([this.eval(ast.left), this.eval(ast.right)]).then(function (arr) {\n    return grammarOp.eval(arr[0], arr[1]);\n  });\n};\n/**\n * Evaluates a ConditionalExpression node by first evaluating its test branch,\n * and resolving with the consequent branch if the test is truthy, or the\n * alternate branch if it is not. If there is no consequent branch, the test\n * result will be used instead.\n * @param {{type: 'ConditionalExpression', test: {}, consequent: {},\n *      alternate: {}}} ast An expression tree with a ConditionalExpression as\n *      the top node\n * @private\n */\n\n\nexports.ConditionalExpression = function (ast) {\n  var _this2 = this;\n\n  return this.eval(ast.test).then(function (res) {\n    if (res) {\n      if (ast.consequent) {\n        return _this2.eval(ast.consequent);\n      }\n\n      return res;\n    }\n\n    return _this2.eval(ast.alternate);\n  });\n};\n/**\n * Evaluates a FilterExpression by applying it to the subject value.\n * @param {{type: 'FilterExpression', relative: <boolean>, expr: {},\n *      subject: {}}} ast An expression tree with a FilterExpression as the top\n *      node\n * @returns {Promise<*>} resolves with the value of the FilterExpression.\n * @private\n */\n\n\nexports.FilterExpression = function (ast) {\n  var _this3 = this;\n\n  return this.eval(ast.subject).then(function (subject) {\n    if (ast.relative) {\n      return _this3._filterRelative(subject, ast.expr);\n    }\n\n    return _this3._filterStatic(subject, ast.expr);\n  });\n};\n/**\n * Evaluates an Identifier by either stemming from the evaluated 'from'\n * expression tree or accessing the context provided when this Evaluator was\n * constructed.\n * @param {{type: 'Identifier', value: <string>, [from]: {}}} ast An expression\n *      tree with an Identifier as the top node\n * @returns {Promise<*>|*} either the identifier's value, or a Promise that\n *      will resolve with the identifier's value.\n * @private\n */\n\n\nexports.Identifier = function (ast) {\n  if (!ast.from) {\n    return ast.relative ? this._relContext[ast.value] : this._context[ast.value];\n  }\n\n  return this.eval(ast.from).then(function (context) {\n    if (context === undefined || context === null) {\n      return undefined;\n    }\n\n    if (Array.isArray(context)) {\n      context = context[0];\n    }\n\n    return context[ast.value];\n  });\n};\n/**\n * Evaluates a Literal by returning its value property.\n * @param {{type: 'Literal', value: <string|number|boolean>}} ast An expression\n *      tree with a Literal as its only node\n * @returns {string|number|boolean} The value of the Literal node\n * @private\n */\n\n\nexports.Literal = function (ast) {\n  return ast.value;\n};\n/**\n * Evaluates an ObjectLiteral by returning its value, with each key\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n *      ObjectLiteral as the top node\n * @returns {Promise<{}>} resolves to a map contained evaluated values.\n * @private\n */\n\n\nexports.ObjectLiteral = function (ast) {\n  return this.evalMap(ast.value);\n};\n/**\n * Evaluates a FunctionCall node by applying the supplied arguments to a\n * function defined in one of the grammar's function pools.\n * @param {{type: 'FunctionCall', name: <string>}} ast An\n *      expression tree with a FunctionCall as the top node\n * @returns {Promise<*>|*} the value of the function call, or a Promise that\n *      will resolve with the resulting value.\n * @private\n */\n\n\nexports.FunctionCall = function (ast) {\n  var poolName = poolNames[ast.pool];\n\n  if (!poolName) {\n    throw new Error(\"Corrupt AST: Pool '\".concat(ast.pool, \"' not found\"));\n  }\n\n  var pool = this._grammar[ast.pool];\n  var func = pool[ast.name];\n\n  if (!func) {\n    throw new Error(\"\".concat(poolName, \" \").concat(ast.name, \" is not defined.\"));\n  }\n\n  return this.evalArray(ast.args || []).then(function (args) {\n    return func.apply(void 0, (0, _toConsumableArray2.default)(args));\n  });\n};\n/**\n * Evaluates a Unary expression by passing the right side through the\n * operator's eval function.\n * @param {{type: 'UnaryExpression', operator: <string>, right: {}}} ast An\n *      expression tree with a UnaryExpression as the top node\n * @returns {Promise<*>} resolves with the value of the UnaryExpression.\n * @constructor\n */\n\n\nexports.UnaryExpression = function (ast) {\n  var _this4 = this;\n\n  return this.eval(ast.right).then(function (right) {\n    return _this4._grammar.elements[ast.operator].eval(right);\n  });\n};","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\n\n/* eslint eqeqeq:0 */\nexports.getGrammar = function () {\n  return {\n    /**\n     * A map of all expression elements to their properties. Note that changes\n     * here may require changes in the Lexer or Parser.\n     * @type {{}}\n     */\n    elements: {\n      '.': {\n        type: 'dot'\n      },\n      '[': {\n        type: 'openBracket'\n      },\n      ']': {\n        type: 'closeBracket'\n      },\n      '|': {\n        type: 'pipe'\n      },\n      '{': {\n        type: 'openCurl'\n      },\n      '}': {\n        type: 'closeCurl'\n      },\n      ':': {\n        type: 'colon'\n      },\n      ',': {\n        type: 'comma'\n      },\n      '(': {\n        type: 'openParen'\n      },\n      ')': {\n        type: 'closeParen'\n      },\n      '?': {\n        type: 'question'\n      },\n      '+': {\n        type: 'binaryOp',\n        precedence: 30,\n        eval: function _eval(left, right) {\n          return left + right;\n        }\n      },\n      '-': {\n        type: 'binaryOp',\n        precedence: 30,\n        eval: function _eval(left, right) {\n          return left - right;\n        }\n      },\n      '*': {\n        type: 'binaryOp',\n        precedence: 40,\n        eval: function _eval(left, right) {\n          return left * right;\n        }\n      },\n      '/': {\n        type: 'binaryOp',\n        precedence: 40,\n        eval: function _eval(left, right) {\n          return left / right;\n        }\n      },\n      '//': {\n        type: 'binaryOp',\n        precedence: 40,\n        eval: function _eval(left, right) {\n          return Math.floor(left / right);\n        }\n      },\n      '%': {\n        type: 'binaryOp',\n        precedence: 50,\n        eval: function _eval(left, right) {\n          return left % right;\n        }\n      },\n      '^': {\n        type: 'binaryOp',\n        precedence: 50,\n        eval: function _eval(left, right) {\n          return Math.pow(left, right);\n        }\n      },\n      '==': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left == right;\n        }\n      },\n      '!=': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left != right;\n        }\n      },\n      '>': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left > right;\n        }\n      },\n      '>=': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left >= right;\n        }\n      },\n      '<': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left < right;\n        }\n      },\n      '<=': {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          return left <= right;\n        }\n      },\n      '&&': {\n        type: 'binaryOp',\n        precedence: 10,\n        evalOnDemand: function evalOnDemand(left, right) {\n          return left.eval().then(function (leftVal) {\n            if (!leftVal) return leftVal;\n            return right.eval();\n          });\n        }\n      },\n      '||': {\n        type: 'binaryOp',\n        precedence: 10,\n        evalOnDemand: function evalOnDemand(left, right) {\n          return left.eval().then(function (leftVal) {\n            if (leftVal) return leftVal;\n            return right.eval();\n          });\n        }\n      },\n      in: {\n        type: 'binaryOp',\n        precedence: 20,\n        eval: function _eval(left, right) {\n          if (typeof right === 'string') {\n            return right.indexOf(left) !== -1;\n          }\n\n          if (Array.isArray(right)) {\n            return right.some(function (elem) {\n              return elem === left;\n            });\n          }\n\n          return false;\n        }\n      },\n      '!': {\n        type: 'unaryOp',\n        precedence: Infinity,\n        eval: function _eval(right) {\n          return !right;\n        }\n      }\n    },\n\n    /**\n     * A map of function names to javascript functions. A Jexl function\n     * takes zero ore more arguemnts:\n     *\n     *     - {*} ...args: A variable number of arguments passed to this function.\n     *       All of these are pre-evaluated to their actual values before calling\n     *       the function.\n     *\n     * The Jexl function should return either the transformed value, or\n     * a Promises/A+ Promise object that resolves with the value and rejects\n     * or throws only when an unrecoverable error occurs. Functions should\n     * generally return undefined when they don't make sense to be used on the\n     * given value type, rather than throw/reject. An error is only\n     * appropriate when the function would normally return a value, but\n     * cannot due to some other failure.\n     */\n    functions: {},\n\n    /**\n     * A map of transform names to transform functions. A transform function\n     * takes one ore more arguemnts:\n     *\n     *     - {*} val: A value to be transformed\n     *     - {*} ...args: A variable number of arguments passed to this transform.\n     *       All of these are pre-evaluated to their actual values before calling\n     *       the function.\n     *\n     * The transform function should return either the transformed value, or\n     * a Promises/A+ Promise object that resolves with the value and rejects\n     * or throws only when an unrecoverable error occurs. Transforms should\n     * generally return undefined when they don't make sense to be used on the\n     * given value type, rather than throw/reject. An error is only\n     * appropriate when the transform would normally return a value, but\n     * cannot due to some other failure.\n     */\n    transforms: {}\n  };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar handlers = require('./handlers');\n\nvar states = require('./states').states;\n/**\n * The Parser is a state machine that converts tokens from the {@link Lexer}\n * into an Abstract Syntax Tree (AST), capable of being evaluated in any\n * context by the {@link Evaluator}.  The Parser expects that all tokens\n * provided to it are legal and typed properly according to the grammar, but\n * accepts that the tokens may still be in an invalid order or in some other\n * unparsable configuration that requires it to throw an Error.\n * @param {{}} grammar The grammar object to use to parse Jexl strings\n * @param {string} [prefix] A string prefix to prepend to the expression string\n *      for error messaging purposes.  This is useful for when a new Parser is\n *      instantiated to parse an subexpression, as the parent Parser's\n *      expression string thus far can be passed for a more user-friendly\n *      error message.\n * @param {{}} [stopMap] A mapping of token types to any truthy value. When the\n *      token type is encountered, the parser will return the mapped value\n *      instead of boolean false.\n */\n\n\nvar Parser = /*#__PURE__*/function () {\n  function Parser(grammar, prefix, stopMap) {\n    (0, _classCallCheck2.default)(this, Parser);\n    this._grammar = grammar;\n    this._state = 'expectOperand';\n    this._tree = null;\n    this._exprStr = prefix || '';\n    this._relative = false;\n    this._stopMap = stopMap || {};\n  }\n  /**\n   * Processes a new token into the AST and manages the transitions of the state\n   * machine.\n   * @param {{type: <string>}} token A token object, as provided by the\n   *      {@link Lexer#tokenize} function.\n   * @throws {Error} if a token is added when the Parser has been marked as\n   *      complete by {@link #complete}, or if an unexpected token type is added.\n   * @returns {boolean|*} the stopState value if this parser encountered a token\n   *      in the stopState mapb false if tokens can continue.\n   */\n\n\n  (0, _createClass2.default)(Parser, [{\n    key: \"addToken\",\n    value: function addToken(token) {\n      if (this._state === 'complete') {\n        throw new Error('Cannot add a new token to a completed Parser');\n      }\n\n      var state = states[this._state];\n      var startExpr = this._exprStr;\n      this._exprStr += token.raw;\n\n      if (state.subHandler) {\n        if (!this._subParser) {\n          this._startSubExpression(startExpr);\n        }\n\n        var stopState = this._subParser.addToken(token);\n\n        if (stopState) {\n          this._endSubExpression();\n\n          if (this._parentStop) return stopState;\n          this._state = stopState;\n        }\n      } else if (state.tokenTypes[token.type]) {\n        var typeOpts = state.tokenTypes[token.type];\n        var handleFunc = handlers[token.type];\n\n        if (typeOpts.handler) {\n          handleFunc = typeOpts.handler;\n        }\n\n        if (handleFunc) {\n          handleFunc.call(this, token);\n        }\n\n        if (typeOpts.toState) {\n          this._state = typeOpts.toState;\n        }\n      } else if (this._stopMap[token.type]) {\n        return this._stopMap[token.type];\n      } else {\n        throw new Error(\"Token \".concat(token.raw, \" (\").concat(token.type, \") unexpected in expression: \").concat(this._exprStr));\n      }\n\n      return false;\n    }\n    /**\n     * Processes an array of tokens iteratively through the {@link #addToken}\n     * function.\n     * @param {Array<{type: <string>}>} tokens An array of tokens, as provided by\n     *      the {@link Lexer#tokenize} function.\n     */\n\n  }, {\n    key: \"addTokens\",\n    value: function addTokens(tokens) {\n      tokens.forEach(this.addToken, this);\n    }\n    /**\n     * Marks this Parser instance as completed and retrieves the full AST.\n     * @returns {{}|null} a full expression tree, ready for evaluation by the\n     *      {@link Evaluator#eval} function, or null if no tokens were passed to\n     *      the parser before complete was called\n     * @throws {Error} if the parser is not in a state where it's legal to end\n     *      the expression, indicating that the expression is incomplete\n     */\n\n  }, {\n    key: \"complete\",\n    value: function complete() {\n      if (this._cursor && !states[this._state].completable) {\n        throw new Error(\"Unexpected end of expression: \".concat(this._exprStr));\n      }\n\n      if (this._subParser) {\n        this._endSubExpression();\n      }\n\n      this._state = 'complete';\n      return this._cursor ? this._tree : null;\n    }\n    /**\n     * Indicates whether the expression tree contains a relative path identifier.\n     * @returns {boolean} true if a relative identifier exists false otherwise.\n     */\n\n  }, {\n    key: \"isRelative\",\n    value: function isRelative() {\n      return this._relative;\n    }\n    /**\n     * Ends a subexpression by completing the subParser and passing its result\n     * to the subHandler configured in the current state.\n     * @private\n     */\n\n  }, {\n    key: \"_endSubExpression\",\n    value: function _endSubExpression() {\n      states[this._state].subHandler.call(this, this._subParser.complete());\n\n      this._subParser = null;\n    }\n    /**\n     * Places a new tree node at the current position of the cursor (to the 'right'\n     * property) and then advances the cursor to the new node. This function also\n     * handles setting the parent of the new node.\n     * @param {{type: <string>}} node A node to be added to the AST\n     * @private\n     */\n\n  }, {\n    key: \"_placeAtCursor\",\n    value: function _placeAtCursor(node) {\n      if (!this._cursor) {\n        this._tree = node;\n      } else {\n        this._cursor.right = node;\n\n        this._setParent(node, this._cursor);\n      }\n\n      this._cursor = node;\n    }\n    /**\n     * Places a tree node before the current position of the cursor, replacing\n     * the node that the cursor currently points to. This should only be called in\n     * cases where the cursor is known to exist, and the provided node already\n     * contains a pointer to what's at the cursor currently.\n     * @param {{type: <string>}} node A node to be added to the AST\n     * @private\n     */\n\n  }, {\n    key: \"_placeBeforeCursor\",\n    value: function _placeBeforeCursor(node) {\n      this._cursor = this._cursor._parent;\n\n      this._placeAtCursor(node);\n    }\n    /**\n     * Sets the parent of a node by creating a non-enumerable _parent property\n     * that points to the supplied parent argument.\n     * @param {{type: <string>}} node A node of the AST on which to set a new\n     *      parent\n     * @param {{type: <string>}} parent An existing node of the AST to serve as the\n     *      parent of the new node\n     * @private\n     */\n\n  }, {\n    key: \"_setParent\",\n    value: function _setParent(node, parent) {\n      Object.defineProperty(node, '_parent', {\n        value: parent,\n        writable: true\n      });\n    }\n    /**\n     * Prepares the Parser to accept a subexpression by (re)instantiating the\n     * subParser.\n     * @param {string} [exprStr] The expression string to prefix to the new Parser\n     * @private\n     */\n\n  }, {\n    key: \"_startSubExpression\",\n    value: function _startSubExpression(exprStr) {\n      var endStates = states[this._state].endStates;\n\n      if (!endStates) {\n        this._parentStop = true;\n        endStates = this._stopMap;\n      }\n\n      this._subParser = new Parser(this._grammar, exprStr, endStates);\n    }\n  }]);\n  return Parser;\n}();\n\nmodule.exports = Parser;","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\n\n/**\n * Handles a subexpression that's used to define a transform argument's value.\n * @param {{type: <string>}} ast The subexpression tree\n */\nexports.argVal = function (ast) {\n  if (ast) this._cursor.args.push(ast);\n};\n/**\n * Handles new array literals by adding them as a new node in the AST,\n * initialized with an empty array.\n */\n\n\nexports.arrayStart = function () {\n  this._placeAtCursor({\n    type: 'ArrayLiteral',\n    value: []\n  });\n};\n/**\n * Handles a subexpression representing an element of an array literal.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.arrayVal = function (ast) {\n  if (ast) {\n    this._cursor.value.push(ast);\n  }\n};\n/**\n * Handles tokens of type 'binaryOp', indicating an operation that has two\n * inputs: a left side and a right side.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.binaryOp = function (token) {\n  var precedence = this._grammar.elements[token.value].precedence || 0;\n  var parent = this._cursor._parent;\n\n  while (parent && parent.operator && this._grammar.elements[parent.operator].precedence >= precedence) {\n    this._cursor = parent;\n    parent = parent._parent;\n  }\n\n  var node = {\n    type: 'BinaryExpression',\n    operator: token.value,\n    left: this._cursor\n  };\n\n  this._setParent(this._cursor, node);\n\n  this._cursor = parent;\n\n  this._placeAtCursor(node);\n};\n/**\n * Handles successive nodes in an identifier chain.  More specifically, it\n * sets values that determine how the following identifier gets placed in the\n * AST.\n */\n\n\nexports.dot = function () {\n  this._nextIdentEncapsulate = this._cursor && this._cursor.type !== 'UnaryExpression' && (this._cursor.type !== 'BinaryExpression' || this._cursor.type === 'BinaryExpression' && this._cursor.right);\n  this._nextIdentRelative = !this._cursor || this._cursor && !this._nextIdentEncapsulate;\n\n  if (this._nextIdentRelative) {\n    this._relative = true;\n  }\n};\n/**\n * Handles a subexpression used for filtering an array returned by an\n * identifier chain.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.filter = function (ast) {\n  this._placeBeforeCursor({\n    type: 'FilterExpression',\n    expr: ast,\n    relative: this._subParser.isRelative(),\n    subject: this._cursor\n  });\n};\n/**\n * Handles identifier tokens when used to indicate the name of a function to\n * be called.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.functionCall = function () {\n  this._placeBeforeCursor({\n    type: 'FunctionCall',\n    name: this._cursor.value,\n    args: [],\n    pool: 'functions'\n  });\n};\n/**\n * Handles identifier tokens by adding them as a new node in the AST.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.identifier = function (token) {\n  var node = {\n    type: 'Identifier',\n    value: token.value\n  };\n\n  if (this._nextIdentEncapsulate) {\n    node.from = this._cursor;\n\n    this._placeBeforeCursor(node);\n\n    this._nextIdentEncapsulate = false;\n  } else {\n    if (this._nextIdentRelative) {\n      node.relative = true;\n      this._nextIdentRelative = false;\n    }\n\n    this._placeAtCursor(node);\n  }\n};\n/**\n * Handles literal values, such as strings, booleans, and numerics, by adding\n * them as a new node in the AST.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.literal = function (token) {\n  this._placeAtCursor({\n    type: 'Literal',\n    value: token.value\n  });\n};\n/**\n * Queues a new object literal key to be written once a value is collected.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.objKey = function (token) {\n  this._curObjKey = token.value;\n};\n/**\n * Handles new object literals by adding them as a new node in the AST,\n * initialized with an empty object.\n */\n\n\nexports.objStart = function () {\n  this._placeAtCursor({\n    type: 'ObjectLiteral',\n    value: {}\n  });\n};\n/**\n * Handles an object value by adding its AST to the queued key on the object\n * literal node currently at the cursor.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.objVal = function (ast) {\n  this._cursor.value[this._curObjKey] = ast;\n};\n/**\n * Handles traditional subexpressions, delineated with the groupStart and\n * groupEnd elements.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.subExpression = function (ast) {\n  this._placeAtCursor(ast);\n};\n/**\n * Handles a completed alternate subexpression of a ternary operator.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.ternaryEnd = function (ast) {\n  this._cursor.alternate = ast;\n};\n/**\n * Handles a completed consequent subexpression of a ternary operator.\n * @param {{type: <string>}} ast The subexpression tree\n */\n\n\nexports.ternaryMid = function (ast) {\n  this._cursor.consequent = ast;\n};\n/**\n * Handles the start of a new ternary expression by encapsulating the entire\n * AST in a ConditionalExpression node, and using the existing tree as the\n * test element.\n */\n\n\nexports.ternaryStart = function () {\n  this._tree = {\n    type: 'ConditionalExpression',\n    test: this._tree\n  };\n  this._cursor = this._tree;\n};\n/**\n * Handles identifier tokens when used to indicate the name of a transform to\n * be applied.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.transform = function (token) {\n  this._placeBeforeCursor({\n    type: 'FunctionCall',\n    name: token.value,\n    args: [this._cursor],\n    pool: 'transforms'\n  });\n};\n/**\n * Handles token of type 'unaryOp', indicating that the operation has only\n * one input: a right side.\n * @param {{type: <string>}} token A token object\n */\n\n\nexports.unaryOp = function (token) {\n  this._placeAtCursor({\n    type: 'UnaryExpression',\n    operator: token.value\n  });\n};","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar h = require('./handlers');\n/**\n * A mapping of all states in the finite state machine to a set of instructions\n * for handling or transitioning into other states. Each state can be handled\n * in one of two schemes: a tokenType map, or a subHandler.\n *\n * Standard expression elements are handled through the tokenType object. This\n * is an object map of all legal token types to encounter in this state (and\n * any unexpected token types will generate a thrown error) to an options\n * object that defines how they're handled.  The available options are:\n *\n *      {string} toState: The name of the state to which to transition\n *          immediately after handling this token\n *      {string} handler: The handler function to call when this token type is\n *          encountered in this state.  If omitted, the default handler\n *          matching the token's \"type\" property will be called. If the handler\n *          function does not exist, no call will be made and no error will be\n *          generated.  This is useful for tokens whose sole purpose is to\n *          transition to other states.\n *\n * States that consume a subexpression should define a subHandler, the\n * function to be called with an expression tree argument when the\n * subexpression is complete. Completeness is determined through the\n * endStates object, which maps tokens on which an expression should end to the\n * state to which to transition once the subHandler function has been called.\n *\n * Additionally, any state in which it is legal to mark the AST as completed\n * should have a 'completable' property set to boolean true.  Attempting to\n * call {@link Parser#complete} in any state without this property will result\n * in a thrown Error.\n *\n * @type {{}}\n */\n\n\nexports.states = {\n  expectOperand: {\n    tokenTypes: {\n      literal: {\n        toState: 'expectBinOp'\n      },\n      identifier: {\n        toState: 'identifier'\n      },\n      unaryOp: {},\n      openParen: {\n        toState: 'subExpression'\n      },\n      openCurl: {\n        toState: 'expectObjKey',\n        handler: h.objStart\n      },\n      dot: {\n        toState: 'traverse'\n      },\n      openBracket: {\n        toState: 'arrayVal',\n        handler: h.arrayStart\n      }\n    }\n  },\n  expectBinOp: {\n    tokenTypes: {\n      binaryOp: {\n        toState: 'expectOperand'\n      },\n      pipe: {\n        toState: 'expectTransform'\n      },\n      dot: {\n        toState: 'traverse'\n      },\n      question: {\n        toState: 'ternaryMid',\n        handler: h.ternaryStart\n      }\n    },\n    completable: true\n  },\n  expectTransform: {\n    tokenTypes: {\n      identifier: {\n        toState: 'postTransform',\n        handler: h.transform\n      }\n    }\n  },\n  expectObjKey: {\n    tokenTypes: {\n      identifier: {\n        toState: 'expectKeyValSep',\n        handler: h.objKey\n      },\n      closeCurl: {\n        toState: 'expectBinOp'\n      }\n    }\n  },\n  expectKeyValSep: {\n    tokenTypes: {\n      colon: {\n        toState: 'objVal'\n      }\n    }\n  },\n  postTransform: {\n    tokenTypes: {\n      openParen: {\n        toState: 'argVal'\n      },\n      binaryOp: {\n        toState: 'expectOperand'\n      },\n      dot: {\n        toState: 'traverse'\n      },\n      openBracket: {\n        toState: 'filter'\n      },\n      pipe: {\n        toState: 'expectTransform'\n      }\n    },\n    completable: true\n  },\n  postArgs: {\n    tokenTypes: {\n      binaryOp: {\n        toState: 'expectOperand'\n      },\n      dot: {\n        toState: 'traverse'\n      },\n      openBracket: {\n        toState: 'filter'\n      },\n      pipe: {\n        toState: 'expectTransform'\n      }\n    },\n    completable: true\n  },\n  identifier: {\n    tokenTypes: {\n      binaryOp: {\n        toState: 'expectOperand'\n      },\n      dot: {\n        toState: 'traverse'\n      },\n      openBracket: {\n        toState: 'filter'\n      },\n      openParen: {\n        toState: 'argVal',\n        handler: h.functionCall\n      },\n      pipe: {\n        toState: 'expectTransform'\n      },\n      question: {\n        toState: 'ternaryMid',\n        handler: h.ternaryStart\n      }\n    },\n    completable: true\n  },\n  traverse: {\n    tokenTypes: {\n      identifier: {\n        toState: 'identifier'\n      }\n    }\n  },\n  filter: {\n    subHandler: h.filter,\n    endStates: {\n      closeBracket: 'identifier'\n    }\n  },\n  subExpression: {\n    subHandler: h.subExpression,\n    endStates: {\n      closeParen: 'expectBinOp'\n    }\n  },\n  argVal: {\n    subHandler: h.argVal,\n    endStates: {\n      comma: 'argVal',\n      closeParen: 'postArgs'\n    }\n  },\n  objVal: {\n    subHandler: h.objVal,\n    endStates: {\n      comma: 'expectObjKey',\n      closeCurl: 'expectBinOp'\n    }\n  },\n  arrayVal: {\n    subHandler: h.arrayVal,\n    endStates: {\n      comma: 'arrayVal',\n      closeBracket: 'expectBinOp'\n    }\n  },\n  ternaryMid: {\n    subHandler: h.ternaryMid,\n    endStates: {\n      colon: 'ternaryEnd'\n    }\n  },\n  ternaryEnd: {\n    subHandler: h.ternaryEnd,\n    completable: true\n  }\n};","/**\n * @callback listener\n * @param {*} data Any data could be passed to event listener\n */\nexport default class EventEmitter {\n    constructor() {\n        this.events = Object.create(null);\n    }\n    /**\n     * Add listener to event. No context provided, use Function.prototype.bind(), arrow function or closure instead.\n     * @param  {string}   event    Event name\n     * @param  {listener} listener Event listener\n     * @return {Emitter}           Return self\n     * @example\n     *\n     * function listener (data) {\n     *  console.log(data)\n     * }\n     *\n     * emitter.on('event', listener)\n     */\n    on(event, listener) {\n        var listeners = this.events[event];\n        if (!listeners) {\n            listeners = [];\n            this.events[event] = listeners;\n        }\n        listeners.push(listener);\n        return this;\n    }\n    /**\n     * Remove listener from event.\n     * @param  {string}   event    Event name\n     * @param  {listener} listener Event listener\n     * @return {Emitter}           Return self\n     * @example\n     *\n     * emitter.off('event', listener)\n     */\n    off(event, listener) {\n        var listeners = this.events[event];\n        if (listeners) {\n            var idx = listeners.indexOf(listener);\n            if (idx !== -1) {\n                listeners.splice(idx, 1);\n            }\n        }\n        return this;\n    }\n    /**\n     * Trigger an event. Multiple arguments not supported, use destructuring instead.\n     * @param  {string}  event Event name\n     * @param  {*}       data  Event data\n     * @return {Emitter}       Return self\n     * @example\n     *\n     * emitter.emit('event', { foo: 'bar' })\n     */\n    emit(event, data) {\n        var listeners = this.events[event];\n        if (listeners) {\n            for (var i = 0; i < listeners.length; i++) {\n                listeners[i](data);\n            }\n        }\n        return this;\n    }\n}\n","/**\n * Ensure that passed value is object\n * @param object Value to check\n * @returns Check result\n */\nexport function isObject(object) {\n    return Object(object) === object;\n}\n/**\n * Ensure that passed value could be transfer\n * @param object - Value to check\n * @returns Check result\n */\nexport function isTransferable(object) {\n    try {\n        return (object instanceof ArrayBuffer ||\n            object instanceof ImageBitmap ||\n            object instanceof OffscreenCanvas ||\n            object instanceof MessagePort);\n    }\n    catch (error) {\n        return false;\n    }\n}\n/**\n * Recursively peek transferables from passed data\n * @param data - Data source\n * @param  {Array}         [result=[]] Dist array\n * @returns  List of transferables objects\n */\nexport function peekTransferables(data, result = []) {\n    if (isTransferable(data)) {\n        result.push(data);\n    }\n    else if (isObject(data) && !('containsNoTransferables' in data)) {\n        for (var i in data) {\n            peekTransferables(data[i], result);\n        }\n    }\n    return result;\n}\n/**\n * @returns Uniq uid\n */\nexport function uuid() {\n    return Math.floor((1 + Math.random()) * 1e10).toString(16);\n}\n","import RpcClient from './client';\nimport RpcServer from './server';\nexport default {\n    Client: RpcClient,\n    Server: RpcServer\n};\n","import EventEmitter from './ee';\nimport { peekTransferables, uuid } from './utils';\nimport { deserializeError } from 'serialize-error';\nexport default class RpcClient extends EventEmitter {\n    /**\n     * Client could be connected to several workers for better CPU utilization.\n     * Requests are sent to an exact worker by round robin algorithm.\n     * @param options - Rpc Client options\n     */\n    constructor({ workers }) {\n        super();\n        this.idx = 0;\n        this.calls = {};\n        this.timeouts = {};\n        this.errors = {};\n        this.workers = [...workers];\n        this.handler = this.handler.bind(this);\n        this.catch = this.catch.bind(this);\n        this.init();\n    }\n    /**\n     * Subscribtion to web workers events\n     */\n    init() {\n        this.workers.forEach(this.listen, this);\n    }\n    /**\n     * Subsrciption to exact worker\n     * @param worker - Server worker\n     */\n    listen(worker) {\n        worker.addEventListener('message', this.handler);\n        worker.addEventListener('error', this.catch);\n    }\n    /**\n     * Message handler\n     * @param e - Event object\n     */\n    handler(e) {\n        var { uid, error, method, eventName, data, libRpc } = e.data;\n        if (!libRpc)\n            return; // ignore non-librpc messages\n        if (error) {\n            this.reject(uid, error);\n        }\n        else if (method) {\n            this.resolve(uid, data);\n        }\n        else if (eventName) {\n            this.emit(eventName, data);\n        }\n    }\n    /**\n     * Error handler\n     * https://www.nczonline.net/blog/2009/08/25/web-workers-errors-and-debugging/\n     * @param options - Error handler options\n     */\n    catch({ message, lineno, filename, libRpc }) {\n        if (libRpc) {\n            this.emit('error', {\n                message,\n                lineno,\n                filename,\n            });\n        }\n    }\n    /**\n     * Handle remote procedure call error\n     * @param uid - Remote call uid\n     * @param error - Error message\n     */\n    reject(uid, error) {\n        if (this.errors[uid]) {\n            this.errors[uid](deserializeError(error));\n            this.clear(uid);\n        }\n    }\n    /**\n     * Handle remote procedure call response\n     * @param uid - Remote call uid\n     * @param data - Response data\n     */\n    resolve(uid, data) {\n        if (this.calls[uid]) {\n            this.calls[uid](data);\n            this.clear(uid);\n        }\n    }\n    /**\n     * Clear inner references to remote call\n     * @param uid - Remote call uid\n     */\n    clear(uid) {\n        clearTimeout(this.timeouts[uid]);\n        delete this.timeouts[uid];\n        delete this.calls[uid];\n        delete this.errors[uid];\n    }\n    /**\n     * Remote procedure call. Only ArrayBuffers will be transferred automatically (not TypedArrays).\n     * Error would be thrown, if:\n     * - it happened during procedure\n     * - you try to call an unexisted procedure\n     * - procedure execution takes more than timeout\n     * @param method - Remote procedure name\n     * @param data - Request data\n     * @param options - Options\n     * @returns Remote procedure promise\n     */\n    call(method, data, { timeout = 2000 } = {}) {\n        var uid = uuid();\n        var transferables = peekTransferables(data);\n        return new Promise((resolve, reject) => {\n            this.timeouts[uid] = setTimeout(() => this.reject(uid, new Error(`Timeout exceeded for RPC method \"${method}\"`)), timeout);\n            this.calls[uid] = resolve;\n            this.errors[uid] = reject;\n            this.workers[this.idx].postMessage({ method, uid, data, libRpc: true }, transferables);\n            this.idx = ++this.idx % this.workers.length; // round robin\n        });\n    }\n}\n","/* eslint-env serviceworker */\nimport { peekTransferables } from './utils';\nimport { serializeError } from 'serialize-error';\nexport default class RpcServer {\n    /**\n     * Every passed method becomes remote procedure.\n     * It can return Promise if it is needed.\n     * Only ArrayBuffers will be transferred automatically (not TypedArrays).\n     * Errors thrown by procedures would be handled by server.\n     * @param methods - Dictionary of remote procedures\n     * @example\n     *\n     * var server = new RpcServer({\n     *   add ({ x, y }) { return x + y },\n     *   sub ({ x, y }) { return x - y },\n     *   mul ({ x, y }) { return x * y },\n     *   div ({ x, y }) { return x / y },\n     *   pow ({ x, y }) { return x ** y }\n     * })\n     */\n    constructor(methods) {\n        this.methods = methods;\n        this.listen();\n    }\n    /**\n     * Subscribtion to \"message\" events\n     */\n    listen() {\n        self.addEventListener('message', this.handler.bind(this));\n    }\n    /**\n     * Handle \"message\" events, invoke remote procedure if it possible\n     * @param e - Message event object\n     */\n    handler(e) {\n        var { libRpc, method, uid, data } = e.data;\n        if (!libRpc)\n            return; // ignore non-librpc messages\n        if (this.methods[method]) {\n            Promise.resolve(data)\n                .then(this.methods[method])\n                .then(data => this.reply(uid, method, data), error => this.throw(uid, serializeError(error)));\n        }\n        else {\n            this.throw(uid, `Unknown RPC method \"${method}\"`);\n        }\n    }\n    /**\n     * Reply to remote call\n     * @param uid - Unique id of rpc call\n     * @param method - Procedure name\n     * @param data - Call result, could be any data\n     */\n    reply(uid, method, data) {\n        try {\n            var transferables = peekTransferables(data);\n            self.postMessage({ uid, method, data, libRpc: true }, transferables);\n        }\n        catch (e) {\n            this.throw(uid, serializeError(e));\n        }\n    }\n    /**\n     * Throw error\n     * @param uid - Unique id of rpc call\n     * @param error - Error description\n     */\n    throw(uid, error) {\n        self.postMessage({ uid, error, libRpc: true });\n    }\n    /**\n     * Trigger server event\n     * Only ArrayBuffers will be transferred automatically (not TypedArrays).\n     * @param eventName - Event name\n     * @param data - Any data\n     * @example\n     *\n     * setInterval(() => {\n     *   server.emit('update', Date.now())\n     * }, 50)\n     */\n    emit(eventName, data) {\n        var transferables = peekTransferables(data);\n        self.postMessage({ eventName, data, libRpc: true }, transferables);\n    }\n}\n","\nmodule.exports = function load (src, opts, cb) {\n  var head = document.head || document.getElementsByTagName('head')[0]\n  var script = document.createElement('script')\n\n  if (typeof opts === 'function') {\n    cb = opts\n    opts = {}\n  }\n\n  opts = opts || {}\n  cb = cb || function() {}\n\n  script.type = opts.type || 'text/javascript'\n  script.charset = opts.charset || 'utf8';\n  script.async = 'async' in opts ? !!opts.async : true\n  script.src = src\n\n  if (opts.attrs) {\n    setAttributes(script, opts.attrs)\n  }\n\n  if (opts.text) {\n    script.text = '' + opts.text\n  }\n\n  var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n  onend(script, cb)\n\n  // some good legacy browsers (firefox) fail the 'in' detection above\n  // so as a fallback we always set onload\n  // old IE will ignore this and new IE will set onload\n  if (!script.onload) {\n    stdOnEnd(script, cb);\n  }\n\n  head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n  for (var attr in attrs) {\n    script.setAttribute(attr, attrs[attr]);\n  }\n}\n\nfunction stdOnEnd (script, cb) {\n  script.onload = function () {\n    this.onerror = this.onload = null\n    cb(null, script)\n  }\n  script.onerror = function () {\n    // this.onload = null here is necessary\n    // because even IE9 works not like others\n    this.onerror = this.onload = null\n    cb(new Error('Failed to load ' + this.src), script)\n  }\n}\n\nfunction ieOnEnd (script, cb) {\n  script.onreadystatechange = function () {\n    if (this.readyState != 'complete' && this.readyState != 'loaded') return\n    this.onreadystatechange = null\n    cb(null, script) // there is no way to catch loading errors in IE8\n  }\n}\n","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n    throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n    throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n    callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n    if (!reactionScheduler) {\n        reactionScheduler = defaultNoopBatch\n        if (\"production\" !== process.env.NODE_ENV) {\n            console.warn(\n                \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n            )\n        }\n    }\n    configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n    if (\"production\" !== process.env.NODE_ENV) {\n        console.warn(\"[MobX] Deprecated\")\n    }\n\n    return true\n}\n","import { useObserver } from \"./useObserver\"\n\ninterface IObserverProps {\n    children?(): React.ReactElement | null\n    render?(): React.ReactElement | null\n}\n\nfunction ObserverComponent({ children, render }: IObserverProps) {\n    const component = children || render\n    if (typeof component !== \"function\") {\n        return null\n    }\n    return useObserver(component)\n}\nif (\"production\" !== process.env.NODE_ENV) {\n    ObserverComponent.propTypes = {\n        children: ObserverPropsCheck,\n        render: ObserverPropsCheck\n    }\n}\nObserverComponent.displayName = \"Observer\"\n\nexport { ObserverComponent as Observer }\n\nfunction ObserverPropsCheck(\n    props: { [k: string]: any },\n    key: string,\n    componentName: string,\n    location: any,\n    propFullName: string\n) {\n    const extraKey = key === \"children\" ? \"render\" : \"children\"\n    const hasProp = typeof props[key] === \"function\"\n    const hasExtraProp = typeof props[extraKey] === \"function\"\n    if (hasProp && hasExtraProp) {\n        return new Error(\n            \"MobX Observer: Do not use children and render in the same time in`\" + componentName\n        )\n    }\n\n    if (hasProp || hasExtraProp) {\n        return null\n    }\n    return new Error(\n        \"Invalid prop `\" +\n            propFullName +\n            \"` of type `\" +\n            typeof props[key] +\n            \"` supplied to\" +\n            \" `\" +\n            componentName +\n            \"`, expected `function`.\"\n    )\n}\n","import { observable, AnnotationsMap } from \"mobx\"\nimport { useState } from \"react\"\n\nexport function useLocalObservable<TStore extends Record<string, any>>(\n    initializer: () => TStore,\n    annotations?: AnnotationsMap<TStore, never>\n): TStore {\n    return useState(() => observable(initializer(), annotations, { autoBind: true }))[0]\n}\n","import { useDeprecated } from \"./utils/utils\"\nimport { observable, runInAction } from \"mobx\"\nimport { useState } from \"react\"\n\nexport function useAsObservableSource<TSource extends object>(current: TSource): TSource {\n    if (\"production\" !== process.env.NODE_ENV)\n        useDeprecated(\n            \"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\"\n        )\n    // We're deliberately not using idiomatic destructuring for the hook here.\n    // Accessing the state value as an array element prevents TypeScript from generating unnecessary helpers in the resulting code.\n    // For further details, please refer to mobxjs/mobx#3842.\n    const res = useState(() => observable(current, {}, { deep: false }))[0]\n    runInAction(() => {\n        Object.assign(res, current)\n    })\n    return res\n}\n","import { observable } from \"mobx\"\nimport { useState } from \"react\"\n\nimport { useDeprecated } from \"./utils/utils\"\nimport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport function useLocalStore<TStore extends Record<string, any>>(initializer: () => TStore): TStore\nexport function useLocalStore<TStore extends Record<string, any>, TSource extends object>(\n    initializer: (source: TSource) => TStore,\n    current: TSource\n): TStore\nexport function useLocalStore<TStore extends Record<string, any>, TSource extends object>(\n    initializer: (source?: TSource) => TStore,\n    current?: TSource\n): TStore {\n    if (\"production\" !== process.env.NODE_ENV) {\n        useDeprecated(\n            \"[mobx-react-lite] 'useLocalStore' is deprecated, use 'useLocalObservable' instead.\"\n        )\n    }\n    const source = current && useAsObservableSource(current)\n    return useState(() => observable(initializer(source), undefined, { autoBind: true }))[0]\n}\n","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport { observerFinalizationRegistry as _observerFinalizationRegistry }\nexport const clearTimers = observerFinalizationRegistry[\"finalizeAllImmediately\"] ?? (() => {})\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n    if (\"production\" !== process.env.NODE_ENV) {\n        useDeprecated(\n            \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `<Observer>{fn}</Observer>` instead, or wrap the entire component in `observer`.\"\n        )\n    }\n    return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n    if (\"production\" !== process.env.NODE_ENV) {\n        console.warn(\n            \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n        )\n    }\n    enableStaticRendering(enable)\n}\n","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n    globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n    return globalIsUsingStaticRendering\n}\n","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n    return getDependencyTree(v)\n}\n","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\"\n\n// Do not store `admRef` (even as part of a closure!) on this object,\n// otherwise it will prevent GC and therefore reaction disposal via FinalizationRegistry.\ntype ObserverAdministration = {\n    reaction: Reaction | null // also serves as disposed flag\n    onStoreChange: Function | null // also serves as mounted flag\n    // stateVersion that 'ticks' for every time the reaction fires\n    // tearing is still present,\n    // because there is no cross component synchronization,\n    // but we can use `useSyncExternalStore` API.\n    // TODO: optimize to use number?\n    stateVersion: any\n    name: string\n    // These don't depend on state/props, therefore we can keep them here instead of `useCallback`\n    subscribe: Parameters<typeof React.useSyncExternalStore>[0]\n    getSnapshot: Parameters<typeof React.useSyncExternalStore>[1]\n}\n\nfunction createReaction(adm: ObserverAdministration) {\n    adm.reaction = new Reaction(`observer${adm.name}`, () => {\n        adm.stateVersion = Symbol()\n        // onStoreChange won't be available until the component \"mounts\".\n        // If state changes in between initial render and mount,\n        // `useSyncExternalStore` should handle that by checking the state version and issuing update.\n        adm.onStoreChange?.()\n    })\n}\n\nexport function useObserver<T>(render: () => T, baseComponentName: string = \"observed\"): T {\n    if (isUsingStaticRendering()) {\n        return render()\n    }\n\n    const admRef = React.useRef<ObserverAdministration | null>(null)\n\n    if (!admRef.current) {\n        // First render\n        const adm: ObserverAdministration = {\n            reaction: null,\n            onStoreChange: null,\n            stateVersion: Symbol(),\n            name: baseComponentName,\n            subscribe(onStoreChange: () => void) {\n                // Do NOT access admRef here!\n                observerFinalizationRegistry.unregister(adm)\n                adm.onStoreChange = onStoreChange\n                if (!adm.reaction) {\n                    // We've lost our reaction and therefore all subscriptions, occurs when:\n                    // 1. Timer based finalization registry disposed reaction before component mounted.\n                    // 2. React \"re-mounts\" same component without calling render in between (typically <StrictMode>).\n                    // We have to recreate reaction and schedule re-render to recreate subscriptions,\n                    // even if state did not change.\n                    createReaction(adm)\n                    // `onStoreChange` won't force update if subsequent `getSnapshot` returns same value.\n                    // So we make sure that is not the case\n                    adm.stateVersion = Symbol()\n                }\n\n                return () => {\n                    // Do NOT access admRef here!\n                    adm.onStoreChange = null\n                    adm.reaction?.dispose()\n                    adm.reaction = null\n                }\n            },\n            getSnapshot() {\n                // Do NOT access admRef here!\n                return adm.stateVersion\n            }\n        }\n\n        admRef.current = adm\n    }\n\n    const adm = admRef.current!\n\n    if (!adm.reaction) {\n        // First render or reaction was disposed by registry before subscribe\n        createReaction(adm)\n        // StrictMode/ConcurrentMode/Suspense may mean that our component is\n        // rendered and abandoned multiple times, so we need to track leaked\n        // Reactions.\n        observerFinalizationRegistry.register(admRef, adm, adm)\n    }\n\n    React.useDebugValue(adm.reaction!, printDebugValue)\n\n    useSyncExternalStore(\n        // Both of these must be stable, otherwise it would keep resubscribing every render.\n        adm.subscribe,\n        adm.getSnapshot,\n        adm.getSnapshot\n    )\n\n    // render the original component, but have the\n    // reaction track the observables, so that rendering\n    // can be invalidated (see above) once a dependency changes\n    let renderResult!: T\n    let exception\n    adm.reaction!.track(() => {\n        try {\n            renderResult = render()\n        } catch (e) {\n            exception = e\n        }\n    })\n\n    if (exception) {\n        throw exception // re-throw any exceptions caught during rendering\n    }\n\n    return renderResult\n}\n","export declare class FinalizationRegistryType<T> {\n    constructor(finalize: (value: T) => void)\n    register(target: object, value: T, token?: object): void\n    unregister(token: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nexport const REGISTRY_FINALIZE_AFTER = 10_000\nexport const REGISTRY_SWEEP_INTERVAL = 10_000\n\nexport class TimerBasedFinalizationRegistry<T> implements FinalizationRegistryType<T> {\n    private registrations: Map<unknown, { value: T; registeredAt: number }> = new Map()\n    private sweepTimeout: ReturnType<typeof setTimeout> | undefined\n\n    constructor(private readonly finalize: (value: T) => void) {}\n\n    // Token is actually required with this impl\n    register(target: object, value: T, token?: object) {\n        this.registrations.set(token, {\n            value,\n            registeredAt: Date.now()\n        })\n        this.scheduleSweep()\n    }\n\n    unregister(token: unknown) {\n        this.registrations.delete(token)\n    }\n\n    // Bound so it can be used directly as setTimeout callback.\n    sweep = (maxAge = REGISTRY_FINALIZE_AFTER) => {\n        // cancel timeout so we can force sweep anytime\n        clearTimeout(this.sweepTimeout)\n        this.sweepTimeout = undefined\n\n        const now = Date.now()\n        this.registrations.forEach((registration, token) => {\n            if (now - registration.registeredAt >= maxAge) {\n                this.finalize(registration.value)\n                this.registrations.delete(token)\n            }\n        })\n\n        if (this.registrations.size > 0) {\n            this.scheduleSweep()\n        }\n    }\n\n    // Bound so it can be exported directly as clearTimers test utility.\n    finalizeAllImmediately = () => {\n        this.sweep(0)\n    }\n\n    private scheduleSweep() {\n        if (this.sweepTimeout === undefined) {\n            this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL)\n        }\n    }\n}\n\nexport const UniversalFinalizationRegistry =\n    typeof FinalizationRegistry !== \"undefined\"\n        ? FinalizationRegistry\n        : TimerBasedFinalizationRegistry\n","import { Reaction } from \"mobx\"\nimport { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\"\n\nexport const observerFinalizationRegistry = new UniversalFinalizationRegistry(\n    (adm: { reaction: Reaction | null }) => {\n        adm.reaction?.dispose()\n        adm.reaction = null\n    }\n)\n","export function shallowEqual(objA: any, objB: any): boolean {\n    //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n    if (is(objA, objB)) {\n        return true\n    }\n    if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n        return false\n    }\n    const keysA = Object.keys(objA)\n    const keysB = Object.keys(objB)\n    if (keysA.length !== keysB.length) {\n        return false\n    }\n    for (let i = 0; i < keysA.length; i++) {\n        if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n            return false\n        }\n    }\n    return true\n}\n\nfunction is(x: any, y: any): boolean {\n    // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n    if (x === y) {\n        return x !== 0 || 1 / x === 1 / y\n    } else {\n        return x !== x && y !== y\n    }\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList = {\n    $$typeof: 1,\n    render: 1,\n    compare: 1,\n    type: 1,\n    childContextTypes: 1,\n    contextType: 1,\n    contextTypes: 1,\n    defaultProps: 1,\n    getDefaultProps: 1,\n    getDerivedStateFromError: 1,\n    getDerivedStateFromProps: 1,\n    mixins: 1,\n    displayName: 1,\n    propTypes: 1\n}\n\nexport function copyStaticProperties(base: object, target: object): void {\n    const protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base))\n    Object.getOwnPropertyNames(base).forEach(key => {\n        if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n        }\n    })\n}\n\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\nexport function setHiddenProp(target: object, prop: any, value: any): void {\n    if (!Object.hasOwnProperty.call(target, prop)) {\n        Object.defineProperty(target, prop, {\n            enumerable: false,\n            configurable: true,\n            writable: true,\n            value\n        })\n    } else {\n        target[prop] = value\n    }\n}\n\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nconst mobxMixins = Symbol(\"patchMixins\")\nconst mobxPatchedDefinition = Symbol(\"patchedDefinition\")\n\nexport interface Mixins extends Record<string, any> {\n    locks: number\n    methods: Array<Function>\n}\n\nfunction getMixins(target: object, methodName: string): Mixins {\n    const mixins = (target[mobxMixins] = target[mobxMixins] || {})\n    const methodMixins = (mixins[methodName] = mixins[methodName] || {})\n    methodMixins.locks = methodMixins.locks || 0\n    methodMixins.methods = methodMixins.methods || []\n    return methodMixins\n}\n\nfunction wrapper(realMethod: Function, mixins: Mixins, ...args: Array<any>) {\n    // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n    mixins.locks++\n\n    try {\n        let retVal\n        if (realMethod !== undefined && realMethod !== null) {\n            retVal = realMethod.apply(this, args)\n        }\n\n        return retVal\n    } finally {\n        mixins.locks--\n        if (mixins.locks === 0) {\n            mixins.methods.forEach(mx => {\n                mx.apply(this, args)\n            })\n        }\n    }\n}\n\nfunction wrapFunction(realMethod: Function, mixins: Mixins): (...args: Array<any>) => any {\n    const fn = function (...args: Array<any>) {\n        wrapper.call(this, realMethod, mixins, ...args)\n    }\n    return fn\n}\n\nexport function patch(target: object, methodName: string, mixinMethod: Function): void {\n    const mixins = getMixins(target, methodName)\n\n    if (mixins.methods.indexOf(mixinMethod) < 0) {\n        mixins.methods.push(mixinMethod)\n    }\n\n    const oldDefinition = Object.getOwnPropertyDescriptor(target, methodName)\n    if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n        // already patched definition, do not repatch\n        return\n    }\n\n    const originalMethod = target[methodName]\n    const newDefinition = createDefinition(\n        target,\n        methodName,\n        oldDefinition ? oldDefinition.enumerable : undefined,\n        mixins,\n        originalMethod\n    )\n\n    Object.defineProperty(target, methodName, newDefinition)\n}\n\nfunction createDefinition(\n    target: object,\n    methodName: string,\n    enumerable: any,\n    mixins: Mixins,\n    originalMethod: Function\n): PropertyDescriptor {\n    let wrappedFunc = wrapFunction(originalMethod, mixins)\n\n    return {\n        // @ts-ignore\n        [mobxPatchedDefinition]: true,\n        get: function () {\n            return wrappedFunc\n        },\n        set: function (value) {\n            if (this === target) {\n                wrappedFunc = wrapFunction(value, mixins)\n            } else {\n                // when it is an instance of the prototype/a child prototype patch that particular case again separately\n                // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n                // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n                // as the method for the instance\n                const newDefinition = createDefinition(this, methodName, enumerable, mixins, value)\n                Object.defineProperty(this, methodName, newDefinition)\n            }\n        },\n        configurable: true,\n        enumerable: enumerable\n    }\n}\n","import { PureComponent, Component, ComponentClass, ClassAttributes } from \"react\"\nimport {\n    _allowStateChanges,\n    Reaction,\n    _allowStateReadsStart,\n    _allowStateReadsEnd,\n    _getGlobalState\n} from \"mobx\"\nimport {\n    isUsingStaticRendering,\n    _observerFinalizationRegistry as observerFinalizationRegistry\n} from \"mobx-react-lite\"\nimport { shallowEqual, patch } from \"./utils/utils\"\n\nconst administrationSymbol = Symbol(\"ObserverAdministration\")\nconst isMobXReactObserverSymbol = Symbol(\"isMobXReactObserver\")\n\nlet observablePropDescriptors: PropertyDescriptorMap\nif (__DEV__) {\n    observablePropDescriptors = {\n        props: createObservablePropDescriptor(\"props\"),\n        state: createObservablePropDescriptor(\"state\"),\n        context: createObservablePropDescriptor(\"context\")\n    }\n}\n\ntype ObserverAdministration = {\n    reaction: Reaction | null // also serves as disposed flag\n    forceUpdate: Function | null\n    mounted: boolean // we could use forceUpdate as mounted flag\n    reactionInvalidatedBeforeMount: boolean\n    name: string\n    // Used only on __DEV__\n    props: any\n    state: any\n    context: any\n}\n\nfunction getAdministration(component: Component): ObserverAdministration {\n    // We create administration lazily, because we can't patch constructor\n    // and the exact moment of initialization partially depends on React internals.\n    // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n    return (component[administrationSymbol] ??= {\n        reaction: null,\n        mounted: false,\n        reactionInvalidatedBeforeMount: false,\n        forceUpdate: null,\n        name: getDisplayName(component.constructor as ComponentClass),\n        state: undefined,\n        props: undefined,\n        context: undefined\n    })\n}\n\nexport function makeClassComponentObserver(\n    componentClass: ComponentClass<any, any>\n): ComponentClass<any, any> {\n    const { prototype } = componentClass\n\n    if (componentClass[isMobXReactObserverSymbol]) {\n        const displayName = getDisplayName(componentClass)\n        throw new Error(\n            `The provided component class (${displayName}) has already been declared as an observer component.`\n        )\n    } else {\n        componentClass[isMobXReactObserverSymbol] = true\n    }\n\n    if (prototype.componentWillReact) {\n        throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n    }\n    if (componentClass[\"__proto__\"] !== PureComponent) {\n        if (!prototype.shouldComponentUpdate) {\n            prototype.shouldComponentUpdate = observerSCU\n        } else if (prototype.shouldComponentUpdate !== observerSCU) {\n            // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n            throw new Error(\n                \"It is not allowed to use shouldComponentUpdate in observer based components.\"\n            )\n        }\n    }\n\n    if (__DEV__) {\n        Object.defineProperties(prototype, observablePropDescriptors)\n    }\n\n    const originalRender = prototype.render\n    if (typeof originalRender !== \"function\") {\n        const displayName = getDisplayName(componentClass)\n        throw new Error(\n            `[mobx-react] class component (${displayName}) is missing \\`render\\` method.` +\n                `\\n\\`observer\\` requires \\`render\\` being a function defined on prototype.` +\n                `\\n\\`render = () => {}\\` or \\`render = function() {}\\` is not supported.`\n        )\n    }\n\n    prototype.render = function () {\n        Object.defineProperty(this, \"render\", {\n            // There is no safe way to replace render, therefore it's forbidden.\n            configurable: false,\n            writable: false,\n            value: isUsingStaticRendering()\n                ? originalRender\n                : createReactiveRender.call(this, originalRender)\n        })\n        return this.render()\n    }\n\n    const originalComponentDidMount = prototype.componentDidMount\n    prototype.componentDidMount = function () {\n        if (__DEV__ && this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {\n            const displayName = getDisplayName(componentClass)\n            throw new Error(\n                `[mobx-react] \\`observer(${displayName}).componentDidMount\\` must be defined on prototype.` +\n                    `\\n\\`componentDidMount = () => {}\\` or \\`componentDidMount = function() {}\\` is not supported.`\n            )\n        }\n\n        // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n        // That's why we use finalization registry to dispose reaction created during render.\n        // Happens with `<Suspend>` see #3492\n        //\n        // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n        // Happens with `<StrictMode>`see #3395.\n        //\n        // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n        // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n        //\n        // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n\n        const admin = getAdministration(this)\n\n        admin.mounted = true\n\n        // Component instance committed, prevent reaction disposal.\n        observerFinalizationRegistry.unregister(this)\n\n        // We don't set forceUpdate before mount because it requires a reference to `this`,\n        // therefore `this` could NOT be garbage collected before mount,\n        // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n        // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n        admin.forceUpdate = () => this.forceUpdate()\n\n        if (!admin.reaction || admin.reactionInvalidatedBeforeMount) {\n            // Missing reaction:\n            // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n            // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n            // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n            // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n            // The reaction will be created lazily by following render.\n\n            // Reaction invalidated before mount:\n            // 1. A descendant's `componenDidMount` invalidated it's parent #3730\n\n            admin.forceUpdate()\n        }\n        return originalComponentDidMount?.apply(this, arguments)\n    }\n\n    // TODO@major Overly complicated \"patch\" is only needed to support the deprecated @disposeOnUnmount\n    patch(prototype, \"componentWillUnmount\", function () {\n        if (isUsingStaticRendering()) {\n            return\n        }\n        const admin = getAdministration(this)\n        admin.reaction?.dispose()\n        admin.reaction = null\n        admin.forceUpdate = null\n        admin.mounted = false\n        admin.reactionInvalidatedBeforeMount = false\n    })\n\n    return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass: ComponentClass) {\n    return componentClass.displayName || componentClass.name || \"<component>\"\n}\n\nfunction createReactiveRender(originalRender: any) {\n    const boundOriginalRender = originalRender.bind(this)\n\n    const admin = getAdministration(this)\n\n    function reactiveRender() {\n        if (!admin.reaction) {\n            // Create reaction lazily to support re-mounting #3395\n            admin.reaction = createReaction(admin)\n            if (!admin.mounted) {\n                // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n                // we have to make sure reaction will be disposed.\n                observerFinalizationRegistry.register(this, admin, this)\n            }\n        }\n\n        let error: unknown = undefined\n        let renderResult = undefined\n        admin.reaction.track(() => {\n            try {\n                // TODO@major\n                // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n                renderResult = _allowStateChanges(false, boundOriginalRender)\n            } catch (e) {\n                error = e\n            }\n        })\n        if (error) {\n            throw error\n        }\n        return renderResult\n    }\n\n    return reactiveRender\n}\n\nfunction createReaction(admin: ObserverAdministration) {\n    return new Reaction(`${admin.name}.render()`, () => {\n        if (!admin.mounted) {\n            // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n            // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n            // `componenDidMount` runs synchronously after `render`, so unlike functional component, there is no delay during which the reaction could be invalidated.\n            // However `componentDidMount` runs AFTER it's descendants' `componentDidMount`, which CAN invalidate the reaction, see #3730. Therefore remember and forceUpdate on mount.\n            admin.reactionInvalidatedBeforeMount = true\n            return\n        }\n\n        try {\n            admin.forceUpdate?.()\n        } catch (error) {\n            admin.reaction?.dispose()\n            admin.reaction = null\n        }\n    })\n}\n\nfunction observerSCU(nextProps: ClassAttributes<any>, nextState: any): boolean {\n    if (isUsingStaticRendering()) {\n        console.warn(\n            \"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"\n        )\n    }\n    // update on any state changes (as is the default)\n    if (this.state !== nextState) {\n        return true\n    }\n    // update if props are shallowly not equal, inspired by PureRenderMixin\n    // we could return just 'false' here, and avoid the `skipRender` checks etc\n    // however, it is nicer if lifecycle events are triggered like usually,\n    // so we return true here if props are shallowly modified.\n    return !shallowEqual(this.props, nextProps)\n}\n\nfunction createObservablePropDescriptor(key: \"props\" | \"state\" | \"context\") {\n    return {\n        configurable: true,\n        enumerable: true,\n        get() {\n            const admin = getAdministration(this)\n            const derivation = _getGlobalState().trackingDerivation\n            if (derivation && derivation !== admin.reaction) {\n                throw new Error(\n                    `[mobx-react] Cannot read \"${admin.name}.${key}\" in a reactive context, as it isn't observable.\n                    Please use component lifecycle method to copy the value into a local observable first.\n                    See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations`\n                )\n            }\n            return admin[key]\n        },\n        set(value) {\n            getAdministration(this)[key] = value\n        }\n    }\n}\n","import * as React from \"react\"\nimport { observer as observerLite } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\n/**\n * Observer function / decorator\n */\nexport function observer<T extends IReactComponent>(component: T, context: ClassDecoratorContext): void\nexport function observer<T extends IReactComponent>(component: T): T\nexport function observer<T extends IReactComponent>(component: T, context?: ClassDecoratorContext): T {\n    if (context && context.kind !== \"class\") {\n        throw new Error(\"The @observer decorator can be used on classes only\")\n    }\n    if (component[\"isMobxInjector\"] === true) {\n        console.warn(\n            \"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\"\n        )\n    }\n\n    if (\n        Object.prototype.isPrototypeOf.call(React.Component, component) ||\n        Object.prototype.isPrototypeOf.call(React.PureComponent, component)\n    ) {\n        // Class component\n        return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\n    } else {\n        // Function component\n        return observerLite(component as React.FunctionComponent<any>) as T\n    }\n}\n","import React from \"react\"\nimport { shallowEqual } from \"./utils/utils\"\nimport { IValueMap } from \"./types/IValueMap\"\n\nexport const MobXProviderContext = React.createContext<IValueMap>({})\n\nexport interface ProviderProps extends IValueMap {\n    children: React.ReactNode\n}\n\nexport function Provider(props: ProviderProps) {\n    const { children, ...stores } = props\n    const parentValue = React.useContext(MobXProviderContext)\n    const mutableProviderRef = React.useRef({ ...parentValue, ...stores })\n    const value = mutableProviderRef.current\n\n    if (__DEV__) {\n        const newValue = { ...value, ...stores } // spread in previous state for the context based stores\n        if (!shallowEqual(value, newValue)) {\n            throw new Error(\n                \"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\"\n            )\n        }\n    }\n\n    return <MobXProviderContext.Provider value={value}>{children}</MobXProviderContext.Provider>\n}\n\nProvider.displayName = \"MobXProvider\"\n","import React from \"react\"\nimport { observer } from \"./observer\"\nimport { copyStaticProperties } from \"./utils/utils\"\nimport { MobXProviderContext } from \"./Provider\"\nimport { IReactComponent } from \"./types/IReactComponent\"\nimport { IValueMap } from \"./types/IValueMap\"\nimport { IWrappedComponent } from \"./types/IWrappedComponent\"\nimport { IStoresToProps } from \"./types/IStoresToProps\"\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(\n    grabStoresFn: IStoresToProps,\n    component: IReactComponent<any>,\n    injectNames: string,\n    makeReactive: boolean\n): IReactComponent<any> {\n    // Support forward refs\n    let Injector: IReactComponent<any> = React.forwardRef((props, ref) => {\n        const newProps = { ...props }\n        const context = React.useContext(MobXProviderContext)\n        Object.assign(newProps, grabStoresFn(context || {}, newProps) || {})\n\n        if (ref) {\n            newProps.ref = ref\n        }\n\n        return React.createElement(component, newProps)\n    })\n\n    if (makeReactive) Injector = observer(Injector)\n    Injector[\"isMobxInjector\"] = true // assigned late to suppress observer warning\n\n    // Static fields from component should be visible on the generated Injector\n    copyStaticProperties(component, Injector)\n    Injector[\"wrappedComponent\"] = component\n    Injector.displayName = getInjectName(component, injectNames)\n    return Injector\n}\n\nfunction getInjectName(component: IReactComponent<any>, injectNames: string): string {\n    let displayName\n    const componentName =\n        component.displayName ||\n        component.name ||\n        (component.constructor && component.constructor.name) ||\n        \"Component\"\n    if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\"\n    else displayName = \"inject(\" + componentName + \")\"\n    return displayName\n}\n\nfunction grabStoresByName(\n    storeNames: Array<string>\n): (\n    baseStores: IValueMap,\n    nextProps: React.ClassAttributes<any>\n) => React.PropsWithRef<any> | undefined {\n    return function (baseStores, nextProps) {\n        storeNames.forEach(function (storeName) {\n            if (\n                storeName in nextProps // prefer props over stores\n            )\n                return\n            if (!(storeName in baseStores))\n                throw new Error(\n                    \"MobX injector: Store '\" +\n                        storeName +\n                        \"' is not available! Make sure it is provided by some Provider\"\n                )\n            nextProps[storeName] = baseStores[storeName]\n        })\n        return nextProps\n    }\n}\n\nexport function inject(\n    ...stores: Array<string>\n): <T extends IReactComponent<any>>(\n    target: T\n) => T & (T extends IReactComponent<infer P> ? IWrappedComponent<P> : never)\nexport function inject<S extends IValueMap = {}, P extends IValueMap = {}, I extends IValueMap = {}, C extends IValueMap = {}>(\n    fn: IStoresToProps<S, P, I, C>\n): <T extends IReactComponent>(target: T) => T & IWrappedComponent<P>\n\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nexport function inject(/* fn(stores, nextProps) or ...storeNames */ ...storeNames: Array<any>) {\n    if (typeof arguments[0] === \"function\") {\n        let grabStoresFn = arguments[0]\n        return (componentClass: React.ComponentClass<any, any>) =>\n            createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true)\n    } else {\n        return (componentClass: React.ComponentClass<any, any>) =>\n            createStoreInjector(\n                grabStoresByName(storeNames),\n                componentClass,\n                storeNames.join(\"-\"),\n                false\n            )\n    }\n}\n","import React from \"react\"\nimport { patch } from \"./utils/utils\"\n\nconst reactMajorVersion = Number.parseInt(React.version.split(\".\")[0])\nlet warnedAboutDisposeOnUnmountDeprecated = false\n\ntype Disposer = () => void\n\nconst protoStoreKey = Symbol(\"disposeOnUnmountProto\")\nconst instStoreKey = Symbol(\"disposeOnUnmountInst\")\n\nfunction runDisposersOnWillUnmount() {\n    ;[...(this[protoStoreKey] || []), ...(this[instStoreKey] || [])].forEach(propKeyOrFunction => {\n        const prop =\n            typeof propKeyOrFunction === \"string\" ? this[propKeyOrFunction] : propKeyOrFunction\n        if (prop !== undefined && prop !== null) {\n            if (Array.isArray(prop)) prop.map(f => f())\n            else prop()\n        }\n    })\n}\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(target: React.Component<any, any>, propertyKey: PropertyKey): void\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount<TF extends Disposer | Array<Disposer>>(\n    target: React.Component<any, any>,\n    fn: TF\n): TF\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(\n    target: React.Component<any, any>,\n    propertyKeyOrFunction: PropertyKey | Disposer | Array<Disposer>\n): PropertyKey | Disposer | Array<Disposer> | void {\n    if (Array.isArray(propertyKeyOrFunction)) {\n        return propertyKeyOrFunction.map(fn => disposeOnUnmount(target, fn))\n    }\n\n    if (!warnedAboutDisposeOnUnmountDeprecated) {\n        if (reactMajorVersion >= 18) {\n            console.error(\n                \"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\"\n            )\n        } else {\n            console.warn(\n                \"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\"\n            )\n        }\n        warnedAboutDisposeOnUnmountDeprecated = true\n    }\n\n    const c = Object.getPrototypeOf(target).constructor\n    const c2 = Object.getPrototypeOf(target.constructor)\n    // Special case for react-hot-loader\n    const c3 = Object.getPrototypeOf(Object.getPrototypeOf(target))\n    if (\n        !(\n            c === React.Component ||\n            c === React.PureComponent ||\n            c2 === React.Component ||\n            c2 === React.PureComponent ||\n            c3 === React.Component ||\n            c3 === React.PureComponent\n        )\n    ) {\n        throw new Error(\n            \"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\"\n        )\n    }\n\n    if (\n        typeof propertyKeyOrFunction !== \"string\" &&\n        typeof propertyKeyOrFunction !== \"function\" &&\n        !Array.isArray(propertyKeyOrFunction)\n    ) {\n        throw new Error(\n            \"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\"\n        )\n    }\n\n    // decorator's target is the prototype, so it doesn't have any instance properties like props\n    const isDecorator = typeof propertyKeyOrFunction === \"string\"\n\n    // add property key / function we want run (disposed) to the store\n    const componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey]\n    const store = isDecorator\n        ? // decorators are added to the prototype store\n          target[protoStoreKey] || (target[protoStoreKey] = [])\n        : // functions are added to the instance store\n          target[instStoreKey] || (target[instStoreKey] = [])\n\n    store.push(propertyKeyOrFunction)\n\n    // tweak the component class componentWillUnmount if not done already\n    if (!componentWasAlreadyModified) {\n        patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount)\n    }\n\n    // return the disposer as is if invoked as a non decorator\n    if (typeof propertyKeyOrFunction !== \"string\") {\n        return propertyKeyOrFunction\n    }\n}\n","import { isObservableArray, isObservableObject, isObservableMap, untracked } from \"mobx\"\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator: React.Validator<any>): React.Requireable<any> {\n    function checkType(\n        isRequired: boolean,\n        props: any,\n        propName: string,\n        componentName: string,\n        location: string,\n        propFullName: string,\n        ...rest: any[]\n    ) {\n        return untracked(() => {\n            componentName = componentName || \"<<anonymous>>\"\n            propFullName = propFullName || propName\n            if (props[propName] == null) {\n                if (isRequired) {\n                    const actual = props[propName] === null ? \"null\" : \"undefined\"\n                    return new Error(\n                        \"The \" +\n                            location +\n                            \" `\" +\n                            propFullName +\n                            \"` is marked as required \" +\n                            \"in `\" +\n                            componentName +\n                            \"`, but its value is `\" +\n                            actual +\n                            \"`.\"\n                    )\n                }\n                return null\n            } else {\n                // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n                return validator(props, propName, componentName, location, propFullName, ...rest)\n            }\n        })\n    }\n\n    const chainedCheckType: any = checkType.bind(null, false)\n    // Add isRequired to satisfy Requirable\n    chainedCheckType.isRequired = checkType.bind(null, true)\n    return chainedCheckType\n}\n\n// Copied from React.PropTypes\nfunction isSymbol(propType: any, propValue: any): boolean {\n    // Native Symbol.\n    if (propType === \"symbol\") {\n        return true\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n        return true\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n        return true\n    }\n\n    return false\n}\n\n// Copied from React.PropTypes\nfunction getPropType(propValue: any): string {\n    const propType = typeof propValue\n    if (Array.isArray(propValue)) {\n        return \"array\"\n    }\n    if (propValue instanceof RegExp) {\n        // Old webkits (at least until Android 4.0) return 'function' rather than\n        // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n        // passes PropTypes.object.\n        return \"object\"\n    }\n    if (isSymbol(propType, propValue)) {\n        return \"symbol\"\n    }\n    return propType\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue: any): string {\n    const propType = getPropType(propValue)\n    if (propType === \"object\") {\n        if (propValue instanceof Date) {\n            return \"date\"\n        } else if (propValue instanceof RegExp) {\n            return \"regexp\"\n        }\n    }\n    return propType\n}\n\nfunction createObservableTypeCheckerCreator(\n    allowNativeType: any,\n    mobxType: any\n): React.Requireable<any> {\n    return createChainableTypeChecker((props, propName, componentName, location, propFullName) => {\n        return untracked(() => {\n            if (allowNativeType) {\n                if (getPropType(props[propName]) === mobxType.toLowerCase()) return null\n            }\n            let mobxChecker\n            switch (mobxType) {\n                case \"Array\":\n                    mobxChecker = isObservableArray\n                    break\n                case \"Object\":\n                    mobxChecker = isObservableObject\n                    break\n                case \"Map\":\n                    mobxChecker = isObservableMap\n                    break\n                default:\n                    throw new Error(`Unexpected mobxType: ${mobxType}`)\n            }\n            const propValue = props[propName]\n            if (!mobxChecker(propValue)) {\n                const preciseType = getPreciseType(propValue)\n                const nativeTypeExpectationMessage = allowNativeType\n                    ? \" or javascript `\" + mobxType.toLowerCase() + \"`\"\n                    : \"\"\n                return new Error(\n                    \"Invalid prop `\" +\n                        propFullName +\n                        \"` of type `\" +\n                        preciseType +\n                        \"` supplied to\" +\n                        \" `\" +\n                        componentName +\n                        \"`, expected `mobx.Observable\" +\n                        mobxType +\n                        \"`\" +\n                        nativeTypeExpectationMessage +\n                        \".\"\n                )\n            }\n            return null\n        })\n    })\n}\n\nfunction createObservableArrayOfTypeChecker(\n    allowNativeType: boolean,\n    typeChecker: React.Validator<any>\n) {\n    return createChainableTypeChecker(\n        (props, propName, componentName, location, propFullName, ...rest) => {\n            return untracked(() => {\n                if (typeof typeChecker !== \"function\") {\n                    return new Error(\n                        \"Property `\" +\n                            propFullName +\n                            \"` of component `\" +\n                            componentName +\n                            \"` has \" +\n                            \"invalid PropType notation.\"\n                    )\n                } else {\n                    let error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(\n                        props,\n                        propName,\n                        componentName,\n                        location,\n                        propFullName\n                    )\n\n                    if (error instanceof Error) return error\n                    const propValue = props[propName]\n                    for (let i = 0; i < propValue.length; i++) {\n                        error = (typeChecker as React.Validator<any>)(\n                            propValue,\n                            i as any,\n                            componentName,\n                            location,\n                            propFullName + \"[\" + i + \"]\",\n                            ...rest\n                        )\n                        if (error instanceof Error) return error\n                    }\n\n                    return null\n                }\n            })\n        }\n    )\n}\n\nconst observableArray = createObservableTypeCheckerCreator(false, \"Array\")\nconst observableArrayOf = createObservableArrayOfTypeChecker.bind(null, false)\nconst observableMap = createObservableTypeCheckerCreator(false, \"Map\")\nconst observableObject = createObservableTypeCheckerCreator(false, \"Object\")\nconst arrayOrObservableArray = createObservableTypeCheckerCreator(true, \"Array\")\nconst arrayOrObservableArrayOf = createObservableArrayOfTypeChecker.bind(null, true)\nconst objectOrObservableObject = createObservableTypeCheckerCreator(true, \"Object\")\n\nexport const PropTypes = {\n    observableArray,\n    observableArrayOf,\n    observableMap,\n    observableObject,\n    arrayOrObservableArray,\n    arrayOrObservableArrayOf,\n    objectOrObservableObject\n}\n","import { observable } from \"mobx\"\nimport { Component } from \"react\"\n\nif (!Component) {\n    throw new Error(\"mobx-react requires React to be available\")\n}\n\nif (!observable) {\n    throw new Error(\"mobx-react requires mobx to be available\")\n}\n\nexport {\n    Observer,\n    useObserver,\n    useAsObservableSource,\n    useLocalStore,\n    isUsingStaticRendering,\n    useStaticRendering,\n    enableStaticRendering,\n    observerBatching,\n    useLocalObservable\n} from \"mobx-react-lite\"\n\nexport { observer } from \"./observer\"\n\nexport { MobXProviderContext, Provider, ProviderProps } from \"./Provider\"\nexport { inject } from \"./inject\"\nexport { disposeOnUnmount } from \"./disposeOnUnmount\"\nexport { PropTypes } from \"./propTypes\"\nexport { IWrappedComponent } from \"./types/IWrappedComponent\"\n","'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn this._size + oldCacheSize;\n\t}\n}\n\nmodule.exports = QuickLRU;\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d<x;){for(i(n,d,x),d++,x--;h(n[d],p)<0;)d++;for(;h(n[x],p)>0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return t<i?-1:t>i?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r<i.length;r++)if(n(t,i[r]))return r;return-1}function a(t,i){h(t,0,t.children.length,i,t)}function h(t,i,n,r,e){e||(e=p(null)),e.minX=1/0,e.minY=1/0,e.maxX=-1/0,e.maxY=-1/0;for(var a=i;a<n;a++){var h=t.children[a];o(e,t.leaf?r(h):h)}return e}function o(t,i){return t.minX=Math.min(t.minX,i.minX),t.minY=Math.min(t.minY,i.minY),t.maxX=Math.max(t.maxX,i.maxX),t.maxY=Math.max(t.maxY,i.maxY),t}function s(t,i){return t.minX-i.minX}function l(t,i){return t.minY-i.minY}function f(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function u(t){return t.maxX-t.minX+(t.maxY-t.minY)}function m(t,i){return t.minX<=i.minX&&t.minY<=i.minY&&i.maxX<=t.maxX&&i.maxY<=t.maxY}function c(t,i){return i.minX<=t.maxX&&i.minY<=t.maxY&&i.maxX>=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a<i.children.length;a++){var h=i.children[a],o=i.leaf?r(h):h;c(t,o)&&(i.leaf?n.push(h):m(t,o)?this._all(h,n):e.push(h))}i=e.pop()}return n},r.prototype.collides=function(t){var i=this.data;if(!c(t,i))return!1;for(var n=[];i;){for(var r=0;r<i.children.length;r++){var e=i.children[r],a=i.leaf?this.toBBox(e):e;if(c(t,a)){if(i.leaf||m(t,a))return!0;n.push(e)}}i=n.pop()}return!1},r.prototype.load=function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var i=0;i<t.length;i++)this.insert(t[i]);return this}var n=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this},r.prototype.insert=function(t){return t&&this._insert(t,this.data.height-1),this},r.prototype.clear=function(){return this.data=p([]),this},r.prototype.remove=function(t,i){if(!t)return this;for(var n,r,a,h=this.data,o=this.toBBox(t),s=[],l=[];h||s.length;){if(h||(h=s.pop(),r=s[s.length-1],n=l.pop(),a=!0),h.leaf){var f=e(t,h.children,i);if(-1!==f)return h.children.splice(f,1),s.push(h),this._condense(s),this}a||h.leaf||!m(h,o)?r?(n++,h=r.children[n],a=!1):h=null:(s.push(h),l.push(n),n=0,r=h,h=h.children[0])}return this},r.prototype.toBBox=function(t){return t},r.prototype.compareMinX=function(t,i){return t.minX-i.minX},r.prototype.compareMinY=function(t,i){return t.minY-i.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(t){return this.data=t,this},r.prototype._all=function(t,i){for(var n=[];t;)t.leaf?i.push.apply(i,t.children):n.push.apply(n,t.children),t=n.pop();return i},r.prototype._build=function(t,i,n,r){var e,h=n-i+1,o=this._maxEntries;if(h<=o)return a(e=p(t.slice(i,n+1)),this.toBBox),e;r||(r=Math.ceil(Math.log(h)/Math.log(o)),o=Math.ceil(h/Math.pow(o,r-1))),(e=p([])).leaf=!1,e.height=r;var s=Math.ceil(h/o),l=s*Math.ceil(Math.sqrt(o));d(t,i,n,l,this.compareMinX);for(var f=i;f<=n;f+=l){var u=Math.min(f+l-1,n);d(t,f,u,s,this.compareMinY);for(var m=f;m<=u;m+=s){var c=Math.min(m+s-1,u);e.children.push(this._build(t,m,c,r-1))}}return a(e,this.toBBox),e},r.prototype._chooseSubtree=function(t,i,n,r){for(;r.push(i),!i.leaf&&r.length-1!==n;){for(var e=1/0,a=1/0,h=void 0,o=0;o<i.children.length;o++){var s=i.children[o],l=f(s),u=(m=t,c=s,(Math.max(c.maxX,m.maxX)-Math.min(c.minX,m.minX))*(Math.max(c.maxY,m.maxY)-Math.min(c.minY,m.minY))-l);u<a?(a=u,e=l<e?l:e,h=s):u===a&&l<e&&(e=l,h=s)}i=h||i.children[0]}var m,c;return i},r.prototype._insert=function(t,i,n){var r=n?t:this.toBBox(t),e=[],a=this._chooseSubtree(r,this.data,i,e);for(a.children.push(t),o(a,r);i>=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v<m?(m=v,r=p,c=M<c?M:c):v===m&&M<c&&(c=M,r=p)}return r||n-i},r.prototype._chooseSplitAxis=function(t,i,n){var r=t.leaf?this.compareMinX:s,e=t.leaf?this.compareMinY:l;this._allDistMargin(t,i,n,r)<this._allDistMargin(t,i,n,e)&&t.children.sort(r)},r.prototype._allDistMargin=function(t,i,n,r){t.children.sort(r);for(var e=this.toBBox,a=h(t,0,i,e),s=h(t,n-i,n,e),l=u(a)+u(s),f=i;f<n-i;f++){var m=t.children[f];o(a,t.leaf?e(m):m),l+=u(a)}for(var c=n-i-1;c>=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","import React from 'react';\nimport type { Scaler, AxisStyle } from './types';\n\nfunction translateX<T>(scale0: Scaler<T>, scale1: Scaler<T>, d: T) {\n  const x = scale0(d);\n  return `translate(${Number.isFinite(x) ? x : scale1(d)},0)`;\n}\n\nfunction translateY<T>(scale0: Scaler<T>, scale1: Scaler<T>, d: T) {\n  const y = scale0(d);\n  return `translate(0,${Number.isFinite(y) ? y : scale1(d)})`;\n}\n\nexport const TOP = 'TOP';\nexport const RIGHT = 'RIGHT';\nexport const BOTTOM = 'BOTTOM';\nexport const LEFT = 'LEFT';\nconst defaultAxisStyle: AxisStyle = {\n  orient: BOTTOM,\n  tickSizeInner: 6,\n  tickSizeOuter: 6,\n  tickPadding: 3,\n  strokeWidth: 1,\n  tickFont: 'sans-serif',\n  tickFontSize: 10,\n};\ntype AxisProps<T> = {\n  style: Record<string, any>;\n  range: number[];\n  values: Array<T>;\n  position: Scaler<T>;\n  format: (d: T) => string | number;\n  shadow?: number;\n  bg?: string;\n  fg?: string;\n};\nexport default function Axis<T>({\n  style,\n  range,\n  values,\n  position,\n  format,\n  shadow = 0,\n  bg = 'white',\n  fg = 'black',\n}: AxisProps<T>) {\n  const axisStyle = { ...defaultAxisStyle, ...style };\n  const {\n    orient,\n    tickSizeInner,\n    tickPadding,\n    tickSizeOuter,\n    strokeWidth,\n    tickFont,\n    tickFontSize,\n  } = axisStyle;\n\n  const transform =\n    orient === TOP || orient === BOTTOM ? translateX : translateY;\n\n  const tickTransformer = (d: T) => transform(position, position, d);\n\n  const k = orient === TOP || orient === LEFT ? -1 : 1;\n  const isRight = orient === RIGHT;\n  const isLeft = orient === LEFT;\n  const isTop = orient === TOP;\n  const isBottom = orient === BOTTOM;\n  const isHorizontal = isRight || isLeft;\n  const x = isHorizontal ? 'x' : 'y';\n  const y = isHorizontal ? 'y' : 'x';\n  const halfWidth = strokeWidth / 2;\n  const range0 = range[0] + halfWidth;\n  const range1 = range[range.length - 1] + halfWidth;\n  const spacing = Math.max(tickSizeInner, 0) + tickPadding;\n  return (\n    <g\n      fill=\"none\"\n      fontSize={tickFontSize}\n      fontFamily={tickFont}\n      textAnchor={isRight ? 'start' : isLeft ? 'end' : 'middle'}\n      strokeWidth={strokeWidth}\n    >\n      <path\n        stroke={fg}\n        d={\n          isHorizontal\n            ? `M${k * tickSizeOuter},${range0}H${halfWidth}V${range1}H${\n                k * tickSizeOuter\n              }`\n            : `M${range0},${k * tickSizeOuter}V${halfWidth}H${range1}V${\n                k * tickSizeOuter\n              }`\n        }\n      />\n      {values.map((v, idx) => {\n        let lineProps = {\n          stroke: fg,\n        } as { stroke: string; x1: number; x2: number; y1: number; y2: number };\n        lineProps[`${x}2`] = k * tickSizeInner;\n        lineProps[`${y}1`] = halfWidth;\n        lineProps[`${y}2`] = halfWidth;\n        let textProps = {\n          fill: fg,\n          dy: isTop ? '0em' : isBottom ? '0.71em' : '0.32em',\n        } as {\n          fill: string;\n          dy: string;\n          x: number;\n          y: number;\n        };\n        textProps[`${x}`] = k * spacing;\n        textProps[`${y}`] = halfWidth;\n        return (\n          <g key={`tick-${idx}`} opacity={1} transform={tickTransformer(v)}>\n            <line {...lineProps} />\n            {shadow ? (\n              <text\n                style={{\n                  stroke: bg,\n                  strokeWidth: shadow,\n                }}\n                {...textProps}\n              >\n                {format(v)}\n              </text>\n            ) : null}\n            <text {...textProps}>{format(v)}</text>\n          </g>\n        );\n      })}\n    </g>\n  );\n}\n","import { ScaleLinear, ScaleQuantize } from 'd3-scale';\n\nexport default function axisPropsFromTickScale(\n  scale: ScaleLinear<number, number, never> | ScaleQuantize<number, never>,\n  tickCount: number,\n) {\n  const range = scale.range();\n  const values = scale.ticks(tickCount);\n  const format = scale.tickFormat(tickCount);\n  const position = scale.copy();\n\n  return {\n    range,\n    values,\n    format,\n    position,\n  };\n}\n","export { default as axisPropsFromTickScale } from './axisPropsFromTickScale';\nexport {\n  default as Axis, TOP, RIGHT, BOTTOM, LEFT,\n} from './Axis';\nexport type { Scaler, Orients, AxisStyle } from './types';\n","/**\n * @license React\n * react-dom-server-legacy.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function l(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar p=Object.prototype.hasOwnProperty,fa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ha={},ia={};\nfunction ja(a){if(p.call(ia,a))return!0;if(p.call(ha,a))return!1;if(fa.test(a))return ia[a]=!0;ha[a]=!0;return!1}function r(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var t={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){t[a]=new r(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];t[b]=new r(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){t[a]=new r(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){t[a]=new r(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){t[a]=new r(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){t[a]=new r(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){t[a]=new r(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){t[a]=new r(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){t[a]=new r(a,5,!1,a.toLowerCase(),null,!1,!1)});var ka=/[\\-:]([a-z])/g;function la(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ka,\nla);t[b]=new r(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!1,!1)});\nt.xlinkHref=new r(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar u={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ma=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(u).forEach(function(a){ma.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);u[b]=u[a]})});var na=/[\"'&<>]/;\nfunction v(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=na.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}var oa=/([A-Z])/g,pa=/^ms-/,qa=Array.isArray;function w(a,b){return{insertionMode:a,selectedValue:b}}\nfunction ra(a,b,c){switch(b){case \"select\":return w(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return w(2,null);case \"math\":return w(3,null);case \"foreignObject\":return w(1,null);case \"table\":return w(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return w(5,null);case \"colgroup\":return w(7,null);case \"tr\":return w(6,null)}return 4<=a.insertionMode||0===a.insertionMode?w(1,null):a}var sa=new Map;\nfunction ta(a,b,c){if(\"object\"!==typeof c)throw Error(l(62));b=!0;for(var d in c)if(p.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=v(d);f=v((\"\"+f).trim())}else{e=d;var g=sa.get(e);void 0!==g?e=g:(g=v(e.replace(oa,\"-$1\").toLowerCase().replace(pa,\"-ms-\")),sa.set(e,g),e=g);f=\"number\"===typeof f?0===f||p.call(u,d)?\"\"+f:f+\"px\":v((\"\"+f).trim())}b?(b=!1,a.push(' style=\"',e,\":\",f)):a.push(\";\",e,\":\",f)}}b||a.push('\"')}\nfunction x(a,b,c,d){switch(c){case \"style\":ta(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=t.hasOwnProperty(c)?t[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=b.attributeName;switch(b.type){case 3:d&&a.push(\" \",c,'=\"\"');break;case 4:!0===d?a.push(\" \",c,'=\"\"'):\n!1!==d&&a.push(\" \",c,'=\"',v(d),'\"');break;case 5:isNaN(d)||a.push(\" \",c,'=\"',v(d),'\"');break;case 6:!isNaN(d)&&1<=d&&a.push(\" \",c,'=\"',v(d),'\"');break;default:b.sanitizeURL&&(d=\"\"+d),a.push(\" \",c,'=\"',v(d),'\"')}}else if(ja(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(\" \",c,'=\"',v(d),'\"')}}\nfunction y(a,b,c){if(null!=b){if(null!=c)throw Error(l(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(l(61));b=b.__html;null!==b&&void 0!==b&&a.push(\"\"+b)}}function ua(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction va(a,b,c,d){a.push(A(c));var f=c=null,e;for(e in b)if(p.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:x(a,d,e,g)}}a.push(\">\");y(a,f,c);return\"string\"===typeof c?(a.push(v(c)),null):c}var wa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,xa=new Map;function A(a){var b=xa.get(a);if(void 0===b){if(!wa.test(a))throw Error(l(65,a));b=\"<\"+a;xa.set(a,b)}return b}\nfunction ya(a,b,c,d,f){switch(b){case \"select\":a.push(A(\"select\"));var e=null,g=null;for(n in c)if(p.call(c,n)){var h=c[n];if(null!=h)switch(n){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:x(a,d,n,h)}}a.push(\">\");y(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(A(\"option\"));var k=h=null,m=null;var n=null;for(e in c)if(p.call(c,e)){var q=c[e];if(null!=q)switch(e){case \"children\":h=q;break;case \"selected\":m=q;break;case \"dangerouslySetInnerHTML\":n=\nq;break;case \"value\":k=q;default:x(a,d,e,q)}}if(null!=g)if(c=null!==k?\"\"+k:ua(h),qa(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(' selected=\"\"');break}}else\"\"+g===c&&a.push(' selected=\"\"');else m&&a.push(' selected=\"\"');a.push(\">\");y(a,n,h);return h;case \"textarea\":a.push(A(\"textarea\"));n=g=e=null;for(h in c)if(p.call(c,h)&&(k=c[h],null!=k))switch(h){case \"children\":n=k;break;case \"value\":e=k;break;case \"defaultValue\":g=k;break;case \"dangerouslySetInnerHTML\":throw Error(l(91));default:x(a,d,\nh,k)}null===e&&null!==g&&(e=g);a.push(\">\");if(null!=n){if(null!=e)throw Error(l(92));if(qa(n)&&1<n.length)throw Error(l(93));e=\"\"+n}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");null!==e&&a.push(v(\"\"+e));return null;case \"input\":a.push(A(\"input\"));k=n=h=e=null;for(g in c)if(p.call(c,g)&&(m=c[g],null!=m))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,\"input\"));case \"defaultChecked\":k=m;break;case \"defaultValue\":h=m;break;case \"checked\":n=m;break;case \"value\":e=m;break;\ndefault:x(a,d,g,m)}null!==n?x(a,d,\"checked\",n):null!==k&&x(a,d,\"checked\",k);null!==e?x(a,d,\"value\",e):null!==h&&x(a,d,\"value\",h);a.push(\"/>\");return null;case \"menuitem\":a.push(A(\"menuitem\"));for(var C in c)if(p.call(c,C)&&(e=c[C],null!=e))switch(C){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(400));default:x(a,d,C,e)}a.push(\">\");return null;case \"title\":a.push(A(\"title\"));e=null;for(q in c)if(p.call(c,q)&&(g=c[q],null!=g))switch(q){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(l(434));\ndefault:x(a,d,q,g)}a.push(\">\");return e;case \"listing\":case \"pre\":a.push(A(b));g=e=null;for(k in c)if(p.call(c,k)&&(h=c[k],null!=h))switch(k){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:x(a,d,k,h)}a.push(\">\");if(null!=g){if(null!=e)throw Error(l(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(l(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(\"\\n\",c):a.push(\"\"+c))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");return e;\ncase \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(A(b));for(var D in c)if(p.call(c,D)&&(e=c[D],null!=e))switch(D){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,b));default:x(a,d,D,e)}a.push(\"/>\");return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return va(a,\nc,b,d);case \"html\":return 0===f.insertionMode&&a.push(\"<!DOCTYPE html>\"),va(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return va(a,c,b,d);a.push(A(b));g=e=null;for(m in c)if(p.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":ta(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ja(m)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(\" \",m,'=\"',v(h),'\"')}a.push(\">\");\ny(a,g,e);return e}}function za(a,b,c){a.push('\\x3c!--$?--\\x3e<template id=\"');if(null===c)throw Error(l(395));a.push(c);return a.push('\"></template>')}\nfunction Aa(a,b,c,d){switch(c.insertionMode){case 0:case 1:return a.push('<div hidden id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 2:return a.push('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 3:return a.push('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 4:return a.push('<table hidden id=\"'),a.push(b.segmentPrefix),\nb=d.toString(16),a.push(b),a.push('\">');case 5:return a.push('<table hidden><tbody id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 6:return a.push('<table hidden><tr id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 7:return a.push('<table hidden><colgroup id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');default:throw Error(l(397));}}\nfunction Ba(a,b){switch(b.insertionMode){case 0:case 1:return a.push(\"</div>\");case 2:return a.push(\"</svg>\");case 3:return a.push(\"</math>\");case 4:return a.push(\"</table>\");case 5:return a.push(\"</tbody></table>\");case 6:return a.push(\"</tr></table>\");case 7:return a.push(\"</colgroup></table>\");default:throw Error(l(397));}}var Ca=/[<\\u2028\\u2029]/g;\nfunction Da(a){return JSON.stringify(a).replace(Ca,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nfunction Ea(a,b){b=void 0===b?\"\":b;return{bootstrapChunks:[],startInlineScript:\"<script>\",placeholderPrefix:b+\"P:\",segmentPrefix:b+\"S:\",boundaryPrefix:b+\"B:\",idPrefix:b,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:a}}function Fa(a,b,c,d){if(c.generateStaticMarkup)return a.push(v(b)),!1;\"\"===b?a=d:(d&&a.push(\"\\x3c!-- --\\x3e\"),a.push(v(b)),a=!0);return a}\nvar B=Object.assign,Ga=Symbol.for(\"react.element\"),Ha=Symbol.for(\"react.portal\"),Ia=Symbol.for(\"react.fragment\"),Ja=Symbol.for(\"react.strict_mode\"),Ka=Symbol.for(\"react.profiler\"),La=Symbol.for(\"react.provider\"),Ma=Symbol.for(\"react.context\"),Na=Symbol.for(\"react.forward_ref\"),Oa=Symbol.for(\"react.suspense\"),Pa=Symbol.for(\"react.suspense_list\"),Qa=Symbol.for(\"react.memo\"),Ra=Symbol.for(\"react.lazy\"),Sa=Symbol.for(\"react.scope\"),Ta=Symbol.for(\"react.debug_trace_mode\"),Ua=Symbol.for(\"react.legacy_hidden\"),\nVa=Symbol.for(\"react.default_value\"),Wa=Symbol.iterator;\nfunction Xa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Ia:return\"Fragment\";case Ha:return\"Portal\";case Ka:return\"Profiler\";case Ja:return\"StrictMode\";case Oa:return\"Suspense\";case Pa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ma:return(a.displayName||\"Context\")+\".Consumer\";case La:return(a._context.displayName||\"Context\")+\".Provider\";case Na:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Qa:return b=a.displayName||null,null!==b?b:Xa(a.type)||\"Memo\";case Ra:b=a._payload;a=a._init;try{return Xa(a(b))}catch(c){}}return null}var Ya={};function Za(a,b){a=a.contextTypes;if(!a)return Ya;var c={},d;for(d in a)c[d]=b[d];return c}var E=null;\nfunction F(a,b){if(a!==b){a.context._currentValue2=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(l(401));}else{if(null===c)throw Error(l(401));F(a,c)}b.context._currentValue2=b.value}}function $a(a){a.context._currentValue2=a.parentValue;a=a.parent;null!==a&&$a(a)}function ab(a){var b=a.parent;null!==b&&ab(b);a.context._currentValue2=a.value}\nfunction bb(a,b){a.context._currentValue2=a.parentValue;a=a.parent;if(null===a)throw Error(l(402));a.depth===b.depth?F(a,b):bb(a,b)}function cb(a,b){var c=b.parent;if(null===c)throw Error(l(402));a.depth===c.depth?F(a,c):cb(a,c);b.context._currentValue2=b.value}function G(a){var b=E;b!==a&&(null===b?ab(a):null===a?$a(b):b.depth===a.depth?F(b,a):b.depth>a.depth?bb(b,a):cb(b,a),E=a)}\nvar db={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction eb(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=db;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue2:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:B({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&db.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=B({},e,h)):B(e,h))}a.state=e}else e.queue=null}\nvar fb={id:1,overflow:\"\"};function gb(a,b,c){var d=a.id;a=a.overflow;var f=32-H(d)-1;d&=~(1<<f);c+=1;var e=32-H(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-H(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var H=Math.clz32?Math.clz32:hb,ib=Math.log,jb=Math.LN2;function hb(a){a>>>=0;return 0===a?32:31-(ib(a)/jb|0)|0}function kb(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar lb=\"function\"===typeof Object.is?Object.is:kb,I=null,ob=null,J=null,K=null,L=!1,M=!1,N=0,O=null,P=0;function Q(){if(null===I)throw Error(l(321));return I}function pb(){if(0<P)throw Error(l(312));return{memoizedState:null,queue:null,next:null}}function qb(){null===K?null===J?(L=!1,J=K=pb()):(L=!0,K=J):null===K.next?(L=!1,K=K.next=pb()):(L=!0,K=K.next);return K}function rb(){ob=I=null;M=!1;J=null;P=0;K=O=null}function sb(a,b){return\"function\"===typeof b?b(a):b}\nfunction tb(a,b,c){I=Q();K=qb();if(L){var d=K.queue;b=d.dispatch;if(null!==O&&(c=O.get(d),void 0!==c)){O.delete(d);d=K.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);K.memoizedState=d;return[d,b]}return[K.memoizedState,b]}a=a===sb?\"function\"===typeof b?b():b:void 0!==c?c(b):b;K.memoizedState=a;a=K.queue={last:null,dispatch:null};a=a.dispatch=ub.bind(null,I,a);return[K.memoizedState,a]}\nfunction vb(a,b){I=Q();K=qb();b=void 0===b?null:b;if(null!==K){var c=K.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!lb(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();K.memoizedState=[a,b];return a}function ub(a,b,c){if(25<=P)throw Error(l(301));if(a===I)if(M=!0,a={action:c,next:null},null===O&&(O=new Map),c=O.get(b),void 0===c)O.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function wb(){throw Error(l(394));}\nfunction R(){}\nvar xb={readContext:function(a){return a._currentValue2},useContext:function(a){Q();return a._currentValue2},useMemo:vb,useReducer:tb,useRef:function(a){I=Q();K=qb();var b=K.memoizedState;return null===b?(a={current:a},K.memoizedState=a):b},useState:function(a){return tb(sb,a)},useInsertionEffect:R,useLayoutEffect:function(){},useCallback:function(a,b){return vb(function(){return a},b)},useImperativeHandle:R,useEffect:R,useDebugValue:R,useDeferredValue:function(a){Q();return a},useTransition:function(){Q();return[!1,\nwb]},useId:function(){var a=ob.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-H(a)-1)).toString(32)+b;var c=S;if(null===c)throw Error(l(404));b=N++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){Q();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(l(407));return c()}},S=null,yb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function zb(a){console.error(a);return null}\nfunction T(){}\nfunction Ab(a,b,c,d,f,e,g,h,k){var m=[],n=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:n,pingedTasks:m,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?zb:f,onAllReady:void 0===e?T:e,onShellReady:void 0===g?T:g,onShellError:void 0===h?T:h,onFatalError:void 0===k?T:k};c=U(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Bb(b,a,null,c,n,Ya,null,fb);m.push(a);return b}function Bb(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var k={node:b,ping:function(){var b=a.pingedTasks;b.push(k);1===b.length&&Cb(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(k);return k}function U(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction V(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function W(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,a.destination.destroy(b)):(a.status=1,a.fatalError=b)}\nfunction Db(a,b,c,d,f){I={};ob=b;N=0;for(a=c(d,f);M;)M=!1,N=0,P+=1,K=null,a=c(d,f);rb();return a}function Eb(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(l(108,Xa(d)||\"Unknown\",h));d=B({},g,c)}b.legacyContext=d;X(a,b,f);b.legacyContext=g}else X(a,b,f)}\nfunction Fb(a,b){if(a&&a.defaultProps){b=B({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Gb(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=Za(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue2:f);eb(e,c,d,f);Eb(a,b,e,c)}else{e=Za(c,b.legacyContext);f=Db(a,b,c,d,e);var g=0!==N;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)eb(f,c,d,e),Eb(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=gb(d,1,0);try{X(a,b,f)}finally{b.treeContext=d}}else X(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=ya(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=ra(g,c,d);Hb(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(\"</\",c,\">\")}f.lastPushedText=!1}else{switch(c){case Ua:case Ta:case Ja:case Ka:case Ia:X(a,b,d.children);return;\ncase Pa:X(a,b,d.children);return;case Sa:throw Error(l(343));case Oa:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},k=U(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(k);f.lastPushedText=!1;var m=U(a,0,null,f.formatContext,!1,!1);m.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=m;try{if(Hb(a,\nb,d),a.responseState.generateStaticMarkup||m.lastPushedText&&m.textEmbedded&&m.chunks.push(\"\\x3c!-- --\\x3e\"),m.status=1,Y(h,m),0===h.pendingTasks)break a}catch(n){m.status=4,h.forceClientRender=!0,h.errorDigest=V(a,n)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Bb(a,e,c,k,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case Na:d=Db(a,b,c.render,d,f);if(0!==N){c=b.treeContext;b.treeContext=gb(c,1,0);try{X(a,b,d)}finally{b.treeContext=\nc}}else X(a,b,d);return;case Qa:c=c.type;d=Fb(c,d);Gb(a,b,c,d,f);return;case La:f=d.children;c=c._context;d=d.value;e=c._currentValue2;c._currentValue2=d;g=E;E=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;X(a,b,f);a=E;if(null===a)throw Error(l(403));d=a.parentValue;a.context._currentValue2=d===Va?a.context._defaultValue:d;a=E=a.parent;b.context=a;return;case Ma:d=d.children;d=d(c._currentValue2);X(a,b,d);return;case Ra:f=c._init;c=f(c._payload);d=Fb(c,d);Gb(a,\nb,c,d,void 0);return}throw Error(l(130,null==c?c:typeof c,\"\"));}}\nfunction X(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Ga:Gb(a,b,c.type,c.props,c.ref);return;case Ha:throw Error(l(257));case Ra:var d=c._init;c=d(c._payload);X(a,b,c);return}if(qa(c)){Ib(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=Wa&&c[Wa]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);Ib(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(l(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function Ib(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=gb(e,d,f);try{Hb(a,b,c[f])}finally{b.treeContext=e}}}\nfunction Hb(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return X(a,b,c)}catch(k){if(rb(),\"object\"===typeof k&&null!==k&&\"function\"===typeof k.then){c=k;var g=b.blockedSegment,h=U(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Bb(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;G(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,G(e),k;}}function Jb(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;Kb(this,b,a)}\nfunction Lb(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.push(null))):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(l(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return Lb(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,\nd()))}function Y(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&Y(a,c)}else a.completedSegments.push(b)}\nfunction Kb(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(l(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=T,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&Y(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(Jb,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(Y(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Cb(a){if(2!==a.status){var b=E,c=yb.current;yb.current=xb;var d=S;S=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,k=g.blockedSegment;if(0===k.status){G(g.context);try{X(h,g,g.node),h.responseState.generateStaticMarkup||k.lastPushedText&&k.textEmbedded&&k.chunks.push(\"\\x3c!-- --\\x3e\"),g.abortSet.delete(g),k.status=1,Kb(h,g.blockedBoundary,k)}catch(z){if(rb(),\"object\"===typeof z&&null!==z&&\"function\"===typeof z.then){var m=g.ping;z.then(m,m)}else{g.abortSet.delete(g);\nk.status=4;var n=g.blockedBoundary,q=z,C=V(h,q);null===n?W(h,q):(n.pendingTasks--,n.forceClientRender||(n.forceClientRender=!0,n.errorDigest=C,n.parentFlushed&&h.clientRenderedBoundaries.push(n)));h.allPendingTasks--;if(0===h.allPendingTasks){var D=h.onAllReady;D()}}}finally{}}}f.splice(0,e);null!==a.destination&&Mb(a,a.destination)}catch(z){V(a,z),W(a,z)}finally{S=d,yb.current=c,c===xb&&G(b)}}}\nfunction Z(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;b.push('<template id=\"');b.push(a.placeholderPrefix);a=d.toString(16);b.push(a);return b.push('\"></template>');case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)b.push(d[e]);f=Nb(a,b,f)}for(;e<d.length-1;e++)b.push(d[e]);e<d.length&&(f=b.push(d[e]));return f;default:throw Error(l(390));}}\nfunction Nb(a,b,c){var d=c.boundary;if(null===d)return Z(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)return a.responseState.generateStaticMarkup||(d=d.errorDigest,b.push(\"\\x3c!--$!--\\x3e\"),b.push(\"<template\"),d&&(b.push(' data-dgst=\"'),d=v(d),b.push(d),b.push('\"')),b.push(\"></template>\")),Z(a,b,c),a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\"),a;if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;\nvar e=f.nextSuspenseID++;f=f.boundaryPrefix+e.toString(16);d=d.id=f;za(b,a.responseState,d);Z(a,b,c);return b.push(\"\\x3c!--/$--\\x3e\")}if(d.byteSize>a.progressiveChunkSize)return d.rootSegmentID=a.nextSegmentId++,a.completedBoundaries.push(d),za(b,a.responseState,d.id),Z(a,b,c),b.push(\"\\x3c!--/$--\\x3e\");a.responseState.generateStaticMarkup||b.push(\"\\x3c!--$--\\x3e\");c=d.completedSegments;if(1!==c.length)throw Error(l(391));Nb(a,b,c[0]);a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\");\nreturn a}function Ob(a,b,c){Aa(b,a.responseState,c.formatContext,c.id);Nb(a,b,c);return Ba(b,c.formatContext)}\nfunction Pb(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)Qb(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;b.push(a.startInlineScript);a.sentCompleteBoundaryFunction?b.push('$RC(\"'):(a.sentCompleteBoundaryFunction=!0,b.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'));if(null===\nd)throw Error(l(395));c=c.toString(16);b.push(d);b.push('\",\"');b.push(a.segmentPrefix);b.push(c);return b.push('\")\\x3c/script>')}\nfunction Qb(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(l(392));return Ob(a,b,d)}Ob(a,b,d);a=a.responseState;b.push(a.startInlineScript);a.sentCompleteSegmentFunction?b.push('$RS(\"'):(a.sentCompleteSegmentFunction=!0,b.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'));b.push(a.segmentPrefix);\nf=f.toString(16);b.push(f);b.push('\",\"');b.push(a.placeholderPrefix);b.push(f);return b.push('\")\\x3c/script>')}\nfunction Mb(a,b){try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){Nb(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)b.push(d[c]);c<d.length&&b.push(d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,k=g.id,m=g.errorDigest,n=g.errorMessage,q=g.errorComponentStack;d.push(h.startInlineScript);h.sentClientRenderFunction?d.push('$RX(\"'):(h.sentClientRenderFunction=!0,d.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'));\nif(null===k)throw Error(l(395));d.push(k);d.push('\"');if(m||n||q){d.push(\",\");var C=Da(m||\"\");d.push(C)}if(n||q){d.push(\",\");var D=Da(n||\"\");d.push(D)}if(q){d.push(\",\");var z=Da(q);d.push(z)}if(!d.push(\")\\x3c/script>\")){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var ba=a.completedBoundaries;for(e=0;e<ba.length;e++)if(!Pb(a,b,ba[e])){a.destination=null;e++;ba.splice(0,e);return}ba.splice(0,e);var ca=a.partialBoundaries;for(e=0;e<ca.length;e++){var mb=ca[e];a:{f=a;g=b;var da=mb.completedSegments;\nfor(h=0;h<da.length;h++)if(!Qb(f,g,mb,da[h])){h++;da.splice(0,h);var nb=!1;break a}da.splice(0,h);nb=!0}if(!nb){a.destination=null;e++;ca.splice(0,e);return}}ca.splice(0,e);var ea=a.completedBoundaries;for(e=0;e<ea.length;e++)if(!Pb(a,b,ea[e])){a.destination=null;e++;ea.splice(0,e);return}ea.splice(0,e)}finally{0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.push(null)}}\nfunction Rb(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return Lb(c,a,b)});c.clear();null!==a.destination&&Mb(a,a.destination)}catch(d){V(a,d),W(a,d)}}function Sb(){}\nfunction Tb(a,b,c,d){var f=!1,e=null,g=\"\",h={push:function(a){null!==a&&(g+=a);return!0},destroy:function(a){f=!0;e=a}},k=!1;a=Ab(a,Ea(c,b?b.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},Infinity,Sb,void 0,function(){k=!0},void 0,void 0);Cb(a);Rb(a,d);if(1===a.status)a.status=2,h.destroy(a.fatalError);else if(2!==a.status&&null===a.destination){a.destination=h;try{Mb(a,h)}catch(m){V(a,m),W(a,m)}}if(f)throw e;if(!k)throw Error(l(426));return g}\nexports.renderToNodeStream=function(){throw Error(l(207));};exports.renderToStaticMarkup=function(a,b){return Tb(a,b,!0,'The server used \"renderToStaticMarkup\" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};exports.renderToStaticNodeStream=function(){throw Error(l(208));};exports.renderToString=function(a,b){return Tb(a,b,!1,'The server used \"renderToString\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};\nexports.version=\"18.3.1\";\n","/**\n * @license React\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function k(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var l=null,n=0;\nfunction p(a,b){if(0!==b.length)if(512<b.length)0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=new Uint8Array(512),n=0),a.enqueue(b);else{var c=l.length-n;c<b.length&&(0===c?a.enqueue(l):(l.set(b.subarray(0,c),n),a.enqueue(l),b=b.subarray(c)),l=new Uint8Array(512),n=0);l.set(b,n);n+=b.length}}function t(a,b){p(a,b);return!0}function ba(a){l&&0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=null,n=0)}var ca=new TextEncoder;function u(a){return ca.encode(a)}function w(a){return ca.encode(a)}\nfunction da(a,b){\"function\"===typeof a.error?a.error(b):a.close()}var x=Object.prototype.hasOwnProperty,ea=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,fa={},ha={};\nfunction ia(a){if(x.call(ha,a))return!0;if(x.call(fa,a))return!1;if(ea.test(a))return ha[a]=!0;fa[a]=!0;return!1}function y(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new y(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new y(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new y(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new y(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new y(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new y(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new y(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new y(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new y(a,5,!1,a.toLowerCase(),null,!1,!1)});var ja=/[\\-:]([a-z])/g;function ka(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ja,\nka);z[b]=new y(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new y(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar B={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},la=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(B).forEach(function(a){la.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);B[b]=B[a]})});var oa=/[\"'&<>]/;\nfunction C(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=oa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nvar pa=/([A-Z])/g,qa=/^ms-/,ra=Array.isArray,sa=w(\"<script>\"),ta=w(\"\\x3c/script>\"),ua=w('<script src=\"'),va=w('<script type=\"module\" src=\"'),wa=w('\" async=\"\">\\x3c/script>'),xa=/(<\\/|<)(s)(cript)/gi;function ya(a,b,c,d){return\"\"+b+(\"s\"===c?\"\\\\u0073\":\"\\\\u0053\")+d}\nfunction za(a,b,c,d,f){a=void 0===a?\"\":a;b=void 0===b?sa:w('<script nonce=\"'+C(b)+'\">');var e=[];void 0!==c&&e.push(b,u((\"\"+c).replace(xa,ya)),ta);if(void 0!==d)for(c=0;c<d.length;c++)e.push(ua,u(C(d[c])),wa);if(void 0!==f)for(d=0;d<f.length;d++)e.push(va,u(C(f[d])),wa);return{bootstrapChunks:e,startInlineScript:b,placeholderPrefix:w(a+\"P:\"),segmentPrefix:w(a+\"S:\"),boundaryPrefix:a+\"B:\",idPrefix:a,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}\nfunction D(a,b){return{insertionMode:a,selectedValue:b}}function Aa(a){return D(\"http://www.w3.org/2000/svg\"===a?2:\"http://www.w3.org/1998/Math/MathML\"===a?3:0,null)}\nfunction Ba(a,b,c){switch(b){case \"select\":return D(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return D(2,null);case \"math\":return D(3,null);case \"foreignObject\":return D(1,null);case \"table\":return D(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return D(5,null);case \"colgroup\":return D(7,null);case \"tr\":return D(6,null)}return 4<=a.insertionMode||0===a.insertionMode?D(1,null):a}var Ca=w(\"\\x3c!-- --\\x3e\");function Da(a,b,c,d){if(\"\"===b)return d;d&&a.push(Ca);a.push(u(C(b)));return!0}\nvar Ea=new Map,Fa=w(' style=\"'),Ga=w(\":\"),Ha=w(\";\");\nfunction Ia(a,b,c){if(\"object\"!==typeof c)throw Error(k(62));b=!0;for(var d in c)if(x.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=u(C(d));f=u(C((\"\"+f).trim()))}else{e=d;var g=Ea.get(e);void 0!==g?e=g:(g=w(C(e.replace(pa,\"-$1\").toLowerCase().replace(qa,\"-ms-\"))),Ea.set(e,g),e=g);f=\"number\"===typeof f?0===f||x.call(B,d)?u(\"\"+f):u(f+\"px\"):u(C((\"\"+f).trim()))}b?(b=!1,a.push(Fa,e,Ga,f)):a.push(Ha,e,Ga,f)}}b||a.push(E)}\nvar H=w(\" \"),I=w('=\"'),E=w('\"'),Ja=w('=\"\"');\nfunction J(a,b,c,d){switch(c){case \"style\":Ia(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=z.hasOwnProperty(c)?z[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=u(b.attributeName);switch(b.type){case 3:d&&a.push(H,c,Ja);break;case 4:!0===d?a.push(H,c,Ja):!1!==\nd&&a.push(H,c,I,u(C(d)),E);break;case 5:isNaN(d)||a.push(H,c,I,u(C(d)),E);break;case 6:!isNaN(d)&&1<=d&&a.push(H,c,I,u(C(d)),E);break;default:b.sanitizeURL&&(d=\"\"+d),a.push(H,c,I,u(C(d)),E)}}else if(ia(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(H,u(c),I,u(C(d)),E)}}var K=w(\">\"),Ka=w(\"/>\");\nfunction L(a,b,c){if(null!=b){if(null!=c)throw Error(k(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(k(61));b=b.__html;null!==b&&void 0!==b&&a.push(u(\"\"+b))}}function La(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ma=w(' selected=\"\"');\nfunction Na(a,b,c,d){a.push(M(c));var f=c=null,e;for(e in b)if(x.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:J(a,d,e,g)}}a.push(K);L(a,f,c);return\"string\"===typeof c?(a.push(u(C(c))),null):c}var Oa=w(\"\\n\"),Pa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Qa=new Map;function M(a){var b=Qa.get(a);if(void 0===b){if(!Pa.test(a))throw Error(k(65,a));b=w(\"<\"+a);Qa.set(a,b)}return b}var Ra=w(\"<!DOCTYPE html>\");\nfunction Sa(a,b,c,d,f){switch(b){case \"select\":a.push(M(\"select\"));var e=null,g=null;for(r in c)if(x.call(c,r)){var h=c[r];if(null!=h)switch(r){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:J(a,d,r,h)}}a.push(K);L(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(M(\"option\"));var m=h=null,q=null;var r=null;for(e in c)if(x.call(c,e)){var v=c[e];if(null!=v)switch(e){case \"children\":h=v;break;case \"selected\":q=v;break;case \"dangerouslySetInnerHTML\":r=\nv;break;case \"value\":m=v;default:J(a,d,e,v)}}if(null!=g)if(c=null!==m?\"\"+m:La(h),ra(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(Ma);break}}else\"\"+g===c&&a.push(Ma);else q&&a.push(Ma);a.push(K);L(a,r,h);return h;case \"textarea\":a.push(M(\"textarea\"));r=g=e=null;for(h in c)if(x.call(c,h)&&(m=c[h],null!=m))switch(h){case \"children\":r=m;break;case \"value\":e=m;break;case \"defaultValue\":g=m;break;case \"dangerouslySetInnerHTML\":throw Error(k(91));default:J(a,d,h,m)}null===e&&null!==g&&(e=g);a.push(K);\nif(null!=r){if(null!=e)throw Error(k(92));if(ra(r)&&1<r.length)throw Error(k(93));e=\"\"+r}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);null!==e&&a.push(u(C(\"\"+e)));return null;case \"input\":a.push(M(\"input\"));m=r=h=e=null;for(g in c)if(x.call(c,g)&&(q=c[g],null!=q))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,\"input\"));case \"defaultChecked\":m=q;break;case \"defaultValue\":h=q;break;case \"checked\":r=q;break;case \"value\":e=q;break;default:J(a,d,g,q)}null!==r?J(a,d,\"checked\",\nr):null!==m&&J(a,d,\"checked\",m);null!==e?J(a,d,\"value\",e):null!==h&&J(a,d,\"value\",h);a.push(Ka);return null;case \"menuitem\":a.push(M(\"menuitem\"));for(var A in c)if(x.call(c,A)&&(e=c[A],null!=e))switch(A){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(400));default:J(a,d,A,e)}a.push(K);return null;case \"title\":a.push(M(\"title\"));e=null;for(v in c)if(x.call(c,v)&&(g=c[v],null!=g))switch(v){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(k(434));default:J(a,d,v,g)}a.push(K);\nreturn e;case \"listing\":case \"pre\":a.push(M(b));g=e=null;for(m in c)if(x.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:J(a,d,m,h)}a.push(K);if(null!=g){if(null!=e)throw Error(k(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(k(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(Oa,u(c)):a.push(u(\"\"+c)))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);return e;case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(M(b));\nfor(var F in c)if(x.call(c,F)&&(e=c[F],null!=e))switch(F){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,b));default:J(a,d,F,e)}a.push(Ka);return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return Na(a,c,b,d);case \"html\":return 0===f.insertionMode&&a.push(Ra),Na(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return Na(a,c,b,d);a.push(M(b));\ng=e=null;for(q in c)if(x.call(c,q)&&(h=c[q],null!=h))switch(q){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":Ia(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ia(q)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(H,u(q),I,u(C(h)),E)}a.push(K);L(a,g,e);return e}}\nvar Ta=w(\"</\"),Ua=w(\">\"),Va=w('<template id=\"'),Wa=w('\"></template>'),Xa=w(\"\\x3c!--$--\\x3e\"),Ya=w('\\x3c!--$?--\\x3e<template id=\"'),Za=w('\"></template>'),$a=w(\"\\x3c!--$!--\\x3e\"),ab=w(\"\\x3c!--/$--\\x3e\"),bb=w(\"<template\"),cb=w('\"'),db=w(' data-dgst=\"');w(' data-msg=\"');w(' data-stck=\"');var eb=w(\"></template>\");function fb(a,b,c){p(a,Ya);if(null===c)throw Error(k(395));p(a,c);return t(a,Za)}\nvar gb=w('<div hidden id=\"'),hb=w('\">'),ib=w(\"</div>\"),jb=w('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),kb=w('\">'),lb=w(\"</svg>\"),mb=w('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),nb=w('\">'),ob=w(\"</math>\"),pb=w('<table hidden id=\"'),qb=w('\">'),rb=w(\"</table>\"),sb=w('<table hidden><tbody id=\"'),tb=w('\">'),ub=w(\"</tbody></table>\"),vb=w('<table hidden><tr id=\"'),wb=w('\">'),xb=w(\"</tr></table>\"),yb=w('<table hidden><colgroup id=\"'),zb=w('\">'),Ab=w(\"</colgroup></table>\");\nfunction Bb(a,b,c,d){switch(c.insertionMode){case 0:case 1:return p(a,gb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,hb);case 2:return p(a,jb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,kb);case 3:return p(a,mb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,nb);case 4:return p(a,pb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,qb);case 5:return p(a,sb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,tb);case 6:return p(a,vb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,wb);case 7:return p(a,\nyb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,zb);default:throw Error(k(397));}}function Cb(a,b){switch(b.insertionMode){case 0:case 1:return t(a,ib);case 2:return t(a,lb);case 3:return t(a,ob);case 4:return t(a,rb);case 5:return t(a,ub);case 6:return t(a,xb);case 7:return t(a,Ab);default:throw Error(k(397));}}\nvar Db=w('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'),Eb=w('$RS(\"'),Gb=w('\",\"'),Hb=w('\")\\x3c/script>'),Ib=w('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'),\nJb=w('$RC(\"'),Kb=w('\",\"'),Lb=w('\")\\x3c/script>'),Mb=w('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'),Nb=w('$RX(\"'),Ob=w('\"'),Pb=w(\")\\x3c/script>\"),Qb=w(\",\"),Rb=/[<\\u2028\\u2029]/g;\nfunction Sb(a){return JSON.stringify(a).replace(Rb,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nvar N=Object.assign,Tb=Symbol.for(\"react.element\"),Ub=Symbol.for(\"react.portal\"),Vb=Symbol.for(\"react.fragment\"),Wb=Symbol.for(\"react.strict_mode\"),Xb=Symbol.for(\"react.profiler\"),Yb=Symbol.for(\"react.provider\"),Zb=Symbol.for(\"react.context\"),$b=Symbol.for(\"react.forward_ref\"),ac=Symbol.for(\"react.suspense\"),bc=Symbol.for(\"react.suspense_list\"),cc=Symbol.for(\"react.memo\"),dc=Symbol.for(\"react.lazy\"),ec=Symbol.for(\"react.scope\"),fc=Symbol.for(\"react.debug_trace_mode\"),gc=Symbol.for(\"react.legacy_hidden\"),\nhc=Symbol.for(\"react.default_value\"),ic=Symbol.iterator;\nfunction jc(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Vb:return\"Fragment\";case Ub:return\"Portal\";case Xb:return\"Profiler\";case Wb:return\"StrictMode\";case ac:return\"Suspense\";case bc:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Zb:return(a.displayName||\"Context\")+\".Consumer\";case Yb:return(a._context.displayName||\"Context\")+\".Provider\";case $b:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case cc:return b=a.displayName||null,null!==b?b:jc(a.type)||\"Memo\";case dc:b=a._payload;a=a._init;try{return jc(a(b))}catch(c){}}return null}var kc={};function lc(a,b){a=a.contextTypes;if(!a)return kc;var c={},d;for(d in a)c[d]=b[d];return c}var O=null;\nfunction P(a,b){if(a!==b){a.context._currentValue=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(k(401));}else{if(null===c)throw Error(k(401));P(a,c)}b.context._currentValue=b.value}}function mc(a){a.context._currentValue=a.parentValue;a=a.parent;null!==a&&mc(a)}function nc(a){var b=a.parent;null!==b&&nc(b);a.context._currentValue=a.value}\nfunction oc(a,b){a.context._currentValue=a.parentValue;a=a.parent;if(null===a)throw Error(k(402));a.depth===b.depth?P(a,b):oc(a,b)}function pc(a,b){var c=b.parent;if(null===c)throw Error(k(402));a.depth===c.depth?P(a,c):pc(a,c);b.context._currentValue=b.value}function Q(a){var b=O;b!==a&&(null===b?nc(a):null===a?mc(b):b.depth===a.depth?P(b,a):b.depth>a.depth?oc(b,a):pc(b,a),O=a)}\nvar qc={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction rc(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=qc;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:N({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&qc.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=N({},e,h)):N(e,h))}a.state=e}else e.queue=null}\nvar sc={id:1,overflow:\"\"};function tc(a,b,c){var d=a.id;a=a.overflow;var f=32-uc(d)-1;d&=~(1<<f);c+=1;var e=32-uc(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-uc(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var uc=Math.clz32?Math.clz32:vc,wc=Math.log,xc=Math.LN2;function vc(a){a>>>=0;return 0===a?32:31-(wc(a)/xc|0)|0}function yc(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar zc=\"function\"===typeof Object.is?Object.is:yc,R=null,Ac=null,Bc=null,S=null,T=!1,Cc=!1,U=0,V=null,Dc=0;function W(){if(null===R)throw Error(k(321));return R}function Ec(){if(0<Dc)throw Error(k(312));return{memoizedState:null,queue:null,next:null}}function Fc(){null===S?null===Bc?(T=!1,Bc=S=Ec()):(T=!0,S=Bc):null===S.next?(T=!1,S=S.next=Ec()):(T=!0,S=S.next);return S}function Gc(){Ac=R=null;Cc=!1;Bc=null;Dc=0;S=V=null}function Hc(a,b){return\"function\"===typeof b?b(a):b}\nfunction Ic(a,b,c){R=W();S=Fc();if(T){var d=S.queue;b=d.dispatch;if(null!==V&&(c=V.get(d),void 0!==c)){V.delete(d);d=S.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);S.memoizedState=d;return[d,b]}return[S.memoizedState,b]}a=a===Hc?\"function\"===typeof b?b():b:void 0!==c?c(b):b;S.memoizedState=a;a=S.queue={last:null,dispatch:null};a=a.dispatch=Jc.bind(null,R,a);return[S.memoizedState,a]}\nfunction Kc(a,b){R=W();S=Fc();b=void 0===b?null:b;if(null!==S){var c=S.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!zc(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();S.memoizedState=[a,b];return a}function Jc(a,b,c){if(25<=Dc)throw Error(k(301));if(a===R)if(Cc=!0,a={action:c,next:null},null===V&&(V=new Map),c=V.get(b),void 0===c)V.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}\nfunction Lc(){throw Error(k(394));}function Mc(){}\nvar Oc={readContext:function(a){return a._currentValue},useContext:function(a){W();return a._currentValue},useMemo:Kc,useReducer:Ic,useRef:function(a){R=W();S=Fc();var b=S.memoizedState;return null===b?(a={current:a},S.memoizedState=a):b},useState:function(a){return Ic(Hc,a)},useInsertionEffect:Mc,useLayoutEffect:function(){},useCallback:function(a,b){return Kc(function(){return a},b)},useImperativeHandle:Mc,useEffect:Mc,useDebugValue:Mc,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[!1,Lc]},useId:function(){var a=Ac.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-uc(a)-1)).toString(32)+b;var c=Nc;if(null===c)throw Error(k(404));b=U++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){W();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(k(407));return c()}},Nc=null,Pc=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Qc(a){console.error(a);return null}\nfunction X(){}\nfunction Rc(a,b,c,d,f,e,g,h,m){var q=[],r=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:r,pingedTasks:q,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?Qc:f,onAllReady:void 0===e?X:e,onShellReady:void 0===g?X:g,onShellError:void 0===h?X:h,onFatalError:void 0===m?X:m};c=Sc(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Tc(b,a,null,c,r,kc,null,sc);q.push(a);return b}function Tc(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var m={node:b,ping:function(){var b=a.pingedTasks;b.push(m);1===b.length&&Uc(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(m);return m}function Sc(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction Y(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function Vc(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,da(a.destination,b)):(a.status=1,a.fatalError=b)}\nfunction Wc(a,b,c,d,f){R={};Ac=b;U=0;for(a=c(d,f);Cc;)Cc=!1,U=0,Dc+=1,S=null,a=c(d,f);Gc();return a}function Xc(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(k(108,jc(d)||\"Unknown\",h));d=N({},g,c)}b.legacyContext=d;Z(a,b,f);b.legacyContext=g}else Z(a,b,f)}\nfunction Yc(a,b){if(a&&a.defaultProps){b=N({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Zc(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=lc(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue:f);rc(e,c,d,f);Xc(a,b,e,c)}else{e=lc(c,b.legacyContext);f=Wc(a,b,c,d,e);var g=0!==U;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)rc(f,c,d,e),Xc(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=tc(d,1,0);try{Z(a,b,f)}finally{b.treeContext=d}}else Z(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=Sa(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=Ba(g,c,d);$c(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(Ta,u(c),Ua)}f.lastPushedText=!1}else{switch(c){case gc:case fc:case Wb:case Xb:case Vb:Z(a,b,d.children);return;\ncase bc:Z(a,b,d.children);return;case ec:throw Error(k(343));case ac:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},m=Sc(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(m);f.lastPushedText=!1;var q=Sc(a,0,null,f.formatContext,!1,!1);q.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=q;try{if($c(a,\nb,d),q.lastPushedText&&q.textEmbedded&&q.chunks.push(Ca),q.status=1,ad(h,q),0===h.pendingTasks)break a}catch(r){q.status=4,h.forceClientRender=!0,h.errorDigest=Y(a,r)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Tc(a,e,c,m,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case $b:d=Wc(a,b,c.render,d,f);if(0!==U){c=b.treeContext;b.treeContext=tc(c,1,0);try{Z(a,b,d)}finally{b.treeContext=c}}else Z(a,b,d);return;case cc:c=\nc.type;d=Yc(c,d);Zc(a,b,c,d,f);return;case Yb:f=d.children;c=c._context;d=d.value;e=c._currentValue;c._currentValue=d;g=O;O=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;Z(a,b,f);a=O;if(null===a)throw Error(k(403));d=a.parentValue;a.context._currentValue=d===hc?a.context._defaultValue:d;a=O=a.parent;b.context=a;return;case Zb:d=d.children;d=d(c._currentValue);Z(a,b,d);return;case dc:f=c._init;c=f(c._payload);d=Yc(c,d);Zc(a,b,c,d,void 0);return}throw Error(k(130,\nnull==c?c:typeof c,\"\"));}}\nfunction Z(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Tb:Zc(a,b,c.type,c.props,c.ref);return;case Ub:throw Error(k(257));case dc:var d=c._init;c=d(c._payload);Z(a,b,c);return}if(ra(c)){bd(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=ic&&c[ic]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);bd(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(k(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function bd(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=tc(e,d,f);try{$c(a,b,c[f])}finally{b.treeContext=e}}}\nfunction $c(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return Z(a,b,c)}catch(m){if(Gc(),\"object\"===typeof m&&null!==m&&\"function\"===typeof m.then){c=m;var g=b.blockedSegment,h=Sc(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Tc(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;Q(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,Q(e),m;}}function cd(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;dd(this,b,a)}\nfunction ed(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.close())):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(k(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return ed(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,d()))}\nfunction ad(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&ad(a,c)}else a.completedSegments.push(b)}\nfunction dd(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(k(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=X,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&ad(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(cd,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(ad(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Uc(a){if(2!==a.status){var b=O,c=Pc.current;Pc.current=Oc;var d=Nc;Nc=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,m=g.blockedSegment;if(0===m.status){Q(g.context);try{Z(h,g,g.node),m.lastPushedText&&m.textEmbedded&&m.chunks.push(Ca),g.abortSet.delete(g),m.status=1,dd(h,g.blockedBoundary,m)}catch(G){if(Gc(),\"object\"===typeof G&&null!==G&&\"function\"===typeof G.then){var q=g.ping;G.then(q,q)}else{g.abortSet.delete(g);m.status=4;var r=g.blockedBoundary,\nv=G,A=Y(h,v);null===r?Vc(h,v):(r.pendingTasks--,r.forceClientRender||(r.forceClientRender=!0,r.errorDigest=A,r.parentFlushed&&h.clientRenderedBoundaries.push(r)));h.allPendingTasks--;if(0===h.allPendingTasks){var F=h.onAllReady;F()}}}finally{}}}f.splice(0,e);null!==a.destination&&fd(a,a.destination)}catch(G){Y(a,G),Vc(a,G)}finally{Nc=d,Pc.current=c,c===Oc&&Q(b)}}}\nfunction gd(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;p(b,Va);p(b,a.placeholderPrefix);a=u(d.toString(16));p(b,a);return t(b,Wa);case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)p(b,d[e]);f=hd(a,b,f)}for(;e<d.length-1;e++)p(b,d[e]);e<d.length&&(f=t(b,d[e]));return f;default:throw Error(k(390));}}\nfunction hd(a,b,c){var d=c.boundary;if(null===d)return gd(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)d=d.errorDigest,t(b,$a),p(b,bb),d&&(p(b,db),p(b,u(C(d))),p(b,cb)),t(b,eb),gd(a,b,c);else if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;var e=f.nextSuspenseID++;f=w(f.boundaryPrefix+e.toString(16));d=d.id=f;fb(b,a.responseState,d);gd(a,b,c)}else if(d.byteSize>a.progressiveChunkSize)d.rootSegmentID=a.nextSegmentId++,\na.completedBoundaries.push(d),fb(b,a.responseState,d.id),gd(a,b,c);else{t(b,Xa);c=d.completedSegments;if(1!==c.length)throw Error(k(391));hd(a,b,c[0])}return t(b,ab)}function id(a,b,c){Bb(b,a.responseState,c.formatContext,c.id);hd(a,b,c);return Cb(b,c.formatContext)}\nfunction jd(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)kd(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;p(b,a.startInlineScript);a.sentCompleteBoundaryFunction?p(b,Jb):(a.sentCompleteBoundaryFunction=!0,p(b,Ib));if(null===d)throw Error(k(395));c=u(c.toString(16));p(b,d);p(b,Kb);p(b,a.segmentPrefix);p(b,c);return t(b,Lb)}\nfunction kd(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(k(392));return id(a,b,d)}id(a,b,d);a=a.responseState;p(b,a.startInlineScript);a.sentCompleteSegmentFunction?p(b,Eb):(a.sentCompleteSegmentFunction=!0,p(b,Db));p(b,a.segmentPrefix);f=u(f.toString(16));p(b,f);p(b,Gb);p(b,a.placeholderPrefix);p(b,f);return t(b,Hb)}\nfunction fd(a,b){l=new Uint8Array(512);n=0;try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){hd(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)p(b,d[c]);c<d.length&&t(b,d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,m=g.id,q=g.errorDigest,r=g.errorMessage,v=g.errorComponentStack;p(d,h.startInlineScript);h.sentClientRenderFunction?p(d,Nb):(h.sentClientRenderFunction=!0,p(d,\nMb));if(null===m)throw Error(k(395));p(d,m);p(d,Ob);if(q||r||v)p(d,Qb),p(d,u(Sb(q||\"\")));if(r||v)p(d,Qb),p(d,u(Sb(r||\"\")));v&&(p(d,Qb),p(d,u(Sb(v))));if(!t(d,Pb)){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var A=a.completedBoundaries;for(e=0;e<A.length;e++)if(!jd(a,b,A[e])){a.destination=null;e++;A.splice(0,e);return}A.splice(0,e);ba(b);l=new Uint8Array(512);n=0;var F=a.partialBoundaries;for(e=0;e<F.length;e++){var G=F[e];a:{f=a;g=b;var ma=G.completedSegments;for(h=0;h<ma.length;h++)if(!kd(f,\ng,G,ma[h])){h++;ma.splice(0,h);var Fb=!1;break a}ma.splice(0,h);Fb=!0}if(!Fb){a.destination=null;e++;F.splice(0,e);return}}F.splice(0,e);var na=a.completedBoundaries;for(e=0;e<na.length;e++)if(!jd(a,b,na[e])){a.destination=null;e++;na.splice(0,e);return}na.splice(0,e)}finally{ba(b),0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.close()}}\nfunction ld(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return ed(c,a,b)});c.clear();null!==a.destination&&fd(a,a.destination)}catch(d){Y(a,d),Vc(a,d)}}\nexports.renderToReadableStream=function(a,b){return new Promise(function(c,d){var f,e,g=new Promise(function(a,b){e=a;f=b}),h=Rc(a,za(b?b.identifierPrefix:void 0,b?b.nonce:void 0,b?b.bootstrapScriptContent:void 0,b?b.bootstrapScripts:void 0,b?b.bootstrapModules:void 0),Aa(b?b.namespaceURI:void 0),b?b.progressiveChunkSize:void 0,b?b.onError:void 0,e,function(){var a=new ReadableStream({type:\"bytes\",pull:function(a){if(1===h.status)h.status=2,da(a,h.fatalError);else if(2!==h.status&&null===h.destination){h.destination=\na;try{fd(h,a)}catch(A){Y(h,A),Vc(h,A)}}},cancel:function(){ld(h)}},{highWaterMark:0});a.allReady=g;c(a)},function(a){g.catch(function(){});d(a)},f);if(b&&b.signal){var m=b.signal,q=function(){ld(h,m.reason);m.removeEventListener(\"abort\",q)};m.addEventListener(\"abort\",q)}Uc(h)})};exports.version=\"18.3.1\";\n","'use strict';\n\nvar l, s;\nif (process.env.NODE_ENV === 'production') {\n  l = require('./cjs/react-dom-server-legacy.browser.production.min.js');\n  s = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n  l = require('./cjs/react-dom-server-legacy.browser.development.js');\n  s = require('./cjs/react-dom-server.browser.development.js');\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\n","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n  didCatch: false,\n  error: null\n};\nclass ErrorBoundary extends Component {\n  constructor(props) {\n    super(props);\n    this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n    this.state = initialState;\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      didCatch: true,\n      error\n    };\n  }\n  resetErrorBoundary() {\n    const {\n      error\n    } = this.state;\n    if (error !== null) {\n      var _this$props$onReset, _this$props;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n        args,\n        reason: \"imperative-api\"\n      });\n      this.setState(initialState);\n    }\n  }\n  componentDidCatch(error, info) {\n    var _this$props$onError, _this$props2;\n    (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const {\n      didCatch\n    } = this.state;\n    const {\n      resetKeys\n    } = this.props;\n\n    // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n    // we'd end up resetting the error boundary immediately.\n    // This would likely trigger a second error to be thrown.\n    // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n    if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n      var _this$props$onReset2, _this$props3;\n      (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n        next: resetKeys,\n        prev: prevProps.resetKeys,\n        reason: \"keys\"\n      });\n      this.setState(initialState);\n    }\n  }\n  render() {\n    const {\n      children,\n      fallbackRender,\n      FallbackComponent,\n      fallback\n    } = this.props;\n    const {\n      didCatch,\n      error\n    } = this.state;\n    let childToRender = children;\n    if (didCatch) {\n      const props = {\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      };\n      if (typeof fallbackRender === \"function\") {\n        childToRender = fallbackRender(props);\n      } else if (FallbackComponent) {\n        childToRender = createElement(FallbackComponent, props);\n      } else if (fallback === null || isValidElement(fallback)) {\n        childToRender = fallback;\n      } else {\n        throw error;\n      }\n    }\n    return createElement(ErrorBoundaryContext.Provider, {\n      value: {\n        didCatch,\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      }\n    }, childToRender);\n  }\n}\nfunction hasArrayChanged() {\n  let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n  if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n    throw new Error(\"ErrorBoundaryContext not found\");\n  }\n}\n\nfunction useErrorBoundary() {\n  const context = useContext(ErrorBoundaryContext);\n  assertErrorBoundaryContext(context);\n  const [state, setState] = useState({\n    error: null,\n    hasError: false\n  });\n  const memoized = useMemo(() => ({\n    resetBoundary: () => {\n      context.resetErrorBoundary();\n      setState({\n        error: null,\n        hasError: false\n      });\n    },\n    showBoundary: error => setState({\n      error,\n      hasError: true\n    })\n  }), [context.resetErrorBoundary]);\n  if (state.hasError) {\n    throw state.error;\n  }\n  return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n  const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n    ...props,\n    ref\n  })));\n\n  // Format for display in DevTools\n  const name = component.displayName || component.name || \"Unknown\";\n  Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n  return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import React from 'react';\nexport default React.createContext(null);","import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   */\n  source: Observable<any> | undefined;\n\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   */\n  operator: Operator<any, T> | undefined;\n\n  /**\n   * @constructor\n   * @param {Function} subscribe the function that is called when the Observable is\n   * initially subscribed to. This function is given a Subscriber, to which new values\n   * can be `next`ed, or an `error` method can be called to raise an error, or\n   * `complete` can be called to notify of a successful completion.\n   */\n  constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n    if (subscribe) {\n      this._subscribe = subscribe;\n    }\n  }\n\n  // HACK: Since TypeScript inherits static properties too, we have to\n  // fight against TypeScript here so Subject can have a different static create signature\n  /**\n   * Creates a new Observable by calling the Observable constructor\n   * @owner Observable\n   * @method create\n   * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n   * @return {Observable} a new observable\n   * @nocollapse\n   * @deprecated Use `new Observable()` instead. Will be removed in v8.\n   */\n  static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n    return new Observable<T>(subscribe);\n  };\n\n  /**\n   * Creates a new Observable, with this Observable instance as the source, and the passed\n   * operator defined as the new observable's operator.\n   * @method lift\n   * @param operator the operator defining the operation to take on the observable\n   * @return a new observable with the Operator applied\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   * If you have implemented an operator using `lift`, it is recommended that you create an\n   * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n   * scratch\" section here: https://rxjs.dev/guide/operators\n   */\n  lift<R>(operator?: Operator<T, R>): Observable<R> {\n    const observable = new Observable<R>();\n    observable.source = this;\n    observable.operator = operator;\n    return observable;\n  }\n\n  subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n  /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n  subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n  /**\n   * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n   *\n   * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n   *\n   * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n   * might be for example a function that you passed to Observable's constructor, but most of the time it is\n   * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n   * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n   * the thought.\n   *\n   * Apart from starting the execution of an Observable, this method allows you to listen for values\n   * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n   * of the following ways.\n   *\n   * The first way is creating an object that implements {@link Observer} interface. It should have methods\n   * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n   * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n   * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n   * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n   * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n   * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n   * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n   * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n   * an `error` method to avoid missing thrown errors.\n   *\n   * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n   * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n   * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n   * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n   * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n   * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n   *\n   * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n   * and you also handled emissions internally by using operators (e.g. using `tap`).\n   *\n   * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n   * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n   * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n   * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n   *\n   * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n   * It is an Observable itself that decides when these functions will be called. For example {@link of}\n   * by default emits all its values synchronously. Always check documentation for how given Observable\n   * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n   *\n   * #### Examples\n   *\n   * Subscribe with an {@link guide/observer Observer}\n   *\n   * ```ts\n   * import { of } from 'rxjs';\n   *\n   * const sumObserver = {\n   *   sum: 0,\n   *   next(value) {\n   *     console.log('Adding: ' + value);\n   *     this.sum = this.sum + value;\n   *   },\n   *   error() {\n   *     // We actually could just remove this method,\n   *     // since we do not really care about errors right now.\n   *   },\n   *   complete() {\n   *     console.log('Sum equals: ' + this.sum);\n   *   }\n   * };\n   *\n   * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n   *   .subscribe(sumObserver);\n   *\n   * // Logs:\n   * // 'Adding: 1'\n   * // 'Adding: 2'\n   * // 'Adding: 3'\n   * // 'Sum equals: 6'\n   * ```\n   *\n   * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n   *\n   * ```ts\n   * import { of } from 'rxjs'\n   *\n   * let sum = 0;\n   *\n   * of(1, 2, 3).subscribe(\n   *   value => {\n   *     console.log('Adding: ' + value);\n   *     sum = sum + value;\n   *   },\n   *   undefined,\n   *   () => console.log('Sum equals: ' + sum)\n   * );\n   *\n   * // Logs:\n   * // 'Adding: 1'\n   * // 'Adding: 2'\n   * // 'Adding: 3'\n   * // 'Sum equals: 6'\n   * ```\n   *\n   * Cancel a subscription\n   *\n   * ```ts\n   * import { interval } from 'rxjs';\n   *\n   * const subscription = interval(1000).subscribe({\n   *   next(num) {\n   *     console.log(num)\n   *   },\n   *   complete() {\n   *     // Will not be called, even when cancelling subscription.\n   *     console.log('completed!');\n   *   }\n   * });\n   *\n   * setTimeout(() => {\n   *   subscription.unsubscribe();\n   *   console.log('unsubscribed!');\n   * }, 2500);\n   *\n   * // Logs:\n   * // 0 after 1s\n   * // 1 after 2s\n   * // 'unsubscribed!' after 2.5s\n   * ```\n   *\n   * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n   * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n   * Observable.\n   * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n   * the error will be thrown asynchronously as unhandled.\n   * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n   * @return {Subscription} a subscription reference to the registered handlers\n   * @method subscribe\n   */\n  subscribe(\n    observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n    error?: ((error: any) => void) | null,\n    complete?: (() => void) | null\n  ): Subscription {\n    const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n    errorContext(() => {\n      const { operator, source } = this;\n      subscriber.add(\n        operator\n          ? // We're dealing with a subscription in the\n            // operator chain to one of our lifted operators.\n            operator.call(subscriber, source)\n          : source\n          ? // If `source` has a value, but `operator` does not, something that\n            // had intimate knowledge of our API, like our `Subject`, must have\n            // set it. We're going to just call `_subscribe` directly.\n            this._subscribe(subscriber)\n          : // In all other cases, we're likely wrapping a user-provided initializer\n            // function, so we need to catch errors and handle them appropriately.\n            this._trySubscribe(subscriber)\n      );\n    });\n\n    return subscriber;\n  }\n\n  /** @internal */\n  protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n    try {\n      return this._subscribe(sink);\n    } catch (err) {\n      // We don't need to return anything in this case,\n      // because it's just going to try to `add()` to a subscription\n      // above.\n      sink.error(err);\n    }\n  }\n\n  /**\n   * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n   * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n   *\n   * **WARNING**: Only use this with observables you *know* will complete. If the source\n   * observable does not complete, you will end up with a promise that is hung up, and\n   * potentially all of the state of an async function hanging out in memory. To avoid\n   * this situation, look into adding something like {@link timeout}, {@link take},\n   * {@link takeWhile}, or {@link takeUntil} amongst others.\n   *\n   * #### Example\n   *\n   * ```ts\n   * import { interval, take } from 'rxjs';\n   *\n   * const source$ = interval(1000).pipe(take(4));\n   *\n   * async function getTotal() {\n   *   let total = 0;\n   *\n   *   await source$.forEach(value => {\n   *     total += value;\n   *     console.log('observable -> ' + value);\n   *   });\n   *\n   *   return total;\n   * }\n   *\n   * getTotal().then(\n   *   total => console.log('Total: ' + total)\n   * );\n   *\n   * // Expected:\n   * // 'observable -> 0'\n   * // 'observable -> 1'\n   * // 'observable -> 2'\n   * // 'observable -> 3'\n   * // 'Total: 6'\n   * ```\n   *\n   * @param next a handler for each value emitted by the observable\n   * @return a promise that either resolves on observable completion or\n   *  rejects with the handled error\n   */\n  forEach(next: (value: T) => void): Promise<void>;\n\n  /**\n   * @param next a handler for each value emitted by the observable\n   * @param promiseCtor a constructor function used to instantiate the Promise\n   * @return a promise that either resolves on observable completion or\n   *  rejects with the handled error\n   * @deprecated Passing a Promise constructor will no longer be available\n   * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n   * little benefit. If you need this functionality, it is recommended that you either\n   * polyfill Promise, or you create an adapter to convert the returned native promise\n   * to whatever promise implementation you wanted. Will be removed in v8.\n   */\n  forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n  forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n    promiseCtor = getPromiseCtor(promiseCtor);\n\n    return new promiseCtor<void>((resolve, reject) => {\n      const subscriber = new SafeSubscriber<T>({\n        next: (value) => {\n          try {\n            next(value);\n          } catch (err) {\n            reject(err);\n            subscriber.unsubscribe();\n          }\n        },\n        error: reject,\n        complete: resolve,\n      });\n      this.subscribe(subscriber);\n    }) as Promise<void>;\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n    return this.source?.subscribe(subscriber);\n  }\n\n  /**\n   * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n   * @method Symbol.observable\n   * @return {Observable} this instance of the observable\n   */\n  [Symbol_observable]() {\n    return this;\n  }\n\n  /* tslint:disable:max-line-length */\n  pipe(): Observable<T>;\n  pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n  pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n  pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n  pipe<A, B, C, D>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>\n  ): Observable<D>;\n  pipe<A, B, C, D, E>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>\n  ): Observable<E>;\n  pipe<A, B, C, D, E, F>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>\n  ): Observable<F>;\n  pipe<A, B, C, D, E, F, G>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>\n  ): Observable<G>;\n  pipe<A, B, C, D, E, F, G, H>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>\n  ): Observable<H>;\n  pipe<A, B, C, D, E, F, G, H, I>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>,\n    op9: OperatorFunction<H, I>\n  ): Observable<I>;\n  pipe<A, B, C, D, E, F, G, H, I>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>,\n    op9: OperatorFunction<H, I>,\n    ...operations: OperatorFunction<any, any>[]\n  ): Observable<unknown>;\n  /* tslint:enable:max-line-length */\n\n  /**\n   * Used to stitch together functional operators into a chain.\n   * @method pipe\n   * @return {Observable} the Observable result of all of the operators having\n   * been called in the order they were passed in.\n   *\n   * ## Example\n   *\n   * ```ts\n   * import { interval, filter, map, scan } from 'rxjs';\n   *\n   * interval(1000)\n   *   .pipe(\n   *     filter(x => x % 2 === 0),\n   *     map(x => x + x),\n   *     scan((acc, x) => acc + x)\n   *   )\n   *   .subscribe(x => console.log(x));\n   * ```\n   */\n  pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n    return pipeFromArray(operations)(this);\n  }\n\n  /* tslint:disable:max-line-length */\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(): Promise<T | undefined>;\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n  /* tslint:enable:max-line-length */\n\n  /**\n   * Subscribe to this Observable and get a Promise resolving on\n   * `complete` with the last emission (if any).\n   *\n   * **WARNING**: Only use this with observables you *know* will complete. If the source\n   * observable does not complete, you will end up with a promise that is hung up, and\n   * potentially all of the state of an async function hanging out in memory. To avoid\n   * this situation, look into adding something like {@link timeout}, {@link take},\n   * {@link takeWhile}, or {@link takeUntil} amongst others.\n   *\n   * @method toPromise\n   * @param [promiseCtor] a constructor function used to instantiate\n   * the Promise\n   * @return A Promise that resolves with the last value emit, or\n   * rejects on an error. If there were no emissions, Promise\n   * resolves with undefined.\n   * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n   */\n  toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n    promiseCtor = getPromiseCtor(promiseCtor);\n\n    return new promiseCtor((resolve, reject) => {\n      let value: T | undefined;\n      this.subscribe(\n        (x: T) => (value = x),\n        (err: any) => reject(err),\n        () => resolve(value)\n      );\n    }) as Promise<T | undefined>;\n  }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n  return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n  return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n  return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>,\n  fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>,\n  fn9: UnaryFunction<H, I>,\n  ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on.  \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n  return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n  if (fns.length === 0) {\n    return identity as UnaryFunction<any, any>;\n  }\n\n  if (fns.length === 1) {\n    return fns[0];\n  }\n\n  return function piped(input: T): R {\n    return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n  };\n}\n","import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n  return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n  return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n  return {\n    kind,\n    value,\n    error,\n  };\n}\n","import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n  /**\n   * A static factory for a Subscriber, given a (potentially partial) definition\n   * of an Observer.\n   * @param next The `next` callback of an Observer.\n   * @param error The `error` callback of an\n   * Observer.\n   * @param complete The `complete` callback of an\n   * Observer.\n   * @return A Subscriber wrapping the (partially defined)\n   * Observer represented by the given arguments.\n   * @nocollapse\n   * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n   * method, and there is no reason to be creating instances of `Subscriber` directly.\n   * If you have a specific use case, please file an issue.\n   */\n  static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n    return new SafeSubscriber(next, error, complete);\n  }\n\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  protected isStopped: boolean = false;\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n   */\n  constructor(destination?: Subscriber<any> | Observer<any>) {\n    super();\n    if (destination) {\n      this.destination = destination;\n      // Automatically chain subscriptions together here.\n      // if destination is a Subscription, then it is a Subscriber.\n      if (isSubscription(destination)) {\n        destination.add(this);\n      }\n    } else {\n      this.destination = EMPTY_OBSERVER;\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive notifications of type `next` from\n   * the Observable, with a value. The Observable may call this method 0 or more\n   * times.\n   * @param {T} [value] The `next` value.\n   * @return {void}\n   */\n  next(value?: T): void {\n    if (this.isStopped) {\n      handleStoppedNotification(nextNotification(value), this);\n    } else {\n      this._next(value!);\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive notifications of type `error` from\n   * the Observable, with an attached `Error`. Notifies the Observer that\n   * the Observable has experienced an error condition.\n   * @param {any} [err] The `error` exception.\n   * @return {void}\n   */\n  error(err?: any): void {\n    if (this.isStopped) {\n      handleStoppedNotification(errorNotification(err), this);\n    } else {\n      this.isStopped = true;\n      this._error(err);\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive a valueless notification of type\n   * `complete` from the Observable. Notifies the Observer that the Observable\n   * has finished sending push-based notifications.\n   * @return {void}\n   */\n  complete(): void {\n    if (this.isStopped) {\n      handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n    } else {\n      this.isStopped = true;\n      this._complete();\n    }\n  }\n\n  unsubscribe(): void {\n    if (!this.closed) {\n      this.isStopped = true;\n      super.unsubscribe();\n      this.destination = null!;\n    }\n  }\n\n  protected _next(value: T): void {\n    this.destination.next(value);\n  }\n\n  protected _error(err: any): void {\n    try {\n      this.destination.error(err);\n    } finally {\n      this.unsubscribe();\n    }\n  }\n\n  protected _complete(): void {\n    try {\n      this.destination.complete();\n    } finally {\n      this.unsubscribe();\n    }\n  }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n  return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n  constructor(private partialObserver: Partial<Observer<T>>) {}\n\n  next(value: T): void {\n    const { partialObserver } = this;\n    if (partialObserver.next) {\n      try {\n        partialObserver.next(value);\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    }\n  }\n\n  error(err: any): void {\n    const { partialObserver } = this;\n    if (partialObserver.error) {\n      try {\n        partialObserver.error(err);\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    } else {\n      handleUnhandledError(err);\n    }\n  }\n\n  complete(): void {\n    const { partialObserver } = this;\n    if (partialObserver.complete) {\n      try {\n        partialObserver.complete();\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    }\n  }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n  constructor(\n    observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n    error?: ((e?: any) => void) | null,\n    complete?: (() => void) | null\n  ) {\n    super();\n\n    let partialObserver: Partial<Observer<T>>;\n    if (isFunction(observerOrNext) || !observerOrNext) {\n      // The first argument is a function, not an observer. The next\n      // two arguments *could* be observers, or they could be empty.\n      partialObserver = {\n        next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n        error: error ?? undefined,\n        complete: complete ?? undefined,\n      };\n    } else {\n      // The first argument is a partial observer.\n      let context: any;\n      if (this && config.useDeprecatedNextContext) {\n        // This is a deprecated path that made `this.unsubscribe()` available in\n        // next handler functions passed to subscribe. This only exists behind a flag\n        // now, as it is *very* slow.\n        context = Object.create(observerOrNext);\n        context.unsubscribe = () => this.unsubscribe();\n        partialObserver = {\n          next: observerOrNext.next && bind(observerOrNext.next, context),\n          error: observerOrNext.error && bind(observerOrNext.error, context),\n          complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n        };\n      } else {\n        // The \"normal\" path. Just use the partial observer directly.\n        partialObserver = observerOrNext;\n      }\n    }\n\n    // Wrap the partial observer to ensure it's a full observer, and\n    // make sure proper error handling is accounted for.\n    this.destination = new ConsumerObserver(partialObserver);\n  }\n}\n\nfunction handleUnhandledError(error: any) {\n  if (config.useDeprecatedSynchronousErrorHandling) {\n    captureError(error);\n  } else {\n    // Ideal path, we report this as an unhandled error,\n    // which is thrown on a new call stack.\n    reportUnhandledError(error);\n  }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n  throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n  const { onStoppedNotification } = config;\n  onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n  closed: true,\n  next: noop,\n  error: defaultErrorHandler,\n  complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n  readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n  (_super) =>\n    function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n      _super(this);\n      this.message = errors\n        ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n  ')}`\n        : '';\n      this.name = 'UnsubscriptionError';\n      this.errors = errors;\n    }\n);\n","/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n  if (arr) {\n    const index = arr.indexOf(item);\n    0 <= index && arr.splice(index, 1);\n  }\n}\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n  /** @nocollapse */\n  public static EMPTY = (() => {\n    const empty = new Subscription();\n    empty.closed = true;\n    return empty;\n  })();\n\n  /**\n   * A flag to indicate whether this Subscription has already been unsubscribed.\n   */\n  public closed = false;\n\n  private _parentage: Subscription[] | Subscription | null = null;\n\n  /**\n   * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n   * list occurs in the {@link #add} and {@link #remove} methods.\n   */\n  private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n  /**\n   * @param initialTeardown A function executed first as part of the finalization\n   * process that is kicked off when {@link #unsubscribe} is called.\n   */\n  constructor(private initialTeardown?: () => void) {}\n\n  /**\n   * Disposes the resources held by the subscription. May, for instance, cancel\n   * an ongoing Observable execution or cancel any other type of work that\n   * started when the Subscription was created.\n   * @return {void}\n   */\n  unsubscribe(): void {\n    let errors: any[] | undefined;\n\n    if (!this.closed) {\n      this.closed = true;\n\n      // Remove this from it's parents.\n      const { _parentage } = this;\n      if (_parentage) {\n        this._parentage = null;\n        if (Array.isArray(_parentage)) {\n          for (const parent of _parentage) {\n            parent.remove(this);\n          }\n        } else {\n          _parentage.remove(this);\n        }\n      }\n\n      const { initialTeardown: initialFinalizer } = this;\n      if (isFunction(initialFinalizer)) {\n        try {\n          initialFinalizer();\n        } catch (e) {\n          errors = e instanceof UnsubscriptionError ? e.errors : [e];\n        }\n      }\n\n      const { _finalizers } = this;\n      if (_finalizers) {\n        this._finalizers = null;\n        for (const finalizer of _finalizers) {\n          try {\n            execFinalizer(finalizer);\n          } catch (err) {\n            errors = errors ?? [];\n            if (err instanceof UnsubscriptionError) {\n              errors = [...errors, ...err.errors];\n            } else {\n              errors.push(err);\n            }\n          }\n        }\n      }\n\n      if (errors) {\n        throw new UnsubscriptionError(errors);\n      }\n    }\n  }\n\n  /**\n   * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n   * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n   * because it has already been unsubscribed, then whatever finalizer is passed to it\n   * will automatically be executed (unless the finalizer itself is also a closed subscription).\n   *\n   * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n   * subscription to a any subscription will result in no operation. (A noop).\n   *\n   * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n   * operation at all. (A noop).\n   *\n   * `Subscription` instances that are added to this instance will automatically remove themselves\n   * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n   * will need to be removed manually with {@link #remove}\n   *\n   * @param teardown The finalization logic to add to this subscription.\n   */\n  add(teardown: TeardownLogic): void {\n    // Only add the finalizer if it's not undefined\n    // and don't add a subscription to itself.\n    if (teardown && teardown !== this) {\n      if (this.closed) {\n        // If this subscription is already closed,\n        // execute whatever finalizer is handed to it automatically.\n        execFinalizer(teardown);\n      } else {\n        if (teardown instanceof Subscription) {\n          // We don't add closed subscriptions, and we don't add the same subscription\n          // twice. Subscription unsubscribe is idempotent.\n          if (teardown.closed || teardown._hasParent(this)) {\n            return;\n          }\n          teardown._addParent(this);\n        }\n        (this._finalizers = this._finalizers ?? []).push(teardown);\n      }\n    }\n  }\n\n  /**\n   * Checks to see if a this subscription already has a particular parent.\n   * This will signal that this subscription has already been added to the parent in question.\n   * @param parent the parent to check for\n   */\n  private _hasParent(parent: Subscription) {\n    const { _parentage } = this;\n    return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n  }\n\n  /**\n   * Adds a parent to this subscription so it can be removed from the parent if it\n   * unsubscribes on it's own.\n   *\n   * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n   * @param parent The parent subscription to add\n   */\n  private _addParent(parent: Subscription) {\n    const { _parentage } = this;\n    this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n  }\n\n  /**\n   * Called on a child when it is removed via {@link #remove}.\n   * @param parent The parent to remove\n   */\n  private _removeParent(parent: Subscription) {\n    const { _parentage } = this;\n    if (_parentage === parent) {\n      this._parentage = null;\n    } else if (Array.isArray(_parentage)) {\n      arrRemove(_parentage, parent);\n    }\n  }\n\n  /**\n   * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n   *\n   * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n   * from every other `Subscription` they have been added to. This means that using the `remove` method\n   * is not a common thing and should be used thoughtfully.\n   *\n   * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n   * more than once, you will need to call `remove` the same number of times to remove all instances.\n   *\n   * All finalizer instances are removed to free up memory upon unsubscription.\n   *\n   * @param teardown The finalizer to remove from this subscription\n   */\n  remove(teardown: Exclude<TeardownLogic, void>): void {\n    const { _finalizers } = this;\n    _finalizers && arrRemove(_finalizers, teardown);\n\n    if (teardown instanceof Subscription) {\n      teardown._removeParent(this);\n    }\n  }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n  return (\n    value instanceof Subscription ||\n    (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n  );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n  if (isFunction(finalizer)) {\n    finalizer();\n  } else {\n    finalizer.unsubscribe();\n  }\n}\n","import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n  onUnhandledError: null,\n  onStoppedNotification: null,\n  Promise: undefined,\n  useDeprecatedSynchronousErrorHandling: false,\n  useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n  /**\n   * A registration point for unhandled errors from RxJS. These are errors that\n   * cannot were not handled by consuming code in the usual subscription path. For\n   * example, if you have this configured, and you subscribe to an observable without\n   * providing an error handler, errors from that subscription will end up here. This\n   * will _always_ be called asynchronously on another job in the runtime. This is because\n   * we do not want errors thrown in this user-configured handler to interfere with the\n   * behavior of the library.\n   */\n  onUnhandledError: ((err: any) => void) | null;\n\n  /**\n   * A registration point for notifications that cannot be sent to subscribers because they\n   * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n   * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n   * might want a different behavior. For example, with sources that attempt to report errors\n   * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n   * This will _always_ be called asynchronously on another job in the runtime. This is because\n   * we do not want errors thrown in this user-configured handler to interfere with the\n   * behavior of the library.\n   */\n  onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n  /**\n   * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n   * methods.\n   *\n   * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n   * Promise constructor. If you need a Promise implementation other than native promises,\n   * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n   */\n  Promise?: PromiseConstructorLike;\n\n  /**\n   * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n   * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n   * call in a try/catch block. It also enables producer interference, a nasty bug\n   * where a multicast can be broken for all observers by a downstream consumer with\n   * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n   * FOR MIGRATION REASONS.\n   *\n   * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n   * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n   * behaviors described above. Will be removed in v8.\n   */\n  useDeprecatedSynchronousErrorHandling: boolean;\n\n  /**\n   * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n   * `unsubscribe()` via `this` context in `next` functions created in observers passed\n   * to `subscribe`.\n   *\n   * This is being removed because the performance was severely problematic, and it could also cause\n   * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n   * their `this` context overwritten.\n   *\n   * @deprecated As of version 8, RxJS will no longer support altering the\n   * context of next functions provided as part of an observer to Subscribe. Instead,\n   * you will have access to a subscription or a signal or token that will allow you to do things like\n   * unsubscribe and test closed status. Will be removed in v8.\n   */\n  useDeprecatedNextContext: boolean;\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass((_super) => function EmptyErrorImpl(this: any) {\n  _super(this);\n  this.name = 'EmptyError';\n  this.message = 'no elements in sequence';\n});\n","import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\n\nexport interface FirstValueFromConfig<T> {\n  defaultValue: T;\n}\n\nexport function firstValueFrom<T, D>(source: Observable<T>, config: FirstValueFromConfig<D>): Promise<T | D>;\nexport function firstValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve as soon as the first value\n * arrives from the observable. The subscription will then be closed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will emit at least one value,\n * *OR* complete. If the source observable does not emit one value or complete, you will\n * end up with a promise that is hung up, and potentially all of the state of an\n * async function hanging out in memory. To avoid this situation, look into adding\n * something like {@link timeout}, {@link take}, {@link takeWhile}, or {@link takeUntil}\n * amongst others.\n *\n * ## Example\n *\n * Wait for the first value from a stream and emit it from a promise in\n * an async function\n *\n * ```ts\n * import { interval, firstValueFrom } from 'rxjs';\n *\n * async function execute() {\n *   const source$ = interval(2000);\n *   const firstNumber = await firstValueFrom(source$);\n *   console.log(`The first number is ${ firstNumber }`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // 'The first number is 0'\n * ```\n *\n * @see {@link lastValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function firstValueFrom<T, D>(source: Observable<T>, config?: FirstValueFromConfig<D>): Promise<T | D> {\n  const hasConfig = typeof config === 'object';\n  return new Promise<T | D>((resolve, reject) => {\n    const subscriber = new SafeSubscriber<T>({\n      next: (value) => {\n        resolve(value);\n        subscriber.unsubscribe();\n      },\n      error: reject,\n      complete: () => {\n        if (hasConfig) {\n          resolve(config!.defaultValue);\n        } else {\n          reject(new EmptyError());\n        }\n      },\n    });\n    source.subscribe(subscriber);\n  });\n}\n","import { OperatorFunction } from \"../types\";\nimport { map } from \"../operators/map\";\n\nconst { isArray } = Array;\n\nfunction callOrApply<T, R>(fn: ((...values: T[]) => R), args: T|T[]): R {\n    return isArray(args) ? fn(...args) : fn(args);\n}\n\n/**\n * Used in several -- mostly deprecated -- situations where we need to \n * apply a list of arguments or a single argument to a result selector.\n */\nexport function mapOneOrManyArgs<T, R>(fn: ((...values: T[]) => R)): OperatorFunction<T|T[], R> {\n    return map(args => callOrApply(fn, args))\n}","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n// These constants are used to create handler registry functions using array mapping below.\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'] as const;\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'] as const;\nconst jqueryMethods = ['on', 'off'] as const;\n\nexport interface NodeStyleEventEmitter {\n  addListener(eventName: string | symbol, handler: NodeEventHandler): this;\n  removeListener(eventName: string | symbol, handler: NodeEventHandler): this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n  addListener(eventName: string, handler: NodeEventHandler): void | {};\n  removeListener(eventName: string, handler: NodeEventHandler): void | {};\n}\n\n// Use handler types like those in @types/jquery. See:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\nexport interface JQueryStyleEventEmitter<TContext, T> {\n  on(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n  off(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n}\n\nexport interface EventListenerObject<E> {\n  handleEvent(evt: E): void;\n}\n\nexport interface HasEventTargetAddRemove<E> {\n  addEventListener(\n    type: string,\n    listener: ((evt: E) => void) | EventListenerObject<E> | null,\n    options?: boolean | AddEventListenerOptions\n  ): void;\n  removeEventListener(\n    type: string,\n    listener: ((evt: E) => void) | EventListenerObject<E> | null,\n    options?: EventListenerOptions | boolean\n  ): void;\n}\n\nexport interface EventListenerOptions {\n  capture?: boolean;\n  passive?: boolean;\n  once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n  once?: boolean;\n  passive?: boolean;\n}\n\nexport function fromEvent<T>(target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>, eventName: string): Observable<T>;\nexport function fromEvent<T, R>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  resultSelector: (event: T) => R\n): Observable<R>;\nexport function fromEvent<T>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  options: EventListenerOptions\n): Observable<T>;\nexport function fromEvent<T, R>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  options: EventListenerOptions,\n  resultSelector: (event: T) => R\n): Observable<R>;\n\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n  target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>,\n  eventName: string,\n  resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent(\n  target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n  eventName: string\n): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n  target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n  eventName: string,\n  resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent<T>(\n  target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n  eventName: string\n): Observable<T>;\nexport function fromEvent<T, R>(\n  target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n  eventName: string,\n  resultSelector: (value: T, ...args: any[]) => R\n): Observable<R>;\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n *\n * Emit clicks happening on the DOM document\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * Use `addEventListener` with capture option\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * // note optional configuration parameter which will be passed to addEventListener\n * const clicksInDocument = fromEvent(document, 'click', { capture: true });\n * const clicksInDiv = fromEvent(div, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget<T>} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable<T>}\n */\nexport function fromEvent<T>(\n  target: any,\n  eventName: string,\n  options?: EventListenerOptions | ((...args: any[]) => T),\n  resultSelector?: (...args: any[]) => T\n): Observable<T> {\n  if (isFunction(options)) {\n    resultSelector = options;\n    options = undefined;\n  }\n  if (resultSelector) {\n    return fromEvent<T>(target, eventName, options as EventListenerOptions).pipe(mapOneOrManyArgs(resultSelector));\n  }\n\n  // Figure out our add and remove methods. In order to do this,\n  // we are going to analyze the target in a preferred order, if\n  // the target matches a given signature, we take the two \"add\" and \"remove\"\n  // method names and apply them to a map to create opposite versions of the\n  // same function. This is because they all operate in duplicate pairs,\n  // `addListener(name, handler)`, `removeListener(name, handler)`, for example.\n  // The call only differs by method name, as to whether or not you're adding or removing.\n  const [add, remove] =\n    // If it is an EventTarget, we need to use a slightly different method than the other two patterns.\n    isEventTarget(target)\n      ? eventTargetMethods.map((methodName) => (handler: any) => target[methodName](eventName, handler, options as EventListenerOptions))\n      : // In all other cases, the call pattern is identical with the exception of the method names.\n      isNodeStyleEventEmitter(target)\n      ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n      : isJQueryStyleEventEmitter(target)\n      ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n      : [];\n\n  // If add is falsy, it's because we didn't match a pattern above.\n  // Check to see if it is an ArrayLike, because if it is, we want to\n  // try to apply fromEvent to all of it's items. We do this check last,\n  // because there are may be some types that are both ArrayLike *and* implement\n  // event registry points, and we'd rather delegate to that when possible.\n  if (!add) {\n    if (isArrayLike(target)) {\n      return mergeMap((subTarget: any) => fromEvent(subTarget, eventName, options as EventListenerOptions))(\n        innerFrom(target)\n      ) as Observable<T>;\n    }\n  }\n\n  // If add is falsy and we made it here, it's because we didn't\n  // match any valid target objects above.\n  if (!add) {\n    throw new TypeError('Invalid event target');\n  }\n\n  return new Observable<T>((subscriber) => {\n    // The handler we are going to register. Forwards the event object, by itself, or\n    // an array of arguments to the event handler, if there is more than one argument,\n    // to the consumer.\n    const handler = (...args: any[]) => subscriber.next(1 < args.length ? args : args[0]);\n    // Do the work of adding the handler to the target.\n    add(handler);\n    // When we finalize, we want to remove the handler and free up memory.\n    return () => remove!(handler);\n  });\n}\n\n/**\n * Used to create `add` and `remove` functions to register and unregister event handlers\n * from a target in the most common handler pattern, where there are only two arguments.\n * (e.g.  `on(name, fn)`, `off(name, fn)`, `addListener(name, fn)`, or `removeListener(name, fn)`)\n * @param target The target we're calling methods on\n * @param eventName The event name for the event we're creating register or unregister functions for\n */\nfunction toCommonHandlerRegistry(target: any, eventName: string) {\n  return (methodName: string) => (handler: any) => target[methodName](eventName, handler);\n}\n\n/**\n * Checks to see if the target implements the required node-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isNodeStyleEventEmitter(target: any): target is NodeStyleEventEmitter {\n  return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\n/**\n * Checks to see if the target implements the required jQuery-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isJQueryStyleEventEmitter(target: any): target is JQueryStyleEventEmitter<any, any> {\n  return isFunction(target.on) && isFunction(target.off);\n}\n\n/**\n * Checks to see if the target implements the required EventTarget methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isEventTarget(target: any): target is HasEventTargetAddRemove<any> {\n  return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\nexport function innerFrom<T>(input: ObservableInput<T>): Observable<T> {\n  if (input instanceof Observable) {\n    return input;\n  }\n  if (input != null) {\n    if (isInteropObservable(input)) {\n      return fromInteropObservable(input);\n    }\n    if (isArrayLike(input)) {\n      return fromArrayLike(input);\n    }\n    if (isPromise(input)) {\n      return fromPromise(input);\n    }\n    if (isAsyncIterable(input)) {\n      return fromAsyncIterable(input);\n    }\n    if (isIterable(input)) {\n      return fromIterable(input);\n    }\n    if (isReadableStreamLike(input)) {\n      return fromReadableStreamLike(input);\n    }\n  }\n\n  throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable<T>(obj: any) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    const obs = obj[Symbol_observable]();\n    if (isFunction(obs.subscribe)) {\n      return obs.subscribe(subscriber);\n    }\n    // Should be caught by observable subscribe function error handling.\n    throw new TypeError('Provided object does not correctly implement Symbol.observable');\n  });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike<T>(array: ArrayLike<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    // Loop over the array and emit each value. Note two things here:\n    // 1. We're making sure that the subscriber is not closed on each loop.\n    //    This is so we don't continue looping over a very large array after\n    //    something like a `take`, `takeWhile`, or other synchronous unsubscription\n    //    has already unsubscribed.\n    // 2. In this form, reentrant code can alter that array we're looping over.\n    //    This is a known issue, but considered an edge case. The alternative would\n    //    be to copy the array before executing the loop, but this has\n    //    performance implications.\n    for (let i = 0; i < array.length && !subscriber.closed; i++) {\n      subscriber.next(array[i]);\n    }\n    subscriber.complete();\n  });\n}\n\nexport function fromPromise<T>(promise: PromiseLike<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    promise\n      .then(\n        (value) => {\n          if (!subscriber.closed) {\n            subscriber.next(value);\n            subscriber.complete();\n          }\n        },\n        (err: any) => subscriber.error(err)\n      )\n      .then(null, reportUnhandledError);\n  });\n}\n\nexport function fromIterable<T>(iterable: Iterable<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    for (const value of iterable) {\n      subscriber.next(value);\n      if (subscriber.closed) {\n        return;\n      }\n    }\n    subscriber.complete();\n  });\n}\n\nexport function fromAsyncIterable<T>(asyncIterable: AsyncIterable<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n  });\n}\n\nexport function fromReadableStreamLike<T>(readableStream: ReadableStreamLike<T>) {\n  return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process<T>(asyncIterable: AsyncIterable<T>, subscriber: Subscriber<T>) {\n  for await (const value of asyncIterable) {\n    subscriber.next(value);\n    // A side-effect may have closed our subscriber,\n    // check before the next iteration.\n    if (subscriber.closed) {\n      return;\n    }\n  }\n  subscriber.complete();\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.</span>\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n *   next: () => console.log('Next'),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n *   mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable<never>((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n  return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n  return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n  return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n  return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n  return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n  return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n","/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10);      // Intervals are scheduled\n *                                      // with async scheduler by default...\n * intervals.pipe(\n *   observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * )                                    // scheduler to ensure smooth animation.\n * .subscribe(val => {\n *   someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n        () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n        (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n      )\n    );\n  });\n}\n","import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n  });\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n  if (!input) {\n    throw new Error('Iterable cannot be null');\n  }\n  return new Observable<T>((subscriber) => {\n    executeSchedule(subscriber, scheduler, () => {\n      const iterator = input[Symbol.asyncIterator]();\n      executeSchedule(\n        subscriber,\n        scheduler,\n        () => {\n          iterator.next().then((result) => {\n            if (result.done) {\n              // This will remove the subscriptions from\n              // the parent subscription.\n              subscriber.complete();\n            } else {\n              subscriber.next(result.value);\n            }\n          });\n        },\n        0,\n        true\n      );\n    });\n  });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\nexport function merge<A extends readonly unknown[]>(...sourcesAndConcurrency: [...ObservableInputTuple<A>, number?]): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n  ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike?]\n): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n  ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number?, SchedulerLike?]\n): Observable<A[number]>;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Merge together two Observables: 1s interval and clicks\n *\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console every time the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * Merge together 3 Observables, but run only 2 concurrently\n *\n * ```ts\n * import { interval, take, merge } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * //   continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * //   timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n */\nexport function merge(...args: (ObservableInput<unknown> | number | SchedulerLike)[]): Observable<unknown> {\n  const scheduler = popScheduler(args);\n  const concurrent = popNumber(args, Infinity);\n  const sources = args as ObservableInput<unknown>[];\n  return !sources.length\n    ? // No source provided\n      EMPTY\n    : sources.length === 1\n    ? // One source? Just return it.\n      innerFrom(sources[0])\n    : // Merge all sources\n      mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n  return value && isFunction(value.schedule);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n *   map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll<O extends ObservableInput<any>>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf<O>> {\n  return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n *    let i = seed;\n *    while (true) {\n *      yield i;\n *      i = 2 * i; // double it\n *    }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable<T>}\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n  return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n  if (input != null) {\n    if (isInteropObservable(input)) {\n      return scheduleObservable(input, scheduler);\n    }\n    if (isArrayLike(input)) {\n      return scheduleArray(input, scheduler);\n    }\n    if (isPromise(input)) {\n      return schedulePromise(input, scheduler);\n    }\n    if (isAsyncIterable(input)) {\n      return scheduleAsyncIterable(input, scheduler);\n    }\n    if (isIterable(input)) {\n      return scheduleIterable(input, scheduler);\n    }\n    if (isReadableStreamLike(input)) {\n      return scheduleReadableStreamLike(input, scheduler);\n    }\n  }\n  throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n  return new Observable<T>((subscriber) => {\n    // The current array index.\n    let i = 0;\n    // Start iterating over the array like on a schedule.\n    return scheduler.schedule(function () {\n      if (i === input.length) {\n        // If we have hit the end of the array like in the\n        // previous job, we can complete.\n        subscriber.complete();\n      } else {\n        // Otherwise let's next the value at the current index,\n        // then increment our index.\n        subscriber.next(input[i++]);\n        // If the last emission didn't cause us to close the subscriber\n        // (via take or some side effect), reschedule the job and we'll\n        // make another pass.\n        if (!subscriber.closed) {\n          this.schedule();\n        }\n      }\n    });\n  });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n  return new Observable<T>((subscriber) => {\n    let iterator: Iterator<T, T>;\n\n    // Schedule the initial creation of the iterator from\n    // the iterable. This is so the code in the iterable is\n    // not called until the scheduled job fires.\n    executeSchedule(subscriber, scheduler, () => {\n      // Create the iterator.\n      iterator = (input as any)[Symbol_iterator]();\n\n      executeSchedule(\n        subscriber,\n        scheduler,\n        () => {\n          let value: T;\n          let done: boolean | undefined;\n          try {\n            // Pull the value out of the iterator\n            ({ value, done } = iterator.next());\n          } catch (err) {\n            // We got an error while pulling from the iterator\n            subscriber.error(err);\n            return;\n          }\n\n          if (done) {\n            // If it is \"done\" we just complete. This mimics the\n            // behavior of JavaScript's `for..of` consumption of\n            // iterables, which will not emit the value from an iterator\n            // result of `{ done: true: value: 'here' }`.\n            subscriber.complete();\n          } else {\n            // The iterable is not done, emit the value.\n            subscriber.next(value);\n          }\n        },\n        0,\n        true\n      );\n    });\n\n    // During finalization, if we see this iterator has a `return` method,\n    // then we know it is a Generator, and not just an Iterator. So we call\n    // the `return()` function. This will ensure that any `finally { }` blocks\n    // inside of the generator we can hit will be hit properly.\n    return () => isFunction(iterator?.return) && iterator.return();\n  });\n}\n","import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n  return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber<T>(\n  destination: Subscriber<any>,\n  onNext?: (value: T) => void,\n  onComplete?: () => void,\n  onError?: (err: any) => void,\n  onFinalize?: () => void\n): Subscriber<T> {\n  return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber<T> extends Subscriber<T> {\n  /**\n   * Creates an instance of an `OperatorSubscriber`.\n   * @param destination The downstream subscriber.\n   * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n   * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n   * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n   * and send to the `destination` error handler.\n   * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n   * this handler are sent to the `destination` error handler.\n   * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n   * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n   * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n   * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n   * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n   * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n   */\n  constructor(\n    destination: Subscriber<any>,\n    onNext?: (value: T) => void,\n    onComplete?: () => void,\n    onError?: (err: any) => void,\n    private onFinalize?: () => void,\n    private shouldUnsubscribe?: () => boolean\n  ) {\n    // It's important - for performance reasons - that all of this class's\n    // members are initialized and that they are always initialized in the same\n    // order. This will ensure that all OperatorSubscriber instances have the\n    // same hidden class in V8. This, in turn, will help keep the number of\n    // hidden classes involved in property accesses within the base class as\n    // low as possible. If the number of hidden classes involved exceeds four,\n    // the property accesses will become megamorphic and performance penalties\n    // will be incurred - i.e. inline caches won't be used.\n    //\n    // The reasons for ensuring all instances have the same hidden class are\n    // further discussed in this blog post from Benedikt Meurer:\n    // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n    super(destination);\n    this._next = onNext\n      ? function (this: OperatorSubscriber<T>, value: T) {\n          try {\n            onNext(value);\n          } catch (err) {\n            destination.error(err);\n          }\n        }\n      : super._next;\n    this._error = onError\n      ? function (this: OperatorSubscriber<T>, err: any) {\n          try {\n            onError(err);\n          } catch (err) {\n            // Send any errors that occur down stream.\n            destination.error(err);\n          } finally {\n            // Ensure finalization.\n            this.unsubscribe();\n          }\n        }\n      : super._error;\n    this._complete = onComplete\n      ? function (this: OperatorSubscriber<T>) {\n          try {\n            onComplete();\n          } catch (err) {\n            // Send any errors that occur down stream.\n            destination.error(err);\n          } finally {\n            // Ensure finalization.\n            this.unsubscribe();\n          }\n        }\n      : super._complete;\n  }\n\n  unsubscribe() {\n    if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n      const { closed } = this;\n      super.unsubscribe();\n      // Execute additional teardown if we have any and we didn't already do so.\n      !closed && this.onFinalize?.();\n    }\n  }\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, S extends T, A>(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function filter<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, A>(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction<T>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    // An index passed to our predicate function on each call.\n    let index = 0;\n\n    // Subscribe to the source, all errors and completions are\n    // forwarded to the consumer.\n    source.subscribe(\n      // Call the predicate with the appropriate `this` context,\n      // if the predicate returns `true`, then send the value\n      // to the consumer.\n      createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n    );\n  });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n  return operate((source, subscriber) => {\n    // The index of the value from the source. Used with projection.\n    let index = 0;\n    // Subscribe to the source, all errors and completions are sent along\n    // to the consumer.\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value: T) => {\n        // Call the projection function with the appropriate this context,\n        // and send the resulting value to the consumer.\n        subscriber.next(project.call(thisArg, value, index++));\n      })\n    );\n  });\n}\n","import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: undefined,\n  concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n  concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n *   mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n  concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  if (isFunction(resultSelector)) {\n    // DEPRECATED PATH\n    return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n  } else if (typeof resultSelector === 'number') {\n    concurrent = resultSelector;\n  }\n\n  return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n  source: Observable<T>,\n  subscriber: Subscriber<R>,\n  project: (value: T, index: number) => ObservableInput<R>,\n  concurrent: number,\n  onBeforeNext?: (innerValue: R) => void,\n  expand?: boolean,\n  innerSubScheduler?: SchedulerLike,\n  additionalFinalizer?: () => void\n) {\n  // Buffered values, in the event of going over our concurrency limit\n  const buffer: T[] = [];\n  // The number of active inner subscriptions.\n  let active = 0;\n  // An index to pass to our accumulator function\n  let index = 0;\n  // Whether or not the outer source has completed.\n  let isComplete = false;\n\n  /**\n   * Checks to see if we can complete our result or not.\n   */\n  const checkComplete = () => {\n    // If the outer has completed, and nothing is left in the buffer,\n    // and we don't have any active inner subscriptions, then we can\n    // Emit the state and complete.\n    if (isComplete && !buffer.length && !active) {\n      subscriber.complete();\n    }\n  };\n\n  // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n  const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n  const doInnerSub = (value: T) => {\n    // If we're expanding, we need to emit the outer values and the inner values\n    // as the inners will \"become outers\" in a way as they are recursively fed\n    // back to the projection mechanism.\n    expand && subscriber.next(value as any);\n\n    // Increment the number of active subscriptions so we can track it\n    // against our concurrency limit later.\n    active++;\n\n    // A flag used to show that the inner observable completed.\n    // This is checked during finalization to see if we should\n    // move to the next item in the buffer, if there is on.\n    let innerComplete = false;\n\n    // Start our inner subscription.\n    innerFrom(project(value, index++)).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (innerValue) => {\n          // `mergeScan` has additional handling here. For example\n          // taking the inner value and updating state.\n          onBeforeNext?.(innerValue);\n\n          if (expand) {\n            // If we're expanding, then just recurse back to our outer\n            // handler. It will emit the value first thing.\n            outerNext(innerValue as any);\n          } else {\n            // Otherwise, emit the inner value.\n            subscriber.next(innerValue);\n          }\n        },\n        () => {\n          // Flag that we have completed, so we know to check the buffer\n          // during finalization.\n          innerComplete = true;\n        },\n        // Errors are passed to the destination.\n        undefined,\n        () => {\n          // During finalization, if the inner completed (it wasn't errored or\n          // cancelled), then we want to try the next item in the buffer if\n          // there is one.\n          if (innerComplete) {\n            // We have to wrap this in a try/catch because it happens during\n            // finalization, possibly asynchronously, and we want to pass\n            // any errors that happen (like in a projection function) to\n            // the outer Subscriber.\n            try {\n              // INNER SOURCE COMPLETE\n              // Decrement the active count to ensure that the next time\n              // we try to call `doInnerSub`, the number is accurate.\n              active--;\n              // If we have more values in the buffer, try to process those\n              // Note that this call will increment `active` ahead of the\n              // next conditional, if there were any more inner subscriptions\n              // to start.\n              while (buffer.length && active < concurrent) {\n                const bufferedValue = buffer.shift()!;\n                // Particularly for `expand`, we need to check to see if a scheduler was provided\n                // for when we want to start our inner subscription. Otherwise, we just start\n                // are next inner subscription.\n                if (innerSubScheduler) {\n                  executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n                } else {\n                  doInnerSub(bufferedValue);\n                }\n              }\n              // Check to see if we can complete, and complete if so.\n              checkComplete();\n            } catch (err) {\n              subscriber.error(err);\n            }\n          }\n        }\n      )\n    );\n  };\n\n  // Subscribe to our source observable.\n  source.subscribe(\n    createOperatorSubscriber(subscriber, outerNext, () => {\n      // Outer completed, make a note of it, and check to see if we can complete everything.\n      isComplete = true;\n      checkComplete();\n    })\n  );\n\n  // Additional finalization (for when the destination is torn down).\n  // Other finalization is added implicitly via subscription above.\n  return () => {\n    additionalFinalizer?.();\n  };\n}\n","import { scanInternals } from './scanInternals';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nexport function reduce<V, A = V>(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction<V, V | A>;\nexport function reduce<V, A>(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction<V, A>;\nexport function reduce<V, A, S = A>(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction<V, A>;\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * <span class=\"informal\">Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.</span>\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n *\n * Count the number of click events that happened in 5 seconds\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, map, reduce } from 'rxjs';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click')\n *   .pipe(takeUntil(interval(5000)));\n *\n * const ones = clicksInFiveSeconds.pipe(map(() => 1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n *\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: A, value: V, index: number): A} accumulator The accumulator function\n * called on each source value.\n * @param {A} [seed] The initial accumulation value.\n * @return A function that returns an Observable that emits a single value that\n * is the result of accumulating the values emitted by the source Observable.\n */\nexport function reduce<V, A>(accumulator: (acc: V | A, value: V, index: number) => A, seed?: any): OperatorFunction<V, V | A> {\n  return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A basic scan operation. This is used for `scan` and `reduce`.\n * @param accumulator The accumulator to use\n * @param seed The seed value for the state to accumulate\n * @param hasSeed Whether or not a seed was provided\n * @param emitOnNext Whether or not to emit the state on next\n * @param emitBeforeComplete Whether or not to emit the before completion\n */\n\nexport function scanInternals<V, A, S>(\n  accumulator: (acc: V | A | S, value: V, index: number) => A,\n  seed: S,\n  hasSeed: boolean,\n  emitOnNext: boolean,\n  emitBeforeComplete?: undefined | true\n) {\n  return (source: Observable<V>, subscriber: Subscriber<any>) => {\n    // Whether or not we have state yet. This will only be\n    // false before the first value arrives if we didn't get\n    // a seed value.\n    let hasState = hasSeed;\n    // The state that we're tracking, starting with the seed,\n    // if there is one, and then updated by the return value\n    // from the accumulator on each emission.\n    let state: any = seed;\n    // An index to pass to the accumulator function.\n    let index = 0;\n\n    // Subscribe to our source. All errors and completions are passed through.\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          // Always increment the index.\n          const i = index++;\n          // Set the state\n          state = hasState\n            ? // We already have state, so we can get the new state from the accumulator\n              accumulator(state, value, i)\n            : // We didn't have state yet, a seed value was not provided, so\n\n              // we set the state to the first value, and mark that we have state now\n              ((hasState = true), value);\n\n          // Maybe send it to the consumer.\n          emitOnNext && subscriber.next(state);\n        },\n        // If an onComplete was given, call it, otherwise\n        // just pass through the complete notification to the consumer.\n        emitBeforeComplete &&\n          (() => {\n            hasState && subscriber.next(state);\n            subscriber.complete();\n          })\n      )\n    );\n  };\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.</span>\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n    !subscriber.closed && source.subscribe(subscriber);\n  });\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nconst arrReducer = (arr: any[], value: any) => (arr.push(value), arr);\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * <span class=\"informal\">Get all values inside an array when the source completes</span>\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n *\n * ```ts\n * import { interval, take, toArray } from 'rxjs';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n *   take(10),\n *   toArray()\n * );\n *\n * example.subscribe(value => console.log(value));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n * ```\n *\n * @return A function that returns an Observable that emits an array of items\n * emitted by the source Observable when source completes.\n */\nexport function toArray<T>(): OperatorFunction<T, T[]> {\n  // Because arrays are mutable, and we're mutating the array in this\n  // reducer process, we have to encapsulate the creation of the initial\n  // array within this `operate` function.\n  return operate((source, subscriber) => {\n    reduce(arrReducer, [] as T[])(source).subscribe(subscriber);\n  });\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n  setTimeout: SetTimeoutFunction;\n  clearTimeout: ClearTimeoutFunction;\n  delegate:\n    | {\n        setTimeout: SetTimeoutFunction;\n        clearTimeout: ClearTimeoutFunction;\n      }\n    | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n  // When accessing the delegate, use the variable rather than `this` so that\n  // the functions can be called without being bound to the provider.\n  setTimeout(handler: () => void, timeout?: number, ...args) {\n    const { delegate } = timeoutProvider;\n    if (delegate?.setTimeout) {\n      return delegate.setTimeout(handler, timeout, ...args);\n    }\n    return setTimeout(handler, timeout, ...args);\n  },\n  clearTimeout(handle) {\n    const { delegate } = timeoutProvider;\n    return (delegate?.clearTimeout || clearTimeout)(handle as any);\n  },\n  delegate: undefined,\n};\n","export function getSymbolIterator(): symbol {\n  if (typeof Symbol !== 'function' || !Symbol.iterator) {\n    return '@@iterator' as any;\n  }\n\n  return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n","/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n  const _super = (instance: any) => {\n    Error.call(instance);\n    instance.stack = new Error().stack;\n  };\n\n  const ctorFunc = createImpl(_super);\n  ctorFunc.prototype = Object.create(Error.prototype);\n  ctorFunc.prototype.constructor = ctorFunc;\n  return ctorFunc;\n}\n","import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n  if (config.useDeprecatedSynchronousErrorHandling) {\n    const isRoot = !context;\n    if (isRoot) {\n      context = { errorThrown: false, error: null };\n    }\n    cb();\n    if (isRoot) {\n      const { errorThrown, error } = context!;\n      context = null;\n      if (errorThrown) {\n        throw error;\n      }\n    }\n  } else {\n    // This is the general non-deprecated path for everyone that\n    // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n    cb();\n  }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n  if (config.useDeprecatedSynchronousErrorHandling && context) {\n    context.errorThrown = true;\n    context.error = err;\n  }\n}\n","import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay: number,\n  repeat: true\n): void;\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay?: number,\n  repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay = 0,\n  repeat = false\n): Subscription | void {\n  const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n    work();\n    if (repeat) {\n      parentSubscription.add(this.schedule(null, delay));\n    } else {\n      this.unsubscribe();\n    }\n  }, delay);\n\n  parentSubscription.add(scheduleSubscription);\n\n  if (!repeat) {\n    // Because user-land scheduler implementations are unlikely to properly reuse\n    // Actions for repeat scheduling, we can't trust that the returned subscription\n    // will control repeat subscription scenarios. So we're trying to avoid using them\n    // incorrectly within this library.\n    return scheduleSubscription;\n  }\n}\n","/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n *   map(i => range(i)),\n *   mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n *   next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n *   next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n  return x;\n}\n","export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');","import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n  return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n","/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n  return typeof value === 'function';\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n  return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n  return isFunction(input?.[Symbol_iterator]);\n}\n","import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n  return isFunction(value?.then);\n}\n","import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {\n  const reader = readableStream.getReader();\n  try {\n    while (true) {\n      const { value, done } = await reader.read();\n      if (done) {\n        return;\n      }\n      yield value!;\n    }\n  } finally {\n    reader.releaseLock();\n  }\n}\n\nexport function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {\n  // We don't want to use instanceof checks because they would return\n  // false for instances from another Realm, like an <iframe>.\n  return isFunction(obj?.getReader);\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n  return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n  init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n  return (source: Observable<T>) => {\n    if (hasLift(source)) {\n      return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n        try {\n          return init(liftedSource, this);\n        } catch (err) {\n          this.error(err);\n        }\n      });\n    }\n    throw new TypeError('Unable to lift unknown Observable type');\n  };\n}\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n  timeoutProvider.setTimeout(() => {\n    const { onUnhandledError } = config;\n    if (onUnhandledError) {\n      // Execute the user-configured error handler.\n      onUnhandledError(err);\n    } else {\n      // Throw so it is picked up by the runtime's uncaught error mechanism.\n      throw err;\n    }\n  });\n}\n","/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n  // TODO: We should create error codes that can be looked up, so this can be less verbose.\n  return new TypeError(\n    `You provided ${\n      input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n    } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n  );\n}\n","'use strict';\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(NonError._prepareSuperMessage(message));\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tvalue: 'NonError',\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, NonError);\n\t\t}\n\t}\n\n\tstatic _prepareSuperMessage(message) {\n\t\ttry {\n\t\t\treturn JSON.stringify(message);\n\t\t} catch {\n\t\t\treturn String(message);\n\t\t}\n\t}\n}\n\nconst commonProperties = [\n\t{property: 'name', enumerable: false},\n\t{property: 'message', enumerable: false},\n\t{property: 'stack', enumerable: false},\n\t{property: 'code', enumerable: true}\n];\n\nconst isCalled = Symbol('.toJSON called');\n\nconst toJSON = from => {\n\tfrom[isCalled] = true;\n\tconst json = from.toJSON();\n\tdelete from[isCalled];\n\treturn json;\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto_,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth\n}) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tif (depth >= maxDepth) {\n\t\treturn to;\n\t}\n\n\tif (typeof from.toJSON === 'function' && from[isCalled] !== true) {\n\t\treturn toJSON(from);\n\t}\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n\t\t\tto[key] = '[object Buffer]';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tdepth++;\n\n\t\t\tto[key] = destroyCircular({\n\t\t\t\tfrom: from[key],\n\t\t\t\tseen: seen.slice(),\n\t\t\t\tforceEnumerable,\n\t\t\t\tmaxDepth,\n\t\t\t\tdepth\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const {property, enumerable} of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: from[property],\n\t\t\t\tenumerable: forceEnumerable ? true : enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error(); // eslint-disable-line unicorn/error-message\n\t\tdestroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tto_: newError,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n","var nargs = /\\{([0-9a-zA-Z_]+)\\}/g\n\nmodule.exports = template\n\nfunction template(string) {\n    var args\n\n    if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n        args = arguments[1]\n    } else {\n        args = new Array(arguments.length - 1)\n        for (var i = 1; i < arguments.length; ++i) {\n            args[i - 1] = arguments[i]\n        }\n    }\n\n    if (!args || !args.hasOwnProperty) {\n        args = {}\n    }\n\n    return string.replace(nargs, function replaceArg(match, i, index) {\n        var result\n\n        if (string[index - 1] === \"{\" &&\n            string[index + match.length] === \"}\") {\n            return i\n        } else {\n            result = args.hasOwnProperty(i) ? args[i] : null\n            if (result === null || result === undefined) {\n                return \"\"\n            }\n\n            return result\n        }\n    })\n}\n","\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n","import { assert } from \"./assert\";\nimport { typeGuard } from \"./typeGuard\";\n/** Copy pasted from\n * https://github.com/emotion-js/emotion/blob/23f43ab9f24d44219b0b007a00f4ac681fe8712e/packages/react/src/class-names.js#L17-L63\n **/\nexport const classnames = (args) => {\n    const len = args.length;\n    let i = 0;\n    let cls = \"\";\n    for (; i < len; i++) {\n        const arg = args[i];\n        if (arg == null)\n            continue;\n        let toAdd;\n        switch (typeof arg) {\n            case \"boolean\":\n                break;\n            case \"object\": {\n                if (Array.isArray(arg)) {\n                    toAdd = classnames(arg);\n                }\n                else {\n                    assert(!typeGuard(arg, false));\n                    if (process.env.NODE_ENV !== \"production\" &&\n                        arg.styles !== undefined &&\n                        arg.name !== undefined) {\n                        console.error(\"You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n\" +\n                            \"`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.\");\n                    }\n                    toAdd = \"\";\n                    for (const k in arg) {\n                        if (arg[k] && k) {\n                            toAdd && (toAdd += \" \");\n                            toAdd += k;\n                        }\n                    }\n                }\n                break;\n            }\n            default: {\n                toAdd = arg;\n            }\n        }\n        if (toAdd) {\n            cls && (cls += \" \");\n            cls += toAdd;\n        }\n    }\n    return cls;\n};\n","import { classnames } from \"./tools/classnames\";\nimport { serializeStyles } from \"@emotion/serialize\";\nimport { insertStyles, getRegisteredStyles } from \"@emotion/utils\";\nimport { useGuaranteedMemo } from \"./tools/useGuaranteedMemo\";\nimport { matchCSSObject } from \"./types\";\nexport const { createCssAndCx } = (() => {\n    function merge(registered, css, className) {\n        const registeredStyles = [];\n        const rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n        if (registeredStyles.length < 2) {\n            return className;\n        }\n        return rawClassName + css(registeredStyles);\n    }\n    function createCssAndCx(params) {\n        const { cache } = params;\n        const css = (...args) => {\n            const serialized = serializeStyles(args, cache.registered);\n            insertStyles(cache, serialized, false);\n            const className = `${cache.key}-${serialized.name}`;\n            scope: {\n                const arg = args[0];\n                if (!matchCSSObject(arg)) {\n                    break scope;\n                }\n                increaseSpecificityToTakePrecedenceOverMediaQueries.saveClassNameCSSObjectMapping(cache, className, arg);\n            }\n            return className;\n        };\n        const cx = (...args) => {\n            const className = classnames(args);\n            const feat27FixedClassnames = increaseSpecificityToTakePrecedenceOverMediaQueries.fixClassName(cache, className, css);\n            return merge(cache.registered, css, feat27FixedClassnames);\n            //return merge(cache.registered, css, className);\n        };\n        return { css, cx };\n    }\n    return { createCssAndCx };\n})();\nexport function createUseCssAndCx(params) {\n    const { useCache } = params;\n    function useCssAndCx() {\n        const cache = useCache();\n        const { css, cx } = useGuaranteedMemo(() => createCssAndCx({ cache }), [cache]);\n        return { css, cx };\n    }\n    return { useCssAndCx };\n}\n// https://github.com/garronej/tss-react/issues/27\nconst increaseSpecificityToTakePrecedenceOverMediaQueries = (() => {\n    const cssObjectMapByCache = new WeakMap();\n    return {\n        \"saveClassNameCSSObjectMapping\": (cache, className, cssObject) => {\n            let cssObjectMap = cssObjectMapByCache.get(cache);\n            if (cssObjectMap === undefined) {\n                cssObjectMap = new Map();\n                cssObjectMapByCache.set(cache, cssObjectMap);\n            }\n            cssObjectMap.set(className, cssObject);\n        },\n        \"fixClassName\": (() => {\n            function fix(classNameCSSObjects) {\n                let isThereAnyMediaQueriesInPreviousClasses = false;\n                return classNameCSSObjects.map(([className, cssObject]) => {\n                    if (cssObject === undefined) {\n                        return className;\n                    }\n                    let out;\n                    if (!isThereAnyMediaQueriesInPreviousClasses) {\n                        out = className;\n                        for (const key in cssObject) {\n                            if (key.startsWith(\"@media\")) {\n                                isThereAnyMediaQueriesInPreviousClasses = true;\n                                break;\n                            }\n                        }\n                    }\n                    else {\n                        out = {\n                            \"&&\": cssObject\n                        };\n                    }\n                    return out;\n                });\n            }\n            return (cache, className, css) => {\n                const cssObjectMap = cssObjectMapByCache.get(cache);\n                return classnames(fix(className\n                    .split(\" \")\n                    .map(className => [\n                    className,\n                    cssObjectMap === null || cssObjectMap === void 0 ? void 0 : cssObjectMap.get(className)\n                ])).map(classNameOrCSSObject => typeof classNameOrCSSObject === \"string\"\n                    ? classNameOrCSSObject\n                    : css(classNameOrCSSObject)));\n            };\n        })()\n    };\n})();\n","export function matchCSSObject(arg) {\n    return (arg instanceof Object &&\n        !(\"styles\" in arg) &&\n        !(\"length\" in arg) &&\n        !(\"__emotion_styles\" in arg));\n}\n","import { useRef } from \"react\";\n/** Like react's useMemo but with guarantee that the fn\n * won't be invoked again if deps hasn't change */\nexport function useGuaranteedMemo(fn, deps) {\n    var _a;\n    const ref = useRef();\n    if (!ref.current ||\n        deps.length !== ((_a = ref.current.prevDeps) === null || _a === void 0 ? void 0 : _a.length) ||\n        ref.current.prevDeps.map((v, i) => v === deps[i]).indexOf(false) >= 0) {\n        ref.current = {\n            \"v\": fn(),\n            \"prevDeps\": [...deps]\n        };\n    }\n    return ref.current.v;\n}\n","/** @see <https://docs.tsafe.dev/capitalize> */\nexport function capitalize(str) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (str.charAt(0).toUpperCase() + str.slice(1));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef, createElement } from \"react\";\nimport { createMakeStyles } from \"./makeStyles\";\nimport { capitalize } from \"./tools/capitalize\";\nexport function createWithStyles(params) {\n    const { useTheme, cache } = params;\n    const { makeStyles } = createMakeStyles({ useTheme, cache });\n    function withStyles(Component, cssObjectByRuleNameOrGetCssObjectByRuleName, params) {\n        const Component_ = typeof Component === \"string\"\n            ? (() => {\n                const tag = Component;\n                const Out = function ({ children, ...props }) {\n                    return createElement(tag, props, children);\n                };\n                Object.defineProperty(Out, \"name\", {\n                    \"value\": capitalize(tag)\n                });\n                return Out;\n            })()\n            : Component;\n        /**\n         * Get component name for wrapping\n         * @see https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\n         */\n        const name = (() => {\n            {\n                const { name: nameOrWrappedName } = params !== null && params !== void 0 ? params : {};\n                if (nameOrWrappedName !== undefined) {\n                    return typeof nameOrWrappedName !== \"object\"\n                        ? nameOrWrappedName\n                        : Object.keys(nameOrWrappedName)[0];\n                }\n            }\n            let name = undefined;\n            displayName: {\n                const displayName = Component_.displayName;\n                if (typeof displayName !== \"string\" || displayName === \"\") {\n                    break displayName;\n                }\n                name = displayName;\n            }\n            functionName: {\n                if (name !== undefined) {\n                    break functionName;\n                }\n                const functionName = Component_.name;\n                if (typeof functionName !== \"string\" || functionName === \"\") {\n                    break functionName;\n                }\n                name = functionName;\n            }\n            if (name === undefined) {\n                return undefined;\n            }\n            // Special case for dollar sign\n            name = name.replace(/\\$/g, \"usd\");\n            // Replacing open and close parentheses\n            name = name.replace(/\\(/g, \"_\").replace(/\\)/g, \"_\");\n            // Catch-all replacement for characters not allowed in CSS class names\n            name = name.replace(/[^a-zA-Z0-9-_]/g, \"_\");\n            return name;\n        })();\n        const useStyles = makeStyles({ ...params, name })(typeof cssObjectByRuleNameOrGetCssObjectByRuleName === \"function\"\n            ? (theme, props, classes) => incorporateMediaQueries(cssObjectByRuleNameOrGetCssObjectByRuleName(theme, props, classes))\n            : incorporateMediaQueries(cssObjectByRuleNameOrGetCssObjectByRuleName));\n        function getHasNonRootClasses(classes) {\n            for (const name in classes) {\n                if (name === \"root\") {\n                    continue;\n                }\n                return true;\n            }\n            return false;\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const Out = forwardRef(function (props, ref) {\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            const { className, classes: _classes, ...rest } = props;\n            const { classes, cx } = useStyles(props, { props });\n            const rootClassName = cx(classes.root, className);\n            fixedClassesByClasses.set(classes, {\n                ...classes,\n                \"root\": rootClassName\n            });\n            return (React.createElement(Component_, { ref: ref, className: getHasNonRootClasses(classes)\n                    ? className\n                    : rootClassName, ...(typeof Component === \"string\" ? {} : { classes }), ...rest }));\n        });\n        if (name !== undefined) {\n            Out.displayName = `${capitalize(name)}WithStyles`;\n            Object.defineProperty(Out, \"name\", { \"value\": Out.displayName });\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Out;\n    }\n    withStyles.getClasses = getClasses;\n    return { withStyles };\n}\nconst fixedClassesByClasses = new WeakMap();\nconst errorMessageGetClasses = \"getClasses should only be used in conjunction with withStyles\";\nfunction getClasses(props) {\n    const classesIn = props.classes;\n    if (classesIn === undefined) {\n        throw new Error(errorMessageGetClasses);\n    }\n    const classes = fixedClassesByClasses.get(classesIn);\n    if (classes === undefined) {\n        throw new Error(errorMessageGetClasses);\n    }\n    return classes;\n}\nfunction incorporateMediaQueries(cssObjectByRuleNameWithMediaQueries) {\n    const cssObjectByRuleName = {};\n    const cssObjectByRuleNameWithMediaQueriesByMediaQuery = {};\n    Object.keys(cssObjectByRuleNameWithMediaQueries).forEach(ruleNameOrMediaQuery => ((ruleNameOrMediaQuery.startsWith(\"@media\")\n        ? cssObjectByRuleNameWithMediaQueriesByMediaQuery\n        : cssObjectByRuleName)[ruleNameOrMediaQuery] =\n        cssObjectByRuleNameWithMediaQueries[ruleNameOrMediaQuery]));\n    Object.keys(cssObjectByRuleNameWithMediaQueriesByMediaQuery).forEach(mediaQuery => {\n        const cssObjectByRuleNameBis = cssObjectByRuleNameWithMediaQueriesByMediaQuery[mediaQuery];\n        Object.keys(cssObjectByRuleNameBis).forEach(ruleName => {\n            var _a;\n            return (cssObjectByRuleName[ruleName] = {\n                ...((_a = cssObjectByRuleName[ruleName]) !== null && _a !== void 0 ? _a : {}),\n                [mediaQuery]: cssObjectByRuleNameBis[ruleName]\n            });\n        });\n    });\n    return cssObjectByRuleName;\n}\n","\"use client\";\nimport { createMakeStyles, TssCacheProvider } from \"./makeStyles\";\nexport { createMakeStyles, TssCacheProvider };\nimport { createWithStyles } from \"./withStyles\";\nexport { createWithStyles };\nimport { createTss } from \"./tss\";\nexport { createTss };\n/** @see <https://docs.tss-react.dev/api/keyframes> */\nexport { keyframes } from \"@emotion/react\";\n/** @see <https://docs.tss-react.dev/api/globalstyles> */\nexport { GlobalStyles } from \"./GlobalStyles\";\n/** @see <https://docs.tss-react.dev/api/makestyles> */\nexport function createMakeAndWithStyles(params) {\n    return {\n        ...createMakeStyles(params),\n        ...createWithStyles(params)\n    };\n}\nexport const { tss } = createTss({\n    \"useContext\": () => ({})\n});\nexport const useStyles = tss.create({});\n","\"use client\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from \"react\";\nimport { objectFromEntries } from \"./tools/polyfills/Object.fromEntries\";\nimport { objectKeys } from \"./tools/objectKeys\";\nimport { createUseCssAndCx } from \"./cssAndCx\";\nimport { getDependencyArrayRef } from \"./tools/getDependencyArrayRef\";\nimport { typeGuard } from \"./tools/typeGuard\";\nimport { assert } from \"./tools/assert\";\nimport { mergeClasses } from \"./mergeClasses\";\nimport { createContext, useContext } from \"react\";\nimport { useMuiThemeStyleOverridesPlugin } from \"./mui/themeStyleOverridesPlugin\";\nimport { __unsafe_useEmotionCache as useContextualCache } from \"@emotion/react\";\nlet counter = 0;\nexport function createMakeStyles(params) {\n    const { useTheme, cache: cacheProvidedAtInception } = params;\n    const { useCache } = createUseCache({ cacheProvidedAtInception });\n    const { useCssAndCx } = createUseCssAndCx({ useCache });\n    /** returns useStyle. */\n    function makeStyles(params) {\n        const { name: nameOrWrappedName, uniqId = `${counter++}` } = params !== null && params !== void 0 ? params : {};\n        const name = typeof nameOrWrappedName !== \"object\"\n            ? nameOrWrappedName\n            : Object.keys(nameOrWrappedName)[0];\n        return function (cssObjectByRuleNameOrGetCssObjectByRuleName) {\n            const getCssObjectByRuleName = typeof cssObjectByRuleNameOrGetCssObjectByRuleName ===\n                \"function\"\n                ? cssObjectByRuleNameOrGetCssObjectByRuleName\n                : () => cssObjectByRuleNameOrGetCssObjectByRuleName;\n            return function useStyles(params, muiStyleOverridesParams) {\n                const theme = useTheme();\n                let { css, cx } = useCssAndCx();\n                const cache = useCache();\n                let classes = useMemo(() => {\n                    const refClassesCache = {};\n                    const refClasses = typeof Proxy !== \"undefined\" &&\n                        new Proxy({}, {\n                            \"get\": (_target, propertyKey) => {\n                                if (typeof propertyKey === \"symbol\") {\n                                    assert(false);\n                                }\n                                return (refClassesCache[propertyKey] = `${cache.key}-${uniqId}${name !== undefined ? `-${name}` : \"\"}-${propertyKey}-ref`);\n                            }\n                        });\n                    const cssObjectByRuleName = getCssObjectByRuleName(theme, params, refClasses || {});\n                    const classes = objectFromEntries(objectKeys(cssObjectByRuleName).map(ruleName => {\n                        const cssObject = cssObjectByRuleName[ruleName];\n                        if (!cssObject.label) {\n                            cssObject.label = `${name !== undefined ? `${name}-` : \"\"}${ruleName}`;\n                        }\n                        return [\n                            ruleName,\n                            `${css(cssObject)}${typeGuard(ruleName, ruleName in refClassesCache)\n                                ? ` ${refClassesCache[ruleName]}`\n                                : \"\"}`\n                        ];\n                    }));\n                    objectKeys(refClassesCache).forEach(ruleName => {\n                        if (ruleName in classes) {\n                            return;\n                        }\n                        classes[ruleName] =\n                            refClassesCache[ruleName];\n                    });\n                    return classes;\n                }, [cache, css, cx, theme, getDependencyArrayRef(params)]);\n                {\n                    const propsClasses = muiStyleOverridesParams === null || muiStyleOverridesParams === void 0 ? void 0 : muiStyleOverridesParams.props.classes;\n                    classes = useMemo(() => mergeClasses(classes, propsClasses, cx), [classes, getDependencyArrayRef(propsClasses), cx]);\n                }\n                {\n                    const pluginResultWrap = useMuiThemeStyleOverridesPlugin({\n                        classes,\n                        css,\n                        cx,\n                        \"name\": name !== null && name !== void 0 ? name : \"makeStyle no name\",\n                        \"idOfUseStyles\": uniqId,\n                        muiStyleOverridesParams,\n                        // NOTE: If it's not a Mui Theme the plugin is resilient, it will not crash\n                        \"theme\": theme\n                    });\n                    if (pluginResultWrap.classes !== undefined) {\n                        classes = pluginResultWrap.classes;\n                    }\n                    if (pluginResultWrap.css !== undefined) {\n                        css = pluginResultWrap.css;\n                    }\n                    if (pluginResultWrap.cx !== undefined) {\n                        cx = pluginResultWrap.cx;\n                    }\n                }\n                return {\n                    classes,\n                    theme,\n                    css,\n                    cx\n                };\n            };\n        };\n    }\n    function useStyles() {\n        const theme = useTheme();\n        const { css, cx } = useCssAndCx();\n        return { theme, css, cx };\n    }\n    return { makeStyles, useStyles };\n}\nconst reactContext = createContext(undefined);\nexport function TssCacheProvider(props) {\n    const { children, value } = props;\n    return (React.createElement(reactContext.Provider, { value: value }, children));\n}\nexport const { createUseCache } = (() => {\n    function useCacheProvidedByProvider() {\n        const cacheExplicitlyProvidedForTss = useContext(reactContext);\n        return cacheExplicitlyProvidedForTss;\n    }\n    function createUseCache(params) {\n        const { cacheProvidedAtInception } = params;\n        function useCache() {\n            var _a;\n            const contextualCache = useContextualCache();\n            const cacheExplicitlyProvidedForTss = useCacheProvidedByProvider();\n            const cacheToBeUsed = (_a = cacheProvidedAtInception !== null && cacheProvidedAtInception !== void 0 ? cacheProvidedAtInception : cacheExplicitlyProvidedForTss) !== null && _a !== void 0 ? _a : contextualCache;\n            if (cacheToBeUsed === null) {\n                throw new Error([\n                    \"In order to get SSR working with tss-react you need to explicitly provide an Emotion cache.\",\n                    \"MUI users be aware: This is not an error strictly related to tss-react, with or without tss-react,\",\n                    \"MUI needs an Emotion cache to be provided for SSR to work.\",\n                    \"Here is the MUI documentation related to SSR setup: https://mui.com/material-ui/guides/server-rendering/\",\n                    \"TSS provides helper that makes the process of setting up SSR easier: https://docs.tss-react.dev/ssr\"\n                ].join(\"\\n\"));\n            }\n            return cacheToBeUsed;\n        }\n        return { useCache };\n    }\n    return { createUseCache };\n})();\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { objectKeys } from \"./tools/objectKeys\";\nexport function mergeClasses(classesFromUseStyles, classesOverrides, cx) {\n    //NOTE: We use this test to be resilient in case classesOverrides is not of the expected type.\n    if (!(classesOverrides instanceof Object)) {\n        return classesFromUseStyles;\n    }\n    const out = {};\n    objectKeys(classesFromUseStyles).forEach(ruleName => (out[ruleName] = cx(classesFromUseStyles[ruleName], classesOverrides[ruleName])));\n    objectKeys(classesOverrides).forEach(ruleName => {\n        if (ruleName in classesFromUseStyles) {\n            return;\n        }\n        const className = classesOverrides[ruleName];\n        //...Same here, that why we don't do className === undefined\n        if (typeof className !== \"string\") {\n            return;\n        }\n        out[ruleName] = className;\n    });\n    return out;\n}\n","import { useTheme } from \"@mui/material/styles\";\nimport { createMakeAndWithStyles } from \"../index\";\nimport { createTss } from \"../tss\";\nimport { useMuiThemeStyleOverridesPlugin } from \"./themeStyleOverridesPlugin\";\n/** @see <https://docs.tss-react.dev/setup> */\nexport const { makeStyles, withStyles } = createMakeAndWithStyles({\n    useTheme\n});\nexport const { tss } = createTss({\n    \"useContext\": function useContext() {\n        const theme = useTheme();\n        return { theme };\n    },\n    \"usePlugin\": useMuiThemeStyleOverridesPlugin\n});\nexport const useStyles = tss.create({});\n","import { useMemo } from \"react\";\nimport { getDependencyArrayRef } from \"../tools/getDependencyArrayRef\";\nimport { mergeClasses } from \"../mergeClasses\";\nexport const useMuiThemeStyleOverridesPlugin = ({ classes, theme, muiStyleOverridesParams, css, cx, name }) => {\n    var _a, _b;\n    require_named: {\n        // NOTE: Hack for backwards compatibility with the makeStyles API.\n        if (name === \"makeStyle no name\") {\n            name = undefined;\n            break require_named;\n        }\n        if (muiStyleOverridesParams !== undefined && name === undefined) {\n            throw new Error(\"To use muiStyleOverridesParams, you must specify a name using .withName('MyComponent')\");\n        }\n    }\n    let styleOverrides = undefined;\n    try {\n        styleOverrides =\n            name === undefined\n                ? undefined\n                : ((_b = (_a = theme.components) === null || _a === void 0 ? void 0 : _a[name /*example*/]) === null || _b === void 0 ? void 0 : _b.styleOverrides) || undefined;\n        // eslint-disable-next-line no-empty\n    }\n    catch (_c) { }\n    const classesFromThemeStyleOverrides = useMemo(() => {\n        if (styleOverrides === undefined) {\n            return undefined;\n        }\n        const themeClasses = {};\n        for (const ruleName in styleOverrides) {\n            const cssObjectOrGetCssObject = styleOverrides[ruleName];\n            if (!(cssObjectOrGetCssObject instanceof Object)) {\n                continue;\n            }\n            themeClasses[ruleName] = css(typeof cssObjectOrGetCssObject === \"function\"\n                ? cssObjectOrGetCssObject({\n                    theme,\n                    \"ownerState\": muiStyleOverridesParams === null || muiStyleOverridesParams === void 0 ? void 0 : muiStyleOverridesParams.ownerState,\n                    ...muiStyleOverridesParams === null || muiStyleOverridesParams === void 0 ? void 0 : muiStyleOverridesParams.props\n                })\n                : cssObjectOrGetCssObject);\n        }\n        return themeClasses;\n    }, [\n        styleOverrides,\n        getDependencyArrayRef(muiStyleOverridesParams === null || muiStyleOverridesParams === void 0 ? void 0 : muiStyleOverridesParams.props),\n        getDependencyArrayRef(muiStyleOverridesParams === null || muiStyleOverridesParams === void 0 ? void 0 : muiStyleOverridesParams.ownerState),\n        css\n    ]);\n    classes = useMemo(() => mergeClasses(classes, classesFromThemeStyleOverrides, cx), [classes, classesFromThemeStyleOverrides, cx]);\n    return { classes };\n};\n","/** https://docs.tsafe.dev/assert */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function assert(condition, msg) {\n    if (!condition) {\n        throw new Error(msg);\n    }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * useEffect(\n *    ()=> { ... },\n *    [ { \"foo\": \"bar\" } ]\n * )\n * => The callback will be invoked every render.\n * because { \"foo\": \"bar\" } is a new instance every render.\n *\n * useEffect(\n *    ()=> { ... },\n *    [ getDependencyArrayRef({ \"foo\": \"bar\" }) ]\n * );\n * => The callback will only be invoked once.\n *\n * The optimization will be enabled only if obj is\n * of the form Record<string, string | number | undefined | null>\n * otherwise the object is returned (the function is the identity function).\n */\nexport function getDependencyArrayRef(obj) {\n    if (!(obj instanceof Object) || typeof obj === \"function\") {\n        return obj;\n    }\n    const arr = [];\n    for (const key in obj) {\n        const value = obj[key];\n        const typeofValue = typeof value;\n        if (!(typeofValue === \"string\" ||\n            (typeofValue === \"number\" && !isNaN(value)) ||\n            typeofValue === \"boolean\" ||\n            value === undefined ||\n            value === null)) {\n            return obj;\n        }\n        arr.push(`${key}:${typeofValue}_${value}`);\n    }\n    return \"xSqLiJdLMd9s\" + arr.join(\"|\");\n}\n","/** Object.keys() with types */\nexport function objectKeys(o) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return Object.keys(o);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const objectFromEntries = !Object\n    .fromEntries\n    ? (entries) => {\n        if (!entries || !entries[Symbol.iterator]) {\n            throw new Error(\"Object.fromEntries() requires a single iterable argument\");\n        }\n        const o = {};\n        Object.keys(entries).forEach(key => {\n            const [k, v] = entries[key];\n            o[k] = v;\n        });\n        return o;\n    }\n    : Object.fromEntries;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/** https://docs.tsafe.dev/typeguard */\nexport function typeGuard(_value, isMatched) {\n    return isMatched;\n}\n","export const isSSR = (() => {\n    const isBrowser = typeof document === \"object\" &&\n        typeof (document === null || document === void 0 ? void 0 : document.getElementById) === \"function\";\n    // Check for common testing framework global variables\n    const isJest = typeof jest !== \"undefined\";\n    const isMocha = typeof mocha !== \"undefined\";\n    const isVitest = typeof __vitest_worker__ !== \"undefined\";\n    return !isBrowser && !isJest && !isMocha && !isVitest;\n})();\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { createUseCache } from \"./makeStyles\";\nimport { createUseCssAndCx } from \"./cssAndCx\";\nimport { assert } from \"./tools/assert\";\nimport { objectFromEntries } from \"./tools/polyfills/Object.fromEntries\";\nimport { objectKeys } from \"./tools/objectKeys\";\nimport { typeGuard } from \"./tools/typeGuard\";\nimport { getDependencyArrayRef } from \"./tools/getDependencyArrayRef\";\nimport { mergeClasses } from \"./mergeClasses\";\nimport { isSSR } from \"./tools/isSSR\";\nexport function createTss(params) {\n    counter = 0;\n    nestedSelectorUsageTrackRecord.splice(0, nestedSelectorUsageTrackRecord.length);\n    const { useContext, usePlugin, cache: cacheProvidedAtInception } = params;\n    const { useCache } = createUseCache({ cacheProvidedAtInception });\n    const { useCssAndCx } = createUseCssAndCx({ useCache });\n    const usePluginDefault = ({ classes, cx, css }) => ({ classes, cx, css });\n    const tss = createTss_internal({\n        useContext,\n        useCache,\n        useCssAndCx,\n        \"usePlugin\": usePlugin !== null && usePlugin !== void 0 ? usePlugin : usePluginDefault,\n        \"name\": undefined,\n        \"doesUseNestedSelectors\": false\n    });\n    return { tss };\n}\nlet counter = 0;\nconst nestedSelectorUsageTrackRecord = [];\nfunction createTss_internal(params) {\n    const { useContext, useCache, useCssAndCx, usePlugin, name, doesUseNestedSelectors } = params;\n    return {\n        \"withParams\": () => createTss_internal({ ...params }),\n        \"withName\": nameOrWrappedName => createTss_internal({\n            ...params,\n            \"name\": typeof nameOrWrappedName !== \"object\"\n                ? nameOrWrappedName\n                : Object.keys(nameOrWrappedName)[0]\n        }),\n        \"withNestedSelectors\": () => createTss_internal({\n            ...params,\n            \"doesUseNestedSelectors\": true\n        }),\n        \"create\": (cssObjectByRuleNameOrGetCssObjectByRuleName) => {\n            // NOTE: Not isomorphic. Not guaranteed to be the same on client and server.\n            // Do not attempt to 'simplify' the code without taking this fact into account.\n            const idOfUseStyles = `x${counter++}`;\n            // NOTE: Cleanup for hot module reloading.\n            if (name !== undefined) {\n                // eslint-disable-next-line no-constant-condition\n                while (true) {\n                    const wrap = nestedSelectorUsageTrackRecord.find(wrap => wrap.name === name);\n                    if (wrap === undefined) {\n                        break;\n                    }\n                    nestedSelectorUsageTrackRecord.splice(nestedSelectorUsageTrackRecord.indexOf(wrap), 1);\n                }\n            }\n            const getCssObjectByRuleName = typeof cssObjectByRuleNameOrGetCssObjectByRuleName ===\n                \"function\"\n                ? cssObjectByRuleNameOrGetCssObjectByRuleName\n                : () => cssObjectByRuleNameOrGetCssObjectByRuleName;\n            return function useStyles(params) {\n                var _a, _b, _c;\n                const { classesOverrides, ...paramsAndPluginParams } = (params !== null && params !== void 0 ? params : {});\n                const context = useContext();\n                const { css, cx } = useCssAndCx();\n                const cache = useCache();\n                const getClasses = () => {\n                    const refClassesCache = {};\n                    // @ts-expect-error: Type safety non achievable.\n                    const cssObjectByRuleName = getCssObjectByRuleName({\n                        ...params,\n                        ...context,\n                        ...(!doesUseNestedSelectors\n                            ? {}\n                            : {\n                                \"classes\": typeof Proxy === \"undefined\"\n                                    ? {}\n                                    : new Proxy({}, {\n                                        \"get\": (_target, ruleName) => {\n                                            /* prettier-ignore */\n                                            if (typeof ruleName === \"symbol\") {\n                                                assert(false);\n                                            }\n                                            if (isSSR &&\n                                                name === undefined) {\n                                                throw new Error([\n                                                    `tss-react: In SSR setups, in order to use nested selectors, you must also give a unique name to the useStyle function.`,\n                                                    `Solution: Use tss.withName(\"ComponentName\").withNestedSelectors<...>()... to set a name.`\n                                                ].join(\"\\n\"));\n                                            }\n                                            update_nested_selector_usage_track_record: {\n                                                if (name === undefined) {\n                                                    break update_nested_selector_usage_track_record;\n                                                }\n                                                /* prettier-ignore */\n                                                let wrap = nestedSelectorUsageTrackRecord.find(wrap => wrap.name === name && wrap.idOfUseStyles === idOfUseStyles);\n                                                /* prettier-ignore */\n                                                if (wrap === undefined) {\n                                                    /* prettier-ignore */\n                                                    wrap = { name, idOfUseStyles, \"nestedSelectorRuleNames\": new Set() };\n                                                    /* prettier-ignore */\n                                                    nestedSelectorUsageTrackRecord.push(wrap);\n                                                }\n                                                /* prettier-ignore */\n                                                wrap.nestedSelectorRuleNames.add(ruleName);\n                                            }\n                                            detect_potential_conflicts: {\n                                                if (name === undefined) {\n                                                    break detect_potential_conflicts;\n                                                }\n                                                const hasPotentialConflict = nestedSelectorUsageTrackRecord.find(wrap => wrap.name ===\n                                                    name &&\n                                                    wrap.idOfUseStyles !==\n                                                        idOfUseStyles &&\n                                                    wrap.nestedSelectorRuleNames.has(ruleName)) !== undefined;\n                                                if (!hasPotentialConflict) {\n                                                    break detect_potential_conflicts;\n                                                }\n                                                throw new Error([\n                                                    `tss-react: There are in your codebase two different useStyles named \"${name}\" that`,\n                                                    `both use use the nested selector ${ruleName}.\\n`,\n                                                    `This may lead to CSS class name collisions, causing nested selectors to target elements outside of the intended scope.\\n`,\n                                                    `Solution: Ensure each useStyles using nested selectors has a unique name.\\n`,\n                                                    `Use: tss.withName(\"UniqueName\").withNestedSelectors<...>()...`\n                                                ].join(\" \"));\n                                            }\n                                            /* prettier-ignore */\n                                            return (refClassesCache[ruleName] = `${cache.key}-${name !== undefined ? name : idOfUseStyles}-${ruleName}-ref`);\n                                        }\n                                    })\n                            })\n                    });\n                    let classes = objectFromEntries(objectKeys(cssObjectByRuleName).map(ruleName => {\n                        const cssObject = cssObjectByRuleName[ruleName];\n                        if (!cssObject.label) {\n                            cssObject.label = `${name !== undefined ? `${name}-` : \"\"}${ruleName}`;\n                        }\n                        return [\n                            ruleName,\n                            `${css(cssObject)}${typeGuard(ruleName, ruleName in refClassesCache)\n                                ? ` ${refClassesCache[ruleName]}`\n                                : \"\"}`\n                        ];\n                    }));\n                    objectKeys(refClassesCache).forEach(ruleName => {\n                        if (ruleName in classes) {\n                            return;\n                        }\n                        classes[ruleName] =\n                            refClassesCache[ruleName];\n                    });\n                    classes = mergeClasses(classes, classesOverrides, cx);\n                    return classes;\n                };\n                const classes = runGetClassesOrUseCache({\n                    cache,\n                    cssObjectByRuleNameOrGetCssObjectByRuleName,\n                    \"classesOverridesRef\": getDependencyArrayRef(classesOverrides),\n                    \"paramsAndPluginParamsRef\": getDependencyArrayRef(paramsAndPluginParams),\n                    idOfUseStyles,\n                    context,\n                    getClasses\n                });\n                // @ts-expect-error: Type safety non achievable.\n                const pluginResultWrap = usePlugin({\n                    classes,\n                    css,\n                    cx,\n                    idOfUseStyles,\n                    name,\n                    ...context,\n                    ...paramsAndPluginParams\n                });\n                return {\n                    \"classes\": (_a = pluginResultWrap.classes) !== null && _a !== void 0 ? _a : classes,\n                    \"css\": (_b = pluginResultWrap.css) !== null && _b !== void 0 ? _b : css,\n                    \"cx\": (_c = pluginResultWrap.cx) !== null && _c !== void 0 ? _c : cx,\n                    ...context\n                };\n            };\n        }\n    };\n}\nconst mapCache = new WeakMap();\nfunction runGetClassesOrUseCache(params) {\n    const { cache, cssObjectByRuleNameOrGetCssObjectByRuleName, classesOverridesRef, paramsAndPluginParamsRef, idOfUseStyles, context, getClasses } = params;\n    use_cache: {\n        const mapCache_in = mapCache.get(cache);\n        if (mapCache_in === undefined) {\n            break use_cache;\n        }\n        const mapCache_in_in = mapCache_in.get(cssObjectByRuleNameOrGetCssObjectByRuleName);\n        if (mapCache_in_in === undefined) {\n            break use_cache;\n        }\n        const mapCache_in_in_in = mapCache_in_in.get(classesOverridesRef);\n        if (mapCache_in_in_in === undefined) {\n            break use_cache;\n        }\n        const arr = mapCache_in_in_in.get(paramsAndPluginParamsRef);\n        if (arr === undefined) {\n            break use_cache;\n        }\n        const entry = arr.find(({ context: context_i }) => {\n            if (context_i === context) {\n                return true;\n            }\n            if (objectKeys(context_i).length !== objectKeys(context).length) {\n                return false;\n            }\n            for (const key in context_i) {\n                if (getDependencyArrayRef(context_i[key]) !==\n                    getDependencyArrayRef(context[key])) {\n                    return false;\n                }\n            }\n            return true;\n        });\n        if (entry === undefined) {\n            break use_cache;\n        }\n        if ((entry === null || entry === void 0 ? void 0 : entry.idOfUseStyles) !== idOfUseStyles) {\n            arr.splice(arr.indexOf(entry), 1);\n            break use_cache;\n        }\n        return entry.result;\n    }\n    const result = getClasses();\n    {\n        if (!mapCache.has(cache)) {\n            mapCache.set(cache, new WeakMap());\n        }\n        const mapCache_in = mapCache.get(cache);\n        assert(mapCache_in !== undefined);\n        if (!mapCache_in.has(cssObjectByRuleNameOrGetCssObjectByRuleName)) {\n            mapCache_in.set(cssObjectByRuleNameOrGetCssObjectByRuleName, new Map());\n        }\n        const mapCache_in_in = mapCache_in.get(cssObjectByRuleNameOrGetCssObjectByRuleName);\n        assert(mapCache_in_in !== undefined);\n        if (!mapCache_in_in.has(classesOverridesRef)) {\n            if (mapCache_in_in.size > 200) {\n                mapCache_in_in.clear();\n            }\n            mapCache_in_in.set(classesOverridesRef, new Map());\n        }\n        const mapCache_in_in_in = mapCache_in_in.get(classesOverridesRef);\n        assert(mapCache_in_in_in !== undefined);\n        if (!mapCache_in_in_in.has(paramsAndPluginParamsRef)) {\n            clear_cache: {\n                const threshold = typeof paramsAndPluginParamsRef === \"string\" ? 257 : 5;\n                if (mapCache_in_in_in.size < threshold) {\n                    break clear_cache;\n                }\n                mapCache_in_in_in.clear();\n            }\n            mapCache_in_in_in.set(paramsAndPluginParamsRef, []);\n        }\n        let arr = mapCache_in_in_in.get(paramsAndPluginParamsRef);\n        assert(arr !== undefined);\n        if (arr.length > 5) {\n            arr = [];\n        }\n        arr.push({ idOfUseStyles, context, result });\n    }\n    return result;\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [':popover-open', ':modal'].some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n      // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  let htmlX = 0;\n  let htmlY = 0;\n  if (documentElement && !isOffsetParentAnElement && !isFixed) {\n    const htmlRect = documentElement.getBoundingClientRect();\n    htmlY = htmlRect.top + scroll.scrollTop;\n    htmlX = htmlRect.left + scroll.scrollLeft -\n    // RTL <body> scrollbar.\n    getWindowScrollBarX(documentElement, htmlRect);\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlX;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlY;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor, evaluate, max, round } from '@floating-ui/utils';\nimport { getComputedStyle, isElement, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      refs.forEach(ref => {\n        if (typeof ref === 'function') {\n          ref(value);\n        } else if (ref != null) {\n          ref.current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n  const ref = React.useRef(() => {\n    if (process.env.NODE_ENV !== \"production\") {\n      throw new Error('Cannot call an event handler while rendering.');\n    }\n  });\n  useSafeInsertionEffect(() => {\n    ref.current = callback;\n  });\n  return React.useCallback(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return ref.current == null ? void 0 : ref.current(...args);\n  }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n  return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n  return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n  return findNonDisabledIndex(listRef, {\n    disabledIndices\n  });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n  return findNonDisabledIndex(listRef, {\n    decrement: true,\n    startingIndex: listRef.current.length,\n    disabledIndices\n  });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n  let {\n    startingIndex = -1,\n    decrement = false,\n    disabledIndices,\n    amount = 1\n  } = _temp === void 0 ? {} : _temp;\n  const list = listRef.current;\n  let index = startingIndex;\n  do {\n    index += decrement ? -amount : amount;\n  } while (index >= 0 && index <= list.length - 1 && isDisabled(list, index, disabledIndices));\n  return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n  let {\n    event,\n    orientation,\n    loop,\n    cols,\n    disabledIndices,\n    minIndex,\n    maxIndex,\n    prevIndex,\n    stopEvent: stop = false\n  } = _ref;\n  let nextIndex = prevIndex;\n  if (event.key === ARROW_UP) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = maxIndex;\n    } else {\n      nextIndex = findNonDisabledIndex(elementsRef, {\n        startingIndex: nextIndex,\n        amount: cols,\n        decrement: true,\n        disabledIndices\n      });\n      if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n        const col = prevIndex % cols;\n        const maxCol = maxIndex % cols;\n        const offset = maxIndex - (maxCol - col);\n        if (maxCol === col) {\n          nextIndex = maxIndex;\n        } else {\n          nextIndex = maxCol > col ? offset : offset - cols;\n        }\n      }\n    }\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n  if (event.key === ARROW_DOWN) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = minIndex;\n    } else {\n      nextIndex = findNonDisabledIndex(elementsRef, {\n        startingIndex: prevIndex,\n        amount: cols,\n        disabledIndices\n      });\n      if (loop && prevIndex + cols > maxIndex) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex % cols - cols,\n          amount: cols,\n          disabledIndices\n        });\n      }\n    }\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n\n  // Remains on the same row/column.\n  if (orientation === 'both') {\n    const prevRow = floor(prevIndex / cols);\n    if (event.key === ARROW_RIGHT) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== cols - 1) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex,\n          disabledIndices\n        });\n        if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledIndex(elementsRef, {\n            startingIndex: prevIndex - prevIndex % cols - 1,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      }\n      if (isDifferentRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    if (event.key === ARROW_LEFT) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== 0) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex,\n          decrement: true,\n          disabledIndices\n        });\n        if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledIndex(elementsRef, {\n            startingIndex: prevIndex + (cols - prevIndex % cols),\n            decrement: true,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex + (cols - prevIndex % cols),\n          decrement: true,\n          disabledIndices\n        });\n      }\n      if (isDifferentRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    const lastRow = floor(maxIndex / cols) === prevRow;\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      if (loop && lastRow) {\n        nextIndex = event.key === ARROW_LEFT ? maxIndex : findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      } else {\n        nextIndex = prevIndex;\n      }\n    }\n  }\n  return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction buildCellMap(sizes, cols, dense) {\n  const cellMap = [];\n  let startIndex = 0;\n  sizes.forEach((_ref2, index) => {\n    let {\n      width,\n      height\n    } = _ref2;\n    if (width > cols) {\n      if (process.env.NODE_ENV !== \"production\") {\n        throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n      }\n    }\n    let itemPlaced = false;\n    if (dense) {\n      startIndex = 0;\n    }\n    while (!itemPlaced) {\n      const targetCells = [];\n      for (let i = 0; i < width; i++) {\n        for (let j = 0; j < height; j++) {\n          targetCells.push(startIndex + i + j * cols);\n        }\n      }\n      if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n        targetCells.forEach(cell => {\n          cellMap[cell] = index;\n        });\n        itemPlaced = true;\n      } else {\n        startIndex++;\n      }\n    }\n  });\n\n  // convert into a non-sparse array\n  return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n  if (index === -1) return -1;\n  const firstCellIndex = cellMap.indexOf(index);\n  const sizeItem = sizes[index];\n  switch (corner) {\n    case 'tl':\n      return firstCellIndex;\n    case 'tr':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + sizeItem.width - 1;\n    case 'bl':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + (sizeItem.height - 1) * cols;\n    case 'br':\n      return cellMap.lastIndexOf(index);\n  }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n  return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n  if (disabledIndices) {\n    return disabledIndices.includes(index);\n  }\n  const element = list[index];\n  return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    preventScroll = false,\n    cancelPrevious = true,\n    sync = false\n  } = options;\n  cancelPrevious && cancelAnimationFrame(rafId);\n  const exec = () => el == null ? void 0 : el.focus({\n    preventScroll\n  });\n  if (sync) {\n    exec();\n  } else {\n    rafId = requestAnimationFrame(exec);\n  }\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction sortByDocumentPosition(a, b) {\n  const position = a.compareDocumentPosition(b);\n  if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    return -1;\n  }\n  if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n    return 1;\n  }\n  return 0;\n}\nfunction areMapsEqual(map1, map2) {\n  if (map1.size !== map2.size) {\n    return false;\n  }\n  for (const [key, value] of map1.entries()) {\n    if (value !== map2.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n  register: () => {},\n  unregister: () => {},\n  map: /*#__PURE__*/new Map(),\n  elementsRef: {\n    current: []\n  }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n  const {\n    children,\n    elementsRef,\n    labelsRef\n  } = props;\n  const [map, setMap] = React.useState(() => new Map());\n  const register = React.useCallback(node => {\n    setMap(prevMap => new Map(prevMap).set(node, null));\n  }, []);\n  const unregister = React.useCallback(node => {\n    setMap(prevMap => {\n      const map = new Map(prevMap);\n      map.delete(node);\n      return map;\n    });\n  }, []);\n  index(() => {\n    const newMap = new Map(map);\n    const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n    nodes.forEach((node, index) => {\n      newMap.set(node, index);\n    });\n    if (!areMapsEqual(map, newMap)) {\n      setMap(newMap);\n    }\n  }, [map]);\n  return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n    value: React.useMemo(() => ({\n      register,\n      unregister,\n      map,\n      elementsRef,\n      labelsRef\n    }), [register, unregister, map, elementsRef, labelsRef])\n  }, children);\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    label\n  } = props;\n  const {\n    register,\n    unregister,\n    map,\n    elementsRef,\n    labelsRef\n  } = React.useContext(FloatingListContext);\n  const [index$1, setIndex] = React.useState(null);\n  const componentRef = React.useRef(null);\n  const ref = React.useCallback(node => {\n    componentRef.current = node;\n    if (index$1 !== null) {\n      elementsRef.current[index$1] = node;\n      if (labelsRef) {\n        var _node$textContent;\n        const isLabelDefined = label !== undefined;\n        labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n      }\n    }\n  }, [index$1, elementsRef, labelsRef, label]);\n  index(() => {\n    const node = componentRef.current;\n    if (node) {\n      register(node);\n      return () => {\n        unregister(node);\n      };\n    }\n  }, [register, unregister]);\n  index(() => {\n    const index = componentRef.current ? map.get(componentRef.current) : null;\n    if (index != null) {\n      setIndex(index);\n    }\n  }, [map]);\n  return React.useMemo(() => ({\n    ref,\n    index: index$1 == null ? -1 : index$1\n  }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n  if (typeof render === 'function') {\n    return render(computedProps);\n  }\n  if (render) {\n    return /*#__PURE__*/React.cloneElement(render, computedProps);\n  }\n  return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n  activeIndex: 0,\n  onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n  const {\n    render,\n    orientation = 'both',\n    loop = true,\n    cols = 1,\n    disabledIndices,\n    activeIndex: externalActiveIndex,\n    onNavigate: externalSetActiveIndex,\n    itemSizes,\n    dense = false,\n    ...domProps\n  } = props;\n  const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n  const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n  const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n  const elementsRef = React.useRef([]);\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const contextValue = React.useMemo(() => ({\n    activeIndex,\n    onNavigate\n  }), [activeIndex, onNavigate]);\n  const isGrid = cols > 1;\n  function handleKeyDown(event) {\n    if (!allKeys.includes(event.key)) return;\n    let nextIndex = activeIndex;\n    const minIndex = getMinIndex(elementsRef, disabledIndices);\n    const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n    if (isGrid) {\n      const sizes = itemSizes || Array.from({\n        length: elementsRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = buildCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(elementsRef.current, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(elementsRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const maybeNextIndex = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getCellIndices([...(disabledIndices || elementsRef.current.map((_, index) => isDisabled(elementsRef.current, index) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction we're\n        // moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === ARROW_RIGHT ? 'tr' : 'tl')\n      })];\n      if (maybeNextIndex != null) {\n        nextIndex = maybeNextIndex;\n      }\n    }\n    const toEndKeys = {\n      horizontal: [ARROW_RIGHT],\n      vertical: [ARROW_DOWN],\n      both: [ARROW_RIGHT, ARROW_DOWN]\n    }[orientation];\n    const toStartKeys = {\n      horizontal: [ARROW_LEFT],\n      vertical: [ARROW_UP],\n      both: [ARROW_LEFT, ARROW_UP]\n    }[orientation];\n    const preventedKeys = isGrid ? allKeys : {\n      horizontal: horizontalKeys,\n      vertical: verticalKeys,\n      both: allKeys\n    }[orientation];\n    if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n      if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n        nextIndex = minIndex;\n      } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n        nextIndex = maxIndex;\n      } else {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: nextIndex,\n          decrement: toStartKeys.includes(event.key),\n          disabledIndices\n        });\n      }\n    }\n    if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n      event.stopPropagation();\n      if (preventedKeys.includes(event.key)) {\n        event.preventDefault();\n      }\n      onNavigate(nextIndex);\n\n      // Wait for FocusManager `returnFocus` to execute.\n      queueMicrotask(() => {\n        enqueueFocus(elementsRef.current[nextIndex]);\n      });\n    }\n  }\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: forwardedRef,\n    'aria-orientation': orientation === 'both' ? undefined : orientation,\n    onKeyDown(e) {\n      domProps.onKeyDown == null || domProps.onKeyDown(e);\n      renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n      handleKeyDown(e);\n    }\n  };\n  return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(FloatingList, {\n    elementsRef: elementsRef\n  }, renderJsx(render, computedProps)));\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n  const {\n    render,\n    ...domProps\n  } = props;\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const {\n    activeIndex,\n    onNavigate\n  } = React.useContext(CompositeContext);\n  const {\n    ref,\n    index\n  } = useListItem();\n  const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n  const isActive = activeIndex === index;\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: mergedRef,\n    tabIndex: isActive ? 0 : -1,\n    'data-active': isActive ? '' : undefined,\n    onFocus(e) {\n      domProps.onFocus == null || domProps.onFocus(e);\n      renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n      onNavigate(index);\n    }\n  };\n  return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n  const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n  index(() => {\n    if (id == null) {\n      setId(genId());\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  React.useEffect(() => {\n    serverHandoffComplete = true;\n  }, []);\n  return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n  devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n  var _devMessageSet;\n  for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n    messages[_key] = arguments[_key];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n    var _devMessageSet2;\n    (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n    console.warn(message);\n  }\n}\nfunction error() {\n  var _devMessageSet3;\n  for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    messages[_key2] = arguments[_key2];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n    var _devMessageSet4;\n    (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n    console.error(message);\n  }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n  const {\n    context: {\n      placement,\n      elements: {\n        floating\n      },\n      middlewareData: {\n        arrow,\n        shift\n      }\n    },\n    width = 14,\n    height = 7,\n    tipRadius = 0,\n    strokeWidth = 0,\n    staticOffset,\n    stroke,\n    d,\n    style: {\n      transform,\n      ...restStyle\n    } = {},\n    ...rest\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!ref) {\n      warn('The `ref` prop is required for `FloatingArrow`.');\n    }\n  }\n  const clipPathId = useId();\n  const [isRTL, setIsRTL] = React.useState(false);\n\n  // https://github.com/floating-ui/floating-ui/issues/2932\n  index(() => {\n    if (!floating) return;\n    const isRTL = getComputedStyle(floating).direction === 'rtl';\n    if (isRTL) {\n      setIsRTL(true);\n    }\n  }, [floating]);\n  if (!floating) {\n    return null;\n  }\n  const [side, alignment] = placement.split('-');\n  const isVerticalSide = side === 'top' || side === 'bottom';\n  let computedStaticOffset = staticOffset;\n  if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n    computedStaticOffset = null;\n  }\n\n  // Strokes must be double the border width, this ensures the stroke's width\n  // works as you'd expect.\n  const computedStrokeWidth = strokeWidth * 2;\n  const halfStrokeWidth = computedStrokeWidth / 2;\n  const svgX = width / 2 * (tipRadius / -8 + 1);\n  const svgY = height / 2 * tipRadius / 4;\n  const isCustomShape = !!d;\n  const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n  let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n  if (computedStaticOffset && isRTL) {\n    xOffsetProp = alignment === 'end' ? 'left' : 'right';\n  }\n  const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n  const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n  const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n  const rotation = {\n    top: isCustomShape ? 'rotate(180deg)' : '',\n    left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n    bottom: isCustomShape ? '' : 'rotate(180deg)',\n    right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n  }[side];\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n    \"aria-hidden\": true,\n    ref: ref,\n    width: isCustomShape ? width : width + computedStrokeWidth,\n    height: width,\n    viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n    style: {\n      position: 'absolute',\n      pointerEvents: 'none',\n      [xOffsetProp]: arrowX,\n      [yOffsetProp]: arrowY,\n      [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n      transform: [rotation, transform].filter(t => !!t).join(' '),\n      ...restStyle\n    }\n  }), computedStrokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n    clipPath: \"url(#\" + clipPathId + \")\",\n    fill: \"none\",\n    stroke: stroke\n    // Account for the stroke on the fill path rendered below.\n    ,\n    strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n    d: dValue\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n    d: dValue\n  }), /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: clipPathId\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: -halfStrokeWidth,\n    y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n    width: width + computedStrokeWidth,\n    height: width\n  })));\n});\n\nfunction createPubSub() {\n  const map = new Map();\n  return {\n    emit(event, data) {\n      var _map$get;\n      (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n    },\n    on(event, listener) {\n      map.set(event, [...(map.get(event) || []), listener]);\n    },\n    off(event, listener) {\n      var _map$get2;\n      map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n    }\n  };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n  var _React$useContext;\n  return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n  const id = useId();\n  const tree = useFloatingTree();\n  const reactParentId = useFloatingParentNodeId();\n  const parentId = customParentId || reactParentId;\n  index(() => {\n    const node = {\n      id,\n      parentId\n    };\n    tree == null || tree.addNode(node);\n    return () => {\n      tree == null || tree.removeNode(node);\n    };\n  }, [tree, id, parentId]);\n  return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n  const {\n    children,\n    id\n  } = props;\n  const parentId = useFloatingParentNodeId();\n  return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n    value: React.useMemo(() => ({\n      id,\n      parentId\n    }), [id, parentId])\n  }, children);\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n  const {\n    children\n  } = props;\n  const nodesRef = React.useRef([]);\n  const addNode = React.useCallback(node => {\n    nodesRef.current = [...nodesRef.current, node];\n  }, []);\n  const removeNode = React.useCallback(node => {\n    nodesRef.current = nodesRef.current.filter(n => n !== node);\n  }, []);\n  const events = React.useState(() => createPubSub())[0];\n  return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n    value: React.useMemo(() => ({\n      nodesRef,\n      addNode,\n      removeNode,\n      events\n    }), [addNode, removeNode, events])\n  }, children);\n}\n\nfunction createAttribute(name) {\n  return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n  const ref = useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n  if (pointerType && !isMouseLikePointerType(pointerType)) {\n    return 0;\n  }\n  if (typeof value === 'number') {\n    return value;\n  }\n  return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    events,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    delay = 0,\n    handleClose = null,\n    mouseOnly = false,\n    restMs = 0,\n    move = true\n  } = props;\n  const tree = useFloatingTree();\n  const parentId = useFloatingParentNodeId();\n  const handleCloseRef = useLatestRef(handleClose);\n  const delayRef = useLatestRef(delay);\n  const openRef = useLatestRef(open);\n  const pointerTypeRef = React.useRef();\n  const timeoutRef = React.useRef(-1);\n  const handlerRef = React.useRef();\n  const restTimeoutRef = React.useRef(-1);\n  const blockMouseMoveRef = React.useRef(true);\n  const performedPointerEventsMutationRef = React.useRef(false);\n  const unbindMouseMoveRef = React.useRef(() => {});\n  const isHoverOpen = React.useCallback(() => {\n    var _dataRef$current$open;\n    const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n    return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n  }, [dataRef]);\n\n  // When closing before opening, clear the delay timeouts to cancel it\n  // from showing.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        open\n      } = _ref;\n      if (!open) {\n        clearTimeout(timeoutRef.current);\n        clearTimeout(restTimeoutRef.current);\n        blockMouseMoveRef.current = true;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [enabled, events]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    if (!handleCloseRef.current) return;\n    if (!open) return;\n    function onLeave(event) {\n      if (isHoverOpen()) {\n        onOpenChange(false, event, 'hover');\n      }\n    }\n    const html = getDocument(elements.floating).documentElement;\n    html.addEventListener('mouseleave', onLeave);\n    return () => {\n      html.removeEventListener('mouseleave', onLeave);\n    };\n  }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n  const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n    if (runElseBranch === void 0) {\n      runElseBranch = true;\n    }\n    if (reason === void 0) {\n      reason = 'hover';\n    }\n    const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n    if (closeDelay && !handlerRef.current) {\n      clearTimeout(timeoutRef.current);\n      timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n    } else if (runElseBranch) {\n      clearTimeout(timeoutRef.current);\n      onOpenChange(false, event, reason);\n    }\n  }, [delayRef, onOpenChange]);\n  const cleanupMouseMoveHandler = useEffectEvent(() => {\n    unbindMouseMoveRef.current();\n    handlerRef.current = undefined;\n  });\n  const clearPointerEvents = useEffectEvent(() => {\n    if (performedPointerEventsMutationRef.current) {\n      const body = getDocument(elements.floating).body;\n      body.style.pointerEvents = '';\n      body.removeAttribute(safePolygonIdentifier);\n      performedPointerEventsMutationRef.current = false;\n    }\n  });\n\n  // Registering the mouse events on the reference directly to bypass React's\n  // delegation system. If the cursor was on a disabled element and then entered\n  // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function isClickLikeOpenEvent() {\n      return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n    }\n    function onMouseEnter(event) {\n      clearTimeout(timeoutRef.current);\n      blockMouseMoveRef.current = false;\n      if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && !getDelay(delayRef.current, 'open')) {\n        return;\n      }\n      const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n      if (openDelay) {\n        timeoutRef.current = window.setTimeout(() => {\n          if (!openRef.current) {\n            onOpenChange(true, event, 'hover');\n          }\n        }, openDelay);\n      } else {\n        onOpenChange(true, event, 'hover');\n      }\n    }\n    function onMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      unbindMouseMoveRef.current();\n      const doc = getDocument(elements.floating);\n      clearTimeout(restTimeoutRef.current);\n      if (handleCloseRef.current && dataRef.current.floatingContext) {\n        // Prevent clearing `onScrollMouseLeave` timeout.\n        if (!open) {\n          clearTimeout(timeoutRef.current);\n        }\n        handlerRef.current = handleCloseRef.current({\n          ...dataRef.current.floatingContext,\n          tree,\n          x: event.clientX,\n          y: event.clientY,\n          onClose() {\n            clearPointerEvents();\n            cleanupMouseMoveHandler();\n            closeWithDelay(event, true, 'safe-polygon');\n          }\n        });\n        const handler = handlerRef.current;\n        doc.addEventListener('mousemove', handler);\n        unbindMouseMoveRef.current = () => {\n          doc.removeEventListener('mousemove', handler);\n        };\n        return;\n      }\n\n      // Allow interactivity without `safePolygon` on touch devices. With a\n      // pointer, a short close delay is an alternative, so it should work\n      // consistently.\n      const shouldClose = pointerTypeRef.current === 'touch' ? !contains(elements.floating, event.relatedTarget) : true;\n      if (shouldClose) {\n        closeWithDelay(event);\n      }\n    }\n\n    // Ensure the floating element closes after scrolling even if the pointer\n    // did not move.\n    // https://github.com/floating-ui/floating-ui/discussions/1692\n    function onScrollMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      if (!dataRef.current.floatingContext) return;\n      handleCloseRef.current == null || handleCloseRef.current({\n        ...dataRef.current.floatingContext,\n        tree,\n        x: event.clientX,\n        y: event.clientY,\n        onClose() {\n          clearPointerEvents();\n          cleanupMouseMoveHandler();\n          closeWithDelay(event);\n        }\n      })(event);\n    }\n    if (isElement(elements.domReference)) {\n      var _elements$floating;\n      const ref = elements.domReference;\n      open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n      (_elements$floating = elements.floating) == null || _elements$floating.addEventListener('mouseleave', onScrollMouseLeave);\n      move && ref.addEventListener('mousemove', onMouseEnter, {\n        once: true\n      });\n      ref.addEventListener('mouseenter', onMouseEnter);\n      ref.addEventListener('mouseleave', onMouseLeave);\n      return () => {\n        var _elements$floating2;\n        open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n        (_elements$floating2 = elements.floating) == null || _elements$floating2.removeEventListener('mouseleave', onScrollMouseLeave);\n        move && ref.removeEventListener('mousemove', onMouseEnter);\n        ref.removeEventListener('mouseenter', onMouseEnter);\n        ref.removeEventListener('mouseleave', onMouseLeave);\n      };\n    }\n  }, [elements, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef]);\n\n  // Block pointer-events of every element other than the reference and floating\n  // while the floating element is open and has a `handleClose` handler. Also\n  // handles nested floating elements.\n  // https://github.com/floating-ui/floating-ui/issues/1722\n  index(() => {\n    var _handleCloseRef$curre;\n    if (!enabled) return;\n    if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n      performedPointerEventsMutationRef.current = true;\n      const floatingEl = elements.floating;\n      if (isElement(elements.domReference) && floatingEl) {\n        var _tree$nodesRef$curren;\n        const body = getDocument(elements.floating).body;\n        body.setAttribute(safePolygonIdentifier, '');\n        const ref = elements.domReference;\n        const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n        if (parentFloating) {\n          parentFloating.style.pointerEvents = '';\n        }\n        body.style.pointerEvents = 'none';\n        ref.style.pointerEvents = 'auto';\n        floatingEl.style.pointerEvents = 'auto';\n        return () => {\n          body.style.pointerEvents = '';\n          ref.style.pointerEvents = '';\n          floatingEl.style.pointerEvents = '';\n        };\n      }\n    }\n  }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n  index(() => {\n    if (!open) {\n      pointerTypeRef.current = undefined;\n      cleanupMouseMoveHandler();\n      clearPointerEvents();\n    }\n  }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n  React.useEffect(() => {\n    return () => {\n      cleanupMouseMoveHandler();\n      clearTimeout(timeoutRef.current);\n      clearTimeout(restTimeoutRef.current);\n      clearPointerEvents();\n    };\n  }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n  const reference = React.useMemo(() => {\n    function setPointerRef(event) {\n      pointerTypeRef.current = event.pointerType;\n    }\n    return {\n      onPointerDown: setPointerRef,\n      onPointerEnter: setPointerRef,\n      onMouseMove(event) {\n        const {\n          nativeEvent\n        } = event;\n        function handleMouseMove() {\n          if (!blockMouseMoveRef.current && !openRef.current) {\n            onOpenChange(true, nativeEvent, 'hover');\n          }\n        }\n        if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n          return;\n        }\n        if (open || restMs === 0) {\n          return;\n        }\n        clearTimeout(restTimeoutRef.current);\n        if (pointerTypeRef.current === 'touch') {\n          handleMouseMove();\n        } else {\n          restTimeoutRef.current = window.setTimeout(handleMouseMove, restMs);\n        }\n      }\n    };\n  }, [mouseOnly, onOpenChange, open, openRef, restMs]);\n  const floating = React.useMemo(() => ({\n    onMouseEnter() {\n      clearTimeout(timeoutRef.current);\n    },\n    onMouseLeave(event) {\n      closeWithDelay(event.nativeEvent, false);\n    }\n  }), [closeWithDelay]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  delay: 0,\n  initialDelay: 0,\n  timeoutMs: 0,\n  currentId: null,\n  setCurrentId: NOOP,\n  setState: NOOP,\n  isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const [state, setState] = React.useReducer((prev, next) => ({\n    ...prev,\n    ...next\n  }), {\n    delay,\n    timeoutMs,\n    initialDelay: delay,\n    currentId: null,\n    isInstantPhase: false\n  });\n  const initialCurrentIdRef = React.useRef(null);\n  const setCurrentId = React.useCallback(currentId => {\n    setState({\n      currentId\n    });\n  }, []);\n  index(() => {\n    if (state.currentId) {\n      if (initialCurrentIdRef.current === null) {\n        initialCurrentIdRef.current = state.currentId;\n      } else if (!state.isInstantPhase) {\n        setState({\n          isInstantPhase: true\n        });\n      }\n    } else {\n      if (state.isInstantPhase) {\n        setState({\n          isInstantPhase: false\n        });\n      }\n      initialCurrentIdRef.current = null;\n    }\n  }, [state.currentId, state.isInstantPhase]);\n  return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      ...state,\n      setState,\n      setCurrentId\n    }), [state, setCurrentId])\n  }, children);\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    id: optionId\n  } = options;\n  const id = optionId != null ? optionId : floatingId;\n  const groupContext = useDelayGroupContext();\n  const {\n    currentId,\n    setCurrentId,\n    initialDelay,\n    setState,\n    timeoutMs\n  } = groupContext;\n  index(() => {\n    if (!currentId) return;\n    setState({\n      delay: {\n        open: 1,\n        close: getDelay(initialDelay, 'close')\n      }\n    });\n    if (currentId !== id) {\n      onOpenChange(false);\n    }\n  }, [id, onOpenChange, setState, currentId, initialDelay]);\n  index(() => {\n    function unset() {\n      onOpenChange(false);\n      setState({\n        delay: initialDelay,\n        currentId: null\n      });\n    }\n    if (!currentId) return;\n    if (!open && currentId === id) {\n      if (timeoutMs) {\n        const timeout = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeout);\n        };\n      }\n      unset();\n    }\n  }, [open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n  index(() => {\n    if (setCurrentId === NOOP || !open) return;\n    setCurrentId(id);\n  }, [open, setCurrentId, id]);\n  return groupContext;\n}\n\nfunction getAncestors(nodes, id) {\n  var _nodes$find;\n  let allAncestors = [];\n  let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n  while (currentParentId) {\n    const currentNode = nodes.find(node => node.id === currentParentId);\n    currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n    if (currentNode) {\n      allAncestors = allAncestors.concat(currentNode);\n    }\n  }\n  return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n  let allChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n  });\n  let currentChildren = allChildren;\n  while (currentChildren.length) {\n    currentChildren = nodes.filter(node => {\n      var _currentChildren;\n      return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n        var _node$context2;\n        return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n      });\n    });\n    allChildren = allChildren.concat(currentChildren);\n  }\n  return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n  let deepestNodeId;\n  let maxDepth = -1;\n  function findDeepest(nodeId, depth) {\n    if (depth > maxDepth) {\n      deepestNodeId = nodeId;\n      maxDepth = depth;\n    }\n    const children = getChildren(nodes, nodeId);\n    children.forEach(child => {\n      findDeepest(child.id, depth + 1);\n    });\n  }\n  findDeepest(id, 0);\n  return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n  if (parent.contains(target)) {\n    return target;\n  }\n  const correctedTarget = unwrapHost(target);\n  if (parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n  const markerName = 'data-floating-ui-inert';\n  const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n  const avoidElements = correctElements(body, uncorrectedAvoidElements);\n  const elementsToKeep = new Set();\n  const elementsToStop = new Set(avoidElements);\n  const hiddenElements = [];\n  if (!markerMap[markerName]) {\n    markerMap[markerName] = new WeakMap();\n  }\n  const markerCounter = markerMap[markerName];\n  avoidElements.forEach(keep);\n  deep(body);\n  elementsToKeep.clear();\n  function keep(el) {\n    if (!el || elementsToKeep.has(el)) {\n      return;\n    }\n    elementsToKeep.add(el);\n    el.parentNode && keep(el.parentNode);\n  }\n  function deep(parent) {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    [].forEach.call(parent.children, node => {\n      if (getNodeName(node) === 'script') return;\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n        const alreadyHidden = attr !== null && attr !== 'false';\n        const counterValue = (counterMap.get(node) || 0) + 1;\n        const markerValue = (markerCounter.get(node) || 0) + 1;\n        counterMap.set(node, counterValue);\n        markerCounter.set(node, markerValue);\n        hiddenElements.push(node);\n        if (counterValue === 1 && alreadyHidden) {\n          uncontrolledElementsSet.add(node);\n        }\n        if (markerValue === 1) {\n          node.setAttribute(markerName, '');\n        }\n        if (!alreadyHidden && controlAttribute) {\n          node.setAttribute(controlAttribute, 'true');\n        }\n      }\n    });\n  }\n  lockCount$1++;\n  return () => {\n    hiddenElements.forEach(element => {\n      const counterValue = (counterMap.get(element) || 0) - 1;\n      const markerValue = (markerCounter.get(element) || 0) - 1;\n      counterMap.set(element, counterValue);\n      markerCounter.set(element, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n          element.removeAttribute(controlAttribute);\n        }\n        uncontrolledElementsSet.delete(element);\n      }\n      if (!markerValue) {\n        element.removeAttribute(markerName);\n      }\n    });\n    lockCount$1--;\n    if (!lockCount$1) {\n      counterMap = new WeakMap();\n      counterMap = new WeakMap();\n      uncontrolledElementsSet = new WeakSet();\n      markerMap = {};\n    }\n  };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n  if (ariaHidden === void 0) {\n    ariaHidden = false;\n  }\n  if (inert === void 0) {\n    inert = false;\n  }\n  const body = getDocument(avoidElements[0]).body;\n  return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n  getShadowRoot: true,\n  displayCheck:\n  // JSDOM does not support the `tabbable` library. To solve this we can\n  // check if `ResizeObserver` is a real function (not polyfilled), which\n  // determines if the current environment is JSDOM-like.\n  typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n  const allTabbable = tabbable(container, getTabbableOptions());\n  if (direction === 'prev') {\n    allTabbable.reverse();\n  }\n  const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n  const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n  return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n  return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n  return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n  const containerElement = container || event.currentTarget;\n  const relatedTarget = event.relatedTarget;\n  return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n  const tabbableElements = tabbable(container, getTabbableOptions());\n  tabbableElements.forEach(element => {\n    element.dataset.tabindex = element.getAttribute('tabindex') || '';\n    element.setAttribute('tabindex', '-1');\n  });\n}\nfunction enableFocusInside(container) {\n  const elements = container.querySelectorAll('[data-tabindex]');\n  elements.forEach(element => {\n    const tabindex = element.dataset.tabindex;\n    delete element.dataset.tabindex;\n    if (tabindex) {\n      element.setAttribute('tabindex', tabindex);\n    } else {\n      element.removeAttribute('tabindex');\n    }\n  });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'fixed',\n  whiteSpace: 'nowrap',\n  width: '1px',\n  top: 0,\n  left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n  if (event.key === 'Tab') {\n    event.target;\n    clearTimeout(timeoutId);\n  }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n  const [role, setRole] = React.useState();\n  index(() => {\n    if (isSafari()) {\n      // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n      // on VoiceOver does trigger the onFocus event, so we can use the focus\n      // trap element. On Safari, only buttons trigger the onFocus event.\n      // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n      // button role.\n      setRole('button');\n    }\n    document.addEventListener('keydown', setActiveElementOnTab);\n    return () => {\n      document.removeEventListener('keydown', setActiveElementOnTab);\n    };\n  }, []);\n  const restProps = {\n    ref,\n    tabIndex: 0,\n    // Role is only for VoiceOver\n    role,\n    'aria-hidden': role ? undefined : true,\n    [createAttribute('focus-guard')]: '',\n    style: HIDDEN_STYLES\n  };\n  return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    id,\n    root\n  } = props;\n  const uniqueId = useId();\n  const portalContext = usePortalContext();\n  const [portalNode, setPortalNode] = React.useState(null);\n  const portalNodeRef = React.useRef(null);\n  index(() => {\n    return () => {\n      portalNode == null || portalNode.remove();\n      // Allow the subsequent layout effects to create a new node on updates.\n      // The portal node will still be cleaned up on unmount.\n      // https://github.com/floating-ui/floating-ui/issues/2454\n      queueMicrotask(() => {\n        portalNodeRef.current = null;\n      });\n    };\n  }, [portalNode]);\n  index(() => {\n    // Wait for the uniqueId to be generated before creating the portal node in\n    // React <18 (using `useFloatingId` instead of the native `useId`).\n    // https://github.com/floating-ui/floating-ui/issues/2778\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    const existingIdRoot = id ? document.getElementById(id) : null;\n    if (!existingIdRoot) return;\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    existingIdRoot.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, uniqueId]);\n  index(() => {\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n    if (container && !isElement(container)) container = container.current;\n    container = container || document.body;\n    let idWrapper = null;\n    if (id) {\n      idWrapper = document.createElement('div');\n      idWrapper.id = id;\n      container.appendChild(idWrapper);\n    }\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    container = idWrapper || container;\n    container.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, root, uniqueId, portalContext]);\n  return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n  const {\n    children,\n    id,\n    root = null,\n    preserveTabOrder = true\n  } = props;\n  const portalNode = useFloatingPortalNode({\n    id,\n    root\n  });\n  const [focusManagerState, setFocusManagerState] = React.useState(null);\n  const beforeOutsideRef = React.useRef(null);\n  const afterOutsideRef = React.useRef(null);\n  const beforeInsideRef = React.useRef(null);\n  const afterInsideRef = React.useRef(null);\n  const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n  const open = focusManagerState == null ? void 0 : focusManagerState.open;\n  const shouldRenderGuards =\n  // The FocusManager and therefore floating element are currently open/\n  // rendered.\n  !!focusManagerState &&\n  // Guards are only for non-modal focus management.\n  !focusManagerState.modal &&\n  // Don't render if unmount is transitioning.\n  focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n  // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n  React.useEffect(() => {\n    if (!portalNode || !preserveTabOrder || modal) {\n      return;\n    }\n\n    // Make sure elements inside the portal element are tabbable only when the\n    // portal has already been focused, either by tabbing into a focus trap\n    // element outside or using the mouse.\n    function onFocus(event) {\n      if (portalNode && isOutsideEvent(event)) {\n        const focusing = event.type === 'focusin';\n        const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n        manageFocus(portalNode);\n      }\n    }\n    // Listen to the event on the capture phase so they run before the focus\n    // trap elements onFocus prop is called.\n    portalNode.addEventListener('focusin', onFocus, true);\n    portalNode.addEventListener('focusout', onFocus, true);\n    return () => {\n      portalNode.removeEventListener('focusin', onFocus, true);\n      portalNode.removeEventListener('focusout', onFocus, true);\n    };\n  }, [portalNode, preserveTabOrder, modal]);\n  React.useEffect(() => {\n    if (!portalNode) return;\n    if (open) return;\n    enableFocusInside(portalNode);\n  }, [open, portalNode]);\n  return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n    value: React.useMemo(() => ({\n      preserveTabOrder,\n      beforeOutsideRef,\n      afterOutsideRef,\n      beforeInsideRef,\n      afterInsideRef,\n      portalNode,\n      setFocusManagerState\n    }), [preserveTabOrder, portalNode])\n  }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"outside\",\n    ref: beforeOutsideRef,\n    onFocus: event => {\n      if (isOutsideEvent(event, portalNode)) {\n        var _beforeInsideRef$curr;\n        (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n      } else {\n        const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n        prevTabbable == null || prevTabbable.focus();\n      }\n    }\n  }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-owns\": portalNode.id,\n    style: HIDDEN_STYLES\n  }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"outside\",\n    ref: afterOutsideRef,\n    onFocus: event => {\n      if (isOutsideEvent(event, portalNode)) {\n        var _afterInsideRef$curre;\n        (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n      } else {\n        const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n        nextTabbable == null || nextTabbable.focus();\n        (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n      }\n    }\n  }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nfunction getFloatingFocusElement(floatingElement) {\n  if (!floatingElement) {\n    return null;\n  }\n  // Try to find the element that has `{...getFloatingProps()}` spread on it.\n  // This indicates the floating element is acting as a positioning wrapper, and\n  // so focus should be managed on the child element with the event handlers and\n  // aria props.\n  return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n  previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n  let tabbableEl = element;\n  if (!tabbableEl || getNodeName(tabbableEl) === 'body') return;\n  if (!isTabbable(tabbableEl, getTabbableOptions())) {\n    const tabbableChild = tabbable(tabbableEl, getTabbableOptions())[0];\n    if (tabbableChild) {\n      tabbableEl = tabbableChild;\n    }\n  }\n  previouslyFocusedElements.push(tabbableEl);\n  if (previouslyFocusedElements.length > LIST_LIMIT) {\n    previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n  }\n}\nfunction getPreviouslyFocusedElement() {\n  return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n  return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n    type: \"button\",\n    ref: ref,\n    tabIndex: -1,\n    style: HIDDEN_STYLES\n  }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n  const {\n    context,\n    children,\n    disabled = false,\n    order = ['content'],\n    guards: _guards = true,\n    initialFocus = 0,\n    returnFocus = true,\n    restoreFocus = false,\n    modal = true,\n    visuallyHiddenDismiss = false,\n    closeOnFocusOut = true\n  } = props;\n  const {\n    open,\n    refs,\n    nodeId,\n    onOpenChange,\n    events,\n    dataRef,\n    floatingId,\n    elements: {\n      domReference,\n      floating\n    }\n  } = context;\n  const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n  // If the reference is a combobox and is typeable (e.g. input/textarea),\n  // there are different focus semantics. The guards should not be rendered, but\n  // aria-hidden should be applied to all nodes still. Further, the visually\n  // hidden dismiss button should only appear at the end of the list, not the\n  // start.\n  const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n  // Force the guards to be rendered if the `inert` attribute is not supported.\n  const guards = supportsInert() ? _guards : true;\n  const orderRef = useLatestRef(order);\n  const initialFocusRef = useLatestRef(initialFocus);\n  const returnFocusRef = useLatestRef(returnFocus);\n  const tree = useFloatingTree();\n  const portalContext = usePortalContext();\n  const startDismissButtonRef = React.useRef(null);\n  const endDismissButtonRef = React.useRef(null);\n  const preventReturnFocusRef = React.useRef(false);\n  const isPointerDownRef = React.useRef(false);\n  const tabbableIndexRef = React.useRef(-1);\n  const isInsidePortal = portalContext != null;\n  const floatingFocusElement = getFloatingFocusElement(floating);\n  const getTabbableContent = useEffectEvent(function (container) {\n    if (container === void 0) {\n      container = floatingFocusElement;\n    }\n    return container ? tabbable(container, getTabbableOptions()) : [];\n  });\n  const getTabbableElements = useEffectEvent(container => {\n    const content = getTabbableContent(container);\n    return orderRef.current.map(type => {\n      if (domReference && type === 'reference') {\n        return domReference;\n      }\n      if (floatingFocusElement && type === 'floating') {\n        return floatingFocusElement;\n      }\n      return content;\n    }).filter(Boolean).flat();\n  });\n  React.useEffect(() => {\n    preventReturnFocusRef.current = false;\n  }, [disabled]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!modal) return;\n    function onKeyDown(event) {\n      if (event.key === 'Tab') {\n        // The focus guards have nothing to focus, so we need to stop the event.\n        if (contains(floatingFocusElement, activeElement(getDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n          stopEvent(event);\n        }\n        const els = getTabbableElements();\n        const target = getTarget(event);\n        if (orderRef.current[0] === 'reference' && target === domReference) {\n          stopEvent(event);\n          if (event.shiftKey) {\n            enqueueFocus(els[els.length - 1]);\n          } else {\n            enqueueFocus(els[1]);\n          }\n        }\n        if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n          stopEvent(event);\n          enqueueFocus(els[0]);\n        }\n      }\n    }\n    const doc = getDocument(floatingFocusElement);\n    doc.addEventListener('keydown', onKeyDown);\n    return () => {\n      doc.removeEventListener('keydown', onKeyDown);\n    };\n  }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!floating) return;\n    function handleFocusIn(event) {\n      const target = getTarget(event);\n      const tabbableContent = getTabbableContent();\n      const tabbableIndex = tabbableContent.indexOf(target);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n    }\n    floating.addEventListener('focusin', handleFocusIn);\n    return () => {\n      floating.removeEventListener('focusin', handleFocusIn);\n    };\n  }, [disabled, floating, getTabbableContent]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!closeOnFocusOut) return;\n\n    // In Safari, buttons lose focus when pressing them.\n    function handlePointerDown() {\n      isPointerDownRef.current = true;\n      setTimeout(() => {\n        isPointerDownRef.current = false;\n      });\n    }\n    function handleFocusOutside(event) {\n      const relatedTarget = event.relatedTarget;\n      queueMicrotask(() => {\n        const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context, _node$context2;\n          return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n        }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context3, _node$context4;\n          return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n        })));\n\n        // Restore focus to the previous tabbable element index to prevent\n        // focus from being lost outside the floating tree.\n        if (restoreFocus && movedToUnrelatedNode && activeElement(getDocument(floatingFocusElement)) === getDocument(floatingFocusElement).body) {\n          // Let `FloatingPortal` effect knows that focus is still inside the\n          // floating tree.\n          if (isHTMLElement(floatingFocusElement)) {\n            floatingFocusElement.focus();\n          }\n          const prevTabbableIndex = tabbableIndexRef.current;\n          const tabbableContent = getTabbableContent();\n          const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n          if (isHTMLElement(nodeToFocus)) {\n            nodeToFocus.focus();\n          }\n        }\n\n        // Focus did not move inside the floating tree, and there are no tabbable\n        // portal guards to handle closing.\n        if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n        // Fix React 18 Strict Mode returnFocus due to double rendering.\n        relatedTarget !== getPreviouslyFocusedElement()) {\n          preventReturnFocusRef.current = true;\n          onOpenChange(false, event, 'focus-out');\n        }\n      });\n    }\n    if (floating && isHTMLElement(domReference)) {\n      domReference.addEventListener('focusout', handleFocusOutside);\n      domReference.addEventListener('pointerdown', handlePointerDown);\n      floating.addEventListener('focusout', handleFocusOutside);\n      return () => {\n        domReference.removeEventListener('focusout', handleFocusOutside);\n        domReference.removeEventListener('pointerdown', handlePointerDown);\n        floating.removeEventListener('focusout', handleFocusOutside);\n      };\n    }\n  }, [disabled, domReference, floating, floatingFocusElement, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox]);\n  React.useEffect(() => {\n    var _portalContext$portal;\n    if (disabled) return;\n\n    // Don't hide portals nested within the parent portal.\n    const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n    if (floating) {\n      const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n      const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n      return () => {\n        cleanup();\n      };\n    }\n  }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n  index(() => {\n    if (disabled || !isHTMLElement(floatingFocusElement)) return;\n    const doc = getDocument(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n\n    // Wait for any layout effect state setters to execute to set `tabIndex`.\n    queueMicrotask(() => {\n      const focusableElements = getTabbableElements(floatingFocusElement);\n      const initialFocusValue = initialFocusRef.current;\n      const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n      const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n      if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n        enqueueFocus(elToFocus, {\n          preventScroll: elToFocus === floatingFocusElement\n        });\n      }\n    });\n  }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n  index(() => {\n    if (disabled || !floatingFocusElement) return;\n    let preventReturnFocusScroll = false;\n    const doc = getDocument(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n    const contextData = dataRef.current;\n    let openEvent = contextData.openEvent;\n    addPreviouslyFocusedElement(previouslyFocusedElement);\n\n    // Dismissing via outside press should always ignore `returnFocus` to\n    // prevent unwanted scrolling.\n    function onOpenChange(_ref) {\n      let {\n        open,\n        reason,\n        event,\n        nested\n      } = _ref;\n      if (open) {\n        openEvent = event;\n      }\n      if (reason === 'escape-key' && refs.domReference.current) {\n        addPreviouslyFocusedElement(refs.domReference.current);\n      }\n      if (reason === 'hover' && event.type === 'mouseleave') {\n        preventReturnFocusRef.current = true;\n      }\n      if (reason !== 'outside-press') return;\n      if (nested) {\n        preventReturnFocusRef.current = false;\n        preventReturnFocusScroll = true;\n      } else {\n        preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n      }\n    }\n    events.on('openchange', onOpenChange);\n    const fallbackEl = doc.createElement('span');\n    fallbackEl.setAttribute('tabindex', '-1');\n    fallbackEl.setAttribute('aria-hidden', 'true');\n    Object.assign(fallbackEl.style, HIDDEN_STYLES);\n    if (isInsidePortal && domReference) {\n      domReference.insertAdjacentElement('afterend', fallbackEl);\n    }\n    return () => {\n      events.off('openchange', onOpenChange);\n      const activeEl = activeElement(doc);\n      const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n        var _node$context5;\n        return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n      });\n      const shouldFocusReference = isFocusInsideFloatingTree || openEvent && ['click', 'mousedown'].includes(openEvent.type);\n      if (shouldFocusReference && refs.domReference.current) {\n        addPreviouslyFocusedElement(refs.domReference.current);\n      }\n      const returnElement = getPreviouslyFocusedElement() || fallbackEl;\n      queueMicrotask(() => {\n        if (\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n        // If the focus moved somewhere else after mount, avoid returning focus\n        // since it likely entered a different element which should be\n        // respected: https://github.com/floating-ui/floating-ui/issues/2607\n        returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n          returnElement.focus({\n            preventScroll: preventReturnFocusScroll\n          });\n        }\n        fallbackEl.remove();\n      });\n    };\n  }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, refs, events, tree, nodeId, isInsidePortal, domReference]);\n\n  // Synchronize the `context` & `modal` value to the FloatingPortal context.\n  // It will decide whether or not it needs to render its own guards.\n  index(() => {\n    if (disabled) return;\n    if (!portalContext) return;\n    portalContext.setFocusManagerState({\n      modal,\n      closeOnFocusOut,\n      open,\n      onOpenChange,\n      refs\n    });\n    return () => {\n      portalContext.setFocusManagerState(null);\n    };\n  }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n  index(() => {\n    if (disabled) return;\n    if (!floatingFocusElement) return;\n    if (typeof MutationObserver !== 'function') return;\n    if (ignoreInitialFocus) return;\n    const handleMutation = () => {\n      const tabIndex = floatingFocusElement.getAttribute('tabindex');\n      const tabbableContent = getTabbableContent();\n      const activeEl = activeElement(getDocument(floating));\n      const tabbableIndex = tabbableContent.indexOf(activeEl);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n      if (orderRef.current.includes('floating') || activeEl !== refs.domReference.current && tabbableContent.length === 0) {\n        if (tabIndex !== '0') {\n          floatingFocusElement.setAttribute('tabindex', '0');\n        }\n      } else if (tabIndex !== '-1') {\n        floatingFocusElement.setAttribute('tabindex', '-1');\n      }\n    };\n    handleMutation();\n    const observer = new MutationObserver(handleMutation);\n    observer.observe(floatingFocusElement, {\n      childList: true,\n      subtree: true,\n      attributes: true\n    });\n    return () => {\n      observer.disconnect();\n    };\n  }, [disabled, floating, floatingFocusElement, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n  function renderDismissButton(location) {\n    if (disabled || !visuallyHiddenDismiss || !modal) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n      ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n      onClick: event => onOpenChange(false, event.nativeEvent)\n    }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n  }\n  const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"inside\",\n    ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n    onFocus: event => {\n      if (modal) {\n        const els = getTabbableElements();\n        enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n      } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n        preventReturnFocusRef.current = false;\n        if (isOutsideEvent(event, portalContext.portalNode)) {\n          const nextTabbable = getNextTabbable() || domReference;\n          nextTabbable == null || nextTabbable.focus();\n        } else {\n          var _portalContext$before;\n          (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n        }\n      }\n    }\n  }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"inside\",\n    ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n    onFocus: event => {\n      if (modal) {\n        enqueueFocus(getTabbableElements()[0]);\n      } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n        if (closeOnFocusOut) {\n          preventReturnFocusRef.current = true;\n        }\n        if (isOutsideEvent(event, portalContext.portalNode)) {\n          const prevTabbable = getPreviousTabbable() || domReference;\n          prevTabbable == null || prevTabbable.focus();\n        } else {\n          var _portalContext$afterO;\n          (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n        }\n      }\n    }\n  }));\n}\n\nlet lockCount = 0;\nfunction enableScrollLock() {\n  const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n  const bodyStyle = document.body.style;\n  // RTL <body> scrollbar\n  const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n  const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n  const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n  const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n  const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n  bodyStyle.overflow = 'hidden';\n  if (scrollbarWidth) {\n    bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n  }\n\n  // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n  // technique has fewer side effects.\n  if (isIOS) {\n    var _window$visualViewpor, _window$visualViewpor2;\n    // iOS 12 does not support `visualViewport`.\n    const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n    const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n    Object.assign(bodyStyle, {\n      position: 'fixed',\n      top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n      left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n      right: '0'\n    });\n  }\n  return () => {\n    Object.assign(bodyStyle, {\n      overflow: '',\n      [paddingProp]: ''\n    });\n    if (isIOS) {\n      Object.assign(bodyStyle, {\n        position: '',\n        top: '',\n        left: '',\n        right: ''\n      });\n      window.scrollTo(scrollX, scrollY);\n    }\n  };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n  const {\n    lockScroll = false,\n    ...rest\n  } = props;\n  index(() => {\n    if (!lockScroll) return;\n    lockCount++;\n    if (lockCount === 1) {\n      cleanup = enableScrollLock();\n    }\n    return () => {\n      lockCount--;\n      if (lockCount === 0) {\n        cleanup();\n      }\n    };\n  }, [lockScroll]);\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, rest, {\n    style: {\n      position: 'fixed',\n      overflow: 'auto',\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n      ...rest.style\n    }\n  }));\n});\n\nfunction isButtonTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n  return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    elements: {\n      domReference\n    }\n  } = context;\n  const {\n    enabled = true,\n    event: eventOption = 'click',\n    toggle = true,\n    ignoreMouse = false,\n    keyboardHandlers = true\n  } = props;\n  const pointerTypeRef = React.useRef();\n  const didKeyDownRef = React.useRef(false);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      pointerTypeRef.current = event.pointerType;\n    },\n    onMouseDown(event) {\n      const pointerType = pointerTypeRef.current;\n\n      // Ignore all buttons except for the \"main\" button.\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n      if (event.button !== 0) return;\n      if (eventOption === 'click') return;\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        // Prevent stealing focus from the floating element\n        event.preventDefault();\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onClick(event) {\n      const pointerType = pointerTypeRef.current;\n      if (eventOption === 'mousedown' && pointerTypeRef.current) {\n        pointerTypeRef.current = undefined;\n        return;\n      }\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'click' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onKeyDown(event) {\n      pointerTypeRef.current = undefined;\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n        return;\n      }\n      if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n        // Prevent scrolling\n        event.preventDefault();\n        didKeyDownRef.current = true;\n      }\n      if (event.key === 'Enter') {\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    },\n    onKeyUp(event) {\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n        return;\n      }\n      if (event.key === ' ' && didKeyDownRef.current) {\n        didKeyDownRef.current = false;\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    }\n  }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, toggle]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n  let offsetX = null;\n  let offsetY = null;\n  let isAutoUpdateEvent = false;\n  return {\n    contextElement: domElement || undefined,\n    getBoundingClientRect() {\n      var _data$dataRef$current;\n      const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n        width: 0,\n        height: 0,\n        x: 0,\n        y: 0\n      };\n      const isXAxis = data.axis === 'x' || data.axis === 'both';\n      const isYAxis = data.axis === 'y' || data.axis === 'both';\n      const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n      let width = domRect.width;\n      let height = domRect.height;\n      let x = domRect.x;\n      let y = domRect.y;\n      if (offsetX == null && data.x && isXAxis) {\n        offsetX = domRect.x - data.x;\n      }\n      if (offsetY == null && data.y && isYAxis) {\n        offsetY = domRect.y - data.y;\n      }\n      x -= offsetX || 0;\n      y -= offsetY || 0;\n      width = 0;\n      height = 0;\n      if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n        width = data.axis === 'y' ? domRect.width : 0;\n        height = data.axis === 'x' ? domRect.height : 0;\n        x = isXAxis && data.x != null ? data.x : x;\n        y = isYAxis && data.y != null ? data.y : y;\n      } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n        height = data.axis === 'x' ? domRect.height : height;\n        width = data.axis === 'y' ? domRect.width : width;\n      }\n      isAutoUpdateEvent = true;\n      return {\n        width,\n        height,\n        x,\n        y,\n        top: y,\n        right: x + width,\n        bottom: y + height,\n        left: x\n      };\n    }\n  };\n}\nfunction isMouseBasedEvent(event) {\n  return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    dataRef,\n    elements: {\n      floating,\n      domReference\n    },\n    refs\n  } = context;\n  const {\n    enabled = true,\n    axis = 'both',\n    x = null,\n    y = null\n  } = props;\n  const initialRef = React.useRef(false);\n  const cleanupListenerRef = React.useRef(null);\n  const [pointerType, setPointerType] = React.useState();\n  const [reactive, setReactive] = React.useState([]);\n  const setReference = useEffectEvent((x, y) => {\n    if (initialRef.current) return;\n\n    // Prevent setting if the open event was not a mouse-like one\n    // (e.g. focus to open, then hover over the reference element).\n    // Only apply if the event exists.\n    if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n      return;\n    }\n    refs.setPositionReference(createVirtualElement(domReference, {\n      x,\n      y,\n      axis,\n      dataRef,\n      pointerType\n    }));\n  });\n  const handleReferenceEnterOrMove = useEffectEvent(event => {\n    if (x != null || y != null) return;\n    if (!open) {\n      setReference(event.clientX, event.clientY);\n    } else if (!cleanupListenerRef.current) {\n      // If there's no cleanup, there's no listener, but we want to ensure\n      // we add the listener if the cursor landed on the floating element and\n      // then back on the reference (i.e. it's interactive).\n      setReactive([]);\n    }\n  });\n\n  // If the pointer is a mouse-like pointer, we want to continue following the\n  // mouse even if the floating element is transitioning out. On touch\n  // devices, this is undesirable because the floating element will move to\n  // the dismissal touch point.\n  const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n  const addListener = React.useCallback(() => {\n    // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n    if (!openCheck || !enabled || x != null || y != null) return;\n    const win = getWindow(floating);\n    function handleMouseMove(event) {\n      const target = getTarget(event);\n      if (!contains(floating, target)) {\n        setReference(event.clientX, event.clientY);\n      } else {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      }\n    }\n    if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n      win.addEventListener('mousemove', handleMouseMove);\n      const cleanup = () => {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      };\n      cleanupListenerRef.current = cleanup;\n      return cleanup;\n    }\n    refs.setPositionReference(domReference);\n  }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n  React.useEffect(() => {\n    return addListener();\n  }, [addListener, reactive]);\n  React.useEffect(() => {\n    if (enabled && !floating) {\n      initialRef.current = false;\n    }\n  }, [enabled, floating]);\n  React.useEffect(() => {\n    if (!enabled && open) {\n      initialRef.current = true;\n    }\n  }, [enabled, open]);\n  index(() => {\n    if (enabled && (x != null || y != null)) {\n      initialRef.current = false;\n      setReference(x, y);\n    }\n  }, [enabled, x, y, setReference]);\n  const reference = React.useMemo(() => {\n    function setPointerTypeRef(_ref) {\n      let {\n        pointerType\n      } = _ref;\n      setPointerType(pointerType);\n    }\n    return {\n      onPointerDown: setPointerTypeRef,\n      onPointerEnter: setPointerTypeRef,\n      onMouseMove: handleReferenceEnterOrMove,\n      onMouseEnter: handleReferenceEnterOrMove\n    };\n  }, [handleReferenceEnterOrMove]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n  pointerdown: 'onPointerDown',\n  mousedown: 'onMouseDown',\n  click: 'onClick'\n};\nconst captureHandlerKeys = {\n  pointerdown: 'onPointerDownCapture',\n  mousedown: 'onMouseDownCapture',\n  click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n  var _normalizable$escapeK, _normalizable$outside;\n  return {\n    escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n    outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n  };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    elements,\n    dataRef\n  } = context;\n  const {\n    enabled = true,\n    escapeKey = true,\n    outsidePress: unstable_outsidePress = true,\n    outsidePressEvent = 'pointerdown',\n    referencePress = false,\n    referencePressEvent = 'pointerdown',\n    ancestorScroll = false,\n    bubbles,\n    capture\n  } = props;\n  const tree = useFloatingTree();\n  const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n  const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n  const insideReactTreeRef = React.useRef(false);\n  const endedOrStartedInsideRef = React.useRef(false);\n  const {\n    escapeKey: escapeKeyBubbles,\n    outsidePress: outsidePressBubbles\n  } = normalizeProp(bubbles);\n  const {\n    escapeKey: escapeKeyCapture,\n    outsidePress: outsidePressCapture\n  } = normalizeProp(capture);\n  const closeOnEscapeKeyDown = useEffectEvent(event => {\n    var _dataRef$current$floa;\n    if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n      return;\n    }\n    const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n    const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n    if (!escapeKeyBubbles) {\n      event.stopPropagation();\n      if (children.length > 0) {\n        let shouldDismiss = true;\n        children.forEach(child => {\n          var _child$context;\n          if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n            shouldDismiss = false;\n            return;\n          }\n        });\n        if (!shouldDismiss) {\n          return;\n        }\n      }\n    }\n    onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n  });\n  const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n    var _getTarget2;\n    const callback = () => {\n      var _getTarget;\n      closeOnEscapeKeyDown(event);\n      (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n    };\n    (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n  });\n  const closeOnPressOutside = useEffectEvent(event => {\n    var _dataRef$current$floa2;\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = insideReactTreeRef.current;\n    insideReactTreeRef.current = false;\n\n    // When click outside is lazy (`click` event), handle dragging.\n    // Don't close if:\n    // - The click started inside the floating element.\n    // - The click ended inside the floating element.\n    const endedOrStartedInside = endedOrStartedInsideRef.current;\n    endedOrStartedInsideRef.current = false;\n    if (outsidePressEvent === 'click' && endedOrStartedInside) {\n      return;\n    }\n    if (insideReactTree) {\n      return;\n    }\n    if (typeof outsidePress === 'function' && !outsidePress(event)) {\n      return;\n    }\n    const target = getTarget(event);\n    const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n    const markers = getDocument(elements.floating).querySelectorAll(inertSelector);\n    let targetRootAncestor = isElement(target) ? target : null;\n    while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n      const nextParent = getParentNode(targetRootAncestor);\n      if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n        break;\n      }\n      targetRootAncestor = nextParent;\n    }\n\n    // Check if the click occurred on a third-party element injected after the\n    // floating element rendered.\n    if (markers.length && isElement(target) && !isRootElement(target) &&\n    // Clicked on a direct ancestor (e.g. FloatingOverlay).\n    !contains(target, elements.floating) &&\n    // If the target root element contains none of the markers, then the\n    // element was injected after the floating element rendered.\n    Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n      return;\n    }\n\n    // Check if the click occurred on the scrollbar\n    if (isHTMLElement(target) && floating) {\n      // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n      // elements.\n      const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n      const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n      let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n      // In some browsers it is possible to change the <body> (or window)\n      // scrollbar to the left side, but is very rare and is difficult to\n      // check for. Plus, for modal dialogs with backdrops, it is more\n      // important that the backdrop is checked but not so much the window.\n      if (canScrollY) {\n        const isRTL = getComputedStyle(target).direction === 'rtl';\n        if (isRTL) {\n          xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n        }\n      }\n      if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n        return;\n      }\n    }\n    const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n    const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n      var _node$context;\n      return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n    });\n    if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n      return;\n    }\n    const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n    if (children.length > 0) {\n      let shouldDismiss = true;\n      children.forEach(child => {\n        var _child$context2;\n        if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n          shouldDismiss = false;\n          return;\n        }\n      });\n      if (!shouldDismiss) {\n        return;\n      }\n    }\n    onOpenChange(false, event, 'outside-press');\n  });\n  const closeOnPressOutsideCapture = useEffectEvent(event => {\n    var _getTarget4;\n    const callback = () => {\n      var _getTarget3;\n      closeOnPressOutside(event);\n      (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n    };\n    (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n  });\n  React.useEffect(() => {\n    if (!open || !enabled) {\n      return;\n    }\n    dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n    dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n    function onScroll(event) {\n      onOpenChange(false, event, 'ancestor-scroll');\n    }\n    const doc = getDocument(elements.floating);\n    escapeKey && doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n    outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n    let ancestors = [];\n    if (ancestorScroll) {\n      if (isElement(elements.domReference)) {\n        ancestors = getOverflowAncestors(elements.domReference);\n      }\n      if (isElement(elements.floating)) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n      }\n      if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n      }\n    }\n\n    // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n    ancestors = ancestors.filter(ancestor => {\n      var _doc$defaultView;\n      return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n    });\n    ancestors.forEach(ancestor => {\n      ancestor.addEventListener('scroll', onScroll, {\n        passive: true\n      });\n    });\n    return () => {\n      escapeKey && doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n      outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n      ancestors.forEach(ancestor => {\n        ancestor.removeEventListener('scroll', onScroll);\n      });\n    };\n  }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n  React.useEffect(() => {\n    insideReactTreeRef.current = false;\n  }, [outsidePress, outsidePressEvent]);\n  const reference = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    [bubbleHandlerKeys[referencePressEvent]]: event => {\n      if (referencePress) {\n        onOpenChange(false, event.nativeEvent, 'reference-press');\n      }\n    }\n  }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n  const floating = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    onMouseDown() {\n      endedOrStartedInsideRef.current = true;\n    },\n    onMouseUp() {\n      endedOrStartedInsideRef.current = true;\n    },\n    [captureHandlerKeys[outsidePressEvent]]: () => {\n      insideReactTreeRef.current = true;\n    }\n  }), [closeOnEscapeKeyDown, outsidePressEvent]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n  const {\n    open = false,\n    onOpenChange: onOpenChangeProp,\n    elements: elementsProp\n  } = options;\n  const floatingId = useId();\n  const dataRef = React.useRef({});\n  const [events] = React.useState(() => createPubSub());\n  const nested = useFloatingParentNodeId() != null;\n  if (process.env.NODE_ENV !== \"production\") {\n    const optionDomReference = elementsProp.reference;\n    if (optionDomReference && !isElement(optionDomReference)) {\n      error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n    }\n  }\n  const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n  const onOpenChange = useEffectEvent((open, event, reason) => {\n    dataRef.current.openEvent = open ? event : undefined;\n    events.emit('openchange', {\n      open,\n      event,\n      reason,\n      nested\n    });\n    onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n  });\n  const refs = React.useMemo(() => ({\n    setPositionReference\n  }), []);\n  const elements = React.useMemo(() => ({\n    reference: positionReference || elementsProp.reference || null,\n    floating: elementsProp.floating || null,\n    domReference: elementsProp.reference\n  }), [positionReference, elementsProp.reference, elementsProp.floating]);\n  return React.useMemo(() => ({\n    dataRef,\n    open,\n    onOpenChange,\n    elements,\n    events,\n    floatingId,\n    refs\n  }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    nodeId\n  } = options;\n  const internalRootContext = useFloatingRootContext({\n    ...options,\n    elements: {\n      reference: null,\n      floating: null,\n      ...options.elements\n    }\n  });\n  const rootContext = options.rootContext || internalRootContext;\n  const computedElements = rootContext.elements;\n  const [_domReference, setDomReference] = React.useState(null);\n  const [positionReference, _setPositionReference] = React.useState(null);\n  const optionDomReference = computedElements == null ? void 0 : computedElements.reference;\n  const domReference = optionDomReference || _domReference;\n  const domReferenceRef = React.useRef(null);\n  const tree = useFloatingTree();\n  index(() => {\n    if (domReference) {\n      domReferenceRef.current = domReference;\n    }\n  }, [domReference]);\n  const position = useFloating$1({\n    ...options,\n    elements: {\n      ...computedElements,\n      ...(positionReference && {\n        reference: positionReference\n      })\n    }\n  });\n  const setPositionReference = React.useCallback(node => {\n    const computedPositionReference = isElement(node) ? {\n      getBoundingClientRect: () => node.getBoundingClientRect(),\n      contextElement: node\n    } : node;\n    // Store the positionReference in state if the DOM reference is specified externally via the\n    // `elements.reference` option. This ensures that it won't be overridden on future renders.\n    _setPositionReference(computedPositionReference);\n    position.refs.setReference(computedPositionReference);\n  }, [position.refs]);\n  const setReference = React.useCallback(node => {\n    if (isElement(node) || node === null) {\n      domReferenceRef.current = node;\n      setDomReference(node);\n    }\n\n    // Backwards-compatibility for passing a virtual element to `reference`\n    // after it has set the DOM reference.\n    if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n    // Don't allow setting virtual elements using the old technique back to\n    // `null` to support `positionReference` + an unstable `reference`\n    // callback ref.\n    node !== null && !isElement(node)) {\n      position.refs.setReference(node);\n    }\n  }, [position.refs]);\n  const refs = React.useMemo(() => ({\n    ...position.refs,\n    setReference,\n    setPositionReference,\n    domReference: domReferenceRef\n  }), [position.refs, setReference, setPositionReference]);\n  const elements = React.useMemo(() => ({\n    ...position.elements,\n    domReference: domReference\n  }), [position.elements, domReference]);\n  const context = React.useMemo(() => ({\n    ...position,\n    ...rootContext,\n    refs,\n    elements,\n    nodeId\n  }), [position, refs, elements, nodeId, rootContext]);\n  index(() => {\n    rootContext.dataRef.current.floatingContext = context;\n    const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n    if (node) {\n      node.context = context;\n    }\n  });\n  return React.useMemo(() => ({\n    ...position,\n    context,\n    refs,\n    elements\n  }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    visibleOnly = true\n  } = props;\n  const blockFocusRef = React.useRef(false);\n  const timeoutRef = React.useRef();\n  const keyboardModalityRef = React.useRef(true);\n  React.useEffect(() => {\n    if (!enabled) return;\n    const win = getWindow(elements.domReference);\n\n    // If the reference was focused and the user left the tab/window, and the\n    // floating element was not open, the focus should be blocked when they\n    // return to the tab/window.\n    function onBlur() {\n      if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n        blockFocusRef.current = true;\n      }\n    }\n    function onKeyDown() {\n      keyboardModalityRef.current = true;\n    }\n    win.addEventListener('blur', onBlur);\n    win.addEventListener('keydown', onKeyDown, true);\n    return () => {\n      win.removeEventListener('blur', onBlur);\n      win.removeEventListener('keydown', onKeyDown, true);\n    };\n  }, [elements.domReference, open, enabled]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        reason\n      } = _ref;\n      if (reason === 'reference-press' || reason === 'escape-key') {\n        blockFocusRef.current = true;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [events, enabled]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      if (isVirtualPointerEvent(event.nativeEvent)) return;\n      keyboardModalityRef.current = false;\n    },\n    onMouseLeave() {\n      blockFocusRef.current = false;\n    },\n    onFocus(event) {\n      if (blockFocusRef.current) return;\n      const target = getTarget(event.nativeEvent);\n      if (visibleOnly && isElement(target)) {\n        try {\n          // Mac Safari unreliably matches `:focus-visible` on the reference\n          // if focus was outside the page initially - use the fallback\n          // instead.\n          if (isSafari() && isMac()) throw Error();\n          if (!target.matches(':focus-visible')) return;\n        } catch (e) {\n          // Old browsers will throw an error when using `:focus-visible`.\n          if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n            return;\n          }\n        }\n      }\n      onOpenChange(true, event.nativeEvent, 'focus');\n    },\n    onBlur(event) {\n      blockFocusRef.current = false;\n      const relatedTarget = event.relatedTarget;\n      const nativeEvent = event.nativeEvent;\n\n      // Hit the non-modal focus management portal guard. Focus will be\n      // moved into the floating element immediately after.\n      const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n      // Wait for the window blur listener to fire.\n      timeoutRef.current = window.setTimeout(() => {\n        var _dataRef$current$floa;\n        const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n        // Focus left the page, keep it open.\n        if (!relatedTarget && activeEl === elements.domReference) return;\n\n        // When focusing the reference element (e.g. regular click), then\n        // clicking into the floating element, prevent it from hiding.\n        // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n        // We can not rely on relatedTarget to point to the correct element\n        // as it will only point to the shadow host of the newly focused element\n        // and not the element that actually has received focus if it is located\n        // inside a shadow root.\n        if (contains((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains(elements.domReference, activeEl) || movedToFocusGuard) {\n          return;\n        }\n        onOpenChange(false, nativeEvent, 'focus');\n      });\n    }\n  }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n  const map = new Map();\n  const isItem = elementKey === 'item';\n  let domUserProps = userProps;\n  if (isItem && userProps) {\n    const {\n      [ACTIVE_KEY]: _,\n      [SELECTED_KEY]: __,\n      ...validProps\n    } = userProps;\n    domUserProps = validProps;\n  }\n  return {\n    ...(elementKey === 'floating' && {\n      tabIndex: -1,\n      [FOCUSABLE_ATTRIBUTE]: ''\n    }),\n    ...domUserProps,\n    ...propsList.map(value => {\n      const propsOrGetProps = value ? value[elementKey] : null;\n      if (typeof propsOrGetProps === 'function') {\n        return userProps ? propsOrGetProps(userProps) : null;\n      }\n      return propsOrGetProps;\n    }).concat(userProps).reduce((acc, props) => {\n      if (!props) {\n        return acc;\n      }\n      Object.entries(props).forEach(_ref => {\n        let [key, value] = _ref;\n        if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n          return;\n        }\n        if (key.indexOf('on') === 0) {\n          if (!map.has(key)) {\n            map.set(key, []);\n          }\n          if (typeof value === 'function') {\n            var _map$get;\n            (_map$get = map.get(key)) == null || _map$get.push(value);\n            acc[key] = function () {\n              var _map$get2;\n              for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n                args[_key] = arguments[_key];\n              }\n              return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n            };\n          }\n        } else {\n          acc[key] = value;\n        }\n      });\n      return acc;\n    }, {})\n  };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n  if (propsList === void 0) {\n    propsList = [];\n  }\n  const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n  const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n  const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n  const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  referenceDeps);\n  const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  floatingDeps);\n  const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  itemDeps);\n  return React.useMemo(() => ({\n    getReferenceProps,\n    getFloatingProps,\n    getItemProps\n  }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nfunction doSwitch(orientation, vertical, horizontal) {\n  switch (orientation) {\n    case 'vertical':\n      return vertical;\n    case 'horizontal':\n      return horizontal;\n    default:\n      return vertical || horizontal;\n  }\n}\nfunction isMainOrientationKey(key, orientation) {\n  const vertical = key === ARROW_UP || key === ARROW_DOWN;\n  const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n  const vertical = key === ARROW_DOWN;\n  const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  const horizontal = key === ARROW_DOWN;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n  const horizontal = key === ARROW_UP;\n  return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n  const {\n    open,\n    onOpenChange,\n    elements\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onNavigate: unstable_onNavigate = () => {},\n    enabled = true,\n    selectedIndex = null,\n    allowEscape = false,\n    loop = false,\n    nested = false,\n    rtl = false,\n    virtual = false,\n    focusItemOnOpen = 'auto',\n    focusItemOnHover = true,\n    openOnArrowKeyDown = true,\n    disabledIndices = undefined,\n    orientation = 'vertical',\n    cols = 1,\n    scrollItemIntoView = true,\n    virtualItemRef,\n    itemSizes,\n    dense = false\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (allowEscape) {\n      if (!loop) {\n        warn('`useListNavigation` looping must be enabled to allow escaping.');\n      }\n      if (!virtual) {\n        warn('`useListNavigation` must be virtual to allow escaping.');\n      }\n    }\n    if (orientation === 'vertical' && cols > 1) {\n      warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n    }\n  }\n  const floatingFocusElement = getFloatingFocusElement(elements.floating);\n  const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n  const parentId = useFloatingParentNodeId();\n  const tree = useFloatingTree();\n  const onNavigate = useEffectEvent(unstable_onNavigate);\n  const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n  const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n  const keyRef = React.useRef(null);\n  const isPointerModalityRef = React.useRef(true);\n  const previousOnNavigateRef = React.useRef(onNavigate);\n  const previousMountedRef = React.useRef(!!elements.floating);\n  const previousOpenRef = React.useRef(open);\n  const forceSyncFocus = React.useRef(false);\n  const forceScrollIntoViewRef = React.useRef(false);\n  const disabledIndicesRef = useLatestRef(disabledIndices);\n  const latestOpenRef = useLatestRef(open);\n  const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n  const selectedIndexRef = useLatestRef(selectedIndex);\n  const [activeId, setActiveId] = React.useState();\n  const [virtualId, setVirtualId] = React.useState();\n  const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n    if (forceScrollIntoView === void 0) {\n      forceScrollIntoView = false;\n    }\n    function runFocus(item) {\n      if (virtual) {\n        setActiveId(item.id);\n        tree == null || tree.events.emit('virtualfocus', item);\n        if (virtualItemRef) {\n          virtualItemRef.current = item;\n        }\n      } else {\n        enqueueFocus(item, {\n          preventScroll: true,\n          // Mac Safari does not move the virtual cursor unless the focus call\n          // is sync. However, for the very first focus call, we need to wait\n          // for the position to be ready in order to prevent unwanted\n          // scrolling. This means the virtual cursor will not move to the first\n          // item when first opening the floating element, but will on\n          // subsequent calls. `preventScroll` is supported in modern Safari,\n          // so we can use that instead.\n          // iOS Safari must be async or the first item will not be focused.\n          sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n        });\n      }\n    }\n    const initialItem = listRef.current[indexRef.current];\n    if (initialItem) {\n      runFocus(initialItem);\n    }\n    requestAnimationFrame(() => {\n      const waitedItem = listRef.current[indexRef.current] || initialItem;\n      if (!waitedItem) return;\n      if (!initialItem) {\n        runFocus(waitedItem);\n      }\n      const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n      const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n      if (shouldScrollIntoView) {\n        // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n        // by all browsers.\n        waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n          block: 'nearest',\n          inline: 'nearest'\n        } : scrollIntoViewOptions);\n      }\n    });\n  });\n  index(() => {\n    document.createElement('div').focus({\n      get preventScroll() {\n        isPreventScrollSupported = true;\n        return false;\n      }\n    });\n  }, []);\n\n  // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n  // element. Also, reset `activeIndex` upon closing the floating element.\n  index(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (focusItemOnOpenRef.current && selectedIndex != null) {\n        // Regardless of the pointer modality, we want to ensure the selected\n        // item comes into view when the floating element is opened.\n        forceScrollIntoViewRef.current = true;\n        indexRef.current = selectedIndex;\n        onNavigate(selectedIndex);\n      }\n    } else if (previousMountedRef.current) {\n      // Since the user can specify `onNavigate` conditionally\n      // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n      // we store and call the previous function.\n      indexRef.current = -1;\n      previousOnNavigateRef.current(null);\n    }\n  }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n  // Sync `activeIndex` to be the focused item while the floating element is\n  // open.\n  index(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (activeIndex == null) {\n        forceSyncFocus.current = false;\n        if (selectedIndexRef.current != null) {\n          return;\n        }\n\n        // Reset while the floating element was open (e.g. the list changed).\n        if (previousMountedRef.current) {\n          indexRef.current = -1;\n          focusItem(listRef, indexRef);\n        }\n\n        // Initial sync.\n        if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n          let runs = 0;\n          const waitForListPopulated = () => {\n            if (listRef.current[0] == null) {\n              // Avoid letting the browser paint if possible on the first try,\n              // otherwise use rAF. Don't try more than twice, since something\n              // is wrong otherwise.\n              if (runs < 2) {\n                const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n                scheduler(waitForListPopulated);\n              }\n              runs++;\n            } else {\n              indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n              keyRef.current = null;\n              onNavigate(indexRef.current);\n            }\n          };\n          waitForListPopulated();\n        }\n      } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n        indexRef.current = activeIndex;\n        focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n        forceScrollIntoViewRef.current = false;\n      }\n    }\n  }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n  // Ensure the parent floating element has focus when a nested child closes\n  // to allow arrow key navigation to work after the pointer leaves the child.\n  index(() => {\n    var _nodes$find;\n    if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n      return;\n    }\n    const nodes = tree.nodesRef.current;\n    const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n    const activeEl = activeElement(getDocument(elements.floating));\n    const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n    if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n      parent.focus({\n        preventScroll: true\n      });\n    }\n  }, [enabled, elements.floating, tree, parentId, virtual]);\n  index(() => {\n    if (!enabled) return;\n    if (!tree) return;\n    if (!virtual) return;\n    if (parentId) return;\n    function handleVirtualFocus(item) {\n      setVirtualId(item.id);\n      if (virtualItemRef) {\n        virtualItemRef.current = item;\n      }\n    }\n    tree.events.on('virtualfocus', handleVirtualFocus);\n    return () => {\n      tree.events.off('virtualfocus', handleVirtualFocus);\n    };\n  }, [enabled, tree, virtual, parentId, virtualItemRef]);\n  index(() => {\n    previousOnNavigateRef.current = onNavigate;\n    previousMountedRef.current = !!elements.floating;\n  });\n  index(() => {\n    if (!open) {\n      keyRef.current = null;\n    }\n  }, [open]);\n  index(() => {\n    previousOpenRef.current = open;\n  }, [open]);\n  const hasActiveIndex = activeIndex != null;\n  const item = React.useMemo(() => {\n    function syncCurrentTarget(currentTarget) {\n      if (!open) return;\n      const index = listRef.current.indexOf(currentTarget);\n      if (index !== -1) {\n        onNavigate(index);\n      }\n    }\n    const props = {\n      onFocus(_ref) {\n        let {\n          currentTarget\n        } = _ref;\n        syncCurrentTarget(currentTarget);\n      },\n      onClick: _ref2 => {\n        let {\n          currentTarget\n        } = _ref2;\n        return currentTarget.focus({\n          preventScroll: true\n        });\n      },\n      // Safari\n      ...(focusItemOnHover && {\n        onMouseMove(_ref3) {\n          let {\n            currentTarget\n          } = _ref3;\n          syncCurrentTarget(currentTarget);\n        },\n        onPointerLeave(_ref4) {\n          let {\n            pointerType\n          } = _ref4;\n          if (!isPointerModalityRef.current || pointerType === 'touch') {\n            return;\n          }\n          indexRef.current = -1;\n          focusItem(listRef, indexRef);\n          onNavigate(null);\n          if (!virtual) {\n            enqueueFocus(floatingFocusElementRef.current, {\n              preventScroll: true\n            });\n          }\n        }\n      })\n    };\n    return props;\n  }, [open, floatingFocusElementRef, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n  const commonOnKeyDown = useEffectEvent(event => {\n    isPointerModalityRef.current = false;\n    forceSyncFocus.current = true;\n\n    // If the floating element is animating out, ignore navigation. Otherwise,\n    // the `activeIndex` gets set to 0 despite not being open so the next time\n    // the user ArrowDowns, the first item won't be focused.\n    if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n      return;\n    }\n    if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n      stopEvent(event);\n      onOpenChange(false, event.nativeEvent, 'list-navigation');\n      if (isHTMLElement(elements.domReference) && !virtual) {\n        elements.domReference.focus();\n      }\n      return;\n    }\n    const currentIndex = indexRef.current;\n    const minIndex = getMinIndex(listRef, disabledIndices);\n    const maxIndex = getMaxIndex(listRef, disabledIndices);\n    if (event.key === 'Home') {\n      stopEvent(event);\n      indexRef.current = minIndex;\n      onNavigate(indexRef.current);\n    }\n    if (event.key === 'End') {\n      stopEvent(event);\n      indexRef.current = maxIndex;\n      onNavigate(indexRef.current);\n    }\n\n    // Grid navigation.\n    if (cols > 1) {\n      const sizes = itemSizes || Array.from({\n        length: listRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = buildCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(listRef.current, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(listRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const index = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getCellIndices([...(disabledIndices || listRef.current.map((_, index) => isDisabled(listRef.current, index) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction\n        // we're moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === ARROW_RIGHT ? 'tr' : 'tl'),\n        stopEvent: true\n      })];\n      if (index != null) {\n        indexRef.current = index;\n        onNavigate(indexRef.current);\n      }\n      if (orientation === 'both') {\n        return;\n      }\n    }\n    if (isMainOrientationKey(event.key, orientation)) {\n      stopEvent(event);\n\n      // Reset the index if no item is focused.\n      if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n        indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n        onNavigate(indexRef.current);\n        return;\n      }\n      if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n        if (loop) {\n          indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          }));\n        }\n      } else {\n        if (loop) {\n          indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          }));\n        }\n      }\n      if (isIndexOutOfBounds(listRef, indexRef.current)) {\n        onNavigate(null);\n      } else {\n        onNavigate(indexRef.current);\n      }\n    }\n  });\n  const ariaActiveDescendantProp = React.useMemo(() => {\n    return virtual && open && hasActiveIndex && {\n      'aria-activedescendant': virtualId || activeId\n    };\n  }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n  const floating = React.useMemo(() => {\n    return {\n      'aria-orientation': orientation === 'both' ? undefined : orientation,\n      ...(!isTypeableCombobox(elements.domReference) && ariaActiveDescendantProp),\n      onKeyDown: commonOnKeyDown,\n      onPointerMove() {\n        isPointerModalityRef.current = true;\n      }\n    };\n  }, [ariaActiveDescendantProp, commonOnKeyDown, elements.domReference, orientation]);\n  const reference = React.useMemo(() => {\n    function checkVirtualMouse(event) {\n      if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    function checkVirtualPointer(event) {\n      // `pointerdown` fires first, reset the state then perform the checks.\n      focusItemOnOpenRef.current = focusItemOnOpen;\n      if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    return {\n      ...ariaActiveDescendantProp,\n      onKeyDown(event) {\n        isPointerModalityRef.current = false;\n        const isArrowKey = event.key.indexOf('Arrow') === 0;\n        const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n        const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n        const isMainKey = isMainOrientationKey(event.key, orientation);\n        const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n        if (virtual && open) {\n          const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n          const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n          if (isArrowKey && deepestNode && virtualItemRef) {\n            const eventObject = new KeyboardEvent('keydown', {\n              key: event.key,\n              bubbles: true\n            });\n            if (isCrossOpenKey || isCrossCloseKey) {\n              var _deepestNode$context, _deepestNode$context2;\n              const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n              const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n              if (dispatchItem) {\n                stopEvent(event);\n                dispatchItem.dispatchEvent(eventObject);\n                setVirtualId(undefined);\n              }\n            }\n            if (isMainKey && deepestNode.context) {\n              if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n                var _deepestNode$context$;\n                stopEvent(event);\n                (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n                return;\n              }\n            }\n          }\n          return commonOnKeyDown(event);\n        }\n\n        // If a floating element should not open on arrow key down, avoid\n        // setting `activeIndex` while it's closed.\n        if (!open && !openOnArrowKeyDown && isArrowKey) {\n          return;\n        }\n        if (isNavigationKey) {\n          keyRef.current = nested && isMainKey ? null : event.key;\n        }\n        if (nested) {\n          if (isCrossOpenKey) {\n            stopEvent(event);\n            if (open) {\n              indexRef.current = getMinIndex(listRef, disabledIndicesRef.current);\n              onNavigate(indexRef.current);\n            } else {\n              onOpenChange(true, event.nativeEvent, 'list-navigation');\n            }\n          }\n          return;\n        }\n        if (isMainKey) {\n          if (selectedIndex != null) {\n            indexRef.current = selectedIndex;\n          }\n          stopEvent(event);\n          if (!open && openOnArrowKeyDown) {\n            onOpenChange(true, event.nativeEvent, 'list-navigation');\n          } else {\n            commonOnKeyDown(event);\n          }\n          if (open) {\n            onNavigate(indexRef.current);\n          }\n        }\n      },\n      onFocus() {\n        if (open && !virtual) {\n          onNavigate(null);\n        }\n      },\n      onPointerDown: checkVirtualPointer,\n      onMouseDown: checkVirtualMouse,\n      onClick: checkVirtualMouse\n    };\n  }, [activeId, ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n  var _componentRoleToAriaR;\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    floatingId\n  } = context;\n  const {\n    enabled = true,\n    role = 'dialog'\n  } = props;\n  const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n  const referenceId = useId();\n  const parentId = useFloatingParentNodeId();\n  const isNested = parentId != null;\n  const reference = React.useMemo(() => {\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return {\n        [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n      };\n    }\n    return {\n      'aria-expanded': open ? 'true' : 'false',\n      'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n      'aria-controls': open ? floatingId : undefined,\n      ...(ariaRole === 'listbox' && {\n        role: 'combobox'\n      }),\n      ...(ariaRole === 'menu' && {\n        id: referenceId\n      }),\n      ...(ariaRole === 'menu' && isNested && {\n        role: 'menuitem'\n      }),\n      ...(role === 'select' && {\n        'aria-autocomplete': 'none'\n      }),\n      ...(role === 'combobox' && {\n        'aria-autocomplete': 'list'\n      })\n    };\n  }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n  const floating = React.useMemo(() => {\n    const floatingProps = {\n      id: floatingId,\n      ...(ariaRole && {\n        role: ariaRole\n      })\n    };\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return floatingProps;\n    }\n    return {\n      ...floatingProps,\n      ...(ariaRole === 'menu' && {\n        'aria-labelledby': referenceId\n      })\n    };\n  }, [ariaRole, floatingId, referenceId, role]);\n  const item = React.useCallback(_ref => {\n    let {\n      active,\n      selected\n    } = _ref;\n    const commonProps = {\n      role: 'option',\n      ...(active && {\n        id: floatingId + \"-option\"\n      })\n    };\n\n    // For `menu`, we are unable to tell if the item is a `menuitemradio`\n    // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n    // avoid defaulting to `menuitem` as it may overwrite custom role props.\n    switch (role) {\n      case 'select':\n        return {\n          ...commonProps,\n          'aria-selected': active && selected\n        };\n      case 'combobox':\n        {\n          return {\n            ...commonProps,\n            ...(active && {\n              'aria-selected': true\n            })\n          };\n        }\n    }\n    return {};\n  }, [floatingId, role]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n  return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n  const [isMounted, setIsMounted] = React.useState(open);\n  if (open && !isMounted) {\n    setIsMounted(true);\n  }\n  React.useEffect(() => {\n    if (!open && isMounted) {\n      const timeout = setTimeout(() => setIsMounted(false), durationMs);\n      return () => clearTimeout(timeout);\n    }\n  }, [open, isMounted, durationMs]);\n  return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements: {\n      floating\n    }\n  } = context;\n  const {\n    duration = 250\n  } = props;\n  const isNumberDuration = typeof duration === 'number';\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [status, setStatus] = React.useState('unmounted');\n  const isMounted = useDelayUnmount(open, closeDuration);\n  if (!isMounted && status === 'close') {\n    setStatus('unmounted');\n  }\n  index(() => {\n    if (!floating) return;\n    if (open) {\n      setStatus('initial');\n      const frame = requestAnimationFrame(() => {\n        setStatus('open');\n      });\n      return () => {\n        cancelAnimationFrame(frame);\n      };\n    }\n    setStatus('close');\n  }, [open, floating]);\n  return {\n    isMounted,\n    status\n  };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    initial: unstable_initial = {\n      opacity: 0\n    },\n    open: unstable_open,\n    close: unstable_close,\n    common: unstable_common,\n    duration = 250\n  } = props;\n  const placement = context.placement;\n  const side = placement.split('-')[0];\n  const fnArgs = React.useMemo(() => ({\n    side,\n    placement\n  }), [side, placement]);\n  const isNumberDuration = typeof duration === 'number';\n  const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [styles, setStyles] = React.useState(() => ({\n    ...execWithArgsOrReturn(unstable_common, fnArgs),\n    ...execWithArgsOrReturn(unstable_initial, fnArgs)\n  }));\n  const {\n    isMounted,\n    status\n  } = useTransitionStatus(context, {\n    duration\n  });\n  const initialRef = useLatestRef(unstable_initial);\n  const openRef = useLatestRef(unstable_open);\n  const closeRef = useLatestRef(unstable_close);\n  const commonRef = useLatestRef(unstable_common);\n  index(() => {\n    const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n    const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n    const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n    const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n      acc[key] = '';\n      return acc;\n    }, {});\n    if (status === 'initial') {\n      setStyles(styles => ({\n        transitionProperty: styles.transitionProperty,\n        ...commonStyles,\n        ...initialStyles\n      }));\n    }\n    if (status === 'open') {\n      setStyles({\n        transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: openDuration + \"ms\",\n        ...commonStyles,\n        ...openStyles\n      });\n    }\n    if (status === 'close') {\n      const styles = closeStyles || initialStyles;\n      setStyles({\n        transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: closeDuration + \"ms\",\n        ...commonStyles,\n        ...styles\n      });\n    }\n  }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n  return {\n    isMounted,\n    styles\n  };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n  var _ref;\n  const {\n    open,\n    dataRef\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onMatch: unstable_onMatch,\n    onTypingChange: unstable_onTypingChange,\n    enabled = true,\n    findMatch = null,\n    resetMs = 750,\n    ignoreKeys = [],\n    selectedIndex = null\n  } = props;\n  const timeoutIdRef = React.useRef();\n  const stringRef = React.useRef('');\n  const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n  const matchIndexRef = React.useRef(null);\n  const onMatch = useEffectEvent(unstable_onMatch);\n  const onTypingChange = useEffectEvent(unstable_onTypingChange);\n  const findMatchRef = useLatestRef(findMatch);\n  const ignoreKeysRef = useLatestRef(ignoreKeys);\n  index(() => {\n    if (open) {\n      clearTimeout(timeoutIdRef.current);\n      matchIndexRef.current = null;\n      stringRef.current = '';\n    }\n  }, [open]);\n  index(() => {\n    // Sync arrow key navigation but not typeahead navigation.\n    if (open && stringRef.current === '') {\n      var _ref2;\n      prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n    }\n  }, [open, selectedIndex, activeIndex]);\n  const setTypingChange = useEffectEvent(value => {\n    if (value) {\n      if (!dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    } else {\n      if (dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    }\n  });\n  const onKeyDown = useEffectEvent(event => {\n    function getMatchingIndex(list, orderedList, string) {\n      const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n      return str ? list.indexOf(str) : -1;\n    }\n    const listContent = listRef.current;\n    if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n      if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n        setTypingChange(false);\n      } else if (event.key === ' ') {\n        stopEvent(event);\n      }\n    }\n    if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n    // Character key.\n    event.key.length !== 1 ||\n    // Modifier key.\n    event.ctrlKey || event.metaKey || event.altKey) {\n      return;\n    }\n    if (open && event.key !== ' ') {\n      stopEvent(event);\n      setTypingChange(true);\n    }\n\n    // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n    // allow it in this case, too.\n    const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n      var _text$, _text$2;\n      return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n    });\n\n    // Allows the user to cycle through items that start with the same letter\n    // in rapid succession.\n    if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n    }\n    stringRef.current += event.key;\n    clearTimeout(timeoutIdRef.current);\n    timeoutIdRef.current = setTimeout(() => {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n      setTypingChange(false);\n    }, resetMs);\n    const prevIndex = prevIndexRef.current;\n    const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n    if (index !== -1) {\n      onMatch(index);\n      matchIndexRef.current = index;\n    } else if (event.key !== ' ') {\n      stringRef.current = '';\n      setTypingChange(false);\n    }\n  });\n  const reference = React.useMemo(() => ({\n    onKeyDown\n  }), [onKeyDown]);\n  const floating = React.useMemo(() => {\n    return {\n      onKeyDown,\n      onKeyUp(event) {\n        if (event.key === ' ') {\n          setTypingChange(false);\n        }\n      }\n    };\n  }, [onKeyDown, setTypingChange]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n  return {\n    ...state,\n    rects: {\n      ...state.rects,\n      floating: {\n        ...state.rects.floating,\n        height\n      }\n    }\n  };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n  name: 'inner',\n  options: props,\n  async fn(state) {\n    const {\n      listRef,\n      overflowRef,\n      onFallbackChange,\n      offset: innerOffset = 0,\n      index = 0,\n      minItemsVisible = 4,\n      referenceOverflowThreshold = 0,\n      scrollRef,\n      ...detectOverflowOptions\n    } = evaluate(props, state);\n    const {\n      rects,\n      elements: {\n        floating\n      }\n    } = state;\n    const item = listRef.current[index];\n    const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n    // Valid combinations:\n    // 1. Floating element is the scrollRef and has a border (default)\n    // 2. Floating element is not the scrollRef, floating element has a border\n    // 3. Floating element is not the scrollRef, scrollRef has a border\n    // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n    // allowed as VoiceOver doesn't work.\n    const clientTop = floating.clientTop || scrollEl.clientTop;\n    const floatingIsBordered = floating.clientTop !== 0;\n    const scrollElIsBordered = scrollEl.clientTop !== 0;\n    const floatingIsScrollEl = floating === scrollEl;\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!state.placement.startsWith('bottom')) {\n        warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n      }\n    }\n    if (!item) {\n      return {};\n    }\n    const nextArgs = {\n      ...state,\n      ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n    };\n    const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    const refOverflow = await detectOverflow(nextArgs, {\n      ...detectOverflowOptions,\n      elementContext: 'reference'\n    });\n    const diffY = max(0, overflow.top);\n    const nextY = nextArgs.y + diffY;\n    const maxHeight = round(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n    scrollEl.style.maxHeight = maxHeight + \"px\";\n    scrollEl.scrollTop = diffY;\n\n    // There is not enough space, fallback to standard anchored positioning\n    if (onFallbackChange) {\n      const shouldFallback = scrollEl.scrollHeight > scrollEl.offsetHeight && scrollEl.offsetHeight < item.offsetHeight * minItemsVisible - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n      ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n    }\n    if (overflowRef) {\n      overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n        ...nextArgs,\n        y: nextY\n      }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    }\n    return {\n      y: nextY\n    };\n  }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n  const {\n    open,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    overflowRef,\n    scrollRef,\n    onChange: unstable_onChange\n  } = props;\n  const onChange = useEffectEvent(unstable_onChange);\n  const controlledScrollingRef = React.useRef(false);\n  const prevScrollTopRef = React.useRef(null);\n  const initialOverflowRef = React.useRef(null);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onWheel(e) {\n      if (e.ctrlKey || !el || overflowRef.current == null) {\n        return;\n      }\n      const dY = e.deltaY;\n      const isAtTop = overflowRef.current.top >= -0.5;\n      const isAtBottom = overflowRef.current.bottom >= -0.5;\n      const remainingScroll = el.scrollHeight - el.clientHeight;\n      const sign = dY < 0 ? -1 : 1;\n      const method = dY < 0 ? 'max' : 'min';\n      if (el.scrollHeight <= el.clientHeight) {\n        return;\n      }\n      if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n        e.preventDefault();\n        ReactDOM.flushSync(() => {\n          onChange(d => d + Math[method](dY, remainingScroll * sign));\n        });\n      } else if (/firefox/i.test(getUserAgent())) {\n        // Needed to propagate scrolling during momentum scrolling phase once\n        // it gets limited by the boundary. UX improvement, not critical.\n        el.scrollTop += dY;\n      }\n    }\n    const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n    if (open && el) {\n      el.addEventListener('wheel', onWheel);\n\n      // Wait for the position to be ready.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n        if (overflowRef.current != null) {\n          initialOverflowRef.current = {\n            ...overflowRef.current\n          };\n        }\n      });\n      return () => {\n        prevScrollTopRef.current = null;\n        initialOverflowRef.current = null;\n        el.removeEventListener('wheel', onWheel);\n      };\n    }\n  }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n  const floating = React.useMemo(() => ({\n    onKeyDown() {\n      controlledScrollingRef.current = true;\n    },\n    onWheel() {\n      controlledScrollingRef.current = false;\n    },\n    onPointerMove() {\n      controlledScrollingRef.current = false;\n    },\n    onScroll() {\n      const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n      if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n        return;\n      }\n      if (prevScrollTopRef.current !== null) {\n        const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n        if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n          ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n        }\n      }\n\n      // [Firefox] Wait for the height change to have been applied.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n      });\n    }\n  }), [elements.floating, onChange, overflowRef, scrollRef]);\n  return React.useMemo(() => enabled ? {\n    floating\n  } : {}, [enabled, floating]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n  const [x, y] = point;\n  let isInside = false;\n  const length = polygon.length;\n  for (let i = 0, j = length - 1; i < length; j = i++) {\n    const [xi, yi] = polygon[i] || [0, 0];\n    const [xj, yj] = polygon[j] || [0, 0];\n    const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) {\n      isInside = !isInside;\n    }\n  }\n  return isInside;\n}\nfunction isInside(point, rect) {\n  return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    buffer = 0.5,\n    blockPointerEvents = false,\n    requireIntent = true\n  } = options;\n  let timeoutId;\n  let hasLanded = false;\n  let lastX = null;\n  let lastY = null;\n  let lastCursorTime = performance.now();\n  function getCursorSpeed(x, y) {\n    const currentTime = performance.now();\n    const elapsedTime = currentTime - lastCursorTime;\n    if (lastX === null || lastY === null || elapsedTime === 0) {\n      lastX = x;\n      lastY = y;\n      lastCursorTime = currentTime;\n      return null;\n    }\n    const deltaX = x - lastX;\n    const deltaY = y - lastY;\n    const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n    const speed = distance / elapsedTime; // px / ms\n\n    lastX = x;\n    lastY = y;\n    lastCursorTime = currentTime;\n    return speed;\n  }\n  const fn = _ref => {\n    let {\n      x,\n      y,\n      placement,\n      elements,\n      onClose,\n      nodeId,\n      tree\n    } = _ref;\n    return function onMouseMove(event) {\n      function close() {\n        clearTimeout(timeoutId);\n        onClose();\n      }\n      clearTimeout(timeoutId);\n      if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n        return;\n      }\n      const {\n        clientX,\n        clientY\n      } = event;\n      const clientPoint = [clientX, clientY];\n      const target = getTarget(event);\n      const isLeave = event.type === 'mouseleave';\n      const isOverFloatingEl = contains(elements.floating, target);\n      const isOverReferenceEl = contains(elements.domReference, target);\n      const refRect = elements.domReference.getBoundingClientRect();\n      const rect = elements.floating.getBoundingClientRect();\n      const side = placement.split('-')[0];\n      const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n      const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n      const isOverReferenceRect = isInside(clientPoint, refRect);\n      const isFloatingWider = rect.width > refRect.width;\n      const isFloatingTaller = rect.height > refRect.height;\n      const left = (isFloatingWider ? refRect : rect).left;\n      const right = (isFloatingWider ? refRect : rect).right;\n      const top = (isFloatingTaller ? refRect : rect).top;\n      const bottom = (isFloatingTaller ? refRect : rect).bottom;\n      if (isOverFloatingEl) {\n        hasLanded = true;\n        if (!isLeave) {\n          return;\n        }\n      }\n      if (isOverReferenceEl) {\n        hasLanded = false;\n      }\n      if (isOverReferenceEl && !isLeave) {\n        hasLanded = true;\n        return;\n      }\n\n      // Prevent overlapping floating element from being stuck in an open-close\n      // loop: https://github.com/floating-ui/floating-ui/issues/1910\n      if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n        return;\n      }\n\n      // If any nested child is open, abort.\n      if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n        let {\n          context\n        } = _ref2;\n        return context == null ? void 0 : context.open;\n      })) {\n        return;\n      }\n\n      // If the pointer is leaving from the opposite side, the \"buffer\" logic\n      // creates a point where the floating element remains open, but should be\n      // ignored.\n      // A constant of 1 handles floating point rounding errors.\n      if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n        return close();\n      }\n\n      // Ignore when the cursor is within the rectangular trough between the\n      // two elements. Since the triangle is created from the cursor point,\n      // which can start beyond the ref element's edge, traversing back and\n      // forth from the ref to the floating element can cause it to close. This\n      // ensures it always remains open in that case.\n      let rectPoly = [];\n      switch (side) {\n        case 'top':\n          rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n          break;\n        case 'bottom':\n          rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n          break;\n        case 'left':\n          rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n          break;\n        case 'right':\n          rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n          break;\n      }\n      function getPolygon(_ref3) {\n        let [x, y] = _ref3;\n        switch (side) {\n          case 'top':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'bottom':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'left':\n            {\n              const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n              return [...commonPoints, cursorPointOne, cursorPointTwo];\n            }\n          case 'right':\n            {\n              const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n        }\n      }\n      if (isPointInPolygon([clientX, clientY], rectPoly)) {\n        return;\n      }\n      if (hasLanded && !isOverReferenceRect) {\n        return close();\n      }\n      if (!isLeave && requireIntent) {\n        const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n        const cursorSpeedThreshold = 0.1;\n        if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n          return close();\n        }\n      }\n      if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n        close();\n      } else if (!hasLanded && requireIntent) {\n        timeoutId = window.setTimeout(close, 40);\n      }\n    };\n  };\n  fn.__options = {\n    blockPointerEvents\n  };\n  return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n  let activeElement = doc.activeElement;\n  while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n    var _activeElement;\n    activeElement = activeElement.shadowRoot.activeElement;\n  }\n  return activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n  const uaData = navigator.userAgentData;\n  if (uaData != null && uaData.platform) {\n    return uaData.platform;\n  }\n  return navigator.platform;\n}\nfunction getUserAgent() {\n  const uaData = navigator.userAgentData;\n  if (uaData && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(_ref => {\n      let {\n        brand,\n        version\n      } = _ref;\n      return brand + \"/\" + version;\n    }).join(' ');\n  }\n  return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n  // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n  // Try to find a workaround for this. `react-aria` source still has the check.\n  if (event.mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n  if (isAndroid() && event.pointerType) {\n    return event.type === 'click' && event.buttons === 1;\n  }\n  return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n  if (isJSDOM()) return false;\n  return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n  // iOS VoiceOver returns 0.333• for width/height.\n  event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n  // Chrome DevTools does not complain about navigator.vendor\n  return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n  const re = /android/i;\n  return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n  return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n  return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n  // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n  // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n  const values = ['mouse', 'pen'];\n  if (!strict) {\n    values.push('', undefined);\n  }\n  return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n  return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n  return element.matches('html,body');\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n  if (node == null) {\n    return false;\n  }\n  if ('composedPath' in event) {\n    return event.composedPath().includes(node);\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n  const e = event;\n  return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n  return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n  if (!element) return false;\n  return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","var t=function(t,a,n){return void 0===a&&(a=0),void 0===n&&(n=1),t>n?n:t>a?t:a},a=function(t){var a=t/255;return a<.04045?a/12.92:Math.pow((a+.055)/1.055,2.4)},n=function(t){return 255*(t>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t)},r=96.422,o=100,u=82.521,e=function(a){var r,o,u={x:.9555766*(r=a).x+-.0230393*r.y+.0631636*r.z,y:-.0282895*r.x+1.0099416*r.y+.0210077*r.z,z:.0122982*r.x+-.020483*r.y+1.3299098*r.z};return o={r:n(.032404542*u.x-.015371385*u.y-.004985314*u.z),g:n(-.00969266*u.x+.018760108*u.y+41556e-8*u.z),b:n(556434e-9*u.x-.002040259*u.y+.010572252*u.z),a:a.a},{r:t(o.r,0,255),g:t(o.g,0,255),b:t(o.b,0,255),a:t(o.a)}},i=function(n){var e=a(n.r),i=a(n.g),p=a(n.b);return function(a){return{x:t(a.x,0,r),y:t(a.y,0,o),z:t(a.z,0,u),a:t(a.a)}}(function(t){return{x:1.0478112*t.x+.0228866*t.y+-.050127*t.z,y:.0295424*t.x+.9904844*t.y+-.0170491*t.z,z:-.0092345*t.x+.0150436*t.y+.7521316*t.z,a:t.a}}({x:100*(.4124564*e+.3575761*i+.1804375*p),y:100*(.2126729*e+.7151522*i+.072175*p),z:100*(.0193339*e+.119192*i+.9503041*p),a:n.a}))},p=216/24389,h=24389/27,f=function(t){var a=i(t),n=a.x/r,e=a.y/o,f=a.z/u;return n=n>p?Math.cbrt(n):(h*n+16)/116,{l:116*(e=e>p?Math.cbrt(e):(h*e+16)/116)-16,a:500*(n-e),b:200*(e-(f=f>p?Math.cbrt(f):(h*f+16)/116)),alpha:a.a}},c=function(a,n,i){var c,y=f(a),x=f(n);return function(t){var a=(t.l+16)/116,n=t.a/500+a,i=a-t.b/200;return e({x:(Math.pow(n,3)>p?Math.pow(n,3):(116*n-16)/h)*r,y:(t.l>8?Math.pow((t.l+16)/116,3):t.l/h)*o,z:(Math.pow(i,3)>p?Math.pow(i,3):(116*i-16)/h)*u,a:t.alpha})}({l:t((c={l:y.l*(1-i)+x.l*i,a:y.a*(1-i)+x.a*i,b:y.b*(1-i)+x.b*i,alpha:y.alpha*(1-i)+x.alpha*i}).l,0,400),a:c.a,b:c.b,alpha:t(c.alpha)})};export default function(t){function a(t,a,n){void 0===n&&(n=5);for(var r=[],o=1/(n-1),u=0;u<=n-1;u++)r.push(t.mix(a,o*u));return r}t.prototype.mix=function(a,n){void 0===n&&(n=.5);var r=a instanceof t?a:new t(a),o=c(this.toRgb(),r.toRgb(),n);return new t(o)},t.prototype.tints=function(t){return a(this,\"#fff\",t)},t.prototype.shades=function(t){return a(this,\"#000\",t)},t.prototype.tones=function(t){return a(this,\"#808080\",t)}}\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d=\"transparent\"===r?\"#0000\":a[r];return d?new e(d).toRgb():null},\"name\"])}\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","export default x => () => x;\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import * as React from 'react'\nimport { Menu as _Menu, type MenuProps } from '@mui/material'\nimport { interopRequireDefault } from './util/interopRequireDefault'\n// work around https://github.com/vercel/next.js/issues/57285\nconst Menu = interopRequireDefault(_Menu)\n\nconst HoverMenu: React.ComponentType<MenuProps> = React.forwardRef(\n  function HoverMenu(props: MenuProps, ref): any {\n    const paperSlotProps = React.useMemo(() => {\n      const wrapped = props.slotProps?.paper\n      if (wrapped instanceof Function) {\n        // eslint-disable-next-line @typescript-eslint/ban-types\n        return (ownerProps: {}) => {\n          const base = wrapped(ownerProps)\n          return {\n            ...base,\n            style: {\n              pointerEvents: 'auto',\n              ...base?.style,\n            },\n          } as const\n        }\n      }\n      return {\n        ...wrapped,\n        style: { pointerEvents: 'auto', ...wrapped?.style },\n      } as const\n    }, [props.slotProps?.paper])\n\n    return (\n      <Menu\n        {...props}\n        ref={ref}\n        style={{ pointerEvents: 'none', ...props.style }}\n        PaperProps={{\n          ...props.PaperProps,\n          style: {\n            pointerEvents: 'auto',\n            ...props.PaperProps?.style,\n          },\n        }}\n        slotProps={{\n          ...props.slotProps,\n          paper: paperSlotProps,\n        }}\n      />\n    )\n  }\n)\n\nexport default HoverMenu\n","export function interopRequireDefault<T>(defaultImport: T): T {\n  const asAny: any = defaultImport\n  // istanbul ignore next\n  return asAny.__esModule ? asAny.default : defaultImport\n}\n","import * as React from 'react'\n\nexport function useEvent<Fn extends (...args: any[]) => any>(handler: Fn): Fn {\n  // istanbul ignore next\n  if (typeof window === 'undefined') {\n    // useLayoutEffect doesn't work on the server side, don't bother\n    // trying to make callback functions stable\n    return handler\n  }\n\n  const handlerRef = React.useRef<Fn | null>(null)\n\n  React.useLayoutEffect(() => {\n    handlerRef.current = handler\n  })\n\n  return React.useCallback((...args: any[]): any => {\n    handlerRef.current?.(...args)\n  }, []) as Fn\n}\n","/* eslint-env browser */\n\nimport {\n  type SyntheticEvent,\n  type MouseEvent,\n  type TouchEvent,\n  type FocusEvent,\n  useCallback,\n  useState,\n  useRef,\n  useEffect,\n} from 'react'\nimport * as React from 'react'\nimport { type PopoverPosition, type PopoverReference } from '@mui/material'\nimport { useEvent } from './useEvent'\n\nconst printedWarnings: Record<string, boolean> = {}\n\nfunction warn(key: string, message: string) {\n  if (printedWarnings[key]) return\n  printedWarnings[key] = true\n  console.error('[material-ui-popup-state] WARNING', message) // eslint-disable-line no-console\n}\n\nexport type Variant = 'popover' | 'popper' | 'dialog'\n\nexport type PopupState = {\n  open: (eventOrAnchorEl?: SyntheticEvent | Element | null) => void\n  close: (eventOrAnchorEl?: SyntheticEvent | Element | null) => void\n  toggle: (eventOrAnchorEl?: SyntheticEvent | Element | null) => void\n  onBlur: (event: FocusEvent) => void\n  onMouseLeave: (event: MouseEvent) => void\n  setOpen: (\n    open: boolean,\n    eventOrAnchorEl?: SyntheticEvent | Element | null\n  ) => void\n  isOpen: boolean\n  anchorEl: Element | undefined\n  anchorPosition: PopoverPosition | undefined\n  setAnchorEl: (anchorEl: Element | null | undefined) => any\n  setAnchorElUsed: boolean\n  disableAutoFocus: boolean\n  popupId: string | undefined\n  variant: Variant\n  _openEventType: string | null | undefined\n  _childPopupState: PopupState | null | undefined\n  _setChildPopupState: (popupState: PopupState | null | undefined) => void\n}\n\nexport type CoreState = {\n  isOpen: boolean\n  setAnchorElUsed: boolean\n  anchorEl: Element | undefined\n  anchorPosition: PopoverPosition | undefined\n  hovered: boolean\n  focused: boolean\n  _openEventType: string | null | undefined\n  _childPopupState: PopupState | null | undefined\n  _deferNextOpen: boolean\n  _deferNextClose: boolean\n}\n\nexport const initCoreState: CoreState = {\n  isOpen: false,\n  setAnchorElUsed: false,\n  anchorEl: undefined,\n  anchorPosition: undefined,\n  hovered: false,\n  focused: false,\n  _openEventType: null,\n  _childPopupState: null,\n  _deferNextOpen: false,\n  _deferNextClose: false,\n}\n\n// https://github.com/jcoreio/material-ui-popup-state/issues/138\n// Webpack prod build doesn't like it if we refer to React.useId conditionally,\n// but aliasing to a variable like this works\nconst _react = React\nconst defaultPopupId =\n  'useId' in _react\n    ? () => _react.useId()\n    : // istanbul ignore next\n      () => undefined\n\nexport function usePopupState({\n  parentPopupState,\n  popupId = defaultPopupId(),\n  variant,\n  disableAutoFocus,\n}: {\n  parentPopupState?: PopupState | null | undefined\n  popupId?: string | null\n  variant: Variant\n  disableAutoFocus?: boolean | null | undefined\n}): PopupState {\n  const isMounted = useRef(true)\n\n  useEffect((): (() => void) => {\n    isMounted.current = true\n    return () => {\n      isMounted.current = false\n    }\n  }, [])\n\n  const [state, _setState] = useState(initCoreState)\n\n  const setState = useCallback(\n    (state: CoreState | ((prevState: CoreState) => CoreState)) => {\n      if (isMounted.current) _setState(state)\n    },\n    []\n  )\n\n  const setAnchorEl = useCallback(\n    (anchorEl: Element | null | undefined) =>\n      setState((state) => ({\n        ...state,\n        setAnchorElUsed: true,\n        anchorEl: anchorEl ?? undefined,\n      })),\n    []\n  )\n\n  const toggle = useEvent(\n    (eventOrAnchorEl?: SyntheticEvent | Element | null) => {\n      if (state.isOpen) close(eventOrAnchorEl)\n      else open(eventOrAnchorEl)\n      return state\n    }\n  )\n\n  const open = useEvent((eventOrAnchorEl?: SyntheticEvent | Element | null) => {\n    const event =\n      eventOrAnchorEl instanceof Element ? undefined : eventOrAnchorEl\n    const element =\n      eventOrAnchorEl instanceof Element\n        ? eventOrAnchorEl\n        : eventOrAnchorEl?.currentTarget instanceof Element\n        ? eventOrAnchorEl.currentTarget\n        : undefined\n\n    if (event?.type === 'touchstart') {\n      setState((state) => ({ ...state, _deferNextOpen: true }))\n      return\n    }\n\n    const clientX = (event as MouseEvent | undefined)?.clientX\n    const clientY = (event as MouseEvent | undefined)?.clientY\n    const anchorPosition =\n      typeof clientX === 'number' && typeof clientY === 'number'\n        ? { left: clientX, top: clientY }\n        : undefined\n\n    const doOpen = (state: CoreState): CoreState => {\n      if (!eventOrAnchorEl && !state.setAnchorElUsed && variant !== 'dialog') {\n        warn(\n          'missingEventOrAnchorEl',\n          'eventOrAnchorEl should be defined if setAnchorEl is not used'\n        )\n      }\n\n      if (parentPopupState) {\n        if (!parentPopupState.isOpen) return state\n        setTimeout(() => parentPopupState._setChildPopupState(popupState))\n      }\n\n      const newState: CoreState = {\n        ...state,\n        isOpen: true,\n        anchorPosition,\n        hovered: event?.type === 'mouseover' || state.hovered,\n        focused: event?.type === 'focus' || state.focused,\n        _openEventType: event?.type,\n      }\n\n      if (!state.setAnchorElUsed) {\n        if (event?.currentTarget) {\n          newState.anchorEl = event?.currentTarget as any\n        } else if (element) {\n          newState.anchorEl = element\n        }\n      }\n\n      return newState\n    }\n\n    setState((state: CoreState): CoreState => {\n      if (state._deferNextOpen) {\n        setTimeout(() => setState(doOpen), 0)\n        return { ...state, _deferNextOpen: false }\n      } else {\n        return doOpen(state)\n      }\n    })\n  })\n\n  const doClose = (state: CoreState): CoreState => {\n    const { _childPopupState } = state\n    setTimeout(() => {\n      _childPopupState?.close()\n      parentPopupState?._setChildPopupState(null)\n    })\n    return { ...state, isOpen: false, hovered: false, focused: false }\n  }\n\n  const close = useEvent(\n    (eventOrAnchorEl?: SyntheticEvent | Element | null) => {\n      const event =\n        eventOrAnchorEl instanceof Element ? undefined : eventOrAnchorEl\n\n      if (event?.type === 'touchstart') {\n        setState((state) => ({ ...state, _deferNextClose: true }))\n        return\n      }\n\n      setState((state: CoreState): CoreState => {\n        if (state._deferNextClose) {\n          setTimeout(() => setState(doClose), 0)\n          return { ...state, _deferNextClose: false }\n        } else {\n          return doClose(state)\n        }\n      })\n    }\n  )\n\n  const setOpen = useCallback(\n    (\n      nextOpen: boolean,\n      eventOrAnchorEl?: SyntheticEvent<any> | Element | null\n    ) => {\n      if (nextOpen) {\n        open(eventOrAnchorEl)\n      } else {\n        close(eventOrAnchorEl)\n      }\n    },\n    []\n  )\n\n  const onMouseLeave = useEvent((event: MouseEvent) => {\n    const { relatedTarget } = event\n    setState((state: CoreState): CoreState => {\n      if (\n        state.hovered &&\n        !(\n          relatedTarget instanceof Element &&\n          isElementInPopup(relatedTarget, popupState)\n        )\n      ) {\n        if (state.focused) {\n          return { ...state, hovered: false }\n        } else {\n          return doClose(state)\n        }\n      }\n      return state\n    })\n  })\n\n  const onBlur = useEvent((event: FocusEvent) => {\n    if (!event) return\n    const { relatedTarget } = event\n    setState((state: CoreState): CoreState => {\n      if (\n        state.focused &&\n        !(\n          relatedTarget instanceof Element &&\n          isElementInPopup(relatedTarget, popupState)\n        )\n      ) {\n        if (state.hovered) {\n          return { ...state, focused: false }\n        } else {\n          return doClose(state)\n        }\n      }\n      return state\n    })\n  })\n\n  const _setChildPopupState = useCallback(\n    (_childPopupState: PopupState | null | undefined) =>\n      setState((state) => ({ ...state, _childPopupState })),\n    []\n  )\n\n  const popupState: PopupState = {\n    ...state,\n    setAnchorEl,\n    popupId: popupId ?? undefined,\n    variant,\n    open,\n    close,\n    toggle,\n    setOpen,\n    onBlur,\n    onMouseLeave,\n    disableAutoFocus:\n      disableAutoFocus ?? Boolean(state.hovered || state.focused),\n    _setChildPopupState,\n  }\n\n  return popupState\n}\n\n/**\n * Creates a ref that sets the anchorEl for the popup.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function anchorRef({\n  setAnchorEl,\n}: PopupState): (el: Element | null | null | undefined) => any {\n  return setAnchorEl\n}\n\ntype ControlAriaProps = {\n  'aria-controls'?: string\n  'aria-describedby'?: string\n  'aria-haspopup'?: true\n}\n\nfunction controlAriaProps({\n  isOpen,\n  popupId,\n  variant,\n}: PopupState): ControlAriaProps {\n  return {\n    ...(variant === 'popover'\n      ? {\n          'aria-haspopup': true,\n          'aria-controls': isOpen ? popupId : undefined,\n        }\n      : variant === 'popper'\n      ? { 'aria-describedby': isOpen ? popupId : undefined }\n      : undefined),\n  }\n}\n\n/**\n * Creates props for a component that opens the popup when clicked.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindTrigger(popupState: PopupState): ControlAriaProps & {\n  onClick: (event: MouseEvent) => void\n  onTouchStart: (event: TouchEvent) => void\n} {\n  return {\n    ...controlAriaProps(popupState),\n    onClick: popupState.open,\n    onTouchStart: popupState.open,\n  }\n}\n\n/**\n * Creates props for a component that opens the popup on its contextmenu event (right click).\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindContextMenu(popupState: PopupState): ControlAriaProps & {\n  onContextMenu: (event: MouseEvent) => void\n} {\n  return {\n    ...controlAriaProps(popupState),\n    onContextMenu: (e: MouseEvent) => {\n      e.preventDefault()\n      popupState.open(e)\n    },\n  }\n}\n\n/**\n * Creates props for a component that toggles the popup when clicked.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindToggle(popupState: PopupState): ControlAriaProps & {\n  onClick: (event: MouseEvent) => void\n  onTouchStart: (event: TouchEvent) => void\n} {\n  return {\n    ...controlAriaProps(popupState),\n    onClick: popupState.toggle,\n    onTouchStart: popupState.toggle,\n  }\n}\n\n/**\n * Creates props for a component that opens the popup while hovered.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindHover(popupState: PopupState): ControlAriaProps & {\n  onTouchStart: (event: TouchEvent) => any\n  onMouseOver: (event: MouseEvent) => any\n  onMouseLeave: (event: MouseEvent) => any\n} {\n  const { open, onMouseLeave } = popupState\n  return {\n    ...controlAriaProps(popupState),\n    onTouchStart: open,\n    onMouseOver: open,\n    onMouseLeave,\n  }\n}\n\n/**\n * Creates props for a component that opens the popup while focused.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindFocus(popupState: PopupState): ControlAriaProps & {\n  onFocus: (event: FocusEvent) => any\n  onBlur: (event: FocusEvent) => any\n} {\n  const { open, onBlur } = popupState\n  return {\n    ...controlAriaProps(popupState),\n    onFocus: open,\n    onBlur,\n  }\n}\n\n/**\n * Creates props for a component that opens the popup while double click.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindDoubleClick({\n  isOpen,\n  open,\n  popupId,\n  variant,\n}: PopupState): {\n  'aria-controls'?: string\n  'aria-describedby'?: string\n  'aria-haspopup'?: true\n  onDoubleClick: (event: MouseEvent) => any\n} {\n  return {\n    // $FlowFixMe\n    [variant === 'popover' ? 'aria-controls' : 'aria-describedby']: isOpen\n      ? popupId\n      : null,\n    'aria-haspopup': variant === 'popover' ? true : undefined,\n    onDoubleClick: open,\n  }\n}\n\n/**\n * Creates props for a `Popover` component.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindPopover({\n  isOpen,\n  anchorEl,\n  anchorPosition,\n  close,\n  popupId,\n  onMouseLeave,\n  disableAutoFocus,\n  _openEventType,\n}: PopupState): {\n  id?: string\n  anchorEl?: Element | null\n  anchorPosition?: PopoverPosition\n  anchorReference: PopoverReference\n  open: boolean\n  onClose: () => void\n  onMouseLeave: (event: MouseEvent) => void\n  disableAutoFocus?: boolean\n  disableEnforceFocus?: boolean\n  disableRestoreFocus?: boolean\n} {\n  const usePopoverPosition = _openEventType === 'contextmenu'\n  return {\n    id: popupId,\n    anchorEl,\n    anchorPosition,\n    anchorReference: usePopoverPosition ? 'anchorPosition' : 'anchorEl',\n    open: isOpen,\n    onClose: close,\n    onMouseLeave,\n    ...(disableAutoFocus && {\n      disableAutoFocus: true,\n      disableEnforceFocus: true,\n      disableRestoreFocus: true,\n    }),\n  }\n}\n\n/**\n * Creates props for a `Menu` component.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\n\n/**\n * Creates props for a `Popover` component.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindMenu({\n  isOpen,\n  anchorEl,\n  anchorPosition,\n  close,\n  popupId,\n  onMouseLeave,\n  disableAutoFocus,\n  _openEventType,\n}: PopupState): {\n  id?: string\n  anchorEl?: Element | null\n  anchorPosition?: PopoverPosition\n  anchorReference: PopoverReference\n  open: boolean\n  onClose: () => void\n  onMouseLeave: (event: MouseEvent) => void\n  autoFocus?: boolean\n  disableAutoFocusItem?: boolean\n  disableAutoFocus?: boolean\n  disableEnforceFocus?: boolean\n  disableRestoreFocus?: boolean\n} {\n  const usePopoverPosition = _openEventType === 'contextmenu'\n  return {\n    id: popupId,\n    anchorEl,\n    anchorPosition,\n    anchorReference: usePopoverPosition ? 'anchorPosition' : 'anchorEl',\n    open: isOpen,\n    onClose: close,\n    onMouseLeave,\n    ...(disableAutoFocus && {\n      autoFocus: false,\n      disableAutoFocusItem: true,\n      disableAutoFocus: true,\n      disableEnforceFocus: true,\n      disableRestoreFocus: true,\n    }),\n  }\n}\n/**\n * Creates props for a `Popper` component.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindPopper({\n  isOpen,\n  anchorEl,\n  popupId,\n  onMouseLeave,\n}: PopupState): {\n  id?: string\n  anchorEl?: Element | null\n  open: boolean\n  onMouseLeave: (event: MouseEvent) => void\n} {\n  return {\n    id: popupId,\n    anchorEl,\n    open: isOpen,\n    onMouseLeave,\n  }\n}\n\n/**\n * Creates props for a `Dialog` component.\n *\n * @param {object} popupState the argument passed to the child function of\n * `PopupState`\n */\nexport function bindDialog({ isOpen, close }: PopupState): {\n  open: boolean\n  onClose: (event: SyntheticEvent) => any\n} {\n  return {\n    open: isOpen,\n    onClose: close,\n  }\n}\n\nfunction getPopup(\n  element: Element,\n  { popupId }: PopupState\n): Element | null | undefined {\n  if (!popupId) return null\n  const rootNode: any =\n    typeof element.getRootNode === 'function' ? element.getRootNode() : document\n  if (typeof rootNode.getElementById === 'function') {\n    return rootNode.getElementById(popupId)\n  }\n  return null\n}\n\nfunction isElementInPopup(element: Element, popupState: PopupState): boolean {\n  const { anchorEl, _childPopupState } = popupState\n  return (\n    isAncestor(anchorEl, element) ||\n    isAncestor(getPopup(element, popupState), element) ||\n    (_childPopupState != null && isElementInPopup(element, _childPopupState))\n  )\n}\n\nfunction isAncestor(\n  parent: Element | null | undefined,\n  child: Element | null | undefined\n): boolean {\n  if (!parent) return false\n  while (child) {\n    if (child === parent) return true\n    child = child.parentElement\n  }\n  return false\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n"],"names":["CacheSemantics","constructor","minimumTTL","this","calculateChunkExpirationDate","chunkResponse","headers","requestDate","responseDate","baselineDate","date","Date","basePlus","ttl","getTime","test","pragma","cacheControl","field","parsed","toLowerCase","replace","match","fieldName","three","four","value","Object","keys","forEach","key","num","parseInt","Number","isNaN","e","parseCacheControl","undefined","Math","max","_coerceToDate","expires","lastModified","thing","cachedChunkIsValid","expiration","chunkIsCacheable","AggregatingFetcher","frequency","fetch","maxExtraSize","maxFetchSize","requestQueues","fetchCallback","_canAggregate","requestGroup","request","start","end","_allSignalsFired","signals","Promise","resolve","signalsLeft","filter","s","aborted","length","signal","addEventListener","catch","console","error","_dispatch","url","requests","abortWholeRequest","AbortController","requestOptions","push","then","abort","response","data","buffer","reqStart","reqEnd","slice","err","reject","_aggregateAndDispatch","entries","requestsToDispatch","assign","Error","code","sort","a","b","currentRequestGroup","next","_enQueue","timeout","setTimeout","async","crossFetchBinaryRange","options","fetchOptions","method","range","res","status","arrayBuffer","from","map","HttpRangeFetcher","size","chunkSize","aggregationTime","maxExtraFetch","aggregator","chunkCache","maxSize","floor","cacheSemantics","stats","getRange","position","requestedLength","stat","firstChunk","lastChunk","fetches","Array","chunk","_getChunk","chunkNumber","chunkResponses","all","r","allocUnsafe","chunksOffset","_makeHeaders","_makeBuffer","buffers","first","shift","last","pop","trimEnd","reduce","sum","buf","concat","get","_recordStatsIfNecessary","_headersToStats","mtime","toString","mtimeMs","originalHeaders","newStart","newEnd","newHeaders","chunkKey","cachedPromise","chunkAborted","exception","name","message","_uncacheIfSame","fetchStart","fetchEnd","alreadyRejected","freshPromise","set","freshChunk","has","delete","reset","clear","InfoFields","AA","Type","Description","AC","AD","ADF","ADR","AF","AN","BQ","CIGAR","DB","DP","END","H2","H3","MQ","MQ0","NS","SB","SOMATIC","VALIDATED","IMPRECISE","NOVEL","SVTYPE","SVLEN","CIPOS","CIEND","HOMLEN","HOMSEQ","BKPTID","MEINFO","METRANS","DGVID","DBVARID","DBRIPID","MATEID","PARID","EVENT","CILEN","DPADJ","CN","CNADJ","CICN","CICNADJ","GenotypeFields","EC","FT","GL","GP","GQ","GT","HQ","PL","PQ","PS","AltTypes","DEL","INS","DUP","INV","CNV","NON_REF","FilterTypes","PASS","Variant","stuff","parseBreakend","breakendString","tokens","split","MateDirection","includes","Join","Replacement","MatePosition","i","tok","startsWith","SingleBreakend","endsWith","header","strict","headerLines","line","lastLine","metadata","JSON","parse","stringify","INFO","vcfReserved","FORMAT","ALT","FILTER","_parseMetadata","fields","trim","thisHeader","correctHeader","every","index","samples","_parseGenotypes","format","prerest","rest","genotypes","formatKeys","sample","f","val","thisValue","ent","valueType","getMetadata","metaKey","metaVal","id","keyVals","_parseStructuredMetaVal","_parseKeyValue","ID","args","filteredMetadata","str","pairSeparator","currKey","currValue","state","parseLine","parser","currChar","currField","substr","CHROM","POS","REF","QUAL","chrom","pos","ref","alt","qual","info","items","uri","decodeURIComponent","decodeURIComponentNoThrow","itemType","warn","variant","defineProperty","configurable","d","cx","cy","createSvgIcon","AlertRoot","styled","Paper","slot","overridesResolver","props","styles","ownerState","root","capitalize","color","severity","memoTheme","theme","getColor","palette","mode","getBackgroundColor","typography","body2","backgroundColor","display","padding","variants","createSimplePaletteValueFilter","colorSeverity","style","vars","Alert","light","alertClasses","icon","main","border","fontWeight","fontWeightMedium","dark","getContrastText","AlertIcon","marginRight","fontSize","opacity","AlertMessage","minWidth","overflow","AlertAction","action","alignItems","marginLeft","defaultIconMapping","success","SuccessOutlined","warning","ReportProblemOutlined","ErrorOutline","InfoOutlined","inProps","children","className","closeText","components","componentsProps","iconMapping","onClose","role","slotProps","slots","other","classes","composeClasses","useUtilityClasses","externalForwardedProps","closeButton","CloseButton","closeIcon","CloseIcon","CloseButtonSlot","closeButtonProps","useSlot","elementType","IconButton","CloseIconSlot","closeIconProps","Close","elevation","clsx","title","onClick","getAlertUtilityClass","_ClearIcon","_ArrowDropDownIcon","AutocompleteRoot","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","tag","inputRoot","input","focused","clearIndicator","visibility","margin","maxWidth","paddingRight","width","paddingBottom","sizeSmall","endAdornment","right","paddingTop","paddingLeft","hiddenLabel","flexGrow","textOverflow","multiple","flexWrap","AutocompleteEndAdornment","top","transform","AutocompleteClearIndicator","AutocompletePopupIndicator","popupIndicator","popupOpen","popupIndicatorOpen","AutocompletePopper","option","popper","disablePortal","popperDisablePortal","zIndex","modal","AutocompletePaper","paper","body1","AutocompleteLoading","loading","text","secondary","AutocompleteNoOptions","noOptions","AutocompleteListbox","listbox","listStyle","maxHeight","minHeight","justifyContent","cursor","boxSizing","outline","WebkitTapHighlightColor","breakpoints","up","hover","disabledOpacity","pointerEvents","focusVisible","focus","primary","mainChannel","selectedOpacity","hoverOpacity","selected","focusOpacity","AutocompleteGroupLabel","groupLabel","background","AutocompleteGroupUl","groupUl","autoComplete","autoHighlight","autoSelect","blurOnSelect","ChipProps","ChipPropsProp","clearIcon","clearOnBlur","freeSolo","clearOnEscape","clearText","defaultValue","disableClearable","disableCloseOnSelect","disabled","disabledItemsFocusable","disableListWrap","filterOptions","filterSelectedOptions","forcePopupIcon","getLimitTagsText","more","getOptionDisabled","getOptionKey","getOptionLabel","getOptionLabelProp","isOptionEqualToValue","groupBy","handleHomeEndKeys","idProp","includeInputInList","inputValue","inputValueProp","limitTags","ListboxComponent","ListboxComponentProp","ListboxProps","ListboxPropsProp","loadingText","noOptionsText","onChange","onHighlightChange","onInputChange","onOpen","open","openOnFocus","openText","PaperComponent","PaperComponentProp","PopperComponent","PopperComponentProp","popupIcon","A","readOnly","renderGroup","renderGroupProp","renderInput","renderOption","renderOptionProp","renderTags","selectOnFocus","valueProp","getRootProps","getInputProps","getInputLabelProps","getPopupIndicatorProps","getClearProps","getTagProps","getListboxProps","getOptionProps","dirty","expanded","focusedTag","anchorEl","setAnchorEl","groupedOptions","componentName","onMouseDown","handleInputMouseDown","listboxRef","otherListboxProps","label","chip","ListboxSlot","listboxProps","additionalProps","PaperSlot","paperProps","PopperSlot","popperProps","clientWidth","startAdornment","getCustomizedTagProps","params","customTagProps","isArray","splice","component","group","props2","otherProps","renderListOption","optionProps","clearIndicatorSlotProps","popupIndicatorSlotProps","renderAutocompletePopperChildren","as","autocompletePopper","option2","index2","event","preventDefault","InputLabelProps","InputProps","target","currentTarget","inputProps","getAutocompleteUtilityClass","BackdropRoot","invisible","bottom","left","TransitionComponent","TransitionComponentProp","transitionDuration","transition","Root","RootSlot","rootProps","TransitionSlot","transitionProps","transitionPropsRemoved","removeOwnerState","in","getBackdropUtilityClass","defaultTheme","createTheme","Box","themeId","defaultClassName","generateClassName","BoxRoot","shouldForwardProp","prop","styleFunctionSx","useTheme","extendSxProp","createBox","boxClasses","ClassNameGenerator","generate","commonIconStyles","ButtonRoot","colorInherit","disableElevation","inheritContainedBackgroundColor","grey","inheritContainedHoverBackgroundColor","A100","button","borderRadius","shape","transitions","create","duration","short","textDecoration","boxShadow","shadows","disabledBackground","borderColor","contrastText","Button","inheritContainedBg","inheritContainedHoverBg","primaryChannel","pxToRem","ButtonStartIcon","startIcon","ButtonEndIcon","endIcon","contextProps","buttonGroupButtonContextPositionClassName","resolvedProps","disableFocusRipple","endIconProp","focusVisibleClassName","startIconProp","type","composedClasses","positionClassName","focusRipple","getButtonUtilityClass","LazyRipple","use","ripple","useLazyRef","current","shouldMount","setShouldMount","mountEffect","mounted","didMount","mount","p","resolveFn","rejectFn","createControlledPromise","stop","pulsate","getChildMapping","mapFn","result","Children","c","child","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","bind","exit","enter","values","obj","k","TransitionGroup","_React$Component","context","_this","handleExited","call","contextValue","isMounting","firstRender","_proto","prototype","componentDidMount","setState","componentWillUnmount","getDerivedStateFromProps","_ref","appear","node","currentChildMapping","render","_this$props","Component","childFactory","TransitionGroupContext","Provider","propTypes","defaultProps","generateUtilityClasses","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","rippleX","rippleY","rippleSize","inProp","leaving","setLeaving","rippleClassName","rippleVisible","ripplePulsate","rippleStyles","height","childClassName","childLeaving","childPulsate","timeoutId","clearTimeout","easing","easeInOut","shorter","center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","useTimeout","startTimerCommit","container","startCommit","cb","oldRipples","fakeElement","element","rect","getBoundingClientRect","clientX","clientY","touches","round","sqrt","sizeX","abs","sizeY","clientHeight","getButtonBaseUtilityClass","ButtonBaseRoot","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","colorAdjust","centerRipple","disableRipple","disableTouchRipple","LinkComponent","onBlur","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","buttonRef","handleRippleRef","useForkRef","setFocusVisible","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","useEventCallback","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","isFocusVisible","handleFocus","isNonNativeButton","tagName","href","handleKeyDown","repeat","handleKeyUp","defaultPrevented","ComponentProp","to","buttonProps","handleRef","CheckboxRoot","SwitchBase","rootShouldForwardProp","indeterminate","activeChannel","active","checkboxClasses","checked","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","getCheckboxUtilityClass","ChipRoot","iconColor","clickable","onDelete","chipClasses","avatar","deleteIcon","deletable","textColor","fontFamily","whiteSpace","Chip","defaultAvatarColor","avatarColorPrimary","avatarColorSecondary","avatarSmall","contrastTextChannel","defaultIconColor","selectedChannel","defaultBorder","iconSmall","deleteIconSmall","ChipLabel","isDeleteKeyboardEvent","keyboardEvent","avatarProp","clickableProp","deleteIconProp","skipFocusWhenDisabled","chipRef","handleDeleteIconClick","stopPropagation","ButtonBase","moreProps","Cancel","getChipUtilityClass","DialogBackdrop","overrides","backdrop","DialogRoot","DialogContainer","scroll","overflowY","overflowX","textAlign","content","DialogPaper","String","paperFullWidth","fullScreen","paperFullScreen","flexDirection","unit","xs","paperScrollBody","down","defaultTransitionDuration","enteringScreen","leavingScreen","ariaDescribedby","ariaLabelledbyProp","BackdropComponent","BackdropProps","disableEscapeKeyDown","onBackdropClick","PaperProps","TransitionProps","backdropClick","ariaLabelledby","dialogContextValue","titleId","closeAfterTransition","Backdrop","getDialogUtilityClass","DialogActionsRoot","disableSpacing","spacing","flex","getDialogActionsUtilityClass","DialogContentRoot","dividers","WebkitOverflowScrolling","borderTop","divider","borderBottom","getDialogContentUtilityClass","DialogContentTextRoot","getDialogContentTextUtilityClass","DialogTitleRoot","getDialogTitleUtilityClass","DividerRoot","absolute","orientation","vertical","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","flexShrink","borderWidth","borderBottomWidth","dividerChannel","marginTop","marginBottom","borderRightWidth","alignSelf","borderTopStyle","borderLeftStyle","borderLeft","DividerWrapper","wrapper","wrapperVertical","Divider","muiSkipListHighlight","getDividerUtilityClass","entering","entered","defaultTimeout","addEndListener","onEnter","onEntered","onEntering","onExit","onExiting","nodeRef","normalizedTransitionCallback","callback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","webkitTransition","handleEntered","handleExiting","handleExit","childProps","FilledInputRoot","disableUnderline","underline","bottomLineColor","hoverBackground","FilledInput","bg","borderTopLeftRadius","borderTopRightRadius","easeOut","hoverBg","disabledBg","borderBottomColor","common","onBackgroundChannel","inputUnderline","borderBottomStyle","multiline","FilledInputInput","WebkitBoxShadow","WebkitTextFillColor","caretColor","getColorSchemeSelector","componentsPropsProp","inputComponent","filledInputComponentsProps","InputSlot","Input","muiName","getFilledInputUtilityClass","FormControlRoot","visuallyFocused","required","adornedStart","setAdornedStart","initialAdornedStart","filled","setFilled","initialFilled","focusedState","setFocused","registerEffect","childContext","onEmpty","onFilled","getFormControlUtilityClasses","formControlState","states","muiFormControl","acc","useFormControl","FormControlLabelRoot","labelPlacement","AsteriskComponent","asterisk","control","disabledProp","disableTypography","inputRef","labelProp","requiredProp","controlProps","fcs","TypographySlot","typographySlotProps","getFormControlLabelUtilityClasses","FormGroupRoot","row","getFormGroupUtilityClass","_span","FormHelperTextRoot","contained","caption","getFormHelperTextUtilityClasses","FormLabelRoot","colorSecondary","lineHeight","getFormLabelUtilityClasses","extractZeroValueBreakpointKeys","nonZeroKey","sortedBreakpointKeysByValue","indexOf","GridRoot","direction","item","wrap","zeroMinWidth","spacingStyles","breakpoint","resolveSpacingStyles","breakpointsStyles","directionValues","propValue","output","gridClasses","rowSpacing","rowSpacingValues","zeroValueBreakpointKeys","themeSpacing","columnSpacing","columnSpacingValues","globalStyles","flexBasis","columnsBreakpointValues","columns","columnValue","Grid","themeProps","useThemeProps","columnsProp","columnSpacingProp","rowSpacingProp","columnsContext","breakpointsValues","otherFiltered","spacingClasses","resolveSpacingClasses","breakpointsClasses","getGridUtilityClass","GRID_SIZES","getScale","isWebKit154","navigator","userAgent","Grow","timer","autoTimeout","delay","transitionTimingFunction","getAutoHeightDuration","join","muiSupportAuto","IconButtonRoot","edge","shortest","getIconButtonUtilityClass","InputRoot","formControl","InputInput","inputComponentsProps","getInputUtilityClass","InputAdornmentRoot","disablePointerEvents","positionStart","variantProp","getInputAdornmentUtilityClass","_InputGlobalStyles","rootOverridesResolver","adornedEnd","inputOverridesResolver","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel","InputBaseRoot","InputBaseInput","placeholder","inputPlaceholder","placeholderHidden","placeholderVisible","font","letterSpacing","disableInjectingGlobalStyles","animationName","animationDuration","resize","InputGlobalStyles","autoFocus","inputPropsProp","inputRefProp","maxRows","minRows","renderSuffix","rows","isControlled","handleInputRefWarning","instance","handleInputRef","checkDirty","InputComponent","Boolean","g","onAnimationStart","getInputBaseUtilityClass","hasValue","isFilled","SSR","isAdornedStart","InputLabelRoot","shrink","disableAnimation","animated","transformOrigin","shrinkProp","getInputLabelUtilityClasses","ListRoot","disablePadding","dense","subheader","getListUtilityClass","ListItemIconRoot","alignItemsFlexStart","getListItemIconUtilityClass","ListItemTextRoot","inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","getListItemTextUtilityClass","ListSubheaderRoot","disableGutters","gutters","disableSticky","sticky","ListSubheader","getListSubheaderUtilityClass","RTL_ORIGIN","horizontal","LTR_ORIGIN","MenuRoot","MenuPaper","MenuMenuList","list","disableAutoFocusItem","MenuListProps","PopoverClasses","isRtl","autoFocusItem","menuListActionsRef","activeItemIndex","paperExternalSlotProps","rootSlotProps","externalSlotProps","paperSlotProps","anchorOrigin","adjustStyleForScrollbar","actions","getMenuUtilityClass","MenuItemRoot","backgroundClip","tabIndexProp","menuItemRef","getMenuItemUtilityClass","nextItem","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","textContent","repeating","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocusDisabled","getAttribute","hasAttribute","listRef","textCriteriaRef","previousKeyMatched","lastTime","useEnhancedEffect","containerElement","noExplicitWidth","scrollbarSize","ownerDocument","newChildProps","List","ctrlKey","altKey","activeElement","criteria","lowerKey","currTime","performance","now","keepFocusOnCurrent","defaultManager","ModalManager","ModalRoot","exited","hidden","ModalBackdrop","classesProp","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onTransitionEnter","onTransitionExited","propsWithDefaults","getBackdropProps","getTransitionProps","portalRef","isTopModal","hasTransition","parameters","manager","rootRef","mountNodeRef","modalRef","setExited","hasOwnProperty","getHasTransition","ariaHiddenProp","getModal","handleMounted","scrollTop","handleOpen","resolvedContainer","getContainer","body","add","handlePortalRef","handleClose","remove","createHandleKeyDown","otherHandlers","which","createHandleBackdropClick","propsEventHandlers","extractEventHandlers","externalEventHandlers","createChainedFunction","getSlotProps","BackdropSlot","backdropProps","backdropRef","Portal","FocusTrap","isEnabled","ariaHidden","show","setAttribute","removeAttribute","getPaddingRight","getComputedStyle","ariaHiddenSiblings","mountElement","currentElement","elementsToExclude","blacklist","isNotExcludedElement","isNotForbiddenElement","isForbiddenTagName","isInputHidden","isAriaHiddenForbiddenOnElement","findIndexOf","idx","some","modals","containers","modalIndex","hiddenSiblings","getHiddenSiblings","containerIndex","restore","containerInfo","restoreStyle","doc","innerWidth","documentElement","scrollHeight","isOverflowing","property","el","fixedElements","querySelectorAll","scrollContainer","parentNode","DocumentFragment","parent","parentElement","containerWindow","nodeName","setProperty","removeProperty","handleContainer","ariaHiddenState","nextTop","getModalUtilityClass","StyledSelectSelect","NativeSelectSelect","select","StyledSelectIcon","NativeSelectIcon","iconOpen","IconComponent","getNativeSelectUtilityClasses","NotchedOutlineRoot","NotchedOutlineLegend","float","withLabel","notched","OutlinedInputRoot","InputBase","outlinedInputClasses","notchedOutline","OutlinedInputInput","OutlinedInput","_React$Fragment","getOutlinedInputUtilityClass","PaperRoot","square","rounded","backgroundImage","overlays","getPaperUtilityClass","getOffsetTop","offset","getOffsetLeft","getTransformOriginValue","n","resolveAnchorEl","PopoverRoot","PopoverPaper","anchorPosition","anchorReference","containerProp","marginThreshold","PaperPropsProp","transitionDurationProp","externalPaperSlotProps","paperRef","getAnchorOffset","resolvedAnchorEl","anchorRect","nodeType","getTransformOrigin","elemRect","getPositioningStyle","offsetWidth","offsetHeight","elemTransformOrigin","anchorOffset","heightThreshold","innerHeight","widthThreshold","diff","isPositioned","setIsPositioned","setPositioningStyles","positioning","window","removeEventListener","updatePosition","handleResize","rootSlotPropsProp","handlePaperRef","getPopoverUtilityClass","getWindow","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","min","getUAString","uaData","userAgentData","brands","brand","version","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","getNodeName","getDocumentElement","document","getWindowScrollBarX","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","offsets","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","host","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","css","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","variationPlacements","placement","modifierPhases","order","modifiers","Map","visited","Set","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","_len","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","fn","pending","orderedModifiers","modifiersData","elements","attributes","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","phase","orderModifiers","existing","m","enabled","_ref$options","effect","cleanupFn","update","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","hash","getOppositePlacement","matched","getOppositeVariationPlacement","contains","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","initialStyles","attribute","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","_i","fittingPlacement","find","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","defaultPopperOptions","PopperTooltip","forwardedRef","initialPlacement","popperOptions","popperRef","popperRefProp","ownerStateProp","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","popperModifiers","useSlotProps","PopperRoot","BasePopper","RootComponent","getPopperUtilityClass","mountNode","setMountNode","newProps","ScopedCssBaselineRoot","colorSchemeStyles","colorSchemes","scheme","selector","colorScheme","fontWeightBold","enableColorScheme","getScopedCssBaselineUtilityClass","SelectSelect","selectClasses","SelectIcon","SelectNativeInput","slotShouldForwardProp","nativeInput","areEqualValues","isEmpty","ariaLabel","autoWidth","defaultOpen","displayEmpty","labelId","MenuProps","openProp","renderValue","SelectDisplayProps","setValueState","useControlled","controlled","default","openState","setOpenState","displayRef","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","handleDisplayRef","anchorElement","getElementById","handler","getSelection","isCollapsed","childrenArray","toArray","handleItemClick","newValue","itemIndex","nativeEvent","clonedEvent","writable","displaySingle","displayMultiple","computeDisplay","foundMatch","menuMinWidth","buttonId","listboxId","useId","childItem","Menu","styledRootConfig","StyledInput","StyledOutlinedInput","StyledFilledInput","Select","ArrowDropDown","native","NativeSelectInput","restOfClasses","standard","outlined","inputComponentRef","getReactNodeRef","deepmerge","getSelectUtilityClasses","asc","findClosest","currentValue","closestIndex","trackFinger","touchId","changedTouches","touchEvent","touch","identifier","valueToPercent","setValueIndex","focusThumb","sliderRef","activeIndex","setActive","areValuesEqual","oldValue","array1","array2","itemComparer","axisProps","percent","leap","Identity","cachedSupportsTouchActionNone","doesSupportTouchActionNone","CSS","supports","useSlider","disableSwap","marks","marksProp","onChangeCommitted","scale","step","shiftStep","setOpen","dragging","setDragging","moveCount","valueDerived","handleChange","thumbIndex","clamp","_","marksValues","mark","focusedThumbIndex","setFocusedThumbIndex","createHandleHiddenInputFocus","createHandleHiddenInputBlur","changeValue","valueInput","marksIndex","maxMarksValue","Infinity","previousValue","createHandleHiddenInputKeyDown","shiftKey","blur","previousIndex","getFingerNewValue","finger","move","slider","percentToValue","nearest","toFixed","parts","toExponential","matissaDecimalPart","decimalPart","getDecimalPrecision","roundValueToStep","buttons","stopListening","trackOffset","trackLeap","createHandleMouseLeave","getHiddenInputProps","externalProps","externalHandlers","ownEventHandlers","valueAsNumber","mergedEventHandlers","visuallyHidden","getThumbProps","onMouseOver","getThumbStyle","SliderRoot","marked","track","trackInverted","trackFalse","touchAction","sliderClasses","thumb","SliderRail","rail","SliderTrack","Slider","applyStyles","SliderThumb","valueLabelOpen","circle","valueLabelCircle","valueLabelLabel","useValueLabelClasses","valueLabel","white","SliderMark","markActive","SliderMarkLabel","markLabel","markLabelActive","Forward","ariaValuetext","getAriaLabel","getAriaValueText","valueLabelDisplay","valueLabelFormat","RailSlot","Rail","TrackSlot","Track","ThumbSlot","Thumb","ValueLabelSlot","ValueLabel","MarkSlot","Mark","MarkLabelSlot","MarkLabel","railSlotProps","trackSlotProps","thumbSlotProps","valueLabelSlotProps","markSlotProps","markLabelSlotProps","inputSlotProps","Slot","isHostComponent","railProps","trackProps","thumbProps","valueLabelProps","markProps","markLabelProps","inputSliderProps","ValueLabelComponent","getSliderUtilityClass","SvgIconRoot","hasSvgAsChild","fill","SvgIcon","htmlColor","inheritViewBox","titleAccess","viewBox","instanceFontSize","focusable","getSvgIconUtilityClass","variantComponent","TextFieldRoot","FormHelperTextProps","FormHelperTextPropsProp","helperText","idOverride","InputLabelPropsProp","InputPropsProp","SelectProps","SelectPropsProp","helperTextId","inputLabelId","inputLabel","htmlInput","formHelperText","inputAdditionalProps","inputLabelSlotProps","InputLabelSlot","inputLabelProps","HtmlInputSlot","htmlInputProps","FormHelperTextSlot","formHelperTextProps","SelectSlot","selectProps","InputElement","htmlFor","getTextFieldUtilityClass","getStyleValue","heightRef","shadowRef","calculateTextareaStyles","computedStyle","outerHeightStyle","overflowing","inputShallow","borderTopWidth","singleRowHeight","outerHeight","syncHeight","textareaStyles","debounceHandleResize","resizeObserver","ResizeObserver","observe","cancelAnimationFrame","rAF","disconnect","isValueSelected","candidate","ToggleButtonRoot","toggleButtonClasses","ToggleButtonGroupContext","toggleButtonGroupButtonContextPositionClassName","ToggleButtonGroupButtonContext","resolveProps","getToggleButtonUtilityClass","ToggleButtonGroupRoot","grouped","firstButton","lastButton","middleButton","borderBottomLeftRadius","borderBottomRightRadius","exclusive","buttonValue","handleExclusiveChange","validChildren","childrenCount","getButtonPositionClassName","isFirstButton","isLastButton","getToggleButtonGroupUtilityClass","TooltipPopper","disableInteractive","popperInteractive","popperArrow","popperClose","tooltip","TooltipTooltip","tooltipArrow","Tooltip","wordWrap","fontWeightRegular","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","childrenProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","leaveDelay","leaveTouchDelay","PopperProps","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","prevUserSelect","stopTouchInteraction","WebkitUserSelect","handleMouseOver","setChildIsFocusVisible","detectTouchStart","childrenProps","nameOrDescProps","titleIsString","onMouseMove","interactiveWrapperListeners","tooltipModifiers","Popper","Transition","TooltipComponent","ArrowComponent","Arrow","tooltipProps","tooltipArrowProps","TransitionPropsInner","getTooltipUtilityClass","v6Colors","textPrimary","textSecondary","textDisabled","TypographyRoot","align","noWrap","gutterBottom","paragraph","defaultVariantMapping","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","inherit","variantMapping","getTypographyUtilityClass","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","contentEditable","getTabIndex","getRadio","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","defaultIsEnabled","getTabbable","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","activated","lastKeydown","loopFocus","rootElement","hasFocus","tabbable","isShiftTab","focusNext","focusPrevious","interval","setInterval","clearInterval","handleFocusSentinel","relatedTarget","childrenPropsHandler","getSwitchBaseUtilityClass","generateUtilityClass","SwitchBaseRoot","SwitchBaseInput","checkedProp","defaultChecked","setCheckedState","hasLabelFor","newChecked","ThemeProviderNoVars","themeInput","scopedTheme","DEFAULT_MODE_STORAGE_KEY","DEFAULT_COLOR_SCHEME_STORAGE_KEY","DEFAULT_ATTRIBUTE","getSystemMode","matchMedia","matches","processState","systemMode","initializeValue","localStorage","getItem","setItem","defaultConfig","CssVarsProvider","InternalCssVarsProvider","useColorScheme","getInitColorSchemeScript","deprecatedGetInitColorSchemeScript","modeStorageKey","defaultModeStorageKey","colorSchemeStorageKey","defaultColorSchemeStorageKey","disableTransitionOnChange","designSystemTransitionOnChange","defaultColorScheme","resolveTheme","defaultContext","allColorSchemes","darkColorScheme","lightColorScheme","setColorScheme","setMode","ColorSchemeContext","defaultLightColorScheme","defaultDarkColorScheme","themeProp","storageWindow","documentNode","colorSchemeNode","disableNestedContext","disableStyleSheetGeneration","hasMounted","upperTheme","ctx","nested","initialTheme","cssVarPrefix","restThemeProp","joinedColorSchemes","defaultMode","stateMode","stateColorScheme","supportedColorSchemes","isMultiSchemes","initialMode","setHasMounted","getColorScheme","currentState","newMode","newState","newLightColorScheme","newDarkColorScheme","handleMediaQuery","mediaListener","media","addListener","removeListener","handleStorage","useCurrentColorScheme","calculatedColorScheme","themeVars","generateThemeVars","generateSpacing","schemeKey","colorSchemeSelector","rule","classList","substring","attr","createElement","appendChild","createTextNode","head","removeChild","shouldGenerateStyleSheet","cssVariables","ThemeProvider","GlobalStyles","generateStyleSheets","initialAttribute","nonce","setter","suppressHydrationWarning","dangerouslySetInnerHTML","__html","InitColorSchemeScript","createCssVarsProvider","newTheme","createTypography","unstable_sx","sx","Experimental_CssVarsProvider","warnedInitScriptOnce","isUnitless","parseFloat","getUnit","toUnitless","convertLength","baseFontSize","toUnit","fromUnit","pxLength","outputLength","alignProperty","grid","sizeBelow","sizeAbove","fontGrid","pixels","htmlFontSize","responsiveProperty","cssProperty","factor","adaptV4Theme","inputTheme","mixins","styleOverrides","componentValue","createSpacing","createBreakpoints","typeInput","modeInput","paletteRest","finalMode","hint","createMuiStrictModeTheme","unstable_strictMode","warnedOnce","createStyles","responsiveFontSizes","disableAlign","convert","breakpointValues","remFontSize","maxFontSize","minFontSize","cache","StyledEngineProvider","injectFirst","C","makeStyles","withStyles","withTheme","MyStyleSheet","super","prepend","sheet","speedy","isSpeedy","insertionPoint","createEmotionCache","deprecatedExtendTheme","experimental_sx","reflow","transitionDelay","stripDiacritics","string","normalize","createFilterOptions","config","ignoreAccents","ignoreCase","limit","matchFrom","filteredOptions","defaultFilterOptions","defaultIsActiveElementInListbox","MULTIPLE_DEFAULT_VALUE","unstable_isActiveElementInListbox","unstable_classNamePrefix","optionLabel","ignoreFocus","firstFocus","setFocusedTag","defaultHighlighted","highlightedIndexRef","setInputValueState","resetInputValue","reason","newInputValue","inputPristine","setInputPristine","inputValueIsSelectedValue","value2","previousProps","valueChange","listboxAvailable","focusTag","tagToFocus","setHighlightedIndex","listboxNode","scrollBottom","elementBottom","changeHighlightedIndex","nextIndex","validOptionIndex","maxIndex","newIndex","getNextIndex","setSelectionRange","syncHighlightedIndex","previousHighlightedOptionIndex","value1","previousHighlightedOption","findIndex","getPreviousHighlightedOptionIndex","valueItem","currentOption","optionItem","handleListboxRef","handleValue","details","isTouch","selectNewValue","reasonProp","origin","handleFocusTag","nextTag","validTagIndex","handleClear","defaultMuiPrevented","handleInputChange","handleOptionMouseMove","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleClick","selectionEnd","selectionStart","autoCapitalize","spellCheck","path","displayName","validator","componentNameInError","propName","location","propFullName","unstable_ClassNameGenerator","configure","generator","muiNames","_payload","initialElementType","getSlotOwnerState","internalForwardedProps","useSlotPropsParams","rootComponent","resolvedComponentsProps","slotComponent","mergedProps","internalRef","slotOwnerState","finalOwnerState","LeafComponent","globalCss","internal_createExtendSxProp","RtlContext","useRtl","Symbol","for","localTheme","outerTheme","mergeOuterLocalTheme","ThemeContext","EMPTY_THEME","useThemeScoping","isPrivate","resolvedTheme","mergedTheme","useThemeWithoutDefault","upperPrivateTheme","engineTheme","privateTheme","rtlValue","RtlProvider","DefaultPropsProvider","splitProps","systemProps","unstable_sxConfig","inSx","finalSx","systemDefaultTheme","getThemeProps","contextTheme","T","funcs","func","apply","debounce","wait","debounced","object","excludeKeys","propertyIsEnumerable","getScrollbarSize","documentWidth","getValidReactChildren","joinedClasses","mergedStyle","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","ownerWindow","componentProps","slotState","setRef","defaultProp","valueState","setValue","refs","globalId","maybeReactUseId","reactId","defaultId","setDefaultId","useGlobalId","UNINITIALIZED","init","initArg","skipResolvingSlotProps","EMPTY","Timeout","currentId","disposeEffect","clip","GridApiContext","GridRootPropsContext","useGridApiContext","apiRef","useGridApiRef","useGridRootProps","exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","base64","ieee754","customInspectSymbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","arg","encodingOrOffset","TypeError","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","isBuffer","numberIsNaN","fromObject","toPrimitive","assertSize","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","enumerable","poolSize","alloc","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","toLocaleString","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","alphabet","table","i16","METHOD","PROPERTY","inst","execute","freeze","METHODS","PROPERTIES","sequence","fromJSON","save","build","seq","realArgs","module","clone","_instanceof","nativeMap","nativeSet","nativePromise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","RegExp","source","__getRegExpFlags","lastIndex","__isDate","getPrototypeOf","keyChild","valueChild","entryChild","attrs","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","o","re","flags","global","clonePrototype","deselectCurrent","clipboardToIE11Formatting","debug","reselectPrevious","selection","createRange","webkitUserSelect","MozUserSelect","msUserSelect","clipboardData","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","copyKey","prompt","removeRange","removeAllRanges","isFrozen","seal","construct","Reflect","fun","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","_len2","_key2","thisArg","addToSet","transformCaseFunc","l","lcElement","cleanArray","newObject","lookupGetter","desc","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","getGlobal","createDOMPurify","DOMPurify","VERSION","removed","isSupported","originalDocument","currentScript","HTMLTemplateElement","Node","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","getNextSibling","getChildNodes","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","policyName","scriptUrl","_createTrustedTypesPolicy","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","parseFromString","createDocument","innerHTML","insertBefore","childNodes","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","elm","namespaceURI","hasChildNodes","_isNode","_executeHook","entryPoint","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","matchHtmlRegExp","escape","exec","equal","XMLHttpRequest","responseType","onload","onerror","send","dispatchEvent","MouseEvent","createEvent","initMouseEvent","self","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","Blob","safari","FileReader","onloadend","readAsDataURL","readBlobAsArrayBuffer","blob","fileReader","onabort","readAsArrayBuffer","BlobFile","bytesRead","resultBuffer","readFile","readAsText","readBlobAsText","close","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","log","LN2","_interopRequireDefault","_classCallCheck2","_createClass2","Evaluator","Lexer","Parser","PromiseSync","Expression","grammar","exprStr","_grammar","_exprStr","_ast","lexer","tokenize","addTokens","complete","_eval","promise","ast","_getAst","eval","compile","_defineProperty2","getGrammar","Jexl","operator","precedence","manualEval","_addGrammarElement","functions","weight","transforms","expression","createExpression","evalSync","strs","numericRegex","identRegex","escEscRegex","whitespaceRegex","preOpRegexElems","postOpRegexElems","minusNegatesAfter","regex","_getSplitRegex","elem","negate","_isWhitespace","raw","_isNegative","_createToken","getElements","getTokens","token","_unquote","_splitRegex","elemArray","_escapeRegExp","quote","escQuoteRegex","_resolve","_reject","rejected","resolved","vals","handlers","relativeContext","_context","_relContext","_this2","_this3","asts","subject","_this4","promises","evalInst","results","_toConsumableArray2","poolNames","ArrayLiteral","evalArray","BinaryExpression","grammarOp","evalOnDemand","subAst","ConditionalExpression","consequent","alternate","FilterExpression","relative","_filterRelative","_filterStatic","Identifier","Literal","ObjectLiteral","evalMap","FunctionCall","poolName","pool","UnaryExpression","leftVal","prefix","stopMap","_state","_tree","_relative","_stopMap","startExpr","subHandler","_subParser","_startSubExpression","stopState","addToken","_endSubExpression","_parentStop","tokenTypes","typeOpts","handleFunc","toState","_cursor","completable","_setParent","_parent","_placeAtCursor","endStates","argVal","arrayStart","arrayVal","binaryOp","dot","_nextIdentEncapsulate","_nextIdentRelative","_placeBeforeCursor","isRelative","functionCall","literal","objKey","_curObjKey","objStart","objVal","subExpression","ternaryEnd","ternaryMid","ternaryStart","unaryOp","h","expectOperand","openParen","openCurl","openBracket","expectBinOp","pipe","question","expectTransform","expectObjKey","closeCurl","expectKeyValSep","colon","postTransform","postArgs","traverse","closeBracket","closeParen","comma","EventEmitter","events","on","listener","listeners","off","emit","peekTransferables","ImageBitmap","OffscreenCanvas","MessagePort","isTransferable","Client","workers","calls","timeouts","errors","listen","worker","uid","eventName","libRpc","lineno","filename","deserializeError","random","transferables","postMessage","Server","methods","reply","throw","serializeError","stdOnEnd","script","ieOnEnd","onreadystatechange","readyState","opts","charset","setAttributes","useState","makeObservable","defaultNoopBatch","observerBatching","reactionScheduler","ObserverComponent","useObserver","useLocalObservable","initializer","annotations","observable","autoBind","useAsObservableSource","deep","runInAction","useLocalStore","baseComponentName","useStaticRendering","enable","observerFinalizationRegistry","globalIsUsingStaticRendering","enableStaticRendering","isUsingStaticRendering","printDebugValue","getDependencyTree","createReaction","adm","reaction","Reaction","stateVersion","onStoreChange","admRef","subscribe","unregister","dispose","getSnapshot","renderResult","register","useSyncExternalStore","finalize","maxAge","sweepTimeout","registrations","registration","registeredAt","scheduleSweep","sweep","FinalizationRegistry","TimerBasedFinalizationRegistry","is","hoistBlackList","$$typeof","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","mobxMixins","mobxPatchedDefinition","realMethod","locks","retVal","mx","wrapFunction","patch","methodName","mixinMethod","methodMixins","getMixins","oldDefinition","originalMethod","newDefinition","createDefinition","wrappedFunc","administrationSymbol","isMobXReactObserverSymbol","getAdministration","_component$administra","reactionInvalidatedBeforeMount","getDisplayName","componentClass","createReactiveRender","originalRender","boundOriginalRender","admin","_admin$reaction2","_allowStateChanges","observerSCU","nextState","objA","objB","keysA","keysB","shallowEqual","observer","kind","isPrototypeOf","React","componentWillReact","PureComponent","shouldComponentUpdate","originalComponentDidMount","_admin$reaction","makeClassComponentObserver","observerLite","MobXProviderContext","stores","_objectWithoutPropertiesLoose","_excluded","parentValue","_extends","createStoreInjector","grabStoresFn","injectNames","makeReactive","base","protoProps","Injector","getInjectName","inject","storeNames","baseStores","storeName","grabStoresByName","reactMajorVersion","warnedAboutDisposeOnUnmountDeprecated","protoStoreKey","instStoreKey","runDisposersOnWillUnmount","propKeyOrFunction","disposeOnUnmount","propertyKeyOrFunction","c2","c3","isDecorator","componentWasAlreadyModified","createChainableTypeChecker","checkType","isRequired","untracked","chainedCheckType","getPropType","propType","isSymbol","createObservableTypeCheckerCreator","allowNativeType","mobxType","mobxChecker","isObservableArray","isObservableObject","isObservableMap","preciseType","getPreciseType","nativeTypeExpectationMessage","createObservableArrayOfTypeChecker","typeChecker","PropTypes","observableArray","observableArrayOf","observableMap","observableObject","arrayOrObservableArray","arrayOrObservableArrayOf","objectOrObservableObject","QuickLRU","oldCache","_size","_set","peek","deleted","iterator","oldCacheSize","t","exp","u","_maxEntries","_minEntries","ceil","minX","minY","maxX","maxY","leaf","_all","search","toBBox","collides","load","insert","_build","_splitRoot","_insert","_condense","compareMinX","compareMinY","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","M","_allDistMargin","translateX","scale0","scale1","translateY","TOP","RIGHT","BOTTOM","LEFT","defaultAxisStyle","orient","tickSizeInner","tickSizeOuter","tickPadding","strokeWidth","tickFont","tickFontSize","shadow","fg","axisStyle","isRight","isLeft","isTop","isBottom","isHorizontal","halfWidth","range0","range1","textAnchor","stroke","lineProps","textProps","dy","tickCount","ticks","tickFormat","aa","encodeURIComponent","fa","ha","ia","ja","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ka","la","toUpperCase","xlinkHref","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","ma","charAt","na","oa","pa","qa","w","insertionMode","selectedValue","sa","ta","va","wa","xa","za","Ca","Da","Fa","generateStaticMarkup","B","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","_init","Ya","Za","E","F","_currentValue2","$a","ab","bb","G","db","isMounted","enqueueSetState","_reactInternals","queue","enqueueReplaceState","enqueueForceUpdate","eb","updater","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","fb","gb","H","clz32","ib","jb","lb","I","ob","J","K","L","N","O","P","Q","pb","memoizedState","qb","rb","sb","tb","dispatch","ub","vb","wb","R","xb","readContext","useContext","useMemo","useReducer","useRef","useInsertionEffect","useLayoutEffect","useCallback","useImperativeHandle","useEffect","useDebugValue","useDeferredValue","useTransition","treeContext","S","idPrefix","useMutableSource","_source","yb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","zb","Bb","allPendingTasks","pendingRootTasks","pendingTasks","ping","pingedTasks","Cb","blockedBoundary","blockedSegment","abortSet","legacyContext","U","parentFlushed","chunks","formatContext","lastPushedText","textEmbedded","V","onError","W","onShellError","onFatalError","destination","fatalError","Db","Eb","getChildContext","X","Fb","Gb","isReactComponent","fallback","rootSegmentID","forceClientRender","completedSegments","byteSize","fallbackAbortableTasks","errorDigest","Hb","responseState","Y","_defaultValue","q","ua","D","ya","ra","Ib","done","Jb","Kb","Lb","clientRenderedBoundaries","onAllReady","completedRootSegment","onShellReady","completedBoundaries","partialBoundaries","z","Mb","Z","nextSegmentId","placeholderPrefix","Nb","nextSuspenseID","boundaryPrefix","progressiveChunkSize","Ob","segmentPrefix","Aa","Ba","Pb","Qb","startInlineScript","sentCompleteBoundaryFunction","sentCompleteSegmentFunction","bootstrapChunks","errorMessage","errorComponentStack","sentClientRenderFunction","ba","ca","mb","da","nb","ea","Rb","abortableTasks","Sb","Tb","Ab","Ea","identifierPrefix","renderToNodeStream","renderToStaticMarkup","renderToStaticNodeStream","renderToString","enqueue","TextEncoder","encode","hb","kb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","_currentValue","mc","nc","oc","pc","qc","rc","sc","tc","uc","wc","xc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Oc","Nc","Pc","Qc","Tc","Uc","Sc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","jd","kd","ld","renderToReadableStream","Rc","bootstrapScriptContent","bootstrapScripts","bootstrapModules","ReadableStream","pull","cancel","highWaterMark","allReady","ErrorBoundaryContext","createContext","initialState","didCatch","ErrorBoundary","resetErrorBoundary","_this$props$onReset","onReset","componentDidCatch","_this$props$onError","_this$props2","componentDidUpdate","prevProps","prevState","resetKeys","_this$props$onReset2","_this$props3","hasArrayChanged","fallbackRender","FallbackComponent","childToRender","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","only","noop","_subscribe","lift","Observable","observerOrNext","subscriber","Subscriber","isFunction","isObserver","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","unsubscribe","fns","operations","identity","toPromise","COMPLETE_NOTIFICATION","createNotification","isStopped","EMPTY_OBSERVER","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","closed","Subscription","_bind","partialObserver","handleUnhandledError","useDeprecatedNextContext","ConsumerObserver","useDeprecatedSynchronousErrorHandling","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","UnsubscriptionError","_super","arrRemove","initialTeardown","_parentage","_finalizers","empty","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","isSubscription","onUnhandledError","EmptyError","firstValueFrom","hasConfig","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","resultSelector","callOrApply","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","isArrayLike","mergeMap","subTarget","innerFrom","obs","fromAsyncIterable","iterable","readableStream","asyncIterable","process","observeOn","scheduler","executeSchedule","subscribeOn","schedule","scheduleAsyncIterable","asyncIterator","merge","popScheduler","concurrent","popNumber","sources","mergeAll","isInteropObservable","scheduleObservable","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","return","scheduleIterable","isReadableStreamLike","scheduleReadableStreamLike","scheduled","createOperatorSubscriber","onNext","onComplete","onFinalize","OperatorSubscriber","shouldUnsubscribe","predicate","project","ii","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeInternals","accumulator","seed","hasSeed","hasState","scanInternals","takeUntil","notifier","arrReducer","delegate","handle","createErrorClass","createImpl","ctorFunc","stack","isRoot","errorThrown","captureError","parentSubscription","work","scheduleSubscription","readableStreamLikeToAsyncGenerator","reader","getReader","releaseLock","operate","hasLift","liftedSource","createInvalidObservableTypeError","NonError","_prepareSuperMessage","captureStackTrace","commonProperties","isCalled","destroyCircular","seen","to_","forceEnumerable","maxDepth","json","POSITIVE_INFINITY","newError","nargs","rangeCount","ranges","getRangeAt","classnames","cls","toAdd","assert","typeGuard","createCssAndCx","serialized","registered","matchCSSObject","increaseSpecificityToTakePrecedenceOverMediaQueries","saveClassNameCSSObjectMapping","feat27FixedClassnames","fixClassName","registeredStyles","rawClassName","createUseCssAndCx","useCache","useCssAndCx","deps","_a","prevDeps","useGuaranteedMemo","cssObjectMapByCache","WeakMap","cssObject","cssObjectMap","classNameCSSObjects","isThereAnyMediaQueriesInPreviousClasses","fix","classNameOrCSSObject","createWithStyles","cssObjectByRuleNameOrGetCssObjectByRuleName","Component_","Out","nameOrWrappedName","functionName","useStyles","incorporateMediaQueries","getHasNonRootClasses","forwardRef","_classes","rootClassName","fixedClassesByClasses","getClasses","errorMessageGetClasses","classesIn","cssObjectByRuleNameWithMediaQueries","cssObjectByRuleName","cssObjectByRuleNameWithMediaQueriesByMediaQuery","ruleNameOrMediaQuery","mediaQuery","cssObjectByRuleNameBis","ruleName","createMakeAndWithStyles","tss","counter","createMakeStyles","cacheProvidedAtInception","createUseCache","uniqId","getCssObjectByRuleName","muiStyleOverridesParams","refClassesCache","refClasses","Proxy","_target","propertyKey","propsClasses","pluginResultWrap","reactContext","contextualCache","cacheExplicitlyProvidedForTss","cacheToBeUsed","mergeClasses","classesFromUseStyles","classesOverrides","useMuiThemeStyleOverridesPlugin","_b","_c","classesFromThemeStyleOverrides","themeClasses","cssObjectOrGetCssObject","condition","msg","getDependencyArrayRef","typeofValue","objectKeys","objectFromEntries","fromEntries","_value","isMatched","isSSR","isBrowser","isJest","jest","isMocha","mocha","isVitest","__vitest_worker__","createTss","nestedSelectorUsageTrackRecord","usePlugin","createTss_internal","doesUseNestedSelectors","idOfUseStyles","paramsAndPluginParams","classesOverridesRef","paramsAndPluginParamsRef","use_cache","mapCache_in","mapCache","mapCache_in_in","mapCache_in_in_in","entry","context_i","threshold","runGetClassesOrUseCache","update_nested_selector_usage_track_record","nestedSelectorRuleNames","__esModule","arrayLikeToArray","toPropertyKey","_defineProperties","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_typeof","_assertThisInitialized","ReferenceError","_setPrototypeOf","__proto__","_inheritsLoose","hasWindow","isNode","_node$ownerDocument","isOverflowElement","isTopLayer","isContainingBlock","elementOrCss","webkit","isWebKit","containerType","backdropFilter","getNodeScroll","scrollX","scrollY","getNearestOverflowAncestor","traverseIframes","_node$ownerDocument2","scrollableAncestor","frameElement","getFrameElement","createCoords","computeCoordsFromPlacement","rtl","floating","sideAxis","alignmentAxis","alignLength","commonAlign","coords","getCssDimensions","hasOffset","shouldFallback","$","unwrapElement","domElement","noOffsets","getVisualOffsets","visualOffsets","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","leftScroll","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","offsetRect","htmlX","htmlY","htmlRect","isStaticPositioned","polyfill","rawOffsetParent","svgOffsetParent","platform","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","getClientRects","isRTL","mergedOptions","platformWithCache","middleware","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","computePosition","deepEqual","getDPR","roundByDPR","useLatestRef","SafeReact","useSafeInsertionEffect","useEffectEvent","serverHandoffComplete","count","genId","setId","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","FOCUSABLE_ATTRIBUTE","isMouseBasedEvent","useClientPoint","dataRef","domReference","initialRef","cleanupListenerRef","pointerType","setPointerType","reactive","setReactive","setReference","openEvent","setPositionReference","offsetX","offsetY","isAutoUpdateEvent","_data$dataRef$current","domRect","isXAxis","isYAxis","canTrackCursorOnAutoUpdate","createVirtualElement","handleReferenceEnterOrMove","openCheck","handleMouseMove","composedPath","cleanup","setPointerTypeRef","onPointerDown","onPointerEnter","onMouseEnter","nodeId","internalRootContext","onOpenChange","onOpenChangeProp","elementsProp","floatingId","_map$get","_map$get2","createPubSub","positionReference","useFloatingRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReferenceRef","tree","externalReference","externalFloating","whileElementsMounted","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","referenceRef","setFloating","floatingRef","referenceEl","floatingEl","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","useFloating","computedPositionReference","floatingContext","nodesRef","ACTIVE_KEY","SELECTED_KEY","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","__","validProps","propsOrGetProps","useInteractions","referenceDeps","floatingDeps","itemDeps","getReferenceProps","getFloatingProps","getItemProps","grad","turn","rad","PI","rgba","isValid","brightness","isDark","isLight","toHex","toRgb","toRgbString","toHsl","toHslString","toHsv","invert","saturate","desaturate","grayscale","lighten","darken","rotate","hue","alpha","isEqual","cbrt","mix","tints","shades","tones","bisque","blue","cadetblue","chartreuse","chocolate","coral","antiquewhite","aqua","azure","whitesmoke","papayawhip","plum","blanchedalmond","black","gold","goldenrod","gainsboro","cornsilk","cornflowerblue","burlywood","aquamarine","beige","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkkhaki","darkgray","darkgreen","darkgrey","peachpuff","darkmagenta","darkred","darkorchid","darkorange","darkslateblue","gray","darkslategray","darkslategrey","deeppink","deepskyblue","wheat","firebrick","floralwhite","ghostwhite","darkviolet","magenta","green","dodgerblue","honeydew","hotpink","blueviolet","forestgreen","lawngreen","indianred","indigo","fuchsia","brown","maroon","mediumblue","lightcoral","darkturquoise","lightcyan","ivory","lightyellow","lightsalmon","lightseagreen","linen","mediumaquamarine","lemonchiffon","lime","khaki","mediumseagreen","limegreen","mediumspringgreen","lightskyblue","lightblue","midnightblue","lightpink","mistyrose","moccasin","mintcream","lightslategray","lightslategrey","navajowhite","navy","mediumvioletred","powderblue","palegoldenrod","oldlace","paleturquoise","mediumturquoise","mediumorchid","rebeccapurple","lightsteelblue","mediumslateblue","thistle","tan","orchid","mediumpurple","purple","pink","skyblue","springgreen","palegreen","red","yellow","slateblue","lavenderblush","peru","palevioletred","violet","teal","slategray","slategrey","aliceblue","darkseagreen","darkolivegreen","greenyellow","seagreen","seashell","tomato","silver","sienna","lavender","lightgreen","orange","orangered","steelblue","royalblue","turquoise","yellowgreen","salmon","saddlebrown","sandybrown","rosybrown","darksalmon","lightgoldenrodyellow","snow","lightgrey","lightgray","dimgray","dimgrey","olivedrab","olive","toName","closest","ascending","descending","bisector","compare1","compare2","delta","mid","zero","ascendingBisect","bisectRight","e10","e5","e2","tickSpec","power","log10","i1","i2","inc","reverse","tickIncrement","tickStep","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","hsla","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","channels","displayable","formatHex8","formatHsl","prefixExponent","formatDecimal","coefficient","exponent","toPrecision","formatRounded","formatPrefix","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","specifier","formatSpecifier","sign","precision","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","i0","formatTrim","formatDecimalParts","FormatSpecifier","basis","t1","v0","v1","v2","v3","t2","t3","nogamma","linear","rgbGamma","exponential","gamma","rgbSpline","spline","colors","rgbBasis","genericArray","setTime","reA","reB","am","bm","bs","bi","number","one","constant","DataView","bimap","domain","interpolate","d0","d1","r0","r1","polymap","bisect","unknown","transformer","untransform","piecewise","rescale","rangeRound","continuous","initRange","initInterpolator","interpolator","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","maxIter","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","x0","x1","quantize","invertExtent","thresholds","defaultImport","asAny","interopRequireDefault","_Menu","_props$slotProps2","_props$PaperProps","_props$slotProps","wrapped","ownerProps","useEvent","handlerRef","_handlerRef$current","printedWarnings","initCoreState","isOpen","setAnchorElUsed","hovered","_openEventType","_childPopupState","_deferNextOpen","_deferNextClose","_react","defaultPopupId","usePopupState","parentPopupState","popupId","_setState","toggle","eventOrAnchorEl","doOpen","_setChildPopupState","popupState","doClose","nextOpen","isElementInPopup","controlAriaProps","bindTrigger","bindHover","bindFocus","bindPopover","bindMenu","isAncestor","getPopup","extendStatics","__extends","__awaiter","_arguments","fulfilled","__generator","sent","trys","ops","Iterator","verb","op","__values","__read","ar","__spreadArray","pack","__await","__asyncGenerator","AsyncIterator","resume","fulfill","settle","__asyncValues","SuppressedError"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5260.e7b7aeb6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5260],{15260:(e,t,s)=>{s.r(t),s.d(t,{default:()=>f});var r=s(35451);const n=65536;class i{ixxFile;ixFile;maxResults;constructor(e,t,s=20){this.ixxFile=e,this.ixFile=t,this.maxResults=s}async search(e,t){let s=[];const i=e.split(" ")[0].toLowerCase(),a=await this._getBuffer(i,t);if(!a)return[];let{end:o,buffer:l}=a,c=!1;for(;!c;){let e=!1;const a=l.toString(),h=a.slice(0,a.lastIndexOf("\n")).split("\n").filter((e=>!!e)),u=[];for(const t of h){const s=t.split(" ")[0],r=s.startsWith(i);!e&&r&&(e=!0),s.slice(0,i.length)>i&&(c=!0),r&&u.push(t)}const f=u.flatMap((e=>{const[t,...s]=e.split(" ");return s.map((e=>[t,e.split(",")[0]]))}));if(s.length+f.length<this.maxResults&&!c){const e=await this.ixFile.read(r.hp.alloc(n),0,n,o,t);if(!e.bytesRead){s=s.concat(f);break}l=r.hp.concat([l,e.buffer]),o+=n}else if(s.length+f.length>=this.maxResults||c){s=s.concat(f);break}}return function(e){const t=new Set;return e.filter((e=>{const s=e[1];return!t.has(s)&&t.add(s)}))}(s).slice(0,this.maxResults)}async getIndex(e){return(await this.ixxFile.readFile({encoding:"utf8",...e})).split("\n").filter((e=>!!e)).map((e=>{const t=e.length-10,s=e.slice(0,t),r=e.slice(t);return[s,Number.parseInt(r,16)]}))}async _getBuffer(e,t){let s=0,n=65536;const i=await this.getIndex(t);for(const[t,r]of i)t.slice(0,e.length)<e&&(s=r,n=r+65536);const a=n-s;if(!(a<0))return{...await this.ixFile.read(r.hp.alloc(a),0,a,s,t),end:n}}}var a=s(46377),o=s(99834),l=s(8656),c=s(68584);function h(e){try{return decodeURIComponent(e)}catch(t){return e}}function u(e,t,s=15){const r=e.toLowerCase().indexOf(t);return e.length<40?e:(Math.max(0,r-s)>0?"...":"")+e.slice(Math.max(0,r-s),r+t.length+s).trim()+(r+t.length<e.length?"...":"")}class f extends a.BaseAdapter{constructor(e,t,s){super(e,t,s);const r=(0,c.readConfObject)(e,"ixFilePath"),n=(0,c.readConfObject)(e,"ixxFilePath");if(!r)throw new Error("must provide out.ix");if(!n)throw new Error("must provide out.ixx");this.trixJs=new i((0,o.openLocation)(n,s),(0,o.openLocation)(r,s),1500)}async searchIndex(e){const t=e.queryString.toLowerCase(),s=t.split(" "),r=(await this.trixJs.search(t)).filter((([,e])=>s.every((t=>h(e).toLowerCase().includes(t))))).map((([e,t])=>{const s=JSON.parse(t.replaceAll("|",",")),[r,n,...i]=s.map((e=>h(e))),a=i.findIndex((e=>!!e)),o=i.map((e=>e.toLowerCase())).findIndex((t=>t.includes(e.toLowerCase()))),c=i[a],f=i[o],d=-1!==o?u(f,e):void 0,p=u(c,e),x=d&&p.toLowerCase()!==d.toLowerCase()?`${p} (${d})`:p;return new l.A({locString:r,label:c,displayString:x,matchedObject:s.map((e=>decodeURIComponent(e))),trackId:n})}));return"exact"===e.searchType?r.filter((t=>t.getLabel().toLowerCase()===e.queryString.toLowerCase())):r}freeResources(){}}}}]);
+//# sourceMappingURL=5260.e7b7aeb6.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5260.e7b7aeb6.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5260.e7b7aeb6.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/trix/src/index.ts","../../../plugins/trix/src/TrixTextSearchAdapter/TrixTextSearchAdapter.ts"],"sourcesContent":["import { Buffer } from 'buffer'\nimport type { GenericFilehandle } from 'generic-filehandle'\n\nconst CHUNK_SIZE = 65536\n\n// this is the number of hex characters to use for the address in ixixx, see\n// https://github.com/GMOD/ixixx-js/blob/master/src/index.ts#L182\nconst ADDRESS_SIZE = 10\n\n// https://stackoverflow.com/a/9229821/2129219\nfunction uniqBy<T>(a: T[], key: (elt: T) => string) {\n  const seen = new Set()\n  return a.filter(item => {\n    const k = key(item)\n    return seen.has(k) ? false : seen.add(k)\n  })\n}\n\nexport default class Trix {\n  constructor(\n    public ixxFile: GenericFilehandle,\n    public ixFile: GenericFilehandle,\n    public maxResults = 20,\n  ) {}\n\n  async search(searchString: string, opts?: { signal?: AbortSignal }) {\n    let resultArr = [] as [string, string][]\n    const searchWords = searchString.split(' ')\n\n    // we only search one word at a time\n    const searchWord = searchWords[0].toLowerCase()\n    const res = await this._getBuffer(searchWord, opts)\n    if (!res) {\n      return []\n    }\n\n    let { end, buffer } = res\n    let done = false\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while (!done) {\n      let foundSomething = false\n      const str = buffer.toString()\n\n      // slice to lastIndexOf('\\n') to make sure we get complete records\n      // since the buffer fetch could get halfway into a record\n      const lines = str\n        .slice(0, str.lastIndexOf('\\n'))\n        .split('\\n')\n        .filter(f => !!f)\n\n      const hits2 = [] as string[]\n      for (const line of lines) {\n        const word = line.split(' ')[0]\n        const match = word.startsWith(searchWord)\n        if (!foundSomething && match) {\n          foundSomething = true\n        }\n\n        // we are done scanning if we are lexicographically greater than the\n        // search string\n        if (word.slice(0, searchWord.length) > searchWord) {\n          done = true\n        }\n        if (match) {\n          hits2.push(line)\n        }\n      }\n      const hits = hits2.flatMap(line => {\n        const [term, ...parts] = line.split(' ')\n        return parts.map(elt => [term, elt.split(',')[0]] as [string, string])\n      })\n\n      // if we are not done, and we haven't filled up maxResults with hits yet,\n      // then refetch\n      if (resultArr.length + hits.length < this.maxResults && !done) {\n        const res2 = await this.ixFile.read(\n          Buffer.alloc(CHUNK_SIZE),\n          0,\n          CHUNK_SIZE,\n          end,\n          opts,\n        )\n\n        // early break if empty response\n        if (!res2.bytesRead) {\n          resultArr = resultArr.concat(hits)\n          break\n        }\n        buffer = Buffer.concat([buffer, res2.buffer])\n        end += CHUNK_SIZE\n      }\n\n      // if we have filled up the hits, or we are detected to be done via the\n      // filtering, then return\n      else if (resultArr.length + hits.length >= this.maxResults || done) {\n        resultArr = resultArr.concat(hits)\n        break\n      }\n    }\n\n    // deduplicate results based on the detail column (resultArr[1])\n    return uniqBy(resultArr, elt => elt[1]).slice(0, this.maxResults)\n  }\n\n  private async getIndex(opts?: { signal?: AbortSignal }) {\n    const file = await this.ixxFile.readFile({\n      encoding: 'utf8',\n      ...opts,\n    })\n    return file\n      .split('\\n')\n      .filter(f => !!f)\n      .map(line => {\n        const p = line.length - ADDRESS_SIZE\n        const prefix = line.slice(0, p)\n        const posStr = line.slice(p)\n        const pos = Number.parseInt(posStr, 16)\n        return [prefix, pos] as const\n      })\n  }\n\n  private async _getBuffer(\n    searchWord: string,\n    opts?: { signal?: AbortSignal },\n  ) {\n    let start = 0\n    let end = 65536\n    const indexes = await this.getIndex(opts)\n    for (const [key, value] of indexes) {\n      const trimmedKey = key.slice(0, searchWord.length)\n      if (trimmedKey < searchWord) {\n        start = value\n        end = value + 65536\n      }\n    }\n\n    // Return the buffer and its end position in the file.\n    const len = end - start\n    if (len < 0) {\n      return undefined\n    }\n    const res = await this.ixFile.read(Buffer.alloc(len), 0, len, start, opts)\n    return {\n      ...res,\n      end,\n    }\n  }\n}\n","import Trix from '@gmod/trix'\nimport {\n  BaseTextSearchAdapter,\n  BaseAdapter,\n  BaseTextSearchArgs,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nfunction decodeURIComponentNoThrow(uri: string) {\n  try {\n    return decodeURIComponent(uri)\n  } catch (e) {\n    // avoid throwing exception on a failure to decode URI component\n    return uri\n  }\n}\n\nfunction shorten(str: string, term: string, w = 15) {\n  const tidx = str.toLowerCase().indexOf(term)\n\n  return str.length < 40\n    ? str\n    : (Math.max(0, tidx - w) > 0 ? '...' : '') +\n        str.slice(Math.max(0, tidx - w), tidx + term.length + w).trim() +\n        (tidx + term.length < str.length ? '...' : '')\n}\n\nexport default class TrixTextSearchAdapter\n  extends BaseAdapter\n  implements BaseTextSearchAdapter\n{\n  indexingAttributes?: string[]\n  trixJs: Trix\n  tracksNames?: string[]\n\n  constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const ixFilePath = readConfObject(config, 'ixFilePath')\n    const ixxFilePath = readConfObject(config, 'ixxFilePath')\n\n    if (!ixFilePath) {\n      throw new Error('must provide out.ix')\n    }\n    if (!ixxFilePath) {\n      throw new Error('must provide out.ixx')\n    }\n    this.trixJs = new Trix(\n      openLocation(ixxFilePath, pluginManager),\n      openLocation(ixFilePath, pluginManager),\n      1500,\n    )\n  }\n\n  /**\n   * Returns list of results\n   * @param args - search options/arguments include: search query\n   * limit of results to return, searchType...prefix | full | exact\", etc.\n   */\n  async searchIndex(args: BaseTextSearchArgs) {\n    const query = args.queryString.toLowerCase()\n    const strs = query.split(' ')\n    const results = await this.trixJs.search(query)\n    const formatted = results\n      // if multi-word search try to filter out relevant items\n      .filter(([, data]) =>\n        strs.every(r =>\n          decodeURIComponentNoThrow(data).toLowerCase().includes(r),\n        ),\n      )\n      .map(([term, data]) => {\n        const result = JSON.parse(data.replaceAll('|', ',')) as string[]\n        const [loc, trackId, ...rest] = result.map(record =>\n          decodeURIComponentNoThrow(record),\n        )\n\n        const labelFieldIdx = rest.findIndex(elt => !!elt)\n        const contextIdx = rest\n          .map(elt => elt.toLowerCase())\n          .findIndex(f => f.includes(term.toLowerCase()))\n\n        const labelField = rest[labelFieldIdx]!\n        const contextField = rest[contextIdx]!\n        const context =\n          contextIdx !== -1 ? shorten(contextField, term) : undefined\n        const label = shorten(labelField, term)\n\n        const displayString =\n          !context || label.toLowerCase() === context.toLowerCase()\n            ? label\n            : `${label} (${context})`\n\n        return new BaseResult({\n          locString: loc,\n          label: labelField,\n          displayString,\n          matchedObject: result.map(record => decodeURIComponent(record)),\n          trackId,\n        })\n      })\n\n    return args.searchType === 'exact'\n      ? formatted.filter(\n          r => r.getLabel().toLowerCase() === args.queryString.toLowerCase(),\n        )\n      : formatted\n  }\n\n  freeResources() {}\n}\n"],"names":["CHUNK_SIZE","Trix","ixxFile","ixFile","maxResults","constructor","search","searchString","opts","resultArr","searchWord","split","toLowerCase","res","this","_getBuffer","end","buffer","done","foundSomething","str","toString","lines","slice","lastIndexOf","filter","f","hits2","line","word","match","startsWith","length","push","hits","flatMap","term","parts","map","elt","res2","read","alloc","bytesRead","concat","a","seen","Set","item","k","has","add","uniqBy","getIndex","readFile","encoding","p","prefix","posStr","Number","parseInt","start","indexes","key","value","len","decodeURIComponentNoThrow","uri","decodeURIComponent","e","shorten","w","tidx","indexOf","Math","max","trim","TrixTextSearchAdapter","BaseAdapter","config","getSubAdapter","pluginManager","super","ixFilePath","readConfObject","ixxFilePath","Error","trixJs","openLocation","searchIndex","args","query","queryString","strs","formatted","data","every","r","includes","result","JSON","parse","replaceAll","loc","trackId","rest","record","labelFieldIdx","findIndex","contextIdx","labelField","contextField","context","undefined","label","displayString","BaseResult","locString","matchedObject","searchType","getLabel","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5327.8f1dcfc1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5327],{65327:(s,e,t)=>{t.r(e),t.d(e,{default:()=>l.A,getListItemIconUtilityClass:()=>a.f,listItemIconClasses:()=>a.A});var l=t(66765),a=t(16421)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5331.28d667f0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5331],{25331:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ue});var l=n(7552),o=n(68446),a=n(28685),r=n(62859),c=n(2051),i=n(29629),s=n(75785),d=n(99546),m=n(374);const u=(0,s.n9)()((e=>({fab:{position:"absolute",bottom:e.spacing(6),right:e.spacing(6)}}))),g=(0,o.observer)((function({model:e}){const{classes:t}=u(),n=(0,d.getSession)(e),[o,a]=(0,l.useState)(null);function s(){a(null)}const g=(0,d.isSessionModelWithConnections)(n),k=(0,d.isSessionWithAddTracks)(n);return k||g?l.createElement(l.Fragment,null,l.createElement(r.A,{color:"secondary",className:t.fab,onClick:e=>{a(e.currentTarget)}},l.createElement(m.A,null)),l.createElement(c.A,{anchorEl:o,open:Boolean(o),onClose:()=>{a(null)}},g?l.createElement(i.A,{onClick:()=>{s(),(0,d.isSessionModelWithWidgets)(n)&&n.showWidget(n.addWidget("AddConnectionWidget","addConnectionWidget"))}},"Add connection"):null,k?l.createElement(i.A,{onClick:()=>{s(),(0,d.isSessionModelWithWidgets)(n)&&n.showWidget(n.addWidget("AddTrackWidget","addTrackWidget",{view:e.view.id}))}},"Add track"):null)):null}));var k=n(32296),h=n(36715),b=n(61723),C=n(8463),f=n(32813),p=n(12756),v=n(30476);function E(e){return"category"===e?.type?e.children.map((e=>"category"===e.type?E(e):e.conf)).flat(Number.POSITIVE_INFINITY):[]}function y(e,t=new Map){e.id&&e.children.length&&t.set(e.id,e);for(const n of e.children)y(n,t);return t}function A(e=""){return e.endsWith("(Unsupported)")||e.endsWith("(Unknown)")}const S=(0,s.n9)()((e=>({contrastColor:{color:e.palette.tertiary.contrastText},accordionText:{margin:"auto 0",width:"100%"}})));function T({isOpen:e,setOpen:t,data:n}){const{classes:o}=S(),[a,r]=(0,l.useState)(null),{menuItems:c=[],name:i,model:s,id:d,tree:m}=n;return l.createElement("div",{className:o.accordionText,onClick:()=>{a||(n.toggleCollapse(d),t(!e))}},l.createElement(h.A,{"data-testid":`htsCategory-${i}`},e?l.createElement(f.A,null):l.createElement(p.A,null),i,l.createElement(b.A,{onClick:e=>{r(e.currentTarget),e.stopPropagation()},className:o.contrastColor},l.createElement(v.A,null))),a?l.createElement(C.A,{anchorEl:a,menuItems:[{label:"Add to selection",onClick:()=>{const e=y(m).get(d);s.addToSelection(E(e))}},{label:"Remove from selection",onClick:()=>{const e=y(m).get(d);s.removeFromSelection(E(e))}},{label:"Show all tracks",onClick:()=>{for(const e of y(m).get(d)?.children||[])"track"===e.type&&s.view.showTrack(e.trackId)}},{label:"Hide all tracks",onClick:()=>{for(const e of y(m).get(d)?.children||[])"track"===e.type&&s.view.hideTrack(e.trackId)}},...c],onMenuItemClick:(e,t)=>{t(),r(null)},open:Boolean(a),onClose:()=>{r(null)}}):null)}var w=n(89003),W=n(33371),I=n(32808),x=n(13476),M=n(68584),N=n(48408);const F=(0,s.n9)()((e=>({compactCheckbox:{padding:0},checkboxLabel:{marginRight:0,"&:hover":{backgroundColor:e.palette.action.selected}},selected:{background:"#cccc"}})));function O({data:e}){const{classes:t}=F(),{checked:n,conf:o,model:a,drawerPosition:r,id:c,trackId:i,name:s,onChange:d,selected:m}=e,u=(0,M.readConfObject)(o,"description");return l.createElement(l.Fragment,null,l.createElement(w.A,{title:u+(m?" (in selection)":""),placement:"left"===r?"right":"left"},l.createElement(W.A,{className:t.checkboxLabel,control:l.createElement(I.A,{className:t.compactCheckbox,checked:n,onChange:()=>{d(i)},disabled:A(s),inputProps:{"data-testid":`htsTrackEntry-${c}`}}),label:l.createElement("div",{"data-testid":`htsTrackLabel-${c}`,style:{background:m?"#cccc":void 0}},l.createElement(x.A,{html:s}))})),l.createElement(N.A,{model:a,trackId:i,id:c,conf:o}))}const L=(0,s.n9)()((e=>({accordionBase:{display:"flex"},accordionCard:{padding:3,cursor:"pointer",display:"flex"},nestingLevelMarker:{position:"absolute",borderLeft:"1.5px solid #555"},accordionColor:{background:e.palette.tertiary.main,color:e.palette.tertiary.contrastText,width:"100%",display:"flex",paddingLeft:5}})));function B({data:e,isOpen:t,style:n,setOpen:o}){const{isLeaf:a,nestingLevel:r}=e,{classes:c}=L(),i=10*r+(a?10:0);return l.createElement("div",{style:n,className:a?void 0:c.accordionBase},new Array(r).fill(0).map(((e,t)=>l.createElement("div",{key:`mark-${t}`,style:{left:10*t+4,height:n?.height},className:c.nestingLevelMarker}))),l.createElement("div",{className:a?void 0:c.accordionCard,style:{marginLeft:i,whiteSpace:"nowrap",width:"100%"}},l.createElement("div",{className:a?void 0:c.accordionColor},a?l.createElement(O,{data:e}):l.createElement(T,{isOpen:t,data:e,setOpen:o}))))}function P(e,t,n,l){const o="track"===e.type;return{data:{defaultHeight:o?22:40,isLeaf:o,isOpenByDefault:!0,nestingLevel:t,selected:!!o&&l[e.trackId],...e,...n},nestingLevel:t,node:e}}const R=(0,o.observer)((function({height:e,tree:t,model:n}){const{filterText:o,selection:a,view:r}=n,c=(0,l.useRef)(null),i=(0,d.getSession)(n),{drawerPosition:s}=i,m=(0,l.useMemo)((()=>Object.fromEntries(a.map((e=>[e.trackId,e])))),[a]),u=(0,l.useMemo)((()=>({onChange:e=>{r.toggleTrack(e)&&n.addToRecentlyUsed(e)},toggleCollapse:e=>{n.toggleCategory(e)},tree:t,model:n,drawerPosition:s})),[r,n,s,t]),g=(0,l.useCallback)((function*(){for(const e of t.children)yield P(e,0,u,m);for(;;){const e=yield;for(const t of e.node.children)yield P(t,e.nestingLevel+1,u,m)}}),[t,u,m]);return(0,l.useEffect)((()=>{c.current.recomputeTree({refreshNodes:!0,useDefaultHeight:!0})}),[t,o]),l.createElement(l.Fragment,null,l.createElement(k.SS,{ref:c,treeWalker:g,height:e},B))}));var H=n(1343),D=n(93117),U=n(31892),j=n(23758),z=n(922);const _=(0,l.lazy)((()=>Promise.all([n.e(8565),n.e(5676),n.e(6157),n.e(399)]).then(n.bind(n,48927)))),$=(0,l.lazy)((()=>n.e(7181).then(n.bind(n,97181)))),V=(0,l.lazy)((()=>n.e(5896).then(n.bind(n,35896)))),Y=(0,l.lazy)((()=>n.e(741).then(n.bind(n,60741)))),q=(0,l.lazy)((()=>n.e(4138).then(n.bind(n,44138)))),G=(0,o.observer)((function({model:e}){const t=(0,d.getSession)(e),[n,o]=(0,l.useState)(),[a,r]=(0,l.useState)(),[c,i]=(0,l.useState)(!1),[s,m]=(0,l.useState)(!1),[u,g]=(0,l.useState)(!1);function k(e,n){const l=(0,M.readConfObject)(e,"name"),a=t.prepareToBreakConnection?.(e);if(a){const[t,n]=a;Object.keys(n).length>0?o({connectionConf:e,safelyBreakConnection:t,dereferenceTypeCount:n,name:l}):t()}n&&r({name:l,connectionConf:e})}return l.createElement(l.Fragment,null,l.createElement(j.A,{menuItems:[{label:"Open faceted track selector",onClick:()=>{g(!0)}},...(0,d.isSessionWithAddTracks)(t)?[{label:"Add track...",onClick:()=>{(0,d.isSessionModelWithWidgets)(t)&&t.showWidget(t.addWidget("AddTrackWidget","addTrackWidget",{view:e.view.id}))}}]:[],{label:"Connections...",subMenu:[...(0,d.isSessionModelWithConnections)(t)?[{label:"Turn on/off connections...",onClick:()=>{i(!0)}}]:[],...(0,d.isSessionModelWithConnectionEditing)(t)?[{label:"Add connection...",onClick:()=>{(0,d.isSessionModelWithWidgets)(t)&&t.showWidget(t.addWidget("AddConnectionWidget","addConnectionWidget"))}},{label:"Delete connections...",onClick:()=>{m(!0)}}]:[]]},{label:"Sort...",type:"subMenu",subMenu:[{label:"Sort tracks by name",type:"checkbox",checked:e.activeSortTrackNames,onClick:()=>{e.setSortTrackNames(!e.activeSortTrackNames)}},{label:"Sort categories by name",type:"checkbox",checked:e.activeSortCategories,onClick:()=>{e.setSortCategories(!e.activeSortCategories)}}]},{label:"Collapse...",type:"subMenu",subMenu:[...e.hasAnySubcategories?[{label:"Collapse subcategories",onClick:()=>{e.collapseSubCategories()}}]:[],{label:"Collapse top-level categories",onClick:()=>{e.collapseTopLevelCategories()}},{label:"Expand all categories",onClick:()=>{e.expandAllCategories()}}]}]},l.createElement(z.A,null)),l.createElement(l.Suspense,{fallback:null},n?l.createElement($,{modalInfo:n,onClose:()=>{o(void 0)}}):null,a?l.createElement(V,{handleClose:()=>{r(void 0)},deleteDialogDetails:a,session:t}):null,s?l.createElement(Y,{handleClose:()=>{m(!1)},breakConnection:k,session:t}):null,c?l.createElement(q,{handleClose:()=>{i(!1)},session:t,breakConnection:k}):null,u?l.createElement(_,{handleClose:()=>{g(!1)},model:e}):null))}));var J=n(9469),K=n(84885),Q=n(1114),X=n(91468);const Z=(0,o.observer)((function({model:e,tracks:t,extraMenuItems:n,children:o,onClick:a}){const{view:r}=e,[c,i]=(0,l.useState)(!1),s=(0,d.getSession)(e);return r?l.createElement(j.A,{closeAfterItemClick:!1,onClick:a,menuItems:[...t.map((t=>({type:"checkbox",label:l.createElement(l.Fragment,null,l.createElement(x.A,{html:(0,X.getTrackName)(t,s)})," ",l.createElement(N.A,{id:t.trackId,trackId:t.trackId,model:e,conf:t,setOpen:i,stopPropagation:!0})),checked:r.tracks.some((e=>e.configuration===t)),onClick:()=>{c||e.view.toggleTrack(t.trackId)&&e.addToRecentlyUsed(t.trackId)}}))),...n]},o):null})),ee=(0,s.n9)()({smallBadge:{height:14},margin:{marginRight:10}}),te=(0,o.observer)((function({model:e}){const{classes:t}=ee(),{view:n,favoriteTracks:o}=e;return n?l.createElement(Z,{onClick:()=>{e.setFavoritesCounter(0)},tracks:o,model:e,extraMenuItems:o.length?[{type:"divider"},{label:"Clear favorites",onClick:()=>{e.clearFavorites()}}]:[{label:"No favorite tracks yet",onClick:()=>{}}]},l.createElement(w.A,{title:"Favorite tracks"},l.createElement(K.A,{classes:{badge:t.smallBadge},color:"secondary",anchorOrigin:{vertical:"bottom",horizontal:"right"},className:t.margin,badgeContent:e.favoritesCounter},l.createElement(Q.A,null)))):null}));var ne=n(69833);const le=(0,s.n9)()({smallBadge:{height:14}}),oe=(0,o.observer)((function({model:e}){const{classes:t}=le(),{view:n,recentlyUsedCounter:o,recentlyUsedTracks:a}=e;return n?l.createElement(Z,{onClick:()=>{e.setRecentlyUsedCounter(0)},model:e,tracks:a,extraMenuItems:a.length?[{type:"divider"},{label:"Clear recently used",onClick:()=>{e.clearRecentlyUsed()}}]:[{label:"No recently used",onClick:()=>{}}]},l.createElement(w.A,{title:"Recently used tracks"},l.createElement(K.A,{classes:{badge:t.smallBadge},anchorOrigin:{vertical:"bottom",horizontal:"right"},color:"secondary",badgeContent:o},l.createElement(ne.A,null)))):null})),ae=(0,s.n9)()((e=>({searchBox:{margin:e.spacing(2)}}))),re=(0,o.observer)((function({model:e}){const{filterText:t}=e,{classes:n}=ae();return l.createElement(H.A,{className:n.searchBox,label:"Filter tracks",value:t,onChange:t=>{e.setFilterText(t.target.value)},fullWidth:!0,InputProps:{endAdornment:l.createElement(D.A,{position:"end"},l.createElement(b.A,{onClick:()=>{e.clearFilterText()}},l.createElement(U.A,null)))}})})),ce=(0,o.observer)((function({model:e,setHeaderHeight:t}){return l.createElement("div",{ref:e=>{t(e?.getBoundingClientRect().height||0)},"data-testid":"hierarchical_track_selector"},l.createElement("div",{style:{display:"flex"}},l.createElement(G,{model:e}),l.createElement(J.A,{model:e}),l.createElement(re,{model:e}),l.createElement(oe,{model:e}),l.createElement(te,{model:e})))})),ie=({tree:e,model:t,offset:n})=>"undefined"==typeof jest?l.createElement(a.Ay,{disableWidth:!0},(o=>l.createElement(R,{height:(o.height||n)-n,model:t,tree:e}))):l.createElement(R,{height:9e3,model:t,tree:e}),se=({overrideDimensions:e,children:t})=>e?l.createElement("div",{style:{...e}},t):t,de=(0,o.observer)((function({model:e,toolbarHeight:t,overrideDimensions:n}){return l.createElement(se,{overrideDimensions:n},l.createElement(me,{model:e,toolbarHeight:t}),l.createElement(g,{model:e}))})),me=(0,o.observer)((function({model:e,toolbarHeight:t=0}){const[n,o]=(0,l.useState)(0);return l.createElement(l.Fragment,null,l.createElement(ce,{model:e,setHeaderHeight:o}),l.createElement(ie,{tree:e.hierarchy,model:e,offset:t+n}))})),ue=de},9469:(e,t,n)=>{n.d(t,{A:()=>s});var l=n(7552),o=n(84885),a=n(68446),r=n(99546),c=n(7215),i=n(23758);const s=(0,a.observer)((function({model:e}){const{selection:t}=e,{pluginManager:n}=(0,r.getEnv)(e),a=(0,r.getSession)(e),s=n.evaluateExtensionPoint("TrackSelector-multiTrackMenuItems",[],{session:a});return t.length?l.createElement(i.A,{menuItems:[{label:"Clear",onClick:()=>{e.clearSelection()}},...s.map((t=>({...t,..."onClick"in t?{onClick:()=>{t.onClick(e)}}:{}})))]},l.createElement(o.A,{badgeContent:t.length,color:"primary"},l.createElement(c.A,null))):null}))},48408:(e,t,n)=>{n.d(t,{A:()=>m});var l=n(7552),o=n(75785),a=n(99546),r=n(23758),c=n(30476),i=n(84181),s=n(1185);const d=(0,o.n9)()({cascadingStyle:{padding:0}}),m=function({id:e,trackId:t,stopPropagation:n,model:o,setOpen:m,conf:u}){const{classes:g}=d();return l.createElement(r.A,{className:g.cascadingStyle,stopPropagation:n,setOpen:m,"data-testid":`htsTrackEntryMenu-${e}`,menuItems:[...(0,a.getSession)(o).getTrackActionMenuItems?.(u)||[],o.isFavorite(t)?{label:"Remove from favorites",onClick:()=>{o.removeFromFavorites(t)},icon:i.A}:{label:"Add to favorites",onClick:()=>{o.addToFavorites(t)},icon:s.A},{label:"Add to selection",onClick:()=>{o.addToSelection([u])}},...o.isSelected(u)?[{label:"Remove from selection",onClick:()=>{o.removeFromSelection([u])}}]:[]]},l.createElement(c.A,null))}}}]);
+//# sourceMappingURL=5331.28d667f0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5331.28d667f0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5331.28d667f0.chunk.js","mappings":"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","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/HierarchicalFab.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/util.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/DropdownTrackSelector.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/FavoriteTracks.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/RecentlyUsedTracks.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/ShoppingCart.tsx","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/tree/TrackLabelMenu.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Fab, Menu, MenuItem } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  getSession,\n  isSessionModelWithWidgets,\n  isSessionModelWithConnections,\n  isSessionWithAddTracks,\n} from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  fab: {\n    position: 'absolute',\n    bottom: theme.spacing(6),\n    right: theme.spacing(6),\n  },\n}))\n\nconst HierarchicalFab = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null)\n\n  function handleFabClose() {\n    setAnchorEl(null)\n  }\n  const hasConnections = isSessionModelWithConnections(session)\n  const hasAddTrack = isSessionWithAddTracks(session)\n  return hasAddTrack || hasConnections ? (\n    <>\n      <Fab\n        color=\"secondary\"\n        className={classes.fab}\n        onClick={event => {\n          setAnchorEl(event.currentTarget)\n        }}\n      >\n        <AddIcon />\n      </Fab>\n      <Menu\n        anchorEl={anchorEl}\n        open={Boolean(anchorEl)}\n        onClose={() => {\n          setAnchorEl(null)\n        }}\n      >\n        {hasConnections ? (\n          <MenuItem\n            onClick={() => {\n              handleFabClose()\n              if (isSessionModelWithWidgets(session)) {\n                session.showWidget(\n                  session.addWidget(\n                    'AddConnectionWidget',\n                    'addConnectionWidget',\n                  ),\n                )\n              }\n            }}\n          >\n            Add connection\n          </MenuItem>\n        ) : null}\n        {hasAddTrack ? (\n          <MenuItem\n            onClick={() => {\n              handleFabClose()\n              if (isSessionModelWithWidgets(session)) {\n                session.showWidget(\n                  session.addWidget('AddTrackWidget', 'addTrackWidget', {\n                    view: model.view.id,\n                  }),\n                )\n              }\n            }}\n          >\n            Add track\n          </MenuItem>\n        ) : null}\n      </Menu>\n    </>\n  ) : null\n})\n\nexport default HierarchicalFab\n","import { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { HierarchicalTrackSelectorModel } from '../model'\nimport { TreeNode } from '../generateHierarchy'\nimport { MenuItem } from '@jbrowse/core/ui'\n\nexport interface NodeData {\n  nestingLevel: number\n  checked: boolean\n  conf: AnyConfigurationModel\n  drawerPosition: unknown\n  id: string\n  trackId: string\n  isLeaf: boolean\n  name: string\n  onChange: (trackId: string) => void\n  toggleCollapse: (arg: string) => void\n  tree: TreeNode\n  selected: boolean\n  menuItems?: MenuItem[]\n  model: HierarchicalTrackSelectorModel\n}\n\nexport function getAllChildren(subtree?: TreeNode): AnyConfigurationModel[] {\n  // @ts-expect-error\n  return subtree?.type === 'category'\n    ? subtree.children\n        .map(t => (t.type === 'category' ? getAllChildren(t) : t.conf))\n        .flat(Number.POSITIVE_INFINITY)\n    : []\n}\n\nexport function treeToMap(tree: TreeNode, map = new Map<string, TreeNode>()) {\n  if (tree.id && tree.children.length) {\n    map.set(tree.id, tree)\n  }\n  for (const node of tree.children) {\n    treeToMap(node, map)\n  }\n  return map\n}\n\nexport function isUnsupported(name = '') {\n  return name.endsWith('(Unsupported)') || name.endsWith('(Unknown)')\n}\n","import React, { useState } from 'react'\nimport { IconButton, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport JBrowseMenu from '@jbrowse/core/ui/Menu'\n\n// icons\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight'\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz'\n\n// locals\nimport { getAllChildren, treeToMap, NodeData } from '../util'\n\nconst useStyles = makeStyles()(theme => ({\n  contrastColor: {\n    color: theme.palette.tertiary.contrastText,\n  },\n\n  // margin:auto 0 to center text vertically\n  accordionText: {\n    margin: 'auto 0',\n    // width 100 so you can click anywhere on the category bar\n    width: '100%',\n  },\n}))\n\nexport default function Category({\n  isOpen,\n  setOpen,\n  data,\n}: {\n  isOpen: boolean\n  setOpen: (arg: boolean) => void\n  data: NodeData\n}) {\n  const { classes } = useStyles()\n  const [menuEl, setMenuEl] = useState<HTMLElement | null>(null)\n  const { menuItems = [], name, model, id, tree } = data\n\n  return (\n    <div\n      className={classes.accordionText}\n      onClick={() => {\n        if (!menuEl) {\n          data.toggleCollapse(id)\n          setOpen(!isOpen)\n        }\n      }}\n    >\n      <Typography data-testid={`htsCategory-${name}`}>\n        {isOpen ? <ArrowDropDownIcon /> : <ArrowRightIcon />}\n        {name}\n        <IconButton\n          onClick={event => {\n            setMenuEl(event.currentTarget)\n            event.stopPropagation()\n          }}\n          className={classes.contrastColor}\n        >\n          <MoreHorizIcon />\n        </IconButton>\n      </Typography>\n      {menuEl ? (\n        <JBrowseMenu\n          anchorEl={menuEl}\n          menuItems={[\n            {\n              label: 'Add to selection',\n              onClick: () => {\n                const r = treeToMap(tree).get(id)\n                model.addToSelection(getAllChildren(r))\n              },\n            },\n            {\n              label: 'Remove from selection',\n              onClick: () => {\n                const r = treeToMap(tree).get(id)\n                model.removeFromSelection(getAllChildren(r))\n              },\n            },\n            {\n              label: 'Show all tracks',\n              onClick: () => {\n                for (const entry of treeToMap(tree).get(id)?.children || []) {\n                  if (entry.type === 'track') {\n                    model.view.showTrack(entry.trackId)\n                  }\n                }\n              },\n            },\n            {\n              label: 'Hide all tracks',\n              onClick: () => {\n                for (const entry of treeToMap(tree).get(id)?.children || []) {\n                  if (entry.type === 'track') {\n                    model.view.hideTrack(entry.trackId)\n                  }\n                }\n              },\n            },\n            ...menuItems,\n          ]}\n          onMenuItemClick={(_event, callback) => {\n            callback()\n            setMenuEl(null)\n          }}\n          open={Boolean(menuEl)}\n          onClose={() => {\n            setMenuEl(null)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n}\n","import React from 'react'\nimport { Checkbox, FormControlLabel, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\n// locals\nimport { isUnsupported, NodeData } from '../util'\nimport TrackLabelMenu from './TrackLabelMenu'\n\nconst useStyles = makeStyles()(theme => ({\n  compactCheckbox: {\n    padding: 0,\n  },\n\n  checkboxLabel: {\n    marginRight: 0,\n    '&:hover': {\n      backgroundColor: theme.palette.action.selected,\n    },\n  },\n  selected: {\n    background: '#cccc',\n  },\n}))\n\nexport interface InfoArgs {\n  target: HTMLElement\n  id: string\n  conf: AnyConfigurationModel\n}\n\nexport default function TrackLabel({ data }: { data: NodeData }) {\n  const { classes } = useStyles()\n  const {\n    checked,\n    conf,\n    model,\n    drawerPosition,\n    id,\n    trackId,\n    name,\n    onChange,\n    selected,\n  } = data\n  const description = readConfObject(conf, 'description')\n  return (\n    <>\n      <Tooltip\n        title={description + (selected ? ' (in selection)' : '')}\n        placement={drawerPosition === 'left' ? 'right' : 'left'}\n      >\n        <FormControlLabel\n          className={classes.checkboxLabel}\n          control={\n            <Checkbox\n              className={classes.compactCheckbox}\n              checked={checked}\n              onChange={() => {\n                onChange(trackId)\n              }}\n              disabled={isUnsupported(name)}\n              inputProps={{\n                // @ts-expect-error\n                'data-testid': `htsTrackEntry-${id}`,\n              }}\n            />\n          }\n          label={\n            <div\n              data-testid={`htsTrackLabel-${id}`}\n              style={{ background: selected ? '#cccc' : undefined }}\n            >\n              <SanitizedHTML html={name} />\n            </div>\n          }\n        />\n      </Tooltip>\n      <TrackLabelMenu model={model} trackId={trackId} id={id} conf={conf} />\n    </>\n  )\n}\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport Category from './TrackCategory'\nimport TrackLabel from './TrackLabel'\nimport { NodeData } from '../util'\n\nconst useStyles = makeStyles()(theme => ({\n  // this accordionBase element's small padding is used to give a margin to\n  // accordionColor it a \"margin\" because the virtualized elements can't really\n  // use margin in a conventional way (it doesn't affect layout)\n  accordionBase: {\n    display: 'flex',\n  },\n\n  accordionCard: {\n    padding: 3,\n    cursor: 'pointer',\n    display: 'flex',\n  },\n\n  nestingLevelMarker: {\n    position: 'absolute',\n    borderLeft: '1.5px solid #555',\n  },\n  // accordionColor set's display:flex so that the child accordionText use\n  // vertically centered text\n  accordionColor: {\n    background: theme.palette.tertiary.main,\n    color: theme.palette.tertiary.contrastText,\n    width: '100%',\n    display: 'flex',\n    paddingLeft: 5,\n  },\n}))\n\n// An individual node in the track selector. Note: manually sets cursor:\n// pointer improves usability for what can be clicked\nexport default function Node({\n  data,\n  isOpen,\n  style,\n  setOpen,\n}: {\n  data: NodeData\n  isOpen: boolean\n  style?: { height: number }\n  setOpen: (arg: boolean) => void\n}) {\n  const { isLeaf, nestingLevel } = data\n\n  const { classes } = useStyles()\n  const width = 10\n  const marginLeft = nestingLevel * width + (isLeaf ? width : 0)\n\n  return (\n    <div style={style} className={!isLeaf ? classes.accordionBase : undefined}>\n      {new Array(nestingLevel).fill(0).map((_, idx) => (\n        <div\n          /* biome-ignore lint/suspicious/noArrayIndexKey: */\n          key={`mark-${idx}`}\n          style={{ left: idx * width + 4, height: style?.height }}\n          className={classes.nestingLevelMarker}\n        />\n      ))}\n      <div\n        className={!isLeaf ? classes.accordionCard : undefined}\n        style={{\n          marginLeft,\n          whiteSpace: 'nowrap',\n          width: '100%',\n        }}\n      >\n        <div className={!isLeaf ? classes.accordionColor : undefined}>\n          {!isLeaf ? (\n            <Category isOpen={isOpen} data={data} setOpen={setOpen} />\n          ) : (\n            <TrackLabel data={data} />\n          )}\n        </div>\n      </div>\n    </div>\n  )\n}\n","import React, { useCallback, useMemo, useRef, useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport { VariableSizeTree } from 'react-vtree'\nimport { getSession } from '@jbrowse/core/util'\n// locals\nimport { TreeNode } from '../../generateHierarchy'\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport Node from './TrackListNode'\n\nfunction getNodeData(\n  node: TreeNode,\n  nestingLevel: number,\n  extra: Record<string, unknown>,\n  selection: Record<string, unknown>,\n) {\n  const isLeaf = node.type === 'track'\n  const selected = isLeaf ? selection[node.trackId] : false\n  return {\n    data: {\n      defaultHeight: isLeaf ? 22 : 40,\n      isLeaf,\n      isOpenByDefault: true,\n      nestingLevel,\n      selected,\n      ...node,\n      ...extra,\n    },\n    nestingLevel,\n    node,\n  }\n}\n\ntype NodeData = ReturnType<typeof getNodeData>\n\n// this is the main tree component for the hierarchical track selector in note:\n// in jbrowse-web the toolbar is position=\"sticky\" which means the autosizer\n// includes the height of the toolbar, so we subtract the given offsets\nconst HierarchicalTree = observer(function HierarchicalTree({\n  height,\n  tree,\n  model,\n}: {\n  height: number\n  tree: TreeNode\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { filterText, selection, view } = model\n  const treeRef = useRef<NodeData>(null)\n  const session = getSession(model)\n  const { drawerPosition } = session\n  const obj = useMemo(\n    () => Object.fromEntries(selection.map(s => [s.trackId, s])),\n    [selection],\n  )\n\n  const extra = useMemo(\n    () => ({\n      onChange: (trackId: string) => {\n        const trackTurnedOn = view.toggleTrack(trackId)\n        if (trackTurnedOn) {\n          model.addToRecentlyUsed(trackId)\n        }\n      },\n      toggleCollapse: (pathName: string) => {\n        model.toggleCategory(pathName)\n      },\n      tree,\n      model,\n      drawerPosition,\n    }),\n    [view, model, drawerPosition, tree],\n  )\n\n  // doing this properly without ts-expect-error is tricky, react-vtree has\n  // some typescript examples that could help\n  const treeWalker = useCallback(\n    // @ts-expect-error\n    function* treeWalker() {\n      for (const child of tree.children) {\n        yield getNodeData(child, 0, extra, obj)\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      while (true) {\n        // @ts-expect-error\n        const parentMeta = yield\n\n        // @ts-expect-error\n        for (const curr of parentMeta.node.children) {\n          yield getNodeData(curr, parentMeta.nestingLevel + 1, extra, obj)\n        }\n      }\n    },\n    [tree, extra, obj],\n  )\n\n  /* biome-ignore lint/correctness/useExhaustiveDependencies: */\n  useEffect(() => {\n    // @ts-expect-error\n    treeRef.current.recomputeTree({\n      refreshNodes: true,\n      useDefaultHeight: true,\n    })\n  }, [tree, filterText])\n  return (\n    <>\n      {/* @ts-expect-error */}\n      <VariableSizeTree ref={treeRef} treeWalker={treeWalker} height={height}>\n        {/* @ts-expect-error */}\n        {Node}\n      </VariableSizeTree>\n    </>\n  )\n})\n\nexport default HierarchicalTree\n","import React, { Suspense, lazy, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  getSession,\n  isSessionModelWithConnectionEditing,\n  isSessionModelWithConnections,\n  isSessionModelWithWidgets,\n  isSessionWithAddTracks,\n} from '@jbrowse/core/util'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// icons\nimport MenuIcon from '@mui/icons-material/Menu'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\n\n// lazies\nconst FacetedDialog = lazy(() => import('../faceted/FacetedDialog'))\n\n// lazy components\nconst CloseConnectionDialog = lazy(\n  () => import('../dialogs/CloseConnectionDialog'),\n)\nconst DeleteConnectionDialog = lazy(\n  () => import('../dialogs/DeleteConnectionDialog'),\n)\nconst ManageConnectionsDialog = lazy(\n  () => import('../dialogs/ManageConnectionsDialog'),\n)\nconst ToggleConnectionsDialog = lazy(\n  () => import('../dialogs/ToggleConnectionsDialog'),\n)\n\ninterface ModalArgs {\n  connectionConf: AnyConfigurationModel\n  safelyBreakConnection: () => void\n  dereferenceTypeCount: Record<string, number>\n  name: string\n}\n\ninterface DialogDetails {\n  name: string\n  connectionConf: AnyConfigurationModel\n}\n\nconst HamburgerMenu = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const session = getSession(model)\n  const [modalInfo, setModalInfo] = useState<ModalArgs>()\n  const [deleteDialogDetails, setDeleteDialogDetails] =\n    useState<DialogDetails>()\n  const [connectionToggleOpen, setConnectionToggleOpen] = useState(false)\n  const [connectionManagerOpen, setConnectionManagerOpen] = useState(false)\n  const [facetedOpen, setFacetedOpen] = useState(false)\n\n  function breakConnection(\n    connectionConf: AnyConfigurationModel,\n    deletingConnection?: boolean,\n  ) {\n    const name = readConfObject(connectionConf, 'name')\n    const result = session.prepareToBreakConnection?.(connectionConf)\n    if (result) {\n      const [safelyBreakConnection, dereferenceTypeCount] = result\n      if (Object.keys(dereferenceTypeCount).length > 0) {\n        setModalInfo({\n          connectionConf,\n          safelyBreakConnection,\n          dereferenceTypeCount,\n          name,\n        })\n      } else {\n        safelyBreakConnection()\n      }\n    }\n    if (deletingConnection) {\n      setDeleteDialogDetails({ name, connectionConf })\n    }\n  }\n\n  return (\n    <>\n      <CascadingMenuButton\n        menuItems={[\n          {\n            label: 'Open faceted track selector',\n            onClick: () => {\n              setFacetedOpen(true)\n            },\n          },\n          ...(isSessionWithAddTracks(session)\n            ? [\n                {\n                  label: 'Add track...',\n                  onClick: () => {\n                    if (isSessionModelWithWidgets(session)) {\n                      session.showWidget(\n                        session.addWidget('AddTrackWidget', 'addTrackWidget', {\n                          view: model.view.id,\n                        }),\n                      )\n                    }\n                  },\n                },\n              ]\n            : []),\n          {\n            label: 'Connections...',\n            subMenu: [\n              ...(isSessionModelWithConnections(session)\n                ? [\n                    {\n                      label: 'Turn on/off connections...',\n                      onClick: () => {\n                        setConnectionToggleOpen(true)\n                      },\n                    },\n                  ]\n                : []),\n              ...(isSessionModelWithConnectionEditing(session)\n                ? [\n                    {\n                      label: 'Add connection...',\n                      onClick: () => {\n                        if (isSessionModelWithWidgets(session)) {\n                          session.showWidget(\n                            session.addWidget(\n                              'AddConnectionWidget',\n                              'addConnectionWidget',\n                            ),\n                          )\n                        }\n                      },\n                    },\n                    {\n                      label: 'Delete connections...',\n                      onClick: () => {\n                        setConnectionManagerOpen(true)\n                      },\n                    },\n                  ]\n                : []),\n            ],\n          },\n          {\n            label: 'Sort...',\n            type: 'subMenu',\n            subMenu: [\n              {\n                label: 'Sort tracks by name',\n                type: 'checkbox',\n                checked: model.activeSortTrackNames,\n                onClick: () => {\n                  model.setSortTrackNames(!model.activeSortTrackNames)\n                },\n              },\n              {\n                label: 'Sort categories by name',\n                type: 'checkbox',\n                checked: model.activeSortCategories,\n                onClick: () => {\n                  model.setSortCategories(!model.activeSortCategories)\n                },\n              },\n            ],\n          },\n          {\n            label: 'Collapse...',\n            type: 'subMenu',\n            subMenu: [\n              ...(model.hasAnySubcategories\n                ? [\n                    {\n                      label: 'Collapse subcategories',\n                      onClick: () => {\n                        model.collapseSubCategories()\n                      },\n                    },\n                  ]\n                : []),\n              {\n                label: 'Collapse top-level categories',\n                onClick: () => {\n                  model.collapseTopLevelCategories()\n                },\n              },\n              {\n                label: 'Expand all categories',\n                onClick: () => {\n                  model.expandAllCategories()\n                },\n              },\n            ],\n          },\n        ]}\n      >\n        <MenuIcon />\n      </CascadingMenuButton>\n      <Suspense fallback={null}>\n        {modalInfo ? (\n          <CloseConnectionDialog\n            modalInfo={modalInfo}\n            onClose={() => {\n              setModalInfo(undefined)\n            }}\n          />\n        ) : null}\n        {deleteDialogDetails ? (\n          <DeleteConnectionDialog\n            handleClose={() => {\n              setDeleteDialogDetails(undefined)\n            }}\n            deleteDialogDetails={deleteDialogDetails}\n            session={session}\n          />\n        ) : null}\n        {connectionManagerOpen ? (\n          <ManageConnectionsDialog\n            handleClose={() => {\n              setConnectionManagerOpen(false)\n            }}\n            breakConnection={breakConnection}\n            session={session}\n          />\n        ) : null}\n        {connectionToggleOpen ? (\n          <ToggleConnectionsDialog\n            handleClose={() => {\n              setConnectionToggleOpen(false)\n            }}\n            session={session}\n            breakConnection={breakConnection}\n          />\n        ) : null}\n\n        {facetedOpen ? (\n          <FacetedDialog\n            handleClose={() => {\n              setFacetedOpen(false)\n            }}\n            model={model}\n          />\n        ) : null}\n      </Suspense>\n    </>\n  )\n})\n\nexport default HamburgerMenu\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui/Menu'\nimport SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { getSession } from '@jbrowse/core/util'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport TrackLabelMenu from './TrackLabelMenu'\n\nconst DropdownTrackSelector = observer(function ({\n  model,\n  tracks,\n  extraMenuItems,\n  children,\n  onClick,\n}: {\n  model: HierarchicalTrackSelectorModel\n  tracks: AnyConfigurationModel[]\n  extraMenuItems: MenuItem[]\n  onClick?: () => void\n  children: React.ReactElement\n}) {\n  const { view } = model\n  const [open, setOpen] = useState(false)\n  const session = getSession(model)\n  return view ? (\n    <CascadingMenuButton\n      closeAfterItemClick={false}\n      onClick={onClick}\n      menuItems={[\n        ...tracks.map(t => ({\n          type: 'checkbox' as const,\n          label: (\n            <>\n              <SanitizedHTML html={getTrackName(t, session)} />{' '}\n              <TrackLabelMenu\n                id={t.trackId}\n                trackId={t.trackId}\n                model={model}\n                conf={t}\n                setOpen={setOpen}\n                stopPropagation\n              />\n            </>\n          ),\n          checked: view.tracks.some(\n            (f: { configuration: AnyConfigurationModel }) =>\n              f.configuration === t,\n          ),\n          onClick: () => {\n            if (!open) {\n              if (model.view.toggleTrack(t.trackId)) {\n                model.addToRecentlyUsed(t.trackId)\n              }\n            }\n          },\n        })),\n        ...extraMenuItems,\n      ]}\n    >\n      {children}\n    </CascadingMenuButton>\n  ) : null\n})\n\nexport default DropdownTrackSelector\n","import React from 'react'\nimport { Badge, Tooltip } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport GradeIcon from '@mui/icons-material/Grade'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport DropdownTrackSelector from './DropdownTrackSelector'\n\nconst useStyles = makeStyles()({\n  smallBadge: {\n    height: 14,\n  },\n  margin: {\n    marginRight: 10,\n  },\n})\nconst FavoriteTracks = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  const { view, favoriteTracks } = model\n  return view ? (\n    <DropdownTrackSelector\n      onClick={() => {\n        model.setFavoritesCounter(0)\n      }}\n      tracks={favoriteTracks}\n      model={model}\n      extraMenuItems={\n        favoriteTracks.length\n          ? [\n              { type: 'divider' as const },\n              {\n                label: 'Clear favorites',\n                onClick: () => {\n                  model.clearFavorites()\n                },\n              },\n            ]\n          : [\n              {\n                label: 'No favorite tracks yet',\n                onClick: () => {},\n              },\n            ]\n      }\n    >\n      <Tooltip title=\"Favorite tracks\">\n        <Badge\n          classes={{ badge: classes.smallBadge }}\n          color=\"secondary\"\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right',\n          }}\n          className={classes.margin}\n          badgeContent={model.favoritesCounter}\n        >\n          <GradeIcon />\n        </Badge>\n      </Tooltip>\n    </DropdownTrackSelector>\n  ) : null\n})\n\nexport default FavoriteTracks\n","import React from 'react'\nimport { Badge, Tooltip } from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// icons\nimport HistoryIcon from '@mui/icons-material/History'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport DropdownTrackSelector from './DropdownTrackSelector'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  smallBadge: {\n    height: 14,\n  },\n})\n\nconst RecentlyUsedTracks = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  const { view, recentlyUsedCounter, recentlyUsedTracks } = model\n  return view ? (\n    <DropdownTrackSelector\n      onClick={() => {\n        model.setRecentlyUsedCounter(0)\n      }}\n      model={model}\n      tracks={recentlyUsedTracks}\n      extraMenuItems={\n        recentlyUsedTracks.length\n          ? [\n              { type: 'divider' as const },\n              {\n                label: 'Clear recently used',\n                onClick: () => {\n                  model.clearRecentlyUsed()\n                },\n              },\n            ]\n          : [\n              {\n                label: 'No recently used',\n                onClick: () => {},\n              },\n            ]\n      }\n    >\n      <Tooltip title=\"Recently used tracks\">\n        <Badge\n          classes={{ badge: classes.smallBadge }}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right',\n          }}\n          color=\"secondary\"\n          badgeContent={recentlyUsedCounter}\n        >\n          <HistoryIcon />\n        </Badge>\n      </Tooltip>\n    </DropdownTrackSelector>\n  ) : null\n})\n\nexport default RecentlyUsedTracks\n","import React from 'react'\nimport { IconButton, InputAdornment, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// icons\nimport ClearIcon from '@mui/icons-material/Clear'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\nimport HamburgerMenu from './HamburgerMenu'\nimport ShoppingCart from '../ShoppingCart'\nimport FavoriteTracks from './FavoriteTracks'\nimport RecentlyUsedTracks from './RecentlyUsedTracks'\n\nconst useStyles = makeStyles()(theme => ({\n  searchBox: {\n    margin: theme.spacing(2),\n  },\n}))\n\nconst SearchTracksTextField = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { filterText } = model\n  const { classes } = useStyles()\n  return (\n    <TextField\n      className={classes.searchBox}\n      label=\"Filter tracks\"\n      value={filterText}\n      onChange={event => {\n        model.setFilterText(event.target.value)\n      }}\n      fullWidth\n      InputProps={{\n        endAdornment: (\n          <InputAdornment position=\"end\">\n            <IconButton\n              onClick={() => {\n                model.clearFilterText()\n              }}\n            >\n              <ClearIcon />\n            </IconButton>\n          </InputAdornment>\n        ),\n      }}\n    />\n  )\n})\n\nconst HierarchicalTrackSelectorHeader = observer(function ({\n  model,\n  setHeaderHeight,\n}: {\n  model: HierarchicalTrackSelectorModel\n  setHeaderHeight: (n: number) => void\n}) {\n  return (\n    <div\n      ref={ref => {\n        setHeaderHeight(ref?.getBoundingClientRect().height || 0)\n      }}\n      data-testid=\"hierarchical_track_selector\"\n    >\n      <div style={{ display: 'flex' }}>\n        <HamburgerMenu model={model} />\n        <ShoppingCart model={model} />\n        <SearchTracksTextField model={model} />\n        <RecentlyUsedTracks model={model} />\n        <FavoriteTracks model={model} />\n      </div>\n    </div>\n  )\n})\n\nexport default HierarchicalTrackSelectorHeader\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport AutoSizer from 'react-virtualized-auto-sizer'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../model'\nimport { TreeNode } from '../generateHierarchy'\nimport HierarchicalFab from './HierarchicalFab'\nimport HierarchicalTree from './tree/HierarchicalTree'\nimport HierarchicalHeader from './tree/HierarchicalHeader'\n\n// Don't use autosizer in jest and instead hardcode a height, otherwise fails\n// jest tests\nconst AutoSizedHierarchicalTree = ({\n  tree,\n  model,\n  offset,\n}: {\n  tree: TreeNode\n  model: HierarchicalTrackSelectorModel\n  offset: number\n}) => {\n  return typeof jest === 'undefined' ? (\n    <AutoSizer disableWidth>\n      {args => (\n        <HierarchicalTree\n          height={(args.height || offset) - offset}\n          model={model}\n          tree={tree}\n        />\n      )}\n    </AutoSizer>\n  ) : (\n    <HierarchicalTree height={9000} model={model} tree={tree} />\n  )\n}\n\nconst Wrapper = ({\n  overrideDimensions,\n  children,\n}: {\n  overrideDimensions?: { width: number; height: number }\n  children: React.ReactNode\n}) => {\n  return overrideDimensions ? (\n    <div style={{ ...overrideDimensions }}>{children}</div>\n  ) : (\n    children\n  )\n}\nconst HierarchicalTrackSelectorContainer = observer(function ({\n  model,\n  toolbarHeight,\n  overrideDimensions,\n}: {\n  model: HierarchicalTrackSelectorModel\n  toolbarHeight: number\n  overrideDimensions?: { width: number; height: number }\n}) {\n  return (\n    <Wrapper overrideDimensions={overrideDimensions}>\n      <HierarchicalTrackSelector model={model} toolbarHeight={toolbarHeight} />\n      <HierarchicalFab model={model} />\n    </Wrapper>\n  )\n})\n\nconst HierarchicalTrackSelector = observer(function ({\n  model,\n  toolbarHeight = 0,\n}: {\n  model: HierarchicalTrackSelectorModel\n  toolbarHeight?: number\n}) {\n  const [headerHeight, setHeaderHeight] = useState(0)\n  return (\n    <>\n      <HierarchicalHeader model={model} setHeaderHeight={setHeaderHeight} />\n      <AutoSizedHierarchicalTree\n        tree={model.hierarchy}\n        model={model}\n        offset={toolbarHeight + headerHeight}\n      />\n    </>\n  )\n})\n\nexport default HierarchicalTrackSelectorContainer\n","import React from 'react'\nimport { Badge } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { MenuItem } from '@jbrowse/core/ui/Menu'\nimport { getSession, getEnv } from '@jbrowse/core/util'\n\n// icons\nimport ShoppingCartIcon from '@mui/icons-material/ShoppingCart'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../model'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\nconst ShoppingCart = observer(function ({\n  model,\n}: {\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { selection } = model\n  const { pluginManager } = getEnv(model)\n  const session = getSession(model)\n  const items = pluginManager.evaluateExtensionPoint(\n    'TrackSelector-multiTrackMenuItems',\n    [],\n    { session },\n  ) as MenuItem[]\n\n  return selection.length ? (\n    <CascadingMenuButton\n      menuItems={[\n        {\n          label: 'Clear',\n          onClick: () => {\n            model.clearSelection()\n          },\n        },\n        ...items.map(item => ({\n          ...item,\n          ...('onClick' in item\n            ? {\n                onClick: () => {\n                  item.onClick(model)\n                },\n              }\n            : {}),\n        })),\n      ]}\n    >\n      <Badge badgeContent={selection.length} color=\"primary\">\n        <ShoppingCartIcon />\n      </Badge>\n    </CascadingMenuButton>\n  ) : null\n})\n\nexport default ShoppingCart\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// icons\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz'\nimport StarIcon from '@mui/icons-material/StarBorderOutlined'\nimport FilledStarIcon from '@mui/icons-material/Star'\n\n// locals\nimport { HierarchicalTrackSelectorModel } from '../../model'\n\nconst useStyles = makeStyles()({\n  cascadingStyle: {\n    padding: 0,\n  },\n})\n\nconst TrackLabelMenu = function ({\n  id,\n  trackId,\n  stopPropagation,\n  model,\n  setOpen,\n  conf,\n}: {\n  id: string\n  trackId: string\n  stopPropagation?: boolean\n  conf: AnyConfigurationModel\n  setOpen?: (arg: boolean) => void\n  model: HierarchicalTrackSelectorModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <CascadingMenuButton\n      className={classes.cascadingStyle}\n      stopPropagation={stopPropagation}\n      setOpen={setOpen}\n      data-testid={`htsTrackEntryMenu-${id}`}\n      menuItems={[\n        ...(getSession(model).getTrackActionMenuItems?.(conf) || []),\n        model.isFavorite(trackId)\n          ? {\n              label: 'Remove from favorites',\n              onClick: () => {\n                model.removeFromFavorites(trackId)\n              },\n              icon: StarIcon,\n            }\n          : {\n              label: 'Add to favorites',\n              onClick: () => {\n                model.addToFavorites(trackId)\n              },\n              icon: FilledStarIcon,\n            },\n        {\n          label: 'Add to selection',\n          onClick: () => {\n            model.addToSelection([conf])\n          },\n        },\n        ...(model.isSelected(conf)\n          ? [\n              {\n                label: 'Remove from selection',\n                onClick: () => {\n                  model.removeFromSelection([conf])\n                },\n              },\n            ]\n          : []),\n      ]}\n    >\n      <MoreHorizIcon />\n    </CascadingMenuButton>\n  )\n}\n\nexport default TrackLabelMenu\n"],"names":["useStyles","makeStyles","theme","fab","position","bottom","spacing","right","observer","model","classes","session","getSession","anchorEl","setAnchorEl","useState","handleFabClose","hasConnections","isSessionModelWithConnections","hasAddTrack","isSessionWithAddTracks","React","Fab","color","className","onClick","event","currentTarget","AddIcon","Menu","open","Boolean","onClose","MenuItem","isSessionModelWithWidgets","showWidget","addWidget","view","id","getAllChildren","subtree","type","children","map","t","conf","flat","Number","POSITIVE_INFINITY","treeToMap","tree","Map","length","set","node","isUnsupported","name","endsWith","contrastColor","palette","tertiary","contrastText","accordionText","margin","width","Category","isOpen","setOpen","data","menuEl","setMenuEl","menuItems","toggleCollapse","Typography","ArrowDropDownIcon","ArrowRightIcon","IconButton","stopPropagation","MoreHorizIcon","JBrowseMenu","label","r","get","addToSelection","removeFromSelection","entry","showTrack","trackId","hideTrack","onMenuItemClick","_event","callback","compactCheckbox","padding","checkboxLabel","marginRight","backgroundColor","action","selected","background","TrackLabel","checked","drawerPosition","onChange","description","readConfObject","Tooltip","title","placement","FormControlLabel","control","Checkbox","disabled","inputProps","style","undefined","SanitizedHTML","html","TrackLabelMenu","accordionBase","display","accordionCard","cursor","nestingLevelMarker","borderLeft","accordionColor","main","paddingLeft","Node","isLeaf","nestingLevel","marginLeft","Array","fill","_","idx","key","left","height","whiteSpace","getNodeData","extra","selection","defaultHeight","isOpenByDefault","filterText","treeRef","useRef","obj","useMemo","Object","fromEntries","s","toggleTrack","addToRecentlyUsed","pathName","toggleCategory","treeWalker","useCallback","child","parentMeta","curr","useEffect","current","recomputeTree","refreshNodes","useDefaultHeight","VariableSizeTree","ref","FacetedDialog","lazy","CloseConnectionDialog","DeleteConnectionDialog","ManageConnectionsDialog","ToggleConnectionsDialog","modalInfo","setModalInfo","deleteDialogDetails","setDeleteDialogDetails","connectionToggleOpen","setConnectionToggleOpen","connectionManagerOpen","setConnectionManagerOpen","facetedOpen","setFacetedOpen","breakConnection","connectionConf","deletingConnection","result","prepareToBreakConnection","safelyBreakConnection","dereferenceTypeCount","keys","CascadingMenuButton","subMenu","isSessionModelWithConnectionEditing","activeSortTrackNames","setSortTrackNames","activeSortCategories","setSortCategories","hasAnySubcategories","collapseSubCategories","collapseTopLevelCategories","expandAllCategories","MenuIcon","Suspense","fallback","handleClose","tracks","extraMenuItems","closeAfterItemClick","getTrackName","some","f","configuration","smallBadge","favoriteTracks","DropdownTrackSelector","setFavoritesCounter","clearFavorites","Badge","badge","anchorOrigin","vertical","horizontal","badgeContent","favoritesCounter","GradeIcon","recentlyUsedCounter","recentlyUsedTracks","setRecentlyUsedCounter","clearRecentlyUsed","HistoryIcon","searchBox","SearchTracksTextField","TextField","value","setFilterText","target","fullWidth","InputProps","endAdornment","InputAdornment","clearFilterText","ClearIcon","setHeaderHeight","getBoundingClientRect","HamburgerMenu","ShoppingCart","RecentlyUsedTracks","FavoriteTracks","AutoSizedHierarchicalTree","offset","jest","AutoSizer","disableWidth","args","HierarchicalTree","Wrapper","overrideDimensions","HierarchicalTrackSelectorContainer","toolbarHeight","HierarchicalTrackSelector","HierarchicalFab","headerHeight","HierarchicalHeader","hierarchy","pluginManager","getEnv","items","evaluateExtensionPoint","clearSelection","item","ShoppingCartIcon","cascadingStyle","getTrackActionMenuItems","isFavorite","removeFromFavorites","icon","StarIcon","addToFavorites","FilledStarIcon","isSelected"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5369.993afa3f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5369],{55369:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var n=a(7552),r=a(68446),l=a(29499),i=a(36715),o=a(1343),c=a(33371),s=a(32808),u=a(58507),h=a(5401),g=a(49823);const m=(0,r.observer)((function(e){const{model:t,handleClose:a}=e,{featureHeightSetting:r,noSpacing:m}=t,[b,d]=(0,n.useState)(`${r}`),[p,v]=(0,n.useState)(m),w=""!==b&&!Number.isNaN(+b);return n.createElement(g.Dialog,{open:!0,onClose:a,title:"Set feature height"},n.createElement(l.A,null,n.createElement(i.A,null,"Adjust the feature height and whether there is any spacing between features. Setting feature height to 1 and removing spacing makes the display very compact."),n.createElement(o.A,{value:b,helperText:"Feature height",onChange:e=>{d(e.target.value)}}),n.createElement(c.A,{control:n.createElement(s.A,{checked:!!p,onChange:()=>{v((e=>!e))}}),label:"Remove spacing between features in y-direction?"}),n.createElement(u.A,null,n.createElement(h.A,{variant:"contained",color:"primary",type:"submit",autoFocus:!0,disabled:!w,onClick:()=>{t.setFeatureHeight(""===b||Number.isNaN(+b)?void 0:+b),t.setNoSpacing(p),a()}},"Submit"),n.createElement(h.A,{variant:"contained",color:"secondary",onClick:()=>{a()}},"Cancel"))))}))}}]);
+//# sourceMappingURL=5369.993afa3f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5369.993afa3f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5369.993afa3f.chunk.js","mappings":"sQAaA,MA0EA,GA1E+BA,EAAAA,EAAAA,WAAS,SAAUC,GAShD,MAAM,MAAEC,EAAK,YAAEC,GAAgBF,GACzB,qBAAEG,EAAsBC,UAAWC,GAAqBJ,GACvDK,EAAQC,IAAaC,EAAAA,EAAAA,UAAS,GAAGL,MACjCC,EAAWK,IAAgBD,EAAAA,EAAAA,UAASH,GAErCK,EAAgB,KAAXJ,IAAkBK,OAAOC,OAAON,GAE3C,OACEO,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASd,EAAae,MAAM,sBACvCJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAU,KAAC,iKAKZN,EAAAA,cAACO,EAAAA,EAAS,CACRC,MAAOf,EACPgB,WAAW,iBACXC,SAAUC,IACRjB,EAAUiB,EAAMC,OAAOJ,MAAM,IAGjCR,EAAAA,cAACa,EAAAA,EAAgB,CACfC,QACEd,EAAAA,cAACe,EAAAA,EAAQ,CACPC,UAAWzB,EACXmB,SAAUA,KACRd,GAAaqB,IAAQA,GAAI,IAI/BC,MAAM,oDAERlB,EAAAA,cAACmB,EAAAA,EAAa,KACZnB,EAAAA,cAACoB,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,UACNC,KAAK,SACLC,WAAS,EACTC,UAAW5B,EACX6B,QAASA,KACPtC,EAAMuC,iBACO,KAAXlC,GAAkBK,OAAOC,OAAON,QAAoBmC,GAATnC,GAE7CL,EAAMQ,aAAaL,GACnBF,GAAa,GAEhB,UAGDW,EAAAA,cAACoB,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,YACNI,QAASA,KACPrC,GAAa,GAEhB,YAOX,G","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/SetFeatureHeightDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  Checkbox,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nconst SetFeatureHeightDialog = observer(function (props: {\n  model: {\n    setFeatureHeight: (arg?: number) => void\n    setNoSpacing: (arg?: boolean) => void\n    featureHeightSetting: number\n    noSpacing?: boolean\n  }\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const { featureHeightSetting, noSpacing: noSpacingSetting } = model\n  const [height, setHeight] = useState(`${featureHeightSetting}`)\n  const [noSpacing, setNoSpacing] = useState(noSpacingSetting)\n\n  const ok = height !== '' && !Number.isNaN(+height)\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set feature height\">\n      <DialogContent>\n        <Typography>\n          Adjust the feature height and whether there is any spacing between\n          features. Setting feature height to 1 and removing spacing makes the\n          display very compact.\n        </Typography>\n        <TextField\n          value={height}\n          helperText=\"Feature height\"\n          onChange={event => {\n            setHeight(event.target.value)\n          }}\n        />\n        <FormControlLabel\n          control={\n            <Checkbox\n              checked={!!noSpacing}\n              onChange={() => {\n                setNoSpacing(val => !val)\n              }}\n            />\n          }\n          label=\"Remove spacing between features in y-direction?\"\n        />\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            type=\"submit\"\n            autoFocus\n            disabled={!ok}\n            onClick={() => {\n              model.setFeatureHeight(\n                height !== '' && !Number.isNaN(+height) ? +height : undefined,\n              )\n              model.setNoSpacing(noSpacing)\n              handleClose()\n            }}\n          >\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default SetFeatureHeightDialog\n"],"names":["observer","props","model","handleClose","featureHeightSetting","noSpacing","noSpacingSetting","height","setHeight","useState","setNoSpacing","ok","Number","isNaN","React","Dialog","open","onClose","title","DialogContent","Typography","TextField","value","helperText","onChange","event","target","FormControlLabel","control","Checkbox","checked","val","label","DialogActions","Button","variant","color","type","autoFocus","disabled","onClick","setFeatureHeight","undefined"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5461.5c8cf5d1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5461],{75461:(t,e,s)=>{s.r(e),s.d(e,{default:()=>g});var a=s(46377),o=s(6434),n=s(66885),r=s(82088),i=s(44728),c=s(86576),d=s(80544),f=s(99546);function l(t){return u(t.type)?1:t.length}function u(t){return"softclip"===t||"hardclip"===t||"insertion"===t}function p(t,e,s,a){let o=t[s][a];void 0===o&&(o=t[s][a]={total:0,"-1":0,0:0,1:0}),o.total++,o[e]++}class g extends a.BaseFeatureDataAdapter{async configure(){const t=this.getConf("subadapter"),e=t.sequenceAdapter,s=await(this.getSubAdapter?.(t)),a=e?await(this.getSubAdapter?.(e)):void 0;if(!s)throw new Error("Failed to get subadapter");return{subadapter:s.dataAdapter,sequenceAdapter:a?.dataAdapter}}async fetchSequence(t){const{sequenceAdapter:e}=await this.configure();if(e)return(0,c.Iw)(t,e)}getFeatures(t,e={}){return(0,n.ObservableCreate)((async s=>{const{subadapter:a}=await this.configure(),n=await(0,i._)(a.getFeatures(t,e).pipe((0,r.$)())),{bins:g,skipmap:h}=await async function(t,e,s,a){const{colorBy:o}=s,n={...e,start:Math.max(0,e.start-1),end:e.end+1},r=Math.ceil(n.end-n.start),i={},g=t.length&&(0,c.k_)(s.colorBy?.type)?await a(e):void 0,h=[];for(const s of t){const t=s.get("start"),a=s.get("end"),n=s.get("strand"),b=s.get("mismatches")||[];for(let s=t;s<a+1;s++){const t=s-e.start;t>=0&&t<r&&(void 0===h[t]&&(h[t]={total:0,all:0,ref:0,"-1":0,0:0,1:0,lowqual:{},cov:{},delskips:{},noncov:{}}),s!==a&&(h[t].total++,h[t].all++,h[t].ref++,h[t][n]++))}if("modifications"===o?.type){const a=s.get("seq"),o=(0,c.c$)(s,"MM","Mm")||"",r=(0,d.parseCigar)(s.get("CIGAR")),i=s.get("end");if(a){const s=(0,d.getModificationPositions)(o,a,n);for(const{type:a,positions:o}of s){const s=`mod_${a}`;for(const a of(0,d.getNextRefPos)(r,o)){const o=a+t-e.start;o>=0&&o<h.length&&a+t<i&&(void 0===h[o]&&(h[o]={total:0,all:0,ref:0,"-1":0,0:0,1:0,lowqual:{},cov:{},delskips:{},noncov:{}}),p(h[o],n,"cov",s))}}}}if("methylation"===o?.type){if(!g)throw new Error("no region sequence detected, need sequenceAdapter configuration");if(!s.get("seq"))continue;const{methBins:o,methProbs:r}=(0,d.getMethBins)(s),i=b.filter((t=>"deletion"===t.type));for(let s=0;s<a-t;s++){const a=s+t,c=g[a-e.start+1]?.toLowerCase(),d=g[a-e.start+2]?.toLowerCase();if("c"===c&&"g"===d){const c=h[a-e.start],d=h[a-e.start+1],l=o[s],u=o[s+1],g=r[s],b=r[s+1];l&&(void 0===g||g>.5)||u&&(void 0===b||b>.5)?(c&&(p(c,n,"cov","meth"),c.ref--,c[n]--),d&&(p(d,n,"cov","meth"),d.ref--,d[n]--)):(c&&(i.some((e=>(0,f.doesIntersect2)(a,a+1,e.start+t,e.start+t+e.length)))||(p(c,n,"cov","unmeth"),c.ref--,c[n]--)),d&&(i.some((e=>(0,f.doesIntersect2)(a+1,a+2,e.start+t,e.start+t+e.length)))||(p(d,n,"cov","unmeth"),d.ref--,d[n]--)))}}}const w="modifications"!==o?.type&&"methylation"!==o?.type;for(const a of b){const o=t+a.start,r=l(a),d=o+r;for(let t=o;t<o+r;t++){const s=t-e.start;if(s>=0&&s<h.length){const t=h[s],{base:e,type:o}=a,r=u(o);r?p(t,n,"noncov",o):(t.ref--,t[n]--),"deletion"===o||"skip"===o?(p(t,n,"delskips",o),t.total--):!r&&w&&(p(t,n,"cov",e),t.refbase=a.altbase)}}if("skip"===a.type){const t=`${o}_${d}_${n}`;void 0===i[t]&&(i[t]={feature:s,start:o,end:d,strand:n,xs:(0,c.bH)(s,"XS")||(0,c.bH)(s,"TS"),score:0}),i[t].score++}}}return{bins:h,skipmap:i}}(n,t,e,(t=>this.fetchSequence(t)));g.forEach(((e,a)=>{const n=t.start+a;s.next(new o.A({id:`${this.id}-${n}`,data:{score:e.total,snpinfo:e,start:n,end:n+1,refName:t.refName}}))})),Object.entries(h).forEach((([t,e])=>{s.next(new o.A({id:t,data:{type:"skip",start:e.start,end:e.end,strand:e.strand,score:e.score,xs:e.xs}}))})),s.complete()}),e.signal)}async getMultiRegionFeatureDensityStats(t,e){const{subadapter:s}=await this.configure();return s.getMultiRegionFeatureDensityStats(t,e)}async getRefNames(t={}){const{subadapter:e}=await this.configure();return e.getRefNames(t)}freeResources(){}}}}]);
+//# sourceMappingURL=5461.5c8cf5d1.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5461.5c8cf5d1.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5461.5c8cf5d1.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/SNPCoverageAdapter/generateCoverageBins.ts","../../../plugins/alignments/src/SNPCoverageAdapter/SNPCoverageAdapter.ts"],"sourcesContent":["import { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { getTag, getTagAlt, shouldFetchReferenceSequence } from '../util'\nimport {\n  parseCigar,\n  getNextRefPos,\n  getModificationPositions,\n  getMethBins,\n  Mismatch,\n} from '../MismatchParser'\nimport { doesIntersect2 } from '@jbrowse/core/util'\nimport { Bin, SkipMap } from './util'\n\nfunction mismatchLen(mismatch: Mismatch) {\n  return !isInterbase(mismatch.type) ? mismatch.length : 1\n}\n\nfunction isInterbase(type: string) {\n  return type === 'softclip' || type === 'hardclip' || type === 'insertion'\n}\n\nfunction inc(bin: any, strand: number, type: string, field: string) {\n  let thisBin = bin[type][field]\n  if (thisBin === undefined) {\n    thisBin = bin[type][field] = {\n      total: 0,\n      '-1': 0,\n      '0': 0,\n      '1': 0,\n    }\n  }\n  thisBin.total++\n  thisBin[strand]++\n}\n\nexport default async function generateCoverageBins(\n  features: Feature[],\n  region: Region,\n  opts: { bpPerPx?: number; colorBy?: { type: string; tag?: string } },\n  fetchSequence: (arg: Region) => Promise<string>,\n) {\n  const { colorBy } = opts\n  const extendedRegion = {\n    ...region,\n    start: Math.max(0, region.start - 1),\n    end: region.end + 1,\n  }\n  const binMax = Math.ceil(extendedRegion.end - extendedRegion.start)\n  const skipmap = {} as SkipMap\n  const regionSequence =\n    features.length && shouldFetchReferenceSequence(opts.colorBy?.type)\n      ? await fetchSequence(region)\n      : undefined\n\n  const bins = [] as Bin[]\n\n  for (const feature of features) {\n    const fstart = feature.get('start')\n    const fend = feature.get('end')\n    const fstrand = feature.get('strand') as -1 | 0 | 1\n    const mismatches =\n      (feature.get('mismatches') as Mismatch[] | undefined) || []\n\n    for (let j = fstart; j < fend + 1; j++) {\n      const i = j - region.start\n      if (i >= 0 && i < binMax) {\n        if (bins[i] === undefined) {\n          bins[i] = {\n            total: 0,\n            all: 0,\n            ref: 0,\n            '-1': 0,\n            '0': 0,\n            '1': 0,\n            lowqual: {},\n            cov: {},\n            delskips: {},\n            noncov: {},\n          }\n        }\n        if (j !== fend) {\n          bins[i].total++\n          bins[i].all++\n          bins[i].ref++\n          bins[i][fstrand]++\n        }\n      }\n    }\n\n    if (colorBy?.type === 'modifications') {\n      const seq = feature.get('seq') as string | undefined\n      const mm = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n      const ops = parseCigar(feature.get('CIGAR'))\n      const fend = feature.get('end')\n      if (seq) {\n        const modifications = getModificationPositions(mm, seq, fstrand)\n        for (const { type, positions } of modifications) {\n          const mod = `mod_${type}`\n          for (const pos of getNextRefPos(ops, positions)) {\n            const epos = pos + fstart - region.start\n            if (epos >= 0 && epos < bins.length && pos + fstart < fend) {\n              if (bins[epos] === undefined) {\n                bins[epos] = {\n                  total: 0,\n                  all: 0,\n                  ref: 0,\n                  '-1': 0,\n                  '0': 0,\n                  '1': 0,\n                  lowqual: {},\n                  cov: {},\n                  delskips: {},\n                  noncov: {},\n                }\n              }\n              const bin = bins[epos]\n              inc(bin, fstrand, 'cov', mod)\n            }\n          }\n        }\n      }\n    }\n\n    if (colorBy?.type === 'methylation') {\n      if (!regionSequence) {\n        throw new Error(\n          'no region sequence detected, need sequenceAdapter configuration',\n        )\n      }\n      const seq = feature.get('seq') as string | undefined\n      if (!seq) {\n        continue\n      }\n      const { methBins, methProbs } = getMethBins(feature)\n      const dels = mismatches.filter(f => f.type === 'deletion')\n\n      // methylation based coloring takes into account both reference sequence\n      // CpG detection and reads\n      for (let i = 0; i < fend - fstart; i++) {\n        const j = i + fstart\n        const l1 = regionSequence[j - region.start + 1]?.toLowerCase()\n        const l2 = regionSequence[j - region.start + 2]?.toLowerCase()\n        if (l1 === 'c' && l2 === 'g') {\n          const bin0 = bins[j - region.start]\n          const bin1 = bins[j - region.start + 1]\n          const b0 = methBins[i]\n          const b1 = methBins[i + 1]\n          const p0 = methProbs[i]\n          const p1 = methProbs[i + 1]\n\n          // color\n          if (\n            (b0 && (p0 !== undefined ? p0 > 0.5 : true)) ||\n            (b1 && (p1 !== undefined ? p1 > 0.5 : true))\n          ) {\n            if (bin0) {\n              inc(bin0, fstrand, 'cov', 'meth')\n              bin0.ref--\n              bin0[fstrand]--\n            }\n            if (bin1) {\n              inc(bin1, fstrand, 'cov', 'meth')\n              bin1.ref--\n              bin1[fstrand]--\n            }\n          } else {\n            if (bin0) {\n              if (\n                !dels.some(d =>\n                  doesIntersect2(\n                    j,\n                    j + 1,\n                    d.start + fstart,\n                    d.start + fstart + d.length,\n                  ),\n                )\n              ) {\n                inc(bin0, fstrand, 'cov', 'unmeth')\n                bin0.ref--\n                bin0[fstrand]--\n              }\n            }\n            if (bin1) {\n              if (\n                !dels.some(d =>\n                  doesIntersect2(\n                    j + 1,\n                    j + 2,\n                    d.start + fstart,\n                    d.start + fstart + d.length,\n                  ),\n                )\n              ) {\n                inc(bin1, fstrand, 'cov', 'unmeth')\n                bin1.ref--\n                bin1[fstrand]--\n              }\n            }\n          }\n        }\n      }\n    }\n\n    // normal SNP based coloring\n    const colorSNPs =\n      colorBy?.type !== 'modifications' && colorBy?.type !== 'methylation'\n\n    for (const mismatch of mismatches) {\n      const mstart = fstart + mismatch.start\n      const mlen = mismatchLen(mismatch)\n      const mend = mstart + mlen\n      for (let j = mstart; j < mstart + mlen; j++) {\n        const epos = j - region.start\n        if (epos >= 0 && epos < bins.length) {\n          const bin = bins[epos]!\n          const { base, type } = mismatch\n          const interbase = isInterbase(type)\n          if (!interbase) {\n            bin.ref--\n            bin[fstrand]--\n          } else {\n            inc(bin, fstrand, 'noncov', type)\n          }\n\n          if (type === 'deletion' || type === 'skip') {\n            inc(bin, fstrand, 'delskips', type)\n            bin.total--\n          } else if (!interbase && colorSNPs) {\n            inc(bin, fstrand, 'cov', base)\n            bin.refbase = mismatch.altbase\n          }\n        }\n      }\n\n      if (mismatch.type === 'skip') {\n        const hash = `${mstart}_${mend}_${fstrand}`\n        if (skipmap[hash] === undefined) {\n          skipmap[hash] = {\n            feature: feature,\n            start: mstart,\n            end: mend,\n            strand: fstrand,\n            xs: getTag(feature, 'XS') || getTag(feature, 'TS'),\n            score: 0,\n          }\n        }\n        skipmap[hash].score++\n      }\n    }\n  }\n\n  return { bins, skipmap }\n}\n","import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport generateCoverageBins from './generateCoverageBins'\nimport { fetchSequence } from '../util'\n\nexport default class SNPCoverageAdapter extends BaseFeatureDataAdapter {\n  protected async configure() {\n    const subadapterConfig = this.getConf('subadapter')\n    const sequenceConf = subadapterConfig.sequenceAdapter\n    const dataAdapter = await this.getSubAdapter?.(subadapterConfig)\n\n    const sequenceAdapter = sequenceConf\n      ? await this.getSubAdapter?.(sequenceConf)\n      : undefined\n\n    if (!dataAdapter) {\n      throw new Error('Failed to get subadapter')\n    }\n\n    return {\n      subadapter: dataAdapter.dataAdapter as BaseFeatureDataAdapter,\n      sequenceAdapter: sequenceAdapter?.dataAdapter as\n        | BaseFeatureDataAdapter\n        | undefined,\n    }\n  }\n\n  async fetchSequence(region: Region) {\n    const { sequenceAdapter } = await this.configure()\n    if (!sequenceAdapter) {\n      return undefined\n    }\n\n    return fetchSequence(region, sequenceAdapter)\n  }\n\n  getFeatures(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { subadapter } = await this.configure()\n      const feats = await firstValueFrom(\n        subadapter.getFeatures(region, opts).pipe(toArray()),\n      )\n\n      const { bins, skipmap } = await generateCoverageBins(\n        feats,\n        region,\n        opts,\n        arg => this.fetchSequence(arg),\n      )\n\n      bins.forEach((bin, index) => {\n        const start = region.start + index\n        observer.next(\n          new SimpleFeature({\n            id: `${this.id}-${start}`,\n            data: {\n              score: bin.total,\n              snpinfo: bin,\n              start,\n              end: start + 1,\n              refName: region.refName,\n            },\n          }),\n        )\n      })\n\n      // make fake features from the coverage\n      Object.entries(skipmap).forEach(([key, skip]) => {\n        observer.next(\n          new SimpleFeature({\n            id: key,\n            data: {\n              type: 'skip',\n              start: skip.start,\n              end: skip.end,\n              strand: skip.strand,\n              score: skip.score,\n              xs: skip.xs,\n            },\n          }),\n        )\n      })\n\n      observer.complete()\n    }, opts.signal)\n  }\n\n  async getMultiRegionFeatureDensityStats(\n    regions: Region[],\n    opts?: BaseOptions,\n  ) {\n    const { subadapter } = await this.configure()\n    return subadapter.getMultiRegionFeatureDensityStats(regions, opts)\n  }\n\n  async getRefNames(opts: BaseOptions = {}) {\n    const { subadapter } = await this.configure()\n    return subadapter.getRefNames(opts)\n  }\n\n  freeResources(/* { region } */): void {}\n}\n"],"names":["mismatchLen","mismatch","isInterbase","type","length","inc","bin","strand","field","thisBin","undefined","total","SNPCoverageAdapter","BaseFeatureDataAdapter","configure","subadapterConfig","this","getConf","sequenceConf","sequenceAdapter","dataAdapter","getSubAdapter","Error","subadapter","fetchSequence","region","getFeatures","opts","ObservableCreate","async","feats","firstValueFrom","pipe","toArray","bins","skipmap","features","colorBy","extendedRegion","start","Math","max","end","binMax","ceil","regionSequence","shouldFetchReferenceSequence","feature","fstart","get","fend","fstrand","mismatches","j","i","all","ref","lowqual","cov","delskips","noncov","seq","mm","getTagAlt","ops","parseCigar","modifications","getModificationPositions","positions","mod","pos","getNextRefPos","epos","methBins","methProbs","getMethBins","dels","filter","f","l1","toLowerCase","l2","bin0","bin1","b0","b1","p0","p1","some","d","doesIntersect2","colorSNPs","mstart","mlen","mend","base","interbase","refbase","altbase","hash","xs","getTag","score","generateCoverageBins","arg","forEach","index","observer","next","SimpleFeature","id","data","snpinfo","refName","Object","entries","key","skip","complete","signal","getMultiRegionFeatureDensityStats","regions","getRefNames","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5484.3ceeebff.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5484,8341,722,7865,246,2627,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=5484.3ceeebff.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5484.3ceeebff.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5484.3ceeebff.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5511.154ce441.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5511],{55511:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.Attributes});var a=s(68984)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5515.671905b2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5515],{6500:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp")},99829:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"m14 7-5 5 5 5z"}),"ArrowLeft")},75653:(e,t,o)=>{o.d(t,{A:()=>x});var a=o(7552),r=o(93878),s=o(85693),n=o(70799),i=o(33283),d=o(82081),c=o(24959),l=o(72861),u=o(69500);const p=(0,l.A)(),m=(0,c.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,i.A)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),h=e=>(0,d.A)({props:e,name:"MuiContainer",defaultTheme:p});var A=o(15622),v=o(51148),b=o(31049);const f=function(e={}){const{createStyledComponent:t=m,useThemeProps:o=h,componentName:d="MuiContainer"}=e,c=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,o)=>{const a=o,r=e.breakpoints.values[a];return 0!==r&&(t[e.breakpoints.up(a)]={maxWidth:`${r}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),l=a.forwardRef((function(e,t){const a=o(e),{className:l,component:p="div",disableGutters:m=!1,fixed:h=!1,maxWidth:A="lg",classes:v,...b}=a,f={...a,component:p,disableGutters:m,fixed:h,maxWidth:A},x=((e,t)=>{const{classes:o,fixed:a,disableGutters:r,maxWidth:d}=e,c={root:["root",d&&`maxWidth${(0,i.A)(String(d))}`,a&&"fixed",r&&"disableGutters"]};return(0,n.A)(c,(e=>(0,s.Ay)(t,e)),o)})(f,d);return(0,u.jsx)(c,{as:p,ownerState:f,className:(0,r.A)(x.root,l),ref:t,...b})}));return l}({createStyledComponent:(0,v.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,A.A)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,b.A)({props:e,name:"MuiContainer"})}),x=f},33248:(e,t,o)=>{o.d(t,{A:()=>$});var a=o(7552),r=o(93878),s=o(70799),n=o(72639),i=o(15110),d=o(74893),c=o(69500);const l=(0,d.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),u=(0,d.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var p=o(55270),m=o(51148),h=o(60129);const A=(0,m.Ay)("span",{shouldForwardProp:p.A})({position:"relative",display:"flex"}),v=(0,m.Ay)(l)({transform:"scale(1)"}),b=(0,m.Ay)(u)((0,h.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),f=function(e){const{checked:t=!1,classes:o={},fontSize:a}=e,r={...e,checked:t};return(0,c.jsxs)(A,{className:o.root,ownerState:r,children:[(0,c.jsx)(v,{fontSize:a,className:o.background,ownerState:r}),(0,c.jsx)(b,{fontSize:a,className:o.dot,ownerState:r})]})};var x=o(15622),g=o(4402),k=o(33960),S=o(39006),y=o(38127),C=o(58520),w=o(4785);const R=(0,m.Ay)(i.A,{shouldForwardProp:e=>(0,p.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"medium"!==o.size&&t[`size${(0,x.A)(o.size)}`],t[`color${(0,x.A)(o.color)}`]]}})((0,h.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${y.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,C.A)()).map((([t])=>({props:{color:t,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,C.A)()).map((([t])=>({props:{color:t,disabled:!1},style:{[`&.${y.A.checked}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),z=(0,c.jsx)(f,{checked:!0}),j=(0,c.jsx)(f,{}),$=a.forwardRef((function(e,t){const o=(0,w.b)({props:e,name:"MuiRadio"}),{checked:n,checkedIcon:i=z,color:d="primary",icon:l=j,name:u,onChange:p,size:m="medium",className:h,disabled:A,disableRipple:v=!1,...b}=o,f=(0,k.A)();let C=A;f&&void 0===C&&(C=f.disabled),C??=!1;const $={...o,disabled:C,disableRipple:v,color:d,size:m},W=(e=>{const{classes:t,color:o,size:a}=e,r={root:["root",`color${(0,x.A)(o)}`,"medium"!==a&&`size${(0,x.A)(a)}`]};return{...t,...(0,s.A)(r,y.q,t)}})($),M=(0,S.A)();let G=n;const N=(0,g.A)(p,M&&M.onChange);let O=u;var P,T;return M&&(void 0===G&&(P=M.value,G="object"==typeof(T=o.value)&&null!==T?P===T:String(P)===String(T)),void 0===O&&(O=M.name)),(0,c.jsx)(R,{type:"radio",icon:a.cloneElement(l,{fontSize:j.props.fontSize??m}),checkedIcon:a.cloneElement(i,{fontSize:z.props.fontSize??m}),disabled:C,ownerState:$,classes:W,name:O,checked:G,onChange:N,ref:t,className:(0,r.A)(W.root,h),...b})}))},38127:(e,t,o)=>{o.d(t,{A:()=>n,q:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiRadio",e)}const n=(0,a.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},56089:(e,t,o)=>{o.d(t,{A:()=>m});var a=o(7552),r=o(93878),s=o(70799),n=o(83867),i=o(87625),d=o(51584),c=o(77259),l=o(76258),u=o(89456),p=o(69500);const m=a.forwardRef((function(e,t){const{actions:o,children:m,className:h,defaultValue:A,name:v,onChange:b,value:f,...x}=e,g=a.useRef(null),k=(e=>{const{classes:t,row:o,error:a}=e,r={root:["root",o&&"row",a&&"error"]};return(0,s.A)(r,i.B,t)})(e),[S,y]=(0,c.A)({controlled:f,default:A,name:"RadioGroup"});a.useImperativeHandle(o,(()=>({focus:()=>{let e=g.current.querySelector("input:not(:disabled):checked");e||(e=g.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const C=(0,d.A)(t,g),w=(0,u.A)(v),R=a.useMemo((()=>({name:w,onChange(e){y(e.target.value),b&&b(e,e.target.value)},value:S})),[w,b,y,S]);return(0,p.jsx)(l.A.Provider,{value:R,children:(0,p.jsx)(n.A,{role:"radiogroup",ref:C,className:(0,r.A)(k.root,h),...x,children:m})})}))},76258:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(7552).createContext(void 0)},87625:(e,t,o)=>{o.d(t,{A:()=>n,B:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiRadioGroup",e)}const n=(0,a.A)("MuiRadioGroup",["root","row","error"])},39006:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(7552),r=o(76258);function s(){return a.useContext(r.A)}},24959:(e,t,o)=>{o.d(t,{A:()=>a});const a=(0,o(15543).Ay)()}}]);
+//# sourceMappingURL=5515.671905b2.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5515.671905b2.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5515.671905b2.chunk.js","mappings":"mKAIA,SAAe,QAA4B,SAAK,OAAQ,CACtDA,EAAG,mBACD,c,6DCFJ,SAAe,QAA4B,SAAK,OAAQ,CACtDA,EAAG,mBACD,Y,yICIJ,MAAMC,GAAe,EAAAC,EAAA,KACfC,GAA+B,OAAa,MAAO,CACvDC,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAO,YAAW,EAAAG,EAAA,GAAWC,OAAOH,EAAWI,cAAeJ,EAAWK,OAASN,EAAOM,MAAOL,EAAWM,gBAAkBP,EAAOO,eAAe,IAGtKC,EAAuBC,IAAW,EAAAC,EAAA,GAAoB,CAC1DX,MAAOU,EACPb,KAAM,eACNH,iB,qCCjBF,MAAMkB,EDkCS,SAAyBC,EAAU,CAAC,GACjD,MAAM,sBAEJC,EAAwBlB,EAA4B,cACpDe,EAAgBF,EAAoB,cACpCM,EAAgB,gBACdF,EACEG,EAAgBF,GAAsB,EAC1CG,QACAf,iBACI,CACJgB,MAAO,OACPC,WAAY,OACZC,UAAW,aACXC,YAAa,WACRnB,EAAWM,gBAAkB,CAChCc,YAAaL,EAAMM,QAAQ,GAC3BC,aAAcP,EAAMM,QAAQ,GAE5B,CAACN,EAAMQ,YAAYC,GAAG,OAAQ,CAC5BJ,YAAaL,EAAMM,QAAQ,GAC3BC,aAAcP,EAAMM,QAAQ,SAG9B,EACFN,QACAf,gBACIA,EAAWK,OAASoB,OAAOC,KAAKX,EAAMQ,YAAYI,QAAQC,QAAO,CAACC,EAAKC,KAC3E,MAAMC,EAAaD,EACbE,EAAQjB,EAAMQ,YAAYI,OAAOI,GAOvC,OANc,IAAVC,IAEFH,EAAId,EAAMQ,YAAYC,GAAGO,IAAe,CACtC3B,SAAU,GAAG4B,IAAQjB,EAAMQ,YAAYU,SAGpCJ,CAAG,GACT,CAAC,KAAI,EACNd,QACAf,iBACI,IAEwB,OAAxBA,EAAWI,UAAqB,CAElC,CAACW,EAAMQ,YAAYC,GAAG,OAAQ,CAE5BpB,SAAU8B,KAAKC,IAAIpB,EAAMQ,YAAYI,OAAOS,GAAI,UAGhDpC,EAAWI,UAES,OAAxBJ,EAAWI,UAAqB,CAE9B,CAACW,EAAMQ,YAAYC,GAAGxB,EAAWI,WAAY,CAE3CA,SAAU,GAAGW,EAAMQ,YAAYI,OAAO3B,EAAWI,YAAYW,EAAMQ,YAAYU,aAI/EvB,EAAyB,cAAiB,SAAmBF,EAAS6B,GAC1E,MAAMvC,EAAQW,EAAcD,IACtB,UACJ8B,EAAS,UACTC,EAAY,MAAK,eACjBjC,GAAiB,EAAK,MACtBD,GAAQ,EAAK,SACbD,EAAW,KACXoC,QAASC,KACNC,GACD5C,EACEE,EAAa,IACdF,EACHyC,YACAjC,iBACAD,QACAD,YAIIoC,EA9FgB,EAACxC,EAAYa,KACrC,MAGM,QACJ2B,EAAO,MACPnC,EAAK,eACLC,EAAc,SACdF,GACEJ,EACE2C,EAAQ,CACZ1C,KAAM,CAAC,OAAQG,GAAY,YAAW,EAAAF,EAAA,GAAWC,OAAOC,MAAcC,GAAS,QAASC,GAAkB,mBAE5G,OAAO,EAAAsC,EAAA,GAAeD,GAZW/C,IACxB,EAAAiD,EAAA,IAAqBhC,EAAejB,IAWU4C,EAAQ,EAiF7CM,CAAkB9C,EAAYa,GAC9C,OAGE,SAAKC,EAAe,CAClBiC,GAAIR,EAGJvC,WAAYA,EACZsC,WAAW,EAAAU,EAAA,GAAKR,EAAQvC,KAAMqC,GAC9BD,IAAKA,KACFK,GAGT,IAWA,OAAOhC,CACT,CC3IkBuC,CAAgB,CAChCrC,uBAAuB,QAAO,MAAO,CACnCjB,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAO,YAAW,OAAWI,OAAOH,EAAWI,cAAeJ,EAAWK,OAASN,EAAOM,MAAOL,EAAWM,gBAAkBP,EAAOO,eAAe,IAG5KG,cAAeD,IAAW,OAAc,CACtCV,MAAOU,EACPb,KAAM,mBA8CV,G,mHCzDA,SAAe,EAAAuD,EAAA,IAA2B,SAAK,OAAQ,CACrD3D,EAAG,iIACD,wBCFJ,GAAe,EAAA2D,EAAA,IAA2B,SAAK,OAAQ,CACrD3D,EAAG,gLACD,sB,qCCDJ,MAAM4D,GAAsB,EAAAC,EAAA,IAAO,OAAQ,CACzCC,kBAAmBC,EAAA,GADO,CAEzB,CACDC,SAAU,WACVC,QAAS,SAELC,GAA4B,EAAAL,EAAA,IAAOM,EAAP,CAAiC,CAEjEC,UAAW,aAEPC,GAAqB,EAAAR,EAAA,IAAOS,EAAP,EAA+B,EAAAC,EAAA,IAAU,EAClE/C,YACI,CACJgD,KAAM,EACNR,SAAU,WACVI,UAAW,WACXK,WAAYjD,EAAMkD,YAAYC,OAAO,YAAa,CAChDC,OAAQpD,EAAMkD,YAAYE,OAAOC,OACjCC,SAAUtD,EAAMkD,YAAYI,SAASC,WAEvCC,SAAU,CAAC,CACTzE,MAAO,CACL0E,SAAS,GAEXC,MAAO,CACLd,UAAW,WACXK,WAAYjD,EAAMkD,YAAYC,OAAO,YAAa,CAChDC,OAAQpD,EAAMkD,YAAYE,OAAOO,QACjCL,SAAUtD,EAAMkD,YAAYI,SAASC,mBAgD7C,EAvCA,SAAyBxE,GACvB,MAAM,QACJ0E,GAAU,EAAK,QACfhC,EAAU,CAAC,EAAC,SACZmC,GACE7E,EACEE,EAAa,IACdF,EACH0E,WAEF,OAAoB,UAAMrB,EAAqB,CAC7Cb,UAAWE,EAAQvC,KACnBD,WAAYA,EACZ4E,SAAU,EAAc,SAAKnB,EAA2B,CACtDkB,SAAUA,EACVrC,UAAWE,EAAQqC,WACnB7E,WAAYA,KACG,SAAK4D,EAAoB,CACxCe,SAAUA,EACVrC,UAAWE,EAAQsC,IACnB9E,WAAYA,MAGlB,E,+ECjDA,MAcM+E,GAAY,EAAA3B,EAAA,IAAO4B,EAAA,EAAY,CACnC3B,kBAAmB4B,IAAQ,EAAA3B,EAAA,GAAsB2B,IAAkB,YAATA,EAC1DtF,KAAM,WACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAA0B,WAApBD,EAAWkF,MAAqBnF,EAAO,QAAO,EAAAG,EAAA,GAAWF,EAAWkF,SAAUnF,EAAO,SAAQ,EAAAG,EAAA,GAAWF,EAAWmF,UAAU,GARpI,EAUf,EAAArB,EAAA,IAAU,EACX/C,YACI,CACJoE,OAAQpE,EAAMqE,MAAQrE,GAAOsE,QAAQC,KAAKC,UAC1C,CAAC,KAAKC,EAAA,EAAaC,YAAa,CAC9BN,OAAQpE,EAAMqE,MAAQrE,GAAOsE,QAAQK,OAAOD,UAE9ClB,SAAU,CAAC,CACTzE,MAAO,CACLqF,MAAO,UACPM,UAAU,EACVE,eAAe,GAEjBlB,MAAO,CACL,UAAW,CACTmB,gBAAiB7E,EAAMqE,KAAO,QAAQrE,EAAMqE,KAAKC,QAAQK,OAAOG,mBAAmB9E,EAAMqE,KAAKC,QAAQK,OAAOI,iBAAkB,QAAM/E,EAAMsE,QAAQK,OAAOK,OAAQhF,EAAMsE,QAAQK,OAAOI,oBAGvLrE,OAAOuE,QAAQjF,EAAMsE,SAASY,QAAO,EAAAC,EAAA,MAAkCC,KAAI,EAAEhB,MAAW,CAC5FrF,MAAO,CACLqF,QACAM,UAAU,EACVE,eAAe,GAEjBlB,MAAO,CACL,UAAW,CACTmB,gBAAiB7E,EAAMqE,KAAO,QAAQrE,EAAMqE,KAAKC,QAAQF,GAAOiB,iBAAiBrF,EAAMqE,KAAKC,QAAQK,OAAOI,iBAAkB,QAAM/E,EAAMsE,QAAQF,GAAOkB,KAAMtF,EAAMsE,QAAQK,OAAOI,uBAGjLrE,OAAOuE,QAAQjF,EAAMsE,SAASY,QAAO,EAAAC,EAAA,MAAkCC,KAAI,EAAEhB,MAAW,CAC9FrF,MAAO,CACLqF,QACAM,UAAU,GAEZhB,MAAO,CACL,CAAC,KAAKe,EAAA,EAAahB,WAAY,CAC7BW,OAAQpE,EAAMqE,MAAQrE,GAAOsE,QAAQF,GAAOkB,WAG7C,CAEHvG,MAAO,CACL6F,eAAe,GAEjBlB,MAAO,CAEL,UAAW,CACT,uBAAwB,CACtBmB,gBAAiB,wBAcrBU,GAAkC,SAAK,EAAiB,CAC5D9B,SAAS,IAEL+B,GAA2B,SAAK,EAAiB,CAAC,GAyJxD,EAxJ2B,cAAiB,SAAe/F,EAAS6B,GAClE,MAAMvC,GAAQ,OAAgB,CAC5BA,MAAOU,EACPb,KAAM,cAGN6E,QAASgC,EAAW,YACpBC,EAAcH,EAAkB,MAChCnB,EAAQ,UAAS,KACjBuB,EAAOH,EACP5G,KAAMgH,EACNC,SAAUC,EAAY,KACtB3B,EAAO,SAAQ,UACf5C,EACAmD,SAAUqB,EAAY,cACtBnB,GAAgB,KACbjD,GACD5C,EACEiH,GAAiB,EAAAC,EAAA,KACvB,IAAIvB,EAAWqB,EACXC,QACsB,IAAbtB,IACTA,EAAWsB,EAAetB,UAG9BA,KAAa,EACb,MAAMzF,EAAa,IACdF,EACH2F,WACAE,gBACAR,QACAD,QAEI1C,EA3HkBxC,KACxB,MAAM,QACJwC,EAAO,MACP2C,EAAK,KACLD,GACElF,EACE2C,EAAQ,CACZ1C,KAAM,CAAC,OAAQ,SAAQ,EAAAC,EAAA,GAAWiF,KAAmB,WAATD,GAAqB,QAAO,EAAAhF,EAAA,GAAWgF,OAErF,MAAO,IACF1C,MACA,EAAAI,EAAA,GAAeD,EAAO,IAAsBH,GAChD,EA+GeM,CAAkB9C,GAC5BiH,GAAa,EAAAC,EAAA,KACnB,IAAI1C,EAAUgC,EACd,MAAMI,GAAW,EAAAO,EAAA,GAAsBN,EAAcI,GAAcA,EAAWL,UAC9E,IAAIjH,EAAOgH,EAjDb,IAAwBS,EAAGC,EA0DzB,OARIJ,SACqB,IAAZzC,IAnDS4C,EAoDOH,EAAWjF,MAApCwC,EAnDa,iBADQ6C,EAoDsBvH,EAAMkC,QAnDlB,OAANqF,EACpBD,IAAMC,EAIRlH,OAAOiH,KAAOjH,OAAOkH,SAgDN,IAAT1H,IACTA,EAAOsH,EAAWtH,QAGF,SAAKoF,EAAW,CAClCuC,KAAM,QACNZ,KAAmB,eAAmBA,EAAM,CAC1C/B,SAAU4B,EAAYzG,MAAM6E,UAAYO,IAE1CuB,YAA0B,eAAmBA,EAAa,CACxD9B,SAAU2B,EAAmBxG,MAAM6E,UAAYO,IAEjDO,SAAUA,EACVzF,WAAYA,EACZwC,QAASA,EACT7C,KAAMA,EACN6E,QAASA,EACToC,SAAUA,EACVvE,IAAKA,EACLC,WAAW,EAAAU,EAAA,GAAKR,EAAQvC,KAAMqC,MAC3BI,GAEP,G,qEC7KO,SAAS6E,EAAqB3H,GACnC,OAAO,QAAqB,WAAYA,EAC1C,CACA,MACA,GADqB,OAAuB,WAAY,CAAC,OAAQ,UAAW,WAAY,eAAgB,iBAAkB,a,oJCQ1H,MAoGA,EAzFgC,cAAiB,SAAoBE,EAAOuC,GAC1E,MAAM,QAGJmF,EAAO,SACP5C,EAAQ,UACRtC,EAAS,aACTmF,EACA9H,KAAMgH,EAAQ,SACdC,EACA5E,MAAO0F,KACJhF,GACD5C,EACE6H,EAAU,SAAa,MACvBnF,EAzBkB1C,KACxB,MAAM,QACJ0C,EAAO,IACPoF,EAAG,MACHC,GACE/H,EACE6C,EAAQ,CACZ1C,KAAM,CAAC,OAAQ2H,GAAO,MAAOC,GAAS,UAExC,OAAO,OAAelF,EAAO,IAA2BH,EAAQ,EAgBhDM,CAAkBhD,IAC3BkC,EAAO8F,IAAiB,OAAc,CAC3CC,WAAYL,EACZM,QAASP,EACT9H,KAAM,eAER,sBAA0B6H,GAAS,KAAM,CACvCS,MAAO,KACL,IAAIC,EAAQP,EAAQQ,QAAQC,cAAc,gCACrCF,IACHA,EAAQP,EAAQQ,QAAQC,cAAc,yBAEpCF,GACFA,EAAMD,OACR,KAEA,IACJ,MAAMI,GAAY,OAAWhG,EAAKsF,GAC5BhI,GAAO,OAAMgH,GACb2B,EAAe,WAAc,KAAM,CACvC3I,OACA,QAAAiH,CAAS2B,GACPT,EAAcS,EAAMC,OAAOxG,OACvB4E,GACFA,EAAS2B,EAAOA,EAAMC,OAAOxG,MAEjC,EACAA,WACE,CAACrC,EAAMiH,EAAUkB,EAAe9F,IACpC,OAAoB,SAAK,IAAkByG,SAAU,CACnDzG,MAAOsG,EACP1D,UAAuB,SAAK,IAAW,CACrC8D,KAAM,aACNrG,IAAKgG,EACL/F,WAAW,OAAKE,EAAQvC,KAAMqC,MAC3BI,EACHkC,SAAUA,KAGhB,G,mCCrEA,Q,QAJuC,mBAAoB+D,E,qECFpD,SAASC,EAA0BhJ,GACxC,OAAO,QAAqB,gBAAiBA,EAC/C,CACA,MACA,GAD0B,OAAuB,gBAAiB,CAAC,OAAQ,MAAO,S,4DCDnE,SAASsH,IACtB,OAAO,aAAiB,IAC1B,C,mCCLA,MACA,GADe,E,SAAA,K","sources":["../../../node_modules/@mui/icons-material/esm/ArrowDropUp.js","../../../node_modules/@mui/icons-material/esm/ArrowLeft.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"m14 7-5 5 5 5z\"\n}), 'ArrowLeft');","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["d","defaultTheme","createTheme","defaultCreateStyledComponent","name","slot","overridesResolver","props","styles","ownerState","root","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","inProps","useThemeProps","Container","options","createStyledComponent","componentName","ContainerRoot","theme","width","marginLeft","boxSizing","marginRight","paddingLeft","spacing","paddingRight","breakpoints","up","Object","keys","values","reduce","acc","breakpointValueKey","breakpoint","value","unit","Math","max","xs","ref","className","component","classes","classesProp","other","slots","composeClasses","generateUtilityClass","useUtilityClasses","as","clsx","createContainer","createSvgIcon","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","checked","style","easeOut","fontSize","children","background","dot","RadioRoot","SwitchBase","prop","size","color","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","checkedProp","checkedIcon","icon","nameProp","onChange","onChangeProp","disabledProp","muiFormControl","useFormControl","radioGroup","useRadioGroup","createChainedFunction","a","b","type","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","row","error","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","event","target","Provider","role","undefined","getRadioGroupUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5595.b4517d69.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,30 @@
+/*! For license information please see 5595.b4517d69.chunk.js.LICENSE.txt */
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5595,8341,722,5484,7865,246,2627,5008],{84885:(e,r,t)=>{t.d(r,{A:()=>G});var o=t(7552),i=t(93878),n=t(43583),a=t(70799),l=t(1045);var s=t(51148),d=t(60129),c=t(58520),u=t(4785),g=t(15622),p=t(47839),m=t(69500);const S=(0,s.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(e,r)=>r.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),C=(0,s.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.badge,r[t.variant],r[`anchorOrigin${(0,g.A)(t.anchorOrigin.vertical)}${(0,g.A)(t.anchorOrigin.horizontal)}${(0,g.A)(t.overlap)}`],"default"!==t.color&&r[`color${(0,g.A)(t.color)}`],t.invisible&&r.invisible]}})((0,d.A)((({theme:e})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:e.typography.fontFamily,fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.enteringScreen}),variants:[...Object.entries(e.palette).filter((0,c.A)(["contrastText"])).map((([r])=>({props:{color:r},style:{backgroundColor:(e.vars||e).palette[r].main,color:(e.vars||e).palette[r].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"rectangular"===e.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"right"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:e})=>"top"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:e})=>"bottom"===e.anchorOrigin.vertical&&"left"===e.anchorOrigin.horizontal&&"circular"===e.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:e.transitions.create("transform",{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.leavingScreen})}}]})))),G=o.forwardRef((function(e,r){const t=(0,u.b)({props:e,name:"MuiBadge"}),{anchorOrigin:o={vertical:"top",horizontal:"right"},className:s,classes:d,component:c,components:G={},componentsProps:h={},children:v,overlap:f="rectangular",color:b="default",invisible:R=!1,max:A=99,badgeContent:O,slots:I,slotProps:E,showZero:w=!1,variant:D="standard",...T}=t,{badgeContent:y,invisible:F,max:x,displayValue:M}=function(e){const{badgeContent:r,invisible:t=!1,max:o=99,showZero:i=!1}=e,a=(0,n.A)({badgeContent:r,max:o});let l=t;!1!==t||0!==r||i||(l=!0);const{badgeContent:s,max:d=o}=l?a:e;return{badgeContent:s,invisible:l,max:d,displayValue:s&&Number(s)>d?`${d}+`:s}}({max:A,invisible:R,badgeContent:O,showZero:w}),_=(0,n.A)({anchorOrigin:o,color:b,overlap:f,variant:D,badgeContent:O}),L=F||null==y&&"dot"!==D,{color:k=b,overlap:P=f,anchorOrigin:N=o,variant:H=D}=L?_:t,z="dot"!==H?M:void 0,B={...t,badgeContent:y,invisible:L,max:x,displayValue:z,showZero:w,anchorOrigin:N,color:k,overlap:P,variant:H},$=(e=>{const{color:r,anchorOrigin:t,invisible:o,overlap:i,variant:n,classes:l={}}=e,s={root:["root"],badge:["badge",n,o&&"invisible",`anchorOrigin${(0,g.A)(t.vertical)}${(0,g.A)(t.horizontal)}`,`anchorOrigin${(0,g.A)(t.vertical)}${(0,g.A)(t.horizontal)}${(0,g.A)(i)}`,`overlap${(0,g.A)(i)}`,"default"!==r&&`color${(0,g.A)(r)}`]};return(0,a.A)(s,p.w,l)})(B),V=I?.root??G.Root??S,j=I?.badge??G.Badge??C,U=E?.root??h.root,X=E?.badge??h.badge,Z=(0,l.A)({elementType:V,externalSlotProps:U,externalForwardedProps:T,additionalProps:{ref:r,as:c},ownerState:B,className:(0,i.A)(U?.className,$.root,s)}),W=(0,l.A)({elementType:j,externalSlotProps:X,ownerState:B,className:(0,i.A)($.badge,X?.className)});return(0,m.jsxs)(V,{...Z,children:[v,(0,m.jsx)(j,{...W,children:z})]})}))},47839:(e,r,t)=>{t.d(r,{A:()=>a,w:()=>n});var o=t(33761),i=t(85693);function n(e){return(0,i.Ay)("MuiBadge",e)}const a=(0,o.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},59705:(e,r,t)=>{t.d(r,{A:()=>b});var o=t(7552),i=t(93878),n=t(70799),a=t(64761),l=t(51148),s=t(60129),d=t(4785),c=t(15622),u=t(58520),g=t(72489),p=t(69500);const m=a.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,S=a.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,C="string"!=typeof m?a.AH`
+        animation: ${m} 1.4s linear infinite;
+      `:null,G="string"!=typeof S?a.AH`
+        animation: ${S} 1.4s ease-in-out infinite;
+      `:null,h=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,c.A)(t.color)}`]]}})((0,s.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:C||{animation:`${m} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),v=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),f=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,c.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,s.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:G||{animation:`${S} 1.4s ease-in-out infinite`}}]})))),b=o.forwardRef((function(e,r){const t=(0,d.b)({props:e,name:"MuiCircularProgress"}),{className:o,color:a="primary",disableShrink:l=!1,size:s=40,style:u,thickness:m=3.6,value:S=0,variant:C="indeterminate",...G}=t,b={...t,color:a,disableShrink:l,size:s,thickness:m,value:S,variant:C},R=(e=>{const{classes:r,variant:t,color:o,disableShrink:i}=e,a={root:["root",t,`color${(0,c.A)(o)}`],svg:["svg"],circle:["circle",`circle${(0,c.A)(t)}`,i&&"circleDisableShrink"]};return(0,n.A)(a,g.b,r)})(b),A={},O={},I={};if("determinate"===C){const e=2*Math.PI*((44-m)/2);A.strokeDasharray=e.toFixed(3),I["aria-valuenow"]=Math.round(S),A.strokeDashoffset=`${((100-S)/100*e).toFixed(3)}px`,O.transform="rotate(-90deg)"}return(0,p.jsx)(h,{className:(0,i.A)(R.root,o),style:{width:s,height:s,...O,...u},ownerState:b,ref:r,role:"progressbar",...I,...G,children:(0,p.jsx)(v,{className:R.svg,ownerState:b,viewBox:"22 22 44 44",children:(0,p.jsx)(f,{className:R.circle,style:A,ownerState:b,cx:44,cy:44,r:(44-m)/2,fill:"none",strokeWidth:m})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>a,b:()=>n});var o=t(33761),i=t(85693);function n(e){return(0,i.Ay)("MuiCircularProgress",e)}const a=(0,o.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>c});var o=t(7552),i=t(29527),n=t(89887),a=t(99305),l=t(28325),s=t(69500);function d(e){return e.substring(2).toLowerCase()}function c(e){const{children:r,disableReactTree:t=!1,mouseEvent:c="onClick",onClickAway:u,touchEvent:g="onTouchEnd"}=e,p=o.useRef(!1),m=o.useRef(null),S=o.useRef(!1),C=o.useRef(!1);o.useEffect((()=>(setTimeout((()=>{S.current=!0}),0),()=>{S.current=!1})),[]);const G=(0,i.A)((0,l.A)(r),m),h=(0,n.A)((e=>{const r=C.current;C.current=!1;const o=(0,a.A)(m.current);if(!S.current||!m.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,o))return;if(p.current)return void(p.current=!1);let i;i=e.composedPath?e.composedPath().includes(m.current):!o.documentElement.contains(e.target)||m.current.contains(e.target),i||!t&&r||u(e)})),v=e=>t=>{C.current=!0;const o=r.props[e];o&&o(t)},f={ref:G};return!1!==g&&(f[g]=v(g)),o.useEffect((()=>{if(!1!==g){const e=d(g),r=(0,a.A)(m.current),t=()=>{p.current=!0};return r.addEventListener(e,h),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,h),r.removeEventListener("touchmove",t)}}}),[h,g]),!1!==c&&(f[c]=v(c)),o.useEffect((()=>{if(!1!==c){const e=d(c),r=(0,a.A)(m.current);return r.addEventListener(e,h),()=>{r.removeEventListener(e,h)}}}),[h,c]),(0,s.jsx)(o.Fragment,{children:o.cloneElement(r,f)})}},17515:(e,r,t)=>{t.d(r,{A:()=>g});var o=t(7552),i=t(93878),n=t(70799),a=t(51148),l=t(60129),s=t(4785),d=t(89663),c=t(69500);const u=(0,a.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,l.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),g=o.forwardRef((function(e,r){const t=(0,s.b)({props:e,name:"MuiToolbar"}),{className:o,component:a="div",disableGutters:l=!1,variant:g="regular",...p}=t,m={...t,component:a,disableGutters:l,variant:g},S=(e=>{const{classes:r,disableGutters:t,variant:o}=e,i={root:["root",!t&&"gutters",o]};return(0,n.A)(i,d.U,r)})(m);return(0,c.jsx)(u,{as:a,className:(0,i.A)(S.root,o),ref:r,ownerState:m,...p})}))},89663:(e,r,t)=>{t.d(r,{A:()=>a,U:()=>n});var o=t(33761),i=t(85693);function n(e){return(0,i.Ay)("MuiToolbar",e)}const a=(0,o.A)("MuiToolbar",["root","gutters","regular","dense"])},19387:(e,r,t)=>{t.r(r),t.d(r,{COMFORTABLE_DENSITY_FACTOR:()=>Ve.Y8,COMPACT_DENSITY_FACTOR:()=>Ve.tS,DATA_GRID_PROPS_DEFAULT_VALUES:()=>l.E,DEFAULT_GRID_AUTOSIZE_OPTIONS:()=>$e.N,DEFAULT_GRID_COL_TYPE_KEY:()=>Mr.x,DataGrid:()=>a.z,EMPTY_PINNED_COLUMN_FIELDS:()=>Pe.u,EMPTY_RENDER_CONTEXT:()=>nr.$A,GRID_ACTIONS_COLUMN_TYPE:()=>br.D,GRID_ACTIONS_COL_DEF:()=>br.C,GRID_BOOLEAN_COL_DEF:()=>Rr.H,GRID_CHECKBOX_SELECTION_COL_DEF:()=>Ar.f,GRID_CHECKBOX_SELECTION_FIELD:()=>Ar.t,GRID_COLUMN_MENU_SLOTS:()=>$.ai,GRID_COLUMN_MENU_SLOT_PROPS:()=>$.ep,GRID_DATETIME_COL_DEF:()=>Or.mP,GRID_DATE_COL_DEF:()=>Or.Bj,GRID_DEFAULT_LOCALE_TEXT:()=>_e._,GRID_EXPERIMENTAL_ENABLED:()=>Me,GRID_NUMERIC_COL_DEF:()=>Ir.g,GRID_ROOT_GROUP_ID:()=>Je.OL,GRID_SINGLE_SELECT_COL_DEF:()=>Er.m,GRID_STRING_COL_DEF:()=>wr.C,GridActionsCell:()=>G.i,GridActionsCellItem:()=>E,GridAddIcon:()=>H.jt,GridApiContext:()=>Oe.k,GridArrowDownwardIcon:()=>H.xC,GridArrowUpwardIcon:()=>H.ay,GridBody:()=>s.S,GridBooleanCell:()=>g.n,GridCell:()=>u.LX,GridCellCheckboxForwardRef:()=>P.c,GridCellCheckboxRenderer:()=>P.r,GridCellEditStartReasons:()=>Gr.a,GridCellEditStopReasons:()=>Gr.Q,GridCellModes:()=>Sr.bs,GridCheckCircleIcon:()=>H.gC,GridCheckIcon:()=>H.qb,GridClearIcon:()=>H.hR,GridCloseIcon:()=>H.yd,GridColumnHeaderFilterIconButton:()=>L.f,GridColumnHeaderItem:()=>x.d,GridColumnHeaderMenu:()=>z.H,GridColumnHeaderSeparator:()=>M.V,GridColumnHeaderSeparatorSides:()=>M.j,GridColumnHeaderSortIcon:()=>_.J,GridColumnHeaderTitle:()=>k._,GridColumnHeaders:()=>_r.f,GridColumnIcon:()=>H.Gf,GridColumnMenu:()=>$.aU,GridColumnMenuColumnsItem:()=>V.O,GridColumnMenuContainer:()=>B.T,GridColumnMenuFilterItem:()=>U.r,GridColumnMenuHideItem:()=>X.l,GridColumnMenuManageItem:()=>j.s,GridColumnMenuSortItem:()=>Z.H,GridColumnsManagement:()=>Ce.D,GridColumnsPanel:()=>Y.G,GridContextProvider:()=>fr.X,GridCsvExportMenuItem:()=>fe.jX,GridDeleteForeverIcon:()=>H.aC,GridDeleteIcon:()=>H.jy,GridDragIcon:()=>H.Cf,GridEditBooleanCell:()=>p.X,GridEditDateCell:()=>m.Z,GridEditInputCell:()=>S.B,GridEditModes:()=>Sr.RL,GridEditSingleSelectCell:()=>C.D,GridExpandMoreIcon:()=>H.T5,GridFilterAltIcon:()=>H.lj,GridFilterForm:()=>se.R,GridFilterInputBoolean:()=>ge.h,GridFilterInputDate:()=>ce.L,GridFilterInputMultipleSingleSelect:()=>Se.B,GridFilterInputMultipleValue:()=>me.M,GridFilterInputSingleSelect:()=>ue.t,GridFilterInputValue:()=>de.y,GridFilterListIcon:()=>H.Ui,GridFilterPanel:()=>pe.v,GridFooter:()=>Ie.C,GridFooterContainer:()=>T.J,GridFooterPlaceholder:()=>d.r,GridGenericColumnMenu:()=>$.HO,GridHeader:()=>Ee.k,GridHeaderCheckbox:()=>N.J,GridKeyboardArrowRight:()=>H.fX,GridLoadIcon:()=>H.e2,GridLoadingOverlay:()=>we.b,GridLogicOperator:()=>Cr.V,GridMenu:()=>W.U,GridMenuIcon:()=>H.$2,GridMoreVertIcon:()=>H.c8,GridNoRowsOverlay:()=>De.h,GridOverlay:()=>y.$,GridOverlays:()=>c.I,GridPagination:()=>Te.h,GridPanel:()=>Q.F,GridPanelContent:()=>K.o,GridPanelFooter:()=>q.g,GridPanelHeader:()=>ae,GridPanelWrapper:()=>le.G,GridPinnedColumnPosition:()=>Pe.K,GridPreferencePanelsValue:()=>Qe.y,GridPrintExportMenuItem:()=>fe.ME,GridRemoveIcon:()=>H.yk,GridRoot:()=>D.h,GridRow:()=>Fe.T,GridRowCount:()=>ye.g,GridRowEditStartReasons:()=>hr.a,GridRowEditStopReasons:()=>hr.q,GridRowModes:()=>Sr.V_,GridSaveAltIcon:()=>H.U_,GridSearchIcon:()=>H.Kw,GridSelectedRowCount:()=>xe.p,GridSeparatorIcon:()=>H.r$,GridSignature:()=>lr.HV,GridSkeletonCell:()=>w.k,GridTableRowsIcon:()=>H.Bn,GridToolbar:()=>Ge.O,GridToolbarColumnsButton:()=>he.j,GridToolbarContainer:()=>F.b,GridToolbarDensitySelector:()=>ve.z,GridToolbarExport:()=>fe.qn,GridToolbarExportContainer:()=>Re.Z,GridToolbarFilterButton:()=>be.Q,GridToolbarQuickFilter:()=>Ae.b,GridTripleDotsVerticalIcon:()=>H.A_,GridViewColumnIcon:()=>H.jS,GridViewHeadlineIcon:()=>H.dc,GridViewStreamIcon:()=>H.v$,GridVisibilityOffIcon:()=>H.j8,checkGridRowIdIsValid:()=>Je.Gh,createUseGridApiEventHandler:()=>lr.s9,getDataGridUtilityClass:()=>te.B,getDefaultGridFilterModel:()=>Ue.T,getGridBooleanOperators:()=>Dr.y,getGridDateOperators:()=>Tr.Q,getGridDefaultColumnTypes:()=>Mr.Z,getGridNumericOperators:()=>yr.J,getGridNumericQuickFilterFn:()=>yr.h,getGridSingleSelectOperators:()=>Fr.m,getGridStringOperators:()=>xr.n,getGridStringQuickFilterFn:()=>xr.X,gridClasses:()=>te.x,gridColumnDefinitionsSelector:()=>ke.OV,gridColumnFieldsSelector:()=>ke.JR,gridColumnGroupingSelector:()=>Ne.tf,gridColumnGroupsHeaderMaxDepthSelector:()=>Ne.aC,gridColumnGroupsHeaderStructureSelector:()=>Ne.GD,gridColumnGroupsLookupSelector:()=>Ne.ED,gridColumnGroupsUnwrappedModelSelector:()=>Ne.TQ,gridColumnLookupSelector:()=>ke.gv,gridColumnMenuSelector:()=>Le.$,gridColumnPositionsSelector:()=>ke.Sw,gridColumnResizeSelector:()=>ze,gridColumnVisibilityModelSelector:()=>ke.FY,gridColumnsStateSelector:()=>ke.em,gridColumnsTotalWidthSelector:()=>ke.fc,gridDataRowIdsSelector:()=>qe.A6,gridDateComparator:()=>tr.VE,gridDateFormatter:()=>Or.zT,gridDateTimeFormatter:()=>Or.SZ,gridDensityFactorSelector:()=>Ve.rf,gridDensitySelector:()=>Ve._v,gridDimensionsSelector:()=>or.z,gridEditRowsStateSelector:()=>je.w,gridExpandedRowCountSelector:()=>Xe.O7,gridExpandedSortedRowEntriesSelector:()=>Xe.em,gridExpandedSortedRowIdsSelector:()=>Xe.ux,gridFilterActiveItemsLookupSelector:()=>Xe.od,gridFilterActiveItemsSelector:()=>Xe.Ai,gridFilterModelSelector:()=>Xe.ZI,gridFilterableColumnDefinitionsSelector:()=>ke.Oe,gridFilterableColumnLookupSelector:()=>ke.U8,gridFilteredDescendantCountLookupSelector:()=>Xe.ZP,gridFilteredDescendantRowCountSelector:()=>Xe.r4,gridFilteredRowCountSelector:()=>Xe.ee,gridFilteredRowsLookupSelector:()=>Xe.wx,gridFilteredSortedRowEntriesSelector:()=>Xe.oU,gridFilteredSortedRowIdsSelector:()=>Xe.qA,gridFilteredSortedTopLevelRowEntriesSelector:()=>Xe.tW,gridFilteredTopLevelRowCountSelector:()=>Xe.RN,gridFocusCellSelector:()=>Ze.MO,gridFocusColumnGroupHeaderSelector:()=>Ze.WO,gridFocusColumnHeaderFilterSelector:()=>Ze.XY,gridFocusColumnHeaderSelector:()=>Ze.rj,gridFocusStateSelector:()=>Ze.he,gridHasColSpanSelector:()=>ke.kw,gridHeaderFilteringEditFieldSelector:()=>ir.B$,gridHeaderFilteringEnabledSelector:()=>ir.yt,gridHeaderFilteringMenuSelector:()=>ir.K8,gridHeaderFilteringStateSelector:()=>ir.ON,gridNumberComparator:()=>tr.Ou,gridPageCountSelector:()=>We.O,gridPageSelector:()=>We.$i,gridPageSizeSelector:()=>We.ij,gridPaginatedVisibleSortedGridRowEntriesSelector:()=>We.Q8,gridPaginatedVisibleSortedGridRowIdsSelector:()=>We.ee,gridPaginationMetaSelector:()=>We.py,gridPaginationModelSelector:()=>We.lN,gridPaginationRowCountSelector:()=>We.H2,gridPaginationRowRangeSelector:()=>We.vd,gridPaginationSelector:()=>We.M5,gridPanelClasses:()=>Q.x,gridPinnedColumnsSelector:()=>ke.He,gridPreferencePanelStateSelector:()=>Ye._,gridQuickFilterValuesSelector:()=>Xe.q6,gridRenderContextColumnsSelector:()=>ar.EG,gridRenderContextSelector:()=>ar.nZ,gridResizingColumnFieldSelector:()=>Be,gridRowCountSelector:()=>qe.H0,gridRowGroupingNameSelector:()=>qe.Y1,gridRowMaximumTreeDepthSelector:()=>qe.V2,gridRowSelectionStateSelector:()=>er.Bi,gridRowTreeDepthsSelector:()=>qe.Mz,gridRowTreeSelector:()=>qe.qj,gridRowsDataRowIdToIdLookupSelector:()=>qe.gk,gridRowsLoadingSelector:()=>qe.Dl,gridRowsLookupSelector:()=>qe.rI,gridRowsMetaSelector:()=>Ke.E,gridSortColumnLookupSelector:()=>rr.oF,gridSortModelSelector:()=>rr.XU,gridSortedRowEntriesSelector:()=>rr.J6,gridSortedRowIdsSelector:()=>rr.RJ,gridStringOrNumberComparator:()=>tr.Az,gridTabIndexCellSelector:()=>Ze.H5,gridTabIndexColumnGroupHeaderSelector:()=>Ze.dS,gridTabIndexColumnHeaderFilterSelector:()=>Ze.IL,gridTabIndexColumnHeaderSelector:()=>Ze.Kr,gridTabIndexStateSelector:()=>Ze.Uh,gridTopLevelRowCountSelector:()=>qe.O8,gridVirtualizationColumnEnabledSelector:()=>ar.m5,gridVirtualizationEnabledSelector:()=>ar._U,gridVirtualizationRowEnabledSelector:()=>ar.Al,gridVirtualizationSelector:()=>ar.dU,gridVisibleColumnDefinitionsSelector:()=>ke.iv,gridVisibleColumnFieldsSelector:()=>ke.TI,gridVisiblePinnedColumnDefinitionsSelector:()=>ke.Q1,gridVisibleRowsLookupSelector:()=>Xe.lL,isAutogeneratedRow:()=>Je.VO,isLeaf:()=>vr.x,renderActionsCell:()=>G.o,renderBooleanCell:()=>g.b,renderEditBooleanCell:()=>p.b,renderEditDateCell:()=>m.z,renderEditInputCell:()=>S.j,renderEditSingleSelectCell:()=>C.j,selectedGridRowsCountSelector:()=>er.vF,selectedGridRowsSelector:()=>er.gt,selectedIdsLookupSelector:()=>er.Zk,unstable_resetCleanupTracking:()=>lr._7,useFirstRender:()=>gr.g,useGridApiContext:()=>o.h,useGridApiEventHandler:()=>lr.cz,useGridApiMethod:()=>sr.P,useGridApiOptionHandler:()=>lr.re,useGridApiRef:()=>i.b,useGridLogger:()=>dr.q,useGridNativeEventListener:()=>ur.h,useGridRootProps:()=>n.A,useGridSelector:()=>cr.Nc,useGridVirtualization:()=>nr.lA,useOnMount:()=>pr.A,useRunOnce:()=>mr.A,virtualizationStateInitializer:()=>nr.nu});var o=t(76404),i=t(3274),n=t(64565),a=t(85676),l=t(35378),s=t(71173),d=t(98114),c=t(80677),u=t(33360),g=t(2735),p=t(24411),m=t(26067),S=t(3619),C=t(57715),G=t(61828),h=t(6614),v=t(83673),f=t(7552),b=t(29629),R=t(66765),A=t(69500);const O=["label","icon","showInMenu","onClick"],I=["label","icon","showInMenu","onClick","closeMenuOnClick","closeMenu"],E=f.forwardRef(((e,r)=>{const t=(0,n.A)();if(!e.showInMenu){const{label:o,icon:i,onClick:n}=e,a=(0,v.A)(e,O),l=e=>{n?.(e)};return(0,A.jsx)(t.slots.baseIconButton,(0,h.A)({ref:r,size:"small",role:"menuitem","aria-label":o},a,{onClick:l},t.slotProps?.baseIconButton,{children:f.cloneElement(i,{fontSize:"small"})}))}const{label:o,icon:i,onClick:a,closeMenuOnClick:l=!0,closeMenu:s}=e,d=(0,v.A)(e,I);return(0,A.jsxs)(b.A,(0,h.A)({ref:r},d,{onClick:e=>{a?.(e),l&&s?.()},children:[i&&(0,A.jsx)(R.A,{children:i}),o]}))}));var w=t(10736),D=t(48335),T=t(91681),y=t(1895),F=t(61977),x=t(86775),M=t(38975),_=t(30943),L=t(92765),k=t(87038),P=t(17279),N=t(83861),H=t(80170),z=t(42386),B=t(2956),$=t(66456),V=t(32745),j=t(61361),U=t(32780),X=t(49158),Z=t(23942),W=t(83749),Y=t(16028),Q=t(63869),K=t(53936),q=t(95126),J=t(93878),ee=t(24959),re=t(88519),te=t(76959);const oe=["className"],ie=e=>{const{classes:r}=e;return(0,re.A)({root:["panelHeader"]},te.B,r)},ne=(0,ee.A)("div",{name:"MuiDataGrid",slot:"PanelHeader",overridesResolver:(e,r)=>r.panelHeader})((({theme:e})=>({padding:e.spacing(1)})));function ae(e){const{className:r}=e,t=(0,v.A)(e,oe),o=(0,n.A)(),i=ie(o);return(0,A.jsx)(ne,(0,h.A)({className:(0,J.A)(r,i.root),ownerState:o},t))}var le=t(98118),se=t(55766),de=t(31525),ce=t(22762),ue=t(24634),ge=t(19868),pe=t(51820),me=t(33745),Se=t(57134),Ce=t(36014),Ge=t(76157),he=t(85262),ve=t(44784),fe=t(38175),be=t(19271),Re=t(75492),Ae=t(26524),Oe=t(92019),Ie=t(55507),Ee=t(1074),we=t(29463),De=t(77484),Te=t(56384),ye=t(22987),Fe=t(34299),xe=t(43434);const Me=!1;var _e=t(52101),Le=t(83182),ke=t(80163),Pe=t(36155),Ne=t(8751),He=t(33642);const ze=e=>e.columnResize,Be=(0,He.Mz)(ze,(e=>e.resizingColumnField));var $e=t(32125),Ve=t(33658),je=t(62185),Ue=t(15060),Xe=t(2220),Ze=t(3247),We=t(24940),Ye=t(38577),Qe=t(48534),Ke=t(69639),qe=t(4394),Je=t(59458),er=t(82188),rr=t(43026),tr=t(14298),or=t(29641),ir=t(10365),nr=t(55730),ar=t(35281),lr=t(89148),sr=t(99270),dr=t(65111),cr=t(12274),ur=t(47434),gr=t(20849),pr=t(58329),mr=t(61959),Sr=t(10176),Cr=t(93527),Gr=t(88729),hr=t(89037),vr=t(20581),fr=t(61311),br=t(65325),Rr=t(97830),Ar=t(92179),Or=t(54310),Ir=t(21605),Er=t(10830),wr=t(59747),Dr=t(52446),Tr=t(30430),yr=t(81647),Fr=t(60150),xr=t(21721),Mr=t(23987),_r=t(79162)}}]);
+//# sourceMappingURL=5595.b4517d69.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5595.b4517d69.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,7 @@
+/**
+ * @mui/x-data-grid v7.18.0
+ *
+ * @license MIT
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5595.b4517d69.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5595.b4517d69.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCellItem.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelHeader.js","../../../node_modules/@mui/x-data-grid/constants/envConstants.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnResize/columnResizeSelector.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"label\", \"icon\", \"showInMenu\", \"onClick\"],\n  _excluded2 = [\"label\", \"icon\", \"showInMenu\", \"onClick\", \"closeMenuOnClick\", \"closeMenu\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridActionsCellItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const rootProps = useGridRootProps();\n  if (!props.showInMenu) {\n    const {\n        label,\n        icon,\n        onClick\n      } = props,\n      other = _objectWithoutPropertiesLoose(props, _excluded);\n    const handleClick = event => {\n      onClick?.(event);\n    };\n    return /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n      ref: ref,\n      size: \"small\",\n      role: \"menuitem\",\n      \"aria-label\": label\n    }, other, {\n      onClick: handleClick\n    }, rootProps.slotProps?.baseIconButton, {\n      children: /*#__PURE__*/React.cloneElement(icon, {\n        fontSize: 'small'\n      })\n    }));\n  }\n  const {\n      label,\n      icon,\n      onClick,\n      closeMenuOnClick = true,\n      closeMenu\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const handleClick = event => {\n    onClick?.(event);\n    if (closeMenuOnClick) {\n      closeMenu?.();\n    }\n  };\n  return /*#__PURE__*/_jsxs(MenuItem, _extends({\n    ref: ref\n  }, other, {\n    onClick: handleClick,\n    children: [icon && /*#__PURE__*/_jsx(ListItemIcon, {\n      children: icon\n    }), label]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCellItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component\n   */\n  component: PropTypes.elementType,\n  icon: PropTypes.element,\n  label: PropTypes.string.isRequired,\n  showInMenu: PropTypes.bool\n} : void 0;\nexport { GridActionsCellItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['panelHeader']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelHeaderRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'PanelHeader',\n  overridesResolver: (props, styles) => styles.panelHeader\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(1)\n}));\nfunction GridPanelHeader(props) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridPanelHeaderRoot, _extends({\n    className: clsx(className, classes.root),\n    ownerState: rootProps\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelHeader.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelHeader };","// A guide to feature toggling (deprecated)\n//\n// The feature toggle is:\n// - independent from the NODE_ENV\n// - isn't pruning code in production, as the objective is to eventually ship the code.\n// - doesn't allow to cherry-pick which feature to enable\n//\n// By default, the experimental features are only enabled in:\n// - the local environment\n// - the pull request previews\n//\n// Reviewers can force the value with the local storage and the GRID_EXPERIMENTAL_ENABLED key:\n// - 'true' => force it to be enabled\n// - 'false' => force it to be disabled\n//\n// Developers (users) are discouraged to enable the experimental feature by setting the GRID_EXPERIMENTAL_ENABLED env.\n// Instead, prefer exposing experimental APIs, for instance, a prop or a new `unstable_` module.\n\nexport const GRID_EXPERIMENTAL_ENABLED = false;","import { createSelector } from \"../../../utils/createSelector.js\";\nexport const gridColumnResizeSelector = state => state.columnResize;\nexport const gridResizingColumnFieldSelector = createSelector(gridColumnResizeSelector, columnResize => columnResize.resizingColumnField);"],"names":["BadgeRoot","styled","name","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","padding","height","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","map","style","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","className","classes","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","animation","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","size","thickness","value","circleStyle","rootStyle","circumference","Math","PI","toFixed","round","width","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","getToolbarUtilityClass","_excluded","_excluded2","GridActionsCellItem","useGridRootProps","showInMenu","label","icon","onClick","handleClick","baseIconButton","closeMenuOnClick","closeMenu","MenuItem","ListItemIcon","GridPanelHeaderRoot","panelHeader","GridPanelHeader","GRID_EXPERIMENTAL_ENABLED","gridColumnResizeSelector","state","columnResize","gridResizingColumnFieldSelector","createSelector","resizingColumnField"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5608.1b8d39e1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5608],{15608:(e,t,r)=>{r.r(t),r.d(t,{default:()=>j,drawerClasses:()=>$,getDrawerUtilityClass:()=>S});var n=r(7552),o=r(93878),a=r(70799),i=r(93876),s=r(31694),p=r(16157),l=r(28325),c=r(987),d=r(51584),u=r(48231),h=r(46302),f=r(46689),m=r(69500);function g(e,t,r){var n;const o=function(e,t,r){const n=t.getBoundingClientRect(),o=r&&r.getBoundingClientRect(),a=(0,f.A)(t);let i;if(t.fakeTransform)i=t.fakeTransform;else{const e=a.getComputedStyle(t);i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("transform")}let s=0,p=0;if(i&&"none"!==i&&"string"==typeof i){const e=i.split("(")[1].split(")")[0].split(",");s=parseInt(e[4],10),p=parseInt(e[5],10)}return"left"===e?o?`translateX(${o.right+s-n.left}px)`:`translateX(${a.innerWidth+s-n.left}px)`:"right"===e?o?`translateX(-${n.right-o.left-s}px)`:`translateX(-${n.left+n.width-s}px)`:"up"===e?o?`translateY(${o.bottom+p-n.top}px)`:`translateY(${a.innerHeight+p-n.top}px)`:o?`translateY(-${n.top-o.top+n.height-p}px)`:`translateY(-${n.top+n.height-p}px)`}(e,t,"function"==typeof(n=r)?n():n);o&&(t.style.webkitTransform=o,t.style.transform=o)}const v=n.forwardRef((function(e,t){const r=(0,u.A)(),o={enter:r.transitions.easing.easeOut,exit:r.transitions.easing.sharp},a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:i,appear:s=!0,children:v,container:y,direction:w="down",easing:x=o,in:A,onEnter:k,onEntered:b,onEntering:E,onExit:D,onExited:S,onExiting:$,style:R,timeout:T=a,TransitionComponent:C=p.Ay,...P}=e,B=n.useRef(null),j=(0,d.A)((0,l.A)(v),B,t),I=e=>t=>{e&&(void 0===t?e(B.current):e(B.current,t))},L=I(((e,t)=>{g(w,e,y),(0,h.q)(e),k&&k(e,t)})),M=I(((e,t)=>{const n=(0,h.c)({timeout:T,style:R,easing:x},{mode:"enter"});e.style.webkitTransition=r.transitions.create("-webkit-transform",{...n}),e.style.transition=r.transitions.create("transform",{...n}),e.style.webkitTransform="none",e.style.transform="none",E&&E(e,t)})),z=I(b),N=I($),Y=I((e=>{const t=(0,h.c)({timeout:T,style:R,easing:x},{mode:"exit"});e.style.webkitTransition=r.transitions.create("-webkit-transform",t),e.style.transition=r.transitions.create("transform",t),g(w,e,y),D&&D(e)})),X=I((e=>{e.style.webkitTransition="",e.style.transition="",S&&S(e)})),_=n.useCallback((()=>{B.current&&g(w,B.current,y)}),[w,y]);return n.useEffect((()=>{if(A||"down"===w||"right"===w)return;const e=(0,c.A)((()=>{B.current&&g(w,B.current,y)})),t=(0,f.A)(B.current);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}}),[w,A,y]),n.useEffect((()=>{A||_()}),[A,_]),(0,m.jsx)(C,{nodeRef:B,onEnter:L,onEntered:z,onEntering:M,onExit:Y,onExited:X,onExiting:N,addEndListener:e=>{i&&i(B.current,e)},appear:s,in:A,timeout:T,...P,children:(e,t)=>n.cloneElement(v,{ref:j,style:{visibility:"exited"!==e||A?void 0:"hidden",...R,...v.props.style},...t})})}));var y=r(943),w=r(15622),x=r(55270),A=r(51148),k=r(60129),b=r(4785),E=r(33761),D=r(85693);function S(e){return(0,D.Ay)("MuiDrawer",e)}const $=(0,E.A)("MuiDrawer",["root","docked","paper","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedRight","paperAnchorDockedTop","paperAnchorDockedBottom","modal"]),R=(e,t)=>{const{ownerState:r}=e;return[t.root,("permanent"===r.variant||"persistent"===r.variant)&&t.docked,t.modal]},T=(0,A.Ay)(s.A,{name:"MuiDrawer",slot:"Root",overridesResolver:R})((0,k.A)((({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer})))),C=(0,A.Ay)("div",{shouldForwardProp:x.A,name:"MuiDrawer",slot:"Docked",skipVariantsResolver:!1,overridesResolver:R})({flex:"0 0 auto"}),P=(0,A.Ay)(y.A,{name:"MuiDrawer",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.paper,t[`paperAnchor${(0,w.A)(r.anchor)}`],"temporary"!==r.variant&&t[`paperAnchorDocked${(0,w.A)(r.anchor)}`]]}})((0,k.A)((({theme:e})=>({overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0,variants:[{props:{anchor:"left"},style:{left:0}},{props:{anchor:"top"},style:{top:0,left:0,right:0,height:"auto",maxHeight:"100%"}},{props:{anchor:"right"},style:{right:0}},{props:{anchor:"bottom"},style:{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"}},{props:({ownerState:e})=>"left"===e.anchor&&"temporary"!==e.variant,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>"top"===e.anchor&&"temporary"!==e.variant,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>"right"===e.anchor&&"temporary"!==e.variant,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>"bottom"===e.anchor&&"temporary"!==e.variant,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]})))),B={left:"right",right:"left",top:"down",bottom:"up"},j=n.forwardRef((function(e,t){const r=(0,b.b)({props:e,name:"MuiDrawer"}),s=(0,u.A)(),p=(0,i.I)(),l={enter:s.transitions.duration.enteringScreen,exit:s.transitions.duration.leavingScreen},{anchor:c="left",BackdropProps:d,children:h,className:f,elevation:g=16,hideBackdrop:y=!1,ModalProps:{BackdropProps:x,...A}={},onClose:k,open:E=!1,PaperProps:D={},SlideProps:$,TransitionComponent:R=v,transitionDuration:j=l,variant:I="temporary",...L}=r,M=n.useRef(!1);n.useEffect((()=>{M.current=!0}),[]);const z=function({direction:e},t){return"rtl"===e&&function(e){return["left","right"].includes(e)}(t)?B[t]:t}({direction:p?"rtl":"ltr"},c),N=c,Y={...r,anchor:N,elevation:g,open:E,variant:I,...L},X=(e=>{const{classes:t,anchor:r,variant:n}=e,o={root:["root"],docked:[("permanent"===n||"persistent"===n)&&"docked"],modal:["modal"],paper:["paper",`paperAnchor${(0,w.A)(r)}`,"temporary"!==n&&`paperAnchorDocked${(0,w.A)(r)}`]};return(0,a.A)(o,S,t)})(Y),_=(0,m.jsx)(P,{elevation:"temporary"===I?g:0,square:!0,...D,className:(0,o.A)(X.paper,D.className),ownerState:Y,children:h});if("permanent"===I)return(0,m.jsx)(C,{className:(0,o.A)(X.root,X.docked,f),ownerState:Y,ref:t,...L,children:_});const H=(0,m.jsx)(R,{in:E,direction:B[z],timeout:j,appear:M.current,...$,children:_});return"persistent"===I?(0,m.jsx)(C,{className:(0,o.A)(X.root,X.docked,f),ownerState:Y,ref:t,...L,children:H}):(0,m.jsx)(T,{BackdropProps:{...d,...x,transitionDuration:j},className:(0,o.A)(X.root,X.modal,f),open:E,ownerState:Y,onClose:k,hideBackdrop:y,ref:t,...L,...A,children:H})}))}}]);
+//# sourceMappingURL=5608.1b8d39e1.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5608.1b8d39e1.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5608.1b8d39e1.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Slide/Slide.js","../../../node_modules/@mui/material/Drawer/drawerClasses.js","../../../node_modules/@mui/material/Drawer/Drawer.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport debounce from \"../utils/debounce.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { reflow, getTransitionProps } from \"../transitions/utils.js\";\nimport { ownerWindow } from \"../utils/index.js\";\n\n// Translate the node so it can't be seen on the screen.\n// Later, we're going to translate the node back to its original location with `none`.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getTranslateValue(direction, node, resolvedContainer) {\n  const rect = node.getBoundingClientRect();\n  const containerRect = resolvedContainer && resolvedContainer.getBoundingClientRect();\n  const containerWindow = ownerWindow(node);\n  let transform;\n  if (node.fakeTransform) {\n    transform = node.fakeTransform;\n  } else {\n    const computedStyle = containerWindow.getComputedStyle(node);\n    transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n  }\n  let offsetX = 0;\n  let offsetY = 0;\n  if (transform && transform !== 'none' && typeof transform === 'string') {\n    const transformValues = transform.split('(')[1].split(')')[0].split(',');\n    offsetX = parseInt(transformValues[4], 10);\n    offsetY = parseInt(transformValues[5], 10);\n  }\n  if (direction === 'left') {\n    if (containerRect) {\n      return `translateX(${containerRect.right + offsetX - rect.left}px)`;\n    }\n    return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n  }\n  if (direction === 'right') {\n    if (containerRect) {\n      return `translateX(-${rect.right - containerRect.left - offsetX}px)`;\n    }\n    return `translateX(-${rect.left + rect.width - offsetX}px)`;\n  }\n  if (direction === 'up') {\n    if (containerRect) {\n      return `translateY(${containerRect.bottom + offsetY - rect.top}px)`;\n    }\n    return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n  }\n\n  // direction === 'down'\n  if (containerRect) {\n    return `translateY(-${rect.top - containerRect.top + rect.height - offsetY}px)`;\n  }\n  return `translateY(-${rect.top + rect.height - offsetY}px)`;\n}\nfunction resolveContainer(containerPropProp) {\n  return typeof containerPropProp === 'function' ? containerPropProp() : containerPropProp;\n}\nexport function setTranslateValue(direction, node, containerProp) {\n  const resolvedContainer = resolveContainer(containerProp);\n  const transform = getTranslateValue(direction, node, resolvedContainer);\n  if (transform) {\n    node.style.webkitTransform = transform;\n    node.style.transform = transform;\n  }\n}\n\n/**\n * The Slide transition is used by the [Drawer](/material-ui/react-drawer/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {\n  const theme = useTheme();\n  const defaultEasing = {\n    enter: theme.transitions.easing.easeOut,\n    exit: theme.transitions.easing.sharp\n  };\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    addEndListener,\n    appear = true,\n    children,\n    container: containerProp,\n    direction = 'down',\n    easing: easingProp = defaultEasing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    style,\n    timeout = defaultTimeout,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const childrenRef = React.useRef(null);\n  const handleRef = useForkRef(getReactNodeRef(children), childrenRef, ref);\n  const normalizedTransitionCallback = callback => isAppearing => {\n    if (callback) {\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (isAppearing === undefined) {\n        callback(childrenRef.current);\n      } else {\n        callback(childrenRef.current, isAppearing);\n      }\n    }\n  };\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    setTranslateValue(direction, node, containerProp);\n    reflow(node);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const transitionProps = getTransitionProps({\n      timeout,\n      style,\n      easing: easingProp\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('-webkit-transform', {\n      ...transitionProps\n    });\n    node.style.transition = theme.transitions.create('transform', {\n      ...transitionProps\n    });\n    node.style.webkitTransform = 'none';\n    node.style.transform = 'none';\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      timeout,\n      style,\n      easing: easingProp\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('-webkit-transform', transitionProps);\n    node.style.transition = theme.transitions.create('transform', transitionProps);\n    setTranslateValue(direction, node, containerProp);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(node => {\n    // No need for transitions when the component is hidden\n    node.style.webkitTransition = '';\n    node.style.transition = '';\n    if (onExited) {\n      onExited(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(childrenRef.current, next);\n    }\n  };\n  const updatePosition = React.useCallback(() => {\n    if (childrenRef.current) {\n      setTranslateValue(direction, childrenRef.current, containerProp);\n    }\n  }, [direction, containerProp]);\n  React.useEffect(() => {\n    // Skip configuration where the position is screen size invariant.\n    if (inProp || direction === 'down' || direction === 'right') {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      if (childrenRef.current) {\n        setTranslateValue(direction, childrenRef.current, containerProp);\n      }\n    });\n    const containerWindow = ownerWindow(childrenRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [direction, inProp, containerProp]);\n  React.useEffect(() => {\n    if (!inProp) {\n      // We need to update the position of the drawer when the direction change and\n      // when it's hidden.\n      updatePosition();\n    }\n  }, [inProp, updatePosition]);\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    nodeRef: childrenRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    appear: appear,\n    in: inProp,\n    timeout: timeout,\n    ...other,\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, {\n        ref: handleRef,\n        style: {\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n          ...style,\n          ...children.props.style\n        },\n        ...childProps\n      });\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the container the Slide is transitioning from.\n   */\n  container: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedContainer = resolveContainer(props.container);\n      if (resolvedContainer && resolvedContainer.nodeType === 1) {\n        const box = resolvedContainer.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `container` prop provided to the component is invalid.', 'It should be an HTML element instance.'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Direction the child node will enter from.\n   * @default 'down'\n   */\n  direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   * @default {\n   *   enter: theme.transitions.easing.easeOut,\n   *   exit: theme.transitions.easing.sharp,\n   * }\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Slide;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDrawerUtilityClass(slot) {\n  return generateUtilityClass('MuiDrawer', slot);\n}\nconst drawerClasses = generateUtilityClasses('MuiDrawer', ['root', 'docked', 'paper', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);\nexport default drawerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport Modal from \"../Modal/index.js\";\nimport Slide from \"../Slide/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDrawerUtilityClass } from \"./drawerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    anchor,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    docked: [(variant === 'permanent' || variant === 'persistent') && 'docked'],\n    modal: ['modal'],\n    paper: ['paper', `paperAnchor${capitalize(anchor)}`, variant !== 'temporary' && `paperAnchorDocked${capitalize(anchor)}`]\n  };\n  return composeClasses(slots, getDrawerUtilityClass, classes);\n};\nconst DrawerRoot = styled(Modal, {\n  name: 'MuiDrawer',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.drawer\n})));\nconst DrawerDockedRoot = styled('div', {\n  shouldForwardProp: rootShouldForwardProp,\n  name: 'MuiDrawer',\n  slot: 'Docked',\n  skipVariantsResolver: false,\n  overridesResolver\n})({\n  flex: '0 0 auto'\n});\nconst DrawerPaper = styled(Paper, {\n  name: 'MuiDrawer',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`paperAnchor${capitalize(ownerState.anchor)}`], ownerState.variant !== 'temporary' && styles[`paperAnchorDocked${capitalize(ownerState.anchor)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  overflowY: 'auto',\n  display: 'flex',\n  flexDirection: 'column',\n  height: '100%',\n  flex: '1 0 auto',\n  zIndex: (theme.vars || theme).zIndex.drawer,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  // temporary style\n  position: 'fixed',\n  top: 0,\n  // We disable the focus ring for mouse, touch and keyboard users.\n  // At some point, it would be better to keep it for keyboard users.\n  // :focus-ring CSS pseudo-class will help.\n  outline: 0,\n  variants: [{\n    props: {\n      anchor: 'left'\n    },\n    style: {\n      left: 0\n    }\n  }, {\n    props: {\n      anchor: 'top'\n    },\n    style: {\n      top: 0,\n      left: 0,\n      right: 0,\n      height: 'auto',\n      maxHeight: '100%'\n    }\n  }, {\n    props: {\n      anchor: 'right'\n    },\n    style: {\n      right: 0\n    }\n  }, {\n    props: {\n      anchor: 'bottom'\n    },\n    style: {\n      top: 'auto',\n      left: 0,\n      bottom: 0,\n      right: 0,\n      height: 'auto',\n      maxHeight: '100%'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchor === 'left' && ownerState.variant !== 'temporary',\n    style: {\n      borderRight: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchor === 'top' && ownerState.variant !== 'temporary',\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchor === 'right' && ownerState.variant !== 'temporary',\n    style: {\n      borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchor === 'bottom' && ownerState.variant !== 'temporary',\n    style: {\n      borderTop: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }]\n})));\nconst oppositeDirection = {\n  left: 'right',\n  right: 'left',\n  top: 'down',\n  bottom: 'up'\n};\nexport function isHorizontal(anchor) {\n  return ['left', 'right'].includes(anchor);\n}\nexport function getAnchor({\n  direction\n}, anchor) {\n  return direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;\n}\n\n/**\n * The props of the [Modal](/material-ui/api/modal/) component are available\n * when `variant=\"temporary\"` is set.\n */\nconst Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDrawer'\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    anchor: anchorProp = 'left',\n    BackdropProps,\n    children,\n    className,\n    elevation = 16,\n    hideBackdrop = false,\n    ModalProps: {\n      BackdropProps: BackdropPropsProp,\n      ...ModalProps\n    } = {},\n    onClose,\n    open = false,\n    PaperProps = {},\n    SlideProps,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Slide,\n    transitionDuration = defaultTransitionDuration,\n    variant = 'temporary',\n    ...other\n  } = props;\n\n  // Let's assume that the Drawer will always be rendered on user space.\n  // We use this state is order to skip the appear transition during the\n  // initial mount of the component.\n  const mounted = React.useRef(false);\n  React.useEffect(() => {\n    mounted.current = true;\n  }, []);\n  const anchorInvariant = getAnchor({\n    direction: isRtl ? 'rtl' : 'ltr'\n  }, anchorProp);\n  const anchor = anchorProp;\n  const ownerState = {\n    ...props,\n    anchor,\n    elevation,\n    open,\n    variant,\n    ...other\n  };\n  const classes = useUtilityClasses(ownerState);\n  const drawer = /*#__PURE__*/_jsx(DrawerPaper, {\n    elevation: variant === 'temporary' ? elevation : 0,\n    square: true,\n    ...PaperProps,\n    className: clsx(classes.paper, PaperProps.className),\n    ownerState: ownerState,\n    children: children\n  });\n  if (variant === 'permanent') {\n    return /*#__PURE__*/_jsx(DrawerDockedRoot, {\n      className: clsx(classes.root, classes.docked, className),\n      ownerState: ownerState,\n      ref: ref,\n      ...other,\n      children: drawer\n    });\n  }\n  const slidingDrawer = /*#__PURE__*/_jsx(TransitionComponent, {\n    in: open,\n    direction: oppositeDirection[anchorInvariant],\n    timeout: transitionDuration,\n    appear: mounted.current,\n    ...SlideProps,\n    children: drawer\n  });\n  if (variant === 'persistent') {\n    return /*#__PURE__*/_jsx(DrawerDockedRoot, {\n      className: clsx(classes.root, classes.docked, className),\n      ownerState: ownerState,\n      ref: ref,\n      ...other,\n      children: slidingDrawer\n    });\n  }\n\n  // variant === temporary\n  return /*#__PURE__*/_jsx(DrawerRoot, {\n    BackdropProps: {\n      ...BackdropProps,\n      ...BackdropPropsProp,\n      transitionDuration\n    },\n    className: clsx(classes.root, classes.modal, className),\n    open: open,\n    ownerState: ownerState,\n    onClose: onClose,\n    hideBackdrop: hideBackdrop,\n    ref: ref,\n    ...other,\n    ...ModalProps,\n    children: slidingDrawer\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Drawer.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Side from which the drawer will appear.\n   * @default 'left'\n   */\n  anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The elevation of the drawer.\n   * @default 16\n   */\n  elevation: integerPropType,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Props applied to the [`Modal`](https://mui.com/material-ui/api/modal/) element.\n   * @default {}\n   */\n  ModalProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * Props applied to the [`Paper`](https://mui.com/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Props applied to the [`Slide`](https://mui.com/material-ui/api/slide/) element.\n   */\n  SlideProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * The variant to use.\n   * @default 'temporary'\n   */\n  variant: PropTypes.oneOf(['permanent', 'persistent', 'temporary'])\n} : void 0;\nexport default Drawer;"],"names":["setTranslateValue","direction","node","containerProp","containerPropProp","transform","resolvedContainer","rect","getBoundingClientRect","containerRect","containerWindow","ownerWindow","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","split","parseInt","right","left","innerWidth","width","bottom","top","innerHeight","height","getTranslateValue","style","webkitTransform","props","ref","theme","useTheme","defaultEasing","enter","transitions","easing","easeOut","exit","sharp","defaultTimeout","duration","enteringScreen","leavingScreen","addEndListener","appear","children","container","easingProp","in","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","timeout","TransitionComponent","Transition","other","childrenRef","handleRef","useForkRef","getReactNodeRef","normalizedTransitionCallback","callback","isAppearing","undefined","current","handleEnter","handleEntering","transitionProps","mode","webkitTransition","create","transition","handleEntered","handleExiting","handleExit","handleExited","updatePosition","handleResize","debounce","addEventListener","clear","removeEventListener","nodeRef","next","state","childProps","visibility","getDrawerUtilityClass","slot","generateUtilityClass","generateUtilityClasses","overridesResolver","styles","ownerState","root","variant","docked","modal","DrawerRoot","styled","Modal","name","memoTheme","zIndex","vars","drawer","DrawerDockedRoot","shouldForwardProp","rootShouldForwardProp","skipVariantsResolver","flex","DrawerPaper","Paper","paper","capitalize","anchor","overflowY","display","flexDirection","WebkitOverflowScrolling","position","outline","variants","maxHeight","borderRight","palette","divider","borderBottom","borderLeft","borderTop","oppositeDirection","inProps","isRtl","defaultTransitionDuration","anchorProp","BackdropProps","className","elevation","hideBackdrop","ModalProps","BackdropPropsProp","onClose","open","PaperProps","SlideProps","transitionDuration","mounted","anchorInvariant","includes","isHorizontal","getAnchor","classes","slots","composeClasses","useUtilityClasses","square","clsx","slidingDrawer"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/561.8b38948f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[561],{70156:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext()},82565:(e,t,a)=>{a.d(t,{A:()=>u});var o=a(7552),r=a(93878),l=a(70799),s=a(72639),n=a(70156),c=a(51148),i=a(60129),d=a(4785),p=a(36317),h=a(69500);const v=(0,c.Ay)("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.head&&t.head,a.footer&&t.footer]}})((0,i.A)((({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${p.A.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${p.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)}}})))),b="tr",u=o.forwardRef((function(e,t){const a=(0,d.b)({props:e,name:"MuiTableRow"}),{className:s,component:c=b,hover:i=!1,selected:u=!1,...w}=a,m=o.useContext(n.A),A={...a,component:c,hover:i,selected:u,head:m&&"head"===m.variant,footer:m&&"footer"===m.variant},y=(e=>{const{classes:t,selected:a,hover:o,head:r,footer:s}=e,n={root:["root",a&&"selected",o&&"hover",r&&"head",s&&"footer"]};return(0,l.A)(n,p.r,t)})(A);return(0,h.jsx)(v,{as:c,ref:t,className:(0,r.A)(y.root,s),role:c===b?null:"row",ownerState:A,...w})}))},70561:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o.A,getTableRowUtilityClass:()=>r.r,tableRowClasses:()=>r.A});var o=a(82565),r=a(36317)},36317:(e,t,a)=>{a.d(t,{A:()=>s,r:()=>l});var o=a(33761),r=a(85693);function l(e){return(0,r.Ay)("MuiTableRow",e)}const s=(0,o.A)("MuiTableRow",["root","selected","hover","head","footer"])}}]);
+//# sourceMappingURL=561.8b38948f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/561.8b38948f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/561.8b38948f.chunk.js","mappings":"yIASA,Q,QAJsC,e,mJCQtC,MAaMA,GAAe,QAAO,KAAM,CAChCC,KAAM,cACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMD,EAAWE,MAAQH,EAAOG,KAAMF,EAAWG,QAAUJ,EAAOI,OAAO,GAPvE,EASlB,QAAU,EACXC,YACI,CACJC,MAAO,UACPC,QAAS,YACTC,cAAe,SAEfC,QAAS,EACT,CAAC,KAAK,IAAgBC,eAAgB,CACpCC,iBAAkBN,EAAMO,MAAQP,GAAOQ,QAAQC,OAAOJ,OAExD,CAAC,KAAK,IAAgBK,YAAa,CACjCJ,gBAAiBN,EAAMO,KAAO,QAAQP,EAAMO,KAAKC,QAAQG,QAAQC,iBAAiBZ,EAAMO,KAAKC,QAAQC,OAAOI,oBAAqB,QAAMb,EAAMQ,QAAQG,QAAQG,KAAMd,EAAMQ,QAAQC,OAAOI,iBACxL,UAAW,CACTP,gBAAiBN,EAAMO,KAAO,QAAQP,EAAMO,KAAKC,QAAQG,QAAQC,sBAAsBZ,EAAMO,KAAKC,QAAQC,OAAOI,qBAAqBb,EAAMO,KAAKC,QAAQC,OAAOM,kBAAmB,QAAMf,EAAMQ,QAAQG,QAAQG,KAAMd,EAAMQ,QAAQC,OAAOI,gBAAkBb,EAAMQ,QAAQC,OAAOM,qBAIjRC,EAAmB,KAyEzB,EApE8B,cAAiB,SAAkBC,EAASC,GACxE,MAAMxB,GAAQ,OAAgB,CAC5BA,MAAOuB,EACP1B,KAAM,iBAEF,UACJ4B,EAAS,UACTC,EAAYJ,EAAgB,MAC5BX,GAAQ,EAAK,SACbK,GAAW,KACRW,GACD3B,EACE4B,EAAY,aAAiB,KAC7B1B,EAAa,IACdF,EACH0B,YACAf,QACAK,WACAZ,KAAMwB,GAAmC,SAAtBA,EAAUC,QAC7BxB,OAAQuB,GAAmC,WAAtBA,EAAUC,SAE3BC,EAlEkB5B,KACxB,MAAM,QACJ4B,EAAO,SACPd,EAAQ,MACRL,EAAK,KACLP,EAAI,OACJC,GACEH,EACE6B,EAAQ,CACZ5B,KAAM,CAAC,OAAQa,GAAY,WAAYL,GAAS,QAASP,GAAQ,OAAQC,GAAU,WAErF,OAAO,OAAe0B,EAAO,IAAyBD,EAAQ,EAuD9CE,CAAkB9B,GAClC,OAAoB,SAAKN,EAAc,CACrCqC,GAAIP,EACJF,IAAKA,EACLC,WAAW,OAAKK,EAAQ3B,KAAMsB,GAC9BS,KAAMR,IAAcJ,EAAmB,KAAO,MAC9CpB,WAAYA,KACTyB,GAEP,G,wMCtFO,SAASQ,EAAwBrC,GACtC,OAAO,QAAqB,cAAeA,EAC7C,CACA,MACA,GADwB,OAAuB,cAAe,CAAC,OAAQ,WAAY,QAAS,OAAQ,U","sources":["../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableRow/TableRow.js","../../../node_modules/@mui/material/TableRow/tableRowClasses.js"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableRowClasses, { getTableRowUtilityClass } from \"./tableRowClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    selected,\n    hover,\n    head,\n    footer\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', hover && 'hover', head && 'head', footer && 'footer']\n  };\n  return composeClasses(slots, getTableRowUtilityClass, classes);\n};\nconst TableRowRoot = styled('tr', {\n  name: 'MuiTableRow',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.head && styles.head, ownerState.footer && styles.footer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: 'inherit',\n  display: 'table-row',\n  verticalAlign: 'middle',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  [`&.${tableRowClasses.hover}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${tableRowClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n    }\n  }\n})));\nconst defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\nconst TableRow = /*#__PURE__*/React.forwardRef(function TableRow(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableRow'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    hover = false,\n    selected = false,\n    ...other\n  } = props;\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const ownerState = {\n    ...props,\n    component,\n    hover,\n    selected,\n    head: tablelvl2 && tablelvl2.variant === 'head',\n    footer: tablelvl2 && tablelvl2.variant === 'footer'\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableRowRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    role: component === defaultComponent ? null : 'row',\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Should be valid `<tr>` children such as `TableCell`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the table row will shade on hover.\n   * @default false\n   */\n  hover: PropTypes.bool,\n  /**\n   * If `true`, the table row will have the selected shading.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableRow;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableRowUtilityClass(slot) {\n  return generateUtilityClass('MuiTableRow', slot);\n}\nconst tableRowClasses = generateUtilityClasses('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\nexport default tableRowClasses;"],"names":["TableRowRoot","name","slot","overridesResolver","props","styles","ownerState","root","head","footer","theme","color","display","verticalAlign","outline","hover","backgroundColor","vars","palette","action","selected","primary","mainChannel","selectedOpacity","main","hoverOpacity","defaultComponent","inProps","ref","className","component","other","tablelvl2","variant","classes","slots","useUtilityClasses","as","role","getTableRowUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5640.33b8306c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5640,8341,722,5484,7865,246,2627,5008],{84885:(t,e,r)=>{r.d(e,{A:()=>v});var n=r(7552),o=r(93878),a=r(43583),i=r(70799),s=r(1045);var l=r(51148),c=r(60129),u=r(58520),d=r(4785),f=r(15622),p=r(47839),g=r(69500);const h=(0,l.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(t,e)=>e.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),m=(0,l.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.badge,e[r.variant],e[`anchorOrigin${(0,f.A)(r.anchorOrigin.vertical)}${(0,f.A)(r.anchorOrigin.horizontal)}${(0,f.A)(r.overlap)}`],"default"!==r.color&&e[`color${(0,f.A)(r.color)}`],r.invisible&&e.invisible]}})((0,c.A)((({theme:t})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:t.typography.fontFamily,fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:t.transitions.create("transform",{easing:t.transitions.easing.easeInOut,duration:t.transitions.duration.enteringScreen}),variants:[...Object.entries(t.palette).filter((0,u.A)(["contrastText"])).map((([e])=>({props:{color:e},style:{backgroundColor:(t.vars||t).palette[e].main,color:(t.vars||t).palette[e].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:t})=>"top"===t.anchorOrigin.vertical&&"right"===t.anchorOrigin.horizontal&&"rectangular"===t.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:t})=>"bottom"===t.anchorOrigin.vertical&&"right"===t.anchorOrigin.horizontal&&"rectangular"===t.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:t})=>"top"===t.anchorOrigin.vertical&&"left"===t.anchorOrigin.horizontal&&"rectangular"===t.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:t})=>"bottom"===t.anchorOrigin.vertical&&"left"===t.anchorOrigin.horizontal&&"rectangular"===t.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:t})=>"top"===t.anchorOrigin.vertical&&"right"===t.anchorOrigin.horizontal&&"circular"===t.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:t})=>"bottom"===t.anchorOrigin.vertical&&"right"===t.anchorOrigin.horizontal&&"circular"===t.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:t})=>"top"===t.anchorOrigin.vertical&&"left"===t.anchorOrigin.horizontal&&"circular"===t.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:t})=>"bottom"===t.anchorOrigin.vertical&&"left"===t.anchorOrigin.horizontal&&"circular"===t.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${p.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:t.transitions.create("transform",{easing:t.transitions.easing.easeInOut,duration:t.transitions.duration.leavingScreen})}}]})))),v=n.forwardRef((function(t,e){const r=(0,d.b)({props:t,name:"MuiBadge"}),{anchorOrigin:n={vertical:"top",horizontal:"right"},className:l,classes:c,component:u,components:v={},componentsProps:y={},children:b,overlap:S="rectangular",color:w="default",invisible:D=!1,max:x=99,badgeContent:O,slots:A,slotProps:M,showZero:P=!1,variant:C="standard",...T}=r,{badgeContent:k,invisible:E,max:N,displayValue:j}=function(t){const{badgeContent:e,invisible:r=!1,max:n=99,showZero:o=!1}=t,i=(0,a.A)({badgeContent:e,max:n});let s=r;!1!==r||0!==e||o||(s=!0);const{badgeContent:l,max:c=n}=s?i:t;return{badgeContent:l,invisible:s,max:c,displayValue:l&&Number(l)>c?`${c}+`:l}}({max:x,invisible:D,badgeContent:O,showZero:P}),R=(0,a.A)({anchorOrigin:n,color:w,overlap:S,variant:C,badgeContent:O}),L=E||null==k&&"dot"!==C,{color:X=w,overlap:Y=S,anchorOrigin:W=n,variant:$=C}=L?R:r,_="dot"!==$?j:void 0,B={...r,badgeContent:k,invisible:L,max:N,displayValue:_,showZero:P,anchorOrigin:W,color:X,overlap:Y,variant:$},I=(t=>{const{color:e,anchorOrigin:r,invisible:n,overlap:o,variant:a,classes:s={}}=t,l={root:["root"],badge:["badge",a,n&&"invisible",`anchorOrigin${(0,f.A)(r.vertical)}${(0,f.A)(r.horizontal)}`,`anchorOrigin${(0,f.A)(r.vertical)}${(0,f.A)(r.horizontal)}${(0,f.A)(o)}`,`overlap${(0,f.A)(o)}`,"default"!==e&&`color${(0,f.A)(e)}`]};return(0,i.A)(l,p.w,s)})(B),z=A?.root??v.Root??h,H=A?.badge??v.Badge??m,U=M?.root??y.root,V=M?.badge??y.badge,G=(0,s.A)({elementType:z,externalSlotProps:U,externalForwardedProps:T,additionalProps:{ref:e,as:u},ownerState:B,className:(0,o.A)(U?.className,I.root,l)}),F=(0,s.A)({elementType:H,externalSlotProps:V,ownerState:B,className:(0,o.A)(I.badge,V?.className)});return(0,g.jsxs)(z,{...G,children:[b,(0,g.jsx)(H,{...F,children:_})]})}))},47839:(t,e,r)=>{r.d(e,{A:()=>i,w:()=>a});var n=r(33761),o=r(85693);function a(t){return(0,o.Ay)("MuiBadge",t)}const i=(0,n.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},59705:(t,e,r)=>{r.d(e,{A:()=>w});var n=r(7552),o=r(93878),a=r(70799),i=r(64761),s=r(51148),l=r(60129),c=r(4785),u=r(15622),d=r(58520),f=r(72489),p=r(69500);const g=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,h=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,m="string"!=typeof g?i.AH`
+        animation: ${g} 1.4s linear infinite;
+      `:null,v="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s ease-in-out infinite;
+      `:null,y=(0,s.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.root,e[r.variant],e[`color${(0,u.A)(r.color)}`]]}})((0,l.A)((({theme:t})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:t.transitions.create("transform")}},{props:{variant:"indeterminate"},style:m||{animation:`${g} 1.4s linear infinite`}},...Object.entries(t.palette).filter((0,d.A)()).map((([e])=>({props:{color:e},style:{color:(t.vars||t).palette[e].main}})))]})))),b=(0,s.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(t,e)=>e.svg})({display:"block"}),S=(0,s.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.circle,e[`circle${(0,u.A)(r.variant)}`],r.disableShrink&&e.circleDisableShrink]}})((0,l.A)((({theme:t})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:t.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:t})=>"indeterminate"===t.variant&&!t.disableShrink,style:v||{animation:`${h} 1.4s ease-in-out infinite`}}]})))),w=n.forwardRef((function(t,e){const r=(0,c.b)({props:t,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:s=!1,size:l=40,style:d,thickness:g=3.6,value:h=0,variant:m="indeterminate",...v}=r,w={...r,color:i,disableShrink:s,size:l,thickness:g,value:h,variant:m},D=(t=>{const{classes:e,variant:r,color:n,disableShrink:o}=t,i={root:["root",r,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(r)}`,o&&"circleDisableShrink"]};return(0,a.A)(i,f.b,e)})(w),x={},O={},A={};if("determinate"===m){const t=2*Math.PI*((44-g)/2);x.strokeDasharray=t.toFixed(3),A["aria-valuenow"]=Math.round(h),x.strokeDashoffset=`${((100-h)/100*t).toFixed(3)}px`,O.transform="rotate(-90deg)"}return(0,p.jsx)(y,{className:(0,o.A)(D.root,n),style:{width:l,height:l,...O,...d},ownerState:w,ref:e,role:"progressbar",...A,...v,children:(0,p.jsx)(b,{className:D.svg,ownerState:w,viewBox:"22 22 44 44",children:(0,p.jsx)(S,{className:D.circle,style:x,ownerState:w,cx:44,cy:44,r:(44-g)/2,fill:"none",strokeWidth:g})})})}))},72489:(t,e,r)=>{r.d(e,{A:()=>i,b:()=>a});var n=r(33761),o=r(85693);function a(t){return(0,o.Ay)("MuiCircularProgress",t)}const i=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(t,e,r)=>{r.d(e,{x:()=>u});var n=r(7552),o=r(29527),a=r(89887),i=r(99305),s=r(28325),l=r(69500);function c(t){return t.substring(2).toLowerCase()}function u(t){const{children:e,disableReactTree:r=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:f="onTouchEnd"}=t,p=n.useRef(!1),g=n.useRef(null),h=n.useRef(!1),m=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{h.current=!0}),0),()=>{h.current=!1})),[]);const v=(0,o.A)((0,s.A)(e),g),y=(0,a.A)((t=>{const e=m.current;m.current=!1;const n=(0,i.A)(g.current);if(!h.current||!g.current||"clientX"in t&&function(t,e){return e.documentElement.clientWidth<t.clientX||e.documentElement.clientHeight<t.clientY}(t,n))return;if(p.current)return void(p.current=!1);let o;o=t.composedPath?t.composedPath().includes(g.current):!n.documentElement.contains(t.target)||g.current.contains(t.target),o||!r&&e||d(t)})),b=t=>r=>{m.current=!0;const n=e.props[t];n&&n(r)},S={ref:v};return!1!==f&&(S[f]=b(f)),n.useEffect((()=>{if(!1!==f){const t=c(f),e=(0,i.A)(g.current),r=()=>{p.current=!0};return e.addEventListener(t,y),e.addEventListener("touchmove",r),()=>{e.removeEventListener(t,y),e.removeEventListener("touchmove",r)}}}),[y,f]),!1!==u&&(S[u]=b(u)),n.useEffect((()=>{if(!1!==u){const t=c(u),e=(0,i.A)(g.current);return e.addEventListener(t,y),()=>{e.removeEventListener(t,y)}}}),[y,u]),(0,l.jsx)(n.Fragment,{children:n.cloneElement(e,S)})}},17515:(t,e,r)=>{r.d(e,{A:()=>f});var n=r(7552),o=r(93878),a=r(70799),i=r(51148),s=r(60129),l=r(4785),c=r(89663),u=r(69500);const d=(0,i.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.root,!r.disableGutters&&e.gutters,e[r.variant]]}})((0,s.A)((({theme:t})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:t})=>!t.disableGutters,style:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:t.mixins.toolbar}]})))),f=n.forwardRef((function(t,e){const r=(0,l.b)({props:t,name:"MuiToolbar"}),{className:n,component:i="div",disableGutters:s=!1,variant:f="regular",...p}=r,g={...r,component:i,disableGutters:s,variant:f},h=(t=>{const{classes:e,disableGutters:r,variant:n}=t,o={root:["root",!r&&"gutters",n]};return(0,a.A)(o,c.U,e)})(g);return(0,u.jsx)(d,{as:i,className:(0,o.A)(h.root,n),ref:e,ownerState:g,...p})}))},89663:(t,e,r)=>{r.d(e,{A:()=>i,U:()=>a});var n=r(33761),o=r(85693);function a(t){return(0,o.Ay)("MuiToolbar",t)}const i=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])},24959:(t,e,r)=>{r.d(e,{A:()=>n});const n=(0,r(15543).Ay)()},50599:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),e.default=void 0;var n=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=p(e);if(r&&r.has(t))return r.get(t);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if("default"!==a&&Object.prototype.hasOwnProperty.call(t,a)){var i=o?Object.getOwnPropertyDescriptor(t,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=t[a]}return n.default=t,r&&r.set(t,n),n}(r(7552)),o=f(r(15152)),a=f(r(28485)),i=f(r(2022)),s=r(87477),l=r(40978),c=r(23068),u=f(r(67556)),d=f(r(82292));function f(t){return t&&t.__esModule?t:{default:t}}function p(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(p=function(t){return t?r:e})(t)}function g(){return g=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},g.apply(this,arguments)}function h(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class m extends n.Component{static getDerivedStateFromProps(t,e){let{position:r}=t,{prevPropsPosition:n}=e;return!r||n&&r.x===n.x&&r.y===n.y?null:((0,d.default)("Draggable: getDerivedStateFromProps %j",{position:r,prevPropsPosition:n}),{x:r.x,y:r.y,prevPropsPosition:{...r}})}constructor(t){super(t),h(this,"onDragStart",((t,e)=>{if((0,d.default)("Draggable: onDragStart: %j",e),!1===this.props.onStart(t,(0,l.createDraggableData)(this,e)))return!1;this.setState({dragging:!0,dragged:!0})})),h(this,"onDrag",((t,e)=>{if(!this.state.dragging)return!1;(0,d.default)("Draggable: onDrag: %j",e);const r=(0,l.createDraggableData)(this,e),n={x:r.x,y:r.y,slackX:0,slackY:0};if(this.props.bounds){const{x:t,y:e}=n;n.x+=this.state.slackX,n.y+=this.state.slackY;const[o,a]=(0,l.getBoundPosition)(this,n.x,n.y);n.x=o,n.y=a,n.slackX=this.state.slackX+(t-n.x),n.slackY=this.state.slackY+(e-n.y),r.x=n.x,r.y=n.y,r.deltaX=n.x-this.state.x,r.deltaY=n.y-this.state.y}if(!1===this.props.onDrag(t,r))return!1;this.setState(n)})),h(this,"onDragStop",((t,e)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(t,(0,l.createDraggableData)(this,e)))return!1;(0,d.default)("Draggable: onDragStop: %j",e);const r={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:t,y:e}=this.props.position;r.x=t,r.y=e}this.setState(r)})),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},!t.position||t.onDrag||t.onStop||console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}findDOMNode(){var t,e;return null!==(t=null===(e=this.props)||void 0===e||null===(e=e.nodeRef)||void 0===e?void 0:e.current)&&void 0!==t?t:a.default.findDOMNode(this)}render(){const{axis:t,bounds:e,children:r,defaultPosition:o,defaultClassName:a,defaultClassNameDragging:c,defaultClassNameDragged:d,position:f,positionOffset:p,scale:h,...m}=this.props;let v={},y=null;const b=!Boolean(f)||this.state.dragging,S=f||o,w={x:(0,l.canDragX)(this)&&b?this.state.x:S.x,y:(0,l.canDragY)(this)&&b?this.state.y:S.y};this.state.isElementSVG?y=(0,s.createSVGTransform)(w,p):v=(0,s.createCSSTransform)(w,p);const D=(0,i.default)(r.props.className||"",a,{[c]:this.state.dragging,[d]:this.state.dragged});return n.createElement(u.default,g({},m,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),n.cloneElement(n.Children.only(r),{className:D,style:{...r.props.style,...v},transform:y}))}}e.default=m,h(m,"displayName","Draggable"),h(m,"propTypes",{...u.default.propTypes,axis:o.default.oneOf(["both","x","y","none"]),bounds:o.default.oneOfType([o.default.shape({left:o.default.number,right:o.default.number,top:o.default.number,bottom:o.default.number}),o.default.string,o.default.oneOf([!1])]),defaultClassName:o.default.string,defaultClassNameDragging:o.default.string,defaultClassNameDragged:o.default.string,defaultPosition:o.default.shape({x:o.default.number,y:o.default.number}),positionOffset:o.default.shape({x:o.default.oneOfType([o.default.number,o.default.string]),y:o.default.oneOfType([o.default.number,o.default.string])}),position:o.default.shape({x:o.default.number,y:o.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),h(m,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})},67556:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=d(e);if(r&&r.has(t))return r.get(t);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if("default"!==a&&Object.prototype.hasOwnProperty.call(t,a)){var i=o?Object.getOwnPropertyDescriptor(t,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=t[a]}return n.default=t,r&&r.set(t,n),n}(r(7552)),o=u(r(15152)),a=u(r(28485)),i=r(87477),s=r(40978),l=r(23068),c=u(r(82292));function u(t){return t&&t.__esModule?t:{default:t}}function d(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(d=function(t){return t?r:e})(t)}function f(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const p={start:"touchstart",move:"touchmove",stop:"touchend"},g={start:"mousedown",move:"mousemove",stop:"mouseup"};let h=g;class m extends n.Component{constructor(){super(...arguments),f(this,"dragging",!1),f(this,"lastX",NaN),f(this,"lastY",NaN),f(this,"touchIdentifier",null),f(this,"mounted",!1),f(this,"handleDragStart",(t=>{if(this.props.onMouseDown(t),!this.props.allowAnyClick&&"number"==typeof t.button&&0!==t.button)return!1;const e=this.findDOMNode();if(!e||!e.ownerDocument||!e.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:r}=e;if(this.props.disabled||!(t.target instanceof r.defaultView.Node)||this.props.handle&&!(0,i.matchesSelectorAndParentsTo)(t.target,this.props.handle,e)||this.props.cancel&&(0,i.matchesSelectorAndParentsTo)(t.target,this.props.cancel,e))return;"touchstart"===t.type&&t.preventDefault();const n=(0,i.getTouchIdentifier)(t);this.touchIdentifier=n;const o=(0,s.getControlPosition)(t,n,this);if(null==o)return;const{x:a,y:l}=o,u=(0,s.createCoreData)(this,a,l);(0,c.default)("DraggableCore: handleDragStart: %j",u),(0,c.default)("calling",this.props.onStart),!1!==this.props.onStart(t,u)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,i.addUserSelectStyles)(r),this.dragging=!0,this.lastX=a,this.lastY=l,(0,i.addEvent)(r,h.move,this.handleDrag),(0,i.addEvent)(r,h.stop,this.handleDragStop))})),f(this,"handleDrag",(t=>{const e=(0,s.getControlPosition)(t,this.touchIdentifier,this);if(null==e)return;let{x:r,y:n}=e;if(Array.isArray(this.props.grid)){let t=r-this.lastX,e=n-this.lastY;if([t,e]=(0,s.snapToGrid)(this.props.grid,t,e),!t&&!e)return;r=this.lastX+t,n=this.lastY+e}const o=(0,s.createCoreData)(this,r,n);if((0,c.default)("DraggableCore: handleDrag: %j",o),!1!==this.props.onDrag(t,o)&&!1!==this.mounted)this.lastX=r,this.lastY=n;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(t){const e=document.createEvent("MouseEvents");e.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}})),f(this,"handleDragStop",(t=>{if(!this.dragging)return;const e=(0,s.getControlPosition)(t,this.touchIdentifier,this);if(null==e)return;let{x:r,y:n}=e;if(Array.isArray(this.props.grid)){let t=r-this.lastX||0,e=n-this.lastY||0;[t,e]=(0,s.snapToGrid)(this.props.grid,t,e),r=this.lastX+t,n=this.lastY+e}const o=(0,s.createCoreData)(this,r,n);if(!1===this.props.onStop(t,o)||!1===this.mounted)return!1;const a=this.findDOMNode();a&&this.props.enableUserSelectHack&&(0,i.removeUserSelectStyles)(a.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",o),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&((0,c.default)("DraggableCore: Removing handlers"),(0,i.removeEvent)(a.ownerDocument,h.move,this.handleDrag),(0,i.removeEvent)(a.ownerDocument,h.stop,this.handleDragStop))})),f(this,"onMouseDown",(t=>(h=g,this.handleDragStart(t)))),f(this,"onMouseUp",(t=>(h=g,this.handleDragStop(t)))),f(this,"onTouchStart",(t=>(h=p,this.handleDragStart(t)))),f(this,"onTouchEnd",(t=>(h=p,this.handleDragStop(t))))}componentDidMount(){this.mounted=!0;const t=this.findDOMNode();t&&(0,i.addEvent)(t,p.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const t=this.findDOMNode();if(t){const{ownerDocument:e}=t;(0,i.removeEvent)(e,g.move,this.handleDrag),(0,i.removeEvent)(e,p.move,this.handleDrag),(0,i.removeEvent)(e,g.stop,this.handleDragStop),(0,i.removeEvent)(e,p.stop,this.handleDragStop),(0,i.removeEvent)(t,p.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,i.removeUserSelectStyles)(e)}}findDOMNode(){var t,e;return null!==(t=this.props)&&void 0!==t&&t.nodeRef?null===(e=this.props)||void 0===e||null===(e=e.nodeRef)||void 0===e?void 0:e.current:a.default.findDOMNode(this)}render(){return n.cloneElement(n.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}e.default=m,f(m,"displayName","DraggableCore"),f(m,"propTypes",{allowAnyClick:o.default.bool,children:o.default.node.isRequired,disabled:o.default.bool,enableUserSelectHack:o.default.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:o.default.arrayOf(o.default.number),handle:o.default.string,cancel:o.default.string,nodeRef:o.default.object,onStart:o.default.func,onDrag:o.default.func,onStop:o.default.func,onMouseDown:o.default.func,scale:o.default.number,className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),f(m,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})},21254:(t,e,r)=>{const{default:n,DraggableCore:o}=r(50599);t.exports=n,t.exports.default=n,t.exports.DraggableCore=o},87477:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.addClassName=c,e.addEvent=function(t,e,r,n){if(!t)return;const o={capture:!0,...n};t.addEventListener?t.addEventListener(e,r,o):t.attachEvent?t.attachEvent("on"+e,r):t["on"+e]=r},e.addUserSelectStyles=function(t){if(!t)return;let e=t.getElementById("react-draggable-style-el");e||(e=t.createElement("style"),e.type="text/css",e.id="react-draggable-style-el",e.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",e.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",t.getElementsByTagName("head")[0].appendChild(e)),t.body&&c(t.body,"react-draggable-transparent-selection")},e.createCSSTransform=function(t,e){const r=l(t,e,"px");return{[(0,o.browserPrefixToKey)("transform",o.default)]:r}},e.createSVGTransform=function(t,e){return l(t,e,"")},e.getTouch=function(t,e){return t.targetTouches&&(0,n.findInArray)(t.targetTouches,(t=>e===t.identifier))||t.changedTouches&&(0,n.findInArray)(t.changedTouches,(t=>e===t.identifier))},e.getTouchIdentifier=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0},e.getTranslation=l,e.innerHeight=function(t){let e=t.clientHeight;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e-=(0,n.int)(r.paddingTop),e-=(0,n.int)(r.paddingBottom),e},e.innerWidth=function(t){let e=t.clientWidth;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e-=(0,n.int)(r.paddingLeft),e-=(0,n.int)(r.paddingRight),e},e.matchesSelector=s,e.matchesSelectorAndParentsTo=function(t,e,r){let n=t;do{if(s(n,e))return!0;if(n===r)return!1;n=n.parentNode}while(n);return!1},e.offsetXYFromParent=function(t,e,r){const n=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-n.left)/r,y:(t.clientY+e.scrollTop-n.top)/r}},e.outerHeight=function(t){let e=t.clientHeight;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e+=(0,n.int)(r.borderTopWidth),e+=(0,n.int)(r.borderBottomWidth),e},e.outerWidth=function(t){let e=t.clientWidth;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e+=(0,n.int)(r.borderLeftWidth),e+=(0,n.int)(r.borderRightWidth),e},e.removeClassName=u,e.removeEvent=function(t,e,r,n){if(!t)return;const o={capture:!0,...n};t.removeEventListener?t.removeEventListener(e,r,o):t.detachEvent?t.detachEvent("on"+e,r):t["on"+e]=null},e.removeUserSelectStyles=function(t){if(t)try{if(t.body&&u(t.body,"react-draggable-transparent-selection"),t.selection)t.selection.empty();else{const e=(t.defaultView||window).getSelection();e&&"Caret"!==e.type&&e.removeAllRanges()}}catch(t){}};var n=r(23068),o=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=a(e);if(r&&r.has(t))return r.get(t);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&Object.prototype.hasOwnProperty.call(t,i)){var s=o?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=t[i]}return n.default=t,r&&r.set(t,n),n}(r(10534));function a(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(a=function(t){return t?r:e})(t)}let i="";function s(t,e){return i||(i=(0,n.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(e){return(0,n.isFunction)(t[e])}))),!!(0,n.isFunction)(t[i])&&t[i](e)}function l(t,e,r){let{x:n,y:o}=t,a="translate(".concat(n).concat(r,",").concat(o).concat(r,")");if(e){const t="".concat("string"==typeof e.x?e.x:e.x+r),n="".concat("string"==typeof e.y?e.y:e.y+r);a="translate(".concat(t,", ").concat(n,")")+a}return a}function c(t,e){t.classList?t.classList.add(e):t.className.match(new RegExp("(?:^|\\s)".concat(e,"(?!\\S)")))||(t.className+=" ".concat(e))}function u(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g"),"")}},10534:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.browserPrefixToKey=o,e.browserPrefixToStyle=function(t,e){return e?"-".concat(e.toLowerCase(),"-").concat(t):t},e.default=void 0,e.getPrefix=n;const r=["Moz","Webkit","O","ms"];function n(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const n=null===(t=window.document)||void 0===t||null===(t=t.documentElement)||void 0===t?void 0:t.style;if(!n)return"";if(e in n)return"";for(let t=0;t<r.length;t++)if(o(e,r[t])in n)return r[t];return""}function o(t,e){return e?"".concat(e).concat(function(t){let e="",r=!0;for(let n=0;n<t.length;n++)r?(e+=t[n].toUpperCase(),r=!1):"-"===t[n]?r=!0:e+=t[n];return e}(t)):t}e.default=n()},82292:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){}},40978:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.canDragX=function(t){return"both"===t.props.axis||"x"===t.props.axis},e.canDragY=function(t){return"both"===t.props.axis||"y"===t.props.axis},e.createCoreData=function(t,e,r){const o=!(0,n.isNum)(t.lastX),i=a(t);return o?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:r,x:e,y:r}:{node:i,deltaX:e-t.lastX,deltaY:r-t.lastY,lastX:t.lastX,lastY:t.lastY,x:e,y:r}},e.createDraggableData=function(t,e){const r=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/r,y:t.state.y+e.deltaY/r,deltaX:e.deltaX/r,deltaY:e.deltaY/r,lastX:t.state.x,lastY:t.state.y}},e.getBoundPosition=function(t,e,r){if(!t.props.bounds)return[e,r];let{bounds:i}=t.props;i="string"==typeof i?i:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(i);const s=a(t);if("string"==typeof i){const{ownerDocument:t}=s,e=t.defaultView;let r;if(r="parent"===i?s.parentNode:t.querySelector(i),!(r instanceof e.HTMLElement))throw new Error('Bounds selector "'+i+'" could not find an element.');const a=r,l=e.getComputedStyle(s),c=e.getComputedStyle(a);i={left:-s.offsetLeft+(0,n.int)(c.paddingLeft)+(0,n.int)(l.marginLeft),top:-s.offsetTop+(0,n.int)(c.paddingTop)+(0,n.int)(l.marginTop),right:(0,o.innerWidth)(a)-(0,o.outerWidth)(s)-s.offsetLeft+(0,n.int)(c.paddingRight)-(0,n.int)(l.marginRight),bottom:(0,o.innerHeight)(a)-(0,o.outerHeight)(s)-s.offsetTop+(0,n.int)(c.paddingBottom)-(0,n.int)(l.marginBottom)}}return(0,n.isNum)(i.right)&&(e=Math.min(e,i.right)),(0,n.isNum)(i.bottom)&&(r=Math.min(r,i.bottom)),(0,n.isNum)(i.left)&&(e=Math.max(e,i.left)),(0,n.isNum)(i.top)&&(r=Math.max(r,i.top)),[e,r]},e.getControlPosition=function(t,e,r){const n="number"==typeof e?(0,o.getTouch)(t,e):null;if("number"==typeof e&&!n)return null;const i=a(r),s=r.props.offsetParent||i.offsetParent||i.ownerDocument.body;return(0,o.offsetXYFromParent)(n||t,s,r.props.scale)},e.snapToGrid=function(t,e,r){return[Math.round(e/t[0])*t[0],Math.round(r/t[1])*t[1]]};var n=r(23068),o=r(87477);function a(t){const e=t.findDOMNode();if(!e)throw new Error("<DraggableCore>: Unmounted during event!");return e}},23068:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.dontSetMe=function(t,e,r){if(t[e])return new Error("Invalid prop ".concat(e," passed to ").concat(r," - do not set this, set it on the child."))},e.findInArray=function(t,e){for(let r=0,n=t.length;r<n;r++)if(e.apply(e,[t[r],r,t]))return t[r]},e.int=function(t){return parseInt(t,10)},e.isFunction=function(t){return"function"==typeof t||"[object Function]"===Object.prototype.toString.call(t)},e.isNum=function(t){return"number"==typeof t&&!isNaN(t)}},2022:(t,e,r)=>{function n(t){var e,r,o="";if("string"==typeof t||"number"==typeof t)o+=t;else if("object"==typeof t)if(Array.isArray(t))for(e=0;e<t.length;e++)t[e]&&(r=n(t[e]))&&(o&&(o+=" "),o+=r);else for(e in t)t[e]&&(o&&(o+=" "),o+=e);return o}function o(){for(var t,e,r=0,o="";r<arguments.length;)(t=arguments[r++])&&(e=n(t))&&(o&&(o+=" "),o+=e);return o}r.r(e),r.d(e,{clsx:()=>o,default:()=>a});const a=o}}]);
+//# sourceMappingURL=5640.33b8306c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5640.33b8306c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5640.33b8306c.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js","../../../node_modules/@mui/system/styled/styled.js","../../../node_modules/react-draggable/build/cjs/Draggable.js","../../../node_modules/react-draggable/build/cjs/DraggableCore.js","../../../node_modules/react-draggable/build/cjs/cjs.js","../../../node_modules/react-draggable/build/cjs/utils/domFns.js","../../../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../../../node_modules/react-draggable/build/cjs/utils/log.js","../../../node_modules/react-draggable/build/cjs/utils/positionFns.js","../../../node_modules/react-draggable/build/cjs/utils/shims.js","../../../node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function () {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n  dragging: boolean,\n  dragged: boolean,\n  x: number, y: number,\n  slackX: number, slackY: number,\n  isElementSVG: boolean,\n  prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n  ...DraggableCoreDefaultProps,\n  axis: 'both' | 'x' | 'y' | 'none',\n  bounds: Bounds | string | false,\n  defaultClassName: string,\n  defaultClassNameDragging: string,\n  defaultClassNameDragged: string,\n  defaultPosition: ControlPosition,\n  scale: number,\n};*/\n/*:: export type DraggableProps = {\n  ...DraggableCoreProps,\n  ...DraggableDefaultProps,\n  positionOffset: PositionOffsetControlPosition,\n  position: ControlPosition,\n};*/\n//\n// Define <Draggable>\n//\nclass Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{\n  // React 16.3+\n  // Arity (props, state)\n  static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{\n    let {\n      position\n    } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n    let {\n      prevPropsPosition\n    } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n    // Set x/y if a new position is provided in props that is different than the previous.\n    if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n      (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n        position,\n        prevPropsPosition\n      });\n      return {\n        x: position.x,\n        y: position.y,\n        prevPropsPosition: {\n          ...position\n        }\n      };\n    }\n    return null;\n  }\n  constructor(props /*: DraggableProps*/) {\n    super(props);\n    _defineProperty(this, \"onDragStart\", (e, coreData) => {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n      // Short-circuit if user's callback killed it.\n      const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n      // Kills start event on core as well, so move handlers are never bound.\n      if (shouldStart === false) return false;\n      this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n    _defineProperty(this, \"onDrag\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n      const newState = {\n        x: uiData.x,\n        y: uiData.y,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // Keep within bounds.\n      if (this.props.bounds) {\n        // Save original x and y.\n        const {\n          x,\n          y\n        } = newState;\n\n        // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n        newState.x += this.state.slackX;\n        newState.y += this.state.slackY;\n\n        // Get bound position. This will ceil/floor the x and y within the boundaries.\n        const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n        newState.x = newStateX;\n        newState.y = newStateY;\n\n        // Recalculate slack by noting how much was shaved by the boundPosition handler.\n        newState.slackX = this.state.slackX + (x - newState.x);\n        newState.slackY = this.state.slackY + (y - newState.y);\n\n        // Update the event we fire to reflect what really happened after bounds took effect.\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - this.state.x;\n        uiData.deltaY = newState.y - this.state.y;\n      }\n\n      // Short-circuit if user's callback killed it.\n      const shouldUpdate = this.props.onDrag(e, uiData);\n      if (shouldUpdate === false) return false;\n      this.setState(newState);\n    });\n    _defineProperty(this, \"onDragStop\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n\n      // Short-circuit if user's callback killed it.\n      const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      const newState /*: Partial<DraggableState>*/ = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n      const controlled = Boolean(this.props.position);\n      if (controlled) {\n        const {\n          x,\n          y\n        } = this.props.position;\n        newState.x = x;\n        newState.y = y;\n      }\n      this.setState(newState);\n    });\n    this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: {\n        ...props.position\n      },\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n  }\n  componentDidMount() {\n    // Check to see if the element passed is an instanceof SVGElement\n    if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n      this.setState({\n        isElementSVG: true\n      });\n    }\n  }\n  componentWillUnmount() {\n    this.setState({\n      dragging: false\n    }); // prevents invariant if unmounted while dragging\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    var _this$props$nodeRef$c, _this$props;\n    return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n  }\n  render() /*: ReactElement<any>*/{\n    const {\n      axis,\n      bounds,\n      children,\n      defaultPosition,\n      defaultClassName,\n      defaultClassNameDragging,\n      defaultClassNameDragged,\n      position,\n      positionOffset,\n      scale,\n      ...draggableCoreProps\n    } = this.props;\n    let style = {};\n    let svgTransform = null;\n\n    // If this is controlled, we don't want to move it - unless it's dragging.\n    const controlled = Boolean(position);\n    const draggable = !controlled || this.state.dragging;\n    const validPosition = position || defaultPosition;\n    const transformOpts = {\n      // Set left if horizontal drag is enabled\n      x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n      // Set top if vertical drag is enabled\n      y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n    };\n\n    // If this element was SVG, we use the `transform` attribute.\n    if (this.state.isElementSVG) {\n      svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n    } else {\n      // Add a CSS transform to move the element around. This allows us to move the element around\n      // without worrying about whether or not it is relatively or absolutely positioned.\n      // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n      // has a clean slate.\n      style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n    }\n\n    // Mark with class while dragging\n    const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n      [defaultClassNameDragging]: this.state.dragging,\n      [defaultClassNameDragged]: this.state.dragged\n    });\n\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n      onStart: this.onDragStart,\n      onDrag: this.onDrag,\n      onStop: this.onDragStop\n    }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n      className: className,\n      style: {\n        ...children.props.style,\n        ...style\n      },\n      transform: svgTransform\n    }));\n  }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n  // Accepts all props <DraggableCore> accepts.\n  ..._DraggableCore.default.propTypes,\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n  ..._DraggableCore.default.defaultProps,\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"dragging\", false);\n    // Used while dragging to determine deltas.\n    _defineProperty(this, \"lastX\", NaN);\n    _defineProperty(this, \"lastY\", NaN);\n    _defineProperty(this, \"touchIdentifier\", null);\n    _defineProperty(this, \"mounted\", false);\n    _defineProperty(this, \"handleDragStart\", e => {\n      // Make it possible to attach event handlers on top of this one.\n      this.props.onMouseDown(e);\n\n      // Only accept left-clicks.\n      if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n      // Get nodes. Be sure to grab relative document (could be iframed)\n      const thisNode = this.findDOMNode();\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n      const {\n        ownerDocument\n      } = thisNode;\n\n      // Short circuit if handle or cancel prop was provided and selector doesn't match.\n      if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n        return;\n      }\n\n      // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n      if (e.type === 'touchstart') e.preventDefault();\n\n      // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n      const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n      this.touchIdentifier = touchIdentifier;\n\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n      if (position == null) return; // not possible but satisfies flow\n      const {\n        x,\n        y\n      } = position;\n\n      // Create an event object with all the data parents need to make a decision here.\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, cancel.\n      (0, _log.default)('calling', this.props.onStart);\n      const shouldUpdate = this.props.onStart(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) return;\n\n      // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n      if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n      // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n      this.dragging = true;\n      this.lastX = x;\n      this.lastY = y;\n\n      // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n    });\n    _defineProperty(this, \"handleDrag\", e => {\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX,\n          deltaY = y - this.lastY;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        if (!deltaX && !deltaY) return; // skip useless drag\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, trigger end.\n      const shouldUpdate = this.props.onDrag(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) {\n        try {\n          // $FlowIgnore\n          this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n          // I see why this insanity was deprecated\n          // $FlowIgnore\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n          this.handleDragStop(event);\n        }\n        return;\n      }\n      this.lastX = x;\n      this.lastY = y;\n    });\n    _defineProperty(this, \"handleDragStop\", e => {\n      if (!this.dragging) return;\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX || 0;\n        let deltaY = y - this.lastY || 0;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n      // Call event handler\n      const shouldContinue = this.props.onStop(e, coreEvent);\n      if (shouldContinue === false || this.mounted === false) return false;\n      const thisNode = this.findDOMNode();\n      if (thisNode) {\n        // Remove user-select hack\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n      // Reset the el.\n      this.dragging = false;\n      this.lastX = NaN;\n      this.lastY = NaN;\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n      }\n    });\n    _defineProperty(this, \"onMouseDown\", e => {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onMouseUp\", e => {\n      dragEventFor = eventsFor.mouse;\n      return this.handleDragStop(e);\n    });\n    // Same as onMouseDown (start drag), but now consider this a touch device.\n    _defineProperty(this, \"onTouchStart\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onTouchEnd\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStop(e);\n    });\n  }\n  componentDidMount() {\n    this.mounted = true;\n    // Touch handlers must be added with {passive: false} to be cancelable.\n    // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n    }\n  }\n  componentWillUnmount() {\n    this.mounted = false;\n    // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n    // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      const {\n        ownerDocument\n      } = thisNode;\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n      if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n    }\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    var _this$props, _this$props2;\n    return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n  }\n  render() /*: React.Element<any>*/{\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n      // Note: mouseMove handler is attached to document so it will still function\n      // when the user drags quickly and leaves the bounds of the element.\n      onMouseDown: this.onMouseDown,\n      onMouseUp: this.onMouseUp,\n      // onTouchStart is added on `componentDidMount` so they can be added with\n      // {passive: false}, which allows it to cancel. See\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n      onTouchEnd: this.onTouchEnd\n    });\n  }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n  children: _propTypes.default.node.isRequired,\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function () {},\n  onDrag: function () {},\n  onStop: function () {},\n  onMouseDown: function () {},\n  scale: 1\n});","\"use strict\";\n\nconst {\n  default: Draggable,\n  DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  }\n\n  // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n  // $FlowIgnore: Doesn't think elements are indexable\n  return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n  let node = el;\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    // $FlowIgnore[incompatible-type]\n    node = node.parentNode;\n  } while (node);\n  return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n  const isBody = offsetParent === offsetParent.ownerDocument.body;\n  const offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x,\n    y\n  };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n  const translation = getTranslation(controlPos, positionOffset, 'px');\n  return {\n    [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n  };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n  const translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n  let {\n    x,\n    y\n  } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n  let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n  if (positionOffset) {\n    const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n  return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  let styleEl = doc.getElementById('react-draggable-style-el');\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n    // $FlowIgnore: IE\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      const selection = (doc.defaultView || window).getSelection();\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {\n    // probably IE\n  }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n  var _window$document;\n  let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return '';\n\n  // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n  const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n  if (!style) return '';\n  if (prop in style) return '';\n  for (let i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n  return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n  let out = '';\n  let shouldCapitalize = true;\n  for (let i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n  return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n  if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y];\n\n  // Clone new bounds\n  let {\n    bounds\n  } = draggable.props;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  const node = findDOMNode(draggable);\n  if (typeof bounds === 'string') {\n    const {\n      ownerDocument\n    } = node;\n    const ownerWindow = ownerDocument.defaultView;\n    let boundNode;\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n    const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n    const nodeStyle = ownerWindow.getComputedStyle(node);\n    const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n    // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  }\n\n  // Keep x and y below right and bottom limits...\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n  // But above left and top limits.\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n  const x = Math.round(pendingX / grid[0]) * grid[0];\n  const y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n  const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n  const node = findDOMNode(draggableCore);\n  // User can provide an offsetParent if desired.\n  const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by <DraggableCore>'s events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n  const isStart = !(0, _shims.isNum)(draggable.lastX);\n  const node = findDOMNode(draggable);\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x,\n      y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node,\n      deltaX: x - draggable.lastX,\n      deltaY: y - draggable.lastY,\n      lastX: draggable.lastX,\n      lastY: draggable.lastY,\n      x,\n      y\n    };\n  }\n}\n\n// Create an data exposed by <Draggable>'s events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n  const scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n  const node = draggable.findDOMNode();\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  }\n  // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{\n  for (let i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n  return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n  return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":["BadgeRoot","styled","name","slot","overridesResolver","props","styles","root","position","display","verticalAlign","flexShrink","BadgeBadge","ownerState","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","color","invisible","memoTheme","theme","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","padding","height","borderRadius","zIndex","transition","transitions","create","easing","easeInOut","duration","enteringScreen","variants","Object","entries","palette","filter","createSimplePaletteValueFilter","map","style","backgroundColor","vars","main","contrastText","RADIUS_DOT","top","right","transform","transformOrigin","badgeClasses","bottom","left","leavingScreen","inProps","ref","anchorOriginProp","className","classes","classesProp","component","components","componentsProps","children","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slots","slotProps","showZero","variantProp","other","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","composeClasses","useUtilityClasses","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","clsx","badgeProps","getBadgeUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","animation","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","size","thickness","value","circleStyle","rootStyle","circumference","Math","PI","toFixed","round","width","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","getToolbarUtilityClass","defineProperty","exports","enumerable","get","_DraggableCore","default","React","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_interopRequireWildcard","_propTypes","_interopRequireDefault","_reactDom","_clsx","_domFns","_positionFns","_shims","_log","WeakMap","cacheBabelInterop","cacheNodeInterop","_extends","assign","bind","i","arguments","length","source","apply","this","_defineProperty","arg","input","prim","Symbol","toPrimitive","res","hint","TypeError","String","_toPrimitive","_toPropertyKey","configurable","writable","Draggable","Component","getDerivedStateFromProps","_ref","_ref2","prevPropsPosition","x","y","constructor","super","e","coreData","onStart","createDraggableData","setState","dragging","dragged","state","uiData","newState","slackX","slackY","bounds","newStateX","newStateY","getBoundPosition","deltaX","deltaY","onDrag","onStop","Boolean","defaultPosition","isElementSVG","console","warn","componentDidMount","window","SVGElement","findDOMNode","componentWillUnmount","_this$props$nodeRef$c","_this$props","render","axis","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","scale","draggableCoreProps","svgTransform","draggable","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","createElement","onDragStart","onDragStop","cloneElement","Children","only","propTypes","oneOf","oneOfType","shape","number","string","dontSetMe","defaultProps","eventsFor","start","move","stop","dragEventFor","DraggableCore","NaN","onMouseDown","allowAnyClick","button","thisNode","ownerDocument","body","Error","disabled","defaultView","Node","handle","matchesSelectorAndParentsTo","cancel","type","preventDefault","touchIdentifier","getTouchIdentifier","getControlPosition","coreEvent","createCoreData","mounted","enableUserSelectHack","addUserSelectStyles","lastX","lastY","addEvent","handleDrag","handleDragStop","Array","isArray","grid","snapToGrid","MouseEvent","err","document","createEvent","initMouseEvent","removeUserSelectStyles","removeEvent","handleDragStart","onTouchStart","passive","_this$props2","onMouseUp","onTouchEnd","bool","node","isRequired","offsetParent","propName","nodeType","arrayOf","object","func","module","addClassName","el","handler","inputOptions","options","capture","attachEvent","styleEl","getElementById","id","innerHTML","getElementsByTagName","appendChild","controlPos","translation","getTranslation","_getPrefix","browserPrefixToKey","getTouch","identifier","targetTouches","findInArray","t","changedTouches","innerHeight","computedStyle","getComputedStyle","int","paddingTop","paddingBottom","innerWidth","matchesSelector","selector","baseNode","parentNode","offsetXYFromParent","evt","offsetParentRect","getBoundingClientRect","scrollLeft","scrollTop","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","detachEvent","selection","empty","getSelection","removeAllRanges","matchesSelectorFunc","method","isFunction","unitSuffix","concat","defaultX","defaultY","classList","add","match","RegExp","remove","replace","browserPrefixToStyle","prop","prefix","getPrefix","prefixes","_window$document","str","out","shouldCapitalize","toUpperCase","kebabToTitleCase","isStart","isNum","cloneBounds","ownerWindow","boundNode","querySelector","HTMLElement","boundNodeEl","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","min","draggableCore","touchObj","pendingX","pendingY","componentName","array","callback","a","parseInt","toString","num","isNaN","f","n"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5668.73016b9c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5668],{95668:(e,t,a)=>{a.d(t,{renderToSvg:()=>g});var r=a(7552),l=a(42489),n=a(99546),i=a(20139),s=a(49823),c=a(36422),o=a(20529),m=a(48231);function h({width:e,height:t,shift:a}){const l=(0,m.A)();return r.createElement("rect",{width:e+2*a,height:t,fill:(0,n.stripAlpha)(l.palette.background.default)})}var f=a(95727),d=a(91468);async function g(e,t){const{textHeight:a=18,headerHeight:m=30,rulerHeight:g=30,fontSize:u=13,trackLabels:w="offset",Wrapper:p=({children:e})=>e,themeName:k="default"}=t,{createRootFn:E}=(0,c.getRoot)(e),b=(0,n.getSession)(e),v=b.allThemes?.()[k],{width:x,views:y}=e,S=m+g,T=y.map((e=>(0,o.mJ)(e.tracks,a,w)+S)),z=(0,n.sum)(T)+100,$=await Promise.all(y.map((async e=>({view:e,data:await Promise.all(e.tracks.map((async e=>{const a=e.displays[0];return await(0,l.when)((()=>void 0===a.ready||a.ready)),{track:e,result:await a.renderSvg({...t,theme:v})}})))})))),H=function(e,t,a){return(0,n.max)(e.flatMap((e=>e.tracks.map((e=>(0,n.measureText)((0,d.getTrackName)(e.configuration,a),t))))),0)}(y,u,b)+40,L="left"===w?H:0,P="offset"===w?a:0,R=y.map(((e,t)=>function(e,t,a=0){const r={};let l=t;for(const n of e.tracks)r[n.configuration.trackId]=l+a,l+=n.displays[0].height+t;return r}(e,P,u+(t>0?T[t-1]:0)+S))),j=x+L,A=(0,s.createJBrowseTheme)(v);return(0,n.renderToStaticMarkup)(r.createElement(i.A,{theme:A},r.createElement(p,null,r.createElement("svg",{width:x,height:z,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:[0,0,j+100,z].toString()},r.createElement(h,{width:j,height:z,shift:50}),y[0]?r.createElement("g",{transform:`translate(50 ${u})`},r.createElement("g",{transform:`translate(${L})`},r.createElement("text",{x:0,fontSize:u,fill:A.palette.text.primary},y[0].assemblyNames.join(", ")),r.createElement(o.$m,{model:$[0].view,fontSize:u})),r.createElement(o.zh,{textHeight:a,trackLabels:w,fontSize:u,model:$[0].view,displayResults:$[0].data,offset:S,trackLabelOffset:L})):null,y[1]?r.createElement("g",{transform:`translate(50 ${u+T[0]})`},r.createElement("g",{transform:`translate(${L})`},r.createElement("text",{x:0,fontSize:u,fill:A.palette.text.primary},y[1].assemblyNames.join(", ")),r.createElement(o.$m,{model:$[1].view,fontSize:u})),r.createElement(o.zh,{textHeight:a,trackLabels:w,fontSize:u,model:$[1].view,displayResults:$[1].data,offset:S,trackLabelOffset:L})):null,r.createElement("defs",null,r.createElement("clipPath",{id:"clip-bsv"},r.createElement("rect",{x:0,y:0,width:x,height:z}))),r.createElement("g",{transform:`translate(${L+50})`,clipPath:"url(#clip-bsv)"},e.matchedTracks.map((t=>r.createElement(f.A,{parentRef:{current:null},key:t.configuration.trackId,model:e,trackId:t.configuration.trackId,getTrackYPosOverride:(e,t)=>R[t][e]}))))))),E)}}}]);
+//# sourceMappingURL=5668.73016b9c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5668.73016b9c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5668.73016b9c.chunk.js","mappings":"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","sources":["../../../plugins/breakpoint-split-view/src/BreakpointSplitView/svgcomponents/SVGBackground.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/svgcomponents/util.ts"],"sourcesContent":["import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n  shift,\n}: {\n  width: number\n  height: number\n  shift: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      width={width + shift * 2}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\nimport { when } from 'mobx'\nimport { getSession, renderToStaticMarkup, sum } from '@jbrowse/core/util'\nimport { ThemeProvider } from '@mui/material'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getRoot } from 'mobx-state-tree'\nimport {\n  SVGTracks,\n  SVGRuler,\n  totalHeight,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport SVGBackground from './SVGBackground'\nimport { ExportSvgOptions, BreakpointViewModel } from '../model'\nimport Overlay from '../components/Overlay'\nimport { getTrackNameMaxLen, getTrackOffsets } from './util'\n\ntype BSV = BreakpointViewModel\n\n// render LGV to SVG\nexport async function renderToSvg(model: BSV, opts: ExportSvgOptions) {\n  const {\n    textHeight = 18,\n    headerHeight = 30,\n    rulerHeight = 30,\n    fontSize = 13,\n    trackLabels = 'offset',\n    Wrapper = ({ children }) => children,\n    themeName = 'default',\n  } = opts\n\n  const { createRootFn } = getRoot<any>(model)\n  const session = getSession(model)\n  const theme = session.allThemes?.()[themeName]\n  const { width, views } = model\n  const shift = 50\n  const offset = headerHeight + rulerHeight\n  const heights = views.map(\n    v => totalHeight(v.tracks, textHeight, trackLabels) + offset,\n  )\n  const totalHeightSvg = sum(heights) + 100\n  const displayResults = await Promise.all(\n    views.map(\n      async view =>\n        ({\n          view,\n          data: await Promise.all(\n            view.tracks.map(async track => {\n              const d = track.displays[0]\n              await when(() => (d.ready !== undefined ? d.ready : true))\n              return { track, result: await d.renderSvg({ ...opts, theme }) }\n            }),\n          ),\n        }) as const,\n    ),\n  )\n\n  const trackLabelMaxLen = getTrackNameMaxLen(views, fontSize, session) + 40\n  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0\n  const textOffset = trackLabels === 'offset' ? textHeight : 0\n  const trackOffsets = views.map((view, idx) =>\n    getTrackOffsets(\n      view,\n      textOffset,\n      fontSize + (idx > 0 ? heights[idx - 1]! : 0) + offset,\n    ),\n  )\n  const w = width + trackLabelOffset\n  const t = createJBrowseTheme(theme)\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={t}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={totalHeightSvg}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, w + shift * 2, totalHeightSvg].toString()}\n        >\n          <SVGBackground width={w} height={totalHeightSvg} shift={shift} />\n          {views[0] ? (\n            <g transform={`translate(${shift} ${fontSize})`}>\n              <g transform={`translate(${trackLabelOffset})`}>\n                <text x={0} fontSize={fontSize} fill={t.palette.text.primary}>\n                  {views[0].assemblyNames.join(', ')}\n                </text>\n\n                <SVGRuler model={displayResults[0]!.view} fontSize={fontSize} />\n              </g>\n              <SVGTracks\n                textHeight={textHeight}\n                trackLabels={trackLabels}\n                fontSize={fontSize}\n                model={displayResults[0]!.view}\n                displayResults={displayResults[0]!.data}\n                offset={offset}\n                trackLabelOffset={trackLabelOffset}\n              />\n            </g>\n          ) : null}\n\n          {views[1] ? (\n            <g transform={`translate(${shift} ${fontSize + heights[0]!})`}>\n              <g transform={`translate(${trackLabelOffset})`}>\n                <text x={0} fontSize={fontSize} fill={t.palette.text.primary}>\n                  {views[1].assemblyNames.join(', ')}\n                </text>\n                <SVGRuler model={displayResults[1]!.view} fontSize={fontSize} />\n              </g>\n              <SVGTracks\n                textHeight={textHeight}\n                trackLabels={trackLabels}\n                fontSize={fontSize}\n                model={displayResults[1]!.view}\n                displayResults={displayResults[1]!.data}\n                offset={offset}\n                trackLabelOffset={trackLabelOffset}\n              />\n            </g>\n          ) : null}\n\n          <defs>\n            <clipPath id=\"clip-bsv\">\n              <rect x={0} y={0} width={width} height={totalHeightSvg} />\n            </clipPath>\n          </defs>\n          <g\n            transform={`translate(${trackLabelOffset + shift})`}\n            clipPath=\"url(#clip-bsv)\"\n          >\n            {model.matchedTracks.map(track => (\n              <Overlay\n                parentRef={{ current: null }}\n                key={track.configuration.trackId}\n                model={model}\n                trackId={track.configuration.trackId}\n                getTrackYPosOverride={(id, level) => trackOffsets[level]![id]!}\n              />\n            ))}\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n","import { AbstractSessionModel, max, measureText } from '@jbrowse/core/util'\n\n// locals\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { getTrackName } from '@jbrowse/core/util/tracks'\n\nexport function getTrackNameMaxLen(\n  views: LinearGenomeViewModel[],\n  fontSize: number,\n  session: AbstractSessionModel,\n) {\n  return max(\n    views.flatMap(view =>\n      view.tracks.map(t =>\n        measureText(getTrackName(t.configuration, session), fontSize),\n      ),\n    ),\n    0,\n  )\n}\nexport function getTrackOffsets(\n  view: LinearGenomeViewModel,\n  textOffset: number,\n  extra = 0,\n) {\n  const offsets = {} as Record<string, number>\n  let curr = textOffset\n  for (const track of view.tracks) {\n    offsets[track.configuration.trackId] = curr + extra\n    curr += track.displays[0].height + textOffset\n  }\n  return offsets\n}\n"],"names":["SVGBackground","width","height","shift","theme","useTheme","React","fill","stripAlpha","palette","background","default","async","renderToSvg","model","opts","textHeight","headerHeight","rulerHeight","fontSize","trackLabels","Wrapper","children","themeName","createRootFn","getRoot","session","getSession","allThemes","views","offset","heights","map","v","totalHeight","tracks","totalHeightSvg","sum","displayResults","Promise","all","view","data","d","track","displays","when","undefined","ready","result","renderSvg","trackLabelMaxLen","max","flatMap","t","measureText","getTrackName","configuration","getTrackNameMaxLen","trackLabelOffset","textOffset","trackOffsets","idx","extra","offsets","curr","trackId","getTrackOffsets","w","createJBrowseTheme","renderToStaticMarkup","ThemeProvider","xmlns","xmlnsXlink","viewBox","toString","transform","x","text","primary","assemblyNames","join","SVGRuler","SVGTracks","id","y","clipPath","matchedTracks","Overlay","parentRef","current","key","getTrackYPosOverride","level"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5676.818528e8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,84 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5676],{84421:(e,t,r)=>{"use strict";r.d(t,{A:()=>M});var n=r(7552),o=r(93878),l=r(70799),i=r(72639),a=r(93876),s=r(64761),c=r(51148),u=r(60129),d=r(58520),p=r(4785),f=r(15622),g=r(50077),m=r(69500);const h=s.i7`
+  0% {
+    left: -35%;
+    right: 100%;
+  }
+
+  60% {
+    left: 100%;
+    right: -90%;
+  }
+
+  100% {
+    left: 100%;
+    right: -90%;
+  }
+`,b="string"!=typeof h?s.AH`
+        animation: ${h} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+      `:null,w=s.i7`
+  0% {
+    left: -200%;
+    right: 100%;
+  }
+
+  60% {
+    left: 107%;
+    right: -8%;
+  }
+
+  100% {
+    left: 107%;
+    right: -8%;
+  }
+`,C="string"!=typeof w?s.AH`
+        animation: ${w} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;
+      `:null,v=s.i7`
+  0% {
+    opacity: 1;
+    background-position: 0 -23px;
+  }
+
+  60% {
+    opacity: 0;
+    background-position: 0 -23px;
+  }
+
+  100% {
+    opacity: 1;
+    background-position: -200px -23px;
+  }
+`,x="string"!=typeof v?s.AH`
+        animation: ${v} 3s infinite linear;
+      `:null,y=(e,t)=>e.vars?e.vars.palette.LinearProgress[`${t}Bg`]:"light"===e.palette.mode?(0,i.a)(e.palette[t].main,.62):(0,i.e$)(e.palette[t].main,.5),A=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`color${(0,f.A)(r.color)}`],t[r.variant]]}})((0,u.A)((({theme:e})=>({position:"relative",overflow:"hidden",display:"block",height:4,zIndex:0,"@media print":{colorAdjust:"exact"},variants:[...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{backgroundColor:y(e,t)}}))),{props:({ownerState:e})=>"inherit"===e.color&&"buffer"!==e.variant,style:{"&::before":{content:'""',position:"absolute",left:0,top:0,right:0,bottom:0,backgroundColor:"currentColor",opacity:.3}}},{props:{variant:"buffer"},style:{backgroundColor:"transparent"}},{props:{variant:"query"},style:{transform:"rotate(180deg)"}}]})))),R=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Dashed",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.dashed,t[`dashedColor${(0,f.A)(r.color)}`]]}})((0,u.A)((({theme:e})=>({position:"absolute",marginTop:0,height:"100%",width:"100%",backgroundSize:"10px 10px",backgroundPosition:"0 -23px",variants:[{props:{color:"inherit"},style:{opacity:.3,backgroundImage:"radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)"}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>{const r=y(e,t);return{props:{color:t},style:{backgroundImage:`radial-gradient(${r} 0%, ${r} 16%, transparent 42%)`}}}))]}))),x||{animation:`${v} 3s infinite linear`}),S=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Bar1",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.bar,t[`barColor${(0,f.A)(r.color)}`],("indeterminate"===r.variant||"query"===r.variant)&&t.bar1Indeterminate,"determinate"===r.variant&&t.bar1Determinate,"buffer"===r.variant&&t.bar1Buffer]}})((0,u.A)((({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[{props:{color:"inherit"},style:{backgroundColor:"currentColor"}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main}}))),{props:{variant:"determinate"},style:{transition:"transform .4s linear"}},{props:{variant:"buffer"},style:{zIndex:1,transition:"transform .4s linear"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:b||{animation:`${h} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`}}]})))),I=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Bar2",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.bar,t[`barColor${(0,f.A)(r.color)}`],("indeterminate"===r.variant||"query"===r.variant)&&t.bar2Indeterminate,"buffer"===r.variant&&t.bar2Buffer]}})((0,u.A)((({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{"--LinearProgressBar2-barColor":(e.vars||e).palette[t].main}}))),{props:({ownerState:e})=>"buffer"!==e.variant&&"inherit"!==e.color,style:{backgroundColor:"var(--LinearProgressBar2-barColor, currentColor)"}},{props:{color:"inherit"},style:{opacity:.3}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t,variant:"buffer"},style:{backgroundColor:y(e,t),transition:"transform .4s linear"}}))),{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:C||{animation:`${w} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`}}]})))),M=n.forwardRef((function(e,t){const r=(0,p.b)({props:e,name:"MuiLinearProgress"}),{className:n,color:i="primary",value:s,valueBuffer:c,variant:u="indeterminate",...d}=r,h={...r,color:i,variant:u},b=(e=>{const{classes:t,variant:r,color:n}=e,o={root:["root",`color${(0,f.A)(n)}`,r],dashed:["dashed",`dashedColor${(0,f.A)(n)}`],bar1:["bar",`barColor${(0,f.A)(n)}`,("indeterminate"===r||"query"===r)&&"bar1Indeterminate","determinate"===r&&"bar1Determinate","buffer"===r&&"bar1Buffer"],bar2:["bar","buffer"!==r&&`barColor${(0,f.A)(n)}`,"buffer"===r&&`color${(0,f.A)(n)}`,("indeterminate"===r||"query"===r)&&"bar2Indeterminate","buffer"===r&&"bar2Buffer"]};return(0,l.A)(o,g.l,t)})(h),w=(0,a.I)(),C={},v={bar1:{},bar2:{}};if(("determinate"===u||"buffer"===u)&&void 0!==s){C["aria-valuenow"]=Math.round(s),C["aria-valuemin"]=0,C["aria-valuemax"]=100;let e=s-100;w&&(e=-e),v.bar1.transform=`translateX(${e}%)`}if("buffer"===u&&void 0!==c){let e=(c||0)-100;w&&(e=-e),v.bar2.transform=`translateX(${e}%)`}return(0,m.jsxs)(A,{className:(0,o.A)(b.root,n),ownerState:h,role:"progressbar",...C,ref:t,...d,children:["buffer"===u?(0,m.jsx)(R,{className:b.dashed,ownerState:h}):null,(0,m.jsx)(S,{className:b.bar1,ownerState:h,style:v.bar1}),"determinate"===u?null:(0,m.jsx)(I,{className:b.bar2,ownerState:h,style:v.bar2})]})}))},50077:(e,t,r)=>{"use strict";r.d(t,{A:()=>i,l:()=>l});var n=r(33761),o=r(85693);function l(e){return(0,o.Ay)("MuiLinearProgress",e)}const i=(0,n.A)("MuiLinearProgress",["root","colorPrimary","colorSecondary","determinate","indeterminate","buffer","query","dashed","dashedColorPrimary","dashedColorSecondary","bar","barColorPrimary","barColorSecondary","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer"])},27943:(e,t,r)=>{"use strict";r.d(t,{A:()=>C});var n=r(7552),o=r(93878),l=r(70799),i=r(86259),a=r(72639),s=r(64761),c=r(51148),u=r(60129),d=r(4785),p=r(76819),f=r(69500);const g=s.i7`
+  0% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0.4;
+  }
+
+  100% {
+    opacity: 1;
+  }
+`,m=s.i7`
+  0% {
+    transform: translateX(-100%);
+  }
+
+  50% {
+    /* +0.5s of delay between each loop */
+    transform: translateX(100%);
+  }
+
+  100% {
+    transform: translateX(100%);
+  }
+`,h="string"!=typeof g?s.AH`
+        animation: ${g} 2s ease-in-out 0.5s infinite;
+      `:null,b="string"!=typeof m?s.AH`
+        &::after {
+          animation: ${m} 2s linear 0.5s infinite;
+        }
+      `:null,w=(0,c.Ay)("span",{name:"MuiSkeleton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],!1!==r.animation&&t[r.animation],r.hasChildren&&t.withChildren,r.hasChildren&&!r.width&&t.fitContent,r.hasChildren&&!r.height&&t.heightAuto]}})((0,u.A)((({theme:e})=>{const t=(0,i.l_)(e.shape.borderRadius)||"px",r=(0,i.db)(e.shape.borderRadius);return{display:"block",backgroundColor:e.vars?e.vars.palette.Skeleton.bg:(0,a.X4)(e.palette.text.primary,"light"===e.palette.mode?.11:.13),height:"1.2em",variants:[{props:{variant:"text"},style:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 55%",transform:"scale(1, 0.60)",borderRadius:`${r}${t}/${Math.round(r/.6*10)/10}${t}`,"&:empty:before":{content:'"\\00a0"'}}},{props:{variant:"circular"},style:{borderRadius:"50%"}},{props:{variant:"rounded"},style:{borderRadius:(e.vars||e).shape.borderRadius}},{props:({ownerState:e})=>e.hasChildren,style:{"& > *":{visibility:"hidden"}}},{props:({ownerState:e})=>e.hasChildren&&!e.width,style:{maxWidth:"fit-content"}},{props:({ownerState:e})=>e.hasChildren&&!e.height,style:{height:"auto"}},{props:{animation:"pulse"},style:h||{animation:`${g} 2s ease-in-out 0.5s infinite`}},{props:{animation:"wave"},style:{position:"relative",overflow:"hidden",WebkitMaskImage:"-webkit-radial-gradient(white, black)","&::after":{background:`linear-gradient(\n                90deg,\n                transparent,\n                ${(e.vars||e).palette.action.hover},\n                transparent\n              )`,content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}}},{props:{animation:"wave"},style:b||{"&::after":{animation:`${m} 2s linear 0.5s infinite`}}}]}}))),C=n.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiSkeleton"}),{animation:n="pulse",className:i,component:a="span",height:s,style:c,variant:u="text",width:g,...m}=r,h={...r,animation:n,component:a,variant:u,hasChildren:Boolean(m.children)},b=(e=>{const{classes:t,variant:r,animation:n,hasChildren:o,width:i,height:a}=e,s={root:["root",r,n,o&&"withChildren",o&&!i&&"fitContent",o&&!a&&"heightAuto"]};return(0,l.A)(s,p.E,t)})(h);return(0,f.jsx)(w,{as:a,ref:t,className:(0,o.A)(b.root,i),ownerState:h,...m,style:{width:g,height:s,...c}})}))},76819:(e,t,r)=>{"use strict";r.d(t,{A:()=>i,E:()=>l});var n=r(33761),o=r(85693);function l(e){return(0,o.Ay)("MuiSkeleton",e)}const i=(0,n.A)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"])},85676:(e,t,r)=>{"use strict";r.d(t,{z:()=>Xt});var n=r(6614),o=r(7552),l=r(15152),i=r.n(l),a=r(48335),s=r(1074),c=r(71173),u=r(98114),d=r(80163),p=r(12274),f=r(64565),g=r(8751),m=r(4394),h=r(71115),b=r(41222),w=r(2220),C=r(82188),v=r(61311),x=r(93876),y=r(58766),A=r(99270);const R=(0,y.s3)()&&null!=window.localStorage.getItem("DEBUG"),S=()=>{},I={debug:S,info:S,warn:S,error:S},M=["debug","info","warn","error"];function k(e,t,r=console){const n=M.indexOf(t);if(-1===n)throw new Error(`MUI X: Log level ${t} not recognized.`);return M.reduce(((t,o,l)=>(t[o]=l>=n?(...t)=>{const[n,...l]=t;r[o](`MUI X: ${e} - ${n}`,...l)}:S,t)),{})}class P{constructor(){this.maxListeners=20,this.warnOnce=!1,this.events={}}on(e,t,r={}){let n=this.events[e];n||(n={highPriority:new Map,regular:new Map},this.events[e]=n),r.isFirst?n.highPriority.set(t,!0):n.regular.set(t,!0)}removeListener(e,t){this.events[e]&&(this.events[e].regular.delete(t),this.events[e].highPriority.delete(t))}removeAllListeners(){this.events={}}emit(e,...t){const r=this.events[e];if(!r)return;const n=Array.from(r.highPriority.keys()),o=Array.from(r.regular.keys());for(let e=n.length-1;e>=0;e-=1){const o=n[e];r.highPriority.has(o)&&o.apply(this,t)}for(let e=0;e<o.length;e+=1){const n=o[e];r.regular.has(n)&&n.apply(this,t)}}once(e,t){const r=this;this.on(e,(function n(...o){r.removeListener(e,n),t.apply(r,o)}))}}class E{static create(e){return new E(e)}constructor(e){this.value=void 0,this.listeners=void 0,this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getSnapshot=()=>this.value,this.update=e=>{this.value=e,this.listeners.forEach((t=>t(e)))},this.value=e,this.listeners=new Set}}var F=r(89148);const H=Symbol("mui.api_private");let O=0;var T=r(83673);function D(e){return D="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},D(e)}function z(e){var t=function(e){if("object"!=D(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=D(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==D(t)?t:t+""}const L="none",$={rowTreeCreation:"rowTree",filtering:"rowTree",sorting:"rowTree",visibleRowsLookupCreation:"rowTree"},j=(e,t)=>{const r=function(e,t){const r=o.useRef(),n=o.useRef();n.current||(n.current=function(e){const t=e.current?.[H];if(t)return t;const r={},n={state:r,store:E.create(r),instanceId:{id:O}};return O+=1,n.getPublicApi=()=>e.current,n.register=(t,r)=>{Object.keys(r).forEach((o=>{const l=r[o],i=n[o];if(!0===i?.spying?i.target=l:n[o]=l,"public"===t){const t=e.current,r=t[o];!0===r?.spying?r.target=l:t[o]=l}}))},n.register("private",{caches:{},eventManager:new P}),n}(r)),r.current||(r.current=function(e){return{get state(){return e.current.state},get store(){return e.current.store},get instanceId(){return e.current.instanceId},[H]:e.current}}(n));const l=o.useCallback(((...e)=>{const[r,o,l={}]=e;if(l.defaultMuiPrevented=!1,(e=>void 0!==e.isPropagationStopped)(l)&&l.isPropagationStopped())return;const i=t.signature===F.HV.DataGridPro||t.signature===F.HV.DataGridPremium?{api:n.current.getPublicApi()}:{};n.current.eventManager.emit(r,o,l,i)}),[n,t.signature]),i=o.useCallback(((e,t,r)=>{n.current.eventManager.on(e,t,r);const o=n.current;return()=>{o.eventManager.removeListener(e,t)}}),[n]);return(0,A.P)(n,{subscribeEvent:i,publishEvent:l},"public"),e&&!e.current?.state&&(e.current=r.current),o.useImperativeHandle(e,(()=>r.current),[r]),o.useEffect((()=>{const e=n.current;return()=>{e.publishEvent("unmount")}}),[n]),n}(e,t);return(e=>{const t=o.useRef(null),r=o.useRef(null),n=o.useRef(null),l=o.useRef(null);e.current.register("public",{rootElementRef:t}),e.current.register("private",{mainElementRef:r,virtualScrollerRef:n,columnHeadersContainerRef:l})})(r),(e=>{const t=(0,x.I)();void 0===e.current.state.isRtl&&(e.current.state.isRtl=t);const r=o.useRef(!0);o.useEffect((()=>{r.current?r.current=!1:e.current.setState((e=>(0,n.A)({},e,{isRtl:t})))}),[e,t])})(r),((e,t)=>{const r=o.useCallback((e=>R?k(e,"debug",t.logger):t.logLevel?k(e,t.logLevel.toString(),t.logger):I),[t.logLevel,t.logger]);(0,A.P)(e,{getLogger:r},"private")})(r,t),(e=>{const t=o.useRef({}),[,r]=o.useState(),l=o.useCallback((e=>{t.current[e.stateId]=e}),[]),i=o.useCallback(((r,n)=>{let o;if(o=(0,y.Tn)(r)?r(e.current.state):r,e.current.state===o)return!1;let l=!1;const i=[];if(Object.keys(t.current).forEach((r=>{const n=t.current[r],a=n.stateSelector(e.current.state,e.current.instanceId),s=n.stateSelector(o,e.current.instanceId);s!==a&&(i.push({stateId:n.stateId,hasPropChanged:s!==n.propModel}),void 0!==n.propModel&&s!==n.propModel&&(l=!0))})),i.length>1)throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${i[0].stateId}, therefore, you're not allowed to update ${i.map((e=>e.stateId)).join(", ")} in the same transaction.`);if(l||(e.current.state=o,e.current.publishEvent("stateChange",o),e.current.store.update(o)),1===i.length){const{stateId:r,hasPropChanged:a}=i[0],s=t.current[r],c=s.stateSelector(o,e.current.instanceId);s.propOnChange&&a&&s.propOnChange(c,{reason:n,api:e.current}),l||e.current.publishEvent(s.changeEvent,c,{reason:n})}return!l}),[e]),a=o.useCallback(((t,r,o)=>e.current.setState((e=>(0,n.A)({},e,{[t]:r(e[t])})),o)),[e]),s={setState:i,forceUpdate:o.useCallback((()=>r((()=>e.current.state))),[e])},c={updateControlState:a,registerControlState:l};(0,A.P)(e,s,"public"),(0,A.P)(e,c,"private")})(r),(e=>{const t=o.useRef({}),r=o.useRef(!1),n=o.useCallback((e=>{!r.current&&e&&(r.current=!0,Object.values(e.appliers).forEach((e=>{e()})),r.current=!1)}),[]),l={registerPipeProcessor:o.useCallback(((e,r,o)=>{t.current[e]||(t.current[e]={processors:new Map,processorsAsArray:[],appliers:{}});const l=t.current[e];return l.processors.get(r)!==o&&(l.processors.set(r,o),l.processorsAsArray=Array.from(t.current[e].processors.values()),n(l)),()=>{t.current[e].processors.delete(r),t.current[e].processorsAsArray=Array.from(t.current[e].processors.values())}}),[n]),registerPipeApplier:o.useCallback(((e,r,n)=>(t.current[e]||(t.current[e]={processors:new Map,processorsAsArray:[],appliers:{}}),t.current[e].appliers[r]=n,()=>{const n=t.current[e].appliers,o=(0,T.A)(n,[r].map(z));t.current[e].appliers=o})),[]),requestPipeProcessorsApplication:o.useCallback((e=>{n(t.current[e])}),[n])},i={unstable_applyPipeProcessors:o.useCallback(((...e)=>{const[r,n,o]=e;if(!t.current[r])return n;const l=t.current[r].processorsAsArray;let i=n;for(let e=0;e<l.length;e+=1)i=l[e](i,o);return i}),[])};(0,A.P)(e,l,"private"),(0,A.P)(e,i,"public")})(r),(e=>{const t=o.useRef(new Map),r=o.useRef({}),n={registerStrategyProcessor:o.useCallback(((t,n,o)=>{const l=()=>{const e=r.current[n],o=(0,T.A)(e,[t].map(z));r.current[n]=o};r.current[n]||(r.current[n]={});const i=r.current[n],a=i[t];return i[t]=o,a&&a!==o?(t===e.current.getActiveStrategy($[n])&&e.current.publishEvent("activeStrategyProcessorChange",n),l):l}),[e]),applyStrategyProcessor:o.useCallback(((t,n)=>{const o=e.current.getActiveStrategy($[t]);if(null==o)throw new Error("Can't apply a strategy processor before defining an active strategy");const l=r.current[t];if(!l||!l[o])throw new Error(`No processor found for processor "${t}" on strategy "${o}"`);return(0,l[o])(n)}),[e]),getActiveStrategy:o.useCallback((e=>{const r=Array.from(t.current.entries()).find((([,t])=>t.group===e&&t.isAvailable()));return r?.[0]??L}),[]),setStrategyAvailability:o.useCallback(((r,n,o)=>{t.current.set(n,{group:r,isAvailable:o}),e.current.publishEvent("strategyAvailabilityChange")}),[e])};(0,A.P)(e,n,"private")})(r),((e,t)=>{const r=o.useCallback((e=>{if(null==t.localeText[e])throw new Error(`Missing translation for key ${e}.`);return t.localeText[e]}),[t.localeText]);e.current.register("public",{getLocaleText:r})})(r,t),r.current.register("private",{rootProps:t}),r},N=(e,t,r)=>{const n=o.useRef(!1);n.current||(t.current.state=e(t.current.state,r,t),n.current=!0)};var V=r(47434),B=r(3247),G=r(92179);function W(e,t){if(null==e)return"";const r="string"==typeof e?e:`${e}`;if(t.shouldAppendQuotes||t.escapeFormulas){const e=r.replace(/"/g,'""');return t.escapeFormulas&&["=","+","-","@","\t","\r"].includes(e[0])?`"'${e}"`:[t.delimiter,"\n","\r",'"'].some((e=>r.includes(e)))?`"${e}"`:e}return r}const _=(e,t)=>{const{csvOptions:r,ignoreValueFormatter:n}=t;let o;if(n){const t=e.colDef.type;o="number"===t?String(e.value):"date"===t||"dateTime"===t?e.value?.toISOString():"function"==typeof e.value?.toString?e.value.toString():e.value}else o=e.formattedValue;return W(o,r)};class U{constructor(e){this.options=void 0,this.rowString="",this.isEmpty=!0,this.options=e}addValue(e){this.isEmpty||(this.rowString+=this.options.csvOptions.delimiter),"function"==typeof this.options.sanitizeCellValue?this.rowString+=this.options.sanitizeCellValue(e,this.options.csvOptions):this.rowString+=e,this.isEmpty=!1}getRowString(){return this.rowString}}function q(e){const t=document.createElement("span");t.style.whiteSpace="pre",t.style.userSelect="all",t.style.opacity="0px",t.textContent=e,document.body.appendChild(t);const r=document.createRange();r.selectNode(t);const n=window.getSelection();n.removeAllRanges(),n.addRange(r);try{document.execCommand("copy")}finally{document.body.removeChild(t)}}var K=r(65111),X=r(83182);const Y=e=>(0,n.A)({},e,{columnMenu:{open:!1}});var Z=r(20849);const Q=(e,t,r)=>{const n=o.useRef(),l=o.useRef(`mui-${Math.round(1e9*Math.random())}`),i=o.useCallback((()=>{n.current=e.current.registerPipeProcessor(t,l.current,r)}),[e,r,t]);(0,Z.g)((()=>{i()}));const a=o.useRef(!0);o.useEffect((()=>(a.current?a.current=!1:i(),()=>{n.current&&(n.current(),n.current=null)})),[i])},J=(e,t,r)=>{const n=o.useRef(),l=o.useRef(`mui-${Math.round(1e9*Math.random())}`),i=o.useCallback((()=>{n.current=e.current.registerPipeApplier(t,l.current,r)}),[e,r,t]);(0,Z.g)((()=>{i()}));const a=o.useRef(!0);o.useEffect((()=>(a.current?a.current=!1:i(),()=>{n.current&&(n.current(),n.current=null)})),[i])};var ee=r(36155),te=r(60378),re=r(48534),ne=r(69500);const oe=(e,t,r)=>{const o=(0,te.Pd)({apiRef:r,columnsToUpsert:t.columns,initialState:t.initialState?.columns,columnVisibilityModel:t.columnVisibilityModel??t.initialState?.columns?.columnVisibilityModel??{},keepOnlyColumnsToUpsert:!0});return(0,n.A)({},e,{columns:o,pinnedColumns:e.pinnedColumns??ee.u})};function le(e){return t=>(0,n.A)({},t,{columns:e})}var ie=r(52535),ae=r(33658);const se=(e,t)=>(0,n.A)({},e,{density:t.initialState?.density??t.density??"standard"}),ce=({apiRef:e,options:t})=>{const r=(0,d.OV)(e);return t.fields?t.fields.reduce(((e,t)=>{const n=r.find((e=>e.field===t));return n&&e.push(n),e}),[]):(t.allColumns?r:(0,d.iv)(e)).filter((e=>!e.disableExport))},ue=({apiRef:e})=>{const t=(0,w.qA)(e),r=(0,m.qj)(e),n=e.current.getSelectedRows(),o=t.filter((e=>"footer"!==r[e].type)),l=(0,m.$2)(e),i=l?.top?.map((e=>e.id))||[],a=l?.bottom?.map((e=>e.id))||[];return o.unshift(...i),o.push(...a),n.size>0?o.filter((e=>n.has(e))):o};var de=r(38175);const pe=(e,t)=>{const r=(0,K.q)(e,"useGridCsvExport"),n=t.ignoreValueFormatterDuringExport,l=("object"==typeof n?n?.csvExport:n)||!1,i=o.useCallback(((t={})=>(r.debug("Get data as CSV"),function(e){const{columns:t,rowIds:r,csvOptions:n,ignoreValueFormatter:o,apiRef:l}=e,i=r.reduce(((e,r)=>`${e}${(({id:e,columns:t,getCellParams:r,csvOptions:n,ignoreValueFormatter:o})=>{const l=new U({csvOptions:n});return t.forEach((t=>{const i=r(e,t.field);l.addValue(_(i,{ignoreValueFormatter:o,csvOptions:n}))})),l.getRowString()})({id:r,columns:t,getCellParams:l.current.getCellParams,ignoreValueFormatter:o,csvOptions:n})}\r\n`),"").trim();if(!n.includeHeaders)return i;const a=t.filter((e=>e.field!==G.f.field)),s=[];if(n.includeColumnGroupsHeaders){const e=l.current.getAllGroupDetails();let t=0;const r=a.reduce(((e,r)=>{const n=l.current.getColumnGroupPath(r.field);return e[r.field]=n,t=Math.max(t,n.length),e}),{});for(let o=0;o<t;o+=1){const t=new U({csvOptions:n,sanitizeCellValue:W});s.push(t),a.forEach((n=>{const l=(r[n.field]||[])[o],i=e[l];t.addValue(i?i.headerName||i.groupId:"")}))}}const c=new U({csvOptions:n,sanitizeCellValue:W});return a.forEach((e=>{c.addValue(e.headerName||e.field)})),s.push(c),`${s.map((e=>e.getRowString())).join("\r\n")}\r\n${i}`.trim()}({columns:ce({apiRef:e,options:t}),rowIds:(t.getRowsToExport??ue)({apiRef:e}),csvOptions:{delimiter:t.delimiter||",",shouldAppendQuotes:t.shouldAppendQuotes??!0,includeHeaders:t.includeHeaders??!0,includeColumnGroupsHeaders:t.includeColumnGroupsHeaders??!0,escapeFormulas:t.escapeFormulas??!0},ignoreValueFormatter:l,apiRef:e}))),[r,e,l]),a=o.useCallback((e=>{r.debug("Export data as CSV");const t=i(e);!function(e,t="csv",r=document.title||"untitled"){const n=`${r}.${t}`;if("download"in HTMLAnchorElement.prototype){const t=URL.createObjectURL(e),r=document.createElement("a");return r.href=t,r.download=n,r.click(),void setTimeout((()=>{URL.revokeObjectURL(t)}))}throw new Error("MUI X: exportAs not supported.")}(new Blob([e?.utf8WithBom?new Uint8Array([239,187,191]):"",t],{type:"text/csv"}),"csv",e?.fileName)}),[r,i]),s={getDataAsCsv:i,exportDataAsCsv:a};(0,A.P)(e,s,"public");const c=o.useCallback(((e,t)=>t.csvOptions?.disableToolbarButton?e:[...e,{component:(0,ne.jsx)(de.jX,{options:t.csvOptions}),componentName:"csvExport"}]),[]);Q(e,"exportMenu",c)};var fe=r(75041),ge=r(76959),me=r(69639),he=r(59458),be=r(24940),we=r(92268);const Ce=(e,t,r)=>{let o=e.paginationModel;const l=e.rowCount,i=r?.pageSize??o.pageSize,a=r?.page??o.page,s=(0,we.$_)(l,i,a);!r||r?.page===o.page&&r?.pageSize===o.pageSize||(o=r);const c=(0,we.m6)(o.page,s);return c!==o.page&&(o=(0,n.A)({},o,{page:c})),(0,we.RW)(o.pageSize,t),o};var ve=r(47198),xe=r(40053),ye=r(49891),Ae=r(15060);const Re=(e,t,r,n)=>{const l=o.useCallback((()=>{e.current.registerStrategyProcessor(t,r,n)}),[e,n,r,t]);(0,Z.g)((()=>{l()}));const i=o.useRef(!0);o.useEffect((()=>{i.current?i.current=!1:l()}),[l])};var Se=r(43905);const Ie=(e,t,r)=>{const o=t.filterModel??t.initialState?.filter?.filterModel??(0,Ae.T)();return(0,n.A)({},e,{filter:{filterModel:(0,Se.L5)(o,t.disableMultipleColumnsFiltering,r),filteredRowsLookup:{},filteredChildrenCountLookup:{},filteredDescendantCountLookup:{}},visibleRowsLookup:{}})},Me=e=>e.filteredRowsLookup;function ke(e,t){return e.current.applyStrategyProcessor("visibleRowsLookupCreation",{tree:t.rows.tree,filteredRowsLookup:t.filter.filteredRowsLookup})}function Pe(){return(0,ve.i5)(Object.values)}var Ee=r(67129),Fe=r(23392);const He=e=>(0,n.A)({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},tabIndex:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}});var Oe=r(10176),Te=r(59340),De=r(10365),ze=r(10930),Le=r(92442);const $e=({currentColIndex:e,firstColIndex:t,lastColIndex:r,isRtl:n})=>{if(n){if(e<r)return e+1}else if(!n&&e>t)return e-1;return null},je=({currentColIndex:e,firstColIndex:t,lastColIndex:r,isRtl:n})=>{if(n){if(e>t)return e-1}else if(!n&&e<r)return e+1;return null},Ne=(e,t)=>{const r=(0,n.A)({},(0,we.N0)(t.autoPageSize),t.paginationModel??t.initialState?.pagination?.paginationModel);(0,we.RW)(r.pageSize,t.signature);const o=t.rowCount??t.initialState?.pagination?.rowCount,l=t.paginationMeta??t.initialState?.pagination?.meta??{};return(0,n.A)({},e,{pagination:{paginationModel:r,rowCount:o,meta:l}})};var Ve=r(38577);const Be=(e,t)=>(0,n.A)({},e,{preferencePanel:t.initialState?.preferencePanel??{open:!1}});var Ge=r(62185),We=r(88729);const _e=e=>{switch(e.type){case"boolean":return!1;case"date":case"dateTime":case"number":return;case"singleSelect":return null;default:return""}},Ue=["id","field"],qe=["id","field"];var Ke=r(89037),Xe=r(65325);const Ye=["id"],Ze=["id"],Qe=e=>(0,n.A)({},e,{editRows:{}});var Je=r(87795),et=r(43026);const tt=(e,t,r)=>{const o=!!t.unstable_dataSource;return r.current.caches.rows=(0,he.Z)({rows:o?[]:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),(0,n.A)({},e,{rows:(0,he.TW)({apiRef:r,rowCountProp:t.rowCount,loadingProp:!!o||t.loading,previousTree:null,previousTreeDepths:null})})},rt=e=>"full"===e.updates.type?(e=>{const t={[he.OL]:(0,n.A)({},(0,he.Mk)(),{children:e})};for(let r=0;r<e.length;r+=1){const n=e[r];t[n]={id:n,depth:0,parent:he.OL,type:"leaf",groupingKey:null}}return{groupingName:L,tree:t,treeDepths:{0:e.length},dataRowIds:e}})(e.updates.rows):(({previousTree:e,actions:t})=>{const r=(0,n.A)({},e),o={};for(let e=0;e<t.remove.length;e+=1){const n=t.remove[e];o[n]=!0,delete r[n]}for(let e=0;e<t.insert.length;e+=1){const n=t.insert[e];r[n]={id:n,depth:0,parent:he.OL,type:"leaf",groupingKey:null}}const l=r[he.OL];let i=[...l.children,...t.insert];return Object.values(o).length&&(i=i.filter((e=>!o[e]))),r[he.OL]=(0,n.A)({},l,{children:i}),{groupingName:L,tree:r,treeDepths:{0:i.length},dataRowIds:i}})({previousTree:e.previousTree,actions:e.updates.actions});var nt=r(15665);const ot=(e,t)=>null==e||Array.isArray(e)?e:t&&t[0]===e?t:[e],lt=(e,t)=>(0,n.A)({},e,{rowSelection:t.rowSelection?ot(t.rowSelectionModel)??[]:[]});var it=r(88519);var at=r(14298);const st=(e,t)=>{const r=t.sortModel??t.initialState?.sorting?.sortModel??[];return(0,n.A)({},e,{sorting:{sortModel:(0,at.Zx)(r,t.disableMultipleColumnsSorting),sortedRows:[]}})};var ct=r(29641);function ut(e){const{clientHeight:t,scrollTop:r,offsetHeight:n,offsetTop:o}=e,l=o+n;return n>t?o:l-t>r?l-t:o<r?o:void 0}var dt=r(35281);const pt={width:0,height:0},ft={isReady:!1,root:pt,viewportOuterSize:pt,viewportInnerSize:pt,contentSize:pt,minimumSize:pt,hasScrollX:!1,hasScrollY:!1,scrollbarSize:0,headerHeight:0,groupHeaderHeight:0,headerFilterHeight:0,rowWidth:0,rowHeight:0,columnsTotalWidth:0,leftPinnedWidth:0,rightPinnedWidth:0,headersTotalHeight:0,topContainerHeight:0,bottomContainerHeight:0},gt=e=>{const t=ft;return(0,n.A)({},e,{dimensions:t})};function mt(e,t){return e.width===t.width&&e.height===t.height}var ht=r(33693),bt=r(35378);const wt=e=>(0,n.A)({},e,{rowsMeta:{currentPageTotalHeight:0,positions:[]}}),Ct=(e,t,r)=>"number"==typeof e&&e>0?e:t;function vt(e){const{apiRef:t,lookup:r,columnIndex:n,rowId:o,minFirstColumnIndex:l,maxLastColumnIndex:i,columns:a}=e,s=a.length,c=a[n],u=t.current.getRow(o),d=t.current.getRowValue(u,c),p="function"==typeof c.colSpan?c.colSpan(d,u,c,t):c.colSpan;if(!p||1===p)return xt(r,o,n,{spannedByColSpan:!1,cellProps:{colSpan:1,width:c.computedWidth}}),{colSpan:1};let f=c.computedWidth;for(let e=1;e<p;e+=1){const t=n+e;t>=l&&t<i&&(f+=a[t].computedWidth,xt(r,o,n+e,{spannedByColSpan:!0,rightVisibleCellIndex:Math.min(n+p,s-1),leftVisibleCellIndex:n})),xt(r,o,n,{spannedByColSpan:!1,cellProps:{colSpan:p,width:f}})}return{colSpan:p}}function xt(e,t,r,n){e[t]||(e[t]={}),e[t][r]=n}["MUI X: The `rowHeight` prop should be a number greater than 0.","The default value will be used instead."].join("\n"),["MUI X: The `getRowHeight` prop should return a number greater than 0 or 'auto'.","The default value will be used instead."].join("\n");var yt=r(20581);const At=(e,t,r)=>{if((0,yt.x)(e)){if(void 0!==r[e.field])throw new Error(["MUI X: columnGroupingModel contains duplicated field",`column field ${e.field} occurs two times in the grouping model:`,`- ${r[e.field].join(" > ")}`,`- ${t.join(" > ")}`].join("\n"));return void(r[e.field]=t)}const{groupId:n,children:o}=e;o.forEach((e=>{At(e,[...t,n],r)}))},Rt=e=>{if(!e)return{};const t={};return e.forEach((e=>{At(e,[],t)})),t},St=(e,t,r)=>{const n=e=>t[e]??[],o=[],l=Math.max(...e.map((e=>n(e).length))),i=(e,t,r)=>(0,y.Hv)(n(e).slice(0,r+1),n(t).slice(0,r+1));for(let t=0;t<l;t+=1){const l=e.reduce(((e,o)=>{const l=n(o)[t]??null;if(0===e.length)return[{columnFields:[o],groupId:l}];const a=e[e.length-1],s=a.columnFields[a.columnFields.length-1];return a.groupId!==l||!i(s,o,t)||(c=s,u=o,r?.left&&r.left.includes(c)&&!r.left.includes(u)||r?.right&&!r.right.includes(c)&&r.right.includes(u))?[...e,{columnFields:[o],groupId:l}]:[...e.slice(0,e.length-1),{columnFields:[...a.columnFields,o],groupId:l}];var c,u}),[]);o.push(l)}return o},It=["groupId","children"],Mt=e=>{let t={};return e.forEach((e=>{if((0,yt.x)(e))return;const{groupId:r,children:o}=e,l=(0,T.A)(e,It);if(!r)throw new Error("MUI X: An element of the columnGroupingModel does not have either `field` or `groupId`.");const i=(0,n.A)({},l,{groupId:r}),a=Mt(o);if(void 0!==a[r]||void 0!==t[r])throw new Error(`MUI X: The groupId ${r} is used multiple times in the columnGroupingModel.`);t=(0,n.A)({},t,a,{[r]:i})})),(0,n.A)({},t)},kt=(e,t,r)=>{if(!t.columnGroupingModel)return e;const o=(0,d.JR)(r),l=(0,d.TI)(r),i=Mt(t.columnGroupingModel??[]),a=Rt(t.columnGroupingModel??[]),s=St(o,a,r.current.state.pinnedColumns??{}),c=0===l.length?0:Math.max(...l.map((e=>a[e]?.length??0)));return(0,n.A)({},e,{columnGrouping:{lookup:i,unwrappedGroupingModel:a,headerStructure:s,maxDepth:c}})};var Pt=r(55730),Et=r(32125),Ft=r(58329);function Ht(e,t){if(void 0!==t&&e.changedTouches){for(let r=0;r<e.changedTouches.length;r+=1){const n=e.changedTouches[r];if(n.identifier===t)return{x:n.clientX,y:n.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function Ot(e,t,r,n){let o=e;return o+="Right"===n?t-r.left:r.right-t,o}function Tt(e){e.preventDefault(),e.stopImmediatePropagation()}const Dt=e=>(0,n.A)({},e,{columnResize:{resizingColumnField:""}});function zt(){return{colDef:void 0,initialColWidth:0,initialTotalWidth:0,previousMouseClickEvent:void 0,columnHeaderElement:void 0,headerFilterElement:void 0,groupHeaderElements:[],cellElements:[],leftPinnedCellsAfter:[],rightPinnedCellsBefore:[],fillerLeft:void 0,fillerRight:void 0,leftPinnedHeadersAfter:[],rightPinnedHeadersBefore:[]}}const Lt=(e,t)=>{const r=(0,x.I)(),l=(0,K.q)(e,"useGridColumnResize"),i=(0,ye.A)(zt).current,a=o.useRef(),s=o.useRef(),c=(0,Je.A)(),u=o.useRef(),f=t=>{l.debug(`Updating width to ${t} for col ${i.colDef.field}`);const r=i.columnHeaderElement.offsetWidth,n=t-r,o=t-i.initialColWidth,a=i.initialTotalWidth+o;e.current.rootElementRef?.current?.style.setProperty("--DataGrid-rowWidth",`${a}px`),i.colDef.computedWidth=t,i.colDef.width=t,i.colDef.flex=0,i.columnHeaderElement.style.width=`${t}px`;const s=i.headerFilterElement;s&&(s.style.width=`${t}px`),i.groupHeaderElements.forEach((e=>{const r=e;let o;o="1"===r.getAttribute("aria-colspan")?`${t}px`:`${r.offsetWidth+n}px`,r.style.width=o})),i.cellElements.forEach((e=>{const r=e;let o;o="1"===r.getAttribute("aria-colspan")?`${t}px`:`${r.offsetWidth+n}px`,r.style.setProperty("--width",o)}));const c=e.current.unstable_applyPipeProcessors("isColumnPinned",!1,i.colDef.field);c===ee.K.LEFT&&($t(i.fillerLeft,"width",n),i.leftPinnedCellsAfter.forEach((e=>{$t(e,"left",n)})),i.leftPinnedHeadersAfter.forEach((e=>{$t(e,"left",n)}))),c===ee.K.RIGHT&&($t(i.fillerRight,"width",n),i.rightPinnedCellsBefore.forEach((e=>{$t(e,"right",n)})),i.rightPinnedHeadersBefore.forEach((e=>{$t(e,"right",n)})))},g=t=>{if(R(),i.previousMouseClickEvent){const r=i.previousMouseClickEvent,n=r.timeStamp,o=r.clientX,l=r.clientY;if(t.timeStamp-n<300&&t.clientX===o&&t.clientY===l)return i.previousMouseClickEvent=void 0,void e.current.publishEvent("columnResizeStop",null,t)}if(i.colDef){e.current.setColumnWidth(i.colDef.field,i.colDef.width),l.debug(`Updating col ${i.colDef.field} with new width: ${i.colDef.width}`);const t=(0,d.em)(e.current.state);i.groupHeaderElements.forEach((e=>{const r=e,n=`${(0,ze.Rv)(e).reduce(((e,r)=>!1!==t.columnVisibilityModel[r]?e+t.lookup[r].computedWidth:e),0)}px`;r.style.width=n}))}c.start(0,(()=>{e.current.publishEvent("columnResizeStop",null,t)}))},m=(t,n,o)=>{const l=e.current.rootElementRef.current;i.initialColWidth=t.computedWidth,i.initialTotalWidth=e.current.getRootDimensions().rowWidth,i.colDef=t,i.columnHeaderElement=(0,ze.Bx)(e.current.columnHeadersContainerRef.current,t.field);const c=l.querySelector(`.${ge.x.headerFilterRow} [data-field="${(0,ze.AP)(t.field)}"]`);c&&(i.headerFilterElement=c),i.groupHeaderElements=(0,ze.Rb)(e.current.columnHeadersContainerRef?.current,t.field),i.cellElements=(0,ze.Dq)(i.columnHeaderElement,e.current),i.fillerLeft=(0,ze.YI)(e.current,r?"filler--pinnedRight":"filler--pinnedLeft"),i.fillerRight=(0,ze.YI)(e.current,r?"filler--pinnedLeft":"filler--pinnedRight");const u=e.current.unstable_applyPipeProcessors("isColumnPinned",!1,i.colDef.field);i.leftPinnedCellsAfter=u!==ee.K.LEFT?[]:(0,ze.iF)(e.current,i.columnHeaderElement,r),i.rightPinnedCellsBefore=u!==ee.K.RIGHT?[]:(0,ze.mH)(e.current,i.columnHeaderElement,r),i.leftPinnedHeadersAfter=u!==ee.K.LEFT?[]:(0,ze.Zw)(e.current,i.columnHeaderElement,r),i.rightPinnedHeadersBefore=u!==ee.K.RIGHT?[]:(0,ze.$c)(e.current,i.columnHeaderElement,r),s.current=function(e,t){const r=e.classList.contains(ge.x["columnSeparator--sideRight"])?"Right":"Left";return t?function(e){return"Right"===e?"Left":"Right"}(r):r}(n,r),a.current=function(e,t,r){return"Left"===r?e-t.left:t.right-e}(o,i.columnHeaderElement.getBoundingClientRect(),s.current)},h=(0,ie.A)(g),b=(0,ie.A)((t=>{if(0===t.buttons)return void h(t);let r=Ot(a.current,t.clientX,i.columnHeaderElement.getBoundingClientRect(),s.current);r=(0,y.qE)(r,i.colDef.minWidth,i.colDef.maxWidth),f(r);const n={element:i.columnHeaderElement,colDef:i.colDef,width:r};e.current.publishEvent("columnResize",n,t)})),w=(0,ie.A)((e=>{Ht(e,u.current)&&g(e)})),C=(0,ie.A)((t=>{const r=Ht(t,u.current);if(!r)return;if("mousemove"===t.type&&0===t.buttons)return void w(t);let n=Ot(a.current,r.x,i.columnHeaderElement.getBoundingClientRect(),s.current);n=(0,y.qE)(n,i.colDef.minWidth,i.colDef.maxWidth),f(n);const o={element:i.columnHeaderElement,colDef:i.colDef,width:n};e.current.publishEvent("columnResize",o,t)})),v=(0,ie.A)((t=>{const r=(0,ze.fl)(t.target,ge.x["columnSeparator--resizable"]);if(!r)return;const n=t.changedTouches[0];null!=n&&(u.current=n.identifier);const o=(0,ze.fl)(t.target,ge.x.columnHeader),i=(0,ze.Tq)(o),a=e.current.getColumn(i);l.debug(`Start Resize on col ${a.field}`),e.current.publishEvent("columnResizeStart",{field:i},t),m(a,r,n.clientX);const s=(0,fe.A)(t.currentTarget);s.addEventListener("touchmove",C),s.addEventListener("touchend",w)})),R=o.useCallback((()=>{const t=(0,fe.A)(e.current.rootElementRef.current);t.body.style.removeProperty("cursor"),t.removeEventListener("mousemove",b),t.removeEventListener("mouseup",h),t.removeEventListener("touchmove",C),t.removeEventListener("touchend",w),setTimeout((()=>{t.removeEventListener("click",Tt,!0)}),100),i.columnHeaderElement&&(i.columnHeaderElement.style.pointerEvents="unset")}),[e,i,b,h,C,w]),S=o.useCallback((({field:t})=>{e.current.setState((e=>(0,n.A)({},e,{columnResize:(0,n.A)({},e.columnResize,{resizingColumnField:t})}))),e.current.forceUpdate()}),[e]),I=o.useCallback((()=>{e.current.setState((e=>(0,n.A)({},e,{columnResize:(0,n.A)({},e.columnResize,{resizingColumnField:""})}))),e.current.forceUpdate()}),[e]),M=(0,ie.A)((({colDef:t},r)=>{if(0!==r.button)return;if(!r.currentTarget.classList.contains(ge.x["columnSeparator--resizable"]))return;r.preventDefault(),l.debug(`Start Resize on col ${t.field}`),e.current.publishEvent("columnResizeStart",{field:t.field},r),m(t,r.currentTarget,r.clientX);const n=(0,fe.A)(e.current.rootElementRef.current);n.body.style.cursor="col-resize",i.previousMouseClickEvent=r.nativeEvent,n.addEventListener("mousemove",b),n.addEventListener("mouseup",h),n.addEventListener("click",Tt,!0)})),k=(0,ie.A)(((r,o)=>{if(t.disableAutosize)return;if(0!==o.button)return;const l=e.current.state.columns.lookup[r.field];!1!==l.resizable&&e.current.autosizeColumns((0,n.A)({},t.autosizeOptions,{columns:[l.field]}))})),P=function(e){const t=o.useRef(),r=()=>(0,dt.m5)(e),n=(0,p.Nc)(e,r);return o.useEffect((()=>{t.current&&!1===n&&(t.current.resolve(),t.current=void 0)})),()=>{if(!t.current){if(!1===r())return Promise.resolve();t.current=function(){let e,t;const r=new Promise(((r,n)=>{e=r,t=n}));return r.resolve=e,r.reject=t,r}()}return t.current}}(e),E=o.useRef(!1),H=o.useCallback((async t=>{const r=e.current.rootElementRef?.current;if(!r)return;if(E.current)return;E.current=!0;const o=(0,d.em)(e.current.state),l=(0,n.A)({},Et.N,t,{columns:t?.columns??o.orderedFields});l.columns=l.columns.filter((e=>!1!==o.columnVisibilityModel[e]));const i=l.columns.map((t=>e.current.state.columns.lookup[t]));try{e.current.unstable_setColumnVirtualization(!1),await P();const t=function(e,t,r){const n={},o=e.current.rootElementRef.current;return o.classList.add(ge.x.autosizing),r.forEach((r=>{const o=(0,ze.j4)(e.current,r.field).map((e=>e.getBoundingClientRect().width??0)),l=t.includeOutliers?o:function(e,t){if(e.length<4)return e;const r=e.slice();r.sort(((e,t)=>e-t));const n=r[Math.floor(.25*r.length)],o=r[Math.floor(.75*r.length)-1],l=o-n,i=l<5?5:l*t;return r.filter((e=>e>n-i&&e<o+i))}(o,t.outliersFactor);if(t.includeHeaders){const t=(0,ze.dL)(e.current,r.field);if(t){const e=t.querySelector(`.${ge.x.columnHeaderTitle}`),r=t.querySelector(`.${ge.x.columnHeaderTitleContainerContent}`),n=t.querySelector(`.${ge.x.iconButtonContainer}`),o=t.querySelector(`.${ge.x.menuIcon}`),i=e??r,a=window.getComputedStyle(t,null),s=parseInt(a.paddingLeft,10)+parseInt(a.paddingRight,10),c=i.scrollWidth+1+s+(n?.clientWidth??0)+(o?.clientWidth??0);l.push(c)}}const i=r.minWidth!==-1/0&&void 0!==r.minWidth,a=r.maxWidth!==1/0&&void 0!==r.maxWidth,s=i?r.minWidth:0,c=a?r.maxWidth:1/0,u=0===l.length?0:Math.max(...l);n[r.field]=(0,y.qE)(u,s,c)})),o.classList.remove(ge.x.autosizing),n}(e,l,i),r=i.map((e=>(0,n.A)({},e,{width:t[e.field],computedWidth:t[e.field]})));if(l.expand){const n=o.orderedFields.map((e=>o.lookup[e])).filter((e=>!1!==o.columnVisibilityModel[e.field])).reduce(((e,r)=>e+(t[r.field]??r.computedWidth??r.width)),0),l=e.current.getRootDimensions().viewportInnerSize.width-n;if(l>0){const e=l/(r.length||1);r.forEach((t=>{t.width+=e,t.computedWidth+=e}))}}e.current.updateColumns(r),r.forEach(((t,r)=>{if(t.width!==i[r].width){const r=t.width;e.current.publishEvent("columnWidthChange",{element:e.current.getColumnHeaderElement(t.field),colDef:t,width:r})}}))}finally{e.current.unstable_setColumnVirtualization(!0),E.current=!1}}),[e,P]);o.useEffect((()=>R),[R]),(0,Ft.A)((()=>{t.autosizeOnMount&&Promise.resolve().then((()=>{e.current.autosizeColumns(t.autosizeOptions)}))})),(0,V.h)(e,(()=>e.current.columnHeadersContainerRef?.current),"touchstart",v,{passive:!0}),(0,A.P)(e,{autosizeColumns:H},"public"),(0,F.cz)(e,"columnResizeStop",I),(0,F.cz)(e,"columnResizeStart",S),(0,F.cz)(e,"columnSeparatorMouseDown",M),(0,F.cz)(e,"columnSeparatorDoubleClick",k),(0,F.re)(e,"columnResize",t.onColumnResize),(0,F.re)(e,"columnWidthChange",t.onColumnWidthChange)};function $t(e,t,r){e&&(e.style[t]=`${parseInt(e.style[t],10)+r}px`)}function jt(e,t){return e.firstRowIndex!==t.firstRowIndex||e.lastRowIndex!==t.lastRowIndex}const Nt=(e,t,r)=>{if(!e)return null;let n=e[t.field];const o=t.rowSpanValueGetter??t.valueGetter;return o&&(n=o(n,e,t,r)),n},Vt={spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},Bt={firstRowIndex:0,lastRowIndex:0},Gt=new Set(["__check__","__reorder__","__detail_panel_toggle__"]),Wt=(e,t,r,o,l,i,a)=>{const s=i?{}:(0,n.A)({},e.current.state.rowSpanning.spannedCells),c=i?{}:(0,n.A)({},e.current.state.rowSpanning.hiddenCells),u=i?{}:(0,n.A)({},e.current.state.rowSpanning.hiddenCellOriginMap);return i&&(a=Bt),t.forEach((t=>{if(!Gt.has(t.field)){for(let n=l.firstRowIndex;n<=l.lastRowIndex;n+=1){const i=r[n];if(c[i.id]?.[t.field])continue;const a=Nt(i.model,t,e);if(null==a)continue;let d=i.id,p=n,f=0;const g=[];if(n===l.firstRowIndex){let l=n-1;const i=r[l];for(;l>=o.firstRowIndex&&Nt(i.model,t,e)===a;){const e=r[l+1];c[e.id]?c[e.id][t.field]=!0:c[e.id]={[t.field]:!0},g.push(n),f+=1,d=i.id,p=l,l-=1}}g.forEach((e=>{u[e]?u[e][t.field]=p:u[e]={[t.field]:p}}));let m=n+1;for(;m<=o.lastRowIndex&&r[m]&&Nt(r[m].model,t,e)===a;){const e=r[m];c[e.id]?c[e.id][t.field]=!0:c[e.id]={[t.field]:!0},u[m]?u[m][t.field]=p:u[m]={[t.field]:p},m+=1,f+=1}f>0&&(s[d]?s[d][t.field]=f+1:s[d]={[t.field]:f+1})}a={firstRowIndex:Math.min(a.firstRowIndex,l.firstRowIndex),lastRowIndex:Math.max(a.lastRowIndex,l.lastRowIndex)}}})),{spannedCells:s,hiddenCells:c,hiddenCellOriginMap:u,processedRange:a}},_t=(e,t,r)=>{if(t.unstable_rowSpanning){const t=e.rows.dataRowIds||[],o=e.columns.orderedFields||[],l=e.rows.dataRowIdToModelLookup,i=e.columns.lookup,a=Boolean(e.filter.filterModel.items.length)||Boolean(e.filter.filterModel.quickFilterValues?.length);if(!t.length||!o.length||!l||!i||a)return(0,n.A)({},e,{rowSpanning:Vt});const s={firstRowIndex:0,lastRowIndex:Math.min(19,Math.max(t.length-1,0))},c=t.map((e=>({id:e,model:l[e]}))),u=o.map((e=>i[e])),{spannedCells:d,hiddenCells:p,hiddenCellOriginMap:f}=Wt(r,u,c,s,s,!0,Bt);return(0,n.A)({},e,{rowSpanning:{spannedCells:d,hiddenCells:p,hiddenCellOriginMap:f}})}return(0,n.A)({},e,{rowSpanning:Vt})},Ut=(e,t)=>{const r=j(e,t);return((e,t)=>{const r=(e=>{const{classes:t}=e;return o.useMemo((()=>(0,it.A)({cellCheckbox:["cellCheckbox"],columnHeaderCheckbox:["columnHeaderCheckbox"]},ge.B,t)),[t])})({classes:t.classes}),l=o.useCallback((o=>{const l=(0,n.A)({},G.f,{cellClassName:r.cellCheckbox,headerClassName:r.columnHeaderCheckbox,headerName:e.current.getLocaleText("checkboxSelectionHeaderName")}),i=t.checkboxSelection,a=null!=o.lookup[G.t];return i&&!a?(o.lookup[G.t]=l,o.orderedFields=[G.t,...o.orderedFields]):!i&&a?(delete o.lookup[G.t],o.orderedFields=o.orderedFields.filter((e=>e!==G.t))):i&&a&&(o.lookup[G.t]=(0,n.A)({},l,o.lookup[G.t])),o}),[e,r,t.checkboxSelection]);Q(e,"hydrateColumns",l)})(r,t),(e=>{Re(e,L,"rowTreeCreation",rt)})(r),N(gt,r,t),N(lt,r,t),N(oe,r,t),N(tt,r,t),N(Qe,r,t),N(He,r,t),N(st,r,t),N(Be,r,t),N(Ie,r,t),N(_t,r,t),N(se,r,t),N(Dt,r,t),N(Ne,r,t),N(wt,r,t),N(Y,r,t),N(kt,r,t),N(Pt.nu,r,t),((e,t)=>{const r=(0,K.q)(e,"useGridKeyboardNavigation"),n=(0,Fe.h)(e,t).rows,l=(0,x.I)(),i=o.useMemo((()=>function(e,t){const r=(0,m.$2)(e)||{};return[...r.top||[],...t,...r.bottom||[]]}(e,n)),[e,n]),a="DataGrid"!==t.signature&&t.headerFilters,s=o.useCallback(((t,n,o="left",l="up")=>{const i=(0,w.em)(e),a=e.current.unstable_getCellColSpanInfo(n,t);a&&a.spannedByColSpan&&("left"===o?t=a.leftVisibleCellIndex:"right"===o&&(t=a.rightVisibleCellIndex));const s=(0,d.TI)(e)[t],c=function(e,t,r,n){const o=(0,Le.xX)(e);if(!o[t]?.[r])return t;const l=(0,w.qA)(e);let i=l.indexOf(t)+("down"===n?1:-1);for(;i>=0&&i<l.length;){const e=l[i];if(!o[e]?.[r])return e;i+="down"===n?1:-1}return t}(e,n,s,l),u=i.findIndex((e=>e.id===c));r.debug(`Navigating to cell row ${u}, col ${t}`),e.current.scrollToIndexes({colIndex:t,rowIndex:u}),e.current.setCellFocus(c,s)}),[e,r]),c=o.useCallback(((t,n)=>{r.debug(`Navigating to header col ${t}`),e.current.scrollToIndexes({colIndex:t});const o=e.current.getVisibleColumns()[t].field;e.current.setColumnHeaderFocus(o,n)}),[e,r]),u=o.useCallback(((t,n)=>{r.debug(`Navigating to header filter col ${t}`),e.current.scrollToIndexes({colIndex:t});const o=e.current.getVisibleColumns()[t].field;e.current.setColumnHeaderFilterFocus(o,n)}),[e,r]),p=o.useCallback(((t,n,o)=>{r.debug(`Navigating to header col ${t}`),e.current.scrollToIndexes({colIndex:t});const{field:l}=e.current.getVisibleColumns()[t];e.current.setColumnGroupHeaderFocus(l,n,o)}),[e,r]),f=o.useCallback((e=>i[e]?.id),[i]),h=o.useCallback(((t,r)=>{const n=r.currentTarget.querySelector(`.${ge.x.columnHeaderTitleContainerContent}`);if(n&&n.contains(r.target)&&t.field!==G.f.field)return;const o=e.current.getViewportPageSize(),m=t.field?e.current.getColumnIndex(t.field):0,h=i.length>0?0:null,b=i.length-1,w=(0,d.iv)(e).length-1,C=(0,g.aC)(e);let v=!0;switch(r.key){case"ArrowDown":null!==h&&(a?u(m,r):s(m,f(h)));break;case"ArrowRight":{const e=je({currentColIndex:m,firstColIndex:0,lastColIndex:w,isRtl:l});null!==e&&c(e,r);break}case"ArrowLeft":{const e=$e({currentColIndex:m,firstColIndex:0,lastColIndex:w,isRtl:l});null!==e&&c(e,r);break}case"ArrowUp":C>0&&p(m,C-1,r);break;case"PageDown":null!==h&&null!==b&&s(m,f(Math.min(h+o,b)));break;case"Home":c(0,r);break;case"End":c(w,r);break;case"Enter":(r.ctrlKey||r.metaKey)&&e.current.toggleColumnMenu(t.field);break;case" ":break;default:v=!1}v&&r.preventDefault()}),[e,i.length,a,u,s,f,l,c,p]),b=o.useCallback(((t,r)=>{const n=(0,De.B$)(e)===t.field,o=(0,De.K8)(e)===t.field;if(n||o||!(0,Ee.q9)(r.key))return;const a=e.current.getViewportPageSize(),p=t.field?e.current.getColumnIndex(t.field):0,g=i.length-1,m=(0,d.iv)(e).length-1;let h=!0;switch(r.key){case"ArrowDown":{const e=f(0);null!=e&&s(p,e);break}case"ArrowRight":{const e=je({currentColIndex:p,firstColIndex:0,lastColIndex:m,isRtl:l});null!==e&&u(e,r);break}case"ArrowLeft":{const n=$e({currentColIndex:p,firstColIndex:0,lastColIndex:m,isRtl:l});null!==n?u(n,r):e.current.setColumnHeaderFilterFocus(t.field,r);break}case"ArrowUp":c(p,r);break;case"PageDown":null!==g&&s(p,f(Math.min(0+a,g)));break;case"Home":u(0,r);break;case"End":u(m,r);break;case" ":break;default:h=!1}h&&r.preventDefault()}),[e,i.length,u,l,c,s,f]),C=o.useCallback(((t,r)=>{const n=(0,B.WO)(e);if(null===n)return;const{field:o,depth:l}=n,{fields:a,depth:u,maxDepth:g}=t,m=e.current.getViewportPageSize(),h=e.current.getColumnIndex(o),b=o?e.current.getColumnIndex(o):0,w=i.length-1,C=(0,d.iv)(e).length-1;let v=!0;switch(r.key){case"ArrowDown":u===g-1?c(h,r):p(h,l+1,r);break;case"ArrowUp":u>0&&p(h,l-1,r);break;case"ArrowRight":{const e=a.length-a.indexOf(o)-1;h+e+1<=C&&p(h+e+1,l,r);break}case"ArrowLeft":{const e=a.indexOf(o);h-e-1>=0&&p(h-e-1,l,r);break}case"PageDown":null!==w&&s(b,f(Math.min(0+m,w)));break;case"Home":p(0,l,r);break;case"End":p(C,l,r);break;case" ":break;default:v=!1}v&&r.preventDefault()}),[e,i.length,c,p,s,f]),v=o.useCallback(((t,r)=>{if((0,ze.TA)(r))return;const n=e.current.getCellParams(t.id,t.field);if(n.cellMode===Oe.bs.Edit||!(0,Ee.q9)(r.key))return;if(!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:r,cell:n}))return;if(0===i.length)return;const o=e.current.getViewportPageSize(),p=t.field?e.current.getColumnIndex(t.field):0,g=i.findIndex((e=>e.id===t.id)),m=i.length-1,h=(0,d.iv)(e).length-1;let b=!0;switch(r.key){case"ArrowDown":g<m&&s(p,f(g+1),l?"right":"left","down");break;case"ArrowUp":g>0?s(p,f(g-1)):a?u(p,r):c(p,r);break;case"ArrowRight":{const e=je({currentColIndex:p,firstColIndex:0,lastColIndex:h,isRtl:l});null!==e&&s(e,f(g),l?"left":"right");break}case"ArrowLeft":{const e=$e({currentColIndex:p,firstColIndex:0,lastColIndex:h,isRtl:l});null!==e&&s(e,f(g),l?"right":"left");break}case"Tab":r.shiftKey&&p>0?s(p-1,f(g),"left"):!r.shiftKey&&p<h&&s(p+1,f(g),"right");break;case" ":{if(t.field===Te.U)break;const e=t.colDef;if(e&&"__tree_data_group__"===e.field)break;!r.shiftKey&&g<m&&s(p,f(Math.min(g+o,m)));break}case"PageDown":g<m&&s(p,f(Math.min(g+o,m)));break;case"PageUp":{const e=Math.max(g-o,0);e!==g&&e>=0?s(p,f(e)):c(p,r);break}case"Home":r.ctrlKey||r.metaKey||r.shiftKey?s(0,f(0)):s(0,f(g));break;case"End":r.ctrlKey||r.metaKey||r.shiftKey?s(h,f(m)):s(h,f(g));break;default:b=!1}b&&r.preventDefault()}),[e,i,l,s,f,a,u,c]),y=o.useCallback(((e,{event:t})=>" "!==t.key&&e),[]);Q(e,"canStartEditing",y),(0,F.cz)(e,"columnHeaderKeyDown",h),(0,F.cz)(e,"headerFilterKeyDown",b),(0,F.cz)(e,"columnGroupHeaderKeyDown",C),(0,F.cz)(e,"cellKeyDown",v)})(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridSelection"),l=e=>(...r)=>{t.rowSelection&&e(...r)},i=o.useMemo((()=>ot(t.rowSelectionModel,(0,C.Bi)(e.current.state))),[e,t.rowSelectionModel]),a=o.useRef(null);e.current.registerControlState({stateId:"rowSelection",propModel:i,propOnChange:t.onRowSelectionModelChange,stateSelector:C.Bi,changeEvent:"rowSelectionChange"});const{checkboxSelection:s,disableRowSelectionOnClick:c,isRowSelectable:u}=t,d=(0,b.c)(t),p=(0,Fe.h)(e,t),f=o.useCallback((t=>{let r=t;const n=a.current??t,o=e.current.isRowSelected(t);if(o){const t=(0,w.ux)(e),o=t.findIndex((e=>e===n)),l=t.findIndex((e=>e===r));if(o===l)return;r=o>l?t[l+1]:t[l-1]}a.current=t,e.current.selectRowRange({startId:n,endId:r},!o)}),[e]),g=o.useCallback((o=>{if(t.signature===F.HV.DataGrid&&!d&&Array.isArray(o)&&o.length>1)throw new Error(["MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection."].join("\n"));(0,C.Bi)(e.current.state)!==o&&(r.debug("Setting selection model"),e.current.setState((e=>(0,n.A)({},e,{rowSelection:t.rowSelection?o:[]}))),e.current.forceUpdate())}),[e,r,t.rowSelection,t.signature,d]),h=o.useCallback((t=>(0,C.Bi)(e.current.state).includes(t)),[e]),v=o.useCallback((r=>{if(!1===t.rowSelection)return!1;if(u&&!u(e.current.getRowParams(r)))return!1;const n=e.current.getRowNode(r);return"footer"!==n?.type&&"pinnedRow"!==n?.type}),[e,t.rowSelection,u]),x=o.useCallback((()=>(0,C.gt)(e)),[e]),y=o.useCallback(((t,n=!0,o=!1)=>{if(e.current.isRowSelectable(t))if(a.current=t,o)r.debug(`Setting selection for row ${t}`),e.current.setRowSelectionModel(n?[t]:[]);else{r.debug(`Toggling selection for row ${t}`);const o=(0,C.Bi)(e.current.state).filter((e=>e!==t));n&&o.push(t),(o.length<2||d)&&e.current.setRowSelectionModel(o)}}),[e,r,d]),R=o.useCallback(((t,o=!0,l=!1)=>{r.debug("Setting selection for several rows");const i=t.filter((t=>e.current.isRowSelectable(t)));let a;if(l)a=o?i:[];else{const t=(0,n.A)({},(0,C.Zk)(e));i.forEach((e=>{o?t[e]=e:delete t[e]})),a=Object.values(t)}(a.length<2||d)&&e.current.setRowSelectionModel(a)}),[e,r,d]),S=o.useCallback((({startId:t,endId:n},o=!0,l=!1)=>{if(!e.current.getRow(t)||!e.current.getRow(n))return;r.debug(`Expanding selection from row ${t} to row ${n}`);const i=(0,w.ux)(e),a=i.indexOf(t),s=i.indexOf(n),[c,u]=a>s?[s,a]:[a,s],d=i.slice(c,u+1);e.current.selectRows(d,o,l)}),[e,r]),I={selectRow:y,setRowSelectionModel:g,getSelectedRows:x,isRowSelected:h,isRowSelectable:v},M={selectRows:R,selectRowRange:S};(0,A.P)(e,I,"public"),(0,A.P)(e,M,t.signature===F.HV.DataGrid?"private":"public");const k=o.useCallback((()=>{if(t.keepNonExistentRowsSelected)return;const r=(0,C.Bi)(e.current.state),o=(0,m.rI)(e),l=(0,n.A)({},(0,C.Zk)(e));let i=!1;r.forEach((e=>{o[e]||(delete l[e],i=!0)})),i&&e.current.setRowSelectionModel(Object.values(l))}),[e,t.keepNonExistentRowsSelected]),P=o.useCallback(((t,r)=>{const n=r.metaKey||r.ctrlKey,o=!s&&!n&&!(0,Ee.kx)(r),l=!d||o,i=e.current.isRowSelected(t);l?e.current.selectRow(t,!!o||!i,!0):e.current.selectRow(t,!i,!1)}),[e,d,s]),E=o.useCallback(((t,r)=>{if(c)return;const n=r.target.closest(`.${ge.x.cell}`)?.getAttribute("data-field");if(n!==G.f.field&&n!==Te.U){if(n){const t=e.current.getColumn(n);if(t?.type===Xe.D)return}"pinnedRow"!==e.current.getRowNode(t.id).type&&(r.shiftKey&&d?f(t.id):P(t.id,r))}}),[c,d,e,f,P]),H=o.useCallback(((e,t)=>{d&&t.shiftKey&&window.getSelection()?.removeAllRanges()}),[d]),O=o.useCallback(((t,r)=>{d&&r.nativeEvent.shiftKey?f(t.id):e.current.selectRow(t.id,t.value,!d)}),[e,f,d]),T=o.useCallback((r=>{const n=t.pagination&&t.checkboxSelectionVisibleOnly&&"client"===t.paginationMode?(0,be.ee)(e):(0,w.ux)(e),o=(0,w.ZI)(e);e.current.selectRows(n,r.value,o?.items.length>0)}),[e,t.checkboxSelectionVisibleOnly,t.pagination,t.paginationMode]),D=o.useCallback(((t,r)=>{if(e.current.getCellMode(t.id,t.field)!==Oe.bs.Edit&&!(0,ze.TA)(r)){if((0,Ee.q9)(r.key)&&r.shiftKey){const n=(0,B.MO)(e);if(n&&n.id!==t.id){r.preventDefault();const o=e.current.isRowSelected(n.id);if(!d)return void e.current.selectRow(n.id,!o,!0);const l=e.current.getRowIndexRelativeToVisibleRows(n.id),i=e.current.getRowIndexRelativeToVisibleRows(t.id);let a,s;l>i?o?(a=i,s=l-1):(a=i,s=l):o?(a=l+1,s=i):(a=l,s=i);const c=p.rows.slice(a,s+1).map((e=>e.id));return void e.current.selectRows(c,!o)}}if(" "===r.key&&r.shiftKey)return r.preventDefault(),void P(t.id,r);"a"===r.key&&(r.ctrlKey||r.metaKey)&&(r.preventDefault(),R(e.current.getAllRowIds(),!0))}}),[e,P,R,p.rows,d]);(0,F.cz)(e,"sortedRowsSet",l(k)),(0,F.cz)(e,"rowClick",l(E)),(0,F.cz)(e,"rowSelectionCheckboxChange",l(O)),(0,F.cz)(e,"headerSelectionCheckboxChange",T),(0,F.cz)(e,"cellMouseDown",l(H)),(0,F.cz)(e,"cellKeyDown",l(D)),o.useEffect((()=>{void 0!==i&&e.current.setRowSelectionModel(i)}),[e,i,t.rowSelection]),o.useEffect((()=>{t.rowSelection||e.current.setRowSelectionModel([])}),[e,t.rowSelection]);const z=null!=i;o.useEffect((()=>{if(z||!t.rowSelection)return;const r=(0,C.Bi)(e.current.state);if(v){const t=r.filter((e=>v(e)));t.length<r.length&&e.current.setRowSelectionModel(t)}}),[e,v,z,t.rowSelection]),o.useEffect((()=>{if(!t.rowSelection||z)return;const r=(0,C.Bi)(e.current.state);!d&&r.length>1&&e.current.setRowSelectionModel([])}),[e,d,s,z,t.rowSelection])})(r,t),function(e,t){const r=(0,K.q)(e,"useGridColumns"),l=o.useRef(t.columns);e.current.registerControlState({stateId:"visibleColumns",propModel:t.columnVisibilityModel,propOnChange:t.onColumnVisibilityModelChange,stateSelector:d.FY,changeEvent:"columnVisibilityModelChange"});const i=o.useCallback((t=>{r.debug("Updating columns state."),e.current.setState(le(t)),e.current.publishEvent("columnsChange",t.orderedFields),e.current.updateRenderContext?.(),e.current.forceUpdate()}),[r,e]),a=o.useCallback((t=>(0,d.gv)(e)[t]),[e]),s=o.useCallback((()=>(0,d.OV)(e)),[e]),c=o.useCallback((()=>(0,d.iv)(e)),[e]),u=o.useCallback(((t,r=!0)=>(r?(0,d.iv)(e):(0,d.OV)(e)).findIndex((e=>e.field===t))),[e]),p=o.useCallback((t=>{const r=u(t);return(0,d.Sw)(e)[r]}),[e,u]),f=o.useCallback((t=>{(0,d.FY)(e)!==t&&(e.current.setState((r=>(0,n.A)({},r,{columns:(0,te.Pd)({apiRef:e,columnsToUpsert:[],initialState:void 0,columnVisibilityModel:t,keepOnlyColumnsToUpsert:!1})}))),e.current.updateRenderContext?.(),e.current.forceUpdate())}),[e]),g=o.useCallback((t=>{const r=(0,te.Pd)({apiRef:e,columnsToUpsert:t,initialState:void 0,keepOnlyColumnsToUpsert:!1});i(r)}),[e,i]),m=o.useCallback(((t,r)=>{const o=(0,d.FY)(e);if(r!==(o[t]??!0)){const l=(0,n.A)({},o,{[t]:r});e.current.setColumnVisibilityModel(l)}}),[e]),h=o.useCallback((t=>(0,d.JR)(e).findIndex((e=>e===t))),[e]),b=o.useCallback(((t,o)=>{const l=(0,d.JR)(e),a=h(t);if(a===o)return;r.debug(`Moving column ${t} to index ${o}`);const s=[...l],c=s.splice(a,1)[0];s.splice(o,0,c),i((0,n.A)({},(0,d.em)(e.current.state),{orderedFields:s}));const u={column:e.current.getColumn(t),targetIndex:e.current.getColumnIndexRelativeToVisibleColumns(t),oldIndex:a};e.current.publishEvent("columnIndexChange",u)}),[e,r,i,h]),w=o.useCallback(((t,o)=>{r.debug(`Updating column ${t} width to ${o}`);const l=(0,d.em)(e.current.state),a=l.lookup[t],s=(0,n.A)({},a,{width:o,hasBeenResized:!0});i((0,te.LN)((0,n.A)({},l,{lookup:(0,n.A)({},l.lookup,{[t]:s})}),e.current.getRootDimensions())),e.current.publishEvent("columnWidthChange",{element:e.current.getColumnHeaderElement(t),colDef:s,width:o})}),[e,r,i]),C={getColumn:a,getAllColumns:s,getColumnIndex:u,getColumnPosition:p,getVisibleColumns:c,getColumnIndexRelativeToVisibleColumns:h,updateColumns:g,setColumnVisibilityModel:f,setColumnVisibility:m,setColumnWidth:w},v={setColumnIndex:b};(0,A.P)(e,C,"public"),(0,A.P)(e,v,t.signature===F.HV.DataGrid?"private":"public");const x=o.useCallback(((r,o)=>{const l={},i=(0,d.FY)(e);(!o.exportOnlyDirtyModels||null!=t.columnVisibilityModel||Object.keys(t.initialState?.columns?.columnVisibilityModel??{}).length>0||Object.keys(i).length>0)&&(l.columnVisibilityModel=i),l.orderedFields=(0,d.JR)(e);const a=(0,d.OV)(e),s={};return a.forEach((e=>{if(e.hasBeenResized){const t={};te.Pr.forEach((r=>{let n=e[r];n===1/0&&(n=-1),t[r]=n})),s[e.field]=t}})),Object.keys(s).length>0&&(l.dimensions=s),(0,n.A)({},r,{columns:l})}),[e,t.columnVisibilityModel,t.initialState?.columns]),y=o.useCallback(((t,r)=>{const n=r.stateToRestore.columns?.columnVisibilityModel,o=r.stateToRestore.columns;if(null==n&&null==o)return t;const l=(0,te.Pd)({apiRef:e,columnsToUpsert:[],initialState:o,columnVisibilityModel:n,keepOnlyColumnsToUpsert:!1});return e.current.setState(le(l)),null!=o&&e.current.publishEvent("columnsChange",l.orderedFields),t}),[e]),R=o.useCallback(((e,r)=>{if(r===re.y.columns){const e=t.slots.columnsPanel;return(0,ne.jsx)(e,(0,n.A)({},t.slotProps?.columnsPanel))}return e}),[t.slots.columnsPanel,t.slotProps?.columnsPanel]),S=o.useCallback((e=>t.disableColumnSelector?e:[...e,"columnMenuColumnsItem"]),[t.disableColumnSelector]);Q(e,"columnMenu",S),Q(e,"exportState",x),Q(e,"restoreState",y),Q(e,"preferencePanel",R);const I=o.useRef(null);(0,F.cz)(e,"viewportInnerSizeChange",(t=>{I.current!==t.width&&(I.current=t.width,i((0,te.LN)((0,d.em)(e.current.state),e.current.getRootDimensions())))}));const M=o.useCallback((()=>{r.info("Columns pipe processing have changed, regenerating the columns");const t=(0,te.Pd)({apiRef:e,columnsToUpsert:[],initialState:void 0,keepOnlyColumnsToUpsert:!1});i(t)}),[e,r,i]);J(e,"hydrateColumns",M);const k=o.useRef(!0);o.useEffect((()=>{if(k.current)return void(k.current=!1);if(r.info(`GridColumns have changed, new length ${t.columns.length}`),l.current===t.columns)return;const n=(0,te.Pd)({apiRef:e,initialState:void 0,columnsToUpsert:t.columns,keepOnlyColumnsToUpsert:!0});l.current=t.columns,i(n)}),[r,e,i,t.columns]),o.useEffect((()=>{void 0!==t.columnVisibilityModel&&e.current.setColumnVisibilityModel(t.columnVisibilityModel)}),[e,r,t.columnVisibilityModel])}(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridRows"),l=(0,Fe.h)(e,t),i=o.useRef(Date.now()),a=o.useRef(t.rowCount),s=(0,Je.A)(),c=o.useCallback((t=>{const r=(0,m.rI)(e)[t];if(r)return r;const n=e.current.getRowNode(t);return n&&(0,he.nF)(n)?{[he.gb]:t}:null}),[e]),u=t.getRowId,d=o.useCallback((e=>he.gb in e?e[he.gb]:u?u(e):e.id),[u]),p=o.useMemo((()=>l.rows.reduce(((e,{id:t},r)=>(e[t]=r,e)),{})),[l.rows]),f=o.useCallback((({cache:r,throttle:o})=>{const l=()=>{i.current=Date.now(),e.current.setState((r=>(0,n.A)({},r,{rows:(0,he.TW)({apiRef:e,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:(0,m.qj)(e),previousTreeDepths:(0,m.Mz)(e),previousGroupsToFetch:(0,m.r)(e)})}))),e.current.publishEvent("rowsSet"),e.current.forceUpdate()};if(s.clear(),e.current.caches.rows=r,!o)return void l();const a=t.throttleRowsMs-(Date.now()-i.current);a>0?s.start(a,l):l()}),[t.throttleRowsMs,t.rowCount,t.loading,e,s]),g=o.useCallback((n=>{r.debug(`Updating all rows, new length ${n.length}`);const o=(0,he.Z)({rows:n,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),l=e.current.caches.rows;o.rowsBeforePartialUpdates=l.rowsBeforePartialUpdates,f({cache:o,throttle:!0})}),[r,t.getRowId,t.loading,t.rowCount,f,e]),h=o.useCallback((r=>{if(t.signature===F.HV.DataGrid&&r.length>1)throw new Error(["MUI X: You cannot update several rows at once in `apiRef.current.updateRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join("\n"));const n=(0,he.ro)(e,r,t.getRowId),o=(0,he.Ze)({updates:n,getRowId:t.getRowId,previousCache:e.current.caches.rows});f({cache:o,throttle:!0})}),[t.signature,t.getRowId,f,e]),b=o.useCallback(((r,n)=>{const o=(0,he.ro)(e,r,t.getRowId),l=(0,he.Ze)({updates:o,getRowId:t.getRowId,previousCache:e.current.caches.rows,groupKeys:n??[]});f({cache:l,throttle:!1})}),[t.getRowId,f,e]),C=o.useCallback((o=>{o!==t.loading&&(r.debug(`Setting loading to ${o}`),e.current.setState((e=>(0,n.A)({},e,{rows:(0,n.A)({},e.rows,{loading:o})}))),e.current.caches.rows.loadingPropBeforePartialUpdates=o)}),[t.loading,e,r]),v=o.useCallback((()=>{const t=(0,m.A6)(e),r=(0,m.rI)(e);return new Map(t.map((e=>[e,r[e]??{}])))}),[e]),x=o.useCallback((()=>(0,m.H0)(e)),[e]),y=o.useCallback((()=>(0,m.A6)(e)),[e]),R=o.useCallback((e=>p[e]),[p]),S=o.useCallback(((t,r)=>{const o=e.current.getRowNode(t);if(!o)throw new Error(`MUI X: No row with id #${t} found.`);if("group"!==o.type)throw new Error("MUI X: Only group nodes can be expanded or collapsed.");const l=(0,n.A)({},o,{childrenExpanded:r});e.current.setState((e=>(0,n.A)({},e,{rows:(0,n.A)({},e.rows,{tree:(0,n.A)({},e.rows.tree,{[t]:l})})}))),e.current.forceUpdate(),e.current.publishEvent("rowExpansionChange",l)}),[e]),I=o.useCallback((t=>(0,m.qj)(e)[t]??null),[e]),M=o.useCallback((({skipAutoGeneratedRows:t=!0,groupId:r,applySorting:n,applyFiltering:o})=>{const l=(0,m.qj)(e);let i;if(n){const n=l[r];if(!n)return[];const o=(0,et.RJ)(e);i=[];for(let e=o.findIndex((e=>e===r))+1;e<o.length&&l[o[e]].depth>n.depth;e+=1){const r=o[e];t&&(0,he.nF)(l[r])||i.push(r)}}else i=(0,he.l_)(l,r,t);if(o){const t=(0,w.wx)(e);i=i.filter((e=>!1!==t[e]))}return i}),[e]),k=o.useCallback(((t,o)=>{const l=e.current.getRowNode(t);if(!l)throw new Error(`MUI X: No row with id #${t} found.`);if(l.parent!==he.OL)throw new Error("MUI X: The row reordering do not support reordering of grouped rows yet.");if("leaf"!==l.type)throw new Error("MUI X: The row reordering do not support reordering of footer or grouping rows.");e.current.setState((l=>{const i=(0,m.qj)(l,e.current.instanceId)[he.OL],a=i.children,s=a.findIndex((e=>e===t));if(-1===s||s===o)return l;r.debug(`Moving row ${t} to index ${o}`);const c=[...a];return c.splice(o,0,c.splice(s,1)[0]),(0,n.A)({},l,{rows:(0,n.A)({},l.rows,{tree:(0,n.A)({},l.rows.tree,{[he.OL]:(0,n.A)({},i,{children:c})})})})})),e.current.publishEvent("rowsSet")}),[e,r]),P={getRow:c,setLoading:C,getRowId:d,getRowModels:v,getRowsCount:x,getAllRowIds:y,setRows:g,updateRows:h,getRowNode:I,getRowIndexRelativeToVisibleRows:R,unstable_replaceRows:o.useCallback(((r,o)=>{if(t.signature===F.HV.DataGrid&&o.length>1)throw new Error(["MUI X: You cannot replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join("\n"));if(0===o.length)return;if((0,m.V2)(e)>1)throw new Error("`apiRef.current.unstable_replaceRows` is not compatible with tree data and row grouping");const l=(0,n.A)({},(0,m.qj)(e)),i=(0,n.A)({},(0,m.rI)(e)),a=(0,n.A)({},(0,m.gk)(e)),s=l[he.OL],c=[...s.children],u=new Set;for(let e=0;e<o.length;e+=1){const n=o[e],s=(0,he.HZ)(n,t.getRowId,"A row was provided without id when calling replaceRows()."),[d]=c.splice(r+e,1,s);u.has(d)||(delete i[d],delete a[d],delete l[d]);const p={id:s,depth:0,parent:he.OL,type:"leaf",groupingKey:null};i[s]=n,a[s]=s,l[s]=p,u.add(s)}l[he.OL]=(0,n.A)({},s,{children:c});const d=c.filter((e=>"leaf"===l[e]?.type));e.current.caches.rows.dataRowIdToModelLookup=i,e.current.caches.rows.dataRowIdToIdLookup=a,e.current.setState((e=>(0,n.A)({},e,{rows:(0,n.A)({},e.rows,{dataRowIdToModelLookup:i,dataRowIdToIdLookup:a,dataRowIds:d,tree:l})}))),e.current.publishEvent("rowsSet")}),[e,t.signature,t.getRowId])},E={setRowIndex:k,setRowChildrenExpansion:S,getRowGroupChildren:M},H={updateServerRows:b},O=o.useCallback((()=>{let o;r.info("Row grouping pre-processing have changed, regenerating the row tree"),o=e.current.caches.rows.rowsBeforePartialUpdates===t.rows?(0,n.A)({},e.current.caches.rows,{updates:{type:"full",rows:(0,m.A6)(e)}}):(0,he.Z)({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),f({cache:o,throttle:!1})}),[r,e,t.rows,t.getRowId,t.loading,t.rowCount,f]),T=o.useCallback((e=>{"rowTreeCreation"===e&&O()}),[O]),D=o.useCallback((()=>{e.current.getActiveStrategy("rowTree")!==(0,m.Y1)(e)&&O()}),[e,O]);(0,F.cz)(e,"activeStrategyProcessorChange",T),(0,F.cz)(e,"strategyAvailabilityChange",D);const z=o.useCallback((()=>{e.current.setState((r=>{const o=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:(0,m.qj)(r,e.current.instanceId),treeDepths:(0,m.Mz)(r,e.current.instanceId),dataRowIds:(0,m.A6)(r,e.current.instanceId),dataRowIdToModelLookup:(0,m.rI)(r,e.current.instanceId),dataRowIdToIdLookup:(0,m.gk)(r,e.current.instanceId)});return(0,n.A)({},r,{rows:(0,n.A)({},r.rows,o,{totalTopLevelRowCount:(0,he.fS)({tree:o.tree,rowCountProp:t.rowCount})})})})),e.current.publishEvent("rowsSet"),e.current.forceUpdate()}),[e,t.rowCount]);J(e,"hydrateRows",z),(0,A.P)(e,P,"public"),(0,A.P)(e,E,t.signature===F.HV.DataGrid?"private":"public"),(0,A.P)(e,H,"private");const L=o.useRef(!0);o.useEffect((()=>{if(L.current)return void(L.current=!1);let o=!1;t.rowCount!==a.current&&(o=!0,a.current=t.rowCount);const l=e.current.caches.rows.rowsBeforePartialUpdates===t.rows,i=e.current.caches.rows.loadingPropBeforePartialUpdates===t.loading,s=e.current.caches.rows.rowCountPropBeforePartialUpdates===t.rowCount;l&&(i||(e.current.setState((e=>(0,n.A)({},e,{rows:(0,n.A)({},e.rows,{loading:t.loading})}))),e.current.caches.rows.loadingPropBeforePartialUpdates=t.loading,e.current.forceUpdate()),s||(e.current.setState((e=>(0,n.A)({},e,{rows:(0,n.A)({},e.rows,{totalRowCount:Math.max(t.rowCount||0,e.rows.totalRowCount),totalTopLevelRowCount:Math.max(t.rowCount||0,e.rows.totalTopLevelRowCount)})}))),e.current.caches.rows.rowCountPropBeforePartialUpdates=t.rowCount,e.current.forceUpdate()),!o)||(r.debug(`Updating all rows, new length ${t.rows?.length}`),f({cache:(0,he.Z)({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),throttle:!1}))}),[t.rows,t.rowCount,t.getRowId,t.loading,r,f,e])})(r,t),((e,t)=>{const{range:r,rows:l}=(0,Fe.h)(e,t),i=(0,p.Nc)(e,dt.nZ),a=(0,p.Nc)(e,d.iv),s=(0,ye.A)((()=>Object.keys(e.current.state.rowSpanning.spannedCells).length>0?{firstRowIndex:0,lastRowIndex:Math.min(19,Math.max(e.current.state.rows.dataRowIds.length-1,0))}:Bt)),c=o.useRef(Bt),u=o.useCallback(((o=!0)=>{if(!t.unstable_rowSpanning)return void(e.current.state.rowSpanning!==Vt&&e.current.setState((e=>(0,n.A)({},e,{rowSpanning:Vt}))));if(null===r||!function(e){return 0!==e.firstRowIndex||0!==e.lastRowIndex}(i))return;o&&(s.current=Bt);const c=function(e,t){return e.firstRowIndex>=t.firstRowIndex&&e.lastRowIndex<=t.lastRowIndex?null:e.firstRowIndex>=t.firstRowIndex&&e.lastRowIndex>t.lastRowIndex?{firstRowIndex:t.lastRowIndex,lastRowIndex:e.lastRowIndex}:e.firstRowIndex<t.firstRowIndex&&e.lastRowIndex<=t.lastRowIndex?{firstRowIndex:e.firstRowIndex,lastRowIndex:t.firstRowIndex-1}:e}({firstRowIndex:i.firstRowIndex,lastRowIndex:i.lastRowIndex-1},s.current);if(null===c)return;const{spannedCells:u,hiddenCells:d,hiddenCellOriginMap:p,processedRange:f}=Wt(e,a,l,r,c,o,s.current);s.current=f;const g=Object.keys(u).length,m=Object.keys(d).length,h=Object.keys(e.current.state.rowSpanning.spannedCells).length,b=Object.keys(e.current.state.rowSpanning.hiddenCells).length;(o||g!==h||m!==b)&&e.current.setState((e=>(0,n.A)({},e,{rowSpanning:{spannedCells:u,hiddenCells:d,hiddenCellOriginMap:p}})))}),[e,t.unstable_rowSpanning,r,i,l,a,s]),f=o.useRef(i),g=o.useRef(!0),m=o.useRef(!1);o.useEffect((()=>{const e=g.current;if(g.current&&(g.current=!1),r&&c.current&&jt(r,c.current)&&(c.current=r,m.current=!0),!e&&f.current!==i)return jt(f.current,i)&&(u(m.current),m.current=!1),void(f.current=i);u()}),[u,i,r,c])})(r,t),(0,nt.s)(r),(e=>{const t=o.useRef({}),r=()=>{t.current={}},n={unstable_getCellColSpanInfo:(e,r)=>t.current[e]?.[r]},l={resetColSpan:r,calculateColSpan:o.useCallback((({rowId:r,minFirstColumn:n,maxLastColumn:o,columns:l})=>{for(let i=n;i<o;i+=1){const a=vt({apiRef:e,lookup:t.current,columnIndex:i,rowId:r,minFirstColumnIndex:n,maxLastColumnIndex:o,columns:l});a.colSpan>1&&(i+=a.colSpan-1)}}),[e])};(0,A.P)(e,n,"public"),(0,A.P)(e,l,"private"),(0,F.cz)(e,"columnOrderChange",r)})(r),((e,t)=>{const r={getColumnGroupPath:o.useCallback((t=>(0,g.TQ)(e)[t]??[]),[e]),getAllGroupDetails:o.useCallback((()=>(0,g.ED)(e)),[e])};(0,A.P)(e,r,"public");const l=o.useCallback((()=>{const r=Rt(t.columnGroupingModel??[]);e.current.setState((e=>{const t=e.columns?.orderedFields??[],o=e.pinnedColumns??{},l=St(t,r,o);return(0,n.A)({},e,{columnGrouping:(0,n.A)({},e.columnGrouping,{headerStructure:l})})}))}),[e,t.columnGroupingModel]),i=o.useCallback((t=>{const r=e.current.getPinnedColumns?.()??{},o=(0,d.JR)(e),l=(0,d.TI)(e),i=Mt(t??[]),a=Rt(t??[]),s=St(o,a,r),c=0===l.length?0:Math.max(...l.map((e=>a[e]?.length??0)));e.current.setState((e=>(0,n.A)({},e,{columnGrouping:{lookup:i,unwrappedGroupingModel:a,headerStructure:s,maxDepth:c}})))}),[e]);(0,F.cz)(e,"columnIndexChange",l),(0,F.cz)(e,"columnsChange",(()=>{i(t.columnGroupingModel)})),(0,F.cz)(e,"columnVisibilityModelChange",(()=>{i(t.columnGroupingModel)})),o.useEffect((()=>{i(t.columnGroupingModel)}),[i,t.columnGroupingModel])})(r,t),((e,t)=>{((e,t)=>{const[r,l]=o.useState({}),i=o.useRef(r),a=o.useRef({}),{processRowUpdate:s,onProcessRowUpdateError:c,cellModesModel:u,onCellModesModelChange:d}=t,p=e=>(...r)=>{t.editMode===Oe.RL.Cell&&e(...r)},f=o.useCallback(((t,r)=>{const n=e.current.getCellParams(t,r);if(!e.current.isCellEditable(n))throw new Error(`MUI X: The cell with id=${t} and field=${r} is not editable.`)}),[e]),g=o.useCallback(((t,r,n)=>{if(e.current.getCellMode(t,r)!==n)throw new Error(`MUI X: The cell with id=${t} and field=${r} is not in ${n} mode.`)}),[e]),h=o.useCallback(((t,r)=>{if(!t.isEditable)return;if(t.cellMode===Oe.bs.Edit)return;const o=(0,n.A)({},t,{reason:We.a.cellDoubleClick});e.current.publishEvent("cellEditStart",o,r)}),[e]),b=o.useCallback(((t,r)=>{if(t.cellMode===Oe.bs.View)return;if(e.current.getCellMode(t.id,t.field)===Oe.bs.View)return;const o=(0,n.A)({},t,{reason:We.Q.cellFocusOut});e.current.publishEvent("cellEditStop",o,r)}),[e]),w=o.useCallback(((t,r)=>{if(t.cellMode===Oe.bs.Edit){if(229===r.which)return;let o;if("Escape"===r.key?o=We.Q.escapeKeyDown:"Enter"===r.key?o=We.Q.enterKeyDown:"Tab"===r.key&&(o=r.shiftKey?We.Q.shiftTabKeyDown:We.Q.tabKeyDown,r.preventDefault()),o){const l=(0,n.A)({},t,{reason:o});e.current.publishEvent("cellEditStop",l,r)}}else if(t.isEditable){let o;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:r,cellParams:t,editMode:"cell"}))return;if((0,Ee.TW)(r)?o=We.a.printableKeyDown:(0,Ee.IA)(r)?o=We.a.pasteKeyDown:"Enter"===r.key?o=We.a.enterKeyDown:"Backspace"!==r.key&&"Delete"!==r.key||(o=We.a.deleteKeyDown),o){const l=(0,n.A)({},t,{reason:o,key:r.key});e.current.publishEvent("cellEditStart",l,r)}}}),[e]),C=o.useCallback((t=>{const{id:r,field:n,reason:o}=t,l={id:r,field:n};o!==We.a.printableKeyDown&&o!==We.a.deleteKeyDown&&o!==We.a.pasteKeyDown||(l.deleteValue=!0),e.current.startCellEditMode(l)}),[e]),v=o.useCallback((t=>{const{id:r,field:n,reason:o}=t;let l;e.current.runPendingEditCellValueMutation(r,n),o===We.Q.enterKeyDown?l="below":o===We.Q.tabKeyDown?l="right":o===We.Q.shiftTabKeyDown&&(l="left");const i="escapeKeyDown"===o;e.current.stopCellEditMode({id:r,field:n,ignoreModifications:i,cellToFocusAfter:l})}),[e]);var x;(0,F.cz)(e,"cellDoubleClick",p(h)),(0,F.cz)(e,"cellFocusOut",p(b)),(0,F.cz)(e,"cellKeyDown",p(w)),(0,F.cz)(e,"cellEditStart",p(C)),(0,F.cz)(e,"cellEditStop",p(v)),(0,F.re)(e,"cellEditStart",t.onCellEditStart),(0,F.re)(e,"cellEditStop",(x=t.onCellEditStop,async(...t)=>{if(x){const{id:r,field:n}=t[0],o=e.current.state.editRows,l=o[r][n]?.error;l||x(...t)}}));const R=o.useCallback(((t,r)=>{const n=(0,Ge.w)(e.current.state);return n[t]&&n[t][r]?Oe.bs.Edit:Oe.bs.View}),[e]),S=(0,ie.A)((r=>{const n=r!==t.cellModesModel;d&&n&&d(r,{api:e.current}),t.cellModesModel&&n||(l(r),i.current=r,e.current.publishEvent("cellModesModelChange",r))})),I=o.useCallback(((e,t,r)=>{const o=(0,n.A)({},i.current);if(null!==r)o[e]=(0,n.A)({},o[e],{[t]:(0,n.A)({},r)});else{const r=o[e],n=(0,T.A)(r,[t].map(z));o[e]=n,0===Object.keys(o[e]).length&&delete o[e]}S(o)}),[S]),M=o.useCallback(((t,r,o)=>{e.current.setState((e=>{const l=(0,n.A)({},e.editRows);return null!==o?l[t]=(0,n.A)({},l[t],{[r]:(0,n.A)({},o)}):(delete l[t][r],0===Object.keys(l[t]).length&&delete l[t]),(0,n.A)({},e,{editRows:l})})),e.current.forceUpdate()}),[e]),k=o.useCallback((e=>{const{id:t,field:r}=e,o=(0,T.A)(e,Ue);f(t,r),g(t,r,Oe.bs.View),I(t,r,(0,n.A)({mode:Oe.bs.Edit},o))}),[f,g,I]),P=(0,ie.A)((t=>{const{id:r,field:n,deleteValue:o,initialValue:l}=t;let i=e.current.getCellValue(r,n);o?i=_e(e.current.getColumn(n)):l&&(i=l),M(r,n,{value:i,error:!1,isProcessingProps:!1}),e.current.setCellFocus(r,n)})),E=o.useCallback((e=>{const{id:t,field:r}=e,o=(0,T.A)(e,qe);g(t,r,Oe.bs.Edit),I(t,r,(0,n.A)({mode:Oe.bs.View},o))}),[g,I]),H=(0,ie.A)((async t=>{const{id:r,field:n,ignoreModifications:o,cellToFocusAfter:l="none"}=t;g(r,n,Oe.bs.Edit),e.current.runPendingEditCellValueMutation(r,n);const i=()=>{M(r,n,null),I(r,n,null),"none"!==l&&e.current.moveFocusToRelativeCell(r,n,l)};if(o)return void i();const u=(0,Ge.w)(e.current.state),{error:d,isProcessingProps:p}=u[r][n];if(d||p)return a.current[r][n].mode=Oe.bs.Edit,void I(r,n,{mode:Oe.bs.Edit});const f=e.current.getRowWithUpdatedValuesFromCellEditing(r,n);if(s){const t=e=>{a.current[r][n].mode=Oe.bs.Edit,I(r,n,{mode:Oe.bs.Edit}),c&&c(e)};try{const n=e.current.getRow(r);Promise.resolve(s(f,n)).then((t=>{e.current.updateRows([t]),i()})).catch(t)}catch(e){t(e)}}else e.current.updateRows([f]),i()})),O={getCellMode:R,startCellEditMode:k,stopCellEditMode:E},D={setCellEditingEditCellValue:o.useCallback((async t=>{const{id:r,field:o,value:l,debounceMs:i,unstable_skipValueParser:a}=t;f(r,o),g(r,o,Oe.bs.Edit);const s=e.current.getColumn(o),c=e.current.getRow(r);let u=l;s.valueParser&&!a&&(u=s.valueParser(l,c,s,e));let d=(0,Ge.w)(e.current.state),p=(0,n.A)({},d[r][o],{value:u,changeReason:i?"debouncedSetEditCellValue":"setEditCellValue"});if(s.preProcessEditCellProps){const e=l!==d[r][o].value;p=(0,n.A)({},p,{isProcessingProps:!0}),M(r,o,p),p=await Promise.resolve(s.preProcessEditCellProps({id:r,row:c,props:p,hasChanged:e}))}return e.current.getCellMode(r,o)!==Oe.bs.View&&(d=(0,Ge.w)(e.current.state),p=(0,n.A)({},p,{isProcessingProps:!1}),p.value=s.preProcessEditCellProps?d[r][o].value:u,M(r,o,p),d=(0,Ge.w)(e.current.state),!d[r]?.[o]?.error)}),[e,f,g,M]),getRowWithUpdatedValuesFromCellEditing:o.useCallback(((t,r)=>{const o=e.current.getColumn(r),l=(0,Ge.w)(e.current.state),i=e.current.getRow(t);if(!l[t]||!l[t][r])return e.current.getRow(t);const{value:a}=l[t][r];return o.valueSetter?o.valueSetter(a,i,o,e):(0,n.A)({},i,{[r]:a})}),[e])};(0,A.P)(e,O,"public"),(0,A.P)(e,D,"private"),o.useEffect((()=>{u&&S(u)}),[u,S]),(0,xe.A)((()=>{const t=(0,m.gk)(e),o=a.current;a.current=(0,y.Go)(r),Object.entries(r).forEach((([e,r])=>{Object.entries(r).forEach((([r,l])=>{const i=o[e]?.[r]?.mode||Oe.bs.View,a=t[e]??e;l.mode===Oe.bs.Edit&&i===Oe.bs.View?P((0,n.A)({id:a,field:r},l)):l.mode===Oe.bs.View&&i===Oe.bs.Edit&&H((0,n.A)({id:a,field:r},l))}))}))}),[e,r,P,H])})(e,t),((e,t)=>{const[r,l]=o.useState({}),i=o.useRef(r),a=o.useRef({}),s=o.useRef(),c=o.useRef(null),{processRowUpdate:u,onProcessRowUpdateError:p,rowModesModel:f,onRowModesModelChange:g}=t,h=e=>(...r)=>{t.editMode===Oe.RL.Row&&e(...r)},b=o.useCallback(((t,r)=>{const n=e.current.getCellParams(t,r);if(!e.current.isCellEditable(n))throw new Error(`MUI X: The cell with id=${t} and field=${r} is not editable.`)}),[e]),w=o.useCallback(((t,r)=>{if(e.current.getRowMode(t)!==r)throw new Error(`MUI X: The row with id=${t} is not in ${r} mode.`)}),[e]),C=o.useCallback((t=>{const r=(0,Ge.w)(e.current.state);return Object.values(r[t]).some((e=>e.error))}),[e]),v=o.useCallback(((t,r)=>{if(!t.isEditable)return;if(e.current.getRowMode(t.id)===Oe.V_.Edit)return;const o=e.current.getRowParams(t.id),l=(0,n.A)({},o,{field:t.field,reason:Ke.a.cellDoubleClick});e.current.publishEvent("rowEditStart",l,r)}),[e]),x=o.useCallback((e=>{c.current=e}),[]),R=o.useCallback(((t,r)=>{t.isEditable&&e.current.getRowMode(t.id)!==Oe.V_.View&&(c.current=null,s.current=setTimeout((()=>{if(c.current?.id!==t.id){if(!e.current.getRow(t.id))return;if(e.current.getRowMode(t.id)===Oe.V_.View)return;if(C(t.id))return;const o=e.current.getRowParams(t.id),l=(0,n.A)({},o,{field:t.field,reason:Ke.q.rowFocusOut});e.current.publishEvent("rowEditStop",l,r)}})))}),[e,C]);o.useEffect((()=>()=>{clearTimeout(s.current)}),[]);const S=o.useCallback(((t,r)=>{if(t.cellMode===Oe.V_.Edit){if(229===r.which)return;let o;if("Escape"===r.key)o=Ke.q.escapeKeyDown;else if("Enter"===r.key)o=Ke.q.enterKeyDown;else if("Tab"===r.key){const n=(0,d.TI)(e).filter((r=>e.current.getColumn(r).type===Xe.D||e.current.isCellEditable(e.current.getCellParams(t.id,r))));if(r.shiftKey?t.field===n[0]&&(o=Ke.q.shiftTabKeyDown):t.field===n[n.length-1]&&(o=Ke.q.tabKeyDown),r.preventDefault(),!o){const o=n.findIndex((e=>e===t.field)),l=n[r.shiftKey?o-1:o+1];e.current.setCellFocus(t.id,l)}}if(o){if(o!==Ke.q.escapeKeyDown&&C(t.id))return;const l=(0,n.A)({},e.current.getRowParams(t.id),{reason:o,field:t.field});e.current.publishEvent("rowEditStop",l,r)}}else if(t.isEditable){let o;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:r,cellParams:t,editMode:"row"}))return;if((0,Ee.TW)(r)||(0,Ee.IA)(r)?o=Ke.a.printableKeyDown:"Enter"===r.key?o=Ke.a.enterKeyDown:"Backspace"!==r.key&&"Delete"!==r.key||(o=Ke.a.deleteKeyDown),o){const l=e.current.getRowParams(t.id),i=(0,n.A)({},l,{field:t.field,reason:o});e.current.publishEvent("rowEditStart",i,r)}}}),[e,C]),I=o.useCallback((t=>{const{id:r,field:n,reason:o}=t,l={id:r,fieldToFocus:n};o!==Ke.a.printableKeyDown&&o!==Ke.a.deleteKeyDown||(l.deleteValue=!!n),e.current.startRowEditMode(l)}),[e]),M=o.useCallback((t=>{const{id:r,reason:n,field:o}=t;let l;e.current.runPendingEditCellValueMutation(r),n===Ke.q.enterKeyDown?l="below":n===Ke.q.tabKeyDown?l="right":n===Ke.q.shiftTabKeyDown&&(l="left");const i="escapeKeyDown"===n;e.current.stopRowEditMode({id:r,ignoreModifications:i,field:o,cellToFocusAfter:l})}),[e]);(0,F.cz)(e,"cellDoubleClick",h(v)),(0,F.cz)(e,"cellFocusIn",h(x)),(0,F.cz)(e,"cellFocusOut",h(R)),(0,F.cz)(e,"cellKeyDown",h(S)),(0,F.cz)(e,"rowEditStart",h(I)),(0,F.cz)(e,"rowEditStop",h(M)),(0,F.re)(e,"rowEditStart",t.onRowEditStart),(0,F.re)(e,"rowEditStop",t.onRowEditStop);const k=o.useCallback((r=>{if(t.editMode===Oe.RL.Cell)return Oe.V_.View;const n=(0,Ge.w)(e.current.state);return n[r]&&Object.keys(n[r]).length>0?Oe.V_.Edit:Oe.V_.View}),[e,t.editMode]),P=(0,ie.A)((r=>{const n=r!==t.rowModesModel;g&&n&&g(r,{api:e.current}),t.rowModesModel&&n||(l(r),i.current=r,e.current.publishEvent("rowModesModelChange",r))})),E=o.useCallback(((e,t)=>{const r=(0,n.A)({},i.current);null!==t?r[e]=(0,n.A)({},t):delete r[e],P(r)}),[P]),H=o.useCallback(((t,r)=>{e.current.setState((e=>{const o=(0,n.A)({},e.editRows);return null!==r?o[t]=r:delete o[t],(0,n.A)({},e,{editRows:o})})),e.current.forceUpdate()}),[e]),O=o.useCallback(((t,r,o)=>{e.current.setState((e=>{const l=(0,n.A)({},e.editRows);return null!==o?l[t]=(0,n.A)({},l[t],{[r]:(0,n.A)({},o)}):(delete l[t][r],0===Object.keys(l[t]).length&&delete l[t]),(0,n.A)({},e,{editRows:l})})),e.current.forceUpdate()}),[e]),D=o.useCallback((e=>{const{id:t}=e,r=(0,T.A)(e,Ye);w(t,Oe.V_.View),E(t,(0,n.A)({mode:Oe.V_.Edit},r))}),[w,E]),L=(0,ie.A)((t=>{const{id:r,fieldToFocus:n,deleteValue:o,initialValue:l}=t,i=(0,d.JR)(e).reduce(((t,i)=>{if(!e.current.getCellParams(r,i).isEditable)return t;let a=e.current.getCellValue(r,i);return n===i&&(o||l)&&(o?a=_e(e.current.getColumn(i)):l&&(a=l)),t[i]={value:a,error:!1,isProcessingProps:!1},t}),{});H(r,i),n&&e.current.setCellFocus(r,n)})),$=o.useCallback((e=>{const{id:t}=e,r=(0,T.A)(e,Ze);w(t,Oe.V_.Edit),E(t,(0,n.A)({mode:Oe.V_.View},r))}),[w,E]),j=(0,ie.A)((t=>{const{id:r,ignoreModifications:n,field:o,cellToFocusAfter:l="none"}=t;e.current.runPendingEditCellValueMutation(r);const i=()=>{"none"!==l&&o&&e.current.moveFocusToRelativeCell(r,o,l),H(r,null),E(r,null)};if(n)return void i();const s=(0,Ge.w)(e.current.state),c=e.current.getRow(r);if(Object.values(s[r]).some((e=>e.isProcessingProps)))return void(a.current[r].mode=Oe.V_.Edit);if(C(r))return a.current[r].mode=Oe.V_.Edit,void E(r,{mode:Oe.V_.Edit});const d=e.current.getRowWithUpdatedValuesFromRowEditing(r);if(u){const t=e=>{a.current[r].mode=Oe.V_.Edit,E(r,{mode:Oe.V_.Edit}),p&&p(e)};try{Promise.resolve(u(d,c)).then((t=>{e.current.updateRows([t]),i()})).catch(t)}catch(e){t(e)}}else e.current.updateRows([d]),i()})),N={getRowMode:k,startRowEditMode:D,stopRowEditMode:$},V={setRowEditingEditCellValue:o.useCallback((t=>{const{id:r,field:o,value:l,debounceMs:i,unstable_skipValueParser:a}=t;b(r,o);const s=e.current.getColumn(o),c=e.current.getRow(r);let u=l;s.valueParser&&!a&&(u=s.valueParser(l,c,s,e));let d=(0,Ge.w)(e.current.state),p=(0,n.A)({},d[r][o],{value:u,changeReason:i?"debouncedSetEditCellValue":"setEditCellValue"});return s.preProcessEditCellProps||O(r,o,p),new Promise((t=>{const l=[];if(s.preProcessEditCellProps){const i=p.value!==d[r][o].value;p=(0,n.A)({},p,{isProcessingProps:!0}),O(r,o,p);const a=d[r],f=(0,T.A)(a,[o].map(z)),g=Promise.resolve(s.preProcessEditCellProps({id:r,row:c,props:p,hasChanged:i,otherFieldsProps:f})).then((l=>{e.current.getRowMode(r)!==Oe.V_.View?(d=(0,Ge.w)(e.current.state),(l=(0,n.A)({},l,{isProcessingProps:!1})).value=s.preProcessEditCellProps?d[r][o].value:u,O(r,o,l)):t(!1)}));l.push(g)}Object.entries(d[r]).forEach((([i,a])=>{if(i===o)return;const s=e.current.getColumn(i);if(!s.preProcessEditCellProps)return;a=(0,n.A)({},a,{isProcessingProps:!0}),O(r,i,a),d=(0,Ge.w)(e.current.state);const u=d[r],p=(0,T.A)(u,[i].map(z)),f=Promise.resolve(s.preProcessEditCellProps({id:r,row:c,props:a,hasChanged:!1,otherFieldsProps:p})).then((o=>{e.current.getRowMode(r)!==Oe.V_.View?(o=(0,n.A)({},o,{isProcessingProps:!1}),O(r,i,o)):t(!1)}));l.push(f)})),Promise.all(l).then((()=>{e.current.getRowMode(r)===Oe.V_.Edit?(d=(0,Ge.w)(e.current.state),t(!d[r][o].error)):t(!1)}))}))}),[e,b,O]),getRowWithUpdatedValuesFromRowEditing:o.useCallback((t=>{const r=(0,Ge.w)(e.current.state),o=e.current.getRow(t);if(!r[t])return e.current.getRow(t);let l=(0,n.A)({},o);return Object.entries(r[t]).forEach((([t,r])=>{const n=e.current.getColumn(t);n.valueSetter?l=n.valueSetter(r.value,l,n,e):l[t]=r.value})),l}),[e])};(0,A.P)(e,N,"public"),(0,A.P)(e,V,"private"),o.useEffect((()=>{f&&P(f)}),[f,P]),(0,xe.A)((()=>{const t=(0,m.gk)(e),o=a.current;a.current=(0,y.Go)(r);const l=new Set([...Object.keys(r),...Object.keys(o)]);Array.from(l).forEach((e=>{const l=r[e]??{mode:Oe.V_.View},i=o[e]?.mode||Oe.V_.View,a=t[e]??e;l.mode===Oe.V_.Edit&&i===Oe.V_.View?L((0,n.A)({id:a},l)):l.mode===Oe.V_.View&&i===Oe.V_.Edit&&j((0,n.A)({id:a},l))}))}),[e,r,L,j])})(e,t);const r=o.useRef({}),{isCellEditable:l}=t,i=o.useCallback((e=>!(0,he.nF)(e.rowNode)&&!!e.colDef.editable&&!!e.colDef.renderEditCell&&(!l||l(e))),[l]);o.useEffect((()=>{const e=r.current;return()=>{Object.entries(e).forEach((([t,r])=>{Object.keys(r).forEach((r=>{const[n]=e[t][r];clearTimeout(n),delete e[t][r]}))}))}}),[]);const a=o.useCallback(((e,t)=>{if(r.current[e])if(t){if(r.current[e][t]){const[,n]=r.current[e][t];n()}}else Object.keys(r.current[e]).forEach((t=>{const[,n]=r.current[e][t];n()}))}),[]),s={isCellEditable:i,setEditCellValue:o.useCallback((n=>{const{id:o,field:l,debounceMs:i}=n;return new Promise((a=>{((e,t,n,o)=>{if(!n)return void o();if(r.current[e]||(r.current[e]={}),r.current[e][t]){const[n]=r.current[e][t];clearTimeout(n)}const l=setTimeout((()=>{o(),delete r.current[e][t]}),n);r.current[e][t]=[l,()=>{const[n]=r.current[e][t];clearTimeout(n),o(),delete r.current[e][t]}]})(o,l,i,(async()=>{const r=t.editMode===Oe.RL.Row?e.current.setRowEditingEditCellValue:e.current.setCellEditingEditCellValue;if(e.current.getCellMode(o,l)===Oe.bs.Edit){const e=await r(n);a(e)}}))}))}),[e,t.editMode]),getRowWithUpdatedValues:o.useCallback(((r,n)=>t.editMode===Oe.RL.Cell?e.current.getRowWithUpdatedValuesFromCellEditing(r,n):e.current.getRowWithUpdatedValuesFromRowEditing(r)),[e,t.editMode]),unstable_getEditCellMeta:o.useCallback(((t,r)=>{const n=(0,Ge.w)(e.current.state);return n[t]?.[r]??null}),[e])},c={runPendingEditCellValueMutation:a};(0,A.P)(e,s,"public"),(0,A.P)(e,c,"private")})(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridFocus"),l=o.useRef(null),i=null!==e.current.rootElementRef.current,a=o.useCallback(((t,r)=>{t&&e.current.getRow(t.id)&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(t.id,t.field),r)}),[e]),s=o.useCallback(((t,o)=>{const l=(0,B.MO)(e);l?.id===t&&l?.field===o||(e.current.setState((e=>(r.debug(`Focusing on cell with id=${t} and field=${o}`),(0,n.A)({},e,{tabIndex:{cell:{id:t,field:o},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},focus:{cell:{id:t,field:o},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})))),e.current.forceUpdate(),e.current.getRow(t)&&(l&&a(l,{}),e.current.publishEvent("cellFocusIn",e.current.getCellParams(t,o))))}),[e,r,a]),c=o.useCallback(((t,o={})=>{const l=(0,B.MO)(e);a(l,o),e.current.setState((e=>(r.debug(`Focusing on column header with colIndex=${t}`),(0,n.A)({},e,{tabIndex:{columnHeader:{field:t},columnHeaderFilter:null,cell:null,columnGroupHeader:null},focus:{columnHeader:{field:t},columnHeaderFilter:null,cell:null,columnGroupHeader:null}})))),e.current.forceUpdate()}),[e,r,a]),u=o.useCallback(((t,o={})=>{const l=(0,B.MO)(e);a(l,o),e.current.setState((e=>(r.debug(`Focusing on column header filter with colIndex=${t}`),(0,n.A)({},e,{tabIndex:{columnHeader:null,columnHeaderFilter:{field:t},cell:null,columnGroupHeader:null},focus:{columnHeader:null,columnHeaderFilter:{field:t},cell:null,columnGroupHeader:null}})))),e.current.forceUpdate()}),[e,r,a]),p=o.useCallback(((t,r,o={})=>{const l=(0,B.MO)(e);l&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(l.id,l.field),o),e.current.setState((e=>(0,n.A)({},e,{tabIndex:{columnGroupHeader:{field:t,depth:r},columnHeader:null,columnHeaderFilter:null,cell:null},focus:{columnGroupHeader:{field:t,depth:r},columnHeader:null,columnHeaderFilter:null,cell:null}}))),e.current.forceUpdate()}),[e]),f=o.useCallback((()=>(0,B.WO)(e)),[e]),g=o.useCallback(((r,n,o)=>{let l=e.current.getColumnIndex(n);const i=(0,d.iv)(e),a=(0,Fe.e)(e,{pagination:t.pagination,paginationMode:t.paginationMode}),s=(0,m.$2)(e),c=[].concat(s.top||[],a.rows,s.bottom||[]);let u=c.findIndex((e=>e.id===r));"right"===o?l+=1:"left"===o?l-=1:u+=1,l>=i.length?(u+=1,u<c.length&&(l=0)):l<0&&(u-=1,u>=0&&(l=i.length-1)),u=(0,y.qE)(u,0,c.length-1);const p=c[u];if(!p)return;const f=e.current.unstable_getCellColSpanInfo(p.id,l);f&&f.spannedByColSpan&&("left"===o||"below"===o?l=f.leftVisibleCellIndex:"right"===o&&(l=f.rightVisibleCellIndex)),l=(0,y.qE)(l,0,i.length-1);const g=i[l];e.current.setCellFocus(p.id,g.field)}),[e,t.pagination,t.paginationMode]),h=o.useCallback((({id:t,field:r})=>{e.current.setCellFocus(t,r)}),[e]),b=o.useCallback(((t,r)=>{"Enter"===r.key||"Tab"===r.key||"Shift"===r.key||(0,Ee.q9)(r.key)||e.current.setCellFocus(t.id,t.field)}),[e]),w=o.useCallback((({field:t},r)=>{r.target===r.currentTarget&&e.current.setColumnHeaderFocus(t,r)}),[e]),C=o.useCallback((({fields:t,depth:r},n)=>{if(n.target!==n.currentTarget)return;const o=(0,B.WO)(e);null!==o&&o.depth===r&&t.includes(o.field)||e.current.setColumnGroupHeaderFocus(t[0],r,n)}),[e]),v=o.useCallback(((t,o)=>{o.relatedTarget?.getAttribute("class")?.includes(ge.x.columnHeader)||(r.debug("Clearing focus"),e.current.setState((e=>(0,n.A)({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))))}),[r,e]),x=o.useCallback((e=>{l.current=e}),[]),R=o.useCallback((t=>{const r=l.current;l.current=null;const o=(0,B.MO)(e);if(!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:t,cell:r}))return;if(!o)return void(r&&e.current.setCellFocus(r.id,r.field));if(r?.id===o.id&&r?.field===o.field)return;const i=e.current.getCellElement(o.id,o.field);i?.contains(t.target)||(r?e.current.setCellFocus(r.id,r.field):(e.current.setState((e=>(0,n.A)({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))),e.current.forceUpdate(),a(o,t)))}),[e,a]),S=o.useCallback((t=>{if("view"===t.cellMode)return;const r=(0,B.MO)(e);r?.id===t.id&&r?.field===t.field||e.current.setCellFocus(t.id,t.field)}),[e]),I=o.useCallback((()=>{const t=(0,B.MO)(e);t&&!e.current.getRow(t.id)&&e.current.setState((e=>(0,n.A)({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})))}),[e]),M=(0,ie.A)((()=>{const r=(0,B.MO)(e);if(!r)return;const o=(0,Fe.e)(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(o.rows.find((e=>e.id===r.id)))return;const l=(0,d.iv)(e);e.current.setState((e=>(0,n.A)({},e,{tabIndex:{cell:{id:o.rows[0].id,field:l[0].field},columnGroupHeader:null,columnHeader:null,columnHeaderFilter:null}})))})),k={setCellFocus:s,setColumnHeaderFocus:c,setColumnHeaderFilterFocus:u},P={moveFocusToRelativeCell:g,setColumnGroupHeaderFocus:p,getColumnGroupHeaderFocus:f};(0,A.P)(e,k,"public"),(0,A.P)(e,P,"private"),o.useEffect((()=>{const t=(0,fe.A)(e.current.rootElementRef.current);return t.addEventListener("mouseup",R),()=>{t.removeEventListener("mouseup",R)}}),[e,i,R]),(0,F.cz)(e,"columnHeaderBlur",v),(0,F.cz)(e,"cellDoubleClick",h),(0,F.cz)(e,"cellMouseDown",x),(0,F.cz)(e,"cellKeyDown",b),(0,F.cz)(e,"cellModeChange",S),(0,F.cz)(e,"columnHeaderFocus",w),(0,F.cz)(e,"columnGroupHeaderFocus",C),(0,F.cz)(e,"rowsSet",I),(0,F.cz)(e,"paginationModelChange",M)})(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridPreferencesPanel"),l=o.useRef(),i=o.useRef(),a=o.useCallback((()=>{r.debug("Hiding Preferences Panel");const t=(0,Ve._)(e.current.state);t.openedPanelValue&&e.current.publishEvent("preferencePanelClose",{openedPanelValue:t.openedPanelValue}),e.current.setState((e=>(0,n.A)({},e,{preferencePanel:{open:!1}}))),e.current.forceUpdate()}),[e,r]),s=o.useCallback((()=>{i.current=setTimeout((()=>clearTimeout(l.current)),0)}),[]),c=o.useCallback((()=>{l.current=setTimeout(a,100)}),[a]),u=o.useCallback(((t,o,l)=>{r.debug("Opening Preferences Panel"),s(),e.current.setState((e=>(0,n.A)({},e,{preferencePanel:(0,n.A)({},e.preferencePanel,{open:!0,openedPanelValue:t,panelId:o,labelId:l})}))),e.current.publishEvent("preferencePanelOpen",{openedPanelValue:t}),e.current.forceUpdate()}),[r,s,e]);(0,A.P)(e,{showPreferences:u,hidePreferences:c},"public");const d=o.useCallback(((r,o)=>{const l=(0,Ve._)(e.current.state);return!o.exportOnlyDirtyModels||null!=t.initialState?.preferencePanel||l.open?(0,n.A)({},r,{preferencePanel:l}):r}),[e,t.initialState?.preferencePanel]),p=o.useCallback(((t,r)=>{const o=r.stateToRestore.preferencePanel;return null!=o&&e.current.setState((e=>(0,n.A)({},e,{preferencePanel:o}))),t}),[e]);Q(e,"exportState",d),Q(e,"restoreState",p),o.useEffect((()=>()=>{clearTimeout(l.current),clearTimeout(i.current)}),[])})(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridFilter");e.current.registerControlState({stateId:"filter",propModel:t.filterModel,propOnChange:t.onFilterModelChange,stateSelector:w.ZI,changeEvent:"filterModelChange"});const l=o.useCallback((()=>{e.current.setState((t=>{const r=(0,w.ZI)(t,e.current.instanceId),o=e.current.getFilterState(r),l=(0,n.A)({},t,{filter:(0,n.A)({},t.filter,o)}),i=ke(e,l);return(0,n.A)({},l,{visibleRowsLookup:i})})),e.current.publishEvent("filteredRowsSet")}),[e]),i=o.useCallback(((e,r)=>null==r||!1===r.filterable||t.disableColumnFilter?e:[...e,"columnMenuFilterItem"]),[t.disableColumnFilter]),a=o.useCallback((()=>{l(),e.current.forceUpdate()}),[e,l]),s=o.useCallback((t=>{const r=(0,w.ZI)(e),o=[...r.items],l=o.findIndex((e=>e.id===t.id));-1===l?o.push(t):o[l]=t,e.current.setFilterModel((0,n.A)({},r,{items:o}),"upsertFilterItem")}),[e]),c=o.useCallback((t=>{const r=(0,w.ZI)(e),o=[...r.items];t.forEach((e=>{const t=o.findIndex((t=>t.id===e.id));-1===t?o.push(e):o[t]=e})),e.current.setFilterModel((0,n.A)({},r,{items:o}),"upsertFilterItems")}),[e]),u=o.useCallback((t=>{const r=(0,w.ZI)(e),o=r.items.filter((e=>e.id!==t.id));o.length!==r.items.length&&e.current.setFilterModel((0,n.A)({},r,{items:o}),"deleteFilterItem")}),[e]),p=o.useCallback(((o,l,i)=>{if(r.debug("Displaying filter panel"),o){const r=(0,w.ZI)(e),l=r.items.filter((t=>{if(void 0!==t.value)return!Array.isArray(t.value)||0!==t.value.length;const r=e.current.getColumn(t.field),n=r.filterOperators?.find((e=>e.value===t.operator));return!(void 0===n?.requiresFilterValue||n?.requiresFilterValue)}));let i;const a=l.find((e=>e.field===o)),s=e.current.getColumn(o);i=a?l:t.disableMultipleColumnsFiltering?[(0,Se.zk)({field:o,operator:s.filterOperators[0].value},e)]:[...l,(0,Se.zk)({field:o,operator:s.filterOperators[0].value},e)],e.current.setFilterModel((0,n.A)({},r,{items:i}))}e.current.showPreferences(re.y.filters,l,i)}),[e,r,t.disableMultipleColumnsFiltering]),f=o.useCallback((()=>{r.debug("Hiding filter panel"),e.current.hidePreferences()}),[e,r]),g=o.useCallback((t=>{const r=(0,w.ZI)(e);r.logicOperator!==t&&e.current.setFilterModel((0,n.A)({},r,{logicOperator:t}),"changeLogicOperator")}),[e]),h=o.useCallback((t=>{const r=(0,w.ZI)(e);(0,y.Hv)(r.quickFilterValues,t)||e.current.setFilterModel((0,n.A)({},r,{quickFilterValues:[...t]}))}),[e]),b=o.useCallback(((n,o)=>{(0,w.ZI)(e)!==n&&(r.debug("Setting filter model"),e.current.updateControlState("filter",(0,Se.zU)(n,t.disableMultipleColumnsFiltering,e),o),e.current.unstable_applyFilters())}),[e,r,t.disableMultipleColumnsFiltering]),C=o.useCallback((r=>{const o=(0,Se.L5)(r,t.disableMultipleColumnsFiltering,e),l="client"===t.filterMode?(0,Se.Fv)(o,e,t.disableEval):null,i=e.current.applyStrategyProcessor("filtering",{isRowMatchingFilters:l,filterModel:o??(0,Ae.T)()});return(0,n.A)({},i,{filterModel:o})}),[t.disableMultipleColumnsFiltering,t.filterMode,t.disableEval,e]),v={setFilterLogicOperator:g,unstable_applyFilters:a,deleteFilterItem:u,upsertFilterItem:s,upsertFilterItems:c,setFilterModel:b,showFilterPanel:p,hideFilterPanel:f,setQuickFilterValues:h,ignoreDiacritics:t.ignoreDiacritics,getFilterState:C};(0,A.P)(e,v,"public");const x=o.useCallback(((r,o)=>{const l=(0,w.ZI)(e);return o.exportOnlyDirtyModels&&null==t.filterModel&&null==t.initialState?.filter?.filterModel&&(0,y.Hv)(l,(0,Ae.T)())?r:(0,n.A)({},r,{filter:{filterModel:l}})}),[e,t.filterModel,t.initialState?.filter?.filterModel]),R=o.useCallback(((r,o)=>{const l=o.stateToRestore.filter?.filterModel;return null==l?r:(e.current.updateControlState("filter",(0,Se.zU)(l,t.disableMultipleColumnsFiltering,e),"restoreState"),(0,n.A)({},r,{callbacks:[...r.callbacks,e.current.unstable_applyFilters]}))}),[e,t.disableMultipleColumnsFiltering]),S=o.useCallback(((e,r)=>{if(r===re.y.filters){const e=t.slots.filterPanel;return(0,ne.jsx)(e,(0,n.A)({},t.slotProps?.filterPanel))}return e}),[t.slots.filterPanel,t.slotProps?.filterPanel]),{getRowId:I}=t,M=(0,ye.A)(Pe),k=o.useCallback((r=>{if("client"!==t.filterMode||!r.isRowMatchingFilters)return{filteredRowsLookup:{},filteredChildrenCountLookup:{},filteredDescendantCountLookup:{}};const n=(0,m.rI)(e),o={},{isRowMatchingFilters:l}=r,i={},a={passingFilterItems:null,passingQuickFilterValues:null},s=M.current(e.current.state.rows.dataRowIdToModelLookup);for(let t=0;t<s.length;t+=1){const n=s[t],c=I?I(n):n.id;l(n,void 0,a);const u=(0,Se.Ko)([a.passingFilterItems],[a.passingQuickFilterValues],r.filterModel,e,i);o[c]=u}const c="auto-generated-group-footer-root";return n[c]&&(o[c]=!0),{filteredRowsLookup:o,filteredChildrenCountLookup:{},filteredDescendantCountLookup:{}}}),[e,t.filterMode,I,M]);Q(e,"columnMenu",i),Q(e,"exportState",x),Q(e,"restoreState",R),Q(e,"preferencePanel",S),Re(e,L,"filtering",k),Re(e,L,"visibleRowsLookupCreation",Me);const P=o.useCallback((()=>{r.debug("onColUpdated - GridColumns changed, applying filters");const t=(0,w.ZI)(e),o=(0,d.gv)(e),l=t.items.filter((e=>e.field&&o[e.field]));l.length<t.items.length&&e.current.setFilterModel((0,n.A)({},t,{items:l}))}),[e,r]),E=o.useCallback((t=>{"filtering"===t&&e.current.unstable_applyFilters()}),[e]),H=o.useCallback((()=>{e.current.setState((t=>(0,n.A)({},t,{visibleRowsLookup:ke(e,t)}))),e.current.forceUpdate()}),[e]);(0,F.cz)(e,"rowsSet",l),(0,F.cz)(e,"columnsChange",P),(0,F.cz)(e,"activeStrategyProcessorChange",E),(0,F.cz)(e,"rowExpansionChange",H),(0,F.cz)(e,"columnVisibilityModelChange",(()=>{const t=(0,w.ZI)(e);t.quickFilterValues&&(0,Se.kO)(t)&&e.current.unstable_applyFilters()})),(0,Z.g)((()=>{e.current.unstable_applyFilters()})),(0,xe.A)((()=>{void 0!==t.filterModel&&e.current.setFilterModel(t.filterModel)}),[e,r,t.filterModel])})(r,t),((e,t)=>{const r=(0,K.q)(e,"useGridSorting");e.current.registerControlState({stateId:"sortModel",propModel:t.sortModel,propOnChange:t.onSortModelChange,stateSelector:et.XU,changeEvent:"sortModelChange"});const l=o.useCallback(((t,r)=>{const n=(0,et.XU)(e),o=n.findIndex((e=>e.field===t));let l=[...n];return o>-1?null==r?.sort?l.splice(o,1):l.splice(o,1,r):l=[...n,r],l}),[e]),i=o.useCallback(((r,o)=>{const l=(0,et.XU)(e).find((e=>e.field===r.field));if(l){const e=void 0===o?(0,at.Hm)(r.sortingOrder??t.sortingOrder,l.sort):o;return void 0===e?void 0:(0,n.A)({},l,{sort:e})}return{field:r.field,sort:void 0===o?(0,at.Hm)(r.sortingOrder??t.sortingOrder):o}}),[e,t.sortingOrder]),a=o.useCallback(((e,r)=>null==r||!1===r.sortable||t.disableColumnSorting?e:(r.sortingOrder||t.sortingOrder).some((e=>!!e))?[...e,"columnMenuSortItem"]:e),[t.sortingOrder,t.disableColumnSorting]),s=o.useCallback((()=>{e.current.setState((o=>{if("server"===t.sortingMode)return r.debug("Skipping sorting rows as sortingMode = server"),(0,n.A)({},o,{sorting:(0,n.A)({},o.sorting,{sortedRows:(0,he.l_)((0,m.qj)(e),he.OL,!1)})});const l=(0,et.XU)(o,e.current.instanceId),i=(0,at.Lj)(l,e),a=e.current.applyStrategyProcessor("sorting",{sortRowList:i});return(0,n.A)({},o,{sorting:(0,n.A)({},o.sorting,{sortedRows:a})})})),e.current.publishEvent("sortedRowsSet"),e.current.forceUpdate()}),[e,r,t.sortingMode]),c=o.useCallback((n=>{(0,et.XU)(e)!==n&&(r.debug("Setting sort model"),e.current.setState((0,at.ps)(n,t.disableMultipleColumnsSorting)),e.current.forceUpdate(),e.current.applySorting())}),[e,r,t.disableMultipleColumnsSorting]),u=o.useCallback(((r,n,o)=>{const a=e.current.getColumn(r),s=i(a,n);let c;c=!o||t.disableMultipleColumnsSorting?null==s?.sort?[]:[s]:l(a.field,s),e.current.setSortModel(c)}),[e,l,i,t.disableMultipleColumnsSorting]),p={getSortModel:o.useCallback((()=>(0,et.XU)(e)),[e]),getSortedRows:o.useCallback((()=>(0,et.J6)(e).map((e=>e.model))),[e]),getSortedRowIds:o.useCallback((()=>(0,et.RJ)(e)),[e]),getRowIdFromRowIndex:o.useCallback((t=>e.current.getSortedRowIds()[t]),[e]),setSortModel:c,sortColumn:u,applySorting:s};(0,A.P)(e,p,"public");const f=o.useCallback(((r,o)=>{const l=(0,et.XU)(e);return!o.exportOnlyDirtyModels||null!=t.sortModel||null!=t.initialState?.sorting?.sortModel||l.length>0?(0,n.A)({},r,{sorting:{sortModel:l}}):r}),[e,t.sortModel,t.initialState?.sorting?.sortModel]),g=o.useCallback(((r,o)=>{const l=o.stateToRestore.sorting?.sortModel;return null==l?r:(e.current.setState((0,at.ps)(l,t.disableMultipleColumnsSorting)),(0,n.A)({},r,{callbacks:[...r.callbacks,e.current.applySorting]}))}),[e,t.disableMultipleColumnsSorting]),h=o.useCallback((t=>{const r=(0,m.qj)(e),n=r[he.OL],o=t.sortRowList?t.sortRowList(n.children.map((e=>r[e]))):[...n.children];return null!=n.footerId&&o.push(n.footerId),o}),[e]);Q(e,"exportState",f),Q(e,"restoreState",g),Re(e,L,"sorting",h);const b=o.useCallback((({field:e,colDef:r},n)=>{if(!r.sortable||t.disableColumnSorting)return;const o=n.shiftKey||n.metaKey||n.ctrlKey;u(e,void 0,o)}),[u,t.disableColumnSorting]),w=o.useCallback((({field:e,colDef:r},n)=>{r.sortable&&!t.disableColumnSorting&&("Enter"!==n.key||n.ctrlKey||n.metaKey||u(e,void 0,n.shiftKey))}),[u,t.disableColumnSorting]),C=o.useCallback((()=>{const t=(0,et.XU)(e),r=(0,d.gv)(e);if(t.length>0){const n=t.filter((e=>r[e.field]));n.length<t.length&&e.current.setSortModel(n)}}),[e]),v=o.useCallback((t=>{"sorting"===t&&e.current.applySorting()}),[e]);Q(e,"columnMenu",a),(0,F.cz)(e,"columnHeaderClick",b),(0,F.cz)(e,"columnHeaderKeyDown",w),(0,F.cz)(e,"rowsSet",e.current.applySorting),(0,F.cz)(e,"columnsChange",C),(0,F.cz)(e,"activeStrategyProcessorChange",v),(0,Z.g)((()=>{e.current.applySorting()})),(0,xe.A)((()=>{void 0!==t.sortModel&&e.current.setSortModel(t.sortModel)}),[e,t.sortModel])})(r,t),((e,t)=>{const r=(0,K.q)(e,"useDensity");e.current.registerControlState({stateId:"density",propModel:t.density,propOnChange:t.onDensityChange,stateSelector:ae._v,changeEvent:"densityChange"});const l={setDensity:(0,ie.A)((t=>{(0,ae._v)(e.current.state)!==t&&(r.debug(`Set grid density to ${t}`),e.current.setState((e=>(0,n.A)({},e,{density:t}))))}))};(0,A.P)(e,l,"public");const i=o.useCallback(((r,o)=>{const l=(0,ae._v)(e.current.state);return o.exportOnlyDirtyModels&&null==t.density&&null==t.initialState?.density?r:(0,n.A)({},r,{density:l})}),[e,t.density,t.initialState?.density]),a=o.useCallback(((t,r)=>{const o=r.stateToRestore?.density?r.stateToRestore.density:(0,ae._v)(e.current.state);return e.current.setState((e=>(0,n.A)({},e,{density:o}))),t}),[e]);Q(e,"exportState",i),Q(e,"restoreState",a),o.useEffect((()=>{t.density&&e.current.setDensity(t.density)}),[e,t.density])})(r,t),Lt(r,t),((e,t)=>{((e,t)=>{const r=(0,K.q)(e,"useGridPaginationMeta"),l=(0,p.Nc)(e,be.py);e.current.registerControlState({stateId:"paginationMeta",propModel:t.paginationMeta,propOnChange:t.onPaginationMetaChange,stateSelector:be.py,changeEvent:"paginationMetaChange"});const i={setPaginationMeta:o.useCallback((t=>{l!==t&&(r.debug("Setting 'paginationMeta' to",t),e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{meta:t})}))))}),[e,r,l])};(0,A.P)(e,i,"public");const a=o.useCallback(((r,o)=>{const l=(0,be.py)(e);return o.exportOnlyDirtyModels&&null==t.paginationMeta&&null==t.initialState?.pagination?.meta?r:(0,n.A)({},r,{pagination:(0,n.A)({},r.pagination,{meta:l})})}),[e,t.paginationMeta,t.initialState?.pagination?.meta]),s=o.useCallback(((t,r)=>{const o=r.stateToRestore.pagination?.meta?r.stateToRestore.pagination.meta:(0,be.py)(e);return e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{meta:o})}))),t}),[e]);Q(e,"exportState",a),Q(e,"restoreState",s),o.useEffect((()=>{t.paginationMeta&&e.current.setPaginationMeta(t.paginationMeta)}),[e,t.paginationMeta])})(e,t),((e,t)=>{const r=(0,K.q)(e,"useGridPaginationModel"),l=(0,p.Nc)(e,ae.rf),i=Math.floor(t.rowHeight*l);e.current.registerControlState({stateId:"paginationModel",propModel:t.paginationModel,propOnChange:t.onPaginationModelChange,stateSelector:be.lN,changeEvent:"paginationModelChange"});const a={setPage:o.useCallback((t=>{const n=(0,be.lN)(e);t!==n.page&&(r.debug(`Setting page to ${t}`),e.current.setPaginationModel({page:t,pageSize:n.pageSize}))}),[e,r]),setPageSize:o.useCallback((t=>{const n=(0,be.lN)(e);t!==n.pageSize&&(r.debug(`Setting page size to ${t}`),e.current.setPaginationModel({pageSize:t,page:n.page}))}),[e,r]),setPaginationModel:o.useCallback((o=>{const l=(0,be.lN)(e);o!==l&&(r.debug("Setting 'paginationModel' to",o),e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{paginationModel:Ce(e.pagination,t.signature,o)})}))))}),[e,r,t.signature])};(0,A.P)(e,a,"public");const s=o.useCallback(((r,o)=>{const l=(0,be.lN)(e);return!o.exportOnlyDirtyModels||null!=t.paginationModel||null!=t.initialState?.pagination?.paginationModel||0!==l.page&&l.pageSize!==(0,we.eW)(t.autoPageSize)?(0,n.A)({},r,{pagination:(0,n.A)({},r.pagination,{paginationModel:l})}):r}),[e,t.paginationModel,t.initialState?.pagination?.paginationModel,t.autoPageSize]),c=o.useCallback(((r,o)=>{const l=o.stateToRestore.pagination?.paginationModel?(0,n.A)({},(0,we.N0)(t.autoPageSize),o.stateToRestore.pagination?.paginationModel):(0,be.lN)(e);return e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{paginationModel:Ce(e.pagination,t.signature,l)})}))),r}),[e,t.autoPageSize,t.signature]);Q(e,"exportState",s),Q(e,"restoreState",c);const u=o.useCallback((()=>{if(!t.autoPageSize)return;const r=e.current.getRootDimensions(),n=Math.floor(r.viewportInnerSize.height/i);e.current.setPageSize(n)}),[e,t.autoPageSize,i]),d=o.useCallback((t=>{if(null==t)return;const r=(0,be.lN)(e),n=(0,be.O)(e);r.page>n-1&&e.current.setPage(Math.max(0,n-1))}),[e]);(0,F.cz)(e,"viewportInnerSizeChange",u),(0,F.cz)(e,"paginationModelChange",(()=>{const t=(0,be.lN)(e);e.current.virtualScrollerRef?.current&&e.current.scrollToIndexes({rowIndex:t.page*t.pageSize})})),(0,F.cz)(e,"rowCountChange",d),o.useEffect((()=>{e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{paginationModel:Ce(e.pagination,t.signature,t.paginationModel)})})))}),[e,t.paginationModel,t.paginationMode,t.signature]),o.useEffect(u,[u])})(e,t),((e,t)=>{const r=(0,K.q)(e,"useGridRowCount"),l=(0,p.Nc)(e,w.RN),i=(0,p.Nc)(e,be.H2),a=(0,p.Nc)(e,be.py),s=(0,p.Nc)(e,be.lN),c=(0,ye.A)((()=>(0,be.lN)(e).pageSize));e.current.registerControlState({stateId:"paginationRowCount",propModel:t.rowCount,propOnChange:t.onRowCountChange,stateSelector:be.H2,changeEvent:"rowCountChange"});const u={setRowCount:o.useCallback((t=>{i!==t&&(r.debug("Setting 'rowCount' to",t),e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{rowCount:t})}))))}),[e,r,i])};(0,A.P)(e,u,"public");const d=o.useCallback(((r,o)=>{const l=(0,be.H2)(e);return o.exportOnlyDirtyModels&&null==t.rowCount&&null==t.initialState?.pagination?.rowCount?r:(0,n.A)({},r,{pagination:(0,n.A)({},r.pagination,{rowCount:l})})}),[e,t.rowCount,t.initialState?.pagination?.rowCount]),f=o.useCallback(((t,r)=>{const o=r.stateToRestore.pagination?.rowCount?r.stateToRestore.pagination.rowCount:(0,be.H2)(e);return e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{rowCount:o})}))),t}),[e]);Q(e,"exportState",d),Q(e,"restoreState",f);const g=o.useCallback((r=>{"client"!==t.paginationMode&&c.current&&r.pageSize!==c.current&&(c.current=r.pageSize,-1===i&&e.current.setPage(0))}),[t.paginationMode,c,i,e]);(0,F.cz)(e,"paginationModelChange",g),o.useEffect((()=>{"client"===t.paginationMode?e.current.setRowCount(l):null!=t.rowCount&&e.current.setRowCount(t.rowCount)}),[e,t.paginationMode,l,t.rowCount]);const m=!1===a.hasNextPage;o.useEffect((()=>{m&&-1===i&&e.current.setRowCount(s.pageSize*s.page+l)}),[e,l,m,i,s])})(e,t)})(r,t),((e,t)=>{const{getRowHeight:r,getRowSpacing:l,getEstimatedRowHeight:i}=t,a=o.useRef(Object.create(null)),s=o.useRef(-1),c=o.useRef(!1),u=(0,p.Nc)(e,ae.rf),d=(0,p.Nc)(e,w.ZI),f=(0,p.Nc)(e,be.M5),g=(0,p.Nc)(e,et.XU),h=(0,Fe.h)(e,t),b=(0,p.Nc)(e,m.$2),C=Ct(t.rowHeight,bt.E.rowHeight),v=Math.floor(C*u),x=o.useCallback((()=>{c.current=!1;const t=t=>{a.current[t.id]||(a.current[t.id]={sizes:{baseCenter:v},isResized:!1,autoHeight:!1,needsFirstMeasurement:!0});const{isResized:o,needsFirstMeasurement:s,sizes:d}=a.current[t.id];let p="number"==typeof v&&v>0?v:52;const f=d.baseCenter;if(o)p=f;else if(r){const e=r((0,n.A)({},t,{densityFactor:u}));"auto"===e?(p=s?(i?i((0,n.A)({},t,{densityFactor:u})):v)??v:f,c.current=!0,a.current[t.id].autoHeight=!0):(p=Ct(e,v),a.current[t.id].needsFirstMeasurement=!1,a.current[t.id].autoHeight=!1)}else a.current[t.id].needsFirstMeasurement=!1;const g={baseCenter:p};if(l){const r=e.current.getRowIndexRelativeToVisibleRows(t.id),o=l((0,n.A)({},t,{isFirstVisible:0===r,isLastVisible:r===h.rows.length-1,indexRelativeToCurrentPage:r}));g.spacingTop=o.top??0,g.spacingBottom=o.bottom??0}const m=e.current.unstable_applyPipeProcessors("rowHeight",g,t);return a.current[t.id].sizes=m,m},o=[],d=h.rows.reduce(((e,r)=>{o.push(e);let n=0;const l=t(r);for(const e in l){const t=l[e];"baseCenter"!==e&&(n+=t)}return e+l.baseCenter+n}),0);b?.top?.forEach((e=>{t(e)})),b?.bottom?.forEach((e=>{t(e)})),e.current.setState((e=>(0,n.A)({},e,{rowsMeta:{currentPageTotalHeight:d,positions:o}}))),c.current||(s.current=1/0),e.current.forceUpdate()}),[e,h.rows,v,r,l,i,b,u]),y=o.useCallback((e=>{const t=a.current[e];return t?t.sizes.baseCenter:v}),[v]),R=o.useCallback(((e,t)=>{a.current[e].sizes.baseCenter=t,a.current[e].isResized=!0,a.current[e].needsFirstMeasurement=!1,x()}),[x]),S=o.useMemo((()=>(0,ht.A)(x,t.rowPositionsDebounceMs)),[x,t.rowPositionsDebounceMs]),I=o.useCallback(((e,t)=>{if(!a.current[e]||!a.current[e].autoHeight)return;const r=a.current[e].sizes.baseCenter!==t;a.current[e].needsFirstMeasurement=!1,a.current[e].sizes.baseCenter=t,r&&S()}),[S]),M=o.useCallback((e=>a.current[e]?.autoHeight||!1),[]),k=o.useCallback((()=>s.current),[]),P=o.useCallback((e=>{c.current&&e>s.current&&(s.current=e)}),[]),E=o.useCallback((()=>{a.current={},x()}),[x]);o.useEffect((()=>{x()}),[v,d,f,g,x]),J(e,"rowHeight",x);const F={unstable_setLastMeasuredRowIndex:P,unstable_getRowHeight:y,unstable_getRowInternalSizes:e=>a.current[e]?.sizes,unstable_setRowHeight:R,unstable_storeRowHeightMeasurement:I,resetRowHeights:E},H={getLastMeasuredRowIndex:k,rowHasAutoHeight:M};(0,A.P)(e,F,"public"),(0,A.P)(e,H,"private")})(r,t),((e,t)=>{const r=(0,x.I)(),n=(0,K.q)(e,"useGridScroll"),l=e.current.columnHeadersContainerRef,i=e.current.virtualScrollerRef,a=(0,p.Nc)(e,w.em),s=o.useCallback((r=>{const o=(0,ct.z)(e.current.state),l=(0,m.H0)(e),s=(0,d.iv)(e);if(null!=r.rowIndex&&0===l||0===s.length)return!1;n.debug(`Scrolling to cell at row ${r.rowIndex}, col: ${r.colIndex} `);let c={};if(void 0!==r.colIndex){const t=(0,d.Sw)(e);let n;if(void 0!==r.rowIndex){const t=a[r.rowIndex]?.id,o=e.current.unstable_getCellColSpanInfo(t,r.colIndex);o&&!o.spannedByColSpan&&(n=o.cellProps.width)}void 0===n&&(n=s[r.colIndex].computedWidth),c.left=ut({clientHeight:o.viewportInnerSize.width,scrollTop:Math.abs(i.current.scrollLeft),offsetHeight:n,offsetTop:t[r.colIndex]})}if(void 0!==r.rowIndex){const n=(0,me.E)(e.current.state),l=(0,be.$i)(e),a=(0,be.ij)(e),s=t.pagination?r.rowIndex-l*a:r.rowIndex,u=n.positions[s+1]?n.positions[s+1]-n.positions[s]:n.currentPageTotalHeight-n.positions[s];c.top=ut({clientHeight:o.viewportInnerSize.height,scrollTop:i.current.scrollTop,offsetHeight:u,offsetTop:n.positions[s]})}return c=e.current.unstable_applyPipeProcessors("scrollToIndexes",c,r),(void 0!==typeof c.left||void 0!==typeof c.top)&&(e.current.scroll(c),!0)}),[n,e,i,t.pagination,a]),c={scroll:o.useCallback((e=>{if(i.current&&void 0!==e.left&&l.current){const t=r?-1:1;l.current.scrollLeft=e.left,i.current.scrollLeft=t*e.left,n.debug(`Scrolling left: ${e.left}`)}i.current&&void 0!==e.top&&(i.current.scrollTop=e.top,n.debug(`Scrolling top: ${e.top}`)),n.debug("Scrolling, updating container, and viewport")}),[i,r,l,n]),scrollToIndexes:s,getScrollPosition:o.useCallback((()=>i?.current?{top:i.current.scrollTop,left:i.current.scrollLeft}:{top:0,left:0}),[i])};(0,A.P)(e,c,"public")})(r,t),(e=>{const t=(0,K.q)(e,"useGridColumnMenu"),r=o.useCallback((r=>{const o=(0,X.$)(e.current.state),l=r;(!0!==o.open||l!==o.field)&&(e.current.setState((e=>e.columnMenu.open&&e.columnMenu.field===r?e:(t.debug("Opening Column Menu"),(0,n.A)({},e,{columnMenu:{open:!0,field:r}})))),e.current.hidePreferences(),e.current.forceUpdate())}),[e,t]),l=o.useCallback((()=>{const r=(0,X.$)(e.current.state);if(r.field){const t=(0,d.gv)(e),n=(0,d.FY)(e),o=(0,d.JR)(e);let l=r.field;if(t[l]||(l=o[0]),!1===n[l]){const e=o.filter((e=>e===l||!1!==n[e])),t=e.indexOf(l);l=e[t+1]||e[t-1]}e.current.setColumnHeaderFocus(l)}const o={open:!1,field:void 0};(o.open!==r.open||o.field!==r.field)&&(e.current.setState((e=>(t.debug("Hiding Column Menu"),(0,n.A)({},e,{columnMenu:o})))),e.current.forceUpdate())}),[e,t]),i=o.useCallback((n=>{t.debug("Toggle Column Menu");const o=(0,X.$)(e.current.state);o.open&&o.field===n?l():r(n)}),[e,t,r,l]),a={showColumnMenu:r,hideColumnMenu:l,toggleColumnMenu:i};(0,A.P)(e,a,"public"),(0,F.cz)(e,"columnResizeStart",l),(0,F.cz)(e,"virtualScrollerWheel",e.current.hideColumnMenu),(0,F.cz)(e,"virtualScrollerTouchMove",e.current.hideColumnMenu)})(r),pe(r,t),((e,t)=>{const r=null!==e.current.rootElementRef.current,l=(0,K.q)(e,"useGridPrintExport"),i=o.useRef(null),a=o.useRef(null),s=o.useRef({}),c=o.useRef([]),u=o.useRef();o.useEffect((()=>{i.current=(0,fe.A)(e.current.rootElementRef.current)}),[e,r]);const p=o.useCallback(((t,r,n)=>new Promise((o=>{const l=ce({apiRef:e,options:{fields:t,allColumns:r}}).map((e=>e.field)),i=(0,d.OV)(e),a={};i.forEach((e=>{a[e.field]=l.includes(e.field)})),n&&(a[G.f.field]=!0),e.current.setColumnVisibilityModel(a),o()}))),[e]),f=o.useCallback((t=>{const r=t({apiRef:e}).reduce(((t,r)=>{const n=e.current.getRow(r);return n[he.gb]||t.push(n),t}),[]);e.current.setRows(r)}),[e]),g=o.useCallback(((r,o)=>{const l=(0,n.A)({copyStyles:!0,hideToolbar:!1,hideFooter:!1,includeCheckboxes:!1},o),a=r.contentDocument;if(!a)return;const s=(0,me.E)(e.current.state),c=e.current.rootElementRef.current,u=c.cloneNode(!0);u.querySelector(`.${ge.x.main}`).style.overflow="visible",u.style.contain="size";let d=c.querySelector(`.${ge.x.toolbarContainer}`)?.offsetHeight||0,p=c.querySelector(`.${ge.x.footerContainer}`)?.offsetHeight||0;l.hideToolbar&&(u.querySelector(`.${ge.x.toolbarContainer}`)?.remove(),d=0),l.hideFooter&&(u.querySelector(`.${ge.x.footerContainer}`)?.remove(),p=0);const f=s.currentPageTotalHeight+(0,te.pe)(e,t)+d+p;if(u.style.height=`${f}px`,u.style.boxSizing="content-box",!l.hideFooter){const e=u.querySelector(`.${ge.x.footerContainer}`);e.style.position="absolute",e.style.width="100%",e.style.top=f-p+"px"}const g=document.createElement("div");g.appendChild(u),a.body.style.marginTop="0px",a.body.innerHTML=g.innerHTML;const m="function"==typeof l.pageStyle?l.pageStyle():l.pageStyle;if("string"==typeof m){const e=a.createElement("style");e.appendChild(a.createTextNode(m)),a.head.appendChild(e)}l.bodyClassName&&a.body.classList.add(...l.bodyClassName.split(" "));const h=[];if(l.copyStyles){const e=c.getRootNode(),t=("ShadowRoot"===e.constructor.name?e:i.current).querySelectorAll("style, link[rel='stylesheet']");for(let e=0;e<t.length;e+=1){const r=t[e];if("STYLE"===r.tagName){const e=a.createElement(r.tagName),t=r.sheet;if(t){let r="";for(let e=0;e<t.cssRules.length;e+=1)"string"==typeof t.cssRules[e].cssText&&(r+=`${t.cssRules[e].cssText}\r\n`);e.appendChild(a.createTextNode(r)),a.head.appendChild(e)}}else if(r.getAttribute("href")){const e=a.createElement(r.tagName);for(let t=0;t<r.attributes.length;t+=1){const n=r.attributes[t];n&&e.setAttribute(n.nodeName,n.nodeValue||"")}h.push(new Promise((t=>{e.addEventListener("load",(()=>t()))}))),a.head.appendChild(e)}}}Promise.all(h).then((()=>{r.contentWindow.print()}))}),[e,i,t]),m=o.useCallback((t=>{i.current.body.removeChild(t),e.current.restoreState(a.current||{}),a.current?.columns?.columnVisibilityModel||e.current.setColumnVisibilityModel(s.current),e.current.setState((e=>(0,n.A)({},e,{virtualization:u.current}))),e.current.setRows(c.current),a.current=null,s.current={},c.current=[]}),[e]),h={exportDataAsPrint:o.useCallback((async r=>{if(l.debug("Export data as Print"),!e.current.rootElementRef.current)throw new Error("MUI X: No grid root element available.");if(a.current=e.current.exportState(),s.current=(0,d.FY)(e),c.current=e.current.getSortedRows().filter((e=>!e[he.gb])),t.pagination){const t={page:0,pageSize:(0,w.O7)(e)};e.current.setState((e=>(0,n.A)({},e,{pagination:(0,n.A)({},e.pagination,{paginationModel:Ce(e.pagination,"DataGridPro",t)})})))}u.current=e.current.state.virtualization,e.current.setState((e=>(0,n.A)({},e,{virtualization:(0,n.A)({},e.virtualization,{enabled:!1,enabledForColumns:!1})}))),await p(r?.fields,r?.allColumns,r?.includeCheckboxes),f(r?.getRowsToExport??ue),await new Promise((e=>{requestAnimationFrame((()=>{e()}))}));const o=function(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}(r?.fileName);o.onload=()=>{g(o,r),o.contentWindow.matchMedia("print").addEventListener("change",(e=>{!1===e.matches&&m(o)}))},i.current.body.appendChild(o)}),[t,l,e,g,m,p,f])};(0,A.P)(e,h,"public");const b=o.useCallback(((e,t)=>t.printOptions?.disableToolbarButton?e:[...e,{component:(0,ne.jsx)(de.ME,{options:t.printOptions}),componentName:"printExport"}]),[]);Q(e,"exportMenu",b)})(r,t),((e,t)=>{const r=t.ignoreValueFormatterDuringExport,n=("object"==typeof r?r?.clipboardExport:r)||!1,l=t.clipboardCopyCellDelimiter,i=o.useCallback((t=>{if(!t.ctrlKey&&!t.metaKey||"c"!==t.key.toLowerCase()||t.shiftKey||t.altKey)return;if(r=t.target,window.getSelection()?.toString()||r&&(r.selectionEnd||0)-(r.selectionStart||0)>0)return;var r;let o="";if(e.current.getSelectedRows().size>0)o=e.current.getDataAsCsv({includeHeaders:!1,delimiter:l,shouldAppendQuotes:!1,escapeFormulas:!1});else{const t=(0,B.MO)(e);if(t){const r=e.current.getCellParams(t.id,t.field);o=_(r,{csvOptions:{delimiter:l,shouldAppendQuotes:!1,escapeFormulas:!1},ignoreValueFormatter:n})}}var i;o=e.current.unstable_applyPipeProcessors("clipboardCopy",o),o&&(i=o,navigator.clipboard?navigator.clipboard.writeText(i).catch((()=>{q(i)})):q(i),e.current.publishEvent("clipboardCopy",o))}),[e,n,l]);(0,V.h)(e,e.current.rootElementRef,"keydown",i),(0,F.re)(e,"clipboardCopy",t.onClipboardCopy)})(r,t),function(e,t){const r=(0,K.q)(e,"useResizeContainer"),l=o.useRef(!1),i=o.useRef(pt),a=(0,p.Nc)(e,ct.z),s=(0,p.Nc)(e,me.E),c=(0,p.Nc)(e,d.Q1),u=(0,p.Nc)(e,ae.rf),f=Math.floor(t.rowHeight*u),g=Math.floor(t.columnHeaderHeight*u),m=Math.floor((t.columnGroupHeaderHeight??t.columnHeaderHeight)*u),h=Math.floor((t.headerFilterHeight??t.columnHeaderHeight)*u),b=(w=(0,d.fc)(e),Math.round(w*10**6)/10**6);var w;const C=(0,te.pe)(e,t),v=c.left.reduce(((e,t)=>e+t.computedWidth),0),x=c.right.reduce(((e,t)=>e+t.computedWidth),0),[y,R]=o.useState(),S=o.useMemo((()=>function(e,t=166){let r,n;const o=()=>{r=void 0,e(...n)};function l(...e){n=e,void 0===r&&(r=setTimeout(o,t))}return l.clear=()=>{clearTimeout(r),r=void 0},l}(R,t.resizeThrottleMs)),[t.resizeThrottleMs]),I=o.useRef(),M=(0,ie.A)((t=>{e.current.setState((e=>(0,n.A)({},e,{dimensions:t})))})),k=o.useCallback((()=>{const t=e.current.mainElementRef.current;if(!t)return;const r=(n=t,(0,fe.A)(n).defaultView||window).getComputedStyle(t);var n;const o={width:parseFloat(r.width)||0,height:parseFloat(r.height)||0};I.current&&mt(I.current,o)||(e.current.publishEvent("resize",o),I.current=o)}),[e]),P=o.useCallback((()=>{const r=(0,ct.z)(e.current.state);if(!r.isReady)return 0;const n=(0,Fe.e)(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(t.getRowHeight){const t=(0,dt.nZ)(e),r=t.lastRowIndex-t.firstRowIndex;return Math.min(r-1,n.rows.length)}const o=Math.floor(r.viewportInnerSize.height/f);return Math.min(o,n.rows.length)}),[e,t.pagination,t.paginationMode,t.getRowHeight,f]),E=o.useCallback((()=>{const r=e.current.rootElementRef.current,n=(0,he.zo)(e),o=function(e,t,r){if(void 0!==r)return r;if(null===e||0===t)return 0;const n=(0,fe.A)(e).createElement("div");n.style.width="99px",n.style.height="99px",n.style.position="absolute",n.style.overflow="scroll",n.className="scrollDiv",e.appendChild(n);const o=n.offsetWidth-n.clientWidth;return e.removeChild(n),o}(r,b,t.scrollbarSize),l=C+n.top,a=n.bottom,c={width:b-v-x,height:s.currentPageTotalHeight};let u,d,p=!1,w=!1;if(t.autoHeight)w=!1,p=Math.round(b)>Math.round(i.current.width),u={width:i.current.width,height:l+a+c.height},d={width:Math.max(0,u.width-(w?o:0)),height:Math.max(0,u.height-(p?o:0))};else{u={width:i.current.width,height:i.current.height},d={width:Math.max(0,u.width-v-x),height:Math.max(0,u.height-l-a)};const e=c,t=d,r=e.width>t.width,n=e.height>t.height;(r||n)&&(w=n,p=e.width+(w?o:0)>t.width,p&&(w=e.height+o>t.height)),w&&(d.width-=o),p&&(d.height-=o)}const y=Math.max(u.width,b+(w?o:0)),A={width:b,height:l+c.height+a},R={isReady:!0,root:i.current,viewportOuterSize:u,viewportInnerSize:d,contentSize:c,minimumSize:A,hasScrollX:p,hasScrollY:w,scrollbarSize:o,headerHeight:g,groupHeaderHeight:m,headerFilterHeight:h,rowWidth:y,rowHeight:f,columnsTotalWidth:b,leftPinnedWidth:v,rightPinnedWidth:x,headersTotalHeight:C,topContainerHeight:l,bottomContainerHeight:a},S=e.current.state.dimensions;M(R),mt(R.viewportInnerSize,S.viewportInnerSize)||e.current.publishEvent("viewportInnerSizeChange",R.viewportInnerSize),e.current.updateRenderContext?.()}),[e,M,t.scrollbarSize,t.autoHeight,s.currentPageTotalHeight,f,g,m,h,b,C,v,x]),H={resize:k,getRootDimensions:()=>e.current.state.dimensions},O={updateDimensions:E,getViewportPageSize:P};(0,A.P)(e,H,"public"),(0,A.P)(e,O,"private"),(0,xe.A)((()=>{y&&(E(),e.current.publishEvent("debouncedResize",i.current))}),[e,y,E]);const T=e.current.rootElementRef.current;(0,xe.A)((()=>{if(!T)return;const e=(e,t)=>T.style.setProperty(e,t);e("--DataGrid-width",`${a.viewportOuterSize.width}px`),e("--DataGrid-hasScrollX",`${Number(a.hasScrollX)}`),e("--DataGrid-hasScrollY",`${Number(a.hasScrollY)}`),e("--DataGrid-scrollbarSize",`${a.scrollbarSize}px`),e("--DataGrid-rowWidth",`${a.rowWidth}px`),e("--DataGrid-columnsTotalWidth",`${a.columnsTotalWidth}px`),e("--DataGrid-leftPinnedWidth",`${a.leftPinnedWidth}px`),e("--DataGrid-rightPinnedWidth",`${a.rightPinnedWidth}px`),e("--DataGrid-headerHeight",`${a.headerHeight}px`),e("--DataGrid-headersTotalHeight",`${a.headersTotalHeight}px`),e("--DataGrid-topContainerHeight",`${a.topContainerHeight}px`),e("--DataGrid-bottomContainerHeight",`${a.bottomContainerHeight}px`),e("--height",`${a.rowHeight}px`)}),[T,a]);const D=o.useRef(!0),z=o.useCallback((e=>{i.current=e;const n=/jsdom/.test(window.navigator.userAgent);if(0!==e.height||l.current||t.autoHeight||n||(r.error(["The parent DOM element of the data grid has an empty height.","Please make sure that this element has an intrinsic height.","The grid displays with a height of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join("\n")),l.current=!0),0!==e.width||l.current||n||(r.error(["The parent DOM element of the data grid has an empty width.","Please make sure that this element has an intrinsic width.","The grid displays with a width of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join("\n")),l.current=!0),D.current)return R(e),void(D.current=!1);S(e)}),[t.autoHeight,S,r]);(0,xe.A)(E,[E]),(0,F.re)(e,"sortedRowsSet",E),(0,F.re)(e,"paginationModelChange",E),(0,F.re)(e,"columnsChange",E),(0,F.cz)(e,"resize",z),(0,F.re)(e,"debouncedResize",t.onResize)}(r,t),function(e,t){(0,F.re)(e,"columnHeaderClick",t.onColumnHeaderClick),(0,F.re)(e,"columnHeaderDoubleClick",t.onColumnHeaderDoubleClick),(0,F.re)(e,"columnHeaderOver",t.onColumnHeaderOver),(0,F.re)(e,"columnHeaderOut",t.onColumnHeaderOut),(0,F.re)(e,"columnHeaderEnter",t.onColumnHeaderEnter),(0,F.re)(e,"columnHeaderLeave",t.onColumnHeaderLeave),(0,F.re)(e,"cellClick",t.onCellClick),(0,F.re)(e,"cellDoubleClick",t.onCellDoubleClick),(0,F.re)(e,"cellKeyDown",t.onCellKeyDown),(0,F.re)(e,"preferencePanelClose",t.onPreferencePanelClose),(0,F.re)(e,"preferencePanelOpen",t.onPreferencePanelOpen),(0,F.re)(e,"menuOpen",t.onMenuOpen),(0,F.re)(e,"menuClose",t.onMenuClose),(0,F.re)(e,"rowDoubleClick",t.onRowDoubleClick),(0,F.re)(e,"rowClick",t.onRowClick),(0,F.re)(e,"stateChange",t.onStateChange)}(r,t),(e=>{const t={exportState:o.useCallback(((t={})=>e.current.unstable_applyPipeProcessors("exportState",{},t)),[e]),restoreState:o.useCallback((t=>{e.current.unstable_applyPipeProcessors("restoreState",{callbacks:[]},{stateToRestore:t}).callbacks.forEach((e=>{e()})),e.current.forceUpdate()}),[e])};(0,A.P)(e,t,"public")})(r),(0,Pt.lA)(r,t),r},qt={hooks:{useGridAriaAttributes:()=>{const e=(0,h.E)(),t=(0,f.A)(),r=(0,p.Nc)(e,d.iv),n=(0,p.Nc)(e,w.O7),o=(0,p.Nc)(e,g.aC),l=(0,p.Nc)(e,m.OQ);return{role:"grid","aria-colcount":r.length,"aria-rowcount":o+1+l+n,"aria-multiselectable":(0,b.c)(t)}},useGridRowAriaAttributes:()=>{const e=(0,h.E)(),t=(0,p.Nc)(e,C.Zk),r=(0,p.Nc)(e,g.aC);return o.useCallback(((n,o)=>{const l={},i=o+r+2;return l["aria-rowindex"]=i,e.current.isRowSelectable(n.id)&&(l["aria-selected"]=void 0!==t[n.id]),l}),[e,t,r])}}},Kt=o.forwardRef((function(e,t){const r=(0,bt.Y)(e),o=Ut(r.apiRef,r);return(0,ne.jsx)(v.X,{privateApiRef:o,configuration:qt,props:r,children:(0,ne.jsxs)(a.h,(0,n.A)({className:r.className,style:r.style,sx:r.sx,ref:t},r.forwardedProps,{children:[(0,ne.jsx)(s.k,{}),(0,ne.jsx)(c.S,{}),(0,ne.jsx)(u.r,{})]}))})})),Xt=o.memo(Kt);Kt.propTypes={apiRef:i().shape({current:i().object.isRequired}),"aria-label":i().string,"aria-labelledby":i().string,autoHeight:i().bool,autoPageSize:i().bool,autosizeOnMount:i().bool,autosizeOptions:i().shape({columns:i().arrayOf(i().string),expand:i().bool,includeHeaders:i().bool,includeOutliers:i().bool,outliersFactor:i().number}),cellModesModel:i().object,checkboxSelection:i().bool,classes:i().object,clipboardCopyCellDelimiter:i().string,columnBufferPx:i().number,columnGroupHeaderHeight:i().number,columnGroupingModel:i().arrayOf(i().object),columnHeaderHeight:i().number,columns:i().arrayOf(i().object).isRequired,columnVisibilityModel:i().object,density:i().oneOf(["comfortable","compact","standard"]),disableAutosize:i().bool,disableColumnFilter:i().bool,disableColumnMenu:i().bool,disableColumnResize:i().bool,disableColumnSelector:i().bool,disableColumnSorting:i().bool,disableDensitySelector:i().bool,disableEval:i().bool,disableMultipleRowSelection:i().bool,disableRowSelectionOnClick:i().bool,disableVirtualization:i().bool,editMode:i().oneOf(["cell","row"]),estimatedRowCount:i().number,experimentalFeatures:i().shape({warnIfFocusStateIsNotSynced:i().bool}),filterDebounceMs:i().number,filterMode:i().oneOf(["client","server"]),filterModel:i().shape({items:i().arrayOf(i().shape({field:i().string.isRequired,id:i().oneOfType([i().number,i().string]),operator:i().string.isRequired,value:i().any})).isRequired,logicOperator:i().oneOf(["and","or"]),quickFilterExcludeHiddenColumns:i().bool,quickFilterLogicOperator:i().oneOf(["and","or"]),quickFilterValues:i().array}),forwardedProps:i().object,getCellClassName:i().func,getDetailPanelContent:i().func,getEstimatedRowHeight:i().func,getRowClassName:i().func,getRowHeight:i().func,getRowId:i().func,getRowSpacing:i().func,hideFooter:i().bool,hideFooterPagination:i().bool,hideFooterSelectedRowCount:i().bool,ignoreDiacritics:i().bool,ignoreValueFormatterDuringExport:i().oneOfType([i().shape({clipboardExport:i().bool,csvExport:i().bool}),i().bool]),indeterminateCheckboxAction:i().oneOf(["deselect","select"]),initialState:i().object,isCellEditable:i().func,isRowSelectable:i().func,keepNonExistentRowsSelected:i().bool,loading:i().bool,localeText:i().object,logger:i().shape({debug:i().func.isRequired,error:i().func.isRequired,info:i().func.isRequired,warn:i().func.isRequired}),logLevel:i().oneOf(["debug","error","info","warn",!1]),nonce:i().string,onCellClick:i().func,onCellDoubleClick:i().func,onCellEditStart:i().func,onCellEditStop:i().func,onCellKeyDown:i().func,onCellModesModelChange:i().func,onClipboardCopy:i().func,onColumnHeaderClick:i().func,onColumnHeaderDoubleClick:i().func,onColumnHeaderEnter:i().func,onColumnHeaderLeave:i().func,onColumnHeaderOut:i().func,onColumnHeaderOver:i().func,onColumnOrderChange:i().func,onColumnResize:i().func,onColumnVisibilityModelChange:i().func,onColumnWidthChange:i().func,onDensityChange:i().func,onFilterModelChange:i().func,onMenuClose:i().func,onMenuOpen:i().func,onPaginationMetaChange:i().func,onPaginationModelChange:i().func,onPreferencePanelClose:i().func,onPreferencePanelOpen:i().func,onProcessRowUpdateError:i().func,onResize:i().func,onRowClick:i().func,onRowCountChange:i().func,onRowDoubleClick:i().func,onRowEditStart:i().func,onRowEditStop:i().func,onRowModesModelChange:i().func,onRowSelectionModelChange:i().func,onSortModelChange:i().func,onStateChange:i().func,pageSizeOptions:i().arrayOf(i().oneOfType([i().number,i().shape({label:i().string.isRequired,value:i().number.isRequired})]).isRequired),pagination:i().oneOf([!0]),paginationMeta:i().shape({hasNextPage:i().bool}),paginationMode:i().oneOf(["client","server"]),paginationModel:i().shape({page:i().number.isRequired,pageSize:i().number.isRequired}),processRowUpdate:i().func,resizeThrottleMs:i().number,rowBufferPx:i().number,rowCount:i().number,rowHeight:i().number,rowModesModel:i().object,rowPositionsDebounceMs:i().number,rows:i().arrayOf(i().object),rowSelection:i().bool,rowSelectionModel:i().oneOfType([i().arrayOf(i().oneOfType([i().number,i().string]).isRequired),i().number,i().string]),rowSpacingType:i().oneOf(["border","margin"]),scrollbarSize:i().number,showCellVerticalBorder:i().bool,showColumnVerticalBorder:i().bool,slotProps:i().object,slots:i().object,sortingMode:i().oneOf(["client","server"]),sortingOrder:i().arrayOf(i().oneOf(["asc","desc"])),sortModel:i().arrayOf(i().shape({field:i().string.isRequired,sort:i().oneOf(["asc","desc"])})),sx:i().oneOfType([i().arrayOf(i().oneOfType([i().func,i().object,i().bool])),i().func,i().object]),unstable_rowSpanning:i().bool}},35378:(e,t,r)=>{"use strict";r.d(t,{E:()=>Y,Y:()=>Q});var n=r(6614),o=r(7552),l=r(31049),i=r(52101),a=r(10736),s=r(92765),c=r(30943),u=r(55507),d=r(22987),p=r(29463),f=r(77484),g=r(56384),m=r(51820),h=r(16028),b=r(36014),w=r(63869),C=r(34299),v=r(33360),x=r(79162),y=r(66456),A=r(76404),R=r(1895),S=r(69500);const I=o.forwardRef((function(e,t){const r=(0,A.h)().current.getLocaleText("noResultsOverlayLabel");return(0,S.jsx)(R.$,(0,n.A)({ref:t},e,{children:r}))}));var M=r(32808),k=r(1343),P=r(48171),E=r(98360),F=r(5401),H=r(61723),O=r(93117),T=r(89003),D=r(20350),z=r(17125),L=r(15779),$=r(83673),j=r(64565);const N=["sortingOrder"],V=o.memo((function(e){const{sortingOrder:t}=e,r=(0,$.A)(e,N),o=(0,j.A)(),[l]=t,i="asc"===l?o.slots.columnSortedAscendingIcon:o.slots.columnSortedDescendingIcon;return i?(0,S.jsx)(i,(0,n.A)({},r)):null}));var B=r(80170),G=r(29629);const W=["native"],_={booleanCellTrueIcon:B.qb,booleanCellFalseIcon:B.yd,columnMenuIcon:B.A_,openFilterButtonIcon:B.Ui,filterPanelDeleteIcon:B.yd,columnFilteredIcon:B.lj,columnSelectorIcon:B.Gf,columnUnsortedIcon:V,columnSortedAscendingIcon:B.ay,columnSortedDescendingIcon:B.xC,columnResizeIcon:B.r$,densityCompactIcon:B.dc,densityStandardIcon:B.Bn,densityComfortableIcon:B.v$,exportIcon:B.U_,moreActionsIcon:B.c8,treeDataCollapseIcon:B.T5,treeDataExpandIcon:B.fX,groupingCriteriaCollapseIcon:B.T5,groupingCriteriaExpandIcon:B.fX,detailPanelExpandIcon:B.jt,detailPanelCollapseIcon:B.yk,rowReorderIcon:B.Cf,quickFilterIcon:B.Kw,quickFilterClearIcon:B.yd,columnMenuHideIcon:B.j8,columnMenuSortAscendingIcon:B.ay,columnMenuSortDescendingIcon:B.xC,columnMenuFilterIcon:B.lj,columnMenuManageColumnsIcon:B.jS,columnMenuClearIcon:B.hR,loadIcon:B.e2,filterPanelAddIcon:B.jt,filterPanelRemoveAllIcon:B.aC,columnReorderIcon:B.Cf},U=(0,n.A)({},_,{baseCheckbox:M.A,baseTextField:k.A,baseFormControl:P.A,baseSelect:E.A,baseButton:F.A,baseIconButton:H.A,baseInputAdornment:O.A,baseTooltip:T.A,basePopper:D.A,baseInputLabel:z.A,baseSelectOption:function(e){let{native:t}=e,r=(0,$.A)(e,W);return t?(0,S.jsx)("option",(0,n.A)({},r)):(0,S.jsx)(G.A,(0,n.A)({},r))},baseChip:L.A}),q=(0,n.A)({},U,{cell:v.LX,skeletonCell:a.k,columnHeaderFilterIconButton:s.f,columnHeaderSortIcon:c.J,columnMenu:y.aU,columnHeaders:x.f,detailPanels:function(e){return null},footer:u.C,footerRowCount:d.g,toolbar:null,pinnedRows:function(e){return null},loadingOverlay:p.b,noResultsOverlay:I,noRowsOverlay:f.h,pagination:g.h,filterPanel:m.v,columnsPanel:h.G,columnsManagement:b.D,panel:w.F,row:C.T});var K=r(10176);const X={disableMultipleColumnsFiltering:!0,disableMultipleColumnsSorting:!0,throttleRowsMs:void 0,hideFooterRowCount:!1,pagination:!0,checkboxSelectionVisibleOnly:!1,disableColumnReorder:!0,keepColumnPositionIfDraggedOutside:!1,signature:"DataGrid"},Y={autoHeight:!1,autoPageSize:!1,autosizeOnMount:!1,checkboxSelection:!1,checkboxSelectionVisibleOnly:!1,clipboardCopyCellDelimiter:"\t",columnBufferPx:150,columnHeaderHeight:56,disableAutosize:!1,disableColumnFilter:!1,disableColumnMenu:!1,disableColumnReorder:!1,disableColumnResize:!1,disableColumnSelector:!1,disableColumnSorting:!1,disableDensitySelector:!1,disableEval:!1,disableMultipleColumnsFiltering:!1,disableMultipleColumnsSorting:!1,disableMultipleRowSelection:!1,disableRowSelectionOnClick:!1,disableVirtualization:!1,editMode:K.RL.Cell,filterDebounceMs:150,filterMode:"client",hideFooter:!1,hideFooterPagination:!1,hideFooterRowCount:!1,hideFooterSelectedRowCount:!1,ignoreDiacritics:!1,ignoreValueFormatterDuringExport:!1,indeterminateCheckboxAction:"deselect",keepColumnPositionIfDraggedOutside:!1,keepNonExistentRowsSelected:!1,loading:!1,logger:console,logLevel:"error",pageSizeOptions:[25,50,100],pagination:!1,paginationMode:"client",resizeThrottleMs:60,rowBufferPx:150,rowHeight:52,rowPositionsDebounceMs:166,rows:[],rowSelection:!0,rowSpacingType:"margin",showCellVerticalBorder:!1,showColumnVerticalBorder:!1,sortingMode:"client",sortingOrder:["asc","desc",null],throttleRowsMs:0,unstable_rowSpanning:!1},Z=q,Q=e=>{const t=(c=(0,l.A)({props:e,name:"MuiDataGrid"}),o.useMemo((()=>function(e){const t=Object.keys(e);if(!t.some((e=>e.startsWith("aria-")||e.startsWith("data-"))))return e;const r={},n=e.forwardedProps??{};for(let o=0;o<t.length;o+=1){const l=t[o];l.startsWith("aria-")||l.startsWith("data-")?n[l]=e[l]:r[l]=e[l]}return r.forwardedProps=n,r}(c)),[c])),r=o.useMemo((()=>(0,n.A)({},i._,t.localeText)),[t.localeText]),a=o.useMemo((()=>function({defaultSlots:e,slots:t}){const r=t;if(!r||0===Object.keys(r).length)return e;const o=(0,n.A)({},e);return Object.keys(r).forEach((e=>{const t=e;void 0!==r[t]&&(o[t]=r[t])})),o}({defaultSlots:Z,slots:t.slots})),[t.slots]),s=o.useMemo((()=>Object.keys(Y).reduce(((e,r)=>(e[r]=t[r]??Y[r],e)),{})),[t]);var c;return o.useMemo((()=>(0,n.A)({},t,s,{localeText:r,slots:a},X)),[t,r,a,s])}},65325:(e,t,r)=>{"use strict";r.d(t,{C:()=>a,D:()=>i});var n=r(6614),o=r(59747),l=r(61828);const i="actions",a=(0,n.A)({},o.C,{sortable:!1,filterable:!1,aggregable:!1,width:100,display:"flex",align:"center",headerAlign:"center",headerName:"",disableColumnMenu:!0,disableExport:!0,renderCell:l.o,getApplyQuickFilterFn:void 0})},97830:(e,t,r)=>{"use strict";r.d(t,{H:()=>c});var n=r(6614),o=r(59747),l=r(2735),i=r(24411),a=r(14298),s=r(52446);const c=(0,n.A)({},o.C,{type:"boolean",display:"flex",align:"center",headerAlign:"center",renderCell:l.b,renderEditCell:i.b,sortComparator:a.Ou,valueFormatter:(e,t,r,n)=>e?n.current.getLocaleText("booleanCellTrueLabel"):n.current.getLocaleText("booleanCellFalseLabel"),filterOperators:(0,s.y)(),getApplyQuickFilterFn:void 0,aggregable:!1,pastedValueParser:e=>(e=>{switch(e.toLowerCase().trim()){case"true":case"yes":case"1":return!0;case"false":case"no":case"0":case"null":case"undefined":return!1;default:return}})(e)})},52446:(e,t,r)=>{"use strict";r.d(t,{y:()=>o});var n=r(19868);const o=()=>[{value:"is",getApplyFilterFn:e=>{if(!e.value)return null;const t="true"===String(e.value);return e=>Boolean(e)===t},InputComponent:n.h}]},92179:(e,t,r)=>{"use strict";r.d(t,{f:()=>u,t:()=>c});var n=r(6614),o=(r(7552),r(17279)),l=r(83861),i=r(82188),a=r(97830),s=r(69500);const c="__check__",u=(0,n.A)({},a.H,{type:"custom",field:c,width:50,resizable:!1,sortable:!1,filterable:!1,aggregable:!1,disableColumnMenu:!0,disableReorder:!0,disableExport:!0,getApplyQuickFilterFn:void 0,display:"flex",valueGetter:(e,t,r,n)=>void 0!==(0,i.Zk)(n)[n.current.getRowId(t)],renderHeader:e=>(0,s.jsx)(l.J,(0,n.A)({},e)),renderCell:e=>(0,s.jsx)(o.r,(0,n.A)({},e))})},54310:(e,t,r)=>{"use strict";r.d(t,{Bj:()=>d,SZ:()=>u,mP:()=>p,zT:()=>c});var n=r(6614),o=r(14298),l=r(30430),i=r(59747),a=r(26067);function s({value:e,columnType:t,rowId:r,field:n}){if(!(e instanceof Date))throw new Error([`MUI X: \`${t}\` column type only accepts \`Date\` objects as values.`,"Use `valueGetter` to transform the value into a `Date` object.",`Row ID: ${r}, field: "${n}".`].join("\n"))}const c=(e,t,r,n)=>e?(s({value:e,columnType:"date",rowId:n.current.getRowId(t),field:r.field}),e.toLocaleDateString()):"",u=(e,t,r,n)=>e?(s({value:e,columnType:"dateTime",rowId:n.current.getRowId(t),field:r.field}),e.toLocaleString()):"",d=(0,n.A)({},i.C,{type:"date",sortComparator:o.VE,valueFormatter:c,filterOperators:(0,l.Q)(),renderEditCell:a.z,pastedValueParser:e=>new Date(e)}),p=(0,n.A)({},i.C,{type:"dateTime",sortComparator:o.VE,valueFormatter:u,filterOperators:(0,l.Q)(!0),renderEditCell:a.z,pastedValueParser:e=>new Date(e)})},30430:(e,t,r)=>{"use strict";r.d(t,{Q:()=>l});var n=r(22762);function o(e,t,r,n){if(!e.value)return null;const o=new Date(e.value);r?o.setSeconds(0,0):(o.setMinutes(o.getMinutes()+o.getTimezoneOffset()),o.setHours(0,0,0,0));const l=o.getTime();return e=>{if(!e)return!1;if(n)return t(e.getTime(),l);const o=new Date(e);return r?o.setSeconds(0,0):o.setHours(0,0,0,0),t(o.getTime(),l)}}const l=e=>[{value:"is",getApplyFilterFn:t=>o(t,((e,t)=>e===t),e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"not",getApplyFilterFn:t=>o(t,((e,t)=>e!==t),e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"after",getApplyFilterFn:t=>o(t,((e,t)=>e>t),e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"onOrAfter",getApplyFilterFn:t=>o(t,((e,t)=>e>=t),e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"before",getApplyFilterFn:t=>o(t,((e,t)=>e<t),e,!e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"onOrBefore",getApplyFilterFn:t=>o(t,((e,t)=>e<=t),e),InputComponent:n.L,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"isEmpty",getApplyFilterFn:()=>e=>null==e,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFn:()=>e=>null!=e,requiresFilterValue:!1}]},23987:(e,t,r)=>{"use strict";r.d(t,{Z:()=>u,x:()=>c});var n=r(59747),o=r(21605),l=r(54310),i=r(97830),a=r(10830),s=r(65325);const c="string",u=()=>({string:n.C,number:o.g,date:l.Bj,dateTime:l.mP,boolean:i.H,singleSelect:a.m,[s.D]:s.C,custom:n.C})},21605:(e,t,r)=>{"use strict";r.d(t,{g:()=>s});var n=r(6614),o=r(14298),l=r(58766),i=r(81647),a=r(59747);const s=(0,n.A)({},a.C,{type:"number",align:"right",headerAlign:"right",sortComparator:o.Ou,valueParser:e=>""===e?null:Number(e),valueFormatter:e=>(0,l.Et)(e)?e.toLocaleString():e||"",filterOperators:(0,i.J)(),getApplyQuickFilterFn:i.h})},81647:(e,t,r)=>{"use strict";r.d(t,{J:()=>a,h:()=>i});var n=r(31525),o=r(33745);const l=e=>null==e?null:Number(e),i=e=>null==e||Number.isNaN(e)||""===e?null:t=>l(t)===l(e),a=()=>[{value:"=",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>l(t)===e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:"!=",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>l(t)!==e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:">",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>null!=t&&l(t)>e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:">=",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>null!=t&&l(t)>=e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:"<",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>null!=t&&l(t)<e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:"<=",getApplyFilterFn:e=>null==e.value||Number.isNaN(e.value)?null:t=>null!=t&&l(t)<=e.value,InputComponent:n.y,InputComponentProps:{type:"number"}},{value:"isEmpty",getApplyFilterFn:()=>e=>null==e,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFn:()=>e=>null!=e,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFn:e=>Array.isArray(e.value)&&0!==e.value.length?t=>null!=t&&e.value.includes(Number(t)):null,InputComponent:o.M,InputComponentProps:{type:"number"}}]},10830:(e,t,r)=>{"use strict";r.d(t,{m:()=>c});var n=r(6614),o=r(59747),l=r(57715),i=r(60150),a=r(12003),s=r(58766);const c=(0,n.A)({},o.C,{type:"singleSelect",getOptionLabel:e=>(0,s.Gv)(e)?e.label:String(e),getOptionValue:e=>(0,s.Gv)(e)?e.value:e,valueFormatter(e,t,r,n){const o=n.current.getRowId(t);if(!(0,a._W)(r))return"";const l=(0,a.KJ)(r,{id:o,row:t});if(null==e)return"";if(!l)return e;if("object"!=typeof l[0])return r.getOptionLabel(e);const i=l.find((t=>r.getOptionValue(t)===e));return i?r.getOptionLabel(i):""},renderEditCell:l.j,filterOperators:(0,i.m)(),pastedValueParser:(e,t,r)=>{const n=r,o=(0,a.KJ)(n)||[],l=n.getOptionValue;if(o.find((t=>l(t)===e)))return e}})},60150:(e,t,r)=>{"use strict";r.d(t,{m:()=>a});var n=r(24634),o=r(57134),l=r(58766);const i=e=>null!=e&&(0,l.Gv)(e)?e.value:e,a=()=>[{value:"is",getApplyFilterFn:e=>null==e.value||""===e.value?null:t=>i(t)===i(e.value),InputComponent:n.t},{value:"not",getApplyFilterFn:e=>null==e.value||""===e.value?null:t=>i(t)!==i(e.value),InputComponent:n.t},{value:"isAnyOf",getApplyFilterFn:e=>{if(!Array.isArray(e.value)||0===e.value.length)return null;const t=e.value.map(i);return e=>t.includes(i(e))},InputComponent:o.B}]},59747:(e,t,r)=>{"use strict";r.d(t,{C:()=>i});var n=r(3619),o=r(14298),l=r(21721);const i={width:100,minWidth:50,maxWidth:1/0,hideable:!0,sortable:!0,resizable:!0,filterable:!0,groupable:!0,pinnable:!0,aggregable:!0,editable:!1,sortComparator:o.Az,type:"string",align:"left",filterOperators:(0,l.n)(),renderEditCell:n.j,getApplyQuickFilterFn:l.X}},21721:(e,t,r)=>{"use strict";r.d(t,{X:()=>a,n:()=>d});var n=r(31525),o=r(58766),l=r(33745),i=r(43905);const a=e=>{if(!e)return null;const t=new RegExp((0,o.Nt)(e),"i");return(e,r,n,o)=>{let l=o.current.getRowFormattedValue(r,n);return o.current.ignoreDiacritics&&(l=(0,i.WL)(l)),null!=l&&t.test(l.toString())}},s=(e,t)=>r=>{if(!r.value)return null;const n=e?r.value:r.value.trim(),l=new RegExp((0,o.Nt)(n),"i");return e=>{if(null==e)return t;const r=l.test(String(e));return t?!r:r}},c=(e,t)=>r=>{if(!r.value)return null;const n=e?r.value:r.value.trim(),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return e=>{if(null==e)return t;const r=0===o.compare(n,e.toString());return t?!r:r}},u=e=>()=>t=>{const r=""===t||null==t;return e?!r:r},d=(e=!1)=>[{value:"contains",getApplyFilterFn:s(e,!1),InputComponent:n.y},{value:"doesNotContain",getApplyFilterFn:s(e,!0),InputComponent:n.y},{value:"equals",getApplyFilterFn:c(e,!1),InputComponent:n.y},{value:"doesNotEqual",getApplyFilterFn:c(e,!0),InputComponent:n.y},{value:"startsWith",getApplyFilterFn:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),n=new RegExp(`^${(0,o.Nt)(r)}.*$`,"i");return e=>null!=e&&n.test(e.toString())},InputComponent:n.y},{value:"endsWith",getApplyFilterFn:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),n=new RegExp(`.*${(0,o.Nt)(r)}$`,"i");return e=>null!=e&&n.test(e.toString())},InputComponent:n.y},{value:"isEmpty",getApplyFilterFn:u(!1),requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFn:u(!0),requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFn:t=>{if(!Array.isArray(t.value)||0===t.value.length)return null;const r=e?t.value:t.value.map((e=>e.trim())),n=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return e=>null!=e&&r.some((t=>0===n.compare(t,e.toString()||"")))},InputComponent:l.M}]},79162:(e,t,r)=>{"use strict";r.d(t,{f:()=>N});var n=r(6614),o=r(83673),l=r(7552),i=r(46345),a=r(93878),s=r(51148),c=r(93876),u=r(12274),d=r(64565),p=r(71115),f=r(89148),g=r(86775),m=r(29641),h=r(35281),b=r(11591),w=r(88519),C=r(57377),v=r(76959),x=r(8751),y=r(76404),A=r(50796),R=r(10930),S=r(4780),I=r(69500);function M(e){const{groupId:t,width:r,depth:o,maxDepth:i,fields:a,height:s,colIndex:c,hasFocus:p,tabIndex:f,isLastColumn:g,pinnedPosition:m,style:h,indexInSection:b,sectionLength:M,gridHasFiller:k}=e,P=(0,d.A)(),E=l.useRef(null),F=(0,y.h)(),H=(0,u.Nc)(F,x.ED),O=t?H[t]:{},{headerName:T=t??"",description:D="",headerAlign:z}=O;let L;const $=t&&H[t]?.renderHeaderGroup,j=l.useMemo((()=>({groupId:t,headerName:T,description:D,depth:o,maxDepth:i,fields:a,colIndex:c,isLastColumn:g})),[t,T,D,o,i,a,c,g]);t&&$&&(L=$(j));const N=(0,S.o)(m,b),V=(0,S.L)(m,b,M,P.showColumnVerticalBorder,k),B=(0,n.A)({},e,{classes:P.classes,showLeftBorder:N,showRightBorder:V,headerAlign:z,depth:o,isDragging:!1}),G=T??t,W=(0,C.A)(),_=null===t?`empty-group-cell-${W}`:t,U=(e=>{const{classes:t,headerAlign:r,isDragging:n,isLastColumn:o,showLeftBorder:l,showRightBorder:i,groupId:a,pinnedPosition:s}=e,c={root:["columnHeader","left"===r&&"columnHeader--alignLeft","center"===r&&"columnHeader--alignCenter","right"===r&&"columnHeader--alignRight",n&&"columnHeader--moving",i&&"columnHeader--withRightBorder",l&&"columnHeader--withLeftBorder","withBorderColor",null===a?"columnHeader--emptyGroup":"columnHeader--filledGroup","left"===s&&"columnHeader--pinnedLeft","right"===s&&"columnHeader--pinnedRight",o&&"columnHeader--last"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer","withBorderColor"],titleContainerContent:["columnHeaderTitleContainerContent"]};return(0,w.A)(c,v.B,t)})(B);l.useLayoutEffect((()=>{if(p){const e=E.current.querySelector('[tabindex="0"]')||E.current;e?.focus()}}),[F,p]);const q=l.useCallback((e=>t=>{(0,R.TA)(t)||F.current.publishEvent(e,j,t)}),[F,j]),K=l.useMemo((()=>({onKeyDown:q("columnGroupHeaderKeyDown"),onFocus:q("columnGroupHeaderFocus"),onBlur:q("columnGroupHeaderBlur")})),[q]),X="function"==typeof O.headerClassName?O.headerClassName(j):O.headerClassName;return(0,I.jsx)(A.a,(0,n.A)({ref:E,classes:U,columnMenuOpen:!1,colIndex:c,height:s,isResizing:!1,sortDirection:null,hasFocus:!1,tabIndex:f,isDraggable:!1,headerComponent:L,headerClassName:X,description:D,elementId:_,width:r,columnMenuIconButton:null,columnTitleIconButtons:null,resizable:!1,label:G,"aria-colspan":a.length,"data-fields":`|-${a.join("-|-")}-|`,style:h},K))}var k=r(80163),P=r(36155),E=r(85290),F=r(98571),H=r(38975);const O=(0,s.Ay)("div",{name:"MuiDataGrid",slot:"ColumnHeaderRow",overridesResolver:(e,t)=>t.columnHeaderRow})({display:"flex"});var T=r(24959);const D=["className"],z=(0,T.A)("div",{name:"MuiDataGrid",slot:"ColumnHeaders",overridesResolver:(e,t)=>t.columnHeaders})({display:"flex",flexDirection:"column",borderTopLeftRadius:"var(--unstable_DataGrid-radius)",borderTopRightRadius:"var(--unstable_DataGrid-radius)"}),L=l.forwardRef((function(e,t){const{className:r}=e,l=(0,o.A)(e,D),i=(0,d.A)(),s=(e=>{const{classes:t}=e;return(0,w.A)({root:["columnHeaders"]},v.B,t)})(i);return(0,I.jsx)(z,(0,n.A)({ref:t,className:(0,a.A)(r,s.root),ownerState:i},l,{role:"presentation"}))})),$=["className","visibleColumns","sortColumnLookup","filterColumnLookup","columnHeaderTabIndexState","columnGroupHeaderTabIndexState","columnHeaderFocus","columnGroupHeaderFocus","headerGroupingMaxDepth","columnMenuState","columnVisibility","columnGroupsHeaderStructure","hasOtherElementInTabSequence"],j=l.forwardRef((function(e,t){const{visibleColumns:r,sortColumnLookup:i,filterColumnLookup:s,columnHeaderTabIndexState:w,columnGroupHeaderTabIndexState:C,columnHeaderFocus:y,columnGroupHeaderFocus:A,headerGroupingMaxDepth:R,columnMenuState:S,columnVisibility:T,columnGroupsHeaderStructure:D,hasOtherElementInTabSequence:z}=e,j=(0,o.A)(e,$),{getInnerProps:N,getColumnHeadersRow:V,getColumnGroupHeadersRows:B}=(e=>{const{visibleColumns:t,sortColumnLookup:r,filterColumnLookup:o,columnHeaderTabIndexState:i,columnGroupHeaderTabIndexState:s,columnHeaderFocus:w,columnGroupHeaderFocus:C,headerGroupingMaxDepth:y,columnMenuState:A,columnVisibility:R,columnGroupsHeaderStructure:S,hasOtherElementInTabSequence:T}=e,[D,z]=l.useState(""),[L,$]=l.useState(""),j=(0,p.E)(),N=(0,c.I)(),V=(0,d.A)(),B=(0,u.Nc)(j,m.z),G=(0,u.Nc)(j,h.m5),W=(0,u.Nc)(j,x.TQ),_=(0,u.Nc)(j,k.Sw),U=(0,u.Nc)(j,h.EG),q=(0,u.Nc)(j,k.Q1),K=(0,u.Nc)(j,k.gv),X=(0,b.Yr)(_,U,q.left.length),Y=B.columnsTotalWidth<B.viewportOuterSize.width;l.useEffect((()=>{j.current.columnHeadersContainerRef.current.scrollLeft=0}),[j]);const Z=l.useCallback((e=>$(e.field)),[]),Q=l.useCallback((()=>$("")),[]),J=l.useCallback((e=>z(e.field)),[]),ee=l.useCallback((()=>z("")),[]),te=l.useMemo((()=>q.left.length?{firstColumnIndex:0,lastColumnIndex:q.left.length}:null),[q.left.length]),re=l.useMemo((()=>q.right.length?{firstColumnIndex:t.length-q.right.length,lastColumnIndex:t.length}:null),[q.right.length,t.length]);(0,f.cz)(j,"columnResizeStart",Z),(0,f.cz)(j,"columnResizeStop",Q),(0,f.cz)(j,"columnHeaderDragStart",J),(0,f.cz)(j,"columnHeaderDragEnd",ee);const ne=e=>{const{renderContext:r=U,maxLastColumn:n=t.length}=e||{},o=r.firstColumnIndex,l=G?r.lastColumnIndex:n;return{renderedColumns:t.slice(o,l),firstColumnToRender:o,lastColumnToRender:l}},oe=(e,t,r,n=!1)=>{const o=e?.position===P.K.RIGHT,i=void 0===e?.position,s=q.right.length>0&&o||0===q.right.length&&i,c=X-r;return(0,I.jsxs)(l.Fragment,{children:[i&&(0,I.jsx)("div",{role:"presentation",style:{width:c}}),t,i&&(0,I.jsx)("div",{role:"presentation",className:(0,a.A)(v.x.filler,n&&v.x["filler--borderBottom"])}),s&&(0,I.jsx)(E.t,{header:!0,pinnedRight:o,borderBottom:n,borderTop:!1})]})},le=({pinnedPosition:e,columnIndex:t,computedWidth:r})=>{let n;const o=e===P.K.LEFT,l=e===P.K.RIGHT;if(o||l){const l=(0,F.Y)(e,r,t,_,B);let i=o?"left":"right";N&&(i=o?"right":"left"),"left"===e&&(n={[i]:l}),"right"===e&&(n={[i]:l})}return n},ie=(e,t={})=>{const{renderedColumns:l,firstColumnToRender:a}=ne(e),s=[];for(let c=0;c<l.length;c+=1){const u=l[c],d=a+c,p=0===d,f=null!==i&&i.field===u.field||p&&!T?0:-1,m=null!==w&&w.field===u.field,h=A.open&&A.field===u.field,b=e?.position,C=le({pinnedPosition:b,columnIndex:d,computedWidth:u.computedWidth}),v=b===P.K.RIGHT?l[c-1]:l[c+1],x=!!v&&null!==w&&w.field===v.field,y=d+1===_.length-q.right.length;s.push((0,I.jsx)(g.d,(0,n.A)({},r[u.field],{columnMenuOpen:h,filterItemsCounter:o[u.field]&&o[u.field].length,headerHeight:B.headerHeight,isDragging:u.field===D,colDef:u,colIndex:d,isResizing:L===u.field,isLast:d===_.length-1,hasFocus:m,tabIndex:f,pinnedPosition:b,style:C,indexInSection:c,sectionLength:l.length,gridHasFiller:Y,isLastUnpinned:y,isSiblingFocused:x},t),u.field))}return oe(e,s,0)},ae=({depth:e,params:r})=>{const o=ne(r);if(0===o.renderedColumns.length)return null;const{renderedColumns:l,firstColumnToRender:i,lastColumnToRender:a}=o,c=S[e],u=t[i].field,d=W[u]?.[e]??null,p=c.findIndex((({groupId:e,columnFields:t})=>e===d&&t.includes(u))),f=t[a-1].field,g=W[f]?.[e]??null,m=c.findIndex((({groupId:e,columnFields:t})=>e===g&&t.includes(f))),h=c.slice(p,m+1).map((e=>(0,n.A)({},e,{columnFields:e.columnFields.filter((e=>!1!==R[e]))}))).filter((e=>e.columnFields.length>0)),b=h[0].columnFields.indexOf(u),w=h[0].columnFields.slice(0,b).reduce(((e,t)=>e+(K[t].computedWidth??0)),0);let v=i;const x=h.map((({groupId:n,columnFields:o},i)=>{const a=null!==C&&C.depth===e&&o.includes(C.field),c=null!==s&&s.depth===e&&o.includes(s.field)?0:-1,u={groupId:n,width:o.reduce(((e,t)=>e+K[t].computedWidth),0),fields:o,colIndex:v,hasFocus:a,tabIndex:c},d=r.position,p=le({pinnedPosition:d,columnIndex:v,computedWidth:u.width});v+=o.length;let f=i;return"left"===d&&(f=v-1),(0,I.jsx)(M,{groupId:n,width:u.width,fields:u.fields,colIndex:u.colIndex,depth:e,isLastColumn:u.colIndex===t.length-u.fields.length,maxDepth:y,height:B.groupHeaderHeight,hasFocus:a,tabIndex:c,pinnedPosition:d,style:p,indexInSection:f,sectionLength:l.length,gridHasFiller:Y},i)}));return oe(r,x,w)};return{renderContext:U,leftRenderContext:te,rightRenderContext:re,pinnedColumns:q,visibleColumns:t,getCellOffsetStyle:le,getFillers:oe,getColumnHeadersRow:()=>(0,I.jsxs)(O,{role:"row","aria-rowindex":y+1,ownerState:V,className:v.x["row--borderBottom"],children:[te&&ie({position:P.K.LEFT,renderContext:te,maxLastColumn:te.lastColumnIndex},{disableReorder:!0}),ie({renderContext:U,maxLastColumn:t.length-q.right.length}),re&&ie({position:P.K.RIGHT,renderContext:re,maxLastColumn:re.lastColumnIndex},{disableReorder:!0,separatorSide:H.j.Left})]}),getColumnsToRender:ne,getColumnGroupHeadersRows:()=>{if(0===y)return null;const e=[];for(let t=0;t<y;t+=1)e.push((0,I.jsxs)(O,{role:"row","aria-rowindex":t+1,ownerState:V,children:[te&&ae({depth:t,params:{position:P.K.LEFT,renderContext:te,maxLastColumn:te.lastColumnIndex}}),ae({depth:t,params:{renderContext:U}}),re&&ae({depth:t,params:{position:P.K.RIGHT,renderContext:re,maxLastColumn:re.lastColumnIndex}})]},t));return e},isDragging:!!D,getInnerProps:()=>({role:"rowgroup"})}})({visibleColumns:r,sortColumnLookup:i,filterColumnLookup:s,columnHeaderTabIndexState:w,columnGroupHeaderTabIndexState:C,columnHeaderFocus:y,columnGroupHeaderFocus:A,headerGroupingMaxDepth:R,columnMenuState:S,columnVisibility:T,columnGroupsHeaderStructure:D,hasOtherElementInTabSequence:z});return(0,I.jsxs)(L,(0,n.A)({ref:t},j,N(),{children:[B(),V()]}))})),N=(0,i.n)(j)},35825:(e,t,r)=>{"use strict";r.d(t,{S:()=>n});const n=r(7552).createContext(void 0)},55507:(e,t,r)=>{"use strict";r.d(t,{C:()=>g});var n=r(6614),o=r(7552),l=r(12274),i=r(4394),a=r(82188),s=r(2220),c=r(76404),u=r(43434),d=r(91681),p=r(64565),f=r(69500);const g=o.forwardRef((function(e,t){const r=(0,c.h)(),o=(0,p.A)(),g=(0,l.Nc)(r,i.O8),m=(0,l.Nc)(r,a.vF),h=(0,l.Nc)(r,s.RN),b=!o.hideFooterSelectedRowCount&&m>0?(0,f.jsx)(u.p,{selectedRowCount:m}):(0,f.jsx)("div",{}),w=o.hideFooterRowCount||o.pagination?null:(0,f.jsx)(o.slots.footerRowCount,(0,n.A)({},o.slotProps?.footerRowCount,{rowCount:g,visibleRowCount:h})),C=o.pagination&&!o.hideFooterPagination&&o.slots.pagination&&(0,f.jsx)(o.slots.pagination,(0,n.A)({},o.slotProps?.pagination));return(0,f.jsxs)(d.J,(0,n.A)({ref:t},e,{children:[b,w,C]}))}))},1074:(e,t,r)=>{"use strict";r.d(t,{k:()=>f});var n=r(6614),o=r(7552),l=r(64565),i=r(80163),a=r(12274),s=r(38577),c=r(48534),u=r(76404),d=r(69500);function p(){const e=(0,u.h)(),t=(0,a.Nc)(e,i.OV),r=(0,l.A)(),o=(0,a.Nc)(e,s._),p=e.current.unstable_applyPipeProcessors("preferencePanel",null,o.openedPanelValue??c.y.filters);return(0,d.jsx)(r.slots.panel,(0,n.A)({as:r.slots.basePopper,open:t.length>0&&o.open,id:o.panelId,"aria-labelledby":o.labelId},r.slotProps?.panel,r.slotProps?.basePopper,{children:p}))}function f(){const e=(0,l.A)();return(0,d.jsxs)(o.Fragment,{children:[(0,d.jsx)(p,{}),e.slots.toolbar&&(0,d.jsx)(e.slots.toolbar,(0,n.A)({},e.slotProps?.toolbar))]})}},29463:(e,t,r)=>{"use strict";r.d(t,{b:()=>H});var n=r(6614),o=r(83673),l=r(7552),i=r(84421),a=r(59705),s=r(1895),c=r(93878),u=r(24959),d=r(92325),p=r(88519),f=r(76404),g=r(64565),m=r(12274),h=r(29641),b=r(80163),w=r(36155),C=r(89148),v=r(76959),x=r(98571),y=r(4780),A=r(10930),R=r(85290),S=r(69500);const I=(0,u.A)("div",{name:"MuiDataGrid",slot:"SkeletonLoadingOverlay",overridesResolver:(e,t)=>t.skeletonLoadingOverlay})({minWidth:"100%",width:"max-content",height:"100%",overflow:"clip"}),M=e=>parseInt(e.getAttribute("data-colindex"),10),k=l.forwardRef((function(e,t){const r=(0,g.A)(),{slots:o}=r,i=(e=>{const{classes:t}=e;return(0,p.A)({root:["skeletonLoadingOverlay"]},v.B,t)})({classes:r.classes}),a=l.useRef(null),s=(0,d.A)(a,t),u=(0,f.h)(),k=(0,m.Nc)(u,h.z),P=k?.viewportInnerSize.height??0,E=Math.ceil(P/k.rowHeight),F=(0,m.Nc)(u,b.fc),H=(0,m.Nc)(u,b.Sw),O=l.useMemo((()=>H.filter((e=>e<=F)).length),[F,H]),T=(0,m.Nc)(u,b.iv),D=l.useMemo((()=>T.slice(0,O)),[T,O]),z=(0,m.Nc)(u,b.Q1),L=l.useCallback(((e,t,r)=>{const n=(0,x.Y)(r,e,t,H,k);return{[r]:n}}),[k,H]),$=l.useCallback((e=>-1!==z.left.findIndex((t=>t.field===e))?w.K.LEFT:-1!==z.right.findIndex((t=>t.field===e))?w.K.RIGHT:void 0),[z.left,z.right]),j=l.useMemo((()=>{const e=[];for(let t=0;t<E;t+=1){const l=[];for(let e=0;e<D.length;e+=1){const i=D[e],a=$(i.field),s=a===w.K.LEFT,u=a===w.K.RIGHT,d=a?z[a].length:D.length-z.left.length-z.right.length,p=a?z[a].findIndex((e=>e.field===i.field)):e-z.left.length,f=a&&L(i.computedWidth,e,a),g=k.columnsTotalWidth<k.viewportOuterSize.width,m=(0,y.L)(a,p,d,r.showCellVerticalBorder,g),h=(0,y.o)(a,p),b=e===D.length-1,C=u&&0===p,x=C&&g,A=b&&!C&&g,I=k.viewportOuterSize.width-k.columnsTotalWidth,M=Math.max(0,I),P=(0,S.jsx)(o.skeletonCell,{width:M,empty:!0},`skeleton-filler-column-${t}`),E=k.hasScrollY?k.scrollbarSize:0,F=b&&0!==E;x&&l.push(P),l.push((0,S.jsx)(o.skeletonCell,{field:i.field,type:i.type,align:i.align,width:"var(--width)",height:k.rowHeight,"data-colindex":e,className:(0,c.A)(s&&v.x["cell--pinnedLeft"],u&&v.x["cell--pinnedRight"],m&&v.x["cell--withRightBorder"],h&&v.x["cell--withLeftBorder"]),style:(0,n.A)({"--width":`${i.computedWidth}px`},f)},`skeleton-column-${t}-${i.field}`)),A&&l.push(P),F&&l.push((0,S.jsx)(R.t,{pinnedRight:z.right.length>0},`skeleton-scrollbar-filler-${t}`))}e.push((0,S.jsx)("div",{className:(0,c.A)(v.x.row,v.x.rowSkeleton,0===t&&v.x["row--firstVisible"]),children:l},`skeleton-row-${t}`))}return e}),[o,D,z,E,r.showCellVerticalBorder,k.columnsTotalWidth,k.viewportOuterSize.width,k.rowHeight,k.hasScrollY,k.scrollbarSize,$,L]);return(0,C.cz)(u,"columnResize",(e=>{const{colDef:t,width:r}=e,n=a.current?.querySelectorAll(`[data-field="${(0,A.AP)(t.field)}"]`);if(!n)throw new Error("MUI X: Expected skeleton cells to be defined with `data-field` attribute.");const o=D.findIndex((e=>e.field===t.field)),l=$(t.field),i=l===w.K.LEFT,s=l===w.K.RIGHT,c=getComputedStyle(n[0]).getPropertyValue("--width"),u=parseInt(c,10)-r;if(n&&n.forEach((e=>{e.style.setProperty("--width",`${r}px`)})),i){const e=a.current?.querySelectorAll(`.${v.x["cell--pinnedLeft"]}`);e?.forEach((e=>{M(e)>o&&(e.style.left=parseInt(getComputedStyle(e).left,10)-u+"px")}))}if(s){const e=a.current?.querySelectorAll(`.${v.x["cell--pinnedRight"]}`);e?.forEach((e=>{M(e)<o&&(e.style.right=`${parseInt(getComputedStyle(e).right,10)+u}px`)}))}})),(0,S.jsx)(I,(0,n.A)({className:i.root,ref:s},e,{children:j}))}));var P=r(4394);const E=["variant","noRowsVariant","style"],F={"circular-progress":{component:a.A,style:{}},"linear-progress":{component:i.A,style:{display:"block"}},skeleton:{component:k,style:{display:"block"}}},H=l.forwardRef((function(e,t){const{variant:r="circular-progress",noRowsVariant:l="circular-progress",style:i}=e,a=(0,o.A)(e,E),c=(0,f.h)(),u=(0,m.Nc)(c,P.H0),d=F[0===u?l:r];return(0,S.jsx)(s.$,(0,n.A)({ref:t,style:(0,n.A)({},d.style,i)},a,{children:(0,S.jsx)(d.component,{})}))}))},77484:(e,t,r)=>{"use strict";r.d(t,{h:()=>s});var n=r(6614),o=r(7552),l=r(76404),i=r(1895),a=r(69500);const s=o.forwardRef((function(e,t){const r=(0,l.h)().current.getLocaleText("noRowsLabel");return(0,a.jsx)(i.$,(0,n.A)({ref:t},e,{children:r}))}))},56384:(e,t,r)=>{"use strict";r.d(t,{h:()=>m});var n=r(6614),o=r(7552),l=r(51148),i=r(8565),a=r(85663),s=r(12274),c=r(76404),u=r(64565),d=r(24940),p=r(69500);const f=(0,l.Ay)(i.A)((({theme:e})=>({maxHeight:"calc(100% + 1px)",[`& .${a.A.selectLabel}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"block"}},[`& .${a.A.input}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"inline-flex"}}}))),g=({from:e,to:t,count:r,estimated:n})=>n?`${e}–${t} of ${-1!==r?r:`more than ${n>t?n:t}`}`:`${e}–${t} of ${-1!==r?r:`more than ${t}`}`,m=o.forwardRef((function(e,t){const r=(0,c.h)(),l=(0,u.A)(),i=(0,s.Nc)(r,d.lN),a=(0,s.Nc)(r,d.H2),m=(0,s.Nc)(r,d.O),{paginationMode:h,loading:b,estimatedRowCount:w}=l,C=o.useMemo((()=>-1===a&&"server"===h&&b?{backIconButtonProps:{disabled:!0},nextIconButtonProps:{disabled:!0}}:{}),[b,h,a]),v=o.useMemo((()=>Math.max(0,m-1)),[m]),x=o.useMemo((()=>-1===a||i.page<=v?i.page:v),[v,i.page,a]),y=o.useCallback((e=>{const t=Number(e.target.value);r.current.setPageSize(t)}),[r]),A=o.useCallback(((e,t)=>{r.current.setPage(t)}),[r]),R=(e=>{for(let t=0;t<l.pageSizeOptions.length;t+=1){const r=l.pageSizeOptions[t];if("number"==typeof r){if(r===e)return!0}else if(r.value===e)return!0}return!1})(i.pageSize)?l.pageSizeOptions:[],S=r.current.getLocaleText("MuiTablePagination"),I=(M=S.labelDisplayedRows||g,k=w,({from:e,to:t,count:r,page:n})=>M({from:e,to:t,count:r,page:n,estimated:k}));var M,k;return(0,p.jsx)(f,(0,n.A)({ref:t,component:"div",count:a,page:x,rowsPerPageOptions:R,rowsPerPage:i.pageSize,onPageChange:A,onRowsPerPageChange:y},C,S,{labelDisplayedRows:I},e))}))},34299:(e,t,r)=>{"use strict";r.d(t,{T:()=>H});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(92325),s=r(46345),c=r(10176),u=r(76404),d=r(76959),p=r(88519),f=r(64565),g=r(80163),m=r(12274),h=r(23392),b=r(10930),w=r(92179),C=r(65325),v=r(59340),x=r(43026),y=r(4394),A=r(62185),R=r(33360),S=r(85290),I=r(98571),M=r(68337),k=r(69500);const P=["selected","rowId","row","index","style","rowHeight","className","visibleColumns","pinnedColumns","offsetTop","offsetLeft","dimensions","renderContext","focusedColumnIndex","isFirstVisible","isLastVisible","isNotVisible","showBottomBorder","focusedCell","tabbableCell","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver"];function E({width:e}){return e?(0,k.jsx)("div",{role:"presentation",className:(0,i.A)(d.x.cell,d.x.cellEmpty),style:{"--width":`${e}px`}}):null}const F=l.forwardRef((function(e,t){const{selected:r,rowId:s,row:F,index:H,style:O,rowHeight:T,className:D,visibleColumns:z,pinnedColumns:L,offsetLeft:$,dimensions:j,renderContext:N,focusedColumnIndex:V,isFirstVisible:B,isLastVisible:G,isNotVisible:W,showBottomBorder:_,onClick:U,onDoubleClick:q,onMouseEnter:K,onMouseLeave:X,onMouseOut:Y,onMouseOver:Z}=e,Q=(0,o.A)(e,P),J=(0,u.h)(),ee=(0,M.Q)(),te=l.useRef(null),re=(0,f.A)(),ne=(0,h.h)(J,re),oe=(0,m.Nc)(J,x.XU),le=(0,m.Nc)(J,y.V2),ie=(0,m.Nc)(J,g.Sw),ae=(0,m.Nc)(J,A.w),se=(0,a.A)(te,t),ce=J.current.getRowNode(s),ue=j.hasScrollY?j.scrollbarSize:0,de=j.columnsTotalWidth<j.viewportOuterSize.width,pe=J.current.getRowMode(s)===c.V_.Edit,fe=re.editMode===c.RL.Row,ge=void 0!==V,me=ge&&V>=L.left.length&&V<N.firstColumnIndex,he=ge&&V<z.length-L.right.length&&V>=N.lastColumnIndex,be=function(e,t){return(0,p.A)(t,d.B,e)}(re.classes,{root:["row",r&&"selected",fe&&"row--editable",pe&&"row--editing",B&&"row--firstVisible",G&&"row--lastVisible",_&&"row--borderBottom","auto"===T&&"row--dynamicHeight"]}),we=ee.hooks.useGridRowAriaAttributes();l.useLayoutEffect((()=>{if(ne.range){const e=J.current.getRowIndexRelativeToVisibleRows(s);null!=e&&J.current.unstable_setLastMeasuredRowIndex(e)}const e=te.current;if(!e||"auto"!==T||"undefined"==typeof ResizeObserver)return;const t=new ResizeObserver((e=>{const[t]=e,r=t.borderBoxSize&&t.borderBoxSize.length>0?t.borderBoxSize[0].blockSize:t.contentRect.height;J.current.unstable_storeRowHeightMeasurement(s,r)}));return t.observe(e),()=>t.disconnect()}),[J,ne.range,H,T,s]);const Ce=l.useCallback(((e,t)=>r=>{(0,b.TA)(r)||J.current.getRow(s)&&(J.current.publishEvent(e,J.current.getRowParams(s),r),t&&t(r))}),[J,s]),ve=l.useCallback((e=>{const t=(0,b.fl)(e.target,d.x.cell),r=t?.getAttribute("data-field");if(r){if(r===w.f.field)return;if(r===v.U)return;if("__reorder__"===r)return;if(J.current.getCellMode(s,r)===c.bs.Edit)return;const e=J.current.getColumn(r);if(e?.type===C.D)return}Ce("rowClick",U)(e)}),[J,U,Ce,s]),{slots:xe,slotProps:ye,disableColumnReorder:Ae}=re,Re=re.rowReordering,Se=(0,m.Nc)(J,(()=>(0,n.A)({},J.current.unstable_getRowInternalSizes(s))),m.TJ);let Ie=T;if("auto"===Ie&&Se){const e=1,t=Se.baseCenter??0;t>0&&e>1&&(Ie=t)}const Me=l.useMemo((()=>{if(W)return{opacity:0,width:0,height:0};const e=(0,n.A)({},O,{maxHeight:"auto"===T?"none":T,minHeight:Ie,"--height":"number"==typeof T?`${T}px`:T});if(Se?.spacingTop&&(e["border"===re.rowSpacingType?"borderTopWidth":"marginTop"]=Se.spacingTop),Se?.spacingBottom){const t="border"===re.rowSpacingType?"borderBottomWidth":"marginBottom";let r=e[t];"number"!=typeof r&&(r=parseInt(r||"0",10)),r+=Se.spacingBottom,e[t]=r}return e}),[W,T,O,Ie,Se,re.rowSpacingType]),ke=J.current.unstable_applyPipeProcessors("rowClassName",[],s),Pe=ce?we(ce,H):void 0;if("function"==typeof re.getRowClassName){const e=H-(ne.range?.firstRowIndex||0),t=(0,n.A)({},J.current.getRowParams(s),{isFirstVisible:0===e,isLastVisible:e===ne.rows.length-1,indexRelativeToCurrentPage:e});ke.push(re.getRowClassName(t))}const Ee=(e,t,r,o,l=R.UP.NONE)=>{const i=J.current.unstable_getCellColSpanInfo(s,r);if(i?.spannedByColSpan)return null;const a=i?.cellProps.width??e.computedWidth,c=i?.cellProps.colSpan??1,u=(0,I.Y)(R.gB[l],e.computedWidth,r,ie,j);if("skeletonRow"===ce?.type)return(0,k.jsx)(xe.skeletonCell,{type:e.type,width:a,height:T,field:e.field,align:e.align},e.field);const d=ae[s]?.[e.field]??null,p="__reorder__"===e.field,f=Object.keys(ae).length>0,g=!(Ae||e.disableReorder),m=Re&&!oe.length&&le<=1&&!f,h=!(g||p&&m),b=l===R.UP.VIRTUAL;return(0,k.jsx)(xe.cell,(0,n.A)({column:e,width:a,rowId:s,align:e.align||"left",colIndex:r,colSpan:c,disableDragEvents:h,editCellState:d,isNotVisible:b,pinnedOffset:u,pinnedPosition:l,sectionIndex:t,sectionLength:o,gridHasFiller:de},ye?.cell),e.field)};if(!ce)return null;const Fe=L.left.map(((e,t)=>Ee(e,t,t,L.left.length,R.UP.LEFT))),He=L.right.map(((e,t)=>{const r=z.length-L.right.length+t;return Ee(e,t,r,L.right.length,R.UP.RIGHT)})),Oe=z.length-L.left.length-L.right.length,Te=[];me&&Te.push(Ee(z[V],V-L.left.length,V,Oe,R.UP.VIRTUAL));for(let e=N.firstColumnIndex;e<N.lastColumnIndex;e+=1){const t=z[e],r=e-L.left.length;Te.push(Ee(t,r,e,Oe))}he&&Te.push(Ee(z[V],V-L.left.length,V,Oe,R.UP.VIRTUAL));const De=F?{onClick:ve,onDoubleClick:Ce("rowDoubleClick",q),onMouseEnter:Ce("rowMouseEnter",K),onMouseLeave:Ce("rowMouseLeave",X),onMouseOut:Ce("rowMouseOut",Y),onMouseOver:Ce("rowMouseOver",Z)}:null,ze=j.viewportOuterSize.width-j.columnsTotalWidth-ue,Le=Math.max(0,ze);return(0,k.jsxs)("div",(0,n.A)({ref:se,"data-id":s,"data-rowindex":H,role:"row",className:(0,i.A)(...ke,be.root,D),style:Me},Pe,De,Q,{children:[Fe,(0,k.jsx)("div",{role:"presentation",className:d.x.cellOffsetLeft,style:{width:$}}),Te,Le>0&&(0,k.jsx)(E,{width:Le}),He.length>0&&(0,k.jsx)("div",{role:"presentation",className:d.x.filler}),He,0!==ue&&(0,k.jsx)(S.t,{pinnedRight:L.right.length>0})]}))})),H=(0,s.n)(F)},22987:(e,t,r)=>{"use strict";r.d(t,{g:()=>m});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(76404),u=r(76959),d=r(64565),p=r(69500);const f=["className","rowCount","visibleRowCount"],g=(0,s.A)("div",{name:"MuiDataGrid",slot:"RowCount",overridesResolver:(e,t)=>t.rowCount})((({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2)}))),m=l.forwardRef((function(e,t){const{className:r,rowCount:l,visibleRowCount:s}=e,m=(0,o.A)(e,f),h=(0,c.h)(),b=(0,d.A)(),w=(e=>{const{classes:t}=e;return(0,a.A)({root:["rowCount"]},u.B,t)})(b);if(0===l)return null;const C=s<l?h.current.getLocaleText("footerTotalVisibleRows")(s,l):l.toLocaleString();return(0,p.jsxs)(g,(0,n.A)({ref:t,className:(0,i.A)(w.root,r),ownerState:b},m,{children:[h.current.getLocaleText("footerTotalRows")," ",C]}))}))},85290:(e,t,r)=>{"use strict";r.d(t,{t:()=>a}),r(7552);var n=r(93878),o=r(76959),l=r(69500);const i={root:o.x.scrollbarFiller,header:o.x["scrollbarFiller--header"],borderTop:o.x["scrollbarFiller--borderTop"],borderBottom:o.x["scrollbarFiller--borderBottom"],pinnedRight:o.x["scrollbarFiller--pinnedRight"]};function a({header:e,borderTop:t=!0,borderBottom:r,pinnedRight:o}){return(0,l.jsx)("div",{role:"presentation",className:(0,n.A)(i.root,e&&i.header,t&&i.borderTop,r&&i.borderBottom,o&&i.pinnedRight)})}},43434:(e,t,r)=>{"use strict";r.d(t,{p:()=>m});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(76404),u=r(76959),d=r(64565),p=r(69500);const f=["className","selectedRowCount"],g=(0,s.A)("div",{name:"MuiDataGrid",slot:"SelectedRowCount",overridesResolver:(e,t)=>t.selectedRowCount})((({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2),visibility:"hidden",width:0,height:0,[e.breakpoints.up("sm")]:{visibility:"visible",width:"auto",height:"auto"}}))),m=l.forwardRef((function(e,t){const{className:r,selectedRowCount:l}=e,s=(0,o.A)(e,f),m=(0,c.h)(),h=(0,d.A)(),b=(e=>{const{classes:t}=e;return(0,a.A)({root:["selectedRowCount"]},u.B,t)})(h),w=m.current.getLocaleText("footerRowSelected")(l);return(0,p.jsx)(g,(0,n.A)({ref:t,className:(0,i.A)(b.root,r),ownerState:h},s,{children:w}))}))},98114:(e,t,r)=>{"use strict";r.d(t,{r:()=>i});var n=r(6614),o=(r(7552),r(64565)),l=r(69500);function i(){const e=(0,o.A)();return e.hideFooter?null:(0,l.jsx)(e.slots.footer,(0,n.A)({},e.slotProps?.footer))}},80677:(e,t,r)=>{"use strict";r.d(t,{I:()=>C});var n=r(6614),o=(r(7552),r(24959)),l=r(88519),i=r(93878),a=r(12274),s=r(29641),c=r(76404),u=r(64565),d=r(23392),p=r(59458),f=r(76959),g=r(69500);const m=(0,o.A)("div",{name:"MuiDataGrid",slot:"OverlayWrapper",shouldForwardProp:e=>"overlayType"!==e&&"loadingOverlayVariant"!==e,overridesResolver:(e,t)=>t.overlayWrapper})((({overlayType:e,loadingOverlayVariant:t})=>"skeleton"!==t?{position:"sticky",top:"var(--DataGrid-headersTotalHeight)",left:0,width:0,height:0,zIndex:"loadingOverlay"===e?5:4}:{})),h=(0,o.A)("div",{name:"MuiDataGrid",slot:"OverlayWrapperInner",shouldForwardProp:e=>"overlayType"!==e&&"loadingOverlayVariant"!==e,overridesResolver:(e,t)=>t.overlayWrapperInner})({}),b=e=>{const{classes:t}=e;return(0,l.A)({root:["overlayWrapper"],inner:["overlayWrapperInner"]},f.B,t)};function w(e){const t=(0,c.h)(),r=(0,u.A)(),o=(0,d.h)(t,r),l=(0,a.Nc)(t,s.z);let f=l.viewportOuterSize.height-l.topContainerHeight-l.bottomContainerHeight-(l.hasScrollX?l.scrollbarSize:0);(r.autoHeight&&0===o.rows.length||0===f)&&(f=(0,p.OM)(t));const w=b((0,n.A)({},e,{classes:r.classes}));return(0,g.jsx)(m,(0,n.A)({className:(0,i.A)(w.root)},e,{children:(0,g.jsx)(h,(0,n.A)({className:(0,i.A)(w.inner),style:{height:f,width:l.viewportOuterSize.width}},e))}))}function C(e){const{overlayType:t}=e,r=(0,u.A)();if(!t)return null;const o=r.slots?.[t],l=r.slotProps?.[t];return(0,g.jsx)(w,(0,n.A)({},e,{children:(0,g.jsx)(o,(0,n.A)({},l))}))}},61828:(e,t,r)=>{"use strict";r.d(t,{i:()=>h,o:()=>b});var n=r(6614),o=r(83673),l=r(7552),i=r(6679),a=r(93876),s=r(57377),c=r(76959),u=r(83749),d=r(64565),p=r(76404),f=r(69500);const g=["api","colDef","id","hasFocus","isEditable","field","value","formattedValue","row","rowNode","cellMode","tabIndex","position","focusElementRef"],m=e=>"function"==typeof e.getActions;function h(e){const{colDef:t,id:r,hasFocus:h,tabIndex:b,position:w="bottom-end",focusElementRef:C}=e,v=(0,o.A)(e,g),[x,y]=l.useState(-1),[A,R]=l.useState(!1),S=(0,p.h)(),I=l.useRef(null),M=l.useRef(null),k=l.useRef(!1),P=l.useRef({}),E=(0,a.I)(),F=(0,s.A)(),H=(0,s.A)(),O=(0,d.A)();if(!m(t))throw new Error("MUI X: Missing the `getActions` property in the `GridColDef`.");const T=t.getActions(S.current.getRowParams(r)),D=T.filter((e=>!e.props.showInMenu)),z=T.filter((e=>e.props.showInMenu)),L=D.length+(z.length?1:0);l.useLayoutEffect((()=>{h||Object.entries(P.current).forEach((([e,t])=>{t?.stop({},(()=>{delete P.current[e]}))}))}),[h]),l.useEffect((()=>{x<0||!I.current||x>=I.current.children.length||I.current.children[x].focus({preventScroll:!0})}),[x]),l.useEffect((()=>{h||(y(-1),k.current=!1)}),[h]),l.useImperativeHandle(C,(()=>({focus(){if(!k.current){const e=T.findIndex((e=>!e.props.disabled));y(e)}}})),[T]),l.useEffect((()=>{x>=L&&y(L-1)}),[x,L]);const $=()=>{R(!1)},j=e=>t=>{P.current[e]=t},N=(e,t)=>r=>{y(e),k.current=!0,t&&t(r)};return(0,f.jsxs)("div",(0,n.A)({role:"menu",ref:I,tabIndex:-1,className:c.x.actionsCell,onKeyDown:e=>{if(L<=1)return;const t=(e,r)=>{if(e<0||e>T.length)return e;const n=("left"===r?-1:1)*(E?-1:1);return T[e+n]?.props.disabled?t(e+n,r):e+n};let r=x;"ArrowRight"===e.key?r=t(x,"right"):"ArrowLeft"===e.key&&(r=t(x,"left")),r<0||r>=L||r!==x&&(e.preventDefault(),e.stopPropagation(),y(r))}},v,{children:[D.map(((e,t)=>l.cloneElement(e,{key:t,touchRippleRef:j(t),onClick:N(t,e.props.onClick),tabIndex:x===t?b:-1}))),z.length>0&&H&&(0,f.jsx)(O.slots.baseIconButton,(0,n.A)({ref:M,id:H,"aria-label":S.current.getLocaleText("actionsCellMore"),"aria-haspopup":"menu","aria-expanded":A,"aria-controls":A?F:void 0,role:"menuitem",size:"small",onClick:()=>{R(!0),y(L-1),k.current=!0},touchRippleRef:j(H),tabIndex:x===D.length?b:-1},O.slotProps?.baseIconButton,{children:(0,f.jsx)(O.slots.moreActionsIcon,{fontSize:"small"})})),z.length>0&&(0,f.jsx)(u.U,{open:A,target:M.current,position:w,onClose:$,children:(0,f.jsx)(i.A,{id:F,className:c.x.menuList,onKeyDown:e=>{"Tab"===e.key&&e.preventDefault(),["Tab","Escape"].includes(e.key)&&$()},"aria-labelledby":H,variant:"menu",autoFocusItem:!0,children:z.map(((e,t)=>l.cloneElement(e,{key:t,closeMenu:$})))})})]}))}const b=e=>(0,f.jsx)(h,(0,n.A)({},e))},2735:(e,t,r)=>{"use strict";r.d(t,{b:()=>m,n:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(88519),a=r(76959),s=r(64565),c=r(76404),u=r(59458),d=r(69500);const p=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","hasFocus","tabIndex","hideDescendantCount"];function f(e){const{value:t}=e,r=(0,o.A)(e,p),u=(0,c.h)(),f=(0,s.A)(),g=(e=>{const{classes:t}=e;return(0,i.A)({root:["booleanCell"]},a.B,t)})({classes:f.classes}),m=l.useMemo((()=>t?f.slots.booleanCellTrueIcon:f.slots.booleanCellFalseIcon),[f.slots.booleanCellFalseIcon,f.slots.booleanCellTrueIcon,t]);return(0,d.jsx)(m,(0,n.A)({fontSize:"small",className:g.root,titleAccess:u.current.getLocaleText(t?"booleanCellTrueLabel":"booleanCellFalseLabel"),"data-value":Boolean(t)},r))}const g=l.memo(f),m=e=>"__row_group_by_columns_group__"!==e.field&&(0,u.nF)(e.rowNode)?"":(0,d.jsx)(g,(0,n.A)({},e))},33360:(e,t,r)=>{"use strict";r.d(t,{LX:()=>E,UP:()=>I,gB:()=>M});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(17505),s=r(88519),c=r(92325),u=r(75041),d=r(46345),p=r(93876);let f;var g=r(76959),m=r(10176),h=r(12274),b=r(76404),w=r(64565),C=r(15665),v=r(4780),x=r(36155),y=r(92442),A=r(69500);const R=["column","rowId","editCellState","align","children","colIndex","width","className","style","gridHasScrollX","colSpan","disableDragEvents","isNotVisible","pinnedOffset","pinnedPosition","sectionIndex","sectionLength","gridHasFiller","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver"],S=["changeReason","unstable_updateValueOnRender"];let I=function(e){return e[e.NONE=0]="NONE",e[e.LEFT=1]="LEFT",e[e.RIGHT=2]="RIGHT",e[e.VIRTUAL=3]="VIRTUAL",e}({});const M={[I.LEFT]:x.K.LEFT,[I.RIGHT]:x.K.RIGHT,[I.NONE]:void 0,[I.VIRTUAL]:void 0},k={id:-1,field:"__unset__",row:{},rowNode:{id:-1,depth:0,type:"leaf",parent:-1,groupingKey:null},colDef:{type:"string",field:"__unset__",computedWidth:0},cellMode:m.bs.View,hasFocus:!1,tabIndex:-1,value:null,formattedValue:"__unset__",isEditable:!1,api:{}},P=l.forwardRef((function(e,t){const{column:r,rowId:d,editCellState:x,align:P,colIndex:E,width:F,className:H,style:O,colSpan:T,disableDragEvents:D,isNotVisible:z,pinnedOffset:L,pinnedPosition:$,sectionIndex:j,sectionLength:N,gridHasFiller:V,onClick:B,onDoubleClick:G,onMouseDown:W,onMouseUp:_,onMouseOver:U,onKeyDown:q,onKeyUp:K,onDragEnter:X,onDragOver:Y}=e,Z=(0,o.A)(e,R),Q=(0,b.h)(),J=(0,w.A)(),ee=(0,p.I)(),te=r.field,re=(0,h.Nc)(Q,(()=>{try{const e=Q.current.getCellParams(d,te);return e.api=Q.current,e}catch(e){if(e instanceof C.W)return k;throw e}}),h.TJ),ne=(0,h.Nc)(Q,(()=>Q.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:d,field:te}))),oe=(0,h.Nc)(Q,y.xX),le=(0,h.Nc)(Q,y.ET),{cellMode:ie,hasFocus:ae,isEditable:se=!1,value:ce}=re,ue="actions"===r.type&&r.getActions?.(Q.current.getRowParams(d)).some((e=>!e.props.disabled)),de="view"!==ie&&se||ue?-1:re.tabIndex,{classes:pe,getCellClassName:fe}=J,ge=[(0,h.Nc)(Q,(()=>Q.current.unstable_applyPipeProcessors("cellClassName",[],{id:d,field:te}).filter(Boolean).join(" ")))];r.cellClassName&&ge.push("function"==typeof r.cellClassName?r.cellClassName(re):r.cellClassName),"flex"===r.display&&ge.push(g.x["cell--flex"]),fe&&ge.push(fe(re));const me=re.formattedValue??ce,he=l.useRef(null),be=(0,c.A)(t,he),we=l.useRef(null),Ce=J.cellSelection??!1,ve=M[$],xe=(e=>{const{align:t,showLeftBorder:r,showRightBorder:n,pinnedPosition:o,isEditable:l,isSelected:i,isSelectionMode:c,classes:u}=e,d={root:["cell",`cell--text${(0,a.A)(t)}`,i&&"selected",l&&"cell--editable",r&&"cell--withLeftBorder",n&&"cell--withRightBorder",o===I.LEFT&&"cell--pinnedLeft",o===I.RIGHT&&"cell--pinnedRight",c&&!l&&"cell--selectionMode"]};return(0,s.A)(d,g.B,u)})({align:P,showLeftBorder:(0,v.o)(ve,j),showRightBorder:(0,v.L)(ve,j,N,J.showCellVerticalBorder,V),isEditable:se,classes:J.classes,pinnedPosition:$,isSelected:ne,isSelectionMode:Ce}),ye=l.useCallback((e=>t=>{const r=Q.current.getCellParams(d,te||"");Q.current.publishEvent(e,r,t),_&&_(t)}),[Q,te,_,d]),Ae=l.useCallback((e=>t=>{const r=Q.current.getCellParams(d,te||"");Q.current.publishEvent(e,r,t),W&&W(t)}),[Q,te,W,d]),Re=l.useCallback(((e,t)=>r=>{if(!Q.current.getRow(d))return;const n=Q.current.getCellParams(d,te||"");Q.current.publishEvent(e,n,r),t&&t(r)}),[Q,te,d]),Se=oe[d]?.[te]??!1,Ie=le[d]?.[te]??1,Me=l.useMemo((()=>{if(z)return{padding:0,opacity:0,width:0,border:0};const e=(0,n.A)({"--width":`${F}px`},O),t=$===I.LEFT,r=$===I.RIGHT;if(t||r){let r=t?"left":"right";ee&&(r=t?"right":"left"),e[r]=L}return Ie>1&&(e.height=`calc(var(--height) * ${Ie})`,e.zIndex=5),e}),[F,z,O,L,$,ee,Ie]);if(l.useEffect((()=>{if(!ae||ie===m.bs.Edit)return;const e=(0,u.A)(Q.current.rootElementRef.current);if(he.current&&!he.current.contains(e.activeElement)){const e=he.current.querySelector('[tabindex="0"]'),t=we.current||e||he.current;if(void 0===f&&document.createElement("div").focus({get preventScroll(){return f=!0,!1}}),f)t.focus({preventScroll:!0});else{const e=Q.current.getScrollPosition();t.focus(),Q.current.scroll(e)}}}),[ae,ie,Q]),Se)return(0,A.jsx)("div",{"data-colindex":E,role:"presentation",style:(0,n.A)({},Me,{minWidth:"var(--width)",maxWidth:"var(--width)"})});if(re===k)return null;let ke,Pe,Ee=Z.onFocus;if(null===x&&r.renderCell&&(ke=r.renderCell(re)),null!==x&&r.renderEditCell){const e=Q.current.getRowWithUpdatedValues(d,r.field),t=(0,o.A)(x,S),l=r.valueFormatter?r.valueFormatter(x.value,e,r,Q):re.formattedValue,i=(0,n.A)({},re,{row:e,formattedValue:l},t);ke=r.renderEditCell(i),ge.push(g.x["cell--editing"]),ge.push(pe?.["cell--editing"])}if(void 0===ke){const e=me?.toString();ke=e,Pe=e}l.isValidElement(ke)&&ue&&(ke=l.cloneElement(ke,{focusElementRef:we}));const Fe=D?null:{onDragEnter:Re("cellDragEnter",X),onDragOver:Re("cellDragOver",Y)};return(0,A.jsx)("div",(0,n.A)({ref:be,className:(0,i.A)(H,ge,xe.root),role:"gridcell","data-field":te,"data-colindex":E,"aria-colindex":E+1,"aria-colspan":T,"aria-rowspan":Ie,style:Me,title:Pe,tabIndex:de,onClick:Re("cellClick",B),onDoubleClick:Re("cellDoubleClick",G),onMouseOver:Re("cellMouseOver",U),onMouseDown:Ae("cellMouseDown"),onMouseUp:ye("cellMouseUp"),onKeyDown:Re("cellKeyDown",q),onKeyUp:Re("cellKeyUp",K)},Fe,Z,{onFocus:Ee,children:ke}))})),E=(0,d.n)(P)},24411:(e,t,r)=>{"use strict";r.d(t,{X:()=>h,b:()=>b});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(57377),c=r(40053),u=r(76959),d=r(64565),p=r(76404),f=r(69500);const g=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange"],m=e=>{const{classes:t}=e;return(0,a.A)({root:["editBooleanCell"]},u.B,t)};function h(e){const{id:t,value:r,field:a,className:u,hasFocus:h,onValueChange:b}=e,w=(0,o.A)(e,g),C=(0,p.h)(),v=l.useRef(null),x=(0,s.A)(),[y,A]=l.useState(r),R=(0,d.A)(),S={classes:R.classes},I=m(S),M=l.useCallback((async e=>{const r=e.target.checked;b&&await b(e,r),A(r),await C.current.setEditCellValue({id:t,field:a,value:r},e)}),[C,a,t,b]);return l.useEffect((()=>{A(r)}),[r]),(0,c.A)((()=>{h&&v.current.focus()}),[h]),(0,f.jsx)("label",(0,n.A)({htmlFor:x,className:(0,i.A)(I.root,u)},w,{children:(0,f.jsx)(R.slots.baseCheckbox,(0,n.A)({id:x,inputRef:v,checked:Boolean(y),onChange:M,size:"small"},R.slotProps?.baseCheckbox))}))}const b=e=>(0,f.jsx)(h,(0,n.A)({},e))},26067:(e,t,r)=>{"use strict";r.d(t,{Z:()=>b,z:()=>w});var n=r(6614),o=r(83673),l=r(7552),i=r(88519),a=r(40053),s=r(98879),c=r(51148),u=r(76959),d=r(64565),p=r(76404),f=r(69500);const g=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","inputProps","isValidating","isProcessingProps","onValueChange"],m=(0,c.Ay)(s.Ay)({fontSize:"inherit"}),h=e=>{const{classes:t}=e;return(0,i.A)({root:["editInputCell"]},u.B,t)};function b(e){const{id:t,value:r,field:i,colDef:s,hasFocus:c,inputProps:u,onValueChange:b}=e,w=(0,o.A)(e,g),C="dateTime"===s.type,v=(0,p.h)(),x=l.useRef(),y=l.useMemo((()=>{let e,t;return e=null==r?null:r instanceof Date?r:new Date((r??"").toString()),t=null==e||Number.isNaN(e.getTime())?"":new Date(e.getTime()-60*e.getTimezoneOffset()*1e3).toISOString().substr(0,C?16:10),{parsed:e,formatted:t}}),[r,C]),[A,R]=l.useState(y),S={classes:(0,d.A)().classes},I=h(S),M=l.useCallback((e=>{if(""===e)return null;const[t,r]=e.split("T"),[n,o,l]=t.split("-"),i=new Date;if(i.setFullYear(Number(n),Number(o)-1,Number(l)),i.setHours(0,0,0,0),r){const[e,t]=r.split(":");i.setHours(Number(e),Number(t),0,0)}return i}),[]),k=l.useCallback((async e=>{const r=e.target.value,n=M(r);b&&await b(e,n),R({parsed:n,formatted:r}),v.current.setEditCellValue({id:t,field:i,value:n},e)}),[v,i,t,b,M]);return l.useEffect((()=>{R((e=>y.parsed!==e.parsed&&y.parsed?.getTime()!==e.parsed?.getTime()?y:e))}),[y]),(0,a.A)((()=>{c&&x.current.focus()}),[c]),(0,f.jsx)(m,(0,n.A)({inputRef:x,fullWidth:!0,className:I.root,type:C?"datetime-local":"date",inputProps:(0,n.A)({max:C?"9999-12-31T23:59":"9999-12-31"},u),value:A.formatted,onChange:k},w))}const w=e=>(0,f.jsx)(b,(0,n.A)({},e))},3619:(e,t,r)=>{"use strict";r.d(t,{B:()=>h,j:()=>b});var n=r(83673),o=r(6614),l=r(7552),i=r(88519),a=r(40053),s=r(51148),c=r(98879),u=r(76959),d=r(64565),p=r(76404),f=r(69500);const g=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","isValidating","debounceMs","isProcessingProps","onValueChange"],m=(0,s.Ay)(c.Ay,{name:"MuiDataGrid",slot:"EditInputCell",overridesResolver:(e,t)=>t.editInputCell})((({theme:e})=>(0,o.A)({},e.typography.body2,{padding:"1px 0","& input":{padding:"0 16px",height:"100%"}}))),h=l.forwardRef(((e,t)=>{const r=(0,d.A)(),{id:s,value:c,field:h,colDef:b,hasFocus:w,debounceMs:C=200,isProcessingProps:v,onValueChange:x}=e,y=(0,n.A)(e,g),A=(0,p.h)(),R=l.useRef(),[S,I]=l.useState(c),M=(e=>{const{classes:t}=e;return(0,i.A)({root:["editInputCell"]},u.B,t)})(r),k=l.useCallback((async e=>{const t=e.target.value;x&&await x(e,t);const r=A.current.getColumn(h);let n=t;r.valueParser&&(n=r.valueParser(t,A.current.getRow(s),r,A)),I(n),A.current.setEditCellValue({id:s,field:h,value:n,debounceMs:C,unstable_skipValueParser:!0},e)}),[A,C,h,s,x]),P=A.current.unstable_getEditCellMeta(s,h);return l.useEffect((()=>{"debouncedSetEditCellValue"!==P?.changeReason&&I(c)}),[P,c]),(0,a.A)((()=>{w&&R.current.focus()}),[w]),(0,f.jsx)(m,(0,o.A)({ref:t,inputRef:R,className:M.root,ownerState:r,fullWidth:!0,type:"number"===b.type?b.type:"text",value:S??"",onChange:k,endAdornment:v?(0,f.jsx)(r.slots.loadIcon,{fontSize:"small",color:"action"}):void 0},y))})),b=e=>(0,f.jsx)(h,(0,o.A)({},e))},57715:(e,t,r)=>{"use strict";r.d(t,{D:()=>m,j:()=>h});var n=r(6614),o=r(83673),l=r(7552),i=r(40053),a=r(88729),s=r(64565),c=r(10176),u=r(12003),d=r(76404),p=r(69500);const f=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange","initialOpen"],g=["MenuProps"];function m(e){const t=(0,s.A)(),{id:r,value:m,field:h,row:b,colDef:w,hasFocus:C,error:v,onValueChange:x,initialOpen:y=t.editMode===c.RL.Cell}=e,A=(0,o.A)(e,f),R=(0,d.h)(),S=l.useRef(),I=l.useRef(),[M,k]=l.useState(y),P=(t.slotProps?.baseSelect||{}).native??!1,E=t.slotProps?.baseSelect||{},{MenuProps:F}=E,H=(0,o.A)(E,g);if((0,i.A)((()=>{C&&I.current?.focus()}),[C]),!(0,u._W)(w))return null;const O=(0,u.KJ)(w,{id:r,row:b});if(!O)return null;const T=w.getOptionValue,D=w.getOptionLabel;return O&&w?(0,p.jsx)(t.slots.baseSelect,(0,n.A)({ref:S,inputRef:I,value:m,onChange:async e=>{if(!(0,u._W)(w)||!O)return;k(!1);const t=e.target,n=(0,u.Rc)(t.value,O,T);x&&await x(e,n),await R.current.setEditCellValue({id:r,field:h,value:n},e)},open:M,onOpen:e=>{(function(e){return!!e.key})(e)&&"Enter"===e.key||k(!0)},MenuProps:(0,n.A)({onClose:(e,o)=>{if(t.editMode!==c.RL.Row){if("backdropClick"===o||"Escape"===e.key){const t=R.current.getCellParams(r,h);R.current.publishEvent("cellEditStop",(0,n.A)({},t,{reason:"Escape"===e.key?a.Q.escapeKeyDown:a.Q.cellFocusOut}))}}else k(!1)}},F),error:v,native:P,fullWidth:!0},A,H,{children:O.map((e=>{const r=T(e);return(0,l.createElement)(t.slots.baseSelectOption,(0,n.A)({},t.slotProps?.baseSelectOption||{},{native:P,key:r,value:r}),D(e))}))})):null}const h=e=>(0,p.jsx)(m,(0,n.A)({},e))},10736:(e,t,r)=>{"use strict";r.d(t,{k:()=>v});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(27943),s=r(17505),c=r(88519),u=r(46345),d=r(58766),p=r(64565),f=r(76959),g=r(69500);const m=["field","type","align","width","height","empty","style","className"],h="1.3em",b=[40,80],w={number:[40,60],string:[40,80],date:[40,60],dateTime:[60,80],singleSelect:[40,80]},C=(0,d.E1)(12345),v=(0,u.n)((function(e){const{field:t,type:r,align:u,width:d,height:v,empty:x=!1,style:y,className:A}=e,R=(0,o.A)(e,m),S=(e=>{const{align:t,classes:r,empty:n}=e,o={root:["cell","cellSkeleton",`cell--text${t?(0,s.A)(t):"Left"}`,n&&"cellEmpty"]};return(0,c.A)(o,f.B,r)})({classes:(0,p.A)().classes,align:u,empty:x}),I=l.useMemo((()=>{if("boolean"===r||"actions"===r)return{variant:"circular",width:h,height:h};const[e,t]=r?w[r]??b:b;return{variant:"text",width:`${Math.round(C(e,t))}%`,height:"1.2em"}}),[r]);return(0,g.jsx)("div",(0,n.A)({"data-field":t,className:(0,i.A)(S.root,A),style:(0,n.A)({height:v,maxWidth:d,minWidth:d},y)},R,{children:!x&&(0,g.jsx)(a.A,(0,n.A)({},I))}))}))},92765:(e,t,r)=>{"use strict";r.d(t,{f:()=>b});var n=r(6614),o=r(7552),l=r(88519),i=r(57377),a=r(84885),s=r(12274),c=r(38577),u=r(48534),d=r(76404),p=r(76959),f=r(64565),g=r(71481),m=r(69500);const h=e=>{const{classes:t}=e;return(0,l.A)({icon:["filterIcon"]},p.B,t)};function b(e){const{counter:t,field:r,onClick:l}=e,p=(0,d.h)(),b=(0,f.A)(),w=(0,n.A)({},e,{classes:b.classes}),C=h(w),v=(0,s.Nc)(p,c._),x=(0,i.A)(),y=(0,i.A)(),A=o.useCallback((e=>{e.preventDefault(),e.stopPropagation();const{open:t,openedPanelValue:n}=(0,c._)(p.current.state);t&&n===u.y.filters?p.current.hideFilterPanel():p.current.showFilterPanel(void 0,y,x),l&&l(p.current.getColumnHeaderParams(r),e)}),[p,r,l,y,x]);if(!t)return null;const R=v.open&&v.labelId===x,S=(0,m.jsx)(b.slots.baseIconButton,(0,n.A)({id:x,onClick:A,color:"default","aria-label":p.current.getLocaleText("columnHeaderFiltersLabel"),size:"small",tabIndex:-1,"aria-haspopup":"menu","aria-expanded":R,"aria-controls":R?y:void 0},b.slotProps?.baseIconButton,{children:(0,m.jsx)(b.slots.columnFilteredIcon,{className:C.icon,fontSize:"small"})}));return(0,m.jsx)(b.slots.baseTooltip,(0,n.A)({title:p.current.getLocaleText("columnHeaderFiltersTooltipActive")(t),enterDelay:1e3},b.slotProps?.baseTooltip,{children:(0,m.jsxs)(g.r,{children:[t>1&&(0,m.jsx)(a.A,{badgeContent:t,color:"default",children:S}),1===t&&S]})}))}},86775:(e,t,r)=>{"use strict";r.d(t,{d:()=>C});var n=r(6614),o=r(7552),l=r(93878),i=r(88519),a=r(57377),s=r(46345),c=r(71115),u=r(76404),d=r(76959),p=r(64565),f=r(69500);const g=o.memo((e=>{const{colDef:t,open:r,columnMenuId:l,columnMenuButtonId:a,iconButtonRef:s}=e,c=(0,u.h)(),g=(0,p.A)(),m=(e=>{const{classes:t,open:r}=e,n={root:["menuIcon",r&&"menuOpen"],button:["menuIconButton"]};return(0,i.A)(n,d.B,t)})((0,n.A)({},e,{classes:g.classes})),h=o.useCallback((e=>{e.preventDefault(),e.stopPropagation(),c.current.toggleColumnMenu(t.field)}),[c,t.field]);return(0,f.jsx)("div",{className:m.root,children:(0,f.jsx)(g.slots.baseTooltip,(0,n.A)({title:c.current.getLocaleText("columnMenuLabel"),enterDelay:1e3},g.slotProps?.baseTooltip,{children:(0,f.jsx)(g.slots.baseIconButton,(0,n.A)({ref:s,tabIndex:-1,className:m.button,"aria-label":c.current.getLocaleText("columnMenuLabel"),size:"small",onClick:h,"aria-haspopup":"menu","aria-expanded":r,"aria-controls":r?l:void 0,id:a},g.slotProps?.baseIconButton,{children:(0,f.jsx)(g.slots.columnMenuIcon,{fontSize:"inherit"})}))}))})}));var m=r(42386),h=r(50796),b=r(10930),w=r(4780);const C=(0,s.n)((function(e){const{colDef:t,columnMenuOpen:r,colIndex:s,headerHeight:u,isResizing:C,isLast:v,sortDirection:x,sortIndex:y,filterItemsCounter:A,hasFocus:R,tabIndex:S,disableReorder:I,separatorSide:M,style:k,pinnedPosition:P,indexInSection:E,sectionLength:F,gridHasFiller:H}=e,O=(0,c.E)(),T=(0,p.A)(),D=o.useRef(null),z=(0,a.A)(),L=(0,a.A)(),$=o.useRef(null),[j,N]=o.useState(r),V=o.useMemo((()=>!T.disableColumnReorder&&!I&&!t.disableReorder),[T.disableColumnReorder,I,t.disableReorder]);let B;t.renderHeader&&(B=t.renderHeader(O.current.getColumnHeaderParams(t.field)));const G=(0,w.o)(P,E),W=(0,w.L)(P,E,F,T.showColumnVerticalBorder,H),_=(e=>{const{colDef:t,classes:r,isDragging:n,sortDirection:o,showRightBorder:l,showLeftBorder:a,filterItemsCounter:s,pinnedPosition:c,isLastUnpinned:u,isSiblingFocused:p}=e,f=null!=o,g=null!=s&&s>0,m="number"===t.type,h={root:["columnHeader","left"===t.headerAlign&&"columnHeader--alignLeft","center"===t.headerAlign&&"columnHeader--alignCenter","right"===t.headerAlign&&"columnHeader--alignRight",t.sortable&&"columnHeader--sortable",n&&"columnHeader--moving",f&&"columnHeader--sorted",g&&"columnHeader--filtered",m&&"columnHeader--numeric","withBorderColor",l&&"columnHeader--withRightBorder",a&&"columnHeader--withLeftBorder","left"===c&&"columnHeader--pinnedLeft","right"===c&&"columnHeader--pinnedRight",u&&"columnHeader--lastUnpinned",p&&"columnHeader--siblingFocused"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer"],titleContainerContent:["columnHeaderTitleContainerContent"]};return(0,i.A)(h,d.B,r)})((0,n.A)({},e,{classes:T.classes,showRightBorder:W,showLeftBorder:G})),U=o.useCallback((e=>r=>{(0,b.TA)(r)||O.current.publishEvent(e,O.current.getColumnHeaderParams(t.field),r)}),[O,t.field]),q=o.useMemo((()=>({onClick:U("columnHeaderClick"),onDoubleClick:U("columnHeaderDoubleClick"),onMouseOver:U("columnHeaderOver"),onMouseOut:U("columnHeaderOut"),onMouseEnter:U("columnHeaderEnter"),onMouseLeave:U("columnHeaderLeave"),onKeyDown:U("columnHeaderKeyDown"),onFocus:U("columnHeaderFocus"),onBlur:U("columnHeaderBlur")})),[U]),K=o.useMemo((()=>V?{onDragStart:U("columnHeaderDragStart"),onDragEnter:U("columnHeaderDragEnter"),onDragOver:U("columnHeaderDragOver"),onDragEnd:U("columnHeaderDragEnd")}:{}),[V,U]),X=o.useMemo((()=>({onMouseDown:U("columnSeparatorMouseDown"),onDoubleClick:U("columnSeparatorDoubleClick")})),[U]);o.useEffect((()=>{j||N(r)}),[j,r]);const Y=o.useCallback((()=>{N(!1)}),[]),Z=!T.disableColumnMenu&&!t.disableColumnMenu&&(0,f.jsx)(g,{colDef:t,columnMenuId:z,columnMenuButtonId:L,open:j,iconButtonRef:$}),Q=(0,f.jsx)(m.H,{columnMenuId:z,columnMenuButtonId:L,field:t.field,open:r,target:$.current,ContentComponent:T.slots.columnMenu,contentComponentProps:T.slotProps?.columnMenu,onExited:Y}),J=t.sortingOrder??T.sortingOrder,ee=(t.sortable||null!=x)&&!t.hideSortIcons&&!T.disableColumnSorting,te=(0,f.jsxs)(o.Fragment,{children:[!T.disableColumnFilter&&(0,f.jsx)(T.slots.columnHeaderFilterIconButton,(0,n.A)({field:t.field,counter:A},T.slotProps?.columnHeaderFilterIconButton)),ee&&(0,f.jsx)(T.slots.columnHeaderSortIcon,(0,n.A)({field:t.field,direction:x,index:y,sortingOrder:J,disabled:!t.sortable},T.slotProps?.columnHeaderSortIcon))]});o.useLayoutEffect((()=>{const e=O.current.state.columnMenu;if(R&&!e.open){const e=D.current.querySelector('[tabindex="0"]')||D.current;e?.focus(),O.current.columnHeadersContainerRef?.current&&(O.current.columnHeadersContainerRef.current.scrollLeft=0)}}),[O,R]);const re="function"==typeof t.headerClassName?t.headerClassName({field:t.field,colDef:t}):t.headerClassName,ne=t.headerName??t.field;return(0,f.jsx)(h.a,(0,n.A)({ref:D,classes:_,columnMenuOpen:r,colIndex:s,height:u,isResizing:C,sortDirection:x,hasFocus:R,tabIndex:S,separatorSide:M,isDraggable:V,headerComponent:B,description:t.description,elementId:t.field,width:t.computedWidth,columnMenuIconButton:Z,columnTitleIconButtons:te,headerClassName:(0,l.A)(re,v&&d.x["columnHeader--last"]),label:ne,resizable:!T.disableColumnResize&&!!t.resizable,"data-field":t.field,columnMenu:Q,draggableContainerProps:K,columnHeaderSeparatorProps:X,style:k},q))}))},38975:(e,t,r)=>{"use strict";r.d(t,{V:()=>g,j:()=>p});var n=r(6614),o=r(83673),l=r(7552),i=r(17505),a=r(88519),s=r(76959),c=r(64565),u=r(69500);const d=["resizable","resizing","height","side"];var p=function(e){return e.Left="left",e.Right="right",e}(p||{});function f(e){const{height:t,side:r=p.Right}=e,f=(0,o.A)(e,d),g=(0,c.A)(),m=(e=>{const{resizable:t,resizing:r,classes:n,side:o}=e,l={root:["columnSeparator",t&&"columnSeparator--resizable",r&&"columnSeparator--resizing",o&&`columnSeparator--side${(0,i.A)(o)}`],icon:["iconSeparator"]};return(0,a.A)(l,s.B,n)})((0,n.A)({},e,{side:r,classes:g.classes})),h=l.useCallback((e=>{e.preventDefault(),e.stopPropagation()}),[]);return(0,u.jsx)("div",(0,n.A)({className:m.root,style:{minHeight:t}},f,{onClick:h,children:(0,u.jsx)(g.slots.columnResizeIcon,{className:m.icon})}))}const g=l.memo(f)},30943:(e,t,r)=>{"use strict";r.d(t,{J:()=>m});var n=r(83673),o=r(6614),l=r(7552),i=r(88519),a=r(84885),s=r(76404),c=r(76959),u=r(64565),d=r(71481),p=r(69500);const f=["direction","index","sortingOrder","disabled"];function g(e){const{direction:t,index:r,sortingOrder:l,disabled:g}=e,m=(0,n.A)(e,f),h=(0,s.h)(),b=(0,u.A)(),w=(e=>{const{classes:t}=e;return(0,i.A)({icon:["sortIcon"]},c.B,t)})((0,o.A)({},e,{classes:b.classes})),C=function(e,t,r,n){let l;const i={};return"asc"===t?l=e.columnSortedAscendingIcon:"desc"===t?l=e.columnSortedDescendingIcon:(l=e.columnUnsortedIcon,i.sortingOrder=n),l?(0,p.jsx)(l,(0,o.A)({fontSize:"small",className:r},i)):null}(b.slots,t,w.icon,l);if(!C)return null;const v=(0,p.jsx)(b.slots.baseIconButton,(0,o.A)({tabIndex:-1,"aria-label":h.current.getLocaleText("columnHeaderSortIconLabel"),title:h.current.getLocaleText("columnHeaderSortIconLabel"),size:"small",disabled:g},b.slotProps?.baseIconButton,m,{children:C}));return(0,p.jsxs)(d.r,{children:[null!=r&&(0,p.jsx)(a.A,{badgeContent:r,color:"default",overlap:"circular",children:v}),null==r&&v]})}const m=l.memo(g)},87038:(e,t,r)=>{"use strict";r.d(t,{_:()=>h});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(10930),u=r(76959),d=r(64565),p=r(69500);const f=["className","aria-label"],g=(0,s.A)("div",{name:"MuiDataGrid",slot:"ColumnHeaderTitle",overridesResolver:(e,t)=>t.columnHeaderTitle})({textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",fontWeight:"var(--unstable_DataGrid-headWeight)",lineHeight:"normal"}),m=l.forwardRef((function(e,t){const{className:r}=e,l=(0,o.A)(e,f),s=(0,d.A)(),c=(e=>{const{classes:t}=e;return(0,a.A)({root:["columnHeaderTitle"]},u.B,t)})(s);return(0,p.jsx)(g,(0,n.A)({ref:t,className:(0,i.A)(c.root,r),ownerState:s},l))}));function h(e){const{label:t,description:r}=e,o=(0,d.A)(),i=l.useRef(null),[a,s]=l.useState(""),u=l.useCallback((()=>{if(!r&&i?.current){const e=(0,c.Dy)(i.current);s(e?t:"")}}),[r,t]);return(0,p.jsx)(o.slots.baseTooltip,(0,n.A)({title:r||a},o.slotProps?.baseTooltip,{children:(0,p.jsx)(m,{onMouseOver:u,ref:i,children:t})}))}},50796:(e,t,r)=>{"use strict";r.d(t,{a:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(92325),s=r(71115),c=r(87038),u=r(38975),d=r(64565),p=r(69500);const f=["classes","columnMenuOpen","colIndex","height","isResizing","sortDirection","hasFocus","tabIndex","separatorSide","isDraggable","headerComponent","description","elementId","width","columnMenuIconButton","columnMenu","columnTitleIconButtons","headerClassName","label","resizable","draggableContainerProps","columnHeaderSeparatorProps","style"],g=l.forwardRef((function(e,t){const{classes:r,colIndex:g,height:m,isResizing:h,sortDirection:b,hasFocus:w,tabIndex:C,separatorSide:v,isDraggable:x,headerComponent:y,description:A,width:R,columnMenuIconButton:S=null,columnMenu:I=null,columnTitleIconButtons:M=null,headerClassName:k,label:P,resizable:E,draggableContainerProps:F,columnHeaderSeparatorProps:H,style:O}=e,T=(0,o.A)(e,f),D=(0,s.E)(),z=(0,d.A)(),L=l.useRef(null),$=(0,a.A)(L,t);let j="none";return null!=b&&(j="asc"===b?"ascending":"descending"),l.useLayoutEffect((()=>{const e=D.current.state.columnMenu;if(w&&!e.open){const e=L.current.querySelector('[tabindex="0"]')||L.current;e?.focus(),D.current.columnHeadersContainerRef?.current&&(D.current.columnHeadersContainerRef.current.scrollLeft=0)}}),[D,w]),(0,p.jsxs)("div",(0,n.A)({ref:$,className:(0,i.A)(r.root,k),style:(0,n.A)({},O,{height:m,width:R}),role:"columnheader",tabIndex:C,"aria-colindex":g+1,"aria-sort":j},T,{children:[(0,p.jsxs)("div",(0,n.A)({className:r.draggableContainer,draggable:x,role:"presentation"},F,{children:[(0,p.jsxs)("div",{className:r.titleContainer,role:"presentation",children:[(0,p.jsx)("div",{className:r.titleContainerContent,children:void 0!==y?y:(0,p.jsx)(c._,{label:P,description:A,columnWidth:R})}),M]}),S]})),(0,p.jsx)(u.V,(0,n.A)({resizable:!z.disableColumnResize&&!!E,resizing:h,height:m,side:v},H)),I]}))}))},71481:(e,t,r)=>{"use strict";r.d(t,{r:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(76959),u=r(64565),d=r(69500);const p=["className"],f=(0,s.A)("div",{name:"MuiDataGrid",slot:"IconButtonContainer",overridesResolver:(e,t)=>t.iconButtonContainer})((()=>({display:"flex",visibility:"hidden",width:0}))),g=l.forwardRef((function(e,t){const{className:r}=e,l=(0,o.A)(e,p),s=(0,u.A)(),g=(e=>{const{classes:t}=e;return(0,a.A)({root:["iconButtonContainer"]},c.B,t)})(s);return(0,d.jsx)(f,(0,n.A)({ref:t,className:(0,i.A)(g.root,r),ownerState:s},l))}))},17279:(e,t,r)=>{"use strict";r.d(t,{c:()=>f,r:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(88519),a=r(92325),s=r(76404),c=r(64565),u=r(76959),d=r(69500);const p=["field","id","value","formattedValue","row","rowNode","colDef","isEditable","cellMode","hasFocus","tabIndex","api"],f=l.forwardRef((function(e,t){const{field:r,id:f,value:g,rowNode:m,hasFocus:h,tabIndex:b}=e,w=(0,o.A)(e,p),C=(0,s.h)(),v=(0,c.A)(),x=(e=>{const{classes:t}=e;return(0,i.A)({root:["checkboxInput"]},u.B,t)})({classes:v.classes}),y=l.useRef(null),A=l.useRef(null),R=(0,a.A)(y,t);l.useLayoutEffect((()=>{if(0===b){const e=C.current.getCellElement(f,r);e&&(e.tabIndex=-1)}}),[C,b,f,r]),l.useEffect((()=>{if(h){const e=y.current?.querySelector("input");e?.focus({preventScroll:!0})}else A.current&&A.current.stop({})}),[h]);const S=l.useCallback((e=>{" "===e.key&&e.stopPropagation()}),[]);if("footer"===m.type||"pinnedRow"===m.type)return null;const I=C.current.isRowSelectable(f),M=C.current.getLocaleText(g?"checkboxSelectionUnselectRow":"checkboxSelectionSelectRow");return(0,d.jsx)(v.slots.baseCheckbox,(0,n.A)({ref:R,tabIndex:b,checked:g,onChange:e=>{const t={value:e.target.checked,id:f};C.current.publishEvent("rowSelectionCheckboxChange",t,e)},className:x.root,inputProps:{"aria-label":M},onKeyDown:S,disabled:!I,touchRippleRef:A},v.slotProps?.baseCheckbox,w))})),g=f},83861:(e,t,r)=>{"use strict";r.d(t,{J:()=>w});var n=r(6614),o=r(83673),l=r(7552),i=r(88519),a=r(41222),s=r(12274),c=r(3247),u=r(82188),d=r(76404),p=r(76959),f=r(64565),g=r(2220),m=r(24940),h=r(69500);const b=["field","colDef"],w=l.forwardRef((function(e,t){const r=(0,o.A)(e,b),[,w]=l.useState(!1),C=(0,d.h)(),v=(0,f.A)(),x=(e=>{const{classes:t}=e;return(0,i.A)({root:["checkboxInput"]},p.B,t)})({classes:v.classes}),y=(0,s.Nc)(C,c.Kr),A=(0,s.Nc)(C,u.Bi),R=(0,s.Nc)(C,g.ux),S=(0,s.Nc)(C,m.ee),I=l.useMemo((()=>"function"!=typeof v.isRowSelectable?A:A.filter((e=>!!C.current.getRow(e)&&v.isRowSelectable(C.current.getRowParams(e))))),[C,v.isRowSelectable,A]),M=l.useMemo((()=>(v.pagination&&v.checkboxSelectionVisibleOnly?S:R).reduce(((e,t)=>(e[t]=!0,e)),{})),[v.pagination,v.checkboxSelectionVisibleOnly,S,R]),k=l.useMemo((()=>I.filter((e=>M[e])).length),[I,M]),P=k>0&&k<Object.keys(M).length,E=k>0,F=null!==y&&y.field===e.field?0:-1;l.useLayoutEffect((()=>{const t=C.current.getColumnHeaderElement(e.field);0===F&&t&&(t.tabIndex=-1)}),[F,C,e.field]);const H=l.useCallback((e=>{" "===e.key&&C.current.publishEvent("headerSelectionCheckboxChange",{value:!E})}),[C,E]),O=l.useCallback((()=>{w((e=>!e))}),[]);l.useEffect((()=>C.current.subscribeEvent("rowSelectionChange",O)),[C,O]);const T=C.current.getLocaleText(E?"checkboxSelectionUnselectAllRows":"checkboxSelectionSelectAllRows"),D="select"===v.indeterminateCheckboxAction?E&&!P:E;return(0,h.jsx)(v.slots.baseCheckbox,(0,n.A)({ref:t,indeterminate:P,checked:D,onChange:e=>{const t={value:e.target.checked};C.current.publishEvent("headerSelectionCheckboxChange",t)},className:x.root,inputProps:{"aria-label":T},tabIndex:F,onKeyDown:H,disabled:!(0,a.c)(v)},v.slotProps?.baseCheckbox,r))}))},36014:(e,t,r)=>{"use strict";r.d(t,{D:()=>C});var n=r(6614),o=r(7552),l=r(88519),i=r(33371),a=r(51148),s=r(80163),c=r(12274),u=r(76404),d=r(64565),p=r(76959),f=r(49891);const g=(e,t)=>{const r=new Set(Object.keys(e).filter((t=>!1===e[t]))),n=new Set(Object.keys(t).filter((e=>!1===t[e])));if(r.size!==n.size)return!1;let o=!0;return r.forEach((e=>{n.has(e)||(o=!1)})),o},m=(e,t)=>(e.headerName||e.field).toLowerCase().indexOf(t)>-1;var h=r(69500);const b=e=>{const{classes:t}=e;return(0,l.A)({root:["columnsManagement"],header:["columnsManagementHeader"],footer:["columnsManagementFooter"],row:["columnsManagementRow"]},p.B,t)},w=new Intl.Collator;function C(e){const t=(0,u.h)(),r=o.useRef(null),l=(0,c.Nc)(t,s.OV),a=(0,f.A)((()=>(0,s.FY)(t))).current,p=(0,c.Nc)(t,s.FY),C=(0,d.A)(),[R,S]=o.useState(""),I=b(C),{sort:M,searchPredicate:k=m,autoFocusSearchField:P=!0,disableShowHideToggle:E=!1,disableResetButton:F=!1,toggleAllMode:H="all",getTogglableColumns:O}=e,T=o.useMemo((()=>g(p,a)),[p,a]),D=o.useMemo((()=>{switch(M){case"asc":return[...l].sort(((e,t)=>w.compare(e.headerName||e.field,t.headerName||t.field)));case"desc":return[...l].sort(((e,t)=>-w.compare(e.headerName||e.field,t.headerName||t.field)));default:return l}}),[l,M]),z=e=>{const{name:r}=e.target;t.current.setColumnVisibility(r,!1===p[r])},L=o.useMemo((()=>{const e=O?O(D):null,t=e?D.filter((({field:t})=>e.includes(t))):D;return R?t.filter((e=>k(e,R.toLowerCase()))):t}),[D,R,k,O]),$=o.useCallback((e=>{const r=(0,s.FY)(t),o=(0,n.A)({},r),i=O?O(l):null;return("filteredOnly"===H?L:l).forEach((t=>{t.hideable&&(null==i||i.includes(t.field))&&(e?delete o[t.field]:o[t.field]=!1)})),t.current.setColumnVisibilityModel(o)}),[t,l,O,H,L]),j=o.useCallback((e=>{S(e.target.value)}),[]),N=o.useMemo((()=>L.filter((e=>e.hideable))),[L]),V=o.useMemo((()=>N.every((e=>null==p[e.field]||!1!==p[e.field]))),[p,N]),B=o.useMemo((()=>N.every((e=>!1===p[e.field]))),[p,N]),G=o.useRef(null);o.useEffect((()=>{P?r.current.focus():G.current&&"function"==typeof G.current.focus&&G.current.focus()}),[P]);let W=!1;const _=e=>!1===W&&!1!==e.hideable&&(W=!0,!0);return(0,h.jsxs)(o.Fragment,{children:[(0,h.jsx)(x,{className:I.header,ownerState:C,children:(0,h.jsx)(C.slots.baseTextField,(0,n.A)({placeholder:t.current.getLocaleText("columnsManagementSearchTitle"),inputRef:r,value:R,onChange:j,variant:"outlined",size:"small",InputProps:{startAdornment:(0,h.jsx)(C.slots.baseInputAdornment,{position:"start",children:(0,h.jsx)(C.slots.quickFilterIcon,{})}),sx:{pl:1.5}},fullWidth:!0},C.slotProps?.baseTextField))}),(0,h.jsxs)(v,{className:I.root,ownerState:C,children:[L.map((e=>(0,h.jsx)(i.A,{className:I.row,control:(0,h.jsx)(C.slots.baseCheckbox,(0,n.A)({disabled:!1===e.hideable,checked:!1!==p[e.field],onClick:z,name:e.field,sx:{p:.5},inputRef:_(e)?G:void 0},C.slotProps?.baseCheckbox)),label:e.headerName||e.field},e.field))),0===L.length&&(0,h.jsx)(A,{ownerState:C,children:t.current.getLocaleText("columnsManagementNoColumns")})]}),E&&F||!(L.length>0)?null:(0,h.jsxs)(y,{ownerState:C,className:I.footer,children:[E?(0,h.jsx)("span",{}):(0,h.jsx)(i.A,{control:(0,h.jsx)(C.slots.baseCheckbox,(0,n.A)({disabled:0===N.length,checked:V,indeterminate:!V&&!B,onClick:()=>$(!V),name:t.current.getLocaleText("columnsManagementShowHideAllText"),sx:{p:.5}},C.slotProps?.baseCheckbox)),label:t.current.getLocaleText("columnsManagementShowHideAllText")}),F?null:(0,h.jsx)(C.slots.baseButton,(0,n.A)({onClick:()=>t.current.setColumnVisibilityModel(a),disabled:T},C.slotProps?.baseButton,{children:t.current.getLocaleText("columnsManagementReset")}))]})]})}const v=(0,a.Ay)("div",{name:"MuiDataGrid",slot:"ColumnsManagement",overridesResolver:(e,t)=>t.columnsManagement})((({theme:e})=>({padding:e.spacing(0,3,1.5),display:"flex",flexDirection:"column",overflow:"auto",flex:"1 1",maxHeight:400,alignItems:"flex-start"}))),x=(0,a.Ay)("div",{name:"MuiDataGrid",slot:"ColumnsManagementHeader",overridesResolver:(e,t)=>t.columnsManagementHeader})((({theme:e})=>({padding:e.spacing(1.5,3)}))),y=(0,a.Ay)("div",{name:"MuiDataGrid",slot:"ColumnsManagementFooter",overridesResolver:(e,t)=>t.columnsManagementFooter})((({theme:e})=>({padding:e.spacing(.5,1,.5,3),display:"flex",justifyContent:"space-between",borderTop:`1px solid ${e.palette.divider}`}))),A=(0,a.Ay)("div")((({theme:e})=>({padding:e.spacing(.5,0),color:e.palette.grey[500]})))},91681:(e,t,r)=>{"use strict";r.d(t,{J:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(76959),u=r(64565),d=r(69500);const p=["className"],f=(0,s.A)("div",{name:"MuiDataGrid",slot:"FooterContainer",overridesResolver:(e,t)=>t.footerContainer})({display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:52,borderTop:"1px solid"}),g=l.forwardRef((function(e,t){const{className:r}=e,l=(0,o.A)(e,p),s=(0,u.A)(),g=(e=>{const{classes:t}=e;return(0,a.A)({root:["footerContainer","withBorderColor"]},c.B,t)})(s);return(0,d.jsx)(f,(0,n.A)({ref:t,className:(0,i.A)(g.root,r),ownerState:s},l))}))},1895:(e,t,r)=>{"use strict";r.d(t,{$:()=>g});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88519),s=r(24959),c=r(76959),u=r(64565),d=r(69500);const p=["className"],f=(0,s.A)("div",{name:"MuiDataGrid",slot:"Overlay",overridesResolver:(e,t)=>t.overlay})({width:"100%",height:"100%",display:"flex",alignSelf:"center",alignItems:"center",justifyContent:"center",backgroundColor:"var(--unstable_DataGrid-overlayBackground)"}),g=l.forwardRef((function(e,t){const{className:r}=e,l=(0,o.A)(e,p),s=(0,u.A)(),g=(e=>{const{classes:t}=e;return(0,a.A)({root:["overlay"]},c.B,t)})(s);return(0,d.jsx)(f,(0,n.A)({ref:t,className:(0,i.A)(g.root,r),ownerState:s},l))}))},48335:(e,t,r)=>{"use strict";r.d(t,{h:()=>S});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(17505),s=r(88519),c=r(92325),u=r(40053),d=r(72639),p=r(51148),f=r(76959),g=r(12274),m=r(71115),h=r(29641);const b={[`& .${f.x.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${f.x.menuIcon}`]:{width:"auto",visibility:"visible"}},w={width:3,rx:1.5,x:10.5},C=(0,p.Ay)("div",{name:"MuiDataGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${f.x.autoHeight}`]:t.autoHeight},{[`&.${f.x.aggregationColumnHeader}`]:t.aggregationColumnHeader},{[`&.${f.x["aggregationColumnHeader--alignLeft"]}`]:t["aggregationColumnHeader--alignLeft"]},{[`&.${f.x["aggregationColumnHeader--alignCenter"]}`]:t["aggregationColumnHeader--alignCenter"]},{[`&.${f.x["aggregationColumnHeader--alignRight"]}`]:t["aggregationColumnHeader--alignRight"]},{[`&.${f.x.aggregationColumnHeaderLabel}`]:t.aggregationColumnHeaderLabel},{[`&.${f.x["root--disableUserSelection"]} .${f.x.cell}`]:t["root--disableUserSelection"]},{[`&.${f.x.autosizing}`]:t.autosizing},{[`& .${f.x.editBooleanCell}`]:t.editBooleanCell},{[`& .${f.x.cell}`]:t.cell},{[`& .${f.x["cell--editing"]}`]:t["cell--editing"]},{[`& .${f.x["cell--textCenter"]}`]:t["cell--textCenter"]},{[`& .${f.x["cell--textLeft"]}`]:t["cell--textLeft"]},{[`& .${f.x["cell--textRight"]}`]:t["cell--textRight"]},{[`& .${f.x["cell--rangeTop"]}`]:t["cell--rangeTop"]},{[`& .${f.x["cell--rangeBottom"]}`]:t["cell--rangeBottom"]},{[`& .${f.x["cell--rangeLeft"]}`]:t["cell--rangeLeft"]},{[`& .${f.x["cell--rangeRight"]}`]:t["cell--rangeRight"]},{[`& .${f.x["cell--withRightBorder"]}`]:t["cell--withRightBorder"]},{[`& .${f.x.cellCheckbox}`]:t.cellCheckbox},{[`& .${f.x.cellSkeleton}`]:t.cellSkeleton},{[`& .${f.x.checkboxInput}`]:t.checkboxInput},{[`& .${f.x["columnHeader--alignCenter"]}`]:t["columnHeader--alignCenter"]},{[`& .${f.x["columnHeader--alignLeft"]}`]:t["columnHeader--alignLeft"]},{[`& .${f.x["columnHeader--alignRight"]}`]:t["columnHeader--alignRight"]},{[`& .${f.x["columnHeader--dragging"]}`]:t["columnHeader--dragging"]},{[`& .${f.x["columnHeader--moving"]}`]:t["columnHeader--moving"]},{[`& .${f.x["columnHeader--numeric"]}`]:t["columnHeader--numeric"]},{[`& .${f.x["columnHeader--sortable"]}`]:t["columnHeader--sortable"]},{[`& .${f.x["columnHeader--sorted"]}`]:t["columnHeader--sorted"]},{[`& .${f.x["columnHeader--withRightBorder"]}`]:t["columnHeader--withRightBorder"]},{[`& .${f.x.columnHeader}`]:t.columnHeader},{[`& .${f.x.headerFilterRow}`]:t.headerFilterRow},{[`& .${f.x.columnHeaderCheckbox}`]:t.columnHeaderCheckbox},{[`& .${f.x.columnHeaderDraggableContainer}`]:t.columnHeaderDraggableContainer},{[`& .${f.x.columnHeaderTitleContainer}`]:t.columnHeaderTitleContainer},{[`& .${f.x["columnSeparator--resizable"]}`]:t["columnSeparator--resizable"]},{[`& .${f.x["columnSeparator--resizing"]}`]:t["columnSeparator--resizing"]},{[`& .${f.x.columnSeparator}`]:t.columnSeparator},{[`& .${f.x.filterIcon}`]:t.filterIcon},{[`& .${f.x.iconSeparator}`]:t.iconSeparator},{[`& .${f.x.menuIcon}`]:t.menuIcon},{[`& .${f.x.menuIconButton}`]:t.menuIconButton},{[`& .${f.x.menuOpen}`]:t.menuOpen},{[`& .${f.x.menuList}`]:t.menuList},{[`& .${f.x["row--editable"]}`]:t["row--editable"]},{[`& .${f.x["row--editing"]}`]:t["row--editing"]},{[`& .${f.x["row--dragging"]}`]:t["row--dragging"]},{[`& .${f.x.row}`]:t.row},{[`& .${f.x.rowReorderCellPlaceholder}`]:t.rowReorderCellPlaceholder},{[`& .${f.x.rowReorderCell}`]:t.rowReorderCell},{[`& .${f.x["rowReorderCell--draggable"]}`]:t["rowReorderCell--draggable"]},{[`& .${f.x.sortIcon}`]:t.sortIcon},{[`& .${f.x.withBorderColor}`]:t.withBorderColor},{[`& .${f.x.treeDataGroupingCell}`]:t.treeDataGroupingCell},{[`& .${f.x.treeDataGroupingCellToggle}`]:t.treeDataGroupingCellToggle},{[`& .${f.x.treeDataGroupingCellLoadingContainer}`]:t.treeDataGroupingCellLoadingContainer},{[`& .${f.x.detailPanelToggleCell}`]:t.detailPanelToggleCell},{[`& .${f.x["detailPanelToggleCell--expanded"]}`]:t["detailPanelToggleCell--expanded"]},t.root]})((({theme:e})=>{const t=(0,m.E)(),r=(0,g.Nc)(t,h.z),o=(l=e).vars?l.vars.palette.TableCell.border:"light"===l.palette.mode?(0,d.a)((0,d.X4)(l.palette.divider,1),.88):(0,d.e$)((0,d.X4)(l.palette.divider,1),.68);var l;const i=e.shape.borderRadius,a=e.vars?e.vars.palette.background.default:e.mixins.MuiDataGrid?.containerBackground??e.palette.background.default,s=e.mixins.MuiDataGrid?.pinnedBackground??a,c=e.vars?`rgba(${e.vars.palette.background.defaultChannel} / ${e.vars.palette.action.disabledOpacity})`:(0,d.X4)(e.palette.background.default,e.palette.action.disabledOpacity),u=(e.vars||e).palette.action.hoverOpacity,p=(e.vars||e).palette.action.hover,C=(e.vars||e).palette.action.selectedOpacity,x=e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${C})`:(0,d.X4)(e.palette.primary.main,C),y=e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(\n                ${e.vars.palette.action.selectedOpacity} +\n                ${e.vars.palette.action.hoverOpacity}\n              ))`:(0,d.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),A=e.vars?p:v(s,p,u),R=e.vars?x:v(s,x,C),S=e.vars?p:v(R,p,u),I={backgroundColor:x,"&:hover":{backgroundColor:y,"@media (hover: none)":{backgroundColor:x}}};return(0,n.A)({"--unstable_DataGrid-radius":"number"==typeof i?`${i}px`:i,"--unstable_DataGrid-headWeight":e.typography.fontWeightMedium,"--unstable_DataGrid-overlayBackground":c,"--DataGrid-containerBackground":a,"--DataGrid-pinnedBackground":s,"--DataGrid-rowBorderColor":o,"--DataGrid-cellOffsetMultiplier":2,"--DataGrid-width":"0px","--DataGrid-hasScrollX":"0","--DataGrid-hasScrollY":"0","--DataGrid-scrollbarSize":"10px","--DataGrid-rowWidth":"0px","--DataGrid-columnsTotalWidth":"0px","--DataGrid-leftPinnedWidth":"0px","--DataGrid-rightPinnedWidth":"0px","--DataGrid-headerHeight":"0px","--DataGrid-headersTotalHeight":"0px","--DataGrid-topContainerHeight":"0px","--DataGrid-bottomContainerHeight":"0px",flex:1,boxSizing:"border-box",position:"relative",borderWidth:"1px",borderStyle:"solid",borderColor:o,borderRadius:"var(--unstable_DataGrid-radius)",color:(e.vars||e).palette.text.primary},e.typography.body2,{outline:"none",height:"100%",display:"flex",minWidth:0,minHeight:0,flexDirection:"column",overflow:"hidden",overflowAnchor:"none",[`.${f.x.main} > *:first-child/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */`]:{borderTopLeftRadius:"var(--unstable_DataGrid-radius)",borderTopRightRadius:"var(--unstable_DataGrid-radius)"},[`&.${f.x.autoHeight}`]:{height:"auto"},[`&.${f.x.autosizing}`]:{[`& .${f.x.columnHeaderTitleContainerContent} > *`]:{overflow:"visible !important"},"@media (hover: hover)":{[`& .${f.x.iconButtonContainer}`]:{width:"0 !important",visibility:"hidden !important"},[`& .${f.x.menuIcon}`]:{width:"0 !important",visibility:"hidden !important"}},[`& .${f.x.cell}`]:{overflow:"visible !important",whiteSpace:"nowrap",minWidth:"max-content !important",maxWidth:"max-content !important"},[`& .${f.x.groupingCriteriaCell}`]:{width:"unset"},[`& .${f.x.treeDataGroupingCell}`]:{width:"unset"}},[`& .${f.x.columnHeader}, & .${f.x.cell}`]:{WebkitTapHighlightColor:"transparent",padding:"0 10px",boxSizing:"border-box"},[`& .${f.x.columnHeader}:focus-within, & .${f.x.cell}:focus-within`]:{outline:`solid ${e.vars?`rgba(${e.vars.palette.primary.mainChannel} / 0.5)`:(0,d.X4)(e.palette.primary.main,.5)} 1px`,outlineOffset:-1},[`& .${f.x.columnHeader}:focus, & .${f.x.cell}:focus`]:{outline:`solid ${e.palette.primary.main} 1px`,outlineOffset:-1},[`& .${f.x.columnHeader}:focus,\n      & .${f.x["columnHeader--withLeftBorder"]},\n      & .${f.x["columnHeader--withRightBorder"]},\n      & .${f.x["columnHeader--siblingFocused"]},\n      & .${f.x["virtualScroller--hasScrollX"]} .${f.x["columnHeader--lastUnpinned"]},\n      & .${f.x["virtualScroller--hasScrollX"]} .${f.x["columnHeader--last"]}\n      `]:{[`& .${f.x.columnSeparator}`]:{opacity:0},"@media (hover: none)":{[`& .${f.x["columnSeparator--resizable"]}`]:{opacity:1}},[`& .${f.x["columnSeparator--resizable"]}:hover`]:{opacity:1}},[`&.${f.x["root--noToolbar"]} [aria-rowindex="1"] [aria-colindex="1"]`]:{borderTopLeftRadius:"calc(var(--unstable_DataGrid-radius) - 1px)"},[`&.${f.x["root--noToolbar"]} [aria-rowindex="1"] .${f.x["columnHeader--last"]}`]:{borderTopRightRadius:!r.hasScrollX||r.hasScrollY&&0!==r.scrollbarSize?void 0:"calc(var(--unstable_DataGrid-radius) - 1px)"},[`& .${f.x.columnHeaderCheckbox}, & .${f.x.cellCheckbox}`]:{padding:0,justifyContent:"center",alignItems:"center"},[`& .${f.x.columnHeader}`]:{position:"relative",display:"flex",alignItems:"center"},[`& .${f.x["virtualScroller--hasScrollX"]} .${f.x["columnHeader--last"]}`]:{overflow:"hidden"},[`& .${f.x["columnHeader--sorted"]} .${f.x.iconButtonContainer}, & .${f.x["columnHeader--filtered"]} .${f.x.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${f.x.columnHeader}:not(.${f.x["columnHeader--sorted"]}) .${f.x.sortIcon}`]:{opacity:0,transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.shorter})},[`& .${f.x.columnHeaderTitleContainer}`]:{display:"flex",alignItems:"center",gap:e.spacing(.25),minWidth:0,flex:1,whiteSpace:"nowrap",overflow:"hidden"},[`& .${f.x.columnHeaderTitleContainerContent}`]:{overflow:"hidden",display:"flex",alignItems:"center"},[`& .${f.x["columnHeader--filledGroup"]} .${f.x.columnHeaderTitleContainer}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${f.x.sortIcon}, & .${f.x.filterIcon}`]:{fontSize:"inherit"},[`& .${f.x["columnHeader--sortable"]}`]:{cursor:"pointer"},[`& .${f.x["columnHeader--alignCenter"]} .${f.x.columnHeaderTitleContainer}`]:{justifyContent:"center"},[`& .${f.x["columnHeader--alignRight"]} .${f.x.columnHeaderDraggableContainer}, & .${f.x["columnHeader--alignRight"]} .${f.x.columnHeaderTitleContainer}`]:{flexDirection:"row-reverse"},[`& .${f.x["columnHeader--alignCenter"]} .${f.x.menuIcon}`]:{marginLeft:"auto"},[`& .${f.x["columnHeader--alignRight"]} .${f.x.menuIcon}`]:{marginRight:"auto",marginLeft:-5},[`& .${f.x["columnHeader--moving"]}`]:{backgroundColor:(e.vars||e).palette.action.hover},[`& .${f.x["columnHeader--pinnedLeft"]}, & .${f.x["columnHeader--pinnedRight"]}`]:{position:"sticky",zIndex:4,background:"var(--DataGrid-pinnedBackground)"},[`& .${f.x.columnSeparator}`]:{position:"absolute",overflow:"hidden",zIndex:3,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",maxWidth:10,color:o},[`& .${f.x.columnHeaders}`]:{width:"var(--DataGrid-rowWidth)"},"@media (hover: hover)":{[`& .${f.x.columnHeader}:hover`]:b,[`& .${f.x.columnHeader}:not(.${f.x["columnHeader--sorted"]}):hover .${f.x.sortIcon}`]:{opacity:.5}},"@media (hover: none)":{[`& .${f.x.columnHeader}`]:b,[`& .${f.x.columnHeader}:focus,\n        & .${f.x["columnHeader--siblingFocused"]}`]:{[`.${f.x["columnSeparator--resizable"]}`]:{color:(e.vars||e).palette.primary.main}}},[`& .${f.x["columnSeparator--sideLeft"]}`]:{left:-5},[`& .${f.x["columnSeparator--sideRight"]}`]:{right:-5},[`& .${f.x["columnHeader--withRightBorder"]} .${f.x["columnSeparator--sideLeft"]}`]:{left:-5.5},[`& .${f.x["columnHeader--withRightBorder"]} .${f.x["columnSeparator--sideRight"]}`]:{right:-5.5},[`& .${f.x["columnSeparator--resizable"]}`]:{cursor:"col-resize",touchAction:"none",[`&.${f.x["columnSeparator--resizing"]}`]:{color:(e.vars||e).palette.primary.main},"@media (hover: none)":{[`& .${f.x.iconSeparator} rect`]:w},"@media (hover: hover)":{"&:hover":{color:(e.vars||e).palette.primary.main,[`& .${f.x.iconSeparator} rect`]:w}},"& svg":{pointerEvents:"none"}},[`& .${f.x.iconSeparator}`]:{color:"inherit",transition:e.transitions.create(["color","width"],{duration:e.transitions.duration.shortest})},[`& .${f.x.menuIcon}`]:{width:0,visibility:"hidden",fontSize:20,marginRight:-5,display:"flex",alignItems:"center"},[`.${f.x.menuOpen}`]:{visibility:"visible",width:"auto"},[`& .${f.x.headerFilterRow}`]:{[`& .${f.x.columnHeader}`]:{boxSizing:"border-box",borderBottom:"1px solid var(--DataGrid-rowBorderColor)"}},[`& .${f.x["row--borderBottom"]} .${f.x.columnHeader},\n      & .${f.x["row--borderBottom"]} .${f.x.filler},\n      & .${f.x["row--borderBottom"]} .${f.x.scrollbarFiller}`]:{borderBottom:"1px solid var(--DataGrid-rowBorderColor)"},[`& .${f.x["row--borderBottom"]} .${f.x.cell}`]:{borderBottom:"1px solid var(--rowBorderColor)"},[`.${f.x.row}`]:{display:"flex",width:"var(--DataGrid-rowWidth)",breakInside:"avoid","--rowBorderColor":"var(--DataGrid-rowBorderColor)",[`&.${f.x["row--firstVisible"]}`]:{"--rowBorderColor":"transparent"},"&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${f.x.rowSkeleton}:hover`]:{backgroundColor:"transparent"},"&.Mui-selected":I},[`& .${f.x["container--top"]}, & .${f.x["container--bottom"]}`]:{"[role=row]":{background:"var(--DataGrid-containerBackground)"}},[`& .${f.x.cell}`]:{height:"var(--height)",width:"var(--width)",lineHeight:"calc(var(--height) - 1px)",boxSizing:"border-box",borderTop:"1px solid var(--rowBorderColor)",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis","&.Mui-selected":I},[`& .${f.x["virtualScrollerContent--overflowed"]} .${f.x["row--lastVisible"]} .${f.x.cell}`]:{borderTopColor:"transparent"},[`& .${f.x["pinnedRows--top"]} :first-of-type`]:{[`& .${f.x.cell}, .${f.x.scrollbarFiller}`]:{borderTop:"none"}},[`&.${f.x["root--disableUserSelection"]} .${f.x.cell}`]:{userSelect:"none"},[`& .${f.x["row--dynamicHeight"]} > .${f.x.cell}`]:{whiteSpace:"initial",lineHeight:"inherit"},[`& .${f.x.cellEmpty}`]:{padding:0,height:"unset"},[`& .${f.x.cell}.${f.x["cell--selectionMode"]}`]:{cursor:"default"},[`& .${f.x.cell}.${f.x["cell--editing"]}`]:{padding:1,display:"flex",boxShadow:e.shadows[2],backgroundColor:(e.vars||e).palette.background.paper,"&:focus-within":{outline:`1px solid ${(e.vars||e).palette.primary.main}`,outlineOffset:-1}},[`& .${f.x["row--editing"]}`]:{boxShadow:e.shadows[2]},[`& .${f.x["row--editing"]} .${f.x.cell}`]:{boxShadow:e.shadows[0],backgroundColor:(e.vars||e).palette.background.paper},[`& .${f.x.editBooleanCell}`]:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},[`& .${f.x.booleanCell}[data-value="true"]`]:{color:(e.vars||e).palette.text.secondary},[`& .${f.x.booleanCell}[data-value="false"]`]:{color:(e.vars||e).palette.text.disabled},[`& .${f.x.actionsCell}`]:{display:"inline-flex",alignItems:"center",gridGap:e.spacing(1)},[`& .${f.x.rowReorderCell}`]:{display:"inline-flex",flex:1,alignItems:"center",justifyContent:"center",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${f.x["rowReorderCell--draggable"]}`]:{cursor:"move",opacity:1},[`& .${f.x.rowReorderCellContainer}`]:{padding:0,display:"flex",alignItems:"stretch"},[`.${f.x.withBorderColor}`]:{borderColor:o},[`& .${f.x["cell--withLeftBorder"]}, & .${f.x["columnHeader--withLeftBorder"]}`]:{borderLeftColor:"var(--DataGrid-rowBorderColor)",borderLeftWidth:"1px",borderLeftStyle:"solid"},[`& .${f.x["cell--withRightBorder"]}, & .${f.x["columnHeader--withRightBorder"]}`]:{borderRightColor:"var(--DataGrid-rowBorderColor)",borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${f.x["cell--flex"]}`]:{display:"flex",alignItems:"center",lineHeight:"inherit"},[`& .${f.x["cell--textLeft"]}`]:{textAlign:"left",justifyContent:"flex-start"},[`& .${f.x["cell--textRight"]}`]:{textAlign:"right",justifyContent:"flex-end"},[`& .${f.x["cell--textCenter"]}`]:{textAlign:"center",justifyContent:"center"},[`& .${f.x["cell--pinnedLeft"]}, & .${f.x["cell--pinnedRight"]}`]:{position:"sticky",zIndex:3,background:"var(--DataGrid-pinnedBackground)"},[`& .${f.x.virtualScrollerContent} .${f.x.row}`]:{"&:hover":{[`& .${f.x["cell--pinnedLeft"]}, & .${f.x["cell--pinnedRight"]}`]:{backgroundColor:A}},"&.Mui-selected":{[`& .${f.x["cell--pinnedLeft"]}, & .${f.x["cell--pinnedRight"]}`]:{backgroundColor:R},"&:hover":{[`& .${f.x["cell--pinnedLeft"]}, & .${f.x["cell--pinnedRight"]}`]:{backgroundColor:S}}}},[`& .${f.x.cellOffsetLeft}`]:{flex:"0 0 auto",display:"inline-block"},[`& .${f.x.cellSkeleton}`]:{flex:"0 0 auto",height:"100%",display:"inline-flex",alignItems:"center"},[`& .${f.x.columnHeaderDraggableContainer}`]:{display:"flex",width:"100%",height:"100%"},[`& .${f.x.rowReorderCellPlaceholder}`]:{display:"none"},[`& .${f.x["columnHeader--dragging"]}, & .${f.x["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${f.x["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity,[`& .${f.x.rowReorderCellPlaceholder}`]:{display:"flex"}},[`& .${f.x.treeDataGroupingCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${f.x.treeDataGroupingCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)},[`& .${f.x.treeDataGroupingCellLoadingContainer}`]:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},[`& .${f.x.groupingCriteriaCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${f.x.groupingCriteriaCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)},[`.${f.x.scrollbarFiller}`]:{minWidth:"calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))",alignSelf:"stretch",[`&.${f.x["scrollbarFiller--borderTop"]}`]:{borderTop:"1px solid var(--DataGrid-rowBorderColor)"},[`&.${f.x["scrollbarFiller--borderBottom"]}`]:{borderBottom:"1px solid var(--DataGrid-rowBorderColor)"},[`&.${f.x["scrollbarFiller--pinnedRight"]}`]:{backgroundColor:"var(--DataGrid-pinnedBackground)",position:"sticky",right:0}},[`& .${f.x.filler}`]:{flex:1},[`& .${f.x["filler--borderBottom"]}`]:{borderBottom:"1px solid var(--DataGrid-rowBorderColor)"},[`& .${f.x["main--hasSkeletonLoadingOverlay"]}`]:{[`& .${f.x.virtualScrollerContent}`]:{position:"fixed",visibility:"hidden"},[`& .${f.x["scrollbar--vertical"]}, & .${f.x.pinnedRows}, & .${f.x.virtualScroller} > .${f.x.filler}`]:{display:"none"}}})}));function v(e,t,r,n=1){const o=(e,t)=>Math.round((e**(1/n)*(1-r)+t**(1/n)*r)**n),l=(0,d.rP)(e),i=(0,d.rP)(t),a=[o(l.values[0],i.values[0]),o(l.values[1],i.values[1]),o(l.values[2],i.values[2])];return(0,d.X0)({type:"rgb",values:a})}var x=r(64565),y=r(33658),A=r(69500);const R=["className"],S=l.forwardRef((function(e,t){const r=(0,x.A)(),{className:d}=e,p=(0,o.A)(e,R),h=(0,m.E)(),b=(0,g.Nc)(h,y._v),w=h.current.rootElementRef,v=(0,c.A)(w,t),S=r,I=((e,t)=>{const{autoHeight:r,classes:n,showCellVerticalBorder:o}=e,l={root:["root",r&&"autoHeight",`root--density${(0,a.A)(t)}`,null===e.slots.toolbar&&"root--noToolbar","withBorderColor",o&&"withVerticalBorder"]};return(0,s.A)(l,f.B,n)})(S,b),[M,k]=l.useState(!1);return(0,u.A)((()=>{k(!0)}),[]),M?(0,A.jsx)(C,(0,n.A)({ref:v,className:(0,i.A)(d,I.root),ownerState:S},p)):null}))},83749:(e,t,r)=>{"use strict";r.d(t,{U:()=>y});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(88215),s=r(88519),c=r(40053),u=r(4407),d=r(943),p=r(20350),f=r(51148),g=r(76959),m=r(64565),h=r(76404),b=r(69500);const w=["open","target","onClose","children","position","className","onExited"],C=e=>{const{classes:t}=e;return(0,s.A)({root:["menu"]},g.B,t)},v=(0,f.Ay)(p.A,{name:"MuiDataGrid",slot:"Menu",overridesResolver:(e,t)=>t.menu})((({theme:e})=>({zIndex:e.zIndex.modal,[`& .${g.x.menuList}`]:{outline:0}}))),x={"bottom-start":"top left","bottom-end":"top right"};function y(e){const{open:t,target:r,onClose:s,children:p,position:f,className:g,onExited:y}=e,A=(0,o.A)(e,w),R=(0,h.h)(),S=(0,m.A)(),I=C(S),M=l.useRef(null);(0,c.A)((()=>{t?M.current=document.activeElement instanceof HTMLElement?document.activeElement:null:(M.current?.focus?.(),M.current=null)}),[t]),l.useEffect((()=>{const e=t?"menuOpen":"menuClose";R.current.publishEvent(e,{target:r})}),[R,t,r]);const k=e=>{e.target&&(r===e.target||r?.contains(e.target))||s(e)};return(0,b.jsx)(v,(0,n.A)({as:S.slots.basePopper,className:(0,i.A)(g,I.root),ownerState:S,open:t,anchorEl:r,transition:!0,placement:f},A,S.slotProps?.basePopper,{children:({TransitionProps:e,placement:t})=>{return(0,b.jsx)(a.x,{onClickAway:k,mouseEvent:"onMouseDown",children:(0,b.jsx)(u.A,(0,n.A)({},e,{style:{transformOrigin:x[t]},onExited:(r=e?.onExited,e=>{r&&r(),y&&y(e)}),children:(0,b.jsx)(d.A,{children:p})}))});var r}}))}},42386:(e,t,r)=>{"use strict";r.d(t,{H:()=>s});var n=r(6614),o=(r(7552),r(52535)),l=r(76404),i=r(83749),a=r(69500);function s({columnMenuId:e,columnMenuButtonId:t,ContentComponent:r,contentComponentProps:s,field:c,open:u,target:d,onExited:p}){const f=(0,l.h)(),g=f.current.getColumn(c),m=(0,o.A)((e=>{e&&(e.stopPropagation(),d?.contains(e.target))||f.current.hideColumnMenu()}));return d&&g?(0,a.jsx)(i.U,{placement:"bottom-"+("right"===g.align?"start":"end"),open:u,target:d,onClose:m,onExited:p,children:(0,a.jsx)(r,(0,n.A)({colDef:g,hideMenu:m,open:u,id:e,labelledby:t},s))}):null}},66456:(e,t,r)=>{"use strict";r.d(t,{ai:()=>m,ep:()=>h,aU:()=>w,HO:()=>b});var n=r(6614),o=r(83673),l=r(7552),i=r(24387),a=r(71115);const s=["displayOrder"];var c=r(2956),u=r(32745),d=r(32780),p=r(23942),f=r(69500);const g=["defaultSlots","defaultSlotProps","slots","slotProps"],m={columnMenuSortItem:p.H,columnMenuFilterItem:d.r,columnMenuColumnsItem:u.O},h={columnMenuSortItem:{displayOrder:10},columnMenuFilterItem:{displayOrder:20},columnMenuColumnsItem:{displayOrder:30}},b=l.forwardRef((function(e,t){const{defaultSlots:r,defaultSlotProps:u,slots:d,slotProps:p}=e,m=(0,o.A)(e,g),h=(e=>{const t=(0,a.E)(),{defaultSlots:r,defaultSlotProps:c,slots:u={},slotProps:d={},hideMenu:p,colDef:f,addDividers:g=!0}=e,m=l.useMemo((()=>(0,n.A)({},r,u)),[r,u]),h=l.useMemo((()=>{if(!d||0===Object.keys(d).length)return c;const e=(0,n.A)({},d);return Object.entries(c).forEach((([t,r])=>{e[t]=(0,n.A)({},r,d[t]||{})})),e}),[c,d]),b=t.current.unstable_applyPipeProcessors("columnMenu",[],e.colDef),w=l.useMemo((()=>{const e=Object.keys(r);return Object.keys(u).filter((t=>!e.includes(t)))}),[u,r]);return l.useMemo((()=>{const e=Array.from(new Set([...b,...w])).filter((e=>null!=m[e])).sort(((e,t)=>{const r=h[e],n=h[t];return(Number.isFinite(r?.displayOrder)?r.displayOrder:100)-(Number.isFinite(n?.displayOrder)?n.displayOrder:100)}));return e.reduce(((t,r,l)=>{let a={colDef:f,onClick:p};const c=h[r];if(c){const e=(0,o.A)(c,s);a=(0,n.A)({},a,e)}return g&&l!==e.length-1?[...t,[m[r],a],[i.A,{}]]:[...t,[m[r],a]]}),[])}),[g,f,b,p,m,h,w])})((0,n.A)({},m,{defaultSlots:r,defaultSlotProps:u,slots:d,slotProps:p}));return(0,f.jsx)(c.T,(0,n.A)({ref:t},m,{children:h.map((([e,t],r)=>(0,f.jsx)(e,(0,n.A)({},t),r)))}))})),w=l.forwardRef((function(e,t){return(0,f.jsx)(b,(0,n.A)({},e,{ref:t,defaultSlots:m,defaultSlotProps:h}))}))},2956:(e,t,r)=>{"use strict";r.d(t,{T:()=>g});var n=r(6614),o=r(83673),l=r(93878),i=r(7552),a=r(6679),s=r(51148),c=r(67129),u=r(76959),d=r(69500);const p=["hideMenu","colDef","id","labelledby","className","children","open"],f=(0,s.Ay)(a.A)((()=>({minWidth:248}))),g=i.forwardRef((function(e,t){const{hideMenu:r,id:a,labelledby:s,className:g,children:m,open:h}=e,b=(0,o.A)(e,p),w=i.useCallback((e=>{"Tab"===e.key&&e.preventDefault(),(0,c.HF)(e.key)&&r(e)}),[r]);return(0,d.jsx)(f,(0,n.A)({id:a,ref:t,className:(0,l.A)(u.x.menuList,g),"aria-labelledby":s,onKeyDown:w,autoFocus:h},b,{children:m}))}))},32745:(e,t,r)=>{"use strict";r.d(t,{O:()=>s});var n=r(6614),o=r(7552),l=r(49158),i=r(61361),a=r(69500);function s(e){return(0,a.jsxs)(o.Fragment,{children:[(0,a.jsx)(l.l,(0,n.A)({},e)),(0,a.jsx)(i.s,(0,n.A)({},e))]})}},32780:(e,t,r)=>{"use strict";r.d(t,{r:()=>u});var n=r(7552),o=r(29629),l=r(66765),i=r(81453),a=r(76404),s=r(64565),c=r(69500);function u(e){const{colDef:t,onClick:r}=e,u=(0,a.h)(),d=(0,s.A)(),p=n.useCallback((e=>{r(e),u.current.showFilterPanel(t.field)}),[u,t.field,r]);return d.disableColumnFilter||!t.filterable?null:(0,c.jsxs)(o.A,{onClick:p,children:[(0,c.jsx)(l.A,{children:(0,c.jsx)(d.slots.columnMenuFilterIcon,{fontSize:"small"})}),(0,c.jsx)(i.A,{children:u.current.getLocaleText("columnMenuFilter")})]})}},49158:(e,t,r)=>{"use strict";r.d(t,{l:()=>d});var n=r(7552),o=r(29629),l=r(66765),i=r(81453),a=r(76404),s=r(64565),c=r(80163),u=r(69500);function d(e){const{colDef:t,onClick:r}=e,d=(0,a.h)(),p=(0,s.A)(),f=1===(0,c.iv)(d).filter((e=>!0!==e.disableColumnMenu)).length,g=n.useCallback((e=>{f||(d.current.setColumnVisibility(t.field,!1),r(e))}),[d,t.field,r,f]);return p.disableColumnSelector||!1===t.hideable?null:(0,u.jsxs)(o.A,{onClick:g,disabled:f,children:[(0,u.jsx)(l.A,{children:(0,u.jsx)(p.slots.columnMenuHideIcon,{fontSize:"small"})}),(0,u.jsx)(i.A,{children:d.current.getLocaleText("columnMenuHideColumn")})]})}},61361:(e,t,r)=>{"use strict";r.d(t,{s:()=>d});var n=r(7552),o=r(29629),l=r(66765),i=r(81453),a=r(48534),s=r(76404),c=r(64565),u=r(69500);function d(e){const{onClick:t}=e,r=(0,s.h)(),d=(0,c.A)(),p=n.useCallback((e=>{t(e),r.current.showPreferences(a.y.columns)}),[r,t]);return d.disableColumnSelector?null:(0,u.jsxs)(o.A,{onClick:p,children:[(0,u.jsx)(l.A,{children:(0,u.jsx)(d.slots.columnMenuManageColumnsIcon,{fontSize:"small"})}),(0,u.jsx)(i.A,{children:r.current.getLocaleText("columnMenuManageColumns")})]})}},23942:(e,t,r)=>{"use strict";r.d(t,{H:()=>p});var n=r(7552),o=r(29629),l=r(66765),i=r(81453),a=r(12274),s=r(43026),c=r(76404),u=r(64565),d=r(69500);function p(e){const{colDef:t,onClick:r}=e,p=(0,c.h)(),f=(0,a.Nc)(p,s.XU),g=(0,u.A)(),m=n.useMemo((()=>{if(!t)return null;const e=f.find((e=>e.field===t.field));return e?.sort}),[t,f]),h=t.sortingOrder??g.sortingOrder,b=n.useCallback((e=>{r(e);const n=e.currentTarget.getAttribute("data-value")||null;p.current.sortColumn(t.field,n===m?null:n)}),[p,t,r,m]);if(g.disableColumnSorting||!t||!t.sortable||!h.some((e=>!!e)))return null;const w=e=>{const r=p.current.getLocaleText(e);return"function"==typeof r?r(t):r};return(0,d.jsxs)(n.Fragment,{children:[h.includes("asc")&&"asc"!==m?(0,d.jsxs)(o.A,{onClick:b,"data-value":"asc",children:[(0,d.jsx)(l.A,{children:(0,d.jsx)(g.slots.columnMenuSortAscendingIcon,{fontSize:"small"})}),(0,d.jsx)(i.A,{children:w("columnMenuSortAsc")})]}):null,h.includes("desc")&&"desc"!==m?(0,d.jsxs)(o.A,{onClick:b,"data-value":"desc",children:[(0,d.jsx)(l.A,{children:(0,d.jsx)(g.slots.columnMenuSortDescendingIcon,{fontSize:"small"})}),(0,d.jsx)(i.A,{children:w("columnMenuSortDesc")})]}):null,h.includes(null)&&null!=m?(0,d.jsxs)(o.A,{onClick:b,children:[(0,d.jsx)(l.A,{}),(0,d.jsx)(i.A,{children:p.current.getLocaleText("columnMenuUnsort")})]}):null]})}},16028:(e,t,r)=>{"use strict";r.d(t,{G:()=>s});var n=r(6614),o=(r(7552),r(98118)),l=r(36014),i=r(64565),a=r(69500);function s(e){const t=(0,i.A)();return(0,a.jsx)(o.G,(0,n.A)({},e,{children:(0,a.jsx)(l.D,(0,n.A)({},t.slotProps?.columnsManagement))}))}},63869:(e,t,r)=>{"use strict";r.d(t,{F:()=>C,x:()=>h});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(51148),s=r(3865),c=r(88215),u=r(943),d=r(20350),p=r(76404),f=r(64565),g=r(69500);const m=["children","className","classes"],h=(0,s.A)("MuiDataGrid",["panel","paper"]),b=(0,a.Ay)(d.A,{name:"MuiDataGrid",slot:"Panel",overridesResolver:(e,t)=>t.panel})((({theme:e})=>({zIndex:e.zIndex.modal}))),w=(0,a.Ay)(u.A,{name:"MuiDataGrid",slot:"Paper",overridesResolver:(e,t)=>t.paper})((({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,minWidth:300,maxHeight:450,display:"flex",maxWidth:`calc(100vw - ${e.spacing(.5)})`,overflow:"auto"}))),C=l.forwardRef(((e,t)=>{const{children:r,className:a}=e,s=(0,o.A)(e,m),u=(0,p.h)(),d=(0,f.A)(),C=h,[v,x]=l.useState(!1),y=l.useCallback((()=>{u.current.hidePreferences()}),[u]),A=l.useCallback((e=>{"Escape"===e.key&&u.current.hidePreferences()}),[u]),R=l.useMemo((()=>[{name:"flip",enabled:!0,options:{rootBoundary:"document"}},{name:"isPlaced",enabled:!0,phase:"main",fn:()=>{x(!0)},effect:()=>()=>{x(!1)}}]),[]),[S,I]=l.useState(null);return l.useEffect((()=>{const e=u.current.rootElementRef?.current?.querySelector('[data-id="gridPanelAnchor"]');e&&I(e)}),[u]),S?(0,g.jsx)(b,(0,n.A)({ref:t,placement:"bottom-start",className:(0,i.A)(a,C.panel),ownerState:d,anchorEl:S,modifiers:R},s,{children:(0,g.jsx)(c.x,{mouseEvent:"onMouseUp",onClickAway:y,children:(0,g.jsx)(w,{className:C.paper,ownerState:d,elevation:8,onKeyDown:A,children:v&&r})})})):null}))},53936:(e,t,r)=>{"use strict";r.d(t,{o:()=>g});var n=r(6614),o=r(83673),l=(r(7552),r(93878)),i=r(24959),a=r(88519),s=r(76959),c=r(64565),u=r(69500);const d=["className"],p=e=>{const{classes:t}=e;return(0,a.A)({root:["panelContent"]},s.B,t)},f=(0,i.A)("div",{name:"MuiDataGrid",slot:"PanelContent",overridesResolver:(e,t)=>t.panelContent})({display:"flex",flexDirection:"column",overflow:"auto",flex:"1 1",maxHeight:400});function g(e){const{className:t}=e,r=(0,o.A)(e,d),i=(0,c.A)(),a=p(i);return(0,u.jsx)(f,(0,n.A)({className:(0,l.A)(t,a.root),ownerState:i},r))}},95126:(e,t,r)=>{"use strict";r.d(t,{g:()=>g});var n=r(6614),o=r(83673),l=(r(7552),r(93878)),i=r(24959),a=r(88519),s=r(76959),c=r(64565),u=r(69500);const d=["className"],p=e=>{const{classes:t}=e;return(0,a.A)({root:["panelFooter"]},s.B,t)},f=(0,i.A)("div",{name:"MuiDataGrid",slot:"PanelFooter",overridesResolver:(e,t)=>t.panelFooter})((({theme:e})=>({padding:e.spacing(.5),display:"flex",justifyContent:"space-between"})));function g(e){const{className:t}=e,r=(0,o.A)(e,d),i=(0,c.A)(),a=p(i);return(0,u.jsx)(f,(0,n.A)({className:(0,l.A)(t,a.root),ownerState:i},r))}},98118:(e,t,r)=>{"use strict";r.d(t,{G:()=>h});var n=r(6614),o=r(83673),l=r(7552),i=r(93878),a=r(61864),s=r(51148),c=r(88519),u=r(76959),d=r(64565),p=r(69500);const f=["className","slotProps"],g=(0,s.Ay)("div",{name:"MuiDataGrid",slot:"PanelWrapper",overridesResolver:(e,t)=>t.panelWrapper})({display:"flex",flexDirection:"column",flex:1,"&:focus":{outline:0}}),m=()=>!0,h=l.forwardRef((function(e,t){const{className:r,slotProps:l={}}=e,s=(0,o.A)(e,f),h=(0,d.A)(),b=(e=>{const{classes:t}=e;return(0,c.A)({root:["panelWrapper"]},u.B,t)})(h);return(0,p.jsx)(a.A,(0,n.A)({open:!0,disableEnforceFocus:!0,isEnabled:m},l.TrapFocus,{children:(0,p.jsx)(g,(0,n.A)({ref:t,tabIndex:-1,className:(0,i.A)(r,b.root),ownerState:h},s))}))}))},55766:(e,t,r)=>{"use strict";r.d(t,{R:()=>E});var n=r(6614),o=r(83673),l=r(7552),i=r(88519),a=r(57377),s=r(17505),c=r(51148),u=r(93878),d=r(80163),p=r(2220),f=r(12274),g=r(93527),m=r(76404),h=r(64565),b=r(76959),w=r(12003),C=r(69500);const v=["item","hasMultipleFilters","deleteFilter","applyFilterChanges","showMultiFilterOperators","disableMultiFilterOperator","applyMultiFilterOperatorChanges","focusElementRef","logicOperators","columnsSort","filterColumns","deleteIconProps","logicOperatorInputProps","operatorInputProps","columnInputProps","valueInputProps","readOnly","children"],x=["InputComponentProps"],y=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterForm",overridesResolver:(e,t)=>t.filterForm})((({theme:e})=>({display:"flex",padding:e.spacing(1)}))),A=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterFormDeleteIcon",overridesResolver:(e,t)=>t.filterFormDeleteIcon})((({theme:e})=>({flexShrink:0,justifyContent:"flex-end",marginRight:e.spacing(.5),marginBottom:e.spacing(.2)}))),R=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterFormLogicOperatorInput",overridesResolver:(e,t)=>t.filterFormLogicOperatorInput})({minWidth:55,marginRight:5,justifyContent:"end"}),S=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterFormColumnInput",overridesResolver:(e,t)=>t.filterFormColumnInput})({width:150}),I=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterFormOperatorInput",overridesResolver:(e,t)=>t.filterFormOperatorInput})({width:150}),M=(0,c.Ay)("div",{name:"MuiDataGrid",slot:"FilterFormValueInput",overridesResolver:(e,t)=>t.filterFormValueInput})({width:190}),k=e=>e.headerName||e.field,P=new Intl.Collator,E=l.forwardRef((function(e,t){const{item:r,hasMultipleFilters:c,deleteFilter:E,applyFilterChanges:F,showMultiFilterOperators:H,disableMultiFilterOperator:O,applyMultiFilterOperatorChanges:T,focusElementRef:D,logicOperators:z=[g.V.And,g.V.Or],columnsSort:L,filterColumns:$,deleteIconProps:j={},logicOperatorInputProps:N={},operatorInputProps:V={},columnInputProps:B={},valueInputProps:G={},readOnly:W}=e,_=(0,o.A)(e,v),U=(0,m.h)(),q=(0,f.Nc)(U,d.gv),K=(0,f.Nc)(U,d.Oe),X=(0,f.Nc)(U,p.ZI),Y=(0,a.A)(),Z=(0,a.A)(),Q=(0,a.A)(),J=(0,a.A)(),ee=(0,h.A)(),te=(e=>{const{classes:t}=e;return(0,i.A)({root:["filterForm"],deleteIcon:["filterFormDeleteIcon"],logicOperatorInput:["filterFormLogicOperatorInput"],columnInput:["filterFormColumnInput"],operatorInput:["filterFormOperatorInput"],valueInput:["filterFormValueInput"]},b.B,t)})(ee),re=l.useRef(null),ne=l.useRef(null),oe=X.logicOperator??g.V.And,le=c&&z.length>0,ie=ee.slotProps?.baseFormControl||{},ae=(ee.slotProps?.baseSelect||{}).native??!1,se=ee.slotProps?.baseInputLabel||{},ce=ee.slotProps?.baseSelectOption||{},{InputComponentProps:ue}=G,de=(0,o.A)(G,x),{filteredColumns:pe,selectedField:fe}=l.useMemo((()=>{let e=r.field;const t=!1===q[r.field].filterable?q[r.field]:null;if(t)return{filteredColumns:[t],selectedField:e};if(void 0===$||"function"!=typeof $)return{filteredColumns:K,selectedField:e};const n=$({field:r.field,columns:K,currentFilters:X?.items||[]});return{filteredColumns:K.filter((t=>{const o=n.includes(t.field);return t.field!==r.field||o||(e=void 0),o})),selectedField:e}}),[$,X?.items,K,r.field,q]),ge=l.useMemo((()=>{switch(L){case"asc":return pe.sort(((e,t)=>P.compare(k(e),k(t))));case"desc":return pe.sort(((e,t)=>-P.compare(k(e),k(t))));default:return pe}}),[pe,L]),me=r.field?U.current.getColumn(r.field):null,he=l.useMemo((()=>r.operator&&me?me.filterOperators?.find((e=>e.value===r.operator)):null),[r,me]),be=l.useCallback((e=>{const t=e.target.value,o=U.current.getColumn(t);if(o.field===me.field)return;const l=o.filterOperators.find((e=>e.value===r.operator))||o.filterOperators[0];let i=l.InputComponent&&l.InputComponent===he?.InputComponent&&o.type===me.type?r.value:void 0;if("singleSelect"===o.type&&void 0!==i){const e=o,t=(0,w.KJ)(e);Array.isArray(i)?i=i.filter((r=>void 0!==(0,w.Rc)(r,t,e?.getOptionValue))):void 0===(0,w.Rc)(r.value,t,e?.getOptionValue)&&(i=void 0)}F((0,n.A)({},r,{field:t,operator:l.value,value:i}))}),[U,F,r,me,he]),we=l.useCallback((e=>{const t=e.target.value,o=me?.filterOperators.find((e=>e.value===t)),l=!o?.InputComponent||o?.InputComponent!==he?.InputComponent;F((0,n.A)({},r,{operator:t,value:l?void 0:r.value}))}),[F,r,me,he]),Ce=l.useCallback((e=>{const t=e.target.value===g.V.And.toString()?g.V.And:g.V.Or;T(t)}),[T]);return l.useImperativeHandle(D,(()=>({focus:()=>{he?.InputComponent?re?.current?.focus():ne.current.focus()}})),[he]),(0,C.jsxs)(y,(0,n.A)({ref:t,className:te.root,"data-id":r.id,ownerState:ee},_,{children:[(0,C.jsx)(A,(0,n.A)({variant:"standard",as:ee.slots.baseFormControl},ie,j,{className:(0,u.A)(te.deleteIcon,ie.className,j.className),ownerState:ee,children:(0,C.jsx)(ee.slots.baseIconButton,(0,n.A)({"aria-label":U.current.getLocaleText("filterPanelDeleteIconLabel"),title:U.current.getLocaleText("filterPanelDeleteIconLabel"),onClick:()=>{E(r)},size:"small",disabled:W},ee.slotProps?.baseIconButton,{children:(0,C.jsx)(ee.slots.filterPanelDeleteIcon,{fontSize:"small"})}))})),(0,C.jsx)(R,(0,n.A)({variant:"standard",as:ee.slots.baseFormControl},ie,N,{sx:[le?{display:"flex"}:{display:"none"},H?{visibility:"visible"}:{visibility:"hidden"},ie.sx,N.sx],className:(0,u.A)(te.logicOperatorInput,ie.className,N.className),ownerState:ee,children:(0,C.jsx)(ee.slots.baseSelect,(0,n.A)({inputProps:{"aria-label":U.current.getLocaleText("filterPanelLogicOperator")},value:oe??"",onChange:Ce,disabled:!!O||1===z.length,native:ae},ee.slotProps?.baseSelect,{children:z.map((e=>(0,l.createElement)(ee.slots.baseSelectOption,(0,n.A)({},ce,{native:ae,key:e.toString(),value:e.toString()}),U.current.getLocaleText((e=>{switch(e){case g.V.And:return"filterPanelOperatorAnd";case g.V.Or:return"filterPanelOperatorOr";default:throw new Error("MUI X: Invalid `logicOperator` property in the `GridFilterPanel`.")}})(e)))))}))})),(0,C.jsxs)(S,(0,n.A)({variant:"standard",as:ee.slots.baseFormControl},ie,B,{className:(0,u.A)(te.columnInput,ie.className,B.className),ownerState:ee,children:[(0,C.jsx)(ee.slots.baseInputLabel,(0,n.A)({},se,{htmlFor:Y,id:Z,children:U.current.getLocaleText("filterPanelColumns")})),(0,C.jsx)(ee.slots.baseSelect,(0,n.A)({labelId:Z,id:Y,label:U.current.getLocaleText("filterPanelColumns"),value:fe??"",onChange:be,native:ae,disabled:W},ee.slotProps?.baseSelect,{children:ge.map((e=>(0,l.createElement)(ee.slots.baseSelectOption,(0,n.A)({},ce,{native:ae,key:e.field,value:e.field}),k(e))))}))]})),(0,C.jsxs)(I,(0,n.A)({variant:"standard",as:ee.slots.baseFormControl},ie,V,{className:(0,u.A)(te.operatorInput,ie.className,V.className),ownerState:ee,children:[(0,C.jsx)(ee.slots.baseInputLabel,(0,n.A)({},se,{htmlFor:Q,id:J,children:U.current.getLocaleText("filterPanelOperator")})),(0,C.jsx)(ee.slots.baseSelect,(0,n.A)({labelId:J,label:U.current.getLocaleText("filterPanelOperator"),id:Q,value:r.operator,onChange:we,native:ae,inputRef:ne,disabled:W},ee.slotProps?.baseSelect,{children:me?.filterOperators?.map((e=>(0,l.createElement)(ee.slots.baseSelectOption,(0,n.A)({},ce,{native:ae,key:e.value,value:e.value}),e.label||U.current.getLocaleText(`filterOperator${(0,s.A)(e.value)}`))))}))]})),(0,C.jsx)(M,(0,n.A)({variant:"standard",as:ee.slots.baseFormControl},ie,de,{className:(0,u.A)(te.valueInput,ie.className,de.className),ownerState:ee,children:he?.InputComponent?(0,C.jsx)(he.InputComponent,(0,n.A)({apiRef:U,item:r,applyValue:F,focusElementRef:re,disabled:W},he.InputComponentProps,ue),r.field):null}))]}))}))},19868:(e,t,r)=>{"use strict";r.d(t,{h:()=>p});var n=r(6614),o=r(83673),l=r(7552),i=r(57377),a=r(51148),s=r(64565),c=r(69500);const u=["item","applyValue","apiRef","focusElementRef","isFilterActive","clearButton","tabIndex","label","variant","InputLabelProps"],d=(0,a.Ay)("div")({display:"flex",alignItems:"center",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function p(e){const{item:t,applyValue:r,apiRef:a,focusElementRef:p,clearButton:f,tabIndex:g,label:m,variant:h="standard"}=e,b=(0,o.A)(e,u),[w,C]=l.useState(t.value||""),v=(0,s.A)(),x=(0,i.A)(),y=(0,i.A)(),A=v.slotProps?.baseSelect||{},R=A.native??!1,S=v.slotProps?.baseSelectOption||{},I=l.useCallback((e=>{const o=e.target.value;C(o),r((0,n.A)({},t,{value:o}))}),[r,t]);l.useEffect((()=>{C(t.value||"")}),[t.value]);const M=m??a.current.getLocaleText("filterPanelInputLabel");return(0,c.jsxs)(d,{children:[(0,c.jsxs)(v.slots.baseFormControl,{fullWidth:!0,children:[(0,c.jsx)(v.slots.baseInputLabel,(0,n.A)({},v.slotProps?.baseInputLabel,{id:x,shrink:!0,variant:h,children:M})),(0,c.jsxs)(v.slots.baseSelect,(0,n.A)({labelId:x,id:y,label:M,value:w,onChange:I,variant:h,notched:"outlined"===h||void 0,native:R,displayEmpty:!0,inputProps:{ref:p,tabIndex:g}},b,A,{children:[(0,c.jsx)(v.slots.baseSelectOption,(0,n.A)({},S,{native:R,value:"",children:a.current.getLocaleText("filterValueAny")})),(0,c.jsx)(v.slots.baseSelectOption,(0,n.A)({},S,{native:R,value:"true",children:a.current.getLocaleText("filterValueTrue")})),(0,c.jsx)(v.slots.baseSelectOption,(0,n.A)({},S,{native:R,value:"false",children:a.current.getLocaleText("filterValueFalse")}))]}))]}),f]})}},22762:(e,t,r)=>{"use strict";r.d(t,{L:()=>p});var n=r(6614),o=r(83673),l=r(7552),i=r(57377),a=r(87795),s=r(64565),c=r(69500);const u=["item","applyValue","type","apiRef","focusElementRef","InputProps","isFilterActive","clearButton","tabIndex","disabled"];function d(e,t){if(null==e)return"";const r=new Date(e);return Number.isNaN(r.getTime())?"":"date"===t?r.toISOString().substring(0,10):"datetime-local"===t?(r.setMinutes(r.getMinutes()-r.getTimezoneOffset()),r.toISOString().substring(0,19)):r.toISOString().substring(0,10)}function p(e){const{item:t,applyValue:r,type:p,apiRef:f,focusElementRef:g,InputProps:m,clearButton:h,tabIndex:b,disabled:w}=e,C=(0,o.A)(e,u),v=(0,a.A)(),[x,y]=l.useState((()=>d(t.value,p))),[A,R]=l.useState(!1),S=(0,i.A)(),I=(0,s.A)(),M=l.useCallback((e=>{v.clear();const o=e.target.value;y(o),R(!0),v.start(I.filterDebounceMs,(()=>{const e=new Date(o);r((0,n.A)({},t,{value:Number.isNaN(e.getTime())?void 0:e})),R(!1)}))}),[r,t,I.filterDebounceMs,v]);return l.useEffect((()=>{const e=d(t.value,p);y(e)}),[t.value,p]),(0,c.jsx)(I.slots.baseTextField,(0,n.A)({fullWidth:!0,id:S,label:f.current.getLocaleText("filterPanelInputLabel"),placeholder:f.current.getLocaleText("filterPanelInputPlaceholder"),value:x,onChange:M,variant:"standard",type:p||"text",InputLabelProps:{shrink:!0},inputRef:g,InputProps:(0,n.A)({},A||h?{endAdornment:A?(0,c.jsx)(I.slots.loadIcon,{fontSize:"small",color:"action"}):h}:{},{disabled:w},m,{inputProps:(0,n.A)({max:"datetime-local"===p?"9999-12-31T23:59":"9999-12-31",tabIndex:b},m?.inputProps)})},C,I.slotProps?.baseTextField))}},57134:(e,t,r)=>{"use strict";r.d(t,{B:()=>m});var n=r(6614),o=r(83673),l=r(7552),i=r(25419),a=r(48901),s=r(57377),c=r(12003),u=r(64565),d=r(69500);const p=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant"],f=["key"],g=(0,i.Z)();function m(e){const{item:t,applyValue:r,apiRef:i,focusElementRef:m,color:h,error:b,helperText:w,size:C,variant:v="standard"}=e,x=(0,o.A)(e,p),y={color:h,error:b,helperText:w,size:C,variant:v},A=(0,s.A)(),R=(0,u.A)();let S=null;if(t.field){const e=i.current.getColumn(t.field);(0,c._W)(e)&&(S=e)}const I=S?.getOptionValue,M=S?.getOptionLabel,k=l.useCallback(((e,t)=>I(e)===I(t)),[I]),P=l.useMemo((()=>(0,c.KJ)(S)||[]),[S]),E=l.useMemo((()=>Array.isArray(t.value)?t.value.reduce(((e,t)=>{const r=P.find((e=>I(e)===t));return null!=r&&e.push(r),e}),[]):[]),[I,t.value,P]),F=l.useCallback(((e,o)=>{r((0,n.A)({},t,{value:o.map(I)}))}),[r,t,I]);return(0,d.jsx)(a.A,(0,n.A)({multiple:!0,options:P,isOptionEqualToValue:k,filterOptions:g,id:A,value:E,onChange:F,getOptionLabel:M,renderTags:(e,t)=>e.map(((e,r)=>{const l=t({index:r}),{key:i}=l,a=(0,o.A)(l,f);return(0,d.jsx)(R.slots.baseChip,(0,n.A)({variant:"outlined",size:"small",label:M(e)},a),i)})),renderInput:e=>(0,d.jsx)(R.slots.baseTextField,(0,n.A)({},e,{label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:(0,n.A)({},e.InputLabelProps,{shrink:!0}),inputRef:m,type:"singleSelect"},y,R.slotProps?.baseTextField))},x))}},33745:(e,t,r)=>{"use strict";r.d(t,{M:()=>p});var n=r(6614),o=r(83673),l=r(7552),i=r(48901),a=r(57377),s=r(64565),c=r(69500);const u=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant"],d=["key"];function p(e){const{item:t,applyValue:r,type:p,apiRef:f,focusElementRef:g,color:m,error:h,helperText:b,size:w,variant:C="standard"}=e,v=(0,o.A)(e,u),x={color:m,error:h,helperText:b,size:w,variant:C},[y,A]=l.useState(t.value||[]),R=(0,a.A)(),S=(0,s.A)();l.useEffect((()=>{const e=t.value??[];A(e.map(String))}),[t.value]);const I=l.useCallback(((e,o)=>{A(o.map(String)),r((0,n.A)({},t,{value:[...o]}))}),[r,t]);return(0,c.jsx)(i.A,(0,n.A)({multiple:!0,freeSolo:!0,options:[],filterOptions:(e,t)=>{const{inputValue:r}=t;return null==r||""===r?[]:[r]},id:R,value:y,onChange:I,renderTags:(e,t)=>e.map(((e,r)=>{const l=t({index:r}),{key:i}=l,a=(0,o.A)(l,d);return(0,c.jsx)(S.slots.baseChip,(0,n.A)({variant:"outlined",size:"small",label:e},a),i)})),renderInput:e=>(0,c.jsx)(S.slots.baseTextField,(0,n.A)({},e,{label:f.current.getLocaleText("filterPanelInputLabel"),placeholder:f.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:(0,n.A)({},e.InputLabelProps,{shrink:!0}),inputRef:g,type:p||"text"},x,S.slotProps?.baseTextField))},v))}},24634:(e,t,r)=>{"use strict";r.d(t,{t:()=>g});var n=r(83673),o=r(6614),l=r(7552),i=r(57377),a=r(51148),s=r(64565),c=r(12003),u=r(69500);const d=["item","applyValue","type","apiRef","focusElementRef","placeholder","tabIndex","label","variant","isFilterActive","clearButton","InputLabelProps"],p=({column:e,OptionComponent:t,getOptionLabel:r,getOptionValue:n,isSelectNative:i,baseSelectOptionProps:a})=>["",...(0,c.KJ)(e)||[]].map((e=>{const s=n(e);let c=r(e);return""===c&&(c=" "),(0,l.createElement)(t,(0,o.A)({},a,{native:i,key:s,value:s}),c)})),f=(0,a.Ay)("div")({display:"flex",alignItems:"flex-end",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function g(e){const{item:t,applyValue:r,type:a,apiRef:g,focusElementRef:m,placeholder:h,tabIndex:b,label:w,variant:C="standard",clearButton:v}=e,x=(0,n.A)(e,d),y=t.value??"",A=(0,i.A)(),R=(0,i.A)(),S=(0,s.A)(),I=S.slotProps?.baseSelect?.native??!1;let M=null;if(t.field){const e=g.current.getColumn(t.field);(0,c._W)(e)&&(M=e)}const k=M?.getOptionValue,P=M?.getOptionLabel,E=l.useMemo((()=>(0,c.KJ)(M)),[M]),F=l.useCallback((e=>{let n=e.target.value;n=(0,c.Rc)(n,E,k),r((0,o.A)({},t,{value:n}))}),[E,k,r,t]);if(!(0,c._W)(M))return null;const H=w??g.current.getLocaleText("filterPanelInputLabel");return(0,u.jsxs)(f,{children:[(0,u.jsxs)(S.slots.baseFormControl,{fullWidth:!0,children:[(0,u.jsx)(S.slots.baseInputLabel,(0,o.A)({},S.slotProps?.baseInputLabel,{id:R,htmlFor:A,shrink:!0,variant:C,children:H})),(0,u.jsx)(S.slots.baseSelect,(0,o.A)({id:A,label:H,labelId:R,value:y,onChange:F,variant:C,type:a||"text",inputProps:{tabIndex:b,ref:m,placeholder:h??g.current.getLocaleText("filterPanelInputPlaceholder")},native:I,notched:"outlined"===C||void 0},x,S.slotProps?.baseSelect,{children:p({column:M,OptionComponent:S.slots.baseSelectOption,getOptionLabel:P,getOptionValue:k,isSelectNative:I,baseSelectOptionProps:S.slotProps?.baseSelectOption})}))]}),v]})}},31525:(e,t,r)=>{"use strict";r.d(t,{y:()=>d});var n=r(6614),o=r(83673),l=r(7552),i=r(57377),a=r(87795),s=r(64565),c=r(69500);const u=["item","applyValue","type","apiRef","focusElementRef","tabIndex","disabled","isFilterActive","clearButton","InputProps","variant"];function d(e){const{item:t,applyValue:r,type:d,apiRef:p,focusElementRef:f,tabIndex:g,disabled:m,clearButton:h,InputProps:b,variant:w="standard"}=e,C=(0,o.A)(e,u),v=(0,a.A)(),[x,y]=l.useState(t.value??""),[A,R]=l.useState(!1),S=(0,i.A)(),I=(0,s.A)(),M=l.useCallback((e=>{const{value:o}=e.target;y(String(o)),R(!0),v.start(I.filterDebounceMs,(()=>{const e=(0,n.A)({},t,{value:o,fromInput:S});r(e),R(!1)}))}),[S,r,t,I.filterDebounceMs,v]);return l.useEffect((()=>{t.fromInput===S&&void 0!==t.value||y(String(t.value??""))}),[S,t]),(0,c.jsx)(I.slots.baseTextField,(0,n.A)({id:S,label:p.current.getLocaleText("filterPanelInputLabel"),placeholder:p.current.getLocaleText("filterPanelInputPlaceholder"),value:x,onChange:M,variant:w,type:d||"text",InputProps:(0,n.A)({},A||h?{endAdornment:A?(0,c.jsx)(I.slots.loadIcon,{fontSize:"small",color:"action"}):h}:{},{disabled:m},b,{inputProps:(0,n.A)({tabIndex:g},b?.inputProps)}),InputLabelProps:{shrink:!0},inputRef:f},C,I.slotProps?.baseTextField))}},51820:(e,t,r)=>{"use strict";r.d(t,{v:()=>C});var n=r(6614),o=r(83673),l=r(7552),i=r(93527),a=r(76404),s=r(53936),c=r(95126),u=r(98118),d=r(55766),p=r(64565),f=r(12274),g=r(2220),m=r(80163),h=r(69500);const b=["logicOperators","columnsSort","filterFormProps","getColumnForNewFilter","children","disableAddFilterButton","disableRemoveAllButton"],w=e=>({field:e.field,operator:e.filterOperators[0].value,id:Math.round(1e5*Math.random())}),C=l.forwardRef((function(e,t){const r=(0,a.h)(),C=(0,p.A)(),v=(0,f.Nc)(r,g.ZI),x=(0,f.Nc)(r,m.Oe),y=(0,f.Nc)(r,m.U8),A=l.useRef(null),R=l.useRef(null),{logicOperators:S=[i.V.And,i.V.Or],columnsSort:I,filterFormProps:M,getColumnForNewFilter:k,disableAddFilterButton:P=!1,disableRemoveAllButton:E=!1}=e,F=(0,o.A)(e,b),H=r.current.upsertFilterItem,O=l.useCallback((e=>{r.current.setFilterLogicOperator(e)}),[r]),T=l.useCallback((()=>{let e;if(k&&"function"==typeof k){const t=k({currentFilters:v?.items||[],columns:x});if(null===t)return null;e=x.find((({field:e})=>e===t))}else e=x.find((e=>e.filterOperators?.length));return e?w(e):null}),[v?.items,x,k]),D=l.useCallback((()=>{if(void 0===k||"function"!=typeof k)return T();const e=v.items.length?v.items:[T()].filter(Boolean),t=k({currentFilters:e,columns:x});if(null===t)return null;const r=x.find((({field:e})=>e===t));return r?w(r):null}),[v.items,x,k,T]),z=l.useMemo((()=>v.items.length?v.items:(R.current||(R.current=T()),R.current?[R.current]:[])),[v.items,T]),L=z.length>1,{readOnlyFilters:$,validFilters:j}=l.useMemo((()=>z.reduce(((e,t)=>(y[t.field]?e.validFilters.push(t):e.readOnlyFilters.push(t),e)),{readOnlyFilters:[],validFilters:[]})),[z,y]),N=l.useCallback((()=>{const e=D();e&&r.current.upsertFilterItems([...z,e])}),[r,D,z]),V=l.useCallback((e=>{const t=1===j.length;r.current.deleteFilterItem(e),t&&r.current.hideFilterPanel()}),[r,j.length]),B=l.useCallback((()=>1===j.length&&void 0===j[0].value?(r.current.deleteFilterItem(j[0]),r.current.hideFilterPanel()):r.current.setFilterModel((0,n.A)({},v,{items:$}),"removeAllFilterItems")),[r,$,v,j]);return l.useEffect((()=>{S.length>0&&v.logicOperator&&!S.includes(v.logicOperator)&&O(S[0])}),[S,O,v.logicOperator]),l.useEffect((()=>{j.length>0&&A.current.focus()}),[j.length]),(0,h.jsxs)(u.G,(0,n.A)({ref:t},F,{children:[(0,h.jsxs)(s.o,{children:[$.map(((e,t)=>(0,h.jsx)(d.R,(0,n.A)({item:e,applyFilterChanges:H,deleteFilter:V,hasMultipleFilters:L,showMultiFilterOperators:t>0,disableMultiFilterOperator:1!==t,applyMultiFilterOperatorChanges:O,focusElementRef:null,readOnly:!0,logicOperators:S,columnsSort:I},M),null==e.id?t:e.id))),j.map(((e,t)=>(0,h.jsx)(d.R,(0,n.A)({item:e,applyFilterChanges:H,deleteFilter:V,hasMultipleFilters:L,showMultiFilterOperators:$.length+t>0,disableMultiFilterOperator:$.length+t!==1,applyMultiFilterOperatorChanges:O,focusElementRef:t===j.length-1?A:null,logicOperators:S,columnsSort:I},M),null==e.id?t+$.length:e.id)))]}),C.disableMultipleColumnsFiltering||P&&E?null:(0,h.jsxs)(c.g,{children:[P?(0,h.jsx)("span",{}):(0,h.jsx)(C.slots.baseButton,(0,n.A)({onClick:N,startIcon:(0,h.jsx)(C.slots.filterPanelAddIcon,{})},C.slotProps?.baseButton,{children:r.current.getLocaleText("filterPanelAddFilter")})),!E&&j.length>0?(0,h.jsx)(C.slots.baseButton,(0,n.A)({onClick:B,startIcon:(0,h.jsx)(C.slots.filterPanelRemoveAllIcon,{})},C.slotProps?.baseButton,{children:r.current.getLocaleText("filterPanelRemoveAll")})):null]})]}))}))},12003:(e,t,r)=>{"use strict";r.d(t,{KJ:()=>l,Rc:()=>i,_W:()=>o});var n=r(6614);function o(e){return"singleSelect"===e?.type}function l(e,t){if(e)return"function"==typeof e.valueOptions?e.valueOptions((0,n.A)({field:e.field},t)):e.valueOptions}function i(e,t,r){if(void 0===t)return;const n=t.find((t=>{const n=r(t);return String(n)===String(e)}));return r(n)}},38175:(e,t,r)=>{"use strict";r.d(t,{ME:()=>g,jX:()=>f,qn:()=>m});var n=r(6614),o=r(83673),l=r(7552),i=r(29629),a=r(76404),s=r(75492),c=r(69500);const u=["hideMenu","options"],d=["hideMenu","options"],p=["csvOptions","printOptions","excelOptions"];function f(e){const t=(0,a.h)(),{hideMenu:r,options:l}=e,s=(0,o.A)(e,u);return(0,c.jsx)(i.A,(0,n.A)({onClick:()=>{t.current.exportDataAsCsv(l),r?.()}},s,{children:t.current.getLocaleText("toolbarExportCSV")}))}function g(e){const t=(0,a.h)(),{hideMenu:r,options:l}=e,s=(0,o.A)(e,d);return(0,c.jsx)(i.A,(0,n.A)({onClick:()=>{t.current.exportDataAsPrint(l),r?.()}},s,{children:t.current.getLocaleText("toolbarExportPrint")}))}const m=l.forwardRef((function(e,t){const{csvOptions:r={},printOptions:i={},excelOptions:u}=e,d=(0,o.A)(e,p),f=(0,a.h)().current.unstable_applyPipeProcessors("exportMenu",[],{excelOptions:u,csvOptions:r,printOptions:i}).sort(((e,t)=>e.componentName>t.componentName?1:-1));return 0===f.length?null:(0,c.jsx)(s.Z,(0,n.A)({},d,{ref:t,children:f.map(((e,t)=>l.cloneElement(e.component,{key:t})))}))}))},75492:(e,t,r)=>{"use strict";r.d(t,{Z:()=>g});var n=r(6614),o=r(7552),l=r(57377),i=r(92325),a=r(6679),s=r(67129),c=r(76404),u=r(83749),d=r(64565),p=r(76959),f=r(69500);const g=o.forwardRef((function(e,t){const{children:r,slotProps:g={}}=e,m=g.button||{},h=g.tooltip||{},b=(0,c.h)(),w=(0,d.A)(),C=(0,l.A)(),v=(0,l.A)(),[x,y]=o.useState(!1),A=o.useRef(null),R=(0,i.A)(t,A),S=()=>y(!1);return null==r?null:(0,f.jsxs)(o.Fragment,{children:[(0,f.jsx)(w.slots.baseTooltip,(0,n.A)({title:b.current.getLocaleText("toolbarExportLabel"),enterDelay:1e3},h,w.slotProps?.baseTooltip,{children:(0,f.jsx)(w.slots.baseButton,(0,n.A)({ref:R,size:"small",startIcon:(0,f.jsx)(w.slots.exportIcon,{}),"aria-expanded":x,"aria-label":b.current.getLocaleText("toolbarExportLabel"),"aria-haspopup":"menu","aria-controls":x?v:void 0,id:C},m,{onClick:e=>{y((e=>!e)),m.onClick?.(e)}},w.slotProps?.baseButton,{children:b.current.getLocaleText("toolbarExport")}))})),(0,f.jsx)(u.U,{open:x,target:A.current,onClose:S,position:"bottom-start",children:(0,f.jsx)(a.A,{id:v,className:p.x.menuList,"aria-labelledby":C,onKeyDown:e=>{"Tab"===e.key&&e.preventDefault(),(0,s.HF)(e.key)&&S()},autoFocusItem:x,children:o.Children.map(r,(e=>o.isValidElement(e)?o.cloneElement(e,{hideMenu:S}):e))})})]})}))},71173:(e,t,r)=>{"use strict";r.d(t,{S:()=>fe});var n=r(6614),o=r(7552),l=r(24959),i=r(88519),a=r(93878),s=r(52535),c=r(46345),u=r(64565),d=r(76959),p=r(76404),f=r(89148),g=r(12274),m=r(29641),h=r(33658),b=r(80163),w=r(87795),C=r(60378),v=r(69500);const x=(0,l.A)("div",{name:"MuiDataGrid",slot:"ScrollArea",overridesResolver:(e,t)=>[{[`&.${d.x["scrollArea--left"]}`]:t["scrollArea--left"]},{[`&.${d.x["scrollArea--right"]}`]:t["scrollArea--right"]},t.scrollArea]})((()=>({position:"absolute",top:0,zIndex:101,width:20,bottom:0,[`&.${d.x["scrollArea--left"]}`]:{left:0},[`&.${d.x["scrollArea--right"]}`]:{right:0}}))),y=(0,c.n)((function(e){const{scrollDirection:t}=e,r=o.useRef(null),l=(0,p.h)(),c=(0,w.A)(),y=(0,g.Nc)(l,h.rf),A=(0,g.Nc)(l,b.fc),R=(0,g.Nc)(l,m.z),S=o.useRef({left:0,top:0}),I=()=>{if("left"===t)return S.current.left>0;if("right"===t){const e=A-R.viewportInnerSize.width;return S.current.left<e}return!1},[M,k]=o.useState(!1),[P,E]=o.useState(I),F=(0,u.A)(),H=(0,n.A)({},F,{scrollDirection:t}),O=(e=>{const{scrollDirection:t,classes:r}=e,n={root:["scrollArea",`scrollArea--${t}`]};return(0,i.A)(n,d.B,r)})(H),T=(0,C.pe)(l,F),D=Math.floor(F.columnHeaderHeight*y),z={height:D,top:T-D};"left"===t?z.left=R.leftPinnedWidth:"right"===t&&(z.right=R.rightPinnedWidth+(R.hasScrollX?R.scrollbarSize:0));const L=(0,s.A)((e=>{let n;if(e.preventDefault(),"left"===t)n=e.clientX-r.current.getBoundingClientRect().right;else{if("right"!==t)throw new Error("MUI X: Wrong drag direction");n=Math.max(1,e.clientX-r.current.getBoundingClientRect().left)}n=1.5*(n-1)+1,c.start(0,(()=>{l.current.scroll({left:S.current.left+n,top:S.current.top})}))})),$=(0,s.A)((()=>{k(!0)})),j=(0,s.A)((()=>{k(!1)}));return(0,f.cz)(l,"scrollPositionChange",(e=>{S.current=e,E(I)})),(0,f.cz)(l,"columnHeaderDragStart",$),(0,f.cz)(l,"columnHeaderDragEnd",j),M&&P?(0,v.jsx)(x,{ref:r,className:(0,a.A)(O.root),ownerState:H,onDragOver:L,style:z}):null}));var A=r(11591),R=r(2220),S=r(4394);const I=()=>{const e=(0,p.h)(),t=(0,u.A)(),r=(0,g.Nc)(e,S.H0),n=(0,g.Nc)(e,R.O7),o=0===r,l=(0,g.Nc)(e,S.Dl);let i=null,a=null;return!l&&o&&(i="noRowsOverlay"),!l&&r>0&&0===n&&(i="noResultsOverlay"),l&&(i="loadingOverlay",a=t.slotProps?.loadingOverlay?.[o?"noRowsVariant":"variant"]||null),{overlayType:i,loadingOverlayVariant:a}};var M=r(80677),k=r(71115),P=r(43026),E=r(3247),F=r(8751),H=r(83182);const O=(0,c.n)((function(){const e=(0,k.E)(),t=(0,u.A)(),r=(0,g.Nc)(e,b.iv),o=(0,g.Nc)(e,R.od),l=(0,g.Nc)(e,P.oF),i=(0,g.Nc)(e,E.Kr),a=(0,g.Nc)(e,E.H5),s=(0,g.Nc)(e,E.dS),c=(0,g.Nc)(e,E.rj),d=(0,g.Nc)(e,E.WO),p=(0,g.Nc)(e,F.aC),f=(0,g.Nc)(e,H.$),m=(0,g.Nc)(e,b.FY),h=(0,g.Nc)(e,F.GD),w=!(null===s&&null===i&&null===a),C=e.current.columnHeadersContainerRef;return(0,v.jsx)(t.slots.columnHeaders,(0,n.A)({ref:C,visibleColumns:r,filterColumnLookup:o,sortColumnLookup:l,columnHeaderTabIndexState:i,columnGroupHeaderTabIndexState:s,columnHeaderFocus:c,columnGroupHeaderFocus:d,headerGroupingMaxDepth:p,columnMenuState:f,columnVisibility:m,columnGroupsHeaderStructure:h,hasOtherElementInTabSequence:w},t.slotProps?.columnHeaders))}));var T=r(68337);const D=(0,l.A)("div")({position:"absolute",top:"var(--DataGrid-headersTotalHeight)",left:0}),z=(0,l.A)("div",{name:"MuiDataGrid",slot:"Main",overridesResolver:(e,t)=>t.main})({flexGrow:1,position:"relative",overflow:"hidden"}),L=o.forwardRef(((e,t)=>{const r=(0,u.A)(),o=(0,T.Q)().hooks.useGridAriaAttributes();return(0,v.jsxs)(z,(0,n.A)({ref:t,ownerState:r,className:e.className,tabIndex:-1},o,{children:[(0,v.jsx)(D,{role:"presentation","data-id":"gridPanelAnchor"}),e.children]}))})),$=()=>(0,i.A)({root:["topContainer"]},d.B,{}),j=(0,l.A)("div")({position:"sticky",zIndex:4,top:0});function N(e){const t=$();return(0,v.jsx)(j,(0,n.A)({},e,{className:(0,a.A)(t.root,e.className,d.x["container--top"]),role:"presentation"}))}const V=()=>(0,i.A)({root:["bottomContainer"]},d.B,{}),B=(0,l.A)("div")({position:"sticky",zIndex:4,bottom:"calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))"});function G(e){const t=V();return(0,v.jsx)(B,(0,n.A)({},e,{className:(0,a.A)(t.root,e.className,d.x["container--bottom"]),role:"presentation"}))}const W=(0,l.A)("div",{name:"MuiDataGrid",slot:"VirtualScrollerContent",overridesResolver:(e,t)=>t.virtualScrollerContent})({}),_=o.forwardRef((function(e,t){const r=(0,u.A)(),o=((e,t)=>{const{classes:r}=e,n={root:["virtualScrollerContent",t&&"virtualScrollerContent--overflowed"]};return(0,i.A)(n,d.B,r)})(r,!r.autoHeight&&"auto"===e.style?.minHeight);return(0,v.jsx)(W,(0,n.A)({ref:t},e,{ownerState:r,className:(0,a.A)(o.root,e.className)}))})),U=(0,l.A)("div")({display:"flex",flexDirection:"row",width:"var(--DataGrid-rowWidth)",boxSizing:"border-box"}),q=(0,l.A)("div")({position:"sticky",height:"100%",boxSizing:"border-box",borderTop:"1px solid var(--rowBorderColor)",backgroundColor:"var(--DataGrid-pinnedBackground)"}),K=(0,l.A)(q)({left:0,borderRight:"1px solid var(--rowBorderColor)"}),X=(0,l.A)(q)({right:0,borderLeft:"1px solid var(--rowBorderColor)"}),Y=(0,l.A)("div")({flexGrow:1,borderTop:"1px solid var(--rowBorderColor)"}),Z=(0,c.n)((function({rowsLength:e}){const t=(0,p.h)(),{viewportOuterSize:r,minimumSize:n,hasScrollX:o,hasScrollY:l,scrollbarSize:i,leftPinnedWidth:a,rightPinnedWidth:s}=(0,g.Nc)(t,m.z),c=o?i:0,u=r.height-n.height-c,f=Math.max(c,u);return 0===f?null:(0,v.jsxs)(U,{className:d.x.filler,role:"presentation",style:{height:f,"--rowBorderColor":0===e?"transparent":"var(--DataGrid-rowBorderColor)"},children:[a>0&&(0,v.jsx)(K,{className:d.x["filler--pinnedLeft"],style:{width:a}}),(0,v.jsx)(Y,{}),s>0&&(0,v.jsx)(X,{className:d.x["filler--pinnedRight"],style:{width:s+(l?i:0)}})]})}));var Q=r(83673),J=r(69639),ee=r(35281);const te=["className"],re=(0,l.A)("div",{name:"MuiDataGrid",slot:"VirtualScrollerRenderZone",overridesResolver:(e,t)=>t.virtualScrollerRenderZone})({position:"absolute",display:"flex",flexDirection:"column"}),ne=o.forwardRef((function(e,t){const{className:r}=e,o=(0,Q.A)(e,te),l=(0,p.h)(),s=(0,u.A)(),c=(e=>{const{classes:t}=e;return(0,i.A)({root:["virtualScrollerRenderZone"]},d.B,t)})(s),f=(0,g.Nc)(l,(()=>{const e=(0,ee.nZ)(l);return(0,J.E)(l.current.state).positions[e.firstRowIndex]??0}));return(0,v.jsx)(re,(0,n.A)({ref:t,className:(0,a.A)(c.root,r),ownerState:s,style:{transform:`translate3d(0, ${f}px, 0)`}},o))}));var oe=r(92325),le=r(58329);const ie=(0,l.A)("div")({position:"absolute",display:"inline-block",zIndex:6,"& > div":{display:"inline-block"},"--size":"calc(max(var(--DataGrid-scrollbarSize), 14px))"}),ae=(0,l.A)(ie)({width:"var(--size)",height:"calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))",overflowY:"auto",overflowX:"hidden",outline:0,"& > div":{width:"var(--size)"},top:"var(--DataGrid-topContainerHeight)",right:"0px"}),se=(0,l.A)(ie)({width:"100%",height:"var(--size)",overflowY:"hidden",overflowX:"auto",outline:0,"& > div":{height:"var(--size)"},bottom:"0px"}),ce=(0,l.A)("div")({display:"inline-block"}),ue=o.forwardRef((function(e,t){const r=(0,k.E)(),n=(0,u.A)(),l=o.useRef(!1),a=o.useRef(0),c=o.useRef(null),p=o.useRef(null),f=((e,t)=>{const{classes:r}=e,n={root:["scrollbar",`scrollbar--${t}`],content:["scrollbarContent"]};return(0,i.A)(n,d.B,r)})(n,e.position),h=(0,g.Nc)(r,m.z),b="vertical"===e.position?"height":"width",w="vertical"===e.position?"scrollTop":"scrollLeft",C="vertical"===e.position?h.hasScrollX:h.hasScrollY,x=h.minimumSize[b]+(C?h.scrollbarSize:0),y=("vertical"===e.position?h.viewportInnerSize.height:h.viewportOuterSize.width)*(x/h.viewportOuterSize[b]),A=(0,s.A)((()=>{const e=r.current.virtualScrollerRef.current,t=c.current;if(e[w]===a.current)return;if(l.current)return void(l.current=!1);l.current=!0;const n=e[w]/x;t[w]=n*y,a.current=e[w]})),R=(0,s.A)((()=>{const e=r.current.virtualScrollerRef.current,t=c.current;if(l.current)return void(l.current=!1);l.current=!0;const n=t[w]/y;e[w]=n*x}));(0,le.A)((()=>{const e=r.current.virtualScrollerRef.current,t=c.current;return e.addEventListener("scroll",A,{capture:!0}),t.addEventListener("scroll",R,{capture:!0}),()=>{e.removeEventListener("scroll",A,{capture:!0}),t.removeEventListener("scroll",R,{capture:!0})}})),o.useEffect((()=>{p.current.style.setProperty(b,`${y}px`)}),[y,b]);const S="vertical"===e.position?ae:se;return(0,v.jsx)(S,{ref:(0,oe.A)(t,c),className:f.root,tabIndex:-1,"aria-hidden":"true",children:(0,v.jsx)(ce,{ref:p,className:f.content})})})),de=(e,t,r)=>{const{classes:n}=e,o={root:["main",t.rightPinnedWidth>0&&"main--hasPinnedRight","skeleton"===r&&"main--hasSkeletonLoadingOverlay"],scroller:["virtualScroller",t.hasScrollX&&"virtualScroller--hasScrollX"]};return(0,i.A)(o,d.B,n)},pe=(0,l.A)("div",{name:"MuiDataGrid",slot:"VirtualScroller",overridesResolver:(e,t)=>t.virtualScroller})({position:"relative",height:"100%",overflow:"scroll",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"},"@media print":{overflow:"hidden"},zIndex:0});function fe(e){const t=(0,p.h)(),r=(0,u.A)(),o=(0,g.Nc)(t,m.z),l=I(),i=de(r,o,l.loadingOverlayVariant),a=(0,A.j$)(),{getContainerProps:s,getScrollerProps:c,getContentProps:d,getRenderZoneProps:f,getScrollbarVerticalProps:h,getScrollbarHorizontalProps:b,getRows:w}=a,C=w();return(0,v.jsxs)(L,(0,n.A)({className:i.root},s(),{children:[(0,v.jsx)(y,{scrollDirection:"left"}),(0,v.jsx)(y,{scrollDirection:"right"}),(0,v.jsxs)(pe,(0,n.A)({className:i.scroller},c(),{ownerState:r,children:[(0,v.jsxs)(N,{children:[(0,v.jsx)(O,{}),(0,v.jsx)(r.slots.pinnedRows,{position:"top",virtualScroller:a})]}),(0,v.jsx)(M.I,(0,n.A)({},l)),(0,v.jsx)(_,(0,n.A)({},d(),{children:(0,v.jsxs)(ne,(0,n.A)({},f(),{children:[C,(0,v.jsx)(r.slots.detailPanels,{virtualScroller:a})]}))})),(0,v.jsx)(Z,{rowsLength:C.length}),(0,v.jsx)(G,{children:(0,v.jsx)(r.slots.pinnedRows,{position:"bottom",virtualScroller:a})})]})),o.hasScrollY&&(0,v.jsx)(ue,(0,n.A)({position:"vertical"},h())),o.hasScrollX&&(0,v.jsx)(ue,(0,n.A)({position:"horizontal"},b())),e.children]}))}},76959:(e,t,r)=>{"use strict";r.d(t,{B:()=>o,x:()=>l});var n=r(18943);function o(e){return(0,n.Ay)("MuiDataGrid",e)}const l=(0,r(3865).A)("MuiDataGrid",["actionsCell","aggregationColumnHeader","aggregationColumnHeader--alignLeft","aggregationColumnHeader--alignCenter","aggregationColumnHeader--alignRight","aggregationColumnHeaderLabel","autoHeight","autosizing","booleanCell","cell--editable","cell--editing","cell--flex","cell--textCenter","cell--textLeft","cell--textRight","cell--rangeTop","cell--rangeBottom","cell--rangeLeft","cell--rangeRight","cell--pinnedLeft","cell--pinnedRight","cell--selectionMode","cell","cellCheckbox","cellEmpty","cellSkeleton","cellOffsetLeft","checkboxInput","columnHeader","columnHeader--alignCenter","columnHeader--alignLeft","columnHeader--alignRight","columnHeader--dragging","columnHeader--moving","columnHeader--numeric","columnHeader--sortable","columnHeader--sorted","columnHeader--filtered","columnHeader--pinnedLeft","columnHeader--pinnedRight","columnHeader--last","columnHeader--lastUnpinned","columnHeader--siblingFocused","columnHeaderCheckbox","columnHeaderDraggableContainer","columnHeaderTitle","columnHeaderTitleContainer","columnHeaderTitleContainerContent","columnHeader--filledGroup","columnHeader--emptyGroup","columnHeaders","columnSeparator--resizable","columnSeparator--resizing","columnSeparator--sideLeft","columnSeparator--sideRight","columnSeparator","columnsManagement","columnsManagementRow","columnsManagementHeader","columnsManagementFooter","container--top","container--bottom","detailPanel","detailPanels","detailPanelToggleCell","detailPanelToggleCell--expanded","footerCell","panel","panelHeader","panelWrapper","panelContent","panelFooter","paper","editBooleanCell","editInputCell","filler","filler--borderBottom","filler--pinnedLeft","filler--pinnedRight","filterForm","filterFormDeleteIcon","filterFormLogicOperatorInput","filterFormColumnInput","filterFormOperatorInput","filterFormValueInput","filterIcon","footerContainer","headerFilterRow","iconButtonContainer","iconSeparator","main","main--hasPinnedRight","main--hasSkeletonLoadingOverlay","menu","menuIcon","menuIconButton","menuOpen","menuList","overlay","overlayWrapper","overlayWrapperInner","root","root--densityStandard","root--densityComfortable","root--densityCompact","root--disableUserSelection","root--noToolbar","row","row--editable","row--editing","row--firstVisible","row--lastVisible","row--dragging","row--dynamicHeight","row--detailPanelExpanded","row--borderBottom","rowReorderCellPlaceholder","rowCount","rowReorderCellContainer","rowReorderCell","rowReorderCell--draggable","rowSkeleton","scrollArea--left","scrollArea--right","scrollArea","scrollbar","scrollbar--vertical","scrollbar--horizontal","scrollbarFiller","scrollbarFiller--header","scrollbarFiller--borderTop","scrollbarFiller--borderBottom","scrollbarFiller--pinnedRight","selectedRowCount","sortIcon","toolbarContainer","toolbarFilterList","virtualScroller","virtualScroller--hasScrollX","virtualScrollerContent","virtualScrollerContent--overflowed","virtualScrollerRenderZone","pinnedColumns","withVerticalBorder","withBorderColor","cell--withRightBorder","cell--withLeftBorder","columnHeader--withRightBorder","columnHeader--withLeftBorder","treeDataGroupingCell","treeDataGroupingCellToggle","treeDataGroupingCellLoadingContainer","groupingCriteriaCell","groupingCriteriaCellToggle","pinnedRows","pinnedRows--top","pinnedRows--bottom","pinnedRowsRenderZone"])},59340:(e,t,r)=>{"use strict";r.d(t,{U:()=>n});const n="__detail_panel_toggle__"},52101:(e,t,r)=>{"use strict";r.d(t,{_:()=>n});const n={noRowsLabel:"No rows",noResultsOverlayLabel:"No results found.",toolbarDensity:"Density",toolbarDensityLabel:"Density",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comfortable",toolbarColumns:"Columns",toolbarColumnsLabel:"Select columns",toolbarFilters:"Filters",toolbarFiltersLabel:"Show filters",toolbarFiltersTooltipHide:"Hide filters",toolbarFiltersTooltipShow:"Show filters",toolbarFiltersTooltipActive:e=>1!==e?`${e} active filters`:`${e} active filter`,toolbarQuickFilterPlaceholder:"Search…",toolbarQuickFilterLabel:"Search",toolbarQuickFilterDeleteIconLabel:"Clear",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download as CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download as Excel",columnsManagementSearchTitle:"Search",columnsManagementNoColumns:"No columns",columnsManagementShowHideAllText:"Show/Hide All",columnsManagementReset:"Reset",filterPanelAddFilter:"Add filter",filterPanelRemoveAll:"Remove all",filterPanelDeleteIconLabel:"Delete",filterPanelLogicOperator:"Logic operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"Columns",filterPanelInputLabel:"Value",filterPanelInputPlaceholder:"Filter value",filterOperatorContains:"contains",filterOperatorDoesNotContain:"does not contain",filterOperatorEquals:"equals",filterOperatorDoesNotEqual:"does not equal",filterOperatorStartsWith:"starts with",filterOperatorEndsWith:"ends with",filterOperatorIs:"is",filterOperatorNot:"is not",filterOperatorAfter:"is after",filterOperatorOnOrAfter:"is on or after",filterOperatorBefore:"is before",filterOperatorOnOrBefore:"is on or before",filterOperatorIsEmpty:"is empty",filterOperatorIsNotEmpty:"is not empty",filterOperatorIsAnyOf:"is any of","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contains",headerFilterOperatorDoesNotContain:"Does not contain",headerFilterOperatorEquals:"Equals",headerFilterOperatorDoesNotEqual:"Does not equal",headerFilterOperatorStartsWith:"Starts with",headerFilterOperatorEndsWith:"Ends with",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is not",headerFilterOperatorAfter:"Is after",headerFilterOperatorOnOrAfter:"Is on or after",headerFilterOperatorBefore:"Is before",headerFilterOperatorOnOrBefore:"Is on or before",headerFilterOperatorIsEmpty:"Is empty",headerFilterOperatorIsNotEmpty:"Is not empty",headerFilterOperatorIsAnyOf:"Is any of","headerFilterOperator=":"Equals","headerFilterOperator!=":"Not equals","headerFilterOperator>":"Greater than","headerFilterOperator>=":"Greater than or equal to","headerFilterOperator<":"Less than","headerFilterOperator<=":"Less than or equal to",filterValueAny:"any",filterValueTrue:"true",filterValueFalse:"false",columnMenuLabel:"Menu",columnMenuShowColumns:"Show columns",columnMenuManageColumns:"Manage columns",columnMenuFilter:"Filter",columnMenuHideColumn:"Hide column",columnMenuUnsort:"Unsort",columnMenuSortAsc:"Sort by ASC",columnMenuSortDesc:"Sort by DESC",columnHeaderFiltersTooltipActive:e=>1!==e?`${e} active filters`:`${e} active filter`,columnHeaderFiltersLabel:"Show filters",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>1!==e?`${e.toLocaleString()} rows selected`:`${e.toLocaleString()} row selected`,footerTotalRows:"Total Rows:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} of ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selection",checkboxSelectionSelectAllRows:"Select all rows",checkboxSelectionUnselectAllRows:"Unselect all rows",checkboxSelectionSelectRow:"Select row",checkboxSelectionUnselectRow:"Unselect row",booleanCellTrueLabel:"yes",booleanCellFalseLabel:"no",actionsCellMore:"more",pinToLeft:"Pin to left",pinToRight:"Pin to right",unpin:"Unpin",treeDataGroupingHeaderName:"Group",treeDataExpand:"see children",treeDataCollapse:"hide children",groupingColumnHeaderName:"Group",groupColumn:e=>`Group by ${e}`,unGroupColumn:e=>`Stop grouping by ${e}`,detailPanelToggle:"Detail panel toggle",expandDetailPanel:"Expand",collapseDetailPanel:"Collapse",MuiTablePagination:{},rowReorderingHeaderName:"Row reordering",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"size"}},61311:(e,t,r)=>{"use strict";r.d(t,{X:()=>c});var n=r(7552),o=r(92019),l=r(71115),i=r(65568),a=r(35825),s=r(69500);function c({privateApiRef:e,configuration:t,props:r,children:c}){const u=n.useRef(e.current.getPublicApi());return(0,s.jsx)(a.S.Provider,{value:t,children:(0,s.jsx)(i.y.Provider,{value:r,children:(0,s.jsx)(l.z.Provider,{value:e,children:(0,s.jsx)(o.k.Provider,{value:u,children:c})})})})}},8751:(e,t,r)=>{"use strict";r.d(t,{ED:()=>i,GD:()=>a,TQ:()=>l,aC:()=>s,tf:()=>o});var n=r(33642);const o=e=>e.columnGrouping,l=(0,n.S)(o,(e=>e?.unwrappedGroupingModel??{})),i=(0,n.S)(o,(e=>e?.lookup??{})),a=(0,n.S)(o,(e=>e?.headerStructure??[])),s=(0,n.Mz)(o,(e=>e?.maxDepth??0))},83182:(e,t,r)=>{"use strict";r.d(t,{$:()=>n});const n=e=>e.columnMenu},32125:(e,t,r)=>{"use strict";r.d(t,{N:()=>n});const n={includeHeaders:!0,includeOutliers:!1,outliersFactor:1.5,expand:!1}},36155:(e,t,r)=>{"use strict";r.d(t,{K:()=>n,u:()=>o});let n=function(e){return e.LEFT="left",e.RIGHT="right",e}({});const o={left:[],right:[]}},80163:(e,t,r)=>{"use strict";r.d(t,{OV:()=>s,JR:()=>i,gv:()=>a,Sw:()=>g,FY:()=>c,em:()=>l,fc:()=>m,Oe:()=>h,U8:()=>b,kw:()=>w,He:()=>p,iv:()=>u,TI:()=>d,Q1:()=>f});var n=r(33642),o=r(36155);const l=e=>e.columns,i=(0,n.Mz)(l,(e=>e.orderedFields)),a=(0,n.Mz)(l,(e=>e.lookup)),s=(0,n.S)(i,a,((e,t)=>e.map((e=>t[e])))),c=(0,n.Mz)(l,(e=>e.columnVisibilityModel)),u=(0,n.S)(s,c,((e,t)=>e.filter((e=>!1!==t[e.field])))),d=(0,n.S)(u,(e=>e.map((e=>e.field)))),p=e=>e.pinnedColumns,f=(0,n.S)(l,p,d,(e=>e.isRtl),((e,t,r,n)=>{const l=function(e,t,r){if(!Array.isArray(e.left)&&!Array.isArray(e.right))return o.u;if(0===e.left?.length&&0===e.right?.length)return o.u;const n=(e,t)=>Array.isArray(e)?e.filter((e=>t.includes(e))):[],l=n(e.left,t),i=t.filter((e=>!l.includes(e))),a=n(e.right,i);return r?{left:a,right:l}:{left:l,right:a}}(t,r,n);return{left:l.left.map((t=>e.lookup[t])),right:l.right.map((t=>e.lookup[t]))}})),g=(0,n.S)(u,(e=>{const t=[];let r=0;for(let n=0;n<e.length;n+=1)t.push(r),r+=e[n].computedWidth;return t})),m=(0,n.Mz)(u,g,((e,t)=>{const r=e.length;return 0===r?0:t[r-1]+e[r-1].computedWidth})),h=(0,n.S)(s,(e=>e.filter((e=>e.filterable)))),b=(0,n.S)(s,(e=>e.reduce(((e,t)=>(t.filterable&&(e[t.field]=t),e)),{}))),w=(0,n.S)(s,(e=>e.some((e=>void 0!==e.colSpan))))},60378:(e,t,r)=>{"use strict";r.d(t,{A8:()=>h,LN:()=>f,Pd:()=>m,Pr:()=>d,pe:()=>b});var n=r(6614),o=r(23987),l=r(59747),i=r(80163),a=r(58766),s=r(33658),c=r(10365),u=r(8751);const d=["maxWidth","minWidth","width","flex"],p=(0,o.Z)(),f=(e,t)=>{const r={};let o=0,i=0;const s=[];e.orderedFields.forEach((t=>{let c=e.lookup[t],u=0,d=!1;!1!==e.columnVisibilityModel[t]&&(c.flex&&c.flex>0?(o+=c.flex,d=!0):u=(0,a.qE)(c.width||l.C.width,c.minWidth||l.C.minWidth,c.maxWidth||l.C.maxWidth),i+=u),c.computedWidth!==u&&(c=(0,n.A)({},c,{computedWidth:u})),d&&s.push(c),r[t]=c}));const c=void 0===t?0:t.viewportOuterSize.width-(t.hasScrollY?t.scrollbarSize:0),u=Math.max(c-i,0);if(o>0&&c>0){const e=function({initialFreeSpace:e,totalFlexUnits:t,flexColumns:r}){const n=new Set(r.map((e=>e.field))),o={all:{},frozenFields:[],freeze:e=>{const t=o.all[e];t&&!0!==t.frozen&&(o.all[e].frozen=!0,o.frozenFields.push(e))}};return function l(){if(o.frozenFields.length===n.size)return;const i={min:{},max:{}};let a=e,s=t,c=0;o.frozenFields.forEach((e=>{a-=o.all[e].computedWidth,s-=o.all[e].flex}));for(let e=0;e<r.length;e+=1){const t=r[e];if(o.all[t.field]&&!0===o.all[t.field].frozen)continue;let n=a/s*t.flex;n<t.minWidth?(c+=t.minWidth-n,n=t.minWidth,i.min[t.field]=!0):n>t.maxWidth&&(c+=t.maxWidth-n,n=t.maxWidth,i.max[t.field]=!0),o.all[t.field]={frozen:!1,computedWidth:n,flex:t.flex}}c<0?Object.keys(i.max).forEach((e=>{o.freeze(e)})):c>0?Object.keys(i.min).forEach((e=>{o.freeze(e)})):r.forEach((({field:e})=>{o.freeze(e)})),l()}(),o.all}({initialFreeSpace:u,totalFlexUnits:o,flexColumns:s});Object.keys(e).forEach((t=>{r[t].computedWidth=e[t].computedWidth}))}return(0,n.A)({},e,{lookup:r})};function g(e){let t=p[o.x];return e&&p[e]&&(t=p[e]),t}const m=({apiRef:e,columnsToUpsert:t,initialState:r,columnVisibilityModel:o=(0,i.FY)(e),keepOnlyColumnsToUpsert:l=!1})=>{const a=!e.current.state.columns;let s;if(a)s={orderedFields:[],lookup:{},columnVisibilityModel:o};else{const t=(0,i.em)(e.current.state);s={orderedFields:l?[]:[...t.orderedFields],lookup:(0,n.A)({},t.lookup),columnVisibilityModel:o}}let c={};l&&!a&&(c=Object.keys(s.lookup).reduce(((e,t)=>(0,n.A)({},e,{[t]:!1})),{}));const u={};t.forEach((e=>{const{field:t}=e;u[t]=!0,c[t]=!0;let r=s.lookup[t];null==r?(r=(0,n.A)({},g(e.type),{field:t,hasBeenResized:!1}),s.orderedFields.push(t)):l&&s.orderedFields.push(t),r&&r.type!==e.type&&(r=(0,n.A)({},g(e.type),{field:t}));let o=r.hasBeenResized;d.forEach((t=>{void 0!==e[t]&&(o=!0,-1===e[t]&&(e[t]=1/0))})),s.lookup[t]=(0,n.A)({},r,e,{hasBeenResized:o})})),l&&!a&&Object.keys(s.lookup).forEach((e=>{c[e]||delete s.lookup[e]}));const p=((e,t)=>{if(!t)return e;const{orderedFields:r=[],dimensions:o={}}=t,l=Object.keys(o);if(0===l.length&&0===r.length)return e;const i={},a=[];for(let t=0;t<r.length;t+=1){const n=r[t];e.lookup[n]&&(i[n]=!0,a.push(n))}const s=0===a.length?e.orderedFields:[...a,...e.orderedFields.filter((e=>!i[e]))],c=(0,n.A)({},e.lookup);for(let e=0;e<l.length;e+=1){const t=l[e],r=(0,n.A)({},c[t],{hasBeenResized:!0});Object.entries(o[t]).forEach((([e,t])=>{r[e]=-1===t?1/0:t})),c[t]=r}return(0,n.A)({},e,{orderedFields:s,lookup:c})})(e.current.unstable_applyPipeProcessors("hydrateColumns",s),r);return f(p,e.current.getRootDimensions?.()??void 0)};function h({firstColumnToRender:e,apiRef:t,firstRowToRender:r,lastRowToRender:n,visibleRows:o}){let l=e;for(let i=r;i<n;i+=1)if(o[i]){const r=o[i].id,n=t.current.unstable_getCellColSpanInfo(r,e);n&&n.spannedByColSpan&&(l=n.leftVisibleCellIndex)}return l}function b(e,t){const r=(0,s.rf)(e),n=(0,u.aC)(e),o=(0,c.yt)(e);return Math.floor(t.columnHeaderHeight*r)*(1+(n??0))+(o?Math.floor((t.headerFilterHeight??t.columnHeaderHeight)*r):0)}},33658:(e,t,r)=>{"use strict";r.d(t,{Y8:()=>l,_v:()=>a,rf:()=>s,tS:()=>o});var n=r(33642);const o=.7,l=1.3,i={compact:o,comfortable:l,standard:1},a=e=>e.density,s=(0,n.Mz)(a,(e=>i[e]))},29641:(e,t,r)=>{"use strict";r.d(t,{z:()=>n});const n=e=>e.dimensions},62185:(e,t,r)=>{"use strict";r.d(t,{w:()=>n});const n=e=>e.editRows},2220:(e,t,r)=>{"use strict";r.d(t,{Ai:()=>y,O7:()=>w,RN:()=>C,ZI:()=>s,ZP:()=>p,ee:()=>v,em:()=>f,lL:()=>u,oU:()=>m,od:()=>A,q6:()=>c,qA:()=>h,r4:()=>x,tW:()=>b,ux:()=>g,wx:()=>d});var n=r(33642),o=r(43026),l=r(80163),i=r(4394);const a=e=>e.filter,s=(0,n.Mz)(a,(e=>e.filterModel)),c=(0,n.Mz)(s,(e=>e.quickFilterValues)),u=e=>e.visibleRowsLookup,d=(0,n.Mz)(a,(e=>e.filteredRowsLookup)),p=((0,n.Mz)(a,(e=>e.filteredChildrenCountLookup)),(0,n.Mz)(a,(e=>e.filteredDescendantCountLookup))),f=(0,n.S)(u,o.J6,((e,t)=>t.filter((t=>!1!==e[t.id])))),g=(0,n.S)(f,(e=>e.map((e=>e.id)))),m=(0,n.S)(d,o.J6,((e,t)=>t.filter((t=>!1!==e[t.id])))),h=(0,n.S)(m,(e=>e.map((e=>e.id)))),b=((0,n.S)(g,i.qj,((e,t)=>{const r={};let n=0;return e.reduce(((e,o)=>{const l=t[o];return r[l.depth]||(r[l.depth]=0),l.depth>n&&(r[l.depth]=0),n=l.depth,r[l.depth]+=1,e[o]=r[l.depth],e}),{})})),(0,n.S)(f,i.qj,i.V2,((e,t,r)=>r<2?e:e.filter((e=>0===t[e.id]?.depth))))),w=(0,n.Mz)(f,(e=>e.length)),C=(0,n.Mz)(b,(e=>e.length)),v=(0,n.Mz)(m,(e=>e.length)),x=(0,n.Mz)(v,C,((e,t)=>e-t)),y=(0,n.S)(s,l.gv,((e,t)=>e.items?.filter((e=>{if(!e.field)return!1;const r=t[e.field];if(!r?.filterOperators||0===r?.filterOperators?.length)return!1;const n=r.filterOperators.find((t=>t.value===e.operator));return!!n&&(!n.InputComponent||null!=e.value&&""!==e.value?.toString())})))),A=(0,n.S)(y,(e=>e.reduce(((e,t)=>(e[t.field]?e[t.field].push(t):e[t.field]=[t],e)),{})))},15060:(e,t,r)=>{"use strict";r.d(t,{T:()=>o});var n=r(93527);const o=()=>({items:[],logicOperator:n.V.And,quickFilterValues:[],quickFilterLogicOperator:n.V.And})},43905:(e,t,r)=>{"use strict";r.d(t,{Fv:()=>h,zk:()=>c,zU:()=>d,Ko:()=>w,WL:()=>p,L5:()=>u,kO:()=>m});var n=r(6614),o=r(93527),l=r(15060);function i(e){return{current:e.current.getPublicApi()}}var a=r(80163);let s;const c=(e,t)=>{const r=(0,n.A)({},e);if(null==r.id&&(r.id=Math.round(1e5*Math.random())),null==r.operator){const e=(0,a.gv)(t)[r.field];r.operator=e&&e.filterOperators[0].value}return r},u=(e,t,r)=>{const o=e.items.length>1;let l;l=o&&t?[e.items[0]]:e.items;const i=o&&l.some((e=>null==e.id));return l.some((e=>null==e.operator))||i?(0,n.A)({},e,{items:l.map((e=>c(e,r)))}):e.items!==l?(0,n.A)({},e,{items:l}):e},d=(e,t,r)=>o=>(0,n.A)({},o,{filterModel:u(e,t,r)}),p=e=>"string"==typeof e?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e,f=(e,t)=>{if(!e.field||!e.operator)return null;const r=t.current.getColumn(e.field);if(!r)return null;let o;if(r.valueParser){const n=r.valueParser;o=Array.isArray(e.value)?e.value?.map((e=>n(e,void 0,r,t))):n(e.value,void 0,r,t)}else o=e.value;const{ignoreDiacritics:l}=t.current.rootProps;l&&(o=p(o));const a=(0,n.A)({},e,{value:o}),s=r.filterOperators;if(!s?.length)throw new Error(`MUI X: No filter operators found for column '${r.field}'.`);const c=s.find((e=>e.value===a.operator));if(!c)throw new Error(`MUI X: No filter operator found for column '${r.field}' and operator value '${a.operator}'.`);const u=i(t),d=c.getApplyFilterFn(a,r);return"function"!=typeof d?null:{item:a,fn:e=>{let n=t.current.getRowValue(e,r);return l&&(n=p(n)),d(n,e,r,u)}}};let g=1;const m=e=>e.quickFilterExcludeHiddenColumns??!0,h=(e,t,r)=>{const n=((e,t,r)=>{const{items:n}=e,o=n.map((e=>f(e,t))).filter((e=>!!e));if(0===o.length)return null;if(r||!function(){if(void 0!==s)return s;try{s=new Function("return true")()}catch(e){s=!1}return s}())return(e,t)=>{const r={};for(let n=0;n<o.length;n+=1){const l=o[n];t&&!t(l.item.field)||(r[l.item.id]=l.fn(e))}return r};const l=new Function("appliers","row","shouldApplyFilter",`"use strict";\n${o.map(((e,t)=>`const shouldApply${t} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(e.item.field)});`)).join("\n")}\n\nconst result$$ = {\n${o.map(((e,t)=>`  ${JSON.stringify(String(e.item.id))}: !shouldApply${t} ? false : appliers[${t}].fn(row),`)).join("\n")}\n};\n\nreturn result$$;`.replaceAll("$$",String(g)));return g+=1,(e,t)=>l(o,e,t)})(e,t,r),o=((e,t)=>{const r=e.quickFilterValues?.filter(Boolean)??[];if(0===r.length)return null;const n=m(e)?(0,a.TI)(t):(0,a.JR)(t),o=[],{ignoreDiacritics:l}=t.current.rootProps,s=i(t);return n.forEach((e=>{const n=t.current.getColumn(e),i=n?.getApplyQuickFilterFn;i&&o.push({column:n,appliers:r.map((e=>{const t=l?p(e):e;return{fn:i(t,n,s)}}))})})),function(e,n){const i={};e:for(let a=0;a<r.length;a+=1){const c=r[a];for(let r=0;r<o.length;r+=1){const{column:u,appliers:d}=o[r],{field:f}=u;if(n&&!n(f))continue;const g=d[a];let m=t.current.getRowValue(e,u);if(null!==g.fn&&(l&&(m=p(m)),g.fn(m,e,u,s))){i[c]=!0;continue e}}i[c]=!1}return i}})(e,t);return function(e,t,r){r.passingFilterItems=n?.(e,t)??null,r.passingQuickFilterValues=o?.(e,t)??null}},b=e=>null!=e,w=(e,t,r,n,i)=>{const a=((e,t,r)=>(e.cleanedFilterItems||(e.cleanedFilterItems=r.filter((e=>null!==f(e,t)))),e.cleanedFilterItems))(i,n,r.items),s=e.filter(b),c=t.filter(b);if(s.length>0){const e=e=>s.some((t=>t[e.id]));if((r.logicOperator??(0,l.T)().logicOperator)===o.V.And){if(!a.every(e))return!1}else if(!a.some(e))return!1}if(c.length>0&&null!=r.quickFilterValues){const e=e=>c.some((t=>t[e]));if((r.quickFilterLogicOperator??(0,l.T)().quickFilterLogicOperator)===o.V.And){if(!r.quickFilterValues.every(e))return!1}else if(!r.quickFilterValues.some(e))return!1}return!0}},3247:(e,t,r)=>{"use strict";r.d(t,{H5:()=>u,IL:()=>p,Kr:()=>d,MO:()=>l,Uh:()=>c,WO:()=>s,XY:()=>a,dS:()=>f,he:()=>o,rj:()=>i});var n=r(33642);const o=e=>e.focus,l=(0,n.Mz)(o,(e=>e.cell)),i=(0,n.Mz)(o,(e=>e.columnHeader)),a=(0,n.Mz)(o,(e=>e.columnHeaderFilter)),s=(0,n.Mz)(o,(e=>e.columnGroupHeader)),c=e=>e.tabIndex,u=(0,n.Mz)(c,(e=>e.cell)),d=(0,n.Mz)(c,(e=>e.columnHeader)),p=(0,n.Mz)(c,(e=>e.columnHeaderFilter)),f=(0,n.Mz)(c,(e=>e.columnGroupHeader))},10365:(e,t,r)=>{"use strict";r.d(t,{B$:()=>i,K8:()=>a,ON:()=>o,yt:()=>l});var n=r(33642);const o=e=>e.headerFiltering,l=(0,n.Mz)(o,(e=>e?.enabled??!1)),i=(0,n.Mz)(o,(e=>e.editing)),a=(0,n.Mz)(o,(e=>e.menuOpen))},24940:(e,t,r)=>{"use strict";r.d(t,{$i:()=>d,H2:()=>c,M5:()=>a,O:()=>f,Q8:()=>m,ee:()=>h,ij:()=>p,lN:()=>s,py:()=>u,vd:()=>g});var n=r(33642),o=r(2220),l=r(4394),i=r(92268);const a=e=>e.pagination,s=(0,n.Mz)(a,(e=>e.paginationModel)),c=(0,n.Mz)(a,(e=>e.rowCount)),u=(0,n.Mz)(a,(e=>e.meta)),d=(0,n.Mz)(s,(e=>e.page)),p=(0,n.Mz)(s,(e=>e.pageSize)),f=(0,n.Mz)(s,c,((e,t)=>(0,i.$_)(t,e.pageSize,e.page))),g=(0,n.S)(s,l.qj,l.V2,o.em,o.tW,((e,t,r,n,o)=>{const l=o.length,i=Math.min(e.pageSize*e.page,l-1),a=Math.min(i+e.pageSize-1,l-1);if(-1===i||-1===a)return null;if(r<2)return{firstRowIndex:i,lastRowIndex:a};const s=o[i],c=a-i+1,u=n.findIndex((e=>e.id===s.id));let d=u,p=0;for(;d<n.length&&p<=c;){const e=n[d],r=t[e.id]?.depth;void 0===r?d+=1:((p<c||r>0)&&(d+=1),0===r&&(p+=1))}return{firstRowIndex:u,lastRowIndex:d-1}})),m=(0,n.S)(o.em,g,((e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[])),h=(0,n.S)(o.ux,g,((e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]))},92268:(e,t,r)=>{"use strict";r.d(t,{$_:()=>l,N0:()=>i,RW:()=>s,eW:()=>o,m6:()=>a});var n=r(89148);const o=e=>e?0:100,l=(e,t,r)=>t>0&&e>0?Math.ceil(e/t):-1===e?r+2:0,i=e=>({page:0,pageSize:e?0:100}),a=(e,t=0)=>0===t?e:Math.max(Math.min(e,t-1),0),s=(e,t)=>{if(t===n.HV.DataGrid&&e>100)throw new Error(["MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join("\n"))}},38577:(e,t,r)=>{"use strict";r.d(t,{_:()=>n});const n=e=>e.preferencePanel},48534:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});var n=function(e){return e.filters="filters",e.columns="columns",e}(n||{})},82188:(e,t,r)=>{"use strict";r.d(t,{Bi:()=>l,Zk:()=>s,gt:()=>a,vF:()=>i});var n=r(33642),o=r(4394);const l=e=>e.rowSelection,i=(0,n.Mz)(l,(e=>e.length)),a=(0,n.S)(l,o.rI,((e,t)=>new Map(e.map((e=>[e,t[e]]))))),s=(0,n.S)(l,(e=>e.reduce(((e,t)=>(e[t]=t,e)),{})))},41222:(e,t,r)=>{"use strict";r.d(t,{c:()=>o});var n=r(89148);function o(e){return e.signature===n.HV.DataGrid?e.checkboxSelection&&!0!==e.disableMultipleRowSelection:!e.disableMultipleRowSelection}},92442:(e,t,r)=>{"use strict";r.d(t,{ET:()=>i,Lq:()=>a,xX:()=>l});var n=r(33642);const o=e=>e.rowSpanning,l=(0,n.Mz)(o,(e=>e.hiddenCells)),i=(0,n.Mz)(o,(e=>e.spannedCells)),a=(0,n.Mz)(o,(e=>e.hiddenCellOriginMap))},69639:(e,t,r)=>{"use strict";r.d(t,{E:()=>n});const n=e=>e.rowsMeta},4394:(e,t,r)=>{"use strict";r.d(t,{$2:()=>b,A6:()=>m,Dl:()=>i,H0:()=>l,Mz:()=>f,O8:()=>a,OQ:()=>w,V2:()=>g,Y1:()=>p,gk:()=>c,qj:()=>u,r:()=>d,rI:()=>s});var n=r(33642);const o=e=>e.rows,l=(0,n.Mz)(o,(e=>e.totalRowCount)),i=(0,n.Mz)(o,(e=>e.loading)),a=(0,n.Mz)(o,(e=>e.totalTopLevelRowCount)),s=(0,n.Mz)(o,(e=>e.dataRowIdToModelLookup)),c=(0,n.Mz)(o,(e=>e.dataRowIdToIdLookup)),u=(0,n.Mz)(o,(e=>e.tree)),d=(0,n.Mz)(o,(e=>e.groupsToFetch)),p=(0,n.Mz)(o,(e=>e.groupingName)),f=(0,n.Mz)(o,(e=>e.treeDepths)),g=(0,n.S)(o,(e=>{const t=Object.entries(e.treeDepths);return 0===t.length?1:t.filter((([,e])=>e>0)).map((([e])=>Number(e))).sort(((e,t)=>t-e))[0]+1})),m=(0,n.Mz)(o,(e=>e.dataRowIds)),h=(0,n.Mz)(o,(e=>e?.additionalRowGroups)),b=(0,n.S)(h,(e=>{const t=e?.pinnedRows;return{bottom:t?.bottom?.map((e=>({id:e.id,model:e.model??{}})))??[],top:t?.top?.map((e=>({id:e.id,model:e.model??{}})))??[]}})),w=(0,n.Mz)(b,(e=>(e?.top?.length||0)+(e?.bottom?.length||0)))},59458:(e,t,r)=>{"use strict";r.d(t,{Gh:()=>c,HZ:()=>u,Mk:()=>s,OL:()=>i,OM:()=>C,TW:()=>f,VO:()=>g,Z:()=>d,Ze:()=>b,fS:()=>p,gb:()=>a,l_:()=>h,nF:()=>m,ro:()=>v,zo:()=>w});var n=r(6614),o=r(4394),l=r(29641);const i="auto-generated-group-node-root",a=Symbol("mui.id_autogenerated"),s=()=>({type:"group",id:i,depth:-1,groupingField:null,groupingKey:null,isAutoGenerated:!0,children:[],childrenFromPath:{},childrenExpanded:!0,parent:null});function c(e,t,r="A row was provided without id in the rows prop:"){if(null==e)throw new Error(["MUI X: The data grid component requires all rows to have a unique `id` property.","Alternatively, you can use the `getRowId` prop to specify a custom id for each row.",r,JSON.stringify(t)].join("\n"))}const u=(e,t,r)=>{const n=t?t(e):e.id;return c(n,e,r),n},d=({rows:e,getRowId:t,loading:r,rowCount:n})=>{const o={type:"full",rows:[]},l={},i={};for(let r=0;r<e.length;r+=1){const n=e[r],a=u(n,t);l[a]=n,i[a]=a,o.rows.push(a)}return{rowsBeforePartialUpdates:e,loadingPropBeforePartialUpdates:r,rowCountPropBeforePartialUpdates:n,updates:o,dataRowIdToIdLookup:i,dataRowIdToModelLookup:l}},p=({tree:e,rowCountProp:t=0})=>{const r=e[i];return Math.max(t,r.children.length+(null==r.footerId?0:1))},f=({apiRef:e,rowCountProp:t=0,loadingProp:r,previousTree:o,previousTreeDepths:l,previousGroupsToFetch:i})=>{const a=e.current.caches.rows,{tree:s,treeDepths:c,dataRowIds:u,groupingName:d,groupsToFetch:f=[]}=e.current.applyStrategyProcessor("rowTreeCreation",{previousTree:o,previousTreeDepths:l,updates:a.updates,dataRowIdToIdLookup:a.dataRowIdToIdLookup,dataRowIdToModelLookup:a.dataRowIdToModelLookup,previousGroupsToFetch:i}),g=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:s,treeDepths:c,dataRowIdToIdLookup:a.dataRowIdToIdLookup,dataRowIds:u,dataRowIdToModelLookup:a.dataRowIdToModelLookup});return e.current.caches.rows.updates={type:"partial",actions:{insert:[],modify:[],remove:[]},idToActionLookup:{}},(0,n.A)({},g,{totalRowCount:Math.max(t,g.dataRowIds.length),totalTopLevelRowCount:p({tree:g.tree,rowCountProp:t}),groupingName:d,loading:r,groupsToFetch:f})},g=e=>a in e,m=e=>"skeletonRow"===e.type||"footer"===e.type||"group"===e.type&&e.isAutoGenerated||"pinnedRow"===e.type&&e.isAutoGenerated,h=(e,t,r)=>{const n=e[t];if("group"!==n.type)return[];const o=[];for(let t=0;t<n.children.length;t+=1){const l=n.children[t];r&&m(e[l])||o.push(l);const i=h(e,l,r);for(let e=0;e<i.length;e+=1)o.push(i[e])}return r||null==n.footerId||o.push(n.footerId),o},b=({previousCache:e,getRowId:t,updates:r,groupKeys:o})=>{if("full"===e.updates.type)throw new Error("MUI X: Unable to prepare a partial update if a full update is not applied yet.");const l=new Map;r.forEach((e=>{const r=u(e,t,"A row was provided without id when calling updateRows():");l.has(r)?l.set(r,(0,n.A)({},l.get(r),e)):l.set(r,e)}));const i={type:"partial",actions:{insert:[...e.updates.actions.insert??[]],modify:[...e.updates.actions.modify??[]],remove:[...e.updates.actions.remove??[]]},idToActionLookup:(0,n.A)({},e.updates.idToActionLookup),groupKeys:o},a=(0,n.A)({},e.dataRowIdToModelLookup),s=(0,n.A)({},e.dataRowIdToIdLookup),c={insert:{},modify:{},remove:{}};l.forEach(((e,t)=>{const r=i.idToActionLookup[t];if("delete"===e._action){if("remove"===r||!a[t])return;return null!=r&&(c[r][t]=!0),i.actions.remove.push(t),delete a[t],void delete s[t]}const o=a[t];if(o)return"remove"===r?(c.remove[t]=!0,i.actions.modify.push(t)):null==r&&i.actions.modify.push(t),void(a[t]=(0,n.A)({},o,e));"remove"===r?(c.remove[t]=!0,i.actions.insert.push(t)):null==r&&i.actions.insert.push(t),a[t]=e,s[t]=t}));const d=Object.keys(c);for(let e=0;e<d.length;e+=1){const t=d[e],r=c[t];Object.keys(r).length>0&&(i.actions[t]=i.actions[t].filter((e=>!r[e])))}return{dataRowIdToModelLookup:a,dataRowIdToIdLookup:s,updates:i,rowsBeforePartialUpdates:e.rowsBeforePartialUpdates,loadingPropBeforePartialUpdates:e.loadingPropBeforePartialUpdates,rowCountPropBeforePartialUpdates:e.rowCountPropBeforePartialUpdates}};function w(e){const t=(0,o.$2)(e);return{top:t?.top?.reduce(((t,r)=>t+e.current.unstable_getRowHeight(r.id)),0)||0,bottom:t?.bottom?.reduce(((t,r)=>t+e.current.unstable_getRowHeight(r.id)),0)||0}}function C(e){return`var(--DataGrid-overlayHeight, ${2*(0,l.z)(e.current.state).rowHeight}px)`}function v(e,t,r){const o=[];return t.forEach((t=>{const l=u(t,r,"A row was provided without id when calling updateRows():"),i=e.current.getRowNode(l);if("pinnedRow"===i?.type){const r=e.current.caches.pinnedRows,o=r.idLookup[l];o&&(r.idLookup[l]=(0,n.A)({},o,t))}else o.push(t)})),o}},15665:(e,t,r)=>{"use strict";r.d(t,{W:()=>a,s:()=>s});var n=r(7552),o=r(10930),l=r(99270),i=r(3247);class a extends Error{}function s(e){const t=n.useCallback((t=>({field:t,colDef:e.current.getColumn(t)})),[e]),r=n.useCallback((t=>{const r=e.current.getRow(t);if(!r)throw new a(`No row with id #${t} found`);return{id:t,columns:e.current.getAllColumns(),row:r}}),[e]),s=n.useCallback(((t,r)=>{const n=e.current.getColumn(r),o=e.current.getRow(t),l=e.current.getRowNode(t);if(!o||!l)throw new a(`No row with id #${t} found`);const s=o[r],c=n?.valueGetter?n.valueGetter(s,o,n,e):s,u=(0,i.MO)(e),d=(0,i.H5)(e),p={id:t,field:r,row:o,rowNode:l,colDef:n,cellMode:e.current.getCellMode(t,r),hasFocus:null!==u&&u.field===r&&u.id===t,tabIndex:d&&d.field===r&&d.id===t?0:-1,value:c,formattedValue:c,isEditable:!1,api:{}};return n&&n.valueFormatter&&(p.formattedValue=n.valueFormatter(c,o,n,e)),p.isEditable=n&&e.current.isCellEditable(p),p}),[e]),c=n.useCallback(((t,r)=>{const n=e.current.getColumn(r),o=e.current.getRow(t);if(!o)throw new a(`No row with id #${t} found`);return n&&n.valueGetter?n.valueGetter(o[n.field],o,n,e):o[r]}),[e]),u=n.useCallback(((t,r)=>{const n=r.field;if(!r||!r.valueGetter)return t[n];const o=t[r.field];return r.valueGetter(o,t,r,e)}),[e]),d=n.useCallback(((t,r)=>{const n=u(t,r);return r&&r.valueFormatter?r.valueFormatter(n,t,r,e):n}),[e,u]),p=n.useCallback((t=>e.current.rootElementRef.current?(0,o.u)(e.current.rootElementRef.current,t):null),[e]),f=n.useCallback((t=>e.current.rootElementRef.current?(0,o.v_)(e.current.rootElementRef.current,t):null),[e]),g={getCellValue:c,getCellParams:s,getCellElement:n.useCallback(((t,r)=>e.current.rootElementRef.current?(0,o.xE)(e.current.rootElementRef.current,{id:t,field:r}):null),[e]),getRowValue:u,getRowFormattedValue:d,getRowParams:r,getRowElement:f,getColumnHeaderParams:t,getColumnHeaderElement:p};(0,l.P)(e,g,"public")}},43026:(e,t,r)=>{"use strict";r.d(t,{J6:()=>s,RJ:()=>a,XU:()=>c,oF:()=>u});var n=r(33642),o=r(4394),l=r(59458);const i=e=>e.sorting,a=(0,n.Mz)(i,(e=>e.sortedRows)),s=(0,n.S)(a,o.rI,o.qj,((e,t,r)=>e.reduce(((e,n)=>{const o=t[n];o&&e.push({id:n,model:o});const i=r[n];return i&&(0,l.nF)(i)&&e.push({id:n,model:{[l.gb]:n}}),e}),[]))),c=(0,n.Mz)(i,(e=>e.sortModel)),u=(0,n.S)(c,(e=>e.reduce(((t,r,n)=>(t[r.field]={sortDirection:r.sort,sortIndex:e.length>1?n+1:void 0},t)),{})))},14298:(e,t,r)=>{"use strict";r.d(t,{Az:()=>u,Hm:()=>a,Lj:()=>i,Ou:()=>d,VE:()=>p,Zx:()=>o,ps:()=>l});var n=r(6614);const o=(e,t)=>t&&e.length>1?[e[0]]:e,l=(e,t)=>r=>(0,n.A)({},r,{sorting:(0,n.A)({},r.sorting,{sortModel:o(e,t)})}),i=(e,t)=>{const r=e.map((e=>((e,t)=>{const r=t.current.getColumn(e.field);if(!r||null===e.sort)return null;let n;return n=r.getSortComparator?r.getSortComparator(e.sort):"desc"===e.sort?(...e)=>-1*r.sortComparator(...e):r.sortComparator,n?{getSortCellParams:e=>({id:e,field:r.field,rowNode:t.current.getRowNode(e),value:t.current.getCellValue(e,r.field),api:t.current}),comparator:n}:null})(e,t))).filter((e=>!!e));return 0===r.length?null:e=>e.map((e=>({node:e,params:r.map((t=>t.getSortCellParams(e.id)))}))).sort(((e,t)=>{return n=e,o=t,r.reduce(((e,t,r)=>{if(0!==e)return e;const l=n.params[r],i=o.params[r];return t.comparator(l.value,i.value,l,i)}),0);var n,o})).map((e=>e.node.id))},a=(e,t)=>{const r=e.indexOf(t);return t&&-1!==r&&r+1!==e.length?e[r+1]:e[0]},s=(e,t)=>null==e&&null!=t?-1:null==t&&null!=e?1:null==e&&null==t?0:null,c=new Intl.Collator,u=(e,t)=>{const r=s(e,t);return null!==r?r:"string"==typeof e?c.compare(e.toString(),t.toString()):e-t},d=(e,t)=>{const r=s(e,t);return null!==r?r:Number(e)-Number(t)},p=(e,t)=>{const r=s(e,t);return null!==r?r:e>t?1:e<t?-1:0}},35281:(e,t,r)=>{"use strict";r.d(t,{Al:()=>a,EG:()=>c,_U:()=>l,dU:()=>o,m5:()=>i,nZ:()=>s});var n=r(33642);const o=e=>e.virtualization,l=(0,n.Mz)(o,(e=>e.enabled)),i=(0,n.Mz)(o,(e=>e.enabledForColumns)),a=(0,n.Mz)(o,(e=>e.enabledForRows)),s=(0,n.Mz)(o,(e=>e.renderContext)),c=(0,n.S)((e=>e.virtualization.renderContext.firstColumnIndex),(e=>e.virtualization.renderContext.lastColumnIndex),((e,t)=>({firstColumnIndex:e,lastColumnIndex:t})))},11591:(e,t,r)=>{"use strict";r.d(t,{Yr:()=>G,j$:()=>L});var n=r(6614),o=r(7552),l=r(28485),i=r(52535),a=r(40053),s=r(49891),c=r(87795);const u="undefined"!=typeof window?o.useLayoutEffect:o.useEffect,d=()=>{};var p=r(93876),f=r(71115),g=r(64565),m=r(12274),h=r(61959),b=r(80163),w=r(29641),C=r(4394),v=r(3247),x=r(23392),y=r(89148);const A=("undefined"!=typeof navigator?navigator.userAgent.toLowerCase():"empty").includes("firefox");var R=r(58766),S=r(82188),I=r(69639),M=r(60378),k=r(59458),P=r(35281),E=r(55730),F=r(92442),H=r(69500),O=function(e){return e[e.NONE=0]="NONE",e[e.UP=1]="UP",e[e.DOWN=2]="DOWN",e[e.LEFT=3]="LEFT",e[e.RIGHT=4]="RIGHT",e}(O||{});const T={top:0,left:0},D=Object.freeze(new Map);let z=!1;try{"undefined"!=typeof window&&(z=/jsdom/.test(window.navigator.userAgent))}catch(e){}const L=()=>{const e=(0,f.E)(),t=(0,g.A)(),r=(0,m.Nc)(e,b.iv),M=(0,m.Nc)(e,P.Al)&&!z,F=(0,m.Nc)(e,P.m5)&&!z,L=(0,m.Nc)(e,w.z),N=L.viewportOuterSize,V=(0,m.Nc)(e,C.$2),B=(0,m.Nc)(e,b.Q1),_=V.bottom.length>0,[U,q]=o.useState(D),K=(0,p.I)(),X=(0,m.Nc)(e,v.MO),Y=(0,m.Nc)(e,v.H5),Z=(0,m.Nc)(e,I.E),Q=(0,m.Nc)(e,S.Zk),J=(0,x.h)(e,t),ee=e.current.rootElementRef,te=e.current.mainElementRef,re=e.current.virtualScrollerRef,ne=o.useRef(null),oe=o.useRef(null),le=L.contentSize.height,ie=L.columnsTotalWidth,ae=(0,m.Nc)(e,b.kw);!function(t,r,n){const l=o.useRef(null);l.current=()=>e.current.resize(),u((()=>{if("undefined"==typeof ResizeObserver)return d;const e=t.current,r=new ResizeObserver((e=>{l.current(e)}));return e&&r.observe(e),()=>{r.disconnect()}}),[t,n])}(te);const se=o.useRef(T),ce=o.useRef(T),ue=o.useRef(E.$A),de=(0,m.Nc)(e,P.nZ),pe=(0,c.A)(),fe=o.useRef(void 0),ge=(0,s.A)((()=>((e,t,r,n)=>({direction:O.NONE,buffer:W(e,O.NONE,t,r,n,300)}))(K,t.rowBufferPx,t.columnBufferPx,15*L.rowHeight))).current,me={rowIndex:o.useMemo((()=>X?J.rows.findIndex((e=>e.id===X.id)):-1),[X,J.rows]),columnIndex:o.useMemo((()=>X?r.findIndex((e=>e.field===X.field)):-1),[X,r])},he=o.useCallback((t=>{if(r=t,o=e.current.state.virtualization.renderContext,r===o||r.firstRowIndex===o.firstRowIndex&&r.lastRowIndex===o.lastRowIndex&&r.firstColumnIndex===o.firstColumnIndex&&r.lastColumnIndex===o.lastColumnIndex)return;var r,o;const l=t.firstRowIndex!==ue.current.firstRowIndex||t.lastRowIndex!==ue.current.lastRowIndex;e.current.setState((e=>(0,n.A)({},e,{virtualization:(0,n.A)({},e.virtualization,{renderContext:t})}))),L.isReady&&l&&(ue.current=t,e.current.publishEvent("renderedRowsIntervalChange",t)),ce.current=se.current}),[e,L.isReady]),be=()=>{const r={top:re.current.scrollTop,left:re.current.scrollLeft},n=r.left-se.current.left,o=r.top-se.current.top,i=0!==n||0!==o;se.current=r;const a=i?function(e,t){return 0===e&&0===t?O.NONE:Math.abs(t)>=Math.abs(e)?t>0?O.DOWN:O.UP:e>0?O.RIGHT:O.LEFT}(n,o):O.NONE,s=Math.abs(se.current.top-ce.current.top),c=Math.abs(se.current.left-ce.current.left),u=s>=L.rowHeight||c>=50,d=ge.direction!==a;if(!u&&!d)return de;if(d)switch(a){case O.NONE:case O.LEFT:case O.RIGHT:fe.current=void 0;break;default:fe.current=de}ge.direction=a,ge.buffer=W(K,a,t.rowBufferPx,t.columnBufferPx,15*L.rowHeight,300);const p=j($(e,t,M,F),se.current,ge);return l.flushSync((()=>{he(p)})),pe.start(1e3,be),p},we=()=>{const r=j($(e,t,M,F),se.current,ge);fe.current=void 0,he(r)},Ce=(0,i.A)((t=>{const{scrollTop:r,scrollLeft:n}=t.currentTarget;if(r<0)return;if(!K&&n<0)return;if(K&&n>0)return;const o=be();e.current.publishEvent("scrollPositionChange",{top:r,left:n,renderContext:o})})),ve=(0,i.A)((t=>{e.current.publishEvent("virtualScrollerWheel",{},t)})),xe=(0,i.A)((t=>{e.current.publishEvent("virtualScrollerTouchMove",{},t)})),ye=N.width&&ie>=N.width,Ae=o.useMemo((()=>({overflowX:ye?void 0:"hidden",overflowY:t.autoHeight?"hidden":void 0})),[ye,t.autoHeight]),Re=o.useMemo((()=>{const r={width:ye?ie:"auto",height:le};return t.autoHeight&&0===J.rows.length&&(r.height=(0,k.OM)(e)),r}),[e,ie,le,ye,t.autoHeight,J.rows.length]);return o.useEffect((()=>{e.current.publishEvent("virtualScrollerContentSizeChange")}),[e,Re]),(0,a.A)((()=>{e.current.resize()}),[e,Z.currentPageTotalHeight]),(0,a.A)((()=>{F&&(re.current.scrollLeft=0),M&&(re.current.scrollTop=0)}),[F,M,ee,re]),(0,h.A)(0!==N.width,(()=>{const r=j($(e,t,M,F),se.current,ge);he(r),e.current.publishEvent("scrollPositionChange",{top:se.current.top,left:se.current.left,renderContext:r})})),e.current.register("private",{updateRenderContext:we}),(0,y.cz)(e,"columnsChange",we),(0,y.cz)(e,"filteredRowsSet",we),(0,y.cz)(e,"rowExpansionChange",we),{renderContext:de,setPanels:q,getRows:(o={})=>{if(!o.rows&&!J.range)return[];const l=o.renderContext??de,i=!_&&void 0===o.position||_&&"bottom"===o.position,a=void 0!==o.position;let s;switch(o.position){case"top":s=0;break;case"bottom":s=V.top.length+J.rows.length;break;case void 0:s=V.top.length}const c=o.rows??J.rows,u=l.firstRowIndex,d=Math.min(l.lastRowIndex,c.length),p=o.rows?(0,R.y1)(0,o.rows.length):(0,R.y1)(u,d);let f=-1;a||-1===me.rowIndex||(me.rowIndex<u&&(f=me.rowIndex,p.unshift(f)),me.rowIndex>=d&&(f=me.rowIndex,p.push(f)));const g=[],m=t.slotProps?.row,h=(0,b.Sw)(e);return p.forEach((u=>{const{id:d,model:p}=c[u],b=(J?.range?.firstRowIndex||0)+s+u;if(ae){const t=B.left.length,n=r.length-B.right.length;e.current.calculateColSpan({rowId:d,minFirstColumn:t,maxLastColumn:n,columns:r}),B.left.length>0&&e.current.calculateColSpan({rowId:d,minFirstColumn:0,maxLastColumn:B.left.length,columns:r}),B.right.length>0&&e.current.calculateColSpan({rowId:d,minFirstColumn:r.length-B.right.length,maxLastColumn:r.length,columns:r})}const w=X?.id===d,C=e.current.rowHasAutoHeight(d)?"auto":e.current.unstable_getRowHeight(d);let v;v=null!=Q[d]&&e.current.isRowSelectable(d);let x=!1;void 0===o.position&&(x=0===u);let y=!1;const A=u===c.length-1;i&&(a?y=A:u===J.rows.length-1&&(y=!0));const R=u===f;let S=null;null!==Y&&Y.id===d&&(S="view"===e.current.getCellParams(d,Y.field).cellMode?Y.field:null);let I=l;!a&&fe.current&&u>=fe.current.firstRowIndex&&u<fe.current.lastRowIndex&&(I=fe.current);const M=G(h,I,B.left.length),k=A&&"top"===o.position;if(g.push((0,H.jsx)(t.slots.row,(0,n.A)({row:p,rowId:d,index:b,selected:v,offsetTop:o.rows?void 0:Z.positions[u],offsetLeft:M,dimensions:L,rowHeight:C,tabbableCell:S,pinnedColumns:B,visibleColumns:r,renderContext:I,focusedColumnIndex:w?me.columnIndex:void 0,isFirstVisible:x,isLastVisible:y,isNotVisible:R,showBottomBorder:k},m),d)),R)return;const P=U.get(d);P&&g.push(P),void 0===o.position&&A&&g.push(e.current.getInfiniteLoadingTriggerElement?.({lastRowId:d}))})),g},getContainerProps:()=>({ref:te}),getScrollerProps:()=>({ref:re,onScroll:Ce,onWheel:ve,onTouchMove:xe,style:Ae,role:"presentation",tabIndex:A?-1:void 0}),getContentProps:()=>({style:Re,role:"presentation"}),getRenderZoneProps:()=>({role:"rowgroup"}),getScrollbarVerticalProps:()=>({ref:ne,role:"presentation"}),getScrollbarHorizontalProps:()=>({ref:oe,role:"presentation"})}};function $(e,t,r,n){const o=(0,w.z)(e.current.state),l=(0,x.e)(e,t),i=(0,b.iv)(e),a=(0,F.Lq)(e),s=e.current.state.rows.dataRowIds.at(-1),c=i.at(-1);return{enabledForRows:r,enabledForColumns:n,apiRef:e,autoHeight:t.autoHeight,rowBufferPx:t.rowBufferPx,columnBufferPx:t.columnBufferPx,leftPinnedWidth:o.leftPinnedWidth,columnsTotalWidth:o.columnsTotalWidth,viewportInnerWidth:o.viewportInnerSize.width,viewportInnerHeight:o.viewportInnerSize.height,lastRowHeight:void 0!==s?e.current.unstable_getRowHeight(s):0,lastColumnWidth:c?.computedWidth??0,rowsMeta:(0,I.E)(e.current.state),columnPositions:(0,b.Sw)(e),rows:l.rows,range:l.range,pinnedColumns:(0,b.Q1)(e),visibleColumns:i,hiddenCellsOriginMap:a}}function j(e,t,r){const n={firstRowIndex:0,lastRowIndex:e.rows.length,firstColumnIndex:0,lastColumnIndex:e.visibleColumns.length},{top:o,left:l}=t,i=Math.abs(l)+e.leftPinnedWidth;if(e.enabledForRows){let t=Math.min(N(e,o,{atStart:!0,lastPosition:e.rowsMeta.positions[e.rowsMeta.positions.length-1]+e.lastRowHeight}),e.rowsMeta.positions.length-1);const r=e.hiddenCellsOriginMap[t];if(r){const e=Math.min(...Object.values(r));t=Math.min(t,e)}const l=e.autoHeight?t+e.rows.length:N(e,o+e.viewportInnerHeight);n.firstRowIndex=t,n.lastRowIndex=l}if(e.enabledForColumns){let t=0,o=e.columnPositions.length,l=!1;const[a,s]=B({firstIndex:n.firstRowIndex,lastIndex:n.lastRowIndex,minFirstIndex:0,maxLastIndex:e.rows.length,bufferBefore:r.buffer.rowBefore,bufferAfter:r.buffer.rowAfter,positions:e.rowsMeta.positions,lastSize:e.lastRowHeight});for(let t=a;t<s&&!l;t+=1){const r=e.rows[t];l=e.apiRef.current.rowHasAutoHeight(r.id)}l||(t=V(i,e.columnPositions,{atStart:!0,lastPosition:e.columnsTotalWidth}),o=V(i+e.viewportInnerWidth,e.columnPositions)),n.firstColumnIndex=t,n.lastColumnIndex=o}const a=function(e,t,r){const[n,o]=B({firstIndex:t.firstRowIndex,lastIndex:t.lastRowIndex,minFirstIndex:0,maxLastIndex:e.rows.length,bufferBefore:r.buffer.rowBefore,bufferAfter:r.buffer.rowAfter,positions:e.rowsMeta.positions,lastSize:e.lastRowHeight}),[l,i]=B({firstIndex:t.firstColumnIndex,lastIndex:t.lastColumnIndex,minFirstIndex:e.pinnedColumns.left.length,maxLastIndex:e.visibleColumns.length-e.pinnedColumns.right.length,bufferBefore:r.buffer.columnBefore,bufferAfter:r.buffer.columnAfter,positions:e.columnPositions,lastSize:e.lastColumnWidth});return{firstRowIndex:n,lastRowIndex:o,firstColumnIndex:(0,M.A8)({firstColumnToRender:l,apiRef:e.apiRef,firstRowToRender:n,lastRowToRender:o,visibleRows:e.rows}),lastColumnIndex:i}}(e,n,r);return a}function N(e,t,r){const n=e.apiRef.current.getLastMeasuredRowIndex();let o=n===1/0;e.range?.lastRowIndex&&!o&&(o=n>=e.range.lastRowIndex);const l=(0,R.qE)(n-(e.range?.firstRowIndex||0),0,e.rowsMeta.positions.length);return o||e.rowsMeta.positions[l]>=t?V(t,e.rowsMeta.positions,r):function(e,t,r,n){let o=1;for(;r<t.length&&Math.abs(t[r])<e;)r+=o,o*=2;return V(e,t,n,Math.floor(r/2),Math.min(r,t.length))}(t,e.rowsMeta.positions,l,r)}function V(e,t,r=void 0,n=0,o=t.length){if(t.length<=0)return-1;if(n>=o)return n;const l=n+Math.floor((o-n)/2),i=t[l];let a;return a=r?.atStart?e-((l===t.length-1?r.lastPosition:t[l+1])-i)<i:e<=i,a?V(e,t,r,n,l):V(e,t,r,l+1,o)}function B({firstIndex:e,lastIndex:t,bufferBefore:r,bufferAfter:n,minFirstIndex:o,maxLastIndex:l,positions:i,lastSize:a}){const s=i[e]-r,c=i[t]+n,u=V(s,i,{atStart:!0,lastPosition:i[i.length-1]+a}),d=V(c,i);return[(0,R.qE)(u,o,l),(0,R.qE)(d,o,l)]}function G(e,t,r){const n=(e[t.firstColumnIndex]??0)-(e[r]??0);return Math.abs(n)}function W(e,t,r,n,o,l){if(e)switch(t){case O.LEFT:t=O.RIGHT;break;case O.RIGHT:t=O.LEFT}switch(t){case O.NONE:return{rowAfter:r,rowBefore:r,columnAfter:n,columnBefore:n};case O.LEFT:return{rowAfter:0,rowBefore:0,columnAfter:0,columnBefore:l};case O.RIGHT:return{rowAfter:0,rowBefore:0,columnAfter:l,columnBefore:0};case O.UP:return{rowAfter:0,rowBefore:o,columnAfter:0,columnBefore:0};case O.DOWN:return{rowAfter:o,rowBefore:0,columnAfter:0,columnBefore:0};default:throw new Error("unreachable")}}},55730:(e,t,r)=>{"use strict";r.d(t,{$A:()=>i,lA:()=>s,nu:()=>a});var n=r(6614),o=r(7552),l=r(99270);const i={firstRowIndex:0,lastRowIndex:0,firstColumnIndex:0,lastColumnIndex:0},a=(e,t)=>{const{disableVirtualization:r,autoHeight:o}=t,l={enabled:!r,enabledForColumns:!r,enabledForRows:!r&&!o,renderContext:i};return(0,n.A)({},e,{virtualization:l})};function s(e,t){const r=r=>{e.current.setState((e=>(0,n.A)({},e,{virtualization:(0,n.A)({},e.virtualization,{enabled:r,enabledForColumns:r,enabledForRows:r&&!t.autoHeight})})))},i={unstable_setVirtualization:r,unstable_setColumnVirtualization:t=>{e.current.setState((e=>(0,n.A)({},e,{virtualization:(0,n.A)({},e.virtualization,{enabledForColumns:t})})))}};(0,l.P)(e,i,"public"),o.useEffect((()=>{r(!t.disableVirtualization)}),[t.disableVirtualization,t.autoHeight])}},20849:(e,t,r)=>{"use strict";r.d(t,{g:()=>o});var n=r(7552);const o=e=>{const t=n.useRef(!0);t.current&&(t.current=!1,e())}},89148:(e,t,r)=>{"use strict";r.d(t,{HV:()=>i,s9:()=>s,_7:()=>u,cz:()=>d,re:()=>f});var n=r(7552);class o{constructor(e=1e3){this.timeouts=new Map,this.cleanupTimeout=1e3,this.cleanupTimeout=e}register(e,t,r){this.timeouts||(this.timeouts=new Map);const n=setTimeout((()=>{"function"==typeof t&&t(),this.timeouts.delete(r.cleanupToken)}),this.cleanupTimeout);this.timeouts.set(r.cleanupToken,n)}unregister(e){const t=this.timeouts.get(e.cleanupToken);t&&(this.timeouts.delete(e.cleanupToken),clearTimeout(t))}reset(){this.timeouts&&(this.timeouts.forEach(((e,t)=>{this.unregister({cleanupToken:t})})),this.timeouts=void 0)}}class l{constructor(){this.registry=new FinalizationRegistry((e=>{"function"==typeof e&&e()}))}register(e,t,r){this.registry.register(e,t,r)}unregister(e){this.registry.unregister(e)}reset(){}}var i=function(e){return e.DataGrid="DataGrid",e.DataGridPro="DataGridPro",e.DataGridPremium="DataGridPremium",e}(i||{});class a{}function s(e){let t=0;return function(r,i,s,c){null===e.registry&&(e.registry="undefined"!=typeof FinalizationRegistry?new l:new o);const[u]=n.useState(new a),d=n.useRef(null),p=n.useRef();p.current=s;const f=n.useRef(null);if(!d.current&&p.current){const n=(e,t,r)=>{t.defaultMuiPrevented||p.current?.(e,t,r)};d.current=r.current.subscribeEvent(i,n,c),t+=1,f.current={cleanupToken:t},e.registry.register(u,(()=>{d.current?.(),d.current=null,f.current=null}),f.current)}else!p.current&&d.current&&(d.current(),d.current=null,f.current&&(e.registry.unregister(f.current),f.current=null));n.useEffect((()=>{if(!d.current&&p.current){const e=(e,t,r)=>{t.defaultMuiPrevented||p.current?.(e,t,r)};d.current=r.current.subscribeEvent(i,e,c)}return f.current&&e.registry&&(e.registry.unregister(f.current),f.current=null),()=>{d.current?.(),d.current=null}}),[r,i,c])}}const c={registry:null},u=()=>{c.registry?.reset(),c.registry=null},d=s(c),p={isFirst:!0};function f(e,t,r){d(e,t,r,p)}},99270:(e,t,r)=>{"use strict";r.d(t,{P:()=>o});var n=r(7552);function o(e,t,r){const o=n.useRef(!0);n.useEffect((()=>{o.current=!1,e.current.register(r,t)}),[e,r,t]),o.current&&e.current.register(r,t)}},68337:(e,t,r)=>{"use strict";r.d(t,{Q:()=>l});var n=r(7552),o=r(35825);const l=()=>{const e=n.useContext(o.S);if(void 0===e)throw new Error(["MUI X: Could not find the data grid configuration context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join("\n"));return e}},65111:(e,t,r)=>{"use strict";r.d(t,{q:()=>o});var n=r(7552);function o(e,t){const r=n.useRef(null);if(r.current)return r.current;const o=e.current.getLogger(t);return r.current=o,o}},47434:(e,t,r)=>{"use strict";r.d(t,{h:()=>i});var n=r(7552),o=r(58766),l=r(65111);const i=(e,t,r,i,a)=>{const s=(0,l.q)(e,"useNativeEventListener"),[c,u]=n.useState(!1),d=n.useRef(i),p=(0,o.Tn)(t)?t():t?.current??null,f=n.useCallback((e=>d.current&&d.current(e)),[]);n.useEffect((()=>{d.current=i}),[i]),n.useEffect((()=>{if(p&&r&&!c){s.debug(`Binding native ${r} event`),p.addEventListener(r,f,a),u(!0);const t=()=>{s.debug(`Clearing native ${r} event`),p.removeEventListener(r,f,a)};e.current.subscribeEvent("unmount",t)}}),[p,f,r,c,s,a,e])}},71115:(e,t,r)=>{"use strict";r.d(t,{E:()=>l,z:()=>o});var n=r(7552);const o=n.createContext(void 0);function l(){const e=n.useContext(o);if(void 0===e)throw new Error(["MUI X: Could not find the data grid private context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join("\n"));return e}},12274:(e,t,r)=>{"use strict";r.d(t,{Nc:()=>d,TJ:()=>c});var n=r(7552),o=r(15689),l=r(49891),i=r(58329);function a(e,t){return function(e){return e.acceptsApiRef}(t)?t(e):t(e.current.state)}const s=Object.is,c=o.v,u=()=>({state:null,equals:null,selector:null}),d=(e,t,r=s)=>{const o=(0,l.A)(u),c=null!==o.current.selector,[d,p]=n.useState(c?null:a(e,t));return o.current.state=d,o.current.equals=r,o.current.selector=t,(0,i.A)((()=>e.current.store.subscribe((()=>{const t=a(e,o.current.selector);o.current.equals(o.current.state,t)||(o.current.state=t,p(t))})))),d}},23392:(e,t,r)=>{"use strict";r.d(t,{e:()=>i,h:()=>a});var n=r(7552),o=r(24940),l=r(2220);const i=(e,t)=>{let r,n;return t.pagination&&"client"===t.paginationMode?(n=(0,o.vd)(e),r=(0,o.Q8)(e)):(r=(0,l.em)(e),n=0===r.length?null:{firstRowIndex:0,lastRowIndex:r.length-1}),{rows:r,range:n}},a=(e,t)=>{const r=i(e,t);return n.useMemo((()=>({rows:r.rows,range:r.range})),[r.rows,r.range])}},61959:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7552),o=r(40053);const l=()=>{},i=(e,t)=>{const r=n.useRef(!1);(0,o.A)((()=>r.current||!e?l:(r.current=!0,t())),[r.current||e])}},98571:(e,t,r)=>{"use strict";r.d(t,{Y:()=>o});var n=r(36155);const o=(e,t,r,o,l)=>{const i=l.hasScrollY?l.scrollbarSize:0;let a;switch(e){case n.K.LEFT:a=o[r];break;case n.K.RIGHT:a=l.columnsTotalWidth-o[r]-t+i;break;default:a=0}return a}},80170:(e,t,r)=>{"use strict";r.d(t,{$2:()=>p,A_:()=>C,Bn:()=>b,Cf:()=>R,Gf:()=>g,Kw:()=>d,T5:()=>s,U_:()=>S,Ui:()=>c,aC:()=>H,ay:()=>l,c8:()=>M,dc:()=>h,e2:()=>A,fX:()=>a,gC:()=>f,hR:()=>E,j8:()=>k,jS:()=>P,jt:()=>x,jy:()=>F,lj:()=>u,qb:()=>I,r$:()=>m,v$:()=>w,xC:()=>i,yd:()=>v,yk:()=>y}),r(7552);var n=r(74893),o=r(69500);const l=(0,n.A)((0,o.jsx)("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"}),"ArrowUpward"),i=(0,n.A)((0,o.jsx)("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"}),"ArrowDownward"),a=(0,n.A)((0,o.jsx)("path",{d:"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"KeyboardArrowRight"),s=(0,n.A)((0,o.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),c=(0,n.A)((0,o.jsx)("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList"),u=(0,n.A)((0,o.jsx)("path",{d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z"}),"FilterAlt"),d=(0,n.A)((0,o.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search"),p=(0,n.A)((0,o.jsx)("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu"),f=(0,n.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle"),g=(0,n.A)((0,o.jsx)("path",{d:"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"}),"ColumnIcon"),m=(0,n.A)((0,o.jsx)("rect",{width:"1",height:"24",x:"11.5",rx:"0.5"}),"Separator"),h=(0,n.A)((0,o.jsx)("path",{d:"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"}),"ViewHeadline"),b=(0,n.A)((0,o.jsx)("path",{d:"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z"}),"TableRows"),w=(0,n.A)((0,o.jsx)("path",{d:"M4 18h17v-6H4v6zM4 5v6h17V5H4z"}),"ViewStream"),C=(0,n.A)((0,o.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"TripleDotsVertical"),v=(0,n.A)((0,o.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),x=(0,n.A)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add"),y=(0,n.A)((0,o.jsx)("path",{d:"M19 13H5v-2h14v2z"}),"Remove"),A=(0,n.A)((0,o.jsx)("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}),"Load"),R=(0,n.A)((0,o.jsx)("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"Drag"),S=(0,n.A)((0,o.jsx)("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),I=(0,n.A)((0,o.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check"),M=(0,n.A)((0,o.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert"),k=(0,n.A)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff"),P=(0,n.A)((0,o.jsx)("g",{children:(0,o.jsx)("path",{d:"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z"})}),"ViewColumn"),E=(0,n.A)((0,o.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear"),F=(0,n.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),H=(0,n.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),"Delete")},20581:(e,t,r)=>{"use strict";function n(e){return void 0!==e.field}r.d(t,{x:()=>n})},10176:(e,t,r)=>{"use strict";r.d(t,{RL:()=>n,V_:()=>l,bs:()=>o});var n=function(e){return e.Cell="cell",e.Row="row",e}(n||{}),o=function(e){return e.Edit="edit",e.View="view",e}(o||{}),l=function(e){return e.Edit="edit",e.View="view",e}(l||{})},93527:(e,t,r)=>{"use strict";r.d(t,{V:()=>n});var n=function(e){return e.And="and",e.Or="or",e}(n||{})},88729:(e,t,r)=>{"use strict";r.d(t,{Q:()=>o,a:()=>n});var n=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e.pasteKeyDown="pasteKeyDown",e}(n||{}),o=function(e){return e.cellFocusOut="cellFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(o||{})},89037:(e,t,r)=>{"use strict";r.d(t,{a:()=>n,q:()=>o});var n=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e}(n||{}),o=function(e){return e.rowFocusOut="rowFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(o||{})},17505:(e,t,r)=>{"use strict";function n(e){if("string"!=typeof e)throw new Error(function(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;e<arguments.length;e+=1)t+="&args[]="+encodeURIComponent(arguments[e]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}(7));return e.charAt(0).toUpperCase()+e.slice(1)}r.d(t,{A:()=>n})},88519:(e,t,r)=>{"use strict";function n(e,t,r=void 0){const n={};return Object.keys(e).forEach((o=>{n[o]=e[o].reduce(((e,n)=>{if(n){const o=t(n);""!==o&&e.push(o),r&&r[n]&&e.push(r[n])}return e}),[]).join(" ")})),n}r.d(t,{A:()=>n})},33693:(e,t,r)=>{"use strict";function n(e,t=166){let r;function n(...n){clearTimeout(r),r=setTimeout((()=>{e.apply(this,n)}),t)}return n.clear=()=>{clearTimeout(r)},n}r.d(t,{A:()=>n})},18943:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>i});const n=e=>e,o=(()=>{let e=n;return{configure(t){e=t},generate:t=>e(t),reset(){e=n}}})(),l={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function i(e,t,r="Mui"){const n=l[t];return n?`${r}-${n}`:`${o.generate(e)}-${t}`}},3865:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(18943);function o(e,t,r="Mui"){const o={};return t.forEach((t=>{o[t]=(0,n.Ay)(e,t,r)})),o}},75041:(e,t,r)=>{"use strict";function n(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>n})},40053:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);const o="undefined"!=typeof window?n.useLayoutEffect:n.useEffect},52535:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(7552),o=r(40053);const l=function(e){const t=n.useRef(e);return(0,o.A)((()=>{t.current=e})),n.useRef(((...e)=>(0,t.current)(...e))).current}},92325:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);function o(...e){return n.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{!function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(e,t)}))}),e)}},57377:(e,t,r)=>{"use strict";var n;r.d(t,{A:()=>a});var o=r(7552);let l=0;const i=(n||(n=r.t(o,2)))["useId".toString()];function a(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,r]=o.useState(e),n=e||t;return o.useEffect((()=>{null==t&&(l+=1,r(`mui-${l}`))}),[t]),n}(e)}},49891:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(7552);const o={};function l(e,t){const r=n.useRef(o);return r.current===o&&(r.current=e(t)),r}},58329:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(7552);const o=[];function l(e){n.useEffect(e,o)}},87795:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(49891),o=r(58329);class l{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new l}start(e,t){this.clear(),this.currentId=setTimeout((()=>{this.currentId=null,t()}),e)}}function i(){const e=(0,n.A)(l.create).current;return(0,o.A)(e.disposeEffect),e}},4780:(e,t,r)=>{"use strict";r.d(t,{L:()=>o,o:()=>l});var n=r(36155);const o=(e,t,r,o,l)=>{const i=t===r-1;return!(e!==n.K.LEFT||!i)||!!o&&(e===n.K.LEFT||(e===n.K.RIGHT?!i:!i||l))},l=(e,t)=>e===n.K.RIGHT&&0===t},33642:(e,t,r)=>{"use strict";r.d(t,{Mz:()=>s,S:()=>c});var n=r(47198);const o=(0,n.Ad)({memoize:n.i5,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),l=new WeakMap;function i(e){return"current"in e&&"instanceId"in e.current}const a={id:"default"},s=(e,t,r,n,o,l,...s)=>{if(s.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&r&&n&&o&&l)c=(s,c)=>{const u=i(s),d=c??(u?s.current.instanceId:a),p=u?s.current.state:s,f=e(p,d),g=t(p,d),m=r(p,d),h=n(p,d),b=o(p,d);return l(f,g,m,h,b)};else if(e&&t&&r&&n&&o)c=(l,s)=>{const c=i(l),u=s??(c?l.current.instanceId:a),d=c?l.current.state:l,p=e(d,u),f=t(d,u),g=r(d,u),m=n(d,u);return o(p,f,g,m)};else if(e&&t&&r&&n)c=(o,l)=>{const s=i(o),c=l??(s?o.current.instanceId:a),u=s?o.current.state:o,d=e(u,c),p=t(u,c),f=r(u,c);return n(d,p,f)};else if(e&&t&&r)c=(n,o)=>{const l=i(n),s=o??(l?n.current.instanceId:a),c=l?n.current.state:n,u=e(c,s),d=t(c,s);return r(u,d)};else{if(!e||!t)throw new Error("Missing arguments");c=(r,n)=>{const o=i(r),l=n??(o?r.current.instanceId:a),s=o?r.current.state:r,c=e(s,l);return t(c)}}return c.acceptsApiRef=!0,c},c=(...e)=>{const t=(t,r)=>{const n=i(t),s=n?t.current.instanceId:r??a,c=n?t.current.state:t,u=l.get(s),d=u??new Map,p=d?.get(e);if(d&&p)return p(c,s);const f=o(...e);return u||l.set(s,d),d.set(e,f),f(c,s)};return t.acceptsApiRef=!0,t}},10930:(e,t,r)=>{"use strict";r.d(t,{$c:()=>A,AP:()=>i,Bx:()=>f,Dq:()=>h,Dy:()=>o,Rb:()=>m,Rv:()=>g,TA:()=>d,Tq:()=>p,YI:()=>b,Zw:()=>y,dL:()=>R,fl:()=>l,iF:()=>C,j4:()=>S,mH:()=>v,u:()=>a,v_:()=>c,xE:()=>u});var n=r(76959);function o(e){return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth}function l(e,t){return e.closest(`.${t}`)}function i(e){return e.replace(/["\\]/g,"\\$&")}function a(e,t){return e.querySelector(`[role="columnheader"][data-field="${i(t)}"]`)}function s(e){return`.${n.x.row}[data-id="${i(String(e))}"]`}function c(e,t){return e.querySelector(s(t))}function u(e,{id:t,field:r}){const o=`${s(t)} .${n.x.cell}[data-field="${i(r)}"]`;return e.querySelector(o)}function d(e){return 1===e.target.nodeType&&!e.currentTarget.contains(e.target)}function p(e){return e.getAttribute("data-field")}function f(e,t){return e.querySelector(`[data-field="${i(t)}"]`)}function g(e){return e.getAttribute("data-fields").slice(2,-2).split("-|-")}function m(e,t){return Array.from(e.querySelectorAll(`[data-fields*="|-${i(t)}-|"]`)??[])}function h(e,t){if(!l(e,n.x.root))throw new Error("MUI X: The root element is not found.");const r=e.getAttribute("aria-colindex");if(!r)return[];const o=Number(r)-1,i=[];return t.virtualScrollerRef?.current?(I(t).forEach((e=>{const r=e.getAttribute("data-id");if(!r)return;let n=o;const l=t.unstable_getCellColSpanInfo(r,o);l&&l.spannedByColSpan&&(n=l.leftVisibleCellIndex);const a=e.querySelector(`[data-colindex="${n}"]`);a&&i.push(a)})),i):[]}function b(e,t){return e.rootElementRef.current.querySelector(`.${n.x[t]}`)}const w=({api:e,colIndex:t,position:r,filterFn:o})=>{if(null===t)return[];const l=[];return I(e).forEach((e=>{e.getAttribute("data-id")&&e.querySelectorAll(`.${n.x["left"===r?"cell--pinnedLeft":"cell--pinnedRight"]}`).forEach((e=>{const t=M(e);null!==t&&o(t)&&l.push(e)}))})),l};function C(e,t,r){const n=M(t);return w({api:e,colIndex:n,position:r?"right":"left",filterFn:e=>r?e<n:e>n})}function v(e,t,r){const n=M(t);return w({api:e,colIndex:n,position:r?"left":"right",filterFn:e=>r?e>n:e<n})}const x=({api:e,colIndex:t,position:r,filterFn:o})=>{if(!e.columnHeadersContainerRef?.current)return[];if(null===t)return[];const l=[];return e.columnHeadersContainerRef.current.querySelectorAll(`.${n.x["left"===r?"columnHeader--pinnedLeft":"columnHeader--pinnedRight"]}`).forEach((e=>{const t=M(e);null!==t&&o(t)&&l.push(e)})),l};function y(e,t,r){const n=M(t);return x({api:e,position:r?"right":"left",colIndex:n,filterFn:e=>r?e<n:e>n})}function A(e,t,r){const n=M(t);return x({api:e,position:r?"left":"right",colIndex:n,filterFn:e=>r?e>n:e<n})}function R(e,t){return e.columnHeadersContainerRef.current.querySelector(`:scope > div > [data-field="${i(t)}"][role="columnheader"]`)}function S(e,t){const r=e.virtualScrollerRef.current;return Array.from(r.querySelectorAll(`:scope > div > div > div > [data-field="${i(t)}"][role="gridcell"]`))}function I(e){return e.virtualScrollerRef.current.querySelectorAll(`:scope > div > div > .${n.x.row}`)}function M(e){const t=e.getAttribute("aria-colindex");return t?Number(t)-1:null}},67129:(e,t,r)=>{"use strict";function n(e){return 1===e.key.length&&!e.ctrlKey&&!e.metaKey}r.d(t,{HF:()=>i,IA:()=>a,TW:()=>n,kx:()=>l,q9:()=>o});const o=e=>0===e.indexOf("Arrow")||0===e.indexOf("Page")||" "===e||"Home"===e||"End"===e,l=e=>!!e.key,i=e=>"Tab"===e||"Escape"===e;function a(e){return!(!e.ctrlKey&&!e.metaKey||"v"!==e.key.toLowerCase()||e.shiftKey||e.altKey)}},58766:(e,t,r)=>{"use strict";function n(e){return"number"==typeof e&&!Number.isNaN(e)}function o(e){return"function"==typeof e}function l(e){return"object"==typeof e&&null!==e}function i(){try{const e="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}function a(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}r.d(t,{E1:()=>d,Et:()=>n,Go:()=>p,Gv:()=>l,Hv:()=>u,Nt:()=>a,Tn:()=>o,qE:()=>s,s3:()=>i,y1:()=>c});const s=(e,t,r)=>Math.max(t,Math.min(r,e));function c(e,t){return Array.from({length:t-e}).map(((t,r)=>e+r))}function u(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const r=e.length;if(r!==t.length)return!1;for(let n=0;n<r;n+=1)if(!u(e[n],t[n]))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;const r=Array.from(e.entries());for(let e=0;e<r.length;e+=1)if(!t.has(r[e][0]))return!1;for(let e=0;e<r.length;e+=1){const n=r[e];if(!u(n[1],t.get(n[0])))return!1}return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;const r=Array.from(e.entries());for(let e=0;e<r.length;e+=1)if(!t.has(r[e][0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){const r=e.length;if(r!==t.length)return!1;for(let n=0;n<r;n+=1)if(e[n]!==t[n])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();const r=Object.keys(e),n=r.length;if(n!==Object.keys(t).length)return!1;for(let e=0;e<n;e+=1)if(!Object.prototype.hasOwnProperty.call(t,r[e]))return!1;for(let o=0;o<n;o+=1){const n=r[o];if(!u(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function d(e){const t=(r=e,()=>{let e=r+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296});var r;return(e,r)=>e+(r-e)*t()}function p(e){return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}},46345:(e,t,r)=>{"use strict";r.d(t,{n:()=>l});var n=r(7552),o=r(15689);function l(e){return n.memo(e,o.v)}},15689:(e,t,r)=>{"use strict";r.d(t,{v:()=>o});const n=Object.is;function o(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let r=0,o=0;for(const o in e){if(r+=1,!n(e[o],t[o]))return!1;if(!(o in t))return!1}for(const e in t)o+=1;return r===o}},12218:(e,t,r)=>{"use strict";var n=r(905);function o(){}function l(){}l.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,l,i){if(i!==n){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:l,resetWarningCache:o};return r.PropTypes=r,r}},15152:(e,t,r)=>{e.exports=r(12218)()},905:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},47198:(e,t,r)=>{"use strict";r.d(t,{Ad:()=>c,i5:()=>i});var n=Symbol("NOT_FOUND");var o=e=>Array.isArray(e)?e:[e];Symbol(),Object.getPrototypeOf({});var l=(e,t)=>e===t;function i(e,t){const r="object"==typeof t?t:{equalityCheck:t},{equalityCheck:o=l,maxSize:i=1,resultEqualityCheck:a}=r,s=function(e){return function(t,r){if(null===t||null===r||t.length!==r.length)return!1;const{length:n}=t;for(let o=0;o<n;o++)if(!e(t[o],r[o]))return!1;return!0}}(o);let c=0;const u=i<=1?function(e){let t;return{get:r=>t&&e(t.key,r)?t.value:n,put(e,r){t={key:e,value:r}},getEntries:()=>t?[t]:[],clear(){t=void 0}}}(s):function(e,t){let r=[];function o(e){const o=r.findIndex((r=>t(e,r.key)));if(o>-1){const e=r[o];return o>0&&(r.splice(o,1),r.unshift(e)),e.value}return n}return{get:o,put:function(t,l){o(t)===n&&(r.unshift({key:t,value:l}),r.length>e&&r.pop())},getEntries:function(){return r},clear:function(){r=[]}}}(i,s);function d(){let t=u.get(arguments);if(t===n){if(t=e.apply(null,arguments),c++,a){const e=u.getEntries().find((e=>a(e.value,t)));e&&(t=e.value,0!==c&&c--)}u.put(arguments,t)}return t}return d.clearCache=()=>{u.clear(),d.resetResultsCount()},d.resultsCount=()=>c,d.resetResultsCount=()=>{c=0},d}var a="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function s(e,t={}){let r={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:n}=t;let o,l=0;function i(){let t=r;const{length:i}=arguments;for(let e=0,r=i;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const n=e.get(r);void 0===n?(t={s:0,v:void 0,o:null,p:null},e.set(r,t)):t=n}else{let e=t.p;null===e&&(t.p=e=new Map);const n=e.get(r);void 0===n?(t={s:0,v:void 0,o:null,p:null},e.set(r,t)):t=n}}const s=t;let c;if(1===t.s)c=t.v;else if(c=e.apply(null,arguments),l++,n){const e=o?.deref?.()??o;null!=e&&n(e,c)&&(c=e,0!==l&&l--),o="object"==typeof c&&null!==c||"function"==typeof c?new a(c):c}return s.s=1,s.v=c,c}return i.clearCache=()=>{r={s:0,v:void 0,o:null,p:null},i.resetResultsCount()},i.resultsCount=()=>l,i.resetResultsCount=()=>{l=0},i}function c(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,n=(...e)=>{let t,n=0,l=0,i={},a=e.pop();"object"==typeof a&&(i=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const c={...r,...i},{memoize:u,memoizeOptions:d=[],argsMemoize:p=s,argsMemoizeOptions:f=[],devModeChecks:g={}}=c,m=o(d),h=o(f),b=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),w=u((function(){return n++,a.apply(null,arguments)}),...m),C=p((function(){l++;const e=function(e,t){const r=[],{length:n}=e;for(let o=0;o<n;o++)r.push(e[o].apply(null,t));return r}(b,arguments);return t=w.apply(null,e),t}),...h);return Object.assign(C,{resultFunc:a,memoizedResultFunc:w,dependencies:b,dependencyRecomputations:()=>l,resetDependencyRecomputations:()=>{l=0},lastResult:()=>t,recomputations:()=>n,resetRecomputations:()=>{n=0},memoize:u,argsMemoize:p})};return Object.assign(n,{withTypes:()=>n}),n}var u=c(s),d=Object.assign(((e,t=u)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e);return t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,n)=>(e[r[n]]=t,e)),{})))}),{withTypes:()=>d})}}]);
+//# sourceMappingURL=5676.818528e8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5676.818528e8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5676.818528e8.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/LinearProgress/LinearProgress.js","../../../node_modules/@mui/material/LinearProgress/linearProgressClasses.js","../../../node_modules/@mui/material/Skeleton/Skeleton.js","../../../node_modules/@mui/material/Skeleton/skeletonClasses.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLoggerFactory.js","../../../node_modules/@mui/x-internals/EventManager/EventManager.js","../../../node_modules/@mui/x-data-grid/utils/Store.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridApiInitialization.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridPipeProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridStrategyProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridRefs.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridIsRtl.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridStateInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLocaleText.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridInitializeState.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/serializers/csvSerializer.js","../../../node_modules/@mui/x-data-grid/hooks/features/clipboard/useGridClipboard.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenu.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumns.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/useGridDensity.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridCsvExport.js","../../../node_modules/@mui/x-data-grid/utils/exportAs.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridPaginationModel.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/useGridFilter.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/useGridFocus.js","../../../node_modules/@mui/x-data-grid/hooks/features/keyboardNavigation/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridPagination.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/useGridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridCellEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridRowEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRows.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelection.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/useGridSorting.js","../../../node_modules/@mui/x-data-grid/hooks/features/scroll/useGridScroll.js","../../../node_modules/@mui/x-data-grid/hooks/features/dimensions/useGridDimensions.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsMeta.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumnSpanning.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/useGridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnResize/useGridColumnResize.js","../../../node_modules/@mui/x-data-grid/utils/createControllablePromise.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowSpanningUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowSpanning.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridComponent.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridPaginationMeta.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridRowCount.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridPrintExport.js","../../../node_modules/@mui/x-internals/throttle/throttle.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../../../node_modules/@mui/x-data-grid/hooks/features/events/useGridEvents.js","../../../node_modules/@mui/x-data-grid/hooks/features/statePersistence/useGridStatePersistence.js","../../../node_modules/@mui/x-data-grid/DataGrid/DataGrid.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridAriaAttributes.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowAriaAttributes.js","../../../node_modules/@mui/x-data-grid/components/GridNoResultsOverlay.js","../../../node_modules/@mui/x-data-grid/material/icons/GridColumnUnsortedIcon.js","../../../node_modules/@mui/x-data-grid/material/components/MUISelectOption.js","../../../node_modules/@mui/x-data-grid/material/index.js","../../../node_modules/@mui/x-data-grid/constants/defaultGridSlotsComponents.js","../../../node_modules/@mui/x-data-grid/components/GridDetailPanels.js","../../../node_modules/@mui/x-data-grid/components/GridPinnedRows.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridProps.js","../../../node_modules/@mui/x-data-grid/internals/utils/useProps.js","../../../node_modules/@mui/x-data-grid/internals/utils/computeSlots.js","../../../node_modules/@mui/x-data-grid/colDef/gridActionsColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridCheckboxSelectionColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridDefaultColumnTypes.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringOperators.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnGroupHeader.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnHeaders/useGridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridBaseColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/GridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/GridConfigurationContext.js","../../../node_modules/@mui/x-data-grid/components/GridFooter.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/components/GridHeader.js","../../../node_modules/@mui/x-data-grid/components/GridSkeletonLoadingOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridLoadingOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridNoRowsOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridPagination.js","../../../node_modules/@mui/x-data-grid/components/GridRow.js","../../../node_modules/@mui/x-data-grid/utils/composeGridClasses.js","../../../node_modules/@mui/x-data-grid/components/GridRowCount.js","../../../node_modules/@mui/x-data-grid/components/GridScrollbarFillerCell.js","../../../node_modules/@mui/x-data-grid/components/GridSelectedRowCount.js","../../../node_modules/@mui/x-data-grid/components/base/GridFooterPlaceholder.js","../../../node_modules/@mui/x-data-grid/components/base/GridOverlays.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridBooleanCell.js","../../../node_modules/@mui/x-data-grid/utils/doesSupportPreventScroll.js","../../../node_modules/@mui/x-data-grid/components/cell/GridCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditBooleanCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditDateCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditInputCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditSingleSelectCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridSkeletonCell.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderFilterIconButton.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/ColumnHeaderMenuIcon.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSeparator.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSortIcon.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderTitle.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridGenericColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridIconButtonContainer.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridCellCheckboxRenderer.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridHeaderCheckbox.js","../../../node_modules/@mui/x-data-grid/components/columnsManagement/utils.js","../../../node_modules/@mui/x-data-grid/components/columnsManagement/GridColumnsManagement.js","../../../node_modules/@mui/x-data-grid/components/containers/GridFooterContainer.js","../../../node_modules/@mui/x-data-grid/components/containers/GridOverlay.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRootStyles.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRoot.js","../../../node_modules/@mui/x-data-grid/components/menu/GridMenu.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnHeaderMenu.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenuSlots.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenu.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenuContainer.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js","../../../node_modules/@mui/x-data-grid/components/panel/GridColumnsPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelContent.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelFooter.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelWrapper.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterForm.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputBoolean.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputDate.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/filterPanelUtils.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExport.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExportContainer.js","../../../node_modules/@mui/x-data-grid/components/GridScrollArea.js","../../../node_modules/@mui/x-data-grid/hooks/features/overlays/useGridOverlays.js","../../../node_modules/@mui/x-data-grid/components/GridHeaders.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridMainContainer.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridTopContainer.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridBottomContainer.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerContent.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerFiller.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerRenderZone.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollbar.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/constants/gridClasses.js","../../../node_modules/@mui/x-data-grid/constants/gridDetailPanelToggleField.js","../../../node_modules/@mui/x-data-grid/constants/localeTextConstants.js","../../../node_modules/@mui/x-data-grid/context/GridContextProvider.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/columnMenuSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnResize/gridColumnResizeApi.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsInterfaces.js","../../../node_modules/@mui/x-data-grid/hooks/core/gridCoreSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/densitySelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/dimensions/gridDimensionsSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/gridEditingSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterState.js","../../../node_modules/@mui/x-data-grid/utils/getPublicApiRef.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/gridFocusStateSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelsValue.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/gridRowSelectionSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowSpanningSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsMetaSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridParamsApi.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/gridVirtualizationSelectors.js","../../../node_modules/@mui/x-internals/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/x-internals/useResizeObserver/useResizeObserver.js","../../../node_modules/@mui/x-data-grid/utils/platform.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualization.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useFirstRender.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/TimerBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiEventHandler.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiMethod.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridConfiguration.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridLogger.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridNativeEventListener.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridPrivateApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridSelector.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridVisibleRows.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useRunOnce.js","../../../node_modules/@mui/x-data-grid/internals/utils/getPinnedCellOffset.js","../../../node_modules/@mui/x-data-grid/material/icons/index.js","../../../node_modules/@mui/x-data-grid/models/gridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/models/gridEditRowModel.js","../../../node_modules/@mui/x-data-grid/models/gridFilterItem.js","../../../node_modules/@mui/x-data-grid/models/params/gridEditCellParams.js","../../../node_modules/@mui/x-data-grid/models/params/gridRowParams.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/capitalize/capitalize.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/debounce/debounce.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/setRef/setRef.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useId/useId.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../../../node_modules/@mui/x-data-grid/node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../../../node_modules/@mui/x-data-grid/utils/cellBorderUtils.js","../../../node_modules/@mui/x-data-grid/utils/createSelector.js","../../../node_modules/@mui/x-data-grid/utils/domUtils.js","../../../node_modules/@mui/x-data-grid/utils/keyboardUtils.js","../../../node_modules/@mui/x-data-grid/utils/utils.js","../../../node_modules/@mui/x-internals/fastMemo/fastMemo.js","../../../node_modules/@mui/x-internals/fastObjectShallowCompare/fastObjectShallowCompare.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/reselect/src/devModeChecks/identityFunctionCheck.ts","../../../node_modules/reselect/src/utils.ts","../../../node_modules/reselect/src/autotrackMemoize/proxy.ts","../../../node_modules/reselect/src/lruMemoize.ts","../../../node_modules/reselect/src/weakMapMemoize.ts","../../../node_modules/reselect/src/createSelectorCreator.ts","../../../node_modules/reselect/src/createStructuredSelector.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { getLinearProgressUtilityClass } from \"./linearProgressClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes`\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst indeterminate1Animation = typeof indeterminate1Keyframe !== 'string' ? css`\n        animation: ${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n      ` : null;\nconst indeterminate2Keyframe = keyframes`\n  0% {\n    left: -200%;\n    right: 100%;\n  }\n\n  60% {\n    left: 107%;\n    right: -8%;\n  }\n\n  100% {\n    left: 107%;\n    right: -8%;\n  }\n`;\nconst indeterminate2Animation = typeof indeterminate2Keyframe !== 'string' ? css`\n        animation: ${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n      ` : null;\nconst bufferKeyframe = keyframes`\n  0% {\n    opacity: 1;\n    background-position: 0 -23px;\n  }\n\n  60% {\n    opacity: 0;\n    background-position: 0 -23px;\n  }\n\n  100% {\n    opacity: 1;\n    background-position: -200px -23px;\n  }\n`;\nconst bufferAnimation = typeof bufferKeyframe !== 'string' ? css`\n        animation: ${bufferKeyframe} 3s infinite linear;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, variant],\n    dashed: ['dashed', `dashedColor${capitalize(color)}`],\n    bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n    bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n  };\n  return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n  if (theme.vars) {\n    return theme.vars.palette.LinearProgress[`${color}Bg`];\n  }\n  return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  overflow: 'hidden',\n  display: 'block',\n  height: 4,\n  // Fix Safari's bug during composition of different paint.\n  zIndex: 0,\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color)\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.color === 'inherit' && ownerState.variant !== 'buffer',\n    style: {\n      '&::before': {\n        content: '\"\"',\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'currentColor',\n        opacity: 0.3\n      }\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: 'transparent'\n    }\n  }, {\n    props: {\n      variant: 'query'\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n})));\nconst LinearProgressDashed = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Dashed',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  marginTop: 0,\n  height: '100%',\n  width: '100%',\n  backgroundSize: '10px 10px',\n  backgroundPosition: '0 -23px',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3,\n      backgroundImage: `radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => {\n    const backgroundColor = getColorShade(theme, color);\n    return {\n      props: {\n        color\n      },\n      style: {\n        backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`\n      }\n    };\n  })]\n})), bufferAnimation || {\n  // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n  animation: `${bufferKeyframe} 3s infinite linear`\n});\nconst LinearProgressBar1 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar1',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      backgroundColor: 'currentColor'\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      zIndex: 1,\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate1Animation || {\n      animation: `${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`\n    }\n  }]\n})));\nconst LinearProgressBar2 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar2',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      '--LinearProgressBar2-barColor': (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant !== 'buffer' && ownerState.color !== 'inherit',\n    style: {\n      backgroundColor: 'var(--LinearProgressBar2-barColor, currentColor)'\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color),\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate2Animation || {\n      animation: `${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLinearProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    value,\n    valueBuffer,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const isRtl = useRtl();\n  const rootProps = {};\n  const inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      let transform = value - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar1.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      let transform = (valueBuffer || 0) - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar2.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(LinearProgressRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"progressbar\",\n    ...rootProps,\n    ref: ref,\n    ...other,\n    children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n      className: classes.dashed,\n      ownerState: ownerState\n    }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n      className: classes.bar1,\n      ownerState: ownerState,\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n      className: classes.bar2,\n      ownerState: ownerState,\n      style: inlineStyles.bar2\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from \"../styles/index.js\";\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getSkeletonUtilityClass } from \"./skeletonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    animation,\n    hasChildren,\n    width,\n    height\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n  };\n  return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes`\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0.4;\n  }\n\n  100% {\n    opacity: 1;\n  }\n`;\nconst waveKeyframe = keyframes`\n  0% {\n    transform: translateX(-100%);\n  }\n\n  50% {\n    /* +0.5s of delay between each loop */\n    transform: translateX(100%);\n  }\n\n  100% {\n    transform: translateX(100%);\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst pulseAnimation = typeof pulseKeyframe !== 'string' ? css`\n        animation: ${pulseKeyframe} 2s ease-in-out 0.5s infinite;\n      ` : null;\nconst waveAnimation = typeof waveKeyframe !== 'string' ? css`\n        &::after {\n          animation: ${waveKeyframe} 2s linear 0.5s infinite;\n        }\n      ` : null;\nconst SkeletonRoot = styled('span', {\n  name: 'MuiSkeleton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n  const radiusValue = toUnitless(theme.shape.borderRadius);\n  return {\n    display: 'block',\n    // Create a \"on paper\" color with sufficient contrast retaining the color\n    backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n    height: '1.2em',\n    variants: [{\n      props: {\n        variant: 'text'\n      },\n      style: {\n        marginTop: 0,\n        marginBottom: 0,\n        height: 'auto',\n        transformOrigin: '0 55%',\n        transform: 'scale(1, 0.60)',\n        borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n        '&:empty:before': {\n          content: '\"\\\\00a0\"'\n        }\n      }\n    }, {\n      props: {\n        variant: 'circular'\n      },\n      style: {\n        borderRadius: '50%'\n      }\n    }, {\n      props: {\n        variant: 'rounded'\n      },\n      style: {\n        borderRadius: (theme.vars || theme).shape.borderRadius\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren,\n      style: {\n        '& > *': {\n          visibility: 'hidden'\n        }\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren && !ownerState.width,\n      style: {\n        maxWidth: 'fit-content'\n      }\n    }, {\n      props: ({\n        ownerState\n      }) => ownerState.hasChildren && !ownerState.height,\n      style: {\n        height: 'auto'\n      }\n    }, {\n      props: {\n        animation: 'pulse'\n      },\n      style: pulseAnimation || {\n        animation: `${pulseKeyframe} 2s ease-in-out 0.5s infinite`\n      }\n    }, {\n      props: {\n        animation: 'wave'\n      },\n      style: {\n        position: 'relative',\n        overflow: 'hidden',\n        /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n        WebkitMaskImage: '-webkit-radial-gradient(white, black)',\n        '&::after': {\n          background: `linear-gradient(\n                90deg,\n                transparent,\n                ${(theme.vars || theme).palette.action.hover},\n                transparent\n              )`,\n          content: '\"\"',\n          position: 'absolute',\n          transform: 'translateX(-100%)' /* Avoid flash during server-side hydration */,\n          bottom: 0,\n          left: 0,\n          right: 0,\n          top: 0\n        }\n      }\n    }, {\n      props: {\n        animation: 'wave'\n      },\n      style: waveAnimation || {\n        '&::after': {\n          animation: `${waveKeyframe} 2s linear 0.5s infinite`\n        }\n      }\n    }]\n  };\n}));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSkeleton'\n  });\n  const {\n    animation = 'pulse',\n    className,\n    component = 'span',\n    height,\n    style,\n    variant = 'text',\n    width,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    animation,\n    component,\n    variant,\n    hasChildren: Boolean(other.children)\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(SkeletonRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other,\n    style: {\n      width,\n      height,\n      ...style\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The animation.\n   * If `false` the animation effect is disabled.\n   * @default 'pulse'\n   */\n  animation: PropTypes.oneOf(['pulse', 'wave', false]),\n  /**\n   * Optional children to infer width and height from.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Height of the skeleton.\n   * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n   */\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of content that will be rendered.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n  /**\n   * Width of the skeleton.\n   * Useful when the skeleton is inside an inline element with no width of its own.\n   */\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n  return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;","import * as React from 'react';\nimport { localStorageAvailable } from \"../../utils/utils.js\";\nimport { useGridApiMethod } from \"../utils/index.js\";\nconst forceDebug = localStorageAvailable() && window.localStorage.getItem('DEBUG') != null;\nconst noop = () => {};\nconst noopLogger = {\n  debug: noop,\n  info: noop,\n  warn: noop,\n  error: noop\n};\nconst LOG_LEVELS = ['debug', 'info', 'warn', 'error'];\nfunction getAppender(name, logLevel, appender = console) {\n  const minLogLevelIdx = LOG_LEVELS.indexOf(logLevel);\n  if (minLogLevelIdx === -1) {\n    throw new Error(`MUI X: Log level ${logLevel} not recognized.`);\n  }\n  const logger = LOG_LEVELS.reduce((loggerObj, method, idx) => {\n    if (idx >= minLogLevelIdx) {\n      loggerObj[method] = (...args) => {\n        const [message, ...other] = args;\n        appender[method](`MUI X: ${name} - ${message}`, ...other);\n      };\n    } else {\n      loggerObj[method] = noop;\n    }\n    return loggerObj;\n  }, {});\n  return logger;\n}\nexport const useGridLoggerFactory = (apiRef, props) => {\n  const getLogger = React.useCallback(name => {\n    if (forceDebug) {\n      return getAppender(name, 'debug', props.logger);\n    }\n    if (!props.logLevel) {\n      return noopLogger;\n    }\n    return getAppender(name, props.logLevel.toString(), props.logger);\n  }, [props.logLevel, props.logger]);\n  useGridApiMethod(apiRef, {\n    getLogger\n  }, 'private');\n};","// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n  constructor() {\n    this.maxListeners = 20;\n    this.warnOnce = false;\n    this.events = {};\n  }\n  on(eventName, listener, options = {}) {\n    let collection = this.events[eventName];\n    if (!collection) {\n      collection = {\n        highPriority: new Map(),\n        regular: new Map()\n      };\n      this.events[eventName] = collection;\n    }\n    if (options.isFirst) {\n      collection.highPriority.set(listener, true);\n    } else {\n      collection.regular.set(listener, true);\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const collectionSize = collection.highPriority.size + collection.regular.size;\n      if (collectionSize > this.maxListeners && !this.warnOnce) {\n        this.warnOnce = true;\n        console.warn([`Possible EventEmitter memory leak detected. ${collectionSize} ${eventName} listeners added.`].join('\\n'));\n      }\n    }\n  }\n  removeListener(eventName, listener) {\n    if (this.events[eventName]) {\n      this.events[eventName].regular.delete(listener);\n      this.events[eventName].highPriority.delete(listener);\n    }\n  }\n  removeAllListeners() {\n    this.events = {};\n  }\n  emit(eventName, ...args) {\n    const collection = this.events[eventName];\n    if (!collection) {\n      return;\n    }\n    const highPriorityListeners = Array.from(collection.highPriority.keys());\n    const regularListeners = Array.from(collection.regular.keys());\n    for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n      const listener = highPriorityListeners[i];\n      if (collection.highPriority.has(listener)) {\n        listener.apply(this, args);\n      }\n    }\n    for (let i = 0; i < regularListeners.length; i += 1) {\n      const listener = regularListeners[i];\n      if (collection.regular.has(listener)) {\n        listener.apply(this, args);\n      }\n    }\n  }\n  once(eventName, listener) {\n    // eslint-disable-next-line consistent-this\n    const that = this;\n    this.on(eventName, function oneTimeListener(...args) {\n      that.removeListener(eventName, oneTimeListener);\n      listener.apply(that, args);\n    });\n  }\n}","export class Store {\n  static create(value) {\n    return new Store(value);\n  }\n  constructor(_value) {\n    this.value = void 0;\n    this.listeners = void 0;\n    this.subscribe = fn => {\n      this.listeners.add(fn);\n      return () => {\n        this.listeners.delete(fn);\n      };\n    };\n    this.getSnapshot = () => {\n      return this.value;\n    };\n    this.update = value => {\n      this.value = value;\n      this.listeners.forEach(l => l(value));\n    };\n    this.value = _value;\n    this.listeners = new Set();\n  }\n}","import * as React from 'react';\nimport { EventManager } from '@mui/x-internals/EventManager';\nimport { Store } from \"../../utils/Store.js\";\nimport { useGridApiMethod } from \"../utils/useGridApiMethod.js\";\nimport { GridSignature } from \"../utils/useGridApiEventHandler.js\";\nconst SYMBOL_API_PRIVATE = Symbol('mui.api_private');\nconst isSyntheticEvent = event => {\n  return event.isPropagationStopped !== undefined;\n};\nexport function unwrapPrivateAPI(publicApi) {\n  return publicApi[SYMBOL_API_PRIVATE];\n}\nlet globalId = 0;\nfunction createPrivateAPI(publicApiRef) {\n  const existingPrivateApi = publicApiRef.current?.[SYMBOL_API_PRIVATE];\n  if (existingPrivateApi) {\n    return existingPrivateApi;\n  }\n  const state = {};\n  const privateApi = {\n    state,\n    store: Store.create(state),\n    instanceId: {\n      id: globalId\n    }\n  };\n  globalId += 1;\n  privateApi.getPublicApi = () => publicApiRef.current;\n  privateApi.register = (visibility, methods) => {\n    Object.keys(methods).forEach(methodName => {\n      const method = methods[methodName];\n      const currentPrivateMethod = privateApi[methodName];\n      if (currentPrivateMethod?.spying === true) {\n        currentPrivateMethod.target = method;\n      } else {\n        privateApi[methodName] = method;\n      }\n      if (visibility === 'public') {\n        const publicApi = publicApiRef.current;\n        const currentPublicMethod = publicApi[methodName];\n        if (currentPublicMethod?.spying === true) {\n          currentPublicMethod.target = method;\n        } else {\n          publicApi[methodName] = method;\n        }\n      }\n    });\n  };\n  privateApi.register('private', {\n    caches: {},\n    eventManager: new EventManager()\n  });\n  return privateApi;\n}\nfunction createPublicAPI(privateApiRef) {\n  const publicApi = {\n    get state() {\n      return privateApiRef.current.state;\n    },\n    get store() {\n      return privateApiRef.current.store;\n    },\n    get instanceId() {\n      return privateApiRef.current.instanceId;\n    },\n    [SYMBOL_API_PRIVATE]: privateApiRef.current\n  };\n  return publicApi;\n}\nexport function useGridApiInitialization(inputApiRef, props) {\n  const publicApiRef = React.useRef();\n  const privateApiRef = React.useRef();\n  if (!privateApiRef.current) {\n    privateApiRef.current = createPrivateAPI(publicApiRef);\n  }\n  if (!publicApiRef.current) {\n    publicApiRef.current = createPublicAPI(privateApiRef);\n  }\n  const publishEvent = React.useCallback((...args) => {\n    const [name, params, event = {}] = args;\n    event.defaultMuiPrevented = false;\n    if (isSyntheticEvent(event) && event.isPropagationStopped()) {\n      return;\n    }\n    const details = props.signature === GridSignature.DataGridPro || props.signature === GridSignature.DataGridPremium ? {\n      api: privateApiRef.current.getPublicApi()\n    } : {};\n    privateApiRef.current.eventManager.emit(name, params, event, details);\n  }, [privateApiRef, props.signature]);\n  const subscribeEvent = React.useCallback((event, handler, options) => {\n    privateApiRef.current.eventManager.on(event, handler, options);\n    const api = privateApiRef.current;\n    return () => {\n      api.eventManager.removeListener(event, handler);\n    };\n  }, [privateApiRef]);\n  useGridApiMethod(privateApiRef, {\n    subscribeEvent,\n    publishEvent\n  }, 'public');\n  if (inputApiRef && !inputApiRef.current?.state) {\n    inputApiRef.current = publicApiRef.current;\n  }\n  React.useImperativeHandle(inputApiRef, () => publicApiRef.current, [publicApiRef]);\n  React.useEffect(() => {\n    const api = privateApiRef.current;\n    return () => {\n      api.publishEvent('unmount');\n    };\n  }, [privateApiRef]);\n  return privateApiRef;\n}","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\n/**\n * Implement the Pipeline Pattern\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic to enrich data provided by other plugins or components.\n * For instance, the row grouping plugin needs to add / remove the grouping columns when the grid columns are updated.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterPipeProcessor` to register their processor.\n *\n * - `apiRef.current.requestPipeProcessorsApplication` to imperatively re-apply a group.\n *   This method should be used in last resort.\n *   Most of the time, the application should be triggered by an update on the deps of the processor.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to enrich its data must use:\n *\n * - `apiRef.current.unstable_applyPipeProcessors` to run in chain all the processors of a given group.\n *\n * - `useGridRegisterPipeApplier` to re-apply the whole pipe when requested.\n *   The applier will be called when:\n *   * a processor is registered.\n *   * `apiRef.current.requestPipeProcessorsApplication` is called for the given group.\n */\nexport const useGridPipeProcessing = apiRef => {\n  const cache = React.useRef({});\n  const isRunning = React.useRef(false);\n  const runAppliers = React.useCallback(groupCache => {\n    if (isRunning.current || !groupCache) {\n      return;\n    }\n    isRunning.current = true;\n    Object.values(groupCache.appliers).forEach(callback => {\n      callback();\n    });\n    isRunning.current = false;\n  }, []);\n  const registerPipeProcessor = React.useCallback((group, id, processor) => {\n    if (!cache.current[group]) {\n      cache.current[group] = {\n        processors: new Map(),\n        processorsAsArray: [],\n        appliers: {}\n      };\n    }\n    const groupCache = cache.current[group];\n    const oldProcessor = groupCache.processors.get(id);\n    if (oldProcessor !== processor) {\n      groupCache.processors.set(id, processor);\n      groupCache.processorsAsArray = Array.from(cache.current[group].processors.values());\n      runAppliers(groupCache);\n    }\n    return () => {\n      cache.current[group].processors.delete(id);\n      cache.current[group].processorsAsArray = Array.from(cache.current[group].processors.values());\n    };\n  }, [runAppliers]);\n  const registerPipeApplier = React.useCallback((group, id, applier) => {\n    if (!cache.current[group]) {\n      cache.current[group] = {\n        processors: new Map(),\n        processorsAsArray: [],\n        appliers: {}\n      };\n    }\n    cache.current[group].appliers[id] = applier;\n    return () => {\n      const _appliers = cache.current[group].appliers,\n        otherAppliers = _objectWithoutPropertiesLoose(_appliers, [id].map(_toPropertyKey));\n      cache.current[group].appliers = otherAppliers;\n    };\n  }, []);\n  const requestPipeProcessorsApplication = React.useCallback(group => {\n    runAppliers(cache.current[group]);\n  }, [runAppliers]);\n  const applyPipeProcessors = React.useCallback((...args) => {\n    const [group, value, context] = args;\n    if (!cache.current[group]) {\n      return value;\n    }\n    const processors = cache.current[group].processorsAsArray;\n    let result = value;\n    for (let i = 0; i < processors.length; i += 1) {\n      result = processors[i](result, context);\n    }\n    return result;\n  }, []);\n  const preProcessingPrivateApi = {\n    registerPipeProcessor,\n    registerPipeApplier,\n    requestPipeProcessorsApplication\n  };\n  const preProcessingPublicApi = {\n    unstable_applyPipeProcessors: applyPipeProcessors\n  };\n  useGridApiMethod(apiRef, preProcessingPrivateApi, 'private');\n  useGridApiMethod(apiRef, preProcessingPublicApi, 'public');\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nexport const GRID_DEFAULT_STRATEGY = 'none';\nexport const GRID_STRATEGIES_PROCESSORS = {\n  rowTreeCreation: 'rowTree',\n  filtering: 'rowTree',\n  sorting: 'rowTree',\n  visibleRowsLookupCreation: 'rowTree'\n};\n/**\n * Implements a variant of the Strategy Pattern (see https://en.wikipedia.org/wiki/Strategy_pattern)\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic that must only be applied if the right strategy is active.\n * For instance, the row grouping plugin has a custom filtering algorithm.\n * This algorithm must be applied by the filtering plugin if the row grouping is the current way of grouping rows,\n * but not if the tree data is the current way of grouping rows.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterStrategyProcessor` to register their processor.\n *   When the processor of the active strategy changes, it will fire `\"activeStrategyProcessorChange\"` to re-apply the processor.\n *\n * - `apiRef.current.setStrategyAvailability` to tell if their strategy can be used.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to apply the custom logic of the current strategy must use:\n *\n * - `apiRef.current.applyStrategyProcessor` to run the processor of the active strategy for a given processor name.\n *\n * - the \"strategyAvailabilityChange\" event to update something when the active strategy changes.\n *    Warning: Be careful not to apply the processor several times.\n *    For instance \"rowsSet\" is fired by `useGridRows` whenever the active strategy changes.\n *    So listening to both would most likely run your logic twice.\n *\n * - The \"activeStrategyProcessorChange\" event to update something when the processor of the active strategy changes.\n *\n * =====================================================================================================================\n *\n * Each processor name is part of a strategy group which can only have one active strategy at the time.\n * For now, there is only one strategy group named `rowTree` which customize\n * - row tree creation algorithm.\n * - sorting algorithm.\n * - filtering algorithm.\n */\nexport const useGridStrategyProcessing = apiRef => {\n  const availableStrategies = React.useRef(new Map());\n  const strategiesCache = React.useRef({});\n  const registerStrategyProcessor = React.useCallback((strategyName, processorName, processor) => {\n    const cleanup = () => {\n      const _ref = strategiesCache.current[processorName],\n        otherProcessors = _objectWithoutPropertiesLoose(_ref, [strategyName].map(_toPropertyKey));\n      strategiesCache.current[processorName] = otherProcessors;\n    };\n    if (!strategiesCache.current[processorName]) {\n      strategiesCache.current[processorName] = {};\n    }\n    const groupPreProcessors = strategiesCache.current[processorName];\n    const previousProcessor = groupPreProcessors[strategyName];\n    groupPreProcessors[strategyName] = processor;\n    if (!previousProcessor || previousProcessor === processor) {\n      return cleanup;\n    }\n    if (strategyName === apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName])) {\n      apiRef.current.publishEvent('activeStrategyProcessorChange', processorName);\n    }\n    return cleanup;\n  }, [apiRef]);\n  const applyStrategyProcessor = React.useCallback((processorName, params) => {\n    const activeStrategy = apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName]);\n    if (activeStrategy == null) {\n      throw new Error(\"Can't apply a strategy processor before defining an active strategy\");\n    }\n    const groupCache = strategiesCache.current[processorName];\n    if (!groupCache || !groupCache[activeStrategy]) {\n      throw new Error(`No processor found for processor \"${processorName}\" on strategy \"${activeStrategy}\"`);\n    }\n    const processor = groupCache[activeStrategy];\n    return processor(params);\n  }, [apiRef]);\n  const getActiveStrategy = React.useCallback(strategyGroup => {\n    const strategyEntries = Array.from(availableStrategies.current.entries());\n    const availableStrategyEntry = strategyEntries.find(([, strategy]) => {\n      if (strategy.group !== strategyGroup) {\n        return false;\n      }\n      return strategy.isAvailable();\n    });\n    return availableStrategyEntry?.[0] ?? GRID_DEFAULT_STRATEGY;\n  }, []);\n  const setStrategyAvailability = React.useCallback((strategyGroup, strategyName, isAvailable) => {\n    availableStrategies.current.set(strategyName, {\n      group: strategyGroup,\n      isAvailable\n    });\n    apiRef.current.publishEvent('strategyAvailabilityChange');\n  }, [apiRef]);\n  const strategyProcessingApi = {\n    registerStrategyProcessor,\n    applyStrategyProcessor,\n    getActiveStrategy,\n    setStrategyAvailability\n  };\n  useGridApiMethod(apiRef, strategyProcessingApi, 'private');\n};","import { useGridRefs } from \"./useGridRefs.js\";\nimport { useGridIsRtl } from \"./useGridIsRtl.js\";\nimport { useGridLoggerFactory } from \"./useGridLoggerFactory.js\";\nimport { useGridApiInitialization } from \"./useGridApiInitialization.js\";\nimport { useGridLocaleText } from \"./useGridLocaleText.js\";\nimport { useGridPipeProcessing } from \"./pipeProcessing/index.js\";\nimport { useGridStrategyProcessing } from \"./strategyProcessing/index.js\";\nimport { useGridStateInitialization } from \"./useGridStateInitialization.js\";\n\n/**\n * Initialize the technical pieces of the DataGrid (logger, state, ...) that any DataGrid implementation needs\n */\nexport const useGridInitialization = (inputApiRef, props) => {\n  const privateApiRef = useGridApiInitialization(inputApiRef, props);\n  useGridRefs(privateApiRef);\n  useGridIsRtl(privateApiRef);\n  useGridLoggerFactory(privateApiRef, props);\n  useGridStateInitialization(privateApiRef);\n  useGridPipeProcessing(privateApiRef);\n  useGridStrategyProcessing(privateApiRef);\n  useGridLocaleText(privateApiRef, props);\n  privateApiRef.current.register('private', {\n    rootProps: props\n  });\n  return privateApiRef;\n};","import * as React from 'react';\nexport const useGridRefs = apiRef => {\n  const rootElementRef = React.useRef(null);\n  const mainElementRef = React.useRef(null);\n  const virtualScrollerRef = React.useRef(null);\n  const columnHeadersContainerRef = React.useRef(null);\n  apiRef.current.register('public', {\n    rootElementRef\n  });\n  apiRef.current.register('private', {\n    mainElementRef,\n    virtualScrollerRef,\n    columnHeadersContainerRef\n  });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nexport const useGridIsRtl = apiRef => {\n  const isRtl = useRtl();\n  if (apiRef.current.state.isRtl === undefined) {\n    apiRef.current.state.isRtl = isRtl;\n  }\n  const isFirstEffect = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstEffect.current) {\n      isFirstEffect.current = false;\n    } else {\n      apiRef.current.setState(state => _extends({}, state, {\n        isRtl\n      }));\n    }\n  }, [apiRef, isRtl]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../utils/index.js\";\nimport { isFunction } from \"../../utils/utils.js\";\nexport const useGridStateInitialization = apiRef => {\n  const controlStateMapRef = React.useRef({});\n  const [, rawForceUpdate] = React.useState();\n  const registerControlState = React.useCallback(controlStateItem => {\n    controlStateMapRef.current[controlStateItem.stateId] = controlStateItem;\n  }, []);\n  const setState = React.useCallback((state, reason) => {\n    let newState;\n    if (isFunction(state)) {\n      newState = state(apiRef.current.state);\n    } else {\n      newState = state;\n    }\n    if (apiRef.current.state === newState) {\n      return false;\n    }\n    let ignoreSetState = false;\n\n    // Apply the control state constraints\n    const updatedControlStateIds = [];\n    Object.keys(controlStateMapRef.current).forEach(stateId => {\n      const controlState = controlStateMapRef.current[stateId];\n      const oldSubState = controlState.stateSelector(apiRef.current.state, apiRef.current.instanceId);\n      const newSubState = controlState.stateSelector(newState, apiRef.current.instanceId);\n      if (newSubState === oldSubState) {\n        return;\n      }\n      updatedControlStateIds.push({\n        stateId: controlState.stateId,\n        hasPropChanged: newSubState !== controlState.propModel\n      });\n\n      // The state is controlled, the prop should always win\n      if (controlState.propModel !== undefined && newSubState !== controlState.propModel) {\n        ignoreSetState = true;\n      }\n    });\n    if (updatedControlStateIds.length > 1) {\n      // Each hook modify its own state, and it should not leak\n      // Events are here to forward to other hooks and apply changes.\n      // You are trying to update several states in a no isolated way.\n      throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${updatedControlStateIds[0].stateId}, therefore, you're not allowed to update ${updatedControlStateIds.map(el => el.stateId).join(', ')} in the same transaction.`);\n    }\n    if (!ignoreSetState) {\n      // We always assign it as we mutate rows for perf reason.\n      apiRef.current.state = newState;\n      apiRef.current.publishEvent('stateChange', newState);\n      apiRef.current.store.update(newState);\n    }\n    if (updatedControlStateIds.length === 1) {\n      const {\n        stateId,\n        hasPropChanged\n      } = updatedControlStateIds[0];\n      const controlState = controlStateMapRef.current[stateId];\n      const model = controlState.stateSelector(newState, apiRef.current.instanceId);\n      if (controlState.propOnChange && hasPropChanged) {\n        controlState.propOnChange(model, {\n          reason,\n          api: apiRef.current\n        });\n      }\n      if (!ignoreSetState) {\n        apiRef.current.publishEvent(controlState.changeEvent, model, {\n          reason\n        });\n      }\n    }\n    return !ignoreSetState;\n  }, [apiRef]);\n  const updateControlState = React.useCallback((key, state, reason) => {\n    return apiRef.current.setState(previousState => {\n      return _extends({}, previousState, {\n        [key]: state(previousState[key])\n      });\n    }, reason);\n  }, [apiRef]);\n  const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);\n  const publicStateApi = {\n    setState,\n    forceUpdate\n  };\n  const privateStateApi = {\n    updateControlState,\n    registerControlState\n  };\n  useGridApiMethod(apiRef, publicStateApi, 'public');\n  useGridApiMethod(apiRef, privateStateApi, 'private');\n};","import * as React from 'react';\nexport const useGridLocaleText = (apiRef, props) => {\n  const getLocaleText = React.useCallback(key => {\n    if (props.localeText[key] == null) {\n      throw new Error(`Missing translation for key ${key}.`);\n    }\n    return props.localeText[key];\n  }, [props.localeText]);\n  apiRef.current.register('public', {\n    getLocaleText\n  });\n};","import * as React from 'react';\nexport const useGridInitializeState = (initializer, privateApiRef, props) => {\n  const isInitialized = React.useRef(false);\n  if (!isInitialized.current) {\n    privateApiRef.current.state = initializer(privateApiRef.current.state, props, privateApiRef);\n    isInitialized.current = true;\n  }\n};","import { warnOnce } from '@mui/x-internals/warning';\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from \"../../../../colDef/index.js\";\nfunction sanitizeCellValue(value, csvOptions) {\n  if (value === null || value === undefined) {\n    return '';\n  }\n  const valueStr = typeof value === 'string' ? value : `${value}`;\n  if (csvOptions.shouldAppendQuotes || csvOptions.escapeFormulas) {\n    const escapedValue = valueStr.replace(/\"/g, '\"\"');\n    if (csvOptions.escapeFormulas) {\n      // See https://owasp.org/www-community/attacks/CSV_Injection\n      if (['=', '+', '-', '@', '\\t', '\\r'].includes(escapedValue[0])) {\n        return `\"'${escapedValue}\"`;\n      }\n    }\n    // Make sure value containing delimiter or line break won't be split into multiple cells\n    if ([csvOptions.delimiter, '\\n', '\\r', '\"'].some(delimiter => valueStr.includes(delimiter))) {\n      return `\"${escapedValue}\"`;\n    }\n    return escapedValue;\n  }\n  return valueStr;\n}\nexport const serializeCellValue = (cellParams, options) => {\n  const {\n    csvOptions,\n    ignoreValueFormatter\n  } = options;\n  let value;\n  if (ignoreValueFormatter) {\n    const columnType = cellParams.colDef.type;\n    if (columnType === 'number') {\n      value = String(cellParams.value);\n    } else if (columnType === 'date' || columnType === 'dateTime') {\n      value = cellParams.value?.toISOString();\n    } else if (typeof cellParams.value?.toString === 'function') {\n      value = cellParams.value.toString();\n    } else {\n      value = cellParams.value;\n    }\n  } else {\n    value = cellParams.formattedValue;\n  }\n  return sanitizeCellValue(value, csvOptions);\n};\nclass CSVRow {\n  constructor(options) {\n    this.options = void 0;\n    this.rowString = '';\n    this.isEmpty = true;\n    this.options = options;\n  }\n  addValue(value) {\n    if (!this.isEmpty) {\n      this.rowString += this.options.csvOptions.delimiter;\n    }\n    if (typeof this.options.sanitizeCellValue === 'function') {\n      this.rowString += this.options.sanitizeCellValue(value, this.options.csvOptions);\n    } else {\n      this.rowString += value;\n    }\n    this.isEmpty = false;\n  }\n  getRowString() {\n    return this.rowString;\n  }\n}\nconst serializeRow = ({\n  id,\n  columns,\n  getCellParams,\n  csvOptions,\n  ignoreValueFormatter\n}) => {\n  const row = new CSVRow({\n    csvOptions\n  });\n  columns.forEach(column => {\n    const cellParams = getCellParams(id, column.field);\n    if (process.env.NODE_ENV !== 'production') {\n      if (String(cellParams.formattedValue) === '[object Object]') {\n        warnOnce(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);\n      }\n    }\n    row.addValue(serializeCellValue(cellParams, {\n      ignoreValueFormatter,\n      csvOptions\n    }));\n  });\n  return row.getRowString();\n};\nexport function buildCSV(options) {\n  const {\n    columns,\n    rowIds,\n    csvOptions,\n    ignoreValueFormatter,\n    apiRef\n  } = options;\n  const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({\n    id,\n    columns,\n    getCellParams: apiRef.current.getCellParams,\n    ignoreValueFormatter,\n    csvOptions\n  })}\\r\\n`, '').trim();\n  if (!csvOptions.includeHeaders) {\n    return CSVBody;\n  }\n  const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);\n  const headerRows = [];\n  if (csvOptions.includeColumnGroupsHeaders) {\n    const columnGroupLookup = apiRef.current.getAllGroupDetails();\n    let maxColumnGroupsDepth = 0;\n    const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {\n      const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);\n      acc[column.field] = columnGroupPath;\n      maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);\n      return acc;\n    }, {});\n    for (let i = 0; i < maxColumnGroupsDepth; i += 1) {\n      const headerGroupRow = new CSVRow({\n        csvOptions,\n        sanitizeCellValue\n      });\n      headerRows.push(headerGroupRow);\n      filteredColumns.forEach(column => {\n        const columnGroupId = (columnGroupPathsLookup[column.field] || [])[i];\n        const columnGroup = columnGroupLookup[columnGroupId];\n        headerGroupRow.addValue(columnGroup ? columnGroup.headerName || columnGroup.groupId : '');\n      });\n    }\n  }\n  const mainHeaderRow = new CSVRow({\n    csvOptions,\n    sanitizeCellValue\n  });\n  filteredColumns.forEach(column => {\n    mainHeaderRow.addValue(column.headerName || column.field);\n  });\n  headerRows.push(mainHeaderRow);\n  const CSVHead = `${headerRows.map(row => row.getRowString()).join('\\r\\n')}\\r\\n`;\n  return `${CSVHead}${CSVBody}`.trim();\n}","import * as React from 'react';\nimport { useGridApiOptionHandler, useGridNativeEventListener } from \"../../utils/index.js\";\nimport { gridFocusCellSelector } from \"../focus/gridFocusStateSelector.js\";\nimport { serializeCellValue } from \"../export/serializers/csvSerializer.js\";\nfunction writeToClipboardPolyfill(data) {\n  const span = document.createElement('span');\n  span.style.whiteSpace = 'pre';\n  span.style.userSelect = 'all';\n  span.style.opacity = '0px';\n  span.textContent = data;\n  document.body.appendChild(span);\n  const range = document.createRange();\n  range.selectNode(span);\n  const selection = window.getSelection();\n  selection.removeAllRanges();\n  selection.addRange(range);\n  try {\n    document.execCommand('copy');\n  } finally {\n    document.body.removeChild(span);\n  }\n}\nfunction copyToClipboard(data) {\n  if (navigator.clipboard) {\n    navigator.clipboard.writeText(data).catch(() => {\n      writeToClipboardPolyfill(data);\n    });\n  } else {\n    writeToClipboardPolyfill(data);\n  }\n}\nfunction hasNativeSelection(element) {\n  // When getSelection is called on an <iframe> that is not displayed Firefox will return null.\n  if (window.getSelection()?.toString()) {\n    return true;\n  }\n\n  // window.getSelection() returns an empty string in Firefox for selections inside a form element.\n  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=85686.\n  // Instead, we can use element.selectionStart that is only defined on form elements.\n  if (element && (element.selectionEnd || 0) - (element.selectionStart || 0) > 0) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * @requires useGridCsvExport (method)\n * @requires useGridSelection (method)\n */\nexport const useGridClipboard = (apiRef, props) => {\n  const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;\n  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;\n  const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;\n  const handleCopy = React.useCallback(event => {\n    if (!((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c' && !event.shiftKey && !event.altKey)) {\n      return;\n    }\n\n    // Do nothing if there's a native selection\n    if (hasNativeSelection(event.target)) {\n      return;\n    }\n    let textToCopy = '';\n    const selectedRows = apiRef.current.getSelectedRows();\n    if (selectedRows.size > 0) {\n      textToCopy = apiRef.current.getDataAsCsv({\n        includeHeaders: false,\n        delimiter: clipboardCopyCellDelimiter,\n        shouldAppendQuotes: false,\n        escapeFormulas: false\n      });\n    } else {\n      const focusedCell = gridFocusCellSelector(apiRef);\n      if (focusedCell) {\n        const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);\n        textToCopy = serializeCellValue(cellParams, {\n          csvOptions: {\n            delimiter: clipboardCopyCellDelimiter,\n            shouldAppendQuotes: false,\n            escapeFormulas: false\n          },\n          ignoreValueFormatter\n        });\n      }\n    }\n    textToCopy = apiRef.current.unstable_applyPipeProcessors('clipboardCopy', textToCopy);\n    if (textToCopy) {\n      copyToClipboard(textToCopy);\n      apiRef.current.publishEvent('clipboardCopy', textToCopy);\n    }\n  }, [apiRef, ignoreValueFormatter, clipboardCopyCellDelimiter]);\n  useGridNativeEventListener(apiRef, apiRef.current.rootElementRef, 'keydown', handleCopy);\n  useGridApiOptionHandler(apiRef, 'clipboardCopy', props.onClipboardCopy);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridLogger, useGridApiMethod, useGridApiEventHandler } from \"../../utils/index.js\";\nimport { gridColumnMenuSelector } from \"./columnMenuSelector.js\";\nimport { gridColumnLookupSelector, gridColumnVisibilityModelSelector, gridColumnFieldsSelector } from \"../columns/gridColumnsSelector.js\";\nexport const columnMenuStateInitializer = state => _extends({}, state, {\n  columnMenu: {\n    open: false\n  }\n});\n\n/**\n * @requires useGridColumnResize (event)\n * @requires useGridInfiniteLoader (event)\n */\nexport const useGridColumnMenu = apiRef => {\n  const logger = useGridLogger(apiRef, 'useGridColumnMenu');\n\n  /**\n   * API METHODS\n   */\n  const showColumnMenu = React.useCallback(field => {\n    const columnMenuState = gridColumnMenuSelector(apiRef.current.state);\n    const newState = {\n      open: true,\n      field\n    };\n    const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;\n    if (shouldUpdate) {\n      apiRef.current.setState(state => {\n        if (state.columnMenu.open && state.columnMenu.field === field) {\n          return state;\n        }\n        logger.debug('Opening Column Menu');\n        return _extends({}, state, {\n          columnMenu: {\n            open: true,\n            field\n          }\n        });\n      });\n      apiRef.current.hidePreferences();\n      apiRef.current.forceUpdate();\n    }\n  }, [apiRef, logger]);\n  const hideColumnMenu = React.useCallback(() => {\n    const columnMenuState = gridColumnMenuSelector(apiRef.current.state);\n    if (columnMenuState.field) {\n      const columnLookup = gridColumnLookupSelector(apiRef);\n      const columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);\n      const orderedFields = gridColumnFieldsSelector(apiRef);\n      let fieldToFocus = columnMenuState.field;\n\n      // If the column was removed from the grid, we need to find the closest visible field\n      if (!columnLookup[fieldToFocus]) {\n        fieldToFocus = orderedFields[0];\n      }\n\n      // If the field to focus is hidden, we need to find the closest visible field\n      if (columnVisibilityModel[fieldToFocus] === false) {\n        // contains visible column fields + the field that was just hidden\n        const visibleOrderedFields = orderedFields.filter(field => {\n          if (field === fieldToFocus) {\n            return true;\n          }\n          return columnVisibilityModel[field] !== false;\n        });\n        const fieldIndex = visibleOrderedFields.indexOf(fieldToFocus);\n        fieldToFocus = visibleOrderedFields[fieldIndex + 1] || visibleOrderedFields[fieldIndex - 1];\n      }\n      apiRef.current.setColumnHeaderFocus(fieldToFocus);\n    }\n    const newState = {\n      open: false,\n      field: undefined\n    };\n    const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;\n    if (shouldUpdate) {\n      apiRef.current.setState(state => {\n        logger.debug('Hiding Column Menu');\n        return _extends({}, state, {\n          columnMenu: newState\n        });\n      });\n      apiRef.current.forceUpdate();\n    }\n  }, [apiRef, logger]);\n  const toggleColumnMenu = React.useCallback(field => {\n    logger.debug('Toggle Column Menu');\n    const columnMenu = gridColumnMenuSelector(apiRef.current.state);\n    if (!columnMenu.open || columnMenu.field !== field) {\n      showColumnMenu(field);\n    } else {\n      hideColumnMenu();\n    }\n  }, [apiRef, logger, showColumnMenu, hideColumnMenu]);\n  const columnMenuApi = {\n    showColumnMenu,\n    hideColumnMenu,\n    toggleColumnMenu\n  };\n  useGridApiMethod(apiRef, columnMenuApi, 'public');\n  useGridApiEventHandler(apiRef, 'columnResizeStart', hideColumnMenu);\n  useGridApiEventHandler(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);\n  useGridApiEventHandler(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);\n};","import * as React from 'react';\nimport { useFirstRender } from \"../../utils/useFirstRender.js\";\nexport const useGridRegisterPipeProcessor = (apiRef, group, callback) => {\n  const cleanup = React.useRef();\n  const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n  const registerPreProcessor = React.useCallback(() => {\n    cleanup.current = apiRef.current.registerPipeProcessor(group, id.current, callback);\n  }, [apiRef, callback, group]);\n  useFirstRender(() => {\n    registerPreProcessor();\n  });\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    } else {\n      registerPreProcessor();\n    }\n    return () => {\n      if (cleanup.current) {\n        cleanup.current();\n        cleanup.current = null;\n      }\n    };\n  }, [registerPreProcessor]);\n};","import * as React from 'react';\nimport { useFirstRender } from \"../../utils/useFirstRender.js\";\nexport const useGridRegisterPipeApplier = (apiRef, group, callback) => {\n  const cleanup = React.useRef();\n  const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n  const registerPreProcessor = React.useCallback(() => {\n    cleanup.current = apiRef.current.registerPipeApplier(group, id.current, callback);\n  }, [apiRef, callback, group]);\n  useFirstRender(() => {\n    registerPreProcessor();\n  });\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    } else {\n      registerPreProcessor();\n    }\n    return () => {\n      if (cleanup.current) {\n        cleanup.current();\n        cleanup.current = null;\n      }\n    };\n  }, [registerPreProcessor]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsStateSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from \"./gridColumnsSelector.js\";\nimport { GridSignature, useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from \"../../core/pipeProcessing/index.js\";\nimport { EMPTY_PINNED_COLUMN_FIELDS } from \"./gridColumnsInterfaces.js\";\nimport { hydrateColumnsWidth, createColumnsState, COLUMNS_DIMENSION_PROPERTIES } from \"./gridColumnsUtils.js\";\nimport { GridPreferencePanelsValue } from \"../preferencesPanel/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const columnsStateInitializer = (state, props, apiRef) => {\n  const columnsState = createColumnsState({\n    apiRef,\n    columnsToUpsert: props.columns,\n    initialState: props.initialState?.columns,\n    columnVisibilityModel: props.columnVisibilityModel ?? props.initialState?.columns?.columnVisibilityModel ?? {},\n    keepOnlyColumnsToUpsert: true\n  });\n  return _extends({}, state, {\n    columns: columnsState,\n    // In pro/premium, this part of the state is defined. We give it an empty but defined value\n    // for the community version.\n    pinnedColumns: state.pinnedColumns ?? EMPTY_PINNED_COLUMN_FIELDS\n  });\n};\n\n/**\n * @requires useGridParamsApi (method)\n * @requires useGridDimensions (method, event) - can be after\n * TODO: Impossible priority - useGridParamsApi also needs to be after useGridColumns\n */\nexport function useGridColumns(apiRef, props) {\n  const logger = useGridLogger(apiRef, 'useGridColumns');\n  const previousColumnsProp = React.useRef(props.columns);\n  apiRef.current.registerControlState({\n    stateId: 'visibleColumns',\n    propModel: props.columnVisibilityModel,\n    propOnChange: props.onColumnVisibilityModelChange,\n    stateSelector: gridColumnVisibilityModelSelector,\n    changeEvent: 'columnVisibilityModelChange'\n  });\n  const setGridColumnsState = React.useCallback(columnsState => {\n    logger.debug('Updating columns state.');\n    apiRef.current.setState(mergeColumnsState(columnsState));\n    apiRef.current.publishEvent('columnsChange', columnsState.orderedFields);\n    apiRef.current.updateRenderContext?.();\n    apiRef.current.forceUpdate();\n  }, [logger, apiRef]);\n\n  /**\n   * API METHODS\n   */\n  const getColumn = React.useCallback(field => gridColumnLookupSelector(apiRef)[field], [apiRef]);\n  const getAllColumns = React.useCallback(() => gridColumnDefinitionsSelector(apiRef), [apiRef]);\n  const getVisibleColumns = React.useCallback(() => gridVisibleColumnDefinitionsSelector(apiRef), [apiRef]);\n  const getColumnIndex = React.useCallback((field, useVisibleColumns = true) => {\n    const columns = useVisibleColumns ? gridVisibleColumnDefinitionsSelector(apiRef) : gridColumnDefinitionsSelector(apiRef);\n    return columns.findIndex(col => col.field === field);\n  }, [apiRef]);\n  const getColumnPosition = React.useCallback(field => {\n    const index = getColumnIndex(field);\n    return gridColumnPositionsSelector(apiRef)[index];\n  }, [apiRef, getColumnIndex]);\n  const setColumnVisibilityModel = React.useCallback(model => {\n    const currentModel = gridColumnVisibilityModelSelector(apiRef);\n    if (currentModel !== model) {\n      apiRef.current.setState(state => _extends({}, state, {\n        columns: createColumnsState({\n          apiRef,\n          columnsToUpsert: [],\n          initialState: undefined,\n          columnVisibilityModel: model,\n          keepOnlyColumnsToUpsert: false\n        })\n      }));\n      apiRef.current.updateRenderContext?.();\n      apiRef.current.forceUpdate();\n    }\n  }, [apiRef]);\n  const updateColumns = React.useCallback(columns => {\n    const columnsState = createColumnsState({\n      apiRef,\n      columnsToUpsert: columns,\n      initialState: undefined,\n      keepOnlyColumnsToUpsert: false\n    });\n    setGridColumnsState(columnsState);\n  }, [apiRef, setGridColumnsState]);\n  const setColumnVisibility = React.useCallback((field, isVisible) => {\n    const columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);\n    const isCurrentlyVisible = columnVisibilityModel[field] ?? true;\n    if (isVisible !== isCurrentlyVisible) {\n      const newModel = _extends({}, columnVisibilityModel, {\n        [field]: isVisible\n      });\n      apiRef.current.setColumnVisibilityModel(newModel);\n    }\n  }, [apiRef]);\n  const getColumnIndexRelativeToVisibleColumns = React.useCallback(field => {\n    const allColumns = gridColumnFieldsSelector(apiRef);\n    return allColumns.findIndex(col => col === field);\n  }, [apiRef]);\n  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {\n    const allColumns = gridColumnFieldsSelector(apiRef);\n    const oldIndexPosition = getColumnIndexRelativeToVisibleColumns(field);\n    if (oldIndexPosition === targetIndexPosition) {\n      return;\n    }\n    logger.debug(`Moving column ${field} to index ${targetIndexPosition}`);\n    const updatedColumns = [...allColumns];\n    const fieldRemoved = updatedColumns.splice(oldIndexPosition, 1)[0];\n    updatedColumns.splice(targetIndexPosition, 0, fieldRemoved);\n    setGridColumnsState(_extends({}, gridColumnsStateSelector(apiRef.current.state), {\n      orderedFields: updatedColumns\n    }));\n    const params = {\n      column: apiRef.current.getColumn(field),\n      targetIndex: apiRef.current.getColumnIndexRelativeToVisibleColumns(field),\n      oldIndex: oldIndexPosition\n    };\n    apiRef.current.publishEvent('columnIndexChange', params);\n  }, [apiRef, logger, setGridColumnsState, getColumnIndexRelativeToVisibleColumns]);\n  const setColumnWidth = React.useCallback((field, width) => {\n    logger.debug(`Updating column ${field} width to ${width}`);\n    const columnsState = gridColumnsStateSelector(apiRef.current.state);\n    const column = columnsState.lookup[field];\n    const newColumn = _extends({}, column, {\n      width,\n      hasBeenResized: true\n    });\n    setGridColumnsState(hydrateColumnsWidth(_extends({}, columnsState, {\n      lookup: _extends({}, columnsState.lookup, {\n        [field]: newColumn\n      })\n    }), apiRef.current.getRootDimensions()));\n    apiRef.current.publishEvent('columnWidthChange', {\n      element: apiRef.current.getColumnHeaderElement(field),\n      colDef: newColumn,\n      width\n    });\n  }, [apiRef, logger, setGridColumnsState]);\n  const columnApi = {\n    getColumn,\n    getAllColumns,\n    getColumnIndex,\n    getColumnPosition,\n    getVisibleColumns,\n    getColumnIndexRelativeToVisibleColumns,\n    updateColumns,\n    setColumnVisibilityModel,\n    setColumnVisibility,\n    setColumnWidth\n  };\n  const columnReorderApi = {\n    setColumnIndex\n  };\n  useGridApiMethod(apiRef, columnApi, 'public');\n  useGridApiMethod(apiRef, columnReorderApi, props.signature === GridSignature.DataGrid ? 'private' : 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const columnsStateToExport = {};\n    const columnVisibilityModelToExport = gridColumnVisibilityModelSelector(apiRef);\n    const shouldExportColumnVisibilityModel =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the model is controlled\n    props.columnVisibilityModel != null ||\n    // Always export if the model has been initialized\n    // TODO v6 Do a nullish check instead to export even if the initial model equals \"{}\"\n    Object.keys(props.initialState?.columns?.columnVisibilityModel ?? {}).length > 0 ||\n    // Always export if the model is not empty\n    Object.keys(columnVisibilityModelToExport).length > 0;\n    if (shouldExportColumnVisibilityModel) {\n      columnsStateToExport.columnVisibilityModel = columnVisibilityModelToExport;\n    }\n    columnsStateToExport.orderedFields = gridColumnFieldsSelector(apiRef);\n    const columns = gridColumnDefinitionsSelector(apiRef);\n    const dimensions = {};\n    columns.forEach(colDef => {\n      if (colDef.hasBeenResized) {\n        const colDefDimensions = {};\n        COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {\n          let propertyValue = colDef[propertyName];\n          if (propertyValue === Infinity) {\n            propertyValue = -1;\n          }\n          colDefDimensions[propertyName] = propertyValue;\n        });\n        dimensions[colDef.field] = colDefDimensions;\n      }\n    });\n    if (Object.keys(dimensions).length > 0) {\n      columnsStateToExport.dimensions = dimensions;\n    }\n    return _extends({}, prevState, {\n      columns: columnsStateToExport\n    });\n  }, [apiRef, props.columnVisibilityModel, props.initialState?.columns]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const columnVisibilityModelToImport = context.stateToRestore.columns?.columnVisibilityModel;\n    const initialState = context.stateToRestore.columns;\n    if (columnVisibilityModelToImport == null && initialState == null) {\n      return params;\n    }\n    const columnsState = createColumnsState({\n      apiRef,\n      columnsToUpsert: [],\n      initialState,\n      columnVisibilityModel: columnVisibilityModelToImport,\n      keepOnlyColumnsToUpsert: false\n    });\n    apiRef.current.setState(mergeColumnsState(columnsState));\n    if (initialState != null) {\n      apiRef.current.publishEvent('columnsChange', columnsState.orderedFields);\n    }\n    return params;\n  }, [apiRef]);\n  const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {\n    if (value === GridPreferencePanelsValue.columns) {\n      const ColumnsPanel = props.slots.columnsPanel;\n      return /*#__PURE__*/_jsx(ColumnsPanel, _extends({}, props.slotProps?.columnsPanel));\n    }\n    return initialValue;\n  }, [props.slots.columnsPanel, props.slotProps?.columnsPanel]);\n  const addColumnMenuItems = React.useCallback(columnMenuItems => {\n    if (props.disableColumnSelector) {\n      return columnMenuItems;\n    }\n    return [...columnMenuItems, 'columnMenuColumnsItem'];\n  }, [props.disableColumnSelector]);\n  useGridRegisterPipeProcessor(apiRef, 'columnMenu', addColumnMenuItems);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);\n\n  /*\n   * EVENTS\n   */\n\n  const prevInnerWidth = React.useRef(null);\n  const handleGridSizeChange = viewportInnerSize => {\n    if (prevInnerWidth.current !== viewportInnerSize.width) {\n      prevInnerWidth.current = viewportInnerSize.width;\n      setGridColumnsState(hydrateColumnsWidth(gridColumnsStateSelector(apiRef.current.state), apiRef.current.getRootDimensions()));\n    }\n  };\n  useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);\n\n  /**\n   * APPLIERS\n   */\n  const hydrateColumns = React.useCallback(() => {\n    logger.info(`Columns pipe processing have changed, regenerating the columns`);\n    const columnsState = createColumnsState({\n      apiRef,\n      columnsToUpsert: [],\n      initialState: undefined,\n      keepOnlyColumnsToUpsert: false\n    });\n    setGridColumnsState(columnsState);\n  }, [apiRef, logger, setGridColumnsState]);\n  useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);\n\n  /*\n   * EFFECTS\n   */\n  // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`\n  // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n      return;\n    }\n    logger.info(`GridColumns have changed, new length ${props.columns.length}`);\n    if (previousColumnsProp.current === props.columns) {\n      return;\n    }\n    const columnsState = createColumnsState({\n      apiRef,\n      initialState: undefined,\n      // If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`\n      columnsToUpsert: props.columns,\n      keepOnlyColumnsToUpsert: true\n    });\n    previousColumnsProp.current = props.columns;\n    setGridColumnsState(columnsState);\n  }, [logger, apiRef, setGridColumnsState, props.columns]);\n  React.useEffect(() => {\n    if (props.columnVisibilityModel !== undefined) {\n      apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);\n    }\n  }, [apiRef, logger, props.columnVisibilityModel]);\n}\nfunction mergeColumnsState(columnsState) {\n  return state => _extends({}, state, {\n    columns: columnsState\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridDensitySelector } from \"./densitySelector.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nexport const densityStateInitializer = (state, props) => _extends({}, state, {\n  density: props.initialState?.density ?? props.density ?? 'standard'\n});\nexport const useGridDensity = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useDensity');\n  apiRef.current.registerControlState({\n    stateId: 'density',\n    propModel: props.density,\n    propOnChange: props.onDensityChange,\n    stateSelector: gridDensitySelector,\n    changeEvent: 'densityChange'\n  });\n  const setDensity = useEventCallback(newDensity => {\n    const currentDensity = gridDensitySelector(apiRef.current.state);\n    if (currentDensity === newDensity) {\n      return;\n    }\n    logger.debug(`Set grid density to ${newDensity}`);\n    apiRef.current.setState(state => _extends({}, state, {\n      density: newDensity\n    }));\n  });\n  const densityApi = {\n    setDensity\n  };\n  useGridApiMethod(apiRef, densityApi, 'public');\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const exportedDensity = gridDensitySelector(apiRef.current.state);\n    const shouldExportRowCount =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the `density` is controlled\n    props.density != null ||\n    // Always export if the `density` has been initialized\n    props.initialState?.density != null;\n    if (!shouldExportRowCount) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      density: exportedDensity\n    });\n  }, [apiRef, props.density, props.initialState?.density]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const restoredDensity = context.stateToRestore?.density ? context.stateToRestore.density : gridDensitySelector(apiRef.current.state);\n    apiRef.current.setState(state => _extends({}, state, {\n      density: restoredDensity\n    }));\n    return params;\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n  React.useEffect(() => {\n    if (props.density) {\n      apiRef.current.setDensity(props.density);\n    }\n  }, [apiRef, props.density]);\n};","import { gridColumnDefinitionsSelector, gridVisibleColumnDefinitionsSelector } from \"../columns/index.js\";\nimport { gridFilteredSortedRowIdsSelector } from \"../filter/index.js\";\nimport { gridPinnedRowsSelector, gridRowTreeSelector } from \"../rows/gridRowsSelector.js\";\nexport const getColumnsToExport = ({\n  apiRef,\n  options\n}) => {\n  const columns = gridColumnDefinitionsSelector(apiRef);\n  if (options.fields) {\n    return options.fields.reduce((currentColumns, field) => {\n      const column = columns.find(col => col.field === field);\n      if (column) {\n        currentColumns.push(column);\n      }\n      return currentColumns;\n    }, []);\n  }\n  const validColumns = options.allColumns ? columns : gridVisibleColumnDefinitionsSelector(apiRef);\n  return validColumns.filter(column => !column.disableExport);\n};\nexport const defaultGetRowsToExport = ({\n  apiRef\n}) => {\n  const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);\n  const rowTree = gridRowTreeSelector(apiRef);\n  const selectedRows = apiRef.current.getSelectedRows();\n  const bodyRows = filteredSortedRowIds.filter(id => rowTree[id].type !== 'footer');\n  const pinnedRows = gridPinnedRowsSelector(apiRef);\n  const topPinnedRowsIds = pinnedRows?.top?.map(row => row.id) || [];\n  const bottomPinnedRowsIds = pinnedRows?.bottom?.map(row => row.id) || [];\n  bodyRows.unshift(...topPinnedRowsIds);\n  bodyRows.push(...bottomPinnedRowsIds);\n  if (selectedRows.size > 0) {\n    return bodyRows.filter(id => selectedRows.has(id));\n  }\n  return bodyRows;\n};","import * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { exportAs } from \"../../../utils/exportAs.js\";\nimport { buildCSV } from \"./serializers/csvSerializer.js\";\nimport { getColumnsToExport, defaultGetRowsToExport } from \"./utils.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { GridCsvExportMenuItem } from \"../../../components/toolbar/GridToolbarExport.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * @requires useGridColumns (state)\n * @requires useGridFilter (state)\n * @requires useGridSorting (state)\n * @requires useGridSelection (state)\n * @requires useGridParamsApi (method)\n */\nexport const useGridCsvExport = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridCsvExport');\n  const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;\n  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.csvExport : ignoreValueFormatterProp) || false;\n  const getDataAsCsv = React.useCallback((options = {}) => {\n    logger.debug(`Get data as CSV`);\n    const exportedColumns = getColumnsToExport({\n      apiRef,\n      options\n    });\n    const getRowsToExport = options.getRowsToExport ?? defaultGetRowsToExport;\n    const exportedRowIds = getRowsToExport({\n      apiRef\n    });\n    return buildCSV({\n      columns: exportedColumns,\n      rowIds: exportedRowIds,\n      csvOptions: {\n        delimiter: options.delimiter || ',',\n        shouldAppendQuotes: options.shouldAppendQuotes ?? true,\n        includeHeaders: options.includeHeaders ?? true,\n        includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,\n        escapeFormulas: options.escapeFormulas ?? true\n      },\n      ignoreValueFormatter,\n      apiRef\n    });\n  }, [logger, apiRef, ignoreValueFormatter]);\n  const exportDataAsCsv = React.useCallback(options => {\n    logger.debug(`Export data as CSV`);\n    const csv = getDataAsCsv(options);\n    const blob = new Blob([options?.utf8WithBom ? new Uint8Array([0xef, 0xbb, 0xbf]) : '', csv], {\n      type: 'text/csv'\n    });\n    exportAs(blob, 'csv', options?.fileName);\n  }, [logger, getDataAsCsv]);\n  const csvExportApi = {\n    getDataAsCsv,\n    exportDataAsCsv\n  };\n  useGridApiMethod(apiRef, csvExportApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const addExportMenuButtons = React.useCallback((initialValue, options) => {\n    if (options.csvOptions?.disableToolbarButton) {\n      return initialValue;\n    }\n    return [...initialValue, {\n      component: /*#__PURE__*/_jsx(GridCsvExportMenuItem, {\n        options: options.csvOptions\n      }),\n      componentName: 'csvExport'\n    }];\n  }, []);\n  useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);\n};","/**\n * I have hesitated to use https://github.com/eligrey/FileSaver.js.\n * If we get bug reports that this project solves, we should consider using it.\n *\n * Related resources.\n * https://blog.logrocket.com/programmatic-file-downloads-in-the-browser-9a5186298d5c/\n * https://github.com/mbrn/filefy/blob/ec4ed0b7415d93be7158c23029f2ea1fa0b8e2d9/src/core/BaseBuilder.ts\n * https://unpkg.com/browse/@progress/kendo-file-saver@1.0.7/dist/es/save-as.js\n * https://github.com/ag-grid/ag-grid/blob/9565c219b6210aa85fa833c929d0728f9d163a91/community-modules/csv-export/src/csvExport/downloader.ts\n */\n\nexport function exportAs(blob, extension = 'csv', filename = document.title || 'untitled') {\n  const fullName = `${filename}.${extension}`;\n\n  // Test download attribute first\n  // https://github.com/eligrey/FileSaver.js/issues/193\n  if ('download' in HTMLAnchorElement.prototype) {\n    // Create an object URL for the blob object\n    const url = URL.createObjectURL(blob);\n\n    // Create a new anchor element\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = fullName;\n\n    // Programmatically trigger a click on the anchor element\n    // Useful if you want the download to happen automatically\n    // Without attaching the anchor element to the DOM\n    a.click();\n\n    // https://github.com/eligrey/FileSaver.js/issues/205\n    setTimeout(() => {\n      URL.revokeObjectURL(url);\n    });\n    return;\n  }\n  throw new Error('MUI X: exportAs not supported.');\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { gridDensityFactorSelector } from \"../density/index.js\";\nimport { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from \"../../utils/index.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { gridPageCountSelector, gridPaginationModelSelector } from \"./gridPaginationSelector.js\";\nimport { getPageCount, defaultPageSize, throwIfPageSizeExceedsTheLimit, getDefaultGridPaginationModel, getValidPage } from \"./gridPaginationUtils.js\";\nexport const getDerivedPaginationModel = (paginationState, signature, paginationModelProp) => {\n  let paginationModel = paginationState.paginationModel;\n  const rowCount = paginationState.rowCount;\n  const pageSize = paginationModelProp?.pageSize ?? paginationModel.pageSize;\n  const page = paginationModelProp?.page ?? paginationModel.page;\n  const pageCount = getPageCount(rowCount, pageSize, page);\n  if (paginationModelProp && (paginationModelProp?.page !== paginationModel.page || paginationModelProp?.pageSize !== paginationModel.pageSize)) {\n    paginationModel = paginationModelProp;\n  }\n  const validPage = getValidPage(paginationModel.page, pageCount);\n  if (validPage !== paginationModel.page) {\n    paginationModel = _extends({}, paginationModel, {\n      page: validPage\n    });\n  }\n  throwIfPageSizeExceedsTheLimit(paginationModel.pageSize, signature);\n  return paginationModel;\n};\n\n/**\n * @requires useGridFilter (state)\n * @requires useGridDimensions (event) - can be after\n */\nexport const useGridPaginationModel = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridPaginationModel');\n  const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n  const rowHeight = Math.floor(props.rowHeight * densityFactor);\n  apiRef.current.registerControlState({\n    stateId: 'paginationModel',\n    propModel: props.paginationModel,\n    propOnChange: props.onPaginationModelChange,\n    stateSelector: gridPaginationModelSelector,\n    changeEvent: 'paginationModelChange'\n  });\n\n  /**\n   * API METHODS\n   */\n  const setPage = React.useCallback(page => {\n    const currentModel = gridPaginationModelSelector(apiRef);\n    if (page === currentModel.page) {\n      return;\n    }\n    logger.debug(`Setting page to ${page}`);\n    apiRef.current.setPaginationModel({\n      page,\n      pageSize: currentModel.pageSize\n    });\n  }, [apiRef, logger]);\n  const setPageSize = React.useCallback(pageSize => {\n    const currentModel = gridPaginationModelSelector(apiRef);\n    if (pageSize === currentModel.pageSize) {\n      return;\n    }\n    logger.debug(`Setting page size to ${pageSize}`);\n    apiRef.current.setPaginationModel({\n      pageSize,\n      page: currentModel.page\n    });\n  }, [apiRef, logger]);\n  const setPaginationModel = React.useCallback(paginationModel => {\n    const currentModel = gridPaginationModelSelector(apiRef);\n    if (paginationModel === currentModel) {\n      return;\n    }\n    logger.debug(\"Setting 'paginationModel' to\", paginationModel);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)\n      })\n    }));\n  }, [apiRef, logger, props.signature]);\n  const paginationModelApi = {\n    setPage,\n    setPageSize,\n    setPaginationModel\n  };\n  useGridApiMethod(apiRef, paginationModelApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const paginationModel = gridPaginationModelSelector(apiRef);\n    const shouldExportPaginationModel =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the `paginationModel` is controlled\n    props.paginationModel != null ||\n    // Always export if the `paginationModel` has been initialized\n    props.initialState?.pagination?.paginationModel != null ||\n    // Export if `page` or `pageSize` is not equal to the default value\n    paginationModel.page !== 0 && paginationModel.pageSize !== defaultPageSize(props.autoPageSize);\n    if (!shouldExportPaginationModel) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      pagination: _extends({}, prevState.pagination, {\n        paginationModel\n      })\n    });\n  }, [apiRef, props.paginationModel, props.initialState?.pagination?.paginationModel, props.autoPageSize]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const paginationModel = context.stateToRestore.pagination?.paginationModel ? _extends({}, getDefaultGridPaginationModel(props.autoPageSize), context.stateToRestore.pagination?.paginationModel) : gridPaginationModelSelector(apiRef);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)\n      })\n    }));\n    return params;\n  }, [apiRef, props.autoPageSize, props.signature]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n\n  /**\n   * EVENTS\n   */\n  const handlePaginationModelChange = () => {\n    const paginationModel = gridPaginationModelSelector(apiRef);\n    if (apiRef.current.virtualScrollerRef?.current) {\n      apiRef.current.scrollToIndexes({\n        rowIndex: paginationModel.page * paginationModel.pageSize\n      });\n    }\n  };\n  const handleUpdateAutoPageSize = React.useCallback(() => {\n    if (!props.autoPageSize) {\n      return;\n    }\n    const dimensions = apiRef.current.getRootDimensions();\n    const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);\n    apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);\n  }, [apiRef, props.autoPageSize, rowHeight]);\n  const handleRowCountChange = React.useCallback(newRowCount => {\n    if (newRowCount == null) {\n      return;\n    }\n    const paginationModel = gridPaginationModelSelector(apiRef);\n    const pageCount = gridPageCountSelector(apiRef);\n    if (paginationModel.page > pageCount - 1) {\n      apiRef.current.setPage(Math.max(0, pageCount - 1));\n    }\n  }, [apiRef]);\n  useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);\n  useGridApiEventHandler(apiRef, 'paginationModelChange', handlePaginationModelChange);\n  useGridApiEventHandler(apiRef, 'rowCountChange', handleRowCountChange);\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        paginationModel: getDerivedPaginationModel(state.pagination, props.signature, props.paginationModel)\n      })\n    }));\n  }, [apiRef, props.paginationModel, props.paginationMode, props.signature]);\n  React.useEffect(handleUpdateAutoPageSize, [handleUpdateAutoPageSize]);\n};","import * as React from 'react';\nimport { useFirstRender } from \"../../utils/useFirstRender.js\";\nexport const useGridRegisterStrategyProcessor = (apiRef, strategyName, group, processor) => {\n  const registerPreProcessor = React.useCallback(() => {\n    apiRef.current.registerStrategyProcessor(strategyName, group, processor);\n  }, [apiRef, processor, group, strategyName]);\n  useFirstRender(() => {\n    registerPreProcessor();\n  });\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    } else {\n      registerPreProcessor();\n    }\n  }, [registerPreProcessor]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { lruMemoize } from 'reselect';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { useLazyRef } from \"../../utils/useLazyRef.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridColumnLookupSelector } from \"../columns/gridColumnsSelector.js\";\nimport { GridPreferencePanelsValue } from \"../preferencesPanel/gridPreferencePanelsValue.js\";\nimport { getDefaultGridFilterModel } from \"./gridFilterState.js\";\nimport { gridFilterModelSelector } from \"./gridFilterSelector.js\";\nimport { useFirstRender } from \"../../utils/useFirstRender.js\";\nimport { gridRowsLookupSelector } from \"../rows/index.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from \"../../core/strategyProcessing/index.js\";\nimport { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic, shouldQuickFilterExcludeHiddenColumns } from \"./gridFilterUtils.js\";\nimport { isDeepEqual } from \"../../../utils/utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const filterStateInitializer = (state, props, apiRef) => {\n  const filterModel = props.filterModel ?? props.initialState?.filter?.filterModel ?? getDefaultGridFilterModel();\n  return _extends({}, state, {\n    filter: {\n      filterModel: sanitizeFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef),\n      filteredRowsLookup: {},\n      filteredChildrenCountLookup: {},\n      filteredDescendantCountLookup: {}\n    },\n    visibleRowsLookup: {}\n  });\n};\nconst getVisibleRowsLookup = params => {\n  // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.\n  return params.filteredRowsLookup;\n};\nfunction getVisibleRowsLookupState(apiRef, state) {\n  return apiRef.current.applyStrategyProcessor('visibleRowsLookupCreation', {\n    tree: state.rows.tree,\n    filteredRowsLookup: state.filter.filteredRowsLookup\n  });\n}\nfunction createMemoizedValues() {\n  return lruMemoize(Object.values);\n}\n\n/**\n * @requires useGridColumns (method, event)\n * @requires useGridParamsApi (method)\n * @requires useGridRows (event)\n */\nexport const useGridFilter = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridFilter');\n  apiRef.current.registerControlState({\n    stateId: 'filter',\n    propModel: props.filterModel,\n    propOnChange: props.onFilterModelChange,\n    stateSelector: gridFilterModelSelector,\n    changeEvent: 'filterModelChange'\n  });\n  const updateFilteredRows = React.useCallback(() => {\n    apiRef.current.setState(state => {\n      const filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);\n      const filterState = apiRef.current.getFilterState(filterModel);\n      const newState = _extends({}, state, {\n        filter: _extends({}, state.filter, filterState)\n      });\n      const visibleRowsLookupState = getVisibleRowsLookupState(apiRef, newState);\n      return _extends({}, newState, {\n        visibleRowsLookup: visibleRowsLookupState\n      });\n    });\n    apiRef.current.publishEvent('filteredRowsSet');\n  }, [apiRef]);\n  const addColumnMenuItem = React.useCallback((columnMenuItems, colDef) => {\n    if (colDef == null || colDef.filterable === false || props.disableColumnFilter) {\n      return columnMenuItems;\n    }\n    return [...columnMenuItems, 'columnMenuFilterItem'];\n  }, [props.disableColumnFilter]);\n\n  /**\n   * API METHODS\n   */\n  const applyFilters = React.useCallback(() => {\n    updateFilteredRows();\n    apiRef.current.forceUpdate();\n  }, [apiRef, updateFilteredRows]);\n  const upsertFilterItem = React.useCallback(item => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    const items = [...filterModel.items];\n    const itemIndex = items.findIndex(filterItem => filterItem.id === item.id);\n    if (itemIndex === -1) {\n      items.push(item);\n    } else {\n      items[itemIndex] = item;\n    }\n    apiRef.current.setFilterModel(_extends({}, filterModel, {\n      items\n    }), 'upsertFilterItem');\n  }, [apiRef]);\n  const upsertFilterItems = React.useCallback(items => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    const existingItems = [...filterModel.items];\n    items.forEach(item => {\n      const itemIndex = existingItems.findIndex(filterItem => filterItem.id === item.id);\n      if (itemIndex === -1) {\n        existingItems.push(item);\n      } else {\n        existingItems[itemIndex] = item;\n      }\n    });\n    apiRef.current.setFilterModel(_extends({}, filterModel, {\n      items: existingItems\n    }), 'upsertFilterItems');\n  }, [apiRef]);\n  const deleteFilterItem = React.useCallback(itemToDelete => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    const items = filterModel.items.filter(item => item.id !== itemToDelete.id);\n    if (items.length === filterModel.items.length) {\n      return;\n    }\n    apiRef.current.setFilterModel(_extends({}, filterModel, {\n      items\n    }), 'deleteFilterItem');\n  }, [apiRef]);\n  const showFilterPanel = React.useCallback((targetColumnField, panelId, labelId) => {\n    logger.debug('Displaying filter panel');\n    if (targetColumnField) {\n      const filterModel = gridFilterModelSelector(apiRef);\n      const filterItemsWithValue = filterModel.items.filter(item => {\n        if (item.value !== undefined) {\n          // Some filters like `isAnyOf` support array as `item.value`.\n          // If array is empty, we want to remove it from the filter model.\n          if (Array.isArray(item.value) && item.value.length === 0) {\n            return false;\n          }\n          return true;\n        }\n        const column = apiRef.current.getColumn(item.field);\n        const filterOperator = column.filterOperators?.find(operator => operator.value === item.operator);\n        const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;\n\n        // Operators like `isEmpty` don't have and don't require `item.value`.\n        // So we don't want to remove them from the filter model if `item.value === undefined`.\n        // See https://github.com/mui/mui-x/issues/5402\n        if (requiresFilterValue) {\n          return false;\n        }\n        return true;\n      });\n      let newFilterItems;\n      const filterItemOnTarget = filterItemsWithValue.find(item => item.field === targetColumnField);\n      const targetColumn = apiRef.current.getColumn(targetColumnField);\n      if (filterItemOnTarget) {\n        newFilterItems = filterItemsWithValue;\n      } else if (props.disableMultipleColumnsFiltering) {\n        newFilterItems = [cleanFilterItem({\n          field: targetColumnField,\n          operator: targetColumn.filterOperators[0].value\n        }, apiRef)];\n      } else {\n        newFilterItems = [...filterItemsWithValue, cleanFilterItem({\n          field: targetColumnField,\n          operator: targetColumn.filterOperators[0].value\n        }, apiRef)];\n      }\n      apiRef.current.setFilterModel(_extends({}, filterModel, {\n        items: newFilterItems\n      }));\n    }\n    apiRef.current.showPreferences(GridPreferencePanelsValue.filters, panelId, labelId);\n  }, [apiRef, logger, props.disableMultipleColumnsFiltering]);\n  const hideFilterPanel = React.useCallback(() => {\n    logger.debug('Hiding filter panel');\n    apiRef.current.hidePreferences();\n  }, [apiRef, logger]);\n  const setFilterLogicOperator = React.useCallback(logicOperator => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    if (filterModel.logicOperator === logicOperator) {\n      return;\n    }\n    apiRef.current.setFilterModel(_extends({}, filterModel, {\n      logicOperator\n    }), 'changeLogicOperator');\n  }, [apiRef]);\n  const setQuickFilterValues = React.useCallback(values => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    if (isDeepEqual(filterModel.quickFilterValues, values)) {\n      return;\n    }\n    apiRef.current.setFilterModel(_extends({}, filterModel, {\n      quickFilterValues: [...values]\n    }));\n  }, [apiRef]);\n  const setFilterModel = React.useCallback((model, reason) => {\n    const currentModel = gridFilterModelSelector(apiRef);\n    if (currentModel !== model) {\n      logger.debug('Setting filter model');\n      apiRef.current.updateControlState('filter', mergeStateWithFilterModel(model, props.disableMultipleColumnsFiltering, apiRef), reason);\n      apiRef.current.unstable_applyFilters();\n    }\n  }, [apiRef, logger, props.disableMultipleColumnsFiltering]);\n  const getFilterState = React.useCallback(inputFilterModel => {\n    const filterModel = sanitizeFilterModel(inputFilterModel, props.disableMultipleColumnsFiltering, apiRef);\n    const isRowMatchingFilters = props.filterMode === 'client' ? buildAggregatedFilterApplier(filterModel, apiRef, props.disableEval) : null;\n    const filterResult = apiRef.current.applyStrategyProcessor('filtering', {\n      isRowMatchingFilters,\n      filterModel: filterModel ?? getDefaultGridFilterModel()\n    });\n    return _extends({}, filterResult, {\n      filterModel\n    });\n  }, [props.disableMultipleColumnsFiltering, props.filterMode, props.disableEval, apiRef]);\n  const filterApi = {\n    setFilterLogicOperator,\n    unstable_applyFilters: applyFilters,\n    deleteFilterItem,\n    upsertFilterItem,\n    upsertFilterItems,\n    setFilterModel,\n    showFilterPanel,\n    hideFilterPanel,\n    setQuickFilterValues,\n    ignoreDiacritics: props.ignoreDiacritics,\n    getFilterState\n  };\n  useGridApiMethod(apiRef, filterApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const filterModelToExport = gridFilterModelSelector(apiRef);\n    const shouldExportFilterModel =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the model is controlled\n    props.filterModel != null ||\n    // Always export if the model has been initialized\n    props.initialState?.filter?.filterModel != null ||\n    // Export if the model is not equal to the default value\n    !isDeepEqual(filterModelToExport, getDefaultGridFilterModel());\n    if (!shouldExportFilterModel) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      filter: {\n        filterModel: filterModelToExport\n      }\n    });\n  }, [apiRef, props.filterModel, props.initialState?.filter?.filterModel]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const filterModel = context.stateToRestore.filter?.filterModel;\n    if (filterModel == null) {\n      return params;\n    }\n    apiRef.current.updateControlState('filter', mergeStateWithFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef), 'restoreState');\n    return _extends({}, params, {\n      callbacks: [...params.callbacks, apiRef.current.unstable_applyFilters]\n    });\n  }, [apiRef, props.disableMultipleColumnsFiltering]);\n  const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {\n    if (value === GridPreferencePanelsValue.filters) {\n      const FilterPanel = props.slots.filterPanel;\n      return /*#__PURE__*/_jsx(FilterPanel, _extends({}, props.slotProps?.filterPanel));\n    }\n    return initialValue;\n  }, [props.slots.filterPanel, props.slotProps?.filterPanel]);\n  const {\n    getRowId\n  } = props;\n  const getRowsRef = useLazyRef(createMemoizedValues);\n  const flatFilteringMethod = React.useCallback(params => {\n    if (props.filterMode !== 'client' || !params.isRowMatchingFilters) {\n      return {\n        filteredRowsLookup: {},\n        filteredChildrenCountLookup: {},\n        filteredDescendantCountLookup: {}\n      };\n    }\n    const dataRowIdToModelLookup = gridRowsLookupSelector(apiRef);\n    const filteredRowsLookup = {};\n    const {\n      isRowMatchingFilters\n    } = params;\n    const filterCache = {};\n    const result = {\n      passingFilterItems: null,\n      passingQuickFilterValues: null\n    };\n    const rows = getRowsRef.current(apiRef.current.state.rows.dataRowIdToModelLookup);\n    for (let i = 0; i < rows.length; i += 1) {\n      const row = rows[i];\n      const id = getRowId ? getRowId(row) : row.id;\n      isRowMatchingFilters(row, undefined, result);\n      const isRowPassing = passFilterLogic([result.passingFilterItems], [result.passingQuickFilterValues], params.filterModel, apiRef, filterCache);\n      filteredRowsLookup[id] = isRowPassing;\n    }\n    const footerId = 'auto-generated-group-footer-root';\n    const footer = dataRowIdToModelLookup[footerId];\n    if (footer) {\n      filteredRowsLookup[footerId] = true;\n    }\n    return {\n      filteredRowsLookup,\n      filteredChildrenCountLookup: {},\n      filteredDescendantCountLookup: {}\n    };\n  }, [apiRef, props.filterMode, getRowId, getRowsRef]);\n  useGridRegisterPipeProcessor(apiRef, 'columnMenu', addColumnMenuItem);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);\n  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);\n  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'visibleRowsLookupCreation', getVisibleRowsLookup);\n\n  /**\n   * EVENTS\n   */\n  const handleColumnsChange = React.useCallback(() => {\n    logger.debug('onColUpdated - GridColumns changed, applying filters');\n    const filterModel = gridFilterModelSelector(apiRef);\n    const columnsLookup = gridColumnLookupSelector(apiRef);\n    const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);\n    if (newFilterItems.length < filterModel.items.length) {\n      apiRef.current.setFilterModel(_extends({}, filterModel, {\n        items: newFilterItems\n      }));\n    }\n  }, [apiRef, logger]);\n  const handleStrategyProcessorChange = React.useCallback(methodName => {\n    if (methodName === 'filtering') {\n      apiRef.current.unstable_applyFilters();\n    }\n  }, [apiRef]);\n  const updateVisibleRowsLookupState = React.useCallback(() => {\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        visibleRowsLookup: getVisibleRowsLookupState(apiRef, state)\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n\n  // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.\n  // Otherwise, the state is not consistent during the render\n  useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);\n  useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);\n  useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n  useGridApiEventHandler(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);\n  useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', () => {\n    const filterModel = gridFilterModelSelector(apiRef);\n    if (filterModel.quickFilterValues && shouldQuickFilterExcludeHiddenColumns(filterModel)) {\n      // re-apply filters because the quick filter results may have changed\n      apiRef.current.unstable_applyFilters();\n    }\n  });\n\n  /**\n   * 1ST RENDER\n   */\n  useFirstRender(() => {\n    apiRef.current.unstable_applyFilters();\n  });\n\n  /**\n   * EFFECTS\n   */\n  useEnhancedEffect(() => {\n    if (props.filterModel !== undefined) {\n      apiRef.current.setFilterModel(props.filterModel);\n    }\n  }, [apiRef, logger, props.filterModel]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventcallback } from '@mui/utils';\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { isNavigationKey } from \"../../../utils/keyboardUtils.js\";\nimport { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from \"./gridFocusStateSelector.js\";\nimport { gridVisibleColumnDefinitionsSelector } from \"../columns/gridColumnsSelector.js\";\nimport { getVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { clamp } from \"../../../utils/utils.js\";\nimport { gridPinnedRowsSelector } from \"../rows/gridRowsSelector.js\";\nexport const focusStateInitializer = state => _extends({}, state, {\n  focus: {\n    cell: null,\n    columnHeader: null,\n    columnHeaderFilter: null,\n    columnGroupHeader: null\n  },\n  tabIndex: {\n    cell: null,\n    columnHeader: null,\n    columnHeaderFilter: null,\n    columnGroupHeader: null\n  }\n});\n\n/**\n * @requires useGridParamsApi (method)\n * @requires useGridRows (method)\n * @requires useGridEditing (event)\n */\nexport const useGridFocus = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridFocus');\n  const lastClickedCell = React.useRef(null);\n  const hasRootReference = apiRef.current.rootElementRef.current !== null;\n  const publishCellFocusOut = React.useCallback((cell, event) => {\n    if (cell) {\n      // The row might have been deleted\n      if (apiRef.current.getRow(cell.id)) {\n        apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);\n      }\n    }\n  }, [apiRef]);\n  const setCellFocus = React.useCallback((id, field) => {\n    const focusedCell = gridFocusCellSelector(apiRef);\n    if (focusedCell?.id === id && focusedCell?.field === field) {\n      return;\n    }\n    apiRef.current.setState(state => {\n      logger.debug(`Focusing on cell with id=${id} and field=${field}`);\n      return _extends({}, state, {\n        tabIndex: {\n          cell: {\n            id,\n            field\n          },\n          columnHeader: null,\n          columnHeaderFilter: null,\n          columnGroupHeader: null\n        },\n        focus: {\n          cell: {\n            id,\n            field\n          },\n          columnHeader: null,\n          columnHeaderFilter: null,\n          columnGroupHeader: null\n        }\n      });\n    });\n    apiRef.current.forceUpdate();\n\n    // The row might have been deleted\n    if (!apiRef.current.getRow(id)) {\n      return;\n    }\n    if (focusedCell) {\n      // There's a focused cell but another cell was clicked\n      // Publishes an event to notify that the focus was lost\n      publishCellFocusOut(focusedCell, {});\n    }\n    apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));\n  }, [apiRef, logger, publishCellFocusOut]);\n  const setColumnHeaderFocus = React.useCallback((field, event = {}) => {\n    const cell = gridFocusCellSelector(apiRef);\n    publishCellFocusOut(cell, event);\n    apiRef.current.setState(state => {\n      logger.debug(`Focusing on column header with colIndex=${field}`);\n      return _extends({}, state, {\n        tabIndex: {\n          columnHeader: {\n            field\n          },\n          columnHeaderFilter: null,\n          cell: null,\n          columnGroupHeader: null\n        },\n        focus: {\n          columnHeader: {\n            field\n          },\n          columnHeaderFilter: null,\n          cell: null,\n          columnGroupHeader: null\n        }\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef, logger, publishCellFocusOut]);\n  const setColumnHeaderFilterFocus = React.useCallback((field, event = {}) => {\n    const cell = gridFocusCellSelector(apiRef);\n    publishCellFocusOut(cell, event);\n    apiRef.current.setState(state => {\n      logger.debug(`Focusing on column header filter with colIndex=${field}`);\n      return _extends({}, state, {\n        tabIndex: {\n          columnHeader: null,\n          columnHeaderFilter: {\n            field\n          },\n          cell: null,\n          columnGroupHeader: null\n        },\n        focus: {\n          columnHeader: null,\n          columnHeaderFilter: {\n            field\n          },\n          cell: null,\n          columnGroupHeader: null\n        }\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef, logger, publishCellFocusOut]);\n  const setColumnGroupHeaderFocus = React.useCallback((field, depth, event = {}) => {\n    const cell = gridFocusCellSelector(apiRef);\n    if (cell) {\n      apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);\n    }\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        tabIndex: {\n          columnGroupHeader: {\n            field,\n            depth\n          },\n          columnHeader: null,\n          columnHeaderFilter: null,\n          cell: null\n        },\n        focus: {\n          columnGroupHeader: {\n            field,\n            depth\n          },\n          columnHeader: null,\n          columnHeaderFilter: null,\n          cell: null\n        }\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const getColumnGroupHeaderFocus = React.useCallback(() => gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);\n  const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {\n    let columnIndexToFocus = apiRef.current.getColumnIndex(field);\n    const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n    const currentPage = getVisibleRows(apiRef, {\n      pagination: props.pagination,\n      paginationMode: props.paginationMode\n    });\n    const pinnedRows = gridPinnedRowsSelector(apiRef);\n\n    // Include pinned rows as well\n    const currentPageRows = [].concat(pinnedRows.top || [], currentPage.rows, pinnedRows.bottom || []);\n    let rowIndexToFocus = currentPageRows.findIndex(row => row.id === id);\n    if (direction === 'right') {\n      columnIndexToFocus += 1;\n    } else if (direction === 'left') {\n      columnIndexToFocus -= 1;\n    } else {\n      rowIndexToFocus += 1;\n    }\n    if (columnIndexToFocus >= visibleColumns.length) {\n      // Go to next row if we are after the last column\n      rowIndexToFocus += 1;\n      if (rowIndexToFocus < currentPageRows.length) {\n        // Go to first column of the next row if there's one more row\n        columnIndexToFocus = 0;\n      }\n    } else if (columnIndexToFocus < 0) {\n      // Go to previous row if we are before the first column\n      rowIndexToFocus -= 1;\n      if (rowIndexToFocus >= 0) {\n        // Go to last column of the previous if there's one more row\n        columnIndexToFocus = visibleColumns.length - 1;\n      }\n    }\n    rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPageRows.length - 1);\n    const rowToFocus = currentPageRows[rowIndexToFocus];\n    if (!rowToFocus) {\n      return;\n    }\n    const colSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowToFocus.id, columnIndexToFocus);\n    if (colSpanInfo && colSpanInfo.spannedByColSpan) {\n      if (direction === 'left' || direction === 'below') {\n        columnIndexToFocus = colSpanInfo.leftVisibleCellIndex;\n      } else if (direction === 'right') {\n        columnIndexToFocus = colSpanInfo.rightVisibleCellIndex;\n      }\n    }\n    columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);\n    const columnToFocus = visibleColumns[columnIndexToFocus];\n    apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);\n  }, [apiRef, props.pagination, props.paginationMode]);\n  const handleCellDoubleClick = React.useCallback(({\n    id,\n    field\n  }) => {\n    apiRef.current.setCellFocus(id, field);\n  }, [apiRef]);\n  const handleCellKeyDown = React.useCallback((params, event) => {\n    // GRID_CELL_NAVIGATION_KEY_DOWN handles the focus on Enter, Tab and navigation keys\n    if (event.key === 'Enter' || event.key === 'Tab' || event.key === 'Shift' || isNavigationKey(event.key)) {\n      return;\n    }\n    apiRef.current.setCellFocus(params.id, params.field);\n  }, [apiRef]);\n  const handleColumnHeaderFocus = React.useCallback(({\n    field\n  }, event) => {\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    apiRef.current.setColumnHeaderFocus(field, event);\n  }, [apiRef]);\n  const handleColumnGroupHeaderFocus = React.useCallback(({\n    fields,\n    depth\n  }, event) => {\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);\n    if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {\n      // This group cell has already been focused\n      return;\n    }\n    apiRef.current.setColumnGroupHeaderFocus(fields[0], depth, event);\n  }, [apiRef]);\n  const handleBlur = React.useCallback((_, event) => {\n    if (event.relatedTarget?.getAttribute('class')?.includes(gridClasses.columnHeader)) {\n      return;\n    }\n    logger.debug(`Clearing focus`);\n    apiRef.current.setState(state => _extends({}, state, {\n      focus: {\n        cell: null,\n        columnHeader: null,\n        columnHeaderFilter: null,\n        columnGroupHeader: null\n      }\n    }));\n  }, [logger, apiRef]);\n  const handleCellMouseDown = React.useCallback(params => {\n    lastClickedCell.current = params;\n  }, []);\n  const handleDocumentClick = React.useCallback(event => {\n    const cellParams = lastClickedCell.current;\n    lastClickedCell.current = null;\n    const focusedCell = gridFocusCellSelector(apiRef);\n    const canUpdateFocus = apiRef.current.unstable_applyPipeProcessors('canUpdateFocus', true, {\n      event,\n      cell: cellParams\n    });\n    if (!canUpdateFocus) {\n      return;\n    }\n    if (!focusedCell) {\n      if (cellParams) {\n        apiRef.current.setCellFocus(cellParams.id, cellParams.field);\n      }\n      return;\n    }\n    if (cellParams?.id === focusedCell.id && cellParams?.field === focusedCell.field) {\n      return;\n    }\n    const cellElement = apiRef.current.getCellElement(focusedCell.id, focusedCell.field);\n    if (cellElement?.contains(event.target)) {\n      return;\n    }\n    if (cellParams) {\n      apiRef.current.setCellFocus(cellParams.id, cellParams.field);\n    } else {\n      apiRef.current.setState(state => _extends({}, state, {\n        focus: {\n          cell: null,\n          columnHeader: null,\n          columnHeaderFilter: null,\n          columnGroupHeader: null\n        }\n      }));\n      apiRef.current.forceUpdate();\n\n      // There's a focused cell but another element (not a cell) was clicked\n      // Publishes an event to notify that the focus was lost\n      publishCellFocusOut(focusedCell, event);\n    }\n  }, [apiRef, publishCellFocusOut]);\n  const handleCellModeChange = React.useCallback(params => {\n    if (params.cellMode === 'view') {\n      return;\n    }\n    const cell = gridFocusCellSelector(apiRef);\n    if (cell?.id !== params.id || cell?.field !== params.field) {\n      apiRef.current.setCellFocus(params.id, params.field);\n    }\n  }, [apiRef]);\n  const handleRowSet = React.useCallback(() => {\n    const cell = gridFocusCellSelector(apiRef);\n\n    // If the focused cell is in a row which does not exist anymore, then remove the focus\n    if (cell && !apiRef.current.getRow(cell.id)) {\n      apiRef.current.setState(state => _extends({}, state, {\n        focus: {\n          cell: null,\n          columnHeader: null,\n          columnHeaderFilter: null,\n          columnGroupHeader: null\n        }\n      }));\n    }\n  }, [apiRef]);\n  const handlePaginationModelChange = useEventcallback(() => {\n    const currentFocusedCell = gridFocusCellSelector(apiRef);\n    if (!currentFocusedCell) {\n      return;\n    }\n    const currentPage = getVisibleRows(apiRef, {\n      pagination: props.pagination,\n      paginationMode: props.paginationMode\n    });\n    const rowIsInCurrentPage = currentPage.rows.find(row => row.id === currentFocusedCell.id);\n    if (rowIsInCurrentPage) {\n      return;\n    }\n    const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        tabIndex: {\n          cell: {\n            id: currentPage.rows[0].id,\n            field: visibleColumns[0].field\n          },\n          columnGroupHeader: null,\n          columnHeader: null,\n          columnHeaderFilter: null\n        }\n      });\n    });\n  });\n  const focusApi = {\n    setCellFocus,\n    setColumnHeaderFocus,\n    setColumnHeaderFilterFocus\n  };\n  const focusPrivateApi = {\n    moveFocusToRelativeCell,\n    setColumnGroupHeaderFocus,\n    getColumnGroupHeaderFocus\n  };\n  useGridApiMethod(apiRef, focusApi, 'public');\n  useGridApiMethod(apiRef, focusPrivateApi, 'private');\n  React.useEffect(() => {\n    const doc = ownerDocument(apiRef.current.rootElementRef.current);\n    doc.addEventListener('mouseup', handleDocumentClick);\n    return () => {\n      doc.removeEventListener('mouseup', handleDocumentClick);\n    };\n  }, [apiRef, hasRootReference, handleDocumentClick]);\n  useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);\n  useGridApiEventHandler(apiRef, 'cellDoubleClick', handleCellDoubleClick);\n  useGridApiEventHandler(apiRef, 'cellMouseDown', handleCellMouseDown);\n  useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);\n  useGridApiEventHandler(apiRef, 'cellModeChange', handleCellModeChange);\n  useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);\n  useGridApiEventHandler(apiRef, 'columnGroupHeaderFocus', handleColumnGroupHeaderFocus);\n  useGridApiEventHandler(apiRef, 'rowsSet', handleRowSet);\n  useGridApiEventHandler(apiRef, 'paginationModelChange', handlePaginationModelChange);\n};","import { gridFilteredSortedRowIdsSelector } from \"../filter/gridFilterSelector.js\";\nimport { gridRowSpanningHiddenCellsSelector } from \"../rows/gridRowSpanningSelectors.js\";\nimport { gridPinnedRowsSelector } from \"../rows/gridRowsSelector.js\";\nexport function enrichPageRowsWithPinnedRows(apiRef, rows) {\n  const pinnedRows = gridPinnedRowsSelector(apiRef) || {};\n  return [...(pinnedRows.top || []), ...rows, ...(pinnedRows.bottom || [])];\n}\nexport const getLeftColumnIndex = ({\n  currentColIndex,\n  firstColIndex,\n  lastColIndex,\n  isRtl\n}) => {\n  if (isRtl) {\n    if (currentColIndex < lastColIndex) {\n      return currentColIndex + 1;\n    }\n  } else if (!isRtl) {\n    if (currentColIndex > firstColIndex) {\n      return currentColIndex - 1;\n    }\n  }\n  return null;\n};\nexport const getRightColumnIndex = ({\n  currentColIndex,\n  firstColIndex,\n  lastColIndex,\n  isRtl\n}) => {\n  if (isRtl) {\n    if (currentColIndex > firstColIndex) {\n      return currentColIndex - 1;\n    }\n  } else if (!isRtl) {\n    if (currentColIndex < lastColIndex) {\n      return currentColIndex + 1;\n    }\n  }\n  return null;\n};\nexport function findNonRowSpannedCell(apiRef, rowId, field, rowSpanScanDirection) {\n  const rowSpanHiddenCells = gridRowSpanningHiddenCellsSelector(apiRef);\n  if (!rowSpanHiddenCells[rowId]?.[field]) {\n    return rowId;\n  }\n  const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);\n  // find closest non row spanned cell in the given `rowSpanScanDirection`\n  let nextRowIndex = filteredSortedRowIds.indexOf(rowId) + (rowSpanScanDirection === 'down' ? 1 : -1);\n  while (nextRowIndex >= 0 && nextRowIndex < filteredSortedRowIds.length) {\n    const nextRowId = filteredSortedRowIds[nextRowIndex];\n    if (!rowSpanHiddenCells[nextRowId]?.[field]) {\n      return nextRowId;\n    }\n    nextRowIndex += rowSpanScanDirection === 'down' ? 1 : -1;\n  }\n  return rowId;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { throwIfPageSizeExceedsTheLimit, getDefaultGridPaginationModel } from \"./gridPaginationUtils.js\";\nimport { useGridPaginationModel } from \"./useGridPaginationModel.js\";\nimport { useGridRowCount } from \"./useGridRowCount.js\";\nimport { useGridPaginationMeta } from \"./useGridPaginationMeta.js\";\nexport const paginationStateInitializer = (state, props) => {\n  const paginationModel = _extends({}, getDefaultGridPaginationModel(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);\n  throwIfPageSizeExceedsTheLimit(paginationModel.pageSize, props.signature);\n  const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount;\n  const meta = props.paginationMeta ?? props.initialState?.pagination?.meta ?? {};\n  return _extends({}, state, {\n    pagination: {\n      paginationModel,\n      rowCount,\n      meta\n    }\n  });\n};\n\n/**\n * @requires useGridFilter (state)\n * @requires useGridDimensions (event) - can be after\n */\nexport const useGridPagination = (apiRef, props) => {\n  useGridPaginationMeta(apiRef, props);\n  useGridPaginationModel(apiRef, props);\n  useGridRowCount(apiRef, props);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { gridPreferencePanelStateSelector } from \"./gridPreferencePanelSelector.js\";\nexport const preferencePanelStateInitializer = (state, props) => _extends({}, state, {\n  preferencePanel: props.initialState?.preferencePanel ?? {\n    open: false\n  }\n});\n\n/**\n * TODO: Add a single `setPreferencePanel` method to avoid multiple `setState`\n */\nexport const useGridPreferencesPanel = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridPreferencesPanel');\n  const hideTimeout = React.useRef();\n  const immediateTimeout = React.useRef();\n\n  /**\n   * API METHODS\n   */\n  const hidePreferences = React.useCallback(() => {\n    logger.debug('Hiding Preferences Panel');\n    const preferencePanelState = gridPreferencePanelStateSelector(apiRef.current.state);\n    if (preferencePanelState.openedPanelValue) {\n      apiRef.current.publishEvent('preferencePanelClose', {\n        openedPanelValue: preferencePanelState.openedPanelValue\n      });\n    }\n    apiRef.current.setState(state => _extends({}, state, {\n      preferencePanel: {\n        open: false\n      }\n    }));\n    apiRef.current.forceUpdate();\n  }, [apiRef, logger]);\n\n  // This is to prevent the preferences from closing when you open a select box or another panel,\n  // The issue is in MUI core V4 => Fixed in V5\n  const doNotHidePanel = React.useCallback(() => {\n    immediateTimeout.current = setTimeout(() => clearTimeout(hideTimeout.current), 0);\n  }, []);\n\n  // This is a hack for the issue with Core V4, by delaying hiding the panel on the clickAwayListener,\n  // we can cancel the action if the trigger element still need the panel...\n  const hidePreferencesDelayed = React.useCallback(() => {\n    hideTimeout.current = setTimeout(hidePreferences, 100);\n  }, [hidePreferences]);\n  const showPreferences = React.useCallback((newValue, panelId, labelId) => {\n    logger.debug('Opening Preferences Panel');\n    doNotHidePanel();\n    apiRef.current.setState(state => _extends({}, state, {\n      preferencePanel: _extends({}, state.preferencePanel, {\n        open: true,\n        openedPanelValue: newValue,\n        panelId,\n        labelId\n      })\n    }));\n    apiRef.current.publishEvent('preferencePanelOpen', {\n      openedPanelValue: newValue\n    });\n    apiRef.current.forceUpdate();\n  }, [logger, doNotHidePanel, apiRef]);\n  useGridApiMethod(apiRef, {\n    showPreferences,\n    hidePreferences: hidePreferencesDelayed\n  }, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const preferencePanelToExport = gridPreferencePanelStateSelector(apiRef.current.state);\n    const shouldExportPreferencePanel =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the panel was initialized\n    props.initialState?.preferencePanel != null ||\n    // Always export if the panel is opened\n    preferencePanelToExport.open;\n    if (!shouldExportPreferencePanel) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      preferencePanel: preferencePanelToExport\n    });\n  }, [apiRef, props.initialState?.preferencePanel]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const preferencePanel = context.stateToRestore.preferencePanel;\n    if (preferencePanel != null) {\n      apiRef.current.setState(state => _extends({}, state, {\n        preferencePanel\n      }));\n    }\n    return params;\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(hideTimeout.current);\n      clearTimeout(immediateTimeout.current);\n    };\n  }, []);\n};","export const getDefaultCellValue = colDef => {\n  switch (colDef.type) {\n    case 'boolean':\n      return false;\n    case 'date':\n    case 'dateTime':\n    case 'number':\n      return undefined;\n    case 'singleSelect':\n      return null;\n    case 'string':\n    default:\n      return '';\n  }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"field\"],\n  _excluded2 = [\"id\", \"field\"];\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { useGridApiEventHandler, useGridApiOptionHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { GridEditModes, GridCellModes } from \"../../../models/gridEditRowModel.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridEditRowsStateSelector } from \"./gridEditingSelectors.js\";\nimport { isPrintableKey, isPasteShortcut } from \"../../../utils/keyboardUtils.js\";\nimport { gridRowsDataRowIdToIdLookupSelector } from \"../rows/gridRowsSelector.js\";\nimport { deepClone } from \"../../../utils/utils.js\";\nimport { GridCellEditStartReasons, GridCellEditStopReasons } from \"../../../models/params/gridEditCellParams.js\";\nimport { getDefaultCellValue } from \"./utils.js\";\nexport const useGridCellEditing = (apiRef, props) => {\n  const [cellModesModel, setCellModesModel] = React.useState({});\n  const cellModesModelRef = React.useRef(cellModesModel);\n  const prevCellModesModel = React.useRef({});\n  const {\n    processRowUpdate,\n    onProcessRowUpdateError,\n    cellModesModel: cellModesModelProp,\n    onCellModesModelChange\n  } = props;\n  const runIfEditModeIsCell = callback => (...args) => {\n    if (props.editMode === GridEditModes.Cell) {\n      callback(...args);\n    }\n  };\n  const throwIfNotEditable = React.useCallback((id, field) => {\n    const params = apiRef.current.getCellParams(id, field);\n    if (!apiRef.current.isCellEditable(params)) {\n      throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);\n    }\n  }, [apiRef]);\n  const throwIfNotInMode = React.useCallback((id, field, mode) => {\n    if (apiRef.current.getCellMode(id, field) !== mode) {\n      throw new Error(`MUI X: The cell with id=${id} and field=${field} is not in ${mode} mode.`);\n    }\n  }, [apiRef]);\n  const handleCellDoubleClick = React.useCallback((params, event) => {\n    if (!params.isEditable) {\n      return;\n    }\n    if (params.cellMode === GridCellModes.Edit) {\n      return;\n    }\n    const newParams = _extends({}, params, {\n      reason: GridCellEditStartReasons.cellDoubleClick\n    });\n    apiRef.current.publishEvent('cellEditStart', newParams, event);\n  }, [apiRef]);\n  const handleCellFocusOut = React.useCallback((params, event) => {\n    if (params.cellMode === GridCellModes.View) {\n      return;\n    }\n    if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.View) {\n      return;\n    }\n    const newParams = _extends({}, params, {\n      reason: GridCellEditStopReasons.cellFocusOut\n    });\n    apiRef.current.publishEvent('cellEditStop', newParams, event);\n  }, [apiRef]);\n  const handleCellKeyDown = React.useCallback((params, event) => {\n    if (params.cellMode === GridCellModes.Edit) {\n      // Wait until IME is settled for Asian languages like Japanese and Chinese\n      // TODO: `event.which` is deprecated but this is a temporary workaround\n      if (event.which === 229) {\n        return;\n      }\n      let reason;\n      if (event.key === 'Escape') {\n        reason = GridCellEditStopReasons.escapeKeyDown;\n      } else if (event.key === 'Enter') {\n        reason = GridCellEditStopReasons.enterKeyDown;\n      } else if (event.key === 'Tab') {\n        reason = event.shiftKey ? GridCellEditStopReasons.shiftTabKeyDown : GridCellEditStopReasons.tabKeyDown;\n        event.preventDefault(); // Prevent going to the next element in the tab sequence\n      }\n      if (reason) {\n        const newParams = _extends({}, params, {\n          reason\n        });\n        apiRef.current.publishEvent('cellEditStop', newParams, event);\n      }\n    } else if (params.isEditable) {\n      let reason;\n      const canStartEditing = apiRef.current.unstable_applyPipeProcessors('canStartEditing', true, {\n        event,\n        cellParams: params,\n        editMode: 'cell'\n      });\n      if (!canStartEditing) {\n        return;\n      }\n      if (isPrintableKey(event)) {\n        reason = GridCellEditStartReasons.printableKeyDown;\n      } else if (isPasteShortcut(event)) {\n        reason = GridCellEditStartReasons.pasteKeyDown;\n      } else if (event.key === 'Enter') {\n        reason = GridCellEditStartReasons.enterKeyDown;\n      } else if (event.key === 'Backspace' || event.key === 'Delete') {\n        reason = GridCellEditStartReasons.deleteKeyDown;\n      }\n      if (reason) {\n        const newParams = _extends({}, params, {\n          reason,\n          key: event.key\n        });\n        apiRef.current.publishEvent('cellEditStart', newParams, event);\n      }\n    }\n  }, [apiRef]);\n  const handleCellEditStart = React.useCallback(params => {\n    const {\n      id,\n      field,\n      reason\n    } = params;\n    const startCellEditModeParams = {\n      id,\n      field\n    };\n    if (reason === GridCellEditStartReasons.printableKeyDown || reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.pasteKeyDown) {\n      startCellEditModeParams.deleteValue = true;\n    }\n    apiRef.current.startCellEditMode(startCellEditModeParams);\n  }, [apiRef]);\n  const handleCellEditStop = React.useCallback(params => {\n    const {\n      id,\n      field,\n      reason\n    } = params;\n    apiRef.current.runPendingEditCellValueMutation(id, field);\n    let cellToFocusAfter;\n    if (reason === GridCellEditStopReasons.enterKeyDown) {\n      cellToFocusAfter = 'below';\n    } else if (reason === GridCellEditStopReasons.tabKeyDown) {\n      cellToFocusAfter = 'right';\n    } else if (reason === GridCellEditStopReasons.shiftTabKeyDown) {\n      cellToFocusAfter = 'left';\n    }\n    const ignoreModifications = reason === 'escapeKeyDown';\n    apiRef.current.stopCellEditMode({\n      id,\n      field,\n      ignoreModifications,\n      cellToFocusAfter\n    });\n  }, [apiRef]);\n  const runIfNoFieldErrors = callback => async (...args) => {\n    if (callback) {\n      const {\n        id,\n        field\n      } = args[0];\n      const editRowsState = apiRef.current.state.editRows;\n      const hasFieldErrors = editRowsState[id][field]?.error;\n      if (!hasFieldErrors) {\n        callback(...args);\n      }\n    }\n  };\n  useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick));\n  useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut));\n  useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown));\n  useGridApiEventHandler(apiRef, 'cellEditStart', runIfEditModeIsCell(handleCellEditStart));\n  useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop));\n  useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);\n  useGridApiOptionHandler(apiRef, 'cellEditStop', runIfNoFieldErrors(props.onCellEditStop));\n  const getCellMode = React.useCallback((id, field) => {\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const isEditing = editingState[id] && editingState[id][field];\n    return isEditing ? GridCellModes.Edit : GridCellModes.View;\n  }, [apiRef]);\n  const updateCellModesModel = useEventCallback(newModel => {\n    const isNewModelDifferentFromProp = newModel !== props.cellModesModel;\n    if (onCellModesModelChange && isNewModelDifferentFromProp) {\n      onCellModesModelChange(newModel, {\n        api: apiRef.current\n      });\n    }\n    if (props.cellModesModel && isNewModelDifferentFromProp) {\n      return; // The prop always win\n    }\n    setCellModesModel(newModel);\n    cellModesModelRef.current = newModel;\n    apiRef.current.publishEvent('cellModesModelChange', newModel);\n  });\n  const updateFieldInCellModesModel = React.useCallback((id, field, newProps) => {\n    // We use the ref because it always contain the up-to-date value, different from the state\n    // that needs a rerender to reflect the new value\n    const newModel = _extends({}, cellModesModelRef.current);\n    if (newProps !== null) {\n      newModel[id] = _extends({}, newModel[id], {\n        [field]: _extends({}, newProps)\n      });\n    } else {\n      const _newModel$id = newModel[id],\n        otherFields = _objectWithoutPropertiesLoose(_newModel$id, [field].map(_toPropertyKey)); // Ensure that we have a new object, not a reference\n      newModel[id] = otherFields;\n      if (Object.keys(newModel[id]).length === 0) {\n        delete newModel[id];\n      }\n    }\n    updateCellModesModel(newModel);\n  }, [updateCellModesModel]);\n  const updateOrDeleteFieldState = React.useCallback((id, field, newProps) => {\n    apiRef.current.setState(state => {\n      const newEditingState = _extends({}, state.editRows);\n      if (newProps !== null) {\n        newEditingState[id] = _extends({}, newEditingState[id], {\n          [field]: _extends({}, newProps)\n        });\n      } else {\n        delete newEditingState[id][field];\n        if (Object.keys(newEditingState[id]).length === 0) {\n          delete newEditingState[id];\n        }\n      }\n      return _extends({}, state, {\n        editRows: newEditingState\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const startCellEditMode = React.useCallback(params => {\n    const {\n        id,\n        field\n      } = params,\n      other = _objectWithoutPropertiesLoose(params, _excluded);\n    throwIfNotEditable(id, field);\n    throwIfNotInMode(id, field, GridCellModes.View);\n    updateFieldInCellModesModel(id, field, _extends({\n      mode: GridCellModes.Edit\n    }, other));\n  }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);\n  const updateStateToStartCellEditMode = useEventCallback(params => {\n    const {\n      id,\n      field,\n      deleteValue,\n      initialValue\n    } = params;\n    let newValue = apiRef.current.getCellValue(id, field);\n    if (deleteValue) {\n      newValue = getDefaultCellValue(apiRef.current.getColumn(field));\n    } else if (initialValue) {\n      newValue = initialValue;\n    }\n    const newProps = {\n      value: newValue,\n      error: false,\n      isProcessingProps: false\n    };\n    updateOrDeleteFieldState(id, field, newProps);\n    apiRef.current.setCellFocus(id, field);\n  });\n  const stopCellEditMode = React.useCallback(params => {\n    const {\n        id,\n        field\n      } = params,\n      other = _objectWithoutPropertiesLoose(params, _excluded2);\n    throwIfNotInMode(id, field, GridCellModes.Edit);\n    updateFieldInCellModesModel(id, field, _extends({\n      mode: GridCellModes.View\n    }, other));\n  }, [throwIfNotInMode, updateFieldInCellModesModel]);\n  const updateStateToStopCellEditMode = useEventCallback(async params => {\n    const {\n      id,\n      field,\n      ignoreModifications,\n      cellToFocusAfter = 'none'\n    } = params;\n    throwIfNotInMode(id, field, GridCellModes.Edit);\n    apiRef.current.runPendingEditCellValueMutation(id, field);\n    const finishCellEditMode = () => {\n      updateOrDeleteFieldState(id, field, null);\n      updateFieldInCellModesModel(id, field, null);\n      if (cellToFocusAfter !== 'none') {\n        apiRef.current.moveFocusToRelativeCell(id, field, cellToFocusAfter);\n      }\n    };\n    if (ignoreModifications) {\n      finishCellEditMode();\n      return;\n    }\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const {\n      error,\n      isProcessingProps\n    } = editingState[id][field];\n    if (error || isProcessingProps) {\n      // Attempt to change cell mode to \"view\" was not successful\n      // Update previous mode to allow another attempt\n      prevCellModesModel.current[id][field].mode = GridCellModes.Edit;\n      // Revert the mode in the cellModesModel prop back to \"edit\"\n      updateFieldInCellModesModel(id, field, {\n        mode: GridCellModes.Edit\n      });\n      return;\n    }\n    const rowUpdate = apiRef.current.getRowWithUpdatedValuesFromCellEditing(id, field);\n    if (processRowUpdate) {\n      const handleError = errorThrown => {\n        prevCellModesModel.current[id][field].mode = GridCellModes.Edit;\n        // Revert the mode in the cellModesModel prop back to \"edit\"\n        updateFieldInCellModesModel(id, field, {\n          mode: GridCellModes.Edit\n        });\n        if (onProcessRowUpdateError) {\n          onProcessRowUpdateError(errorThrown);\n        } else if (process.env.NODE_ENV !== 'production') {\n          warnOnce(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');\n        }\n      };\n      try {\n        const row = apiRef.current.getRow(id);\n        Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {\n          apiRef.current.updateRows([finalRowUpdate]);\n          finishCellEditMode();\n        }).catch(handleError);\n      } catch (errorThrown) {\n        handleError(errorThrown);\n      }\n    } else {\n      apiRef.current.updateRows([rowUpdate]);\n      finishCellEditMode();\n    }\n  });\n  const setCellEditingEditCellValue = React.useCallback(async params => {\n    const {\n      id,\n      field,\n      value,\n      debounceMs,\n      unstable_skipValueParser: skipValueParser\n    } = params;\n    throwIfNotEditable(id, field);\n    throwIfNotInMode(id, field, GridCellModes.Edit);\n    const column = apiRef.current.getColumn(field);\n    const row = apiRef.current.getRow(id);\n    let parsedValue = value;\n    if (column.valueParser && !skipValueParser) {\n      parsedValue = column.valueParser(value, row, column, apiRef);\n    }\n    let editingState = gridEditRowsStateSelector(apiRef.current.state);\n    let newProps = _extends({}, editingState[id][field], {\n      value: parsedValue,\n      changeReason: debounceMs ? 'debouncedSetEditCellValue' : 'setEditCellValue'\n    });\n    if (column.preProcessEditCellProps) {\n      const hasChanged = value !== editingState[id][field].value;\n      newProps = _extends({}, newProps, {\n        isProcessingProps: true\n      });\n      updateOrDeleteFieldState(id, field, newProps);\n      newProps = await Promise.resolve(column.preProcessEditCellProps({\n        id,\n        row,\n        props: newProps,\n        hasChanged\n      }));\n    }\n\n    // Check again if the cell is in edit mode because the user may have\n    // discarded the changes while the props were being processed.\n    if (apiRef.current.getCellMode(id, field) === GridCellModes.View) {\n      return false;\n    }\n    editingState = gridEditRowsStateSelector(apiRef.current.state);\n    newProps = _extends({}, newProps, {\n      isProcessingProps: false\n    });\n    // We don't update the value with the one coming from the props pre-processing\n    // because when the promise resolves it may be already outdated. The only\n    // exception to this rule is when there's no pre-processing.\n    newProps.value = column.preProcessEditCellProps ? editingState[id][field].value : parsedValue;\n    updateOrDeleteFieldState(id, field, newProps);\n    editingState = gridEditRowsStateSelector(apiRef.current.state);\n    return !editingState[id]?.[field]?.error;\n  }, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);\n  const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {\n    const column = apiRef.current.getColumn(field);\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const row = apiRef.current.getRow(id);\n    if (!editingState[id] || !editingState[id][field]) {\n      return apiRef.current.getRow(id);\n    }\n    const {\n      value\n    } = editingState[id][field];\n    return column.valueSetter ? column.valueSetter(value, row, column, apiRef) : _extends({}, row, {\n      [field]: value\n    });\n  }, [apiRef]);\n  const editingApi = {\n    getCellMode,\n    startCellEditMode,\n    stopCellEditMode\n  };\n  const editingPrivateApi = {\n    setCellEditingEditCellValue,\n    getRowWithUpdatedValuesFromCellEditing\n  };\n  useGridApiMethod(apiRef, editingApi, 'public');\n  useGridApiMethod(apiRef, editingPrivateApi, 'private');\n  React.useEffect(() => {\n    if (cellModesModelProp) {\n      updateCellModesModel(cellModesModelProp);\n    }\n  }, [cellModesModelProp, updateCellModesModel]);\n\n  // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.\n  useEnhancedEffect(() => {\n    const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);\n\n    // Update the ref here because updateStateToStopCellEditMode may change it later\n    const copyOfPrevCellModes = prevCellModesModel.current;\n    prevCellModesModel.current = deepClone(cellModesModel); // Do a deep-clone because the attributes might be changed later\n\n    Object.entries(cellModesModel).forEach(([id, fields]) => {\n      Object.entries(fields).forEach(([field, params]) => {\n        const prevMode = copyOfPrevCellModes[id]?.[field]?.mode || GridCellModes.View;\n        const originalId = idToIdLookup[id] ?? id;\n        if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {\n          updateStateToStartCellEditMode(_extends({\n            id: originalId,\n            field\n          }, params));\n        } else if (params.mode === GridCellModes.View && prevMode === GridCellModes.Edit) {\n          updateStateToStopCellEditMode(_extends({\n            id: originalId,\n            field\n          }, params));\n        }\n      });\n    });\n  }, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);\n};","import _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\"],\n  _excluded2 = [\"id\"];\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { useGridApiEventHandler, useGridApiOptionHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { GridEditModes, GridRowModes } from \"../../../models/gridEditRowModel.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridEditRowsStateSelector } from \"./gridEditingSelectors.js\";\nimport { isPrintableKey, isPasteShortcut } from \"../../../utils/keyboardUtils.js\";\nimport { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from \"../columns/gridColumnsSelector.js\";\nimport { gridRowsDataRowIdToIdLookupSelector } from \"../rows/gridRowsSelector.js\";\nimport { deepClone } from \"../../../utils/utils.js\";\nimport { GridRowEditStopReasons, GridRowEditStartReasons } from \"../../../models/params/gridRowParams.js\";\nimport { GRID_ACTIONS_COLUMN_TYPE } from \"../../../colDef/index.js\";\nimport { getDefaultCellValue } from \"./utils.js\";\nexport const useGridRowEditing = (apiRef, props) => {\n  const [rowModesModel, setRowModesModel] = React.useState({});\n  const rowModesModelRef = React.useRef(rowModesModel);\n  const prevRowModesModel = React.useRef({});\n  const focusTimeout = React.useRef();\n  const nextFocusedCell = React.useRef(null);\n  const {\n    processRowUpdate,\n    onProcessRowUpdateError,\n    rowModesModel: rowModesModelProp,\n    onRowModesModelChange\n  } = props;\n  const runIfEditModeIsRow = callback => (...args) => {\n    if (props.editMode === GridEditModes.Row) {\n      callback(...args);\n    }\n  };\n  const throwIfNotEditable = React.useCallback((id, field) => {\n    const params = apiRef.current.getCellParams(id, field);\n    if (!apiRef.current.isCellEditable(params)) {\n      throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);\n    }\n  }, [apiRef]);\n  const throwIfNotInMode = React.useCallback((id, mode) => {\n    if (apiRef.current.getRowMode(id) !== mode) {\n      throw new Error(`MUI X: The row with id=${id} is not in ${mode} mode.`);\n    }\n  }, [apiRef]);\n  const hasFieldsWithErrors = React.useCallback(rowId => {\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    return Object.values(editingState[rowId]).some(fieldProps => fieldProps.error);\n  }, [apiRef]);\n  const handleCellDoubleClick = React.useCallback((params, event) => {\n    if (!params.isEditable) {\n      return;\n    }\n    if (apiRef.current.getRowMode(params.id) === GridRowModes.Edit) {\n      return;\n    }\n    const rowParams = apiRef.current.getRowParams(params.id);\n    const newParams = _extends({}, rowParams, {\n      field: params.field,\n      reason: GridRowEditStartReasons.cellDoubleClick\n    });\n    apiRef.current.publishEvent('rowEditStart', newParams, event);\n  }, [apiRef]);\n  const handleCellFocusIn = React.useCallback(params => {\n    nextFocusedCell.current = params;\n  }, []);\n  const handleCellFocusOut = React.useCallback((params, event) => {\n    if (!params.isEditable) {\n      return;\n    }\n    if (apiRef.current.getRowMode(params.id) === GridRowModes.View) {\n      return;\n    }\n    // The mechanism to detect if we can stop editing a row is different from\n    // the cell editing. Instead of triggering it when clicking outside a cell,\n    // we must check if another cell in the same row was not clicked. To achieve\n    // that, first we keep track of all cells that gained focus. When a cell loses\n    // focus we check if the next cell that received focus is from a different row.\n    nextFocusedCell.current = null;\n    focusTimeout.current = setTimeout(() => {\n      if (nextFocusedCell.current?.id !== params.id) {\n        // The row might have been deleted during the click\n        if (!apiRef.current.getRow(params.id)) {\n          return;\n        }\n\n        // The row may already changed its mode\n        if (apiRef.current.getRowMode(params.id) === GridRowModes.View) {\n          return;\n        }\n        if (hasFieldsWithErrors(params.id)) {\n          return;\n        }\n        const rowParams = apiRef.current.getRowParams(params.id);\n        const newParams = _extends({}, rowParams, {\n          field: params.field,\n          reason: GridRowEditStopReasons.rowFocusOut\n        });\n        apiRef.current.publishEvent('rowEditStop', newParams, event);\n      }\n    });\n  }, [apiRef, hasFieldsWithErrors]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(focusTimeout.current);\n    };\n  }, []);\n  const handleCellKeyDown = React.useCallback((params, event) => {\n    if (params.cellMode === GridRowModes.Edit) {\n      // Wait until IME is settled for Asian languages like Japanese and Chinese\n      // TODO: `event.which` is deprecated but this is a temporary workaround\n      if (event.which === 229) {\n        return;\n      }\n      let reason;\n      if (event.key === 'Escape') {\n        reason = GridRowEditStopReasons.escapeKeyDown;\n      } else if (event.key === 'Enter') {\n        reason = GridRowEditStopReasons.enterKeyDown;\n      } else if (event.key === 'Tab') {\n        const columnFields = gridVisibleColumnFieldsSelector(apiRef).filter(field => {\n          const column = apiRef.current.getColumn(field);\n          if (column.type === GRID_ACTIONS_COLUMN_TYPE) {\n            return true;\n          }\n          return apiRef.current.isCellEditable(apiRef.current.getCellParams(params.id, field));\n        });\n        if (event.shiftKey) {\n          if (params.field === columnFields[0]) {\n            // Exit if user pressed Shift+Tab on the first field\n            reason = GridRowEditStopReasons.shiftTabKeyDown;\n          }\n        } else if (params.field === columnFields[columnFields.length - 1]) {\n          // Exit if user pressed Tab on the last field\n          reason = GridRowEditStopReasons.tabKeyDown;\n        }\n\n        // Always prevent going to the next element in the tab sequence because the focus is\n        // handled manually to support edit components rendered inside Portals\n        event.preventDefault();\n        if (!reason) {\n          const index = columnFields.findIndex(field => field === params.field);\n          const nextFieldToFocus = columnFields[event.shiftKey ? index - 1 : index + 1];\n          apiRef.current.setCellFocus(params.id, nextFieldToFocus);\n        }\n      }\n      if (reason) {\n        if (reason !== GridRowEditStopReasons.escapeKeyDown && hasFieldsWithErrors(params.id)) {\n          return;\n        }\n        const newParams = _extends({}, apiRef.current.getRowParams(params.id), {\n          reason,\n          field: params.field\n        });\n        apiRef.current.publishEvent('rowEditStop', newParams, event);\n      }\n    } else if (params.isEditable) {\n      let reason;\n      const canStartEditing = apiRef.current.unstable_applyPipeProcessors('canStartEditing', true, {\n        event,\n        cellParams: params,\n        editMode: 'row'\n      });\n      if (!canStartEditing) {\n        return;\n      }\n      if (isPrintableKey(event)) {\n        reason = GridRowEditStartReasons.printableKeyDown;\n      } else if (isPasteShortcut(event)) {\n        reason = GridRowEditStartReasons.printableKeyDown;\n      } else if (event.key === 'Enter') {\n        reason = GridRowEditStartReasons.enterKeyDown;\n      } else if (event.key === 'Backspace' || event.key === 'Delete') {\n        reason = GridRowEditStartReasons.deleteKeyDown;\n      }\n      if (reason) {\n        const rowParams = apiRef.current.getRowParams(params.id);\n        const newParams = _extends({}, rowParams, {\n          field: params.field,\n          reason\n        });\n        apiRef.current.publishEvent('rowEditStart', newParams, event);\n      }\n    }\n  }, [apiRef, hasFieldsWithErrors]);\n  const handleRowEditStart = React.useCallback(params => {\n    const {\n      id,\n      field,\n      reason\n    } = params;\n    const startRowEditModeParams = {\n      id,\n      fieldToFocus: field\n    };\n    if (reason === GridRowEditStartReasons.printableKeyDown || reason === GridRowEditStartReasons.deleteKeyDown) {\n      startRowEditModeParams.deleteValue = !!field;\n    }\n    apiRef.current.startRowEditMode(startRowEditModeParams);\n  }, [apiRef]);\n  const handleRowEditStop = React.useCallback(params => {\n    const {\n      id,\n      reason,\n      field\n    } = params;\n    apiRef.current.runPendingEditCellValueMutation(id);\n    let cellToFocusAfter;\n    if (reason === GridRowEditStopReasons.enterKeyDown) {\n      cellToFocusAfter = 'below';\n    } else if (reason === GridRowEditStopReasons.tabKeyDown) {\n      cellToFocusAfter = 'right';\n    } else if (reason === GridRowEditStopReasons.shiftTabKeyDown) {\n      cellToFocusAfter = 'left';\n    }\n    const ignoreModifications = reason === 'escapeKeyDown';\n    apiRef.current.stopRowEditMode({\n      id,\n      ignoreModifications,\n      field,\n      cellToFocusAfter\n    });\n  }, [apiRef]);\n  useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsRow(handleCellDoubleClick));\n  useGridApiEventHandler(apiRef, 'cellFocusIn', runIfEditModeIsRow(handleCellFocusIn));\n  useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsRow(handleCellFocusOut));\n  useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsRow(handleCellKeyDown));\n  useGridApiEventHandler(apiRef, 'rowEditStart', runIfEditModeIsRow(handleRowEditStart));\n  useGridApiEventHandler(apiRef, 'rowEditStop', runIfEditModeIsRow(handleRowEditStop));\n  useGridApiOptionHandler(apiRef, 'rowEditStart', props.onRowEditStart);\n  useGridApiOptionHandler(apiRef, 'rowEditStop', props.onRowEditStop);\n  const getRowMode = React.useCallback(id => {\n    if (props.editMode === GridEditModes.Cell) {\n      return GridRowModes.View;\n    }\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const isEditing = editingState[id] && Object.keys(editingState[id]).length > 0;\n    return isEditing ? GridRowModes.Edit : GridRowModes.View;\n  }, [apiRef, props.editMode]);\n  const updateRowModesModel = useEventCallback(newModel => {\n    const isNewModelDifferentFromProp = newModel !== props.rowModesModel;\n    if (onRowModesModelChange && isNewModelDifferentFromProp) {\n      onRowModesModelChange(newModel, {\n        api: apiRef.current\n      });\n    }\n    if (props.rowModesModel && isNewModelDifferentFromProp) {\n      return; // The prop always win\n    }\n    setRowModesModel(newModel);\n    rowModesModelRef.current = newModel;\n    apiRef.current.publishEvent('rowModesModelChange', newModel);\n  });\n  const updateRowInRowModesModel = React.useCallback((id, newProps) => {\n    const newModel = _extends({}, rowModesModelRef.current);\n    if (newProps !== null) {\n      newModel[id] = _extends({}, newProps);\n    } else {\n      delete newModel[id];\n    }\n    updateRowModesModel(newModel);\n  }, [updateRowModesModel]);\n  const updateOrDeleteRowState = React.useCallback((id, newProps) => {\n    apiRef.current.setState(state => {\n      const newEditingState = _extends({}, state.editRows);\n      if (newProps !== null) {\n        newEditingState[id] = newProps;\n      } else {\n        delete newEditingState[id];\n      }\n      return _extends({}, state, {\n        editRows: newEditingState\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const updateOrDeleteFieldState = React.useCallback((id, field, newProps) => {\n    apiRef.current.setState(state => {\n      const newEditingState = _extends({}, state.editRows);\n      if (newProps !== null) {\n        newEditingState[id] = _extends({}, newEditingState[id], {\n          [field]: _extends({}, newProps)\n        });\n      } else {\n        delete newEditingState[id][field];\n        if (Object.keys(newEditingState[id]).length === 0) {\n          delete newEditingState[id];\n        }\n      }\n      return _extends({}, state, {\n        editRows: newEditingState\n      });\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const startRowEditMode = React.useCallback(params => {\n    const {\n        id\n      } = params,\n      other = _objectWithoutPropertiesLoose(params, _excluded);\n    throwIfNotInMode(id, GridRowModes.View);\n    updateRowInRowModesModel(id, _extends({\n      mode: GridRowModes.Edit\n    }, other));\n  }, [throwIfNotInMode, updateRowInRowModesModel]);\n  const updateStateToStartRowEditMode = useEventCallback(params => {\n    const {\n      id,\n      fieldToFocus,\n      deleteValue,\n      initialValue\n    } = params;\n    const columnFields = gridColumnFieldsSelector(apiRef);\n    const newProps = columnFields.reduce((acc, field) => {\n      const cellParams = apiRef.current.getCellParams(id, field);\n      if (!cellParams.isEditable) {\n        return acc;\n      }\n      let newValue = apiRef.current.getCellValue(id, field);\n      if (fieldToFocus === field && (deleteValue || initialValue)) {\n        if (deleteValue) {\n          newValue = getDefaultCellValue(apiRef.current.getColumn(field));\n        } else if (initialValue) {\n          newValue = initialValue;\n        }\n      }\n      acc[field] = {\n        value: newValue,\n        error: false,\n        isProcessingProps: false\n      };\n      return acc;\n    }, {});\n    updateOrDeleteRowState(id, newProps);\n    if (fieldToFocus) {\n      apiRef.current.setCellFocus(id, fieldToFocus);\n    }\n  });\n  const stopRowEditMode = React.useCallback(params => {\n    const {\n        id\n      } = params,\n      other = _objectWithoutPropertiesLoose(params, _excluded2);\n    throwIfNotInMode(id, GridRowModes.Edit);\n    updateRowInRowModesModel(id, _extends({\n      mode: GridRowModes.View\n    }, other));\n  }, [throwIfNotInMode, updateRowInRowModesModel]);\n  const updateStateToStopRowEditMode = useEventCallback(params => {\n    const {\n      id,\n      ignoreModifications,\n      field: focusedField,\n      cellToFocusAfter = 'none'\n    } = params;\n    apiRef.current.runPendingEditCellValueMutation(id);\n    const finishRowEditMode = () => {\n      if (cellToFocusAfter !== 'none' && focusedField) {\n        apiRef.current.moveFocusToRelativeCell(id, focusedField, cellToFocusAfter);\n      }\n      updateOrDeleteRowState(id, null);\n      updateRowInRowModesModel(id, null);\n    };\n    if (ignoreModifications) {\n      finishRowEditMode();\n      return;\n    }\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const row = apiRef.current.getRow(id);\n    const isSomeFieldProcessingProps = Object.values(editingState[id]).some(fieldProps => fieldProps.isProcessingProps);\n    if (isSomeFieldProcessingProps) {\n      prevRowModesModel.current[id].mode = GridRowModes.Edit;\n      return;\n    }\n    if (hasFieldsWithErrors(id)) {\n      prevRowModesModel.current[id].mode = GridRowModes.Edit;\n      // Revert the mode in the rowModesModel prop back to \"edit\"\n      updateRowInRowModesModel(id, {\n        mode: GridRowModes.Edit\n      });\n      return;\n    }\n    const rowUpdate = apiRef.current.getRowWithUpdatedValuesFromRowEditing(id);\n    if (processRowUpdate) {\n      const handleError = errorThrown => {\n        prevRowModesModel.current[id].mode = GridRowModes.Edit;\n        // Revert the mode in the rowModesModel prop back to \"edit\"\n        updateRowInRowModesModel(id, {\n          mode: GridRowModes.Edit\n        });\n        if (onProcessRowUpdateError) {\n          onProcessRowUpdateError(errorThrown);\n        } else if (process.env.NODE_ENV !== 'production') {\n          warnOnce(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');\n        }\n      };\n      try {\n        Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {\n          apiRef.current.updateRows([finalRowUpdate]);\n          finishRowEditMode();\n        }).catch(handleError);\n      } catch (errorThrown) {\n        handleError(errorThrown);\n      }\n    } else {\n      apiRef.current.updateRows([rowUpdate]);\n      finishRowEditMode();\n    }\n  });\n  const setRowEditingEditCellValue = React.useCallback(params => {\n    const {\n      id,\n      field,\n      value,\n      debounceMs,\n      unstable_skipValueParser: skipValueParser\n    } = params;\n    throwIfNotEditable(id, field);\n    const column = apiRef.current.getColumn(field);\n    const row = apiRef.current.getRow(id);\n    let parsedValue = value;\n    if (column.valueParser && !skipValueParser) {\n      parsedValue = column.valueParser(value, row, column, apiRef);\n    }\n    let editingState = gridEditRowsStateSelector(apiRef.current.state);\n    let newProps = _extends({}, editingState[id][field], {\n      value: parsedValue,\n      changeReason: debounceMs ? 'debouncedSetEditCellValue' : 'setEditCellValue'\n    });\n    if (!column.preProcessEditCellProps) {\n      updateOrDeleteFieldState(id, field, newProps);\n    }\n    return new Promise(resolve => {\n      const promises = [];\n      if (column.preProcessEditCellProps) {\n        const hasChanged = newProps.value !== editingState[id][field].value;\n        newProps = _extends({}, newProps, {\n          isProcessingProps: true\n        });\n        updateOrDeleteFieldState(id, field, newProps);\n        const _editingState$id = editingState[id],\n          otherFieldsProps = _objectWithoutPropertiesLoose(_editingState$id, [field].map(_toPropertyKey));\n        const promise = Promise.resolve(column.preProcessEditCellProps({\n          id,\n          row,\n          props: newProps,\n          hasChanged,\n          otherFieldsProps\n        })).then(processedProps => {\n          // Check again if the row is in edit mode because the user may have\n          // discarded the changes while the props were being processed.\n          if (apiRef.current.getRowMode(id) === GridRowModes.View) {\n            resolve(false);\n            return;\n          }\n          editingState = gridEditRowsStateSelector(apiRef.current.state);\n          processedProps = _extends({}, processedProps, {\n            isProcessingProps: false\n          });\n          // We don't reuse the value from the props pre-processing because when the\n          // promise resolves it may be already outdated. The only exception to this rule\n          // is when there's no pre-processing.\n          processedProps.value = column.preProcessEditCellProps ? editingState[id][field].value : parsedValue;\n          updateOrDeleteFieldState(id, field, processedProps);\n        });\n        promises.push(promise);\n      }\n      Object.entries(editingState[id]).forEach(([thisField, fieldProps]) => {\n        if (thisField === field) {\n          return;\n        }\n        const fieldColumn = apiRef.current.getColumn(thisField);\n        if (!fieldColumn.preProcessEditCellProps) {\n          return;\n        }\n        fieldProps = _extends({}, fieldProps, {\n          isProcessingProps: true\n        });\n        updateOrDeleteFieldState(id, thisField, fieldProps);\n        editingState = gridEditRowsStateSelector(apiRef.current.state);\n        const _editingState$id2 = editingState[id],\n          otherFieldsProps = _objectWithoutPropertiesLoose(_editingState$id2, [thisField].map(_toPropertyKey));\n        const promise = Promise.resolve(fieldColumn.preProcessEditCellProps({\n          id,\n          row,\n          props: fieldProps,\n          hasChanged: false,\n          otherFieldsProps\n        })).then(processedProps => {\n          // Check again if the row is in edit mode because the user may have\n          // discarded the changes while the props were being processed.\n          if (apiRef.current.getRowMode(id) === GridRowModes.View) {\n            resolve(false);\n            return;\n          }\n          processedProps = _extends({}, processedProps, {\n            isProcessingProps: false\n          });\n          updateOrDeleteFieldState(id, thisField, processedProps);\n        });\n        promises.push(promise);\n      });\n      Promise.all(promises).then(() => {\n        if (apiRef.current.getRowMode(id) === GridRowModes.Edit) {\n          editingState = gridEditRowsStateSelector(apiRef.current.state);\n          resolve(!editingState[id][field].error);\n        } else {\n          resolve(false);\n        }\n      });\n    });\n  }, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);\n  const getRowWithUpdatedValuesFromRowEditing = React.useCallback(id => {\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    const row = apiRef.current.getRow(id);\n    if (!editingState[id]) {\n      return apiRef.current.getRow(id);\n    }\n    let rowUpdate = _extends({}, row);\n    Object.entries(editingState[id]).forEach(([field, fieldProps]) => {\n      const column = apiRef.current.getColumn(field);\n      if (column.valueSetter) {\n        rowUpdate = column.valueSetter(fieldProps.value, rowUpdate, column, apiRef);\n      } else {\n        rowUpdate[field] = fieldProps.value;\n      }\n    });\n    return rowUpdate;\n  }, [apiRef]);\n  const editingApi = {\n    getRowMode,\n    startRowEditMode,\n    stopRowEditMode\n  };\n  const editingPrivateApi = {\n    setRowEditingEditCellValue,\n    getRowWithUpdatedValuesFromRowEditing\n  };\n  useGridApiMethod(apiRef, editingApi, 'public');\n  useGridApiMethod(apiRef, editingPrivateApi, 'private');\n  React.useEffect(() => {\n    if (rowModesModelProp) {\n      updateRowModesModel(rowModesModelProp);\n    }\n  }, [rowModesModelProp, updateRowModesModel]);\n\n  // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.\n  useEnhancedEffect(() => {\n    const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);\n\n    // Update the ref here because updateStateToStopRowEditMode may change it later\n    const copyOfPrevRowModesModel = prevRowModesModel.current;\n    prevRowModesModel.current = deepClone(rowModesModel); // Do a deep-clone because the attributes might be changed later\n\n    const ids = new Set([...Object.keys(rowModesModel), ...Object.keys(copyOfPrevRowModesModel)]);\n    Array.from(ids).forEach(id => {\n      const params = rowModesModel[id] ?? {\n        mode: GridRowModes.View\n      };\n      const prevMode = copyOfPrevRowModesModel[id]?.mode || GridRowModes.View;\n      const originalId = idToIdLookup[id] ?? id;\n      if (params.mode === GridRowModes.Edit && prevMode === GridRowModes.View) {\n        updateStateToStartRowEditMode(_extends({\n          id: originalId\n        }, params));\n      } else if (params.mode === GridRowModes.View && prevMode === GridRowModes.Edit) {\n        updateStateToStopRowEditMode(_extends({\n          id: originalId\n        }, params));\n      }\n    });\n  }, [apiRef, rowModesModel, updateStateToStartRowEditMode, updateStateToStopRowEditMode]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridCellEditing } from \"./useGridCellEditing.js\";\nimport { GridCellModes, GridEditModes } from \"../../../models/gridEditRowModel.js\";\nimport { useGridRowEditing } from \"./useGridRowEditing.js\";\nimport { gridEditRowsStateSelector } from \"./gridEditingSelectors.js\";\nimport { isAutogeneratedRowNode } from \"../rows/gridRowsUtils.js\";\nexport const editingStateInitializer = state => _extends({}, state, {\n  editRows: {}\n});\nexport const useGridEditing = (apiRef, props) => {\n  useGridCellEditing(apiRef, props);\n  useGridRowEditing(apiRef, props);\n  const debounceMap = React.useRef({});\n  const {\n    isCellEditable: isCellEditableProp\n  } = props;\n  const isCellEditable = React.useCallback(params => {\n    if (isAutogeneratedRowNode(params.rowNode)) {\n      return false;\n    }\n    if (!params.colDef.editable) {\n      return false;\n    }\n    if (!params.colDef.renderEditCell) {\n      return false;\n    }\n    if (isCellEditableProp) {\n      return isCellEditableProp(params);\n    }\n    return true;\n  }, [isCellEditableProp]);\n  const maybeDebounce = (id, field, debounceMs, callback) => {\n    if (!debounceMs) {\n      callback();\n      return;\n    }\n    if (!debounceMap.current[id]) {\n      debounceMap.current[id] = {};\n    }\n    if (debounceMap.current[id][field]) {\n      const [timeout] = debounceMap.current[id][field];\n      clearTimeout(timeout);\n    }\n\n    // To run the callback immediately without waiting the timeout\n    const runImmediately = () => {\n      const [timeout] = debounceMap.current[id][field];\n      clearTimeout(timeout);\n      callback();\n      delete debounceMap.current[id][field];\n    };\n    const timeout = setTimeout(() => {\n      callback();\n      delete debounceMap.current[id][field];\n    }, debounceMs);\n    debounceMap.current[id][field] = [timeout, runImmediately];\n  };\n  React.useEffect(() => {\n    const debounces = debounceMap.current;\n    return () => {\n      Object.entries(debounces).forEach(([id, fields]) => {\n        Object.keys(fields).forEach(field => {\n          const [timeout] = debounces[id][field];\n          clearTimeout(timeout);\n          delete debounces[id][field];\n        });\n      });\n    };\n  }, []);\n  const runPendingEditCellValueMutation = React.useCallback((id, field) => {\n    if (!debounceMap.current[id]) {\n      return;\n    }\n    if (!field) {\n      Object.keys(debounceMap.current[id]).forEach(debouncedField => {\n        const [, runCallback] = debounceMap.current[id][debouncedField];\n        runCallback();\n      });\n    } else if (debounceMap.current[id][field]) {\n      const [, runCallback] = debounceMap.current[id][field];\n      runCallback();\n    }\n  }, []);\n  const setEditCellValue = React.useCallback(params => {\n    const {\n      id,\n      field,\n      debounceMs\n    } = params;\n    return new Promise(resolve => {\n      maybeDebounce(id, field, debounceMs, async () => {\n        const setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.setRowEditingEditCellValue : apiRef.current.setCellEditingEditCellValue;\n\n        // Check if the cell is in edit mode\n        // By the time this callback runs the user may have cancelled the editing\n        if (apiRef.current.getCellMode(id, field) === GridCellModes.Edit) {\n          const result = await setEditCellValueToCall(params);\n          resolve(result);\n        }\n      });\n    });\n  }, [apiRef, props.editMode]);\n  const getRowWithUpdatedValues = React.useCallback((id, field) => {\n    return props.editMode === GridEditModes.Cell ? apiRef.current.getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.getRowWithUpdatedValuesFromRowEditing(id);\n  }, [apiRef, props.editMode]);\n  const getEditCellMeta = React.useCallback((id, field) => {\n    const editingState = gridEditRowsStateSelector(apiRef.current.state);\n    return editingState[id]?.[field] ?? null;\n  }, [apiRef]);\n  const editingSharedApi = {\n    isCellEditable,\n    setEditCellValue,\n    getRowWithUpdatedValues,\n    unstable_getEditCellMeta: getEditCellMeta\n  };\n  const editingSharedPrivateApi = {\n    runPendingEditCellValueMutation\n  };\n  useGridApiMethod(apiRef, editingSharedApi, 'public');\n  useGridApiMethod(apiRef, editingSharedPrivateApi, 'private');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridDataRowIdsSelector, gridRowsDataRowIdToIdLookupSelector, gridRowMaximumTreeDepthSelector, gridRowGroupsToFetchSelector } from \"./gridRowsSelector.js\";\nimport { useTimeout } from \"../../utils/useTimeout.js\";\nimport { GridSignature, useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { gridSortedRowIdsSelector } from \"../sorting/gridSortingSelector.js\";\nimport { gridFilteredRowsLookupSelector } from \"../filter/gridFilterSelector.js\";\nimport { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache, isAutogeneratedRowNode, GRID_ROOT_GROUP_ID, GRID_ID_AUTOGENERATED, updateCacheWithNewRows, getTopLevelRowCount, getRowIdFromRowModel, computeRowsUpdates } from \"./gridRowsUtils.js\";\nimport { useGridRegisterPipeApplier } from \"../../core/pipeProcessing/index.js\";\nexport const rowsStateInitializer = (state, props, apiRef) => {\n  const isDataSourceAvailable = !!props.unstable_dataSource;\n  apiRef.current.caches.rows = createRowsInternalCache({\n    rows: isDataSourceAvailable ? [] : props.rows,\n    getRowId: props.getRowId,\n    loading: props.loading,\n    rowCount: props.rowCount\n  });\n  return _extends({}, state, {\n    rows: getRowsStateFromCache({\n      apiRef,\n      rowCountProp: props.rowCount,\n      loadingProp: isDataSourceAvailable ? true : props.loading,\n      previousTree: null,\n      previousTreeDepths: null\n    })\n  });\n};\nexport const useGridRows = (apiRef, props) => {\n  if (process.env.NODE_ENV !== 'production') {\n    try {\n      // Freeze the `rows` prop so developers have a fast failure if they try to use Array.prototype.push().\n      Object.freeze(props.rows);\n    } catch (error) {\n      // Sometimes, it's impossible to freeze, so we give up on it.\n    }\n  }\n  const logger = useGridLogger(apiRef, 'useGridRows');\n  const currentPage = useGridVisibleRows(apiRef, props);\n  const lastUpdateMs = React.useRef(Date.now());\n  const lastRowCount = React.useRef(props.rowCount);\n  const timeout = useTimeout();\n  const getRow = React.useCallback(id => {\n    const model = gridRowsLookupSelector(apiRef)[id];\n    if (model) {\n      return model;\n    }\n    const node = apiRef.current.getRowNode(id);\n    if (node && isAutogeneratedRowNode(node)) {\n      return {\n        [GRID_ID_AUTOGENERATED]: id\n      };\n    }\n    return null;\n  }, [apiRef]);\n  const getRowIdProp = props.getRowId;\n  const getRowId = React.useCallback(row => {\n    if (GRID_ID_AUTOGENERATED in row) {\n      return row[GRID_ID_AUTOGENERATED];\n    }\n    if (getRowIdProp) {\n      return getRowIdProp(row);\n    }\n    return row.id;\n  }, [getRowIdProp]);\n  const lookup = React.useMemo(() => currentPage.rows.reduce((acc, {\n    id\n  }, index) => {\n    acc[id] = index;\n    return acc;\n  }, {}), [currentPage.rows]);\n  const throttledRowsChange = React.useCallback(({\n    cache,\n    throttle\n  }) => {\n    const run = () => {\n      lastUpdateMs.current = Date.now();\n      apiRef.current.setState(state => _extends({}, state, {\n        rows: getRowsStateFromCache({\n          apiRef,\n          rowCountProp: props.rowCount,\n          loadingProp: props.loading,\n          previousTree: gridRowTreeSelector(apiRef),\n          previousTreeDepths: gridRowTreeDepthsSelector(apiRef),\n          previousGroupsToFetch: gridRowGroupsToFetchSelector(apiRef)\n        })\n      }));\n      apiRef.current.publishEvent('rowsSet');\n      apiRef.current.forceUpdate();\n    };\n    timeout.clear();\n    apiRef.current.caches.rows = cache;\n    if (!throttle) {\n      run();\n      return;\n    }\n    const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);\n    if (throttleRemainingTimeMs > 0) {\n      timeout.start(throttleRemainingTimeMs, run);\n      return;\n    }\n    run();\n  }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef, timeout]);\n\n  /**\n   * API METHODS\n   */\n  const setRows = React.useCallback(rows => {\n    logger.debug(`Updating all rows, new length ${rows.length}`);\n    const cache = createRowsInternalCache({\n      rows,\n      getRowId: props.getRowId,\n      loading: props.loading,\n      rowCount: props.rowCount\n    });\n    const prevCache = apiRef.current.caches.rows;\n    cache.rowsBeforePartialUpdates = prevCache.rowsBeforePartialUpdates;\n    throttledRowsChange({\n      cache,\n      throttle: true\n    });\n  }, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);\n  const updateRows = React.useCallback(updates => {\n    if (props.signature === GridSignature.DataGrid && updates.length > 1) {\n      throw new Error(['MUI X: You cannot update several rows at once in `apiRef.current.updateRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n    }\n    const nonPinnedRowsUpdates = computeRowsUpdates(apiRef, updates, props.getRowId);\n    const cache = updateCacheWithNewRows({\n      updates: nonPinnedRowsUpdates,\n      getRowId: props.getRowId,\n      previousCache: apiRef.current.caches.rows\n    });\n    throttledRowsChange({\n      cache,\n      throttle: true\n    });\n  }, [props.signature, props.getRowId, throttledRowsChange, apiRef]);\n  const updateServerRows = React.useCallback((updates, groupKeys) => {\n    const nonPinnedRowsUpdates = computeRowsUpdates(apiRef, updates, props.getRowId);\n    const cache = updateCacheWithNewRows({\n      updates: nonPinnedRowsUpdates,\n      getRowId: props.getRowId,\n      previousCache: apiRef.current.caches.rows,\n      groupKeys: groupKeys ?? []\n    });\n    throttledRowsChange({\n      cache,\n      throttle: false\n    });\n  }, [props.getRowId, throttledRowsChange, apiRef]);\n  const setLoading = React.useCallback(loading => {\n    if (loading === props.loading) {\n      return;\n    }\n    logger.debug(`Setting loading to ${loading}`);\n    apiRef.current.setState(state => _extends({}, state, {\n      rows: _extends({}, state.rows, {\n        loading\n      })\n    }));\n    apiRef.current.caches.rows.loadingPropBeforePartialUpdates = loading;\n  }, [props.loading, apiRef, logger]);\n  const getRowModels = React.useCallback(() => {\n    const dataRows = gridDataRowIdsSelector(apiRef);\n    const idRowsLookup = gridRowsLookupSelector(apiRef);\n    return new Map(dataRows.map(id => [id, idRowsLookup[id] ?? {}]));\n  }, [apiRef]);\n  const getRowsCount = React.useCallback(() => gridRowCountSelector(apiRef), [apiRef]);\n  const getAllRowIds = React.useCallback(() => gridDataRowIdsSelector(apiRef), [apiRef]);\n  const getRowIndexRelativeToVisibleRows = React.useCallback(id => lookup[id], [lookup]);\n  const setRowChildrenExpansion = React.useCallback((id, isExpanded) => {\n    const currentNode = apiRef.current.getRowNode(id);\n    if (!currentNode) {\n      throw new Error(`MUI X: No row with id #${id} found.`);\n    }\n    if (currentNode.type !== 'group') {\n      throw new Error('MUI X: Only group nodes can be expanded or collapsed.');\n    }\n    const newNode = _extends({}, currentNode, {\n      childrenExpanded: isExpanded\n    });\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        rows: _extends({}, state.rows, {\n          tree: _extends({}, state.rows.tree, {\n            [id]: newNode\n          })\n        })\n      });\n    });\n    apiRef.current.forceUpdate();\n    apiRef.current.publishEvent('rowExpansionChange', newNode);\n  }, [apiRef]);\n  const getRowNode = React.useCallback(id => gridRowTreeSelector(apiRef)[id] ?? null, [apiRef]);\n  const getRowGroupChildren = React.useCallback(({\n    skipAutoGeneratedRows = true,\n    groupId,\n    applySorting,\n    applyFiltering\n  }) => {\n    const tree = gridRowTreeSelector(apiRef);\n    let children;\n    if (applySorting) {\n      const groupNode = tree[groupId];\n      if (!groupNode) {\n        return [];\n      }\n      const sortedRowIds = gridSortedRowIdsSelector(apiRef);\n      children = [];\n      const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;\n      for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {\n        const id = sortedRowIds[index];\n        if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[id])) {\n          children.push(id);\n        }\n      }\n    } else {\n      children = getTreeNodeDescendants(tree, groupId, skipAutoGeneratedRows);\n    }\n    if (applyFiltering) {\n      const filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);\n      children = children.filter(childId => filteredRowsLookup[childId] !== false);\n    }\n    return children;\n  }, [apiRef]);\n  const setRowIndex = React.useCallback((rowId, targetIndex) => {\n    const node = apiRef.current.getRowNode(rowId);\n    if (!node) {\n      throw new Error(`MUI X: No row with id #${rowId} found.`);\n    }\n    if (node.parent !== GRID_ROOT_GROUP_ID) {\n      throw new Error(`MUI X: The row reordering do not support reordering of grouped rows yet.`);\n    }\n    if (node.type !== 'leaf') {\n      throw new Error(`MUI X: The row reordering do not support reordering of footer or grouping rows.`);\n    }\n    apiRef.current.setState(state => {\n      const group = gridRowTreeSelector(state, apiRef.current.instanceId)[GRID_ROOT_GROUP_ID];\n      const allRows = group.children;\n      const oldIndex = allRows.findIndex(row => row === rowId);\n      if (oldIndex === -1 || oldIndex === targetIndex) {\n        return state;\n      }\n      logger.debug(`Moving row ${rowId} to index ${targetIndex}`);\n      const updatedRows = [...allRows];\n      updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);\n      return _extends({}, state, {\n        rows: _extends({}, state.rows, {\n          tree: _extends({}, state.rows.tree, {\n            [GRID_ROOT_GROUP_ID]: _extends({}, group, {\n              children: updatedRows\n            })\n          })\n        })\n      });\n    });\n    apiRef.current.publishEvent('rowsSet');\n  }, [apiRef, logger]);\n  const replaceRows = React.useCallback((firstRowToRender, newRows) => {\n    if (props.signature === GridSignature.DataGrid && newRows.length > 1) {\n      throw new Error(['MUI X: You cannot replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n    }\n    if (newRows.length === 0) {\n      return;\n    }\n    const treeDepth = gridRowMaximumTreeDepthSelector(apiRef);\n    if (treeDepth > 1) {\n      throw new Error('`apiRef.current.unstable_replaceRows` is not compatible with tree data and row grouping');\n    }\n    const tree = _extends({}, gridRowTreeSelector(apiRef));\n    const dataRowIdToModelLookup = _extends({}, gridRowsLookupSelector(apiRef));\n    const dataRowIdToIdLookup = _extends({}, gridRowsDataRowIdToIdLookupSelector(apiRef));\n    const rootGroup = tree[GRID_ROOT_GROUP_ID];\n    const rootGroupChildren = [...rootGroup.children];\n    const seenIds = new Set();\n    for (let i = 0; i < newRows.length; i += 1) {\n      const rowModel = newRows[i];\n      const rowId = getRowIdFromRowModel(rowModel, props.getRowId, 'A row was provided without id when calling replaceRows().');\n      const [removedRowId] = rootGroupChildren.splice(firstRowToRender + i, 1, rowId);\n      if (!seenIds.has(removedRowId)) {\n        delete dataRowIdToModelLookup[removedRowId];\n        delete dataRowIdToIdLookup[removedRowId];\n        delete tree[removedRowId];\n      }\n      const rowTreeNodeConfig = {\n        id: rowId,\n        depth: 0,\n        parent: GRID_ROOT_GROUP_ID,\n        type: 'leaf',\n        groupingKey: null\n      };\n      dataRowIdToModelLookup[rowId] = rowModel;\n      dataRowIdToIdLookup[rowId] = rowId;\n      tree[rowId] = rowTreeNodeConfig;\n      seenIds.add(rowId);\n    }\n    tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {\n      children: rootGroupChildren\n    });\n\n    // Removes potential remaining skeleton rows from the dataRowIds.\n    const dataRowIds = rootGroupChildren.filter(childId => tree[childId]?.type === 'leaf');\n    apiRef.current.caches.rows.dataRowIdToModelLookup = dataRowIdToModelLookup;\n    apiRef.current.caches.rows.dataRowIdToIdLookup = dataRowIdToIdLookup;\n    apiRef.current.setState(state => _extends({}, state, {\n      rows: _extends({}, state.rows, {\n        dataRowIdToModelLookup,\n        dataRowIdToIdLookup,\n        dataRowIds,\n        tree\n      })\n    }));\n    apiRef.current.publishEvent('rowsSet');\n  }, [apiRef, props.signature, props.getRowId]);\n  const rowApi = {\n    getRow,\n    setLoading,\n    getRowId,\n    getRowModels,\n    getRowsCount,\n    getAllRowIds,\n    setRows,\n    updateRows,\n    getRowNode,\n    getRowIndexRelativeToVisibleRows,\n    unstable_replaceRows: replaceRows\n  };\n  const rowProApi = {\n    setRowIndex,\n    setRowChildrenExpansion,\n    getRowGroupChildren\n  };\n  const rowProPrivateApi = {\n    updateServerRows\n  };\n\n  /**\n   * EVENTS\n   */\n  const groupRows = React.useCallback(() => {\n    logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);\n    let cache;\n    if (apiRef.current.caches.rows.rowsBeforePartialUpdates === props.rows) {\n      // The `props.rows` did not change since the last row grouping\n      // We can use the current rows cache which contains the partial updates done recently.\n      cache = _extends({}, apiRef.current.caches.rows, {\n        updates: {\n          type: 'full',\n          rows: gridDataRowIdsSelector(apiRef)\n        }\n      });\n    } else {\n      // The `props.rows` has changed since the last row grouping\n      // We must use the new `props.rows` on the new grouping\n      // This occurs because this event is triggered before the `useEffect` on the rows when both the grouping pre-processing and the rows changes on the same render\n      cache = createRowsInternalCache({\n        rows: props.rows,\n        getRowId: props.getRowId,\n        loading: props.loading,\n        rowCount: props.rowCount\n      });\n    }\n    throttledRowsChange({\n      cache,\n      throttle: false\n    });\n  }, [logger, apiRef, props.rows, props.getRowId, props.loading, props.rowCount, throttledRowsChange]);\n  const handleStrategyProcessorChange = React.useCallback(methodName => {\n    if (methodName === 'rowTreeCreation') {\n      groupRows();\n    }\n  }, [groupRows]);\n  const handleStrategyActivityChange = React.useCallback(() => {\n    // `rowTreeCreation` is the only processor ran when `strategyAvailabilityChange` is fired.\n    // All the other processors listen to `rowsSet` which will be published by the `groupRows` method below.\n    if (apiRef.current.getActiveStrategy('rowTree') !== gridRowGroupingNameSelector(apiRef)) {\n      groupRows();\n    }\n  }, [apiRef, groupRows]);\n  useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n  useGridApiEventHandler(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);\n\n  /**\n   * APPLIERS\n   */\n  const applyHydrateRowsProcessor = React.useCallback(() => {\n    apiRef.current.setState(state => {\n      const response = apiRef.current.unstable_applyPipeProcessors('hydrateRows', {\n        tree: gridRowTreeSelector(state, apiRef.current.instanceId),\n        treeDepths: gridRowTreeDepthsSelector(state, apiRef.current.instanceId),\n        dataRowIds: gridDataRowIdsSelector(state, apiRef.current.instanceId),\n        dataRowIdToModelLookup: gridRowsLookupSelector(state, apiRef.current.instanceId),\n        dataRowIdToIdLookup: gridRowsDataRowIdToIdLookupSelector(state, apiRef.current.instanceId)\n      });\n      return _extends({}, state, {\n        rows: _extends({}, state.rows, response, {\n          totalTopLevelRowCount: getTopLevelRowCount({\n            tree: response.tree,\n            rowCountProp: props.rowCount\n          })\n        })\n      });\n    });\n    apiRef.current.publishEvent('rowsSet');\n    apiRef.current.forceUpdate();\n  }, [apiRef, props.rowCount]);\n  useGridRegisterPipeApplier(apiRef, 'hydrateRows', applyHydrateRowsProcessor);\n  useGridApiMethod(apiRef, rowApi, 'public');\n  useGridApiMethod(apiRef, rowProApi, props.signature === GridSignature.DataGrid ? 'private' : 'public');\n  useGridApiMethod(apiRef, rowProPrivateApi, 'private');\n\n  // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`\n  // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n      return;\n    }\n    let isRowCountPropUpdated = false;\n    if (props.rowCount !== lastRowCount.current) {\n      isRowCountPropUpdated = true;\n      lastRowCount.current = props.rowCount;\n    }\n    const areNewRowsAlreadyInState = apiRef.current.caches.rows.rowsBeforePartialUpdates === props.rows;\n    const isNewLoadingAlreadyInState = apiRef.current.caches.rows.loadingPropBeforePartialUpdates === props.loading;\n    const isNewRowCountAlreadyInState = apiRef.current.caches.rows.rowCountPropBeforePartialUpdates === props.rowCount;\n\n    // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)\n    if (areNewRowsAlreadyInState) {\n      // If the loading prop has changed, we need to update its value in the state because it won't be done by `throttledRowsChange`\n      if (!isNewLoadingAlreadyInState) {\n        apiRef.current.setState(state => _extends({}, state, {\n          rows: _extends({}, state.rows, {\n            loading: props.loading\n          })\n        }));\n        apiRef.current.caches.rows.loadingPropBeforePartialUpdates = props.loading;\n        apiRef.current.forceUpdate();\n      }\n      if (!isNewRowCountAlreadyInState) {\n        apiRef.current.setState(state => _extends({}, state, {\n          rows: _extends({}, state.rows, {\n            totalRowCount: Math.max(props.rowCount || 0, state.rows.totalRowCount),\n            totalTopLevelRowCount: Math.max(props.rowCount || 0, state.rows.totalTopLevelRowCount)\n          })\n        }));\n        apiRef.current.caches.rows.rowCountPropBeforePartialUpdates = props.rowCount;\n        apiRef.current.forceUpdate();\n      }\n      if (!isRowCountPropUpdated) {\n        return;\n      }\n    }\n    logger.debug(`Updating all rows, new length ${props.rows?.length}`);\n    throttledRowsChange({\n      cache: createRowsInternalCache({\n        rows: props.rows,\n        getRowId: props.getRowId,\n        loading: props.loading,\n        rowCount: props.rowCount\n      }),\n      throttle: false\n    });\n  }, [props.rows, props.rowCount, props.getRowId, props.loading, logger, throttledRowsChange, apiRef]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from \"../../core/strategyProcessing/index.js\";\nimport { buildRootGroup, GRID_ROOT_GROUP_ID } from \"./gridRowsUtils.js\";\nconst createFlatRowTree = rows => {\n  const tree = {\n    [GRID_ROOT_GROUP_ID]: _extends({}, buildRootGroup(), {\n      children: rows\n    })\n  };\n  for (let i = 0; i < rows.length; i += 1) {\n    const rowId = rows[i];\n    tree[rowId] = {\n      id: rowId,\n      depth: 0,\n      parent: GRID_ROOT_GROUP_ID,\n      type: 'leaf',\n      groupingKey: null\n    };\n  }\n  return {\n    groupingName: GRID_DEFAULT_STRATEGY,\n    tree,\n    treeDepths: {\n      0: rows.length\n    },\n    dataRowIds: rows\n  };\n};\nconst updateFlatRowTree = ({\n  previousTree,\n  actions\n}) => {\n  const tree = _extends({}, previousTree);\n  const idsToRemoveFromRootGroup = {};\n  for (let i = 0; i < actions.remove.length; i += 1) {\n    const idToDelete = actions.remove[i];\n    idsToRemoveFromRootGroup[idToDelete] = true;\n    delete tree[idToDelete];\n  }\n  for (let i = 0; i < actions.insert.length; i += 1) {\n    const idToInsert = actions.insert[i];\n    tree[idToInsert] = {\n      id: idToInsert,\n      depth: 0,\n      parent: GRID_ROOT_GROUP_ID,\n      type: 'leaf',\n      groupingKey: null\n    };\n  }\n\n  // TODO rows v6: Support row unpinning\n\n  const rootGroup = tree[GRID_ROOT_GROUP_ID];\n  let rootGroupChildren = [...rootGroup.children, ...actions.insert];\n  if (Object.values(idsToRemoveFromRootGroup).length) {\n    rootGroupChildren = rootGroupChildren.filter(id => !idsToRemoveFromRootGroup[id]);\n  }\n  tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {\n    children: rootGroupChildren\n  });\n  return {\n    groupingName: GRID_DEFAULT_STRATEGY,\n    tree,\n    treeDepths: {\n      0: rootGroupChildren.length\n    },\n    dataRowIds: rootGroupChildren\n  };\n};\nconst flatRowTreeCreationMethod = params => {\n  if (params.updates.type === 'full') {\n    return createFlatRowTree(params.updates.rows);\n  }\n  return updateFlatRowTree({\n    previousTree: params.previousTree,\n    actions: params.updates.actions\n  });\n};\nexport const useGridRowsPreProcessors = apiRef => {\n  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'rowTreeCreation', flatRowTreeCreationMethod);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridSignature, useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridRowsLookupSelector } from \"../rows/gridRowsSelector.js\";\nimport { gridRowSelectionStateSelector, selectedGridRowsSelector, selectedIdsLookupSelector } from \"./gridRowSelectionSelector.js\";\nimport { gridPaginatedVisibleSortedGridRowIdsSelector } from \"../pagination/index.js\";\nimport { gridFocusCellSelector } from \"../focus/gridFocusStateSelector.js\";\nimport { gridExpandedSortedRowIdsSelector, gridFilterModelSelector } from \"../filter/gridFilterSelector.js\";\nimport { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from \"../../../colDef/index.js\";\nimport { GridCellModes } from \"../../../models/gridEditRowModel.js\";\nimport { isKeyboardEvent, isNavigationKey } from \"../../../utils/keyboardUtils.js\";\nimport { useGridVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { GRID_DETAIL_PANEL_TOGGLE_FIELD } from \"../../../constants/gridDetailPanelToggleField.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { isEventTargetInPortal } from \"../../../utils/domUtils.js\";\nimport { isMultipleRowSelectionEnabled } from \"./utils.js\";\nconst getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {\n  if (selectionModelProp == null) {\n    return selectionModelProp;\n  }\n  if (Array.isArray(selectionModelProp)) {\n    return selectionModelProp;\n  }\n  if (prevSelectionModel && prevSelectionModel[0] === selectionModelProp) {\n    return prevSelectionModel;\n  }\n  return [selectionModelProp];\n};\nexport const rowSelectionStateInitializer = (state, props) => _extends({}, state, {\n  rowSelection: props.rowSelection ? getSelectionModelPropValue(props.rowSelectionModel) ?? [] : []\n});\n\n/**\n * @requires useGridRows (state, method) - can be after\n * @requires useGridParamsApi (method) - can be after\n * @requires useGridFocus (state) - can be after\n * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)\n */\nexport const useGridRowSelection = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridSelection');\n  const runIfRowSelectionIsEnabled = callback => (...args) => {\n    if (props.rowSelection) {\n      callback(...args);\n    }\n  };\n  const propRowSelectionModel = React.useMemo(() => {\n    return getSelectionModelPropValue(props.rowSelectionModel, gridRowSelectionStateSelector(apiRef.current.state));\n  }, [apiRef, props.rowSelectionModel]);\n  const lastRowToggled = React.useRef(null);\n  apiRef.current.registerControlState({\n    stateId: 'rowSelection',\n    propModel: propRowSelectionModel,\n    propOnChange: props.onRowSelectionModelChange,\n    stateSelector: gridRowSelectionStateSelector,\n    changeEvent: 'rowSelectionChange'\n  });\n  const {\n    checkboxSelection,\n    disableRowSelectionOnClick,\n    isRowSelectable: propIsRowSelectable\n  } = props;\n  const canHaveMultipleSelection = isMultipleRowSelectionEnabled(props);\n  const visibleRows = useGridVisibleRows(apiRef, props);\n  const expandMouseRowRangeSelection = React.useCallback(id => {\n    let endId = id;\n    const startId = lastRowToggled.current ?? id;\n    const isSelected = apiRef.current.isRowSelected(id);\n    if (isSelected) {\n      const visibleRowIds = gridExpandedSortedRowIdsSelector(apiRef);\n      const startIndex = visibleRowIds.findIndex(rowId => rowId === startId);\n      const endIndex = visibleRowIds.findIndex(rowId => rowId === endId);\n      if (startIndex === endIndex) {\n        return;\n      }\n      if (startIndex > endIndex) {\n        endId = visibleRowIds[endIndex + 1];\n      } else {\n        endId = visibleRowIds[endIndex - 1];\n      }\n    }\n    lastRowToggled.current = id;\n    apiRef.current.selectRowRange({\n      startId,\n      endId\n    }, !isSelected);\n  }, [apiRef]);\n\n  /**\n   * API METHODS\n   */\n  const setRowSelectionModel = React.useCallback(model => {\n    if (props.signature === GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {\n      throw new Error(['MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\\n'));\n    }\n    const currentModel = gridRowSelectionStateSelector(apiRef.current.state);\n    if (currentModel !== model) {\n      logger.debug(`Setting selection model`);\n      apiRef.current.setState(state => _extends({}, state, {\n        rowSelection: props.rowSelection ? model : []\n      }));\n      apiRef.current.forceUpdate();\n    }\n  }, [apiRef, logger, props.rowSelection, props.signature, canHaveMultipleSelection]);\n  const isRowSelected = React.useCallback(id => gridRowSelectionStateSelector(apiRef.current.state).includes(id), [apiRef]);\n  const isRowSelectable = React.useCallback(id => {\n    if (props.rowSelection === false) {\n      return false;\n    }\n    if (propIsRowSelectable && !propIsRowSelectable(apiRef.current.getRowParams(id))) {\n      return false;\n    }\n    const rowNode = apiRef.current.getRowNode(id);\n    if (rowNode?.type === 'footer' || rowNode?.type === 'pinnedRow') {\n      return false;\n    }\n    return true;\n  }, [apiRef, props.rowSelection, propIsRowSelectable]);\n  const getSelectedRows = React.useCallback(() => selectedGridRowsSelector(apiRef), [apiRef]);\n  const selectRow = React.useCallback((id, isSelected = true, resetSelection = false) => {\n    if (!apiRef.current.isRowSelectable(id)) {\n      return;\n    }\n    lastRowToggled.current = id;\n    if (resetSelection) {\n      logger.debug(`Setting selection for row ${id}`);\n      apiRef.current.setRowSelectionModel(isSelected ? [id] : []);\n    } else {\n      logger.debug(`Toggling selection for row ${id}`);\n      const selection = gridRowSelectionStateSelector(apiRef.current.state);\n      const newSelection = selection.filter(el => el !== id);\n      if (isSelected) {\n        newSelection.push(id);\n      }\n      const isSelectionValid = newSelection.length < 2 || canHaveMultipleSelection;\n      if (isSelectionValid) {\n        apiRef.current.setRowSelectionModel(newSelection);\n      }\n    }\n  }, [apiRef, logger, canHaveMultipleSelection]);\n  const selectRows = React.useCallback((ids, isSelected = true, resetSelection = false) => {\n    logger.debug(`Setting selection for several rows`);\n    const selectableIds = ids.filter(id => apiRef.current.isRowSelectable(id));\n    let newSelection;\n    if (resetSelection) {\n      newSelection = isSelected ? selectableIds : [];\n    } else {\n      // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project\n      const selectionLookup = _extends({}, selectedIdsLookupSelector(apiRef));\n      selectableIds.forEach(id => {\n        if (isSelected) {\n          selectionLookup[id] = id;\n        } else {\n          delete selectionLookup[id];\n        }\n      });\n      newSelection = Object.values(selectionLookup);\n    }\n    const isSelectionValid = newSelection.length < 2 || canHaveMultipleSelection;\n    if (isSelectionValid) {\n      apiRef.current.setRowSelectionModel(newSelection);\n    }\n  }, [apiRef, logger, canHaveMultipleSelection]);\n  const selectRowRange = React.useCallback(({\n    startId,\n    endId\n  }, isSelected = true, resetSelection = false) => {\n    if (!apiRef.current.getRow(startId) || !apiRef.current.getRow(endId)) {\n      return;\n    }\n    logger.debug(`Expanding selection from row ${startId} to row ${endId}`);\n\n    // Using rows from all pages allow to select a range across several pages\n    const allPagesRowIds = gridExpandedSortedRowIdsSelector(apiRef);\n    const startIndex = allPagesRowIds.indexOf(startId);\n    const endIndex = allPagesRowIds.indexOf(endId);\n    const [start, end] = startIndex > endIndex ? [endIndex, startIndex] : [startIndex, endIndex];\n    const rowsBetweenStartAndEnd = allPagesRowIds.slice(start, end + 1);\n    apiRef.current.selectRows(rowsBetweenStartAndEnd, isSelected, resetSelection);\n  }, [apiRef, logger]);\n  const selectionPublicApi = {\n    selectRow,\n    setRowSelectionModel,\n    getSelectedRows,\n    isRowSelected,\n    isRowSelectable\n  };\n  const selectionPrivateApi = {\n    selectRows,\n    selectRowRange\n  };\n  useGridApiMethod(apiRef, selectionPublicApi, 'public');\n  useGridApiMethod(apiRef, selectionPrivateApi, props.signature === GridSignature.DataGrid ? 'private' : 'public');\n\n  /**\n   * EVENTS\n   */\n  const removeOutdatedSelection = React.useCallback(() => {\n    if (props.keepNonExistentRowsSelected) {\n      return;\n    }\n    const currentSelection = gridRowSelectionStateSelector(apiRef.current.state);\n    const rowsLookup = gridRowsLookupSelector(apiRef);\n\n    // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project\n    const selectionLookup = _extends({}, selectedIdsLookupSelector(apiRef));\n    let hasChanged = false;\n    currentSelection.forEach(id => {\n      if (!rowsLookup[id]) {\n        delete selectionLookup[id];\n        hasChanged = true;\n      }\n    });\n    if (hasChanged) {\n      apiRef.current.setRowSelectionModel(Object.values(selectionLookup));\n    }\n  }, [apiRef, props.keepNonExistentRowsSelected]);\n  const handleSingleRowSelection = React.useCallback((id, event) => {\n    const hasCtrlKey = event.metaKey || event.ctrlKey;\n\n    // multiple selection is only allowed if:\n    // - it is a checkboxSelection\n    // - it is a keyboard selection\n    // - Ctrl is pressed\n\n    const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);\n    const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;\n    const isSelected = apiRef.current.isRowSelected(id);\n    if (resetSelection) {\n      apiRef.current.selectRow(id, !isMultipleSelectionDisabled ? !isSelected : true, true);\n    } else {\n      apiRef.current.selectRow(id, !isSelected, false);\n    }\n  }, [apiRef, canHaveMultipleSelection, checkboxSelection]);\n  const handleRowClick = React.useCallback((params, event) => {\n    if (disableRowSelectionOnClick) {\n      return;\n    }\n    const field = event.target.closest(`.${gridClasses.cell}`)?.getAttribute('data-field');\n    if (field === GRID_CHECKBOX_SELECTION_COL_DEF.field) {\n      // click on checkbox should not trigger row selection\n      return;\n    }\n    if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {\n      // click to open the detail panel should not select the row\n      return;\n    }\n    if (field) {\n      const column = apiRef.current.getColumn(field);\n      if (column?.type === GRID_ACTIONS_COLUMN_TYPE) {\n        return;\n      }\n    }\n    const rowNode = apiRef.current.getRowNode(params.id);\n    if (rowNode.type === 'pinnedRow') {\n      return;\n    }\n    if (event.shiftKey && canHaveMultipleSelection) {\n      expandMouseRowRangeSelection(params.id);\n    } else {\n      handleSingleRowSelection(params.id, event);\n    }\n  }, [disableRowSelectionOnClick, canHaveMultipleSelection, apiRef, expandMouseRowRangeSelection, handleSingleRowSelection]);\n  const preventSelectionOnShift = React.useCallback((params, event) => {\n    if (canHaveMultipleSelection && event.shiftKey) {\n      window.getSelection()?.removeAllRanges();\n    }\n  }, [canHaveMultipleSelection]);\n  const handleRowSelectionCheckboxChange = React.useCallback((params, event) => {\n    if (canHaveMultipleSelection && event.nativeEvent.shiftKey) {\n      expandMouseRowRangeSelection(params.id);\n    } else {\n      apiRef.current.selectRow(params.id, params.value, !canHaveMultipleSelection);\n    }\n  }, [apiRef, expandMouseRowRangeSelection, canHaveMultipleSelection]);\n  const handleHeaderSelectionCheckboxChange = React.useCallback(params => {\n    const rowsToBeSelected = props.pagination && props.checkboxSelectionVisibleOnly && props.paginationMode === 'client' ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridExpandedSortedRowIdsSelector(apiRef);\n    const filterModel = gridFilterModelSelector(apiRef);\n    apiRef.current.selectRows(rowsToBeSelected, params.value, filterModel?.items.length > 0);\n  }, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination, props.paginationMode]);\n  const handleCellKeyDown = React.useCallback((params, event) => {\n    // Get the most recent cell mode because it may have been changed by another listener\n    if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.Edit) {\n      return;\n    }\n\n    // Ignore portal\n    // Do not apply shortcuts if the focus is not on the cell root component\n    if (isEventTargetInPortal(event)) {\n      return;\n    }\n    if (isNavigationKey(event.key) && event.shiftKey) {\n      // The cell that has focus after the keyboard navigation\n      const focusCell = gridFocusCellSelector(apiRef);\n      if (focusCell && focusCell.id !== params.id) {\n        event.preventDefault();\n        const isNextRowSelected = apiRef.current.isRowSelected(focusCell.id);\n        if (!canHaveMultipleSelection) {\n          apiRef.current.selectRow(focusCell.id, !isNextRowSelected, true);\n          return;\n        }\n        const newRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(focusCell.id);\n        const previousRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(params.id);\n        let start;\n        let end;\n        if (newRowIndex > previousRowIndex) {\n          if (isNextRowSelected) {\n            // We are navigating to the bottom of the page and adding selected rows\n            start = previousRowIndex;\n            end = newRowIndex - 1;\n          } else {\n            // We are navigating to the bottom of the page and removing selected rows\n            start = previousRowIndex;\n            end = newRowIndex;\n          }\n        } else {\n          // eslint-disable-next-line no-lonely-if\n          if (isNextRowSelected) {\n            // We are navigating to the top of the page and removing selected rows\n            start = newRowIndex + 1;\n            end = previousRowIndex;\n          } else {\n            // We are navigating to the top of the page and adding selected rows\n            start = newRowIndex;\n            end = previousRowIndex;\n          }\n        }\n        const rowsBetweenStartAndEnd = visibleRows.rows.slice(start, end + 1).map(row => row.id);\n        apiRef.current.selectRows(rowsBetweenStartAndEnd, !isNextRowSelected);\n        return;\n      }\n    }\n    if (event.key === ' ' && event.shiftKey) {\n      event.preventDefault();\n      handleSingleRowSelection(params.id, event);\n      return;\n    }\n    if (event.key === 'a' && (event.ctrlKey || event.metaKey)) {\n      event.preventDefault();\n      selectRows(apiRef.current.getAllRowIds(), true);\n    }\n  }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);\n  useGridApiEventHandler(apiRef, 'sortedRowsSet', runIfRowSelectionIsEnabled(removeOutdatedSelection));\n  useGridApiEventHandler(apiRef, 'rowClick', runIfRowSelectionIsEnabled(handleRowClick));\n  useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', runIfRowSelectionIsEnabled(handleRowSelectionCheckboxChange));\n  useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);\n  useGridApiEventHandler(apiRef, 'cellMouseDown', runIfRowSelectionIsEnabled(preventSelectionOnShift));\n  useGridApiEventHandler(apiRef, 'cellKeyDown', runIfRowSelectionIsEnabled(handleCellKeyDown));\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    if (propRowSelectionModel !== undefined) {\n      apiRef.current.setRowSelectionModel(propRowSelectionModel);\n    }\n  }, [apiRef, propRowSelectionModel, props.rowSelection]);\n  React.useEffect(() => {\n    if (!props.rowSelection) {\n      apiRef.current.setRowSelectionModel([]);\n    }\n  }, [apiRef, props.rowSelection]);\n  const isStateControlled = propRowSelectionModel != null;\n  React.useEffect(() => {\n    if (isStateControlled || !props.rowSelection) {\n      return;\n    }\n\n    // props.isRowSelectable changed\n    const currentSelection = gridRowSelectionStateSelector(apiRef.current.state);\n    if (isRowSelectable) {\n      const newSelection = currentSelection.filter(id => isRowSelectable(id));\n      if (newSelection.length < currentSelection.length) {\n        apiRef.current.setRowSelectionModel(newSelection);\n      }\n    }\n  }, [apiRef, isRowSelectable, isStateControlled, props.rowSelection]);\n  React.useEffect(() => {\n    if (!props.rowSelection || isStateControlled) {\n      return;\n    }\n    const currentSelection = gridRowSelectionStateSelector(apiRef.current.state);\n    if (!canHaveMultipleSelection && currentSelection.length > 1) {\n      // See https://github.com/mui/mui-x/issues/8455\n      apiRef.current.setRowSelectionModel([]);\n    }\n  }, [apiRef, canHaveMultipleSelection, checkboxSelection, isStateControlled, props.rowSelection]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridColumnLookupSelector } from \"../columns/gridColumnsSelector.js\";\nimport { gridSortedRowEntriesSelector, gridSortedRowIdsSelector, gridSortModelSelector } from \"./gridSortingSelector.js\";\nimport { GRID_ROOT_GROUP_ID, gridRowTreeSelector } from \"../rows/index.js\";\nimport { useFirstRender } from \"../../utils/useFirstRender.js\";\nimport { useGridRegisterStrategyProcessor, GRID_DEFAULT_STRATEGY } from \"../../core/strategyProcessing/index.js\";\nimport { buildAggregatedSortingApplier, mergeStateWithSortModel, getNextGridSortDirection, sanitizeSortModel } from \"./gridSortingUtils.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { getTreeNodeDescendants } from \"../rows/gridRowsUtils.js\";\nexport const sortingStateInitializer = (state, props) => {\n  const sortModel = props.sortModel ?? props.initialState?.sorting?.sortModel ?? [];\n  return _extends({}, state, {\n    sorting: {\n      sortModel: sanitizeSortModel(sortModel, props.disableMultipleColumnsSorting),\n      sortedRows: []\n    }\n  });\n};\n\n/**\n * @requires useGridRows (event)\n * @requires useGridColumns (event)\n */\nexport const useGridSorting = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridSorting');\n  apiRef.current.registerControlState({\n    stateId: 'sortModel',\n    propModel: props.sortModel,\n    propOnChange: props.onSortModelChange,\n    stateSelector: gridSortModelSelector,\n    changeEvent: 'sortModelChange'\n  });\n  const upsertSortModel = React.useCallback((field, sortItem) => {\n    const sortModel = gridSortModelSelector(apiRef);\n    const existingIdx = sortModel.findIndex(c => c.field === field);\n    let newSortModel = [...sortModel];\n    if (existingIdx > -1) {\n      if (sortItem?.sort == null) {\n        newSortModel.splice(existingIdx, 1);\n      } else {\n        newSortModel.splice(existingIdx, 1, sortItem);\n      }\n    } else {\n      newSortModel = [...sortModel, sortItem];\n    }\n    return newSortModel;\n  }, [apiRef]);\n  const createSortItem = React.useCallback((col, directionOverride) => {\n    const sortModel = gridSortModelSelector(apiRef);\n    const existing = sortModel.find(c => c.field === col.field);\n    if (existing) {\n      const nextSort = directionOverride === undefined ? getNextGridSortDirection(col.sortingOrder ?? props.sortingOrder, existing.sort) : directionOverride;\n      return nextSort === undefined ? undefined : _extends({}, existing, {\n        sort: nextSort\n      });\n    }\n    return {\n      field: col.field,\n      sort: directionOverride === undefined ? getNextGridSortDirection(col.sortingOrder ?? props.sortingOrder) : directionOverride\n    };\n  }, [apiRef, props.sortingOrder]);\n  const addColumnMenuItem = React.useCallback((columnMenuItems, colDef) => {\n    if (colDef == null || colDef.sortable === false || props.disableColumnSorting) {\n      return columnMenuItems;\n    }\n    const sortingOrder = colDef.sortingOrder || props.sortingOrder;\n    if (sortingOrder.some(item => !!item)) {\n      return [...columnMenuItems, 'columnMenuSortItem'];\n    }\n    return columnMenuItems;\n  }, [props.sortingOrder, props.disableColumnSorting]);\n\n  /**\n   * API METHODS\n   */\n  const applySorting = React.useCallback(() => {\n    apiRef.current.setState(state => {\n      if (props.sortingMode === 'server') {\n        logger.debug('Skipping sorting rows as sortingMode = server');\n        return _extends({}, state, {\n          sorting: _extends({}, state.sorting, {\n            sortedRows: getTreeNodeDescendants(gridRowTreeSelector(apiRef), GRID_ROOT_GROUP_ID, false)\n          })\n        });\n      }\n      const sortModel = gridSortModelSelector(state, apiRef.current.instanceId);\n      const sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);\n      const sortedRows = apiRef.current.applyStrategyProcessor('sorting', {\n        sortRowList\n      });\n      return _extends({}, state, {\n        sorting: _extends({}, state.sorting, {\n          sortedRows\n        })\n      });\n    });\n    apiRef.current.publishEvent('sortedRowsSet');\n    apiRef.current.forceUpdate();\n  }, [apiRef, logger, props.sortingMode]);\n  const setSortModel = React.useCallback(model => {\n    const currentModel = gridSortModelSelector(apiRef);\n    if (currentModel !== model) {\n      logger.debug(`Setting sort model`);\n      apiRef.current.setState(mergeStateWithSortModel(model, props.disableMultipleColumnsSorting));\n      apiRef.current.forceUpdate();\n      apiRef.current.applySorting();\n    }\n  }, [apiRef, logger, props.disableMultipleColumnsSorting]);\n  const sortColumn = React.useCallback((field, direction, allowMultipleSorting) => {\n    const column = apiRef.current.getColumn(field);\n    const sortItem = createSortItem(column, direction);\n    let sortModel;\n    if (!allowMultipleSorting || props.disableMultipleColumnsSorting) {\n      sortModel = sortItem?.sort == null ? [] : [sortItem];\n    } else {\n      sortModel = upsertSortModel(column.field, sortItem);\n    }\n    apiRef.current.setSortModel(sortModel);\n  }, [apiRef, upsertSortModel, createSortItem, props.disableMultipleColumnsSorting]);\n  const getSortModel = React.useCallback(() => gridSortModelSelector(apiRef), [apiRef]);\n  const getSortedRows = React.useCallback(() => {\n    const sortedRows = gridSortedRowEntriesSelector(apiRef);\n    return sortedRows.map(row => row.model);\n  }, [apiRef]);\n  const getSortedRowIds = React.useCallback(() => gridSortedRowIdsSelector(apiRef), [apiRef]);\n  const getRowIdFromRowIndex = React.useCallback(index => apiRef.current.getSortedRowIds()[index], [apiRef]);\n  const sortApi = {\n    getSortModel,\n    getSortedRows,\n    getSortedRowIds,\n    getRowIdFromRowIndex,\n    setSortModel,\n    sortColumn,\n    applySorting\n  };\n  useGridApiMethod(apiRef, sortApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const sortModelToExport = gridSortModelSelector(apiRef);\n    const shouldExportSortModel =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the model is controlled\n    props.sortModel != null ||\n    // Always export if the model has been initialized\n    props.initialState?.sorting?.sortModel != null ||\n    // Export if the model is not empty\n    sortModelToExport.length > 0;\n    if (!shouldExportSortModel) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      sorting: {\n        sortModel: sortModelToExport\n      }\n    });\n  }, [apiRef, props.sortModel, props.initialState?.sorting?.sortModel]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const sortModel = context.stateToRestore.sorting?.sortModel;\n    if (sortModel == null) {\n      return params;\n    }\n    apiRef.current.setState(mergeStateWithSortModel(sortModel, props.disableMultipleColumnsSorting));\n    return _extends({}, params, {\n      callbacks: [...params.callbacks, apiRef.current.applySorting]\n    });\n  }, [apiRef, props.disableMultipleColumnsSorting]);\n  const flatSortingMethod = React.useCallback(params => {\n    const rowTree = gridRowTreeSelector(apiRef);\n    const rootGroupNode = rowTree[GRID_ROOT_GROUP_ID];\n    const sortedChildren = params.sortRowList ? params.sortRowList(rootGroupNode.children.map(childId => rowTree[childId])) : [...rootGroupNode.children];\n    if (rootGroupNode.footerId != null) {\n      sortedChildren.push(rootGroupNode.footerId);\n    }\n    return sortedChildren;\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'sorting', flatSortingMethod);\n\n  /**\n   * EVENTS\n   */\n  const handleColumnHeaderClick = React.useCallback(({\n    field,\n    colDef\n  }, event) => {\n    if (!colDef.sortable || props.disableColumnSorting) {\n      return;\n    }\n    const allowMultipleSorting = event.shiftKey || event.metaKey || event.ctrlKey;\n    sortColumn(field, undefined, allowMultipleSorting);\n  }, [sortColumn, props.disableColumnSorting]);\n  const handleColumnHeaderKeyDown = React.useCallback(({\n    field,\n    colDef\n  }, event) => {\n    if (!colDef.sortable || props.disableColumnSorting) {\n      return;\n    }\n    // Ctrl + Enter opens the column menu\n    if (event.key === 'Enter' && !event.ctrlKey && !event.metaKey) {\n      sortColumn(field, undefined, event.shiftKey);\n    }\n  }, [sortColumn, props.disableColumnSorting]);\n  const handleColumnsChange = React.useCallback(() => {\n    // When the columns change we check that the sorted columns are still part of the dataset\n    const sortModel = gridSortModelSelector(apiRef);\n    const latestColumns = gridColumnLookupSelector(apiRef);\n    if (sortModel.length > 0) {\n      const newModel = sortModel.filter(sortItem => latestColumns[sortItem.field]);\n      if (newModel.length < sortModel.length) {\n        apiRef.current.setSortModel(newModel);\n      }\n    }\n  }, [apiRef]);\n  const handleStrategyProcessorChange = React.useCallback(methodName => {\n    if (methodName === 'sorting') {\n      apiRef.current.applySorting();\n    }\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'columnMenu', addColumnMenuItem);\n  useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);\n  useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);\n  useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);\n  useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);\n  useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n\n  /**\n   * 1ST RENDER\n   */\n  useFirstRender(() => {\n    apiRef.current.applySorting();\n  });\n\n  /**\n   * EFFECTS\n   */\n  useEnhancedEffect(() => {\n    if (props.sortModel !== undefined) {\n      apiRef.current.setSortModel(props.sortModel);\n    }\n  }, [apiRef, props.sortModel]);\n};","import * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from \"../columns/gridColumnsSelector.js\";\nimport { useGridSelector } from \"../../utils/useGridSelector.js\";\nimport { gridPageSelector, gridPageSizeSelector } from \"../pagination/gridPaginationSelector.js\";\nimport { gridRowCountSelector } from \"../rows/gridRowsSelector.js\";\nimport { gridRowsMetaSelector } from \"../rows/gridRowsMetaSelector.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridExpandedSortedRowEntriesSelector } from \"../filter/gridFilterSelector.js\";\nimport { gridDimensionsSelector } from \"../dimensions/index.js\";\n\n// Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js\n// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView\nfunction scrollIntoView(dimensions) {\n  const {\n    clientHeight,\n    scrollTop,\n    offsetHeight,\n    offsetTop\n  } = dimensions;\n  const elementBottom = offsetTop + offsetHeight;\n  // Always scroll to top when cell is higher than viewport to avoid scroll jump\n  // See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514\n  if (offsetHeight > clientHeight) {\n    return offsetTop;\n  }\n  if (elementBottom - clientHeight > scrollTop) {\n    return elementBottom - clientHeight;\n  }\n  if (offsetTop < scrollTop) {\n    return offsetTop;\n  }\n  return undefined;\n}\n\n/**\n * @requires useGridPagination (state) - can be after, async only\n * @requires useGridColumns (state) - can be after, async only\n * @requires useGridRows (state) - can be after, async only\n * @requires useGridRowsMeta (state) - can be after, async only\n * @requires useGridFilter (state)\n * @requires useGridColumnSpanning (method)\n */\nexport const useGridScroll = (apiRef, props) => {\n  const isRtl = useRtl();\n  const logger = useGridLogger(apiRef, 'useGridScroll');\n  const colRef = apiRef.current.columnHeadersContainerRef;\n  const virtualScrollerRef = apiRef.current.virtualScrollerRef;\n  const visibleSortedRows = useGridSelector(apiRef, gridExpandedSortedRowEntriesSelector);\n  const scrollToIndexes = React.useCallback(params => {\n    const dimensions = gridDimensionsSelector(apiRef.current.state);\n    const totalRowCount = gridRowCountSelector(apiRef);\n    const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n    const scrollToHeader = params.rowIndex == null;\n    if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {\n      return false;\n    }\n    logger.debug(`Scrolling to cell at row ${params.rowIndex}, col: ${params.colIndex} `);\n    let scrollCoordinates = {};\n    if (params.colIndex !== undefined) {\n      const columnPositions = gridColumnPositionsSelector(apiRef);\n      let cellWidth;\n      if (typeof params.rowIndex !== 'undefined') {\n        const rowId = visibleSortedRows[params.rowIndex]?.id;\n        const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);\n        if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {\n          cellWidth = cellColSpanInfo.cellProps.width;\n        }\n      }\n      if (typeof cellWidth === 'undefined') {\n        cellWidth = visibleColumns[params.colIndex].computedWidth;\n      }\n      // When using RTL, `scrollLeft` becomes negative, so we must ensure that we only compare values.\n      scrollCoordinates.left = scrollIntoView({\n        clientHeight: dimensions.viewportInnerSize.width,\n        scrollTop: Math.abs(virtualScrollerRef.current.scrollLeft),\n        offsetHeight: cellWidth,\n        offsetTop: columnPositions[params.colIndex]\n      });\n    }\n    if (params.rowIndex !== undefined) {\n      const rowsMeta = gridRowsMetaSelector(apiRef.current.state);\n      const page = gridPageSelector(apiRef);\n      const pageSize = gridPageSizeSelector(apiRef);\n      const elementIndex = !props.pagination ? params.rowIndex : params.rowIndex - page * pageSize;\n      const targetOffsetHeight = rowsMeta.positions[elementIndex + 1] ? rowsMeta.positions[elementIndex + 1] - rowsMeta.positions[elementIndex] : rowsMeta.currentPageTotalHeight - rowsMeta.positions[elementIndex];\n      scrollCoordinates.top = scrollIntoView({\n        clientHeight: dimensions.viewportInnerSize.height,\n        scrollTop: virtualScrollerRef.current.scrollTop,\n        offsetHeight: targetOffsetHeight,\n        offsetTop: rowsMeta.positions[elementIndex]\n      });\n    }\n    scrollCoordinates = apiRef.current.unstable_applyPipeProcessors('scrollToIndexes', scrollCoordinates, params);\n    if (typeof scrollCoordinates.left !== undefined || typeof scrollCoordinates.top !== undefined) {\n      apiRef.current.scroll(scrollCoordinates);\n      return true;\n    }\n    return false;\n  }, [logger, apiRef, virtualScrollerRef, props.pagination, visibleSortedRows]);\n  const scroll = React.useCallback(params => {\n    if (virtualScrollerRef.current && params.left !== undefined && colRef.current) {\n      const direction = isRtl ? -1 : 1;\n      colRef.current.scrollLeft = params.left;\n      virtualScrollerRef.current.scrollLeft = direction * params.left;\n      logger.debug(`Scrolling left: ${params.left}`);\n    }\n    if (virtualScrollerRef.current && params.top !== undefined) {\n      virtualScrollerRef.current.scrollTop = params.top;\n      logger.debug(`Scrolling top: ${params.top}`);\n    }\n    logger.debug(`Scrolling, updating container, and viewport`);\n  }, [virtualScrollerRef, isRtl, colRef, logger]);\n  const getScrollPosition = React.useCallback(() => {\n    if (!virtualScrollerRef?.current) {\n      return {\n        top: 0,\n        left: 0\n      };\n    }\n    return {\n      top: virtualScrollerRef.current.scrollTop,\n      left: virtualScrollerRef.current.scrollLeft\n    };\n  }, [virtualScrollerRef]);\n  const scrollApi = {\n    scroll,\n    scrollToIndexes,\n    getScrollPosition\n  };\n  useGridApiMethod(apiRef, scrollApi, 'public');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { throttle } from '@mui/x-internals/throttle';\nimport { useGridApiEventHandler, useGridApiOptionHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from \"../columns/index.js\";\nimport { gridDimensionsSelector } from \"./gridDimensionsSelectors.js\";\nimport { gridDensityFactorSelector } from \"../density/index.js\";\nimport { gridRenderContextSelector } from \"../virtualization/index.js\";\nimport { useGridSelector } from \"../../utils/index.js\";\nimport { getVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { gridRowsMetaSelector } from \"../rows/gridRowsMetaSelector.js\";\nimport { calculatePinnedRowsHeight } from \"../rows/gridRowsUtils.js\";\nimport { getTotalHeaderHeight } from \"../columns/gridColumnsUtils.js\";\nconst EMPTY_SIZE = {\n  width: 0,\n  height: 0\n};\nconst EMPTY_DIMENSIONS = {\n  isReady: false,\n  root: EMPTY_SIZE,\n  viewportOuterSize: EMPTY_SIZE,\n  viewportInnerSize: EMPTY_SIZE,\n  contentSize: EMPTY_SIZE,\n  minimumSize: EMPTY_SIZE,\n  hasScrollX: false,\n  hasScrollY: false,\n  scrollbarSize: 0,\n  headerHeight: 0,\n  groupHeaderHeight: 0,\n  headerFilterHeight: 0,\n  rowWidth: 0,\n  rowHeight: 0,\n  columnsTotalWidth: 0,\n  leftPinnedWidth: 0,\n  rightPinnedWidth: 0,\n  headersTotalHeight: 0,\n  topContainerHeight: 0,\n  bottomContainerHeight: 0\n};\nexport const dimensionsStateInitializer = state => {\n  const dimensions = EMPTY_DIMENSIONS;\n  return _extends({}, state, {\n    dimensions\n  });\n};\nexport function useGridDimensions(apiRef, props) {\n  const logger = useGridLogger(apiRef, 'useResizeContainer');\n  const errorShown = React.useRef(false);\n  const rootDimensionsRef = React.useRef(EMPTY_SIZE);\n  const dimensionsState = useGridSelector(apiRef, gridDimensionsSelector);\n  const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);\n  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);\n  const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n  const rowHeight = Math.floor(props.rowHeight * densityFactor);\n  const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);\n  const groupHeaderHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);\n  const headerFilterHeight = Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor);\n  const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);\n  const headersTotalHeight = getTotalHeaderHeight(apiRef, props);\n  const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);\n  const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);\n  const [savedSize, setSavedSize] = React.useState();\n  const debouncedSetSavedSize = React.useMemo(() => throttle(setSavedSize, props.resizeThrottleMs), [props.resizeThrottleMs]);\n  const previousSize = React.useRef();\n  const getRootDimensions = () => apiRef.current.state.dimensions;\n  const setDimensions = useEventCallback(dimensions => {\n    apiRef.current.setState(state => _extends({}, state, {\n      dimensions\n    }));\n  });\n  const resize = React.useCallback(() => {\n    const element = apiRef.current.mainElementRef.current;\n    if (!element) {\n      return;\n    }\n    const computedStyle = ownerWindow(element).getComputedStyle(element);\n    const newSize = {\n      width: parseFloat(computedStyle.width) || 0,\n      height: parseFloat(computedStyle.height) || 0\n    };\n    if (!previousSize.current || !areElementSizesEqual(previousSize.current, newSize)) {\n      apiRef.current.publishEvent('resize', newSize);\n      previousSize.current = newSize;\n    }\n  }, [apiRef]);\n  const getViewportPageSize = React.useCallback(() => {\n    const dimensions = gridDimensionsSelector(apiRef.current.state);\n    if (!dimensions.isReady) {\n      return 0;\n    }\n    const currentPage = getVisibleRows(apiRef, {\n      pagination: props.pagination,\n      paginationMode: props.paginationMode\n    });\n\n    // TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions\n    // to find out the maximum number of rows that can fit in the visible part of the grid\n    if (props.getRowHeight) {\n      const renderContext = gridRenderContextSelector(apiRef);\n      const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;\n      return Math.min(viewportPageSize - 1, currentPage.rows.length);\n    }\n    const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);\n    return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);\n  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);\n  const updateDimensions = React.useCallback(() => {\n    const rootElement = apiRef.current.rootElementRef.current;\n    const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);\n    const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);\n    const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;\n    const bottomContainerHeight = pinnedRowsHeight.bottom;\n    const nonPinnedColumnsTotalWidth = columnsTotalWidth - leftPinnedWidth - rightPinnedWidth;\n    const contentSize = {\n      width: nonPinnedColumnsTotalWidth,\n      height: rowsMeta.currentPageTotalHeight\n    };\n    let viewportOuterSize;\n    let viewportInnerSize;\n    let hasScrollX = false;\n    let hasScrollY = false;\n    if (props.autoHeight) {\n      hasScrollY = false;\n      hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);\n      viewportOuterSize = {\n        width: rootDimensionsRef.current.width,\n        height: topContainerHeight + bottomContainerHeight + contentSize.height\n      };\n      viewportInnerSize = {\n        width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),\n        height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))\n      };\n    } else {\n      viewportOuterSize = {\n        width: rootDimensionsRef.current.width,\n        height: rootDimensionsRef.current.height\n      };\n      viewportInnerSize = {\n        width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),\n        height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)\n      };\n      const content = contentSize;\n      const container = viewportInnerSize;\n      const hasScrollXIfNoYScrollBar = content.width > container.width;\n      const hasScrollYIfNoXScrollBar = content.height > container.height;\n      if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {\n        hasScrollY = hasScrollYIfNoXScrollBar;\n        hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;\n\n        // We recalculate the scroll y to consider the size of the x scrollbar.\n        if (hasScrollX) {\n          hasScrollY = content.height + scrollbarSize > container.height;\n        }\n      }\n      if (hasScrollY) {\n        viewportInnerSize.width -= scrollbarSize;\n      }\n      if (hasScrollX) {\n        viewportInnerSize.height -= scrollbarSize;\n      }\n    }\n    const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));\n    const minimumSize = {\n      width: columnsTotalWidth,\n      height: topContainerHeight + contentSize.height + bottomContainerHeight\n    };\n    const newDimensions = {\n      isReady: true,\n      root: rootDimensionsRef.current,\n      viewportOuterSize,\n      viewportInnerSize,\n      contentSize,\n      minimumSize,\n      hasScrollX,\n      hasScrollY,\n      scrollbarSize,\n      headerHeight,\n      groupHeaderHeight,\n      headerFilterHeight,\n      rowWidth,\n      rowHeight,\n      columnsTotalWidth,\n      leftPinnedWidth,\n      rightPinnedWidth,\n      headersTotalHeight,\n      topContainerHeight,\n      bottomContainerHeight\n    };\n    const prevDimensions = apiRef.current.state.dimensions;\n    setDimensions(newDimensions);\n    if (!areElementSizesEqual(newDimensions.viewportInnerSize, prevDimensions.viewportInnerSize)) {\n      apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);\n    }\n    apiRef.current.updateRenderContext?.();\n  }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);\n  const apiPublic = {\n    resize,\n    getRootDimensions\n  };\n  const apiPrivate = {\n    updateDimensions,\n    getViewportPageSize\n  };\n  useGridApiMethod(apiRef, apiPublic, 'public');\n  useGridApiMethod(apiRef, apiPrivate, 'private');\n  useEnhancedEffect(() => {\n    if (savedSize) {\n      updateDimensions();\n      apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);\n    }\n  }, [apiRef, savedSize, updateDimensions]);\n  const root = apiRef.current.rootElementRef.current;\n  useEnhancedEffect(() => {\n    if (!root) {\n      return;\n    }\n    const set = (k, v) => root.style.setProperty(k, v);\n    set('--DataGrid-width', `${dimensionsState.viewportOuterSize.width}px`);\n    set('--DataGrid-hasScrollX', `${Number(dimensionsState.hasScrollX)}`);\n    set('--DataGrid-hasScrollY', `${Number(dimensionsState.hasScrollY)}`);\n    set('--DataGrid-scrollbarSize', `${dimensionsState.scrollbarSize}px`);\n    set('--DataGrid-rowWidth', `${dimensionsState.rowWidth}px`);\n    set('--DataGrid-columnsTotalWidth', `${dimensionsState.columnsTotalWidth}px`);\n    set('--DataGrid-leftPinnedWidth', `${dimensionsState.leftPinnedWidth}px`);\n    set('--DataGrid-rightPinnedWidth', `${dimensionsState.rightPinnedWidth}px`);\n    set('--DataGrid-headerHeight', `${dimensionsState.headerHeight}px`);\n    set('--DataGrid-headersTotalHeight', `${dimensionsState.headersTotalHeight}px`);\n    set('--DataGrid-topContainerHeight', `${dimensionsState.topContainerHeight}px`);\n    set('--DataGrid-bottomContainerHeight', `${dimensionsState.bottomContainerHeight}px`);\n    set('--height', `${dimensionsState.rowHeight}px`);\n  }, [root, dimensionsState]);\n  const isFirstSizing = React.useRef(true);\n  const handleResize = React.useCallback(size => {\n    rootDimensionsRef.current = size;\n\n    // jsdom has no layout capabilities\n    const isJSDOM = /jsdom/.test(window.navigator.userAgent);\n    if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {\n      logger.error(['The parent DOM element of the data grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\\n'));\n      errorShown.current = true;\n    }\n    if (size.width === 0 && !errorShown.current && !isJSDOM) {\n      logger.error(['The parent DOM element of the data grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\\n'));\n      errorShown.current = true;\n    }\n    if (isFirstSizing.current) {\n      // We want to initialize the grid dimensions as soon as possible to avoid flickering\n      setSavedSize(size);\n      isFirstSizing.current = false;\n      return;\n    }\n    debouncedSetSavedSize(size);\n  }, [props.autoHeight, debouncedSetSavedSize, logger]);\n  useEnhancedEffect(updateDimensions, [updateDimensions]);\n  useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);\n  useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);\n  useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);\n  useGridApiEventHandler(apiRef, 'resize', handleResize);\n  useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);\n}\nfunction measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {\n  if (scrollbarSize !== undefined) {\n    return scrollbarSize;\n  }\n  if (rootElement === null || columnsTotalWidth === 0) {\n    return 0;\n  }\n  const doc = ownerDocument(rootElement);\n  const scrollDiv = doc.createElement('div');\n  scrollDiv.style.width = '99px';\n  scrollDiv.style.height = '99px';\n  scrollDiv.style.position = 'absolute';\n  scrollDiv.style.overflow = 'scroll';\n  scrollDiv.className = 'scrollDiv';\n  rootElement.appendChild(scrollDiv);\n  const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n  rootElement.removeChild(scrollDiv);\n  return size;\n}\n\n// Get rid of floating point imprecision errors\n// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477\nfunction roundToDecimalPlaces(value, decimals) {\n  return Math.round(value * 10 ** decimals) / 10 ** decimals;\n}\nfunction areElementSizesEqual(a, b) {\n  return a.width === b.width && a.height === b.height;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_debounce as debounce } from '@mui/utils';\nimport { useGridVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridSelector } from \"../../utils/useGridSelector.js\";\nimport { gridDensityFactorSelector } from \"../density/densitySelector.js\";\nimport { gridFilterModelSelector } from \"../filter/gridFilterSelector.js\";\nimport { gridPaginationSelector } from \"../pagination/gridPaginationSelector.js\";\nimport { gridSortModelSelector } from \"../sorting/gridSortingSelector.js\";\nimport { useGridRegisterPipeApplier } from \"../../core/pipeProcessing/index.js\";\nimport { gridPinnedRowsSelector } from \"./gridRowsSelector.js\";\nimport { DATA_GRID_PROPS_DEFAULT_VALUES } from \"../../../DataGrid/useDataGridProps.js\";\n\n// TODO: I think the row heights can now be encoded as a single `size` instead of `sizes.baseXxxx`\n\nexport const rowsMetaStateInitializer = state => _extends({}, state, {\n  rowsMeta: {\n    currentPageTotalHeight: 0,\n    positions: []\n  }\n});\nlet warnedOnceInvalidRowHeight = false;\nconst getValidRowHeight = (rowHeightProp, defaultRowHeight, warningMessage) => {\n  if (typeof rowHeightProp === 'number' && rowHeightProp > 0) {\n    return rowHeightProp;\n  }\n  if (process.env.NODE_ENV !== 'production' && !warnedOnceInvalidRowHeight && typeof rowHeightProp !== 'undefined' && rowHeightProp !== null) {\n    console.warn(warningMessage);\n    warnedOnceInvalidRowHeight = true;\n  }\n  return defaultRowHeight;\n};\nconst rowHeightWarning = [`MUI X: The \\`rowHeight\\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\\n');\nconst getRowHeightWarning = [`MUI X: The \\`getRowHeight\\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\\n');\n\n/**\n * @requires useGridPageSize (method)\n * @requires useGridPage (method)\n */\nexport const useGridRowsMeta = (apiRef, props) => {\n  const {\n    getRowHeight: getRowHeightProp,\n    getRowSpacing,\n    getEstimatedRowHeight\n  } = props;\n  const rowsHeightLookup = React.useRef(Object.create(null));\n\n  // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js\n  const lastMeasuredRowIndex = React.useRef(-1);\n  const hasRowWithAutoHeight = React.useRef(false);\n  const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n  const paginationState = useGridSelector(apiRef, gridPaginationSelector);\n  const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n  const currentPage = useGridVisibleRows(apiRef, props);\n  const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);\n  const validRowHeight = getValidRowHeight(props.rowHeight, DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, rowHeightWarning);\n  const rowHeight = Math.floor(validRowHeight * densityFactor);\n  const hydrateRowsMeta = React.useCallback(() => {\n    hasRowWithAutoHeight.current = false;\n    const calculateRowProcessedSizes = row => {\n      if (!rowsHeightLookup.current[row.id]) {\n        rowsHeightLookup.current[row.id] = {\n          sizes: {\n            baseCenter: rowHeight\n          },\n          isResized: false,\n          autoHeight: false,\n          needsFirstMeasurement: true // Assume all rows will need to be measured by default\n        };\n      }\n      const {\n        isResized,\n        needsFirstMeasurement,\n        sizes\n      } = rowsHeightLookup.current[row.id];\n      let baseRowHeight = typeof rowHeight === 'number' && rowHeight > 0 ? rowHeight : 52;\n      const existingBaseRowHeight = sizes.baseCenter;\n      if (isResized) {\n        // Do not recalculate resized row height and use the value from the lookup\n        baseRowHeight = existingBaseRowHeight;\n      } else if (getRowHeightProp) {\n        const rowHeightFromUser = getRowHeightProp(_extends({}, row, {\n          densityFactor\n        }));\n        if (rowHeightFromUser === 'auto') {\n          if (needsFirstMeasurement) {\n            const estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {\n              densityFactor\n            })) : rowHeight;\n\n            // If the row was not measured yet use the estimated row height\n            baseRowHeight = estimatedRowHeight ?? rowHeight;\n          } else {\n            baseRowHeight = existingBaseRowHeight;\n          }\n          hasRowWithAutoHeight.current = true;\n          rowsHeightLookup.current[row.id].autoHeight = true;\n        } else {\n          // Default back to base rowHeight if getRowHeight returns invalid value.\n          baseRowHeight = getValidRowHeight(rowHeightFromUser, rowHeight, getRowHeightWarning);\n          rowsHeightLookup.current[row.id].needsFirstMeasurement = false;\n          rowsHeightLookup.current[row.id].autoHeight = false;\n        }\n      } else {\n        rowsHeightLookup.current[row.id].needsFirstMeasurement = false;\n      }\n      const initialHeights = {\n        baseCenter: baseRowHeight\n      };\n      if (getRowSpacing) {\n        const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);\n        const spacing = getRowSpacing(_extends({}, row, {\n          isFirstVisible: indexRelativeToCurrentPage === 0,\n          isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,\n          indexRelativeToCurrentPage\n        }));\n        initialHeights.spacingTop = spacing.top ?? 0;\n        initialHeights.spacingBottom = spacing.bottom ?? 0;\n      }\n      const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);\n      rowsHeightLookup.current[row.id].sizes = processedSizes;\n      return processedSizes;\n    };\n    const positions = [];\n    const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {\n      positions.push(acc);\n      let otherSizes = 0;\n      const processedSizes = calculateRowProcessedSizes(row);\n      /* eslint-disable-next-line guard-for-in */\n      for (const key in processedSizes) {\n        const value = processedSizes[key];\n        if (key !== 'baseCenter') {\n          otherSizes += value;\n        }\n      }\n      return acc + processedSizes.baseCenter + otherSizes;\n    }, 0);\n    pinnedRows?.top?.forEach(row => {\n      calculateRowProcessedSizes(row);\n    });\n    pinnedRows?.bottom?.forEach(row => {\n      calculateRowProcessedSizes(row);\n    });\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        rowsMeta: {\n          currentPageTotalHeight,\n          positions\n        }\n      });\n    });\n    if (!hasRowWithAutoHeight.current) {\n      // No row has height=auto, so all rows are already measured\n      lastMeasuredRowIndex.current = Infinity;\n    }\n    apiRef.current.forceUpdate();\n  }, [apiRef, currentPage.rows, rowHeight, getRowHeightProp, getRowSpacing, getEstimatedRowHeight, pinnedRows, densityFactor]);\n  const getRowHeight = React.useCallback(rowId => {\n    const height = rowsHeightLookup.current[rowId];\n    return height ? height.sizes.baseCenter : rowHeight;\n  }, [rowHeight]);\n  const getRowInternalSizes = rowId => rowsHeightLookup.current[rowId]?.sizes;\n  const setRowHeight = React.useCallback((id, height) => {\n    rowsHeightLookup.current[id].sizes.baseCenter = height;\n    rowsHeightLookup.current[id].isResized = true;\n    rowsHeightLookup.current[id].needsFirstMeasurement = false;\n    hydrateRowsMeta();\n  }, [hydrateRowsMeta]);\n  const debouncedHydrateRowsMeta = React.useMemo(() => debounce(hydrateRowsMeta, props.rowPositionsDebounceMs), [hydrateRowsMeta, props.rowPositionsDebounceMs]);\n  const storeMeasuredRowHeight = React.useCallback((id, height) => {\n    if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {\n      return;\n    }\n\n    // Only trigger hydration if the value is different, otherwise we trigger a loop\n    const needsHydration = rowsHeightLookup.current[id].sizes.baseCenter !== height;\n    rowsHeightLookup.current[id].needsFirstMeasurement = false;\n    rowsHeightLookup.current[id].sizes.baseCenter = height;\n    if (needsHydration) {\n      debouncedHydrateRowsMeta();\n    }\n  }, [debouncedHydrateRowsMeta]);\n  const rowHasAutoHeight = React.useCallback(id => {\n    return rowsHeightLookup.current[id]?.autoHeight || false;\n  }, []);\n  const getLastMeasuredRowIndex = React.useCallback(() => {\n    return lastMeasuredRowIndex.current;\n  }, []);\n  const setLastMeasuredRowIndex = React.useCallback(index => {\n    if (hasRowWithAutoHeight.current && index > lastMeasuredRowIndex.current) {\n      lastMeasuredRowIndex.current = index;\n    }\n  }, []);\n  const resetRowHeights = React.useCallback(() => {\n    rowsHeightLookup.current = {};\n    hydrateRowsMeta();\n  }, [hydrateRowsMeta]);\n\n  // The effect is used to build the rows meta data - currentPageTotalHeight and positions.\n  // Because of variable row height this is needed for the virtualization\n  React.useEffect(() => {\n    hydrateRowsMeta();\n  }, [rowHeight, filterModel, paginationState, sortModel, hydrateRowsMeta]);\n  useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);\n  const rowsMetaApi = {\n    unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,\n    unstable_getRowHeight: getRowHeight,\n    unstable_getRowInternalSizes: getRowInternalSizes,\n    unstable_setRowHeight: setRowHeight,\n    unstable_storeRowHeightMeasurement: storeMeasuredRowHeight,\n    resetRowHeights\n  };\n  const rowsMetaPrivateApi = {\n    getLastMeasuredRowIndex,\n    rowHasAutoHeight\n  };\n  useGridApiMethod(apiRef, rowsMetaApi, 'public');\n  useGridApiMethod(apiRef, rowsMetaPrivateApi, 'private');\n};","import * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\n/**\n * @requires useGridColumns (method, event)\n * @requires useGridParamsApi (method)\n */\nexport const useGridColumnSpanning = apiRef => {\n  const lookup = React.useRef({});\n  const getCellColSpanInfo = (rowId, columnIndex) => {\n    return lookup.current[rowId]?.[columnIndex];\n  };\n  const resetColSpan = () => {\n    lookup.current = {};\n  };\n\n  // Calculate `colSpan` for each cell in the row\n  const calculateColSpan = React.useCallback(({\n    rowId,\n    minFirstColumn,\n    maxLastColumn,\n    columns\n  }) => {\n    for (let i = minFirstColumn; i < maxLastColumn; i += 1) {\n      const cellProps = calculateCellColSpan({\n        apiRef,\n        lookup: lookup.current,\n        columnIndex: i,\n        rowId,\n        minFirstColumnIndex: minFirstColumn,\n        maxLastColumnIndex: maxLastColumn,\n        columns\n      });\n      if (cellProps.colSpan > 1) {\n        i += cellProps.colSpan - 1;\n      }\n    }\n  }, [apiRef]);\n  const columnSpanningPublicApi = {\n    unstable_getCellColSpanInfo: getCellColSpanInfo\n  };\n  const columnSpanningPrivateApi = {\n    resetColSpan,\n    calculateColSpan\n  };\n  useGridApiMethod(apiRef, columnSpanningPublicApi, 'public');\n  useGridApiMethod(apiRef, columnSpanningPrivateApi, 'private');\n  useGridApiEventHandler(apiRef, 'columnOrderChange', resetColSpan);\n};\nfunction calculateCellColSpan(params) {\n  const {\n    apiRef,\n    lookup,\n    columnIndex,\n    rowId,\n    minFirstColumnIndex,\n    maxLastColumnIndex,\n    columns\n  } = params;\n  const columnsLength = columns.length;\n  const column = columns[columnIndex];\n  const row = apiRef.current.getRow(rowId);\n  const value = apiRef.current.getRowValue(row, column);\n  const colSpan = typeof column.colSpan === 'function' ? column.colSpan(value, row, column, apiRef) : column.colSpan;\n  if (!colSpan || colSpan === 1) {\n    setCellColSpanInfo(lookup, rowId, columnIndex, {\n      spannedByColSpan: false,\n      cellProps: {\n        colSpan: 1,\n        width: column.computedWidth\n      }\n    });\n    return {\n      colSpan: 1\n    };\n  }\n  let width = column.computedWidth;\n  for (let j = 1; j < colSpan; j += 1) {\n    const nextColumnIndex = columnIndex + j;\n    // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).\n    if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {\n      const nextColumn = columns[nextColumnIndex];\n      width += nextColumn.computedWidth;\n      setCellColSpanInfo(lookup, rowId, columnIndex + j, {\n        spannedByColSpan: true,\n        rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),\n        leftVisibleCellIndex: columnIndex\n      });\n    }\n    setCellColSpanInfo(lookup, rowId, columnIndex, {\n      spannedByColSpan: false,\n      cellProps: {\n        colSpan,\n        width\n      }\n    });\n  }\n  return {\n    colSpan\n  };\n}\nfunction setCellColSpanInfo(lookup, rowId, columnIndex, cellColSpanInfo) {\n  if (!lookup[rowId]) {\n    lookup[rowId] = {};\n  }\n  lookup[rowId][columnIndex] = cellColSpanInfo;\n}","import { isLeaf } from \"../../../models/gridColumnGrouping.js\";\nimport { isDeepEqual } from \"../../../utils/utils.js\";\n// This is the recurrence function that help writing `unwrapGroupingColumnModel()`\nconst recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplete) => {\n  if (isLeaf(columnGroupNode)) {\n    if (unwrappedGroupingModelToComplete[columnGroupNode.field] !== undefined) {\n      throw new Error([`MUI X: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplete[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\\n'));\n    }\n    unwrappedGroupingModelToComplete[columnGroupNode.field] = parents;\n    return;\n  }\n  const {\n    groupId,\n    children\n  } = columnGroupNode;\n  children.forEach(child => {\n    recurrentUnwrapGroupingColumnModel(child, [...parents, groupId], unwrappedGroupingModelToComplete);\n  });\n};\n\n/**\n * This is a function that provide for each column the array of its parents.\n * Parents are ordered from the root to the leaf.\n * @param columnGroupingModel The model such as provided in DataGrid props\n * @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`\n */\nexport const unwrapGroupingColumnModel = columnGroupingModel => {\n  if (!columnGroupingModel) {\n    return {};\n  }\n  const unwrappedSubTree = {};\n  columnGroupingModel.forEach(columnGroupNode => {\n    recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);\n  });\n  return unwrappedSubTree;\n};\nexport const getColumnGroupsHeaderStructure = (orderedColumns, unwrappedGroupingModel, pinnedFields) => {\n  const getParents = field => unwrappedGroupingModel[field] ?? [];\n  const groupingHeaderStructure = [];\n  const maxDepth = Math.max(...orderedColumns.map(field => getParents(field).length));\n  const haveSameParents = (field1, field2, depth) => isDeepEqual(getParents(field1).slice(0, depth + 1), getParents(field2).slice(0, depth + 1));\n  const haveDifferentContainers = (field1, field2) => {\n    if (pinnedFields?.left && pinnedFields.left.includes(field1) && !pinnedFields.left.includes(field2)) {\n      return true;\n    }\n    if (pinnedFields?.right && !pinnedFields.right.includes(field1) && pinnedFields.right.includes(field2)) {\n      return true;\n    }\n    return false;\n  };\n  for (let depth = 0; depth < maxDepth; depth += 1) {\n    const depthStructure = orderedColumns.reduce((structure, newField) => {\n      const groupId = getParents(newField)[depth] ?? null;\n      if (structure.length === 0) {\n        return [{\n          columnFields: [newField],\n          groupId\n        }];\n      }\n      const lastGroup = structure[structure.length - 1];\n      const prevField = lastGroup.columnFields[lastGroup.columnFields.length - 1];\n      const prevGroupId = lastGroup.groupId;\n      if (prevGroupId !== groupId || !haveSameParents(prevField, newField, depth) ||\n      // Fix for https://github.com/mui/mui-x/issues/7041\n      haveDifferentContainers(prevField, newField)) {\n        // It's a new group\n        return [...structure, {\n          columnFields: [newField],\n          groupId\n        }];\n      }\n\n      // It extends the previous group\n      return [...structure.slice(0, structure.length - 1), {\n        columnFields: [...lastGroup.columnFields, newField],\n        groupId\n      }];\n    }, []);\n    groupingHeaderStructure.push(depthStructure);\n  }\n  return groupingHeaderStructure;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"groupId\", \"children\"];\nimport * as React from 'react';\nimport { isLeaf } from \"../../../models/gridColumnGrouping.js\";\nimport { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector } from \"./gridColumnGroupsSelector.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from \"./gridColumnGroupsUtils.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from \"../columns/index.js\";\nconst createGroupLookup = columnGroupingModel => {\n  let groupLookup = {};\n  columnGroupingModel.forEach(node => {\n    if (isLeaf(node)) {\n      return;\n    }\n    const {\n        groupId,\n        children\n      } = node,\n      other = _objectWithoutPropertiesLoose(node, _excluded);\n    if (!groupId) {\n      throw new Error('MUI X: An element of the columnGroupingModel does not have either `field` or `groupId`.');\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (!children) {\n        console.warn(`MUI X: group groupId=${groupId} has no children.`);\n      }\n    }\n    const groupParam = _extends({}, other, {\n      groupId\n    });\n    const subTreeLookup = createGroupLookup(children);\n    if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {\n      throw new Error(`MUI X: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);\n    }\n    groupLookup = _extends({}, groupLookup, subTreeLookup, {\n      [groupId]: groupParam\n    });\n  });\n  return _extends({}, groupLookup);\n};\nexport const columnGroupsStateInitializer = (state, props, apiRef) => {\n  if (!props.columnGroupingModel) {\n    return state;\n  }\n  const columnFields = gridColumnFieldsSelector(apiRef);\n  const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);\n  const groupLookup = createGroupLookup(props.columnGroupingModel ?? []);\n  const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);\n  const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, apiRef.current.state.pinnedColumns ?? {});\n  const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => unwrappedGroupingModel[field]?.length ?? 0));\n  return _extends({}, state, {\n    columnGrouping: {\n      lookup: groupLookup,\n      unwrappedGroupingModel,\n      headerStructure: columnGroupsHeaderStructure,\n      maxDepth\n    }\n  });\n};\n\n/**\n * @requires useGridColumns (method, event)\n * @requires useGridParamsApi (method)\n */\nexport const useGridColumnGrouping = (apiRef, props) => {\n  /**\n   * API METHODS\n   */\n  const getColumnGroupPath = React.useCallback(field => {\n    const unwrappedGroupingModel = gridColumnGroupsUnwrappedModelSelector(apiRef);\n    return unwrappedGroupingModel[field] ?? [];\n  }, [apiRef]);\n  const getAllGroupDetails = React.useCallback(() => {\n    const columnGroupLookup = gridColumnGroupsLookupSelector(apiRef);\n    return columnGroupLookup;\n  }, [apiRef]);\n  const columnGroupingApi = {\n    getColumnGroupPath,\n    getAllGroupDetails\n  };\n  useGridApiMethod(apiRef, columnGroupingApi, 'public');\n  const handleColumnIndexChange = React.useCallback(() => {\n    const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);\n    apiRef.current.setState(state => {\n      const orderedFields = state.columns?.orderedFields ?? [];\n      const pinnedColumns = state.pinnedColumns ?? {};\n      const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel, pinnedColumns);\n      return _extends({}, state, {\n        columnGrouping: _extends({}, state.columnGrouping, {\n          headerStructure: columnGroupsHeaderStructure\n        })\n      });\n    });\n  }, [apiRef, props.columnGroupingModel]);\n  const updateColumnGroupingState = React.useCallback(columnGroupingModel => {\n    // @ts-expect-error Move this logic to `Pro` package\n    const pinnedColumns = apiRef.current.getPinnedColumns?.() ?? {};\n    const columnFields = gridColumnFieldsSelector(apiRef);\n    const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);\n    const groupLookup = createGroupLookup(columnGroupingModel ?? []);\n    const unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel ?? []);\n    const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, pinnedColumns);\n    const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => unwrappedGroupingModel[field]?.length ?? 0));\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        columnGrouping: {\n          lookup: groupLookup,\n          unwrappedGroupingModel,\n          headerStructure: columnGroupsHeaderStructure,\n          maxDepth\n        }\n      });\n    });\n  }, [apiRef]);\n  useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);\n  useGridApiEventHandler(apiRef, 'columnsChange', () => {\n    updateColumnGroupingState(props.columnGroupingModel);\n  });\n  useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', () => {\n    updateColumnGroupingState(props.columnGroupingModel);\n  });\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    updateColumnGroupingState(props.columnGroupingModel);\n  }, [updateColumnGroupingState, props.columnGroupingModel]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport useLazyRef from '@mui/utils/useLazyRef';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterCol, findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, findParentElementFromClassName, findLeftPinnedHeadersAfterCol, findRightPinnedHeadersBeforeCol, escapeOperandAttributeSelector } from \"../../../utils/domUtils.js\";\nimport { DEFAULT_GRID_AUTOSIZE_OPTIONS } from \"./gridColumnResizeApi.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { useGridApiEventHandler, useGridApiMethod, useGridApiOptionHandler, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from \"../../utils/index.js\";\nimport { gridVirtualizationColumnEnabledSelector } from \"../virtualization/index.js\";\nimport { createControllablePromise } from \"../../../utils/createControllablePromise.js\";\nimport { clamp } from \"../../../utils/utils.js\";\nimport { useTimeout } from \"../../utils/useTimeout.js\";\nimport { GridPinnedColumnPosition } from \"../columns/gridColumnsInterfaces.js\";\nimport { gridColumnsStateSelector } from \"../columns/index.js\";\nfunction trackFinger(event, currentTouchId) {\n  if (currentTouchId !== undefined && event.changedTouches) {\n    for (let i = 0; i < event.changedTouches.length; i += 1) {\n      const touch = event.changedTouches[i];\n      if (touch.identifier === currentTouchId) {\n        return {\n          x: touch.clientX,\n          y: touch.clientY\n        };\n      }\n    }\n    return false;\n  }\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n}\nfunction computeNewWidth(initialOffsetToSeparator, clickX, columnBounds, resizeDirection) {\n  let newWidth = initialOffsetToSeparator;\n  if (resizeDirection === 'Right') {\n    newWidth += clickX - columnBounds.left;\n  } else {\n    newWidth += columnBounds.right - clickX;\n  }\n  return newWidth;\n}\nfunction computeOffsetToSeparator(clickX, columnBounds, resizeDirection) {\n  if (resizeDirection === 'Left') {\n    return clickX - columnBounds.left;\n  }\n  return columnBounds.right - clickX;\n}\nfunction flipResizeDirection(side) {\n  if (side === 'Right') {\n    return 'Left';\n  }\n  return 'Right';\n}\nfunction getResizeDirection(separator, isRtl) {\n  const side = separator.classList.contains(gridClasses['columnSeparator--sideRight']) ? 'Right' : 'Left';\n  if (isRtl) {\n    // Resizing logic should be mirrored in the RTL case\n    return flipResizeDirection(side);\n  }\n  return side;\n}\nfunction preventClick(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\n/**\n * Checker that returns a promise that resolves when the column virtualization\n * is disabled.\n */\nfunction useColumnVirtualizationDisabled(apiRef) {\n  const promise = React.useRef();\n  const selector = () => gridVirtualizationColumnEnabledSelector(apiRef);\n  const value = useGridSelector(apiRef, selector);\n  React.useEffect(() => {\n    if (promise.current && value === false) {\n      promise.current.resolve();\n      promise.current = undefined;\n    }\n  });\n  const asyncCheck = () => {\n    if (!promise.current) {\n      if (selector() === false) {\n        return Promise.resolve();\n      }\n      promise.current = createControllablePromise();\n    }\n    return promise.current;\n  };\n  return asyncCheck;\n}\n\n/**\n * Basic statistical outlier detection, checks if the value is `F * IQR` away from\n * the Q1 and Q3 boundaries. IQR: interquartile range.\n */\nfunction excludeOutliers(inputValues, factor) {\n  if (inputValues.length < 4) {\n    return inputValues;\n  }\n  const values = inputValues.slice();\n  values.sort((a, b) => a - b);\n  const q1 = values[Math.floor(values.length * 0.25)];\n  const q3 = values[Math.floor(values.length * 0.75) - 1];\n  const iqr = q3 - q1;\n\n  // We make a small adjustment if `iqr < 5` for the cases where the IQR is\n  // very small (for example zero) due to very close by values in the input data.\n  // Otherwise, with an IQR of `0`, anything outside that would be considered\n  // an outlier, but it makes more sense visually to allow for this 5px variance\n  // rather than showing a cropped cell.\n  const deviation = iqr < 5 ? 5 : iqr * factor;\n  return values.filter(v => v > q1 - deviation && v < q3 + deviation);\n}\nfunction extractColumnWidths(apiRef, options, columns) {\n  const widthByField = {};\n  const root = apiRef.current.rootElementRef.current;\n  root.classList.add(gridClasses.autosizing);\n  columns.forEach(column => {\n    const cells = findGridCells(apiRef.current, column.field);\n    const widths = cells.map(cell => {\n      return cell.getBoundingClientRect().width ?? 0;\n    });\n    const filteredWidths = options.includeOutliers ? widths : excludeOutliers(widths, options.outliersFactor);\n    if (options.includeHeaders) {\n      const header = findGridHeader(apiRef.current, column.field);\n      if (header) {\n        const title = header.querySelector(`.${gridClasses.columnHeaderTitle}`);\n        const content = header.querySelector(`.${gridClasses.columnHeaderTitleContainerContent}`);\n        const iconContainer = header.querySelector(`.${gridClasses.iconButtonContainer}`);\n        const menuContainer = header.querySelector(`.${gridClasses.menuIcon}`);\n        const element = title ?? content;\n        const style = window.getComputedStyle(header, null);\n        const paddingWidth = parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n        const contentWidth = element.scrollWidth + 1;\n        const width = contentWidth + paddingWidth + (iconContainer?.clientWidth ?? 0) + (menuContainer?.clientWidth ?? 0);\n        filteredWidths.push(width);\n      }\n    }\n    const hasColumnMin = column.minWidth !== -Infinity && column.minWidth !== undefined;\n    const hasColumnMax = column.maxWidth !== Infinity && column.maxWidth !== undefined;\n    const min = hasColumnMin ? column.minWidth : 0;\n    const max = hasColumnMax ? column.maxWidth : Infinity;\n    const maxContent = filteredWidths.length === 0 ? 0 : Math.max(...filteredWidths);\n    widthByField[column.field] = clamp(maxContent, min, max);\n  });\n  root.classList.remove(gridClasses.autosizing);\n  return widthByField;\n}\nexport const columnResizeStateInitializer = state => _extends({}, state, {\n  columnResize: {\n    resizingColumnField: ''\n  }\n});\nfunction createResizeRefs() {\n  return {\n    colDef: undefined,\n    initialColWidth: 0,\n    initialTotalWidth: 0,\n    previousMouseClickEvent: undefined,\n    columnHeaderElement: undefined,\n    headerFilterElement: undefined,\n    groupHeaderElements: [],\n    cellElements: [],\n    leftPinnedCellsAfter: [],\n    rightPinnedCellsBefore: [],\n    fillerLeft: undefined,\n    fillerRight: undefined,\n    leftPinnedHeadersAfter: [],\n    rightPinnedHeadersBefore: []\n  };\n}\n\n/**\n * @requires useGridColumns (method, event)\n * TODO: improve experience for last column\n */\nexport const useGridColumnResize = (apiRef, props) => {\n  const isRtl = useRtl();\n  const logger = useGridLogger(apiRef, 'useGridColumnResize');\n  const refs = useLazyRef(createResizeRefs).current;\n\n  // To improve accessibility, the separator has padding on both sides.\n  // Clicking inside the padding area should be treated as a click in the separator.\n  // This ref stores the offset between the click and the separator.\n  const initialOffsetToSeparator = React.useRef();\n  const resizeDirection = React.useRef();\n  const stopResizeEventTimeout = useTimeout();\n  const touchId = React.useRef();\n  const updateWidth = newWidth => {\n    logger.debug(`Updating width to ${newWidth} for col ${refs.colDef.field}`);\n    const prevWidth = refs.columnHeaderElement.offsetWidth;\n    const widthDiff = newWidth - prevWidth;\n    const columnWidthDiff = newWidth - refs.initialColWidth;\n    const newTotalWidth = refs.initialTotalWidth + columnWidthDiff;\n    apiRef.current.rootElementRef?.current?.style.setProperty('--DataGrid-rowWidth', `${newTotalWidth}px`);\n    refs.colDef.computedWidth = newWidth;\n    refs.colDef.width = newWidth;\n    refs.colDef.flex = 0;\n    refs.columnHeaderElement.style.width = `${newWidth}px`;\n    const headerFilterElement = refs.headerFilterElement;\n    if (headerFilterElement) {\n      headerFilterElement.style.width = `${newWidth}px`;\n    }\n    refs.groupHeaderElements.forEach(element => {\n      const div = element;\n      let finalWidth;\n      if (div.getAttribute('aria-colspan') === '1') {\n        finalWidth = `${newWidth}px`;\n      } else {\n        // Cell with colspan > 1 cannot be just updated width new width.\n        // Instead, we add width diff to the current width.\n        finalWidth = `${div.offsetWidth + widthDiff}px`;\n      }\n      div.style.width = finalWidth;\n    });\n    refs.cellElements.forEach(element => {\n      const div = element;\n      let finalWidth;\n      if (div.getAttribute('aria-colspan') === '1') {\n        finalWidth = `${newWidth}px`;\n      } else {\n        // Cell with colspan > 1 cannot be just updated width new width.\n        // Instead, we add width diff to the current width.\n        finalWidth = `${div.offsetWidth + widthDiff}px`;\n      }\n      div.style.setProperty('--width', finalWidth);\n    });\n    const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, refs.colDef.field);\n    if (pinnedPosition === GridPinnedColumnPosition.LEFT) {\n      updateProperty(refs.fillerLeft, 'width', widthDiff);\n      refs.leftPinnedCellsAfter.forEach(cell => {\n        updateProperty(cell, 'left', widthDiff);\n      });\n      refs.leftPinnedHeadersAfter.forEach(header => {\n        updateProperty(header, 'left', widthDiff);\n      });\n    }\n    if (pinnedPosition === GridPinnedColumnPosition.RIGHT) {\n      updateProperty(refs.fillerRight, 'width', widthDiff);\n      refs.rightPinnedCellsBefore.forEach(cell => {\n        updateProperty(cell, 'right', widthDiff);\n      });\n      refs.rightPinnedHeadersBefore.forEach(header => {\n        updateProperty(header, 'right', widthDiff);\n      });\n    }\n  };\n  const finishResize = nativeEvent => {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    stopListening();\n\n    // Prevent double-clicks from being interpreted as two separate clicks\n    if (refs.previousMouseClickEvent) {\n      const prevEvent = refs.previousMouseClickEvent;\n      const prevTimeStamp = prevEvent.timeStamp;\n      const prevClientX = prevEvent.clientX;\n      const prevClientY = prevEvent.clientY;\n\n      // Check if the current event is part of a double-click\n      if (nativeEvent.timeStamp - prevTimeStamp < 300 && nativeEvent.clientX === prevClientX && nativeEvent.clientY === prevClientY) {\n        refs.previousMouseClickEvent = undefined;\n        apiRef.current.publishEvent('columnResizeStop', null, nativeEvent);\n        return;\n      }\n    }\n    if (refs.colDef) {\n      apiRef.current.setColumnWidth(refs.colDef.field, refs.colDef.width);\n      logger.debug(`Updating col ${refs.colDef.field} with new width: ${refs.colDef.width}`);\n\n      // Since during resizing we update the columns width outside of React, React is unable to\n      // reapply the right style properties. We need to sync the state manually.\n      // So we reapply the same logic as in https://github.com/mui/mui-x/blob/0511bf65543ca05d2602a5a3e0a6156f2fc8e759/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx#L405\n      const columnsState = gridColumnsStateSelector(apiRef.current.state);\n      refs.groupHeaderElements.forEach(element => {\n        const fields = getFieldsFromGroupHeaderElem(element);\n        const div = element;\n        const newWidth = fields.reduce((acc, field) => {\n          if (columnsState.columnVisibilityModel[field] !== false) {\n            return acc + columnsState.lookup[field].computedWidth;\n          }\n          return acc;\n        }, 0);\n        const finalWidth = `${newWidth}px`;\n        div.style.width = finalWidth;\n      });\n    }\n    stopResizeEventTimeout.start(0, () => {\n      apiRef.current.publishEvent('columnResizeStop', null, nativeEvent);\n    });\n  };\n  const storeReferences = (colDef, separator, xStart) => {\n    const root = apiRef.current.rootElementRef.current;\n    refs.initialColWidth = colDef.computedWidth;\n    refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth;\n    refs.colDef = colDef;\n    refs.columnHeaderElement = findHeaderElementFromField(apiRef.current.columnHeadersContainerRef.current, colDef.field);\n    const headerFilterElement = root.querySelector(`.${gridClasses.headerFilterRow} [data-field=\"${escapeOperandAttributeSelector(colDef.field)}\"]`);\n    if (headerFilterElement) {\n      refs.headerFilterElement = headerFilterElement;\n    }\n    refs.groupHeaderElements = findGroupHeaderElementsFromField(apiRef.current.columnHeadersContainerRef?.current, colDef.field);\n    refs.cellElements = findGridCellElementsFromCol(refs.columnHeaderElement, apiRef.current);\n    refs.fillerLeft = findGridElement(apiRef.current, isRtl ? 'filler--pinnedRight' : 'filler--pinnedLeft');\n    refs.fillerRight = findGridElement(apiRef.current, isRtl ? 'filler--pinnedLeft' : 'filler--pinnedRight');\n    const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, refs.colDef.field);\n    refs.leftPinnedCellsAfter = pinnedPosition !== GridPinnedColumnPosition.LEFT ? [] : findLeftPinnedCellsAfterCol(apiRef.current, refs.columnHeaderElement, isRtl);\n    refs.rightPinnedCellsBefore = pinnedPosition !== GridPinnedColumnPosition.RIGHT ? [] : findRightPinnedCellsBeforeCol(apiRef.current, refs.columnHeaderElement, isRtl);\n    refs.leftPinnedHeadersAfter = pinnedPosition !== GridPinnedColumnPosition.LEFT ? [] : findLeftPinnedHeadersAfterCol(apiRef.current, refs.columnHeaderElement, isRtl);\n    refs.rightPinnedHeadersBefore = pinnedPosition !== GridPinnedColumnPosition.RIGHT ? [] : findRightPinnedHeadersBeforeCol(apiRef.current, refs.columnHeaderElement, isRtl);\n    resizeDirection.current = getResizeDirection(separator, isRtl);\n    initialOffsetToSeparator.current = computeOffsetToSeparator(xStart, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);\n  };\n  const handleResizeMouseUp = useEventCallback(finishResize);\n  const handleResizeMouseMove = useEventCallback(nativeEvent => {\n    // Cancel move in case some other element consumed a mouseup event and it was not fired.\n    if (nativeEvent.buttons === 0) {\n      handleResizeMouseUp(nativeEvent);\n      return;\n    }\n    let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);\n    newWidth = clamp(newWidth, refs.colDef.minWidth, refs.colDef.maxWidth);\n    updateWidth(newWidth);\n    const params = {\n      element: refs.columnHeaderElement,\n      colDef: refs.colDef,\n      width: newWidth\n    };\n    apiRef.current.publishEvent('columnResize', params, nativeEvent);\n  });\n  const handleTouchEnd = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId.current);\n    if (!finger) {\n      return;\n    }\n    finishResize(nativeEvent);\n  });\n  const handleTouchMove = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId.current);\n    if (!finger) {\n      return;\n    }\n\n    // Cancel move in case some other element consumed a touchmove event and it was not fired.\n    if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n      handleTouchEnd(nativeEvent);\n      return;\n    }\n    let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);\n    newWidth = clamp(newWidth, refs.colDef.minWidth, refs.colDef.maxWidth);\n    updateWidth(newWidth);\n    const params = {\n      element: refs.columnHeaderElement,\n      colDef: refs.colDef,\n      width: newWidth\n    };\n    apiRef.current.publishEvent('columnResize', params, nativeEvent);\n  });\n  const handleTouchStart = useEventCallback(event => {\n    const cellSeparator = findParentElementFromClassName(event.target, gridClasses['columnSeparator--resizable']);\n    // Let the event bubble if the target is not a col separator\n    if (!cellSeparator) {\n      return;\n    }\n    const touch = event.changedTouches[0];\n    if (touch != null) {\n      // A number that uniquely identifies the current finger in the touch session.\n      touchId.current = touch.identifier;\n    }\n    const columnHeaderElement = findParentElementFromClassName(event.target, gridClasses.columnHeader);\n    const field = getFieldFromHeaderElem(columnHeaderElement);\n    const colDef = apiRef.current.getColumn(field);\n    logger.debug(`Start Resize on col ${colDef.field}`);\n    apiRef.current.publishEvent('columnResizeStart', {\n      field\n    }, event);\n    storeReferences(colDef, cellSeparator, touch.clientX);\n    const doc = ownerDocument(event.currentTarget);\n    doc.addEventListener('touchmove', handleTouchMove);\n    doc.addEventListener('touchend', handleTouchEnd);\n  });\n  const stopListening = React.useCallback(() => {\n    const doc = ownerDocument(apiRef.current.rootElementRef.current);\n    doc.body.style.removeProperty('cursor');\n    doc.removeEventListener('mousemove', handleResizeMouseMove);\n    doc.removeEventListener('mouseup', handleResizeMouseUp);\n    doc.removeEventListener('touchmove', handleTouchMove);\n    doc.removeEventListener('touchend', handleTouchEnd);\n    // The click event runs right after the mouseup event, we want to wait until it\n    // has been canceled before removing our handler.\n    setTimeout(() => {\n      doc.removeEventListener('click', preventClick, true);\n    }, 100);\n    if (refs.columnHeaderElement) {\n      refs.columnHeaderElement.style.pointerEvents = 'unset';\n    }\n  }, [apiRef, refs, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);\n  const handleResizeStart = React.useCallback(({\n    field\n  }) => {\n    apiRef.current.setState(state => _extends({}, state, {\n      columnResize: _extends({}, state.columnResize, {\n        resizingColumnField: field\n      })\n    }));\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const handleResizeStop = React.useCallback(() => {\n    apiRef.current.setState(state => _extends({}, state, {\n      columnResize: _extends({}, state.columnResize, {\n        resizingColumnField: ''\n      })\n    }));\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const handleColumnResizeMouseDown = useEventCallback(({\n    colDef\n  }, event) => {\n    // Only handle left clicks\n    if (event.button !== 0) {\n      return;\n    }\n\n    // Skip if the column isn't resizable\n    if (!event.currentTarget.classList.contains(gridClasses['columnSeparator--resizable'])) {\n      return;\n    }\n\n    // Avoid text selection\n    event.preventDefault();\n    logger.debug(`Start Resize on col ${colDef.field}`);\n    apiRef.current.publishEvent('columnResizeStart', {\n      field: colDef.field\n    }, event);\n    storeReferences(colDef, event.currentTarget, event.clientX);\n    const doc = ownerDocument(apiRef.current.rootElementRef.current);\n    doc.body.style.cursor = 'col-resize';\n    refs.previousMouseClickEvent = event.nativeEvent;\n    doc.addEventListener('mousemove', handleResizeMouseMove);\n    doc.addEventListener('mouseup', handleResizeMouseUp);\n\n    // Prevent the click event if we have resized the column.\n    // Fixes https://github.com/mui/mui-x/issues/4777\n    doc.addEventListener('click', preventClick, true);\n  });\n  const handleColumnSeparatorDoubleClick = useEventCallback((params, event) => {\n    if (props.disableAutosize) {\n      return;\n    }\n\n    // Only handle left clicks\n    if (event.button !== 0) {\n      return;\n    }\n    const column = apiRef.current.state.columns.lookup[params.field];\n    if (column.resizable === false) {\n      return;\n    }\n    apiRef.current.autosizeColumns(_extends({}, props.autosizeOptions, {\n      columns: [column.field]\n    }));\n  });\n\n  /**\n   * API METHODS\n   */\n\n  const columnVirtualizationDisabled = useColumnVirtualizationDisabled(apiRef);\n  const isAutosizingRef = React.useRef(false);\n  const autosizeColumns = React.useCallback(async userOptions => {\n    const root = apiRef.current.rootElementRef?.current;\n    if (!root) {\n      return;\n    }\n    if (isAutosizingRef.current) {\n      return;\n    }\n    isAutosizingRef.current = true;\n    const state = gridColumnsStateSelector(apiRef.current.state);\n    const options = _extends({}, DEFAULT_GRID_AUTOSIZE_OPTIONS, userOptions, {\n      columns: userOptions?.columns ?? state.orderedFields\n    });\n    options.columns = options.columns.filter(c => state.columnVisibilityModel[c] !== false);\n    const columns = options.columns.map(c => apiRef.current.state.columns.lookup[c]);\n    try {\n      apiRef.current.unstable_setColumnVirtualization(false);\n      await columnVirtualizationDisabled();\n      const widthByField = extractColumnWidths(apiRef, options, columns);\n      const newColumns = columns.map(column => _extends({}, column, {\n        width: widthByField[column.field],\n        computedWidth: widthByField[column.field]\n      }));\n      if (options.expand) {\n        const visibleColumns = state.orderedFields.map(field => state.lookup[field]).filter(c => state.columnVisibilityModel[c.field] !== false);\n        const totalWidth = visibleColumns.reduce((total, column) => total + (widthByField[column.field] ?? column.computedWidth ?? column.width), 0);\n        const availableWidth = apiRef.current.getRootDimensions().viewportInnerSize.width;\n        const remainingWidth = availableWidth - totalWidth;\n        if (remainingWidth > 0) {\n          const widthPerColumn = remainingWidth / (newColumns.length || 1);\n          newColumns.forEach(column => {\n            column.width += widthPerColumn;\n            column.computedWidth += widthPerColumn;\n          });\n        }\n      }\n      apiRef.current.updateColumns(newColumns);\n      newColumns.forEach((newColumn, index) => {\n        if (newColumn.width !== columns[index].width) {\n          const width = newColumn.width;\n          apiRef.current.publishEvent('columnWidthChange', {\n            element: apiRef.current.getColumnHeaderElement(newColumn.field),\n            colDef: newColumn,\n            width\n          });\n        }\n      });\n    } finally {\n      apiRef.current.unstable_setColumnVirtualization(true);\n      isAutosizingRef.current = false;\n    }\n  }, [apiRef, columnVirtualizationDisabled]);\n\n  /**\n   * EFFECTS\n   */\n\n  React.useEffect(() => stopListening, [stopListening]);\n  useOnMount(() => {\n    if (props.autosizeOnMount) {\n      Promise.resolve().then(() => {\n        apiRef.current.autosizeColumns(props.autosizeOptions);\n      });\n    }\n  });\n  useGridNativeEventListener(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {\n    passive: true\n  });\n  useGridApiMethod(apiRef, {\n    autosizeColumns\n  }, 'public');\n  useGridApiEventHandler(apiRef, 'columnResizeStop', handleResizeStop);\n  useGridApiEventHandler(apiRef, 'columnResizeStart', handleResizeStart);\n  useGridApiEventHandler(apiRef, 'columnSeparatorMouseDown', handleColumnResizeMouseDown);\n  useGridApiEventHandler(apiRef, 'columnSeparatorDoubleClick', handleColumnSeparatorDoubleClick);\n  useGridApiOptionHandler(apiRef, 'columnResize', props.onColumnResize);\n  useGridApiOptionHandler(apiRef, 'columnWidthChange', props.onColumnWidthChange);\n};\nfunction updateProperty(element, property, delta) {\n  if (!element) {\n    return;\n  }\n  element.style[property] = `${parseInt(element.style[property], 10) + delta}px`;\n}","export function createControllablePromise() {\n  let resolve;\n  let reject;\n  const promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  promise.resolve = resolve;\n  promise.reject = reject;\n  return promise;\n}","export function getUnprocessedRange(testRange, processedRange) {\n  if (testRange.firstRowIndex >= processedRange.firstRowIndex && testRange.lastRowIndex <= processedRange.lastRowIndex) {\n    return null;\n  }\n  // Overflowing at the end\n  // Example: testRange={ firstRowIndex: 10, lastRowIndex: 20 }, processedRange={ firstRowIndex: 0, lastRowIndex: 15 }\n  // Unprocessed Range={ firstRowIndex: 16, lastRowIndex: 20 }\n  if (testRange.firstRowIndex >= processedRange.firstRowIndex && testRange.lastRowIndex > processedRange.lastRowIndex) {\n    return {\n      firstRowIndex: processedRange.lastRowIndex,\n      lastRowIndex: testRange.lastRowIndex\n    };\n  }\n  // Overflowing at the beginning\n  // Example: testRange={ firstRowIndex: 0, lastRowIndex: 20 }, processedRange={ firstRowIndex: 16, lastRowIndex: 30 }\n  // Unprocessed Range={ firstRowIndex: 0, lastRowIndex: 15 }\n  if (testRange.firstRowIndex < processedRange.firstRowIndex && testRange.lastRowIndex <= processedRange.lastRowIndex) {\n    return {\n      firstRowIndex: testRange.firstRowIndex,\n      lastRowIndex: processedRange.firstRowIndex - 1\n    };\n  }\n  // TODO: Should return two ranges handle overflowing at both ends ?\n  return testRange;\n}\nexport function isRowContextInitialized(renderContext) {\n  return renderContext.firstRowIndex !== 0 || renderContext.lastRowIndex !== 0;\n}\nexport function isRowRangeUpdated(range1, range2) {\n  return range1.firstRowIndex !== range2.firstRowIndex || range1.lastRowIndex !== range2.lastRowIndex;\n}\nexport const getCellValue = (row, colDef, apiRef) => {\n  if (!row) {\n    return null;\n  }\n  let cellValue = row[colDef.field];\n  const valueGetter = colDef.rowSpanValueGetter ?? colDef.valueGetter;\n  if (valueGetter) {\n    cellValue = valueGetter(cellValue, row, colDef, apiRef);\n  }\n  return cellValue;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\nimport { gridVisibleColumnDefinitionsSelector } from \"../columns/gridColumnsSelector.js\";\nimport { useGridVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { gridRenderContextSelector } from \"../virtualization/gridVirtualizationSelectors.js\";\nimport { useGridSelector } from \"../../utils/useGridSelector.js\";\nimport { getUnprocessedRange, isRowRangeUpdated, isRowContextInitialized, getCellValue } from \"./gridRowSpanningUtils.js\";\nconst EMPTY_STATE = {\n  spannedCells: {},\n  hiddenCells: {},\n  hiddenCellOriginMap: {}\n};\nconst EMPTY_RANGE = {\n  firstRowIndex: 0,\n  lastRowIndex: 0\n};\nconst skippedFields = new Set(['__check__', '__reorder__', '__detail_panel_toggle__']);\n/**\n * Default number of rows to process during state initialization to avoid flickering.\n * Number `20` is arbitrarily chosen to be large enough to cover most of the cases without\n * compromising performance.\n */\nconst DEFAULT_ROWS_TO_PROCESS = 20;\nconst computeRowSpanningState = (apiRef, colDefs, visibleRows, range, rangeToProcess, resetState, processedRange) => {\n  const spannedCells = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.spannedCells);\n  const hiddenCells = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.hiddenCells);\n  const hiddenCellOriginMap = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.hiddenCellOriginMap);\n  if (resetState) {\n    processedRange = EMPTY_RANGE;\n  }\n  colDefs.forEach(colDef => {\n    if (skippedFields.has(colDef.field)) {\n      return;\n    }\n    for (let index = rangeToProcess.firstRowIndex; index <= rangeToProcess.lastRowIndex; index += 1) {\n      const row = visibleRows[index];\n      if (hiddenCells[row.id]?.[colDef.field]) {\n        continue;\n      }\n      const cellValue = getCellValue(row.model, colDef, apiRef);\n      if (cellValue == null) {\n        continue;\n      }\n      let spannedRowId = row.id;\n      let spannedRowIndex = index;\n      let rowSpan = 0;\n\n      // For first index, also scan in the previous rows to handle the reset state case e.g by sorting\n      const backwardsHiddenCells = [];\n      if (index === rangeToProcess.firstRowIndex) {\n        let prevIndex = index - 1;\n        const prevRowEntry = visibleRows[prevIndex];\n        while (prevIndex >= range.firstRowIndex && getCellValue(prevRowEntry.model, colDef, apiRef) === cellValue) {\n          const currentRow = visibleRows[prevIndex + 1];\n          if (hiddenCells[currentRow.id]) {\n            hiddenCells[currentRow.id][colDef.field] = true;\n          } else {\n            hiddenCells[currentRow.id] = {\n              [colDef.field]: true\n            };\n          }\n          backwardsHiddenCells.push(index);\n          rowSpan += 1;\n          spannedRowId = prevRowEntry.id;\n          spannedRowIndex = prevIndex;\n          prevIndex -= 1;\n        }\n      }\n      backwardsHiddenCells.forEach(hiddenCellIndex => {\n        if (hiddenCellOriginMap[hiddenCellIndex]) {\n          hiddenCellOriginMap[hiddenCellIndex][colDef.field] = spannedRowIndex;\n        } else {\n          hiddenCellOriginMap[hiddenCellIndex] = {\n            [colDef.field]: spannedRowIndex\n          };\n        }\n      });\n\n      // Scan the next rows\n      let relativeIndex = index + 1;\n      while (relativeIndex <= range.lastRowIndex && visibleRows[relativeIndex] && getCellValue(visibleRows[relativeIndex].model, colDef, apiRef) === cellValue) {\n        const currentRow = visibleRows[relativeIndex];\n        if (hiddenCells[currentRow.id]) {\n          hiddenCells[currentRow.id][colDef.field] = true;\n        } else {\n          hiddenCells[currentRow.id] = {\n            [colDef.field]: true\n          };\n        }\n        if (hiddenCellOriginMap[relativeIndex]) {\n          hiddenCellOriginMap[relativeIndex][colDef.field] = spannedRowIndex;\n        } else {\n          hiddenCellOriginMap[relativeIndex] = {\n            [colDef.field]: spannedRowIndex\n          };\n        }\n        relativeIndex += 1;\n        rowSpan += 1;\n      }\n      if (rowSpan > 0) {\n        if (spannedCells[spannedRowId]) {\n          spannedCells[spannedRowId][colDef.field] = rowSpan + 1;\n        } else {\n          spannedCells[spannedRowId] = {\n            [colDef.field]: rowSpan + 1\n          };\n        }\n      }\n    }\n    processedRange = {\n      firstRowIndex: Math.min(processedRange.firstRowIndex, rangeToProcess.firstRowIndex),\n      lastRowIndex: Math.max(processedRange.lastRowIndex, rangeToProcess.lastRowIndex)\n    };\n  });\n  return {\n    spannedCells,\n    hiddenCells,\n    hiddenCellOriginMap,\n    processedRange\n  };\n};\n\n/**\n * @requires columnsStateInitializer (method) - should be initialized before\n * @requires rowsStateInitializer (method) - should be initialized before\n * @requires filterStateInitializer (method) - should be initialized before\n */\nexport const rowSpanningStateInitializer = (state, props, apiRef) => {\n  if (props.unstable_rowSpanning) {\n    const rowIds = state.rows.dataRowIds || [];\n    const orderedFields = state.columns.orderedFields || [];\n    const dataRowIdToModelLookup = state.rows.dataRowIdToModelLookup;\n    const columnsLookup = state.columns.lookup;\n    const isFilteringPending = Boolean(state.filter.filterModel.items.length) || Boolean(state.filter.filterModel.quickFilterValues?.length);\n    if (!rowIds.length || !orderedFields.length || !dataRowIdToModelLookup || !columnsLookup || isFilteringPending) {\n      return _extends({}, state, {\n        rowSpanning: EMPTY_STATE\n      });\n    }\n    const rangeToProcess = {\n      firstRowIndex: 0,\n      lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS - 1, Math.max(rowIds.length - 1, 0))\n    };\n    const rows = rowIds.map(id => ({\n      id,\n      model: dataRowIdToModelLookup[id]\n    }));\n    const colDefs = orderedFields.map(field => columnsLookup[field]);\n    const {\n      spannedCells,\n      hiddenCells,\n      hiddenCellOriginMap\n    } = computeRowSpanningState(apiRef, colDefs, rows, rangeToProcess, rangeToProcess, true, EMPTY_RANGE);\n    return _extends({}, state, {\n      rowSpanning: {\n        spannedCells,\n        hiddenCells,\n        hiddenCellOriginMap\n      }\n    });\n  }\n  return _extends({}, state, {\n    rowSpanning: EMPTY_STATE\n  });\n};\nexport const useGridRowSpanning = (apiRef, props) => {\n  const {\n    range,\n    rows: visibleRows\n  } = useGridVisibleRows(apiRef, props);\n  const renderContext = useGridSelector(apiRef, gridRenderContextSelector);\n  const colDefs = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n  const processedRange = useLazyRef(() => {\n    return Object.keys(apiRef.current.state.rowSpanning.spannedCells).length > 0 ? {\n      firstRowIndex: 0,\n      lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS - 1, Math.max(apiRef.current.state.rows.dataRowIds.length - 1, 0))\n    } : EMPTY_RANGE;\n  });\n  const lastRange = React.useRef(EMPTY_RANGE);\n  const updateRowSpanningState = React.useCallback(\n  // A reset needs to occur when:\n  // - The `unstable_rowSpanning` prop is updated (feature flag)\n  // - The filtering is applied\n  // - The sorting is applied\n  // - The `paginationModel` is updated\n  // - The rows are updated\n  (resetState = true) => {\n    if (!props.unstable_rowSpanning) {\n      if (apiRef.current.state.rowSpanning !== EMPTY_STATE) {\n        apiRef.current.setState(state => _extends({}, state, {\n          rowSpanning: EMPTY_STATE\n        }));\n      }\n      return;\n    }\n    if (range === null || !isRowContextInitialized(renderContext)) {\n      return;\n    }\n    if (resetState) {\n      processedRange.current = EMPTY_RANGE;\n    }\n    const rangeToProcess = getUnprocessedRange({\n      firstRowIndex: renderContext.firstRowIndex,\n      lastRowIndex: renderContext.lastRowIndex - 1\n    }, processedRange.current);\n    if (rangeToProcess === null) {\n      return;\n    }\n    const {\n      spannedCells,\n      hiddenCells,\n      hiddenCellOriginMap,\n      processedRange: newProcessedRange\n    } = computeRowSpanningState(apiRef, colDefs, visibleRows, range, rangeToProcess, resetState, processedRange.current);\n    processedRange.current = newProcessedRange;\n    const newSpannedCellsCount = Object.keys(spannedCells).length;\n    const newHiddenCellsCount = Object.keys(hiddenCells).length;\n    const currentSpannedCellsCount = Object.keys(apiRef.current.state.rowSpanning.spannedCells).length;\n    const currentHiddenCellsCount = Object.keys(apiRef.current.state.rowSpanning.hiddenCells).length;\n    const shouldUpdateState = resetState || newSpannedCellsCount !== currentSpannedCellsCount || newHiddenCellsCount !== currentHiddenCellsCount;\n    if (!shouldUpdateState) {\n      return;\n    }\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        rowSpanning: {\n          spannedCells,\n          hiddenCells,\n          hiddenCellOriginMap\n        }\n      });\n    });\n  }, [apiRef, props.unstable_rowSpanning, range, renderContext, visibleRows, colDefs, processedRange]);\n  const prevRenderContext = React.useRef(renderContext);\n  const isFirstRender = React.useRef(true);\n  const shouldResetState = React.useRef(false);\n  React.useEffect(() => {\n    const firstRender = isFirstRender.current;\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    }\n    if (range && lastRange.current && isRowRangeUpdated(range, lastRange.current)) {\n      lastRange.current = range;\n      shouldResetState.current = true;\n    }\n    if (!firstRender && prevRenderContext.current !== renderContext) {\n      if (isRowRangeUpdated(prevRenderContext.current, renderContext)) {\n        updateRowSpanningState(shouldResetState.current);\n        shouldResetState.current = false;\n      }\n      prevRenderContext.current = renderContext;\n      return;\n    }\n    updateRowSpanningState();\n  }, [updateRowSpanningState, renderContext, range, lastRange]);\n};","import { useGridInitialization } from \"../hooks/core/useGridInitialization.js\";\nimport { useGridInitializeState } from \"../hooks/utils/useGridInitializeState.js\";\nimport { useGridClipboard } from \"../hooks/features/clipboard/useGridClipboard.js\";\nimport { columnMenuStateInitializer, useGridColumnMenu } from \"../hooks/features/columnMenu/useGridColumnMenu.js\";\nimport { useGridColumns, columnsStateInitializer } from \"../hooks/features/columns/useGridColumns.js\";\nimport { densityStateInitializer, useGridDensity } from \"../hooks/features/density/useGridDensity.js\";\nimport { useGridCsvExport } from \"../hooks/features/export/useGridCsvExport.js\";\nimport { useGridPrintExport } from \"../hooks/features/export/useGridPrintExport.js\";\nimport { useGridFilter, filterStateInitializer } from \"../hooks/features/filter/useGridFilter.js\";\nimport { focusStateInitializer, useGridFocus } from \"../hooks/features/focus/useGridFocus.js\";\nimport { useGridKeyboardNavigation } from \"../hooks/features/keyboardNavigation/useGridKeyboardNavigation.js\";\nimport { useGridPagination, paginationStateInitializer } from \"../hooks/features/pagination/useGridPagination.js\";\nimport { useGridPreferencesPanel, preferencePanelStateInitializer } from \"../hooks/features/preferencesPanel/useGridPreferencesPanel.js\";\nimport { useGridEditing, editingStateInitializer } from \"../hooks/features/editing/useGridEditing.js\";\nimport { useGridRows, rowsStateInitializer } from \"../hooks/features/rows/useGridRows.js\";\nimport { useGridRowsPreProcessors } from \"../hooks/features/rows/useGridRowsPreProcessors.js\";\nimport { useGridParamsApi } from \"../hooks/features/rows/useGridParamsApi.js\";\nimport { rowSelectionStateInitializer, useGridRowSelection } from \"../hooks/features/rowSelection/useGridRowSelection.js\";\nimport { useGridRowSelectionPreProcessors } from \"../hooks/features/rowSelection/useGridRowSelectionPreProcessors.js\";\nimport { useGridSorting, sortingStateInitializer } from \"../hooks/features/sorting/useGridSorting.js\";\nimport { useGridScroll } from \"../hooks/features/scroll/useGridScroll.js\";\nimport { useGridEvents } from \"../hooks/features/events/useGridEvents.js\";\nimport { dimensionsStateInitializer, useGridDimensions } from \"../hooks/features/dimensions/useGridDimensions.js\";\nimport { rowsMetaStateInitializer, useGridRowsMeta } from \"../hooks/features/rows/useGridRowsMeta.js\";\nimport { useGridStatePersistence } from \"../hooks/features/statePersistence/useGridStatePersistence.js\";\nimport { useGridColumnSpanning } from \"../hooks/features/columns/useGridColumnSpanning.js\";\nimport { useGridColumnGrouping, columnGroupsStateInitializer } from \"../hooks/features/columnGrouping/useGridColumnGrouping.js\";\nimport { useGridVirtualization, virtualizationStateInitializer } from \"../hooks/features/virtualization/index.js\";\nimport { columnResizeStateInitializer, useGridColumnResize } from \"../hooks/features/columnResize/useGridColumnResize.js\";\nimport { rowSpanningStateInitializer, useGridRowSpanning } from \"../hooks/features/rows/useGridRowSpanning.js\";\nexport const useDataGridComponent = (inputApiRef, props) => {\n  const apiRef = useGridInitialization(inputApiRef, props);\n\n  /**\n   * Register all pre-processors called during state initialization here.\n   */\n  useGridRowSelectionPreProcessors(apiRef, props);\n  useGridRowsPreProcessors(apiRef);\n\n  /**\n   * Register all state initializers here.\n   */\n  useGridInitializeState(dimensionsStateInitializer, apiRef, props);\n  useGridInitializeState(rowSelectionStateInitializer, apiRef, props);\n  useGridInitializeState(columnsStateInitializer, apiRef, props);\n  useGridInitializeState(rowsStateInitializer, apiRef, props);\n  useGridInitializeState(editingStateInitializer, apiRef, props);\n  useGridInitializeState(focusStateInitializer, apiRef, props);\n  useGridInitializeState(sortingStateInitializer, apiRef, props);\n  useGridInitializeState(preferencePanelStateInitializer, apiRef, props);\n  useGridInitializeState(filterStateInitializer, apiRef, props);\n  useGridInitializeState(rowSpanningStateInitializer, apiRef, props);\n  useGridInitializeState(densityStateInitializer, apiRef, props);\n  useGridInitializeState(columnResizeStateInitializer, apiRef, props);\n  useGridInitializeState(paginationStateInitializer, apiRef, props);\n  useGridInitializeState(rowsMetaStateInitializer, apiRef, props);\n  useGridInitializeState(columnMenuStateInitializer, apiRef, props);\n  useGridInitializeState(columnGroupsStateInitializer, apiRef, props);\n  useGridInitializeState(virtualizationStateInitializer, apiRef, props);\n  useGridKeyboardNavigation(apiRef, props);\n  useGridRowSelection(apiRef, props);\n  useGridColumns(apiRef, props);\n  useGridRows(apiRef, props);\n  useGridRowSpanning(apiRef, props);\n  useGridParamsApi(apiRef);\n  useGridColumnSpanning(apiRef);\n  useGridColumnGrouping(apiRef, props);\n  useGridEditing(apiRef, props);\n  useGridFocus(apiRef, props);\n  useGridPreferencesPanel(apiRef, props);\n  useGridFilter(apiRef, props);\n  useGridSorting(apiRef, props);\n  useGridDensity(apiRef, props);\n  useGridColumnResize(apiRef, props);\n  useGridPagination(apiRef, props);\n  useGridRowsMeta(apiRef, props);\n  useGridScroll(apiRef, props);\n  useGridColumnMenu(apiRef);\n  useGridCsvExport(apiRef, props);\n  useGridPrintExport(apiRef, props);\n  useGridClipboard(apiRef, props);\n  useGridDimensions(apiRef, props);\n  useGridEvents(apiRef, props);\n  useGridStatePersistence(apiRef);\n  useGridVirtualization(apiRef, props);\n  return apiRef;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { getDataGridUtilityClass } from \"../../../constants/index.js\";\nimport { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_CHECKBOX_SELECTION_FIELD } from \"../../../colDef/index.js\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return React.useMemo(() => {\n    const slots = {\n      cellCheckbox: ['cellCheckbox'],\n      columnHeaderCheckbox: ['columnHeaderCheckbox']\n    };\n    return composeClasses(slots, getDataGridUtilityClass, classes);\n  }, [classes]);\n};\nexport const useGridRowSelectionPreProcessors = (apiRef, props) => {\n  const ownerState = {\n    classes: props.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const updateSelectionColumn = React.useCallback(columnsState => {\n    const selectionColumn = _extends({}, GRID_CHECKBOX_SELECTION_COL_DEF, {\n      cellClassName: classes.cellCheckbox,\n      headerClassName: classes.columnHeaderCheckbox,\n      headerName: apiRef.current.getLocaleText('checkboxSelectionHeaderName')\n    });\n    const shouldHaveSelectionColumn = props.checkboxSelection;\n    const haveSelectionColumn = columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] != null;\n    if (shouldHaveSelectionColumn && !haveSelectionColumn) {\n      columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = selectionColumn;\n      columnsState.orderedFields = [GRID_CHECKBOX_SELECTION_FIELD, ...columnsState.orderedFields];\n    } else if (!shouldHaveSelectionColumn && haveSelectionColumn) {\n      delete columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD];\n      columnsState.orderedFields = columnsState.orderedFields.filter(field => field !== GRID_CHECKBOX_SELECTION_FIELD);\n    } else if (shouldHaveSelectionColumn && haveSelectionColumn) {\n      columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = _extends({}, selectionColumn, columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD]);\n    }\n    return columnsState;\n  }, [apiRef, classes, props.checkboxSelection]);\n  useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);\n};","import * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { gridVisibleColumnDefinitionsSelector, gridVisibleColumnFieldsSelector } from \"../columns/gridColumnsSelector.js\";\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { gridExpandedSortedRowEntriesSelector } from \"../filter/gridFilterSelector.js\";\nimport { useGridVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from \"../../../colDef/gridCheckboxSelectionColDef.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { GridCellModes } from \"../../../models/gridEditRowModel.js\";\nimport { isNavigationKey } from \"../../../utils/keyboardUtils.js\";\nimport { GRID_DETAIL_PANEL_TOGGLE_FIELD } from \"../../../constants/gridDetailPanelToggleField.js\";\nimport { gridFocusColumnGroupHeaderSelector } from \"../focus/index.js\";\nimport { gridColumnGroupsHeaderMaxDepthSelector } from \"../columnGrouping/gridColumnGroupsSelector.js\";\nimport { gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector } from \"../headerFiltering/gridHeaderFilteringSelectors.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { isEventTargetInPortal } from \"../../../utils/domUtils.js\";\nimport { enrichPageRowsWithPinnedRows, getLeftColumnIndex, getRightColumnIndex, findNonRowSpannedCell } from \"./utils.js\";\n\n/**\n * @requires useGridSorting (method) - can be after\n * @requires useGridFilter (state) - can be after\n * @requires useGridColumns (state, method) - can be after\n * @requires useGridDimensions (method) - can be after\n * @requires useGridFocus (method) - can be after\n * @requires useGridScroll (method) - can be after\n * @requires useGridColumnSpanning (method) - can be after\n */\nexport const useGridKeyboardNavigation = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');\n  const initialCurrentPageRows = useGridVisibleRows(apiRef, props).rows;\n  const isRtl = useRtl();\n  const currentPageRows = React.useMemo(() => enrichPageRowsWithPinnedRows(apiRef, initialCurrentPageRows), [apiRef, initialCurrentPageRows]);\n  const headerFilteringEnabled = props.signature !== 'DataGrid' && props.headerFilters;\n\n  /**\n   * @param {number} colIndex Index of the column to focus\n   * @param {GridRowId} rowId index of the row to focus\n   * @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.\n   * @param {string} rowSpanScanDirection Which direction to search to find the next cell not hidden by `rowSpan`.\n   * TODO replace with apiRef.current.moveFocusToRelativeCell()\n   */\n  const goToCell = React.useCallback((colIndex, rowId, closestColumnToUse = 'left', rowSpanScanDirection = 'up') => {\n    const visibleSortedRows = gridExpandedSortedRowEntriesSelector(apiRef);\n    const nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);\n    if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {\n      if (closestColumnToUse === 'left') {\n        colIndex = nextCellColSpanInfo.leftVisibleCellIndex;\n      } else if (closestColumnToUse === 'right') {\n        colIndex = nextCellColSpanInfo.rightVisibleCellIndex;\n      }\n    }\n    const field = gridVisibleColumnFieldsSelector(apiRef)[colIndex];\n    const nonRowSpannedRowId = findNonRowSpannedCell(apiRef, rowId, field, rowSpanScanDirection);\n    // `scrollToIndexes` requires a rowIndex relative to all visible rows.\n    // Those rows do not include pinned rows, but pinned rows do not need scroll anyway.\n    const rowIndexRelativeToAllRows = visibleSortedRows.findIndex(row => row.id === nonRowSpannedRowId);\n    logger.debug(`Navigating to cell row ${rowIndexRelativeToAllRows}, col ${colIndex}`);\n    apiRef.current.scrollToIndexes({\n      colIndex,\n      rowIndex: rowIndexRelativeToAllRows\n    });\n    apiRef.current.setCellFocus(nonRowSpannedRowId, field);\n  }, [apiRef, logger]);\n  const goToHeader = React.useCallback((colIndex, event) => {\n    logger.debug(`Navigating to header col ${colIndex}`);\n    apiRef.current.scrollToIndexes({\n      colIndex\n    });\n    const field = apiRef.current.getVisibleColumns()[colIndex].field;\n    apiRef.current.setColumnHeaderFocus(field, event);\n  }, [apiRef, logger]);\n  const goToHeaderFilter = React.useCallback((colIndex, event) => {\n    logger.debug(`Navigating to header filter col ${colIndex}`);\n    apiRef.current.scrollToIndexes({\n      colIndex\n    });\n    const field = apiRef.current.getVisibleColumns()[colIndex].field;\n    apiRef.current.setColumnHeaderFilterFocus(field, event);\n  }, [apiRef, logger]);\n  const goToGroupHeader = React.useCallback((colIndex, depth, event) => {\n    logger.debug(`Navigating to header col ${colIndex}`);\n    apiRef.current.scrollToIndexes({\n      colIndex\n    });\n    const {\n      field\n    } = apiRef.current.getVisibleColumns()[colIndex];\n    apiRef.current.setColumnGroupHeaderFocus(field, depth, event);\n  }, [apiRef, logger]);\n  const getRowIdFromIndex = React.useCallback(rowIndex => {\n    return currentPageRows[rowIndex]?.id;\n  }, [currentPageRows]);\n  const handleColumnHeaderKeyDown = React.useCallback((params, event) => {\n    const headerTitleNode = event.currentTarget.querySelector(`.${gridClasses.columnHeaderTitleContainerContent}`);\n    const isFromInsideContent = !!headerTitleNode && headerTitleNode.contains(event.target);\n    if (isFromInsideContent && params.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field) {\n      // When focus is on a nested input, keyboard events have no effect to avoid conflicts with native events.\n      // There is one exception for the checkBoxHeader\n      return;\n    }\n    const viewportPageSize = apiRef.current.getViewportPageSize();\n    const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;\n    const firstRowIndexInPage = currentPageRows.length > 0 ? 0 : null;\n    const lastRowIndexInPage = currentPageRows.length - 1;\n    const firstColIndex = 0;\n    const lastColIndex = gridVisibleColumnDefinitionsSelector(apiRef).length - 1;\n    const columnGroupMaxDepth = gridColumnGroupsHeaderMaxDepthSelector(apiRef);\n    let shouldPreventDefault = true;\n    switch (event.key) {\n      case 'ArrowDown':\n        {\n          if (firstRowIndexInPage !== null) {\n            if (headerFilteringEnabled) {\n              goToHeaderFilter(colIndexBefore, event);\n            } else {\n              goToCell(colIndexBefore, getRowIdFromIndex(firstRowIndexInPage));\n            }\n          }\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const rightColIndex = getRightColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (rightColIndex !== null) {\n            goToHeader(rightColIndex, event);\n          }\n          break;\n        }\n      case 'ArrowLeft':\n        {\n          const leftColIndex = getLeftColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (leftColIndex !== null) {\n            goToHeader(leftColIndex, event);\n          }\n          break;\n        }\n      case 'ArrowUp':\n        {\n          if (columnGroupMaxDepth > 0) {\n            goToGroupHeader(colIndexBefore, columnGroupMaxDepth - 1, event);\n          }\n          break;\n        }\n      case 'PageDown':\n        {\n          if (firstRowIndexInPage !== null && lastRowIndexInPage !== null) {\n            goToCell(colIndexBefore, getRowIdFromIndex(Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage)));\n          }\n          break;\n        }\n      case 'Home':\n        {\n          goToHeader(firstColIndex, event);\n          break;\n        }\n      case 'End':\n        {\n          goToHeader(lastColIndex, event);\n          break;\n        }\n      case 'Enter':\n        {\n          if (event.ctrlKey || event.metaKey) {\n            apiRef.current.toggleColumnMenu(params.field);\n          }\n          break;\n        }\n      case ' ':\n        {\n          // prevent Space event from scrolling\n          break;\n        }\n      default:\n        {\n          shouldPreventDefault = false;\n        }\n    }\n    if (shouldPreventDefault) {\n      event.preventDefault();\n    }\n  }, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, isRtl, goToHeader, goToGroupHeader]);\n  const handleHeaderFilterKeyDown = React.useCallback((params, event) => {\n    const isEditing = gridHeaderFilteringEditFieldSelector(apiRef) === params.field;\n    const isHeaderMenuOpen = gridHeaderFilteringMenuSelector(apiRef) === params.field;\n    if (isEditing || isHeaderMenuOpen || !isNavigationKey(event.key)) {\n      return;\n    }\n    const viewportPageSize = apiRef.current.getViewportPageSize();\n    const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;\n    const firstRowIndexInPage = 0;\n    const lastRowIndexInPage = currentPageRows.length - 1;\n    const firstColIndex = 0;\n    const lastColIndex = gridVisibleColumnDefinitionsSelector(apiRef).length - 1;\n    let shouldPreventDefault = true;\n    switch (event.key) {\n      case 'ArrowDown':\n        {\n          const rowId = getRowIdFromIndex(firstRowIndexInPage);\n          if (firstRowIndexInPage !== null && rowId != null) {\n            goToCell(colIndexBefore, rowId);\n          }\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const rightColIndex = getRightColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (rightColIndex !== null) {\n            goToHeaderFilter(rightColIndex, event);\n          }\n          break;\n        }\n      case 'ArrowLeft':\n        {\n          const leftColIndex = getLeftColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (leftColIndex !== null) {\n            goToHeaderFilter(leftColIndex, event);\n          } else {\n            apiRef.current.setColumnHeaderFilterFocus(params.field, event);\n          }\n          break;\n        }\n      case 'ArrowUp':\n        {\n          goToHeader(colIndexBefore, event);\n          break;\n        }\n      case 'PageDown':\n        {\n          if (firstRowIndexInPage !== null && lastRowIndexInPage !== null) {\n            goToCell(colIndexBefore, getRowIdFromIndex(Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage)));\n          }\n          break;\n        }\n      case 'Home':\n        {\n          goToHeaderFilter(firstColIndex, event);\n          break;\n        }\n      case 'End':\n        {\n          goToHeaderFilter(lastColIndex, event);\n          break;\n        }\n      case ' ':\n        {\n          // prevent Space event from scrolling\n          break;\n        }\n      default:\n        {\n          shouldPreventDefault = false;\n        }\n    }\n    if (shouldPreventDefault) {\n      event.preventDefault();\n    }\n  }, [apiRef, currentPageRows.length, goToHeaderFilter, isRtl, goToHeader, goToCell, getRowIdFromIndex]);\n  const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {\n    const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);\n    if (focusedColumnGroup === null) {\n      return;\n    }\n    const {\n      field: currentField,\n      depth: currentDepth\n    } = focusedColumnGroup;\n    const {\n      fields,\n      depth,\n      maxDepth\n    } = params;\n    const viewportPageSize = apiRef.current.getViewportPageSize();\n    const currentColIndex = apiRef.current.getColumnIndex(currentField);\n    const colIndexBefore = currentField ? apiRef.current.getColumnIndex(currentField) : 0;\n    const firstRowIndexInPage = 0;\n    const lastRowIndexInPage = currentPageRows.length - 1;\n    const firstColIndex = 0;\n    const lastColIndex = gridVisibleColumnDefinitionsSelector(apiRef).length - 1;\n    let shouldPreventDefault = true;\n    switch (event.key) {\n      case 'ArrowDown':\n        {\n          if (depth === maxDepth - 1) {\n            goToHeader(currentColIndex, event);\n          } else {\n            goToGroupHeader(currentColIndex, currentDepth + 1, event);\n          }\n          break;\n        }\n      case 'ArrowUp':\n        {\n          if (depth > 0) {\n            goToGroupHeader(currentColIndex, currentDepth - 1, event);\n          }\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const remainingRightColumns = fields.length - fields.indexOf(currentField) - 1;\n          if (currentColIndex + remainingRightColumns + 1 <= lastColIndex) {\n            goToGroupHeader(currentColIndex + remainingRightColumns + 1, currentDepth, event);\n          }\n          break;\n        }\n      case 'ArrowLeft':\n        {\n          const remainingLeftColumns = fields.indexOf(currentField);\n          if (currentColIndex - remainingLeftColumns - 1 >= firstColIndex) {\n            goToGroupHeader(currentColIndex - remainingLeftColumns - 1, currentDepth, event);\n          }\n          break;\n        }\n      case 'PageDown':\n        {\n          if (firstRowIndexInPage !== null && lastRowIndexInPage !== null) {\n            goToCell(colIndexBefore, getRowIdFromIndex(Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage)));\n          }\n          break;\n        }\n      case 'Home':\n        {\n          goToGroupHeader(firstColIndex, currentDepth, event);\n          break;\n        }\n      case 'End':\n        {\n          goToGroupHeader(lastColIndex, currentDepth, event);\n          break;\n        }\n      case ' ':\n        {\n          // prevent Space event from scrolling\n          break;\n        }\n      default:\n        {\n          shouldPreventDefault = false;\n        }\n    }\n    if (shouldPreventDefault) {\n      event.preventDefault();\n    }\n  }, [apiRef, currentPageRows.length, goToHeader, goToGroupHeader, goToCell, getRowIdFromIndex]);\n  const handleCellKeyDown = React.useCallback((params, event) => {\n    // Ignore portal\n    if (isEventTargetInPortal(event)) {\n      return;\n    }\n\n    // Get the most recent params because the cell mode may have changed by another listener\n    const cellParams = apiRef.current.getCellParams(params.id, params.field);\n    if (cellParams.cellMode === GridCellModes.Edit || !isNavigationKey(event.key)) {\n      return;\n    }\n    const canUpdateFocus = apiRef.current.unstable_applyPipeProcessors('canUpdateFocus', true, {\n      event,\n      cell: cellParams\n    });\n    if (!canUpdateFocus) {\n      return;\n    }\n    if (currentPageRows.length === 0) {\n      return;\n    }\n    const viewportPageSize = apiRef.current.getViewportPageSize();\n    const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;\n    const rowIndexBefore = currentPageRows.findIndex(row => row.id === params.id);\n    const firstRowIndexInPage = 0;\n    const lastRowIndexInPage = currentPageRows.length - 1;\n    const firstColIndex = 0;\n    const lastColIndex = gridVisibleColumnDefinitionsSelector(apiRef).length - 1;\n    let shouldPreventDefault = true;\n    switch (event.key) {\n      case 'ArrowDown':\n        {\n          // \"Enter\" is only triggered by the row / cell editing feature\n          if (rowIndexBefore < lastRowIndexInPage) {\n            goToCell(colIndexBefore, getRowIdFromIndex(rowIndexBefore + 1), isRtl ? 'right' : 'left', 'down');\n          }\n          break;\n        }\n      case 'ArrowUp':\n        {\n          if (rowIndexBefore > firstRowIndexInPage) {\n            goToCell(colIndexBefore, getRowIdFromIndex(rowIndexBefore - 1));\n          } else if (headerFilteringEnabled) {\n            goToHeaderFilter(colIndexBefore, event);\n          } else {\n            goToHeader(colIndexBefore, event);\n          }\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const rightColIndex = getRightColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (rightColIndex !== null) {\n            goToCell(rightColIndex, getRowIdFromIndex(rowIndexBefore), isRtl ? 'left' : 'right');\n          }\n          break;\n        }\n      case 'ArrowLeft':\n        {\n          const leftColIndex = getLeftColumnIndex({\n            currentColIndex: colIndexBefore,\n            firstColIndex,\n            lastColIndex,\n            isRtl\n          });\n          if (leftColIndex !== null) {\n            goToCell(leftColIndex, getRowIdFromIndex(rowIndexBefore), isRtl ? 'right' : 'left');\n          }\n          break;\n        }\n      case 'Tab':\n        {\n          // \"Tab\" is only triggered by the row / cell editing feature\n          if (event.shiftKey && colIndexBefore > firstColIndex) {\n            goToCell(colIndexBefore - 1, getRowIdFromIndex(rowIndexBefore), 'left');\n          } else if (!event.shiftKey && colIndexBefore < lastColIndex) {\n            goToCell(colIndexBefore + 1, getRowIdFromIndex(rowIndexBefore), 'right');\n          }\n          break;\n        }\n      case ' ':\n        {\n          const field = params.field;\n          if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {\n            break;\n          }\n          const colDef = params.colDef;\n          if (colDef &&\n          // `GRID_TREE_DATA_GROUPING_FIELD` from the Pro package\n          colDef.field === '__tree_data_group__') {\n            break;\n          }\n          if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {\n            goToCell(colIndexBefore, getRowIdFromIndex(Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage)));\n          }\n          break;\n        }\n      case 'PageDown':\n        {\n          if (rowIndexBefore < lastRowIndexInPage) {\n            goToCell(colIndexBefore, getRowIdFromIndex(Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage)));\n          }\n          break;\n        }\n      case 'PageUp':\n        {\n          // Go to the first row before going to header\n          const nextRowIndex = Math.max(rowIndexBefore - viewportPageSize, firstRowIndexInPage);\n          if (nextRowIndex !== rowIndexBefore && nextRowIndex >= firstRowIndexInPage) {\n            goToCell(colIndexBefore, getRowIdFromIndex(nextRowIndex));\n          } else {\n            goToHeader(colIndexBefore, event);\n          }\n          break;\n        }\n      case 'Home':\n        {\n          if (event.ctrlKey || event.metaKey || event.shiftKey) {\n            goToCell(firstColIndex, getRowIdFromIndex(firstRowIndexInPage));\n          } else {\n            goToCell(firstColIndex, getRowIdFromIndex(rowIndexBefore));\n          }\n          break;\n        }\n      case 'End':\n        {\n          if (event.ctrlKey || event.metaKey || event.shiftKey) {\n            goToCell(lastColIndex, getRowIdFromIndex(lastRowIndexInPage));\n          } else {\n            goToCell(lastColIndex, getRowIdFromIndex(rowIndexBefore));\n          }\n          break;\n        }\n      default:\n        {\n          shouldPreventDefault = false;\n        }\n    }\n    if (shouldPreventDefault) {\n      event.preventDefault();\n    }\n  }, [apiRef, currentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader]);\n  const checkIfCanStartEditing = React.useCallback((initialValue, {\n    event\n  }) => {\n    if (event.key === ' ') {\n      // Space scrolls to the last row\n      return false;\n    }\n    return initialValue;\n  }, []);\n  useGridRegisterPipeProcessor(apiRef, 'canStartEditing', checkIfCanStartEditing);\n  useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);\n  useGridApiEventHandler(apiRef, 'headerFilterKeyDown', handleHeaderFilterKeyDown);\n  useGridApiEventHandler(apiRef, 'columnGroupHeaderKeyDown', handleColumnGroupHeaderKeyDown);\n  useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridLogger, useGridSelector, useGridApiMethod } from \"../../utils/index.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { gridPaginationMetaSelector } from \"./gridPaginationSelector.js\";\nexport const useGridPaginationMeta = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridPaginationMeta');\n  const paginationMeta = useGridSelector(apiRef, gridPaginationMetaSelector);\n  apiRef.current.registerControlState({\n    stateId: 'paginationMeta',\n    propModel: props.paginationMeta,\n    propOnChange: props.onPaginationMetaChange,\n    stateSelector: gridPaginationMetaSelector,\n    changeEvent: 'paginationMetaChange'\n  });\n\n  /**\n   * API METHODS\n   */\n  const setPaginationMeta = React.useCallback(newPaginationMeta => {\n    if (paginationMeta === newPaginationMeta) {\n      return;\n    }\n    logger.debug(\"Setting 'paginationMeta' to\", newPaginationMeta);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        meta: newPaginationMeta\n      })\n    }));\n  }, [apiRef, logger, paginationMeta]);\n  const paginationMetaApi = {\n    setPaginationMeta\n  };\n  useGridApiMethod(apiRef, paginationMetaApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const exportedPaginationMeta = gridPaginationMetaSelector(apiRef);\n    const shouldExportRowCount =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the `paginationMeta` is controlled\n    props.paginationMeta != null ||\n    // Always export if the `paginationMeta` has been initialized\n    props.initialState?.pagination?.meta != null;\n    if (!shouldExportRowCount) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      pagination: _extends({}, prevState.pagination, {\n        meta: exportedPaginationMeta\n      })\n    });\n  }, [apiRef, props.paginationMeta, props.initialState?.pagination?.meta]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const restoredPaginationMeta = context.stateToRestore.pagination?.meta ? context.stateToRestore.pagination.meta : gridPaginationMetaSelector(apiRef);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        meta: restoredPaginationMeta\n      })\n    }));\n    return params;\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    if (props.paginationMeta) {\n      apiRef.current.setPaginationMeta(props.paginationMeta);\n    }\n  }, [apiRef, props.paginationMeta]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\nimport { gridFilteredTopLevelRowCountSelector } from \"../filter/index.js\";\nimport { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from \"../../utils/index.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { gridPaginationRowCountSelector, gridPaginationMetaSelector, gridPaginationModelSelector } from \"./gridPaginationSelector.js\";\nexport const useGridRowCount = (apiRef, props) => {\n  const logger = useGridLogger(apiRef, 'useGridRowCount');\n  const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n  const rowCountState = useGridSelector(apiRef, gridPaginationRowCountSelector);\n  const paginationMeta = useGridSelector(apiRef, gridPaginationMetaSelector);\n  const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector);\n  const previousPageSize = useLazyRef(() => gridPaginationModelSelector(apiRef).pageSize);\n  apiRef.current.registerControlState({\n    stateId: 'paginationRowCount',\n    propModel: props.rowCount,\n    propOnChange: props.onRowCountChange,\n    stateSelector: gridPaginationRowCountSelector,\n    changeEvent: 'rowCountChange'\n  });\n\n  /**\n   * API METHODS\n   */\n  const setRowCount = React.useCallback(newRowCount => {\n    if (rowCountState === newRowCount) {\n      return;\n    }\n    logger.debug(\"Setting 'rowCount' to\", newRowCount);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        rowCount: newRowCount\n      })\n    }));\n  }, [apiRef, logger, rowCountState]);\n  const paginationRowCountApi = {\n    setRowCount\n  };\n  useGridApiMethod(apiRef, paginationRowCountApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const stateExportPreProcessing = React.useCallback((prevState, context) => {\n    const exportedRowCount = gridPaginationRowCountSelector(apiRef);\n    const shouldExportRowCount =\n    // Always export if the `exportOnlyDirtyModels` property is not activated\n    !context.exportOnlyDirtyModels ||\n    // Always export if the `rowCount` is controlled\n    props.rowCount != null ||\n    // Always export if the `rowCount` has been initialized\n    props.initialState?.pagination?.rowCount != null;\n    if (!shouldExportRowCount) {\n      return prevState;\n    }\n    return _extends({}, prevState, {\n      pagination: _extends({}, prevState.pagination, {\n        rowCount: exportedRowCount\n      })\n    });\n  }, [apiRef, props.rowCount, props.initialState?.pagination?.rowCount]);\n  const stateRestorePreProcessing = React.useCallback((params, context) => {\n    const restoredRowCount = context.stateToRestore.pagination?.rowCount ? context.stateToRestore.pagination.rowCount : gridPaginationRowCountSelector(apiRef);\n    apiRef.current.setState(state => _extends({}, state, {\n      pagination: _extends({}, state.pagination, {\n        rowCount: restoredRowCount\n      })\n    }));\n    return params;\n  }, [apiRef]);\n  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n\n  /**\n   * EVENTS\n   */\n  const handlePaginationModelChange = React.useCallback(model => {\n    if (props.paginationMode === 'client' || !previousPageSize.current) {\n      return;\n    }\n    if (model.pageSize !== previousPageSize.current) {\n      previousPageSize.current = model.pageSize;\n      if (rowCountState === -1) {\n        // Row count unknown and page size changed, reset the page\n        apiRef.current.setPage(0);\n      }\n    }\n  }, [props.paginationMode, previousPageSize, rowCountState, apiRef]);\n  useGridApiEventHandler(apiRef, 'paginationModelChange', handlePaginationModelChange);\n\n  /**\n   * EFFECTS\n   */\n  React.useEffect(() => {\n    if (props.paginationMode === 'client') {\n      apiRef.current.setRowCount(visibleTopLevelRowCount);\n    } else if (props.rowCount != null) {\n      apiRef.current.setRowCount(props.rowCount);\n    }\n  }, [apiRef, props.paginationMode, visibleTopLevelRowCount, props.rowCount]);\n  const isLastPage = paginationMeta.hasNextPage === false;\n  React.useEffect(() => {\n    if (isLastPage && rowCountState === -1) {\n      apiRef.current.setRowCount(paginationModel.pageSize * paginationModel.page + visibleTopLevelRowCount);\n    }\n  }, [apiRef, visibleTopLevelRowCount, isLastPage, rowCountState, paginationModel]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { useGridLogger } from \"../../utils/useGridLogger.js\";\nimport { gridExpandedRowCountSelector } from \"../filter/gridFilterSelector.js\";\nimport { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from \"../columns/gridColumnsSelector.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridRowsMetaSelector } from \"../rows/gridRowsMetaSelector.js\";\nimport { GRID_ID_AUTOGENERATED } from \"../rows/gridRowsUtils.js\";\nimport { defaultGetRowsToExport, getColumnsToExport } from \"./utils.js\";\nimport { getDerivedPaginationModel } from \"../pagination/useGridPaginationModel.js\";\nimport { useGridRegisterPipeProcessor } from \"../../core/pipeProcessing/index.js\";\nimport { GridPrintExportMenuItem } from \"../../../components/toolbar/GridToolbarExport.js\";\nimport { getTotalHeaderHeight } from \"../columns/gridColumnsUtils.js\";\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from \"../../../colDef/gridCheckboxSelectionColDef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction raf() {\n  return new Promise(resolve => {\n    requestAnimationFrame(() => {\n      resolve();\n    });\n  });\n}\nfunction buildPrintWindow(title) {\n  const iframeEl = document.createElement('iframe');\n  iframeEl.style.position = 'absolute';\n  iframeEl.style.width = '0px';\n  iframeEl.style.height = '0px';\n  iframeEl.title = title || document.title;\n  return iframeEl;\n}\n\n/**\n * @requires useGridColumns (state)\n * @requires useGridFilter (state)\n * @requires useGridSorting (state)\n * @requires useGridParamsApi (method)\n */\nexport const useGridPrintExport = (apiRef, props) => {\n  const hasRootReference = apiRef.current.rootElementRef.current !== null;\n  const logger = useGridLogger(apiRef, 'useGridPrintExport');\n  const doc = React.useRef(null);\n  const previousGridState = React.useRef(null);\n  const previousColumnVisibility = React.useRef({});\n  const previousRows = React.useRef([]);\n  const previousVirtualizationState = React.useRef();\n  React.useEffect(() => {\n    doc.current = ownerDocument(apiRef.current.rootElementRef.current);\n  }, [apiRef, hasRootReference]);\n\n  // Returns a promise because updateColumns triggers state update and\n  // the new state needs to be in place before the grid can be sized correctly\n  const updateGridColumnsForPrint = React.useCallback((fields, allColumns, includeCheckboxes) => new Promise(resolve => {\n    const exportedColumnFields = getColumnsToExport({\n      apiRef,\n      options: {\n        fields,\n        allColumns\n      }\n    }).map(column => column.field);\n    const columns = gridColumnDefinitionsSelector(apiRef);\n    const newColumnVisibilityModel = {};\n    columns.forEach(column => {\n      newColumnVisibilityModel[column.field] = exportedColumnFields.includes(column.field);\n    });\n    if (includeCheckboxes) {\n      newColumnVisibilityModel[GRID_CHECKBOX_SELECTION_COL_DEF.field] = true;\n    }\n    apiRef.current.setColumnVisibilityModel(newColumnVisibilityModel);\n    resolve();\n  }), [apiRef]);\n  const updateGridRowsForPrint = React.useCallback(getRowsToExport => {\n    const rowsToExportIds = getRowsToExport({\n      apiRef\n    });\n    const newRows = rowsToExportIds.reduce((acc, id) => {\n      const row = apiRef.current.getRow(id);\n      if (!row[GRID_ID_AUTOGENERATED]) {\n        acc.push(row);\n      }\n      return acc;\n    }, []);\n    apiRef.current.setRows(newRows);\n  }, [apiRef]);\n  const handlePrintWindowLoad = React.useCallback((printWindow, options) => {\n    const normalizeOptions = _extends({\n      copyStyles: true,\n      hideToolbar: false,\n      hideFooter: false,\n      includeCheckboxes: false\n    }, options);\n    const printDoc = printWindow.contentDocument;\n    if (!printDoc) {\n      return;\n    }\n    const rowsMeta = gridRowsMetaSelector(apiRef.current.state);\n    const gridRootElement = apiRef.current.rootElementRef.current;\n    const gridClone = gridRootElement.cloneNode(true);\n\n    // Allow to overflow to not hide the border of the last row\n    const gridMain = gridClone.querySelector(`.${gridClasses.main}`);\n    gridMain.style.overflow = 'visible';\n\n    // See https://support.google.com/chrome/thread/191619088?hl=en&msgid=193009642\n    gridClone.style.contain = 'size';\n    let gridToolbarElementHeight = gridRootElement.querySelector(`.${gridClasses.toolbarContainer}`)?.offsetHeight || 0;\n    let gridFooterElementHeight = gridRootElement.querySelector(`.${gridClasses.footerContainer}`)?.offsetHeight || 0;\n    if (normalizeOptions.hideToolbar) {\n      gridClone.querySelector(`.${gridClasses.toolbarContainer}`)?.remove();\n      gridToolbarElementHeight = 0;\n    }\n    if (normalizeOptions.hideFooter) {\n      gridClone.querySelector(`.${gridClasses.footerContainer}`)?.remove();\n      gridFooterElementHeight = 0;\n    }\n\n    // Expand container height to accommodate all rows\n    const computedTotalHeight = rowsMeta.currentPageTotalHeight + getTotalHeaderHeight(apiRef, props) + gridToolbarElementHeight + gridFooterElementHeight;\n    gridClone.style.height = `${computedTotalHeight}px`;\n    // The height above does not include grid border width, so we need to exclude it\n    gridClone.style.boxSizing = 'content-box';\n    if (!normalizeOptions.hideFooter) {\n      // the footer is always being placed at the bottom of the page as if all rows are exported\n      // so if getRowsToExport is being used to only export a subset of rows then we need to\n      // adjust the footer position to be correctly placed at the bottom of the grid\n      const gridFooterElement = gridClone.querySelector(`.${gridClasses.footerContainer}`);\n      gridFooterElement.style.position = 'absolute';\n      gridFooterElement.style.width = '100%';\n      gridFooterElement.style.top = `${computedTotalHeight - gridFooterElementHeight}px`;\n    }\n\n    // printDoc.body.appendChild(gridClone); should be enough but a clone isolation bug in Safari\n    // prevents us to do it\n    const container = document.createElement('div');\n    container.appendChild(gridClone);\n    // To avoid an empty page in start on Chromium based browsers\n    printDoc.body.style.marginTop = '0px';\n    printDoc.body.innerHTML = container.innerHTML;\n    const defaultPageStyle = typeof normalizeOptions.pageStyle === 'function' ? normalizeOptions.pageStyle() : normalizeOptions.pageStyle;\n    if (typeof defaultPageStyle === 'string') {\n      // TODO custom styles should always win\n      const styleElement = printDoc.createElement('style');\n      styleElement.appendChild(printDoc.createTextNode(defaultPageStyle));\n      printDoc.head.appendChild(styleElement);\n    }\n    if (normalizeOptions.bodyClassName) {\n      printDoc.body.classList.add(...normalizeOptions.bodyClassName.split(' '));\n    }\n    const stylesheetLoadPromises = [];\n    if (normalizeOptions.copyStyles) {\n      const rootCandidate = gridRootElement.getRootNode();\n      const root = rootCandidate.constructor.name === 'ShadowRoot' ? rootCandidate : doc.current;\n      const headStyleElements = root.querySelectorAll(\"style, link[rel='stylesheet']\");\n      for (let i = 0; i < headStyleElements.length; i += 1) {\n        const node = headStyleElements[i];\n        if (node.tagName === 'STYLE') {\n          const newHeadStyleElements = printDoc.createElement(node.tagName);\n          const sheet = node.sheet;\n          if (sheet) {\n            let styleCSS = '';\n            // NOTE: for-of is not supported by IE\n            for (let j = 0; j < sheet.cssRules.length; j += 1) {\n              if (typeof sheet.cssRules[j].cssText === 'string') {\n                styleCSS += `${sheet.cssRules[j].cssText}\\r\\n`;\n              }\n            }\n            newHeadStyleElements.appendChild(printDoc.createTextNode(styleCSS));\n            printDoc.head.appendChild(newHeadStyleElements);\n          }\n        } else if (node.getAttribute('href')) {\n          // If `href` tag is empty, avoid loading these links\n\n          const newHeadStyleElements = printDoc.createElement(node.tagName);\n          for (let j = 0; j < node.attributes.length; j += 1) {\n            const attr = node.attributes[j];\n            if (attr) {\n              newHeadStyleElements.setAttribute(attr.nodeName, attr.nodeValue || '');\n            }\n          }\n          stylesheetLoadPromises.push(new Promise(resolve => {\n            newHeadStyleElements.addEventListener('load', () => resolve());\n          }));\n          printDoc.head.appendChild(newHeadStyleElements);\n        }\n      }\n    }\n\n    // Trigger print\n    if (process.env.NODE_ENV !== 'test') {\n      // wait for remote stylesheets to load\n      Promise.all(stylesheetLoadPromises).then(() => {\n        printWindow.contentWindow.print();\n      });\n    }\n  }, [apiRef, doc, props]);\n  const handlePrintWindowAfterPrint = React.useCallback(printWindow => {\n    // Remove the print iframe\n    doc.current.body.removeChild(printWindow);\n\n    // Revert grid to previous state\n    apiRef.current.restoreState(previousGridState.current || {});\n    if (!previousGridState.current?.columns?.columnVisibilityModel) {\n      // if the apiRef.current.exportState(); did not exported the column visibility, we update it\n      apiRef.current.setColumnVisibilityModel(previousColumnVisibility.current);\n    }\n    apiRef.current.setState(state => _extends({}, state, {\n      virtualization: previousVirtualizationState.current\n    }));\n    apiRef.current.setRows(previousRows.current);\n\n    // Clear local state\n    previousGridState.current = null;\n    previousColumnVisibility.current = {};\n    previousRows.current = [];\n  }, [apiRef]);\n  const exportDataAsPrint = React.useCallback(async options => {\n    logger.debug(`Export data as Print`);\n    if (!apiRef.current.rootElementRef.current) {\n      throw new Error('MUI X: No grid root element available.');\n    }\n    previousGridState.current = apiRef.current.exportState();\n    // It appends that the visibility model is not exported, especially if columnVisibility is not controlled\n    previousColumnVisibility.current = gridColumnVisibilityModelSelector(apiRef);\n    previousRows.current = apiRef.current.getSortedRows().filter(row => !row[GRID_ID_AUTOGENERATED]);\n    if (props.pagination) {\n      const visibleRowCount = gridExpandedRowCountSelector(apiRef);\n      const paginationModel = {\n        page: 0,\n        pageSize: visibleRowCount\n      };\n      apiRef.current.setState(state => _extends({}, state, {\n        pagination: _extends({}, state.pagination, {\n          paginationModel: getDerivedPaginationModel(state.pagination,\n          // Using signature `DataGridPro` to allow more than 100 rows in the print export\n          'DataGridPro', paginationModel)\n        })\n      }));\n    }\n    previousVirtualizationState.current = apiRef.current.state.virtualization;\n    apiRef.current.setState(state => _extends({}, state, {\n      virtualization: _extends({}, state.virtualization, {\n        enabled: false,\n        enabledForColumns: false\n      })\n    }));\n    await updateGridColumnsForPrint(options?.fields, options?.allColumns, options?.includeCheckboxes);\n    updateGridRowsForPrint(options?.getRowsToExport ?? defaultGetRowsToExport);\n    await raf(); // wait for the state changes to take action\n    const printWindow = buildPrintWindow(options?.fileName);\n    if (process.env.NODE_ENV === 'test') {\n      doc.current.body.appendChild(printWindow);\n      // In test env, run the all pipeline without waiting for loading\n      handlePrintWindowLoad(printWindow, options);\n      handlePrintWindowAfterPrint(printWindow);\n    } else {\n      printWindow.onload = () => {\n        handlePrintWindowLoad(printWindow, options);\n        const mediaQueryList = printWindow.contentWindow.matchMedia('print');\n        mediaQueryList.addEventListener('change', mql => {\n          const isAfterPrint = mql.matches === false;\n          if (isAfterPrint) {\n            handlePrintWindowAfterPrint(printWindow);\n          }\n        });\n      };\n      doc.current.body.appendChild(printWindow);\n    }\n  }, [props, logger, apiRef, handlePrintWindowLoad, handlePrintWindowAfterPrint, updateGridColumnsForPrint, updateGridRowsForPrint]);\n  const printExportApi = {\n    exportDataAsPrint\n  };\n  useGridApiMethod(apiRef, printExportApi, 'public');\n\n  /**\n   * PRE-PROCESSING\n   */\n  const addExportMenuButtons = React.useCallback((initialValue, options) => {\n    if (options.printOptions?.disableToolbarButton) {\n      return initialValue;\n    }\n    return [...initialValue, {\n      component: /*#__PURE__*/_jsx(GridPrintExportMenuItem, {\n        options: options.printOptions\n      }),\n      componentName: 'printExport'\n    }];\n  }, []);\n  useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);\n};","export function throttle(func, wait = 166) {\n  let timeout;\n  let lastArgs;\n  const later = () => {\n    timeout = undefined;\n    func(...lastArgs);\n  };\n  function throttled(...args) {\n    lastArgs = args;\n    if (timeout === undefined) {\n      timeout = setTimeout(later, wait);\n    }\n  }\n  throttled.clear = () => {\n    clearTimeout(timeout);\n    timeout = undefined;\n  };\n  return throttled;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n  const doc = ownerDocument(node);\n  return doc.defaultView || window;\n}","import { useGridApiOptionHandler } from \"../../utils/useGridApiEventHandler.js\";\n/**\n * @requires useGridFocus (event) - can be after, async only\n * @requires useGridColumns (event) - can be after, async only\n */\nexport function useGridEvents(apiRef, props) {\n  useGridApiOptionHandler(apiRef, 'columnHeaderClick', props.onColumnHeaderClick);\n  useGridApiOptionHandler(apiRef, 'columnHeaderDoubleClick', props.onColumnHeaderDoubleClick);\n  useGridApiOptionHandler(apiRef, 'columnHeaderOver', props.onColumnHeaderOver);\n  useGridApiOptionHandler(apiRef, 'columnHeaderOut', props.onColumnHeaderOut);\n  useGridApiOptionHandler(apiRef, 'columnHeaderEnter', props.onColumnHeaderEnter);\n  useGridApiOptionHandler(apiRef, 'columnHeaderLeave', props.onColumnHeaderLeave);\n  useGridApiOptionHandler(apiRef, 'cellClick', props.onCellClick);\n  useGridApiOptionHandler(apiRef, 'cellDoubleClick', props.onCellDoubleClick);\n  useGridApiOptionHandler(apiRef, 'cellKeyDown', props.onCellKeyDown);\n  useGridApiOptionHandler(apiRef, 'preferencePanelClose', props.onPreferencePanelClose);\n  useGridApiOptionHandler(apiRef, 'preferencePanelOpen', props.onPreferencePanelOpen);\n  useGridApiOptionHandler(apiRef, 'menuOpen', props.onMenuOpen);\n  useGridApiOptionHandler(apiRef, 'menuClose', props.onMenuClose);\n  useGridApiOptionHandler(apiRef, 'rowDoubleClick', props.onRowDoubleClick);\n  useGridApiOptionHandler(apiRef, 'rowClick', props.onRowClick);\n  useGridApiOptionHandler(apiRef, 'stateChange', props.onStateChange);\n}","import * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/index.js\";\nexport const useGridStatePersistence = apiRef => {\n  const exportState = React.useCallback((params = {}) => {\n    const stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {}, params);\n    return stateToExport;\n  }, [apiRef]);\n  const restoreState = React.useCallback(stateToRestore => {\n    const response = apiRef.current.unstable_applyPipeProcessors('restoreState', {\n      callbacks: []\n    }, {\n      stateToRestore\n    });\n    response.callbacks.forEach(callback => {\n      callback();\n    });\n    apiRef.current.forceUpdate();\n  }, [apiRef]);\n  const statePersistenceApi = {\n    exportState,\n    restoreState\n  };\n  useGridApiMethod(apiRef, statePersistenceApi, 'public');\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridBody, GridFooterPlaceholder, GridHeader, GridRoot } from \"../components/index.js\";\nimport { useGridAriaAttributes } from \"../hooks/utils/useGridAriaAttributes.js\";\nimport { useGridRowAriaAttributes } from \"../hooks/features/rows/useGridRowAriaAttributes.js\";\nimport { GridContextProvider } from \"../context/GridContextProvider.js\";\nimport { useDataGridComponent } from \"./useDataGridComponent.js\";\nimport { useDataGridProps } from \"./useDataGridProps.js\";\nimport { propValidatorsDataGrid, validateProps } from \"../internals/utils/propValidation.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst configuration = {\n  hooks: {\n    useGridAriaAttributes,\n    useGridRowAriaAttributes\n  }\n};\nlet propValidators;\nif (process.env.NODE_ENV !== 'production') {\n  propValidators = [...propValidatorsDataGrid,\n  // Only validate in MIT version\n  props => props.columns && props.columns.some(column => column.resizable) && [`MUI X: \\`column.resizable = true\\` is not a valid prop.`, 'Column resizing is not available in the MIT version.', '', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n') || undefined];\n}\nconst DataGridRaw = /*#__PURE__*/React.forwardRef(function DataGrid(inProps, ref) {\n  const props = useDataGridProps(inProps);\n  const privateApiRef = useDataGridComponent(props.apiRef, props);\n  if (process.env.NODE_ENV !== 'production') {\n    validateProps(props, propValidators);\n  }\n  return /*#__PURE__*/_jsx(GridContextProvider, {\n    privateApiRef: privateApiRef,\n    configuration: configuration,\n    props: props,\n    children: /*#__PURE__*/_jsxs(GridRoot, _extends({\n      className: props.className,\n      style: props.style,\n      sx: props.sx,\n      ref: ref\n    }, props.forwardedProps, {\n      children: [/*#__PURE__*/_jsx(GridHeader, {}), /*#__PURE__*/_jsx(GridBody, {}), /*#__PURE__*/_jsx(GridFooterPlaceholder, {})]\n    }))\n  });\n});\n/**\n * Demos:\n * - [DataGrid](https://mui.com/x/react-data-grid/demo/)\n *\n * API:\n * - [DataGrid API](https://mui.com/x/api/data-grid/data-grid/)\n */\nexport const DataGrid = /*#__PURE__*/React.memo(DataGridRaw);\nDataGridRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The ref object that allows Data Grid manipulation. Can be instantiated with `useGridApiRef()`.\n   */\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }),\n  /**\n   * The label of the Data Grid.\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * The id of the element containing a label for the Data Grid.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.\n   * @default false\n   */\n  autoHeight: PropTypes.bool,\n  /**\n   * If `true`, the pageSize is calculated according to the container size and the max number of rows to avoid rendering a vertical scroll bar.\n   * @default false\n   */\n  autoPageSize: PropTypes.bool,\n  /**\n   * If `true`, columns are autosized after the datagrid is mounted.\n   * @default false\n   */\n  autosizeOnMount: PropTypes.bool,\n  /**\n   * The options for autosize when user-initiated.\n   */\n  autosizeOptions: PropTypes.shape({\n    columns: PropTypes.arrayOf(PropTypes.string),\n    expand: PropTypes.bool,\n    includeHeaders: PropTypes.bool,\n    includeOutliers: PropTypes.bool,\n    outliersFactor: PropTypes.number\n  }),\n  /**\n   * Controls the modes of the cells.\n   */\n  cellModesModel: PropTypes.object,\n  /**\n   * If `true`, the Data Grid will display an extra column with checkboxes for selecting rows.\n   * @default false\n   */\n  checkboxSelection: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The character used to separate cell values when copying to the clipboard.\n   * @default '\\t'\n   */\n  clipboardCopyCellDelimiter: PropTypes.string,\n  /**\n   * Column region in pixels to render before/after the viewport\n   * @default 150\n   */\n  columnBufferPx: PropTypes.number,\n  /**\n   * Sets the height in pixels of the column group headers in the Data Grid.\n   * Inherits the `columnHeaderHeight` value if not set.\n   */\n  columnGroupHeaderHeight: PropTypes.number,\n  columnGroupingModel: PropTypes.arrayOf(PropTypes.object),\n  /**\n   * Sets the height in pixel of the column headers in the Data Grid.\n   * @default 56\n   */\n  columnHeaderHeight: PropTypes.number,\n  /**\n   * Set of columns of type [[GridColDef]][].\n   */\n  columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n  /**\n   * Set the column visibility model of the Data Grid.\n   * If defined, the Data Grid will ignore the `hide` property in [[GridColDef]].\n   */\n  columnVisibilityModel: PropTypes.object,\n  /**\n   * Set the density of the Data Grid.\n   * @default \"standard\"\n   */\n  density: PropTypes.oneOf(['comfortable', 'compact', 'standard']),\n  /**\n   * If `true`, column autosizing on header separator double-click is disabled.\n   * @default false\n   */\n  disableAutosize: PropTypes.bool,\n  /**\n   * If `true`, column filters are disabled.\n   * @default false\n   */\n  disableColumnFilter: PropTypes.bool,\n  /**\n   * If `true`, the column menu is disabled.\n   * @default false\n   */\n  disableColumnMenu: PropTypes.bool,\n  /**\n   * If `true`, resizing columns is disabled.\n   * @default false\n   */\n  disableColumnResize: PropTypes.bool,\n  /**\n   * If `true`, hiding/showing columns is disabled.\n   * @default false\n   */\n  disableColumnSelector: PropTypes.bool,\n  /**\n   * If `true`, the column sorting feature will be disabled.\n   * @default false\n   */\n  disableColumnSorting: PropTypes.bool,\n  /**\n   * If `true`, the density selector is disabled.\n   * @default false\n   */\n  disableDensitySelector: PropTypes.bool,\n  /**\n   * If `true`, `eval()` is not used for performance optimization.\n   * @default false\n   */\n  disableEval: PropTypes.bool,\n  /**\n   * If `true`, multiple selection using the Ctrl/CMD or Shift key is disabled.\n   * The MIT DataGrid will ignore this prop, unless `checkboxSelection` is enabled.\n   * @default false (`!props.checkboxSelection` for MIT Data Grid)\n   */\n  disableMultipleRowSelection: PropTypes.bool,\n  /**\n   * If `true`, the selection on click on a row or cell is disabled.\n   * @default false\n   */\n  disableRowSelectionOnClick: PropTypes.bool,\n  /**\n   * If `true`, the virtualization is disabled.\n   * @default false\n   */\n  disableVirtualization: PropTypes.bool,\n  /**\n   * Controls whether to use the cell or row editing.\n   * @default \"cell\"\n   */\n  editMode: PropTypes.oneOf(['cell', 'row']),\n  /**\n   * Use if the actual rowCount is not known upfront, but an estimation is available.\n   * If some rows have children (for instance in the tree data), this number represents the amount of top level rows.\n   * Applicable only with `paginationMode=\"server\"` and when `rowCount=\"-1\"`\n   */\n  estimatedRowCount: PropTypes.number,\n  /**\n   * Unstable features, breaking changes might be introduced.\n   * For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.\n   */\n  experimentalFeatures: PropTypes.shape({\n    warnIfFocusStateIsNotSynced: PropTypes.bool\n  }),\n  /**\n   * The milliseconds delay to wait after a keystroke before triggering filtering.\n   * @default 150\n   */\n  filterDebounceMs: PropTypes.number,\n  /**\n   * Filtering can be processed on the server or client-side.\n   * Set it to 'server' if you would like to handle filtering on the server-side.\n   * @default \"client\"\n   */\n  filterMode: PropTypes.oneOf(['client', 'server']),\n  /**\n   * Set the filter model of the Data Grid.\n   */\n  filterModel: PropTypes.shape({\n    items: PropTypes.arrayOf(PropTypes.shape({\n      field: PropTypes.string.isRequired,\n      id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      operator: PropTypes.string.isRequired,\n      value: PropTypes.any\n    })).isRequired,\n    logicOperator: PropTypes.oneOf(['and', 'or']),\n    quickFilterExcludeHiddenColumns: PropTypes.bool,\n    quickFilterLogicOperator: PropTypes.oneOf(['and', 'or']),\n    quickFilterValues: PropTypes.array\n  }),\n  /**\n   * Forwarded props for the Data Grid root element.\n   * @ignore - do not document.\n   */\n  forwardedProps: PropTypes.object,\n  /**\n   * Function that applies CSS classes dynamically on cells.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @returns {string} The CSS class to apply to the cell.\n   */\n  getCellClassName: PropTypes.func,\n  /**\n   * Function that returns the element to render in row detail.\n   * @param {GridRowParams} params With all properties from [[GridRowParams]].\n   * @returns {React.JSX.Element} The row detail element.\n   */\n  getDetailPanelContent: PropTypes.func,\n  /**\n   * Function that returns the estimated height for a row.\n   * Only works if dynamic row height is used.\n   * Once the row height is measured this value is discarded.\n   * @param {GridRowHeightParams} params With all properties from [[GridRowHeightParams]].\n   * @returns {number | null} The estimated row height value. If `null` or `undefined` then the default row height, based on the density, is applied.\n   */\n  getEstimatedRowHeight: PropTypes.func,\n  /**\n   * Function that applies CSS classes dynamically on rows.\n   * @param {GridRowClassNameParams} params With all properties from [[GridRowClassNameParams]].\n   * @returns {string} The CSS class to apply to the row.\n   */\n  getRowClassName: PropTypes.func,\n  /**\n   * Function that sets the row height per row.\n   * @param {GridRowHeightParams} params With all properties from [[GridRowHeightParams]].\n   * @returns {GridRowHeightReturnValue} The row height value. If `null` or `undefined` then the default row height is applied. If \"auto\" then the row height is calculated based on the content.\n   */\n  getRowHeight: PropTypes.func,\n  /**\n   * Return the id of a given [[GridRowModel]].\n   */\n  getRowId: PropTypes.func,\n  /**\n   * Function that allows to specify the spacing between rows.\n   * @param {GridRowSpacingParams} params With all properties from [[GridRowSpacingParams]].\n   * @returns {GridRowSpacing} The row spacing values.\n   */\n  getRowSpacing: PropTypes.func,\n  /**\n   * If `true`, the footer component is hidden.\n   * @default false\n   */\n  hideFooter: PropTypes.bool,\n  /**\n   * If `true`, the pagination component in the footer is hidden.\n   * @default false\n   */\n  hideFooterPagination: PropTypes.bool,\n  /**\n   * If `true`, the selected row count in the footer is hidden.\n   * @default false\n   */\n  hideFooterSelectedRowCount: PropTypes.bool,\n  /**\n   * If `true`, the diacritics (accents) are ignored when filtering or quick filtering.\n   * E.g. when filter value is `cafe`, the rows with `café` will be visible.\n   * @default false\n   */\n  ignoreDiacritics: PropTypes.bool,\n  /**\n   * If `true`, the Data Grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.\n   * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.\n   * @default false\n   */\n  ignoreValueFormatterDuringExport: PropTypes.oneOfType([PropTypes.shape({\n    clipboardExport: PropTypes.bool,\n    csvExport: PropTypes.bool\n  }), PropTypes.bool]),\n  /**\n   * If `select`, a group header checkbox in indeterminate state (like \"Select All\" checkbox)\n   * will select all the rows under it.\n   * If `deselect`, it will deselect all the rows under it.\n   * Works only if `checkboxSelection` is enabled.\n   * @default \"deselect\"\n   */\n  indeterminateCheckboxAction: PropTypes.oneOf(['deselect', 'select']),\n  /**\n   * The initial state of the DataGrid.\n   * The data in it will be set in the state on initialization but will not be controlled.\n   * If one of the data in `initialState` is also being controlled, then the control state wins.\n   */\n  initialState: PropTypes.object,\n  /**\n   * Callback fired when a cell is rendered, returns true if the cell is editable.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @returns {boolean} A boolean indicating if the cell is editable.\n   */\n  isCellEditable: PropTypes.func,\n  /**\n   * Determines if a row can be selected.\n   * @param {GridRowParams} params With all properties from [[GridRowParams]].\n   * @returns {boolean} A boolean indicating if the row is selectable.\n   */\n  isRowSelectable: PropTypes.func,\n  /**\n   * If `true`, the selection model will retain selected rows that do not exist.\n   * Useful when using server side pagination and row selections need to be retained\n   * when changing pages.\n   * @default false\n   */\n  keepNonExistentRowsSelected: PropTypes.bool,\n  /**\n   * If `true`, a loading overlay is displayed.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Set the locale text of the Data Grid.\n   * You can find all the translation keys supported in [the source](https://github.com/mui/mui-x/blob/HEAD/packages/x-data-grid/src/constants/localeTextConstants.ts) in the GitHub repository.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Pass a custom logger in the components that implements the [[Logger]] interface.\n   * @default console\n   */\n  logger: PropTypes.shape({\n    debug: PropTypes.func.isRequired,\n    error: PropTypes.func.isRequired,\n    info: PropTypes.func.isRequired,\n    warn: PropTypes.func.isRequired\n  }),\n  /**\n   * Allows to pass the logging level or false to turn off logging.\n   * @default \"error\" (\"warn\" in dev mode)\n   */\n  logLevel: PropTypes.oneOf(['debug', 'error', 'info', 'warn', false]),\n  /**\n   * Nonce of the inline styles for [Content Security Policy](https://www.w3.org/TR/2016/REC-CSP2-20161215/#script-src-the-nonce-attribute).\n   */\n  nonce: PropTypes.string,\n  /**\n   * Callback fired when any cell is clicked.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onCellClick: PropTypes.func,\n  /**\n   * Callback fired when a double click event comes from a cell element.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onCellDoubleClick: PropTypes.func,\n  /**\n   * Callback fired when the cell turns to edit mode.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @param {MuiEvent<React.KeyboardEvent | React.MouseEvent>} event The event that caused this prop to be called.\n   */\n  onCellEditStart: PropTypes.func,\n  /**\n   * Callback fired when the cell turns to view mode.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @param {MuiEvent<MuiBaseEvent>} event The event that caused this prop to be called.\n   */\n  onCellEditStop: PropTypes.func,\n  /**\n   * Callback fired when a keydown event comes from a cell element.\n   * @param {GridCellParams} params With all properties from [[GridCellParams]].\n   * @param {MuiEvent<React.KeyboardEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onCellKeyDown: PropTypes.func,\n  /**\n   * Callback fired when the `cellModesModel` prop changes.\n   * @param {GridCellModesModel} cellModesModel Object containing which cells are in \"edit\" mode.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onCellModesModelChange: PropTypes.func,\n  /**\n   * Callback called when the data is copied to the clipboard.\n   * @param {string} data The data copied to the clipboard.\n   */\n  onClipboardCopy: PropTypes.func,\n  /**\n   * Callback fired when a click event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderClick: PropTypes.func,\n  /**\n   * Callback fired when a double click event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderDoubleClick: PropTypes.func,\n  /**\n   * Callback fired when a mouse enter event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderEnter: PropTypes.func,\n  /**\n   * Callback fired when a mouse leave event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderLeave: PropTypes.func,\n  /**\n   * Callback fired when a mouseout event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderOut: PropTypes.func,\n  /**\n   * Callback fired when a mouseover event comes from a column header element.\n   * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnHeaderOver: PropTypes.func,\n  /**\n   * Callback fired when a column is reordered.\n   * @param {GridColumnOrderChangeParams} params With all properties from [[GridColumnOrderChangeParams]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnOrderChange: PropTypes.func,\n  /**\n   * Callback fired while a column is being resized.\n   * @param {GridColumnResizeParams} params With all properties from [[GridColumnResizeParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnResize: PropTypes.func,\n  /**\n   * Callback fired when the column visibility model changes.\n   * @param {GridColumnVisibilityModel} model The new model.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnVisibilityModelChange: PropTypes.func,\n  /**\n   * Callback fired when the width of a column is changed.\n   * @param {GridColumnResizeParams} params With all properties from [[GridColumnResizeParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onColumnWidthChange: PropTypes.func,\n  /**\n   * Callback fired when the density changes.\n   * @param {GridDensity} density New density value.\n   */\n  onDensityChange: PropTypes.func,\n  /**\n   * Callback fired when the Filter model changes before the filters are applied.\n   * @param {GridFilterModel} model With all properties from [[GridFilterModel]].\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onFilterModelChange: PropTypes.func,\n  /**\n   * Callback fired when the menu is closed.\n   * @param {GridMenuParams} params With all properties from [[GridMenuParams]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onMenuClose: PropTypes.func,\n  /**\n   * Callback fired when the menu is opened.\n   * @param {GridMenuParams} params With all properties from [[GridMenuParams]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onMenuOpen: PropTypes.func,\n  /**\n   * Callback fired when the pagination meta has changed.\n   * @param {GridPaginationMeta} paginationMeta Updated pagination meta.\n   */\n  onPaginationMetaChange: PropTypes.func,\n  /**\n   * Callback fired when the pagination model has changed.\n   * @param {GridPaginationModel} model Updated pagination model.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onPaginationModelChange: PropTypes.func,\n  /**\n   * Callback fired when the preferences panel is closed.\n   * @param {GridPreferencePanelParams} params With all properties from [[GridPreferencePanelParams]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onPreferencePanelClose: PropTypes.func,\n  /**\n   * Callback fired when the preferences panel is opened.\n   * @param {GridPreferencePanelParams} params With all properties from [[GridPreferencePanelParams]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onPreferencePanelOpen: PropTypes.func,\n  /**\n   * Callback called when `processRowUpdate` throws an error or rejects.\n   * @param {any} error The error thrown.\n   */\n  onProcessRowUpdateError: PropTypes.func,\n  /**\n   * Callback fired when the Data Grid is resized.\n   * @param {ElementSize} containerSize With all properties from [[ElementSize]].\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onResize: PropTypes.func,\n  /**\n   * Callback fired when a row is clicked.\n   * Not called if the target clicked is an interactive element added by the built-in columns.\n   * @param {GridRowParams} params With all properties from [[GridRowParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onRowClick: PropTypes.func,\n  /**\n   * Callback fired when the row count has changed.\n   * @param {number} count Updated row count.\n   */\n  onRowCountChange: PropTypes.func,\n  /**\n   * Callback fired when a double click event comes from a row container element.\n   * @param {GridRowParams} params With all properties from [[RowParams]].\n   * @param {MuiEvent<React.MouseEvent>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onRowDoubleClick: PropTypes.func,\n  /**\n   * Callback fired when the row turns to edit mode.\n   * @param {GridRowParams} params With all properties from [[GridRowParams]].\n   * @param {MuiEvent<React.KeyboardEvent | React.MouseEvent>} event The event that caused this prop to be called.\n   */\n  onRowEditStart: PropTypes.func,\n  /**\n   * Callback fired when the row turns to view mode.\n   * @param {GridRowParams} params With all properties from [[GridRowParams]].\n   * @param {MuiEvent<MuiBaseEvent>} event The event that caused this prop to be called.\n   */\n  onRowEditStop: PropTypes.func,\n  /**\n   * Callback fired when the `rowModesModel` prop changes.\n   * @param {GridRowModesModel} rowModesModel Object containing which rows are in \"edit\" mode.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onRowModesModelChange: PropTypes.func,\n  /**\n   * Callback fired when the selection state of one or multiple rows changes.\n   * @param {GridRowSelectionModel} rowSelectionModel With all the row ids [[GridSelectionModel]].\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onRowSelectionModelChange: PropTypes.func,\n  /**\n   * Callback fired when the sort model changes before a column is sorted.\n   * @param {GridSortModel} model With all properties from [[GridSortModel]].\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   */\n  onSortModelChange: PropTypes.func,\n  /**\n   * Callback fired when the state of the Data Grid is updated.\n   * @param {GridState} state The new state.\n   * @param {MuiEvent<{}>} event The event object.\n   * @param {GridCallbackDetails} details Additional details for this callback.\n   * @ignore - do not document.\n   */\n  onStateChange: PropTypes.func,\n  /**\n   * Select the pageSize dynamically using the component UI.\n   * @default [25, 50, 100]\n   */\n  pageSizeOptions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    label: PropTypes.string.isRequired,\n    value: PropTypes.number.isRequired\n  })]).isRequired),\n  pagination: PropTypes.oneOf([true]),\n  /**\n   * The extra information about the pagination state of the Data Grid.\n   * Only applicable with `paginationMode=\"server\"`.\n   */\n  paginationMeta: PropTypes.shape({\n    hasNextPage: PropTypes.bool\n  }),\n  /**\n   * Pagination can be processed on the server or client-side.\n   * Set it to 'client' if you would like to handle the pagination on the client-side.\n   * Set it to 'server' if you would like to handle the pagination on the server-side.\n   * @default \"client\"\n   */\n  paginationMode: PropTypes.oneOf(['client', 'server']),\n  /**\n   * The pagination model of type [[GridPaginationModel]] which refers to current `page` and `pageSize`.\n   */\n  paginationModel: PropTypes.shape({\n    page: PropTypes.number.isRequired,\n    pageSize: PropTypes.number.isRequired\n  }),\n  /**\n   * Callback called before updating a row with new values in the row and cell editing.\n   * @template R\n   * @param {R} newRow Row object with the new values.\n   * @param {R} oldRow Row object with the old values.\n   * @returns {Promise<R> | R} The final values to update the row.\n   */\n  processRowUpdate: PropTypes.func,\n  /**\n   * The milliseconds throttle delay for resizing the grid.\n   * @default 60\n   */\n  resizeThrottleMs: PropTypes.number,\n  /**\n   * Row region in pixels to render before/after the viewport\n   * @default 150\n   */\n  rowBufferPx: PropTypes.number,\n  /**\n   * Set the total number of rows, if it is different from the length of the value `rows` prop.\n   * If some rows have children (for instance in the tree data), this number represents the amount of top level rows.\n   * Only works with `paginationMode=\"server\"`, ignored when `paginationMode=\"client\"`.\n   */\n  rowCount: PropTypes.number,\n  /**\n   * Sets the height in pixel of a row in the Data Grid.\n   * @default 52\n   */\n  rowHeight: PropTypes.number,\n  /**\n   * Controls the modes of the rows.\n   */\n  rowModesModel: PropTypes.object,\n  /**\n   * The milliseconds delay to wait after measuring the row height before recalculating row positions.\n   * Setting it to a lower value could be useful when using dynamic row height,\n   * but might reduce performance when displaying a large number of rows.\n   * @default 166\n   */\n  rowPositionsDebounceMs: PropTypes.number,\n  /**\n   * Set of rows of type [[GridRowsProp]].\n   * @default []\n   */\n  rows: PropTypes.arrayOf(PropTypes.object),\n  /**\n   * If `false`, the row selection mode is disabled.\n   * @default true\n   */\n  rowSelection: PropTypes.bool,\n  /**\n   * Sets the row selection model of the Data Grid.\n   */\n  rowSelectionModel: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired), PropTypes.number, PropTypes.string]),\n  /**\n   * Sets the type of space between rows added by `getRowSpacing`.\n   * @default \"margin\"\n   */\n  rowSpacingType: PropTypes.oneOf(['border', 'margin']),\n  /**\n   * Override the height/width of the Data Grid inner scrollbar.\n   */\n  scrollbarSize: PropTypes.number,\n  /**\n   * If `true`, vertical borders will be displayed between cells.\n   * @default false\n   */\n  showCellVerticalBorder: PropTypes.bool,\n  /**\n   * If `true`, vertical borders will be displayed between column header items.\n   * @default false\n   */\n  showColumnVerticalBorder: PropTypes.bool,\n  /**\n   * Overridable components props dynamically passed to the component at rendering.\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable components.\n   */\n  slots: PropTypes.object,\n  /**\n   * Sorting can be processed on the server or client-side.\n   * Set it to 'client' if you would like to handle sorting on the client-side.\n   * Set it to 'server' if you would like to handle sorting on the server-side.\n   * @default \"client\"\n   */\n  sortingMode: PropTypes.oneOf(['client', 'server']),\n  /**\n   * The order of the sorting sequence.\n   * @default ['asc', 'desc', null]\n   */\n  sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])),\n  /**\n   * Set the sort model of the Data Grid.\n   */\n  sortModel: PropTypes.arrayOf(PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    sort: PropTypes.oneOf(['asc', 'desc'])\n  })),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the Data Grid will auto span the cells over the rows having the same value.\n   * @default false\n   */\n  unstable_rowSpanning: PropTypes.bool\n};","import { gridVisibleColumnDefinitionsSelector } from \"../features/columns/gridColumnsSelector.js\";\nimport { useGridSelector } from \"./useGridSelector.js\";\nimport { useGridRootProps } from \"./useGridRootProps.js\";\nimport { gridColumnGroupsHeaderMaxDepthSelector } from \"../features/columnGrouping/gridColumnGroupsSelector.js\";\nimport { gridPinnedRowsCountSelector } from \"../features/rows/gridRowsSelector.js\";\nimport { useGridPrivateApiContext } from \"./useGridPrivateApiContext.js\";\nimport { isMultipleRowSelectionEnabled } from \"../features/rowSelection/utils.js\";\nimport { gridExpandedRowCountSelector } from \"../features/filter/gridFilterSelector.js\";\nexport const useGridAriaAttributes = () => {\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n  const accessibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector);\n  const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n  const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector);\n  return {\n    role: 'grid',\n    'aria-colcount': visibleColumns.length,\n    'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + accessibleRowCount,\n    'aria-multiselectable': isMultipleRowSelectionEnabled(rootProps)\n  };\n};","import * as React from 'react';\nimport { selectedIdsLookupSelector } from \"../rowSelection/index.js\";\nimport { useGridSelector } from \"../../utils/useGridSelector.js\";\nimport { gridColumnGroupsHeaderMaxDepthSelector } from \"../columnGrouping/gridColumnGroupsSelector.js\";\nimport { useGridPrivateApiContext } from \"../../utils/useGridPrivateApiContext.js\";\nexport const useGridRowAriaAttributes = () => {\n  const apiRef = useGridPrivateApiContext();\n  const selectedIdsLookup = useGridSelector(apiRef, selectedIdsLookupSelector);\n  const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n  return React.useCallback((rowNode, index) => {\n    const ariaAttributes = {};\n    const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based\n    ariaAttributes['aria-rowindex'] = ariaRowIndex;\n    if (apiRef.current.isRowSelectable(rowNode.id)) {\n      ariaAttributes['aria-selected'] = selectedIdsLookup[rowNode.id] !== undefined;\n    }\n    return ariaAttributes;\n  }, [apiRef, selectedIdsLookup, headerGroupingMaxDepth]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { GridOverlay } from \"./containers/GridOverlay.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridNoResultsOverlay = /*#__PURE__*/React.forwardRef(function GridNoResultsOverlay(props, ref) {\n  const apiRef = useGridApiContext();\n  const noResultsOverlayLabel = apiRef.current.getLocaleText('noResultsOverlayLabel');\n  return /*#__PURE__*/_jsx(GridOverlay, _extends({\n    ref: ref\n  }, props, {\n    children: noResultsOverlayLabel\n  }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sortingOrder\"];\nimport * as React from 'react';\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridColumnUnsortedIcon = /*#__PURE__*/React.memo(function GridColumnHeaderSortIcon(props) {\n  const {\n      sortingOrder\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const [nextSortDirection] = sortingOrder;\n  const Icon = nextSortDirection === 'asc' ? rootProps.slots.columnSortedAscendingIcon : rootProps.slots.columnSortedDescendingIcon;\n  return Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, other)) : null;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"native\"];\nimport * as React from 'react';\nimport MUIMenuItem from '@mui/material/MenuItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function MUISelectOption(_ref) {\n  let {\n      native\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (native) {\n    return /*#__PURE__*/_jsx(\"option\", _extends({}, props));\n  }\n  return /*#__PURE__*/_jsx(MUIMenuItem, _extends({}, props));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport MUICheckbox from '@mui/material/Checkbox';\nimport MUITextField from '@mui/material/TextField';\nimport MUIFormControl from '@mui/material/FormControl';\nimport MUISelect from '@mui/material/Select';\nimport MUIButton from '@mui/material/Button';\nimport MUIIconButton from '@mui/material/IconButton';\nimport MUIInputAdornment from '@mui/material/InputAdornment';\nimport MUITooltip from '@mui/material/Tooltip';\nimport MUIPopper from '@mui/material/Popper';\nimport MUIInputLabel from '@mui/material/InputLabel';\nimport MUIChip from '@mui/material/Chip';\nimport { GridColumnUnsortedIcon } from \"./icons/GridColumnUnsortedIcon.js\";\nimport { GridAddIcon, GridArrowDownwardIcon, GridArrowUpwardIcon, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridDragIcon, GridExpandMoreIcon, GridFilterAltIcon, GridFilterListIcon, GridKeyboardArrowRight, GridMoreVertIcon, GridRemoveIcon, GridSaveAltIcon, GridSearchIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridVisibilityOffIcon, GridViewColumnIcon, GridClearIcon, GridLoadIcon, GridDeleteForeverIcon } from \"./icons/index.js\";\nimport MUISelectOption from \"./components/MUISelectOption.js\";\nconst iconSlots = {\n  booleanCellTrueIcon: GridCheckIcon,\n  booleanCellFalseIcon: GridCloseIcon,\n  columnMenuIcon: GridTripleDotsVerticalIcon,\n  openFilterButtonIcon: GridFilterListIcon,\n  filterPanelDeleteIcon: GridCloseIcon,\n  columnFilteredIcon: GridFilterAltIcon,\n  columnSelectorIcon: GridColumnIcon,\n  columnUnsortedIcon: GridColumnUnsortedIcon,\n  columnSortedAscendingIcon: GridArrowUpwardIcon,\n  columnSortedDescendingIcon: GridArrowDownwardIcon,\n  columnResizeIcon: GridSeparatorIcon,\n  densityCompactIcon: GridViewHeadlineIcon,\n  densityStandardIcon: GridTableRowsIcon,\n  densityComfortableIcon: GridViewStreamIcon,\n  exportIcon: GridSaveAltIcon,\n  moreActionsIcon: GridMoreVertIcon,\n  treeDataCollapseIcon: GridExpandMoreIcon,\n  treeDataExpandIcon: GridKeyboardArrowRight,\n  groupingCriteriaCollapseIcon: GridExpandMoreIcon,\n  groupingCriteriaExpandIcon: GridKeyboardArrowRight,\n  detailPanelExpandIcon: GridAddIcon,\n  detailPanelCollapseIcon: GridRemoveIcon,\n  rowReorderIcon: GridDragIcon,\n  quickFilterIcon: GridSearchIcon,\n  quickFilterClearIcon: GridCloseIcon,\n  columnMenuHideIcon: GridVisibilityOffIcon,\n  columnMenuSortAscendingIcon: GridArrowUpwardIcon,\n  columnMenuSortDescendingIcon: GridArrowDownwardIcon,\n  columnMenuFilterIcon: GridFilterAltIcon,\n  columnMenuManageColumnsIcon: GridViewColumnIcon,\n  columnMenuClearIcon: GridClearIcon,\n  loadIcon: GridLoadIcon,\n  filterPanelAddIcon: GridAddIcon,\n  filterPanelRemoveAllIcon: GridDeleteForeverIcon,\n  columnReorderIcon: GridDragIcon\n};\nconst materialSlots = _extends({}, iconSlots, {\n  baseCheckbox: MUICheckbox,\n  baseTextField: MUITextField,\n  baseFormControl: MUIFormControl,\n  baseSelect: MUISelect,\n  baseButton: MUIButton,\n  baseIconButton: MUIIconButton,\n  baseInputAdornment: MUIInputAdornment,\n  baseTooltip: MUITooltip,\n  basePopper: MUIPopper,\n  baseInputLabel: MUIInputLabel,\n  baseSelectOption: MUISelectOption,\n  baseChip: MUIChip\n});\nexport default materialSlots;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount, GridColumnsManagement, GridColumnHeaderSortIcon } from \"../components/index.js\";\nimport { GridCell } from \"../components/cell/GridCell.js\";\nimport { GridColumnHeaders } from \"../components/GridColumnHeaders.js\";\nimport { GridColumnMenu } from \"../components/menu/columnMenu/GridColumnMenu.js\";\nimport { GridDetailPanels } from \"../components/GridDetailPanels.js\";\nimport { GridPinnedRows } from \"../components/GridPinnedRows.js\";\nimport { GridNoResultsOverlay } from \"../components/GridNoResultsOverlay.js\";\nimport materialSlots from \"../material/index.js\";\n\n// TODO: camelCase these key. It's a private helper now.\n// Remove then need to call `uncapitalizeObjectKeys`.\nexport const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {\n  cell: GridCell,\n  skeletonCell: GridSkeletonCell,\n  columnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,\n  columnHeaderSortIcon: GridColumnHeaderSortIcon,\n  columnMenu: GridColumnMenu,\n  columnHeaders: GridColumnHeaders,\n  detailPanels: GridDetailPanels,\n  footer: GridFooter,\n  footerRowCount: GridRowCount,\n  toolbar: null,\n  pinnedRows: GridPinnedRows,\n  loadingOverlay: GridLoadingOverlay,\n  noResultsOverlay: GridNoResultsOverlay,\n  noRowsOverlay: GridNoRowsOverlay,\n  pagination: GridPagination,\n  filterPanel: GridFilterPanel,\n  columnsPanel: GridColumnsPanel,\n  columnsManagement: GridColumnsManagement,\n  panel: GridPanel,\n  row: GridRow\n});","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function GridDetailPanels(_) {\n  return null;\n}","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function GridPinnedRows(_) {\n  return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport { GRID_DEFAULT_LOCALE_TEXT } from \"../constants/index.js\";\nimport { DATA_GRID_DEFAULT_SLOTS_COMPONENTS } from \"../constants/defaultGridSlotsComponents.js\";\nimport { GridEditModes } from \"../models/index.js\";\nimport { computeSlots, useProps } from \"../internals/utils/index.js\";\nconst DATA_GRID_FORCED_PROPS = {\n  disableMultipleColumnsFiltering: true,\n  disableMultipleColumnsSorting: true,\n  throttleRowsMs: undefined,\n  hideFooterRowCount: false,\n  pagination: true,\n  checkboxSelectionVisibleOnly: false,\n  disableColumnReorder: true,\n  keepColumnPositionIfDraggedOutside: false,\n  signature: 'DataGrid'\n};\n\n/**\n * The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.\n */\nexport const DATA_GRID_PROPS_DEFAULT_VALUES = {\n  autoHeight: false,\n  autoPageSize: false,\n  autosizeOnMount: false,\n  checkboxSelection: false,\n  checkboxSelectionVisibleOnly: false,\n  clipboardCopyCellDelimiter: '\\t',\n  columnBufferPx: 150,\n  columnHeaderHeight: 56,\n  disableAutosize: false,\n  disableColumnFilter: false,\n  disableColumnMenu: false,\n  disableColumnReorder: false,\n  disableColumnResize: false,\n  disableColumnSelector: false,\n  disableColumnSorting: false,\n  disableDensitySelector: false,\n  disableEval: false,\n  disableMultipleColumnsFiltering: false,\n  disableMultipleColumnsSorting: false,\n  disableMultipleRowSelection: false,\n  disableRowSelectionOnClick: false,\n  disableVirtualization: false,\n  editMode: GridEditModes.Cell,\n  filterDebounceMs: 150,\n  filterMode: 'client',\n  hideFooter: false,\n  hideFooterPagination: false,\n  hideFooterRowCount: false,\n  hideFooterSelectedRowCount: false,\n  ignoreDiacritics: false,\n  ignoreValueFormatterDuringExport: false,\n  // TODO v8: Update to 'select'\n  indeterminateCheckboxAction: 'deselect',\n  keepColumnPositionIfDraggedOutside: false,\n  keepNonExistentRowsSelected: false,\n  loading: false,\n  logger: console,\n  logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',\n  pageSizeOptions: [25, 50, 100],\n  pagination: false,\n  paginationMode: 'client',\n  resizeThrottleMs: 60,\n  rowBufferPx: 150,\n  rowHeight: 52,\n  rowPositionsDebounceMs: 166,\n  rows: [],\n  rowSelection: true,\n  rowSpacingType: 'margin',\n  showCellVerticalBorder: false,\n  showColumnVerticalBorder: false,\n  sortingMode: 'client',\n  sortingOrder: ['asc', 'desc', null],\n  throttleRowsMs: 0,\n  unstable_rowSpanning: false\n};\nconst defaultSlots = DATA_GRID_DEFAULT_SLOTS_COMPONENTS;\nexport const useDataGridProps = inProps => {\n  const themedProps = useProps(\n  // eslint-disable-next-line material-ui/mui-name-matches-component-name\n  useThemeProps({\n    props: inProps,\n    name: 'MuiDataGrid'\n  }));\n  const localeText = React.useMemo(() => _extends({}, GRID_DEFAULT_LOCALE_TEXT, themedProps.localeText), [themedProps.localeText]);\n  const slots = React.useMemo(() => computeSlots({\n    defaultSlots,\n    slots: themedProps.slots\n  }), [themedProps.slots]);\n  const injectDefaultProps = React.useMemo(() => {\n    return Object.keys(DATA_GRID_PROPS_DEFAULT_VALUES).reduce((acc, key) => {\n      // @ts-ignore\n      acc[key] = themedProps[key] ?? DATA_GRID_PROPS_DEFAULT_VALUES[key];\n      return acc;\n    }, {});\n  }, [themedProps]);\n  return React.useMemo(() => _extends({}, themedProps, injectDefaultProps, {\n    localeText,\n    slots\n  }, DATA_GRID_FORCED_PROPS), [themedProps, localeText, slots, injectDefaultProps]);\n};","import * as React from 'react';\n\n/** Gathers props for the root element into a single `.forwardedProps` field */\nfunction groupForwardedProps(props) {\n  const keys = Object.keys(props);\n  if (!keys.some(key => key.startsWith('aria-') || key.startsWith('data-'))) {\n    return props;\n  }\n  const newProps = {};\n  const forwardedProps = props.forwardedProps ?? {};\n  for (let i = 0; i < keys.length; i += 1) {\n    const key = keys[i];\n    if (key.startsWith('aria-') || key.startsWith('data-')) {\n      forwardedProps[key] = props[key];\n    } else {\n      newProps[key] = props[key];\n    }\n  }\n  newProps.forwardedProps = forwardedProps;\n  return newProps;\n}\nexport function useProps(allProps) {\n  return React.useMemo(() => groupForwardedProps(allProps), [allProps]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function computeSlots({\n  defaultSlots,\n  slots\n}) {\n  const overrides = slots;\n  if (!overrides || Object.keys(overrides).length === 0) {\n    return defaultSlots;\n  }\n  const result = _extends({}, defaultSlots);\n  Object.keys(overrides).forEach(key => {\n    const k = key;\n    if (overrides[k] !== undefined) {\n      result[k] = overrides[k];\n    }\n  });\n  return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nimport { renderActionsCell } from \"../components/cell/GridActionsCell.js\";\nexport const GRID_ACTIONS_COLUMN_TYPE = 'actions';\nexport const GRID_ACTIONS_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  sortable: false,\n  filterable: false,\n  // @ts-ignore\n  aggregable: false,\n  width: 100,\n  display: 'flex',\n  align: 'center',\n  headerAlign: 'center',\n  headerName: '',\n  disableColumnMenu: true,\n  disableExport: true,\n  renderCell: renderActionsCell,\n  getApplyQuickFilterFn: undefined\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nimport { renderBooleanCell } from \"../components/cell/GridBooleanCell.js\";\nimport { renderEditBooleanCell } from \"../components/cell/GridEditBooleanCell.js\";\nimport { gridNumberComparator } from \"../hooks/features/sorting/gridSortingUtils.js\";\nimport { getGridBooleanOperators } from \"./gridBooleanOperators.js\";\nconst gridBooleanFormatter = (value, row, column, apiRef) => {\n  return value ? apiRef.current.getLocaleText('booleanCellTrueLabel') : apiRef.current.getLocaleText('booleanCellFalseLabel');\n};\nconst stringToBoolean = value => {\n  switch (value.toLowerCase().trim()) {\n    case 'true':\n    case 'yes':\n    case '1':\n      return true;\n    case 'false':\n    case 'no':\n    case '0':\n    case 'null':\n    case 'undefined':\n      return false;\n    default:\n      return undefined;\n  }\n};\nexport const GRID_BOOLEAN_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  type: 'boolean',\n  display: 'flex',\n  align: 'center',\n  headerAlign: 'center',\n  renderCell: renderBooleanCell,\n  renderEditCell: renderEditBooleanCell,\n  sortComparator: gridNumberComparator,\n  valueFormatter: gridBooleanFormatter,\n  filterOperators: getGridBooleanOperators(),\n  getApplyQuickFilterFn: undefined,\n  // @ts-ignore\n  aggregable: false,\n  // @ts-ignore\n  pastedValueParser: value => stringToBoolean(value)\n});","import { GridFilterInputBoolean } from \"../components/panel/filterPanel/GridFilterInputBoolean.js\";\nexport const getGridBooleanOperators = () => [{\n  value: 'is',\n  getApplyFilterFn: filterItem => {\n    if (!filterItem.value) {\n      return null;\n    }\n    const valueAsBoolean = String(filterItem.value) === 'true';\n    return value => {\n      return Boolean(value) === valueAsBoolean;\n    };\n  },\n  InputComponent: GridFilterInputBoolean\n}];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridCellCheckboxRenderer } from \"../components/columnSelection/GridCellCheckboxRenderer.js\";\nimport { GridHeaderCheckbox } from \"../components/columnSelection/GridHeaderCheckbox.js\";\nimport { selectedIdsLookupSelector } from \"../hooks/features/rowSelection/gridRowSelectionSelector.js\";\nimport { GRID_BOOLEAN_COL_DEF } from \"./gridBooleanColDef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_CHECKBOX_SELECTION_FIELD = '__check__';\nexport const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF, {\n  type: 'custom',\n  field: GRID_CHECKBOX_SELECTION_FIELD,\n  width: 50,\n  resizable: false,\n  sortable: false,\n  filterable: false,\n  // @ts-ignore\n  aggregable: false,\n  disableColumnMenu: true,\n  disableReorder: true,\n  disableExport: true,\n  getApplyQuickFilterFn: undefined,\n  display: 'flex',\n  valueGetter: (value, row, column, apiRef) => {\n    const selectionLookup = selectedIdsLookupSelector(apiRef);\n    const rowId = apiRef.current.getRowId(row);\n    return selectionLookup[rowId] !== undefined;\n  },\n  renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),\n  renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridDateComparator } from \"../hooks/features/sorting/gridSortingUtils.js\";\nimport { getGridDateOperators } from \"./gridDateOperators.js\";\nimport { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nimport { renderEditDateCell } from \"../components/cell/GridEditDateCell.js\";\nfunction throwIfNotDateObject({\n  value,\n  columnType,\n  rowId,\n  field\n}) {\n  if (!(value instanceof Date)) {\n    throw new Error([`MUI X: \\`${columnType}\\` column type only accepts \\`Date\\` objects as values.`, 'Use `valueGetter` to transform the value into a `Date` object.', `Row ID: ${rowId}, field: \"${field}\".`].join('\\n'));\n  }\n}\nexport const gridDateFormatter = (value, row, column, apiRef) => {\n  if (!value) {\n    return '';\n  }\n  const rowId = apiRef.current.getRowId(row);\n  throwIfNotDateObject({\n    value,\n    columnType: 'date',\n    rowId,\n    field: column.field\n  });\n  return value.toLocaleDateString();\n};\nexport const gridDateTimeFormatter = (value, row, column, apiRef) => {\n  if (!value) {\n    return '';\n  }\n  const rowId = apiRef.current.getRowId(row);\n  throwIfNotDateObject({\n    value,\n    columnType: 'dateTime',\n    rowId,\n    field: column.field\n  });\n  return value.toLocaleString();\n};\nexport const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  type: 'date',\n  sortComparator: gridDateComparator,\n  valueFormatter: gridDateFormatter,\n  filterOperators: getGridDateOperators(),\n  renderEditCell: renderEditDateCell,\n  // @ts-ignore\n  pastedValueParser: value => new Date(value)\n});\nexport const GRID_DATETIME_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  type: 'dateTime',\n  sortComparator: gridDateComparator,\n  valueFormatter: gridDateTimeFormatter,\n  filterOperators: getGridDateOperators(true),\n  renderEditCell: renderEditDateCell,\n  // @ts-ignore\n  pastedValueParser: value => new Date(value)\n});","import { GridFilterInputDate } from \"../components/panel/filterPanel/GridFilterInputDate.js\";\nfunction buildApplyFilterFn(filterItem, compareFn, showTime, keepHours) {\n  if (!filterItem.value) {\n    return null;\n  }\n  const date = new Date(filterItem.value);\n  if (showTime) {\n    date.setSeconds(0, 0);\n  } else {\n    // In GMT-X timezone, the date will be one day behind.\n    // For 2022-08-16:\n    // GMT+2: Tue Aug 16 2022 02:00:00 GMT+0200\n    // GMT-4: Mon Aug 15 2022 20:00:00 GMT-0400\n    //\n    // We need to add the offset before resetting the hours.\n    date.setMinutes(date.getMinutes() + date.getTimezoneOffset());\n    date.setHours(0, 0, 0, 0);\n  }\n  const time = date.getTime();\n  return value => {\n    if (!value) {\n      return false;\n    }\n    if (keepHours) {\n      return compareFn(value.getTime(), time);\n    }\n\n    // Make a copy of the date to not reset the hours in the original object\n    const dateCopy = new Date(value);\n    if (showTime) {\n      dateCopy.setSeconds(0, 0);\n    } else {\n      dateCopy.setHours(0, 0, 0, 0);\n    }\n    return compareFn(dateCopy.getTime(), time);\n  };\n}\nexport const getGridDateOperators = showTime => [{\n  value: 'is',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 === value2, showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'not',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 !== value2, showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'after',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 > value2, showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'onOrAfter',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 >= value2, showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'before',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 < value2, showTime, !showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'onOrBefore',\n  getApplyFilterFn: filterItem => {\n    return buildApplyFilterFn(filterItem, (value1, value2) => value1 <= value2, showTime);\n  },\n  InputComponent: GridFilterInputDate,\n  InputComponentProps: {\n    type: showTime ? 'datetime-local' : 'date'\n  }\n}, {\n  value: 'isEmpty',\n  getApplyFilterFn: () => {\n    return value => {\n      return value == null;\n    };\n  },\n  requiresFilterValue: false\n}, {\n  value: 'isNotEmpty',\n  getApplyFilterFn: () => {\n    return value => {\n      return value != null;\n    };\n  },\n  requiresFilterValue: false\n}];","import { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nimport { GRID_NUMERIC_COL_DEF } from \"./gridNumericColDef.js\";\nimport { GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF } from \"./gridDateColDef.js\";\nimport { GRID_BOOLEAN_COL_DEF } from \"./gridBooleanColDef.js\";\nimport { GRID_SINGLE_SELECT_COL_DEF } from \"./gridSingleSelectColDef.js\";\nimport { GRID_ACTIONS_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from \"./gridActionsColDef.js\";\nexport const DEFAULT_GRID_COL_TYPE_KEY = 'string';\nexport const getGridDefaultColumnTypes = () => {\n  const nativeColumnTypes = {\n    string: GRID_STRING_COL_DEF,\n    number: GRID_NUMERIC_COL_DEF,\n    date: GRID_DATE_COL_DEF,\n    dateTime: GRID_DATETIME_COL_DEF,\n    boolean: GRID_BOOLEAN_COL_DEF,\n    singleSelect: GRID_SINGLE_SELECT_COL_DEF,\n    [GRID_ACTIONS_COLUMN_TYPE]: GRID_ACTIONS_COL_DEF,\n    custom: GRID_STRING_COL_DEF\n  };\n  return nativeColumnTypes;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridNumberComparator } from \"../hooks/features/sorting/gridSortingUtils.js\";\nimport { isNumber } from \"../utils/utils.js\";\nimport { getGridNumericOperators, getGridNumericQuickFilterFn } from \"./gridNumericOperators.js\";\nimport { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nexport const GRID_NUMERIC_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  type: 'number',\n  align: 'right',\n  headerAlign: 'right',\n  sortComparator: gridNumberComparator,\n  valueParser: value => value === '' ? null : Number(value),\n  valueFormatter: value => isNumber(value) ? value.toLocaleString() : value || '',\n  filterOperators: getGridNumericOperators(),\n  getApplyQuickFilterFn: getGridNumericQuickFilterFn\n});","import { GridFilterInputValue } from \"../components/panel/filterPanel/GridFilterInputValue.js\";\nimport { GridFilterInputMultipleValue } from \"../components/panel/filterPanel/GridFilterInputMultipleValue.js\";\nconst parseNumericValue = value => {\n  if (value == null) {\n    return null;\n  }\n  return Number(value);\n};\nexport const getGridNumericQuickFilterFn = value => {\n  if (value == null || Number.isNaN(value) || value === '') {\n    return null;\n  }\n  return columnValue => {\n    return parseNumericValue(columnValue) === parseNumericValue(value);\n  };\n};\nexport const getGridNumericOperators = () => [{\n  value: '=',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      return parseNumericValue(value) === filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: '!=',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      return parseNumericValue(value) !== filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: '>',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      if (value == null) {\n        return false;\n      }\n      return parseNumericValue(value) > filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: '>=',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      if (value == null) {\n        return false;\n      }\n      return parseNumericValue(value) >= filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: '<',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      if (value == null) {\n        return false;\n      }\n      return parseNumericValue(value) < filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: '<=',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n      return null;\n    }\n    return value => {\n      if (value == null) {\n        return false;\n      }\n      return parseNumericValue(value) <= filterItem.value;\n    };\n  },\n  InputComponent: GridFilterInputValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}, {\n  value: 'isEmpty',\n  getApplyFilterFn: () => {\n    return value => {\n      return value == null;\n    };\n  },\n  requiresFilterValue: false\n}, {\n  value: 'isNotEmpty',\n  getApplyFilterFn: () => {\n    return value => {\n      return value != null;\n    };\n  },\n  requiresFilterValue: false\n}, {\n  value: 'isAnyOf',\n  getApplyFilterFn: filterItem => {\n    if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n      return null;\n    }\n    return value => {\n      return value != null && filterItem.value.includes(Number(value));\n    };\n  },\n  InputComponent: GridFilterInputMultipleValue,\n  InputComponentProps: {\n    type: 'number'\n  }\n}];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from \"./gridStringColDef.js\";\nimport { renderEditSingleSelectCell } from \"../components/cell/GridEditSingleSelectCell.js\";\nimport { getGridSingleSelectOperators } from \"./gridSingleSelectOperators.js\";\nimport { getValueOptions, isSingleSelectColDef } from \"../components/panel/filterPanel/filterPanelUtils.js\";\nimport { isObject } from \"../utils/utils.js\";\nconst isArrayOfObjects = options => {\n  return typeof options[0] === 'object';\n};\nconst defaultGetOptionValue = value => {\n  return isObject(value) ? value.value : value;\n};\nconst defaultGetOptionLabel = value => {\n  return isObject(value) ? value.label : String(value);\n};\nexport const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n  type: 'singleSelect',\n  getOptionLabel: defaultGetOptionLabel,\n  getOptionValue: defaultGetOptionValue,\n  valueFormatter(value, row, colDef, apiRef) {\n    // const { id, field, value, api } = params;\n    const rowId = apiRef.current.getRowId(row);\n    if (!isSingleSelectColDef(colDef)) {\n      return '';\n    }\n    const valueOptions = getValueOptions(colDef, {\n      id: rowId,\n      row\n    });\n    if (value == null) {\n      return '';\n    }\n    if (!valueOptions) {\n      return value;\n    }\n    if (!isArrayOfObjects(valueOptions)) {\n      return colDef.getOptionLabel(value);\n    }\n    const valueOption = valueOptions.find(option => colDef.getOptionValue(option) === value);\n    return valueOption ? colDef.getOptionLabel(valueOption) : '';\n  },\n  renderEditCell: renderEditSingleSelectCell,\n  filterOperators: getGridSingleSelectOperators(),\n  // @ts-ignore\n  pastedValueParser: (value, row, column) => {\n    const colDef = column;\n    const valueOptions = getValueOptions(colDef) || [];\n    const getOptionValue = colDef.getOptionValue;\n    const valueOption = valueOptions.find(option => {\n      if (getOptionValue(option) === value) {\n        return true;\n      }\n      return false;\n    });\n    if (valueOption) {\n      return value;\n    }\n    // do not paste the value if it is not in the valueOptions\n    return undefined;\n  }\n});","import { GridFilterInputSingleSelect } from \"../components/panel/filterPanel/GridFilterInputSingleSelect.js\";\nimport { GridFilterInputMultipleSingleSelect } from \"../components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js\";\nimport { isObject } from \"../utils/utils.js\";\nconst parseObjectValue = value => {\n  if (value == null || !isObject(value)) {\n    return value;\n  }\n  return value.value;\n};\nexport const getGridSingleSelectOperators = () => [{\n  value: 'is',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || filterItem.value === '') {\n      return null;\n    }\n    return value => parseObjectValue(value) === parseObjectValue(filterItem.value);\n  },\n  InputComponent: GridFilterInputSingleSelect\n}, {\n  value: 'not',\n  getApplyFilterFn: filterItem => {\n    if (filterItem.value == null || filterItem.value === '') {\n      return null;\n    }\n    return value => parseObjectValue(value) !== parseObjectValue(filterItem.value);\n  },\n  InputComponent: GridFilterInputSingleSelect\n}, {\n  value: 'isAnyOf',\n  getApplyFilterFn: filterItem => {\n    if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n      return null;\n    }\n    const filterItemValues = filterItem.value.map(parseObjectValue);\n    return value => filterItemValues.includes(parseObjectValue(value));\n  },\n  InputComponent: GridFilterInputMultipleSingleSelect\n}];","import { renderEditInputCell } from \"../components/cell/GridEditInputCell.js\";\nimport { gridStringOrNumberComparator } from \"../hooks/features/sorting/gridSortingUtils.js\";\nimport { getGridStringOperators, getGridStringQuickFilterFn } from \"./gridStringOperators.js\";\n\n/**\n * TODO: Move pro and premium properties outside of this Community file\n */\nexport const GRID_STRING_COL_DEF = {\n  width: 100,\n  minWidth: 50,\n  maxWidth: Infinity,\n  hideable: true,\n  sortable: true,\n  resizable: true,\n  filterable: true,\n  groupable: true,\n  pinnable: true,\n  // @ts-ignore\n  aggregable: true,\n  editable: false,\n  sortComparator: gridStringOrNumberComparator,\n  type: 'string',\n  align: 'left',\n  filterOperators: getGridStringOperators(),\n  renderEditCell: renderEditInputCell,\n  getApplyQuickFilterFn: getGridStringQuickFilterFn\n};","import { GridFilterInputValue } from \"../components/panel/filterPanel/GridFilterInputValue.js\";\nimport { escapeRegExp } from \"../utils/utils.js\";\nimport { GridFilterInputMultipleValue } from \"../components/panel/filterPanel/GridFilterInputMultipleValue.js\";\nimport { removeDiacritics } from \"../hooks/features/filter/gridFilterUtils.js\";\nexport const getGridStringQuickFilterFn = value => {\n  if (!value) {\n    return null;\n  }\n  const filterRegex = new RegExp(escapeRegExp(value), 'i');\n  return (_, row, column, apiRef) => {\n    let columnValue = apiRef.current.getRowFormattedValue(row, column);\n    if (apiRef.current.ignoreDiacritics) {\n      columnValue = removeDiacritics(columnValue);\n    }\n    return columnValue != null ? filterRegex.test(columnValue.toString()) : false;\n  };\n};\nconst createContainsFilterFn = (disableTrim, negate) => filterItem => {\n  if (!filterItem.value) {\n    return null;\n  }\n  const trimmedValue = disableTrim ? filterItem.value : filterItem.value.trim();\n  const filterRegex = new RegExp(escapeRegExp(trimmedValue), 'i');\n  return value => {\n    if (value == null) {\n      return negate;\n    }\n    const matches = filterRegex.test(String(value));\n    return negate ? !matches : matches;\n  };\n};\nconst createEqualityFilterFn = (disableTrim, negate) => filterItem => {\n  if (!filterItem.value) {\n    return null;\n  }\n  const trimmedValue = disableTrim ? filterItem.value : filterItem.value.trim();\n  const collator = new Intl.Collator(undefined, {\n    sensitivity: 'base',\n    usage: 'search'\n  });\n  return value => {\n    if (value == null) {\n      return negate;\n    }\n    const isEqual = collator.compare(trimmedValue, value.toString()) === 0;\n    return negate ? !isEqual : isEqual;\n  };\n};\nconst createEmptyFilterFn = negate => () => {\n  return value => {\n    const isEmpty = value === '' || value == null;\n    return negate ? !isEmpty : isEmpty;\n  };\n};\nexport const getGridStringOperators = (disableTrim = false) => [{\n  value: 'contains',\n  getApplyFilterFn: createContainsFilterFn(disableTrim, false),\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'doesNotContain',\n  getApplyFilterFn: createContainsFilterFn(disableTrim, true),\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'equals',\n  getApplyFilterFn: createEqualityFilterFn(disableTrim, false),\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'doesNotEqual',\n  getApplyFilterFn: createEqualityFilterFn(disableTrim, true),\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'startsWith',\n  getApplyFilterFn: filterItem => {\n    if (!filterItem.value) {\n      return null;\n    }\n    const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n    const filterRegex = new RegExp(`^${escapeRegExp(filterItemValue)}.*$`, 'i');\n    return value => {\n      return value != null ? filterRegex.test(value.toString()) : false;\n    };\n  },\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'endsWith',\n  getApplyFilterFn: filterItem => {\n    if (!filterItem.value) {\n      return null;\n    }\n    const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n    const filterRegex = new RegExp(`.*${escapeRegExp(filterItemValue)}$`, 'i');\n    return value => {\n      return value != null ? filterRegex.test(value.toString()) : false;\n    };\n  },\n  InputComponent: GridFilterInputValue\n}, {\n  value: 'isEmpty',\n  getApplyFilterFn: createEmptyFilterFn(false),\n  requiresFilterValue: false\n}, {\n  value: 'isNotEmpty',\n  getApplyFilterFn: createEmptyFilterFn(true),\n  requiresFilterValue: false\n}, {\n  value: 'isAnyOf',\n  getApplyFilterFn: filterItem => {\n    if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n      return null;\n    }\n    const filterItemValue = disableTrim ? filterItem.value : filterItem.value.map(val => val.trim());\n    const collator = new Intl.Collator(undefined, {\n      sensitivity: 'base',\n      usage: 'search'\n    });\n    return value => value != null ? filterItemValue.some(filterValue => {\n      return collator.compare(filterValue, value.toString() || '') === 0;\n    }) : false;\n  },\n  InputComponent: GridFilterInputMultipleValue\n}];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_useId as useId, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { gridColumnGroupsLookupSelector } from \"../../hooks/features/columnGrouping/gridColumnGroupsSelector.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { GridGenericColumnHeaderItem } from \"./GridGenericColumnHeaderItem.js\";\nimport { isEventTargetInPortal } from \"../../utils/domUtils.js\";\nimport { shouldCellShowLeftBorder, shouldCellShowRightBorder } from \"../../utils/cellBorderUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    headerAlign,\n    isDragging,\n    isLastColumn,\n    showLeftBorder,\n    showRightBorder,\n    groupId,\n    pinnedPosition\n  } = ownerState;\n  const slots = {\n    root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight', isLastColumn && 'columnHeader--last'],\n    draggableContainer: ['columnHeaderDraggableContainer'],\n    titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],\n    titleContainerContent: ['columnHeaderTitleContainerContent']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnGroupHeader(props) {\n  const {\n    groupId,\n    width,\n    depth,\n    maxDepth,\n    fields,\n    height,\n    colIndex,\n    hasFocus,\n    tabIndex,\n    isLastColumn,\n    pinnedPosition,\n    style,\n    indexInSection,\n    sectionLength,\n    gridHasFiller\n  } = props;\n  const rootProps = useGridRootProps();\n  const headerCellRef = React.useRef(null);\n  const apiRef = useGridApiContext();\n  const columnGroupsLookup = useGridSelector(apiRef, gridColumnGroupsLookupSelector);\n  const group = groupId ? columnGroupsLookup[groupId] : {};\n  const {\n    headerName = groupId ?? '',\n    description = '',\n    headerAlign = undefined\n  } = group;\n  let headerComponent;\n  const render = groupId && columnGroupsLookup[groupId]?.renderHeaderGroup;\n  const renderParams = React.useMemo(() => ({\n    groupId,\n    headerName,\n    description,\n    depth,\n    maxDepth,\n    fields,\n    colIndex,\n    isLastColumn\n  }), [groupId, headerName, description, depth, maxDepth, fields, colIndex, isLastColumn]);\n  if (groupId && render) {\n    headerComponent = render(renderParams);\n  }\n  const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);\n  const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showColumnVerticalBorder, gridHasFiller);\n  const ownerState = _extends({}, props, {\n    classes: rootProps.classes,\n    showLeftBorder,\n    showRightBorder,\n    headerAlign,\n    depth,\n    isDragging: false\n  });\n  const label = headerName ?? groupId;\n  const id = useId();\n  const elementId = groupId === null ? `empty-group-cell-${id}` : groupId;\n  const classes = useUtilityClasses(ownerState);\n  React.useLayoutEffect(() => {\n    if (hasFocus) {\n      const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n      const elementToFocus = focusableElement || headerCellRef.current;\n      elementToFocus?.focus();\n    }\n  }, [apiRef, hasFocus]);\n  const publish = React.useCallback(eventName => event => {\n    // Ignore portal\n    // See https://github.com/mui/mui-x/issues/1721\n    if (isEventTargetInPortal(event)) {\n      return;\n    }\n    apiRef.current.publishEvent(eventName, renderParams, event);\n  },\n  // For now this is stupid, because renderParams change all the time.\n  // Need to move it's computation in the api, such that for a given depth+columnField, I can get the group parameters\n  [apiRef, renderParams]);\n  const mouseEventsHandlers = React.useMemo(() => ({\n    onKeyDown: publish('columnGroupHeaderKeyDown'),\n    onFocus: publish('columnGroupHeaderFocus'),\n    onBlur: publish('columnGroupHeaderBlur')\n  }), [publish]);\n  const headerClassName = typeof group.headerClassName === 'function' ? group.headerClassName(renderParams) : group.headerClassName;\n  return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, _extends({\n    ref: headerCellRef,\n    classes: classes,\n    columnMenuOpen: false,\n    colIndex: colIndex,\n    height: height,\n    isResizing: false,\n    sortDirection: null,\n    hasFocus: false,\n    tabIndex: tabIndex,\n    isDraggable: false,\n    headerComponent: headerComponent,\n    headerClassName: headerClassName,\n    description: description,\n    elementId: elementId,\n    width: width,\n    columnMenuIconButton: null,\n    columnTitleIconButtons: null,\n    resizable: false,\n    label: label,\n    \"aria-colspan\": fields.length\n    // The fields are wrapped between |-...-| to avoid confusion between fields \"id\" and \"id2\" when using selector data-fields~=\n    ,\n    \"data-fields\": `|-${fields.join('-|-')}-|`,\n    style: style\n  }, mouseEventsHandlers));\n}\nexport { GridColumnGroupHeader };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useGridSelector } from \"../../utils/index.js\";\nimport { useGridRootProps } from \"../../utils/useGridRootProps.js\";\nimport { useGridPrivateApiContext } from \"../../utils/useGridPrivateApiContext.js\";\nimport { useGridApiEventHandler } from \"../../utils/useGridApiEventHandler.js\";\nimport { GridColumnHeaderItem } from \"../../../components/columnHeaders/GridColumnHeaderItem.js\";\nimport { gridDimensionsSelector } from \"../dimensions/index.js\";\nimport { gridRenderContextColumnsSelector, gridVirtualizationColumnEnabledSelector } from \"../virtualization/index.js\";\nimport { computeOffsetLeft } from \"../virtualization/useGridVirtualScroller.js\";\nimport { GridColumnGroupHeader } from \"../../../components/columnHeaders/GridColumnGroupHeader.js\";\nimport { GridPinnedColumnPosition, gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector, gridColumnLookupSelector } from \"../columns/index.js\";\nimport { gridColumnGroupsUnwrappedModelSelector } from \"../columnGrouping/gridColumnGroupsSelector.js\";\nimport { GridScrollbarFillerCell as ScrollbarFiller } from \"../../../components/GridScrollbarFillerCell.js\";\nimport { getPinnedCellOffset } from \"../../../internals/utils/getPinnedCellOffset.js\";\nimport { GridColumnHeaderSeparatorSides } from \"../../../components/columnHeaders/GridColumnHeaderSeparator.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const GridColumnHeaderRow = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnHeaderRow',\n  overridesResolver: (_, styles) => styles.columnHeaderRow\n})({\n  display: 'flex'\n});\nexport const useGridColumnHeaders = props => {\n  const {\n    visibleColumns,\n    sortColumnLookup,\n    filterColumnLookup,\n    columnHeaderTabIndexState,\n    columnGroupHeaderTabIndexState,\n    columnHeaderFocus,\n    columnGroupHeaderFocus,\n    headerGroupingMaxDepth,\n    columnMenuState,\n    columnVisibility,\n    columnGroupsHeaderStructure,\n    hasOtherElementInTabSequence\n  } = props;\n  const [dragCol, setDragCol] = React.useState('');\n  const [resizeCol, setResizeCol] = React.useState('');\n  const apiRef = useGridPrivateApiContext();\n  const isRtl = useRtl();\n  const rootProps = useGridRootProps();\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);\n  const columnGroupsModel = useGridSelector(apiRef, gridColumnGroupsUnwrappedModelSelector);\n  const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);\n  const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);\n  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);\n  const columnsLookup = useGridSelector(apiRef, gridColumnLookupSelector);\n  const offsetLeft = computeOffsetLeft(columnPositions, renderContext, pinnedColumns.left.length);\n  const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;\n  React.useEffect(() => {\n    apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;\n  }, [apiRef]);\n  const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);\n  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);\n  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);\n  const handleColumnReorderStop = React.useCallback(() => setDragCol(''), []);\n  const leftRenderContext = React.useMemo(() => {\n    return pinnedColumns.left.length ? {\n      firstColumnIndex: 0,\n      lastColumnIndex: pinnedColumns.left.length\n    } : null;\n  }, [pinnedColumns.left.length]);\n  const rightRenderContext = React.useMemo(() => {\n    return pinnedColumns.right.length ? {\n      firstColumnIndex: visibleColumns.length - pinnedColumns.right.length,\n      lastColumnIndex: visibleColumns.length\n    } : null;\n  }, [pinnedColumns.right.length, visibleColumns.length]);\n  useGridApiEventHandler(apiRef, 'columnResizeStart', handleColumnResizeStart);\n  useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);\n  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);\n  useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);\n\n  // Helper for computation common between getColumnHeaders and getColumnGroupHeaders\n  const getColumnsToRender = params => {\n    const {\n      renderContext: currentContext = renderContext,\n      maxLastColumn = visibleColumns.length\n    } = params || {};\n    const firstColumnToRender = currentContext.firstColumnIndex;\n    const lastColumnToRender = !hasVirtualization ? maxLastColumn : currentContext.lastColumnIndex;\n    const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);\n    return {\n      renderedColumns,\n      firstColumnToRender,\n      lastColumnToRender\n    };\n  };\n  const getFillers = (params, children, leftOverflow, borderBottom = false) => {\n    const isPinnedRight = params?.position === GridPinnedColumnPosition.RIGHT;\n    const isNotPinned = params?.position === undefined;\n    const hasScrollbarFiller = pinnedColumns.right.length > 0 && isPinnedRight || pinnedColumns.right.length === 0 && isNotPinned;\n    const leftOffsetWidth = offsetLeft - leftOverflow;\n    return /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [isNotPinned && /*#__PURE__*/_jsx(\"div\", {\n        role: \"presentation\",\n        style: {\n          width: leftOffsetWidth\n        }\n      }), children, isNotPinned && /*#__PURE__*/_jsx(\"div\", {\n        role: \"presentation\",\n        className: clsx(gridClasses.filler, borderBottom && gridClasses['filler--borderBottom'])\n      }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {\n        header: true,\n        pinnedRight: isPinnedRight,\n        borderBottom: borderBottom,\n        borderTop: false\n      })]\n    });\n  };\n  const getCellOffsetStyle = ({\n    pinnedPosition,\n    columnIndex,\n    computedWidth\n  }) => {\n    let style;\n    const isLeftPinned = pinnedPosition === GridPinnedColumnPosition.LEFT;\n    const isRightPinned = pinnedPosition === GridPinnedColumnPosition.RIGHT;\n    if (isLeftPinned || isRightPinned) {\n      const pinnedOffset = getPinnedCellOffset(pinnedPosition, computedWidth, columnIndex, columnPositions, dimensions);\n      let side = isLeftPinned ? 'left' : 'right';\n      if (isRtl) {\n        side = isLeftPinned ? 'right' : 'left';\n      }\n      if (pinnedPosition === 'left') {\n        style = {\n          [side]: pinnedOffset\n        };\n      }\n      if (pinnedPosition === 'right') {\n        style = {\n          [side]: pinnedOffset\n        };\n      }\n    }\n    return style;\n  };\n  const getColumnHeaders = (params, other = {}) => {\n    const {\n      renderedColumns,\n      firstColumnToRender\n    } = getColumnsToRender(params);\n    const columns = [];\n    for (let i = 0; i < renderedColumns.length; i += 1) {\n      const colDef = renderedColumns[i];\n      const columnIndex = firstColumnToRender + i;\n      const isFirstColumn = columnIndex === 0;\n      const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === colDef.field || isFirstColumn && !hasOtherElementInTabSequence ? 0 : -1;\n      const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;\n      const open = columnMenuState.open && columnMenuState.field === colDef.field;\n      const pinnedPosition = params?.position;\n      const style = getCellOffsetStyle({\n        pinnedPosition,\n        columnIndex,\n        computedWidth: colDef.computedWidth\n      });\n      const siblingWithBorderingSeparator = pinnedPosition === GridPinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];\n      const isSiblingFocused = siblingWithBorderingSeparator ? columnHeaderFocus !== null && columnHeaderFocus.field === siblingWithBorderingSeparator.field : false;\n      const isLastUnpinned = columnIndex + 1 === columnPositions.length - pinnedColumns.right.length;\n      columns.push(/*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[colDef.field], {\n        columnMenuOpen: open,\n        filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,\n        headerHeight: dimensions.headerHeight,\n        isDragging: colDef.field === dragCol,\n        colDef: colDef,\n        colIndex: columnIndex,\n        isResizing: resizeCol === colDef.field,\n        isLast: columnIndex === columnPositions.length - 1,\n        hasFocus: hasFocus,\n        tabIndex: tabIndex,\n        pinnedPosition: pinnedPosition,\n        style: style,\n        indexInSection: i,\n        sectionLength: renderedColumns.length,\n        gridHasFiller: gridHasFiller,\n        isLastUnpinned: isLastUnpinned,\n        isSiblingFocused: isSiblingFocused\n      }, other), colDef.field));\n    }\n    return getFillers(params, columns, 0);\n  };\n  const getColumnHeadersRow = () => {\n    return /*#__PURE__*/_jsxs(GridColumnHeaderRow, {\n      role: \"row\",\n      \"aria-rowindex\": headerGroupingMaxDepth + 1,\n      ownerState: rootProps,\n      className: gridClasses['row--borderBottom'],\n      children: [leftRenderContext && getColumnHeaders({\n        position: GridPinnedColumnPosition.LEFT,\n        renderContext: leftRenderContext,\n        maxLastColumn: leftRenderContext.lastColumnIndex\n      }, {\n        disableReorder: true\n      }), getColumnHeaders({\n        renderContext,\n        maxLastColumn: visibleColumns.length - pinnedColumns.right.length\n      }), rightRenderContext && getColumnHeaders({\n        position: GridPinnedColumnPosition.RIGHT,\n        renderContext: rightRenderContext,\n        maxLastColumn: rightRenderContext.lastColumnIndex\n      }, {\n        disableReorder: true,\n        separatorSide: GridColumnHeaderSeparatorSides.Left\n      })]\n    });\n  };\n  const getColumnGroupHeaders = ({\n    depth,\n    params\n  }) => {\n    const columnsToRender = getColumnsToRender(params);\n    if (columnsToRender.renderedColumns.length === 0) {\n      return null;\n    }\n    const {\n      renderedColumns,\n      firstColumnToRender,\n      lastColumnToRender\n    } = columnsToRender;\n    const rowStructure = columnGroupsHeaderStructure[depth];\n    const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;\n    const firstGroupToRender = columnGroupsModel[firstColumnFieldToRender]?.[depth] ?? null;\n    const firstGroupIndex = rowStructure.findIndex(({\n      groupId,\n      columnFields\n    }) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));\n    const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;\n    const lastGroupToRender = columnGroupsModel[lastColumnFieldToRender]?.[depth] ?? null;\n    const lastGroupIndex = rowStructure.findIndex(({\n      groupId,\n      columnFields\n    }) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender));\n    const visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(groupStructure => {\n      return _extends({}, groupStructure, {\n        columnFields: groupStructure.columnFields.filter(field => columnVisibility[field] !== false)\n      });\n    }).filter(groupStructure => groupStructure.columnFields.length > 0);\n    const firstVisibleColumnIndex = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);\n    const hiddenGroupColumns = visibleColumnGroupHeader[0].columnFields.slice(0, firstVisibleColumnIndex);\n    const leftOverflow = hiddenGroupColumns.reduce((acc, field) => {\n      const column = columnsLookup[field];\n      return acc + (column.computedWidth ?? 0);\n    }, 0);\n    let columnIndex = firstColumnToRender;\n    const children = visibleColumnGroupHeader.map(({\n      groupId,\n      columnFields\n    }, index) => {\n      const hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);\n      const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;\n      const headerInfo = {\n        groupId,\n        width: columnFields.reduce((acc, field) => acc + columnsLookup[field].computedWidth, 0),\n        fields: columnFields,\n        colIndex: columnIndex,\n        hasFocus,\n        tabIndex\n      };\n      const pinnedPosition = params.position;\n      const style = getCellOffsetStyle({\n        pinnedPosition,\n        columnIndex,\n        computedWidth: headerInfo.width\n      });\n      columnIndex += columnFields.length;\n      let indexInSection = index;\n      if (pinnedPosition === 'left') {\n        // Group headers can expand to multiple columns, we need to adjust the index\n        indexInSection = columnIndex - 1;\n      }\n      return /*#__PURE__*/_jsx(GridColumnGroupHeader, {\n        groupId: groupId,\n        width: headerInfo.width,\n        fields: headerInfo.fields,\n        colIndex: headerInfo.colIndex,\n        depth: depth,\n        isLastColumn: headerInfo.colIndex === visibleColumns.length - headerInfo.fields.length,\n        maxDepth: headerGroupingMaxDepth,\n        height: dimensions.groupHeaderHeight,\n        hasFocus: hasFocus,\n        tabIndex: tabIndex,\n        pinnedPosition: pinnedPosition,\n        style: style,\n        indexInSection: indexInSection,\n        sectionLength: renderedColumns.length,\n        gridHasFiller: gridHasFiller\n      }, index);\n    });\n    return getFillers(params, children, leftOverflow);\n  };\n  const getColumnGroupHeadersRows = () => {\n    if (headerGroupingMaxDepth === 0) {\n      return null;\n    }\n    const headerRows = [];\n    for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {\n      headerRows.push(/*#__PURE__*/_jsxs(GridColumnHeaderRow, {\n        role: \"row\",\n        \"aria-rowindex\": depth + 1,\n        ownerState: rootProps,\n        children: [leftRenderContext && getColumnGroupHeaders({\n          depth,\n          params: {\n            position: GridPinnedColumnPosition.LEFT,\n            renderContext: leftRenderContext,\n            maxLastColumn: leftRenderContext.lastColumnIndex\n          }\n        }), getColumnGroupHeaders({\n          depth,\n          params: {\n            renderContext\n          }\n        }), rightRenderContext && getColumnGroupHeaders({\n          depth,\n          params: {\n            position: GridPinnedColumnPosition.RIGHT,\n            renderContext: rightRenderContext,\n            maxLastColumn: rightRenderContext.lastColumnIndex\n          }\n        })]\n      }, depth));\n    }\n    return headerRows;\n  };\n  return {\n    renderContext,\n    leftRenderContext,\n    rightRenderContext,\n    pinnedColumns,\n    visibleColumns,\n    getCellOffsetStyle,\n    getFillers,\n    getColumnHeadersRow,\n    getColumnsToRender,\n    getColumnGroupHeadersRows,\n    isDragging: !!dragCol,\n    getInnerProps: () => ({\n      role: 'rowgroup'\n    })\n  };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['columnHeaders']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnHeadersRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnHeaders',\n  overridesResolver: (props, styles) => styles.columnHeaders\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',\n  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'\n});\nexport const GridBaseColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders(props, ref) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridColumnHeadersRoot, _extends({\n    ref: ref,\n    className: clsx(className, classes.root),\n    ownerState: rootProps\n  }, other, {\n    role: \"presentation\"\n  }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"visibleColumns\", \"sortColumnLookup\", \"filterColumnLookup\", \"columnHeaderTabIndexState\", \"columnGroupHeaderTabIndexState\", \"columnHeaderFocus\", \"columnGroupHeaderFocus\", \"headerGroupingMaxDepth\", \"columnMenuState\", \"columnVisibility\", \"columnGroupsHeaderStructure\", \"hasOtherElementInTabSequence\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useGridColumnHeaders } from \"../hooks/features/columnHeaders/useGridColumnHeaders.js\";\nimport { GridBaseColumnHeaders } from \"./columnHeaders/GridBaseColumnHeaders.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders(props, ref) {\n  const {\n      visibleColumns,\n      sortColumnLookup,\n      filterColumnLookup,\n      columnHeaderTabIndexState,\n      columnGroupHeaderTabIndexState,\n      columnHeaderFocus,\n      columnGroupHeaderFocus,\n      headerGroupingMaxDepth,\n      columnMenuState,\n      columnVisibility,\n      columnGroupsHeaderStructure,\n      hasOtherElementInTabSequence\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    getInnerProps,\n    getColumnHeadersRow,\n    getColumnGroupHeadersRows\n  } = useGridColumnHeaders({\n    visibleColumns,\n    sortColumnLookup,\n    filterColumnLookup,\n    columnHeaderTabIndexState,\n    columnGroupHeaderTabIndexState,\n    columnHeaderFocus,\n    columnGroupHeaderFocus,\n    headerGroupingMaxDepth,\n    columnMenuState,\n    columnVisibility,\n    columnGroupsHeaderStructure,\n    hasOtherElementInTabSequence\n  });\n  return /*#__PURE__*/_jsxs(GridBaseColumnHeaders, _extends({\n    ref: ref\n  }, other, getInnerProps(), {\n    children: [getColumnGroupHeadersRows(), getColumnHeadersRow()]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaders.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  columnGroupHeaderFocus: PropTypes.shape({\n    depth: PropTypes.number.isRequired,\n    field: PropTypes.string.isRequired\n  }),\n  columnGroupHeaderTabIndexState: PropTypes.shape({\n    depth: PropTypes.number.isRequired,\n    field: PropTypes.string.isRequired\n  }),\n  columnGroupsHeaderStructure: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.shape({\n    columnFields: PropTypes.arrayOf(PropTypes.string).isRequired,\n    groupId: PropTypes.string\n  }))).isRequired,\n  columnHeaderFocus: PropTypes.shape({\n    field: PropTypes.string.isRequired\n  }),\n  columnHeaderTabIndexState: PropTypes.shape({\n    field: PropTypes.string.isRequired\n  }),\n  columnMenuState: PropTypes.shape({\n    field: PropTypes.string,\n    open: PropTypes.bool.isRequired\n  }).isRequired,\n  columnVisibility: PropTypes.object.isRequired,\n  filterColumnLookup: PropTypes.object.isRequired,\n  hasOtherElementInTabSequence: PropTypes.bool.isRequired,\n  headerGroupingMaxDepth: PropTypes.number.isRequired,\n  sortColumnLookup: PropTypes.object.isRequired,\n  visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired\n} : void 0;\nconst MemoizedGridColumnHeaders = fastMemo(GridColumnHeaders);\nexport { MemoizedGridColumnHeaders as GridColumnHeaders };","import * as React from 'react';\nexport const GridConfigurationContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  GridConfigurationContext.displayName = 'GridConfigurationContext';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridSelector } from \"../hooks/utils/useGridSelector.js\";\nimport { gridTopLevelRowCountSelector } from \"../hooks/features/rows/gridRowsSelector.js\";\nimport { selectedGridRowsCountSelector } from \"../hooks/features/rowSelection/gridRowSelectionSelector.js\";\nimport { gridFilteredTopLevelRowCountSelector } from \"../hooks/features/filter/gridFilterSelector.js\";\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { GridSelectedRowCount } from \"./GridSelectedRowCount.js\";\nimport { GridFooterContainer } from \"./containers/GridFooterContainer.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridFooter = /*#__PURE__*/React.forwardRef(function GridFooter(props, ref) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const totalTopLevelRowCount = useGridSelector(apiRef, gridTopLevelRowCountSelector);\n  const selectedRowCount = useGridSelector(apiRef, selectedGridRowsCountSelector);\n  const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n  const selectedRowCountElement = !rootProps.hideFooterSelectedRowCount && selectedRowCount > 0 ? /*#__PURE__*/_jsx(GridSelectedRowCount, {\n    selectedRowCount: selectedRowCount\n  }) : /*#__PURE__*/_jsx(\"div\", {});\n  const rowCountElement = !rootProps.hideFooterRowCount && !rootProps.pagination ? /*#__PURE__*/_jsx(rootProps.slots.footerRowCount, _extends({}, rootProps.slotProps?.footerRowCount, {\n    rowCount: totalTopLevelRowCount,\n    visibleRowCount: visibleTopLevelRowCount\n  })) : null;\n  const paginationElement = rootProps.pagination && !rootProps.hideFooterPagination && rootProps.slots.pagination && /*#__PURE__*/_jsx(rootProps.slots.pagination, _extends({}, rootProps.slotProps?.pagination));\n  return /*#__PURE__*/_jsxs(GridFooterContainer, _extends({\n    ref: ref\n  }, props, {\n    children: [selectedRowCountElement, rowCountElement, paginationElement]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooter.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { gridColumnDefinitionsSelector } from \"../../hooks/features/columns/gridColumnsSelector.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridPreferencePanelStateSelector } from \"../../hooks/features/preferencesPanel/gridPreferencePanelSelector.js\";\nimport { GridPreferencePanelsValue } from \"../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridPreferencesPanel() {\n  const apiRef = useGridApiContext();\n  const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n  const rootProps = useGridRootProps();\n  const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n  const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);\n  return /*#__PURE__*/_jsx(rootProps.slots.panel, _extends({\n    as: rootProps.slots.basePopper,\n    open: columns.length > 0 && preferencePanelState.open,\n    id: preferencePanelState.panelId,\n    \"aria-labelledby\": preferencePanelState.labelId\n  }, rootProps.slotProps?.panel, rootProps.slotProps?.basePopper, {\n    children: panelContent\n  }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { GridPreferencesPanel } from \"./panel/GridPreferencesPanel.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function GridHeader() {\n  const rootProps = useGridRootProps();\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(GridPreferencesPanel, {}), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, rootProps.slotProps?.toolbar))]\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport useForkRef from '@mui/utils/useForkRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { GridPinnedColumnPosition, gridColumnPositionsSelector, gridColumnsTotalWidthSelector, gridDimensionsSelector, gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, useGridApiEventHandler, useGridSelector } from \"../hooks/index.js\";\nimport { getDataGridUtilityClass, gridClasses } from \"../constants/gridClasses.js\";\nimport { getPinnedCellOffset } from \"../internals/utils/getPinnedCellOffset.js\";\nimport { shouldCellShowLeftBorder, shouldCellShowRightBorder } from \"../utils/cellBorderUtils.js\";\nimport { escapeOperandAttributeSelector } from \"../utils/domUtils.js\";\nimport { GridScrollbarFillerCell } from \"./GridScrollbarFillerCell.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SkeletonOverlay = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'SkeletonLoadingOverlay',\n  overridesResolver: (props, styles) => styles.skeletonLoadingOverlay\n})({\n  minWidth: '100%',\n  width: 'max-content',\n  // prevents overflow: clip; cutting off the x axis\n  height: '100%',\n  overflow: 'clip' // y axis is hidden while the x axis is allowed to overflow\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['skeletonLoadingOverlay']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst getColIndex = el => parseInt(el.getAttribute('data-colindex'), 10);\nconst GridSkeletonLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridSkeletonLoadingOverlay(props, forwardedRef) {\n  const rootProps = useGridRootProps();\n  const {\n    slots\n  } = rootProps;\n  const classes = useUtilityClasses({\n    classes: rootProps.classes\n  });\n  const ref = React.useRef(null);\n  const handleRef = useForkRef(ref, forwardedRef);\n  const apiRef = useGridApiContext();\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const viewportHeight = dimensions?.viewportInnerSize.height ?? 0;\n  const skeletonRowsCount = Math.ceil(viewportHeight / dimensions.rowHeight);\n  const totalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);\n  const positions = useGridSelector(apiRef, gridColumnPositionsSelector);\n  const inViewportCount = React.useMemo(() => positions.filter(value => value <= totalWidth).length, [totalWidth, positions]);\n  const allVisibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);\n  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);\n  const getPinnedStyle = React.useCallback((computedWidth, index, position) => {\n    const pinnedOffset = getPinnedCellOffset(position, computedWidth, index, positions, dimensions);\n    return {\n      [position]: pinnedOffset\n    };\n  }, [dimensions, positions]);\n  const getPinnedPosition = React.useCallback(field => {\n    if (pinnedColumns.left.findIndex(col => col.field === field) !== -1) {\n      return GridPinnedColumnPosition.LEFT;\n    }\n    if (pinnedColumns.right.findIndex(col => col.field === field) !== -1) {\n      return GridPinnedColumnPosition.RIGHT;\n    }\n    return undefined;\n  }, [pinnedColumns.left, pinnedColumns.right]);\n  const children = React.useMemo(() => {\n    const array = [];\n    for (let i = 0; i < skeletonRowsCount; i += 1) {\n      const rowCells = [];\n      for (let colIndex = 0; colIndex < columns.length; colIndex += 1) {\n        const column = columns[colIndex];\n        const pinnedPosition = getPinnedPosition(column.field);\n        const isPinnedLeft = pinnedPosition === GridPinnedColumnPosition.LEFT;\n        const isPinnedRight = pinnedPosition === GridPinnedColumnPosition.RIGHT;\n        const sectionLength = pinnedPosition ? pinnedColumns[pinnedPosition].length // pinned section\n        : columns.length - pinnedColumns.left.length - pinnedColumns.right.length; // middle section\n        const sectionIndex = pinnedPosition ? pinnedColumns[pinnedPosition].findIndex(col => col.field === column.field) // pinned section\n        : colIndex - pinnedColumns.left.length; // middle section\n        const pinnedStyle = pinnedPosition && getPinnedStyle(column.computedWidth, colIndex, pinnedPosition);\n        const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;\n        const showRightBorder = shouldCellShowRightBorder(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);\n        const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, sectionIndex);\n        const isLastColumn = colIndex === columns.length - 1;\n        const isFirstPinnedRight = isPinnedRight && sectionIndex === 0;\n        const hasFillerBefore = isFirstPinnedRight && gridHasFiller;\n        const hasFillerAfter = isLastColumn && !isFirstPinnedRight && gridHasFiller;\n        const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth;\n        const emptyCellWidth = Math.max(0, expandedWidth);\n        const emptyCell = /*#__PURE__*/_jsx(slots.skeletonCell, {\n          width: emptyCellWidth,\n          empty: true\n        }, `skeleton-filler-column-${i}`);\n        const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;\n        const hasScrollbarFiller = isLastColumn && scrollbarWidth !== 0;\n        if (hasFillerBefore) {\n          rowCells.push(emptyCell);\n        }\n        rowCells.push(/*#__PURE__*/_jsx(slots.skeletonCell, {\n          field: column.field,\n          type: column.type,\n          align: column.align,\n          width: \"var(--width)\",\n          height: dimensions.rowHeight,\n          \"data-colindex\": colIndex,\n          className: clsx(isPinnedLeft && gridClasses['cell--pinnedLeft'], isPinnedRight && gridClasses['cell--pinnedRight'], showRightBorder && gridClasses['cell--withRightBorder'], showLeftBorder && gridClasses['cell--withLeftBorder']),\n          style: _extends({\n            '--width': `${column.computedWidth}px`\n          }, pinnedStyle)\n        }, `skeleton-column-${i}-${column.field}`));\n        if (hasFillerAfter) {\n          rowCells.push(emptyCell);\n        }\n        if (hasScrollbarFiller) {\n          rowCells.push(/*#__PURE__*/_jsx(GridScrollbarFillerCell, {\n            pinnedRight: pinnedColumns.right.length > 0\n          }, `skeleton-scrollbar-filler-${i}`));\n        }\n      }\n      array.push(/*#__PURE__*/_jsx(\"div\", {\n        className: clsx(gridClasses.row, gridClasses.rowSkeleton, i === 0 && gridClasses['row--firstVisible']),\n        children: rowCells\n      }, `skeleton-row-${i}`));\n    }\n    return array;\n  }, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions.columnsTotalWidth, dimensions.viewportOuterSize.width, dimensions.rowHeight, dimensions.hasScrollY, dimensions.scrollbarSize, getPinnedPosition, getPinnedStyle]);\n\n  // Sync the column resize of the overlay columns with the grid\n  const handleColumnResize = params => {\n    const {\n      colDef,\n      width\n    } = params;\n    const cells = ref.current?.querySelectorAll(`[data-field=\"${escapeOperandAttributeSelector(colDef.field)}\"]`);\n    if (!cells) {\n      throw new Error('MUI X: Expected skeleton cells to be defined with `data-field` attribute.');\n    }\n    const resizedColIndex = columns.findIndex(col => col.field === colDef.field);\n    const pinnedPosition = getPinnedPosition(colDef.field);\n    const isPinnedLeft = pinnedPosition === GridPinnedColumnPosition.LEFT;\n    const isPinnedRight = pinnedPosition === GridPinnedColumnPosition.RIGHT;\n    const currentWidth = getComputedStyle(cells[0]).getPropertyValue('--width');\n    const delta = parseInt(currentWidth, 10) - width;\n    if (cells) {\n      cells.forEach(element => {\n        element.style.setProperty('--width', `${width}px`);\n      });\n    }\n    if (isPinnedLeft) {\n      const pinnedCells = ref.current?.querySelectorAll(`.${gridClasses['cell--pinnedLeft']}`);\n      pinnedCells?.forEach(element => {\n        const colIndex = getColIndex(element);\n        if (colIndex > resizedColIndex) {\n          element.style.left = `${parseInt(getComputedStyle(element).left, 10) - delta}px`;\n        }\n      });\n    }\n    if (isPinnedRight) {\n      const pinnedCells = ref.current?.querySelectorAll(`.${gridClasses['cell--pinnedRight']}`);\n      pinnedCells?.forEach(element => {\n        const colIndex = getColIndex(element);\n        if (colIndex < resizedColIndex) {\n          element.style.right = `${parseInt(getComputedStyle(element).right, 10) + delta}px`;\n        }\n      });\n    }\n  };\n  useGridApiEventHandler(apiRef, 'columnResize', handleColumnResize);\n  return /*#__PURE__*/_jsx(SkeletonOverlay, _extends({\n    className: classes.root,\n    ref: handleRef\n  }, props, {\n    children: children\n  }));\n});\nexport { GridSkeletonLoadingOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\", \"noRowsVariant\", \"style\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { GridOverlay } from \"./containers/GridOverlay.js\";\nimport { GridSkeletonLoadingOverlay } from \"./GridSkeletonLoadingOverlay.js\";\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { gridRowCountSelector, useGridSelector } from \"../hooks/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst LOADING_VARIANTS = {\n  'circular-progress': {\n    component: CircularProgress,\n    style: {}\n  },\n  'linear-progress': {\n    component: LinearProgress,\n    style: {\n      display: 'block'\n    }\n  },\n  skeleton: {\n    component: GridSkeletonLoadingOverlay,\n    style: {\n      display: 'block'\n    }\n  }\n};\nconst GridLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridLoadingOverlay(props, ref) {\n  const {\n      variant = 'circular-progress',\n      noRowsVariant = 'circular-progress',\n      style\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rowsCount = useGridSelector(apiRef, gridRowCountSelector);\n  const activeVariant = LOADING_VARIANTS[rowsCount === 0 ? noRowsVariant : variant];\n  return /*#__PURE__*/_jsx(GridOverlay, _extends({\n    ref: ref,\n    style: _extends({}, activeVariant.style, style)\n  }, other, {\n    children: /*#__PURE__*/_jsx(activeVariant.component, {})\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridLoadingOverlay.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The variant of the overlay when no rows are displayed.\n   * @default 'circular-progress'\n   */\n  noRowsVariant: PropTypes.oneOf(['circular-progress', 'linear-progress', 'skeleton']),\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant of the overlay.\n   * @default 'circular-progress'\n   */\n  variant: PropTypes.oneOf(['circular-progress', 'linear-progress', 'skeleton'])\n} : void 0;\nexport { GridLoadingOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { GridOverlay } from \"./containers/GridOverlay.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridNoRowsOverlay = /*#__PURE__*/React.forwardRef(function GridNoRowsOverlay(props, ref) {\n  const apiRef = useGridApiContext();\n  const noRowsLabel = apiRef.current.getLocaleText('noRowsLabel');\n  return /*#__PURE__*/_jsx(GridOverlay, _extends({\n    ref: ref\n  }, props, {\n    children: noRowsLabel\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridNoRowsOverlay.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridNoRowsOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport TablePagination, { tablePaginationClasses } from '@mui/material/TablePagination';\nimport { useGridSelector } from \"../hooks/utils/useGridSelector.js\";\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { gridPaginationModelSelector, gridPaginationRowCountSelector, gridPageCountSelector } from \"../hooks/features/pagination/gridPaginationSelector.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridPaginationRoot = styled(TablePagination)(({\n  theme\n}) => ({\n  maxHeight: 'calc(100% + 1px)',\n  // border width\n  [`& .${tablePaginationClasses.selectLabel}`]: {\n    display: 'none',\n    [theme.breakpoints.up('sm')]: {\n      display: 'block'\n    }\n  },\n  [`& .${tablePaginationClasses.input}`]: {\n    display: 'none',\n    [theme.breakpoints.up('sm')]: {\n      display: 'inline-flex'\n    }\n  }\n}));\nconst wrapLabelDisplayedRows = (labelDisplayedRows, estimated) => {\n  return ({\n    from,\n    to,\n    count,\n    page\n  }) => labelDisplayedRows({\n    from,\n    to,\n    count,\n    page,\n    estimated\n  });\n};\nconst defaultLabelDisplayedRows = ({\n  from,\n  to,\n  count,\n  estimated\n}) => {\n  if (!estimated) {\n    return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;\n  }\n  return `${from}–${to} of ${count !== -1 ? count : `more than ${estimated > to ? estimated : to}`}`;\n};\n\n// A mutable version of a readonly array.\n\nconst GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(props, ref) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector);\n  const rowCount = useGridSelector(apiRef, gridPaginationRowCountSelector);\n  const pageCount = useGridSelector(apiRef, gridPageCountSelector);\n  const {\n    paginationMode,\n    loading,\n    estimatedRowCount\n  } = rootProps;\n  const computedProps = React.useMemo(() => {\n    if (rowCount === -1 && paginationMode === 'server' && loading) {\n      return {\n        backIconButtonProps: {\n          disabled: true\n        },\n        nextIconButtonProps: {\n          disabled: true\n        }\n      };\n    }\n    return {};\n  }, [loading, paginationMode, rowCount]);\n  const lastPage = React.useMemo(() => Math.max(0, pageCount - 1), [pageCount]);\n  const computedPage = React.useMemo(() => {\n    if (rowCount === -1) {\n      return paginationModel.page;\n    }\n    return paginationModel.page <= lastPage ? paginationModel.page : lastPage;\n  }, [lastPage, paginationModel.page, rowCount]);\n  const handlePageSizeChange = React.useCallback(event => {\n    const pageSize = Number(event.target.value);\n    apiRef.current.setPageSize(pageSize);\n  }, [apiRef]);\n  const handlePageChange = React.useCallback((_, page) => {\n    apiRef.current.setPage(page);\n  }, [apiRef]);\n  const isPageSizeIncludedInPageSizeOptions = pageSize => {\n    for (let i = 0; i < rootProps.pageSizeOptions.length; i += 1) {\n      const option = rootProps.pageSizeOptions[i];\n      if (typeof option === 'number') {\n        if (option === pageSize) {\n          return true;\n        }\n      } else if (option.value === pageSize) {\n        return true;\n      }\n    }\n    return false;\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const warnedOnceMissingInPageSizeOptions = React.useRef(false);\n    const pageSize = rootProps.paginationModel?.pageSize ?? paginationModel.pageSize;\n    if (!warnedOnceMissingInPageSizeOptions.current && !rootProps.autoPageSize && !isPageSizeIncludedInPageSizeOptions(pageSize)) {\n      console.warn([`MUI X: The page size \\`${paginationModel.pageSize}\\` is not present in the \\`pageSizeOptions\\`.`, `Add it to show the pagination select.`].join('\\n'));\n      warnedOnceMissingInPageSizeOptions.current = true;\n    }\n  }\n  const pageSizeOptions = isPageSizeIncludedInPageSizeOptions(paginationModel.pageSize) ? rootProps.pageSizeOptions : [];\n  const locales = apiRef.current.getLocaleText('MuiTablePagination');\n  const wrappedLabelDisplayedRows = wrapLabelDisplayedRows(locales.labelDisplayedRows || defaultLabelDisplayedRows, estimatedRowCount);\n  return /*#__PURE__*/_jsx(GridPaginationRoot, _extends({\n    ref: ref,\n    component: \"div\",\n    count: rowCount,\n    page: computedPage\n    // TODO: Remove the cast once the type is fixed in Material UI and that the min Material UI version\n    // for x-data-grid is past the fix.\n    // Note that Material UI will not mutate the array, so this is safe.\n    ,\n    rowsPerPageOptions: pageSizeOptions,\n    rowsPerPage: paginationModel.pageSize,\n    onPageChange: handlePageChange,\n    onRowsPerPageChange: handlePageSizeChange\n  }, computedProps, locales, {\n    labelDisplayedRows: wrappedLabelDisplayedRows\n  }, props));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPagination.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  component: PropTypes.elementType\n} : void 0;\nexport { GridPagination };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"selected\", \"rowId\", \"row\", \"index\", \"style\", \"rowHeight\", \"className\", \"visibleColumns\", \"pinnedColumns\", \"offsetTop\", \"offsetLeft\", \"dimensions\", \"renderContext\", \"focusedColumnIndex\", \"isFirstVisible\", \"isLastVisible\", \"isNotVisible\", \"showBottomBorder\", \"focusedCell\", \"tabbableCell\", \"onClick\", \"onDoubleClick\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseOut\", \"onMouseOver\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { GridEditModes, GridRowModes, GridCellModes } from \"../models/gridEditRowModel.js\";\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { gridClasses } from \"../constants/gridClasses.js\";\nimport { composeGridClasses } from \"../utils/composeGridClasses.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { gridColumnPositionsSelector } from \"../hooks/features/columns/gridColumnsSelector.js\";\nimport { useGridSelector, objectShallowCompare } from \"../hooks/utils/useGridSelector.js\";\nimport { useGridVisibleRows } from \"../hooks/utils/useGridVisibleRows.js\";\nimport { findParentElementFromClassName, isEventTargetInPortal } from \"../utils/domUtils.js\";\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from \"../colDef/gridCheckboxSelectionColDef.js\";\nimport { GRID_ACTIONS_COLUMN_TYPE } from \"../colDef/gridActionsColDef.js\";\nimport { GRID_DETAIL_PANEL_TOGGLE_FIELD } from \"../constants/gridDetailPanelToggleField.js\";\nimport { gridSortModelSelector } from \"../hooks/features/sorting/gridSortingSelector.js\";\nimport { gridRowMaximumTreeDepthSelector } from \"../hooks/features/rows/gridRowsSelector.js\";\nimport { gridEditRowsStateSelector } from \"../hooks/features/editing/gridEditingSelectors.js\";\nimport { PinnedPosition, gridPinnedColumnPositionLookup } from \"./cell/GridCell.js\";\nimport { GridScrollbarFillerCell as ScrollbarFiller } from \"./GridScrollbarFillerCell.js\";\nimport { getPinnedCellOffset } from \"../internals/utils/getPinnedCellOffset.js\";\nimport { useGridConfiguration } from \"../hooks/utils/useGridConfiguration.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction EmptyCell({\n  width\n}) {\n  if (!width) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(\"div\", {\n    role: \"presentation\",\n    className: clsx(gridClasses.cell, gridClasses.cellEmpty),\n    style: {\n      '--width': `${width}px`\n    }\n  });\n}\nconst GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {\n  const {\n      selected,\n      rowId,\n      row,\n      index,\n      style: styleProp,\n      rowHeight,\n      className,\n      visibleColumns,\n      pinnedColumns,\n      offsetLeft,\n      dimensions,\n      renderContext,\n      focusedColumnIndex,\n      isFirstVisible,\n      isLastVisible,\n      isNotVisible,\n      showBottomBorder,\n      onClick,\n      onDoubleClick,\n      onMouseEnter,\n      onMouseLeave,\n      onMouseOut,\n      onMouseOver\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const configuration = useGridConfiguration();\n  const ref = React.useRef(null);\n  const rootProps = useGridRootProps();\n  const currentPage = useGridVisibleRows(apiRef, rootProps);\n  const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n  const treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector);\n  const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);\n  const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);\n  const handleRef = useForkRef(ref, refProp);\n  const rowNode = apiRef.current.getRowNode(rowId);\n  const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;\n  const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;\n  const editing = apiRef.current.getRowMode(rowId) === GridRowModes.Edit;\n  const editable = rootProps.editMode === GridEditModes.Row;\n  const hasFocusCell = focusedColumnIndex !== undefined;\n  const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < renderContext.firstColumnIndex;\n  const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= renderContext.lastColumnIndex;\n  const classes = composeGridClasses(rootProps.classes, {\n    root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isFirstVisible && 'row--firstVisible', isLastVisible && 'row--lastVisible', showBottomBorder && 'row--borderBottom', rowHeight === 'auto' && 'row--dynamicHeight']\n  });\n  const getRowAriaAttributes = configuration.hooks.useGridRowAriaAttributes();\n  React.useLayoutEffect(() => {\n    if (currentPage.range) {\n      // The index prop is relative to the rows from all pages. As example, the index prop of the\n      // first row is 5 if `paginationModel.pageSize=5` and `paginationModel.page=1`. However, the index used by the virtualization\n      // doesn't care about pagination and considers the rows from the current page only, so the\n      // first row always has index=0. We need to subtract the index of the first row to make it\n      // compatible with the index used by the virtualization.\n      const rowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(rowId);\n      // pinned rows are not part of the visible rows\n      if (rowIndex != null) {\n        apiRef.current.unstable_setLastMeasuredRowIndex(rowIndex);\n      }\n    }\n    const rootElement = ref.current;\n    const hasFixedHeight = rowHeight !== 'auto';\n    if (!rootElement || hasFixedHeight || typeof ResizeObserver === 'undefined') {\n      return undefined;\n    }\n    const resizeObserver = new ResizeObserver(entries => {\n      const [entry] = entries;\n      const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;\n      apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);\n    });\n    resizeObserver.observe(rootElement);\n    return () => resizeObserver.disconnect();\n  }, [apiRef, currentPage.range, index, rowHeight, rowId]);\n  const publish = React.useCallback((eventName, propHandler) => event => {\n    // Ignore portal\n    if (isEventTargetInPortal(event)) {\n      return;\n    }\n\n    // The row might have been deleted\n    if (!apiRef.current.getRow(rowId)) {\n      return;\n    }\n    apiRef.current.publishEvent(eventName, apiRef.current.getRowParams(rowId), event);\n    if (propHandler) {\n      propHandler(event);\n    }\n  }, [apiRef, rowId]);\n  const publishClick = React.useCallback(event => {\n    const cell = findParentElementFromClassName(event.target, gridClasses.cell);\n    const field = cell?.getAttribute('data-field');\n\n    // Check if the field is available because the cell that fills the empty\n    // space of the row has no field.\n    if (field) {\n      // User clicked in the checkbox added by checkboxSelection\n      if (field === GRID_CHECKBOX_SELECTION_COL_DEF.field) {\n        return;\n      }\n\n      // User opened a detail panel\n      if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {\n        return;\n      }\n\n      // User reorders a row\n      if (field === '__reorder__') {\n        return;\n      }\n\n      // User is editing a cell\n      if (apiRef.current.getCellMode(rowId, field) === GridCellModes.Edit) {\n        return;\n      }\n\n      // User clicked a button from the \"actions\" column type\n      const column = apiRef.current.getColumn(field);\n      if (column?.type === GRID_ACTIONS_COLUMN_TYPE) {\n        return;\n      }\n    }\n    publish('rowClick', onClick)(event);\n  }, [apiRef, onClick, publish, rowId]);\n  const {\n    slots,\n    slotProps,\n    disableColumnReorder\n  } = rootProps;\n  const rowReordering = rootProps.rowReordering;\n  const sizes = useGridSelector(apiRef, () => _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId)), objectShallowCompare);\n  let minHeight = rowHeight;\n  if (minHeight === 'auto' && sizes) {\n    const numberOfBaseSizes = 1;\n    const maximumSize = sizes.baseCenter ?? 0;\n    if (maximumSize > 0 && numberOfBaseSizes > 1) {\n      minHeight = maximumSize;\n    }\n  }\n  const style = React.useMemo(() => {\n    if (isNotVisible) {\n      return {\n        opacity: 0,\n        width: 0,\n        height: 0\n      };\n    }\n    const rowStyle = _extends({}, styleProp, {\n      maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,\n      // max-height doesn't support \"auto\"\n      minHeight,\n      '--height': typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight\n    });\n    if (sizes?.spacingTop) {\n      const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';\n      rowStyle[property] = sizes.spacingTop;\n    }\n    if (sizes?.spacingBottom) {\n      const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';\n      let propertyValue = rowStyle[property];\n      // avoid overriding existing value\n      if (typeof propertyValue !== 'number') {\n        propertyValue = parseInt(propertyValue || '0', 10);\n      }\n      propertyValue += sizes.spacingBottom;\n      rowStyle[property] = propertyValue;\n    }\n    return rowStyle;\n  }, [isNotVisible, rowHeight, styleProp, minHeight, sizes, rootProps.rowSpacingType]);\n  const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId);\n  const ariaAttributes = rowNode ? getRowAriaAttributes(rowNode, index) : undefined;\n  if (typeof rootProps.getRowClassName === 'function') {\n    const indexRelativeToCurrentPage = index - (currentPage.range?.firstRowIndex || 0);\n    const rowParams = _extends({}, apiRef.current.getRowParams(rowId), {\n      isFirstVisible: indexRelativeToCurrentPage === 0,\n      isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,\n      indexRelativeToCurrentPage\n    });\n    rowClassNames.push(rootProps.getRowClassName(rowParams));\n  }\n  const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedPosition.NONE) => {\n    const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);\n    if (cellColSpanInfo?.spannedByColSpan) {\n      return null;\n    }\n    const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;\n    const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;\n    const pinnedOffset = getPinnedCellOffset(gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);\n    if (rowNode?.type === 'skeletonRow') {\n      return /*#__PURE__*/_jsx(slots.skeletonCell, {\n        type: column.type,\n        width: width,\n        height: rowHeight,\n        field: column.field,\n        align: column.align\n      }, column.field);\n    }\n    const editCellState = editRowsState[rowId]?.[column.field] ?? null;\n\n    // when the cell is a reorder cell we are not allowing to reorder the col\n    // fixes https://github.com/mui/mui-x/issues/11126\n    const isReorderCell = column.field === '__reorder__';\n    const isEditingRows = Object.keys(editRowsState).length > 0;\n    const canReorderColumn = !(disableColumnReorder || column.disableReorder);\n    const canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;\n    const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);\n    const cellIsNotVisible = pinnedPosition === PinnedPosition.VIRTUAL;\n    return /*#__PURE__*/_jsx(slots.cell, _extends({\n      column: column,\n      width: width,\n      rowId: rowId,\n      align: column.align || 'left',\n      colIndex: indexRelativeToAllColumns,\n      colSpan: colSpan,\n      disableDragEvents: disableDragEvents,\n      editCellState: editCellState,\n      isNotVisible: cellIsNotVisible,\n      pinnedOffset: pinnedOffset,\n      pinnedPosition: pinnedPosition,\n      sectionIndex: indexInSection,\n      sectionLength: sectionLength,\n      gridHasFiller: gridHasFiller\n    }, slotProps?.cell), column.field);\n  };\n\n  /* Start of rendering */\n\n  if (!rowNode) {\n    return null;\n  }\n  const leftCells = pinnedColumns.left.map((column, i) => {\n    const indexRelativeToAllColumns = i;\n    return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedPosition.LEFT);\n  });\n  const rightCells = pinnedColumns.right.map((column, i) => {\n    const indexRelativeToAllColumns = visibleColumns.length - pinnedColumns.right.length + i;\n    return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedPosition.RIGHT);\n  });\n  const middleColumnsLength = visibleColumns.length - pinnedColumns.left.length - pinnedColumns.right.length;\n  const cells = [];\n  if (hasVirtualFocusCellLeft) {\n    cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedPosition.VIRTUAL));\n  }\n  for (let i = renderContext.firstColumnIndex; i < renderContext.lastColumnIndex; i += 1) {\n    const column = visibleColumns[i];\n    const indexInSection = i - pinnedColumns.left.length;\n    cells.push(getCell(column, indexInSection, i, middleColumnsLength));\n  }\n  if (hasVirtualFocusCellRight) {\n    cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedPosition.VIRTUAL));\n  }\n  const eventHandlers = row ? {\n    onClick: publishClick,\n    onDoubleClick: publish('rowDoubleClick', onDoubleClick),\n    onMouseEnter: publish('rowMouseEnter', onMouseEnter),\n    onMouseLeave: publish('rowMouseLeave', onMouseLeave),\n    onMouseOut: publish('rowMouseOut', onMouseOut),\n    onMouseOver: publish('rowMouseOver', onMouseOver)\n  } : null;\n  const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth - scrollbarWidth;\n  const emptyCellWidth = Math.max(0, expandedWidth);\n  return /*#__PURE__*/_jsxs(\"div\", _extends({\n    ref: handleRef,\n    \"data-id\": rowId,\n    \"data-rowindex\": index,\n    role: \"row\",\n    className: clsx(...rowClassNames, classes.root, className),\n    style: style\n  }, ariaAttributes, eventHandlers, other, {\n    children: [leftCells, /*#__PURE__*/_jsx(\"div\", {\n      role: \"presentation\",\n      className: gridClasses.cellOffsetLeft,\n      style: {\n        width: offsetLeft\n      }\n    }), cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {\n      width: emptyCellWidth\n    }), rightCells.length > 0 && /*#__PURE__*/_jsx(\"div\", {\n      role: \"presentation\",\n      className: gridClasses.filler\n    }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {\n      pinnedRight: pinnedColumns.right.length > 0\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRow.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  dimensions: PropTypes.shape({\n    bottomContainerHeight: PropTypes.number.isRequired,\n    columnsTotalWidth: PropTypes.number.isRequired,\n    contentSize: PropTypes.shape({\n      height: PropTypes.number.isRequired,\n      width: PropTypes.number.isRequired\n    }).isRequired,\n    groupHeaderHeight: PropTypes.number.isRequired,\n    hasScrollX: PropTypes.bool.isRequired,\n    hasScrollY: PropTypes.bool.isRequired,\n    headerFilterHeight: PropTypes.number.isRequired,\n    headerHeight: PropTypes.number.isRequired,\n    headersTotalHeight: PropTypes.number.isRequired,\n    isReady: PropTypes.bool.isRequired,\n    leftPinnedWidth: PropTypes.number.isRequired,\n    minimumSize: PropTypes.shape({\n      height: PropTypes.number.isRequired,\n      width: PropTypes.number.isRequired\n    }).isRequired,\n    rightPinnedWidth: PropTypes.number.isRequired,\n    root: PropTypes.shape({\n      height: PropTypes.number.isRequired,\n      width: PropTypes.number.isRequired\n    }).isRequired,\n    rowHeight: PropTypes.number.isRequired,\n    rowWidth: PropTypes.number.isRequired,\n    scrollbarSize: PropTypes.number.isRequired,\n    topContainerHeight: PropTypes.number.isRequired,\n    viewportInnerSize: PropTypes.shape({\n      height: PropTypes.number.isRequired,\n      width: PropTypes.number.isRequired\n    }).isRequired,\n    viewportOuterSize: PropTypes.shape({\n      height: PropTypes.number.isRequired,\n      width: PropTypes.number.isRequired\n    }).isRequired\n  }).isRequired,\n  /**\n   * Determines which cell has focus.\n   * If `null`, no cell in this row has focus.\n   */\n  focusedColumnIndex: PropTypes.number,\n  /**\n   * Index of the row in the whole sorted and filtered dataset.\n   * If some rows above have expanded children, this index also take those children into account.\n   */\n  index: PropTypes.number.isRequired,\n  isFirstVisible: PropTypes.bool.isRequired,\n  isLastVisible: PropTypes.bool.isRequired,\n  isNotVisible: PropTypes.bool.isRequired,\n  offsetLeft: PropTypes.number.isRequired,\n  offsetTop: PropTypes.number,\n  onClick: PropTypes.func,\n  onDoubleClick: PropTypes.func,\n  onMouseEnter: PropTypes.func,\n  onMouseLeave: PropTypes.func,\n  pinnedColumns: PropTypes.object.isRequired,\n  renderContext: PropTypes.shape({\n    firstColumnIndex: PropTypes.number.isRequired,\n    firstRowIndex: PropTypes.number.isRequired,\n    lastColumnIndex: PropTypes.number.isRequired,\n    lastRowIndex: PropTypes.number.isRequired\n  }).isRequired,\n  row: PropTypes.object.isRequired,\n  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,\n  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  selected: PropTypes.bool.isRequired,\n  showBottomBorder: PropTypes.bool.isRequired,\n  /**\n   * Determines which cell should be tabbable by having tabIndex=0.\n   * If `null`, no cell in this row is in the tab sequence.\n   */\n  tabbableCell: PropTypes.string,\n  visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired\n} : void 0;\nconst MemoizedGridRow = fastMemo(GridRow);\nexport { MemoizedGridRow as GridRow };","import { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from \"../constants/gridClasses.js\";\nexport function composeGridClasses(classes, slots) {\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"rowCount\", \"visibleRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['rowCount']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRowCountRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'RowCount',\n  overridesResolver: (props, styles) => styles.rowCount\n})(({\n  theme\n}) => ({\n  alignItems: 'center',\n  display: 'flex',\n  margin: theme.spacing(0, 2)\n}));\nconst GridRowCount = /*#__PURE__*/React.forwardRef(function GridRowCount(props, ref) {\n  const {\n      className,\n      rowCount,\n      visibleRowCount\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const ownerState = useGridRootProps();\n  const classes = useUtilityClasses(ownerState);\n  if (rowCount === 0) {\n    return null;\n  }\n  const text = visibleRowCount < rowCount ? apiRef.current.getLocaleText('footerTotalVisibleRows')(visibleRowCount, rowCount) : rowCount.toLocaleString();\n  return /*#__PURE__*/_jsxs(GridRowCountRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [apiRef.current.getLocaleText('footerTotalRows'), \" \", text]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRowCount.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  rowCount: PropTypes.number.isRequired,\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  visibleRowCount: PropTypes.number.isRequired\n} : void 0;\nexport { GridRowCount };","import * as React from 'react';\nimport clsx from 'clsx';\nimport { gridClasses } from \"../constants/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = {\n  root: gridClasses.scrollbarFiller,\n  header: gridClasses['scrollbarFiller--header'],\n  borderTop: gridClasses['scrollbarFiller--borderTop'],\n  borderBottom: gridClasses['scrollbarFiller--borderBottom'],\n  pinnedRight: gridClasses['scrollbarFiller--pinnedRight']\n};\nfunction GridScrollbarFillerCell({\n  header,\n  borderTop = true,\n  borderBottom,\n  pinnedRight\n}) {\n  return /*#__PURE__*/_jsx(\"div\", {\n    role: \"presentation\",\n    className: clsx(classes.root, header && classes.header, borderTop && classes.borderTop, borderBottom && classes.borderBottom, pinnedRight && classes.pinnedRight)\n  });\n}\nexport { GridScrollbarFillerCell };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"selectedRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['selectedRowCount']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridSelectedRowCountRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'SelectedRowCount',\n  overridesResolver: (props, styles) => styles.selectedRowCount\n})(({\n  theme\n}) => ({\n  alignItems: 'center',\n  display: 'flex',\n  margin: theme.spacing(0, 2),\n  visibility: 'hidden',\n  width: 0,\n  height: 0,\n  [theme.breakpoints.up('sm')]: {\n    visibility: 'visible',\n    width: 'auto',\n    height: 'auto'\n  }\n}));\nconst GridSelectedRowCount = /*#__PURE__*/React.forwardRef(function GridSelectedRowCount(props, ref) {\n  const {\n      className,\n      selectedRowCount\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const ownerState = useGridRootProps();\n  const classes = useUtilityClasses(ownerState);\n  const rowSelectedText = apiRef.current.getLocaleText('footerRowSelected')(selectedRowCount);\n  return /*#__PURE__*/_jsx(GridSelectedRowCountRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: rowSelectedText\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridSelectedRowCount.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  selectedRowCount: PropTypes.number.isRequired,\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridSelectedRowCount };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridFooterPlaceholder() {\n  const rootProps = useGridRootProps();\n  if (rootProps.hideFooter) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(rootProps.slots.footer, _extends({}, rootProps.slotProps?.footer /* FIXME: typing error */));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridDimensionsSelector } from \"../../hooks/features/dimensions/index.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridVisibleRows } from \"../../hooks/utils/useGridVisibleRows.js\";\nimport { getMinimalContentHeight } from \"../../hooks/features/rows/gridRowsUtils.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridOverlayWrapperRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'OverlayWrapper',\n  shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant',\n  overridesResolver: (props, styles) => styles.overlayWrapper\n})(({\n  overlayType,\n  loadingOverlayVariant\n}) =>\n// Skeleton overlay should flow with the scroll container and not be sticky\nloadingOverlayVariant !== 'skeleton' ? {\n  position: 'sticky',\n  // To stay in place while scrolling\n  top: 'var(--DataGrid-headersTotalHeight)',\n  left: 0,\n  width: 0,\n  // To stay above the content instead of shifting it down\n  height: 0,\n  // To stay above the content instead of shifting it down\n  zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel\n  : 4 // Should be above pinned columns and detail panel\n} : {});\nconst GridOverlayWrapperInner = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'OverlayWrapperInner',\n  shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant',\n  overridesResolver: (props, styles) => styles.overlayWrapperInner\n})({});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['overlayWrapper'],\n    inner: ['overlayWrapperInner']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridOverlayWrapper(props) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const currentPage = useGridVisibleRows(apiRef, rootProps);\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  let height = dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);\n  if (rootProps.autoHeight && currentPage.rows.length === 0 || height === 0) {\n    height = getMinimalContentHeight(apiRef);\n  }\n  const classes = useUtilityClasses(_extends({}, props, {\n    classes: rootProps.classes\n  }));\n  return /*#__PURE__*/_jsx(GridOverlayWrapperRoot, _extends({\n    className: clsx(classes.root)\n  }, props, {\n    children: /*#__PURE__*/_jsx(GridOverlayWrapperInner, _extends({\n      className: clsx(classes.inner),\n      style: {\n        height,\n        width: dimensions.viewportOuterSize.width\n      }\n    }, props))\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridOverlays.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  loadingOverlayVariant: PropTypes.oneOf(['circular-progress', 'linear-progress', 'skeleton']),\n  overlayType: PropTypes.oneOf(['loadingOverlay', 'noResultsOverlay', 'noRowsOverlay'])\n} : void 0;\nexport function GridOverlays(props) {\n  const {\n    overlayType\n  } = props;\n  const rootProps = useGridRootProps();\n  if (!overlayType) {\n    return null;\n  }\n  const Overlay = rootProps.slots?.[overlayType];\n  const overlayProps = rootProps.slotProps?.[overlayType];\n  return /*#__PURE__*/_jsx(GridOverlayWrapper, _extends({}, props, {\n    children: /*#__PURE__*/_jsx(Overlay, _extends({}, overlayProps))\n  }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"api\", \"colDef\", \"id\", \"hasFocus\", \"isEditable\", \"field\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"cellMode\", \"tabIndex\", \"position\", \"focusElementRef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuList from '@mui/material/MenuList';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { gridClasses } from \"../../constants/gridClasses.js\";\nimport { GridMenu } from \"../menu/GridMenu.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst hasActions = colDef => typeof colDef.getActions === 'function';\nfunction GridActionsCell(props) {\n  const {\n      colDef,\n      id,\n      hasFocus,\n      tabIndex,\n      position = 'bottom-end',\n      focusElementRef\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [focusedButtonIndex, setFocusedButtonIndex] = React.useState(-1);\n  const [open, setOpen] = React.useState(false);\n  const apiRef = useGridApiContext();\n  const rootRef = React.useRef(null);\n  const buttonRef = React.useRef(null);\n  const ignoreCallToFocus = React.useRef(false);\n  const touchRippleRefs = React.useRef({});\n  const isRtl = useRtl();\n  const menuId = useId();\n  const buttonId = useId();\n  const rootProps = useGridRootProps();\n  if (!hasActions(colDef)) {\n    throw new Error('MUI X: Missing the `getActions` property in the `GridColDef`.');\n  }\n  const options = colDef.getActions(apiRef.current.getRowParams(id));\n  const iconButtons = options.filter(option => !option.props.showInMenu);\n  const menuButtons = options.filter(option => option.props.showInMenu);\n  const numberOfButtons = iconButtons.length + (menuButtons.length ? 1 : 0);\n  React.useLayoutEffect(() => {\n    if (!hasFocus) {\n      Object.entries(touchRippleRefs.current).forEach(([index, ref]) => {\n        ref?.stop({}, () => {\n          delete touchRippleRefs.current[index];\n        });\n      });\n    }\n  }, [hasFocus]);\n  React.useEffect(() => {\n    if (focusedButtonIndex < 0 || !rootRef.current) {\n      return;\n    }\n    if (focusedButtonIndex >= rootRef.current.children.length) {\n      return;\n    }\n    const child = rootRef.current.children[focusedButtonIndex];\n    child.focus({\n      preventScroll: true\n    });\n  }, [focusedButtonIndex]);\n  React.useEffect(() => {\n    if (!hasFocus) {\n      setFocusedButtonIndex(-1);\n      ignoreCallToFocus.current = false;\n    }\n  }, [hasFocus]);\n  React.useImperativeHandle(focusElementRef, () => ({\n    focus() {\n      // If ignoreCallToFocus is true, then one of the buttons was clicked and the focus is already set\n      if (!ignoreCallToFocus.current) {\n        // find the first focusable button and pass the index to the state\n        const focusableButtonIndex = options.findIndex(o => !o.props.disabled);\n        setFocusedButtonIndex(focusableButtonIndex);\n      }\n    }\n  }), [options]);\n  React.useEffect(() => {\n    if (focusedButtonIndex >= numberOfButtons) {\n      setFocusedButtonIndex(numberOfButtons - 1);\n    }\n  }, [focusedButtonIndex, numberOfButtons]);\n  const showMenu = () => {\n    setOpen(true);\n    setFocusedButtonIndex(numberOfButtons - 1);\n    ignoreCallToFocus.current = true;\n  };\n  const hideMenu = () => {\n    setOpen(false);\n  };\n  const handleTouchRippleRef = index => instance => {\n    touchRippleRefs.current[index] = instance;\n  };\n  const handleButtonClick = (index, onClick) => event => {\n    setFocusedButtonIndex(index);\n    ignoreCallToFocus.current = true;\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const handleRootKeyDown = event => {\n    if (numberOfButtons <= 1) {\n      return;\n    }\n    const getNewIndex = (index, direction) => {\n      if (index < 0 || index > options.length) {\n        return index;\n      }\n\n      // for rtl mode we need to reverse the direction\n      const rtlMod = isRtl ? -1 : 1;\n      const indexMod = (direction === 'left' ? -1 : 1) * rtlMod;\n\n      // if the button that should receive focus is disabled go one more step\n      return options[index + indexMod]?.props.disabled ? getNewIndex(index + indexMod, direction) : index + indexMod;\n    };\n    let newIndex = focusedButtonIndex;\n    if (event.key === 'ArrowRight') {\n      newIndex = getNewIndex(focusedButtonIndex, 'right');\n    } else if (event.key === 'ArrowLeft') {\n      newIndex = getNewIndex(focusedButtonIndex, 'left');\n    }\n    if (newIndex < 0 || newIndex >= numberOfButtons) {\n      return; // We're already in the first or last item = do nothing and let the grid listen the event\n    }\n    if (newIndex !== focusedButtonIndex) {\n      event.preventDefault(); // Prevent scrolling\n      event.stopPropagation(); // Don't stop propagation for other keys, for example ArrowUp\n      setFocusedButtonIndex(newIndex);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    if (['Tab', 'Escape'].includes(event.key)) {\n      hideMenu();\n    }\n  };\n  return /*#__PURE__*/_jsxs(\"div\", _extends({\n    role: \"menu\",\n    ref: rootRef,\n    tabIndex: -1,\n    className: gridClasses.actionsCell,\n    onKeyDown: handleRootKeyDown\n  }, other, {\n    children: [iconButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n      key: index,\n      touchRippleRef: handleTouchRippleRef(index),\n      onClick: handleButtonClick(index, button.props.onClick),\n      tabIndex: focusedButtonIndex === index ? tabIndex : -1\n    })), menuButtons.length > 0 && buttonId && /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n      ref: buttonRef,\n      id: buttonId,\n      \"aria-label\": apiRef.current.getLocaleText('actionsCellMore'),\n      \"aria-haspopup\": \"menu\",\n      \"aria-expanded\": open,\n      \"aria-controls\": open ? menuId : undefined,\n      role: \"menuitem\",\n      size: \"small\",\n      onClick: showMenu,\n      touchRippleRef: handleTouchRippleRef(buttonId),\n      tabIndex: focusedButtonIndex === iconButtons.length ? tabIndex : -1\n    }, rootProps.slotProps?.baseIconButton, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.moreActionsIcon, {\n        fontSize: \"small\"\n      })\n    })), menuButtons.length > 0 && /*#__PURE__*/_jsx(GridMenu, {\n      open: open,\n      target: buttonRef.current,\n      position: position,\n      onClose: hideMenu,\n      children: /*#__PURE__*/_jsx(MenuList, {\n        id: menuId,\n        className: gridClasses.menuList,\n        onKeyDown: handleListKeyDown,\n        \"aria-labelledby\": buttonId,\n        variant: \"menu\",\n        autoFocusItem: true,\n        children: menuButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n          key: index,\n          closeMenu: hideMenu\n        }))\n      })\n    })]\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  api: PropTypes.object,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * A ref allowing to set imperative focus.\n   * It can be passed to the element that should receive focus.\n   * @ignore - do not document.\n   */\n  focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      focus: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridActionsCell };\nexport const renderActionsCell = params => /*#__PURE__*/_jsx(GridActionsCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"hasFocus\", \"tabIndex\", \"hideDescendantCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { isAutogeneratedRowNode } from \"../../hooks/features/rows/gridRowsUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['booleanCell']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridBooleanCellRaw(props) {\n  const {\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const Icon = React.useMemo(() => value ? rootProps.slots.booleanCellTrueIcon : rootProps.slots.booleanCellFalseIcon, [rootProps.slots.booleanCellFalseIcon, rootProps.slots.booleanCellTrueIcon, value]);\n  return /*#__PURE__*/_jsx(Icon, _extends({\n    fontSize: \"small\",\n    className: classes.root,\n    titleAccess: apiRef.current.getLocaleText(value ? 'booleanCellTrueLabel' : 'booleanCellFalseLabel'),\n    \"data-value\": Boolean(value)\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridBooleanCellRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * A ref allowing to set imperative focus.\n   * It can be passed to the element that should receive focus.\n   * @ignore - do not document.\n   */\n  focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      focus: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  hideDescendantCount: PropTypes.bool,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nconst GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);\nexport { GridBooleanCell };\nexport const renderBooleanCell = params => {\n  if (params.field !== '__row_group_by_columns_group__' && isAutogeneratedRowNode(params.rowNode)) {\n    return '';\n  }\n  return /*#__PURE__*/_jsx(GridBooleanCell, _extends({}, params));\n};","// Based on https://stackoverflow.com/a/59518678\nlet cachedSupportsPreventScroll;\nexport function doesSupportPreventScroll() {\n  if (cachedSupportsPreventScroll === undefined) {\n    document.createElement('div').focus({\n      get preventScroll() {\n        cachedSupportsPreventScroll = true;\n        return false;\n      }\n    });\n  }\n  return cachedSupportsPreventScroll;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"column\", \"rowId\", \"editCellState\", \"align\", \"children\", \"colIndex\", \"width\", \"className\", \"style\", \"gridHasScrollX\", \"colSpan\", \"disableDragEvents\", \"isNotVisible\", \"pinnedOffset\", \"pinnedPosition\", \"sectionIndex\", \"sectionLength\", \"gridHasFiller\", \"onClick\", \"onDoubleClick\", \"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onKeyDown\", \"onKeyUp\", \"onDragEnter\", \"onDragOver\"],\n  _excluded2 = [\"changeReason\", \"unstable_updateValueOnRender\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_ownerDocument as ownerDocument, unstable_capitalize as capitalize } from '@mui/utils';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { doesSupportPreventScroll } from \"../../utils/doesSupportPreventScroll.js\";\nimport { getDataGridUtilityClass, gridClasses } from \"../../constants/gridClasses.js\";\nimport { GridCellModes } from \"../../models/index.js\";\nimport { useGridSelector, objectShallowCompare } from \"../../hooks/utils/useGridSelector.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { gridFocusCellSelector } from \"../../hooks/features/focus/gridFocusStateSelector.js\";\nimport { MissingRowIdError } from \"../../hooks/features/rows/useGridParamsApi.js\";\nimport { shouldCellShowLeftBorder, shouldCellShowRightBorder } from \"../../utils/cellBorderUtils.js\";\nimport { GridPinnedColumnPosition } from \"../../hooks/features/columns/gridColumnsInterfaces.js\";\nimport { gridRowSpanningHiddenCellsSelector, gridRowSpanningSpannedCellsSelector } from \"../../hooks/features/rows/gridRowSpanningSelectors.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport let PinnedPosition = /*#__PURE__*/function (PinnedPosition) {\n  PinnedPosition[PinnedPosition[\"NONE\"] = 0] = \"NONE\";\n  PinnedPosition[PinnedPosition[\"LEFT\"] = 1] = \"LEFT\";\n  PinnedPosition[PinnedPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n  PinnedPosition[PinnedPosition[\"VIRTUAL\"] = 3] = \"VIRTUAL\";\n  return PinnedPosition;\n}({});\nexport const gridPinnedColumnPositionLookup = {\n  [PinnedPosition.LEFT]: GridPinnedColumnPosition.LEFT,\n  [PinnedPosition.RIGHT]: GridPinnedColumnPosition.RIGHT,\n  [PinnedPosition.NONE]: undefined,\n  [PinnedPosition.VIRTUAL]: undefined\n};\nconst EMPTY_CELL_PARAMS = {\n  id: -1,\n  field: '__unset__',\n  row: {},\n  rowNode: {\n    id: -1,\n    depth: 0,\n    type: 'leaf',\n    parent: -1,\n    groupingKey: null\n  },\n  colDef: {\n    type: 'string',\n    field: '__unset__',\n    computedWidth: 0\n  },\n  cellMode: GridCellModes.View,\n  hasFocus: false,\n  tabIndex: -1,\n  value: null,\n  formattedValue: '__unset__',\n  isEditable: false,\n  api: {}\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    showLeftBorder,\n    showRightBorder,\n    pinnedPosition,\n    isEditable,\n    isSelected,\n    isSelectionMode,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['cell', `cell--text${capitalize(align)}`, isSelected && 'selected', isEditable && 'cell--editable', showLeftBorder && 'cell--withLeftBorder', showRightBorder && 'cell--withRightBorder', pinnedPosition === PinnedPosition.LEFT && 'cell--pinnedLeft', pinnedPosition === PinnedPosition.RIGHT && 'cell--pinnedRight', isSelectionMode && !isEditable && 'cell--selectionMode']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nlet warnedOnce = false;\n\n// TODO(v7): Removing the wrapper will break the docs performance visualization demo.\n\nconst GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {\n  const {\n      column,\n      rowId,\n      editCellState,\n      align,\n      colIndex,\n      width,\n      className,\n      style: styleProp,\n      colSpan,\n      disableDragEvents,\n      isNotVisible,\n      pinnedOffset,\n      pinnedPosition,\n      sectionIndex,\n      sectionLength,\n      gridHasFiller,\n      onClick,\n      onDoubleClick,\n      onMouseDown,\n      onMouseUp,\n      onMouseOver,\n      onKeyDown,\n      onKeyUp,\n      onDragEnter,\n      onDragOver\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const isRtl = useRtl();\n  const field = column.field;\n  const cellParams = useGridSelector(apiRef, () => {\n    // This is required because `.getCellParams` tries to get the `state.rows.tree` entry\n    // associated with `rowId`/`fieldId`, but this selector runs after the state has been\n    // updated, while `rowId`/`fieldId` reference an entry in the old state.\n    try {\n      const result = apiRef.current.getCellParams(rowId, field);\n      result.api = apiRef.current;\n      return result;\n    } catch (e) {\n      if (e instanceof MissingRowIdError) {\n        return EMPTY_CELL_PARAMS;\n      }\n      throw e;\n    }\n  }, objectShallowCompare);\n  const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {\n    id: rowId,\n    field\n  }));\n  const hiddenCells = useGridSelector(apiRef, gridRowSpanningHiddenCellsSelector);\n  const spannedCells = useGridSelector(apiRef, gridRowSpanningSpannedCellsSelector);\n  const {\n    cellMode,\n    hasFocus,\n    isEditable = false,\n    value\n  } = cellParams;\n  const canManageOwnFocus = column.type === 'actions' && column.getActions?.(apiRef.current.getRowParams(rowId)).some(action => !action.props.disabled);\n  const tabIndex = (cellMode === 'view' || !isEditable) && !canManageOwnFocus ? cellParams.tabIndex : -1;\n  const {\n    classes: rootClasses,\n    getCellClassName\n  } = rootProps;\n\n  // There is a hidden grid state access in `applyPipeProcessor('cellClassName', ...)`\n  const pipesClassName = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {\n    id: rowId,\n    field\n  }).filter(Boolean).join(' '));\n  const classNames = [pipesClassName];\n  if (column.cellClassName) {\n    classNames.push(typeof column.cellClassName === 'function' ? column.cellClassName(cellParams) : column.cellClassName);\n  }\n  if (column.display === 'flex') {\n    classNames.push(gridClasses['cell--flex']);\n  }\n  if (getCellClassName) {\n    classNames.push(getCellClassName(cellParams));\n  }\n  const valueToRender = cellParams.formattedValue ?? value;\n  const cellRef = React.useRef(null);\n  const handleRef = useForkRef(ref, cellRef);\n  const focusElementRef = React.useRef(null);\n  const isSelectionMode = rootProps.cellSelection ?? false;\n  const position = gridPinnedColumnPositionLookup[pinnedPosition];\n  const showLeftBorder = shouldCellShowLeftBorder(position, sectionIndex);\n  const showRightBorder = shouldCellShowRightBorder(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);\n  const ownerState = {\n    align,\n    showLeftBorder,\n    showRightBorder,\n    isEditable,\n    classes: rootProps.classes,\n    pinnedPosition,\n    isSelected,\n    isSelectionMode\n  };\n  const classes = useUtilityClasses(ownerState);\n  const publishMouseUp = React.useCallback(eventName => event => {\n    const params = apiRef.current.getCellParams(rowId, field || '');\n    apiRef.current.publishEvent(eventName, params, event);\n    if (onMouseUp) {\n      onMouseUp(event);\n    }\n  }, [apiRef, field, onMouseUp, rowId]);\n  const publishMouseDown = React.useCallback(eventName => event => {\n    const params = apiRef.current.getCellParams(rowId, field || '');\n    apiRef.current.publishEvent(eventName, params, event);\n    if (onMouseDown) {\n      onMouseDown(event);\n    }\n  }, [apiRef, field, onMouseDown, rowId]);\n  const publish = React.useCallback((eventName, propHandler) => event => {\n    // The row might have been deleted during the click\n    if (!apiRef.current.getRow(rowId)) {\n      return;\n    }\n    const params = apiRef.current.getCellParams(rowId, field || '');\n    apiRef.current.publishEvent(eventName, params, event);\n    if (propHandler) {\n      propHandler(event);\n    }\n  }, [apiRef, field, rowId]);\n  const isCellRowSpanned = hiddenCells[rowId]?.[field] ?? false;\n  const rowSpan = spannedCells[rowId]?.[field] ?? 1;\n  const style = React.useMemo(() => {\n    if (isNotVisible) {\n      return {\n        padding: 0,\n        opacity: 0,\n        width: 0,\n        border: 0\n      };\n    }\n    const cellStyle = _extends({\n      '--width': `${width}px`\n    }, styleProp);\n    const isLeftPinned = pinnedPosition === PinnedPosition.LEFT;\n    const isRightPinned = pinnedPosition === PinnedPosition.RIGHT;\n    if (isLeftPinned || isRightPinned) {\n      let side = isLeftPinned ? 'left' : 'right';\n      if (isRtl) {\n        side = isLeftPinned ? 'right' : 'left';\n      }\n      cellStyle[side] = pinnedOffset;\n    }\n    if (rowSpan > 1) {\n      cellStyle.height = `calc(var(--height) * ${rowSpan})`;\n      cellStyle.zIndex = 5;\n    }\n    return cellStyle;\n  }, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition, isRtl, rowSpan]);\n  React.useEffect(() => {\n    if (!hasFocus || cellMode === GridCellModes.Edit) {\n      return;\n    }\n    const doc = ownerDocument(apiRef.current.rootElementRef.current);\n    if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {\n      const focusableElement = cellRef.current.querySelector('[tabindex=\"0\"]');\n      const elementToFocus = focusElementRef.current || focusableElement || cellRef.current;\n      if (doesSupportPreventScroll()) {\n        elementToFocus.focus({\n          preventScroll: true\n        });\n      } else {\n        const scrollPosition = apiRef.current.getScrollPosition();\n        elementToFocus.focus();\n        apiRef.current.scroll(scrollPosition);\n      }\n    }\n  }, [hasFocus, cellMode, apiRef]);\n  if (isCellRowSpanned) {\n    return /*#__PURE__*/_jsx(\"div\", {\n      \"data-colindex\": colIndex,\n      role: \"presentation\",\n      style: _extends({}, style, {\n        minWidth: 'var(--width)',\n        maxWidth: 'var(--width)'\n      })\n    });\n  }\n  if (cellParams === EMPTY_CELL_PARAMS) {\n    return null;\n  }\n  let handleFocus = other.onFocus;\n  if (process.env.NODE_ENV === 'test' && rootProps.experimentalFeatures?.warnIfFocusStateIsNotSynced) {\n    handleFocus = event => {\n      const focusedCell = gridFocusCellSelector(apiRef);\n      if (focusedCell?.id === rowId && focusedCell.field === field) {\n        if (typeof other.onFocus === 'function') {\n          other.onFocus(event);\n        }\n        return;\n      }\n      if (!warnedOnce) {\n        console.warn([`MUI X: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell?.id}, field=${focusedCell?.field}.`, \"Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.\", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\\n'));\n        warnedOnce = true;\n      }\n    };\n  }\n  let children;\n  let title;\n  if (editCellState === null && column.renderCell) {\n    children = column.renderCell(cellParams);\n  }\n  if (editCellState !== null && column.renderEditCell) {\n    const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded2);\n    const formattedValue = column.valueFormatter ? column.valueFormatter(editCellState.value, updatedRow, column, apiRef) : cellParams.formattedValue;\n    const params = _extends({}, cellParams, {\n      row: updatedRow,\n      formattedValue\n    }, editCellStateRest);\n    children = column.renderEditCell(params);\n    classNames.push(gridClasses['cell--editing']);\n    classNames.push(rootClasses?.['cell--editing']);\n  }\n  if (children === undefined) {\n    const valueString = valueToRender?.toString();\n    children = valueString;\n    title = valueString;\n  }\n  if (/*#__PURE__*/React.isValidElement(children) && canManageOwnFocus) {\n    children = /*#__PURE__*/React.cloneElement(children, {\n      focusElementRef\n    });\n  }\n  const draggableEventHandlers = disableDragEvents ? null : {\n    onDragEnter: publish('cellDragEnter', onDragEnter),\n    onDragOver: publish('cellDragOver', onDragOver)\n  };\n  return /*#__PURE__*/_jsx(\"div\", _extends({\n    ref: handleRef,\n    className: clsx(className, classNames, classes.root),\n    role: \"gridcell\",\n    \"data-field\": field,\n    \"data-colindex\": colIndex,\n    \"aria-colindex\": colIndex + 1,\n    \"aria-colspan\": colSpan,\n    \"aria-rowspan\": rowSpan,\n    style: style,\n    title: title,\n    tabIndex: tabIndex,\n    onClick: publish('cellClick', onClick),\n    onDoubleClick: publish('cellDoubleClick', onDoubleClick),\n    onMouseOver: publish('cellMouseOver', onMouseOver),\n    onMouseDown: publishMouseDown('cellMouseDown'),\n    onMouseUp: publishMouseUp('cellMouseUp'),\n    onKeyDown: publish('cellKeyDown', onKeyDown),\n    onKeyUp: publish('cellKeyUp', onKeyUp)\n  }, draggableEventHandlers, other, {\n    onFocus: handleFocus,\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n  className: PropTypes.string,\n  colIndex: PropTypes.number.isRequired,\n  colSpan: PropTypes.number,\n  column: PropTypes.object.isRequired,\n  disableDragEvents: PropTypes.bool,\n  editCellState: PropTypes.shape({\n    changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n    isProcessingProps: PropTypes.bool,\n    isValidating: PropTypes.bool,\n    value: PropTypes.any\n  }),\n  gridHasFiller: PropTypes.bool.isRequired,\n  isNotVisible: PropTypes.bool.isRequired,\n  onClick: PropTypes.func,\n  onDoubleClick: PropTypes.func,\n  onDragEnter: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onKeyDown: PropTypes.func,\n  onMouseDown: PropTypes.func,\n  onMouseUp: PropTypes.func,\n  pinnedOffset: PropTypes.number.isRequired,\n  pinnedPosition: PropTypes.oneOf([0, 1, 2, 3]).isRequired,\n  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  sectionIndex: PropTypes.number.isRequired,\n  sectionLength: PropTypes.number.isRequired,\n  width: PropTypes.number.isRequired\n} : void 0;\nconst MemoizedGridCell = fastMemo(GridCell);\nexport { MemoizedGridCell as GridCell };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['editBooleanCell']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditBooleanCell(props) {\n  const {\n      id: idProp,\n      value,\n      field,\n      className,\n      hasFocus,\n      onValueChange\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const inputRef = React.useRef(null);\n  const id = useId();\n  const [valueState, setValueState] = React.useState(value);\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleChange = React.useCallback(async event => {\n    const newValue = event.target.checked;\n    if (onValueChange) {\n      await onValueChange(event, newValue);\n    }\n    setValueState(newValue);\n    await apiRef.current.setEditCellValue({\n      id: idProp,\n      field,\n      value: newValue\n    }, event);\n  }, [apiRef, field, idProp, onValueChange]);\n  React.useEffect(() => {\n    setValueState(value);\n  }, [value]);\n  useEnhancedEffect(() => {\n    if (hasFocus) {\n      inputRef.current.focus();\n    }\n  }, [hasFocus]);\n  return /*#__PURE__*/_jsx(\"label\", _extends({\n    htmlFor: id,\n    className: clsx(classes.root, className)\n  }, other, {\n    children: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n      id: id,\n      inputRef: inputRef,\n      checked: Boolean(valueState),\n      onChange: handleChange,\n      size: \"small\"\n    }, rootProps.slotProps?.baseCheckbox))\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditBooleanCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  isProcessingProps: PropTypes.bool,\n  isValidating: PropTypes.bool,\n  /**\n   * Callback called when the value is changed by the user.\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {boolean} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n   * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n   */\n  onValueChange: PropTypes.func,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridEditBooleanCell };\nexport const renderEditBooleanCell = params => /*#__PURE__*/_jsx(GridEditBooleanCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"inputProps\", \"isValidating\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport InputBase from '@mui/material/InputBase';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledInputBase = styled(InputBase)({\n  fontSize: 'inherit'\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['editInputCell']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditDateCell(props) {\n  const {\n      id,\n      value: valueProp,\n      field,\n      colDef,\n      hasFocus,\n      inputProps,\n      onValueChange\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const isDateTime = colDef.type === 'dateTime';\n  const apiRef = useGridApiContext();\n  const inputRef = React.useRef();\n  const valueTransformed = React.useMemo(() => {\n    let parsedDate;\n    if (valueProp == null) {\n      parsedDate = null;\n    } else if (valueProp instanceof Date) {\n      parsedDate = valueProp;\n    } else {\n      parsedDate = new Date((valueProp ?? '').toString());\n    }\n    let formattedDate;\n    if (parsedDate == null || Number.isNaN(parsedDate.getTime())) {\n      formattedDate = '';\n    } else {\n      const localDate = new Date(parsedDate.getTime() - parsedDate.getTimezoneOffset() * 60 * 1000);\n      formattedDate = localDate.toISOString().substr(0, isDateTime ? 16 : 10);\n    }\n    return {\n      parsed: parsedDate,\n      formatted: formattedDate\n    };\n  }, [valueProp, isDateTime]);\n  const [valueState, setValueState] = React.useState(valueTransformed);\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const parseValueToDate = React.useCallback(value => {\n    if (value === '') {\n      return null;\n    }\n    const [date, time] = value.split('T');\n    const [year, month, day] = date.split('-');\n    const parsedDate = new Date();\n    parsedDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n    parsedDate.setHours(0, 0, 0, 0);\n    if (time) {\n      const [hours, minutes] = time.split(':');\n      parsedDate.setHours(Number(hours), Number(minutes), 0, 0);\n    }\n    return parsedDate;\n  }, []);\n  const handleChange = React.useCallback(async event => {\n    const newFormattedDate = event.target.value;\n    const newParsedDate = parseValueToDate(newFormattedDate);\n    if (onValueChange) {\n      await onValueChange(event, newParsedDate);\n    }\n    setValueState({\n      parsed: newParsedDate,\n      formatted: newFormattedDate\n    });\n    apiRef.current.setEditCellValue({\n      id,\n      field,\n      value: newParsedDate\n    }, event);\n  }, [apiRef, field, id, onValueChange, parseValueToDate]);\n  React.useEffect(() => {\n    setValueState(state => {\n      if (valueTransformed.parsed !== state.parsed && valueTransformed.parsed?.getTime() !== state.parsed?.getTime()) {\n        return valueTransformed;\n      }\n      return state;\n    });\n  }, [valueTransformed]);\n  useEnhancedEffect(() => {\n    if (hasFocus) {\n      inputRef.current.focus();\n    }\n  }, [hasFocus]);\n  return /*#__PURE__*/_jsx(StyledInputBase, _extends({\n    inputRef: inputRef,\n    fullWidth: true,\n    className: classes.root,\n    type: isDateTime ? 'datetime-local' : 'date',\n    inputProps: _extends({\n      max: isDateTime ? '9999-12-31T23:59' : '9999-12-31'\n    }, inputProps),\n    value: valueState.formatted,\n    onChange: handleChange\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditDateCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  isProcessingProps: PropTypes.bool,\n  isValidating: PropTypes.bool,\n  /**\n   * Callback called when the value is changed by the user.\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n   * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n   */\n  onValueChange: PropTypes.func,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridEditDateCell };\nexport const renderEditDateCell = params => /*#__PURE__*/_jsx(GridEditDateCell, _extends({}, params));","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"isValidating\", \"debounceMs\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport InputBase from '@mui/material/InputBase';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['editInputCell']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridEditInputCellRoot = styled(InputBase, {\n  name: 'MuiDataGrid',\n  slot: 'EditInputCell',\n  overridesResolver: (props, styles) => styles.editInputCell\n})(({\n  theme\n}) => _extends({}, theme.typography.body2, {\n  padding: '1px 0',\n  '& input': {\n    padding: '0 16px',\n    height: '100%'\n  }\n}));\nconst GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const rootProps = useGridRootProps();\n  const {\n      id,\n      value,\n      field,\n      colDef,\n      hasFocus,\n      debounceMs = 200,\n      isProcessingProps,\n      onValueChange\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const inputRef = React.useRef();\n  const [valueState, setValueState] = React.useState(value);\n  const classes = useUtilityClasses(rootProps);\n  const handleChange = React.useCallback(async event => {\n    const newValue = event.target.value;\n    if (onValueChange) {\n      await onValueChange(event, newValue);\n    }\n    const column = apiRef.current.getColumn(field);\n    let parsedValue = newValue;\n    if (column.valueParser) {\n      parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);\n    }\n    setValueState(parsedValue);\n    apiRef.current.setEditCellValue({\n      id,\n      field,\n      value: parsedValue,\n      debounceMs,\n      unstable_skipValueParser: true\n    }, event);\n  }, [apiRef, debounceMs, field, id, onValueChange]);\n  const meta = apiRef.current.unstable_getEditCellMeta(id, field);\n  React.useEffect(() => {\n    if (meta?.changeReason !== 'debouncedSetEditCellValue') {\n      setValueState(value);\n    }\n  }, [meta, value]);\n  useEnhancedEffect(() => {\n    if (hasFocus) {\n      inputRef.current.focus();\n    }\n  }, [hasFocus]);\n  return /*#__PURE__*/_jsx(GridEditInputCellRoot, _extends({\n    ref: ref,\n    inputRef: inputRef,\n    className: classes.root,\n    ownerState: rootProps,\n    fullWidth: true,\n    type: colDef.type === 'number' ? colDef.type : 'text',\n    value: valueState ?? '',\n    onChange: handleChange,\n    endAdornment: isProcessingProps ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n      fontSize: \"small\",\n      color: \"action\"\n    }) : undefined\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridEditInputCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  debounceMs: PropTypes.number,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  isProcessingProps: PropTypes.bool,\n  isValidating: PropTypes.bool,\n  /**\n   * Callback called when the value is changed by the user.\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n   * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n   */\n  onValueChange: PropTypes.func,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridEditInputCell };\nexport const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\", \"initialOpen\"],\n  _excluded2 = [\"MenuProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { GridCellEditStopReasons } from \"../../models/params/gridEditCellParams.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { GridEditModes } from \"../../models/gridEditRowModel.js\";\nimport { getValueFromValueOptions, getValueOptions, isSingleSelectColDef } from \"../panel/filterPanel/filterPanelUtils.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isKeyboardEvent(event) {\n  return !!event.key;\n}\nfunction GridEditSingleSelectCell(props) {\n  const rootProps = useGridRootProps();\n  const {\n      id,\n      value: valueProp,\n      field,\n      row,\n      colDef,\n      hasFocus,\n      error,\n      onValueChange,\n      initialOpen = rootProps.editMode === GridEditModes.Cell\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const ref = React.useRef();\n  const inputRef = React.useRef();\n  const [open, setOpen] = React.useState(initialOpen);\n  const baseSelectProps = rootProps.slotProps?.baseSelect || {};\n  const isSelectNative = baseSelectProps.native ?? false;\n  const _ref = rootProps.slotProps?.baseSelect || {},\n    {\n      MenuProps\n    } = _ref,\n    otherBaseSelectProps = _objectWithoutPropertiesLoose(_ref, _excluded2);\n  useEnhancedEffect(() => {\n    if (hasFocus) {\n      inputRef.current?.focus();\n    }\n  }, [hasFocus]);\n  if (!isSingleSelectColDef(colDef)) {\n    return null;\n  }\n  const valueOptions = getValueOptions(colDef, {\n    id,\n    row\n  });\n  if (!valueOptions) {\n    return null;\n  }\n  const getOptionValue = colDef.getOptionValue;\n  const getOptionLabel = colDef.getOptionLabel;\n  const handleChange = async event => {\n    if (!isSingleSelectColDef(colDef) || !valueOptions) {\n      return;\n    }\n    setOpen(false);\n    const target = event.target;\n    // NativeSelect casts the value to a string.\n    const formattedTargetValue = getValueFromValueOptions(target.value, valueOptions, getOptionValue);\n    if (onValueChange) {\n      await onValueChange(event, formattedTargetValue);\n    }\n    await apiRef.current.setEditCellValue({\n      id,\n      field,\n      value: formattedTargetValue\n    }, event);\n  };\n  const handleClose = (event, reason) => {\n    if (rootProps.editMode === GridEditModes.Row) {\n      setOpen(false);\n      return;\n    }\n    if (reason === 'backdropClick' || event.key === 'Escape') {\n      const params = apiRef.current.getCellParams(id, field);\n      apiRef.current.publishEvent('cellEditStop', _extends({}, params, {\n        reason: event.key === 'Escape' ? GridCellEditStopReasons.escapeKeyDown : GridCellEditStopReasons.cellFocusOut\n      }));\n    }\n  };\n  const handleOpen = event => {\n    if (isKeyboardEvent(event) && event.key === 'Enter') {\n      return;\n    }\n    setOpen(true);\n  };\n  if (!valueOptions || !colDef) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n    ref: ref,\n    inputRef: inputRef,\n    value: valueProp,\n    onChange: handleChange,\n    open: open,\n    onOpen: handleOpen,\n    MenuProps: _extends({\n      onClose: handleClose\n    }, MenuProps),\n    error: error,\n    native: isSelectNative,\n    fullWidth: true\n  }, other, otherBaseSelectProps, {\n    children: valueOptions.map(valueOption => {\n      const value = getOptionValue(valueOption);\n      return /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, rootProps.slotProps?.baseSelectOption || {}, {\n        native: isSelectNative,\n        key: value,\n        value: value\n      }), getOptionLabel(valueOption));\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditSingleSelectCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the select opens by default.\n   */\n  initialOpen: PropTypes.bool,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  isProcessingProps: PropTypes.bool,\n  isValidating: PropTypes.bool,\n  /**\n   * Callback called when the value is changed by the user.\n   * @param {SelectChangeEvent<any>} event The event source of the callback.\n   * @param {any} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n   * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n   */\n  onValueChange: PropTypes.func,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridEditSingleSelectCell };\nexport const renderEditSingleSelectCell = params => /*#__PURE__*/_jsx(GridEditSingleSelectCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"type\", \"align\", \"width\", \"height\", \"empty\", \"style\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Skeleton from '@mui/material/Skeleton';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { createRandomNumberGenerator } from \"../../utils/utils.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CIRCULAR_CONTENT_SIZE = '1.3em';\nconst CONTENT_HEIGHT = '1.2em';\nconst DEFAULT_CONTENT_WIDTH_RANGE = [40, 80];\nconst CONTENT_WIDTH_RANGE_BY_TYPE = {\n  number: [40, 60],\n  string: [40, 80],\n  date: [40, 60],\n  dateTime: [60, 80],\n  singleSelect: [40, 80]\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    classes,\n    empty\n  } = ownerState;\n  const slots = {\n    root: ['cell', 'cellSkeleton', `cell--text${align ? capitalize(align) : 'Left'}`, empty && 'cellEmpty']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst randomNumberGenerator = createRandomNumberGenerator(12345);\nfunction GridSkeletonCell(props) {\n  const {\n      field,\n      type,\n      align,\n      width,\n      height,\n      empty = false,\n      style,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes,\n    align,\n    empty\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // Memo prevents the non-circular skeleton widths changing to random widths on every render\n  const skeletonProps = React.useMemo(() => {\n    const isCircularContent = type === 'boolean' || type === 'actions';\n    if (isCircularContent) {\n      return {\n        variant: 'circular',\n        width: CIRCULAR_CONTENT_SIZE,\n        height: CIRCULAR_CONTENT_SIZE\n      };\n    }\n\n    // The width of the skeleton is a random number between the min and max values\n    // The min and max values are determined by the type of the column\n    const [min, max] = type ? CONTENT_WIDTH_RANGE_BY_TYPE[type] ?? DEFAULT_CONTENT_WIDTH_RANGE : DEFAULT_CONTENT_WIDTH_RANGE;\n    return {\n      variant: 'text',\n      width: `${Math.round(randomNumberGenerator(min, max))}%`,\n      height: CONTENT_HEIGHT\n    };\n  }, [type]);\n  return /*#__PURE__*/_jsx(\"div\", _extends({\n    \"data-field\": field,\n    className: clsx(classes.root, className),\n    style: _extends({\n      height,\n      maxWidth: width,\n      minWidth: width\n    }, style)\n  }, other, {\n    children: !empty && /*#__PURE__*/_jsx(Skeleton, _extends({}, skeletonProps))\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridSkeletonCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  align: PropTypes.string,\n  /**\n   * If `true`, the cell will not display the skeleton but still reserve the cell space.\n   * @default false\n   */\n  empty: PropTypes.bool,\n  field: PropTypes.string,\n  height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n  type: PropTypes.oneOf(['actions', 'boolean', 'custom', 'date', 'dateTime', 'number', 'singleSelect', 'string']),\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nconst Memoized = fastMemo(GridSkeletonCell);\nexport { Memoized as GridSkeletonCell };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { useGridSelector } from \"../../hooks/index.js\";\nimport { gridPreferencePanelStateSelector } from \"../../hooks/features/preferencesPanel/gridPreferencePanelSelector.js\";\nimport { GridPreferencePanelsValue } from \"../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { GridIconButtonContainer } from \"./GridIconButtonContainer.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    icon: ['filterIcon']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderFilterIconButton(props) {\n  const {\n    counter,\n    field,\n    onClick\n  } = props;\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = _extends({}, props, {\n    classes: rootProps.classes\n  });\n  const classes = useUtilityClasses(ownerState);\n  const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n  const labelId = useId();\n  const panelId = useId();\n  const toggleFilter = React.useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    const {\n      open,\n      openedPanelValue\n    } = gridPreferencePanelStateSelector(apiRef.current.state);\n    if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n      apiRef.current.hideFilterPanel();\n    } else {\n      apiRef.current.showFilterPanel(undefined, panelId, labelId);\n    }\n    if (onClick) {\n      onClick(apiRef.current.getColumnHeaderParams(field), event);\n    }\n  }, [apiRef, field, onClick, panelId, labelId]);\n  if (!counter) {\n    return null;\n  }\n  const open = preferencePanel.open && preferencePanel.labelId === labelId;\n  const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n    id: labelId,\n    onClick: toggleFilter,\n    color: \"default\",\n    \"aria-label\": apiRef.current.getLocaleText('columnHeaderFiltersLabel'),\n    size: \"small\",\n    tabIndex: -1,\n    \"aria-haspopup\": \"menu\",\n    \"aria-expanded\": open,\n    \"aria-controls\": open ? panelId : undefined\n  }, rootProps.slotProps?.baseIconButton, {\n    children: /*#__PURE__*/_jsx(rootProps.slots.columnFilteredIcon, {\n      className: classes.icon,\n      fontSize: \"small\"\n    })\n  }));\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n    title: apiRef.current.getLocaleText('columnHeaderFiltersTooltipActive')(counter),\n    enterDelay: 1000\n  }, rootProps.slotProps?.baseTooltip, {\n    children: /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n      children: [counter > 1 && /*#__PURE__*/_jsx(Badge, {\n        badgeContent: counter,\n        color: \"default\",\n        children: iconButton\n      }), counter === 1 && iconButton]\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderFilterIconButton.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  counter: PropTypes.number,\n  field: PropTypes.string.isRequired,\n  onClick: PropTypes.func\n} : void 0;\nexport { GridColumnHeaderFilterIconButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    open\n  } = ownerState;\n  const slots = {\n    root: ['menuIcon', open && 'menuOpen'],\n    button: ['menuIconButton']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nexport const ColumnHeaderMenuIcon = /*#__PURE__*/React.memo(props => {\n  const {\n    colDef,\n    open,\n    columnMenuId,\n    columnMenuButtonId,\n    iconButtonRef\n  } = props;\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = _extends({}, props, {\n    classes: rootProps.classes\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleMenuIconClick = React.useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    apiRef.current.toggleColumnMenu(colDef.field);\n  }, [apiRef, colDef.field]);\n  return /*#__PURE__*/_jsx(\"div\", {\n    className: classes.root,\n    children: /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n      title: apiRef.current.getLocaleText('columnMenuLabel'),\n      enterDelay: 1000\n    }, rootProps.slotProps?.baseTooltip, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n        ref: iconButtonRef,\n        tabIndex: -1,\n        className: classes.button,\n        \"aria-label\": apiRef.current.getLocaleText('columnMenuLabel'),\n        size: \"small\",\n        onClick: handleMenuIconClick,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": open,\n        \"aria-controls\": open ? columnMenuId : undefined,\n        id: columnMenuButtonId\n      }, rootProps.slotProps?.baseIconButton, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuIcon, {\n          fontSize: \"inherit\"\n        })\n      }))\n    }))\n  });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useGridPrivateApiContext } from \"../../hooks/utils/useGridPrivateApiContext.js\";\nimport { ColumnHeaderMenuIcon } from \"./ColumnHeaderMenuIcon.js\";\nimport { GridColumnHeaderMenu } from \"../menu/columnMenu/GridColumnHeaderMenu.js\";\nimport { gridClasses, getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { GridGenericColumnHeaderItem } from \"./GridGenericColumnHeaderItem.js\";\nimport { isEventTargetInPortal } from \"../../utils/domUtils.js\";\nimport { shouldCellShowLeftBorder, shouldCellShowRightBorder } from \"../../utils/cellBorderUtils.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    colDef,\n    classes,\n    isDragging,\n    sortDirection,\n    showRightBorder,\n    showLeftBorder,\n    filterItemsCounter,\n    pinnedPosition,\n    isLastUnpinned,\n    isSiblingFocused\n  } = ownerState;\n  const isColumnSorted = sortDirection != null;\n  const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;\n  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work\n  const isColumnNumeric = colDef.type === 'number';\n  const slots = {\n    root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight',\n    // TODO: Remove classes below and restore `:has` selectors when they are supported in jsdom\n    // See https://github.com/mui/mui-x/pull/14559\n    isLastUnpinned && 'columnHeader--lastUnpinned', isSiblingFocused && 'columnHeader--siblingFocused'],\n    draggableContainer: ['columnHeaderDraggableContainer'],\n    titleContainer: ['columnHeaderTitleContainer'],\n    titleContainerContent: ['columnHeaderTitleContainerContent']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderItem(props) {\n  const {\n    colDef,\n    columnMenuOpen,\n    colIndex,\n    headerHeight,\n    isResizing,\n    isLast,\n    sortDirection,\n    sortIndex,\n    filterItemsCounter,\n    hasFocus,\n    tabIndex,\n    disableReorder,\n    separatorSide,\n    style,\n    pinnedPosition,\n    indexInSection,\n    sectionLength,\n    gridHasFiller\n  } = props;\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const headerCellRef = React.useRef(null);\n  const columnMenuId = useId();\n  const columnMenuButtonId = useId();\n  const iconButtonRef = React.useRef(null);\n  const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);\n  const isDraggable = React.useMemo(() => !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder, [rootProps.disableColumnReorder, disableReorder, colDef.disableReorder]);\n  let headerComponent;\n  if (colDef.renderHeader) {\n    headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));\n  }\n  const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);\n  const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showColumnVerticalBorder, gridHasFiller);\n  const ownerState = _extends({}, props, {\n    classes: rootProps.classes,\n    showRightBorder,\n    showLeftBorder\n  });\n  const classes = useUtilityClasses(ownerState);\n  const publish = React.useCallback(eventName => event => {\n    // Ignore portal\n    // See https://github.com/mui/mui-x/issues/1721\n    if (isEventTargetInPortal(event)) {\n      return;\n    }\n    apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);\n  }, [apiRef, colDef.field]);\n  const mouseEventsHandlers = React.useMemo(() => ({\n    onClick: publish('columnHeaderClick'),\n    onDoubleClick: publish('columnHeaderDoubleClick'),\n    onMouseOver: publish('columnHeaderOver'),\n    // TODO remove as it's not used\n    onMouseOut: publish('columnHeaderOut'),\n    // TODO remove as it's not used\n    onMouseEnter: publish('columnHeaderEnter'),\n    // TODO remove as it's not used\n    onMouseLeave: publish('columnHeaderLeave'),\n    // TODO remove as it's not used\n    onKeyDown: publish('columnHeaderKeyDown'),\n    onFocus: publish('columnHeaderFocus'),\n    onBlur: publish('columnHeaderBlur')\n  }), [publish]);\n  const draggableEventHandlers = React.useMemo(() => isDraggable ? {\n    onDragStart: publish('columnHeaderDragStart'),\n    onDragEnter: publish('columnHeaderDragEnter'),\n    onDragOver: publish('columnHeaderDragOver'),\n    onDragEnd: publish('columnHeaderDragEnd')\n  } : {}, [isDraggable, publish]);\n  const columnHeaderSeparatorProps = React.useMemo(() => ({\n    onMouseDown: publish('columnSeparatorMouseDown'),\n    onDoubleClick: publish('columnSeparatorDoubleClick')\n  }), [publish]);\n  React.useEffect(() => {\n    if (!showColumnMenuIcon) {\n      setShowColumnMenuIcon(columnMenuOpen);\n    }\n  }, [showColumnMenuIcon, columnMenuOpen]);\n  const handleExited = React.useCallback(() => {\n    setShowColumnMenuIcon(false);\n  }, []);\n  const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/_jsx(ColumnHeaderMenuIcon, {\n    colDef: colDef,\n    columnMenuId: columnMenuId,\n    columnMenuButtonId: columnMenuButtonId,\n    open: showColumnMenuIcon,\n    iconButtonRef: iconButtonRef\n  });\n  const columnMenu = /*#__PURE__*/_jsx(GridColumnHeaderMenu, {\n    columnMenuId: columnMenuId,\n    columnMenuButtonId: columnMenuButtonId,\n    field: colDef.field,\n    open: columnMenuOpen,\n    target: iconButtonRef.current,\n    ContentComponent: rootProps.slots.columnMenu,\n    contentComponentProps: rootProps.slotProps?.columnMenu,\n    onExited: handleExited\n  });\n  const sortingOrder = colDef.sortingOrder ?? rootProps.sortingOrder;\n  const showSortIcon = (colDef.sortable || sortDirection != null) && !colDef.hideSortIcons && !rootProps.disableColumnSorting;\n  const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.slots.columnHeaderFilterIconButton, _extends({\n      field: colDef.field,\n      counter: filterItemsCounter\n    }, rootProps.slotProps?.columnHeaderFilterIconButton)), showSortIcon && /*#__PURE__*/_jsx(rootProps.slots.columnHeaderSortIcon, _extends({\n      field: colDef.field,\n      direction: sortDirection,\n      index: sortIndex,\n      sortingOrder: sortingOrder,\n      disabled: !colDef.sortable\n    }, rootProps.slotProps?.columnHeaderSortIcon))]\n  });\n  React.useLayoutEffect(() => {\n    const columnMenuState = apiRef.current.state.columnMenu;\n    if (hasFocus && !columnMenuState.open) {\n      const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n      const elementToFocus = focusableElement || headerCellRef.current;\n      elementToFocus?.focus();\n      if (apiRef.current.columnHeadersContainerRef?.current) {\n        apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;\n      }\n    }\n  }, [apiRef, hasFocus]);\n  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({\n    field: colDef.field,\n    colDef\n  }) : colDef.headerClassName;\n  const label = colDef.headerName ?? colDef.field;\n  return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, _extends({\n    ref: headerCellRef,\n    classes: classes,\n    columnMenuOpen: columnMenuOpen,\n    colIndex: colIndex,\n    height: headerHeight,\n    isResizing: isResizing,\n    sortDirection: sortDirection,\n    hasFocus: hasFocus,\n    tabIndex: tabIndex,\n    separatorSide: separatorSide,\n    isDraggable: isDraggable,\n    headerComponent: headerComponent,\n    description: colDef.description,\n    elementId: colDef.field,\n    width: colDef.computedWidth,\n    columnMenuIconButton: columnMenuIconButton,\n    columnTitleIconButtons: columnTitleIconButtons,\n    headerClassName: clsx(headerClassName, isLast && gridClasses['columnHeader--last']),\n    label: label,\n    resizable: !rootProps.disableColumnResize && !!colDef.resizable,\n    \"data-field\": colDef.field,\n    columnMenu: columnMenu,\n    draggableContainerProps: draggableEventHandlers,\n    columnHeaderSeparatorProps: columnHeaderSeparatorProps,\n    style: style\n  }, mouseEventsHandlers));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  colIndex: PropTypes.number.isRequired,\n  columnMenuOpen: PropTypes.bool.isRequired,\n  disableReorder: PropTypes.bool,\n  filterItemsCounter: PropTypes.number,\n  gridHasFiller: PropTypes.bool.isRequired,\n  hasFocus: PropTypes.bool,\n  headerHeight: PropTypes.number.isRequired,\n  indexInSection: PropTypes.number.isRequired,\n  isDragging: PropTypes.bool.isRequired,\n  isLast: PropTypes.bool.isRequired,\n  isLastUnpinned: PropTypes.bool.isRequired,\n  isResizing: PropTypes.bool.isRequired,\n  isSiblingFocused: PropTypes.bool.isRequired,\n  pinnedPosition: PropTypes.oneOf(['left', 'right']),\n  sectionLength: PropTypes.number.isRequired,\n  separatorSide: PropTypes.oneOf(['left', 'right']),\n  sortDirection: PropTypes.oneOf(['asc', 'desc']),\n  sortIndex: PropTypes.number,\n  style: PropTypes.object,\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired\n} : void 0;\nconst Memoized = fastMemo(GridColumnHeaderItem);\nexport { Memoized as GridColumnHeaderItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"resizable\", \"resizing\", \"height\", \"side\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar GridColumnHeaderSeparatorSides = /*#__PURE__*/function (GridColumnHeaderSeparatorSides) {\n  GridColumnHeaderSeparatorSides[\"Left\"] = \"left\";\n  GridColumnHeaderSeparatorSides[\"Right\"] = \"right\";\n  return GridColumnHeaderSeparatorSides;\n}(GridColumnHeaderSeparatorSides || {});\nconst useUtilityClasses = ownerState => {\n  const {\n    resizable,\n    resizing,\n    classes,\n    side\n  } = ownerState;\n  const slots = {\n    root: ['columnSeparator', resizable && 'columnSeparator--resizable', resizing && 'columnSeparator--resizing', side && `columnSeparator--side${capitalize(side)}`],\n    icon: ['iconSeparator']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderSeparatorRaw(props) {\n  const {\n      height,\n      side = GridColumnHeaderSeparatorSides.Right\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const ownerState = _extends({}, props, {\n    side,\n    classes: rootProps.classes\n  });\n  const classes = useUtilityClasses(ownerState);\n  const stopClick = React.useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n  }, []);\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n    _jsx(\"div\", _extends({\n      className: classes.root,\n      style: {\n        minHeight: height\n      }\n    }, other, {\n      onClick: stopClick,\n      children: /*#__PURE__*/_jsx(rootProps.slots.columnResizeIcon, {\n        className: classes.icon\n      })\n    }))\n  );\n}\nconst GridColumnHeaderSeparator = /*#__PURE__*/React.memo(GridColumnHeaderSeparatorRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSeparatorRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  height: PropTypes.number.isRequired,\n  resizable: PropTypes.bool.isRequired,\n  resizing: PropTypes.bool.isRequired,\n  side: PropTypes.oneOf(['left', 'right'])\n} : void 0;\nexport { GridColumnHeaderSeparator, GridColumnHeaderSeparatorSides };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"direction\", \"index\", \"sortingOrder\", \"disabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Badge from '@mui/material/Badge';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { GridIconButtonContainer } from \"./GridIconButtonContainer.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    icon: ['sortIcon']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction getIcon(icons, direction, className, sortingOrder) {\n  let Icon;\n  const iconProps = {};\n  if (direction === 'asc') {\n    Icon = icons.columnSortedAscendingIcon;\n  } else if (direction === 'desc') {\n    Icon = icons.columnSortedDescendingIcon;\n  } else {\n    Icon = icons.columnUnsortedIcon;\n    iconProps.sortingOrder = sortingOrder;\n  }\n  return Icon ? /*#__PURE__*/_jsx(Icon, _extends({\n    fontSize: \"small\",\n    className: className\n  }, iconProps)) : null;\n}\nfunction GridColumnHeaderSortIconRaw(props) {\n  const {\n      direction,\n      index,\n      sortingOrder,\n      disabled\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = _extends({}, props, {\n    classes: rootProps.classes\n  });\n  const classes = useUtilityClasses(ownerState);\n  const iconElement = getIcon(rootProps.slots, direction, classes.icon, sortingOrder);\n  if (!iconElement) {\n    return null;\n  }\n  const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n    tabIndex: -1,\n    \"aria-label\": apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n    title: apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n    size: \"small\",\n    disabled: disabled\n  }, rootProps.slotProps?.baseIconButton, other, {\n    children: iconElement\n  }));\n  return /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n    children: [index != null && /*#__PURE__*/_jsx(Badge, {\n      badgeContent: index,\n      color: \"default\",\n      overlap: \"circular\",\n      children: iconButton\n    }), index == null && iconButton]\n  });\n}\nconst GridColumnHeaderSortIcon = /*#__PURE__*/React.memo(GridColumnHeaderSortIconRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSortIconRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  direction: PropTypes.oneOf(['asc', 'desc']),\n  disabled: PropTypes.bool,\n  field: PropTypes.string.isRequired,\n  index: PropTypes.number,\n  sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])).isRequired\n} : void 0;\nexport { GridColumnHeaderSortIcon };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"aria-label\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { isOverflown } from \"../../utils/domUtils.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['columnHeaderTitle']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnHeaderTitleRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnHeaderTitle',\n  overridesResolver: (props, styles) => styles.columnHeaderTitle\n})({\n  textOverflow: 'ellipsis',\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  fontWeight: 'var(--unstable_DataGrid-headWeight)',\n  lineHeight: 'normal'\n});\nconst ColumnHeaderInnerTitle = /*#__PURE__*/React.forwardRef(function ColumnHeaderInnerTitle(props, ref) {\n  // Tooltip adds aria-label to the props, which is not needed since the children prop is a string\n  // See https://github.com/mui/mui-x/pull/14482\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridColumnHeaderTitleRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: rootProps\n  }, other));\n});\n// No React.memo here as if we display the sort icon, we need to recalculate the isOver\nfunction GridColumnHeaderTitle(props) {\n  const {\n    label,\n    description\n  } = props;\n  const rootProps = useGridRootProps();\n  const titleRef = React.useRef(null);\n  const [tooltip, setTooltip] = React.useState('');\n  const handleMouseOver = React.useCallback(() => {\n    if (!description && titleRef?.current) {\n      const isOver = isOverflown(titleRef.current);\n      if (isOver) {\n        setTooltip(label);\n      } else {\n        setTooltip('');\n      }\n    }\n  }, [description, label]);\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n    title: description || tooltip\n  }, rootProps.slotProps?.baseTooltip, {\n    children: /*#__PURE__*/_jsx(ColumnHeaderInnerTitle, {\n      onMouseOver: handleMouseOver,\n      ref: titleRef,\n      children: label\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderTitle.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  columnWidth: PropTypes.number.isRequired,\n  description: PropTypes.node,\n  label: PropTypes.string.isRequired\n} : void 0;\nexport { GridColumnHeaderTitle };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"classes\", \"columnMenuOpen\", \"colIndex\", \"height\", \"isResizing\", \"sortDirection\", \"hasFocus\", \"tabIndex\", \"separatorSide\", \"isDraggable\", \"headerComponent\", \"description\", \"elementId\", \"width\", \"columnMenuIconButton\", \"columnMenu\", \"columnTitleIconButtons\", \"headerClassName\", \"label\", \"resizable\", \"draggableContainerProps\", \"columnHeaderSeparatorProps\", \"style\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { useGridPrivateApiContext } from \"../../hooks/utils/useGridPrivateApiContext.js\";\nimport { GridColumnHeaderTitle } from \"./GridColumnHeaderTitle.js\";\nimport { GridColumnHeaderSeparator } from \"./GridColumnHeaderSeparator.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {\n  const {\n      classes,\n      colIndex,\n      height,\n      isResizing,\n      sortDirection,\n      hasFocus,\n      tabIndex,\n      separatorSide,\n      isDraggable,\n      headerComponent,\n      description,\n      width,\n      columnMenuIconButton = null,\n      columnMenu = null,\n      columnTitleIconButtons = null,\n      headerClassName,\n      label,\n      resizable,\n      draggableContainerProps,\n      columnHeaderSeparatorProps,\n      style\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const headerCellRef = React.useRef(null);\n  const handleRef = useForkRef(headerCellRef, ref);\n  let ariaSort = 'none';\n  if (sortDirection != null) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  React.useLayoutEffect(() => {\n    const columnMenuState = apiRef.current.state.columnMenu;\n    if (hasFocus && !columnMenuState.open) {\n      const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n      const elementToFocus = focusableElement || headerCellRef.current;\n      elementToFocus?.focus();\n      if (apiRef.current.columnHeadersContainerRef?.current) {\n        apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;\n      }\n    }\n  }, [apiRef, hasFocus]);\n  return /*#__PURE__*/_jsxs(\"div\", _extends({\n    ref: handleRef,\n    className: clsx(classes.root, headerClassName),\n    style: _extends({}, style, {\n      height,\n      width\n    }),\n    role: \"columnheader\",\n    tabIndex: tabIndex,\n    \"aria-colindex\": colIndex + 1,\n    \"aria-sort\": ariaSort\n  }, other, {\n    children: [/*#__PURE__*/_jsxs(\"div\", _extends({\n      className: classes.draggableContainer,\n      draggable: isDraggable,\n      role: \"presentation\"\n    }, draggableContainerProps, {\n      children: [/*#__PURE__*/_jsxs(\"div\", {\n        className: classes.titleContainer,\n        role: \"presentation\",\n        children: [/*#__PURE__*/_jsx(\"div\", {\n          className: classes.titleContainerContent,\n          children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {\n            label: label,\n            description: description,\n            columnWidth: width\n          })\n        }), columnTitleIconButtons]\n      }), columnMenuIconButton]\n    })), /*#__PURE__*/_jsx(GridColumnHeaderSeparator, _extends({\n      resizable: !rootProps.disableColumnResize && !!resizable,\n      resizing: isResizing,\n      height: height,\n      side: separatorSide\n    }, columnHeaderSeparatorProps)), columnMenu]\n  }));\n});\nexport { GridGenericColumnHeaderItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['iconButtonContainer']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridIconButtonContainerRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'IconButtonContainer',\n  overridesResolver: (props, styles) => styles.iconButtonContainer\n})(() => ({\n  display: 'flex',\n  visibility: 'hidden',\n  width: 0\n}));\nexport const GridIconButtonContainer = /*#__PURE__*/React.forwardRef(function GridIconButtonContainer(props, ref) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridIconButtonContainerRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: rootProps\n  }, other));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"id\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"colDef\", \"isEditable\", \"cellMode\", \"hasFocus\", \"tabIndex\", \"api\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['checkboxInput']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCellCheckboxRenderer(props, ref) {\n  const {\n      field,\n      id,\n      value: isChecked,\n      rowNode,\n      hasFocus,\n      tabIndex\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const checkboxElement = React.useRef(null);\n  const rippleRef = React.useRef(null);\n  const handleRef = useForkRef(checkboxElement, ref);\n  const handleChange = event => {\n    const params = {\n      value: event.target.checked,\n      id\n    };\n    apiRef.current.publishEvent('rowSelectionCheckboxChange', params, event);\n  };\n  React.useLayoutEffect(() => {\n    if (tabIndex === 0) {\n      const element = apiRef.current.getCellElement(id, field);\n      if (element) {\n        element.tabIndex = -1;\n      }\n    }\n  }, [apiRef, tabIndex, id, field]);\n  React.useEffect(() => {\n    if (hasFocus) {\n      const input = checkboxElement.current?.querySelector('input');\n      input?.focus({\n        preventScroll: true\n      });\n    } else if (rippleRef.current) {\n      // Only available in @mui/material v5.4.1 or later\n      rippleRef.current.stop({});\n    }\n  }, [hasFocus]);\n  const handleKeyDown = React.useCallback(event => {\n    if (event.key === ' ') {\n      // We call event.stopPropagation to avoid selecting the row and also scrolling to bottom\n      // TODO: Remove and add a check inside useGridKeyboardNavigation\n      event.stopPropagation();\n    }\n  }, []);\n  if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {\n    return null;\n  }\n  const isSelectable = apiRef.current.isRowSelectable(id);\n  const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectRow' : 'checkboxSelectionSelectRow');\n  return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n    ref: handleRef,\n    tabIndex: tabIndex,\n    checked: isChecked,\n    onChange: handleChange,\n    className: classes.root,\n    inputProps: {\n      'aria-label': label\n    },\n    onKeyDown: handleKeyDown,\n    disabled: !isSelectable,\n    touchRippleRef: rippleRef /* FIXME: typing error */\n  }, rootProps.slotProps?.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCellCheckboxForwardRef.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * GridApi that let you manipulate the grid.\n   */\n  api: PropTypes.object.isRequired,\n  /**\n   * The mode of the cell.\n   */\n  cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n  /**\n   * The column of the row that the current cell belongs to.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the cell that triggered the event.\n   */\n  field: PropTypes.string.isRequired,\n  /**\n   * A ref allowing to set imperative focus.\n   * It can be passed to the element that should receive focus.\n   * @ignore - do not document.\n   */\n  focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      focus: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The cell value formatted with the column valueFormatter.\n   */\n  formattedValue: PropTypes.any,\n  /**\n   * If true, the cell is the active element.\n   */\n  hasFocus: PropTypes.bool.isRequired,\n  /**\n   * The grid row id.\n   */\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  /**\n   * If true, the cell is editable.\n   */\n  isEditable: PropTypes.bool,\n  /**\n   * The row model of the row that the current cell belongs to.\n   */\n  row: PropTypes.any.isRequired,\n  /**\n   * The node of the row that the current cell belongs to.\n   */\n  rowNode: PropTypes.object.isRequired,\n  /**\n   * the tabIndex value.\n   */\n  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n  /**\n   * The cell value.\n   * If the column has `valueGetter`, use `params.row` to directly access the fields.\n   */\n  value: PropTypes.any\n} : void 0;\nexport { GridCellCheckboxForwardRef };\nexport const GridCellCheckboxRenderer = GridCellCheckboxForwardRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"colDef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { isMultipleRowSelectionEnabled } from \"../../hooks/features/rowSelection/utils.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridTabIndexColumnHeaderSelector } from \"../../hooks/features/focus/gridFocusStateSelector.js\";\nimport { gridRowSelectionStateSelector } from \"../../hooks/features/rowSelection/gridRowSelectionSelector.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { gridExpandedSortedRowIdsSelector } from \"../../hooks/features/filter/gridFilterSelector.js\";\nimport { gridPaginatedVisibleSortedGridRowIdsSelector } from \"../../hooks/features/pagination/gridPaginationSelector.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['checkboxInput']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridHeaderCheckbox = /*#__PURE__*/React.forwardRef(function GridHeaderCheckbox(props, ref) {\n  const other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [, forceUpdate] = React.useState(false);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const ownerState = {\n    classes: rootProps.classes\n  };\n  const classes = useUtilityClasses(ownerState);\n  const tabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n  const selection = useGridSelector(apiRef, gridRowSelectionStateSelector);\n  const visibleRowIds = useGridSelector(apiRef, gridExpandedSortedRowIdsSelector);\n  const paginatedVisibleRowIds = useGridSelector(apiRef, gridPaginatedVisibleSortedGridRowIdsSelector);\n  const filteredSelection = React.useMemo(() => {\n    if (typeof rootProps.isRowSelectable !== 'function') {\n      return selection;\n    }\n    return selection.filter(id => {\n      // The row might have been deleted\n      if (!apiRef.current.getRow(id)) {\n        return false;\n      }\n      return rootProps.isRowSelectable(apiRef.current.getRowParams(id));\n    });\n  }, [apiRef, rootProps.isRowSelectable, selection]);\n\n  // All the rows that could be selected / unselected by toggling this checkbox\n  const selectionCandidates = React.useMemo(() => {\n    const rowIds = !rootProps.pagination || !rootProps.checkboxSelectionVisibleOnly ? visibleRowIds : paginatedVisibleRowIds;\n\n    // Convert to an object to make O(1) checking if a row exists or not\n    // TODO create selector that returns visibleRowIds/paginatedVisibleRowIds as an object\n    return rowIds.reduce((acc, id) => {\n      acc[id] = true;\n      return acc;\n    }, {});\n  }, [rootProps.pagination, rootProps.checkboxSelectionVisibleOnly, paginatedVisibleRowIds, visibleRowIds]);\n\n  // Amount of rows selected and that are visible in the current page\n  const currentSelectionSize = React.useMemo(() => filteredSelection.filter(id => selectionCandidates[id]).length, [filteredSelection, selectionCandidates]);\n  const isIndeterminate = currentSelectionSize > 0 && currentSelectionSize < Object.keys(selectionCandidates).length;\n  const isChecked = currentSelectionSize > 0;\n  const handleChange = event => {\n    const params = {\n      value: event.target.checked\n    };\n    apiRef.current.publishEvent('headerSelectionCheckboxChange', params);\n  };\n  const tabIndex = tabIndexState !== null && tabIndexState.field === props.field ? 0 : -1;\n  React.useLayoutEffect(() => {\n    const element = apiRef.current.getColumnHeaderElement(props.field);\n    if (tabIndex === 0 && element) {\n      element.tabIndex = -1;\n    }\n  }, [tabIndex, apiRef, props.field]);\n  const handleKeyDown = React.useCallback(event => {\n    if (event.key === ' ') {\n      // imperative toggle the checkbox because Space is disable by some preventDefault\n      apiRef.current.publishEvent('headerSelectionCheckboxChange', {\n        value: !isChecked\n      });\n    }\n  }, [apiRef, isChecked]);\n  const handleSelectionChange = React.useCallback(() => {\n    forceUpdate(p => !p);\n  }, []);\n  React.useEffect(() => {\n    return apiRef.current.subscribeEvent('rowSelectionChange', handleSelectionChange);\n  }, [apiRef, handleSelectionChange]);\n  const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectAllRows' : 'checkboxSelectionSelectAllRows');\n  const checked = rootProps.indeterminateCheckboxAction === 'select' ? isChecked && !isIndeterminate : isChecked;\n  return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n    ref: ref,\n    indeterminate: isIndeterminate,\n    checked: checked,\n    onChange: handleChange,\n    className: classes.root,\n    inputProps: {\n      'aria-label': label\n    },\n    tabIndex: tabIndex,\n    onKeyDown: handleKeyDown,\n    disabled: !isMultipleRowSelectionEnabled(rootProps)\n  }, rootProps.slotProps?.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridHeaderCheckbox.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The column of the current header component.\n   */\n  colDef: PropTypes.object.isRequired,\n  /**\n   * The column field of the column that triggered the event\n   */\n  field: PropTypes.string.isRequired\n} : void 0;\nexport { GridHeaderCheckbox };","export const checkColumnVisibilityModelsSame = (a, b) => {\n  // Filter `false` values only, as `true` and not having a key are the same\n  const aFalseValues = new Set(Object.keys(a).filter(key => a[key] === false));\n  const bFalseValues = new Set(Object.keys(b).filter(key => b[key] === false));\n  if (aFalseValues.size !== bFalseValues.size) {\n    return false;\n  }\n  let result = true;\n  aFalseValues.forEach(key => {\n    if (!bFalseValues.has(key)) {\n      result = false;\n    }\n  });\n  return result;\n};\nexport const defaultSearchPredicate = (column, searchValue) => (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { styled } from '@mui/material/styles';\nimport { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from \"../../hooks/features/columns/gridColumnsSelector.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useLazyRef } from \"../../hooks/utils/useLazyRef.js\";\nimport { checkColumnVisibilityModelsSame, defaultSearchPredicate } from \"./utils.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['columnsManagement'],\n    header: ['columnsManagementHeader'],\n    footer: ['columnsManagementFooter'],\n    row: ['columnsManagementRow']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst collator = new Intl.Collator();\nfunction GridColumnsManagement(props) {\n  const apiRef = useGridApiContext();\n  const searchInputRef = React.useRef(null);\n  const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n  const initialColumnVisibilityModel = useLazyRef(() => gridColumnVisibilityModelSelector(apiRef)).current;\n  const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n  const rootProps = useGridRootProps();\n  const [searchValue, setSearchValue] = React.useState('');\n  const classes = useUtilityClasses(rootProps);\n  const {\n    sort,\n    searchPredicate = defaultSearchPredicate,\n    autoFocusSearchField = true,\n    disableShowHideToggle = false,\n    disableResetButton = false,\n    toggleAllMode = 'all',\n    getTogglableColumns\n  } = props;\n  const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);\n  const sortedColumns = React.useMemo(() => {\n    switch (sort) {\n      case 'asc':\n        return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));\n      case 'desc':\n        return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));\n      default:\n        return columns;\n    }\n  }, [columns, sort]);\n  const toggleColumn = event => {\n    const {\n      name: field\n    } = event.target;\n    apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);\n  };\n  const currentColumns = React.useMemo(() => {\n    const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;\n    const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({\n      field\n    }) => togglableColumns.includes(field)) : sortedColumns;\n    if (!searchValue) {\n      return togglableSortedColumns;\n    }\n    return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));\n  }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);\n  const toggleAllColumns = React.useCallback(isVisible => {\n    const currentModel = gridColumnVisibilityModelSelector(apiRef);\n    const newModel = _extends({}, currentModel);\n    const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;\n    (toggleAllMode === 'filteredOnly' ? currentColumns : columns).forEach(col => {\n      if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {\n        if (isVisible) {\n          // delete the key from the model instead of setting it to `true`\n          delete newModel[col.field];\n        } else {\n          newModel[col.field] = false;\n        }\n      }\n    });\n    return apiRef.current.setColumnVisibilityModel(newModel);\n  }, [apiRef, columns, getTogglableColumns, toggleAllMode, currentColumns]);\n  const handleSearchValueChange = React.useCallback(event => {\n    setSearchValue(event.target.value);\n  }, []);\n  const hideableColumns = React.useMemo(() => currentColumns.filter(col => col.hideable), [currentColumns]);\n  const allHideableColumnsVisible = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] == null || columnVisibilityModel[column.field] !== false), [columnVisibilityModel, hideableColumns]);\n  const allHideableColumnsHidden = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] === false), [columnVisibilityModel, hideableColumns]);\n  const firstSwitchRef = React.useRef(null);\n  React.useEffect(() => {\n    if (autoFocusSearchField) {\n      searchInputRef.current.focus();\n    } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {\n      firstSwitchRef.current.focus();\n    }\n  }, [autoFocusSearchField]);\n  let firstHideableColumnFound = false;\n  const isFirstHideableColumn = column => {\n    if (firstHideableColumnFound === false && column.hideable !== false) {\n      firstHideableColumnFound = true;\n      return true;\n    }\n    return false;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {\n      className: classes.header,\n      ownerState: rootProps,\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n        placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),\n        inputRef: searchInputRef,\n        value: searchValue,\n        onChange: handleSearchValueChange,\n        variant: \"outlined\",\n        size: \"small\",\n        InputProps: {\n          startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {\n            position: \"start\",\n            children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})\n          }),\n          sx: {\n            pl: 1.5\n          }\n        },\n        fullWidth: true\n      }, rootProps.slotProps?.baseTextField))\n    }), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {\n      className: classes.root,\n      ownerState: rootProps,\n      children: [currentColumns.map(column => /*#__PURE__*/_jsx(FormControlLabel, {\n        className: classes.row,\n        control: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n          disabled: column.hideable === false,\n          checked: columnVisibilityModel[column.field] !== false,\n          onClick: toggleColumn,\n          name: column.field,\n          sx: {\n            p: 0.5\n          },\n          inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined\n        }, rootProps.slotProps?.baseCheckbox)),\n        label: column.headerName || column.field\n      }, column.field)), currentColumns.length === 0 && /*#__PURE__*/_jsx(GridColumnsManagementEmptyText, {\n        ownerState: rootProps,\n        children: apiRef.current.getLocaleText('columnsManagementNoColumns')\n      })]\n    }), (!disableShowHideToggle || !disableResetButton) && currentColumns.length > 0 ? /*#__PURE__*/_jsxs(GridColumnsManagementFooter, {\n      ownerState: rootProps,\n      className: classes.footer,\n      children: [!disableShowHideToggle ? /*#__PURE__*/_jsx(FormControlLabel, {\n        control: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n          disabled: hideableColumns.length === 0,\n          checked: allHideableColumnsVisible,\n          indeterminate: !allHideableColumnsVisible && !allHideableColumnsHidden,\n          onClick: () => toggleAllColumns(!allHideableColumnsVisible),\n          name: apiRef.current.getLocaleText('columnsManagementShowHideAllText'),\n          sx: {\n            p: 0.5\n          }\n        }, rootProps.slotProps?.baseCheckbox)),\n        label: apiRef.current.getLocaleText('columnsManagementShowHideAllText')\n      }) : /*#__PURE__*/_jsx(\"span\", {}), !disableResetButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n        onClick: () => apiRef.current.setColumnVisibilityModel(initialColumnVisibilityModel),\n        disabled: isResetDisabled\n      }, rootProps.slotProps?.baseButton, {\n        children: apiRef.current.getLocaleText('columnsManagementReset')\n      })) : null]\n    }) : null]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnsManagement.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the column search field will be focused automatically.\n   * If `false`, the first column switch input will be focused automatically.\n   * This helps to avoid input keyboard panel to popup automatically on touch devices.\n   * @default true\n   */\n  autoFocusSearchField: PropTypes.bool,\n  /**\n   * If `true`, the `Reset` button will not be disabled\n   * @default false\n   */\n  disableResetButton: PropTypes.bool,\n  /**\n   * If `true`, the `Show/Hide all` toggle checkbox will not be displayed.\n   * @default false\n   */\n  disableShowHideToggle: PropTypes.bool,\n  /**\n   * Returns the list of togglable columns.\n   * If used, only those columns will be displayed in the panel\n   * which are passed as the return value of the function.\n   * @param {GridColDef[]} columns The `ColDef` list of all columns.\n   * @returns {GridColDef['field'][]} The list of togglable columns' field names.\n   */\n  getTogglableColumns: PropTypes.func,\n  searchPredicate: PropTypes.func,\n  sort: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Changes the behavior of the `Show/Hide All` toggle when the search field is used:\n   * - `all`: Will toggle all columns.\n   * - `filteredOnly`: Will only toggle columns that match the search criteria.\n   * @default 'all'\n   */\n  toggleAllMode: PropTypes.oneOf(['all', 'filteredOnly'])\n} : void 0;\nconst GridColumnsManagementBody = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnsManagement',\n  overridesResolver: (props, styles) => styles.columnsManagement\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(0, 3, 1.5),\n  display: 'flex',\n  flexDirection: 'column',\n  overflow: 'auto',\n  flex: '1 1',\n  maxHeight: 400,\n  alignItems: 'flex-start'\n}));\nconst GridColumnsManagementHeader = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnsManagementHeader',\n  overridesResolver: (props, styles) => styles.columnsManagementHeader\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(1.5, 3)\n}));\nconst GridColumnsManagementFooter = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ColumnsManagementFooter',\n  overridesResolver: (props, styles) => styles.columnsManagementFooter\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(0.5, 1, 0.5, 3),\n  display: 'flex',\n  justifyContent: 'space-between',\n  borderTop: `1px solid ${theme.palette.divider}`\n}));\nconst GridColumnsManagementEmptyText = styled('div')(({\n  theme\n}) => ({\n  padding: theme.spacing(0.5, 0),\n  color: theme.palette.grey[500]\n}));\nexport { GridColumnsManagement };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['footerContainer', 'withBorderColor']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFooterContainerRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FooterContainer',\n  overridesResolver: (props, styles) => styles.footerContainer\n})({\n  display: 'flex',\n  justifyContent: 'space-between',\n  alignItems: 'center',\n  minHeight: 52,\n  borderTop: '1px solid'\n});\nconst GridFooterContainer = /*#__PURE__*/React.forwardRef(function GridFooterContainer(props, ref) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridFooterContainerRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: rootProps\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooterContainer.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooterContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['overlay']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridOverlayRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'Overlay',\n  overridesResolver: (_, styles) => styles.overlay\n})({\n  width: '100%',\n  height: '100%',\n  display: 'flex',\n  alignSelf: 'center',\n  alignItems: 'center',\n  justifyContent: 'center',\n  backgroundColor: 'var(--unstable_DataGrid-overlayBackground)'\n});\nconst GridOverlay = /*#__PURE__*/React.forwardRef(function GridOverlay(props, ref) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridOverlayRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: rootProps\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridOverlay.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { alpha, styled, darken, lighten, decomposeColor, recomposeColor } from '@mui/material/styles';\nimport { gridClasses as c } from \"../../constants/gridClasses.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { useGridPrivateApiContext } from \"../../hooks/utils/useGridPrivateApiContext.js\";\nimport { gridDimensionsSelector } from \"../../hooks/features/dimensions/gridDimensionsSelectors.js\";\nfunction getBorderColor(theme) {\n  if (theme.vars) {\n    return theme.vars.palette.TableCell.border;\n  }\n  if (theme.palette.mode === 'light') {\n    return lighten(alpha(theme.palette.divider, 1), 0.88);\n  }\n  return darken(alpha(theme.palette.divider, 1), 0.68);\n}\nconst columnHeaderStyles = {\n  [`& .${c.iconButtonContainer}`]: {\n    visibility: 'visible',\n    width: 'auto'\n  },\n  [`& .${c.menuIcon}`]: {\n    width: 'auto',\n    visibility: 'visible'\n  }\n};\nconst columnSeparatorTargetSize = 10;\nconst columnSeparatorOffset = -5;\nconst focusOutlineWidth = 1;\nconst separatorIconDragStyles = {\n  width: 3,\n  rx: 1.5,\n  x: 10.5\n};\n\n// Emotion thinks it knows better than us which selector we should use.\n// https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968\nconst ignoreSsrWarning = '/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */';\nexport const GridRootStyles = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => [{\n    [`&.${c.autoHeight}`]: styles.autoHeight\n  }, {\n    [`&.${c.aggregationColumnHeader}`]: styles.aggregationColumnHeader\n  }, {\n    [`&.${c['aggregationColumnHeader--alignLeft']}`]: styles['aggregationColumnHeader--alignLeft']\n  }, {\n    [`&.${c['aggregationColumnHeader--alignCenter']}`]: styles['aggregationColumnHeader--alignCenter']\n  }, {\n    [`&.${c['aggregationColumnHeader--alignRight']}`]: styles['aggregationColumnHeader--alignRight']\n  }, {\n    [`&.${c.aggregationColumnHeaderLabel}`]: styles.aggregationColumnHeaderLabel\n  }, {\n    [`&.${c['root--disableUserSelection']} .${c.cell}`]: styles['root--disableUserSelection']\n  }, {\n    [`&.${c.autosizing}`]: styles.autosizing\n  }, {\n    [`& .${c.editBooleanCell}`]: styles.editBooleanCell\n  }, {\n    [`& .${c.cell}`]: styles.cell\n  }, {\n    [`& .${c['cell--editing']}`]: styles['cell--editing']\n  }, {\n    [`& .${c['cell--textCenter']}`]: styles['cell--textCenter']\n  }, {\n    [`& .${c['cell--textLeft']}`]: styles['cell--textLeft']\n  }, {\n    [`& .${c['cell--textRight']}`]: styles['cell--textRight']\n  }, {\n    [`& .${c['cell--rangeTop']}`]: styles['cell--rangeTop']\n  }, {\n    [`& .${c['cell--rangeBottom']}`]: styles['cell--rangeBottom']\n  }, {\n    [`& .${c['cell--rangeLeft']}`]: styles['cell--rangeLeft']\n  }, {\n    [`& .${c['cell--rangeRight']}`]: styles['cell--rangeRight']\n  }, {\n    [`& .${c['cell--withRightBorder']}`]: styles['cell--withRightBorder']\n  }, {\n    [`& .${c.cellCheckbox}`]: styles.cellCheckbox\n  }, {\n    [`& .${c.cellSkeleton}`]: styles.cellSkeleton\n  }, {\n    [`& .${c.checkboxInput}`]: styles.checkboxInput\n  }, {\n    [`& .${c['columnHeader--alignCenter']}`]: styles['columnHeader--alignCenter']\n  }, {\n    [`& .${c['columnHeader--alignLeft']}`]: styles['columnHeader--alignLeft']\n  }, {\n    [`& .${c['columnHeader--alignRight']}`]: styles['columnHeader--alignRight']\n  }, {\n    [`& .${c['columnHeader--dragging']}`]: styles['columnHeader--dragging']\n  }, {\n    [`& .${c['columnHeader--moving']}`]: styles['columnHeader--moving']\n  }, {\n    [`& .${c['columnHeader--numeric']}`]: styles['columnHeader--numeric']\n  }, {\n    [`& .${c['columnHeader--sortable']}`]: styles['columnHeader--sortable']\n  }, {\n    [`& .${c['columnHeader--sorted']}`]: styles['columnHeader--sorted']\n  }, {\n    [`& .${c['columnHeader--withRightBorder']}`]: styles['columnHeader--withRightBorder']\n  }, {\n    [`& .${c.columnHeader}`]: styles.columnHeader\n  }, {\n    [`& .${c.headerFilterRow}`]: styles.headerFilterRow\n  }, {\n    [`& .${c.columnHeaderCheckbox}`]: styles.columnHeaderCheckbox\n  }, {\n    [`& .${c.columnHeaderDraggableContainer}`]: styles.columnHeaderDraggableContainer\n  }, {\n    [`& .${c.columnHeaderTitleContainer}`]: styles.columnHeaderTitleContainer\n  }, {\n    [`& .${c['columnSeparator--resizable']}`]: styles['columnSeparator--resizable']\n  }, {\n    [`& .${c['columnSeparator--resizing']}`]: styles['columnSeparator--resizing']\n  }, {\n    [`& .${c.columnSeparator}`]: styles.columnSeparator\n  }, {\n    [`& .${c.filterIcon}`]: styles.filterIcon\n  }, {\n    [`& .${c.iconSeparator}`]: styles.iconSeparator\n  }, {\n    [`& .${c.menuIcon}`]: styles.menuIcon\n  }, {\n    [`& .${c.menuIconButton}`]: styles.menuIconButton\n  }, {\n    [`& .${c.menuOpen}`]: styles.menuOpen\n  }, {\n    [`& .${c.menuList}`]: styles.menuList\n  }, {\n    [`& .${c['row--editable']}`]: styles['row--editable']\n  }, {\n    [`& .${c['row--editing']}`]: styles['row--editing']\n  }, {\n    [`& .${c['row--dragging']}`]: styles['row--dragging']\n  }, {\n    [`& .${c.row}`]: styles.row\n  }, {\n    [`& .${c.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder\n  }, {\n    [`& .${c.rowReorderCell}`]: styles.rowReorderCell\n  }, {\n    [`& .${c['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']\n  }, {\n    [`& .${c.sortIcon}`]: styles.sortIcon\n  }, {\n    [`& .${c.withBorderColor}`]: styles.withBorderColor\n  }, {\n    [`& .${c.treeDataGroupingCell}`]: styles.treeDataGroupingCell\n  }, {\n    [`& .${c.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle\n  }, {\n    [`& .${c.treeDataGroupingCellLoadingContainer}`]: styles.treeDataGroupingCellLoadingContainer\n  }, {\n    [`& .${c.detailPanelToggleCell}`]: styles.detailPanelToggleCell\n  }, {\n    [`& .${c['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']\n  }, styles.root]\n})(({\n  theme: t\n}) => {\n  const apiRef = useGridPrivateApiContext();\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const borderColor = getBorderColor(t);\n  const radius = t.shape.borderRadius;\n  const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;\n  const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground;\n  const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : alpha(t.palette.background.default, t.palette.action.disabledOpacity);\n  const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;\n  const hoverColor = (t.vars || t).palette.action.hover;\n  const selectedOpacity = (t.vars || t).palette.action.selectedOpacity;\n  const selectedBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / ${selectedOpacity})` : alpha(t.palette.primary.main, selectedOpacity);\n  const selectedHoverBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / calc(\n                ${t.vars.palette.action.selectedOpacity} +\n                ${t.vars.palette.action.hoverOpacity}\n              ))` : alpha(t.palette.primary.main, t.palette.action.selectedOpacity + t.palette.action.hoverOpacity);\n  const pinnedHoverBackground = t.vars ? hoverColor : blend(pinnedBackground, hoverColor, hoverOpacity);\n  const pinnedSelectedBackground = t.vars ? selectedBackground : blend(pinnedBackground, selectedBackground, selectedOpacity);\n  const pinnedSelectedHoverBackground = t.vars ? hoverColor : blend(pinnedSelectedBackground, hoverColor, hoverOpacity);\n  const selectedStyles = {\n    backgroundColor: selectedBackground,\n    '&:hover': {\n      backgroundColor: selectedHoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: selectedBackground\n      }\n    }\n  };\n  const gridStyle = _extends({\n    '--unstable_DataGrid-radius': typeof radius === 'number' ? `${radius}px` : radius,\n    '--unstable_DataGrid-headWeight': t.typography.fontWeightMedium,\n    '--unstable_DataGrid-overlayBackground': overlayBackground,\n    '--DataGrid-containerBackground': containerBackground,\n    '--DataGrid-pinnedBackground': pinnedBackground,\n    '--DataGrid-rowBorderColor': borderColor,\n    '--DataGrid-cellOffsetMultiplier': 2,\n    '--DataGrid-width': '0px',\n    '--DataGrid-hasScrollX': '0',\n    '--DataGrid-hasScrollY': '0',\n    '--DataGrid-scrollbarSize': '10px',\n    '--DataGrid-rowWidth': '0px',\n    '--DataGrid-columnsTotalWidth': '0px',\n    '--DataGrid-leftPinnedWidth': '0px',\n    '--DataGrid-rightPinnedWidth': '0px',\n    '--DataGrid-headerHeight': '0px',\n    '--DataGrid-headersTotalHeight': '0px',\n    '--DataGrid-topContainerHeight': '0px',\n    '--DataGrid-bottomContainerHeight': '0px',\n    flex: 1,\n    boxSizing: 'border-box',\n    position: 'relative',\n    borderWidth: '1px',\n    borderStyle: 'solid',\n    borderColor,\n    borderRadius: 'var(--unstable_DataGrid-radius)',\n    color: (t.vars || t).palette.text.primary\n  }, t.typography.body2, {\n    outline: 'none',\n    height: '100%',\n    display: 'flex',\n    minWidth: 0,\n    // See https://github.com/mui/mui-x/issues/8547\n    minHeight: 0,\n    flexDirection: 'column',\n    overflow: 'hidden',\n    overflowAnchor: 'none',\n    // Keep the same scrolling position\n    [`.${c.main} > *:first-child${ignoreSsrWarning}`]: {\n      borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',\n      borderTopRightRadius: 'var(--unstable_DataGrid-radius)'\n    },\n    [`&.${c.autoHeight}`]: {\n      height: 'auto'\n    },\n    [`&.${c.autosizing}`]: {\n      [`& .${c.columnHeaderTitleContainerContent} > *`]: {\n        overflow: 'visible !important'\n      },\n      '@media (hover: hover)': {\n        [`& .${c.iconButtonContainer}`]: {\n          width: '0 !important',\n          visibility: 'hidden !important'\n        },\n        [`& .${c.menuIcon}`]: {\n          width: '0 !important',\n          visibility: 'hidden !important'\n        }\n      },\n      [`& .${c.cell}`]: {\n        overflow: 'visible !important',\n        whiteSpace: 'nowrap',\n        minWidth: 'max-content !important',\n        maxWidth: 'max-content !important'\n      },\n      [`& .${c.groupingCriteriaCell}`]: {\n        width: 'unset'\n      },\n      [`& .${c.treeDataGroupingCell}`]: {\n        width: 'unset'\n      }\n    },\n    [`& .${c.columnHeader}, & .${c.cell}`]: {\n      WebkitTapHighlightColor: 'transparent',\n      padding: '0 10px',\n      boxSizing: 'border-box'\n    },\n    [`& .${c.columnHeader}:focus-within, & .${c.cell}:focus-within`]: {\n      outline: `solid ${t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / 0.5)` : alpha(t.palette.primary.main, 0.5)} ${focusOutlineWidth}px`,\n      outlineOffset: focusOutlineWidth * -1\n    },\n    [`& .${c.columnHeader}:focus, & .${c.cell}:focus`]: {\n      outline: `solid ${t.palette.primary.main} ${focusOutlineWidth}px`,\n      outlineOffset: focusOutlineWidth * -1\n    },\n    // Hide the column separator when:\n    // - the column is focused and has an outline\n    // - the next column is focused and has an outline\n    // - the column has a left or right border\n    // - the next column is pinned right and has a left border\n    [`& .${c.columnHeader}:focus,\n      & .${c['columnHeader--withLeftBorder']},\n      & .${c['columnHeader--withRightBorder']},\n      & .${c['columnHeader--siblingFocused']},\n      & .${c['virtualScroller--hasScrollX']} .${c['columnHeader--lastUnpinned']},\n      & .${c['virtualScroller--hasScrollX']} .${c['columnHeader--last']}\n      `]: {\n      [`& .${c.columnSeparator}`]: {\n        opacity: 0\n      },\n      // Show resizable separators at all times on touch devices\n      '@media (hover: none)': {\n        [`& .${c['columnSeparator--resizable']}`]: {\n          opacity: 1\n        }\n      },\n      [`& .${c['columnSeparator--resizable']}:hover`]: {\n        opacity: 1\n      }\n    },\n    [`&.${c['root--noToolbar']} [aria-rowindex=\"1\"] [aria-colindex=\"1\"]`]: {\n      borderTopLeftRadius: 'calc(var(--unstable_DataGrid-radius) - 1px)'\n    },\n    [`&.${c['root--noToolbar']} [aria-rowindex=\"1\"] .${c['columnHeader--last']}`]: {\n      borderTopRightRadius: dimensions.hasScrollX && (!dimensions.hasScrollY || dimensions.scrollbarSize === 0) ? 'calc(var(--unstable_DataGrid-radius) - 1px)' : undefined\n    },\n    [`& .${c.columnHeaderCheckbox}, & .${c.cellCheckbox}`]: {\n      padding: 0,\n      justifyContent: 'center',\n      alignItems: 'center'\n    },\n    [`& .${c.columnHeader}`]: {\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center'\n    },\n    [`& .${c['virtualScroller--hasScrollX']} .${c['columnHeader--last']}`]: {\n      overflow: 'hidden'\n    },\n    [`& .${c['columnHeader--sorted']} .${c.iconButtonContainer}, & .${c['columnHeader--filtered']} .${c.iconButtonContainer}`]: {\n      visibility: 'visible',\n      width: 'auto'\n    },\n    [`& .${c.columnHeader}:not(.${c['columnHeader--sorted']}) .${c.sortIcon}`]: {\n      opacity: 0,\n      transition: t.transitions.create(['opacity'], {\n        duration: t.transitions.duration.shorter\n      })\n    },\n    [`& .${c.columnHeaderTitleContainer}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      gap: t.spacing(0.25),\n      minWidth: 0,\n      flex: 1,\n      whiteSpace: 'nowrap',\n      overflow: 'hidden'\n    },\n    [`& .${c.columnHeaderTitleContainerContent}`]: {\n      overflow: 'hidden',\n      display: 'flex',\n      alignItems: 'center'\n    },\n    [`& .${c['columnHeader--filledGroup']} .${c.columnHeaderTitleContainer}`]: {\n      borderBottomWidth: '1px',\n      borderBottomStyle: 'solid',\n      boxSizing: 'border-box'\n    },\n    [`& .${c.sortIcon}, & .${c.filterIcon}`]: {\n      fontSize: 'inherit'\n    },\n    [`& .${c['columnHeader--sortable']}`]: {\n      cursor: 'pointer'\n    },\n    [`& .${c['columnHeader--alignCenter']} .${c.columnHeaderTitleContainer}`]: {\n      justifyContent: 'center'\n    },\n    [`& .${c['columnHeader--alignRight']} .${c.columnHeaderDraggableContainer}, & .${c['columnHeader--alignRight']} .${c.columnHeaderTitleContainer}`]: {\n      flexDirection: 'row-reverse'\n    },\n    [`& .${c['columnHeader--alignCenter']} .${c.menuIcon}`]: {\n      marginLeft: 'auto'\n    },\n    [`& .${c['columnHeader--alignRight']} .${c.menuIcon}`]: {\n      marginRight: 'auto',\n      marginLeft: -5\n    },\n    [`& .${c['columnHeader--moving']}`]: {\n      backgroundColor: (t.vars || t).palette.action.hover\n    },\n    [`& .${c['columnHeader--pinnedLeft']}, & .${c['columnHeader--pinnedRight']}`]: {\n      position: 'sticky',\n      zIndex: 4,\n      // Should be above the column separator\n      background: 'var(--DataGrid-pinnedBackground)'\n    },\n    [`& .${c.columnSeparator}`]: {\n      position: 'absolute',\n      overflow: 'hidden',\n      zIndex: 3,\n      display: 'flex',\n      flexDirection: 'column',\n      justifyContent: 'center',\n      alignItems: 'center',\n      maxWidth: columnSeparatorTargetSize,\n      color: borderColor\n    },\n    [`& .${c.columnHeaders}`]: {\n      width: 'var(--DataGrid-rowWidth)'\n    },\n    '@media (hover: hover)': {\n      [`& .${c.columnHeader}:hover`]: columnHeaderStyles,\n      [`& .${c.columnHeader}:not(.${c['columnHeader--sorted']}):hover .${c.sortIcon}`]: {\n        opacity: 0.5\n      }\n    },\n    '@media (hover: none)': {\n      [`& .${c.columnHeader}`]: columnHeaderStyles,\n      [`& .${c.columnHeader}:focus,\n        & .${c['columnHeader--siblingFocused']}`]: {\n        [`.${c['columnSeparator--resizable']}`]: {\n          color: (t.vars || t).palette.primary.main\n        }\n      }\n    },\n    [`& .${c['columnSeparator--sideLeft']}`]: {\n      left: columnSeparatorOffset\n    },\n    [`& .${c['columnSeparator--sideRight']}`]: {\n      right: columnSeparatorOffset\n    },\n    [`& .${c['columnHeader--withRightBorder']} .${c['columnSeparator--sideLeft']}`]: {\n      left: columnSeparatorOffset - 0.5\n    },\n    [`& .${c['columnHeader--withRightBorder']} .${c['columnSeparator--sideRight']}`]: {\n      right: columnSeparatorOffset - 0.5\n    },\n    [`& .${c['columnSeparator--resizable']}`]: {\n      cursor: 'col-resize',\n      touchAction: 'none',\n      [`&.${c['columnSeparator--resizing']}`]: {\n        color: (t.vars || t).palette.primary.main\n      },\n      // Always appear as draggable on touch devices\n      '@media (hover: none)': {\n        [`& .${c.iconSeparator} rect`]: separatorIconDragStyles\n      },\n      '@media (hover: hover)': {\n        '&:hover': {\n          color: (t.vars || t).palette.primary.main,\n          [`& .${c.iconSeparator} rect`]: separatorIconDragStyles\n        }\n      },\n      '& svg': {\n        pointerEvents: 'none'\n      }\n    },\n    [`& .${c.iconSeparator}`]: {\n      color: 'inherit',\n      transition: t.transitions.create(['color', 'width'], {\n        duration: t.transitions.duration.shortest\n      })\n    },\n    [`& .${c.menuIcon}`]: {\n      width: 0,\n      visibility: 'hidden',\n      fontSize: 20,\n      marginRight: -5,\n      display: 'flex',\n      alignItems: 'center'\n    },\n    [`.${c.menuOpen}`]: {\n      visibility: 'visible',\n      width: 'auto'\n    },\n    [`& .${c.headerFilterRow}`]: {\n      [`& .${c.columnHeader}`]: {\n        boxSizing: 'border-box',\n        borderBottom: '1px solid var(--DataGrid-rowBorderColor)'\n      }\n    },\n    /* Bottom border of the top-container */\n    [`& .${c['row--borderBottom']} .${c.columnHeader},\n      & .${c['row--borderBottom']} .${c.filler},\n      & .${c['row--borderBottom']} .${c.scrollbarFiller}`]: {\n      borderBottom: `1px solid var(--DataGrid-rowBorderColor)`\n    },\n    [`& .${c['row--borderBottom']} .${c.cell}`]: {\n      borderBottom: `1px solid var(--rowBorderColor)`\n    },\n    /* Row styles */\n    [`.${c.row}`]: {\n      display: 'flex',\n      width: 'var(--DataGrid-rowWidth)',\n      breakInside: 'avoid',\n      // Avoid the row to be broken in two different print pages.\n\n      '--rowBorderColor': 'var(--DataGrid-rowBorderColor)',\n      [`&.${c['row--firstVisible']}`]: {\n        '--rowBorderColor': 'transparent'\n      },\n      '&:hover': {\n        backgroundColor: (t.vars || t).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      },\n      [`&.${c.rowSkeleton}:hover`]: {\n        backgroundColor: 'transparent'\n      },\n      '&.Mui-selected': selectedStyles\n    },\n    [`& .${c['container--top']}, & .${c['container--bottom']}`]: {\n      '[role=row]': {\n        background: 'var(--DataGrid-containerBackground)'\n      }\n    },\n    /* Cell styles */\n    [`& .${c.cell}`]: {\n      height: 'var(--height)',\n      width: 'var(--width)',\n      lineHeight: 'calc(var(--height) - 1px)',\n      // -1px for the border\n\n      boxSizing: 'border-box',\n      borderTop: `1px solid var(--rowBorderColor)`,\n      overflow: 'hidden',\n      whiteSpace: 'nowrap',\n      textOverflow: 'ellipsis',\n      '&.Mui-selected': selectedStyles\n    },\n    [`& .${c['virtualScrollerContent--overflowed']} .${c['row--lastVisible']} .${c.cell}`]: {\n      borderTopColor: 'transparent'\n    },\n    [`& .${c['pinnedRows--top']} :first-of-type`]: {\n      [`& .${c.cell}, .${c.scrollbarFiller}`]: {\n        borderTop: 'none'\n      }\n    },\n    [`&.${c['root--disableUserSelection']} .${c.cell}`]: {\n      userSelect: 'none'\n    },\n    [`& .${c['row--dynamicHeight']} > .${c.cell}`]: {\n      whiteSpace: 'initial',\n      lineHeight: 'inherit'\n    },\n    [`& .${c.cellEmpty}`]: {\n      padding: 0,\n      height: 'unset'\n    },\n    [`& .${c.cell}.${c['cell--selectionMode']}`]: {\n      cursor: 'default'\n    },\n    [`& .${c.cell}.${c['cell--editing']}`]: {\n      padding: 1,\n      display: 'flex',\n      boxShadow: t.shadows[2],\n      backgroundColor: (t.vars || t).palette.background.paper,\n      '&:focus-within': {\n        outline: `${focusOutlineWidth}px solid ${(t.vars || t).palette.primary.main}`,\n        outlineOffset: focusOutlineWidth * -1\n      }\n    },\n    [`& .${c['row--editing']}`]: {\n      boxShadow: t.shadows[2]\n    },\n    [`& .${c['row--editing']} .${c.cell}`]: {\n      boxShadow: t.shadows[0],\n      backgroundColor: (t.vars || t).palette.background.paper\n    },\n    [`& .${c.editBooleanCell}`]: {\n      display: 'flex',\n      height: '100%',\n      width: '100%',\n      alignItems: 'center',\n      justifyContent: 'center'\n    },\n    [`& .${c.booleanCell}[data-value=\"true\"]`]: {\n      color: (t.vars || t).palette.text.secondary\n    },\n    [`& .${c.booleanCell}[data-value=\"false\"]`]: {\n      color: (t.vars || t).palette.text.disabled\n    },\n    [`& .${c.actionsCell}`]: {\n      display: 'inline-flex',\n      alignItems: 'center',\n      gridGap: t.spacing(1)\n    },\n    [`& .${c.rowReorderCell}`]: {\n      display: 'inline-flex',\n      flex: 1,\n      alignItems: 'center',\n      justifyContent: 'center',\n      opacity: (t.vars || t).palette.action.disabledOpacity\n    },\n    [`& .${c['rowReorderCell--draggable']}`]: {\n      cursor: 'move',\n      opacity: 1\n    },\n    [`& .${c.rowReorderCellContainer}`]: {\n      padding: 0,\n      display: 'flex',\n      alignItems: 'stretch'\n    },\n    [`.${c.withBorderColor}`]: {\n      borderColor\n    },\n    [`& .${c['cell--withLeftBorder']}, & .${c['columnHeader--withLeftBorder']}`]: {\n      borderLeftColor: 'var(--DataGrid-rowBorderColor)',\n      borderLeftWidth: '1px',\n      borderLeftStyle: 'solid'\n    },\n    [`& .${c['cell--withRightBorder']}, & .${c['columnHeader--withRightBorder']}`]: {\n      borderRightColor: 'var(--DataGrid-rowBorderColor)',\n      borderRightWidth: '1px',\n      borderRightStyle: 'solid'\n    },\n    [`& .${c['cell--flex']}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      lineHeight: 'inherit'\n    },\n    [`& .${c['cell--textLeft']}`]: {\n      textAlign: 'left',\n      justifyContent: 'flex-start'\n    },\n    [`& .${c['cell--textRight']}`]: {\n      textAlign: 'right',\n      justifyContent: 'flex-end'\n    },\n    [`& .${c['cell--textCenter']}`]: {\n      textAlign: 'center',\n      justifyContent: 'center'\n    },\n    [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {\n      position: 'sticky',\n      zIndex: 3,\n      background: 'var(--DataGrid-pinnedBackground)'\n    },\n    [`& .${c.virtualScrollerContent} .${c.row}`]: {\n      '&:hover': {\n        [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {\n          backgroundColor: pinnedHoverBackground\n        }\n      },\n      [`&.Mui-selected`]: {\n        [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {\n          backgroundColor: pinnedSelectedBackground\n        },\n        '&:hover': {\n          [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {\n            backgroundColor: pinnedSelectedHoverBackground\n          }\n        }\n      }\n    },\n    [`& .${c.cellOffsetLeft}`]: {\n      flex: '0 0 auto',\n      display: 'inline-block'\n    },\n    [`& .${c.cellSkeleton}`]: {\n      flex: '0 0 auto',\n      height: '100%',\n      display: 'inline-flex',\n      alignItems: 'center'\n    },\n    [`& .${c.columnHeaderDraggableContainer}`]: {\n      display: 'flex',\n      width: '100%',\n      height: '100%'\n    },\n    [`& .${c.rowReorderCellPlaceholder}`]: {\n      display: 'none'\n    },\n    [`& .${c['columnHeader--dragging']}, & .${c['row--dragging']}`]: {\n      background: (t.vars || t).palette.background.paper,\n      padding: '0 12px',\n      borderRadius: 'var(--unstable_DataGrid-radius)',\n      opacity: (t.vars || t).palette.action.disabledOpacity\n    },\n    [`& .${c['row--dragging']}`]: {\n      background: (t.vars || t).palette.background.paper,\n      padding: '0 12px',\n      borderRadius: 'var(--unstable_DataGrid-radius)',\n      opacity: (t.vars || t).palette.action.disabledOpacity,\n      [`& .${c.rowReorderCellPlaceholder}`]: {\n        display: 'flex'\n      }\n    },\n    [`& .${c.treeDataGroupingCell}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      width: '100%'\n    },\n    [`& .${c.treeDataGroupingCellToggle}`]: {\n      flex: '0 0 28px',\n      alignSelf: 'stretch',\n      marginRight: t.spacing(2)\n    },\n    [`& .${c.treeDataGroupingCellLoadingContainer}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      height: '100%'\n    },\n    [`& .${c.groupingCriteriaCell}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      width: '100%'\n    },\n    [`& .${c.groupingCriteriaCellToggle}`]: {\n      flex: '0 0 28px',\n      alignSelf: 'stretch',\n      marginRight: t.spacing(2)\n    },\n    /* ScrollbarFiller styles */\n    [`.${c.scrollbarFiller}`]: {\n      minWidth: 'calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))',\n      alignSelf: 'stretch',\n      [`&.${c['scrollbarFiller--borderTop']}`]: {\n        borderTop: '1px solid var(--DataGrid-rowBorderColor)'\n      },\n      [`&.${c['scrollbarFiller--borderBottom']}`]: {\n        borderBottom: '1px solid var(--DataGrid-rowBorderColor)'\n      },\n      [`&.${c['scrollbarFiller--pinnedRight']}`]: {\n        backgroundColor: 'var(--DataGrid-pinnedBackground)',\n        position: 'sticky',\n        right: 0\n      }\n    },\n    [`& .${c.filler}`]: {\n      flex: 1\n    },\n    [`& .${c['filler--borderBottom']}`]: {\n      borderBottom: '1px solid var(--DataGrid-rowBorderColor)'\n    },\n    /* Hide grid rows, row filler, and vertical scrollbar when skeleton overlay is visible */\n    [`& .${c['main--hasSkeletonLoadingOverlay']}`]: {\n      [`& .${c.virtualScrollerContent}`]: {\n        // We use visibility hidden so that the virtual scroller content retains its height.\n        // Position fixed is used to remove the virtual scroller content from the flow.\n        // https://github.com/mui/mui-x/issues/14061\n        position: 'fixed',\n        visibility: 'hidden'\n      },\n      [`& .${c['scrollbar--vertical']}, & .${c.pinnedRows}, & .${c.virtualScroller} > .${c.filler}`]: {\n        display: 'none'\n      }\n    }\n  });\n  return gridStyle;\n});\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n */\nfunction blend(background, overlay, opacity, gamma = 1) {\n  const f = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [f(backgroundColor.values[0], overlayColor.values[0]), f(backgroundColor.values[1], overlayColor.values[1]), f(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_capitalize as capitalize, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { GridRootStyles } from \"./GridRootStyles.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { useGridPrivateApiContext } from \"../../hooks/utils/useGridPrivateApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { gridDensitySelector } from \"../../hooks/features/density/densitySelector.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (ownerState, density) => {\n  const {\n    autoHeight,\n    classes,\n    showCellVerticalBorder\n  } = ownerState;\n  const slots = {\n    root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, ownerState.slots.toolbar === null && 'root--noToolbar', 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {\n  const rootProps = useGridRootProps();\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridPrivateApiContext();\n  const density = useGridSelector(apiRef, gridDensitySelector);\n  const rootElementRef = apiRef.current.rootElementRef;\n  const handleRef = useForkRef(rootElementRef, ref);\n  const ownerState = rootProps;\n  const classes = useUtilityClasses(ownerState, density);\n\n  // Our implementation of <NoSsr />\n  const [mountedState, setMountedState] = React.useState(false);\n  useEnhancedEffect(() => {\n    setMountedState(true);\n  }, []);\n  if (!mountedState) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridRootStyles, _extends({\n    ref: handleRef,\n    className: clsx(className, classes.root),\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRoot.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridRoot };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"open\", \"target\", \"onClose\", \"children\", \"position\", \"className\", \"onExited\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect, HTMLElementType } from '@mui/utils';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass, gridClasses } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['menu']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridMenuRoot = styled(Popper, {\n  name: 'MuiDataGrid',\n  slot: 'Menu',\n  overridesResolver: (_, styles) => styles.menu\n})(({\n  theme\n}) => ({\n  zIndex: theme.zIndex.modal,\n  [`& .${gridClasses.menuList}`]: {\n    outline: 0\n  }\n}));\nconst transformOrigin = {\n  'bottom-start': 'top left',\n  'bottom-end': 'top right'\n};\nfunction GridMenu(props) {\n  const {\n      open,\n      target,\n      onClose,\n      children,\n      position,\n      className,\n      onExited\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  const savedFocusRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (open) {\n      savedFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n    } else {\n      savedFocusRef.current?.focus?.();\n      savedFocusRef.current = null;\n    }\n  }, [open]);\n  React.useEffect(() => {\n    // Emit menuOpen or menuClose events\n    const eventName = open ? 'menuOpen' : 'menuClose';\n    apiRef.current.publishEvent(eventName, {\n      target\n    });\n  }, [apiRef, open, target]);\n  const handleExited = popperOnExited => node => {\n    if (popperOnExited) {\n      popperOnExited();\n    }\n    if (onExited) {\n      onExited(node);\n    }\n  };\n  const handleClickAway = event => {\n    if (event.target && (target === event.target || target?.contains(event.target))) {\n      return;\n    }\n    onClose(event);\n  };\n  return /*#__PURE__*/_jsx(GridMenuRoot, _extends({\n    as: rootProps.slots.basePopper,\n    className: clsx(className, classes.root),\n    ownerState: rootProps,\n    open: open,\n    anchorEl: target,\n    transition: true,\n    placement: position\n  }, other, rootProps.slotProps?.basePopper, {\n    children: ({\n      TransitionProps,\n      placement\n    }) => /*#__PURE__*/_jsx(ClickAwayListener, {\n      onClickAway: handleClickAway,\n      mouseEvent: \"onMouseDown\",\n      children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {\n        style: {\n          transformOrigin: transformOrigin[placement]\n        },\n        onExited: handleExited(TransitionProps?.onExited),\n        children: /*#__PURE__*/_jsx(Paper, {\n          children: children\n        })\n      }))\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridMenu.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  children: PropTypes.node,\n  onClose: PropTypes.func.isRequired,\n  onExited: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  target: HTMLElementType\n} : void 0;\nexport { GridMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEventCallback as useEventCallback, HTMLElementType } from '@mui/utils';\nimport { useGridApiContext } from \"../../../hooks/utils/useGridApiContext.js\";\nimport { GridMenu } from \"../GridMenu.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridColumnHeaderMenu({\n  columnMenuId,\n  columnMenuButtonId,\n  ContentComponent,\n  contentComponentProps,\n  field,\n  open,\n  target,\n  onExited\n}) {\n  const apiRef = useGridApiContext();\n  const colDef = apiRef.current.getColumn(field);\n  const hideMenu = useEventCallback(event => {\n    if (event) {\n      // Prevent triggering the sorting\n      event.stopPropagation();\n      if (target?.contains(event.target)) {\n        return;\n      }\n    }\n    apiRef.current.hideColumnMenu();\n  });\n  if (!target || !colDef) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridMenu, {\n    placement: `bottom-${colDef.align === 'right' ? 'start' : 'end'}`,\n    open: open,\n    target: target,\n    onClose: hideMenu,\n    onExited: onExited,\n    children: /*#__PURE__*/_jsx(ContentComponent, _extends({\n      colDef: colDef,\n      hideMenu: hideMenu,\n      open: open,\n      id: columnMenuId,\n      labelledby: columnMenuButtonId\n    }, contentComponentProps))\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderMenu.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  columnMenuButtonId: PropTypes.string,\n  columnMenuId: PropTypes.string,\n  ContentComponent: PropTypes.elementType.isRequired,\n  contentComponentProps: PropTypes.any,\n  field: PropTypes.string.isRequired,\n  onExited: PropTypes.func,\n  open: PropTypes.bool.isRequired,\n  target: HTMLElementType\n} : void 0;\nexport { GridColumnHeaderMenu };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"displayOrder\"];\nimport * as React from 'react';\nimport Divider from '@mui/material/Divider';\nimport { useGridPrivateApiContext } from \"../../utils/useGridPrivateApiContext.js\";\nconst useGridColumnMenuSlots = props => {\n  const apiRef = useGridPrivateApiContext();\n  const {\n    defaultSlots,\n    defaultSlotProps,\n    slots = {},\n    slotProps = {},\n    hideMenu,\n    colDef,\n    addDividers = true\n  } = props;\n  const processedComponents = React.useMemo(() => _extends({}, defaultSlots, slots), [defaultSlots, slots]);\n  const processedSlotProps = React.useMemo(() => {\n    if (!slotProps || Object.keys(slotProps).length === 0) {\n      return defaultSlotProps;\n    }\n    const mergedProps = _extends({}, slotProps);\n    Object.entries(defaultSlotProps).forEach(([key, currentSlotProps]) => {\n      mergedProps[key] = _extends({}, currentSlotProps, slotProps[key] || {});\n    });\n    return mergedProps;\n  }, [defaultSlotProps, slotProps]);\n  const defaultItems = apiRef.current.unstable_applyPipeProcessors('columnMenu', [], props.colDef);\n  const userItems = React.useMemo(() => {\n    const defaultComponentKeys = Object.keys(defaultSlots);\n    return Object.keys(slots).filter(key => !defaultComponentKeys.includes(key));\n  }, [slots, defaultSlots]);\n  return React.useMemo(() => {\n    const uniqueItems = Array.from(new Set([...defaultItems, ...userItems]));\n    const cleansedItems = uniqueItems.filter(key => processedComponents[key] != null);\n    const sorted = cleansedItems.sort((a, b) => {\n      const leftItemProps = processedSlotProps[a];\n      const rightItemProps = processedSlotProps[b];\n      const leftDisplayOrder = Number.isFinite(leftItemProps?.displayOrder) ? leftItemProps.displayOrder : 100;\n      const rightDisplayOrder = Number.isFinite(rightItemProps?.displayOrder) ? rightItemProps.displayOrder : 100;\n      return leftDisplayOrder - rightDisplayOrder;\n    });\n    return sorted.reduce((acc, key, index) => {\n      let itemProps = {\n        colDef,\n        onClick: hideMenu\n      };\n      const processedComponentProps = processedSlotProps[key];\n      if (processedComponentProps) {\n        const customProps = _objectWithoutPropertiesLoose(processedComponentProps, _excluded);\n        itemProps = _extends({}, itemProps, customProps);\n      }\n      return addDividers && index !== sorted.length - 1 ? [...acc, [processedComponents[key], itemProps], [Divider, {}]] : [...acc, [processedComponents[key], itemProps]];\n    }, []);\n  }, [addDividers, colDef, defaultItems, hideMenu, processedComponents, processedSlotProps, userItems]);\n};\nexport { useGridColumnMenuSlots };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"defaultSlots\", \"defaultSlotProps\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridColumnMenuSlots } from \"../../../hooks/features/columnMenu/useGridColumnMenuSlots.js\";\nimport { GridColumnMenuContainer } from \"./GridColumnMenuContainer.js\";\nimport { GridColumnMenuColumnsItem } from \"./menuItems/GridColumnMenuColumnsItem.js\";\nimport { GridColumnMenuFilterItem } from \"./menuItems/GridColumnMenuFilterItem.js\";\nimport { GridColumnMenuSortItem } from \"./menuItems/GridColumnMenuSortItem.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_COLUMN_MENU_SLOTS = {\n  columnMenuSortItem: GridColumnMenuSortItem,\n  columnMenuFilterItem: GridColumnMenuFilterItem,\n  columnMenuColumnsItem: GridColumnMenuColumnsItem\n};\nexport const GRID_COLUMN_MENU_SLOT_PROPS = {\n  columnMenuSortItem: {\n    displayOrder: 10\n  },\n  columnMenuFilterItem: {\n    displayOrder: 20\n  },\n  columnMenuColumnsItem: {\n    displayOrder: 30\n  }\n};\nconst GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGenericColumnMenu(props, ref) {\n  const {\n      defaultSlots,\n      defaultSlotProps,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const orderedSlots = useGridColumnMenuSlots(_extends({}, other, {\n    defaultSlots,\n    defaultSlotProps,\n    slots,\n    slotProps\n  }));\n  return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({\n    ref: ref\n  }, other, {\n    children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/_jsx(Component, _extends({}, otherProps), index))\n  }));\n});\nconst GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {\n  return /*#__PURE__*/_jsx(GridGenericColumnMenu, _extends({}, props, {\n    ref: ref,\n    defaultSlots: GRID_COLUMN_MENU_SLOTS,\n    defaultSlotProps: GRID_COLUMN_MENU_SLOT_PROPS\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenu.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  hideMenu: PropTypes.func.isRequired,\n  id: PropTypes.string,\n  labelledby: PropTypes.string,\n  open: PropTypes.bool.isRequired,\n  /**\n   * Could be used to pass new props or override props specific to a column menu component\n   * e.g. `displayOrder`\n   */\n  slotProps: PropTypes.object,\n  /**\n   * `slots` could be used to add new and (or) override default column menu items\n   * If you register a nee component you must pass it's `displayOrder` in `slotProps`\n   * or it will be placed in the end of the list\n   */\n  slots: PropTypes.object\n} : void 0;\nexport { GridColumnMenu, GridGenericColumnMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"colDef\", \"id\", \"labelledby\", \"className\", \"children\", \"open\"];\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport MenuList from '@mui/material/MenuList';\nimport { styled } from '@mui/material/styles';\nimport { isHideMenuKey } from \"../../../utils/keyboardUtils.js\";\nimport { gridClasses } from \"../../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledMenuList = styled(MenuList)(() => ({\n  minWidth: 248\n}));\nconst GridColumnMenuContainer = /*#__PURE__*/React.forwardRef(function GridColumnMenuContainer(props, ref) {\n  const {\n      hideMenu,\n      id,\n      labelledby,\n      className,\n      children,\n      open\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const handleListKeyDown = React.useCallback(event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    if (isHideMenuKey(event.key)) {\n      hideMenu(event);\n    }\n  }, [hideMenu]);\n  return /*#__PURE__*/_jsx(StyledMenuList, _extends({\n    id: id,\n    ref: ref,\n    className: clsx(gridClasses.menuList, className),\n    \"aria-labelledby\": labelledby,\n    onKeyDown: handleListKeyDown,\n    autoFocus: open\n  }, other, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuContainer.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  hideMenu: PropTypes.func.isRequired,\n  id: PropTypes.string,\n  labelledby: PropTypes.string,\n  open: PropTypes.bool.isRequired\n} : void 0;\nexport { GridColumnMenuContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridColumnMenuHideItem } from \"./GridColumnMenuHideItem.js\";\nimport { GridColumnMenuManageItem } from \"./GridColumnMenuManageItem.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuColumnsItem(props) {\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(GridColumnMenuHideItem, _extends({}, props)), /*#__PURE__*/_jsx(GridColumnMenuManageItem, _extends({}, props))]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuColumnsItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuColumnsItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from \"../../../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuFilterItem(props) {\n  const {\n    colDef,\n    onClick\n  } = props;\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const showFilter = React.useCallback(event => {\n    onClick(event);\n    apiRef.current.showFilterPanel(colDef.field);\n  }, [apiRef, colDef.field, onClick]);\n  if (rootProps.disableColumnFilter || !colDef.filterable) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(MenuItem, {\n    onClick: showFilter,\n    children: [/*#__PURE__*/_jsx(ListItemIcon, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuFilterIcon, {\n        fontSize: \"small\"\n      })\n    }), /*#__PURE__*/_jsx(ListItemText, {\n      children: apiRef.current.getLocaleText('columnMenuFilter')\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuFilterItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuFilterItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from \"../../../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../../../hooks/utils/useGridRootProps.js\";\nimport { gridVisibleColumnDefinitionsSelector } from \"../../../../hooks/features/columns/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuHideItem(props) {\n  const {\n    colDef,\n    onClick\n  } = props;\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n  const columnsWithMenu = visibleColumns.filter(col => col.disableColumnMenu !== true);\n  // do not allow to hide the last column with menu\n  const disabled = columnsWithMenu.length === 1;\n  const toggleColumn = React.useCallback(event => {\n    /**\n     * Disabled `MenuItem` would trigger `click` event\n     * after imperative `.click()` call on HTML element.\n     * Also, click is triggered in testing environment as well.\n     */\n    if (disabled) {\n      return;\n    }\n    apiRef.current.setColumnVisibility(colDef.field, false);\n    onClick(event);\n  }, [apiRef, colDef.field, onClick, disabled]);\n  if (rootProps.disableColumnSelector) {\n    return null;\n  }\n  if (colDef.hideable === false) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(MenuItem, {\n    onClick: toggleColumn,\n    disabled: disabled,\n    children: [/*#__PURE__*/_jsx(ListItemIcon, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuHideIcon, {\n        fontSize: \"small\"\n      })\n    }), /*#__PURE__*/_jsx(ListItemText, {\n      children: apiRef.current.getLocaleText('columnMenuHideColumn')\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuHideItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuHideItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { GridPreferencePanelsValue } from \"../../../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js\";\nimport { useGridApiContext } from \"../../../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuManageItem(props) {\n  const {\n    onClick\n  } = props;\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const showColumns = React.useCallback(event => {\n    onClick(event); // hide column menu\n    apiRef.current.showPreferences(GridPreferencePanelsValue.columns);\n  }, [apiRef, onClick]);\n  if (rootProps.disableColumnSelector) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(MenuItem, {\n    onClick: showColumns,\n    children: [/*#__PURE__*/_jsx(ListItemIcon, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuManageColumnsIcon, {\n        fontSize: \"small\"\n      })\n    }), /*#__PURE__*/_jsx(ListItemText, {\n      children: apiRef.current.getLocaleText('columnMenuManageColumns')\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuManageItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuManageItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridSelector } from \"../../../../hooks/utils/useGridSelector.js\";\nimport { gridSortModelSelector } from \"../../../../hooks/features/sorting/gridSortingSelector.js\";\nimport { useGridApiContext } from \"../../../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuSortItem(props) {\n  const {\n    colDef,\n    onClick\n  } = props;\n  const apiRef = useGridApiContext();\n  const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n  const rootProps = useGridRootProps();\n  const sortDirection = React.useMemo(() => {\n    if (!colDef) {\n      return null;\n    }\n    const sortItem = sortModel.find(item => item.field === colDef.field);\n    return sortItem?.sort;\n  }, [colDef, sortModel]);\n  const sortingOrder = colDef.sortingOrder ?? rootProps.sortingOrder;\n  const onSortMenuItemClick = React.useCallback(event => {\n    onClick(event);\n    const direction = event.currentTarget.getAttribute('data-value') || null;\n    apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);\n  }, [apiRef, colDef, onClick, sortDirection]);\n  if (rootProps.disableColumnSorting || !colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {\n    return null;\n  }\n  const getLabel = key => {\n    const label = apiRef.current.getLocaleText(key);\n    return typeof label === 'function' ? label(colDef) : label;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [sortingOrder.includes('asc') && sortDirection !== 'asc' ? /*#__PURE__*/_jsxs(MenuItem, {\n      onClick: onSortMenuItemClick,\n      \"data-value\": \"asc\",\n      children: [/*#__PURE__*/_jsx(ListItemIcon, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortAscendingIcon, {\n          fontSize: \"small\"\n        })\n      }), /*#__PURE__*/_jsx(ListItemText, {\n        children: getLabel('columnMenuSortAsc')\n      })]\n    }) : null, sortingOrder.includes('desc') && sortDirection !== 'desc' ? /*#__PURE__*/_jsxs(MenuItem, {\n      onClick: onSortMenuItemClick,\n      \"data-value\": \"desc\",\n      children: [/*#__PURE__*/_jsx(ListItemIcon, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortDescendingIcon, {\n          fontSize: \"small\"\n        })\n      }), /*#__PURE__*/_jsx(ListItemText, {\n        children: getLabel('columnMenuSortDesc')\n      })]\n    }) : null, sortingOrder.includes(null) && sortDirection != null ? /*#__PURE__*/_jsxs(MenuItem, {\n      onClick: onSortMenuItemClick,\n      children: [/*#__PURE__*/_jsx(ListItemIcon, {}), /*#__PURE__*/_jsx(ListItemText, {\n        children: apiRef.current.getLocaleText('columnMenuUnsort')\n      })]\n    }) : null]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuSortItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  colDef: PropTypes.object.isRequired,\n  onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuSortItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridPanelWrapper } from \"./GridPanelWrapper.js\";\nimport { GridColumnsManagement } from \"../columnsManagement/index.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridColumnsPanel(props) {\n  const rootProps = useGridRootProps();\n  return /*#__PURE__*/_jsx(GridPanelWrapper, _extends({}, props, {\n    children: /*#__PURE__*/_jsx(GridColumnsManagement, _extends({}, rootProps.slotProps?.columnsManagement))\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnsPanel.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridColumnsPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);\nconst GridPanelRoot = styled(Popper, {\n  name: 'MuiDataGrid',\n  slot: 'Panel',\n  overridesResolver: (props, styles) => styles.panel\n})(({\n  theme\n}) => ({\n  zIndex: theme.zIndex.modal\n}));\nconst GridPaperRoot = styled(Paper, {\n  name: 'MuiDataGrid',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  minWidth: 300,\n  maxHeight: 450,\n  display: 'flex',\n  maxWidth: `calc(100vw - ${theme.spacing(0.5)})`,\n  overflow: 'auto'\n}));\nconst GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      children,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const classes = gridPanelClasses;\n  const [isPlaced, setIsPlaced] = React.useState(false);\n  const handleClickAway = React.useCallback(() => {\n    apiRef.current.hidePreferences();\n  }, [apiRef]);\n  const handleKeyDown = React.useCallback(event => {\n    if (event.key === 'Escape') {\n      apiRef.current.hidePreferences();\n    }\n  }, [apiRef]);\n  const modifiers = React.useMemo(() => [{\n    name: 'flip',\n    enabled: true,\n    options: {\n      rootBoundary: 'document'\n    }\n  }, {\n    name: 'isPlaced',\n    enabled: true,\n    phase: 'main',\n    fn: () => {\n      setIsPlaced(true);\n    },\n    effect: () => () => {\n      setIsPlaced(false);\n    }\n  }], []);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  React.useEffect(() => {\n    const panelAnchor = apiRef.current.rootElementRef?.current?.querySelector('[data-id=\"gridPanelAnchor\"]');\n    if (panelAnchor) {\n      setAnchorEl(panelAnchor);\n    }\n  }, [apiRef]);\n  if (!anchorEl) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridPanelRoot, _extends({\n    ref: ref,\n    placement: \"bottom-start\",\n    className: clsx(className, classes.panel),\n    ownerState: rootProps,\n    anchorEl: anchorEl,\n    modifiers: modifiers\n  }, other, {\n    children: /*#__PURE__*/_jsx(ClickAwayListener, {\n      mouseEvent: \"onMouseUp\",\n      onClickAway: handleClickAway,\n      children: /*#__PURE__*/_jsx(GridPaperRoot, {\n        className: classes.paper,\n        ownerState: rootProps,\n        elevation: 8,\n        onKeyDown: handleKeyDown,\n        children: isPlaced && children\n      })\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanel.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  ownerState: PropTypes.object\n} : void 0;\nexport { GridPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['panelContent']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelContentRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'PanelContent',\n  overridesResolver: (props, styles) => styles.panelContent\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  overflow: 'auto',\n  flex: '1 1',\n  maxHeight: 400\n});\nfunction GridPanelContent(props) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridPanelContentRoot, _extends({\n    className: clsx(className, classes.root),\n    ownerState: rootProps\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelContent.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelContent };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['panelFooter']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelFooterRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'PanelFooter',\n  overridesResolver: (props, styles) => styles.panelFooter\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(0.5),\n  display: 'flex',\n  justifyContent: 'space-between'\n}));\nfunction GridPanelFooter(props) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(GridPanelFooterRoot, _extends({\n    className: clsx(className, classes.root),\n    ownerState: rootProps\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelFooter.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport FocusTrap from '@mui/material/Unstable_TrapFocus';\nimport { styled } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['panelWrapper']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelWrapperRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'PanelWrapper',\n  overridesResolver: (props, styles) => styles.panelWrapper\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  flex: 1,\n  '&:focus': {\n    outline: 0\n  }\n});\nconst isEnabled = () => true;\nconst GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper(props, ref) {\n  const {\n      className,\n      slotProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  return /*#__PURE__*/_jsx(FocusTrap, _extends({\n    open: true,\n    disableEnforceFocus: true,\n    isEnabled: isEnabled\n  }, slotProps.TrapFocus, {\n    children: /*#__PURE__*/_jsx(GridPanelWrapperRoot, _extends({\n      ref: ref,\n      tabIndex: -1,\n      className: clsx(className, classes.root),\n      ownerState: rootProps\n    }, other))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanelWrapper.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridPanelWrapper };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"hasMultipleFilters\", \"deleteFilter\", \"applyFilterChanges\", \"showMultiFilterOperators\", \"disableMultiFilterOperator\", \"applyMultiFilterOperatorChanges\", \"focusElementRef\", \"logicOperators\", \"columnsSort\", \"filterColumns\", \"deleteIconProps\", \"logicOperatorInputProps\", \"operatorInputProps\", \"columnInputProps\", \"valueInputProps\", \"readOnly\", \"children\"],\n  _excluded2 = [\"InputComponentProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport { gridFilterableColumnDefinitionsSelector, gridColumnLookupSelector } from \"../../../hooks/features/columns/gridColumnsSelector.js\";\nimport { gridFilterModelSelector } from \"../../../hooks/features/filter/gridFilterSelector.js\";\nimport { useGridSelector } from \"../../../hooks/utils/useGridSelector.js\";\nimport { GridLogicOperator } from \"../../../models/gridFilterItem.js\";\nimport { useGridApiContext } from \"../../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../../constants/gridClasses.js\";\nimport { getValueFromValueOptions, getValueOptions } from \"./filterPanelUtils.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['filterForm'],\n    deleteIcon: ['filterFormDeleteIcon'],\n    logicOperatorInput: ['filterFormLogicOperatorInput'],\n    columnInput: ['filterFormColumnInput'],\n    operatorInput: ['filterFormOperatorInput'],\n    valueInput: ['filterFormValueInput']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFilterFormRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterForm',\n  overridesResolver: (props, styles) => styles.filterForm\n})(({\n  theme\n}) => ({\n  display: 'flex',\n  padding: theme.spacing(1)\n}));\nconst FilterFormDeleteIcon = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterFormDeleteIcon',\n  overridesResolver: (_, styles) => styles.filterFormDeleteIcon\n})(({\n  theme\n}) => ({\n  flexShrink: 0,\n  justifyContent: 'flex-end',\n  marginRight: theme.spacing(0.5),\n  marginBottom: theme.spacing(0.2)\n}));\nconst FilterFormLogicOperatorInput = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterFormLogicOperatorInput',\n  overridesResolver: (_, styles) => styles.filterFormLogicOperatorInput\n})({\n  minWidth: 55,\n  marginRight: 5,\n  justifyContent: 'end'\n});\nconst FilterFormColumnInput = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterFormColumnInput',\n  overridesResolver: (_, styles) => styles.filterFormColumnInput\n})({\n  width: 150\n});\nconst FilterFormOperatorInput = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterFormOperatorInput',\n  overridesResolver: (_, styles) => styles.filterFormOperatorInput\n})({\n  width: 150\n});\nconst FilterFormValueInput = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'FilterFormValueInput',\n  overridesResolver: (_, styles) => styles.filterFormValueInput\n})({\n  width: 190\n});\nconst getLogicOperatorLocaleKey = logicOperator => {\n  switch (logicOperator) {\n    case GridLogicOperator.And:\n      return 'filterPanelOperatorAnd';\n    case GridLogicOperator.Or:\n      return 'filterPanelOperatorOr';\n    default:\n      throw new Error('MUI X: Invalid `logicOperator` property in the `GridFilterPanel`.');\n  }\n};\nconst getColumnLabel = col => col.headerName || col.field;\nconst collator = new Intl.Collator();\nconst GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {\n  const {\n      item,\n      hasMultipleFilters,\n      deleteFilter,\n      applyFilterChanges,\n      showMultiFilterOperators,\n      disableMultiFilterOperator,\n      applyMultiFilterOperatorChanges,\n      focusElementRef,\n      logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n      columnsSort,\n      filterColumns,\n      deleteIconProps = {},\n      logicOperatorInputProps = {},\n      operatorInputProps = {},\n      columnInputProps = {},\n      valueInputProps = {},\n      readOnly\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const columnLookup = useGridSelector(apiRef, gridColumnLookupSelector);\n  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n  const columnSelectId = useId();\n  const columnSelectLabelId = useId();\n  const operatorSelectId = useId();\n  const operatorSelectLabelId = useId();\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  const valueRef = React.useRef(null);\n  const filterSelectorRef = React.useRef(null);\n  const multiFilterOperator = filterModel.logicOperator ?? GridLogicOperator.And;\n  const hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;\n  const baseFormControlProps = rootProps.slotProps?.baseFormControl || {};\n  const baseSelectProps = rootProps.slotProps?.baseSelect || {};\n  const isBaseSelectNative = baseSelectProps.native ?? false;\n  const baseInputLabelProps = rootProps.slotProps?.baseInputLabel || {};\n  const baseSelectOptionProps = rootProps.slotProps?.baseSelectOption || {};\n  const {\n      InputComponentProps\n    } = valueInputProps,\n    valueInputPropsOther = _objectWithoutPropertiesLoose(valueInputProps, _excluded2);\n  const {\n    filteredColumns,\n    selectedField\n  } = React.useMemo(() => {\n    let itemField = item.field;\n\n    // Yields a valid value if the current filter belongs to a column that is not filterable\n    const selectedNonFilterableColumn = columnLookup[item.field].filterable === false ? columnLookup[item.field] : null;\n    if (selectedNonFilterableColumn) {\n      return {\n        filteredColumns: [selectedNonFilterableColumn],\n        selectedField: itemField\n      };\n    }\n    if (filterColumns === undefined || typeof filterColumns !== 'function') {\n      return {\n        filteredColumns: filterableColumns,\n        selectedField: itemField\n      };\n    }\n    const filteredFields = filterColumns({\n      field: item.field,\n      columns: filterableColumns,\n      currentFilters: filterModel?.items || []\n    });\n    return {\n      filteredColumns: filterableColumns.filter(column => {\n        const isFieldIncluded = filteredFields.includes(column.field);\n        if (column.field === item.field && !isFieldIncluded) {\n          itemField = undefined;\n        }\n        return isFieldIncluded;\n      }),\n      selectedField: itemField\n    };\n  }, [filterColumns, filterModel?.items, filterableColumns, item.field, columnLookup]);\n  const sortedFilteredColumns = React.useMemo(() => {\n    switch (columnsSort) {\n      case 'asc':\n        return filteredColumns.sort((a, b) => collator.compare(getColumnLabel(a), getColumnLabel(b)));\n      case 'desc':\n        return filteredColumns.sort((a, b) => -collator.compare(getColumnLabel(a), getColumnLabel(b)));\n      default:\n        return filteredColumns;\n    }\n  }, [filteredColumns, columnsSort]);\n  const currentColumn = item.field ? apiRef.current.getColumn(item.field) : null;\n  const currentOperator = React.useMemo(() => {\n    if (!item.operator || !currentColumn) {\n      return null;\n    }\n    return currentColumn.filterOperators?.find(operator => operator.value === item.operator);\n  }, [item, currentColumn]);\n  const changeColumn = React.useCallback(event => {\n    const field = event.target.value;\n    const column = apiRef.current.getColumn(field);\n    if (column.field === currentColumn.field) {\n      // column did not change\n      return;\n    }\n\n    // try to keep the same operator when column change\n    const newOperator = column.filterOperators.find(operator => operator.value === item.operator) || column.filterOperators[0];\n\n    // Erase filter value if the input component or filtered column type is modified\n    const eraseFilterValue = !newOperator.InputComponent || newOperator.InputComponent !== currentOperator?.InputComponent || column.type !== currentColumn.type;\n    let filterValue = eraseFilterValue ? undefined : item.value;\n\n    // Check filter value against the new valueOptions\n    if (column.type === 'singleSelect' && filterValue !== undefined) {\n      const colDef = column;\n      const valueOptions = getValueOptions(colDef);\n      if (Array.isArray(filterValue)) {\n        filterValue = filterValue.filter(val => {\n          return (\n            // Only keep values that are in the new value options\n            getValueFromValueOptions(val, valueOptions, colDef?.getOptionValue) !== undefined\n          );\n        });\n      } else if (getValueFromValueOptions(item.value, valueOptions, colDef?.getOptionValue) === undefined) {\n        // Reset the filter value if it is not in the new value options\n        filterValue = undefined;\n      }\n    }\n    applyFilterChanges(_extends({}, item, {\n      field,\n      operator: newOperator.value,\n      value: filterValue\n    }));\n  }, [apiRef, applyFilterChanges, item, currentColumn, currentOperator]);\n  const changeOperator = React.useCallback(event => {\n    const operator = event.target.value;\n    const newOperator = currentColumn?.filterOperators.find(op => op.value === operator);\n    const eraseItemValue = !newOperator?.InputComponent || newOperator?.InputComponent !== currentOperator?.InputComponent;\n    applyFilterChanges(_extends({}, item, {\n      operator,\n      value: eraseItemValue ? undefined : item.value\n    }));\n  }, [applyFilterChanges, item, currentColumn, currentOperator]);\n  const changeLogicOperator = React.useCallback(event => {\n    const logicOperator = event.target.value === GridLogicOperator.And.toString() ? GridLogicOperator.And : GridLogicOperator.Or;\n    applyMultiFilterOperatorChanges(logicOperator);\n  }, [applyMultiFilterOperatorChanges]);\n  const handleDeleteFilter = () => {\n    deleteFilter(item);\n  };\n  React.useImperativeHandle(focusElementRef, () => ({\n    focus: () => {\n      if (currentOperator?.InputComponent) {\n        valueRef?.current?.focus();\n      } else {\n        filterSelectorRef.current.focus();\n      }\n    }\n  }), [currentOperator]);\n  return /*#__PURE__*/_jsxs(GridFilterFormRoot, _extends({\n    ref: ref,\n    className: classes.root,\n    \"data-id\": item.id,\n    ownerState: rootProps\n  }, other, {\n    children: [/*#__PURE__*/_jsx(FilterFormDeleteIcon, _extends({\n      variant: \"standard\",\n      as: rootProps.slots.baseFormControl\n    }, baseFormControlProps, deleteIconProps, {\n      className: clsx(classes.deleteIcon, baseFormControlProps.className, deleteIconProps.className),\n      ownerState: rootProps,\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n        \"aria-label\": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n        title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n        onClick: handleDeleteFilter,\n        size: \"small\",\n        disabled: readOnly\n      }, rootProps.slotProps?.baseIconButton, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {\n          fontSize: \"small\"\n        })\n      }))\n    })), /*#__PURE__*/_jsx(FilterFormLogicOperatorInput, _extends({\n      variant: \"standard\",\n      as: rootProps.slots.baseFormControl\n    }, baseFormControlProps, logicOperatorInputProps, {\n      sx: [hasLogicOperatorColumn ? {\n        display: 'flex'\n      } : {\n        display: 'none'\n      }, showMultiFilterOperators ? {\n        visibility: 'visible'\n      } : {\n        visibility: 'hidden'\n      }, baseFormControlProps.sx, logicOperatorInputProps.sx],\n      className: clsx(classes.logicOperatorInput, baseFormControlProps.className, logicOperatorInputProps.className),\n      ownerState: rootProps,\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n        inputProps: {\n          'aria-label': apiRef.current.getLocaleText('filterPanelLogicOperator')\n        },\n        value: multiFilterOperator ?? '',\n        onChange: changeLogicOperator,\n        disabled: !!disableMultiFilterOperator || logicOperators.length === 1,\n        native: isBaseSelectNative\n      }, rootProps.slotProps?.baseSelect, {\n        children: logicOperators.map(logicOperator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isBaseSelectNative,\n          key: logicOperator.toString(),\n          value: logicOperator.toString()\n        }), apiRef.current.getLocaleText(getLogicOperatorLocaleKey(logicOperator))))\n      }))\n    })), /*#__PURE__*/_jsxs(FilterFormColumnInput, _extends({\n      variant: \"standard\",\n      as: rootProps.slots.baseFormControl\n    }, baseFormControlProps, columnInputProps, {\n      className: clsx(classes.columnInput, baseFormControlProps.className, columnInputProps.className),\n      ownerState: rootProps,\n      children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n        htmlFor: columnSelectId,\n        id: columnSelectLabelId,\n        children: apiRef.current.getLocaleText('filterPanelColumns')\n      })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n        labelId: columnSelectLabelId,\n        id: columnSelectId,\n        label: apiRef.current.getLocaleText('filterPanelColumns'),\n        value: selectedField ?? '',\n        onChange: changeColumn,\n        native: isBaseSelectNative,\n        disabled: readOnly\n      }, rootProps.slotProps?.baseSelect, {\n        children: sortedFilteredColumns.map(col => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isBaseSelectNative,\n          key: col.field,\n          value: col.field\n        }), getColumnLabel(col)))\n      }))]\n    })), /*#__PURE__*/_jsxs(FilterFormOperatorInput, _extends({\n      variant: \"standard\",\n      as: rootProps.slots.baseFormControl\n    }, baseFormControlProps, operatorInputProps, {\n      className: clsx(classes.operatorInput, baseFormControlProps.className, operatorInputProps.className),\n      ownerState: rootProps,\n      children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n        htmlFor: operatorSelectId,\n        id: operatorSelectLabelId,\n        children: apiRef.current.getLocaleText('filterPanelOperator')\n      })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n        labelId: operatorSelectLabelId,\n        label: apiRef.current.getLocaleText('filterPanelOperator'),\n        id: operatorSelectId,\n        value: item.operator,\n        onChange: changeOperator,\n        native: isBaseSelectNative,\n        inputRef: filterSelectorRef,\n        disabled: readOnly\n      }, rootProps.slotProps?.baseSelect, {\n        children: currentColumn?.filterOperators?.map(operator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isBaseSelectNative,\n          key: operator.value,\n          value: operator.value\n        }), operator.label || apiRef.current.getLocaleText(`filterOperator${capitalize(operator.value)}`)))\n      }))]\n    })), /*#__PURE__*/_jsx(FilterFormValueInput, _extends({\n      variant: \"standard\",\n      as: rootProps.slots.baseFormControl\n    }, baseFormControlProps, valueInputPropsOther, {\n      className: clsx(classes.valueInput, baseFormControlProps.className, valueInputPropsOther.className),\n      ownerState: rootProps,\n      children: currentOperator?.InputComponent ? /*#__PURE__*/_jsx(currentOperator.InputComponent, _extends({\n        apiRef: apiRef,\n        item: item,\n        applyValue: applyFilterChanges,\n        focusElementRef: valueRef,\n        disabled: readOnly\n      }, currentOperator.InputComponentProps, InputComponentProps), item.field) : null\n    }))]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterForm.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Callback called when the operator, column field or value is changed.\n   * @param {GridFilterItem} item The updated [[GridFilterItem]].\n   */\n  applyFilterChanges: PropTypes.func.isRequired,\n  /**\n   * Callback called when the logic operator is changed.\n   * @param {GridLogicOperator} operator The new logic operator.\n   */\n  applyMultiFilterOperatorChanges: PropTypes.func.isRequired,\n  /**\n   * @ignore - do not document.\n   */\n  children: PropTypes.node,\n  /**\n   * Props passed to the column input component.\n   * @default {}\n   */\n  columnInputProps: PropTypes.any,\n  /**\n   * Changes how the options in the columns selector should be ordered.\n   * If not specified, the order is derived from the `columns` prop.\n   */\n  columnsSort: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Callback called when the delete button is clicked.\n   * @param {GridFilterItem} item The deleted [[GridFilterItem]].\n   */\n  deleteFilter: PropTypes.func.isRequired,\n  /**\n   * Props passed to the delete icon.\n   * @default {}\n   */\n  deleteIconProps: PropTypes.any,\n  /**\n   * If `true`, disables the logic operator field but still renders it.\n   */\n  disableMultiFilterOperator: PropTypes.bool,\n  /**\n   * Allows to filter the columns displayed in the filter form.\n   * @param {FilterColumnsArgs} args The columns of the grid and name of field.\n   * @returns {GridColDef['field'][]} The filtered fields array.\n   */\n  filterColumns: PropTypes.func,\n  /**\n   * A ref allowing to set imperative focus.\n   * It can be passed to the el\n   */\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the logic operator field is rendered.\n   * The field will be invisible if `showMultiFilterOperators` is also `true`.\n   */\n  hasMultipleFilters: PropTypes.bool.isRequired,\n  /**\n   * The [[GridFilterItem]] representing this form.\n   */\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired,\n  /**\n   * Props passed to the logic operator input component.\n   * @default {}\n   */\n  logicOperatorInputProps: PropTypes.any,\n  /**\n   * Sets the available logic operators.\n   * @default [GridLogicOperator.And, GridLogicOperator.Or]\n   */\n  logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n  /**\n   * Props passed to the operator input component.\n   * @default {}\n   */\n  operatorInputProps: PropTypes.any,\n  /**\n   * `true` if the filter is disabled/read only.\n   * i.e. `colDef.fiterable = false` but passed in `filterModel`\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the logic operator field is visible.\n   */\n  showMultiFilterOperators: PropTypes.bool,\n  /**\n   * Props passed to the value input component.\n   * @default {}\n   */\n  valueInputProps: PropTypes.any\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterForm API](https://mui.com/x/api/data-grid/grid-filter-form/)\n */\nexport { GridFilterForm };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"apiRef\", \"focusElementRef\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"label\", \"variant\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType, unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst BooleanOperatorContainer = styled('div')({\n  display: 'flex',\n  alignItems: 'center',\n  width: '100%',\n  [`& button`]: {\n    margin: 'auto 0px 5px 5px'\n  }\n});\nfunction GridFilterInputBoolean(props) {\n  const {\n      item,\n      applyValue,\n      apiRef,\n      focusElementRef,\n      clearButton,\n      tabIndex,\n      label: labelProp,\n      variant = 'standard'\n    } = props,\n    others = _objectWithoutPropertiesLoose(props, _excluded);\n  const [filterValueState, setFilterValueState] = React.useState(item.value || '');\n  const rootProps = useGridRootProps();\n  const labelId = useId();\n  const selectId = useId();\n  const baseSelectProps = rootProps.slotProps?.baseSelect || {};\n  const isSelectNative = baseSelectProps.native ?? false;\n  const baseSelectOptionProps = rootProps.slotProps?.baseSelectOption || {};\n  const onFilterChange = React.useCallback(event => {\n    const value = event.target.value;\n    setFilterValueState(value);\n    applyValue(_extends({}, item, {\n      value\n    }));\n  }, [applyValue, item]);\n  React.useEffect(() => {\n    setFilterValueState(item.value || '');\n  }, [item.value]);\n  const label = labelProp ?? apiRef.current.getLocaleText('filterPanelInputLabel');\n  return /*#__PURE__*/_jsxs(BooleanOperatorContainer, {\n    children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n      fullWidth: true,\n      children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, rootProps.slotProps?.baseInputLabel, {\n        id: labelId,\n        shrink: true,\n        variant: variant,\n        children: label\n      })), /*#__PURE__*/_jsxs(rootProps.slots.baseSelect, _extends({\n        labelId: labelId,\n        id: selectId,\n        label: label,\n        value: filterValueState,\n        onChange: onFilterChange,\n        variant: variant,\n        notched: variant === 'outlined' ? true : undefined,\n        native: isSelectNative,\n        displayEmpty: true,\n        inputProps: {\n          ref: focusElementRef,\n          tabIndex\n        }\n      }, others /* FIXME: typing error */, baseSelectProps, {\n        children: [/*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isSelectNative,\n          value: \"\",\n          children: apiRef.current.getLocaleText('filterValueAny')\n        })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isSelectNative,\n          value: \"true\",\n          children: apiRef.current.getLocaleText('filterValueTrue')\n        })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n          native: isSelectNative,\n          value: \"false\",\n          children: apiRef.current.getLocaleText('filterValueFalse')\n        }))]\n      }))]\n    }), clearButton]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputBoolean.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  clearButton: PropTypes.node,\n  focusElementRef: refType,\n  /**\n   * It is `true` if the filter either has a value or an operator with no value\n   * required is selected (for example `isEmpty`)\n   */\n  isFilterActive: PropTypes.bool,\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired\n} : void 0;\nexport { GridFilterInputBoolean };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"InputProps\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"disabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from \"../../../hooks/utils/useTimeout.js\";\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction convertFilterItemValueToInputValue(itemValue, inputType) {\n  if (itemValue == null) {\n    return '';\n  }\n  const dateCopy = new Date(itemValue);\n  if (Number.isNaN(dateCopy.getTime())) {\n    return '';\n  }\n  if (inputType === 'date') {\n    return dateCopy.toISOString().substring(0, 10);\n  }\n  if (inputType === 'datetime-local') {\n    // The date picker expects the date to be in the local timezone.\n    // But .toISOString() converts it to UTC with zero offset.\n    // So we need to subtract the timezone offset.\n    dateCopy.setMinutes(dateCopy.getMinutes() - dateCopy.getTimezoneOffset());\n    return dateCopy.toISOString().substring(0, 19);\n  }\n  return dateCopy.toISOString().substring(0, 10);\n}\nfunction GridFilterInputDate(props) {\n  const {\n      item,\n      applyValue,\n      type,\n      apiRef,\n      focusElementRef,\n      InputProps,\n      clearButton,\n      tabIndex,\n      disabled\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const filterTimeout = useTimeout();\n  const [filterValueState, setFilterValueState] = React.useState(() => convertFilterItemValueToInputValue(item.value, type));\n  const [applying, setIsApplying] = React.useState(false);\n  const id = useId();\n  const rootProps = useGridRootProps();\n  const onFilterChange = React.useCallback(event => {\n    filterTimeout.clear();\n    const value = event.target.value;\n    setFilterValueState(value);\n    setIsApplying(true);\n    filterTimeout.start(rootProps.filterDebounceMs, () => {\n      const date = new Date(value);\n      applyValue(_extends({}, item, {\n        value: Number.isNaN(date.getTime()) ? undefined : date\n      }));\n      setIsApplying(false);\n    });\n  }, [applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n  React.useEffect(() => {\n    const value = convertFilterItemValueToInputValue(item.value, type);\n    setFilterValueState(value);\n  }, [item.value, type]);\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n    fullWidth: true,\n    id: id,\n    label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n    placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n    value: filterValueState,\n    onChange: onFilterChange,\n    variant: \"standard\",\n    type: type || 'text',\n    InputLabelProps: {\n      shrink: true\n    },\n    inputRef: focusElementRef,\n    InputProps: _extends({}, applying || clearButton ? {\n      endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n        fontSize: \"small\",\n        color: \"action\"\n      }) : clearButton\n    } : {}, {\n      disabled\n    }, InputProps, {\n      inputProps: _extends({\n        max: type === 'datetime-local' ? '9999-12-31T23:59' : '9999-12-31',\n        tabIndex\n      }, InputProps?.inputProps)\n    })\n  }, other, rootProps.slotProps?.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputDate.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  clearButton: PropTypes.node,\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * It is `true` if the filter either has a value or an operator with no value\n   * required is selected (for example `isEmpty`)\n   */\n  isFilterActive: PropTypes.bool,\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired\n} : void 0;\nexport { GridFilterInputDate };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\"],\n  _excluded2 = [\"key\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { getValueOptions, isSingleSelectColDef } from \"./filterPanelUtils.js\";\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst filter = createFilterOptions();\nfunction GridFilterInputMultipleSingleSelect(props) {\n  const {\n      item,\n      applyValue,\n      apiRef,\n      focusElementRef,\n      color,\n      error,\n      helperText,\n      size,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const TextFieldProps = {\n    color,\n    error,\n    helperText,\n    size,\n    variant\n  };\n  const id = useId();\n  const rootProps = useGridRootProps();\n  let resolvedColumn = null;\n  if (item.field) {\n    const column = apiRef.current.getColumn(item.field);\n    if (isSingleSelectColDef(column)) {\n      resolvedColumn = column;\n    }\n  }\n  const getOptionValue = resolvedColumn?.getOptionValue;\n  const getOptionLabel = resolvedColumn?.getOptionLabel;\n  const isOptionEqualToValue = React.useCallback((option, value) => getOptionValue(option) === getOptionValue(value), [getOptionValue]);\n  const resolvedValueOptions = React.useMemo(() => {\n    return getValueOptions(resolvedColumn) || [];\n  }, [resolvedColumn]);\n\n  // The value is computed from the item.value and used directly\n  // If it was done by a useEffect/useState, the Autocomplete could receive incoherent value and options\n  const filteredValues = React.useMemo(() => {\n    if (!Array.isArray(item.value)) {\n      return [];\n    }\n    return item.value.reduce((acc, value) => {\n      const resolvedValue = resolvedValueOptions.find(v => getOptionValue(v) === value);\n      if (resolvedValue != null) {\n        acc.push(resolvedValue);\n      }\n      return acc;\n    }, []);\n  }, [getOptionValue, item.value, resolvedValueOptions]);\n  const handleChange = React.useCallback((event, value) => {\n    applyValue(_extends({}, item, {\n      value: value.map(getOptionValue)\n    }));\n  }, [applyValue, item, getOptionValue]);\n  return /*#__PURE__*/_jsx(Autocomplete, _extends({\n    multiple: true,\n    options: resolvedValueOptions,\n    isOptionEqualToValue: isOptionEqualToValue,\n    filterOptions: filter,\n    id: id,\n    value: filteredValues,\n    onChange: handleChange,\n    getOptionLabel: getOptionLabel,\n    renderTags: (value, getTagProps) => value.map((option, index) => {\n      const _getTagProps = getTagProps({\n          index\n        }),\n        {\n          key\n        } = _getTagProps,\n        tagProps = _objectWithoutPropertiesLoose(_getTagProps, _excluded2);\n      return /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n        variant: \"outlined\",\n        size: \"small\",\n        label: getOptionLabel(option)\n      }, tagProps), key);\n    }),\n    renderInput: params => /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n      label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n      placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n      InputLabelProps: _extends({}, params.InputLabelProps, {\n        shrink: true\n      }),\n      inputRef: focusElementRef,\n      type: \"singleSelect\"\n    }, TextFieldProps, rootProps.slotProps?.baseTextField))\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleSingleSelect.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired,\n  type: PropTypes.oneOf(['singleSelect'])\n} : void 0;\nexport { GridFilterInputMultipleSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\"],\n  _excluded2 = [\"key\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputMultipleValue(props) {\n  const {\n      item,\n      applyValue,\n      type,\n      apiRef,\n      focusElementRef,\n      color,\n      error,\n      helperText,\n      size,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const TextFieldProps = {\n    color,\n    error,\n    helperText,\n    size,\n    variant\n  };\n  const [filterValueState, setFilterValueState] = React.useState(item.value || []);\n  const id = useId();\n  const rootProps = useGridRootProps();\n  React.useEffect(() => {\n    const itemValue = item.value ?? [];\n    setFilterValueState(itemValue.map(String));\n  }, [item.value]);\n  const handleChange = React.useCallback((event, value) => {\n    setFilterValueState(value.map(String));\n    applyValue(_extends({}, item, {\n      value: [...value]\n    }));\n  }, [applyValue, item]);\n  return /*#__PURE__*/_jsx(Autocomplete, _extends({\n    multiple: true,\n    freeSolo: true,\n    options: [],\n    filterOptions: (options, params) => {\n      const {\n        inputValue\n      } = params;\n      return inputValue == null || inputValue === '' ? [] : [inputValue];\n    },\n    id: id,\n    value: filterValueState,\n    onChange: handleChange,\n    renderTags: (value, getTagProps) => value.map((option, index) => {\n      const _getTagProps = getTagProps({\n          index\n        }),\n        {\n          key\n        } = _getTagProps,\n        tagProps = _objectWithoutPropertiesLoose(_getTagProps, _excluded2);\n      return /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n        variant: \"outlined\",\n        size: \"small\",\n        label: option\n      }, tagProps), key);\n    }),\n    renderInput: params => /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n      label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n      placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n      InputLabelProps: _extends({}, params.InputLabelProps, {\n        shrink: true\n      }),\n      inputRef: focusElementRef,\n      type: type || 'text'\n    }, TextFieldProps, rootProps.slotProps?.baseTextField))\n  }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleValue.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired,\n  type: PropTypes.oneOf(['date', 'datetime-local', 'number', 'text'])\n} : void 0;\nexport { GridFilterInputMultipleValue };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"placeholder\", \"tabIndex\", \"label\", \"variant\", \"isFilterActive\", \"clearButton\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { getValueFromValueOptions, getValueOptions, isSingleSelectColDef } from \"./filterPanelUtils.js\";\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst renderSingleSelectOptions = ({\n  column,\n  OptionComponent,\n  getOptionLabel,\n  getOptionValue,\n  isSelectNative,\n  baseSelectOptionProps\n}) => {\n  const iterableColumnValues = ['', ...(getValueOptions(column) || [])];\n  return iterableColumnValues.map(option => {\n    const value = getOptionValue(option);\n    let label = getOptionLabel(option);\n    if (label === '') {\n      label = ' '; // To force the height of the empty option\n    }\n    return /*#__PURE__*/_createElement(OptionComponent, _extends({}, baseSelectOptionProps, {\n      native: isSelectNative,\n      key: value,\n      value: value\n    }), label);\n  });\n};\nconst SingleSelectOperatorContainer = styled('div')({\n  display: 'flex',\n  alignItems: 'flex-end',\n  width: '100%',\n  [`& button`]: {\n    margin: 'auto 0px 5px 5px'\n  }\n});\nfunction GridFilterInputSingleSelect(props) {\n  const {\n      item,\n      applyValue,\n      type,\n      apiRef,\n      focusElementRef,\n      placeholder,\n      tabIndex,\n      label: labelProp,\n      variant = 'standard',\n      clearButton\n    } = props,\n    others = _objectWithoutPropertiesLoose(props, _excluded);\n  const filterValue = item.value ?? '';\n  const id = useId();\n  const labelId = useId();\n  const rootProps = useGridRootProps();\n  const isSelectNative = rootProps.slotProps?.baseSelect?.native ?? false;\n  let resolvedColumn = null;\n  if (item.field) {\n    const column = apiRef.current.getColumn(item.field);\n    if (isSingleSelectColDef(column)) {\n      resolvedColumn = column;\n    }\n  }\n  const getOptionValue = resolvedColumn?.getOptionValue;\n  const getOptionLabel = resolvedColumn?.getOptionLabel;\n  const currentValueOptions = React.useMemo(() => {\n    return getValueOptions(resolvedColumn);\n  }, [resolvedColumn]);\n  const onFilterChange = React.useCallback(event => {\n    let value = event.target.value;\n\n    // NativeSelect casts the value to a string.\n    value = getValueFromValueOptions(value, currentValueOptions, getOptionValue);\n    applyValue(_extends({}, item, {\n      value\n    }));\n  }, [currentValueOptions, getOptionValue, applyValue, item]);\n  if (!isSingleSelectColDef(resolvedColumn)) {\n    return null;\n  }\n  const label = labelProp ?? apiRef.current.getLocaleText('filterPanelInputLabel');\n  return /*#__PURE__*/_jsxs(SingleSelectOperatorContainer, {\n    children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n      fullWidth: true,\n      children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, rootProps.slotProps?.baseInputLabel, {\n        id: labelId,\n        htmlFor: id,\n        shrink: true,\n        variant: variant,\n        children: label\n      })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n        id: id,\n        label: label,\n        labelId: labelId,\n        value: filterValue,\n        onChange: onFilterChange,\n        variant: variant,\n        type: type || 'text',\n        inputProps: {\n          tabIndex,\n          ref: focusElementRef,\n          placeholder: placeholder ?? apiRef.current.getLocaleText('filterPanelInputPlaceholder')\n        },\n        native: isSelectNative,\n        notched: variant === 'outlined' ? true : undefined\n      }, others /* FIXME: typing error */, rootProps.slotProps?.baseSelect, {\n        children: renderSingleSelectOptions({\n          column: resolvedColumn,\n          OptionComponent: rootProps.slots.baseSelectOption,\n          getOptionLabel,\n          getOptionValue,\n          isSelectNative,\n          baseSelectOptionProps: rootProps.slotProps?.baseSelectOption\n        })\n      }))]\n    }), clearButton]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputSingleSelect.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  clearButton: PropTypes.node,\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * It is `true` if the filter either has a value or an operator with no value\n   * required is selected (for example `isEmpty`)\n   */\n  isFilterActive: PropTypes.bool,\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired\n} : void 0;\nexport { GridFilterInputSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"tabIndex\", \"disabled\", \"isFilterActive\", \"clearButton\", \"InputProps\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from \"../../../hooks/utils/useTimeout.js\";\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputValue(props) {\n  const {\n      item,\n      applyValue,\n      type,\n      apiRef,\n      focusElementRef,\n      tabIndex,\n      disabled,\n      clearButton,\n      InputProps,\n      variant = 'standard'\n    } = props,\n    others = _objectWithoutPropertiesLoose(props, _excluded);\n  const filterTimeout = useTimeout();\n  const [filterValueState, setFilterValueState] = React.useState(item.value ?? '');\n  const [applying, setIsApplying] = React.useState(false);\n  const id = useId();\n  const rootProps = useGridRootProps();\n  const onFilterChange = React.useCallback(event => {\n    const {\n      value\n    } = event.target;\n    setFilterValueState(String(value));\n    setIsApplying(true);\n    filterTimeout.start(rootProps.filterDebounceMs, () => {\n      const newItem = _extends({}, item, {\n        value,\n        fromInput: id\n      });\n      applyValue(newItem);\n      setIsApplying(false);\n    });\n  }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n  React.useEffect(() => {\n    const itemPlusTag = item;\n    if (itemPlusTag.fromInput !== id || item.value === undefined) {\n      setFilterValueState(String(item.value ?? ''));\n    }\n  }, [id, item]);\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n    id: id,\n    label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n    placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n    value: filterValueState,\n    onChange: onFilterChange,\n    variant: variant,\n    type: type || 'text',\n    InputProps: _extends({}, applying || clearButton ? {\n      endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n        fontSize: \"small\",\n        color: \"action\"\n      }) : clearButton\n    } : {}, {\n      disabled\n    }, InputProps, {\n      inputProps: _extends({\n        tabIndex\n      }, InputProps?.inputProps)\n    }),\n    InputLabelProps: {\n      shrink: true\n    },\n    inputRef: focusElementRef\n  }, others, rootProps.slotProps?.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputValue.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  apiRef: PropTypes.shape({\n    current: PropTypes.object.isRequired\n  }).isRequired,\n  applyValue: PropTypes.func.isRequired,\n  clearButton: PropTypes.node,\n  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * It is `true` if the filter either has a value or an operator with no value\n   * required is selected (for example `isEmpty`)\n   */\n  isFilterActive: PropTypes.bool,\n  item: PropTypes.shape({\n    field: PropTypes.string.isRequired,\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    operator: PropTypes.string.isRequired,\n    value: PropTypes.any\n  }).isRequired\n} : void 0;\nexport { GridFilterInputValue };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"logicOperators\", \"columnsSort\", \"filterFormProps\", \"getColumnForNewFilter\", \"children\", \"disableAddFilterButton\", \"disableRemoveAllButton\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridLogicOperator } from \"../../../models/gridFilterItem.js\";\nimport { useGridApiContext } from \"../../../hooks/utils/useGridApiContext.js\";\nimport { GridPanelContent } from \"../GridPanelContent.js\";\nimport { GridPanelFooter } from \"../GridPanelFooter.js\";\nimport { GridPanelWrapper } from \"../GridPanelWrapper.js\";\nimport { GridFilterForm } from \"./GridFilterForm.js\";\nimport { useGridRootProps } from \"../../../hooks/utils/useGridRootProps.js\";\nimport { useGridSelector } from \"../../../hooks/utils/useGridSelector.js\";\nimport { gridFilterModelSelector } from \"../../../hooks/features/filter/gridFilterSelector.js\";\nimport { gridFilterableColumnDefinitionsSelector, gridFilterableColumnLookupSelector } from \"../../../hooks/features/columns/gridColumnsSelector.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst getGridFilter = col => ({\n  field: col.field,\n  operator: col.filterOperators[0].value,\n  id: Math.round(Math.random() * 1e5)\n});\nconst GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n  const filterableColumnsLookup = useGridSelector(apiRef, gridFilterableColumnLookupSelector);\n  const lastFilterRef = React.useRef(null);\n  const placeholderFilter = React.useRef(null);\n  const {\n      logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n      columnsSort,\n      filterFormProps,\n      getColumnForNewFilter,\n      disableAddFilterButton = false,\n      disableRemoveAllButton = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const applyFilter = apiRef.current.upsertFilterItem;\n  const applyFilterLogicOperator = React.useCallback(operator => {\n    apiRef.current.setFilterLogicOperator(operator);\n  }, [apiRef]);\n  const getDefaultFilter = React.useCallback(() => {\n    let nextColumnWithOperator;\n    if (getColumnForNewFilter && typeof getColumnForNewFilter === 'function') {\n      // To allow override the column for default (first) filter\n      const nextFieldName = getColumnForNewFilter({\n        currentFilters: filterModel?.items || [],\n        columns: filterableColumns\n      });\n      if (nextFieldName === null) {\n        return null;\n      }\n      nextColumnWithOperator = filterableColumns.find(({\n        field\n      }) => field === nextFieldName);\n    } else {\n      nextColumnWithOperator = filterableColumns.find(colDef => colDef.filterOperators?.length);\n    }\n    if (!nextColumnWithOperator) {\n      return null;\n    }\n    return getGridFilter(nextColumnWithOperator);\n  }, [filterModel?.items, filterableColumns, getColumnForNewFilter]);\n  const getNewFilter = React.useCallback(() => {\n    if (getColumnForNewFilter === undefined || typeof getColumnForNewFilter !== 'function') {\n      return getDefaultFilter();\n    }\n    const currentFilters = filterModel.items.length ? filterModel.items : [getDefaultFilter()].filter(Boolean);\n\n    // If no items are there in filterModel, we have to pass defaultFilter\n    const nextColumnFieldName = getColumnForNewFilter({\n      currentFilters: currentFilters,\n      columns: filterableColumns\n    });\n    if (nextColumnFieldName === null) {\n      return null;\n    }\n    const nextColumnWithOperator = filterableColumns.find(({\n      field\n    }) => field === nextColumnFieldName);\n    if (!nextColumnWithOperator) {\n      return null;\n    }\n    return getGridFilter(nextColumnWithOperator);\n  }, [filterModel.items, filterableColumns, getColumnForNewFilter, getDefaultFilter]);\n  const items = React.useMemo(() => {\n    if (filterModel.items.length) {\n      return filterModel.items;\n    }\n    if (!placeholderFilter.current) {\n      placeholderFilter.current = getDefaultFilter();\n    }\n    return placeholderFilter.current ? [placeholderFilter.current] : [];\n  }, [filterModel.items, getDefaultFilter]);\n  const hasMultipleFilters = items.length > 1;\n  const {\n    readOnlyFilters,\n    validFilters\n  } = React.useMemo(() => items.reduce((acc, item) => {\n    if (filterableColumnsLookup[item.field]) {\n      acc.validFilters.push(item);\n    } else {\n      acc.readOnlyFilters.push(item);\n    }\n    return acc;\n  }, {\n    readOnlyFilters: [],\n    validFilters: []\n  }), [items, filterableColumnsLookup]);\n  const addNewFilter = React.useCallback(() => {\n    const newFilter = getNewFilter();\n    if (!newFilter) {\n      return;\n    }\n    apiRef.current.upsertFilterItems([...items, newFilter]);\n  }, [apiRef, getNewFilter, items]);\n  const deleteFilter = React.useCallback(item => {\n    const shouldCloseFilterPanel = validFilters.length === 1;\n    apiRef.current.deleteFilterItem(item);\n    if (shouldCloseFilterPanel) {\n      apiRef.current.hideFilterPanel();\n    }\n  }, [apiRef, validFilters.length]);\n  const handleRemoveAll = React.useCallback(() => {\n    if (validFilters.length === 1 && validFilters[0].value === undefined) {\n      apiRef.current.deleteFilterItem(validFilters[0]);\n      return apiRef.current.hideFilterPanel();\n    }\n    return apiRef.current.setFilterModel(_extends({}, filterModel, {\n      items: readOnlyFilters\n    }), 'removeAllFilterItems');\n  }, [apiRef, readOnlyFilters, filterModel, validFilters]);\n  React.useEffect(() => {\n    if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {\n      applyFilterLogicOperator(logicOperators[0]);\n    }\n  }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);\n  React.useEffect(() => {\n    if (validFilters.length > 0) {\n      lastFilterRef.current.focus();\n    }\n  }, [validFilters.length]);\n  return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/_jsxs(GridPanelContent, {\n      children: [readOnlyFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({\n        item: item,\n        applyFilterChanges: applyFilter,\n        deleteFilter: deleteFilter,\n        hasMultipleFilters: hasMultipleFilters,\n        showMultiFilterOperators: index > 0,\n        disableMultiFilterOperator: index !== 1,\n        applyMultiFilterOperatorChanges: applyFilterLogicOperator,\n        focusElementRef: null,\n        readOnly: true,\n        logicOperators: logicOperators,\n        columnsSort: columnsSort\n      }, filterFormProps), item.id == null ? index : item.id)), validFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({\n        item: item,\n        applyFilterChanges: applyFilter,\n        deleteFilter: deleteFilter,\n        hasMultipleFilters: hasMultipleFilters,\n        showMultiFilterOperators: readOnlyFilters.length + index > 0,\n        disableMultiFilterOperator: readOnlyFilters.length + index !== 1,\n        applyMultiFilterOperatorChanges: applyFilterLogicOperator,\n        focusElementRef: index === validFilters.length - 1 ? lastFilterRef : null,\n        logicOperators: logicOperators,\n        columnsSort: columnsSort\n      }, filterFormProps), item.id == null ? index + readOnlyFilters.length : item.id))]\n    }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {\n      children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n        onClick: addNewFilter,\n        startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})\n      }, rootProps.slotProps?.baseButton, {\n        children: apiRef.current.getLocaleText('filterPanelAddFilter')\n      })) : /*#__PURE__*/_jsx(\"span\", {}), !disableRemoveAllButton && validFilters.length > 0 ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n        onClick: handleRemoveAll,\n        startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})\n      }, rootProps.slotProps?.baseButton, {\n        children: apiRef.current.getLocaleText('filterPanelRemoveAll')\n      })) : null]\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterPanel.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore - do not document.\n   */\n  children: PropTypes.node,\n  /**\n   * Changes how the options in the columns selector should be ordered.\n   * If not specified, the order is derived from the `columns` prop.\n   */\n  columnsSort: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * If `true`, the `Add filter` button will not be displayed.\n   * @default false\n   */\n  disableAddFilterButton: PropTypes.bool,\n  /**\n   * If `true`, the `Remove all` button will be disabled\n   * @default false\n   */\n  disableRemoveAllButton: PropTypes.bool,\n  /**\n   * Props passed to each filter form.\n   */\n  filterFormProps: PropTypes.shape({\n    columnInputProps: PropTypes.any,\n    columnsSort: PropTypes.oneOf(['asc', 'desc']),\n    deleteIconProps: PropTypes.any,\n    filterColumns: PropTypes.func,\n    logicOperatorInputProps: PropTypes.any,\n    operatorInputProps: PropTypes.any,\n    valueInputProps: PropTypes.any\n  }),\n  /**\n   * Function that returns the next filter item to be picked as default filter.\n   * @param {GetColumnForNewFilterArgs} args Currently configured filters and columns.\n   * @returns {GridColDef['field']} The field to be used for the next filter or `null` to prevent adding a filter.\n   */\n  getColumnForNewFilter: PropTypes.func,\n  /**\n   * Sets the available logic operators.\n   * @default [GridLogicOperator.And, GridLogicOperator.Or]\n   */\n  logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterPanel API](https://mui.com/x/api/data-grid/grid-filter-panel/)\n */\nexport { GridFilterPanel, getGridFilter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isSingleSelectColDef(colDef) {\n  return colDef?.type === 'singleSelect';\n}\nexport function getValueOptions(column, additionalParams) {\n  if (!column) {\n    return undefined;\n  }\n  return typeof column.valueOptions === 'function' ? column.valueOptions(_extends({\n    field: column.field\n  }, additionalParams)) : column.valueOptions;\n}\nexport function getValueFromValueOptions(value, valueOptions, getOptionValue) {\n  if (valueOptions === undefined) {\n    return undefined;\n  }\n  const result = valueOptions.find(option => {\n    const optionValue = getOptionValue(option);\n    return String(optionValue) === String(value);\n  });\n  return getOptionValue(result);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"options\"],\n  _excluded2 = [\"hideMenu\", \"options\"],\n  _excluded3 = [\"csvOptions\", \"printOptions\", \"excelOptions\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { GridToolbarExportContainer } from \"./GridToolbarExportContainer.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridCsvExportMenuItem(props) {\n  const apiRef = useGridApiContext();\n  const {\n      hideMenu,\n      options\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  return /*#__PURE__*/_jsx(MenuItem, _extends({\n    onClick: () => {\n      apiRef.current.exportDataAsCsv(options);\n      hideMenu?.();\n    }\n  }, other, {\n    children: apiRef.current.getLocaleText('toolbarExportCSV')\n  }));\n}\nexport function GridPrintExportMenuItem(props) {\n  const apiRef = useGridApiContext();\n  const {\n      hideMenu,\n      options\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  return /*#__PURE__*/_jsx(MenuItem, _extends({\n    onClick: () => {\n      apiRef.current.exportDataAsPrint(options);\n      hideMenu?.();\n    }\n  }, other, {\n    children: apiRef.current.getLocaleText('toolbarExportPrint')\n  }));\n}\nconst GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {\n  const {\n      csvOptions = {},\n      printOptions = {},\n      excelOptions\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded3);\n  const apiRef = useGridApiContext();\n  const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('exportMenu', [], {\n    excelOptions,\n    csvOptions,\n    printOptions\n  }).sort((a, b) => a.componentName > b.componentName ? 1 : -1);\n  if (preProcessedButtons.length === 0) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridToolbarExportContainer, _extends({}, other, {\n    ref: ref,\n    children: preProcessedButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button.component, {\n      key: index\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarExport.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  csvOptions: PropTypes.object,\n  printOptions: PropTypes.object,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridToolbarExport };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport { isHideMenuKey } from \"../../utils/keyboardUtils.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { GridMenu } from \"../menu/GridMenu.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { gridClasses } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {\n  const {\n    children,\n    slotProps = {}\n  } = props;\n  const buttonProps = slotProps.button || {};\n  const tooltipProps = slotProps.tooltip || {};\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const exportButtonId = useId();\n  const exportMenuId = useId();\n  const [open, setOpen] = React.useState(false);\n  const buttonRef = React.useRef(null);\n  const handleRef = useForkRef(ref, buttonRef);\n  const handleMenuOpen = event => {\n    setOpen(prevOpen => !prevOpen);\n    buttonProps.onClick?.(event);\n  };\n  const handleMenuClose = () => setOpen(false);\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    if (isHideMenuKey(event.key)) {\n      handleMenuClose();\n    }\n  };\n  if (children == null) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n      title: apiRef.current.getLocaleText('toolbarExportLabel'),\n      enterDelay: 1000\n    }, tooltipProps, rootProps.slotProps?.baseTooltip, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n        ref: handleRef,\n        size: \"small\",\n        startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),\n        \"aria-expanded\": open,\n        \"aria-label\": apiRef.current.getLocaleText('toolbarExportLabel'),\n        \"aria-haspopup\": \"menu\",\n        \"aria-controls\": open ? exportMenuId : undefined,\n        id: exportButtonId\n      }, buttonProps, {\n        onClick: handleMenuOpen\n      }, rootProps.slotProps?.baseButton, {\n        children: apiRef.current.getLocaleText('toolbarExport')\n      }))\n    })), /*#__PURE__*/_jsx(GridMenu, {\n      open: open,\n      target: buttonRef.current,\n      onClose: handleMenuClose,\n      position: \"bottom-start\",\n      children: /*#__PURE__*/_jsx(MenuList, {\n        id: exportMenuId,\n        className: gridClasses.menuList,\n        \"aria-labelledby\": exportButtonId,\n        onKeyDown: handleListKeyDown,\n        autoFocusItem: open,\n        children: React.Children.map(children, child => {\n          if (! /*#__PURE__*/React.isValidElement(child)) {\n            return child;\n          }\n          return /*#__PURE__*/React.cloneElement(child, {\n            hideMenu: handleMenuClose\n          });\n        })\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarExportContainer.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridToolbarExportContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass, gridClasses } from \"../constants/index.js\";\nimport { useGridApiContext } from \"../hooks/utils/useGridApiContext.js\";\nimport { useGridApiEventHandler } from \"../hooks/utils/useGridApiEventHandler.js\";\nimport { useGridSelector } from \"../hooks/utils/useGridSelector.js\";\nimport { gridDimensionsSelector } from \"../hooks/features/dimensions/gridDimensionsSelectors.js\";\nimport { gridDensityFactorSelector } from \"../hooks/features/density/densitySelector.js\";\nimport { gridColumnsTotalWidthSelector } from \"../hooks/features/columns/gridColumnsSelector.js\";\nimport { useTimeout } from \"../hooks/utils/useTimeout.js\";\nimport { getTotalHeaderHeight } from \"../hooks/features/columns/gridColumnsUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CLIFF = 1;\nconst SLOP = 1.5;\nconst useUtilityClasses = ownerState => {\n  const {\n    scrollDirection,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['scrollArea', `scrollArea--${scrollDirection}`]\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridScrollAreaRawRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ScrollArea',\n  overridesResolver: (props, styles) => [{\n    [`&.${gridClasses['scrollArea--left']}`]: styles['scrollArea--left']\n  }, {\n    [`&.${gridClasses['scrollArea--right']}`]: styles['scrollArea--right']\n  }, styles.scrollArea]\n})(() => ({\n  position: 'absolute',\n  top: 0,\n  zIndex: 101,\n  width: 20,\n  bottom: 0,\n  [`&.${gridClasses['scrollArea--left']}`]: {\n    left: 0\n  },\n  [`&.${gridClasses['scrollArea--right']}`]: {\n    right: 0\n  }\n}));\nfunction GridScrollAreaRaw(props) {\n  const {\n    scrollDirection\n  } = props;\n  const rootRef = React.useRef(null);\n  const apiRef = useGridApiContext();\n  const timeout = useTimeout();\n  const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n  const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const scrollPosition = React.useRef({\n    left: 0,\n    top: 0\n  });\n  const getCanScrollMore = () => {\n    if (scrollDirection === 'left') {\n      // Only render if the user has not reached yet the start of the list\n      return scrollPosition.current.left > 0;\n    }\n    if (scrollDirection === 'right') {\n      // Only render if the user has not reached yet the end of the list\n      const maxScrollLeft = columnsTotalWidth - dimensions.viewportInnerSize.width;\n      return scrollPosition.current.left < maxScrollLeft;\n    }\n    return false;\n  };\n  const [dragging, setDragging] = React.useState(false);\n  const [canScrollMore, setCanScrollMore] = React.useState(getCanScrollMore);\n  const rootProps = useGridRootProps();\n  const ownerState = _extends({}, rootProps, {\n    scrollDirection\n  });\n  const classes = useUtilityClasses(ownerState);\n  const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps);\n  const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);\n  const style = {\n    height: headerHeight,\n    top: totalHeaderHeight - headerHeight\n  };\n  if (scrollDirection === 'left') {\n    style.left = dimensions.leftPinnedWidth;\n  } else if (scrollDirection === 'right') {\n    style.right = dimensions.rightPinnedWidth + (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);\n  }\n  const handleScrolling = newScrollPosition => {\n    scrollPosition.current = newScrollPosition;\n    setCanScrollMore(getCanScrollMore);\n  };\n  const handleDragOver = useEventCallback(event => {\n    let offset;\n\n    // Prevents showing the forbidden cursor\n    event.preventDefault();\n    if (scrollDirection === 'left') {\n      offset = event.clientX - rootRef.current.getBoundingClientRect().right;\n    } else if (scrollDirection === 'right') {\n      offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);\n    } else {\n      throw new Error('MUI X: Wrong drag direction');\n    }\n    offset = (offset - CLIFF) * SLOP + CLIFF;\n\n    // Avoid freeze and inertia.\n    timeout.start(0, () => {\n      apiRef.current.scroll({\n        left: scrollPosition.current.left + offset,\n        top: scrollPosition.current.top\n      });\n    });\n  });\n  const handleColumnHeaderDragStart = useEventCallback(() => {\n    setDragging(true);\n  });\n  const handleColumnHeaderDragEnd = useEventCallback(() => {\n    setDragging(false);\n  });\n  useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScrolling);\n  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnHeaderDragStart);\n  useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnHeaderDragEnd);\n  if (!dragging || !canScrollMore) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridScrollAreaRawRoot, {\n    ref: rootRef,\n    className: clsx(classes.root),\n    ownerState: ownerState,\n    onDragOver: handleDragOver,\n    style: style\n  });\n}\nexport const GridScrollArea = fastMemo(GridScrollAreaRaw);","import { useGridSelector } from \"../../utils/index.js\";\nimport { useGridApiContext } from \"../../utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../utils/useGridRootProps.js\";\nimport { gridExpandedRowCountSelector } from \"../filter/index.js\";\nimport { gridRowCountSelector, gridRowsLoadingSelector } from \"../rows/index.js\";\n/**\n * Uses the grid state to determine which overlay to display.\n * Returns the active overlay type and the active loading overlay variant.\n */\nexport const useGridOverlays = () => {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);\n  const visibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector);\n  const noRows = totalRowCount === 0;\n  const loading = useGridSelector(apiRef, gridRowsLoadingSelector);\n  const showNoRowsOverlay = !loading && noRows;\n  const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;\n  let overlayType = null;\n  let loadingOverlayVariant = null;\n  if (showNoRowsOverlay) {\n    overlayType = 'noRowsOverlay';\n  }\n  if (showNoResultsOverlay) {\n    overlayType = 'noResultsOverlay';\n  }\n  if (loading) {\n    overlayType = 'loadingOverlay';\n    loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] || null;\n  }\n  return {\n    overlayType,\n    loadingOverlayVariant\n  };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useGridPrivateApiContext } from \"../hooks/utils/useGridPrivateApiContext.js\";\nimport { useGridSelector } from \"../hooks/utils/useGridSelector.js\";\nimport { useGridRootProps } from \"../hooks/utils/useGridRootProps.js\";\nimport { gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector } from \"../hooks/features/columns/gridColumnsSelector.js\";\nimport { gridFilterActiveItemsLookupSelector } from \"../hooks/features/filter/gridFilterSelector.js\";\nimport { gridSortColumnLookupSelector } from \"../hooks/features/sorting/gridSortingSelector.js\";\nimport { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, gridTabIndexColumnGroupHeaderSelector, gridFocusColumnGroupHeaderSelector } from \"../hooks/features/focus/gridFocusStateSelector.js\";\nimport { gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from \"../hooks/features/columnGrouping/gridColumnGroupsSelector.js\";\nimport { gridColumnMenuSelector } from \"../hooks/features/columnMenu/columnMenuSelector.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridHeaders() {\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n  const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);\n  const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);\n  const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n  const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);\n  const columnGroupHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnGroupHeaderSelector);\n  const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);\n  const columnGroupHeaderFocus = useGridSelector(apiRef, gridFocusColumnGroupHeaderSelector);\n  const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n  const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);\n  const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n  const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);\n  const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);\n  const columnsContainerRef = apiRef.current.columnHeadersContainerRef;\n  return /*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({\n    ref: columnsContainerRef,\n    visibleColumns: visibleColumns,\n    filterColumnLookup: filterColumnLookup,\n    sortColumnLookup: sortColumnLookup,\n    columnHeaderTabIndexState: columnHeaderTabIndexState,\n    columnGroupHeaderTabIndexState: columnGroupHeaderTabIndexState,\n    columnHeaderFocus: columnHeaderFocus,\n    columnGroupHeaderFocus: columnGroupHeaderFocus,\n    headerGroupingMaxDepth: headerGroupingMaxDepth,\n    columnMenuState: columnMenuState,\n    columnVisibility: columnVisibility,\n    columnGroupsHeaderStructure: columnGroupsHeaderStructure,\n    hasOtherElementInTabSequence: hasOtherElementInTabSequence\n  }, rootProps.slotProps?.columnHeaders));\n}\nconst MemoizedGridHeaders = fastMemo(GridHeaders);\nexport { MemoizedGridHeaders as GridHeaders };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { styled } from '@mui/system';\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridConfiguration } from \"../../hooks/utils/useGridConfiguration.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridPanelAnchor = styled('div')({\n  position: 'absolute',\n  top: `var(--DataGrid-headersTotalHeight)`,\n  left: 0\n});\nconst Element = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'Main',\n  overridesResolver: (props, styles) => styles.main\n})({\n  flexGrow: 1,\n  position: 'relative',\n  overflow: 'hidden'\n});\nexport const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const rootProps = useGridRootProps();\n  const configuration = useGridConfiguration();\n  const ariaAttributes = configuration.hooks.useGridAriaAttributes();\n  return /*#__PURE__*/_jsxs(Element, _extends({\n    ref: ref,\n    ownerState: rootProps,\n    className: props.className,\n    tabIndex: -1\n  }, ariaAttributes, {\n    children: [/*#__PURE__*/_jsx(GridPanelAnchor, {\n      role: \"presentation\",\n      \"data-id\": \"gridPanelAnchor\"\n    }), props.children]\n  }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { gridClasses, getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = () => {\n  const slots = {\n    root: ['topContainer']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, {});\n};\nconst Element = styled('div')({\n  position: 'sticky',\n  zIndex: 4,\n  top: 0\n});\nexport function GridTopContainer(props) {\n  const classes = useUtilityClasses();\n  return /*#__PURE__*/_jsx(Element, _extends({}, props, {\n    className: clsx(classes.root, props.className, gridClasses['container--top']),\n    role: \"presentation\"\n  }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { gridClasses, getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = () => {\n  const slots = {\n    root: ['bottomContainer']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, {});\n};\nconst Element = styled('div')({\n  position: 'sticky',\n  zIndex: 4,\n  bottom: 'calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))'\n});\nexport function GridBottomContainer(props) {\n  const classes = useUtilityClasses();\n  return /*#__PURE__*/_jsx(Element, _extends({}, props, {\n    className: clsx(classes.root, props.className, gridClasses['container--bottom']),\n    role: \"presentation\"\n  }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (props, overflowedContent) => {\n  const {\n    classes\n  } = props;\n  const slots = {\n    root: ['virtualScrollerContent', overflowedContent && 'virtualScrollerContent--overflowed']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst VirtualScrollerContentRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'VirtualScrollerContent',\n  overridesResolver: (props, styles) => styles.virtualScrollerContent\n})({});\nconst GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerContent(props, ref) {\n  const rootProps = useGridRootProps();\n  const overflowedContent = !rootProps.autoHeight && props.style?.minHeight === 'auto';\n  const classes = useUtilityClasses(rootProps, overflowedContent);\n  return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({\n    ref: ref\n  }, props, {\n    ownerState: rootProps,\n    className: clsx(classes.root, props.className)\n  }));\n});\nexport { GridVirtualScrollerContent };","import * as React from 'react';\nimport { styled } from '@mui/system';\nimport { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { gridDimensionsSelector } from \"../../hooks/features/dimensions/index.js\";\nimport { gridClasses } from \"../../constants/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Filler = styled('div')({\n  display: 'flex',\n  flexDirection: 'row',\n  width: 'var(--DataGrid-rowWidth)',\n  boxSizing: 'border-box'\n});\nconst Pinned = styled('div')({\n  position: 'sticky',\n  height: '100%',\n  boxSizing: 'border-box',\n  borderTop: '1px solid var(--rowBorderColor)',\n  backgroundColor: 'var(--DataGrid-pinnedBackground)'\n});\nconst PinnedLeft = styled(Pinned)({\n  left: 0,\n  borderRight: '1px solid var(--rowBorderColor)'\n});\nconst PinnedRight = styled(Pinned)({\n  right: 0,\n  borderLeft: '1px solid var(--rowBorderColor)'\n});\nconst Main = styled('div')({\n  flexGrow: 1,\n  borderTop: '1px solid var(--rowBorderColor)'\n});\nfunction GridVirtualScrollerFiller({\n  rowsLength\n}) {\n  const apiRef = useGridApiContext();\n  const {\n    viewportOuterSize,\n    minimumSize,\n    hasScrollX,\n    hasScrollY,\n    scrollbarSize,\n    leftPinnedWidth,\n    rightPinnedWidth\n  } = useGridSelector(apiRef, gridDimensionsSelector);\n  const scrollbarHeight = hasScrollX ? scrollbarSize : 0;\n  const expandedHeight = viewportOuterSize.height - minimumSize.height - scrollbarHeight;\n  const height = Math.max(scrollbarHeight, expandedHeight);\n  if (height === 0) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(Filler, {\n    className: gridClasses.filler,\n    role: \"presentation\",\n    style: {\n      height,\n      '--rowBorderColor': rowsLength === 0 ? 'transparent' : 'var(--DataGrid-rowBorderColor)'\n    },\n    children: [leftPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedLeft, {\n      className: gridClasses['filler--pinnedLeft'],\n      style: {\n        width: leftPinnedWidth\n      }\n    }), /*#__PURE__*/_jsx(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedRight, {\n      className: gridClasses['filler--pinnedRight'],\n      style: {\n        width: rightPinnedWidth + (hasScrollY ? scrollbarSize : 0)\n      }\n    })]\n  });\n}\nconst Memoized = fastMemo(GridVirtualScrollerFiller);\nexport { Memoized as GridVirtualScrollerFiller };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridRowsMetaSelector } from \"../../hooks/features/rows/index.js\";\nimport { gridRenderContextSelector } from \"../../hooks/features/virtualization/index.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['virtualScrollerRenderZone']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst VirtualScrollerRenderZoneRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'VirtualScrollerRenderZone',\n  overridesResolver: (props, styles) => styles.virtualScrollerRenderZone\n})({\n  position: 'absolute',\n  display: 'flex',\n  // Prevents margin collapsing when using `getRowSpacing`\n  flexDirection: 'column'\n});\nconst GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerRenderZone(props, ref) {\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  const offsetTop = useGridSelector(apiRef, () => {\n    const renderContext = gridRenderContextSelector(apiRef);\n    const rowsMeta = gridRowsMetaSelector(apiRef.current.state);\n    return rowsMeta.positions[renderContext.firstRowIndex] ?? 0;\n  });\n  return /*#__PURE__*/_jsx(VirtualScrollerRenderZoneRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: rootProps,\n    style: {\n      transform: `translate3d(0, ${offsetTop}px, 0)`\n    }\n  }, other));\n});\nexport { GridVirtualScrollerRenderZone };","import * as React from 'react';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { useOnMount } from \"../../hooks/utils/useOnMount.js\";\nimport { useGridPrivateApiContext } from \"../../hooks/utils/useGridPrivateApiContext.js\";\nimport { gridDimensionsSelector, useGridSelector } from \"../../hooks/index.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (ownerState, position) => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['scrollbar', `scrollbar--${position}`],\n    content: ['scrollbarContent']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst Scrollbar = styled('div')({\n  position: 'absolute',\n  display: 'inline-block',\n  zIndex: 6,\n  '& > div': {\n    display: 'inline-block'\n  },\n  // In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider\n  // their size to be 0px throughout all the calculations, but the floating scrollbar container does need\n  // to appear and have a real size. We set it to 14px because it seems like an acceptable value and we\n  // don't have a method to find the required size for scrollbars on those platforms.\n  '--size': 'calc(max(var(--DataGrid-scrollbarSize), 14px))'\n});\nconst ScrollbarVertical = styled(Scrollbar)({\n  width: 'var(--size)',\n  height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // Disable focus-visible style, it's a scrollbar.\n  outline: 0,\n  '& > div': {\n    width: 'var(--size)'\n  },\n  top: 'var(--DataGrid-topContainerHeight)',\n  right: '0px'\n});\nconst ScrollbarHorizontal = styled(Scrollbar)({\n  width: '100%',\n  height: 'var(--size)',\n  overflowY: 'hidden',\n  overflowX: 'auto',\n  // Disable focus-visible style, it's a scrollbar.\n  outline: 0,\n  '& > div': {\n    height: 'var(--size)'\n  },\n  bottom: '0px'\n});\nconst Content = styled('div')({\n  display: 'inline-block'\n});\nconst GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualScrollbar(props, ref) {\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const isLocked = React.useRef(false);\n  const lastPosition = React.useRef(0);\n  const scrollbarRef = React.useRef(null);\n  const contentRef = React.useRef(null);\n  const classes = useUtilityClasses(rootProps, props.position);\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const propertyDimension = props.position === 'vertical' ? 'height' : 'width';\n  const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';\n  const hasScroll = props.position === 'vertical' ? dimensions.hasScrollX : dimensions.hasScrollY;\n  const contentSize = dimensions.minimumSize[propertyDimension] + (hasScroll ? dimensions.scrollbarSize : 0);\n  const scrollbarSize = props.position === 'vertical' ? dimensions.viewportInnerSize.height : dimensions.viewportOuterSize.width;\n  const scrollbarInnerSize = scrollbarSize * (contentSize / dimensions.viewportOuterSize[propertyDimension]);\n  const onScrollerScroll = useEventCallback(() => {\n    const scroller = apiRef.current.virtualScrollerRef.current;\n    const scrollbar = scrollbarRef.current;\n    if (scroller[propertyScroll] === lastPosition.current) {\n      return;\n    }\n    if (isLocked.current) {\n      isLocked.current = false;\n      return;\n    }\n    isLocked.current = true;\n    const value = scroller[propertyScroll] / contentSize;\n    scrollbar[propertyScroll] = value * scrollbarInnerSize;\n    lastPosition.current = scroller[propertyScroll];\n  });\n  const onScrollbarScroll = useEventCallback(() => {\n    const scroller = apiRef.current.virtualScrollerRef.current;\n    const scrollbar = scrollbarRef.current;\n    if (isLocked.current) {\n      isLocked.current = false;\n      return;\n    }\n    isLocked.current = true;\n    const value = scrollbar[propertyScroll] / scrollbarInnerSize;\n    scroller[propertyScroll] = value * contentSize;\n  });\n  useOnMount(() => {\n    const scroller = apiRef.current.virtualScrollerRef.current;\n    const scrollbar = scrollbarRef.current;\n    scroller.addEventListener('scroll', onScrollerScroll, {\n      capture: true\n    });\n    scrollbar.addEventListener('scroll', onScrollbarScroll, {\n      capture: true\n    });\n    return () => {\n      scroller.removeEventListener('scroll', onScrollerScroll, {\n        capture: true\n      });\n      scrollbar.removeEventListener('scroll', onScrollbarScroll, {\n        capture: true\n      });\n    };\n  });\n  React.useEffect(() => {\n    const content = contentRef.current;\n    content.style.setProperty(propertyDimension, `${scrollbarInnerSize}px`);\n  }, [scrollbarInnerSize, propertyDimension]);\n  const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;\n  return /*#__PURE__*/_jsx(Container, {\n    ref: useForkRef(ref, scrollbarRef),\n    className: classes.root,\n    tabIndex: -1,\n    \"aria-hidden\": \"true\",\n    children: /*#__PURE__*/_jsx(Content, {\n      ref: contentRef,\n      className: classes.content\n    })\n  });\n});\nexport { GridVirtualScrollbar };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { GridScrollArea } from \"../GridScrollArea.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { gridDimensionsSelector } from \"../../hooks/features/dimensions/index.js\";\nimport { useGridVirtualScroller } from \"../../hooks/features/virtualization/useGridVirtualScroller.js\";\nimport { useGridOverlays } from \"../../hooks/features/overlays/useGridOverlays.js\";\nimport { GridOverlays as Overlays } from \"../base/GridOverlays.js\";\nimport { GridHeaders } from \"../GridHeaders.js\";\nimport { GridMainContainer as Container } from \"./GridMainContainer.js\";\nimport { GridTopContainer as TopContainer } from \"./GridTopContainer.js\";\nimport { GridBottomContainer as BottomContainer } from \"./GridBottomContainer.js\";\nimport { GridVirtualScrollerContent as Content } from \"./GridVirtualScrollerContent.js\";\nimport { GridVirtualScrollerFiller as SpaceFiller } from \"./GridVirtualScrollerFiller.js\";\nimport { GridVirtualScrollerRenderZone as RenderZone } from \"./GridVirtualScrollerRenderZone.js\";\nimport { GridVirtualScrollbar as Scrollbar } from \"./GridVirtualScrollbar.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = (ownerState, dimensions, loadingOverlayVariant) => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight', loadingOverlayVariant === 'skeleton' && 'main--hasSkeletonLoadingOverlay'],\n    scroller: ['virtualScroller', dimensions.hasScrollX && 'virtualScroller--hasScrollX']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst Scroller = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'VirtualScroller',\n  overridesResolver: (props, styles) => styles.virtualScroller\n})({\n  position: 'relative',\n  height: '100%',\n  overflow: 'scroll',\n  scrollbarWidth: 'none' /* Firefox */,\n  '&::-webkit-scrollbar': {\n    display: 'none' /* Safari and Chrome */\n  },\n  '@media print': {\n    overflow: 'hidden'\n  },\n  // See https://github.com/mui/mui-x/issues/10547\n  zIndex: 0\n});\nfunction GridVirtualScroller(props) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const overlaysProps = useGridOverlays();\n  const classes = useUtilityClasses(rootProps, dimensions, overlaysProps.loadingOverlayVariant);\n  const virtualScroller = useGridVirtualScroller();\n  const {\n    getContainerProps,\n    getScrollerProps,\n    getContentProps,\n    getRenderZoneProps,\n    getScrollbarVerticalProps,\n    getScrollbarHorizontalProps,\n    getRows\n  } = virtualScroller;\n  const rows = getRows();\n  return /*#__PURE__*/_jsxs(Container, _extends({\n    className: classes.root\n  }, getContainerProps(), {\n    children: [/*#__PURE__*/_jsx(GridScrollArea, {\n      scrollDirection: \"left\"\n    }), /*#__PURE__*/_jsx(GridScrollArea, {\n      scrollDirection: \"right\"\n    }), /*#__PURE__*/_jsxs(Scroller, _extends({\n      className: classes.scroller\n    }, getScrollerProps(), {\n      ownerState: rootProps,\n      children: [/*#__PURE__*/_jsxs(TopContainer, {\n        children: [/*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {\n          position: \"top\",\n          virtualScroller: virtualScroller\n        })]\n      }), /*#__PURE__*/_jsx(Overlays, _extends({}, overlaysProps)), /*#__PURE__*/_jsx(Content, _extends({}, getContentProps(), {\n        children: /*#__PURE__*/_jsxs(RenderZone, _extends({}, getRenderZoneProps(), {\n          children: [rows, /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {\n            virtualScroller: virtualScroller\n          })]\n        }))\n      })), /*#__PURE__*/_jsx(SpaceFiller, {\n        rowsLength: rows.length\n      }), /*#__PURE__*/_jsx(BottomContainer, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {\n          position: \"bottom\",\n          virtualScroller: virtualScroller\n        })\n      })]\n    })), dimensions.hasScrollY && /*#__PURE__*/_jsx(Scrollbar, _extends({\n      position: \"vertical\"\n    }, getScrollbarVerticalProps())), dimensions.hasScrollX && /*#__PURE__*/_jsx(Scrollbar, _extends({\n      position: \"horizontal\"\n    }, getScrollbarHorizontalProps())), props.children]\n  }));\n}\nexport { GridVirtualScroller };","import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nexport function getDataGridUtilityClass(slot) {\n  return generateUtilityClass('MuiDataGrid', slot);\n}\nexport const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);","// Can't import from pro package - hence duplication\nexport const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';","export const GRID_DEFAULT_LOCALE_TEXT = {\n  // Root\n  noRowsLabel: 'No rows',\n  noResultsOverlayLabel: 'No results found.',\n  // Density selector toolbar button text\n  toolbarDensity: 'Density',\n  toolbarDensityLabel: 'Density',\n  toolbarDensityCompact: 'Compact',\n  toolbarDensityStandard: 'Standard',\n  toolbarDensityComfortable: 'Comfortable',\n  // Columns selector toolbar button text\n  toolbarColumns: 'Columns',\n  toolbarColumnsLabel: 'Select columns',\n  // Filters toolbar button text\n  toolbarFilters: 'Filters',\n  toolbarFiltersLabel: 'Show filters',\n  toolbarFiltersTooltipHide: 'Hide filters',\n  toolbarFiltersTooltipShow: 'Show filters',\n  toolbarFiltersTooltipActive: count => count !== 1 ? `${count} active filters` : `${count} active filter`,\n  // Quick filter toolbar field\n  toolbarQuickFilterPlaceholder: 'Search…',\n  toolbarQuickFilterLabel: 'Search',\n  toolbarQuickFilterDeleteIconLabel: 'Clear',\n  // Export selector toolbar button text\n  toolbarExport: 'Export',\n  toolbarExportLabel: 'Export',\n  toolbarExportCSV: 'Download as CSV',\n  toolbarExportPrint: 'Print',\n  toolbarExportExcel: 'Download as Excel',\n  // Columns management text\n  columnsManagementSearchTitle: 'Search',\n  columnsManagementNoColumns: 'No columns',\n  columnsManagementShowHideAllText: 'Show/Hide All',\n  columnsManagementReset: 'Reset',\n  // Filter panel text\n  filterPanelAddFilter: 'Add filter',\n  filterPanelRemoveAll: 'Remove all',\n  filterPanelDeleteIconLabel: 'Delete',\n  filterPanelLogicOperator: 'Logic operator',\n  filterPanelOperator: 'Operator',\n  filterPanelOperatorAnd: 'And',\n  filterPanelOperatorOr: 'Or',\n  filterPanelColumns: 'Columns',\n  filterPanelInputLabel: 'Value',\n  filterPanelInputPlaceholder: 'Filter value',\n  // Filter operators text\n  filterOperatorContains: 'contains',\n  filterOperatorDoesNotContain: 'does not contain',\n  filterOperatorEquals: 'equals',\n  filterOperatorDoesNotEqual: 'does not equal',\n  filterOperatorStartsWith: 'starts with',\n  filterOperatorEndsWith: 'ends with',\n  filterOperatorIs: 'is',\n  filterOperatorNot: 'is not',\n  filterOperatorAfter: 'is after',\n  filterOperatorOnOrAfter: 'is on or after',\n  filterOperatorBefore: 'is before',\n  filterOperatorOnOrBefore: 'is on or before',\n  filterOperatorIsEmpty: 'is empty',\n  filterOperatorIsNotEmpty: 'is not empty',\n  filterOperatorIsAnyOf: 'is any of',\n  'filterOperator=': '=',\n  'filterOperator!=': '!=',\n  'filterOperator>': '>',\n  'filterOperator>=': '>=',\n  'filterOperator<': '<',\n  'filterOperator<=': '<=',\n  // Header filter operators text\n  headerFilterOperatorContains: 'Contains',\n  headerFilterOperatorDoesNotContain: 'Does not contain',\n  headerFilterOperatorEquals: 'Equals',\n  headerFilterOperatorDoesNotEqual: 'Does not equal',\n  headerFilterOperatorStartsWith: 'Starts with',\n  headerFilterOperatorEndsWith: 'Ends with',\n  headerFilterOperatorIs: 'Is',\n  headerFilterOperatorNot: 'Is not',\n  headerFilterOperatorAfter: 'Is after',\n  headerFilterOperatorOnOrAfter: 'Is on or after',\n  headerFilterOperatorBefore: 'Is before',\n  headerFilterOperatorOnOrBefore: 'Is on or before',\n  headerFilterOperatorIsEmpty: 'Is empty',\n  headerFilterOperatorIsNotEmpty: 'Is not empty',\n  headerFilterOperatorIsAnyOf: 'Is any of',\n  'headerFilterOperator=': 'Equals',\n  'headerFilterOperator!=': 'Not equals',\n  'headerFilterOperator>': 'Greater than',\n  'headerFilterOperator>=': 'Greater than or equal to',\n  'headerFilterOperator<': 'Less than',\n  'headerFilterOperator<=': 'Less than or equal to',\n  // Filter values text\n  filterValueAny: 'any',\n  filterValueTrue: 'true',\n  filterValueFalse: 'false',\n  // Column menu text\n  columnMenuLabel: 'Menu',\n  columnMenuShowColumns: 'Show columns',\n  columnMenuManageColumns: 'Manage columns',\n  columnMenuFilter: 'Filter',\n  columnMenuHideColumn: 'Hide column',\n  columnMenuUnsort: 'Unsort',\n  columnMenuSortAsc: 'Sort by ASC',\n  columnMenuSortDesc: 'Sort by DESC',\n  // Column header text\n  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} active filters` : `${count} active filter`,\n  columnHeaderFiltersLabel: 'Show filters',\n  columnHeaderSortIconLabel: 'Sort',\n  // Rows selected footer text\n  footerRowSelected: count => count !== 1 ? `${count.toLocaleString()} rows selected` : `${count.toLocaleString()} row selected`,\n  // Total row amount footer text\n  footerTotalRows: 'Total Rows:',\n  // Total visible row amount footer text\n  footerTotalVisibleRows: (visibleCount, totalCount) => `${visibleCount.toLocaleString()} of ${totalCount.toLocaleString()}`,\n  // Checkbox selection text\n  checkboxSelectionHeaderName: 'Checkbox selection',\n  checkboxSelectionSelectAllRows: 'Select all rows',\n  checkboxSelectionUnselectAllRows: 'Unselect all rows',\n  checkboxSelectionSelectRow: 'Select row',\n  checkboxSelectionUnselectRow: 'Unselect row',\n  // Boolean cell text\n  booleanCellTrueLabel: 'yes',\n  booleanCellFalseLabel: 'no',\n  // Actions cell more text\n  actionsCellMore: 'more',\n  // Column pinning text\n  pinToLeft: 'Pin to left',\n  pinToRight: 'Pin to right',\n  unpin: 'Unpin',\n  // Tree Data\n  treeDataGroupingHeaderName: 'Group',\n  treeDataExpand: 'see children',\n  treeDataCollapse: 'hide children',\n  // Grouping columns\n  groupingColumnHeaderName: 'Group',\n  groupColumn: name => `Group by ${name}`,\n  unGroupColumn: name => `Stop grouping by ${name}`,\n  // Master/detail\n  detailPanelToggle: 'Detail panel toggle',\n  expandDetailPanel: 'Expand',\n  collapseDetailPanel: 'Collapse',\n  // Used core components translation keys\n  MuiTablePagination: {},\n  // Row reordering text\n  rowReorderingHeaderName: 'Row reordering',\n  // Aggregation\n  aggregationMenuItemHeader: 'Aggregation',\n  aggregationFunctionLabelSum: 'sum',\n  aggregationFunctionLabelAvg: 'avg',\n  aggregationFunctionLabelMin: 'min',\n  aggregationFunctionLabelMax: 'max',\n  aggregationFunctionLabelSize: 'size'\n};","import * as React from 'react';\nimport { GridApiContext } from \"../components/GridApiContext.js\";\nimport { GridPrivateApiContext } from \"../hooks/utils/useGridPrivateApiContext.js\";\nimport { GridRootPropsContext } from \"./GridRootPropsContext.js\";\nimport { GridConfigurationContext } from \"../components/GridConfigurationContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridContextProvider({\n  privateApiRef,\n  configuration,\n  props,\n  children\n}) {\n  const apiRef = React.useRef(privateApiRef.current.getPublicApi());\n  return /*#__PURE__*/_jsx(GridConfigurationContext.Provider, {\n    value: configuration,\n    children: /*#__PURE__*/_jsx(GridRootPropsContext.Provider, {\n      value: props,\n      children: /*#__PURE__*/_jsx(GridPrivateApiContext.Provider, {\n        value: privateApiRef,\n        children: /*#__PURE__*/_jsx(GridApiContext.Provider, {\n          value: apiRef,\n          children: children\n        })\n      })\n    })\n  });\n}","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\n/**\n * @category ColumnGrouping\n * @ignore - do not document.\n */\nexport const gridColumnGroupingSelector = state => state.columnGrouping;\nexport const gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.unwrappedGroupingModel ?? {});\nexport const gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.lookup ?? {});\nexport const gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.headerStructure ?? []);\nexport const gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, columnGrouping => columnGrouping?.maxDepth ?? 0);","export const gridColumnMenuSelector = state => state.columnMenu;","export const DEFAULT_GRID_AUTOSIZE_OPTIONS = {\n  includeHeaders: true,\n  includeOutliers: false,\n  outliersFactor: 1.5,\n  expand: false\n};\n\n/**\n * The Resize API interface that is available in the grid `apiRef`.\n */","export let GridPinnedColumnPosition = /*#__PURE__*/function (GridPinnedColumnPosition) {\n  GridPinnedColumnPosition[\"LEFT\"] = \"left\";\n  GridPinnedColumnPosition[\"RIGHT\"] = \"right\";\n  return GridPinnedColumnPosition;\n}({});\nexport const EMPTY_PINNED_COLUMN_FIELDS = {\n  left: [],\n  right: []\n};","/**\n * Get the theme state\n * @category Core\n */\nexport const gridIsRtlSelector = state => state.isRtl;","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nimport { EMPTY_PINNED_COLUMN_FIELDS } from \"./gridColumnsInterfaces.js\";\nimport { gridIsRtlSelector } from \"../../core/gridCoreSelector.js\";\n\n/**\n * Get the columns state\n * @category Columns\n */\nexport const gridColumnsStateSelector = state => state.columns;\n\n/**\n * Get an array of column fields in the order rendered on screen.\n * @category Columns\n */\nexport const gridColumnFieldsSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.orderedFields);\n\n/**\n * Get the columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridColumnLookupSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.lookup);\n\n/**\n * Get an array of column definitions in the order rendered on screen..\n * @category Columns\n */\nexport const gridColumnDefinitionsSelector = createSelectorMemoized(gridColumnFieldsSelector, gridColumnLookupSelector, (allFields, lookup) => allFields.map(field => lookup[field]));\n\n/**\n * Get the column visibility model, containing the visibility status of each column.\n * If a column is not registered in the model, it is visible.\n * @category Visible Columns\n */\nexport const gridColumnVisibilityModelSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.columnVisibilityModel);\n\n/**\n * Get the visible columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Visible Columns\n */\nexport const gridVisibleColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, (columns, columnVisibilityModel) => columns.filter(column => columnVisibilityModel[column.field] !== false));\n\n/**\n * Get the field of each visible column.\n * @category Visible Columns\n */\nexport const gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => visibleColumns.map(column => column.field));\n\n/**\n * Get the visible pinned columns model.\n * @category Visible Columns\n */\nexport const gridPinnedColumnsSelector = state => state.pinnedColumns;\n\n/**\n * Get the visible pinned columns.\n * @category Visible Columns\n */\nexport const gridVisiblePinnedColumnDefinitionsSelector = createSelectorMemoized(gridColumnsStateSelector, gridPinnedColumnsSelector, gridVisibleColumnFieldsSelector, gridIsRtlSelector, (columnsState, model, visibleColumnFields, isRtl) => {\n  const visiblePinnedFields = filterVisibleColumns(model, visibleColumnFields, isRtl);\n  const visiblePinnedColumns = {\n    left: visiblePinnedFields.left.map(field => columnsState.lookup[field]),\n    right: visiblePinnedFields.right.map(field => columnsState.lookup[field])\n  };\n  return visiblePinnedColumns;\n});\nfunction filterVisibleColumns(pinnedColumns, columns, invert) {\n  if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {\n    return EMPTY_PINNED_COLUMN_FIELDS;\n  }\n  if (pinnedColumns.left?.length === 0 && pinnedColumns.right?.length === 0) {\n    return EMPTY_PINNED_COLUMN_FIELDS;\n  }\n  const filter = (newPinnedColumns, remainingColumns) => {\n    if (!Array.isArray(newPinnedColumns)) {\n      return [];\n    }\n    return newPinnedColumns.filter(field => remainingColumns.includes(field));\n  };\n  const leftPinnedColumns = filter(pinnedColumns.left, columns);\n  const columnsWithoutLeftPinnedColumns = columns.filter(\n  // Filter out from the remaining columns those columns already pinned to the left\n  field => !leftPinnedColumns.includes(field));\n  const rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);\n  if (invert) {\n    return {\n      left: rightPinnedColumns,\n      right: leftPinnedColumns\n    };\n  }\n  return {\n    left: leftPinnedColumns,\n    right: rightPinnedColumns\n  };\n}\n\n/**\n * Get the left position in pixel of each visible columns relative to the left of the first column.\n * @category Visible Columns\n */\nexport const gridColumnPositionsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => {\n  const positions = [];\n  let currentPosition = 0;\n  for (let i = 0; i < visibleColumns.length; i += 1) {\n    positions.push(currentPosition);\n    currentPosition += visibleColumns[i].computedWidth;\n  }\n  return positions;\n});\n\n/**\n * Get the summed width of all the visible columns.\n * @category Visible Columns\n */\nexport const gridColumnsTotalWidthSelector = createSelector(gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, (visibleColumns, positions) => {\n  const colCount = visibleColumns.length;\n  if (colCount === 0) {\n    return 0;\n  }\n  return positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth;\n});\n\n/**\n * Get the filterable columns as an array.\n * @category Columns\n */\nexport const gridFilterableColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.filter(col => col.filterable));\n\n/**\n * Get the filterable columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridFilterableColumnLookupSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.reduce((acc, col) => {\n  if (col.filterable) {\n    acc[col.field] = col;\n  }\n  return acc;\n}, {}));\n\n/**\n * Checks if some column has a colSpan field.\n * @category Columns\n * @ignore - Do not document\n */\nexport const gridHasColSpanSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.some(column => column.colSpan !== undefined));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { DEFAULT_GRID_COL_TYPE_KEY, GRID_STRING_COL_DEF, getGridDefaultColumnTypes } from \"../../../colDef/index.js\";\nimport { gridColumnsStateSelector, gridColumnVisibilityModelSelector } from \"./gridColumnsSelector.js\";\nimport { clamp } from \"../../../utils/utils.js\";\nimport { gridDensityFactorSelector } from \"../density/densitySelector.js\";\nimport { gridHeaderFilteringEnabledSelector } from \"../headerFiltering/gridHeaderFilteringSelectors.js\";\nimport { gridColumnGroupsHeaderMaxDepthSelector } from \"../columnGrouping/gridColumnGroupsSelector.js\";\nexport const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];\nconst COLUMN_TYPES = getGridDefaultColumnTypes();\n\n/**\n * Computes width for flex columns.\n * Based on CSS Flexbox specification:\n * https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n */\nexport function computeFlexColumnsWidth({\n  initialFreeSpace,\n  totalFlexUnits,\n  flexColumns\n}) {\n  const uniqueFlexColumns = new Set(flexColumns.map(col => col.field));\n  const flexColumnsLookup = {\n    all: {},\n    frozenFields: [],\n    freeze: field => {\n      const value = flexColumnsLookup.all[field];\n      if (value && value.frozen !== true) {\n        flexColumnsLookup.all[field].frozen = true;\n        flexColumnsLookup.frozenFields.push(field);\n      }\n    }\n  };\n\n  // Step 5 of https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n  function loopOverFlexItems() {\n    // 5a: If all the flex items on the line are frozen, free space has been distributed.\n    if (flexColumnsLookup.frozenFields.length === uniqueFlexColumns.size) {\n      return;\n    }\n    const violationsLookup = {\n      min: {},\n      max: {}\n    };\n    let remainingFreeSpace = initialFreeSpace;\n    let flexUnits = totalFlexUnits;\n    let totalViolation = 0;\n\n    // 5b: Calculate the remaining free space\n    flexColumnsLookup.frozenFields.forEach(field => {\n      remainingFreeSpace -= flexColumnsLookup.all[field].computedWidth;\n      flexUnits -= flexColumnsLookup.all[field].flex;\n    });\n    for (let i = 0; i < flexColumns.length; i += 1) {\n      const column = flexColumns[i];\n      if (flexColumnsLookup.all[column.field] && flexColumnsLookup.all[column.field].frozen === true) {\n        continue;\n      }\n\n      // 5c: Distribute remaining free space proportional to the flex factors\n      const widthPerFlexUnit = remainingFreeSpace / flexUnits;\n      let computedWidth = widthPerFlexUnit * column.flex;\n\n      // 5d: Fix min/max violations\n      if (computedWidth < column.minWidth) {\n        totalViolation += column.minWidth - computedWidth;\n        computedWidth = column.minWidth;\n        violationsLookup.min[column.field] = true;\n      } else if (computedWidth > column.maxWidth) {\n        totalViolation += column.maxWidth - computedWidth;\n        computedWidth = column.maxWidth;\n        violationsLookup.max[column.field] = true;\n      }\n      flexColumnsLookup.all[column.field] = {\n        frozen: false,\n        computedWidth,\n        flex: column.flex\n      };\n    }\n\n    // 5e: Freeze over-flexed items\n    if (totalViolation < 0) {\n      // Freeze all the items with max violations\n      Object.keys(violationsLookup.max).forEach(field => {\n        flexColumnsLookup.freeze(field);\n      });\n    } else if (totalViolation > 0) {\n      // Freeze all the items with min violations\n      Object.keys(violationsLookup.min).forEach(field => {\n        flexColumnsLookup.freeze(field);\n      });\n    } else {\n      // Freeze all items\n      flexColumns.forEach(({\n        field\n      }) => {\n        flexColumnsLookup.freeze(field);\n      });\n    }\n\n    // 5f: Return to the start of this loop\n    loopOverFlexItems();\n  }\n  loopOverFlexItems();\n  return flexColumnsLookup.all;\n}\n\n/**\n * Compute the `computedWidth` (ie: the width the column should have during rendering) based on the `width` / `flex` / `minWidth` / `maxWidth` properties of `GridColDef`.\n * The columns already have been merged with there `type` default values for `minWidth`, `maxWidth` and `width`, thus the `!` for those properties below.\n * TODO: Unit test this function in depth and only keep basic cases for the whole grid testing.\n * TODO: Improve the `GridColDef` typing to reflect the fact that `minWidth` / `maxWidth` and `width` can't be null after the merge with the `type` default values.\n */\nexport const hydrateColumnsWidth = (rawState, dimensions) => {\n  const columnsLookup = {};\n  let totalFlexUnits = 0;\n  let widthAllocatedBeforeFlex = 0;\n  const flexColumns = [];\n\n  // For the non-flex columns, compute their width\n  // For the flex columns, compute their minimum width and how much width must be allocated during the flex allocation\n  rawState.orderedFields.forEach(columnField => {\n    let column = rawState.lookup[columnField];\n    let computedWidth = 0;\n    let isFlex = false;\n    if (rawState.columnVisibilityModel[columnField] !== false) {\n      if (column.flex && column.flex > 0) {\n        totalFlexUnits += column.flex;\n        isFlex = true;\n      } else {\n        computedWidth = clamp(column.width || GRID_STRING_COL_DEF.width, column.minWidth || GRID_STRING_COL_DEF.minWidth, column.maxWidth || GRID_STRING_COL_DEF.maxWidth);\n      }\n      widthAllocatedBeforeFlex += computedWidth;\n    }\n    if (column.computedWidth !== computedWidth) {\n      column = _extends({}, column, {\n        computedWidth\n      });\n    }\n    if (isFlex) {\n      flexColumns.push(column);\n    }\n    columnsLookup[columnField] = column;\n  });\n  const availableWidth = dimensions === undefined ? 0 : dimensions.viewportOuterSize.width - (dimensions.hasScrollY ? dimensions.scrollbarSize : 0);\n  const initialFreeSpace = Math.max(availableWidth - widthAllocatedBeforeFlex, 0);\n\n  // Allocate the remaining space to the flex columns\n  if (totalFlexUnits > 0 && availableWidth > 0) {\n    const computedColumnWidths = computeFlexColumnsWidth({\n      initialFreeSpace,\n      totalFlexUnits,\n      flexColumns\n    });\n    Object.keys(computedColumnWidths).forEach(field => {\n      columnsLookup[field].computedWidth = computedColumnWidths[field].computedWidth;\n    });\n  }\n  return _extends({}, rawState, {\n    lookup: columnsLookup\n  });\n};\n\n/**\n * Apply the order and the dimensions of the initial state.\n * The columns not registered in `orderedFields` will be placed after the imported columns.\n */\nexport const applyInitialState = (columnsState, initialState) => {\n  if (!initialState) {\n    return columnsState;\n  }\n  const {\n    orderedFields = [],\n    dimensions = {}\n  } = initialState;\n  const columnsWithUpdatedDimensions = Object.keys(dimensions);\n  if (columnsWithUpdatedDimensions.length === 0 && orderedFields.length === 0) {\n    return columnsState;\n  }\n  const orderedFieldsLookup = {};\n  const cleanOrderedFields = [];\n  for (let i = 0; i < orderedFields.length; i += 1) {\n    const field = orderedFields[i];\n\n    // Ignores the fields in the initialState that matches no field on the current column state\n    if (columnsState.lookup[field]) {\n      orderedFieldsLookup[field] = true;\n      cleanOrderedFields.push(field);\n    }\n  }\n  const newOrderedFields = cleanOrderedFields.length === 0 ? columnsState.orderedFields : [...cleanOrderedFields, ...columnsState.orderedFields.filter(field => !orderedFieldsLookup[field])];\n  const newColumnLookup = _extends({}, columnsState.lookup);\n  for (let i = 0; i < columnsWithUpdatedDimensions.length; i += 1) {\n    const field = columnsWithUpdatedDimensions[i];\n    const newColDef = _extends({}, newColumnLookup[field], {\n      hasBeenResized: true\n    });\n    Object.entries(dimensions[field]).forEach(([key, value]) => {\n      newColDef[key] = value === -1 ? Infinity : value;\n    });\n    newColumnLookup[field] = newColDef;\n  }\n  const newColumnsState = _extends({}, columnsState, {\n    orderedFields: newOrderedFields,\n    lookup: newColumnLookup\n  });\n  return newColumnsState;\n};\nfunction getDefaultColTypeDef(type) {\n  let colDef = COLUMN_TYPES[DEFAULT_GRID_COL_TYPE_KEY];\n  if (type && COLUMN_TYPES[type]) {\n    colDef = COLUMN_TYPES[type];\n  }\n  return colDef;\n}\nexport const createColumnsState = ({\n  apiRef,\n  columnsToUpsert,\n  initialState,\n  columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef),\n  keepOnlyColumnsToUpsert = false\n}) => {\n  const isInsideStateInitializer = !apiRef.current.state.columns;\n  let columnsState;\n  if (isInsideStateInitializer) {\n    columnsState = {\n      orderedFields: [],\n      lookup: {},\n      columnVisibilityModel\n    };\n  } else {\n    const currentState = gridColumnsStateSelector(apiRef.current.state);\n    columnsState = {\n      orderedFields: keepOnlyColumnsToUpsert ? [] : [...currentState.orderedFields],\n      lookup: _extends({}, currentState.lookup),\n      // Will be cleaned later if keepOnlyColumnsToUpsert=true\n      columnVisibilityModel\n    };\n  }\n  let columnsToKeep = {};\n  if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {\n    columnsToKeep = Object.keys(columnsState.lookup).reduce((acc, key) => _extends({}, acc, {\n      [key]: false\n    }), {});\n  }\n  const columnsToUpsertLookup = {};\n  columnsToUpsert.forEach(newColumn => {\n    const {\n      field\n    } = newColumn;\n    columnsToUpsertLookup[field] = true;\n    columnsToKeep[field] = true;\n    let existingState = columnsState.lookup[field];\n    if (existingState == null) {\n      existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {\n        field,\n        hasBeenResized: false\n      });\n      columnsState.orderedFields.push(field);\n    } else if (keepOnlyColumnsToUpsert) {\n      columnsState.orderedFields.push(field);\n    }\n\n    // If the column type has changed - merge the existing state with the default column type definition\n    if (existingState && existingState.type !== newColumn.type) {\n      existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {\n        field\n      });\n    }\n    let hasBeenResized = existingState.hasBeenResized;\n    COLUMNS_DIMENSION_PROPERTIES.forEach(key => {\n      if (newColumn[key] !== undefined) {\n        hasBeenResized = true;\n        if (newColumn[key] === -1) {\n          newColumn[key] = Infinity;\n        }\n      }\n    });\n    columnsState.lookup[field] = _extends({}, existingState, newColumn, {\n      hasBeenResized\n    });\n  });\n  if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {\n    Object.keys(columnsState.lookup).forEach(field => {\n      if (!columnsToKeep[field]) {\n        delete columnsState.lookup[field];\n      }\n    });\n  }\n  const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsState);\n  const columnsStateWithPortableColumns = applyInitialState(columnsStateWithPreProcessing, initialState);\n  return hydrateColumnsWidth(columnsStateWithPortableColumns, apiRef.current.getRootDimensions?.() ?? undefined);\n};\nexport function getFirstNonSpannedColumnToRender({\n  firstColumnToRender,\n  apiRef,\n  firstRowToRender,\n  lastRowToRender,\n  visibleRows\n}) {\n  let firstNonSpannedColumnToRender = firstColumnToRender;\n  for (let i = firstRowToRender; i < lastRowToRender; i += 1) {\n    const row = visibleRows[i];\n    if (row) {\n      const rowId = visibleRows[i].id;\n      const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);\n      if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {\n        firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;\n      }\n    }\n  }\n  return firstNonSpannedColumnToRender;\n}\nexport function getTotalHeaderHeight(apiRef, props) {\n  const densityFactor = gridDensityFactorSelector(apiRef);\n  const maxDepth = gridColumnGroupsHeaderMaxDepthSelector(apiRef);\n  const isHeaderFilteringEnabled = gridHeaderFilteringEnabledSelector(apiRef);\n  const columnHeadersHeight = Math.floor(props.columnHeaderHeight * densityFactor);\n  const filterHeadersHeight = isHeaderFilteringEnabled ? Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor) : 0;\n  return columnHeadersHeight * (1 + (maxDepth ?? 0)) + filterHeadersHeight;\n}","import { createSelector } from \"../../../utils/createSelector.js\";\nexport const COMPACT_DENSITY_FACTOR = 0.7;\nexport const COMFORTABLE_DENSITY_FACTOR = 1.3;\nconst DENSITY_FACTORS = {\n  compact: COMPACT_DENSITY_FACTOR,\n  comfortable: COMFORTABLE_DENSITY_FACTOR,\n  standard: 1\n};\nexport const gridDensitySelector = state => state.density;\nexport const gridDensityFactorSelector = createSelector(gridDensitySelector, density => DENSITY_FACTORS[density]);","export const gridDimensionsSelector = state => state.dimensions;","/**\n * Select the row editing state.\n */\nexport const gridEditRowsStateSelector = state => state.editRows;","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nimport { gridSortedRowEntriesSelector } from \"../sorting/gridSortingSelector.js\";\nimport { gridColumnLookupSelector } from \"../columns/gridColumnsSelector.js\";\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from \"../rows/gridRowsSelector.js\";\n\n/**\n * @category Filtering\n */\nconst gridFilterStateSelector = state => state.filter;\n\n/**\n * Get the current filter model.\n * @category Filtering\n */\nexport const gridFilterModelSelector = createSelector(gridFilterStateSelector, filterState => filterState.filterModel);\n\n/**\n * Get the current quick filter values.\n * @category Filtering\n */\nexport const gridQuickFilterValuesSelector = createSelector(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);\n\n/**\n * @category Visible rows\n * @ignore - do not document.\n */\nexport const gridVisibleRowsLookupSelector = state => state.visibleRowsLookup;\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredRowsLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredRowsLookup);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredChildrenCountLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredChildrenCountLookup);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredDescendantCountLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredDescendantCountLookup);\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowEntriesSelector = createSelectorMemoized(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, visibleSortedRowEntries => visibleSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowEntriesSelector = createSelectorMemoized(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowIdsSelector = createSelectorMemoized(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.map(row => row.id));\n\n/**\n * Get the ids to position in the current tree level lookup of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridExpandedSortedRowTreeLevelPositionLookupSelector = createSelectorMemoized(gridExpandedSortedRowIdsSelector, gridRowTreeSelector, (visibleSortedRowIds, rowTree) => {\n  const depthPositionCounter = {};\n  let lastDepth = 0;\n  return visibleSortedRowIds.reduce((acc, rowId) => {\n    const rowNode = rowTree[rowId];\n    if (!depthPositionCounter[rowNode.depth]) {\n      depthPositionCounter[rowNode.depth] = 0;\n    }\n\n    // going deeper in the tree should reset the counter\n    // since it might have been used in some other branch at the same level, up in the tree\n    // going back up should keep the counter and continue where it left off\n    if (rowNode.depth > lastDepth) {\n      depthPositionCounter[rowNode.depth] = 0;\n    }\n    lastDepth = rowNode.depth;\n    depthPositionCounter[rowNode.depth] += 1;\n    acc[rowId] = depthPositionCounter[rowNode.depth];\n    return acc;\n  }, {});\n});\n\n/**\n * Get the id and the model of the top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredSortedTopLevelRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {\n  if (rowTreeDepth < 2) {\n    return visibleSortedRows;\n  }\n  return visibleSortedRows.filter(row => rowTree[row.id]?.depth === 0);\n});\n\n/**\n * Get the amount of rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridExpandedRowCountSelector = createSelector(gridExpandedSortedRowEntriesSelector, visibleSortedRows => visibleSortedRows.length);\n\n/**\n * Get the amount of top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredTopLevelRowCountSelector = createSelector(gridFilteredSortedTopLevelRowEntriesSelector, visibleSortedTopLevelRows => visibleSortedTopLevelRows.length);\n\n/**\n * Get the amount of rows accessible after the filtering process.\n * Includes top level and descendant rows.\n * @category Filtering\n */\nexport const gridFilteredRowCountSelector = createSelector(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.length);\n\n/**\n * Get the amount of descendant rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredDescendantRowCountSelector = createSelector(gridFilteredRowCountSelector, gridFilteredTopLevelRowCountSelector, (totalRowCount, topLevelRowCount) => totalRowCount - topLevelRowCount);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsSelector = createSelectorMemoized(gridFilterModelSelector, gridColumnLookupSelector, (filterModel, columnLookup) => filterModel.items?.filter(item => {\n  if (!item.field) {\n    return false;\n  }\n  const column = columnLookup[item.field];\n  if (!column?.filterOperators || column?.filterOperators?.length === 0) {\n    return false;\n  }\n  const filterOperator = column.filterOperators.find(operator => operator.value === item.operator);\n  if (!filterOperator) {\n    return false;\n  }\n  return !filterOperator.InputComponent || item.value != null && item.value?.toString() !== '';\n}));\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsLookupSelector = createSelectorMemoized(gridFilterActiveItemsSelector, activeFilters => {\n  const result = activeFilters.reduce((res, filterItem) => {\n    if (!res[filterItem.field]) {\n      res[filterItem.field] = [filterItem];\n    } else {\n      res[filterItem.field].push(filterItem);\n    }\n    return res;\n  }, {});\n  return result;\n});","import { GridLogicOperator } from \"../../../models/gridFilterItem.js\";\nexport const getDefaultGridFilterModel = () => ({\n  items: [],\n  logicOperator: GridLogicOperator.And,\n  quickFilterValues: [],\n  quickFilterLogicOperator: GridLogicOperator.And\n});\n\n/**\n * @param {GridRowId} rowId The id of the row we want to filter.\n * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.\n */\n\n/**\n * Visibility status for each row.\n * A row is visible if it is passing the filters AND if its parents are expanded.\n * If a row is not registered in this lookup, it is visible.\n */","export function getPublicApiRef(apiRef) {\n  return {\n    current: apiRef.current.getPublicApi()\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { GridLogicOperator } from \"../../../models/index.js\";\nimport { getDefaultGridFilterModel } from \"./gridFilterState.js\";\nimport { getPublicApiRef } from \"../../../utils/getPublicApiRef.js\";\nimport { gridColumnFieldsSelector, gridColumnLookupSelector, gridVisibleColumnFieldsSelector } from \"../columns/index.js\";\nlet hasEval;\nfunction getHasEval() {\n  if (hasEval !== undefined) {\n    return hasEval;\n  }\n  try {\n    hasEval = new Function('return true')();\n  } catch (_) {\n    hasEval = false;\n  }\n  return hasEval;\n}\n/**\n * Adds default values to the optional fields of a filter items.\n * @param {GridFilterItem} item The raw filter item.\n * @param {React.MutableRefObject<GridPrivateApiCommunity>} apiRef The API of the grid.\n * @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operator.\n * TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.\n */\nexport const cleanFilterItem = (item, apiRef) => {\n  const cleanItem = _extends({}, item);\n  if (cleanItem.id == null) {\n    cleanItem.id = Math.round(Math.random() * 1e5);\n  }\n  if (cleanItem.operator == null) {\n    // Selects a default operator\n    // We don't use `apiRef.current.getColumn` because it is not ready during state initialization\n    const column = gridColumnLookupSelector(apiRef)[cleanItem.field];\n    cleanItem.operator = column && column.filterOperators[0].value;\n  }\n  return cleanItem;\n};\nexport const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {\n  const hasSeveralItems = model.items.length > 1;\n  let items;\n  if (hasSeveralItems && disableMultipleColumnsFiltering) {\n    if (process.env.NODE_ENV !== 'production') {\n      warnOnce(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\n    }\n    items = [model.items[0]];\n  } else {\n    items = model.items;\n  }\n  const hasItemsWithoutIds = hasSeveralItems && items.some(item => item.id == null);\n  const hasItemWithoutOperator = items.some(item => item.operator == null);\n  if (process.env.NODE_ENV !== 'production') {\n    if (hasItemsWithoutIds) {\n      warnOnce('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (hasItemWithoutOperator) {\n      warnOnce('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');\n    }\n  }\n  if (hasItemWithoutOperator || hasItemsWithoutIds) {\n    return _extends({}, model, {\n      items: items.map(item => cleanFilterItem(item, apiRef))\n    });\n  }\n  if (model.items !== items) {\n    return _extends({}, model, {\n      items\n    });\n  }\n  return model;\n};\nexport const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => _extends({}, filteringState, {\n  filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)\n});\nexport const removeDiacritics = value => {\n  if (typeof value === 'string') {\n    return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n  }\n  return value;\n};\nconst getFilterCallbackFromItem = (filterItem, apiRef) => {\n  if (!filterItem.field || !filterItem.operator) {\n    return null;\n  }\n  const column = apiRef.current.getColumn(filterItem.field);\n  if (!column) {\n    return null;\n  }\n  let parsedValue;\n  if (column.valueParser) {\n    const parser = column.valueParser;\n    parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x, undefined, column, apiRef)) : parser(filterItem.value, undefined, column, apiRef);\n  } else {\n    parsedValue = filterItem.value;\n  }\n  const {\n    ignoreDiacritics\n  } = apiRef.current.rootProps;\n  if (ignoreDiacritics) {\n    parsedValue = removeDiacritics(parsedValue);\n  }\n  const newFilterItem = _extends({}, filterItem, {\n    value: parsedValue\n  });\n  const filterOperators = column.filterOperators;\n  if (!filterOperators?.length) {\n    throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);\n  }\n  const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);\n  if (!filterOperator) {\n    throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);\n  }\n  const publicApiRef = getPublicApiRef(apiRef);\n  const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);\n  if (typeof applyFilterOnRow !== 'function') {\n    return null;\n  }\n  return {\n    item: newFilterItem,\n    fn: row => {\n      let value = apiRef.current.getRowValue(row, column);\n      if (ignoreDiacritics) {\n        value = removeDiacritics(value);\n      }\n      return applyFilterOnRow(value, row, column, publicApiRef);\n    }\n  };\n};\nlet filterItemsApplierId = 1;\n\n/**\n * Generates a method to easily check if a row is matching the current filter model.\n * @param {GridFilterModel} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject<GridPrivateApiCommunity>} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) => {\n  const {\n    items\n  } = filterModel;\n  const appliers = items.map(item => getFilterCallbackFromItem(item, apiRef)).filter(callback => !!callback);\n  if (appliers.length === 0) {\n    return null;\n  }\n  if (disableEval || !getHasEval()) {\n    // This is the original logic, which is used if `eval()` is not supported (aka prevented by CSP).\n    return (row, shouldApplyFilter) => {\n      const resultPerItemId = {};\n      for (let i = 0; i < appliers.length; i += 1) {\n        const applier = appliers[i];\n        if (!shouldApplyFilter || shouldApplyFilter(applier.item.field)) {\n          resultPerItemId[applier.item.id] = applier.fn(row);\n        }\n      }\n      return resultPerItemId;\n    };\n  }\n\n  // We generate a new function with `new Function()` to avoid expensive patterns for JS engines\n  // such as a dynamic object assignment, for example `{ [dynamicKey]: value }`.\n  const filterItemCore = new Function('appliers', 'row', 'shouldApplyFilter', `\"use strict\";\n${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\\n')}\n\nconst result$$ = {\n${appliers.map((applier, i) => `  ${JSON.stringify(String(applier.item.id))}: !shouldApply${i} ? false : appliers[${i}].fn(row),`).join('\\n')}\n};\n\nreturn result$$;`.replaceAll('$$', String(filterItemsApplierId)));\n  filterItemsApplierId += 1;\n\n  // Assign to the arrow function a name to help debugging\n  const filterItem = (row, shouldApplyItem) => filterItemCore(appliers, row, shouldApplyItem);\n  return filterItem;\n};\nexport const shouldQuickFilterExcludeHiddenColumns = filterModel => {\n  return filterModel.quickFilterExcludeHiddenColumns ?? true;\n};\n\n/**\n * Generates a method to easily check if a row is matching the current quick filter.\n * @param {any[]} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject<GridPrivateApiCommunity>} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {\n  const quickFilterValues = filterModel.quickFilterValues?.filter(Boolean) ?? [];\n  if (quickFilterValues.length === 0) {\n    return null;\n  }\n  const columnFields = shouldQuickFilterExcludeHiddenColumns(filterModel) ? gridVisibleColumnFieldsSelector(apiRef) : gridColumnFieldsSelector(apiRef);\n  const appliersPerField = [];\n  const {\n    ignoreDiacritics\n  } = apiRef.current.rootProps;\n  const publicApiRef = getPublicApiRef(apiRef);\n  columnFields.forEach(field => {\n    const column = apiRef.current.getColumn(field);\n    const getApplyQuickFilterFn = column?.getApplyQuickFilterFn;\n    if (getApplyQuickFilterFn) {\n      appliersPerField.push({\n        column,\n        appliers: quickFilterValues.map(quickFilterValue => {\n          const value = ignoreDiacritics ? removeDiacritics(quickFilterValue) : quickFilterValue;\n          return {\n            fn: getApplyQuickFilterFn(value, column, publicApiRef)\n          };\n        })\n      });\n    }\n  });\n  return function isRowMatchingQuickFilter(row, shouldApplyFilter) {\n    const result = {};\n\n    /* eslint-disable no-labels */\n    outer: for (let v = 0; v < quickFilterValues.length; v += 1) {\n      const filterValue = quickFilterValues[v];\n      for (let i = 0; i < appliersPerField.length; i += 1) {\n        const {\n          column,\n          appliers\n        } = appliersPerField[i];\n        const {\n          field\n        } = column;\n        if (shouldApplyFilter && !shouldApplyFilter(field)) {\n          continue;\n        }\n        const applier = appliers[v];\n        let value = apiRef.current.getRowValue(row, column);\n        if (applier.fn === null) {\n          continue;\n        }\n        if (ignoreDiacritics) {\n          value = removeDiacritics(value);\n        }\n        const isMatching = applier.fn(value, row, column, publicApiRef);\n        if (isMatching) {\n          result[filterValue] = true;\n          continue outer;\n        }\n      }\n      result[filterValue] = false;\n    }\n    return result;\n  };\n};\nexport const buildAggregatedFilterApplier = (filterModel, apiRef, disableEval) => {\n  const isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef, disableEval);\n  const isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);\n  return function isRowMatchingFilters(row, shouldApplyFilter, result) {\n    result.passingFilterItems = isRowMatchingFilterItems?.(row, shouldApplyFilter) ?? null;\n    result.passingQuickFilterValues = isRowMatchingQuickFilter?.(row, shouldApplyFilter) ?? null;\n  };\n};\nconst isNotNull = result => result != null;\nconst filterModelItems = (cache, apiRef, items) => {\n  if (!cache.cleanedFilterItems) {\n    cache.cleanedFilterItems = items.filter(item => getFilterCallbackFromItem(item, apiRef) !== null);\n  }\n  return cache.cleanedFilterItems;\n};\nexport const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel, apiRef, cache) => {\n  const cleanedFilterItems = filterModelItems(cache, apiRef, filterModel.items);\n  const cleanedFilterItemResults = allFilterItemResults.filter(isNotNull);\n  const cleanedQuickFilterResults = allQuickFilterResults.filter(isNotNull);\n\n  // get result for filter items model\n  if (cleanedFilterItemResults.length > 0) {\n    // Return true if the item pass with one of the rows\n    const filterItemPredicate = item => {\n      return cleanedFilterItemResults.some(filterItemResult => filterItemResult[item.id]);\n    };\n    const logicOperator = filterModel.logicOperator ?? getDefaultGridFilterModel().logicOperator;\n    if (logicOperator === GridLogicOperator.And) {\n      const passesAllFilters = cleanedFilterItems.every(filterItemPredicate);\n      if (!passesAllFilters) {\n        return false;\n      }\n    } else {\n      const passesSomeFilters = cleanedFilterItems.some(filterItemPredicate);\n      if (!passesSomeFilters) {\n        return false;\n      }\n    }\n  }\n\n  // get result for quick filter model\n  if (cleanedQuickFilterResults.length > 0 && filterModel.quickFilterValues != null) {\n    // Return true if the item pass with one of the rows\n    const quickFilterValuePredicate = value => {\n      return cleanedQuickFilterResults.some(quickFilterValueResult => quickFilterValueResult[value]);\n    };\n    const quickFilterLogicOperator = filterModel.quickFilterLogicOperator ?? getDefaultGridFilterModel().quickFilterLogicOperator;\n    if (quickFilterLogicOperator === GridLogicOperator.And) {\n      const passesAllQuickFilterValues = filterModel.quickFilterValues.every(quickFilterValuePredicate);\n      if (!passesAllQuickFilterValues) {\n        return false;\n      }\n    } else {\n      const passesSomeQuickFilterValues = filterModel.quickFilterValues.some(quickFilterValuePredicate);\n      if (!passesSomeQuickFilterValues) {\n        return false;\n      }\n    }\n  }\n  return true;\n};","import { createSelector } from \"../../../utils/createSelector.js\";\nexport const gridFocusStateSelector = state => state.focus;\nexport const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);\nexport const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);\nexport const gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);\nexport const gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);\nexport const gridTabIndexStateSelector = state => state.tabIndex;\nexport const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);\nexport const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);\nexport const gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);\nexport const gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);","import { createSelector } from \"../../../utils/createSelector.js\";\nexport const gridHeaderFilteringStateSelector = state => state.headerFiltering;\nexport const gridHeaderFilteringEnabledSelector = createSelector(gridHeaderFilteringStateSelector,\n// No initialization in MIT, so we need to default to false to be used by `getTotalHeaderHeight`\nheaderFilteringState => headerFilteringState?.enabled ?? false);\nexport const gridHeaderFilteringEditFieldSelector = createSelector(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);\nexport const gridHeaderFilteringMenuSelector = createSelector(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nimport { gridExpandedSortedRowEntriesSelector, gridExpandedSortedRowIdsSelector, gridFilteredSortedTopLevelRowEntriesSelector } from \"../filter/gridFilterSelector.js\";\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from \"../rows/gridRowsSelector.js\";\nimport { getPageCount } from \"./gridPaginationUtils.js\";\n\n/**\n * @category Pagination\n * @ignore - do not document.\n */\nexport const gridPaginationSelector = state => state.pagination;\n\n/**\n * Get the pagination model\n * @category Pagination\n */\nexport const gridPaginationModelSelector = createSelector(gridPaginationSelector, pagination => pagination.paginationModel);\n\n/**\n * Get the row count\n * @category Pagination\n */\nexport const gridPaginationRowCountSelector = createSelector(gridPaginationSelector, pagination => pagination.rowCount);\n\n/**\n * Get the pagination meta\n * @category Pagination\n */\nexport const gridPaginationMetaSelector = createSelector(gridPaginationSelector, pagination => pagination.meta);\n\n/**\n * Get the index of the page to render if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.page);\n\n/**\n * Get the maximum amount of rows to display on a single page if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSizeSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.pageSize);\n\n/**\n * Get the amount of pages needed to display all the rows if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageCountSelector = createSelector(gridPaginationModelSelector, gridPaginationRowCountSelector, (paginationModel, rowCount) => getPageCount(rowCount, paginationModel.pageSize, paginationModel.page));\n\n/**\n * Get the index of the first and the last row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginationRowRangeSelector = createSelectorMemoized(gridPaginationModelSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, gridExpandedSortedRowEntriesSelector, gridFilteredSortedTopLevelRowEntriesSelector, (paginationModel, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {\n  const visibleTopLevelRowCount = visibleSortedTopLevelRowEntries.length;\n  const topLevelFirstRowIndex = Math.min(paginationModel.pageSize * paginationModel.page, visibleTopLevelRowCount - 1);\n  const topLevelLastRowIndex = Math.min(topLevelFirstRowIndex + paginationModel.pageSize - 1, visibleTopLevelRowCount - 1);\n\n  // The range contains no element\n  if (topLevelFirstRowIndex === -1 || topLevelLastRowIndex === -1) {\n    return null;\n  }\n\n  // The tree is flat, there is no need to look for children\n  if (rowTreeDepth < 2) {\n    return {\n      firstRowIndex: topLevelFirstRowIndex,\n      lastRowIndex: topLevelLastRowIndex\n    };\n  }\n  const topLevelFirstRow = visibleSortedTopLevelRowEntries[topLevelFirstRowIndex];\n  const topLevelRowsInCurrentPageCount = topLevelLastRowIndex - topLevelFirstRowIndex + 1;\n  const firstRowIndex = visibleSortedRowEntries.findIndex(row => row.id === topLevelFirstRow.id);\n  let lastRowIndex = firstRowIndex;\n  let topLevelRowAdded = 0;\n  while (lastRowIndex < visibleSortedRowEntries.length && topLevelRowAdded <= topLevelRowsInCurrentPageCount) {\n    const row = visibleSortedRowEntries[lastRowIndex];\n    const depth = rowTree[row.id]?.depth;\n    if (depth === undefined) {\n      lastRowIndex += 1;\n    } else {\n      if (topLevelRowAdded < topLevelRowsInCurrentPageCount || depth > 0) {\n        lastRowIndex += 1;\n      }\n      if (depth === 0) {\n        topLevelRowAdded += 1;\n      }\n    }\n  }\n  return {\n    firstRowIndex,\n    lastRowIndex: lastRowIndex - 1\n  };\n});\n\n/**\n * Get the id and the model of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridPaginationRowRangeSelector, (visibleSortedRowEntries, paginationRange) => {\n  if (!paginationRange) {\n    return [];\n  }\n  return visibleSortedRowEntries.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});\n\n/**\n * Get the id of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowIdsSelector, gridPaginationRowRangeSelector, (visibleSortedRowIds, paginationRange) => {\n  if (!paginationRange) {\n    return [];\n  }\n  return visibleSortedRowIds.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});","import { GridSignature } from \"../../utils/index.js\";\nconst MAX_PAGE_SIZE = 100;\nexport const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;\nexport const getPageCount = (rowCount, pageSize, page) => {\n  if (pageSize > 0 && rowCount > 0) {\n    return Math.ceil(rowCount / pageSize);\n  }\n  if (rowCount === -1) {\n    // With unknown row-count, we can assume a page after the current one\n    return page + 2;\n  }\n  return 0;\n};\nexport const getDefaultGridPaginationModel = autoPageSize => ({\n  page: 0,\n  pageSize: autoPageSize ? 0 : 100\n});\nexport const getValidPage = (page, pageCount = 0) => {\n  if (pageCount === 0) {\n    return page;\n  }\n  return Math.max(Math.min(page, pageCount - 1), 0);\n};\nexport const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {\n  if (signatureProp === GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {\n    throw new Error(['MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n  }\n};","export const gridPreferencePanelStateSelector = state => state.preferencePanel;","var GridPreferencePanelsValue = /*#__PURE__*/function (GridPreferencePanelsValue) {\n  GridPreferencePanelsValue[\"filters\"] = \"filters\";\n  GridPreferencePanelsValue[\"columns\"] = \"columns\";\n  return GridPreferencePanelsValue;\n}(GridPreferencePanelsValue || {});\nexport { GridPreferencePanelsValue };","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nimport { gridRowsLookupSelector } from \"../rows/gridRowsSelector.js\";\nexport const gridRowSelectionStateSelector = state => state.rowSelection;\nexport const selectedGridRowsCountSelector = createSelector(gridRowSelectionStateSelector, selection => selection.length);\nexport const selectedGridRowsSelector = createSelectorMemoized(gridRowSelectionStateSelector, gridRowsLookupSelector, (selectedRows, rowsLookup) => new Map(selectedRows.map(id => [id, rowsLookup[id]])));\nexport const selectedIdsLookupSelector = createSelectorMemoized(gridRowSelectionStateSelector, selection => selection.reduce((lookup, rowId) => {\n  lookup[rowId] = rowId;\n  return lookup;\n}, {}));","import { GridSignature } from \"../../utils/useGridApiEventHandler.js\";\nexport function isMultipleRowSelectionEnabled(props) {\n  if (props.signature === GridSignature.DataGrid) {\n    // DataGrid Community has multiple row selection enabled only if checkbox selection is enabled.\n    return props.checkboxSelection && props.disableMultipleRowSelection !== true;\n  }\n  return !props.disableMultipleRowSelection;\n}","import { createSelector } from \"../../../utils/createSelector.js\";\nconst gridRowSpanningStateSelector = state => state.rowSpanning;\nexport const gridRowSpanningHiddenCellsSelector = createSelector(gridRowSpanningStateSelector, rowSpanning => rowSpanning.hiddenCells);\nexport const gridRowSpanningSpannedCellsSelector = createSelector(gridRowSpanningStateSelector, rowSpanning => rowSpanning.spannedCells);\nexport const gridRowSpanningHiddenCellsOriginMapSelector = createSelector(gridRowSpanningStateSelector, rowSpanning => rowSpanning.hiddenCellOriginMap);","export const gridRowsMetaSelector = state => state.rowsMeta;","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nconst gridRowsStateSelector = state => state.rows;\nexport const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);\nexport const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);\nexport const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);\n\n// TODO rows v6: Rename\nexport const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);\nexport const gridRowsDataRowIdToIdLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToIdLookup);\nexport const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);\nexport const gridRowGroupsToFetchSelector = createSelector(gridRowsStateSelector, rows => rows.groupsToFetch);\nexport const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);\nexport const gridRowTreeDepthsSelector = createSelector(gridRowsStateSelector, rows => rows.treeDepths);\nexport const gridRowMaximumTreeDepthSelector = createSelectorMemoized(gridRowsStateSelector, rows => {\n  const entries = Object.entries(rows.treeDepths);\n  if (entries.length === 0) {\n    return 1;\n  }\n  return entries.filter(([, nodeCount]) => nodeCount > 0).map(([depth]) => Number(depth)).sort((a, b) => b - a)[0] + 1;\n});\nexport const gridDataRowIdsSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIds);\n\n/**\n * @ignore - do not document.\n */\nexport const gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelector, rows => rows?.additionalRowGroups);\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGroupsSelector, additionalRowGroups => {\n  const rawPinnedRows = additionalRowGroups?.pinnedRows;\n  return {\n    bottom: rawPinnedRows?.bottom?.map(rowEntry => ({\n      id: rowEntry.id,\n      model: rowEntry.model ?? {}\n    })) ?? [],\n    top: rawPinnedRows?.top?.map(rowEntry => ({\n      id: rowEntry.id,\n      model: rowEntry.model ?? {}\n    })) ?? []\n  };\n});\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsCountSelector = createSelector(gridPinnedRowsSelector, pinnedRows => {\n  return (pinnedRows?.top?.length || 0) + (pinnedRows?.bottom?.length || 0);\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridPinnedRowsSelector } from \"./gridRowsSelector.js\";\nimport { gridDimensionsSelector } from \"../dimensions/gridDimensionsSelectors.js\";\nexport const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;\nexport const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');\nexport const buildRootGroup = () => ({\n  type: 'group',\n  id: GRID_ROOT_GROUP_ID,\n  depth: -1,\n  groupingField: null,\n  groupingKey: null,\n  isAutoGenerated: true,\n  children: [],\n  childrenFromPath: {},\n  childrenExpanded: true,\n  parent: null\n});\n\n/**\n * A helper function to check if the id provided is valid.\n * @param {GridRowId} id Id as [[GridRowId]].\n * @param {GridRowModel | Partial<GridRowModel>} row Row as [[GridRowModel]].\n * @param {string} detailErrorMessage A custom error message to display for invalid IDs\n */\nexport function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {\n  if (id == null) {\n    throw new Error(['MUI X: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\\n'));\n  }\n}\nexport const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {\n  const id = getRowId ? getRowId(rowModel) : rowModel.id;\n  checkGridRowIdIsValid(id, rowModel, detailErrorMessage);\n  return id;\n};\nexport const createRowsInternalCache = ({\n  rows,\n  getRowId,\n  loading,\n  rowCount\n}) => {\n  const updates = {\n    type: 'full',\n    rows: []\n  };\n  const dataRowIdToModelLookup = {};\n  const dataRowIdToIdLookup = {};\n  for (let i = 0; i < rows.length; i += 1) {\n    const model = rows[i];\n    const id = getRowIdFromRowModel(model, getRowId);\n    dataRowIdToModelLookup[id] = model;\n    dataRowIdToIdLookup[id] = id;\n    updates.rows.push(id);\n  }\n  return {\n    rowsBeforePartialUpdates: rows,\n    loadingPropBeforePartialUpdates: loading,\n    rowCountPropBeforePartialUpdates: rowCount,\n    updates,\n    dataRowIdToIdLookup,\n    dataRowIdToModelLookup\n  };\n};\nexport const getTopLevelRowCount = ({\n  tree,\n  rowCountProp = 0\n}) => {\n  const rootGroupNode = tree[GRID_ROOT_GROUP_ID];\n  return Math.max(rowCountProp, rootGroupNode.children.length + (rootGroupNode.footerId == null ? 0 : 1));\n};\nexport const getRowsStateFromCache = ({\n  apiRef,\n  rowCountProp = 0,\n  loadingProp,\n  previousTree,\n  previousTreeDepths,\n  previousGroupsToFetch\n}) => {\n  const cache = apiRef.current.caches.rows;\n\n  // 1. Apply the \"rowTreeCreation\" family processing.\n  const {\n    tree: unProcessedTree,\n    treeDepths: unProcessedTreeDepths,\n    dataRowIds: unProcessedDataRowIds,\n    groupingName,\n    groupsToFetch = []\n  } = apiRef.current.applyStrategyProcessor('rowTreeCreation', {\n    previousTree,\n    previousTreeDepths,\n    updates: cache.updates,\n    dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n    dataRowIdToModelLookup: cache.dataRowIdToModelLookup,\n    previousGroupsToFetch\n  });\n\n  // 2. Apply the \"hydrateRows\" pipe-processing.\n  const groupingParamsWithHydrateRows = apiRef.current.unstable_applyPipeProcessors('hydrateRows', {\n    tree: unProcessedTree,\n    treeDepths: unProcessedTreeDepths,\n    dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n    dataRowIds: unProcessedDataRowIds,\n    dataRowIdToModelLookup: cache.dataRowIdToModelLookup\n  });\n\n  // 3. Reset the cache updates\n  apiRef.current.caches.rows.updates = {\n    type: 'partial',\n    actions: {\n      insert: [],\n      modify: [],\n      remove: []\n    },\n    idToActionLookup: {}\n  };\n  return _extends({}, groupingParamsWithHydrateRows, {\n    totalRowCount: Math.max(rowCountProp, groupingParamsWithHydrateRows.dataRowIds.length),\n    totalTopLevelRowCount: getTopLevelRowCount({\n      tree: groupingParamsWithHydrateRows.tree,\n      rowCountProp\n    }),\n    groupingName,\n    loading: loadingProp,\n    groupsToFetch\n  });\n};\nexport const isAutogeneratedRow = row => GRID_ID_AUTOGENERATED in row;\nexport const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;\nexport const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {\n  const node = tree[parentId];\n  if (node.type !== 'group') {\n    return [];\n  }\n  const validDescendants = [];\n  for (let i = 0; i < node.children.length; i += 1) {\n    const child = node.children[i];\n    if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[child])) {\n      validDescendants.push(child);\n    }\n    const childDescendants = getTreeNodeDescendants(tree, child, skipAutoGeneratedRows);\n    for (let j = 0; j < childDescendants.length; j += 1) {\n      validDescendants.push(childDescendants[j]);\n    }\n  }\n  if (!skipAutoGeneratedRows && node.footerId != null) {\n    validDescendants.push(node.footerId);\n  }\n  return validDescendants;\n};\nexport const updateCacheWithNewRows = ({\n  previousCache,\n  getRowId,\n  updates,\n  groupKeys\n}) => {\n  if (previousCache.updates.type === 'full') {\n    throw new Error('MUI X: Unable to prepare a partial update if a full update is not applied yet.');\n  }\n\n  // Remove duplicate updates.\n  // A server can batch updates, and send several updates for the same row in one fn call.\n  const uniqueUpdates = new Map();\n  updates.forEach(update => {\n    const id = getRowIdFromRowModel(update, getRowId, 'A row was provided without id when calling updateRows():');\n    if (uniqueUpdates.has(id)) {\n      uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));\n    } else {\n      uniqueUpdates.set(id, update);\n    }\n  });\n  const partialUpdates = {\n    type: 'partial',\n    actions: {\n      insert: [...(previousCache.updates.actions.insert ?? [])],\n      modify: [...(previousCache.updates.actions.modify ?? [])],\n      remove: [...(previousCache.updates.actions.remove ?? [])]\n    },\n    idToActionLookup: _extends({}, previousCache.updates.idToActionLookup),\n    groupKeys\n  };\n  const dataRowIdToModelLookup = _extends({}, previousCache.dataRowIdToModelLookup);\n  const dataRowIdToIdLookup = _extends({}, previousCache.dataRowIdToIdLookup);\n  const alreadyAppliedActionsToRemove = {\n    insert: {},\n    modify: {},\n    remove: {}\n  };\n\n  // Depending on the action already applied to the data row,\n  // We might want drop the already-applied-update.\n  // For instance:\n  // - if you delete then insert, then you don't want to apply the deletion in the tree.\n  // - if you insert, then modify, then you just want to apply the insertion in the tree.\n  uniqueUpdates.forEach((partialRow, id) => {\n    const actionAlreadyAppliedToRow = partialUpdates.idToActionLookup[id];\n\n    // Action === \"delete\"\n    // eslint-disable-next-line no-underscore-dangle\n    if (partialRow._action === 'delete') {\n      // If the data row has been removed since the last state update,\n      // Then do nothing.\n      if (actionAlreadyAppliedToRow === 'remove' || !dataRowIdToModelLookup[id]) {\n        return;\n      }\n\n      // If the data row has been inserted / modified since the last state update,\n      // Then drop this \"insert\" / \"modify\" update.\n      if (actionAlreadyAppliedToRow != null) {\n        alreadyAppliedActionsToRemove[actionAlreadyAppliedToRow][id] = true;\n      }\n\n      // Remove the data row from the lookups and add it to the \"delete\" update.\n      partialUpdates.actions.remove.push(id);\n      delete dataRowIdToModelLookup[id];\n      delete dataRowIdToIdLookup[id];\n      return;\n    }\n    const oldRow = dataRowIdToModelLookup[id];\n\n    // Action === \"modify\"\n    if (oldRow) {\n      // If the data row has been removed since the last state update,\n      // Then drop this \"remove\" update and add it to the \"modify\" update instead.\n      if (actionAlreadyAppliedToRow === 'remove') {\n        alreadyAppliedActionsToRemove.remove[id] = true;\n        partialUpdates.actions.modify.push(id);\n      }\n      // If the date has not been inserted / modified since the last state update,\n      // Then add it to the \"modify\" update (if it has been inserted it should just remain \"inserted\").\n      else if (actionAlreadyAppliedToRow == null) {\n        partialUpdates.actions.modify.push(id);\n      }\n\n      // Update the data row lookups.\n      dataRowIdToModelLookup[id] = _extends({}, oldRow, partialRow);\n      return;\n    }\n\n    // Action === \"insert\"\n    // If the data row has been removed since the last state update,\n    // Then drop the \"remove\" update and add it to the \"insert\" update instead.\n    if (actionAlreadyAppliedToRow === 'remove') {\n      alreadyAppliedActionsToRemove.remove[id] = true;\n      partialUpdates.actions.insert.push(id);\n    }\n    // If the data row has not been inserted since the last state update,\n    // Then add it to the \"insert\" update.\n    // `actionAlreadyAppliedToRow` can't be equal to \"modify\", otherwise we would have an `oldRow` above.\n    else if (actionAlreadyAppliedToRow == null) {\n      partialUpdates.actions.insert.push(id);\n    }\n\n    // Update the data row lookups.\n    dataRowIdToModelLookup[id] = partialRow;\n    dataRowIdToIdLookup[id] = id;\n  });\n  const actionTypeWithActionsToRemove = Object.keys(alreadyAppliedActionsToRemove);\n  for (let i = 0; i < actionTypeWithActionsToRemove.length; i += 1) {\n    const actionType = actionTypeWithActionsToRemove[i];\n    const idsToRemove = alreadyAppliedActionsToRemove[actionType];\n    if (Object.keys(idsToRemove).length > 0) {\n      partialUpdates.actions[actionType] = partialUpdates.actions[actionType].filter(id => !idsToRemove[id]);\n    }\n  }\n  return {\n    dataRowIdToModelLookup,\n    dataRowIdToIdLookup,\n    updates: partialUpdates,\n    rowsBeforePartialUpdates: previousCache.rowsBeforePartialUpdates,\n    loadingPropBeforePartialUpdates: previousCache.loadingPropBeforePartialUpdates,\n    rowCountPropBeforePartialUpdates: previousCache.rowCountPropBeforePartialUpdates\n  };\n};\nexport function calculatePinnedRowsHeight(apiRef) {\n  const pinnedRows = gridPinnedRowsSelector(apiRef);\n  const topPinnedRowsHeight = pinnedRows?.top?.reduce((acc, value) => {\n    acc += apiRef.current.unstable_getRowHeight(value.id);\n    return acc;\n  }, 0) || 0;\n  const bottomPinnedRowsHeight = pinnedRows?.bottom?.reduce((acc, value) => {\n    acc += apiRef.current.unstable_getRowHeight(value.id);\n    return acc;\n  }, 0) || 0;\n  return {\n    top: topPinnedRowsHeight,\n    bottom: bottomPinnedRowsHeight\n  };\n}\nexport function getMinimalContentHeight(apiRef) {\n  const dimensions = gridDimensionsSelector(apiRef.current.state);\n  return `var(--DataGrid-overlayHeight, ${2 * dimensions.rowHeight}px)`;\n}\nexport function computeRowsUpdates(apiRef, updates, getRowId) {\n  const nonPinnedRowsUpdates = [];\n  updates.forEach(update => {\n    const id = getRowIdFromRowModel(update, getRowId, 'A row was provided without id when calling updateRows():');\n    const rowNode = apiRef.current.getRowNode(id);\n    if (rowNode?.type === 'pinnedRow') {\n      // @ts-ignore because otherwise `release:build` doesn't work\n      const pinnedRowsCache = apiRef.current.caches.pinnedRows;\n      const prevModel = pinnedRowsCache.idLookup[id];\n      if (prevModel) {\n        pinnedRowsCache.idLookup[id] = _extends({}, prevModel, update);\n      }\n    } else {\n      nonPinnedRowsUpdates.push(update);\n    }\n  });\n  return nonPinnedRowsUpdates;\n}","import * as React from 'react';\nimport { getGridCellElement, getGridColumnHeaderElement, getGridRowElement } from \"../../../utils/domUtils.js\";\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nimport { gridFocusCellSelector, gridTabIndexCellSelector } from \"../focus/gridFocusStateSelector.js\";\nexport class MissingRowIdError extends Error {}\n\n/**\n * @requires useGridColumns (method)\n * @requires useGridRows (method)\n * @requires useGridFocus (state)\n * @requires useGridEditing (method)\n * TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi\n * TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi\n */\nexport function useGridParamsApi(apiRef) {\n  const getColumnHeaderParams = React.useCallback(field => ({\n    field,\n    colDef: apiRef.current.getColumn(field)\n  }), [apiRef]);\n  const getRowParams = React.useCallback(id => {\n    const row = apiRef.current.getRow(id);\n    if (!row) {\n      throw new MissingRowIdError(`No row with id #${id} found`);\n    }\n    const params = {\n      id,\n      columns: apiRef.current.getAllColumns(),\n      row\n    };\n    return params;\n  }, [apiRef]);\n  const getCellParams = React.useCallback((id, field) => {\n    const colDef = apiRef.current.getColumn(field);\n    const row = apiRef.current.getRow(id);\n    const rowNode = apiRef.current.getRowNode(id);\n    if (!row || !rowNode) {\n      throw new MissingRowIdError(`No row with id #${id} found`);\n    }\n    const rawValue = row[field];\n    const value = colDef?.valueGetter ? colDef.valueGetter(rawValue, row, colDef, apiRef) : rawValue;\n    const cellFocus = gridFocusCellSelector(apiRef);\n    const cellTabIndex = gridTabIndexCellSelector(apiRef);\n    const params = {\n      id,\n      field,\n      row,\n      rowNode,\n      colDef,\n      cellMode: apiRef.current.getCellMode(id, field),\n      hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,\n      tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1,\n      value,\n      formattedValue: value,\n      isEditable: false,\n      api: {}\n    };\n    if (colDef && colDef.valueFormatter) {\n      params.formattedValue = colDef.valueFormatter(value, row, colDef, apiRef);\n    }\n    params.isEditable = colDef && apiRef.current.isCellEditable(params);\n    return params;\n  }, [apiRef]);\n  const getCellValue = React.useCallback((id, field) => {\n    const colDef = apiRef.current.getColumn(field);\n    const row = apiRef.current.getRow(id);\n    if (!row) {\n      throw new MissingRowIdError(`No row with id #${id} found`);\n    }\n    if (!colDef || !colDef.valueGetter) {\n      return row[field];\n    }\n    return colDef.valueGetter(row[colDef.field], row, colDef, apiRef);\n  }, [apiRef]);\n  const getRowValue = React.useCallback((row, colDef) => {\n    const field = colDef.field;\n    if (!colDef || !colDef.valueGetter) {\n      return row[field];\n    }\n    const value = row[colDef.field];\n    return colDef.valueGetter(value, row, colDef, apiRef);\n  }, [apiRef]);\n  const getRowFormattedValue = React.useCallback((row, colDef) => {\n    const value = getRowValue(row, colDef);\n    if (!colDef || !colDef.valueFormatter) {\n      return value;\n    }\n    return colDef.valueFormatter(value, row, colDef, apiRef);\n  }, [apiRef, getRowValue]);\n  const getColumnHeaderElement = React.useCallback(field => {\n    if (!apiRef.current.rootElementRef.current) {\n      return null;\n    }\n    return getGridColumnHeaderElement(apiRef.current.rootElementRef.current, field);\n  }, [apiRef]);\n  const getRowElement = React.useCallback(id => {\n    if (!apiRef.current.rootElementRef.current) {\n      return null;\n    }\n    return getGridRowElement(apiRef.current.rootElementRef.current, id);\n  }, [apiRef]);\n  const getCellElement = React.useCallback((id, field) => {\n    if (!apiRef.current.rootElementRef.current) {\n      return null;\n    }\n    return getGridCellElement(apiRef.current.rootElementRef.current, {\n      id,\n      field\n    });\n  }, [apiRef]);\n  const paramsApi = {\n    getCellValue,\n    getCellParams,\n    getCellElement,\n    getRowValue,\n    getRowFormattedValue,\n    getRowParams,\n    getRowElement,\n    getColumnHeaderParams,\n    getColumnHeaderElement\n  };\n  useGridApiMethod(apiRef, paramsApi, 'public');\n}","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\nimport { gridRowTreeSelector, gridRowsLookupSelector } from \"../rows/gridRowsSelector.js\";\nimport { GRID_ID_AUTOGENERATED, isAutogeneratedRowNode } from \"../rows/gridRowsUtils.js\";\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nconst gridSortingStateSelector = state => state.sorting;\n\n/**\n * Get the id of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowIdsSelector = createSelector(gridSortingStateSelector, sortingState => sortingState.sortedRows);\n\n/**\n * Get the id and the model of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowEntriesSelector = createSelectorMemoized(gridSortedRowIdsSelector, gridRowsLookupSelector, gridRowTreeSelector, (sortedIds, idRowsLookup, rowTree) => sortedIds.reduce((acc, id) => {\n  const model = idRowsLookup[id];\n  if (model) {\n    acc.push({\n      id,\n      model\n    });\n  }\n  const rowNode = rowTree[id];\n  if (rowNode && isAutogeneratedRowNode(rowNode)) {\n    acc.push({\n      id,\n      model: {\n        [GRID_ID_AUTOGENERATED]: id\n      }\n    });\n  }\n  return acc;\n}, []));\n\n/**\n * Get the current sorting model.\n * @category Sorting\n */\nexport const gridSortModelSelector = createSelector(gridSortingStateSelector, sorting => sorting.sortModel);\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nexport const gridSortColumnLookupSelector = createSelectorMemoized(gridSortModelSelector, sortModel => {\n  const result = sortModel.reduce((res, sortItem, index) => {\n    res[sortItem.field] = {\n      sortDirection: sortItem.sort,\n      sortIndex: sortModel.length > 1 ? index + 1 : undefined\n    };\n    return res;\n  }, {});\n  return result;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { warnOnce } from '@mui/x-internals/warning';\nexport const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {\n  if (disableMultipleColumnsSorting && model.length > 1) {\n    if (process.env.NODE_ENV !== 'production') {\n      warnOnce(['MUI X: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\n    }\n    return [model[0]];\n  }\n  return model;\n};\nexport const mergeStateWithSortModel = (sortModel, disableMultipleColumnsSorting) => state => _extends({}, state, {\n  sorting: _extends({}, state.sorting, {\n    sortModel: sanitizeSortModel(sortModel, disableMultipleColumnsSorting)\n  })\n});\nconst isDesc = direction => direction === 'desc';\n\n/**\n * Transform an item of the sorting model into a method comparing two rows.\n * @param {GridSortItem} sortItem The sort item we want to apply.\n * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.\n * @returns {GridParsedSortItem | null} The parsed sort item. Returns `null` is the sort item is not valid.\n */\nconst parseSortItem = (sortItem, apiRef) => {\n  const column = apiRef.current.getColumn(sortItem.field);\n  if (!column || sortItem.sort === null) {\n    return null;\n  }\n  let comparator;\n  if (column.getSortComparator) {\n    comparator = column.getSortComparator(sortItem.sort);\n  } else {\n    comparator = isDesc(sortItem.sort) ? (...args) => -1 * column.sortComparator(...args) : column.sortComparator;\n  }\n  if (!comparator) {\n    return null;\n  }\n  const getSortCellParams = id => ({\n    id,\n    field: column.field,\n    rowNode: apiRef.current.getRowNode(id),\n    value: apiRef.current.getCellValue(id, column.field),\n    api: apiRef.current\n  });\n  return {\n    getSortCellParams,\n    comparator\n  };\n};\n/**\n * Compare two rows according to a list of valid sort items.\n * The `row1Params` and `row2Params` must have the same length as `parsedSortItems`,\n * and each of their index must contain the `GridSortCellParams` of the sort item with the same index.\n * @param {GridParsedSortItem[]} parsedSortItems All the sort items with which we want to compare the rows.\n * @param {GridRowAggregatedSortingParams} row1 The node and params of the 1st row for each sort item.\n * @param {GridRowAggregatedSortingParams} row2 The node and params of the 2nd row for each sort item.\n */\nconst compareRows = (parsedSortItems, row1, row2) => {\n  return parsedSortItems.reduce((res, item, index) => {\n    if (res !== 0) {\n      // return the results of the first comparator which distinguish the two rows\n      return res;\n    }\n    const sortCellParams1 = row1.params[index];\n    const sortCellParams2 = row2.params[index];\n    res = item.comparator(sortCellParams1.value, sortCellParams2.value, sortCellParams1, sortCellParams2);\n    return res;\n  }, 0);\n};\n\n/**\n * Generates a method to easily sort a list of rows according to the current sort model.\n * @param {GridSortModel} sortModel The model with which we want to sort the rows.\n * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.\n * @returns {GridSortingModelApplier | null} A method that generates a list of sorted row ids from a list of rows according to the current sort model. If `null`, we consider that the rows should remain in the order there were provided.\n */\nexport const buildAggregatedSortingApplier = (sortModel, apiRef) => {\n  const comparatorList = sortModel.map(item => parseSortItem(item, apiRef)).filter(comparator => !!comparator);\n  if (comparatorList.length === 0) {\n    return null;\n  }\n  return rowList => rowList.map(node => ({\n    node,\n    params: comparatorList.map(el => el.getSortCellParams(node.id))\n  })).sort((a, b) => compareRows(comparatorList, a, b)).map(row => row.node.id);\n};\nexport const getNextGridSortDirection = (sortingOrder, current) => {\n  const currentIdx = sortingOrder.indexOf(current);\n  if (!current || currentIdx === -1 || currentIdx + 1 === sortingOrder.length) {\n    return sortingOrder[0];\n  }\n  return sortingOrder[currentIdx + 1];\n};\nconst gridNillComparator = (v1, v2) => {\n  if (v1 == null && v2 != null) {\n    return -1;\n  }\n  if (v2 == null && v1 != null) {\n    return 1;\n  }\n  if (v1 == null && v2 == null) {\n    return 0;\n  }\n  return null;\n};\nconst collator = new Intl.Collator();\nexport const gridStringOrNumberComparator = (value1, value2) => {\n  const nillResult = gridNillComparator(value1, value2);\n  if (nillResult !== null) {\n    return nillResult;\n  }\n  if (typeof value1 === 'string') {\n    return collator.compare(value1.toString(), value2.toString());\n  }\n  return value1 - value2;\n};\nexport const gridNumberComparator = (value1, value2) => {\n  const nillResult = gridNillComparator(value1, value2);\n  if (nillResult !== null) {\n    return nillResult;\n  }\n  return Number(value1) - Number(value2);\n};\nexport const gridDateComparator = (value1, value2) => {\n  const nillResult = gridNillComparator(value1, value2);\n  if (nillResult !== null) {\n    return nillResult;\n  }\n  if (value1 > value2) {\n    return 1;\n  }\n  if (value1 < value2) {\n    return -1;\n  }\n  return 0;\n};","import { createSelector, createSelectorMemoized } from \"../../../utils/createSelector.js\";\n/**\n * Get the columns state\n * @category Virtualization\n */\nexport const gridVirtualizationSelector = state => state.virtualization;\n\n/**\n * Get the enabled state for virtualization\n * @category Virtualization\n * @deprecated Use `gridVirtualizationColumnEnabledSelector` and `gridVirtualizationRowEnabledSelector`\n */\nexport const gridVirtualizationEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabled);\n\n/**\n * Get the enabled state for column virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationColumnEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForColumns);\n\n/**\n * Get the enabled state for row virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationRowEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForRows);\n\n/**\n * Get the render context\n * @category Virtualization\n * @ignore - do not document.\n */\nexport const gridRenderContextSelector = createSelector(gridVirtualizationSelector, state => state.renderContext);\n\n/**\n * Get the render context, with only columns filled in.\n * This is cached, so it can be used to only re-render when the column interval changes.\n * @category Virtualization\n * @ignore - do not document.\n */\nexport const gridRenderContextColumnsSelector = createSelectorMemoized(state => state.virtualization.renderContext.firstColumnIndex, state => state.virtualization.renderContext.lastColumnIndex, (firstColumnIndex, lastColumnIndex) => ({\n  firstColumnIndex,\n  lastColumnIndex\n}));","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nconst isDevEnvironment = process.env.NODE_ENV === 'development';\nconst noop = () => {};\nexport function useResizeObserver(ref, fn, enabled) {\n  const fnRef = React.useRef(null);\n  fnRef.current = fn;\n  useEnhancedEffect(() => {\n    if (enabled === false || typeof ResizeObserver === 'undefined') {\n      return noop;\n    }\n    let frameID = 0;\n    const target = ref.current;\n    const observer = new ResizeObserver(entries => {\n      // See https://github.com/mui/mui-x/issues/8733\n      // In dev, we avoid the React warning by moving the task to the next frame.\n      // In prod, we want the task to run in the same frame as to avoid tear.\n      if (isDevEnvironment) {\n        frameID = requestAnimationFrame(() => {\n          fnRef.current(entries);\n        });\n      } else {\n        fnRef.current(entries);\n      }\n    });\n    if (target) {\n      observer.observe(target);\n    }\n    return () => {\n      if (frameID) {\n        cancelAnimationFrame(frameID);\n      }\n      observer.disconnect();\n    };\n  }, [ref, enabled]);\n}","const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase() : 'empty';\nexport const isFirefox = userAgent.includes('firefox');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport useLazyRef from '@mui/utils/useLazyRef';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { useResizeObserver } from '@mui/x-internals/useResizeObserver';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useGridPrivateApiContext } from \"../../utils/useGridPrivateApiContext.js\";\nimport { useGridRootProps } from \"../../utils/useGridRootProps.js\";\nimport { useGridSelector } from \"../../utils/useGridSelector.js\";\nimport { useRunOnce } from \"../../utils/useRunOnce.js\";\nimport { gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, gridColumnPositionsSelector, gridHasColSpanSelector } from \"../columns/gridColumnsSelector.js\";\nimport { gridDimensionsSelector } from \"../dimensions/gridDimensionsSelectors.js\";\nimport { gridPinnedRowsSelector } from \"../rows/gridRowsSelector.js\";\nimport { gridFocusCellSelector, gridTabIndexCellSelector } from \"../focus/gridFocusStateSelector.js\";\nimport { useGridVisibleRows, getVisibleRows } from \"../../utils/useGridVisibleRows.js\";\nimport { useGridApiEventHandler } from \"../../utils/index.js\";\nimport * as platform from \"../../../utils/platform.js\";\nimport { clamp, range } from \"../../../utils/utils.js\";\nimport { selectedIdsLookupSelector } from \"../rowSelection/gridRowSelectionSelector.js\";\nimport { gridRowsMetaSelector } from \"../rows/gridRowsMetaSelector.js\";\nimport { getFirstNonSpannedColumnToRender } from \"../columns/gridColumnsUtils.js\";\nimport { getMinimalContentHeight } from \"../rows/gridRowsUtils.js\";\nimport { gridRenderContextSelector, gridVirtualizationRowEnabledSelector, gridVirtualizationColumnEnabledSelector } from \"./gridVirtualizationSelectors.js\";\nimport { EMPTY_RENDER_CONTEXT } from \"./useGridVirtualization.js\";\nimport { gridRowSpanningHiddenCellsOriginMapSelector } from \"../rows/gridRowSpanningSelectors.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MINIMUM_COLUMN_WIDTH = 50;\nvar ScrollDirection = /*#__PURE__*/function (ScrollDirection) {\n  ScrollDirection[ScrollDirection[\"NONE\"] = 0] = \"NONE\";\n  ScrollDirection[ScrollDirection[\"UP\"] = 1] = \"UP\";\n  ScrollDirection[ScrollDirection[\"DOWN\"] = 2] = \"DOWN\";\n  ScrollDirection[ScrollDirection[\"LEFT\"] = 3] = \"LEFT\";\n  ScrollDirection[ScrollDirection[\"RIGHT\"] = 4] = \"RIGHT\";\n  return ScrollDirection;\n}(ScrollDirection || {});\nconst EMPTY_SCROLL_POSITION = {\n  top: 0,\n  left: 0\n};\nexport const EMPTY_DETAIL_PANELS = Object.freeze(new Map());\nconst createScrollCache = (isRtl, rowBufferPx, columnBufferPx, verticalBuffer, horizontalBuffer) => ({\n  direction: ScrollDirection.NONE,\n  buffer: bufferForDirection(isRtl, ScrollDirection.NONE, rowBufferPx, columnBufferPx, verticalBuffer, horizontalBuffer)\n});\nlet isJSDOM = false;\ntry {\n  if (typeof window !== 'undefined') {\n    isJSDOM = /jsdom/.test(window.navigator.userAgent);\n  }\n} catch (_) {\n  /* ignore */\n}\nexport const useGridVirtualScroller = () => {\n  const apiRef = useGridPrivateApiContext();\n  const rootProps = useGridRootProps();\n  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n  const enabledForRows = useGridSelector(apiRef, gridVirtualizationRowEnabledSelector) && !isJSDOM;\n  const enabledForColumns = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector) && !isJSDOM;\n  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);\n  const outerSize = dimensions.viewportOuterSize;\n  const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);\n  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);\n  const hasBottomPinnedRows = pinnedRows.bottom.length > 0;\n  const [panels, setPanels] = React.useState(EMPTY_DETAIL_PANELS);\n  const isRtl = useRtl();\n  const cellFocus = useGridSelector(apiRef, gridFocusCellSelector);\n  const cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector);\n  const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);\n  const selectedRowsLookup = useGridSelector(apiRef, selectedIdsLookupSelector);\n  const currentPage = useGridVisibleRows(apiRef, rootProps);\n  const gridRootRef = apiRef.current.rootElementRef;\n  const mainRef = apiRef.current.mainElementRef;\n  const scrollerRef = apiRef.current.virtualScrollerRef;\n  const scrollbarVerticalRef = React.useRef(null);\n  const scrollbarHorizontalRef = React.useRef(null);\n  const contentHeight = dimensions.contentSize.height;\n  const columnsTotalWidth = dimensions.columnsTotalWidth;\n  const hasColSpan = useGridSelector(apiRef, gridHasColSpanSelector);\n  useResizeObserver(mainRef, () => apiRef.current.resize());\n\n  /*\n   * Scroll context logic\n   * ====================\n   * We only render the cells contained in the `renderContext`. However, when the user starts scrolling the grid\n   * in a direction, we want to render as many cells as possible in that direction, as to avoid presenting white\n   * areas if the user scrolls too fast/far and the viewport ends up in a region we haven't rendered yet. To render\n   * more cells, we store some offsets to add to the viewport in `scrollCache.buffer`. Those offsets make the render\n   * context wider in the direction the user is going, but also makes the buffer around the viewport `0` for the\n   * dimension (horizontal or vertical) in which the user is not scrolling. So if the normal viewport is 8 columns\n   * wide, with a 1 column buffer (10 columns total), then we want it to be exactly 8 columns wide during vertical\n   * scroll.\n   * However, we don't want the rows in the old context to re-render from e.g. 10 columns to 8 columns, because that's\n   * work that's not necessary. Thus we store the context at the start of the scroll in `frozenContext`, and the rows\n   * that are part of this old context will keep their same render context as to avoid re-rendering.\n   */\n  const scrollPosition = React.useRef(EMPTY_SCROLL_POSITION);\n  const previousContextScrollPosition = React.useRef(EMPTY_SCROLL_POSITION);\n  const previousRowContext = React.useRef(EMPTY_RENDER_CONTEXT);\n  const renderContext = useGridSelector(apiRef, gridRenderContextSelector);\n  const scrollTimeout = useTimeout();\n  const frozenContext = React.useRef(undefined);\n  const scrollCache = useLazyRef(() => createScrollCache(isRtl, rootProps.rowBufferPx, rootProps.columnBufferPx, dimensions.rowHeight * 15, MINIMUM_COLUMN_WIDTH * 6)).current;\n  const focusedCell = {\n    rowIndex: React.useMemo(() => cellFocus ? currentPage.rows.findIndex(row => row.id === cellFocus.id) : -1, [cellFocus, currentPage.rows]),\n    columnIndex: React.useMemo(() => cellFocus ? visibleColumns.findIndex(column => column.field === cellFocus.field) : -1, [cellFocus, visibleColumns])\n  };\n  const updateRenderContext = React.useCallback(nextRenderContext => {\n    if (areRenderContextsEqual(nextRenderContext, apiRef.current.state.virtualization.renderContext)) {\n      return;\n    }\n    const didRowsIntervalChange = nextRenderContext.firstRowIndex !== previousRowContext.current.firstRowIndex || nextRenderContext.lastRowIndex !== previousRowContext.current.lastRowIndex;\n    apiRef.current.setState(state => {\n      return _extends({}, state, {\n        virtualization: _extends({}, state.virtualization, {\n          renderContext: nextRenderContext\n        })\n      });\n    });\n\n    // The lazy-loading hook is listening to `renderedRowsIntervalChange`,\n    // but only does something if the dimensions are also available.\n    // So we wait until we have valid dimensions before publishing the first event.\n    if (dimensions.isReady && didRowsIntervalChange) {\n      previousRowContext.current = nextRenderContext;\n      apiRef.current.publishEvent('renderedRowsIntervalChange', nextRenderContext);\n    }\n    previousContextScrollPosition.current = scrollPosition.current;\n  }, [apiRef, dimensions.isReady]);\n  const triggerUpdateRenderContext = () => {\n    const newScroll = {\n      top: scrollerRef.current.scrollTop,\n      left: scrollerRef.current.scrollLeft\n    };\n    const dx = newScroll.left - scrollPosition.current.left;\n    const dy = newScroll.top - scrollPosition.current.top;\n    const isScrolling = dx !== 0 || dy !== 0;\n    scrollPosition.current = newScroll;\n    const direction = isScrolling ? directionForDelta(dx, dy) : ScrollDirection.NONE;\n\n    // Since previous render, we have scrolled...\n    const rowScroll = Math.abs(scrollPosition.current.top - previousContextScrollPosition.current.top);\n    const columnScroll = Math.abs(scrollPosition.current.left - previousContextScrollPosition.current.left);\n\n    // PERF: use the computed minimum column width instead of a static one\n    const didCrossThreshold = rowScroll >= dimensions.rowHeight || columnScroll >= MINIMUM_COLUMN_WIDTH;\n    const didChangeDirection = scrollCache.direction !== direction;\n    const shouldUpdate = didCrossThreshold || didChangeDirection;\n    if (!shouldUpdate) {\n      return renderContext;\n    }\n\n    // Render a new context\n\n    if (didChangeDirection) {\n      switch (direction) {\n        case ScrollDirection.NONE:\n        case ScrollDirection.LEFT:\n        case ScrollDirection.RIGHT:\n          frozenContext.current = undefined;\n          break;\n        default:\n          frozenContext.current = renderContext;\n          break;\n      }\n    }\n    scrollCache.direction = direction;\n    scrollCache.buffer = bufferForDirection(isRtl, direction, rootProps.rowBufferPx, rootProps.columnBufferPx, dimensions.rowHeight * 15, MINIMUM_COLUMN_WIDTH * 6);\n    const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns);\n    const nextRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache);\n\n    // Prevents batching render context changes\n    ReactDOM.flushSync(() => {\n      updateRenderContext(nextRenderContext);\n    });\n    scrollTimeout.start(1000, triggerUpdateRenderContext);\n    return nextRenderContext;\n  };\n  const forceUpdateRenderContext = () => {\n    const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns);\n    const nextRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache);\n    // Reset the frozen context when the render context changes, see the illustration in https://github.com/mui/mui-x/pull/12353\n    frozenContext.current = undefined;\n    updateRenderContext(nextRenderContext);\n  };\n  const handleScroll = useEventCallback(event => {\n    const {\n      scrollTop,\n      scrollLeft\n    } = event.currentTarget;\n\n    // On iOS and macOS, negative offsets are possible when swiping past the start\n    if (scrollTop < 0) {\n      return;\n    }\n    if (!isRtl) {\n      if (scrollLeft < 0) {\n        return;\n      }\n    }\n    if (isRtl) {\n      if (scrollLeft > 0) {\n        return;\n      }\n    }\n    const nextRenderContext = triggerUpdateRenderContext();\n    apiRef.current.publishEvent('scrollPositionChange', {\n      top: scrollTop,\n      left: scrollLeft,\n      renderContext: nextRenderContext\n    });\n  });\n  const handleWheel = useEventCallback(event => {\n    apiRef.current.publishEvent('virtualScrollerWheel', {}, event);\n  });\n  const handleTouchMove = useEventCallback(event => {\n    apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);\n  });\n  const getRows = (params = {}) => {\n    if (!params.rows && !currentPage.range) {\n      return [];\n    }\n    const baseRenderContext = params.renderContext ?? renderContext;\n    const isLastSection = !hasBottomPinnedRows && params.position === undefined || hasBottomPinnedRows && params.position === 'bottom';\n    const isPinnedSection = params.position !== undefined;\n    let rowIndexOffset;\n    // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?\n    // eslint-disable-next-line default-case\n    switch (params.position) {\n      case 'top':\n        rowIndexOffset = 0;\n        break;\n      case 'bottom':\n        rowIndexOffset = pinnedRows.top.length + currentPage.rows.length;\n        break;\n      case undefined:\n        rowIndexOffset = pinnedRows.top.length;\n        break;\n    }\n    const rowModels = params.rows ?? currentPage.rows;\n    const firstRowToRender = baseRenderContext.firstRowIndex;\n    const lastRowToRender = Math.min(baseRenderContext.lastRowIndex, rowModels.length);\n    const rowIndexes = params.rows ? range(0, params.rows.length) : range(firstRowToRender, lastRowToRender);\n    let virtualRowIndex = -1;\n    if (!isPinnedSection && focusedCell.rowIndex !== -1) {\n      if (focusedCell.rowIndex < firstRowToRender) {\n        virtualRowIndex = focusedCell.rowIndex;\n        rowIndexes.unshift(virtualRowIndex);\n      }\n      if (focusedCell.rowIndex >= lastRowToRender) {\n        virtualRowIndex = focusedCell.rowIndex;\n        rowIndexes.push(virtualRowIndex);\n      }\n    }\n    const rows = [];\n    const rowProps = rootProps.slotProps?.row;\n    const columnPositions = gridColumnPositionsSelector(apiRef);\n    rowIndexes.forEach(rowIndexInPage => {\n      const {\n        id,\n        model\n      } = rowModels[rowIndexInPage];\n      const rowIndex = (currentPage?.range?.firstRowIndex || 0) + rowIndexOffset + rowIndexInPage;\n\n      // NOTE: This is an expensive feature, the colSpan code could be optimized.\n      if (hasColSpan) {\n        const minFirstColumn = pinnedColumns.left.length;\n        const maxLastColumn = visibleColumns.length - pinnedColumns.right.length;\n        apiRef.current.calculateColSpan({\n          rowId: id,\n          minFirstColumn,\n          maxLastColumn,\n          columns: visibleColumns\n        });\n        if (pinnedColumns.left.length > 0) {\n          apiRef.current.calculateColSpan({\n            rowId: id,\n            minFirstColumn: 0,\n            maxLastColumn: pinnedColumns.left.length,\n            columns: visibleColumns\n          });\n        }\n        if (pinnedColumns.right.length > 0) {\n          apiRef.current.calculateColSpan({\n            rowId: id,\n            minFirstColumn: visibleColumns.length - pinnedColumns.right.length,\n            maxLastColumn: visibleColumns.length,\n            columns: visibleColumns\n          });\n        }\n      }\n      const hasFocus = cellFocus?.id === id;\n      const baseRowHeight = !apiRef.current.rowHasAutoHeight(id) ? apiRef.current.unstable_getRowHeight(id) : 'auto';\n      let isSelected;\n      if (selectedRowsLookup[id] == null) {\n        isSelected = false;\n      } else {\n        isSelected = apiRef.current.isRowSelectable(id);\n      }\n      let isFirstVisible = false;\n      if (params.position === undefined) {\n        isFirstVisible = rowIndexInPage === 0;\n      }\n      let isLastVisible = false;\n      const isLastVisibleInSection = rowIndexInPage === rowModels.length - 1;\n      if (isLastSection) {\n        if (!isPinnedSection) {\n          const lastIndex = currentPage.rows.length - 1;\n          const isLastVisibleRowIndex = rowIndexInPage === lastIndex;\n          if (isLastVisibleRowIndex) {\n            isLastVisible = true;\n          }\n        } else {\n          isLastVisible = isLastVisibleInSection;\n        }\n      }\n      const isVirtualRow = rowIndexInPage === virtualRowIndex;\n      const isNotVisible = isVirtualRow;\n      let tabbableCell = null;\n      if (cellTabIndex !== null && cellTabIndex.id === id) {\n        const cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);\n        tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;\n      }\n      let currentRenderContext = baseRenderContext;\n      if (!isPinnedSection && frozenContext.current && rowIndexInPage >= frozenContext.current.firstRowIndex && rowIndexInPage < frozenContext.current.lastRowIndex) {\n        currentRenderContext = frozenContext.current;\n      }\n      const offsetLeft = computeOffsetLeft(columnPositions, currentRenderContext, pinnedColumns.left.length);\n      const showBottomBorder = isLastVisibleInSection && params.position === 'top';\n      rows.push(/*#__PURE__*/_jsx(rootProps.slots.row, _extends({\n        row: model,\n        rowId: id,\n        index: rowIndex,\n        selected: isSelected,\n        offsetTop: params.rows ? undefined : rowsMeta.positions[rowIndexInPage],\n        offsetLeft: offsetLeft,\n        dimensions: dimensions,\n        rowHeight: baseRowHeight,\n        tabbableCell: tabbableCell,\n        pinnedColumns: pinnedColumns,\n        visibleColumns: visibleColumns,\n        renderContext: currentRenderContext,\n        focusedColumnIndex: hasFocus ? focusedCell.columnIndex : undefined,\n        isFirstVisible: isFirstVisible,\n        isLastVisible: isLastVisible,\n        isNotVisible: isNotVisible,\n        showBottomBorder: showBottomBorder\n      }, rowProps), id));\n      if (isNotVisible) {\n        return;\n      }\n      const panel = panels.get(id);\n      if (panel) {\n        rows.push(panel);\n      }\n      if (params.position === undefined && isLastVisibleInSection) {\n        rows.push(apiRef.current.getInfiniteLoadingTriggerElement?.({\n          lastRowId: id\n        }));\n      }\n    });\n    return rows;\n  };\n  const needsHorizontalScrollbar = outerSize.width && columnsTotalWidth >= outerSize.width;\n  const scrollerStyle = React.useMemo(() => ({\n    overflowX: !needsHorizontalScrollbar ? 'hidden' : undefined,\n    overflowY: rootProps.autoHeight ? 'hidden' : undefined\n  }), [needsHorizontalScrollbar, rootProps.autoHeight]);\n  const contentSize = React.useMemo(() => {\n    const size = {\n      width: needsHorizontalScrollbar ? columnsTotalWidth : 'auto',\n      height: contentHeight\n    };\n    if (rootProps.autoHeight && currentPage.rows.length === 0) {\n      size.height = getMinimalContentHeight(apiRef); // Give room to show the overlay when there no rows.\n    }\n    return size;\n  }, [apiRef, columnsTotalWidth, contentHeight, needsHorizontalScrollbar, rootProps.autoHeight, currentPage.rows.length]);\n  React.useEffect(() => {\n    apiRef.current.publishEvent('virtualScrollerContentSizeChange');\n  }, [apiRef, contentSize]);\n  useEnhancedEffect(() => {\n    // FIXME: Is this really necessary?\n    apiRef.current.resize();\n  }, [apiRef, rowsMeta.currentPageTotalHeight]);\n  useEnhancedEffect(() => {\n    // TODO a scroll reset should not be necessary\n    if (enabledForColumns) {\n      scrollerRef.current.scrollLeft = 0;\n    }\n    if (enabledForRows) {\n      scrollerRef.current.scrollTop = 0;\n    }\n  }, [enabledForColumns, enabledForRows, gridRootRef, scrollerRef]);\n  useRunOnce(outerSize.width !== 0, () => {\n    const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns);\n    const initialRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache);\n    updateRenderContext(initialRenderContext);\n    apiRef.current.publishEvent('scrollPositionChange', {\n      top: scrollPosition.current.top,\n      left: scrollPosition.current.left,\n      renderContext: initialRenderContext\n    });\n  });\n  apiRef.current.register('private', {\n    updateRenderContext: forceUpdateRenderContext\n  });\n  useGridApiEventHandler(apiRef, 'columnsChange', forceUpdateRenderContext);\n  useGridApiEventHandler(apiRef, 'filteredRowsSet', forceUpdateRenderContext);\n  useGridApiEventHandler(apiRef, 'rowExpansionChange', forceUpdateRenderContext);\n  return {\n    renderContext,\n    setPanels,\n    getRows,\n    getContainerProps: () => ({\n      ref: mainRef\n    }),\n    getScrollerProps: () => ({\n      ref: scrollerRef,\n      onScroll: handleScroll,\n      onWheel: handleWheel,\n      onTouchMove: handleTouchMove,\n      style: scrollerStyle,\n      role: 'presentation',\n      // `tabIndex` shouldn't be used along role=presentation, but it fixes a Firefox bug\n      // https://github.com/mui/mui-x/pull/13891#discussion_r1683416024\n      tabIndex: platform.isFirefox ? -1 : undefined\n    }),\n    getContentProps: () => ({\n      style: contentSize,\n      role: 'presentation'\n    }),\n    getRenderZoneProps: () => ({\n      role: 'rowgroup'\n    }),\n    getScrollbarVerticalProps: () => ({\n      ref: scrollbarVerticalRef,\n      role: 'presentation'\n    }),\n    getScrollbarHorizontalProps: () => ({\n      ref: scrollbarHorizontalRef,\n      role: 'presentation'\n    })\n  };\n};\nfunction inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns) {\n  const dimensions = gridDimensionsSelector(apiRef.current.state);\n  const currentPage = getVisibleRows(apiRef, rootProps);\n  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n  const hiddenCellsOriginMap = gridRowSpanningHiddenCellsOriginMapSelector(apiRef);\n  const lastRowId = apiRef.current.state.rows.dataRowIds.at(-1);\n  const lastColumn = visibleColumns.at(-1);\n  return {\n    enabledForRows,\n    enabledForColumns,\n    apiRef,\n    autoHeight: rootProps.autoHeight,\n    rowBufferPx: rootProps.rowBufferPx,\n    columnBufferPx: rootProps.columnBufferPx,\n    leftPinnedWidth: dimensions.leftPinnedWidth,\n    columnsTotalWidth: dimensions.columnsTotalWidth,\n    viewportInnerWidth: dimensions.viewportInnerSize.width,\n    viewportInnerHeight: dimensions.viewportInnerSize.height,\n    lastRowHeight: lastRowId !== undefined ? apiRef.current.unstable_getRowHeight(lastRowId) : 0,\n    lastColumnWidth: lastColumn?.computedWidth ?? 0,\n    rowsMeta: gridRowsMetaSelector(apiRef.current.state),\n    columnPositions: gridColumnPositionsSelector(apiRef),\n    rows: currentPage.rows,\n    range: currentPage.range,\n    pinnedColumns: gridVisiblePinnedColumnDefinitionsSelector(apiRef),\n    visibleColumns,\n    hiddenCellsOriginMap\n  };\n}\nfunction computeRenderContext(inputs, scrollPosition, scrollCache) {\n  const renderContext = {\n    firstRowIndex: 0,\n    lastRowIndex: inputs.rows.length,\n    firstColumnIndex: 0,\n    lastColumnIndex: inputs.visibleColumns.length\n  };\n  const {\n    top,\n    left\n  } = scrollPosition;\n  const realLeft = Math.abs(left) + inputs.leftPinnedWidth;\n  if (inputs.enabledForRows) {\n    // Clamp the value because the search may return an index out of bounds.\n    // In the last index, this is not needed because Array.slice doesn't include it.\n    let firstRowIndex = Math.min(getNearestIndexToRender(inputs, top, {\n      atStart: true,\n      lastPosition: inputs.rowsMeta.positions[inputs.rowsMeta.positions.length - 1] + inputs.lastRowHeight\n    }), inputs.rowsMeta.positions.length - 1);\n\n    // If any of the cells in the `firstRowIndex` is hidden due to an extended row span,\n    // Make sure the row from where the rowSpan is originated is visible.\n    const rowSpanHiddenCellOrigin = inputs.hiddenCellsOriginMap[firstRowIndex];\n    if (rowSpanHiddenCellOrigin) {\n      const minSpannedRowIndex = Math.min(...Object.values(rowSpanHiddenCellOrigin));\n      firstRowIndex = Math.min(firstRowIndex, minSpannedRowIndex);\n    }\n    const lastRowIndex = inputs.autoHeight ? firstRowIndex + inputs.rows.length : getNearestIndexToRender(inputs, top + inputs.viewportInnerHeight);\n    renderContext.firstRowIndex = firstRowIndex;\n    renderContext.lastRowIndex = lastRowIndex;\n  }\n  if (inputs.enabledForColumns) {\n    let firstColumnIndex = 0;\n    let lastColumnIndex = inputs.columnPositions.length;\n    let hasRowWithAutoHeight = false;\n    const [firstRowToRender, lastRowToRender] = getIndexesToRender({\n      firstIndex: renderContext.firstRowIndex,\n      lastIndex: renderContext.lastRowIndex,\n      minFirstIndex: 0,\n      maxLastIndex: inputs.rows.length,\n      bufferBefore: scrollCache.buffer.rowBefore,\n      bufferAfter: scrollCache.buffer.rowAfter,\n      positions: inputs.rowsMeta.positions,\n      lastSize: inputs.lastRowHeight\n    });\n    for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {\n      const row = inputs.rows[i];\n      hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id);\n    }\n    if (!hasRowWithAutoHeight) {\n      firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, {\n        atStart: true,\n        lastPosition: inputs.columnsTotalWidth\n      });\n      lastColumnIndex = binarySearch(realLeft + inputs.viewportInnerWidth, inputs.columnPositions);\n    }\n    renderContext.firstColumnIndex = firstColumnIndex;\n    renderContext.lastColumnIndex = lastColumnIndex;\n  }\n  const actualRenderContext = deriveRenderContext(inputs, renderContext, scrollCache);\n  return actualRenderContext;\n}\nfunction getNearestIndexToRender(inputs, offset, options) {\n  const lastMeasuredIndexRelativeToAllRows = inputs.apiRef.current.getLastMeasuredRowIndex();\n  let allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;\n  if (inputs.range?.lastRowIndex && !allRowsMeasured) {\n    // Check if all rows in this page are already measured\n    allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= inputs.range.lastRowIndex;\n  }\n  const lastMeasuredIndexRelativeToCurrentPage = clamp(lastMeasuredIndexRelativeToAllRows - (inputs.range?.firstRowIndex || 0), 0, inputs.rowsMeta.positions.length);\n  if (allRowsMeasured || inputs.rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {\n    // If all rows were measured (when no row has \"auto\" as height) or all rows before the offset\n    // were measured, then use a binary search because it's faster.\n    return binarySearch(offset, inputs.rowsMeta.positions, options);\n  }\n\n  // Otherwise, use an exponential search.\n  // If rows have \"auto\" as height, their positions will be based on estimated heights.\n  // In this case, we can skip several steps until we find a position higher than the offset.\n  // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js\n  return exponentialSearch(offset, inputs.rowsMeta.positions, lastMeasuredIndexRelativeToCurrentPage, options);\n}\n\n/**\n * Accepts as input a raw render context (the area visible in the viewport) and adds\n * computes the actual render context based on pinned elements, buffer dimensions and\n * spanning.\n */\nfunction deriveRenderContext(inputs, nextRenderContext, scrollCache) {\n  const [firstRowToRender, lastRowToRender] = getIndexesToRender({\n    firstIndex: nextRenderContext.firstRowIndex,\n    lastIndex: nextRenderContext.lastRowIndex,\n    minFirstIndex: 0,\n    maxLastIndex: inputs.rows.length,\n    bufferBefore: scrollCache.buffer.rowBefore,\n    bufferAfter: scrollCache.buffer.rowAfter,\n    positions: inputs.rowsMeta.positions,\n    lastSize: inputs.lastRowHeight\n  });\n  const [initialFirstColumnToRender, lastColumnToRender] = getIndexesToRender({\n    firstIndex: nextRenderContext.firstColumnIndex,\n    lastIndex: nextRenderContext.lastColumnIndex,\n    minFirstIndex: inputs.pinnedColumns.left.length,\n    maxLastIndex: inputs.visibleColumns.length - inputs.pinnedColumns.right.length,\n    bufferBefore: scrollCache.buffer.columnBefore,\n    bufferAfter: scrollCache.buffer.columnAfter,\n    positions: inputs.columnPositions,\n    lastSize: inputs.lastColumnWidth\n  });\n  const firstColumnToRender = getFirstNonSpannedColumnToRender({\n    firstColumnToRender: initialFirstColumnToRender,\n    apiRef: inputs.apiRef,\n    firstRowToRender,\n    lastRowToRender,\n    visibleRows: inputs.rows\n  });\n  return {\n    firstRowIndex: firstRowToRender,\n    lastRowIndex: lastRowToRender,\n    firstColumnIndex: firstColumnToRender,\n    lastColumnIndex: lastColumnToRender\n  };\n}\n/**\n * Use binary search to avoid looping through all possible positions.\n * The `options.atStart` provides the possibility to match for the first element that\n * intersects the screen, even if said element's start position is before `offset`. In\n * other words, we search for `offset + width`.\n */\nfunction binarySearch(offset, positions, options = undefined, sliceStart = 0, sliceEnd = positions.length) {\n  if (positions.length <= 0) {\n    return -1;\n  }\n  if (sliceStart >= sliceEnd) {\n    return sliceStart;\n  }\n  const pivot = sliceStart + Math.floor((sliceEnd - sliceStart) / 2);\n  const position = positions[pivot];\n  let isBefore;\n  if (options?.atStart) {\n    const width = (pivot === positions.length - 1 ? options.lastPosition : positions[pivot + 1]) - position;\n    isBefore = offset - width < position;\n  } else {\n    isBefore = offset <= position;\n  }\n  return isBefore ? binarySearch(offset, positions, options, sliceStart, pivot) : binarySearch(offset, positions, options, pivot + 1, sliceEnd);\n}\nfunction exponentialSearch(offset, positions, index, options = undefined) {\n  let interval = 1;\n  while (index < positions.length && Math.abs(positions[index]) < offset) {\n    index += interval;\n    interval *= 2;\n  }\n  return binarySearch(offset, positions, options, Math.floor(index / 2), Math.min(index, positions.length));\n}\nfunction getIndexesToRender({\n  firstIndex,\n  lastIndex,\n  bufferBefore,\n  bufferAfter,\n  minFirstIndex,\n  maxLastIndex,\n  positions,\n  lastSize\n}) {\n  const firstPosition = positions[firstIndex] - bufferBefore;\n  const lastPosition = positions[lastIndex] + bufferAfter;\n  const firstIndexPadded = binarySearch(firstPosition, positions, {\n    atStart: true,\n    lastPosition: positions[positions.length - 1] + lastSize\n  });\n  const lastIndexPadded = binarySearch(lastPosition, positions);\n  return [clamp(firstIndexPadded, minFirstIndex, maxLastIndex), clamp(lastIndexPadded, minFirstIndex, maxLastIndex)];\n}\nexport function areRenderContextsEqual(context1, context2) {\n  if (context1 === context2) {\n    return true;\n  }\n  return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;\n}\nexport function computeOffsetLeft(columnPositions, renderContext, pinnedLeftLength) {\n  const left = (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0);\n  return Math.abs(left);\n}\nfunction directionForDelta(dx, dy) {\n  if (dx === 0 && dy === 0) {\n    return ScrollDirection.NONE;\n  }\n  /* eslint-disable */\n  if (Math.abs(dy) >= Math.abs(dx)) {\n    if (dy > 0) {\n      return ScrollDirection.DOWN;\n    } else {\n      return ScrollDirection.UP;\n    }\n  } else {\n    if (dx > 0) {\n      return ScrollDirection.RIGHT;\n    } else {\n      return ScrollDirection.LEFT;\n    }\n  }\n  /* eslint-enable */\n}\nfunction bufferForDirection(isRtl, direction, rowBufferPx, columnBufferPx, verticalBuffer, horizontalBuffer) {\n  if (isRtl) {\n    switch (direction) {\n      case ScrollDirection.LEFT:\n        direction = ScrollDirection.RIGHT;\n        break;\n      case ScrollDirection.RIGHT:\n        direction = ScrollDirection.LEFT;\n        break;\n      default:\n    }\n  }\n  switch (direction) {\n    case ScrollDirection.NONE:\n      return {\n        rowAfter: rowBufferPx,\n        rowBefore: rowBufferPx,\n        columnAfter: columnBufferPx,\n        columnBefore: columnBufferPx\n      };\n    case ScrollDirection.LEFT:\n      return {\n        rowAfter: 0,\n        rowBefore: 0,\n        columnAfter: 0,\n        columnBefore: horizontalBuffer\n      };\n    case ScrollDirection.RIGHT:\n      return {\n        rowAfter: 0,\n        rowBefore: 0,\n        columnAfter: horizontalBuffer,\n        columnBefore: 0\n      };\n    case ScrollDirection.UP:\n      return {\n        rowAfter: 0,\n        rowBefore: verticalBuffer,\n        columnAfter: 0,\n        columnBefore: 0\n      };\n    case ScrollDirection.DOWN:\n      return {\n        rowAfter: verticalBuffer,\n        rowBefore: 0,\n        columnAfter: 0,\n        columnBefore: 0\n      };\n    default:\n      // eslint unable to figure out enum exhaustiveness\n      throw new Error('unreachable');\n  }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from \"../../utils/useGridApiMethod.js\";\nexport const EMPTY_RENDER_CONTEXT = {\n  firstRowIndex: 0,\n  lastRowIndex: 0,\n  firstColumnIndex: 0,\n  lastColumnIndex: 0\n};\nexport const virtualizationStateInitializer = (state, props) => {\n  const {\n    disableVirtualization,\n    autoHeight\n  } = props;\n  const virtualization = {\n    enabled: !disableVirtualization,\n    enabledForColumns: !disableVirtualization,\n    enabledForRows: !disableVirtualization && !autoHeight,\n    renderContext: EMPTY_RENDER_CONTEXT\n  };\n  return _extends({}, state, {\n    virtualization\n  });\n};\nexport function useGridVirtualization(apiRef, props) {\n  /*\n   * API METHODS\n   */\n\n  const setVirtualization = enabled => {\n    apiRef.current.setState(state => _extends({}, state, {\n      virtualization: _extends({}, state.virtualization, {\n        enabled,\n        enabledForColumns: enabled,\n        enabledForRows: enabled && !props.autoHeight\n      })\n    }));\n  };\n  const setColumnVirtualization = enabled => {\n    apiRef.current.setState(state => _extends({}, state, {\n      virtualization: _extends({}, state.virtualization, {\n        enabledForColumns: enabled\n      })\n    }));\n  };\n  const api = {\n    unstable_setVirtualization: setVirtualization,\n    unstable_setColumnVirtualization: setColumnVirtualization\n  };\n  useGridApiMethod(apiRef, api, 'public');\n\n  /*\n   * EFFECTS\n   */\n\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(() => {\n    setVirtualization(!props.disableVirtualization);\n  }, [props.disableVirtualization, props.autoHeight]);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","import * as React from 'react';\nexport const useFirstRender = callback => {\n  const isFirstRender = React.useRef(true);\n  if (isFirstRender.current) {\n    isFirstRender.current = false;\n    callback();\n  }\n};","// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\nexport class TimerBasedCleanupTracking {\n  constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n    this.timeouts = new Map();\n    this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n    this.cleanupTimeout = timeout;\n  }\n  register(object, unsubscribe, unregisterToken) {\n    if (!this.timeouts) {\n      this.timeouts = new Map();\n    }\n    const timeout = setTimeout(() => {\n      if (typeof unsubscribe === 'function') {\n        unsubscribe();\n      }\n      this.timeouts.delete(unregisterToken.cleanupToken);\n    }, this.cleanupTimeout);\n    this.timeouts.set(unregisterToken.cleanupToken, timeout);\n  }\n  unregister(unregisterToken) {\n    const timeout = this.timeouts.get(unregisterToken.cleanupToken);\n    if (timeout) {\n      this.timeouts.delete(unregisterToken.cleanupToken);\n      clearTimeout(timeout);\n    }\n  }\n  reset() {\n    if (this.timeouts) {\n      this.timeouts.forEach((value, key) => {\n        this.unregister({\n          cleanupToken: key\n        });\n      });\n      this.timeouts = undefined;\n    }\n  }\n}","export class FinalizationRegistryBasedCleanupTracking {\n  constructor() {\n    this.registry = new FinalizationRegistry(unsubscribe => {\n      if (typeof unsubscribe === 'function') {\n        unsubscribe();\n      }\n    });\n  }\n  register(object, unsubscribe, unregisterToken) {\n    this.registry.register(object, unsubscribe, unregisterToken);\n  }\n  unregister(unregisterToken) {\n    this.registry.unregister(unregisterToken);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  reset() {}\n}","import * as React from 'react';\nimport { TimerBasedCleanupTracking } from \"../../utils/cleanupTracking/TimerBasedCleanupTracking.js\";\nimport { FinalizationRegistryBasedCleanupTracking } from \"../../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js\";\n/**\n * Signal to the underlying logic what version of the public component API\n * of the data grid is exposed.\n */\nvar GridSignature = /*#__PURE__*/function (GridSignature) {\n  GridSignature[\"DataGrid\"] = \"DataGrid\";\n  GridSignature[\"DataGridPro\"] = \"DataGridPro\";\n  GridSignature[\"DataGridPremium\"] = \"DataGridPremium\";\n  return GridSignature;\n}(GridSignature || {});\n// We use class to make it easier to detect in heap snapshots by name\nclass ObjectToBeRetainedByReact {}\n\n// Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts\n// Check https://github.com/facebook/react/issues/15317 to get more information\nexport function createUseGridApiEventHandler(registryContainer) {\n  let cleanupTokensCounter = 0;\n  return function useGridApiEventHandler(apiRef, eventName, handler, options) {\n    if (registryContainer.registry === null) {\n      registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();\n    }\n    const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());\n    const subscription = React.useRef(null);\n    const handlerRef = React.useRef();\n    handlerRef.current = handler;\n    const cleanupTokenRef = React.useRef(null);\n    if (!subscription.current && handlerRef.current) {\n      const enhancedHandler = (params, event, details) => {\n        if (!event.defaultMuiPrevented) {\n          handlerRef.current?.(params, event, details);\n        }\n      };\n      subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n      cleanupTokensCounter += 1;\n      cleanupTokenRef.current = {\n        cleanupToken: cleanupTokensCounter\n      };\n      registryContainer.registry.register(objectRetainedByReact,\n      // The callback below will be called once this reference stops being retained\n      () => {\n        subscription.current?.();\n        subscription.current = null;\n        cleanupTokenRef.current = null;\n      }, cleanupTokenRef.current);\n    } else if (!handlerRef.current && subscription.current) {\n      subscription.current();\n      subscription.current = null;\n      if (cleanupTokenRef.current) {\n        registryContainer.registry.unregister(cleanupTokenRef.current);\n        cleanupTokenRef.current = null;\n      }\n    }\n    React.useEffect(() => {\n      if (!subscription.current && handlerRef.current) {\n        const enhancedHandler = (params, event, details) => {\n          if (!event.defaultMuiPrevented) {\n            handlerRef.current?.(params, event, details);\n          }\n        };\n        subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n      }\n      if (cleanupTokenRef.current && registryContainer.registry) {\n        // If the effect was called, it means that this render was committed\n        // so we can trust the cleanup function to remove the listener.\n        registryContainer.registry.unregister(cleanupTokenRef.current);\n        cleanupTokenRef.current = null;\n      }\n      return () => {\n        subscription.current?.();\n        subscription.current = null;\n      };\n    }, [apiRef, eventName, options]);\n  };\n}\nconst registryContainer = {\n  registry: null\n};\n\n// TODO: move to @mui/x-data-grid/internals\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCleanupTracking = () => {\n  registryContainer.registry?.reset();\n  registryContainer.registry = null;\n};\nexport const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);\nconst optionsSubscriberOptions = {\n  isFirst: true\n};\nexport function useGridApiOptionHandler(apiRef, eventName, handler) {\n  useGridApiEventHandler(apiRef, eventName, handler, optionsSubscriberOptions);\n}\nexport { GridSignature };","import * as React from 'react';\nexport function useGridApiMethod(privateApiRef, apiMethods, visibility) {\n  const isFirstRender = React.useRef(true);\n  React.useEffect(() => {\n    isFirstRender.current = false;\n    privateApiRef.current.register(visibility, apiMethods);\n  }, [privateApiRef, visibility, apiMethods]);\n  if (isFirstRender.current) {\n    privateApiRef.current.register(visibility, apiMethods);\n  }\n}","import * as React from 'react';\nimport { GridConfigurationContext } from \"../../components/GridConfigurationContext.js\";\nexport const useGridConfiguration = () => {\n  const configuration = React.useContext(GridConfigurationContext);\n  if (configuration === undefined) {\n    throw new Error(['MUI X: Could not find the data grid configuration context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n  }\n  return configuration;\n};","import * as React from 'react';\nexport function useGridLogger(privateApiRef, name) {\n  const logger = React.useRef(null);\n  if (logger.current) {\n    return logger.current;\n  }\n  const newLogger = privateApiRef.current.getLogger(name);\n  logger.current = newLogger;\n  return newLogger;\n}","import * as React from 'react';\nimport { isFunction } from \"../../utils/utils.js\";\nimport { useGridLogger } from \"./useGridLogger.js\";\nexport const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {\n  const logger = useGridLogger(apiRef, 'useNativeEventListener');\n  const [added, setAdded] = React.useState(false);\n  const handlerRef = React.useRef(handler);\n  const targetElement = isFunction(ref) ? ref() : ref?.current ?? null;\n  const wrapHandler = React.useCallback(event => {\n    return handlerRef.current && handlerRef.current(event);\n  }, []);\n  React.useEffect(() => {\n    handlerRef.current = handler;\n  }, [handler]);\n  React.useEffect(() => {\n    if (targetElement && eventName && !added) {\n      logger.debug(`Binding native ${eventName} event`);\n      targetElement.addEventListener(eventName, wrapHandler, options);\n      setAdded(true);\n      const unsubscribe = () => {\n        logger.debug(`Clearing native ${eventName} event`);\n        targetElement.removeEventListener(eventName, wrapHandler, options);\n      };\n      apiRef.current.subscribeEvent('unmount', unsubscribe);\n    }\n  }, [targetElement, wrapHandler, eventName, added, logger, options, apiRef]);\n};","import * as React from 'react';\nexport const GridPrivateApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  GridPrivateApiContext.displayName = 'GridPrivateApiContext';\n}\nexport function useGridPrivateApiContext() {\n  const privateApiRef = React.useContext(GridPrivateApiContext);\n  if (privateApiRef === undefined) {\n    throw new Error(['MUI X: Could not find the data grid private context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n  }\n  return privateApiRef;\n}","import * as React from 'react';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { useLazyRef } from \"./useLazyRef.js\";\nimport { useOnMount } from \"./useOnMount.js\";\nfunction isOutputSelector(selector) {\n  return selector.acceptsApiRef;\n}\n// TODO v8: Remove this function\nfunction applySelector(apiRef, selector) {\n  if (isOutputSelector(selector)) {\n    return selector(apiRef);\n  }\n  return selector(apiRef.current.state);\n}\n\n// TODO v8: Rename this function to `applySelector`\nfunction applySelectorV8(apiRef, selector, args, instanceId) {\n  if (isOutputSelector(selector)) {\n    return selector(apiRef, args);\n  }\n  return selector(apiRef.current.state, instanceId);\n}\nconst defaultCompare = Object.is;\nexport const objectShallowCompare = fastObjectShallowCompare;\nconst createRefs = () => ({\n  state: null,\n  equals: null,\n  selector: null\n});\n\n// TODO v8: Remove this function\nexport const useGridSelector = (apiRef, selector, equals = defaultCompare) => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!apiRef.current.state) {\n      warnOnce(['MUI X: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);\n    }\n  }\n  const refs = useLazyRef(createRefs);\n  const didInit = refs.current.selector !== null;\n  const [state, setState] = React.useState(\n  // We don't use an initialization function to avoid allocations\n  didInit ? null : applySelector(apiRef, selector));\n  refs.current.state = state;\n  refs.current.equals = equals;\n  refs.current.selector = selector;\n  useOnMount(() => {\n    return apiRef.current.store.subscribe(() => {\n      const newState = applySelector(apiRef, refs.current.selector);\n      if (!refs.current.equals(refs.current.state, newState)) {\n        refs.current.state = newState;\n        setState(newState);\n      }\n    });\n  });\n  return state;\n};\n\n// TODO v8: Rename this function to `useGridSelector`\nexport const useGridSelectorV8 = (apiRef, selector, args = undefined, equals = defaultCompare) => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!apiRef.current.state) {\n      warnOnce(['MUI X: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);\n    }\n  }\n  const refs = useLazyRef(createRefs);\n  const didInit = refs.current.selector !== null;\n  const [state, setState] = React.useState(\n  // We don't use an initialization function to avoid allocations\n  didInit ? null : applySelectorV8(apiRef, selector, args, apiRef.current.instanceId));\n  refs.current.state = state;\n  refs.current.equals = equals;\n  refs.current.selector = selector;\n  useOnMount(() => {\n    return apiRef.current.store.subscribe(() => {\n      const newState = applySelectorV8(apiRef, refs.current.selector, args, apiRef.current.instanceId);\n      if (!refs.current.equals(refs.current.state, newState)) {\n        refs.current.state = newState;\n        setState(newState);\n      }\n    });\n  });\n  return state;\n};","import * as React from 'react';\nimport { gridPaginationRowRangeSelector, gridPaginatedVisibleSortedGridRowEntriesSelector } from \"../features/pagination/gridPaginationSelector.js\";\nimport { gridExpandedSortedRowEntriesSelector } from \"../features/filter/gridFilterSelector.js\";\nexport const getVisibleRows = (apiRef, props) => {\n  let rows;\n  let range;\n  if (props.pagination && props.paginationMode === 'client') {\n    range = gridPaginationRowRangeSelector(apiRef);\n    rows = gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef);\n  } else {\n    rows = gridExpandedSortedRowEntriesSelector(apiRef);\n    if (rows.length === 0) {\n      range = null;\n    } else {\n      range = {\n        firstRowIndex: 0,\n        lastRowIndex: rows.length - 1\n      };\n    }\n  }\n  return {\n    rows,\n    range\n  };\n};\n\n/**\n * Computes the list of rows that are reachable by scroll.\n * Depending on whether pagination is enabled, it will return the rows in the current page.\n * - If the pagination is disabled or in server mode, it equals all the visible rows.\n * - If the row tree has several layers, it contains up to `state.pageSize` top level rows and all their descendants.\n * - If the row tree is flat, it only contains up to `state.pageSize` rows.\n */\nexport const useGridVisibleRows = (apiRef, props) => {\n  const response = getVisibleRows(apiRef, props);\n  return React.useMemo(() => ({\n    rows: response.rows,\n    range: response.range\n  }), [response.rows, response.range]);\n};","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nconst noop = () => {};\n\n/**\n * Runs an effect once, when `condition` is true.\n */\nexport const useRunOnce = (condition, effect) => {\n  const didRun = React.useRef(false);\n  useEnhancedEffect(() => {\n    if (didRun.current || !condition) {\n      return noop;\n    }\n    didRun.current = true;\n    return effect();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [didRun.current || condition]);\n};","import { GridPinnedColumnPosition } from \"../../hooks/features/columns/index.js\";\nexport const getPinnedCellOffset = (pinnedPosition, computedWidth, columnIndex, columnPositions, dimensions) => {\n  const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;\n  let pinnedOffset;\n  switch (pinnedPosition) {\n    case GridPinnedColumnPosition.LEFT:\n      pinnedOffset = columnPositions[columnIndex];\n      break;\n    case GridPinnedColumnPosition.RIGHT:\n      pinnedOffset = dimensions.columnsTotalWidth - columnPositions[columnIndex] - computedWidth + scrollbarWidth;\n      break;\n    default:\n      pinnedOffset = 0;\n      break;\n  }\n  return pinnedOffset;\n};","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridArrowUpwardIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexport const GridArrowDownwardIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexport const GridKeyboardArrowRight = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\nexport const GridExpandMoreIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\nexport const GridFilterListIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\nexport const GridFilterAltIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z\"\n}), 'FilterAlt');\nexport const GridSearchIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\nexport const GridMenuIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\nexport const GridCheckCircleIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\nexport const GridColumnIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z\"\n}), 'ColumnIcon');\nexport const GridSeparatorIcon = createSvgIcon(/*#__PURE__*/_jsx(\"rect\", {\n  width: \"1\",\n  height: \"24\",\n  x: \"11.5\",\n  rx: \"0.5\"\n}), 'Separator');\nexport const GridViewHeadlineIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z\"\n}), 'ViewHeadline');\nexport const GridTableRowsIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z\"\n}), 'TableRows');\nexport const GridViewStreamIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M4 18h17v-6H4v6zM4 5v6h17V5H4z\"\n}), 'ViewStream');\nexport const GridTripleDotsVerticalIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'TripleDotsVertical');\nexport const GridCloseIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexport const GridAddIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexport const GridRemoveIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\nexport const GridLoadIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"\n}), 'Load');\nexport const GridDragIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'Drag');\nexport const GridSaveAltIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z\"\n}), 'SaveAlt');\nexport const GridCheckIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\nexport const GridMoreVertIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\nexport const GridVisibilityOffIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexport const GridViewColumnIcon = createSvgIcon(/*#__PURE__*/_jsx(\"g\", {\n  children: /*#__PURE__*/_jsx(\"path\", {\n    d: \"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z\"\n  })\n}), 'ViewColumn');\nexport const GridClearIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\nexport const GridDeleteIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexport const GridDeleteForeverIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');","export function isLeaf(node) {\n  return node.field !== undefined;\n}\n\n/**\n * A function used to process headerClassName params.\n */\n\n/**\n * The union type representing the [[GridColDef]] column header class type.\n */","var GridEditModes = /*#__PURE__*/function (GridEditModes) {\n  GridEditModes[\"Cell\"] = \"cell\";\n  GridEditModes[\"Row\"] = \"row\";\n  return GridEditModes;\n}(GridEditModes || {});\nvar GridCellModes = /*#__PURE__*/function (GridCellModes) {\n  GridCellModes[\"Edit\"] = \"edit\";\n  GridCellModes[\"View\"] = \"view\";\n  return GridCellModes;\n}(GridCellModes || {});\nvar GridRowModes = /*#__PURE__*/function (GridRowModes) {\n  GridRowModes[\"Edit\"] = \"edit\";\n  GridRowModes[\"View\"] = \"view\";\n  return GridRowModes;\n}(GridRowModes || {});\nexport { GridEditModes, GridCellModes, GridRowModes };","/**\n * Filter item definition interface.\n * @demos\n *   - [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator)\n */\nvar GridLogicOperator = /*#__PURE__*/function (GridLogicOperator) {\n  GridLogicOperator[\"And\"] = \"and\";\n  GridLogicOperator[\"Or\"] = \"or\";\n  return GridLogicOperator;\n}(GridLogicOperator || {});\nexport { GridLogicOperator };","/**\n * Params passed to `apiRef.current.setEditCellValue`.\n */\nvar GridCellEditStartReasons = /*#__PURE__*/function (GridCellEditStartReasons) {\n  GridCellEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n  GridCellEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n  GridCellEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n  GridCellEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n  GridCellEditStartReasons[\"pasteKeyDown\"] = \"pasteKeyDown\";\n  return GridCellEditStartReasons;\n}(GridCellEditStartReasons || {});\n/**\n * Params passed to the `cellEditStart` event.\n */\nvar GridCellEditStopReasons = /*#__PURE__*/function (GridCellEditStopReasons) {\n  GridCellEditStopReasons[\"cellFocusOut\"] = \"cellFocusOut\";\n  GridCellEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n  GridCellEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n  GridCellEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n  GridCellEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n  return GridCellEditStopReasons;\n}(GridCellEditStopReasons || {});\n/**\n * Params passed to the `cellEditStop event.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridCellEditStartReasons, GridCellEditStopReasons };","/**\n * Object passed as parameter in the row callbacks.\n * @demos\n *   - [Master detail](/x/react-data-grid/master-detail/)\n */\n/**\n * Object passed as parameter in the row `getRowClassName` callback prop.\n * @demos\n *   - [Styling rows](/x/react-data-grid/style/#styling-rows)\n */\n/**\n * Object passed as parameter in the row `getRowHeight` callback prop.\n */\n/**\n * The getRowHeight return value.\n */\nvar GridRowEditStartReasons = /*#__PURE__*/function (GridRowEditStartReasons) {\n  GridRowEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n  GridRowEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n  GridRowEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n  GridRowEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n  return GridRowEditStartReasons;\n}(GridRowEditStartReasons || {});\n/**\n * Params passed to the `rowEditStart` event.\n */\nvar GridRowEditStopReasons = /*#__PURE__*/function (GridRowEditStopReasons) {\n  GridRowEditStopReasons[\"rowFocusOut\"] = \"rowFocusOut\";\n  GridRowEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n  GridRowEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n  GridRowEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n  GridRowEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n  return GridRowEditStopReasons;\n}(GridRowEditStopReasons || {});\n/**\n * Object passed as parameter in the row `getRowSpacing` callback prop.\n * @demos\n *   - [Row spacing](/x/react-data-grid/row-height/#row-spacing)\n */\n/**\n * The getRowSpacing return value.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridRowEditStartReasons, GridRowEditStopReasons };","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        const utilityClass = getUtilityClass(key);\n        if (utilityClass !== '') {\n          acc.push(utilityClass);\n        }\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      // @ts-ignore\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        setRef(ref, instance);\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride != null ? idOverride : reactId;\n  }\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(fn, EMPTY);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n  constructor() {\n    this.currentId = null;\n    this.clear = () => {\n      if (this.currentId !== null) {\n        clearTimeout(this.currentId);\n        this.currentId = null;\n      }\n    };\n    this.disposeEffect = () => {\n      return this.clear;\n    };\n  }\n  static create() {\n    return new Timeout();\n  }\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}","import { GridPinnedColumnPosition } from \"../hooks/features/columns/gridColumnsInterfaces.js\";\nexport const shouldCellShowRightBorder = (pinnedPosition, indexInSection, sectionLength, showCellVerticalBorderRootProp, gridHasFiller) => {\n  const isSectionLastCell = indexInSection === sectionLength - 1;\n  if (pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell) {\n    return true;\n  }\n  if (showCellVerticalBorderRootProp) {\n    if (pinnedPosition === GridPinnedColumnPosition.LEFT) {\n      return true;\n    }\n    if (pinnedPosition === GridPinnedColumnPosition.RIGHT) {\n      return !isSectionLastCell;\n    }\n    // pinnedPosition === undefined, middle section\n    return !isSectionLastCell || gridHasFiller;\n  }\n  return false;\n};\nexport const shouldCellShowLeftBorder = (pinnedPosition, indexInSection) => {\n  return pinnedPosition === GridPinnedColumnPosition.RIGHT && indexInSection === 0;\n};","import { lruMemoize, createSelectorCreator } from 'reselect';\nimport { warnOnce } from '@mui/x-internals/warning';\nconst reselectCreateSelector = createSelectorCreator({\n  memoize: lruMemoize,\n  memoizeOptions: {\n    maxSize: 1,\n    equalityCheck: Object.is\n  }\n});\n\n// TODO v8: Remove this type\n\n// TODO v8: Rename this type to `OutputSelector`\n\n// TODO v8: Remove this type\n\n// TODO v8: Rename this type to `SelectorArgs`\n\n// TODO v8: Remove this type\n\n// TODO v8: Rename this type to `CreateSelectorFunction`\n\nconst cache = new WeakMap();\nfunction checkIsAPIRef(value) {\n  return 'current' in value && 'instanceId' in value.current;\n}\nconst DEFAULT_INSTANCE_ID = {\n  id: 'default'\n};\n\n// TODO v8: Remove this function\nexport const createSelector = (a, b, c, d, e, f, ...other) => {\n  if (other.length > 0) {\n    throw new Error('Unsupported number of selectors');\n  }\n  let selector;\n  if (a && b && c && d && e && f) {\n    selector = (stateOrApiRef, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, instanceId);\n      const vb = b(state, instanceId);\n      const vc = c(state, instanceId);\n      const vd = d(state, instanceId);\n      const ve = e(state, instanceId);\n      return f(va, vb, vc, vd, ve);\n    };\n  } else if (a && b && c && d && e) {\n    selector = (stateOrApiRef, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, instanceId);\n      const vb = b(state, instanceId);\n      const vc = c(state, instanceId);\n      const vd = d(state, instanceId);\n      return e(va, vb, vc, vd);\n    };\n  } else if (a && b && c && d) {\n    selector = (stateOrApiRef, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, instanceId);\n      const vb = b(state, instanceId);\n      const vc = c(state, instanceId);\n      return d(va, vb, vc);\n    };\n  } else if (a && b && c) {\n    selector = (stateOrApiRef, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, instanceId);\n      const vb = b(state, instanceId);\n      return c(va, vb);\n    };\n  } else if (a && b) {\n    selector = (stateOrApiRef, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, instanceId);\n      return b(va);\n    };\n  } else {\n    throw new Error('Missing arguments');\n  }\n\n  // We use this property to detect if the selector was created with createSelector\n  // or it's only a simple function the receives the state and returns part of it.\n  selector.acceptsApiRef = true;\n  return selector;\n};\n\n// TODO v8: Rename this function to `createSelector`\nexport const createSelectorV8 = (a, b, c, d, e, f, ...other) => {\n  if (other.length > 0) {\n    throw new Error('Unsupported number of selectors');\n  }\n  let selector;\n  if (a && b && c && d && e && f) {\n    selector = (stateOrApiRef, args, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, args, instanceId);\n      const vb = b(state, args, instanceId);\n      const vc = c(state, args, instanceId);\n      const vd = d(state, args, instanceId);\n      const ve = e(state, args, instanceId);\n      return f(va, vb, vc, vd, ve, args);\n    };\n  } else if (a && b && c && d && e) {\n    selector = (stateOrApiRef, args, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, args, instanceId);\n      const vb = b(state, args, instanceId);\n      const vc = c(state, args, instanceId);\n      const vd = d(state, args, instanceId);\n      return e(va, vb, vc, vd, args);\n    };\n  } else if (a && b && c && d) {\n    selector = (stateOrApiRef, args, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, args, instanceId);\n      const vb = b(state, args, instanceId);\n      const vc = c(state, args, instanceId);\n      return d(va, vb, vc, args);\n    };\n  } else if (a && b && c) {\n    selector = (stateOrApiRef, args, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, args, instanceId);\n      const vb = b(state, args, instanceId);\n      return c(va, vb, args);\n    };\n  } else if (a && b) {\n    selector = (stateOrApiRef, args, instanceIdParam) => {\n      const isAPIRef = checkIsAPIRef(stateOrApiRef);\n      const instanceId = instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID);\n      const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n      const va = a(state, args, instanceId);\n      return b(va, args);\n    };\n  } else {\n    throw new Error('Missing arguments');\n  }\n\n  // We use this property to detect if the selector was created with createSelector\n  // or it's only a simple function the receives the state and returns part of it.\n  selector.acceptsApiRef = true;\n  return selector;\n};\n\n// TODO v8: Remove this function\nexport const createSelectorMemoized = (...args) => {\n  const selector = (stateOrApiRef, instanceId) => {\n    const isAPIRef = checkIsAPIRef(stateOrApiRef);\n    const cacheKey = isAPIRef ? stateOrApiRef.current.instanceId : instanceId ?? DEFAULT_INSTANCE_ID;\n    const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n    if (process.env.NODE_ENV !== 'production') {\n      if (cacheKey.id === 'default') {\n        warnOnce(['MUI X: A selector was called without passing the instance ID, which may impact the performance of the grid.', 'To fix, call it with `apiRef`, for example `mySelector(apiRef)`, or pass the instance ID explicitly, for example `mySelector(state, apiRef.current.instanceId)`.']);\n      }\n    }\n    const cacheArgsInit = cache.get(cacheKey);\n    const cacheArgs = cacheArgsInit ?? new Map();\n    const cacheFn = cacheArgs?.get(args);\n    if (cacheArgs && cacheFn) {\n      // We pass the cache key because the called selector might have as\n      // dependency another selector created with this `createSelector`.\n      return cacheFn(state, cacheKey);\n    }\n    const fn = reselectCreateSelector(...args);\n    if (!cacheArgsInit) {\n      cache.set(cacheKey, cacheArgs);\n    }\n    cacheArgs.set(args, fn);\n    return fn(state, cacheKey);\n  };\n\n  // We use this property to detect if the selector was created with createSelector\n  // or it's only a simple function the receives the state and returns part of it.\n  selector.acceptsApiRef = true;\n  return selector;\n};\n\n// TODO v8: Rename this function to `createSelectorMemoized`\nexport const createSelectorMemoizedV8 = (...args) => {\n  const selector = (stateOrApiRef, selectorArgs, instanceId) => {\n    const isAPIRef = checkIsAPIRef(stateOrApiRef);\n    const cacheKey = isAPIRef ? stateOrApiRef.current.instanceId : instanceId ?? DEFAULT_INSTANCE_ID;\n    const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n    if (process.env.NODE_ENV !== 'production') {\n      if (cacheKey.id === 'default') {\n        warnOnce(['MUI X: A selector was called without passing the instance ID, which may impact the performance of the grid.', 'To fix, call it with `apiRef`, for example `mySelector(apiRef)`, or pass the instance ID explicitly, for example `mySelector(state, apiRef.current.instanceId)`.']);\n      }\n    }\n    const cacheArgsInit = cache.get(cacheKey);\n    const cacheArgs = cacheArgsInit ?? new Map();\n    const cacheFn = cacheArgs?.get(args);\n    if (cacheArgs && cacheFn) {\n      // We pass the cache key because the called selector might have as\n      // dependency another selector created with this `createSelector`.\n      return cacheFn(state, selectorArgs, cacheKey);\n    }\n    const fn = reselectCreateSelector(...args);\n    if (!cacheArgsInit) {\n      cache.set(cacheKey, cacheArgs);\n    }\n    cacheArgs.set(args, fn);\n    return fn(state, selectorArgs, cacheKey);\n  };\n\n  // We use this property to detect if the selector was created with createSelector\n  // or it's only a simple function the receives the state and returns part of it.\n  selector.acceptsApiRef = true;\n  return selector;\n};","import { gridClasses } from \"../constants/gridClasses.js\";\nexport function isOverflown(element) {\n  return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n}\nexport function findParentElementFromClassName(elem, className) {\n  return elem.closest(`.${className}`);\n}\n\n// TODO, eventually replaces this function with CSS.escape, once available in jsdom, either added manually or built in\n// https://github.com/jsdom/jsdom/issues/1550#issuecomment-236734471\nexport function escapeOperandAttributeSelector(operand) {\n  return operand.replace(/[\"\\\\]/g, '\\\\$&');\n}\nexport function getGridColumnHeaderElement(root, field) {\n  return root.querySelector(`[role=\"columnheader\"][data-field=\"${escapeOperandAttributeSelector(field)}\"]`);\n}\nfunction getGridRowElementSelector(id) {\n  return `.${gridClasses.row}[data-id=\"${escapeOperandAttributeSelector(String(id))}\"]`;\n}\nexport function getGridRowElement(root, id) {\n  return root.querySelector(getGridRowElementSelector(id));\n}\nexport function getGridCellElement(root, {\n  id,\n  field\n}) {\n  const rowSelector = getGridRowElementSelector(id);\n  const cellSelector = `.${gridClasses.cell}[data-field=\"${escapeOperandAttributeSelector(field)}\"]`;\n  const selector = `${rowSelector} ${cellSelector}`;\n  return root.querySelector(selector);\n}\n\n// https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\nexport const getActiveElement = (root = document) => {\n  const activeEl = root.activeElement;\n  if (!activeEl) {\n    return null;\n  }\n  if (activeEl.shadowRoot) {\n    return getActiveElement(activeEl.shadowRoot);\n  }\n  return activeEl;\n};\nexport function isEventTargetInPortal(event) {\n  if (\n  // The target is not an element when triggered by a Select inside the cell\n  // See https://github.com/mui/material-ui/issues/10534\n  event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {\n    return true;\n  }\n  return false;\n}\nexport function getFieldFromHeaderElem(colCellEl) {\n  return colCellEl.getAttribute('data-field');\n}\nexport function findHeaderElementFromField(elem, field) {\n  return elem.querySelector(`[data-field=\"${escapeOperandAttributeSelector(field)}\"]`);\n}\nexport function getFieldsFromGroupHeaderElem(colCellEl) {\n  return colCellEl.getAttribute('data-fields').slice(2, -2).split('-|-');\n}\nexport function findGroupHeaderElementsFromField(elem, field) {\n  return Array.from(elem.querySelectorAll(`[data-fields*=\"|-${escapeOperandAttributeSelector(field)}-|\"]`) ?? []);\n}\nexport function findGridCellElementsFromCol(col, api) {\n  const root = findParentElementFromClassName(col, gridClasses.root);\n  if (!root) {\n    throw new Error('MUI X: The root element is not found.');\n  }\n  const ariaColIndex = col.getAttribute('aria-colindex');\n  if (!ariaColIndex) {\n    return [];\n  }\n  const colIndex = Number(ariaColIndex) - 1;\n  const cells = [];\n  if (!api.virtualScrollerRef?.current) {\n    return [];\n  }\n  queryRows(api).forEach(rowElement => {\n    const rowId = rowElement.getAttribute('data-id');\n    if (!rowId) {\n      return;\n    }\n    let columnIndex = colIndex;\n    const cellColSpanInfo = api.unstable_getCellColSpanInfo(rowId, colIndex);\n    if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {\n      columnIndex = cellColSpanInfo.leftVisibleCellIndex;\n    }\n    const cell = rowElement.querySelector(`[data-colindex=\"${columnIndex}\"]`);\n    if (cell) {\n      cells.push(cell);\n    }\n  });\n  return cells;\n}\nexport function findGridElement(api, klass) {\n  return api.rootElementRef.current.querySelector(`.${gridClasses[klass]}`);\n}\nconst findPinnedCells = ({\n  api,\n  colIndex,\n  position,\n  filterFn\n}) => {\n  if (colIndex === null) {\n    return [];\n  }\n  const cells = [];\n  queryRows(api).forEach(rowElement => {\n    const rowId = rowElement.getAttribute('data-id');\n    if (!rowId) {\n      return;\n    }\n    rowElement.querySelectorAll(`.${gridClasses[position === 'left' ? 'cell--pinnedLeft' : 'cell--pinnedRight']}`).forEach(cell => {\n      const currentColIndex = parseCellColIndex(cell);\n      if (currentColIndex !== null && filterFn(currentColIndex)) {\n        cells.push(cell);\n      }\n    });\n  });\n  return cells;\n};\nexport function findLeftPinnedCellsAfterCol(api, col, isRtl) {\n  const colIndex = parseCellColIndex(col);\n  return findPinnedCells({\n    api,\n    colIndex,\n    position: isRtl ? 'right' : 'left',\n    filterFn: index => isRtl ? index < colIndex : index > colIndex\n  });\n}\nexport function findRightPinnedCellsBeforeCol(api, col, isRtl) {\n  const colIndex = parseCellColIndex(col);\n  return findPinnedCells({\n    api,\n    colIndex,\n    position: isRtl ? 'left' : 'right',\n    filterFn: index => isRtl ? index > colIndex : index < colIndex\n  });\n}\nconst findPinnedHeaders = ({\n  api,\n  colIndex,\n  position,\n  filterFn\n}) => {\n  if (!api.columnHeadersContainerRef?.current) {\n    return [];\n  }\n  if (colIndex === null) {\n    return [];\n  }\n  const elements = [];\n  api.columnHeadersContainerRef.current.querySelectorAll(`.${gridClasses[position === 'left' ? 'columnHeader--pinnedLeft' : 'columnHeader--pinnedRight']}`).forEach(element => {\n    const currentColIndex = parseCellColIndex(element);\n    if (currentColIndex !== null && filterFn(currentColIndex)) {\n      elements.push(element);\n    }\n  });\n  return elements;\n};\nexport function findLeftPinnedHeadersAfterCol(api, col, isRtl) {\n  const colIndex = parseCellColIndex(col);\n  return findPinnedHeaders({\n    api,\n    position: isRtl ? 'right' : 'left',\n    colIndex,\n    filterFn: index => isRtl ? index < colIndex : index > colIndex\n  });\n}\nexport function findRightPinnedHeadersBeforeCol(api, col, isRtl) {\n  const colIndex = parseCellColIndex(col);\n  return findPinnedHeaders({\n    api,\n    position: isRtl ? 'left' : 'right',\n    colIndex,\n    filterFn: index => isRtl ? index > colIndex : index < colIndex\n  });\n}\nexport function findGridHeader(api, field) {\n  const headers = api.columnHeadersContainerRef.current;\n  return headers.querySelector(`:scope > div > [data-field=\"${escapeOperandAttributeSelector(field)}\"][role=\"columnheader\"]`);\n}\nexport function findGridCells(api, field) {\n  const container = api.virtualScrollerRef.current;\n  return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field=\"${escapeOperandAttributeSelector(field)}\"][role=\"gridcell\"]`));\n}\nfunction queryRows(api) {\n  return api.virtualScrollerRef.current.querySelectorAll(\n  // Use > to ignore rows from nested data grids (for example in detail panel)\n  `:scope > div > div > .${gridClasses.row}`);\n}\nfunction parseCellColIndex(col) {\n  const ariaColIndex = col.getAttribute('aria-colindex');\n  if (!ariaColIndex) {\n    return null;\n  }\n  return Number(ariaColIndex) - 1;\n}","// Non printable keys have a name, for example \"ArrowRight\", see the whole list:\n// https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n// So event.key.length === 1 is often enough.\n//\n// However, we also need to ignore shortcuts, for example: select all:\n// - Windows: Ctrl+A, event.ctrlKey is true\n// - macOS: ⌘ Command+A, event.metaKey is true\nexport function isPrintableKey(event) {\n  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\nexport const GRID_MULTIPLE_SELECTION_KEYS = ['Meta', 'Control', 'Shift'];\nexport const GRID_CELL_EXIT_EDIT_MODE_KEYS = ['Enter', 'Escape', 'Tab'];\nexport const GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];\nexport const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;\nexport const isCellEnterEditModeKeys = event => isPrintableKey(event) || event.key === 'Enter' || event.key === 'Backspace' || event.key === 'Delete';\nexport const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;\nexport const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;\nexport const isNavigationKey = key => key.indexOf('Arrow') === 0 || key.indexOf('Page') === 0 || key === ' ' || key === 'Home' || key === 'End';\nexport const isKeyboardEvent = event => !!event.key;\nexport const isHideMenuKey = key => key === 'Tab' || key === 'Escape';\n\n// In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false.\n// However, maybe it's overkill to fix, so let's be lazy.\nexport function isPasteShortcut(event) {\n  if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v' && !event.shiftKey && !event.altKey) {\n    return true;\n  }\n  return false;\n}","export function isNumber(value) {\n  return typeof value === 'number' && !Number.isNaN(value);\n}\nexport function isFunction(value) {\n  return typeof value === 'function';\n}\nexport function isObject(value) {\n  return typeof value === 'object' && value !== null;\n}\nexport function localStorageAvailable() {\n  try {\n    // Incognito mode might reject access to the localStorage for security reasons.\n    // window isn't defined on Node.js\n    // https://stackoverflow.com/questions/16427636/check-if-localstorage-is-available\n    const key = '__some_random_key_you_are_not_going_to_use__';\n    window.localStorage.setItem(key, key);\n    window.localStorage.removeItem(key);\n    return true;\n  } catch (err) {\n    return false;\n  }\n}\nexport function escapeRegExp(value) {\n  return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Follows the CSS specification behavior for min and max\n * If min > max, then the min have priority\n */\nexport const clamp = (value, min, max) => Math.max(min, Math.min(max, value));\n\n/**\n * Create an array containing the range [from, to[\n */\nexport function range(from, to) {\n  return Array.from({\n    length: to - from\n  }).map((_, i) => from + i);\n}\n\n/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * We only type the public interface to avoid dozens of `as` in the function.\n */\n\nexport function isDeepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (a && b && typeof a === 'object' && typeof b === 'object') {\n    if (a.constructor !== b.constructor) {\n      return false;\n    }\n    if (Array.isArray(a)) {\n      const length = a.length;\n      if (length !== b.length) {\n        return false;\n      }\n      for (let i = 0; i < length; i += 1) {\n        if (!isDeepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a instanceof Map && b instanceof Map) {\n      if (a.size !== b.size) {\n        return false;\n      }\n      const entriesA = Array.from(a.entries());\n      for (let i = 0; i < entriesA.length; i += 1) {\n        if (!b.has(entriesA[i][0])) {\n          return false;\n        }\n      }\n      for (let i = 0; i < entriesA.length; i += 1) {\n        const entryA = entriesA[i];\n        if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a instanceof Set && b instanceof Set) {\n      if (a.size !== b.size) {\n        return false;\n      }\n      const entries = Array.from(a.entries());\n      for (let i = 0; i < entries.length; i += 1) {\n        if (!b.has(entries[i][0])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      const length = a.length;\n      if (length !== b.length) {\n        return false;\n      }\n      for (let i = 0; i < length; i += 1) {\n        if (a[i] !== b[i]) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a.constructor === RegExp) {\n      return a.source === b.source && a.flags === b.flags;\n    }\n    if (a.valueOf !== Object.prototype.valueOf) {\n      return a.valueOf() === b.valueOf();\n    }\n    if (a.toString !== Object.prototype.toString) {\n      return a.toString() === b.toString();\n    }\n    const keys = Object.keys(a);\n    const length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (let i = 0; i < length; i += 1) {\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (let i = 0; i < length; i += 1) {\n      const key = keys[i];\n      if (!isDeepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  // eslint-disable-next-line no-self-compare\n  return a !== a && b !== b;\n}\n\n// Pseudo random number. See https://stackoverflow.com/a/47593316\nfunction mulberry32(a) {\n  return () => {\n    /* eslint-disable */\n    let t = a += 0x6d2b79f5;\n    t = Math.imul(t ^ t >>> 15, t | 1);\n    t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n    return ((t ^ t >>> 14) >>> 0) / 4294967296;\n    /* eslint-enable */\n  };\n}\n\n/**\n * Create a random number generator from a seed. The seed\n * ensures that the random number generator produces the\n * same sequence of 'random' numbers on every render. It\n * returns a function that generates a random number between\n * a specified min and max.\n */\nexport function createRandomNumberGenerator(seed) {\n  const random = mulberry32(seed);\n  return (min, max) => min + (max - min) * random();\n}\nexport function deepClone(obj) {\n  if (typeof structuredClone === 'function') {\n    return structuredClone(obj);\n  }\n  return JSON.parse(JSON.stringify(obj));\n}\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Mark a value as used so eslint doesn't complain. Use this instead\n * of a `eslint-disable-next-line react-hooks/exhaustive-deps` because\n * that hint disables checks on all values instead of just one.\n */\nexport function eslintUseValue(_) {}\n/* eslint-enable @typescript-eslint/no-unused-vars */","import * as React from 'react';\nimport { fastObjectShallowCompare } from \"../fastObjectShallowCompare/index.js\";\nexport function fastMemo(component) {\n  return /*#__PURE__*/React.memo(component, fastObjectShallowCompare);\n}","const is = Object.is;\nexport function fastObjectShallowCompare(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (!(a instanceof Object) || !(b instanceof Object)) {\n    return false;\n  }\n  let aLength = 0;\n  let bLength = 0;\n\n  /* eslint-disable guard-for-in */\n  for (const key in a) {\n    aLength += 1;\n    if (!is(a[key], b[key])) {\n      return false;\n    }\n    if (!(key in b)) {\n      return false;\n    }\n  }\n\n  /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n  for (const _ in b) {\n    bLength += 1;\n  }\n  return aLength === bLength;\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import type { AnyFunction } from '../types'\r\n\r\n/**\r\n * Runs a check to determine if the given result function behaves as an\r\n * identity function. An identity function is one that returns its\r\n * input unchanged, for example, `x => x`. This check helps ensure\r\n * efficient memoization and prevent unnecessary re-renders by encouraging\r\n * proper use of transformation logic in result functions and\r\n * extraction logic in input selectors.\r\n *\r\n * @param resultFunc - The result function to be checked.\r\n * @param inputSelectorsResults - The results of the input selectors.\r\n * @param outputSelectorResult - The result of the output selector.\r\n *\r\n * @see {@link https://reselect.js.org/api/development-only-stability-checks#identityfunctioncheck `identityFunctionCheck`}\r\n *\r\n * @since 5.0.0\r\n * @internal\r\n */\r\nexport const runIdentityFunctionCheck = (\r\n  resultFunc: AnyFunction,\r\n  inputSelectorsResults: unknown[],\r\n  outputSelectorResult: unknown\r\n) => {\r\n  if (\r\n    inputSelectorsResults.length === 1 &&\r\n    inputSelectorsResults[0] === outputSelectorResult\r\n  ) {\r\n    let isInputSameAsOutput = false\r\n    try {\r\n      const emptyObject = {}\r\n      if (resultFunc(emptyObject) === emptyObject) isInputSameAsOutput = true\r\n    } catch {\r\n      // Do nothing\r\n    }\r\n    if (isInputSameAsOutput) {\r\n      let stack: string | undefined = undefined\r\n      try {\r\n        throw new Error()\r\n      } catch (e) {\r\n        // eslint-disable-next-line @typescript-eslint/no-extra-semi, no-extra-semi\r\n        ;({ stack } = e as Error)\r\n      }\r\n      console.warn(\r\n        'The result function returned its own inputs without modification. e.g' +\r\n          '\\n`createSelector([state => state.todos], todos => todos)`' +\r\n          '\\nThis could lead to inefficient memoization and unnecessary re-renders.' +\r\n          '\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.',\r\n        { stack }\r\n      )\r\n    }\r\n  }\r\n}\r\n","import { runIdentityFunctionCheck } from './devModeChecks/identityFunctionCheck'\r\nimport { runInputStabilityCheck } from './devModeChecks/inputStabilityCheck'\r\nimport { globalDevModeChecks } from './devModeChecks/setGlobalDevModeChecks'\r\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\r\nimport type {\r\n  DevModeChecks,\r\n  Selector,\r\n  SelectorArray,\r\n  DevModeChecksExecutionInfo\r\n} from './types'\r\n\r\nexport const NOT_FOUND = /* @__PURE__ */ Symbol('NOT_FOUND')\r\nexport type NOT_FOUND_TYPE = typeof NOT_FOUND\r\n\r\n/**\r\n * Assert that the provided value is a function. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param func - The value to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsFunction<FunctionType extends Function>(\r\n  func: unknown,\r\n  errorMessage = `expected a function, instead received ${typeof func}`\r\n): asserts func is FunctionType {\r\n  if (typeof func !== 'function') {\r\n    throw new TypeError(errorMessage)\r\n  }\r\n}\r\n\r\n/**\r\n * Assert that the provided value is an object. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param object - The value to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsObject<ObjectType extends Record<string, unknown>>(\r\n  object: unknown,\r\n  errorMessage = `expected an object, instead received ${typeof object}`\r\n): asserts object is ObjectType {\r\n  if (typeof object !== 'object') {\r\n    throw new TypeError(errorMessage)\r\n  }\r\n}\r\n\r\n/**\r\n * Assert that the provided array is an array of functions. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param array - The array to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsArrayOfFunctions<FunctionType extends Function>(\r\n  array: unknown[],\r\n  errorMessage = `expected all items to be functions, instead received the following types: `\r\n): asserts array is FunctionType[] {\r\n  if (\r\n    !array.every((item): item is FunctionType => typeof item === 'function')\r\n  ) {\r\n    const itemTypes = array\r\n      .map(item =>\r\n        typeof item === 'function'\r\n          ? `function ${item.name || 'unnamed'}()`\r\n          : typeof item\r\n      )\r\n      .join(', ')\r\n    throw new TypeError(`${errorMessage}[${itemTypes}]`)\r\n  }\r\n}\r\n\r\n/**\r\n * Ensure that the input is an array. If it's already an array, it's returned as is.\r\n * If it's not an array, it will be wrapped in a new array.\r\n *\r\n * @param item - The item to be checked.\r\n * @returns An array containing the input item. If the input is already an array, it's returned without modification.\r\n */\r\nexport const ensureIsArray = (item: unknown) => {\r\n  return Array.isArray(item) ? item : [item]\r\n}\r\n\r\n/**\r\n * Extracts the \"dependencies\" / \"input selectors\" from the arguments of `createSelector`.\r\n *\r\n * @param createSelectorArgs - Arguments passed to `createSelector` as an array.\r\n * @returns An array of \"input selectors\" / \"dependencies\".\r\n * @throws A `TypeError` if any of the input selectors is not function.\r\n */\r\nexport function getDependencies(createSelectorArgs: unknown[]) {\r\n  const dependencies = Array.isArray(createSelectorArgs[0])\r\n    ? createSelectorArgs[0]\r\n    : createSelectorArgs\r\n\r\n  assertIsArrayOfFunctions<Selector>(\r\n    dependencies,\r\n    `createSelector expects all input-selectors to be functions, but received the following types: `\r\n  )\r\n\r\n  return dependencies as SelectorArray\r\n}\r\n\r\n/**\r\n * Runs each input selector and returns their collective results as an array.\r\n *\r\n * @param dependencies - An array of \"dependencies\" or \"input selectors\".\r\n * @param inputSelectorArgs - An array of arguments being passed to the input selectors.\r\n * @returns An array of input selector results.\r\n */\r\nexport function collectInputSelectorResults(\r\n  dependencies: SelectorArray,\r\n  inputSelectorArgs: unknown[] | IArguments\r\n) {\r\n  const inputSelectorResults = []\r\n  const { length } = dependencies\r\n  for (let i = 0; i < length; i++) {\r\n    // @ts-ignore\r\n    // apply arguments instead of spreading and mutate a local list of params for performance.\r\n    inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs))\r\n  }\r\n  return inputSelectorResults\r\n}\r\n\r\n/**\r\n * Retrieves execution information for development mode checks.\r\n *\r\n * @param devModeChecks - Custom Settings for development mode checks. These settings will override the global defaults.\r\n * @param firstRun - Indicates whether it is the first time the selector has run.\r\n * @returns  An object containing the execution information for each development mode check.\r\n */\r\nexport const getDevModeChecksExecutionInfo = (\r\n  firstRun: boolean,\r\n  devModeChecks: Partial<DevModeChecks>\r\n) => {\r\n  const { identityFunctionCheck, inputStabilityCheck } = {\r\n    ...globalDevModeChecks,\r\n    ...devModeChecks\r\n  }\r\n  return {\r\n    identityFunctionCheck: {\r\n      shouldRun:\r\n        identityFunctionCheck === 'always' ||\r\n        (identityFunctionCheck === 'once' && firstRun),\r\n      run: runIdentityFunctionCheck\r\n    },\r\n    inputStabilityCheck: {\r\n      shouldRun:\r\n        inputStabilityCheck === 'always' ||\r\n        (inputStabilityCheck === 'once' && firstRun),\r\n      run: runInputStabilityCheck\r\n    }\r\n  } satisfies DevModeChecksExecutionInfo\r\n}\r\n","// Original source:\r\n// - https://github.com/simonihmig/tracked-redux/blob/master/packages/tracked-redux/src/-private/proxy.ts\r\n\r\nimport type { Node, Tag } from './tracking'\r\nimport {\r\n  consumeCollection,\r\n  consumeTag,\r\n  createTag,\r\n  dirtyCollection,\r\n  dirtyTag\r\n} from './tracking'\r\n\r\nexport const REDUX_PROXY_LABEL = Symbol()\r\n\r\nlet nextId = 0\r\n\r\nconst proto = Object.getPrototypeOf({})\r\n\r\nclass ObjectTreeNode<T extends Record<string, unknown>> implements Node<T> {\r\n  proxy: T = new Proxy(this, objectProxyHandler) as unknown as T\r\n  tag = createTag()\r\n  tags = {} as Record<string, Tag>\r\n  children = {} as Record<string, Node>\r\n  collectionTag = null\r\n  id = nextId++\r\n\r\n  constructor(public value: T) {\r\n    this.value = value\r\n    this.tag.value = value\r\n  }\r\n}\r\n\r\nconst objectProxyHandler = {\r\n  get(node: Node, key: string | symbol): unknown {\r\n    function calculateResult() {\r\n      const { value } = node\r\n\r\n      const childValue = Reflect.get(value, key)\r\n\r\n      if (typeof key === 'symbol') {\r\n        return childValue\r\n      }\r\n\r\n      if (key in proto) {\r\n        return childValue\r\n      }\r\n\r\n      if (typeof childValue === 'object' && childValue !== null) {\r\n        let childNode = node.children[key]\r\n\r\n        if (childNode === undefined) {\r\n          childNode = node.children[key] = createNode(childValue)\r\n        }\r\n\r\n        if (childNode.tag) {\r\n          consumeTag(childNode.tag)\r\n        }\r\n\r\n        return childNode.proxy\r\n      } else {\r\n        let tag = node.tags[key]\r\n\r\n        if (tag === undefined) {\r\n          tag = node.tags[key] = createTag()\r\n          tag.value = childValue\r\n        }\r\n\r\n        consumeTag(tag)\r\n\r\n        return childValue\r\n      }\r\n    }\r\n    const res = calculateResult()\r\n    return res\r\n  },\r\n\r\n  ownKeys(node: Node): ArrayLike<string | symbol> {\r\n    consumeCollection(node)\r\n    return Reflect.ownKeys(node.value)\r\n  },\r\n\r\n  getOwnPropertyDescriptor(\r\n    node: Node,\r\n    prop: string | symbol\r\n  ): PropertyDescriptor | undefined {\r\n    return Reflect.getOwnPropertyDescriptor(node.value, prop)\r\n  },\r\n\r\n  has(node: Node, prop: string | symbol): boolean {\r\n    return Reflect.has(node.value, prop)\r\n  }\r\n}\r\n\r\nclass ArrayTreeNode<T extends Array<unknown>> implements Node<T> {\r\n  proxy: T = new Proxy([this], arrayProxyHandler) as unknown as T\r\n  tag = createTag()\r\n  tags = {}\r\n  children = {}\r\n  collectionTag = null\r\n  id = nextId++\r\n\r\n  constructor(public value: T) {\r\n    this.value = value\r\n    this.tag.value = value\r\n  }\r\n}\r\n\r\nconst arrayProxyHandler = {\r\n  get([node]: [Node], key: string | symbol): unknown {\r\n    if (key === 'length') {\r\n      consumeCollection(node)\r\n    }\r\n\r\n    return objectProxyHandler.get(node, key)\r\n  },\r\n\r\n  ownKeys([node]: [Node]): ArrayLike<string | symbol> {\r\n    return objectProxyHandler.ownKeys(node)\r\n  },\r\n\r\n  getOwnPropertyDescriptor(\r\n    [node]: [Node],\r\n    prop: string | symbol\r\n  ): PropertyDescriptor | undefined {\r\n    return objectProxyHandler.getOwnPropertyDescriptor(node, prop)\r\n  },\r\n\r\n  has([node]: [Node], prop: string | symbol): boolean {\r\n    return objectProxyHandler.has(node, prop)\r\n  }\r\n}\r\n\r\nexport function createNode<T extends Array<unknown> | Record<string, unknown>>(\r\n  value: T\r\n): Node<T> {\r\n  if (Array.isArray(value)) {\r\n    return new ArrayTreeNode(value)\r\n  }\r\n\r\n  return new ObjectTreeNode(value) as Node<T>\r\n}\r\n\r\nconst keysMap = new WeakMap<\r\n  Array<unknown> | Record<string, unknown>,\r\n  Set<string>\r\n>()\r\n\r\nexport function updateNode<T extends Array<unknown> | Record<string, unknown>>(\r\n  node: Node<T>,\r\n  newValue: T\r\n): void {\r\n  const { value, tags, children } = node\r\n\r\n  node.value = newValue\r\n\r\n  if (\r\n    Array.isArray(value) &&\r\n    Array.isArray(newValue) &&\r\n    value.length !== newValue.length\r\n  ) {\r\n    dirtyCollection(node)\r\n  } else {\r\n    if (value !== newValue) {\r\n      let oldKeysSize = 0\r\n      let newKeysSize = 0\r\n      let anyKeysAdded = false\r\n\r\n      for (const _key in value) {\r\n        oldKeysSize++\r\n      }\r\n\r\n      for (const key in newValue) {\r\n        newKeysSize++\r\n        if (!(key in value)) {\r\n          anyKeysAdded = true\r\n          break\r\n        }\r\n      }\r\n\r\n      const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize\r\n\r\n      if (isDifferent) {\r\n        dirtyCollection(node)\r\n      }\r\n    }\r\n  }\r\n\r\n  for (const key in tags) {\r\n    const childValue = (value as Record<string, unknown>)[key]\r\n    const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n    if (childValue !== newChildValue) {\r\n      dirtyCollection(node)\r\n      dirtyTag(tags[key], newChildValue)\r\n    }\r\n\r\n    if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n      delete tags[key]\r\n    }\r\n  }\r\n\r\n  for (const key in children) {\r\n    const childNode = children[key]\r\n    const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n    const childValue = childNode.value\r\n\r\n    if (childValue === newChildValue) {\r\n      continue\r\n    } else if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n      updateNode(childNode, newChildValue as Record<string, unknown>)\r\n    } else {\r\n      deleteNode(childNode)\r\n      delete children[key]\r\n    }\r\n  }\r\n}\r\n\r\nfunction deleteNode(node: Node): void {\r\n  if (node.tag) {\r\n    dirtyTag(node.tag, null)\r\n  }\r\n  dirtyCollection(node)\r\n  for (const key in node.tags) {\r\n    dirtyTag(node.tags[key], null)\r\n  }\r\n  for (const key in node.children) {\r\n    deleteNode(node.children[key])\r\n  }\r\n}\r\n","import type {\r\n  AnyFunction,\r\n  DefaultMemoizeFields,\r\n  EqualityFn,\r\n  Simplify\r\n} from './types'\r\n\r\nimport type { NOT_FOUND_TYPE } from './utils'\r\nimport { NOT_FOUND } from './utils'\r\n\r\n// Cache implementation based on Erik Rasmussen's `lru-memoize`:\r\n// https://github.com/erikras/lru-memoize\r\n\r\ninterface Entry {\r\n  key: unknown\r\n  value: unknown\r\n}\r\n\r\ninterface Cache {\r\n  get(key: unknown): unknown | NOT_FOUND_TYPE\r\n  put(key: unknown, value: unknown): void\r\n  getEntries(): Entry[]\r\n  clear(): void\r\n}\r\n\r\nfunction createSingletonCache(equals: EqualityFn): Cache {\r\n  let entry: Entry | undefined\r\n  return {\r\n    get(key: unknown) {\r\n      if (entry && equals(entry.key, key)) {\r\n        return entry.value\r\n      }\r\n\r\n      return NOT_FOUND\r\n    },\r\n\r\n    put(key: unknown, value: unknown) {\r\n      entry = { key, value }\r\n    },\r\n\r\n    getEntries() {\r\n      return entry ? [entry] : []\r\n    },\r\n\r\n    clear() {\r\n      entry = undefined\r\n    }\r\n  }\r\n}\r\n\r\nfunction createLruCache(maxSize: number, equals: EqualityFn): Cache {\r\n  let entries: Entry[] = []\r\n\r\n  function get(key: unknown) {\r\n    const cacheIndex = entries.findIndex(entry => equals(key, entry.key))\r\n\r\n    // We found a cached entry\r\n    if (cacheIndex > -1) {\r\n      const entry = entries[cacheIndex]\r\n\r\n      // Cached entry not at top of cache, move it to the top\r\n      if (cacheIndex > 0) {\r\n        entries.splice(cacheIndex, 1)\r\n        entries.unshift(entry)\r\n      }\r\n\r\n      return entry.value\r\n    }\r\n\r\n    // No entry found in cache, return sentinel\r\n    return NOT_FOUND\r\n  }\r\n\r\n  function put(key: unknown, value: unknown) {\r\n    if (get(key) === NOT_FOUND) {\r\n      // TODO Is unshift slow?\r\n      entries.unshift({ key, value })\r\n      if (entries.length > maxSize) {\r\n        entries.pop()\r\n      }\r\n    }\r\n  }\r\n\r\n  function getEntries() {\r\n    return entries\r\n  }\r\n\r\n  function clear() {\r\n    entries = []\r\n  }\r\n\r\n  return { get, put, getEntries, clear }\r\n}\r\n\r\n/**\r\n * Runs a simple reference equality check.\r\n * What {@linkcode lruMemoize lruMemoize} uses by default.\r\n *\r\n * **Note**: This function was previously known as `defaultEqualityCheck`.\r\n *\r\n * @public\r\n */\r\nexport const referenceEqualityCheck: EqualityFn = (a, b) => a === b\r\n\r\nexport function createCacheKeyComparator(equalityCheck: EqualityFn) {\r\n  return function areArgumentsShallowlyEqual(\r\n    prev: unknown[] | IArguments | null,\r\n    next: unknown[] | IArguments | null\r\n  ): boolean {\r\n    if (prev === null || next === null || prev.length !== next.length) {\r\n      return false\r\n    }\r\n\r\n    // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\r\n    const { length } = prev\r\n    for (let i = 0; i < length; i++) {\r\n      if (!equalityCheck(prev[i], next[i])) {\r\n        return false\r\n      }\r\n    }\r\n\r\n    return true\r\n  }\r\n}\r\n\r\n/**\r\n * Options for configuring the behavior of a function memoized with\r\n * LRU (Least Recently Used) caching.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @public\r\n */\r\nexport interface LruMemoizeOptions<Result = any> {\r\n  /**\r\n   * Function used to compare the individual arguments of the\r\n   * provided calculation function.\r\n   *\r\n   * @default referenceEqualityCheck\r\n   */\r\n  equalityCheck?: EqualityFn\r\n\r\n  /**\r\n   * If provided, used to compare a newly generated output value against\r\n   * previous values in the cache. If a match is found,\r\n   * the old value is returned. This addresses the common\r\n   * ```ts\r\n   * todos.map(todo => todo.id)\r\n   * ```\r\n   * use case, where an update to another field in the original data causes\r\n   * a recalculation due to changed references, but the output is still\r\n   * effectively the same.\r\n   *\r\n   * @since 4.1.0\r\n   */\r\n  resultEqualityCheck?: EqualityFn<Result>\r\n\r\n  /**\r\n   * The maximum size of the cache used by the selector.\r\n   * A size greater than 1 means the selector will use an\r\n   * LRU (Least Recently Used) cache, allowing for the caching of multiple\r\n   * results based on different sets of arguments.\r\n   *\r\n   * @default 1\r\n   */\r\n  maxSize?: number\r\n}\r\n\r\n/**\r\n * Creates a memoized version of a function with an optional\r\n * LRU (Least Recently Used) cache. The memoized function uses a cache to\r\n * store computed values. Depending on the `maxSize` option, it will use\r\n * either a singleton cache (for a single entry) or an\r\n * LRU cache (for multiple entries).\r\n *\r\n * **Note**: This function was previously known as `defaultMemoize`.\r\n *\r\n * @param func - The function to be memoized.\r\n * @param equalityCheckOrOptions - Either an equality check function or an options object.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/lruMemoize `lruMemoize`}\r\n *\r\n * @public\r\n */\r\nexport function lruMemoize<Func extends AnyFunction>(\r\n  func: Func,\r\n  equalityCheckOrOptions?: EqualityFn | LruMemoizeOptions<ReturnType<Func>>\r\n) {\r\n  const providedOptions =\r\n    typeof equalityCheckOrOptions === 'object'\r\n      ? equalityCheckOrOptions\r\n      : { equalityCheck: equalityCheckOrOptions }\r\n\r\n  const {\r\n    equalityCheck = referenceEqualityCheck,\r\n    maxSize = 1,\r\n    resultEqualityCheck\r\n  } = providedOptions\r\n\r\n  const comparator = createCacheKeyComparator(equalityCheck)\r\n\r\n  let resultsCount = 0\r\n\r\n  const cache =\r\n    maxSize <= 1\r\n      ? createSingletonCache(comparator)\r\n      : createLruCache(maxSize, comparator)\r\n\r\n  function memoized() {\r\n    let value = cache.get(arguments) as ReturnType<Func>\r\n    if (value === NOT_FOUND) {\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      value = func.apply(null, arguments) as ReturnType<Func>\r\n      resultsCount++\r\n\r\n      if (resultEqualityCheck) {\r\n        const entries = cache.getEntries()\r\n        const matchingEntry = entries.find(entry =>\r\n          resultEqualityCheck(entry.value as ReturnType<Func>, value)\r\n        )\r\n\r\n        if (matchingEntry) {\r\n          value = matchingEntry.value as ReturnType<Func>\r\n          resultsCount !== 0 && resultsCount--\r\n        }\r\n      }\r\n\r\n      cache.put(arguments, value)\r\n    }\r\n    return value\r\n  }\r\n\r\n  memoized.clearCache = () => {\r\n    cache.clear()\r\n    memoized.resetResultsCount()\r\n  }\r\n\r\n  memoized.resultsCount = () => resultsCount\r\n\r\n  memoized.resetResultsCount = () => {\r\n    resultsCount = 0\r\n  }\r\n\r\n  return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n","// Original source:\r\n// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js\r\n\r\nimport type {\r\n  AnyFunction,\r\n  DefaultMemoizeFields,\r\n  EqualityFn,\r\n  Simplify\r\n} from './types'\r\n\r\nclass StrongRef<T> {\r\n  constructor(private value: T) {}\r\n  deref() {\r\n    return this.value\r\n  }\r\n}\r\n\r\nconst Ref =\r\n  typeof WeakRef !== 'undefined'\r\n    ? WeakRef\r\n    : (StrongRef as unknown as typeof WeakRef)\r\n\r\nconst UNTERMINATED = 0\r\nconst TERMINATED = 1\r\n\r\ninterface UnterminatedCacheNode<T> {\r\n  /**\r\n   * Status, represents whether the cached computation returned a value or threw an error.\r\n   */\r\n  s: 0\r\n  /**\r\n   * Value, either the cached result or an error, depending on status.\r\n   */\r\n  v: void\r\n  /**\r\n   * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n   */\r\n  o: null | WeakMap<Function | Object, CacheNode<T>>\r\n  /**\r\n   * Primitive cache, a regular Map where primitive arguments are stored.\r\n   */\r\n  p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ninterface TerminatedCacheNode<T> {\r\n  /**\r\n   * Status, represents whether the cached computation returned a value or threw an error.\r\n   */\r\n  s: 1\r\n  /**\r\n   * Value, either the cached result or an error, depending on status.\r\n   */\r\n  v: T\r\n  /**\r\n   * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n   */\r\n  o: null | WeakMap<Function | Object, CacheNode<T>>\r\n  /**\r\n   * Primitive cache, a regular `Map` where primitive arguments are stored.\r\n   */\r\n  p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ntype CacheNode<T> = TerminatedCacheNode<T> | UnterminatedCacheNode<T>\r\n\r\nfunction createCacheNode<T>(): CacheNode<T> {\r\n  return {\r\n    s: UNTERMINATED,\r\n    v: undefined,\r\n    o: null,\r\n    p: null\r\n  }\r\n}\r\n\r\n/**\r\n * Configuration options for a memoization function utilizing `WeakMap` for\r\n * its caching mechanism.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport interface WeakMapMemoizeOptions<Result = any> {\r\n  /**\r\n   * If provided, used to compare a newly generated output value against previous values in the cache.\r\n   * If a match is found, the old value is returned. This addresses the common\r\n   * ```ts\r\n   * todos.map(todo => todo.id)\r\n   * ```\r\n   * use case, where an update to another field in the original data causes a recalculation\r\n   * due to changed references, but the output is still effectively the same.\r\n   *\r\n   * @since 5.0.0\r\n   */\r\n  resultEqualityCheck?: EqualityFn<Result>\r\n}\r\n\r\n/**\r\n * Creates a tree of `WeakMap`-based cache nodes based on the identity of the\r\n * arguments it's been called with (in this case, the extracted values from your input selectors).\r\n * This allows `weakMapMemoize` to have an effectively infinite cache size.\r\n * Cache results will be kept in memory as long as references to the arguments still exist,\r\n * and then cleared out as the arguments are garbage-collected.\r\n *\r\n * __Design Tradeoffs for `weakMapMemoize`:__\r\n * - Pros:\r\n *   - It has an effectively infinite cache size, but you have no control over\r\n *   how long values are kept in cache as it's based on garbage collection and `WeakMap`s.\r\n * - Cons:\r\n *   - There's currently no way to alter the argument comparisons.\r\n *   They're based on strict reference equality.\r\n *   - It's roughly the same speed as `lruMemoize`, although likely a fraction slower.\r\n *\r\n * __Use Cases for `weakMapMemoize`:__\r\n * - This memoizer is likely best used for cases where you need to call the\r\n * same selector instance with many different arguments, such as a single\r\n * selector instance that is used in a list item component and called with\r\n * item IDs like:\r\n *   ```ts\r\n *   useSelector(state => selectSomeData(state, props.category))\r\n *   ```\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * <caption>Using `createSelector`</caption>\r\n * ```ts\r\n * import { createSelector, weakMapMemoize } from 'reselect'\r\n *\r\n * interface RootState {\r\n *   items: { id: number; category: string; name: string }[]\r\n * }\r\n *\r\n * const selectItemsByCategory = createSelector(\r\n *   [\r\n *     (state: RootState) => state.items,\r\n *     (state: RootState, category: string) => category\r\n *   ],\r\n *   (items, category) => items.filter(item => item.category === category),\r\n *   {\r\n *     memoize: weakMapMemoize,\r\n *     argsMemoize: weakMapMemoize\r\n *   }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>Using `createSelectorCreator`</caption>\r\n * ```ts\r\n * import { createSelectorCreator, weakMapMemoize } from 'reselect'\r\n *\r\n * const createSelectorWeakMap = createSelectorCreator({ memoize: weakMapMemoize, argsMemoize: weakMapMemoize })\r\n *\r\n * const selectItemsByCategory = createSelectorWeakMap(\r\n *   [\r\n *     (state: RootState) => state.items,\r\n *     (state: RootState, category: string) => category\r\n *   ],\r\n *   (items, category) => items.filter(item => item.category === category)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/weakMapMemoize `weakMapMemoize`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function weakMapMemoize<Func extends AnyFunction>(\r\n  func: Func,\r\n  options: WeakMapMemoizeOptions<ReturnType<Func>> = {}\r\n) {\r\n  let fnNode = createCacheNode()\r\n  const { resultEqualityCheck } = options\r\n\r\n  let lastResult: WeakRef<object> | undefined\r\n\r\n  let resultsCount = 0\r\n\r\n  function memoized() {\r\n    let cacheNode = fnNode\r\n    const { length } = arguments\r\n    for (let i = 0, l = length; i < l; i++) {\r\n      const arg = arguments[i]\r\n      if (\r\n        typeof arg === 'function' ||\r\n        (typeof arg === 'object' && arg !== null)\r\n      ) {\r\n        // Objects go into a WeakMap\r\n        let objectCache = cacheNode.o\r\n        if (objectCache === null) {\r\n          cacheNode.o = objectCache = new WeakMap()\r\n        }\r\n        const objectNode = objectCache.get(arg)\r\n        if (objectNode === undefined) {\r\n          cacheNode = createCacheNode()\r\n          objectCache.set(arg, cacheNode)\r\n        } else {\r\n          cacheNode = objectNode\r\n        }\r\n      } else {\r\n        // Primitives go into a regular Map\r\n        let primitiveCache = cacheNode.p\r\n        if (primitiveCache === null) {\r\n          cacheNode.p = primitiveCache = new Map()\r\n        }\r\n        const primitiveNode = primitiveCache.get(arg)\r\n        if (primitiveNode === undefined) {\r\n          cacheNode = createCacheNode()\r\n          primitiveCache.set(arg, cacheNode)\r\n        } else {\r\n          cacheNode = primitiveNode\r\n        }\r\n      }\r\n    }\r\n\r\n    const terminatedNode = cacheNode as unknown as TerminatedCacheNode<any>\r\n\r\n    let result\r\n\r\n    if (cacheNode.s === TERMINATED) {\r\n      result = cacheNode.v\r\n    } else {\r\n      // Allow errors to propagate\r\n      result = func.apply(null, arguments as unknown as any[])\r\n      resultsCount++\r\n\r\n      if (resultEqualityCheck) {\r\n        const lastResultValue = lastResult?.deref?.() ?? lastResult\r\n\r\n        if (\r\n          lastResultValue != null &&\r\n          resultEqualityCheck(lastResultValue as ReturnType<Func>, result)\r\n        ) {\r\n          result = lastResultValue\r\n\r\n          resultsCount !== 0 && resultsCount--\r\n        }\r\n\r\n        const needsWeakRef =\r\n          (typeof result === 'object' && result !== null) ||\r\n          typeof result === 'function'\r\n\r\n        lastResult = needsWeakRef ? new Ref(result) : result\r\n      }\r\n    }\r\n\r\n    terminatedNode.s = TERMINATED\r\n\r\n    terminatedNode.v = result\r\n    return result\r\n  }\r\n\r\n  memoized.clearCache = () => {\r\n    fnNode = createCacheNode()\r\n    memoized.resetResultsCount()\r\n  }\r\n\r\n  memoized.resultsCount = () => resultsCount\r\n\r\n  memoized.resetResultsCount = () => {\r\n    resultsCount = 0\r\n  }\r\n\r\n  return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n","import { weakMapMemoize } from './weakMapMemoize'\r\n\r\nimport type {\r\n  Combiner,\r\n  CreateSelectorOptions,\r\n  DropFirstParameter,\r\n  ExtractMemoizerFields,\r\n  GetParamsFromSelectors,\r\n  GetStateFromSelectors,\r\n  InterruptRecursion,\r\n  OutputSelector,\r\n  Selector,\r\n  SelectorArray,\r\n  SetRequired,\r\n  Simplify,\r\n  UnknownMemoizer\r\n} from './types'\r\n\r\nimport {\r\n  assertIsFunction,\r\n  collectInputSelectorResults,\r\n  ensureIsArray,\r\n  getDependencies,\r\n  getDevModeChecksExecutionInfo\r\n} from './utils'\r\n\r\n/**\r\n * An instance of `createSelector`, customized with a given memoize implementation.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template StateType - The type of state that the selectors created with this selector creator will operate on.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSelectorFunction<\r\n  MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n  ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n  StateType = any\r\n> {\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments and a `combiner` function.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors as an array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <InputSelectors extends SelectorArray<StateType>, Result>(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: InputSelectors,\r\n      combiner: Combiner<InputSelectors, Result>\r\n    ]\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments, a `combiner` function and an `options` object.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors as an array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <\r\n    InputSelectors extends SelectorArray<StateType>,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: InputSelectors,\r\n      combiner: Combiner<InputSelectors, Result>,\r\n      createSelectorOptions: Simplify<\r\n        CreateSelectorOptions<\r\n          MemoizeFunction,\r\n          ArgsMemoizeFunction,\r\n          OverrideMemoizeFunction,\r\n          OverrideArgsMemoizeFunction\r\n        >\r\n      >\r\n    ]\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    OverrideMemoizeFunction,\r\n    OverrideArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param inputSelectors - An array of input selectors.\r\n   * @param combiner - A function that Combines the input selectors and returns an output selector. Otherwise known as the result function.\r\n   * @param createSelectorOptions - An optional options object that allows for further customization per selector.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <\r\n    InputSelectors extends SelectorArray<StateType>,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    inputSelectors: [...InputSelectors],\r\n    combiner: Combiner<InputSelectors, Result>,\r\n    createSelectorOptions?: Simplify<\r\n      CreateSelectorOptions<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction,\r\n        OverrideMemoizeFunction,\r\n        OverrideArgsMemoizeFunction\r\n      >\r\n    >\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    OverrideMemoizeFunction,\r\n    OverrideArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a \"pre-typed\" version of {@linkcode createSelector createSelector}\r\n   * where the `state` type is predefined.\r\n   *\r\n   * This allows you to set the `state` type once, eliminating the need to\r\n   * specify it with every {@linkcode createSelector createSelector} call.\r\n   *\r\n   * @returns A pre-typed `createSelector` with the state type already defined.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * import { createSelector } from 'reselect'\r\n   *\r\n   * export interface RootState {\r\n   *   todos: { id: number; completed: boolean }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * export const createAppSelector = createSelector.withTypes<RootState>()\r\n   *\r\n   * const selectTodoIds = createAppSelector(\r\n   *   [\r\n   *     // Type of `state` is set to `RootState`, no need to manually set the type\r\n   *     state => state.todos\r\n   *   ],\r\n   *   todos => todos.map(({ id }) => id)\r\n   * )\r\n   * ```\r\n   * @template OverrideStateType - The specific type of state used by all selectors created with this selector creator.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector#defining-a-pre-typed-createselector `createSelector.withTypes`}\r\n   *\r\n   * @since 5.1.0\r\n   */\r\n  withTypes: <OverrideStateType extends StateType>() => CreateSelectorFunction<\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction,\r\n    OverrideStateType\r\n  >\r\n}\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param options - An options object containing the `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). It also provides additional options for customizing memoization. While the `memoize` property is mandatory, the rest are optional.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator({\r\n *   memoize: customMemoize, // Function to be used to memoize `resultFunc`\r\n *   memoizeOptions: [memoizeOption1, memoizeOption2], // Options passed to `customMemoize` as the second argument onwards\r\n *   argsMemoize: customArgsMemoize, // Function to be used to memoize the selector's arguments\r\n *   argsMemoizeOptions: [argsMemoizeOption1, argsMemoizeOption2] // Options passed to `customArgsMemoize` as the second argument onwards\r\n * })\r\n *\r\n * const customSelector = customCreateSelector(\r\n *   [inputSelector1, inputSelector2],\r\n *   resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n *\r\n * customSelector(\r\n *   ...selectorArgs // Will be memoized by `customArgsMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-options-since-500 `createSelectorCreator`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport function createSelectorCreator<\r\n  MemoizeFunction extends UnknownMemoizer,\r\n  ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n>(\r\n  options: Simplify<\r\n    SetRequired<\r\n      CreateSelectorOptions<\r\n        typeof weakMapMemoize,\r\n        typeof weakMapMemoize,\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      >,\r\n      'memoize'\r\n    >\r\n  >\r\n): CreateSelectorFunction<MemoizeFunction, ArgsMemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param memoize - The `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator(customMemoize, // Function to be used to memoize `resultFunc`\r\n *   option1, // Will be passed as second argument to `customMemoize`\r\n *   option2, // Will be passed as third argument to `customMemoize`\r\n *   option3 // Will be passed as fourth argument to `customMemoize`\r\n * )\r\n *\r\n * const customSelector = customCreateSelector(\r\n *   [inputSelector1, inputSelector2],\r\n *   resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-memoize-and-memoizeoptions `createSelectorCreator`}\r\n *\r\n * @public\r\n */\r\nexport function createSelectorCreator<MemoizeFunction extends UnknownMemoizer>(\r\n  memoize: MemoizeFunction,\r\n  ...memoizeOptionsFromArgs: DropFirstParameter<MemoizeFunction>\r\n): CreateSelectorFunction<MemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization\r\n * function and options for customizing memoization behavior.\r\n *\r\n * @param memoizeOrOptions - Either A `memoize` function or an `options` object containing the `memoize` function.\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template MemoizeOrOptions - The type of the first argument. It can either be a `memoize` function or an `options` object containing the `memoize` function.\r\n */\r\nexport function createSelectorCreator<\r\n  MemoizeFunction extends UnknownMemoizer,\r\n  ArgsMemoizeFunction extends UnknownMemoizer,\r\n  MemoizeOrOptions extends\r\n    | MemoizeFunction\r\n    | SetRequired<\r\n        CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n        'memoize'\r\n      >\r\n>(\r\n  memoizeOrOptions: MemoizeOrOptions,\r\n  ...memoizeOptionsFromArgs: MemoizeOrOptions extends SetRequired<\r\n    CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n    'memoize'\r\n  >\r\n    ? never\r\n    : DropFirstParameter<MemoizeFunction>\r\n) {\r\n  /** options initially passed into `createSelectorCreator`. */\r\n  const createSelectorCreatorOptions: SetRequired<\r\n    CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n    'memoize'\r\n  > = typeof memoizeOrOptions === 'function'\r\n    ? {\r\n        memoize: memoizeOrOptions as MemoizeFunction,\r\n        memoizeOptions: memoizeOptionsFromArgs\r\n      }\r\n    : memoizeOrOptions\r\n\r\n  const createSelector = <\r\n    InputSelectors extends SelectorArray,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: [...InputSelectors],\r\n      combiner: Combiner<InputSelectors, Result>,\r\n      createSelectorOptions?: CreateSelectorOptions<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction,\r\n        OverrideMemoizeFunction,\r\n        OverrideArgsMemoizeFunction\r\n      >\r\n    ]\r\n  ) => {\r\n    let recomputations = 0\r\n    let dependencyRecomputations = 0\r\n    let lastResult: Result\r\n\r\n    // Due to the intricacies of rest params, we can't do an optional arg after `...createSelectorArgs`.\r\n    // So, start by declaring the default value here.\r\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\r\n    let directlyPassedOptions: CreateSelectorOptions<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction,\r\n      OverrideMemoizeFunction,\r\n      OverrideArgsMemoizeFunction\r\n    > = {}\r\n\r\n    // Normally, the result func or \"combiner\" is the last arg\r\n    let resultFunc = createSelectorArgs.pop() as\r\n      | Combiner<InputSelectors, Result>\r\n      | CreateSelectorOptions<\r\n          MemoizeFunction,\r\n          ArgsMemoizeFunction,\r\n          OverrideMemoizeFunction,\r\n          OverrideArgsMemoizeFunction\r\n        >\r\n\r\n    // If the result func is actually an _object_, assume it's our options object\r\n    if (typeof resultFunc === 'object') {\r\n      directlyPassedOptions = resultFunc\r\n      // and pop the real result func off\r\n      resultFunc = createSelectorArgs.pop() as Combiner<InputSelectors, Result>\r\n    }\r\n\r\n    assertIsFunction(\r\n      resultFunc,\r\n      `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\r\n    )\r\n\r\n    // Determine which set of options we're using. Prefer options passed directly,\r\n    // but fall back to options given to `createSelectorCreator`.\r\n    const combinedOptions = {\r\n      ...createSelectorCreatorOptions,\r\n      ...directlyPassedOptions\r\n    }\r\n\r\n    const {\r\n      memoize,\r\n      memoizeOptions = [],\r\n      argsMemoize = weakMapMemoize,\r\n      argsMemoizeOptions = [],\r\n      devModeChecks = {}\r\n    } = combinedOptions\r\n\r\n    // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\r\n    // is an array. In most libs I've looked at, it's an equality function or options object.\r\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\r\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\r\n    // we wrap it in an array so we can apply it.\r\n    const finalMemoizeOptions = ensureIsArray(memoizeOptions)\r\n    const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions)\r\n    const dependencies = getDependencies(createSelectorArgs) as InputSelectors\r\n\r\n    const memoizedResultFunc = memoize(function recomputationWrapper() {\r\n      recomputations++\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      return (resultFunc as Combiner<InputSelectors, Result>).apply(\r\n        null,\r\n        arguments as unknown as Parameters<Combiner<InputSelectors, Result>>\r\n      )\r\n    }, ...finalMemoizeOptions) as Combiner<InputSelectors, Result> &\r\n      ExtractMemoizerFields<OverrideMemoizeFunction>\r\n\r\n    let firstRun = true\r\n\r\n    // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\r\n    const selector = argsMemoize(function dependenciesChecker() {\r\n      dependencyRecomputations++\r\n      /** Return values of input selectors which the `resultFunc` takes as arguments. */\r\n      const inputSelectorResults = collectInputSelectorResults(\r\n        dependencies,\r\n        arguments\r\n      )\r\n\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      lastResult = memoizedResultFunc.apply(null, inputSelectorResults)\r\n\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        const { identityFunctionCheck, inputStabilityCheck } =\r\n          getDevModeChecksExecutionInfo(firstRun, devModeChecks)\r\n        if (identityFunctionCheck.shouldRun) {\r\n          identityFunctionCheck.run(\r\n            resultFunc as Combiner<InputSelectors, Result>,\r\n            inputSelectorResults,\r\n            lastResult\r\n          )\r\n        }\r\n\r\n        if (inputStabilityCheck.shouldRun) {\r\n          // make a second copy of the params, to check if we got the same results\r\n          const inputSelectorResultsCopy = collectInputSelectorResults(\r\n            dependencies,\r\n            arguments\r\n          )\r\n\r\n          inputStabilityCheck.run(\r\n            { inputSelectorResults, inputSelectorResultsCopy },\r\n            { memoize, memoizeOptions: finalMemoizeOptions },\r\n            arguments\r\n          )\r\n        }\r\n\r\n        if (firstRun) firstRun = false\r\n      }\r\n\r\n      return lastResult\r\n    }, ...finalArgsMemoizeOptions) as unknown as Selector<\r\n      GetStateFromSelectors<InputSelectors>,\r\n      Result,\r\n      GetParamsFromSelectors<InputSelectors>\r\n    > &\r\n      ExtractMemoizerFields<OverrideArgsMemoizeFunction>\r\n\r\n    return Object.assign(selector, {\r\n      resultFunc,\r\n      memoizedResultFunc,\r\n      dependencies,\r\n      dependencyRecomputations: () => dependencyRecomputations,\r\n      resetDependencyRecomputations: () => {\r\n        dependencyRecomputations = 0\r\n      },\r\n      lastResult: () => lastResult,\r\n      recomputations: () => recomputations,\r\n      resetRecomputations: () => {\r\n        recomputations = 0\r\n      },\r\n      memoize,\r\n      argsMemoize\r\n    }) as OutputSelector<\r\n      InputSelectors,\r\n      Result,\r\n      OverrideMemoizeFunction,\r\n      OverrideArgsMemoizeFunction\r\n    >\r\n  }\r\n\r\n  Object.assign(createSelector, {\r\n    withTypes: () => createSelector\r\n  })\r\n\r\n  return createSelector as CreateSelectorFunction<\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  >\r\n}\r\n\r\n/**\r\n * Accepts one or more \"input selectors\" (either as separate arguments or a single array),\r\n * a single \"result function\" / \"combiner\", and an optional options object, and\r\n * generates a memoized selector function.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelector `createSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createSelector =\r\n  /* #__PURE__ */ createSelectorCreator(weakMapMemoize)\r\n","import { createSelector } from './createSelectorCreator'\r\n\r\nimport type { CreateSelectorFunction } from './createSelectorCreator'\r\nimport type {\r\n  InterruptRecursion,\r\n  ObjectValuesToTuple,\r\n  OutputSelector,\r\n  Selector,\r\n  Simplify,\r\n  UnknownMemoizer\r\n} from './types'\r\nimport { assertIsObject } from './utils'\r\nimport type { weakMapMemoize } from './weakMapMemoize'\r\n\r\n/**\r\n * Represents a mapping of selectors to their return types.\r\n *\r\n * @template TObject - An object type where each property is a selector function.\r\n *\r\n * @public\r\n */\r\nexport type SelectorResultsMap<TObject extends SelectorsObject> = {\r\n  [Key in keyof TObject]: ReturnType<TObject[Key]>\r\n}\r\n\r\n/**\r\n * Represents a mapping of selectors for each key in a given root state.\r\n *\r\n * This type is a utility that takes a root state object type and\r\n * generates a corresponding set of selectors. Each selector is associated\r\n * with a key in the root state, allowing for the selection\r\n * of specific parts of the state.\r\n *\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type RootStateSelectors<RootState = any> = {\r\n  [Key in keyof RootState]: Selector<RootState, RootState[Key], []>\r\n}\r\n\r\n/**\r\n * @deprecated Please use {@linkcode StructuredSelectorCreator.withTypes createStructuredSelector.withTypes<RootState>()} instead. This type will be removed in the future.\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type TypedStructuredSelectorCreator<RootState = any> =\r\n  /**\r\n   * A convenience function that simplifies returning an object\r\n   * made up of selector results.\r\n   *\r\n   * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n   * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n   * @returns A memoized structured selector.\r\n   *\r\n   * @example\r\n   * <caption>Modern Use Case</caption>\r\n   * ```ts\r\n   * import { createSelector, createStructuredSelector } from 'reselect'\r\n   *\r\n   * interface RootState {\r\n   *   todos: {\r\n   *     id: number\r\n   *     completed: boolean\r\n   *     title: string\r\n   *     description: string\r\n   *   }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * // This:\r\n   * const structuredSelector = createStructuredSelector(\r\n   *   {\r\n   *     todos: (state: RootState) => state.todos,\r\n   *     alerts: (state: RootState) => state.alerts,\r\n   *     todoById: (state: RootState, id: number) => state.todos[id]\r\n   *   },\r\n   *   createSelector\r\n   * )\r\n   *\r\n   * // Is essentially the same as this:\r\n   * const selector = createSelector(\r\n   *   [\r\n   *     (state: RootState) => state.todos,\r\n   *     (state: RootState) => state.alerts,\r\n   *     (state: RootState, id: number) => state.todos[id]\r\n   *   ],\r\n   *   (todos, alerts, todoById) => {\r\n   *     return {\r\n   *       todos,\r\n   *       alerts,\r\n   *       todoById\r\n   *     }\r\n   *   }\r\n   * )\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>In your component:</caption>\r\n   * ```tsx\r\n   * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n   * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n   * import type { FC } from 'react'\r\n   * import { useSelector } from 'react-redux'\r\n   *\r\n   * interface Props {\r\n   *   id: number\r\n   * }\r\n   *\r\n   * const MyComponent: FC<Props> = ({ id }) => {\r\n   *   const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n   *     structuredSelector(state, id)\r\n   *   )\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       Next to do is:\r\n   *       <h2>{todoById.title}</h2>\r\n   *       <p>Description: {todoById.description}</p>\r\n   *       <ul>\r\n   *         <h3>All other to dos:</h3>\r\n   *         {todos.map(todo => (\r\n   *           <li key={todo.id}>{todo.title}</li>\r\n   *         ))}\r\n   *       </ul>\r\n   *     </div>\r\n   *   )\r\n   * }\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>Simple Use Case</caption>\r\n   * ```ts\r\n   * const selectA = state => state.a\r\n   * const selectB = state => state.b\r\n   *\r\n   * // The result function in the following selector\r\n   * // is simply building an object from the input selectors\r\n   * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n   *   a,\r\n   *   b\r\n   * }))\r\n   *\r\n   * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n   * ```\r\n   *\r\n   * @template InputSelectorsObject - The shape of the input selectors object.\r\n   * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n   * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n   */\r\n  <\r\n    InputSelectorsObject extends RootStateSelectors<RootState> = RootStateSelectors<RootState>,\r\n    MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n    ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n  >(\r\n    inputSelectorsObject: InputSelectorsObject,\r\n    selectorCreator?: CreateSelectorFunction<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction\r\n    >\r\n  ) => OutputSelector<\r\n    ObjectValuesToTuple<InputSelectorsObject>,\r\n    Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n/**\r\n * Represents an object where each property is a selector function.\r\n *\r\n * @template StateType - The type of state that all the selectors operate on.\r\n *\r\n * @public\r\n */\r\nexport type SelectorsObject<StateType = any> = Record<\r\n  string,\r\n  Selector<StateType>\r\n>\r\n\r\n/**\r\n * It provides a way to create structured selectors.\r\n * The structured selector can take multiple input selectors\r\n * and map their output to an object with specific keys.\r\n *\r\n * @template StateType - The type of state that the structured selectors created with this structured selector creator will operate on.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport interface StructuredSelectorCreator<StateType = any> {\r\n  /**\r\n   * A convenience function that simplifies returning an object\r\n   * made up of selector results.\r\n   *\r\n   * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n   * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n   * @returns A memoized structured selector.\r\n   *\r\n   * @example\r\n   * <caption>Modern Use Case</caption>\r\n   * ```ts\r\n   * import { createSelector, createStructuredSelector } from 'reselect'\r\n   *\r\n   * interface RootState {\r\n   *   todos: {\r\n   *     id: number\r\n   *     completed: boolean\r\n   *     title: string\r\n   *     description: string\r\n   *   }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * // This:\r\n   * const structuredSelector = createStructuredSelector(\r\n   *   {\r\n   *     todos: (state: RootState) => state.todos,\r\n   *     alerts: (state: RootState) => state.alerts,\r\n   *     todoById: (state: RootState, id: number) => state.todos[id]\r\n   *   },\r\n   *   createSelector\r\n   * )\r\n   *\r\n   * // Is essentially the same as this:\r\n   * const selector = createSelector(\r\n   *   [\r\n   *     (state: RootState) => state.todos,\r\n   *     (state: RootState) => state.alerts,\r\n   *     (state: RootState, id: number) => state.todos[id]\r\n   *   ],\r\n   *   (todos, alerts, todoById) => {\r\n   *     return {\r\n   *       todos,\r\n   *       alerts,\r\n   *       todoById\r\n   *     }\r\n   *   }\r\n   * )\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>In your component:</caption>\r\n   * ```tsx\r\n   * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n   * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n   * import type { FC } from 'react'\r\n   * import { useSelector } from 'react-redux'\r\n   *\r\n   * interface Props {\r\n   *   id: number\r\n   * }\r\n   *\r\n   * const MyComponent: FC<Props> = ({ id }) => {\r\n   *   const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n   *     structuredSelector(state, id)\r\n   *   )\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       Next to do is:\r\n   *       <h2>{todoById.title}</h2>\r\n   *       <p>Description: {todoById.description}</p>\r\n   *       <ul>\r\n   *         <h3>All other to dos:</h3>\r\n   *         {todos.map(todo => (\r\n   *           <li key={todo.id}>{todo.title}</li>\r\n   *         ))}\r\n   *       </ul>\r\n   *     </div>\r\n   *   )\r\n   * }\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>Simple Use Case</caption>\r\n   * ```ts\r\n   * const selectA = state => state.a\r\n   * const selectB = state => state.b\r\n   *\r\n   * // The result function in the following selector\r\n   * // is simply building an object from the input selectors\r\n   * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n   *   a,\r\n   *   b\r\n   * }))\r\n   *\r\n   * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n   * ```\r\n   *\r\n   * @template InputSelectorsObject - The shape of the input selectors object.\r\n   * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n   * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n   */\r\n  <\r\n    InputSelectorsObject extends SelectorsObject<StateType>,\r\n    MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n    ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n  >(\r\n    inputSelectorsObject: InputSelectorsObject,\r\n    selectorCreator?: CreateSelectorFunction<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction\r\n    >\r\n  ): OutputSelector<\r\n    ObjectValuesToTuple<InputSelectorsObject>,\r\n    Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a \"pre-typed\" version of\r\n   * {@linkcode createStructuredSelector createStructuredSelector}\r\n   * where the `state` type is predefined.\r\n   *\r\n   * This allows you to set the `state` type once, eliminating the need to\r\n   * specify it with every\r\n   * {@linkcode createStructuredSelector createStructuredSelector} call.\r\n   *\r\n   * @returns A pre-typed `createStructuredSelector` with the state type already defined.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * import { createStructuredSelector } from 'reselect'\r\n   *\r\n   * export interface RootState {\r\n   *   todos: { id: number; completed: boolean }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * export const createStructuredAppSelector =\r\n   *   createStructuredSelector.withTypes<RootState>()\r\n   *\r\n   * const structuredAppSelector = createStructuredAppSelector({\r\n   *   // Type of `state` is set to `RootState`, no need to manually set the type\r\n   *   todos: state => state.todos,\r\n   *   alerts: state => state.alerts,\r\n   *   todoById: (state, id: number) => state.todos[id]\r\n   * })\r\n   *\r\n   * ```\r\n   * @template OverrideStateType - The specific type of state used by all structured selectors created with this structured selector creator.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createstructuredselector#defining-a-pre-typed-createstructuredselector `createSelector.withTypes`}\r\n   *\r\n   * @since 5.1.0\r\n   */\r\n  withTypes: <\r\n    OverrideStateType extends StateType\r\n  >() => StructuredSelectorCreator<OverrideStateType>\r\n}\r\n\r\n/**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * <caption>Modern Use Case</caption>\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n *   todos: {\r\n *     id: number\r\n *     completed: boolean\r\n *     title: string\r\n *     description: string\r\n *   }[]\r\n *   alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n *   {\r\n *     todos: (state: RootState) => state.todos,\r\n *     alerts: (state: RootState) => state.alerts,\r\n *     todoById: (state: RootState, id: number) => state.todos[id]\r\n *   },\r\n *   createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n *   [\r\n *     (state: RootState) => state.todos,\r\n *     (state: RootState) => state.alerts,\r\n *     (state: RootState, id: number) => state.todos[id]\r\n *   ],\r\n *   (todos, alerts, todoById) => {\r\n *     return {\r\n *       todos,\r\n *       alerts,\r\n *       todoById\r\n *     }\r\n *   }\r\n * )\r\n * ```\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createStructuredSelector: StructuredSelectorCreator =\r\n  Object.assign(\r\n    <\r\n      InputSelectorsObject extends SelectorsObject,\r\n      MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n      ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n    >(\r\n      inputSelectorsObject: InputSelectorsObject,\r\n      selectorCreator: CreateSelectorFunction<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      > = createSelector as CreateSelectorFunction<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      >\r\n    ) => {\r\n      assertIsObject(\r\n        inputSelectorsObject,\r\n        'createStructuredSelector expects first argument to be an object ' +\r\n          `where each property is a selector, instead received a ${typeof inputSelectorsObject}`\r\n      )\r\n      const inputSelectorKeys = Object.keys(inputSelectorsObject)\r\n      const dependencies = inputSelectorKeys.map(\r\n        key => inputSelectorsObject[key]\r\n      )\r\n      const structuredSelector = selectorCreator(\r\n        dependencies,\r\n        (...inputSelectorResults: any[]) => {\r\n          return inputSelectorResults.reduce((composition, value, index) => {\r\n            composition[inputSelectorKeys[index]] = value\r\n            return composition\r\n          }, {})\r\n        }\r\n      )\r\n      return structuredSelector\r\n    },\r\n    { withTypes: () => createStructuredSelector }\r\n  ) as StructuredSelectorCreator\r\n"],"names":["indeterminate1Keyframe","indeterminate1Animation","indeterminate2Keyframe","indeterminate2Animation","bufferKeyframe","bufferAnimation","getColorShade","theme","color","vars","palette","LinearProgress","mode","main","LinearProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","position","overflow","display","height","zIndex","colorAdjust","variants","Object","entries","filter","map","style","backgroundColor","content","left","top","right","bottom","opacity","transform","LinearProgressDashed","dashed","marginTop","width","backgroundSize","backgroundPosition","backgroundImage","animation","LinearProgressBar1","bar","bar1Indeterminate","bar1Determinate","bar1Buffer","transition","transformOrigin","LinearProgressBar2","bar2Indeterminate","bar2Buffer","inProps","ref","className","value","valueBuffer","other","classes","slots","bar1","bar2","useUtilityClasses","isRtl","rootProps","inlineStyles","undefined","Math","round","role","children","getLinearProgressUtilityClass","pulseKeyframe","waveKeyframe","pulseAnimation","waveAnimation","SkeletonRoot","hasChildren","withChildren","fitContent","heightAuto","radiusUnit","shape","borderRadius","radiusValue","Skeleton","bg","text","primary","marginBottom","visibility","maxWidth","WebkitMaskImage","background","action","hover","component","Boolean","as","getSkeletonUtilityClass","forceDebug","window","localStorage","getItem","noop","noopLogger","debug","info","warn","error","LOG_LEVELS","getAppender","logLevel","appender","console","minLogLevelIdx","indexOf","Error","reduce","loggerObj","method","idx","args","message","EventManager","constructor","this","maxListeners","warnOnce","events","on","eventName","listener","options","collection","highPriority","Map","regular","isFirst","set","removeListener","delete","removeAllListeners","emit","highPriorityListeners","Array","from","keys","regularListeners","i","length","has","apply","once","that","oneTimeListener","Store","create","_value","listeners","subscribe","fn","add","getSnapshot","update","forEach","l","Set","SYMBOL_API_PRIVATE","Symbol","globalId","_typeof","o","iterator","prototype","toPropertyKey","t","e","toPrimitive","call","r","TypeError","String","GRID_DEFAULT_STRATEGY","GRID_STRATEGIES_PROCESSORS","rowTreeCreation","filtering","sorting","visibleRowsLookupCreation","useGridInitialization","inputApiRef","privateApiRef","publicApiRef","current","existingPrivateApi","state","privateApi","store","instanceId","id","getPublicApi","register","methods","methodName","currentPrivateMethod","spying","target","publicApi","currentPublicMethod","caches","eventManager","createPrivateAPI","createPublicAPI","publishEvent","params","event","defaultMuiPrevented","isPropagationStopped","isSyntheticEvent","details","signature","DataGridPro","DataGridPremium","api","subscribeEvent","handler","useGridApiMethod","useGridApiInitialization","apiRef","rootElementRef","mainElementRef","virtualScrollerRef","columnHeadersContainerRef","useGridRefs","isFirstEffect","setState","useGridIsRtl","getLogger","logger","toString","useGridLoggerFactory","controlStateMapRef","rawForceUpdate","registerControlState","controlStateItem","stateId","reason","newState","ignoreSetState","updatedControlStateIds","controlState","oldSubState","stateSelector","newSubState","push","hasPropChanged","propModel","el","join","model","propOnChange","changeEvent","updateControlState","key","previousState","publicStateApi","forceUpdate","privateStateApi","useGridStateInitialization","cache","isRunning","runAppliers","groupCache","values","appliers","callback","preProcessingPrivateApi","registerPipeProcessor","group","processor","processors","processorsAsArray","get","registerPipeApplier","applier","_appliers","otherAppliers","requestPipeProcessorsApplication","preProcessingPublicApi","unstable_applyPipeProcessors","context","result","useGridPipeProcessing","availableStrategies","strategiesCache","strategyProcessingApi","registerStrategyProcessor","strategyName","processorName","cleanup","_ref","otherProcessors","groupPreProcessors","previousProcessor","getActiveStrategy","applyStrategyProcessor","activeStrategy","strategyGroup","availableStrategyEntry","find","strategy","isAvailable","setStrategyAvailability","useGridStrategyProcessing","getLocaleText","localeText","useGridLocaleText","useGridInitializeState","initializer","isInitialized","sanitizeCellValue","csvOptions","valueStr","shouldAppendQuotes","escapeFormulas","escapedValue","replace","includes","delimiter","some","serializeCellValue","cellParams","ignoreValueFormatter","columnType","colDef","type","toISOString","formattedValue","CSVRow","rowString","isEmpty","addValue","getRowString","writeToClipboardPolyfill","data","span","document","createElement","whiteSpace","userSelect","textContent","body","appendChild","range","createRange","selectNode","selection","getSelection","removeAllRanges","addRange","execCommand","removeChild","columnMenuStateInitializer","columnMenu","open","useGridRegisterPipeProcessor","random","registerPreProcessor","useFirstRender","isFirstRender","useGridRegisterPipeApplier","columnsStateInitializer","columnsState","columnsToUpsert","columns","initialState","columnVisibilityModel","keepOnlyColumnsToUpsert","pinnedColumns","mergeColumnsState","densityStateInitializer","density","getColumnsToExport","fields","currentColumns","field","column","col","allColumns","disableExport","defaultGetRowsToExport","filteredSortedRowIds","rowTree","selectedRows","getSelectedRows","bodyRows","pinnedRows","topPinnedRowsIds","row","bottomPinnedRowsIds","unshift","size","useGridCsvExport","useGridLogger","ignoreValueFormatterProp","ignoreValueFormatterDuringExport","csvExport","getDataAsCsv","rowIds","CSVBody","acc","getCellParams","serializeRow","trim","includeHeaders","filteredColumns","headerRows","includeColumnGroupsHeaders","columnGroupLookup","getAllGroupDetails","maxColumnGroupsDepth","columnGroupPathsLookup","columnGroupPath","getColumnGroupPath","max","headerGroupRow","columnGroupId","columnGroup","headerName","groupId","mainHeaderRow","buildCSV","getRowsToExport","exportDataAsCsv","csv","blob","extension","filename","title","fullName","HTMLAnchorElement","url","URL","createObjectURL","a","href","download","click","setTimeout","revokeObjectURL","exportAs","Blob","utf8WithBom","Uint8Array","fileName","csvExportApi","addExportMenuButtons","initialValue","disableToolbarButton","componentName","getDerivedPaginationModel","paginationState","paginationModelProp","paginationModel","rowCount","pageSize","page","pageCount","validPage","useGridRegisterStrategyProcessor","filterStateInitializer","filterModel","disableMultipleColumnsFiltering","filteredRowsLookup","filteredChildrenCountLookup","filteredDescendantCountLookup","visibleRowsLookup","getVisibleRowsLookup","getVisibleRowsLookupState","tree","rows","createMemoizedValues","focusStateInitializer","focus","cell","columnHeader","columnHeaderFilter","columnGroupHeader","tabIndex","getLeftColumnIndex","currentColIndex","firstColIndex","lastColIndex","getRightColumnIndex","paginationStateInitializer","autoPageSize","pagination","meta","paginationMeta","preferencePanelStateInitializer","preferencePanel","getDefaultCellValue","_excluded","_excluded2","editingStateInitializer","editRows","rowsStateInitializer","isDataSourceAvailable","unstable_dataSource","getRowId","loading","rowCountProp","loadingProp","previousTree","previousTreeDepths","flatRowTreeCreationMethod","updates","rowId","depth","parent","groupingKey","groupingName","treeDepths","dataRowIds","createFlatRowTree","actions","idsToRemoveFromRootGroup","remove","idToDelete","insert","idToInsert","rootGroup","rootGroupChildren","updateFlatRowTree","getSelectionModelPropValue","selectionModelProp","prevSelectionModel","isArray","rowSelectionStateInitializer","rowSelection","rowSelectionModel","sortingStateInitializer","sortModel","disableMultipleColumnsSorting","sortedRows","scrollIntoView","dimensions","clientHeight","scrollTop","offsetHeight","offsetTop","elementBottom","EMPTY_SIZE","EMPTY_DIMENSIONS","isReady","viewportOuterSize","viewportInnerSize","contentSize","minimumSize","hasScrollX","hasScrollY","scrollbarSize","headerHeight","groupHeaderHeight","headerFilterHeight","rowWidth","rowHeight","columnsTotalWidth","leftPinnedWidth","rightPinnedWidth","headersTotalHeight","topContainerHeight","bottomContainerHeight","dimensionsStateInitializer","areElementSizesEqual","b","rowsMetaStateInitializer","rowsMeta","currentPageTotalHeight","positions","getValidRowHeight","rowHeightProp","defaultRowHeight","warningMessage","calculateCellColSpan","lookup","columnIndex","minFirstColumnIndex","maxLastColumnIndex","columnsLength","getRow","getRowValue","colSpan","setCellColSpanInfo","spannedByColSpan","cellProps","computedWidth","j","nextColumnIndex","rightVisibleCellIndex","min","leftVisibleCellIndex","cellColSpanInfo","recurrentUnwrapGroupingColumnModel","columnGroupNode","parents","unwrappedGroupingModelToComplete","child","unwrapGroupingColumnModel","columnGroupingModel","unwrappedSubTree","getColumnGroupsHeaderStructure","orderedColumns","unwrappedGroupingModel","pinnedFields","getParents","groupingHeaderStructure","maxDepth","haveSameParents","field1","field2","slice","depthStructure","structure","newField","columnFields","lastGroup","prevField","createGroupLookup","groupLookup","node","groupParam","subTreeLookup","columnGroupsStateInitializer","visibleColumnFields","columnGroupsHeaderStructure","columnGrouping","headerStructure","trackFinger","currentTouchId","changedTouches","touch","identifier","x","clientX","y","clientY","computeNewWidth","initialOffsetToSeparator","clickX","columnBounds","resizeDirection","newWidth","preventClick","preventDefault","stopImmediatePropagation","columnResizeStateInitializer","columnResize","resizingColumnField","createResizeRefs","initialColWidth","initialTotalWidth","previousMouseClickEvent","columnHeaderElement","headerFilterElement","groupHeaderElements","cellElements","leftPinnedCellsAfter","rightPinnedCellsBefore","fillerLeft","fillerRight","leftPinnedHeadersAfter","rightPinnedHeadersBefore","useGridColumnResize","refs","useLazyRef","stopResizeEventTimeout","useTimeout","touchId","updateWidth","prevWidth","offsetWidth","widthDiff","columnWidthDiff","newTotalWidth","setProperty","flex","element","div","finalWidth","getAttribute","pinnedPosition","LEFT","updateProperty","header","RIGHT","finishResize","nativeEvent","stopListening","prevEvent","prevTimeStamp","timeStamp","prevClientX","prevClientY","setColumnWidth","start","storeReferences","separator","xStart","getRootDimensions","querySelector","gridClasses","headerFilterRow","side","classList","contains","flipResizeDirection","getResizeDirection","computeOffsetToSeparator","getBoundingClientRect","handleResizeMouseUp","useEventCallback","handleResizeMouseMove","buttons","minWidth","handleTouchEnd","handleTouchMove","finger","handleTouchStart","cellSeparator","getColumn","doc","ownerDocument","currentTarget","addEventListener","removeProperty","removeEventListener","pointerEvents","handleResizeStart","handleResizeStop","handleColumnResizeMouseDown","button","cursor","handleColumnSeparatorDoubleClick","disableAutosize","resizable","autosizeColumns","autosizeOptions","columnVirtualizationDisabled","promise","selector","useGridSelector","resolve","Promise","reject","_resolve","_reject","createControllablePromise","useColumnVirtualizationDisabled","isAutosizingRef","async","userOptions","orderedFields","c","unstable_setColumnVirtualization","widthByField","autosizing","widths","filteredWidths","includeOutliers","inputValues","factor","sort","q1","floor","q3","iqr","deviation","v","excludeOutliers","outliersFactor","columnHeaderTitle","columnHeaderTitleContainerContent","iconContainer","iconButtonContainer","menuContainer","menuIcon","getComputedStyle","paddingWidth","parseInt","paddingLeft","paddingRight","scrollWidth","clientWidth","hasColumnMin","hasColumnMax","Infinity","maxContent","extractColumnWidths","newColumns","expand","totalWidth","total","remainingWidth","widthPerColumn","updateColumns","newColumn","index","getColumnHeaderElement","useOnMount","autosizeOnMount","then","useGridNativeEventListener","passive","useGridApiEventHandler","onColumnResize","onColumnWidthChange","property","delta","isRowRangeUpdated","range1","range2","firstRowIndex","lastRowIndex","getCellValue","cellValue","valueGetter","rowSpanValueGetter","EMPTY_STATE","spannedCells","hiddenCells","hiddenCellOriginMap","EMPTY_RANGE","skippedFields","computeRowSpanningState","colDefs","visibleRows","rangeToProcess","resetState","processedRange","rowSpanning","spannedRowId","spannedRowIndex","rowSpan","backwardsHiddenCells","prevIndex","prevRowEntry","currentRow","hiddenCellIndex","relativeIndex","rowSpanningStateInitializer","unstable_rowSpanning","dataRowIdToModelLookup","columnsLookup","isFilteringPending","items","quickFilterValues","DEFAULT_ROWS_TO_PROCESS","useDataGridComponent","composeClasses","cellCheckbox","columnHeaderCheckbox","updateSelectionColumn","selectionColumn","cellClassName","headerClassName","shouldHaveSelectionColumn","checkboxSelection","haveSelectionColumn","useGridRowSelectionPreProcessors","useGridRowsPreProcessors","initialCurrentPageRows","useGridVisibleRows","currentPageRows","enrichPageRowsWithPinnedRows","headerFilteringEnabled","headerFilters","goToCell","colIndex","closestColumnToUse","rowSpanScanDirection","visibleSortedRows","nextCellColSpanInfo","unstable_getCellColSpanInfo","nonRowSpannedRowId","rowSpanHiddenCells","nextRowIndex","nextRowId","findNonRowSpannedCell","rowIndexRelativeToAllRows","findIndex","scrollToIndexes","rowIndex","setCellFocus","goToHeader","getVisibleColumns","setColumnHeaderFocus","goToHeaderFilter","setColumnHeaderFilterFocus","goToGroupHeader","setColumnGroupHeaderFocus","getRowIdFromIndex","handleColumnHeaderKeyDown","headerTitleNode","viewportPageSize","getViewportPageSize","colIndexBefore","getColumnIndex","firstRowIndexInPage","lastRowIndexInPage","columnGroupMaxDepth","shouldPreventDefault","rightColIndex","leftColIndex","ctrlKey","metaKey","toggleColumnMenu","handleHeaderFilterKeyDown","isEditing","isHeaderMenuOpen","handleColumnGroupHeaderKeyDown","focusedColumnGroup","currentField","currentDepth","remainingRightColumns","remainingLeftColumns","handleCellKeyDown","cellMode","Edit","rowIndexBefore","shiftKey","checkIfCanStartEditing","useGridKeyboardNavigation","runIfRowSelectionIsEnabled","propRowSelectionModel","lastRowToggled","onRowSelectionModelChange","disableRowSelectionOnClick","isRowSelectable","propIsRowSelectable","canHaveMultipleSelection","expandMouseRowRangeSelection","endId","startId","isSelected","isRowSelected","visibleRowIds","startIndex","endIndex","selectRowRange","setRowSelectionModel","DataGrid","getRowParams","rowNode","getRowNode","selectRow","resetSelection","newSelection","selectRows","ids","selectableIds","selectionLookup","allPagesRowIds","end","rowsBetweenStartAndEnd","selectionPublicApi","selectionPrivateApi","removeOutdatedSelection","keepNonExistentRowsSelected","currentSelection","rowsLookup","hasChanged","handleSingleRowSelection","hasCtrlKey","isMultipleSelectionDisabled","handleRowClick","closest","preventSelectionOnShift","handleRowSelectionCheckboxChange","handleHeaderSelectionCheckboxChange","rowsToBeSelected","checkboxSelectionVisibleOnly","paginationMode","getCellMode","focusCell","isNextRowSelected","newRowIndex","getRowIndexRelativeToVisibleRows","previousRowIndex","getAllRowIds","isStateControlled","useGridRowSelection","previousColumnsProp","onColumnVisibilityModelChange","setGridColumnsState","updateRenderContext","getAllColumns","useVisibleColumns","getColumnPosition","setColumnVisibilityModel","setColumnVisibility","isVisible","newModel","getColumnIndexRelativeToVisibleColumns","setColumnIndex","targetIndexPosition","oldIndexPosition","updatedColumns","fieldRemoved","splice","targetIndex","oldIndex","hasBeenResized","columnApi","columnReorderApi","stateExportPreProcessing","prevState","columnsStateToExport","columnVisibilityModelToExport","exportOnlyDirtyModels","colDefDimensions","propertyName","propertyValue","stateRestorePreProcessing","columnVisibilityModelToImport","stateToRestore","preferencePanelPreProcessing","ColumnsPanel","columnsPanel","slotProps","addColumnMenuItems","columnMenuItems","disableColumnSelector","prevInnerWidth","hydrateColumns","useGridColumns","currentPage","lastUpdateMs","Date","now","lastRowCount","timeout","getRowIdProp","throttledRowsChange","throttle","run","previousGroupsToFetch","clear","throttleRemainingTimeMs","throttleRowsMs","setRows","prevCache","rowsBeforePartialUpdates","updateRows","nonPinnedRowsUpdates","previousCache","updateServerRows","groupKeys","setLoading","loadingPropBeforePartialUpdates","getRowModels","dataRows","idRowsLookup","getRowsCount","setRowChildrenExpansion","isExpanded","currentNode","newNode","childrenExpanded","getRowGroupChildren","skipAutoGeneratedRows","applySorting","applyFiltering","groupNode","sortedRowIds","childId","setRowIndex","allRows","updatedRows","rowApi","unstable_replaceRows","firstRowToRender","newRows","dataRowIdToIdLookup","seenIds","rowModel","removedRowId","rowTreeNodeConfig","rowProApi","rowProPrivateApi","groupRows","handleStrategyProcessorChange","handleStrategyActivityChange","applyHydrateRowsProcessor","response","totalTopLevelRowCount","isRowCountPropUpdated","areNewRowsAlreadyInState","isNewLoadingAlreadyInState","isNewRowCountAlreadyInState","rowCountPropBeforePartialUpdates","totalRowCount","useGridRows","renderContext","lastRange","updateRowSpanningState","isRowContextInitialized","testRange","getUnprocessedRange","newProcessedRange","newSpannedCellsCount","newHiddenCellsCount","currentSpannedCellsCount","currentHiddenCellsCount","prevRenderContext","shouldResetState","firstRender","useGridRowSpanning","useGridParamsApi","resetColSpan","columnSpanningPublicApi","columnSpanningPrivateApi","calculateColSpan","minFirstColumn","maxLastColumn","useGridColumnSpanning","columnGroupingApi","handleColumnIndexChange","updateColumnGroupingState","getPinnedColumns","useGridColumnGrouping","cellModesModel","setCellModesModel","cellModesModelRef","prevCellModesModel","processRowUpdate","onProcessRowUpdateError","cellModesModelProp","onCellModesModelChange","runIfEditModeIsCell","editMode","Cell","throwIfNotEditable","isCellEditable","throwIfNotInMode","handleCellDoubleClick","isEditable","newParams","cellDoubleClick","handleCellFocusOut","View","cellFocusOut","which","escapeKeyDown","enterKeyDown","shiftTabKeyDown","tabKeyDown","printableKeyDown","pasteKeyDown","deleteKeyDown","handleCellEditStart","startCellEditModeParams","deleteValue","startCellEditMode","handleCellEditStop","cellToFocusAfter","runPendingEditCellValueMutation","ignoreModifications","stopCellEditMode","onCellEditStart","onCellEditStop","editRowsState","hasFieldErrors","editingState","updateCellModesModel","isNewModelDifferentFromProp","updateFieldInCellModesModel","newProps","_newModel$id","otherFields","updateOrDeleteFieldState","newEditingState","updateStateToStartCellEditMode","newValue","isProcessingProps","updateStateToStopCellEditMode","finishCellEditMode","moveFocusToRelativeCell","rowUpdate","getRowWithUpdatedValuesFromCellEditing","handleError","errorThrown","finalRowUpdate","catch","editingApi","editingPrivateApi","setCellEditingEditCellValue","debounceMs","unstable_skipValueParser","skipValueParser","parsedValue","valueParser","changeReason","preProcessEditCellProps","valueSetter","useEnhancedEffect","idToIdLookup","copyOfPrevCellModes","prevMode","originalId","useGridCellEditing","rowModesModel","setRowModesModel","rowModesModelRef","prevRowModesModel","focusTimeout","nextFocusedCell","rowModesModelProp","onRowModesModelChange","runIfEditModeIsRow","Row","getRowMode","hasFieldsWithErrors","fieldProps","rowParams","handleCellFocusIn","rowFocusOut","clearTimeout","nextFieldToFocus","handleRowEditStart","startRowEditModeParams","fieldToFocus","startRowEditMode","handleRowEditStop","stopRowEditMode","onRowEditStart","onRowEditStop","updateRowModesModel","updateRowInRowModesModel","updateOrDeleteRowState","updateStateToStartRowEditMode","updateStateToStopRowEditMode","focusedField","finishRowEditMode","getRowWithUpdatedValuesFromRowEditing","setRowEditingEditCellValue","promises","_editingState$id","otherFieldsProps","processedProps","thisField","fieldColumn","_editingState$id2","all","copyOfPrevRowModesModel","useGridRowEditing","debounceMap","isCellEditableProp","editable","renderEditCell","debounces","runCallback","debouncedField","editingSharedApi","setEditCellValue","maybeDebounce","setEditCellValueToCall","getRowWithUpdatedValues","unstable_getEditCellMeta","editingSharedPrivateApi","useGridEditing","lastClickedCell","hasRootReference","publishCellFocusOut","focusedCell","getColumnGroupHeaderFocus","direction","columnIndexToFocus","visibleColumns","concat","rowIndexToFocus","rowToFocus","colSpanInfo","columnToFocus","handleColumnHeaderFocus","handleColumnGroupHeaderFocus","handleBlur","_","relatedTarget","handleCellMouseDown","handleDocumentClick","cellElement","getCellElement","handleCellModeChange","handleRowSet","handlePaginationModelChange","currentFocusedCell","focusApi","focusPrivateApi","useGridFocus","hideTimeout","immediateTimeout","hidePreferences","preferencePanelState","openedPanelValue","doNotHidePanel","hidePreferencesDelayed","showPreferences","panelId","labelId","preferencePanelToExport","useGridPreferencesPanel","onFilterModelChange","updateFilteredRows","filterState","getFilterState","visibleRowsLookupState","addColumnMenuItem","filterable","disableColumnFilter","applyFilters","upsertFilterItem","item","itemIndex","filterItem","setFilterModel","upsertFilterItems","existingItems","deleteFilterItem","itemToDelete","showFilterPanel","targetColumnField","filterItemsWithValue","filterOperator","filterOperators","operator","requiresFilterValue","newFilterItems","filterItemOnTarget","targetColumn","filters","hideFilterPanel","setFilterLogicOperator","logicOperator","setQuickFilterValues","unstable_applyFilters","inputFilterModel","isRowMatchingFilters","filterMode","disableEval","filterResult","filterApi","ignoreDiacritics","filterModelToExport","callbacks","FilterPanel","filterPanel","getRowsRef","flatFilteringMethod","filterCache","passingFilterItems","passingQuickFilterValues","isRowPassing","footerId","handleColumnsChange","updateVisibleRowsLookupState","useGridFilter","onSortModelChange","upsertSortModel","sortItem","existingIdx","newSortModel","createSortItem","directionOverride","existing","nextSort","sortingOrder","sortable","disableColumnSorting","sortingMode","sortRowList","setSortModel","sortColumn","allowMultipleSorting","sortApi","getSortModel","getSortedRows","getSortedRowIds","getRowIdFromRowIndex","sortModelToExport","flatSortingMethod","rootGroupNode","sortedChildren","handleColumnHeaderClick","latestColumns","useGridSorting","onDensityChange","densityApi","setDensity","newDensity","exportedDensity","restoredDensity","useGridDensity","onPaginationMetaChange","paginationMetaApi","setPaginationMeta","newPaginationMeta","exportedPaginationMeta","restoredPaginationMeta","useGridPaginationMeta","densityFactor","onPaginationModelChange","paginationModelApi","setPage","currentModel","setPaginationModel","setPageSize","handleUpdateAutoPageSize","maximumPageSizeWithoutScrollBar","handleRowCountChange","newRowCount","useGridPaginationModel","visibleTopLevelRowCount","rowCountState","previousPageSize","onRowCountChange","paginationRowCountApi","setRowCount","exportedRowCount","restoredRowCount","isLastPage","hasNextPage","useGridRowCount","useGridPagination","getRowHeight","getRowHeightProp","getRowSpacing","getEstimatedRowHeight","rowsHeightLookup","lastMeasuredRowIndex","hasRowWithAutoHeight","gridPaginationSelector","validRowHeight","hydrateRowsMeta","calculateRowProcessedSizes","sizes","baseCenter","isResized","autoHeight","needsFirstMeasurement","baseRowHeight","existingBaseRowHeight","rowHeightFromUser","initialHeights","indexRelativeToCurrentPage","spacing","isFirstVisible","isLastVisible","spacingTop","spacingBottom","processedSizes","otherSizes","setRowHeight","debouncedHydrateRowsMeta","debounce","rowPositionsDebounceMs","storeMeasuredRowHeight","needsHydration","rowHasAutoHeight","getLastMeasuredRowIndex","setLastMeasuredRowIndex","resetRowHeights","rowsMetaApi","unstable_setLastMeasuredRowIndex","unstable_getRowHeight","unstable_getRowInternalSizes","unstable_setRowHeight","unstable_storeRowHeightMeasurement","rowsMetaPrivateApi","useGridRowsMeta","colRef","scrollCoordinates","columnPositions","cellWidth","abs","scrollLeft","gridRowsMetaSelector","elementIndex","targetOffsetHeight","scroll","scrollApi","getScrollPosition","useGridScroll","showColumnMenu","columnMenuState","hideColumnMenu","columnLookup","visibleOrderedFields","fieldIndex","columnMenuApi","useGridColumnMenu","previousGridState","previousColumnVisibility","previousRows","previousVirtualizationState","updateGridColumnsForPrint","includeCheckboxes","exportedColumnFields","newColumnVisibilityModel","updateGridRowsForPrint","handlePrintWindowLoad","printWindow","normalizeOptions","copyStyles","hideToolbar","hideFooter","printDoc","contentDocument","gridRootElement","gridClone","cloneNode","contain","gridToolbarElementHeight","toolbarContainer","gridFooterElementHeight","footerContainer","computedTotalHeight","boxSizing","gridFooterElement","container","innerHTML","defaultPageStyle","pageStyle","styleElement","createTextNode","head","bodyClassName","split","stylesheetLoadPromises","rootCandidate","getRootNode","headStyleElements","querySelectorAll","tagName","newHeadStyleElements","sheet","styleCSS","cssRules","cssText","attributes","attr","setAttribute","nodeName","nodeValue","contentWindow","print","handlePrintWindowAfterPrint","restoreState","virtualization","printExportApi","exportDataAsPrint","exportState","enabled","enabledForColumns","requestAnimationFrame","iframeEl","buildPrintWindow","onload","matchMedia","mql","matches","printOptions","useGridPrintExport","clipboardExport","clipboardCopyCellDelimiter","handleCopy","toLowerCase","altKey","selectionEnd","selectionStart","textToCopy","navigator","clipboard","writeText","onClipboardCopy","useGridClipboard","errorShown","rootDimensionsRef","dimensionsState","columnHeaderHeight","columnGroupHeaderHeight","w","savedSize","setSavedSize","debouncedSetSavedSize","func","wait","lastArgs","later","throttled","resizeThrottleMs","previousSize","setDimensions","resize","computedStyle","defaultView","newSize","parseFloat","updateDimensions","rootElement","pinnedRowsHeight","scrollDiv","measureScrollbarSize","hasScrollXIfNoYScrollBar","hasScrollYIfNoXScrollBar","newDimensions","prevDimensions","apiPublic","apiPrivate","k","Number","isFirstSizing","handleResize","isJSDOM","test","userAgent","onResize","useGridDimensions","onColumnHeaderClick","onColumnHeaderDoubleClick","onColumnHeaderOver","onColumnHeaderOut","onColumnHeaderEnter","onColumnHeaderLeave","onCellClick","onCellDoubleClick","onCellKeyDown","onPreferencePanelClose","onPreferencePanelOpen","onMenuOpen","onMenuClose","onRowDoubleClick","onRowClick","onStateChange","useGridEvents","statePersistenceApi","useGridStatePersistence","useGridVirtualization","configuration","hooks","useGridAriaAttributes","useGridPrivateApiContext","useGridRootProps","accessibleRowCount","headerGroupingMaxDepth","pinnedRowsCount","useGridRowAriaAttributes","selectedIdsLookup","ariaAttributes","ariaRowIndex","DataGridRaw","useDataGridProps","GridContextProvider","GridRoot","sx","forwardedProps","GridHeader","GridFooterPlaceholder","propTypes","isRequired","columnBufferPx","disableColumnMenu","disableColumnResize","disableDensitySelector","disableMultipleRowSelection","disableVirtualization","estimatedRowCount","experimentalFeatures","warnIfFocusStateIsNotSynced","filterDebounceMs","quickFilterExcludeHiddenColumns","quickFilterLogicOperator","getCellClassName","getDetailPanelContent","getRowClassName","hideFooterPagination","hideFooterSelectedRowCount","indeterminateCheckboxAction","nonce","onColumnOrderChange","pageSizeOptions","label","rowBufferPx","rowSpacingType","showCellVerticalBorder","showColumnVerticalBorder","GridNoResultsOverlay","noResultsOverlayLabel","useGridApiContext","GridOverlay","GridColumnUnsortedIcon","nextSortDirection","Icon","columnSortedAscendingIcon","columnSortedDescendingIcon","iconSlots","booleanCellTrueIcon","booleanCellFalseIcon","columnMenuIcon","openFilterButtonIcon","filterPanelDeleteIcon","columnFilteredIcon","columnSelectorIcon","columnUnsortedIcon","columnResizeIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","exportIcon","moreActionsIcon","treeDataCollapseIcon","treeDataExpandIcon","groupingCriteriaCollapseIcon","groupingCriteriaExpandIcon","detailPanelExpandIcon","detailPanelCollapseIcon","rowReorderIcon","quickFilterIcon","quickFilterClearIcon","columnMenuHideIcon","columnMenuSortAscendingIcon","columnMenuSortDescendingIcon","columnMenuFilterIcon","columnMenuManageColumnsIcon","columnMenuClearIcon","loadIcon","filterPanelAddIcon","filterPanelRemoveAllIcon","columnReorderIcon","baseCheckbox","baseTextField","baseFormControl","baseSelect","baseButton","baseIconButton","baseInputAdornment","baseTooltip","basePopper","baseInputLabel","baseSelectOption","native","baseChip","DATA_GRID_DEFAULT_SLOTS_COMPONENTS","material","GridCell","skeletonCell","GridSkeletonCell","columnHeaderFilterIconButton","GridColumnHeaderFilterIconButton","columnHeaderSortIcon","GridColumnHeaderSortIcon","GridColumnMenu","columnHeaders","GridColumnHeaders","detailPanels","footer","GridFooter","footerRowCount","GridRowCount","toolbar","loadingOverlay","GridLoadingOverlay","noResultsOverlay","noRowsOverlay","GridNoRowsOverlay","GridPagination","GridFilterPanel","GridColumnsPanel","G","columnsManagement","GridColumnsManagement","panel","GridPanel","GridRow","DATA_GRID_FORCED_PROPS","hideFooterRowCount","disableColumnReorder","keepColumnPositionIfDraggedOutside","DATA_GRID_PROPS_DEFAULT_VALUES","defaultSlots","themedProps","allProps","useThemeProps","startsWith","groupForwardedProps","overrides","computeSlots","injectDefaultProps","GRID_ACTIONS_COLUMN_TYPE","GRID_ACTIONS_COL_DEF","aggregable","align","headerAlign","renderCell","getApplyQuickFilterFn","GRID_BOOLEAN_COL_DEF","sortComparator","valueFormatter","pastedValueParser","stringToBoolean","getGridBooleanOperators","getApplyFilterFn","valueAsBoolean","InputComponent","GRID_CHECKBOX_SELECTION_FIELD","GRID_CHECKBOX_SELECTION_COL_DEF","disableReorder","renderHeader","throwIfNotDateObject","gridDateFormatter","toLocaleDateString","gridDateTimeFormatter","toLocaleString","GRID_DATE_COL_DEF","GRID_DATETIME_COL_DEF","buildApplyFilterFn","compareFn","showTime","keepHours","date","setSeconds","setMinutes","getMinutes","getTimezoneOffset","setHours","time","getTime","dateCopy","getGridDateOperators","value1","value2","InputComponentProps","DEFAULT_GRID_COL_TYPE_KEY","getGridDefaultColumnTypes","string","number","dateTime","boolean","singleSelect","custom","GRID_NUMERIC_COL_DEF","parseNumericValue","getGridNumericQuickFilterFn","isNaN","columnValue","getGridNumericOperators","GRID_SINGLE_SELECT_COL_DEF","getOptionLabel","getOptionValue","valueOptions","valueOption","option","parseObjectValue","getGridSingleSelectOperators","filterItemValues","GRID_STRING_COL_DEF","hideable","groupable","pinnable","getGridStringQuickFilterFn","filterRegex","RegExp","getRowFormattedValue","createContainsFilterFn","disableTrim","negate","trimmedValue","createEqualityFilterFn","collator","Intl","Collator","sensitivity","usage","isEqual","compare","createEmptyFilterFn","getGridStringOperators","filterItemValue","val","filterValue","GridColumnGroupHeader","hasFocus","isLastColumn","indexInSection","sectionLength","gridHasFiller","headerCellRef","columnGroupsLookup","description","headerComponent","render","renderHeaderGroup","renderParams","showLeftBorder","showRightBorder","isDragging","useId","elementId","draggableContainer","titleContainer","titleContainerContent","elementToFocus","publish","mouseEventsHandlers","onKeyDown","onFocus","onBlur","GridGenericColumnHeaderItem","columnMenuOpen","isResizing","sortDirection","isDraggable","columnMenuIconButton","columnTitleIconButtons","GridColumnHeaderRow","styled","columnHeaderRow","GridColumnHeadersRoot","flexDirection","borderTopLeftRadius","borderTopRightRadius","GridBaseColumnHeaders","clsx","sortColumnLookup","filterColumnLookup","columnHeaderTabIndexState","columnGroupHeaderTabIndexState","columnHeaderFocus","columnGroupHeaderFocus","columnVisibility","hasOtherElementInTabSequence","getInnerProps","getColumnHeadersRow","getColumnGroupHeadersRows","dragCol","setDragCol","resizeCol","setResizeCol","hasVirtualization","columnGroupsModel","offsetLeft","handleColumnResizeStart","handleColumnResizeStop","handleColumnReorderStart","handleColumnReorderStop","leftRenderContext","firstColumnIndex","lastColumnIndex","rightRenderContext","getColumnsToRender","currentContext","firstColumnToRender","lastColumnToRender","renderedColumns","getFillers","leftOverflow","borderBottom","isPinnedRight","isNotPinned","hasScrollbarFiller","leftOffsetWidth","filler","pinnedRight","borderTop","getCellOffsetStyle","isLeftPinned","isRightPinned","pinnedOffset","getPinnedCellOffset","getColumnHeaders","isFirstColumn","siblingWithBorderingSeparator","isSiblingFocused","isLastUnpinned","GridColumnHeaderItem","filterItemsCounter","isLast","getColumnGroupHeaders","columnsToRender","rowStructure","firstColumnFieldToRender","firstGroupToRender","firstGroupIndex","lastColumnFieldToRender","lastGroupToRender","lastGroupIndex","visibleColumnGroupHeader","groupStructure","firstVisibleColumnIndex","headerInfo","separatorSide","GridColumnHeaderSeparator","Left","useGridColumnHeaders","MemoizedGridColumnHeaders","fastMemo","GridConfigurationContext","selectedRowCount","selectedRowCountElement","rowCountElement","visibleRowCount","paginationElement","GridPreferencesPanel","panelContent","SkeletonOverlay","skeletonLoadingOverlay","getColIndex","GridSkeletonLoadingOverlay","forwardedRef","handleRef","useForkRef","viewportHeight","skeletonRowsCount","ceil","inViewportCount","allVisibleColumns","getPinnedStyle","getPinnedPosition","array","rowCells","isPinnedLeft","sectionIndex","pinnedStyle","isFirstPinnedRight","hasFillerBefore","hasFillerAfter","expandedWidth","emptyCellWidth","emptyCell","empty","scrollbarWidth","GridScrollbarFillerCell","rowSkeleton","cells","resizedColIndex","currentWidth","getPropertyValue","pinnedCells","LOADING_VARIANTS","CircularProgress","skeleton","noRowsVariant","rowsCount","activeVariant","noRowsLabel","GridPaginationRoot","maxHeight","selectLabel","breakpoints","up","input","defaultLabelDisplayedRows","to","count","estimated","computedProps","backIconButtonProps","disabled","nextIconButtonProps","lastPage","computedPage","handlePageSizeChange","handlePageChange","isPageSizeIncludedInPageSizeOptions","locales","wrappedLabelDisplayedRows","labelDisplayedRows","rowsPerPageOptions","rowsPerPage","onPageChange","onRowsPerPageChange","EmptyCell","cellEmpty","refProp","selected","styleProp","focusedColumnIndex","isNotVisible","showBottomBorder","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver","useGridConfiguration","treeDepth","editing","hasFocusCell","hasVirtualFocusCellLeft","hasVirtualFocusCellRight","composeGridClasses","getRowAriaAttributes","ResizeObserver","resizeObserver","entry","borderBoxSize","blockSize","contentRect","observe","disconnect","propHandler","publishClick","rowReordering","minHeight","numberOfBaseSizes","maximumSize","rowStyle","rowClassNames","getCell","indexRelativeToAllColumns","NONE","editCellState","isReorderCell","isEditingRows","canReorderColumn","canReorderRow","disableDragEvents","cellIsNotVisible","VIRTUAL","leftCells","rightCells","middleColumnsLength","eventHandlers","cellOffsetLeft","MemoizedGridRow","GridRowCountRoot","alignItems","margin","scrollbarFiller","GridSelectedRowCountRoot","GridSelectedRowCount","rowSelectedText","GridOverlayWrapperRoot","shouldForwardProp","prop","overlayWrapper","overlayType","loadingOverlayVariant","GridOverlayWrapperInner","overlayWrapperInner","inner","GridOverlayWrapper","GridOverlays","Overlay","overlayProps","hasActions","getActions","GridActionsCell","focusElementRef","focusedButtonIndex","setFocusedButtonIndex","setOpen","rootRef","buttonRef","ignoreCallToFocus","touchRippleRefs","menuId","buttonId","iconButtons","showInMenu","menuButtons","numberOfButtons","stop","preventScroll","focusableButtonIndex","hideMenu","handleTouchRippleRef","instance","handleButtonClick","actionsCell","getNewIndex","indexMod","newIndex","stopPropagation","touchRippleRef","fontSize","onClose","menuList","autoFocusItem","closeMenu","renderActionsCell","GridBooleanCellRaw","titleAccess","GridBooleanCell","renderBooleanCell","cachedSupportsPreventScroll","PinnedPosition","gridPinnedColumnPositionLookup","EMPTY_CELL_PARAMS","onMouseDown","onMouseUp","onKeyUp","onDragEnter","onDragOver","canManageOwnFocus","rootClasses","classNames","valueToRender","cellRef","isSelectionMode","cellSelection","capitalize","publishMouseUp","publishMouseDown","isCellRowSpanned","padding","border","cellStyle","activeElement","focusableElement","scrollPosition","handleFocus","updatedRow","editCellStateRest","valueString","draggableEventHandlers","MemoizedGridCell","GridEditBooleanCell","idProp","onValueChange","inputRef","valueState","setValueState","handleChange","checked","htmlFor","onChange","renderEditBooleanCell","StyledInputBase","GridEditDateCell","valueProp","inputProps","isDateTime","valueTransformed","parsedDate","formattedDate","substr","parsed","formatted","parseValueToDate","year","month","day","setFullYear","hours","minutes","newFormattedDate","newParsedDate","fullWidth","renderEditDateCell","GridEditInputCellRoot","editInputCell","typography","body2","GridEditInputCell","endAdornment","renderEditInputCell","GridEditSingleSelectCell","initialOpen","isSelectNative","MenuProps","otherBaseSelectProps","formattedTargetValue","onOpen","isKeyboardEvent","renderEditSingleSelectCell","CIRCULAR_CONTENT_SIZE","DEFAULT_CONTENT_WIDTH_RANGE","CONTENT_WIDTH_RANGE_BY_TYPE","randomNumberGenerator","Memoized","skeletonProps","icon","counter","toggleFilter","getColumnHeaderParams","iconButton","enterDelay","badgeContent","ColumnHeaderMenuIcon","columnMenuId","columnMenuButtonId","iconButtonRef","handleMenuIconClick","sortIndex","showColumnMenuIcon","setShowColumnMenuIcon","isColumnSorted","isColumnFiltered","isColumnNumeric","onDragStart","onDragEnd","columnHeaderSeparatorProps","handleExited","GridColumnHeaderMenu","ContentComponent","contentComponentProps","onExited","showSortIcon","hideSortIcons","draggableContainerProps","GridColumnHeaderSeparatorSides","GridColumnHeaderSeparatorRaw","Right","resizing","stopClick","GridColumnHeaderSortIconRaw","iconElement","icons","iconProps","getIcon","overlap","GridColumnHeaderTitleRoot","textOverflow","fontWeight","lineHeight","ColumnHeaderInnerTitle","GridColumnHeaderTitle","titleRef","tooltip","setTooltip","handleMouseOver","isOver","ariaSort","draggable","columnWidth","GridIconButtonContainerRoot","GridIconButtonContainer","GridCellCheckboxForwardRef","isChecked","checkboxElement","rippleRef","handleKeyDown","isSelectable","GridCellCheckboxRenderer","GridHeaderCheckbox","tabIndexState","paginatedVisibleRowIds","filteredSelection","selectionCandidates","currentSelectionSize","isIndeterminate","handleSelectionChange","p","indeterminate","checkColumnVisibilityModelsSame","aFalseValues","bFalseValues","defaultSearchPredicate","searchValue","searchInputRef","initialColumnVisibilityModel","setSearchValue","searchPredicate","autoFocusSearchField","disableShowHideToggle","disableResetButton","toggleAllMode","getTogglableColumns","isResetDisabled","sortedColumns","toggleColumn","togglableColumns","togglableSortedColumns","toggleAllColumns","handleSearchValueChange","hideableColumns","allHideableColumnsVisible","every","allHideableColumnsHidden","firstSwitchRef","firstHideableColumnFound","isFirstHideableColumn","GridColumnsManagementHeader","placeholder","InputProps","startAdornment","pl","GridColumnsManagementBody","FormControlLabel","control","GridColumnsManagementEmptyText","GridColumnsManagementFooter","columnsManagementHeader","columnsManagementFooter","justifyContent","divider","grey","GridFooterContainerRoot","GridFooterContainer","GridOverlayRoot","overlay","alignSelf","columnHeaderStyles","separatorIconDragStyles","rx","GridRootStyles","aggregationColumnHeader","aggregationColumnHeaderLabel","editBooleanCell","cellSkeleton","checkboxInput","columnHeaderDraggableContainer","columnHeaderTitleContainer","columnSeparator","filterIcon","iconSeparator","menuIconButton","menuOpen","rowReorderCellPlaceholder","rowReorderCell","sortIcon","withBorderColor","treeDataGroupingCell","treeDataGroupingCellToggle","treeDataGroupingCellLoadingContainer","detailPanelToggleCell","borderColor","TableCell","radius","containerBackground","default","mixins","MuiDataGrid","pinnedBackground","overlayBackground","defaultChannel","disabledOpacity","hoverOpacity","hoverColor","selectedOpacity","selectedBackground","mainChannel","selectedHoverBackground","pinnedHoverBackground","blend","pinnedSelectedBackground","pinnedSelectedHoverBackground","selectedStyles","fontWeightMedium","borderWidth","borderStyle","outline","overflowAnchor","groupingCriteriaCell","WebkitTapHighlightColor","outlineOffset","focusOutlineWidth","transitions","duration","shorter","gap","borderBottomWidth","borderBottomStyle","marginLeft","marginRight","columnSeparatorOffset","touchAction","shortest","breakInside","borderTopColor","boxShadow","shadows","paper","booleanCell","secondary","gridGap","rowReorderCellContainer","borderLeftColor","borderLeftWidth","borderLeftStyle","borderRightColor","borderRightWidth","borderRightStyle","textAlign","virtualScrollerContent","groupingCriteriaCellToggle","virtualScroller","gamma","f","overlayColor","rgb","mountedState","setMountedState","GridMenuRoot","menu","modal","GridMenu","savedFocusRef","HTMLElement","handleClickAway","anchorEl","placement","TransitionProps","onClickAway","mouseEvent","popperOnExited","labelledby","GRID_COLUMN_MENU_SLOTS","columnMenuSortItem","GridColumnMenuSortItem","columnMenuFilterItem","GridColumnMenuFilterItem","columnMenuColumnsItem","GridColumnMenuColumnsItem","GRID_COLUMN_MENU_SLOT_PROPS","displayOrder","GridGenericColumnMenu","defaultSlotProps","orderedSlots","addDividers","processedComponents","processedSlotProps","mergedProps","currentSlotProps","defaultItems","userItems","defaultComponentKeys","sorted","leftItemProps","rightItemProps","isFinite","itemProps","processedComponentProps","customProps","Divider","useGridColumnMenuSlots","GridColumnMenuContainer","Component","otherProps","StyledMenuList","handleListKeyDown","autoFocus","showFilter","GridColumnMenuHideItem","GridColumnMenuManageItem","showColumns","onSortMenuItemClick","getLabel","gridPanelClasses","GridPanelRoot","GridPaperRoot","isPlaced","setIsPlaced","modifiers","rootBoundary","phase","effect","setAnchorEl","panelAnchor","elevation","GridPanelContentRoot","GridPanelContent","GridPanelFooterRoot","panelFooter","GridPanelFooter","GridPanelWrapperRoot","panelWrapper","isEnabled","GridPanelWrapper","disableEnforceFocus","TrapFocus","GridFilterFormRoot","filterForm","FilterFormDeleteIcon","filterFormDeleteIcon","flexShrink","FilterFormLogicOperatorInput","filterFormLogicOperatorInput","FilterFormColumnInput","filterFormColumnInput","FilterFormOperatorInput","filterFormOperatorInput","FilterFormValueInput","filterFormValueInput","getColumnLabel","GridFilterForm","hasMultipleFilters","deleteFilter","applyFilterChanges","showMultiFilterOperators","disableMultiFilterOperator","applyMultiFilterOperatorChanges","logicOperators","And","Or","columnsSort","filterColumns","deleteIconProps","logicOperatorInputProps","operatorInputProps","columnInputProps","valueInputProps","readOnly","filterableColumns","columnSelectId","columnSelectLabelId","operatorSelectId","operatorSelectLabelId","deleteIcon","logicOperatorInput","columnInput","operatorInput","valueInput","valueRef","filterSelectorRef","multiFilterOperator","hasLogicOperatorColumn","baseFormControlProps","isBaseSelectNative","baseInputLabelProps","baseSelectOptionProps","valueInputPropsOther","selectedField","itemField","selectedNonFilterableColumn","filteredFields","currentFilters","isFieldIncluded","sortedFilteredColumns","currentColumn","currentOperator","changeColumn","newOperator","changeOperator","op","eraseItemValue","changeLogicOperator","getLogicOperatorLocaleKey","applyValue","BooleanOperatorContainer","GridFilterInputBoolean","clearButton","labelProp","others","filterValueState","setFilterValueState","selectId","baseSelectProps","onFilterChange","shrink","notched","displayEmpty","convertFilterItemValueToInputValue","itemValue","inputType","substring","GridFilterInputDate","filterTimeout","applying","setIsApplying","InputLabelProps","GridFilterInputMultipleSingleSelect","helperText","TextFieldProps","resolvedColumn","isOptionEqualToValue","resolvedValueOptions","filteredValues","resolvedValue","A","multiple","filterOptions","renderTags","getTagProps","_getTagProps","tagProps","renderInput","GridFilterInputMultipleValue","freeSolo","inputValue","renderSingleSelectOptions","OptionComponent","SingleSelectOperatorContainer","GridFilterInputSingleSelect","currentValueOptions","GridFilterInputValue","newItem","fromInput","getGridFilter","filterableColumnsLookup","lastFilterRef","placeholderFilter","filterFormProps","getColumnForNewFilter","disableAddFilterButton","disableRemoveAllButton","applyFilter","applyFilterLogicOperator","getDefaultFilter","nextColumnWithOperator","nextFieldName","getNewFilter","nextColumnFieldName","readOnlyFilters","validFilters","addNewFilter","newFilter","shouldCloseFilterPanel","handleRemoveAll","startIcon","isSingleSelectColDef","getValueOptions","additionalParams","getValueFromValueOptions","optionValue","_excluded3","GridCsvExportMenuItem","GridPrintExportMenuItem","GridToolbarExport","excelOptions","preProcessedButtons","GridToolbarExportContainer","buttonProps","tooltipProps","exportButtonId","exportMenuId","handleMenuClose","prevOpen","GridScrollAreaRawRoot","scrollArea","GridScrollArea","scrollDirection","getCanScrollMore","maxScrollLeft","dragging","setDragging","canScrollMore","setCanScrollMore","totalHeaderHeight","handleDragOver","offset","handleColumnHeaderDragStart","handleColumnHeaderDragEnd","newScrollPosition","useGridOverlays","noRows","MemoizedGridHeaders","cellTabIndexState","columnsContainerRef","GridPanelAnchor","Element","flexGrow","GridMainContainer","GridTopContainer","GridBottomContainer","VirtualScrollerContentRoot","GridVirtualScrollerContent","overflowedContent","Filler","Pinned","PinnedLeft","borderRight","PinnedRight","borderLeft","Main","rowsLength","scrollbarHeight","expandedHeight","VirtualScrollerRenderZoneRoot","virtualScrollerRenderZone","GridVirtualScrollerRenderZone","Scrollbar","ScrollbarVertical","overflowY","overflowX","ScrollbarHorizontal","Content","GridVirtualScrollbar","isLocked","lastPosition","scrollbarRef","contentRef","propertyDimension","propertyScroll","hasScroll","scrollbarInnerSize","onScrollerScroll","scroller","scrollbar","onScrollbarScroll","capture","Container","Scroller","GridVirtualScroller","overlaysProps","useGridVirtualScroller","getContainerProps","getScrollerProps","getContentProps","getRenderZoneProps","getScrollbarVerticalProps","getScrollbarHorizontalProps","getRows","getDataGridUtilityClass","GRID_DETAIL_PANEL_TOGGLE_FIELD","GRID_DEFAULT_LOCALE_TEXT","toolbarDensity","toolbarDensityLabel","toolbarDensityCompact","toolbarDensityStandard","toolbarDensityComfortable","toolbarColumns","toolbarColumnsLabel","toolbarFilters","toolbarFiltersLabel","toolbarFiltersTooltipHide","toolbarFiltersTooltipShow","toolbarFiltersTooltipActive","toolbarQuickFilterPlaceholder","toolbarQuickFilterLabel","toolbarQuickFilterDeleteIconLabel","toolbarExport","toolbarExportLabel","toolbarExportCSV","toolbarExportPrint","toolbarExportExcel","columnsManagementSearchTitle","columnsManagementNoColumns","columnsManagementShowHideAllText","columnsManagementReset","filterPanelAddFilter","filterPanelRemoveAll","filterPanelDeleteIconLabel","filterPanelLogicOperator","filterPanelOperator","filterPanelOperatorAnd","filterPanelOperatorOr","filterPanelColumns","filterPanelInputLabel","filterPanelInputPlaceholder","filterOperatorContains","filterOperatorDoesNotContain","filterOperatorEquals","filterOperatorDoesNotEqual","filterOperatorStartsWith","filterOperatorEndsWith","filterOperatorIs","filterOperatorNot","filterOperatorAfter","filterOperatorOnOrAfter","filterOperatorBefore","filterOperatorOnOrBefore","filterOperatorIsEmpty","filterOperatorIsNotEmpty","filterOperatorIsAnyOf","headerFilterOperatorContains","headerFilterOperatorDoesNotContain","headerFilterOperatorEquals","headerFilterOperatorDoesNotEqual","headerFilterOperatorStartsWith","headerFilterOperatorEndsWith","headerFilterOperatorIs","headerFilterOperatorNot","headerFilterOperatorAfter","headerFilterOperatorOnOrAfter","headerFilterOperatorBefore","headerFilterOperatorOnOrBefore","headerFilterOperatorIsEmpty","headerFilterOperatorIsNotEmpty","headerFilterOperatorIsAnyOf","filterValueAny","filterValueTrue","filterValueFalse","columnMenuLabel","columnMenuShowColumns","columnMenuManageColumns","columnMenuFilter","columnMenuHideColumn","columnMenuUnsort","columnMenuSortAsc","columnMenuSortDesc","columnHeaderFiltersTooltipActive","columnHeaderFiltersLabel","columnHeaderSortIconLabel","footerRowSelected","footerTotalRows","footerTotalVisibleRows","visibleCount","totalCount","checkboxSelectionHeaderName","checkboxSelectionSelectAllRows","checkboxSelectionUnselectAllRows","checkboxSelectionSelectRow","checkboxSelectionUnselectRow","booleanCellTrueLabel","booleanCellFalseLabel","actionsCellMore","pinToLeft","pinToRight","unpin","treeDataGroupingHeaderName","treeDataExpand","treeDataCollapse","groupingColumnHeaderName","groupColumn","unGroupColumn","detailPanelToggle","expandDetailPanel","collapseDetailPanel","MuiTablePagination","rowReorderingHeaderName","aggregationMenuItemHeader","aggregationFunctionLabelSum","aggregationFunctionLabelAvg","aggregationFunctionLabelMin","aggregationFunctionLabelMax","aggregationFunctionLabelSize","Provider","gridColumnGroupingSelector","gridColumnGroupsUnwrappedModelSelector","gridColumnGroupsLookupSelector","gridColumnGroupsHeaderStructureSelector","gridColumnGroupsHeaderMaxDepthSelector","gridColumnMenuSelector","DEFAULT_GRID_AUTOSIZE_OPTIONS","GridPinnedColumnPosition","EMPTY_PINNED_COLUMN_FIELDS","gridColumnsStateSelector","gridColumnFieldsSelector","createSelector","gridColumnLookupSelector","gridColumnDefinitionsSelector","allFields","gridColumnVisibilityModelSelector","gridVisibleColumnDefinitionsSelector","gridVisibleColumnFieldsSelector","gridPinnedColumnsSelector","gridVisiblePinnedColumnDefinitionsSelector","visiblePinnedFields","invert","newPinnedColumns","remainingColumns","leftPinnedColumns","columnsWithoutLeftPinnedColumns","rightPinnedColumns","filterVisibleColumns","gridColumnPositionsSelector","currentPosition","gridColumnsTotalWidthSelector","colCount","gridFilterableColumnDefinitionsSelector","gridFilterableColumnLookupSelector","gridHasColSpanSelector","COLUMNS_DIMENSION_PROPERTIES","COLUMN_TYPES","hydrateColumnsWidth","rawState","totalFlexUnits","widthAllocatedBeforeFlex","flexColumns","columnField","isFlex","availableWidth","initialFreeSpace","computedColumnWidths","uniqueFlexColumns","flexColumnsLookup","frozenFields","freeze","frozen","loopOverFlexItems","violationsLookup","remainingFreeSpace","flexUnits","totalViolation","computeFlexColumnsWidth","getDefaultColTypeDef","createColumnsState","isInsideStateInitializer","currentState","columnsToKeep","columnsToUpsertLookup","existingState","columnsStateWithPortableColumns","columnsWithUpdatedDimensions","orderedFieldsLookup","cleanOrderedFields","newOrderedFields","newColumnLookup","newColDef","applyInitialState","getFirstNonSpannedColumnToRender","lastRowToRender","firstNonSpannedColumnToRender","getTotalHeaderHeight","isHeaderFilteringEnabled","COMPACT_DENSITY_FACTOR","COMFORTABLE_DENSITY_FACTOR","DENSITY_FACTORS","compact","comfortable","standard","gridDensitySelector","gridDensityFactorSelector","gridDimensionsSelector","gridEditRowsStateSelector","gridFilterStateSelector","gridFilterModelSelector","gridQuickFilterValuesSelector","gridVisibleRowsLookupSelector","gridFilteredRowsLookupSelector","gridFilteredDescendantCountLookupSelector","gridExpandedSortedRowEntriesSelector","gridExpandedSortedRowIdsSelector","visibleSortedRowEntries","gridFilteredSortedRowEntriesSelector","gridFilteredSortedRowIdsSelector","filteredSortedRowEntries","gridFilteredSortedTopLevelRowEntriesSelector","visibleSortedRowIds","depthPositionCounter","lastDepth","rowTreeDepth","gridExpandedRowCountSelector","gridFilteredTopLevelRowCountSelector","visibleSortedTopLevelRows","gridFilteredRowCountSelector","gridFilteredDescendantRowCountSelector","topLevelRowCount","gridFilterActiveItemsSelector","gridFilterActiveItemsLookupSelector","activeFilters","res","getDefaultGridFilterModel","getPublicApiRef","hasEval","cleanFilterItem","cleanItem","sanitizeFilterModel","hasSeveralItems","hasItemsWithoutIds","mergeStateWithFilterModel","filteringState","removeDiacritics","normalize","getFilterCallbackFromItem","parser","newFilterItem","applyFilterOnRow","filterItemsApplierId","shouldQuickFilterExcludeHiddenColumns","buildAggregatedFilterApplier","isRowMatchingFilterItems","Function","getHasEval","shouldApplyFilter","resultPerItemId","filterItemCore","JSON","stringify","replaceAll","shouldApplyItem","buildAggregatedFilterItemsApplier","isRowMatchingQuickFilter","appliersPerField","quickFilterValue","outer","buildAggregatedQuickFilterApplier","isNotNull","passFilterLogic","allFilterItemResults","allQuickFilterResults","cleanedFilterItems","filterModelItems","cleanedFilterItemResults","cleanedQuickFilterResults","filterItemPredicate","filterItemResult","quickFilterValuePredicate","quickFilterValueResult","gridFocusStateSelector","gridFocusCellSelector","focusState","gridFocusColumnHeaderSelector","gridFocusColumnHeaderFilterSelector","gridFocusColumnGroupHeaderSelector","gridTabIndexStateSelector","gridTabIndexCellSelector","gridTabIndexColumnHeaderSelector","gridTabIndexColumnHeaderFilterSelector","gridTabIndexColumnGroupHeaderSelector","gridHeaderFilteringStateSelector","headerFiltering","gridHeaderFilteringEnabledSelector","headerFilteringState","gridHeaderFilteringEditFieldSelector","gridHeaderFilteringMenuSelector","gridPaginationModelSelector","gridPaginationRowCountSelector","gridPaginationMetaSelector","gridPageSelector","gridPageSizeSelector","gridPageCountSelector","gridPaginationRowRangeSelector","visibleSortedTopLevelRowEntries","topLevelFirstRowIndex","topLevelLastRowIndex","topLevelFirstRow","topLevelRowsInCurrentPageCount","topLevelRowAdded","gridPaginatedVisibleSortedGridRowEntriesSelector","paginationRange","gridPaginatedVisibleSortedGridRowIdsSelector","defaultPageSize","getPageCount","getDefaultGridPaginationModel","getValidPage","throwIfPageSizeExceedsTheLimit","signatureProp","gridPreferencePanelStateSelector","GridPreferencePanelsValue","gridRowSelectionStateSelector","selectedGridRowsCountSelector","selectedGridRowsSelector","selectedIdsLookupSelector","isMultipleRowSelectionEnabled","gridRowSpanningStateSelector","gridRowSpanningHiddenCellsSelector","gridRowSpanningSpannedCellsSelector","gridRowSpanningHiddenCellsOriginMapSelector","gridRowsStateSelector","gridRowCountSelector","gridRowsLoadingSelector","gridTopLevelRowCountSelector","gridRowsLookupSelector","gridRowsDataRowIdToIdLookupSelector","gridRowTreeSelector","gridRowGroupsToFetchSelector","groupsToFetch","gridRowGroupingNameSelector","gridRowTreeDepthsSelector","gridRowMaximumTreeDepthSelector","nodeCount","gridDataRowIdsSelector","gridAdditionalRowGroupsSelector","additionalRowGroups","gridPinnedRowsSelector","rawPinnedRows","rowEntry","gridPinnedRowsCountSelector","GRID_ROOT_GROUP_ID","GRID_ID_AUTOGENERATED","buildRootGroup","groupingField","isAutoGenerated","childrenFromPath","checkGridRowIdIsValid","detailErrorMessage","getRowIdFromRowModel","createRowsInternalCache","getTopLevelRowCount","getRowsStateFromCache","unProcessedTree","unProcessedTreeDepths","unProcessedDataRowIds","groupingParamsWithHydrateRows","modify","idToActionLookup","isAutogeneratedRow","isAutogeneratedRowNode","getTreeNodeDescendants","parentId","validDescendants","childDescendants","updateCacheWithNewRows","uniqueUpdates","partialUpdates","alreadyAppliedActionsToRemove","partialRow","actionAlreadyAppliedToRow","_action","oldRow","actionTypeWithActionsToRemove","actionType","idsToRemove","calculatePinnedRowsHeight","getMinimalContentHeight","computeRowsUpdates","pinnedRowsCache","prevModel","idLookup","MissingRowIdError","rawValue","cellFocus","cellTabIndex","getRowElement","paramsApi","gridSortingStateSelector","gridSortedRowIdsSelector","sortingState","gridSortedRowEntriesSelector","sortedIds","gridSortModelSelector","gridSortColumnLookupSelector","sanitizeSortModel","mergeStateWithSortModel","buildAggregatedSortingApplier","comparatorList","comparator","getSortComparator","getSortCellParams","parseSortItem","rowList","compareRows","row1","row2","sortCellParams1","sortCellParams2","getNextGridSortDirection","currentIdx","gridNillComparator","v1","v2","gridStringOrNumberComparator","nillResult","gridNumberComparator","gridDateComparator","gridVirtualizationSelector","gridVirtualizationEnabledSelector","gridVirtualizationColumnEnabledSelector","gridVirtualizationRowEnabledSelector","enabledForRows","gridRenderContextSelector","gridRenderContextColumnsSelector","isFirefox","ScrollDirection","EMPTY_SCROLL_POSITION","EMPTY_DETAIL_PANELS","outerSize","hasBottomPinnedRows","panels","setPanels","selectedRowsLookup","gridRootRef","mainRef","scrollerRef","scrollbarVerticalRef","scrollbarHorizontalRef","contentHeight","hasColSpan","fnRef","observer","useResizeObserver","previousContextScrollPosition","previousRowContext","scrollTimeout","frozenContext","scrollCache","verticalBuffer","buffer","bufferForDirection","MINIMUM_COLUMN_WIDTH","createScrollCache","nextRenderContext","context1","context2","didRowsIntervalChange","triggerUpdateRenderContext","newScroll","dx","dy","isScrolling","DOWN","UP","directionForDelta","rowScroll","columnScroll","didCrossThreshold","didChangeDirection","computeRenderContext","inputsSelector","forceUpdateRenderContext","handleScroll","handleWheel","needsHorizontalScrollbar","scrollerStyle","useRunOnce","initialRenderContext","baseRenderContext","isLastSection","isPinnedSection","rowIndexOffset","rowModels","rowIndexes","virtualRowIndex","rowProps","rowIndexInPage","isLastVisibleInSection","tabbableCell","currentRenderContext","computeOffsetLeft","getInfiniteLoadingTriggerElement","lastRowId","onScroll","onWheel","onTouchMove","hiddenCellsOriginMap","at","lastColumn","viewportInnerWidth","viewportInnerHeight","lastRowHeight","lastColumnWidth","inputs","realLeft","getNearestIndexToRender","atStart","rowSpanHiddenCellOrigin","minSpannedRowIndex","getIndexesToRender","firstIndex","lastIndex","minFirstIndex","maxLastIndex","bufferBefore","rowBefore","bufferAfter","rowAfter","lastSize","binarySearch","actualRenderContext","initialFirstColumnToRender","columnBefore","columnAfter","deriveRenderContext","lastMeasuredIndexRelativeToAllRows","allRowsMeasured","lastMeasuredIndexRelativeToCurrentPage","interval","exponentialSearch","sliceStart","sliceEnd","pivot","isBefore","firstPosition","firstIndexPadded","lastIndexPadded","pinnedLeftLength","horizontalBuffer","EMPTY_RENDER_CONTEXT","virtualizationStateInitializer","setVirtualization","unstable_setVirtualization","TimerBasedCleanupTracking","timeouts","cleanupTimeout","object","unsubscribe","unregisterToken","cleanupToken","unregister","reset","FinalizationRegistryBasedCleanupTracking","registry","FinalizationRegistry","GridSignature","ObjectToBeRetainedByReact","createUseGridApiEventHandler","registryContainer","cleanupTokensCounter","objectRetainedByReact","subscription","handlerRef","cleanupTokenRef","enhancedHandler","unstable_resetCleanupTracking","optionsSubscriberOptions","useGridApiOptionHandler","apiMethods","newLogger","added","setAdded","targetElement","wrapHandler","GridPrivateApiContext","applySelector","acceptsApiRef","isOutputSelector","defaultCompare","is","objectShallowCompare","createRefs","equals","didInit","getVisibleRows","condition","didRun","GridArrowUpwardIcon","d","GridArrowDownwardIcon","GridKeyboardArrowRight","GridExpandMoreIcon","GridFilterListIcon","GridFilterAltIcon","GridSearchIcon","GridMenuIcon","GridCheckCircleIcon","GridColumnIcon","GridSeparatorIcon","GridViewHeadlineIcon","GridTableRowsIcon","GridViewStreamIcon","GridTripleDotsVerticalIcon","GridCloseIcon","GridAddIcon","GridRemoveIcon","GridLoadIcon","GridDragIcon","GridSaveAltIcon","GridCheckIcon","GridMoreVertIcon","GridVisibilityOffIcon","GridViewColumnIcon","GridClearIcon","GridDeleteIcon","GridDeleteForeverIcon","isLeaf","GridEditModes","GridCellModes","GridRowModes","GridLogicOperator","GridCellEditStartReasons","GridCellEditStopReasons","GridRowEditStartReasons","GridRowEditStopReasons","code","arguments","encodeURIComponent","charAt","toUpperCase","getUtilityClass","output","utilityClass","debounced","defaultGenerator","generate","configure","generator","createClassNameGenerator","globalStateClasses","active","completed","expanded","focused","focusVisible","required","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","setRef","maybeReactUseId","idOverride","reactId","defaultId","setDefaultId","useGlobalId","UNINITIALIZED","init","initArg","EMPTY","Timeout","currentId","disposeEffect","delay","shouldCellShowRightBorder","showCellVerticalBorderRootProp","isSectionLastCell","shouldCellShowLeftBorder","reselectCreateSelector","memoize","memoizeOptions","maxSize","equalityCheck","WeakMap","checkIsAPIRef","DEFAULT_INSTANCE_ID","stateOrApiRef","instanceIdParam","isAPIRef","va","vb","vc","vd","ve","createSelectorMemoized","cacheKey","cacheArgsInit","cacheArgs","cacheFn","isOverflown","scrollHeight","findParentElementFromClassName","elem","escapeOperandAttributeSelector","operand","getGridColumnHeaderElement","getGridRowElementSelector","getGridRowElement","getGridCellElement","isEventTargetInPortal","nodeType","getFieldFromHeaderElem","colCellEl","findHeaderElementFromField","getFieldsFromGroupHeaderElem","findGroupHeaderElementsFromField","findGridCellElementsFromCol","ariaColIndex","queryRows","rowElement","findGridElement","klass","findPinnedCells","filterFn","parseCellColIndex","findLeftPinnedCellsAfterCol","findRightPinnedCellsBeforeCol","findPinnedHeaders","elements","findLeftPinnedHeadersAfterCol","findRightPinnedHeadersBeforeCol","findGridHeader","findGridCells","isPrintableKey","isNavigationKey","isHideMenuKey","isPasteShortcut","isNumber","isFunction","isObject","localStorageAvailable","setItem","removeItem","err","escapeRegExp","clamp","isDeepEqual","entriesA","entryA","ArrayBuffer","isView","source","flags","valueOf","hasOwnProperty","createRandomNumberGenerator","seed","imul","deepClone","obj","structuredClone","parse","fastObjectShallowCompare","aLength","bLength","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","module","exports","shim","propName","location","propFullName","secret","getShim","ReactPropTypes","bigint","bool","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","NOT_FOUND","ensureIsArray","getPrototypeOf","referenceEqualityCheck","lruMemoize","equalityCheckOrOptions","providedOptions","resultEqualityCheck","prev","next","createCacheKeyComparator","resultsCount","put","getEntries","createSingletonCache","cacheIndex","pop","createLruCache","memoized","matchingEntry","clearCache","resetResultsCount","Ref","WeakRef","deref","weakMapMemoize","fnNode","s","lastResult","cacheNode","arg","objectCache","objectNode","primitiveCache","primitiveNode","terminatedNode","lastResultValue","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","createSelectorArgs","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","errorMessage","assertIsFunction","combinedOptions","argsMemoize","argsMemoizeOptions","devModeChecks","finalMemoizeOptions","finalArgsMemoizeOptions","dependencies","itemTypes","assertIsArrayOfFunctions","getDependencies","memoizedResultFunc","inputSelectorResults","inputSelectorArgs","collectInputSelectorResults","assign","resetDependencyRecomputations","resetRecomputations","withTypes","createStructuredSelector","inputSelectorsObject","selectorCreator","assertIsObject","inputSelectorKeys","composition"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5677.28a25579.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5677],{90439:(e,t,a)=>{a.r(t),a.d(t,{default:()=>l});var r=a(7552),s=a(943),u=a(68446),i=a(68984);const l=(0,u.observer)((function({model:e}){const{feature1:t,feature2:a}=JSON.parse(JSON.stringify(e.featureData));return r.createElement(s.A,{"data-testid":"alignment-side-drawer"},r.createElement(i.BaseCoreDetails,{title:"Feature 1",feature:t}),r.createElement(i.BaseCoreDetails,{title:"Feature 2",feature:a}),r.createElement(i.BaseAttributes,{title:"Feature 1 attributes",feature:t}),r.createElement(i.BaseAttributes,{title:"Feature 2 attributes",feature:a}))}))}}]);
+//# sourceMappingURL=5677.28a25579.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5677.28a25579.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5677.28a25579.chunk.js","mappings":"oMAQA,MAgBA,GAhB0CA,EAAAA,EAAAA,WAAS,UAAU,MAC3DC,IAIA,MAAM,SAAEC,EAAQ,SAAEC,GAAaC,KAAKC,MAAMD,KAAKE,UAAUL,EAAMM,cAC/D,OACEC,EAAAA,cAACC,EAAAA,EAAK,CAAC,cAAY,yBACjBD,EAAAA,cAACE,EAAAA,gBAAe,CAACC,MAAM,YAAYC,QAASV,IAC5CM,EAAAA,cAACE,EAAAA,gBAAe,CAACC,MAAM,YAAYC,QAAST,IAC5CK,EAAAA,cAACK,EAAAA,eAAc,CAACF,MAAM,uBAAuBC,QAASV,IACtDM,EAAAA,cAACK,EAAAA,eAAc,CAACF,MAAM,uBAAuBC,QAAST,IAG5D,G","sources":["../../../plugins/breakpoint-split-view/src/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.tsx"],"sourcesContent":["import React from 'react'\nimport { Paper } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport {\n  BaseCoreDetails,\n  BaseAttributes,\n} from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\n\nconst BreakpointAlignmentsFeatureDetail = observer(function ({\n  model,\n}: {\n  model: { featureData: Record<string, unknown> }\n}) {\n  const { feature1, feature2 } = JSON.parse(JSON.stringify(model.featureData))\n  return (\n    <Paper data-testid=\"alignment-side-drawer\">\n      <BaseCoreDetails title=\"Feature 1\" feature={feature1} />\n      <BaseCoreDetails title=\"Feature 2\" feature={feature2} />\n      <BaseAttributes title=\"Feature 1 attributes\" feature={feature1} />\n      <BaseAttributes title=\"Feature 2 attributes\" feature={feature2} />\n    </Paper>\n  )\n})\n\nexport default BreakpointAlignmentsFeatureDetail\n"],"names":["observer","model","feature1","feature2","JSON","parse","stringify","featureData","React","Paper","BaseCoreDetails","title","feature","BaseAttributes"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5682.ea285a50.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5682],{33301:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});var a=t(7552),i=t(49823),o=t(99546),r=t(29499),l=t(33371),s=t(32808),c=t(1343),d=t(58507),g=t(5401),m=t(82727);const{parseCigar:y}=m.aF;function h(e){return Math.floor(e)}function u(e,n){let t=0,a=0;for(let i=0;i<e.length;i++){const o=+e[i],r=e[i+1],l=Math.min(o,n-t);if(t>=n)break;"I"===r?a+=o:"D"===r?t+=l:"M"!==r&&"="!==r&&"X"!==r||(a+=l,t+=l)}return[t,a]}const w=(0,t(75785).n9)()({padding:{margin:10,border:"1px solid #ccc"}});function f({model:e,feature:n,handleClose:t}){const{classes:m}=w(),f=-1===n.get("strand"),[p,b]=(0,a.useState)(f),[k,v]=(0,a.useState)("1000");return a.createElement(i.Dialog,{open:!0,title:"Launch synteny view",onClose:t},a.createElement(r.A,null,f?a.createElement(l.A,{className:m.padding,control:a.createElement(s.A,{checked:p,onChange:e=>{b(e.target.checked)}}),label:"Note: The feature is inverted in orientation on the target sequence. This will result in the lower panel having genomic coordinates decreasing left to right. Horizontally flip?"}):null,a.createElement(c.A,{label:"Add window size in bp",value:k,onChange:e=>{v(e.target.value)}})),a.createElement(d.A,null,a.createElement(g.A,{variant:"contained",onClick:()=>{(async()=>{try{await async function({feature:e,windowSize:n,model:t,horizontallyFlip:a}){const i=(0,o.getSession)(t),r=(0,o.getContainingTrack)(t),l=(0,o.getContainingView)(t).dynamicBlocks.contentBlocks[0];if(!l)throw new Error("no visible region");const s=e.get("CIGAR"),c=e.get("strand"),d=l.start,g=l.end,m=e.get("start"),w=e.get("end"),f=e.get("mate"),p=f.start,b=f.end,k=f.assemblyName,v=f.refName,S=l.assemblyName,C=l.refName;let $,E,A,L;if(s){const e=y(s),[n,t]=u(e,d-m),[a,i]=u(e,g-m),o=-1===c?-1:1;A=m+n,L=m+a,$=(-1===c?b:p)+t*o,E=(-1===c?b:p)+i*o}else A=m,L=w,$=p,E=b;const T=r.configuration.trackId,M=i.addView("LinearSyntenyView",{type:"LinearSyntenyView",views:[{id:`${Math.random()}`,type:"LinearGenomeView",hideHeader:!0},{id:`${Math.random()}`,type:"LinearGenomeView",hideHeader:!0}],tracks:[{configuration:T,type:"SyntenyTrack",displays:[{type:"LinearSyntenyDisplay",configuration:`${T}-LinearSyntenyDisplay`}]}]}),z=`${C}:${h(A-n)}-${h(L+n)}`,N=Math.min($,E),V=Math.max($,E),D=`${v}:${h(N-n)}-${h(V+n)}${a?"[rev]":""}`;await Promise.all([M.views[0].navToLocString(z,S),M.views[1].navToLocString(D,k)])}({feature:n,windowSize:+k,horizontallyFlip:p,model:e})}catch(n){console.error(n),(0,o.getSession)(e).notifyError(`${n}`,n)}})(),t()}},"Submit"),a.createElement(g.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))}}}]);
+//# sourceMappingURL=5682.ea285a50.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5682.ea285a50.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5682.ea285a50.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LGVSyntenyDisplay/components/util.ts","../../../plugins/linear-comparative-view/src/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.tsx"],"sourcesContent":["import {\n  getSession,\n  getContainingTrack,\n  getContainingView,\n  Feature,\n} from '@jbrowse/core/util'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { LinearSyntenyViewModel } from '../../LinearSyntenyView/model'\n\ntype LSV = LinearSyntenyViewModel\n\nconst { parseCigar } = MismatchParser\n\nfunction f(n: number) {\n  return Math.floor(n)\n}\nfunction findPosInCigar(cigar: string[], startX: number) {\n  let featX = 0\n  let mateX = 0\n  for (let i = 0; i < cigar.length; i++) {\n    const len = +cigar[i]!\n    const op = cigar[i + 1]!\n    const min = Math.min(len, startX - featX)\n\n    if (featX >= startX) {\n      break\n    }\n    if (op === 'I') {\n      mateX += len\n    } else if (op === 'D') {\n      featX += min\n    } else if (op === 'M' || op === '=' || op === 'X') {\n      mateX += min\n      featX += min\n    }\n  }\n  return [featX, mateX] as const\n}\n\nexport async function navToSynteny({\n  feature,\n  windowSize: ws,\n  model,\n  horizontallyFlip,\n}: {\n  windowSize: number\n  horizontallyFlip: boolean\n  feature: Feature\n  model: IAnyStateTreeNode\n}) {\n  const session = getSession(model)\n  const track = getContainingTrack(model)\n  const view = getContainingView(model) as LinearGenomeViewModel\n  const reg = view.dynamicBlocks.contentBlocks[0]\n  if (!reg) {\n    throw new Error('no visible region')\n  }\n  const cigar = feature.get('CIGAR')\n  const strand = feature.get('strand')\n  const regStart = reg.start\n  const regEnd = reg.end\n  const featStart = feature.get('start')\n  const featEnd = feature.get('end')\n  const mate = feature.get('mate')\n  const mateStart = mate.start\n  const mateEnd = mate.end\n  const mateAsm = mate.assemblyName\n  const mateRef = mate.refName\n  const featAsm = reg.assemblyName\n  const featRef = reg.refName\n\n  let rMateStart: number\n  let rMateEnd: number\n  let rFeatStart: number\n  let rFeatEnd: number\n\n  if (cigar) {\n    const p = parseCigar(cigar)\n    const [fStartX, mStartX] = findPosInCigar(p, regStart - featStart)\n    const [fEndX, mEndX] = findPosInCigar(p, regEnd - featStart)\n\n    // avoid multiply by 0 with strand undefined\n    const flipper = strand === -1 ? -1 : 1\n    rFeatStart = featStart + fStartX\n    rFeatEnd = featStart + fEndX\n    rMateStart = (strand === -1 ? mateEnd : mateStart) + mStartX * flipper\n    rMateEnd = (strand === -1 ? mateEnd : mateStart) + mEndX * flipper\n  } else {\n    rFeatStart = featStart\n    rFeatEnd = featEnd\n    rMateStart = mateStart\n    rMateEnd = mateEnd\n  }\n  const trackId = track.configuration.trackId\n\n  const view2 = session.addView('LinearSyntenyView', {\n    type: 'LinearSyntenyView',\n    views: [\n      {\n        id: `${Math.random()}`,\n        type: 'LinearGenomeView',\n        hideHeader: true,\n      },\n      {\n        id: `${Math.random()}`,\n        type: 'LinearGenomeView',\n        hideHeader: true,\n      },\n    ],\n    tracks: [\n      {\n        configuration: trackId,\n        type: 'SyntenyTrack',\n        displays: [\n          {\n            type: 'LinearSyntenyDisplay',\n            configuration: `${trackId}-LinearSyntenyDisplay`,\n          },\n        ],\n      },\n    ],\n  }) as LSV\n  const l1 = `${featRef}:${f(rFeatStart - ws)}-${f(rFeatEnd + ws)}`\n  const m1 = Math.min(rMateStart, rMateEnd)\n  const m2 = Math.max(rMateStart, rMateEnd)\n  const l2 = `${mateRef}:${f(m1 - ws)}-${f(m2 + ws)}${\n    horizontallyFlip ? '[rev]' : ''\n  }`\n  await Promise.all([\n    view2.views[0]!.navToLocString(l1, featAsm),\n    view2.views[1]!.navToLocString(l2, mateAsm),\n  ])\n}\n","import React, { useState } from 'react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { Feature, getSession } from '@jbrowse/core/util'\nimport {\n  Button,\n  Checkbox,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  TextField,\n} from '@mui/material'\nimport { navToSynteny } from './util'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  padding: {\n    margin: 10,\n    border: '1px solid #ccc',\n  },\n})\n\nexport default function LaunchSyntenyViewDialog({\n  model,\n  feature,\n  handleClose,\n}: {\n  model: unknown\n  feature: Feature\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const inverted = feature.get('strand') === -1\n  const [horizontallyFlip, setHorizontallyFlip] = useState(inverted)\n  const [windowSize, setWindowSize] = useState('1000')\n  return (\n    <Dialog open title=\"Launch synteny view\" onClose={handleClose}>\n      <DialogContent>\n        {inverted ? (\n          <FormControlLabel\n            className={classes.padding}\n            control={\n              <Checkbox\n                checked={horizontallyFlip}\n                onChange={event => {\n                  setHorizontallyFlip(event.target.checked)\n                }}\n              />\n            }\n            label=\"Note: The feature is inverted in orientation on the target\n            sequence. This will result in the lower panel having genomic\n            coordinates decreasing left to right. Horizontally flip?\"\n          />\n        ) : null}\n        <TextField\n          label=\"Add window size in bp\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                await navToSynteny({\n                  feature,\n                  windowSize: +windowSize,\n                  horizontallyFlip,\n                  model,\n                })\n              } catch (e) {\n                console.error(e)\n                getSession(model).notifyError(`${e}`, e)\n              }\n            })()\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["parseCigar","MismatchParser","f","n","Math","floor","findPosInCigar","cigar","startX","featX","mateX","i","length","len","op","min","useStyles","makeStyles","padding","margin","border","LaunchSyntenyViewDialog","model","feature","handleClose","classes","inverted","get","horizontallyFlip","setHorizontallyFlip","useState","windowSize","setWindowSize","React","Dialog","open","title","onClose","DialogContent","FormControlLabel","className","control","Checkbox","checked","onChange","event","target","label","TextField","value","DialogActions","Button","variant","onClick","async","ws","session","getSession","track","getContainingTrack","reg","getContainingView","dynamicBlocks","contentBlocks","Error","strand","regStart","start","regEnd","end","featStart","featEnd","mate","mateStart","mateEnd","mateAsm","assemblyName","mateRef","refName","featAsm","featRef","rMateStart","rMateEnd","rFeatStart","rFeatEnd","p","fStartX","mStartX","fEndX","mEndX","flipper","trackId","configuration","view2","addView","type","views","id","random","hideHeader","tracks","displays","l1","m1","m2","max","l2","Promise","all","navToLocString","navToSynteny","e","console","error","notifyError","color"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5727.f7a524b6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5727],{95727:(e,t,r)=>{r.d(t,{A:()=>C});var n=r(7552),o=r(68446),a=r(36422),s=r(48231),i=r(99546),l=r(9502);function c(e,t){const r=e.get("tags");return r?r[t]:e.get(t)}function u(e,t){const r=e.get("ALT");if(r)return new Map(r.map((e=>(0,l.h)(e))).filter(i.notEmpty).map((e=>[e.MatePosition,e]))).get(`${t.get("refName")}:${t.get("start")+1}`)}var d=r(49473),g=r(72639);const f={F1R2:"LR",F2R1:"LR",F1F2:"LL",F2F1:"LL",R1R2:"RR",R2R1:"RR",R1F2:"RL",R2F1:"RL"},p={LR:"color_pair_lr",LL:"color_pair_ll",RR:"color_pair_rr",RL:"color_pair_rl"},h={color_fwd_strand_not_proper:(0,g.X4)("#CA6767",.8),color_rev_strand_not_proper:(0,g.X4)("#7272AA",.8),color_fwd_strand:(0,g.X4)("#DC2A2A",.8),color_rev_strand:(0,g.X4)("#4141BA",.8),color_fwd_missing_mate:(0,g.X4)("#921111",.8),color_rev_missing_mate:(0,g.X4)("#111192",.8),color_fwd_diff_chr:(0,g.X4)("#000000",.8),color_rev_diff_chr:(0,g.X4)("#696969",.8),color_pair_lr:(0,g.X4)("#8C8C8C",.8),color_pair_rr:(0,g.X4)("#00005A",.8),color_pair_rl:(0,g.X4)("#005A5A",.8),color_pair_ll:(0,g.X4)("#005A00",.8),color_nostrand:(0,g.X4)("#8C8C8C",.8),color_interchrom:(0,g.X4)("#5A005A",.8),color_longinsert:(0,g.X4)("#B30000",.8),color_shortinsert:(0,g.X4)("#FF3A5C",.8),color_unknown:(0,g.X4)("#555",.8)},m=h.color_unknown;function v(e,t){return-1===e&&1===t?h.color_pair_rr:1===e&&-1===t?h.color_pair_ll:h.color_unknown}function _(e,t){return-1===e&&1===t||1===e&&-1===t}function k(){return k=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},k.apply(null,arguments)}const[w,,R]=[0,1,2,3],T=(0,o.observer)((function({model:e,trackId:t,parentRef:r,getTrackYPosOverride:o}){const{views:l,showIntraviewLinks:u}=e,g=(0,s.A)(),T=(0,i.getSession)(e),y=(0,a.getSnapshot)(e),{assemblyManager:M}=T,N=l[0],S=N?M.get(N.assemblyNames[0]):void 0;(0,d.E6)(y);const E=e.getTrackFeatures(t),b=(0,n.useMemo)((()=>function(e){for(const t of e.values())if(1&t.get("flags"))return!0;return!1}(E)),[E]),L=(0,n.useMemo)((()=>{const r=e.getMatchedFeaturesInLayout(t,b?function(e){const t=new Map,r=new Set;for(const n of e.values()){const e=n.get("flags"),o=n.id(),a=4&e,s=2&e;if(!r.has(o)&&!s&&!a){const e=n.get("name");let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}r.add(n.id())}return[...t.values()].filter((e=>e.length>1))}(E):function(e){const t=new Map,r=new Set;for(const n of e.values()){const e=n.id(),o=4&n.get("flags"),a=!!c(n,"SA");if(!r.has(e)&&!o&&a){const e=n.get("name");let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}r.add(n.id())}return[...t.values()].filter((e=>e.length>1))}(E));return b||r.forEach((e=>{e.sort(((e,t)=>e.feature.get("clipPos")-t.feature.get("clipPos")))})),r}),[E,t,b,e]),[C,O]=(0,n.useState)();let F=0;if(r.current){const e=r.current.getBoundingClientRect();F=e.top}return S?n.createElement("g",{fill:"none","data-testid":L.length?`${t}-loaded`:t},L.map((e=>{const r=[];for(let a=0;a<e.length-1;a++){const{layout:s,feature:c,level:y}=e[a],{layout:M,feature:N,level:L}=e[a+1];if(!s||!M)return console.warn("received null layout for a overlay feature"),null;if(!u&&y===L)return null;const A=S.getCanonicalRefName(c.get("refName")),W=S.getCanonicalRefName(N.get("refName"));if(!A||!W)throw new Error(`unable to find ref for ${A||W}`);const X={pair_orientation:c.get("pair_orientation")},B=c.get("strand"),$=N.get("strand");let J="",I=!1;A===W&&(b?(J=function(e){const t=f[e.pair_orientation||""];return"LR"===t?void 0:h[p[t]]}(X)||m,I="LR"!==f[X.pair_orientation||""]):(J=v(B,$),I=_(B,$)));const P=s[-1===B?w:R],j=-1===$,D=b?M[j?w:R]:M[j?R:w],x=(0,d.Tp)(l[y],A,P),V=(0,d.Tp)(l[L],W,D),Y=l[y].pxToBp(x).reversed?-1:1,H=l[L].pxToBp(V).reversed?-1:1,q=l.map((e=>e.getTrack(t))),z=(0,d.Ec)(t,y,l,q,s,o)-F,G=(0,d.Ec)(t,L,l,q,M,o)-F,K=y===L&&I,Q=K?q[y].displays[0].height:0,U=b?-1:1,Z=(0,d.eW)(l,t,y,o),ee=["M",x,z,"C",x+200*c.get("strand")*Y,K?Math.min(Z-F+Q,z+Q):z,V-200*N.get("strand")*H*U,K?Math.min(Z-F+Q,G+Q):G,V,G].join(" "),te=`${c.id()}-${N.id()}`;r.push(n.createElement("path",k({d:ee,key:te,"data-testid":"r1",strokeWidth:C===te?5:1},(0,i.getStrokeProps)(J||g.palette.text.disabled),{onClick:()=>{const e=T.addWidget?.("BreakpointAlignmentsWidget","breakpointAlignments",{featureData:{feature1:(E.get(c.id())||{toJSON:()=>{}}).toJSON(),feature2:(E.get(N.id())||{toJSON:()=>{}}).toJSON()}});T.showWidget?.(e)},onMouseOver:()=>{O(te)},onMouseOut:()=>{O(void 0)}})))}return r}))):null})),[y]=[0,1,2,3],M=(0,o.observer)((function({model:e,trackId:t,parentRef:r,getTrackYPosOverride:o}){const{views:s}=e,c=(0,i.getSession)(e),{assemblyManager:g}=c,f=e.getTrackFeatures(t),p=(0,n.useMemo)((()=>e.getMatchedFeaturesInLayout(t,function(e){const t=new Map,r=new Set;for(const n of e.values()){if(!r.has(n.id())&&"breakend"===n.get("type")){const e=n.get("ALT");e?.forEach((e=>{const r=`${n.get("refName")}:${n.get("start")+1}`,o=(0,l.h)(e);if(o){const e=t.get(r);e?e.push(n):t.set(o.MatePosition||"none",[n])}}))}r.add(n.id())}return[...t.values()].filter((e=>e.length>1))}(f))),[f,t,e]),[h,m]=(0,n.useState)(),v=(0,a.getSnapshot)(e);(0,d.E6)(v);const _=g.get(s[0].assemblyNames[0]);if(!_)return null;let k=0;if(r.current){const e=r.current.getBoundingClientRect();k=e.top}return n.createElement("g",{stroke:"green",strokeWidth:5,fill:"none","data-testid":p.length?`${t}-loaded`:t},p.map((e=>{const r=[];for(let a=0;a<e.length-1;a+=1){const{layout:i,feature:l,level:g}=e[a],{layout:p,feature:v,level:w}=e[a+1],R=l.id(),T=u(l,v);if(!i||!p)return null;const M=l.get("refName"),N=v.get("refName"),S=_.getCanonicalRefName(M),E=_.getCanonicalRefName(N);if(!S||!E)throw new Error(`unable to find ref for ${S||E}`);const b=(0,d.Tp)(s[g],S,i[y]),L=(0,d.Tp)(s[w],E,p[y]),C=s[g].pxToBp(b).reversed,O=s[w].pxToBp(L).reversed,F=s.map((e=>e.getTrack(t))),A=(0,d.Ec)(t,g,s,F,i,o)-k,W=(0,d.Ec)(t,w,s,F,p,o)-k;if(T){const e=["M",b-20*("left"===T.Join?-1:1)*(C?-1:1),A,"L",b,A,"L",L,W,"L",L-20*("left"===T.MateDirection?1:-1)*(O?-1:1),W].join(" ");r.push(n.createElement("path",{d:e,"data-testid":"r2",key:JSON.stringify(e),strokeWidth:R===h?10:5,onClick:()=>{const e=c.addWidget?.("VariantFeatureWidget","variantFeature",{featureData:f.get(R)?.toJSON()});c.showWidget?.(e)},onMouseOver:()=>{m(R)},onMouseOut:()=>{m(void 0)}}))}else console.warn("the relevant ALT allele was not found, cannot render")}return r})))})),[N]=[0,1,2,3];function S(e){return"+"===e?1:"-"===e?-1:0}const E=(0,o.observer)((function({model:e,trackId:t,parentRef:r,getTrackYPosOverride:o}){const{views:s}=e,l=(0,i.getSession)(e),{assemblyManager:c}=l,u=e.getTrackFeatures(t),g=(0,n.useMemo)((()=>e.getMatchedFeaturesInLayout(t,function(e){const t=[],r=new Set;for(const n of e.values())r.has(n.id())||"<TRA>"!==n.get("ALT")[0]||t.push([n]),r.add(n.id());return t}(u))),[u,t,e]),[f,p]=(0,n.useState)(),h=(0,a.getSnapshot)(e);if((0,d.E6)(h),!c.get(s[0].assemblyNames[0]))return null;let m=0;if(r.current){const e=r.current.getBoundingClientRect();m=e.top}return s.length<2?null:n.createElement("g",{fill:"none",stroke:"green",strokeWidth:5,"data-testid":g.length?`${t}-loaded`:t},g.map((e=>{const r=[];for(const{layout:a,feature:i,level:c}of e){const e=0===c?1:0,g=i.id();if(!a)return null;const h=i.get("INFO"),v=h.CHR2[0],_=h.END[0],k=h.STRANDS?.[0]?.split(""),[w,R]=k??[".","."],T=(0,d.Tp)(s[e],v,_);if(T){const h=[T,0,T+1,0],v=(0,d.Tp)(s[c],i.get("refName"),a[N]),_=T,k=s[c].pxToBp(v).reversed,y=s[e].pxToBp(_).reversed,M=s.map((e=>e.getTrack(t))),E=(0,d.Ec)(t,c,s,M,a,o)-m,b=(0,d.Ec)(t,e,s,M,h,o)-m,L=["M",v-20*S(w)*(k?-1:1),E,"L",v,E,"L",_,b,"L",_-20*S(R)*(y?-1:1),b].join(" ");r.push(n.createElement("path",{d:L,key:JSON.stringify(L),strokeWidth:g===f?10:5,onClick:()=>{const e=l.addWidget?.("VariantFeatureWidget","variantFeature",{featureData:(u.get(g)||{toJSON:()=>{}}).toJSON()});l.showWidget?.(e)},onMouseOver:()=>{p(g)},onMouseOut:()=>{p(void 0)}}))}}return r})))})),[b]=[0,1,2,3],L=(0,o.observer)((function({model:e,trackId:t,parentRef:r,getTrackYPosOverride:o}){const{views:s}=e,l=(0,i.getSession)(e),{assemblyManager:c}=l,u=e.getTrackFeatures(t),g=(0,n.useMemo)((()=>e.getMatchedFeaturesInLayout(t,function(e){const t=new Map,r=new Set;for(const n of e.values()){if(!r.has(n.id())&&"paired_feature"===n.get("type")){const e=n.id().replace("-r1",""),r=n.id().replace("-r2","");n.id().endsWith("-r1")?(t.get(e)||t.set(e,[]),t.get(e).push(n)):n.id().endsWith("-r2")&&(t.get(r)||t.set(r,[]),t.get(r).push(n))}r.add(n.id())}return[...t.values()].filter((e=>e.length>1))}(u))),[u,t,e]),[f,p]=(0,n.useState)(),h=(0,a.getSnapshot)(e);(0,d.E6)(h);const m=c.get(s[0].assemblyNames[0]);if(!m)return null;let v=0;if(r.current){const e=r.current.getBoundingClientRect();v=e.top}return n.createElement("g",{stroke:"green",strokeWidth:5,fill:"none","data-testid":g.length?`${t}-loaded`:t},g.map((e=>{const r=[];for(let a=0;a<e.length-1;a+=1){const{layout:i,feature:c,level:g}=e[a],{layout:h,feature:_,level:k}=e[a+1],w=c.id();if(!i||!h)return null;const R=c.get("refName"),T=_.get("refName"),y=m.getCanonicalRefName(R),M=m.getCanonicalRefName(T);if(!y||!M)throw new Error(`unable to find ref for ${y||M}`);const N=(0,d.Tp)(s[g],y,i[b]),S=(0,d.Tp)(s[k],M,h[b]),E=s.map((e=>e.getTrack(t))),L=["M",N,(0,d.Ec)(t,g,s,E,i,o)-v,"L",S,(0,d.Ec)(t,k,s,E,h,o)-v].join(" ");r.push(n.createElement("path",{d:L,"data-testid":"r2",key:JSON.stringify(L),strokeWidth:w===f?10:5,onClick:()=>{const e=l.addWidget?.("VariantFeatureWidget","variantFeature",{featureData:u.get(w)?.toJSON()});l.showWidget?.(e)},onMouseOver:()=>{p(w)},onMouseOut:()=>{p(void 0)}}))}return r})))})),C=(0,o.observer)((function(e){const{model:t,trackId:r}=e,o=t.getMatchedTracks(r);return"AlignmentsTrack"===o[0]?.type?n.createElement(T,e):"VariantTrack"===o[0]?.type?t.hasTranslocations(r)?n.createElement(E,e):t.hasPairedFeatures(r)?n.createElement(L,e):n.createElement(M,e):null}))}}]);
+//# sourceMappingURL=5727.f7a524b6.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5727.f7a524b6.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5727.f7a524b6.chunk.js","mappings":"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","sources":["../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/util.ts","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/getOrientationColor.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/AlignmentConnections.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/Breakends.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/Translocations.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/PairedFeatures.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/Overlay.tsx"],"sourcesContent":["import { Feature, notEmpty } from '@jbrowse/core/util'\n\nimport { parseBreakend } from '@gmod/vcf'\n\n// this finds candidate alignment features, aimed at plotting split reads from\n// BAM/CRAM files\nexport function getBadlyPairedAlignments(features: Map<string, Feature>) {\n  const candidates = new Map<string, Feature[]>()\n  const alreadySeen = new Set<string>()\n\n  // this finds candidate features that share the same name\n  for (const feature of features.values()) {\n    const flags = feature.get('flags')\n    const id = feature.id()\n    const unmapped = flags & 4\n    const correctlyPaired = flags & 2\n\n    if (!alreadySeen.has(id) && !correctlyPaired && !unmapped) {\n      const n = feature.get('name')\n      let val = candidates.get(n)\n      if (!val) {\n        val = []\n        candidates.set(n, val)\n      }\n      val.push(feature)\n    }\n    alreadySeen.add(feature.id())\n  }\n\n  return [...candidates.values()].filter(v => v.length > 1)\n}\n\nfunction getTag(f: Feature, tag: string) {\n  const tags = f.get('tags')\n  return tags ? tags[tag] : f.get(tag)\n}\n\n// this finds candidate alignment features, aimed at plotting split reads from\n// BAM/CRAM files\nexport function getMatchedAlignmentFeatures(features: Map<string, Feature>) {\n  const candidates = new Map<string, Feature[]>()\n  const alreadySeen = new Set<string>()\n\n  // this finds candidate features that share the same name\n  for (const feature of features.values()) {\n    const id = feature.id()\n    const unmapped = feature.get('flags') & 4\n    const hasSA = !!getTag(feature, 'SA')\n    if (!alreadySeen.has(id) && !unmapped && hasSA) {\n      const n = feature.get('name')\n      let val = candidates.get(n)\n      if (!val) {\n        val = []\n        candidates.set(n, val)\n      }\n      val.push(feature)\n    }\n    alreadySeen.add(feature.id())\n  }\n\n  return [...candidates.values()].filter(v => v.length > 1)\n}\n\nexport function hasPairedReads(features: Map<string, Feature>) {\n  for (const f of features.values()) {\n    if (f.get('flags') & 1) {\n      return true\n    }\n  }\n  return false\n}\n\nexport function findMatchingAlt(feat1: Feature, feat2: Feature) {\n  const alts = feat1.get('ALT') as string[] | undefined\n  if (alts) {\n    return new Map(\n      alts\n        .map(alt => parseBreakend(alt))\n        .filter(notEmpty)\n        .map(bnd => [bnd.MatePosition, bnd]),\n    ).get(`${feat2.get('refName')}:${feat2.get('start') + 1}`)\n  }\n  return undefined\n}\n\n// Returns paired BND features across multiple views by inspecting the ALT\n// field to get exact coordinate matches\nexport function getMatchedBreakendFeatures(feats: Map<string, Feature>) {\n  const candidates = new Map<string, Feature[]>()\n  const alreadySeen = new Set<string>()\n\n  for (const f of feats.values()) {\n    if (!alreadySeen.has(f.id()) && f.get('type') === 'breakend') {\n      const alts = f.get('ALT') as string[] | undefined\n      alts?.forEach(a => {\n        const cur = `${f.get('refName')}:${f.get('start') + 1}`\n        const bnd = parseBreakend(a)\n        if (bnd) {\n          const val = candidates.get(cur)\n          if (!val) {\n            candidates.set(bnd.MatePosition || 'none', [f])\n          } else {\n            val.push(f)\n          }\n        }\n      })\n    }\n    alreadySeen.add(f.id())\n  }\n\n  return [...candidates.values()].filter(v => v.length > 1)\n}\n\n// Getting \"matched\" TRA means just return all TRA\nexport function getMatchedTranslocationFeatures(feats: Map<string, Feature>) {\n  const ret: Feature[][] = []\n  const alreadySeen = new Set<string>()\n\n  for (const f of feats.values()) {\n    if (!alreadySeen.has(f.id()) && f.get('ALT')[0] === '<TRA>') {\n      ret.push([f])\n    }\n    alreadySeen.add(f.id())\n  }\n\n  return ret\n}\n\n// Getting \"matched\" TRA means just return all TRA\nexport function getMatchedPairedFeatures(feats: Map<string, Feature>) {\n  const candidates = new Map<string, Feature[]>()\n  const alreadySeen = new Set<string>()\n\n  for (const f of feats.values()) {\n    if (!alreadySeen.has(f.id()) && f.get('type') === 'paired_feature') {\n      const r1 = f.id().replace('-r1', '')\n      const r2 = f.id().replace('-r2', '')\n      if (f.id().endsWith('-r1')) {\n        if (!candidates.get(r1)) {\n          candidates.set(r1, [])\n        }\n        candidates.get(r1)!.push(f)\n      } else if (f.id().endsWith('-r2')) {\n        if (!candidates.get(r2)) {\n          candidates.set(r2, [])\n        }\n        candidates.get(r2)!.push(f)\n      }\n    }\n    alreadySeen.add(f.id())\n  }\n\n  return [...candidates.values()].filter(v => v.length > 1)\n}\n","import { alpha } from '@mui/material'\n// orientation definitions from igv.js, see also\n// https://software.broadinstitute.org/software/igv/interpreting_pair_orientations\nexport const orientationTypes = {\n  fr: {\n    F1R2: 'LR',\n    F2R1: 'LR',\n\n    F1F2: 'LL',\n    F2F1: 'LL',\n\n    R1R2: 'RR',\n    R2R1: 'RR',\n\n    R1F2: 'RL',\n    R2F1: 'RL',\n  } as Record<string, string>,\n\n  rf: {\n    R1F2: 'LR',\n    R2F1: 'LR',\n\n    R1R2: 'LL',\n    R2R1: 'LL',\n\n    F1F2: 'RR',\n    F2F1: 'RR',\n\n    F1R2: 'RL',\n    F2R1: 'RL',\n  } as Record<string, string>,\n\n  ff: {\n    F2F1: 'LR',\n    R1R2: 'LR',\n\n    F2R1: 'LL',\n    R1F2: 'LL',\n\n    R2F1: 'RR',\n    F1R2: 'RR',\n\n    R2R1: 'RL',\n    F1F2: 'RL',\n  } as Record<string, string>,\n}\n\nexport const pairMap = {\n  LR: 'color_pair_lr',\n  LL: 'color_pair_ll',\n  RR: 'color_pair_rr',\n  RL: 'color_pair_rl',\n} as const\n\n// manually calculated by running\n// const color = require('color')\n// Object.fromEntries(Object.entries(fillColor).map(([key,val])=>{\n//   return [key, color(val).darken('0.3').hex()]\n// }))\n// this avoids (expensive) use of Color module at runtime\nexport const strokeColor = {\n  color_fwd_strand_not_proper: alpha('#CA6767', 0.8),\n  color_rev_strand_not_proper: alpha('#7272AA', 0.8),\n  color_fwd_strand: alpha('#DC2A2A', 0.8),\n  color_rev_strand: alpha('#4141BA', 0.8),\n  color_fwd_missing_mate: alpha('#921111', 0.8),\n  color_rev_missing_mate: alpha('#111192', 0.8),\n  color_fwd_diff_chr: alpha('#000000', 0.8),\n  color_rev_diff_chr: alpha('#696969', 0.8),\n  color_pair_lr: alpha('#8C8C8C', 0.8),\n  color_pair_rr: alpha('#00005A', 0.8),\n  color_pair_rl: alpha('#005A5A', 0.8),\n  color_pair_ll: alpha('#005A00', 0.8),\n  color_nostrand: alpha('#8C8C8C', 0.8),\n  color_interchrom: alpha('#5A005A', 0.8),\n  color_longinsert: alpha('#B30000', 0.8),\n  color_shortinsert: alpha('#FF3A5C', 0.8),\n  color_unknown: alpha('#555', 0.8),\n}\n\nconst defaultColor = strokeColor.color_unknown\n\nexport function getPairedOrientationColorOrDefault(f: {\n  pair_orientation?: string\n}) {\n  const type = orientationTypes.fr\n  const r = type[f.pair_orientation || ''] as keyof typeof pairMap\n  const type2 = pairMap[r] as keyof typeof strokeColor\n  return r === 'LR' ? undefined : strokeColor[type2]\n}\n\nexport function getLongReadOrientationColorOrDefault(s1: number, s2: number) {\n  if (s1 === -1 && s2 === 1) {\n    return strokeColor.color_pair_rr\n  } else if (s1 === 1 && s2 === -1) {\n    return strokeColor.color_pair_ll\n  } else {\n    return strokeColor.color_unknown\n  }\n}\n\nexport function getLongReadOrientationAbnormal(s1: number, s2: number) {\n  if (s1 === -1 && s2 === 1) {\n    return true\n  } else if (s1 === 1 && s2 === -1) {\n    return true\n  } else {\n    return false\n  }\n}\n\nexport function isAbnormalOrientation(f: { pair_orientation?: string }) {\n  const type = orientationTypes.fr\n  const r = type[f.pair_orientation || ''] as keyof typeof pairMap\n  return r !== 'LR'\n}\n\nexport function getPairedOrientationColor(f: { pair_orientation?: string }) {\n  return getPairedOrientationColorOrDefault(f) || defaultColor\n}\n","import React, { useMemo, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { useTheme } from '@mui/material'\nimport { getSession, getStrokeProps } from '@jbrowse/core/util'\n\n// locals\nimport {\n  getBadlyPairedAlignments,\n  getMatchedAlignmentFeatures,\n  hasPairedReads,\n} from './util'\nimport {\n  yPos,\n  useNextFrame,\n  getPxFromCoordinate,\n  heightFromSpecificLevel,\n} from '../util'\nimport { BreakpointViewModel } from '../model'\nimport {\n  getLongReadOrientationAbnormal,\n  getLongReadOrientationColorOrDefault,\n  getPairedOrientationColor,\n  isAbnormalOrientation,\n} from './getOrientationColor'\n\nconst [LEFT, , RIGHT] = [0, 1, 2, 3] as const\n\nconst AlignmentConnections = observer(function ({\n  model,\n  trackId,\n  parentRef,\n  getTrackYPosOverride,\n}: {\n  model: BreakpointViewModel\n  trackId: string\n  parentRef: React.RefObject<SVGSVGElement>\n  getTrackYPosOverride?: (trackId: string, level: number) => number\n}) {\n  const { views, showIntraviewLinks } = model\n  const theme = useTheme()\n  const session = getSession(model)\n  const snap = getSnapshot(model)\n  const { assemblyManager } = session\n  const v0 = views[0]\n  const assembly = v0 ? assemblyManager.get(v0.assemblyNames[0]!) : undefined\n  useNextFrame(snap)\n  const allFeatures = model.getTrackFeatures(trackId)\n  const hasPaired = useMemo(() => hasPairedReads(allFeatures), [allFeatures])\n  const layoutMatches = useMemo(() => {\n    const layoutMatches = model.getMatchedFeaturesInLayout(\n      trackId,\n      hasPaired\n        ? getBadlyPairedAlignments(allFeatures)\n        : getMatchedAlignmentFeatures(allFeatures),\n    )\n    if (!hasPaired) {\n      layoutMatches.forEach(m => {\n        m.sort((a, b) => a.feature.get('clipPos') - b.feature.get('clipPos'))\n      })\n    }\n    return layoutMatches\n  }, [allFeatures, trackId, hasPaired, model])\n\n  const [mouseoverElt, setMouseoverElt] = useState<string>()\n\n  let yOffset = 0\n  if (parentRef.current) {\n    const rect = parentRef.current.getBoundingClientRect()\n    yOffset = rect.top\n  }\n\n  return assembly ? (\n    <g\n      fill=\"none\"\n      data-testid={layoutMatches.length ? `${trackId}-loaded` : trackId}\n    >\n      {layoutMatches.map(chunk => {\n        const ret = []\n        // we follow a path in the list of chunks, not from top to bottom, just in series\n        // following x1,y1 -> x2,y2\n        for (let i = 0; i < chunk.length - 1; i++) {\n          const { layout: c1, feature: f1, level: level1 } = chunk[i]!\n          const { layout: c2, feature: f2, level: level2 } = chunk[i + 1]!\n\n          if (!c1 || !c2) {\n            console.warn('received null layout for a overlay feature')\n            return null\n          }\n\n          // disable rendering connections in a single row\n          if (!showIntraviewLinks && level1 === level2) {\n            return null\n          }\n          const f1ref = assembly.getCanonicalRefName(f1.get('refName'))\n          const f2ref = assembly.getCanonicalRefName(f2.get('refName'))\n\n          if (!f1ref || !f2ref) {\n            throw new Error(`unable to find ref for ${f1ref || f2ref}`)\n          }\n          const r = {\n            pair_orientation: f1.get('pair_orientation'),\n          }\n\n          const s1 = f1.get('strand')\n          const s2 = f2.get('strand')\n          const sameRef = f1ref === f2ref\n          const checkOrientation = sameRef\n          let orientationColor = ''\n          let isAbnormal = false\n          if (checkOrientation) {\n            if (hasPaired) {\n              orientationColor = getPairedOrientationColor(r)\n              isAbnormal = isAbnormalOrientation(r)\n            } else {\n              orientationColor = getLongReadOrientationColorOrDefault(s1, s2)\n              isAbnormal = getLongReadOrientationAbnormal(s1, s2)\n            }\n          }\n          const p1 = c1[s1 === -1 ? LEFT : RIGHT]\n          const sn1 = s2 === -1\n          const p2 = hasPaired ? c2[sn1 ? LEFT : RIGHT] : c2[sn1 ? RIGHT : LEFT]\n          const x1 = getPxFromCoordinate(views[level1]!, f1ref, p1)\n          const x2 = getPxFromCoordinate(views[level2]!, f2ref, p2)\n          const reversed1 = views[level1]!.pxToBp(x1).reversed\n          const reversed2 = views[level2]!.pxToBp(x2).reversed\n          const rf1 = reversed1 ? -1 : 1\n          const rf2 = reversed2 ? -1 : 1\n          const tracks = views.map(v => v.getTrack(trackId))\n          const y1 =\n            yPos(trackId, level1, views, tracks, c1, getTrackYPosOverride) -\n            yOffset\n          const y2 =\n            yPos(trackId, level2, views, tracks, c2, getTrackYPosOverride) -\n            yOffset\n          const sameLevel = level1 === level2\n          const abnormalSpecialRenderFlag = sameLevel && isAbnormal\n          const trackHeight = abnormalSpecialRenderFlag\n            ? tracks[level1].displays[0].height\n            : 0\n          const pf1 = hasPaired ? -1 : 1\n          const y0 = heightFromSpecificLevel(\n            views,\n            trackId,\n            level1,\n            getTrackYPosOverride,\n          )\n\n          // possible todo: use totalCurveHeight to possibly make alternative\n          // squiggle if the S is too small\n          const path = [\n            'M',\n            x1,\n            y1,\n            'C',\n\n            // first bezier x,y\n            x1 + 200 * f1.get('strand') * rf1,\n            abnormalSpecialRenderFlag\n              ? Math.min(y0 - yOffset + trackHeight, y1 + trackHeight)\n              : y1,\n\n            // second bezier x,y\n            x2 - 200 * f2.get('strand') * rf2 * pf1,\n            abnormalSpecialRenderFlag\n              ? Math.min(y0 - yOffset + trackHeight, y2 + trackHeight)\n              : y2,\n\n            // third bezier x,y\n            x2,\n            y2,\n          ].join(' ')\n          const id = `${f1.id()}-${f2.id()}`\n          ret.push(\n            <path\n              d={path}\n              key={id}\n              data-testid=\"r1\"\n              strokeWidth={mouseoverElt === id ? 5 : 1}\n              {...getStrokeProps(\n                orientationColor || theme.palette.text.disabled,\n              )}\n              onClick={() => {\n                const featureWidget = session.addWidget?.(\n                  'BreakpointAlignmentsWidget',\n                  'breakpointAlignments',\n                  {\n                    featureData: {\n                      feature1: (\n                        allFeatures.get(f1.id()) || { toJSON: () => {} }\n                      ).toJSON(),\n                      feature2: (\n                        allFeatures.get(f2.id()) || { toJSON: () => {} }\n                      ).toJSON(),\n                    },\n                  },\n                )\n                session.showWidget?.(featureWidget)\n              }}\n              onMouseOver={() => {\n                setMouseoverElt(id)\n              }}\n              onMouseOut={() => {\n                setMouseoverElt(undefined)\n              }}\n            />,\n          )\n        }\n        return ret\n      })}\n    </g>\n  ) : null\n})\n\nexport default AlignmentConnections\n","import React, { useState, useMemo } from 'react'\nimport { getSession } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\n\n// locals\nimport { findMatchingAlt, getMatchedBreakendFeatures } from './util'\nimport { yPos, getPxFromCoordinate, useNextFrame } from '../util'\nimport { BreakpointViewModel } from '../model'\n\nconst [LEFT] = [0, 1, 2, 3] as const\n\nconst Breakends = observer(function ({\n  model,\n  trackId,\n  parentRef: ref,\n  getTrackYPosOverride,\n}: {\n  model: BreakpointViewModel\n  trackId: string\n  parentRef: React.RefObject<SVGSVGElement>\n  getTrackYPosOverride?: (trackId: string, level: number) => number\n}) {\n  const { views } = model\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const totalFeatures = model.getTrackFeatures(trackId)\n  const layoutMatches = useMemo(\n    () =>\n      model.getMatchedFeaturesInLayout(\n        trackId,\n        getMatchedBreakendFeatures(totalFeatures),\n      ),\n    [totalFeatures, trackId, model],\n  )\n\n  const [mouseoverElt, setMouseoverElt] = useState<string>()\n  const snap = getSnapshot(model)\n  useNextFrame(snap)\n  const assembly = assemblyManager.get(views[0]!.assemblyNames[0]!)\n\n  if (!assembly) {\n    return null\n  }\n\n  let yoff = 0\n  if (ref.current) {\n    const rect = ref.current.getBoundingClientRect()\n    yoff = rect.top\n  }\n\n  return (\n    <g\n      stroke=\"green\"\n      strokeWidth={5}\n      fill=\"none\"\n      data-testid={layoutMatches.length ? `${trackId}-loaded` : trackId}\n    >\n      {layoutMatches.map(chunk => {\n        const ret = []\n        // we follow a path in the list of chunks, not from top to bottom, just\n        // in series following x1,y1 -> x2,y2\n        for (let i = 0; i < chunk.length - 1; i += 1) {\n          const { layout: c1, feature: f1, level: level1 } = chunk[i]!\n          const { layout: c2, feature: f2, level: level2 } = chunk[i + 1]!\n          const id = f1.id()\n\n          const relevantAlt = findMatchingAlt(f1, f2)\n          if (!c1 || !c2) {\n            return null\n          }\n          const f1origref = f1.get('refName')\n          const f2origref = f2.get('refName')\n          const f1ref = assembly.getCanonicalRefName(f1origref)\n          const f2ref = assembly.getCanonicalRefName(f2origref)\n          if (!f1ref || !f2ref) {\n            throw new Error(`unable to find ref for ${f1ref || f2ref}`)\n          }\n          const x1 = getPxFromCoordinate(views[level1]!, f1ref, c1[LEFT])\n          const x2 = getPxFromCoordinate(views[level2]!, f2ref, c2[LEFT])\n          const reversed1 = views[level1]!.pxToBp(x1).reversed\n          const reversed2 = views[level2]!.pxToBp(x2).reversed\n\n          const tracks = views.map(v => v.getTrack(trackId))\n          const y1 =\n            yPos(trackId, level1, views, tracks, c1, getTrackYPosOverride) -\n            yoff\n          const y2 =\n            yPos(trackId, level2, views, tracks, c2, getTrackYPosOverride) -\n            yoff\n          if (!relevantAlt) {\n            console.warn('the relevant ALT allele was not found, cannot render')\n          } else {\n            const path = [\n              'M', // move to\n              x1 -\n                20 *\n                  (relevantAlt.Join === 'left' ? -1 : 1) *\n                  (reversed1 ? -1 : 1),\n              y1,\n              'L', // line to\n              x1,\n              y1,\n              'L', // line to\n              x2,\n              y2,\n              'L', // line to\n              x2 -\n                20 *\n                  (relevantAlt.MateDirection === 'left' ? 1 : -1) *\n                  (reversed2 ? -1 : 1),\n              y2,\n            ].join(' ')\n            ret.push(\n              <path\n                d={path}\n                data-testid=\"r2\"\n                key={JSON.stringify(path)}\n                strokeWidth={id === mouseoverElt ? 10 : 5}\n                onClick={() => {\n                  const featureWidget = session.addWidget?.(\n                    'VariantFeatureWidget',\n                    'variantFeature',\n                    {\n                      featureData: totalFeatures.get(id)?.toJSON(),\n                    },\n                  )\n                  session.showWidget?.(featureWidget)\n                }}\n                onMouseOver={() => {\n                  setMouseoverElt(id)\n                }}\n                onMouseOut={() => {\n                  setMouseoverElt(undefined)\n                }}\n              />,\n            )\n          }\n        }\n        return ret\n      })}\n    </g>\n  )\n})\n\nexport default Breakends\n","import React, { useState, useMemo } from 'react'\nimport { getSession } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\n\n// locals\nimport { getMatchedTranslocationFeatures } from './util'\nimport { yPos, getPxFromCoordinate, useNextFrame } from '../util'\nimport { BreakpointViewModel, LayoutRecord } from '../model'\n\nconst [LEFT] = [0, 1, 2, 3] as const\n\nfunction str(s: string) {\n  if (s === '+') {\n    return 1\n  } else if (s === '-') {\n    return -1\n  } else {\n    return 0\n  }\n}\n\nconst Translocations = observer(function ({\n  model,\n  trackId,\n  parentRef: ref,\n  getTrackYPosOverride,\n}: {\n  model: BreakpointViewModel\n  trackId: string\n  parentRef: React.RefObject<SVGSVGElement>\n  getTrackYPosOverride?: (trackId: string, level: number) => number\n}) {\n  const { views } = model\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const totalFeatures = model.getTrackFeatures(trackId)\n  const layoutMatches = useMemo(\n    () =>\n      model.getMatchedFeaturesInLayout(\n        trackId,\n        getMatchedTranslocationFeatures(totalFeatures),\n      ),\n\n    [totalFeatures, trackId, model],\n  )\n\n  const [mouseoverElt, setMouseoverElt] = useState<string>()\n  const snap = getSnapshot(model)\n  useNextFrame(snap)\n\n  const assembly = assemblyManager.get(views[0]!.assemblyNames[0]!)\n  if (!assembly) {\n    return null\n  }\n\n  let yOffset = 0\n  if (ref.current) {\n    const rect = ref.current.getBoundingClientRect()\n    yOffset = rect.top\n  }\n\n  // we hardcode the TRA to go to the \"other view\" and if there is none, we\n  // just return null here note: would need to do processing of the INFO\n  // CHR2/END and see which view could contain those coordinates to really do\n  // it properly\n  if (views.length < 2) {\n    return null\n  }\n  return (\n    <g\n      fill=\"none\"\n      stroke=\"green\"\n      strokeWidth={5}\n      data-testid={layoutMatches.length ? `${trackId}-loaded` : trackId}\n    >\n      {layoutMatches.map(chunk => {\n        // we follow a path in the list of chunks, not from top to bottom,\n        // just in series following x1,y1 -> x2,y2\n        const ret = []\n        for (const { layout: c1, feature: f1, level: level1 } of chunk) {\n          const level2 = level1 === 0 ? 1 : 0\n          const id = f1.id()\n          if (!c1) {\n            return null\n          }\n\n          const info = f1.get('INFO')\n          const chr2 = info.CHR2[0]\n          const end2 = info.END[0]\n          const res = info.STRANDS?.[0]?.split('') // not all files have STRANDS\n          const [myDirection, mateDirection] = res ?? ['.', '.']\n\n          const r = getPxFromCoordinate(views[level2]!, chr2, end2)\n          if (r) {\n            const c2: LayoutRecord = [r, 0, r + 1, 0]\n            const x1 = getPxFromCoordinate(\n              views[level1]!,\n              f1.get('refName'),\n              c1[LEFT],\n            )\n            const x2 = r\n            const reversed1 = views[level1]!.pxToBp(x1).reversed\n            const reversed2 = views[level2]!.pxToBp(x2).reversed\n\n            const tracks = views.map(v => v.getTrack(trackId))\n            const y1 =\n              yPos(trackId, level1, views, tracks, c1, getTrackYPosOverride) -\n              yOffset\n            const y2 =\n              yPos(trackId, level2, views, tracks, c2, getTrackYPosOverride) -\n              yOffset\n\n            const path = [\n              'M', // move to\n              x1 - 20 * str(myDirection) * (reversed1 ? -1 : 1),\n              y1,\n              'L', // line to\n              x1,\n              y1,\n              'L', // line to as const\n              x2,\n              y2,\n              'L', // line to\n              x2 - 20 * str(mateDirection) * (reversed2 ? -1 : 1),\n              y2,\n            ].join(' ')\n            ret.push(\n              <path\n                d={path}\n                key={JSON.stringify(path)}\n                strokeWidth={id === mouseoverElt ? 10 : 5}\n                onClick={() => {\n                  const featureWidget = session.addWidget?.(\n                    'VariantFeatureWidget',\n                    'variantFeature',\n                    {\n                      featureData: (\n                        totalFeatures.get(id) || { toJSON: () => {} }\n                      ).toJSON(),\n                    },\n                  )\n                  session.showWidget?.(featureWidget)\n                }}\n                onMouseOver={() => {\n                  setMouseoverElt(id)\n                }}\n                onMouseOut={() => {\n                  setMouseoverElt(undefined)\n                }}\n              />,\n            )\n          }\n        }\n        return ret\n      })}\n    </g>\n  )\n})\n\nexport default Translocations\n","import React, { useState, useMemo } from 'react'\nimport { getSession } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\n\n// locals\nimport { getMatchedPairedFeatures } from './util'\nimport { yPos, getPxFromCoordinate, useNextFrame } from '../util'\nimport { BreakpointViewModel } from '../model'\n\nconst [LEFT] = [0, 1, 2, 3] as const\n\nconst PairedFeatures = observer(function ({\n  model,\n  trackId,\n  parentRef: ref,\n  getTrackYPosOverride,\n}: {\n  model: BreakpointViewModel\n  trackId: string\n  parentRef: React.RefObject<SVGSVGElement>\n  getTrackYPosOverride?: (trackId: string, level: number) => number\n}) {\n  const { views } = model\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const totalFeatures = model.getTrackFeatures(trackId)\n  const layoutMatches = useMemo(\n    () =>\n      model.getMatchedFeaturesInLayout(\n        trackId,\n        getMatchedPairedFeatures(totalFeatures),\n      ),\n    [totalFeatures, trackId, model],\n  )\n\n  const [mouseoverElt, setMouseoverElt] = useState<string>()\n  const snap = getSnapshot(model)\n  useNextFrame(snap)\n  const assembly = assemblyManager.get(views[0]!.assemblyNames[0]!)\n\n  if (!assembly) {\n    return null\n  }\n\n  let yoff = 0\n  if (ref.current) {\n    const rect = ref.current.getBoundingClientRect()\n    yoff = rect.top\n  }\n\n  return (\n    <g\n      stroke=\"green\"\n      strokeWidth={5}\n      fill=\"none\"\n      data-testid={layoutMatches.length ? `${trackId}-loaded` : trackId}\n    >\n      {layoutMatches.map(chunk => {\n        const ret = []\n        // we follow a path in the list of chunks, not from top to bottom, just\n        // in series following x1,y1 -> x2,y2\n        for (let i = 0; i < chunk.length - 1; i += 1) {\n          const { layout: c1, feature: f1, level: level1 } = chunk[i]!\n          const { layout: c2, feature: f2, level: level2 } = chunk[i + 1]!\n          const id = f1.id()\n\n          if (!c1 || !c2) {\n            return null\n          }\n          const f1origref = f1.get('refName')\n          const f2origref = f2.get('refName')\n          const f1ref = assembly.getCanonicalRefName(f1origref)\n          const f2ref = assembly.getCanonicalRefName(f2origref)\n          if (!f1ref || !f2ref) {\n            throw new Error(`unable to find ref for ${f1ref || f2ref}`)\n          }\n          const x1 = getPxFromCoordinate(views[level1]!, f1ref, c1[LEFT])\n          const x2 = getPxFromCoordinate(views[level2]!, f2ref, c2[LEFT])\n\n          const tracks = views.map(v => v.getTrack(trackId))\n          const y1 =\n            yPos(trackId, level1, views, tracks, c1, getTrackYPosOverride) -\n            yoff\n          const y2 =\n            yPos(trackId, level2, views, tracks, c2, getTrackYPosOverride) -\n            yoff\n          const path = [\n            'M', // move to\n            x1,\n            y1,\n            'L', // line to\n            x2,\n            y2,\n          ].join(' ')\n          ret.push(\n            <path\n              d={path}\n              data-testid=\"r2\"\n              key={JSON.stringify(path)}\n              strokeWidth={id === mouseoverElt ? 10 : 5}\n              onClick={() => {\n                const featureWidget = session.addWidget?.(\n                  'VariantFeatureWidget',\n                  'variantFeature',\n                  {\n                    featureData: totalFeatures.get(id)?.toJSON(),\n                  },\n                )\n                session.showWidget?.(featureWidget)\n              }}\n              onMouseOver={() => {\n                setMouseoverElt(id)\n              }}\n              onMouseOut={() => {\n                setMouseoverElt(undefined)\n              }}\n            />,\n          )\n        }\n        return ret\n      })}\n    </g>\n  )\n})\n\nexport default PairedFeatures\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { BreakpointViewModel } from '../model'\nimport AlignmentConnections from './AlignmentConnections'\nimport Breakends from './Breakends'\nimport Translocations from './Translocations'\nimport PairedFeatures from './PairedFeatures'\n\nconst Overlay = observer(function (props: {\n  parentRef: React.RefObject<SVGSVGElement>\n  model: BreakpointViewModel\n  trackId: string\n  getTrackYPosOverride?: (trackId: string, level: number) => number\n}) {\n  const { model, trackId } = props\n  const tracks = model.getMatchedTracks(trackId)\n\n  // curvy line type arcs\n  if (tracks[0]?.type === 'AlignmentsTrack') {\n    return <AlignmentConnections {...props} />\n  }\n\n  // translocation type arcs\n  else if (tracks[0]?.type === 'VariantTrack') {\n    return model.hasTranslocations(trackId) ? (\n      <Translocations {...props} />\n    ) : model.hasPairedFeatures(trackId) ? (\n      <PairedFeatures {...props} />\n    ) : (\n      <Breakends {...props} />\n    )\n  } else {\n    return null\n  }\n})\n\nexport default Overlay\n"],"names":["getTag","f","tag","tags","get","findMatchingAlt","feat1","feat2","alts","Map","map","alt","parseBreakend","filter","notEmpty","bnd","MatePosition","orientationTypes","F1R2","F2R1","F1F2","F2F1","R1R2","R2R1","R1F2","R2F1","pairMap","LR","LL","RR","RL","strokeColor","color_fwd_strand_not_proper","alpha","color_rev_strand_not_proper","color_fwd_strand","color_rev_strand","color_fwd_missing_mate","color_rev_missing_mate","color_fwd_diff_chr","color_rev_diff_chr","color_pair_lr","color_pair_rr","color_pair_rl","color_pair_ll","color_nostrand","color_interchrom","color_longinsert","color_shortinsert","color_unknown","defaultColor","getLongReadOrientationColorOrDefault","s1","s2","getLongReadOrientationAbnormal","LEFT","RIGHT","observer","model","trackId","parentRef","getTrackYPosOverride","views","showIntraviewLinks","theme","useTheme","session","getSession","snap","getSnapshot","assemblyManager","v0","assembly","assemblyNames","undefined","useNextFrame","allFeatures","getTrackFeatures","hasPaired","useMemo","features","values","hasPairedReads","layoutMatches","getMatchedFeaturesInLayout","candidates","alreadySeen","Set","feature","flags","id","unmapped","correctlyPaired","has","n","val","set","push","add","v","length","getBadlyPairedAlignments","hasSA","getMatchedAlignmentFeatures","forEach","m","sort","a","b","mouseoverElt","setMouseoverElt","useState","yOffset","current","rect","getBoundingClientRect","top","React","fill","chunk","ret","i","layout","c1","f1","level","level1","c2","f2","level2","console","warn","f1ref","getCanonicalRefName","f2ref","Error","r","pair_orientation","orientationColor","isAbnormal","getPairedOrientationColorOrDefault","p1","sn1","p2","x1","getPxFromCoordinate","x2","rf1","pxToBp","reversed","rf2","tracks","getTrack","y1","yPos","y2","abnormalSpecialRenderFlag","trackHeight","displays","height","pf1","y0","heightFromSpecificLevel","path","Math","min","join","_extends","d","key","strokeWidth","getStrokeProps","palette","text","disabled","onClick","featureWidget","addWidget","featureData","feature1","toJSON","feature2","showWidget","onMouseOver","onMouseOut","ref","totalFeatures","feats","cur","getMatchedBreakendFeatures","yoff","stroke","relevantAlt","f1origref","f2origref","reversed1","reversed2","Join","MateDirection","JSON","stringify","str","s","getMatchedTranslocationFeatures","info","chr2","CHR2","end2","END","res","STRANDS","split","myDirection","mateDirection","r1","replace","r2","endsWith","getMatchedPairedFeatures","props","getMatchedTracks","type","AlignmentConnections","hasTranslocations","Translocations","hasPairedFeatures","PairedFeatures","Breakends"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5736.48705208.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5736],{15736:(e,t,n)=>{n.r(t),n.d(t,{default:()=>w});var a=n(7552),l=n(68984),r=n(99546),s=n(36715),i=n(87731),o=n(80544),u=n(51762);function c({tag:e,model:t}){return a.createElement("div",null,a.createElement(s.A,null,"List of supplementary alignment locations"),a.createElement("ul",null,e.split(";").filter((e=>!!e)).map(((e,n)=>{const[l,r,s,c]=e.split(","),m=(0,o.getLengthOnRef)(c),f=Math.floor(m/5),p=+r,g=+r+m,d=p-f,y=g+f,w=`${l}:${Math.max(1,d)}-${y}`,h=`${l}:${p.toLocaleString("en-US")}-${g.toLocaleString("en-US")} (${s}) [${m}bp]`;return a.createElement("li",{key:`${w}-${n}`},a.createElement(i.A,{href:"#",onClick:async e=>{e.preventDefault(),(0,u.h)(w,t)}},h))}))))}var m=n(49823),f=n(86576);const p=(0,a.lazy)((()=>n.e(5930).then(n.bind(n,45930)))),g=(0,a.lazy)((()=>n.e(457).then(n.bind(n,80457))));function d({model:e,feature:t,viewType:n}){const l=(0,r.getSession)(e),{view:u}=e,[c,d]=(0,a.useState)(),[y,w]=(0,a.useState)();(0,a.useEffect)((()=>{(async()=>{try{const e=await async function({view:e,feature:t}){const{assemblyManager:n}=(0,r.getSession)(e),a=t.get("CIGAR"),l=t.get("strand"),s=(0,f.bH)(t,"SA")||"",i=t.get("name"),u=(0,o.getClip)(a,1),c=await n.waitForAssembly(e.assemblyNames[0]);if(!c)throw new Error("assembly not found");const m=(0,o.featurizeSA)(s,t.id(),l,i,!0),p=t.toJSON();p.clipPos=u,p.strand=1,p.mate={refName:i,start:u,end:u+(0,o.getLengthSansClipping)(a)};const g=[p,...m];return g.forEach(((e,t)=>{e.refName=c.getCanonicalRefName(e.refName)||e.refName,e.syntenyId=t,e.mate.syntenyId=t,e.mate.uniqueId=`${e.uniqueId}_mate`})),g.sort(((e,t)=>e.clipPos-t.clipPos)),g}({view:u,feature:new r.SimpleFeature(t)});d(e)}catch(e){w(e),console.error(e)}})()}),[t,u]);const h=[];if(c)for(let e=0;e<c.length-1;e++)h.push([c[e],c[e+1]]);return h.length?a.createElement("div",null,a.createElement(s.A,null,"Launch split view"),y?a.createElement(m.ErrorMessage,{error:y}):null,a.createElement("ul",null,h.map(((t,s)=>{const[o,u]=t;return a.createElement("li",{key:`${JSON.stringify(t)}-${s}`},o.refName,":",(0,r.toLocale)(1===o.strand?o.end:o.start)," ->"," ",u.refName,":",(0,r.toLocale)(1===u.strand?u.start:u.end)," ",a.createElement(i.A,{href:"#",onClick:t=>{t.preventDefault(),l.queueDialog((t=>[p,{handleClose:t,model:e,feature:new r.SimpleFeature({...o,mate:u}),viewType:n,view:e.view,assemblyName:e.view.displayedRegions[0].assemblyName}]))}},"(top/bottom)")," ",a.createElement(i.A,{href:"#",onClick:t=>{t.preventDefault(),l.queueDialog((t=>[g,{handleClose:t,model:e,feature:new r.SimpleFeature({...o,mate:u}),viewType:n,view:e.view,assemblyName:e.view.displayedRegions[0].assemblyName}]))}},"(single row)"))})))):null}function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},y.apply(null,arguments)}function w(e){const{model:t,tag:n,feature:s}=e,i=(0,r.getSession)(t),{pluginManager:o}=(0,r.getEnv)(i);let u;try{u=o.getViewType("BreakpointSplitView")}catch(e){}return a.createElement(l.BaseCard,y({},e,{title:"Supplementary alignments"}),a.createElement(c,{model:t,tag:n}),u?a.createElement(d,{viewType:u,model:t,feature:s}):null)}}}]);
+//# sourceMappingURL=5736.48705208.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5736.48705208.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5736.48705208.chunk.js","mappings":"uOAOe,SAASA,GAAkC,IACxDC,EAAG,MACHC,IAKA,OACEC,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAU,KAAC,6CACZD,EAAAA,cAAA,UACGF,EACEI,MAAM,KACNC,QAAOC,KAAQA,IACfC,KAAI,CAACD,EAAIE,KACR,MAAOC,EAAOC,EAASC,EAAUC,GAAWN,EAAGF,MAAM,KAC/CS,GAAWC,EAAAA,EAAAA,gBAAeF,GAC1BG,EAAQC,KAAKC,MAAMJ,EAAW,GAC9BK,GAASR,EACTS,GAAOT,EAAWG,EAClBO,EAAKF,EAAQH,EACbM,EAAKF,EAAMJ,EACXO,EAAY,GAAGb,KAASO,KAAKO,IAAI,EAAGH,MAAOC,IAG3CG,EAAgB,GAAGf,KAFJS,EAAMO,eAAe,YACvBN,EAAIM,eAAe,aAC2Bd,OAAcE,OAC/E,OAEEX,EAAAA,cAAA,MAAIwB,IAAK,GAAGJ,KAAad,KACvBN,EAAAA,cAACyB,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,UACPC,EAAMC,kBAGNC,EAAAA,EAAAA,GAASX,EAAWrB,EAAM,GAG3BuB,GAEA,KAMnB,C,0BCrCA,MAAMU,GAAiCC,EAAAA,EAAAA,OACrC,IAAM,kCAEFC,GAAkCD,EAAAA,EAAAA,OACtC,IAAM,iCAGO,SAASE,GAA+B,MACrDpC,EAAK,QACLqC,EAAO,SACPC,IAMA,MAAMC,GAAUC,EAAAA,EAAAA,YAAWxC,IACrB,KAAEyC,GAASzC,GACV0C,EAAKC,IAAUC,EAAAA,EAAAA,aACfC,EAAOC,IAAYF,EAAAA,EAAAA,aAC1BG,EAAAA,EAAAA,YAAU,KAEP,WACC,IACE,MAAMC,QCfPnB,gBAA6B,KAClCY,EAAI,QACJJ,IAKA,MAAM,gBAAEY,IAAoBT,EAAAA,EAAAA,YAAWC,GACjCS,EAAQb,EAAQc,IAAI,SACpBC,EAAaf,EAAQc,IAAI,UACzB9C,GAAMgD,EAAAA,EAAAA,IAAOhB,EAAS,OAAoB,GAC1CiB,EAAWjB,EAAQc,IAAI,QACvBI,GAAUC,EAAAA,EAAAA,SAAQN,EAAO,GAKzBO,QAAiBR,EAAgBS,gBAAgBjB,EAAKkB,cAAc,IAC1E,IAAKF,EACH,MAAM,IAAIG,MAAM,sBAGlB,MAAMC,GAAWC,EAAAA,EAAAA,aAAYzD,EAAIgC,EAAQ0B,KAAMX,EAAYE,GAAU,GAE/DU,EAAO3B,EAAQ4B,SACrBD,EAAKT,QAAUA,EACfS,EAAKE,OAAS,EAEdF,EAAKG,KAAO,CACVC,QAASd,EACTrC,MAAOsC,EACPrC,IAAKqC,GAAUc,EAAAA,EAAAA,uBAAsBnB,IAEvC,MAAMoB,EAAW,CAACN,KAASH,GAS3B,OAPAS,EAASC,SAAQ,CAACC,EAAGjE,KACnBiE,EAAEJ,QAAUX,EAASgB,oBAAoBD,EAAEJ,UAAYI,EAAEJ,QACzDI,EAAEE,UAAYnE,EACdiE,EAAEL,KAAKO,UAAYnE,EACnBiE,EAAEL,KAAKQ,SAAW,GAAGH,EAAEG,eAAe,IAExCL,EAASM,MAAK,CAACC,EAAGC,IAAMD,EAAEtB,QAAUuB,EAAEvB,UAC/Be,CACT,CD5B4BS,CAAc,CAChCtC,OACAJ,QAAS,IAAI2C,EAAAA,cAAc3C,KAE7BM,EAAOK,EACT,CAAE,MAAOiC,GACPnC,EAASmC,GACTC,QAAQrC,MAAMoC,EAChB,CACD,EAXA,EAWG,GACH,CAAC5C,EAASI,IAEb,MAAM0C,EAAM,GACZ,GAAIzC,EACF,IAAK,IAAI0C,EAAI,EAAGA,EAAI1C,EAAI2C,OAAS,EAAGD,IAClCD,EAAIG,KAAK,CAAC5C,EAAI0C,GAAK1C,EAAI0C,EAAI,KAG/B,OAAOD,EAAIE,OACTpF,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAU,KAAC,qBACX2C,EAAQ5C,EAAAA,cAACsF,EAAAA,aAAY,CAAC1C,MAAOA,IAAY,KAC1C5C,EAAAA,cAAA,UACGkF,EAAI7E,KAAI,CAACkF,EAAKC,KACb,MAAOC,EAAIC,GAAMH,EACjB,OACEvF,EAAAA,cAAA,MAAIwB,IAAK,GAAGmE,KAAKC,UAAUL,MAAQC,KAChCC,EAAGtB,QAAQ,KAAE0B,EAAAA,EAAAA,UAAuB,IAAdJ,EAAGxB,OAAewB,EAAGxE,IAAMwE,EAAGzE,OAAO,MAAO,IAClE0E,EAAGvB,QAAQ,KAAE0B,EAAAA,EAAAA,UAAuB,IAAdH,EAAGzB,OAAeyB,EAAG1E,MAAQ0E,EAAGzE,KAAM,IAC7DjB,EAAAA,cAACyB,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASE,IACPA,EAAMC,iBACNQ,EAAQwD,aAAYC,GAAe,CACjC/D,EACA,CACE+D,cACAhG,QACAqC,QAAS,IAAI2C,EAAAA,cAAc,IAAKU,EAAIvB,KAAMwB,IAE1CrD,WACAG,KAAMzC,EAAMyC,KACZwD,aAAcjG,EAAMyC,KAAKyD,iBAAiB,GAAGD,gBAE/C,GAEL,gBAEO,IACRhG,EAAAA,cAACyB,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASE,IACPA,EAAMC,iBACNQ,EAAQwD,aAAYC,GAAe,CACjC7D,EACA,CACE6D,cACAhG,QACAqC,QAAS,IAAI2C,EAAAA,cAAc,IAAKU,EAAIvB,KAAMwB,IAE1CrD,WACAG,KAAMzC,EAAMyC,KACZwD,aAAcjG,EAAMyC,KAAKyD,iBAAiB,GAAGD,gBAE/C,GAEL,gBAGE,MAKX,IACN,C,wNEzGe,SAASE,EAAwBC,GAK9C,MAAM,MAAEpG,EAAK,IAAED,EAAG,QAAEsC,GAAY+D,EAC1B7D,GAAUC,EAAAA,EAAAA,YAAWxC,IACrB,cAAEqG,IAAkBC,EAAAA,EAAAA,QAAO/D,GACjC,IAAID,EAEJ,IACEA,EAAW+D,EAAcE,YAAY,sBACvC,CAAE,MAAOtB,GACP,CAGF,OACEhF,EAAAA,cAACuG,EAAAA,SAAQC,EAAA,GAAKL,EAAK,CAAEM,MAAM,6BACzBzG,EAAAA,cAACH,EAAiC,CAACE,MAAOA,EAAOD,IAAKA,IACrDuC,EACCrC,EAAAA,cAACmC,EAA8B,CAC7BE,SAAUA,EACVtC,MAAOA,EACPqC,QAASA,IAET,KAGV,C","sources":["../../../plugins/alignments/src/AlignmentsFeatureDetail/SupplementaryAlignmentsLocStrings.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/getSAFeatures.ts","../../../plugins/alignments/src/AlignmentsFeatureDetail/SupplementaryAlignments.tsx"],"sourcesContent":["import React from 'react'\nimport { Typography, Link } from '@mui/material'\n// locals\nimport { getLengthOnRef } from '../MismatchParser'\nimport { navToLoc } from './util'\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\n\nexport default function SupplementaryAlignmentsLocStrings({\n  tag,\n  model,\n}: {\n  tag: string\n  model: AlignmentFeatureWidgetModel\n}) {\n  return (\n    <div>\n      <Typography>List of supplementary alignment locations</Typography>\n      <ul>\n        {tag\n          .split(';')\n          .filter(SA => !!SA)\n          .map((SA, idx) => {\n            const [saRef, saStart, saStrand, saCigar] = SA.split(',')\n            const saLength = getLengthOnRef(saCigar!)\n            const extra = Math.floor(saLength / 5)\n            const start = +saStart!\n            const end = +saStart! + saLength\n            const sp = start - extra\n            const ep = end + extra\n            const locString = `${saRef}:${Math.max(1, sp)}-${ep}`\n            const displayStart = start.toLocaleString('en-US')\n            const displayEnd = end.toLocaleString('en-US')\n            const displayString = `${saRef}:${displayStart}-${displayEnd} (${saStrand}) [${saLength}bp]`\n            return (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <li key={`${locString}-${idx}`}>\n                <Link\n                  href=\"#\"\n                  onClick={async event => {\n                    event.preventDefault()\n\n                    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n                    navToLoc(locString, model)\n                  }}\n                >\n                  {displayString}\n                </Link>\n              </li>\n            )\n          })}\n      </ul>\n    </div>\n  )\n}\n","import React, { lazy, useEffect, useState } from 'react'\nimport { Typography, Link } from '@mui/material'\nimport {\n  SimpleFeature,\n  SimpleFeatureSerialized,\n  getSession,\n  toLocale,\n} from '@jbrowse/core/util'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\nimport { ReducedFeature, getSAFeatures } from './getSAFeatures'\n\n// lazies\nconst BreakendMultiLevelOptionDialog = lazy(\n  () => import('./BreakendMultiLevelOptionDialog'),\n)\nconst BreakendSingleLevelOptionDialog = lazy(\n  () => import('./BreakendSingleLevelOptionDialog'),\n)\n\nexport default function LaunchBreakpointSplitViewPanel({\n  model,\n  feature,\n  viewType,\n}: {\n  model: AlignmentFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n  viewType: ViewType\n}) {\n  const session = getSession(model)\n  const { view } = model\n  const [res, setRes] = useState<ReducedFeature[]>()\n  const [error, setError] = useState<unknown>()\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        const feats = await getSAFeatures({\n          view,\n          feature: new SimpleFeature(feature),\n        })\n        setRes(feats)\n      } catch (e) {\n        setError(e)\n        console.error(e)\n      }\n    })()\n  }, [feature, view])\n\n  const ret = [] as [ReducedFeature, ReducedFeature][]\n  if (res) {\n    for (let i = 0; i < res.length - 1; i++) {\n      ret.push([res[i]!, res[i + 1]!] as const)\n    }\n  }\n  return ret.length ? (\n    <div>\n      <Typography>Launch split view</Typography>\n      {error ? <ErrorMessage error={error} /> : null}\n      <ul>\n        {ret.map((arg, index) => {\n          const [f1, f2] = arg\n          return (\n            <li key={`${JSON.stringify(arg)}-${index}`}>\n              {f1.refName}:{toLocale(f1.strand === 1 ? f1.end : f1.start)} -&gt;{' '}\n              {f2.refName}:{toLocale(f2.strand === 1 ? f2.start : f2.end)}{' '}\n              <Link\n                href=\"#\"\n                onClick={event => {\n                  event.preventDefault()\n                  session.queueDialog(handleClose => [\n                    BreakendMultiLevelOptionDialog,\n                    {\n                      handleClose,\n                      model,\n                      feature: new SimpleFeature({ ...f1, mate: f2 }),\n                      // @ts-expect-error\n                      viewType,\n                      view: model.view,\n                      assemblyName: model.view.displayedRegions[0].assemblyName,\n                    },\n                  ])\n                }}\n              >\n                (top/bottom)\n              </Link>{' '}\n              <Link\n                href=\"#\"\n                onClick={event => {\n                  event.preventDefault()\n                  session.queueDialog(handleClose => [\n                    BreakendSingleLevelOptionDialog,\n                    {\n                      handleClose,\n                      model,\n                      feature: new SimpleFeature({ ...f1, mate: f2 }),\n                      // @ts-expect-error\n                      viewType,\n                      view: model.view,\n                      assemblyName: model.view.displayedRegions[0].assemblyName,\n                    },\n                  ])\n                }}\n              >\n                (single row)\n              </Link>\n            </li>\n          )\n        })}\n      </ul>\n    </div>\n  ) : null\n}\n","import { Feature, getSession } from '@jbrowse/core/util'\n\n// locals\nimport { featurizeSA, getClip, getLengthSansClipping } from '../MismatchParser'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { getTag } from '../util'\n\nexport interface ReducedFeature {\n  refName: string\n  start: number\n  clipPos: number\n  end: number\n  strand: number\n  seqLength: number\n  syntenyId?: number\n  uniqueId: string\n  mate: {\n    refName: string\n    start: number\n    end: number\n    syntenyId?: number\n    uniqueId?: string\n  }\n}\n\nexport async function getSAFeatures({\n  view,\n  feature,\n}: {\n  view: LinearGenomeViewModel\n  feature: Feature\n}) {\n  const { assemblyManager } = getSession(view)\n  const cigar = feature.get('CIGAR') as string\n  const origStrand = feature.get('strand') as number\n  const SA = (getTag(feature, 'SA') as string) || ''\n  const readName = feature.get('name') as string\n  const clipPos = getClip(cigar, 1)\n\n  // get the canonical refname for the read because if the read.get('refName')\n  // is chr1 and the actual fasta refName is 1 then no tracks can be opened on\n  // the top panel of the linear read vs ref\n  const assembly = await assemblyManager.waitForAssembly(view.assemblyNames[0]!)\n  if (!assembly) {\n    throw new Error('assembly not found')\n  }\n\n  const suppAlns = featurizeSA(SA, feature.id(), origStrand, readName, true)\n\n  const feat = feature.toJSON()\n  feat.clipPos = clipPos\n  feat.strand = 1\n\n  feat.mate = {\n    refName: readName,\n    start: clipPos,\n    end: clipPos + getLengthSansClipping(cigar),\n  }\n  const features = [feat, ...suppAlns] as ReducedFeature[]\n\n  features.forEach((f, idx) => {\n    f.refName = assembly.getCanonicalRefName(f.refName) || f.refName\n    f.syntenyId = idx\n    f.mate.syntenyId = idx\n    f.mate.uniqueId = `${f.uniqueId}_mate`\n  })\n  features.sort((a, b) => a.clipPos - b.clipPos)\n  return features\n}\n","import React from 'react'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { SimpleFeatureSerialized, getEnv, getSession } from '@jbrowse/core/util'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\nimport SupplementaryAlignmentsLocStrings from './SupplementaryAlignmentsLocStrings'\nimport LaunchBreakpointSplitViewPanel from './LaunchSupplementaryAlignmentBreakpointSplitViewPanel'\n\nexport default function SupplementaryAlignments(props: {\n  tag: string\n  model: AlignmentFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { model, tag, feature } = props\n  const session = getSession(model)\n  const { pluginManager } = getEnv(session)\n  let viewType: ViewType | undefined\n\n  try {\n    viewType = pluginManager.getViewType('BreakpointSplitView')\n  } catch (e) {\n    // ignore\n  }\n\n  return (\n    <BaseCard {...props} title=\"Supplementary alignments\">\n      <SupplementaryAlignmentsLocStrings model={model} tag={tag} />\n      {viewType ? (\n        <LaunchBreakpointSplitViewPanel\n          viewType={viewType}\n          model={model}\n          feature={feature}\n        />\n      ) : null}\n    </BaseCard>\n  )\n}\n"],"names":["SupplementaryAlignmentsLocStrings","tag","model","React","Typography","split","filter","SA","map","idx","saRef","saStart","saStrand","saCigar","saLength","getLengthOnRef","extra","Math","floor","start","end","sp","ep","locString","max","displayString","toLocaleString","key","Link","href","onClick","async","event","preventDefault","navToLoc","BreakendMultiLevelOptionDialog","lazy","BreakendSingleLevelOptionDialog","LaunchBreakpointSplitViewPanel","feature","viewType","session","getSession","view","res","setRes","useState","error","setError","useEffect","feats","assemblyManager","cigar","get","origStrand","getTag","readName","clipPos","getClip","assembly","waitForAssembly","assemblyNames","Error","suppAlns","featurizeSA","id","feat","toJSON","strand","mate","refName","getLengthSansClipping","features","forEach","f","getCanonicalRefName","syntenyId","uniqueId","sort","a","b","getSAFeatures","SimpleFeature","e","console","ret","i","length","push","ErrorMessage","arg","index","f1","f2","JSON","stringify","toLocale","queueDialog","handleClose","assemblyName","displayedRegions","SupplementaryAlignments","props","pluginManager","getEnv","getViewType","BaseCard","_extends","title"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5746.39e4296b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5746],{5746:(e,l,t)=>{t.r(l),t.d(l,{default:()=>x});var a=t(7552),n=t(68446),o=t(29499),r=t(9937),s=t(36715),c=t(98360),m=t(29629),i=t(58507),u=t(5401),E=t(75785),b=t(49823),p=t(91194),d=t(84495);const k=(0,E.n9)()({flexItem:{display:"flex",alignItems:"center",gap:"5px"},container:{display:"flex",flexFlow:"column",gap:"5px"}}),x=(0,n.observer)((function({model:e,onClose:l}){const{classes:t}=k(),[n,E]=(0,a.useState)("BED"),{selectedBookmarks:x}=e,w=0===x.length;return a.createElement(b.Dialog,{open:!0,onClose:l,title:"Export bookmarks"},a.createElement(o.A,{className:t.container},a.createElement(r.A,{severity:"info"},w?a.createElement(a.Fragment,null,a.createElement("span",null,"All bookmarks will be exported."),a.createElement("br",null),a.createElement("span",null,"Use the checkboxes to select individual bookmarks to export.")):"Only selected bookmarks will be exported."),a.createElement("div",{className:t.flexItem},a.createElement(s.A,null,"Format to download:"),a.createElement(c.A,{size:"small",value:n,onChange:e=>{E(e.target.value)}},a.createElement(m.A,{value:"BED"},"BED"),a.createElement(m.A,{value:"TSV"},"TSV")))),a.createElement(i.A,null,a.createElement(u.A,{variant:"contained",color:"primary",startIcon:a.createElement(p.A,null),onClick:()=>{(0,d.fU)(n,e),l(!1)}},"Download")))}))}}]);
+//# sourceMappingURL=5746.39e4296b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5746.39e4296b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5746.39e4296b.chunk.js","mappings":"sSAsBA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,SAAU,CACRC,QAAS,OACTC,WAAY,SACZC,IAAK,OAEPC,UAAW,CACTH,QAAS,OACTI,SAAU,SACVF,IAAK,SA6DT,GAzD8BG,EAAAA,EAAAA,WAAS,UAA+B,MACpEC,EAAK,QACLC,IAKA,MAAM,QAAEC,GAAYX,KACbY,EAAUC,IAAeC,EAAAA,EAAAA,UAAS,QACnC,kBAAEC,GAAsBN,EACxBO,EAAyC,IAA7BD,EAAkBE,OACpC,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACV,QAASA,EAASW,MAAM,oBACnCH,EAAAA,cAACI,EAAAA,EAAa,CAACC,UAAWZ,EAAQL,WAChCY,EAAAA,cAACM,EAAAA,EAAK,CAACC,SAAS,QACbT,EACCE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,YAAM,mCACNA,EAAAA,cAAA,WACAA,EAAAA,cAAA,YAAM,iEAKR,6CAGJA,EAAAA,cAAA,OAAKK,UAAWZ,EAAQT,UACtBgB,EAAAA,cAACQ,EAAAA,EAAU,KAAC,uBACZR,EAAAA,cAACS,EAAAA,EAAM,CACLC,KAAK,QACLC,MAAOjB,EACPkB,SAAUC,IACRlB,EAAYkB,EAAMC,OAAOH,MAAM,GAGjCX,EAAAA,cAACe,EAAAA,EAAQ,CAACJ,MAAM,OAAM,OACtBX,EAAAA,cAACe,EAAAA,EAAQ,CAACJ,MAAM,OAAM,UAI5BX,EAAAA,cAACgB,EAAAA,EAAa,KACZhB,EAAAA,cAACiB,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,UACNC,UAAWpB,EAAAA,cAACqB,EAAAA,EAAU,MACtBC,QAASA,MACPC,EAAAA,EAAAA,IAAqB7B,EAAUH,GAC/BC,GAAQ,EAAM,GAEjB,aAMT,G","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  MenuItem,\n  Select,\n  Typography,\n  Alert,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { Dialog } from '@jbrowse/core/ui'\n\n// Icons\nimport GetAppIcon from '@mui/icons-material/GetApp'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\nimport { downloadBookmarkFile } from '../../utils'\n\nconst useStyles = makeStyles()({\n  flexItem: {\n    display: 'flex',\n    alignItems: 'center',\n    gap: '5px',\n  },\n  container: {\n    display: 'flex',\n    flexFlow: 'column',\n    gap: '5px',\n  },\n})\n\nconst ExportBookmarksDialog = observer(function ExportBookmarksDialog({\n  model,\n  onClose,\n}: {\n  model: GridBookmarkModel\n  onClose: (arg: boolean) => void\n}) {\n  const { classes } = useStyles()\n  const [fileType, setFileType] = useState('BED')\n  const { selectedBookmarks } = model\n  const exportAll = selectedBookmarks.length === 0\n  return (\n    <Dialog open onClose={onClose} title=\"Export bookmarks\">\n      <DialogContent className={classes.container}>\n        <Alert severity=\"info\">\n          {exportAll ? (\n            <>\n              <span>All bookmarks will be exported.</span>\n              <br />\n              <span>\n                Use the checkboxes to select individual bookmarks to export.\n              </span>\n            </>\n          ) : (\n            'Only selected bookmarks will be exported.'\n          )}\n        </Alert>\n        <div className={classes.flexItem}>\n          <Typography>Format to download:</Typography>\n          <Select\n            size=\"small\"\n            value={fileType}\n            onChange={event => {\n              setFileType(event.target.value)\n            }}\n          >\n            <MenuItem value=\"BED\">BED</MenuItem>\n            <MenuItem value=\"TSV\">TSV</MenuItem>\n          </Select>\n        </div>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          startIcon={<GetAppIcon />}\n          onClick={() => {\n            downloadBookmarkFile(fileType, model)\n            onClose(false)\n          }}\n        >\n          Download\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\nexport default ExportBookmarksDialog\n"],"names":["useStyles","makeStyles","flexItem","display","alignItems","gap","container","flexFlow","observer","model","onClose","classes","fileType","setFileType","useState","selectedBookmarks","exportAll","length","React","Dialog","open","title","DialogContent","className","Alert","severity","Typography","Select","size","value","onChange","event","target","MenuItem","DialogActions","Button","variant","color","startIcon","GetAppIcon","onClick","downloadBookmarkFile"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5763.48010c9a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,53 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5763],{84421:(r,e,t)=>{t.d(e,{A:()=>x});var a=t(7552),o=t(93878),n=t(70799),i=t(72639),s=t(93876),l=t(64761),b=t(51148),p=t(60129),u=t(58520),d=t(4785),f=t(15622),c=t(50077),m=t(69500);const v=l.i7`
+  0% {
+    left: -35%;
+    right: 100%;
+  }
+
+  60% {
+    left: 100%;
+    right: -90%;
+  }
+
+  100% {
+    left: 100%;
+    right: -90%;
+  }
+`,y="string"!=typeof v?l.AH`
+        animation: ${v} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+      `:null,g=l.i7`
+  0% {
+    left: -200%;
+    right: 100%;
+  }
+
+  60% {
+    left: 107%;
+    right: -8%;
+  }
+
+  100% {
+    left: 107%;
+    right: -8%;
+  }
+`,h="string"!=typeof g?l.AH`
+        animation: ${g} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;
+      `:null,A=l.i7`
+  0% {
+    opacity: 1;
+    background-position: 0 -23px;
+  }
+
+  60% {
+    opacity: 0;
+    background-position: 0 -23px;
+  }
+
+  100% {
+    opacity: 1;
+    background-position: -200px -23px;
+  }
+`,w="string"!=typeof A?l.AH`
+        animation: ${A} 3s infinite linear;
+      `:null,C=(r,e)=>r.vars?r.vars.palette.LinearProgress[`${e}Bg`]:"light"===r.palette.mode?(0,i.a)(r.palette[e].main,.62):(0,i.e$)(r.palette[e].main,.5),$=(0,b.Ay)("span",{name:"MuiLinearProgress",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[`color${(0,f.A)(t.color)}`],e[t.variant]]}})((0,p.A)((({theme:r})=>({position:"relative",overflow:"hidden",display:"block",height:4,zIndex:0,"@media print":{colorAdjust:"exact"},variants:[...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{color:e},style:{backgroundColor:C(r,e)}}))),{props:({ownerState:r})=>"inherit"===r.color&&"buffer"!==r.variant,style:{"&::before":{content:'""',position:"absolute",left:0,top:0,right:0,bottom:0,backgroundColor:"currentColor",opacity:.3}}},{props:{variant:"buffer"},style:{backgroundColor:"transparent"}},{props:{variant:"query"},style:{transform:"rotate(180deg)"}}]})))),k=(0,b.Ay)("span",{name:"MuiLinearProgress",slot:"Dashed",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.dashed,e[`dashedColor${(0,f.A)(t.color)}`]]}})((0,p.A)((({theme:r})=>({position:"absolute",marginTop:0,height:"100%",width:"100%",backgroundSize:"10px 10px",backgroundPosition:"0 -23px",variants:[{props:{color:"inherit"},style:{opacity:.3,backgroundImage:"radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)"}},...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>{const t=C(r,e);return{props:{color:e},style:{backgroundImage:`radial-gradient(${t} 0%, ${t} 16%, transparent 42%)`}}}))]}))),w||{animation:`${A} 3s infinite linear`}),S=(0,b.Ay)("span",{name:"MuiLinearProgress",slot:"Bar1",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.bar,e[`barColor${(0,f.A)(t.color)}`],("indeterminate"===t.variant||"query"===t.variant)&&e.bar1Indeterminate,"determinate"===t.variant&&e.bar1Determinate,"buffer"===t.variant&&e.bar1Buffer]}})((0,p.A)((({theme:r})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[{props:{color:"inherit"},style:{backgroundColor:"currentColor"}},...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{color:e},style:{backgroundColor:(r.vars||r).palette[e].main}}))),{props:{variant:"determinate"},style:{transition:"transform .4s linear"}},{props:{variant:"buffer"},style:{zIndex:1,transition:"transform .4s linear"}},{props:({ownerState:r})=>"indeterminate"===r.variant||"query"===r.variant,style:{width:"auto"}},{props:({ownerState:r})=>"indeterminate"===r.variant||"query"===r.variant,style:y||{animation:`${v} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`}}]})))),P=(0,b.Ay)("span",{name:"MuiLinearProgress",slot:"Bar2",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.bar,e[`barColor${(0,f.A)(t.color)}`],("indeterminate"===t.variant||"query"===t.variant)&&e.bar2Indeterminate,"buffer"===t.variant&&e.bar2Buffer]}})((0,p.A)((({theme:r})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{color:e},style:{"--LinearProgressBar2-barColor":(r.vars||r).palette[e].main}}))),{props:({ownerState:r})=>"buffer"!==r.variant&&"inherit"!==r.color,style:{backgroundColor:"var(--LinearProgressBar2-barColor, currentColor)"}},{props:{color:"inherit"},style:{opacity:.3}},...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{color:e,variant:"buffer"},style:{backgroundColor:C(r,e),transition:"transform .4s linear"}}))),{props:({ownerState:r})=>"indeterminate"===r.variant||"query"===r.variant,style:{width:"auto"}},{props:({ownerState:r})=>"indeterminate"===r.variant||"query"===r.variant,style:h||{animation:`${g} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`}}]})))),x=a.forwardRef((function(r,e){const t=(0,d.b)({props:r,name:"MuiLinearProgress"}),{className:a,color:i="primary",value:l,valueBuffer:b,variant:p="indeterminate",...u}=t,v={...t,color:i,variant:p},y=(r=>{const{classes:e,variant:t,color:a}=r,o={root:["root",`color${(0,f.A)(a)}`,t],dashed:["dashed",`dashedColor${(0,f.A)(a)}`],bar1:["bar",`barColor${(0,f.A)(a)}`,("indeterminate"===t||"query"===t)&&"bar1Indeterminate","determinate"===t&&"bar1Determinate","buffer"===t&&"bar1Buffer"],bar2:["bar","buffer"!==t&&`barColor${(0,f.A)(a)}`,"buffer"===t&&`color${(0,f.A)(a)}`,("indeterminate"===t||"query"===t)&&"bar2Indeterminate","buffer"===t&&"bar2Buffer"]};return(0,n.A)(o,c.l,e)})(v),g=(0,s.I)(),h={},A={bar1:{},bar2:{}};if(("determinate"===p||"buffer"===p)&&void 0!==l){h["aria-valuenow"]=Math.round(l),h["aria-valuemin"]=0,h["aria-valuemax"]=100;let r=l-100;g&&(r=-r),A.bar1.transform=`translateX(${r}%)`}if("buffer"===p&&void 0!==b){let r=(b||0)-100;g&&(r=-r),A.bar2.transform=`translateX(${r}%)`}return(0,m.jsxs)($,{className:(0,o.A)(y.root,a),ownerState:v,role:"progressbar",...h,ref:e,...u,children:["buffer"===p?(0,m.jsx)(k,{className:y.dashed,ownerState:v}):null,(0,m.jsx)(S,{className:y.bar1,ownerState:v,style:A.bar1}),"determinate"===p?null:(0,m.jsx)(P,{className:y.bar2,ownerState:v,style:A.bar2})]})}))},45763:(r,e,t)=>{t.r(e),t.d(e,{default:()=>a.A,getLinearProgressUtilityClass:()=>o.l,linearProgressClasses:()=>o.A});var a=t(84421),o=t(50077)},50077:(r,e,t)=>{t.d(e,{A:()=>i,l:()=>n});var a=t(33761),o=t(85693);function n(r){return(0,o.Ay)("MuiLinearProgress",r)}const i=(0,a.A)("MuiLinearProgress",["root","colorPrimary","colorSecondary","determinate","indeterminate","buffer","query","dashed","dashedColorPrimary","dashedColorSecondary","bar","barColorPrimary","barColorSecondary","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer"])}}]);
+//# sourceMappingURL=5763.48010c9a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5763.48010c9a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5763.48010c9a.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/LinearProgress/LinearProgress.js","../../../node_modules/@mui/material/LinearProgress/linearProgressClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { getLinearProgressUtilityClass } from \"./linearProgressClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes`\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst indeterminate1Animation = typeof indeterminate1Keyframe !== 'string' ? css`\n        animation: ${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n      ` : null;\nconst indeterminate2Keyframe = keyframes`\n  0% {\n    left: -200%;\n    right: 100%;\n  }\n\n  60% {\n    left: 107%;\n    right: -8%;\n  }\n\n  100% {\n    left: 107%;\n    right: -8%;\n  }\n`;\nconst indeterminate2Animation = typeof indeterminate2Keyframe !== 'string' ? css`\n        animation: ${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n      ` : null;\nconst bufferKeyframe = keyframes`\n  0% {\n    opacity: 1;\n    background-position: 0 -23px;\n  }\n\n  60% {\n    opacity: 0;\n    background-position: 0 -23px;\n  }\n\n  100% {\n    opacity: 1;\n    background-position: -200px -23px;\n  }\n`;\nconst bufferAnimation = typeof bufferKeyframe !== 'string' ? css`\n        animation: ${bufferKeyframe} 3s infinite linear;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, variant],\n    dashed: ['dashed', `dashedColor${capitalize(color)}`],\n    bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n    bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n  };\n  return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n  if (theme.vars) {\n    return theme.vars.palette.LinearProgress[`${color}Bg`];\n  }\n  return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  overflow: 'hidden',\n  display: 'block',\n  height: 4,\n  // Fix Safari's bug during composition of different paint.\n  zIndex: 0,\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color)\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.color === 'inherit' && ownerState.variant !== 'buffer',\n    style: {\n      '&::before': {\n        content: '\"\"',\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'currentColor',\n        opacity: 0.3\n      }\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: 'transparent'\n    }\n  }, {\n    props: {\n      variant: 'query'\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n})));\nconst LinearProgressDashed = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Dashed',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  marginTop: 0,\n  height: '100%',\n  width: '100%',\n  backgroundSize: '10px 10px',\n  backgroundPosition: '0 -23px',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3,\n      backgroundImage: `radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => {\n    const backgroundColor = getColorShade(theme, color);\n    return {\n      props: {\n        color\n      },\n      style: {\n        backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`\n      }\n    };\n  })]\n})), bufferAnimation || {\n  // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n  animation: `${bufferKeyframe} 3s infinite linear`\n});\nconst LinearProgressBar1 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar1',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      backgroundColor: 'currentColor'\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      zIndex: 1,\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate1Animation || {\n      animation: `${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`\n    }\n  }]\n})));\nconst LinearProgressBar2 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar2',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      '--LinearProgressBar2-barColor': (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant !== 'buffer' && ownerState.color !== 'inherit',\n    style: {\n      backgroundColor: 'var(--LinearProgressBar2-barColor, currentColor)'\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color),\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate2Animation || {\n      animation: `${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLinearProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    value,\n    valueBuffer,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const isRtl = useRtl();\n  const rootProps = {};\n  const inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      let transform = value - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar1.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      let transform = (valueBuffer || 0) - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar2.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(LinearProgressRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"progressbar\",\n    ...rootProps,\n    ref: ref,\n    ...other,\n    children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n      className: classes.dashed,\n      ownerState: ownerState\n    }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n      className: classes.bar1,\n      ownerState: ownerState,\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n      className: classes.bar2,\n      ownerState: ownerState,\n      style: inlineStyles.bar2\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;"],"names":["indeterminate1Keyframe","indeterminate1Animation","indeterminate2Keyframe","indeterminate2Animation","bufferKeyframe","bufferAnimation","getColorShade","theme","color","vars","palette","LinearProgress","mode","main","LinearProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","position","overflow","display","height","zIndex","colorAdjust","variants","Object","entries","filter","map","style","backgroundColor","content","left","top","right","bottom","opacity","transform","LinearProgressDashed","dashed","marginTop","width","backgroundSize","backgroundPosition","backgroundImage","animation","LinearProgressBar1","bar","bar1Indeterminate","bar1Determinate","bar1Buffer","transition","transformOrigin","LinearProgressBar2","bar2Indeterminate","bar2Buffer","inProps","ref","className","value","valueBuffer","other","classes","slots","bar1","bar2","useUtilityClasses","isRtl","rootProps","inlineStyles","undefined","Math","round","role","children","getLinearProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5896.622b5e88.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5896],{35896:(e,n,t)=>{t.r(n),t.d(n,{default:()=>s});var l=t(7552),o=t(29499),c=t(99123),a=t(58507),r=t(5401),i=t(49823);const s=(0,t(68446).observer)((function({deleteDialogDetails:e,session:n,handleClose:t}){const{connectionConf:s,name:u}=e;return l.createElement(i.Dialog,{open:!0,title:`Delete connection "${u}"`},l.createElement(o.A,null,l.createElement(c.A,null,"Are you sure you want to delete this connection?")),l.createElement(a.A,null,l.createElement(r.A,{onClick:()=>{t()},color:"primary"},"Cancel"),l.createElement(r.A,{variant:"contained",color:"primary",onClick:()=>{n.deleteConnection?.(s),t()}},"OK")))}))}}]);
+//# sourceMappingURL=5896.622b5e88.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5896.622b5e88.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5896.622b5e88.chunk.js","mappings":"2NAYA,MA4CA,GA5C+BA,E,SAAAA,WAAS,UAAgC,oBACtEC,EAAmB,QACnBC,EAAO,YACPC,IASA,MAAM,eAAEC,EAAc,KAAEC,GAASJ,EACjC,OACEK,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,MAAO,sBAAsBJ,MACxCC,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAiB,KAAC,qDAIrBL,EAAAA,cAACM,EAAAA,EAAa,KACZN,EAAAA,cAACO,EAAAA,EAAM,CACLC,QAASA,KACPX,GAAa,EAEfY,MAAM,WACP,UAGDT,EAAAA,cAACO,EAAAA,EAAM,CACLG,QAAQ,YACRD,MAAM,UACND,QAASA,KACPZ,EAAQe,mBAAmBb,GAC3BD,GAAa,GAEhB,OAMT,G","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  DialogContent,\n  DialogContentText,\n  DialogActions,\n  Button,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\nconst DeleteConnectionDialog = observer(function DeleteConnectionDialog({\n  deleteDialogDetails,\n  session,\n  handleClose,\n}: {\n  deleteDialogDetails: {\n    name: string\n    connectionConf: AnyConfigurationModel\n  }\n  session: AbstractSessionModel\n  handleClose: () => void\n}) {\n  const { connectionConf, name } = deleteDialogDetails\n  return (\n    <Dialog open title={`Delete connection \"${name}\"`}>\n      <DialogContent>\n        <DialogContentText>\n          Are you sure you want to delete this connection?\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            session.deleteConnection?.(connectionConf)\n            handleClose()\n          }}\n        >\n          OK\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default DeleteConnectionDialog\n"],"names":["observer","deleteDialogDetails","session","handleClose","connectionConf","name","React","Dialog","open","title","DialogContent","DialogContentText","DialogActions","Button","onClick","color","variant","deleteConnection"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5903.9145cef7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5903],{2141:(e,a,t)=>{t.d(a,{L:()=>g,q:()=>h});var n=t(7552),o=t(68446),i=t(29499),r=t(58507),s=t(5401),l=t(36422),c=t(49823),m=t(42489),d=t(99546),p=t(33371),w=t(32808);const b=(0,t(75785).n9)()({block:{display:"block"}});function v({checked:e,disabled:a,label:t,onChange:o}){const{classes:i}=b();return n.createElement(p.A,{disabled:a,className:i.block,control:n.createElement(w.A,{checked:e,onChange:o}),label:t})}function y(e){return e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))})))}const g=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:p,view:w}){const[b,g]=(0,n.useState)(!0),[k,h]=(0,n.useState)(!0);return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Multi-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:b,label:"Copy tracks into the new view",onChange:e=>{g(e.target.checked)}}),b?n.createElement(v,{checked:k,disabled:!b,label:"Mirror the copied tracks (only available if copying tracks and using two level)",onChange:e=>{h(e.target.checked)}}):null),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{(async()=>{const a=(0,d.getSession)(e);try{const e=await a.assemblyManager.waitForAssembly(o);if(!e)throw new Error(`assembly ${o} not found`);const{refName:n,pos:i,mateRefName:r,matePos:s}=p.getBreakendCoveringRegions({feature:t,assembly:e}),c=(0,l.getSnapshot)(w.tracks),d=a.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",hideHeader:!0,tracks:y((0,l.getSnapshot)(w.tracks))},{type:"LinearGenomeView",hideHeader:!0,tracks:y(k?[...c].reverse():c)}]}),b=e.regions.find((e=>e.refName===n)),v=e.regions.find((e=>e.refName===r));if(!b||!v)throw new Error("can't find regions");await Promise.all([d.views[0].navToLocations([{refName:n,start:b.start,end:i,assemblyName:o},{refName:n,start:i+1,end:b.end,assemblyName:o}]),d.views[1].navToLocations([{refName:r,start:v.start,end:s,assemblyName:o},{refName:r,start:s+1,end:v.end,assemblyName:o}])]),await(0,m.when)((()=>d.views[1].initialized&&d.views[0].initialized)),d.views[1].zoomTo(10),d.views[0].zoomTo(10),d.views[1].centerAt(s,r),d.views[0].centerAt(i,n)}catch(e){console.error(e),a.notify(`${e}`)}})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}));var k=t(1343);const h=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:m,view:p}){const[w,b]=(0,n.useState)(!0),[y,g]=(0,d.useLocalStorage)("breakpointWindowSize","5000");return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Single-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:w,label:"Copy tracks into the new view",onChange:e=>{b(e.target.checked)}}),n.createElement(k.A,{label:"Window size (bp)",value:y,onChange:e=>{g(e.target.value)}})),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{const n=(0,d.getSession)(e);(async()=>{try{const a=n.assemblyManager.get(o),i=+y;if(Number.isNaN(i))throw new Error("windowSize not a number");const{refName:r,pos:s,mateRefName:c,matePos:w}=m.getBreakendCoveringRegions({feature:t,assembly:a}),b=n.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",tracks:(e=(0,l.getSnapshot)(p.tracks),e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))}))))}]});await b.views[0].navToLocations((0,d.gatherOverlaps)([{refName:r,start:Math.max(0,s-i),end:s+i,assemblyName:o},{refName:c,start:Math.max(0,w-i),end:w+i,assemblyName:o}],i))}catch(e){console.error(e),n.notify(`${e}`)}var e})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}))},25903:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n.q});var n=t(2141)}}]);
+//# sourceMappingURL=5903.9145cef7.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5903.9145cef7.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5903.9145cef7.chunk.js","mappings":"4QAIA,MAAMA,GAAYC,E,SAAAA,KAAAA,CAAa,CAC7BC,MAAO,CACLC,QAAS,WAIE,SAASC,GAAU,QAChCC,EAAO,SACPC,EAAQ,MACRC,EAAK,SACLC,IAOA,MAAM,QAAEC,GAAYT,IACpB,OACEU,EAAAA,cAACC,EAAAA,EAAgB,CACfL,SAAUA,EACVM,UAAWH,EAAQP,MACnBW,QAASH,EAAAA,cAACI,EAAAA,EAAQ,CAACT,QAASA,EAASG,SAAUA,IAC/CD,MAAOA,GAGb,CCPA,SAASQ,EAASC,GAChB,OAAOA,EAAIC,KAAI,EAAGC,KAAIC,cAAaC,MAAW,IACzCA,EACHD,SAAUA,EAASF,KAAI,EAAGC,QAAOE,KAAWA,OAEhD,CAEA,MAyKA,GAzKuCC,EAAAA,EAAAA,WAAS,UAAU,MACxDC,EAAK,YACLC,EAAW,QACXC,EAAO,aACPC,EAAY,SACZC,EAAQ,KACRC,IAmBA,MAAOC,EAAYC,IAAiBC,EAAAA,EAAAA,WAAS,IACtCC,EAAQC,IAAaF,EAAAA,EAAAA,WAAS,GAErC,OACEpB,EAAAA,cAACuB,EAAAA,OAAM,CACLC,MAAI,EACJC,QAASZ,EACTa,MAAM,6CAEN1B,EAAAA,cAAC2B,EAAAA,EAAa,KACZ3B,EAAAA,cAACN,EAAS,CACRC,QAASuB,EACTrB,MAAM,gCACNC,SAAU8B,IACRT,EAAcS,EAAMC,OAAOlC,QAAQ,IAItCuB,EACClB,EAAAA,cAACN,EAAS,CACRC,QAAS0B,EACTzB,UAAWsB,EACXrB,MAAM,kFACNC,SAAU8B,IACRN,EAAUM,EAAMC,OAAOlC,QAAQ,IAGjC,MAENK,EAAAA,cAAC8B,EAAAA,EAAa,KACZ9B,EAAAA,cAAC+B,EAAAA,EAAM,CACLC,QAASA,KAEN,WACC,MAAMC,GAAUC,EAAAA,EAAAA,YAAWtB,GAC3B,IACE,MAAMuB,QACEF,EAAQG,gBAAgBC,gBAAgBtB,GAChD,IAAKoB,EACH,MAAM,IAAIG,MAAM,YAAYvB,eAG9B,MAAM,QAAEwB,EAAO,IAAEC,EAAG,YAAEC,EAAW,QAAEC,GACjC1B,EAAS2B,2BAA2B,CAClC7B,UACA8B,SAAUT,IAGRU,GAAaC,EAAAA,EAAAA,aAAY7B,EAAK8B,QAC9BC,EAAsBf,EAAQgB,QAClC,sBACA,CACEC,KAAM,sBACNC,YAAa,GACXrC,EAAQsC,IAAI,SAAWtC,EAAQsC,IAAI,OAAS,0BAG9CC,MAAO,CACL,CACEH,KAAM,mBACNI,YAAY,EACZP,OAAQ1C,GAASyC,EAAAA,EAAAA,aAAY7B,EAAK8B,UAEpC,CACEG,KAAM,mBACNI,YAAY,EACZP,OAAQ1C,EACNgB,EAAS,IAAIwB,GAAYU,UAAYV,OAMzCW,EAAKrB,EAAIsB,QAASC,MAAKC,GAAKA,EAAEpB,UAAYA,IAC1CqB,EAAKzB,EAAIsB,QAASC,MAAKC,GAAKA,EAAEpB,UAAYE,IAChD,IAAKe,IAAOI,EACV,MAAM,IAAItB,MAAM,4BAEZuB,QAAQC,IAAI,CAChBd,EAAoBK,MAAM,GAAIU,eAAe,CAC3C,CACExB,UACAyB,MAAOR,EAAGQ,MACVC,IAAKzB,EACLzB,gBAEF,CACEwB,UACAyB,MAAOxB,EAAM,EACbyB,IAAKT,EAAGS,IACRlD,kBAGJiC,EAAoBK,MAAM,GAAIU,eAAe,CAC3C,CACExB,QAASE,EACTuB,MAAOJ,EAAGI,MACVC,IAAKvB,EACL3B,gBAEF,CACEwB,QAASE,EACTuB,MAAOtB,EAAU,EACjBuB,IAAKL,EAAGK,IACRlD,0BAIAmD,EAAAA,EAAAA,OACJ,IACElB,EAAoBK,MAAM,GAAIc,aAC9BnB,EAAoBK,MAAM,GAAIc,cAElCnB,EAAoBK,MAAM,GAAIe,OAAO,IACrCpB,EAAoBK,MAAM,GAAIe,OAAO,IACrCpB,EAAoBK,MAAM,GAAIgB,SAAS3B,EAASD,GAChDO,EAAoBK,MAAM,GAAIgB,SAAS7B,EAAKD,EAC9C,CAAE,MAAO+B,GACPC,QAAQC,MAAMF,GACdrC,EAAQwC,OAAO,GAAGH,IACpB,CACD,EAxFA,GAyFDzD,GAAa,EAEf6D,QAAQ,YACRC,MAAM,UACNC,WAAS,GACV,MAGD5E,EAAAA,cAAC+B,EAAAA,EAAM,CACL4C,MAAM,YACND,QAAQ,YACR1C,QAASA,KACPnB,GAAa,GAEhB,WAMT,I,cCnKA,MAoIA,GApIwCF,EAAAA,EAAAA,WAAS,UAAU,MACzDC,EAAK,YACLC,EAAW,QACXC,EAAO,aACPC,EAAY,SACZC,EAAQ,KACRC,IAmBA,MAAOC,EAAYC,IAAiBC,EAAAA,EAAAA,WAAS,IACtCyD,EAAYC,IAAiBC,EAAAA,EAAAA,iBAClC,uBACA,QAGF,OACE/E,EAAAA,cAACuB,EAAAA,OAAM,CACLC,MAAI,EACJC,QAASZ,EACTa,MAAM,8CAEN1B,EAAAA,cAAC2B,EAAAA,EAAa,KACZ3B,EAAAA,cAACN,EAAS,CACRC,QAASuB,EACTrB,MAAM,gCACNC,SAAU8B,IACRT,EAAcS,EAAMC,OAAOlC,QAAQ,IAIvCK,EAAAA,cAACgF,EAAAA,EAAS,CACRnF,MAAM,mBACNoF,MAAOJ,EACP/E,SAAU8B,IACRkD,EAAclD,EAAMC,OAAOoD,MAAM,KAIvCjF,EAAAA,cAAC8B,EAAAA,EAAa,KACZ9B,EAAAA,cAAC+B,EAAAA,EAAM,CACLC,QAASA,KACP,MAAMC,GAAUC,EAAAA,EAAAA,YAAWtB,GAE1B,WACC,IACE,MAAMgC,EAAWX,EAAQG,gBAAgBgB,IAAIrC,GACvCmE,GAAKL,EACX,GAAIM,OAAOC,MAAMF,GACf,MAAM,IAAI5C,MAAM,2BAElB,MAAM,QAAEC,EAAO,IAAEC,EAAG,YAAEC,EAAW,QAAEC,GAEjC1B,EAAS2B,2BAA2B,CAAE7B,UAAS8B,aAE3CI,EAAsBf,EAAQgB,QAClC,sBACA,CACEC,KAAM,sBACNC,YAAa,GACXrC,EAAQsC,IAAI,SAAWtC,EAAQsC,IAAI,OAAS,0BAE9CC,MAAO,CACL,CACEH,KAAM,mBACNH,QAvFNzC,GAuFuBwC,EAAAA,EAAAA,aAAY7B,EAAK8B,QAtFjDzC,EAAIC,KAAI,EAAGC,KAAIC,cAAaC,MAAW,IACzCA,EACHD,SAAUA,EAASF,KAAI,EAAGC,QAAOE,KAAWA,mBA0F1BsC,EAAoBK,MAAM,GAAIU,gBAClCsB,EAAAA,EAAAA,gBACE,CACE,CACE9C,UACAyB,MAAOsB,KAAKC,IAAI,EAAG/C,EAAM0C,GACzBjB,IAAKzB,EAAM0C,EACXnE,gBAEF,CACEwB,QAASE,EACTuB,MAAOsB,KAAKC,IAAI,EAAG7C,EAAUwC,GAC7BjB,IAAKvB,EAAUwC,EACfnE,iBAGJmE,GAGN,CAAE,MAAOZ,GACPC,QAAQC,MAAMF,GACdrC,EAAQwC,OAAO,GAAGH,IACpB,CAnHd,IAAkBhE,CAoHL,EAlDA,GAmDDO,GAAa,EAEf6D,QAAQ,YACRC,MAAM,UACNC,WAAS,GACV,MAGD5E,EAAAA,cAAC+B,EAAAA,EAAM,CACL4C,MAAM,YACND,QAAQ,YACR1C,QAASA,KACPnB,GAAa,GAEhB,WAMT,G","sources":["../../../packages/sv-core/src/Checkbox2.tsx","../../../packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx","../../../packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, FormControlLabel } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  block: {\n    display: 'block',\n  },\n})\n\nexport default function Checkbox2({\n  checked,\n  disabled,\n  label,\n  onChange,\n}: {\n  checked: boolean\n  disabled?: boolean\n  label: string\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <FormControlLabel\n      disabled={disabled}\n      className={classes.block}\n      control={<Checkbox checked={checked} onChange={onChange} />}\n      label={label}\n    />\n  )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { when } from 'mobx'\nimport { getSession, Feature } from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendMultiLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [mirror, setMirror] = useState(true)\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Multi-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        {copyTracks ? (\n          <Checkbox2\n            checked={mirror}\n            disabled={!copyTracks}\n            label=\"Mirror the copied tracks (only available if copying tracks and using two level)\"\n            onChange={event => {\n              setMirror(event.target.checked)\n            }}\n          />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              const session = getSession(model)\n              try {\n                const asm =\n                  await session.assemblyManager.waitForAssembly(assemblyName)\n                if (!asm) {\n                  throw new Error(`assembly ${assemblyName} not found`)\n                }\n\n                const { refName, pos, mateRefName, matePos } =\n                  viewType.getBreakendCoveringRegions({\n                    feature,\n                    assembly: asm,\n                  })\n\n                const viewTracks = getSnapshot(view.tracks) as Track[]\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(\n                          mirror ? [...viewTracks].reverse() : viewTracks,\n                        ),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n                const r1 = asm.regions!.find(r => r.refName === refName)\n                const r2 = asm.regions!.find(r => r.refName === mateRefName)\n                if (!r1 || !r2) {\n                  throw new Error(\"can't find regions\")\n                }\n                await Promise.all([\n                  breakpointSplitView.views[0]!.navToLocations([\n                    {\n                      refName,\n                      start: r1.start,\n                      end: pos,\n                      assemblyName,\n                    },\n                    {\n                      refName,\n                      start: pos + 1,\n                      end: r1.end,\n                      assemblyName,\n                    },\n                  ]),\n                  breakpointSplitView.views[1]!.navToLocations([\n                    {\n                      refName: mateRefName,\n                      start: r2.start,\n                      end: matePos,\n                      assemblyName,\n                    },\n                    {\n                      refName: mateRefName,\n                      start: matePos + 1,\n                      end: r2.end,\n                      assemblyName,\n                    },\n                  ]),\n                ])\n                await when(\n                  () =>\n                    breakpointSplitView.views[1]!.initialized &&\n                    breakpointSplitView.views[0]!.initialized,\n                )\n                breakpointSplitView.views[1]!.zoomTo(10)\n                breakpointSplitView.views[0]!.zoomTo(10)\n                breakpointSplitView.views[1]!.centerAt(matePos, mateRefName)\n                breakpointSplitView.views[0]!.centerAt(pos, refName)\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendMultiLevelOptionDialog\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, TextField } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  Feature,\n  gatherOverlaps,\n  useLocalStorage,\n} from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendSingleLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [windowSize, setWindowSize] = useLocalStorage(\n    'breakpointWindowSize',\n    '5000',\n  )\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Single-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        <TextField\n          label=\"Window size (bp)\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            const session = getSession(model)\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                const assembly = session.assemblyManager.get(assemblyName)\n                const w = +windowSize\n                if (Number.isNaN(w)) {\n                  throw new Error('windowSize not a number')\n                }\n                const { refName, pos, mateRefName, matePos } =\n                  // @ts-expect-error\n                  viewType.getBreakendCoveringRegions({ feature, assembly })\n\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n\n                await breakpointSplitView.views[0]!.navToLocations(\n                  gatherOverlaps(\n                    [\n                      {\n                        refName,\n                        start: Math.max(0, pos - w),\n                        end: pos + w,\n                        assemblyName,\n                      },\n                      {\n                        refName: mateRefName,\n                        start: Math.max(0, matePos - w),\n                        end: matePos + w,\n                        assemblyName,\n                      },\n                    ],\n                    w,\n                  ),\n                )\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendSingleLevelOptionDialog\n"],"names":["useStyles","makeStyles","block","display","Checkbox2","checked","disabled","label","onChange","classes","React","FormControlLabel","className","control","Checkbox","stripIds","arr","map","id","displays","rest","observer","model","handleClose","feature","assemblyName","viewType","view","copyTracks","setCopyTracks","useState","mirror","setMirror","Dialog","open","onClose","title","DialogContent","event","target","DialogActions","Button","onClick","session","getSession","asm","assemblyManager","waitForAssembly","Error","refName","pos","mateRefName","matePos","getBreakendCoveringRegions","assembly","viewTracks","getSnapshot","tracks","breakpointSplitView","addView","type","displayName","get","views","hideHeader","reverse","r1","regions","find","r","r2","Promise","all","navToLocations","start","end","when","initialized","zoomTo","centerAt","e","console","error","notify","variant","color","autoFocus","windowSize","setWindowSize","useLocalStorage","TextField","value","w","Number","isNaN","gatherOverlaps","Math","max"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5904.240caa72.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5904,7706],{35904:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var r=n(46377),a=n(32595),s=n(99834),o=n(66885),i=n(99546),c=n(68584),l=n(7706),h=n(82727),d=n(72147),u=n(78054);function f(e){const[t,n]=e.reduce((([e,t],[n,r])=>[e+n*r,t+r]),[0,0]);return t/n}const{parseCigar:m}=h.aF;class p extends r.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async setupPre(e){const t=this.pluginManager,n=(0,s.openLocation)(this.getConf("pafLocation"),t),r=await n.readFile(e),a=(0,i.isGzip)(r)?await(0,l.unzip)(r):r;return(0,u.PX)(a,u.xI)}async hasDataForRefName(){return!0}getAssemblyNames(){const e=this.getConf("assemblyNames");return 0===e.length?[this.getConf("queryAssembly"),this.getConf("targetAssembly")]:e}async getRefNames(e={}){const t=e.regions?.[0].assemblyName,n=await this.setup(e),r=this.getAssemblyNames().indexOf(t);if(-1!==r){const e=new Set;for(const t of n)e.add(0===r?t.qname:t.tname);return[...e]}return console.warn("Unable to do ref renaming on adapter"),[]}getFeatures(e,t={}){return(0,o.ObservableCreate)((async n=>{let r=await this.setup(t);const{config:s}=t;s&&"meanQueryIdentity"===(0,c.readConfObject)(s,"colorBy")&&(r=function(e){const t={};for(const n of e){const e=`${n.qname}-${n.tname}`;t[e]||(t[e]={quals:[],len:[]}),t[e].quals.push(n.extra.mappingQual),t[e].len.push(n.extra.blockLen||1)}const n=Object.fromEntries(Object.entries(t).map((([e,t])=>[e,f((0,u.yU)(t.quals,t.len))])));for(const t of e){const e=`${t.qname}-${t.tname}`;t.extra.meanScore=n[e]}let r=1e4,a=0;for(const t of e)r=Math.min(t.extra.meanScore||0,r),a=Math.max(t.extra.meanScore||0,a);for(const t of e){const e=t.extra.meanScore||0;t.extra.meanScore=(e-r)/(a-r)}return e}(r));const o=this.getAssemblyNames(),{start:i,end:l,refName:h,assemblyName:p}=e,g=o.indexOf(p),w=0===g;-1===g&&(console.warn(`${p} not found in this adapter`),n.complete());for(let e=0;e<r.length;e++){const t=r[e];let s=0,c=0,f="",g="",b=0,y=0;w?(s=t.qstart,c=t.qend,f=t.qname,g=t.tname,b=t.tstart,y=t.tend):(s=t.tstart,c=t.tend,f=t.tname,g=t.qname,b=t.qstart,y=t.qend);const{extra:x,strand:k}=t;if(f===h&&(0,a.R6)(i,l,s,c)){const{numMatches:t=0,blockLen:r=1,cg:a,...i}=x;let l=x.cg;x.cg&&(w&&-1===k?l=(0,u.qm)(m(x.cg)).join(""):w&&(l=(0,u.gJ)(x.cg))),n.next(new d.A({uniqueId:e+p,assemblyName:p,start:s,end:c,type:"match",refName:f,strand:k,...i,CIGAR:l,syntenyId:e,identity:t/r,numMatches:t,blockLen:r,mate:{start:b,end:y,refName:g,assemblyName:o[+w]}}))}}n.complete()}))}freeResources(){}}},72147:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(99546),a=n(82727);const{getMismatches:s}=a.aF;class o extends r.SimpleFeature{get(e){return"mismatches"===e?s(this.get("CIGAR")):super.get(e)}}},78054:(e,t,n)=>{n.d(t,{PX:()=>l,TA:()=>o,fY:()=>s,gJ:()=>u,qm:()=>d,xI:()=>h,yU:()=>i});var r=n(7706),a=n(99546);function s(e){return new Map(e.split(/\n|\r\n|\r/).filter((e=>!!e||e.startsWith("#"))).map((e=>{const[t,n,r,a,s,o]=e.split("\t");return[a,{refName:t,start:+n,end:+r,score:+s,name:a,strand:"-"===o?-1:1}]})))}async function o(e,t){const n=await e.readFile(t);return new TextDecoder("utf8",{fatal:!0}).decode((0,a.isGzip)(n)?await(0,r.unzip)(n):n)}function i(e,t){return e.map(((e,n)=>[e,t[n]]))}const c="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function l(e,t){let n=0;const r=[];for(;n<e.length;){const a=e.indexOf("\n",n);if(-1===a)break;const s=e.subarray(n,a),o=(c?.decode(s)||s.toString()).trim();o&&r.push(t(o)),n=a+1}return r}function h(e){const[t,,n,r,a,s,,o,i,c,l,h,...d]=e.split("\t");return{tname:s,tstart:+o,tend:+i,qname:t,qstart:+n,qend:+r,strand:"-"===a?-1:1,extra:{numMatches:+c,blockLen:+l,mappingQual:+h,...Object.fromEntries(d.map((e=>{const t=e.indexOf(":");return[e.slice(0,t),e.slice(t+3)]})))}}}function d(e){const t=[];for(let n=e.length-2;n>=0;n-=2){t.push(e[n]);const r=e[n+1];"D"===r?t.push("I"):"I"===r?t.push("D"):t.push(r)}return t}function u(e){return e.replaceAll("D","K").replaceAll("I","D").replaceAll("K","I")}},7706:(e,t,n)=>{n.d(t,{sG:()=>d,unzip:()=>o,i2:()=>i});var r=n(35451),a=n(45834),s=n(57864);async function o(e){try{let t,n=0,a=0;const o=[];let i,c=0;do{const r=e.subarray(n);if(i=new s.Inflate,({strm:t}=i),i.push(r,s.Z_SYNC_FLUSH),i.err)throw new Error(i.msg);n+=t.next_in,o[a]=i.result,c+=o[a].length,a+=1}while(t.avail_in);const l=new Uint8Array(c);for(let e=0,t=0;e<o.length;e++)l.set(o[e],t),t+=o[e].length;return r.hp.from(l)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function i(e,t){try{let n;const{minv:a,maxv:o}=t;let i=a.blockPosition,c=a.dataPosition;const l=[],h=[],d=[];let u=0,f=0;do{const t=e.subarray(i-a.blockPosition),r=new s.Inflate;if(({strm:n}=r),r.push(t,s.Z_SYNC_FLUSH),r.err)throw new Error(r.msg);const m=r.result;l.push(m);let p=m.length;h.push(i),d.push(c),1===l.length&&a.dataPosition&&(l[0]=l[0].subarray(a.dataPosition),p=l[0].length);const g=i;if(i+=n.next_in,c+=p,g>=o.blockPosition){l[f]=l[f].subarray(0,o.blockPosition===a.blockPosition?o.dataPosition-a.dataPosition+1:o.dataPosition+1),h.push(i),d.push(c),u+=l[f].length;break}u+=l[f].length,f++}while(n.avail_in);const m=new Uint8Array(u);for(let e=0,t=0;e<l.length;e++)m.set(l[e],t),t+=l[e].length;return{buffer:r.hp.from(m),cpositions:h,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var c=n(59086),l=n.n(c);class h{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new a.EY(t)}}_readLongWithOverflow(e,t=0,n=!0){const r=l().fromBytesLE(e.slice(t,t+8),n);if(r.greaterThan(Number.MAX_SAFE_INTEGER)||r.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return r.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=r.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const n=new Array(t+1);n[0]=[0,0];const a=16*t;if(a>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=r.hp.allocUnsafe(a),await this.filehandle.read(e,0,a,8);for(let r=0;r<t;r+=1){const t=this._readLongWithOverflow(e,16*r),a=this._readLongWithOverflow(e,16*r+8);n[r+1]=[t,a]}return n}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const n=t+e;if(0===e)return[];const r=await this._getIndex(),a=[],s=(e,n)=>{const r=e[1],a=n?n[1]:1/0;return r<=t&&a>t?0:r<t?-1:1};let o=0,i=r.length-1,c=Math.floor(r.length/2),l=s(r[c],r[c+1]);for(;0!==l;)l>0?i=c-1:l<0&&(o=c+1),c=Math.ceil((i-o)/2)+o,l=s(r[c],r[c+1]);a.push(r[c]);let h=c+1;for(;h<r.length&&(a.push(r[h]),!(r[h][1]>=n));h+=1);return a[a.length-1][1]<n&&a.push([]),a}}class d{constructor({filehandle:e,path:t,gziFilehandle:n,gziPath:r}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new a.EY(t)}if(!n&&!r&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new h({filehandle:n,path:n||r||!t?`${t}.gzi`:r})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),n=r.hp.allocUnsafe(4),{bytesRead:a}=await this.filehandle.read(n,0,4,t-28-4);if(4!==a)throw new Error("read error");return e+n.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[n]){let r=n;r||(r=(await this.filehandle.stat()).size);const a=r-t;return await this.filehandle.read(e,0,a,t),await o(e.slice(0,a))}async read(e,t,n,a){const s=await this.gzi.getRelevantBlocksForRead(n,a),o=r.hp.allocUnsafe(65536);let i=t,c=0;for(let t=0;t<s.length-1;t+=1){const r=await this._readAndUncompressBlock(o,s[t],s[t+1]),[,l]=s[t],h=l>=a?0:a-l,d=Math.min(a+n,l+r.length)-l;h>=0&&h<r.length&&(r.copy(e,i,h,d),i+=d-h,c+=d-h)}return{bytesRead:c,buffer:e}}}}}]);
+//# sourceMappingURL=5904.240caa72.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5904.240caa72.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5904.240caa72.chunk.js","mappings":"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","sources":["../../../plugins/comparative-adapters/src/PAFAdapter/util.ts","../../../plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts","../../../plugins/comparative-adapters/src/SyntenyFeature/index.ts","../../../plugins/comparative-adapters/src/util.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts"],"sourcesContent":["import { zip } from '../util'\n\nexport interface PAFRecord {\n  qname: string\n  qstart: number\n  qend: number\n  tname: string\n  tstart: number\n  tend: number\n  strand: number\n  extra: {\n    cg?: string\n    blockLen?: number\n    mappingQual: number\n    numMatches?: number\n    meanScore?: number\n  }\n}\n// based on \"weighted mean\" method from https://github.com/tpoorten/dotPlotly\n// License reproduced here\n//\n// MIT License\n\n// Copyright (c) 2017 Tom Poorten\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n//\n// Notes: in the weighted mean longer alignments factor in more heavily of all\n// the fragments of a query vs the reference that it mapped to\n//\n// this uses a combined key query+'-'+ref to iteratively map all the alignments\n// that match a particular ref from a particular query (so 1d array of what\n// could be a 2d map)\n//\n// the result is a single number that says e.g. chr5 from human mapped to chr5\n// on mouse with 0.8 quality, and that0.8 is then attached to all the pieces of\n// chr5 on human that mapped to chr5 on mouse. if chr5 on human also more\n// weakly mapped to chr6 on mouse, then it would have another value e.g. 0.6.\n// this can show strong and weak levels of synteny, especially in polyploidy\n// situations\n\nexport function getWeightedMeans(ret: PAFRecord[]) {\n  const scoreMap: Record<string, { quals: number[]; len: number[] }> = {}\n  for (const entry of ret) {\n    const query = entry.qname\n    const target = entry.tname\n    const key = `${query}-${target}`\n    if (!scoreMap[key]) {\n      scoreMap[key] = { quals: [], len: [] }\n    }\n    scoreMap[key].quals.push(entry.extra.mappingQual)\n    scoreMap[key].len.push(entry.extra.blockLen || 1)\n  }\n\n  const meanScoreMap = Object.fromEntries(\n    Object.entries(scoreMap).map(([key, val]) => {\n      const vals = zip(val.quals, val.len)\n      return [key, weightedMean(vals)]\n    }),\n  )\n  for (const entry of ret) {\n    const query = entry.qname\n    const target = entry.tname\n    const key = `${query}-${target}`\n    entry.extra.meanScore = meanScoreMap[key]\n  }\n\n  let min = 10000\n  let max = 0\n  for (const entry of ret) {\n    min = Math.min(entry.extra.meanScore || 0, min)\n    max = Math.max(entry.extra.meanScore || 0, max)\n  }\n  for (const entry of ret) {\n    const b = entry.extra.meanScore || 0\n    entry.extra.meanScore = (b - min) / (max - min)\n  }\n\n  return ret\n}\n\n// https://gist.github.com/stekhn/a12ed417e91f90ecec14bcfa4c2ae16a\nfunction weightedMean(tuples: [number, number][]) {\n  const [valueSum, weightSum] = tuples.reduce(\n    ([valueSum, weightSum], [value, weight]) => [\n      valueSum + value * weight,\n      weightSum + weight,\n    ],\n    [0, 0],\n  )\n  return valueSum / weightSum\n}\n","import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { doesIntersect2 } from '@jbrowse/core/util/range'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature, isGzip } from '@jbrowse/core/util'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\nimport type { Buffer } from 'buffer'\n\n// locals\nimport SyntenyFeature from '../SyntenyFeature'\nimport {\n  flipCigar,\n  swapIndelCigar,\n  parsePAFLine,\n  parseLineByLine,\n} from '../util'\nimport { getWeightedMeans, PAFRecord } from './util'\n\nconst { parseCigar } = MismatchParser\n\ninterface PAFOptions extends BaseOptions {\n  config?: AnyConfigurationModel\n}\n\nexport default class PAFAdapter extends BaseFeatureDataAdapter {\n  private setupP?: Promise<PAFRecord[]>\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async setupPre(opts?: BaseOptions) {\n    const pm = this.pluginManager\n    const pafLocation = openLocation(this.getConf('pafLocation'), pm)\n    const buffer = (await pafLocation.readFile(opts)) as Buffer\n    const buf = isGzip(buffer) ? await unzip(buffer) : buffer\n    return parseLineByLine(buf, parsePAFLine)\n  }\n\n  async hasDataForRefName() {\n    // determining this properly is basically a call to getFeatures\n    // so is not really that important, and has to be true or else\n    // getFeatures is never called (BaseAdapter filters it out)\n    return true\n  }\n\n  getAssemblyNames() {\n    const assemblyNames = this.getConf('assemblyNames') as string[]\n    if (assemblyNames.length === 0) {\n      const query = this.getConf('queryAssembly') as string\n      const target = this.getConf('targetAssembly') as string\n      return [query, target]\n    }\n    return assemblyNames\n  }\n\n  async getRefNames(opts: BaseOptions = {}) {\n    // @ts-expect-error\n    const r1 = opts.regions?.[0].assemblyName\n    const feats = await this.setup(opts)\n\n    const idx = this.getAssemblyNames().indexOf(r1)\n    if (idx !== -1) {\n      const set = new Set<string>()\n      for (const feat of feats) {\n        set.add(idx === 0 ? feat.qname : feat.tname)\n      }\n      return [...set]\n    }\n    console.warn('Unable to do ref renaming on adapter')\n    return []\n  }\n\n  getFeatures(query: Region, opts: PAFOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      let pafRecords = await this.setup(opts)\n      const { config } = opts\n\n      // note: this is not the adapter config, it is responding to a display\n      // setting passed in via the opts parameter\n      if (config && readConfObject(config, 'colorBy') === 'meanQueryIdentity') {\n        pafRecords = getWeightedMeans(pafRecords)\n      }\n      const assemblyNames = this.getAssemblyNames()\n\n      // The index of the assembly name in the query list corresponds to the\n      // adapter in the subadapters list\n      const { start: qstart, end: qend, refName: qref, assemblyName } = query\n      const index = assemblyNames.indexOf(assemblyName)\n\n      // if the getFeatures::query is on the query assembly, flip orientation\n      // of data\n      const flip = index === 0\n      if (index === -1) {\n        console.warn(`${assemblyName} not found in this adapter`)\n        observer.complete()\n      }\n\n      for (let i = 0; i < pafRecords.length; i++) {\n        const r = pafRecords[i]!\n        let start = 0\n        let end = 0\n        let refName = ''\n        let mateName = ''\n        let mateStart = 0\n        let mateEnd = 0\n\n        if (flip) {\n          start = r.qstart\n          end = r.qend\n          refName = r.qname\n          mateName = r.tname\n          mateStart = r.tstart\n          mateEnd = r.tend\n        } else {\n          start = r.tstart\n          end = r.tend\n          refName = r.tname\n          mateName = r.qname\n          mateStart = r.qstart\n          mateEnd = r.qend\n        }\n        const { extra, strand } = r\n        if (refName === qref && doesIntersect2(qstart, qend, start, end)) {\n          const { numMatches = 0, blockLen = 1, cg, ...rest } = extra\n\n          let CIGAR = extra.cg\n          if (extra.cg) {\n            if (flip && strand === -1) {\n              CIGAR = flipCigar(parseCigar(extra.cg)).join('')\n            } else if (flip) {\n              CIGAR = swapIndelCigar(extra.cg)\n            }\n          }\n\n          observer.next(\n            new SyntenyFeature({\n              uniqueId: i + assemblyName,\n              assemblyName,\n              start,\n              end,\n              type: 'match',\n              refName,\n              strand,\n              ...rest,\n              CIGAR,\n              syntenyId: i,\n              identity: numMatches / blockLen,\n              numMatches,\n              blockLen,\n              mate: {\n                start: mateStart,\n                end: mateEnd,\n                refName: mateName,\n                assemblyName: assemblyNames[+flip],\n              },\n            }),\n          )\n        }\n      }\n\n      observer.complete()\n    })\n  }\n\n  freeResources(/* { query } */): void {}\n}\n","import { SimpleFeature } from '@jbrowse/core/util'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\n\n// locals\nconst { getMismatches } = MismatchParser\n\nexport default class SyntenyFeature extends SimpleFeature {\n  get(arg: string): any {\n    if (arg === 'mismatches') {\n      return getMismatches(this.get('CIGAR'))\n    }\n    return super.get(arg)\n  }\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport { PAFRecord } from './PAFAdapter/util'\n\nexport function parseBed(text: string) {\n  return new Map(\n    text\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f || f.startsWith('#'))\n      .map(line => {\n        const [refName, start, end, name, score, strand] = line.split('\\t')\n        return [\n          name,\n          {\n            refName,\n            start: +start!,\n            end: +end!,\n            score: +score!,\n            name,\n            strand: strand === '-' ? -1 : 1,\n          },\n        ]\n      }),\n  )\n}\n\nexport async function readFile(file: GenericFilehandle, opts?: BaseOptions) {\n  const buffer = (await file.readFile(opts)) as Buffer\n  return new TextDecoder('utf8', { fatal: true }).decode(\n    isGzip(buffer) ? await unzip(buffer) : buffer,\n  )\n}\n\nexport function zip(a: number[], b: number[]) {\n  return a.map((e, i) => [e, b[i]] as [number, number])\n}\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\nexport function parseLineByLine(\n  buffer: Buffer,\n  cb: (line: string) => PAFRecord,\n) {\n  let blockStart = 0\n  const entries = []\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const line = (decoder?.decode(b) || b.toString()).trim()\n    if (line) {\n      entries.push(cb(line))\n    }\n\n    blockStart = n + 1\n  }\n  return entries\n}\n\nexport function parsePAFLine(line: string) {\n  const [\n    qname,\n    ,\n    qstart,\n    qend,\n    strand,\n    tname,\n    ,\n    tstart,\n    tend,\n    numMatches,\n    blockLen,\n    mappingQual,\n    ...fields\n  ] = line.split('\\t')\n\n  const rest = Object.fromEntries(\n    fields.map(field => {\n      const r = field.indexOf(':')\n      const fieldName = field.slice(0, r)\n      const fieldValue = field.slice(r + 3)\n      return [fieldName, fieldValue]\n    }),\n  )\n\n  return {\n    tname,\n    tstart: +tstart!,\n    tend: +tend!,\n    qname,\n    qstart: +qstart!,\n    qend: +qend!,\n    strand: strand === '-' ? -1 : 1,\n    extra: {\n      numMatches: +numMatches!,\n      blockLen: +blockLen!,\n      mappingQual: +mappingQual!,\n      ...rest,\n    },\n  } as PAFRecord\n}\n\nexport function flipCigar(cigar: string[]) {\n  const arr = []\n  for (let i = cigar.length - 2; i >= 0; i -= 2) {\n    arr.push(cigar[i])\n    const op = cigar[i + 1]\n    if (op === 'D') {\n      arr.push('I')\n    } else if (op === 'I') {\n      arr.push('D')\n    } else {\n      arr.push(op)\n    }\n  }\n  return arr\n}\n\nexport function swapIndelCigar(cigar: string) {\n  return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I')\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n"],"names":["weightedMean","tuples","valueSum","weightSum","reduce","value","weight","parseCigar","MismatchParser","PAFAdapter","BaseFeatureDataAdapter","setup","opts","this","setupP","setupPre","catch","e","undefined","pm","pluginManager","pafLocation","openLocation","getConf","buffer","readFile","buf","isGzip","unzip","parseLineByLine","parsePAFLine","hasDataForRefName","getAssemblyNames","assemblyNames","length","getRefNames","r1","regions","assemblyName","feats","idx","indexOf","set","Set","feat","add","qname","tname","console","warn","getFeatures","query","ObservableCreate","async","pafRecords","config","readConfObject","ret","scoreMap","entry","key","quals","len","push","extra","mappingQual","blockLen","meanScoreMap","Object","fromEntries","entries","map","val","zip","meanScore","min","max","Math","b","getWeightedMeans","start","qstart","end","qend","refName","qref","index","flip","observer","complete","i","r","mateName","mateStart","mateEnd","tstart","tend","strand","doesIntersect2","numMatches","cg","rest","CIGAR","flipCigar","join","swapIndelCigar","next","SyntenyFeature","uniqueId","type","syntenyId","identity","mate","freeResources","getMismatches","SimpleFeature","get","arg","super","parseBed","text","Map","split","filter","f","startsWith","line","name","score","file","TextDecoder","fatal","decode","a","decoder","cb","blockStart","n","subarray","toString","trim","fields","field","slice","cigar","arr","op","replaceAll","inputData","strm","pos","chunks","inflator","totalSize","remainingInput","Inflate","Z_SYNC_FLUSH","err","Error","msg","next_in","result","avail_in","Uint8Array","offset","from","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","origCpos","GziIndex","constructor","filehandle","path","TypeError","_readLongWithOverflow","unsigned","long","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","_readIndex","allocUnsafe","read","numEntries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","assign","size","getUncompressedFileSize","blocks","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","copy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5930.0ffd2546.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5930],{2141:(e,a,t)=>{t.d(a,{L:()=>g,q:()=>h});var n=t(7552),o=t(68446),i=t(29499),r=t(58507),s=t(5401),l=t(36422),c=t(49823),m=t(42489),d=t(99546),p=t(33371),w=t(32808);const b=(0,t(75785).n9)()({block:{display:"block"}});function v({checked:e,disabled:a,label:t,onChange:o}){const{classes:i}=b();return n.createElement(p.A,{disabled:a,className:i.block,control:n.createElement(w.A,{checked:e,onChange:o}),label:t})}function y(e){return e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))})))}const g=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:p,view:w}){const[b,g]=(0,n.useState)(!0),[k,h]=(0,n.useState)(!0);return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Multi-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:b,label:"Copy tracks into the new view",onChange:e=>{g(e.target.checked)}}),b?n.createElement(v,{checked:k,disabled:!b,label:"Mirror the copied tracks (only available if copying tracks and using two level)",onChange:e=>{h(e.target.checked)}}):null),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{(async()=>{const a=(0,d.getSession)(e);try{const e=await a.assemblyManager.waitForAssembly(o);if(!e)throw new Error(`assembly ${o} not found`);const{refName:n,pos:i,mateRefName:r,matePos:s}=p.getBreakendCoveringRegions({feature:t,assembly:e}),c=(0,l.getSnapshot)(w.tracks),d=a.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",hideHeader:!0,tracks:y((0,l.getSnapshot)(w.tracks))},{type:"LinearGenomeView",hideHeader:!0,tracks:y(k?[...c].reverse():c)}]}),b=e.regions.find((e=>e.refName===n)),v=e.regions.find((e=>e.refName===r));if(!b||!v)throw new Error("can't find regions");await Promise.all([d.views[0].navToLocations([{refName:n,start:b.start,end:i,assemblyName:o},{refName:n,start:i+1,end:b.end,assemblyName:o}]),d.views[1].navToLocations([{refName:r,start:v.start,end:s,assemblyName:o},{refName:r,start:s+1,end:v.end,assemblyName:o}])]),await(0,m.when)((()=>d.views[1].initialized&&d.views[0].initialized)),d.views[1].zoomTo(10),d.views[0].zoomTo(10),d.views[1].centerAt(s,r),d.views[0].centerAt(i,n)}catch(e){console.error(e),a.notify(`${e}`)}})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}));var k=t(1343);const h=(0,o.observer)((function({model:e,handleClose:a,feature:t,assemblyName:o,viewType:m,view:p}){const[w,b]=(0,n.useState)(!0),[y,g]=(0,d.useLocalStorage)("breakpointWindowSize","5000");return n.createElement(c.Dialog,{open:!0,onClose:a,title:"Single-level breakpoint split view options"},n.createElement(i.A,null,n.createElement(v,{checked:w,label:"Copy tracks into the new view",onChange:e=>{b(e.target.checked)}}),n.createElement(k.A,{label:"Window size (bp)",value:y,onChange:e=>{g(e.target.value)}})),n.createElement(r.A,null,n.createElement(s.A,{onClick:()=>{const n=(0,d.getSession)(e);(async()=>{try{const a=n.assemblyManager.get(o),i=+y;if(Number.isNaN(i))throw new Error("windowSize not a number");const{refName:r,pos:s,mateRefName:c,matePos:w}=m.getBreakendCoveringRegions({feature:t,assembly:a}),b=n.addView("BreakpointSplitView",{type:"BreakpointSplitView",displayName:`${t.get("name")||t.get("id")||"breakend"} split detail`,views:[{type:"LinearGenomeView",tracks:(e=(0,l.getSnapshot)(p.tracks),e.map((({id:e,displays:a,...t})=>({...t,displays:a.map((({id:e,...a})=>a))}))))}]});await b.views[0].navToLocations((0,d.gatherOverlaps)([{refName:r,start:Math.max(0,s-i),end:s+i,assemblyName:o},{refName:c,start:Math.max(0,w-i),end:w+i,assemblyName:o}],i))}catch(e){console.error(e),n.notify(`${e}`)}var e})(),a()},variant:"contained",color:"primary",autoFocus:!0},"OK"),n.createElement(s.A,{color:"secondary",variant:"contained",onClick:()=>{a()}},"Cancel")))}))},45930:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n.L});var n=t(2141)}}]);
+//# sourceMappingURL=5930.0ffd2546.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5930.0ffd2546.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5930.0ffd2546.chunk.js","mappings":"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","sources":["../../../packages/sv-core/src/Checkbox2.tsx","../../../packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx","../../../packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, FormControlLabel } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  block: {\n    display: 'block',\n  },\n})\n\nexport default function Checkbox2({\n  checked,\n  disabled,\n  label,\n  onChange,\n}: {\n  checked: boolean\n  disabled?: boolean\n  label: string\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <FormControlLabel\n      disabled={disabled}\n      className={classes.block}\n      control={<Checkbox checked={checked} onChange={onChange} />}\n      label={label}\n    />\n  )\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { when } from 'mobx'\nimport { getSession, Feature } from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendMultiLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [mirror, setMirror] = useState(true)\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Multi-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        {copyTracks ? (\n          <Checkbox2\n            checked={mirror}\n            disabled={!copyTracks}\n            label=\"Mirror the copied tracks (only available if copying tracks and using two level)\"\n            onChange={event => {\n              setMirror(event.target.checked)\n            }}\n          />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              const session = getSession(model)\n              try {\n                const asm =\n                  await session.assemblyManager.waitForAssembly(assemblyName)\n                if (!asm) {\n                  throw new Error(`assembly ${assemblyName} not found`)\n                }\n\n                const { refName, pos, mateRefName, matePos } =\n                  viewType.getBreakendCoveringRegions({\n                    feature,\n                    assembly: asm,\n                  })\n\n                const viewTracks = getSnapshot(view.tracks) as Track[]\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                      {\n                        type: 'LinearGenomeView',\n                        hideHeader: true,\n                        tracks: stripIds(\n                          mirror ? [...viewTracks].reverse() : viewTracks,\n                        ),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n                const r1 = asm.regions!.find(r => r.refName === refName)\n                const r2 = asm.regions!.find(r => r.refName === mateRefName)\n                if (!r1 || !r2) {\n                  throw new Error(\"can't find regions\")\n                }\n                await Promise.all([\n                  breakpointSplitView.views[0]!.navToLocations([\n                    {\n                      refName,\n                      start: r1.start,\n                      end: pos,\n                      assemblyName,\n                    },\n                    {\n                      refName,\n                      start: pos + 1,\n                      end: r1.end,\n                      assemblyName,\n                    },\n                  ]),\n                  breakpointSplitView.views[1]!.navToLocations([\n                    {\n                      refName: mateRefName,\n                      start: r2.start,\n                      end: matePos,\n                      assemblyName,\n                    },\n                    {\n                      refName: mateRefName,\n                      start: matePos + 1,\n                      end: r2.end,\n                      assemblyName,\n                    },\n                  ]),\n                ])\n                await when(\n                  () =>\n                    breakpointSplitView.views[1]!.initialized &&\n                    breakpointSplitView.views[0]!.initialized,\n                )\n                breakpointSplitView.views[1]!.zoomTo(10)\n                breakpointSplitView.views[0]!.zoomTo(10)\n                breakpointSplitView.views[1]!.centerAt(matePos, mateRefName)\n                breakpointSplitView.views[0]!.centerAt(pos, refName)\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendMultiLevelOptionDialog\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, DialogActions, DialogContent, TextField } from '@mui/material'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  Feature,\n  gatherOverlaps,\n  useLocalStorage,\n} from '@jbrowse/core/util'\nimport type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport type { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\n// locals\nimport Checkbox2 from './Checkbox2'\n\ninterface Display {\n  id: string\n  [key: string]: unknown\n}\ninterface Track {\n  id: string\n  displays: Display[]\n  [key: string]: unknown\n}\n\nfunction stripIds(arr: Track[]) {\n  return arr.map(({ id, displays, ...rest }) => ({\n    ...rest,\n    displays: displays.map(({ id, ...rest }) => rest),\n  }))\n}\n\nconst BreakendSingleLevelOptionDialog = observer(function ({\n  model,\n  handleClose,\n  feature,\n  assemblyName,\n  viewType,\n  view,\n}: {\n  model: unknown\n  handleClose: () => void\n  feature: Feature\n  view: LinearGenomeViewModel\n  assemblyName: string\n  viewType: {\n    getBreakendCoveringRegions: (arg: {\n      feature: Feature\n      assembly: Assembly\n    }) => {\n      pos: number\n      refName: string\n      mateRefName: string\n      matePos: number\n    }\n  }\n}) {\n  const [copyTracks, setCopyTracks] = useState(true)\n  const [windowSize, setWindowSize] = useLocalStorage(\n    'breakpointWindowSize',\n    '5000',\n  )\n\n  return (\n    <Dialog\n      open\n      onClose={handleClose}\n      title=\"Single-level breakpoint split view options\"\n    >\n      <DialogContent>\n        <Checkbox2\n          checked={copyTracks}\n          label=\"Copy tracks into the new view\"\n          onChange={event => {\n            setCopyTracks(event.target.checked)\n          }}\n        />\n\n        <TextField\n          label=\"Window size (bp)\"\n          value={windowSize}\n          onChange={event => {\n            setWindowSize(event.target.value)\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            const session = getSession(model)\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                const assembly = session.assemblyManager.get(assemblyName)\n                const w = +windowSize\n                if (Number.isNaN(w)) {\n                  throw new Error('windowSize not a number')\n                }\n                const { refName, pos, mateRefName, matePos } =\n                  // @ts-expect-error\n                  viewType.getBreakendCoveringRegions({ feature, assembly })\n\n                const breakpointSplitView = session.addView(\n                  'BreakpointSplitView',\n                  {\n                    type: 'BreakpointSplitView',\n                    displayName: `${\n                      feature.get('name') || feature.get('id') || 'breakend'\n                    } split detail`,\n                    views: [\n                      {\n                        type: 'LinearGenomeView',\n                        tracks: stripIds(getSnapshot(view.tracks)),\n                      },\n                    ],\n                  },\n                ) as unknown as { views: LinearGenomeViewModel[] }\n\n                await breakpointSplitView.views[0]!.navToLocations(\n                  gatherOverlaps(\n                    [\n                      {\n                        refName,\n                        start: Math.max(0, pos - w),\n                        end: pos + w,\n                        assemblyName,\n                      },\n                      {\n                        refName: mateRefName,\n                        start: Math.max(0, matePos - w),\n                        end: matePos + w,\n                        assemblyName,\n                      },\n                    ],\n                    w,\n                  ),\n                )\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            })()\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n          autoFocus\n        >\n          OK\n        </Button>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default BreakendSingleLevelOptionDialog\n"],"names":["useStyles","makeStyles","block","display","Checkbox2","checked","disabled","label","onChange","classes","React","FormControlLabel","className","control","Checkbox","stripIds","arr","map","id","displays","rest","observer","model","handleClose","feature","assemblyName","viewType","view","copyTracks","setCopyTracks","useState","mirror","setMirror","Dialog","open","onClose","title","DialogContent","event","target","DialogActions","Button","onClick","session","getSession","asm","assemblyManager","waitForAssembly","Error","refName","pos","mateRefName","matePos","getBreakendCoveringRegions","assembly","viewTracks","getSnapshot","tracks","breakpointSplitView","addView","type","displayName","get","views","hideHeader","reverse","r1","regions","find","r","r2","Promise","all","navToLocations","start","end","when","initialized","zoomTo","centerAt","e","console","error","notify","variant","color","autoFocus","windowSize","setWindowSize","useLocalStorage","TextField","value","w","Number","isNaN","gatherOverlaps","Math","max"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5951.251be759.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5951],{56089:(e,r,o)=>{o.d(r,{A:()=>p});var t=o(7552),a=o(93878),u=o(70799),n=o(83867),s=o(87625),l=o(51584),c=o(77259),d=o(76258),i=o(89456),A=o(69500);const p=t.forwardRef((function(e,r){const{actions:o,children:p,className:f,defaultValue:v,name:h,onChange:b,value:w,...g}=e,C=t.useRef(null),m=(e=>{const{classes:r,row:o,error:t}=e,a={root:["root",o&&"row",t&&"error"]};return(0,u.A)(a,s.B,r)})(e),[R,G]=(0,c.A)({controlled:w,default:v,name:"RadioGroup"});t.useImperativeHandle(o,(()=>({focus:()=>{let e=C.current.querySelector("input:not(:disabled):checked");e||(e=C.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const k=(0,l.A)(r,C),j=(0,i.A)(h),x=t.useMemo((()=>({name:j,onChange(e){G(e.target.value),b&&b(e,e.target.value)},value:R})),[j,b,G,R]);return(0,A.jsx)(d.A.Provider,{value:x,children:(0,A.jsx)(n.A,{role:"radiogroup",ref:k,className:(0,a.A)(m.root,f),...g,children:p})})}))},76258:(e,r,o)=>{o.d(r,{A:()=>t});const t=o(7552).createContext(void 0)},25951:(e,r,o)=>{o.r(r),o.d(r,{default:()=>t.A,getRadioGroupUtilityClass:()=>u.B,radioGroupClasses:()=>u.A,useRadioGroup:()=>a.A});var t=o(56089),a=o(39006),u=o(87625)},87625:(e,r,o)=>{o.d(r,{A:()=>n,B:()=>u});var t=o(33761),a=o(85693);function u(e){return(0,a.Ay)("MuiRadioGroup",e)}const n=(0,t.A)("MuiRadioGroup",["root","row","error"])},39006:(e,r,o)=>{o.d(r,{A:()=>u});var t=o(7552),a=o(76258);function u(){return t.useContext(a.A)}}}]);
+//# sourceMappingURL=5951.251be759.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5951.251be759.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5951.251be759.chunk.js","mappings":"2PAaA,MAoGA,EAzFgC,cAAiB,SAAoBA,EAAOC,GAC1E,MAAM,QAGJC,EAAO,SACPC,EAAQ,UACRC,EAAS,aACTC,EACAC,KAAMC,EAAQ,SACdC,EACAC,MAAOC,KACJC,GACDX,EACEY,EAAU,SAAa,MACvBC,EAzBkBb,KACxB,MAAM,QACJa,EAAO,IACPC,EAAG,MACHC,GACEf,EACEgB,EAAQ,CACZC,KAAM,CAAC,OAAQH,GAAO,MAAOC,GAAS,UAExC,OAAO,OAAeC,EAAO,IAA2BH,EAAQ,EAgBhDK,CAAkBlB,IAC3BS,EAAOU,IAAiB,OAAc,CAC3CC,WAAYV,EACZW,QAAShB,EACTC,KAAM,eAER,sBAA0BJ,GAAS,KAAM,CACvCoB,MAAO,KACL,IAAIC,EAAQX,EAAQY,QAAQC,cAAc,gCACrCF,IACHA,EAAQX,EAAQY,QAAQC,cAAc,yBAEpCF,GACFA,EAAMD,OACR,KAEA,IACJ,MAAMI,GAAY,OAAWzB,EAAKW,GAC5BN,GAAO,OAAMC,GACboB,EAAe,WAAc,KAAM,CACvCrB,OACA,QAAAE,CAASoB,GACPT,EAAcS,EAAMC,OAAOpB,OACvBD,GACFA,EAASoB,EAAOA,EAAMC,OAAOpB,MAEjC,EACAA,WACE,CAACH,EAAME,EAAUW,EAAeV,IACpC,OAAoB,SAAK,IAAkBqB,SAAU,CACnDrB,MAAOkB,EACPxB,UAAuB,SAAK,IAAW,CACrC4B,KAAM,aACN9B,IAAKyB,EACLtB,WAAW,OAAKS,EAAQI,KAAMb,MAC3BO,EACHR,SAAUA,KAGhB,G,mCCrEA,Q,QAJuC,mBAAoB6B,E,6OCFpD,SAASC,EAA0BC,GACxC,OAAO,QAAqB,gBAAiBA,EAC/C,CACA,MACA,GAD0B,OAAuB,gBAAiB,CAAC,OAAQ,MAAO,S,4DCDnE,SAASC,IACtB,OAAO,aAAiB,IAC1B,C","sources":["../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}"],"names":["props","ref","actions","children","className","defaultValue","name","nameProp","onChange","value","valueProp","other","rootRef","classes","row","error","slots","root","useUtilityClasses","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","event","target","Provider","role","undefined","getRadioGroupUtilityClass","slot","useRadioGroup"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/596.84c38eb7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[596],{25355:(t,o,e)=>{e.d(o,{A:()=>C});var n=e(7552),r=e(93878),s=e(70799),a=e(51148),d=e(4785),i=e(61823),c=e(69500);const l=(0,a.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(t,o)=>o.root})({padding:16,"&:last-child":{paddingBottom:24}}),C=n.forwardRef((function(t,o){const e=(0,d.b)({props:t,name:"MuiCardContent"}),{className:n,component:a="div",...C}=e,u={...e,component:a},b=(t=>{const{classes:o}=t;return(0,s.A)({root:["root"]},i.h,o)})(u);return(0,c.jsx)(l,{as:a,className:(0,r.A)(b.root,n),ownerState:u,ref:o,...C})}))},61823:(t,o,e)=>{e.d(o,{A:()=>a,h:()=>s});var n=e(33761),r=e(85693);function s(t){return(0,r.Ay)("MuiCardContent",t)}const a=(0,n.A)("MuiCardContent",["root"])},596:(t,o,e)=>{e.r(o),e.d(o,{cardContentClasses:()=>r.A,default:()=>n.A,getCardContentUtilityClass:()=>r.h});var n=e(25355),r=e(61823)}}]);
+//# sourceMappingURL=596.84c38eb7.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/596.84c38eb7.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/596.84c38eb7.chunk.js","mappings":"wNAUA,MASMA,GAAkB,QAAO,MAAO,CACpCC,KAAM,iBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHvB,CAIrB,CACDC,QAAS,GACT,eAAgB,CACdC,cAAe,MAqDnB,EAlDiC,cAAiB,SAAqBC,EAASC,GAC9E,MAAMN,GAAQ,OAAgB,CAC5BA,MAAOK,EACPR,KAAM,oBAEF,UACJU,EAAS,UACTC,EAAY,SACTC,GACDT,EACEU,EAAa,IACdV,EACHQ,aAEIG,EAjCkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZR,KAAM,CAAC,SAEoB,IAA4BS,EAAQ,EA0BjDC,CAAkBF,GAClC,OAAoB,SAAKd,EAAiB,CACxCiB,GAAIL,EACJD,WAAW,OAAKI,EAAQT,KAAMK,GAC9BG,WAAYA,EACZJ,IAAKA,KACFG,GAEP,G,qECjDO,SAASK,EAA2BhB,GACzC,OAAO,QAAqB,iBAAkBA,EAChD,CACA,MACA,GAD2B,OAAuB,iBAAkB,CAAC,Q","sources":["../../../node_modules/@mui/material/CardContent/CardContent.js","../../../node_modules/@mui/material/CardContent/cardContentClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 16,\n  '&:last-child': {\n    paddingBottom: 24\n  }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;"],"names":["CardContentRoot","name","slot","overridesResolver","props","styles","root","padding","paddingBottom","inProps","ref","className","component","other","ownerState","classes","useUtilityClasses","as","getCardContentUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5998.22bd8296.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[5998],{55998:(e,t,a)=>{a.d(t,{convertTrackConfig:()=>o}),a(99834);var r=a(99546),i=a(91468);function o(e,t,a){const o={trackId:(0,r.objectHash)(e),name:e.key||e.label},n=e.metadata&&(e.metadata.description||e.metadata.Description);n&&(o.description=n);const c=e.category||e.metadata?.category;o.category=c?c.split(/\s*\/\s*/):[];const{storeClass:p}=e;if(!e.urlTemplate){if(!p?.endsWith("FromConfig")){const t=e.key||e.label;return console.warn(`Could not import JBrowse1 track "${t}" because it does not have a "urlTemplate" or is not a "FromConfig" track`),(0,i.generateUnsupportedTrackConf)(o.name,t,o.category)}return function(e,t){const a=(e.features||[]).map((e=>{const t=JSON.parse(JSON.stringify(e));return t.refName=e.seq_id,t.uniqueId=`${e.seq_id}:${e.start}-${e.end}:${e.name||""}`,t}));return t.adapter={type:"FromConfigAdapter",features:a},t.type="FeatureTrack",t}(e,o)}const l=e=>new URL(e,`${t}/`).href.replaceAll(/%7B/gi,"{").replaceAll(/%7D/gi,"}"),u=l(e.urlTemplate);if(p){if("JBrowse/Store/SeqFeature/BAM"===p){const t={type:"BamAdapter",bamLocation:{uri:u,locationType:"UriLocation"}};return e.baiUrlTemplate?t.index={location:{uri:l(e.baiUrlTemplate),locationType:"UriLocation"}}:e.csiUrlTemplate?t.index={location:{uri:l(e.csiUrlTemplate),locationType:"UriLocation"},indexType:"CSI"}:t.index={location:{uri:`${u}.bai`,locationType:"UriLocation"}},{...o,type:"AlignmentsTrack",adapter:t}}if("JBrowse/Store/SeqFeature/CRAM"===p){const t={type:"CramAdapter",cramLocation:{uri:u,locationType:"UriLocation"},sequenceAdapter:a};return t.craiLocation=e.craiUrlTemplate?{uri:l(e.craiUrlTemplate),locationType:"UriLocation"}:{uri:`${u}.crai`,locationType:"UriLocation"},{...o,type:"AlignmentsTrack",adapter:t}}if("JBrowse/Store/SeqFeature/NCList"===p)return{...o,type:"FeatureTrack",adapter:{type:"NCListAdapter",rootUrlTemplate:{uri:u,locationType:"UriLocation"}}};if("JBrowse/Store/SeqFeature/BigWig"===p||"JBrowse/Store/BigWig"===p)return e.type?.endsWith("XYPlot")?o.defaultRendering="xyplot":e.type?.endsWith("Density")&&(o.defaultRendering="density"),{...o,type:"QuantitativeTrack",adapter:{type:"BigWigAdapter",bigWigLocation:{uri:u,locationType:"UriLocation"}}};if("JBrowse/Store/SeqFeature/VCFTabix"===p){const t={type:"VcfTabixAdapter",vcfGzLocation:{uri:u,locationType:"UriLocation"}};return e.tbiUrlTemplate?t.index={location:{uri:l(e.tbiUrlTemplate),locationType:"UriLocation"}}:e.csiUrlTemplate?t.index={location:{uri:l(e.csiUrlTemplate),locationType:"UriLocation"},indexType:"CSI"}:t.index={location:{uri:`${u}.tbi`,locationType:"UriLocation"}},{...o,type:"VariantTrack",adapter:t}}if("JBrowse/Store/SeqFeature/VCFTribble"===p)return(0,i.generateUnsupportedTrackConf)(o.name,`VCFTribble (${u})`,o.category);if("JBrowse/Store/SeqFeature/GFF3"===p)return{...o,type:"FeatureTrack",adapter:{type:"Gff3Adapter",gffLocation:{uri:u,locationType:"UriLocation"}}};if("JBrowse/Store/SeqFeature/BigBed"===p)return{...o,type:"FeatureTrack",adapter:{type:"BigBedAdapter",bigBedLocation:{uri:u,locationType:"UriLocation"}}};if("JBrowse/Store/SeqFeature/GFF3Tabix"===p){const t={type:"Gff3TabixAdapter",gffGzLocation:{uri:u,locationType:"UriLocation"}};return e.tbiUrlTemplate?t.index={location:{uri:l(e.tbiUrlTemplate),locationType:"UriLocation"}}:e.csiUrlTemplate?t.index={location:{uri:l(e.csiUrlTemplate),locationType:"UriLocation"},indexType:"CSI"}:t.index={location:{uri:`${u}.tbi`,locationType:"UriLocation"}},{...o,type:"FeatureTrack",adapter:t}}if("JBrowse/Store/SeqFeature/BED"===p)return(0,i.generateUnsupportedTrackConf)(o.name,`BED (${u})`,o.category);if("JBrowse/Store/SeqFeature/BEDTabix"===p){const t={type:"BedTabixAdapter",bedGzLocation:{uri:u,locationType:"UriLocation"}};return e.tbiUrlTemplate?t.index={location:{uri:l(e.tbiUrlTemplate),locationType:"UriLocation"}}:e.csiUrlTemplate?t.index={location:{uri:l(e.csiUrlTemplate),locationType:"UriLocation"},indexType:"CSI"}:t.index={location:{uri:`${u}.tbi`,locationType:"UriLocation"}},{...o,type:"FeatureTrack",adapter:t}}if("JBrowse/Store/SeqFeature/GTF"===p)return{...o,type:"FeatureTrack",adapter:{type:"GtfAdapter",gtfLocation:{uri:u,locationType:"UriLocation"}}};if("JBrowse/Store/SeqFeature/StaticChunked"===p||"JBrowse/Store/Sequence/StaticChunked"===p)return(0,i.generateUnsupportedTrackConf)(o.name,`StaticChunked (${u})`,o.category);if("JBrowse/Store/SeqFeature/UnindexedFasta"===p)return(0,i.generateUnsupportedTrackConf)(o.name,`UnindexedFasta (${u})`,o.category);if("JBrowse/Store/SeqFeature/IndexedFasta"===p){const t={type:"IndexedFastaAdapter",fastaLocation:{uri:u,locationType:"UriLocation"}};return t.faiLocation=e.faiUrlTemplate?{uri:l(e.faiUrlTemplate),locationType:"UriLocation"}:{uri:`${u}.fai`,locationType:"UriLocation"},{...o,type:"SequenceTrack",adapter:t}}if("JBrowse/Store/SeqFeature/BgzipIndexedFasta"===p){const t={type:"BgzipFastaAdapter",fastaLocation:{uri:u,locationType:"UriLocation"}};return t.faiLocation=e.faiUrlTemplate?{uri:l(e.faiUrlTemplate),locationType:"UriLocation"}:{uri:`${u}.fai`,locationType:"UriLocation"},t.gziLocation=e.gziUrlTemplate?{uri:l(e.gziUrlTemplate),locationType:"UriLocation"}:{uri:`${u}.gzi`,locationType:"UriLocation"},{...o,type:"ReferenceSequenceTrack",adapter:t}}if("JBrowse/Store/SeqFeature/TwoBit"===p)return{...o,type:"ReferenceSequenceTrack",adapter:{type:"TwoBitAdapter",twoBitLocation:{uri:u,locationType:"UriLocation"}}}}return o.adapter=(0,i.guessAdapter)({uri:u,locationType:"UriLocation"},void 0,u),o.adapter.type===i.UNSUPPORTED?(0,i.generateUnsupportedTrackConf)(o.name,u,o.category):o.adapter.type===i.UNKNOWN?(0,i.generateUnknownTrackConf)(o.name,u,o.category):(o.type=(0,i.guessTrackType)(o.adapter.type),"QuantitativeTrack"===o.type&&(e.type?.endsWith("XYPlot")?o.defaultRendering="xyplot":e.type?.endsWith("Density")&&(o.defaultRendering="density")),o)}}}]);
+//# sourceMappingURL=5998.22bd8296.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/5998.22bd8296.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/5998.22bd8296.chunk.js","mappings":"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","sources":["../../../plugins/legacy-jbrowse/src/JBrowse1Connection/jb1ToJb2.ts"],"sourcesContent":["import { openLocation } from '@jbrowse/core/util/io'\nimport { objectHash } from '@jbrowse/core/util'\nimport {\n  generateUnknownTrackConf,\n  generateUnsupportedTrackConf,\n  guessAdapter,\n  guessTrackType,\n  UNKNOWN,\n  UNSUPPORTED,\n} from '@jbrowse/core/util/tracks'\nimport { Track, RefSeqs, RefSeq } from './types'\n\ninterface Jb2Track {\n  trackId: string\n  name: string\n  description?: string\n  category?: string[]\n  adapter?: Jb2Adapter\n  type?: string\n  defaultRendering?: string\n}\n\ninterface Jb2Adapter {\n  type: string\n  features?: Jb2Feature[]\n  bamLocation?: Jb2Location\n  cramLocation?: Jb2Location\n  craiLocation?: Jb2Location\n  fastaLocation?: Jb2Location\n  faiLocation?: Jb2Location\n  gziLocation?: Jb2Location\n  twoBitLocation?: Jb2Location\n  bigWigLocation?: Jb2Location\n  bigBedLocation?: Jb2Location\n  vcfGzLocation?: Jb2Location\n  gffLocation?: Jb2Location\n  gffGzLocation?: Jb2Location\n  gtfLocation?: Jb2Location\n  bedGzLocation?: Jb2Location\n  index?: { location: Jb2Location; indexType?: string }\n  rootUrlTemplate?: Jb2Location\n  sequenceAdapter?: Jb2Adapter\n}\n\ninterface Jb2Feature {\n  refName: string\n  uniqueId: string\n  start: number\n  end: number\n}\n\ninterface Jb2Location {\n  uri?: string\n  localPath?: string\n  blobId?: string\n  locationType?: string\n}\n\nexport function convertTrackConfig(\n  jb1TrackConfig: Track,\n  dataRoot: string,\n  sequenceAdapter: Jb2Adapter,\n): Jb2Track {\n  const jb2TrackConfig: Jb2Track = {\n    trackId: objectHash(jb1TrackConfig),\n    name: jb1TrackConfig.key || jb1TrackConfig.label,\n  }\n\n  const description =\n    jb1TrackConfig.metadata &&\n    (jb1TrackConfig.metadata.description || jb1TrackConfig.metadata.Description)\n  if (description) {\n    jb2TrackConfig.description = description\n  }\n\n  const category = jb1TrackConfig.category || jb1TrackConfig.metadata?.category\n  jb2TrackConfig.category = category ? category.split(/\\s*\\/\\s*/) : []\n\n  const { storeClass } = jb1TrackConfig\n  if (!jb1TrackConfig.urlTemplate) {\n    if (!storeClass?.endsWith('FromConfig')) {\n      const trackIdentifier = jb1TrackConfig.key || jb1TrackConfig.label\n      console.warn(\n        `Could not import JBrowse1 track \"${trackIdentifier}\" because it does not have a \"urlTemplate\" or is not a \"FromConfig\" track`,\n      )\n      return generateUnsupportedTrackConf(\n        jb2TrackConfig.name,\n        trackIdentifier,\n        jb2TrackConfig.category,\n      )\n    }\n    return generateFromConfigTrackConfig(jb1TrackConfig, jb2TrackConfig)\n  }\n\n  const resolveUrlTemplate = (urlTemplate: string) => {\n    return new URL(urlTemplate, `${dataRoot}/`).href\n      .replaceAll(/%7B/gi, '{')\n      .replaceAll(/%7D/gi, '}')\n  }\n  const urlTemplate = resolveUrlTemplate(jb1TrackConfig.urlTemplate)\n\n  if (storeClass) {\n    if (storeClass === 'JBrowse/Store/SeqFeature/BAM') {\n      const adapter: Jb2Adapter = {\n        type: 'BamAdapter',\n        bamLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      if (jb1TrackConfig.baiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.baiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n        }\n      } else if (jb1TrackConfig.csiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n          indexType: 'CSI',\n        }\n      } else {\n        adapter.index = {\n          location: { uri: `${urlTemplate}.bai`, locationType: 'UriLocation' },\n        }\n      }\n      return {\n        ...jb2TrackConfig,\n        type: 'AlignmentsTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/CRAM') {\n      const adapter: Jb2Adapter = {\n        type: 'CramAdapter',\n        cramLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        sequenceAdapter,\n      }\n      adapter.craiLocation = jb1TrackConfig.craiUrlTemplate\n        ? {\n            uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),\n            locationType: 'UriLocation',\n          }\n        : {\n            uri: `${urlTemplate}.crai`,\n            locationType: 'UriLocation',\n          }\n      return {\n        ...jb2TrackConfig,\n        type: 'AlignmentsTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/NCList') {\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter: {\n          type: 'NCListAdapter',\n          rootUrlTemplate: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n    if (\n      storeClass === 'JBrowse/Store/SeqFeature/BigWig' ||\n      storeClass === 'JBrowse/Store/BigWig'\n    ) {\n      if (jb1TrackConfig.type?.endsWith('XYPlot')) {\n        jb2TrackConfig.defaultRendering = 'xyplot'\n      } else if (jb1TrackConfig.type?.endsWith('Density')) {\n        jb2TrackConfig.defaultRendering = 'density'\n      }\n      return {\n        ...jb2TrackConfig,\n        type: 'QuantitativeTrack',\n        adapter: {\n          type: 'BigWigAdapter',\n          bigWigLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/VCFTabix') {\n      const adapter: Jb2Adapter = {\n        type: 'VcfTabixAdapter',\n        vcfGzLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      if (jb1TrackConfig.tbiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n        }\n      } else if (jb1TrackConfig.csiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n          indexType: 'CSI',\n        }\n      } else {\n        adapter.index = {\n          location: { uri: `${urlTemplate}.tbi`, locationType: 'UriLocation' },\n        }\n      }\n      return {\n        ...jb2TrackConfig,\n        type: 'VariantTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/VCFTribble') {\n      return generateUnsupportedTrackConf(\n        jb2TrackConfig.name,\n        `VCFTribble (${urlTemplate})`,\n        jb2TrackConfig.category,\n      )\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/GFF3') {\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter: {\n          type: 'Gff3Adapter',\n          gffLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/BigBed') {\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter: {\n          type: 'BigBedAdapter',\n          bigBedLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/GFF3Tabix') {\n      const adapter: Jb2Adapter = {\n        type: 'Gff3TabixAdapter',\n        gffGzLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      if (jb1TrackConfig.tbiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n        }\n      } else if (jb1TrackConfig.csiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n          indexType: 'CSI',\n        }\n      } else {\n        adapter.index = {\n          location: { uri: `${urlTemplate}.tbi`, locationType: 'UriLocation' },\n        }\n      }\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/BED') {\n      return generateUnsupportedTrackConf(\n        jb2TrackConfig.name,\n        `BED (${urlTemplate})`,\n        jb2TrackConfig.category,\n      )\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/BEDTabix') {\n      const adapter: Jb2Adapter = {\n        type: 'BedTabixAdapter',\n        bedGzLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      if (jb1TrackConfig.tbiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n        }\n      } else if (jb1TrackConfig.csiUrlTemplate) {\n        adapter.index = {\n          location: {\n            uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),\n            locationType: 'UriLocation',\n          },\n          indexType: 'CSI',\n        }\n      } else {\n        adapter.index = {\n          location: { uri: `${urlTemplate}.tbi`, locationType: 'UriLocation' },\n        }\n      }\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/GTF') {\n      return {\n        ...jb2TrackConfig,\n        type: 'FeatureTrack',\n        adapter: {\n          type: 'GtfAdapter',\n          gtfLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n    if (\n      storeClass === 'JBrowse/Store/SeqFeature/StaticChunked' ||\n      storeClass === 'JBrowse/Store/Sequence/StaticChunked'\n    ) {\n      return generateUnsupportedTrackConf(\n        jb2TrackConfig.name,\n        `StaticChunked (${urlTemplate})`,\n        jb2TrackConfig.category,\n      )\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/UnindexedFasta') {\n      return generateUnsupportedTrackConf(\n        jb2TrackConfig.name,\n        `UnindexedFasta (${urlTemplate})`,\n        jb2TrackConfig.category,\n      )\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/IndexedFasta') {\n      const adapter: Jb2Adapter = {\n        type: 'IndexedFastaAdapter',\n        fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      adapter.faiLocation = jb1TrackConfig.faiUrlTemplate\n        ? {\n            uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),\n            locationType: 'UriLocation',\n          }\n        : {\n            uri: `${urlTemplate}.fai`,\n            locationType: 'UriLocation',\n          }\n      return {\n        ...jb2TrackConfig,\n        type: 'SequenceTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/BgzipIndexedFasta') {\n      const adapter: Jb2Adapter = {\n        type: 'BgzipFastaAdapter',\n        fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n      }\n      adapter.faiLocation = jb1TrackConfig.faiUrlTemplate\n        ? {\n            uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),\n            locationType: 'UriLocation',\n          }\n        : {\n            uri: `${urlTemplate}.fai`,\n            locationType: 'UriLocation',\n          }\n      adapter.gziLocation = jb1TrackConfig.gziUrlTemplate\n        ? {\n            uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),\n            locationType: 'UriLocation',\n          }\n        : {\n            uri: `${urlTemplate}.gzi`,\n            locationType: 'UriLocation',\n          }\n      return {\n        ...jb2TrackConfig,\n        type: 'ReferenceSequenceTrack',\n        adapter,\n      }\n    }\n    if (storeClass === 'JBrowse/Store/SeqFeature/TwoBit') {\n      return {\n        ...jb2TrackConfig,\n        type: 'ReferenceSequenceTrack',\n        adapter: {\n          type: 'TwoBitAdapter',\n          twoBitLocation: { uri: urlTemplate, locationType: 'UriLocation' },\n        },\n      }\n    }\n  }\n\n  // If we don't recognize the store class, make a best effort to guess by file\n  // type\n  jb2TrackConfig.adapter = guessAdapter(\n    { uri: urlTemplate, locationType: 'UriLocation' },\n    undefined,\n    urlTemplate,\n  )\n\n  if (jb2TrackConfig.adapter.type === UNSUPPORTED) {\n    return generateUnsupportedTrackConf(\n      jb2TrackConfig.name,\n      urlTemplate,\n      jb2TrackConfig.category,\n    )\n  }\n  if (jb2TrackConfig.adapter.type === UNKNOWN) {\n    return generateUnknownTrackConf(\n      jb2TrackConfig.name,\n      urlTemplate,\n      jb2TrackConfig.category,\n    )\n  }\n\n  jb2TrackConfig.type = guessTrackType(jb2TrackConfig.adapter.type)\n\n  if (jb2TrackConfig.type === 'QuantitativeTrack') {\n    if (jb1TrackConfig.type?.endsWith('XYPlot')) {\n      jb2TrackConfig.defaultRendering = 'xyplot'\n    } else if (jb1TrackConfig.type?.endsWith('Density')) {\n      jb2TrackConfig.defaultRendering = 'density'\n    }\n  }\n\n  return jb2TrackConfig\n}\n\nfunction generateFromConfigTrackConfig(\n  jb1TrackConfig: Track,\n  jb2TrackConfig: Jb2Track,\n): Jb2Track {\n  const jb1Features = jb1TrackConfig.features || []\n  const jb2Features = jb1Features.map((feature): Jb2Feature => {\n    const jb2Feature: Jb2Feature = JSON.parse(JSON.stringify(feature))\n    jb2Feature.refName = feature.seq_id\n    jb2Feature.uniqueId = `${feature.seq_id}:${feature.start}-${feature.end}:${\n      feature.name || ''\n    }`\n    return jb2Feature\n  })\n  jb2TrackConfig.adapter = {\n    type: 'FromConfigAdapter',\n    features: jb2Features,\n  }\n  jb2TrackConfig.type = 'FeatureTrack'\n  return jb2TrackConfig\n}\n\nexport async function createRefSeqsAdapter(\n  refSeqs: string | RefSeqs,\n): Promise<Jb2Adapter> {\n  if (typeof refSeqs === 'string') {\n    // assume refSeqs is a url if it is string\n    refSeqs = {\n      url: refSeqs,\n    }\n  }\n\n  // check refseq urls\n  if (refSeqs.url) {\n    if (/.fai$/.exec(refSeqs.url)) {\n      return {\n        type: 'IndexedFastaAdapter',\n        fastaLocation: {\n          uri: refSeqs.url.slice(0, -4),\n          locationType: 'UriLocation',\n        },\n        faiLocation: {\n          uri: refSeqs.url,\n          locationType: 'UriLocation',\n        },\n      }\n    }\n    if (/.2bit$/.exec(refSeqs.url)) {\n      return {\n        type: 'TwoBitAdapter',\n        twoBitLocation: { uri: refSeqs.url, locationType: 'UriLocation' },\n      }\n    }\n    if (/.fa$/.exec(refSeqs.url)) {\n      throw new Error('Unindexed FASTA adapter not available')\n    }\n    if (/.sizes/.exec(refSeqs.url)) {\n      throw new Error('chromosome SIZES adapter not available')\n    }\n    const refSeqsJson = await openLocation({\n      uri: refSeqs.url,\n      locationType: 'UriLocation',\n    }).readFile('utf8')\n    const refSeqsData: RefSeq[] = JSON.parse(refSeqsJson)\n    return refSeqAdapterFromConfig(refSeqsData)\n  }\n  if ('data' in refSeqs) {\n    return refSeqAdapterFromConfig(refSeqs.data || [])\n  }\n  throw new Error(\n    `Could not determine adapter for JBrowse1 refSeqs: ${\n      refSeqs.url || JSON.stringify(refSeqs)\n    }`,\n  )\n}\n\nfunction refSeqAdapterFromConfig(refSeqsData: RefSeq[]): Jb2Adapter {\n  const features = refSeqsData.map(\n    (refSeq): Jb2Feature => ({\n      refName: refSeq.name,\n      uniqueId: refSeq.name,\n      start: refSeq.start,\n      end: refSeq.end,\n    }),\n  )\n  return {\n    type: 'FromConfigAdapter',\n    features,\n  }\n}\n"],"names":["convertTrackConfig","jb1TrackConfig","dataRoot","sequenceAdapter","jb2TrackConfig","trackId","objectHash","name","key","label","description","metadata","Description","category","split","storeClass","urlTemplate","endsWith","trackIdentifier","console","warn","generateUnsupportedTrackConf","jb2Features","features","map","feature","jb2Feature","JSON","parse","stringify","refName","seq_id","uniqueId","start","end","adapter","type","generateFromConfigTrackConfig","resolveUrlTemplate","URL","href","replaceAll","bamLocation","uri","locationType","baiUrlTemplate","index","location","csiUrlTemplate","indexType","cramLocation","craiLocation","craiUrlTemplate","rootUrlTemplate","defaultRendering","bigWigLocation","vcfGzLocation","tbiUrlTemplate","gffLocation","bigBedLocation","gffGzLocation","bedGzLocation","gtfLocation","fastaLocation","faiLocation","faiUrlTemplate","gziLocation","gziUrlTemplate","twoBitLocation","guessAdapter","undefined","UNSUPPORTED","UNKNOWN","generateUnknownTrackConf","guessTrackType"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6021.21769087.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6021],{96021:(e,t,r)=>{r.r(t),r.d(t,{Tooltip:()=>o.A,default:()=>m});var n=r(7552),l=r(68446),a=r(75429),o=r(88262);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c.apply(null,arguments)}const s=e=>e.toLocaleString("en-US"),u=n.forwardRef((function({model:e,feature:t},r){const l=t.get("start"),o=t.get("end"),c=t.get("refName"),u=l===o?s(l):`${s(l)}..${s(o)}`,m=t.get("sources"),i=t.get("source"),b=t.get("summary"),g=Object.fromEntries(e.sources.map((e=>[e.name,e])));return n.createElement("div",{ref:r},[c,u].filter((e=>!!e)).join(":"),n.createElement("br",null),m?n.createElement("table",null,n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"color"),n.createElement("th",null,"source"),n.createElement("th",null,"score"))),n.createElement("tbody",null,Object.entries(m).map((([e,t])=>n.createElement("tr",{key:e},n.createElement("td",{style:{background:g[e].color}}," "),n.createElement("td",null,e),n.createElement("td",null,(0,a.toP)(t.score))))))):n.createElement("span",null,i," ",b?`min:${(0,a.toP)(t.get("minScore"))} avg:${(0,a.toP)(t.get("score"))} max:${(0,a.toP)(t.get("maxScore"))}`:(0,a.toP)(t.get("score"))))})),m=(0,l.observer)((e=>n.createElement(o.A,c({useClientY:!0,TooltipContents:u},e))))}}]);
+//# sourceMappingURL=6021.21769087.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6021.21769087.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6021.21769087.chunk.js","mappings":"8aAQA,MAAMA,EAAMC,GAAcA,EAAEC,eAAe,SAMrCC,EAAkBC,EAAAA,YACtB,UAA0B,MAAEC,EAAK,QAAEC,GAAWC,GAC5C,MAAMC,EAAQF,EAAQG,IAAI,SACpBC,EAAMJ,EAAQG,IAAI,OAClBE,EAAUL,EAAQG,IAAI,WACtBG,EAAQJ,IAAUE,EAAMV,EAAGQ,GAAS,GAAGR,EAAGQ,OAAWR,EAAGU,KACxDG,EAAUP,EAAQG,IAAI,WAGtBK,EAASR,EAAQG,IAAI,UACrBM,EAAUT,EAAQG,IAAI,WACtBO,EAAMC,OAAOC,YAAYb,EAAMQ,QAAQM,KAAIC,GAAO,CAACA,EAAIC,KAAMD,MAEnE,OACEhB,EAAAA,cAAA,OAAKG,IAAKA,GACP,CAACI,EAASC,GAAOU,QAAOC,KAAOA,IAAGC,KAAK,KACxCpB,EAAAA,cAAA,WACCS,EACCT,EAAAA,cAAA,aACEA,EAAAA,cAAA,aACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,SACJA,EAAAA,cAAA,UAAI,UACJA,EAAAA,cAAA,UAAI,WAGRA,EAAAA,cAAA,aACGa,OAAOQ,QAAQZ,GAASM,KAAI,EAAEL,EAAQY,KACrCtB,EAAAA,cAAA,MAAIuB,IAAKb,GACPV,EAAAA,cAAA,MAAIwB,MAAO,CAAEC,WAAYb,EAAIF,GAASgB,QAAS,KAC/C1B,EAAAA,cAAA,UAAKU,GACLV,EAAAA,cAAA,WAAK2B,EAAAA,EAAAA,KAAIL,EAAKM,aAMtB5B,EAAAA,cAAA,YACGU,EAAQ,IACRC,EACG,QAAOgB,EAAAA,EAAAA,KAAIzB,EAAQG,IAAI,qBAAoBsB,EAAAA,EAAAA,KACzCzB,EAAQG,IAAI,kBACLsB,EAAAA,EAAAA,KAAIzB,EAAQG,IAAI,gBACzBsB,EAAAA,EAAAA,KAAIzB,EAAQG,IAAI,WAK9B,IAiBF,GAZsBwB,EAAAA,EAAAA,WACnBC,GAQQ9B,EAAAA,cAAC+B,EAAAA,EAAOC,EAAA,CAACC,YAAU,EAAClC,gBAAiBA,GAAqB+B,K","sources":["../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/Tooltip.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util'\n\n// locals\nimport { Source, toP } from '../../util'\nimport Tooltip, { TooltipContentsComponent } from '../../Tooltip'\n\nconst en = (n: number) => n.toLocaleString('en-US')\n\ninterface Props {\n  model: { sources: Source[] }\n  feature: Feature\n}\nconst TooltipContents = React.forwardRef<HTMLDivElement, Props>(\n  function TooltipContents2({ model, feature }, ref) {\n    const start = feature.get('start')\n    const end = feature.get('end')\n    const refName = feature.get('refName')\n    const coord = start === end ? en(start) : `${en(start)}..${en(end)}`\n    const sources = feature.get('sources') as\n      | Record<string, { score: number }>\n      | undefined\n    const source = feature.get('source')\n    const summary = feature.get('summary')\n    const obj = Object.fromEntries(model.sources.map(ent => [ent.name, ent]))\n\n    return (\n      <div ref={ref}>\n        {[refName, coord].filter(f => !!f).join(':')}\n        <br />\n        {sources ? (\n          <table>\n            <thead>\n              <tr>\n                <th>color</th>\n                <th>source</th>\n                <th>score</th>\n              </tr>\n            </thead>\n            <tbody>\n              {Object.entries(sources).map(([source, data]) => (\n                <tr key={source}>\n                  <td style={{ background: obj[source]!.color }}> </td>\n                  <td>{source}</td>\n                  <td>{toP(data.score)}</td>\n                </tr>\n              ))}\n            </tbody>\n          </table>\n        ) : (\n          <span>\n            {source}{' '}\n            {summary\n              ? `min:${toP(feature.get('minScore'))} avg:${toP(\n                  feature.get('score'),\n                )} max:${toP(feature.get('maxScore'))}`\n              : toP(feature.get('score'))}\n          </span>\n        )}\n      </div>\n    )\n  },\n)\n\ntype Coord = [number, number]\n\nconst WiggleTooltip = observer(\n  (props: {\n    model: { featureUnderMouse: Feature; sources: Source[]; rowHeight: number }\n    height: number\n    offsetMouseCoord: Coord\n    clientMouseCoord: Coord\n    clientRect?: DOMRect\n    TooltipContents?: TooltipContentsComponent\n  }) => {\n    return <Tooltip useClientY TooltipContents={TooltipContents} {...props} />\n  },\n)\nexport default WiggleTooltip\n\nexport { default as Tooltip } from '../../Tooltip'\n"],"names":["en","n","toLocaleString","TooltipContents","React","model","feature","ref","start","get","end","refName","coord","sources","source","summary","obj","Object","fromEntries","map","ent","name","filter","f","join","entries","data","key","style","background","color","toP","score","observer","props","Tooltip","_extends","useClientY"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6043.e402bf73.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6043],{8424:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var r=a(7552),o=a(68446),l=a(29499),n=a(36715),c=a(1343),s=a(58507),i=a(5401),d=a(49823);const m=(0,o.observer)((function({model:e,handleClose:t}){const[a,o]=(0,r.useState)(""),m=/^[A-Za-z][A-Za-z0-9]$/.exec(a);return r.createElement(d.Dialog,{open:!0,onClose:t,title:"Color by tag"},r.createElement(l.A,{style:{overflowX:"hidden"}},r.createElement(n.A,null,"Enter tag to color by: "),r.createElement(n.A,{color:"textSecondary"},"Examples: XS or TS for RNA-seq inferred read strand, ts (lower-case) for minimap2 read strand, HP for haplotype, RG for read group, etc."),r.createElement(c.A,{value:a,onChange:e=>{o(e.target.value)},placeholder:"Enter tag name",inputProps:{maxLength:2},error:2===a.length&&!m,helperText:2!==a.length||m?"":"Not a valid tag",autoComplete:"off"}),r.createElement(s.A,null,r.createElement(i.A,{variant:"contained",color:"primary",onClick:()=>{e.setColorScheme({type:"tag",tag:a}),t()},disabled:!m},"Submit"),r.createElement(i.A,{variant:"contained",color:"secondary",onClick:t},"Cancel"))))}))}}]);
+//# sourceMappingURL=6043.e402bf73.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6043.e402bf73.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6043.e402bf73.chunk.js","mappings":"+OAWA,MAqDA,GArDyBA,EAAAA,EAAAA,WAAS,UAAU,MAC1CC,EAAK,YACLC,IAOA,MAAOC,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,IACzBC,EAAW,wBAAwBC,KAAKJ,GAE9C,OACEK,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAAST,EAAaU,MAAM,gBACvCJ,EAAAA,cAACK,EAAAA,EAAa,CAACC,MAAO,CAAEC,UAAW,WACjCP,EAAAA,cAACQ,EAAAA,EAAU,KAAC,2BACZR,EAAAA,cAACQ,EAAAA,EAAU,CAACC,MAAM,iBAAgB,4IAKlCT,EAAAA,cAACU,EAAAA,EAAS,CACRC,MAAOhB,EACPiB,SAAUC,IACRjB,EAAOiB,EAAMC,OAAOH,MAAM,EAE5BI,YAAY,iBACZC,WAAY,CAAEC,UAAW,GACzBC,MAAsB,IAAfvB,EAAIwB,SAAiBrB,EAC5BsB,WAA2B,IAAfzB,EAAIwB,QAAiBrB,EAA+B,GAApB,kBAC5CuB,aAAa,QAEfrB,EAAAA,cAACsB,EAAAA,EAAa,KACZtB,EAAAA,cAACuB,EAAAA,EAAM,CACLC,QAAQ,YACRf,MAAM,UACNgB,QAASA,KACPhC,EAAMiC,eAAe,CAAEC,KAAM,MAAOhC,QACpCD,GAAa,EAEfkC,UAAW9B,GACZ,UAGDE,EAAAA,cAACuB,EAAAA,EAAM,CAACC,QAAQ,YAAYf,MAAM,YAAYgB,QAAS/B,GAAa,YAO9E,G","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/ColorByTagDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nconst ColorByTagDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: {\n    setColorScheme: (arg: { type: string; tag: string }) => void\n  }\n  handleClose: () => void\n}) {\n  const [tag, setTag] = useState('')\n  const validTag = /^[A-Za-z][A-Za-z0-9]$/.exec(tag)\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Color by tag\">\n      <DialogContent style={{ overflowX: 'hidden' }}>\n        <Typography>Enter tag to color by: </Typography>\n        <Typography color=\"textSecondary\">\n          Examples: XS or TS for RNA-seq inferred read strand, ts (lower-case)\n          for minimap2 read strand, HP for haplotype, RG for read group, etc.\n        </Typography>\n\n        <TextField\n          value={tag}\n          onChange={event => {\n            setTag(event.target.value)\n          }}\n          placeholder=\"Enter tag name\"\n          inputProps={{ maxLength: 2 }}\n          error={tag.length === 2 && !validTag}\n          helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n          autoComplete=\"off\"\n        />\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            onClick={() => {\n              model.setColorScheme({ type: 'tag', tag })\n              handleClose()\n            }}\n            disabled={!validTag}\n          >\n            Submit\n          </Button>\n          <Button variant=\"contained\" color=\"secondary\" onClick={handleClose}>\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default ColorByTagDialog\n"],"names":["observer","model","handleClose","tag","setTag","useState","validTag","exec","React","Dialog","open","onClose","title","DialogContent","style","overflowX","Typography","color","TextField","value","onChange","event","target","placeholder","inputProps","maxLength","error","length","helperText","autoComplete","DialogActions","Button","variant","onClick","setColorScheme","type","disabled"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6054.e0881c55.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6054],{81762:(e,t,o)=>{o.d(t,{A:()=>i,P:()=>a});var n=o(7552);const r=n.createContext({});function a(){return n.useContext(r)}const i=r},23491:(e,t,o)=>{o.d(t,{A:()=>L});var n=o(7552),r=o(93878),a=o(70799),i=o(15622),l=o(51148),s=o(60129),c=o(4785),p=o(29628),d=o(81762),v=o(62487),u=o(69500);const b=(0,l.Ay)("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.completed&&t.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),m=(0,l.Ay)("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.line,t[`line${(0,i.A)(o.orientation)}`]]}})((0,s.A)((({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[600];return{display:"block",borderColor:e.vars?e.vars.palette.StepConnector.border:t,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}}))),L=n.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiStepConnector"}),{className:l,...s}=o,{alternativeLabel:L,orientation:A="horizontal"}=n.useContext(p.A),{active:f,disabled:h,completed:S}=n.useContext(d.A),x={...o,alternativeLabel:L,orientation:A,active:f,completed:S,disabled:h},y=(e=>{const{classes:t,orientation:o,alternativeLabel:n,active:r,completed:l,disabled:s}=e,c={root:["root",o,n&&"alternativeLabel",r&&"active",l&&"completed",s&&"disabled"],line:["line",`line${(0,i.A)(o)}`]};return(0,a.A)(c,v.G,t)})(x);return(0,u.jsx)(b,{className:(0,r.A)(y.root,l),ref:t,ownerState:x,...s,children:(0,u.jsx)(m,{className:y.line,ownerState:x})})}))},62487:(e,t,o)=>{o.d(t,{A:()=>i,G:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepConnector",e)}const i=(0,n.A)("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"])},85059:(e,t,o)=>{o.d(t,{A:()=>b});var n=o(7552),r=o(93878),a=o(70799),i=o(51148),l=o(4785),s=o(25367),c=o(23491),p=o(29628),d=o(69500);const v=(0,i.Ay)("div",{name:"MuiStepper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.nonLinear&&t.nonLinear]}})({display:"flex",variants:[{props:{orientation:"horizontal"},style:{flexDirection:"row",alignItems:"center"}},{props:{orientation:"vertical"},style:{flexDirection:"column"}},{props:{alternativeLabel:!0},style:{alignItems:"flex-start"}}]}),u=(0,d.jsx)(c.A,{}),b=n.forwardRef((function(e,t){const o=(0,l.b)({props:e,name:"MuiStepper"}),{activeStep:i=0,alternativeLabel:c=!1,children:b,className:m,component:L="div",connector:A=u,nonLinear:f=!1,orientation:h="horizontal",...S}=o,x={...o,nonLinear:f,alternativeLabel:c,orientation:h,component:L},y=(e=>{const{orientation:t,nonLinear:o,alternativeLabel:n,classes:r}=e,i={root:["root",t,o&&"nonLinear",n&&"alternativeLabel"]};return(0,a.A)(i,s.g,r)})(x),C=n.Children.toArray(b).filter(Boolean),g=C.map(((e,t)=>n.cloneElement(e,{index:t,last:t+1===C.length,...e.props}))),w=n.useMemo((()=>({activeStep:i,alternativeLabel:c,connector:A,nonLinear:f,orientation:h})),[i,c,A,f,h]);return(0,d.jsx)(p.A.Provider,{value:w,children:(0,d.jsx)(v,{as:L,ownerState:x,className:(0,r.A)(y.root,m),ref:t,...S,children:g})})}))},29628:(e,t,o)=>{o.d(t,{A:()=>i,s:()=>a});var n=o(7552);const r=n.createContext({});function a(){return n.useContext(r)}const i=r},36054:(e,t,o)=>{o.r(t),o.d(t,{StepperContext:()=>a.A,default:()=>n.A,getStepperUtilityClass:()=>r.g,stepperClasses:()=>r.A,useStepperContext:()=>a.s});var n=o(85059),r=o(25367),a=o(29628)},25367:(e,t,o)=>{o.d(t,{A:()=>i,g:()=>a});var n=o(33761),r=o(85693);function a(e){return(0,r.Ay)("MuiStepper",e)}const i=(0,n.A)("MuiStepper",["root","horizontal","vertical","nonLinear","alternativeLabel"])}}]);
+//# sourceMappingURL=6054.e0881c55.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6054.e0881c55.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6054.e0881c55.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/StepConnector/StepConnector.js","../../../node_modules/@mui/material/StepConnector/stepConnectorClasses.js","../../../node_modules/@mui/material/Stepper/Stepper.js","../../../node_modules/@mui/material/Stepper/StepperContext.js","../../../node_modules/@mui/material/Stepper/stepperClasses.js"],"sourcesContent":["import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"../Step/StepContext.js\";\nimport { getStepConnectorUtilityClass } from \"./stepConnectorClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    alternativeLabel,\n    active,\n    completed,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, alternativeLabel && 'alternativeLabel', active && 'active', completed && 'completed', disabled && 'disabled'],\n    line: ['line', `line${capitalize(orientation)}`]\n  };\n  return composeClasses(slots, getStepConnectorUtilityClass, classes);\n};\nconst StepConnectorRoot = styled('div', {\n  name: 'MuiStepConnector',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.completed && styles.completed];\n  }\n})({\n  flex: '1 1 auto',\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      marginLeft: 12 // half icon\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      position: 'absolute',\n      top: 8 + 4,\n      left: 'calc(-50% + 20px)',\n      right: 'calc(50% + 20px)'\n    }\n  }]\n});\nconst StepConnectorLine = styled('span', {\n  name: 'MuiStepConnector',\n  slot: 'Line',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.line, styles[`line${capitalize(ownerState.orientation)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600];\n  return {\n    display: 'block',\n    borderColor: theme.vars ? theme.vars.palette.StepConnector.border : borderColor,\n    variants: [{\n      props: {\n        orientation: 'horizontal'\n      },\n      style: {\n        borderTopStyle: 'solid',\n        borderTopWidth: 1\n      }\n    }, {\n      props: {\n        orientation: 'vertical'\n      },\n      style: {\n        borderLeftStyle: 'solid',\n        borderLeftWidth: 1,\n        minHeight: 24\n      }\n    }]\n  };\n}));\nconst StepConnector = /*#__PURE__*/React.forwardRef(function StepConnector(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepConnector'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation = 'horizontal'\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed\n  } = React.useContext(StepContext);\n  const ownerState = {\n    ...props,\n    alternativeLabel,\n    orientation,\n    active,\n    completed,\n    disabled\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(StepConnectorRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(StepConnectorLine, {\n      className: classes.line,\n      ownerState: ownerState\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepConnector.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepConnector;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepConnectorUtilityClass(slot) {\n  return generateUtilityClass('MuiStepConnector', slot);\n}\nconst stepConnectorClasses = generateUtilityClasses('MuiStepConnector', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'active', 'completed', 'disabled', 'line', 'lineHorizontal', 'lineVertical']);\nexport default stepConnectorClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getStepperUtilityClass } from \"./stepperClasses.js\";\nimport StepConnector from \"../StepConnector/index.js\";\nimport StepperContext from \"./StepperContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    nonLinear,\n    alternativeLabel,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, nonLinear && 'nonLinear', alternativeLabel && 'alternativeLabel']\n  };\n  return composeClasses(slots, getStepperUtilityClass, classes);\n};\nconst StepperRoot = styled('div', {\n  name: 'MuiStepper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.nonLinear && styles.nonLinear];\n  }\n})({\n  display: 'flex',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      flexDirection: 'row',\n      alignItems: 'center'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }]\n});\nconst defaultConnector = /*#__PURE__*/_jsx(StepConnector, {});\nconst Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepper'\n  });\n  const {\n    activeStep = 0,\n    alternativeLabel = false,\n    children,\n    className,\n    component = 'div',\n    connector = defaultConnector,\n    nonLinear = false,\n    orientation = 'horizontal',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    nonLinear,\n    alternativeLabel,\n    orientation,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  const steps = childrenArray.map((step, index) => {\n    return /*#__PURE__*/React.cloneElement(step, {\n      index,\n      last: index + 1 === childrenArray.length,\n      ...step.props\n    });\n  });\n  const contextValue = React.useMemo(() => ({\n    activeStep,\n    alternativeLabel,\n    connector,\n    nonLinear,\n    orientation\n  }), [activeStep, alternativeLabel, connector, nonLinear, orientation]);\n  return /*#__PURE__*/_jsx(StepperContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(StepperRoot, {\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ...other,\n      children: steps\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Stepper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the active step (zero based index).\n   * Set to -1 to disable all the steps.\n   * @default 0\n   */\n  activeStep: integerPropType,\n  /**\n   * If set to 'true' and orientation is horizontal,\n   * then the step label will be positioned under the icon.\n   * @default false\n   */\n  alternativeLabel: PropTypes.bool,\n  /**\n   * Two or more `<Step />` components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * An element to be placed between each step.\n   * @default <StepConnector />\n   */\n  connector: PropTypes.element,\n  /**\n   * If set the `Stepper` will not assist in controlling steps for linear flow.\n   * @default false\n   */\n  nonLinear: PropTypes.bool,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Stepper;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepperUtilityClass(slot) {\n  return generateUtilityClass('MuiStepper', slot);\n}\nconst stepperClasses = generateUtilityClasses('MuiStepper', ['root', 'horizontal', 'vertical', 'nonLinear', 'alternativeLabel']);\nexport default stepperClasses;"],"names":["StepContext","useStepContext","StepConnectorRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","alternativeLabel","completed","flex","variants","style","marginLeft","position","top","left","right","StepConnectorLine","line","theme","borderColor","palette","mode","grey","display","vars","StepConnector","border","borderTopStyle","borderTopWidth","borderLeftStyle","borderLeftWidth","minHeight","inProps","ref","className","other","active","disabled","classes","slots","useUtilityClasses","children","getStepConnectorUtilityClass","StepperRoot","nonLinear","flexDirection","alignItems","defaultConnector","activeStep","component","connector","g","childrenArray","toArray","filter","Boolean","steps","map","step","index","last","length","contextValue","Provider","value","as","StepperContext","useStepperContext","getStepperUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6149.c6c4af73.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6149],{56149:(e,s,l)=>{l.r(s),l.d(s,{default:()=>t.A,getOutlinedInputUtilityClass:()=>u.v,outlinedInputClasses:()=>u.A});var t=l(28172),u=l(29683)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6157.96f40683.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6157],{24959:(e,t,o)=>{o.d(t,{A:()=>r});const r=(0,o(15543).Ay)()},61977:(e,t,o)=>{o.d(t,{b:()=>x});var r=o(6614),l=o(83673),s=o(7552),n=o(93878),a=o(24959),i=o(88519),c=o(76959),u=o(64565),d=o(69500);const p=["className","children"],b=(0,a.A)("div",{name:"MuiDataGrid",slot:"ToolbarContainer",overridesResolver:(e,t)=>t.toolbarContainer})((({theme:e})=>({display:"flex",alignItems:"center",flexWrap:"wrap",gap:e.spacing(1),padding:e.spacing(.5,.5,0)}))),x=s.forwardRef((function(e,t){const{className:o,children:s}=e,a=(0,l.A)(e,p),x=(0,u.A)(),m=(e=>{const{classes:t}=e;return(0,i.A)({root:["toolbarContainer"]},c.B,t)})(x);return s?(0,d.jsx)(b,(0,r.A)({ref:t,className:(0,n.A)(o,m.root),ownerState:x},a,{children:s})):null}))},76157:(e,t,o)=>{o.d(t,{O:()=>f});var r=o(6614),l=o(83673),s=o(7552),n=o(17776),a=o(61977),i=o(85262),c=o(44784),u=o(19271),d=o(38175),p=o(64565),b=o(26524),x=o(69500);const m=["className","csvOptions","printOptions","excelOptions","showQuickFilter","quickFilterProps"],f=s.forwardRef((function(e,t){const{csvOptions:o,printOptions:s,excelOptions:f,showQuickFilter:h=!1,quickFilterProps:A={}}=e,v=(0,l.A)(e,m),g=(0,p.A)();return g.disableColumnFilter&&g.disableColumnSelector&&g.disableDensitySelector&&!h?null:(0,x.jsxs)(a.b,(0,r.A)({ref:t},v,{children:[(0,x.jsx)(i.j,{}),(0,x.jsx)(u.Q,{}),(0,x.jsx)(c.z,{}),(0,x.jsx)(d.qn,{csvOptions:o,printOptions:s,excelOptions:f}),(0,x.jsx)(n.A,{sx:{flex:1}}),h&&(0,x.jsx)(b.b,(0,r.A)({},A))]}))}))},85262:(e,t,o)=>{o.d(t,{j:()=>p});var r=o(6614),l=o(7552),s=o(89456),n=o(12274),a=o(38577),i=o(48534),c=o(76404),u=o(64565),d=o(69500);const p=l.forwardRef((function(e,t){const{slotProps:o={}}=e,l=o.button||{},p=o.tooltip||{},b=(0,s.A)(),x=(0,s.A)(),m=(0,c.h)(),f=(0,u.A)(),h=(0,n.Nc)(m,a._);if(f.disableColumnSelector)return null;const A=h.open&&h.panelId===x;return(0,d.jsx)(f.slots.baseTooltip,(0,r.A)({title:m.current.getLocaleText("toolbarColumnsLabel"),enterDelay:1e3},p,f.slotProps?.baseTooltip,{children:(0,d.jsx)(f.slots.baseButton,(0,r.A)({ref:t,id:b,size:"small","aria-label":m.current.getLocaleText("toolbarColumnsLabel"),"aria-haspopup":"menu","aria-expanded":A,"aria-controls":A?x:void 0,startIcon:(0,d.jsx)(f.slots.columnSelectorIcon,{})},l,{onClick:e=>{h.open&&h.openedPanelValue===i.y.columns?m.current.hidePreferences():m.current.showPreferences(i.y.columns,x,b),l.onClick?.(e)}},f.slotProps?.baseButton,{children:m.current.getLocaleText("toolbarColumns")}))}))}))},44784:(e,t,o)=>{o.d(t,{z:()=>A});var r=o(6614),l=o(7552),s=o(57377),n=o(92325),a=o(6679),i=o(29629),c=o(66765),u=o(33658),d=o(67129),p=o(76404),b=o(12274),x=o(83749),m=o(64565),f=o(76959),h=o(69500);const A=l.forwardRef((function(e,t){const{slotProps:o={}}=e,A=o.button||{},v=o.tooltip||{},g=(0,p.h)(),j=(0,m.A)(),y=(0,b.Nc)(g,u._v),k=(0,s.A)(),F=(0,s.A)(),[T,C]=l.useState(!1),L=l.useRef(null),w=(0,n.A)(t,L),P=[{icon:(0,h.jsx)(j.slots.densityCompactIcon,{}),label:g.current.getLocaleText("toolbarDensityCompact"),value:"compact"},{icon:(0,h.jsx)(j.slots.densityStandardIcon,{}),label:g.current.getLocaleText("toolbarDensityStandard"),value:"standard"},{icon:(0,h.jsx)(j.slots.densityComfortableIcon,{}),label:g.current.getLocaleText("toolbarDensityComfortable"),value:"comfortable"}],I=l.useMemo((()=>{switch(y){case"compact":return(0,h.jsx)(j.slots.densityCompactIcon,{});case"comfortable":return(0,h.jsx)(j.slots.densityComfortableIcon,{});default:return(0,h.jsx)(j.slots.densityStandardIcon,{})}}),[y,j]);if(j.disableDensitySelector)return null;const D=P.map(((e,t)=>(0,h.jsxs)(i.A,{onClick:()=>{return t=e.value,g.current.setDensity(t),void C(!1);var t},selected:e.value===y,children:[(0,h.jsx)(c.A,{children:e.icon}),e.label]},t)));return(0,h.jsxs)(l.Fragment,{children:[(0,h.jsx)(j.slots.baseTooltip,(0,r.A)({title:g.current.getLocaleText("toolbarDensityLabel"),enterDelay:1e3},v,j.slotProps?.baseTooltip,{children:(0,h.jsx)(j.slots.baseButton,(0,r.A)({ref:w,size:"small",startIcon:I,"aria-label":g.current.getLocaleText("toolbarDensityLabel"),"aria-haspopup":"menu","aria-expanded":T,"aria-controls":T?F:void 0,id:k},A,{onClick:e=>{C((e=>!e)),A.onClick?.(e)}},j.slotProps?.baseButton,{children:g.current.getLocaleText("toolbarDensity")}))})),(0,h.jsx)(x.U,{open:T,target:L.current,onClose:()=>{C(!1)},position:"bottom-start",children:(0,h.jsx)(a.A,{id:F,className:f.x.menuList,"aria-labelledby":k,onKeyDown:e=>{"Tab"===e.key&&e.preventDefault(),(0,d.HF)(e.key)&&C(!1)},autoFocusItem:T,children:D})})]})}))},19271:(e,t,o)=>{o.d(t,{Q:()=>g});var r=o(6614),l=o(7552),s=o(51148),n=o(88519),a=o(57377),i=o(17505),c=o(84885),u=o(80163),d=o(12274),p=o(2220),b=o(38577),x=o(48534),m=o(76404),f=o(64565),h=o(76959),A=o(69500);const v=(0,s.Ay)("ul",{name:"MuiDataGrid",slot:"ToolbarFilterList",overridesResolver:(e,t)=>t.toolbarFilterList})((({theme:e})=>({margin:e.spacing(1,1,.5),padding:e.spacing(0,1)}))),g=l.forwardRef((function(e,t){const{slotProps:o={}}=e,s=o.button||{},g=o.tooltip||{},j=(0,m.h)(),y=(0,f.A)(),k=(0,d.Nc)(j,p.Ai),F=(0,d.Nc)(j,u.gv),T=(0,d.Nc)(j,b._),C=(e=>{const{classes:t}=e;return(0,n.A)({root:["toolbarFilterList"]},h.B,t)})(y),L=(0,a.A)(),w=(0,a.A)(),P=l.useMemo((()=>{if(T.open)return j.current.getLocaleText("toolbarFiltersTooltipHide");if(0===k.length)return j.current.getLocaleText("toolbarFiltersTooltipShow");const e=e=>F[e.field].filterOperators.find((t=>t.value===e.operator)).label||j.current.getLocaleText(`filterOperator${(0,i.A)(e.operator)}`).toString(),t=e=>{const{getValueAsString:t}=F[e.field].filterOperators.find((t=>t.value===e.operator));return t?t(e.value):e.value};return(0,A.jsxs)("div",{children:[j.current.getLocaleText("toolbarFiltersTooltipActive")(k.length),(0,A.jsx)(v,{className:C.root,ownerState:y,children:k.map(((o,l)=>(0,r.A)({},F[o.field]&&(0,A.jsx)("li",{children:`${F[o.field].headerName||o.field}\n                  ${e(o)}\n                  ${null!=o.value?t(o):""}`},l))))})]})}),[j,y,T.open,k,F,C]);if(y.disableColumnFilter)return null;const I=T.open&&T.panelId===w;return(0,A.jsx)(y.slots.baseTooltip,(0,r.A)({title:P,enterDelay:1e3},g,y.slotProps?.baseTooltip,{children:(0,A.jsx)(y.slots.baseButton,(0,r.A)({ref:t,id:L,size:"small","aria-label":j.current.getLocaleText("toolbarFiltersLabel"),"aria-controls":I?w:void 0,"aria-expanded":I,"aria-haspopup":!0,startIcon:(0,A.jsx)(c.A,{badgeContent:k.length,color:"primary",children:(0,A.jsx)(y.slots.openFilterButtonIcon,{})})},s,{onClick:e=>{const{open:t,openedPanelValue:o}=T;t&&o===x.y.filters?j.current.hidePreferences():j.current.showPreferences(x.y.filters,w,L),s.onClick?.(e)}},y.slotProps?.baseButton,{children:j.current.getLocaleText("toolbarFilters")}))}))}))},26524:(e,t,o)=>{o.d(t,{b:()=>k});var r=o(6614),l=o(83673),s=o(7552),n=o(93878),a=o(1343),i=o(51148),c=o(33693),u=o(88519),d=o(76959),p=o(76404),b=o(64565),x=o(12274),m=o(2220),f=o(58766),h=o(69500);const A=["quickFilterParser","quickFilterFormatter","debounceMs","className"],v=e=>{const{classes:t}=e;return(0,u.A)({root:["toolbarQuickFilter"]},d.B,t)},g=(0,i.Ay)(a.A,{name:"MuiDataGrid",slot:"ToolbarQuickFilter",overridesResolver:(e,t)=>t.toolbarQuickFilter})((({theme:e})=>({width:"auto",paddingBottom:e.spacing(.5),"& input":{marginLeft:e.spacing(.5)},"& .MuiInput-underline:before":{borderBottom:`1px solid ${(e.vars||e).palette.divider}`},'& input[type="search"]::-webkit-search-decoration,\n  & input[type="search"]::-webkit-search-cancel-button,\n  & input[type="search"]::-webkit-search-results-button,\n  & input[type="search"]::-webkit-search-results-decoration':{display:"none"}}))),j=e=>e.split(" ").filter((e=>""!==e)),y=e=>e.join(" ");function k(e){const t=(0,p.h)(),o=(0,b.A)(),a=v(o),i=(0,x.Nc)(t,m.q6),{quickFilterParser:u=j,quickFilterFormatter:d=y,debounceMs:k=o.filterDebounceMs,className:F}=e,T=(0,l.A)(e,A),[C,L]=s.useState((()=>d(i??[]))),w=s.useRef(i);s.useEffect((()=>{(0,f.Hv)(w.current,i)||(w.current=i,L((e=>(0,f.Hv)(u(e),i)?e:d(i??[]))))}),[i,d,u]);const P=s.useCallback((e=>{const o=u(e);w.current=o,t.current.setQuickFilterValues(o)}),[t,u]),I=s.useMemo((()=>(0,c.A)(P,k)),[P,k]),D=s.useCallback((e=>{const t=e.target.value;L(t),I(t)}),[I]),S=s.useCallback((()=>{L(""),P("")}),[P]);return(0,h.jsx)(g,(0,r.A)({as:o.slots.baseTextField,ownerState:o,variant:"standard",value:C,onChange:D,className:(0,n.A)(F,a.root),placeholder:t.current.getLocaleText("toolbarQuickFilterPlaceholder"),"aria-label":t.current.getLocaleText("toolbarQuickFilterLabel"),type:"search"},T,{InputProps:(0,r.A)({startAdornment:(0,h.jsx)(o.slots.quickFilterIcon,{fontSize:"small"}),endAdornment:(0,h.jsx)(o.slots.baseIconButton,(0,r.A)({"aria-label":t.current.getLocaleText("toolbarQuickFilterDeleteIconLabel"),size:"small",sx:[C?{visibility:"visible"}:{visibility:"hidden"}],onClick:S},o.slotProps?.baseIconButton,{children:(0,h.jsx)(o.slots.quickFilterClearIcon,{fontSize:"small"})}))},T.InputProps)},o.slotProps?.baseTextField))}}}]);
+//# sourceMappingURL=6157.96f40683.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6157.96f40683.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6157.96f40683.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/system/styled/styled.js","../../../node_modules/@mui/x-data-grid/components/containers/GridToolbarContainer.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbar.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarColumnsButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarDensitySelector.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarFilterButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarQuickFilter.js"],"sourcesContent":["import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['toolbarContainer']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarContainerRoot = styled('div', {\n  name: 'MuiDataGrid',\n  slot: 'ToolbarContainer',\n  overridesResolver: (_, styles) => styles.toolbarContainer\n})(({\n  theme\n}) => ({\n  display: 'flex',\n  alignItems: 'center',\n  flexWrap: 'wrap',\n  gap: theme.spacing(1),\n  padding: theme.spacing(0.5, 0.5, 0)\n}));\nconst GridToolbarContainer = /*#__PURE__*/React.forwardRef(function GridToolbarContainer(props, ref) {\n  const {\n      className,\n      children\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  if (!children) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GridToolbarContainerRoot, _extends({\n    ref: ref,\n    className: clsx(className, classes.root),\n    ownerState: rootProps\n  }, other, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarContainer.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbarContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"csvOptions\", \"printOptions\", \"excelOptions\", \"showQuickFilter\", \"quickFilterProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Box from '@mui/material/Box';\nimport { GridToolbarContainer } from \"../containers/GridToolbarContainer.js\";\nimport { GridToolbarColumnsButton } from \"./GridToolbarColumnsButton.js\";\nimport { GridToolbarDensitySelector } from \"./GridToolbarDensitySelector.js\";\nimport { GridToolbarFilterButton } from \"./GridToolbarFilterButton.js\";\nimport { GridToolbarExport } from \"./GridToolbarExport.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { GridToolbarQuickFilter } from \"./GridToolbarQuickFilter.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {\n  // TODO v7: think about where export option should be passed.\n  // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate\n  const {\n      csvOptions,\n      printOptions,\n      excelOptions,\n      showQuickFilter = false,\n      quickFilterProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootProps = useGridRootProps();\n  if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(GridToolbarContainer, _extends({\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {\n      csvOptions: csvOptions,\n      printOptions: printOptions\n      // TODO: remove the reference to excelOptions in community package\n      ,\n      excelOptions: excelOptions\n    }), /*#__PURE__*/_jsx(Box, {\n      sx: {\n        flex: 1\n      }\n    }), showQuickFilter && /*#__PURE__*/_jsx(GridToolbarQuickFilter, _extends({}, quickFilterProps))]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Props passed to the quick filter component.\n   */\n  quickFilterProps: PropTypes.object,\n  /**\n   * Show the quick filter component.\n   * @default false\n   */\n  showQuickFilter: PropTypes.bool,\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbar };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/material/utils';\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridPreferencePanelStateSelector } from \"../../hooks/features/preferencesPanel/gridPreferencePanelSelector.js\";\nimport { GridPreferencePanelsValue } from \"../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {\n  const {\n    slotProps = {}\n  } = props;\n  const buttonProps = slotProps.button || {};\n  const tooltipProps = slotProps.tooltip || {};\n  const columnButtonId = useId();\n  const columnPanelId = useId();\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n  const showColumns = event => {\n    if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {\n      apiRef.current.hidePreferences();\n    } else {\n      apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);\n    }\n    buttonProps.onClick?.(event);\n  };\n\n  // Disable the button if the corresponding is disabled\n  if (rootProps.disableColumnSelector) {\n    return null;\n  }\n  const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n    title: apiRef.current.getLocaleText('toolbarColumnsLabel'),\n    enterDelay: 1000\n  }, tooltipProps, rootProps.slotProps?.baseTooltip, {\n    children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n      ref: ref,\n      id: columnButtonId,\n      size: \"small\",\n      \"aria-label\": apiRef.current.getLocaleText('toolbarColumnsLabel'),\n      \"aria-haspopup\": \"menu\",\n      \"aria-expanded\": isOpen,\n      \"aria-controls\": isOpen ? columnPanelId : undefined,\n      startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})\n    }, buttonProps, {\n      onClick: showColumns\n    }, rootProps.slotProps?.baseButton, {\n      children: apiRef.current.getLocaleText('toolbarColumns')\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarColumnsButton.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridToolbarColumnsButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { gridDensitySelector } from \"../../hooks/features/density/densitySelector.js\";\nimport { isHideMenuKey } from \"../../utils/keyboardUtils.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { GridMenu } from \"../menu/GridMenu.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { gridClasses } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {\n  const {\n    slotProps = {}\n  } = props;\n  const buttonProps = slotProps.button || {};\n  const tooltipProps = slotProps.tooltip || {};\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const density = useGridSelector(apiRef, gridDensitySelector);\n  const densityButtonId = useId();\n  const densityMenuId = useId();\n  const [open, setOpen] = React.useState(false);\n  const buttonRef = React.useRef(null);\n  const handleRef = useForkRef(ref, buttonRef);\n  const densityOptions = [{\n    icon: /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {}),\n    label: apiRef.current.getLocaleText('toolbarDensityCompact'),\n    value: 'compact'\n  }, {\n    icon: /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {}),\n    label: apiRef.current.getLocaleText('toolbarDensityStandard'),\n    value: 'standard'\n  }, {\n    icon: /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {}),\n    label: apiRef.current.getLocaleText('toolbarDensityComfortable'),\n    value: 'comfortable'\n  }];\n  const startIcon = React.useMemo(() => {\n    switch (density) {\n      case 'compact':\n        return /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {});\n      case 'comfortable':\n        return /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {});\n      default:\n        return /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {});\n    }\n  }, [density, rootProps]);\n  const handleDensitySelectorOpen = event => {\n    setOpen(prevOpen => !prevOpen);\n    buttonProps.onClick?.(event);\n  };\n  const handleDensitySelectorClose = () => {\n    setOpen(false);\n  };\n  const handleDensityUpdate = newDensity => {\n    apiRef.current.setDensity(newDensity);\n    setOpen(false);\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    if (isHideMenuKey(event.key)) {\n      setOpen(false);\n    }\n  };\n\n  // Disable the button if the corresponding is disabled\n  if (rootProps.disableDensitySelector) {\n    return null;\n  }\n  const densityElements = densityOptions.map((option, index) => /*#__PURE__*/_jsxs(MenuItem, {\n    onClick: () => handleDensityUpdate(option.value),\n    selected: option.value === density,\n    children: [/*#__PURE__*/_jsx(ListItemIcon, {\n      children: option.icon\n    }), option.label]\n  }, index));\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n      title: apiRef.current.getLocaleText('toolbarDensityLabel'),\n      enterDelay: 1000\n    }, tooltipProps, rootProps.slotProps?.baseTooltip, {\n      children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n        ref: handleRef,\n        size: \"small\",\n        startIcon: startIcon,\n        \"aria-label\": apiRef.current.getLocaleText('toolbarDensityLabel'),\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": open,\n        \"aria-controls\": open ? densityMenuId : undefined,\n        id: densityButtonId\n      }, buttonProps, {\n        onClick: handleDensitySelectorOpen\n      }, rootProps.slotProps?.baseButton, {\n        children: apiRef.current.getLocaleText('toolbarDensity')\n      }))\n    })), /*#__PURE__*/_jsx(GridMenu, {\n      open: open,\n      target: buttonRef.current,\n      onClose: handleDensitySelectorClose,\n      position: \"bottom-start\",\n      children: /*#__PURE__*/_jsx(MenuList, {\n        id: densityMenuId,\n        className: gridClasses.menuList,\n        \"aria-labelledby\": densityButtonId,\n        onKeyDown: handleListKeyDown,\n        autoFocusItem: open,\n        children: densityElements\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarDensitySelector.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridToolbarDensitySelector };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { gridColumnLookupSelector } from \"../../hooks/features/columns/gridColumnsSelector.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridFilterActiveItemsSelector } from \"../../hooks/features/filter/gridFilterSelector.js\";\nimport { gridPreferencePanelStateSelector } from \"../../hooks/features/preferencesPanel/gridPreferencePanelSelector.js\";\nimport { GridPreferencePanelsValue } from \"../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { getDataGridUtilityClass } from \"../../constants/gridClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['toolbarFilterList']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarFilterListRoot = styled('ul', {\n  name: 'MuiDataGrid',\n  slot: 'ToolbarFilterList',\n  overridesResolver: (_props, styles) => styles.toolbarFilterList\n})(({\n  theme\n}) => ({\n  margin: theme.spacing(1, 1, 0.5),\n  padding: theme.spacing(0, 1)\n}));\nconst GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {\n  const {\n    slotProps = {}\n  } = props;\n  const buttonProps = slotProps.button || {};\n  const tooltipProps = slotProps.tooltip || {};\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const activeFilters = useGridSelector(apiRef, gridFilterActiveItemsSelector);\n  const lookup = useGridSelector(apiRef, gridColumnLookupSelector);\n  const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n  const classes = useUtilityClasses(rootProps);\n  const filterButtonId = useId();\n  const filterPanelId = useId();\n  const tooltipContentNode = React.useMemo(() => {\n    if (preferencePanel.open) {\n      return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');\n    }\n    if (activeFilters.length === 0) {\n      return apiRef.current.getLocaleText('toolbarFiltersTooltipShow');\n    }\n    const getOperatorLabel = item => lookup[item.field].filterOperators.find(operator => operator.value === item.operator).label || apiRef.current.getLocaleText(`filterOperator${capitalize(item.operator)}`).toString();\n    const getFilterItemValue = item => {\n      const {\n        getValueAsString\n      } = lookup[item.field].filterOperators.find(operator => operator.value === item.operator);\n      return getValueAsString ? getValueAsString(item.value) : item.value;\n    };\n    return /*#__PURE__*/_jsxs(\"div\", {\n      children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {\n        className: classes.root,\n        ownerState: rootProps,\n        children: activeFilters.map((item, index) => _extends({}, lookup[item.field] && /*#__PURE__*/_jsx(\"li\", {\n          children: `${lookup[item.field].headerName || item.field}\n                  ${getOperatorLabel(item)}\n                  ${\n          // implicit check for null and undefined\n          item.value != null ? getFilterItemValue(item) : ''}`\n        }, index)))\n      })]\n    });\n  }, [apiRef, rootProps, preferencePanel.open, activeFilters, lookup, classes]);\n  const toggleFilter = event => {\n    const {\n      open,\n      openedPanelValue\n    } = preferencePanel;\n    if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n      apiRef.current.hidePreferences();\n    } else {\n      apiRef.current.showPreferences(GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);\n    }\n    buttonProps.onClick?.(event);\n  };\n\n  // Disable the button if the corresponding is disabled\n  if (rootProps.disableColumnFilter) {\n    return null;\n  }\n  const isOpen = preferencePanel.open && preferencePanel.panelId === filterPanelId;\n  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n    title: tooltipContentNode,\n    enterDelay: 1000\n  }, tooltipProps, rootProps.slotProps?.baseTooltip, {\n    children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n      ref: ref,\n      id: filterButtonId,\n      size: \"small\",\n      \"aria-label\": apiRef.current.getLocaleText('toolbarFiltersLabel'),\n      \"aria-controls\": isOpen ? filterPanelId : undefined,\n      \"aria-expanded\": isOpen,\n      \"aria-haspopup\": true,\n      startIcon: /*#__PURE__*/_jsx(Badge, {\n        badgeContent: activeFilters.length,\n        color: \"primary\",\n        children: /*#__PURE__*/_jsx(rootProps.slots.openFilterButtonIcon, {})\n      })\n    }, buttonProps, {\n      onClick: toggleFilter\n    }, rootProps.slotProps?.baseButton, {\n      children: apiRef.current.getLocaleText('toolbarFilters')\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarFilterButton.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.object\n} : void 0;\nexport { GridToolbarFilterButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"quickFilterParser\", \"quickFilterFormatter\", \"debounceMs\", \"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport TextField from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\nimport { unstable_debounce as debounce } from '@mui/utils';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getDataGridUtilityClass } from \"../../constants/index.js\";\nimport { useGridApiContext } from \"../../hooks/utils/useGridApiContext.js\";\nimport { useGridRootProps } from \"../../hooks/utils/useGridRootProps.js\";\nimport { useGridSelector } from \"../../hooks/utils/useGridSelector.js\";\nimport { gridQuickFilterValuesSelector } from \"../../hooks/features/filter/index.js\";\nimport { isDeepEqual } from \"../../utils/utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['toolbarQuickFilter']\n  };\n  return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarQuickFilterRoot = styled(TextField, {\n  name: 'MuiDataGrid',\n  slot: 'ToolbarQuickFilter',\n  overridesResolver: (props, styles) => styles.toolbarQuickFilter\n})(({\n  theme\n}) => ({\n  width: 'auto',\n  paddingBottom: theme.spacing(0.5),\n  '& input': {\n    marginLeft: theme.spacing(0.5)\n  },\n  '& .MuiInput-underline:before': {\n    borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n  },\n  [`& input[type=\"search\"]::-webkit-search-decoration,\n  & input[type=\"search\"]::-webkit-search-cancel-button,\n  & input[type=\"search\"]::-webkit-search-results-button,\n  & input[type=\"search\"]::-webkit-search-results-decoration`]: {\n    /* clears the 'X' icon from Chrome */\n    display: 'none'\n  }\n}));\nconst defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');\nconst defaultSearchValueFormatter = values => values.join(' ');\nfunction GridToolbarQuickFilter(props) {\n  const apiRef = useGridApiContext();\n  const rootProps = useGridRootProps();\n  const classes = useUtilityClasses(rootProps);\n  const quickFilterValues = useGridSelector(apiRef, gridQuickFilterValuesSelector);\n  const {\n      quickFilterParser = defaultSearchValueParser,\n      quickFilterFormatter = defaultSearchValueFormatter,\n      debounceMs = rootProps.filterDebounceMs,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues ?? []));\n  const prevQuickFilterValuesRef = React.useRef(quickFilterValues);\n  React.useEffect(() => {\n    if (!isDeepEqual(prevQuickFilterValuesRef.current, quickFilterValues)) {\n      // The model of quick filter value has been updated\n      prevQuickFilterValuesRef.current = quickFilterValues;\n\n      // Update the input value if needed to match the new model\n      setSearchValue(prevSearchValue => isDeepEqual(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues ?? []));\n    }\n  }, [quickFilterValues, quickFilterFormatter, quickFilterParser]);\n  const updateSearchValue = React.useCallback(newSearchValue => {\n    const newQuickFilterValues = quickFilterParser(newSearchValue);\n    prevQuickFilterValuesRef.current = newQuickFilterValues;\n    apiRef.current.setQuickFilterValues(newQuickFilterValues);\n  }, [apiRef, quickFilterParser]);\n  const debouncedUpdateSearchValue = React.useMemo(() => debounce(updateSearchValue, debounceMs), [updateSearchValue, debounceMs]);\n  const handleSearchValueChange = React.useCallback(event => {\n    const newSearchValue = event.target.value;\n    setSearchValue(newSearchValue);\n    debouncedUpdateSearchValue(newSearchValue);\n  }, [debouncedUpdateSearchValue]);\n  const handleSearchReset = React.useCallback(() => {\n    setSearchValue('');\n    updateSearchValue('');\n  }, [updateSearchValue]);\n  return /*#__PURE__*/_jsx(GridToolbarQuickFilterRoot, _extends({\n    as: rootProps.slots.baseTextField,\n    ownerState: rootProps,\n    variant: \"standard\",\n    value: searchValue,\n    onChange: handleSearchValueChange,\n    className: clsx(className, classes.root),\n    placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),\n    \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),\n    type: \"search\"\n  }, other, {\n    InputProps: _extends({\n      startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {\n        fontSize: \"small\"\n      }),\n      endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n        \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),\n        size: \"small\",\n        sx: [searchValue ? {\n          visibility: 'visible'\n        } : {\n          visibility: 'hidden'\n        }],\n        onClick: handleSearchReset\n      }, rootProps.slotProps?.baseIconButton, {\n        children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {\n          fontSize: \"small\"\n        })\n      }))\n    }, other.InputProps)\n  }, rootProps.slotProps?.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarQuickFilter.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The debounce time in milliseconds.\n   * @default 150\n   */\n  debounceMs: PropTypes.number,\n  /**\n   * Function responsible for formatting values of quick filter in a string when the model is modified\n   * @param {any[]} values The new values passed to the quick filter model\n   * @returns {string} The string to display in the text field\n   * @default (values: string[]) => values.join(' ')\n   */\n  quickFilterFormatter: PropTypes.func,\n  /**\n   * Function responsible for parsing text input in an array of independent values for quick filtering.\n   * @param {string} input The value entered by the user\n   * @returns {any[]} The array of value on which quick filter is applied\n   * @default (searchText: string) => searchText\n   *   .split(' ')\n   *   .filter((word) => word !== '')\n   */\n  quickFilterParser: PropTypes.func\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n * - [Filtering - quick filter](https://mui.com/x/react-data-grid/filtering/quick-filter/)\n *\n * API:\n * - [GridToolbarQuickFilter API](https://mui.com/x/api/data-grid/grid-toolbar-quick-filter/)\n */\nexport { GridToolbarQuickFilter };"],"names":["_excluded","GridToolbarContainerRoot","name","slot","overridesResolver","_","styles","toolbarContainer","theme","display","alignItems","flexWrap","gap","spacing","padding","GridToolbarContainer","props","ref","className","children","other","rootProps","classes","ownerState","root","useUtilityClasses","GridToolbar","csvOptions","printOptions","excelOptions","showQuickFilter","quickFilterProps","disableColumnFilter","disableColumnSelector","disableDensitySelector","sx","flex","GridToolbarColumnsButton","slotProps","buttonProps","button","tooltipProps","tooltip","columnButtonId","columnPanelId","apiRef","preferencePanel","isOpen","open","panelId","slots","baseTooltip","title","current","getLocaleText","enterDelay","baseButton","id","size","undefined","startIcon","columnSelectorIcon","onClick","event","openedPanelValue","columns","hidePreferences","showPreferences","GridToolbarDensitySelector","density","densityButtonId","densityMenuId","setOpen","buttonRef","handleRef","densityOptions","icon","densityCompactIcon","label","value","densityStandardIcon","densityComfortableIcon","densityElements","map","option","index","handleDensityUpdate","newDensity","setDensity","selected","prevOpen","target","onClose","position","menuList","onKeyDown","key","preventDefault","autoFocusItem","GridToolbarFilterListRoot","_props","toolbarFilterList","margin","GridToolbarFilterButton","activeFilters","lookup","filterButtonId","filterPanelId","tooltipContentNode","length","getOperatorLabel","item","field","filterOperators","find","operator","toString","getFilterItemValue","getValueAsString","headerName","badgeContent","color","openFilterButtonIcon","filters","GridToolbarQuickFilterRoot","toolbarQuickFilter","width","paddingBottom","marginLeft","borderBottom","vars","palette","divider","defaultSearchValueParser","searchText","split","filter","word","defaultSearchValueFormatter","values","join","GridToolbarQuickFilter","quickFilterValues","quickFilterParser","quickFilterFormatter","debounceMs","filterDebounceMs","searchValue","setSearchValue","prevQuickFilterValuesRef","prevSearchValue","updateSearchValue","newSearchValue","newQuickFilterValues","setQuickFilterValues","debouncedUpdateSearchValue","handleSearchValueChange","handleSearchReset","as","baseTextField","variant","onChange","placeholder","type","InputProps","startAdornment","quickFilterIcon","fontSize","endAdornment","baseIconButton","visibility","quickFilterClearIcon"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6205.903f897d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6205,5243],{66205:(e,t,r)=>{r.r(t),r.d(t,{default:()=>N});var n=r(7552),a=r(68446),o=r(49823),i=r(99546),l=r(75785),s=r(83803),c=r(61723),m=r(8463),d=r(91404),u=r(87809),g=r(74893),p=r(69500);const h=(0,g.A)((0,p.jsx)("path",{d:"M7.11 8.53 5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47M6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47m1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93"}),"RotateLeft"),f=(0,g.A)((0,p.jsx)("path",{d:"M15.55 5.55 11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03m3.89-2.42 1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48"}),"RotateRight"),b=(0,g.A)((0,p.jsx)("path",{d:"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m0 12H6V10h12z"}),"LockOpen");var v=r(79698),x=r(64502),k=r(17307),y=r(90542),A=r(15243);const E=(0,l.n9)()((e=>({controls:{position:"absolute",borderRight:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,left:0,top:0}}))),S=(0,a.observer)((function({model:e}){const{classes:t}=E(),[r,a]=(0,n.useState)(null);return n.createElement("div",{className:t.controls},n.createElement(c.A,{onClick:e.zoomOutButton,title:e.lockedFitToWindow?"unlock to zoom out":"zoom out",disabled:e.atMaxBpPerPx||e.lockedFitToWindow},n.createElement(d.A,null)),n.createElement(c.A,{onClick:e.zoomInButton,disabled:e.atMinBpPerPx,title:"zoom in"},n.createElement(u.A,null)),n.createElement(c.A,{onClick:e.rotateCounterClockwiseButton,title:"rotate counter-clockwise"},n.createElement(h,null)),n.createElement(c.A,{onClick:e.rotateClockwiseButton,title:"rotate clockwise"},n.createElement(f,null)),n.createElement(c.A,{onClick:e.toggleFitToWindowLock,title:e.lockedFitToWindow?"locked model to window size":"unlocked model to zoom further",disabled:e.tooSmallToLock},e.lockedFitToWindow?n.createElement(v.A,null):n.createElement(b,null)),n.createElement(c.A,{onClick:e=>{a(e.currentTarget)}},n.createElement(k.A,null)),e.hideTrackSelectorButton?null:n.createElement(c.A,{onClick:e.activateTrackSelector,title:"Open track selector","data-testid":"circular_track_select"},n.createElement(y.xU,null)),r?n.createElement(m.A,{anchorEl:r,menuItems:[{label:"Export SVG",icon:x.A,onClick:()=>{(0,i.getSession)(e).queueDialog((t=>[A.default,{model:e,handleClose:t}]))}}],onMenuItemClick:(e,t)=>{t(),a(null)},open:Boolean(r),onClose:()=>{a(null)}}):null)}));var C=r(75653),w=r(67314),M=r(5401);const R=(0,l.n9)()((e=>({importFormContainer:{padding:e.spacing(6)}}))),W=(0,a.observer)((function({model:e}){const{classes:t}=R(),r=(0,i.getSession)(e),{error:a}=e,{assemblyNames:l,assemblyManager:s}=r,[c,m]=(0,n.useState)(l[0]),d=s.get(c),u=l.length?d?.error:"No configured assemblies",g=d?.regions||[],p=u||a;return n.createElement(C.A,{className:t.importFormContainer},p?n.createElement(w.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},n.createElement(w.Ay,{item:!0},n.createElement(o.ErrorMessage,{error:p}))):null,n.createElement(w.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},n.createElement(w.Ay,{item:!0},n.createElement(o.AssemblySelector,{onChange:t=>{e.setError(void 0),m(t)},session:r,selected:c})),n.createElement(w.Ay,{item:!0},n.createElement(M.A,{disabled:!g.length,onClick:()=>{e.setError(void 0),e.setDisplayedRegions(g)},variant:"contained",color:"primary"},g.length||p?"Open":"Loading..."))))})),$=(0,l.n9)()((e=>({root:{position:"relative",marginBottom:e.spacing(1),overflow:"hidden"},scroller:{overflow:"auto"}}))),P=(0,a.observer)((({model:e})=>n.createElement(n.Fragment,null,e.staticSlices.map((t=>n.createElement(s.A,{key:(0,i.assembleLocString)(t.region.elided?t.region.regions[0]:t.region),model:e,slice:t}))),e.tracks.map((t=>{const r=t.displays[0];return n.createElement(r.RenderingComponent,{key:r.id,display:r,view:e})}))))),T=(0,a.observer)((({model:e})=>{const t=!!e.displayedRegions.length&&!!e.figureWidth&&!!e.figureHeight&&e.initialized,r=!t&&!e.disableImportForm,a=t&&!r;return r||e.error?n.createElement(W,{model:e}):a?n.createElement(z,{model:e}):null})),z=(0,a.observer)((function({model:e}){const{width:t,height:r,id:a,offsetRadians:i,centerXY:l,figureWidth:s,figureHeight:c,hideVerticalResizeHandle:m}=e,{classes:d}=$();return n.createElement("div",{className:d.root,style:{width:t,height:r},"data-testid":a},n.createElement("div",{className:d.scroller,style:{width:t,height:r}},n.createElement("svg",{style:{transform:`rotate(${i}rad)`,transition:"transform 0.5s",transformOrigin:l.map((e=>`${e}px`)).join(" "),position:"absolute",left:0,top:0},width:s,height:c},n.createElement("g",{transform:`translate(${l})`},n.createElement(P,{model:e})))),n.createElement(S,{model:e}),m?null:n.createElement(o.ResizeHandle,{onDrag:e.resizeHeight,style:{height:3,position:"absolute",bottom:0,left:0,background:"#ccc",boxSizing:"border-box",borderTop:"1px solid #fafafa"}}))})),N=T},15243:(e,t,r)=>{r.r(t),r.d(t,{default:()=>v});var n=r(7552),a=r(59705),o=r(36715),i=r(1343),l=r(29499),s=r(29629),c=r(33371),m=r(32808),d=r(58507),u=r(5401),g=r(49823),p=r(99546);function h(){return n.createElement("div",null,n.createElement(a.A,{size:20,style:{marginRight:20}}),n.createElement(o.A,{display:"inline"},"Creating SVG"))}function f({children:e,...t}){return n.createElement("div",null,n.createElement(i.A,t,e))}function b(e,t){return(0,p.useLocalStorage)(`svg-${e}`,t)}function v({model:e,handleClose:t}){const r=(0,p.getSession)(e),a="undefined"!=typeof OffscreenCanvas,[i,v]=(0,n.useState)(a),[x,k]=(0,n.useState)(!1),[y,A]=(0,n.useState)(),[E,S]=b("file","jbrowse.svg"),[C,w]=b("theme",r.themeName||"default");return n.createElement(g.Dialog,{open:!0,onClose:t,title:"Export SVG"},n.createElement(l.A,null,y?n.createElement(g.ErrorMessage,{error:y}):x?n.createElement(h,null):null,n.createElement(f,{helperText:"filename",value:E,onChange:e=>{S(e.target.value)}}),r.allThemes?n.createElement(f,{select:!0,label:"Theme",value:C,onChange:e=>{w(e.target.value)}},Object.entries(r.allThemes()).map((([e,t])=>n.createElement(s.A,{key:e,value:e},t.name||"(Unknown name)")))):null,a?n.createElement(c.A,{control:n.createElement(m.A,{checked:i,onChange:()=>{v((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):n.createElement(o.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),n.createElement(d.A,null,n.createElement(u.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"),n.createElement(u.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{k(!0),A(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:E,themeName:C}),t()}catch(e){console.error(e),A(e)}finally{k(!1)}}},"Submit")))}},83803:(e,t,r)=>{r.d(t,{A:()=>p});var n=r(7552),a=r(68446),o=r(99546),i=r(80208),l=r(48231);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s.apply(null,arguments)}const c=(0,r(75785).n9)()({rulerLabel:{fontSize:"0.8rem",fontWeight:500,lineHeight:1.6,letterSpacing:"0.0075em"}});function m(e,t,r,n){e.flipped&&([r,n]=[n,r]);const a=e.bpToXY(r,t),o=e.bpToXY(n,t);return["M",...a,"A",t,t,"0",Math.abs(n-r)/e.bpPerRadian>Math.PI?"1":"0","1",...o].join(" ")}const d=(0,a.observer)((function({model:e,slice:t,region:r}){const a=(0,l.A)(),{radiusPx:i}=e,c=i+1,{endRadians:m,startRadians:d}=t,g=(0,o.polarToCartesian)(c,d),p=(0,o.polarToCartesian)(c,m),h=(m-d)*c,f=m-d>Math.PI?"1":"0",b=(m+d)/2,v=`[${Number(r.regions.length).toLocaleString()}]`;return n.createElement(n.Fragment,null,n.createElement(u,{text:v,view:e,maxWidthPx:h,radians:b,radiusPx:c,title:`${v} more regions`,color:a.palette.text.primary}),n.createElement("path",s({d:["M",...g,"A",c,c,"0",f,"1",...p].join(" ")},(0,o.getStrokeProps)(a.palette.text.secondary),{strokeWidth:2,strokeDasharray:"2,2",fill:"none"})))})),u=(0,a.observer)((function({view:e,text:t,maxWidthPx:r,radians:a,radiusPx:i,title:l,color:m}){const{classes:d}=c(),u=(0,o.polarToCartesian)(i+5,a);return t?6.5*t.length<r?n.createElement("text",s({x:0,y:0,className:d.rulerLabel,textAnchor:"middle",dominantBaseline:"baseline",transform:`translate(${u}) rotate(${(0,o.radToDeg)(a)+90})`},(0,o.getFillProps)(m)),t,n.createElement("title",null,l||t)):r>4?(0,o.radToDeg)(a+e.offsetRadians-Math.PI/2)>=180?n.createElement("text",{x:0,y:0,className:d.rulerLabel,textAnchor:"start",dominantBaseline:"middle",transform:`translate(${u}) rotate(${(0,o.radToDeg)(a)})`,fill:m},t,n.createElement("title",null,l||t)):n.createElement("text",{x:0,y:0,className:d.rulerLabel,textAnchor:"end",dominantBaseline:"middle",transform:`translate(${u}) rotate(${(0,o.radToDeg)(a)+180})`,fill:m},t,n.createElement("title",null,l||t)):null:null})),g=(0,a.observer)((function({model:e,slice:t,region:r}){const a=(0,l.A)(),{radiusPx:s}=e,{endRadians:c,startRadians:d}=t,g=(c+d)/2,p=(c-d)*s,h=(0,o.getSession)(e).assemblyManager.get(r.assemblyName);let f=h?h.getRefNameColor(r.refName):void 0;if(f)try{f=(0,i.makeContrasting)(f,a.palette.background.paper)}catch(e){f=a.palette.text.primary}else f=a.palette.text.primary;return n.createElement(n.Fragment,null,n.createElement(u,{text:r.refName,view:e,maxWidthPx:p,radians:g,radiusPx:s,color:f}),n.createElement("path",{d:m(t,s+1,r.start,r.end),stroke:f,strokeWidth:2,fill:"none"}))})),p=(0,a.observer)((function({model:e,slice:t}){return t.region.elided?n.createElement(d,{key:(0,o.assembleLocString)(t.region.regions[0]),model:e,region:t.region,slice:t}):n.createElement(g,{key:(0,o.assembleLocString)(t.region),region:t.region,model:e,slice:t})}))},79698:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),a=r(69500);const o=(0,n.A)((0,a.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock")},59705:(e,t,r)=>{r.d(t,{A:()=>y});var n=r(7552),a=r(93878),o=r(70799),i=r(64761),l=r(51148),s=r(60129),c=r(4785),m=r(15622),d=r(58520),u=r(72489),g=r(69500);const p=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,h=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,f="string"!=typeof p?i.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,b="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s ease-in-out infinite;
+      `:null,v=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,m.A)(r.color)}`]]}})((0,s.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:f||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),x=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,m.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,s.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:b||{animation:`${h} 1.4s ease-in-out infinite`}}]})))),y=n.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:l=!1,size:s=40,style:d,thickness:p=3.6,value:h=0,variant:f="indeterminate",...b}=r,y={...r,color:i,disableShrink:l,size:s,thickness:p,value:h,variant:f},A=(e=>{const{classes:t,variant:r,color:n,disableShrink:a}=e,i={root:["root",r,`color${(0,m.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(r)}`,a&&"circleDisableShrink"]};return(0,o.A)(i,u.b,t)})(y),E={},S={},C={};if("determinate"===f){const e=2*Math.PI*((44-p)/2);E.strokeDasharray=e.toFixed(3),C["aria-valuenow"]=Math.round(h),E.strokeDashoffset=`${((100-h)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,g.jsx)(v,{className:(0,a.A)(A.root,n),style:{width:s,height:s,...S,...d},ownerState:y,ref:t,role:"progressbar",...C,...b,children:(0,g.jsx)(x,{className:A.svg,ownerState:y,viewBox:"22 22 44 44",children:(0,g.jsx)(k,{className:A.circle,style:E,ownerState:y,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>o});var n=r(33761),a=r(85693);function o(e){return(0,a.Ay)("MuiCircularProgress",e)}const i=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},75653:(e,t,r)=>{r.d(t,{A:()=>x});var n=r(7552),a=r(93878),o=r(85693),i=r(70799),l=r(33283),s=r(82081),c=r(24959),m=r(72861),d=r(69500);const u=(0,m.A)(),g=(0,c.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,l.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),p=e=>(0,s.A)({props:e,name:"MuiContainer",defaultTheme:u});var h=r(15622),f=r(51148),b=r(31049);const v=function(e={}){const{createStyledComponent:t=g,useThemeProps:r=p,componentName:s="MuiContainer"}=e,c=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,r)=>{const n=r,a=e.breakpoints.values[n];return 0!==a&&(t[e.breakpoints.up(n)]={maxWidth:`${a}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),m=n.forwardRef((function(e,t){const n=r(e),{className:m,component:u="div",disableGutters:g=!1,fixed:p=!1,maxWidth:h="lg",classes:f,...b}=n,v={...n,component:u,disableGutters:g,fixed:p,maxWidth:h},x=((e,t)=>{const{classes:r,fixed:n,disableGutters:a,maxWidth:s}=e,c={root:["root",s&&`maxWidth${(0,l.A)(String(s))}`,n&&"fixed",a&&"disableGutters"]};return(0,i.A)(c,(e=>(0,o.Ay)(t,e)),r)})(v,s);return(0,d.jsx)(c,{as:u,ownerState:v,className:(0,a.A)(x.root,m),ref:t,...b})}));return m}({createStyledComponent:(0,f.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,h.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,b.A)({props:e,name:"MuiContainer"})}),x=v},24959:(e,t,r)=>{r.d(t,{A:()=>n});const n=(0,r(15543).Ay)()}}]);
+//# sourceMappingURL=6205.903f897d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6205.903f897d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6205.903f897d.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/RotateLeft.js","../../../node_modules/@mui/icons-material/esm/RotateRight.js","../../../node_modules/@mui/icons-material/esm/LockOpen.js","../../../plugins/circular-view/src/CircularView/components/Controls.tsx","../../../plugins/circular-view/src/CircularView/components/ImportForm.tsx","../../../plugins/circular-view/src/CircularView/components/CircularView.tsx","../../../plugins/circular-view/src/CircularView/components/ExportSvgDialog.tsx","../../../plugins/circular-view/src/CircularView/components/Ruler.tsx","../../../node_modules/@mui/icons-material/esm/Lock.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7.11 8.53 5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47M6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47m1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93\"\n}), 'RotateLeft');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.55 5.55 11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03m3.89-2.42 1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48\"\n}), 'RotateRight');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m0 12H6V10h12z\"\n}), 'LockOpen');","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { IconButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport JBrowseMenu from '@jbrowse/core/ui/Menu'\n\n// icons\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut'\nimport ZoomInIcon from '@mui/icons-material/ZoomIn'\nimport RotateLeftIcon from '@mui/icons-material/RotateLeft'\nimport RotateRightIcon from '@mui/icons-material/RotateRight'\nimport LockOpenIcon from '@mui/icons-material/LockOpen'\nimport LockIcon from '@mui/icons-material/Lock'\nimport PhotoCamera from '@mui/icons-material/PhotoCamera'\nimport MoreVert from '@mui/icons-material/MoreVert'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\n\n// locals\nimport { CircularViewModel } from '../models/model'\nimport { getSession } from '@jbrowse/core/util'\nimport ExportSvgDialog from './ExportSvgDialog'\n\nconst useStyles = makeStyles()(theme => ({\n  controls: {\n    position: 'absolute',\n    borderRight: `1px solid ${theme.palette.divider}`,\n    borderBottom: `1px solid ${theme.palette.divider}`,\n    left: 0,\n    top: 0,\n  },\n}))\n\nconst Controls = observer(function ({ model }: { model: CircularViewModel }) {\n  const { classes } = useStyles()\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n  return (\n    <div className={classes.controls}>\n      <IconButton\n        onClick={model.zoomOutButton}\n        title={model.lockedFitToWindow ? 'unlock to zoom out' : 'zoom out'}\n        disabled={model.atMaxBpPerPx || model.lockedFitToWindow}\n      >\n        <ZoomOutIcon />\n      </IconButton>\n\n      <IconButton\n        onClick={model.zoomInButton}\n        disabled={model.atMinBpPerPx}\n        title=\"zoom in\"\n      >\n        <ZoomInIcon />\n      </IconButton>\n\n      <IconButton\n        onClick={model.rotateCounterClockwiseButton}\n        title=\"rotate counter-clockwise\"\n      >\n        <RotateLeftIcon />\n      </IconButton>\n\n      <IconButton\n        onClick={model.rotateClockwiseButton}\n        title=\"rotate clockwise\"\n      >\n        <RotateRightIcon />\n      </IconButton>\n\n      <IconButton\n        onClick={model.toggleFitToWindowLock}\n        title={\n          model.lockedFitToWindow\n            ? 'locked model to window size'\n            : 'unlocked model to zoom further'\n        }\n        disabled={model.tooSmallToLock}\n      >\n        {model.lockedFitToWindow ? <LockIcon /> : <LockOpenIcon />}\n      </IconButton>\n\n      <IconButton\n        onClick={event => {\n          setAnchorEl(event.currentTarget)\n        }}\n      >\n        <MoreVert />\n      </IconButton>\n\n      {model.hideTrackSelectorButton ? null : (\n        <IconButton\n          onClick={model.activateTrackSelector}\n          title=\"Open track selector\"\n          data-testid=\"circular_track_select\"\n        >\n          <TrackSelectorIcon />\n        </IconButton>\n      )}\n\n      {anchorEl ? (\n        <JBrowseMenu\n          anchorEl={anchorEl}\n          menuItems={[\n            {\n              label: 'Export SVG',\n              icon: PhotoCamera,\n              onClick: () => {\n                getSession(model).queueDialog(handleClose => [\n                  ExportSvgDialog,\n                  { model, handleClose },\n                ])\n              },\n            },\n          ]}\n          onMenuItemClick={(_event, callback) => {\n            callback()\n            setAnchorEl(null)\n          }}\n          open={Boolean(anchorEl)}\n          onClose={() => {\n            setAnchorEl(null)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default Controls\n","import React, { useState } from 'react'\nimport { Button, Container, Grid } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\nimport { CircularViewModel } from '../models/model'\n\nconst useStyles = makeStyles()(theme => ({\n  importFormContainer: {\n    padding: theme.spacing(6),\n  },\n}))\n\nconst ImportForm = observer(function ({ model }: { model: CircularViewModel }) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { error } = model\n  const { assemblyNames, assemblyManager } = session\n  const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0]!)\n  const assembly = assemblyManager.get(selectedAsm)\n  const assemblyError = assemblyNames.length\n    ? assembly?.error\n    : 'No configured assemblies'\n  const regions = assembly?.regions || []\n  const err = assemblyError || error\n\n  return (\n    <Container className={classes.importFormContainer}>\n      {err ? (\n        <Grid container spacing={1} justifyContent=\"center\" alignItems=\"center\">\n          <Grid item>\n            <ErrorMessage error={err} />\n          </Grid>\n        </Grid>\n      ) : null}\n      <Grid container spacing={1} justifyContent=\"center\" alignItems=\"center\">\n        <Grid item>\n          <AssemblySelector\n            onChange={val => {\n              model.setError(undefined)\n              setSelectedAsm(val)\n            }}\n            session={session}\n            selected={selectedAsm}\n          />\n        </Grid>\n\n        <Grid item>\n          <Button\n            disabled={!regions.length}\n            onClick={() => {\n              model.setError(undefined)\n              model.setDisplayedRegions(regions)\n            }}\n            variant=\"contained\"\n            color=\"primary\"\n          >\n            {/* if there's an error, it's not actively loading  so just display open */}\n            {regions.length || err ? 'Open' : 'Loading...'}\n          </Button>\n        </Grid>\n      </Grid>\n    </Container>\n  )\n})\n\nexport default ImportForm\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport { assembleLocString } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport Ruler from './Ruler'\nimport Controls from './Controls'\nimport ImportForm from './ImportForm'\nimport { CircularViewModel } from '../models/model'\n\nconst dragHandleHeight = 3\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    position: 'relative',\n    marginBottom: theme.spacing(1),\n    overflow: 'hidden',\n  },\n  scroller: {\n    overflow: 'auto',\n  },\n}))\n\nconst Slices = observer(({ model }: { model: CircularViewModel }) => {\n  return (\n    <>\n      {model.staticSlices.map(slice => (\n        <Ruler\n          key={assembleLocString(\n            slice.region.elided ? slice.region.regions[0]! : slice.region,\n          )}\n          model={model}\n          slice={slice}\n        />\n      ))}\n      {model.tracks.map(track => {\n        const display = track.displays[0]\n        return (\n          <display.RenderingComponent\n            key={display.id}\n            display={display}\n            view={model}\n          />\n        )\n      })}\n    </>\n  )\n})\n\nconst CircularView = observer(({ model }: { model: CircularViewModel }) => {\n  const initialized =\n    !!model.displayedRegions.length &&\n    !!model.figureWidth &&\n    !!model.figureHeight &&\n    model.initialized\n\n  const showImportForm = !initialized && !model.disableImportForm\n  const showFigure = initialized && !showImportForm\n\n  return showImportForm || model.error ? (\n    <ImportForm model={model} />\n  ) : showFigure ? (\n    <CircularViewLoaded model={model} />\n  ) : null\n})\n\nconst CircularViewLoaded = observer(function ({\n  model,\n}: {\n  model: CircularViewModel\n}) {\n  const {\n    width,\n    height,\n    id,\n    offsetRadians,\n    centerXY,\n    figureWidth,\n    figureHeight,\n    hideVerticalResizeHandle,\n  } = model\n  const { classes } = useStyles()\n  return (\n    <div className={classes.root} style={{ width, height }} data-testid={id}>\n      <div className={classes.scroller} style={{ width, height }}>\n        <svg\n          style={{\n            transform: `rotate(${offsetRadians}rad)`,\n            transition: 'transform 0.5s',\n            transformOrigin: centerXY.map(x => `${x}px`).join(' '),\n            position: 'absolute',\n            left: 0,\n            top: 0,\n          }}\n          width={figureWidth}\n          height={figureHeight}\n        >\n          <g transform={`translate(${centerXY})`}>\n            <Slices model={model} />\n          </g>\n        </svg>\n      </div>\n      <Controls model={model} />\n      {hideVerticalResizeHandle ? null : (\n        <ResizeHandle\n          onDrag={model.resizeHeight}\n          style={{\n            height: dragHandleHeight,\n            position: 'absolute',\n            bottom: 0,\n            left: 0,\n            background: '#ccc',\n            boxSizing: 'border-box',\n            borderTop: '1px solid #fafafa',\n          }}\n        />\n      )}\n    </div>\n  )\n})\n\nexport default CircularView\n","import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\n\n// locals\nimport { ExportSvgOptions } from '../models/model'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                themeName,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  getSession,\n  polarToCartesian,\n  radToDeg,\n  assembleLocString,\n  getStrokeProps,\n  getFillProps,\n} from '@jbrowse/core/util'\nimport { makeContrasting } from '@jbrowse/core/util/color'\nimport { useTheme } from '@mui/material/styles'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport {\n  Slice,\n  SliceElidedRegion,\n  SliceNonElidedRegion,\n} from '../models/slices'\nimport { CircularViewModel } from '../models/model'\n\nconst useStyles = makeStyles()({\n  rulerLabel: {\n    fontSize: '0.8rem',\n    fontWeight: 500,\n    lineHeight: 1.6,\n    letterSpacing: '0.0075em',\n  },\n})\n\nfunction sliceArcPath(\n  slice: Slice,\n  radiusPx: number,\n  startBase: number,\n  endBase: number,\n) {\n  // A rx ry x-axis-rotation large-arc-flag sweep-flag x y\n  if (slice.flipped) {\n    ;[startBase, endBase] = [endBase, startBase]\n  }\n  const startXY = slice.bpToXY(startBase, radiusPx)\n  const endXY = slice.bpToXY(endBase, radiusPx)\n  const largeArc =\n    Math.abs(endBase - startBase) / slice.bpPerRadian > Math.PI ? '1' : '0'\n  const sweepFlag = '1'\n  return [\n    'M',\n    ...startXY,\n    'A',\n    radiusPx,\n    radiusPx,\n    '0',\n    largeArc,\n    sweepFlag,\n    ...endXY,\n  ].join(' ')\n}\n\nconst ElisionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx: modelRadiusPx } = model\n  const radiusPx = modelRadiusPx + 1\n  const { endRadians, startRadians } = slice\n  const startXY = polarToCartesian(radiusPx, startRadians)\n  const endXY = polarToCartesian(radiusPx, endRadians)\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const largeArc = endRadians - startRadians > Math.PI ? '1' : '0'\n  // TODO: draw the elision\n  const centerRadians = (endRadians + startRadians) / 2\n  const regionCount = `[${Number(region.regions.length).toLocaleString()}]`\n  return (\n    <>\n      <RulerLabel\n        text={regionCount}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        title={`${regionCount} more regions`}\n        color={theme.palette.text.primary}\n      />\n      <path\n        d={[\n          'M',\n          ...startXY,\n          'A',\n          radiusPx,\n          radiusPx,\n          '0',\n          largeArc,\n          '1',\n          ...endXY,\n        ].join(' ')}\n        {...getStrokeProps(theme.palette.text.secondary)}\n        strokeWidth={2}\n        strokeDasharray=\"2,2\"\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst RulerLabel = observer(function ({\n  view,\n  text,\n  maxWidthPx,\n  radians,\n  radiusPx,\n  title,\n  color,\n}: {\n  view: CircularViewModel\n  text: string\n  maxWidthPx: number\n  radiusPx: number\n  radians: number\n  title?: string\n  color: string\n}) {\n  const { classes } = useStyles()\n  const textXY = polarToCartesian(radiusPx + 5, radians)\n  if (!text) {\n    return null\n  }\n\n  if (text.length * 6.5 < maxWidthPx) {\n    // text is rotated parallel to the ruler arc\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"middle\"\n        dominantBaseline=\"baseline\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 90})`}\n        {...getFillProps(color)}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n  if (maxWidthPx > 4) {\n    // text is rotated perpendicular to the ruler arc\n    const overallRotation = radToDeg(radians + view.offsetRadians - Math.PI / 2)\n    if (overallRotation >= 180) {\n      return (\n        <text\n          x={0}\n          y={0}\n          className={classes.rulerLabel}\n          textAnchor=\"start\"\n          dominantBaseline=\"middle\"\n          transform={`translate(${textXY}) rotate(${radToDeg(radians)})`}\n          fill={color}\n        >\n          {text}\n          <title>{title || text}</title>\n        </text>\n      )\n    }\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"end\"\n        dominantBaseline=\"middle\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 180})`}\n        fill={color}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n\n  // if you get here there is no room for the text at all\n  return null\n})\n\nconst RegionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceNonElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx } = model\n  const { endRadians, startRadians } = slice\n  const centerRadians = (endRadians + startRadians) / 2\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const session = getSession(model)\n  const assembly = session.assemblyManager.get(region.assemblyName)\n  let color = assembly ? assembly.getRefNameColor(region.refName) : undefined\n  if (color) {\n    try {\n      color = makeContrasting(color, theme.palette.background.paper)\n    } catch (error) {\n      color = theme.palette.text.primary\n    }\n  } else {\n    color = theme.palette.text.primary\n  }\n\n  // TODO: slice flipping\n  return (\n    <>\n      <RulerLabel\n        text={region.refName}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        color={color}\n      />\n      <path\n        d={sliceArcPath(slice, radiusPx + 1, region.start, region.end)}\n        stroke={color}\n        strokeWidth={2}\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst Ruler = observer(function ({\n  model,\n  slice,\n}: {\n  model: CircularViewModel\n  slice: Slice\n}) {\n  return slice.region.elided ? (\n    <ElisionRulerArc\n      key={assembleLocString(slice.region.regions[0]!)}\n      model={model}\n      region={slice.region}\n      slice={slice}\n    />\n  ) : (\n    <RegionRulerArc\n      key={assembleLocString(slice.region)}\n      region={slice.region}\n      model={model}\n      slice={slice}\n    />\n  )\n})\n\nexport default Ruler\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z\"\n}), 'Lock');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["createSvgIcon","d","useStyles","makeStyles","theme","controls","position","borderRight","palette","divider","borderBottom","left","top","observer","model","classes","anchorEl","setAnchorEl","useState","React","className","IconButton","onClick","zoomOutButton","title","lockedFitToWindow","disabled","atMaxBpPerPx","ZoomOutIcon","zoomInButton","atMinBpPerPx","ZoomInIcon","rotateCounterClockwiseButton","RotateLeftIcon","rotateClockwiseButton","RotateRightIcon","toggleFitToWindowLock","tooSmallToLock","LockIcon","LockOpenIcon","event","currentTarget","MoreVert","hideTrackSelectorButton","activateTrackSelector","TrackSelectorIcon","JBrowseMenu","menuItems","label","icon","PhotoCamera","getSession","queueDialog","handleClose","ExportSvgDialog","onMenuItemClick","_event","callback","open","Boolean","onClose","importFormContainer","padding","spacing","session","error","assemblyNames","assemblyManager","selectedAsm","setSelectedAsm","assembly","get","assemblyError","length","regions","err","Container","Grid","container","justifyContent","alignItems","item","ErrorMessage","AssemblySelector","onChange","val","setError","undefined","selected","Button","setDisplayedRegions","variant","color","root","marginBottom","overflow","scroller","Slices","staticSlices","map","slice","Ruler","key","assembleLocString","region","elided","tracks","track","display","displays","RenderingComponent","id","view","CircularView","initialized","displayedRegions","figureWidth","figureHeight","showImportForm","disableImportForm","showFigure","ImportForm","CircularViewLoaded","width","height","offsetRadians","centerXY","hideVerticalResizeHandle","style","transform","transition","transformOrigin","x","join","Controls","ResizeHandle","onDrag","resizeHeight","bottom","background","boxSizing","borderTop","LoadingMessage","CircularProgress","size","marginRight","Typography","TextField2","children","rest","TextField","useSvgLocal","useLocalStorage","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","loading","setLoading","filename","setFilename","themeName","setThemeName","Dialog","DialogContent","helperText","value","target","allThemes","select","Object","entries","MenuItem","name","FormControlLabel","control","Checkbox","checked","DialogActions","type","async","exportSvg","e","console","rulerLabel","fontSize","fontWeight","lineHeight","letterSpacing","sliceArcPath","radiusPx","startBase","endBase","flipped","startXY","bpToXY","endXY","Math","abs","bpPerRadian","PI","ElisionRulerArc","useTheme","modelRadiusPx","endRadians","startRadians","polarToCartesian","widthPx","largeArc","centerRadians","regionCount","Number","toLocaleString","RulerLabel","text","maxWidthPx","radians","primary","_extends","getStrokeProps","secondary","strokeWidth","strokeDasharray","fill","textXY","y","textAnchor","dominantBaseline","radToDeg","getFillProps","RegionRulerArc","assemblyName","getRefNameColor","refName","makeContrasting","paper","start","end","stroke","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","variants","transitions","create","animation","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","strokeDashoffset","inProps","ref","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","toFixed","round","role","viewBox","cx","cy","r","getCircularProgressUtilityClass","defaultTheme","createTheme","defaultCreateStyledComponent","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","marginLeft","paddingLeft","paddingRight","breakpoints","up","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","max","xs","component","classesProp","composeClasses","generateUtilityClass","as","clsx","createContainer"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6214.0ed0ac32.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6214],{86214:(e,t,s)=>{s.r(t),s.d(t,{default:()=>l});var r=s(60972),a=s(46377),n=s(99834),i=s(66885),o=s(68120),c=s(4101);class l extends a.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];constructor(e,t,s){super(e,t,s);const a=this.getConf("bedGzLocation"),i=this.getConf(["index","indexType"]),c=this.getConf(["index","location"]),l=this.getConf("autoSql"),u=this.pluginManager;this.bed=new o.wD({filehandle:(0,n.openLocation)(a,u),csiFilehandle:"CSI"===i?(0,n.openLocation)(c,u):void 0,tbiFilehandle:"CSI"!==i?(0,n.openLocation)(c,u):void 0,chunkCacheSize:52428800}),this.columnNames=this.getConf("columnNames"),this.scoreColumn=this.getConf("scoreColumn"),this.parser=new r.A({autoSql:l})}async getRefNames(e={}){return this.bed.getReferenceSequenceNames(e)}async getHeader(){return this.bed.getHeader()}async getNames(){if(this.columnNames.length)return this.columnNames;const e=(await this.bed.getHeader()).split(/\n|\r\n|\r/).filter((e=>!!e)).at(-1);return e?.includes("\t")?e.slice(1).split("\t").map((e=>e.trim())):void 0}getFeatures(e,t={}){return(0,i.ObservableCreate)((async s=>{const r=await this.bed.getMetadata(),{columnNumbers:a}=r,n=a.ref-1,i=a.start-1,o=a.end-1,l=await this.getNames();await this.bed.getLines(e.refName,e.start,e.end,{lineCallback:(e,t)=>{s.next((0,c.dE)(e,n,i,o,this.scoreColumn,this.parser,`${this.id}-${t}`,l))},signal:t.signal}),s.complete()}),t.signal)}freeResources(){}}},4101:(e,t,s)=>{s.d(t,{BX:()=>a,Vl:()=>o,dE:()=>i,zZ:()=>n});var r=s(99546);function a(e){const{subfeatures:t,thickStart:s,thickEnd:r,blockCount:a,blockSizes:n,chromStarts:i,refName:o,strand:c=0,...l}=e;if(!s||!r||!c)return e;const u=[];return t.filter((e=>"block"===e.type)).sort(((e,t)=>e.start-t.start)).forEach((e=>{const t=e.start,a=e.end;if(s>=a){const e=c>0?"five":"three";u.push({type:`${e}_prime_UTR`,start:t,end:a,refName:o})}else if(s>t&&s<a&&r>=a){const e=c>0?"five":"three";u.push({type:`${e}_prime_UTR`,start:t,end:s,refName:o},{type:"CDS",start:s,end:a,refName:o})}else if(s<=t&&r>=a)u.push({type:"CDS",start:t,end:a,refName:o});else if(s>t&&s<a&&r<a){const e=c>0?"five":"three",n=c>0?"three":"five";u.push({type:`${e}_prime_UTR`,start:t,end:s,refName:o},{type:"CDS",start:s,end:r,refName:o},{type:`${n}_prime_UTR`,start:r,end:a,refName:o})}else if(s<=t&&r>t&&r<a){const e=c>0?"three":"five";u.push({type:"CDS",start:t,end:r,refName:o},{type:`${e}_prime_UTR`,start:r,end:a,refName:o})}else if(r<=t){const e=c>0?"three":"five";u.push({type:`${e}_prime_UTR`,start:t,end:a,refName:o})}})),{...l,strand:c,type:"mRNA",refName:o,subfeatures:u}}function n({start:e,uniqueId:t,refName:s,chromStarts:r,blockCount:a,blockSizes:n,blockStarts:i}){const o=[],c=r||i||[];for(let r=0;r<a;r++){const a=(c[r]||0)+e,i=a+(n[r]||0);o.push({uniqueId:`${t}-${r}`,start:a,end:i,refName:s,type:"block"})}return o}function i(e,t,s,i,c,l,u,h){const d=e.split("\t"),m=d[t],f=+d[s],p=s===i?1:0,b=+d[i]+p,k=h?function(e,t){const s=Object.fromEntries(t.split("\t").map(((t,s)=>[e[s],t]))),{blockStarts:r,blockCount:a,chromStarts:n,thickEnd:i,thickStart:o,blockSizes:c,...l}=s;return{...l,blockStarts:r?.split(",").map((e=>+e)),chromStarts:n?.split(",").map((e=>+e)),blockSizes:c?.split(",").map((e=>+e)),thickStart:o?+o:void 0,thickEnd:i?+i:void 0,blockCount:a?+a:void 0}}(h,e):l.parseLine(e,{uniqueId:u}),{blockCount:S,blockSizes:C,blockStarts:N,chromStarts:g,thickStart:y,thickEnd:_,type:v,score:w,chrom:R,chromStart:z,chromEnd:E,...$}=k,T=S?n({start:f,uniqueId:u,refName:m,chromStarts:g,blockCount:S,blockSizes:C,blockStarts:N}):[],q={...$,type:v,score:c?+k[c]:w,start:f,end:b,refName:m,uniqueId:u,subfeatures:T};return new r.SimpleFeature({id:u,data:o(k)?a({thickStart:y,thickEnd:_,blockCount:S,blockSizes:C,chromStarts:g,...q}):q})}function o(e){return e.thickStart&&e.blockCount&&0!==e.strand}}}]);
+//# sourceMappingURL=6214.0ed0ac32.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6214.0ed0ac32.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6214.0ed0ac32.chunk.js","mappings":"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","sources":["../../../plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts","../../../plugins/bed/src/util.ts"],"sourcesContent":["import BED from '@gmod/bed'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { FileLocation, Region, Feature } from '@jbrowse/core/util'\nimport { TabixIndexedFile } from '@gmod/tabix'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\n// locals\nimport { featureData } from '../util'\n\nexport default class BedTabixAdapter extends BaseFeatureDataAdapter {\n  private parser: BED\n\n  protected bed: TabixIndexedFile\n\n  protected columnNames: string[]\n\n  protected scoreColumn: string\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  public constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const bedGzLoc = this.getConf('bedGzLocation') as FileLocation\n    const type = this.getConf(['index', 'indexType'])\n    const loc = this.getConf(['index', 'location'])\n    const autoSql = this.getConf('autoSql')\n    const pm = this.pluginManager\n\n    this.bed = new TabixIndexedFile({\n      filehandle: openLocation(bedGzLoc, pm),\n      csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined,\n      tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined,\n      chunkCacheSize: 50 * 2 ** 20,\n    })\n    this.columnNames = this.getConf('columnNames')\n    this.scoreColumn = this.getConf('scoreColumn')\n    this.parser = new BED({ autoSql })\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    return this.bed.getReferenceSequenceNames(opts)\n  }\n\n  async getHeader() {\n    return this.bed.getHeader()\n  }\n\n  async getNames() {\n    if (this.columnNames.length) {\n      return this.columnNames\n    }\n    const header = await this.bed.getHeader()\n    const defs = header.split(/\\n|\\r\\n|\\r/).filter(f => !!f)\n    const defline = defs.at(-1)\n    return defline?.includes('\\t')\n      ? defline\n          .slice(1)\n          .split('\\t')\n          .map(f => f.trim())\n      : undefined\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const meta = await this.bed.getMetadata()\n      const { columnNumbers } = meta\n      const colRef = columnNumbers.ref - 1\n      const colStart = columnNumbers.start - 1\n      const colEnd = columnNumbers.end - 1\n      // colSame handles special case for tabix where a single column is both\n      // the start and end, this is assumed to be covering the base at this\n      // position (e.g. tabix -s 1 -b 2 -e 2) begin and end are same\n      const names = await this.getNames()\n      await this.bed.getLines(query.refName, query.start, query.end, {\n        lineCallback: (line, fileOffset) => {\n          observer.next(\n            featureData(\n              line,\n              colRef,\n              colStart,\n              colEnd,\n              this.scoreColumn,\n              this.parser,\n              `${this.id}-${fileOffset}`,\n              names,\n            ),\n          )\n        },\n        signal: opts.signal,\n      })\n      observer.complete()\n    }, opts.signal)\n  }\n\n  public freeResources(): void {}\n}\n","import BED from '@gmod/bed'\nimport { SimpleFeature } from '@jbrowse/core/util'\n\nexport interface MinimalFeature {\n  type: string\n  start: number\n  end: number\n  refName: string\n  [key: string]: unknown\n}\nexport interface TranscriptFeat extends MinimalFeature {\n  thickStart: number\n  thickEnd: number\n  blockCount: number\n  blockSizes: number[]\n  chromStarts: number[]\n  refName: string\n  strand?: number\n  subfeatures: MinimalFeature[]\n}\n\nexport function ucscProcessedTranscript(feature: TranscriptFeat) {\n  const {\n    subfeatures: oldSubfeatures,\n    thickStart,\n    thickEnd,\n    blockCount,\n    blockSizes,\n    chromStarts,\n    refName,\n    strand = 0,\n    ...rest\n  } = feature\n\n  if (!thickStart || !thickEnd || !strand) {\n    return feature\n  }\n\n  const subfeatures: MinimalFeature[] = []\n  oldSubfeatures\n    .filter(child => child.type === 'block')\n    .sort((a, b) => a.start - b.start)\n    .forEach(block => {\n      const start = block.start\n      const end = block.end\n      if (thickStart >= end) {\n        // left-side UTR\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd >= end) {\n        // UTR | CDS\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push(\n          {\n            type: `${prime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd >= end) {\n        // CDS\n        subfeatures.push({\n          type: 'CDS',\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd < end) {\n        // UTR | CDS | UTR\n        const leftPrime = strand > 0 ? 'five' : 'three'\n        const rightPrime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: `${leftPrime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${rightPrime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd > start && thickEnd < end) {\n        // CDS | UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: 'CDS',\n            start,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${prime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickEnd <= start) {\n        // right-side UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      }\n    })\n\n  return { ...rest, strand, type: 'mRNA', refName, subfeatures }\n}\n\nfunction defaultParser(fields: string[], line: string) {\n  const obj = Object.fromEntries(\n    line.split('\\t').map((f, i) => [fields[i]!, f] as const),\n  )\n  const {\n    blockStarts,\n    blockCount,\n    chromStarts,\n    thickEnd,\n    thickStart,\n    blockSizes,\n    ...rest\n  } = obj\n\n  return {\n    ...rest,\n    blockStarts: blockStarts?.split(',').map(r => +r),\n    chromStarts: chromStarts?.split(',').map(r => +r),\n    blockSizes: blockSizes?.split(',').map(r => +r),\n    thickStart: thickStart ? +thickStart : undefined,\n    thickEnd: thickEnd ? +thickEnd : undefined,\n    blockCount: blockCount ? +blockCount : undefined,\n  } as Record<string, unknown>\n}\n\nexport function makeBlocks({\n  start,\n  uniqueId,\n  refName,\n  chromStarts,\n  blockCount,\n  blockSizes,\n  blockStarts,\n}: {\n  blockCount: number\n  start: number\n  uniqueId: string\n  refName: string\n  chromStarts?: number[]\n  blockSizes: number[]\n  blockStarts?: number[]\n}) {\n  const subfeatures = []\n  const starts = chromStarts || blockStarts || []\n  for (let b = 0; b < blockCount; b++) {\n    const bmin = (starts[b] || 0) + start\n    const bmax = bmin + (blockSizes[b] || 0)\n    subfeatures.push({\n      uniqueId: `${uniqueId}-${b}`,\n      start: bmin,\n      end: bmax,\n      refName,\n      type: 'block',\n    })\n  }\n  return subfeatures\n}\nexport function featureData(\n  line: string,\n  colRef: number,\n  colStart: number,\n  colEnd: number,\n  scoreColumn: string,\n  parser: BED,\n  uniqueId: string,\n  names?: string[],\n) {\n  const l = line.split('\\t')\n  const refName = l[colRef]!\n  const start = +l[colStart]!\n  const colSame = colStart === colEnd ? 1 : 0\n  const end = +l[colEnd]! + colSame\n  const data = names\n    ? defaultParser(names, line)\n    : parser.parseLine(line, { uniqueId })\n\n  const {\n    blockCount,\n    blockSizes,\n    blockStarts,\n    chromStarts,\n    thickStart,\n    thickEnd,\n    type,\n    score,\n    chrom: _1,\n    chromStart: _2,\n    chromEnd: _3,\n    ...rest\n  } = data\n  const subfeatures = blockCount\n    ? makeBlocks({\n        start,\n        uniqueId,\n        refName,\n        chromStarts,\n        blockCount,\n        blockSizes,\n        blockStarts,\n      })\n    : []\n  const f = {\n    ...rest,\n    type,\n    score: scoreColumn ? +data[scoreColumn] : score,\n    start,\n    end,\n    refName,\n    uniqueId,\n    subfeatures,\n  }\n  return new SimpleFeature({\n    id: uniqueId,\n    data: isUcscProcessedTranscript(data)\n      ? ucscProcessedTranscript({\n          thickStart: thickStart!,\n          thickEnd: thickEnd!,\n          blockCount: blockCount!,\n          blockSizes: blockSizes!,\n          chromStarts: chromStarts,\n          ...f,\n        })\n      : f,\n  })\n}\n\nexport function isUcscProcessedTranscript(f: {\n  thickStart?: number\n  blockCount?: number\n  strand?: number\n}) {\n  return f.thickStart && f.blockCount && f.strand !== 0\n}\n"],"names":["BedTabixAdapter","BaseFeatureDataAdapter","constructor","config","getSubAdapter","pluginManager","super","bedGzLoc","this","getConf","type","loc","autoSql","pm","bed","TabixIndexedFile","filehandle","openLocation","csiFilehandle","undefined","tbiFilehandle","chunkCacheSize","columnNames","scoreColumn","parser","BED","getRefNames","opts","getReferenceSequenceNames","getHeader","getNames","length","defline","split","filter","f","at","includes","slice","map","trim","getFeatures","query","ObservableCreate","async","meta","getMetadata","columnNumbers","colRef","ref","colStart","start","colEnd","end","names","getLines","refName","lineCallback","line","fileOffset","observer","next","featureData","id","signal","complete","freeResources","ucscProcessedTranscript","feature","subfeatures","oldSubfeatures","thickStart","thickEnd","blockCount","blockSizes","chromStarts","strand","rest","child","sort","a","b","forEach","block","prime","push","leftPrime","rightPrime","makeBlocks","uniqueId","blockStarts","starts","bmin","bmax","l","colSame","data","fields","obj","Object","fromEntries","i","r","defaultParser","parseLine","score","chrom","_1","chromStart","_2","chromEnd","_3","SimpleFeature","isUcscProcessedTranscript"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6235.93768761.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6235,5156],{12598:function(b,e,o){b.exports=o(17753).enc.Utf8},2775:()=>{}}]);
+//# sourceMappingURL=6235.93768761.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6235.93768761.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6235.93768761.chunk.js","mappings":"uHAGEA,EAAOC,QAA4B,EAAQ,OAY5BC,IAAIC,I","sources":["../../../node_modules/crypto-js/enc-utf8.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));"],"names":["module","exports","enc","Utf8"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6310.ae82dc58.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6310,9870],{6310:(e,t,a)=>{a.r(t),a.d(t,{parseBedBuffer:()=>l,parseBedPEBuffer:()=>m,removeBedHeaders:()=>c});var r=a(59870);const n="browser ".split("").map((e=>e.charCodeAt(0))),s="track ".split("").map((e=>e.charCodeAt(0))),o="#".split("").map((e=>e.charCodeAt(0)));function d(e,t,a){let r=0;for(;r<a.length;r+=1)if(t[e+r]!==a[r])return!1;return!0}function c(e){let t=0;for(;t<e.length&&(d(t,e,n)||d(t,e,s)||d(t,e,o));t+=1)do{t+=1}while(10!==e[t]);return t?e.subarray(t):e}async function l(e,t){const a=c(e),n=await(0,r.parseTsvBuffer)(a),s=[{name:"chrom",dataType:{type:"LocRef"}},{name:"chromStart",dataType:{type:"LocStart"}},{name:"chromEnd",dataType:{type:"LocEnd"}},{name:"name",dataType:{type:"Text"}},{name:"score",dataType:{type:"Number"}},{name:"strand",dataType:{type:"Text"}}];return n.columns.forEach(((e,t)=>{const a=s[t];a&&(e.name=a.name,e.dataType=a.dataType)})),n.hasColumnNames=!0,n.assemblyName=t.selectedAssemblyName,n.columnDisplayOrder.push(n.columnDisplayOrder.length),n.columns.unshift({name:"Location",dataType:{type:"LocString"},isDerived:!0,derivationFunctionText:"jexl:{text:row.cells[0].text+':'+row.cells[1].text+'..'+row.cells[2].text,\n\n    extendedData: {refName: row.cells.ref.text, start: parseInt(row.cells.start.text,10), end: parseInt(row.cells.end.text,10)}}"}),n}async function m(e,t){const a=c(e),n=await(0,r.parseTsvBuffer)(a),s=[{name:"chrom1",dataType:{type:"Text"},featureField:["refName"]},{name:"start1",dataType:{type:"Number"},featureField:["start"]},{name:"end1",dataType:{type:"Number"},featureField:["end"]},{name:"chrom2",dataType:{type:"Text"},featureField:["mate","refName"]},{name:"start2",dataType:{type:"Number"},featureField:["mate","start"]},{name:"end2",dataType:{type:"Number"},featureField:["mate","end"]},{name:"name",dataType:{type:"Text"},featureField:["name"]},{name:"score",dataType:{type:"Number"},featureField:["score"]},{name:"strand1",dataType:{type:"Text"},featureField:["strand"]},{name:"strand2",dataType:{type:"Text"},featureField:["mate","strand"]}];return n.columns.forEach(((e,t)=>{const a=s[t];a&&(e.name=a.name,e.dataType=a.dataType)})),n.hasColumnNames=!0,n.rowSet.rows.forEach(((e,t)=>{const a={};e.cells.forEach((({text:e},t)=>{const r=s[t],n=r&&"Number"===r.dataType.type&&e?Number.parseFloat(e):e;r?2===r.featureField.length?(a[r.featureField[0]]||(a[r.featureField[0]]={}),a[r.featureField[0]][r.featureField[1]]=n):a[r.featureField[0]]=n:a[`column${t+1}`]=n})),a.uniqueId=`bedpe-${t}`,e.extendedData={feature:a}})),n.assemblyName=t.selectedAssemblyName,n}},59870:(e,t,a)=>{a.r(t),a.d(t,{bufferToString:()=>n,parseCsvBuffer:()=>c,parseTsvBuffer:()=>l});var r=a(99546);function n(e){return new TextDecoder("utf8",{fatal:!0}).decode(e)}async function s(e,t={}){return(await a.e(2847).then(a.t.bind(a,82847,23)).then((e=>e.default)))({noheader:!0,output:"csv",...t}).fromString(n(e))}function o(e,t,a){const n=e.rows[0].cells[t].text||"";let s,o="Text";try{s=(0,r.parseLocString)(n,a)}catch(e){}return s?.refName&&"number"==typeof s.start?o="LocString":/^\d+(\.\d+)?$/.test(n)&&(o="Number"),o}function d(e,t={}){const{hasColumnNameLine:a=!1,columnNameLineNumber:n=1,isValidRefName:s=()=>!1,selectedAssemblyName:d}=t;let c=0;const l={isLoaded:!0,rows:e.map(((e,t)=>{const r=t+(a?0:1);return e.length>c&&(c=e.length),{id:String(r),cells:e.map(((e,t)=>({columnNumber:t,text:e})))}}))},m={};if(a&&void 0!==n){const[e]=l.rows.splice(n-1,1);e&&e.cells.forEach(((e,t)=>{m[t]=e.text||""}))}const u=[],p=[];for(let e=0;e<c;e+=1){p.push(e);const t=o(l,e,s);if("LocString"===t)for(const t of l.rows){const a=t.cells[e];a.extendedData=(0,r.parseLocString)(a.text,s)}u[e]={name:m[e],dataType:{type:t}}}return{rowSet:l,columnDisplayOrder:p,hasColumnNames:!!a,columns:u,assemblyName:d}}async function c(e,t){return d(await s(e),t)}async function l(e,t){return d(await s(e,{delimiter:"\t"}),t)}}}]);
+//# sourceMappingURL=6310.ae82dc58.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6310.ae82dc58.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6310.ae82dc58.chunk.js","mappings":"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","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/BedImport.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/ImportUtils.ts"],"sourcesContent":["import { ParseOptions, parseTsvBuffer } from './ImportUtils'\nimport type { Buffer } from 'buffer'\n\nconst browserBytes = 'browser '.split('').map(c => c.charCodeAt(0))\nconst trackBytes = 'track '.split('').map(c => c.charCodeAt(0))\nconst commentBytes = '#'.split('').map(c => c.charCodeAt(0))\n\nfunction bytesAreFoundAt(position: number, buffer: Buffer, bytes: number[]) {\n  let i = 0\n  for (; i < bytes.length; i += 1) {\n    if (buffer[position + i] !== bytes[i]) {\n      return false\n    }\n  }\n  return true\n}\n\nexport function removeBedHeaders(buffer: Buffer) {\n  // slice off the first lines of the buffer if it starts with one or more\n  // header lines\n  let i = 0\n  for (; i < buffer.length; i += 1) {\n    if (\n      bytesAreFoundAt(i, buffer, browserBytes) ||\n      bytesAreFoundAt(i, buffer, trackBytes) ||\n      bytesAreFoundAt(i, buffer, commentBytes)\n    ) {\n      // consume up to the next newline\n      do {\n        i += 1\n      } while (buffer[i] !== 10)\n    } else {\n      // end of headers, return\n      break\n    }\n  }\n  if (i) {\n    return buffer.subarray(i)\n  }\n  return buffer\n}\n\nexport async function parseBedBuffer(buffer: Buffer, options: ParseOptions) {\n  const b = removeBedHeaders(buffer)\n  const data = await parseTsvBuffer(b)\n\n  const bedColumns = [\n    { name: 'chrom', dataType: { type: 'LocRef' } },\n    { name: 'chromStart', dataType: { type: 'LocStart' } },\n    { name: 'chromEnd', dataType: { type: 'LocEnd' } },\n    { name: 'name', dataType: { type: 'Text' } },\n    { name: 'score', dataType: { type: 'Number' } },\n    { name: 'strand', dataType: { type: 'Text' } },\n  ] as const\n\n  data.columns.forEach((col, colNumber) => {\n    const bedColumn = bedColumns[colNumber]\n    if (bedColumn) {\n      col.name = bedColumn.name\n      col.dataType = bedColumn.dataType\n    }\n  })\n  data.hasColumnNames = true\n  data.assemblyName = options.selectedAssemblyName\n\n  data.columnDisplayOrder.push(data.columnDisplayOrder.length)\n  data.columns.unshift({\n    name: 'Location',\n    dataType: { type: 'LocString' },\n    isDerived: true,\n    derivationFunctionText: `jexl:{text:row.cells[0].text+':'+row.cells[1].text+'..'+row.cells[2].text,\\n\n    extendedData: {refName: row.cells.ref.text, start: parseInt(row.cells.start.text,10), end: parseInt(row.cells.end.text,10)}}`,\n  })\n  return data\n}\n\nexport async function parseBedPEBuffer(buffer: Buffer, options: ParseOptions) {\n  const b = removeBedHeaders(buffer)\n  const data = await parseTsvBuffer(b)\n  interface BedColumn {\n    name: string\n    dataType: {\n      type: string\n    }\n    featureField: string[]\n  }\n  const bedColumns: BedColumn[] = [\n    { name: 'chrom1', dataType: { type: 'Text' }, featureField: ['refName'] },\n    { name: 'start1', dataType: { type: 'Number' }, featureField: ['start'] },\n    { name: 'end1', dataType: { type: 'Number' }, featureField: ['end'] },\n    {\n      name: 'chrom2',\n      dataType: { type: 'Text' },\n      featureField: ['mate', 'refName'],\n    },\n    {\n      name: 'start2',\n      dataType: { type: 'Number' },\n      featureField: ['mate', 'start'],\n    },\n    {\n      name: 'end2',\n      dataType: { type: 'Number' },\n      featureField: ['mate', 'end'],\n    },\n    { name: 'name', dataType: { type: 'Text' }, featureField: ['name'] },\n    { name: 'score', dataType: { type: 'Number' }, featureField: ['score'] },\n    { name: 'strand1', dataType: { type: 'Text' }, featureField: ['strand'] },\n    {\n      name: 'strand2',\n      dataType: { type: 'Text' },\n      featureField: ['mate', 'strand'],\n    },\n  ] as const\n  data.columns.forEach((col, colNumber) => {\n    const bedColumn = bedColumns[colNumber]\n    if (bedColumn) {\n      col.name = bedColumn.name\n      col.dataType = bedColumn.dataType\n    }\n  })\n  data.hasColumnNames = true\n\n  // decorate each row with a feature object in its extendedData\n  data.rowSet.rows.forEach((row, rowNumber) => {\n    const featureData: Record<string, any> = {}\n    row.cells.forEach(({ text }, columnNumber) => {\n      const bedColumn = bedColumns[columnNumber]\n      const val =\n        bedColumn && bedColumn.dataType.type === 'Number' && text\n          ? Number.parseFloat(text)\n          : text\n      if (bedColumn) {\n        // a predefined column\n        if (bedColumn.featureField.length === 2) {\n          if (!featureData[bedColumn.featureField[0]!]) {\n            featureData[bedColumn.featureField[0]!] = {}\n          }\n          featureData[bedColumn.featureField[0]!][bedColumn.featureField[1]!] =\n            val\n        } else {\n          featureData[bedColumn.featureField[0]!] = val\n        }\n      } else {\n        // some other column\n        featureData[`column${columnNumber + 1}`] = val\n      }\n    })\n    featureData.uniqueId = `bedpe-${rowNumber}`\n    row.extendedData = {\n      feature: featureData,\n    }\n  })\n\n  data.assemblyName = options.selectedAssemblyName\n\n  return data\n}\n","import { ParsedLocString, parseLocString } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nexport function bufferToString(buffer: Buffer) {\n  return new TextDecoder('utf8', { fatal: true }).decode(buffer)\n}\n\nasync function parseWith(buffer: Buffer, options = {}) {\n  const csv = await import('csvtojson').then(module => module.default)\n  return csv({ noheader: true, output: 'csv', ...options }).fromString(\n    bufferToString(buffer),\n  )\n}\n\nexport interface Row {\n  id: string\n\n  extendedData?: any\n  cells: {\n    text: string\n\n    extendedData?: any\n  }[]\n}\n\nexport interface RowSet {\n  isLoaded: boolean\n  rows: Row[]\n}\n\nexport interface ParseOptions {\n  hasColumnNameLine?: boolean\n  columnNameLineNumber?: number\n  selectedAssemblyName?: string\n  isValidRefName?: (refName: string, assemblyName?: string) => boolean\n}\n\nexport interface Column {\n  name: string\n  dataType: { type: string }\n  isDerived?: boolean\n  derivationFunctionText?: string\n}\n\nfunction guessColumnType(\n  rowSet: RowSet,\n  columnNumber: number,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const text = rowSet.rows[0]!.cells[columnNumber]!.text || ''\n\n  let guessedType = 'Text'\n\n  let parsedLoc: ParsedLocString | undefined\n  try {\n    parsedLoc = parseLocString(text, isValidRefName)\n  } catch (error) {\n    //\n  }\n  if (parsedLoc?.refName && typeof parsedLoc.start === 'number') {\n    guessedType = 'LocString'\n  } else if (/^\\d+(\\.\\d+)?$/.test(text)) {\n    guessedType = 'Number'\n  }\n\n  // MAYBE TODO: iterate over the rest of the rows to confirm\n  // the type for all the rows\n\n  return guessedType\n}\n\nfunction dataToSpreadsheetSnapshot(\n  rows: string[][],\n  options: ParseOptions = {},\n) {\n  const {\n    hasColumnNameLine = false,\n    columnNameLineNumber = 1,\n    isValidRefName = () => false,\n    selectedAssemblyName,\n  } = options\n  // rows is an array of row objects and columnNames\n  // is an array of column names (in import order)\n  let maxCols = 0\n  const rowSet: RowSet = {\n    isLoaded: true,\n    rows: rows.map((row, rowNumber) => {\n      const id = rowNumber + (hasColumnNameLine ? 0 : 1)\n      if (row.length > maxCols) {\n        maxCols = row.length\n      }\n      return {\n        id: String(id),\n        cells: row.map((text, columnNumber) => {\n          return { columnNumber, text }\n        }),\n      }\n    }),\n  }\n\n  // process the column names row if present\n  const columnNames: Record<string, string> = {}\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (hasColumnNameLine && columnNameLineNumber !== undefined) {\n    const [colNamesRow] = rowSet.rows.splice(columnNameLineNumber - 1, 1)\n\n    if (colNamesRow) {\n      colNamesRow.cells.forEach((cell, columnNumber) => {\n        columnNames[columnNumber] = cell.text || ''\n      })\n    }\n  }\n\n  // make our column definitions\n  const columns: Column[] = []\n  const columnDisplayOrder = []\n  for (let columnNumber = 0; columnNumber < maxCols; columnNumber += 1) {\n    columnDisplayOrder.push(columnNumber)\n    const guessedType = guessColumnType(rowSet, columnNumber, isValidRefName)\n\n    // store extendeddata for LocString column\n    if (guessedType === 'LocString') {\n      for (const row of rowSet.rows) {\n        const cell = row.cells[columnNumber]!\n        cell.extendedData = parseLocString(cell.text, isValidRefName)\n      }\n    }\n\n    columns[columnNumber] = {\n      name: columnNames[columnNumber]!,\n      dataType: {\n        type: guessedType,\n      },\n    }\n  }\n\n  return {\n    rowSet,\n    columnDisplayOrder,\n    hasColumnNames: !!hasColumnNameLine,\n    columns,\n    assemblyName: selectedAssemblyName,\n  }\n}\n\nexport async function parseCsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer)\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n\nexport async function parseTsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer, { delimiter: '\\t' })\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n"],"names":["browserBytes","split","map","c","charCodeAt","trackBytes","commentBytes","bytesAreFoundAt","position","buffer","bytes","i","length","removeBedHeaders","subarray","async","parseBedBuffer","options","b","data","parseTsvBuffer","bedColumns","name","dataType","type","columns","forEach","col","colNumber","bedColumn","hasColumnNames","assemblyName","selectedAssemblyName","columnDisplayOrder","push","unshift","isDerived","derivationFunctionText","parseBedPEBuffer","featureField","rowSet","rows","row","rowNumber","featureData","cells","text","columnNumber","val","Number","parseFloat","uniqueId","extendedData","feature","bufferToString","TextDecoder","fatal","decode","parseWith","then","module","default","noheader","output","fromString","guessColumnType","isValidRefName","parsedLoc","guessedType","parseLocString","error","refName","start","test","dataToSpreadsheetSnapshot","hasColumnNameLine","columnNameLineNumber","maxCols","isLoaded","id","String","columnNames","undefined","colNamesRow","splice","cell","parseCsvBuffer","delimiter"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6323.1c706a2d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6323],{66323:(e,s,a)=>{a.r(s),a.d(s,{default:()=>b.A,getInputLabelUtilityClasses:()=>l.R,inputLabelClasses:()=>l.A});var b=a(17125),l=a(15485)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6342.62a02e7b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6342],{76342:(s,e,r)=>{r.r(e),r.d(e,{default:()=>a.A,formGroupClasses:()=>b.A,getFormGroupUtilityClass:()=>b.c});var a=r(83867),b=r(46479)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6391.aabba4a1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6391],{78369:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var a=r(75099),s=r(46377),i=r(99546),n=r(99834),o=r(66885),c=r(82088),d=r(44728);class h{constructor(e,t){this.record=e,this._store=t}_get_name(){return this.record.readName}_get_start(){return this.record.alignmentStart-1}_get_end(){return this.record.alignmentStart+(this.record.lengthOnRef??1)-1}_get_cram_read_features(){return this.record.readFeatures}_get_type(){return"match"}_get_score(){return this.record.mappingQuality}_get_flags(){return this.record.flags}_get_strand(){return this.record.isReverseComplemented()?-1:1}_read_group_id(){return this._store.samHeader.readGroups?.[this.record.readGroupId]}_get_qual(){return(this.record.qualityScores||[]).join(" ")}qualRaw(){return this.record.qualityScores}_get_refName(){return this._store.refIdToName(this.record.sequenceId)}_get_is_paired(){return!!this.record.mate}_get_pair_orientation(){return this.record.isPaired()?this.record.getPairOrientation():void 0}_get_template_length(){return this.record.templateLength||this.record.templateSize}_get_next_ref(){return this.record.mate?this._store.refIdToName(this.record.mate.sequenceId):void 0}_get_next_segment_position(){return this.record.mate?`${this._store.refIdToName(this.record.mate.sequenceId)}:${this.record.mate.alignmentStart}`:void 0}_get_next_pos(){return this.record.mate?.alignmentStart}_get_tags(){const e=this._read_group_id(),{tags:t}=this.record;return void 0!==e?{...t,RG:e}:t}_get_seq(){return this.record.getReadBases()}_get_CIGAR(){return function(e,t,r,a){let s="",i="",n="M",o=0;if(!a)return"";const c=a.seq,d=a.start;let h=t,u=0,g=0;if(void 0!==e)for(const{code:t,refPos:r,sub:a,data:l}of e)if(u=r-h,s+=c.slice(h-d,r-d),h=r,g>0&&u&&(i+=`${g}I`,g=0),o&&"M"!==n&&(i+=`${o}${n}`,o=0),u&&(n="M",o+=u),"b"===t){const e=l.split(","),t=String.fromCharCode(...e);s+=t,h+=t.length,o+=t.length}else"B"===t||"X"===t?(s+=a,h++,o++):"D"===t||"N"===t?(h+=l,o&&(i+=`${o}${n}`),i+=l+t,o=0):"I"===t||"S"===t?(s+=l,o&&(i+=`${o}${n}`),i+=l.length+t,o=0):"i"===t?(o&&(i+=`${o}${n}`),g++,s+=l,o=0):"P"===t?(o&&(i+=`${o}${n}`),i+=`${l}P`):"H"===t&&(o&&(i+=`${o}${n}`),i+=`${l}H`,o=0);else u=r-s.length;return s.length!==r&&(u=r-s.length,s+=c.slice(h-d,h-d+u),o&&"M"!==n&&(i+=`${o}${n}`,o=0),n="M",o+=u),u&&g>0&&(i+=`${g}I`),o&&(i+=`${o}${n}`),i}(this.record.readFeatures,this.record.alignmentStart,this.record.readLength,this.record._refRegion)}tags(){return Object.getOwnPropertyNames(h.prototype).filter((e=>e.startsWith("_get_")&&"_get_mismatches"!==e&&"_get_cram_read_features"!==e)).map((e=>e.replace("_get_","")))}id(){return`${this._store.id}-${this.record.uniqueId}`}get(e){const t=`_get_${e}`;if(this[t])return this[t]()}parent(){}children(){}set(){}pairedFeature(){return!1}_get_clipPos(){const e=this.get("mismatches");if(e.length){const t=-1===this.get("strand")?e.at(-1):e[0],{type:r,cliplen:a}=t;if("softclip"===r||"hardclip"===r)return a}return 0}toJSON(){return{...Object.fromEntries(this.tags().map((e=>[e,this.get(e)])).filter((e=>void 0!==e[1]))),uniqueId:this.id()}}_get_mismatches(){const e=this.record.readFeatures,t=this.qualRaw();return function(e,t,r){if(!e)return[];const a=new Array(e.length);let s=0,i=0,n=0,o=0,c=t;for(const{refPos:d,code:h,pos:u,data:g,sub:l,ref:m}of e)if(o=n-c,c=n,o&&i>0&&(a[s++]={start:n,type:"insertion",base:`${i}`,length:0},i=0),n=d-1-t,"X"===h)a[s++]={start:n,length:1,base:l,qual:r?.[u-1],altbase:m?.toUpperCase(),type:"mismatch"};else if("I"===h)a[s++]={start:n,type:"insertion",base:`${g.length}`,length:0};else if("N"===h)a[s++]={type:"skip",length:g,start:n,base:"N"};else if("S"===h){const e=g.length;a[s++]={start:n,type:"softclip",base:`S${e}`,cliplen:e,length:1}}else if("P"===h);else if("H"===h){const e=g;a[s++]={start:n,type:"hardclip",base:`H${e}`,cliplen:e,length:1}}else"D"===h?a[s++]={type:"deletion",length:g,start:n,base:"*"}:"b"===h||"q"===h||"B"===h||"i"===h&&i++;return o&&i>0&&(a[s++]={start:n,type:"insertion",base:`${i}`,length:0},i=0),a.slice(0,s)}(e,this.get("start"),t)}}class u extends s.BaseFeatureDataAdapter{samHeader={};seqIdToOriginalRefName=[];async configurePre(){const e=this.getConf("cramLocation"),t=this.getConf("craiLocation"),r=this.pluginManager,s=new a.bQ({cramFilehandle:(0,n.openLocation)(e,r),index:new a.Wb({filehandle:(0,n.openLocation)(t,r)}),seqFetch:(...e)=>this.seqFetch(...e),checkSequenceMD5:!1});if(!this.getSubAdapter)throw new Error("Error getting subadapter");const i=this.getConf("sequenceAdapter");if(!i)throw new Error("no sequenceAdapter supplied to CramAdapter config");return{cram:s,sequenceAdapter:(await this.getSubAdapter(i)).dataAdapter}}async configure(){return this.configureP||(this.configureP=this.configurePre().catch((e=>{throw this.configureP=void 0,e}))),this.configureP}async getHeader(e){const{cram:t}=await this.configure();return t.cram.getHeaderText()}async seqFetch(e,t,r){t-=1;const{sequenceAdapter:a}=await this.configure(),s=this.refIdToOriginalName(e)||this.refIdToName(e);if(!s)throw new Error("unknown");const n=(await(0,d._)(a.getFeatures({refName:s,start:t,end:r,assemblyName:""}).pipe((0,c.$)()))).sort(((e,t)=>e.get("start")-t.get("start"))).map((e=>{const a=e.get("start"),s=e.get("end"),i=Math.max(t-a,0),n=Math.min(r-a,s-a)-i;return(e.get("seq")||e.get("residues")).slice(i,i+n)})).join(""),o=r-t;if(n.length!==o)throw new Error(`fetching ${s}:${(0,i.toLocale)(t-1)}-${(0,i.toLocale)(r)} returned ${(0,i.toLocale)(n.length)} bases, should have returned ${(0,i.toLocale)(o)}`);return n}async setupPre(e){const{statusCallback:t=()=>{}}=e||{};return(0,i.updateStatus)("Downloading index",t,(async()=>{const e=await this.configure(),{cram:t}=e,r=await t.cram.getSamHeader(),a=[],s={};r.filter((e=>"SQ"===e.tag)).forEach(((e,t)=>{const r=e.data.find((e=>"SN"===e.tag));if(r){const e=r.value;s[e]=t,a[t]=e}}));const i=r.filter((e=>"RG"===e.tag)).map((e=>e.data.find((e=>"ID"===e.tag))?.value)),n={idToName:a,nameToId:s,readGroups:i};return this.samHeader=n,{samHeader:n,...e}}))}async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async getRefNames(e){const{samHeader:t}=await this.setup(e);if(!t.idToName)throw new Error("CRAM file has no header lines");return t.idToName}refNameToId(e){return this.samHeader.nameToId?this.samHeader.nameToId[e]:this.seqIdToRefName?this.seqIdToRefName.indexOf(e):void 0}refIdToName(e){return this.samHeader.idToName?.[e]||this.seqIdToRefName?.[e]}refIdToOriginalName(e){return this.seqIdToOriginalRefName[e]}getFeatures(e,t){const{signal:r,filterBy:a,statusCallback:s=()=>{}}=t||{},{refName:n,start:c,end:d,originalRefName:h}=e;return(0,o.ObservableCreate)((async e=>{const{cram:o,samHeader:u}=await this.setup(t),g=this.refNameToId(n);if(void 0===g)return console.warn("Unknown refName",n),void e.complete();h&&(this.seqIdToOriginalRefName[g]=h);const l=await(0,i.updateStatus)("Downloading alignments",s,(()=>o.getRecordsForRange(g,c,d)));(0,i.checkAbortSignal)(r),await(0,i.updateStatus)("Processing alignments",s,(()=>{const{flagInclude:t=0,flagExclude:r=0,tagFilter:s,readName:i}=a||{};for(const a of l){const n=a.flags;if((n&t)===t||n&r){if(s){const e="RG"===s.tag?u.readGroups?.[a.readGroupId]:a.tags[s.tag],t=s.value;if("*"===t?void 0!==e:`${e}`!=`${t}`)continue}i&&a.readName!==i||e.next(this.cramRecordToFeature(a))}}e.complete()}))}),r)}freeResources(){}cramRecordToFeature(e){return new h(e,this)}async getMultiRegionFeatureDensityStats(e,t){return{bytes:await this.bytesForRegions(e,t),fetchSizeLimit:this.getConf("fetchSizeLimit")}}async bytesForRegions(e,t){const{cram:r}=await this.configure();return(await Promise.all(e.map((e=>{const{refName:t,start:a,end:s}=e,i=this.refNameToId(t);return void 0!==i?r.index.getEntriesForRange(i,a,s):[{sliceBytes:0}]})))).flat().reduce(((e,t)=>e+t.sliceBytes),0)}}},81239:()=>{}}]);
+//# sourceMappingURL=6391.aabba4a1.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6391.aabba4a1.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6391.aabba4a1.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/CramAdapter/CramSlightlyLazyFeature.ts","../../../plugins/alignments/src/CramAdapter/util.ts","../../../plugins/alignments/src/CramAdapter/CramAdapter.ts"],"sourcesContent":["import {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { CramRecord } from '@gmod/cram'\n\n// locals\nimport CramAdapter from './CramAdapter'\nimport { readFeaturesToCIGAR, readFeaturesToMismatches } from './util'\n\nexport default class CramSlightlyLazyFeature implements Feature {\n  // uses parameter properties to automatically create fields on the class\n  // https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties\n  constructor(\n    private record: CramRecord,\n    private _store: CramAdapter,\n  ) {}\n\n  _get_name() {\n    return this.record.readName\n  }\n\n  _get_start() {\n    return this.record.alignmentStart - 1\n  }\n\n  _get_end() {\n    return this.record.alignmentStart + (this.record.lengthOnRef ?? 1) - 1\n  }\n\n  _get_cram_read_features() {\n    return this.record.readFeatures\n  }\n\n  _get_type() {\n    return 'match'\n  }\n\n  _get_score() {\n    return this.record.mappingQuality\n  }\n\n  _get_flags() {\n    return this.record.flags\n  }\n\n  _get_strand() {\n    return this.record.isReverseComplemented() ? -1 : 1\n  }\n\n  _read_group_id() {\n    return this._store.samHeader.readGroups?.[this.record.readGroupId]\n  }\n\n  _get_qual() {\n    return (this.record.qualityScores || []).join(' ')\n  }\n\n  qualRaw() {\n    return this.record.qualityScores\n  }\n\n  _get_refName() {\n    return this._store.refIdToName(this.record.sequenceId)\n  }\n\n  _get_is_paired() {\n    return !!this.record.mate\n  }\n\n  _get_pair_orientation() {\n    return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n  }\n\n  _get_template_length() {\n    return this.record.templateLength || this.record.templateSize\n  }\n\n  _get_next_ref() {\n    return this.record.mate\n      ? this._store.refIdToName(this.record.mate.sequenceId)\n      : undefined\n  }\n\n  _get_next_segment_position() {\n    return this.record.mate\n      ? `${this._store.refIdToName(this.record.mate.sequenceId)}:${\n          this.record.mate.alignmentStart\n        }`\n      : undefined\n  }\n\n  _get_next_pos() {\n    return this.record.mate?.alignmentStart\n  }\n\n  _get_tags() {\n    const RG = this._read_group_id()\n    const { tags } = this.record\n    // avoids a tag copy if no RG, but just copy if there is one\n    return RG !== undefined ? { ...tags, RG } : tags\n  }\n\n  _get_seq() {\n    return this.record.getReadBases()\n  }\n\n  // generate a CIGAR, based on code from jkbonfield\n  _get_CIGAR() {\n    return readFeaturesToCIGAR(\n      this.record.readFeatures,\n      this.record.alignmentStart,\n      this.record.readLength,\n      this.record._refRegion,\n    )\n  }\n\n  tags() {\n    return Object.getOwnPropertyNames(CramSlightlyLazyFeature.prototype)\n      .filter(\n        prop =>\n          prop.startsWith('_get_') &&\n          prop !== '_get_mismatches' &&\n          prop !== '_get_cram_read_features',\n      )\n      .map(methodName => methodName.replace('_get_', ''))\n  }\n\n  id() {\n    return `${this._store.id}-${this.record.uniqueId}`\n  }\n\n  get(field: string) {\n    const methodName = `_get_${field}`\n    // @ts-expect-error\n    if (this[methodName]) {\n      // @ts-expect-error\n      return this[methodName]()\n    }\n    return undefined\n  }\n\n  parent() {\n    return undefined\n  }\n\n  children() {\n    return undefined\n  }\n\n  set() {}\n\n  pairedFeature() {\n    return false\n  }\n\n  _get_clipPos() {\n    const mismatches = this.get('mismatches')\n    if (mismatches.length) {\n      const record =\n        this.get('strand') === -1 ? mismatches.at(-1) : mismatches[0]\n      const { type, cliplen } = record\n      if (type === 'softclip' || type === 'hardclip') {\n        return cliplen\n      }\n    }\n    return 0\n  }\n\n  toJSON(): SimpleFeatureSerialized {\n    return {\n      ...Object.fromEntries(\n        this.tags()\n          .map(t => [t, this.get(t)])\n          .filter(elt => elt[1] !== undefined),\n      ),\n      uniqueId: this.id(),\n    }\n  }\n\n  _get_mismatches() {\n    const readFeatures = this.record.readFeatures\n    const qual = this.qualRaw()\n    const start = this.get('start')\n    return readFeaturesToMismatches(readFeatures, start, qual)\n  }\n}\n","import { CramRecord } from '@gmod/cram'\n\ntype ReadFeatures = CramRecord['readFeatures']\n\nexport interface Mismatch {\n  qual?: number\n  start: number\n  length: number\n  type: string\n  base: string | undefined\n  altbase?: string\n  seq?: string\n  cliplen?: number\n}\n\nexport function readFeaturesToMismatches(\n  readFeatures: ReadFeatures,\n  start: number,\n  qual?: number[] | null,\n) {\n  if (!readFeatures) {\n    return []\n  }\n  const mismatches: Mismatch[] = new Array(readFeatures.length)\n  let j = 0\n  let insLen = 0\n  let refPos = 0\n  let sublen = 0\n  let lastPos = start\n\n  for (const { refPos: p, code, pos, data, sub, ref } of readFeatures) {\n    sublen = refPos - lastPos\n    lastPos = refPos\n\n    if (sublen && insLen > 0) {\n      mismatches[j++] = {\n        start: refPos,\n        type: 'insertion',\n        base: `${insLen}`,\n        length: 0,\n      }\n      insLen = 0\n    }\n    refPos = p - 1 - start\n\n    if (code === 'X') {\n      // substitution\n      mismatches[j++] = {\n        start: refPos,\n        length: 1,\n        base: sub,\n        qual: qual?.[pos - 1],\n        altbase: ref?.toUpperCase(),\n        type: 'mismatch',\n      }\n    } else if (code === 'I') {\n      // insertion\n      mismatches[j++] = {\n        start: refPos,\n        type: 'insertion',\n        base: `${data.length}`,\n        length: 0,\n      }\n    } else if (code === 'N') {\n      // reference skip\n      mismatches[j++] = {\n        type: 'skip',\n        length: data,\n        start: refPos,\n        base: 'N',\n      }\n    } else if (code === 'S') {\n      // soft clip\n      const len = data.length\n      mismatches[j++] = {\n        start: refPos,\n        type: 'softclip',\n        base: `S${len}`,\n        cliplen: len,\n        length: 1,\n      }\n    } else if (code === 'P') {\n      // padding\n    } else if (code === 'H') {\n      // hard clip\n      const len = data\n      mismatches[j++] = {\n        start: refPos,\n        type: 'hardclip',\n        base: `H${len}`,\n        cliplen: len,\n        length: 1,\n      }\n    } else if (code === 'D') {\n      // deletion\n      mismatches[j++] = {\n        type: 'deletion',\n        length: data,\n        start: refPos,\n        base: '*',\n      }\n    } else if (code === 'b') {\n      // stretch of bases\n    } else if (code === 'q') {\n      // stretch of qual scores\n    } else if (code === 'B') {\n      // a pair of [base, qual]\n    } else if (code === 'i') {\n      // single-base insertion, we collect these if there are multiple in a row\n      // into a single insertion entry\n      insLen++\n    } else if (code === 'Q') {\n      // single quality value\n    }\n  }\n\n  if (sublen && insLen > 0) {\n    mismatches[j++] = {\n      start: refPos,\n      type: 'insertion',\n      base: `${insLen}`,\n      length: 0,\n    }\n    insLen = 0\n  }\n\n  return mismatches.slice(0, j)\n}\n\nexport function readFeaturesToCIGAR(\n  readFeatures: ReadFeatures,\n  alignmentStart: number,\n  readLen: number,\n  refRegion?: { seq: string; start: number },\n) {\n  let seq = ''\n  let cigar = ''\n  let op = 'M'\n  let oplen = 0\n  if (!refRegion) {\n    return ''\n  }\n\n  // not sure I should access these, but...\n  const ref = refRegion.seq\n  const refStart = refRegion.start\n  let lastPos = alignmentStart\n  let sublen = 0\n  let insLen = 0\n  if (readFeatures !== undefined) {\n    for (const { code, refPos, sub, data } of readFeatures) {\n      sublen = refPos - lastPos\n      seq += ref.slice(lastPos - refStart, refPos - refStart)\n      lastPos = refPos\n\n      if (insLen > 0 && sublen) {\n        cigar += `${insLen}I`\n        insLen = 0\n      }\n      if (oplen && op !== 'M') {\n        cigar += `${oplen}${op}`\n        oplen = 0\n      }\n      if (sublen) {\n        op = 'M'\n        oplen += sublen\n      }\n\n      if (code === 'b') {\n        // An array of bases stored verbatim\n        const ret = data.split(',')\n        const added = String.fromCharCode(...ret)\n        seq += added\n        lastPos += added.length\n        oplen += added.length\n      } else if (code === 'B') {\n        // Single base (+ qual score)\n        seq += sub\n        lastPos++\n        oplen++\n      } else if (code === 'X') {\n        // Substitution\n        seq += sub\n        lastPos++\n        oplen++\n      } else if (code === 'D' || code === 'N') {\n        // Deletion or Ref Skip\n        lastPos += data\n        if (oplen) {\n          cigar += `${oplen}${op}`\n        }\n        cigar += data + code\n        oplen = 0\n      } else if (code === 'I' || code === 'S') {\n        // Insertion or soft-clip\n        seq += data\n        if (oplen) {\n          cigar += `${oplen}${op}`\n        }\n        cigar += data.length + code\n        oplen = 0\n      } else if (code === 'i') {\n        // Single base insertion\n        // seq += data\n        if (oplen) {\n          cigar += `${oplen}${op}`\n        }\n        insLen++\n        seq += data\n        oplen = 0\n      } else if (code === 'P') {\n        // Padding\n        if (oplen) {\n          cigar += `${oplen}${op}`\n        }\n        cigar += `${data}P`\n      } else if (code === 'H') {\n        // Hard clip\n        if (oplen) {\n          cigar += `${oplen}${op}`\n        }\n        cigar += `${data}H`\n        oplen = 0\n      } // else q or Q\n    }\n  } else {\n    sublen = readLen - seq.length\n  }\n  if (seq.length !== readLen) {\n    sublen = readLen - seq.length\n    seq += ref.slice(lastPos - refStart, lastPos - refStart + sublen)\n\n    if (oplen && op !== 'M') {\n      cigar += `${oplen}${op}`\n      oplen = 0\n    }\n    op = 'M'\n    oplen += sublen\n  }\n  if (sublen && insLen > 0) {\n    cigar += `${insLen}I`\n  }\n  if (oplen) {\n    cigar += `${oplen}${op}`\n  }\n\n  return cigar\n}\n","import { CraiIndex, IndexedCramFile, CramRecord } from '@gmod/cram'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n  BaseSequenceAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport {\n  checkAbortSignal,\n  Region,\n  Feature,\n  updateStatus,\n  toLocale,\n} from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport CramSlightlyLazyFeature from './CramSlightlyLazyFeature'\nimport { IFilter } from '../shared'\n\ninterface Header {\n  idToName?: string[]\n  nameToId?: Record<string, number>\n  readGroups?: (string | undefined)[]\n}\n\nexport default class CramAdapter extends BaseFeatureDataAdapter {\n  samHeader: Header = {}\n\n  private setupP?: Promise<{\n    samHeader: Header\n    cram: IndexedCramFile\n    sequenceAdapter: BaseSequenceAdapter\n  }>\n\n  private configureP?: Promise<{\n    cram: IndexedCramFile\n    sequenceAdapter: BaseSequenceAdapter\n  }>\n\n  // maps a refname to an id\n  private seqIdToRefName: string[] | undefined\n\n  // maps a seqId to original refname, passed specially to render args, to a seqid\n  private seqIdToOriginalRefName: string[] = []\n\n  public async configurePre() {\n    const cramLocation = this.getConf('cramLocation')\n    const craiLocation = this.getConf('craiLocation')\n    const pm = this.pluginManager\n\n    const cram = new IndexedCramFile({\n      cramFilehandle: openLocation(cramLocation, pm),\n      index: new CraiIndex({ filehandle: openLocation(craiLocation, pm) }),\n      seqFetch: (...args) => this.seqFetch(...args),\n      checkSequenceMD5: false,\n    })\n\n    if (!this.getSubAdapter) {\n      throw new Error('Error getting subadapter')\n    }\n\n    const seqConf = this.getConf('sequenceAdapter')\n    if (!seqConf) {\n      throw new Error('no sequenceAdapter supplied to CramAdapter config')\n    }\n    const subadapter = await this.getSubAdapter(seqConf)\n\n    return {\n      cram,\n      sequenceAdapter: subadapter.dataAdapter as BaseSequenceAdapter,\n    }\n  }\n\n  public async configure() {\n    if (!this.configureP) {\n      this.configureP = this.configurePre().catch((e: unknown) => {\n        this.configureP = undefined\n        throw e\n      })\n    }\n    return this.configureP\n  }\n\n  async getHeader(_opts?: BaseOptions) {\n    const { cram } = await this.configure()\n    return cram.cram.getHeaderText()\n  }\n\n  private async seqFetch(\n    seqId: number,\n    start: number,\n    end: number,\n  ): Promise<string> {\n    start -= 1 // convert from 1-based closed to interbase\n\n    const { sequenceAdapter } = await this.configure()\n    const refName = this.refIdToOriginalName(seqId) || this.refIdToName(seqId)\n    if (!refName) {\n      throw new Error('unknown')\n    }\n\n    const seqChunks = await firstValueFrom(\n      sequenceAdapter\n        .getFeatures({\n          refName,\n          start,\n          end,\n          assemblyName: '',\n        })\n        .pipe(toArray()),\n    )\n\n    const sequence = seqChunks\n      .sort((a, b) => a.get('start') - b.get('start'))\n      .map(chunk => {\n        const chunkStart = chunk.get('start')\n        const chunkEnd = chunk.get('end')\n        const trimStart = Math.max(start - chunkStart, 0)\n        const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n        const trimLength = trimEnd - trimStart\n        const chunkSeq = chunk.get('seq') || chunk.get('residues')\n        return chunkSeq.slice(trimStart, trimStart + trimLength)\n      })\n      .join('')\n\n    const qlen = end - start\n    if (sequence.length !== qlen) {\n      throw new Error(\n        `fetching ${refName}:${toLocale(\n          start - 1,\n        )}-${toLocale(end)} returned ${toLocale(sequence.length)} bases, should have returned ${toLocale(\n          qlen,\n        )}`,\n      )\n    }\n    return sequence\n  }\n\n  private async setupPre(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    return updateStatus('Downloading index', statusCallback, async () => {\n      const conf = await this.configure()\n      const { cram } = conf\n      const samHeader = await cram.cram.getSamHeader()\n\n      // use the @SQ lines in the header to figure out the\n      // mapping between ref ID numbers and names\n      const idToName: string[] = []\n      const nameToId: Record<string, number> = {}\n      samHeader\n        .filter(l => l.tag === 'SQ')\n        .forEach((sqLine, refId) => {\n          const SN = sqLine.data.find(item => item.tag === 'SN')\n          if (SN) {\n            const refName = SN.value\n            nameToId[refName] = refId\n            idToName[refId] = refName\n          }\n        })\n\n      const readGroups = samHeader\n        .filter(l => l.tag === 'RG')\n        .map(rgLine => rgLine.data.find(item => item.tag === 'ID')?.value)\n\n      const data = { idToName, nameToId, readGroups }\n      this.samHeader = data\n      return { samHeader: data, ...conf }\n    })\n  }\n\n  private async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async getRefNames(opts?: BaseOptions) {\n    const { samHeader } = await this.setup(opts)\n    if (!samHeader.idToName) {\n      throw new Error('CRAM file has no header lines')\n    }\n    return samHeader.idToName\n  }\n\n  // use info from the SAM header if possible, but fall back to using\n  // the ref seq order from when the browser's refseqs were loaded\n  refNameToId(refName: string) {\n    if (this.samHeader.nameToId) {\n      return this.samHeader.nameToId[refName]\n    }\n    if (this.seqIdToRefName) {\n      return this.seqIdToRefName.indexOf(refName)\n    }\n    return undefined\n  }\n\n  // use info from the SAM header if possible, but fall back to using\n  // the ref seq order from when the browser's refseqs were loaded\n  refIdToName(refId: number) {\n    return this.samHeader.idToName?.[refId] || this.seqIdToRefName?.[refId]\n  }\n\n  refIdToOriginalName(refId: number) {\n    return this.seqIdToOriginalRefName[refId]\n  }\n\n  getFeatures(\n    region: Region & { originalRefName?: string },\n    opts?: BaseOptions & {\n      filterBy: IFilter\n    },\n  ) {\n    const { signal, filterBy, statusCallback = () => {} } = opts || {}\n    const { refName, start, end, originalRefName } = region\n\n    return ObservableCreate<Feature>(async observer => {\n      const { cram, samHeader } = await this.setup(opts)\n\n      const refId = this.refNameToId(refName)\n      if (refId === undefined) {\n        console.warn('Unknown refName', refName)\n        observer.complete()\n        return\n      }\n\n      if (originalRefName) {\n        this.seqIdToOriginalRefName[refId] = originalRefName\n      }\n      const records = await updateStatus(\n        'Downloading alignments',\n        statusCallback,\n        () => cram.getRecordsForRange(refId, start, end),\n      )\n      checkAbortSignal(signal)\n      await updateStatus('Processing alignments', statusCallback, () => {\n        const {\n          flagInclude = 0,\n          flagExclude = 0,\n          tagFilter,\n          readName,\n        } = filterBy || {}\n\n        for (const record of records) {\n          const flags = record.flags\n          if ((flags & flagInclude) !== flagInclude && !(flags & flagExclude)) {\n            continue\n          }\n\n          if (tagFilter) {\n            const readVal =\n              tagFilter.tag === 'RG'\n                ? samHeader.readGroups?.[record.readGroupId]\n                : record.tags[tagFilter.tag]\n            const filterVal = tagFilter.value\n            if (\n              filterVal === '*'\n                ? readVal !== undefined\n                : `${readVal}` !== `${filterVal}`\n            ) {\n              continue\n            }\n          }\n\n          if (readName && record.readName !== readName) {\n            continue\n          }\n          observer.next(this.cramRecordToFeature(record))\n        }\n\n        observer.complete()\n      })\n    }, signal)\n  }\n\n  freeResources(/* { region } */): void {}\n\n  cramRecordToFeature(record: CramRecord) {\n    return new CramSlightlyLazyFeature(record, this)\n  }\n\n  // we return the configured fetchSizeLimit, and the bytes for the region\n  async getMultiRegionFeatureDensityStats(\n    regions: Region[],\n    opts?: BaseOptions,\n  ) {\n    const bytes = await this.bytesForRegions(regions, opts)\n    const fetchSizeLimit = this.getConf('fetchSizeLimit')\n    return {\n      bytes,\n      fetchSizeLimit,\n    }\n  }\n\n  /**\n   * get the approximate number of bytes queried from the file for the given\n   * query regions\n   * @param regions - list of query regions\n   */\n  private async bytesForRegions(regions: Region[], _opts?: BaseOptions) {\n    const { cram } = await this.configure()\n    const blockResults = await Promise.all(\n      regions.map(region => {\n        const { refName, start, end } = region\n        const chrId = this.refNameToId(refName)\n        return chrId !== undefined\n          ? cram.index.getEntriesForRange(chrId, start, end)\n          : [{ sliceBytes: 0 }]\n      }),\n    )\n\n    return blockResults.flat().reduce((a, b) => a + b.sliceBytes, 0)\n  }\n}\n"],"names":["CramSlightlyLazyFeature","constructor","record","_store","_get_name","this","readName","_get_start","alignmentStart","_get_end","lengthOnRef","_get_cram_read_features","readFeatures","_get_type","_get_score","mappingQuality","_get_flags","flags","_get_strand","isReverseComplemented","_read_group_id","samHeader","readGroups","readGroupId","_get_qual","qualityScores","join","qualRaw","_get_refName","refIdToName","sequenceId","_get_is_paired","mate","_get_pair_orientation","isPaired","getPairOrientation","undefined","_get_template_length","templateLength","templateSize","_get_next_ref","_get_next_segment_position","_get_next_pos","_get_tags","RG","tags","_get_seq","getReadBases","_get_CIGAR","readLen","refRegion","seq","cigar","op","oplen","ref","refStart","start","lastPos","sublen","insLen","code","refPos","sub","data","slice","ret","split","added","String","fromCharCode","length","readFeaturesToCIGAR","readLength","_refRegion","Object","getOwnPropertyNames","prototype","filter","prop","startsWith","map","methodName","replace","id","uniqueId","get","field","parent","children","set","pairedFeature","_get_clipPos","mismatches","at","type","cliplen","toJSON","fromEntries","t","elt","_get_mismatches","qual","Array","j","p","pos","base","altbase","toUpperCase","len","readFeaturesToMismatches","CramAdapter","BaseFeatureDataAdapter","seqIdToOriginalRefName","configurePre","cramLocation","getConf","craiLocation","pm","pluginManager","cram","IndexedCramFile","cramFilehandle","openLocation","index","CraiIndex","filehandle","seqFetch","args","checkSequenceMD5","getSubAdapter","Error","seqConf","sequenceAdapter","dataAdapter","configure","configureP","catch","e","getHeader","_opts","getHeaderText","seqId","end","refName","refIdToOriginalName","sequence","firstValueFrom","getFeatures","assemblyName","pipe","toArray","sort","a","b","chunk","chunkStart","chunkEnd","trimStart","Math","max","trimLength","min","qlen","toLocale","setupPre","opts","statusCallback","updateStatus","async","conf","getSamHeader","idToName","nameToId","l","tag","forEach","sqLine","refId","SN","find","item","value","rgLine","setup","setupP","getRefNames","refNameToId","seqIdToRefName","indexOf","region","signal","filterBy","originalRefName","ObservableCreate","console","warn","observer","complete","records","getRecordsForRange","checkAbortSignal","flagInclude","flagExclude","tagFilter","readVal","filterVal","next","cramRecordToFeature","freeResources","getMultiRegionFeatureDensityStats","regions","bytes","bytesForRegions","fetchSizeLimit","Promise","all","chrId","getEntriesForRange","sliceBytes","flat","reduce"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6395.f6027b24.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6395],{66395:(e,t,r)=>{r.d(t,{sk:()=>L,FO:()=>K,Ay:()=>P});var o=r(7552),a=r(87485),n=r(9555),l=r(98360),c=r(29629),s=r(1343),u=r(75785),i=r(40898),f=r(99546);function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}function d(e,t){if(null==e)return{};var r,o,a={},n=Object.keys(e);for(o=0;o<n.length;o++)t.indexOf(r=n[o])>=0||(a[r]=e[r]);return a}function g(e){const t=(0,o.useRef)(e),r=(0,o.useRef)((e=>{t.current&&t.current(e)}));return t.current=e,r.current}const m=(e,t=0,r=1)=>e>r?r:e<t?t:e,p=e=>"touches"in e,v=e=>e&&e.ownerDocument.defaultView||self,b=(e,t,r)=>{const o=e.getBoundingClientRect(),a=p(t)?((e,t)=>{for(let r=0;r<e.length;r++)if(e[r].identifier===t)return e[r];return e[0]})(t.touches,r):t;return{left:m((a.pageX-(o.left+v(e).pageXOffset))/o.width),top:m((a.pageY-(o.top+v(e).pageYOffset))/o.height)}},_=e=>{!p(e)&&e.preventDefault()},E=o.memo((e=>{let{onMove:t,onKey:r}=e,a=d(e,["onMove","onKey"]);const n=(0,o.useRef)(null),l=g(t),c=g(r),s=(0,o.useRef)(null),u=(0,o.useRef)(!1),[i,f,m]=(0,o.useMemo)((()=>{const e=e=>{_(e),(p(e)?e.touches.length>0:e.buttons>0)&&n.current?l(b(n.current,e,s.current)):r(!1)},t=()=>r(!1);function r(r){const o=u.current,a=v(n.current),l=r?a.addEventListener:a.removeEventListener;l(o?"touchmove":"mousemove",e),l(o?"touchend":"mouseup",t)}return[({nativeEvent:e})=>{const t=n.current;if(t&&(_(e),!((e,t)=>t&&!p(e))(e,u.current)&&t)){if(p(e)){u.current=!0;const t=e.changedTouches||[];t.length&&(s.current=t[0].identifier)}t.focus(),l(b(t,e,s.current)),r(!0)}},e=>{const t=e.which||e.keyCode;t<37||t>40||(e.preventDefault(),c({left:39===t?.05:37===t?-.05:0,top:40===t?.05:38===t?-.05:0}))},r]}),[c,l]);return(0,o.useEffect)((()=>m),[m]),o.createElement("div",h({},a,{onTouchStart:i,onMouseDown:i,className:"react-colorful__interactive",ref:n,onKeyDown:f,tabIndex:0,role:"slider"}))})),w=e=>e.filter(Boolean).join(" "),x=({className:e,color:t,left:r,top:a=.5})=>{const n=w(["react-colorful__pointer",e]);return o.createElement("div",{className:n,style:{top:100*a+"%",left:100*r+"%"}},o.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},y=(e,t=0,r=Math.pow(10,t))=>Math.round(r*e)/r,C=(Math.PI,({h:e,s:t,v:r,a:o})=>{const a=(200-t)*r/100;return{h:y(e),s:y(a>0&&a<200?t*r/100/(a<=100?a:200-a)*100:0),l:y(a/2),a:y(o,2)}}),k=e=>{const{h:t,s:r,l:o}=C(e);return`hsl(${t}, ${r}%, ${o}%)`},N=e=>{const{h:t,s:r,l:o,a}=C(e);return`hsla(${t}, ${r}%, ${o}%, ${a})`},M=({r:e,g:t,b:r,a:o})=>{const a=Math.max(e,t,r),n=a-Math.min(e,t,r),l=n?a===e?(t-r)/n:a===t?2+(r-e)/n:4+(e-t)/n:0;return{h:y(60*(l<0?l+6:l)),s:y(a?n/a*100:0),v:y(a/255*100),a:o}},$=o.memo((({className:e,hue:t,onChange:r})=>{const a=w(["react-colorful__hue",e]);return o.createElement("div",{className:a},o.createElement(E,{onMove:e=>{r({h:360*e.left})},onKey:e=>{r({h:m(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuetext":y(t)},o.createElement(x,{className:"react-colorful__hue-pointer",left:t/360,color:k({h:t,s:100,v:100,a:1})})))})),O=o.memo((({hsva:e,onChange:t})=>{const r={backgroundColor:k({h:e.h,s:100,v:100,a:1})};return o.createElement("div",{className:"react-colorful__saturation",style:r},o.createElement(E,{onMove:e=>{t({s:100*e.left,v:100-100*e.top})},onKey:r=>{t({s:m(e.s+100*r.left,0,100),v:m(e.v-100*r.top,0,100)})},"aria-label":"Color","aria-valuetext":`Saturation ${y(e.s)}%, Brightness ${y(e.v)}%`},o.createElement(x,{className:"react-colorful__saturation-pointer",top:1-e.v/100,left:e.s/100,color:k(e)})))}));function j(e,t,r){const a=g(r),[n,l]=(0,o.useState)((()=>e.toHsva(t))),c=(0,o.useRef)({color:t,hsva:n});(0,o.useEffect)((()=>{if(!e.equal(t,c.current.color)){const r=e.toHsva(t);c.current={hsva:r,color:t},l(r)}}),[t,e]),(0,o.useEffect)((()=>{let t;((e,t)=>{if(e===t)return!0;for(const r in e)if(e[r]!==t[r])return!1;return!0})(n,c.current.hsva)||e.equal(t=e.fromHsva(n),c.current.color)||(c.current={hsva:n,color:t},a(t))}),[n,e,a]);const s=(0,o.useCallback)((e=>{l((t=>Object.assign({},t,e)))}),[]);return[n,s]}const R="undefined"!=typeof window?o.useLayoutEffect:o.useEffect;const H=new Map,S=({className:e,hsva:t,onChange:r})=>{const a={backgroundImage:`linear-gradient(90deg, ${N(Object.assign({},t,{a:0}))}, ${N(Object.assign({},t,{a:1}))})`},n=w(["react-colorful__alpha",e]);return o.createElement("div",{className:n},o.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),o.createElement(E,{onMove:e=>{r({a:e.left})},onKey:e=>{r({a:m(t.a+e.left)})},"aria-label":"Alpha","aria-valuetext":`${y(100*t.a)}%`},o.createElement(x,{className:"react-colorful__alpha-pointer",left:t.a,color:N(t)})))},z=e=>{let{className:t,colorModel:a,color:n=a.defaultColor,onChange:l}=e,c=d(e,["className","colorModel","color","onChange"]);const s=(0,o.useRef)(null);var u;u=s,R((()=>{const e=u.current?u.current.ownerDocument:document;if(void 0!==e&&!H.has(e)){const t=e.createElement("style");t.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',H.set(e,t);const o=r.nc;o&&t.setAttribute("nonce",o),e.head.appendChild(t)}}),[]);const[i,f]=j(a,n,l),g=w(["react-colorful",t]);return o.createElement("div",h({},c,{ref:s,className:g}),o.createElement(O,{hsva:i,onChange:f}),o.createElement($,{hue:i.h,onChange:f}),o.createElement(S,{hsva:i,onChange:f,className:"react-colorful__last-control"}))},A={defaultColor:"rgba(0, 0, 0, 1)",toHsva:e=>{const t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?M({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}},fromHsva:e=>{const{r:t,g:r,b:o,a}=(({h:e,s:t,v:r,a:o})=>{e=e/360*6,t/=100,r/=100;const a=Math.floor(e),n=r*(1-t),l=r*(1-(e-a)*t),c=r*(1-(1-e+a)*t),s=a%6;return{r:y(255*[r,l,n,n,c,r][s]),g:y(255*[c,r,r,l,n,n][s]),b:y(255*[n,n,c,r,r,l][s]),a:y(o,2)}})(e);return`rgba(${t}, ${r}, ${o}, ${a})`},equal:(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,"")},D=e=>o.createElement(z,h({},e,{colorModel:A})),T=(0,u.n9)()({picker:{position:"relative"},swatches:{display:"flex",padding:12,flexWrap:"wrap"},swatch:{width:24,height:24,margin:4,border:"none",padding:0,cursor:"pointer",outline:"none"}});function K({anchorEl:e,onChange:t,onClose:r,color:a}){return o.createElement(n.Ay,{open:!!e,anchorEl:e,onClose:r},o.createElement(L,{color:a,onChange:t}))}function L({onChange:e,color:t}){const{classes:r}=T(),[n,u]=(0,f.useLocalStorage)("colorPickerPalette","set1"),h=i[n],d=Object.keys(i),[g,m]=(0,o.useState)(t),p=(0,a.M)(t).toRgbString(),v=(0,f.useDebounce)(p,1e3),b=t=>{m(t);try{e((0,a.M)(t).toRgbString())}catch(e){}};return o.createElement("div",{style:{display:"flex",padding:10}},o.createElement("div",{style:{width:200,margin:5}},o.createElement(D,{color:v,onChange:b})),o.createElement("div",{style:{width:200,margin:5}},o.createElement(l.A,{value:n,onChange:e=>{const t=e.target.value;u(t)}},d.map((e=>o.createElement(c.A,{value:e,key:e},e)))),o.createElement("div",{className:r.swatches},h.map(((e,t)=>o.createElement("button",{type:"button",key:`${e}-${t}`,className:r.swatch,style:{background:e},onClick:()=>{b(e)}})))),o.createElement(s.A,{helperText:"Manually set color (hex, rgb, or css color name)",value:g,onChange:e=>{b(e.target.value)}})))}const P=({color:e,onChange:t})=>{const[r,a]=(0,o.useState)(null),{classes:n}=T();return o.createElement("div",{className:n.picker},o.createElement("div",{className:n.swatch,style:{backgroundColor:e},onClick:e=>{a(e.currentTarget)}}),o.createElement(K,{anchorEl:r,onClose:()=>{a(null)},color:e,onChange:t}))}}}]);
+//# sourceMappingURL=6395.f6027b24.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6395.f6027b24.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6395.f6027b24.chunk.js","mappings":"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","sources":["../../../packages/core/ui/react-colorful.js","../../../packages/core/ui/ColorPicker.tsx"],"sourcesContent":["/* eslint-disable */\n// vendored (e.g. copied into our source tree) because the tooling picks up \"import\" statements that confuse jest, could confuse other consumers of our modules\n// copy of react-colorful/dist/index.esmodule.js\n\nimport e, {\n  useRef as r,\n  useMemo as t,\n  useEffect as o,\n  useState as a,\n  useCallback as l,\n  useLayoutEffect as n,\n} from 'react'\nfunction s() {\n  return (s =\n    Object.assign ||\n    function (e) {\n      for (var r = 1; r < arguments.length; r++) {\n        var t = arguments[r]\n        for (var o in t)\n          Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o])\n      }\n      return e\n    }).apply(this, arguments)\n}\nfunction c(e, r) {\n  if (null == e) return {}\n  var t,\n    o,\n    a = {},\n    l = Object.keys(e)\n  for (o = 0; o < l.length; o++) r.indexOf((t = l[o])) >= 0 || (a[t] = e[t])\n  return a\n}\nfunction u(e) {\n  const t = r(e),\n    o = r(e => {\n      t.current && t.current(e)\n    })\n  return (t.current = e), o.current\n}\nconst i = (e, r = 0, t = 1) => (e > t ? t : e < r ? r : e),\n  d = e => 'touches' in e,\n  f = e => (e && e.ownerDocument.defaultView) || self,\n  h = (e, r, t) => {\n    const o = e.getBoundingClientRect(),\n      a = d(r)\n        ? ((e, r) => {\n            for (let t = 0; t < e.length; t++)\n              if (e[t].identifier === r) return e[t]\n            return e[0]\n          })(r.touches, t)\n        : r\n    return {\n      left: i((a.pageX - (o.left + f(e).pageXOffset)) / o.width),\n      top: i((a.pageY - (o.top + f(e).pageYOffset)) / o.height),\n    }\n  },\n  v = e => {\n    !d(e) && e.preventDefault()\n  },\n  m = e.memo(a => {\n    let { onMove: l, onKey: n } = a,\n      i = c(a, ['onMove', 'onKey'])\n    const m = r(null),\n      g = u(l),\n      p = u(n),\n      b = r(null),\n      _ = r(!1),\n      [x, C, E] = t(() => {\n        const e = e => {\n            v(e),\n              (d(e) ? e.touches.length > 0 : e.buttons > 0) && m.current\n                ? g(h(m.current, e, b.current))\n                : t(!1)\n          },\n          r = () => t(!1)\n        function t(t) {\n          const o = _.current,\n            a = f(m.current),\n            l = t ? a.addEventListener : a.removeEventListener\n          l(o ? 'touchmove' : 'mousemove', e), l(o ? 'touchend' : 'mouseup', r)\n        }\n        return [\n          ({ nativeEvent: e }) => {\n            const r = m.current\n            if (r && (v(e), !((e, r) => r && !d(e))(e, _.current) && r)) {\n              if (d(e)) {\n                _.current = !0\n                const r = e.changedTouches || []\n                r.length && (b.current = r[0].identifier)\n              }\n              r.focus(), g(h(r, e, b.current)), t(!0)\n            }\n          },\n          e => {\n            const r = e.which || e.keyCode\n            r < 37 ||\n              r > 40 ||\n              (e.preventDefault(),\n              p({\n                left: 39 === r ? 0.05 : 37 === r ? -0.05 : 0,\n                top: 40 === r ? 0.05 : 38 === r ? -0.05 : 0,\n              }))\n          },\n          t,\n        ]\n      }, [p, g])\n    return (\n      o(() => E, [E]),\n      e.createElement(\n        'div',\n        s({}, i, {\n          onTouchStart: x,\n          onMouseDown: x,\n          className: 'react-colorful__interactive',\n          ref: m,\n          onKeyDown: C,\n          tabIndex: 0,\n          role: 'slider',\n        }),\n      )\n    )\n  }),\n  g = e => e.filter(Boolean).join(' '),\n  p = ({ className: r, color: t, left: o, top: a = 0.5 }) => {\n    const l = g(['react-colorful__pointer', r])\n    return e.createElement(\n      'div',\n      { className: l, style: { top: 100 * a + '%', left: 100 * o + '%' } },\n      e.createElement('div', {\n        className: 'react-colorful__pointer-fill',\n        style: { backgroundColor: t },\n      }),\n    )\n  },\n  b = (e, r = 0, t = Math.pow(10, r)) => Math.round(t * e) / t,\n  _ = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) },\n  x = e => (\n    '#' === e[0] && (e = e.substr(1)),\n    e.length < 6\n      ? {\n          r: parseInt(e[0] + e[0], 16),\n          g: parseInt(e[1] + e[1], 16),\n          b: parseInt(e[2] + e[2], 16),\n          a: 1,\n        }\n      : {\n          r: parseInt(e.substr(0, 2), 16),\n          g: parseInt(e.substr(2, 2), 16),\n          b: parseInt(e.substr(4, 2), 16),\n          a: 1,\n        }\n  ),\n  C = (e, r = 'deg') => Number(e) * (_[r] || 1),\n  E = e => {\n    const r =\n      /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(\n        e,\n      )\n    return r\n      ? M({\n          h: C(r[1], r[2]),\n          s: Number(r[3]),\n          l: Number(r[4]),\n          a: void 0 === r[5] ? 1 : Number(r[5]) / (r[6] ? 100 : 1),\n        })\n      : { h: 0, s: 0, v: 0, a: 1 }\n  },\n  H = E,\n  M = ({ h: e, s: r, l: t, a: o }) => ({\n    h: e,\n    s: (r *= (t < 50 ? t : 100 - t) / 100) > 0 ? ((2 * r) / (t + r)) * 100 : 0,\n    v: t + r,\n    a: o,\n  }),\n  N = ({ h: e, s: r, v: t, a: o }) => {\n    const a = ((200 - r) * t) / 100\n    return {\n      h: b(e),\n      s: b(\n        a > 0 && a < 200 ? ((r * t) / 100 / (a <= 100 ? a : 200 - a)) * 100 : 0,\n      ),\n      l: b(a / 2),\n      a: b(o, 2),\n    }\n  },\n  w = e => {\n    const { h: r, s: t, l: o } = N(e)\n    return `hsl(${r}, ${t}%, ${o}%)`\n  },\n  $ = e => {\n    const { h: r, s: t, l: o, a } = N(e)\n    return `hsla(${r}, ${t}%, ${o}%, ${a})`\n  },\n  y = ({ h: e, s: r, v: t, a: o }) => {\n    ;(e = (e / 360) * 6), (r /= 100), (t /= 100)\n    const a = Math.floor(e),\n      l = t * (1 - r),\n      n = t * (1 - (e - a) * r),\n      s = t * (1 - (1 - e + a) * r),\n      c = a % 6\n    return {\n      r: b(255 * [t, n, l, l, s, t][c]),\n      g: b(255 * [s, t, t, n, l, l][c]),\n      b: b(255 * [l, l, s, t, t, n][c]),\n      a: b(o, 2),\n    }\n  },\n  q = e => {\n    const r =\n      /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(\n        e,\n      )\n    return r\n      ? B({\n          h: C(r[1], r[2]),\n          s: Number(r[3]),\n          v: Number(r[4]),\n          a: void 0 === r[5] ? 1 : Number(r[5]) / (r[6] ? 100 : 1),\n        })\n      : { h: 0, s: 0, v: 0, a: 1 }\n  },\n  k = q,\n  O = e => {\n    const r =\n      /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(\n        e,\n      )\n    return r\n      ? z({\n          r: Number(r[1]) / (r[2] ? 100 / 255 : 1),\n          g: Number(r[3]) / (r[4] ? 100 / 255 : 1),\n          b: Number(r[5]) / (r[6] ? 100 / 255 : 1),\n          a: void 0 === r[7] ? 1 : Number(r[7]) / (r[8] ? 100 : 1),\n        })\n      : { h: 0, s: 0, v: 0, a: 1 }\n  },\n  I = O,\n  j = e => {\n    const r = e.toString(16)\n    return r.length < 2 ? '0' + r : r\n  },\n  z = ({ r: e, g: r, b: t, a: o }) => {\n    const a = Math.max(e, r, t),\n      l = a - Math.min(e, r, t),\n      n = l\n        ? a === e\n          ? (r - t) / l\n          : a === r\n            ? 2 + (t - e) / l\n            : 4 + (e - r) / l\n        : 0\n    return {\n      h: b(60 * (n < 0 ? n + 6 : n)),\n      s: b(a ? (l / a) * 100 : 0),\n      v: b((a / 255) * 100),\n      a: o,\n    }\n  },\n  B = e => ({ h: b(e.h), s: b(e.s), v: b(e.v), a: b(e.a, 2) }),\n  D = e.memo(({ className: r, hue: t, onChange: o }) => {\n    const a = g(['react-colorful__hue', r])\n    return e.createElement(\n      'div',\n      { className: a },\n      e.createElement(\n        m,\n        {\n          onMove: e => {\n            o({ h: 360 * e.left })\n          },\n          onKey: e => {\n            o({ h: i(t + 360 * e.left, 0, 360) })\n          },\n          'aria-label': 'Hue',\n          'aria-valuetext': b(t),\n        },\n        e.createElement(p, {\n          className: 'react-colorful__hue-pointer',\n          left: t / 360,\n          color: w({ h: t, s: 100, v: 100, a: 1 }),\n        }),\n      ),\n    )\n  }),\n  K = e.memo(({ hsva: r, onChange: t }) => {\n    const o = { backgroundColor: w({ h: r.h, s: 100, v: 100, a: 1 }) }\n    return e.createElement(\n      'div',\n      { className: 'react-colorful__saturation', style: o },\n      e.createElement(\n        m,\n        {\n          onMove: e => {\n            t({ s: 100 * e.left, v: 100 - 100 * e.top })\n          },\n          onKey: e => {\n            t({\n              s: i(r.s + 100 * e.left, 0, 100),\n              v: i(r.v - 100 * e.top, 0, 100),\n            })\n          },\n          'aria-label': 'Color',\n          'aria-valuetext': `Saturation ${b(r.s)}%, Brightness ${b(r.v)}%`,\n        },\n        e.createElement(p, {\n          className: 'react-colorful__saturation-pointer',\n          top: 1 - r.v / 100,\n          left: r.s / 100,\n          color: w(r),\n        }),\n      ),\n    )\n  }),\n  L = (e, r) => {\n    if (e === r) return !0\n    for (const t in e) if (e[t] !== r[t]) return !1\n    return !0\n  },\n  A = (e, r) => e.replace(/\\s/g, '') === r.replace(/\\s/g, '')\nfunction S(e, t, n) {\n  const s = u(n),\n    [c, i] = a(() => e.toHsva(t)),\n    d = r({ color: t, hsva: c })\n  o(() => {\n    if (!e.equal(t, d.current.color)) {\n      const r = e.toHsva(t)\n      ;(d.current = { hsva: r, color: t }), i(r)\n    }\n  }, [t, e]),\n    o(() => {\n      let r\n      L(c, d.current.hsva) ||\n        e.equal((r = e.fromHsva(c)), d.current.color) ||\n        ((d.current = { hsva: c, color: r }), s(r))\n    }, [c, e, s])\n  const f = l(e => {\n    i(r => Object.assign({}, r, e))\n  }, [])\n  return [c, f]\n}\nconst T = 'undefined' != typeof window ? n : o\nlet F\nconst P = () =>\n    F || ('undefined' != typeof __webpack_nonce__ ? __webpack_nonce__ : void 0),\n  X = e => {\n    F = e\n  },\n  Y = new Map(),\n  R = e => {\n    T(() => {\n      const r = e.current ? e.current.ownerDocument : document\n      if (void 0 !== r && !Y.has(r)) {\n        const e = r.createElement('style')\n        ;(e.innerHTML =\n          '.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:\"\";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\'data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill-opacity=\".05\"><path d=\"M8 0h8v8H8zM0 8h8v8H0z\"/></svg>\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}'),\n          Y.set(r, e)\n        const t = P()\n        t && e.setAttribute('nonce', t), r.head.appendChild(e)\n      }\n    }, [])\n  },\n  V = t => {\n    let {\n        className: o,\n        colorModel: a,\n        color: l = a.defaultColor,\n        onChange: n,\n      } = t,\n      u = c(t, ['className', 'colorModel', 'color', 'onChange'])\n    const i = r(null)\n    R(i)\n    const [d, f] = S(a, l, n),\n      h = g(['react-colorful', o])\n    return e.createElement(\n      'div',\n      s({}, u, { ref: i, className: h }),\n      e.createElement(K, { hsva: d, onChange: f }),\n      e.createElement(D, {\n        hue: d.h,\n        onChange: f,\n        className: 'react-colorful__last-control',\n      }),\n    )\n  },\n  G = {\n    defaultColor: '000',\n    toHsva: e => z(x(e)),\n    fromHsva: e => (({ r: e, g: r, b: t }) => '#' + j(e) + j(r) + j(t))(y(e)),\n    equal: (e, r) => e.toLowerCase() === r.toLowerCase() || L(x(e), x(r)),\n  },\n  J = r => e.createElement(V, s({}, r, { colorModel: G })),\n  Q = ({ className: r, hsva: t, onChange: o }) => {\n    const a = {\n        backgroundImage: `linear-gradient(90deg, ${$(\n          Object.assign({}, t, { a: 0 }),\n        )}, ${$(Object.assign({}, t, { a: 1 }))})`,\n      },\n      l = g(['react-colorful__alpha', r])\n    return e.createElement(\n      'div',\n      { className: l },\n      e.createElement('div', {\n        className: 'react-colorful__alpha-gradient',\n        style: a,\n      }),\n      e.createElement(\n        m,\n        {\n          onMove: e => {\n            o({ a: e.left })\n          },\n          onKey: e => {\n            o({ a: i(t.a + e.left) })\n          },\n          'aria-label': 'Alpha',\n          'aria-valuetext': `${b(100 * t.a)}%`,\n        },\n        e.createElement(p, {\n          className: 'react-colorful__alpha-pointer',\n          left: t.a,\n          color: $(t),\n        }),\n      ),\n    )\n  },\n  U = t => {\n    let {\n        className: o,\n        colorModel: a,\n        color: l = a.defaultColor,\n        onChange: n,\n      } = t,\n      u = c(t, ['className', 'colorModel', 'color', 'onChange'])\n    const i = r(null)\n    R(i)\n    const [d, f] = S(a, l, n),\n      h = g(['react-colorful', o])\n    return e.createElement(\n      'div',\n      s({}, u, { ref: i, className: h }),\n      e.createElement(K, { hsva: d, onChange: f }),\n      e.createElement(D, { hue: d.h, onChange: f }),\n      e.createElement(Q, {\n        hsva: d,\n        onChange: f,\n        className: 'react-colorful__last-control',\n      }),\n    )\n  },\n  W = {\n    defaultColor: { h: 0, s: 0, l: 0, a: 1 },\n    toHsva: M,\n    fromHsva: N,\n    equal: L,\n  },\n  Z = r => e.createElement(U, s({}, r, { colorModel: W })),\n  ee = { defaultColor: 'hsla(0, 0%, 0%, 1)', toHsva: E, fromHsva: $, equal: A },\n  re = r => e.createElement(U, s({}, r, { colorModel: ee })),\n  te = {\n    defaultColor: { h: 0, s: 0, l: 0 },\n    toHsva: ({ h: e, s: r, l: t }) => M({ h: e, s: r, l: t, a: 1 }),\n    fromHsva: e => (({ h: e, s: r, l: t }) => ({ h: e, s: r, l: t }))(N(e)),\n    equal: L,\n  },\n  oe = r => e.createElement(V, s({}, r, { colorModel: te })),\n  ae = { defaultColor: 'hsl(0, 0%, 0%)', toHsva: H, fromHsva: w, equal: A },\n  le = r => e.createElement(V, s({}, r, { colorModel: ae })),\n  ne = {\n    defaultColor: { h: 0, s: 0, v: 0, a: 1 },\n    toHsva: e => e,\n    fromHsva: B,\n    equal: L,\n  },\n  se = r => e.createElement(U, s({}, r, { colorModel: ne })),\n  ce = {\n    defaultColor: 'hsva(0, 0%, 0%, 1)',\n    toHsva: q,\n    fromHsva: e => {\n      const { h: r, s: t, v: o, a } = B(e)\n      return `hsva(${r}, ${t}%, ${o}%, ${a})`\n    },\n    equal: A,\n  },\n  ue = r => e.createElement(U, s({}, r, { colorModel: ce })),\n  ie = {\n    defaultColor: { h: 0, s: 0, v: 0 },\n    toHsva: ({ h: e, s: r, v: t }) => ({ h: e, s: r, v: t, a: 1 }),\n    fromHsva: e => {\n      const { h: r, s: t, v: o } = B(e)\n      return { h: r, s: t, v: o }\n    },\n    equal: L,\n  },\n  de = r => e.createElement(V, s({}, r, { colorModel: ie })),\n  fe = {\n    defaultColor: 'hsv(0, 0%, 0%)',\n    toHsva: k,\n    fromHsva: e => {\n      const { h: r, s: t, v: o } = B(e)\n      return `hsv(${r}, ${t}%, ${o}%)`\n    },\n    equal: A,\n  },\n  he = r => e.createElement(V, s({}, r, { colorModel: fe })),\n  ve = {\n    defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n    toHsva: z,\n    fromHsva: y,\n    equal: L,\n  },\n  me = r => e.createElement(U, s({}, r, { colorModel: ve })),\n  ge = {\n    defaultColor: 'rgba(0, 0, 0, 1)',\n    toHsva: O,\n    fromHsva: e => {\n      const { r, g: t, b: o, a } = y(e)\n      return `rgba(${r}, ${t}, ${o}, ${a})`\n    },\n    equal: A,\n  },\n  pe = r => e.createElement(U, s({}, r, { colorModel: ge })),\n  be = {\n    defaultColor: { r: 0, g: 0, b: 0 },\n    toHsva: ({ r: e, g: r, b: t }) => z({ r: e, g: r, b: t, a: 1 }),\n    fromHsva: e => (({ r: e, g: r, b: t }) => ({ r: e, g: r, b: t }))(y(e)),\n    equal: L,\n  },\n  _e = r => e.createElement(V, s({}, r, { colorModel: be })),\n  xe = {\n    defaultColor: 'rgb(0, 0, 0)',\n    toHsva: I,\n    fromHsva: e => {\n      const { r, g: t, b: o } = y(e)\n      return `rgb(${r}, ${t}, ${o})`\n    },\n    equal: A,\n  },\n  Ce = r => e.createElement(V, s({}, r, { colorModel: xe })),\n  Ee = /^#?([0-9A-F]{3,8})$/i,\n  He = r => {\n    const {\n        color: t = '',\n        onChange: n,\n        onBlur: i,\n        escape: d,\n        validate: f,\n        format: h,\n        process: v,\n      } = r,\n      m = c(r, [\n        'color',\n        'onChange',\n        'onBlur',\n        'escape',\n        'validate',\n        'format',\n        'process',\n      ]),\n      [g, p] = a(() => d(t)),\n      b = u(n),\n      _ = u(i),\n      x = l(\n        e => {\n          const r = d(e.target.value)\n          p(r), f(r) && b(v ? v(r) : r)\n        },\n        [d, v, f, b],\n      ),\n      C = l(\n        e => {\n          f(e.target.value) || p(d(t)), _(e)\n        },\n        [t, d, f, _],\n      )\n    return (\n      o(() => {\n        p(d(t))\n      }, [t, d]),\n      e.createElement(\n        'input',\n        s({}, m, {\n          value: h ? h(g) : g,\n          spellCheck: 'false',\n          onChange: x,\n          onBlur: C,\n        }),\n      )\n    )\n  },\n  Me = e => '#' + e,\n  Ne = r => {\n    const { prefixed: t, alpha: o } = r,\n      a = c(r, ['prefixed', 'alpha']),\n      n = l(e => e.replace(/([^0-9A-F]+)/gi, '').substr(0, o ? 8 : 6), [o]),\n      u = l(\n        e =>\n          ((e, r) => {\n            const t = Ee.exec(e),\n              o = t ? t[1].length : 0\n            return 3 === o || 6 === o || (!!r && 4 === o) || (!!r && 8 === o)\n          })(e, o),\n        [o],\n      )\n    return e.createElement(\n      He,\n      s({}, a, {\n        escape: n,\n        format: t ? Me : void 0,\n        process: Me,\n        validate: u,\n      }),\n    )\n  }\nexport {\n  Ne as HexColorInput,\n  J as HexColorPicker,\n  oe as HslColorPicker,\n  le as HslStringColorPicker,\n  Z as HslaColorPicker,\n  re as HslaStringColorPicker,\n  de as HsvColorPicker,\n  he as HsvStringColorPicker,\n  se as HsvaColorPicker,\n  ue as HsvaStringColorPicker,\n  _e as RgbColorPicker,\n  Ce as RgbStringColorPicker,\n  me as RgbaColorPicker,\n  pe as RgbaStringColorPicker,\n  X as setNonce,\n}\n","import React, { useState } from 'react'\nimport { colord } from '@jbrowse/core/util/colord'\nimport { Popover, Select, MenuItem, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport * as paletteColors from './colors'\nimport { useLocalStorage, useDebounce } from '../util'\n\n// we are using a vendored copy of react-colorful because the default uses\n// pure-ESM which is difficult to make pass with jest e.g.\n// https://stackoverflow.com/questions/58613492/how-to-resolve-cannot-use-import-statement-outside-a-module-in-jest\nimport { RgbaStringColorPicker } from './react-colorful'\n\nconst useStyles = makeStyles()({\n  picker: { position: 'relative' },\n\n  swatches: {\n    display: 'flex',\n    padding: 12,\n    flexWrap: 'wrap',\n  },\n  swatch: {\n    width: 24,\n    height: 24,\n    margin: 4,\n    border: 'none',\n    padding: 0,\n    cursor: 'pointer',\n    outline: 'none',\n  },\n})\n\ntype PaletteType = keyof typeof paletteColors\n\nexport const PopoverPicker = ({\n  color,\n  onChange,\n}: {\n  color: string\n  onChange: (color: string) => void\n}) => {\n  const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null)\n  const { classes } = useStyles()\n\n  return (\n    <div className={classes.picker}>\n      <div\n        className={classes.swatch}\n        style={{ backgroundColor: color }}\n        onClick={event => {\n          setAnchorEl(event.currentTarget)\n        }}\n      />\n      <ColorPopover\n        anchorEl={anchorEl}\n        onClose={() => {\n          setAnchorEl(null)\n        }}\n        color={color}\n        onChange={onChange}\n      />\n    </div>\n  )\n}\n\nexport function ColorPopover({\n  anchorEl,\n  onChange,\n  onClose,\n  color,\n}: {\n  color: string\n  anchorEl: HTMLElement | null\n  onChange: (val: string) => void\n  onClose: () => void\n}) {\n  return (\n    <Popover open={!!anchorEl} anchorEl={anchorEl} onClose={onClose}>\n      <ColorPicker color={color} onChange={onChange} />\n    </Popover>\n  )\n}\n\nexport function ColorPicker({\n  onChange,\n  color,\n}: {\n  color: string\n  onChange: (val: string) => void\n}) {\n  const { classes } = useStyles()\n  const [val, setVal] = useLocalStorage('colorPickerPalette', 'set1')\n  const presetColors = paletteColors[val as keyof typeof paletteColors]\n  const palettes = Object.keys(paletteColors)\n  const [text, setText] = useState(color)\n  const rgb = colord(color).toRgbString()\n  const rgbDebounced = useDebounce(rgb, 1000)\n\n  const handleChange = (val: string) => {\n    setText(val)\n    try {\n      onChange(colord(val).toRgbString())\n    } catch (e) {}\n  }\n  return (\n    <div style={{ display: 'flex', padding: 10 }}>\n      <div style={{ width: 200, margin: 5 }}>\n        <RgbaStringColorPicker color={rgbDebounced} onChange={handleChange} />\n      </div>\n      <div style={{ width: 200, margin: 5 }}>\n        <Select\n          value={val}\n          onChange={event => {\n            const pal = event.target.value as PaletteType\n            setVal(pal)\n          }}\n        >\n          {palettes.map(p => (\n            <MenuItem value={p} key={p}>\n              {p}\n            </MenuItem>\n          ))}\n        </Select>\n\n        <div className={classes.swatches}>\n          {presetColors.map((presetColor, idx) => (\n            <button\n              type=\"button\"\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              key={`${presetColor}-${idx}`}\n              className={classes.swatch}\n              style={{ background: presetColor }}\n              onClick={() => {\n                handleChange(presetColor)\n              }}\n            />\n          ))}\n        </div>\n        <TextField\n          helperText={'Manually set color (hex, rgb, or css color name)'}\n          value={text}\n          onChange={event => {\n            handleChange(event.target.value)\n          }}\n        />\n      </div>\n    </div>\n  )\n}\n\nexport default PopoverPicker\n"],"names":["s","Object","assign","e","r","arguments","length","t","o","prototype","hasOwnProperty","call","apply","this","c","a","l","keys","indexOf","u","current","i","d","f","ownerDocument","defaultView","self","h","getBoundingClientRect","identifier","touches","left","pageX","pageXOffset","width","top","pageY","pageYOffset","height","v","preventDefault","m","onMove","onKey","n","g","p","b","_","x","C","E","buttons","addEventListener","removeEventListener","nativeEvent","changedTouches","focus","which","keyCode","onTouchStart","onMouseDown","className","ref","onKeyDown","tabIndex","role","filter","Boolean","join","color","style","backgroundColor","Math","pow","round","N","PI","w","$","z","max","min","D","hue","onChange","K","hsva","S","toHsva","equal","L","fromHsva","T","window","Y","Map","Q","backgroundImage","U","colorModel","defaultColor","document","has","createElement","innerHTML","set","__webpack_nonce__","setAttribute","head","appendChild","ge","exec","Number","y","floor","A","replace","pe","useStyles","makeStyles","picker","position","swatches","display","padding","flexWrap","swatch","margin","border","cursor","outline","ColorPopover","anchorEl","onClose","React","Popover","open","ColorPicker","classes","val","setVal","useLocalStorage","presetColors","paletteColors","palettes","text","setText","useState","rgb","colord","toRgbString","rgbDebounced","useDebounce","handleChange","RgbaStringColorPicker","Select","value","event","pal","target","map","MenuItem","key","presetColor","idx","type","background","onClick","TextField","helperText","PopoverPicker","setAnchorEl","currentTarget"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6397.8fc250af.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6397],{6397:(s,e,a)=>{a.r(e),a.d(e,{default:()=>b.Ay,getGridUtilityClass:()=>l.n,gridClasses:()=>l.A});var b=a(67314),l=a(16745)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6423.1e8da08b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6423],{86423:(e,s,a)=>{a.r(s),a.d(s,{FormLabelRoot:()=>b.d,default:()=>b.A,formLabelClasses:()=>l.A,getFormLabelUtilityClasses:()=>l.Z});var b=a(22679),l=a(82275)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6435.b4633aa1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6435,5156],{29038:function(r,a,e){var t,n,s;r.exports=(t=e(17753),s=(n=t).lib.WordArray,n.enc.Base64={stringify:function(r){var a=r.words,e=r.sigBytes,t=this._map;r.clamp();for(var n=[],s=0;s<e;s+=3)for(var h=(a[s>>>2]>>>24-s%4*8&255)<<16|(a[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|a[s+2>>>2]>>>24-(s+2)%4*8&255,i=0;i<4&&s+.75*i<e;i++)n.push(t.charAt(h>>>6*(3-i)&63));var o=t.charAt(64);if(o)for(;n.length%4;)n.push(o);return n.join("")},parse:function(r){var a=r.length,e=this._map,t=this._reverseMap;if(!t){t=this._reverseMap=[];for(var n=0;n<e.length;n++)t[e.charCodeAt(n)]=n}var h=e.charAt(64);if(h){var i=r.indexOf(h);-1!==i&&(a=i)}return function(r,a,e){for(var t=[],n=0,h=0;h<a;h++)if(h%4){var i=e[r.charCodeAt(h-1)]<<h%4*2|e[r.charCodeAt(h)]>>>6-h%4*2;t[n>>>2]|=i<<24-n%4*8,n++}return s.create(t,n)}(r,a,t)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},t.enc.Base64)},2775:()=>{}}]);
+//# sourceMappingURL=6435.b4633aa1.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6435.b4633aa1.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6435.b4633aa1.chunk.js","mappings":"uHAAE,IAagBA,EAITC,EAEAC,EAhBPC,EAAOC,SAUSJ,EAVmB,EAAQ,OAgBpCE,GAFAD,EAAID,GACMK,IACQH,UACVD,EAAEK,IAKKC,OAAS,CAcxBC,UAAW,SAAUC,GAEjB,IAAIC,EAAQD,EAAUC,MAClBC,EAAWF,EAAUE,SACrBC,EAAMC,KAAKC,KAGfL,EAAUM,QAIV,IADA,IAAIC,EAAc,GACTC,EAAI,EAAGA,EAAIN,EAAUM,GAAK,EAO/B,IANA,IAIIC,GAJSR,EAAMO,IAAM,KAAc,GAAMA,EAAI,EAAK,EAAY,MAI1C,IAHXP,EAAOO,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,MAG1B,EAF3BP,EAAOO,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,IAIzDE,EAAI,EAAIA,EAAI,GAAOF,EAAQ,IAAJE,EAAWR,EAAWQ,IAClDH,EAAYI,KAAKR,EAAIS,OAAQH,IAAa,GAAK,EAAIC,GAAO,KAKlE,IAAIG,EAAcV,EAAIS,OAAO,IAC7B,GAAIC,EACA,KAAON,EAAYO,OAAS,GACxBP,EAAYI,KAAKE,GAIzB,OAAON,EAAYQ,KAAK,GAC5B,EAeAC,MAAO,SAAUC,GAEb,IAAIC,EAAkBD,EAAUH,OAC5BX,EAAMC,KAAKC,KACXc,EAAaf,KAAKgB,YAEtB,IAAKD,EAAY,CACTA,EAAaf,KAAKgB,YAAc,GAChC,IAAK,IAAIV,EAAI,EAAGA,EAAIP,EAAIW,OAAQJ,IAC5BS,EAAWhB,EAAIkB,WAAWX,IAAMA,CAE5C,CAGA,IAAIG,EAAcV,EAAIS,OAAO,IAC7B,GAAIC,EAAa,CACb,IAAIS,EAAeL,EAAUM,QAAQV,IACf,IAAlBS,IACAJ,EAAkBI,EAE1B,CAGA,OAOR,SAAmBL,EAAWC,EAAiBC,GAG7C,IAFA,IAAIlB,EAAQ,GACRuB,EAAS,EACJhB,EAAI,EAAGA,EAAIU,EAAiBV,IACjC,GAAIA,EAAI,EAAG,CACP,IAEIiB,EAFQN,EAAWF,EAAUI,WAAWb,EAAI,KAASA,EAAI,EAAK,EACtDW,EAAWF,EAAUI,WAAWb,MAAS,EAAKA,EAAI,EAAK,EAEnEP,EAAMuB,IAAW,IAAMC,GAAiB,GAAMD,EAAS,EAAK,EAC5DA,GACJ,CAEJ,OAAO/B,EAAUiC,OAAOzB,EAAOuB,EACjC,CApBeG,CAAUV,EAAWC,EAAiBC,EAEjD,EAEAd,KAAM,qEAoBPd,EAASM,IAAIC,O","sources":["../../../node_modules/crypto-js/enc-base64.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));"],"names":["CryptoJS","C","WordArray","module","exports","lib","enc","Base64","stringify","wordArray","words","sigBytes","map","this","_map","clamp","base64Chars","i","triplet","j","push","charAt","paddingChar","length","join","parse","base64Str","base64StrLength","reverseMap","_reverseMap","charCodeAt","paddingIndex","indexOf","nBytes","bitsCombined","create","parseLoop"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6499.aac79904.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6499],{58701:(e,t,o)=>{o.d(t,{A:()=>s});var a=o(74893),r=o(69500);const s=(0,a.A)((0,r.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning")},1773:(e,t,o)=>{o.d(t,{A:()=>u});var a=o(7552),r=o(93878),s=o(70799),n=o(51148),i=o(4785),d=o(943),l=o(50885),c=o(69500);const p=(0,n.Ay)(d.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),u=a.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCard"}),{className:a,raised:n=!1,...d}=o,u={...o,raised:n},m=(e=>{const{classes:t}=e;return(0,s.A)({root:["root"]},l.T,t)})(u);return(0,c.jsx)(p,{className:(0,r.A)(m.root,a),elevation:n?8:void 0,ref:t,ownerState:u,...d})}))},50885:(e,t,o)=>{o.d(t,{A:()=>n,T:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiCard",e)}const n=(0,a.A)("MuiCard",["root"])},38815:(e,t,o)=>{o.d(t,{A:()=>m});var a=o(7552),r=o(93878),s=o(70799),n=o(51148),i=o(4785),d=o(61547),l=o(69500);const c=(0,n.Ay)("div",{name:"MuiCardMedia",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e,{isMediaComponent:a,isImageComponent:r}=o;return[t.root,a&&t.media,r&&t.img]}})({display:"block",backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center",variants:[{props:{isMediaComponent:!0},style:{width:"100%"}},{props:{isImageComponent:!0},style:{objectFit:"cover"}}]}),p=["video","audio","picture","iframe","img"],u=["picture","img"],m=a.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCardMedia"}),{children:a,className:n,component:m="div",image:g,src:v,style:b,...A}=o,h=p.includes(m),f=!h&&g?{backgroundImage:`url("${g}")`,...b}:b,x={...o,component:m,isMediaComponent:h,isImageComponent:u.includes(m)},y=(e=>{const{classes:t,isMediaComponent:o,isImageComponent:a}=e,r={root:["root",o&&"media",a&&"img"]};return(0,s.A)(r,d.R,t)})(x);return(0,l.jsx)(c,{className:(0,r.A)(y.root,n),as:m,role:!h&&g?"img":void 0,ref:t,style:f,ownerState:x,src:h?g||v:void 0,...A,children:a})}))},61547:(e,t,o)=>{o.d(t,{A:()=>n,R:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiCardMedia",e)}const n=(0,a.A)("MuiCardMedia",["root","media","img"])},75653:(e,t,o)=>{o.d(t,{A:()=>f});var a=o(7552),r=o(93878),s=o(85693),n=o(70799),i=o(33283),d=o(82081),l=o(24959),c=o(72861),p=o(69500);const u=(0,c.A)(),m=(0,l.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,i.A)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),g=e=>(0,d.A)({props:e,name:"MuiContainer",defaultTheme:u});var v=o(15622),b=o(51148),A=o(31049);const h=function(e={}){const{createStyledComponent:t=m,useThemeProps:o=g,componentName:d="MuiContainer"}=e,l=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,o)=>{const a=o,r=e.breakpoints.values[a];return 0!==r&&(t[e.breakpoints.up(a)]={maxWidth:`${r}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),c=a.forwardRef((function(e,t){const a=o(e),{className:c,component:u="div",disableGutters:m=!1,fixed:g=!1,maxWidth:v="lg",classes:b,...A}=a,h={...a,component:u,disableGutters:m,fixed:g,maxWidth:v},f=((e,t)=>{const{classes:o,fixed:a,disableGutters:r,maxWidth:d}=e,l={root:["root",d&&`maxWidth${(0,i.A)(String(d))}`,a&&"fixed",r&&"disableGutters"]};return(0,n.A)(l,(e=>(0,s.Ay)(t,e)),o)})(h,d);return(0,p.jsx)(l,{as:u,ownerState:h,className:(0,r.A)(f.root,c),ref:t,...A})}));return c}({createStyledComponent:(0,b.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,v.A)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,A.A)({props:e,name:"MuiContainer"})}),f=h},45331:(e,t,o)=>{o.d(t,{Ay:()=>f});var a=o(7552),r=o(93878),s=o(70799),n=o(23879),i=o(51148),d=o(60129),l=o(4785),c=o(3755),p=o(51584),u=o(57406),m=o(74823),g=o(2451),v=o(77999),b=o(69500);const A=(0,i.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.dense&&t.dense,"flex-start"===o.alignItems&&t.alignItemsFlexStart,o.divider&&t.divider,!o.disableGutters&&t.gutters,!o.disablePadding&&t.padding,o.hasSecondaryAction&&t.secondaryAction]}})((0,d.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${g.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),h=(0,i.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),f=a.forwardRef((function(e,t){const o=(0,l.b)({props:e,name:"MuiListItem"}),{alignItems:i="center",children:d,className:g,component:f,components:x={},componentsProps:y={},ContainerComponent:S="li",ContainerProps:{className:C,...w}={},dense:I=!1,disableGutters:M=!1,disablePadding:R=!1,divider:k=!1,secondaryAction:G,slotProps:$={},slots:L={},...j}=o,N=a.useContext(u.A),P=a.useMemo((()=>({dense:I||N.dense||!1,alignItems:i,disableGutters:M})),[i,N.dense,I,M]),W=a.useRef(null),O=a.Children.toArray(d),T=O.length&&(0,c.A)(O[O.length-1],["ListItemSecondaryAction"]),B={...o,alignItems:i,dense:P.dense,disableGutters:M,disablePadding:R,divider:k,hasSecondaryAction:T},F=(e=>{const{alignItems:t,classes:o,dense:a,disableGutters:r,disablePadding:n,divider:i,hasSecondaryAction:d}=e,l={root:["root",a&&"dense",!r&&"gutters",!n&&"padding",i&&"divider","flex-start"===t&&"alignItemsFlexStart",d&&"secondaryAction"],container:["container"]};return(0,s.A)(l,m._,o)})(B),z=(0,p.A)(W,t),V=L.root||x.Root||A,_=$.root||y.root||{},D={className:(0,r.A)(F.root,_.className,g),...j};let X=f||"li";return T?(X=D.component||f?X:"div","li"===S&&("li"===X?X="div":"li"===D.component&&(D.component="div")),(0,b.jsx)(u.A.Provider,{value:P,children:(0,b.jsxs)(h,{as:S,className:(0,r.A)(F.container,C),ref:z,ownerState:B,...w,children:[(0,b.jsx)(V,{..._,...!(0,n.A)(V)&&{as:X,ownerState:{...B,..._.ownerState}},...D,children:O}),O.pop()]})})):(0,b.jsx)(u.A.Provider,{value:P,children:(0,b.jsxs)(V,{..._,as:X,ref:z,...!(0,n.A)(V)&&{ownerState:{...B,..._.ownerState}},...D,children:[O,G&&(0,b.jsx)(v.A,{children:G})]})})}))},74823:(e,t,o)=>{o.d(t,{A:()=>n,_:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItem",e)}const n=(0,a.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},70087:(e,t,o)=>{o.d(t,{A:()=>h});var a=o(7552),r=o(93878),s=o(70799),n=o(72639),i=o(51148),d=o(60129),l=o(4785),c=o(55270),p=o(48054),u=o(82910),m=o(51584),g=o(57406),v=o(2451),b=o(69500);const A=(0,i.Ay)(p.A,{shouldForwardProp:e=>(0,c.A)(e)||"classes"===e,name:"MuiListItemButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.dense&&t.dense,"flex-start"===o.alignItems&&t.alignItemsFlexStart,o.divider&&t.divider,!o.disableGutters&&t.gutters]}})((0,d.A)((({theme:e})=>({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${v.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,n.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${v.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,n.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${v.A.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,n.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,n.X4)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${v.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${v.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},variants:[{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.dense,style:{paddingTop:4,paddingBottom:4}}]})))),h=a.forwardRef((function(e,t){const o=(0,l.b)({props:e,name:"MuiListItemButton"}),{alignItems:n="center",autoFocus:i=!1,component:d="div",children:c,dense:p=!1,disableGutters:h=!1,divider:f=!1,focusVisibleClassName:x,selected:y=!1,className:S,...C}=o,w=a.useContext(g.A),I=a.useMemo((()=>({dense:p||w.dense||!1,alignItems:n,disableGutters:h})),[n,w.dense,p,h]),M=a.useRef(null);(0,u.A)((()=>{i&&M.current&&M.current.focus()}),[i]);const R={...o,alignItems:n,dense:I.dense,disableGutters:h,divider:f,selected:y},k=(e=>{const{alignItems:t,classes:o,dense:a,disabled:r,disableGutters:n,divider:i,selected:d}=e,l={root:["root",a&&"dense",!n&&"gutters",i&&"divider",r&&"disabled","flex-start"===t&&"alignItemsFlexStart",d&&"selected"]},c=(0,s.A)(l,v.Y,o);return{...o,...c}})(R),G=(0,m.A)(M,t);return(0,b.jsx)(g.A.Provider,{value:I,children:(0,b.jsx)(A,{ref:G,href:C.href||C.to,component:(C.href||C.to)&&"div"===d?"button":d,focusVisibleClassName:(0,r.A)(k.focusVisible,x),ownerState:R,className:(0,r.A)(k.root,S),...C,classes:k,children:c})})}))},2451:(e,t,o)=>{o.d(t,{A:()=>n,Y:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItemButton",e)}const n=(0,a.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,o)=>{o.d(t,{A:()=>m});var a=o(7552),r=o(93878),s=o(70799),n=o(51148),i=o(4785),d=o(57406),l=o(87739),c=o(69500);const p=(0,n.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),u=a.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:n,...u}=o,m=a.useContext(d.A),g={...o,disableGutters:m.disableGutters},v=(e=>{const{disableGutters:t,classes:o}=e,a={root:["root",t&&"disableGutters"]};return(0,s.A)(a,l.g,o)})(g);return(0,c.jsx)(p,{className:(0,r.A)(v.root,n),ownerState:g,ref:t,...u})}));u.muiName="ListItemSecondaryAction";const m=u},87739:(e,t,o)=>{o.d(t,{A:()=>n,g:()=>s});var a=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItemSecondaryAction",e)}const n=(0,a.A)("MuiListItemSecondaryAction",["root","disableGutters"])},24959:(e,t,o)=>{o.d(t,{A:()=>a});const a=(0,o(15543).Ay)()}}]);
+//# sourceMappingURL=6499.aac79904.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6499.aac79904.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6499.aac79904.chunk.js","mappings":"oKAIA,SAAe,QAA4B,SAAK,OAAQ,CACtDA,EAAG,8CACD,U,0HCMJ,MASMC,GAAW,QAAO,IAAO,CAC7BC,KAAM,UACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAH9B,CAId,CACDC,SAAU,WAyDZ,EAvD0B,cAAiB,SAAcC,EAASC,GAChE,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,aAEF,UACJS,EAAS,OACTC,GAAS,KACNC,GACDR,EACES,EAAa,IACdT,EACHO,UAEIG,EA9BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZP,KAAM,CAAC,SAEoB,IAAqBQ,EAAQ,EAuB1CC,CAAkBF,GAClC,OAAoB,SAAKb,EAAU,CACjCU,WAAW,OAAKI,EAAQR,KAAMI,GAC9BM,UAAWL,EAAS,OAAIM,EACxBR,IAAKA,EACLI,WAAYA,KACTD,GAEP,G,qEChDO,SAASM,EAAoBhB,GAClC,OAAO,QAAqB,UAAWA,EACzC,CACA,MACA,GADoB,OAAuB,UAAW,CAAC,Q,kHCMvD,MAWMiB,GAAgB,QAAO,MAAO,CAClClB,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJQ,GACET,GACE,iBACJgB,EAAgB,iBAChBC,GACER,EACJ,MAAO,CAACR,EAAOC,KAAMc,GAAoBf,EAAOiB,MAAOD,GAAoBhB,EAAOkB,IAAI,GAXpE,CAanB,CACDC,QAAS,QACTC,eAAgB,QAChBC,iBAAkB,YAClBC,mBAAoB,SACpBC,SAAU,CAAC,CACTxB,MAAO,CACLgB,kBAAkB,GAEpBS,MAAO,CACLC,MAAO,SAER,CACD1B,MAAO,CACLiB,kBAAkB,GAEpBQ,MAAO,CACLE,UAAW,aAIXC,EAAmB,CAAC,QAAS,QAAS,UAAW,SAAU,OAC3DC,EAAmB,CAAC,UAAW,OAuFrC,EAtF+B,cAAiB,SAAmBzB,EAASC,GAC1E,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,kBAEF,SACJiC,EAAQ,UACRxB,EAAS,UACTyB,EAAY,MAAK,MACjBC,EAAK,IACLC,EAAG,MACHR,KACGjB,GACDR,EACEgB,EAAmBY,EAAiBM,SAASH,GAC7CI,GAAiBnB,GAAoBgB,EAAQ,CACjDI,gBAAiB,QAAQJ,SACtBP,GACDA,EACEhB,EAAa,IACdT,EACH+B,YACAf,mBACAC,iBAAkBY,EAAiBK,SAASH,IAExCrB,EAxEkBD,KACxB,MAAM,QACJC,EAAO,iBACPM,EAAgB,iBAChBC,GACER,EACE4B,EAAQ,CACZnC,KAAM,CAAC,OAAQc,GAAoB,QAASC,GAAoB,QAElE,OAAO,OAAeoB,EAAO,IAA0B3B,EAAQ,EA+D/CC,CAAkBF,GAClC,OAAoB,SAAKM,EAAe,CACtCT,WAAW,OAAKI,EAAQR,KAAMI,GAC9BgC,GAAIP,EACJQ,MAAOvB,GAAoBgB,EAAQ,WAAQnB,EAC3CR,IAAKA,EACLoB,MAAOU,EACP1B,WAAYA,EACZwB,IAAKjB,EAAmBgB,GAASC,OAAMpB,KACpCL,EACHsB,SAAUA,GAEd,G,qEC7FO,SAASU,EAAyB1C,GACvC,OAAO,QAAqB,eAAgBA,EAC9C,CACA,MACA,GADyB,OAAuB,eAAgB,CAAC,OAAQ,QAAS,O,yICKlF,MAAM2C,GAAe,EAAAC,EAAA,KACfC,GAA+B,OAAa,MAAO,CACvD9C,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJQ,GACET,EACJ,MAAO,CAACC,EAAOC,KAAMD,EAAO,YAAW,EAAA2C,EAAA,GAAWC,OAAOpC,EAAWqC,cAAerC,EAAWsC,OAAS9C,EAAO8C,MAAOtC,EAAWuC,gBAAkB/C,EAAO+C,eAAe,IAGtKC,EAAuB7C,IAAW,EAAA8C,EAAA,GAAoB,CAC1DlD,MAAOI,EACPP,KAAM,eACN4C,iB,qCCjBF,MAAMU,EDkCS,SAAyBC,EAAU,CAAC,GACjD,MAAM,sBAEJC,EAAwBV,EAA4B,cACpDO,EAAgBD,EAAoB,cACpCK,EAAgB,gBACdF,EACEG,EAAgBF,GAAsB,EAC1CG,QACA/C,iBACI,CACJiB,MAAO,OACP+B,WAAY,OACZC,UAAW,aACXC,YAAa,WACRlD,EAAWuC,gBAAkB,CAChCY,YAAaJ,EAAMK,QAAQ,GAC3BC,aAAcN,EAAMK,QAAQ,GAE5B,CAACL,EAAMO,YAAYC,GAAG,OAAQ,CAC5BJ,YAAaJ,EAAMK,QAAQ,GAC3BC,aAAcN,EAAMK,QAAQ,SAG9B,EACFL,QACA/C,gBACIA,EAAWsC,OAASkB,OAAOC,KAAKV,EAAMO,YAAYI,QAAQC,QAAO,CAACC,EAAKC,KAC3E,MAAMC,EAAaD,EACbE,EAAQhB,EAAMO,YAAYI,OAAOI,GAOvC,OANc,IAAVC,IAEFH,EAAIb,EAAMO,YAAYC,GAAGO,IAAe,CACtCzB,SAAU,GAAG0B,IAAQhB,EAAMO,YAAYU,SAGpCJ,CAAG,GACT,CAAC,KAAI,EACNb,QACA/C,iBACI,IAEwB,OAAxBA,EAAWqC,UAAqB,CAElC,CAACU,EAAMO,YAAYC,GAAG,OAAQ,CAE5BlB,SAAU4B,KAAKC,IAAInB,EAAMO,YAAYI,OAAOS,GAAI,UAGhDnE,EAAWqC,UAES,OAAxBrC,EAAWqC,UAAqB,CAE9B,CAACU,EAAMO,YAAYC,GAAGvD,EAAWqC,WAAY,CAE3CA,SAAU,GAAGU,EAAMO,YAAYI,OAAO1D,EAAWqC,YAAYU,EAAMO,YAAYU,aAI/EtB,EAAyB,cAAiB,SAAmB/C,EAASC,GAC1E,MAAML,EAAQkD,EAAc9C,IACtB,UACJE,EAAS,UACTyB,EAAY,MAAK,eACjBiB,GAAiB,EAAK,MACtBD,GAAQ,EAAK,SACbD,EAAW,KACXpC,QAASmE,KACNrE,GACDR,EACES,EAAa,IACdT,EACH+B,YACAiB,iBACAD,QACAD,YAIIpC,EA9FgB,EAACD,EAAY6C,KACrC,MAGM,QACJ5C,EAAO,MACPqC,EAAK,eACLC,EAAc,SACdF,GACErC,EACE4B,EAAQ,CACZnC,KAAM,CAAC,OAAQ4C,GAAY,YAAW,EAAAF,EAAA,GAAWC,OAAOC,MAAcC,GAAS,QAASC,GAAkB,mBAE5G,OAAO,EAAA8B,EAAA,GAAezC,GAZWvC,IACxB,EAAAiF,EAAA,IAAqBzB,EAAexD,IAWUY,EAAQ,EAiF7CC,CAAkBF,EAAY6C,GAC9C,OAGE,SAAKC,EAAe,CAClBjB,GAAIP,EAGJtB,WAAYA,EACZH,WAAW,EAAA0E,EAAA,GAAKtE,EAAQR,KAAMI,GAC9BD,IAAKA,KACFG,GAGT,IAWA,OAAO2C,CACT,CC3IkB8B,CAAgB,CAChC5B,uBAAuB,QAAO,MAAO,CACnCxD,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJQ,GACET,EACJ,MAAO,CAACC,EAAOC,KAAMD,EAAO,YAAW,OAAW4C,OAAOpC,EAAWqC,cAAerC,EAAWsC,OAAS9C,EAAO8C,MAAOtC,EAAWuC,gBAAkB/C,EAAO+C,eAAe,IAG5KE,cAAe9C,IAAW,OAAc,CACtCJ,MAAOI,EACPP,KAAM,mBA8CV,G,8LC/CO,MAsBMqF,GAAe,QAAO,MAAO,CACxCrF,KAAM,cACNC,KAAM,OACNC,kBAzB+B,CAACC,EAAOC,KACvC,MAAM,WACJQ,GACET,EACJ,MAAO,CAACC,EAAOC,KAAMO,EAAW0E,OAASlF,EAAOkF,MAAiC,eAA1B1E,EAAW2E,YAA+BnF,EAAOoF,oBAAqB5E,EAAW6E,SAAWrF,EAAOqF,SAAU7E,EAAWuC,gBAAkB/C,EAAOsF,SAAU9E,EAAW+E,gBAAkBvF,EAAOwF,QAAShF,EAAWiF,oBAAsBzF,EAAO0F,gBAAgB,GAkB7R,EAIzB,QAAU,EACXnC,YACI,CACJpC,QAAS,OACTwE,eAAgB,aAChBR,WAAY,SACZS,SAAU,WACVC,eAAgB,OAChBpE,MAAO,OACPgC,UAAW,aACXqC,UAAW,OACXvE,SAAU,CAAC,CACTxB,MAAO,EACLS,iBACKA,EAAW+E,eAClB/D,MAAO,CACLuE,WAAY,EACZC,cAAe,IAEhB,CACDjG,MAAO,EACLS,iBACKA,EAAW+E,gBAAkB/E,EAAW0E,MAC/C1D,MAAO,CACLuE,WAAY,EACZC,cAAe,IAEhB,CACDjG,MAAO,EACLS,iBACKA,EAAW+E,iBAAmB/E,EAAWuC,eAChDvB,MAAO,CACLmC,YAAa,GACbE,aAAc,KAEf,CACD9D,MAAO,EACLS,iBACKA,EAAW+E,kBAAoB/E,EAAWkF,gBACjDlE,MAAO,CAGLqC,aAAc,KAEf,CACD9D,MAAO,EACLS,kBACMA,EAAWkF,gBACnBlE,MAAO,CACL,CAAC,QAAQ,IAAsBvB,QAAS,CACtC4D,aAAc,MAGjB,CACD9D,MAAO,CACLoF,WAAY,cAEd3D,MAAO,CACL2D,WAAY,eAEb,CACDpF,MAAO,EACLS,gBACIA,EAAW6E,QACjB7D,MAAO,CACLyE,aAAc,cAAc1C,EAAM2C,MAAQ3C,GAAO4C,QAAQd,UACzDe,eAAgB,gBAEjB,CACDrG,MAAO,EACLS,gBACIA,EAAW6F,OACjB7E,MAAO,CACL8E,WAAY/C,EAAMgD,YAAYC,OAAO,mBAAoB,CACvDC,SAAUlD,EAAMgD,YAAYE,SAASC,WAEvC,UAAW,CACTb,eAAgB,OAChBc,iBAAkBpD,EAAM2C,MAAQ3C,GAAO4C,QAAQS,OAAOC,MAEtD,uBAAwB,CACtBF,gBAAiB,kBAItB,CACD5G,MAAO,EACLS,gBACIA,EAAWiF,mBACjBjE,MAAO,CAGLqC,aAAc,WAIdiD,GAAoB,QAAO,KAAM,CACrClH,KAAM,cACNC,KAAM,YACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO+G,WAHrB,CAIvB,CACDnB,SAAU,aAiPZ,EA3O8B,cAAiB,SAAkBzF,EAASC,GACxE,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,iBAEF,WACJuF,EAAa,SACbtD,SAAUmF,EAAY,UACtB3G,EACAyB,UAAWmF,EAAa,WACxBC,EAAa,CAAC,EAAC,gBACfC,EAAkB,CAAC,EAAC,mBACpBC,EAAqB,KACrBC,gBACEhH,UAAWiH,KACRD,GACD,CAAC,EAAC,MACNnC,GAAQ,EAAK,eACbnC,GAAiB,EAAK,eACtBwC,GAAiB,EAAK,QACtBF,GAAU,EAAK,gBACfK,EAAe,UACf6B,EAAY,CAAC,EAAC,MACdnF,EAAQ,CAAC,KACN7B,GACDR,EACEyH,EAAU,aAAiB,KAC3BC,EAAe,WAAc,KAAM,CACvCvC,MAAOA,GAASsC,EAAQtC,QAAS,EACjCC,aACApC,oBACE,CAACoC,EAAYqC,EAAQtC,MAAOA,EAAOnC,IACjC2E,EAAc,SAAa,MAC3B7F,EAAW,WAAe8F,QAAQX,GAGlCvB,EAAqB5D,EAAS+F,SAAU,OAAa/F,EAASA,EAAS+F,OAAS,GAAI,CAAC,4BACrFpH,EAAa,IACdT,EACHoF,aACAD,MAAOuC,EAAavC,MACpBnC,iBACAwC,iBACAF,UACAI,sBAEIhF,EA7KkBD,KACxB,MAAM,WACJ2E,EAAU,QACV1E,EAAO,MACPyE,EAAK,eACLnC,EAAc,eACdwC,EAAc,QACdF,EAAO,mBACPI,GACEjF,EACE4B,EAAQ,CACZnC,KAAM,CAAC,OAAQiF,GAAS,SAAUnC,GAAkB,WAAYwC,GAAkB,UAAWF,GAAW,UAA0B,eAAfF,GAA+B,sBAAuBM,GAAsB,mBAC/LsB,UAAW,CAAC,cAEd,OAAO,OAAe3E,EAAO,IAAyB3B,EAAQ,EA+J9CC,CAAkBF,GAC5BqH,GAAY,OAAWH,EAAatH,GACpC0H,EAAO1F,EAAMnC,MAAQiH,EAAWY,MAAQ7C,EACxC8C,EAAYR,EAAUtH,MAAQkH,EAAgBlH,MAAQ,CAAC,EACvD+H,EAAiB,CACrB3H,WAAW,OAAKI,EAAQR,KAAM8H,EAAU1H,UAAWA,MAChDE,GAEL,IAAI0H,EAAYhB,GAAiB,KAGjC,OAAIxB,GAEFwC,EAAaD,EAAelG,WAAcmF,EAAwBgB,EAAR,MAG/B,OAAvBb,IACgB,OAAda,EACFA,EAAY,MAC0B,OAA7BD,EAAelG,YACxBkG,EAAelG,UAAY,SAGX,SAAK,IAAYoG,SAAU,CAC7C3D,MAAOkD,EACP5F,UAAuB,UAAMiF,EAAmB,CAC9CzE,GAAI+E,EACJ/G,WAAW,OAAKI,EAAQsG,UAAWO,GACnClH,IAAKyH,EACLrH,WAAYA,KACT6G,EACHxF,SAAU,EAAc,SAAKiG,EAAM,IAC9BC,OACE,OAAgBD,IAAS,CAC5BzF,GAAI4F,EACJzH,WAAY,IACPA,KACAuH,EAAUvH,gBAGdwH,EACHnG,SAAUA,IACRA,EAASsG,aAIC,SAAK,IAAYD,SAAU,CAC7C3D,MAAOkD,EACP5F,UAAuB,UAAMiG,EAAM,IAC9BC,EACH1F,GAAI4F,EACJ7H,IAAKyH,OACA,OAAgBC,IAAS,CAC5BtH,WAAY,IACPA,KACAuH,EAAUvH,gBAGdwH,EACHnG,SAAU,CAACA,EAAU6D,IAAgC,SAAK,IAAyB,CACjF7D,SAAU6D,QAIlB,G,qECpQO,SAAS0C,EAAwBvI,GACtC,OAAO,QAAqB,cAAeA,EAC7C,CACA,MACA,GADwB,OAAuB,cAAe,CAAC,OAAQ,YAAa,QAAS,sBAAuB,UAAW,UAAW,UAAW,mB,8LCY9I,MAyBDwI,GAAqB,QAAO,IAAY,CAC5CC,kBAAmBC,IAAQ,OAAsBA,IAAkB,YAATA,EAC1D3I,KAAM,oBACNC,KAAM,OACNC,kBA7B+B,CAACC,EAAOC,KACvC,MAAM,WACJQ,GACET,EACJ,MAAO,CAACC,EAAOC,KAAMO,EAAW0E,OAASlF,EAAOkF,MAAiC,eAA1B1E,EAAW2E,YAA+BnF,EAAOoF,oBAAqB5E,EAAW6E,SAAWrF,EAAOqF,SAAU7E,EAAWuC,gBAAkB/C,EAAOsF,QAAQ,GAqBvL,EAKxB,QAAU,EACX/B,YACI,CACJpC,QAAS,OACTqH,SAAU,EACV7C,eAAgB,aAChBR,WAAY,SACZS,SAAU,WACVC,eAAgB,OAChB4C,SAAU,EACVhF,UAAW,aACXqC,UAAW,OACXC,WAAY,EACZC,cAAe,EACfM,WAAY/C,EAAMgD,YAAYC,OAAO,mBAAoB,CACvDC,SAAUlD,EAAMgD,YAAYE,SAASC,WAEvC,UAAW,CACTb,eAAgB,OAChBc,iBAAkBpD,EAAM2C,MAAQ3C,GAAO4C,QAAQS,OAAOC,MAEtD,uBAAwB,CACtBF,gBAAiB,gBAGrB,CAAC,KAAK,IAAsB+B,YAAa,CACvC/B,gBAAiBpD,EAAM2C,KAAO,QAAQ3C,EAAM2C,KAAKC,QAAQwC,QAAQC,iBAAiBrF,EAAM2C,KAAKC,QAAQS,OAAOiC,oBAAqB,QAAMtF,EAAM4C,QAAQwC,QAAQG,KAAMvF,EAAM4C,QAAQS,OAAOiC,iBACxL,CAAC,KAAK,IAAsBE,gBAAiB,CAC3CpC,gBAAiBpD,EAAM2C,KAAO,QAAQ3C,EAAM2C,KAAKC,QAAQwC,QAAQC,sBAAsBrF,EAAM2C,KAAKC,QAAQS,OAAOiC,qBAAqBtF,EAAM2C,KAAKC,QAAQS,OAAOoC,kBAAmB,QAAMzF,EAAM4C,QAAQwC,QAAQG,KAAMvF,EAAM4C,QAAQS,OAAOiC,gBAAkBtF,EAAM4C,QAAQS,OAAOoC,gBAGrR,CAAC,KAAK,IAAsBN,kBAAmB,CAC7C/B,gBAAiBpD,EAAM2C,KAAO,QAAQ3C,EAAM2C,KAAKC,QAAQwC,QAAQC,sBAAsBrF,EAAM2C,KAAKC,QAAQS,OAAOiC,qBAAqBtF,EAAM2C,KAAKC,QAAQS,OAAOqC,kBAAmB,QAAM1F,EAAM4C,QAAQwC,QAAQG,KAAMvF,EAAM4C,QAAQS,OAAOiC,gBAAkBtF,EAAM4C,QAAQS,OAAOqC,cAEjR,uBAAwB,CACtBtC,gBAAiBpD,EAAM2C,KAAO,QAAQ3C,EAAM2C,KAAKC,QAAQwC,QAAQC,iBAAiBrF,EAAM2C,KAAKC,QAAQS,OAAOiC,oBAAqB,QAAMtF,EAAM4C,QAAQwC,QAAQG,KAAMvF,EAAM4C,QAAQS,OAAOiC,mBAG5L,CAAC,KAAK,IAAsBE,gBAAiB,CAC3CpC,iBAAkBpD,EAAM2C,MAAQ3C,GAAO4C,QAAQS,OAAOsC,OAExD,CAAC,KAAK,IAAsBC,YAAa,CACvCC,SAAU7F,EAAM2C,MAAQ3C,GAAO4C,QAAQS,OAAOyC,iBAEhD9H,SAAU,CAAC,CACTxB,MAAO,EACLS,gBACIA,EAAW6E,QACjB7D,MAAO,CACLyE,aAAc,cAAc1C,EAAM2C,MAAQ3C,GAAO4C,QAAQd,UACzDe,eAAgB,gBAEjB,CACDrG,MAAO,CACLoF,WAAY,cAEd3D,MAAO,CACL2D,WAAY,eAEb,CACDpF,MAAO,EACLS,iBACKA,EAAWuC,eAClBvB,MAAO,CACLmC,YAAa,GACbE,aAAc,KAEf,CACD9D,MAAO,EACLS,gBACIA,EAAW0E,MACjB1D,MAAO,CACLuE,WAAY,EACZC,cAAe,UA+IrB,EA3IoC,cAAiB,SAAwB7F,EAASC,GACpF,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,uBAEF,WACJuF,EAAa,SAAQ,UACrBmE,GAAY,EAAK,UACjBxH,EAAY,MAAK,SACjBD,EAAQ,MACRqD,GAAQ,EAAK,eACbnC,GAAiB,EAAK,QACtBsC,GAAU,EAAK,sBACfkE,EAAqB,SACrBb,GAAW,EAAK,UAChBrI,KACGE,GACDR,EACEyH,EAAU,aAAiB,KAC3BC,EAAe,WAAc,KAAM,CACvCvC,MAAOA,GAASsC,EAAQtC,QAAS,EACjCC,aACApC,oBACE,CAACoC,EAAYqC,EAAQtC,MAAOA,EAAOnC,IACjC2E,EAAc,SAAa,OACjC,QAAkB,KACZ4B,GACE5B,EAAY8B,SACd9B,EAAY8B,QAAQN,OAIxB,GACC,CAACI,IACJ,MAAM9I,EAAa,IACdT,EACHoF,aACAD,MAAOuC,EAAavC,MACpBnC,iBACAsC,UACAqD,YAEIjI,EA/IkBD,KACxB,MAAM,WACJ2E,EAAU,QACV1E,EAAO,MACPyE,EAAK,SACLiE,EAAQ,eACRpG,EAAc,QACdsC,EAAO,SACPqD,GACElI,EACE4B,EAAQ,CACZnC,KAAM,CAAC,OAAQiF,GAAS,SAAUnC,GAAkB,UAAWsC,GAAW,UAAW8D,GAAY,WAA2B,eAAfhE,GAA+B,sBAAuBuD,GAAY,aAE3Ke,GAAkB,OAAerH,EAAO,IAA+B3B,GAC7E,MAAO,IACFA,KACAgJ,EACJ,EA8He/I,CAAkBF,GAC5BqH,GAAY,OAAWH,EAAatH,GAC1C,OAAoB,SAAK,IAAY8H,SAAU,CAC7C3D,MAAOkD,EACP5F,UAAuB,SAAKwG,EAAoB,CAC9CjI,IAAKyH,EACL6B,KAAMnJ,EAAMmJ,MAAQnJ,EAAMoJ,GAG1B7H,WAAYvB,EAAMmJ,MAAQnJ,EAAMoJ,KAAqB,QAAd7H,EAAsB,SAAWA,EACxEyH,uBAAuB,OAAK9I,EAAQsI,aAAcQ,GAClD/I,WAAYA,EACZH,WAAW,OAAKI,EAAQR,KAAMI,MAC3BE,EACHE,QAASA,EACToB,SAAUA,KAGhB,G,oECtLO,SAAS+H,EAA8B/J,GAC5C,OAAO,QAAqB,oBAAqBA,EACnD,CACA,MACA,GAD8B,OAAuB,oBAAqB,CAAC,OAAQ,eAAgB,QAAS,sBAAuB,WAAY,UAAW,UAAW,Y,6HCMrK,MAUMgK,GAA8B,QAAO,MAAO,CAChDjK,KAAM,6BACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJQ,GACET,EACJ,MAAO,CAACC,EAAOC,KAAMO,EAAWuC,gBAAkB/C,EAAO+C,eAAe,GAPxC,CASjC,CACD6C,SAAU,WACVkE,MAAO,GACPC,IAAK,MACLC,UAAW,mBACXzI,SAAU,CAAC,CACTxB,MAAO,EACLS,gBACIA,EAAWuC,eACjBvB,MAAO,CACLsI,MAAO,OAUPG,EAAuC,cAAiB,SAAiC9J,EAASC,GACtG,MAAML,GAAQ,OAAgB,CAC5BA,MAAOI,EACPP,KAAM,gCAEF,UACJS,KACGE,GACDR,EACEyH,EAAU,aAAiB,KAC3BhH,EAAa,IACdT,EACHgD,eAAgByE,EAAQzE,gBAEpBtC,EArDkBD,KACxB,MAAM,eACJuC,EAAc,QACdtC,GACED,EACE4B,EAAQ,CACZnC,KAAM,CAAC,OAAQ8C,GAAkB,mBAEnC,OAAO,OAAeX,EAAO,EAAA8H,EAA+CzJ,EAAQ,EA6CpEC,CAAkBF,GAClC,OAAoB,SAAKqJ,EAA6B,CACpDxJ,WAAW,OAAKI,EAAQR,KAAMI,GAC9BG,WAAYA,EACZJ,IAAKA,KACFG,GAEP,IAuBA0J,EAAwBE,QAAU,0BAClC,S,qEC7FO,SAASC,EAA8CvK,GAC5D,OAAO,QAAqB,6BAA8BA,EAC5D,CACA,MACA,GADuC,OAAuB,6BAA8B,CAAC,OAAQ,kB,mCCJrG,MACA,GADe,E,SAAA,K","sources":["../../../node_modules/@mui/icons-material/esm/Warning.js","../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js","../../../node_modules/@mui/material/CardMedia/CardMedia.js","../../../node_modules/@mui/material/CardMedia/cardMediaClasses.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/ListItemButton.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z\"\n}), 'Warning');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardMediaUtilityClass } from \"./cardMediaClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    isMediaComponent,\n    isImageComponent\n  } = ownerState;\n  const slots = {\n    root: ['root', isMediaComponent && 'media', isImageComponent && 'img']\n  };\n  return composeClasses(slots, getCardMediaUtilityClass, classes);\n};\nconst CardMediaRoot = styled('div', {\n  name: 'MuiCardMedia',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      isMediaComponent,\n      isImageComponent\n    } = ownerState;\n    return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];\n  }\n})({\n  display: 'block',\n  backgroundSize: 'cover',\n  backgroundRepeat: 'no-repeat',\n  backgroundPosition: 'center',\n  variants: [{\n    props: {\n      isMediaComponent: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      isImageComponent: true\n    },\n    style: {\n      objectFit: 'cover'\n    }\n  }]\n});\nconst MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];\nconst IMAGE_COMPONENTS = ['picture', 'img'];\nconst CardMedia = /*#__PURE__*/React.forwardRef(function CardMedia(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardMedia'\n  });\n  const {\n    children,\n    className,\n    component = 'div',\n    image,\n    src,\n    style,\n    ...other\n  } = props;\n  const isMediaComponent = MEDIA_COMPONENTS.includes(component);\n  const composedStyle = !isMediaComponent && image ? {\n    backgroundImage: `url(\"${image}\")`,\n    ...style\n  } : style;\n  const ownerState = {\n    ...props,\n    component,\n    isMediaComponent,\n    isImageComponent: IMAGE_COMPONENTS.includes(component)\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardMediaRoot, {\n    className: clsx(classes.root, className),\n    as: component,\n    role: !isMediaComponent && image ? 'img' : undefined,\n    ref: ref,\n    style: composedStyle,\n    ownerState: ownerState,\n    src: isMediaComponent ? image || src : undefined,\n    ...other,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardMedia.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    if (!props.children && !props.image && !props.src && !props.component) {\n      return new Error('MUI: Either `children`, `image`, `src` or `component` prop must be specified.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Image to be displayed as a background image.\n   * Either `image` or `src` prop must be specified.\n   * Note that caller must specify height otherwise the image will not be visible.\n   */\n  image: PropTypes.string,\n  /**\n   * An alias for `image` property.\n   * Available only with media components.\n   * Media components: `video`, `audio`, `picture`, `iframe`, `img`.\n   */\n  src: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardMedia;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardMediaUtilityClass(slot) {\n  return generateUtilityClass('MuiCardMedia', slot);\n}\nconst cardMediaClasses = generateUtilityClasses('MuiCardMedia', ['root', 'media', 'img']);\nexport default cardMediaClasses;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport listItemButtonClasses, { getListItemButtonUtilityClass } from \"./listItemButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disabled,\n    disableGutters,\n    divider,\n    selected\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', divider && 'divider', disabled && 'disabled', alignItems === 'flex-start' && 'alignItemsFlexStart', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getListItemButtonUtilityClass, classes);\n  return {\n    ...classes,\n    ...composedClasses\n  };\n};\nconst ListItemButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiListItemButton',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minWidth: 0,\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  paddingTop: 8,\n  paddingBottom: 8,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${listItemButtonClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${listItemButtonClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${listItemButtonClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }]\n})));\nconst ListItemButton = /*#__PURE__*/React.forwardRef(function ListItemButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemButton'\n  });\n  const {\n    alignItems = 'center',\n    autoFocus = false,\n    component = 'div',\n    children,\n    dense = false,\n    disableGutters = false,\n    divider = false,\n    focusVisibleClassName,\n    selected = false,\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (listItemRef.current) {\n        listItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a ListItemButton whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    divider,\n    selected\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(ListItemButtonRoot, {\n      ref: handleRef,\n      href: other.href || other.to\n      // `ButtonBase` processes `href` or `to` if `component` is set to 'button'\n      ,\n      component: (other.href || other.to) && component === 'div' ? 'button' : component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ...other,\n      classes: classes,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes.string,\n  /**\n   * Use to apply selected styling.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["d","CardRoot","name","slot","overridesResolver","props","styles","root","overflow","inProps","ref","className","raised","other","ownerState","classes","useUtilityClasses","elevation","undefined","getCardUtilityClass","CardMediaRoot","isMediaComponent","isImageComponent","media","img","display","backgroundSize","backgroundRepeat","backgroundPosition","variants","style","width","objectFit","MEDIA_COMPONENTS","IMAGE_COMPONENTS","children","component","image","src","includes","composedStyle","backgroundImage","slots","as","role","getCardMediaUtilityClass","defaultTheme","createTheme","defaultCreateStyledComponent","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","useThemeProps","Container","options","createStyledComponent","componentName","ContainerRoot","theme","marginLeft","boxSizing","marginRight","paddingLeft","spacing","paddingRight","breakpoints","up","Object","keys","values","reduce","acc","breakpointValueKey","breakpoint","value","unit","Math","max","xs","classesProp","composeClasses","generateUtilityClass","clsx","createContainer","ListItemRoot","dense","alignItems","alignItemsFlexStart","divider","gutters","disablePadding","padding","hasSecondaryAction","secondaryAction","justifyContent","position","textDecoration","textAlign","paddingTop","paddingBottom","borderBottom","vars","palette","backgroundClip","button","transition","transitions","create","duration","shortest","backgroundColor","action","hover","ListItemContainer","container","childrenProp","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","context","childContext","listItemRef","toArray","length","handleRef","Root","rootProps","componentProps","Component","Provider","pop","getListItemUtilityClass","ListItemButtonRoot","shouldForwardProp","prop","flexGrow","minWidth","selected","primary","mainChannel","selectedOpacity","main","focusVisible","focusOpacity","hoverOpacity","focus","disabled","opacity","disabledOpacity","autoFocus","focusVisibleClassName","current","composedClasses","href","to","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","transform","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6514.d36ecbb8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6514],{6514:(e,a,o)=>{o.d(a,{A:()=>y});var i={Huffman:{},Util:{},CRC32:{},CompressionMethod:{DEFLATE:8,RESERVED:15},Zip:function(e){e=e||{},this.files=[],this.comment=e.comment,this.password}};i.Zip.CompressionMethod={STORE:0,DEFLATE:8},i.Zip.OperatingSystem={MSDOS:0,UNIX:3,MACINTOSH:7},i.Zip.Flags={ENCRYPT:1,DESCRIPTOR:8,UTF8:2048},i.Zip.FileHeaderSignature=[80,75,1,2],i.Zip.LocalFileHeaderSignature=[80,75,3,4],i.Zip.CentralDirectorySignature=[80,75,5,6],i.Zip.prototype.addFile=function(e,a){var o;(a=a||{}).filename;var t=e.length,F=0;if(e instanceof Array&&(e=new Uint8Array(e)),"number"!=typeof a.compressionMethod&&(a.compressionMethod=i.Zip.CompressionMethod.DEFLATE),a.compress)switch(a.compressionMethod){case i.Zip.CompressionMethod.STORE:break;case i.Zip.CompressionMethod.DEFLATE:F=i.CRC32.calc(e),e=this.deflateWithOption(e,a),o=!0;break;default:throw new Error("unknown compression method:"+a.compressionMethod)}this.files.push({buffer:e,option:a,compressed:o,encrypted:!1,size:t,crc32:F})},i.Zip.prototype.setPassword=function(e){this.password=e},i.Zip.prototype.compress=function(){var e,a,o,t,F,n,c,s,r,f,d,h,w,l,p,u,m,b,N,C,z,I,g,E,D,y,H=this.files,S=0,R=0;for(g=0,E=H.length;g<E;++g){if(l=(e=H[g]).option.filename?e.option.filename.length:0,p=e.option.extraField?e.option.extraField.length:0,u=e.option.comment?e.option.comment.length:0,!e.compressed)switch(e.crc32=i.CRC32.calc(e.buffer),e.option.compressionMethod){case i.Zip.CompressionMethod.STORE:break;case i.Zip.CompressionMethod.DEFLATE:e.buffer=this.deflateWithOption(e.buffer,e.option),e.compressed=!0;break;default:throw new Error("unknown compression method:"+e.option.compressionMethod)}if(void 0!==e.option.password||void 0!==this.password){for(I=this.createEncryptionKey(e.option.password||this.password),C=e.buffer,(z=new Uint8Array(C.length+12)).set(C,12),C=z,D=0;D<12;++D)C[D]=this.encode(I,11===g?255&e.crc32:256*Math.random()|0);for(y=C.length;D<y;++D)C[D]=this.encode(I,C[D]);e.buffer=C}S+=30+l+e.buffer.length,R+=46+l+u}for(n=22+(this.comment?this.comment.length:0),a=new Uint8Array(S+R+n),o=0,F=(t=S)+R,g=0,E=H.length;g<E;++g)l=(e=H[g]).option.filename?e.option.filename.length:0,p=0,u=e.option.comment?e.option.comment.length:0,c=o,a[o++]=i.Zip.LocalFileHeaderSignature[0],a[o++]=i.Zip.LocalFileHeaderSignature[1],a[o++]=i.Zip.LocalFileHeaderSignature[2],a[o++]=i.Zip.LocalFileHeaderSignature[3],a[t++]=i.Zip.FileHeaderSignature[0],a[t++]=i.Zip.FileHeaderSignature[1],a[t++]=i.Zip.FileHeaderSignature[2],a[t++]=i.Zip.FileHeaderSignature[3],a[t++]=20,a[t++]=e.option.os||i.Zip.OperatingSystem.MSDOS,a[o++]=a[t++]=20,a[o++]=a[t++]=0,s=0,(e.option.password||this.password)&&(s|=i.Zip.Flags.ENCRYPT),a[o++]=a[t++]=255&s,a[o++]=a[t++]=s>>8&255,r=e.option.compressionMethod,a[o++]=a[t++]=255&r,a[o++]=a[t++]=r>>8&255,f=e.option.date||new Date,a[o++]=a[t++]=(7&f.getMinutes())<<5|f.getSeconds()/2,a[o++]=a[t++]=f.getHours()<<3|f.getMinutes()>>3,a[o++]=a[t++]=(f.getMonth()+1&7)<<5|f.getDate(),a[o++]=a[t++]=(f.getFullYear()-1980&127)<<1|f.getMonth()+1>>3,d=e.crc32,a[o++]=a[t++]=255&d,a[o++]=a[t++]=d>>8&255,a[o++]=a[t++]=d>>16&255,a[o++]=a[t++]=d>>24&255,h=e.buffer.length,a[o++]=a[t++]=255&h,a[o++]=a[t++]=h>>8&255,a[o++]=a[t++]=h>>16&255,a[o++]=a[t++]=h>>24&255,w=e.size,a[o++]=a[t++]=255&w,a[o++]=a[t++]=w>>8&255,a[o++]=a[t++]=w>>16&255,a[o++]=a[t++]=w>>24&255,a[o++]=a[t++]=255&l,a[o++]=a[t++]=l>>8&255,a[o++]=a[t++]=255&p,a[o++]=a[t++]=p>>8&255,a[t++]=255&u,a[t++]=u>>8&255,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=0,a[t++]=255&c,a[t++]=c>>8&255,a[t++]=c>>16&255,a[t++]=c>>24&255,(m=e.option.filename)&&(a.set(m,o),a.set(m,t),o+=l,t+=l),(b=e.option.extraField)&&(a.set(b,o),a.set(b,t),o+=p,t+=p),(N=e.option.comment)&&(a.set(N,t),t+=u),a.set(e.buffer,o),o+=e.buffer.length;return a[F++]=i.Zip.CentralDirectorySignature[0],a[F++]=i.Zip.CentralDirectorySignature[1],a[F++]=i.Zip.CentralDirectorySignature[2],a[F++]=i.Zip.CentralDirectorySignature[3],a[F++]=0,a[F++]=0,a[F++]=0,a[F++]=0,a[F++]=255&E,a[F++]=E>>8&255,a[F++]=255&E,a[F++]=E>>8&255,a[F++]=255&R,a[F++]=R>>8&255,a[F++]=R>>16&255,a[F++]=R>>24&255,a[F++]=255&S,a[F++]=S>>8&255,a[F++]=S>>16&255,a[F++]=S>>24&255,u=this.comment?this.comment.length:0,a[F++]=255&u,a[F++]=u>>8&255,this.comment&&(a.set(this.comment,F),F+=u),a},i.Zip.prototype.deflateWithOption=function(e,a){return new i.RawDeflate(e,a.deflateOption).compress()},i.Zip.prototype.getByte=function(e){var a=65535&e[2]|2;return a*(1^a)>>8&255},i.Zip.prototype.encode=function(e,a){var o=this.getByte(e);return this.updateKeys(e,a),o^a},i.Zip.prototype.updateKeys=function(e,a){e[0]=i.CRC32.single(e[0],a),e[1]=1+(6681*(20173*(e[1]+(255&e[0]))>>>0)>>>0)>>>0,e[2]=i.CRC32.single(e[2],e[1]>>>24)},i.Zip.prototype.createEncryptionKey=function(e){var a,o,i=[305419896,591751049,878082192];for(i=new Uint32Array(i),a=0,o=e.length;a<o;++a)this.updateKeys(i,255&e[a]);return i},i.Huffman.buildHuffmanTable=function(e){var a,o,i,t,F,n,c,s,r,f,d,h=e.length,w=0,l=Number.POSITIVE_INFINITY;for(s=0,r=h;s<r;++s)e[s]>w&&(w=e[s]),e[s]<l&&(l=e[s]);for(a=1<<w,o=new Uint32Array(a),i=1,t=0,F=2;i<=w;){for(s=0;s<h;++s)if(e[s]===i){for(n=0,c=t,f=0;f<i;++f)n=n<<1|1&c,c>>=1;for(d=i<<16|s,f=n;f<a;f+=F)o[f]=d;++t}++i,t<<=1,F<<=1}return[o,w,l]};var t,F=i.Huffman.buildHuffmanTable;i.RawInflate=function(e,a){switch(this.buffer,this.blocks=[],this.bufferSize=32768,this.totalpos=0,this.ip=0,this.bitsbuf=0,this.bitsbuflen=0,this.input=new Uint8Array(e),this.output,this.op,this.bfinal=!1,this.bufferType=i.RawInflate.BufferType.ADAPTIVE,this.resize=!1,!a&&(a={})||(a.index&&(this.ip=a.index),a.bufferSize&&(this.bufferSize=a.bufferSize),a.bufferType&&(this.bufferType=a.bufferType),a.resize&&(this.resize=a.resize)),this.bufferType){case i.RawInflate.BufferType.BLOCK:this.op=i.RawInflate.MaxBackwardLength,this.output=new Uint8Array(i.RawInflate.MaxBackwardLength+this.bufferSize+i.RawInflate.MaxCopyLength);break;case i.RawInflate.BufferType.ADAPTIVE:this.op=0,this.output=new Uint8Array(this.bufferSize);break;default:throw new Error("invalid inflate mode")}},i.RawInflate.BufferType={BLOCK:0,ADAPTIVE:1},i.RawInflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case i.RawInflate.BufferType.BLOCK:return this.concatBufferBlock();case i.RawInflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw new Error("invalid inflate mode")}},i.RawInflate.MaxBackwardLength=32768,i.RawInflate.MaxCopyLength=258,i.RawInflate.Order=new Uint16Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),i.RawInflate.LengthCodeTable=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]),i.RawInflate.LengthExtraTable=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]),i.RawInflate.DistCodeTable=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]),i.RawInflate.DistExtraTable=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i.RawInflate.FixedLiteralLengthTable=function(){var e,a,o=new Uint8Array(288);for(e=0,a=o.length;e<a;++e)o[e]=e<=143?8:e<=255?9:e<=279?7:8;return F(o)}(),i.RawInflate.FixedDistanceTable=function(){var e,a,o=new Uint8Array(30);for(e=0,a=o.length;e<a;++e)o[e]=5;return F(o)}(),i.RawInflate.prototype.parseBlock=function(){var e=this.readBits(3);switch(1&e&&(this.bfinal=!0),e>>>=1){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw new Error("unknown BTYPE: "+e)}},i.RawInflate.prototype.readBits=function(e){var a,o=this.bitsbuf,i=this.bitsbuflen,t=this.input,F=this.ip;if(F+(e-i+7>>3)>=t.length)throw new Error("input buffer is broken");for(;i<e;)o|=t[F++]<<i,i+=8;return a=o&(1<<e)-1,o>>>=e,i-=e,this.bitsbuf=o,this.bitsbuflen=i,this.ip=F,a},i.RawInflate.prototype.readCodeByTable=function(e){for(var a,o,i=this.bitsbuf,t=this.bitsbuflen,F=this.input,n=this.ip,c=F.length,s=e[0],r=e[1];t<r&&!(n>=c);)i|=F[n++]<<t,t+=8;if((o=(a=s[i&(1<<r)-1])>>>16)>t)throw new Error("invalid code length: "+o);return this.bitsbuf=i>>o,this.bitsbuflen=t-o,this.ip=n,65535&a},i.RawInflate.prototype.parseUncompressedBlock=function(){var e,a,o=this.input,t=this.ip,F=this.output,n=this.op,c=o.length,s=F.length;if(this.bitsbuf=0,this.bitsbuflen=0,t+1>=c)throw new Error("invalid uncompressed block header: LEN");if(e=o[t++]|o[t++]<<8,t+1>=c)throw new Error("invalid uncompressed block header: NLEN");if(e===~(o[t++]|o[t++]<<8))throw new Error("invalid uncompressed block header: length verify");if(t+e>o.length)throw new Error("input buffer is broken");switch(this.bufferType){case i.RawInflate.BufferType.BLOCK:for(;n+e>F.length;)e-=a=s-n,F.set(o.subarray(t,t+a),n),n+=a,t+=a,this.op=n,F=this.expandBufferBlock(),n=this.op;break;case i.RawInflate.BufferType.ADAPTIVE:for(;n+e>F.length;)F=this.expandBufferAdaptive({fixRatio:2});break;default:throw new Error("invalid inflate mode")}F.set(o.subarray(t,t+e),n),n+=e,t+=e,this.ip=t,this.op=n,this.output=F},i.RawInflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case i.RawInflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(i.RawInflate.FixedLiteralLengthTable,i.RawInflate.FixedDistanceTable);break;case i.RawInflate.BufferType.BLOCK:this.decodeHuffmanBlock(i.RawInflate.FixedLiteralLengthTable,i.RawInflate.FixedDistanceTable);break;default:throw new Error("invalid inflate mode")}},i.RawInflate.prototype.parseDynamicHuffmanBlock=function(){var e,a,o,t,n,c,s,r,f,d=this.readBits(5)+257,h=this.readBits(5)+1,w=this.readBits(4)+4,l=new Uint8Array(i.RawInflate.Order.length);for(r=0;r<w;++r)l[i.RawInflate.Order[r]]=this.readBits(3);for(e=F(l),t=new Uint8Array(d+h),r=0,f=d+h;r<f;)switch(n=this.readCodeByTable(e)){case 16:for(s=3+this.readBits(2);s--;)t[r++]=c;break;case 17:for(s=3+this.readBits(3);s--;)t[r++]=0;c=0;break;case 18:for(s=11+this.readBits(7);s--;)t[r++]=0;c=0;break;default:t[r++]=n,c=n}switch(a=F(t.subarray(0,d)),o=F(t.subarray(d)),this.bufferType){case i.RawInflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(a,o);break;case i.RawInflate.BufferType.BLOCK:this.decodeHuffmanBlock(a,o);break;default:throw new Error("invalid inflate mode")}},i.RawInflate.prototype.decodeHuffmanBlock=function(e,a){var o=this.output,t=this.op;this.currentLitlenTable=e;for(var F,n,c,s,r=o.length-i.RawInflate.MaxCopyLength,f=i.RawInflate.LengthCodeTable,d=i.RawInflate.LengthExtraTable,h=i.RawInflate.DistCodeTable,w=i.RawInflate.DistExtraTable;256!==(F=this.readCodeByTable(e));)if(F<256)t>=r&&(this.op=t,o=this.expandBufferBlock(),t=this.op),o[t++]=F;else for(s=f[n=F-257],d[n]>0&&(s+=this.readBits(d[n])),c=h[F=this.readCodeByTable(a)],w[F]>0&&(c+=this.readBits(w[F])),t>=r&&(this.op=t,o=this.expandBufferBlock(),t=this.op);s--;)o[t]=o[t++-c];for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=t},i.RawInflate.prototype.decodeHuffmanAdaptive=function(e,a){var o=this.output,t=this.op;this.currentLitlenTable=e;for(var F,n,c,s,r=o.length,f=i.RawInflate.LengthCodeTable,d=i.RawInflate.LengthExtraTable,h=i.RawInflate.DistCodeTable,w=i.RawInflate.DistExtraTable;256!==(F=this.readCodeByTable(e));)if(F<256)t>=r&&(r=(o=this.expandBufferAdaptive()).length),o[t++]=F;else for(s=f[n=F-257],d[n]>0&&(s+=this.readBits(d[n])),c=h[F=this.readCodeByTable(a)],w[F]>0&&(c+=this.readBits(w[F])),t+s>r&&(r=(o=this.expandBufferAdaptive()).length);s--;)o[t]=o[t++-c];for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=t},i.RawInflate.prototype.expandBufferBlock=function(e){var a=new Uint8Array(this.op-i.RawInflate.MaxBackwardLength),o=this.op-i.RawInflate.MaxBackwardLength,t=this.output;return a.set(t.subarray(i.RawInflate.MaxBackwardLength,a.length)),this.blocks.push(a),this.totalpos+=a.length,t.set(t.subarray(o,o+i.RawInflate.MaxBackwardLength)),this.op=i.RawInflate.MaxBackwardLength,t},i.RawInflate.prototype.expandBufferAdaptive=function(e){var a,o,i,t=this.input.length/this.ip+1|0,F=this.input,n=this.output;return e&&("number"==typeof e.fixRatio&&(t=e.fixRatio),"number"==typeof e.addRatio&&(t+=e.addRatio)),o=t<2?(i=(F.length-this.ip)/this.currentLitlenTable[2]/2*258|0)<n.length?n.length+i:n.length<<1:n.length*t,(a=new Uint8Array(o)).set(n),this.output=a,this.output},i.RawInflate.prototype.concatBufferBlock=function(){var e,a,o,t,F,n=0,c=this.totalpos+(this.op-i.RawInflate.MaxBackwardLength),s=this.output,r=this.blocks,f=new Uint8Array(c);if(0===r.length)return this.output.subarray(i.RawInflate.MaxBackwardLength,this.op);for(a=0,o=r.length;a<o;++a)for(t=0,F=(e=r[a]).length;t<F;++t)f[n++]=e[t];for(a=i.RawInflate.MaxBackwardLength,o=this.op;a<o;++a)f[n++]=s[a];return this.blocks=[],this.buffer=f,this.buffer},i.RawInflate.prototype.concatBufferDynamic=function(){var e,a=this.op;return this.resize?(e=new Uint8Array(a)).set(this.output.subarray(0,a)):e=this.output.subarray(0,a),this.buffer=e,this.buffer},F=i.Huffman.buildHuffmanTable,i.RawInflateStream=function(e,a,o){this.blocks=[],this.bufferSize=o||ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE,this.totalpos=0,this.ip=void 0===a?0:a,this.bitsbuf=0,this.bitsbuflen=0,this.input=new Uint8Array(e),this.output=new Uint8Array(this.bufferSize),this.op=0,this.bfinal=!1,this.blockLength,this.resize=!1,this.litlenTable,this.distTable,this.sp=0,this.status=i.RawInflateStream.Status.INITIALIZED,this.ip_,this.bitsbuflen_,this.bitsbuf_},i.RawInflateStream.BlockType={UNCOMPRESSED:0,FIXED:1,DYNAMIC:2},i.RawInflateStream.Status={INITIALIZED:0,BLOCK_HEADER_START:1,BLOCK_HEADER_END:2,BLOCK_BODY_START:3,BLOCK_BODY_END:4,DECODE_BLOCK_START:5,DECODE_BLOCK_END:6},i.RawInflateStream.prototype.decompress=function(e,a){var o=!1;for(void 0!==e&&(this.input=e),void 0!==a&&(this.ip=a);!o;)switch(this.status){case i.RawInflateStream.Status.INITIALIZED:case i.RawInflateStream.Status.BLOCK_HEADER_START:this.readBlockHeader()<0&&(o=!0);break;case i.RawInflateStream.Status.BLOCK_HEADER_END:case i.RawInflateStream.Status.BLOCK_BODY_START:switch(this.currentBlockType){case i.RawInflateStream.BlockType.UNCOMPRESSED:this.readUncompressedBlockHeader()<0&&(o=!0);break;case i.RawInflateStream.BlockType.FIXED:this.parseFixedHuffmanBlock()<0&&(o=!0);break;case i.RawInflateStream.BlockType.DYNAMIC:this.parseDynamicHuffmanBlock()<0&&(o=!0)}break;case i.RawInflateStream.Status.BLOCK_BODY_END:case i.RawInflateStream.Status.DECODE_BLOCK_START:switch(this.currentBlockType){case i.RawInflateStream.BlockType.UNCOMPRESSED:this.parseUncompressedBlock()<0&&(o=!0);break;case i.RawInflateStream.BlockType.FIXED:case i.RawInflateStream.BlockType.DYNAMIC:this.decodeHuffman()<0&&(o=!0)}break;case i.RawInflateStream.Status.DECODE_BLOCK_END:this.bfinal?o=!0:this.status=i.RawInflateStream.Status.INITIALIZED}return this.concatBuffer()},i.RawInflateStream.MaxBackwardLength=32768,i.RawInflateStream.MaxCopyLength=258,i.RawInflateStream.Order=new Uint16Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),i.RawInflateStream.LengthCodeTable=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]),i.RawInflateStream.LengthExtraTable=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]),i.RawInflateStream.DistCodeTable=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]),i.RawInflateStream.DistExtraTable=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i.RawInflateStream.FixedLiteralLengthTable=function(){var e,a,o=new Uint8Array(288);for(e=0,a=o.length;e<a;++e)o[e]=e<=143?8:e<=255?9:e<=279?7:8;return F(o)}(),i.RawInflateStream.FixedDistanceTable=function(){var e,a,o=new Uint8Array(30);for(e=0,a=o.length;e<a;++e)o[e]=5;return F(o)}(),i.RawInflateStream.prototype.readBlockHeader=function(){var e;if(this.status=i.RawInflateStream.Status.BLOCK_HEADER_START,this.save_(),(e=this.readBits(3))<0)return this.restore_(),-1;switch(1&e&&(this.bfinal=!0),e>>>=1){case 0:this.currentBlockType=i.RawInflateStream.BlockType.UNCOMPRESSED;break;case 1:this.currentBlockType=i.RawInflateStream.BlockType.FIXED;break;case 2:this.currentBlockType=i.RawInflateStream.BlockType.DYNAMIC;break;default:throw new Error("unknown BTYPE: "+e)}this.status=i.RawInflateStream.Status.BLOCK_HEADER_END},i.RawInflateStream.prototype.readBits=function(e){for(var a,o=this.bitsbuf,i=this.bitsbuflen,t=this.input,F=this.ip;i<e;){if(t.length<=F)return-1;o|=(a=t[F++])<<i,i+=8}return a=o&(1<<e)-1,o>>>=e,i-=e,this.bitsbuf=o,this.bitsbuflen=i,this.ip=F,a},i.RawInflateStream.prototype.readCodeByTable=function(e){for(var a,o,i=this.bitsbuf,t=this.bitsbuflen,F=this.input,n=this.ip,c=e[0],s=e[1];t<s;){if(F.length<=n)return-1;i|=F[n++]<<t,t+=8}if((o=(a=c[i&(1<<s)-1])>>>16)>t)throw new Error("invalid code length: "+o);return this.bitsbuf=i>>o,this.bitsbuflen=t-o,this.ip=n,65535&a},i.RawInflateStream.prototype.readUncompressedBlockHeader=function(){var e,a=this.input,o=this.ip;if(this.status=i.RawInflateStream.Status.BLOCK_BODY_START,o+4>=a.length)return-1;if((e=a[o++]|a[o++]<<8)==~(a[o++]|a[o++]<<8))throw new Error("invalid uncompressed block header: length verify");this.bitsbuf=0,this.bitsbuflen=0,this.ip=o,this.blockLength=e,this.status=i.RawInflateStream.Status.BLOCK_BODY_END},i.RawInflateStream.prototype.parseUncompressedBlock=function(){var e=this.input,a=this.ip,o=this.output,t=this.op,F=this.blockLength;for(this.status=i.RawInflateStream.Status.DECODE_BLOCK_START;F--;){if(t===o.length&&(o=this.expandBuffer({fixRatio:2})),a>=e.length)return this.ip=a,this.op=t,this.blockLength=F+1,-1;o[t++]=e[a++]}return F<0&&(this.status=i.RawInflateStream.Status.DECODE_BLOCK_END),this.ip=a,this.op=t,0},i.RawInflateStream.prototype.parseFixedHuffmanBlock=function(){return this.status=i.RawInflateStream.Status.BLOCK_BODY_START,this.litlenTable=i.RawInflateStream.FixedLiteralLengthTable,this.distTable=i.RawInflateStream.FixedDistanceTable,this.status=i.RawInflateStream.Status.BLOCK_BODY_END,0},i.RawInflateStream.prototype.save_=function(){this.ip_=this.ip,this.bitsbuflen_=this.bitsbuflen,this.bitsbuf_=this.bitsbuf},i.RawInflateStream.prototype.restore_=function(){this.ip=this.ip_,this.bitsbuflen=this.bitsbuflen_,this.bitsbuf=this.bitsbuf_},i.RawInflateStream.prototype.parseDynamicHuffmanBlock=function(){var e,a,o,t,n=new Uint8Array(i.RawInflateStream.Order.length);if(this.status=i.RawInflateStream.Status.BLOCK_BODY_START,this.save_(),e=this.readBits(5)+257,a=this.readBits(5)+1,o=this.readBits(4)+4,e<0||a<0||o<0)return this.restore_(),-1;try{(function(){var c,s,r,f,d,h,w=0;for(d=0;d<o;++d){if((c=this.readBits(3))<0)throw new Error("not enough input");n[i.RawInflateStream.Order[d]]=c}for(t=F(n),f=new Uint8Array(e+a),d=0,h=e+a;d<h;){if((s=this.readCodeByTable(t))<0)throw new Error("not enough input");switch(s){case 16:if((c=this.readBits(2))<0)throw new Error("not enough input");for(r=3+c;r--;)f[d++]=w;break;case 17:if((c=this.readBits(3))<0)throw new Error("not enough input");for(r=3+c;r--;)f[d++]=0;w=0;break;case 18:if((c=this.readBits(7))<0)throw new Error("not enough input");for(r=11+c;r--;)f[d++]=0;w=0;break;default:f[d++]=s,w=s}}this.litlenTable=F(f.subarray(0,e)),this.distTable=F(f.subarray(e))}).call(this)}catch(e){return this.restore_(),-1}return this.status=i.RawInflateStream.Status.BLOCK_BODY_END,0},i.RawInflateStream.prototype.decodeHuffman=function(){var e,a,o,t,F,n=this.output,c=this.op,s=this.litlenTable,r=this.distTable,f=n.length;for(this.status=i.RawInflateStream.Status.DECODE_BLOCK_START;;){if(this.save_(),(e=this.readCodeByTable(s))<0)return this.op=c,this.restore_(),-1;if(256===e)break;if(e<256)c===f&&(f=(n=this.expandBuffer()).length),n[c++]=e;else{if(a=e-257,t=i.RawInflateStream.LengthCodeTable[a],i.RawInflateStream.LengthExtraTable[a]>0){if((F=this.readBits(i.RawInflateStream.LengthExtraTable[a]))<0)return this.op=c,this.restore_(),-1;t+=F}if((e=this.readCodeByTable(r))<0)return this.op=c,this.restore_(),-1;if(o=i.RawInflateStream.DistCodeTable[e],i.RawInflateStream.DistExtraTable[e]>0){if((F=this.readBits(i.RawInflateStream.DistExtraTable[e]))<0)return this.op=c,this.restore_(),-1;o+=F}for(c+t>=f&&(f=(n=this.expandBuffer()).length);t--;)n[c]=n[c++-o];if(this.ip===this.input.length)return this.op=c,-1}}for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=c,this.status=i.RawInflateStream.Status.DECODE_BLOCK_END},i.RawInflateStream.prototype.expandBuffer=function(e){var a,o,i,t=this.input.length/this.ip+1|0,F=this.input,n=this.output;return e&&("number"==typeof e.fixRatio&&(t=e.fixRatio),"number"==typeof e.addRatio&&(t+=e.addRatio)),o=t<2?(i=(F.length-this.ip)/this.litlenTable[2]/2*258|0)<n.length?n.length+i:n.length<<1:n.length*t,(a=new Uint8Array(o)).set(n),this.output=a,this.output},i.RawInflateStream.prototype.concatBuffer=function(){var e,a,o=this.op;return e=this.resize?new Uint8Array(this.output.subarray(this.sp,o)):this.output.subarray(this.sp,o),this.sp=o,o>i.RawInflateStream.MaxBackwardLength+this.bufferSize&&(this.op=this.sp=i.RawInflateStream.MaxBackwardLength,a=this.output,this.output=new Uint8Array(this.bufferSize+i.RawInflateStream.MaxBackwardLength),this.output.set(a.subarray(o-i.RawInflateStream.MaxBackwardLength,o))),e},i.Inflate=function(e,a){var o,t;if(this.input=e,this.ip=0,this.rawinflate,this.verify,!a&&(a={})||(a.index&&(this.ip=a.index),a.verify&&(this.verify=a.verify)),o=e[this.ip++],t=e[this.ip++],(15&o)!==i.CompressionMethod.DEFLATE)throw new Error("unsupported compression method");if(this.method=i.CompressionMethod.DEFLATE,((o<<8)+t)%31!=0)throw new Error("invalid fcheck flag:"+((o<<8)+t)%31);if(32&t)throw new Error("fdict flag is not supported");this.rawinflate=new i.RawInflate(e,{index:this.ip,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})},i.Inflate.BufferType=i.RawInflate.BufferType,i.Inflate.prototype.decompress=function(){var e,a=this.input;if(e=this.rawinflate.decompress(),this.ip=this.rawinflate.ip,this.verify&&(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0!==i.Adler32(e))throw new Error("invalid adler-32 checksum");return e},i.InflateStream=function(e){this.input=void 0===e?new Uint8Array:e,this.ip=0,this.rawinflate=new i.RawInflateStream(this.input,this.ip),this.method,this.output=this.rawinflate.output},i.InflateStream.prototype.decompress=function(e){var a;if(void 0!==e){var o=new Uint8Array(this.input.length+e.length);o.set(this.input,0),o.set(e,this.input.length),this.input=o}return void 0===this.method&&this.readHeader()<0?new Uint8Array:(a=this.rawinflate.decompress(this.input,this.ip),0!==this.rawinflate.ip&&(this.input=this.input.subarray(this.rawinflate.ip),this.ip=0),a)},i.InflateStream.prototype.readHeader=function(){var e=this.ip,a=this.input,o=a[e++],t=a[e++];if(void 0===o||void 0===t)return-1;if((15&o)!==i.CompressionMethod.DEFLATE)throw new Error("unsupported compression method");if(this.method=i.CompressionMethod.DEFLATE,((o<<8)+t)%31!=0)throw new Error("invalid fcheck flag:"+((o<<8)+t)%31);if(32&t)throw new Error("fdict flag is not supported");this.ip=e},i.Gunzip=function(e,a){this.input=e,this.ip=0,this.member=[],this.decompressed=!1},i.Gunzip.prototype.getMembers=function(){return this.decompressed||this.decompress(),this.member.slice()},i.Gunzip.prototype.decompress=function(){for(var e=this.input.length;this.ip<e;)this.decodeMember();return this.decompressed=!0,this.concatMember()},i.Gunzip.prototype.decodeMember=function(){var e,a,o,t,F,n,c,s,r,f=new i.GunzipMember,d=this.input,h=this.ip;if(f.id1=d[h++],f.id2=d[h++],31!==f.id1||139!==f.id2)throw new Error("invalid file signature:"+f.id1+","+f.id2);if(f.cm=d[h++],8!==f.cm)throw new Error("unknown compression method: "+f.cm);if(f.flg=d[h++],s=d[h++]|d[h++]<<8|d[h++]<<16|d[h++]<<24,f.mtime=new Date(1e3*s),f.xfl=d[h++],f.os=d[h++],(f.flg&i.Gzip.FlagsMask.FEXTRA)>0&&(f.xlen=d[h++]|d[h++]<<8,h=this.decodeSubField(h,f.xlen)),(f.flg&i.Gzip.FlagsMask.FNAME)>0){for(c=[],n=0;(F=d[h++])>0;)c[n++]=String.fromCharCode(F);f.name=c.join("")}if((f.flg&i.Gzip.FlagsMask.FCOMMENT)>0){for(c=[],n=0;(F=d[h++])>0;)c[n++]=String.fromCharCode(F);f.comment=c.join("")}if((f.flg&i.Gzip.FlagsMask.FHCRC)>0&&(f.crc16=65535&i.CRC32.calc(d,0,h),f.crc16!==(d[h++]|d[h++]<<8)))throw new Error("invalid header crc16");if(e=d[d.length-4]|d[d.length-3]<<8|d[d.length-2]<<16|d[d.length-1]<<24,d.length-h-4-4<512*e&&(t=e),a=new i.RawInflate(d,{index:h,bufferSize:t}),f.data=o=a.decompress(),h=a.ip,f.crc32=r=(d[h++]|d[h++]<<8|d[h++]<<16|d[h++]<<24)>>>0,i.CRC32.calc(o)!==r)throw new Error("invalid CRC-32 checksum: 0x"+i.CRC32.calc(o).toString(16)+" / 0x"+r.toString(16));if(f.isize=e=(d[h++]|d[h++]<<8|d[h++]<<16|d[h++]<<24)>>>0,(4294967295&o.length)!==e)throw new Error("invalid input size: "+(4294967295&o.length)+" / "+e);this.member.push(f),this.ip=h},i.Gunzip.prototype.decodeSubField=function(e,a){return e+a},i.Gunzip.prototype.concatMember=function(){var e,a,o,i=this.member,t=0,F=0;for(e=0,a=i.length;e<a;++e)F+=i[e].data.length;for(o=new Uint8Array(F),e=0;e<a;++e)o.set(i[e].data,t),t+=i[e].data.length;return o},i.GunzipMember=function(){this.id1,this.id2,this.cm,this.flg,this.mtime,this.xfl,this.os,this.crc16,this.xlen,this.crc32,this.isize,this.name,this.comment,this.data},i.GunzipMember.prototype.getName=function(){return this.name},i.GunzipMember.prototype.getData=function(){return this.data},i.GunzipMember.prototype.getMtime=function(){return this.mtime},i.Gzip=function(e,a){this.input=e,this.ip=0,this.output,this.op=0,this.flags={},this.filename,this.comment,this.deflateOptions,a&&(a.flags&&(this.flags=a.flags),"string"==typeof a.filename&&(this.filename=a.filename),"string"==typeof a.comment&&(this.comment=a.comment),a.deflateOptions&&(this.deflateOptions=a.deflateOptions)),this.deflateOptions||(this.deflateOptions={})},i.Gzip.DefaultBufferSize=32768,i.Gzip.prototype.compress=function(){var e,a,o,t,F,n,c,s,r=new Uint8Array(i.Gzip.DefaultBufferSize),f=0,d=this.input,h=this.ip,w=this.filename,l=this.comment;if(r[f++]=31,r[f++]=139,r[f++]=8,e=0,this.flags.fname&&(e|=i.Gzip.FlagsMask.FNAME),this.flags.fcomment&&(e|=i.Gzip.FlagsMask.FCOMMENT),this.flags.fhcrc&&(e|=i.Gzip.FlagsMask.FHCRC),r[f++]=e,a=(Date.now?Date.now():+new Date)/1e3|0,r[f++]=255&a,r[f++]=a>>>8&255,r[f++]=a>>>16&255,r[f++]=a>>>24&255,r[f++]=0,r[f++]=i.Gzip.OperatingSystem.UNKNOWN,void 0!==this.flags.fname){for(c=0,s=w.length;c<s;++c)(n=w.charCodeAt(c))>255&&(r[f++]=n>>>8&255),r[f++]=255&n;r[f++]=0}if(this.flags.comment){for(c=0,s=l.length;c<s;++c)(n=l.charCodeAt(c))>255&&(r[f++]=n>>>8&255),r[f++]=255&n;r[f++]=0}return this.flags.fhcrc&&(o=65535&i.CRC32.calc(r,0,f),r[f++]=255&o,r[f++]=o>>>8&255),this.deflateOptions.outputBuffer=r,this.deflateOptions.outputIndex=f,r=(F=new i.RawDeflate(d,this.deflateOptions)).compress(),(f=F.op)+8>r.buffer.byteLength?(this.output=new Uint8Array(f+8),this.output.set(new Uint8Array(r.buffer)),r=this.output):r=new Uint8Array(r.buffer),t=i.CRC32.calc(d),r[f++]=255&t,r[f++]=t>>>8&255,r[f++]=t>>>16&255,r[f++]=t>>>24&255,s=d.length,r[f++]=255&s,r[f++]=s>>>8&255,r[f++]=s>>>16&255,r[f++]=s>>>24&255,this.ip=h,f<r.length&&(this.output=r=r.subarray(0,f)),r},i.Gzip.OperatingSystem={FAT:0,AMIGA:1,VMS:2,UNIX:3,VM_CMS:4,ATARI_TOS:5,HPFS:6,MACINTOSH:7,Z_SYSTEM:8,CP_M:9,TOPS_20:10,NTFS:11,QDOS:12,ACORN_RISCOS:13,UNKNOWN:255},i.Gzip.FlagsMask={FTEXT:1,FHCRC:2,FEXTRA:4,FNAME:8,FCOMMENT:16},i.Heap=function(e){this.buffer=new Uint16Array(2*e),this.length=0},i.Heap.prototype.getParent=function(e){return 2*((e-2)/4|0)},i.Heap.prototype.getChild=function(e){return 2*e+2},i.Heap.prototype.push=function(e,a){var o,i,t,F=this.buffer;for(o=this.length,F[this.length++]=a,F[this.length++]=e;o>0&&(i=this.getParent(o),F[o]>F[i]);)t=F[o],F[o]=F[i],F[i]=t,t=F[o+1],F[o+1]=F[i+1],F[i+1]=t,o=i;return this.length},i.Heap.prototype.pop=function(){var e,a,o,i,t,F=this.buffer;for(a=F[0],e=F[1],this.length-=2,F[0]=F[this.length],F[1]=F[this.length+1],t=0;!((i=this.getChild(t))>=this.length)&&(i+2<this.length&&F[i+2]>F[i]&&(i+=2),F[i]>F[t]);)o=F[t],F[t]=F[i],F[i]=o,o=F[t+1],F[t+1]=F[i+1],F[i+1]=o,t=i;return{index:e,value:a,length:this.length}},i.RawDeflate=function(e,a){this.compressionType=i.RawDeflate.CompressionType.DYNAMIC,this.lazy=0,this.freqsLitLen,this.freqsDist,this.input=e instanceof Array?new Uint8Array(e):e,this.output,this.op=0,a&&(a.lazy&&(this.lazy=a.lazy),"number"==typeof a.compressionType&&(this.compressionType=a.compressionType),a.outputBuffer&&(this.output=a.outputBuffer instanceof Array?new Uint8Array(a.outputBuffer):a.outputBuffer),"number"==typeof a.outputIndex&&(this.op=a.outputIndex)),this.output||(this.output=new Uint8Array(32768))},i.RawDeflate.CompressionType={NONE:0,FIXED:1,DYNAMIC:2,RESERVED:3},i.RawDeflate.Lz77MinLength=3,i.RawDeflate.Lz77MaxLength=258,i.RawDeflate.WindowSize=32768,i.RawDeflate.MaxCodeLength=16,i.RawDeflate.HUFMAX=286,i.RawDeflate.FixedHuffmanTable=function(){var e,a=[];for(e=0;e<288;e++)switch(!0){case e<=143:a.push([e+48,8]);break;case e<=255:a.push([e-144+400,9]);break;case e<=279:a.push([e-256+0,7]);break;case e<=287:a.push([e-280+192,8]);break;default:throw"invalid literal: "+e}return a}(),i.RawDeflate.prototype.compress=function(){var e,a,o,t=this.input;switch(this.compressionType){case i.RawDeflate.CompressionType.NONE:for(a=0,o=t.length;a<o;)a+=(e=t.subarray(a,a+65535)).length,this.makeNocompressBlock(e,a===o);break;case i.RawDeflate.CompressionType.FIXED:this.output=this.makeFixedHuffmanBlock(t,!0),this.op=this.output.length;break;case i.RawDeflate.CompressionType.DYNAMIC:this.output=this.makeDynamicHuffmanBlock(t,!0),this.op=this.output.length;break;default:throw"invalid compression type"}return this.output},i.RawDeflate.prototype.makeNocompressBlock=function(e,a){var o,t,F,n,c=this.output,s=this.op;for(c=new Uint8Array(this.output.buffer);c.length<=s+e.length+5;)c=new Uint8Array(c.length<<1);return c.set(this.output),o=a?1:0,t=i.RawDeflate.CompressionType.NONE,c[s++]=o|t<<1,n=65536+~(F=e.length)&65535,c[s++]=255&F,c[s++]=F>>>8&255,c[s++]=255&n,c[s++]=n>>>8&255,c.set(e,s),s+=e.length,c=c.subarray(0,s),this.op=s,this.output=c,c},i.RawDeflate.prototype.makeFixedHuffmanBlock=function(e,a){var o,t,F,n=new i.BitStream(new Uint8Array(this.output.buffer),this.op);return o=a?1:0,t=i.RawDeflate.CompressionType.FIXED,n.writeBits(o,1,!0),n.writeBits(t,2,!0),F=this.lz77(e),this.fixedHuffman(F,n),n.finish()},i.RawDeflate.prototype.makeDynamicHuffmanBlock=function(e,a){var o,t,F,n,c,s,r,f,d,h,w,l,p,u,m,b,N,C=new i.BitStream(new Uint8Array(this.output.buffer),this.op),z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],I=new Array(19);for(o=a?1:0,t=i.RawDeflate.CompressionType.DYNAMIC,C.writeBits(o,1,!0),C.writeBits(t,2,!0),F=this.lz77(e),r=this.getLengths_(this.freqsLitLen,15),f=this.getCodesFromLengths_(r),d=this.getLengths_(this.freqsDist,7),h=this.getCodesFromLengths_(d),n=286;n>257&&0===r[n-1];n--);for(c=30;c>1&&0===d[c-1];c--);for(w=this.getTreeSymbols_(n,r,c,d),l=this.getLengths_(w.freqs,7),b=0;b<19;b++)I[b]=l[z[b]];for(s=19;s>4&&0===I[s-1];s--);for(p=this.getCodesFromLengths_(l),C.writeBits(n-257,5,!0),C.writeBits(c-1,5,!0),C.writeBits(s-4,4,!0),b=0;b<s;b++)C.writeBits(I[b],3,!0);for(b=0,N=w.codes.length;b<N;b++)if(u=w.codes[b],C.writeBits(p[u],l[u],!0),u>=16){switch(b++,u){case 16:m=2;break;case 17:m=3;break;case 18:m=7;break;default:throw"invalid code: "+u}C.writeBits(w.codes[b],m,!0)}return this.dynamicHuffman(F,[f,r],[h,d],C),C.finish()},i.RawDeflate.prototype.dynamicHuffman=function(e,a,o,i){var t,F,n,c,s,r,f,d;for(s=a[0],r=a[1],f=o[0],d=o[1],t=0,F=e.length;t<F;++t)if(n=e[t],i.writeBits(s[n],r[n],!0),n>256)i.writeBits(e[++t],e[++t],!0),c=e[++t],i.writeBits(f[c],d[c],!0),i.writeBits(e[++t],e[++t],!0);else if(256===n)break;return i},i.RawDeflate.prototype.fixedHuffman=function(e,a){var o,t,F;for(o=0,t=e.length;o<t;o++)if(F=e[o],i.BitStream.prototype.writeBits.apply(a,i.RawDeflate.FixedHuffmanTable[F]),F>256)a.writeBits(e[++o],e[++o],!0),a.writeBits(e[++o],5),a.writeBits(e[++o],e[++o],!0);else if(256===F)break;return a},i.RawDeflate.Lz77Match=function(e,a){this.length=e,this.backwardDistance=a},i.RawDeflate.Lz77Match.LengthCodeTable=(t=function(){var e,a,o=[];for(e=3;e<=258;e++)a=i(e),o[e]=a[2]<<24|a[1]<<16|a[0];function i(e){switch(!0){case 3===e:return[257,e-3,0];case 4===e:return[258,e-4,0];case 5===e:return[259,e-5,0];case 6===e:return[260,e-6,0];case 7===e:return[261,e-7,0];case 8===e:return[262,e-8,0];case 9===e:return[263,e-9,0];case 10===e:return[264,e-10,0];case e<=12:return[265,e-11,1];case e<=14:return[266,e-13,1];case e<=16:return[267,e-15,1];case e<=18:return[268,e-17,1];case e<=22:return[269,e-19,2];case e<=26:return[270,e-23,2];case e<=30:return[271,e-27,2];case e<=34:return[272,e-31,2];case e<=42:return[273,e-35,3];case e<=50:return[274,e-43,3];case e<=58:return[275,e-51,3];case e<=66:return[276,e-59,3];case e<=82:return[277,e-67,4];case e<=98:return[278,e-83,4];case e<=114:return[279,e-99,4];case e<=130:return[280,e-115,4];case e<=162:return[281,e-131,5];case e<=194:return[282,e-163,5];case e<=226:return[283,e-195,5];case e<=257:return[284,e-227,5];case 258===e:return[285,e-258,0];default:throw"invalid length: "+e}}return o}(),new Uint32Array(t)),i.RawDeflate.Lz77Match.prototype.getDistanceCode_=function(e){var a;switch(!0){case 1===e:a=[0,e-1,0];break;case 2===e:a=[1,e-2,0];break;case 3===e:a=[2,e-3,0];break;case 4===e:a=[3,e-4,0];break;case e<=6:a=[4,e-5,1];break;case e<=8:a=[5,e-7,1];break;case e<=12:a=[6,e-9,2];break;case e<=16:a=[7,e-13,2];break;case e<=24:a=[8,e-17,3];break;case e<=32:a=[9,e-25,3];break;case e<=48:a=[10,e-33,4];break;case e<=64:a=[11,e-49,4];break;case e<=96:a=[12,e-65,5];break;case e<=128:a=[13,e-97,5];break;case e<=192:a=[14,e-129,6];break;case e<=256:a=[15,e-193,6];break;case e<=384:a=[16,e-257,7];break;case e<=512:a=[17,e-385,7];break;case e<=768:a=[18,e-513,8];break;case e<=1024:a=[19,e-769,8];break;case e<=1536:a=[20,e-1025,9];break;case e<=2048:a=[21,e-1537,9];break;case e<=3072:a=[22,e-2049,10];break;case e<=4096:a=[23,e-3073,10];break;case e<=6144:a=[24,e-4097,11];break;case e<=8192:a=[25,e-6145,11];break;case e<=12288:a=[26,e-8193,12];break;case e<=16384:a=[27,e-12289,12];break;case e<=24576:a=[28,e-16385,13];break;case e<=32768:a=[29,e-24577,13];break;default:throw"invalid distance"}return a},i.RawDeflate.Lz77Match.prototype.toLz77Array=function(){var e,a=this.length,o=this.backwardDistance,t=[],F=0;return e=i.RawDeflate.Lz77Match.LengthCodeTable[a],t[F++]=65535&e,t[F++]=e>>16&255,t[F++]=e>>24,e=this.getDistanceCode_(o),t[F++]=e[0],t[F++]=e[1],t[F++]=e[2],t},i.RawDeflate.prototype.lz77=function(e){var a,o,t,F,n,c,s,r,f,d={},h=i.RawDeflate.WindowSize,w=new Uint16Array(2*e.length),l=0,p=0,u=new Uint32Array(286),m=new Uint32Array(30),b=this.lazy;function N(e,a){var o,i,t=e.toLz77Array();for(o=0,i=t.length;o<i;++o)w[l++]=t[o];u[t[0]]++,m[t[3]]++,p=e.length+a-1,r=null}for(u[256]=1,a=0,o=e.length;a<o;++a){for(n=0,t=0,F=i.RawDeflate.Lz77MinLength;t<F&&a+t!==o;++t)n=n<<8|e[a+t];if(void 0===d[n]&&(d[n]=[]),c=d[n],p-- >0)c.push(a);else{for(;c.length>0&&a-c[0]>h;)c.shift();if(a+i.RawDeflate.Lz77MinLength>=o){for(r&&N(r,-1),t=0,F=o-a;t<F;++t)f=e[a+t],w[l++]=f,++u[f];break}c.length>0?(s=this.searchLongestMatch_(e,a,c),r?r.length<s.length?(f=e[a-1],w[l++]=f,++u[f],N(s,0)):N(r,-1):s.length<b?r=s:N(s,0)):r?N(r,-1):(f=e[a],w[l++]=f,++u[f]),c.push(a)}}return w[l++]=256,u[256]++,this.freqsLitLen=u,this.freqsDist=m,w.subarray(0,l)},i.RawDeflate.prototype.searchLongestMatch_=function(e,a,o){var t,F,n,c,s,r,f=0,d=e.length;e:for(c=0,r=o.length;c<r;c++){if(t=o[r-c-1],n=i.RawDeflate.Lz77MinLength,f>i.RawDeflate.Lz77MinLength){for(s=f;s>i.RawDeflate.Lz77MinLength;s--)if(e[t+s-1]!==e[a+s-1])continue e;n=f}for(;n<i.RawDeflate.Lz77MaxLength&&a+n<d&&e[t+n]===e[a+n];)++n;if(n>f&&(F=t,f=n),n===i.RawDeflate.Lz77MaxLength)break}return new i.RawDeflate.Lz77Match(f,a-F)},i.RawDeflate.prototype.getTreeSymbols_=function(e,a,o,i){var t,F,n,c,s,r,f=new Uint32Array(e+o),d=new Uint32Array(316),h=new Uint8Array(19);for(F=0,t=0;t<e;t++)f[F++]=a[t];for(t=0;t<o;t++)f[F++]=i[t];for(s=0,t=0,c=f.length;t<c;t+=F){for(F=1;t+F<c&&f[t+F]===f[t];++F);if(n=F,0===f[t])if(n<3)for(;n-- >0;)d[s++]=0,h[0]++;else for(;n>0;)(r=n<138?n:138)>n-3&&r<n&&(r=n-3),r<=10?(d[s++]=17,d[s++]=r-3,h[17]++):(d[s++]=18,d[s++]=r-11,h[18]++),n-=r;else if(d[s++]=f[t],h[f[t]]++,--n<3)for(;n-- >0;)d[s++]=f[t],h[f[t]]++;else for(;n>0;)(r=n<6?n:6)>n-3&&r<n&&(r=n-3),d[s++]=16,d[s++]=r-3,h[16]++,n-=r}return{codes:d.subarray(0,s),freqs:h}},i.RawDeflate.prototype.getLengths_=function(e,a){var o,t,F,n,c,s=e.length,r=new i.Heap(2*i.RawDeflate.HUFMAX),f=new Uint8Array(s);for(n=0;n<s;++n)e[n]>0&&r.push(n,e[n]);if(o=new Array(r.length/2),t=new Uint32Array(r.length/2),1===o.length)return f[r.pop().index]=1,f;for(n=0,c=r.length/2;n<c;++n)o[n]=r.pop(),t[n]=o[n].value;for(F=this.reversePackageMerge_(t,t.length,a),n=0,c=o.length;n<c;++n)f[o[n].index]=F[n];return f},i.RawDeflate.prototype.reversePackageMerge_=function(e,a,o){var i,t,F,n,c,s=new Uint16Array(o),r=new Uint8Array(o),f=new Uint8Array(a),d=new Array(o),h=new Array(o),w=new Array(o),l=(1<<o)-a,p=1<<o-1;function u(e){var o=h[e][w[e]];o===a?(u(e+1),u(e+1)):--f[o],++w[e]}for(s[o-1]=a,t=0;t<o;++t)l<p?r[t]=0:(r[t]=1,l-=p),l<<=1,s[o-2-t]=(s[o-1-t]/2|0)+a;for(s[0]=r[0],d[0]=new Array(s[0]),h[0]=new Array(s[0]),t=1;t<o;++t)s[t]>2*s[t-1]+r[t]&&(s[t]=2*s[t-1]+r[t]),d[t]=new Array(s[t]),h[t]=new Array(s[t]);for(i=0;i<a;++i)f[i]=o;for(F=0;F<s[o-1];++F)d[o-1][F]=e[F],h[o-1][F]=F;for(i=0;i<o;++i)w[i]=0;for(1===r[o-1]&&(--f[0],++w[o-1]),t=o-2;t>=0;--t){for(i=0,n=0,c=w[t+1],F=0;F<s[t];F++)(n=d[t+1][c]+d[t+1][c+1])>e[i]?(d[t][F]=n,h[t][F]=a,c+=2):(d[t][F]=e[i],h[t][F]=i,++i);w[t]=0,1===r[t]&&u(t)}return f},i.RawDeflate.prototype.getCodesFromLengths_=function(e){var a,o,t,F,n=new Uint16Array(e.length),c=[],s=[],r=0;for(a=0,o=e.length;a<o;a++)c[e[a]]=1+(0|c[e[a]]);for(a=1,o=i.RawDeflate.MaxCodeLength;a<=o;a++)s[a]=r,r+=0|c[a],r<<=1;for(a=0,o=e.length;a<o;a++)for(r=s[e[a]],s[e[a]]+=1,n[a]=0,t=0,F=e[a];t<F;t++)n[a]=n[a]<<1|1&r,r>>>=1;return n},i.Unzip=function(e,a){a=a||{},this.input=e instanceof Array?new Uint8Array(e):e,this.ip=0,this.eocdrOffset,this.numberOfThisDisk,this.startDisk,this.totalEntriesThisDisk,this.totalEntries,this.centralDirectorySize,this.centralDirectoryOffset,this.commentLength,this.comment,this.fileHeaderList,this.filenameToIndex,this.verify=a.verify||!1,this.password=a.password},i.Unzip.CompressionMethod=i.Zip.CompressionMethod,i.Unzip.FileHeaderSignature=i.Zip.FileHeaderSignature,i.Unzip.LocalFileHeaderSignature=i.Zip.LocalFileHeaderSignature,i.Unzip.CentralDirectorySignature=i.Zip.CentralDirectorySignature,i.Unzip.FileHeader=function(e,a){this.input=e,this.offset=a,this.length,this.version,this.os,this.needVersion,this.flags,this.compression,this.time,this.date,this.crc32,this.compressedSize,this.plainSize,this.fileNameLength,this.extraFieldLength,this.fileCommentLength,this.diskNumberStart,this.internalFileAttributes,this.externalFileAttributes,this.relativeOffset,this.filename,this.extraField,this.comment},i.Unzip.FileHeader.prototype.parse=function(){var e=this.input,a=this.offset;if(e[a++]!==i.Unzip.FileHeaderSignature[0]||e[a++]!==i.Unzip.FileHeaderSignature[1]||e[a++]!==i.Unzip.FileHeaderSignature[2]||e[a++]!==i.Unzip.FileHeaderSignature[3])throw new Error("invalid file header signature");this.version=e[a++],this.os=e[a++],this.needVersion=e[a++]|e[a++]<<8,this.flags=e[a++]|e[a++]<<8,this.compression=e[a++]|e[a++]<<8,this.time=e[a++]|e[a++]<<8,this.date=e[a++]|e[a++]<<8,this.crc32=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.compressedSize=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.plainSize=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.fileNameLength=e[a++]|e[a++]<<8,this.extraFieldLength=e[a++]|e[a++]<<8,this.fileCommentLength=e[a++]|e[a++]<<8,this.diskNumberStart=e[a++]|e[a++]<<8,this.internalFileAttributes=e[a++]|e[a++]<<8,this.externalFileAttributes=e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24,this.relativeOffset=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.filename=String.fromCharCode.apply(null,e.subarray(a,a+=this.fileNameLength)),this.extraField=e.subarray(a,a+=this.extraFieldLength),this.comment=e.subarray(a,a+this.fileCommentLength),this.length=a-this.offset},i.Unzip.LocalFileHeader=function(e,a){this.input=e,this.offset=a,this.length,this.needVersion,this.flags,this.compression,this.time,this.date,this.crc32,this.compressedSize,this.plainSize,this.fileNameLength,this.extraFieldLength,this.filename,this.extraField},i.Unzip.LocalFileHeader.Flags=i.Zip.Flags,i.Unzip.LocalFileHeader.prototype.parse=function(){var e=this.input,a=this.offset;if(e[a++]!==i.Unzip.LocalFileHeaderSignature[0]||e[a++]!==i.Unzip.LocalFileHeaderSignature[1]||e[a++]!==i.Unzip.LocalFileHeaderSignature[2]||e[a++]!==i.Unzip.LocalFileHeaderSignature[3])throw new Error("invalid local file header signature");this.needVersion=e[a++]|e[a++]<<8,this.flags=e[a++]|e[a++]<<8,this.compression=e[a++]|e[a++]<<8,this.time=e[a++]|e[a++]<<8,this.date=e[a++]|e[a++]<<8,this.crc32=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.compressedSize=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.plainSize=(e[a++]|e[a++]<<8|e[a++]<<16|e[a++]<<24)>>>0,this.fileNameLength=e[a++]|e[a++]<<8,this.extraFieldLength=e[a++]|e[a++]<<8,this.filename=String.fromCharCode.apply(null,e.subarray(a,a+=this.fileNameLength)),this.extraField=e.subarray(a,a+=this.extraFieldLength),this.length=a-this.offset},i.Unzip.prototype.searchEndOfCentralDirectoryRecord=function(){var e,a=this.input;for(e=a.length-12;e>0;--e)if(a[e]===i.Unzip.CentralDirectorySignature[0]&&a[e+1]===i.Unzip.CentralDirectorySignature[1]&&a[e+2]===i.Unzip.CentralDirectorySignature[2]&&a[e+3]===i.Unzip.CentralDirectorySignature[3])return void(this.eocdrOffset=e);throw new Error("End of Central Directory Record not found")},i.Unzip.prototype.parseEndOfCentralDirectoryRecord=function(){var e,a=this.input;if(this.eocdrOffset||this.searchEndOfCentralDirectoryRecord(),e=this.eocdrOffset,a[e++]!==i.Unzip.CentralDirectorySignature[0]||a[e++]!==i.Unzip.CentralDirectorySignature[1]||a[e++]!==i.Unzip.CentralDirectorySignature[2]||a[e++]!==i.Unzip.CentralDirectorySignature[3])throw new Error("invalid signature");this.numberOfThisDisk=a[e++]|a[e++]<<8,this.startDisk=a[e++]|a[e++]<<8,this.totalEntriesThisDisk=a[e++]|a[e++]<<8,this.totalEntries=a[e++]|a[e++]<<8,this.centralDirectorySize=(a[e++]|a[e++]<<8|a[e++]<<16|a[e++]<<24)>>>0,this.centralDirectoryOffset=(a[e++]|a[e++]<<8|a[e++]<<16|a[e++]<<24)>>>0,this.commentLength=a[e++]|a[e++]<<8,this.comment=a.subarray(e,e+this.commentLength)},i.Unzip.prototype.parseFileHeader=function(){var e,a,o,t,F=[],n={};if(!this.fileHeaderList){for(void 0===this.centralDirectoryOffset&&this.parseEndOfCentralDirectoryRecord(),e=this.centralDirectoryOffset,o=0,t=this.totalEntries;o<t;++o)(a=new i.Unzip.FileHeader(this.input,e)).parse(),e+=a.length,F[o]=a,n[a.filename]=o;if(this.centralDirectorySize<e-this.centralDirectoryOffset)throw new Error("invalid file header size");this.fileHeaderList=F,this.filenameToIndex=n}},i.Unzip.prototype.getFileData=function(e,a){a=a||{};var o,t,F,n,c,s,r,f,d=this.input,h=this.fileHeaderList;if(h||this.parseFileHeader(),void 0===h[e])throw new Error("wrong index");if(t=h[e].relativeOffset,(o=new i.Unzip.LocalFileHeader(this.input,t)).parse(),t+=o.length,F=o.compressedSize,o.flags&i.Unzip.LocalFileHeader.Flags.ENCRYPT){if(!a.password&&!this.password)throw new Error("please set password");for(s=this.createDecryptionKey(a.password||this.password),r=t,f=t+12;r<f;++r)this.decode(s,d[r]);for(r=t+=12,f=t+(F-=12);r<f;++r)d[r]=this.decode(s,d[r])}switch(o.compression){case i.Unzip.CompressionMethod.STORE:n=this.input.subarray(t,t+F);break;case i.Unzip.CompressionMethod.DEFLATE:n=new i.RawInflate(this.input,{index:t,bufferSize:o.plainSize}).decompress();break;default:throw new Error("unknown compression type")}if(this.verify&&(c=i.CRC32.calc(n),o.crc32!==c))throw new Error("wrong crc: file=0x"+o.crc32.toString(16)+", data=0x"+c.toString(16));return n},i.Unzip.prototype.getFilenames=function(){var e,a,o,i=[];for(this.fileHeaderList||this.parseFileHeader(),e=0,a=(o=this.fileHeaderList).length;e<a;++e)i[e]=o[e].filename;return i},i.Unzip.prototype.decompress=function(e,a){var o;if(this.filenameToIndex||this.parseFileHeader(),void 0===(o=this.filenameToIndex[e]))throw new Error(e+" not found");return this.getFileData(o,a)},i.Unzip.prototype.setPassword=function(e){this.password=e},i.Unzip.prototype.decode=function(e,a){return a^=this.getByte(e),this.updateKeys(e,a),a},i.Unzip.prototype.updateKeys=i.Zip.prototype.updateKeys,i.Unzip.prototype.createDecryptionKey=i.Zip.prototype.createEncryptionKey,i.Unzip.prototype.getByte=i.Zip.prototype.getByte,i.Util.stringToByteArray=function(e){var a,o,i=e.split("");for(a=0,o=i.length;a<o;a++)i[a]=(255&i[a].charCodeAt(0))>>>0;return i},i.Adler32=function(e){return"string"==typeof e&&(e=i.Util.stringToByteArray(e)),i.Adler32.update(1,e)},i.Adler32.update=function(e,a){for(var o,t=65535&e,F=e>>>16&65535,n=a.length,c=0;n>0;){n-=o=n>i.Adler32.OptimizationParameter?i.Adler32.OptimizationParameter:n;do{F+=t+=a[c++]}while(--o);t%=65521,F%=65521}return(F<<16|t)>>>0},i.Adler32.OptimizationParameter=1024,i.BitStream=function(e,a){if(this.index="number"==typeof a?a:0,this.bitindex=0,this.buffer=e instanceof Uint8Array?e:new Uint8Array(i.BitStream.DefaultBlockSize),2*this.buffer.length<=this.index)throw new Error("invalid index");this.buffer.length<=this.index&&this.expandBuffer()},i.BitStream.DefaultBlockSize=32768,i.BitStream.prototype.expandBuffer=function(){var e=this.buffer,a=e.length,o=new Uint8Array(a<<1);return o.set(e),this.buffer=o},i.BitStream.prototype.writeBits=function(e,a,o){var t,F=this.buffer,n=this.index,c=this.bitindex,s=F[n];if(o&&a>1&&(e=a>8?function(e){return i.BitStream.ReverseTable[255&e]<<24|i.BitStream.ReverseTable[e>>>8&255]<<16|i.BitStream.ReverseTable[e>>>16&255]<<8|i.BitStream.ReverseTable[e>>>24&255]}(e)>>32-a:i.BitStream.ReverseTable[e]>>8-a),a+c<8)s=s<<a|e,c+=a;else for(t=0;t<a;++t)s=s<<1|e>>a-t-1&1,8==++c&&(c=0,F[n++]=i.BitStream.ReverseTable[s],s=0,n===F.length&&(F=this.expandBuffer()));F[n]=s,this.buffer=F,this.bitindex=c,this.index=n},i.BitStream.prototype.finish=function(){var e=this.buffer,a=this.index;return this.bitindex>0&&(e[a]<<=8-this.bitindex,e[a]=i.BitStream.ReverseTable[e[a]],a++),e.subarray(0,a)},i.BitStream.ReverseTable=function(){var e,a=new Uint8Array(256);for(e=0;e<256;++e)a[e]=function(e){var a=e,o=7;for(e>>>=1;e;e>>>=1)a<<=1,a|=1&e,--o;return(a<<o&255)>>>0}(e);return a}(),i.CRC32.calc=function(e,a,o){return i.CRC32.update(e,0,a,o)},i.CRC32.update=function(e,a,o,t){var F=i.CRC32.Table,n="number"==typeof o?o:o=0,c="number"==typeof t?t:e.length;for(a^=4294967295,n=7&c;n--;++o)a=a>>>8^F[255&(a^e[o])];for(n=c>>3;n--;o+=8)a=(a=(a=(a=(a=(a=(a=(a=a>>>8^F[255&(a^e[o])])>>>8^F[255&(a^e[o+1])])>>>8^F[255&(a^e[o+2])])>>>8^F[255&(a^e[o+3])])>>>8^F[255&(a^e[o+4])])>>>8^F[255&(a^e[o+5])])>>>8^F[255&(a^e[o+6])])>>>8^F[255&(a^e[o+7])];return(4294967295^a)>>>0},i.CRC32.single=function(e,a){return(i.CRC32.Table[255&(e^a)]^e>>>8)>>>0},i.CRC32.Table_=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],i.CRC32.Table=new Uint32Array(i.CRC32.Table_),i.Deflate=function(e,a){this.input=e,this.output=new Uint8Array(i.Deflate.DefaultBufferSize),this.compressionType=i.Deflate.CompressionType.DYNAMIC,this.rawDeflate;var o,t={};for(o in!a&&(a={})||"number"==typeof a.compressionType&&(this.compressionType=a.compressionType),a)t[o]=a[o];t.outputBuffer=this.output,this.rawDeflate=new i.RawDeflate(this.input,t)},i.Deflate.DefaultBufferSize=32768,i.Deflate.CompressionType=i.RawDeflate.CompressionType,i.Deflate.compress=function(e,a){return new i.Deflate(e,a).compress()},i.Deflate.prototype.compress=function(){var e,a,o,t,F,n,c=0;if(n=this.output,(e=i.CompressionMethod.DEFLATE)!==i.CompressionMethod.DEFLATE)throw new Error("invalid compression method");if(a=Math.LOG2E*Math.log(i.RawDeflate.WindowSize)-8<<4|e,n[c++]=a,e!==i.CompressionMethod.DEFLATE)throw new Error("invalid compression method");switch(this.compressionType){case i.Deflate.CompressionType.NONE:t=0;break;case i.Deflate.CompressionType.FIXED:t=1;break;case i.Deflate.CompressionType.DYNAMIC:t=2;break;default:throw new Error("unsupported compression type")}return o=t<<6,o|=31-(256*a+o)%31,n[c++]=o,F=i.Adler32(this.input),this.rawDeflate.op=c,c=(n=this.rawDeflate.compress()).length,(n=new Uint8Array(n.buffer)).length<=c+4&&(this.output=new Uint8Array(n.length+4),this.output.set(n),n=this.output),(n=n.subarray(0,c+4))[c++]=F>>24&255,n[c++]=F>>16&255,n[c++]=F>>8&255,n[c++]=255&F,n};class n{constructor(e){this.file=e}async read(e,a){const o=this.file;return void 0!==e?o.slice(e,e+a).arrayBuffer():o.arrayBuffer()}}"undefined"!=typeof process&&null!=process.versions&&process.versions.node;class c{constructor(e){var a;this.config=e,this.url=(a=e.path||e.url).includes("//www.dropbox.com")?a.replace("//www.dropbox.com","//dl.dropboxusercontent.com"):a.startsWith("ftp://ftp.ncbi.nlm.nih.gov")?a.replace("ftp://","https://"):a}async read(e,a){a=Math.ceil(a);const o=this.config.headers||{},i="bytes="+e+"-"+(e+a-1);o.Range=i;let t=this.url.slice();if(this.config.oauthToken){const e=async function(e){return"function"==typeof e?await Promise.resolve(e()):e}(this.config.oauthToken);o.Authorization=`Bearer ${e}`}this.config.apiKey&&(t=function(e,a,o){const i=e.includes("?")?"&":"?";return e+i+"key="+o}(t,0,this.config.apiKey));const F=await fetch(t,{method:"GET",headers:o,redirect:"follow",mode:"cors"}),n=F.status;if(n>=400){console.error(`${n}  ${this.config.url}`);const e=Error(F.statusText);throw e.code=n,e}return F.arrayBuffer()}}class s{constructor(e,a){this.file=e,this.rateLimiter=a}async read(e,a){const o=this.file,i=this.rateLimiter;return new Promise((function(t,F){i.limiter((async function(o){try{const i=await o.read(e,a);t(i)}catch(e){F(e)}}))(o)}))}}class r{constructor(e){this.file=e.file,this.size=e.size||64e3,this.position=0,this.bufferStart=0,this.bufferLength=0,this.buffer=void 0}async read(e,a){const o=e,i=e+a,t=this.bufferStart,F=this.bufferStart+this.bufferLength;if(a>this.size)return this.buffer=void 0,this.bufferStart=0,this.bufferLength=0,this.file.read(e,a);if(o>=t&&i<=F){const e=o-t,i=e+a;return this.buffer.slice(e,i)}if(o<t&&i>t){const i=t-o,F=await this.file.read(e,i),n=a-i;if(n>0){const e=this.buffer.slice(0,n);return f(F,e)}return F}if(!(o<F&&i>F))return this.buffer=await this.file.read(e,this.size),this.bufferStart=e,this.bufferLength=this.buffer.byteLength,this.buffer.slice(0,a);{const e=F-o,i=this.bufferLength-e,t=this.buffer.slice(i,this.bufferLength),n=a-e;if(!(n>0))return t;try{this.buffer=await this.file.read(F,this.size),this.bufferStart=F,this.bufferLength=this.buffer.byteLength;const e=this.buffer.slice(0,n);return f(t,e)}catch(e){if(e.code&&416===e.code)return t;throw e}}}}var f=function(e,a){var o=new Uint8Array(e.byteLength+a.byteLength);return o.set(new Uint8Array(e),0),o.set(new Uint8Array(a),e.byteLength),o.buffer};const d=function(e,a){this.littleEndian=void 0===a||a,this.position=0,this.view=e,this.length=e.byteLength};function h(e,a){this.block=e,this.offset=a}d.prototype.available=function(){return this.length-this.position},d.prototype.remLength=function(){return this.length-this.position},d.prototype.hasNext=function(){return this.position<this.length-1},d.prototype.getByte=function(){var e=this.view.getUint8(this.position,this.littleEndian);return this.position++,e},d.prototype.getShort=function(){var e=this.view.getInt16(this.position,this.littleEndian);return this.position+=2,e},d.prototype.getUShort=function(){var e=this.view.getUint16(this.position,this.littleEndian);return this.position+=2,e},d.prototype.getInt=function(){var e=this.view.getInt32(this.position,this.littleEndian);return this.position+=4,e},d.prototype.getUInt=function(){var e=this.view.getUint32(this.position,this.littleEndian);return this.position+=4,e},d.prototype.getLong=function(){var e=[];e[0]=this.view.getUint8(this.position),e[1]=this.view.getUint8(this.position+1),e[2]=this.view.getUint8(this.position+2),e[3]=this.view.getUint8(this.position+3),e[4]=this.view.getUint8(this.position+4),e[5]=this.view.getUint8(this.position+5),e[6]=this.view.getUint8(this.position+6),e[7]=this.view.getUint8(this.position+7);var a=0;if(this.littleEndian)for(var o=e.length-1;o>=0;o--)a=256*a+e[o];else for(o=0;o<e.length;o++)a=256*a+e[o];return this.position+=8,a},d.prototype.getString=function(e){for(var a,o="";0!=(a=this.view.getUint8(this.position++))&&(o+=String.fromCharCode(a),!e||o.length!=e););return o},d.prototype.getFixedLengthString=function(e){var a,o,i="";for(a=0;a<e;a++)(o=this.view.getUint8(this.position++))>0&&(i+=String.fromCharCode(o));return i},d.prototype.getFixedLengthTrimmedString=function(e){var a,o,i="";for(a=0;a<e;a++)(o=this.view.getUint8(this.position++))>32&&(i+=String.fromCharCode(o));return i},d.prototype.getFloat=function(){var e=this.view.getFloat32(this.position,this.littleEndian);return this.position+=4,e},d.prototype.getDouble=function(){var e=this.view.getFloat64(this.position,this.littleEndian);return this.position+=8,e},d.prototype.skip=function(e){return this.position+=e,this.position},d.prototype.getVPointer=function(){var e=this.position,a=this.view.getUint8(e+1)<<8|this.view.getUint8(e),o=4294967296*(255&this.view.getUint8(e+6))+16777216*(255&this.view.getUint8(e+5))+65536*(255&this.view.getUint8(e+4))+256*(255&this.view.getUint8(e+3))+(255&this.view.getUint8(e+2));return this.position+=8,new h(o,a)},h.prototype.isLessThan=function(e){return this.block<e.block||this.block===e.block&&this.offset<e.offset},h.prototype.isGreaterThan=function(e){return this.block>e.block||this.block===e.block&&this.offset>e.offset},h.prototype.print=function(){return this.block+":"+this.offset};class w{constructor(e,a){this.chr1=e,this.chr2=a}getKey(){return this.chr1.name+"_"+this.chr2.name+"_"+this.zoom.unit+"_"+this.zoom.binSize}getBlockNumbers(e,a,o){if(e.chr==this.chr2&&a.chr===this.chr1){const o=e;e=a,a=o}const i=this.chr1===this.chr2,t=this.zoom.binSize,F=this.blockBinCount,n=this.blockColumnCount;return o<9||!i?function(){const o=e.start/t,c=e.end/t,s=a.start/t,r=a.end/t,f=Math.floor(o/F),d=Math.floor((c-1)/F),h=Math.floor(s/F),w=Math.floor((r-1)/F),l=[];for(let e=h;e<=w;e++)for(let a=f;a<=d;a++){let o;o=i&&e<a?a*n+e:e*n+a,l.includes(o)||l.push(o)}return l}():function(){const o=e.start/t,i=e.end/t,c=a.start/t,s=a.end/t,r=Math.floor((o+c)/2/F),f=Math.floor((i+s)/2/F),d=Math.floor(Math.log2(1+Math.abs(o-s)/Math.sqrt(2)/F)),h=Math.floor(Math.log2(1+Math.abs(i-c)/Math.sqrt(2)/F)),w=(i-c)*(o-s)<0?0:Math.min(d,h),l=Math.max(d,h),p=[];for(let e=w;e<=l;e++)for(let a=r;a<=f;a++){const o=e*n+a;p.push(o)}return p}()}static parseMatrixZoomData(e,a,o){const i=new w(e,a),t=o.getString(),F=o.getInt(),n=o.getFloat(),c=o.getFloat(),s=o.getFloat(),r=o.getFloat(),f=o.getInt();i.blockBinCount=o.getInt(),i.blockColumnCount=o.getInt();const d=o.getInt();i.zoom={index:F,unit:t,binSize:f},i.blockIndex=new l(d,o);const h=n/(e.size/f)/(a.size/f);return i.averageCount=h,i.sumCounts=n,i.stdDev=s,i.occupiedCellCount=c,i.percent95=r,i}}class l{constructor(e,a){for(this.blockIndex={};e-- >0;){const e=a.getInt(),o=a.getLong(),i=a.getInt();this.blockIndex[e]={filePosition:o,size:i}}}getBlockIndexEntry(e){return this.blockIndex[e]}}class p{constructor(e,a,o){this.chr1=e,this.chr2=a,this.bpZoomData=[],this.fragZoomData=[];for(let e of o)"BP"===e.zoom.unit?this.bpZoomData.push(e):this.fragZoomData.push(e)}findZoomForResolution(e,a){const o="FRAG"===a?this.fragZoomData:this.bpZoomData;for(let a=1;a<o.length;a++)if(o[a].zoom.binSize<e)return a-1;return o.length-1}getZoomData(e,a){const o="BP"===(a=a||"BP")?this.bpZoomData:this.fragZoomData;for(let a=0;a<o.length;a++){var i=o[a];if(e===i.zoom.binSize)return i}}getZoomDataByIndex(e,a){return("FRAG"===a?this.fragZoomData:this.bpZoomData)[e]}static getKey(e,a){if(e>a){const o=e;e=a,a=o}return`${e}_${a}`}static parseMatrix(e,a){const o=new d(new DataView(e)),i=o.getInt(),t=o.getInt(),F=a[i],n=a[t];let c=o.getInt();const s=[];for(;c-- >0;){const e=w.parseMatrixZoomData(F,n,o);s.push(e)}return new p(i,t,s)}}class u{constructor(e,a,o){this.bin1=e,this.bin2=a,this.counts=o}getKey(){return this.bin1+"_"+this.bin2}}class m{constructor(e=10){this.max=e,this.map=new Map}get(e){let a=this.map.get(e);return a&&(this.map.delete(e),this.map.set(e,a)),a}set(e,a){this.map.has(e)?this.map.delete(e):this.map.size===this.max&&this.map.delete(this.first()),this.map.set(e,a)}has(e){return this.map.has(e)}clear(){this.map.clear()}first(){return this.map.keys().next().value}}class b{constructor(e,a,o,i){this.file=e,this.filePosition=a,this.nValues=o,this.dataType=i,this.cache=void 0}async getValues(e,a){if(!this.cache||e<this.cache.start||a>this.cache.end){const o=Math.max(0,e-1e3),i=Math.min(this.nValues,a+1e3),t=this.filePosition+o*this.dataType,F=i-o,n=F*this.dataType,c=await this.file.read(t,n);if(!c)return;const s=new d(new DataView(c)),r=[];for(let e=0;e<F;e++)r[e]=8===this.dataType?s.getDouble():s.getFloat();this.cache={start:o,end:i,values:r}}const o=e-this.cache.start,i=o+(a-e);return this.cache.values.slice(o,i)}getKey(){return b.getKey(this.type,this.chrIdx,this.unit,this.resolution)}static getNormalizationVectorKey(e,a,o,i){return e+"_"+a+"_"+o+"_"+i}}var N={"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined.hic":"54386046426,55860","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fprimary.hic":"33860030033,37504","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Freplicate.hic":"30849652794,55832","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fmaternal.hic":"1380542661,17185","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fpaternal.hic":"1389001777,17185","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2Fcombined.hic":"13433880319,35723","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC001.hic":"3409347253,35975","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC002.hic":"4529947083,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC003.hic":"6894962500,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC004.hic":"3395593338,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC005.hic":"5204128636,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC006.hic":"3278363811,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC007.hic":"3585547340,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC008.hic":"4134197273,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC009.hic":"2851728310,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC010.hic":"1754216102,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC011.hic":"1716829574,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC012.hic":"4367980375,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC013.hic":"2309654671,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC014.hic":"5324950266,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC015.hic":"3132333594,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC016.hic":"3159154704,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC017.hic":"3262554627,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC018.hic":"3014216364,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC019.hic":"5025753246,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC020.hic":"5861584507,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC021.hic":"3542263275,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC022.hic":"5061949378,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC023.hic":"4816423919,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC024.hic":"2683781104,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC025.hic":"6522701781,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC026.hic":"6748846520,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC027.hic":"5642693007,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC028.hic":"2098921691,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC029.hic":"3886454027,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC030.hic":"2288984204,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC031.hic":"2115342419,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fpellet%2FHIC032.hic":"2063314324,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fsupernatant%2FHIC033.hic":"1933908457,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC034.hic":"13555514595,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC035.hic":"6129650900,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC036.hic":"4307445019,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC037.hic":"9375139867,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2Fcombined.hic":"11664249584,33929","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_DpnII.hic":"7003537290,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC038.hic":"2099825544,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC039.hic":"2096900138,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC040.hic":"2593642141,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC041.hic":"2263919098,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC042.hic":"2684774693,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_noXlink.hic":"5574807456,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC043.hic":"2986114347,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC044.hic":"1916378621,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC045.hic":"746463126,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC046.hic":"2338476164,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC047.hic":"1167496250,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC048.hic":"2231690794,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC049.hic":"2782308678,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC050.hic":"3633531346,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC051.hic":"4063486444,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC052.hic":"929756278,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC053.hic":"2489657204,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC054.hic":"4036419444,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC055.hic":"4284185549,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC056.hic":"4410546240,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fdilution%2FHIC057.hic":"1491998259,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2Fcombined.hic":"7266425111,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC058.hic":"6532635593,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC059.hic":"400684530,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC060.hic":"645352187,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC061.hic":"736291871,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC062.hic":"762731037,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC063.hic":"682917431,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fdilution%2FHIC064.hic":"4550171307,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2Fcombined.hic":"11897184911,35789","hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC065.hic":"5425943567,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC066.hic":"5942869818,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC067.hic":"5191049261,35647","hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fdilution%2FHIC068.hic":"2713318801,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2Fcombined.hic":"12641555389,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC069.hic":"5630177461,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC070.hic":"5926611269,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC071.hic":"2486191351,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC072.hic":"2281343366,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC073.hic":"2173074239,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC074.hic":"2463700999,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2Fcombined.hic":"14661922519,35639","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC075.hic":"3685310515,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC076.hic":"5833658487,35891","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC077.hic":"2406346486,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC078.hic":"5241454987,35919","hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC079.hic":"6297234263,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2Fcombined.hic":"9193858096,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC080.hic":"5171405536,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC081.hic":"3489767688,35891","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC082.hic":"4243339375,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fdilution%2FHIC083.hic":"1497495406,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2Fcombined.hic":"7923332224,35593","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC084.hic":"867699123,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC085.hic":"3669518514,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC086.hic":"5306474712,35595","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC087.hic":"1490963755,36397","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2Fcombined.hic":"8956382853,50248","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC088.hic":"1874185366,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC089.hic":"1301165236,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC090.hic":"1105246282,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC091.hic":"1338325770,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC092.hic":"1307918730,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC093.hic":"755136918,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC094.hic":"1606583694,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC095.hic":"2039711245,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC096.hic":"1909573053,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC097.hic":"1826710712,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC098.hic":"1998793575,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC099.hic":"1007740962,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC100.hic":"736464120,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC101.hic":"980505082,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC102.hic":"1116083646,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC103.hic":"1096994310,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC104.hic":"841063882,32102","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC105.hic":"107742864,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC106.hic":"134295912,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC107.hic":"110228014,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC108.hic":"102761401,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC109.hic":"100461491,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC110.hic":"88828472,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC111.hic":"81471064,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC112.hic":"92297035,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC113.hic":"65503916,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC114.hic":"49181188,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC115.hic":"46471102,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC116.hic":"64284432,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC117.hic":"60434076,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC118.hic":"45248563,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC119.hic":"60288782,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC120.hic":"136888414,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC121.hic":"125009003,33681","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC122.hic":"154011688,34127","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC123.hic":"177663372,35293","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC124.hic":"382186226,35245","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC125.hic":"158160717,35271","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC127.hic":"110261177,34659","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC128.hic":"246131875,35509","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC129.hic":"260160119,35667","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC130.hic":"117479562,34681","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC131.hic":"81508929,34673","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC132.hic":"105959102,34895","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC133.hic":"91504812,33451","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC134.hic":"52222546,33737","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC135.hic":"57763085,34159","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC136.hic":"50618489,33731","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC137.hic":"193163606,33363","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC138.hic":"229876152,33777","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC139.hic":"201783666,33571","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC140.hic":"281163862,34125","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC141.hic":"275969727,33935","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC142.hic":"275020431,34125","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC144.hic":"223834810,34177","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC145.hic":"296632653,33937","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC146.hic":"290945216,33961","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC147.hic":"234459964,34231","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC148.hic":"295457850,34039","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC149.hic":"113569632,35695","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC150.hic":"304381897,33963","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC151.hic":"289314545,33805","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC152.hic":"284320182,33803","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC153.hic":"401393947,34659","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC154.hic":"188065488,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC155.hic":"299157119,33967","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC156.hic":"279289244,33787","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC157.hic":"254852119,33917","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC158.hic":"195969660,33477","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC159.hic":"185720388,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC160.hic":"227709279,33599","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC161.hic":"157225076,33209","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC162.hic":"105703444,32033","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC163.hic":"122665658,32121","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC164.hic":"228048231,33761","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC165.hic":"114440819,32011","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC166.hic":"285147558,33891","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC167.hic":"363116754,33943","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC168.hic":"119592158,31937","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC169.hic":"236853872,33785","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC170.hic":"195187639,33395","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC171.hic":"208044058,33309","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC172.hic":"144645916,32877","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC173.hic":"119115941,32203","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC175.hic":"178030481,33525","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC176.hic":"117220136,32169","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC177.hic":"128586196,32659","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC178.hic":"191419141,33629","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC179.hic":"141556748,32959","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC180.hic":"199825102,33185","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC181.hic":"301022688,33783","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC182.hic":"185384453,33205","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC183.hic":"202189264,36367","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC184.hic":"37464475,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC185.hic":"161938278,36099","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC186.hic":"133853166,36179","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC188.hic":"128068030,36237","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC189.hic":"148053886,36177","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC190.hic":"198946958,35803","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC191.hic":"226584564,36063","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC192.hic":"194412797,36341","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC193.hic":"176408194,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC194.hic":"207215649,36055","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC195.hic":"175185530,36315","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC196.hic":"168969337,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC197.hic":"121231252,36339","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC198.hic":"92713752,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC199.hic":"105130500,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC200.hic":"114526350,36479","hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC201.hic":"122689717,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fhap1%2Fin-situ%2Fcombined.hic":"9614983328,36479","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fctbp_8_4_17%2Fall_intra_megabase_michrom.hic":"154205644,10960","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xa-combined.hic":"8843305329,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXa-chrX-diploid.hic":"11173520,1498","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-combined.hic":"13365182403,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-chrX-diploid.hic":"17343459,1498","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC002.hic":"4279298739,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC003.hic":"3027365532,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC004.hic":"2896130835,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC005.hic":"4717830071,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC006.hic":"5066210154,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC007.hic":"3069516128,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xi-combined.hic":"14551096423,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXi-chrX-diploid.hic":"17362477,1498","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC008.hic":"2572386655,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC009.hic":"2935931663,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC010.hic":"2019085070,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC011.hic":"6087610814,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC012.hic":"2809618194,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC013.hic":"2572386655,36479","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fcombined.hic":"6950423609,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fpaternal.hic":"220592749,15691","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fmaternal.hic":"323233095,15691","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC014.hic":"3183235800,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC015.hic":"1739539801,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC016.hic":"1105912758,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC017.hic":"1060773319,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC018.hic":"1203679874,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC019.hic":"3321955269,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Frhesus%2FDarrowHuntley-2015%2FHIC020.hic":"7108980626,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fcola%2FDarrowHuntley-2015%2FHIC021.hic":"3906448676,34955","hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Faedes%2Fcombined.hic":"390780490,2245","hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Fhs2-hic.hic":"1960284186,33561","hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2FCpipJ3.hic":"766279097,4381","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2Fupdated_O%2FSnyder_O.hic":"8046980555,18679","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2FA_inter.hic":"10986005145,18679","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2Fcombined.hic":"30439217680,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2Fcombined.hic":"33255540403,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F20min_withdraw_combined.hic":"11078436933,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F40min_withdraw_combined.hic":"11031830038,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F60min_withdraw_combined.hic":"10312725340,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F180min_withdraw_combined.hic":"10038610214,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC001.hic":"8004335785,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC002.hic":"8453215933,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC003.hic":"9118406189,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC004.hic":"5973342894,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC005.hic":"6846576837,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC006.hic":"6075148017,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC007.hic":"8192366992,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC008.hic":"6844159653,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC009.hic":"7282063059,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC010.hic":"10410578833,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC011.hic":"8192366992,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC012.hic":"7223422850,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC013.hic":"7435986997,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC014.hic":"9120113605,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2Fcombined.hic":"4170577904,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC015.hic":"1504084990,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC016.hic":"1686244500,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC017.hic":"1804802410,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC018.hic":"1533942067,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2Fcombined.hic":"4572390198,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC019.hic":"1543609666,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC020.hic":"1814133288,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC021.hic":"1942698243,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC022.hic":"1873587413,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC049.hic":"405127557,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC060.hic":"326681741,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC061.hic":"300908673,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC050.hic":"481758242,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC051.hic":"417577401,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC052.hic":"419353227,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC053.hic":"411554953,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC054.hic":"386655891,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC055.hic":"402170701,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_240min%2FRao-2017-HIC057.hic":"735906308,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC058.hic":"443789827,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC059.hic":"491422615,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC062.hic":"320261375,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC063.hic":"306590499,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC032S.hic":"367051742,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC033S.hic":"344555339,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC036S.hic":"349392947,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC037S.hic":"317714554,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC040S.hic":"266786397,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC041S.hic":"279445530,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC044S.hic":"898418269,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC045S.hic":"961006347,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC064.hic":"833576408,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC065.hic":"840881418,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC066.hic":"980958864,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC067.hic":"882023129,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC068.hic":"1110292630,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC069.hic":"1001747023,36479","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FCP190_HiChIP.hic":"144107588,6976","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27ac_HiChIP_combined.hic":"43171370,5233","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27me3_HiChIP_combined.hic":"42906472,5233","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2_ChIAPET.hic":"41992430,6976","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2S2_HiChIP.hic":"145842743,6976","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FArabidopsis_Wang2015_Liu2016.hic":"1134391078,4984","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FElegans_Crane2015.hic":"387127568,8758","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FNcrassa_Galazka2016.hic":"26555511,27725","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPfalciparum_trophozoite_Ay2014.hic":"15640893,13948","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-A.hic":"6897251,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-B.hic":"4959088,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-A.hic":"5232286,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-B.hic":"5105292,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-A.hic":"6900072,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-B.hic":"8653258,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-A.hic":"7999058,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-B.hic":"8774657,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc.hic":"23671753603,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep1.hic":"23671754721,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep2.hic":"22269909910,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fhffc6_rep1.hic":"19016661622,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_NcoI.hic":"480725203,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2F302NH.hic":"99948617,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FK562.hic":"470263605,36151","hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_HindIII.hic":"293706559,36289","hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_rep_HindIII.hic":"309673862,36087","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep1.hic":"1531151371,56905","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep2.hic":"2851437676,56905","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmouse-rep1.hic":"582052544,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep1.hic":"698509182,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep2.hic":"461410393,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep1.hic":"691045338,33561","hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep2.hic":"668888336,33561","hicfiles.s3.amazonaws.com%2Fexternal%2Fsexton%2Fcombined.hic":"50650087,4486","hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-hindiii.hic":"1071142023,16500","hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-mboi.hic":"1508851093,16448","hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Fnon-tcc-hindiii.hic":"395179229,36093","hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-combined.hic":"1050423847,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-hindiii%2Fsplit-read-run.hic":"9599984876,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fhesc-hindiii.hic":"1952555632,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fimr90-hindiii.hic":"9691260435,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-cortex.hic":"3712072953,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr18.hic":"2083350075,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr2.hic":"3362049644,16360","hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr7.hic":"1658399854,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr15.hic":"866691249,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr2.hic":"3304782795,16386","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-1.hic":"23673506,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-2.hic":"26873280,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-3.hic":"31066362,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-4.hic":"16807724,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-5.hic":"28665065,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-6.hic":"13124158,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-7.hic":"15118945,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-8.hic":"68316814,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-9.hic":"18965101,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-10.hic":"17020666,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Fcombined.hic":"6526601242,36427","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep1.hic":"1861562891,36401","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep2.hic":"3061013635,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep3.hic":"1564588211,35969","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep4.hic":"1255543175,36153","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep5.hic":"974683253,36179","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep6.hic":"1040805629,36053","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Fcombined.hic":"8424080116,36401","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep1.hic":"2697976702,36295","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep3.hic":"1718610467,36159","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep4.hic":"2029519405,36101","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep5.hic":"985310855,36069","hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep6.hic":"1418750480,35967","hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fmhh-call-4-cell-line.hic":"538380253,35351","hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fprimary-b-all.hic":"773764191,35793","hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fnormal-b-cell-line.hic":"336271459,35005","hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Frl-cell-line.hic":"484807998,35351","hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-biorep.hic":"135932435,8758","hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep1.hic":"160355961,8758","hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep2.hic":"188809887,8758","hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fpre-prob-egs.hic":"2237792858,15483","hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-egs.hic":"5744720377,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-fa.hic":"2174866215,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhct116-rnapii-pilot.hic":"396366166,35999","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhela-rnapii-pilot.hic":"882516759,35107","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-pilot.hic":"1131576189,35969","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-saturated.hic":"571583828,36291","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fmcf7-rnapii-saturated.hic":"1282547841,36035","hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fnb4-rnapii-pilot.hic":"761614686,34861","hicfiles.s3.amazonaws.com%2Fexternal%2Fjung%2Fmouse_sperm.hic":"1730231642,29184","hicfiles.s3.amazonaws.com%2Fexternal%2Ftang%2Fgm12878.hic":"1953518212,20505","hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791299.hic":"5723484,11956","hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791297.hic":"16534743,23348","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv.hic":"5094525579,36289","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep1.hic":"2574358912,36373","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep2.hic":"3417099433,36243","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev.hic":"4785157552,36323","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep1.hic":"2648268465,36321","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep2.hic":"2994727980,36107","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf.hic":"5391791815,36063","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep1.hic":"3325842095,36269","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep2.hic":"3096215920,36167","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl.hic":"3830902383,36167","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl-rep1.hic":"1346712252,36079","hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl_rep2.hic":"3098067367,36271","hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-0h-hiseq.hic":"38174042,21889","hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq.hic":"26506099,21889","hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq-non-crosslinked_control.hic":"3545496,21889","hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-36h-hiseq.hic":"70754194,21889","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fg1mid-r1.hic":"200863476,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r1.hic":"249021190,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r2.hic":"212341157,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-0-25fa.hic":"583572265,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-1fa.hic":"354502306,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-0-25fa.hic":"149308791,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-98percent.hic":"778175225,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-1fa.hic":"158091047,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-ns-r1.hic":"801670039,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-m-r1.hic":"875922086,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r1.hic":"130959943,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r2.hic":"237861106,17185","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT.hic":"496104039,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT-adv-cre.hic":"438608517,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep1.hic":"446205712,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep2.hic":"386354767,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep1.hic":"621998722,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep2.hic":"583840829,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep1.hic":"801290988,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep2.hic":"819406658,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep1.hic":"792825269,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep2.hic":"746189884,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT.hic":"309353372,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT-OHT.hic":"274229679,30643","hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R1.hic":"1490362251,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R3.hic":"2403664421,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R1.hic":"1377124538,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R3.hic":"2646201369,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2Fcrh6-mutant.hic":"105261071,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2FWT.hic":"127506388,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2FCol.hic":"153638500,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn1.hic":"211213220,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn4.hic":"134236837,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fxie%2Fprimary.hic":"92936173,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt337.hic":"318737891,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt67.hic":"348123956,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt337.hic":"251107279,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt67.hic":"351840994,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2FCol0.hic":"345969497,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fclf28-swn7.hic":"299585025,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fcmt3-11.hic":"253427706,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fddm1-2.hic":"303626924,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fmet1-3.hic":"347697973,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fsuvh4-suvh5-suvh6.hic":"263122019,10217","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNase-HiC-WG-K562.hic":"892955840,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNaseHiC-WG-H1.hic":"696922695,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-K562-rep1.hic":"341917716,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargeredDNaseHiC-lincRNA-K562-rep2.hic":"214841185,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep1.hic":"616326137,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep2.hic":"579654013,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-H1-rep1.hic":"519810544,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-K562-rep1.hic":"199553123,18679","hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII.hic":"1319373594,6976","hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_HinfI.hic":"1465493873,6976","hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII_HinfI_combo.hic":"753062558,5814","hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-10A.hic":"2784956115,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-7.hic":"2700457411,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fbatullin%2Fsperm.hic":"501052169,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep1.hic":"1450697530,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep2.hic":"1189371558,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Fcombined.hic":"2262007875,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Finactive.hic":"4444564,751","hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Factive.hic":"3993495,751","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep1.hic":"1650838357,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep2.hic":"1258038606,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski.hic":"499827296,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_active.hic":"79175714,15691","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_inactive.hic":"98947881,15691","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_dnase.hic":"4298088401,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_in_situ_dnase.hic":"609321852,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain.hic":"1028196506,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_active.hic":"79175714,15691","hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_inactive.hic":"98947881,15691","hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep1.hic":"1283306,1463","hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep2.hic":"1263227,1463","hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FNcoI_rep1.hic":"4380906,1463","hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined.hic":"1829549643,25624","hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined_randomized.hic":"1859742654,25624","hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_GM_cohesin.hic":"1231264781,17932","hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_cohesin_all.hic":"1152008628,16438","hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_Oct4.hic":"912828146,16438","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FSCC4KO.hic":"1767906138,18679","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FDKO.hic":"1487228787,18679","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_1.14.hic":"1189751862,18679","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_3.3.hic":"1155057696,18679","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWT.hic":"1522401568,18679","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2Fmega_Liverpool%2Fmega.hic":"2612171975,4381","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2836_Liverpool1%2FLiverpool1.hic":"191729195,2245","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2861_Liverpool2%2FLiverpool2.hic":"1637096030,4381","s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2862_Liverpool3%2FLiverpool3.hic":"1160045602,4381","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC.hic":"11857786247,36479","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC_CanyonDel.hic":"8139168836,36479","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Ftcell.hic":"9871547081,36479","s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Fep.hic":"17479335373,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2FTh1_ensemble.hic":"1690592868,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FES_mapq30.hic":"32930498831,32386","hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FNPC_mapq30.hic":"55053730986,32386","hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FCN_mapq30.hic":"53138031154,32386","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_72_hours_WT.hic":"16492991184,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_WT.hic":"23057795398,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_MYC_KO.hic":"21245554876,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_TSA.hic":"13933346059,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_oligomycin.hic":"21902506832,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-mES_WT.hic":"9451969795,32102","hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_WT.hic":"3600188564,16438","hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_WT.hic":"1309503359,16438","hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_HU_treated.hic":"1477252396,16438","hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_flavopiridol.hic":"15711773490,32102","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FPGP1F_mega_090118%2FPGP1F_mega_090118_30.hic":"24786676166,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7145%2FHIC7145_30.hic":"4554644616,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7146%2FHIC7146_30.hic":"4174848944,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7147%2FHIC7147_30.hic":"5062229182,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7862%2FHIC7862_30.hic":"4520990620,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7863%2FHIC7863_30.hic":"4330354773,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7864%2FHIC7864_30.hic":"5880640268,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7865%2FHIC7865_30.hic":"4431632469,36479","hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7866%2FHIC7866_30.hic":"4686000222,36479","encode-public.s3.amazonaws.com%2F2018%2F10%2F19%2Fb122542b-306c-4631-bdc3-2e155e89af55%2FENCFF718AWL.hic":"39544267907,58932","encode-public.s3.amazonaws.com%2F2019%2F02%2F15%2F8e787cd8-e388-4bc2-a236-7a5e6f39e0c0%2FENCFF999YXX.hic":"9255069996,56883","encode-public.s3.amazonaws.com%2F2019%2F02%2F08%2Ffc1d9d5d-8fa0-4e29-9080-3da674d9490d%2FENCFF543USQ.hic":"5005263062,36479","s3.us-east-1.wasabisys.com%2Fhicfiles%2Finternal%2FLCL_mega_42B_500bp_30.hic":"106482584851,22829","www.encodeproject.org%2Ffiles%2FENCFF925QIF%2F%40%40download%2FENCFF925QIF.hic":"51712684396,54779","www.encodeproject.org%2Ffiles%2FENCFF259YUS%2F%40%40download%2FENCFF259YUS.hic":"24640030444,54779","www.encodeproject.org%2Ffiles%2FENCFF783KQI%2F%40%40download%2FENCFF783KQI.hic":"27209249856,54779","www.encodeproject.org%2Ffiles%2FENCFF318JAP%2F%40%40download%2FENCFF318JAP.hic":"28636979242,54779","www.encodeproject.org%2Ffiles%2FENCFF512PQA%2F%40%40download%2FENCFF512PQA.hic":"28124104361,54779","www.encodeproject.org%2Ffiles%2FENCFF591MHA%2F%40%40download%2FENCFF591MHA.hic":"37373387202,54779","www.encodeproject.org%2Ffiles%2FENCFF197OWW%2F%40%40download%2FENCFF197OWW.hic":"41826180893,54779","www.encodeproject.org%2Ffiles%2FENCFF317OIA%2F%40%40download%2FENCFF317OIA.hic":"34741636038,54779","www.encodeproject.org%2Ffiles%2FENCFF522YLZ%2F%40%40download%2FENCFF522YLZ.hic":"24064692329,54779","www.encodeproject.org%2Ffiles%2FENCFF420JTA%2F%40%40download%2FENCFF420JTA.hic":"21202405177,54779","www.encodeproject.org%2Ffiles%2FENCFF871ZDJ%2F%40%40download%2FENCFF871ZDJ.hic":"10124815680,18679","www.encodeproject.org%2Ffiles%2FENCFF349RZY%2F%40%40download%2FENCFF349RZY.hic":"4446702705,36479","www.encodeproject.org%2Ffiles%2FENCFF738YON%2F%40%40download%2FENCFF738YON.hic":"3338049584,35947","www.encodeproject.org%2Ffiles%2FENCFF406KJN%2F%40%40download%2FENCFF406KJN.hic":"4132875306,36479","www.encodeproject.org%2Ffiles%2FENCFF081NPN%2F%40%40download%2FENCFF081NPN.hic":"34495587443,54779","www.encodeproject.org%2Ffiles%2FENCFF946RZW%2F%40%40download%2FENCFF946RZW.hic":"34571955193,54779","www.encodeproject.org%2Ffiles%2FENCFF602CHT%2F%40%40download%2FENCFF602CHT.hic":"30674798032,54779","www.encodeproject.org%2Ffiles%2FENCFF150DKS%2F%40%40download%2FENCFF150DKS.hic":"12618769864,36479","www.encodeproject.org%2Ffiles%2FENCFF614IPZ%2F%40%40download%2FENCFF614IPZ.hic":"42450060331,54779","www.encodeproject.org%2Ffiles%2FENCFF571ZQR%2F%40%40download%2FENCFF571ZQR.hic":"15230068871,47429","www.encodeproject.org%2Ffiles%2FENCFF705MKK%2F%40%40download%2FENCFF705MKK.hic":"38686554702,54779","www.encodeproject.org%2Ffiles%2FENCFF658KTB%2F%40%40download%2FENCFF658KTB.hic":"13195884405,47429","www.encodeproject.org%2Ffiles%2FENCFF435JYN%2F%40%40download%2FENCFF435JYN.hic":"17192139674,54779","www.encodeproject.org%2Ffiles%2FENCFF016JKX%2F%40%40download%2FENCFF016JKX.hic":"37266736642,54779","www.encodeproject.org%2Ffiles%2FENCFF294GFP%2F%40%40download%2FENCFF294GFP.hic":"36389843399,54779","www.encodeproject.org%2Ffiles%2FENCFF700CYI%2F%40%40download%2FENCFF700CYI.hic":"60482012152,54779","www.encodeproject.org%2Ffiles%2FENCFF962EDB%2F%40%40download%2FENCFF962EDB.hic":"39394328182,54779","www.encodeproject.org%2Ffiles%2FENCFF467OGP%2F%40%40download%2FENCFF467OGP.hic":"35572788855,54779","www.encodeproject.org%2Ffiles%2FENCFF556RLR%2F%40%40download%2FENCFF556RLR.hic":"34826921187,54779","www.encodeproject.org%2Ffiles%2FENCFF309UNV%2F%40%40download%2FENCFF309UNV.hic":"48510618174,54779","www.encodeproject.org%2Ffiles%2FENCFF653HCO%2F%40%40download%2FENCFF653HCO.hic":"41079007620,54779","www.encodeproject.org%2Ffiles%2FENCFF120DSV%2F%40%40download%2FENCFF120DSV.hic":"12790195576,47429","www.encodeproject.org%2Ffiles%2FENCFF284OEA%2F%40%40download%2FENCFF284OEA.hic":"46007570339,54779","www.encodeproject.org%2Ffiles%2FENCFF035BLF%2F%40%40download%2FENCFF035BLF.hic":"63868871985,54779","www.encodeproject.org%2Ffiles%2FENCFF094KKX%2F%40%40download%2FENCFF094KKX.hic":"42151419971,54779","www.encodeproject.org%2Ffiles%2FENCFF965BPU%2F%40%40download%2FENCFF965BPU.hic":"42717376107,54779","www.encodeproject.org%2Ffiles%2FENCFF842DUO%2F%40%40download%2FENCFF842DUO.hic":"39553892515,54779","www.encodeproject.org%2Ffiles%2FENCFF417GBZ%2F%40%40download%2FENCFF417GBZ.hic":"45544785452,54779","www.encodeproject.org%2Ffiles%2FENCFF499BVX%2F%40%40download%2FENCFF499BVX.hic":"40900674170,54779","www.encodeproject.org%2Ffiles%2FENCFF136XCV%2F%40%40download%2FENCFF136XCV.hic":"47700392974,54779","www.encodeproject.org%2Ffiles%2FENCFF224HKR%2F%40%40download%2FENCFF224HKR.hic":"40426005932,54779","www.encodeproject.org%2Ffiles%2FENCFF711XSR%2F%40%40download%2FENCFF711XSR.hic":"41434581949,54779","www.encodeproject.org%2Ffiles%2FENCFF660JWA%2F%40%40download%2FENCFF660JWA.hic":"54201632697,54779","www.encodeproject.org%2Ffiles%2FENCFF081PMO%2F%40%40download%2FENCFF081PMO.hic":"53428285130,54779","www.encodeproject.org%2Ffiles%2FENCFF799QGA%2F%40%40download%2FENCFF799QGA.hic":"1228682189,36479","www.encodeproject.org%2Ffiles%2FENCFF473CAA%2F%40%40download%2FENCFF473CAA.hic":"1077514950,36479","www.encodeproject.org%2Ffiles%2FENCFF663FRL%2F%40%40download%2FENCFF663FRL.hic":"39843938245,54779","www.encodeproject.org%2Ffiles%2FENCFF341WOY%2F%40%40download%2FENCFF341WOY.hic":"34792598619,54779","www.encodeproject.org%2Ffiles%2FENCFF515ZBF%2F%40%40download%2FENCFF515ZBF.hic":"41779230923,54779","www.encodeproject.org%2Ffiles%2FENCFF545GBW%2F%40%40download%2FENCFF545GBW.hic":"38351980358,54779","www.encodeproject.org%2Ffiles%2FENCFF252ANV%2F%40%40download%2FENCFF252ANV.hic":"37668839771,54779","www.encodeproject.org%2Ffiles%2FENCFF912NDK%2F%40%40download%2FENCFF912NDK.hic":"21196851956,54779","www.encodeproject.org%2Ffiles%2FENCFF683PLM%2F%40%40download%2FENCFF683PLM.hic":"21849338763,54779","www.encodeproject.org%2Ffiles%2FENCFF355NFJ%2F%40%40download%2FENCFF355NFJ.hic":"47880627268,54779","www.encodeproject.org%2Ffiles%2FENCFF507WEW%2F%40%40download%2FENCFF507WEW.hic":"35777782924,54779","www.encodeproject.org%2Ffiles%2FENCFF241MSL%2F%40%40download%2FENCFF241MSL.hic":"22507408288,54779","www.encodeproject.org%2Ffiles%2FENCFF135MUT%2F%40%40download%2FENCFF135MUT.hic":"24168734040,54779","www.encodeproject.org%2Ffiles%2FENCFF459FRB%2F%40%40download%2FENCFF459FRB.hic":"37166770103,54779","www.encodeproject.org%2Ffiles%2FENCFF705YZH%2F%40%40download%2FENCFF705YZH.hic":"44679182442,54779","www.encodeproject.org%2Ffiles%2FENCFF395INO%2F%40%40download%2FENCFF395INO.hic":"56727346538,54779","www.encodeproject.org%2Ffiles%2FENCFF736ITL%2F%40%40download%2FENCFF736ITL.hic":"49036286185,54779","www.encodeproject.org%2Ffiles%2FENCFF546TZN%2F%40%40download%2FENCFF546TZN.hic":"33195126348,54779","www.encodeproject.org%2Ffiles%2FENCFF706SFK%2F%40%40download%2FENCFF706SFK.hic":"3271831702,36479","www.encodeproject.org%2Ffiles%2FENCFF922ERE%2F%40%40download%2FENCFF922ERE.hic":"12476647122,36479","www.encodeproject.org%2Ffiles%2FENCFF876OWE%2F%40%40download%2FENCFF876OWE.hic":"1538692704,47429","www.encodeproject.org%2Ffiles%2FENCFF227XJZ%2F%40%40download%2FENCFF227XJZ.hic":"1925617685,36479","www.encodeproject.org%2Ffiles%2FENCFF053BXY%2F%40%40download%2FENCFF053BXY.hic":"1032237652,36479","www.encodeproject.org%2Ffiles%2FENCFF014VMM%2F%40%40download%2FENCFF014VMM.hic":"1564021703,36479","www.encodeproject.org%2Ffiles%2FENCFF563XES%2F%40%40download%2FENCFF563XES.hic":"1489180508,36479","www.encodeproject.org%2Ffiles%2FENCFF482LGO%2F%40%40download%2FENCFF482LGO.hic":"1208778887,36479","www.encodeproject.org%2Ffiles%2FENCFF216QQM%2F%40%40download%2FENCFF216QQM.hic":"6293163571,47429","www.encodeproject.org%2Ffiles%2FENCFF256UOW%2F%40%40download%2FENCFF256UOW.hic":"6293163571,47429","www.encodeproject.org%2Ffiles%2FENCFF791UZC%2F%40%40download%2FENCFF791UZC.hic":"37029615181,54779","www.encodeproject.org%2Ffiles%2FENCFF911AHQ%2F%40%40download%2FENCFF911AHQ.hic":"34246649165,54779","www.encodeproject.org%2Ffiles%2FENCFF491AOR%2F%40%40download%2FENCFF491AOR.hic":"558663570,36479","www.encodeproject.org%2Ffiles%2FENCFF307PDL%2F%40%40download%2FENCFF307PDL.hic":"525321519,36479","www.encodeproject.org%2Ffiles%2FENCFF773ITV%2F%40%40download%2FENCFF773ITV.hic":"295464771,36479","www.encodeproject.org%2Ffiles%2FENCFF198SSL%2F%40%40download%2FENCFF198SSL.hic":"500142476,36479","www.encodeproject.org%2Ffiles%2FENCFF251UEF%2F%40%40download%2FENCFF251UEF.hic":"567443575,36479","www.encodeproject.org%2Ffiles%2FENCFF942LTN%2F%40%40download%2FENCFF942LTN.hic":"4430960222,36479","www.encodeproject.org%2Ffiles%2FENCFF543USQ%2F%40%40download%2FENCFF543USQ.hic":"5005263062,36479","www.encodeproject.org%2Ffiles%2FENCFF434XQU%2F%40%40download%2FENCFF434XQU.hic":"25506511674,54779","www.encodeproject.org%2Ffiles%2FENCFF318GOM%2F%40%40download%2FENCFF318GOM.hic":"44750824314,54779","www.encodeproject.org%2Ffiles%2FENCFF004TKY%2F%40%40download%2FENCFF004TKY.hic":"20705661833,54779","www.encodeproject.org%2Ffiles%2FENCFF493YNC%2F%40%40download%2FENCFF493YNC.hic":"53407154984,54779","www.encodeproject.org%2Ffiles%2FENCFF334XXU%2F%40%40download%2FENCFF334XXU.hic":"14341194962,47429","www.encodeproject.org%2Ffiles%2FENCFF569RJM%2F%40%40download%2FENCFF569RJM.hic":"1922066634,36479","www.encodeproject.org%2Ffiles%2FENCFF076LWH%2F%40%40download%2FENCFF076LWH.hic":"39406255845,54779","www.encodeproject.org%2Ffiles%2FENCFF977XWK%2F%40%40download%2FENCFF977XWK.hic":"20563512962,54779","www.encodeproject.org%2Ffiles%2FENCFF127TPS%2F%40%40download%2FENCFF127TPS.hic":"21032070512,54779","www.encodeproject.org%2Ffiles%2FENCFF480KLP%2F%40%40download%2FENCFF480KLP.hic":"33115569647,54779","www.encodeproject.org%2Ffiles%2FENCFF281ILS%2F%40%40download%2FENCFF281ILS.hic":"28236353584,54779","www.encodeproject.org%2Ffiles%2FENCFF129LMU%2F%40%40download%2FENCFF129LMU.hic":"35247096013,54779","www.encodeproject.org%2Ffiles%2FENCFF759YCW%2F%40%40download%2FENCFF759YCW.hic":"16058537743,32102","www.encodeproject.org%2Ffiles%2FENCFF045YOM%2F%40%40download%2FENCFF045YOM.hic":"19775445828,32102","www.encodeproject.org%2Ffiles%2FENCFF013TGD%2F%40%40download%2FENCFF013TGD.hic":"4208420532,36479","www.encodeproject.org%2Ffiles%2FENCFF929RPW%2F%40%40download%2FENCFF929RPW.hic":"1974260276,36479","www.encodeproject.org%2Ffiles%2FENCFF996XEO%2F%40%40download%2FENCFF996XEO.hic":"2072918865,36479","www.encodeproject.org%2Ffiles%2FENCFF097SKJ%2F%40%40download%2FENCFF097SKJ.hic":"1983524001,36479","www.encodeproject.org%2Ffiles%2FENCFF464KRA%2F%40%40download%2FENCFF464KRA.hic":"1957300131,36479","www.encodeproject.org%2Ffiles%2FENCFF406HHC%2F%40%40download%2FENCFF406HHC.hic":"3854527235,36479","www.encodeproject.org%2Ffiles%2FENCFF080DPJ%2F%40%40download%2FENCFF080DPJ.hic":"19953768024,47429","www.encodeproject.org%2Ffiles%2FENCFF621AIY%2F%40%40download%2FENCFF621AIY.hic":"26781700010,54779","www.encodeproject.org%2Ffiles%2FENCFF366ERB%2F%40%40download%2FENCFF366ERB.hic":"1049184239,36479","www.encodeproject.org%2Ffiles%2FENCFF997RGL%2F%40%40download%2FENCFF997RGL.hic":"2521167549,36479","www.encodeproject.org%2Ffiles%2FENCFF029MPB%2F%40%40download%2FENCFF029MPB.hic":"1854711185,36479","www.encodeproject.org%2Ffiles%2FENCFF043EEE%2F%40%40download%2FENCFF043EEE.hic":"2924133032,36479","www.encodeproject.org%2Ffiles%2FENCFF920CJR%2F%40%40download%2FENCFF920CJR.hic":"3011577886,36479","www.encodeproject.org%2Ffiles%2FENCFF928NJV%2F%40%40download%2FENCFF928NJV.hic":"2778936244,36479","www.encodeproject.org%2Ffiles%2FENCFF894GLR%2F%40%40download%2FENCFF894GLR.hic":"2831733099,36479","www.encodeproject.org%2Ffiles%2FENCFF303PCK%2F%40%40download%2FENCFF303PCK.hic":"688704435,36479","www.encodeproject.org%2Ffiles%2FENCFF999YXX%2F%40%40download%2FENCFF999YXX.hic":"9255069996,56883","www.encodeproject.org%2Ffiles%2FENCFF685BLG%2F%40%40download%2FENCFF685BLG.hic":"16797022992,47429","www.encodeproject.org%2Ffiles%2FENCFF188SSH%2F%40%40download%2FENCFF188SSH.hic":"16797023050,47429","www.encodeproject.org%2Ffiles%2FENCFF465ESX%2F%40%40download%2FENCFF465ESX.hic":"13489465953,32102","www.encodeproject.org%2Ffiles%2FENCFF493SFI%2F%40%40download%2FENCFF493SFI.hic":"30033046818,54779","www.encodeproject.org%2Ffiles%2FENCFF235LCO%2F%40%40download%2FENCFF235LCO.hic":"38572174589,54779","www.encodeproject.org%2Ffiles%2FENCFF625VNK%2F%40%40download%2FENCFF625VNK.hic":"45202258438,54779","www.encodeproject.org%2Ffiles%2FENCFF304HMS%2F%40%40download%2FENCFF304HMS.hic":"36994445315,54779","www.encodeproject.org%2Ffiles%2FENCFF605CEN%2F%40%40download%2FENCFF605CEN.hic":"40358346301,54779","www.encodeproject.org%2Ffiles%2FENCFF086ORS%2F%40%40download%2FENCFF086ORS.hic":"22650781304,54779","www.encodeproject.org%2Ffiles%2FENCFF237UKR%2F%40%40download%2FENCFF237UKR.hic":"41516707246,54779","www.encodeproject.org%2Ffiles%2FENCFF004YZQ%2F%40%40download%2FENCFF004YZQ.hic":"71900665326,54779","www.encodeproject.org%2Ffiles%2FENCFF104THR%2F%40%40download%2FENCFF104THR.hic":"15172410632,54779","www.encodeproject.org%2Ffiles%2FENCFF807IRK%2F%40%40download%2FENCFF807IRK.hic":"17346637451,54779","www.encodeproject.org%2Ffiles%2FENCFF193CQL%2F%40%40download%2FENCFF193CQL.hic":"55726903245,54779","www.encodeproject.org%2Ffiles%2FENCFF700DEX%2F%40%40download%2FENCFF700DEX.hic":"20231399798,54779","www.encodeproject.org%2Ffiles%2FENCFF234MDO%2F%40%40download%2FENCFF234MDO.hic":"24635312640,54779","www.encodeproject.org%2Ffiles%2FENCFF181ROW%2F%40%40download%2FENCFF181ROW.hic":"26883606497,54779","www.encodeproject.org%2Ffiles%2FENCFF896OFN%2F%40%40download%2FENCFF896OFN.hic":"36952196833,54779","www.encodeproject.org%2Ffiles%2FENCFF573OPJ%2F%40%40download%2FENCFF573OPJ.hic":"36685546919,54779","www.encodeproject.org%2Ffiles%2FENCFF028RXH%2F%40%40download%2FENCFF028RXH.hic":"31053919206,54779","www.encodeproject.org%2Ffiles%2FENCFF156GGD%2F%40%40download%2FENCFF156GGD.hic":"35284134289,54779","www.encodeproject.org%2Ffiles%2FENCFF496GEU%2F%40%40download%2FENCFF496GEU.hic":"44659660933,54779","www.encodeproject.org%2Ffiles%2FENCFF945TUH%2F%40%40download%2FENCFF945TUH.hic":"3898570191,35639","www.encodeproject.org%2Ffiles%2FENCFF698KFV%2F%40%40download%2FENCFF698KFV.hic":"4427896684,35751","www.encodeproject.org%2Ffiles%2FENCFF239BHZ%2F%40%40download%2FENCFF239BHZ.hic":"1718552021,36479","www.encodeproject.org%2Ffiles%2FENCFF277LAN%2F%40%40download%2FENCFF277LAN.hic":"4542391336,36479","www.encodeproject.org%2Ffiles%2FENCFF397CMD%2F%40%40download%2FENCFF397CMD.hic":"2832016430,36479","www.encodeproject.org%2Ffiles%2FENCFF778OYA%2F%40%40download%2FENCFF778OYA.hic":"14067187484,47429","www.encodeproject.org%2Ffiles%2FENCFF775VSU%2F%40%40download%2FENCFF775VSU.hic":"14067187484,47429","www.encodeproject.org%2Ffiles%2FENCFF812THZ%2F%40%40download%2FENCFF812THZ.hic":"9667720429,36479","www.encodeproject.org%2Ffiles%2FENCFF777KBU%2F%40%40download%2FENCFF777KBU.hic":"5058284320,36479","www.encodeproject.org%2Ffiles%2FENCFF688KOY%2F%40%40download%2FENCFF688KOY.hic":"4198695833,36479","www.encodeproject.org%2Ffiles%2FENCFF223UBX%2F%40%40download%2FENCFF223UBX.hic":"1206064037,36479","www.encodeproject.org%2Ffiles%2FENCFF273XBU%2F%40%40download%2FENCFF273XBU.hic":"44085607579,54779","www.encodeproject.org%2Ffiles%2FENCFF952JZV%2F%40%40download%2FENCFF952JZV.hic":"44728845246,54779","www.encodeproject.org%2Ffiles%2FENCFF643NDM%2F%40%40download%2FENCFF643NDM.hic":"35877886780,54779","www.encodeproject.org%2Ffiles%2FENCFF586MQY%2F%40%40download%2FENCFF586MQY.hic":"71158037547,54779","www.encodeproject.org%2Ffiles%2FENCFF251VFA%2F%40%40download%2FENCFF251VFA.hic":"40089479399,54779","www.encodeproject.org%2Ffiles%2FENCFF033WGK%2F%40%40download%2FENCFF033WGK.hic":"30802023728,54779","www.encodeproject.org%2Ffiles%2FENCFF649OHR%2F%40%40download%2FENCFF649OHR.hic":"28203184265,54779","www.encodeproject.org%2Ffiles%2FENCFF782WVZ%2F%40%40download%2FENCFF782WVZ.hic":"37248221674,54779","www.encodeproject.org%2Ffiles%2FENCFF579CAR%2F%40%40download%2FENCFF579CAR.hic":"39662025395,54779","www.encodeproject.org%2Ffiles%2FENCFF514XWQ%2F%40%40download%2FENCFF514XWQ.hic":"1319613701,36479","www.encodeproject.org%2Ffiles%2FENCFF666USK%2F%40%40download%2FENCFF666USK.hic":"15051670107,32102","www.encodeproject.org%2Ffiles%2FENCFF047SDP%2F%40%40download%2FENCFF047SDP.hic":"1357076705,16438","www.encodeproject.org%2Ffiles%2FENCFF584LEP%2F%40%40download%2FENCFF584LEP.hic":"9314176858,36479","www.encodeproject.org%2Ffiles%2FENCFF671SOE%2F%40%40download%2FENCFF671SOE.hic":"3273732256,16438","www.encodeproject.org%2Ffiles%2FENCFF702LAP%2F%40%40download%2FENCFF702LAP.hic":"1800427500,31682","www.encodeproject.org%2Ffiles%2FENCFF339PON%2F%40%40download%2FENCFF339PON.hic":"5394351199,31514","www.encodeproject.org%2Ffiles%2FENCFF741QPR%2F%40%40download%2FENCFF741QPR.hic":"4271510019,30139","www.encodeproject.org%2Ffiles%2FENCFF103ANX%2F%40%40download%2FENCFF103ANX.hic":"4439745804,30083","www.encodeproject.org%2Ffiles%2FENCFF395SBC%2F%40%40download%2FENCFF395SBC.hic":"1596732351,31850","www.encodeproject.org%2Ffiles%2FENCFF289WNN%2F%40%40download%2FENCFF289WNN.hic":"8632980535,32102","www.encodeproject.org%2Ffiles%2FENCFF381EAU%2F%40%40download%2FENCFF381EAU.hic":"1702476311,36479","www.encodeproject.org%2Ffiles%2FENCFF976FEY%2F%40%40download%2FENCFF976FEY.hic":"1448279040,36479","www.encodeproject.org%2Ffiles%2FENCFF485LVS%2F%40%40download%2FENCFF485LVS.hic":"1593610856,36479","www.encodeproject.org%2Ffiles%2FENCFF143VJV%2F%40%40download%2FENCFF143VJV.hic":"1422312076,36479","www.encodeproject.org%2Ffiles%2FENCFF588NHX%2F%40%40download%2FENCFF588NHX.hic":"3943637009,36479","www.encodeproject.org%2Ffiles%2FENCFF768UBD%2F%40%40download%2FENCFF768UBD.hic":"24786676166,36479","www.encodeproject.org%2Ffiles%2FENCFF965PEE%2F%40%40download%2FENCFF965PEE.hic":"29387092778,47429","www.encodeproject.org%2Ffiles%2FENCFF702IFC%2F%40%40download%2FENCFF702IFC.hic":"29387092778,47429","www.encodeproject.org%2Ffiles%2FENCFF288DNV%2F%40%40download%2FENCFF288DNV.hic":"10313429504,36479","www.encodeproject.org%2Ffiles%2FENCFF698HWZ%2F%40%40download%2FENCFF698HWZ.hic":"10962849269,47429","www.encodeproject.org%2Ffiles%2FENCFF355OWW%2F%40%40download%2FENCFF355OWW.hic":"3219571601,36479","www.encodeproject.org%2Ffiles%2FENCFF177TYX%2F%40%40download%2FENCFF177TYX.hic":"10325679706,36479","www.encodeproject.org%2Ffiles%2FENCFF542BHD%2F%40%40download%2FENCFF542BHD.hic":"11085397879,47429","www.encodeproject.org%2Ffiles%2FENCFF684IFW%2F%40%40download%2FENCFF684IFW.hic":"11085397879,47429","www.encodeproject.org%2Ffiles%2FENCFF592UHE%2F%40%40download%2FENCFF592UHE.hic":"21363948089,32102","www.encodeproject.org%2Ffiles%2FENCFF779XIS%2F%40%40download%2FENCFF779XIS.hic":"9517383271,36479","www.encodeproject.org%2Ffiles%2FENCFF518PSL%2F%40%40download%2FENCFF518PSL.hic":"7500581463,36479","www.encodeproject.org%2Ffiles%2FENCFF275GBB%2F%40%40download%2FENCFF275GBB.hic":"7889407162,36479","www.encodeproject.org%2Ffiles%2FENCFF634KXI%2F%40%40download%2FENCFF634KXI.hic":"6430702966,36479","www.encodeproject.org%2Ffiles%2FENCFF337QPM%2F%40%40download%2FENCFF337QPM.hic":"8529733887,36479","www.encodeproject.org%2Ffiles%2FENCFF162KMP%2F%40%40download%2FENCFF162KMP.hic":"5615896908,36479","www.encodeproject.org%2Ffiles%2FENCFF992VTE%2F%40%40download%2FENCFF992VTE.hic":"7328975027,36479","www.encodeproject.org%2Ffiles%2FENCFF464WXY%2F%40%40download%2FENCFF464WXY.hic":"5715339664,36479","www.encodeproject.org%2Ffiles%2FENCFF752EGH%2F%40%40download%2FENCFF752EGH.hic":"1733758743,36479","www.encodeproject.org%2Ffiles%2FENCFF474UJM%2F%40%40download%2FENCFF474UJM.hic":"222309548,18679","www.encodeproject.org%2Ffiles%2FENCFF531UPZ%2F%40%40download%2FENCFF531UPZ.hic":"1827756846,36479","www.encodeproject.org%2Ffiles%2FENCFF022VHA%2F%40%40download%2FENCFF022VHA.hic":"244983451,18679","www.encodeproject.org%2Ffiles%2FENCFF732NGR%2F%40%40download%2FENCFF732NGR.hic":"1679484567,36479","www.encodeproject.org%2Ffiles%2FENCFF513VSF%2F%40%40download%2FENCFF513VSF.hic":"28397932940,36479","www.encodeproject.org%2Ffiles%2FENCFF750AOC%2F%40%40download%2FENCFF750AOC.hic":"36471430712,47429","www.encodeproject.org%2Ffiles%2FENCFF219YOB%2F%40%40download%2FENCFF219YOB.hic":"2859767211,26979","www.encodeproject.org%2Ffiles%2FENCFF604YDD%2F%40%40download%2FENCFF604YDD.hic":"3549694085,26979","www.encodeproject.org%2Ffiles%2FENCFF746AMV%2F%40%40download%2FENCFF746AMV.hic":"2954867135,26979","www.encodeproject.org%2Ffiles%2FENCFF845ZEB%2F%40%40download%2FENCFF845ZEB.hic":"2763039282,26979","www.encodeproject.org%2Ffiles%2FENCFF570LWS%2F%40%40download%2FENCFF570LWS.hic":"2861588289,26979","www.encodeproject.org%2Ffiles%2FENCFF883YVR%2F%40%40download%2FENCFF883YVR.hic":"2433679887,26979","www.encodeproject.org%2Ffiles%2FENCFF056VLK%2F%40%40download%2FENCFF056VLK.hic":"2502986910,26979","www.encodeproject.org%2Ffiles%2FENCFF532DUQ%2F%40%40download%2FENCFF532DUQ.hic":"3172615899,26979","www.encodeproject.org%2Ffiles%2FENCFF723PYJ%2F%40%40download%2FENCFF723PYJ.hic":"10292839095,36479","www.encodeproject.org%2Ffiles%2FENCFF991SGJ%2F%40%40download%2FENCFF991SGJ.hic":"13072407683,32102","www.encodeproject.org%2Ffiles%2FENCFF885UZI%2F%40%40download%2FENCFF885UZI.hic":"1201881201,16438","www.encodeproject.org%2Ffiles%2FENCFF287KXA%2F%40%40download%2FENCFF287KXA.hic":"14705801988,32102","www.encodeproject.org%2Ffiles%2FENCFF335HYI%2F%40%40download%2FENCFF335HYI.hic":"20366756545,32102","www.encodeproject.org%2Ffiles%2FENCFF121YPY%2F%40%40download%2FENCFF121YPY.hic":"2760104016,26979","www.encodeproject.org%2Ffiles%2FENCFF675SJE%2F%40%40download%2FENCFF675SJE.hic":"3751779995,26979","www.encodeproject.org%2Ffiles%2FENCFF876LAW%2F%40%40download%2FENCFF876LAW.hic":"4032376256,26979","www.encodeproject.org%2Ffiles%2FENCFF740KVX%2F%40%40download%2FENCFF740KVX.hic":"3202490322,26979","www.encodeproject.org%2Ffiles%2FENCFF977OQV%2F%40%40download%2FENCFF977OQV.hic":"2919735477,26979","www.encodeproject.org%2Ffiles%2FENCFF525EFN%2F%40%40download%2FENCFF525EFN.hic":"2394748073,26979","www.encodeproject.org%2Ffiles%2FENCFF690QRC%2F%40%40download%2FENCFF690QRC.hic":"3183023394,26979","www.encodeproject.org%2Ffiles%2FENCFF452FWS%2F%40%40download%2FENCFF452FWS.hic":"2951805127,26979","www.encodeproject.org%2Ffiles%2FENCFF089KBG%2F%40%40download%2FENCFF089KBG.hic":"2531936700,26979","www.encodeproject.org%2Ffiles%2FENCFF939ARM%2F%40%40download%2FENCFF939ARM.hic":"3066385212,26979","www.encodeproject.org%2Ffiles%2FENCFF401ZAN%2F%40%40download%2FENCFF401ZAN.hic":"3008677144,26979","www.encodeproject.org%2Ffiles%2FENCFF378RZT%2F%40%40download%2FENCFF378RZT.hic":"2830232168,26979","www.encodeproject.org%2Ffiles%2FENCFF304AVD%2F%40%40download%2FENCFF304AVD.hic":"6164439305,50358","www.encodeproject.org%2Ffiles%2FENCFF453DBX%2F%40%40download%2FENCFF453DBX.hic":"6775246670,36479","www.encodeproject.org%2Ffiles%2FENCFF590VOM%2F%40%40download%2FENCFF590VOM.hic":"6443478922,36479","www.encodeproject.org%2Ffiles%2FENCFF246DOF%2F%40%40download%2FENCFF246DOF.hic":"6837914659,36479","www.encodeproject.org%2Ffiles%2FENCFF125FXX%2F%40%40download%2FENCFF125FXX.hic":"9736232550,36479","www.encodeproject.org%2Ffiles%2FENCFF241RAY%2F%40%40download%2FENCFF241RAY.hic":"7686758397,36479","www.encodeproject.org%2Ffiles%2FENCFF415XWQ%2F%40%40download%2FENCFF415XWQ.hic":"6973092068,36479","www.encodeproject.org%2Ffiles%2FENCFF374EBH%2F%40%40download%2FENCFF374EBH.hic":"8557459058,36479","www.encodeproject.org%2Ffiles%2FENCFF263YWR%2F%40%40download%2FENCFF263YWR.hic":"331586820,18679","www.encodeproject.org%2Ffiles%2FENCFF280CGS%2F%40%40download%2FENCFF280CGS.hic":"1743569614,36479","www.encodeproject.org%2Ffiles%2FENCFF553ZNS%2F%40%40download%2FENCFF553ZNS.hic":"1717253636,36479","www.encodeproject.org%2Ffiles%2FENCFF451VOI%2F%40%40download%2FENCFF451VOI.hic":"1626927468,36479","www.encodeproject.org%2Ffiles%2FENCFF420MQO%2F%40%40download%2FENCFF420MQO.hic":"31055961677,36479","www.encodeproject.org%2Ffiles%2FENCFF301BWY%2F%40%40download%2FENCFF301BWY.hic":"38902429246,47429","www.encodeproject.org%2Ffiles%2FENCFF606XNW%2F%40%40download%2FENCFF606XNW.hic":"1009699327,36479","www.encodeproject.org%2Ffiles%2FENCFF439ZOU%2F%40%40download%2FENCFF439ZOU.hic":"12381714313,36479","www.encodeproject.org%2Ffiles%2FENCFF499SYK%2F%40%40download%2FENCFF499SYK.hic":"13182654663,47429","www.encodeproject.org%2Ffiles%2FENCFF532LFI%2F%40%40download%2FENCFF532LFI.hic":"8286030286,36479","www.encodeproject.org%2Ffiles%2FENCFF020DPP%2F%40%40download%2FENCFF020DPP.hic":"23521952420,47429","www.encodeproject.org%2Ffiles%2FENCFF306VTV%2F%40%40download%2FENCFF306VTV.hic":"23521952480,47429","www.encodeproject.org%2Ffiles%2FENCFF399IHE%2F%40%40download%2FENCFF399IHE.hic":"10216571232,36479","www.encodeproject.org%2Ffiles%2FENCFF944AII%2F%40%40download%2FENCFF944AII.hic":"12567308552,47429","www.encodeproject.org%2Ffiles%2FENCFF230HVV%2F%40%40download%2FENCFF230HVV.hic":"8629849711,36479","www.encodeproject.org%2Ffiles%2FENCFF174LAF%2F%40%40download%2FENCFF174LAF.hic":"9446506633,47429","www.encodeproject.org%2Ffiles%2FENCFF898HRO%2F%40%40download%2FENCFF898HRO.hic":"9446506633,47429","www.encodeproject.org%2Ffiles%2FENCFF429MOR%2F%40%40download%2FENCFF429MOR.hic":"1455757398,36479","www.encodeproject.org%2Ffiles%2FENCFF061NXV%2F%40%40download%2FENCFF061NXV.hic":"1710915891,36479","www.encodeproject.org%2Ffiles%2FENCFF434PYS%2F%40%40download%2FENCFF434PYS.hic":"1832274903,36479","www.encodeproject.org%2Ffiles%2FENCFF704HHX%2F%40%40download%2FENCFF704HHX.hic":"1768142834,36479","www.encodeproject.org%2Ffiles%2FENCFF349DPM%2F%40%40download%2FENCFF349DPM.hic":"4316041260,36479","www.encodeproject.org%2Ffiles%2FENCFF718AWL%2F%40%40download%2FENCFF718AWL.hic":"39544267907,58932","www.encodeproject.org%2Ffiles%2FENCFF065LSP%2F%40%40download%2FENCFF065LSP.hic":"24929805283,55874","www.encodeproject.org%2Ffiles%2FENCFF632MFV%2F%40%40download%2FENCFF632MFV.hic":"22333105467,55798","www.encodeproject.org%2Ffiles%2FENCFF179HVU%2F%40%40download%2FENCFF179HVU.hic":"2659219603,36479","www.encodeproject.org%2Ffiles%2FENCFF791SPZ%2F%40%40download%2FENCFF791SPZ.hic":"2537491657,36479","www.encodeproject.org%2Ffiles%2FENCFF211ZWF%2F%40%40download%2FENCFF211ZWF.hic":"3512141227,36479","www.encodeproject.org%2Ffiles%2FENCFF614BNU%2F%40%40download%2FENCFF614BNU.hic":"5252155462,36479","www.encodeproject.org%2Ffiles%2FENCFF891DLM%2F%40%40download%2FENCFF891DLM.hic":"2549095612,36479","www.encodeproject.org%2Ffiles%2FENCFF056EXT%2F%40%40download%2FENCFF056EXT.hic":"2219014704,36479","www.encodeproject.org%2Ffiles%2FENCFF776DSS%2F%40%40download%2FENCFF776DSS.hic":"3920308353,36479","www.encodeproject.org%2Ffiles%2FENCFF814LQF%2F%40%40download%2FENCFF814LQF.hic":"1349480197,36479","www.encodeproject.org%2Ffiles%2FENCFF513ZNA%2F%40%40download%2FENCFF513ZNA.hic":"2638868195,36479","www.encodeproject.org%2Ffiles%2FENCFF692IOL%2F%40%40download%2FENCFF692IOL.hic":"3106768498,36479","www.encodeproject.org%2Ffiles%2FENCFF294WZY%2F%40%40download%2FENCFF294WZY.hic":"2211089761,36479","www.encodeproject.org%2Ffiles%2FENCFF339UWS%2F%40%40download%2FENCFF339UWS.hic":"2142759055,36479","www.encodeproject.org%2Ffiles%2FENCFF835FSK%2F%40%40download%2FENCFF835FSK.hic":"3919821739,36479","www.encodeproject.org%2Ffiles%2FENCFF328BMB%2F%40%40download%2FENCFF328BMB.hic":"2550686152,36479","www.encodeproject.org%2Ffiles%2FENCFF897RTY%2F%40%40download%2FENCFF897RTY.hic":"1323294397,36479","www.encodeproject.org%2Ffiles%2FENCFF306MWH%2F%40%40download%2FENCFF306MWH.hic":"1665386199,36479","www.encodeproject.org%2Ffiles%2FENCFF039YUJ%2F%40%40download%2FENCFF039YUJ.hic":"2335679939,36479","www.encodeproject.org%2Ffiles%2FENCFF468QIN%2F%40%40download%2FENCFF468QIN.hic":"3352516594,36479","www.encodeproject.org%2Ffiles%2FENCFF364WXU%2F%40%40download%2FENCFF364WXU.hic":"3959043175,36479","www.encodeproject.org%2Ffiles%2FENCFF373MSH%2F%40%40download%2FENCFF373MSH.hic":"4429550624,36479","www.encodeproject.org%2Ffiles%2FENCFF959EGQ%2F%40%40download%2FENCFF959EGQ.hic":"2475218228,36479","www.encodeproject.org%2Ffiles%2FENCFF624XMK%2F%40%40download%2FENCFF624XMK.hic":"3527855681,36479","www.encodeproject.org%2Ffiles%2FENCFF445OKS%2F%40%40download%2FENCFF445OKS.hic":"3369125589,36479","www.encodeproject.org%2Ffiles%2FENCFF239QDV%2F%40%40download%2FENCFF239QDV.hic":"1960069888,36479","www.encodeproject.org%2Ffiles%2FENCFF645AVM%2F%40%40download%2FENCFF645AVM.hic":"4969006589,36479","www.encodeproject.org%2Ffiles%2FENCFF494IPI%2F%40%40download%2FENCFF494IPI.hic":"1565483792,36479","www.encodeproject.org%2Ffiles%2FENCFF753IXE%2F%40%40download%2FENCFF753IXE.hic":"2892400648,36479","www.encodeproject.org%2Ffiles%2FENCFF731GXX%2F%40%40download%2FENCFF731GXX.hic":"5131381303,36479","www.encodeproject.org%2Ffiles%2FENCFF369CAQ%2F%40%40download%2FENCFF369CAQ.hic":"4236629448,36479","www.encodeproject.org%2Ffiles%2FENCFF053VBX%2F%40%40download%2FENCFF053VBX.hic":"54305946375,47429","www.encodeproject.org%2Ffiles%2FENCFF555ISR%2F%40%40download%2FENCFF555ISR.hic":"54305946434,47429","www.encodeproject.org%2Ffiles%2FENCFF964RSP%2F%40%40download%2FENCFF964RSP.hic":"12065485229,36479","www.encodeproject.org%2Ffiles%2FENCFF234MZQ%2F%40%40download%2FENCFF234MZQ.hic":"17507142760,47429","www.encodeproject.org%2Ffiles%2FENCFF994CEG%2F%40%40download%2FENCFF994CEG.hic":"17507142760,47429","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb068e787-bbdd-49e2-9f6d-7a0e9f065d6e%2F4DNFIHSUIRFY.hic":"2701182442,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3768b89a-e124-40eb-8acd-94a4fdd35807%2F4DNFIXTAS6EE.hic":"3283740601,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9c513602-5abb-4088-8415-c827c381ab0d%2F4DNFIC3JD6O2.hic":"4896075767,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde954dad-1849-4c23-beb4-bf893b7d76c9%2F4DNFIGY85S4W.hic":"3364151996,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe1befa6e-8067-4296-8db2-67d2a2458985%2F4DNFI2LTNXME.hic":"3699291418,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbb3307fd-7162-477a-87c5-52f12d03befc%2F4DNFID162B9J.hic":"3576428773,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8597cdae-8319-42d9-9175-3f77aaee34e1%2F4DNFIQWS3632.hic":"4022561190,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F327f091d-6a63-47c4-9752-2dff303a13d9%2F4DNFI6GFHB6G.hic":"4239331168,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd70dc3b8-48a7-42c2-bd23-80bc44fc2266%2F4DNFIS5F6EBL.hic":"4404671861,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77df7bf8-6a3d-407a-8968-4ca1e78d2269%2F4DNFIF2D3TL9.hic":"4793989394,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8f7cc35-d2ef-4717-9009-c02154050fbf%2F4DNFI6EIFUZI.hic":"3370273763,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F98449d79-30d1-4e32-801d-07435819a42f%2F4DNFIRKGMZRQ.hic":"4669813207,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd4fe1844-2493-4722-8b98-34a93a4bb7d8%2F4DNFIQWD8ZYD.hic":"5379889057,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1ee40499-1de4-47ff-b540-d9a65943c6b8%2F4DNFIX7H3CE2.hic":"4857679239,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac016170-23a7-4111-8773-353d6c150f34%2F4DNFIO21YDCV.hic":"4695989644,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1faea4e7-9a32-466e-a826-0bfdab6cd915%2F4DNFIUE5RAS6.hic":"4788044799,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcbd396ed-11bb-404f-aed9-ef10abc258e6%2F4DNFIFI6NIKJ.hic":"2069414927,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3f78db-ae92-4215-bcae-76d30c617e5d%2F4DNFIL5K3MA1.hic":"2585598247,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66fc2893-224e-48b4-bdb0-25e022dedd03%2F4DNFIPV5KFMK.hic":"2060965679,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2b39781d-aadc-434f-abe3-562d61308fdd%2F4DNFIW8TIFI5.hic":"1694424195,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6d28f7b-27d3-486f-b5ac-32567416560d%2F4DNFIA6NSSBJ.hic":"2219532611,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F08785616-722e-46bb-ade2-2fdd21324e11%2F4DNFIBKZK63V.hic":"2429136232,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F904b13d3-1203-42a4-812c-963e80c159b1%2F4DNFI3CFMRID.hic":"1233390166,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0ed4afe-5ecf-451d-bb1f-444697e3f558%2F4DNFIYIAUEPW.hic":"1753567534,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4bb9a9b3-12a8-4d2f-8071-4722294c88ea%2F4DNFIC3HAU11.hic":"2271375254,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5abf9c36-c1d1-44dc-8197-74d860d896c0%2F4DNFIM2BMJ33.hic":"1770471113,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa68475db-7816-4cec-b2da-d4ce4a0c7a0e%2F4DNFIBY3UHJB.hic":"2095528423,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07c40943-0d0b-4b3e-94a0-8583b0e00b47%2F4DNFIWZEN3FF.hic":"1558559508,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8a39553-2718-4866-9b2a-45d8e9c5ac6f%2F4DNFIE5TEYK7.hic":"1323063102,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294b61ef-5565-4f04-ade9-f921a6686cce%2F4DNFI7H4II2V.hic":"1436947982,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a70ad7-7d34-4302-9c03-eb824bd4e633%2F4DNFIAS8LV1C.hic":"1263105698,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9db804c6-5a91-4cf5-8ae9-e054223afb77%2F4DNFIBXWIH8J.hic":"1587059951,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd1e55906-ec8f-444b-8ce1-2de22a431a76%2F4DNFIO2HBDAI.hic":"1666436393,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a4b9b37-8e38-470c-8190-fd4d513c0bbb%2F4DNFIXWCLD4M.hic":"1513511880,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7615b2-5310-4bbf-a605-98761d3a3079%2F4DNFINASC4NQ.hic":"1420358914,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F20454014-49cd-4e2d-93da-f40ad52776d5%2F4DNFIZF1KI43.hic":"1377041630,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5df04e86-ee2a-45f2-b878-bf1648e2cca5%2F4DNFIQBHR9XC.hic":"1179502734,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1cc910-bb3f-4106-802a-73184c58d5ba%2F4DNFIQVMVRP6.hic":"1811976991,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe431986b-0732-460f-92ff-0abd1694d2d0%2F4DNFIJ7OAIFQ.hic":"1685503856,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56d0c575-4962-4ea3-92c3-55bd0e17c096%2F4DNFIE8E4ANZ.hic":"1598369564,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb1502fb-a989-4ef9-b800-7eaa7be172ae%2F4DNFIOUSETUP.hic":"1493294709,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Facc2f1c3-8c96-4d21-814a-3a8ba81e7741%2F4DNFIVJ3IIQL.hic":"1472376655,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F037fb4c3-8641-4953-a977-cc71f2137582%2F4DNFIHN2QSMX.hic":"1179632606,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16d2c3c0-6d29-4815-b074-b142af90b615%2F4DNFIILDWK8M.hic":"2280059989,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31789849-e4db-45d8-9730-66a048c02d8a%2F4DNFI6XD6JAQ.hic":"2253961696,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fff04947e-e6e8-4d62-8374-ef2ee4104809%2F4DNFIALNLR78.hic":"1914687914,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F53e6c1e7-9410-4158-84e6-57c2e683b095%2F4DNFIBT4EAKN.hic":"2296378356,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0127900a-258f-4815-97d2-6fd2b043d853%2F4DNFIDJ2JZ7Q.hic":"2558945393,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F89f95693-3d28-44eb-9d45-14932f8e258c%2F4DNFI8JFOAJT.hic":"1726440253,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd803d818-b0d4-4796-8d61-a9f3943f3b10%2F4DNFIRZA6EV6.hic":"1805017504,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff9165fb1-0782-4757-a740-5b929e0252bb%2F4DNFIB7QTIMH.hic":"2541020707,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8d916b2-b58e-4cdf-894c-ffcb3bf6ebd9%2F4DNFIJ5DQZVK.hic":"2445734043,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14066a5b-e01a-43c2-a468-b18826174df3%2F4DNFISTWNV9C.hic":"2499319890,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd0692151-7f9a-4475-b059-f8802616dded%2F4DNFIBN9K4V9.hic":"1591570769,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70a7ef36-a514-4e45-918f-47c4e9e30ef4%2F4DNFIR8OU6QJ.hic":"1689882108,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F180306cd-8593-413a-ae83-24f19209c5d2%2F4DNFIDSWKFF5.hic":"1596696630,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e7b9be7-f465-4434-8e9c-68d1e44a76af%2F4DNFIV239W4L.hic":"2345867406,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F55df948c-941d-4930-854c-6a07557a0c1d%2F4DNFIREVU1Z5.hic":"2254683002,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f590cb7-df3a-498f-81c3-d5ed4179b8ad%2F4DNFIFHU75I5.hic":"2497670883,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8f064770-6008-4f74-bfca-268d4a22d745%2F4DNFIMROE6N4.hic":"9850583704,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa93d0588-76b7-4ccf-933c-4325876b0a53%2F4DNFI5SUHCGZ.hic":"10364705187,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f5f0d6b-0b22-4936-93c9-0944d49c037b%2F4DNFII84FBKM.hic":"8836986129,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12e90fc5-0b76-4e42-b346-58d267f9ad6e%2F4DNFI2J1ODWB.hic":"13410858286,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2702a45-3e8b-4980-bcd5-6bb0e291614f%2F4DNFIJWBWE41.hic":"20515676755,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa0859349-5f06-4ad3-b56f-b1166b34a9eb%2F4DNFIIMZB6Y9.hic":"15350325963,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12685c57-d54a-46fa-9efb-acf34ed77574%2F4DNFICJECID5.hic":"1525002266,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd101a58e-89aa-44fd-96c5-6bf1e2476272%2F4DNFIR6UW2QA.hic":"1264999913,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8c73bf-1335-4af4-b124-e3622d48c5f6%2F4DNFIGOEKBUZ.hic":"1905947578,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcd2477cf-6ed0-4d7b-b4e9-88fb38b0df48%2F4DNFIMDNAEW4.hic":"996444147,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0f03953e-29da-4f2e-8c05-572d0edf4525%2F4DNFI5OSZ3JC.hic":"369361754,22829","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F29d95dbb-005a-4ae1-8b9c-0fec9ec0bbd0%2F4DNFI7KOUGFM.hic":"1227434049,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa441ab7b-afbe-437d-bf98-b6b916558642%2F4DNFIGKX4A32.hic":"883933242,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F941b2f94-2fff-4d3c-aceb-fee4a5ae41a9%2F4DNFI1ORHOTA.hic":"1140970677,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8720ede9-093f-4c00-912f-373283260a16%2F4DNFIWSVLZED.hic":"458091151,26979","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9e17155-2b62-4a68-afb2-31dfa674e169%2F4DNFI6H926RO.hic":"3552863515,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F22f22778-987a-4dc0-97bc-f26eae0156d9%2F4DNFIKTYSPOF.hic":"2939475400,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40f40192-0acb-44cb-8778-8d21afe593fb%2F4DNFIZ4S52BV.hic":"3067438113,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8767374-7018-4e11-9226-bf5612d39ebb%2F4DNFI3APMXHF.hic":"3258874744,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c5140ec-a65a-4186-8c59-2927233eecaa%2F4DNFIQLIKDSD.hic":"2746398416,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8cdedda6-d7d8-4231-a85b-d56fcd962366%2F4DNFIKYXMF1E.hic":"14442148774,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa4d4497-7c6c-4dad-8040-be13ba07ea32%2F4DNFI9815EEJ.hic":"17960817603,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9b7b95f-190b-49fe-8047-ef4a8fc59746%2F4DNFIQ2687RT.hic":"15954277087,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F59863d3a-8d7c-49c7-9a41-7f2a58ad24d1%2F4DNFIYDBBSE3.hic":"16499534862,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e80ca41-b3e0-4f4f-a05e-8f95fe96d938%2F4DNFIMOCN1YS.hic":"863725312,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F96f97a01-0020-4f09-93e8-fc8a9fd07218%2F4DNFI6558CM8.hic":"1597967345,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fce9e9334-ee0b-4549-a845-110470ba5986%2F4DNFIQZRKS7Y.hic":"907626411,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaac8209-1015-48da-9e31-2e252dfd8fe0%2F4DNFIX4DLXSE.hic":"1369766288,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F268b7d52-9655-474c-9467-8ba31bb2195c%2F4DNFII3JV8I1.hic":"856656441,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9681f9b5-335a-4f56-afa1-15b58bbb41e8%2F4DNFI5IAH9H1.hic":"1495185175,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e082eab-95aa-4677-88ed-9d7adcc1effb%2F4DNFIK5HY1GP.hic":"2135337789,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31af1ead-4520-4669-957e-424b4b197c33%2F4DNFIFA89L5B.hic":"1975593640,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcc2b78fd-52d4-4e0c-ac93-b84ee82daf7e%2F4DNFICXCFGEI.hic":"2628202920,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff54efece-280f-46ca-95e3-1f8a3cd18820%2F4DNFIK4CECUH.hic":"1901129375,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1181c0c4-afb7-4b6a-9fdc-d868fb2253fc%2F4DNFI1EYIGOC.hic":"1947135384,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1d3e2905-b9b9-4b91-bcb4-8d34746e78f6%2F4DNFI7TLEWUI.hic":"1185758726,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faba3d42f-39cd-4a85-9d3f-835aefb5c803%2F4DNFIVCJKHMN.hic":"687240974,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F27f54fcb-54fe-41a4-b25a-2f8944c89044%2F4DNFIN8F14CS.hic":"1304082029,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb75fedb5-88f4-4bc0-8e38-298df7847a7f%2F4DNFI5LCW273.hic":"12497258313,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f22b2a0-3712-496e-92d2-63775ec0e421%2F4DNFIVSCH2CH.hic":"12594733778,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07e47261-5863-44f5-9198-76e263081bea%2F4DNFIZ268JGC.hic":"1499059135,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F682b1ae1-3ac3-40e4-a330-c49f63946952%2F4DNFIJ1P4HBI.hic":"1190211725,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F197e7c89-ea73-41de-8cb2-8c0b1e3bb945%2F4DNFITEGKBIW.hic":"2061501971,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F191f6928-c9a8-44b2-8516-ee4d6005f24b%2F4DNFIE1P6RVH.hic":"1711447310,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F94435086-3701-4b28-a6d0-4a59b24d7615%2F4DNFICJ6I4DO.hic":"1557899940,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa9ac173-d233-41c7-8985-ca91949664e4%2F4DNFIKUG8MEW.hic":"1339072088,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fba6d8ab6-ee18-4ba2-8da9-d631888dd50a%2F4DNFICFZGFAV.hic":"1261083478,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a3ab04-7094-4673-81e4-ac8c9add8eb5%2F4DNFIQXCZVVA.hic":"1084913802,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc1ff488-82af-4579-9424-959184edb139%2F4DNFIB6PJFJ3.hic":"1114571343,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f7026ee-987a-41e7-8a61-45510ee3f86b%2F4DNFIX97731O.hic":"1246860402,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6186787c-2e72-4925-9729-02121e2e4597%2F4DNFIYQYZOTO.hic":"1212210849,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b98a946-0109-4efa-a13e-cc7a36772125%2F4DNFIPXU7V25.hic":"1696288217,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fea17d041-c6ed-43a1-8047-535f3d19ad44%2F4DNFIL39PR76.hic":"1719284710,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72774afe-f166-42ac-9849-4070b0dadf6d%2F4DNFIYLJ3R3B.hic":"1106419640,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a45e733-55f8-4a8e-be24-2ef34c976e25%2F4DNFIL51WBN6.hic":"1327651164,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F086c62b0-a26f-41ae-a5ff-88b8be2bd2aa%2F4DNFI6SFPUDA.hic":"1336964405,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4d9b79c7-af62-4070-84a9-b953903f2732%2F4DNFI2KM22QR.hic":"953067310,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c9889d1-f49e-4639-8e15-2d99d6cd22e7%2F4DNFIVF8Q45U.hic":"984193565,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa080dd7b-b7bb-4eae-a275-572a8b45b2d0%2F4DNFI2RN3WFP.hic":"1046525527,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb81860ca-c227-4b68-a298-1907fd32300a%2F4DNFI4TJTL7A.hic":"1160373401,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F74ab47dc-7b52-421c-845e-6feb33457adf%2F4DNFIYJ4TWB8.hic":"1268416204,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc6582128-a930-4bcc-941e-5c0733bdd4d5%2F4DNFIM6RGKPV.hic":"863347067,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11a75514-4450-4295-9eda-18e3678a575a%2F4DNFIL2VWWL5.hic":"860731581,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5eb52a8c-bf14-4225-bf34-14a0aa47c369%2F4DNFIX6ZXCA8.hic":"893462267,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66aaa4c0-1f62-4040-8ecc-4e95da23cd18%2F4DNFIEVR81FS.hic":"879736207,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F821c6e7f-96f7-47de-b7d9-4970562b3c8e%2F4DNFIAUI6BBI.hic":"996313881,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9252c362-31ab-413d-a47a-cc97bdbf243a%2F4DNFIAFEE9G2.hic":"1103265750,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc1a0bf52-2e65-4deb-871f-ede736babd41%2F4DNFIPZBEXCP.hic":"1081257762,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F729f5ce3-d7e0-466d-b781-d18049e63bfa%2F4DNFIWPKRZGU.hic":"973779283,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80b769ee-a717-4825-9db0-dca86f913173%2F4DNFIMD9QNDX.hic":"1158688208,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F266290c0-2767-4158-85ab-7274368905b9%2F4DNFIATA1HD5.hic":"1073361089,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc46f18a8-eb24-4d35-b112-36db72bde2f5%2F4DNFIH9U4I7I.hic":"1111124316,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fec91a79e-7de7-49f7-9b3d-d28313aeddc8%2F4DNFIZ95S6TR.hic":"1242494051,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e9390b9-da20-43bb-a8f4-9830f354ddf9%2F4DNFI5ERM9J7.hic":"1271051397,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee8ea82e-b9e4-41ad-bced-5f4fbdaa4fec%2F4DNFI15FPSQL.hic":"1216714120,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbed7eb86-8990-42f2-b3ee-5992d6361f7c%2F4DNFIJ3DZPGM.hic":"1035089437,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaa8a324-3bf8-424c-8a86-b8ad325cc20d%2F4DNFINW9P6XF.hic":"1215712740,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70631758-6bf8-47a0-92b6-132574886faa%2F4DNFITS16HW8.hic":"1105283847,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe473304b-7bc8-49b8-bba1-ecb9f06914ee%2F4DNFIS3DIH4V.hic":"1036056660,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F10f9224a-111c-402a-ac25-e221ad0af9ef%2F4DNFIY3KDHP6.hic":"1071761024,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17519b96-2bdd-4294-98f0-1535f1aef28e%2F4DNFIO8HVKOL.hic":"953793750,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb18f896-4730-4909-86a3-867fc8e76cd6%2F4DNFIMF6CFOM.hic":"708717889,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcfee4d87-0873-40b0-b79f-35dcc8669c1c%2F4DNFIZZ77KD2.hic":"732668723,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8b5d909-8a1b-41bb-bcdd-d108a0bde762%2F4DNFIOLO226X.hic":"951271932,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ce81f6e-b9cf-4ec9-8bd3-517539e4b662%2F4DNFIJMS2ODT.hic":"932509067,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F506aa952-5d41-49ff-b658-916bcf88a395%2F4DNFI49F3LJ4.hic":"1208494817,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4dc392d-ca36-4bdf-a27d-173cae34f520%2F4DNFI65MQOIJ.hic":"854630155,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F149ef8d7-e0b4-4e4f-b7e5-7226e2603746%2F4DNFIM4KEPRD.hic":"882790622,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa436f0a8-4f9a-4524-90ac-795c5b8491cf%2F4DNFIIXBIZFC.hic":"848244425,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc8a05dc-7449-4b01-8330-a55db37ca8e6%2F4DNFIWDOOBVE.hic":"1116239020,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faef8b881-28fe-4694-9a95-1d31940e6726%2F4DNFIDT9EB5M.hic":"888289053,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff66f3162-a53d-46f2-8800-3752935d5400%2F4DNFIX2VUNV8.hic":"1226661451,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F36c782e6-2c48-4298-aa43-bd6624da003d%2F4DNFIEQHTV1R.hic":"804665819,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff15d571e-605d-4bcc-a359-0350b57a6815%2F4DNFIFW7GA64.hic":"901568712,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2aa2e8b-ac7f-4acb-b4b5-ac5f845840fe%2F4DNFIXGXD67I.hic":"970995551,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F71b6fd7d-b249-4d65-a597-b80b95845399%2F4DNFIA7GB1NB.hic":"956785837,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cbb1418-34db-427f-9273-5174eac81529%2F4DNFIVOJGWNP.hic":"890415052,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc69c2ee7-b6c3-4a62-8d4f-913491c9dab8%2F4DNFIW22BNB5.hic":"1075499540,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa268f28f-c6d9-4324-8989-75d2d317af1b%2F4DNFIIFBC8WN.hic":"1045459440,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7361d4-60a6-440b-b5be-072cada98663%2F4DNFI9ZBEBJH.hic":"759395398,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcceaad1a-e01e-4430-8bd6-24ffa6891802%2F4DNFID4SLU53.hic":"921288444,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9eee5854-b33e-4d5a-9ba8-ceffd47e7488%2F4DNFIODI1NUJ.hic":"733159777,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5e1089b0-42e8-441c-99bb-4be99bcec28b%2F4DNFIJL26LFN.hic":"723567970,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F298a429e-ea29-49d3-bfed-fa851e1e7c4c%2F4DNFI5KTF553.hic":"2213661745,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F965d29f0-e4a3-477c-8ae4-faf4a654e69a%2F4DNFIYSPGFGV.hic":"2274989349,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd88acbc1-37b9-4266-9f97-d8fed576d0f3%2F4DNFILOR6D2D.hic":"2595459358,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7b6ddbce-0ed1-4272-b8ae-32793e4ea4e4%2F4DNFI1WMMPJQ.hic":"2262433890,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fedc0c8c4-97d8-4372-9a4f-5e0cdf09d7d0%2F4DNFI47P5978.hic":"2146314403,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0edcc389-43a4-44d7-b946-fe3496f93d56%2F4DNFI7XGW6IH.hic":"2302805723,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0a802926-e235-4c80-b521-83a1774dfb46%2F4DNFIK1EJG8I.hic":"2374943035,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c36aedb-6a58-4aa2-9b11-bb440ec174f1%2F4DNFIDQ3THN9.hic":"2341188249,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F846123cd-8828-4e51-8b8a-27deaf293858%2F4DNFI3WPNFWT.hic":"775145629,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd06e3ad-0e37-48a3-8367-c7d5912cab03%2F4DNFI9DCUOQ1.hic":"870487824,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2eaf9bf-9584-4cec-8685-bd74038a6c01%2F4DNFIU8AF5ZY.hic":"1276224366,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F219497b5-3f35-473b-9d4e-e1cf21c69561%2F4DNFIHW8NTQX.hic":"28864787856,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4be13558-114a-4f2d-abca-7598e2ff4757%2F4DNFI4OUMWZ8.hic":"17061013588,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49aed637-87a1-4d4d-ae68-e5da82aec05b%2F4DNFIEYQ5ZIR.hic":"13555272651,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa2f48779-4eff-44a6-8a9d-96435aca1ddc%2F4DNFIDZT7PR8.hic":"13425047093,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6ec6b71-27b8-4891-b10a-ab06a5270468%2F4DNFIEJEFCAM.hic":"15394960208,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F68b9a7b5-8413-44fc-8c2d-59a67b1c4166%2F4DNFIJ8JKKWJ.hic":"17012681779,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294d45a4-8b5e-456f-a9cb-1cbbbad3a7d2%2F4DNFINEQY95T.hic":"13966775978,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd7f3a48-b822-41e2-bd9c-f52b3aff7b6a%2F4DNFII6AN691.hic":"12367300362,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7da44594-0dc8-4e74-8e10-a957aeaea51a%2F4DNFIDBIEXI7.hic":"2015474981,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F085a0453-3784-4eba-80b2-3556e53e2f52%2F4DNFIDKJFK2S.hic":"1983111659,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc370c78c-0a99-4c3f-a29b-2dfafc6a3e86%2F4DNFIPAF4PYT.hic":"3041434294,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F907ce45f-baa5-416d-92de-e86db4bacff1%2F4DNFIWIYYNQ5.hic":"7082321112,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff13afc6b-cf69-4c9d-881f-eed4dd3c28ee%2F4DNFIHMCILEN.hic":"1739157603,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7575d891-0e3d-4a77-896a-3e1b3a8d330b%2F4DNFIJBJ6QVH.hic":"5213499748,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0daa830-60d5-4c7c-a2e1-a4ee70b3fee7%2F4DNFIH2A7IKF.hic":"4099503507,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4970a25-91d8-49a7-9a4a-fe0f12cb2b0f%2F4DNFIOL8KGQ2.hic":"2256042055,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879f1850-d175-4a86-8a97-12658482e3d1%2F4DNFIWILLD6C.hic":"5476286356,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F787f538e-d619-4c8f-985b-78753fb7e57c%2F4DNFIZBXXJAF.hic":"5946467856,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8ee785f-1016-4989-9e64-78352621d32f%2F4DNFI8PZOJHN.hic":"8307204961,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8997fa-528c-4531-b25b-a412de6bd472%2F4DNFIGXAMSJY.hic":"6577588285,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87aede55-7610-4283-af0e-c6840429a31e%2F4DNFIWNNO89O.hic":"2871061417,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93b8e020-b337-4685-81dc-40cc8a12b5e9%2F4DNFIXU2KPNQ.hic":"3401717686,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb5cf1bd-59d6-46fe-857d-b86d9756029d%2F4DNFIHBGD6N6.hic":"840028421,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2d1bc088-d838-49b8-85fc-fea78a7353c4%2F4DNFI7J8NI4A.hic":"675705256,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a27b63-fd67-401b-9aa2-2798e6588d21%2F4DNFISFM9VFK.hic":"800145922,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F656c0a9d-7058-4c4b-a3ce-701d929561c1%2F4DNFIJU5XBK7.hic":"966593603,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2efacfbd-9c81-4e62-8df7-847d1ab774d5%2F4DNFIPKY8ED1.hic":"3401629450,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa50b6a26-56b5-43f2-b525-fa219fd716f1%2F4DNFIQRTP7NM.hic":"5358852759,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5dc7a59-b998-4490-8a76-afbf3b258a49%2F4DNFIBCIA62Q.hic":"5779049277,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62b2b237-cb02-45f7-89d9-616cf9ffb678%2F4DNFIV56OFE3.hic":"5818844506,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ac79b4f-cfbf-4b2a-9fc2-898ed6c3e5e1%2F4DNFILIM6FDL.hic":"19637469163,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cff8afa-5a13-4ad4-bcad-91fc3ced759c%2F4DNFIP71EWXC.hic":"17934647326,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F000789fe-9a22-4280-a71c-7ad228fd4cac%2F4DNFIM7ZVQOQ.hic":"700134697,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8d78457f-0c2b-4358-b08c-4d4ef4d9f59d%2F4DNFIS6EYHCX.hic":"628314484,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ca3b4a0-2478-49c9-b4a2-a28430417a32%2F4DNFIKKCMS1Q.hic":"584050634,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5041473-18ec-439d-92b1-8ad98c9b25c0%2F4DNFIBIV8OUN.hic":"522632731,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcf474ec6-abd4-431e-a21c-252fcf5ee6b3%2F4DNFIAUMRM2S.hic":"313395531,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bb1c73e-fb0f-41c4-8620-a938cc8d24a0%2F4DNFI9ZUXG61.hic":"332217525,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F26dfa41e-7e4f-457a-a3ac-72daf8059f3c%2F4DNFIDBFENL7.hic":"359604894,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ed2e68b-189e-4988-bb6d-94e63240a231%2F4DNFI7XAZNNQ.hic":"5312422266,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6f2b1ce0-5205-4680-981e-d91b694dc3e4%2F4DNFISNGDB53.hic":"2008546759,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F73c8147f-bc7d-4d33-8a10-a9e7b413ecc6%2F4DNFI1CIGHYC.hic":"2221847625,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F526ae3e3-32cc-4670-970f-1faa9cfafd4d%2F4DNFIQD2DP2F.hic":"5295591503,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e803530-47f8-4c56-bb19-fbdcd578d2f0%2F4DNFINHT8P7C.hic":"3159499486,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe705f38-903f-47b7-9b38-f80ebd18a479%2F4DNFIGF8EM7M.hic":"3490552542,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa197328-d6da-4299-a0fd-409ac9892668%2F4DNFIUPG2ZBJ.hic":"5382003751,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe5d52c4-2be7-4812-bca0-cd4bb3025e6b%2F4DNFIH3OTR14.hic":"3224693110,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21935f61-daa8-4df2-aa69-fcd27953b405%2F4DNFIUATRW3Z.hic":"3835865655,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72147527-e3e8-4967-bc45-8251249d76c9%2F4DNFI6V7ZQAE.hic":"4382708138,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F589f0919-f54d-49ff-a482-e2f453ef7f34%2F4DNFICKMT1CY.hic":"4479068191,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F861946ca-bad8-4a87-96e1-b2eb20b9ef10%2F4DNFIF9BDCNI.hic":"3698151402,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff76346ac-97ec-4893-8984-2b75ce1cdc51%2F4DNFIG5O1OQS.hic":"5704288175,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe8b43826-f049-4c3f-b83a-e75fa7aacc85%2F4DNFIHS2SVBQ.hic":"990025510,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46316260-f555-4dd4-9e40-8ae06ca52822%2F4DNFIU95B69H.hic":"1275878544,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff62ef491-a3ae-4f66-ab33-c5673c9e0b65%2F4DNFIYRROFCR.hic":"1522530503,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cd617e1-fad4-4fdc-8b4e-cb277650123c%2F4DNFIF7JN3IU.hic":"1463443128,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb20fe2a-0078-4d4a-8a52-d76043d06f40%2F4DNFIB2RYULQ.hic":"1269529700,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d386fcf-1d22-47de-a0d6-0c3a641ca174%2F4DNFIMVDK3SI.hic":"1185489599,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F00e470bd-c533-41b1-923a-4b471824da12%2F4DNFIRLOTXSC.hic":"978217499,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8774fb3-d0c5-43cc-a6c9-eb0ca39841fb%2F4DNFIZAPX6J8.hic":"1100356082,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fab3b826e-614c-448b-860f-a3ebef68a82f%2F4DNFIQD5VCSD.hic":"1322319877,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66c78d2b-993a-4937-95ed-9e2d302ceb3e%2F4DNFIIF6VAGN.hic":"868885799,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5d106fe1-2d80-466e-87aa-46b38ba142c5%2F4DNFI86IEZXH.hic":"751443267,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc99490b6-faf9-413f-9c38-3f53018089d6%2F4DNFIP881SR2.hic":"754427927,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F39c7e387-e710-4b1d-b757-357dec03f6ad%2F4DNFI42NNCW8.hic":"1166392978,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4742a211-43b1-4325-af6f-82490aeb766b%2F4DNFIEV4PKP6.hic":"1102227476,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaa73842-1c86-4ad9-8a9e-c189c0b4c01d%2F4DNFIF1DUQHE.hic":"1206699207,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd25f24df-0298-4079-bb6f-1c8e1e32392b%2F4DNFIGW55EAY.hic":"1033358104,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc57a7ab5-2778-4fe2-9d64-9a4e95135f12%2F4DNFISZRU6I4.hic":"1539570262,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd89f494a-27ca-46b6-89be-7583f3f6d18c%2F4DNFIBKKDTAP.hic":"350372180,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F06725280-cb24-4f22-a267-18b434bfa79e%2F4DNFIJSRQW24.hic":"314361467,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8fe5c3c5-006f-425b-ac6d-ea475e29be78%2F4DNFI3REN89E.hic":"299665258,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8b6ac5c-13b4-427e-9158-cec0b890b6d8%2F4DNFIF5XLHKM.hic":"235668364,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F01ff33fc-fc23-48aa-a6c6-b720d6fe0768%2F4DNFIB6Q538N.hic":"316494853,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F552978c8-abbc-424a-9187-3e34cf802a97%2F4DNFI3ST3F7Y.hic":"296298411,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72e66520-5170-4f2e-844a-fbfd0e23b480%2F4DNFIQT4M6UI.hic":"307691265,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb3eb3953-ffe8-4d5a-970c-a16f3b7b9ec3%2F4DNFIFNCC7M2.hic":"364160436,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F37d413fb-afab-41ff-99aa-1678830f7dde%2F4DNFITM9MDJL.hic":"252412426,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf5db92c-aaf1-4086-a0d2-79b28648f172%2F4DNFI3NTD7B3.hic":"227586640,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6892f7b-1f8a-4d7d-9605-c67932cd5654%2F4DNFIBED48O1.hic":"328344868,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd64afb07-5ab1-4c4f-8438-2fee37afa86a%2F4DNFISATK9PF.hic":"379669025,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fad11bb63-8692-461c-b698-89c601451321%2F4DNFISRP84FE.hic":"298491537,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F63710ec5-35d2-47dd-bf9a-08d3daa83d67%2F4DNFI2LY7B73.hic":"303150299,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76077d9e-ca75-4301-ab79-88aa49bda495%2F4DNFIXEB4UZO.hic":"711757090,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F34dd4c0e-3487-4fb4-b95f-c4bb66e0fa31%2F4DNFIQWWATGK.hic":"221304476,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F48a8cf86-3248-4a8e-8e85-472ec219d49c%2F4DNFI44JLUSL.hic":"284772724,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee399fbf-2a9e-46e2-8364-457713bff508%2F4DNFIM7Q2FQQ.hic":"330729464,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F124d191a-c5c7-49b6-b84b-0d1bad8bef2b%2F4DNFIZK7W8GZ.hic":"293166018,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe351f7cc-7a2c-4515-ae0b-3bb2f91c986a%2F4DNFIMIMLMD3.hic":"240094740,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffd1ae249-57b1-41d6-81a6-16b21dcd8f12%2F4DNFI7QUSU5J.hic":"681762505,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46c92c5c-9ad8-4d49-beba-f35c5cd99208%2F4DNFINXUOI5H.hic":"375594313,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7350d40-4e9e-4131-9151-bb539d39b431%2F4DNFIIJR2296.hic":"331322302,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfacf37b-1665-45f3-a046-e29e1544e9b0%2F4DNFIJMZUTXR.hic":"361313244,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F234e18fb-9990-43bf-9a48-f72722cfa232%2F4DNFIZQPT9EL.hic":"540421873,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b35ab09-2e79-4876-b2bc-d3a8faa26257%2F4DNFIZIXSZ9J.hic":"545066813,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae5118e-807a-46e0-8e92-143d4b282b3d%2F4DNFIDD9IF9T.hic":"237409149,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb34d7f6f-73f7-4b6b-80c7-c8af0f991549%2F4DNFIVC8OQPG.hic":"355121712,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ab169fd-cbdd-4f60-8553-a4c6912ad89e%2F4DNFITUPI4HA.hic":"313085022,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4e53712b-d0d9-40c5-afe1-ffa0fad71e59%2F4DNFI5IZNXIO.hic":"341863906,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a91477f-45eb-4a16-affb-fc131f9326b8%2F4DNFII16KXA7.hic":"248904495,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F153729de-0eca-43cc-9b61-61aa8d775b38%2F4DNFIAAH19VM.hic":"668047244,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879fd78a-7165-43d9-a0de-ca158b53df30%2F4DNFIVKIY3KV.hic":"247571318,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f901a4-040b-4b04-9fff-94a1780423cd%2F4DNFIVVCWL6C.hic":"198355985,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd5b30c5a-654a-463c-9474-39bdc3ce4500%2F4DNFIJRF2273.hic":"343971277,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7070280a-8f03-40d0-9fef-e9d9f4d3dae7%2F4DNFI6FCC9ZA.hic":"312013061,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F47049719-9407-4d76-9048-26231045f642%2F4DNFI1CPQ4O3.hic":"352923267,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F862c2b5f-44c2-4bd7-9264-b3ca032d3d8d%2F4DNFISXFEDE9.hic":"271745977,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feffbe052-39ff-4217-9871-44199ed90818%2F4DNFIF9L6QEQ.hic":"668409334,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa7791854-1b35-4258-90fb-603c55f24642%2F4DNFIPKASX1Q.hic":"312727920,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79cccad6-a78e-4de9-9fe7-08f7e8df663d%2F4DNFIWXZ4JQZ.hic":"151808553,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7e86e0cc-d6f1-4ce0-aba4-c36c6ebb3c4c%2F4DNFIEMQ1O8V.hic":"700533280,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a1b58d3-9ae6-43e4-91cf-49f1fcbbab33%2F4DNFIYWONU7A.hic":"729050356,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67bff264-0b0c-4c5c-9d4d-ff5abef2bbe4%2F4DNFISNIE5FH.hic":"7987657997,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3a6a943f-2cc0-4433-a27d-c89f3fdd3309%2F4DNFIV8MLWJB.hic":"6646216171,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e235711-ba90-404d-b4ac-b15990ea8e33%2F4DNFIXSTDPHL.hic":"3146468238,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c89f4bc-e9fc-4ecf-b868-26108dbb7bb2%2F4DNFIQJNOH8U.hic":"2919703928,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1856ff9e-de7a-4fa1-ae0b-3e04b837b5e1%2F4DNFI57XB4A8.hic":"13417594377,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F099bb5b9-6315-4650-8f78-d603f5a046b3%2F4DNFIQ7UKVZV.hic":"9016468637,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3c7a30-0fc4-410d-8d41-247da3eb105d%2F4DNFIWJY8GHD.hic":"7921314766,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda99f429-20ab-4d91-bbfe-f8bdea8ed7b1%2F4DNFIN8NKRNF.hic":"4247121358,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0ca0f4e3-30ca-4332-b735-e32dce08e1a4%2F4DNFIZYGEHNZ.hic":"4910404663,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F243f48b0-6b59-4f37-ad39-a12e0986f530%2F4DNFIRPYGAV8.hic":"4220073636,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49f1a890-d458-42a6-9c78-99c38b6c7a8f%2F4DNFI6MZTDM1.hic":"375035361,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76bd4768-9343-44ba-a99d-5500e184e39d%2F4DNFIG3BCGPL.hic":"2422923206,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1ed866-eaf6-4906-aa8c-9e39616dde38%2F4DNFIS9YPJ3L.hic":"1593271574,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1e7a5636-bdb6-45fb-85d8-87a7e908de43%2F4DNFIOWGA9AX.hic":"1632314387,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ecc552a-0a6b-49a9-9aa5-9f3fd9b535fd%2F4DNFINKEDSBF.hic":"1458761024,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c03f1d2-bb25-4c94-b5f5-d5cdd01c14b6%2F4DNFIVIXVUK7.hic":"1504818271,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1a4616ff-6d04-4a6a-9773-b80e81da2471%2F4DNFIANHFY16.hic":"1850724180,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd2231870-a78d-4c8b-9cfd-084f2468acb1%2F4DNFIJ67ZFBI.hic":"1473864703,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F859c2dd3-df8a-42b7-86ea-bf6524f75e80%2F4DNFIG3YQQ4V.hic":"1539822829,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8bad667e-6003-4828-9a20-07585fa9c811%2F4DNFIOLKEOME.hic":"3036353747,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F92ea551b-5779-4d31-a0f5-621e4bd0eb21%2F4DNFIVLN8WJE.hic":"2710426318,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61ee79fa-0617-4083-b121-f92ef3a8905c%2F4DNFI2111XQA.hic":"2589549183,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F83ebb98d-e5db-403d-aa23-875293156c0e%2F4DNFI88HXX7D.hic":"2462367030,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6d63671a-8f1d-4159-82c0-931b43464772%2F4DNFIUBM6QK8.hic":"2486020469,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcccb9014-ce15-4032-81ac-222b3d621cb4%2F4DNFIVILEERC.hic":"2052537210,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a07867-4007-4ca5-b066-25d3168208dc%2F4DNFIF7Q43N4.hic":"2091773428,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff738de0f-358b-44bf-97dd-644c8d9b1b1c%2F4DNFID56VJGW.hic":"878913568,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda97c1d4-bb92-4a77-92a7-f7960f88b9dc%2F4DNFIYUR29KO.hic":"983915575,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F54ea363a-99e7-4f55-861e-1644acab7939%2F4DNFIUDPGHO8.hic":"905253594,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcd66a07-55ee-48d9-a157-419cf4ee3eef%2F4DNFISWC2N8T.hic":"1233576358,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40363837-7466-4a1d-b20d-a66d1670b700%2F4DNFICMPHDMI.hic":"516590777,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0b3fa4e6-caeb-40b4-8942-e9c0b03dfe4f%2F4DNFIKMKN736.hic":"634310295,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6a34050-d52b-4880-91cf-d3fe4b0ce982%2F4DNFIN5NLS49.hic":"650451131,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8e63a47b-9fd4-4772-8b0c-10ee589ffb16%2F4DNFI4P8UBRL.hic":"705655033,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d92b666-30cc-4838-9d46-c1f11cee3d3c%2F4DNFISNC3LAI.hic":"176146197,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17f7dc63-a1bc-4970-b389-87d9ee93b753%2F4DNFIVBWPFD7.hic":"749678512,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8897333-4791-4a83-9444-a653e24aee13%2F4DNFITMQRXB7.hic":"254477361,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8712bf31-33d0-4562-ab0b-a1e9cf4fd30c%2F4DNFIUYD3HBY.hic":"995625724,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfaf6383-9cc6-4b5c-9b20-d3bf2e8c3495%2F4DNFIRRSC7P9.hic":"1149985362,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0b70598-5d17-4e0a-8831-6cbe697e69e2%2F4DNFIWKR8FP6.hic":"1151628407,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fccc094a8-23ce-4fd8-9c4a-41f07c045c8f%2F4DNFIQ74RSUY.hic":"931695969,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8eda16f3-af5e-4f1f-b46d-c74df44b76aa%2F4DNFI9IIO5PW.hic":"1077740364,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff283637b-cf2c-4412-ba00-0e3d7e279fad%2F4DNFI8WGJG19.hic":"812086456,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ad8438f-d3d9-42d8-88bf-42845a0dc2d0%2F4DNFIQ5CCESJ.hic":"652559720,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70e3bdcc-caf4-4822-b9c5-85234873db7a%2F4DNFIWTZHB4H.hic":"760694196,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56ed767d-cd8a-4d38-8047-ed1e8bc8cd19%2F4DNFIENYQCDP.hic":"1159428005,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa912fff9-5f90-42b1-a3a6-cbb9eb2cf861%2F4DNFIFATZWPD.hic":"1033325746,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21338ea5-fdee-4ad8-b61c-608fc6cec4bc%2F4DNFI7YRXKEO.hic":"388142539,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0f88647-5631-437b-b48a-4603915e3714%2F4DNFIUY3J7EW.hic":"407344788,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16926af8-ac3b-4f32-97d5-6c0dc6f1596a%2F4DNFIRKUYKP4.hic":"893352368,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93e39aec-6cde-4c5b-bcdf-283faa3163a2%2F4DNFIAQDBJZP.hic":"489922022,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0dc0b1ba-5509-4464-9814-dfe103ff09a0%2F4DNFIC1CLPK7.hic":"565748333,37769","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb50964c7-b025-49d9-b1ed-289bedb59678%2F4DNFI3A3VYWU.hic":"4597459343,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4390cea-b330-4022-88c1-9ff8c0a786f7%2F4DNFI6JJQKFJ.hic":"3678393678,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c0f730-5da1-4863-9b7a-6cdd31066cff%2F4DNFIK61ILGM.hic":"3324300994,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14b14ac4-ab59-4754-9c43-eacd9d0638e2%2F4DNFIYD8LO9Z.hic":"3227227120,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7386f953-8da9-47b0-acb2-931cba810544%2F4DNFIOTPSS3L.hic":"253942497,7557","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6b5d8bd-27dc-4415-a320-53405a16db85%2F4DNFI525PKU5.hic":"305089653,7557","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f922dbc-637b-4c43-b816-f604f0e79ad1%2F4DNFI8Y9SRP2.hic":"1438589609,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6a36d686-716c-4ba8-a9c3-fa8311791d3c%2F4DNFIP25GZGA.hic":"1419100109,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0e535542-2cf2-46e4-ba10-7a0b946a7fb2%2F4DNFITPO1WTY.hic":"3885296184,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c17d228-5052-4c83-880e-af05118e6929%2F4DNFIG4X5Z5F.hic":"2159245890,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc3977c00-525b-4556-9a27-061707f8cb76%2F4DNFIXLYR32S.hic":"587852728,21916","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f856506-cbc5-4211-a29d-48a7530c622e%2F4DNFIWI3V5LI.hic":"2318237793,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F38f77979-5eb7-4b6f-9a60-c2451185db98%2F4DNFI2DGL7LH.hic":"2068150664,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe0992a75-7727-405e-95ac-aa97141b51c1%2F4DNFI1VSO8JP.hic":"1807949651,21916","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe925f1aa-2e7b-44e7-bfa8-2084a613ab13%2F4DNFIV5O2ZYO.hic":"2242134377,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F803a6d3c-3972-4939-8ff2-d195c5192090%2F4DNFIEWEWQ8D.hic":"2981341325,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F25104375-a588-46e6-a382-663cee6c332f%2F4DNFICSTCJQZ.hic":"14592996888,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F927aa8a5-24a5-43b7-807a-1e99ac321459%2F4DNFICEGAHRC.hic":"15431307603,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c380474-12cd-41f4-b86f-2a29faf12eec%2F4DNFIY3XPKPO.hic":"2550999291,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77da562e-d0ec-45a8-8764-14fa16d995a1%2F4DNFIK9PS9GM.hic":"3401011629,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11b26222-d480-40a7-8d53-3ad8500396cb%2F4DNFIF4Y74JR.hic":"2127593378,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93df02c6-1047-43f6-afae-d3598b61eeea%2F4DNFIBBKG9KD.hic":"5724446278,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cd4378a-8f51-4e65-99eb-15f5c80abf8d%2F4DNFIT4I5C6Z.hic":"5419655766,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F067881e5-563d-40de-a9e3-caccad887fbc%2F4DNFI2U38HCE.hic":"14749043471,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcb3da9ad-7afe-4d0c-9c2d-261181e7a95c%2F4DNFIETP228R.hic":"9401474797,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F185b7bcc-7bb7-41b7-9ebe-92d4fe159431%2F4DNFIXKC48TK.hic":"11624295594,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F18459b84-dd43-4af6-a05f-bcb773096322%2F4DNFIFPGOWJ6.hic":"2843730862,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffde1e48c-4a0d-4bb1-b84a-e0e45f9a0aa3%2F4DNFIIRMBE8Y.hic":"5820677927,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbabed539-1f0f-4e87-8815-fde596e6024c%2F4DNFIVUGNDD7.hic":"5170782436,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d00531a-e616-469b-af52-5b028270e2ce%2F4DNFIFLJLIS5.hic":"18917549985,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a9dad53-b8af-4cb6-9ce3-5c38e4a855c7%2F4DNFIOX3BGNE.hic":"5482775936,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F82fd7b7e-5f47-48d5-bf0d-daaa48a4674d%2F4DNFISPUVQHA.hic":"2177864938,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4c6680f3-9cf6-452f-9dc5-ecebf376775d%2F4DNFI8649RQJ.hic":"3288850368,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2395f001-19d9-4000-9f00-dae3dea708d6%2F4DNFIE8T8JZ8.hic":"1383191843,21916","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24464fa8-bf96-483c-8e9a-c2f626ad6e19%2F4DNFIBM714BP.hic":"1765204569,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F918fc048-fa27-41d2-a63a-d50c511fbb9a%2F4DNFI6CWNUFL.hic":"2431120602,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ff5a0d1-8e54-4cf0-9fe7-339f147c78da%2F4DNFIZ4F74QR.hic":"3211825957,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F355f0412-cb17-452a-b15c-aba16c5a742c%2F4DNFIOUVOX3R.hic":"5547401083,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cac91c5-160a-4b91-a91e-edc309318dd5%2F4DNFIVTDXW6X.hic":"4797344498,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9ac9ec5-6221-4f39-951a-1c5054fc9f1c%2F4DNFICA8Y9TN.hic":"4277557869,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46f62222-b50a-428b-938b-5444951600eb%2F4DNFIDWM3HN5.hic":"4374808431,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F50e4f2a1-9cb6-4192-8199-64d354bfdf96%2F4DNFIBK5TB3N.hic":"3757387253,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4cdd5a8-1a45-4c6a-906b-a9603260d4c8%2F4DNFI3JYF9VS.hic":"5260534916,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8164e99-5778-427d-be26-f0e1b62400f0%2F4DNFIP1GNKUO.hic":"7589365689,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0d72e78a-fc87-4716-8b8e-6dc5650ff2ef%2F4DNFIQYQWPF5.hic":"22022259901,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac58fc15-48c2-4eec-a689-23b677b4b6e7%2F4DNFIW6H9U3S.hic":"6810897169,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31811e40-e3ca-4456-8ba6-2ee66d6c7104%2F4DNFI7J8BQ4P.hic":"7188744676,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62d81a52-d2cb-4bbd-8510-0fe120e786e0%2F4DNFIA3AKFSU.hic":"1763730692,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae0b7513-d1a0-4f27-a9d3-348837f42cb6%2F4DNFID68JQY9.hic":"2422880133,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae6a1a7e-1d2d-4fd2-a89f-1799abac8a9c%2F4DNFIL1FQDXE.hic":"1543814834,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80d343c9-bd60-468a-803d-c3e351a958bc%2F4DNFITSIPCSK.hic":"2344682115,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2d61195-a3a6-4d50-b928-546ca67546cb%2F4DNFIJ88LYHR.hic":"3362742962,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31052aba-773a-4500-961b-e0a518245b0c%2F4DNFIJIPWD63.hic":"2529548812,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc93d0710-3fbf-40cc-b0eb-878e2aa659e4%2F4DNFIZUP2BBI.hic":"491996147,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8660baeb-5be1-4ba5-93e4-66499e9a4587%2F4DNFIEBC4AF3.hic":"2993048734,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6d08fbc-b836-4776-82ad-8b1b277ae837%2F4DNFI5VO3E1W.hic":"1949322679,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3af004a2-a6fa-46dc-8be8-898b847a77be%2F4DNFIFDGVWLU.hic":"2456400803,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd613b4b-2422-492c-8d8f-8afba9c8a182%2F4DNFITVGFNYZ.hic":"1411204423,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc340694f-14f3-4638-b09b-98220c20039a%2F4DNFIOW9TTC1.hic":"2611370588,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3effa71b-6aa3-4265-87ba-f8d709d778d7%2F4DNFIOAA3ZEQ.hic":"3123195980,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde75cf8b-9ce1-44fc-8b7b-ca0adea6bae9%2F4DNFIA5ID1S6.hic":"3496246968,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F714f775d-a5a4-4314-83f8-016b9d73200b%2F4DNFIZYU7V81.hic":"4245592042,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ca518af-6e1e-4777-b67b-0fe7f039ce58%2F4DNFIRV6PVUX.hic":"3981520466,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc29b57d5-c263-4372-b396-ab4f55682f5d%2F4DNFIMEANFBY.hic":"3999623376,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4196d3ef-161a-4c18-a57e-005165c6b32a%2F4DNFIGLGQXLC.hic":"4105683321,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe10828b5-9519-4ceb-81e7-7228bfd890de%2F4DNFILS2HLXC.hic":"3804942111,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaac88c7-9bdc-4b1e-aa9f-e675520dfffa%2F4DNFIQS8853L.hic":"5287726781,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faab371b1-bc8d-4e83-998e-5bb977c443ca%2F4DNFIVBYCYGS.hic":"4657988157,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb116add-af8c-4a3b-b106-9f704ba0a175%2F4DNFIE4WWHMF.hic":"5116727268,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F033366e2-05a2-4381-9d48-90122892a9e0%2F4DNFIKDUUC3C.hic":"45638237,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7284a446-442d-4a46-aae5-84987e75a7af%2F4DNFIJ5HIRA2.hic":"62201052,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F876649a3-6dd3-463a-8b17-5752a98a89c5%2F4DNFIXDFC7EM.hic":"69878143,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cb4ce4d-d474-459f-8b8a-2159d8df8068%2F4DNFIO35EOVR.hic":"70153114,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5c5612fa-18c2-47fb-8074-693b1054e254%2F4DNFI57QGL6U.hic":"54605055,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c1472d-cf3a-41d7-8682-cd03b7cc978d%2F4DNFI2AGEBE5.hic":"67930121,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bf4cce8-6e03-422b-a190-e51d4a07d501%2F4DNFI1E6NJQJ.hic":"4893181511,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0eb3aa56-8a23-435d-a07b-8bb545e8d708%2F4DNFI2DNFM1A.hic":"60466977,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1201682a-a223-482d-913d-3c3972b8eb65%2F4DNFIIRIHBR2.hic":"48961678,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6aee7913-6356-43cf-affa-f2b60dd478f6%2F4DNFIKXNMT46.hic":"39095246,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F357139a3-c9a5-4343-b0a4-b41c45fd03fd%2F4DNFIRV7IRJP.hic":"70916718,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76be3061-6259-42be-a917-19dcba41517b%2F4DNFIFX1XYKZ.hic":"229197441,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff60c348a-a62c-43c3-ac85-f6c28b5f823f%2F4DNFI64CJUZ5.hic":"112428610,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd0b0a14-9703-49af-bb36-2359f96d4d0e%2F4DNFIBPL2HL1.hic":"73972428,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79ac278d-83f7-4c1f-91b2-05c8018c1426%2F4DNFIBRSIPE4.hic":"415430378,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c3b8141-8e67-4211-80dd-3bae88f9e537%2F4DNFIDLDVY14.hic":"112747303,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae703d2-d85c-4ac4-9ce1-14d653927675%2F4DNFI4R1II4P.hic":"210565448,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76e641af-90be-49f8-b126-12c20f856159%2F4DNFINMLRY95.hic":"1590865292,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b416382-ae5d-469f-9e9a-85a3e2ce9793%2F4DNFI8KBXYNL.hic":"4626496956,22663","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa27589a6-86b2-43a2-8218-1f2232d551e6%2F4DNFI53R5IKA.hic":"1536016455,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdd3999f5-b36e-4154-a6b9-446656959a3a%2F4DNFIAWVDQ8C.hic":"2210273411,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc377953b-0e61-426b-a905-abab2d5a3002%2F4DNFI9VXTBE2.hic":"3384365692,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2dbe0377-1db2-4aae-af2b-d87dff728035%2F4DNFIT96Z365.hic":"7692311974,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcfcb009-f006-4ab8-a4c7-af72be58c12c%2F4DNFITUOMFUQ.hic":"6592120312,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f9073d-b2c5-474e-b3d5-7d72cde555cd%2F4DNFIHLQKDN8.hic":"2647703964,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76968cc8-fb9f-485b-85b2-c9289067194b%2F4DNFIL9M97T2.hic":"6186798917,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87d9330b-8d2c-4e9d-85bb-02e572de7a68%2F4DNFIDWGZLHX.hic":"4379708168,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffc01b381-3665-4225-88ee-2e5e9ecb7324%2F4DNFIMEG1QIC.hic":"3587146533,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3144a03c-15c3-4bf9-95f8-ffad2640a1bf%2F4DNFIWSB66VX.hic":"1529739069,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7d3aac0-ba66-494b-ba0c-147631084b98%2F4DNFIH7TH4MF.hic":"6896300679,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b13bd19-fbd1-4c68-8855-4f0158d1ce47%2F4DNFIHKWIZ9T.hic":"1954878455,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d04e286-30d4-4add-a806-7a929d36419e%2F4DNFIZBBX795.hic":"1350142414,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa26f261-a88a-4cac-9118-ff8e90ab6f61%2F4DNFI9ZWZ5BS.hic":"3410552807,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24e516ce-0b49-4476-b818-cc96471d8765%2F4DNFIPAI8XB5.hic":"4168518737,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac3b06b5-46d4-4c1e-97e9-9a4f353473a7%2F4DNFI1OUWFSC.hic":"10766406904,21916","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76c6aa27-895f-4e82-8ed8-7a85aca84490%2F4DNFIX4PJKXZ.hic":"1463157350,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe6fbe03a-997b-4d72-a3cc-f1ed7bd88a92%2F4DNFIZGCA8AH.hic":"1597664180,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61d99a87-4ec6-4116-be99-b483999641c4%2F4DNFI5CGQ46V.hic":"2870576870,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F271ea8cd-53b9-44c9-9fff-1bb5c444b54c%2F4DNFIOCW5AEM.hic":"2463600138,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa98ca64a-861a-4a8c-92e9-586af457b1fb%2F4DNFI1UEG1HD.hic":"22480709268,25900","4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5809b32e-0aea-4cf5-a174-cf162d591a35%2F4DNFI9YAVTI1.hic":"3141182061,25900"};const C="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,z=new class{constructor(e){this.wait=void 0===e?100:e,this.isCalled=!1,this.calls=[]}limiter(e){const a=this;let o=function(){a.calls.length&&!a.isCalled&&(a.isCalled=!0,a.calls.shift().call(),setTimeout((function(){a.isCalled=!1,o()}),a.wait))};return function(){a.calls.push(e.bind(this,...arguments)),o()}}}(100);class I{constructor(e){if(e.alert&&(this.alert=e.alert),this.config=e,this.loadFragData=e.loadFragData,this.fragmentSitesCache={},this.normVectorCache=new m(10),this.normalizationTypes=["NONE"],this.matrixCache=new m(10),this.blockCache=new D,e.file)this.file=e.file;else if(e.blob)this.file=new n(e.blob);else{if(!(e.url||e.path&&!C))throw e.path?Error("path property is deprecated, use NodeLocalFile"):Error("Arguments must include file, blob, url, or path");{this.url=e.url||this.path,this.remote=!0;const o=new c(e);(a=this.url).indexOf("drive.google.com")>=0||a.indexOf("www.googleapis.com/drive")>0?this.file=new s(o,z):this.file=o}}var a}async init(){this.initialized||(await this.readHeaderAndFooter(),this.initialized=!0)}async getVersion(){if(void 0===this.version){const e=await this.file.read(0,128);if(!e)return;const a=new d(new DataView(e));return this.magic=a.getString(),this.version=a.getInt(),this.version}return this.version}async getMetaData(){return await this.init(),this.meta}async readHeaderAndFooter(){let e=await this.file.read(0,16);if(!e||0===e.byteLength)throw Error("File content is empty");let a=new d(new DataView(e));if(this.magic=a.getString(),this.version=a.getInt(),this.version<5)throw Error("Unsupported hic version: "+this.version);this.footerPosition=a.getLong(),await this.readFooter();const o=Object.values(this.masterIndex).reduce(((e,a)=>Math.min(e,a.start)),Number.MAX_VALUE)-16;e=await this.file.read(16,o),a=new d(new DataView(e)),this.genomeId=a.getString(),this.version>=9&&(this.normVectorIndexPosition=a.getLong(),this.normVectorIndexSize=a.getLong()),this.attributes={};let i=a.getInt();for(;i-- >0;)this.attributes[a.getString()]=a.getString();this.chromosomes=[],this.chromosomeIndexMap={};let t=a.getInt(),F=0;for(;t-- >0;){const e={index:F,name:a.getString(),size:this.version<9?a.getInt():a.getLong()};"all"===e.name.toLowerCase()&&(this.wholeGenomeChromosome=e,this.wholeGenomeResolution=Math.round(2*e.size)),this.chromosomes.push(e),this.chromosomeIndexMap[e.name]=e.index,F++}this.bpResolutions=[];let n=a.getInt();for(;n-- >0;)this.bpResolutions.push(a.getInt());if(this.loadFragData){this.fragResolutions=[];let e=a.getInt();if(e>0)for(;e-- >0;)this.fragResolutions.push(a.getInt())}this.chrAliasTable={};for(let e of Object.keys(this.chromosomeIndexMap))e.startsWith("chr")?this.chrAliasTable[e.substr(3)]=e:"MT"===e?this.chrAliasTable.chrM=e:this.chrAliasTable["chr"+e]=e;this.meta={version:this.version,genome:this.genomeId,chromosomes:this.chromosomes,resolutions:this.bpResolutions}}async readFooter(){const e=this.version<9?8:12;let a=await this.file.read(this.footerPosition,e);if(!a)return null;let o=new d(new DataView(a));const i=this.version<9?o.getInt():o.getLong();let t=o.getInt();const F=196*t;for(a=await this.file.read(this.footerPosition+e,Math.min(F,i)),o=new d(new DataView(a)),this.masterIndex={};t-- >0;){const e=o.getString(),a=o.getLong(),i=o.getInt();this.masterIndex[e]={start:a,size:i}}if(this.expectedValueVectors={},this.version>5){const e=this.version<9?4:8;this.normExpectedValueVectorsPosition=this.footerPosition+e+i}return this}async printIndexStats(){let e=0,a=0;await await this.init();for(let o of Object.keys(this.masterIndex)){const i=this.masterIndex[o];e+=i.size,i.size>a&&(a=i.size)}}async getMatrix(e,a){const o=p.getKey(e,a);if(this.matrixCache.has(o))return this.matrixCache.get(o);{const i=await this.readMatrix(e,a);return this.matrixCache.set(o,i),i}}async readMatrix(e,a){if(await this.init(),e>a){const o=e;e=a,a=o}const o=p.getKey(e,a),i=this.masterIndex[o];if(!i)return;const t=await this.file.read(i.start,i.size);return t?p.parseMatrix(t,this.chromosomes):void 0}async getContactRecords(e,a,o,i,t,F=!1){await this.init();const n=this.chromosomeIndexMap[this.getFileChrName(a.chr)],c=this.chromosomeIndexMap[this.getFileChrName(o.chr)];if(n>c||n===c&&a.start>=o.end){const e=a;a=o,o=e}const s=await this.getBlocks(a,o,i,t);if(!s||0===s.length)return[];const r=[],f=a.start/t,d=a.end/t,h=o.start/t,w=o.end/t,l=Math.floor(f),p=Math.ceil(d),m=Math.floor(h),b=Math.ceil(w);for(let n of s)if(n){let c,s,N=e&&"NONE"!==e;const C=this.getFileChrName(a.chr),z=this.getFileChrName(o.chr);if(N){const a=await this.getNormalizationVector(e,C,i,t),o=C===z?a:await this.getNormalizationVector(e,z,i,t);a&&o?(c=await a.getValues(l,p),s=await o.getValues(m,b)):N=!1}for(let e of n.records)if(F||e.bin1>=f&&e.bin1<d&&e.bin2>=h&&e.bin2<w)if(N){const a=e.bin1,o=e.bin2,i=c[a-l]*s[o-m];if(0!==i&&!isNaN(i)){const t=e.counts/i;r.push(new u(a,o,t))}}else r.push(e)}return r}async getBlocks(e,a,o,i){const t=(e,a)=>`${a.getKey()}_${e}`;await this.init();const F=this.getFileChrName(e.chr),n=this.getFileChrName(a.chr),c=this.chromosomeIndexMap[F],s=this.chromosomeIndexMap[n];if(void 0===c)return[];if(void 0===s)return[];const r=await this.getMatrix(c,s);if(!r)return[];const f=r.getZoomData(i,o);if(!f){let o=`No data avalailble for resolution: ${i}  for map ${e.chr}-${a.chr}`;throw new Error(o)}const d=f.getBlockNumbers(e,a,this.version),h=[],w=[];for(let e of d){const a=t(e,f);this.blockCache.has(i,a)?h.push(this.blockCache.get(i,a)):w.push(e)}const l=w.map((e=>this.readBlock(e,f))),p=await Promise.all(l);for(let e of p)e&&this.blockCache.set(i,t(e.blockNumber,f),e);return h.concat(p)}async readBlock(e,a){const o=await a.blockIndex.getBlockIndexEntry(e);if(o){let t=await this.file.read(o.filePosition,o.size);if(!t)return;t=new i.Inflate(new Uint8Array(t)).decompress().buffer;const F=new d(new DataView(t)),n=F.getInt(),c=[];if(this.version<7)for(let e=0;e<n;e++){const e=F.getInt(),a=F.getInt(),o=F.getFloat();c.push(new u(e,a,o))}else{const e=F.getInt(),a=F.getInt(),o=1===F.getByte(),i=!(this.version<9)&&1==F.getByte(),t=!(this.version<9)&&1==F.getByte(),n=F.getByte();if(1===n){const n=t?F.getInt():F.getShort();for(let s=0;s<n;s++){const n=a+(t?F.getInt():F.getShort()),s=i?F.getInt():F.getShort();for(let a=0;a<s;a++){const a=e+(i?F.getInt():F.getShort()),t=o?F.getFloat():F.getShort();c.push(new u(a,n,t))}}}else{if(2!=n)throw new Error("Unknown block type: "+n);{const i=F.getInt(),t=F.getShort();for(let n=0;n<i;n++){const i=Math.floor(n/t),s=e+(n-i*t),r=a+i;if(o){const e=F.getFloat();isNaN(e)||c.push(new u(s,r,e))}else{const e=F.getShort();-32768!=e&&c.push(new u(s,r,e))}}}}}return new E(e,a,c,o)}}async hasNormalizationVector(e,a,o,i){let t;if(await this.init(),Number.isInteger(a))t=a;else{const e=this.getFileChrName(a);t=this.chromosomeIndexMap[e]}const F=g(e,t,o.toString(),i),n=await this.getNormVectorIndex();return n&&n[F]}async isNormalizationValueAvailableAtResolution(e,a,o,i){let t;if(Number.isInteger(a))t=a;else{const e=this.getFileChrName(a);t=this.chromosomeIndexMap[e]}return void 0!==(await this.getNormVectorIndex())[g(e,t,o.toString(),i)]}async getNormalizationVector(e,a,o,i){let t;if(await this.init(),Number.isInteger(a))t=a;else{const e=this.getFileChrName(a);t=this.chromosomeIndexMap[e]}const F=g(e,t,o.toString(),i);if(this.normVectorCache.has(F))return this.normVectorCache.get(F);const n=await this.getNormVectorIndex();if(!n)return;if(!1===await this.isNormalizationValueAvailableAtResolution(e,a,o,i)){const a=`Normalization option ${e} not available at resolution ${i}. Will use NONE.`;return void(this.alert&&this.alert(a))}const c=n[F],s=await this.file.read(c.filePosition,8);if(!s)return;const r=new d(new DataView(s)),f=this.version<9?r.getInt():r.getLong(),h=this.version<9?8:4,w=this.version<9?c.filePosition+4:c.filePosition+8,l=new b(this.file,w,f,h);return this.normVectorCache.set(F,l),l}async getNormVectorIndex(){if(!(this.version<6)){if(!this.normVectorIndex){if(!this.config.nvi&&this.remote&&this.url){const e=new URL(this.url),a=encodeURIComponent(e.hostname+e.pathname);N.hasOwnProperty(a)&&(this.config.nvi=N[a])}if(this.config.nvi){const e=decodeURIComponent(this.config.nvi).split(","),a={start:parseInt(e[0]),size:parseInt(e[1])};return this.readNormVectorIndex(a)}try{return await this.readNormExpectedValuesAndNormVectorIndex(),this.normVectorIndex}catch(e){"416"===e.code||416===e.code?this.normExpectedValueVectorsPosition=void 0:console.error(e)}}return this.normVectorIndex}}async getNormalizationOptions(){return await this.getNormVectorIndex(),this.normalizationTypes}async readNormVectorIndex(e){await this.init(),this.normalizationVectorIndexRange=e;const a=await this.file.read(e.start,e.size),o=new d(new DataView(a));this.normVectorIndex={};let i=o.getInt();for(;i-- >0;)this.parseNormVectorEntry(o);return this.normVectorIndex}async readNormExpectedValuesAndNormVectorIndex(){if(await this.init(),void 0===this.normExpectedValueVectorsPosition)return;const e=await this.skipExpectedValues(this.normExpectedValueVectorsPosition);let a=4,o=await this.file.read(e,4);if(0===o.byteLength)return;const i=new d(new DataView(o)).getInt(),t={start:e+a,size:30*i};o=await this.file.read(t.start,t.size),this.normalizedExpectedValueVectors={},this.normVectorIndex={},await async function o(i,t){const F=new d(new DataView(t));for(;i-- >0;){if(F.available()<100){i++,a+=F.position;const t=Math.max(1e3,30*i),n={start:e+a,size:t},c=await this.file.read(n.start,n.size);return o.call(this,i,c)}this.parseNormVectorEntry(F)}a+=F.position}.call(this,i,o),this.config.nvi=e.toString()+","+a}async skipExpectedValues(e){const a=this.version,o=new r({file:this.file,size:256e3}),i={start:e,size:4},t=await o.read(i.start,i.size),F=new d(new DataView(t)).getInt();return 0===F?e+4:async function e(i,t){let F={start:i,size:500},n=0,c=i,s=await o.read(F.start,F.size),r=new d(new DataView(s));r.getString(),r.getString(),r.getInt();const f=a<9?r.getInt():r.getLong();n+=r.position+f*(a<9?8:4),F={start:i+n,size:4},s=await o.read(F.start,F.size),r=new d(new DataView(s));return n+=4+r.getInt()*(4+(a<9?8:4)),0===--t?c+n:e(c+n,t)}(e+4,F)}getZoomIndexForBinSize(e,a){let o;if("BP"===(a=a||"BP"))o=this.bpResolutions;else{if("FRAG"!==a)throw new Error("Invalid unit: "+a);o=this.fragResolutions}for(let a=0;a<o.length;a++)if(o[a]===e)return a;return-1}parseNormVectorEntry(e){const a=e.getString(),o=e.getInt(),i=e.getString(),t=e.getInt(),F=e.getLong(),n=this.version<9?e.getInt():e.getLong(),c=a+"_"+o+"_"+i+"_"+t;this.normalizationTypes.includes(a)||this.normalizationTypes.push(a),this.normVectorIndex[c]={filePosition:F,size:n}}getFileChrName(e){return this.chrAliasTable.hasOwnProperty(e)?this.chrAliasTable[e]:e}}function g(e,a,o,i){return e+"_"+a+"_"+o+"_"+i}class E{constructor(e,a,o,i){this.blockNumber=e,this.zoomData=a,this.records=o,this.idx=i}}class D{constructor(){this.resolution=void 0,this.map=new m(6)}set(e,a,o){this.resolution!==e&&this.map.clear(),this.resolution=e,this.map.set(a,o)}get(e,a){return this.resolution===e?this.map.get(a):void 0}has(e,a){return this.resolution===e&&this.map.has(a)}}class y{constructor(e){this.config=e,this.hicFile=new I(e)}async getMetaData(){return await this.hicFile.getMetaData()}async getContactRecords(e,a,o,i,t){return this.hicFile.getContactRecords(e,a,o,i,t)}async getNormalizationOptions(){return this.hicFile.getNormalizationOptions()}async getNVI(){return await this.hicFile.getNormVectorIndex(),this.hicFile.config.nvi}async printIndexStats(){await this.hicFile.printIndexStats()}getFileChrName(e){return this.hicFile.chrAliasTable.hasOwnProperty(e)?this.hicFile.chrAliasTable[e]:e}}}}]);
+//# sourceMappingURL=6514.d36ecbb8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6514.d36ecbb8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6514.d36ecbb8.chunk.js","mappings":"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DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,oEAAqE,mBACrE,wFAAyF,kBACzF,sFAAuF,mBACvF,yFAA0F,gBAC1F,kFAAmF,oBACnF,sFAAuF,gBACvF,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,sFAAuF,oBACvF,yFAA0F,gBAC1F,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,6EAA8E,mBAC9E,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,+EAAgF,mBAChF,+EAAgF,mBAChF,+EAAgF,mBAChF,+EAAgF,mBAChF,+EAAgF,mBAChF,+EAAgF,mBAChF,+EAAgF,mBAChF,uFAAwF,mBACxF,sEAAuE,iBACvE,6DAA8D,mBAC9D,4DAA6D,iBAC7D,gFAAiF,mBACjF,mEAAoE,oBACpE,2FAA4F,oBAC5F,6FAA8F,oBAC9F,kGAAmG,oBACnG,kGAAmG,oBACnG,kGAAmG,oBACnG,mGAAoG,oBACpG,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,2FAA4F,mBAC5F,2FAA4F,mBAC5F,2FAA4F,oBAC5F,2FAA4F,mBAC5F,2FAA4F,mBAC5F,2FAA4F,mBAC5F,2FAA4F,mBAC5F,yFAA0F,mBAC1F,uFAAwF,mBACxF,uFAAwF,mBACxF,uFAAwF,mBACxF,uFAAwF,mBACxF,2FAA4F,mBAC5F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,yFAA0F,mBAC1F,+FAAgG,kBAChG,+FAAgG,kBAChG,+FAAgG,kBAChG,yGAA0G,kBAC1G,yGAA0G,kBAC1G,yGAA0G,kBAC1G,yGAA0G,kBAC1G,yGAA0G,kBAC1G,yGAA0G,kBAC1G,0GAA2G,kBAC3G,0GAA2G,kBAC3G,0GAA2G,kBAC3G,0GAA2G,kBAC3G,0GAA2G,kBAC3G,0HAA2H,kBAC3H,0HAA2H,kBAC3H,0HAA2H,kBAC3H,0HAA2H,kBAC3H,0HAA2H,kBAC3H,0HAA2H,kBAC3H,2HAA4H,kBAC5H,2HAA4H,kBAC5H,0HAA2H,kBAC3H,0HAA2H,kBAC3H,2HAA4H,kBAC5H,2HAA4H,kBAC5H,2HAA4H,mBAC5H,2HAA4H,mBAC5H,mGAAoG,iBACpG,8GAA+G,gBAC/G,+GAAgH,gBAChH,mGAAoG,gBACpG,oGAAqG,iBACrG,mHAAoH,kBACpH,wGAAyG,iBACzG,0GAA2G,iBAC3G,qHAAsH,iBACtH,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,2DAA4D,gBAC5D,mEAAoE,oBACpE,wEAAyE,oBACzE,wEAAyE,oBACzE,uEAAwE,oBACxE,uFAAwF,kBACxF,gFAAiF,iBACjF,+EAAgF,kBAChF,0FAA2F,kBAC3F,8FAA+F,kBAC/F,sEAAuE,mBACvE,sEAAuE,mBACvE,gEAAiE,kBACjE,kEAAmE,kBACnE,kEAAmE,kBACnE,iEAAkE,kBAClE,iEAAkE,kBAClE,+DAAgE,gBAChE,kEAAmE,mBACnE,+DAAgE,mBAChE,sEAAuE,kBACvE,mEAAoE,mBACpE,kFAAmF,mBACnF,kEAAmE,mBACnE,mEAAoE,mBACpE,gEAAiE,mBACjE,sEAAuE,mBACvE,qEAAsE,mBACtE,qEAAsE,mBACtE,qEAAsE,kBACtE,oEAAqE,mBACrE,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,6DAA8D,iBAC9D,8DAA+D,iBAC/D,oEAAqE,mBACrE,gEAAiE,mBACjE,gEAAiE,mBACjE,gEAAiE,mBACjE,gEAAiE,mBACjE,gEAAiE,kBACjE,gEAAiE,mBACjE,8EAA+E,mBAC/E,0EAA2E,mBAC3E,0EAA2E,mBAC3E,0EAA2E,mBAC3E,0EAA2E,kBAC3E,0EAA2E,mBAC3E,0EAA2E,kBAC3E,mEAAoE,kBACpE,wEAAyE,kBACzE,kEAAmE,kBACnE,gEAAiE,iBACjE,kEAAmE,iBACnE,kEAAmE,iBACnE,gEAAiE,mBACjE,4DAA6D,mBAC7D,2DAA4D,mBAC5D,sEAAuE,kBACvE,oEAAqE,kBACrE,oEAAqE,mBACrE,wEAAyE,kBACzE,wEAAyE,mBACzE,mEAAoE,kBACpE,gEAAiE,mBACjE,4DAA6D,mBAC7D,mEAAoE,gBACpE,mEAAoE,iBACpE,wEAAyE,mBACzE,6EAA8E,mBAC9E,6EAA8E,mBAC9E,wEAAyE,mBACzE,6EAA8E,mBAC9E,6EAA8E,mBAC9E,uEAAwE,mBACxE,4EAA6E,mBAC7E,4EAA6E,mBAC7E,uEAAwE,mBACxE,4EAA6E,mBAC7E,4EAA6E,mBAC7E,4EAA6E,iBAC7E,6EAA8E,iBAC9E,qGAAsG,gBACtG,6EAA8E,iBAC9E,yEAA0E,kBAC1E,qEAAsE,kBACtE,qEAAsE,kBACtE,gFAAiF,kBACjF,6EAA8E,kBAC9E,+EAAgF,kBAChF,kFAAmF,kBACnF,4EAA6E,kBAC7E,+EAAgF,kBAChF,8EAA+E,kBAC/E,mEAAoE,kBACpE,mEAAoE,kBACpE,+DAAgE,kBAChE,uEAAwE,kBACxE,wEAAyE,kBACzE,wEAAyE,kBACzE,yEAA0E,kBAC1E,yEAA0E,kBAC1E,wEAAyE,kBACzE,wEAAyE,kBACzE,yEAA0E,kBAC1E,yEAA0E,kBAC1E,+DAAgE,kBAChE,mEAAoE,kBACpE,uEAAwE,mBACxE,uEAAwE,mBACxE,uEAAwE,mBACxE,uEAAwE,mBACxE,qEAAsE,kBACtE,4DAA6D,kBAC7D,wDAAyD,kBACzD,0DAA2D,kBAC3D,0DAA2D,kBAC3D,2DAA4D,iBAC5D,sEAAuE,kBACvE,qEAAsE,kBACtE,2DAA4D,kBAC5D,0DAA2D,kBAC3D,yDAA0D,kBAC1D,+DAAgE,kBAChE,4DAA6D,kBAC7D,2DAA4D,kBAC5D,2DAA4D,kBAC5D,sEAAuE,kBACvE,oEAAqE,kBACrE,iEAAkE,kBAClE,qFAAsF,kBACtF,qFAAsF,kBACtF,mFAAoF,kBACpF,mFAAoF,kBACpF,8EAA+E,kBAC/E,gFAAiF,kBACjF,kEAAmE,kBACnE,kEAAmE,kBACnE,8EAA+E,iBAC/E,+DAAgE,mBAChE,6DAA8D,mBAC9D,8DAA+D,kBAC/D,oEAAqE,mBACrE,oEAAqE,mBACrE,iEAAkE,mBAClE,iEAAkE,cAClE,+DAAgE,cAChE,gEAAiE,mBACjE,gEAAiE,mBACjE,2DAA4D,kBAC5D,kEAAmE,iBACnE,oEAAqE,iBACrE,gEAAiE,mBACjE,wEAAyE,kBACzE,0DAA2D,mBAC3D,iEAAkE,iBAClE,mEAAoE,iBACpE,6DAA8D,eAC9D,6DAA8D,eAC9D,4DAA6D,eAC7D,4EAA6E,mBAC7E,uFAAwF,mBACxF,kFAAmF,mBACnF,uFAAwF,mBACxF,gFAAiF,kBACjF,iEAAkE,mBAClE,8DAA+D,mBAC/D,sEAAuE,mBACvE,qEAAsE,mBACtE,6DAA8D,mBAC9D,0FAA2F,kBAC3F,oGAAqG,iBACrG,oGAAqG,kBACrG,oGAAqG,kBACrG,8DAA+D,oBAC/D,wEAAyE,mBACzE,+DAAgE,mBAChE,4DAA6D,oBAC7D,mEAAoE,mBACpE,+DAAgE,oBAChE,gEAAiE,oBACjE,+DAAgE,oBAChE,gIAAiI,oBACjI,qHAAsH,oBACtH,oIAAqI,oBACrI,sHAAuH,oBACvH,wIAAyI,oBACzI,yGAA0G,mBAC1G,gHAAiH,mBACjH,gHAAiH,mBACjH,wHAAyH,mBACzH,0HAA2H,oBAC3H,4FAA6F,oBAC7F,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,wEAAyE,mBACzE,2GAA4G,oBAC5G,2GAA4G,mBAC5G,2GAA4G,mBAC5G,+EAAgF,qBAChF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,iBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBA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","sources":["../../../node_modules/hic-straw/dist/hic-straw.esm.js"],"sourcesContent":["// from https://github.com/imaya/zlib.js\n\nvar Zlib = {\n  Huffman: {},\n  Util: {},\n  CRC32: {}\n};\n\n\n/**\n * Compression Method\n * @enum {number}\n */\nZlib.CompressionMethod = {\n  DEFLATE: 8,\n  RESERVED: 15\n};\n\n\n\n\n/**\n * @param {Object=} opt_params options.\n * @constructor\n */\nZlib.Zip = function(opt_params) {\n  opt_params = opt_params || {};\n  /** @type {Array.<{\n   *   buffer: !(Array.<number>|Uint8Array),\n   *   option: Object,\n   *   compressed: boolean,\n   *   encrypted: boolean,\n   *   size: number,\n   *   crc32: number\n   * }>} */\n  this.files = [];\n  /** @type {(Array.<number>|Uint8Array)} */\n  this.comment = opt_params['comment'];\n  /** @type {(Array.<number>|Uint8Array)} */\n  this.password;\n};\n\n\n/**\n * @enum {number}\n */\nZlib.Zip.CompressionMethod = {\n  STORE: 0,\n  DEFLATE: 8\n};\n\n/**\n * @enum {number}\n */\nZlib.Zip.OperatingSystem = {\n  MSDOS: 0,\n  UNIX: 3,\n  MACINTOSH: 7\n};\n\n/**\n * @enum {number}\n */\nZlib.Zip.Flags = {\n  ENCRYPT:    0x0001,\n  DESCRIPTOR: 0x0008,\n  UTF8:       0x0800\n};\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.FileHeaderSignature = [0x50, 0x4b, 0x01, 0x02];\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.LocalFileHeaderSignature = [0x50, 0x4b, 0x03, 0x04];\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.CentralDirectorySignature = [0x50, 0x4b, 0x05, 0x06];\n\n/**\n * @param {Array.<number>|Uint8Array} input\n * @param {Object=} opt_params options.\n */\nZlib.Zip.prototype.addFile = function(input, opt_params) {\n  opt_params = opt_params || {};\n  /** @type {string} */\n  opt_params['filename'];\n  /** @type {boolean} */\n  var compressed;\n  /** @type {number} */\n  var size = input.length;\n  /** @type {number} */\n  var crc32 = 0;\n\n  if (input instanceof Array) {\n    input = new Uint8Array(input);\n  }\n\n  // default\n  if (typeof opt_params['compressionMethod'] !== 'number') {\n    opt_params['compressionMethod'] = Zlib.Zip.CompressionMethod.DEFLATE;\n  }\n\n  // その場で圧縮する場合\n  if (opt_params['compress']) {\n    switch (opt_params['compressionMethod']) {\n      case Zlib.Zip.CompressionMethod.STORE:\n        break;\n      case Zlib.Zip.CompressionMethod.DEFLATE:\n        crc32 = Zlib.CRC32.calc(input);\n        input = this.deflateWithOption(input, opt_params);\n        compressed = true;\n        break;\n      default:\n        throw new Error('unknown compression method:' + opt_params['compressionMethod']);\n    }\n  }\n\n  this.files.push({\n    buffer: input,\n    option: opt_params,\n    compressed: compressed,\n    encrypted: false,\n    size: size,\n    crc32: crc32\n  });\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n */\nZlib.Zip.prototype.setPassword = function(password) {\n  this.password = password;\n};\n\nZlib.Zip.prototype.compress = function() {\n  /** @type {Array.<{\n   *   buffer: !(Array.<number>|Uint8Array),\n   *   option: Object,\n   *   compressed: boolean,\n   *   encrypted: boolean,\n   *   size: number,\n   *   crc32: number\n   * }>} */\n  var files = this.files;\n  /** @type {{\n   *   buffer: !(Array.<number>|Uint8Array),\n   *   option: Object,\n   *   compressed: boolean,\n   *   encrypted: boolean,\n   *   size: number,\n   *   crc32: number\n   * }} */\n  var file;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var output;\n  /** @type {number} */\n  var op1;\n  /** @type {number} */\n  var op2;\n  /** @type {number} */\n  var op3;\n  /** @type {number} */\n  var localFileSize = 0;\n  /** @type {number} */\n  var centralDirectorySize = 0;\n  /** @type {number} */\n  var endOfCentralDirectorySize;\n  /** @type {number} */\n  var offset;\n  /** @type {number} */\n  var needVersion;\n  /** @type {number} */\n  var flags;\n  /** @type {Zlib.Zip.CompressionMethod} */\n  var compressionMethod;\n  /** @type {Date} */\n  var date;\n  /** @type {number} */\n  var crc32;\n  /** @type {number} */\n  var size;\n  /** @type {number} */\n  var plainSize;\n  /** @type {number} */\n  var filenameLength;\n  /** @type {number} */\n  var extraFieldLength;\n  /** @type {number} */\n  var commentLength;\n  /** @type {(Array.<number>|Uint8Array)} */\n  var filename;\n  /** @type {(Array.<number>|Uint8Array)} */\n  var extraField;\n  /** @type {(Array.<number>|Uint8Array)} */\n  var comment;\n  /** @type {(Array.<number>|Uint8Array)} */\n  var buffer;\n  /** @type {*} */\n  var tmp;\n  /** @type {Array.<number>|Uint32Array|Object} */\n  var key;\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n  /** @type {number} */\n  var j;\n  /** @type {number} */\n  var jl;\n\n  // ファイルの圧縮\n  for (i = 0, il = files.length; i < il; ++i) {\n    file = files[i];\n    filenameLength =\n      (file.option['filename']) ? file.option['filename'].length : 0;\n    extraFieldLength =\n      (file.option['extraField']) ? file.option['extraField'].length : 0;\n    commentLength =\n      (file.option['comment']) ? file.option['comment'].length : 0;\n\n    // 圧縮されていなかったら圧縮\n    if (!file.compressed) {\n      // 圧縮前に CRC32 の計算をしておく\n      file.crc32 = Zlib.CRC32.calc(file.buffer);\n\n      switch (file.option['compressionMethod']) {\n        case Zlib.Zip.CompressionMethod.STORE:\n          break;\n        case Zlib.Zip.CompressionMethod.DEFLATE:\n          file.buffer = this.deflateWithOption(file.buffer, file.option);\n          file.compressed = true;\n          break;\n        default:\n          throw new Error('unknown compression method:' + file.option['compressionMethod']);\n      }\n    }\n\n    // encryption\n    if (file.option['password'] !== void 0|| this.password !== void 0) {\n      // init encryption\n      key = this.createEncryptionKey(file.option['password'] || this.password);\n\n      // add header\n      buffer = file.buffer;\n      {\n        tmp = new Uint8Array(buffer.length + 12);\n        tmp.set(buffer, 12);\n        buffer = tmp;\n      }\n\n      for (j = 0; j < 12; ++j) {\n        buffer[j] = this.encode(\n          key,\n          i === 11 ? (file.crc32 & 0xff) : (Math.random() * 256 | 0)\n        );\n      }\n\n      // data encryption\n      for (jl = buffer.length; j < jl; ++j) {\n        buffer[j] = this.encode(key, buffer[j]);\n      }\n      file.buffer = buffer;\n    }\n\n    // 必要バッファサイズの計算\n    localFileSize +=\n      // local file header\n      30 + filenameLength +\n      // file data\n      file.buffer.length;\n\n    centralDirectorySize +=\n      // file header\n      46 + filenameLength + commentLength;\n  }\n\n  // end of central directory\n  endOfCentralDirectorySize = 22 + (this.comment ? this.comment.length : 0);\n  output = new (Uint8Array )(\n    localFileSize + centralDirectorySize + endOfCentralDirectorySize\n  );\n  op1 = 0;\n  op2 = localFileSize;\n  op3 = op2 + centralDirectorySize;\n\n  // ファイルの圧縮\n  for (i = 0, il = files.length; i < il; ++i) {\n    file = files[i];\n    filenameLength =\n      file.option['filename'] ? file.option['filename'].length :  0;\n    extraFieldLength = 0; // TODO\n    commentLength =\n      file.option['comment'] ? file.option['comment'].length : 0;\n\n    //-------------------------------------------------------------------------\n    // local file header & file header\n    //-------------------------------------------------------------------------\n\n    offset = op1;\n\n    // signature\n    // local file header\n    output[op1++] = Zlib.Zip.LocalFileHeaderSignature[0];\n    output[op1++] = Zlib.Zip.LocalFileHeaderSignature[1];\n    output[op1++] = Zlib.Zip.LocalFileHeaderSignature[2];\n    output[op1++] = Zlib.Zip.LocalFileHeaderSignature[3];\n    // file header\n    output[op2++] = Zlib.Zip.FileHeaderSignature[0];\n    output[op2++] = Zlib.Zip.FileHeaderSignature[1];\n    output[op2++] = Zlib.Zip.FileHeaderSignature[2];\n    output[op2++] = Zlib.Zip.FileHeaderSignature[3];\n\n    // compressor info\n    needVersion = 20;\n    output[op2++] = needVersion & 0xff;\n    output[op2++] =\n      /** @type {Zlib.Zip.OperatingSystem} */\n      (file.option['os']) ||\n      Zlib.Zip.OperatingSystem.MSDOS;\n\n    // need version\n    output[op1++] = output[op2++] =  needVersion       & 0xff;\n    output[op1++] = output[op2++] = (needVersion >> 8) & 0xff;\n\n    // general purpose bit flag\n    flags = 0;\n    if (file.option['password'] || this.password) {\n      flags |= Zlib.Zip.Flags.ENCRYPT;\n    }\n    output[op1++] = output[op2++] =  flags       & 0xff;\n    output[op1++] = output[op2++] = (flags >> 8) & 0xff;\n\n    // compression method\n    compressionMethod =\n      /** @type {Zlib.Zip.CompressionMethod} */\n      (file.option['compressionMethod']);\n    output[op1++] = output[op2++] =  compressionMethod       & 0xff;\n    output[op1++] = output[op2++] = (compressionMethod >> 8) & 0xff;\n\n    // date\n    date = /** @type {(Date|undefined)} */(file.option['date']) || new Date();\n    output[op1++] = output[op2++] =\n      ((date.getMinutes() & 0x7) << 5) |\n      (date.getSeconds() / 2 | 0);\n    output[op1++] = output[op2++] =\n      (date.getHours()   << 3) |\n      (date.getMinutes() >> 3);\n    //\n    output[op1++] = output[op2++] =\n      ((date.getMonth() + 1 & 0x7) << 5) |\n      (date.getDate());\n    output[op1++] = output[op2++] =\n      ((date.getFullYear() - 1980 & 0x7f) << 1) |\n      (date.getMonth() + 1 >> 3);\n\n    // CRC-32\n    crc32 = file.crc32;\n    output[op1++] = output[op2++] =  crc32        & 0xff;\n    output[op1++] = output[op2++] = (crc32 >>  8) & 0xff;\n    output[op1++] = output[op2++] = (crc32 >> 16) & 0xff;\n    output[op1++] = output[op2++] = (crc32 >> 24) & 0xff;\n\n    // compressed size\n    size = file.buffer.length;\n    output[op1++] = output[op2++] =  size        & 0xff;\n    output[op1++] = output[op2++] = (size >>  8) & 0xff;\n    output[op1++] = output[op2++] = (size >> 16) & 0xff;\n    output[op1++] = output[op2++] = (size >> 24) & 0xff;\n\n    // uncompressed size\n    plainSize = file.size;\n    output[op1++] = output[op2++] =  plainSize        & 0xff;\n    output[op1++] = output[op2++] = (plainSize >>  8) & 0xff;\n    output[op1++] = output[op2++] = (plainSize >> 16) & 0xff;\n    output[op1++] = output[op2++] = (plainSize >> 24) & 0xff;\n\n    // filename length\n    output[op1++] = output[op2++] =  filenameLength       & 0xff;\n    output[op1++] = output[op2++] = (filenameLength >> 8) & 0xff;\n\n    // extra field length\n    output[op1++] = output[op2++] =  extraFieldLength       & 0xff;\n    output[op1++] = output[op2++] = (extraFieldLength >> 8) & 0xff;\n\n    // file comment length\n    output[op2++] =  commentLength       & 0xff;\n    output[op2++] = (commentLength >> 8) & 0xff;\n\n    // disk number start\n    output[op2++] = 0;\n    output[op2++] = 0;\n\n    // internal file attributes\n    output[op2++] = 0;\n    output[op2++] = 0;\n\n    // external file attributes\n    output[op2++] = 0;\n    output[op2++] = 0;\n    output[op2++] = 0;\n    output[op2++] = 0;\n\n    // relative offset of local header\n    output[op2++] =  offset        & 0xff;\n    output[op2++] = (offset >>  8) & 0xff;\n    output[op2++] = (offset >> 16) & 0xff;\n    output[op2++] = (offset >> 24) & 0xff;\n\n    // filename\n    filename = file.option['filename'];\n    if (filename) {\n      {\n        output.set(filename, op1);\n        output.set(filename, op2);\n        op1 += filenameLength;\n        op2 += filenameLength;\n      }\n    }\n\n    // extra field\n    extraField = file.option['extraField'];\n    if (extraField) {\n      {\n        output.set(extraField, op1);\n        output.set(extraField, op2);\n        op1 += extraFieldLength;\n        op2 += extraFieldLength;\n      }\n    }\n\n    // comment\n    comment = file.option['comment'];\n    if (comment) {\n      {\n        output.set(comment, op2);\n        op2 += commentLength;\n      }\n    }\n\n    //-------------------------------------------------------------------------\n    // file data\n    //-------------------------------------------------------------------------\n\n    {\n      output.set(file.buffer, op1);\n      op1 += file.buffer.length;\n    }\n  }\n\n  //-------------------------------------------------------------------------\n  // end of central directory\n  //-------------------------------------------------------------------------\n\n  // signature\n  output[op3++] = Zlib.Zip.CentralDirectorySignature[0];\n  output[op3++] = Zlib.Zip.CentralDirectorySignature[1];\n  output[op3++] = Zlib.Zip.CentralDirectorySignature[2];\n  output[op3++] = Zlib.Zip.CentralDirectorySignature[3];\n\n  // number of this disk\n  output[op3++] = 0;\n  output[op3++] = 0;\n\n  // number of the disk with the start of the central directory\n  output[op3++] = 0;\n  output[op3++] = 0;\n\n  // total number of entries in the central directory on this disk\n  output[op3++] =  il       & 0xff;\n  output[op3++] = (il >> 8) & 0xff;\n\n  // total number of entries in the central directory\n  output[op3++] =  il       & 0xff;\n  output[op3++] = (il >> 8) & 0xff;\n\n  // size of the central directory\n  output[op3++] =  centralDirectorySize        & 0xff;\n  output[op3++] = (centralDirectorySize >>  8) & 0xff;\n  output[op3++] = (centralDirectorySize >> 16) & 0xff;\n  output[op3++] = (centralDirectorySize >> 24) & 0xff;\n\n  // offset of start of central directory with respect to the starting disk number\n  output[op3++] =  localFileSize        & 0xff;\n  output[op3++] = (localFileSize >>  8) & 0xff;\n  output[op3++] = (localFileSize >> 16) & 0xff;\n  output[op3++] = (localFileSize >> 24) & 0xff;\n\n  // .ZIP file comment length\n  commentLength = this.comment ? this.comment.length : 0;\n  output[op3++] =  commentLength       & 0xff;\n  output[op3++] = (commentLength >> 8) & 0xff;\n\n  // .ZIP file comment\n  if (this.comment) {\n    {\n      output.set(this.comment, op3);\n      op3 += commentLength;\n    }\n  }\n\n  return output;\n};\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input\n * @param {Object=} opt_params options.\n * @return {!(Array.<number>|Uint8Array)}\n */\nZlib.Zip.prototype.deflateWithOption = function(input, opt_params) {\n  /** @type {Zlib.RawDeflate} */\n  var deflator = new Zlib.RawDeflate(input, opt_params['deflateOption']);\n\n  return deflator.compress();\n};\n\n/**\n * @param {(Array.<number>|Uint32Array)} key\n * @return {number}\n */\nZlib.Zip.prototype.getByte = function(key) {\n  /** @type {number} */\n  var tmp = ((key[2] & 0xffff) | 2);\n\n  return ((tmp * (tmp ^ 1)) >> 8) & 0xff;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array|Object)} key\n * @param {number} n\n * @return {number}\n */\nZlib.Zip.prototype.encode = function(key, n) {\n  /** @type {number} */\n  var tmp = this.getByte(/** @type {(Array.<number>|Uint32Array)} */(key));\n\n  this.updateKeys(/** @type {(Array.<number>|Uint32Array)} */(key), n);\n\n  return tmp ^ n;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array)} key\n * @param {number} n\n */\nZlib.Zip.prototype.updateKeys = function(key, n) {\n  key[0] = Zlib.CRC32.single(key[0], n);\n  key[1] =\n    (((((key[1] + (key[0] & 0xff)) * 20173 >>> 0) * 6681) >>> 0) + 1) >>> 0;\n  key[2] = Zlib.CRC32.single(key[2], key[1] >>> 24);\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n * @return {!(Array.<number>|Uint32Array|Object)}\n */\nZlib.Zip.prototype.createEncryptionKey = function(password) {\n  /** @type {!(Array.<number>|Uint32Array)} */\n  var key = [305419896, 591751049, 878082192];\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n\n  {\n    key = new Uint32Array(key);\n  }\n\n  for (i = 0, il = password.length; i < il; ++i) {\n    this.updateKeys(key, password[i] & 0xff);\n  }\n\n  return key;\n};\n\n\n\n/**\n * build huffman table from length list.\n * @param {!(Array.<number>|Uint8Array)} lengths length list.\n * @return {!Array} huffman table.\n */\nZlib.Huffman.buildHuffmanTable = function(lengths) {\n  /** @type {number} length list size. */\n  var listSize = lengths.length;\n  /** @type {number} max code length for table size. */\n  var maxCodeLength = 0;\n  /** @type {number} min code length for table size. */\n  var minCodeLength = Number.POSITIVE_INFINITY;\n  /** @type {number} table size. */\n  var size;\n  /** @type {!(Array|Uint8Array)} huffman code table. */\n  var table;\n  /** @type {number} bit length. */\n  var bitLength;\n  /** @type {number} huffman code. */\n  var code;\n  /**\n   * サイズが 2^maxlength 個のテーブルを埋めるためのスキップ長.\n   * @type {number} skip length for table filling.\n   */\n  var skip;\n  /** @type {number} reversed code. */\n  var reversed;\n  /** @type {number} reverse temp. */\n  var rtemp;\n  /** @type {number} loop counter. */\n  var i;\n  /** @type {number} loop limit. */\n  var il;\n  /** @type {number} loop counter. */\n  var j;\n  /** @type {number} table value. */\n  var value;\n\n  // Math.max は遅いので最長の値は for-loop で取得する\n  for (i = 0, il = listSize; i < il; ++i) {\n    if (lengths[i] > maxCodeLength) {\n      maxCodeLength = lengths[i];\n    }\n    if (lengths[i] < minCodeLength) {\n      minCodeLength = lengths[i];\n    }\n  }\n\n  size = 1 << maxCodeLength;\n  table = new (Uint32Array )(size);\n\n  // ビット長の短い順からハフマン符号を割り当てる\n  for (bitLength = 1, code = 0, skip = 2; bitLength <= maxCodeLength;) {\n    for (i = 0; i < listSize; ++i) {\n      if (lengths[i] === bitLength) {\n        // ビットオーダーが逆になるためビット長分並びを反転する\n        for (reversed = 0, rtemp = code, j = 0; j < bitLength; ++j) {\n          reversed = (reversed << 1) | (rtemp & 1);\n          rtemp >>= 1;\n        }\n\n        // 最大ビット長をもとにテーブルを作るため、\n        // 最大ビット長以外では 0 / 1 どちらでも良い箇所ができる\n        // そのどちらでも良い場所は同じ値で埋めることで\n        // 本来のビット長以上のビット数取得しても問題が起こらないようにする\n        value = (bitLength << 16) | i;\n        for (j = reversed; j < size; j += skip) {\n          table[j] = value;\n        }\n\n        ++code;\n      }\n    }\n\n    // 次のビット長へ\n    ++bitLength;\n    code <<= 1;\n    skip <<= 1;\n  }\n\n  return [table, maxCodeLength, minCodeLength];\n};\n\n\n\n\n//-----------------------------------------------------------------------------\n\n/** @define {number} buffer block size. */\nvar ZLIB_RAW_INFLATE_BUFFER_SIZE = 0x8000; // [ 0x8000 >= ZLIB_BUFFER_BLOCK_SIZE ]\n\n//-----------------------------------------------------------------------------\n\n\nvar buildHuffmanTable = Zlib.Huffman.buildHuffmanTable;\n\n/**\n * @constructor\n * @param {!(Uint8Array|Array.<number>)} input input buffer.\n * @param {Object} opt_params option parameter.\n *\n * opt_params は以下のプロパティを指定する事ができます。\n *   - index: input buffer の deflate コンテナの開始位置.\n *   - blockSize: バッファのブロックサイズ.\n *   - bufferType: Zlib.RawInflate.BufferType の値によってバッファの管理方法を指定する.\n *   - resize: 確保したバッファが実際の大きさより大きかった場合に切り詰める.\n */\nZlib.RawInflate = function(input, opt_params) {\n  /** @type {!(Array.<number>|Uint8Array)} inflated buffer */\n  this.buffer;\n  /** @type {!Array.<(Array.<number>|Uint8Array)>} */\n  this.blocks = [];\n  /** @type {number} block size. */\n  this.bufferSize = ZLIB_RAW_INFLATE_BUFFER_SIZE;\n  /** @type {!number} total output buffer pointer. */\n  this.totalpos = 0;\n  /** @type {!number} input buffer pointer. */\n  this.ip = 0;\n  /** @type {!number} bit stream reader buffer. */\n  this.bitsbuf = 0;\n  /** @type {!number} bit stream reader buffer size. */\n  this.bitsbuflen = 0;\n  /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n  this.input = new Uint8Array(input) ;\n  /** @type {!(Uint8Array|Array.<number>)} output buffer. */\n  this.output;\n  /** @type {!number} output buffer pointer. */\n  this.op;\n  /** @type {boolean} is final block flag. */\n  this.bfinal = false;\n  /** @type {Zlib.RawInflate.BufferType} buffer management. */\n  this.bufferType = Zlib.RawInflate.BufferType.ADAPTIVE;\n  /** @type {boolean} resize flag for memory size optimization. */\n  this.resize = false;\n\n  // option parameters\n  if (opt_params || !(opt_params = {})) {\n    if (opt_params['index']) {\n      this.ip = opt_params['index'];\n    }\n    if (opt_params['bufferSize']) {\n      this.bufferSize = opt_params['bufferSize'];\n    }\n    if (opt_params['bufferType']) {\n      this.bufferType = opt_params['bufferType'];\n    }\n    if (opt_params['resize']) {\n      this.resize = opt_params['resize'];\n    }\n  }\n\n  // initialize\n  switch (this.bufferType) {\n    case Zlib.RawInflate.BufferType.BLOCK:\n      this.op = Zlib.RawInflate.MaxBackwardLength;\n      this.output =\n        new (Uint8Array )(\n          Zlib.RawInflate.MaxBackwardLength +\n          this.bufferSize +\n          Zlib.RawInflate.MaxCopyLength\n        );\n      break;\n    case Zlib.RawInflate.BufferType.ADAPTIVE:\n      this.op = 0;\n      this.output = new (Uint8Array )(this.bufferSize);\n      break;\n    default:\n      throw new Error('invalid inflate mode');\n  }\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflate.BufferType = {\n  BLOCK: 0,\n  ADAPTIVE: 1\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array.<number>)} inflated buffer.\n */\nZlib.RawInflate.prototype.decompress = function() {\n  while (!this.bfinal) {\n    this.parseBlock();\n  }\n\n  switch (this.bufferType) {\n    case Zlib.RawInflate.BufferType.BLOCK:\n      return this.concatBufferBlock();\n    case Zlib.RawInflate.BufferType.ADAPTIVE:\n      return this.concatBufferDynamic();\n    default:\n      throw new Error('invalid inflate mode');\n  }\n};\n\n/**\n * @const\n * @type {number} max backward length for LZ77.\n */\nZlib.RawInflate.MaxBackwardLength = 32768;\n\n/**\n * @const\n * @type {number} max copy length for LZ77.\n */\nZlib.RawInflate.MaxCopyLength = 258;\n\n/**\n * huffman order\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.Order = (function(table) {\n  return new Uint16Array(table) ;\n})([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n\n/**\n * huffman length code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflate.LengthCodeTable = (function(table) {\n  return new Uint16Array(table) ;\n})([\n  0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b,\n  0x000d, 0x000f, 0x0011, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x002b,\n  0x0033, 0x003b, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083, 0x00a3, 0x00c3,\n  0x00e3, 0x0102, 0x0102, 0x0102\n]);\n\n/**\n * huffman length extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.LengthExtraTable = (function(table) {\n  return new Uint8Array(table) ;\n})([\n  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,\n  5, 5, 0, 0, 0\n]);\n\n/**\n * huffman dist code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflate.DistCodeTable = (function(table) {\n  return new Uint16Array(table) ;\n})([\n  0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011,\n  0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181,\n  0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, 0x1001, 0x1801, 0x2001,\n  0x3001, 0x4001, 0x6001\n]);\n\n/**\n * huffman dist extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.DistExtraTable = (function(table) {\n  return new Uint8Array(table) ;\n})([\n  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,\n  11, 12, 12, 13, 13\n]);\n\n/**\n * fixed huffman length code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflate.FixedLiteralLengthTable = (function(table) {\n  return table;\n})((function() {\n  var lengths = new (Uint8Array )(288);\n  var i, il;\n\n  for (i = 0, il = lengths.length; i < il; ++i) {\n    lengths[i] =\n      (i <= 143) ? 8 :\n      (i <= 255) ? 9 :\n      (i <= 279) ? 7 :\n      8;\n  }\n\n  return buildHuffmanTable(lengths);\n})());\n\n/**\n * fixed huffman distance code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflate.FixedDistanceTable = (function(table) {\n  return table;\n})((function() {\n  var lengths = new (Uint8Array )(30);\n  var i, il;\n\n  for (i = 0, il = lengths.length; i < il; ++i) {\n    lengths[i] = 5;\n  }\n\n  return buildHuffmanTable(lengths);\n})());\n\n/**\n * parse deflated block.\n */\nZlib.RawInflate.prototype.parseBlock = function() {\n  /** @type {number} header */\n  var hdr = this.readBits(3);\n\n  // BFINAL\n  if (hdr & 0x1) {\n    this.bfinal = true;\n  }\n\n  // BTYPE\n  hdr >>>= 1;\n  switch (hdr) {\n    // uncompressed\n    case 0:\n      this.parseUncompressedBlock();\n      break;\n    // fixed huffman\n    case 1:\n      this.parseFixedHuffmanBlock();\n      break;\n    // dynamic huffman\n    case 2:\n      this.parseDynamicHuffmanBlock();\n      break;\n    // reserved or other\n    default:\n      throw new Error('unknown BTYPE: ' + hdr);\n  }\n};\n\n/**\n * read inflate bits\n * @param {number} length bits length.\n * @return {number} read bits.\n */\nZlib.RawInflate.prototype.readBits = function(length) {\n  var bitsbuf = this.bitsbuf;\n  var bitsbuflen = this.bitsbuflen;\n  var input = this.input;\n  var ip = this.ip;\n\n  /** @type {number} */\n  var inputLength = input.length;\n  /** @type {number} input and output byte. */\n  var octet;\n\n  // input byte\n  if (ip + ((length - bitsbuflen + 7) >> 3) >= inputLength) {\n    throw new Error('input buffer is broken');\n  }\n\n  // not enough buffer\n  while (bitsbuflen < length) {\n    bitsbuf |= input[ip++] << bitsbuflen;\n    bitsbuflen += 8;\n  }\n\n  // output byte\n  octet = bitsbuf & /* MASK */ ((1 << length) - 1);\n  bitsbuf >>>= length;\n  bitsbuflen -= length;\n\n  this.bitsbuf = bitsbuf;\n  this.bitsbuflen = bitsbuflen;\n  this.ip = ip;\n\n  return octet;\n};\n\n/**\n * read huffman code using table\n * @param {!(Array.<number>|Uint8Array|Uint16Array)} table huffman code table.\n * @return {number} huffman code.\n */\nZlib.RawInflate.prototype.readCodeByTable = function(table) {\n  var bitsbuf = this.bitsbuf;\n  var bitsbuflen = this.bitsbuflen;\n  var input = this.input;\n  var ip = this.ip;\n\n  /** @type {number} */\n  var inputLength = input.length;\n  /** @type {!(Array.<number>|Uint8Array)} huffman code table */\n  var codeTable = table[0];\n  /** @type {number} */\n  var maxCodeLength = table[1];\n  /** @type {number} code length & code (16bit, 16bit) */\n  var codeWithLength;\n  /** @type {number} code bits length */\n  var codeLength;\n\n  // not enough buffer\n  while (bitsbuflen < maxCodeLength) {\n    if (ip >= inputLength) {\n      break;\n    }\n    bitsbuf |= input[ip++] << bitsbuflen;\n    bitsbuflen += 8;\n  }\n\n  // read max length\n  codeWithLength = codeTable[bitsbuf & ((1 << maxCodeLength) - 1)];\n  codeLength = codeWithLength >>> 16;\n\n  if (codeLength > bitsbuflen) {\n    throw new Error('invalid code length: ' + codeLength);\n  }\n\n  this.bitsbuf = bitsbuf >> codeLength;\n  this.bitsbuflen = bitsbuflen - codeLength;\n  this.ip = ip;\n\n  return codeWithLength & 0xffff;\n};\n\n/**\n * parse uncompressed block.\n */\nZlib.RawInflate.prototype.parseUncompressedBlock = function() {\n  var input = this.input;\n  var ip = this.ip;\n  var output = this.output;\n  var op = this.op;\n\n  /** @type {number} */\n  var inputLength = input.length;\n  /** @type {number} block length */\n  var len;\n  /** @type {number} number for check block length */\n  var nlen;\n  /** @type {number} output buffer length */\n  var olength = output.length;\n  /** @type {number} copy counter */\n  var preCopy;\n\n  // skip buffered header bits\n  this.bitsbuf = 0;\n  this.bitsbuflen = 0;\n\n  // len\n  if (ip + 1 >= inputLength) {\n    throw new Error('invalid uncompressed block header: LEN');\n  }\n  len = input[ip++] | (input[ip++] << 8);\n\n  // nlen\n  if (ip + 1 >= inputLength) {\n    throw new Error('invalid uncompressed block header: NLEN');\n  }\n  nlen = input[ip++] | (input[ip++] << 8);\n\n  // check len & nlen\n  if (len === ~nlen) {\n    throw new Error('invalid uncompressed block header: length verify');\n  }\n\n  // check size\n  if (ip + len > input.length) { throw new Error('input buffer is broken'); }\n\n  // expand buffer\n  switch (this.bufferType) {\n    case Zlib.RawInflate.BufferType.BLOCK:\n      // pre copy\n      while (op + len > output.length) {\n        preCopy = olength - op;\n        len -= preCopy;\n        {\n          output.set(input.subarray(ip, ip + preCopy), op);\n          op += preCopy;\n          ip += preCopy;\n        }\n        this.op = op;\n        output = this.expandBufferBlock();\n        op = this.op;\n      }\n      break;\n    case Zlib.RawInflate.BufferType.ADAPTIVE:\n      while (op + len > output.length) {\n        output = this.expandBufferAdaptive({fixRatio: 2});\n      }\n      break;\n    default:\n      throw new Error('invalid inflate mode');\n  }\n\n  // copy\n  {\n    output.set(input.subarray(ip, ip + len), op);\n    op += len;\n    ip += len;\n  }\n\n  this.ip = ip;\n  this.op = op;\n  this.output = output;\n};\n\n/**\n * parse fixed huffman block.\n */\nZlib.RawInflate.prototype.parseFixedHuffmanBlock = function() {\n  switch (this.bufferType) {\n    case Zlib.RawInflate.BufferType.ADAPTIVE:\n      this.decodeHuffmanAdaptive(\n        Zlib.RawInflate.FixedLiteralLengthTable,\n        Zlib.RawInflate.FixedDistanceTable\n      );\n      break;\n    case Zlib.RawInflate.BufferType.BLOCK:\n      this.decodeHuffmanBlock(\n        Zlib.RawInflate.FixedLiteralLengthTable,\n        Zlib.RawInflate.FixedDistanceTable\n      );\n      break;\n    default:\n      throw new Error('invalid inflate mode');\n  }\n};\n\n/**\n * parse dynamic huffman block.\n */\nZlib.RawInflate.prototype.parseDynamicHuffmanBlock = function() {\n  /** @type {number} number of literal and length codes. */\n  var hlit = this.readBits(5) + 257;\n  /** @type {number} number of distance codes. */\n  var hdist = this.readBits(5) + 1;\n  /** @type {number} number of code lengths. */\n  var hclen = this.readBits(4) + 4;\n  /** @type {!(Uint8Array|Array.<number>)} code lengths. */\n  var codeLengths =\n    new (Uint8Array )(Zlib.RawInflate.Order.length);\n  /** @type {!Array} code lengths table. */\n  var codeLengthsTable;\n  /** @type {!(Uint8Array|Array.<number>)} literal and length code table. */\n  var litlenTable;\n  /** @type {!(Uint8Array|Array.<number>)} distance code table. */\n  var distTable;\n  /** @type {!(Uint8Array|Array.<number>)} code length table. */\n  var lengthTable;\n  /** @type {number} */\n  var code;\n  /** @type {number} */\n  var prev;\n  /** @type {number} */\n  var repeat;\n  /** @type {number} loop counter. */\n  var i;\n  /** @type {number} loop limit. */\n  var il;\n\n  // decode code lengths\n  for (i = 0; i < hclen; ++i) {\n    codeLengths[Zlib.RawInflate.Order[i]] = this.readBits(3);\n  }\n\n  // decode length table\n  codeLengthsTable = buildHuffmanTable(codeLengths);\n  lengthTable = new (Uint8Array )(hlit + hdist);\n  for (i = 0, il = hlit + hdist; i < il;) {\n    code = this.readCodeByTable(codeLengthsTable);\n    switch (code) {\n      case 16:\n        repeat = 3 + this.readBits(2);\n        while (repeat--) { lengthTable[i++] = prev; }\n        break;\n      case 17:\n        repeat = 3 + this.readBits(3);\n        while (repeat--) { lengthTable[i++] = 0; }\n        prev = 0;\n        break;\n      case 18:\n        repeat = 11 + this.readBits(7);\n        while (repeat--) { lengthTable[i++] = 0; }\n        prev = 0;\n        break;\n      default:\n        lengthTable[i++] = code;\n        prev = code;\n        break;\n    }\n  }\n\n  litlenTable = buildHuffmanTable(lengthTable.subarray(0, hlit))\n    ;\n  distTable = buildHuffmanTable(lengthTable.subarray(hlit))\n    ;\n\n  switch (this.bufferType) {\n    case Zlib.RawInflate.BufferType.ADAPTIVE:\n      this.decodeHuffmanAdaptive(litlenTable, distTable);\n      break;\n    case Zlib.RawInflate.BufferType.BLOCK:\n      this.decodeHuffmanBlock(litlenTable, distTable);\n      break;\n    default:\n      throw new Error('invalid inflate mode');\n  }\n};\n\n/**\n * decode huffman code\n * @param {!(Array.<number>|Uint16Array)} litlen literal and length code table.\n * @param {!(Array.<number>|Uint8Array)} dist distination code table.\n */\nZlib.RawInflate.prototype.decodeHuffmanBlock = function(litlen, dist) {\n  var output = this.output;\n  var op = this.op;\n\n  this.currentLitlenTable = litlen;\n\n  /** @type {number} output position limit. */\n  var olength = output.length - Zlib.RawInflate.MaxCopyLength;\n  /** @type {number} huffman code. */\n  var code;\n  /** @type {number} table index. */\n  var ti;\n  /** @type {number} huffman code distination. */\n  var codeDist;\n  /** @type {number} huffman code length. */\n  var codeLength;\n\n  var lengthCodeTable = Zlib.RawInflate.LengthCodeTable;\n  var lengthExtraTable = Zlib.RawInflate.LengthExtraTable;\n  var distCodeTable = Zlib.RawInflate.DistCodeTable;\n  var distExtraTable = Zlib.RawInflate.DistExtraTable;\n\n  while ((code = this.readCodeByTable(litlen)) !== 256) {\n    // literal\n    if (code < 256) {\n      if (op >= olength) {\n        this.op = op;\n        output = this.expandBufferBlock();\n        op = this.op;\n      }\n      output[op++] = code;\n\n      continue;\n    }\n\n    // length code\n    ti = code - 257;\n    codeLength = lengthCodeTable[ti];\n    if (lengthExtraTable[ti] > 0) {\n      codeLength += this.readBits(lengthExtraTable[ti]);\n    }\n\n    // dist code\n    code = this.readCodeByTable(dist);\n    codeDist = distCodeTable[code];\n    if (distExtraTable[code] > 0) {\n      codeDist += this.readBits(distExtraTable[code]);\n    }\n\n    // lz77 decode\n    if (op >= olength) {\n      this.op = op;\n      output = this.expandBufferBlock();\n      op = this.op;\n    }\n    while (codeLength--) {\n      output[op] = output[(op++) - codeDist];\n    }\n  }\n\n  while (this.bitsbuflen >= 8) {\n    this.bitsbuflen -= 8;\n    this.ip--;\n  }\n  this.op = op;\n};\n\n/**\n * decode huffman code (adaptive)\n * @param {!(Array.<number>|Uint16Array)} litlen literal and length code table.\n * @param {!(Array.<number>|Uint8Array)} dist distination code table.\n */\nZlib.RawInflate.prototype.decodeHuffmanAdaptive = function(litlen, dist) {\n  var output = this.output;\n  var op = this.op;\n\n  this.currentLitlenTable = litlen;\n\n  /** @type {number} output position limit. */\n  var olength = output.length;\n  /** @type {number} huffman code. */\n  var code;\n  /** @type {number} table index. */\n  var ti;\n  /** @type {number} huffman code distination. */\n  var codeDist;\n  /** @type {number} huffman code length. */\n  var codeLength;\n\n  var lengthCodeTable = Zlib.RawInflate.LengthCodeTable;\n  var lengthExtraTable = Zlib.RawInflate.LengthExtraTable;\n  var distCodeTable = Zlib.RawInflate.DistCodeTable;\n  var distExtraTable = Zlib.RawInflate.DistExtraTable;\n\n  while ((code = this.readCodeByTable(litlen)) !== 256) {\n    // literal\n    if (code < 256) {\n      if (op >= olength) {\n        output = this.expandBufferAdaptive();\n        olength = output.length;\n      }\n      output[op++] = code;\n\n      continue;\n    }\n\n    // length code\n    ti = code - 257;\n    codeLength = lengthCodeTable[ti];\n    if (lengthExtraTable[ti] > 0) {\n      codeLength += this.readBits(lengthExtraTable[ti]);\n    }\n\n    // dist code\n    code = this.readCodeByTable(dist);\n    codeDist = distCodeTable[code];\n    if (distExtraTable[code] > 0) {\n      codeDist += this.readBits(distExtraTable[code]);\n    }\n\n    // lz77 decode\n    if (op + codeLength > olength) {\n      output = this.expandBufferAdaptive();\n      olength = output.length;\n    }\n    while (codeLength--) {\n      output[op] = output[(op++) - codeDist];\n    }\n  }\n\n  while (this.bitsbuflen >= 8) {\n    this.bitsbuflen -= 8;\n    this.ip--;\n  }\n  this.op = op;\n};\n\n/**\n * expand output buffer.\n * @param {Object=} opt_param option parameters.\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.expandBufferBlock = function(opt_param) {\n  /** @type {!(Array.<number>|Uint8Array)} store buffer. */\n  var buffer =\n    new (Uint8Array )(\n        this.op - Zlib.RawInflate.MaxBackwardLength\n    );\n  /** @type {number} backward base point */\n  var backward = this.op - Zlib.RawInflate.MaxBackwardLength;\n\n  var output = this.output;\n\n  // copy to output buffer\n  {\n    buffer.set(output.subarray(Zlib.RawInflate.MaxBackwardLength, buffer.length));\n  }\n\n  this.blocks.push(buffer);\n  this.totalpos += buffer.length;\n\n  // copy to backward buffer\n  {\n    output.set(\n      output.subarray(backward, backward + Zlib.RawInflate.MaxBackwardLength)\n    );\n  }\n\n  this.op = Zlib.RawInflate.MaxBackwardLength;\n\n  return output;\n};\n\n/**\n * expand output buffer. (adaptive)\n * @param {Object=} opt_param option parameters.\n * @return {!(Array.<number>|Uint8Array)} output buffer pointer.\n */\nZlib.RawInflate.prototype.expandBufferAdaptive = function(opt_param) {\n  /** @type {!(Array.<number>|Uint8Array)} store buffer. */\n  var buffer;\n  /** @type {number} expantion ratio. */\n  var ratio = (this.input.length / this.ip + 1) | 0;\n  /** @type {number} maximum number of huffman code. */\n  var maxHuffCode;\n  /** @type {number} new output buffer size. */\n  var newSize;\n  /** @type {number} max inflate size. */\n  var maxInflateSize;\n\n  var input = this.input;\n  var output = this.output;\n\n  if (opt_param) {\n    if (typeof opt_param.fixRatio === 'number') {\n      ratio = opt_param.fixRatio;\n    }\n    if (typeof opt_param.addRatio === 'number') {\n      ratio += opt_param.addRatio;\n    }\n  }\n\n  // calculate new buffer size\n  if (ratio < 2) {\n    maxHuffCode =\n      (input.length - this.ip) / this.currentLitlenTable[2];\n    maxInflateSize = (maxHuffCode / 2 * 258) | 0;\n    newSize = maxInflateSize < output.length ?\n      output.length + maxInflateSize :\n      output.length << 1;\n  } else {\n    newSize = output.length * ratio;\n  }\n\n  // buffer expantion\n  {\n    buffer = new Uint8Array(newSize);\n    buffer.set(output);\n  }\n\n  this.output = buffer;\n\n  return this.output;\n};\n\n/**\n * concat output buffer.\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.concatBufferBlock = function() {\n  /** @type {number} buffer pointer. */\n  var pos = 0;\n  /** @type {number} buffer pointer. */\n  var limit = this.totalpos + (this.op - Zlib.RawInflate.MaxBackwardLength);\n  /** @type {!(Array.<number>|Uint8Array)} output block array. */\n  var output = this.output;\n  /** @type {!Array} blocks array. */\n  var blocks = this.blocks;\n  /** @type {!(Array.<number>|Uint8Array)} output block array. */\n  var block;\n  /** @type {!(Array.<number>|Uint8Array)} output buffer. */\n  var buffer = new (Uint8Array )(limit);\n  /** @type {number} loop counter. */\n  var i;\n  /** @type {number} loop limiter. */\n  var il;\n  /** @type {number} loop counter. */\n  var j;\n  /** @type {number} loop limiter. */\n  var jl;\n\n  // single buffer\n  if (blocks.length === 0) {\n    return this.output.subarray(Zlib.RawInflate.MaxBackwardLength, this.op) ;\n  }\n\n  // copy to buffer\n  for (i = 0, il = blocks.length; i < il; ++i) {\n    block = blocks[i];\n    for (j = 0, jl = block.length; j < jl; ++j) {\n      buffer[pos++] = block[j];\n    }\n  }\n\n  // current buffer\n  for (i = Zlib.RawInflate.MaxBackwardLength, il = this.op; i < il; ++i) {\n    buffer[pos++] = output[i];\n  }\n\n  this.blocks = [];\n  this.buffer = buffer;\n\n  return this.buffer;\n};\n\n/**\n * concat output buffer. (dynamic)\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.concatBufferDynamic = function() {\n  /** @type {Array.<number>|Uint8Array} output buffer. */\n  var buffer;\n  var op = this.op;\n\n  {\n    if (this.resize) {\n      buffer = new Uint8Array(op);\n      buffer.set(this.output.subarray(0, op));\n    } else {\n      buffer = this.output.subarray(0, op);\n    }\n  }\n\n  this.buffer = buffer;\n\n  return this.buffer;\n};\n\n\n\n\nvar buildHuffmanTable = Zlib.Huffman.buildHuffmanTable;\n\n/**\n * @param {!(Uint8Array|Array.<number>)} input input buffer.\n * @param {number} ip input buffer pointer.\n * @param {number=} opt_buffersize buffer block size.\n * @constructor\n */\nZlib.RawInflateStream = function(input, ip, opt_buffersize) {\n  /** @type {!Array.<(Array|Uint8Array)>} */\n  this.blocks = [];\n  /** @type {number} block size. */\n  this.bufferSize =\n    opt_buffersize ? opt_buffersize : ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE;\n  /** @type {!number} total output buffer pointer. */\n  this.totalpos = 0;\n  /** @type {!number} input buffer pointer. */\n  this.ip = ip === void 0 ? 0 : ip;\n  /** @type {!number} bit stream reader buffer. */\n  this.bitsbuf = 0;\n  /** @type {!number} bit stream reader buffer size. */\n  this.bitsbuflen = 0;\n  /** @type {!(Array|Uint8Array)} input buffer. */\n  this.input = new Uint8Array(input) ;\n  /** @type {!(Uint8Array|Array)} output buffer. */\n  this.output = new (Uint8Array )(this.bufferSize);\n  /** @type {!number} output buffer pointer. */\n  this.op = 0;\n  /** @type {boolean} is final block flag. */\n  this.bfinal = false;\n  /** @type {number} uncompressed block length. */\n  this.blockLength;\n  /** @type {boolean} resize flag for memory size optimization. */\n  this.resize = false;\n  /** @type {Array} */\n  this.litlenTable;\n  /** @type {Array} */\n  this.distTable;\n  /** @type {number} */\n  this.sp = 0; // stream pointer\n  /** @type {Zlib.RawInflateStream.Status} */\n  this.status = Zlib.RawInflateStream.Status.INITIALIZED;\n\n  //\n  // backup\n  //\n  /** @type {!number} */\n  this.ip_;\n  /** @type {!number} */\n  this.bitsbuflen_;\n  /** @type {!number} */\n  this.bitsbuf_;\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflateStream.BlockType = {\n  UNCOMPRESSED: 0,\n  FIXED: 1,\n  DYNAMIC: 2\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflateStream.Status = {\n  INITIALIZED: 0,\n  BLOCK_HEADER_START: 1,\n  BLOCK_HEADER_END: 2,\n  BLOCK_BODY_START: 3,\n  BLOCK_BODY_END: 4,\n  DECODE_BLOCK_START: 5,\n  DECODE_BLOCK_END: 6\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.RawInflateStream.prototype.decompress = function(newInput, ip) {\n  /** @type {boolean} */\n  var stop = false;\n\n  if (newInput !== void 0) {\n    this.input = newInput;\n  }\n\n  if (ip !== void 0) {\n    this.ip = ip;\n  }\n\n  // decompress\n  while (!stop) {\n    switch (this.status) {\n      // block header\n      case Zlib.RawInflateStream.Status.INITIALIZED:\n      case Zlib.RawInflateStream.Status.BLOCK_HEADER_START:\n        if (this.readBlockHeader() < 0) {\n          stop = true;\n        }\n        break;\n      // block body\n      case Zlib.RawInflateStream.Status.BLOCK_HEADER_END: /* FALLTHROUGH */\n      case Zlib.RawInflateStream.Status.BLOCK_BODY_START:\n        switch(this.currentBlockType) {\n          case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:\n            if (this.readUncompressedBlockHeader() < 0) {\n              stop = true;\n            }\n            break;\n          case Zlib.RawInflateStream.BlockType.FIXED:\n            if (this.parseFixedHuffmanBlock() < 0) {\n              stop = true;\n            }\n            break;\n          case Zlib.RawInflateStream.BlockType.DYNAMIC:\n            if (this.parseDynamicHuffmanBlock() < 0) {\n              stop = true;\n            }\n            break;\n        }\n        break;\n      // decode data\n      case Zlib.RawInflateStream.Status.BLOCK_BODY_END:\n      case Zlib.RawInflateStream.Status.DECODE_BLOCK_START:\n        switch(this.currentBlockType) {\n          case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:\n            if (this.parseUncompressedBlock() < 0) {\n              stop = true;\n            }\n            break;\n          case Zlib.RawInflateStream.BlockType.FIXED: /* FALLTHROUGH */\n          case Zlib.RawInflateStream.BlockType.DYNAMIC:\n            if (this.decodeHuffman() < 0) {\n              stop = true;\n            }\n            break;\n        }\n        break;\n      case Zlib.RawInflateStream.Status.DECODE_BLOCK_END:\n        if (this.bfinal) {\n          stop = true;\n        } else {\n          this.status = Zlib.RawInflateStream.Status.INITIALIZED;\n        }\n        break;\n    }\n  }\n\n  return this.concatBuffer();\n};\n\n/**\n * @const\n * @type {number} max backward length for LZ77.\n */\nZlib.RawInflateStream.MaxBackwardLength = 32768;\n\n/**\n * @const\n * @type {number} max copy length for LZ77.\n */\nZlib.RawInflateStream.MaxCopyLength = 258;\n\n/**\n * huffman order\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.Order = (function(table) {\n  return new Uint16Array(table) ;\n})([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n\n/**\n * huffman length code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflateStream.LengthCodeTable = (function(table) {\n  return new Uint16Array(table) ;\n})([\n  0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b,\n  0x000d, 0x000f, 0x0011, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x002b,\n  0x0033, 0x003b, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083, 0x00a3, 0x00c3,\n  0x00e3, 0x0102, 0x0102, 0x0102\n]);\n\n/**\n * huffman length extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.LengthExtraTable = (function(table) {\n  return new Uint8Array(table) ;\n})([\n  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,\n  5, 5, 0, 0, 0\n]);\n\n/**\n * huffman dist code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflateStream.DistCodeTable = (function(table) {\n  return new Uint16Array(table) ;\n})([\n  0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011,\n  0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181,\n  0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, 0x1001, 0x1801, 0x2001,\n  0x3001, 0x4001, 0x6001\n]);\n\n/**\n * huffman dist extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.DistExtraTable = (function(table) {\n  return new Uint8Array(table) ;\n})([\n  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,\n  11, 12, 12, 13, 13\n]);\n\n/**\n * fixed huffman length code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflateStream.FixedLiteralLengthTable = (function(table) {\n  return table;\n})((function() {\n  var lengths = new (Uint8Array )(288);\n  var i, il;\n\n  for (i = 0, il = lengths.length; i < il; ++i) {\n    lengths[i] =\n      (i <= 143) ? 8 :\n      (i <= 255) ? 9 :\n      (i <= 279) ? 7 :\n      8;\n  }\n\n  return buildHuffmanTable(lengths);\n})());\n\n/**\n * fixed huffman distance code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflateStream.FixedDistanceTable = (function(table) {\n  return table;\n})((function() {\n  var lengths = new (Uint8Array )(30);\n  var i, il;\n\n  for (i = 0, il = lengths.length; i < il; ++i) {\n    lengths[i] = 5;\n  }\n\n  return buildHuffmanTable(lengths);\n})());\n\n/**\n * parse deflated block.\n */\nZlib.RawInflateStream.prototype.readBlockHeader = function() {\n  /** @type {number} header */\n  var hdr;\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_HEADER_START;\n\n  this.save_();\n  if ((hdr = this.readBits(3)) < 0) {\n    this.restore_();\n    return -1;\n  }\n\n  // BFINAL\n  if (hdr & 0x1) {\n    this.bfinal = true;\n  }\n\n  // BTYPE\n  hdr >>>= 1;\n  switch (hdr) {\n    case 0: // uncompressed\n      this.currentBlockType = Zlib.RawInflateStream.BlockType.UNCOMPRESSED;\n      break;\n    case 1: // fixed huffman\n      this.currentBlockType = Zlib.RawInflateStream.BlockType.FIXED;\n      break;\n    case 2: // dynamic huffman\n      this.currentBlockType = Zlib.RawInflateStream.BlockType.DYNAMIC;\n      break;\n    default: // reserved or other\n      throw new Error('unknown BTYPE: ' + hdr);\n  }\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_HEADER_END;\n};\n\n/**\n * read inflate bits\n * @param {number} length bits length.\n * @return {number} read bits.\n */\nZlib.RawInflateStream.prototype.readBits = function(length) {\n  var bitsbuf = this.bitsbuf;\n  var bitsbuflen = this.bitsbuflen;\n  var input = this.input;\n  var ip = this.ip;\n\n  /** @type {number} input and output byte. */\n  var octet;\n\n  // not enough buffer\n  while (bitsbuflen < length) {\n    // input byte\n    if (input.length <= ip) {\n      return -1;\n    }\n    octet = input[ip++];\n\n    // concat octet\n    bitsbuf |= octet << bitsbuflen;\n    bitsbuflen += 8;\n  }\n\n  // output byte\n  octet = bitsbuf & /* MASK */ ((1 << length) - 1);\n  bitsbuf >>>= length;\n  bitsbuflen -= length;\n\n  this.bitsbuf = bitsbuf;\n  this.bitsbuflen = bitsbuflen;\n  this.ip = ip;\n\n  return octet;\n};\n\n/**\n * read huffman code using table\n * @param {Array} table huffman code table.\n * @return {number} huffman code.\n */\nZlib.RawInflateStream.prototype.readCodeByTable = function(table) {\n  var bitsbuf = this.bitsbuf;\n  var bitsbuflen = this.bitsbuflen;\n  var input = this.input;\n  var ip = this.ip;\n\n  /** @type {!(Array|Uint8Array)} huffman code table */\n  var codeTable = table[0];\n  /** @type {number} */\n  var maxCodeLength = table[1];\n  /** @type {number} input byte */\n  var octet;\n  /** @type {number} code length & code (16bit, 16bit) */\n  var codeWithLength;\n  /** @type {number} code bits length */\n  var codeLength;\n\n  // not enough buffer\n  while (bitsbuflen < maxCodeLength) {\n    if (input.length <= ip) {\n      return -1;\n    }\n    octet = input[ip++];\n    bitsbuf |= octet << bitsbuflen;\n    bitsbuflen += 8;\n  }\n\n  // read max length\n  codeWithLength = codeTable[bitsbuf & ((1 << maxCodeLength) - 1)];\n  codeLength = codeWithLength >>> 16;\n\n  if (codeLength > bitsbuflen) {\n    throw new Error('invalid code length: ' + codeLength);\n  }\n\n  this.bitsbuf = bitsbuf >> codeLength;\n  this.bitsbuflen = bitsbuflen - codeLength;\n  this.ip = ip;\n\n  return codeWithLength & 0xffff;\n};\n\n/**\n * read uncompressed block header\n */\nZlib.RawInflateStream.prototype.readUncompressedBlockHeader = function() {\n  /** @type {number} block length */\n  var len;\n  /** @type {number} number for check block length */\n  var nlen;\n\n  var input = this.input;\n  var ip = this.ip;\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n  if (ip + 4 >= input.length) {\n    return -1;\n  }\n\n  len = input[ip++] | (input[ip++] << 8);\n  nlen = input[ip++] | (input[ip++] << 8);\n\n  // check len & nlen\n  if (len === ~nlen) {\n    throw new Error('invalid uncompressed block header: length verify');\n  }\n\n  // skip buffered header bits\n  this.bitsbuf = 0;\n  this.bitsbuflen = 0;\n\n  this.ip = ip;\n  this.blockLength = len;\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n};\n\n/**\n * parse uncompressed block.\n */\nZlib.RawInflateStream.prototype.parseUncompressedBlock = function() {\n  var input = this.input;\n  var ip = this.ip;\n  var output = this.output;\n  var op = this.op;\n  var len = this.blockLength;\n\n  this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_START;\n\n  // copy\n  // XXX: とりあえず素直にコピー\n  while (len--) {\n    if (op === output.length) {\n      output = this.expandBuffer({fixRatio: 2});\n    }\n\n    // not enough input buffer\n    if (ip >= input.length) {\n      this.ip = ip;\n      this.op = op;\n      this.blockLength = len + 1; // コピーしてないので戻す\n      return -1;\n    }\n\n    output[op++] = input[ip++];\n  }\n\n  if (len < 0) {\n    this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_END;\n  }\n\n  this.ip = ip;\n  this.op = op;\n\n  return 0;\n};\n\n/**\n * parse fixed huffman block.\n */\nZlib.RawInflateStream.prototype.parseFixedHuffmanBlock = function() {\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n  this.litlenTable = Zlib.RawInflateStream.FixedLiteralLengthTable;\n  this.distTable = Zlib.RawInflateStream.FixedDistanceTable;\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n\n  return 0;\n};\n\n/**\n * オブジェクトのコンテキストを別のプロパティに退避する.\n * @private\n */\nZlib.RawInflateStream.prototype.save_ = function() {\n  this.ip_ = this.ip;\n  this.bitsbuflen_ = this.bitsbuflen;\n  this.bitsbuf_ = this.bitsbuf;\n};\n\n/**\n * 別のプロパティに退避したコンテキストを復元する.\n * @private\n */\nZlib.RawInflateStream.prototype.restore_ = function() {\n  this.ip = this.ip_;\n  this.bitsbuflen = this.bitsbuflen_;\n  this.bitsbuf = this.bitsbuf_;\n};\n\n/**\n * parse dynamic huffman block.\n */\nZlib.RawInflateStream.prototype.parseDynamicHuffmanBlock = function() {\n  /** @type {number} number of literal and length codes. */\n  var hlit;\n  /** @type {number} number of distance codes. */\n  var hdist;\n  /** @type {number} number of code lengths. */\n  var hclen;\n  /** @type {!(Uint8Array|Array)} code lengths. */\n  var codeLengths =\n    new (Uint8Array )(Zlib.RawInflateStream.Order.length);\n  /** @type {!Array} code lengths table. */\n  var codeLengthsTable;\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n  this.save_();\n  hlit = this.readBits(5) + 257;\n  hdist = this.readBits(5) + 1;\n  hclen = this.readBits(4) + 4;\n  if (hlit < 0 || hdist < 0 || hclen < 0) {\n    this.restore_();\n    return -1;\n  }\n\n  try {\n    parseDynamicHuffmanBlockImpl.call(this);\n  } catch(e) {\n    this.restore_();\n    return -1;\n  }\n\n  function parseDynamicHuffmanBlockImpl() {\n    /** @type {number} */\n    var bits;\n    var code;\n    var prev = 0;\n    var repeat;\n    /** @type {!(Uint8Array|Array.<number>)} code length table. */\n    var lengthTable;\n    /** @type {number} loop counter. */\n    var i;\n    /** @type {number} loop limit. */\n    var il;\n\n    // decode code lengths\n    for (i = 0; i < hclen; ++i) {\n      if ((bits = this.readBits(3)) < 0) {\n        throw new Error('not enough input');\n      }\n      codeLengths[Zlib.RawInflateStream.Order[i]] = bits;\n    }\n\n    // decode length table\n    codeLengthsTable = buildHuffmanTable(codeLengths);\n    lengthTable = new (Uint8Array )(hlit + hdist);\n    for (i = 0, il = hlit + hdist; i < il;) {\n      code = this.readCodeByTable(codeLengthsTable);\n      if (code < 0) {\n        throw new Error('not enough input');\n      }\n      switch (code) {\n        case 16:\n          if ((bits = this.readBits(2)) < 0) {\n            throw new Error('not enough input');\n          }\n          repeat = 3 + bits;\n          while (repeat--) { lengthTable[i++] = prev; }\n          break;\n        case 17:\n          if ((bits = this.readBits(3)) < 0) {\n            throw new Error('not enough input');\n          }\n          repeat = 3 + bits;\n          while (repeat--) { lengthTable[i++] = 0; }\n          prev = 0;\n          break;\n        case 18:\n          if ((bits = this.readBits(7)) < 0) {\n            throw new Error('not enough input');\n          }\n          repeat = 11 + bits;\n          while (repeat--) { lengthTable[i++] = 0; }\n          prev = 0;\n          break;\n        default:\n          lengthTable[i++] = code;\n          prev = code;\n          break;\n      }\n    }\n\n    this.litlenTable = buildHuffmanTable(lengthTable.subarray(0, hlit))\n      ;\n    this.distTable = buildHuffmanTable(lengthTable.subarray(hlit))\n      ;\n  }\n\n  this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n\n  return 0;\n};\n\n/**\n * decode huffman code (dynamic)\n * @return {(number|undefined)} -1 is error.\n */\nZlib.RawInflateStream.prototype.decodeHuffman = function() {\n  var output = this.output;\n  var op = this.op;\n\n  /** @type {number} huffman code. */\n  var code;\n  /** @type {number} table index. */\n  var ti;\n  /** @type {number} huffman code distination. */\n  var codeDist;\n  /** @type {number} huffman code length. */\n  var codeLength;\n\n  var litlen = this.litlenTable;\n  var dist = this.distTable;\n\n  var olength = output.length;\n  var bits;\n\n  this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_START;\n\n  while (true) {\n    this.save_();\n\n    code = this.readCodeByTable(litlen);\n    if (code < 0) {\n      this.op = op;\n      this.restore_();\n      return -1;\n    }\n\n    if (code === 256) {\n      break;\n    }\n\n    // literal\n    if (code < 256) {\n      if (op === olength) {\n        output = this.expandBuffer();\n        olength = output.length;\n      }\n      output[op++] = code;\n\n      continue;\n    }\n\n    // length code\n    ti = code - 257;\n    codeLength = Zlib.RawInflateStream.LengthCodeTable[ti];\n    if (Zlib.RawInflateStream.LengthExtraTable[ti] > 0) {\n      bits = this.readBits(Zlib.RawInflateStream.LengthExtraTable[ti]);\n      if (bits < 0) {\n        this.op = op;\n        this.restore_();\n        return -1;\n      }\n      codeLength += bits;\n    }\n\n    // dist code\n    code = this.readCodeByTable(dist);\n    if (code < 0) {\n      this.op = op;\n      this.restore_();\n      return -1;\n    }\n    codeDist = Zlib.RawInflateStream.DistCodeTable[code];\n    if (Zlib.RawInflateStream.DistExtraTable[code] > 0) {\n      bits = this.readBits(Zlib.RawInflateStream.DistExtraTable[code]);\n      if (bits < 0) {\n        this.op = op;\n        this.restore_();\n        return -1;\n      }\n      codeDist += bits;\n    }\n\n    // lz77 decode\n    if (op + codeLength >= olength) {\n      output = this.expandBuffer();\n      olength = output.length;\n    }\n\n    while (codeLength--) {\n      output[op] = output[(op++) - codeDist];\n    }\n\n    // break\n    if (this.ip === this.input.length) {\n      this.op = op;\n      return -1;\n    }\n  }\n\n  while (this.bitsbuflen >= 8) {\n    this.bitsbuflen -= 8;\n    this.ip--;\n  }\n\n  this.op = op;\n  this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_END;\n};\n\n/**\n * expand output buffer. (dynamic)\n * @param {Object=} opt_param option parameters.\n * @return {!(Array|Uint8Array)} output buffer pointer.\n */\nZlib.RawInflateStream.prototype.expandBuffer = function(opt_param) {\n  /** @type {!(Array|Uint8Array)} store buffer. */\n  var buffer;\n  /** @type {number} expantion ratio. */\n  var ratio = (this.input.length / this.ip + 1) | 0;\n  /** @type {number} maximum number of huffman code. */\n  var maxHuffCode;\n  /** @type {number} new output buffer size. */\n  var newSize;\n  /** @type {number} max inflate size. */\n  var maxInflateSize;\n\n  var input = this.input;\n  var output = this.output;\n\n  if (opt_param) {\n    if (typeof opt_param.fixRatio === 'number') {\n      ratio = opt_param.fixRatio;\n    }\n    if (typeof opt_param.addRatio === 'number') {\n      ratio += opt_param.addRatio;\n    }\n  }\n\n  // calculate new buffer size\n  if (ratio < 2) {\n    maxHuffCode =\n      (input.length - this.ip) / this.litlenTable[2];\n    maxInflateSize = (maxHuffCode / 2 * 258) | 0;\n    newSize = maxInflateSize < output.length ?\n      output.length + maxInflateSize :\n      output.length << 1;\n  } else {\n    newSize = output.length * ratio;\n  }\n\n  // buffer expantion\n  {\n    buffer = new Uint8Array(newSize);\n    buffer.set(output);\n  }\n\n  this.output = buffer;\n\n  return this.output;\n};\n\n/**\n * concat output buffer. (dynamic)\n * @return {!(Array|Uint8Array)} output buffer.\n */\nZlib.RawInflateStream.prototype.concatBuffer = function() {\n  /** @type {!(Array|Uint8Array)} output buffer. */\n  var buffer;\n  /** @type {number} */\n  var op = this.op;\n  /** @type {Uint8Array} */\n  var tmp;\n\n  if (this.resize) {\n    {\n      buffer = new Uint8Array(this.output.subarray(this.sp, op));\n    }\n  } else {\n    buffer =\n      this.output.subarray(this.sp, op) ;\n  }\n\n  this.sp = op;\n\n  // compaction\n  if (op > Zlib.RawInflateStream.MaxBackwardLength + this.bufferSize) {\n    this.op = this.sp = Zlib.RawInflateStream.MaxBackwardLength;\n    {\n      tmp = /** @type {Uint8Array} */(this.output);\n      this.output = new Uint8Array(this.bufferSize + Zlib.RawInflateStream.MaxBackwardLength);\n      this.output.set(tmp.subarray(op - Zlib.RawInflateStream.MaxBackwardLength, op));\n    }\n  }\n\n  return buffer;\n};\n\n\n/**\n * @constructor\n * @param {!(Uint8Array|Array)} input deflated buffer.\n * @param {Object=} opt_params option parameters.\n *\n * opt_params は以下のプロパティを指定する事ができます。\n *   - index: input buffer の deflate コンテナの開始位置.\n *   - blockSize: バッファのブロックサイズ.\n *   - verify: 伸張が終わった後 adler-32 checksum の検証を行うか.\n *   - bufferType: Zlib.Inflate.BufferType の値によってバッファの管理方法を指定する.\n *       Zlib.Inflate.BufferType は Zlib.RawInflate.BufferType のエイリアス.\n */\nZlib.Inflate = function(input, opt_params) {\n  /** @type {number} */\n  var cmf;\n  /** @type {number} */\n  var flg;\n\n  /** @type {!(Uint8Array|Array)} */\n  this.input = input;\n  /** @type {number} */\n  this.ip = 0;\n  /** @type {Zlib.RawInflate} */\n  this.rawinflate;\n  /** @type {(boolean|undefined)} verify flag. */\n  this.verify;\n\n  // option parameters\n  if (opt_params || !(opt_params = {})) {\n    if (opt_params['index']) {\n      this.ip = opt_params['index'];\n    }\n    if (opt_params['verify']) {\n      this.verify = opt_params['verify'];\n    }\n  }\n\n  // Compression Method and Flags\n  cmf = input[this.ip++];\n  flg = input[this.ip++];\n\n  // compression method\n  switch (cmf & 0x0f) {\n    case Zlib.CompressionMethod.DEFLATE:\n      this.method = Zlib.CompressionMethod.DEFLATE;\n      break;\n    default:\n      throw new Error('unsupported compression method');\n  }\n\n  // fcheck\n  if (((cmf << 8) + flg) % 31 !== 0) {\n    throw new Error('invalid fcheck flag:' + ((cmf << 8) + flg) % 31);\n  }\n\n  // fdict (not supported)\n  if (flg & 0x20) {\n    throw new Error('fdict flag is not supported');\n  }\n\n  // RawInflate\n  this.rawinflate = new Zlib.RawInflate(input, {\n    'index': this.ip,\n    'bufferSize': opt_params['bufferSize'],\n    'bufferType': opt_params['bufferType'],\n    'resize': opt_params['resize']\n  });\n};\n\n/**\n * @enum {number}\n */\nZlib.Inflate.BufferType = Zlib.RawInflate.BufferType;\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.Inflate.prototype.decompress = function() {\n  /** @type {!(Array|Uint8Array)} input buffer. */\n  var input = this.input;\n  /** @type {!(Uint8Array|Array)} inflated buffer. */\n  var buffer;\n  /** @type {number} adler-32 checksum */\n  var adler32;\n\n  buffer = this.rawinflate.decompress();\n  this.ip = this.rawinflate.ip;\n\n  // verify adler-32\n  if (this.verify) {\n    adler32 = (\n      input[this.ip++] << 24 | input[this.ip++] << 16 |\n      input[this.ip++] << 8 | input[this.ip++]\n    ) >>> 0;\n\n    if (adler32 !== Zlib.Adler32(buffer)) {\n      throw new Error('invalid adler-32 checksum');\n    }\n  }\n\n  return buffer;\n};\n\n\n/* vim:set expandtab ts=2 sw=2 tw=80: */\n\n\n/**\n * @param {!(Uint8Array|Array)} input deflated buffer.\n * @constructor\n */\nZlib.InflateStream = function(input) {\n  /** @type {!(Uint8Array|Array)} */\n  this.input = input === void 0 ? new (Uint8Array )() : input;\n  /** @type {number} */\n  this.ip = 0;\n  /** @type {Zlib.RawInflateStream} */\n  this.rawinflate = new Zlib.RawInflateStream(this.input, this.ip);\n  /** @type {Zlib.CompressionMethod} */\n  this.method;\n  /** @type {!(Array|Uint8Array)} */\n  this.output = this.rawinflate.output;\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.InflateStream.prototype.decompress = function(input) {\n  /** @type {!(Uint8Array|Array)} inflated buffer. */\n  var buffer;\n\n  // 新しい入力を入力バッファに結合する\n  // XXX Array, Uint8Array のチェックを行うか確認する\n  if (input !== void 0) {\n    {\n      var tmp = new Uint8Array(this.input.length + input.length);\n      tmp.set(this.input, 0);\n      tmp.set(input, this.input.length);\n      this.input = tmp;\n    }\n  }\n\n  if (this.method === void 0) {\n    if(this.readHeader() < 0) {\n      return new (Uint8Array )();\n    }\n  }\n\n  buffer = this.rawinflate.decompress(this.input, this.ip);\n  if (this.rawinflate.ip !== 0) {\n    this.input = this.input.subarray(this.rawinflate.ip) ;\n    this.ip = 0;\n  }\n\n  // verify adler-32\n  /*\n  if (this.verify) {\n    adler32 =\n      input[this.ip++] << 24 | input[this.ip++] << 16 |\n      input[this.ip++] << 8 | input[this.ip++];\n\n    if (adler32 !== Zlib.Adler32(buffer)) {\n      throw new Error('invalid adler-32 checksum');\n    }\n  }\n  */\n\n  return buffer;\n};\n\nZlib.InflateStream.prototype.readHeader = function() {\n  var ip = this.ip;\n  var input = this.input;\n\n  // Compression Method and Flags\n  var cmf = input[ip++];\n  var flg = input[ip++];\n\n  if (cmf === void 0 || flg === void 0) {\n    return -1;\n  }\n\n  // compression method\n  switch (cmf & 0x0f) {\n    case Zlib.CompressionMethod.DEFLATE:\n      this.method = Zlib.CompressionMethod.DEFLATE;\n      break;\n    default:\n      throw new Error('unsupported compression method');\n  }\n\n  // fcheck\n  if (((cmf << 8) + flg) % 31 !== 0) {\n    throw new Error('invalid fcheck flag:' + ((cmf << 8) + flg) % 31);\n  }\n\n  // fdict (not supported)\n  if (flg & 0x20) {\n    throw new Error('fdict flag is not supported');\n  }\n\n  this.ip = ip;\n};\n\n\n/**\n * @fileoverview GZIP (RFC1952) 展開コンテナ実装.\n */\n\n/**\n * @constructor\n * @param {!(Array|Uint8Array)} input input buffer.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Gunzip = function(input, opt_params) {\n  /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n  this.input = input;\n  /** @type {number} input buffer pointer. */\n  this.ip = 0;\n  /** @type {Array.<Zlib.GunzipMember>} */\n  this.member = [];\n  /** @type {boolean} */\n  this.decompressed = false;\n};\n\n/**\n * @return {Array.<Zlib.GunzipMember>}\n */\nZlib.Gunzip.prototype.getMembers = function() {\n  if (!this.decompressed) {\n    this.decompress();\n  }\n\n  return this.member.slice();\n};\n\n/**\n * inflate gzip data.\n * @return {!(Array.<number>|Uint8Array)} inflated buffer.\n */\nZlib.Gunzip.prototype.decompress = function() {\n  /** @type {number} input length. */\n  var il = this.input.length;\n\n  while (this.ip < il) {\n    this.decodeMember();\n  }\n\n  this.decompressed = true;\n\n  return this.concatMember();\n};\n\n/**\n * decode gzip member.\n */\nZlib.Gunzip.prototype.decodeMember = function() {\n  /** @type {Zlib.GunzipMember} */\n  var member = new Zlib.GunzipMember();\n  /** @type {number} */\n  var isize;\n  /** @type {Zlib.RawInflate} RawInflate implementation. */\n  var rawinflate;\n  /** @type {!(Array.<number>|Uint8Array)} inflated data. */\n  var inflated;\n  /** @type {number} inflate size */\n  var inflen;\n  /** @type {number} character code */\n  var c;\n  /** @type {number} character index in string. */\n  var ci;\n  /** @type {Array.<string>} character array. */\n  var str;\n  /** @type {number} modification time. */\n  var mtime;\n  /** @type {number} */\n  var crc32;\n\n  var input = this.input;\n  var ip = this.ip;\n\n  member.id1 = input[ip++];\n  member.id2 = input[ip++];\n\n  // check signature\n  if (member.id1 !== 0x1f || member.id2 !== 0x8b) {\n    throw new Error('invalid file signature:' + member.id1 + ',' + member.id2);\n  }\n\n  // check compression method\n  member.cm = input[ip++];\n  switch (member.cm) {\n    case 8: /* XXX: use Zlib const */\n      break;\n    default:\n      throw new Error('unknown compression method: ' + member.cm);\n  }\n\n  // flags\n  member.flg = input[ip++];\n\n  // modification time\n  mtime = (input[ip++])       |\n          (input[ip++] << 8)  |\n          (input[ip++] << 16) |\n          (input[ip++] << 24);\n  member.mtime = new Date(mtime * 1000);\n\n  // extra flags\n  member.xfl = input[ip++];\n\n  // operating system\n  member.os = input[ip++];\n\n  // extra\n  if ((member.flg & Zlib.Gzip.FlagsMask.FEXTRA) > 0) {\n    member.xlen = input[ip++] | (input[ip++] << 8);\n    ip = this.decodeSubField(ip, member.xlen);\n  }\n\n  // fname\n  if ((member.flg & Zlib.Gzip.FlagsMask.FNAME) > 0) {\n    for(str = [], ci = 0; (c = input[ip++]) > 0;) {\n      str[ci++] = String.fromCharCode(c);\n    }\n    member.name = str.join('');\n  }\n\n  // fcomment\n  if ((member.flg & Zlib.Gzip.FlagsMask.FCOMMENT) > 0) {\n    for(str = [], ci = 0; (c = input[ip++]) > 0;) {\n      str[ci++] = String.fromCharCode(c);\n    }\n    member.comment = str.join('');\n  }\n\n  // fhcrc\n  if ((member.flg & Zlib.Gzip.FlagsMask.FHCRC) > 0) {\n    member.crc16 = Zlib.CRC32.calc(input, 0, ip) & 0xffff;\n    if (member.crc16 !== (input[ip++] | (input[ip++] << 8))) {\n      throw new Error('invalid header crc16');\n    }\n  }\n\n  // isize を事前に取得すると展開後のサイズが分かるため、\n  // inflate処理のバッファサイズが事前に分かり、高速になる\n  isize = (input[input.length - 4])       | (input[input.length - 3] << 8) |\n          (input[input.length - 2] << 16) | (input[input.length - 1] << 24);\n\n  // isize の妥当性チェック\n  // ハフマン符号では最小 2-bit のため、最大で 1/4 になる\n  // LZ77 符号では 長さと距離 2-Byte で最大 258-Byte を表現できるため、\n  // 1/128 になるとする\n  // ここから入力バッファの残りが isize の 512 倍以上だったら\n  // サイズ指定のバッファ確保は行わない事とする\n  if (input.length - ip - /* CRC-32 */4 - /* ISIZE */4 < isize * 512) {\n    inflen = isize;\n  }\n\n  // compressed block\n  rawinflate = new Zlib.RawInflate(input, {'index': ip, 'bufferSize': inflen});\n  member.data = inflated = rawinflate.decompress();\n  ip = rawinflate.ip;\n\n  // crc32\n  member.crc32 = crc32 =\n    ((input[ip++])       | (input[ip++] << 8) |\n     (input[ip++] << 16) | (input[ip++] << 24)) >>> 0;\n  if (Zlib.CRC32.calc(inflated) !== crc32) {\n    throw new Error('invalid CRC-32 checksum: 0x' +\n        Zlib.CRC32.calc(inflated).toString(16) + ' / 0x' + crc32.toString(16));\n  }\n\n  // input size\n  member.isize = isize =\n    ((input[ip++])       | (input[ip++] << 8) |\n     (input[ip++] << 16) | (input[ip++] << 24)) >>> 0;\n  if ((inflated.length & 0xffffffff) !== isize) {\n    throw new Error('invalid input size: ' +\n        (inflated.length & 0xffffffff) + ' / ' + isize);\n  }\n\n  this.member.push(member);\n  this.ip = ip;\n};\n\n/**\n * サブフィールドのデコード\n * XXX: 現在は何もせずスキップする\n */\nZlib.Gunzip.prototype.decodeSubField = function(ip, length) {\n  return ip + length;\n};\n\n/**\n * @return {!(Array.<number>|Uint8Array)}\n */\nZlib.Gunzip.prototype.concatMember = function() {\n  /** @type {Array.<Zlib.GunzipMember>} */\n  var member = this.member;\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n  /** @type {number} */\n  var p = 0;\n  /** @type {number} */\n  var size = 0;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var buffer;\n\n  for (i = 0, il = member.length; i < il; ++i) {\n    size += member[i].data.length;\n  }\n\n  {\n    buffer = new Uint8Array(size);\n    for (i = 0; i < il; ++i) {\n      buffer.set(member[i].data, p);\n      p += member[i].data.length;\n    }\n  }\n\n  return buffer;\n};\n\n\n\n/**\n * @constructor\n */\nZlib.GunzipMember = function() {\n  /** @type {number} signature first byte. */\n  this.id1;\n  /** @type {number} signature second byte. */\n  this.id2;\n  /** @type {number} compression method. */\n  this.cm;\n  /** @type {number} flags. */\n  this.flg;\n  /** @type {Date} modification time. */\n  this.mtime;\n  /** @type {number} extra flags. */\n  this.xfl;\n  /** @type {number} operating system number. */\n  this.os;\n  /** @type {number} CRC-16 value for FHCRC flag. */\n  this.crc16;\n  /** @type {number} extra length. */\n  this.xlen;\n  /** @type {number} CRC-32 value for verification. */\n  this.crc32;\n  /** @type {number} input size modulo 32 value. */\n  this.isize;\n  /** @type {string} filename. */\n  this.name;\n  /** @type {string} comment. */\n  this.comment;\n  /** @type {!(Uint8Array|Array.<number>)} */\n  this.data;\n};\n\nZlib.GunzipMember.prototype.getName = function() {\n  return this.name;\n};\n\nZlib.GunzipMember.prototype.getData = function() {\n  return this.data;\n};\n\nZlib.GunzipMember.prototype.getMtime = function() {\n  return this.mtime;\n};\n\n/**\n * @fileoverview GZIP (RFC1952) 実装.\n */\n\n/**\n * @constructor\n * @param {!(Array|Uint8Array)} input input buffer.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Gzip = function(input, opt_params) {\n  /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n  this.input = input;\n  /** @type {number} input buffer pointer. */\n  this.ip = 0;\n  /** @type {!(Array.<number>|Uint8Array)} output buffer. */\n  this.output;\n  /** @type {number} output buffer. */\n  this.op = 0;\n  /** @type {!Object} flags option flags. */\n  this.flags = {};\n  /** @type {!string} filename. */\n  this.filename;\n  /** @type {!string} comment. */\n  this.comment;\n  /** @type {!Object} deflate options. */\n  this.deflateOptions;\n\n  // option parameters\n  if (opt_params) {\n    if (opt_params['flags']) {\n      this.flags = opt_params['flags'];\n    }\n    if (typeof opt_params['filename'] === 'string') {\n      this.filename = opt_params['filename'];\n    }\n    if (typeof opt_params['comment'] === 'string') {\n      this.comment = opt_params['comment'];\n    }\n    if (opt_params['deflateOptions']) {\n      this.deflateOptions = opt_params['deflateOptions'];\n    }\n  }\n\n  if (!this.deflateOptions) {\n    this.deflateOptions = {};\n  }\n};\n\n/**\n * @type {number}\n * @const\n */\nZlib.Gzip.DefaultBufferSize = 0x8000;\n\n/**\n * encode gzip members.\n * @return {!(Array|Uint8Array)} gzip binary array.\n */\nZlib.Gzip.prototype.compress = function() {\n  /** @type {number} flags. */\n  var flg;\n  /** @type {number} modification time. */\n  var mtime;\n  /** @type {number} CRC-16 value for FHCRC flag. */\n  var crc16;\n  /** @type {number} CRC-32 value for verification. */\n  var crc32;\n  /** @type {!Zlib.RawDeflate} raw deflate object. */\n  var rawdeflate;\n  /** @type {number} character code */\n  var c;\n  /** @type {number} loop counter. */\n  var i;\n  /** @type {number} loop limiter. */\n  var il;\n  /** @type {!(Array|Uint8Array)} output buffer. */\n  var output =\n    new (Uint8Array )(Zlib.Gzip.DefaultBufferSize);\n  /** @type {number} output buffer pointer. */\n  var op = 0;\n\n  var input = this.input;\n  var ip = this.ip;\n  var filename = this.filename;\n  var comment = this.comment;\n\n  // check signature\n  output[op++] = 0x1f;\n  output[op++] = 0x8b;\n\n  // check compression method\n  output[op++] = 8; /* XXX: use Zlib const */\n\n  // flags\n  flg = 0;\n  if (this.flags['fname'])    flg |= Zlib.Gzip.FlagsMask.FNAME;\n  if (this.flags['fcomment']) flg |= Zlib.Gzip.FlagsMask.FCOMMENT;\n  if (this.flags['fhcrc'])    flg |= Zlib.Gzip.FlagsMask.FHCRC;\n  // XXX: FTEXT\n  // XXX: FEXTRA\n  output[op++] = flg;\n\n  // modification time\n  mtime = (Date.now ? Date.now() : +new Date()) / 1000 | 0;\n  output[op++] = mtime        & 0xff;\n  output[op++] = mtime >>>  8 & 0xff;\n  output[op++] = mtime >>> 16 & 0xff;\n  output[op++] = mtime >>> 24 & 0xff;\n\n  // extra flags\n  output[op++] = 0;\n\n  // operating system\n  output[op++] = Zlib.Gzip.OperatingSystem.UNKNOWN;\n\n  // extra\n  /* NOP */\n\n  // fname\n  if (this.flags['fname'] !== void 0) {\n    for (i = 0, il = filename.length; i < il; ++i) {\n      c = filename.charCodeAt(i);\n      if (c > 0xff) { output[op++] = (c >>> 8) & 0xff; }\n      output[op++] = c & 0xff;\n    }\n    output[op++] = 0; // null termination\n  }\n\n  // fcomment\n  if (this.flags['comment']) {\n    for (i = 0, il = comment.length; i < il; ++i) {\n      c = comment.charCodeAt(i);\n      if (c > 0xff) { output[op++] = (c >>> 8) & 0xff; }\n      output[op++] = c & 0xff;\n    }\n    output[op++] = 0; // null termination\n  }\n\n  // fhcrc\n  if (this.flags['fhcrc']) {\n    crc16 = Zlib.CRC32.calc(output, 0, op) & 0xffff;\n    output[op++] = (crc16      ) & 0xff;\n    output[op++] = (crc16 >>> 8) & 0xff;\n  }\n\n  // add compress option\n  this.deflateOptions['outputBuffer'] = output;\n  this.deflateOptions['outputIndex'] = op;\n\n  // compress\n  rawdeflate = new Zlib.RawDeflate(input, this.deflateOptions);\n  output = rawdeflate.compress();\n  op = rawdeflate.op;\n\n  // expand buffer\n  {\n    if (op + 8 > output.buffer.byteLength) {\n      this.output = new Uint8Array(op + 8);\n      this.output.set(new Uint8Array(output.buffer));\n      output = this.output;\n    } else {\n      output = new Uint8Array(output.buffer);\n    }\n  }\n\n  // crc32\n  crc32 = Zlib.CRC32.calc(input);\n  output[op++] = (crc32       ) & 0xff;\n  output[op++] = (crc32 >>>  8) & 0xff;\n  output[op++] = (crc32 >>> 16) & 0xff;\n  output[op++] = (crc32 >>> 24) & 0xff;\n\n  // input size\n  il = input.length;\n  output[op++] = (il       ) & 0xff;\n  output[op++] = (il >>>  8) & 0xff;\n  output[op++] = (il >>> 16) & 0xff;\n  output[op++] = (il >>> 24) & 0xff;\n\n  this.ip = ip;\n\n  if (op < output.length) {\n    this.output = output = output.subarray(0, op);\n  }\n\n  return output;\n};\n\n/** @enum {number} */\nZlib.Gzip.OperatingSystem = {\n  FAT: 0,\n  AMIGA: 1,\n  VMS: 2,\n  UNIX: 3,\n  VM_CMS: 4,\n  ATARI_TOS: 5,\n  HPFS: 6,\n  MACINTOSH: 7,\n  Z_SYSTEM: 8,\n  CP_M: 9,\n  TOPS_20: 10,\n  NTFS: 11,\n  QDOS: 12,\n  ACORN_RISCOS: 13,\n  UNKNOWN: 255\n};\n\n/** @enum {number} */\nZlib.Gzip.FlagsMask = {\n  FTEXT: 0x01,\n  FHCRC: 0x02,\n  FEXTRA: 0x04,\n  FNAME: 0x08,\n  FCOMMENT: 0x10\n};\n\n\n/**\n * @fileoverview Heap Sort 実装. ハフマン符号化で使用する.\n */\n\n/**\n * カスタムハフマン符号で使用するヒープ実装\n * @param {number} length ヒープサイズ.\n * @constructor\n */\nZlib.Heap = function(length) {\n  this.buffer = new (Uint16Array )(length * 2);\n  this.length = 0;\n};\n\n/**\n * 親ノードの index 取得\n * @param {number} index 子ノードの index.\n * @return {number} 親ノードの index.\n *\n */\nZlib.Heap.prototype.getParent = function(index) {\n  return ((index - 2) / 4 | 0) * 2;\n};\n\n/**\n * 子ノードの index 取得\n * @param {number} index 親ノードの index.\n * @return {number} 子ノードの index.\n */\nZlib.Heap.prototype.getChild = function(index) {\n  return 2 * index + 2;\n};\n\n/**\n * Heap に値を追加する\n * @param {number} index キー index.\n * @param {number} value 値.\n * @return {number} 現在のヒープ長.\n */\nZlib.Heap.prototype.push = function(index, value) {\n  var current, parent,\n      heap = this.buffer,\n      swap;\n\n  current = this.length;\n  heap[this.length++] = value;\n  heap[this.length++] = index;\n\n  // ルートノードにたどり着くまで入れ替えを試みる\n  while (current > 0) {\n    parent = this.getParent(current);\n\n    // 親ノードと比較して親の方が小さければ入れ替える\n    if (heap[current] > heap[parent]) {\n      swap = heap[current];\n      heap[current] = heap[parent];\n      heap[parent] = swap;\n\n      swap = heap[current + 1];\n      heap[current + 1] = heap[parent + 1];\n      heap[parent + 1] = swap;\n\n      current = parent;\n    // 入れ替えが必要なくなったらそこで抜ける\n    } else {\n      break;\n    }\n  }\n\n  return this.length;\n};\n\n/**\n * Heapから一番大きい値を返す\n * @return {{index: number, value: number, length: number}} {index: キーindex,\n *     value: 値, length: ヒープ長} の Object.\n */\nZlib.Heap.prototype.pop = function() {\n  var index, value,\n      heap = this.buffer, swap,\n      current, parent;\n\n  value = heap[0];\n  index = heap[1];\n\n  // 後ろから値を取る\n  this.length -= 2;\n  heap[0] = heap[this.length];\n  heap[1] = heap[this.length + 1];\n\n  parent = 0;\n  // ルートノードから下がっていく\n  while (true) {\n    current = this.getChild(parent);\n\n    // 範囲チェック\n    if (current >= this.length) {\n      break;\n    }\n\n    // 隣のノードと比較して、隣の方が値が大きければ隣を現在ノードとして選択\n    if (current + 2 < this.length && heap[current + 2] > heap[current]) {\n      current += 2;\n    }\n\n    // 親ノードと比較して親の方が小さい場合は入れ替える\n    if (heap[current] > heap[parent]) {\n      swap = heap[parent];\n      heap[parent] = heap[current];\n      heap[current] = swap;\n\n      swap = heap[parent + 1];\n      heap[parent + 1] = heap[current + 1];\n      heap[current + 1] = swap;\n    } else {\n      break;\n    }\n\n    parent = current;\n  }\n\n  return {index: index, value: value, length: this.length};\n};\n\n\n/* vim:set expandtab ts=2 sw=2 tw=80: */\n\n/**\n * @fileoverview Deflate (RFC1951) 符号化アルゴリズム実装.\n */\n\n\n/**\n * Raw Deflate 実装\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} input 符号化する対象のバッファ.\n * @param {Object=} opt_params option parameters.\n *\n * typed array が使用可能なとき、outputBuffer が Array は自動的に Uint8Array に\n * 変換されます.\n * 別のオブジェクトになるため出力バッファを参照している変数などは\n * 更新する必要があります.\n */\nZlib.RawDeflate = function(input, opt_params) {\n  /** @type {Zlib.RawDeflate.CompressionType} */\n  this.compressionType = Zlib.RawDeflate.CompressionType.DYNAMIC;\n  /** @type {number} */\n  this.lazy = 0;\n  /** @type {!(Array.<number>|Uint32Array)} */\n  this.freqsLitLen;\n  /** @type {!(Array.<number>|Uint32Array)} */\n  this.freqsDist;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.input =\n    (input instanceof Array) ? new Uint8Array(input) : input;\n  /** @type {!(Array.<number>|Uint8Array)} output output buffer. */\n  this.output;\n  /** @type {number} pos output buffer position. */\n  this.op = 0;\n\n  // option parameters\n  if (opt_params) {\n    if (opt_params['lazy']) {\n      this.lazy = opt_params['lazy'];\n    }\n    if (typeof opt_params['compressionType'] === 'number') {\n      this.compressionType = opt_params['compressionType'];\n    }\n    if (opt_params['outputBuffer']) {\n      this.output =\n        (opt_params['outputBuffer'] instanceof Array) ?\n        new Uint8Array(opt_params['outputBuffer']) : opt_params['outputBuffer'];\n    }\n    if (typeof opt_params['outputIndex'] === 'number') {\n      this.op = opt_params['outputIndex'];\n    }\n  }\n\n  if (!this.output) {\n    this.output = new (Uint8Array )(0x8000);\n  }\n};\n\n/**\n * @enum {number}\n */\nZlib.RawDeflate.CompressionType = {\n  NONE: 0,\n  FIXED: 1,\n  DYNAMIC: 2,\n  RESERVED: 3\n};\n\n\n/**\n * LZ77 の最小マッチ長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.Lz77MinLength = 3;\n\n/**\n * LZ77 の最大マッチ長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.Lz77MaxLength = 258;\n\n/**\n * LZ77 のウィンドウサイズ\n * @const\n * @type {number}\n */\nZlib.RawDeflate.WindowSize = 0x8000;\n\n/**\n * 最長の符号長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.MaxCodeLength = 16;\n\n/**\n * ハフマン符号の最大数値\n * @const\n * @type {number}\n */\nZlib.RawDeflate.HUFMAX = 286;\n\n/**\n * 固定ハフマン符号の符号化テーブル\n * @const\n * @type {Array.<Array.<number, number>>}\n */\nZlib.RawDeflate.FixedHuffmanTable = (function() {\n  var table = [], i;\n\n  for (i = 0; i < 288; i++) {\n    switch (true) {\n      case (i <= 143): table.push([i       + 0x030, 8]); break;\n      case (i <= 255): table.push([i - 144 + 0x190, 9]); break;\n      case (i <= 279): table.push([i - 256 + 0x000, 7]); break;\n      case (i <= 287): table.push([i - 280 + 0x0C0, 8]); break;\n      default:\n        throw 'invalid literal: ' + i;\n    }\n  }\n\n  return table;\n})();\n\n/**\n * DEFLATE ブロックの作成\n * @return {!(Array.<number>|Uint8Array)} 圧縮済み byte array.\n */\nZlib.RawDeflate.prototype.compress = function() {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var blockArray;\n  /** @type {number} */\n  var position;\n  /** @type {number} */\n  var length;\n\n  var input = this.input;\n\n  // compression\n  switch (this.compressionType) {\n    case Zlib.RawDeflate.CompressionType.NONE:\n      // each 65535-Byte (length header: 16-bit)\n      for (position = 0, length = input.length; position < length;) {\n        blockArray = input.subarray(position, position + 0xffff) ;\n        position += blockArray.length;\n        this.makeNocompressBlock(blockArray, (position === length));\n      }\n      break;\n    case Zlib.RawDeflate.CompressionType.FIXED:\n      this.output = this.makeFixedHuffmanBlock(input, true);\n      this.op = this.output.length;\n      break;\n    case Zlib.RawDeflate.CompressionType.DYNAMIC:\n      this.output = this.makeDynamicHuffmanBlock(input, true);\n      this.op = this.output.length;\n      break;\n    default:\n      throw 'invalid compression type';\n  }\n\n  return this.output;\n};\n\n/**\n * 非圧縮ブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 非圧縮ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeNocompressBlock =\nfunction(blockArray, isFinalBlock) {\n  /** @type {number} */\n  var bfinal;\n  /** @type {Zlib.RawDeflate.CompressionType} */\n  var btype;\n  /** @type {number} */\n  var len;\n  /** @type {number} */\n  var nlen;\n\n  var output = this.output;\n  var op = this.op;\n\n  // expand buffer\n  {\n    output = new Uint8Array(this.output.buffer);\n    while (output.length <= op + blockArray.length + 5) {\n      output = new Uint8Array(output.length << 1);\n    }\n    output.set(this.output);\n  }\n\n  // header\n  bfinal = isFinalBlock ? 1 : 0;\n  btype = Zlib.RawDeflate.CompressionType.NONE;\n  output[op++] = (bfinal) | (btype << 1);\n\n  // length\n  len = blockArray.length;\n  nlen = (~len + 0x10000) & 0xffff;\n  output[op++] =          len & 0xff;\n  output[op++] =  (len >>> 8) & 0xff;\n  output[op++] =         nlen & 0xff;\n  output[op++] = (nlen >>> 8) & 0xff;\n\n  // copy buffer\n  {\n     output.set(blockArray, op);\n     op += blockArray.length;\n     output = output.subarray(0, op);\n  }\n\n  this.op = op;\n  this.output = output;\n\n  return output;\n};\n\n/**\n * 固定ハフマンブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 固定ハフマン符号化ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeFixedHuffmanBlock =\nfunction(blockArray, isFinalBlock) {\n  /** @type {Zlib.BitStream} */\n  var stream = new Zlib.BitStream(new Uint8Array(this.output.buffer) , this.op);\n  /** @type {number} */\n  var bfinal;\n  /** @type {Zlib.RawDeflate.CompressionType} */\n  var btype;\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var data;\n\n  // header\n  bfinal = isFinalBlock ? 1 : 0;\n  btype = Zlib.RawDeflate.CompressionType.FIXED;\n\n  stream.writeBits(bfinal, 1, true);\n  stream.writeBits(btype, 2, true);\n\n  data = this.lz77(blockArray);\n  this.fixedHuffman(data, stream);\n\n  return stream.finish();\n};\n\n/**\n * 動的ハフマンブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 動的ハフマン符号ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeDynamicHuffmanBlock =\nfunction(blockArray, isFinalBlock) {\n  /** @type {Zlib.BitStream} */\n  var stream = new Zlib.BitStream(new Uint8Array(this.output.buffer) , this.op);\n  /** @type {number} */\n  var bfinal;\n  /** @type {Zlib.RawDeflate.CompressionType} */\n  var btype;\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var data;\n  /** @type {number} */\n  var hlit;\n  /** @type {number} */\n  var hdist;\n  /** @type {number} */\n  var hclen;\n  /** @const @type {Array.<number>} */\n  var hclenOrder =\n        [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var litLenLengths;\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var litLenCodes;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var distLengths;\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var distCodes;\n  /** @type {{\n   *   codes: !(Array.<number>|Uint32Array),\n   *   freqs: !(Array.<number>|Uint8Array)\n   * }} */\n  var treeSymbols;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var treeLengths;\n  /** @type {Array} */\n  var transLengths = new Array(19);\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var treeCodes;\n  /** @type {number} */\n  var code;\n  /** @type {number} */\n  var bitlen;\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n\n  // header\n  bfinal = isFinalBlock ? 1 : 0;\n  btype = Zlib.RawDeflate.CompressionType.DYNAMIC;\n\n  stream.writeBits(bfinal, 1, true);\n  stream.writeBits(btype, 2, true);\n\n  data = this.lz77(blockArray);\n\n  // リテラル・長さ, 距離のハフマン符号と符号長の算出\n  litLenLengths = this.getLengths_(this.freqsLitLen, 15);\n  litLenCodes = this.getCodesFromLengths_(litLenLengths);\n  distLengths = this.getLengths_(this.freqsDist, 7);\n  distCodes = this.getCodesFromLengths_(distLengths);\n\n  // HLIT, HDIST の決定\n  for (hlit = 286; hlit > 257 && litLenLengths[hlit - 1] === 0; hlit--) {}\n  for (hdist = 30; hdist > 1 && distLengths[hdist - 1] === 0; hdist--) {}\n\n  // HCLEN\n  treeSymbols =\n    this.getTreeSymbols_(hlit, litLenLengths, hdist, distLengths);\n  treeLengths = this.getLengths_(treeSymbols.freqs, 7);\n  for (i = 0; i < 19; i++) {\n    transLengths[i] = treeLengths[hclenOrder[i]];\n  }\n  for (hclen = 19; hclen > 4 && transLengths[hclen - 1] === 0; hclen--) {}\n\n  treeCodes = this.getCodesFromLengths_(treeLengths);\n\n  // 出力\n  stream.writeBits(hlit - 257, 5, true);\n  stream.writeBits(hdist - 1, 5, true);\n  stream.writeBits(hclen - 4, 4, true);\n  for (i = 0; i < hclen; i++) {\n    stream.writeBits(transLengths[i], 3, true);\n  }\n\n  // ツリーの出力\n  for (i = 0, il = treeSymbols.codes.length; i < il; i++) {\n    code = treeSymbols.codes[i];\n\n    stream.writeBits(treeCodes[code], treeLengths[code], true);\n\n    // extra bits\n    if (code >= 16) {\n      i++;\n      switch (code) {\n        case 16: bitlen = 2; break;\n        case 17: bitlen = 3; break;\n        case 18: bitlen = 7; break;\n        default:\n          throw 'invalid code: ' + code;\n      }\n\n      stream.writeBits(treeSymbols.codes[i], bitlen, true);\n    }\n  }\n\n  this.dynamicHuffman(\n    data,\n    [litLenCodes, litLenLengths],\n    [distCodes, distLengths],\n    stream\n  );\n\n  return stream.finish();\n};\n\n\n/**\n * 動的ハフマン符号化(カスタムハフマンテーブル)\n * @param {!(Array.<number>|Uint16Array)} dataArray LZ77 符号化済み byte array.\n * @param {!Zlib.BitStream} stream 書き込み用ビットストリーム.\n * @return {!Zlib.BitStream} ハフマン符号化済みビットストリームオブジェクト.\n */\nZlib.RawDeflate.prototype.dynamicHuffman =\nfunction(dataArray, litLen, dist, stream) {\n  /** @type {number} */\n  var index;\n  /** @type {number} */\n  var length;\n  /** @type {number} */\n  var literal;\n  /** @type {number} */\n  var code;\n  /** @type {number} */\n  var litLenCodes;\n  /** @type {number} */\n  var litLenLengths;\n  /** @type {number} */\n  var distCodes;\n  /** @type {number} */\n  var distLengths;\n\n  litLenCodes = litLen[0];\n  litLenLengths = litLen[1];\n  distCodes = dist[0];\n  distLengths = dist[1];\n\n  // 符号を BitStream に書き込んでいく\n  for (index = 0, length = dataArray.length; index < length; ++index) {\n    literal = dataArray[index];\n\n    // literal or length\n    stream.writeBits(litLenCodes[literal], litLenLengths[literal], true);\n\n    // 長さ・距離符号\n    if (literal > 256) {\n      // length extra\n      stream.writeBits(dataArray[++index], dataArray[++index], true);\n      // distance\n      code = dataArray[++index];\n      stream.writeBits(distCodes[code], distLengths[code], true);\n      // distance extra\n      stream.writeBits(dataArray[++index], dataArray[++index], true);\n    // 終端\n    } else if (literal === 256) {\n      break;\n    }\n  }\n\n  return stream;\n};\n\n/**\n * 固定ハフマン符号化\n * @param {!(Array.<number>|Uint16Array)} dataArray LZ77 符号化済み byte array.\n * @param {!Zlib.BitStream} stream 書き込み用ビットストリーム.\n * @return {!Zlib.BitStream} ハフマン符号化済みビットストリームオブジェクト.\n */\nZlib.RawDeflate.prototype.fixedHuffman = function(dataArray, stream) {\n  /** @type {number} */\n  var index;\n  /** @type {number} */\n  var length;\n  /** @type {number} */\n  var literal;\n\n  // 符号を BitStream に書き込んでいく\n  for (index = 0, length = dataArray.length; index < length; index++) {\n    literal = dataArray[index];\n\n    // 符号の書き込み\n    Zlib.BitStream.prototype.writeBits.apply(\n      stream,\n      Zlib.RawDeflate.FixedHuffmanTable[literal]\n    );\n\n    // 長さ・距離符号\n    if (literal > 0x100) {\n      // length extra\n      stream.writeBits(dataArray[++index], dataArray[++index], true);\n      // distance\n      stream.writeBits(dataArray[++index], 5);\n      // distance extra\n      stream.writeBits(dataArray[++index], dataArray[++index], true);\n    // 終端\n    } else if (literal === 0x100) {\n      break;\n    }\n  }\n\n  return stream;\n};\n\n/**\n * マッチ情報\n * @param {!number} length マッチした長さ.\n * @param {!number} backwardDistance マッチ位置との距離.\n * @constructor\n */\nZlib.RawDeflate.Lz77Match = function(length, backwardDistance) {\n  /** @type {number} match length. */\n  this.length = length;\n  /** @type {number} backward distance. */\n  this.backwardDistance = backwardDistance;\n};\n\n/**\n * 長さ符号テーブル.\n * [コード, 拡張ビット, 拡張ビット長] の配列となっている.\n * @const\n * @type {!(Array.<number>|Uint32Array)}\n */\nZlib.RawDeflate.Lz77Match.LengthCodeTable = (function(table) {\n  return new Uint32Array(table) ;\n})((function() {\n  /** @type {!Array} */\n  var table = [];\n  /** @type {number} */\n  var i;\n  /** @type {!Array.<number>} */\n  var c;\n\n  for (i = 3; i <= 258; i++) {\n    c = code(i);\n    table[i] = (c[2] << 24) | (c[1] << 16) | c[0];\n  }\n\n  /**\n   * @param {number} length lz77 length.\n   * @return {!Array.<number>} lz77 codes.\n   */\n  function code(length) {\n    switch (true) {\n      case (length === 3): return [257, length - 3, 0];      case (length === 4): return [258, length - 4, 0];      case (length === 5): return [259, length - 5, 0];      case (length === 6): return [260, length - 6, 0];      case (length === 7): return [261, length - 7, 0];      case (length === 8): return [262, length - 8, 0];      case (length === 9): return [263, length - 9, 0];      case (length === 10): return [264, length - 10, 0];      case (length <= 12): return [265, length - 11, 1];      case (length <= 14): return [266, length - 13, 1];      case (length <= 16): return [267, length - 15, 1];      case (length <= 18): return [268, length - 17, 1];      case (length <= 22): return [269, length - 19, 2];      case (length <= 26): return [270, length - 23, 2];      case (length <= 30): return [271, length - 27, 2];      case (length <= 34): return [272, length - 31, 2];      case (length <= 42): return [273, length - 35, 3];      case (length <= 50): return [274, length - 43, 3];      case (length <= 58): return [275, length - 51, 3];      case (length <= 66): return [276, length - 59, 3];      case (length <= 82): return [277, length - 67, 4];      case (length <= 98): return [278, length - 83, 4];      case (length <= 114): return [279, length - 99, 4];      case (length <= 130): return [280, length - 115, 4];      case (length <= 162): return [281, length - 131, 5];      case (length <= 194): return [282, length - 163, 5];      case (length <= 226): return [283, length - 195, 5];      case (length <= 257): return [284, length - 227, 5];      case (length === 258): return [285, length - 258, 0];      default: throw 'invalid length: ' + length;\n    }\n  }\n\n  return table;\n})());\n\n/**\n * 距離符号テーブル\n * @param {!number} dist 距離.\n * @return {!Array.<number>} コード、拡張ビット、拡張ビット長の配列.\n * @private\n */\nZlib.RawDeflate.Lz77Match.prototype.getDistanceCode_ = function(dist) {\n  /** @type {!Array.<number>} distance code table. */\n  var r;\n\n  switch (true) {\n    case (dist === 1): r = [0, dist - 1, 0]; break;\n    case (dist === 2): r = [1, dist - 2, 0]; break;\n    case (dist === 3): r = [2, dist - 3, 0]; break;\n    case (dist === 4): r = [3, dist - 4, 0]; break;\n    case (dist <= 6): r = [4, dist - 5, 1]; break;\n    case (dist <= 8): r = [5, dist - 7, 1]; break;\n    case (dist <= 12): r = [6, dist - 9, 2]; break;\n    case (dist <= 16): r = [7, dist - 13, 2]; break;\n    case (dist <= 24): r = [8, dist - 17, 3]; break;\n    case (dist <= 32): r = [9, dist - 25, 3]; break;\n    case (dist <= 48): r = [10, dist - 33, 4]; break;\n    case (dist <= 64): r = [11, dist - 49, 4]; break;\n    case (dist <= 96): r = [12, dist - 65, 5]; break;\n    case (dist <= 128): r = [13, dist - 97, 5]; break;\n    case (dist <= 192): r = [14, dist - 129, 6]; break;\n    case (dist <= 256): r = [15, dist - 193, 6]; break;\n    case (dist <= 384): r = [16, dist - 257, 7]; break;\n    case (dist <= 512): r = [17, dist - 385, 7]; break;\n    case (dist <= 768): r = [18, dist - 513, 8]; break;\n    case (dist <= 1024): r = [19, dist - 769, 8]; break;\n    case (dist <= 1536): r = [20, dist - 1025, 9]; break;\n    case (dist <= 2048): r = [21, dist - 1537, 9]; break;\n    case (dist <= 3072): r = [22, dist - 2049, 10]; break;\n    case (dist <= 4096): r = [23, dist - 3073, 10]; break;\n    case (dist <= 6144): r = [24, dist - 4097, 11]; break;\n    case (dist <= 8192): r = [25, dist - 6145, 11]; break;\n    case (dist <= 12288): r = [26, dist - 8193, 12]; break;\n    case (dist <= 16384): r = [27, dist - 12289, 12]; break;\n    case (dist <= 24576): r = [28, dist - 16385, 13]; break;\n    case (dist <= 32768): r = [29, dist - 24577, 13]; break;\n    default: throw 'invalid distance';\n  }\n\n  return r;\n};\n\n/**\n * マッチ情報を LZ77 符号化配列で返す.\n * なお、ここでは以下の内部仕様で符号化している\n * [ CODE, EXTRA-BIT-LEN, EXTRA, CODE, EXTRA-BIT-LEN, EXTRA ]\n * @return {!Array.<number>} LZ77 符号化 byte array.\n */\nZlib.RawDeflate.Lz77Match.prototype.toLz77Array = function() {\n  /** @type {number} */\n  var length = this.length;\n  /** @type {number} */\n  var dist = this.backwardDistance;\n  /** @type {Array} */\n  var codeArray = [];\n  /** @type {number} */\n  var pos = 0;\n  /** @type {!Array.<number>} */\n  var code;\n\n  // length\n  code = Zlib.RawDeflate.Lz77Match.LengthCodeTable[length];\n  codeArray[pos++] = code & 0xffff;\n  codeArray[pos++] = (code >> 16) & 0xff;\n  codeArray[pos++] = code >> 24;\n\n  // distance\n  code = this.getDistanceCode_(dist);\n  codeArray[pos++] = code[0];\n  codeArray[pos++] = code[1];\n  codeArray[pos++] = code[2];\n\n  return codeArray;\n};\n\n/**\n * LZ77 実装\n * @param {!(Array.<number>|Uint8Array)} dataArray LZ77 符号化するバイト配列.\n * @return {!(Array.<number>|Uint16Array)} LZ77 符号化した配列.\n */\nZlib.RawDeflate.prototype.lz77 = function(dataArray) {\n  /** @type {number} input position */\n  var position;\n  /** @type {number} input length */\n  var length;\n  /** @type {number} loop counter */\n  var i;\n  /** @type {number} loop limiter */\n  var il;\n  /** @type {number} chained-hash-table key */\n  var matchKey;\n  /** @type {Object.<number, Array.<number>>} chained-hash-table */\n  var table = {};\n  /** @const @type {number} */\n  var windowSize = Zlib.RawDeflate.WindowSize;\n  /** @type {Array.<number>} match list */\n  var matchList;\n  /** @type {Zlib.RawDeflate.Lz77Match} longest match */\n  var longestMatch;\n  /** @type {Zlib.RawDeflate.Lz77Match} previous longest match */\n  var prevMatch;\n  /** @type {!(Array.<number>|Uint16Array)} lz77 buffer */\n  var lz77buf = new Uint16Array(dataArray.length * 2) ;\n  /** @type {number} lz77 output buffer pointer */\n  var pos = 0;\n  /** @type {number} lz77 skip length */\n  var skipLength = 0;\n  /** @type {!(Array.<number>|Uint32Array)} */\n  var freqsLitLen = new (Uint32Array )(286);\n  /** @type {!(Array.<number>|Uint32Array)} */\n  var freqsDist = new (Uint32Array )(30);\n  /** @type {number} */\n  var lazy = this.lazy;\n  /** @type {*} temporary variable */\n  var tmp;\n  freqsLitLen[256] = 1; // EOB の最低出現回数は 1\n\n  /**\n   * マッチデータの書き込み\n   * @param {Zlib.RawDeflate.Lz77Match} match LZ77 Match data.\n   * @param {!number} offset スキップ開始位置(相対指定).\n   * @private\n   */\n  function writeMatch(match, offset) {\n    /** @type {Array.<number>} */\n    var lz77Array = match.toLz77Array();\n    /** @type {number} */\n    var i;\n    /** @type {number} */\n    var il;\n\n    for (i = 0, il = lz77Array.length; i < il; ++i) {\n      lz77buf[pos++] = lz77Array[i];\n    }\n    freqsLitLen[lz77Array[0]]++;\n    freqsDist[lz77Array[3]]++;\n    skipLength = match.length + offset - 1;\n    prevMatch = null;\n  }\n\n  // LZ77 符号化\n  for (position = 0, length = dataArray.length; position < length; ++position) {\n    // ハッシュキーの作成\n    for (matchKey = 0, i = 0, il = Zlib.RawDeflate.Lz77MinLength; i < il; ++i) {\n      if (position + i === length) {\n        break;\n      }\n      matchKey = (matchKey << 8) | dataArray[position + i];\n    }\n\n    // テーブルが未定義だったら作成する\n    if (table[matchKey] === void 0) { table[matchKey] = []; }\n    matchList = table[matchKey];\n\n    // skip\n    if (skipLength-- > 0) {\n      matchList.push(position);\n      continue;\n    }\n\n    // マッチテーブルの更新 (最大戻り距離を超えているものを削除する)\n    while (matchList.length > 0 && position - matchList[0] > windowSize) {\n      matchList.shift();\n    }\n\n    // データ末尾でマッチしようがない場合はそのまま流しこむ\n    if (position + Zlib.RawDeflate.Lz77MinLength >= length) {\n      if (prevMatch) {\n        writeMatch(prevMatch, -1);\n      }\n\n      for (i = 0, il = length - position; i < il; ++i) {\n        tmp = dataArray[position + i];\n        lz77buf[pos++] = tmp;\n        ++freqsLitLen[tmp];\n      }\n      break;\n    }\n\n    // マッチ候補から最長のものを探す\n    if (matchList.length > 0) {\n      longestMatch = this.searchLongestMatch_(dataArray, position, matchList);\n\n      if (prevMatch) {\n        // 現在のマッチの方が前回のマッチよりも長い\n        if (prevMatch.length < longestMatch.length) {\n          // write previous literal\n          tmp = dataArray[position - 1];\n          lz77buf[pos++] = tmp;\n          ++freqsLitLen[tmp];\n\n          // write current match\n          writeMatch(longestMatch, 0);\n        } else {\n          // write previous match\n          writeMatch(prevMatch, -1);\n        }\n      } else if (longestMatch.length < lazy) {\n        prevMatch = longestMatch;\n      } else {\n        writeMatch(longestMatch, 0);\n      }\n    // 前回マッチしていて今回マッチがなかったら前回のを採用\n    } else if (prevMatch) {\n      writeMatch(prevMatch, -1);\n    } else {\n      tmp = dataArray[position];\n      lz77buf[pos++] = tmp;\n      ++freqsLitLen[tmp];\n    }\n\n    matchList.push(position); // マッチテーブルに現在の位置を保存\n  }\n\n  // 終端処理\n  lz77buf[pos++] = 256;\n  freqsLitLen[256]++;\n  this.freqsLitLen = freqsLitLen;\n  this.freqsDist = freqsDist;\n\n  return /** @type {!(Uint16Array|Array.<number>)} */ (\n    lz77buf.subarray(0, pos) \n  );\n};\n\n/**\n * マッチした候補の中から最長一致を探す\n * @param {!Object} data plain data byte array.\n * @param {!number} position plain data byte array position.\n * @param {!Array.<number>} matchList 候補となる位置の配列.\n * @return {!Zlib.RawDeflate.Lz77Match} 最長かつ最短距離のマッチオブジェクト.\n * @private\n */\nZlib.RawDeflate.prototype.searchLongestMatch_ =\nfunction(data, position, matchList) {\n  var match,\n      currentMatch,\n      matchMax = 0, matchLength,\n      i, j, l, dl = data.length;\n\n  // 候補を後ろから 1 つずつ絞り込んでゆく\n  permatch:\n  for (i = 0, l = matchList.length; i < l; i++) {\n    match = matchList[l - i - 1];\n    matchLength = Zlib.RawDeflate.Lz77MinLength;\n\n    // 前回までの最長一致を末尾から一致検索する\n    if (matchMax > Zlib.RawDeflate.Lz77MinLength) {\n      for (j = matchMax; j > Zlib.RawDeflate.Lz77MinLength; j--) {\n        if (data[match + j - 1] !== data[position + j - 1]) {\n          continue permatch;\n        }\n      }\n      matchLength = matchMax;\n    }\n\n    // 最長一致探索\n    while (matchLength < Zlib.RawDeflate.Lz77MaxLength &&\n           position + matchLength < dl &&\n           data[match + matchLength] === data[position + matchLength]) {\n      ++matchLength;\n    }\n\n    // マッチ長が同じ場合は後方を優先\n    if (matchLength > matchMax) {\n      currentMatch = match;\n      matchMax = matchLength;\n    }\n\n    // 最長が確定したら後の処理は省略\n    if (matchLength === Zlib.RawDeflate.Lz77MaxLength) {\n      break;\n    }\n  }\n\n  return new Zlib.RawDeflate.Lz77Match(matchMax, position - currentMatch);\n};\n\n/**\n * Tree-Transmit Symbols の算出\n * reference: PuTTY Deflate implementation\n * @param {number} hlit HLIT.\n * @param {!(Array.<number>|Uint8Array)} litlenLengths リテラルと長さ符号の符号長配列.\n * @param {number} hdist HDIST.\n * @param {!(Array.<number>|Uint8Array)} distLengths 距離符号の符号長配列.\n * @return {{\n *   codes: !(Array.<number>|Uint32Array),\n *   freqs: !(Array.<number>|Uint8Array)\n * }} Tree-Transmit Symbols.\n */\nZlib.RawDeflate.prototype.getTreeSymbols_ =\nfunction(hlit, litlenLengths, hdist, distLengths) {\n  var src = new (Uint32Array )(hlit + hdist),\n      i, j, runLength, l,\n      result = new (Uint32Array )(286 + 30),\n      nResult,\n      rpt,\n      freqs = new (Uint8Array )(19);\n\n  j = 0;\n  for (i = 0; i < hlit; i++) {\n    src[j++] = litlenLengths[i];\n  }\n  for (i = 0; i < hdist; i++) {\n    src[j++] = distLengths[i];\n  }\n\n  // 符号化\n  nResult = 0;\n  for (i = 0, l = src.length; i < l; i += j) {\n    // Run Length Encoding\n    for (j = 1; i + j < l && src[i + j] === src[i]; ++j) {}\n\n    runLength = j;\n\n    if (src[i] === 0) {\n      // 0 の繰り返しが 3 回未満ならばそのまま\n      if (runLength < 3) {\n        while (runLength-- > 0) {\n          result[nResult++] = 0;\n          freqs[0]++;\n        }\n      } else {\n        while (runLength > 0) {\n          // 繰り返しは最大 138 までなので切り詰める\n          rpt = (runLength < 138 ? runLength : 138);\n\n          if (rpt > runLength - 3 && rpt < runLength) {\n            rpt = runLength - 3;\n          }\n\n          // 3-10 回 -> 17\n          if (rpt <= 10) {\n            result[nResult++] = 17;\n            result[nResult++] = rpt - 3;\n            freqs[17]++;\n          // 11-138 回 -> 18\n          } else {\n            result[nResult++] = 18;\n            result[nResult++] = rpt - 11;\n            freqs[18]++;\n          }\n\n          runLength -= rpt;\n        }\n      }\n    } else {\n      result[nResult++] = src[i];\n      freqs[src[i]]++;\n      runLength--;\n\n      // 繰り返し回数が3回未満ならばランレングス符号は要らない\n      if (runLength < 3) {\n        while (runLength-- > 0) {\n          result[nResult++] = src[i];\n          freqs[src[i]]++;\n        }\n      // 3 回以上ならばランレングス符号化\n      } else {\n        while (runLength > 0) {\n          // runLengthを 3-6 で分割\n          rpt = (runLength < 6 ? runLength : 6);\n\n          if (rpt > runLength - 3 && rpt < runLength) {\n            rpt = runLength - 3;\n          }\n\n          result[nResult++] = 16;\n          result[nResult++] = rpt - 3;\n          freqs[16]++;\n\n          runLength -= rpt;\n        }\n      }\n    }\n  }\n\n  return {\n    codes:\n      result.subarray(0, nResult) ,\n    freqs: freqs\n  };\n};\n\n/**\n * ハフマン符号の長さを取得する\n * @param {!(Array.<number>|Uint8Array|Uint32Array)} freqs 出現カウント.\n * @param {number} limit 符号長の制限.\n * @return {!(Array.<number>|Uint8Array)} 符号長配列.\n * @private\n */\nZlib.RawDeflate.prototype.getLengths_ = function(freqs, limit) {\n  /** @type {number} */\n  var nSymbols = freqs.length;\n  /** @type {Zlib.Heap} */\n  var heap = new Zlib.Heap(2 * Zlib.RawDeflate.HUFMAX);\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var length = new (Uint8Array )(nSymbols);\n  /** @type {Array} */\n  var nodes;\n  /** @type {!(Array.<number>|Uint32Array)} */\n  var values;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var codeLength;\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n\n  // ヒープの構築\n  for (i = 0; i < nSymbols; ++i) {\n    if (freqs[i] > 0) {\n      heap.push(i, freqs[i]);\n    }\n  }\n  nodes = new Array(heap.length / 2);\n  values = new (Uint32Array )(heap.length / 2);\n\n  // 非 0 の要素が一つだけだった場合は、そのシンボルに符号長 1 を割り当てて終了\n  if (nodes.length === 1) {\n    length[heap.pop().index] = 1;\n    return length;\n  }\n\n  // Reverse Package Merge Algorithm による Canonical Huffman Code の符号長決定\n  for (i = 0, il = heap.length / 2; i < il; ++i) {\n    nodes[i] = heap.pop();\n    values[i] = nodes[i].value;\n  }\n  codeLength = this.reversePackageMerge_(values, values.length, limit);\n\n  for (i = 0, il = nodes.length; i < il; ++i) {\n    length[nodes[i].index] = codeLength[i];\n  }\n\n  return length;\n};\n\n/**\n * Reverse Package Merge Algorithm.\n * @param {!(Array.<number>|Uint32Array)} freqs sorted probability.\n * @param {number} symbols number of symbols.\n * @param {number} limit code length limit.\n * @return {!(Array.<number>|Uint8Array)} code lengths.\n */\nZlib.RawDeflate.prototype.reversePackageMerge_ = function(freqs, symbols, limit) {\n  /** @type {!(Array.<number>|Uint16Array)} */\n  var minimumCost = new (Uint16Array )(limit);\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var flag = new (Uint8Array )(limit);\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var codeLength = new (Uint8Array )(symbols);\n  /** @type {Array} */\n  var value = new Array(limit);\n  /** @type {Array} */\n  var type  = new Array(limit);\n  /** @type {Array.<number>} */\n  var currentPosition = new Array(limit);\n  /** @type {number} */\n  var excess = (1 << limit) - symbols;\n  /** @type {number} */\n  var half = (1 << (limit - 1));\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var j;\n  /** @type {number} */\n  var t;\n  /** @type {number} */\n  var weight;\n  /** @type {number} */\n  var next;\n\n  /**\n   * @param {number} j\n   */\n  function takePackage(j) {\n    /** @type {number} */\n    var x = type[j][currentPosition[j]];\n\n    if (x === symbols) {\n      takePackage(j+1);\n      takePackage(j+1);\n    } else {\n      --codeLength[x];\n    }\n\n    ++currentPosition[j];\n  }\n\n  minimumCost[limit-1] = symbols;\n\n  for (j = 0; j < limit; ++j) {\n    if (excess < half) {\n      flag[j] = 0;\n    } else {\n      flag[j] = 1;\n      excess -= half;\n    }\n    excess <<= 1;\n    minimumCost[limit-2-j] = (minimumCost[limit-1-j] / 2 | 0) + symbols;\n  }\n  minimumCost[0] = flag[0];\n\n  value[0] = new Array(minimumCost[0]);\n  type[0]  = new Array(minimumCost[0]);\n  for (j = 1; j < limit; ++j) {\n    if (minimumCost[j] > 2 * minimumCost[j-1] + flag[j]) {\n      minimumCost[j] = 2 * minimumCost[j-1] + flag[j];\n    }\n    value[j] = new Array(minimumCost[j]);\n    type[j]  = new Array(minimumCost[j]);\n  }\n\n  for (i = 0; i < symbols; ++i) {\n    codeLength[i] = limit;\n  }\n\n  for (t = 0; t < minimumCost[limit-1]; ++t) {\n    value[limit-1][t] = freqs[t];\n    type[limit-1][t]  = t;\n  }\n\n  for (i = 0; i < limit; ++i) {\n    currentPosition[i] = 0;\n  }\n  if (flag[limit-1] === 1) {\n    --codeLength[0];\n    ++currentPosition[limit-1];\n  }\n\n  for (j = limit-2; j >= 0; --j) {\n    i = 0;\n    weight = 0;\n    next = currentPosition[j+1];\n\n    for (t = 0; t < minimumCost[j]; t++) {\n      weight = value[j+1][next] + value[j+1][next+1];\n\n      if (weight > freqs[i]) {\n        value[j][t] = weight;\n        type[j][t] = symbols;\n        next += 2;\n      } else {\n        value[j][t] = freqs[i];\n        type[j][t] = i;\n        ++i;\n      }\n    }\n\n    currentPosition[j] = 0;\n    if (flag[j] === 1) {\n      takePackage(j);\n    }\n  }\n\n  return codeLength;\n};\n\n/**\n * 符号長配列からハフマン符号を取得する\n * reference: PuTTY Deflate implementation\n * @param {!(Array.<number>|Uint8Array)} lengths 符号長配列.\n * @return {!(Array.<number>|Uint16Array)} ハフマン符号配列.\n * @private\n */\nZlib.RawDeflate.prototype.getCodesFromLengths_ = function(lengths) {\n  var codes = new (Uint16Array )(lengths.length),\n      count = [],\n      startCode = [],\n      code = 0, i, il, j, m;\n\n  // Count the codes of each length.\n  for (i = 0, il = lengths.length; i < il; i++) {\n    count[lengths[i]] = (count[lengths[i]] | 0) + 1;\n  }\n\n  // Determine the starting code for each length block.\n  for (i = 1, il = Zlib.RawDeflate.MaxCodeLength; i <= il; i++) {\n    startCode[i] = code;\n    code += count[i] | 0;\n    code <<= 1;\n  }\n\n  // Determine the code for each symbol. Mirrored, of course.\n  for (i = 0, il = lengths.length; i < il; i++) {\n    code = startCode[lengths[i]];\n    startCode[lengths[i]] += 1;\n    codes[i] = 0;\n\n    for (j = 0, m = lengths[i]; j < m; j++) {\n      codes[i] = (codes[i] << 1) | (code & 1);\n      code >>>= 1;\n    }\n  }\n\n  return codes;\n};\n\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {Object=} opt_params options.\n * @constructor\n */\nZlib.Unzip = function(input, opt_params) {\n  opt_params = opt_params || {};\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.input =\n    ((input instanceof Array)) ?\n    new Uint8Array(input) : input;\n  /** @type {number} */\n  this.ip = 0;\n  /** @type {number} */\n  this.eocdrOffset;\n  /** @type {number} */\n  this.numberOfThisDisk;\n  /** @type {number} */\n  this.startDisk;\n  /** @type {number} */\n  this.totalEntriesThisDisk;\n  /** @type {number} */\n  this.totalEntries;\n  /** @type {number} */\n  this.centralDirectorySize;\n  /** @type {number} */\n  this.centralDirectoryOffset;\n  /** @type {number} */\n  this.commentLength;\n  /** @type {(Array.<number>|Uint8Array)} */\n  this.comment;\n  /** @type {Array.<Zlib.Unzip.FileHeader>} */\n  this.fileHeaderList;\n  /** @type {Object.<string, number>} */\n  this.filenameToIndex;\n  /** @type {boolean} */\n  this.verify = opt_params['verify'] || false;\n  /** @type {(Array.<number>|Uint8Array)} */\n  this.password = opt_params['password'];\n};\n\nZlib.Unzip.CompressionMethod = Zlib.Zip.CompressionMethod;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.FileHeaderSignature = Zlib.Zip.FileHeaderSignature;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.LocalFileHeaderSignature = Zlib.Zip.LocalFileHeaderSignature;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.CentralDirectorySignature = Zlib.Zip.CentralDirectorySignature;\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {number} ip input position.\n * @constructor\n */\nZlib.Unzip.FileHeader = function(input, ip) {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.input = input;\n  /** @type {number} */\n  this.offset = ip;\n  /** @type {number} */\n  this.length;\n  /** @type {number} */\n  this.version;\n  /** @type {number} */\n  this.os;\n  /** @type {number} */\n  this.needVersion;\n  /** @type {number} */\n  this.flags;\n  /** @type {number} */\n  this.compression;\n  /** @type {number} */\n  this.time;\n  /** @type {number} */\n  this.date;\n  /** @type {number} */\n  this.crc32;\n  /** @type {number} */\n  this.compressedSize;\n  /** @type {number} */\n  this.plainSize;\n  /** @type {number} */\n  this.fileNameLength;\n  /** @type {number} */\n  this.extraFieldLength;\n  /** @type {number} */\n  this.fileCommentLength;\n  /** @type {number} */\n  this.diskNumberStart;\n  /** @type {number} */\n  this.internalFileAttributes;\n  /** @type {number} */\n  this.externalFileAttributes;\n  /** @type {number} */\n  this.relativeOffset;\n  /** @type {string} */\n  this.filename;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.extraField;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.comment;\n};\n\nZlib.Unzip.FileHeader.prototype.parse = function() {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var input = this.input;\n  /** @type {number} */\n  var ip = this.offset;\n\n  // central file header signature\n  if (input[ip++] !== Zlib.Unzip.FileHeaderSignature[0] ||\n      input[ip++] !== Zlib.Unzip.FileHeaderSignature[1] ||\n      input[ip++] !== Zlib.Unzip.FileHeaderSignature[2] ||\n      input[ip++] !== Zlib.Unzip.FileHeaderSignature[3]) {\n    throw new Error('invalid file header signature');\n  }\n\n  // version made by\n  this.version = input[ip++];\n  this.os = input[ip++];\n\n  // version needed to extract\n  this.needVersion = input[ip++] | (input[ip++] << 8);\n\n  // general purpose bit flag\n  this.flags = input[ip++] | (input[ip++] << 8);\n\n  // compression method\n  this.compression = input[ip++] | (input[ip++] << 8);\n\n  // last mod file time\n  this.time = input[ip++] | (input[ip++] << 8);\n\n  //last mod file date\n  this.date = input[ip++] | (input[ip++] << 8);\n\n  // crc-32\n  this.crc32 = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // compressed size\n  this.compressedSize = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // uncompressed size\n  this.plainSize = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // file name length\n  this.fileNameLength = input[ip++] | (input[ip++] << 8);\n\n  // extra field length\n  this.extraFieldLength = input[ip++] | (input[ip++] << 8);\n\n  // file comment length\n  this.fileCommentLength = input[ip++] | (input[ip++] << 8);\n\n  // disk number start\n  this.diskNumberStart = input[ip++] | (input[ip++] << 8);\n\n  // internal file attributes\n  this.internalFileAttributes = input[ip++] | (input[ip++] << 8);\n\n  // external file attributes\n  this.externalFileAttributes =\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24);\n\n  // relative offset of local header\n  this.relativeOffset = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // file name\n  this.filename = String.fromCharCode.apply(null, input.subarray(ip, ip += this.fileNameLength) \n  );\n\n  // extra field\n  this.extraField = input.subarray(ip, ip += this.extraFieldLength) ;\n\n  // file comment\n  this.comment = input.subarray(ip, ip + this.fileCommentLength) ;\n\n  this.length = ip - this.offset;\n};\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {number} ip input position.\n * @constructor\n */\nZlib.Unzip.LocalFileHeader = function(input, ip) {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.input = input;\n  /** @type {number} */\n  this.offset = ip;\n  /** @type {number} */\n  this.length;\n  /** @type {number} */\n  this.needVersion;\n  /** @type {number} */\n  this.flags;\n  /** @type {number} */\n  this.compression;\n  /** @type {number} */\n  this.time;\n  /** @type {number} */\n  this.date;\n  /** @type {number} */\n  this.crc32;\n  /** @type {number} */\n  this.compressedSize;\n  /** @type {number} */\n  this.plainSize;\n  /** @type {number} */\n  this.fileNameLength;\n  /** @type {number} */\n  this.extraFieldLength;\n  /** @type {string} */\n  this.filename;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  this.extraField;\n};\n\nZlib.Unzip.LocalFileHeader.Flags = Zlib.Zip.Flags;\n\nZlib.Unzip.LocalFileHeader.prototype.parse = function() {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var input = this.input;\n  /** @type {number} */\n  var ip = this.offset;\n\n  // local file header signature\n  if (input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[0] ||\n      input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[1] ||\n      input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[2] ||\n      input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[3]) {\n    throw new Error('invalid local file header signature');\n  }\n\n  // version needed to extract\n  this.needVersion = input[ip++] | (input[ip++] << 8);\n\n  // general purpose bit flag\n  this.flags = input[ip++] | (input[ip++] << 8);\n\n  // compression method\n  this.compression = input[ip++] | (input[ip++] << 8);\n\n  // last mod file time\n  this.time = input[ip++] | (input[ip++] << 8);\n\n  //last mod file date\n  this.date = input[ip++] | (input[ip++] << 8);\n\n  // crc-32\n  this.crc32 = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // compressed size\n  this.compressedSize = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // uncompressed size\n  this.plainSize = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // file name length\n  this.fileNameLength = input[ip++] | (input[ip++] << 8);\n\n  // extra field length\n  this.extraFieldLength = input[ip++] | (input[ip++] << 8);\n\n  // file name\n  this.filename = String.fromCharCode.apply(null, input.subarray(ip, ip += this.fileNameLength) \n  );\n\n  // extra field\n  this.extraField = input.subarray(ip, ip += this.extraFieldLength) ;\n\n  this.length = ip - this.offset;\n};\n\n\nZlib.Unzip.prototype.searchEndOfCentralDirectoryRecord = function() {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var input = this.input;\n  /** @type {number} */\n  var ip;\n\n  for (ip = input.length - 12; ip > 0; --ip) {\n    if (input[ip  ] === Zlib.Unzip.CentralDirectorySignature[0] &&\n        input[ip+1] === Zlib.Unzip.CentralDirectorySignature[1] &&\n        input[ip+2] === Zlib.Unzip.CentralDirectorySignature[2] &&\n        input[ip+3] === Zlib.Unzip.CentralDirectorySignature[3]) {\n      this.eocdrOffset = ip;\n      return;\n    }\n  }\n\n  throw new Error('End of Central Directory Record not found');\n};\n\nZlib.Unzip.prototype.parseEndOfCentralDirectoryRecord = function() {\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var input = this.input;\n  /** @type {number} */\n  var ip;\n\n  if (!this.eocdrOffset) {\n    this.searchEndOfCentralDirectoryRecord();\n  }\n  ip = this.eocdrOffset;\n\n  // signature\n  if (input[ip++] !== Zlib.Unzip.CentralDirectorySignature[0] ||\n      input[ip++] !== Zlib.Unzip.CentralDirectorySignature[1] ||\n      input[ip++] !== Zlib.Unzip.CentralDirectorySignature[2] ||\n      input[ip++] !== Zlib.Unzip.CentralDirectorySignature[3]) {\n    throw new Error('invalid signature');\n  }\n\n  // number of this disk\n  this.numberOfThisDisk = input[ip++] | (input[ip++] << 8);\n\n  // number of the disk with the start of the central directory\n  this.startDisk = input[ip++] | (input[ip++] << 8);\n\n  // total number of entries in the central directory on this disk\n  this.totalEntriesThisDisk = input[ip++] | (input[ip++] << 8);\n\n  // total number of entries in the central directory\n  this.totalEntries = input[ip++] | (input[ip++] << 8);\n\n  // size of the central directory\n  this.centralDirectorySize = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // offset of start of central directory with respect to the starting disk number\n  this.centralDirectoryOffset = (\n    (input[ip++]      ) | (input[ip++] <<  8) |\n    (input[ip++] << 16) | (input[ip++] << 24)\n  ) >>> 0;\n\n  // .ZIP file comment length\n  this.commentLength = input[ip++] | (input[ip++] << 8);\n\n  // .ZIP file comment\n  this.comment = input.subarray(ip, ip + this.commentLength) ;\n};\n\nZlib.Unzip.prototype.parseFileHeader = function() {\n  /** @type {Array.<Zlib.Unzip.FileHeader>} */\n  var filelist = [];\n  /** @type {Object.<string, number>} */\n  var filetable = {};\n  /** @type {number} */\n  var ip;\n  /** @type {Zlib.Unzip.FileHeader} */\n  var fileHeader;\n  /*: @type {number} */\n  var i;\n  /*: @type {number} */\n  var il;\n\n  if (this.fileHeaderList) {\n    return;\n  }\n\n  if (this.centralDirectoryOffset === void 0) {\n    this.parseEndOfCentralDirectoryRecord();\n  }\n  ip = this.centralDirectoryOffset;\n\n  for (i = 0, il = this.totalEntries; i < il; ++i) {\n    fileHeader = new Zlib.Unzip.FileHeader(this.input, ip);\n    fileHeader.parse();\n    ip += fileHeader.length;\n    filelist[i] = fileHeader;\n    filetable[fileHeader.filename] = i;\n  }\n\n  if (this.centralDirectorySize < ip - this.centralDirectoryOffset) {\n    throw new Error('invalid file header size');\n  }\n\n  this.fileHeaderList = filelist;\n  this.filenameToIndex = filetable;\n};\n\n/**\n * @param {number} index file header index.\n * @param {Object=} opt_params\n * @return {!(Array.<number>|Uint8Array)} file data.\n */\nZlib.Unzip.prototype.getFileData = function(index, opt_params) {\n  opt_params = opt_params || {};\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var input = this.input;\n  /** @type {Array.<Zlib.Unzip.FileHeader>} */\n  var fileHeaderList = this.fileHeaderList;\n  /** @type {Zlib.Unzip.LocalFileHeader} */\n  var localFileHeader;\n  /** @type {number} */\n  var offset;\n  /** @type {number} */\n  var length;\n  /** @type {!(Array.<number>|Uint8Array)} */\n  var buffer;\n  /** @type {number} */\n  var crc32;\n  /** @type {Array.<number>|Uint32Array|Object} */\n  var key;\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n\n  if (!fileHeaderList) {\n    this.parseFileHeader();\n  }\n\n  if (fileHeaderList[index] === void 0) {\n    throw new Error('wrong index');\n  }\n\n  offset = fileHeaderList[index].relativeOffset;\n  localFileHeader = new Zlib.Unzip.LocalFileHeader(this.input, offset);\n  localFileHeader.parse();\n  offset += localFileHeader.length;\n  length = localFileHeader.compressedSize;\n\n  // decryption\n  if ((localFileHeader.flags & Zlib.Unzip.LocalFileHeader.Flags.ENCRYPT) !== 0) {\n    if (!(opt_params['password'] || this.password)) {\n      throw new Error('please set password');\n    }\n    key =  this.createDecryptionKey(opt_params['password'] || this.password);\n\n    // encryption header\n    for(i = offset, il = offset + 12; i < il; ++i) {\n      this.decode(key, input[i]);\n    }\n    offset += 12;\n    length -= 12;\n\n    // decryption\n    for (i = offset, il = offset + length; i < il; ++i) {\n      input[i] = this.decode(key, input[i]);\n    }\n  }\n\n  switch (localFileHeader.compression) {\n    case Zlib.Unzip.CompressionMethod.STORE:\n      buffer = this.input.subarray(offset, offset + length) ;\n      break;\n    case Zlib.Unzip.CompressionMethod.DEFLATE:\n      buffer = new Zlib.RawInflate(this.input, {\n        'index': offset,\n        'bufferSize': localFileHeader.plainSize\n      }).decompress();\n      break;\n    default:\n      throw new Error('unknown compression type');\n  }\n\n  if (this.verify) {\n    crc32 = Zlib.CRC32.calc(buffer);\n    if (localFileHeader.crc32 !== crc32) {\n      throw new Error(\n        'wrong crc: file=0x' + localFileHeader.crc32.toString(16) +\n        ', data=0x' + crc32.toString(16)\n      );\n    }\n  }\n\n  return buffer;\n};\n\n/**\n * @return {Array.<string>}\n */\nZlib.Unzip.prototype.getFilenames = function() {\n  /** @type {Array.<string>} */\n  var filenameList = [];\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n  /** @type {Array.<Zlib.Unzip.FileHeader>} */\n  var fileHeaderList;\n\n  if (!this.fileHeaderList) {\n    this.parseFileHeader();\n  }\n  fileHeaderList = this.fileHeaderList;\n\n  for (i = 0, il = fileHeaderList.length; i < il; ++i) {\n    filenameList[i] = fileHeaderList[i].filename;\n  }\n\n  return filenameList;\n};\n\n/**\n * @param {string} filename extract filename.\n * @param {Object=} opt_params\n * @return {!(Array.<number>|Uint8Array)} decompressed data.\n */\nZlib.Unzip.prototype.decompress = function(filename, opt_params) {\n  /** @type {number} */\n  var index;\n\n  if (!this.filenameToIndex) {\n    this.parseFileHeader();\n  }\n  index = this.filenameToIndex[filename];\n\n  if (index === void 0) {\n    throw new Error(filename + ' not found');\n  }\n\n  return this.getFileData(index, opt_params);\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n */\nZlib.Unzip.prototype.setPassword = function(password) {\n  this.password = password;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array|Object)} key\n * @param {number} n\n * @return {number}\n */\nZlib.Unzip.prototype.decode = function(key, n) {\n  n ^= this.getByte(/** @type {(Array.<number>|Uint32Array)} */(key));\n  this.updateKeys(/** @type {(Array.<number>|Uint32Array)} */(key), n);\n\n  return n;\n};\n\n// common method\nZlib.Unzip.prototype.updateKeys = Zlib.Zip.prototype.updateKeys;\nZlib.Unzip.prototype.createDecryptionKey = Zlib.Zip.prototype.createEncryptionKey;\nZlib.Unzip.prototype.getByte = Zlib.Zip.prototype.getByte;\n\n/**\n * @fileoverview 雑多な関数群をまとめたモジュール実装.\n */\n\n\n/**\n * Byte String から Byte Array に変換.\n * @param {!string} str byte string.\n * @return {!Array.<number>} byte array.\n */\nZlib.Util.stringToByteArray = function(str) {\n  /** @type {!Array.<(string|number)>} */\n  var tmp = str.split('');\n  /** @type {number} */\n  var i;\n  /** @type {number} */\n  var il;\n\n  for (i = 0, il = tmp.length; i < il; i++) {\n    tmp[i] = (tmp[i].charCodeAt(0) & 0xff) >>> 0;\n  }\n\n  return tmp;\n};\n\n\n/**\n * @fileoverview Adler32 checksum 実装.\n */\n\n\n/**\n * Adler32 ハッシュ値の作成\n * @param {!(Array|Uint8Array|string)} array 算出に使用する byte array.\n * @return {number} Adler32 ハッシュ値.\n */\nZlib.Adler32 = function(array) {\n  if (typeof(array) === 'string') {\n    array = Zlib.Util.stringToByteArray(array);\n  }\n  return Zlib.Adler32.update(1, array);\n};\n\n/**\n * Adler32 ハッシュ値の更新\n * @param {number} adler 現在のハッシュ値.\n * @param {!(Array|Uint8Array)} array 更新に使用する byte array.\n * @return {number} Adler32 ハッシュ値.\n */\nZlib.Adler32.update = function(adler, array) {\n  /** @type {number} */\n  var s1 = adler & 0xffff;\n  /** @type {number} */\n  var s2 = (adler >>> 16) & 0xffff;\n  /** @type {number} array length */\n  var len = array.length;\n  /** @type {number} loop length (don't overflow) */\n  var tlen;\n  /** @type {number} array index */\n  var i = 0;\n\n  while (len > 0) {\n    tlen = len > Zlib.Adler32.OptimizationParameter ?\n      Zlib.Adler32.OptimizationParameter : len;\n    len -= tlen;\n    do {\n      s1 += array[i++];\n      s2 += s1;\n    } while (--tlen);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return ((s2 << 16) | s1) >>> 0;\n};\n\n/**\n * Adler32 最適化パラメータ\n * 現状では 1024 程度が最適.\n * @see http://jsperf.com/adler-32-simple-vs-optimized/3\n * @define {number}\n */\nZlib.Adler32.OptimizationParameter = 1024;\n\n\n\n\n/**\n * ビットストリーム\n * @constructor\n * @param {!(Array|Uint8Array)=} buffer output buffer.\n * @param {number=} bufferPosition start buffer pointer.\n */\nZlib.BitStream = function(buffer, bufferPosition) {\n  /** @type {number} buffer index. */\n  this.index = typeof bufferPosition === 'number' ? bufferPosition : 0;\n  /** @type {number} bit index. */\n  this.bitindex = 0;\n  /** @type {!(Array|Uint8Array)} bit-stream output buffer. */\n  this.buffer = buffer instanceof (Uint8Array ) ?\n    buffer :\n    new (Uint8Array )(Zlib.BitStream.DefaultBlockSize);\n\n  // 入力された index が足りなかったら拡張するが、倍にしてもダメなら不正とする\n  if (this.buffer.length * 2 <= this.index) {\n    throw new Error(\"invalid index\");\n  } else if (this.buffer.length <= this.index) {\n    this.expandBuffer();\n  }\n};\n\n/**\n * デフォルトブロックサイズ.\n * @const\n * @type {number}\n */\nZlib.BitStream.DefaultBlockSize = 0x8000;\n\n/**\n * expand buffer.\n * @return {!(Array|Uint8Array)} new buffer.\n */\nZlib.BitStream.prototype.expandBuffer = function() {\n  /** @type {!(Array|Uint8Array)} old buffer. */\n  var oldbuf = this.buffer;\n  /** @type {number} loop limiter. */\n  var il = oldbuf.length;\n  /** @type {!(Array|Uint8Array)} new buffer. */\n  var buffer =\n    new (Uint8Array )(il << 1);\n\n  // copy buffer\n  {\n    buffer.set(oldbuf);\n  }\n\n  return (this.buffer = buffer);\n};\n\n\n/**\n * 数値をビットで指定した数だけ書き込む.\n * @param {number} number 書き込む数値.\n * @param {number} n 書き込むビット数.\n * @param {boolean=} reverse 逆順に書き込むならば true.\n */\nZlib.BitStream.prototype.writeBits = function(number, n, reverse) {\n  var buffer = this.buffer;\n  var index = this.index;\n  var bitindex = this.bitindex;\n\n  /** @type {number} current octet. */\n  var current = buffer[index];\n  /** @type {number} loop counter. */\n  var i;\n\n  /**\n   * 32-bit 整数のビット順を逆にする\n   * @param {number} n 32-bit integer.\n   * @return {number} reversed 32-bit integer.\n   * @private\n   */\n  function rev32_(n) {\n    return (Zlib.BitStream.ReverseTable[n & 0xFF] << 24) |\n      (Zlib.BitStream.ReverseTable[n >>> 8 & 0xFF] << 16) |\n      (Zlib.BitStream.ReverseTable[n >>> 16 & 0xFF] << 8) |\n      Zlib.BitStream.ReverseTable[n >>> 24 & 0xFF];\n  }\n\n  if (reverse && n > 1) {\n    number = n > 8 ?\n      rev32_(number) >> (32 - n) :\n      Zlib.BitStream.ReverseTable[number] >> (8 - n);\n  }\n\n  // Byte 境界を超えないとき\n  if (n + bitindex < 8) {\n    current = (current << n) | number;\n    bitindex += n;\n  // Byte 境界を超えるとき\n  } else {\n    for (i = 0; i < n; ++i) {\n      current = (current << 1) | ((number >> n - i - 1) & 1);\n\n      // next byte\n      if (++bitindex === 8) {\n        bitindex = 0;\n        buffer[index++] = Zlib.BitStream.ReverseTable[current];\n        current = 0;\n\n        // expand\n        if (index === buffer.length) {\n          buffer = this.expandBuffer();\n        }\n      }\n    }\n  }\n  buffer[index] = current;\n\n  this.buffer = buffer;\n  this.bitindex = bitindex;\n  this.index = index;\n};\n\n\n/**\n * ストリームの終端処理を行う\n * @return {!(Array|Uint8Array)} 終端処理後のバッファを byte array で返す.\n */\nZlib.BitStream.prototype.finish = function() {\n  var buffer = this.buffer;\n  var index = this.index;\n\n  /** @type {!(Array|Uint8Array)} output buffer. */\n  var output;\n\n  // bitindex が 0 の時は余分に index が進んでいる状態\n  if (this.bitindex > 0) {\n    buffer[index] <<= 8 - this.bitindex;\n    buffer[index] = Zlib.BitStream.ReverseTable[buffer[index]];\n    index++;\n  }\n\n  // array truncation\n  {\n    output = buffer.subarray(0, index);\n  }\n\n  return output;\n};\n\n/**\n * 0-255 のビット順を反転したテーブル\n * @const\n * @type {!(Uint8Array|Array.<number>)}\n */\nZlib.BitStream.ReverseTable = (function(table) {\n  return table;\n})((function() {\n  /** @type {!(Array|Uint8Array)} reverse table. */\n  var table = new (Uint8Array )(256);\n  /** @type {number} loop counter. */\n  var i;\n\n  // generate\n  for (i = 0; i < 256; ++i) {\n    table[i] = (function(n) {\n      var r = n;\n      var s = 7;\n\n      for (n >>>= 1; n; n >>>= 1) {\n        r <<= 1;\n        r |= n & 1;\n        --s;\n      }\n\n      return (r << s & 0xff) >>> 0;\n    })(i);\n  }\n\n  return table;\n})());\n\n/**\n * CRC32 ハッシュ値を取得\n * @param {!(Array.<number>|Uint8Array)} data data byte array.\n * @param {number=} pos data position.\n * @param {number=} length data length.\n * @return {number} CRC32.\n */\nZlib.CRC32.calc = function(data, pos, length) {\n  return Zlib.CRC32.update(data, 0, pos, length);\n};\n\n/**\n * CRC32ハッシュ値を更新\n * @param {!(Array.<number>|Uint8Array)} data data byte array.\n * @param {number} crc CRC32.\n * @param {number=} pos data position.\n * @param {number=} length data length.\n * @return {number} CRC32.\n */\nZlib.CRC32.update = function(data, crc, pos, length) {\n  var table = Zlib.CRC32.Table;\n  var i = (typeof pos === 'number') ? pos : (pos = 0);\n  var il = (typeof length === 'number') ? length : data.length;\n\n  crc ^= 0xffffffff;\n\n  // loop unrolling for performance\n  for (i = il & 7; i--; ++pos) {\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos]) & 0xff];\n  }\n  for (i = il >> 3; i--; pos += 8) {\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos    ]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 1]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 2]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 3]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 4]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 5]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 6]) & 0xff];\n    crc = (crc >>> 8) ^ table[(crc ^ data[pos + 7]) & 0xff];\n  }\n\n  return (crc ^ 0xffffffff) >>> 0;\n};\n\n/**\n * @param {number} num\n * @param {number} crc\n * @returns {number}\n */\nZlib.CRC32.single = function(num, crc) {\n  return (Zlib.CRC32.Table[(num ^ crc) & 0xff] ^ (num >>> 8)) >>> 0;\n};\n\n/**\n * @type {Array.<number>}\n * @const\n * @private\n */\nZlib.CRC32.Table_ = [\n  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n  0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n  0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n  0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n  0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n  0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n  0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n  0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n  0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n  0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n  0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n  0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n  0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n  0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n  0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n  0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n  0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n  0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n  0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n  0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n  0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n  0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n  0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n  0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n  0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n  0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n  0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n  0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n  0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n  0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n  0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n  0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n  0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n  0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n  0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n];\n\n/**\n * @type {!(Array.<number>|Uint32Array)} CRC-32 Table.\n * @const\n */\nZlib.CRC32.Table = new Uint32Array(Zlib.CRC32.Table_) ;\n\n/**\n * @fileoverview Deflate (RFC1951) 実装.\n * Deflateアルゴリズム本体は Zlib.RawDeflate で実装されている.\n */\n\n/**\n * Zlib Deflate\n * @constructor\n * @param {!(Array|Uint8Array)} input 符号化する対象の byte array.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Deflate = function(input, opt_params) {\n  /** @type {!(Array|Uint8Array)} */\n  this.input = input;\n  /** @type {!(Array|Uint8Array)} */\n  this.output =\n    new (Uint8Array )(Zlib.Deflate.DefaultBufferSize);\n  /** @type {Zlib.Deflate.CompressionType} */\n  this.compressionType = Zlib.Deflate.CompressionType.DYNAMIC;\n  /** @type {Zlib.RawDeflate} */\n  this.rawDeflate;\n  /** @type {Object} */\n  var rawDeflateOption = {};\n  /** @type {string} */\n  var prop;\n\n  // option parameters\n  if (opt_params || !(opt_params = {})) {\n    if (typeof opt_params['compressionType'] === 'number') {\n      this.compressionType = opt_params['compressionType'];\n    }\n  }\n\n  // copy options\n  for (prop in opt_params) {\n    rawDeflateOption[prop] = opt_params[prop];\n  }\n\n  // set raw-deflate output buffer\n  rawDeflateOption['outputBuffer'] = this.output;\n\n  this.rawDeflate = new Zlib.RawDeflate(this.input, rawDeflateOption);\n};\n\n/**\n * @const\n * @type {number} デフォルトバッファサイズ.\n */\nZlib.Deflate.DefaultBufferSize = 0x8000;\n\n/**\n * @enum {number}\n */\nZlib.Deflate.CompressionType = Zlib.RawDeflate.CompressionType;\n\n/**\n * 直接圧縮に掛ける.\n * @param {!(Array|Uint8Array)} input target buffer.\n * @param {Object=} opt_params option parameters.\n * @return {!(Array|Uint8Array)} compressed data byte array.\n */\nZlib.Deflate.compress = function(input, opt_params) {\n  return (new Zlib.Deflate(input, opt_params)).compress();\n};\n\n/**\n * Deflate Compression.\n * @return {!(Array|Uint8Array)} compressed data byte array.\n */\nZlib.Deflate.prototype.compress = function() {\n  /** @type {Zlib.CompressionMethod} */\n  var cm;\n  /** @type {number} */\n  var cinfo;\n  /** @type {number} */\n  var cmf;\n  /** @type {number} */\n  var flg;\n  /** @type {number} */\n  var fcheck;\n  /** @type {number} */\n  var fdict;\n  /** @type {number} */\n  var flevel;\n  /** @type {number} */\n  var adler;\n  /** @type {!(Array|Uint8Array)} */\n  var output;\n  /** @type {number} */\n  var pos = 0;\n\n  output = this.output;\n\n  // Compression Method and Flags\n  cm = Zlib.CompressionMethod.DEFLATE;\n  switch (cm) {\n    case Zlib.CompressionMethod.DEFLATE:\n      cinfo = Math.LOG2E * Math.log(Zlib.RawDeflate.WindowSize) - 8;\n      break;\n    default:\n      throw new Error('invalid compression method');\n  }\n  cmf = (cinfo << 4) | cm;\n  output[pos++] = cmf;\n\n  // Flags\n  fdict = 0;\n  switch (cm) {\n    case Zlib.CompressionMethod.DEFLATE:\n      switch (this.compressionType) {\n        case Zlib.Deflate.CompressionType.NONE: flevel = 0; break;\n        case Zlib.Deflate.CompressionType.FIXED: flevel = 1; break;\n        case Zlib.Deflate.CompressionType.DYNAMIC: flevel = 2; break;\n        default: throw new Error('unsupported compression type');\n      }\n      break;\n    default:\n      throw new Error('invalid compression method');\n  }\n  flg = (flevel << 6) | (fdict << 5);\n  fcheck = 31 - (cmf * 256 + flg) % 31;\n  flg |= fcheck;\n  output[pos++] = flg;\n\n  // Adler-32 checksum\n  adler = Zlib.Adler32(this.input);\n\n  this.rawDeflate.op = pos;\n  output = this.rawDeflate.compress();\n  pos = output.length;\n\n  {\n    // subarray 分を元にもどす\n    output = new Uint8Array(output.buffer);\n    // expand buffer\n    if (output.length <= pos + 4) {\n      this.output = new Uint8Array(output.length + 4);\n      this.output.set(output);\n      output = this.output;\n    }\n    output = output.subarray(0, pos + 4);\n  }\n\n  // adler32\n  output[pos++] = (adler >> 24) & 0xff;\n  output[pos++] = (adler >> 16) & 0xff;\n  output[pos++] = (adler >>  8) & 0xff;\n  output[pos++] = (adler      ) & 0xff;\n\n  return output;\n};\n\nclass BrowserLocalFile {\n\n    constructor(blob) {\n        this.file = blob;\n    }\n\n    async read(position, length) {\n        const file = this.file;\n        if (position !== undefined) {\n            return file.slice(position, position + length).arrayBuffer()\n\n        } else {\n            return file.arrayBuffer()\n\n        }\n    }\n}\n\ntypeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\nclass RemoteFile {\n\n    constructor(args) {\n        this.config = args;\n        this.url = mapUrl(args.path || args.url);\n    }\n\n\n    async read(position, length) {\n\n        length = Math.ceil(length);\n        const headers = this.config.headers || {};\n        const rangeString = \"bytes=\" + position + \"-\" + (position + length - 1);\n        headers['Range'] = rangeString;\n\n        let url = this.url.slice();    // slice => copy\n        // headers['User-Agent'] = 'straw'\n        if (this.config.oauthToken) {\n            const token = resolveToken(this.config.oauthToken);\n            headers['Authorization'] = `Bearer ${token}`;\n        }\n        if (this.config.apiKey) {\n            url = addParameter(url, \"key\", this.config.apiKey);\n        }\n\n        const response = await fetch(url, {\n            method: 'GET',\n            headers: headers,\n            redirect: 'follow',\n            mode: 'cors',\n\n        });\n\n        const status = response.status;\n\n        if (status >= 400) {\n            console.error(`${status}  ${this.config.url}`);\n            const err = Error(response.statusText);\n            err.code = status;\n            throw err\n        } else {\n            return response.arrayBuffer()\n        }\n\n        /**\n         * token can be a string, a function that returns a string, or a function that returns a Promise for a string\n         * @param token\n         * @returns {Promise<*>}\n         */\n        async function resolveToken(token) {\n            if (typeof token === 'function') {\n                return await Promise.resolve(token())    // Normalize the result to a promise, since we don't know what the function returns\n            } else {\n                return token\n            }\n        }\n\n    }\n}\n\n\nfunction mapUrl(url) {\n\n    if (url.includes(\"//www.dropbox.com\")) {\n        return url.replace(\"//www.dropbox.com\", \"//dl.dropboxusercontent.com\")\n    } else if (url.startsWith(\"ftp://ftp.ncbi.nlm.nih.gov\")) {\n        return url.replace(\"ftp://\", \"https://\")\n    } else {\n        return url\n    }\n}\n\n\nfunction addParameter(url, name, value) {\n    const paramSeparator = url.includes(\"?\") ? \"&\" : \"?\";\n    return url + paramSeparator + name + \"=\" + value\n}\n\nclass ThrottledFile {\n\n    constructor(file, rateLimiter) {\n        this.file = file;\n        this.rateLimiter = rateLimiter;\n    }\n\n\n    async read(position, length) {\n\n        const file = this.file;\n        const rateLimiter = this.rateLimiter;\n\n        return new Promise(function (fulfill, reject) {\n            rateLimiter.limiter(async function (f) {\n                try {\n                    const result = await f.read(position, length);\n                    fulfill(result);\n                } catch (e) {\n                    reject(e);\n                }\n            })(file);\n        })\n    }\n}\n\nclass RateLimiter {\n\n    constructor(wait) {\n        this.wait = wait === undefined ? 100 : wait;\n\n        this.isCalled = false;\n        this.calls = [];\n    }\n\n\n    limiter(fn) {\n\n        const self = this;\n\n        let caller = function () {\n\n            if (self.calls.length && !self.isCalled) {\n                self.isCalled = true;\n                self.calls.shift().call();\n                setTimeout(function () {\n                    self.isCalled = false;\n                    caller();\n                }, self.wait);\n            }\n        };\n\n        return function () {\n            self.calls.push(fn.bind(this, ...arguments));\n            caller();\n        };\n    }\n\n}\n\nclass BufferedFile {\n\n    constructor(args) {\n        this.file = args.file;\n        this.size = args.size || 64000;\n        this.position = 0;\n        this.bufferStart = 0;\n        this.bufferLength = 0;\n        this.buffer = undefined;\n    }\n\n\n    async read(position, length) {\n\n        const start = position;\n        const end = position + length;\n        const bufferStart = this.bufferStart;\n        const bufferEnd = this.bufferStart + this.bufferLength;\n\n\n        if (length > this.size) {\n            // Request larger than max buffer size,  pass through to underlying file\n            //console.log(\"0\")\n            this.buffer = undefined;\n            this.bufferStart = 0;\n            this.bufferLength = 0;\n            return this.file.read(position, length)\n        }\n\n        if (start >= bufferStart && end <= bufferEnd) {\n            // Request within buffer bounds\n            //console.log(\"1\")\n            const sliceStart = start - bufferStart;\n            const sliceEnd = sliceStart + length;\n            return this.buffer.slice(sliceStart, sliceEnd)\n        }\n\n        else if (start < bufferStart && end > bufferStart) {\n            // Overlap left, here for completness but this is an unexpected case in straw.  We don't adjust the buffer.\n            //console.log(\"2\")\n            const l1 = bufferStart - start;\n            const a1 = await this.file.read(position, l1);\n            const l2 = length - l1;\n            if (l2 > 0) {\n                //this.buffer = await this.file.read(bufferStart, this.size)\n                const a2 = this.buffer.slice(0, l2);\n                return concatBuffers(a1, a2)\n            } else {\n                return a1\n            }\n\n        }\n\n        else if (start < bufferEnd && end > bufferEnd) {\n            // Overlap right\n            // console.log(\"3\")\n            const l1 = bufferEnd - start;\n            const sliceStart = this.bufferLength - l1;\n            const a1 = this.buffer.slice(sliceStart, this.bufferLength);\n\n            const l2 = length - l1;\n            if (l2 > 0) {\n                try {\n                    this.buffer = await this.file.read(bufferEnd, this.size);\n                    this.bufferStart = bufferEnd;\n                    this.bufferLength = this.buffer.byteLength;\n                    const a2 = this.buffer.slice(0, l2);\n                    return concatBuffers(a1, a2)\n                } catch (e) {\n                    // A \"unsatisfiable range\" error is expected here if we overlap past the end of file\n                    if (e.code && e.code === 416) {\n                        return a1\n                    }\n                    else {\n                        throw e\n                    }\n                }\n\n            } else {\n                return a1\n            }\n\n        }\n\n        else {\n            // No overlap with buffer\n            // console.log(\"4\")\n            this.buffer = await this.file.read(position, this.size);\n            this.bufferStart = position;\n            this.bufferLength = this.buffer.byteLength;\n            return this.buffer.slice(0, length)\n        }\n\n    }\n\n}\n\n/**\n * concatenates 2 array buffers.\n * Credit: https://gist.github.com/72lions/4528834\n *\n * @private\n * @param {ArrayBuffers} buffer1 The first buffer.\n * @param {ArrayBuffers} buffer2 The second buffer.\n * @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n */\nvar concatBuffers = function (buffer1, buffer2) {\n    var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n    tmp.set(new Uint8Array(buffer1), 0);\n    tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n    return tmp.buffer;\n};\n\n// TODO -- big endian\n\nconst BinaryParser = function (dataView, littleEndian) {\n\n    this.littleEndian = littleEndian !== undefined ? littleEndian : true;\n    this.position = 0;\n    this.view = dataView;\n    this.length = dataView.byteLength;\n};\n\nBinaryParser.prototype.available = function () {\n    return this.length - this.position;\n};\n\nBinaryParser.prototype.remLength = function () {\n    return this.length - this.position;\n};\n\nBinaryParser.prototype.hasNext = function () {\n    return this.position < this.length - 1;\n};\n\nBinaryParser.prototype.getByte = function () {\n    var retValue = this.view.getUint8(this.position, this.littleEndian);\n    this.position++;\n    return retValue;\n};\n\nBinaryParser.prototype.getShort = function () {\n\n    var retValue = this.view.getInt16(this.position, this.littleEndian);\n    this.position += 2;\n    return retValue;\n};\n\nBinaryParser.prototype.getUShort = function () {\n\n    // var byte1 = this.getByte(),\n    //     byte2 = this.getByte(),\n    //     retValue = ((byte2 << 24 >>> 16) + (byte1 << 24 >>> 24));\n    //     return retValue;\n\n    //\n    var retValue = this.view.getUint16(this.position, this.littleEndian);\n    this.position += 2;\n    return retValue;\n};\n\n\nBinaryParser.prototype.getInt = function () {\n\n    var retValue = this.view.getInt32(this.position, this.littleEndian);\n    this.position += 4;\n    return retValue;\n};\n\n\nBinaryParser.prototype.getUInt = function () {\n    var retValue = this.view.getUint32(this.position, this.littleEndian);\n    this.position += 4;\n    return retValue;\n};\n\nBinaryParser.prototype.getLong = function () {\n\n    // DataView doesn't support long. So we'll try manually\n\n    var b = [];\n    b[0] = this.view.getUint8(this.position);\n    b[1] = this.view.getUint8(this.position + 1);\n    b[2] = this.view.getUint8(this.position + 2);\n    b[3] = this.view.getUint8(this.position + 3);\n    b[4] = this.view.getUint8(this.position + 4);\n    b[5] = this.view.getUint8(this.position + 5);\n    b[6] = this.view.getUint8(this.position + 6);\n    b[7] = this.view.getUint8(this.position + 7);\n\n    var value = 0;\n    if (this.littleEndian) {\n        for (var i = b.length - 1; i >= 0; i--) {\n            value = (value * 256) + b[i];\n        }\n    } else {\n        for (var i = 0; i < b.length; i++) {\n            value = (value * 256) + b[i];\n        }\n    }\n\n\n    this.position += 8;\n    return value;\n};\n\nBinaryParser.prototype.getString = function (len) {\n\n    var s = \"\";\n    var c;\n    while ((c = this.view.getUint8(this.position++)) != 0) {\n        s += String.fromCharCode(c);\n        if (len && s.length == len) break;\n    }\n    return s;\n};\n\nBinaryParser.prototype.getFixedLengthString = function (len) {\n\n    var s = \"\";\n    var i;\n    var c;\n    for (i = 0; i < len; i++) {\n        c = this.view.getUint8(this.position++);\n        if (c > 0) {\n            s += String.fromCharCode(c);\n        }\n    }\n    return s;\n};\n\nBinaryParser.prototype.getFixedLengthTrimmedString = function (len) {\n\n    var s = \"\";\n    var i;\n    var c;\n    for (i = 0; i < len; i++) {\n        c = this.view.getUint8(this.position++);\n        if (c > 32) {\n            s += String.fromCharCode(c);\n        }\n    }\n    return s;\n};\n\nBinaryParser.prototype.getFloat = function () {\n\n    var retValue = this.view.getFloat32(this.position, this.littleEndian);\n    this.position += 4;\n    return retValue;\n\n\n};\n\nBinaryParser.prototype.getDouble = function () {\n\n    var retValue = this.view.getFloat64(this.position, this.littleEndian);\n    this.position += 8;\n    return retValue;\n};\n\nBinaryParser.prototype.skip = function (n) {\n\n    this.position += n;\n    return this.position;\n};\n\n\n/**\n * Return a bgzip (bam and tabix) virtual pointer\n * TODO -- why isn't 8th byte used ?\n * @returns {*}\n */\nBinaryParser.prototype.getVPointer = function () {\n\n    var position = this.position,\n        offset = (this.view.getUint8(position + 1) << 8) | (this.view.getUint8(position)),\n        byte6 = ((this.view.getUint8(position + 6) & 0xff) * 0x100000000),\n        byte5 = ((this.view.getUint8(position + 5) & 0xff) * 0x1000000),\n        byte4 = ((this.view.getUint8(position + 4) & 0xff) * 0x10000),\n        byte3 = ((this.view.getUint8(position + 3) & 0xff) * 0x100),\n        byte2 = ((this.view.getUint8(position + 2) & 0xff)),\n        block = byte6 + byte5 + byte4 + byte3 + byte2;\n    this.position += 8;\n\n    //       if (block == 0 && offset == 0) {\n    //           return null;\n    //       } else {\n    return new VPointer(block, offset);\n    //       }\n};\n\n\nfunction VPointer(block, offset) {\n    this.block = block;\n    this.offset = offset;\n}\n\nVPointer.prototype.isLessThan = function (vp) {\n    return this.block < vp.block ||\n        (this.block === vp.block && this.offset < vp.offset);\n};\n\nVPointer.prototype.isGreaterThan = function (vp) {\n    return this.block > vp.block ||\n        (this.block === vp.block && this.offset > vp.offset);\n};\n\nVPointer.prototype.print = function () {\n    return \"\" + this.block + \":\" + this.offset;\n};\n\nclass MatrixZoomData {\n\n    constructor(chr1, chr2) {\n\n        this.chr1 = chr1;    // chromosome index\n        this.chr2 = chr2;\n    }\n\n    getKey () {\n        return this.chr1.name + \"_\" + this.chr2.name + \"_\" + this.zoom.unit + \"_\" + this.zoom.binSize;\n    }\n\n    getBlockNumbers(region1, region2, version) {\n\n        // Verify region chromosomes and swap if neccessary\n        if(region1.chr == this.chr2 && region2.chr === this.chr1) {\n            const tmp = region1;\n            region1 = region2;\n            region2 = tmp;\n        }\n\n        const sameChr = this.chr1 === this.chr2;\n        const binsize = this.zoom.binSize;\n        const blockBinCount = this.blockBinCount;\n        const blockColumnCount = this.blockColumnCount;\n        return (version < 9 || !sameChr) ? getBlockNumbersV8() : getBlockNumbersV9();\n\n        function getBlockNumbersV8()\n        {\n            const x1 = region1.start / binsize;\n            const x2 = region1.end / binsize;\n            const y1 = region2.start / binsize;\n            const y2 = region2.end / binsize;\n\n            const col1 = Math.floor(x1 / blockBinCount);\n            const col2 = Math.floor((x2 - 1) / blockBinCount);\n            const row1 = Math.floor(y1 / blockBinCount);\n            const row2 = Math.floor((y2 - 1) / blockBinCount);\n\n            const blockNumbers = [];\n            for (let row = row1; row <= row2; row++) {\n                for (let column = col1; column <= col2; column++) {\n                    let blockNumber;\n                    if (sameChr && row < column) {\n                        blockNumber = column * blockColumnCount + row;\n                    } else {\n                        blockNumber = row * blockColumnCount + column;\n                    }\n                    if (!blockNumbers.includes(blockNumber)) {  // possible from transposition\n                        blockNumbers.push(blockNumber);\n                    }\n                }\n            }\n            return blockNumbers\n        }\n\n        function getBlockNumbersV9()\n        {\n\n            const binX1 = region1.start / binsize;\n            const binX2 = region1.end / binsize;\n            const binY1 = region2.start / binsize;\n            const binY2 = region2.end / binsize;\n\n            // PAD = positionAlongDiagonal (~projected)\n            // Depth is axis perpendicular to diagonal; nearer means closer to diagonal\n            const translatedLowerPAD = Math.floor((binX1 + binY1) / 2 / blockBinCount);\n            const translatedHigherPAD = Math.floor((binX2 + binY2) / 2 / blockBinCount);\n            const translatedNearerDepth = Math.floor(Math.log2(1 + Math.abs(binX1 - binY2) / Math.sqrt(2) / blockBinCount));\n            const translatedFurtherDepth = Math.floor(Math.log2(1 + Math.abs(binX2 - binY1) / Math.sqrt(2) / blockBinCount));\n\n            // because code above assume above diagonal; but we could be below diagonal\n            const containsDiagonal = (binX2 - binY1) * (binX1 - binY2) < 0;   // i.e. sign of (x-y) opposite on 2 corners\n            const nearerDepth = containsDiagonal ? 0 : Math.min(translatedNearerDepth, translatedFurtherDepth);\n            const furtherDepth = Math.max(translatedNearerDepth, translatedFurtherDepth);\n\n            const blockNumbers = [];\n            for (let depth = nearerDepth; depth <= furtherDepth; depth++) {\n                for (let pad = translatedLowerPAD; pad <= translatedHigherPAD; pad++) {\n                    const block_number = depth * blockColumnCount + pad;\n                    blockNumbers.push(block_number);\n                }\n            }\n            return blockNumbers\n        }\n    }\n\n    static parseMatrixZoomData(chr1, chr2, dis) {\n\n        const zd = new MatrixZoomData(chr1, chr2);\n\n        const unit = dis.getString();\n        const zoomIndex = dis.getInt();\n        const sumCounts = dis.getFloat();\n        const occupiedCellCount = dis.getFloat();\n        const stdDev = dis.getFloat();\n        const percent95 = dis.getFloat();\n        const binSize = dis.getInt();\n        zd. blockBinCount = dis.getInt();\n        zd. blockColumnCount = dis.getInt();\n        const nBlocks = dis.getInt();\n\n        zd. zoom = {index: zoomIndex, unit: unit, binSize: binSize};\n\n        zd.blockIndex = new StaticBlockIndex(nBlocks, dis);\n\n        const nBins1 = (chr1.size / binSize);\n        const nBins2 = (chr2.size / binSize);\n        const avgCount = (sumCounts / nBins1) / nBins2;   // <= trying to avoid overflows\n\n        zd.averageCount = avgCount;\n        zd.sumCounts = sumCounts;\n        zd.stdDev = stdDev;\n        zd.occupiedCellCount = occupiedCellCount;\n        zd.percent95 = percent95;\n\n        return zd;\n    }\n}\n\n\nclass StaticBlockIndex {\n\n    constructor(nBlocks, dis) {\n        this.blockIndex = {};\n        while (nBlocks-- > 0) {\n            const blockNumber = dis.getInt();\n            const filePosition = dis.getLong();\n            const size = dis.getInt();\n            this.blockIndex[blockNumber] = {filePosition, size};\n        }\n    }\n\n    getBlockIndexEntry(blockNumber) {\n        return this.blockIndex[blockNumber];\n    }\n}\n\nclass Matrix {\n\n    constructor(chr1, chr2, zoomDataList) {\n        this.chr1 = chr1;\n        this.chr2 = chr2;\n        this.bpZoomData = [];\n        this.fragZoomData = [];\n        for (let zd of zoomDataList) {\n            if (zd.zoom.unit === \"BP\") {\n                this.bpZoomData.push(zd);\n            } else {\n                this.fragZoomData.push(zd);\n            }\n        }\n    }\n\n    /**\n     * Find the best zoom level for the given bin size\n     * @param binSize\n     * @param unit\n     * @returns {number}\n     */\n    findZoomForResolution(binSize, unit) {\n        const zdArray = \"FRAG\" === unit ? this.fragZoomData : this.bpZoomData;\n        for (let i = 1; i < zdArray.length; i++) {\n            var zd = zdArray[i];\n            if (zd.zoom.binSize < binSize) {\n                return i - 1\n            }\n        }\n        return zdArray.length - 1\n    }\n\n    /**\n     * Fetch zoom data by bin size.  If no matching level exists return undefined.\n     *\n     * @param unit\n     * @param binSize\n     * @param zoom\n     * @returns {undefined|*}\n     */\n    getZoomData(binSize, unit) {\n        unit = unit || \"BP\";\n        const zdArray = unit === \"BP\" ? this.bpZoomData : this.fragZoomData;\n        for (let i = 0; i < zdArray.length; i++) {\n            var zd = zdArray[i];\n            if (binSize === zd.zoom.binSize) {\n                return zd\n            }\n        }\n        return undefined\n    }\n\n    /**\n     * Return zoom data by resolution index.\n     * @param index\n     * @param unit\n     * @returns {*}\n     */\n    getZoomDataByIndex(index, unit) {\n        const zdArray = \"FRAG\" === unit ? this.fragZoomData : this.bpZoomData;\n        return zdArray[index]\n    }\n\n    static getKey(chrIdx1, chrIdx2) {\n        if (chrIdx1 > chrIdx2) {\n            const tmp = chrIdx1;\n            chrIdx1 = chrIdx2;\n            chrIdx2 = tmp;\n        }\n        return `${chrIdx1}_${chrIdx2}`;\n    }\n\n    static parseMatrix(data, chromosomes) {\n\n        const dis = new BinaryParser(new DataView(data));\n        const c1 = dis.getInt();     // Should equal chrIdx1\n        const c2 = dis.getInt();     // Should equal chrIdx2\n\n        // TODO validate this\n        const chr1 = chromosomes[c1];\n        const chr2 = chromosomes[c2];\n\n        // # of resolution levels (bp and frags)\n        let nResolutions = dis.getInt();\n        const zdList = [];\n\n        while (nResolutions-- > 0) {\n            const zd = MatrixZoomData.parseMatrixZoomData(chr1, chr2, dis);\n            zdList.push(zd);\n        }\n        return new Matrix(c1, c2, zdList);\n    }\n\n}\n\nclass ContactRecord {\n\n    constructor(bin1, bin2, counts) {\n        this.bin1 = bin1;\n        this.bin2 = bin2;\n        this.counts = counts;\n    };\n\n    getKey() {\n        return \"\" + this.bin1 + \"_\" + this.bin2;\n    }\n}\n\nclass LRU {\n    constructor(max = 10) {\n        this.max = max;\n        this.map = new Map();\n    }\n\n    get(key) {\n        let item = this.map.get(key);\n        if (item) {\n            // refresh key\n            this.map.delete(key);\n            this.map.set(key, item);\n        }\n        return item;\n    }\n\n    set(key, val) {\n        // refresh key\n        if (this.map.has(key)) this.map.delete(key);\n        // evict oldest\n        else if (this.map.size === this.max) {\n            this.map.delete(this.first());\n        }\n        this.map.set(key, val);\n    }\n\n    has(key) {\n        return this.map.has(key);\n    }\n\n    clear() {\n        this.map.clear();\n    }\n\n    first() {\n        return this.map.keys().next().value;\n    }\n}\n\n/*\n *  The MIT License (MIT)\n *\n * Copyright (c) 2016-2017 The Regents of the University of California\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and\n * associated documentation files (the \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial\n * portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\nconst DOUBLE$1 = 8;\n\nclass NormalizationVector {\n\n    constructor(file, filePosition, nValues, dataType) {\n        this.file = file;\n        this.filePosition = filePosition;\n        this.nValues = nValues;\n        this.dataType = dataType;\n        this.cache = undefined;\n    }\n\n    async getValues(start, end) {\n\n        if(!this.cache || start < this.cache.start || end > this.cache.end) {\n            const adjustedStart = Math.max(0, start - 1000);\n            const adjustedEnd = Math.min(this.nValues, end + 1000);\n            const startPosition = this.filePosition + adjustedStart * this.dataType;\n            const n = adjustedEnd - adjustedStart;\n            const sizeInBytes = n  * this.dataType;\n            const data = await this.file.read(startPosition, sizeInBytes);\n            if (!data) {\n                return undefined;\n            }\n            const parser = new BinaryParser(new DataView(data));\n\n            const values = [];\n            for (let i = 0; i < n; i++) {\n                values[i] = this.dataType === DOUBLE$1 ? parser.getDouble() : parser.getFloat();\n\n            }\n            this.cache = {\n                start: adjustedStart,\n                end: adjustedEnd,\n                values: values\n            };\n        }\n\n        const sliceStart = start - this.cache.start;\n        const sliceEnd = sliceStart + (end - start);\n        return this.cache.values.slice(sliceStart, sliceEnd);\n    }\n\n    getKey() {\n        return NormalizationVector.getKey(this.type, this.chrIdx, this.unit, this.resolution);\n    }\n\n\n    static getNormalizationVectorKey(type, chrIdx, unit, resolution) {\n        return type + \"_\" + chrIdx + \"_\" + unit + \"_\" + resolution;\n    }\n}\n\n// Contains \"normalization vector index\" (nvi values) for legacy (v8) hosted files from aidenlab, ENCODE, and 4DN.\n// These values can speed up initialization by a few seconds.\nvar nvi = {\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined.hic\": \"54386046426,55860\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fprimary.hic\": \"33860030033,37504\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Freplicate.hic\": \"30849652794,55832\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fmaternal.hic\": \"1380542661,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fpaternal.hic\": \"1389001777,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2Fcombined.hic\": \"13433880319,35723\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC001.hic\": \"3409347253,35975\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC002.hic\": \"4529947083,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC003.hic\": \"6894962500,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC004.hic\": \"3395593338,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC005.hic\": \"5204128636,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC006.hic\": \"3278363811,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC007.hic\": \"3585547340,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC008.hic\": \"4134197273,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC009.hic\": \"2851728310,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC010.hic\": \"1754216102,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC011.hic\": \"1716829574,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC012.hic\": \"4367980375,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC013.hic\": \"2309654671,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC014.hic\": \"5324950266,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC015.hic\": \"3132333594,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC016.hic\": \"3159154704,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC017.hic\": \"3262554627,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC018.hic\": \"3014216364,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC019.hic\": \"5025753246,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC020.hic\": \"5861584507,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC021.hic\": \"3542263275,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC022.hic\": \"5061949378,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC023.hic\": \"4816423919,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC024.hic\": \"2683781104,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC025.hic\": \"6522701781,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC026.hic\": \"6748846520,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC027.hic\": \"5642693007,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC028.hic\": \"2098921691,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC029.hic\": \"3886454027,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC030.hic\": \"2288984204,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC031.hic\": \"2115342419,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fpellet%2FHIC032.hic\": \"2063314324,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fsupernatant%2FHIC033.hic\": \"1933908457,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC034.hic\": \"13555514595,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC035.hic\": \"6129650900,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC036.hic\": \"4307445019,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC037.hic\": \"9375139867,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2Fcombined.hic\": \"11664249584,33929\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_DpnII.hic\": \"7003537290,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC038.hic\": \"2099825544,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC039.hic\": \"2096900138,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC040.hic\": \"2593642141,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC041.hic\": \"2263919098,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC042.hic\": \"2684774693,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_noXlink.hic\": \"5574807456,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC043.hic\": \"2986114347,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC044.hic\": \"1916378621,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC045.hic\": \"746463126,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC046.hic\": \"2338476164,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC047.hic\": \"1167496250,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC048.hic\": \"2231690794,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC049.hic\": \"2782308678,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC050.hic\": \"3633531346,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC051.hic\": \"4063486444,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC052.hic\": \"929756278,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC053.hic\": \"2489657204,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC054.hic\": \"4036419444,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC055.hic\": \"4284185549,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC056.hic\": \"4410546240,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fdilution%2FHIC057.hic\": \"1491998259,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2Fcombined.hic\": \"7266425111,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC058.hic\": \"6532635593,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC059.hic\": \"400684530,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC060.hic\": \"645352187,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC061.hic\": \"736291871,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC062.hic\": \"762731037,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC063.hic\": \"682917431,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fdilution%2FHIC064.hic\": \"4550171307,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2Fcombined.hic\": \"11897184911,35789\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC065.hic\": \"5425943567,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC066.hic\": \"5942869818,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC067.hic\": \"5191049261,35647\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fdilution%2FHIC068.hic\": \"2713318801,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2Fcombined.hic\": \"12641555389,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC069.hic\": \"5630177461,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC070.hic\": \"5926611269,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC071.hic\": \"2486191351,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC072.hic\": \"2281343366,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC073.hic\": \"2173074239,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC074.hic\": \"2463700999,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2Fcombined.hic\": \"14661922519,35639\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC075.hic\": \"3685310515,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC076.hic\": \"5833658487,35891\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC077.hic\": \"2406346486,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC078.hic\": \"5241454987,35919\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC079.hic\": \"6297234263,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2Fcombined.hic\": \"9193858096,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC080.hic\": \"5171405536,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC081.hic\": \"3489767688,35891\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC082.hic\": \"4243339375,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fdilution%2FHIC083.hic\": \"1497495406,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2Fcombined.hic\": \"7923332224,35593\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC084.hic\": \"867699123,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC085.hic\": \"3669518514,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC086.hic\": \"5306474712,35595\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC087.hic\": \"1490963755,36397\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2Fcombined.hic\": \"8956382853,50248\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC088.hic\": \"1874185366,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC089.hic\": \"1301165236,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC090.hic\": \"1105246282,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC091.hic\": \"1338325770,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC092.hic\": \"1307918730,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC093.hic\": \"755136918,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC094.hic\": \"1606583694,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC095.hic\": \"2039711245,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC096.hic\": \"1909573053,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC097.hic\": \"1826710712,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC098.hic\": \"1998793575,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC099.hic\": \"1007740962,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC100.hic\": \"736464120,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC101.hic\": \"980505082,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC102.hic\": \"1116083646,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC103.hic\": \"1096994310,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC104.hic\": \"841063882,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC105.hic\": \"107742864,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC106.hic\": \"134295912,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC107.hic\": \"110228014,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC108.hic\": \"102761401,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC109.hic\": \"100461491,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC110.hic\": \"88828472,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC111.hic\": \"81471064,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC112.hic\": \"92297035,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC113.hic\": \"65503916,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC114.hic\": \"49181188,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC115.hic\": \"46471102,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC116.hic\": \"64284432,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC117.hic\": \"60434076,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC118.hic\": \"45248563,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC119.hic\": \"60288782,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC120.hic\": \"136888414,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC121.hic\": \"125009003,33681\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC122.hic\": \"154011688,34127\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC123.hic\": \"177663372,35293\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC124.hic\": \"382186226,35245\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC125.hic\": \"158160717,35271\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC127.hic\": \"110261177,34659\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC128.hic\": \"246131875,35509\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC129.hic\": \"260160119,35667\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC130.hic\": \"117479562,34681\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC131.hic\": \"81508929,34673\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC132.hic\": \"105959102,34895\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC133.hic\": \"91504812,33451\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC134.hic\": \"52222546,33737\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC135.hic\": \"57763085,34159\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC136.hic\": \"50618489,33731\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC137.hic\": \"193163606,33363\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC138.hic\": \"229876152,33777\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC139.hic\": \"201783666,33571\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC140.hic\": \"281163862,34125\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC141.hic\": \"275969727,33935\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC142.hic\": \"275020431,34125\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC144.hic\": \"223834810,34177\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC145.hic\": \"296632653,33937\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC146.hic\": \"290945216,33961\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC147.hic\": \"234459964,34231\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC148.hic\": \"295457850,34039\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC149.hic\": \"113569632,35695\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC150.hic\": \"304381897,33963\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC151.hic\": \"289314545,33805\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC152.hic\": \"284320182,33803\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC153.hic\": \"401393947,34659\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC154.hic\": \"188065488,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC155.hic\": \"299157119,33967\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC156.hic\": \"279289244,33787\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC157.hic\": \"254852119,33917\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC158.hic\": \"195969660,33477\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC159.hic\": \"185720388,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC160.hic\": \"227709279,33599\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC161.hic\": \"157225076,33209\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC162.hic\": \"105703444,32033\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC163.hic\": \"122665658,32121\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC164.hic\": \"228048231,33761\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC165.hic\": \"114440819,32011\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC166.hic\": \"285147558,33891\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC167.hic\": \"363116754,33943\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC168.hic\": \"119592158,31937\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC169.hic\": \"236853872,33785\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC170.hic\": \"195187639,33395\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC171.hic\": \"208044058,33309\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC172.hic\": \"144645916,32877\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC173.hic\": \"119115941,32203\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC175.hic\": \"178030481,33525\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC176.hic\": \"117220136,32169\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC177.hic\": \"128586196,32659\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC178.hic\": \"191419141,33629\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC179.hic\": \"141556748,32959\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC180.hic\": \"199825102,33185\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC181.hic\": \"301022688,33783\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC182.hic\": \"185384453,33205\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC183.hic\": \"202189264,36367\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC184.hic\": \"37464475,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC185.hic\": \"161938278,36099\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC186.hic\": \"133853166,36179\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC188.hic\": \"128068030,36237\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC189.hic\": \"148053886,36177\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC190.hic\": \"198946958,35803\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC191.hic\": \"226584564,36063\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC192.hic\": \"194412797,36341\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC193.hic\": \"176408194,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC194.hic\": \"207215649,36055\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC195.hic\": \"175185530,36315\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC196.hic\": \"168969337,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC197.hic\": \"121231252,36339\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC198.hic\": \"92713752,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC199.hic\": \"105130500,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC200.hic\": \"114526350,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC201.hic\": \"122689717,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhap1%2Fin-situ%2Fcombined.hic\": \"9614983328,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fctbp_8_4_17%2Fall_intra_megabase_michrom.hic\": \"154205644,10960\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xa-combined.hic\": \"8843305329,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXa-chrX-diploid.hic\": \"11173520,1498\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-combined.hic\": \"13365182403,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-chrX-diploid.hic\": \"17343459,1498\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC002.hic\": \"4279298739,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC003.hic\": \"3027365532,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC004.hic\": \"2896130835,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC005.hic\": \"4717830071,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC006.hic\": \"5066210154,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC007.hic\": \"3069516128,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xi-combined.hic\": \"14551096423,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXi-chrX-diploid.hic\": \"17362477,1498\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC008.hic\": \"2572386655,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC009.hic\": \"2935931663,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC010.hic\": \"2019085070,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC011.hic\": \"6087610814,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC012.hic\": \"2809618194,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC013.hic\": \"2572386655,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fcombined.hic\": \"6950423609,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fpaternal.hic\": \"220592749,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fmaternal.hic\": \"323233095,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC014.hic\": \"3183235800,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC015.hic\": \"1739539801,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC016.hic\": \"1105912758,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC017.hic\": \"1060773319,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC018.hic\": \"1203679874,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC019.hic\": \"3321955269,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frhesus%2FDarrowHuntley-2015%2FHIC020.hic\": \"7108980626,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fcola%2FDarrowHuntley-2015%2FHIC021.hic\": \"3906448676,34955\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Faedes%2Fcombined.hic\": \"390780490,2245\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Fhs2-hic.hic\": \"1960284186,33561\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2FCpipJ3.hic\": \"766279097,4381\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2Fupdated_O%2FSnyder_O.hic\": \"8046980555,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2FA_inter.hic\": \"10986005145,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2Fcombined.hic\": \"30439217680,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2Fcombined.hic\": \"33255540403,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F20min_withdraw_combined.hic\": \"11078436933,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F40min_withdraw_combined.hic\": \"11031830038,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F60min_withdraw_combined.hic\": \"10312725340,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F180min_withdraw_combined.hic\": \"10038610214,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC001.hic\": \"8004335785,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC002.hic\": \"8453215933,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC003.hic\": \"9118406189,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC004.hic\": \"5973342894,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC005.hic\": \"6846576837,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC006.hic\": \"6075148017,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC007.hic\": \"8192366992,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC008.hic\": \"6844159653,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC009.hic\": \"7282063059,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC010.hic\": \"10410578833,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC011.hic\": \"8192366992,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC012.hic\": \"7223422850,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC013.hic\": \"7435986997,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC014.hic\": \"9120113605,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2Fcombined.hic\": \"4170577904,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC015.hic\": \"1504084990,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC016.hic\": \"1686244500,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC017.hic\": \"1804802410,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC018.hic\": \"1533942067,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2Fcombined.hic\": \"4572390198,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC019.hic\": \"1543609666,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC020.hic\": \"1814133288,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC021.hic\": \"1942698243,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC022.hic\": \"1873587413,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC049.hic\": \"405127557,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC060.hic\": \"326681741,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC061.hic\": \"300908673,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC050.hic\": \"481758242,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC051.hic\": \"417577401,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC052.hic\": \"419353227,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC053.hic\": \"411554953,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC054.hic\": \"386655891,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC055.hic\": \"402170701,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_240min%2FRao-2017-HIC057.hic\": \"735906308,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC058.hic\": \"443789827,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC059.hic\": \"491422615,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC062.hic\": \"320261375,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC063.hic\": \"306590499,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC032S.hic\": \"367051742,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC033S.hic\": \"344555339,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC036S.hic\": \"349392947,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC037S.hic\": \"317714554,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC040S.hic\": \"266786397,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC041S.hic\": \"279445530,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC044S.hic\": \"898418269,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC045S.hic\": \"961006347,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC064.hic\": \"833576408,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC065.hic\": \"840881418,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC066.hic\": \"980958864,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC067.hic\": \"882023129,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC068.hic\": \"1110292630,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC069.hic\": \"1001747023,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FCP190_HiChIP.hic\": \"144107588,6976\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27ac_HiChIP_combined.hic\": \"43171370,5233\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27me3_HiChIP_combined.hic\": \"42906472,5233\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2_ChIAPET.hic\": \"41992430,6976\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2S2_HiChIP.hic\": \"145842743,6976\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FArabidopsis_Wang2015_Liu2016.hic\": \"1134391078,4984\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FElegans_Crane2015.hic\": \"387127568,8758\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FNcrassa_Galazka2016.hic\": \"26555511,27725\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPfalciparum_trophozoite_Ay2014.hic\": \"15640893,13948\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-A.hic\": \"6897251,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-B.hic\": \"4959088,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-A.hic\": \"5232286,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-B.hic\": \"5105292,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-A.hic\": \"6900072,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-B.hic\": \"8653258,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-A.hic\": \"7999058,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-B.hic\": \"8774657,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc.hic\": \"23671753603,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep1.hic\": \"23671754721,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep2.hic\": \"22269909910,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fhffc6_rep1.hic\": \"19016661622,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_NcoI.hic\": \"480725203,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2F302NH.hic\": \"99948617,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FK562.hic\": \"470263605,36151\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_HindIII.hic\": \"293706559,36289\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_rep_HindIII.hic\": \"309673862,36087\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep1.hic\": \"1531151371,56905\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep2.hic\": \"2851437676,56905\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmouse-rep1.hic\": \"582052544,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep1.hic\": \"698509182,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep2.hic\": \"461410393,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep1.hic\": \"691045338,33561\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep2.hic\": \"668888336,33561\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsexton%2Fcombined.hic\": \"50650087,4486\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-hindiii.hic\": \"1071142023,16500\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-mboi.hic\": \"1508851093,16448\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Fnon-tcc-hindiii.hic\": \"395179229,36093\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-combined.hic\": \"1050423847,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-hindiii%2Fsplit-read-run.hic\": \"9599984876,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fhesc-hindiii.hic\": \"1952555632,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fimr90-hindiii.hic\": \"9691260435,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-cortex.hic\": \"3712072953,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr18.hic\": \"2083350075,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr2.hic\": \"3362049644,16360\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr7.hic\": \"1658399854,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr15.hic\": \"866691249,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr2.hic\": \"3304782795,16386\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-1.hic\": \"23673506,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-2.hic\": \"26873280,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-3.hic\": \"31066362,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-4.hic\": \"16807724,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-5.hic\": \"28665065,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-6.hic\": \"13124158,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-7.hic\": \"15118945,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-8.hic\": \"68316814,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-9.hic\": \"18965101,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-10.hic\": \"17020666,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Fcombined.hic\": \"6526601242,36427\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep1.hic\": \"1861562891,36401\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep2.hic\": \"3061013635,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep3.hic\": \"1564588211,35969\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep4.hic\": \"1255543175,36153\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep5.hic\": \"974683253,36179\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep6.hic\": \"1040805629,36053\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Fcombined.hic\": \"8424080116,36401\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep1.hic\": \"2697976702,36295\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep3.hic\": \"1718610467,36159\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep4.hic\": \"2029519405,36101\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep5.hic\": \"985310855,36069\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep6.hic\": \"1418750480,35967\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fmhh-call-4-cell-line.hic\": \"538380253,35351\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fprimary-b-all.hic\": \"773764191,35793\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fnormal-b-cell-line.hic\": \"336271459,35005\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Frl-cell-line.hic\": \"484807998,35351\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-biorep.hic\": \"135932435,8758\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep1.hic\": \"160355961,8758\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep2.hic\": \"188809887,8758\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fpre-prob-egs.hic\": \"2237792858,15483\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-egs.hic\": \"5744720377,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-fa.hic\": \"2174866215,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhct116-rnapii-pilot.hic\": \"396366166,35999\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhela-rnapii-pilot.hic\": \"882516759,35107\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-pilot.hic\": \"1131576189,35969\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-saturated.hic\": \"571583828,36291\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fmcf7-rnapii-saturated.hic\": \"1282547841,36035\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fnb4-rnapii-pilot.hic\": \"761614686,34861\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjung%2Fmouse_sperm.hic\": \"1730231642,29184\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ftang%2Fgm12878.hic\": \"1953518212,20505\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791299.hic\": \"5723484,11956\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791297.hic\": \"16534743,23348\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv.hic\": \"5094525579,36289\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep1.hic\": \"2574358912,36373\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep2.hic\": \"3417099433,36243\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev.hic\": \"4785157552,36323\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep1.hic\": \"2648268465,36321\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep2.hic\": \"2994727980,36107\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf.hic\": \"5391791815,36063\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep1.hic\": \"3325842095,36269\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep2.hic\": \"3096215920,36167\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl.hic\": \"3830902383,36167\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl-rep1.hic\": \"1346712252,36079\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl_rep2.hic\": \"3098067367,36271\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-0h-hiseq.hic\": \"38174042,21889\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq.hic\": \"26506099,21889\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq-non-crosslinked_control.hic\": \"3545496,21889\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-36h-hiseq.hic\": \"70754194,21889\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fg1mid-r1.hic\": \"200863476,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r1.hic\": \"249021190,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r2.hic\": \"212341157,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-0-25fa.hic\": \"583572265,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-1fa.hic\": \"354502306,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-0-25fa.hic\": \"149308791,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-98percent.hic\": \"778175225,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-1fa.hic\": \"158091047,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-ns-r1.hic\": \"801670039,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-m-r1.hic\": \"875922086,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r1.hic\": \"130959943,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r2.hic\": \"237861106,17185\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT.hic\": \"496104039,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT-adv-cre.hic\": \"438608517,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep1.hic\": \"446205712,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep2.hic\": \"386354767,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep1.hic\": \"621998722,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep2.hic\": \"583840829,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep1.hic\": \"801290988,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep2.hic\": \"819406658,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep1.hic\": \"792825269,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep2.hic\": \"746189884,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT.hic\": \"309353372,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT-OHT.hic\": \"274229679,30643\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R1.hic\": \"1490362251,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R3.hic\": \"2403664421,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R1.hic\": \"1377124538,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R3.hic\": \"2646201369,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2Fcrh6-mutant.hic\": \"105261071,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2FWT.hic\": \"127506388,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2FCol.hic\": \"153638500,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn1.hic\": \"211213220,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn4.hic\": \"134236837,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fxie%2Fprimary.hic\": \"92936173,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt337.hic\": \"318737891,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt67.hic\": \"348123956,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt337.hic\": \"251107279,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt67.hic\": \"351840994,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2FCol0.hic\": \"345969497,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fclf28-swn7.hic\": \"299585025,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fcmt3-11.hic\": \"253427706,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fddm1-2.hic\": \"303626924,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fmet1-3.hic\": \"347697973,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fsuvh4-suvh5-suvh6.hic\": \"263122019,10217\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNase-HiC-WG-K562.hic\": \"892955840,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNaseHiC-WG-H1.hic\": \"696922695,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-K562-rep1.hic\": \"341917716,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargeredDNaseHiC-lincRNA-K562-rep2.hic\": \"214841185,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep1.hic\": \"616326137,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep2.hic\": \"579654013,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-H1-rep1.hic\": \"519810544,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-K562-rep1.hic\": \"199553123,18679\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII.hic\": \"1319373594,6976\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_HinfI.hic\": \"1465493873,6976\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII_HinfI_combo.hic\": \"753062558,5814\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-10A.hic\": \"2784956115,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-7.hic\": \"2700457411,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbatullin%2Fsperm.hic\": \"501052169,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep1.hic\": \"1450697530,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep2.hic\": \"1189371558,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Fcombined.hic\": \"2262007875,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Finactive.hic\": \"4444564,751\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Factive.hic\": \"3993495,751\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep1.hic\": \"1650838357,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep2.hic\": \"1258038606,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski.hic\": \"499827296,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_active.hic\": \"79175714,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_inactive.hic\": \"98947881,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_dnase.hic\": \"4298088401,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_in_situ_dnase.hic\": \"609321852,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain.hic\": \"1028196506,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_active.hic\": \"79175714,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_inactive.hic\": \"98947881,15691\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep1.hic\": \"1283306,1463\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep2.hic\": \"1263227,1463\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FNcoI_rep1.hic\": \"4380906,1463\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined.hic\": \"1829549643,25624\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined_randomized.hic\": \"1859742654,25624\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_GM_cohesin.hic\": \"1231264781,17932\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_cohesin_all.hic\": \"1152008628,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_Oct4.hic\": \"912828146,16438\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FSCC4KO.hic\": \"1767906138,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FDKO.hic\": \"1487228787,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_1.14.hic\": \"1189751862,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_3.3.hic\": \"1155057696,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWT.hic\": \"1522401568,18679\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2Fmega_Liverpool%2Fmega.hic\": \"2612171975,4381\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2836_Liverpool1%2FLiverpool1.hic\": \"191729195,2245\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2861_Liverpool2%2FLiverpool2.hic\": \"1637096030,4381\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2862_Liverpool3%2FLiverpool3.hic\": \"1160045602,4381\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC.hic\": \"11857786247,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC_CanyonDel.hic\": \"8139168836,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Ftcell.hic\": \"9871547081,36479\",\n    \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Fep.hic\": \"17479335373,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2FTh1_ensemble.hic\": \"1690592868,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FES_mapq30.hic\": \"32930498831,32386\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FNPC_mapq30.hic\": \"55053730986,32386\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FCN_mapq30.hic\": \"53138031154,32386\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_72_hours_WT.hic\": \"16492991184,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_WT.hic\": \"23057795398,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_MYC_KO.hic\": \"21245554876,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_TSA.hic\": \"13933346059,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_oligomycin.hic\": \"21902506832,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-mES_WT.hic\": \"9451969795,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_WT.hic\": \"3600188564,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_WT.hic\": \"1309503359,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_HU_treated.hic\": \"1477252396,16438\",\n    \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_flavopiridol.hic\": \"15711773490,32102\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FPGP1F_mega_090118%2FPGP1F_mega_090118_30.hic\": \"24786676166,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7145%2FHIC7145_30.hic\": \"4554644616,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7146%2FHIC7146_30.hic\": \"4174848944,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7147%2FHIC7147_30.hic\": \"5062229182,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7862%2FHIC7862_30.hic\": \"4520990620,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7863%2FHIC7863_30.hic\": \"4330354773,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7864%2FHIC7864_30.hic\": \"5880640268,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7865%2FHIC7865_30.hic\": \"4431632469,36479\",\n    \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7866%2FHIC7866_30.hic\": \"4686000222,36479\",\n    \"encode-public.s3.amazonaws.com%2F2018%2F10%2F19%2Fb122542b-306c-4631-bdc3-2e155e89af55%2FENCFF718AWL.hic\": \"39544267907,58932\",\n    \"encode-public.s3.amazonaws.com%2F2019%2F02%2F15%2F8e787cd8-e388-4bc2-a236-7a5e6f39e0c0%2FENCFF999YXX.hic\": \"9255069996,56883\",\n    \"encode-public.s3.amazonaws.com%2F2019%2F02%2F08%2Ffc1d9d5d-8fa0-4e29-9080-3da674d9490d%2FENCFF543USQ.hic\": \"5005263062,36479\",\n    \"s3.us-east-1.wasabisys.com%2Fhicfiles%2Finternal%2FLCL_mega_42B_500bp_30.hic\": \"106482584851,22829\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF925QIF%2F%40%40download%2FENCFF925QIF.hic\": \"51712684396,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF259YUS%2F%40%40download%2FENCFF259YUS.hic\": \"24640030444,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF783KQI%2F%40%40download%2FENCFF783KQI.hic\": \"27209249856,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF318JAP%2F%40%40download%2FENCFF318JAP.hic\": \"28636979242,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF512PQA%2F%40%40download%2FENCFF512PQA.hic\": \"28124104361,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF591MHA%2F%40%40download%2FENCFF591MHA.hic\": \"37373387202,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF197OWW%2F%40%40download%2FENCFF197OWW.hic\": \"41826180893,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF317OIA%2F%40%40download%2FENCFF317OIA.hic\": \"34741636038,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF522YLZ%2F%40%40download%2FENCFF522YLZ.hic\": \"24064692329,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF420JTA%2F%40%40download%2FENCFF420JTA.hic\": \"21202405177,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF871ZDJ%2F%40%40download%2FENCFF871ZDJ.hic\": \"10124815680,18679\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF349RZY%2F%40%40download%2FENCFF349RZY.hic\": \"4446702705,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF738YON%2F%40%40download%2FENCFF738YON.hic\": \"3338049584,35947\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF406KJN%2F%40%40download%2FENCFF406KJN.hic\": \"4132875306,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF081NPN%2F%40%40download%2FENCFF081NPN.hic\": \"34495587443,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF946RZW%2F%40%40download%2FENCFF946RZW.hic\": \"34571955193,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF602CHT%2F%40%40download%2FENCFF602CHT.hic\": \"30674798032,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF150DKS%2F%40%40download%2FENCFF150DKS.hic\": \"12618769864,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF614IPZ%2F%40%40download%2FENCFF614IPZ.hic\": \"42450060331,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF571ZQR%2F%40%40download%2FENCFF571ZQR.hic\": \"15230068871,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF705MKK%2F%40%40download%2FENCFF705MKK.hic\": \"38686554702,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF658KTB%2F%40%40download%2FENCFF658KTB.hic\": \"13195884405,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF435JYN%2F%40%40download%2FENCFF435JYN.hic\": \"17192139674,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF016JKX%2F%40%40download%2FENCFF016JKX.hic\": \"37266736642,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF294GFP%2F%40%40download%2FENCFF294GFP.hic\": \"36389843399,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF700CYI%2F%40%40download%2FENCFF700CYI.hic\": \"60482012152,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF962EDB%2F%40%40download%2FENCFF962EDB.hic\": \"39394328182,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF467OGP%2F%40%40download%2FENCFF467OGP.hic\": \"35572788855,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF556RLR%2F%40%40download%2FENCFF556RLR.hic\": \"34826921187,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF309UNV%2F%40%40download%2FENCFF309UNV.hic\": \"48510618174,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF653HCO%2F%40%40download%2FENCFF653HCO.hic\": \"41079007620,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF120DSV%2F%40%40download%2FENCFF120DSV.hic\": \"12790195576,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF284OEA%2F%40%40download%2FENCFF284OEA.hic\": \"46007570339,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF035BLF%2F%40%40download%2FENCFF035BLF.hic\": \"63868871985,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF094KKX%2F%40%40download%2FENCFF094KKX.hic\": \"42151419971,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF965BPU%2F%40%40download%2FENCFF965BPU.hic\": \"42717376107,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF842DUO%2F%40%40download%2FENCFF842DUO.hic\": \"39553892515,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF417GBZ%2F%40%40download%2FENCFF417GBZ.hic\": \"45544785452,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF499BVX%2F%40%40download%2FENCFF499BVX.hic\": \"40900674170,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF136XCV%2F%40%40download%2FENCFF136XCV.hic\": \"47700392974,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF224HKR%2F%40%40download%2FENCFF224HKR.hic\": \"40426005932,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF711XSR%2F%40%40download%2FENCFF711XSR.hic\": \"41434581949,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF660JWA%2F%40%40download%2FENCFF660JWA.hic\": \"54201632697,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF081PMO%2F%40%40download%2FENCFF081PMO.hic\": \"53428285130,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF799QGA%2F%40%40download%2FENCFF799QGA.hic\": \"1228682189,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF473CAA%2F%40%40download%2FENCFF473CAA.hic\": \"1077514950,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF663FRL%2F%40%40download%2FENCFF663FRL.hic\": \"39843938245,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF341WOY%2F%40%40download%2FENCFF341WOY.hic\": \"34792598619,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF515ZBF%2F%40%40download%2FENCFF515ZBF.hic\": \"41779230923,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF545GBW%2F%40%40download%2FENCFF545GBW.hic\": \"38351980358,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF252ANV%2F%40%40download%2FENCFF252ANV.hic\": \"37668839771,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF912NDK%2F%40%40download%2FENCFF912NDK.hic\": \"21196851956,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF683PLM%2F%40%40download%2FENCFF683PLM.hic\": \"21849338763,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF355NFJ%2F%40%40download%2FENCFF355NFJ.hic\": \"47880627268,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF507WEW%2F%40%40download%2FENCFF507WEW.hic\": \"35777782924,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF241MSL%2F%40%40download%2FENCFF241MSL.hic\": \"22507408288,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF135MUT%2F%40%40download%2FENCFF135MUT.hic\": \"24168734040,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF459FRB%2F%40%40download%2FENCFF459FRB.hic\": \"37166770103,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF705YZH%2F%40%40download%2FENCFF705YZH.hic\": \"44679182442,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF395INO%2F%40%40download%2FENCFF395INO.hic\": \"56727346538,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF736ITL%2F%40%40download%2FENCFF736ITL.hic\": \"49036286185,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF546TZN%2F%40%40download%2FENCFF546TZN.hic\": \"33195126348,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF706SFK%2F%40%40download%2FENCFF706SFK.hic\": \"3271831702,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF922ERE%2F%40%40download%2FENCFF922ERE.hic\": \"12476647122,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF876OWE%2F%40%40download%2FENCFF876OWE.hic\": \"1538692704,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF227XJZ%2F%40%40download%2FENCFF227XJZ.hic\": \"1925617685,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF053BXY%2F%40%40download%2FENCFF053BXY.hic\": \"1032237652,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF014VMM%2F%40%40download%2FENCFF014VMM.hic\": \"1564021703,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF563XES%2F%40%40download%2FENCFF563XES.hic\": \"1489180508,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF482LGO%2F%40%40download%2FENCFF482LGO.hic\": \"1208778887,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF216QQM%2F%40%40download%2FENCFF216QQM.hic\": \"6293163571,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF256UOW%2F%40%40download%2FENCFF256UOW.hic\": \"6293163571,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF791UZC%2F%40%40download%2FENCFF791UZC.hic\": \"37029615181,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF911AHQ%2F%40%40download%2FENCFF911AHQ.hic\": \"34246649165,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF491AOR%2F%40%40download%2FENCFF491AOR.hic\": \"558663570,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF307PDL%2F%40%40download%2FENCFF307PDL.hic\": \"525321519,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF773ITV%2F%40%40download%2FENCFF773ITV.hic\": \"295464771,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF198SSL%2F%40%40download%2FENCFF198SSL.hic\": \"500142476,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF251UEF%2F%40%40download%2FENCFF251UEF.hic\": \"567443575,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF942LTN%2F%40%40download%2FENCFF942LTN.hic\": \"4430960222,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF543USQ%2F%40%40download%2FENCFF543USQ.hic\": \"5005263062,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF434XQU%2F%40%40download%2FENCFF434XQU.hic\": \"25506511674,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF318GOM%2F%40%40download%2FENCFF318GOM.hic\": \"44750824314,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF004TKY%2F%40%40download%2FENCFF004TKY.hic\": \"20705661833,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF493YNC%2F%40%40download%2FENCFF493YNC.hic\": \"53407154984,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF334XXU%2F%40%40download%2FENCFF334XXU.hic\": \"14341194962,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF569RJM%2F%40%40download%2FENCFF569RJM.hic\": \"1922066634,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF076LWH%2F%40%40download%2FENCFF076LWH.hic\": \"39406255845,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF977XWK%2F%40%40download%2FENCFF977XWK.hic\": \"20563512962,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF127TPS%2F%40%40download%2FENCFF127TPS.hic\": \"21032070512,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF480KLP%2F%40%40download%2FENCFF480KLP.hic\": \"33115569647,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF281ILS%2F%40%40download%2FENCFF281ILS.hic\": \"28236353584,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF129LMU%2F%40%40download%2FENCFF129LMU.hic\": \"35247096013,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF759YCW%2F%40%40download%2FENCFF759YCW.hic\": \"16058537743,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF045YOM%2F%40%40download%2FENCFF045YOM.hic\": \"19775445828,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF013TGD%2F%40%40download%2FENCFF013TGD.hic\": \"4208420532,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF929RPW%2F%40%40download%2FENCFF929RPW.hic\": \"1974260276,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF996XEO%2F%40%40download%2FENCFF996XEO.hic\": \"2072918865,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF097SKJ%2F%40%40download%2FENCFF097SKJ.hic\": \"1983524001,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF464KRA%2F%40%40download%2FENCFF464KRA.hic\": \"1957300131,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF406HHC%2F%40%40download%2FENCFF406HHC.hic\": \"3854527235,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF080DPJ%2F%40%40download%2FENCFF080DPJ.hic\": \"19953768024,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF621AIY%2F%40%40download%2FENCFF621AIY.hic\": \"26781700010,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF366ERB%2F%40%40download%2FENCFF366ERB.hic\": \"1049184239,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF997RGL%2F%40%40download%2FENCFF997RGL.hic\": \"2521167549,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF029MPB%2F%40%40download%2FENCFF029MPB.hic\": \"1854711185,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF043EEE%2F%40%40download%2FENCFF043EEE.hic\": \"2924133032,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF920CJR%2F%40%40download%2FENCFF920CJR.hic\": \"3011577886,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF928NJV%2F%40%40download%2FENCFF928NJV.hic\": \"2778936244,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF894GLR%2F%40%40download%2FENCFF894GLR.hic\": \"2831733099,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF303PCK%2F%40%40download%2FENCFF303PCK.hic\": \"688704435,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF999YXX%2F%40%40download%2FENCFF999YXX.hic\": \"9255069996,56883\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF685BLG%2F%40%40download%2FENCFF685BLG.hic\": \"16797022992,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF188SSH%2F%40%40download%2FENCFF188SSH.hic\": \"16797023050,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF465ESX%2F%40%40download%2FENCFF465ESX.hic\": \"13489465953,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF493SFI%2F%40%40download%2FENCFF493SFI.hic\": \"30033046818,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF235LCO%2F%40%40download%2FENCFF235LCO.hic\": \"38572174589,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF625VNK%2F%40%40download%2FENCFF625VNK.hic\": \"45202258438,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF304HMS%2F%40%40download%2FENCFF304HMS.hic\": \"36994445315,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF605CEN%2F%40%40download%2FENCFF605CEN.hic\": \"40358346301,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF086ORS%2F%40%40download%2FENCFF086ORS.hic\": \"22650781304,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF237UKR%2F%40%40download%2FENCFF237UKR.hic\": \"41516707246,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF004YZQ%2F%40%40download%2FENCFF004YZQ.hic\": \"71900665326,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF104THR%2F%40%40download%2FENCFF104THR.hic\": \"15172410632,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF807IRK%2F%40%40download%2FENCFF807IRK.hic\": \"17346637451,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF193CQL%2F%40%40download%2FENCFF193CQL.hic\": \"55726903245,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF700DEX%2F%40%40download%2FENCFF700DEX.hic\": \"20231399798,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF234MDO%2F%40%40download%2FENCFF234MDO.hic\": \"24635312640,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF181ROW%2F%40%40download%2FENCFF181ROW.hic\": \"26883606497,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF896OFN%2F%40%40download%2FENCFF896OFN.hic\": \"36952196833,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF573OPJ%2F%40%40download%2FENCFF573OPJ.hic\": \"36685546919,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF028RXH%2F%40%40download%2FENCFF028RXH.hic\": \"31053919206,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF156GGD%2F%40%40download%2FENCFF156GGD.hic\": \"35284134289,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF496GEU%2F%40%40download%2FENCFF496GEU.hic\": \"44659660933,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF945TUH%2F%40%40download%2FENCFF945TUH.hic\": \"3898570191,35639\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF698KFV%2F%40%40download%2FENCFF698KFV.hic\": \"4427896684,35751\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF239BHZ%2F%40%40download%2FENCFF239BHZ.hic\": \"1718552021,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF277LAN%2F%40%40download%2FENCFF277LAN.hic\": \"4542391336,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF397CMD%2F%40%40download%2FENCFF397CMD.hic\": \"2832016430,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF778OYA%2F%40%40download%2FENCFF778OYA.hic\": \"14067187484,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF775VSU%2F%40%40download%2FENCFF775VSU.hic\": \"14067187484,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF812THZ%2F%40%40download%2FENCFF812THZ.hic\": \"9667720429,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF777KBU%2F%40%40download%2FENCFF777KBU.hic\": \"5058284320,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF688KOY%2F%40%40download%2FENCFF688KOY.hic\": \"4198695833,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF223UBX%2F%40%40download%2FENCFF223UBX.hic\": \"1206064037,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF273XBU%2F%40%40download%2FENCFF273XBU.hic\": \"44085607579,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF952JZV%2F%40%40download%2FENCFF952JZV.hic\": \"44728845246,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF643NDM%2F%40%40download%2FENCFF643NDM.hic\": \"35877886780,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF586MQY%2F%40%40download%2FENCFF586MQY.hic\": \"71158037547,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF251VFA%2F%40%40download%2FENCFF251VFA.hic\": \"40089479399,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF033WGK%2F%40%40download%2FENCFF033WGK.hic\": \"30802023728,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF649OHR%2F%40%40download%2FENCFF649OHR.hic\": \"28203184265,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF782WVZ%2F%40%40download%2FENCFF782WVZ.hic\": \"37248221674,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF579CAR%2F%40%40download%2FENCFF579CAR.hic\": \"39662025395,54779\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF514XWQ%2F%40%40download%2FENCFF514XWQ.hic\": \"1319613701,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF666USK%2F%40%40download%2FENCFF666USK.hic\": \"15051670107,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF047SDP%2F%40%40download%2FENCFF047SDP.hic\": \"1357076705,16438\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF584LEP%2F%40%40download%2FENCFF584LEP.hic\": \"9314176858,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF671SOE%2F%40%40download%2FENCFF671SOE.hic\": \"3273732256,16438\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF702LAP%2F%40%40download%2FENCFF702LAP.hic\": \"1800427500,31682\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF339PON%2F%40%40download%2FENCFF339PON.hic\": \"5394351199,31514\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF741QPR%2F%40%40download%2FENCFF741QPR.hic\": \"4271510019,30139\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF103ANX%2F%40%40download%2FENCFF103ANX.hic\": \"4439745804,30083\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF395SBC%2F%40%40download%2FENCFF395SBC.hic\": \"1596732351,31850\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF289WNN%2F%40%40download%2FENCFF289WNN.hic\": \"8632980535,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF381EAU%2F%40%40download%2FENCFF381EAU.hic\": \"1702476311,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF976FEY%2F%40%40download%2FENCFF976FEY.hic\": \"1448279040,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF485LVS%2F%40%40download%2FENCFF485LVS.hic\": \"1593610856,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF143VJV%2F%40%40download%2FENCFF143VJV.hic\": \"1422312076,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF588NHX%2F%40%40download%2FENCFF588NHX.hic\": \"3943637009,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF768UBD%2F%40%40download%2FENCFF768UBD.hic\": \"24786676166,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF965PEE%2F%40%40download%2FENCFF965PEE.hic\": \"29387092778,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF702IFC%2F%40%40download%2FENCFF702IFC.hic\": \"29387092778,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF288DNV%2F%40%40download%2FENCFF288DNV.hic\": \"10313429504,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF698HWZ%2F%40%40download%2FENCFF698HWZ.hic\": \"10962849269,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF355OWW%2F%40%40download%2FENCFF355OWW.hic\": \"3219571601,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF177TYX%2F%40%40download%2FENCFF177TYX.hic\": \"10325679706,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF542BHD%2F%40%40download%2FENCFF542BHD.hic\": \"11085397879,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF684IFW%2F%40%40download%2FENCFF684IFW.hic\": \"11085397879,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF592UHE%2F%40%40download%2FENCFF592UHE.hic\": \"21363948089,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF779XIS%2F%40%40download%2FENCFF779XIS.hic\": \"9517383271,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF518PSL%2F%40%40download%2FENCFF518PSL.hic\": \"7500581463,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF275GBB%2F%40%40download%2FENCFF275GBB.hic\": \"7889407162,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF634KXI%2F%40%40download%2FENCFF634KXI.hic\": \"6430702966,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF337QPM%2F%40%40download%2FENCFF337QPM.hic\": \"8529733887,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF162KMP%2F%40%40download%2FENCFF162KMP.hic\": \"5615896908,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF992VTE%2F%40%40download%2FENCFF992VTE.hic\": \"7328975027,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF464WXY%2F%40%40download%2FENCFF464WXY.hic\": \"5715339664,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF752EGH%2F%40%40download%2FENCFF752EGH.hic\": \"1733758743,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF474UJM%2F%40%40download%2FENCFF474UJM.hic\": \"222309548,18679\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF531UPZ%2F%40%40download%2FENCFF531UPZ.hic\": \"1827756846,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF022VHA%2F%40%40download%2FENCFF022VHA.hic\": \"244983451,18679\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF732NGR%2F%40%40download%2FENCFF732NGR.hic\": \"1679484567,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF513VSF%2F%40%40download%2FENCFF513VSF.hic\": \"28397932940,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF750AOC%2F%40%40download%2FENCFF750AOC.hic\": \"36471430712,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF219YOB%2F%40%40download%2FENCFF219YOB.hic\": \"2859767211,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF604YDD%2F%40%40download%2FENCFF604YDD.hic\": \"3549694085,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF746AMV%2F%40%40download%2FENCFF746AMV.hic\": \"2954867135,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF845ZEB%2F%40%40download%2FENCFF845ZEB.hic\": \"2763039282,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF570LWS%2F%40%40download%2FENCFF570LWS.hic\": \"2861588289,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF883YVR%2F%40%40download%2FENCFF883YVR.hic\": \"2433679887,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF056VLK%2F%40%40download%2FENCFF056VLK.hic\": \"2502986910,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF532DUQ%2F%40%40download%2FENCFF532DUQ.hic\": \"3172615899,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF723PYJ%2F%40%40download%2FENCFF723PYJ.hic\": \"10292839095,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF991SGJ%2F%40%40download%2FENCFF991SGJ.hic\": \"13072407683,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF885UZI%2F%40%40download%2FENCFF885UZI.hic\": \"1201881201,16438\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF287KXA%2F%40%40download%2FENCFF287KXA.hic\": \"14705801988,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF335HYI%2F%40%40download%2FENCFF335HYI.hic\": \"20366756545,32102\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF121YPY%2F%40%40download%2FENCFF121YPY.hic\": \"2760104016,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF675SJE%2F%40%40download%2FENCFF675SJE.hic\": \"3751779995,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF876LAW%2F%40%40download%2FENCFF876LAW.hic\": \"4032376256,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF740KVX%2F%40%40download%2FENCFF740KVX.hic\": \"3202490322,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF977OQV%2F%40%40download%2FENCFF977OQV.hic\": \"2919735477,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF525EFN%2F%40%40download%2FENCFF525EFN.hic\": \"2394748073,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF690QRC%2F%40%40download%2FENCFF690QRC.hic\": \"3183023394,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF452FWS%2F%40%40download%2FENCFF452FWS.hic\": \"2951805127,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF089KBG%2F%40%40download%2FENCFF089KBG.hic\": \"2531936700,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF939ARM%2F%40%40download%2FENCFF939ARM.hic\": \"3066385212,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF401ZAN%2F%40%40download%2FENCFF401ZAN.hic\": \"3008677144,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF378RZT%2F%40%40download%2FENCFF378RZT.hic\": \"2830232168,26979\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF304AVD%2F%40%40download%2FENCFF304AVD.hic\": \"6164439305,50358\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF453DBX%2F%40%40download%2FENCFF453DBX.hic\": \"6775246670,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF590VOM%2F%40%40download%2FENCFF590VOM.hic\": \"6443478922,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF246DOF%2F%40%40download%2FENCFF246DOF.hic\": \"6837914659,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF125FXX%2F%40%40download%2FENCFF125FXX.hic\": \"9736232550,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF241RAY%2F%40%40download%2FENCFF241RAY.hic\": \"7686758397,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF415XWQ%2F%40%40download%2FENCFF415XWQ.hic\": \"6973092068,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF374EBH%2F%40%40download%2FENCFF374EBH.hic\": \"8557459058,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF263YWR%2F%40%40download%2FENCFF263YWR.hic\": \"331586820,18679\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF280CGS%2F%40%40download%2FENCFF280CGS.hic\": \"1743569614,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF553ZNS%2F%40%40download%2FENCFF553ZNS.hic\": \"1717253636,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF451VOI%2F%40%40download%2FENCFF451VOI.hic\": \"1626927468,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF420MQO%2F%40%40download%2FENCFF420MQO.hic\": \"31055961677,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF301BWY%2F%40%40download%2FENCFF301BWY.hic\": \"38902429246,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF606XNW%2F%40%40download%2FENCFF606XNW.hic\": \"1009699327,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF439ZOU%2F%40%40download%2FENCFF439ZOU.hic\": \"12381714313,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF499SYK%2F%40%40download%2FENCFF499SYK.hic\": \"13182654663,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF532LFI%2F%40%40download%2FENCFF532LFI.hic\": \"8286030286,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF020DPP%2F%40%40download%2FENCFF020DPP.hic\": \"23521952420,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF306VTV%2F%40%40download%2FENCFF306VTV.hic\": \"23521952480,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF399IHE%2F%40%40download%2FENCFF399IHE.hic\": \"10216571232,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF944AII%2F%40%40download%2FENCFF944AII.hic\": \"12567308552,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF230HVV%2F%40%40download%2FENCFF230HVV.hic\": \"8629849711,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF174LAF%2F%40%40download%2FENCFF174LAF.hic\": \"9446506633,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF898HRO%2F%40%40download%2FENCFF898HRO.hic\": \"9446506633,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF429MOR%2F%40%40download%2FENCFF429MOR.hic\": \"1455757398,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF061NXV%2F%40%40download%2FENCFF061NXV.hic\": \"1710915891,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF434PYS%2F%40%40download%2FENCFF434PYS.hic\": \"1832274903,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF704HHX%2F%40%40download%2FENCFF704HHX.hic\": \"1768142834,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF349DPM%2F%40%40download%2FENCFF349DPM.hic\": \"4316041260,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF718AWL%2F%40%40download%2FENCFF718AWL.hic\": \"39544267907,58932\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF065LSP%2F%40%40download%2FENCFF065LSP.hic\": \"24929805283,55874\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF632MFV%2F%40%40download%2FENCFF632MFV.hic\": \"22333105467,55798\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF179HVU%2F%40%40download%2FENCFF179HVU.hic\": \"2659219603,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF791SPZ%2F%40%40download%2FENCFF791SPZ.hic\": \"2537491657,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF211ZWF%2F%40%40download%2FENCFF211ZWF.hic\": \"3512141227,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF614BNU%2F%40%40download%2FENCFF614BNU.hic\": \"5252155462,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF891DLM%2F%40%40download%2FENCFF891DLM.hic\": \"2549095612,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF056EXT%2F%40%40download%2FENCFF056EXT.hic\": \"2219014704,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF776DSS%2F%40%40download%2FENCFF776DSS.hic\": \"3920308353,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF814LQF%2F%40%40download%2FENCFF814LQF.hic\": \"1349480197,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF513ZNA%2F%40%40download%2FENCFF513ZNA.hic\": \"2638868195,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF692IOL%2F%40%40download%2FENCFF692IOL.hic\": \"3106768498,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF294WZY%2F%40%40download%2FENCFF294WZY.hic\": \"2211089761,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF339UWS%2F%40%40download%2FENCFF339UWS.hic\": \"2142759055,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF835FSK%2F%40%40download%2FENCFF835FSK.hic\": \"3919821739,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF328BMB%2F%40%40download%2FENCFF328BMB.hic\": \"2550686152,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF897RTY%2F%40%40download%2FENCFF897RTY.hic\": \"1323294397,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF306MWH%2F%40%40download%2FENCFF306MWH.hic\": \"1665386199,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF039YUJ%2F%40%40download%2FENCFF039YUJ.hic\": \"2335679939,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF468QIN%2F%40%40download%2FENCFF468QIN.hic\": \"3352516594,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF364WXU%2F%40%40download%2FENCFF364WXU.hic\": \"3959043175,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF373MSH%2F%40%40download%2FENCFF373MSH.hic\": \"4429550624,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF959EGQ%2F%40%40download%2FENCFF959EGQ.hic\": \"2475218228,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF624XMK%2F%40%40download%2FENCFF624XMK.hic\": \"3527855681,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF445OKS%2F%40%40download%2FENCFF445OKS.hic\": \"3369125589,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF239QDV%2F%40%40download%2FENCFF239QDV.hic\": \"1960069888,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF645AVM%2F%40%40download%2FENCFF645AVM.hic\": \"4969006589,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF494IPI%2F%40%40download%2FENCFF494IPI.hic\": \"1565483792,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF753IXE%2F%40%40download%2FENCFF753IXE.hic\": \"2892400648,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF731GXX%2F%40%40download%2FENCFF731GXX.hic\": \"5131381303,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF369CAQ%2F%40%40download%2FENCFF369CAQ.hic\": \"4236629448,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF053VBX%2F%40%40download%2FENCFF053VBX.hic\": \"54305946375,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF555ISR%2F%40%40download%2FENCFF555ISR.hic\": \"54305946434,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF964RSP%2F%40%40download%2FENCFF964RSP.hic\": \"12065485229,36479\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF234MZQ%2F%40%40download%2FENCFF234MZQ.hic\": \"17507142760,47429\",\n    \"www.encodeproject.org%2Ffiles%2FENCFF994CEG%2F%40%40download%2FENCFF994CEG.hic\": \"17507142760,47429\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb068e787-bbdd-49e2-9f6d-7a0e9f065d6e%2F4DNFIHSUIRFY.hic\": \"2701182442,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3768b89a-e124-40eb-8acd-94a4fdd35807%2F4DNFIXTAS6EE.hic\": \"3283740601,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9c513602-5abb-4088-8415-c827c381ab0d%2F4DNFIC3JD6O2.hic\": \"4896075767,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde954dad-1849-4c23-beb4-bf893b7d76c9%2F4DNFIGY85S4W.hic\": \"3364151996,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe1befa6e-8067-4296-8db2-67d2a2458985%2F4DNFI2LTNXME.hic\": \"3699291418,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbb3307fd-7162-477a-87c5-52f12d03befc%2F4DNFID162B9J.hic\": \"3576428773,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8597cdae-8319-42d9-9175-3f77aaee34e1%2F4DNFIQWS3632.hic\": \"4022561190,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F327f091d-6a63-47c4-9752-2dff303a13d9%2F4DNFI6GFHB6G.hic\": \"4239331168,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd70dc3b8-48a7-42c2-bd23-80bc44fc2266%2F4DNFIS5F6EBL.hic\": \"4404671861,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77df7bf8-6a3d-407a-8968-4ca1e78d2269%2F4DNFIF2D3TL9.hic\": \"4793989394,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8f7cc35-d2ef-4717-9009-c02154050fbf%2F4DNFI6EIFUZI.hic\": \"3370273763,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F98449d79-30d1-4e32-801d-07435819a42f%2F4DNFIRKGMZRQ.hic\": \"4669813207,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd4fe1844-2493-4722-8b98-34a93a4bb7d8%2F4DNFIQWD8ZYD.hic\": \"5379889057,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1ee40499-1de4-47ff-b540-d9a65943c6b8%2F4DNFIX7H3CE2.hic\": \"4857679239,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac016170-23a7-4111-8773-353d6c150f34%2F4DNFIO21YDCV.hic\": \"4695989644,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1faea4e7-9a32-466e-a826-0bfdab6cd915%2F4DNFIUE5RAS6.hic\": \"4788044799,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcbd396ed-11bb-404f-aed9-ef10abc258e6%2F4DNFIFI6NIKJ.hic\": \"2069414927,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3f78db-ae92-4215-bcae-76d30c617e5d%2F4DNFIL5K3MA1.hic\": \"2585598247,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66fc2893-224e-48b4-bdb0-25e022dedd03%2F4DNFIPV5KFMK.hic\": \"2060965679,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2b39781d-aadc-434f-abe3-562d61308fdd%2F4DNFIW8TIFI5.hic\": \"1694424195,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6d28f7b-27d3-486f-b5ac-32567416560d%2F4DNFIA6NSSBJ.hic\": \"2219532611,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F08785616-722e-46bb-ade2-2fdd21324e11%2F4DNFIBKZK63V.hic\": \"2429136232,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F904b13d3-1203-42a4-812c-963e80c159b1%2F4DNFI3CFMRID.hic\": \"1233390166,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0ed4afe-5ecf-451d-bb1f-444697e3f558%2F4DNFIYIAUEPW.hic\": \"1753567534,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4bb9a9b3-12a8-4d2f-8071-4722294c88ea%2F4DNFIC3HAU11.hic\": \"2271375254,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5abf9c36-c1d1-44dc-8197-74d860d896c0%2F4DNFIM2BMJ33.hic\": \"1770471113,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa68475db-7816-4cec-b2da-d4ce4a0c7a0e%2F4DNFIBY3UHJB.hic\": \"2095528423,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07c40943-0d0b-4b3e-94a0-8583b0e00b47%2F4DNFIWZEN3FF.hic\": \"1558559508,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8a39553-2718-4866-9b2a-45d8e9c5ac6f%2F4DNFIE5TEYK7.hic\": \"1323063102,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294b61ef-5565-4f04-ade9-f921a6686cce%2F4DNFI7H4II2V.hic\": \"1436947982,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a70ad7-7d34-4302-9c03-eb824bd4e633%2F4DNFIAS8LV1C.hic\": \"1263105698,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9db804c6-5a91-4cf5-8ae9-e054223afb77%2F4DNFIBXWIH8J.hic\": \"1587059951,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd1e55906-ec8f-444b-8ce1-2de22a431a76%2F4DNFIO2HBDAI.hic\": \"1666436393,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a4b9b37-8e38-470c-8190-fd4d513c0bbb%2F4DNFIXWCLD4M.hic\": \"1513511880,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7615b2-5310-4bbf-a605-98761d3a3079%2F4DNFINASC4NQ.hic\": \"1420358914,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F20454014-49cd-4e2d-93da-f40ad52776d5%2F4DNFIZF1KI43.hic\": \"1377041630,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5df04e86-ee2a-45f2-b878-bf1648e2cca5%2F4DNFIQBHR9XC.hic\": \"1179502734,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1cc910-bb3f-4106-802a-73184c58d5ba%2F4DNFIQVMVRP6.hic\": \"1811976991,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe431986b-0732-460f-92ff-0abd1694d2d0%2F4DNFIJ7OAIFQ.hic\": \"1685503856,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56d0c575-4962-4ea3-92c3-55bd0e17c096%2F4DNFIE8E4ANZ.hic\": \"1598369564,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb1502fb-a989-4ef9-b800-7eaa7be172ae%2F4DNFIOUSETUP.hic\": \"1493294709,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Facc2f1c3-8c96-4d21-814a-3a8ba81e7741%2F4DNFIVJ3IIQL.hic\": \"1472376655,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F037fb4c3-8641-4953-a977-cc71f2137582%2F4DNFIHN2QSMX.hic\": \"1179632606,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16d2c3c0-6d29-4815-b074-b142af90b615%2F4DNFIILDWK8M.hic\": \"2280059989,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31789849-e4db-45d8-9730-66a048c02d8a%2F4DNFI6XD6JAQ.hic\": \"2253961696,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fff04947e-e6e8-4d62-8374-ef2ee4104809%2F4DNFIALNLR78.hic\": \"1914687914,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F53e6c1e7-9410-4158-84e6-57c2e683b095%2F4DNFIBT4EAKN.hic\": \"2296378356,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0127900a-258f-4815-97d2-6fd2b043d853%2F4DNFIDJ2JZ7Q.hic\": \"2558945393,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F89f95693-3d28-44eb-9d45-14932f8e258c%2F4DNFI8JFOAJT.hic\": \"1726440253,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd803d818-b0d4-4796-8d61-a9f3943f3b10%2F4DNFIRZA6EV6.hic\": \"1805017504,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff9165fb1-0782-4757-a740-5b929e0252bb%2F4DNFIB7QTIMH.hic\": \"2541020707,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8d916b2-b58e-4cdf-894c-ffcb3bf6ebd9%2F4DNFIJ5DQZVK.hic\": \"2445734043,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14066a5b-e01a-43c2-a468-b18826174df3%2F4DNFISTWNV9C.hic\": \"2499319890,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd0692151-7f9a-4475-b059-f8802616dded%2F4DNFIBN9K4V9.hic\": \"1591570769,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70a7ef36-a514-4e45-918f-47c4e9e30ef4%2F4DNFIR8OU6QJ.hic\": \"1689882108,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F180306cd-8593-413a-ae83-24f19209c5d2%2F4DNFIDSWKFF5.hic\": \"1596696630,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e7b9be7-f465-4434-8e9c-68d1e44a76af%2F4DNFIV239W4L.hic\": \"2345867406,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F55df948c-941d-4930-854c-6a07557a0c1d%2F4DNFIREVU1Z5.hic\": \"2254683002,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f590cb7-df3a-498f-81c3-d5ed4179b8ad%2F4DNFIFHU75I5.hic\": \"2497670883,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8f064770-6008-4f74-bfca-268d4a22d745%2F4DNFIMROE6N4.hic\": \"9850583704,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa93d0588-76b7-4ccf-933c-4325876b0a53%2F4DNFI5SUHCGZ.hic\": \"10364705187,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f5f0d6b-0b22-4936-93c9-0944d49c037b%2F4DNFII84FBKM.hic\": \"8836986129,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12e90fc5-0b76-4e42-b346-58d267f9ad6e%2F4DNFI2J1ODWB.hic\": \"13410858286,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2702a45-3e8b-4980-bcd5-6bb0e291614f%2F4DNFIJWBWE41.hic\": \"20515676755,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa0859349-5f06-4ad3-b56f-b1166b34a9eb%2F4DNFIIMZB6Y9.hic\": \"15350325963,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12685c57-d54a-46fa-9efb-acf34ed77574%2F4DNFICJECID5.hic\": \"1525002266,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd101a58e-89aa-44fd-96c5-6bf1e2476272%2F4DNFIR6UW2QA.hic\": \"1264999913,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8c73bf-1335-4af4-b124-e3622d48c5f6%2F4DNFIGOEKBUZ.hic\": \"1905947578,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcd2477cf-6ed0-4d7b-b4e9-88fb38b0df48%2F4DNFIMDNAEW4.hic\": \"996444147,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0f03953e-29da-4f2e-8c05-572d0edf4525%2F4DNFI5OSZ3JC.hic\": \"369361754,22829\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F29d95dbb-005a-4ae1-8b9c-0fec9ec0bbd0%2F4DNFI7KOUGFM.hic\": \"1227434049,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa441ab7b-afbe-437d-bf98-b6b916558642%2F4DNFIGKX4A32.hic\": \"883933242,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F941b2f94-2fff-4d3c-aceb-fee4a5ae41a9%2F4DNFI1ORHOTA.hic\": \"1140970677,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8720ede9-093f-4c00-912f-373283260a16%2F4DNFIWSVLZED.hic\": \"458091151,26979\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9e17155-2b62-4a68-afb2-31dfa674e169%2F4DNFI6H926RO.hic\": \"3552863515,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F22f22778-987a-4dc0-97bc-f26eae0156d9%2F4DNFIKTYSPOF.hic\": \"2939475400,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40f40192-0acb-44cb-8778-8d21afe593fb%2F4DNFIZ4S52BV.hic\": \"3067438113,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8767374-7018-4e11-9226-bf5612d39ebb%2F4DNFI3APMXHF.hic\": \"3258874744,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c5140ec-a65a-4186-8c59-2927233eecaa%2F4DNFIQLIKDSD.hic\": \"2746398416,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8cdedda6-d7d8-4231-a85b-d56fcd962366%2F4DNFIKYXMF1E.hic\": \"14442148774,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa4d4497-7c6c-4dad-8040-be13ba07ea32%2F4DNFI9815EEJ.hic\": \"17960817603,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9b7b95f-190b-49fe-8047-ef4a8fc59746%2F4DNFIQ2687RT.hic\": \"15954277087,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F59863d3a-8d7c-49c7-9a41-7f2a58ad24d1%2F4DNFIYDBBSE3.hic\": \"16499534862,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e80ca41-b3e0-4f4f-a05e-8f95fe96d938%2F4DNFIMOCN1YS.hic\": \"863725312,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F96f97a01-0020-4f09-93e8-fc8a9fd07218%2F4DNFI6558CM8.hic\": \"1597967345,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fce9e9334-ee0b-4549-a845-110470ba5986%2F4DNFIQZRKS7Y.hic\": \"907626411,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaac8209-1015-48da-9e31-2e252dfd8fe0%2F4DNFIX4DLXSE.hic\": \"1369766288,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F268b7d52-9655-474c-9467-8ba31bb2195c%2F4DNFII3JV8I1.hic\": \"856656441,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9681f9b5-335a-4f56-afa1-15b58bbb41e8%2F4DNFI5IAH9H1.hic\": \"1495185175,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e082eab-95aa-4677-88ed-9d7adcc1effb%2F4DNFIK5HY1GP.hic\": \"2135337789,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31af1ead-4520-4669-957e-424b4b197c33%2F4DNFIFA89L5B.hic\": \"1975593640,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcc2b78fd-52d4-4e0c-ac93-b84ee82daf7e%2F4DNFICXCFGEI.hic\": \"2628202920,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff54efece-280f-46ca-95e3-1f8a3cd18820%2F4DNFIK4CECUH.hic\": \"1901129375,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1181c0c4-afb7-4b6a-9fdc-d868fb2253fc%2F4DNFI1EYIGOC.hic\": \"1947135384,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1d3e2905-b9b9-4b91-bcb4-8d34746e78f6%2F4DNFI7TLEWUI.hic\": \"1185758726,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faba3d42f-39cd-4a85-9d3f-835aefb5c803%2F4DNFIVCJKHMN.hic\": \"687240974,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F27f54fcb-54fe-41a4-b25a-2f8944c89044%2F4DNFIN8F14CS.hic\": \"1304082029,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb75fedb5-88f4-4bc0-8e38-298df7847a7f%2F4DNFI5LCW273.hic\": \"12497258313,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f22b2a0-3712-496e-92d2-63775ec0e421%2F4DNFIVSCH2CH.hic\": \"12594733778,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07e47261-5863-44f5-9198-76e263081bea%2F4DNFIZ268JGC.hic\": \"1499059135,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F682b1ae1-3ac3-40e4-a330-c49f63946952%2F4DNFIJ1P4HBI.hic\": \"1190211725,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F197e7c89-ea73-41de-8cb2-8c0b1e3bb945%2F4DNFITEGKBIW.hic\": \"2061501971,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F191f6928-c9a8-44b2-8516-ee4d6005f24b%2F4DNFIE1P6RVH.hic\": \"1711447310,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F94435086-3701-4b28-a6d0-4a59b24d7615%2F4DNFICJ6I4DO.hic\": \"1557899940,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa9ac173-d233-41c7-8985-ca91949664e4%2F4DNFIKUG8MEW.hic\": \"1339072088,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fba6d8ab6-ee18-4ba2-8da9-d631888dd50a%2F4DNFICFZGFAV.hic\": \"1261083478,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a3ab04-7094-4673-81e4-ac8c9add8eb5%2F4DNFIQXCZVVA.hic\": \"1084913802,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc1ff488-82af-4579-9424-959184edb139%2F4DNFIB6PJFJ3.hic\": \"1114571343,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f7026ee-987a-41e7-8a61-45510ee3f86b%2F4DNFIX97731O.hic\": \"1246860402,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6186787c-2e72-4925-9729-02121e2e4597%2F4DNFIYQYZOTO.hic\": \"1212210849,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b98a946-0109-4efa-a13e-cc7a36772125%2F4DNFIPXU7V25.hic\": \"1696288217,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fea17d041-c6ed-43a1-8047-535f3d19ad44%2F4DNFIL39PR76.hic\": \"1719284710,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72774afe-f166-42ac-9849-4070b0dadf6d%2F4DNFIYLJ3R3B.hic\": \"1106419640,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a45e733-55f8-4a8e-be24-2ef34c976e25%2F4DNFIL51WBN6.hic\": \"1327651164,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F086c62b0-a26f-41ae-a5ff-88b8be2bd2aa%2F4DNFI6SFPUDA.hic\": \"1336964405,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4d9b79c7-af62-4070-84a9-b953903f2732%2F4DNFI2KM22QR.hic\": \"953067310,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c9889d1-f49e-4639-8e15-2d99d6cd22e7%2F4DNFIVF8Q45U.hic\": \"984193565,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa080dd7b-b7bb-4eae-a275-572a8b45b2d0%2F4DNFI2RN3WFP.hic\": \"1046525527,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb81860ca-c227-4b68-a298-1907fd32300a%2F4DNFI4TJTL7A.hic\": \"1160373401,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F74ab47dc-7b52-421c-845e-6feb33457adf%2F4DNFIYJ4TWB8.hic\": \"1268416204,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc6582128-a930-4bcc-941e-5c0733bdd4d5%2F4DNFIM6RGKPV.hic\": \"863347067,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11a75514-4450-4295-9eda-18e3678a575a%2F4DNFIL2VWWL5.hic\": \"860731581,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5eb52a8c-bf14-4225-bf34-14a0aa47c369%2F4DNFIX6ZXCA8.hic\": \"893462267,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66aaa4c0-1f62-4040-8ecc-4e95da23cd18%2F4DNFIEVR81FS.hic\": \"879736207,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F821c6e7f-96f7-47de-b7d9-4970562b3c8e%2F4DNFIAUI6BBI.hic\": \"996313881,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9252c362-31ab-413d-a47a-cc97bdbf243a%2F4DNFIAFEE9G2.hic\": \"1103265750,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc1a0bf52-2e65-4deb-871f-ede736babd41%2F4DNFIPZBEXCP.hic\": \"1081257762,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F729f5ce3-d7e0-466d-b781-d18049e63bfa%2F4DNFIWPKRZGU.hic\": \"973779283,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80b769ee-a717-4825-9db0-dca86f913173%2F4DNFIMD9QNDX.hic\": \"1158688208,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F266290c0-2767-4158-85ab-7274368905b9%2F4DNFIATA1HD5.hic\": \"1073361089,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc46f18a8-eb24-4d35-b112-36db72bde2f5%2F4DNFIH9U4I7I.hic\": \"1111124316,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fec91a79e-7de7-49f7-9b3d-d28313aeddc8%2F4DNFIZ95S6TR.hic\": \"1242494051,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e9390b9-da20-43bb-a8f4-9830f354ddf9%2F4DNFI5ERM9J7.hic\": \"1271051397,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee8ea82e-b9e4-41ad-bced-5f4fbdaa4fec%2F4DNFI15FPSQL.hic\": \"1216714120,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbed7eb86-8990-42f2-b3ee-5992d6361f7c%2F4DNFIJ3DZPGM.hic\": \"1035089437,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaa8a324-3bf8-424c-8a86-b8ad325cc20d%2F4DNFINW9P6XF.hic\": \"1215712740,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70631758-6bf8-47a0-92b6-132574886faa%2F4DNFITS16HW8.hic\": \"1105283847,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe473304b-7bc8-49b8-bba1-ecb9f06914ee%2F4DNFIS3DIH4V.hic\": \"1036056660,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F10f9224a-111c-402a-ac25-e221ad0af9ef%2F4DNFIY3KDHP6.hic\": \"1071761024,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17519b96-2bdd-4294-98f0-1535f1aef28e%2F4DNFIO8HVKOL.hic\": \"953793750,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb18f896-4730-4909-86a3-867fc8e76cd6%2F4DNFIMF6CFOM.hic\": \"708717889,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcfee4d87-0873-40b0-b79f-35dcc8669c1c%2F4DNFIZZ77KD2.hic\": \"732668723,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8b5d909-8a1b-41bb-bcdd-d108a0bde762%2F4DNFIOLO226X.hic\": \"951271932,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ce81f6e-b9cf-4ec9-8bd3-517539e4b662%2F4DNFIJMS2ODT.hic\": \"932509067,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F506aa952-5d41-49ff-b658-916bcf88a395%2F4DNFI49F3LJ4.hic\": \"1208494817,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4dc392d-ca36-4bdf-a27d-173cae34f520%2F4DNFI65MQOIJ.hic\": \"854630155,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F149ef8d7-e0b4-4e4f-b7e5-7226e2603746%2F4DNFIM4KEPRD.hic\": \"882790622,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa436f0a8-4f9a-4524-90ac-795c5b8491cf%2F4DNFIIXBIZFC.hic\": \"848244425,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc8a05dc-7449-4b01-8330-a55db37ca8e6%2F4DNFIWDOOBVE.hic\": \"1116239020,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faef8b881-28fe-4694-9a95-1d31940e6726%2F4DNFIDT9EB5M.hic\": \"888289053,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff66f3162-a53d-46f2-8800-3752935d5400%2F4DNFIX2VUNV8.hic\": \"1226661451,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F36c782e6-2c48-4298-aa43-bd6624da003d%2F4DNFIEQHTV1R.hic\": \"804665819,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff15d571e-605d-4bcc-a359-0350b57a6815%2F4DNFIFW7GA64.hic\": \"901568712,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2aa2e8b-ac7f-4acb-b4b5-ac5f845840fe%2F4DNFIXGXD67I.hic\": \"970995551,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F71b6fd7d-b249-4d65-a597-b80b95845399%2F4DNFIA7GB1NB.hic\": \"956785837,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cbb1418-34db-427f-9273-5174eac81529%2F4DNFIVOJGWNP.hic\": \"890415052,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc69c2ee7-b6c3-4a62-8d4f-913491c9dab8%2F4DNFIW22BNB5.hic\": \"1075499540,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa268f28f-c6d9-4324-8989-75d2d317af1b%2F4DNFIIFBC8WN.hic\": \"1045459440,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7361d4-60a6-440b-b5be-072cada98663%2F4DNFI9ZBEBJH.hic\": \"759395398,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcceaad1a-e01e-4430-8bd6-24ffa6891802%2F4DNFID4SLU53.hic\": \"921288444,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9eee5854-b33e-4d5a-9ba8-ceffd47e7488%2F4DNFIODI1NUJ.hic\": \"733159777,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5e1089b0-42e8-441c-99bb-4be99bcec28b%2F4DNFIJL26LFN.hic\": \"723567970,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F298a429e-ea29-49d3-bfed-fa851e1e7c4c%2F4DNFI5KTF553.hic\": \"2213661745,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F965d29f0-e4a3-477c-8ae4-faf4a654e69a%2F4DNFIYSPGFGV.hic\": \"2274989349,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd88acbc1-37b9-4266-9f97-d8fed576d0f3%2F4DNFILOR6D2D.hic\": \"2595459358,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7b6ddbce-0ed1-4272-b8ae-32793e4ea4e4%2F4DNFI1WMMPJQ.hic\": \"2262433890,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fedc0c8c4-97d8-4372-9a4f-5e0cdf09d7d0%2F4DNFI47P5978.hic\": \"2146314403,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0edcc389-43a4-44d7-b946-fe3496f93d56%2F4DNFI7XGW6IH.hic\": \"2302805723,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0a802926-e235-4c80-b521-83a1774dfb46%2F4DNFIK1EJG8I.hic\": \"2374943035,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c36aedb-6a58-4aa2-9b11-bb440ec174f1%2F4DNFIDQ3THN9.hic\": \"2341188249,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F846123cd-8828-4e51-8b8a-27deaf293858%2F4DNFI3WPNFWT.hic\": \"775145629,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd06e3ad-0e37-48a3-8367-c7d5912cab03%2F4DNFI9DCUOQ1.hic\": \"870487824,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2eaf9bf-9584-4cec-8685-bd74038a6c01%2F4DNFIU8AF5ZY.hic\": \"1276224366,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F219497b5-3f35-473b-9d4e-e1cf21c69561%2F4DNFIHW8NTQX.hic\": \"28864787856,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4be13558-114a-4f2d-abca-7598e2ff4757%2F4DNFI4OUMWZ8.hic\": \"17061013588,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49aed637-87a1-4d4d-ae68-e5da82aec05b%2F4DNFIEYQ5ZIR.hic\": \"13555272651,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa2f48779-4eff-44a6-8a9d-96435aca1ddc%2F4DNFIDZT7PR8.hic\": \"13425047093,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6ec6b71-27b8-4891-b10a-ab06a5270468%2F4DNFIEJEFCAM.hic\": \"15394960208,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F68b9a7b5-8413-44fc-8c2d-59a67b1c4166%2F4DNFIJ8JKKWJ.hic\": \"17012681779,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294d45a4-8b5e-456f-a9cb-1cbbbad3a7d2%2F4DNFINEQY95T.hic\": \"13966775978,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd7f3a48-b822-41e2-bd9c-f52b3aff7b6a%2F4DNFII6AN691.hic\": \"12367300362,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7da44594-0dc8-4e74-8e10-a957aeaea51a%2F4DNFIDBIEXI7.hic\": \"2015474981,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F085a0453-3784-4eba-80b2-3556e53e2f52%2F4DNFIDKJFK2S.hic\": \"1983111659,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc370c78c-0a99-4c3f-a29b-2dfafc6a3e86%2F4DNFIPAF4PYT.hic\": \"3041434294,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F907ce45f-baa5-416d-92de-e86db4bacff1%2F4DNFIWIYYNQ5.hic\": \"7082321112,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff13afc6b-cf69-4c9d-881f-eed4dd3c28ee%2F4DNFIHMCILEN.hic\": \"1739157603,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7575d891-0e3d-4a77-896a-3e1b3a8d330b%2F4DNFIJBJ6QVH.hic\": \"5213499748,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0daa830-60d5-4c7c-a2e1-a4ee70b3fee7%2F4DNFIH2A7IKF.hic\": \"4099503507,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4970a25-91d8-49a7-9a4a-fe0f12cb2b0f%2F4DNFIOL8KGQ2.hic\": \"2256042055,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879f1850-d175-4a86-8a97-12658482e3d1%2F4DNFIWILLD6C.hic\": \"5476286356,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F787f538e-d619-4c8f-985b-78753fb7e57c%2F4DNFIZBXXJAF.hic\": \"5946467856,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8ee785f-1016-4989-9e64-78352621d32f%2F4DNFI8PZOJHN.hic\": \"8307204961,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8997fa-528c-4531-b25b-a412de6bd472%2F4DNFIGXAMSJY.hic\": \"6577588285,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87aede55-7610-4283-af0e-c6840429a31e%2F4DNFIWNNO89O.hic\": \"2871061417,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93b8e020-b337-4685-81dc-40cc8a12b5e9%2F4DNFIXU2KPNQ.hic\": \"3401717686,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb5cf1bd-59d6-46fe-857d-b86d9756029d%2F4DNFIHBGD6N6.hic\": \"840028421,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2d1bc088-d838-49b8-85fc-fea78a7353c4%2F4DNFI7J8NI4A.hic\": \"675705256,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a27b63-fd67-401b-9aa2-2798e6588d21%2F4DNFISFM9VFK.hic\": \"800145922,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F656c0a9d-7058-4c4b-a3ce-701d929561c1%2F4DNFIJU5XBK7.hic\": \"966593603,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2efacfbd-9c81-4e62-8df7-847d1ab774d5%2F4DNFIPKY8ED1.hic\": \"3401629450,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa50b6a26-56b5-43f2-b525-fa219fd716f1%2F4DNFIQRTP7NM.hic\": \"5358852759,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5dc7a59-b998-4490-8a76-afbf3b258a49%2F4DNFIBCIA62Q.hic\": \"5779049277,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62b2b237-cb02-45f7-89d9-616cf9ffb678%2F4DNFIV56OFE3.hic\": \"5818844506,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ac79b4f-cfbf-4b2a-9fc2-898ed6c3e5e1%2F4DNFILIM6FDL.hic\": \"19637469163,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cff8afa-5a13-4ad4-bcad-91fc3ced759c%2F4DNFIP71EWXC.hic\": \"17934647326,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F000789fe-9a22-4280-a71c-7ad228fd4cac%2F4DNFIM7ZVQOQ.hic\": \"700134697,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8d78457f-0c2b-4358-b08c-4d4ef4d9f59d%2F4DNFIS6EYHCX.hic\": \"628314484,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ca3b4a0-2478-49c9-b4a2-a28430417a32%2F4DNFIKKCMS1Q.hic\": \"584050634,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5041473-18ec-439d-92b1-8ad98c9b25c0%2F4DNFIBIV8OUN.hic\": \"522632731,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcf474ec6-abd4-431e-a21c-252fcf5ee6b3%2F4DNFIAUMRM2S.hic\": \"313395531,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bb1c73e-fb0f-41c4-8620-a938cc8d24a0%2F4DNFI9ZUXG61.hic\": \"332217525,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F26dfa41e-7e4f-457a-a3ac-72daf8059f3c%2F4DNFIDBFENL7.hic\": \"359604894,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ed2e68b-189e-4988-bb6d-94e63240a231%2F4DNFI7XAZNNQ.hic\": \"5312422266,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6f2b1ce0-5205-4680-981e-d91b694dc3e4%2F4DNFISNGDB53.hic\": \"2008546759,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F73c8147f-bc7d-4d33-8a10-a9e7b413ecc6%2F4DNFI1CIGHYC.hic\": \"2221847625,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F526ae3e3-32cc-4670-970f-1faa9cfafd4d%2F4DNFIQD2DP2F.hic\": \"5295591503,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e803530-47f8-4c56-bb19-fbdcd578d2f0%2F4DNFINHT8P7C.hic\": \"3159499486,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe705f38-903f-47b7-9b38-f80ebd18a479%2F4DNFIGF8EM7M.hic\": \"3490552542,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa197328-d6da-4299-a0fd-409ac9892668%2F4DNFIUPG2ZBJ.hic\": \"5382003751,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe5d52c4-2be7-4812-bca0-cd4bb3025e6b%2F4DNFIH3OTR14.hic\": \"3224693110,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21935f61-daa8-4df2-aa69-fcd27953b405%2F4DNFIUATRW3Z.hic\": \"3835865655,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72147527-e3e8-4967-bc45-8251249d76c9%2F4DNFI6V7ZQAE.hic\": \"4382708138,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F589f0919-f54d-49ff-a482-e2f453ef7f34%2F4DNFICKMT1CY.hic\": \"4479068191,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F861946ca-bad8-4a87-96e1-b2eb20b9ef10%2F4DNFIF9BDCNI.hic\": \"3698151402,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff76346ac-97ec-4893-8984-2b75ce1cdc51%2F4DNFIG5O1OQS.hic\": \"5704288175,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe8b43826-f049-4c3f-b83a-e75fa7aacc85%2F4DNFIHS2SVBQ.hic\": \"990025510,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46316260-f555-4dd4-9e40-8ae06ca52822%2F4DNFIU95B69H.hic\": \"1275878544,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff62ef491-a3ae-4f66-ab33-c5673c9e0b65%2F4DNFIYRROFCR.hic\": \"1522530503,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cd617e1-fad4-4fdc-8b4e-cb277650123c%2F4DNFIF7JN3IU.hic\": \"1463443128,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb20fe2a-0078-4d4a-8a52-d76043d06f40%2F4DNFIB2RYULQ.hic\": \"1269529700,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d386fcf-1d22-47de-a0d6-0c3a641ca174%2F4DNFIMVDK3SI.hic\": \"1185489599,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F00e470bd-c533-41b1-923a-4b471824da12%2F4DNFIRLOTXSC.hic\": \"978217499,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8774fb3-d0c5-43cc-a6c9-eb0ca39841fb%2F4DNFIZAPX6J8.hic\": \"1100356082,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fab3b826e-614c-448b-860f-a3ebef68a82f%2F4DNFIQD5VCSD.hic\": \"1322319877,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66c78d2b-993a-4937-95ed-9e2d302ceb3e%2F4DNFIIF6VAGN.hic\": \"868885799,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5d106fe1-2d80-466e-87aa-46b38ba142c5%2F4DNFI86IEZXH.hic\": \"751443267,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc99490b6-faf9-413f-9c38-3f53018089d6%2F4DNFIP881SR2.hic\": \"754427927,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F39c7e387-e710-4b1d-b757-357dec03f6ad%2F4DNFI42NNCW8.hic\": \"1166392978,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4742a211-43b1-4325-af6f-82490aeb766b%2F4DNFIEV4PKP6.hic\": \"1102227476,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaa73842-1c86-4ad9-8a9e-c189c0b4c01d%2F4DNFIF1DUQHE.hic\": \"1206699207,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd25f24df-0298-4079-bb6f-1c8e1e32392b%2F4DNFIGW55EAY.hic\": \"1033358104,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc57a7ab5-2778-4fe2-9d64-9a4e95135f12%2F4DNFISZRU6I4.hic\": \"1539570262,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd89f494a-27ca-46b6-89be-7583f3f6d18c%2F4DNFIBKKDTAP.hic\": \"350372180,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F06725280-cb24-4f22-a267-18b434bfa79e%2F4DNFIJSRQW24.hic\": \"314361467,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8fe5c3c5-006f-425b-ac6d-ea475e29be78%2F4DNFI3REN89E.hic\": \"299665258,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8b6ac5c-13b4-427e-9158-cec0b890b6d8%2F4DNFIF5XLHKM.hic\": \"235668364,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F01ff33fc-fc23-48aa-a6c6-b720d6fe0768%2F4DNFIB6Q538N.hic\": \"316494853,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F552978c8-abbc-424a-9187-3e34cf802a97%2F4DNFI3ST3F7Y.hic\": \"296298411,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72e66520-5170-4f2e-844a-fbfd0e23b480%2F4DNFIQT4M6UI.hic\": \"307691265,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb3eb3953-ffe8-4d5a-970c-a16f3b7b9ec3%2F4DNFIFNCC7M2.hic\": \"364160436,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F37d413fb-afab-41ff-99aa-1678830f7dde%2F4DNFITM9MDJL.hic\": \"252412426,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf5db92c-aaf1-4086-a0d2-79b28648f172%2F4DNFI3NTD7B3.hic\": \"227586640,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6892f7b-1f8a-4d7d-9605-c67932cd5654%2F4DNFIBED48O1.hic\": \"328344868,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd64afb07-5ab1-4c4f-8438-2fee37afa86a%2F4DNFISATK9PF.hic\": \"379669025,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fad11bb63-8692-461c-b698-89c601451321%2F4DNFISRP84FE.hic\": \"298491537,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F63710ec5-35d2-47dd-bf9a-08d3daa83d67%2F4DNFI2LY7B73.hic\": \"303150299,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76077d9e-ca75-4301-ab79-88aa49bda495%2F4DNFIXEB4UZO.hic\": \"711757090,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F34dd4c0e-3487-4fb4-b95f-c4bb66e0fa31%2F4DNFIQWWATGK.hic\": \"221304476,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F48a8cf86-3248-4a8e-8e85-472ec219d49c%2F4DNFI44JLUSL.hic\": \"284772724,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee399fbf-2a9e-46e2-8364-457713bff508%2F4DNFIM7Q2FQQ.hic\": \"330729464,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F124d191a-c5c7-49b6-b84b-0d1bad8bef2b%2F4DNFIZK7W8GZ.hic\": \"293166018,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe351f7cc-7a2c-4515-ae0b-3bb2f91c986a%2F4DNFIMIMLMD3.hic\": \"240094740,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffd1ae249-57b1-41d6-81a6-16b21dcd8f12%2F4DNFI7QUSU5J.hic\": \"681762505,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46c92c5c-9ad8-4d49-beba-f35c5cd99208%2F4DNFINXUOI5H.hic\": \"375594313,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7350d40-4e9e-4131-9151-bb539d39b431%2F4DNFIIJR2296.hic\": \"331322302,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfacf37b-1665-45f3-a046-e29e1544e9b0%2F4DNFIJMZUTXR.hic\": \"361313244,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F234e18fb-9990-43bf-9a48-f72722cfa232%2F4DNFIZQPT9EL.hic\": \"540421873,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b35ab09-2e79-4876-b2bc-d3a8faa26257%2F4DNFIZIXSZ9J.hic\": \"545066813,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae5118e-807a-46e0-8e92-143d4b282b3d%2F4DNFIDD9IF9T.hic\": \"237409149,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb34d7f6f-73f7-4b6b-80c7-c8af0f991549%2F4DNFIVC8OQPG.hic\": \"355121712,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ab169fd-cbdd-4f60-8553-a4c6912ad89e%2F4DNFITUPI4HA.hic\": \"313085022,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4e53712b-d0d9-40c5-afe1-ffa0fad71e59%2F4DNFI5IZNXIO.hic\": \"341863906,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a91477f-45eb-4a16-affb-fc131f9326b8%2F4DNFII16KXA7.hic\": \"248904495,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F153729de-0eca-43cc-9b61-61aa8d775b38%2F4DNFIAAH19VM.hic\": \"668047244,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879fd78a-7165-43d9-a0de-ca158b53df30%2F4DNFIVKIY3KV.hic\": \"247571318,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f901a4-040b-4b04-9fff-94a1780423cd%2F4DNFIVVCWL6C.hic\": \"198355985,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd5b30c5a-654a-463c-9474-39bdc3ce4500%2F4DNFIJRF2273.hic\": \"343971277,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7070280a-8f03-40d0-9fef-e9d9f4d3dae7%2F4DNFI6FCC9ZA.hic\": \"312013061,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F47049719-9407-4d76-9048-26231045f642%2F4DNFI1CPQ4O3.hic\": \"352923267,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F862c2b5f-44c2-4bd7-9264-b3ca032d3d8d%2F4DNFISXFEDE9.hic\": \"271745977,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feffbe052-39ff-4217-9871-44199ed90818%2F4DNFIF9L6QEQ.hic\": \"668409334,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa7791854-1b35-4258-90fb-603c55f24642%2F4DNFIPKASX1Q.hic\": \"312727920,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79cccad6-a78e-4de9-9fe7-08f7e8df663d%2F4DNFIWXZ4JQZ.hic\": \"151808553,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7e86e0cc-d6f1-4ce0-aba4-c36c6ebb3c4c%2F4DNFIEMQ1O8V.hic\": \"700533280,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a1b58d3-9ae6-43e4-91cf-49f1fcbbab33%2F4DNFIYWONU7A.hic\": \"729050356,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67bff264-0b0c-4c5c-9d4d-ff5abef2bbe4%2F4DNFISNIE5FH.hic\": \"7987657997,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3a6a943f-2cc0-4433-a27d-c89f3fdd3309%2F4DNFIV8MLWJB.hic\": \"6646216171,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e235711-ba90-404d-b4ac-b15990ea8e33%2F4DNFIXSTDPHL.hic\": \"3146468238,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c89f4bc-e9fc-4ecf-b868-26108dbb7bb2%2F4DNFIQJNOH8U.hic\": \"2919703928,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1856ff9e-de7a-4fa1-ae0b-3e04b837b5e1%2F4DNFI57XB4A8.hic\": \"13417594377,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F099bb5b9-6315-4650-8f78-d603f5a046b3%2F4DNFIQ7UKVZV.hic\": \"9016468637,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3c7a30-0fc4-410d-8d41-247da3eb105d%2F4DNFIWJY8GHD.hic\": \"7921314766,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda99f429-20ab-4d91-bbfe-f8bdea8ed7b1%2F4DNFIN8NKRNF.hic\": \"4247121358,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0ca0f4e3-30ca-4332-b735-e32dce08e1a4%2F4DNFIZYGEHNZ.hic\": \"4910404663,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F243f48b0-6b59-4f37-ad39-a12e0986f530%2F4DNFIRPYGAV8.hic\": \"4220073636,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49f1a890-d458-42a6-9c78-99c38b6c7a8f%2F4DNFI6MZTDM1.hic\": \"375035361,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76bd4768-9343-44ba-a99d-5500e184e39d%2F4DNFIG3BCGPL.hic\": \"2422923206,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1ed866-eaf6-4906-aa8c-9e39616dde38%2F4DNFIS9YPJ3L.hic\": \"1593271574,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1e7a5636-bdb6-45fb-85d8-87a7e908de43%2F4DNFIOWGA9AX.hic\": \"1632314387,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ecc552a-0a6b-49a9-9aa5-9f3fd9b535fd%2F4DNFINKEDSBF.hic\": \"1458761024,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c03f1d2-bb25-4c94-b5f5-d5cdd01c14b6%2F4DNFIVIXVUK7.hic\": \"1504818271,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1a4616ff-6d04-4a6a-9773-b80e81da2471%2F4DNFIANHFY16.hic\": \"1850724180,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd2231870-a78d-4c8b-9cfd-084f2468acb1%2F4DNFIJ67ZFBI.hic\": \"1473864703,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F859c2dd3-df8a-42b7-86ea-bf6524f75e80%2F4DNFIG3YQQ4V.hic\": \"1539822829,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8bad667e-6003-4828-9a20-07585fa9c811%2F4DNFIOLKEOME.hic\": \"3036353747,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F92ea551b-5779-4d31-a0f5-621e4bd0eb21%2F4DNFIVLN8WJE.hic\": \"2710426318,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61ee79fa-0617-4083-b121-f92ef3a8905c%2F4DNFI2111XQA.hic\": \"2589549183,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F83ebb98d-e5db-403d-aa23-875293156c0e%2F4DNFI88HXX7D.hic\": \"2462367030,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6d63671a-8f1d-4159-82c0-931b43464772%2F4DNFIUBM6QK8.hic\": \"2486020469,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcccb9014-ce15-4032-81ac-222b3d621cb4%2F4DNFIVILEERC.hic\": \"2052537210,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a07867-4007-4ca5-b066-25d3168208dc%2F4DNFIF7Q43N4.hic\": \"2091773428,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff738de0f-358b-44bf-97dd-644c8d9b1b1c%2F4DNFID56VJGW.hic\": \"878913568,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda97c1d4-bb92-4a77-92a7-f7960f88b9dc%2F4DNFIYUR29KO.hic\": \"983915575,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F54ea363a-99e7-4f55-861e-1644acab7939%2F4DNFIUDPGHO8.hic\": \"905253594,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcd66a07-55ee-48d9-a157-419cf4ee3eef%2F4DNFISWC2N8T.hic\": \"1233576358,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40363837-7466-4a1d-b20d-a66d1670b700%2F4DNFICMPHDMI.hic\": \"516590777,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0b3fa4e6-caeb-40b4-8942-e9c0b03dfe4f%2F4DNFIKMKN736.hic\": \"634310295,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6a34050-d52b-4880-91cf-d3fe4b0ce982%2F4DNFIN5NLS49.hic\": \"650451131,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8e63a47b-9fd4-4772-8b0c-10ee589ffb16%2F4DNFI4P8UBRL.hic\": \"705655033,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d92b666-30cc-4838-9d46-c1f11cee3d3c%2F4DNFISNC3LAI.hic\": \"176146197,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17f7dc63-a1bc-4970-b389-87d9ee93b753%2F4DNFIVBWPFD7.hic\": \"749678512,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8897333-4791-4a83-9444-a653e24aee13%2F4DNFITMQRXB7.hic\": \"254477361,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8712bf31-33d0-4562-ab0b-a1e9cf4fd30c%2F4DNFIUYD3HBY.hic\": \"995625724,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfaf6383-9cc6-4b5c-9b20-d3bf2e8c3495%2F4DNFIRRSC7P9.hic\": \"1149985362,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0b70598-5d17-4e0a-8831-6cbe697e69e2%2F4DNFIWKR8FP6.hic\": \"1151628407,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fccc094a8-23ce-4fd8-9c4a-41f07c045c8f%2F4DNFIQ74RSUY.hic\": \"931695969,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8eda16f3-af5e-4f1f-b46d-c74df44b76aa%2F4DNFI9IIO5PW.hic\": \"1077740364,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff283637b-cf2c-4412-ba00-0e3d7e279fad%2F4DNFI8WGJG19.hic\": \"812086456,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ad8438f-d3d9-42d8-88bf-42845a0dc2d0%2F4DNFIQ5CCESJ.hic\": \"652559720,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70e3bdcc-caf4-4822-b9c5-85234873db7a%2F4DNFIWTZHB4H.hic\": \"760694196,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56ed767d-cd8a-4d38-8047-ed1e8bc8cd19%2F4DNFIENYQCDP.hic\": \"1159428005,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa912fff9-5f90-42b1-a3a6-cbb9eb2cf861%2F4DNFIFATZWPD.hic\": \"1033325746,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21338ea5-fdee-4ad8-b61c-608fc6cec4bc%2F4DNFI7YRXKEO.hic\": \"388142539,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0f88647-5631-437b-b48a-4603915e3714%2F4DNFIUY3J7EW.hic\": \"407344788,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16926af8-ac3b-4f32-97d5-6c0dc6f1596a%2F4DNFIRKUYKP4.hic\": \"893352368,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93e39aec-6cde-4c5b-bcdf-283faa3163a2%2F4DNFIAQDBJZP.hic\": \"489922022,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0dc0b1ba-5509-4464-9814-dfe103ff09a0%2F4DNFIC1CLPK7.hic\": \"565748333,37769\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb50964c7-b025-49d9-b1ed-289bedb59678%2F4DNFI3A3VYWU.hic\": \"4597459343,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4390cea-b330-4022-88c1-9ff8c0a786f7%2F4DNFI6JJQKFJ.hic\": \"3678393678,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c0f730-5da1-4863-9b7a-6cdd31066cff%2F4DNFIK61ILGM.hic\": \"3324300994,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14b14ac4-ab59-4754-9c43-eacd9d0638e2%2F4DNFIYD8LO9Z.hic\": \"3227227120,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7386f953-8da9-47b0-acb2-931cba810544%2F4DNFIOTPSS3L.hic\": \"253942497,7557\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6b5d8bd-27dc-4415-a320-53405a16db85%2F4DNFI525PKU5.hic\": \"305089653,7557\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f922dbc-637b-4c43-b816-f604f0e79ad1%2F4DNFI8Y9SRP2.hic\": \"1438589609,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6a36d686-716c-4ba8-a9c3-fa8311791d3c%2F4DNFIP25GZGA.hic\": \"1419100109,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0e535542-2cf2-46e4-ba10-7a0b946a7fb2%2F4DNFITPO1WTY.hic\": \"3885296184,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c17d228-5052-4c83-880e-af05118e6929%2F4DNFIG4X5Z5F.hic\": \"2159245890,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc3977c00-525b-4556-9a27-061707f8cb76%2F4DNFIXLYR32S.hic\": \"587852728,21916\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f856506-cbc5-4211-a29d-48a7530c622e%2F4DNFIWI3V5LI.hic\": \"2318237793,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F38f77979-5eb7-4b6f-9a60-c2451185db98%2F4DNFI2DGL7LH.hic\": \"2068150664,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe0992a75-7727-405e-95ac-aa97141b51c1%2F4DNFI1VSO8JP.hic\": \"1807949651,21916\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe925f1aa-2e7b-44e7-bfa8-2084a613ab13%2F4DNFIV5O2ZYO.hic\": \"2242134377,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F803a6d3c-3972-4939-8ff2-d195c5192090%2F4DNFIEWEWQ8D.hic\": \"2981341325,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F25104375-a588-46e6-a382-663cee6c332f%2F4DNFICSTCJQZ.hic\": \"14592996888,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F927aa8a5-24a5-43b7-807a-1e99ac321459%2F4DNFICEGAHRC.hic\": \"15431307603,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c380474-12cd-41f4-b86f-2a29faf12eec%2F4DNFIY3XPKPO.hic\": \"2550999291,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77da562e-d0ec-45a8-8764-14fa16d995a1%2F4DNFIK9PS9GM.hic\": \"3401011629,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11b26222-d480-40a7-8d53-3ad8500396cb%2F4DNFIF4Y74JR.hic\": \"2127593378,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93df02c6-1047-43f6-afae-d3598b61eeea%2F4DNFIBBKG9KD.hic\": \"5724446278,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cd4378a-8f51-4e65-99eb-15f5c80abf8d%2F4DNFIT4I5C6Z.hic\": \"5419655766,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F067881e5-563d-40de-a9e3-caccad887fbc%2F4DNFI2U38HCE.hic\": \"14749043471,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcb3da9ad-7afe-4d0c-9c2d-261181e7a95c%2F4DNFIETP228R.hic\": \"9401474797,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F185b7bcc-7bb7-41b7-9ebe-92d4fe159431%2F4DNFIXKC48TK.hic\": \"11624295594,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F18459b84-dd43-4af6-a05f-bcb773096322%2F4DNFIFPGOWJ6.hic\": \"2843730862,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffde1e48c-4a0d-4bb1-b84a-e0e45f9a0aa3%2F4DNFIIRMBE8Y.hic\": \"5820677927,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbabed539-1f0f-4e87-8815-fde596e6024c%2F4DNFIVUGNDD7.hic\": \"5170782436,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d00531a-e616-469b-af52-5b028270e2ce%2F4DNFIFLJLIS5.hic\": \"18917549985,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a9dad53-b8af-4cb6-9ce3-5c38e4a855c7%2F4DNFIOX3BGNE.hic\": \"5482775936,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F82fd7b7e-5f47-48d5-bf0d-daaa48a4674d%2F4DNFISPUVQHA.hic\": \"2177864938,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4c6680f3-9cf6-452f-9dc5-ecebf376775d%2F4DNFI8649RQJ.hic\": \"3288850368,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2395f001-19d9-4000-9f00-dae3dea708d6%2F4DNFIE8T8JZ8.hic\": \"1383191843,21916\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24464fa8-bf96-483c-8e9a-c2f626ad6e19%2F4DNFIBM714BP.hic\": \"1765204569,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F918fc048-fa27-41d2-a63a-d50c511fbb9a%2F4DNFI6CWNUFL.hic\": \"2431120602,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ff5a0d1-8e54-4cf0-9fe7-339f147c78da%2F4DNFIZ4F74QR.hic\": \"3211825957,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F355f0412-cb17-452a-b15c-aba16c5a742c%2F4DNFIOUVOX3R.hic\": \"5547401083,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cac91c5-160a-4b91-a91e-edc309318dd5%2F4DNFIVTDXW6X.hic\": \"4797344498,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9ac9ec5-6221-4f39-951a-1c5054fc9f1c%2F4DNFICA8Y9TN.hic\": \"4277557869,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46f62222-b50a-428b-938b-5444951600eb%2F4DNFIDWM3HN5.hic\": \"4374808431,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F50e4f2a1-9cb6-4192-8199-64d354bfdf96%2F4DNFIBK5TB3N.hic\": \"3757387253,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4cdd5a8-1a45-4c6a-906b-a9603260d4c8%2F4DNFI3JYF9VS.hic\": \"5260534916,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8164e99-5778-427d-be26-f0e1b62400f0%2F4DNFIP1GNKUO.hic\": \"7589365689,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0d72e78a-fc87-4716-8b8e-6dc5650ff2ef%2F4DNFIQYQWPF5.hic\": \"22022259901,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac58fc15-48c2-4eec-a689-23b677b4b6e7%2F4DNFIW6H9U3S.hic\": \"6810897169,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31811e40-e3ca-4456-8ba6-2ee66d6c7104%2F4DNFI7J8BQ4P.hic\": \"7188744676,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62d81a52-d2cb-4bbd-8510-0fe120e786e0%2F4DNFIA3AKFSU.hic\": \"1763730692,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae0b7513-d1a0-4f27-a9d3-348837f42cb6%2F4DNFID68JQY9.hic\": \"2422880133,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae6a1a7e-1d2d-4fd2-a89f-1799abac8a9c%2F4DNFIL1FQDXE.hic\": \"1543814834,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80d343c9-bd60-468a-803d-c3e351a958bc%2F4DNFITSIPCSK.hic\": \"2344682115,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2d61195-a3a6-4d50-b928-546ca67546cb%2F4DNFIJ88LYHR.hic\": \"3362742962,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31052aba-773a-4500-961b-e0a518245b0c%2F4DNFIJIPWD63.hic\": \"2529548812,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc93d0710-3fbf-40cc-b0eb-878e2aa659e4%2F4DNFIZUP2BBI.hic\": \"491996147,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8660baeb-5be1-4ba5-93e4-66499e9a4587%2F4DNFIEBC4AF3.hic\": \"2993048734,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6d08fbc-b836-4776-82ad-8b1b277ae837%2F4DNFI5VO3E1W.hic\": \"1949322679,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3af004a2-a6fa-46dc-8be8-898b847a77be%2F4DNFIFDGVWLU.hic\": \"2456400803,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd613b4b-2422-492c-8d8f-8afba9c8a182%2F4DNFITVGFNYZ.hic\": \"1411204423,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc340694f-14f3-4638-b09b-98220c20039a%2F4DNFIOW9TTC1.hic\": \"2611370588,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3effa71b-6aa3-4265-87ba-f8d709d778d7%2F4DNFIOAA3ZEQ.hic\": \"3123195980,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde75cf8b-9ce1-44fc-8b7b-ca0adea6bae9%2F4DNFIA5ID1S6.hic\": \"3496246968,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F714f775d-a5a4-4314-83f8-016b9d73200b%2F4DNFIZYU7V81.hic\": \"4245592042,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ca518af-6e1e-4777-b67b-0fe7f039ce58%2F4DNFIRV6PVUX.hic\": \"3981520466,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc29b57d5-c263-4372-b396-ab4f55682f5d%2F4DNFIMEANFBY.hic\": \"3999623376,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4196d3ef-161a-4c18-a57e-005165c6b32a%2F4DNFIGLGQXLC.hic\": \"4105683321,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe10828b5-9519-4ceb-81e7-7228bfd890de%2F4DNFILS2HLXC.hic\": \"3804942111,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaac88c7-9bdc-4b1e-aa9f-e675520dfffa%2F4DNFIQS8853L.hic\": \"5287726781,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faab371b1-bc8d-4e83-998e-5bb977c443ca%2F4DNFIVBYCYGS.hic\": \"4657988157,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb116add-af8c-4a3b-b106-9f704ba0a175%2F4DNFIE4WWHMF.hic\": \"5116727268,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F033366e2-05a2-4381-9d48-90122892a9e0%2F4DNFIKDUUC3C.hic\": \"45638237,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7284a446-442d-4a46-aae5-84987e75a7af%2F4DNFIJ5HIRA2.hic\": \"62201052,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F876649a3-6dd3-463a-8b17-5752a98a89c5%2F4DNFIXDFC7EM.hic\": \"69878143,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cb4ce4d-d474-459f-8b8a-2159d8df8068%2F4DNFIO35EOVR.hic\": \"70153114,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5c5612fa-18c2-47fb-8074-693b1054e254%2F4DNFI57QGL6U.hic\": \"54605055,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c1472d-cf3a-41d7-8682-cd03b7cc978d%2F4DNFI2AGEBE5.hic\": \"67930121,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bf4cce8-6e03-422b-a190-e51d4a07d501%2F4DNFI1E6NJQJ.hic\": \"4893181511,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0eb3aa56-8a23-435d-a07b-8bb545e8d708%2F4DNFI2DNFM1A.hic\": \"60466977,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1201682a-a223-482d-913d-3c3972b8eb65%2F4DNFIIRIHBR2.hic\": \"48961678,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6aee7913-6356-43cf-affa-f2b60dd478f6%2F4DNFIKXNMT46.hic\": \"39095246,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F357139a3-c9a5-4343-b0a4-b41c45fd03fd%2F4DNFIRV7IRJP.hic\": \"70916718,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76be3061-6259-42be-a917-19dcba41517b%2F4DNFIFX1XYKZ.hic\": \"229197441,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff60c348a-a62c-43c3-ac85-f6c28b5f823f%2F4DNFI64CJUZ5.hic\": \"112428610,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd0b0a14-9703-49af-bb36-2359f96d4d0e%2F4DNFIBPL2HL1.hic\": \"73972428,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79ac278d-83f7-4c1f-91b2-05c8018c1426%2F4DNFIBRSIPE4.hic\": \"415430378,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c3b8141-8e67-4211-80dd-3bae88f9e537%2F4DNFIDLDVY14.hic\": \"112747303,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae703d2-d85c-4ac4-9ce1-14d653927675%2F4DNFI4R1II4P.hic\": \"210565448,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76e641af-90be-49f8-b126-12c20f856159%2F4DNFINMLRY95.hic\": \"1590865292,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b416382-ae5d-469f-9e9a-85a3e2ce9793%2F4DNFI8KBXYNL.hic\": \"4626496956,22663\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa27589a6-86b2-43a2-8218-1f2232d551e6%2F4DNFI53R5IKA.hic\": \"1536016455,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdd3999f5-b36e-4154-a6b9-446656959a3a%2F4DNFIAWVDQ8C.hic\": \"2210273411,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc377953b-0e61-426b-a905-abab2d5a3002%2F4DNFI9VXTBE2.hic\": \"3384365692,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2dbe0377-1db2-4aae-af2b-d87dff728035%2F4DNFIT96Z365.hic\": \"7692311974,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcfcb009-f006-4ab8-a4c7-af72be58c12c%2F4DNFITUOMFUQ.hic\": \"6592120312,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f9073d-b2c5-474e-b3d5-7d72cde555cd%2F4DNFIHLQKDN8.hic\": \"2647703964,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76968cc8-fb9f-485b-85b2-c9289067194b%2F4DNFIL9M97T2.hic\": \"6186798917,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87d9330b-8d2c-4e9d-85bb-02e572de7a68%2F4DNFIDWGZLHX.hic\": \"4379708168,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffc01b381-3665-4225-88ee-2e5e9ecb7324%2F4DNFIMEG1QIC.hic\": \"3587146533,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3144a03c-15c3-4bf9-95f8-ffad2640a1bf%2F4DNFIWSB66VX.hic\": \"1529739069,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7d3aac0-ba66-494b-ba0c-147631084b98%2F4DNFIH7TH4MF.hic\": \"6896300679,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b13bd19-fbd1-4c68-8855-4f0158d1ce47%2F4DNFIHKWIZ9T.hic\": \"1954878455,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d04e286-30d4-4add-a806-7a929d36419e%2F4DNFIZBBX795.hic\": \"1350142414,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa26f261-a88a-4cac-9118-ff8e90ab6f61%2F4DNFI9ZWZ5BS.hic\": \"3410552807,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24e516ce-0b49-4476-b818-cc96471d8765%2F4DNFIPAI8XB5.hic\": \"4168518737,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac3b06b5-46d4-4c1e-97e9-9a4f353473a7%2F4DNFI1OUWFSC.hic\": \"10766406904,21916\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76c6aa27-895f-4e82-8ed8-7a85aca84490%2F4DNFIX4PJKXZ.hic\": \"1463157350,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe6fbe03a-997b-4d72-a3cc-f1ed7bd88a92%2F4DNFIZGCA8AH.hic\": \"1597664180,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61d99a87-4ec6-4116-be99-b483999641c4%2F4DNFI5CGQ46V.hic\": \"2870576870,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F271ea8cd-53b9-44c9-9fff-1bb5c444b54c%2F4DNFIOCW5AEM.hic\": \"2463600138,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa98ca64a-861a-4a8c-92e9-586af457b1fb%2F4DNFI1UEG1HD.hic\": \"22480709268,25900\",\n    \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5809b32e-0aea-4cf5-a174-cf162d591a35%2F4DNFI9YAVTI1.hic\": \"3141182061,25900\"\n};\n\nconst isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\nconst Short_MIN_VALUE = -32768;\nconst DOUBLE = 8;\nconst FLOAT = 4;\nconst INT = 4;\nconst GoogleRateLimiter = new RateLimiter(100);\n\n\nclass HicFile {\n\n    constructor(args) {\n\n        if (args.alert) {\n            this.alert = args.alert;\n        }\n\n        this.config = args;\n\n        this.loadFragData = args.loadFragData;\n        this.fragmentSitesCache = {};\n        this.normVectorCache = new LRU(10);\n        this.normalizationTypes = ['NONE'];\n        this.matrixCache = new LRU(10);\n        this.blockCache = new BlockCache();\n\n        // args may specify an io.File object, a local path (Node only), or a url\n        if (args.file) {\n            this.file = args.file;\n        } else if (args.blob) {\n            this.file = new BrowserLocalFile(args.blob);\n        } else if (args.url || (args.path && !isNode)) {\n            this.url = args.url || this.path;\n            this.remote = true;\n\n            // Google drive must be rate limited.  Perhaps all remote files should be rate limited?\n            const remoteFile = new RemoteFile(args);\n            if (isGoogleDrive(this.url)) {\n                this.file = new ThrottledFile(remoteFile, GoogleRateLimiter);\n            } else {\n                this.file = remoteFile;\n            }\n        } else if (args.path) {\n            // path argument, assumed local file\n            throw Error(`path property is deprecated, use NodeLocalFile`)\n        } else {\n            throw Error(\"Arguments must include file, blob, url, or path\")\n        }\n    }\n\n    async init() {\n\n        if (this.initialized) {\n            return;\n        } else {\n            await this.readHeaderAndFooter();\n            // Footer is read with header\n            //await this.readFooter()\n            this.initialized = true;\n        }\n    }\n\n    async getVersion() {\n        if (this.version === undefined) {\n            const data = await this.file.read(0, 128);\n            if (!data) {\n                return undefined;\n            }\n            const binaryParser = new BinaryParser(new DataView(data));\n            this.magic = binaryParser.getString();\n            this.version = binaryParser.getInt();\n            return this.version\n        } else {\n            return this.version\n        }\n    }\n\n    async getMetaData() {\n        await this.init();\n        return this.meta\n    }\n\n    async readHeaderAndFooter() {\n\n        // Read initial fields magic, version, and footer position\n        let data = await this.file.read(0, 16);\n        if (!data || data.byteLength === 0) {\n            throw Error(\"File content is empty\")\n        }\n        let binaryParser = new BinaryParser(new DataView(data));\n        this.magic = binaryParser.getString();\n        this.version = binaryParser.getInt();\n        if (this.version < 5) {\n            throw Error(\"Unsupported hic version: \" + this.version)\n        }\n        this.footerPosition = binaryParser.getLong();\n\n        // Read footer and determine file position for body section (i.e. end of header)\n\n        await this.readFooter();\n\n        const bodyPostion = Object.values(this.masterIndex).reduce((min, currentValue) => {\n            return Math.min(min, currentValue.start)\n        }, Number.MAX_VALUE);\n\n        const remainingSize = bodyPostion - 16;\n        data = await this.file.read(16, remainingSize);\n        binaryParser = new BinaryParser(new DataView(data));\n\n        this.genomeId = binaryParser.getString();\n\n        if (this.version >= 9) {\n            this.normVectorIndexPosition = binaryParser.getLong();\n            this.normVectorIndexSize = binaryParser.getLong();\n        }\n\n        this.attributes = {};\n        let nAttributes = binaryParser.getInt();\n        while (nAttributes-- > 0) {\n            this.attributes[binaryParser.getString()] = binaryParser.getString();\n        }\n\n        this.chromosomes = [];\n        this.chromosomeIndexMap = {};\n        let nChrs = binaryParser.getInt();\n        let i = 0;\n        while (nChrs-- > 0) {\n            const chr = {\n                index: i,\n                name: binaryParser.getString(),\n                size: this.version < 9 ? binaryParser.getInt() : binaryParser.getLong()\n            };\n            if (chr.name.toLowerCase() === \"all\") {\n                this.wholeGenomeChromosome = chr;\n                this.wholeGenomeResolution = Math.round(chr.size * (1000 / 500));    // Hardcoded in juicer\n            }\n            this.chromosomes.push(chr);\n            this.chromosomeIndexMap[chr.name] = chr.index;\n            i++;\n        }\n\n        this.bpResolutions = [];\n        let nBpResolutions = binaryParser.getInt();\n        while (nBpResolutions-- > 0) {\n            this.bpResolutions.push(binaryParser.getInt());\n        }\n\n        if (this.loadFragData) {\n            this.fragResolutions = [];\n            let nFragResolutions = binaryParser.getInt();\n            if (nFragResolutions > 0) {\n                while (nFragResolutions-- > 0) {\n                    this.fragResolutions.push(binaryParser.getInt());\n                }\n\n                // this.sites = [];\n                // for(let i=0; i<this.chromosomes.length - 1; i++) {\n                //     const chrSites = [];\n                //     this.sites.push(chrSites);\n                //     let nSites = binaryParser.getInt();\n                //     console.log(nSites);\n                //     for(let s=0; s<nSites; s++) {\n                //         chrSites.push(binaryParser.getInt());\n                //     }\n                // }\n            }\n        }\n\n        // Build lookup table for well-known chr aliases\n        this.chrAliasTable = {};\n        for (let chrName of Object.keys(this.chromosomeIndexMap)) {\n\n            if (chrName.startsWith(\"chr\")) {\n                this.chrAliasTable[chrName.substr(3)] = chrName;\n            } else if (chrName === \"MT\") {\n                this.chrAliasTable[\"chrM\"] = chrName;\n            } else {\n                this.chrAliasTable[\"chr\" + chrName] = chrName;\n            }\n        }\n\n\n        // Meta data for the API\n        this.meta = {\n            \"version\": this.version,\n            \"genome\": this.genomeId,\n            \"chromosomes\": this.chromosomes,\n            \"resolutions\": this.bpResolutions,\n        };\n\n\n    }\n\n    async readFooter() {\n\n\n        const skip = this.version < 9 ? 8 : 12;\n        let data = await this.file.read(this.footerPosition, skip);\n        if (!data) {\n            return null;\n        }\n\n        let binaryParser = new BinaryParser(new DataView(data));\n        const nBytes = this.version < 9 ? binaryParser.getInt() : binaryParser.getLong();  // Total size, master index + expected values\n        let nEntries = binaryParser.getInt();\n\n        // Estimate the size of the master index. String length of key is unknown, be conservative (100 bytes)\n\n        const miSize = nEntries * (100 + 64 + 32);\n        data = await this.file.read(this.footerPosition + skip, Math.min(miSize, nBytes));\n\n        binaryParser = new BinaryParser(new DataView(data));\n\n        this.masterIndex = {};\n        while (nEntries-- > 0) {\n            const key = binaryParser.getString();\n            const pos = binaryParser.getLong();\n            const size = binaryParser.getInt();\n            this.masterIndex[key] = {start: pos, size: size};\n        }\n\n        this.expectedValueVectors = {};\n\n        // Expected values\n        // const nExpValues = binaryParser.readInt();\n        // while (nExpValues-- > 0) {\n        //     type = \"NONE\";\n        //     unit = binaryParser.getString();\n        //     binSize = binaryParser.getInt();\n        //     nValues = binaryParser.getInt();\n        //     values = [];\n        //     while (nValues-- > 0) {\n        //         values.push(binaryParser.getDouble());\n        //     }\n        //\n        //     nChrScaleFactors = binaryParser.getInt();\n        //     normFactors = {};\n        //     while (nChrScaleFactors-- > 0) {\n        //         normFactors[binaryParser.getInt()] = binaryParser.getDouble();\n        //     }\n        //\n        //     // key = unit + \"_\" + binSize + \"_\" + type;\n        //     //  NOT USED YET SO DON'T STORE\n        //     //  dataset.expectedValueVectors[key] =\n        //     //      new ExpectedValueFunction(type, unit, binSize, values, normFactors);\n        // }\n\n        // normalized expected values start after expected value.  Add 4 for\n        if (this.version > 5) {\n            const skip = this.version < 9 ? 4 : 8;\n            this.normExpectedValueVectorsPosition = this.footerPosition + skip + nBytes;\n        }\n        return this;\n    };\n\n    async printIndexStats() {\n\n        let totalSize = 0;\n        let maxSize = 0;\n        await await this.init();\n        for (let key of Object.keys(this.masterIndex)) {\n            const entry = this.masterIndex[key];\n            //  console.log(`${key}\\t${entry.start}\\t${entry.size}`)\n            totalSize += entry.size;\n            if (entry.size > maxSize) {\n                maxSize = entry.size;\n            }\n        }\n        // console.log(`Total size  = ${totalSize}`);\n    }\n\n    async getMatrix(chrIdx1, chrIdx2) {\n        const key = Matrix.getKey(chrIdx1, chrIdx2);\n        if (this.matrixCache.has(key)) {\n            return this.matrixCache.get(key);\n        } else {\n            const matrix = await this.readMatrix(chrIdx1, chrIdx2);\n            this.matrixCache.set(key, matrix);\n            return matrix;\n        }\n    }\n\n    async readMatrix(chrIdx1, chrIdx2) {\n\n        await this.init();\n\n        if (chrIdx1 > chrIdx2) {\n            const tmp = chrIdx1;\n            chrIdx1 = chrIdx2;\n            chrIdx2 = tmp;\n        }\n\n        const key = Matrix.getKey(chrIdx1 , chrIdx2);\n        const idx = this.masterIndex[key];\n        if (!idx) {\n            return undefined\n        }\n        const data = await this.file.read(idx.start, idx.size);\n        if (!data) {\n            return undefined\n        }\n\n        return Matrix.parseMatrix(data, this.chromosomes);\n\n    }\n\n    async getContactRecords(normalization, region1, region2, units, binsize, allRecords = false) {\n\n        await this.init();\n\n        const idx1 = this.chromosomeIndexMap[this.getFileChrName(region1.chr)];\n        const idx2 = this.chromosomeIndexMap[this.getFileChrName(region2.chr)];\n\n        const transpose = (idx1 > idx2) || (idx1 === idx2 && region1.start >= region2.end);\n        if (transpose) {\n            const tmp = region1;\n            region1 = region2;\n            region2 = tmp;\n        }\n\n        const blocks = await this.getBlocks(region1, region2, units, binsize);\n        if (!blocks || blocks.length === 0) {\n            return []\n        }\n\n        const contactRecords = [];\n        const x1 = region1.start / binsize;\n        const x2 = region1.end / binsize;\n        const y1 = region2.start / binsize;\n        const y2 = region2.end / binsize;\n        const nvX1 = Math.floor(x1);\n        const nvX2 = Math.ceil(x2);\n        const nvY1 = Math.floor(y1);\n        const nvY2 = Math.ceil(y2);\n        for (let block of blocks) {\n            if (block) { // An undefined block is most likely caused by a base pair range outside the chromosome\n                let normVector1;\n                let normVector2;\n                let isNorm = normalization && normalization !== \"NONE\";\n                const chr1 = this.getFileChrName(region1.chr);\n                const chr2 = this.getFileChrName(region2.chr);\n                if (isNorm) {\n\n                    const nv1 = await this.getNormalizationVector(normalization, chr1, units, binsize);\n                    const nv2 = (chr1 === chr2) ? nv1 : await this.getNormalizationVector(normalization, chr2, units, binsize);\n\n                    if (nv1 && nv2) {\n                        normVector1 = await nv1.getValues(nvX1, nvX2);\n                        normVector2 = await nv2.getValues(nvY1, nvY2);\n                    } else {\n                        isNorm = false;\n                        // Raise message and switch pulldown\n                    }\n                }\n\n                for (let rec of block.records) {\n                    if (allRecords || (rec.bin1 >= x1 && rec.bin1 < x2 && rec.bin2 >= y1 && rec.bin2 < y2)) {\n                        if (isNorm) {\n                            const x = rec.bin1;\n                            const y = rec.bin2;\n                            const nvnv = normVector1[x - nvX1] * normVector2[y - nvY1];\n                            if (nvnv !== 0 && !isNaN(nvnv)) {\n                                const counts = rec.counts / nvnv;\n                                contactRecords.push(new ContactRecord(x, y, counts));\n                            }\n                        } else {\n                            contactRecords.push(rec);\n                        }\n                    }\n                }\n            }\n        }\n\n        return contactRecords;\n    }\n\n    async getBlocks(region1, region2, unit, binSize) {\n\n        const blockKey = (blockNumber, zd) => `${zd.getKey()}_${blockNumber}`;\n\n        await this.init();\n        const chr1 = this.getFileChrName(region1.chr);\n        const chr2 = this.getFileChrName(region2.chr);\n        const idx1 = this.chromosomeIndexMap[chr1];\n        const idx2 = this.chromosomeIndexMap[chr2];\n\n        if (idx1 === undefined) {\n            return []\n        }\n        if (idx2 === undefined) {\n            return []\n        }\n\n        const matrix = await this.getMatrix(idx1, idx2);\n        if (!matrix) {\n            return []\n        }\n\n        const zd = matrix.getZoomData(binSize, unit);\n        if (!zd) {\n            let msg = `No data avalailble for resolution: ${binSize}  for map ${region1.chr}-${region2.chr}`;\n            throw new Error(msg)\n        }\n\n        const blockNumbers = zd.getBlockNumbers(region1, region2, this.version);\n\n        const blocks = [];\n        const blockNumbersToQuery = [];\n        for (let num of blockNumbers) {\n            const key = blockKey(num, zd);\n            if (this.blockCache.has(binSize, key)) {\n                blocks.push(this.blockCache.get(binSize, key));\n            } else {\n                blockNumbersToQuery.push(num);\n            }\n        }\n\n        const promises = blockNumbersToQuery.map(blockNumber => this.readBlock(blockNumber, zd));\n        const newBlocks = await Promise.all(promises);\n        for (let block of newBlocks) {\n            if (block) {\n                this.blockCache.set(binSize, blockKey(block.blockNumber, zd), block);\n            }\n        }\n        return blocks.concat(newBlocks);\n    }\n\n    async readBlock(blockNumber, zd) {\n\n        const idx = await zd.blockIndex.getBlockIndexEntry(blockNumber);\n\n        if (!idx) {\n            return undefined\n        } else {\n            let data = await this.file.read(idx.filePosition, idx.size);\n            if (!data) {\n                return undefined;\n            }\n\n            const inflate = new Zlib.Inflate(new Uint8Array(data));\n            const plain = inflate.decompress();\n            //var plain = zlib.inflateSync(Buffer.from(data))   //.decompress();\n            data = plain.buffer;\n\n            const parser = new BinaryParser(new DataView(data));\n            const nRecords = parser.getInt();\n            const records = [];\n\n            if (this.version < 7) {\n                for (let i = 0; i < nRecords; i++) {\n                    const binX = parser.getInt();\n                    const binY = parser.getInt();\n                    const counts = parser.getFloat();\n                    records.push(new ContactRecord(binX, binY, counts));\n                }\n            } else {\n\n                const binXOffset = parser.getInt();\n                const binYOffset = parser.getInt();\n\n                const useFloatContact = parser.getByte() === 1;\n                const useIntXPos = this.version < 9 ? false : parser.getByte() == 1;\n                const useIntYPos = this.version < 9 ? false : parser.getByte() == 1;\n                const type = parser.getByte();\n\n                if (type === 1) {\n                    // List-of-rows representation\n                    const rowCount = useIntYPos ? parser.getInt() : parser.getShort();\n                    for (let i = 0; i < rowCount; i++) {\n                        const dy = useIntYPos ? parser.getInt() : parser.getShort();\n                        const binY = binYOffset + dy;\n                        const colCount = useIntXPos ? parser.getInt() : parser.getShort();\n                        for (let j = 0; j < colCount; j++) {\n                            const dx = useIntXPos ? parser.getInt() : parser.getShort();\n                            const binX = binXOffset + dx;\n                            const counts = useFloatContact ? parser.getFloat() : parser.getShort();\n                            records.push(new ContactRecord(binX, binY, counts));\n                        }\n                    }\n                } else if (type == 2) {\n\n                    const nPts = parser.getInt();\n                    const w = parser.getShort();\n\n                    for (let i = 0; i < nPts; i++) {\n                        //int idx = (p.y - binOffset2) * w + (p.x - binOffset1);\n                        const row = Math.floor(i / w);\n                        const col = i - row * w;\n                        const bin1 = binXOffset + col;\n                        const bin2 = binYOffset + row;\n\n                        if (useFloatContact) {\n                            const counts = parser.getFloat();\n                            if (!isNaN(counts)) {\n                                records.push(new ContactRecord(bin1, bin2, counts));\n                            }\n                        } else {\n                            const counts = parser.getShort();\n                            if (counts != Short_MIN_VALUE) {\n                                records.push(new ContactRecord(bin1, bin2, counts));\n                            }\n                        }\n                    }\n                } else {\n                    throw new Error(\"Unknown block type: \" + type);\n                }\n\n            }\n\n            return new Block(blockNumber, zd, records, idx);\n\n\n        }\n    };\n\n    async hasNormalizationVector(type, chr, unit, binSize) {\n        await this.init();\n        let chrIdx;\n        if (Number.isInteger(chr)) {\n            chrIdx = chr;\n        } else {\n            const canonicalName = this.getFileChrName(chr);\n            chrIdx = this.chromosomeIndexMap[canonicalName];\n        }\n        const key = getNormalizationVectorKey(type, chrIdx, unit.toString(), binSize);\n        const normVectorIndex = await this.getNormVectorIndex();\n        return normVectorIndex && normVectorIndex[key];\n    }\n\n    async isNormalizationValueAvailableAtResolution(normalization, chr, unit, resolution) {\n\n        let chromosomeIndex;\n        if (Number.isInteger(chr)) {\n            chromosomeIndex = chr;\n        } else {\n            const canonicalName = this.getFileChrName(chr);\n            chromosomeIndex = this.chromosomeIndexMap[canonicalName];\n        }\n\n        const normVectorIndex = await this.getNormVectorIndex();\n\n        const key = getNormalizationVectorKey(normalization, chromosomeIndex, unit.toString(), resolution);\n\n        const index = normVectorIndex[key];\n\n        return undefined !== index\n\n    }\n\n    async getNormalizationVector(type, chr, unit, binSize) {\n\n        await this.init();\n\n        let chrIdx;\n        if (Number.isInteger(chr)) {\n            chrIdx = chr;\n        } else {\n            const canonicalName = this.getFileChrName(chr);\n            chrIdx = this.chromosomeIndexMap[canonicalName];\n        }\n\n        const key = getNormalizationVectorKey(type, chrIdx, unit.toString(), binSize);\n\n        if (this.normVectorCache.has(key)) {\n            return this.normVectorCache.get(key);\n        }\n\n        const normVectorIndex = await this.getNormVectorIndex();\n\n        if (!normVectorIndex) {\n            return undefined\n        }\n\n        const status = await this.isNormalizationValueAvailableAtResolution(type, chr, unit, binSize);\n\n        if (false === status) {\n\n            const str = `Normalization option ${ type } not available at resolution ${ binSize }. Will use NONE.`;\n\n            if (this.alert) {\n                this.alert(str);\n            } \n            return undefined\n        }\n\n        const idx = normVectorIndex[key];\n\n        const data = await this.file.read(idx.filePosition, 8);\n\n        if (!data) {\n            return undefined;\n        }\n\n        const parser = new BinaryParser(new DataView(data));\n        const nValues = this.version < 9 ? parser.getInt() : parser.getLong();\n        const dataType = this.version < 9 ? DOUBLE : FLOAT;\n        const filePosition = this.version < 9 ? idx.filePosition + 4 : idx.filePosition + 8;\n        const nv = new NormalizationVector(this.file, filePosition, nValues, dataType);\n        this.normVectorCache.set(key, nv);\n        return nv;\n\n    }\n\n    async getNormVectorIndex() {\n\n        if (this.version < 6) {\n            return undefined;\n        }\n\n        if (!this.normVectorIndex) {\n\n            // If nvi is not supplied, try reading from remote lambda service\n            if (!this.config.nvi && this.remote && this.url) {\n                const url = new URL(this.url);\n                const key = encodeURIComponent(url.hostname + url.pathname);\n                if(nvi.hasOwnProperty(key)) {\n                    this.config.nvi = nvi[key];\n                }\n            }\n\n            if (this.config.nvi) {\n                const nviArray = decodeURIComponent(this.config.nvi).split(\",\");\n                const range = {start: parseInt(nviArray[0]), size: parseInt(nviArray[1])};\n                return this.readNormVectorIndex(range)\n            } else {\n                try {\n                    await this.readNormExpectedValuesAndNormVectorIndex();\n                    return this.normVectorIndex\n                } catch (e) {\n                    if (e.code === \"416\" || e.code === 416) {\n                        // This is expected if file does not contain norm vectors\n                        this.normExpectedValueVectorsPosition = undefined;\n                    } else {\n                        console.error(e);\n                    }\n                }\n            }\n        }\n\n        return this.normVectorIndex\n    }\n\n    async getNormalizationOptions() {\n        // Normalization options are computed as a side effect of loading the index.  A bit\n        // ugly but alternatives are worse.\n        await this.getNormVectorIndex();\n        return this.normalizationTypes;\n    }\n\n    /**\n     * Return a promise to load the normalization vector index\n     *\n     * @param dataset\n     * @param range  -- file range {position, size}\n     * @returns Promise for the normalization vector index\n     */\n    async readNormVectorIndex(range) {\n\n        await this.init();\n\n        this.normalizationVectorIndexRange = range;\n\n        const data = await this.file.read(range.start, range.size);\n\n        const binaryParser = new BinaryParser(new DataView(data));\n\n        this.normVectorIndex = {};\n\n        let nEntries = binaryParser.getInt();\n        while (nEntries-- > 0) {\n            this.parseNormVectorEntry(binaryParser);\n        }\n\n        return this.normVectorIndex;\n\n    }\n\n    /**\n     * This function is used when the position of the norm vector index is unknown.  We must read through the expected\n     * values to find the index\n     *\n     * @param dataset\n     * @returns {Promise}\n     */\n    async readNormExpectedValuesAndNormVectorIndex() {\n\n        await this.init();\n\n        if (this.normExpectedValueVectorsPosition === undefined) {\n            return;\n        }\n\n        const nviStart = await this.skipExpectedValues(this.normExpectedValueVectorsPosition);\n        let byteCount = INT;\n\n        let data = await this.file.read(nviStart, INT);\n        if (data.byteLength === 0) {\n            // This is possible if there are no norm vectors.  Its a legal v8 file, though uncommon\n            return;\n        }\n        const binaryParser = new BinaryParser(new DataView(data));\n        const nEntries = binaryParser.getInt();\n        const sizeEstimate = nEntries * 30;\n        const range = {start: nviStart + byteCount, size: sizeEstimate};\n\n        data = await this.file.read(range.start, range.size);\n        this.normalizedExpectedValueVectors = {};\n        this.normVectorIndex = {};\n\n        // Recursively process entries\n        await processEntries.call(this, nEntries, data);\n\n        this.config.nvi = nviStart.toString() + \",\" + byteCount;\n\n        async function processEntries(nEntries, data) {\n\n            const binaryParser = new BinaryParser(new DataView(data));\n\n            while (nEntries-- > 0) {\n\n                if (binaryParser.available() < 100) {\n\n                    nEntries++;   // Reset counter as entry is not processed\n\n                    byteCount += binaryParser.position;\n                    const sizeEstimate = Math.max(1000, nEntries * 30);\n                    const range = {start: nviStart + byteCount, size: sizeEstimate};\n                    const data = await this.file.read(range.start, range.size);\n                    return processEntries.call(this, nEntries, data);\n                }\n\n                this.parseNormVectorEntry(binaryParser);\n\n            }\n            byteCount += binaryParser.position;\n        }\n    }\n\n    /**\n     * This function is used when the position of the norm vector index is unknown.  We must read through the\n     * normalized expected values to find the index\n     *\n     * @param dataset\n     * @returns {Promise}\n     */\n    async skipExpectedValues(start) {\n\n        const version = this.version;\n        const file = new BufferedFile({file: this.file, size: 256000});\n        const range = {start: start, size: INT};\n        const data = await file.read(range.start, range.size);\n        const binaryParser = new BinaryParser(new DataView(data));\n        const nEntries = binaryParser.getInt();   // Total # of expected value chunks\n        if (nEntries === 0) {\n            return start + INT;\n        } else {\n            return parseNext(start + INT, nEntries);\n        }     // Skip 4 bytes for int\n\n\n        async function parseNext(start, nEntries) {\n\n            let range = {start: start, size: 500};\n            let chunkSize = 0;\n            let p0 = start;\n\n            let data = await file.read(range.start, range.size);\n            let binaryParser = new BinaryParser(new DataView(data));\n            binaryParser.getString(); // type\n            binaryParser.getString(); // unit\n            binaryParser.getInt(); // binSize\n            const nValues = version < 9 ? binaryParser.getInt() : binaryParser.getLong();\n\n            chunkSize += binaryParser.position + nValues * (version < 9 ? DOUBLE : FLOAT);\n\n            range = {start: start + chunkSize, size: INT};\n            data = await file.read(range.start, range.size);\n            binaryParser = new BinaryParser(new DataView(data));\n            const nChrScaleFactors = binaryParser.getInt();\n            chunkSize += (INT + nChrScaleFactors * (INT + (version < 9 ? DOUBLE : FLOAT)));\n\n\n            nEntries--;\n            if (nEntries === 0) {\n                return p0 + chunkSize;\n            } else {\n                return parseNext(p0 + chunkSize, nEntries);\n            }\n        }\n    }\n\n    getZoomIndexForBinSize(binSize, unit) {\n\n        unit = unit || \"BP\";\n\n        let resolutionArray;\n        if (unit === \"BP\") {\n            resolutionArray = this.bpResolutions;\n        } else if (unit === \"FRAG\") {\n            resolutionArray = this.fragResolutions;\n        } else {\n            throw new Error(\"Invalid unit: \" + unit);\n        }\n\n        for (let i = 0; i < resolutionArray.length; i++) {\n            if (resolutionArray[i] === binSize) return i;\n        }\n\n        return -1;\n    }\n\n    parseNormVectorEntry(binaryParser) {\n        const type = binaryParser.getString();      //15\n        const chrIdx = binaryParser.getInt();       //4\n        const unit = binaryParser.getString();      //3\n        const binSize = binaryParser.getInt();      //4\n        const filePosition = binaryParser.getLong();  //8\n        const sizeInBytes = this.version < 9 ? binaryParser.getInt() : binaryParser.getLong();     //4:8\n        const key = type + \"_\" + chrIdx + \"_\" + unit + \"_\" + binSize;\n        // TODO -- why does this not work?  NormalizationVector.getNormalizationVectorKey(type, chrIdx, unit, binSize);\n\n        if (!this.normalizationTypes.includes(type)) {\n            this.normalizationTypes.push(type);\n        }\n        this.normVectorIndex[key] = {filePosition: filePosition, size: sizeInBytes};\n    }\n\n    getFileChrName(chrAlias) {\n        if (this.chrAliasTable.hasOwnProperty(chrAlias)) {\n            return this.chrAliasTable[chrAlias]\n        } else {\n            return chrAlias\n        }\n    }\n\n\n    // NOTE sties are not currently used\n    // async getSites(chrName) {\n    //     let sites = this.fragmentSitesCache[chrName];\n    //     if (!sites) {\n    //         if (this.fragmentSitesIndex) {\n    //             const entry = self.fragmentSitesIndex[chrName];\n    //             if (entry && entry.nSites > 0) {\n    //                 sites = await this.readSites(entry.position, entry.nSites)\n    //                 this.fragmentSitesCache[chrName] = sites;\n    //             }\n    //         }\n    //     }\n    //     return sites;\n    // }\n    //\n\n}\n\n\nfunction getNormalizationVectorKey(type, chrIdx, unit, resolution) {\n    return type + \"_\" + chrIdx + \"_\" + unit + \"_\" + resolution;\n}\n\nfunction isGoogleDrive(url) {\n    return url.indexOf(\"drive.google.com\") >= 0 || url.indexOf(\"www.googleapis.com/drive\") > 0\n}\n\nclass Block {\n    constructor(blockNumber, zoomData, records, idx) {\n        this.blockNumber = blockNumber;\n        this.zoomData = zoomData;\n        this.records = records;\n        this.idx = idx;\n    }\n}\n\n\nclass BlockCache {\n\n    constructor() {\n        this.resolution = undefined;\n        this.map = new LRU(6);\n    }\n\n    set(resolution, key, value) {\n        if (this.resolution !== resolution) {\n            this.map.clear();\n        }\n        this.resolution = resolution;\n        this.map.set(key, value);\n    }\n\n    get(resolution, key) {\n        return this.resolution === resolution ? this.map.get(key) : undefined;\n    }\n\n    has(resolution, key) {\n        return this.resolution === resolution && this.map.has(key);\n    }\n}\n\nclass Straw {\n\n    constructor(config) {\n        this.config = config;\n        this.hicFile = new HicFile(config);\n    }\n\n    async getMetaData() {\n        return await this.hicFile.getMetaData()\n    }\n\n    //straw <NONE/VC/VC_SQRT/KR> <ile> <chr1>[:x1:x2] <chr2>[:y1:y2] <BP/FRAG> <binsize>\n    async getContactRecords(normalization, region1, region2, units, binsize) {\n        return this.hicFile.getContactRecords(normalization, region1, region2, units, binsize);\n    }\n\n    async getNormalizationOptions() {\n        return this.hicFile.getNormalizationOptions()\n    }\n\n    async getNVI() {\n        await this.hicFile.getNormVectorIndex();\n        return this.hicFile.config.nvi;\n    }\n\n    async printIndexStats() {\n        await this.hicFile.printIndexStats();\n    }\n\n    getFileChrName(chrAlias) {\n        if (this.hicFile.chrAliasTable.hasOwnProperty(chrAlias)) {\n            return this.hicFile.chrAliasTable[chrAlias]\n        } else {\n            return chrAlias\n        }\n    }\n}\n\nexport { Straw as default };\n"],"names":["Zlib","Huffman","Util","CRC32","DEFLATE","RESERVED","opt_params","this","files","comment","password","Zip","CompressionMethod","STORE","OperatingSystem","MSDOS","UNIX","MACINTOSH","Flags","ENCRYPT","DESCRIPTOR","UTF8","FileHeaderSignature","LocalFileHeaderSignature","CentralDirectorySignature","prototype","addFile","input","compressed","size","length","crc32","Array","Uint8Array","calc","deflateWithOption","Error","push","buffer","option","encrypted","setPassword","compress","file","output","op1","op2","op3","endOfCentralDirectorySize","offset","flags","compressionMethod","date","plainSize","filenameLength","extraFieldLength","commentLength","filename","extraField","tmp","key","i","il","j","jl","localFileSize","centralDirectorySize","createEncryptionKey","set","encode","Math","random","needVersion","Date","getMinutes","getSeconds","getHours","getMonth","getDate","getFullYear","RawDeflate","getByte","n","updateKeys","single","Uint32Array","buildHuffmanTable","lengths","table","bitLength","code","skip","reversed","rtemp","value","listSize","maxCodeLength","minCodeLength","Number","POSITIVE_INFINITY","RawInflate","blocks","bufferSize","totalpos","ip","bitsbuf","bitsbuflen","op","bfinal","bufferType","BufferType","ADAPTIVE","resize","BLOCK","MaxBackwardLength","MaxCopyLength","decompress","parseBlock","concatBufferBlock","concatBufferDynamic","Order","Uint16Array","LengthCodeTable","LengthExtraTable","DistCodeTable","DistExtraTable","FixedLiteralLengthTable","FixedDistanceTable","hdr","readBits","parseUncompressedBlock","parseFixedHuffmanBlock","parseDynamicHuffmanBlock","octet","readCodeByTable","codeWithLength","codeLength","inputLength","codeTable","len","preCopy","olength","subarray","expandBufferBlock","expandBufferAdaptive","fixRatio","decodeHuffmanAdaptive","decodeHuffmanBlock","codeLengthsTable","litlenTable","distTable","lengthTable","prev","repeat","hlit","hdist","hclen","codeLengths","litlen","dist","currentLitlenTable","ti","codeDist","lengthCodeTable","lengthExtraTable","distCodeTable","distExtraTable","opt_param","backward","newSize","maxInflateSize","ratio","addRatio","block","pos","limit","RawInflateStream","opt_buffersize","ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE","blockLength","sp","status","Status","INITIALIZED","ip_","bitsbuflen_","bitsbuf_","BlockType","UNCOMPRESSED","FIXED","DYNAMIC","BLOCK_HEADER_START","BLOCK_HEADER_END","BLOCK_BODY_START","BLOCK_BODY_END","DECODE_BLOCK_START","DECODE_BLOCK_END","newInput","stop","readBlockHeader","currentBlockType","readUncompressedBlockHeader","decodeHuffman","concatBuffer","save_","restore_","expandBuffer","bits","call","e","Inflate","cmf","flg","rawinflate","verify","method","Adler32","InflateStream","readHeader","Gunzip","member","decompressed","getMembers","slice","decodeMember","concatMember","isize","inflated","inflen","c","ci","str","mtime","GunzipMember","id1","id2","cm","xfl","os","Gzip","FlagsMask","FEXTRA","xlen","decodeSubField","FNAME","String","fromCharCode","name","join","FCOMMENT","FHCRC","crc16","data","toString","p","getName","getData","getMtime","deflateOptions","DefaultBufferSize","rawdeflate","now","UNKNOWN","charCodeAt","byteLength","FAT","AMIGA","VMS","VM_CMS","ATARI_TOS","HPFS","Z_SYSTEM","CP_M","TOPS_20","NTFS","QDOS","ACORN_RISCOS","FTEXT","Heap","getParent","index","getChild","current","parent","swap","heap","pop","compressionType","CompressionType","lazy","freqsLitLen","freqsDist","NONE","Lz77MinLength","Lz77MaxLength","WindowSize","MaxCodeLength","HUFMAX","FixedHuffmanTable","blockArray","position","makeNocompressBlock","makeFixedHuffmanBlock","makeDynamicHuffmanBlock","isFinalBlock","btype","nlen","stream","BitStream","writeBits","lz77","fixedHuffman","finish","litLenLengths","litLenCodes","distLengths","distCodes","treeSymbols","treeLengths","treeCodes","bitlen","hclenOrder","transLengths","getLengths_","getCodesFromLengths_","getTreeSymbols_","freqs","codes","dynamicHuffman","dataArray","litLen","literal","apply","Lz77Match","backwardDistance","getDistanceCode_","r","toLz77Array","codeArray","matchKey","matchList","longestMatch","prevMatch","windowSize","lz77buf","skipLength","writeMatch","match","lz77Array","shift","searchLongestMatch_","currentMatch","matchLength","l","matchMax","dl","permatch","litlenLengths","runLength","nResult","rpt","src","result","nodes","values","nSymbols","reversePackageMerge_","symbols","t","weight","next","minimumCost","flag","type","currentPosition","excess","half","takePackage","x","m","count","startCode","Unzip","eocdrOffset","numberOfThisDisk","startDisk","totalEntriesThisDisk","totalEntries","centralDirectoryOffset","fileHeaderList","filenameToIndex","FileHeader","version","compression","time","compressedSize","fileNameLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","relativeOffset","parse","LocalFileHeader","searchEndOfCentralDirectoryRecord","parseEndOfCentralDirectoryRecord","parseFileHeader","fileHeader","filelist","filetable","getFileData","localFileHeader","createDecryptionKey","decode","getFilenames","filenameList","stringToByteArray","split","array","update","adler","tlen","s1","s2","OptimizationParameter","bufferPosition","bitindex","DefaultBlockSize","oldbuf","number","reverse","ReverseTable","rev32_","s","crc","Table","num","Table_","Deflate","rawDeflate","prop","rawDeflateOption","flevel","LOG2E","log","BrowserLocalFile","constructor","blob","read","undefined","arrayBuffer","process","versions","node","RemoteFile","args","url","config","path","includes","replace","startsWith","ceil","headers","rangeString","oauthToken","token","async","Promise","resolve","resolveToken","apiKey","paramSeparator","addParameter","response","fetch","redirect","mode","console","error","err","statusText","ThrottledFile","rateLimiter","fulfill","reject","limiter","f","BufferedFile","bufferStart","bufferLength","start","end","bufferEnd","sliceStart","sliceEnd","l1","a1","l2","a2","concatBuffers","buffer1","buffer2","BinaryParser","dataView","littleEndian","view","VPointer","available","remLength","hasNext","retValue","getUint8","getShort","getInt16","getUShort","getUint16","getInt","getInt32","getUInt","getUint32","getLong","b","getString","getFixedLengthString","getFixedLengthTrimmedString","getFloat","getFloat32","getDouble","getFloat64","getVPointer","isLessThan","vp","isGreaterThan","print","MatrixZoomData","chr1","chr2","getKey","zoom","unit","binSize","getBlockNumbers","region1","region2","chr","sameChr","binsize","blockBinCount","blockColumnCount","x1","x2","y1","y2","col1","floor","col2","row1","row2","blockNumbers","row","column","blockNumber","getBlockNumbersV8","binX1","binX2","binY1","binY2","translatedLowerPAD","translatedHigherPAD","translatedNearerDepth","log2","abs","sqrt","translatedFurtherDepth","nearerDepth","min","furtherDepth","max","depth","pad","block_number","getBlockNumbersV9","parseMatrixZoomData","dis","zd","zoomIndex","sumCounts","occupiedCellCount","stdDev","percent95","nBlocks","blockIndex","StaticBlockIndex","avgCount","averageCount","filePosition","getBlockIndexEntry","Matrix","zoomDataList","bpZoomData","fragZoomData","findZoomForResolution","zdArray","getZoomData","getZoomDataByIndex","chrIdx1","chrIdx2","parseMatrix","chromosomes","DataView","c1","c2","nResolutions","zdList","ContactRecord","bin1","bin2","counts","LRU","map","Map","get","item","delete","val","has","first","clear","keys","NormalizationVector","nValues","dataType","cache","getValues","adjustedStart","adjustedEnd","startPosition","sizeInBytes","parser","chrIdx","resolution","getNormalizationVectorKey","nvi","isNode","GoogleRateLimiter","wait","isCalled","calls","fn","self","caller","setTimeout","bind","arguments","HicFile","alert","loadFragData","fragmentSitesCache","normVectorCache","normalizationTypes","matrixCache","blockCache","BlockCache","remote","remoteFile","indexOf","init","initialized","readHeaderAndFooter","getVersion","binaryParser","magic","getMetaData","meta","footerPosition","readFooter","remainingSize","Object","masterIndex","reduce","currentValue","MAX_VALUE","genomeId","normVectorIndexPosition","normVectorIndexSize","attributes","nAttributes","chromosomeIndexMap","nChrs","toLowerCase","wholeGenomeChromosome","wholeGenomeResolution","round","bpResolutions","nBpResolutions","fragResolutions","nFragResolutions","chrAliasTable","chrName","substr","nBytes","nEntries","miSize","expectedValueVectors","normExpectedValueVectorsPosition","printIndexStats","totalSize","maxSize","entry","getMatrix","matrix","readMatrix","idx","getContactRecords","normalization","units","allRecords","idx1","getFileChrName","idx2","getBlocks","contactRecords","nvX1","nvX2","nvY1","nvY2","normVector1","normVector2","isNorm","nv1","getNormalizationVector","nv2","rec","records","y","nvnv","isNaN","blockKey","msg","blockNumbersToQuery","promises","readBlock","newBlocks","all","concat","nRecords","binX","binY","binXOffset","binYOffset","useFloatContact","useIntXPos","useIntYPos","rowCount","colCount","nPts","w","Block","hasNormalizationVector","isInteger","canonicalName","normVectorIndex","getNormVectorIndex","isNormalizationValueAvailableAtResolution","chromosomeIndex","nv","URL","encodeURIComponent","hostname","pathname","hasOwnProperty","nviArray","decodeURIComponent","range","parseInt","readNormVectorIndex","readNormExpectedValuesAndNormVectorIndex","getNormalizationOptions","normalizationVectorIndexRange","parseNormVectorEntry","nviStart","skipExpectedValues","byteCount","normalizedExpectedValueVectors","processEntries","sizeEstimate","parseNext","chunkSize","p0","getZoomIndexForBinSize","resolutionArray","chrAlias","zoomData","Straw","hicFile","getNVI"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6526.b2c8fd93.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6526],{86526:(s,e,a)=>{a.r(e),a.d(e,{default:()=>b.Ay,getInputBaseUtilityClass:()=>l.g,inputBaseClasses:()=>l.A});var b=a(98879),l=a(3275)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6621.cf64e54c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6621],{66621:(e,a,t)=>{t.r(a),t.d(a,{default:()=>g});var n=t(46377),i=t(99834),r=t(66885),s=t(68120),c=t(9502),o=t(54702);class g extends n.BaseFeatureDataAdapter{async configurePre(){const e=this.pluginManager,a=this.getConf("vcfGzLocation"),t=this.getConf(["index","location"]),n=this.getConf(["index","indexType"]),r=(0,i.openLocation)(a,e),o="CSI"===n,g=new s.wD({filehandle:r,csiFilehandle:o?(0,i.openLocation)(t,e):void 0,tbiFilehandle:o?void 0:(0,i.openLocation)(t,e),chunkCacheSize:52428800}),u=await g.getHeader();return{vcf:g,parser:new c.A({header:u})}}async configure(){return this.configured||(this.configured=this.configurePre().catch((e=>{throw this.configured=void 0,e}))),this.configured}async getRefNames(e={}){const{vcf:a}=await this.configure();return a.getReferenceSequenceNames(e)}async getHeader(){const{vcf:e}=await this.configure();return e.getHeader()}async getMetadata(){const{parser:e}=await this.configure();return e.getMetadata()}getFeatures(e,a={}){return(0,r.ObservableCreate)((async t=>{const{refName:n,start:i,end:r}=e,{vcf:s,parser:c}=await this.configure();await s.getLines(n,i,r,{lineCallback:(e,a)=>{t.next(new o.A({variant:c.parseLine(e),parser:c,id:`${this.id}-vcf-${a}`}))},...a}),t.complete()}),a.signal)}freeResources(){}}}}]);
+//# sourceMappingURL=6621.cf64e54c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6621.cf64e54c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6621.cf64e54c.chunk.js","mappings":"4NAce,MAAMA,UAAwBC,EAAAA,uBAM3C,kBAAcC,GACZ,MAAMC,EAAKC,KAAKC,cACVC,EAAgBF,KAAKG,QAAQ,iBAC7BC,EAAWJ,KAAKG,QAAQ,CAAC,QAAS,aAClCE,EAAYL,KAAKG,QAAQ,CAAC,QAAS,cAEnCG,GAAaC,EAAAA,EAAAA,cAAaL,EAAeH,GACzCS,EAAsB,QAAdH,EACRI,EAAM,IAAIC,EAAAA,GAAiB,CAC/BJ,aACAK,cAAeH,GAAQD,EAAAA,EAAAA,cAAaH,EAAUL,QAAMa,EACpDC,cAAgBL,OAAqCI,GAA7BL,EAAAA,EAAAA,cAAaH,EAAUL,GAC/Ce,eAAgB,WAGZC,QAAeN,EAAIO,YACzB,MAAO,CACLP,MACAQ,OAAQ,IAAIC,EAAAA,EAAU,CAAEH,WAE5B,CAEA,eAAgBI,GAOd,OANKnB,KAAKoB,aACRpB,KAAKoB,WAAapB,KAAKF,eAAeuB,OAAOC,IAE3C,MADAtB,KAAKoB,gBAAaR,EACZU,CAAC,KAGJtB,KAAKoB,UACd,CAEA,iBAAaG,CAAYC,EAAoB,CAAC,GAC5C,MAAM,IAAEf,SAAcT,KAAKmB,YAC3B,OAAOV,EAAIgB,0BAA0BD,EACvC,CAEA,eAAMR,GACJ,MAAM,IAAEP,SAAcT,KAAKmB,YAC3B,OAAOV,EAAIO,WACb,CAEA,iBAAMU,GACJ,MAAM,OAAET,SAAiBjB,KAAKmB,YAC9B,OAAOF,EAAOS,aAChB,CAEOC,WAAAA,CAAYC,EAAyBJ,EAAoB,CAAC,GAC/D,OAAOK,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAM,QAAEC,EAAO,MAAEC,EAAK,IAAEC,GAAQL,GAC1B,IAAEnB,EAAG,OAAEQ,SAAiBjB,KAAKmB,kBAC7BV,EAAIyB,SAASH,EAASC,EAAOC,EAAK,CACtCE,aAAcA,CAACC,EAAMC,KACnBC,EAASC,KACP,IAAIC,EAAAA,EAAW,CACbC,QAASxB,EAAOyB,UAAUN,GAC1BnB,SACA0B,GAAI,GAAG3C,KAAK2C,UAAUN,MAEzB,KAEAb,IAELc,EAASM,UAAU,GAClBpB,EAAKqB,OACV,CAEOC,aAAAA,GAAuC,E","sources":["../../../plugins/variants/src/VcfTabixAdapter/VcfTabixAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util'\nimport { TabixIndexedFile } from '@gmod/tabix'\nimport VcfParser from '@gmod/vcf'\n\n// local\nimport VcfFeature from '../VcfFeature'\n\nexport default class VcfTabixAdapter extends BaseFeatureDataAdapter {\n  private configured?: Promise<{\n    vcf: TabixIndexedFile\n    parser: VcfParser\n  }>\n\n  private async configurePre() {\n    const pm = this.pluginManager\n    const vcfGzLocation = this.getConf('vcfGzLocation')\n    const location = this.getConf(['index', 'location'])\n    const indexType = this.getConf(['index', 'indexType'])\n\n    const filehandle = openLocation(vcfGzLocation, pm)\n    const isCSI = indexType === 'CSI'\n    const vcf = new TabixIndexedFile({\n      filehandle,\n      csiFilehandle: isCSI ? openLocation(location, pm) : undefined,\n      tbiFilehandle: !isCSI ? openLocation(location, pm) : undefined,\n      chunkCacheSize: 50 * 2 ** 20,\n    })\n\n    const header = await vcf.getHeader()\n    return {\n      vcf,\n      parser: new VcfParser({ header }),\n    }\n  }\n\n  protected async configure() {\n    if (!this.configured) {\n      this.configured = this.configurePre().catch((e: unknown) => {\n        this.configured = undefined\n        throw e\n      })\n    }\n    return this.configured\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    const { vcf } = await this.configure()\n    return vcf.getReferenceSequenceNames(opts)\n  }\n\n  async getHeader() {\n    const { vcf } = await this.configure()\n    return vcf.getHeader()\n  }\n\n  async getMetadata() {\n    const { parser } = await this.configure()\n    return parser.getMetadata()\n  }\n\n  public getFeatures(query: NoAssemblyRegion, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { refName, start, end } = query\n      const { vcf, parser } = await this.configure()\n      await vcf.getLines(refName, start, end, {\n        lineCallback: (line, fileOffset) => {\n          observer.next(\n            new VcfFeature({\n              variant: parser.parseLine(line),\n              parser,\n              id: `${this.id}-vcf-${fileOffset}`,\n            }),\n          )\n        },\n        ...opts,\n      })\n      observer.complete()\n    }, opts.signal)\n  }\n\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["VcfTabixAdapter","BaseFeatureDataAdapter","configurePre","pm","this","pluginManager","vcfGzLocation","getConf","location","indexType","filehandle","openLocation","isCSI","vcf","TabixIndexedFile","csiFilehandle","undefined","tbiFilehandle","chunkCacheSize","header","getHeader","parser","VcfParser","configure","configured","catch","e","getRefNames","opts","getReferenceSequenceNames","getMetadata","getFeatures","query","ObservableCreate","async","refName","start","end","getLines","lineCallback","line","fileOffset","observer","next","VcfFeature","variant","parseLine","id","complete","signal","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6658.fe512b5a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6658],{81762:(e,t,o)=>{o.d(t,{A:()=>i,P:()=>a});var r=o(7552);const n=r.createContext({});function a(){return r.useContext(n)}const i=n},23491:(e,t,o)=>{o.d(t,{A:()=>m});var r=o(7552),n=o(93878),a=o(70799),i=o(15622),l=o(51148),s=o(60129),c=o(4785),d=o(29628),p=o(81762),b=o(62487),v=o(69500);const u=(0,l.Ay)("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.completed&&t.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),C=(0,l.Ay)("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.line,t[`line${(0,i.A)(o.orientation)}`]]}})((0,s.A)((({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[600];return{display:"block",borderColor:e.vars?e.vars.palette.StepConnector.border:t,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}}))),m=r.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiStepConnector"}),{className:l,...s}=o,{alternativeLabel:m,orientation:A="horizontal"}=r.useContext(d.A),{active:h,disabled:f,completed:y}=r.useContext(p.A),S={...o,alternativeLabel:m,orientation:A,active:h,completed:y,disabled:f},L=(e=>{const{classes:t,orientation:o,alternativeLabel:r,active:n,completed:l,disabled:s}=e,c={root:["root",o,r&&"alternativeLabel",n&&"active",l&&"completed",s&&"disabled"],line:["line",`line${(0,i.A)(o)}`]};return(0,a.A)(c,b.G,t)})(S);return(0,v.jsx)(u,{className:(0,n.A)(L.root,l),ref:t,ownerState:S,...s,children:(0,v.jsx)(C,{className:L.line,ownerState:S})})}))},76658:(e,t,o)=>{o.r(t),o.d(t,{default:()=>r.A,getStepConnectorUtilityClass:()=>n.G,stepConnectorClasses:()=>n.A});var r=o(23491),n=o(62487)},62487:(e,t,o)=>{o.d(t,{A:()=>i,G:()=>a});var r=o(33761),n=o(85693);function a(e){return(0,n.Ay)("MuiStepConnector",e)}const i=(0,r.A)("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"])},29628:(e,t,o)=>{o.d(t,{A:()=>i,s:()=>a});var r=o(7552);const n=r.createContext({});function a(){return r.useContext(n)}const i=n}}]);
+//# sourceMappingURL=6658.fe512b5a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6658.fe512b5a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6658.fe512b5a.chunk.js","mappings":"gKAIA,MAAMA,EAA2B,gBAAoB,CAAC,GAS/C,SAASC,IACd,OAAO,aAAiBD,EAC1B,CACA,S,8JCFA,MAeME,GAAoB,QAAO,MAAO,CACtCC,KAAM,mBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAcF,EAAWG,kBAAoBJ,EAAOI,iBAAkBH,EAAWI,WAAaL,EAAOK,UAAU,GAPhI,CASvB,CACDC,KAAM,WACNC,SAAU,CAAC,CACTR,MAAO,CACLI,YAAa,YAEfK,MAAO,CACLC,WAAY,KAEb,CACDV,MAAO,CACLK,kBAAkB,GAEpBI,MAAO,CACLE,SAAU,WACVC,IAAK,GACLC,KAAM,oBACNC,MAAO,wBAIPC,GAAoB,QAAO,OAAQ,CACvClB,KAAM,mBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOe,KAAMf,EAAO,QAAO,OAAWC,EAAWE,gBAAgB,GAPnD,EASvB,QAAU,EACXa,YAEA,MAAMC,EAAqC,UAAvBD,EAAME,QAAQC,KAAmBH,EAAME,QAAQE,KAAK,KAAOJ,EAAME,QAAQE,KAAK,KAClG,MAAO,CACLC,QAAS,QACTJ,YAAaD,EAAMM,KAAON,EAAMM,KAAKJ,QAAQK,cAAcC,OAASP,EACpEV,SAAU,CAAC,CACTR,MAAO,CACLI,YAAa,cAEfK,MAAO,CACLiB,eAAgB,QAChBC,eAAgB,IAEjB,CACD3B,MAAO,CACLI,YAAa,YAEfK,MAAO,CACLmB,gBAAiB,QACjBC,gBAAiB,EACjBC,UAAW,MAGhB,KA0DH,EAxDmC,cAAiB,SAAuBC,EAASC,GAClF,MAAMhC,GAAQ,OAAgB,CAC5BA,MAAO+B,EACPlC,KAAM,sBAEF,UACJoC,KACGC,GACDlC,GACE,iBACJK,EAAgB,YAChBD,EAAc,cACZ,aAAiB,MACf,OACJ+B,EAAM,SACNC,EAAQ,UACR9B,GACE,aAAiB,KACfJ,EAAa,IACdF,EACHK,mBACAD,cACA+B,SACA7B,YACA8B,YAEIC,EA3GkBnC,KACxB,MAAM,QACJmC,EAAO,YACPjC,EAAW,iBACXC,EAAgB,OAChB8B,EAAM,UACN7B,EAAS,SACT8B,GACElC,EACEoC,EAAQ,CACZnC,KAAM,CAAC,OAAQC,EAAaC,GAAoB,mBAAoB8B,GAAU,SAAU7B,GAAa,YAAa8B,GAAY,YAC9HpB,KAAM,CAAC,OAAQ,QAAO,OAAWZ,OAEnC,OAAO,OAAekC,EAAO,IAA8BD,EAAQ,EA8FnDE,CAAkBrC,GAClC,OAAoB,SAAKN,EAAmB,CAC1CqC,WAAW,OAAKI,EAAQlC,KAAM8B,GAC9BD,IAAKA,EACL9B,WAAYA,KACTgC,EACHM,UAAuB,SAAKzB,EAAmB,CAC7CkB,UAAWI,EAAQrB,KACnBd,WAAYA,KAGlB,G,kNClIO,SAASuC,EAA6B3C,GAC3C,OAAO,QAAqB,mBAAoBA,EAClD,CACA,MACA,GAD6B,OAAuB,mBAAoB,CAAC,OAAQ,aAAc,WAAY,mBAAoB,SAAU,YAAa,WAAY,OAAQ,iBAAkB,gB,yDCD5L,MAAM4C,EAA8B,gBAAoB,CAAC,GASlD,SAASC,IACd,OAAO,aAAiBD,EAC1B,CACA,S","sources":["../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/StepConnector/StepConnector.js","../../../node_modules/@mui/material/StepConnector/stepConnectorClasses.js","../../../node_modules/@mui/material/Stepper/StepperContext.js"],"sourcesContent":["import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"../Step/StepContext.js\";\nimport { getStepConnectorUtilityClass } from \"./stepConnectorClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    alternativeLabel,\n    active,\n    completed,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, alternativeLabel && 'alternativeLabel', active && 'active', completed && 'completed', disabled && 'disabled'],\n    line: ['line', `line${capitalize(orientation)}`]\n  };\n  return composeClasses(slots, getStepConnectorUtilityClass, classes);\n};\nconst StepConnectorRoot = styled('div', {\n  name: 'MuiStepConnector',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.completed && styles.completed];\n  }\n})({\n  flex: '1 1 auto',\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      marginLeft: 12 // half icon\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      position: 'absolute',\n      top: 8 + 4,\n      left: 'calc(-50% + 20px)',\n      right: 'calc(50% + 20px)'\n    }\n  }]\n});\nconst StepConnectorLine = styled('span', {\n  name: 'MuiStepConnector',\n  slot: 'Line',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.line, styles[`line${capitalize(ownerState.orientation)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600];\n  return {\n    display: 'block',\n    borderColor: theme.vars ? theme.vars.palette.StepConnector.border : borderColor,\n    variants: [{\n      props: {\n        orientation: 'horizontal'\n      },\n      style: {\n        borderTopStyle: 'solid',\n        borderTopWidth: 1\n      }\n    }, {\n      props: {\n        orientation: 'vertical'\n      },\n      style: {\n        borderLeftStyle: 'solid',\n        borderLeftWidth: 1,\n        minHeight: 24\n      }\n    }]\n  };\n}));\nconst StepConnector = /*#__PURE__*/React.forwardRef(function StepConnector(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepConnector'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation = 'horizontal'\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed\n  } = React.useContext(StepContext);\n  const ownerState = {\n    ...props,\n    alternativeLabel,\n    orientation,\n    active,\n    completed,\n    disabled\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(StepConnectorRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(StepConnectorLine, {\n      className: classes.line,\n      ownerState: ownerState\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepConnector.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepConnector;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepConnectorUtilityClass(slot) {\n  return generateUtilityClass('MuiStepConnector', slot);\n}\nconst stepConnectorClasses = generateUtilityClasses('MuiStepConnector', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'active', 'completed', 'disabled', 'line', 'lineHorizontal', 'lineVertical']);\nexport default stepConnectorClasses;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;"],"names":["StepContext","useStepContext","StepConnectorRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","alternativeLabel","completed","flex","variants","style","marginLeft","position","top","left","right","StepConnectorLine","line","theme","borderColor","palette","mode","grey","display","vars","StepConnector","border","borderTopStyle","borderTopWidth","borderLeftStyle","borderLeftWidth","minHeight","inProps","ref","className","other","active","disabled","classes","slots","useUtilityClasses","children","getStepConnectorUtilityClass","StepperContext","useStepperContext"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6683.2a35f0fe.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6683],{7720:(r,e,t)=>{t.d(e,{A:()=>a});var o=t(74893),n=t(69500);const a=(0,o.A)((0,n.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},63165:(r,e,t)=>{t.d(e,{A:()=>u});var o=t(7552),n=t(93878),a=t(70799),i=t(51148),s=t(60129),l=t(4785),c=t(79509),d=t(69500);const p=(0,i.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(r,e)=>e.root})((0,s.A)((({theme:r})=>({padding:r.spacing(1,2,2)})))),u=o.forwardRef((function(r,e){const t=(0,l.b)({props:r,name:"MuiAccordionDetails"}),{className:o,...i}=t,s=t,u=(r=>{const{classes:e}=r;return(0,a.A)({root:["root"]},c.n,e)})(s);return(0,d.jsx)(p,{className:(0,n.A)(u.root,o),ref:e,ownerState:s,...i})}))},79509:(r,e,t)=>{t.d(e,{A:()=>i,n:()=>a});var o=t(33761),n=t(85693);function a(r){return(0,n.Ay)("MuiAccordionDetails",r)}const i=(0,o.A)("MuiAccordionDetails",["root"])},41578:(r,e,t)=>{t.d(e,{A:()=>A});var o=t(7552),n=t(93878),a=t(70799),i=t(51148),s=t(60129),l=t(4785),c=t(48054),d=t(51132),p=t(33761),u=t(85693);function g(r){return(0,u.Ay)("MuiAccordionSummary",r)}const m=(0,p.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var h=t(69500);const v=(0,i.Ay)(c.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(r,e)=>e.root})((0,s.A)((({theme:r})=>{const e={duration:r.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:r.spacing(0,2),transition:r.transitions.create(["min-height","background-color"],e),[`&.${m.focusVisible}`]:{backgroundColor:(r.vars||r).palette.action.focus},[`&.${m.disabled}`]:{opacity:(r.vars||r).palette.action.disabledOpacity},[`&:hover:not(.${m.disabled})`]:{cursor:"pointer"},variants:[{props:r=>!r.disableGutters,style:{[`&.${m.expanded}`]:{minHeight:64}}}]}}))),b=(0,i.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(r,e)=>e.content})((0,s.A)((({theme:r})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:r=>!r.disableGutters,style:{transition:r.transitions.create(["margin"],{duration:r.transitions.duration.shortest}),[`&.${m.expanded}`]:{margin:"20px 0"}}}]})))),f=(0,i.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(r,e)=>e.expandIconWrapper})((0,s.A)((({theme:r})=>({display:"flex",color:(r.vars||r).palette.action.active,transform:"rotate(0deg)",transition:r.transitions.create("transform",{duration:r.transitions.duration.shortest}),[`&.${m.expanded}`]:{transform:"rotate(180deg)"}})))),A=o.forwardRef((function(r,e){const t=(0,l.b)({props:r,name:"MuiAccordionSummary"}),{children:i,className:s,expandIcon:c,focusVisibleClassName:p,onClick:u,...m}=t,{disabled:A=!1,disableGutters:y,expanded:x,toggle:O}=o.useContext(d.A),w={...t,expanded:x,disabled:A,disableGutters:y},C=(r=>{const{classes:e,expanded:t,disabled:o,disableGutters:n}=r,i={root:["root",t&&"expanded",o&&"disabled",!n&&"gutters"],focusVisible:["focusVisible"],content:["content",t&&"expanded",!n&&"contentGutters"],expandIconWrapper:["expandIconWrapper",t&&"expanded"]};return(0,a.A)(i,g,e)})(w);return(0,h.jsxs)(v,{focusRipple:!1,disableRipple:!0,disabled:A,component:"div","aria-expanded":x,className:(0,n.A)(C.root,s),focusVisibleClassName:(0,n.A)(C.focusVisible,p),onClick:r=>{O&&O(r),u&&u(r)},ref:e,ownerState:w,...m,children:[(0,h.jsx)(b,{className:C.content,ownerState:w,children:i}),c&&(0,h.jsx)(f,{className:C.expandIconWrapper,ownerState:w,children:c})]})}))},84885:(r,e,t)=>{t.d(e,{A:()=>b});var o=t(7552),n=t(93878),a=t(43583),i=t(70799),s=t(1045);var l=t(51148),c=t(60129),d=t(58520),p=t(4785),u=t(15622),g=t(47839),m=t(69500);const h=(0,l.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(r,e)=>e.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),v=(0,l.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.badge,e[t.variant],e[`anchorOrigin${(0,u.A)(t.anchorOrigin.vertical)}${(0,u.A)(t.anchorOrigin.horizontal)}${(0,u.A)(t.overlap)}`],"default"!==t.color&&e[`color${(0,u.A)(t.color)}`],t.invisible&&e.invisible]}})((0,c.A)((({theme:r})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:r.typography.fontFamily,fontWeight:r.typography.fontWeightMedium,fontSize:r.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.enteringScreen}),variants:[...Object.entries(r.palette).filter((0,d.A)(["contrastText"])).map((([e])=>({props:{color:e},style:{backgroundColor:(r.vars||r).palette[e].main,color:(r.vars||r).palette[e].contrastText}}))),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"rectangular"===r.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"right"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:r})=>"top"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:r})=>"bottom"===r.anchorOrigin.vertical&&"left"===r.anchorOrigin.horizontal&&"circular"===r.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${g.A.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:r.transitions.create("transform",{easing:r.transitions.easing.easeInOut,duration:r.transitions.duration.leavingScreen})}}]})))),b=o.forwardRef((function(r,e){const t=(0,p.b)({props:r,name:"MuiBadge"}),{anchorOrigin:o={vertical:"top",horizontal:"right"},className:l,classes:c,component:d,components:b={},componentsProps:f={},children:A,overlap:y="rectangular",color:x="default",invisible:O=!1,max:w=99,badgeContent:C,slots:S,slotProps:$,showZero:R=!1,variant:k="standard",...M}=t,{badgeContent:z,invisible:N,max:L,displayValue:B}=function(r){const{badgeContent:e,invisible:t=!1,max:o=99,showZero:n=!1}=r,i=(0,a.A)({badgeContent:e,max:o});let s=t;!1!==t||0!==e||n||(s=!0);const{badgeContent:l,max:c=o}=s?i:r;return{badgeContent:l,invisible:s,max:c,displayValue:l&&Number(l)>c?`${c}+`:l}}({max:w,invisible:O,badgeContent:C,showZero:R}),T=(0,a.A)({anchorOrigin:o,color:x,overlap:y,variant:k,badgeContent:C}),V=N||null==z&&"dot"!==k,{color:W=x,overlap:j=y,anchorOrigin:D=o,variant:I=k}=V?T:t,P="dot"!==I?B:void 0,G={...t,badgeContent:z,invisible:V,max:L,displayValue:P,showZero:R,anchorOrigin:D,color:W,overlap:j,variant:I},F=(r=>{const{color:e,anchorOrigin:t,invisible:o,overlap:n,variant:a,classes:s={}}=r,l={root:["root"],badge:["badge",a,o&&"invisible",`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}`,`anchorOrigin${(0,u.A)(t.vertical)}${(0,u.A)(t.horizontal)}${(0,u.A)(n)}`,`overlap${(0,u.A)(n)}`,"default"!==e&&`color${(0,u.A)(e)}`]};return(0,i.A)(l,g.w,s)})(G),H=S?.root??b.Root??h,X=S?.badge??b.Badge??v,Z=$?.root??f.root,_=$?.badge??f.badge,E=(0,s.A)({elementType:H,externalSlotProps:Z,externalForwardedProps:M,additionalProps:{ref:e,as:d},ownerState:G,className:(0,n.A)(Z?.className,F.root,l)}),Y=(0,s.A)({elementType:X,externalSlotProps:_,ownerState:G,className:(0,n.A)(F.badge,_?.className)});return(0,m.jsxs)(H,{...E,children:[A,(0,m.jsx)(X,{...Y,children:P})]})}))},47839:(r,e,t)=>{t.d(e,{A:()=>i,w:()=>a});var o=t(33761),n=t(85693);function a(r){return(0,n.Ay)("MuiBadge",r)}const i=(0,o.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"])},87731:(r,e,t)=>{t.d(e,{A:()=>x});var o=t(7552),n=t(93878),a=t(72639),i=t(70799),s=t(91527),l=t(15622),c=t(51148),d=t(48231),p=t(60129),u=t(58520),g=t(4785),m=t(36715),h=t(58161),v=t(39995);const b=({theme:r,ownerState:e})=>{const t=e.color,o=(0,v.Yn)(r,`palette.${t}`,!1)||e.color,n=(0,v.Yn)(r,`palette.${t}Channel`);return"vars"in r&&n?`rgba(${n} / 0.4)`:(0,a.X4)(o,.4)};var f=t(69500);const A={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},y=(0,c.Ay)(m.A,{name:"MuiLink",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[`underline${(0,l.A)(t.underline)}`],"button"===t.component&&e.button]}})((0,p.A)((({theme:r})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:r,ownerState:e})=>"always"===r&&"inherit"!==e.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(r.palette).filter((0,u.A)()).map((([e])=>({props:{underline:"always",color:e},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette[e].mainChannel} / 0.4)`:(0,a.X4)(r.palette[e].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(r.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":r.vars?`rgba(${r.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(r.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(r.vars||r).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${h.A.focusVisible}`]:{outline:"auto"}}}]})))),x=o.forwardRef((function(r,e){const t=(0,g.b)({props:r,name:"MuiLink"}),a=(0,d.A)(),{className:c,color:p="primary",component:u="a",onBlur:m,onFocus:v,TypographyClasses:x,underline:O="always",variant:w="inherit",sx:C,...S}=t,[$,R]=o.useState(!1),k={...t,color:p,component:u,focusVisible:$,underline:O,variant:w},M=(r=>{const{classes:e,component:t,focusVisible:o,underline:n}=r,a={root:["root",`underline${(0,l.A)(n)}`,"button"===t&&"button",o&&"focusVisible"]};return(0,i.A)(a,h.t,e)})(k);return(0,f.jsx)(y,{color:p,className:(0,n.A)(M.root,c),classes:x,component:u,onBlur:r=>{(0,s.A)(r.target)||R(!1),m&&m(r)},onFocus:r=>{(0,s.A)(r.target)&&R(!0),v&&v(r)},ref:e,ownerState:k,variant:w,...S,sx:[...void 0===A[p]?[{color:p}]:[],...Array.isArray(C)?C:[C]],style:{...S.style,..."always"===O&&"inherit"!==p&&!A[p]&&{"--Link-underlineColor":b({theme:a,ownerState:k})}}})}))},58161:(r,e,t)=>{t.d(e,{A:()=>i,t:()=>a});var o=t(33761),n=t(85693);function a(r){return(0,n.Ay)("MuiLink",r)}const i=(0,o.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])}}]);
+//# sourceMappingURL=6683.2a35f0fe.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6683.2a35f0fe.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6683.2a35f0fe.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/ExpandMore.js","../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../../../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../../../node_modules/@mui/material/Badge/Badge.js","../../../node_modules/@mui/material/Badge/useBadge.js","../../../node_modules/@mui/material/Badge/badgeClasses.js","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getAccordionDetailsUtilityClass } from \"./accordionDetailsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n})));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionDetailsRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport AccordionContext from \"../Accordion/AccordionContext.js\";\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from \"./accordionSummaryClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    },\n    variants: [{\n      props: props => !props.disableGutters,\n      style: {\n        [`&.${accordionSummaryClasses.expanded}`]: {\n          minHeight: 64\n        }\n      }\n    }]\n  };\n}));\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0',\n  variants: [{\n    props: props => !props.disableGutters,\n    style: {\n      transition: theme.transitions.create(['margin'], {\n        duration: theme.transitions.duration.shortest\n      }),\n      [`&.${accordionSummaryClasses.expanded}`]: {\n        margin: '20px 0'\n      }\n    }\n  }]\n})));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n})));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n    children,\n    className,\n    expandIcon,\n    focusVisibleClassName,\n    onClick,\n    ...other\n  } = props;\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    expanded,\n    disabled,\n    disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, {\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from \"./useBadge.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport badgeClasses, { getBadgeUtilityClass } from \"./badgeClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    anchorOrigin,\n    invisible,\n    overlap,\n    variant,\n    classes = {}\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  position: 'relative',\n  display: 'inline-flex',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n  name: 'MuiBadge',\n  slot: 'Badge',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  justifyContent: 'center',\n  alignContent: 'center',\n  alignItems: 'center',\n  position: 'absolute',\n  boxSizing: 'border-box',\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(12),\n  minWidth: RADIUS_STANDARD * 2,\n  lineHeight: 1,\n  padding: '0 6px',\n  height: RADIUS_STANDARD * 2,\n  borderRadius: RADIUS_STANDARD,\n  zIndex: 1,\n  // Render the badge on top of potential ripples.\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.enteringScreen\n  }),\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      color: (theme.vars || theme).palette[color].contrastText\n    }\n  })), {\n    props: {\n      variant: 'dot'\n    },\n    style: {\n      borderRadius: RADIUS_DOT,\n      height: RADIUS_DOT * 2,\n      minWidth: RADIUS_DOT * 2,\n      padding: 0\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      right: 0,\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      top: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n    style: {\n      bottom: 0,\n      left: 0,\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, -50%)',\n      transformOrigin: '100% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      right: '14%',\n      transform: 'scale(1) translate(50%, 50%)',\n      transformOrigin: '100% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(50%, 50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      top: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, -50%)',\n      transformOrigin: '0% 0%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, -50%)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n    style: {\n      bottom: '14%',\n      left: '14%',\n      transform: 'scale(1) translate(-50%, 50%)',\n      transformOrigin: '0% 100%',\n      [`&.${badgeClasses.invisible}`]: {\n        transform: 'scale(0) translate(-50%, 50%)'\n      }\n    }\n  }, {\n    props: {\n      invisible: true\n    },\n    style: {\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeInOut,\n        duration: theme.transitions.duration.leavingScreen\n      })\n    }\n  }]\n})));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBadge'\n  });\n  const {\n    anchorOrigin: anchorOriginProp = {\n      vertical: 'top',\n      horizontal: 'right'\n    },\n    className,\n    classes: classesProp,\n    component,\n    components = {},\n    componentsProps = {},\n    children,\n    overlap: overlapProp = 'rectangular',\n    color: colorProp = 'default',\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    badgeContent: badgeContentProp,\n    slots,\n    slotProps,\n    showZero = false,\n    variant: variantProp = 'standard',\n    ...other\n  } = props;\n  const {\n    badgeContent,\n    invisible: invisibleFromHook,\n    max,\n    displayValue: displayValueFromHook\n  } = useBadge({\n    max: maxProp,\n    invisible: invisibleProp,\n    badgeContent: badgeContentProp,\n    showZero\n  });\n  const prevProps = usePreviousProps({\n    anchorOrigin: anchorOriginProp,\n    color: colorProp,\n    overlap: overlapProp,\n    variant: variantProp,\n    badgeContent: badgeContentProp\n  });\n  const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n  const {\n    color = colorProp,\n    overlap = overlapProp,\n    anchorOrigin = anchorOriginProp,\n    variant = variantProp\n  } = invisible ? prevProps : props;\n  const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n  const ownerState = {\n    ...props,\n    badgeContent,\n    invisible,\n    max,\n    displayValue,\n    showZero,\n    anchorOrigin,\n    color,\n    overlap,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = slots?.root ?? components.Root ?? BadgeRoot;\n  const BadgeSlot = slots?.badge ?? components.Badge ?? BadgeBadge;\n  const rootSlotProps = slotProps?.root ?? componentsProps.root;\n  const badgeSlotProps = slotProps?.badge ?? componentsProps.badge;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(rootSlotProps?.className, classes.root, className)\n  });\n  const badgeProps = useSlotProps({\n    elementType: BadgeSlot,\n    externalSlotProps: badgeSlotProps,\n    ownerState,\n    className: clsx(classes.badge, badgeSlotProps?.className)\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, {\n    ...rootProps,\n    children: [children, /*#__PURE__*/_jsx(BadgeSlot, {\n      ...badgeProps,\n      children: displayValue\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The anchor of the badge.\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'right',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n    vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n  }),\n  /**\n   * The content rendered within the badge.\n   */\n  badgeContent: PropTypes.node,\n  /**\n   * The badge will be added relative to this node.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Badge: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * If `true`, the badge is invisible.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * Max count to show.\n   * @default 99\n   */\n  max: PropTypes.number,\n  /**\n   * Wrapped shape the badge should overlap.\n   * @default 'rectangular'\n   */\n  overlap: PropTypes.oneOf(['circular', 'rectangular']),\n  /**\n   * Controls whether the badge is hidden when `badgeContent` is zero.\n   * @default false\n   */\n  showZero: PropTypes.bool,\n  /**\n   * The props used for each slot inside the Badge.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Badge.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    badge: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;"],"names":["d","AccordionDetailsRoot","name","slot","overridesResolver","props","styles","root","theme","padding","spacing","inProps","ref","className","other","ownerState","classes","useUtilityClasses","getAccordionDetailsUtilityClass","getAccordionSummaryUtilityClass","generateUtilityClass","generateUtilityClasses","AccordionSummaryRoot","styled","ButtonBase","memoTheme","transition","duration","transitions","shortest","display","minHeight","create","focusVisible","backgroundColor","vars","palette","action","focus","disabled","opacity","disabledOpacity","cursor","variants","disableGutters","style","expanded","AccordionSummaryContent","content","flexGrow","margin","AccordionSummaryExpandIconWrapper","expandIconWrapper","color","active","transform","children","expandIcon","focusVisibleClassName","onClick","toggle","AccordionContext","A","slots","composeClasses","focusRipple","disableRipple","component","clsx","event","BadgeRoot","position","verticalAlign","flexShrink","BadgeBadge","badge","variant","capitalize","anchorOrigin","vertical","horizontal","overlap","invisible","flexDirection","flexWrap","justifyContent","alignContent","alignItems","boxSizing","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","minWidth","RADIUS_STANDARD","lineHeight","height","borderRadius","zIndex","easing","easeInOut","enteringScreen","Object","entries","filter","createSimplePaletteValueFilter","map","main","contrastText","RADIUS_DOT","top","right","transformOrigin","badgeClasses","bottom","left","leavingScreen","anchorOriginProp","classesProp","components","componentsProps","overlapProp","colorProp","invisibleProp","max","maxProp","badgeContent","badgeContentProp","slotProps","showZero","variantProp","invisibleFromHook","displayValue","displayValueFromHook","parameters","prevProps","usePreviousProps","Number","undefined","RootSlot","Root","BadgeSlot","Badge","rootSlotProps","badgeSlotProps","rootProps","useSlotProps","elementType","externalSlotProps","externalForwardedProps","additionalProps","as","badgeProps","getBadgeUtilityClass","transformedColor","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","Typography","underline","button","textDecoration","textDecorationColor","mainChannel","text","primaryChannel","secondaryChannel","WebkitTapHighlightColor","outline","border","userSelect","MozAppearance","WebkitAppearance","borderStyle","linkClasses","useTheme","onBlur","onFocus","TypographyClasses","sx","setFocusVisible","isFocusVisible","target","Array","isArray","getLinkUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6703.faa93a20.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6703],{81762:(e,t,r)=>{r.d(t,{A:()=>l,P:()=>n});var a=r(7552);const o=a.createContext({});function n(){return a.useContext(o)}const l=o},47450:(e,t,r)=>{r.d(t,{A:()=>h});var a=r(7552),o=r(93878),n=r(70799),l=r(51148),i=r(60129),s=r(4785),c=r(74893),p=r(69500);const d=(0,c.A)((0,p.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),m=(0,c.A)((0,p.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var v,b=r(2859),A=r(72755);const u=(0,l.Ay)(b.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>({display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${A.A.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${A.A.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${A.A.error}`]:{color:(e.vars||e).palette.error.main}})))),x=(0,l.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(e,t)=>t.text})((0,i.A)((({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})))),h=a.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiStepIcon"}),{active:a=!1,className:l,completed:i=!1,error:c=!1,icon:b,...h}=r,y={...r,active:a,completed:i,error:c},f=(e=>{const{classes:t,active:r,completed:a,error:o}=e,l={root:["root",r&&"active",a&&"completed",o&&"error"],text:["text"]};return(0,n.A)(l,A.K,t)})(y);if("number"==typeof b||"string"==typeof b){const e=(0,o.A)(l,f.root);return c?(0,p.jsx)(u,{as:m,className:e,ref:t,ownerState:y,...h}):i?(0,p.jsx)(u,{as:d,className:e,ref:t,ownerState:y,...h}):(0,p.jsxs)(u,{className:e,ref:t,ownerState:y,...h,children:[v||(v=(0,p.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,p.jsx)(x,{className:f.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:y,children:b})]})}return b}))},72755:(e,t,r)=>{r.d(t,{A:()=>l,K:()=>n});var a=r(33761),o=r(85693);function n(e){return(0,o.Ay)("MuiStepIcon",e)}const l=(0,a.A)("MuiStepIcon",["root","active","completed","error","text"])},96403:(e,t,r)=>{r.d(t,{A:()=>f});var a=r(70799),o=r(93878),n=r(7552),l=r(81762),i=r(47450),s=r(29628),c=r(51148),p=r(60129),d=r(4785),m=r(34247),v=r(43045),b=r(69500);const A=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.orientation]]}})({display:"flex",alignItems:"center",[`&.${m.A.alternativeLabel}`]:{flexDirection:"column"},[`&.${m.A.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),u=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"Label",overridesResolver:(e,t)=>t.label})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"block",transition:e.transitions.create("color",{duration:e.transitions.duration.shortest}),[`&.${m.A.active}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${m.A.completed}`]:{color:(e.vars||e).palette.text.primary,fontWeight:500},[`&.${m.A.alternativeLabel}`]:{marginTop:16},[`&.${m.A.error}`]:{color:(e.vars||e).palette.error.main}})))),x=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"IconContainer",overridesResolver:(e,t)=>t.iconContainer})({flexShrink:0,display:"flex",paddingRight:8,[`&.${m.A.alternativeLabel}`]:{paddingRight:0}}),h=(0,c.Ay)("span",{name:"MuiStepLabel",slot:"LabelContainer",overridesResolver:(e,t)=>t.labelContainer})((0,p.A)((({theme:e})=>({width:"100%",color:(e.vars||e).palette.text.secondary,[`&.${m.A.alternativeLabel}`]:{textAlign:"center"}})))),y=n.forwardRef((function(e,t){const r=(0,d.b)({props:e,name:"MuiStepLabel"}),{children:c,className:p,componentsProps:y={},error:f=!1,icon:S,optional:L,slots:C={},slotProps:w={},StepIconComponent:g,StepIconProps:j,...M}=r,{alternativeLabel:N,orientation:R}=n.useContext(s.A),{active:I,disabled:$,completed:k,icon:z}=n.useContext(l.A),P=S||z;let T=g;P&&!T&&(T=i.A);const F={...r,active:I,alternativeLabel:N,completed:k,disabled:$,error:f,orientation:R},_=(e=>{const{classes:t,orientation:r,active:o,completed:n,error:l,disabled:i,alternativeLabel:s}=e,c={root:["root",r,l&&"error",i&&"disabled",s&&"alternativeLabel"],label:["label",o&&"active",n&&"completed",l&&"error",i&&"disabled",s&&"alternativeLabel"],iconContainer:["iconContainer",o&&"active",n&&"completed",l&&"error",i&&"disabled",s&&"alternativeLabel"],labelContainer:["labelContainer",s&&"alternativeLabel"]};return(0,a.A)(c,m.p,t)})(F),W={slots:C,slotProps:{stepIcon:j,...y,...w}},[K,B]=(0,v.A)("label",{elementType:u,externalForwardedProps:W,ownerState:F}),[D,U]=(0,v.A)("stepIcon",{elementType:T,externalForwardedProps:W,ownerState:F});return(0,b.jsxs)(A,{className:(0,o.A)(_.root,p),ref:t,ownerState:F,...M,children:[P||D?(0,b.jsx)(x,{className:_.iconContainer,ownerState:F,children:(0,b.jsx)(D,{completed:k,active:I,error:f,icon:P,...U})}):null,(0,b.jsxs)(h,{className:_.labelContainer,ownerState:F,children:[c?(0,b.jsx)(K,{...B,className:(0,o.A)(_.label,B?.className),children:c}):null,L]})]})}));y&&(y.muiName="StepLabel");const f=y},26703:(e,t,r)=>{r.r(t),r.d(t,{default:()=>a.A,getStepLabelUtilityClass:()=>o.p,stepLabelClasses:()=>o.A});var a=r(96403),o=r(34247)},34247:(e,t,r)=>{r.d(t,{A:()=>l,p:()=>n});var a=r(33761),o=r(85693);function n(e){return(0,o.Ay)("MuiStepLabel",e)}const l=(0,a.A)("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"])},29628:(e,t,r)=>{r.d(t,{A:()=>l,s:()=>n});var a=r(7552);const o=a.createContext({});function n(){return a.useContext(o)}const l=o}}]);
+//# sourceMappingURL=6703.faa93a20.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6703.faa93a20.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6703.faa93a20.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/internal/svg-icons/CheckCircle.js","../../../node_modules/@mui/material/internal/svg-icons/Warning.js","../../../node_modules/@mui/material/StepIcon/StepIcon.js","../../../node_modules/@mui/material/StepIcon/stepIconClasses.js","../../../node_modules/@mui/material/StepLabel/StepLabel.js","../../../node_modules/@mui/material/StepLabel/stepLabelClasses.js","../../../node_modules/@mui/material/Stepper/StepperContext.js"],"sourcesContent":["import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z\"\n}), 'CheckCircle');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');","'use client';\n\nvar _circle;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport CheckCircle from \"../internal/svg-icons/CheckCircle.js\";\nimport Warning from \"../internal/svg-icons/Warning.js\";\nimport SvgIcon from \"../SvgIcon/index.js\";\nimport stepIconClasses, { getStepIconUtilityClass } from \"./stepIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    active,\n    completed,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active', completed && 'completed', error && 'error'],\n    text: ['text']\n  };\n  return composeClasses(slots, getStepIconUtilityClass, classes);\n};\nconst StepIconRoot = styled(SvgIcon, {\n  name: 'MuiStepIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  color: (theme.vars || theme).palette.text.disabled,\n  [`&.${stepIconClasses.completed}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.active}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${stepIconClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepIconText = styled('text', {\n  name: 'MuiStepIcon',\n  slot: 'Text',\n  overridesResolver: (props, styles) => styles.text\n})(memoTheme(({\n  theme\n}) => ({\n  fill: (theme.vars || theme).palette.primary.contrastText,\n  fontSize: theme.typography.caption.fontSize,\n  fontFamily: theme.typography.fontFamily\n})));\nconst StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepIcon'\n  });\n  const {\n    active = false,\n    className: classNameProp,\n    completed = false,\n    error = false,\n    icon,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    active,\n    completed,\n    error\n  };\n  const classes = useUtilityClasses(ownerState);\n  if (typeof icon === 'number' || typeof icon === 'string') {\n    const className = clsx(classNameProp, classes.root);\n    if (error) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: Warning,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    if (completed) {\n      return /*#__PURE__*/_jsx(StepIconRoot, {\n        as: CheckCircle,\n        className: className,\n        ref: ref,\n        ownerState: ownerState,\n        ...other\n      });\n    }\n    return /*#__PURE__*/_jsxs(StepIconRoot, {\n      className: className,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      children: [_circle || (_circle = /*#__PURE__*/_jsx(\"circle\", {\n        cx: \"12\",\n        cy: \"12\",\n        r: \"12\"\n      })), /*#__PURE__*/_jsx(StepIconText, {\n        className: classes.text,\n        x: \"12\",\n        y: \"12\",\n        textAnchor: \"middle\",\n        dominantBaseline: \"central\",\n        ownerState: ownerState,\n        children: icon\n      })]\n    });\n  }\n  return icon;\n});\nprocess.env.NODE_ENV !== \"production\" ? StepIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Whether this step is active.\n   * @default false\n   */\n  active: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   * @default false\n   */\n  completed: PropTypes.bool,\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * The label displayed in the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default StepIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepIconUtilityClass(slot) {\n  return generateUtilityClass('MuiStepIcon', slot);\n}\nconst stepIconClasses = generateUtilityClasses('MuiStepIcon', ['root', 'active', 'completed', 'error', 'text']);\nexport default stepIconClasses;","'use client';\n\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport StepContext from \"../Step/StepContext.js\";\nimport StepIcon from \"../StepIcon/index.js\";\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport stepLabelClasses, { getStepLabelUtilityClass } from \"./stepLabelClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    active,\n    completed,\n    error,\n    disabled,\n    alternativeLabel\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    label: ['label', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    iconContainer: ['iconContainer', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],\n    labelContainer: ['labelContainer', alternativeLabel && 'alternativeLabel']\n  };\n  return composeClasses(slots, getStepLabelUtilityClass, classes);\n};\nconst StepLabelRoot = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation]];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    flexDirection: 'column'\n  },\n  [`&.${stepLabelClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  variants: [{\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      textAlign: 'left',\n      padding: '8px 0'\n    }\n  }]\n});\nconst StepLabelLabel = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'Label',\n  overridesResolver: (props, styles) => styles.label\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'block',\n  transition: theme.transitions.create('color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${stepLabelClasses.active}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.completed}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    fontWeight: 500\n  },\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    marginTop: 16\n  },\n  [`&.${stepLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n})));\nconst StepLabelIconContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'IconContainer',\n  overridesResolver: (props, styles) => styles.iconContainer\n})({\n  flexShrink: 0,\n  display: 'flex',\n  paddingRight: 8,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    paddingRight: 0\n  }\n});\nconst StepLabelLabelContainer = styled('span', {\n  name: 'MuiStepLabel',\n  slot: 'LabelContainer',\n  overridesResolver: (props, styles) => styles.labelContainer\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${stepLabelClasses.alternativeLabel}`]: {\n    textAlign: 'center'\n  }\n})));\nconst StepLabel = /*#__PURE__*/React.forwardRef(function StepLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStepLabel'\n  });\n  const {\n    children,\n    className,\n    componentsProps = {},\n    error = false,\n    icon: iconProp,\n    optional,\n    slots = {},\n    slotProps = {},\n    StepIconComponent: StepIconComponentProp,\n    StepIconProps,\n    ...other\n  } = props;\n  const {\n    alternativeLabel,\n    orientation\n  } = React.useContext(StepperContext);\n  const {\n    active,\n    disabled,\n    completed,\n    icon: iconContext\n  } = React.useContext(StepContext);\n  const icon = iconProp || iconContext;\n  let StepIconComponent = StepIconComponentProp;\n  if (icon && !StepIconComponent) {\n    StepIconComponent = StepIcon;\n  }\n  const ownerState = {\n    ...props,\n    active,\n    alternativeLabel,\n    completed,\n    disabled,\n    error,\n    orientation\n  };\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots,\n    slotProps: {\n      stepIcon: StepIconProps,\n      ...componentsProps,\n      ...slotProps\n    }\n  };\n  const [LabelSlot, labelProps] = useSlot('label', {\n    elementType: StepLabelLabel,\n    externalForwardedProps,\n    ownerState\n  });\n  const [StepIconSlot, stepIconProps] = useSlot('stepIcon', {\n    elementType: StepIconComponent,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(StepLabelRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [icon || StepIconSlot ? /*#__PURE__*/_jsx(StepLabelIconContainer, {\n      className: classes.iconContainer,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsx(StepIconSlot, {\n        completed: completed,\n        active: active,\n        error: error,\n        icon: icon,\n        ...stepIconProps\n      })\n    }) : null, /*#__PURE__*/_jsxs(StepLabelLabelContainer, {\n      className: classes.labelContainer,\n      ownerState: ownerState,\n      children: [children ? /*#__PURE__*/_jsx(LabelSlot, {\n        ...labelProps,\n        className: clsx(classes.label, labelProps?.className),\n        children: children\n      }) : null, optional]\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? StepLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * In most cases will simply be a string containing a title for the label.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  componentsProps: PropTypes.shape({\n    label: PropTypes.object\n  }),\n  /**\n   * If `true`, the step is marked as failed.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Override the default label of the step icon.\n   */\n  icon: PropTypes.node,\n  /**\n   * The optional node to display.\n   */\n  optional: PropTypes.node,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    label: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    stepIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    label: PropTypes.elementType,\n    stepIcon: PropTypes.elementType\n  }),\n  /**\n   * The component to render in place of the [`StepIcon`](https://mui.com/material-ui/api/step-icon/).\n   */\n  StepIconComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`StepIcon`](https://mui.com/material-ui/api/step-icon/) element.\n   */\n  StepIconProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nif (StepLabel) {\n  StepLabel.muiName = 'StepLabel';\n}\nexport default StepLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiStepLabel', slot);\n}\nconst stepLabelClasses = generateUtilityClasses('MuiStepLabel', ['root', 'horizontal', 'vertical', 'label', 'active', 'completed', 'error', 'disabled', 'iconContainer', 'alternativeLabel', 'labelContainer']);\nexport default stepLabelClasses;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;"],"names":["StepContext","useStepContext","createSvgIcon","d","_circle","StepIconRoot","styled","SvgIcon","name","slot","overridesResolver","props","styles","root","memoTheme","theme","display","transition","transitions","create","duration","shortest","color","vars","palette","text","disabled","stepIconClasses","completed","primary","main","active","error","StepIconText","fill","contrastText","fontSize","typography","caption","fontFamily","inProps","ref","className","classNameProp","icon","other","ownerState","classes","slots","composeClasses","useUtilityClasses","clsx","as","Warning","CheckCircle","children","cx","cy","r","x","y","textAnchor","dominantBaseline","getStepIconUtilityClass","StepLabelRoot","orientation","alignItems","alternativeLabel","flexDirection","cursor","variants","style","textAlign","padding","StepLabelLabel","label","body2","fontWeight","marginTop","StepLabelIconContainer","iconContainer","flexShrink","paddingRight","StepLabelLabelContainer","labelContainer","width","secondary","StepLabel","componentsProps","iconProp","optional","slotProps","StepIconComponent","StepIconComponentProp","StepIconProps","iconContext","externalForwardedProps","stepIcon","LabelSlot","labelProps","elementType","StepIconSlot","stepIconProps","muiName","getStepLabelUtilityClass","StepperContext","useStepperContext"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6746.8d3f75be.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6746,6999],{66999:(e,t,r)=>{r.r(t),r.d(t,{default:()=>p});var n=r(7552),o=r(68446),s=r(99546),a=r(373);const l="rgb(220,220,180)",c="rgba(250,200,200)";function d({str:e,charactersPerRow:t,showCoordinates:r,currRemainder:n=0,splitSize:o=10}){const s=Math.ceil(e.length/t),a=new Array(s);let l=n%10,c=0,d=0;for(;c<s+1;++c){const s=0===c?t-n:t,m=e.slice(d,d+s);if(!m)break;if(r){let e="";for(let t=0,r=l;t<m.length;t++,r++)r%o==0&&(e+=" ",r=0),e+=m[t];e&&(a[c]=e)}else a[c]=m;l=0,d+=s}return{segments:a,remainder:((a.at(-1)?.replaceAll(" ","").length||0)+(c<2?n:0))%t}}const m=(0,o.observer)((function({chunks:e,start:t,color:r,strand:o=1,coordStart:s=t,model:a}){const{charactersPerRow:l,showCoordinates:c}=a;return e.map(((a,d)=>{const m=0===d&&t%l==0||d>0?`${(""+(s-t%l+d*o*l)).padStart(4)}   `:"",u=d===e.length-1&&(e.at(-1)?.replaceAll(" ","").length||0)+(0===d?t%l:0)!==l?null:c?" \n":"";return n.createElement(n.Fragment,{key:`${a}-${d}`},c?m:null,n.createElement("span",{style:{background:r}},a),u)}))})),u=(0,o.observer)((function({utr:e,cds:t,exons:r,sequence:o,upstream:s,downstream:a,feature:u,includeIntrons:i,collapseIntron:h,model:g}){const{upperCaseCDS:w,intronBp:f,charactersPerRow:p,showCoordinates:E,showCoordinatesSetting:C}=g,b=t.length>0,k=(t.length?[...t,...e].sort(((e,t)=>e.start-t.start)):r).filter((e=>e.start!==e.end)),q=e=>w?e.toLowerCase():e,S=e=>w?e.toUpperCase():e,v=-1===u.strand?-1:1,R="genomic"===C&&i&&!h,y=R?v:1;let P=R?v>0?u.start+1-(s?.length||0):u.end+(s?.length||0):0,$=0,_=0,x=null;if(s){const{segments:e,remainder:t}=d({str:q(s),charactersPerRow:p,showCoordinates:E});x=n.createElement(m,{model:g,color:c,strand:y,start:$,coordStart:P,chunks:e}),_=t,$+=s.length*y,P+=s.length*y}const A=[];for(let e=0;e<k.length;e++){const t=k[e],r=o.slice(t.end,k[e+1]?.start),s=o.slice(t.start,t.end),{segments:a,remainder:c}=d({str:b?"CDS"===t.type?S(s):q(s):S(s),charactersPerRow:p,currRemainder:_,showCoordinates:E});if(A.push(n.createElement(m,{key:`${JSON.stringify(t)}-mid`,model:g,color:"CDS"===t.type?l:"rgb(200,240,240)",strand:y,start:$,coordStart:P,chunks:a})),_=c,$+=s.length*y,P+=s.length*y,r&&i&&e<k.length-1){const e=q(h&&r.length>2*f?`${r.slice(0,f)}...${r.slice(-f)}`:r),{segments:o,remainder:s}=d({str:e,charactersPerRow:p,currRemainder:_,showCoordinates:E});o.length&&(A.push(n.createElement(m,{key:`${JSON.stringify(t)}-intron`,model:g,strand:y,coordStart:P,start:$,chunks:o})),_=s,$+=e.length*y,P+=e.length*y)}}let D=null;if(a){const{segments:e}=d({str:q(a),charactersPerRow:p,currRemainder:_,showCoordinates:E});D=n.createElement(m,{start:$,model:g,strand:y,chunks:e,coordStart:P,color:c})}return n.createElement(n.Fragment,null,x,A,D)})),i=(0,o.observer)((function({cds:e,sequence:t,codonTable:r,model:o}){const{charactersPerRow:s,showCoordinates:l}=o,c=(0,a.o9)(e,t);let u="";for(let e=0;e<c.length;e+=3)u+=r[c.slice(e,e+3)]||"&";const{segments:i}=d({str:u,charactersPerRow:s,showCoordinates:l});return n.createElement(m,{model:o,color:"rgb(220,160,220)",chunks:i,start:0})})),h=(0,o.observer)((function({sequence:e,upstream:t,feature:r,downstream:o,model:s}){const{charactersPerRow:a,showCoordinatesSetting:l,showCoordinates:u}=s;let i=0,h=null,g=0;const w=-1===r.strand?-1:1,f="genomic"===l,p=f?w:1;let E=f?w>0?r.start+1-(t?.length||0):r.end+(t?.length||0):0;if(t){const{segments:e,remainder:r}=d({str:t,charactersPerRow:a,showCoordinates:u});h=n.createElement(m,{model:s,color:c,start:i,coordStart:E,chunks:e}),g=r,i+=t.length*p,E+=t.length*p}const{segments:C,remainder:b}=d({str:e,charactersPerRow:a,showCoordinates:u,currRemainder:g}),k=n.createElement(m,{model:s,color:"rgb(200,280,200)",start:i,coordStart:E,chunks:C});g=b,i+=e.length*p,E+=e.length*p;let q=null;if(o){const{segments:e}=d({str:o,charactersPerRow:a,currRemainder:g,showCoordinates:u});q=n.createElement(m,{start:i,model:s,chunks:e,coordStart:E,color:c})}return n.createElement(n.Fragment,null,h,k,q)})),g=(0,o.observer)((function({cds:e,sequence:t,model:r}){const{charactersPerRow:o,showCoordinates:s}=r,{segments:c}=d({str:(0,a.o9)(e,t),charactersPerRow:o,showCoordinates:s});return n.createElement(m,{model:r,color:l,chunks:c,start:0})}));function w({children:e}){return n.createElement("pre",{style:{fontFamily:"monospace",color:"black",fontSize:11}},e)}function f({children:e}){return n.createElement("div",{style:{fontFamily:"monospace",color:"black",fontSize:11,maxWidth:600,whiteSpace:"wrap",wordBreak:"break-all"}},e)}const p=(0,o.observer)(n.forwardRef((function(e,t){const{model:r,feature:o}=e,{showCoordinates:l,mode:c}=r;let{sequence:{seq:d,upstream:m="",downstream:p=""}}=e;const{subfeatures:E=[]}=o,C=E.sort(((e,t)=>e.start-t.start)).map((e=>({...e,start:e.start-o.start,end:e.end-o.start})));let b=(0,a.Qq)(C.filter((e=>"CDS"===e.type))),k=(0,a.Qq)(C.filter((e=>e.type?.match(/utr/i)))),q=(0,a.Qq)(C.filter((e=>"exon"===e.type)));!k.length&&b.length&&q.length&&(k=(0,a.h8)(b,q)),k.length||!b.length||q.length||(k=(0,a.V4)(b,{start:0,end:o.end-o.start,type:"gene"})),-1===o.strand&&([d,m,p]=[(0,s.revcom)(d),(0,s.revcom)(p),(0,s.revcom)(m)],b=(0,a.YC)(b,d.length),q=(0,a.YC)(q,d.length),k=(0,a.YC)(k,d.length));const S=(0,s.generateCodonTable)(s.defaultCodonTable),v=l?w:f;return n.createElement("div",{"data-testid":"sequence_panel",ref:t,style:{maxHeight:300,overflow:"auto"}},n.createElement(v,null,n.createElement("div",{style:{background:"white"}},`>${[`${o.name||o.id}-${c}`,`${o.refName}:${(0,s.toLocale)(o.start+1)}-${(0,s.toLocale)(o.end)}${R=o.strand,-1===R?"(-)":1===R?"(+)":""}`,c.endsWith("updownstream")?`+/- ${(0,s.toLocale)(r.upDownBp)} up/downstream bp`:""].filter((e=>!!e)).join(" ")}\n`),"genomic"===c?n.createElement(h,{feature:o,model:r,sequence:d}):"genomic_sequence_updownstream"===c?n.createElement(h,{model:r,feature:o,sequence:d,upstream:m,downstream:p}):"cds"===c?n.createElement(g,{model:r,cds:b,sequence:d}):"cdna"===c?n.createElement(u,{model:r,exons:q,feature:o,cds:b,utr:k,sequence:d}):"protein"===c?n.createElement(i,{model:r,cds:b,codonTable:S,sequence:d}):"gene"===c?n.createElement(u,{model:r,exons:q,feature:o,cds:b,utr:k,sequence:d,includeIntrons:!0}):"gene_collapsed_intron"===c?n.createElement(u,{model:r,exons:q,feature:o,cds:b,sequence:d,utr:k,includeIntrons:!0,collapseIntron:!0}):"gene_updownstream"===c?n.createElement(u,{model:r,exons:q,feature:o,cds:b,sequence:d,utr:k,upstream:m,downstream:p,includeIntrons:!0}):"gene_updownstream_collapsed_intron"===c?n.createElement(u,{model:r,exons:q,feature:o,cds:b,sequence:d,utr:k,upstream:m,downstream:p,includeIntrons:!0,collapseIntron:!0}):n.createElement("div",null,"Unknown type")));var R})))},76746:(e,t,r)=>{r.r(t),r.d(t,{default:()=>f});var n=r(7552),o=r(29499),s=r(36715),a=r(5401),l=r(58507),c=r(49823),d=r(75785),m=r(68446),u=r(78781),i=r(66999),h=r(54579),g=r(14465);const w=(0,d.n9)()({dialogContent:{width:"80em"},formControl:{margin:0,marginLeft:4}}),f=(0,m.observer)((function({handleClose:e,model:t,feature:r}){const{sequenceFeatureDetails:d}=t,{upDownBp:m}=d,{classes:f}=w(),p=(0,n.useRef)(null),[E,C]=(0,n.useState)(!1),{sequence:b,error:k}=(0,u.p)(t,r,m,E);return n.createElement(c.Dialog,{maxWidth:"xl",open:!0,onClose:()=>{e()},title:"Sequence view"},n.createElement(o.A,{className:f.dialogContent},n.createElement("div",null,n.createElement(g.A,{model:d}),n.createElement(h.A,{ref:p,model:d})),n.createElement("div",null,"gene"===r.type?n.createElement(s.A,null,"Note: inspect subfeature sequences for protein/CDS computations"):null,k?n.createElement(c.ErrorMessage,{error:k}):b?"error"in b?n.createElement(n.Fragment,null,n.createElement(s.A,{color:"error"},b.error),n.createElement(a.A,{variant:"contained",color:"inherit",onClick:()=>{C(!0)}},"Force load")):n.createElement(n.Suspense,{fallback:n.createElement(c.LoadingEllipses,null)},n.createElement(i.default,{ref:p,feature:r,sequence:b,model:d})):n.createElement(c.LoadingEllipses,null))),n.createElement(l.A,null,n.createElement(a.A,{onClick:()=>{e()},variant:"contained"},"Close")))}))}}]);
+//# sourceMappingURL=6746.8d3f75be.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6746.8d3f75be.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6746.8d3f75be.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/util.ts","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.tsx"],"sourcesContent":["// note that these are currently put into the style section instead of being\n// defined in classes to aid copy and paste to an external document e.g. word\nexport const intronColor = undefined\nexport const utrColor = 'rgb(200,240,240)'\nexport const proteinColor = 'rgb(220,160,220)'\nexport const cdsColor = 'rgb(220,220,180)'\nexport const updownstreamColor = 'rgba(250,200,200)'\nexport const genomeColor = 'rgb(200,280,200)'\n\nexport function splitString({\n  str,\n  charactersPerRow,\n  showCoordinates,\n  currRemainder = 0,\n  splitSize = 10,\n}: {\n  str: string\n  charactersPerRow: number\n  showCoordinates: boolean\n  currRemainder?: number\n  splitStart?: number\n  splitSize?: number\n}) {\n  const numChunks = Math.ceil(str.length / charactersPerRow)\n  const chunks = new Array(numChunks)\n  let splitStart = currRemainder % 10\n\n  let iter = 0\n  let offset = 0\n  for (; iter < numChunks + 1; ++iter) {\n    const inc = iter === 0 ? charactersPerRow - currRemainder : charactersPerRow\n    const r = str.slice(offset, offset + inc)\n    if (!r) {\n      break\n    }\n    if (showCoordinates) {\n      let res = ''\n      for (let i = 0, j = splitStart; i < r.length; i++, j++) {\n        // note: this adds a space at the start but it causes trouble to try to\n        // say e.g. j%splitSize==0 && j to try to only add non-zero spaces\n        if (j % splitSize === 0) {\n          res += ' '\n          j = 0\n        }\n        res += r[i]\n      }\n      if (res) {\n        chunks[iter] = res\n      }\n    } else {\n      chunks[iter] = r\n    }\n    splitStart = 0 // after newline, reset\n    offset += inc\n  }\n\n  return {\n    segments: chunks,\n    remainder:\n      ((chunks.at(-1)?.replaceAll(' ', '').length || 0) +\n        (iter < 2 ? currRemainder : 0)) %\n      charactersPerRow,\n  }\n}\n","import React from 'react'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport { observer } from 'mobx-react'\n\nconst SequenceDisplay = observer(function ({\n  chunks,\n  start,\n  color,\n  strand = 1,\n  coordStart = start,\n  model,\n}: {\n  chunks: string[]\n  start: number\n  coordStart?: number\n  strand?: number\n  color?: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n\n  return chunks.map((chunk, idx) => {\n    const f = coordStart - (start % charactersPerRow)\n    const prefix =\n      (idx === 0 && start % charactersPerRow === 0) || idx > 0\n        ? `${`${f + idx * strand * charactersPerRow}`.padStart(4)}   `\n        : ''\n    const postfix =\n      idx === chunks.length - 1 &&\n      (chunks.at(-1)?.replaceAll(' ', '').length || 0) +\n        (idx === 0 ? start % charactersPerRow : 0) !==\n        charactersPerRow\n        ? null\n        : showCoordinates\n          ? ' \\n'\n          : ''\n    return (\n      /* biome-ignore lint/suspicious/noArrayIndexKey: */\n      <React.Fragment key={`${chunk}-${idx}`}>\n        {showCoordinates ? prefix : null}\n        <span style={{ background: color }}>{chunk}</span>\n        {postfix}\n      </React.Fragment>\n    )\n  })\n})\n\nexport default SequenceDisplay\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { Feat } from '../../util'\nimport { splitString, cdsColor, updownstreamColor, utrColor } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\nimport { SimpleFeatureSerialized } from '../../../util'\n\nconst CDNASequence = observer(function ({\n  utr,\n  cds,\n  exons,\n  sequence,\n  upstream,\n  downstream,\n  feature,\n  includeIntrons,\n  collapseIntron,\n  model,\n}: {\n  utr: Feat[]\n  cds: Feat[]\n  exons: Feat[]\n  sequence: string\n  upstream?: string\n  downstream?: string\n  feature: SimpleFeatureSerialized\n  includeIntrons?: boolean\n  collapseIntron?: boolean\n  model: SequenceFeatureDetailsModel\n}) {\n  const {\n    upperCaseCDS,\n    intronBp,\n    charactersPerRow,\n    showCoordinates,\n    showCoordinatesSetting,\n  } = model\n  const hasCds = cds.length > 0\n  const chunks = (\n    cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons\n  ).filter(f => f.start !== f.end)\n  const toLower = (s: string) => (upperCaseCDS ? s.toLowerCase() : s)\n  const toUpper = (s: string) => (upperCaseCDS ? s.toUpperCase() : s)\n\n  const strand = feature.strand === -1 ? -1 : 1\n  const fullGenomicCoordinates =\n    showCoordinatesSetting === 'genomic' && includeIntrons && !collapseIntron\n\n  const mult = fullGenomicCoordinates ? strand : 1\n  let coordStart = fullGenomicCoordinates\n    ? strand > 0\n      ? feature.start + 1 - (upstream?.length || 0)\n      : feature.end + (upstream?.length || 0)\n    : 0\n  let currStart = 0\n  let currRemainder = 0\n\n  let upstreamChunk = null as React.ReactNode\n  if (upstream) {\n    const { segments, remainder } = splitString({\n      str: toLower(upstream),\n      charactersPerRow,\n      showCoordinates,\n    })\n    upstreamChunk = (\n      <SequenceDisplay\n        model={model}\n        color={updownstreamColor}\n        strand={mult}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />\n    )\n    currRemainder = remainder\n    currStart = currStart + upstream.length * mult\n    coordStart = coordStart + upstream.length * mult\n  }\n\n  const middleChunks = [] as React.ReactNode[]\n  for (let idx = 0; idx < chunks.length; idx++) {\n    const chunk = chunks[idx]!\n    const intron = sequence.slice(chunk.end, chunks[idx + 1]?.start)\n    const s = sequence.slice(chunk.start, chunk.end)\n    const { segments, remainder } = splitString({\n      str: hasCds\n        ? chunk.type === 'CDS'\n          ? toUpper(s)\n          : toLower(s)\n        : toUpper(s),\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n\n    middleChunks.push(\n      <SequenceDisplay\n        key={`${JSON.stringify(chunk)}-mid`}\n        model={model}\n        color={chunk.type === 'CDS' ? cdsColor : utrColor}\n        strand={mult}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />,\n    )\n    currRemainder = remainder\n    currStart = currStart + s.length * mult\n    coordStart = coordStart + s.length * mult\n\n    if (intron && includeIntrons && idx < chunks.length - 1) {\n      const str = toLower(\n        collapseIntron && intron.length > intronBp * 2\n          ? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`\n          : intron,\n      )\n      const { segments, remainder } = splitString({\n        str,\n        charactersPerRow,\n        currRemainder,\n        showCoordinates,\n      })\n\n      if (segments.length) {\n        middleChunks.push(\n          <SequenceDisplay\n            key={`${JSON.stringify(chunk)}-intron`}\n            model={model}\n            strand={mult}\n            coordStart={coordStart}\n            start={currStart}\n            chunks={segments}\n          />,\n        )\n        currRemainder = remainder\n        currStart = currStart + str.length * mult\n        coordStart = coordStart + str.length * mult\n      }\n    }\n  }\n\n  let downstreamChunk = null as React.ReactNode\n  if (downstream) {\n    const { segments } = splitString({\n      str: toLower(downstream),\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n    downstreamChunk = (\n      <SequenceDisplay\n        start={currStart}\n        model={model}\n        strand={mult}\n        chunks={segments}\n        coordStart={coordStart}\n        color={updownstreamColor}\n      />\n    )\n  }\n  return (\n    <>\n      {upstreamChunk}\n      {middleChunks}\n      {downstreamChunk}\n    </>\n  )\n})\n\nexport default CDNASequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { Feat, stitch } from '../../util'\nimport { proteinColor, splitString } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\n\nconst ProteinSequence = observer(function ({\n  cds,\n  sequence,\n  codonTable,\n  model,\n}: {\n  cds: Feat[]\n  sequence: string\n  codonTable: Record<string, string>\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n  const str = stitch(cds, sequence)\n  let protein = ''\n  for (let i = 0; i < str.length; i += 3) {\n    // use & symbol for undefined codon, or partial slice\n    protein += codonTable[str.slice(i, i + 3)] || '&'\n  }\n  const { segments } = splitString({\n    str: protein,\n    charactersPerRow,\n    showCoordinates,\n  })\n  return (\n    <SequenceDisplay\n      model={model}\n      color={proteinColor}\n      chunks={segments}\n      start={0}\n    />\n  )\n})\n\nexport default ProteinSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { genomeColor, splitString, updownstreamColor } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\nimport { SimpleFeatureSerialized } from '../../../util'\n\nconst GenomicSequence = observer(function ({\n  sequence,\n  upstream,\n  feature,\n  downstream,\n  model,\n}: {\n  sequence: string\n  feature: SimpleFeatureSerialized\n  upstream?: string\n  downstream?: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinatesSetting, showCoordinates } = model\n  let currStart = 0\n  let upstreamChunk = null as React.ReactNode\n  let currRemainder = 0\n  const strand = feature.strand === -1 ? -1 : 1\n  const fullGenomicCoordinates = showCoordinatesSetting === 'genomic'\n  const mult = fullGenomicCoordinates ? strand : 1\n  let coordStart = fullGenomicCoordinates\n    ? strand > 0\n      ? feature.start + 1 - (upstream?.length || 0)\n      : feature.end + (upstream?.length || 0)\n    : 0\n  if (upstream) {\n    const { segments, remainder } = splitString({\n      str: upstream,\n      charactersPerRow,\n      showCoordinates,\n    })\n    upstreamChunk = (\n      <SequenceDisplay\n        model={model}\n        color={updownstreamColor}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />\n    )\n    currRemainder = remainder\n    currStart = currStart + upstream.length * mult\n    coordStart = coordStart + upstream.length * mult\n  }\n\n  const { segments, remainder } = splitString({\n    str: sequence,\n    charactersPerRow,\n    showCoordinates,\n    currRemainder,\n  })\n  const middleChunk = (\n    <SequenceDisplay\n      model={model}\n      color={genomeColor}\n      start={currStart}\n      coordStart={coordStart}\n      chunks={segments}\n    />\n  )\n  currRemainder = remainder\n  currStart += sequence.length * mult\n  coordStart = coordStart + sequence.length * mult\n\n  let downstreamChunk = null as React.ReactNode\n  if (downstream) {\n    const { segments } = splitString({\n      str: downstream,\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n    downstreamChunk = (\n      <SequenceDisplay\n        start={currStart}\n        model={model}\n        chunks={segments}\n        coordStart={coordStart}\n        color={updownstreamColor}\n      />\n    )\n  }\n\n  return (\n    <>\n      {upstreamChunk}\n      {middleChunk}\n      {downstreamChunk}\n    </>\n  )\n})\n\nexport default GenomicSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { cdsColor, splitString } from '../util'\nimport { Feat, stitch } from '../../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\n\nconst CDSSequence = observer(function ({\n  cds,\n  sequence,\n  model,\n}: {\n  cds: Feat[]\n  sequence: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n  const { segments } = splitString({\n    str: stitch(cds, sequence),\n    charactersPerRow,\n    showCoordinates,\n  })\n  return (\n    <SequenceDisplay\n      model={model}\n      color={cdsColor}\n      chunks={segments}\n      start={0}\n    />\n  )\n})\n\nexport default CDSSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport {\n  SimpleFeatureSerialized,\n  defaultCodonTable,\n  generateCodonTable,\n  revcom,\n  toLocale,\n} from '../../util'\nimport {\n  SeqState,\n  calculateUTRs,\n  calculateUTRs2,\n  dedupe,\n  revlist,\n} from '../util'\nimport { SequenceFeatureDetailsModel } from './model'\n// panel types\nimport CDNASequence from './seqtypes/CDNASequence'\nimport ProteinSequence from './seqtypes/ProteinSequence'\nimport GenomicSequence from './seqtypes/GenomicSequence'\nimport CDSSequence from './seqtypes/CDSSequence'\n\ninterface SequencePanelProps {\n  sequence: SeqState\n  feature: SimpleFeatureSerialized\n  model: SequenceFeatureDetailsModel\n}\n\nfunction getStrand(strand: number) {\n  if (strand === -1) {\n    return '(-)'\n  } else if (strand === 1) {\n    return '(+)'\n  } else {\n    return ''\n  }\n}\n\nfunction WordWrap({ children }: { children: React.ReactNode }) {\n  return (\n    <pre\n      style={{\n        /* raw styles instead of className so that html copy works */\n        fontFamily: 'monospace',\n        color: 'black',\n        fontSize: 11,\n      }}\n    >\n      {children}\n    </pre>\n  )\n}\n\nfunction NoWordWrap({ children }: { children: React.ReactNode }) {\n  return (\n    <div\n      style={{\n        /* raw styles instead of className so that html copy works */\n        fontFamily: 'monospace',\n        color: 'black',\n        fontSize: 11,\n        maxWidth: 600,\n        whiteSpace: 'wrap',\n        wordBreak: 'break-all',\n      }}\n    >\n      {children}\n    </div>\n  )\n}\n\nconst SequencePanel = observer(\n  React.forwardRef<HTMLDivElement, SequencePanelProps>(function S(props, ref) {\n    const { model, feature } = props\n    const { showCoordinates, mode } = model\n    let {\n      sequence: { seq, upstream = '', downstream = '' },\n    } = props\n    const { subfeatures = [] } = feature\n\n    const children = subfeatures\n      .sort((a, b) => a.start - b.start)\n      .map(sub => ({\n        ...sub,\n        start: sub.start - feature.start,\n        end: sub.end - feature.start,\n      }))\n\n    // we filter duplicate entries in cds and exon lists duplicate entries\n    // may be rare but was seen in Gencode v36 track NCList, likely a bug\n    // on GFF3 or probably worth ignoring here (produces broken protein\n    // translations if included)\n    //\n    // position 1:224,800,006..225,203,064 gene ENSG00000185842.15 first\n    // transcript ENST00000445597.6\n    //\n    // http://localhost:3000/?config=test_data%2Fconfig.json&session=share-FUl7G1isvF&password=HXh5Y\n\n    let cds = dedupe(children.filter(sub => sub.type === 'CDS'))\n    let utr = dedupe(children.filter(sub => sub.type?.match(/utr/i)))\n    let exons = dedupe(children.filter(sub => sub.type === 'exon'))\n\n    if (!utr.length && cds.length && exons.length) {\n      utr = calculateUTRs(cds, exons)\n    }\n    if (!utr.length && cds.length && !exons.length) {\n      utr = calculateUTRs2(cds, {\n        start: 0,\n        end: feature.end - feature.start,\n        type: 'gene',\n      })\n    }\n\n    if (feature.strand === -1) {\n      // doing this in a single assignment is needed because downstream and\n      // upstream are swapped so this avoids a temp variable\n      ;[seq, upstream, downstream] = [\n        revcom(seq),\n        revcom(downstream),\n        revcom(upstream),\n      ]\n      cds = revlist(cds, seq.length)\n      exons = revlist(exons, seq.length)\n      utr = revlist(utr, seq.length)\n    }\n    const codonTable = generateCodonTable(defaultCodonTable)\n\n    const Container = showCoordinates ? WordWrap : NoWordWrap\n    return (\n      <div\n        data-testid=\"sequence_panel\"\n        ref={ref}\n        style={{ maxHeight: 300, overflow: 'auto' }}\n      >\n        <Container>\n          <div style={{ background: 'white' }}>\n            {`>${[\n              `${feature.name || feature.id}-${mode}`,\n              `${feature.refName}:${toLocale(feature.start + 1)}-${toLocale(feature.end)}${getStrand(feature.strand as number)}`,\n              mode.endsWith('updownstream')\n                ? `+/- ${toLocale(model.upDownBp)} up/downstream bp`\n                : '',\n            ]\n              .filter(f => !!f)\n              .join(' ')}\\n`}\n          </div>\n          {mode === 'genomic' ? (\n            <GenomicSequence feature={feature} model={model} sequence={seq} />\n          ) : mode === 'genomic_sequence_updownstream' ? (\n            <GenomicSequence\n              model={model}\n              feature={feature}\n              sequence={seq}\n              upstream={upstream}\n              downstream={downstream}\n            />\n          ) : mode === 'cds' ? (\n            <CDSSequence model={model} cds={cds} sequence={seq} />\n          ) : mode === 'cdna' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              utr={utr}\n              sequence={seq}\n            />\n          ) : mode === 'protein' ? (\n            <ProteinSequence\n              model={model}\n              cds={cds}\n              codonTable={codonTable}\n              sequence={seq}\n            />\n          ) : mode === 'gene' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              utr={utr}\n              sequence={seq}\n              includeIntrons\n            />\n          ) : mode === 'gene_collapsed_intron' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              includeIntrons\n              collapseIntron\n            />\n          ) : mode === 'gene_updownstream' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              upstream={upstream}\n              downstream={downstream}\n              includeIntrons\n            />\n          ) : mode === 'gene_updownstream_collapsed_intron' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              upstream={upstream}\n              downstream={downstream}\n              includeIntrons\n              collapseIntron\n            />\n          ) : (\n            <div>Unknown type</div>\n          )}\n        </Container>\n      </div>\n    )\n  }),\n)\n\nexport default SequencePanel\n","import React, { Suspense, useRef, useState } from 'react'\nimport { Button, DialogContent, DialogActions, Typography } from '@mui/material'\nimport { Dialog, ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { useFeatureSequence } from '../hooks'\nimport { SimpleFeatureSerialized } from '../../../util'\nimport { BaseFeatureWidgetModel } from '../../stateModelFactory'\nimport SequencePanel from '../SequencePanel'\nimport SequenceFeatureMenu from './SequenceFeatureMenu'\nimport SequenceTypeSelector from './SequenceTypeSelector'\n\nconst useStyles = makeStyles()({\n  dialogContent: {\n    width: '80em',\n  },\n  formControl: {\n    margin: 0,\n    marginLeft: 4,\n  },\n})\n\nconst SequenceDialog = observer(function ({\n  handleClose,\n  model,\n  feature,\n}: {\n  handleClose: () => void\n  feature: SimpleFeatureSerialized\n  model: BaseFeatureWidgetModel\n}) {\n  const { sequenceFeatureDetails } = model\n  const { upDownBp } = sequenceFeatureDetails\n  const { classes } = useStyles()\n  const seqPanelRef = useRef<HTMLDivElement>(null)\n  const [force, setForce] = useState(false)\n  const { sequence, error } = useFeatureSequence(\n    model,\n    feature,\n    upDownBp,\n    force,\n  )\n\n  return (\n    <Dialog\n      maxWidth=\"xl\"\n      open\n      onClose={() => {\n        handleClose()\n      }}\n      title=\"Sequence view\"\n    >\n      <DialogContent className={classes.dialogContent}>\n        <div>\n          <SequenceTypeSelector model={sequenceFeatureDetails} />\n          <SequenceFeatureMenu\n            ref={seqPanelRef}\n            model={sequenceFeatureDetails}\n          />\n        </div>\n\n        <div>\n          {feature.type === 'gene' ? (\n            <Typography>\n              Note: inspect subfeature sequences for protein/CDS computations\n            </Typography>\n          ) : null}\n          {error ? (\n            <ErrorMessage error={error} />\n          ) : !sequence ? (\n            <LoadingEllipses />\n          ) : 'error' in sequence ? (\n            <>\n              <Typography color=\"error\">{sequence.error}</Typography>\n              <Button\n                variant=\"contained\"\n                color=\"inherit\"\n                onClick={() => {\n                  setForce(true)\n                }}\n              >\n                Force load\n              </Button>\n            </>\n          ) : (\n            <Suspense fallback={<LoadingEllipses />}>\n              <SequencePanel\n                ref={seqPanelRef}\n                feature={feature}\n                sequence={sequence}\n                model={sequenceFeatureDetails}\n              />\n            </Suspense>\n          )}\n        </div>\n      </DialogContent>\n\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          variant=\"contained\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SequenceDialog\n"],"names":["cdsColor","updownstreamColor","splitString","str","charactersPerRow","showCoordinates","currRemainder","splitSize","numChunks","Math","ceil","length","chunks","Array","splitStart","iter","offset","inc","r","slice","res","i","j","segments","remainder","at","replaceAll","observer","start","color","strand","coordStart","model","map","chunk","idx","prefix","padStart","postfix","React","key","style","background","utr","cds","exons","sequence","upstream","downstream","feature","includeIntrons","collapseIntron","upperCaseCDS","intronBp","showCoordinatesSetting","hasCds","sort","a","b","filter","f","end","toLower","s","toLowerCase","toUpper","toUpperCase","fullGenomicCoordinates","mult","currStart","upstreamChunk","SequenceDisplay","middleChunks","intron","type","push","JSON","stringify","downstreamChunk","codonTable","stitch","protein","middleChunk","WordWrap","children","fontFamily","fontSize","NoWordWrap","maxWidth","whiteSpace","wordBreak","props","ref","mode","seq","subfeatures","sub","dedupe","match","calculateUTRs","calculateUTRs2","revcom","revlist","generateCodonTable","defaultCodonTable","Container","maxHeight","overflow","name","id","refName","toLocale","endsWith","upDownBp","join","GenomicSequence","CDSSequence","CDNASequence","ProteinSequence","useStyles","makeStyles","dialogContent","width","formControl","margin","marginLeft","handleClose","sequenceFeatureDetails","classes","seqPanelRef","useRef","force","setForce","useState","error","useFeatureSequence","Dialog","open","onClose","title","DialogContent","className","SequenceTypeSelector","SequenceFeatureMenu","Typography","ErrorMessage","Button","variant","onClick","Suspense","fallback","LoadingEllipses","SequencePanel","DialogActions"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6785.07d4b66b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6785],{36785:(e,s,l)=>{l.r(s),l.d(s,{default:()=>a.A,getSelectUtilityClasses:()=>b.T,selectClasses:()=>b.A});var a=l(98360),b=l(10613)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6799.754a77ae.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6799],{6799:(e,b,s)=>{s.r(b),s.d(b,{default:()=>a.A,getPopperUtilityClass:()=>l.b});var a=s(20350),l=s(55349)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6823.6e35b0cf.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6823,4770],{94770:(e,t,r)=>{r.r(t),r.d(t,{default:()=>u});var a=r(34133),s=r(46377),i=r(99546),n=r(99834),o=r(66885),c=r(82088),d=r(44728),g=r(80544);class h{constructor(e,t,r){this.record=e,this.adapter=t,this.ref=r}_get_name(){return this.record.get("name")}_get_type(){return"match"}_get_score(){return this.record.get("mq")}_get_flags(){return this.record.flags}_get_strand(){return this.record.isReverseComplemented()?-1:1}_get_pair_orientation(){return this.record.isPaired()?this.record.getPairOrientation():void 0}_get_next_ref(){return this.record.isPaired()?this.adapter.refIdToName(this.record._next_refid()):void 0}_get_next_pos(){return this.record.isPaired()?this.record._next_pos():void 0}_get_next_segment_position(){return this.record.isPaired()?`${this.adapter.refIdToName(this.record._next_refid())}:${this.record._next_pos()+1}`:void 0}_get_seq(){return this.record.getReadBases()}qualRaw(){return this.record.qualRaw()}set(){}tags(){const e=Object.getOwnPropertyNames(h.prototype);return[...new Set(e.filter((e=>e.startsWith("_get_")&&"_get_mismatches"!==e&&"_get_tags"!==e)).map((e=>e.replace("_get_",""))).concat(this.record._tags()))]}id(){return`${this.adapter.id}-${this.record.id()}`}get(e){const t=`_get_${e}`;return this[t]?this[t]():this.record.get(e)}_get_refName(){return this.adapter.refIdToName(this.record.seq_id())}parent(){}children(){}pairedFeature(){return!1}toJSON(){return{...Object.fromEntries(this.tags().map((e=>[e,this.get(e)])).filter((e=>void 0!==e[1]))),uniqueId:this.id()}}_get_mismatches(){return(0,g.getMismatches)(this.get("CIGAR"),this.get("MD"),this.get("seq"),this.ref,this.qualRaw())}_get_clipPos(){const e=this.get("CIGAR")||"";return(0,g.getClip)(e,this.get("strand"))}}class u extends s.BaseFeatureDataAdapter{async configurePre(){const e=this.getConf("bamLocation"),t=this.getConf(["index","location"]),r=this.getConf(["index","indexType"]),s=this.pluginManager,i="CSI"===r,o=new a.j9({bamFilehandle:(0,n.openLocation)(e,s),csiFilehandle:i?(0,n.openLocation)(t,s):void 0,baiFilehandle:i?void 0:(0,n.openLocation)(t,s),yieldThreadTime:Number.POSITIVE_INFINITY}),c=this.getConf("sequenceAdapter");if(c&&this.getSubAdapter){const{dataAdapter:e}=await this.getSubAdapter(c);return{bam:o,sequenceAdapter:e}}return{bam:o}}async configure(){return this.configureP||(this.configureP=this.configurePre().catch((e=>{throw this.configureP=void 0,e}))),this.configureP}async getHeader(e){const{bam:t}=await this.configure();return t.getHeaderText(e)}async setupPre(e){const{statusCallback:t=()=>{}}=e||{},{bam:r}=await this.configure();return this.samHeader=await(0,i.updateStatus)("Downloading index",t,(async()=>{const t=await r.getHeader(e),a=[],s={};return t?.filter((e=>"SQ"===e.tag)).forEach(((e,t)=>{const r=e.data.find((e=>"SN"===e.tag));if(r){const e=r.value;s[e]=t,a[t]=e}})),{idToName:a,nameToId:s}})),this.samHeader}async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async getRefNames(e){const{idToName:t}=await this.setup(e);return t}async seqFetch(e,t,r){const{sequenceAdapter:a}=await this.configure();if(!a)return;if(!e)return;const s=a.getFeatures({refName:e,start:t,end:r,assemblyName:""}),i=await(0,d._)(s.pipe((0,c.$)()));let n="";if(i.sort(((e,t)=>e.get("start")-t.get("start"))).forEach((e=>{const a=e.get("start"),s=e.get("end"),i=Math.max(t-a,0),o=Math.min(r-a,s-a)-i,c=e.get("seq")||e.get("residues");n+=c.slice(i,i+o)})),n.length!==r-t)throw new Error(`sequence fetch failed: fetching ${e}:${(t-1).toLocaleString()}-${r.toLocaleString()} returned ${n.length.toLocaleString()} bases, but should have returned ${(r-t).toLocaleString()}`);return n}getFeatures(e,t){const{refName:r,start:a,end:s,originalRefName:n}=e,{signal:c,filterBy:d,statusCallback:g=()=>{}}=t||{};return(0,o.ObservableCreate)((async e=>{const{bam:o}=await this.configure();await this.setup(t);const c=await(0,i.updateStatus)("Downloading alignments",g,(()=>o.getRecordsForRange(r,a,s,t)));await(0,i.updateStatus)("Processing alignments",g,(async()=>{const{flagInclude:t=0,flagExclude:a=0,tagFilter:s,readName:i}=d||{};for(const o of c){let c;o.get("MD")||(c=await this.seqFetch(n||r,o.get("start"),o.get("end")));const d=o.flags;if((d&t)===t||d&a){if(s){const e=o.get(s.tag),t=s.value;if("*"===t?void 0!==e:`${e}`!=`${t}`)continue}i&&o.get("name")!==i||e.next(new h(o,this,c))}}e.complete()}))}),c)}async getMultiRegionFeatureDensityStats(e,t){const{bam:r}=await this.configure();return r.index?{bytes:await(0,i.bytesForRegions)(e,r),fetchSizeLimit:this.getConf("fetchSizeLimit")}:super.getMultiRegionFeatureDensityStats(e,t)}freeResources(){}refIdToName(e){return this.samHeader?.idToName[e]}}},6823:(e,t,r)=>{r.r(t),r.d(t,{default:()=>i});var a=r(34133),s=r(94770);class i extends s.default{async configurePre(){const e=this.getConf("htsgetBase"),t=this.getConf("htsgetTrackId"),r=new a.Wg({baseUrl:e,trackId:t}),s=this.getConf("sequenceAdapter");return s&&this.getSubAdapter?{bam:r,sequenceAdapter:(await this.getSubAdapter(s)).dataAdapter}:{bam:r}}}}}]);
+//# sourceMappingURL=6823.6e35b0cf.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6823.6e35b0cf.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6823.6e35b0cf.chunk.js","mappings":"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","sources":["../../../plugins/alignments/src/BamAdapter/BamSlightlyLazyFeature.ts","../../../plugins/alignments/src/BamAdapter/BamAdapter.ts","../../../plugins/alignments/src/HtsgetBamAdapter/HtsgetBamAdapter.ts"],"sourcesContent":["import {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { BamRecord } from '@gmod/bam'\n\n// locals\nimport { getClip, getMismatches } from '../MismatchParser'\nimport BamAdapter from './BamAdapter'\n\nexport default class BamSlightlyLazyFeature implements Feature {\n  // uses parameter properties to automatically create fields on the class\n  // https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties\n  constructor(\n    private record: BamRecord,\n    private adapter: BamAdapter,\n    private ref?: string,\n  ) {}\n\n  _get_name() {\n    return this.record.get('name')\n  }\n\n  _get_type(): string {\n    return 'match'\n  }\n\n  _get_score(): number {\n    return this.record.get('mq')\n  }\n\n  _get_flags(): string {\n    return this.record.flags\n  }\n\n  _get_strand(): number {\n    return this.record.isReverseComplemented() ? -1 : 1\n  }\n\n  _get_pair_orientation() {\n    return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n  }\n\n  _get_next_ref() {\n    return this.record.isPaired()\n      ? this.adapter.refIdToName(this.record._next_refid())\n      : undefined\n  }\n\n  _get_next_pos() {\n    return this.record.isPaired() ? this.record._next_pos() : undefined\n  }\n\n  _get_next_segment_position() {\n    return this.record.isPaired()\n      ? `${this.adapter.refIdToName(this.record._next_refid())}:${\n          this.record._next_pos() + 1\n        }`\n      : undefined\n  }\n\n  _get_seq() {\n    return this.record.getReadBases()\n  }\n\n  qualRaw() {\n    return this.record.qualRaw()\n  }\n\n  set() {}\n\n  tags() {\n    const properties = Object.getOwnPropertyNames(\n      BamSlightlyLazyFeature.prototype,\n    )\n\n    return [\n      ...new Set(\n        properties\n          .filter(\n            prop =>\n              prop.startsWith('_get_') &&\n              prop !== '_get_mismatches' &&\n              prop !== '_get_tags',\n          )\n          .map(methodName => methodName.replace('_get_', ''))\n          .concat(this.record._tags()),\n      ),\n    ]\n  }\n\n  id() {\n    return `${this.adapter.id}-${this.record.id()}`\n  }\n\n  get(field: string): any {\n    const methodName = `_get_${field}`\n    // @ts-expect-error\n    if (this[methodName]) {\n      // @ts-expect-error\n      return this[methodName]()\n    }\n    return this.record.get(field)\n  }\n\n  _get_refName() {\n    return this.adapter.refIdToName(this.record.seq_id())\n  }\n\n  parent() {\n    return undefined\n  }\n\n  children() {\n    return undefined\n  }\n\n  pairedFeature() {\n    return false\n  }\n\n  toJSON(): SimpleFeatureSerialized {\n    return {\n      ...Object.fromEntries(\n        this.tags()\n          .map(t => [t, this.get(t)])\n          .filter(elt => elt[1] !== undefined),\n      ),\n      uniqueId: this.id(),\n    }\n  }\n\n  _get_mismatches() {\n    return getMismatches(\n      this.get('CIGAR'),\n      this.get('MD'),\n      this.get('seq'),\n      this.ref,\n      this.qualRaw(),\n    )\n  }\n\n  _get_clipPos() {\n    const cigar = this.get('CIGAR') || ''\n    return getClip(cigar, this.get('strand'))\n  }\n}\n","import { BamFile } from '@gmod/bam'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { bytesForRegions, updateStatus, Feature } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport BamSlightlyLazyFeature from './BamSlightlyLazyFeature'\nimport { IFilter } from '../shared'\n\ninterface Header {\n  idToName: string[]\n  nameToId: Record<string, number>\n}\n\nexport default class BamAdapter extends BaseFeatureDataAdapter {\n  private samHeader?: Header\n\n  private setupP?: Promise<Header>\n  private configureP?: Promise<{\n    bam: BamFile\n    sequenceAdapter?: BaseFeatureDataAdapter\n  }>\n\n  // derived classes may not use the same configuration so a custom configure\n  // method allows derived classes to override this behavior\n  protected async configurePre() {\n    const bamLocation = this.getConf('bamLocation')\n    const location = this.getConf(['index', 'location'])\n    const indexType = this.getConf(['index', 'indexType'])\n    const pm = this.pluginManager\n    const csi = indexType === 'CSI'\n    const bam = new BamFile({\n      bamFilehandle: openLocation(bamLocation, pm),\n      csiFilehandle: csi ? openLocation(location, pm) : undefined,\n      baiFilehandle: !csi ? openLocation(location, pm) : undefined,\n      yieldThreadTime: Number.POSITIVE_INFINITY,\n    })\n\n    const adapterConfig = this.getConf('sequenceAdapter')\n    if (adapterConfig && this.getSubAdapter) {\n      const { dataAdapter } = await this.getSubAdapter(adapterConfig)\n      return {\n        bam,\n        sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n      }\n    }\n    return { bam }\n  }\n\n  protected async configure() {\n    if (!this.configureP) {\n      this.configureP = this.configurePre().catch((e: unknown) => {\n        this.configureP = undefined\n        throw e\n      })\n    }\n    return this.configureP\n  }\n\n  async getHeader(opts?: BaseOptions) {\n    const { bam } = await this.configure()\n    return bam.getHeaderText(opts)\n  }\n\n  private async setupPre(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const { bam } = await this.configure()\n    this.samHeader = await updateStatus(\n      'Downloading index',\n      statusCallback,\n      async () => {\n        const samHeader = await bam.getHeader(opts)\n\n        // use the @SQ lines in the header to figure out the\n        // mapping between ref ref ID numbers and names\n        const idToName: string[] = []\n        const nameToId: Record<string, number> = {}\n        samHeader\n          ?.filter(l => l.tag === 'SQ')\n          .forEach((sqLine, refId) => {\n            const SN = sqLine.data.find(item => item.tag === 'SN')\n            if (SN) {\n              // this is the ref name\n              const refName = SN.value\n              nameToId[refName] = refId\n              idToName[refId] = refName\n            }\n          })\n\n        return { idToName, nameToId }\n      },\n    )\n    return this.samHeader\n  }\n\n  async setup(opts?: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  async getRefNames(opts?: BaseOptions) {\n    const { idToName } = await this.setup(opts)\n    return idToName\n  }\n\n  private async seqFetch(refName: string, start: number, end: number) {\n    const { sequenceAdapter } = await this.configure()\n    const refSeqStore = sequenceAdapter\n    if (!refSeqStore) {\n      return undefined\n    }\n    if (!refName) {\n      return undefined\n    }\n\n    const features = refSeqStore.getFeatures({\n      refName,\n      start,\n      end,\n      assemblyName: '',\n    })\n\n    const seqChunks = await firstValueFrom(features.pipe(toArray()))\n\n    let sequence = ''\n    seqChunks\n      .sort((a, b) => a.get('start') - b.get('start'))\n      .forEach(chunk => {\n        const chunkStart = chunk.get('start')\n        const chunkEnd = chunk.get('end')\n        const trimStart = Math.max(start - chunkStart, 0)\n        const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n        const trimLength = trimEnd - trimStart\n        const chunkSeq = chunk.get('seq') || chunk.get('residues')\n        sequence += chunkSeq.slice(trimStart, trimStart + trimLength)\n      })\n\n    if (sequence.length !== end - start) {\n      throw new Error(\n        `sequence fetch failed: fetching ${refName}:${(\n          start - 1\n        ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n          end - start\n        ).toLocaleString()}`,\n      )\n    }\n    return sequence\n  }\n\n  getFeatures(\n    region: Region & { originalRefName?: string },\n    opts?: BaseOptions & {\n      filterBy: IFilter\n    },\n  ) {\n    const { refName, start, end, originalRefName } = region\n    const { signal, filterBy, statusCallback = () => {} } = opts || {}\n    return ObservableCreate<Feature>(async observer => {\n      const { bam } = await this.configure()\n      await this.setup(opts)\n      const records = await updateStatus(\n        'Downloading alignments',\n        statusCallback,\n        () => bam.getRecordsForRange(refName, start, end, opts),\n      )\n\n      await updateStatus('Processing alignments', statusCallback, async () => {\n        const {\n          flagInclude = 0,\n          flagExclude = 0,\n          tagFilter,\n          readName,\n        } = filterBy || {}\n\n        for (const record of records) {\n          let ref: string | undefined\n          if (!record.get('MD')) {\n            ref = await this.seqFetch(\n              originalRefName || refName,\n              record.get('start'),\n              record.get('end'),\n            )\n          }\n\n          const flags = record.flags\n          if ((flags & flagInclude) !== flagInclude && !(flags & flagExclude)) {\n            continue\n          }\n\n          if (tagFilter) {\n            const readVal = record.get(tagFilter.tag)\n            const filterVal = tagFilter.value\n            if (\n              filterVal === '*'\n                ? readVal !== undefined\n                : `${readVal}` !== `${filterVal}`\n            ) {\n              continue\n            }\n          }\n\n          if (readName && record.get('name') !== readName) {\n            continue\n          }\n\n          observer.next(new BamSlightlyLazyFeature(record, this, ref))\n        }\n        observer.complete()\n      })\n    }, signal)\n  }\n\n  async getMultiRegionFeatureDensityStats(\n    regions: Region[],\n    opts?: BaseOptions,\n  ) {\n    const { bam } = await this.configure()\n    // this is a method to avoid calling on htsget adapters\n    if (bam.index) {\n      const bytes = await bytesForRegions(regions, bam)\n      const fetchSizeLimit = this.getConf('fetchSizeLimit')\n      return { bytes, fetchSizeLimit }\n    }\n    return super.getMultiRegionFeatureDensityStats(regions, opts)\n  }\n\n  freeResources(/* { region } */): void {}\n\n  // depends on setup being called before the BAM constructor\n  refIdToName(refId: number) {\n    return this.samHeader?.idToName[refId]\n  }\n}\n","import { BamFile, HtsgetFile } from '@gmod/bam'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport BamAdapter from '../BamAdapter/BamAdapter'\n\nexport default class HtsgetBamAdapter extends BamAdapter {\n  protected async configurePre() {\n    const htsgetBase = this.getConf('htsgetBase')\n    const htsgetTrackId = this.getConf('htsgetTrackId')\n    const bam = new HtsgetFile({\n      baseUrl: htsgetBase,\n      trackId: htsgetTrackId,\n    }) as unknown as BamFile\n\n    const adapterConfig = this.getConf('sequenceAdapter')\n    if (adapterConfig && this.getSubAdapter) {\n      const adapter = await this.getSubAdapter(adapterConfig)\n      return {\n        bam,\n        sequenceAdapter: adapter.dataAdapter as BaseFeatureDataAdapter,\n      }\n    }\n    return { bam }\n  }\n}\n"],"names":["BamSlightlyLazyFeature","constructor","record","adapter","ref","_get_name","this","get","_get_type","_get_score","_get_flags","flags","_get_strand","isReverseComplemented","_get_pair_orientation","isPaired","getPairOrientation","undefined","_get_next_ref","refIdToName","_next_refid","_get_next_pos","_next_pos","_get_next_segment_position","_get_seq","getReadBases","qualRaw","set","tags","properties","Object","getOwnPropertyNames","prototype","Set","filter","prop","startsWith","map","methodName","replace","concat","_tags","id","field","_get_refName","seq_id","parent","children","pairedFeature","toJSON","fromEntries","t","elt","uniqueId","_get_mismatches","getMismatches","_get_clipPos","cigar","getClip","BamAdapter","BaseFeatureDataAdapter","configurePre","bamLocation","getConf","location","indexType","pm","pluginManager","csi","bam","BamFile","bamFilehandle","openLocation","csiFilehandle","baiFilehandle","yieldThreadTime","Number","POSITIVE_INFINITY","adapterConfig","getSubAdapter","dataAdapter","sequenceAdapter","configure","configureP","catch","e","getHeader","opts","getHeaderText","setupPre","statusCallback","samHeader","updateStatus","async","idToName","nameToId","l","tag","forEach","sqLine","refId","SN","data","find","item","refName","value","setup","setupP","getRefNames","seqFetch","start","end","features","getFeatures","assemblyName","seqChunks","firstValueFrom","pipe","toArray","sequence","sort","a","b","chunk","chunkStart","chunkEnd","trimStart","Math","max","trimLength","min","chunkSeq","slice","length","Error","toLocaleString","region","originalRefName","signal","filterBy","ObservableCreate","records","getRecordsForRange","flagInclude","flagExclude","tagFilter","readName","readVal","filterVal","observer","next","complete","getMultiRegionFeatureDensityStats","regions","index","bytes","bytesForRegions","fetchSizeLimit","super","freeResources","HtsgetBamAdapter","htsgetBase","htsgetTrackId","HtsgetFile","baseUrl","trackId"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6833.c77c5928.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6833],{86833:(e,t,s)=>{s.r(t),s.d(t,{default:()=>c,makeFeatures:()=>u});var a=s(46377),r=s(6434),n=s(66885),o=s(68584);function u(e){const t=new Map;for(const s of e){const e=new r.A(s),a=e.get("refName");let n=t.get(a);n||(n=[],t.set(a,n)),n.push(e)}for(const e of t.values())e.sort(((e,t)=>e.get("start")-t.get("start")));return t}class c extends a.BaseFeatureDataAdapter{constructor(e,t,s){super(e,t,s);const a=(0,o.readConfObject)(e,"features");this.features=u(a)}async getRefNames(){return[...this.features.keys()]}async getRefNameAliases(){return[...this.features.values()].map((e=>({refName:e[0].get("refName"),aliases:e[0].get("aliases")})))}getFeatures(e){const{refName:t,start:s,end:a}=e;return(0,n.ObservableCreate)((async e=>{const r=this.features.get(t)||[];for(const t of r)t.get("end")>s&&t.get("start")<a&&e.next(t);e.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=6833.c77c5928.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6833.c77c5928.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6833.c77c5928.chunk.js","mappings":"yNAcO,SAASA,EAAaC,GAC3B,MAAMC,EAAW,IAAIC,IACrB,IAAK,MAAMC,KAASH,EAAO,CACzB,MAAMI,EAAI,IAAIC,EAAAA,EAAcF,GACtBG,EAAUF,EAAEG,IAAI,WACtB,IAAIC,EAASP,EAASM,IAAID,GACrBE,IACHA,EAAS,GACTP,EAASQ,IAAIH,EAASE,IAGxBA,EAAOE,KAAKN,EACd,CAGA,IAAK,MAAMO,KAAeV,EAASW,SACjCD,EAAYE,MAAK,CAACC,EAAGC,IAAMD,EAAEP,IAAI,SAAWQ,EAAER,IAAI,WAGpD,OAAON,CACT,CAEe,MAAMe,UAA0BC,EAAAA,uBAG7CC,WAAAA,CACEC,EACAC,EACAC,GAEAC,MAAMH,EAAMC,EAAeC,GAC3B,MAAME,GAAQC,EAAAA,EAAAA,gBAAeL,EAAM,YACnCM,KAAKxB,SAAWF,EAAawB,EAC/B,CAEA,iBAAMG,GACJ,MAAO,IAAID,KAAKxB,SAAS0B,OAC3B,CAEA,uBAAMC,GACJ,MAAO,IAAIH,KAAKxB,SAASW,UAAUiB,KAAIC,IAAgB,CACrDxB,QAASwB,EAAa,GAAIvB,IAAI,WAC9BwB,QAASD,EAAa,GAAIvB,IAAI,cAElC,CAEAyB,WAAAA,CAAYC,GACV,MAAM,QAAE3B,EAAO,MAAE4B,EAAK,IAAEC,GAAQF,EAEhC,OAAOG,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAMpC,EAAWwB,KAAKxB,SAASM,IAAID,IAAY,GAC/C,IAAK,MAAMF,KAAKH,EACVG,EAAEG,IAAI,OAAS2B,GAAS9B,EAAEG,IAAI,SAAW4B,GAC3CG,EAASC,KAAKnC,GAGlBkC,EAASE,UAAU,GAEvB,CAEAC,aAAAA,GAAuC,E","sources":["../../../plugins/config/src/FromConfigAdapter/FromConfigAdapter.ts"],"sourcesContent":["import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport SimpleFeature, {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nexport function makeFeatures(fdata: SimpleFeatureSerialized[]) {\n  const features = new Map<string, Feature[]>()\n  for (const entry of fdata) {\n    const f = new SimpleFeature(entry)\n    const refName = f.get('refName') as string\n    let bucket = features.get(refName)\n    if (!bucket) {\n      bucket = []\n      features.set(refName, bucket)\n    }\n\n    bucket.push(f)\n  }\n\n  // sort the features on each reference sequence by start coordinate\n  for (const refFeatures of features.values()) {\n    refFeatures.sort((a, b) => a.get('start') - b.get('start'))\n  }\n\n  return features\n}\n\nexport default class FromConfigAdapter extends BaseFeatureDataAdapter {\n  protected features: Map<string, Feature[]>\n\n  constructor(\n    conf: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(conf, getSubAdapter, pluginManager)\n    const feats = readConfObject(conf, 'features') as SimpleFeatureSerialized[]\n    this.features = makeFeatures(feats)\n  }\n\n  async getRefNames() {\n    return [...this.features.keys()]\n  }\n\n  async getRefNameAliases() {\n    return [...this.features.values()].map(featureArray => ({\n      refName: featureArray[0]!.get('refName'),\n      aliases: featureArray[0]!.get('aliases'),\n    }))\n  }\n\n  getFeatures(region: NoAssemblyRegion) {\n    const { refName, start, end } = region\n\n    return ObservableCreate<Feature>(async observer => {\n      const features = this.features.get(refName) || []\n      for (const f of features) {\n        if (f.get('end') > start && f.get('start') < end) {\n          observer.next(f)\n        }\n      }\n      observer.complete()\n    })\n  }\n\n  freeResources(/* { region } */): void {}\n}\n"],"names":["makeFeatures","fdata","features","Map","entry","f","SimpleFeature","refName","get","bucket","set","push","refFeatures","values","sort","a","b","FromConfigAdapter","BaseFeatureDataAdapter","constructor","conf","getSubAdapter","pluginManager","super","feats","readConfObject","this","getRefNames","keys","getRefNameAliases","map","featureArray","aliases","getFeatures","region","start","end","ObservableCreate","async","observer","next","complete","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6834.bc9e9f2b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6834],{6834:(e,t,r)=>{r.r(t),r.d(t,{default:()=>d});var s=r(93902),a=r(60972),n=r(46377),i=r(99834),o=r(66885),c=r(99546),u=r(4101);class d extends n.BaseFeatureDataAdapter{async configurePre(e){const t=this.pluginManager,r=new s.C({filehandle:(0,i.openLocation)(this.getConf("bigBedLocation"),t)}),n=await r.getHeader(e);return{bigbed:r,header:n,parser:new a.A({autoSql:n.autoSql})}}async configure(e){return this.cached||(this.cached=this.configurePre(e).catch((e=>{throw this.cached=void 0,e}))),this.cached}async getRefNames(e){const{header:t}=await this.configure(e);return Object.keys(t.refsByName)}async getHeader(e){const{parser:t,header:r}=await this.configure(e),{version:s,fileType:a}=r,{fields:n,...i}=t.autoSql;return{version:s,fileType:a,autoSql:{...i},fields:Object.fromEntries(n.map((({name:e,comment:t})=>[e,t])))}}async getFeaturesHelper(e,t,r,s,a=e){const{signal:n}=t,i=this.getConf("scoreColumn"),o=this.getConf("aggregateField"),{parser:d,bigbed:f}=await this.configure(t),h=await f.getFeatures(e.refName,e.start,e.end,{signal:n,basesPerSpan:e.end-e.start});if(s&&h.length){let s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;for(const e of h)e.start<s&&(s=e.start),e.end>a&&(a=e.end);if(a>e.end||s<e.start)return void await this.getFeaturesHelper({...e,start:s,end:a},t,r,!1,e)}const l={};if(h.some((e=>void 0===e.uniqueId)))throw new Error("found uniqueId undefined");for(const t of h){const s=d.parseLine(`${e.refName}\t${t.start}\t${t.end}\t${t.rest}`,{uniqueId:t.uniqueId}),n=s[o];l[n]||(l[n]=[]);const{uniqueId:f,type:h,chromStart:m,chromStarts:p,blockStarts:b,blockCount:S,blockSizes:k,chromEnd:N,thickStart:g,thickEnd:y,chrom:I,score:C,...w}=s,q=S?(0,u.zZ)({chromStarts:p,blockStarts:b,blockCount:S,blockSizes:k,uniqueId:f,refName:e.refName,start:t.start}):[];if((0,u.Vl)(s)){const o=(0,u.BX)({...w,uniqueId:f,type:h,start:t.start,end:t.end,refName:e.refName,score:i?+s[i]:C,chromStarts:p,blockCount:S,blockSizes:k,thickStart:g,thickEnd:y,subfeatures:q});n?l[n].push(o):(0,c.doesIntersect2)(o.start,o.end,a.start,a.end)&&r.next(new c.SimpleFeature({id:`${this.id}-${f}`,data:o}))}else(0,c.doesIntersect2)(t.start,t.end,a.start,a.end)&&r.next(new c.SimpleFeature({id:`${this.id}-${f}`,data:{...w,uniqueId:f,type:h,start:t.start,score:i?+s[i]:C,end:t.end,refName:e.refName,subfeatures:q}}))}Object.entries(l).map((([t,s])=>{const n=(0,c.min)(s.map((e=>e.start))),i=(0,c.max)(s.map((e=>e.end)));if((0,c.doesIntersect2)(n,i,a.start,a.end)){const{uniqueId:a,strand:o}=s[0];r.next(new c.SimpleFeature({id:`${this.id}-${a}-parent`,data:{type:"gene",subfeatures:s,strand:o,name:t,start:n,end:i,refName:e.refName}}))}})),r.complete()}getFeatures(e,t={}){return(0,o.ObservableCreate)((async r=>{try{await this.getFeaturesHelper(e,t,r,!0)}catch(e){r.error(e)}}),t.signal)}freeResources(){}}},4101:(e,t,r)=>{r.d(t,{BX:()=>a,Vl:()=>o,dE:()=>i,zZ:()=>n});var s=r(99546);function a(e){const{subfeatures:t,thickStart:r,thickEnd:s,blockCount:a,blockSizes:n,chromStarts:i,refName:o,strand:c=0,...u}=e;if(!r||!s||!c)return e;const d=[];return t.filter((e=>"block"===e.type)).sort(((e,t)=>e.start-t.start)).forEach((e=>{const t=e.start,a=e.end;if(r>=a){const e=c>0?"five":"three";d.push({type:`${e}_prime_UTR`,start:t,end:a,refName:o})}else if(r>t&&r<a&&s>=a){const e=c>0?"five":"three";d.push({type:`${e}_prime_UTR`,start:t,end:r,refName:o},{type:"CDS",start:r,end:a,refName:o})}else if(r<=t&&s>=a)d.push({type:"CDS",start:t,end:a,refName:o});else if(r>t&&r<a&&s<a){const e=c>0?"five":"three",n=c>0?"three":"five";d.push({type:`${e}_prime_UTR`,start:t,end:r,refName:o},{type:"CDS",start:r,end:s,refName:o},{type:`${n}_prime_UTR`,start:s,end:a,refName:o})}else if(r<=t&&s>t&&s<a){const e=c>0?"three":"five";d.push({type:"CDS",start:t,end:s,refName:o},{type:`${e}_prime_UTR`,start:s,end:a,refName:o})}else if(s<=t){const e=c>0?"three":"five";d.push({type:`${e}_prime_UTR`,start:t,end:a,refName:o})}})),{...u,strand:c,type:"mRNA",refName:o,subfeatures:d}}function n({start:e,uniqueId:t,refName:r,chromStarts:s,blockCount:a,blockSizes:n,blockStarts:i}){const o=[],c=s||i||[];for(let s=0;s<a;s++){const a=(c[s]||0)+e,i=a+(n[s]||0);o.push({uniqueId:`${t}-${s}`,start:a,end:i,refName:r,type:"block"})}return o}function i(e,t,r,i,c,u,d,f){const h=e.split("\t"),l=h[t],m=+h[r],p=r===i?1:0,b=+h[i]+p,S=f?function(e,t){const r=Object.fromEntries(t.split("\t").map(((t,r)=>[e[r],t]))),{blockStarts:s,blockCount:a,chromStarts:n,thickEnd:i,thickStart:o,blockSizes:c,...u}=r;return{...u,blockStarts:s?.split(",").map((e=>+e)),chromStarts:n?.split(",").map((e=>+e)),blockSizes:c?.split(",").map((e=>+e)),thickStart:o?+o:void 0,thickEnd:i?+i:void 0,blockCount:a?+a:void 0}}(f,e):u.parseLine(e,{uniqueId:d}),{blockCount:k,blockSizes:N,blockStarts:g,chromStarts:y,thickStart:I,thickEnd:C,type:w,score:q,chrom:$,chromStart:_,chromEnd:v,...E}=S,T=k?n({start:m,uniqueId:d,refName:l,chromStarts:y,blockCount:k,blockSizes:N,blockStarts:g}):[],F={...E,type:w,score:c?+S[c]:q,start:m,end:b,refName:l,uniqueId:d,subfeatures:T};return new s.SimpleFeature({id:d,data:o(S)?a({thickStart:I,thickEnd:C,blockCount:k,blockSizes:N,chromStarts:y,...F}):F})}function o(e){return e.thickStart&&e.blockCount&&0!==e.strand}}}]);
+//# sourceMappingURL=6834.bc9e9f2b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6834.bc9e9f2b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6834.bc9e9f2b.chunk.js","mappings":"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","sources":["../../../plugins/bed/src/BigBedAdapter/BigBedAdapter.ts","../../../plugins/bed/src/util.ts"],"sourcesContent":["import { BigBed } from '@gmod/bbi'\nimport BED from '@gmod/bed'\nimport {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport {\n  doesIntersect2,\n  max,\n  min,\n  Feature,\n  SimpleFeature,\n} from '@jbrowse/core/util'\nimport { Observer } from 'rxjs'\nimport { SimpleFeatureSerializedNoId } from '@jbrowse/core/util/simpleFeature'\n\n// locals\nimport {\n  isUcscProcessedTranscript,\n  makeBlocks,\n  ucscProcessedTranscript,\n} from '../util'\n\nexport default class BigBedAdapter extends BaseFeatureDataAdapter {\n  private cached?: Promise<{\n    bigbed: BigBed\n    header: Awaited<ReturnType<BigBed['getHeader']>>\n    parser: BED\n  }>\n\n  public async configurePre(opts?: BaseOptions) {\n    const pm = this.pluginManager\n    const bigbed = new BigBed({\n      filehandle: openLocation(this.getConf('bigBedLocation'), pm),\n    })\n    const header = await bigbed.getHeader(opts)\n    const parser = new BED({ autoSql: header.autoSql })\n    return { bigbed, header, parser }\n  }\n\n  public async configure(opts?: BaseOptions) {\n    if (!this.cached) {\n      this.cached = this.configurePre(opts).catch((e: unknown) => {\n        this.cached = undefined\n        throw e\n      })\n    }\n    return this.cached\n  }\n\n  public async getRefNames(opts?: BaseOptions) {\n    const { header } = await this.configure(opts)\n    return Object.keys(header.refsByName)\n  }\n\n  async getHeader(opts?: BaseOptions) {\n    const { parser, header } = await this.configure(opts)\n    const { version, fileType } = header\n    const { fields, ...rest } = parser.autoSql\n    return {\n      version,\n      fileType,\n      autoSql: { ...rest },\n      fields: Object.fromEntries(\n        fields.map(({ name, comment }) => [name, comment]),\n      ),\n    }\n  }\n\n  public async getFeaturesHelper(\n    query: Region,\n    opts: BaseOptions,\n    observer: Observer<Feature>,\n    allowRedispatch: boolean,\n    originalQuery = query,\n  ) {\n    const { signal } = opts\n    const scoreColumn = this.getConf('scoreColumn')\n    const aggregateField = this.getConf('aggregateField')\n    const { parser, bigbed } = await this.configure(opts)\n    const feats = await bigbed.getFeatures(\n      query.refName,\n      query.start,\n      query.end,\n      {\n        signal,\n        basesPerSpan: query.end - query.start,\n      },\n    )\n    if (allowRedispatch && feats.length) {\n      let minStart = Number.POSITIVE_INFINITY\n      let maxEnd = Number.NEGATIVE_INFINITY\n      for (const feat of feats) {\n        if (feat.start < minStart) {\n          minStart = feat.start\n        }\n        if (feat.end > maxEnd) {\n          maxEnd = feat.end\n        }\n      }\n      if (maxEnd > query.end || minStart < query.start) {\n        await this.getFeaturesHelper(\n          { ...query, start: minStart, end: maxEnd },\n          opts,\n          observer,\n          false,\n          query,\n        )\n        return\n      }\n    }\n\n    const parentAggregation = {} as Record<\n      string,\n      SimpleFeatureSerializedNoId[]\n    >\n\n    if (feats.some(f => f.uniqueId === undefined)) {\n      throw new Error('found uniqueId undefined')\n    }\n    for (const feat of feats) {\n      const data = parser.parseLine(\n        `${query.refName}\\t${feat.start}\\t${feat.end}\\t${feat.rest}`,\n        { uniqueId: feat.uniqueId! },\n      )\n\n      const aggr = data[aggregateField]\n      if (!parentAggregation[aggr]) {\n        parentAggregation[aggr] = []\n      }\n      const {\n        uniqueId,\n        type,\n        chromStart,\n        chromStarts,\n        blockStarts,\n        blockCount,\n        blockSizes,\n        chromEnd,\n        thickStart,\n        thickEnd,\n        chrom,\n        score,\n        ...rest\n      } = data\n\n      const subfeatures = blockCount\n        ? makeBlocks({\n            chromStarts,\n            blockStarts,\n            blockCount,\n            blockSizes,\n            uniqueId,\n            refName: query.refName,\n            start: feat.start,\n          })\n        : []\n\n      if (isUcscProcessedTranscript(data)) {\n        const f = ucscProcessedTranscript({\n          ...rest,\n          uniqueId,\n          type,\n          start: feat.start,\n          end: feat.end,\n          refName: query.refName,\n          score: scoreColumn ? +data[scoreColumn] : score,\n          chromStarts,\n          blockCount,\n          blockSizes,\n          thickStart,\n          thickEnd,\n          subfeatures,\n        })\n        if (aggr) {\n          parentAggregation[aggr].push(f)\n        } else {\n          if (\n            doesIntersect2(\n              f.start,\n              f.end,\n              originalQuery.start,\n              originalQuery.end,\n            )\n          ) {\n            observer.next(\n              new SimpleFeature({ id: `${this.id}-${uniqueId}`, data: f }),\n            )\n          }\n        }\n      } else {\n        if (\n          doesIntersect2(\n            feat.start,\n            feat.end,\n            originalQuery.start,\n            originalQuery.end,\n          )\n        ) {\n          observer.next(\n            new SimpleFeature({\n              id: `${this.id}-${uniqueId}`,\n              data: {\n                ...rest,\n                uniqueId,\n                type,\n                start: feat.start,\n                score: scoreColumn ? +data[scoreColumn] : score,\n                end: feat.end,\n                refName: query.refName,\n                subfeatures,\n              },\n            }),\n          )\n        }\n      }\n    }\n\n    Object.entries(parentAggregation).map(([name, subfeatures]) => {\n      const s = min(subfeatures.map(f => f.start))\n      const e = max(subfeatures.map(f => f.end))\n      if (doesIntersect2(s, e, originalQuery.start, originalQuery.end)) {\n        const { uniqueId, strand } = subfeatures[0]!\n        observer.next(\n          new SimpleFeature({\n            id: `${this.id}-${uniqueId}-parent`,\n            data: {\n              type: 'gene',\n              subfeatures,\n              strand,\n              name,\n              start: s,\n              end: e,\n              refName: query.refName,\n            },\n          }),\n        )\n      }\n    })\n    observer.complete()\n  }\n  public getFeatures(query: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      try {\n        await this.getFeaturesHelper(query, opts, observer, true)\n      } catch (e) {\n        observer.error(e)\n      }\n    }, opts.signal)\n  }\n\n  public freeResources(): void {}\n}\n","import BED from '@gmod/bed'\nimport { SimpleFeature } from '@jbrowse/core/util'\n\nexport interface MinimalFeature {\n  type: string\n  start: number\n  end: number\n  refName: string\n  [key: string]: unknown\n}\nexport interface TranscriptFeat extends MinimalFeature {\n  thickStart: number\n  thickEnd: number\n  blockCount: number\n  blockSizes: number[]\n  chromStarts: number[]\n  refName: string\n  strand?: number\n  subfeatures: MinimalFeature[]\n}\n\nexport function ucscProcessedTranscript(feature: TranscriptFeat) {\n  const {\n    subfeatures: oldSubfeatures,\n    thickStart,\n    thickEnd,\n    blockCount,\n    blockSizes,\n    chromStarts,\n    refName,\n    strand = 0,\n    ...rest\n  } = feature\n\n  if (!thickStart || !thickEnd || !strand) {\n    return feature\n  }\n\n  const subfeatures: MinimalFeature[] = []\n  oldSubfeatures\n    .filter(child => child.type === 'block')\n    .sort((a, b) => a.start - b.start)\n    .forEach(block => {\n      const start = block.start\n      const end = block.end\n      if (thickStart >= end) {\n        // left-side UTR\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd >= end) {\n        // UTR | CDS\n        const prime = strand > 0 ? 'five' : 'three'\n        subfeatures.push(\n          {\n            type: `${prime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd >= end) {\n        // CDS\n        subfeatures.push({\n          type: 'CDS',\n          start,\n          end,\n          refName,\n        })\n      } else if (thickStart > start && thickStart < end && thickEnd < end) {\n        // UTR | CDS | UTR\n        const leftPrime = strand > 0 ? 'five' : 'three'\n        const rightPrime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: `${leftPrime}_prime_UTR`,\n            start,\n            end: thickStart,\n            refName,\n          },\n          {\n            type: 'CDS',\n            start: thickStart,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${rightPrime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickStart <= start && thickEnd > start && thickEnd < end) {\n        // CDS | UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push(\n          {\n            type: 'CDS',\n            start,\n            end: thickEnd,\n            refName,\n          },\n          {\n            type: `${prime}_prime_UTR`,\n            start: thickEnd,\n            end,\n            refName,\n          },\n        )\n      } else if (thickEnd <= start) {\n        // right-side UTR\n        const prime = strand > 0 ? 'three' : 'five'\n        subfeatures.push({\n          type: `${prime}_prime_UTR`,\n          start,\n          end,\n          refName,\n        })\n      }\n    })\n\n  return { ...rest, strand, type: 'mRNA', refName, subfeatures }\n}\n\nfunction defaultParser(fields: string[], line: string) {\n  const obj = Object.fromEntries(\n    line.split('\\t').map((f, i) => [fields[i]!, f] as const),\n  )\n  const {\n    blockStarts,\n    blockCount,\n    chromStarts,\n    thickEnd,\n    thickStart,\n    blockSizes,\n    ...rest\n  } = obj\n\n  return {\n    ...rest,\n    blockStarts: blockStarts?.split(',').map(r => +r),\n    chromStarts: chromStarts?.split(',').map(r => +r),\n    blockSizes: blockSizes?.split(',').map(r => +r),\n    thickStart: thickStart ? +thickStart : undefined,\n    thickEnd: thickEnd ? +thickEnd : undefined,\n    blockCount: blockCount ? +blockCount : undefined,\n  } as Record<string, unknown>\n}\n\nexport function makeBlocks({\n  start,\n  uniqueId,\n  refName,\n  chromStarts,\n  blockCount,\n  blockSizes,\n  blockStarts,\n}: {\n  blockCount: number\n  start: number\n  uniqueId: string\n  refName: string\n  chromStarts?: number[]\n  blockSizes: number[]\n  blockStarts?: number[]\n}) {\n  const subfeatures = []\n  const starts = chromStarts || blockStarts || []\n  for (let b = 0; b < blockCount; b++) {\n    const bmin = (starts[b] || 0) + start\n    const bmax = bmin + (blockSizes[b] || 0)\n    subfeatures.push({\n      uniqueId: `${uniqueId}-${b}`,\n      start: bmin,\n      end: bmax,\n      refName,\n      type: 'block',\n    })\n  }\n  return subfeatures\n}\nexport function featureData(\n  line: string,\n  colRef: number,\n  colStart: number,\n  colEnd: number,\n  scoreColumn: string,\n  parser: BED,\n  uniqueId: string,\n  names?: string[],\n) {\n  const l = line.split('\\t')\n  const refName = l[colRef]!\n  const start = +l[colStart]!\n  const colSame = colStart === colEnd ? 1 : 0\n  const end = +l[colEnd]! + colSame\n  const data = names\n    ? defaultParser(names, line)\n    : parser.parseLine(line, { uniqueId })\n\n  const {\n    blockCount,\n    blockSizes,\n    blockStarts,\n    chromStarts,\n    thickStart,\n    thickEnd,\n    type,\n    score,\n    chrom: _1,\n    chromStart: _2,\n    chromEnd: _3,\n    ...rest\n  } = data\n  const subfeatures = blockCount\n    ? makeBlocks({\n        start,\n        uniqueId,\n        refName,\n        chromStarts,\n        blockCount,\n        blockSizes,\n        blockStarts,\n      })\n    : []\n  const f = {\n    ...rest,\n    type,\n    score: scoreColumn ? +data[scoreColumn] : score,\n    start,\n    end,\n    refName,\n    uniqueId,\n    subfeatures,\n  }\n  return new SimpleFeature({\n    id: uniqueId,\n    data: isUcscProcessedTranscript(data)\n      ? ucscProcessedTranscript({\n          thickStart: thickStart!,\n          thickEnd: thickEnd!,\n          blockCount: blockCount!,\n          blockSizes: blockSizes!,\n          chromStarts: chromStarts,\n          ...f,\n        })\n      : f,\n  })\n}\n\nexport function isUcscProcessedTranscript(f: {\n  thickStart?: number\n  blockCount?: number\n  strand?: number\n}) {\n  return f.thickStart && f.blockCount && f.strand !== 0\n}\n"],"names":["BigBedAdapter","BaseFeatureDataAdapter","configurePre","opts","pm","this","pluginManager","bigbed","BigBed","filehandle","openLocation","getConf","header","getHeader","parser","BED","autoSql","configure","cached","catch","e","undefined","getRefNames","Object","keys","refsByName","version","fileType","fields","rest","fromEntries","map","name","comment","getFeaturesHelper","query","observer","allowRedispatch","originalQuery","signal","scoreColumn","aggregateField","feats","getFeatures","refName","start","end","basesPerSpan","length","minStart","Number","POSITIVE_INFINITY","maxEnd","NEGATIVE_INFINITY","feat","parentAggregation","some","f","uniqueId","Error","data","parseLine","aggr","type","chromStart","chromStarts","blockStarts","blockCount","blockSizes","chromEnd","thickStart","thickEnd","chrom","score","subfeatures","makeBlocks","isUcscProcessedTranscript","ucscProcessedTranscript","push","doesIntersect2","next","SimpleFeature","id","entries","s","min","max","strand","complete","ObservableCreate","async","error","freeResources","feature","oldSubfeatures","filter","child","sort","a","b","forEach","block","prime","leftPrime","rightPrime","starts","bmin","bmax","featureData","line","colRef","colStart","colEnd","names","l","split","colSame","obj","i","r","defaultParser","_1","_2","_3"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6837.a706c464.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,15 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6837],{9342:(e,t,r)=>{"use strict";r.d(t,{Q:()=>a,n:()=>m});var n=r(68584);const a=(0,n.ConfigurationSchema)("BaseFeatureWidget",{});var o=r(36422),i=r(42489),s=r(33039),l=r.n(s),c=r(99546),d=r(8832);function u(e,t){return+((0,c.localStorageGetItem)(e)??t)}function p(e,t,r,n=0,a={}){t<=n||e.subfeatures?.map((e=>{p(e,t,r,n+1,a),r(e)}))}function m(e){return o.types.model("BaseFeatureWidget",{id:d.ElementId,type:o.types.literal("BaseFeatureWidget"),featureData:o.types.frozen(),formattedFields:o.types.frozen(),unformattedFeatureData:o.types.frozen(),view:o.types.safeReference(e.pluggableMstType("view","stateModel")),track:o.types.safeReference(e.pluggableMstType("track","stateModel")),trackId:o.types.maybe(o.types.string),trackType:o.types.maybe(o.types.string),maxDepth:o.types.maybe(o.types.number),sequenceFeatureDetails:o.types.optional(o.types.model("SequenceFeatureDetails").volatile((()=>({showCoordinatesSetting:(0,c.localStorageGetItem)("sequenceFeatureDetails-showCoordinatesSetting")||"none",intronBp:u("sequenceFeatureDetails-intronBp",10),upDownBp:u("sequenceFeatureDetails-upDownBp",100),upperCaseCDS:Boolean(JSON.parse((0,c.localStorageGetItem)("sequenceFeatureDetails-upperCaseCDS")||"true")),charactersPerRow:100,feature:void 0,mode:""}))).actions((e=>({setFeature(t){e.feature=t},setUpDownBp(t){e.upDownBp=t},setIntronBp(t){e.intronBp=t},setUpperCaseCDS(t){e.upperCaseCDS=t},setShowCoordinates(t){e.showCoordinatesSetting=t},setMode(t){e.mode=t}}))).views((e=>({get showCoordinates(){return"none"!==e.showCoordinatesSetting},get showGenomicCoordsOption(){return"gene"===e.mode||"gene_updownstream"===e.mode||"genomic"===e.mode||"genomic_sequence_updownstream"===e.mode},get hasCDS(){return e.feature?.subfeatures?.some((e=>"CDS"===e.type))},get hasExon(){return e.feature?.subfeatures?.some((e=>"exon"===e.type))},get hasExonOrCDS(){return this.hasExon||this.hasCDS}}))).actions((e=>({afterAttach(){(0,o.addDisposer)(e,(0,i.autorun)((()=>{(0,c.localStorageSetItem)("sequenceFeatureDetails-upDownBp",JSON.stringify(e.upDownBp)),(0,c.localStorageSetItem)("sequenceFeatureDetails-intronBp",JSON.stringify(e.intronBp)),(0,c.localStorageSetItem)("sequenceFeatureDetails-upperCaseCDS",JSON.stringify(e.upperCaseCDS)),(0,c.localStorageSetItem)("sequenceFeatureDetails-showCoordinatesSetting",e.showCoordinatesSetting)}))),(0,o.addDisposer)(e,(0,i.autorun)((()=>{e.setMode(e.hasCDS?"cds":e.hasExon?"cdna":"genomic")})))}}))),{})}).volatile((()=>({error:void 0}))).actions((e=>({setFeatureData(t){e.unformattedFeatureData=t},clearFeatureData(){e.featureData=void 0},setFormattedData(t){e.featureData=t},setExtra(t,r,n){e.trackId=r,e.trackType=t,e.maxDepth=n},setError(t){e.error=t}}))).actions((e=>({afterCreate(){(0,o.addDisposer)(e,(0,i.autorun)((()=>{try{const{unformattedFeatureData:t,track:r}=e,a=(0,c.getSession)(e);if(r&&e.setExtra(r.type,r.configuration.trackId,(0,n.getConf)(r,["formatDetails","maxDepth"])),t){const o=l()(t),i=(e,t)=>({...(0,n.getConf)(a,["formatDetails",e],{feature:t}),...(0,n.getConf)(r,["formatDetails",e],{feature:t})});r&&(o.__jbrowsefmt=i("feature",o),p(o,(0,n.getConf)(r,["formatDetails","depth"]),(e=>{e.__jbrowsefmt=i("subfeatures",e)}))),e.setFormattedData(o)}}catch(t){console.error(t),e.setError(t)}})))}}))).preProcessSnapshot((e=>{const{featureData:t,finalizedFeatureData:r,...n}=e;return{unformattedFeatureData:t,featureData:r,...n}})).postProcessSnapshot((e=>{const{unformattedFeatureData:t,featureData:r,...n}=e;return{finalizedFeatureData:JSON.parse(JSON.stringify(r,((e,t)=>void 0===t?null:t))),...n}}))}},12678:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});class n{install(e){}configure(e){}}},70129:(e,t,r)=>{"use strict";r.d(t,{A:()=>W});var n={};r.r(n),r.d(n,{CoreFreeResources:()=>L,CoreGetFeatureDensityStats:()=>D,CoreGetFeatureDetails:()=>x,CoreGetFeatures:()=>I,CoreGetFileInfo:()=>P,CoreGetMetadata:()=>A,CoreGetRefNames:()=>k,CoreRender:()=>F});var a=r(36422),o=r(97666),i=r(47369),s=r(58273),l=r(56328),c=r(63589),d=r(67736),u=r(91612),p=r(2406),m=r(92070),g=r(8024),h=r(32767),f=r(68584),y=r(2862),b=r(7552),w=r(9342),v=r(12678),C=r(3496),S=r(46377);class k extends p.A{name="CoreGetRefNames";async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{sessionId:a,adapterConfig:o}=n,{dataAdapter:i}=await(0,C.cK)(r,a,o);return(0,S.isFeatureAdapter)(i)?i.getRefNames(n):[]}}var T=r(99546);class x extends p.A{name="CoreGetFeatureDetails";async serializeArguments(e,t){const{rootModel:r}=this.pluginManager,n=r.session.assemblyManager,a=await(0,T.renameRegionsIfNeeded)(n,e),o=await super.serializeArguments(a,t);if("MainThreadRpcDriver"===t)return o;const{rendererType:i}=e;return this.pluginManager.getRendererType(i).serializeArgsInClient(o)}async execute(e,t){let r=e;"MainThreadRpcDriver"!==t&&(r=await this.deserializeArguments(e,t));const{rendererType:n,featureId:a}=r,o=this.pluginManager.getRendererType(n);return{feature:o.sessions[(0,T.getLayoutId)(e)]?.cachedLayout.layout.getDataByID(a)?.toJSON()}}}class A extends p.A{name="CoreGetMetadata";async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{sessionId:a,adapterConfig:o}=n,{dataAdapter:i}=await(0,C.cK)(r,a,o);return(0,S.isFeatureAdapter)(i)?i.getMetadata(n):null}}class P extends p.A{name="CoreGetInfo";async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{sessionId:a,adapterConfig:o}=n,{dataAdapter:i}=await(0,C.cK)(r,a,o);return(0,S.isFeatureAdapter)(i)?i.getHeader(n):null}}var M=r(82088),E=r(44728),R=r(6434);class I extends p.A{name="CoreGetFeatures";async deserializeReturn(e,t,r){return(await super.deserializeReturn(e,t,r)).map((e=>new R.A(e)))}async serializeArguments(e,t){const{rootModel:r}=this.pluginManager,n=r.session.assemblyManager,a=await(0,T.renameRegionsIfNeeded)(n,e);return super.serializeArguments(a,t)}async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{signal:a,sessionId:o,adapterConfig:i,regions:s,opts:l}=n,{dataAdapter:c}=await(0,C.cK)(r,o,i);if(!(0,S.isFeatureAdapter)(c))throw new Error("Adapter does not support retrieving features");const d=c.getFeaturesInMultipleRegions(s,{...l,signal:a});return(await(0,E._)(d.pipe((0,M.$)()))).map((e=>e.toJSON()))}}function N(e,t){if(!t.ReactComponent)throw new Error(`renderer ${e} has no ReactComponent, it may not be completely implemented yet`);return t}class F extends p.A{name="CoreRender";async serializeArguments(e,t){const{rootModel:r}=this.pluginManager,n=r.session.assemblyManager,a=await(0,T.renameRegionsIfNeeded)(n,e),o=await super.serializeArguments(a,t);if("MainThreadRpcDriver"===t)return o;const{rendererType:i}=e;return N(i,this.pluginManager.getRendererType(i)).serializeArgsInClient(o)}async execute(e,t){let r=e;"MainThreadRpcDriver"!==t&&(r=await this.deserializeArguments(e,t));const{sessionId:n,rendererType:a,signal:o}=r;if(!n)throw new Error("must pass a unique session id");(0,T.checkAbortSignal)(o);const i=N(a,this.pluginManager.getRendererType(a)),s="MainThreadRpcDriver"===t?await i.render(r):await i.renderInWorker(r);return(0,T.checkAbortSignal)(o),s}async deserializeReturn(e,t,r){const n=await super.deserializeReturn(e,t,r);if("MainThreadRpcDriver"===r)return n;const{rendererType:a}=t;return N(a,this.pluginManager.getRendererType(a)).deserializeResultsInClient(n,t)}}class L extends p.A{name="CoreFreeResources";async execute(e){let t=0;return t+=(0,C.pZ)(e),this.pluginManager.getRendererTypes().forEach((e=>{const r=e.freeResources();r&&(t+=r)})),t}async serializeArguments(e,t){return e}}class D extends p.A{name="CoreGetFeatureDensityStats";async serializeArguments(e,t){const{rootModel:r}=this.pluginManager,n=r.session.assemblyManager,a=await(0,T.renameRegionsIfNeeded)(n,{...e,filters:e.filters?.toJSON().filters});return super.serializeArguments(a,t)}async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{adapterConfig:a,sessionId:o,regions:i}=n,{dataAdapter:s}=await(0,C.cK)(r,o,a);if(!(0,S.isFeatureAdapter)(s))throw new Error("Adapter does not support retrieving features");return s.getMultiRegionFeatureDensityStats(i,n)}}var B=r(58921);const V=(0,f.ConfigurationSchema)("CytobandAdapter",{cytobandLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/cytoband.txt.gz"}}},{explicitlyTyped:!0});class z extends v.A{name="CorePlugin";install(e){Object.values(n).forEach((t=>{e.addRpcMethod((()=>new t(e)))})),function(e){e.addAdapterType((()=>new B.AdapterType({name:"CytobandAdapter",configSchema:V,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4284)]).then(r.bind(r,94284)).then((e=>e.default))})))}(e),e.addWidgetType((()=>new d.A({name:"BaseFeatureWidget",heading:"Feature details",configSchema:w.Q,stateModel:(0,w.n)(e),ReactComponent:(0,b.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(8984),r.e(8341)]).then(r.bind(r,68984))))})))}}var O=r(53085);class H{phaseCallbacks=new Map;phaseOrder=[];constructor(...e){this.phaseOrder=e}add(e,t){if(!this.phaseOrder.includes(e))throw new Error(`unknown phase ${e}`);let r=this.phaseCallbacks.get(e);r||(r=[],this.phaseCallbacks.set(e,r)),r.push(t)}run(){this.phaseOrder.forEach((e=>{this.phaseCallbacks.get(e)?.forEach((e=>e()))}))}}class j{registeredTypes={};constructor(e,t){this.typeName=e,this.baseClass=t}add(e,t){this.registeredTypes[e]=t}has(e){return e in this.registeredTypes}get(e){if(!this.has(e))throw new Error(`${this.typeName} '${e}' not found, perhaps its plugin is not loaded or its plugin has not added it.`);return this.registeredTypes[e]}all(){return Object.values(this.registeredTypes)}}class W{plugins=[];jexl=(0,O.A)();pluginMetadata={};runtimePluginDefinitions=[];elementCreationSchedule=new H("renderer","adapter","text search adapter","display","track","connection","view","widget","rpc method","internet account","add track workflow");rendererTypes=new j("RendererType",o.default);adapterTypes=new j("AdapterType",i.A);textSearchAdapterTypes=new j("TextSearchAdapterType",g.A);trackTypes=new j("TrackType",s.A);displayTypes=new j("DisplayType",l.A);connectionTypes=new j("ConnectionType",u.A);viewTypes=new j("ViewType",c.A);widgetTypes=new j("WidgetType",d.A);rpcMethods=new j("RpcMethodType",p.A);addTrackWidgets=new j("AddTrackWorkflow",h.A);internetAccountTypes=new j("InternetAccountType",m.A);configured=!1;extensionPoints=new Map;constructor(e=[]){this.addPlugin({plugin:new z,metadata:{isCore:!0}}),e.forEach((e=>{this.addPlugin(e)}))}pluginConfigurationSchemas(){const e={};return this.plugins.forEach((t=>{t.configurationSchema&&(e[t.name]=t.configurationSchema)})),e}addPlugin(e){if(this.configured)throw new Error("JBrowse already configured, cannot add plugins");const[t,r={}]="install"in e&&"configure"in e?[e,{}]:[e.plugin,e.metadata];if(this.plugins.includes(t))throw new Error("plugin already installed");return this.pluginMetadata[t.name]=r,"definition"in e&&this.runtimePluginDefinitions.push(e.definition),t.install(this),this.plugins.push(t),this}getPlugin(e){return this.plugins.find((t=>t.name===e))}hasPlugin(e){return void 0!==this.getPlugin(e)}createPluggableElements(){return this.elementCreationSchedule&&(this.elementCreationSchedule.run(),this.elementCreationSchedule=void 0),this}setRootModel(e){this.rootModel=e}configure(){if(this.configured)throw new Error("already configured");return this.plugins.forEach((e=>{e.configure(this)})),this.configured=!0,this}getElementTypeRecord(e){switch(e){case"adapter":return this.adapterTypes;case"text search adapter":return this.textSearchAdapterTypes;case"connection":return this.connectionTypes;case"widget":return this.widgetTypes;case"renderer":return this.rendererTypes;case"display":return this.displayTypes;case"track":return this.trackTypes;case"view":return this.viewTypes;case"rpc method":return this.rpcMethods;case"internet account":return this.internetAccountTypes;case"add track workflow":return this.addTrackWidgets;default:throw new Error(`invalid element type '${e}'`)}}addElementType(e,t){if("function"!=typeof t)throw new Error("must provide a callback function that returns the new type object");const r=this.getElementTypeRecord(e);return this.elementCreationSchedule?.add(e,(()=>{const n=t(this);if(!n.name)throw new Error(`cannot add a ${e} with no name`);if(r.has(n.name))throw new Error(`${e} ${n.name} already registered, cannot register it again`);r.add(n.name,this.evaluateExtensionPoint("Core-extendPluggableElement",n))})),this}getElementType(e,t){return this.getElementTypeRecord(e).get(t)}getElementTypesInGroup(e){return this.getElementTypeRecord(e).all()}getTrackElements(){return this.getElementTypesInGroup("track")}getConnectionElements(){return this.getElementTypesInGroup("connection")}getAddTrackWorkflowElements(){return this.getElementTypesInGroup("add track workflow")}getRpcElements(){return this.getElementTypesInGroup("rpc method")}getDisplayElements(){return this.getElementTypesInGroup("display")}getAdapterElements(){return this.getElementTypesInGroup("adapter")}pluggableMstType(e,t,r=a.types.maybe(a.types.null)){const n=this.getElementTypeRecord(e).all().map((e=>e[t])).filter((e=>(0,a.isType)(e)&&(0,a.isModelType)(e)));return 0===n.length&&"undefined"==typeof jest?(console.warn(`No pluggable types found matching ('${e}','${t}')`),r):a.types.union(...n)}pluggableConfigSchemaType(e,t="configSchema"){const r=this.getElementTypeRecord(e).all().map((e=>e[t])).filter((e=>(0,f.isBareConfigurationSchemaType)(e)));return 0===r.length&&r.push((0,f.ConfigurationSchema)("Null",{})),a.types.union(...r)}jbrequireCache=new Map;lib=y.A;load=e=>(this.jbrequireCache.has(e)||this.jbrequireCache.set(e,e(this)),this.jbrequireCache.get(e));jbrequire=e=>{if("string"==typeof e){const t=this.lib[e];if(!t)throw new TypeError(`No jbrequire re-export defined for package '${e}'. If this package must be shared between plugins, add it to ReExports.js. If it does not need to be shared, just import it normally.`);return t}if("function"==typeof e)return this.load(e);if(e.default)return this.jbrequire(e.default);throw new TypeError("lib passed to jbrequire must be either a string or a function")};getRendererType(e){return this.rendererTypes.get(e)}getRendererTypes(){return this.rendererTypes.all()}getAdapterType(e){return this.adapterTypes.get(e)}getTextSearchAdapterType(e){return this.textSearchAdapterTypes.get(e)}getTrackType(e){return this.trackTypes.get(e)}getDisplayType(e){return this.displayTypes.get(e)}getViewType(e){return this.viewTypes.get(e)}getAddTrackWorkflow(e){return this.addTrackWidgets.get(e)}getWidgetType(e){return this.widgetTypes.get(e)}getConnectionType(e){return this.connectionTypes.get(e)}getRpcMethodType(e){return this.rpcMethods.get(e)}getInternetAccountType(e){return this.internetAccountTypes.get(e)}addRendererType(e){return this.addElementType("renderer",e)}addAdapterType(e){return this.addElementType("adapter",e)}addTextSearchAdapterType(e){return this.addElementType("text search adapter",e)}addTrackType(e){return this.addElementType("track",(()=>{const t=e(this);return this.getElementTypesInGroup("display").forEach((e=>{e.trackType!==t.name||t.displayTypes.includes(e)||t.addDisplayType(e)})),t}))}addDisplayType(e){return this.addElementType("display",e)}addViewType(e){return this.addElementType("view",(()=>{const t=e(this);return this.getElementTypesInGroup("display").forEach((e=>{e.viewType!==t.name&&e.viewType!==t.extendedName||t.displayTypes.includes(e)||t.addDisplayType(e)})),t}))}addWidgetType(e){return this.addElementType("widget",e)}addConnectionType(e){return this.addElementType("connection",e)}addRpcMethod(e){return this.addElementType("rpc method",e)}addInternetAccountType(e){return this.addElementType("internet account",e)}addAddTrackWorkflowType(e){return this.addElementType("add track workflow",e)}addToExtensionPoint(e,t){let r=this.extensionPoints.get(e);r||(r=[],this.extensionPoints.set(e,r)),r.push(t)}evaluateExtensionPoint(e,t,r){const n=this.extensionPoints.get(e);let a=t;if(n)for(const e of n)try{a=e(a,r)}catch(e){console.error(e)}return a}async evaluateAsyncExtensionPoint(e,t,r){const n=this.extensionPoints.get(e);let a=t;if(n)for(const e of n)try{a=await e(a,r)}catch(e){console.error(e)}return a}}},2862:(e,t,r)=>{"use strict";r.d(t,{A:()=>le});var n=r(7552),a=r(69500),o=r.t(a,2),i=r(28485),s=r.t(i,2),l=r(42489),c=r(36422),d=r(68446),u=r(75785),p=r(72639),m=r(48231),g=r(46322),h=r(78301),f=r(76404),y=r(3274),b=r(64565),w=r(46377),v=r(97884),C=r(58921),S=r(63589),k=r(47369),T=r(56328),x=r(58273),A=r(67736),P=r(1622),M=r(198),E=r(94318),R=r(98111),I=r(92880),N=r(97666),F=r(68584),L=r(12678),D=r(49823),B=r(99546),V=r(80208),z=r(88217),O=r(91468),H=r(99834),j=r(23550),W=r(66885),G=r(8832);const $=["mobx","mobx-state-tree","react","react/jsx-runtime","react-dom","mobx-react","@mui/x-data-grid","@mui/material/utils","@material-ui/core/utils","tss-react/mui","@material-ui/core","@mui/material","@mui/material/styles","@material-ui/core/styles","@material-ui/core/Accordion","@material-ui/core/AccordionActions","@material-ui/core/AccordionDetails","@material-ui/core/Alert","@material-ui/core/AlertTitle","@material-ui/core/Autocomplete","@material-ui/core/Avatar","@material-ui/core/AvatarGroup","@material-ui/core/Backdrop","@material-ui/core/Badge","@material-ui/core/Box","@material-ui/core/Breadcrumbs","@material-ui/core/Button","@material-ui/core/ButtonGroup","@material-ui/core/Card","@material-ui/core/CardActions","@material-ui/core/CardActionArea","@material-ui/core/CardContent","@material-ui/core/CardHeader","@material-ui/core/CardMedia","@material-ui/core/CircularProgress","@material-ui/core/Collapse","@material-ui/core/ClickAwayListener","@material-ui/core/Chip","@material-ui/core/Checkbox","@material-ui/core/Container","@material-ui/core/Dialog","@material-ui/core/DialogActions","@material-ui/core/DialogTitle","@material-ui/core/DialogContent","@material-ui/core/DialogContentText","@material-ui/core/Divider","@material-ui/core/Drawer","@material-ui/core/Fab","@material-ui/core/Fade","@material-ui/core/FilledInput","@material-ui/core/FormLabel","@material-ui/core/FormControl","@material-ui/core/FormControlLabel","@material-ui/core/FormHelperText","@material-ui/core/FormGroup","@material-ui/core/Grid","@material-ui/core/Grow","@material-ui/core/Icon","@material-ui/core/IconButton","@material-ui/core/Input","@material-ui/core/InputBase","@material-ui/core/InputLabel","@material-ui/core/InputAdornment","@material-ui/core/Link","@material-ui/core/LinearProgress","@material-ui/core/List","@material-ui/core/ListItem","@material-ui/core/ListItemAvatar","@material-ui/core/ListItemSecondaryAction","@material-ui/core/ListItemIcon","@material-ui/core/ListSubheader","@material-ui/core/ListItemText","@material-ui/core/Menu","@material-ui/core/MenuItem","@material-ui/core/MenuList","@material-ui/core/Modal","@material-ui/core/NativeSelect","@material-ui/core/OutlinedInput","@material-ui/core/Pagination","@material-ui/core/PaginationItem","@material-ui/core/Paper","@material-ui/core/Popover","@material-ui/core/Popper","@material-ui/core/Portal","@material-ui/core/Radio","@material-ui/core/RadioGroup","@material-ui/core/Rating","@material-ui/core/ScopedCssBaseline","@material-ui/core/Select","@material-ui/core/Skeleton","@material-ui/core/Slider","@material-ui/core/Snackbar","@material-ui/core/SnackbarContent","@material-ui/core/SpeedDial","@material-ui/core/SpeedDialAction","@material-ui/core/SpeedDialIcon","@material-ui/core/Stack","@material-ui/core/Step","@material-ui/core/StepButton","@material-ui/core/StepConnector","@material-ui/core/StepLabel","@material-ui/core/StepIcon","@material-ui/core/Stepper","@material-ui/core/SvgIcon","@material-ui/core/Switch","@material-ui/core/Tab","@material-ui/core/Table","@material-ui/core/TableBody","@material-ui/core/TableCell","@material-ui/core/TableContainer","@material-ui/core/TableFooter","@material-ui/core/TableHead","@material-ui/core/TablePagination","@material-ui/core/TableRow","@material-ui/core/TableSortLabel","@material-ui/core/Tabs","@material-ui/core/TextField","@material-ui/core/TextareaAutosize","@material-ui/core/ToggleButton","@material-ui/core/ToggleButtonGroup","@material-ui/core/Toolbar","@material-ui/core/Tooltip","@material-ui/core/Typography","@mui/material/Accordion","@mui/material/AccordionActions","@mui/material/AccordionDetails","@mui/material/Alert","@mui/material/AlertTitle","@mui/material/Autocomplete","@mui/material/Avatar","@mui/material/AvatarGroup","@mui/material/Backdrop","@mui/material/Badge","@mui/material/Box","@mui/material/Breadcrumbs","@mui/material/Button","@mui/material/ButtonGroup","@mui/material/Card","@mui/material/CardActions","@mui/material/CardActionArea","@mui/material/CardContent","@mui/material/CardHeader","@mui/material/CardMedia","@mui/material/CircularProgress","@mui/material/Collapse","@mui/material/ClickAwayListener","@mui/material/Chip","@mui/material/Checkbox","@mui/material/Container","@mui/material/Dialog","@mui/material/DialogActions","@mui/material/DialogTitle","@mui/material/DialogContent","@mui/material/DialogContentText","@mui/material/Divider","@mui/material/Drawer","@mui/material/Fab","@mui/material/Fade","@mui/material/FilledInput","@mui/material/FormLabel","@mui/material/FormControl","@mui/material/FormControlLabel","@mui/material/FormHelperText","@mui/material/FormGroup","@mui/material/Grid","@mui/material/Grow","@mui/material/Icon","@mui/material/IconButton","@mui/material/Input","@mui/material/InputBase","@mui/material/InputLabel","@mui/material/InputAdornment","@mui/material/Link","@mui/material/LinearProgress","@mui/material/List","@mui/material/ListItem","@mui/material/ListItemAvatar","@mui/material/ListItemSecondaryAction","@mui/material/ListItemIcon","@mui/material/ListSubheader","@mui/material/ListItemText","@mui/material/Menu","@mui/material/MenuItem","@mui/material/MenuList","@mui/material/Modal","@mui/material/NativeSelect","@mui/material/OutlinedInput","@mui/material/Pagination","@mui/material/PaginationItem","@mui/material/Paper","@mui/material/Popover","@mui/material/Popper","@mui/material/Portal","@mui/material/Radio","@mui/material/RadioGroup","@mui/material/Rating","@mui/material/ScopedCssBaseline","@mui/material/Select","@mui/material/Skeleton","@mui/material/Slider","@mui/material/Snackbar","@mui/material/SnackbarContent","@mui/material/SpeedDial","@mui/material/SpeedDialAction","@mui/material/SpeedDialIcon","@mui/material/Stack","@mui/material/Step","@mui/material/StepButton","@mui/material/StepConnector","@mui/material/StepLabel","@mui/material/StepIcon","@mui/material/Stepper","@mui/material/SvgIcon","@mui/material/Switch","@mui/material/Tab","@mui/material/Table","@mui/material/TableBody","@mui/material/TableCell","@mui/material/TableContainer","@mui/material/TableFooter","@mui/material/TableHead","@mui/material/TablePagination","@mui/material/TableRow","@mui/material/TableSortLabel","@mui/material/Tabs","@mui/material/TextField","@mui/material/TextareaAutosize","@mui/material/ToggleButton","@mui/material/ToggleButtonGroup","@mui/material/Toolbar","@mui/material/Tooltip","@mui/material/Typography","@material-ui/lab/ToggleButton","@material-ui/lab/ToggleButtonGroup","@material-ui/lab/Autocomplete","@material-ui/lab/Alert","@material-ui/lab","@jbrowse/core/Plugin","@jbrowse/core/pluggableElementTypes","@jbrowse/core/pluggableElementTypes/ViewType","@jbrowse/core/pluggableElementTypes/AdapterType","@jbrowse/core/pluggableElementTypes/DisplayType","@jbrowse/core/pluggableElementTypes/TrackType","@jbrowse/core/pluggableElementTypes/WidgetType","@jbrowse/core/pluggableElementTypes/models","@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType","@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType","@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType","@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType","@jbrowse/core/pluggableElementTypes/renderers/RendererType","@jbrowse/core/configuration","@jbrowse/core/util/types/mst","@jbrowse/core/ui","@jbrowse/core/util","@jbrowse/core/util/color","@jbrowse/core/util/layouts","@jbrowse/core/util/tracks","@jbrowse/core/util/Base1DViewModel","@jbrowse/core/util/io","@jbrowse/core/util/mst-reflection","@jbrowse/core/util/rxjs","@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail","@jbrowse/core/data_adapters/BaseAdapter"];function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},q.apply(null,arguments)}const _={Accordion:(0,n.lazy)((()=>Promise.all([r.e(3011),r.e(7909)]).then(r.bind(r,7909)))),AccordionActions:(0,n.lazy)((()=>r.e(7309).then(r.bind(r,67309)))),AccordionDetails:(0,n.lazy)((()=>r.e(5101).then(r.bind(r,75101)))),Alert:(0,n.lazy)((()=>r.e(2197).then(r.bind(r,22197)))),AlertTitle:(0,n.lazy)((()=>r.e(7418).then(r.bind(r,27418)))),Autocomplete:(0,n.lazy)((()=>r.e(9329).then(r.bind(r,79329)))),Avatar:(0,n.lazy)((()=>r.e(2872).then(r.bind(r,42872)))),AvatarGroup:(0,n.lazy)((()=>r.e(4902).then(r.bind(r,34902)))),Backdrop:(0,n.lazy)((()=>r.e(1999).then(r.bind(r,11999)))),Badge:(0,n.lazy)((()=>r.e(3940).then(r.bind(r,13940)))),Box:(0,n.lazy)((()=>r.e(8114).then(r.bind(r,48114)))),Breadcrumbs:(0,n.lazy)((()=>r.e(366).then(r.bind(r,40366)))),Button:(0,n.lazy)((()=>r.e(4861).then(r.bind(r,54861)))),ButtonGroup:(0,n.lazy)((()=>r.e(7579).then(r.bind(r,17579)))),Card:(0,n.lazy)((()=>r.e(439).then(r.bind(r,50439)))),CardActions:(0,n.lazy)((()=>r.e(2306).then(r.bind(r,32306)))),CardActionArea:(0,n.lazy)((()=>r.e(8483).then(r.bind(r,38483)))),CardContent:(0,n.lazy)((()=>r.e(596).then(r.bind(r,596)))),CardHeader:(0,n.lazy)((()=>r.e(1598).then(r.bind(r,31598)))),CardMedia:(0,n.lazy)((()=>r.e(2141).then(r.bind(r,12141)))),CircularProgress:(0,n.lazy)((()=>r.e(7203).then(r.bind(r,97203)))),Collapse:(0,n.lazy)((()=>r.e(8678).then(r.bind(r,78678)))),ClickAwayListener:(0,n.lazy)((()=>r.e(2777).then(r.bind(r,42777)))),Chip:(0,n.lazy)((()=>r.e(2583).then(r.bind(r,2583)))),Checkbox:(0,n.lazy)((()=>r.e(7812).then(r.bind(r,7812)))),Container:(0,n.lazy)((()=>r.e(1157).then(r.bind(r,61157)))),Dialog:(0,n.lazy)((()=>r.e(1029).then(r.bind(r,41029)))),DialogActions:(0,n.lazy)((()=>r.e(8052).then(r.bind(r,68052)))),DialogTitle:(0,n.lazy)((()=>r.e(2729).then(r.bind(r,82729)))),DialogContent:(0,n.lazy)((()=>r.e(8582).then(r.bind(r,18582)))),DialogContentText:(0,n.lazy)((()=>r.e(2321).then(r.bind(r,42321)))),Divider:(0,n.lazy)((()=>r.e(4414).then(r.bind(r,64414)))),Drawer:(0,n.lazy)((()=>r.e(5608).then(r.bind(r,15608)))),Fab:(0,n.lazy)((()=>r.e(7974).then(r.bind(r,97974)))),Fade:(0,n.lazy)((()=>r.e(4659).then(r.bind(r,24659)))),FilledInput:(0,n.lazy)((()=>r.e(9943).then(r.bind(r,29943)))),FormLabel:(0,n.lazy)((()=>r.e(6423).then(r.bind(r,86423)))),FormControl:(0,n.lazy)((()=>r.e(2775).then(r.bind(r,25156)))),FormControlLabel:(0,n.lazy)((()=>r.e(2398).then(r.bind(r,22398)))),FormHelperText:(0,n.lazy)((()=>r.e(120).then(r.bind(r,70120)))),FormGroup:(0,n.lazy)((()=>r.e(6342).then(r.bind(r,76342)))),Grid:(0,n.lazy)((()=>r.e(6397).then(r.bind(r,6397)))),Grow:(0,n.lazy)((()=>r.e(1354).then(r.bind(r,91354)))),Icon:(0,n.lazy)((()=>r.e(12).then(r.bind(r,60012)))),IconButton:(0,n.lazy)((()=>r.e(3368).then(r.bind(r,83368)))),Input:(0,n.lazy)((()=>r.e(4395).then(r.bind(r,44395)))),InputBase:(0,n.lazy)((()=>r.e(6526).then(r.bind(r,86526)))),InputLabel:(0,n.lazy)((()=>r.e(6323).then(r.bind(r,66323)))),InputAdornment:(0,n.lazy)((()=>r.e(3003).then(r.bind(r,3003)))),Link:(0,n.lazy)((()=>r.e(4629).then(r.bind(r,94629)))),LinearProgress:(0,n.lazy)((()=>r.e(5763).then(r.bind(r,45763)))),List:(0,n.lazy)((()=>r.e(7773).then(r.bind(r,87773)))),ListItem:(0,n.lazy)((()=>r.e(266).then(r.bind(r,266)))),ListItemAvatar:(0,n.lazy)((()=>r.e(1345).then(r.bind(r,61345)))),ListItemSecondaryAction:(0,n.lazy)((()=>r.e(7374).then(r.bind(r,97374)))),ListItemIcon:(0,n.lazy)((()=>r.e(5327).then(r.bind(r,65327)))),ListSubheader:(0,n.lazy)((()=>r.e(8216).then(r.bind(r,68216)))),ListItemText:(0,n.lazy)((()=>r.e(1757).then(r.bind(r,61757)))),Menu:(0,n.lazy)((()=>r.e(26).then(r.bind(r,70026)))),MenuItem:(0,n.lazy)((()=>r.e(2493).then(r.bind(r,32493)))),MenuList:(0,n.lazy)((()=>r.e(1310).then(r.bind(r,81310)))),Modal:(0,n.lazy)((()=>r.e(8150).then(r.bind(r,98150)))),NativeSelect:(0,n.lazy)((()=>r.e(4947).then(r.bind(r,34947)))),OutlinedInput:(0,n.lazy)((()=>r.e(6149).then(r.bind(r,56149)))),Pagination:(0,n.lazy)((()=>r.e(1516).then(r.bind(r,51516)))),PaginationItem:(0,n.lazy)((()=>r.e(3266).then(r.bind(r,83266)))),Paper:(0,n.lazy)((()=>r.e(3029).then(r.bind(r,93029)))),Popover:(0,n.lazy)((()=>r.e(1978).then(r.bind(r,1978)))),Popper:(0,n.lazy)((()=>r.e(6799).then(r.bind(r,6799)))),Portal:(0,n.lazy)((()=>r.e(7067).then(r.bind(r,37067)))),Radio:(0,n.lazy)((()=>r.e(9384).then(r.bind(r,79384)))),RadioGroup:(0,n.lazy)((()=>r.e(5951).then(r.bind(r,25951)))),Rating:(0,n.lazy)((()=>r.e(2885).then(r.bind(r,92885)))),ScopedCssBaseline:(0,n.lazy)((()=>r.e(4615).then(r.bind(r,54615)))),Select:(0,n.lazy)((()=>r.e(6785).then(r.bind(r,36785)))),Skeleton:(0,n.lazy)((()=>r.e(518).then(r.bind(r,50518)))),Slider:(0,n.lazy)((()=>r.e(1824).then(r.bind(r,91824)))),Snackbar:(0,n.lazy)((()=>Promise.all([r.e(2418),r.e(5090)]).then(r.bind(r,5090)))),SnackbarContent:(0,n.lazy)((()=>r.e(8187).then(r.bind(r,58187)))),SpeedDial:(0,n.lazy)((()=>r.e(9292).then(r.bind(r,99292)))),SpeedDialAction:(0,n.lazy)((()=>r.e(7407).then(r.bind(r,67407)))),SpeedDialIcon:(0,n.lazy)((()=>r.e(9458).then(r.bind(r,9458)))),Stack:(0,n.lazy)((()=>r.e(1260).then(r.bind(r,11260)))),Step:(0,n.lazy)((()=>r.e(7991).then(r.bind(r,47991)))),StepButton:(0,n.lazy)((()=>r.e(2062).then(r.bind(r,12062)))),StepConnector:(0,n.lazy)((()=>r.e(6658).then(r.bind(r,76658)))),StepLabel:(0,n.lazy)((()=>r.e(6703).then(r.bind(r,26703)))),StepIcon:(0,n.lazy)((()=>r.e(2246).then(r.bind(r,32246)))),Stepper:(0,n.lazy)((()=>r.e(6054).then(r.bind(r,36054)))),SvgIcon:(0,n.lazy)((()=>r.e(3728).then(r.bind(r,13728)))),Switch:(0,n.lazy)((()=>r.e(7117).then(r.bind(r,67117)))),Tab:(0,n.lazy)((()=>r.e(8165).then(r.bind(r,28165)))),Table:(0,n.lazy)((()=>r.e(8535).then(r.bind(r,78535)))),TableBody:(0,n.lazy)((()=>r.e(3103).then(r.bind(r,3103)))),TableCell:(0,n.lazy)((()=>r.e(4435).then(r.bind(r,74435)))),TableContainer:(0,n.lazy)((()=>r.e(3274).then(r.bind(r,93274)))),TableFooter:(0,n.lazy)((()=>r.e(9824).then(r.bind(r,39824)))),TableHead:(0,n.lazy)((()=>r.e(9657).then(r.bind(r,79657)))),TablePagination:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(8105)]).then(r.bind(r,74379)))),TableRow:(0,n.lazy)((()=>r.e(561).then(r.bind(r,70561)))),TableSortLabel:(0,n.lazy)((()=>r.e(3862).then(r.bind(r,93862)))),Tabs:(0,n.lazy)((()=>r.e(1110).then(r.bind(r,91110)))),TextField:(0,n.lazy)((()=>r.e(9690).then(r.bind(r,49690)))),TextareaAutosize:(0,n.lazy)((()=>r.e(9037).then(r.bind(r,29037)))),ToggleButton:(0,n.lazy)((()=>r.e(2861).then(r.bind(r,82861)))),ToggleButtonGroup:(0,n.lazy)((()=>r.e(1012).then(r.bind(r,21012)))),Toolbar:(0,n.lazy)((()=>r.e(3012).then(r.bind(r,83012)))),Tooltip:(0,n.lazy)((()=>r.e(1996).then(r.bind(r,1996)))),Typography:(0,n.lazy)((()=>r.e(7584).then(r.bind(r,47584))))},U=Object.fromEntries(Object.entries(_).map((([e,t])=>{const r=n.forwardRef(((e,r)=>n.createElement(n.Suspense,{fallback:null},n.createElement(t,q({},e,{ref:r})))));return r.displayName=e,[e,r]}))),J=Object.fromEntries(Object.entries(U).map((([e,t])=>[`@material-ui/core/${e}`,t]))),X=Object.fromEntries(Object.entries(U).map((([e,t])=>[`@mui/material/${e}`,t]))),Y=(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(5484),r.e(8984),r.e(5511)]).then(r.bind(r,55511)))),K=(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(7865),r.e(8984),r.e(2212)]).then(r.bind(r,12212)))),Q=(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(722),r.e(8984),r.e(1637)]).then(r.bind(r,1637)))),Z={DataGrid:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.DataGrid}))))),GridActionsCellItem:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridActionsCellItem}))))),GridAddIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridAddIcon}))))),GridArrowDownwardIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridArrowDownwardIcon}))))),GridArrowUpwardIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridArrowUpwardIcon}))))),GridCellCheckboxForwardRef:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridCellCheckboxForwardRef}))))),GridCellCheckboxRenderer:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridCellCheckboxRenderer}))))),GridCheckCircleIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridCheckCircleIcon}))))),GridCheckIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridCheckIcon}))))),GridCloseIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridCloseIcon}))))),GridColumnHeaderSeparator:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridColumnHeaderSeparator}))))),GridColumnHeaderSortIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridColumnHeaderSortIcon}))))),GridColumnIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridColumnIcon}))))),GridColumnMenu:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridColumnMenu}))))),GridColumnMenuContainer:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridColumnMenuContainer}))))),GridDragIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridDragIcon}))))),GridExpandMoreIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridExpandMoreIcon}))))),GridFilterAltIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFilterAltIcon}))))),GridFilterForm:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFilterForm}))))),GridFilterListIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFilterListIcon}))))),GridFilterPanel:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFilterPanel}))))),GridFooter:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFooter}))))),GridFooterContainer:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridFooterContainer}))))),GridHeader:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridHeader}))))),GridHeaderCheckbox:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridHeaderCheckbox}))))),GridKeyboardArrowRight:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridKeyboardArrowRight}))))),GridLoadIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridLoadIcon}))))),GridLoadingOverlay:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridLoadingOverlay}))))),GridMenuIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridMenuIcon}))))),GridMoreVertIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridMoreVertIcon}))))),GridNoRowsOverlay:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridNoRowsOverlay}))))),GridOverlay:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridOverlay}))))),GridPagination:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridPagination}))))),GridPanel:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridPanel}))))),GridPanelWrapper:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridPanelWrapper}))))),GridRemoveIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridRemoveIcon}))))),GridRoot:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridRoot}))))),GridRowCount:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridRowCount}))))),GridSaveAltIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridSaveAltIcon}))))),GridSearchIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridSearchIcon}))))),GridSelectedRowCount:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridSelectedRowCount}))))),GridSeparatorIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridSeparatorIcon}))))),GridTableRowsIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridTableRowsIcon}))))),GridToolbar:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbar}))))),GridToolbarColumnsButton:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarColumnsButton}))))),GridToolbarContainer:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarContainer}))))),GridToolbarDensitySelector:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarDensitySelector}))))),GridToolbarExport:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarExport}))))),GridToolbarExportContainer:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarExportContainer}))))),GridToolbarFilterButton:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridToolbarFilterButton}))))),GridTripleDotsVerticalIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridTripleDotsVerticalIcon}))))),GridViewHeadlineIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridViewHeadlineIcon}))))),GridViewStreamIcon:(0,n.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(6157),r.e(5595)]).then(r.bind(r,19387)).then((e=>({default:e.GridViewStreamIcon})))))},ee=Object.fromEntries(Object.entries(Z).map((([e,t])=>{const r=n.forwardRef(((e,r)=>n.createElement(n.Suspense,{fallback:null},n.createElement(t,q({},e,{ref:r})))));return r.displayName=e,[e,r]}))),te=n.forwardRef(((e,t)=>n.createElement(n.Suspense,{fallback:null},n.createElement(Y,q({},e,{ref:t})))));te.displayName="Attributes";const re=n.forwardRef(((e,t)=>n.createElement(n.Suspense,{fallback:null},n.createElement(K,q({},e,{ref:t})))));re.displayName="FeatureDetails";const ne=n.forwardRef(((e,t)=>n.createElement(n.Suspense,{fallback:null},n.createElement(Q,q({},e,{ref:t})))));ne.displayName="BaseCard";const ae={mobx:l,"mobx-state-tree":c,react:n,"react/jsx-runtime":o,"react-dom":s,"mobx-react":d,"@mui/x-data-grid":{useGridApiContext:f.h,useGridApiRef:y.b,useGridRootProps:b.A,...ee},"@mui/material/utils":h,"@material-ui/core/utils":h,"tss-react/mui":{makeStyles:u.n9},"@material-ui/core":{...U,useTheme:m.A,alpha:p.X4,makeStyles:e=>{const t=(0,u.n9)()(e);return()=>t().classes}},"@mui/material":{...U,alpha:p.X4,useTheme:m.A},"@mui/material/styles":{MUIStyles:g,makeStyles:e=>{const t=(0,u.n9)()(e);return()=>t().classes}},"@material-ui/core/styles":{MUIStyles:g,makeStyles:e=>{const t=(0,u.n9)()(e);return()=>t().classes}},...J,...X,"@material-ui/lab/ToggleButton":_.ToggleButton,"@material-ui/lab/ToggleButtonGroup":_.ToggleButtonGroup,"@material-ui/lab/Autocomplete":_.Autocomplete,"@material-ui/lab/Alert":_.Alert,"@material-ui/lab":{Alert:_.Alert,Autocomplete:_.Autocomplete,ToggleButton:_.ToggleButton,ToggleButtonGroup:_.ToggleButtonGroup},"@jbrowse/core/Plugin":L.A,"@jbrowse/core/pluggableElementTypes":C,"@jbrowse/core/pluggableElementTypes/ViewType":S.A,"@jbrowse/core/pluggableElementTypes/AdapterType":k.A,"@jbrowse/core/pluggableElementTypes/DisplayType":T.A,"@jbrowse/core/pluggableElementTypes/TrackType":x.A,"@jbrowse/core/pluggableElementTypes/WidgetType":A.A,"@jbrowse/core/pluggableElementTypes/models":P,"@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType":M,"@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType":E.A,"@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType":R,"@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType":I,"@jbrowse/core/pluggableElementTypes/renderers/RendererType":N,"@jbrowse/core/configuration":F,"@jbrowse/core/util/types/mst":G,"@jbrowse/core/ui":D,"@jbrowse/core/util":B,"@jbrowse/core/util/color":V,"@jbrowse/core/util/layouts":z,"@jbrowse/core/util/tracks":O,"@jbrowse/core/util/Base1DViewModel":v.A,"@jbrowse/core/util/io":H,"@jbrowse/core/util/mst-reflection":j,"@jbrowse/core/util/rxjs":W,"@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail":{Attributes:te,FeatureDetails:re,BaseCard:ne},"@jbrowse/core/data_adapters/BaseAdapter":w},oe=Object.keys(ae),ie=oe.filter((e=>!$.includes(e)));if(ie.length>0)throw new Error(`The following modules are in the modules libs, but not the re-exports list: ${ie.join(", ")}`);const se=$.filter((e=>!oe.includes(e)));if(se.length)throw new Error(`The following modules are in the re-exports list, but not the modules libs: ${se.join(", ")}`);const le=ae},8656:(e,t,r)=>{"use strict";r.d(t,{A:()=>n,S:()=>a});class n{constructor(e){this.label=e.label,this.locString=e.locString,this.renderingComponent=e.renderingComponent,this.displayString=e.displayString,this.matchedAttribute=e.matchedAttribute,this.matchedObject=e.matchedObject,this.textSearchAdapter=e.textSearchAdapter,this.relevance=e.relevance,this.trackId=e.trackId,this.score=e.score||1,this.results=e.results||[]}getLabel(){return this.label}getDisplayString(){return this.displayString||this.label}getRenderingComponent(){return this.renderingComponent}getTrackId(){return this.trackId}getScore(){return this.score}updateScore(e){return this.score=e,this.score}getId(){return`${this.getLabel()}-${this.getLocation()}-${this.getTrackId()}`}hasLocation(){return!!this.locString}getLocation(){return this.locString}getComboResults(){return this.results}}class a extends n{constructor(e){super(e),this.refName=e.refName??""}getLocation(){return this.refName}}},83059:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(43334),a=r(68584);class o{adapterCache=new n.A({maxSize:15});constructor(e){this.pluginManager=e}loadTextSearchAdapters(e){return Promise.all(this.relevantAdapters(e).map((async e=>{const t=(0,a.readConfObject)(e,"textSearchAdapterId"),r=this.adapterCache.get(t);if(r)return r;{const r=this.pluginManager.getTextSearchAdapterType(e.type),n=new(await r.getAdapterClass())(e,void 0,this.pluginManager);return this.adapterCache.set(t,n),n}})))}relevantAdapters(e){const t=this.pluginManager.rootModel,{aggregateTextSearchAdapters:r}=t?.jbrowse,{tracks:n}=t?.session,{assemblyName:a}=e;return[...this.getAdaptersWithAssembly(a,r),...this.getTrackAdaptersWithAssembly(a,n)]}getAdaptersWithAssembly(e,t){return t.filter((t=>(0,a.readConfObject)(t,"assemblyNames")?.includes(e)))}getTrackAdaptersWithAssembly(e,t){return t.filter((t=>(0,a.readConfObject)(t,["textSearching","textSearchAdapter","assemblyNames"])?.includes(e))).map((e=>e.textSearching.textSearchAdapter))}async search(e,t,r){const n=await this.loadTextSearchAdapters(t),a=await Promise.all(n.map((t=>t.searchIndex(e))));return this.sortResults(a.flat(),r)}sortResults(e,t){return t(e.sort(((e,t)=>-t.getLabel().localeCompare(e.getLabel())))).sort(((e,t)=>e.getScore()-t.getScore()))}}},42498:(e,t,r)=>{"use strict";r.d(t,{A:()=>f,S:()=>h});var n=r(36422),a=r(8832),o=r(43283),i=r(99546);const s={stringArray:n.types.array(n.types.string),stringArrayMap:n.types.map(n.types.array(n.types.string)),numberMap:n.types.map(n.types.number),boolean:n.types.boolean,color:n.types.refinement("Color",n.types.string,(function(){return!0})),integer:n.types.integer,number:n.types.number,string:n.types.string,text:n.types.string,fileLocation:a.FileLocation,frozen:n.types.frozen()},l={stringArray:[],stringArrayMap:{},numberMap:{},boolean:!0,color:"black",integer:1,number:1,string:"",text:"",fileLocation:{uri:"/path/to/resource.txt",locationType:"UriLocation"},frozen:{}},c=e=>({views:{get valueJSON(){return e.value}}}),d=e=>({views:{get valueJSON(){return JSON.stringify(e.value)}}}),u={fileLocation:d,number:c,integer:c,boolean:c,frozen:d,stringArray:e=>({views:{get valueJSON(){return JSON.stringify(e.value)}},actions:{add(t){e.value.push(t)},removeAtIndex(t){e.value.splice(t,1)},setAtIndex(t,r){e.value[t]=r}}}),stringArrayMap:e=>({views:{get valueJSON(){return JSON.stringify(e.value)}},actions:{add(t,r){e.value.set(t,r)},remove(t){e.value.delete(t)},addToKey(t,r){const n=e.value.get(t);if(!n)throw new Error(`${t} not found`);n.push(r)},removeAtKeyIndex(t,r){const n=e.value.get(t);if(!n)throw new Error(`${t} not found`);n.splice(r,1)},setAtKeyIndex(t,r,n){const a=e.value.get(t);if(!a)throw new Error(`${t} not found`);a[r]=n}}}),numberMap:e=>({views:{get valueJSON(){return JSON.stringify(e.value)}},actions:{add(t,r){e.value.set(t,r)},remove(t){e.value.delete(t)}}})},p=n.types.refinement("JexlString",n.types.string,(e=>e.startsWith("jexl:")));var m=r(35254);function g(e){return Array.isArray(e)&&0===e.length}function h(e,t,r){const{schemaDefinition:c,options:d}=function(e,t,r={}){if("string"!=typeof e)throw new Error("first arg must be string name of the model that this config schema goes with");let n=t,a=r;return r.baseConfiguration?.jbrowseSchemaDefinition&&(n={...r.baseConfiguration.jbrowseSchemaDefinition,...n},a={...r.baseConfiguration.jbrowseSchemaOptions,...r},a.baseConfiguration=void 0),{schemaDefinition:n,options:a}}(e,t,r),h=function(e,t,r){const c={};let d;if(r.explicitlyTyped&&(c.type=n.types.optional(n.types.literal(e),e)),r.explicitIdentifier&&r.implicitIdentifier)throw new Error(`Cannot have both explicit and implicit identifiers in ${e}`);r.explicitIdentifier?"string"==typeof r.explicitIdentifier?(c[r.explicitIdentifier]=n.types.identifier,d=r.explicitIdentifier):(c.id=n.types.identifier,d="id"):r.implicitIdentifier&&("string"==typeof r.implicitIdentifier?(c[r.implicitIdentifier]=a.ElementId,d=r.implicitIdentifier):(c.id=a.ElementId,d="id"));const h={isJBrowseConfigurationSchema:!0,jbrowseSchema:{modelName:e,definition:t,options:r}};Object.entries(t).forEach((([t,r])=>{if((0,n.isType)(r)&&(0,n.isLateType)(r)||(0,m.oG)(r))c[t]=r;else if("string"==typeof r||"number"==typeof r)h[t]=r;else{if("object"!=typeof r)throw new Error(`invalid configuration schema definition, "${t}" must be either a valid configuration slot definition, a constant, or a nested configuration schema`);if(!r.type)throw new Error(`no type set for config slot ${e}.${t}`);try{c[t]=function(e,{description:t="",model:r,type:a,defaultValue:c,contextVariable:d=[]}){if(!a)throw new Error("type name required");if(r||(r=s[a]),!r)throw new Error(`no builtin config slot type "${a}", and no 'model' param provided`);if(void 0===c)throw new Error("no 'defaultValue' provided");const m=`${e.charAt(0).toUpperCase()}${e.slice(1)}ConfigSlot`;let g=n.types.model(m,{name:n.types.literal(e),description:n.types.literal(t),type:n.types.literal(a),value:n.types.optional(n.types.union(p,r),c)}).volatile((()=>({contextVariable:d}))).views((e=>({get isCallback(){return String(e.value).startsWith("jexl:")}}))).views((e=>({get expr(){if(e.isCallback){const{pluginManager:t}=(0,i.getEnv)(e);return t||"undefined"!=typeof jest||console.warn("no pluginManager detected on config env (if you dynamically instantiate a config, for example in renderProps for your display model, check that you add the env argument)"),(0,o.A)(String(e.value),t?.jexl)}return{evalSync:()=>e.value}},get valueJSON(){var t;if(!e.isCallback)return t=e.value,t?.toJSON?t.toJSON():`"${t}"`}}))).preProcessSnapshot((r=>"object"==typeof r&&r.name===e?r:{name:e,description:t,type:a,value:r})).postProcessSnapshot((e=>"object"==typeof e.value?JSON.stringify(e.value)!==JSON.stringify(c)?e.value:void 0:e.value!==c?e.value:void 0)).actions((e=>({set(t){e.value=t},reset(){e.value=c},convertToCallback(){e.isCallback||(e.value=`jexl:${e.valueJSON||"''"}`)},convertToValue(){if(e.isCallback){try{const t=e.expr.evalSync();if(void 0!==t)return void(e.value=t)}catch(e){}if(e.value=c,!(a in l))throw new Error(`no fallbackDefault defined for type ${a}`);e.value=l[a]}}})));u[a]&&(g=g.extend(u[a]));const h=n.types.optional(g,{name:e,type:a,description:t,value:c});return Object.defineProperty(h,"isJBrowseConfigurationSlot",{value:!0}),h}(t,r)}catch(r){throw new Error(`invalid config slot definition for ${e}.${t}: ${r}`)}}}));let f=n.types.model(`${e}ConfigurationSchema`,c).actions((e=>({setSubschema(t,r){if(!(0,m.oG)(c[t]))throw new Error(`${t} is not a subschema, cannot replace`);const a=(0,n.isStateTreeNode)(r)?r:c[t].create(r);return e[t]=a,a}})));Object.keys(h).length&&(f=f.volatile((()=>h))),r.actions&&(f=f.actions(r.actions)),r.views&&(f=f.views(r.views)),r.extend&&(f=f.extend(r.extend));const y=d?{[d]:"placeholderId"}:{},b=r.explicitlyTyped?{type:e,...y}:y,w=(0,n.getSnapshot)(f.create(b));return f=f.postProcessSnapshot((e=>{const t={};let r=!0;for(const[a,o]of Object.entries(e))r&&("object"==typeof w[a]&&"object"==typeof o?JSON.stringify(w[a])!==JSON.stringify(o)&&(r=!1):w[a]!==o&&(r=!1)),void 0!==o&&void 0===h[a]&&("object"!=typeof(n=o)||Array.isArray(n)||null===n||0!==Object.keys(n).length)&&!g(o)&&(t[a]=o);var n;return r?{}:t})),r.preProcessSnapshot&&(f=f.preProcessSnapshot(r.preProcessSnapshot)),n.types.optional(f,b)}(e,c,d);return h.isJBrowseConfigurationSchema=!0,h.jbrowseSchemaDefinition=c,h.jbrowseSchemaOptions=d,h}function f(e){return n.types.union(n.types.reference(e),e)}},35254:(e,t,r)=>{"use strict";r.d(t,{C$:()=>l,FI:()=>i,JC:()=>s,QZ:()=>o,Rg:()=>u,oG:()=>c,wo:()=>d});var n=r(36422),a=r(23550);function o(e,t,r={}){if(!t)return JSON.parse(JSON.stringify((0,n.getSnapshot)(e)));if("string"==typeof t){let a=e[t];if(!a&&(0,n.isStateTreeNode)(e)&&(0,n.isMapType)((0,n.getType)(e))&&(a=e.get(t)),!a)return;const o=a.expr?a.expr.evalSync(r):a;return(0,n.isStateTreeNode)(o)?JSON.parse(JSON.stringify((0,n.getSnapshot)(o))):o}if(Array.isArray(t)){const a=t[0];if(t.length>1){const i=t.slice(1);let s=e[a];return!s&&(0,n.isStateTreeNode)(e)&&(0,n.isMapType)((0,n.getType)(e))&&(s=e.get(a)),s?o(s,i,r):void 0}return o(e,a,r)}throw new TypeError("slotPath must be a string or array")}function i(e,t,r){const{configuration:n}=e;if(d(n))return o(n,t,r);throw new TypeError("cannot getConf on this model, it has no configuration")}function s(e){if((0,n.isType)(e)&&(e=(0,a.resolveLateType)(e),(0,n.isUnionType)(e))){const t=[];return(0,a.getUnionSubTypes)(e).forEach((e=>{let r=s(e=(0,a.resolveLateType)(e));if(r.length||(r=[(0,a.getDefaultValue)(e).type]),!r[0])throw new Error(`invalid config schema type ${e}`);t.push(...r)})),t}return[]}function l(e){if((0,n.isType)(e)){if((0,n.isModelType)(e)&&("isJBrowseConfigurationSchema"in e||e.name.includes("ConfigurationSchema")))return!0;if((0,n.isLateType)(e))return!0}return!1}function c(e){return!!(0,n.isType)(e)&&(!!l(e)||((0,n.isUnionType)(e)?(0,a.getUnionSubTypes)(e).every((e=>c(e)||"undefined"===e.name)):!(!(0,n.isOptionalType)(e)||!c((0,a.getSubType)(e)))||!(!(0,n.isArrayType)(e)||!c((0,a.getSubType)(e)))||!(!(0,n.isMapType)(e)||!c((0,a.getSubType)(e)))))}function d(e){return(0,n.isStateTreeNode)(e)&&c((0,n.getType)(e))}function u(e){return"object"==typeof e&&null!==e&&"isJBrowseConfigurationSlot"in e}},46377:(e,t,r)=>{"use strict";function n(e){return"getRegions"in e&&"getFeatures"in e}function a(e){return"getRegions"in e}function o(e){return"getFeatures"in e}function i(e){return"getRefNameAliases"in e}function s(e){return"searchIndex"in e}r.r(t),r.d(t,{BaseAdapter:()=>p,BaseFeatureDataAdapter:()=>w,BaseSequenceAdapter:()=>v,isFeatureAdapter:()=>o,isRefNameAliasAdapter:()=>i,isRegionsAdapter:()=>a,isSequenceAdapter:()=>n,isTextSearchAdapter:()=>s});var l=r(36422),c=r(68584),d=r(26257);const u=(0,c.ConfigurationSchema)("empty",{});class p{static capabilities=[];constructor(e=u.create(),t,r){if(this.config=e,this.getSubAdapter=t,this.pluginManager=r,"undefined"==typeof jest){const t=(0,l.isStateTreeNode)(e)?(0,l.getSnapshot)(e):e;this.id=`${(0,d.A)(t)}`}else this.id="test"}getConf(e){return(0,c.readConfObject)(this.config,e)}}var m=r(62718),g=r(44728),h=r(82088),f=r(66885),y=r(99546),b=r(37957);class w extends p{async getHeader(e){return null}async getMetadata(e){return null}getFeaturesInRegion(e,t={}){return(0,f.ObservableCreate)((async r=>{const n=await this.hasDataForRefName(e.refName,t);(0,y.checkAbortSignal)(t.signal),n?this.getFeatures(e,t).subscribe(r):r.complete()}))}getFeaturesInMultipleRegions(e,t={}){return(0,m.h)(...e.map((e=>this.getFeaturesInRegion(e,t))))}async hasDataForRefName(e,t={}){return(await this.getRefNames(t)).includes(e)}async getRegionQuantitativeStats(e,t){const r=this.getFeatures(e,t);return(0,b.qn)(e,r)}async getMultiRegionQuantitativeStats(e=[],t){if(!e.length)return(0,b.Yv)();const r=await Promise.all(e.map((e=>this.getRegionQuantitativeStats(e,t)))),n=(0,y.max)(r.map((e=>e.scoreMax))),a=(0,y.min)(r.map((e=>e.scoreMin))),o=(0,y.sum)(r.map((e=>e.scoreSum))),i=(0,y.sum)(r.map((e=>e.scoreSumSquares))),s=(0,y.sum)(r.map((e=>e.featureCount))),l=(0,y.sum)(r.map((e=>e.basesCovered)));return(0,b.WD)({scoreMin:a,scoreMax:n,featureCount:s,basesCovered:l,scoreSumSquares:i,scoreSum:o})}getRegionFeatureDensityStats(e,t){let r=+Date.now();const n=async(r,n)=>{const{start:o,end:i}=e,s=.75*o+.25*i,l=await(0,g._)(this.getFeatures({...e,start:Math.max(0,Math.round(s-r/2)),end:Math.min(Math.round(s+r/2),i)},t).pipe((0,h.$)()));return a(r,{featureDensity:l.length/r},l.length,n)},a=async(t,a,o,i)=>{const s=e.end-e.start;if(o>=70||2*t>s)return a;if(i<=5e3){const e=+Date.now();return i+=e-r,r=e,n(2*t,i)}return console.warn("Stats estimation reached timeout, or didn't get enough features"),{featureDensity:Number.POSITIVE_INFINITY}};return n(1e3,0)}async getMultiRegionFeatureDensityStats(e,t){if(!e.length)throw new Error("No regions supplied");return this.getRegionFeatureDensityStats(e[0],t)}}class v extends w{async getMultiRegionFeatureDensityStats(){return{featureDensity:0}}}},47369:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.getAdapterClass="AdapterClass"in e?async()=>e.AdapterClass:e.getAdapterClass,this.configSchema=e.configSchema,this.adapterCapabilities=e.adapterCapabilities||[],this.adapterMetadata=e.adapterMetadata}}},32767:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.ReactComponent=e.ReactComponent,this.stateModel=e.stateModel}}},91612:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.stateModel=e.stateModel,this.configSchema=e.configSchema,this.description=e.description,this.url=e.url,this.configEditorComponent=e.configEditorComponent}}},56328:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.stateModel=e.stateModel,this.subDisplay=e.subDisplay,this.configSchema=e.configSchema,this.ReactComponent=e.ReactComponent,this.trackType=e.trackType,this.viewType=e.viewType}}},92070:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.stateModel=e.stateModel,this.configSchema=e.configSchema}}},35470:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});class n{constructor(e){this.name=e.name||"UNKNOWN",this.maybeDisplayName=e.displayName}get displayName(){return this.maybeDisplayName||this.name}}},2406:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});const n=e=>"object"==typeof e&&null!==e,a=e=>n(e)&&!(e instanceof RegExp)&&!(e instanceof Error)&&!(e instanceof Date)&&!(globalThis.Blob&&e instanceof globalThis.Blob);function o(e,t,r=new WeakSet){if(r.has(e))return;r.add(e);const i=e=>{e.forEach((e=>{t(e),n(e)&&o(e,t,r)}))};Array.isArray(e)&&i(e);for(const n of Object.values(e))t(n),a(n)&&(Array.isArray(n)?i(n):o(n,t,r))}var i=r(35470),s=r(91468),l=r(92516),c=r(24388);class d extends i.A{constructor(e){super({}),this.pluginManager=e}async serializeArguments(e,t){const r=(0,s.getBlobMap)();return await this.augmentLocationObjects(e,t),{...e,blobMap:r}}async serializeNewAuthArguments(e,t){const r=this.pluginManager.rootModel;if(!(0,l.bV)(r)||e.internetAccountPreAuthorization)return e;const n=r.findAppropriateInternetAccount(e);return n&&"MainThreadRpcDriver"!==t&&(e.internetAccountPreAuthorization=await n.getPreAuthorizationInformation(e)),e}async deserializeArguments(e,t){e.blobMap&&(0,s.setBlobMap)(e.blobMap);const{signal:r}=e;return{...e,signal:(0,c.bw)(r)?(0,c.SF)(r):void 0}}async serializeReturn(e,t,r){return e}async deserializeReturn(e,t,r){let n;try{n=await e}catch(e){if((0,l.ZL)(e)){const t=this.pluginManager.rootModel?.createEphemeralInternetAccount(`HTTPBasicInternetAccount-${new URL(e.url).origin}`,{},e.url);throw new l.J_("Retrying with created internet account",t.internetAccountId)}throw e}return n}async augmentLocationObjects(e,t){const r=[];o(e,(e=>{(0,l.C1)(e)&&r.push(e)}));for(const e of r)await this.serializeNewAuthArguments(e,t);return e}}},8024:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.description=e.description,this.configSchema=e.configSchema,this.getAdapterClass="getAdapterClass"in e?e.getAdapterClass:async()=>e.AdapterClass}}},58273:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{displayTypes=[];constructor(e){super(e),this.stateModel=e.stateModel,this.configSchema=e.configSchema}addDisplayType(e){this.displayTypes.push(e)}}},63589:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{displayTypes=[];constructor(e){super(e),this.ReactComponent=e.ReactComponent,this.stateModel=e.stateModel,this.extendedName=e.extendedName}addDisplayType(e){this.displayTypes.push(e)}}},67736:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(35470);class a extends n.A{constructor(e){super(e),this.heading=e.heading,this.HeadingComponent=e.HeadingComponent,this.configSchema=e.configSchema,this.stateModel=e.stateModel,this.ReactComponent=e.ReactComponent}}},58921:(e,t,r)=>{"use strict";r.r(t),r.d(t,{AdapterType:()=>u.A,AddTrackWorkflowType:()=>w.A,BaseConnectionModelFactory:()=>d.BaseConnectionModelFactory,BaseDisplay:()=>d.BaseDisplay,BaseInternetAccountConfig:()=>d.BaseInternetAccountConfig,BaseViewModel:()=>d.BaseViewModel,BoxRendererType:()=>n.default,CircularChordRendererType:()=>o.A,ComparativeServerSideRendererType:()=>a.A,ConnectionType:()=>p.A,DisplayType:()=>f.A,FeatureRendererType:()=>s.default,InternetAccount:()=>d.InternetAccount,InternetAccountType:()=>y.A,RendererType:()=>i.default,RpcMethodType:()=>b.A,ServerSideRenderedContent:()=>l.A,ServerSideRendererType:()=>c.default,TextSearchAdapterType:()=>v.A,TrackType:()=>m.A,ViewType:()=>h.A,WidgetType:()=>g.A,baseConnectionConfig:()=>d.baseConnectionConfig,createBaseTrackConfig:()=>d.createBaseTrackConfig,createBaseTrackModel:()=>d.createBaseTrackModel});var n=r(98111),a=r(57027),o=r(94318),i=r(97666),s=r(92880),l=r(25889),c=r(198),d=r(1622),u=r(47369),p=r(91612),m=r(58273),g=r(67736),h=r(63589),f=r(56328),y=r(92070),b=r(2406),w=r(32767),v=r(8024)},7772:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(36422),a=r(8832);const o=n.types.model("BaseView",{id:a.ElementId,displayName:n.types.maybe(n.types.string),minimized:!1}).volatile((()=>({width:800}))).views((()=>({menuItems:()=>[]}))).actions((e=>({setDisplayName(t){e.displayName=t},setWidth(t){e.width=t},setMinimized(t){e.minimized=t}}))),i=o;o.props({displayedRegions:n.types.array(a.Region)})},1622:(e,t,r)=>{"use strict";r.r(t),r.d(t,{BaseConnectionModelFactory:()=>i,BaseDisplay:()=>u,BaseInternetAccountConfig:()=>m,BaseViewModel:()=>s.A,InternetAccount:()=>h,baseConnectionConfig:()=>a,createBaseTrackConfig:()=>w,createBaseTrackModel:()=>b});var n=r(68584);const a=(0,n.ConfigurationSchema)("BaseConnection",{name:{type:"string",defaultValue:"nameOfConnection",description:"a unique name for this connection"},assemblyNames:{type:"stringArray",defaultValue:[],description:"optional list of names of assemblies in this connection"}},{explicitlyTyped:!0,explicitIdentifier:"connectionId"});var o=r(36422);const i=function(e){return o.types.model("Connection",{name:o.types.identifier,tracks:o.types.array(e.pluggableConfigSchemaType("track")),configuration:(0,n.ConfigurationReference)(a)}).actions((()=>({connect(e){}}))).actions((e=>({afterAttach(){0===e.tracks.length&&e.connect(e.configuration)},addTrackConf(t){const r=e.tracks.push(t);return e.tracks[r-1]},addTrackConfs(t){e.tracks.push(...t)},setTrackConfs(t){e.tracks=(0,o.cast)(t)},clear(){}})))};var s=r(7772),l=r(91468),c=r(99546),d=r(8832);const u=o.types.model("BaseDisplay",{id:d.ElementId,type:o.types.string,rpcDriverName:o.types.maybe(o.types.string)}).volatile((()=>({rendererTypeName:"",error:void 0,message:void 0}))).views((e=>({get RenderingComponent(){const{pluginManager:t}=(0,c.getEnv)(e);return t.getDisplayType(e.type).ReactComponent},get DisplayBlurb(){return null},get adapterConfig(){return(0,n.getConf)(this.parentTrack,"adapter")},get parentTrack(){let t=(0,o.getParent)(e);for(;!t.configuration||!(0,n.getConf)(t,"trackId");){if((0,o.isRoot)(t))throw new Error(`No parent track found for ${e.type} ${e.id}`);t=(0,o.getParent)(t)}return t},renderProps:()=>({...(0,l.getParentRenderProps)(e),notReady:(0,c.getContainingView)(e).minimized,rpcDriverName:e.rpcDriverName,displayModel:e}),get rendererType(){const{pluginManager:t}=(0,c.getEnv)(e);return t.getRendererType(e.rendererTypeName)},get DisplayMessageComponent(){},trackMenuItems:()=>[],get viewMenuActions(){return[]},regionCannotBeRendered:()=>null}))).actions((e=>({setMessage(t){e.message=t},setError(t){e.error=t},setRpcDriverName(t){e.rpcDriverName=t},reload(){}})));var p=r(99834);const m=(0,n.ConfigurationSchema)("InternetAccount",{name:{description:"descriptive name of the internet account",type:"string",defaultValue:""},description:{description:"a description of the internet account",type:"string",defaultValue:""},authHeader:{description:"request header for credentials",type:"string",defaultValue:"Authorization"},tokenType:{description:"a custom name for a token to include in the header",type:"string",defaultValue:""},domains:{description:"array of valid domains the url can contain to use this account",type:"stringArray",defaultValue:[]}},{explicitIdentifier:"internetAccountId",explicitlyTyped:!0}),g="undefined"==typeof sessionStorage,h=o.types.model("InternetAccount",{id:d.ElementId,type:o.types.string,configuration:(0,n.ConfigurationReference)(m)}).views((e=>({get name(){return(0,n.getConf)(e,"name")},get description(){return(0,n.getConf)(e,"description")},get internetAccountId(){return(0,n.getConf)(e,"internetAccountId")},get authHeader(){return(0,n.getConf)(e,"authHeader")},get tokenType(){return(0,n.getConf)(e,"tokenType")},get domains(){return(0,n.getConf)(e,"domains")},get toggleContents(){return null},get SelectorComponent(){},get selectorLabel(){}}))).views((e=>({handlesLocation:t=>e.domains.some((e=>t.uri.includes(e))),get tokenKey(){return`${e.internetAccountId}-token`}}))).actions((e=>({getTokenFromUser(e,t){throw new Error("getTokenFromUser must be implemented by extending model")},storeToken(t){sessionStorage.setItem(e.tokenKey,t)},removeToken(){sessionStorage.removeItem(e.tokenKey)},retrieveToken:()=>sessionStorage.getItem(e.tokenKey),validateToken:async(e,t)=>e}))).actions((e=>{let t;return{async getToken(r){if(t)return t;let n=r?.internetAccountPreAuthorization?.authInfo?.token;if(n)return t=Promise.resolve(n),t;if(g)throw new Error("Did not get internet account pre-authorization info in worker");return n=e.retrieveToken(),n?(t=Promise.resolve(n),t):(t=new Promise(((t,r)=>{e.getTokenFromUser((r=>{e.storeToken(r),t(r)}),(t=>{e.removeToken(),r(t)}))})),t)}}})).actions((e=>({addAuthHeaderToInit:(t,r)=>({...t,headers:new Headers({...t?.headers,...r?{[e.authHeader]:e.tokenType?`${e.tokenType} ${r}`:r}:{}})}),async getPreAuthorizationInformation(t){const r=await e.getToken(t);let a;try{a=await e.validateToken(r,t)}catch(t){throw e.removeToken(),t}return{internetAccountType:e.type,authInfo:{token:a,configuration:(0,n.getConf)(e)}}}}))).actions((e=>({getFetcher:t=>async(r,n)=>{const a=await e.getToken(t),o=e.addAuthHeaderToInit(n,a);return fetch(r,o)}}))).actions((e=>({openLocation:t=>new p.RemoteFileWithRangeCache(t.uri,{fetch:e.getFetcher(t)})})));var f=r(42489),y=r(92516);function b(e,t,r){return o.types.model(t,{id:d.ElementId,type:o.types.literal(t),configuration:(0,n.ConfigurationReference)(r),minimized:!1,displays:o.types.array(e.pluggableMstType("display","stateModel"))}).views((t=>({get rpcSessionId(){return t.configuration.trackId},get name(){return(0,n.getConf)(t,"name")},get textSearchAdapter(){return(0,n.getConf)(t,"textSearchAdapter")},get adapterType(){const r=(0,n.getConf)(t,"adapter");if(!r)throw new Error(`no adapter configuration provided for ${t.type}`);const a=e.getAdapterType(r.type);if(!a)throw new Error(`unknown adapter type ${r.type}`);return a},get viewMenuActions(){return t.displays.flatMap((e=>e.viewMenuActions))},get canConfigure(){const e=(0,c.getSession)(t),{sessionTracks:r,adminMode:n}=e;return(0,y.u3)(e)&&(n||r?.find((e=>e.trackId===t.configuration.trackId)))}}))).actions((t=>({setMinimized(e){t.minimized=e},showDisplay(r,n={}){const a=e.pluggableConfigSchemaType("display"),i=(0,o.resolveIdentifier)(a,(0,o.getRoot)(t),r),s=e.getDisplayType(i.type);if(!s)throw new Error(`unknown display type ${i.type}`);const l=s.stateModel.create({...n,type:i.type,configuration:i});t.displays.push(l)},hideDisplay(r){const n=e.pluggableConfigSchemaType("display"),a=(0,o.resolveIdentifier)(n,(0,o.getRoot)(t),r),i=t.displays.filter((e=>e.configuration===a));return(0,f.transaction)((()=>{i.forEach((e=>t.displays.remove(e)))})),i.length},replaceDisplay(r,n,a={}){const i=t.displays.findIndex((e=>e.configuration.displayId===r));if(-1===i)throw new Error(`could not find display id ${r} to replace`);const s=e.pluggableConfigSchemaType("display"),l=(0,o.resolveIdentifier)(s,(0,o.getRoot)(t),n);if(!e.getDisplayType(l.type))throw new Error(`unknown display type ${l.type}`);t.displays.splice(i,1,{...a,type:l.type,configuration:l})}}))).views((t=>({trackMenuItems(){const r=t.displays.flatMap((e=>e.trackMenuItems())),n=t.displays[0].configuration.displayId,a=function(e){const{pluginManager:t}=(0,c.getEnv)(e),r=(0,c.getContainingView)(e),n=t.getViewType(r.type),a=new Set(n.displayTypes.map((e=>e.name)));return e.configuration.displays.filter((e=>a.has(e.type)))}(t);return[...r,...a.length>1?[{type:"subMenu",label:"Display types",priority:-1e3,subMenu:a.map((r=>({type:"radio",label:e.getDisplayType(r.type).displayName,checked:r.displayId===n,onClick:()=>{t.replaceDisplay(n,r.displayId)}})))}]:[]]}})))}function w(e){return(0,n.ConfigurationSchema)("BaseTrack",{name:{description:"descriptive name of the track",type:"string",defaultValue:"Track"},assemblyNames:{description:"name of the assembly (or assemblies) track belongs to",type:"stringArray",defaultValue:["assemblyName"]},description:{description:"a description of the track",type:"string",defaultValue:""},category:{description:"the category and sub-categories of a track",type:"stringArray",defaultValue:[]},metadata:{type:"frozen",description:"anything to add about this track",defaultValue:{}},adapter:e.pluggableConfigSchemaType("adapter"),textSearching:(0,n.ConfigurationSchema)("textSearching",{indexingAttributes:{type:"stringArray",description:"list of which feature attributes to index for text searching",defaultValue:["Name","ID"]},indexingFeatureTypesToExclude:{type:"stringArray",description:"list of feature types to exclude in text search index",defaultValue:["CDS","exon"]},textSearchAdapter:e.pluggableConfigSchemaType("text search adapter")}),displays:o.types.array(e.pluggableConfigSchemaType("display")),formatDetails:(0,n.ConfigurationSchema)("FormatDetails",{feature:{type:"frozen",description:"adds extra fields to the feature details",defaultValue:{},contextVariable:["feature"]},subfeatures:{type:"frozen",description:"adds extra fields to the subfeatures of a feature",defaultValue:{},contextVariable:["feature"]},depth:{type:"number",defaultValue:2,description:"depth of subfeatures to iterate the formatter on formatDetails.subfeatures (e.g. you may not want to format the exon/cds subfeatures, so limited to 2"},maxDepth:{type:"number",defaultValue:99999,description:"Maximum depth to render subfeatures"}}),formatAbout:(0,n.ConfigurationSchema)("FormatAbout",{config:{type:"frozen",description:"formats configuration object in about dialog",defaultValue:{},contextVariable:["config"]},hideUris:{type:"boolean",defaultValue:!1}})},{preProcessSnapshot:t=>{const r=e.evaluateExtensionPoint("Core-preProcessTrackConfig",JSON.parse(JSON.stringify(t))),{displays:n=[]}=r;if("placeholderId"!==r.trackId){const t=new Set(n.map((e=>e.type)));e.getTrackType(r.type).displayTypes.forEach((e=>{t.has(e.name)||n.push({displayId:`${r.trackId}-${e.name}`,type:e.name})}))}return{...r,displays:n}},explicitIdentifier:"trackId",explicitlyTyped:!0,actions:e=>({addDisplayConf(t){const{type:r}=t;if(!r)throw new Error(`unknown display type ${r}`);const n=e.displays.find((e=>e?.displayId===t.displayId));if(n)return n;const a=e.displays.push(t);return e.displays[a-1]}})})}},98111:(e,t,r)=>{"use strict";r.r(t),r.d(t,{LayoutSession:()=>u,default:()=>p});var n=r(41365),a=r.n(n),o=r(85012),i=r(2265),s=r(75762),l=r(92880),c=r(99546),d=r(68584);class u{constructor(e){this.config=e.config,this.bpPerPx=e.bpPerPx,this.filters=e.filters,this.update(e)}update(e){Object.assign(this,e)}makeLayout(){return new i.A(o.A,{maxHeight:(0,d.readConfObject)(this.config,"maxHeight"),displayMode:(0,d.readConfObject)(this.config,"displayMode"),pitchX:this.bpPerPx,pitchY:(0,d.readConfObject)(this.config,"noSpacing")?1:3})}cachedLayoutIsValid(e){return e.layout.subLayoutConstructorArgs.pitchX===this.bpPerPx&&a()((0,d.readConfObject)(this.config),e.config)&&a()(this.filters,e.filters)}get layout(){return this.cachedLayout&&this.cachedLayoutIsValid(this.cachedLayout)||(this.cachedLayout={layout:this.makeLayout(),config:(0,d.readConfObject)(this.config),filters:this.filters}),this.cachedLayout.layout}}class p extends l.default{sessions={};getWorkerSession(e){const t=(0,c.getLayoutId)(e);this.sessions[t]||(this.sessions[t]=this.createSession(e));const r=this.sessions[t];return r.update(e),r}getExpandedRegion(e,t){const{bpPerPx:r,config:n}=t,a=(0,d.readConfObject)(n,"maxFeatureGlyphExpansion")||0,o=Math.round(a*r);return{...e,start:Math.floor(Math.max(e.start-o,0)),end:Math.ceil(e.end+o)}}createSession(e){return new u(e)}async freeResourcesInClient(e,t){const{regions:r}=t,n=(0,c.getLayoutId)(t),a=this.sessions[n];if(a){const e=r[0];a.layout.discardRange(e.refName,e.start,e.end)}return await super.freeResourcesInClient(e,t)}deserializeLayoutInClient(e){return new s.A(e)}deserializeResultsInClient(e,t){const r=this.deserializeLayoutInClient(e.layout);return super.deserializeResultsInClient({...e,layout:r},t)}createLayoutInWorker(e){const{regions:t}=e;return this.getWorkerSession(e).layout.getSublayout(t[0].refName)}serializeResultsInWorker(e,t){const r=super.serializeResultsInWorker(e,t),n=t.regions[0];return r.layout=e.layout.serializeRegion(this.getExpandedRegion(n,t)),r.features=r.features.filter((e=>Boolean(r.layout.rectangles[e.uniqueId]))),r.maxHeightReached=r.layout.maxHeightReached,r}async render(e){const t=e.layout||this.createLayoutInWorker(e);return{...await super.render({...e,layout:t}),layout:t}}}},94318:(e,t,r)=>{"use strict";r.d(t,{A:()=>h});var n=r(7552),a=r(99546),o=r(92880),i=r(68446),s=r(20139),l=r(49823),c=r(36422),d=r(28485);const u=(0,i.observer)((function(e){const{html:t,theme:r,RenderingComponent:o,...i}=e,d=(0,n.useRef)(null),u=(0,n.useRef)(),p=(0,c.getRoot)(e.displayModel).hydrateFn;return(0,n.useEffect)((()=>{const e=(0,a.rIC)((()=>{if(!d.current)return;const e=(0,l.createJBrowseTheme)(r);u.current=u.current??p(d.current,n.createElement(s.A,{theme:e},n.createElement(o,i)))}));return()=>{void 0!==e&&clearTimeout(e);const t=u.current;u.current=void 0,setTimeout((()=>{t?.unmount()}))}}),[o,p,r,i]),n.createElement("g",{ref:d,dangerouslySetInnerHTML:{__html:t}})})),p=(0,i.observer)((function(e){const{html:t,RenderingComponent:r}=e,o=(0,n.useRef)(null);return(0,n.useEffect)((()=>{const i=o.current;return i&&t&&(i.innerHTML&&(0,d.unmountComponentAtNode)(i),i.style.outline="none",i.innerHTML=t,(0,a.rIC)((()=>{(0,d.hydrate)(n.createElement(r,e),i)}))),()=>{i&&(0,d.unmountComponentAtNode)(i)}}),[t,r,e]),n.createElement("g",{ref:o})})),m=(0,i.observer)((function(e){return(0,c.getRoot)(e.displayModel).hydrateFn?n.createElement(u,e):n.createElement(p,e)}));function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},g.apply(null,arguments)}class h extends o.default{supportsSVG=!0;deserializeResultsInClient(e,t){const r=new Map(e.features.map((e=>a.SimpleFeature.fromJSON(e))).map((e=>[e.id(),e])));return t.exportSVG?{...e,features:r,blockKey:"circularChord",html:this.supportsSVG?e.html:'<text y="12" fill="black">SVG export not supported for this track</text>'}:{...e,features:r,blockKey:"circularChord",reactElement:n.createElement(m,g({},t,e,{features:r,RenderingComponent:this.ReactComponent}))}}}},57027:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(27570),a=r(82088),o=r(198),i=r(3496),s=r(99546),l=r(44728);class c extends o.default{async renameRegionsIfNeeded(e){return e}serializeArgsInClient(e){const t={...e,displayModel:void 0};return super.serializeArgsInClient(t)}deserializeResultsInClient(e,t){return{...super.deserializeResultsInClient(e,t),blockKey:t.blockKey}}async renderInClient(e,t){const r=await e.call(t.sessionId,"ComparativeRender",t);return"canvasRecordedData"in r&&(r.html=await(0,s.getSerializedSvg)(r),r.reactElement=void 0),r}featurePassesFilters(e,t){return!e.filters||e.filters.passes(t,e)}async getFeatures(e){const t=this.pluginManager,{regions:r,sessionId:o,adapterConfig:c}=e,{dataAdapter:d}=await(0,i.cK)(t,o,c),u=r.map((e=>{const t={...e};return t.start&&(t.start=Math.floor(t.start)),t.end&&(t.end=Math.floor(t.end)),t})),p=await(0,l._)(d.getFeaturesInMultipleRegions(u,e).pipe((0,n.p)((t=>this.featurePassesFilters(e,t))),(0,a.$)()));return(0,s.dedupe)(p,(e=>e.id()))}}},92880:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(82088),a=r(33039),o=r.n(a),i=r(44728),s=r(99546),l=r(6434),c=r(3496),d=r(198),u=r(46377);class p extends d.default{serializeArgsInClient(e){const{regions:t}=e,r={...e,displayModel:void 0,regions:o()(t)};return super.serializeArgsInClient(r)}deserializeResultsInClient(e,t){const r=new Map(e.features.map((e=>l.A.fromJSON(e))).map((e=>[e.id(),e])));return{...super.deserializeResultsInClient({...e,features:r},t),blockKey:t.blockKey,features:r}}serializeResultsInWorker(e,t){const r=super.serializeResultsInWorker(e,t),{features:n}=e;return{...r,features:(0,s.iterMap)(n.values(),(e=>e.toJSON()),n.size)}}getExpandedRegion(e,t){return e}async getFeatures(e){const t=this.pluginManager,{signal:r,regions:a,sessionId:o,adapterConfig:l}=e,{dataAdapter:d}=await(0,c.cK)(t,o,l);if(!(0,u.isFeatureAdapter)(d))throw new Error("Adapter does not support retrieving features");const p=a.map((e=>{const t={...e};return t.start&&(t.start=Math.floor(t.start)),t.end&&(t.end=Math.ceil(t.end)),t})),m=p[0],g=1===p.length?d.getFeatures(this.getExpandedRegion(m,e),e):d.getFeaturesInMultipleRegions(p,e),h=await(0,i._)(g.pipe((0,n.$)()));return(0,s.checkAbortSignal)(r),new Map(h.filter((t=>this.featurePassesFilters(e,t))).map((e=>[e.id(),e])))}featurePassesFilters(e,t){return!e.filters||e.filters.passes(t,e)}async render(e){const t=e.features||await this.getFeatures(e);return{...await super.render({...e,features:t}),features:t}}}},97666:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(7552),a=r(35470);class o extends a.A{supportsSVG=!0;constructor(e){super(e),this.ReactComponent=e.ReactComponent,this.configSchema=e.configSchema,this.pluginManager=e.pluginManager}async render(e){return{reactElement:n.createElement(this.ReactComponent,e,null)}}freeResources(){return 0}}},25889:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var n=r(7552),a=r(20139),o=r(49823),i=r(68446),s=r(36422),l=r(28485),c=r(99546);const d=(0,i.observer)((function({theme:e,html:t,RenderingComponent:r,...i}){const l=(0,n.useRef)(null),d=(0,n.useRef)(),{hydrateFn:u}=(0,s.getRoot)(i.displayModel);return(0,n.useEffect)((()=>{const t=(0,c.rIC)((()=>{if(!l.current)return;const t=(0,o.createJBrowseTheme)(e);d.current=d.current??u(l.current,n.createElement(a.A,{theme:t},n.createElement(r,i)))}));return()=>{void 0!==t&&clearTimeout(t);const e=d.current;d.current=void 0,setTimeout((()=>{e?.unmount()}))}}),[e,i,u,r]),n.createElement("div",{"data-testid":"hydrationContainer",ref:l,dangerouslySetInnerHTML:{__html:t}})})),u=(0,i.observer)((function({theme:e,html:t,RenderingComponent:r,...i}){const s=(0,n.useRef)(null),d=(0,o.createJBrowseTheme)(e);return(0,n.useEffect)((()=>{const e=s.current;return e&&((0,l.unmountComponentAtNode)(e),e.innerHTML=t,(0,c.rIC)((()=>{(0,l.hydrate)(n.createElement(a.A,{theme:d},n.createElement(r,i)),e)}))),()=>{e&&(0,l.unmountComponentAtNode)(e)}}),[t,d,i,r]),n.createElement("div",{ref:s})})),p=(0,i.observer)((function(e){return(0,s.getRoot)(e.displayModel).hydrateFn?n.createElement(d,e):n.createElement(u,e)}))},198:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>m});var n=r(7552),a=r(20139),o=r(48180),i=r(36422),s=r(99546),l=r(93100),c=r(49823),d=r(97666),u=r(25889);function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},p.apply(null,arguments)}class m extends d.default{serializeArgsInClient(e){return{...e,config:(0,i.isStateTreeNode)(e.config)?(0,i.getSnapshot)(e.config):e.config,filters:e.filters?.toJSON().filters}}deserializeResultsInClient(e,t){return t.exportSVG?{...e,html:this.supportsSVG?e.html:'<text y="12" fill="black">SVG export not supported for this track</text>'}:{...e,reactElement:n.createElement(u.A,p({},t,e,{RenderingComponent:this.ReactComponent}))}}deserializeArgsInWorker(e){const t={...e};return t.config=this.configSchema.create(e.config||{},{pluginManager:this.pluginManager}),t.filters=e.filters?new l.A({filters:e.filters}):void 0,t}serializeResultsInWorker(e,t){const r=(0,o.F0)(n.createElement(a.A,{theme:(0,c.createJBrowseTheme)(t.theme)},e.reactElement));return e.reactElement=void 0,{...e,html:r}}async renderInClient(e,t){const r=await e.call(t.sessionId,"CoreRender",t);return"canvasRecordedData"in r&&(r.html=await(0,s.getSerializedSvg)(r),r.reactElement=void 0),r}async renderInWorker(e){const{signal:t,statusCallback:r=()=>{}}=e,n=this.deserializeArgsInWorker(e),a=await(0,s.updateStatus)("Rendering plot",r,(()=>this.render(n)));return(0,s.checkAbortSignal)(t),(0,s.updateStatus)("Serializing results",r,(()=>this.serializeResultsInWorker(a,n)))}async freeResourcesInClient(e,t){const r=this.serializeArgsInClient(t);return this.freeResources()+await e.call(t.sessionId,"CoreFreeResources",r)}}},93100:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(43283);class a{constructor({filters:e=[]}){this.filterChain=e.map((e=>e.trim())).filter((e=>!!e)).map((e=>{if("string"==typeof e)return{expr:(0,n.A)(e),string:e};throw new Error(`invalid inputFilter string "${e}"`)}))}passes(...e){for(const t of this.filterChain)if(!t.expr.evalSync({feature:e[0]}))return!1;return!0}toJSON(){return{filters:this.filterChain.map((e=>e.string))}}static fromJSON(e){return new a(e)}}},9236:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(7552),a=r(75785),o=r(72639),i=r(48231),s=r(26993),l=r(77089);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c.apply(null,arguments)}const d=(0,a.n9)()((e=>({tooltip:{position:"absolute",pointerEvents:"none",backgroundColor:(0,o.X4)(e.palette.grey[700],.9),borderRadius:e.shape.borderRadius,color:e.palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(12),lineHeight:Math.round(14e4)/1e5+"em",maxWidth:300,wordWrap:"break-word"}})));function u({clientPoint:e,children:t,placement:r="right"}){const a=(0,i.A)(),o=a.components?.MuiPopper,{classes:u}=d(),{refs:p,floatingStyles:m,context:g}=(0,l.we)({placement:r,strategy:"fixed"}),h=(0,l.ju)(g,e),{getFloatingProps:f}=(0,l.bv)([h]);return n.createElement(s.A,{container:o?.defaultProps?.container},n.createElement("div",c({className:u.tooltip,ref:p.setFloating,style:{...m,zIndex:1e5,visibility:"translate(0px, 0px)"===m.transform?"hidden":void 0,pointerEvents:"none"}},f()),t))}},23758:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(7552),a=r(85206),o=r(61723),i=r(68446),s=r(45266);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},l.apply(null,arguments)}const c=(0,i.observer)((function({children:e,menuItems:t,closeAfterItemClick:r=!0,stopPropagation:i,setOpen:c,onClick:d,...u}){const p=(0,s.T6)({popupId:"viewMenu",variant:"popover"}),{onClick:m,onTouchStart:g,...h}=(0,s.cO)(p),{isOpen:f}=p;return(0,n.useEffect)((()=>{c?.(f)}),[f,c]),n.createElement(n.Fragment,null,n.createElement(o.A,l({onClick:e=>{i&&e.stopPropagation(),m(e),d?.()},onTouchStart:e=>{i&&e.stopPropagation(),g(e),d?.()}},h,u,{disabled:0===t.length}),e),n.createElement(a.A,l({},(0,s.dB)(p),{onMenuItemClick:(e,t)=>{t()},menuItems:t,closeAfterItemClick:r,popupState:p})))}))},56174:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var n=r(7552),a=r(5401),o=r(40985),i=r(43163),s=r(29499),l=r(58507),c=r(69941),d=r(38033);const u=({onFactoryReset:e,resetButtonText:t})=>{const[r,o]=(0,n.useState)(!1);return n.createElement(n.Fragment,null,n.createElement(a.A,{"data-testid":"fatal-error",color:"primary",variant:"contained",onClick:()=>{o(!0)}},t),n.createElement(c.default,{onClose:()=>{o(!1)},open:r,onFactoryReset:e}))};function p({componentStack:e,error:t="No error message provided",onFactoryReset:r,resetButtonText:c="Factory Reset"}){return n.createElement(o.A,{maxWidth:"xl",open:!0},n.createElement(i.A,null,"Fatal error"),n.createElement(s.A,null,n.createElement(d.A,{error:t}),n.createElement("pre",null,e)),n.createElement(l.A,null,n.createElement(a.A,{color:"secondary",variant:"contained",onClick:()=>{window.location.reload()}},"Refresh"),n.createElement(u,{onFactoryReset:r,resetButtonText:c})))}},43550:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),a=r(17776),o=r(48171),i=r(5401),s=r(36715),l=r(75785),c=r(99546),d=r(91468);function u(e){return"blobId"in e}const p=(0,l.n9)()((e=>({filename:{marginLeft:e.spacing(1)}}))),m=function({location:e,setLocation:t}){const{classes:r}=p(),l=e&&(u(e)&&e.name||"localPath"in e&&e.localPath),m=e&&u(e)&&!(0,d.getBlob)(e.blobId);return n.createElement(a.A,{display:"flex",flexDirection:"row",alignItems:"center"},n.createElement(a.A,null,n.createElement(o.A,{fullWidth:!0},n.createElement(i.A,{variant:"outlined",component:"label"},"Choose File",n.createElement("input",{type:"file",hidden:!0,onChange:({target:e})=>{const r=e.files?.[0];if(r)if(c.isElectron){const{webUtils:e}=window.require("electron");t({localPath:e.getPathForFile(r),locationType:"LocalPathLocation"})}else t((0,d.storeBlobLocation)({blob:r}))}})))),n.createElement(a.A,null,n.createElement(s.A,{component:"span",className:r.filename,color:l?"initial":"textSecondary"},l||"No file chosen"),m?n.createElement(s.A,{color:"error"},"(need to reload)"):null))}},14862:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(7552),a=r(1343),o=r(68446),i=r(92516);const s=(0,o.observer)((function({location:e,setLocation:t,label:r}){return n.createElement(a.A,{fullWidth:!0,variant:"outlined",inputProps:{"data-testid":"urlInput"},defaultValue:e&&(0,i.C1)(e)?e.uri:"",label:r||"Enter URL",onChange:e=>{t({uri:e.target.value.trim(),locationType:"UriLocation"})}})}))},37565:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(7552),a=r(36715),o=r(75785),i=r(73329);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s.apply(null,arguments)}const l=(0,o.n9)()({dots:{"&::after":{display:"inline-block",content:'""',width:"1em",textAlign:"left",animation:`${i.i7`
+      0% {
+        content: '';
+      }
+      25% {
+          content: '.';
+      }
+      50% {
+        content: '..';
+      }
+      75% {
+        content: '...';
+      }
+      `} 1.2s infinite ease-in-out`}}});function c({message:e,variant:t="body2",...r}){const{classes:o}=l();return n.createElement(a.A,s({className:o.dots},r,{variant:t}),e||"Loading")}},21311:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7552);const a=(0,r(75785).n9)()((e=>({bg:{padding:4,margin:4,overflow:"auto",maxHeight:200,background:"dark"===e.palette.mode?"#833":"#f88",border:`1px solid ${e.palette.divider}`}})));function o({children:e}){const{classes:t}=a();return n.createElement("div",{className:t.bg},e)}},40898:(e,t,r)=>{"use strict";r.r(t),r.d(t,{category10:()=>n,dark2:()=>a,ggplot2Colors3:()=>u,ggplot2Colors4:()=>d,ggplot2Colors5:()=>c,ggplot2Colors6:()=>l,set1:()=>o,set2:()=>i,tableau10:()=>s});const n=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],a=["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],o=["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],i=["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],s=["#4e79a7","#f28e2c","#e15759","#76b7b2","#59a14f","#edc949","#af7aa1","#ff9da7","#9c755f","#bab0ab"],l=["#F8766D","#B79F00","#00BA38","#00BFC4","#619CFF","#F564E3"],c=["#F8766D","#A3A500","#00BF7D","#00B0F6","#E76BF3"],d=["#F8766D","#7CAE00","#00BFC4","#C77CFF"],u=["#F8766D","#00BA38","#619CFF"]},95095:(e,t,r)=>{"use strict";function n(e,t,r){if(!t||!r)return;const{width:n,interRegionPaddingWidth:a,displayedRegions:o,bpPerPx:i,minimumBlockWidth:s}=e,l=function(e,t,r){let n=0;const{displayedRegions:a}=e;if(t.index===r.index)n+=r.offset-t.offset;else{const e=a[t.index];if(n+=e.end-e.start-t.offset,r.index-t.index>=2)for(let e=t.index+1;e<r.index;e++){const t=a[e];n+=t.end-t.start}n+=r.offset}return n}(e,t,r);let c=0;for(let e=t.index;e<r.index;e++){const t=o[e];(t.end-t.start)/i>s&&c++}const d=l/(n-a*c),u=e.zoomTo(d);let p=0;d<u&&(p=(u-d)*e.width/2);let m=-p;for(let r=0;r<e.displayedRegions.length;r+=1){const n=e.displayedRegions[r];if(t.index===r){m+=t.offset;break}m+=n.end-n.start}e.scrollTo(Math.round(m/e.bpPerPx))}function a(e,t){return Math.floor(e.reversed?e.end-t:e.start+t)+1}function o(e,t){let r=0;const{bpPerPx:n,offsetPx:o,displayedRegions:i,interRegionPaddingWidth:s,staticBlocks:l}=e,c=l.contentBlocks,d=(o+t)*n;if(d<0){const e=i[0];return{...e,oob:!0,coord:a(e,d),offset:d,index:0}}const u=s*n;let p=0;for(let e=0;e<i.length;e++){const t=i[e],n=t.end-t.start,o=d-r;if(n+r>d&&r<=d)return{...t,oob:!1,offset:o,coord:a(t,o),index:e};c[p]?.regionNumber===e?(r+=n+u,p++):r+=n}if(d>=r&&i.length>0){const e=i.at(-1),t=d-r+(e.end-e.start);return{...e,oob:!0,offset:t,coord:a(e,t),index:i.length-1}}return{coord:0,index:0,refName:"",oob:!0,assemblyName:"",offset:0,start:0,end:0,reversed:!1}}function i({refName:e,coord:t,regionNumber:r,self:n}){let a=0;const{interRegionPaddingWidth:o,bpPerPx:i,displayedRegions:s,staticBlocks:l}=n,c=l.contentBlocks,d=o*i;let u=0,p=0;for(;p<s.length;p++){const n=s[p],o=n.end-n.start;if(e===n.refName&&t>=n.start&&t<=n.end&&(!r||r===p)){a+=n.reversed?n.end-t:t-n.start;break}c[u]?.regionNumber===p?(a+=o+d,u++):a+=o}if(s[p])return{index:p,offsetPx:Math.round(a/i)}}r.d(t,{Ii:()=>o,eB:()=>i,tw:()=>n})},97884:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(36422),a=r(99546),o=r(8832),i=r(93707),s=r(88530),l=r(95095);const c=n.types.model("Base1DView",{id:o.ElementId,displayedRegions:n.types.optional(n.types.frozen(),[]),bpPerPx:0,offsetPx:0,interRegionPaddingWidth:n.types.optional(n.types.number,0),minimumBlockWidth:n.types.optional(n.types.number,0)}).volatile((()=>({features:void 0,volatileWidth:0}))).actions((e=>({setDisplayedRegions(t){e.displayedRegions=(0,n.cast)(t)},setBpPerPx(t){e.bpPerPx=t},setVolatileWidth(t){e.volatileWidth=t}}))).views((e=>({get width(){return e.volatileWidth},get assemblyNames(){return[...new Set(e.displayedRegions.map((e=>e.assemblyName)))]},get displayedRegionsTotalPx(){return this.totalBp/e.bpPerPx},get maxOffset(){return this.displayedRegionsTotalPx-10},get minOffset(){return 30-this.width},get totalBp(){return(0,a.sum)(e.displayedRegions.map((e=>e.end-e.start)))}}))).views((e=>({get dynamicBlocks(){return(0,i.A)(e)},get staticBlocks(){return(0,s.A)(e)},get currBp(){return(0,a.sum)(this.dynamicBlocks.map((e=>e.end-e.start)))}}))).views((e=>({pxToBp:t=>(0,l.Ii)(e,t),bpToPx:({refName:t,coord:r,regionNumber:n})=>(0,l.eB)({refName:t,coord:r,regionNumber:n,self:e})?.offsetPx}))).actions((e=>({setFeatures(t){e.features=t},showAllRegions(){e.bpPerPx=e.totalBp/e.width,e.offsetPx=0},zoomOut(){this.zoomTo(2*e.bpPerPx)},zoomIn(){this.zoomTo(e.bpPerPx/2)},zoomTo(t,r=e.width/2){const n=(0,a.clamp)(t,"minBpPerPx"in e?e.minBpPerPx:0,"maxBpPerPx"in e?e.maxBpPerPx:Number.POSITIVE_INFINITY),o=e.bpPerPx;return Math.abs(o-n)<1e-6?o:(e.bpPerPx=n,e.offsetPx=(0,a.clamp)(Math.round((e.offsetPx+r)*o/n-r),e.minOffset,e.maxOffset),e.bpPerPx)},scrollTo(t){const r=(0,a.clamp)(t,e.minOffset,e.maxOffset);return e.offsetPx=r,r},centerAt(t,r,n){if(!r)return;const a=e.bpToPx({refName:r,coord:t,regionNumber:n});a&&this.scrollTo(Math.round(a-e.width/2))},scroll(t){const r=e.offsetPx,n=(0,a.clamp)(e.offsetPx+t,e.minOffset,e.maxOffset);return e.offsetPx=n,n-r}}))).actions((e=>({moveTo(t,r){(0,l.tw)(e,t,r)}})))},20166:(e,t,r)=>{"use strict";r.d(t,{Kp:()=>d,R1:()=>c,Yo:()=>s,pB:()=>i,zm:()=>l});var n=r(89592),a=r(3862);class o extends Error{}function i(e){if(e){if(!(e instanceof AbortSignal))throw new TypeError("must pass an AbortSignal");if(e.aborted)throw l()}}async function s(e){await new Promise((e=>setTimeout(e,1))),i(e)}function l(){if("undefined"!=typeof DOMException)return new DOMException("aborted","AbortError");const e=new o("aborted");return e.code="ERR_ABORTED",e}function c(e){return e?(0,a.R)(e,"abort"):new n.c}function d(e){return e instanceof Error&&("AbortError"===e.name||"ERR_ABORTED"===e.code||!!/\b(aborted|aborterror)\b/i.test(e.message))}},31673:(e,t,r)=>{"use strict";function n(e){const t=new FileReader;return new Promise(((r,n)=>{t.onload=e=>{e.target?r(e.target.result):n(new Error("unknown result reading blob from canvas"))},t.readAsDataURL(e)}))}r.d(t,{y:()=>n})},76530:(e,t,r)=>{"use strict";r.d(t,{$G:()=>i,Db:()=>s,fK:()=>l,mh:()=>a});var n=r(99546);class a{constructor(e=[]){this.blocks=e}push(e){if("ElidedBlock"===e.type&&this.blocks.length>0){const t=this.blocks.at(-1);if("ElidedBlock"===t?.type)return void t.push(e)}this.blocks.push(e)}getBlocks(){return this.blocks}getRegions(){return this.blocks.map((e=>e.toRegion()))}map(e,t){return this.blocks.map(e,t)}forEach(e,t){this.blocks.forEach(e,t)}get length(){return this.blocks.length}get totalWidthPx(){return this.blocks.length>0?(0,n.sum)(this.blocks.map((e=>e.widthPx))):0}get totalWidthPxWithoutBorders(){return this.blocks.length>0?(0,n.sum)(this.blocks.filter((e=>"boundary"!==e.variant)).map((e=>e.widthPx))):0}get offsetPx(){return this.blocks.length>0?this.blocks[0].offsetPx:0}get contentBlocks(){return this.blocks.filter((e=>"ContentBlock"===e.type))}get totalBp(){return(0,n.sum)(this.contentBlocks.map((e=>e.end-e.start)))}}class o{type="BaseBlock";widthPx=0;constructor(e){Object.assign(this,e),this.assemblyName=e.assemblyName,this.refName=e.refName,this.start=e.start,this.end=e.end,this.key=e.key,this.offsetPx=e.offsetPx}toRegion(){return{refName:this.refName,start:this.start,end:this.end,assemblyName:this.assemblyName,reversed:this.reversed}}}class i extends o{type="ContentBlock"}class s extends o{type="ElidedBlock";elidedBlockCount=0;constructor(e){super(e),this.widthPx=e.widthPx}push(e){this.elidedBlockCount+=1,this.refName="",this.start=0,this.end=0,this.widthPx+=e.widthPx}}class l extends o{type="InterRegionPaddingBlock"}},93707:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(36422),a=r(32595),o=r(99546),i=r(76530);function s(e,t=!0,r=!0){const{offsetPx:s,displayedRegions:l,bpPerPx:c,width:d,minimumBlockWidth:u,interRegionPaddingWidth:p}=e;if(!d)throw new Error("view has no width, cannot calculate displayed blocks");const m=new i.mh;let g=0;const h=s,f=h+d;for(let e=0;e<l.length;e++){const y=l[e],{assemblyName:b,refName:w,start:v,end:C,reversed:S}=y,k=g+(C-v)/c,T=(C-v)/c,x=(0,n.isStateTreeNode)(y)?(0,n.getSnapshot)(y):y,[A,P]=(0,a.ky)(h,f,g,k);if(void 0!==A&&void 0!==P){let n,a,h,f,y;S?(n=Math.max(v,C-(P-g)*c),a=C-(A-g)*c,h=a===C,f=n===v,y=g+(C-a)/c):(n=(A-g)*c+v,a=Math.min(C,(P-g)*c+v),h=n===v,f=a===C,y=g+(n-v)/c);const k={assemblyName:b,refName:w,start:n,end:a,reversed:S,offsetPx:y,parentRegion:x,regionNumber:e,widthPx:(a-n)/c,isLeftEndOfDisplayedRegion:h,isRightEndOfDisplayedRegion:f,key:""};k.key=`${(0,o.assembleLocStringFast)(k)}-${e}${S?"-reversed":""}`,t&&0===m.length&&h&&m.push(new i.fK({key:`${k.key}-beforeFirstRegion`,widthPx:-s,offsetPx:k.offsetPx+s,variant:"boundary"})),r&&T<u?m.push(new i.Db(k)):m.push(new i.$G(k)),t&&(T>=u&&k.isRightEndOfDisplayedRegion&&e<l.length-1&&(m.push(new i.fK({key:`${k.key}-rightpad`,widthPx:p,offsetPx:k.offsetPx+k.widthPx})),g+=p),e===l.length-1&&k.isRightEndOfDisplayedRegion&&(y=k.offsetPx+k.widthPx,m.push(new i.fK({key:`${k.key}-afterLastRegion`,widthPx:d-y+s,offsetPx:y,variant:"boundary"}))))}g+=(C-v)/c}return m}},88530:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(36422),a=r(99546),o=r(76530);function i(e,t=!0,r=!0,i=0,s=800){const{offsetPx:l,displayedRegions:c,bpPerPx:d,minimumBlockWidth:u,interRegionPaddingWidth:p,width:m}=e,g=l*d,h=(l+m)*d,f=s,y=Math.ceil(f*d);let b=0;const w=new o.mh;for(let e=0;e<c.length;e++){const l=c[e],{assemblyName:m,refName:f,start:v,end:C,reversed:S}=l,k=Math.ceil((C-v)/y),T=(0,n.isStateTreeNode)(l)?(0,n.getSnapshot)(l):l;let x=Math.floor((h-b)/y)+i;x>=k&&(x=k-1);let A=Math.floor((g-b)/y)-i;A<0&&(A=0);const P=(C-v)/d;for(let n=A;n<=x;n+=1){let i,l,g,h;S?(i=Math.max(v,C-(n+1)*y),l=C-n*y,g=l===C,h=i===v):(i=v+n*y,l=Math.min(C,v+(n+1)*y),g=i===v,h=l===C);const k={assemblyName:m,refName:f,start:i,end:l,reversed:S,offsetPx:(b+n*y)/d,parentRegion:T,regionNumber:e,widthPx:(l-i)/d,isLeftEndOfDisplayedRegion:g,isRightEndOfDisplayedRegion:h,key:""};k.key=`${(0,a.assembleLocStringFast)(k)}-${e}${S?"-reversed":""}`,t&&0===e&&0===n&&w.push(new o.fK({key:`${k.key}-beforeFirstRegion`,widthPx:s,offsetPx:k.offsetPx-s,variant:"boundary"})),r&&P<u?w.push(new o.Db(k)):w.push(new o.$G(k)),t&&(P>=u&&k.isRightEndOfDisplayedRegion&&e<c.length-1&&(b+=p*d,w.push(new o.fK({key:`${k.key}-rightpad`,widthPx:p,offsetPx:k.offsetPx+k.widthPx}))),e===c.length-1&&k.isRightEndOfDisplayedRegion&&(b+=p*d,w.push(new o.fK({key:`${k.key}-afterLastRegion`,widthPx:s,offsetPx:k.offsetPx+k.widthPx,variant:"boundary"}))))}b+=C-v}return w}},80208:(e,t,r)=>{"use strict";r.r(t),r.d(t,{contrastingTextColor:()=>s,emphasize:()=>c,isNamedColor:()=>i,makeContrasting:()=>d,namedColorToHex:()=>o});var n=r(72639);const a={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function o(e){return a[e]}function i(e){return!!a[e]}function s(e){return l(e)>.5?"black":"white"}function l(e){const t=o(e);return(0,n.J1)(t||e)}function c(e,t=.15){const r=o(e);return(0,n.tL)(r||e,t)}function d(e,t="white",r=3){let a=o(e)||e;const i=o(t)||t,s=l(i);let c=(0,n.eM)(a,i);const d=a;let u=.05;for(;c<r;)a=s>.5?(0,n.e$)(d,u):(0,n.a)(d,u),u+=.05,c=(0,n.eM)(a,i);return a}},87485:(e,t,r)=>{"use strict";r.d(t,{M:()=>n.Mj});var n=r(76958),a=r(8145),o=r(81687);(0,n.X$)([a.A,o.A])},3519:(e,t,r)=>{"use strict";function n(e,t=JSON.stringify){const r=[],n=new Set;for(const a of e){const e=t(a);n.has(e)||(r.push(a),n.add(e))}return r}r.d(t,{Q:()=>n})},26257:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(99546);function a(e,t=""){const r=Object.keys(e);for(const n of r){if(t.length>5e3)break;t+="object"==typeof e[n]&&e[n]?a(e[n],t):`${n}-${e[n]};`}return(0,n.hashCode)(t)}},99834:(e,t,r)=>{"use strict";r.r(t),r.d(t,{RemoteFileWithRangeCache:()=>d,getFetcher:()=>f,openLocation:()=>h,resolveUriLocation:()=>g});var n=r(45834),a=r(70777),o=r.n(a),i=r(18196),s=r(35451);const l={},c=new i.j({fetch:function(e,t,r,n={}){const a=l[e];if(!a)throw new Error(`fetch not registered for ${e}`);return a(e,t,r,n)},size:524288e3,chunkSize:131072,maxFetchSize:104857600,minimumTTL:864e5});class d extends n.Tx{async fetch(e,t){const r=String(e);l[r]||(l[r]=this.fetchBinaryRange.bind(this));const n=new Headers(t?.headers).get("range");if(n){const r=/bytes=(\d+)-(\d+)/.exec(n);if(r){const[,n,a]=r,o=Number.parseInt(n,10),i=Number.parseInt(a,10)-o,{buffer:s,headers:l}=await c.getRange(e,o,i+1,{signal:t?.signal});return new Response(s,{status:206,headers:l})}}return super.fetch(e,t)}async fetchBinaryRange(e,t,r,n={}){const a=new Date,o=await super.fetch(e,{...n,headers:{...n.headers,range:`bytes=${t}-${r}`}}),i=new Date;if(!o.ok){const n=`HTTP ${o.status} fetching ${e} bytes ${t}-${r}`,a=" (should be 206 for range requests)";throw new Error(`${n}${200===o.status?a:""}`)}const l={};for(const[e,t]of o.headers.entries())l[e]=t;const c=await o.arrayBuffer();return{headers:l,requestDate:a,responseDate:i,buffer:s.hp.from(c)}}}var u=r(92516),p=r(91468),m=r(99546);function g(e){return e.baseUri?{...e,uri:new URL(e.uri,e.baseUri).href}:e}function h(e,t){if(function(e){return"localPath"in e}(e)){if(!e.localPath)throw new Error("No local path provided");if(o()||m.isElectron)return new n.EY(e.localPath);throw new Error("can't use local files in the browser")}if(function(e){return"blobId"in e}(e)){const t=(0,p.getBlob)(e.blobId);if(!t)throw new Error(`file ("${e.name}") was opened locally from a previous session. To restore it, go to track settings and reopen the file`);return new n.Ki(t)}if((0,u.C1)(e)){if(!e.uri)throw new Error("No URI provided");const r=g(e);if(t){const n=y(e,t);if(n)return n.openLocation(r)}return new d(r.uri,{fetch:b})}throw new Error("invalid fileLocation")}function f(e,t){if(!(0,u.C1)(e))throw new Error(`Not a valid UriLocation: ${JSON.stringify(e)}`);if(t){const r=y(e,t);if(r)return r.getFetcher(e)}return b}function y(e,t){const{rootModel:r}=t;if(r&&(0,u.lL)(r))return r.findAppropriateInternetAccount(e);if(e.internetAccountPreAuthorization){if(!e.internetAccountPreAuthorization.authInfo.token)throw new Error("Failed to obtain token from internet account. Try reloading the page");return t.getInternetAccountType(e.internetAccountPreAuthorization.internetAccountType).stateModel.create({type:e.internetAccountPreAuthorization.internetAccountType,configuration:e.internetAccountPreAuthorization.authInfo.configuration})}}async function b(e,t){const r=await fetch(e,t);if(401===r.status&&r.headers.get("WWW-Authenticate")?.includes("Basic"))throw new u._u("Accessing HTTPBasic resource without authentication",e.toString());return r}},53085:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(26400),a=r.n(n);function o(){const e=new(a().Jexl);return e.addFunction("get",((e,t)=>e.get(t))),e.addFunction("parent",(e=>e.parent())),e.addFunction("id",(e=>e.id())),e.addFunction("cast",(e=>e)),e.addFunction("log",(e=>(console.log(e),e))),e.addFunction("max",Math.max),e.addFunction("min",Math.min),e.addFunction("sqrt",Math.sqrt),e.addFunction("ceil",Math.ceil),e.addFunction("floor",Math.floor),e.addFunction("round",Math.round),e.addFunction("abs",Math.abs),e.addFunction("log10",Math.log10),e.addFunction("parseInt",Number.parseInt),e.addFunction("parseFloat",Number.parseFloat),e.addFunction("split",((e,t)=>e.split(t))),e.addFunction("charAt",((e,t)=>e.charAt(t))),e.addFunction("charCodeAt",((e,t)=>e.charCodeAt(t))),e.addFunction("codePointAt",((e,t)=>e.codePointAt(t))),e.addFunction("startsWith",((e,t,r)=>e.startsWith(t,r))),e.addFunction("endsWith",((e,t,r)=>e.endsWith(t,r))),e.addFunction("padEnd",((e,t,r)=>e.padEnd(t,r))),e.addFunction("padStart",((e,t,r)=>e.padStart(t,r))),e.addFunction("repeat",((e,t)=>e.repeat(t))),e.addFunction("replace",((e,t,r)=>e.replace(t,r))),e.addFunction("replaceAll",((e,t,r)=>e.replaceAll(t,r))),e.addFunction("slice",((e,t,r)=>e.slice(t,r))),e.addFunction("startsWith",((e,t,r)=>e.startsWith(t,r))),e.addFunction("substring",((e,t,r)=>e.substring(t,r))),e.addFunction("toLowerCase",(e=>e.toLowerCase())),e.addFunction("toUpperCase",(e=>e.toUpperCase())),e.addFunction("jsonParse",(e=>JSON.parse(e))),e.addFunction("trim",(e=>e.trim())),e.addFunction("trimEnd",(e=>e.trimEnd())),e.addFunction("trimStart",(e=>e.trimStart())),e.addFunction("getTag",((e,t)=>{const r=e.get("tags");return r?r[t]:e.get(t)})),e.addBinaryOp("&",15,((e,t)=>e&t)),e}},43283:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(53085);const a={};function o(e,t){const r=`nosig|${e}`;if(!a[r]){if(!e.startsWith("jexl:"))throw new Error("string does not appear to be in jexl format");const o=e.split("jexl:")[1],i=t?t.compile(o):(0,n.A)().compile(o);a[r]=i}return a[r]}},85012:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});const n=1e4;function a(e,t,r,n){return t>=r&&n>=e}class o{padding=1;widthLimit=1e6;setAllFilled(e){this.allFilled=e}getItemAt(e){return this.allFilled?this.allFilled:void 0===this.rowState?.min||e<this.rowState.min||e>=this.rowState.max?void 0:this.rowState.bits[e-this.rowState.offset]}isRangeClear(e,t){if(this.allFilled)return!1;if(void 0===this.rowState||t<=this.rowState.min||e>=this.rowState.max)return!0;const{min:r,max:n,offset:a,bits:o}=this.rowState,i=Math.min(n,t)-a;let s=!0;for(let t=Math.max(r,e)-a;t<i&&s;t++)s=void 0===o[t];return s}initialize(e,t){const r=t-e;return{offset:e-r,min:e,max:t,bits:Array.from({length:3*r})}}addRect(e,t){const r=e.l,n=e.r+this.padding;this.rowState||(this.rowState=this.initialize(r,n));let a=r-this.rowState.offset,o=n-this.rowState.offset;const i=this.rowState.bits.length;if(o>=this.rowState.bits.length){const e=o+1;this.rowState.bits.length+e>this.widthLimit?(console.warn("Layout width limit exceeded, discarding old layout. Please be more careful about discarding unused blocks."),this.rowState=this.initialize(r,n)):e>0&&(this.rowState.bits=[...this.rowState.bits,...Array.from({length:e})])}if(r<this.rowState.offset){const e=Math.min(i-a,this.rowState.offset);this.rowState.bits.length+e>this.widthLimit?(console.warn("Layout width limit exceeded, discarding old layout. Please be more careful about discarding unused blocks."),this.rowState=this.initialize(r,n)):(this.rowState.bits=[...Array.from({length:e}),...this.rowState.bits],this.rowState.offset-=e)}o=n-this.rowState.offset,a=r-this.rowState.offset;const s=o-a;s>2e4&&console.warn(`Layout X pitch set too low, feature spans ${s} bits in a single row.`,e,t);for(let e=a;e<o;e+=1)this.rowState.bits[e]=t;r<this.rowState.min&&(this.rowState.min=r),n>this.rowState.max&&(this.rowState.max=n)}discardRange(e,t){if(this.allFilled)return;if(!this.rowState)return;if(t<=this.rowState.min||e>=this.rowState.max)return;if(e<=this.rowState.min&&t>=this.rowState.max)return void(this.rowState=void 0);if(t>this.rowState.min&&e<=this.rowState.min&&(this.rowState.min=t),e<this.rowState.max&&t>=this.rowState.max&&(this.rowState.max=e),this.rowState.offset<this.rowState.min-n&&this.rowState.bits.length>this.rowState.max+n-this.rowState.offset){const e=this.rowState.min-this.rowState.offset,t=this.rowState.bits.length-1-(this.rowState.max-this.rowState.offset);this.rowState.bits=this.rowState.bits.slice(e,this.rowState.bits.length-t),this.rowState.offset+=e}else if(this.rowState.offset<this.rowState.min-n){const e=this.rowState.min-Math.floor(5e3)-this.rowState.offset;this.rowState.bits.splice(0,e),this.rowState.offset+=e}else if(this.rowState.bits.length>this.rowState.max-this.rowState.offset+n){const e=this.rowState.max-this.rowState.offset+1+Math.floor(5e3);this.rowState.bits.length=e}const r=Math.max(this.rowState.min,e)-this.rowState.offset,a=Math.min(t,this.rowState.max)-this.rowState.offset;for(let e=r;e>=0&&e<a;e+=1)this.rowState.bits[e]=void 0}}class i{constructor({pitchX:e=10,pitchY:t=10,maxHeight:r=1e4,hardRowLimit:n=1e4,displayMode:a="normal"}={}){this.pitchX=e,this.pitchY=t,this.hardRowLimit=n,this.maxHeightReached=!1,this.displayMode=a,"compact"===this.displayMode&&(this.pitchY=Math.round(this.pitchY/4)||1,this.pitchX=Math.round(this.pitchX/4)||1),this.bitmap=[],this.rectangles=new Map,this.maxHeight=Math.ceil(r/this.pitchY),this.pTotalHeight=0}addRect(e,t,r,n,a){const o=this.rectangles.get(e);if(o)return null===o.top?null:(this.addRectToBitmap(o),o.top*this.pitchY);const i=Math.floor(t/this.pitchX),s=Math.floor(r/this.pitchX),l=Math.ceil(n/this.pitchY),c={id:e,l:i,r:s,top:null,h:l,originalHeight:n,data:a},d=this.maxHeight-l;let u=0;if("collapse"!==this.displayMode){for(;u<=d&&this.collides(c,u);u+=1);if(u>d)return c.top=null,this.rectangles.set(e,c),this.maxHeightReached=!0,null}return c.top=u,this.addRectToBitmap(c),this.rectangles.set(e,c),this.pTotalHeight=Math.max(this.pTotalHeight||0,u+l),u*this.pitchY}collides(e,t){const{bitmap:r}=this,n=t+e.h;for(let a=t;a<n;a+=1){const t=r[a];if(void 0!==t&&!t.isRangeClear(e.l,e.r))return!0}return!1}autovivifyRow(e,t){let r=e[t];if(!r){if(t>this.hardRowLimit)throw new Error(`layout hard limit (${this.hardRowLimit*this.pitchY}px) exceeded, aborting layout`);r=new o,e[t]=r}return r}addRectToBitmap(e){if(null===e.top)return;const t=e.id,r=e.top+e.h;if(e.r-e.l>2e4)for(let n=e.top;n<r;n+=1)this.autovivifyRow(this.bitmap,n).setAllFilled(t);else for(let n=e.top;n<r;n+=1)this.autovivifyRow(this.bitmap,n).addRect(e,t)}discardRange(e,t){const r=Math.floor(e/this.pitchX),n=Math.floor(t/this.pitchX),{bitmap:a}=this;for(const e of a)e.discardRange(r,n)}hasSeen(e){return this.rectangles.has(e)}getByCoord(e,t){const r=Math.floor(t/this.pitchY),n=this.bitmap[r];if(!n)return;const a=Math.floor(e/this.pitchX);return n.getItemAt(a)}getByID(e){const t=this.rectangles.get(e);if(t){const e=t.top*this.pitchY;return[t.l*this.pitchX,e,t.r*this.pitchX,e+t.originalHeight]}}getDataByID(e){return this.rectangles.get(e)?.data}cleanup(){}getTotalHeight(){return this.pTotalHeight*this.pitchY}get totalHeight(){return this.getTotalHeight()}getRectangles(){return new Map([...this.rectangles.entries()].map((([e,t])=>{const{l:r,r:n,originalHeight:a,top:o}=t,i=(o||0)*this.pitchY,s=i+a;return[e,[r*this.pitchX,i,n*this.pitchX,s]]})))}serializeRegion(e){const t={};let r=!1;for(const[n,o]of this.rectangles.entries()){const{l:i,r:s,originalHeight:l,top:c}=o;if(null===o.top)r=!0;else{const r=(c||0)*this.pitchY,o=r+l,d=i*this.pitchX,u=s*this.pitchX;a(e.start,e.end,d-this.pitchX,u+this.pitchX)&&(t[n]=[d,r,u,o])}}return{rectangles:t,containsNoTransferables:!0,totalHeight:this.getTotalHeight(),maxHeightReached:r}}toJSON(){return{rectangles:Object.fromEntries(this.getRectangles()),containsNoTransferables:!0,totalHeight:this.getTotalHeight(),maxHeightReached:this.maxHeightReached}}}},2265:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});class n{subLayouts=new Map;constructor(e,t={}){this.SubLayoutClass=e,this.subLayoutConstructorArgs=t}getDataByID(e){for(const t of this.subLayouts.values()){const r=t.getDataByID(e);if(r)return r}}getSublayout(e){let t=this.subLayouts.get(e);return void 0===t?(t=new this.SubLayoutClass(this.subLayoutConstructorArgs),this.subLayouts.set(e,t),t):t}addRect(e,t,r,n,a,o={}){return this.getSublayout(e).addRect(t,r,n,a,o)}discardRange(e,t,r){return this.subLayouts.get(e)?.discardRange(t,r)}toJSON(){const e={};for(const[t,r]of this.subLayouts.entries())e[t]=r.toJSON();return e}}},75762:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(22593),a=r.n(n);class o{constructor({rectangles:e,totalHeight:t,maxHeightReached:r}){this.rectangles=new Map(Object.entries(e)),this.totalHeight=t,this.maxHeightReached=r,this.rbush=new(a());for(const[t,r]of Object.entries(e))this.rbush.insert({minX:r[0],minY:r[1],maxX:r[2],maxY:r[3],name:t})}addRect(e){const t=this.rectangles.get(e);if(!t)throw new Error(`id ${e} not found in precomputed feature layout`);return t[1]}getRectangles(){return this.rectangles}getTotalHeight(){return this.totalHeight}collides(e,t){throw new Error("Method not implemented.")}getByCoord(e,t){const r={minX:e,minY:t,maxX:e+1,maxY:t+1};return this.rbush.collides(r)?this.rbush.search(r)[0].name:void 0}getByID(e){return this.rectangles.get(e)}addRectToBitmap(e,t){throw new Error("Method not implemented.")}discardRange(e,t){throw new Error("Method not implemented.")}serializeRegion(e){throw new Error("Method not implemented.")}toJSON(){return{rectangles:Object.fromEntries(this.rectangles),totalHeight:this.totalHeight,maxHeightReached:!1,containsNoTransferables:!0}}}},88217:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GranularRectLayout:()=>n.A,MultiLayout:()=>a.A,PrecomputedLayout:()=>o.A,PrecomputedMultiLayout:()=>s,SceneGraph:()=>l});var n=r(85012),a=r(2265),o=r(75762);class i{constructor(){throw new Error("invalid layout name")}}class s extends a.A{constructor(e){super(i),Object.entries(e).forEach((([e,t])=>{this.subLayouts.set(e,new o.A(t))}))}}class l{constructor(e,t,r,n,a,o){this.name=e,this.left=t,this.top=r,this.width=n,this.height=a,this.data=o,this.children=new Map,this.absoluteCache={dirty:!0}}addChild(e,t,r,n,a,o){const i=e instanceof l?e:new l(e,t,r,n,a,o);if(!(i instanceof l))throw new TypeError("argument to addChild must be an array or a SceneGraph");if(this.children.has(i.name))throw new Error(`child named "${i.name}" already exists`);i.parent=this;const{left:s,right:c,top:d,bottom:u}=i.absolute;return void 0!==s&&void 0!==c&&void 0!==d&&void 0!==u&&(this.expand(s,c,d,u),this.children.set(i.name,i)),i}getSubRecord(e){return this.children.get(e)}expand(e,t,r,n){const{left:a,right:o,top:i,bottom:s}=this.absolute;if(void 0!==a&&e<a){const t=a-e;this.width+=t,this.left-=t}if(void 0!==o&&t>o&&(this.width+=t-o),void 0!==i&&r<i){const e=i-r;this.height+=e,this.top-=e}void 0!==s&&n>s&&(this.height+=n-s),this.parent&&this.parent.expand(e,t,r,n),this.absoluteCache.dirty=!0}get bottom(){return this.top+this.height}get right(){return this.left+this.width}walkParents(e){this.parent&&(e(this.parent),this.parent.walkParents(e))}walkChildren(e){for(const t of this.children.values())e(t),t.walkChildren(e)}get absolute(){if(this.absoluteCache.dirty){let e=0,t=0;this.walkParents((r=>{e+=r.left,t+=r.top})),this.absoluteCache={dirty:!1,left:this.left+e,right:this.right+e,top:this.top+t,bottom:this.bottom+t,width:this.width,height:this.height}}return this.absoluteCache}move(e,t){this.left+=e,this.top+=t,this.absoluteCache.dirty=!0,this.walkChildren((e=>{e.absoluteCache.dirty=!0}));const{left:r,right:n,top:a,bottom:o}=this.absolute;void 0!==r&&void 0!==n&&void 0!==a&&void 0!==o&&this.expand(r,n,a,o)}}},23550:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDefaultValue:()=>s,getEnumerationValues:()=>l,getPropertyType:()=>i,getSubType:()=>a,getUnionSubTypes:()=>o,resolveLateType:()=>c});var n=r(36422);function a(e){let t;if((0,n.isOptionalType)(e))t=e._subtype||e.type;else{if(!(0,n.isArrayType)(e)&&!(0,n.isMapType)(e)){if("function"==typeof e.getSubType)return e.getSubType();throw new TypeError("unsupported mst type")}t=e._subtype||e._subType||e.subType}if(!t)throw new Error("failed to get subtype");return t}function o(e){if(!(0,n.isUnionType)(e))throw new TypeError("not an MST union type");const t=e._types||e.types||a(e)._types||a(e).types;if(!t)throw new Error("failed to extract subtypes from mst union");return t}function i(e,t){return e.properties[t]}function s(e){if(!(0,n.isOptionalType)(e))throw new TypeError("type must be an optional type");return e._defaultValue||e.defaultValue}function l(e){return o(e).map((e=>e.value))}function c(e){return(0,n.isUnionType)(e)||(0,n.isArrayType)(e)||!(0,n.isLateType)(e)?e:e.getSubType()}},32761:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>n});const n=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),"")},18010:(e,t,r)=>{"use strict";r.d(t,{Nw:()=>i,T9:()=>s,bV:()=>l,pv:()=>c});var n=r(70777),a=r.n(n),o=r(13862);let i,s,l;function c(e,t){e.serializedCommands?new o.CanvasSequence(e.serializedCommands).execute(t):t.drawImage(e,0,0)}const d="function"==typeof OffscreenCanvas,u=a();d?(i=(e,t)=>new OffscreenCanvas(e,t),s=window.createImageBitmap||self.createImageBitmap,l=window.ImageBitmap||self.ImageBitmap):u?(i=(...e)=>nodeCreateCanvas(...e),s=async e=>{const t=e.toDataURL(),r=new nodeImage;return new Promise(((e,n)=>{r.onload=()=>{e(r)},r.onerror=n,r.src=t}))}):(i=(e,t)=>{const r=new o.CanvasSequence;return{width:e,height:t,getContext:()=>r}},s=async e=>{const t=e.getContext("2d");return{height:e.height,width:e.width,serializedCommands:t.toJSON(),containsNoTransferables:!0}},l=String)},98506:(e,t,r)=>{"use strict";r.d(t,{Jy:()=>l,aE:()=>c,u1:()=>s});var n=r(7552),a=r(13862),o=r(18010),i=r(31673);async function s(e,t,r,s){const{exportSVG:l,highResolutionScaling:c=1}=r;if(l){if(l.rasterizeLayers){const r=l.scale||c,a=(0,o.Nw)(Math.ceil(e*r),t*r),d=a.getContext("2d");if(!d)throw new Error("2d canvas rendering not supported on this platform");return d.scale(r,r),{...await s(d),reactElement:n.createElement("image",{width:e,height:t,xlinkHref:"convertToBlob"in a?await(0,i.y)(await a.convertToBlob({type:"image/png"})):a.toDataURL("image/png")})}}{const e=new a.CanvasSequence;return{...await s(e),canvasRecordedData:e.toJSON()}}}{const r=c,n=(0,o.Nw)(Math.ceil(e*r),t*r),a=n.getContext("2d");if(!a)throw new Error("2d canvas rendering not supported on this platform");return a.scale(r,r),{...await s(a),imageData:await(0,o.T9)(n)}}}async function l(e){const{width:t,height:n,canvasRecordedData:o}=e,i=new((await r.e(3109).then(r.t.bind(r,63109,23))).default)(t,n);return new a.CanvasSequence(o).execute(i),i.getSvg().innerHTML}function c({rendering:e}){return n.isValidElement(e.reactElement)?e.reactElement:n.createElement("g",{dangerouslySetInnerHTML:{__html:e.html||""}})}},32595:(e,t,r)=>{"use strict";function n(e,t,r,n){return t>r&&e<n&&n-r&&t-e?e>r?t<n?[e,t]:[e,n]:t<n?[r,t]:[r,n]:[]}function a(e,t,r,n){return t>r&&e<n}function o(e,t,r,n){return r<=e&&n>=t}r.d(t,{R6:()=>a,Xx:()=>o,ky:()=>n})},66885:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ObservableCreate:()=>i});var n=r(89592),a=r(85419),o=r(99546);function i(e,t){return new n.c((t=>{try{const r=e(t);r?.catch&&r.catch((e=>{t.error(e)}))}catch(e){t.error(e)}})).pipe((0,a.Q)((0,o.observeAbortSignal)(t)))}},6434:(e,t,r)=>{"use strict";function n(e){return"object"==typeof e&&null!==e&&"function"==typeof e.get&&"function"==typeof e.id}function a(e){return"uniqueId"in e&&"object"!=typeof e.data}r.d(t,{A:()=>o,l:()=>n});class o{constructor(e){a(e)?this.data=e:(this.data=e.data,this.parentHandle=e.parent);const t=a(e)?e.uniqueId:e.id;if(null==t)throw new Error("SimpleFeature requires a unique `id` or `data.uniqueId` attribute");if(this.uniqueId=String(t),!(this.data.aliases||this.data.end-this.data.start>=0))throw new Error(`invalid feature data, end less than start. end: ${this.data.end} start: ${this.data.start}`);this.data.subfeatures&&(this.subfeatures=this.data.subfeatures?.map(((e,r)=>"function"!=typeof e.get?new o({id:e.uniqueId||`${t}-${r}`,data:{strand:this.data.strand,...e},parent:this}):e)))}get(e){return"subfeatures"===e?this.subfeatures:"parent"===e?this.parent():this.data[e]}set(e,t){this.data[e]=t}tags(){return Object.keys(this.data)}id(){return this.uniqueId}parent(){return this.parentHandle}children(){return this.get("subfeatures")}toJSON(){const e={...this.data,uniqueId:this.id()},t=this.parent();t&&(e.parentId=t.id());const r=this.children();return r&&(e.subfeatures=r.map((e=>e.toJSON()))),e}static fromJSON(e){return new o({...e})}}},37957:(e,t,r)=>{"use strict";r.d(t,{WD:()=>i,Yv:()=>l,qn:()=>s});var n=r(44728),a=r(69652);function o(e,t,r,n=!1){if(0===r)return 0;let a;return n?a=t/r-e*e/(r*r):(a=t-e*e/r,r>1&&(a/=r-1)),a<0?0:Math.sqrt(a)}function i(e){return{...e,scoreMean:(e.scoreSum||0)/(e.featureCount||e.basesCovered||1),scoreStdDev:o(e.scoreSum,e.scoreSumSquares,e.featureCount||e.basesCovered),featureDensity:(e.featureCount||1)/e.basesCovered}}async function s(e,t){const{start:r,end:o}=e,s={scoreMin:Number.MAX_VALUE,scoreMax:Number.MIN_VALUE,scoreSum:0,scoreSumSquares:0,featureCount:0};let l=!1;const{scoreMin:c,scoreMax:d,scoreSum:u,scoreSumSquares:p,featureCount:m}=await(0,n._)(t.pipe((0,a.T)(((e,t)=>{const r=t.get("score"),n=t.get("summary"),{scoreMax:a,scoreMin:o}=e;return e.scoreMax=Math.max(a,n?t.get("maxScore"):r),e.scoreMin=Math.min(o,n?t.get("minScore"):r),e.scoreSum+=r,e.scoreSumSquares+=r*r,e.featureCount+=1,l=!0,e}),s)));return l?i({scoreMax:d,scoreMin:c,scoreSum:u,scoreSumSquares:p,featureCount:m,basesCovered:o-r+1}):{scoreMin:0,scoreMax:0,scoreMean:0,scoreStdDev:0,scoreSum:0,scoreSumSquares:0,featureCount:0,featureDensity:0,basesCovered:0}}function l(){return{scoreMin:0,scoreMax:0,scoreMean:0,scoreStdDev:0,scoreSum:0,scoreSumSquares:0,featureCount:0,featureDensity:0,basesCovered:0}}},92516:(e,t,r)=>{"use strict";r.d(t,{BY:()=>u,C1:()=>S,DW:()=>o,EO:()=>b,EV:()=>k,J_:()=>A,Nh:()=>C,QW:()=>l,Tl:()=>h,Uy:()=>y,Y$:()=>i,ZL:()=>P,_u:()=>x,bV:()=>w,gx:()=>p,lL:()=>v,lO:()=>d,mY:()=>g,rF:()=>T,rz:()=>a.A,u3:()=>s,xU:()=>f,xv:()=>c,yH:()=>M,zA:()=>m});var n=r(36422),a=r(83059);function o(e){return(0,n.isStateTreeNode)(e)&&"removeView"in e&&"addView"in e&&"views"in e}function i(e){return"object"==typeof e&&null!==e&&"rpcManager"in e&&"configuration"in e}function s(e){return i(e)&&"editConfiguration"in e}function l(e){return i(e)&&"addTrackConf"in e&&!e.disableAddTracks}function c(e){return i(e)&&"shareURL"in e&&!!e.shareURL}function d(e){return i(e)&&"widgets"in e}function u(e){return i(e)&&"makeConnection"in e}function p(e){return i(e)&&"addConnectionConf"in e}function m(e){return i(e)&&"sessionPlugins"in e}function g(e){return"object"==typeof e&&null!==e&&"selection"in e&&"setSelection"in e}function h(e){return"object"==typeof e&&null!==e&&"width"in e&&"setWidth"in e}function f(e){return"object"==typeof e&&null!==e&&"configuration"in e&&e.configuration.trackId}function y(e){return"object"==typeof e&&null!==e&&"configuration"in e&&e.configuration.displayId}function b(e){return"object"==typeof e&&null!==e&&"showTrack"in e&&"hideTrack"in e}function w(e){return"object"==typeof e&&null!==e&&"findAppropriateInternetAccount"in e}function v(e){return"object"==typeof e&&null!==e&&"internetAccounts"in e&&"findAppropriateInternetAccount"in e}function C(e){return"object"==typeof e&&null!==e&&"appendMenu"in e&&"appendToSubMenu"in e}function S(e){return"object"==typeof e&&null!==e&&"uri"in e&&!!e.uri}function k(e){return"object"==typeof e&&null!==e&&"localPath"in e&&!!e.localPath}function T(e){return"object"==typeof e&&null!==e&&"blobId"in e&&!!e.blobId}class x extends Error{constructor(e,t){super(e),this.message=e,this.url=t,this.name="AuthNeededError",Object.setPrototypeOf(this,x.prototype)}}class A extends Error{constructor(e,t){super(e),this.message=e,this.internetAccountId=t,this.name="RetryError"}}function P(e){return e instanceof Error&&("AuthNeededError"===e.name||void 0!==e.url)}function M(e){return"RetryError"===e.name||void 0!==e.internetAccountId}},40085:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(7552);function a(){const e=(0,n.useRef)(null),[t,r]=(0,n.useState)({width:void 0,height:void 0});return(0,n.useEffect)((()=>{if(!e.current)return;const t="undefined"!=typeof window&&"ResizeObserver"in window?window.ResizeObserver:void 0;if(!t)return;const n=new t((e=>{r({width:e[0].contentRect.width,height:e[0].contentRect.height})}));return n.observe(e.current),()=>{n.disconnect()}}),[]),[e,t]}},1864:(e,t,r)=>{"use strict";r.d(t,{I:()=>i,z:()=>o});var n=r(42489),a=r(20166);function o(e,{timeout:t,signal:r,name:o}={}){return new Promise(((i,s)=>{let l=!1;const c=(0,n.when)(e);let d,u=()=>{};t&&(d=setTimeout((()=>{l||(l=!0,c.cancel(),s(new Error(`timed out waiting for ${o||"whenPresent"}`)))}),t),u=()=>{d&&clearTimeout(d)}),r&&r.addEventListener("abort",(()=>{l||(l=!0,c.cancel(),u(),s((0,a.zm)()))})),c.then((()=>{l||(l=!0,u(),i(!0))})).catch((e=>{l||(l=!0,u(),s(e))}))}))}async function i(e,t={}){return await o((()=>null!=e()),t),e()}},80544:(e,t,r)=>{"use strict";r.r(t),r.d(t,{cigarToMismatches:()=>u,featurizeSA:()=>A,getClip:()=>T,getLength:()=>S,getLengthOnRef:()=>C,getLengthSansClipping:()=>k,getMethBins:()=>f,getMismatches:()=>m,getModificationPositions:()=>y,getModificationProbabilities:()=>h,getModificationTypes:()=>b,getNextRefPos:()=>g,getOrientedCigar:()=>w,getOrientedMismatches:()=>v,getTag:()=>x,mdToMismatches:()=>p,parseCigar:()=>d});var n=r(99546),a=r(86576);const o=new RegExp(/(\d+|\^[a-z]+|[a-z])/gi),i=new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/),s=new RegExp(/([MIDNSHPX=])/),l=new RegExp(/(\d+)[SH]$/),c=new RegExp(/^(\d+)([SH])/);function d(e=""){return e.split(s).slice(0,-1)}function u(e,t,r,n){let a=0,o=0;const i=[],s=r&&t;for(let l=0;l<e.length;l+=2){const c=+e[l],d=e[l+1];if("M"===d||"="===d||"E"===d){if(s)for(let e=0;e<c;e++)t[o+e].toUpperCase()!==r[a+e].toUpperCase()&&i.push({start:a+e,type:"mismatch",base:t[o+e],altbase:r[a+e],length:1});o+=c}if("I"===d)i.push({start:a,type:"insertion",base:`${c}`,length:0}),o+=c;else if("D"===d)i.push({start:a,type:"deletion",base:"*",length:c});else if("N"===d)i.push({start:a,type:"skip",base:"N",length:c});else if("X"===d){const e=t?.slice(o,o+c)||[],r=n?.subarray(o,o+c)||[];for(let t=0;t<c;t++)i.push({start:a+t,type:"mismatch",base:e[t],qual:r[t],length:1});o+=c}else"H"===d?i.push({start:a,type:"hardclip",base:`H${c}`,cliplen:c,length:1}):"S"===d&&(i.push({start:a,type:"softclip",base:`S${c}`,cliplen:c,length:1}),o+=c);"I"!==d&&"S"!==d&&"H"!==d&&(a+=c)}return i}function p(e,t,r,n,a){let i={start:0,base:"",length:0,type:"mismatch"},s=0,l=0,c=0,d=0;const u=[],p=r.filter((e=>"skip"===e.type));function m(e){let r=l,n=c;for(let a=s;a<t.length&&n<=e;a+=2,s=a){const e=+t[a],o=t[a+1];"S"===o||"I"===o?r+=e:"D"===o||"P"===o||"N"===o?n+=e:"H"!==o&&(r+=e,n+=e)}return l=r,c=n,r-(n-e)}const g=e.match(o)||[];for(const e of g){const t=+e;if(Number.isNaN(t))if(e.startsWith("^"))i.start+=e.length-1;else for(let t=0;t<e.length;t+=1){for(i.length=1;d<p.length;){const e=p[d];if(!(i.start>=e.start))break;i.start+=e.length,d++}const t=m(i.start);i.base=n[t]||"X",i.qual=a?.[t],i.altbase=e,u.push(i),i={start:i.start+i.length,length:0,base:"",type:"mismatch"}}else i.start+=t}return u}function m(e,t,r,n,a){let o=[];const i=d(e);return e&&(o=o.concat(u(i,r,n,a))),t&&r&&(o=o.concat(p(t,i,o,r,a))),o}function*g(e,t){let r=0,n=0,a=0;for(let o=0;o<e.length&&a<t.length;o+=2){const i=+e[o],s=e[o+1];if("S"===s||"I"===s){for(let e=0;e<i&&a<t.length;e++)t[a]===r+e&&a++;r+=i}else if("D"===s||"N"===s)n+=i;else if("M"===s||"X"===s||"="===s){for(let e=0;e<i&&a<t.length;e++)t[a]===r+e&&(yield n+e,a++);r+=i,n+=i}}}function h(e){const t=(0,a.c$)(e,"ML","Ml")||[];return t?("string"==typeof t?t.split(",").map((e=>+e)):t).map((e=>e/255)):(0,a.c$)(e,"MP","Mp")?.split("").map((e=>e.charCodeAt(0)-33)).map((e=>Math.min(1,e/50)))}function f(e){const t=e.get("start"),r=e.get("end"),n=e.get("strand"),o=r-t,i=(0,a.c$)(e,"MM","Mm")||"",s=new Array(o),l=new Array(o),c=e.get("seq");if(c){const t=d(e.get("CIGAR")),r=h(e),a=y(i,c,n);let u=0;for(const{type:e,positions:n}of a)if("m"===e)for(const e of g(t,n)){const t=r?.[u]||0;u++,e>=0&&e<o&&(s[e]=1,l[e]=t)}}return{methBins:s,methProbs:l}}function y(e,t,r){const a=-1===r?(0,n.revcom)(t):t,o=e.split(";").filter((e=>!!e)),s=[];for(const e of o){const[t,...n]=e.split(","),o=i.exec(t);if(!o)throw new Error("bad format for MM tag");const[,l,c,d]=o,u=d.split(/(\d+|.)/).filter((e=>!!e));"-"===c&&(console.warn("unsupported negative strand modifications"),s.push({type:"unsupported",positions:[]}));for(const e of u){let t=0;const o=[];for(const e of n){let n=+e;do{"N"!==l&&l!==a[t]||n--,t++}while(n>=0&&t<a.length);const i=t-1;o.push(-1===r?a.length-1-i:i)}-1===r&&o.sort(((e,t)=>e-t)),s.push({type:e,positions:o})}}return s}function b(e){return e.split(";").filter((e=>!!e)).flatMap((t=>{const r=t.split(",")[0],n=i.exec(r);if(!n)throw new Error(`bad format for MM tag: ${e}`);return n[3].split(/(\d+|.)/).filter((e=>!!e))}))}function w(e,t){if(e){const e=[];for(let r=0;r<t.length;r+=2){const n=t[r];let a=t[r+1];"D"===a?a="I":"I"===a&&(a="D"),e.push(n,a)}return e}return t}function v(e,t){const r=d(t);return u(e?w(e,r):r)}function C(e){const t=d(e);let r=0;for(let e=0;e<t.length;e+=2){const n=+t[e],a=t[e+1];"H"!==a&&"S"!==a&&"I"!==a&&(r+=n)}return r}function S(e){const t=d(e);let r=0;for(let e=0;e<t.length;e+=2){const n=+t[e],a=t[e+1];"D"!==a&&"N"!==a&&(r+=n)}return r}function k(e){const t=d(e);let r=0;for(let e=0;e<t.length;e+=2){const n=+t[e],a=t[e+1];"H"!==a&&"S"!==a&&"D"!==a&&"N"!==a&&(r+=n)}return r}function T(e,t){return-1===t?+(l.exec(e)||[])[1]||0:+(c.exec(e)||[])[1]||0}function x(e,t){const r=e.get("tags");return r?r[t]:e.get(t)}function A(e,t,r,n,a){return e?.split(";").filter((e=>!!e)).map(((e,o)=>{const i=e.split(","),s=i[0],l=i[1],c=i[2],d=i[3],u=C(d),p=S(d),m=k(d),g="-"===c?-1:1,h=T(d,(a?r:1)*g),f=+l-1;return{refName:s,start:f,end:f+u,seqLength:p,clipPos:h,CIGAR:d,strand:(a?r:1)*g,uniqueId:`${t}_SA${o}`,mate:{start:h,end:h+m,refName:n}}}))||[]}},82727:(e,t,r)=>{"use strict";r.d(t,{aF:()=>we,N5:()=>Ge,Ay:()=>Xe,ww:()=>xe});var n=r(12678),a=r(47369),o=r(68584);const i=(0,o.ConfigurationSchema)("CramAdapter",{fetchSizeLimit:{type:"number",description:"size in bytes over which to display a warning to the user that too much data will be fetched",defaultValue:3e6},cramLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.cram",locationType:"UriLocation"}},craiLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.cram.crai",locationType:"UriLocation"}},sequenceAdapter:{type:"frozen",description:"sequence data adapter",defaultValue:null}},{explicitlyTyped:!0});function s(e){e.addAdapterType((()=>new a.A({name:"CramAdapter",displayName:"CRAM adapter",configSchema:i,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(5099),r.e(6391)]).then(r.bind(r,78369)).then((e=>e.default))})))}var l=r(36422);const c=(0,o.ConfigurationSchema)("BamAdapter",{bamLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bam",locationType:"UriLocation"}},index:(0,o.ConfigurationSchema)("BamIndex",{indexType:{model:l.types.enumeration("IndexType",["BAI","CSI"]),type:"stringEnum",defaultValue:"BAI"},location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bam.bai",locationType:"UriLocation"}}}),fetchSizeLimit:{type:"number",description:"size to fetch in bytes over which to display a warning to the user that too much data will be fetched",defaultValue:5e6},sequenceAdapter:{type:"frozen",description:"sequence data adapter, used to calculate SNPs when BAM reads lacking MD tags",defaultValue:null}},{explicitlyTyped:!0});function d(e){e.addAdapterType((()=>new a.A({name:"BamAdapter",displayName:"BAM adapter",configSchema:c,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4133),r.e(4770)]).then(r.bind(r,94770)).then((e=>e.default))})))}const u=(0,o.ConfigurationSchema)("HtsgetBamAdapter",{htsgetBase:{type:"string",description:"the base URL to fetch from",defaultValue:""},htsgetTrackId:{type:"string",description:"the trackId, which is appended to the base URL",defaultValue:""},sequenceAdapter:{type:"frozen",description:"sequence data adapter, used to calculate SNPs when BAM reads lacking MD tags",defaultValue:null}},{explicitlyTyped:!0});function p(e){e.addAdapterType((()=>new a.A({name:"HtsgetBamAdapter",displayName:"Htsget BAM adapter",adapterMetadata:{hiddenFromGUI:!0},configSchema:u,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4133),r.e(6823)]).then(r.bind(r,6823)).then((e=>e.default))})))}const m=(0,o.ConfigurationSchema)("SNPCoverageAdapter",{subadapter:{type:"frozen",defaultValue:null}},{explicitlyTyped:!0});function g(e){e.addAdapterType((()=>new a.A({name:"SNPCoverageAdapter",displayName:"SNPCoverage adapter",adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>r.e(5461).then(r.bind(r,75461)).then((e=>e.default)),configSchema:m})))}const h=(0,o.ConfigurationSchema)("SNPCoverageRenderer",{clipColor:{type:"color",description:"the color of the clipping marker",defaultValue:"red"},indicatorThreshold:{type:"number",description:"the proportion of reads containing a insertion/clip indicator",defaultValue:.4},drawArcs:{type:"boolean",description:"Draw sashimi-style arcs for intron features",defaultValue:!0},drawInterbaseCounts:{type:"boolean",description:'draw count "upsidedown histogram" of the interbase events that don\'t contribute to the coverage count so are not drawn in the normal histogram',defaultValue:!0},drawIndicators:{type:"boolean",description:"draw a triangular indicator where an event has been detected",defaultValue:!0},color:{type:"color",description:"Background color for the SNPCoverage renderer",defaultValue:"#d3d3d3"}},{explicitlyTyped:!0});var f=r(49823),y=r(99546),b=r(17970);class w extends b.er{async draw(e,t){const{features:r,regions:n,bpPerPx:a,displayCrossHatches:i,modificationTagMap:s={},scaleOpts:l,height:c,theme:d,config:u,ticks:p}=t,m=(0,f.createJBrowseTheme)(d),g=n[0],h=(g.end-g.start)/a,w=b.Oy,v=c-2*w,C={...l,range:[0,v]},S=(0,b.X_)(C),k=(0,b.X_)({...C,range:[0,v/2],scaleType:"linear"}),T=(0,b.$z)(l.scaleType),x=(0,b.$z)("linear"),A=(0,o.readConfObject)(u,"indicatorThreshold"),P=(0,o.readConfObject)(u,"drawInterbaseCounts"),M=(0,o.readConfObject)(u,"drawArcs"),E=(0,o.readConfObject)(u,"drawIndicators"),R=e=>v-(S(e)||0)+w,I=e=>R(T)-R(e),N=e=>v-(k(e)||0)+w,F=e=>N(x)-N(e),{bases:L}=m.palette,D={A:L.A.main,C:L.C.main,G:L.G.main,T:L.T.main,insertion:"purple",softclip:"blue",hardclip:"red",total:(0,o.readConfObject)(u,"color"),meth:"red",unmeth:"blue"},B=[...r.values()],V=B.filter((e=>"skip"!==e.get("type"))),z=B.filter((e=>"skip"===e.get("type")));e.fillStyle=D.total;for(const t of V){const[r,n]=(0,y.featureSpanPx)(t,g,a),o=n-r+.6,i=t.get("score");e.fillRect(r,R(i),o,I(i))}let O=0;const H=g.reversed?1/a:0;for(const t of V){const[r,n]=(0,y.featureSpanPx)(t,g,a),o=t.get("score"),i=t.get("snpinfo"),l=Math.max(n-r,1),c=i.total,d=Object.keys(i.cov).sort();let u=0;for(const t of d){const{total:n}=i.cov[t];e.fillStyle=D[t]||s[t.replace("mod_","")]||"black";const a=I(o),c=R(o)+a;e.fillRect(Math.round(r),c-(n+u)/o*a,l,n/o*a),u+=n}const p=Object.keys(i.noncov),m=4.5;if(P){let t=0;for(const n of p){const{total:a}=i.noncov[n],o=.6;e.fillStyle=D[n],e.fillRect(r-o+H,m+F(t),2*o,F(a)),t+=a}}if(E){let t=0,n=0,a="";for(const e of p){const{total:r}=i.noncov[e];t+=r,r>n&&(n=r,a=e)}const o=Math.max(c,O);if(t>o*A&&o>7){e.fillStyle=D[a],e.beginPath();const t=r+H;e.moveTo(t-3.5,0),e.lineTo(t+3.5,0),e.lineTo(t,m),e.fill()}}O=c}if(M)for(const t of z){const[r,n]=(0,y.bpSpanPx)(t.get("start"),t.get("end"),g,a);e.beginPath();const o=t.get("strand"),i=t.get("xs"),s="rgba(255,200,200,0.7)",l="rgba(200,200,255,0.7)",c="rgba(200,200,200,0.7)";e.strokeStyle="+"===i?s:"-"===i?l:1===o?s:-1===o?l:c,e.lineWidth=Math.log(t.get("score")+1),e.moveTo(r,v-2*w),e.bezierCurveTo(r,0,n,0,n,v-2*w),e.stroke()}i&&(e.lineWidth=1,e.strokeStyle="rgba(140,140,140,0.8)",p.values.forEach((t=>{e.beginPath(),e.moveTo(0,Math.round(R(t))),e.lineTo(h,Math.round(R(t))),e.stroke()})))}}function v(e){e.addRendererType((()=>new w({name:"SNPCoverageRenderer",ReactComponent:b.Ep,configSchema:h,pluginManager:e})))}var C=r(98111),S=r(3496),k=r(41365),T=r.n(k);class x extends C.LayoutSession{showSoftClip=!1;constructor(e){super(e),this.config=e.config}cachedLayoutIsValid(e){return super.cachedLayoutIsValid(e)&&this.showSoftClip===e.showSoftClip&&T()(this.sortedBy,e.sortedBy)&&T()(this.filterBy,e.filterBy)}get layout(){return this.cachedLayout&&this.cachedLayoutIsValid(this.cachedLayout)||(this.cachedLayout={layout:this.makeLayout(),config:(0,o.readConfObject)(this.config),filters:this.filters,filterBy:this.filterBy,sortedBy:this.sortedBy,showSoftClip:this.showSoftClip}),this.cachedLayout.layout}}var A=r(86576);class P extends C.default{supportsSVG=!0;async fetchSequence(e){const{sessionId:t,regions:r,adapterConfig:n}=e,{sequenceAdapter:a}=n;if(!a)return;const o=this.pluginManager,{dataAdapter:i}=await(0,S.cK)(o,t,a),s=r[0];return(0,A.Iw)(s,i)}getExpandedRegion(e,t){const{config:r,showSoftClip:n}=t,{start:a,end:i}=e,s=(0,o.readConfObject)(r,"maxClippingSize"),l=n?Math.round(s):0;return{...e,start:Math.floor(Math.max(a-l,0)),end:Math.ceil(i+l)}}async render(e){const t=await this.getFeatures(e),n=this.createLayoutInWorker(e),{regions:a,bpPerPx:i}=e,s=a[0],l=function(e){const{layout:t,features:r,sortedBy:n,config:a,bpPerPx:i,showSoftClip:s,regions:l}=e,c=l[0],d=n?.type&&c.start===n.pos?((e,t)=>{const r=Array.from(e.values()),n=[],a=[],{pos:o,type:i}=t;r.forEach((e=>{const t=e,r=t.get("start"),i=t.get("end");(0,y.doesIntersect2)(o-1,o,r,i)?n.push(e):a.push(e)}));const s=!!r.length&&r[0].get("tags");switch(i){case"Start location":n.sort(((e,t)=>e.get("start")-t.get("start")));break;case"tag":{const e=t.tag,r=(e,t)=>s?e.get("tags")[t]:e.get(t);n[0]&&"string"==typeof r(n[0],e)?n.sort(((t,n)=>r(n,e).localeCompare(r(t,e)))):n.sort(((t,n)=>(r(n,e)||0)-(r(t,e)||0)));break}case"Base pair":{const e=[];n.forEach((t=>{t.get("mismatches").forEach((r=>{const n=t.get("start")+r.start+1,a="insertion"===r.type||"softclip"===r.type?0:r.length;o>=n&&o<n+a&&e.push([t.id(),r])}))}));const t=new Map(e);n.sort(((e,r)=>{const n=t.get(e.id()),a=t.get(r.id()),o=a?.base.toUpperCase(),i=n?.base.toUpperCase();return o===i&&"*"===o?n.length-a.length:(o?o.charCodeAt(0):0)-(i?i.charCodeAt(0):0)}));break}case"Read strand":n.sort(((e,t)=>e.get("strand")<=t.get("strand")?1:-1))}return new Map([...n,...a].map((e=>[e.id(),e])))})(r,n):r,u=(0,o.readConfObject)(a,"height"),p=(0,o.readConfObject)(a,"displayMode");return(0,y.iterMap)(d.values(),(e=>function({feature:e,layout:t,bpPerPx:r,region:n,showSoftClip:a,heightPx:o,displayMode:i}){let s=0,l=0;if(a){const t=e.get("mismatches");if(e.get("seq"))for(const{type:e,start:r,cliplen:n=0}of t)"softclip"===e&&(0===r?s=n:l=n)}const[c,d]=(0,y.bpSpanPx)(e.get("start")-s,e.get("end")+l,n,r);if("compact"===i&&(o/=3),e.get("refName")!==n.refName)throw new Error(`feature ${e.id()} is not on the current region's reference sequence ${n.refName}`);const u=t.addRect(e.id(),e.get("start")-s,e.get("end")+l,o,e);return null===u?null:{feature:e,leftPx:c,rightPx:d,topPx:"collapse"===i?0:u,heightPx:o}}({feature:e,layout:t,bpPerPx:i,region:c,showSoftClip:s,heightPx:u,displayMode:p})),d.size)}({...e,features:t,layout:n}),c=t.size&&(0,A.k_)(e.colorBy?.type)?await this.fetchSequence(e):void 0,d=(s.end-s.start)/i,u=Math.max(n.getTotalHeight(),1),{makeImageData:p}=await r.e(4060).then(r.bind(r,24060)),m=await(0,y.renderToAbstractCanvas)(d,u,e,(r=>{p({ctx:r,layoutRecords:l.filter(y.notEmpty),canvasWidth:d,renderArgs:{...e,layout:n,features:t,regionSequence:c}})}));return{...await super.render({...e,...m,features:t,layout:n,height:u,width:d}),...m,features:new Map,layout:n,height:u,width:d,maxHeightReached:n.maxHeightReached}}createSession(e){return new x(e)}}const M=(0,o.ConfigurationSchema)("PileupRenderer",{color:{type:"color",description:"the color of each feature in a pileup alignment",defaultValue:"#f0f",contextVariable:["feature"]},orientationType:{type:"stringEnum",model:l.types.enumeration("orientationType",["fr","rf","ff"]),defaultValue:"fr",description:'read sequencer orientation. fr is normal "reads pointing at each other ---\x3e <--- while some other sequencers can use other options'},displayMode:{type:"stringEnum",model:l.types.enumeration("displayMode",["normal","compact","collapse"]),description:"Alternative display modes",defaultValue:"normal"},minSubfeatureWidth:{type:"number",description:"the minimum width in px for a pileup mismatch feature. use for increasing/decreasing mismatch marker widths when zoomed out, e.g. 0 or 1",defaultValue:1},maxHeight:{type:"integer",description:"the maximum height to be used in a pileup rendering",defaultValue:1200},maxClippingSize:{type:"integer",description:"the max clip size to be used in a pileup rendering",defaultValue:1e4},height:{type:"number",description:"the height of each feature in a pileup alignment",defaultValue:7,contextVariable:["feature"]},noSpacing:{type:"boolean",description:"remove spacing between features",defaultValue:!1},largeInsertionIndicatorScale:{type:"number",description:"scale at which to draw the large insertion indicators (bp/pixel)",defaultValue:10},mismatchAlpha:{type:"boolean",defaultValue:!1,description:"Fade low quality mismatches"}},{explicitlyTyped:!0});var E=r(7552),R=r(68446);function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},I.apply(null,arguments)}const N=(0,R.observer)((function(e){const{onMouseMove:t,blockKey:r,displayModel:n,width:a,height:o,regions:i,bpPerPx:s,sortedBy:l,colorBy:c,filterBy:d}=e,{selectedFeatureId:u,featureIdUnderMouse:p,contextMenuFeature:m}=n||{},[g,h]=(0,E.useState)(!1);(0,E.useEffect)((()=>{h(!0)}),[]);const b=i[0],w=(0,E.useRef)(null),[v,C]=(0,E.useState)(!1),[S,k]=(0,E.useState)(!1),T=u?n?.getFeatureByID(r,u):void 0,x=p||m?.id(),A=x?n?.getFeatureByID(r,x):void 0;function P(e,t=2){const[r,n,a,o]=e,[i,l]=(0,y.bpSpanPx)(r,a,b,s);return{left:i-t,top:Math.round(n)-t,width:l-i,height:Math.round(o-n)}}const M=T?P(T):void 0,R=A?P(A,0):void 0;function N(t,r){const n=e[`onFeature${t}`],a=e[`on${t}`];n&&p?n(r,p):a&&a(r,p)}const F=Math.ceil(a);return E.createElement("div",{ref:w,"data-testid":["pileup-overlay",l?.type,c?.type,c?.tag,d?.tagFilter?.tag].filter((e=>!!e)).join("-"),style:{position:"relative",width:F,height:o},onMouseDown:e=>{!function(e){C(!0),k(!1),N("MouseDown",e)}(e)},onMouseEnter:e=>{!function(e){N("MouseEnter",e)}(e)},onMouseOut:e=>{!function(e){N("MouseOut",e),N("MouseLeave",e)}(e)},onMouseOver:e=>{!function(e){N("MouseOver",e)}(e)},onMouseUp:e=>{!function(e){C(!1),N("MouseUp",e)}(e)},onMouseLeave:e=>{!function(e){N("MouseOut",e),N("MouseLeave",e)}(e)},onMouseMove:e=>{!function(e){if(!w.current)return;v&&k(!0);const o=w.current.getBoundingClientRect(),i=e.clientX-o.left,l=e.clientY-o.top,c=b.reversed?a-i:i,d=b.start+s*c;t?.(e,n?.getFeatureOverlapping(r,d,l))}(e)},onClick:e=>{!function(e){S||N("Click",e)}(e)},onContextMenu:e=>{!function(e){N("ContextMenu",e)}(e)},onFocus:()=>{},onBlur:()=>{}},E.createElement(f.PrerenderedCanvas,I({},e,{style:{position:"absolute",left:0,top:0}})),g&&R?E.createElement("div",{style:{position:"absolute",backgroundColor:"#0003",pointerEvents:"none",...R}}):null,g&&M?E.createElement("div",{style:{position:"absolute",border:"2px solid #00b8ff",boxSizing:"content-box",pointerEvents:"none",...M}}):null)}));function F(e){e.addRendererType((()=>new P({name:"PileupRenderer",displayName:"Pileup renderer",ReactComponent:N,configSchema:M,pluginManager:e})))}var L=r(56328),D=r(20529),B=r(42489),V=r(1622);function z(e){return e.getDisplayElements().filter((e=>"LinearAlignmentsDisplay"===e.subDisplay?.type)).filter((e=>e.subDisplay?.lowerPanel))}function O(e,t){return T()(e?(0,l.getSnapshot)(e):void 0,t?(0,l.getSnapshot)(t):void 0)}function H(e){const{PileupDisplay:t,SNPCoverageDisplay:r}=e;return t||(0,l.isAlive)(t)||r||(0,l.isAlive)(r)}const j=function(e,t){return l.types.compose("LinearAlignmentsDisplay",V.BaseDisplay,function(e,t){return l.types.model({PileupDisplay:l.types.maybe(l.types.union(...z(e).map((e=>e.stateModel)))),SNPCoverageDisplay:l.types.maybe(e.getDisplayType("LinearSNPCoverageDisplay").stateModel),snpCovHeight:45,type:l.types.literal("LinearAlignmentsDisplay"),configuration:(0,o.ConfigurationReference)(t),heightPreConfig:l.types.maybe(l.types.number),userFeatureScreenDensity:l.types.maybe(l.types.number),lowerPanelType:"LinearPileupDisplay"})}(e,t)).volatile((()=>({scrollTop:0}))).actions((e=>({setScrollTop(t){e.scrollTop=t},setSNPCoverageHeight(t){e.snpCovHeight=t}}))).views((e=>({get height(){return e.heightPreConfig??(0,o.getConf)(e,"height")},get featureIdUnderMouse(){return e.PileupDisplay.featureIdUnderMouse||e.SNPCoverageDisplay.featureIdUnderMouse}}))).views((e=>({get pileupConf(){return{...(0,o.getConf)(e,"pileupDisplay"),type:e.lowerPanelType,displayId:`${e.configuration.displayId}_${e.lowerPanelType}_xyz`}},getFeatureByID:(t,r)=>e.PileupDisplay.getFeatureByID(t,r),searchFeatureByID:t=>e.PileupDisplay.searchFeatureByID?.(t),get features(){return e.PileupDisplay.features},get DisplayBlurb(){return e.PileupDisplay?.DisplayBlurb},get sortedBy(){return e.PileupDisplay.sortedBy},get coverageConf(){return{...(0,o.getConf)(e,"snpCoverageDisplay"),displayId:`${e.configuration.displayId}_snpcoverage_xyz`}}}))).actions((e=>({setSNPCoverageDisplay(t){e.SNPCoverageDisplay={type:"LinearSNPCoverageDisplay",configuration:t,height:e.snpCovHeight}},setFeatureDensityStatsLimit(t){e.PileupDisplay.setFeatureDensityStatsLimit(t),e.SNPCoverageDisplay.setFeatureDensityStatsLimit(t)},setPileupDisplay(t){e.PileupDisplay={type:t.type||"LinearPileupDisplay",configuration:t}},setHeight:t=>(e.heightPreConfig=Math.max(t,20),e.heightPreConfig),setFilterBy(t){e.PileupDisplay.setFilterBy(t),e.SNPCoverageDisplay.setFilterBy(t)},setLowerPanelType(t){e.lowerPanelType=t},resizeHeight(t){const r=e.height;return this.setHeight(e.height+t)-r}}))).actions((e=>({afterAttach(){(0,l.addDisposer)(e,(0,B.autorun)((()=>{const{SNPCoverageDisplay:t,PileupDisplay:r,coverageConf:n,pileupConf:a}=e;t?T()(n,(0,l.getSnapshot)(t.configuration))||(t.setHeight(e.snpCovHeight),t.setConfig(e.coverageConf)):e.setSNPCoverageDisplay(n),r&&e.lowerPanelType===r.type?T()(a,(0,l.getSnapshot)(r.configuration))||r.setConfig(e.pileupConf):e.setPileupDisplay(a),function(e){const{PileupDisplay:t,SNPCoverageDisplay:r}=e;H(e)&&t.colorBy&&(O(t.colorBy,r.colorBy)||r.setColorBy((0,l.getSnapshot)(t.colorBy)))}(e),function(e){const{PileupDisplay:t,SNPCoverageDisplay:r}=e;H(e)&&t.filterBy&&(O(t.filterBy,r.filterBy)||r.setFilterBy((0,l.getSnapshot)(t.filterBy)))}(e)}))),(0,l.addDisposer)(e,(0,B.autorun)((()=>{e.setSNPCoverageHeight(e.SNPCoverageDisplay.height)}))),(0,l.addDisposer)(e,(0,B.autorun)((()=>{e.PileupDisplay.setHeight(e.height-e.SNPCoverageDisplay.height)})))},async renderSvg(t){const r=e.height-e.SNPCoverageDisplay.height;return await(0,B.when)((()=>!e.PileupDisplay.renderProps().notReady&&!e.SNPCoverageDisplay.renderProps().notReady)),E.createElement(E.Fragment,null,E.createElement("g",null,await e.SNPCoverageDisplay.renderSvg(t)),E.createElement("g",{transform:`translate(0 ${e.SNPCoverageDisplay.height})`},await e.PileupDisplay.renderSvg({...t,overrideHeight:r})))}}))).views((t=>{const{trackMenuItems:r}=t;return{trackMenuItems(){if(!t.PileupDisplay)return[];const n=z(e).map((e=>({type:"radio",label:e.displayName,checked:e.name===t.PileupDisplay.type,onClick:()=>{t.setLowerPanelType(e.name)}})));return[...r(),{type:"subMenu",label:"Pileup settings",subMenu:t.PileupDisplay.trackMenuItems()},{type:"subMenu",label:"SNPCoverage settings",subMenu:t.SNPCoverageDisplay.trackMenuItems()},{type:"subMenu",label:"Replace lower panel with...",subMenu:n}]}}})).preProcessSnapshot((e=>{if(!e)return e;const{height:t,...r}=e;return{heightPreConfig:t,...r}}))},W=(0,r(75785).n9)()({resizeHandle:{height:5,position:"absolute",zIndex:2}}),G=(0,R.observer)((function({model:e}){const{PileupDisplay:t,SNPCoverageDisplay:r}=e,{classes:n}=W();if(!r)return null;const a=r.height??100;return E.createElement("div",{"data-testid":`display-${(0,o.getConf)(e,"displayId")}`,style:{position:"relative"}},E.createElement("div",{"data-testid":"Blockset-snpcoverage"},E.createElement(r.RenderingComponent,{model:r})),E.createElement(f.ResizeHandle,{onDrag:e=>(r.setHeight(r.height+e),e),className:n.resizeHandle,style:{top:a-4}}),E.createElement("div",{"data-testid":"Blockset-pileup",style:{position:"absolute",top:a}},E.createElement(t.RenderingComponent,{model:t})))})),$=G;function q(e){e.addDisplayType((()=>{const t=(r=e,(0,o.ConfigurationSchema)("LinearAlignmentsDisplay",{pileupDisplay:r.getDisplayType("LinearPileupDisplay").configSchema,snpCoverageDisplay:r.getDisplayType("LinearSNPCoverageDisplay").configSchema,height:{type:"number",defaultValue:250}},{baseConfiguration:D.Ki,explicitlyTyped:!0}));var r;return new L.A({name:"LinearAlignmentsDisplay",displayName:"Alignments display (combination)",configSchema:t,stateModel:j(e,t),trackType:"AlignmentsTrack",viewType:"LinearGenomeView",ReactComponent:$})}))}var _=r(93100),U=r(20561);const J=(0,E.lazy)((()=>r.e(489).then(r.bind(r,80489)))),X=new Map([["snpcoverage","SNPCoverageRenderer"]]),Y=function(e,t){return l.types.compose("LinearSNPCoverageDisplay",(0,b._i)(e,t),l.types.model({type:l.types.literal("LinearSNPCoverageDisplay"),drawInterbaseCounts:l.types.maybe(l.types.boolean),drawIndicators:l.types.maybe(l.types.boolean),drawArcs:l.types.maybe(l.types.boolean),filterBy:l.types.optional(U.O2,{}),colorBy:l.types.maybe(l.types.model({type:l.types.string,tag:l.types.maybe(l.types.string)})),jexlFilters:l.types.optional(l.types.array(l.types.string),[])})).volatile((()=>({modificationTagMap:B.observable.map({}),modificationsReady:!1}))).actions((e=>({setConfig(t){e.configuration=t},setFilterBy(t){e.filterBy=(0,l.cast)(t)},setColorBy(t){e.colorBy=(0,l.cast)(t)},setJexlFilters(t){e.jexlFilters=(0,l.cast)(t)},updateModificationColorMap(t){t.forEach((t=>{e.modificationTagMap.has(t)||e.modificationTagMap.set(t,A.N2[t]||(0,A.XL)())}))}}))).views((e=>{const{renderProps:t}=e;return{get rendererConfig(){const t=(0,o.getConf)(e,["renderers",e.rendererTypeName])||{};return e.rendererType.configSchema.create({...t,drawInterbaseCounts:e.drawInterbaseCounts??t.drawInterbaseCounts,drawIndicators:e.drawIndicators??t.drawIndicators,drawArcs:e.drawArcs??t.drawArcs},(0,l.getEnv)(e))},get drawArcsSetting(){return e.drawArcs??(0,o.readConfObject)(this.rendererConfig,"drawArcs")},get drawInterbaseCountsSetting(){return e.drawInterbaseCounts??(0,o.readConfObject)(this.rendererConfig,"drawInterbaseCounts")},get drawIndicatorsSetting(){return e.drawIndicators??(0,o.readConfObject)(this.rendererConfig,"drawIndicators")},get autorunReady(){return(0,y.getContainingView)(e).initialized&&e.featureDensityStatsReady&&!e.regionTooLarge&&!e.error},get renderReady(){return!t().notReady&&e.modificationsReady},get ready(){return this.renderReady},renderProps(){const r=t(),{colorBy:n,filterBy:a,modificationTagMap:o}=e;return{...r,notReady:!this.ready,filters:e.filters,modificationTagMap:Object.fromEntries(o.toJSON()),colorBy:n?(0,l.getSnapshot)(n):void 0,filterBy:(0,l.getSnapshot)(a)}}}})).actions((e=>({setModificationsReady(t){e.modificationsReady=t},toggleDrawIndicators(){e.drawIndicators=!e.drawIndicatorsSetting},toggleDrawInterbaseCounts(){e.drawInterbaseCounts=!e.drawInterbaseCountsSetting},toggleDrawArcs(){e.drawArcs=!e.drawArcsSetting}}))).actions((e=>({afterAttach(){(0,A.vi)(e,(async()=>{if(e.setModificationsReady(!1),!e.autorunReady)return;const t=(0,y.getContainingView)(e),{staticBlocks:r}=t,{colorBy:n}=e;if("modifications"===n?.type){const t=(0,o.getConf)(e.parentTrack,"adapter"),n=await(0,U.Y8)({self:e,adapterConfig:t,blocks:r});(0,l.isAlive)(e)&&(e.updateModificationColorMap(n),e.setModificationsReady(!0))}else e.setModificationsReady(!0)}),{delay:1e3})}}))).views((e=>{const{trackMenuItems:t}=e;return{get TooltipComponent(){return J},get adapterConfig(){return{type:"SNPCoverageAdapter",subadapter:(0,o.getConf)(e.parentTrack,"adapter")}},get rendererTypeName(){return X.get("snpcoverage")},get needsScalebar(){return!0},contextMenuItems:()=>[],trackMenuItems:()=>[...t(),{label:"Draw insertion/clipping indicators",type:"checkbox",checked:e.drawIndicatorsSetting,onClick:()=>{e.toggleDrawIndicators()}},{label:"Draw insertion/clipping counts",type:"checkbox",checked:e.drawInterbaseCountsSetting,onClick:()=>{e.toggleDrawInterbaseCounts()}},{label:"Draw arcs",type:"checkbox",checked:e.drawArcsSetting,onClick:()=>{e.toggleDrawArcs()}}],get filters(){return new _.A({filters:e.jexlFilters})}}}))};function K(e){e.addDisplayType((()=>{const t=function(e){return(0,o.ConfigurationSchema)("LinearSNPCoverageDisplay",{autoscale:{type:"stringEnum",defaultValue:"local",model:l.types.enumeration("Autoscale type",["local"]),description:"performs local autoscaling (no other options for SNP Coverage available)"},minScore:{type:"number",defaultValue:Number.MIN_VALUE,description:"minimum value for the y-scale"},maxScore:{type:"number",description:"maximum value for the y-scale",defaultValue:Number.MAX_VALUE},scaleType:{type:"stringEnum",model:l.types.enumeration("Scale type",["linear","log"]),description:"The type of scale to use",defaultValue:"linear"},inverted:{type:"boolean",description:"draw upside down",defaultValue:!1},multiTicks:{type:"boolean",description:"Display multiple values for the ticks",defaultValue:!1},renderers:(0,o.ConfigurationSchema)("RenderersConfiguration",{SNPCoverageRenderer:e.getRendererType("SNPCoverageRenderer").configSchema})},{baseConfiguration:D.Ki,explicitlyTyped:!0})}(e);return new L.A({name:"LinearSNPCoverageDisplay",displayName:"SNPCoverage display",configSchema:t,stateModel:Y(e,t),trackType:"AlignmentsTrack",viewType:"LinearGenomeView",ReactComponent:b.r})}))}var Q=r(58921),Z=r(53794),ee=r(28669);const te=(0,E.lazy)((()=>r.e(2989).then(r.bind(r,12989)))),re=function(e){return l.types.compose("LinearReadArcsDisplay",Q.BaseDisplay,(0,D._e)(),(0,D.e6)(),l.types.model({type:l.types.literal("LinearReadArcsDisplay"),configuration:(0,o.ConfigurationReference)(e),filterBy:l.types.optional(U.O2,{}),lineWidth:l.types.maybe(l.types.number),jitter:l.types.maybe(l.types.number),colorBy:l.types.maybe(l.types.model({type:l.types.string,tag:l.types.maybe(l.types.string),extra:l.types.frozen()})),drawInter:!0,drawLongRange:!0})).volatile((()=>({loading:!1,chainData:void 0,lastDrawnOffsetPx:void 0,lastDrawnBpPerPx:0,ref:null}))).actions((e=>({setLastDrawnOffsetPx(t){e.lastDrawnOffsetPx=t},setLastDrawnBpPerPx(t){e.lastDrawnBpPerPx=t},setLoading(t){e.loading=t},reload(){e.error=void 0},setRef(t){e.ref=t},setColorScheme(t){e.colorBy=(0,l.cast)(t)},setChainData(t){e.chainData=t},setDrawInter(t){e.drawInter=t},setDrawLongRange(t){e.drawLongRange=t},setFilterBy(t){e.filterBy=(0,l.cast)(t)},setLineWidth(t){e.lineWidth=t},setJitter(t){e.jitter=t}}))).views((e=>({get drawn(){return void 0!==e.lastDrawnOffsetPx},get lineWidthSetting(){return e.lineWidth??(0,o.getConf)(e,"lineWidth")},get jitterVal(){return e.jitter??(0,o.getConf)(e,"jitter")}}))).views((e=>{const{trackMenuItems:t,renderProps:r}=e;return{renderProps:()=>({...r(),notReady:!e.chainData}),trackMenuItems:()=>[...t(),{label:"Filter by",icon:ee.A,onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[te,{model:e,handleClose:t}]))}},{label:"Line width",subMenu:[{label:"Thin",onClick:()=>{e.setLineWidth(1)}},{label:"Bold",onClick:()=>{e.setLineWidth(2)}},{label:"Extra bold",onClick:()=>{e.setLineWidth(5)}}]},{label:"Jitter x-positions",subMenu:[{type:"checkbox",checked:0===e.jitterVal,label:"None",onClick:()=>{e.setJitter(0)}},{type:"checkbox",checked:2===e.jitterVal,label:"Small",onClick:()=>{e.setJitter(2)}},{type:"checkbox",checked:10===e.jitterVal,label:"Large",onClick:()=>{e.setJitter(10)}}]},{label:"Draw inter-region vertical lines",type:"checkbox",checked:e.drawInter,onClick:()=>{e.setDrawInter(!e.drawInter)}},{label:"Draw long range connections",type:"checkbox",checked:e.drawLongRange,onClick:()=>{e.setDrawLongRange(!e.drawLongRange)}},{label:"Color scheme",icon:Z.A,subMenu:[{label:"Insert size ± 3σ and orientation",onClick:()=>{e.setColorScheme({type:"insertSizeAndOrientation"})}},{label:"Insert size ± 3σ",onClick:()=>{e.setColorScheme({type:"insertSize"})}},{label:"Orientation",onClick:()=>{e.setColorScheme({type:"orientation"})}},{label:"Insert size gradient",onClick:()=>{e.setColorScheme({type:"gradient"})}}]}]}})).views((e=>({async renderSvg(t){const{renderSvg:n}=await r.e(9028).then(r.bind(r,59028)),{drawFeats:a}=await r.e(3304).then(r.bind(r,63304));return n(e,t,a)}}))).actions((e=>({afterAttach(){(async()=>{try{const{doAfterAttach:t}=await r.e(9070).then(r.bind(r,9070)),{drawFeats:n}=await r.e(3304).then(r.bind(r,63304));t(e,n)}catch(t){console.error(t),e.setError(t)}})()}})))};function ne(e){e.addDisplayType((()=>{const t=function(e){return(0,o.ConfigurationSchema)("LinearReadArcsDisplay",{maxFeatureScreenDensity:{type:"number",description:"maximum features per pixel that is displayed in the view",defaultValue:5},lineWidth:{type:"number",description:"set arc line width",defaultValue:1},jitter:{type:"number",description:"jitters the x position so e.g. if many reads map to exact same x position, jittering makes it easy to see that there are many of them",defaultValue:0},colorScheme:{type:"stringEnum",model:l.types.enumeration("colorScheme",["strand","normal","insertSize","insertSizeAndOrientation","mappingQuality","tag"]),description:"color scheme to use",defaultValue:"normal"}},{baseConfiguration:(0,D.lw)(e),explicitlyTyped:!0})}(e);return new L.A({name:"LinearReadArcsDisplay",displayName:"Arc display",configSchema:t,stateModel:re(t),trackType:"AlignmentsTrack",viewType:"LinearGenomeView",subDisplay:{type:"LinearAlignmentsDisplay",lowerPanel:!0},ReactComponent:(0,E.lazy)((()=>r.e(2424).then(r.bind(r,52424))))})}))}const ae=(0,E.lazy)((()=>r.e(2989).then(r.bind(r,12989)))),oe=function(e){return l.types.compose("LinearReadCloudDisplay",Q.BaseDisplay,(0,D._e)(),(0,D.e6)(),l.types.model({type:l.types.literal("LinearReadCloudDisplay"),configuration:(0,o.ConfigurationReference)(e),filterBy:l.types.optional(U.O2,{}),colorBy:l.types.maybe(l.types.model({type:l.types.string,tag:l.types.maybe(l.types.string),extra:l.types.frozen()})),drawSingletons:!0})).volatile((()=>({loading:!1,chainData:void 0,lastDrawnOffsetPx:void 0,lastDrawnBpPerPx:0,ref:null}))).actions((e=>({setDrawSingletons(t){e.drawSingletons=t},setLastDrawnOffsetPx(t){e.lastDrawnOffsetPx=t},setLastDrawnBpPerPx(t){e.lastDrawnBpPerPx=t},setLoading(t){e.loading=t},reload(){e.error=void 0},setRef(t){e.ref=t},setColorScheme(t){e.colorBy=(0,l.cast)(t)},setChainData(t){e.chainData=t},setFilterBy(t){e.filterBy=(0,l.cast)(t)}}))).views((e=>({get drawn(){return void 0!==e.lastDrawnOffsetPx}}))).views((e=>{const{trackMenuItems:t,renderProps:n}=e;return{renderProps:()=>({...n(),notReady:!e.chainData}),trackMenuItems:()=>[...t(),{label:"Draw singletons",type:"checkbox",checked:e.drawSingletons,onClick:()=>{e.setDrawSingletons(!e.drawSingletons)}},{label:"Filter by",icon:ee.A,onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[ae,{model:e,handleClose:t}]))}},{label:"Color scheme",icon:Z.A,subMenu:[{label:"Insert size ± 3σ and orientation",onClick:()=>{e.setColorScheme({type:"insertSizeAndOrientation"})}},{label:"Insert size ± 3σ",onClick:()=>{e.setColorScheme({type:"insertSize"})}},{label:"Orientation",onClick:()=>{e.setColorScheme({type:"orientation"})}},{label:"Insert size gradient",onClick:()=>{e.setColorScheme({type:"gradient"})}}]}],async renderSvg(t){const{renderSvg:n}=await r.e(9028).then(r.bind(r,59028)),{drawFeats:a}=await r.e(6946).then(r.bind(r,26946));return n(e,t,a)}}})).actions((e=>({afterAttach(){(async()=>{try{const{doAfterAttach:t}=await r.e(9070).then(r.bind(r,9070)),{drawFeats:n}=await r.e(6946).then(r.bind(r,26946));t(e,n)}catch(t){console.error(t),e.setError(t)}})()}})))};function ie(e){e.addDisplayType((()=>{const t=function(e){return(0,o.ConfigurationSchema)("LinearReadCloudDisplay",{maxFeatureScreenDensity:{type:"number",description:"maximum features per pixel that is displayed in the view",defaultValue:5},featureHeight:{type:"number",defaultValue:7},colorScheme:{type:"stringEnum",model:l.types.enumeration("colorScheme",["strand","normal","insertSize","insertSizeAndOrientation","mappingQuality","tag"]),description:"color scheme to use",defaultValue:"normal"}},{baseConfiguration:(0,D.lw)(e),explicitlyTyped:!0})}(e);return new L.A({name:"LinearReadCloudDisplay",displayName:"Read cloud display",configSchema:t,stateModel:oe(t),trackType:"AlignmentsTrack",viewType:"LinearGenomeView",subDisplay:{type:"LinearAlignmentsDisplay",lowerPanel:!0},ReactComponent:(0,E.lazy)((()=>r.e(8408).then(r.bind(r,26027))))})}))}var se=r(58273);function le(e){e.addTrackType((()=>{const t=(r=e,(0,o.ConfigurationSchema)("AlignmentsTrack",{},{baseConfiguration:(0,Q.createBaseTrackConfig)(r)}));var r;const n=new se.A({name:"AlignmentsTrack",displayName:"Alignments track",configSchema:t,stateModel:(0,V.createBaseTrackModel)(e,"AlignmentsTrack",t)}),a=e.getDisplayType("LinearAlignmentsDisplay");return n.addDisplayType(a),n}))}var ce=r(67736);const de=(0,o.ConfigurationSchema)("AlignmentsFeatureWidget",{});var ue=r(9342);function pe(e){const t=(0,ue.n)(e);return l.types.compose(t,l.types.model("AlignmentsFeatureWidget",{type:l.types.literal("AlignmentsFeatureWidget")}))}function me(e){e.addWidgetType((()=>new ce.A({name:"AlignmentsFeatureWidget",heading:"Feature details",configSchema:de,stateModel:pe(e),ReactComponent:(0,E.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(246),r.e(8984),r.e(5132)]).then(r.bind(r,55132))))})))}var ge=r(82088),he=r(44728),fe=r(2406);class ye extends fe.A{async serializeArguments(e,t){const{rootModel:r}=this.pluginManager,n=r?.session?.assemblyManager;if(!n)throw new Error("no assembly manager available");const a=await(0,y.renameRegionsIfNeeded)(n,e);return super.serializeArguments(a,t)}}class be extends ye{name="PileupGetReducedFeatures";async execute(e,t){const r=await this.deserializeArguments(e,t),{adapterConfig:n,sessionId:a,regions:o}=r,i=(await(0,S.cK)(this.pluginManager,a,n)).dataAdapter,s=await(0,he._)(i.getFeaturesInMultipleRegions(o,r).pipe((0,ge.$)())),l=(0,y.dedupe)(s.map((e=>({id:e.id(),refName:e.get("refName"),name:e.get("name"),start:e.get("start"),strand:e.get("strand"),end:e.get("end"),flags:e.get("flags"),tlen:e.get("template_length"),pair_orientation:e.get("pair_orientation"),next_ref:e.get("next_ref"),next_pos:e.get("next_pos"),clipPos:e.get("clipPos"),SA:(0,A.bH)(e,"SA")}))),(e=>e.id)),c=l.filter((e=>2&e.flags&&!(256&e.flags)&&!(2048&e.flags))),d=c.length?function(e){const t=e.map((e=>Math.abs(e.tlen))),r=t.reduce(((e,t)=>e+t),0),n=t.map((e=>e*e)).reduce(((e,t)=>e+t),0),a=t.length,o=r/a,i=Math.sqrt((a*n-r*r)/(a*a));return{upper:o+4*i,lower:o-3*i,avg:o,sd:i}}(c):void 0,u=(0,y.groupBy)(l,(e=>e.name));return{chains:Object.values(u),stats:d,hasPaired:!!d,containsNoTransferables:!0}}}var we=r(80544);class ve extends ye{name="PileupGetVisibleModifications";async execute(e,t){const{adapterConfig:r,sessionId:n,regions:a}=await this.deserializeArguments(e,t),o=(await(0,S.cK)(this.pluginManager,n,r)).dataAdapter,i=await(0,he._)(o.getFeaturesInMultipleRegions(a).pipe((0,ge.$)())),s=new Set;return i.forEach((e=>{(0,we.getModificationTypes)((0,A.c$)(e,"MM","Mm")||"").forEach((e=>s.add(e)))})),[...s]}}class Ce extends ye{name="PileupGetGlobalValueForTag";async execute(e,t){const{adapterConfig:r,sessionId:n,regions:a,tag:o}=await this.deserializeArguments(e,t),i=(await(0,S.cK)(this.pluginManager,n,r)).dataAdapter.getFeaturesInMultipleRegions(a),s=await(0,he._)(i.pipe((0,ge.$)()));return[...new Set(s.map((e=>(0,A.bH)(e,o))).filter((e=>void 0!==e)).map((e=>`${e}`)))]}}function Se(e){e.addRpcMethod((()=>new Ce(e))),e.addRpcMethod((()=>new ve(e))),e.addRpcMethod((()=>new be(e)))}var ke=r(91468);function Te(e){e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="CramAdapter",o=(0,ke.getFileName)(t),i={type:a,cramLocation:t,craiLocation:r||(0,ke.makeIndex)(t,".crai")};return/\.cram$/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BamAdapter",o=(0,ke.getFileName)(t),i=r&&(0,ke.getFileName)(r),s={type:a,bamLocation:t,index:{location:r||(0,ke.makeIndex)(t,".bai"),indexType:(0,ke.makeIndexType)(i,"CSI","BAI")}};return/\.bam$/i.test(o)&&!n||n===a?s:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"BamAdapter"===t||"CramAdapter"===t?"AlignmentsTrack":e(t)))}const xe=function(e){return(0,o.ConfigurationSchema)("LinearPileupDisplay",{defaultRendering:{type:"stringEnum",model:l.types.enumeration("Rendering",["pileup"]),defaultValue:"pileup"},renderers:(0,o.ConfigurationSchema)("RenderersConfiguration",{PileupRenderer:e.getRendererType("PileupRenderer").configSchema}),maxFeatureScreenDensity:{type:"number",description:"maximum features per pixel that is displayed in the view",defaultValue:5},colorScheme:{type:"stringEnum",model:l.types.enumeration("colorScheme",["strand","normal","insertSize","insertSizeAndOrientation","mappingQuality","tag"]),description:"color scheme to use",defaultValue:"normal"}},{baseConfiguration:(0,D.lw)(e),explicitlyTyped:!0})};var Ae=r(1633),Pe=r(91049),Me=r(11008),Ee=r(39794),Re=r(31409),Ie=r.n(Re),Ne=r(90542),Fe=r(63670),Le=r(36715);const De=(0,R.observer)((function({model:e}){const{sortedBy:t}=e;return t?E.createElement("div",{"data-testid":`blurb-${t}`},E.createElement(Le.A,{color:"secondary",variant:"caption"},`Sorted by ${t.tag??t.type} at ${t.refName}:${t.pos}`)):null})),Be=De;var Ve=r(36917);const ze=(0,E.lazy)((()=>r.e(2989).then(r.bind(r,12989)))),Oe=(0,E.lazy)((()=>r.e(6043).then(r.bind(r,8424)))),He=(0,E.lazy)((()=>r.e(5369).then(r.bind(r,55369)))),je=(0,E.lazy)((()=>r.e(9589).then(r.bind(r,49589)))),We=new Map([["pileup","PileupRenderer"],["svg","SvgFeatureRenderer"]]);function Ge(e){return l.types.compose(D.Lr,l.types.model({configuration:(0,o.ConfigurationReference)(e),featureHeight:l.types.maybe(l.types.number),noSpacing:l.types.maybe(l.types.boolean),fadeLikelihood:l.types.maybe(l.types.boolean),trackMaxHeight:l.types.maybe(l.types.number),colorBy:Ve.Qg,filterBy:l.types.optional(U.O2,{}),jexlFilters:l.types.optional(l.types.array(l.types.string),[])})).volatile((()=>({colorTagMap:B.observable.map({}),featureUnderMouseVolatile:void 0,tagsReady:!1}))).views((e=>({get autorunReady(){return(0,y.getContainingView)(e).initialized&&e.featureDensityStatsReady&&!e.regionTooLarge}}))).actions((e=>({setTagsReady(t){e.tagsReady=t},setMaxHeight(t){e.trackMaxHeight=t},setFeatureHeight(t){e.featureHeight=t},setNoSpacing(t){e.noSpacing=t},setColorScheme(t){e.colorTagMap=B.observable.map({}),e.colorBy=(0,l.cast)(t),t.tag&&(e.tagsReady=!1)},updateColorTagMap(t){const r=["#BBCCEE","pink","#CCDDAA","#EEEEBB","#FFCCCC","lightblue","lightgreen","tan","#CCEEFF","lightsalmon"];t.forEach((t=>{if(!e.colorTagMap.has(t)){const n=[...e.colorTagMap.keys()].length;e.colorTagMap.set(t,r[n])}}))},setFeatureUnderMouse(t){e.featureUnderMouseVolatile=t},selectFeature(t){const r=(0,y.getSession)(e);if((0,y.isSessionModelWithWidgets)(r)){const n=r.addWidget("AlignmentsFeatureWidget","alignmentFeature",{featureData:t.toJSON(),view:(0,y.getContainingView)(e),track:(0,y.getContainingTrack)(e)});r.showWidget(n)}r.setSelection(t)},copyFeatureToClipboard(t){const{uniqueId:r,...n}=t.toJSON(),a=(0,y.getSession)(e);Ie()(JSON.stringify(n,null,4)),a.notify("Copied to clipboard","success")},setConfig(t){e.configuration=t},setFilterBy(t){e.filterBy=(0,l.cast)(t)},setJexlFilters(t){e.jexlFilters=(0,l.cast)(t)}}))).views((e=>({get rendererConfig(){const{featureHeight:t,noSpacing:r,trackMaxHeight:n,rendererTypeName:a}=e,i=(0,o.getConf)(e,["renderers",a])||{};return e.rendererType.configSchema.create({...i,...void 0!==t?{height:t}:{},...void 0!==r?{noSpacing:r}:{},...void 0!==n?{maxHeight:n}:{}},(0,y.getEnv)(e))}}))).views((e=>({get maxHeight(){return(0,o.readConfObject)(e.rendererConfig,"maxHeight")},get featureHeightSetting(){return(0,o.readConfObject)(e.rendererConfig,"height")},get featureUnderMouse(){return e.featureUnderMouseVolatile},renderReady:()=>e.tagsReady,get filters(){return new _.A({filters:e.jexlFilters})}}))).views((e=>{const{trackMenuItems:t,renderProps:r}=e;return{get rendererTypeName(){const t=(0,o.getConf)(e,"defaultRendering"),r=We.get(t);if(!r)throw new Error(`unknown alignments view name ${t}`);return r},contextMenuItems(){const t=e.contextMenuFeature;return t?[{label:"Open feature details",icon:Fe.A,onClick:()=>{e.clearFeatureSelection(),e.selectFeature(t)}},{label:"Copy info to clipboard",icon:Ne.PM,onClick:()=>{e.copyFeatureToClipboard(t)}}]:[]},get DisplayBlurb(){return Be},renderPropsPre(){const{colorTagMap:t,colorBy:n,filterBy:a,rpcDriverName:o}=e,i=r();return{...i,notReady:i.notReady||!e.renderReady(),rpcDriverName:o,displayModel:e,colorBy:n?(0,l.getSnapshot)(n):void 0,filterBy:JSON.parse(JSON.stringify(a)),filters:e.filters,colorTagMap:Object.fromEntries(t.toJSON()),config:e.rendererConfig,async onFeatureClick(t,r){const n=(0,y.getSession)(e),{rpcManager:a}=n;try{const t=r||e.featureIdUnderMouse;if(t){const r=(0,ke.getRpcSessionId)(e),{feature:n}=await a.call(r,"CoreGetFeatureDetails",{featureId:t,sessionId:r,layoutId:(0,y.getContainingView)(e).id,rendererType:"PileupRenderer"});n&&e.selectFeature(new y.SimpleFeature(n))}else e.clearFeatureSelection()}catch(e){console.error(e),n.notify(`${e}`)}},onClick(){e.clearFeatureSelection()},async onFeatureContextMenu(t,r){const n=(0,y.getSession)(e),{rpcManager:a}=n;try{const t=r||e.featureIdUnderMouse;if(t){const r=(0,ke.getRpcSessionId)(e),{feature:n}=await a.call(r,"CoreGetFeatureDetails",{featureId:t,sessionId:r,layoutId:(0,y.getContainingView)(e).id,rendererType:"PileupRenderer"});n&&e.setContextMenuFeature(new y.SimpleFeature(n))}else e.clearFeatureSelection()}catch(e){console.error(e),n.notify(`${e}`)}}}},colorSchemeSubMenuItems:()=>[{label:"Normal",onClick:()=>{e.setColorScheme({type:"normal"})}},{label:"Mapping quality",onClick:()=>{e.setColorScheme({type:"mappingQuality"})}},{label:"Strand",onClick:()=>{e.setColorScheme({type:"strand"})}},{label:"Per-base quality",onClick:()=>{e.setColorScheme({type:"perBaseQuality"})}},{label:"Per-base lettering",onClick:()=>{e.setColorScheme({type:"perBaseLettering"})}},{label:"First-of-pair strand",onClick:()=>{e.setColorScheme({type:"stranded"})}},{label:"Color by tag...",onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[Oe,{model:e,handleClose:t}]))}}],trackMenuItems:()=>[...t(),{label:"Set feature height...",priority:1,subMenu:[{label:"Normal",onClick:()=>{e.setFeatureHeight(7),e.setNoSpacing(!1)}},{label:"Compact",onClick:()=>{e.setFeatureHeight(2),e.setNoSpacing(!0)}},{label:"Manually set height",onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[He,{model:e,handleClose:t}]))}}]},{label:"Set max height...",priority:-1,onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[je,{model:e,handleClose:t}]))}},{label:"Filter by...",icon:ee.A,onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[ze,{model:e,handleClose:t}]))}}]}})).views((e=>({renderProps:()=>e.renderPropsPre()}))).actions((e=>({afterAttach(){(0,A.vi)(e,(async()=>{const t=(0,y.getContainingView)(e);if(!e.autorunReady)return;const{colorBy:r,tagsReady:n}=e,{staticBlocks:a}=t;if(r?.tag&&!n){const t=await(0,U.s_)({self:e,tag:r.tag,blocks:a});e.updateColorTagMap(t)}e.setTagsReady(!0)}),{delay:1e3}),(0,l.addDisposer)(e,(0,B.autorun)((async()=>{const t=(0,y.getSession)(e);try{const r=e.featureIdUnderMouse;if(e.featureUnderMouse?.id()!==r)if(r){const n=(0,ke.getRpcSessionId)(e),a=(0,y.getContainingView)(e),{feature:o}=await t.rpcManager.call(n,"CoreGetFeatureDetails",{featureId:r,sessionId:n,layoutId:a.id,rendererType:"PileupRenderer"});o&&e.featureIdUnderMouse===o.uniqueId&&e.setFeatureUnderMouse(new y.SimpleFeature(o))}else e.setFeatureUnderMouse(void 0)}catch(e){console.error(e),t.notifyError(`${e}`,e)}})))}})))}const $e=(0,E.lazy)((()=>r.e(2697).then(r.bind(r,32697)))),qe=(0,E.lazy)((()=>r.e(4806).then(r.bind(r,74806)))),_e=(0,E.lazy)((()=>r.e(1696).then(r.bind(r,1696)))),Ue=function(e){return l.types.compose("LinearPileupDisplay",Ge(e),l.types.model({type:l.types.literal("LinearPileupDisplay"),configuration:(0,o.ConfigurationReference)(e),showSoftClipping:!1,mismatchAlpha:l.types.maybe(l.types.boolean),sortedBy:l.types.maybe(l.types.model({type:l.types.string,pos:l.types.number,tag:l.types.maybe(l.types.string),refName:l.types.string,assemblyName:l.types.string}))})).volatile((()=>({sortReady:!1,currSortBpPerPx:0,modificationTagMap:B.observable.map({}),modificationsReady:!1}))).actions((e=>({setCurrSortBpPerPx(t){e.currSortBpPerPx=t},updateModificationColorMap(t){t.forEach((t=>{e.modificationTagMap.has(t)||e.modificationTagMap.set(t,A.N2[t]||(0,A.XL)())}))},setModificationsReady(t){e.modificationsReady=t},setSortReady(t){e.sortReady=t},clearSelected(){e.sortedBy=void 0},toggleSoftClipping(){e.showSoftClipping=!e.showSoftClipping},toggleMismatchAlpha(){e.mismatchAlpha=!e.mismatchAlpha},setSortedBy(t,r){const{centerLineInfo:n}=(0,y.getContainingView)(e);if(!n)return;const{refName:a,assemblyName:o,offset:i}=n,s=Math.round(i)+1;s<0||!a||(e.sortReady=!1,e.sortedBy={type:t,pos:s,refName:a,assemblyName:o,tag:r})},setFeatureHeight(t){e.sortReady=!1,e.featureHeight=t}}))).actions((e=>{const t=e.reload;return{reload(){e.clearSelected(),t()}}})).views((e=>({get rendererConfig(){const{featureHeight:t,noSpacing:r,trackMaxHeight:n,mismatchAlpha:a,rendererTypeName:i}=e,s=(0,o.getConf)(e,["renderers",i])||{};return e.rendererType.configSchema.create({...s,...void 0!==t?{height:t}:{},...void 0!==r?{noSpacing:r}:{},...void 0!==a?{mismatchAlpha:a}:{},...void 0!==n?{maxHeight:n}:{}},(0,y.getEnv)(e))}}))).views((e=>{const{renderReady:t}=e;return{get mismatchAlphaSetting(){return(0,o.readConfObject)(e.rendererConfig,"mismatchAlpha")},renderReady(){const r=(0,y.getContainingView)(e);return e.modificationsReady&&e.currSortBpPerPx===r.bpPerPx&&t()}}})).views((e=>{const{trackMenuItems:t,renderPropsPre:r,renderProps:n,colorSchemeSubMenuItems:a}=e;return{renderPropsPre(){const{sortedBy:t,showSoftClipping:n,modificationTagMap:a}=e;return{...r(),showSoftClip:n,sortedBy:t,modificationTagMap:Object.fromEntries(a.toJSON())}},renderProps(){const{sortReady:t}=e,r=n();return{...r,notReady:r.notReady||!t}},trackMenuItems:()=>[...t(),{label:"Sort by...",icon:Pe.A,disabled:e.showSoftClipping,subMenu:[...["Start location","Read strand","Base pair"].map((t=>({label:t,onClick:()=>{e.setSortedBy(t)}}))),{label:"Sort by tag...",onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[$e,{model:e,handleClose:t}]))}},{label:"Clear sort",onClick:()=>{e.clearSelected()}}]},{label:"Color by...",icon:Ee.A,subMenu:[{label:"Pair orientation",onClick:()=>{e.setColorScheme({type:"pairOrientation"})}},{label:"Modifications or methylation",onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[_e,{model:e,handleClose:t}]))}},{label:"Insert size",onClick:()=>{e.setColorScheme({type:"insertSize"})}},...a()]},{label:"Group by...",icon:Me.A,onClick:()=>{(0,y.getSession)(e).queueDialog((t=>[qe,{model:e,handleClose:t}]))}},{label:"Show soft clipping",icon:Ae.A,type:"checkbox",checked:e.showSoftClipping,onClick:()=>{e.toggleSoftClipping(),e.showSoftClipping&&e.clearSelected()}},{label:"Fade mismatches by quality",type:"checkbox",checked:e.mismatchAlphaSetting,onClick:()=>{e.toggleMismatchAlpha()}}]}})).actions((e=>({afterAttach(){(0,A.vi)(e,(async()=>{const t=(0,y.getContainingView)(e);e.autorunReady&&e.setCurrSortBpPerPx(t.bpPerPx)}),{delay:1e3}),(0,A.vi)(e,(async()=>{const{rpcManager:t}=(0,y.getSession)(e),r=(0,y.getContainingView)(e);if(!e.autorunReady)return;const{sortedBy:n,adapterConfig:a,rendererType:o,sortReady:i}=e,{bpPerPx:s}=r;if(n&&(!i||e.currSortBpPerPx===r.bpPerPx)){const{pos:i,refName:s,assemblyName:l}=n;await e.rendererType.renderInClient(t,{assemblyName:l,regions:[{start:i,end:i+1,refName:s,assemblyName:l}],adapterConfig:a,rendererType:o.name,sessionId:(0,ke.getRpcSessionId)(e),layoutId:r.id,timeout:1e6,...e.renderPropsPre()})}e.setCurrSortBpPerPx(s),e.setSortReady(!0)}),{delay:1e3}),(0,A.vi)(e,(async()=>{if(!e.autorunReady)return;const{parentTrack:t,colorBy:r}=e,{staticBlocks:n}=(0,y.getContainingView)(e);if("modifications"===r?.type){const r=(0,o.getConf)(t,["adapter"]),a=await(0,U.Y8)({self:e,adapterConfig:r,blocks:n});e.updateModificationColorMap(a)}e.setModificationsReady(!0)}))}})))};function Je(e){e.addDisplayType((()=>{const t=xe(e);return new L.A({name:"LinearPileupDisplay",displayName:"Pileup display",configSchema:t,stateModel:Ue(t),subDisplay:{type:"LinearAlignmentsDisplay",lowerPanel:!0},trackType:"AlignmentsTrack",viewType:"LinearGenomeView",ReactComponent:D.GQ})}))}class Xe extends n.A{name="AlignmentsPlugin";install(e){[d,s,Je,K,le,g,p,F,Se,v,ne,ie,q,me,Te].map((t=>{t(e)}))}}},36917:(e,t,r)=>{"use strict";r.d(t,{DW:()=>u,L9:()=>s,Qg:()=>p,pf:()=>o,sY:()=>c,w7:()=>i});var n=r(36422),a=r(86576);const o={color_fwd_strand_not_proper:"#ECC8C8",color_rev_strand_not_proper:"#BEBED8",color_fwd_strand:"#EC8B8B",color_rev_strand:"#8F8FD8",color_fwd_missing_mate:"#D11919",color_rev_missing_mate:"#1919D1",color_fwd_diff_chr:"#000",color_rev_diff_chr:"#969696",color_pair_lr:"#c8c8c8",color_pair_rr:"navy",color_pair_rl:"teal",color_pair_ll:"green",color_nostrand:"#c8c8c8",color_interchrom:"purple",color_longinsert:"red",color_shortinsert:"pink",color_unknown:"grey"},i={color_fwd_strand_not_proper:"#CA6767",color_rev_strand_not_proper:"#7272AA",color_fwd_strand:"#DC2A2A",color_rev_strand:"#4141BA",color_fwd_missing_mate:"#921111",color_rev_missing_mate:"#111192",color_fwd_diff_chr:"#000000",color_rev_diff_chr:"#696969",color_pair_lr:"#8C8C8C",color_pair_rr:"#00005A",color_pair_rl:"#005A5A",color_pair_ll:"#005A00",color_nostrand:"#8C8C8C",color_interchrom:"#5A005A",color_longinsert:"#B30000",color_shortinsert:"#FF3A5C",color_unknown:"grey"};function s(e,t,r){const n=e.refName===t.refName,a=Math.abs(e.tlen||0);return n&&a>(r?.upper||0)?[o.color_longinsert,i.color_longinsert]:n&&a<(r?.lower||0)?[o.color_shortinsert,i.color_shortinsert]:n?void 0:[o.color_interchrom,i.color_interchrom]}const l=[o.color_unknown,o.color_unknown];function c(e,t,r){return d(e)||s(e,t,r)||l}function d(e){const t=a.il.fr[e.pair_orientation||""],r=a.rr[t];return"LR"===t?void 0:[o[r],i[r]]}function u(e){return d(e)||l}const p=n.types.maybe(n.types.model({type:n.types.string,tag:n.types.maybe(n.types.string),extra:n.types.frozen()}))},20561:(e,t,r)=>{"use strict";r.d(t,{O2:()=>l,Y8:()=>s,s_:()=>i});var n=r(36422),a=r(99546),o=r(91468);async function i({self:e,tag:t,blocks:r,opts:n}){const{rpcManager:i}=(0,a.getSession)(e),{adapterConfig:s}=e,l=(0,o.getRpcSessionId)(e);return await i.call((0,o.getRpcSessionId)(e),"PileupGetGlobalValueForTag",{adapterConfig:s,tag:t,sessionId:l,regions:r.contentBlocks,...n})}async function s({self:e,adapterConfig:t,blocks:r,opts:n}){const{rpcManager:i}=(0,a.getSession)(e),s=(0,o.getRpcSessionId)(e);return await i.call(s,"PileupGetVisibleModifications",{adapterConfig:t,sessionId:s,regions:r.contentBlocks,...n})}const l=n.types.model({flagInclude:n.types.optional(n.types.number,0),flagExclude:n.types.optional(n.types.number,1540),readName:n.types.maybe(n.types.string),tagFilter:n.types.maybe(n.types.model({tag:n.types.string,value:n.types.maybe(n.types.string)}))})},86576:(e,t,r)=>{"use strict";r.d(t,{Iw:()=>u,N2:()=>m,XL:()=>h,bH:()=>s,c$:()=>l,il:()=>c,k_:()=>p,rr:()=>d,vi:()=>g});var n=r(82088),a=r(44728),o=r(36422),i=r(42489);function s(e,t){const r=e.get("tags");return void 0!==r?r[t]:e.get(t)}function l(e,t,r){return s(e,t)??s(e,r)}const c={fr:{F1R2:"LR",F2R1:"LR",F1F2:"LL",F2F1:"LL",R1R2:"RR",R2R1:"RR",R1F2:"RL",R2F1:"RL"},rf:{R1F2:"LR",R2F1:"LR",R1R2:"LL",R2R1:"LL",F1F2:"RR",F2F1:"RR",F1R2:"RL",F2R1:"RL"},ff:{F2F1:"LR",R1R2:"LR",F2R1:"LL",R1F2:"LL",R2F1:"RR",F1R2:"RR",R2R1:"RL",F1F2:"RL"}},d={LR:"color_pair_lr",LL:"color_pair_ll",RR:"color_pair_rr",RL:"color_pair_rl"};async function u(e,t){const{start:r,end:o,originalRefName:i,refName:s}=e,l=await(0,a._)(t.getFeatures({...e,refName:i||s,end:o+1,start:Math.max(0,r-1)}).pipe((0,n.$)()));return l[0]?.get("seq")}function p(e){return"methylation"===e}const m={m:"rgb(255,0,0)",h:"rgb(11, 132, 165)",o:"rgb(111, 78, 129)",f:"rgb(246, 200, 95)",c:"rgb(157, 216, 102)",g:"rgb(255, 160, 86)",e:"rgb(141, 221, 208)",b:"rgb(202, 71, 47)"};function g(e,t,r){(0,o.addDisposer)(e,(0,i.autorun)((async()=>{try{await t()}catch(t){(0,o.isAlive)(e)&&e.setError(t)}}),r))}function h(){return`hsl(${200*Math.random()}, 50%, 50%)`}},49473:(e,t,r)=>{"use strict";r.d(t,{E6:()=>d,Ec:()=>c,Tp:()=>l,eW:()=>s,y$:()=>u});var n=r(7552),a=r(99546);const[,o,,i]=[0,1,2,3];function s(e,t,r,n){return n?n(t,r):e[r].trackRefs[t]?.getBoundingClientRect().top||0}function l(e,t,r){return(e.bpToPx({refName:t,coord:r})?.offsetPx||0)-e.offsetPx}function c(e,t,r,n,l,c){const d=n[t].displays[0],u=d.height;let p=0;const{SNPCoverageDisplay:m}=d;m&&(p=m.height);const g=c?0:d.scrollTop;return(0,a.clamp)(l[o]-g+((h=l)[i]-h[o])/2+p,0,u)+s(r,e,t,c)+d.scrollTop;var h}const d=e=>{const[,t]=(0,n.useState)();(0,n.useEffect)((()=>{t(e)}),[e])};function u(e,t=[],r=[],...n){const a=new Set(r.map((t=>e(t)))),o=t.filter((t=>a.has(e(t))));return 0===n.length?o:u(e,o,...n)}},14349:(e,t,r)=>{"use strict";r.d(t,{DO:()=>E,dg:()=>V,kO:()=>B,Ay:()=>z});var n=r(99546),a=r(12678),o=r(7552),i=r(63589),s=r(36422),l=r(8832),c=r(42489),d=r(45465),u=r(68584),p=r(1622),m=r(90542),g=r(29417),h=r(64502);function f(e,t,r,n,a){const o=Math.abs(e-r);if(o>n)return;o===n&&a.push([t,e]);const i=Math.sqrt(n*n-o*o);a.push([t-i,e],[t+i,e])}function y(e,t,r,n,a){const o=Math.abs(e-t);if(o>n)return;o===n&&a.push([e,r]);const i=Math.sqrt(n*n-o*o);a.push([e,r-i],[e,r+i])}function b(e,t){const r=Math.sqrt(e*e+t*t);if(0===r)return[0,0];const n=function(e,t){let r=(Math.atan(t/e)+2*Math.PI)%(2*Math.PI);return e<0&&(t<=0?r+=Math.PI:r-=Math.PI),r}(e,t);return[r,n]}const w=2*Math.PI;class v{constructor(e,t,r,a){this.region=t,this.offsetRadians=r,this.radianWidth=a;const{bpPerRadian:o}=e;this.key="regions"in t?JSON.stringify(t.regions):(0,n.assembleLocString)(t),this.bpPerRadian=o,this.flipped=!1,this.startRadians=r,this.endRadians=t.widthBp/this.bpPerRadian+r,Object.freeze(this)}bpToXY(e,t){let r;r=this.region.elided?this.region.widthBp/2:this.flipped?this.region.end-e:e-this.region.start;const a=r/this.bpPerRadian+this.offsetRadians;return(0,n.polarToCartesian)(t,a)}toJSON(){return Object.fromEntries(Object.entries(this))}}const C=(0,o.lazy)((()=>r.e(5243).then(r.bind(r,15243)))),S=function(e){return s.types.compose("CircularView",p.BaseViewModel,s.types.model({type:s.types.literal("CircularView"),offsetRadians:-Math.PI/2,bpPerPx:200,tracks:s.types.array(e.pluggableMstType("track","stateModel")),hideVerticalResizeHandle:!1,hideTrackSelectorButton:!1,lockedFitToWindow:!0,disableImportForm:!1,height:s.types.optional(s.types.refinement("trackHeight",s.types.number,(e=>e>=40)),400),displayedRegions:s.types.array(l.Region),scrollX:0,scrollY:0,minimumRadiusPx:25,spacingPx:10,paddingPx:80,lockedPaddingPx:100,minVisibleWidth:6,minimumBlockWidth:20,trackSelectorType:"hierarchical"})).volatile((()=>({volatileWidth:void 0,error:void 0}))).views((e=>({get width(){if(void 0===e.volatileWidth)throw new Error("wait for view to be initialized first before accessing width");return e.volatileWidth},get visibleSection(){const{scrollX:t,scrollY:r,width:n,height:a}=e;return function(e,t,r){let[n,a,o,i]=e;const[s,l]=t;if(n-=s,a-=s,o-=l,i-=l,n<0&&a>0&&o<0&&i>0){const e=[[n,o],[a,o],[n,i],[a,i]];let t=Number.NEGATIVE_INFINITY;for(const[r,n]of e){const e=Math.sqrt(r*r+n*n);e>t&&(t=e)}return{rho:[0,Math.min(r,t)],theta:[0,2*Math.PI]}}const c=[[n,o],[a,o],[n,i],[a,i]];y(n,0,0,r,c),y(a,0,0,r,c),f(o,0,0,r,c),f(i,0,0,r,c),-n<r&&c.push([n,0]),a<r&&c.push([a,0]),-o<r&&c.push([0,o]),i<r&&c.push([0,i]);const d=n>=0?-1:1;let u=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,m=Number.POSITIVE_INFINITY,g=Number.NEGATIVE_INFINITY;for(const[e,t]of c)if(e>=n&&e<=a&&t>=o&&t<=i){const[n,a]=b(e*d,t*d);n<=r+.001&&(a<m&&n>1e-4&&(m=a),a>g&&n>1e-4&&(g=a),n<u&&(u=n),n>p&&(p=n))}return-1===d&&(m+=Math.PI,g+=Math.PI),m>2*Math.PI&&g>2*Math.PI&&(m-=2*Math.PI,g-=2*Math.PI),{rho:[u,Math.min(r,p)],theta:[m,g]}}([t,t+n,r,r+a],this.centerXY,this.radiusPx)},get circumferencePx(){let t=0;for(const e of this.elidedRegions)t+=e.widthBp;return t/e.bpPerPx+e.spacingPx*this.elidedRegions.length},get radiusPx(){return this.circumferencePx/(2*Math.PI)},get bpPerRadian(){return e.bpPerPx*this.radiusPx},get pxPerRadian(){return this.radiusPx},get centerXY(){return[this.radiusPx+e.paddingPx,this.radiusPx+e.paddingPx]},get totalBp(){let t=0;for(const r of e.displayedRegions)t+=r.end-r.start;return t},get maximumRadiusPx(){return e.lockedFitToWindow?Math.min(e.width,e.height)/2-e.lockedPaddingPx:1e6},get maxBpPerPx(){const t=2*Math.PI*e.minimumRadiusPx;return this.totalBp/t},get minBpPerPx(){const e=2*Math.PI*this.maximumRadiusPx;return(0,n.clamp)(this.totalBp/e,1e-10,this.maxBpPerPx)},get atMaxBpPerPx(){return e.bpPerPx>=this.maxBpPerPx},get atMinBpPerPx(){return e.bpPerPx<=this.minBpPerPx},get tooSmallToLock(){return this.minBpPerPx<=1e-10},get figureDimensions(){return[2*this.radiusPx+2*e.paddingPx,2*this.radiusPx+2*e.paddingPx]},get figureWidth(){return this.figureDimensions[0]},get figureHeight(){return this.figureDimensions[1]},get elidedRegions(){const t=[];e.displayedRegions.forEach((r=>{const n=r.end-r.start;if(n/e.bpPerPx<e.minVisibleWidth){const e=t.at(-1);e?.elided?(e.regions.push({...r}),e.widthBp+=n):t.push({elided:!0,widthBp:n,regions:[{...r}]})}else t.push({...r,widthBp:n,elided:!1})}));for(let e=0;e<t.length;e+=1){const r=t[e];r.elided&&1===r.regions.length&&(t[e]={...r,...r.regions[0],elided:!1})}return t},get assemblyNames(){const t=[];return e.displayedRegions.forEach((e=>{t.includes(e.assemblyName)||t.push(e.assemblyName)})),t},get initialized(){const{assemblyManager:t}=(0,n.getSession)(e);return void 0!==e.volatileWidth&&this.assemblyNames.every((e=>t.get(e)?.initialized))}}))).views((e=>({get staticSlices(){return function(e){const t=[];let r=0;const{bpPerRadian:n,spacingPx:a,pxPerRadian:o}=e;for(const i of e.elidedRegions){const s=i.widthBp/n+a/o;t.push(new v(e,i,r,s)),r+=s}return t}(e)}}))).views((e=>({get visibleStaticSlices(){return e.staticSlices.filter((t=>function(e,t){const{theta:[r,n]}=e.visibleSection;return a=t.offsetRadians+e.offsetRadians,i=r,s=n-r,!((o=t.radianWidth)<=0||s<=0)&&(o+1e-4>=w||s+1e-4>=w||(a=(a%w+w)%w+w)<(i=(i%w+w)%w+w)+s&&a+o>i||a<(i-=w)+s&&a+o>i||a<(i+=w+w)+s&&a+o>i);var a,o,i,s}(e,t)))}}))).actions((t=>({setWidth:e=>(t.volatileWidth=Math.max(e,100),t.volatileWidth),setHeight:e=>(t.height=Math.max(e,40),t.height),resizeHeight(e){const r=t.height,n=this.setHeight(t.height+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},resizeWidth(e){const r=t.width,n=this.setWidth(t.width+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},rotateClockwiseButton(){this.rotateClockwise(Math.PI/6)},rotateCounterClockwiseButton(){this.rotateCounterClockwise(Math.PI/6)},rotateClockwise(e=.17){t.offsetRadians+=e},rotateCounterClockwise(e=.17){t.offsetRadians-=e},zoomInButton(){this.setBpPerPx(t.bpPerPx/1.4)},zoomOutButton(){this.setBpPerPx(1.4*t.bpPerPx)},setBpPerPx(e){t.bpPerPx=(0,n.clamp)(e,t.minBpPerPx,t.maxBpPerPx)},setModelViewWhenAdjust(e){t.lockedFitToWindow&&e&&this.setBpPerPx(t.minBpPerPx)},setDisplayedRegions(e){const r=0===t.displayedRegions.length;t.displayedRegions=(0,s.cast)(e),r?this.setBpPerPx(t.minBpPerPx):this.setBpPerPx(t.bpPerPx)},activateTrackSelector(){if("hierarchical"===t.trackSelectorType){const e=(0,n.getSession)(t);if((0,n.isSessionModelWithWidgets)(e)){const r=e.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:t});return e.showWidget(r),r}}throw new Error(`invalid track selector type ${t.trackSelectorType}`)},toggleTrack(e){return!this.hideTrack(e)&&(this.showTrack(e),!0)},setError(e){t.error=e},showTrack(r,n={}){const a=e.pluggableConfigSchemaType("track"),o=(0,s.resolveIdentifier)(a,(0,s.getRoot)(t),r),i=e.getTrackType(o.type);if(!i)throw new Error(`unknown track type ${o.type}`);const l=e.getViewType(t.type),c=new Set(l.displayTypes.map((e=>e.name))),d=o.displays.find((e=>c.has(e.type))),u=i.stateModel.create({...n,type:o.type,configuration:o,displays:[{type:d.type,configuration:d}]});t.tracks.push(u)},addTrackConf(r,n={}){const{type:a}=r,o=(0,u.readConfObject)(r,"name"),i=e.getTrackType(a);if(!i)throw new Error(`unknown track type ${a}`);const s=e.getViewType(t.type),l=new Set(s.displayTypes.map((e=>e.name))),c=r.displays.find((e=>l.has(e.type)));t.tracks.push(i.stateModel.create({...n,name:o,type:a,configuration:r,displays:[{type:c.type,configuration:c}]}))},hideTrack(r){const n=e.pluggableConfigSchemaType("track"),a=(0,s.resolveIdentifier)(n,(0,s.getRoot)(t),r),o=t.tracks.filter((e=>e.configuration===a));return(0,c.transaction)((()=>{o.forEach((e=>t.tracks.remove(e)))})),o.length},toggleFitToWindowLock(){return t.lockedFitToWindow=!t.lockedFitToWindow,this.setModelViewWhenAdjust(t.atMinBpPerPx),t.lockedFitToWindow},async exportSvg(e={}){const{renderToSvg:n}=await r.e(311).then(r.bind(r,60311)),a=await n(t,e),o=new Blob([a],{type:"image/svg+xml"});(0,d.saveAs)(o,e.filename||"image.svg")}}))).views((e=>({menuItems:()=>[{label:"Return to import form",onClick:()=>{e.setDisplayedRegions([])},icon:g.A},{label:"Export SVG",icon:h.A,onClick:()=>{(0,n.getSession)(e).queueDialog((t=>[C,{model:e,handleClose:t}]))}},{label:"Open track selector",onClick:e.activateTrackSelector,icon:m.xU}]})))};var k=r(98450),T=r(68446);const x=(0,r(75785).n9)()((e=>{const{primary:t,secondary:r,tertiary:n,quaternary:a}=e.palette;return{path:{strokeDasharray:187,strokeDashoffset:50,animation:"$dash 1.4s ease-in-out infinite, $colors 5.6s ease-in-out infinite"},"@keyframes colors":{"0%":{stroke:t.light},"25%":{stroke:r.light},"50%":{stroke:n.light},"75%":{stroke:a.light},"100%":{stroke:t.light}},"@keyframes dash":{"0%":{strokeDashoffset:2},"50%":{strokeDashoffset:.5,transform:"rotate(135deg)"},"100%":{strokeDashoffset:2,transform:"rotate(720deg)"}}}})),A=(0,T.observer)((function({model:{renderProps:{radius:e}}}){const{classes:t}=x(),[r,n]=(0,o.useState)(!1);return(0,o.useEffect)((()=>{const e=setTimeout((()=>{n(!0)}),400);return()=>{clearTimeout(e)}})),r?o.createElement("g",null,o.createElement("defs",null,o.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},o.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,255,255,0.5)",strokeWidth:10}}))),o.createElement("circle",{cx:"0",cy:"0",r:e,fill:"#f1f1f1"}),o.createElement("circle",{cx:"0",cy:"0",r:e,fill:"url(#diagonalHatch)"}),o.createElement("text",{x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},"Loading…"),o.createElement("circle",{className:t.path,fill:"none",strokeWidth:"4",strokeLinecap:"round",cx:"0",cy:"0",r:"60"})):null})),P=(0,T.observer)((function({model:e}){const{renderProps:{radius:t},error:r}=e;return o.createElement("g",null,o.createElement("defs",null,o.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},o.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,0,0,0.5)",strokeWidth:10}}))),o.createElement("circle",{cx:"0",cy:"0",r:t,fill:"#ffb4b4"}),o.createElement("circle",{cx:"0",cy:"0",r:t,fill:"url(#diagonalHatch)"}),o.createElement("text",{x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},String(r)))})),M=P,E=(0,T.observer)((function({display:e}){return e.error?o.createElement(M,{model:e}):e.filled?e.reactElement:o.createElement(A,{model:e})}));var R=r(33039),I=r.n(R),N=r(94318),F=r(91468);function L(e){const t=(0,n.getContainingView)(e),{rendererType:r}=e,{rpcManager:a}=(0,n.getSession)(t);return{rendererType:r,rpcManager:a,renderProps:e.renderProps(),renderArgs:{assemblyName:t.displayedRegions[0].assemblyName,adapterConfig:I()(e.adapterConfig),rendererType:r.name,regions:I()(t.displayedRegions),blockDefinitions:e.blockDefinitions,sessionId:(0,F.getRpcSessionId)(e),timeout:1e6}}}async function D(e,t,r){if(!e)throw new Error("cannot render with no props");const{rendererType:n,rpcManager:a,cannotBeRenderedReason:o,renderArgs:i,renderProps:s,exportSVG:l}=e;if(o)return{message:o};if(!s.radius||!i.regions?.length)return{message:"Skipping render"};if(!r.isCompatibleWithRenderer(n))throw new Error(`renderer ${n.name} is not compatible with this display type`);const{html:c,...d}=await n.renderInClient(a,{...i,...s,exportSVG:l});return{html:c,data:d,reactElement:d.reactElement,renderingComponent:n.ReactComponent}}const B=(0,u.ConfigurationSchema)("BaseChordDisplay",{onChordClick:{type:"boolean",description:"callback that should be run when a chord in the track is clicked",defaultValue:!1,contextVariable:["feature","track","pluginManager"]}},{explicitIdentifier:"displayId"}),V=s.types.compose("BaseChordDisplay",p.BaseDisplay,s.types.model({bezierRadiusRatio:.1,assemblyName:s.types.maybe(s.types.string),configuration:(0,u.ConfigurationReference)(B)})).volatile((()=>({filled:!1,reactElement:void 0,data:void 0,html:void 0,message:"",renderingComponent:void 0,refNameMap:void 0}))).actions((e=>{const{pluginManager:t}=(0,n.getEnv)(e),r=e;return{onChordClick(n){(0,u.getConf)(e,"onChordClick",{feature:n,track:r,pluginManager:t})}}})).views((e=>({get blockDefinitions(){const t=(0,n.getContainingView)(e).staticSlices;if(!e.refNameMap)return t;const r=I()(t);return r.forEach((t=>{(t.region.elided?t.region.regions:[t.region]).forEach((t=>{const r=e.refNameMap?.[t.refName];r&&t.refName!==r&&(t.refName=r)}))})),r},renderProps(){const t=(0,n.getContainingView)(e);return{...(0,F.getParentRenderProps)(e),rpcDriverName:e.rpcDriverName,bezierRadius:t.radiusPx*e.bezierRadiusRatio,radius:t.radiusPx,blockDefinitions:this.blockDefinitions,onChordClick:e.onChordClick}},get rendererType(){return(0,n.getEnv)(e).pluginManager.getRendererType(e.rendererTypeName)},isCompatibleWithRenderer:e=>!!(e instanceof N.A),get selectedFeatureId(){if(!(0,s.isAlive)(e))return;const t=(0,n.getSession)(e),{selection:r}=t;return(0,n.isFeature)(r)?r.id():void 0}}))).actions((e=>({renderStarted(){e.filled=!1,e.message="",e.reactElement=void 0,e.data=void 0,e.html=void 0,e.error=void 0,e.renderingComponent=void 0},renderSuccess({message:t,data:r,reactElement:n,html:a,renderingComponent:o}){t?(e.filled=!1,e.message=t,e.reactElement=void 0,e.data=void 0,e.html=void 0,e.error=void 0,e.renderingComponent=void 0):(e.filled=!0,e.message="",e.reactElement=n,e.data=r,e.html=a,e.error=void 0,e.renderingComponent=o)},renderError(t){console.error(t),e.filled=!1,e.message="",e.reactElement=void 0,e.html=void 0,e.data=void 0,e.error=t,e.renderingComponent=void 0},setRefNameMap(t){e.refNameMap=t}}))).actions((e=>({afterAttach(){(0,n.makeAbortableReaction)(e,L,D,{name:`${e.type} ${e.id} rendering`,fireImmediately:!0},e.renderStarted,e.renderSuccess,e.renderError),(0,n.makeAbortableReaction)(e,(()=>({assemblyNames:(0,F.getTrackAssemblyNames)(e.parentTrack),adapter:(0,u.getConf)((0,s.getParent)(e,2),"adapter"),assemblyManager:(0,n.getSession)(e).assemblyManager})),(async({assemblyNames:t,adapter:r,assemblyManager:n},a)=>n.getRefNameMapForAdapter(r,t[0],{signal:a,sessionId:(0,F.getRpcSessionId)(e)})),{name:`${e.type} ${e.id} getting refNames`,fireImmediately:!0},(()=>{}),(t=>{e.setRefNameMap(t)}),(t=>{console.error(t),e.setError(t)}))}}))).views((e=>({async renderSvg(t){const r=L(e),a=await D({...r,exportSVG:t,theme:t.theme||r.renderProps.theme},0,e);return o.createElement(n.ReactRendering,{rendering:a})}})));class z extends a.A{name="CircularViewPlugin";install(e){!function(e){e.addViewType((()=>new i.A({ReactComponent:(0,o.lazy)((()=>r.e(6205).then(r.bind(r,66205)))),stateModel:S(e),name:"CircularView",displayName:"Circular view"})))}(e),function(e){e.addToExtensionPoint("LaunchView-CircularView",(async({session:e,assembly:t,tracks:r=[]})=>{const{assemblyManager:n}=e,a=e.addView("CircularView",{});if(await(0,c.when)((()=>a.initialized)),!t)throw new Error("No assembly provided when launching circular genome view");const o=await n.waitForAssembly(t);if(!o)throw new Error(`Assembly "${t}" not found when launching circular genome view`);a.setDisplayedRegions(o.regions||[]),r.forEach((e=>{a.showTrack(e)}))}))}(e)}configure(e){(0,n.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Circular view",icon:k.A,onClick:e=>{e.addView("CircularView",{})}})}}},64248:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),a=r(17125),o=r(1343),i=r(75785),s=r(68446);const l='Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace',c=(0,i.n9)()((e=>({error:{color:"red",fontSize:"0.8em"},callbackEditor:{fontFamily:l,fontSize:"12px",background:e.palette.background.default,width:800,marginTop:"16px",border:"1px solid rgba(0,0,0,0.42)"},callbackContainer:{width:"100%",overflowX:"auto"},textAreaFont:{fontFamily:l}}))),d=(0,s.observer)((function({slot:e}){const{classes:t}=c(),[r,i]=(0,n.useState)(JSON.stringify(e.value,null,2)),[s,l]=(0,n.useState)();return(0,n.useEffect)((()=>{try{l(void 0),e.set(JSON.parse(r))}catch(e){console.error({e}),l(e)}}),[r,e]),n.createElement(n.Fragment,null,s?n.createElement("p",{className:t.error},`${s}`):null,n.createElement("div",{className:t.callbackContainer},n.createElement(a.A,{shrink:!0,htmlFor:"json-editor"},e.name),n.createElement(o.A,{id:"json-editor",className:t.callbackEditor,value:r,helperText:e.description,multiline:!0,onChange:e=>{i(e.target.value)},style:{background:s?"#fdd":void 0},InputProps:{classes:{input:t.textAreaFont}}})))}))},59099:(e,t,r)=>{"use strict";r.d(t,{SS:()=>b,Ay:()=>w});var n=r(7552),a=r(12678),o=r(58921),i=r(68584);const s=(0,i.ConfigurationSchema)("FromConfigAdapter",{features:{type:"frozen",defaultValue:[]}},{explicitlyTyped:!0,implicitIdentifier:"adapterId"}),l=(0,i.ConfigurationSchema)("FromConfigRegionsAdapter",{features:{type:"frozen",defaultValue:[]}},{explicitlyTyped:!0,implicitIdentifier:"adapterId"}),c=(0,i.ConfigurationSchema)("FromConfigSequenceAdapter",{features:{type:"frozen",defaultValue:[]}},{explicitlyTyped:!0,implicitIdentifier:"adapterId"}),d=(0,i.ConfigurationSchema)("RefNameAliasAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my/aliases.txt",locationType:"UriLocation"}},refNameColumn:{type:"number",defaultValue:0}},{explicitlyTyped:!0});var u=r(36422),p=r(8832);function m(e){return u.types.model("ConfigurationEditorWidget",{id:p.ElementId,type:u.types.literal("ConfigurationEditorWidget"),target:u.types.safeReference(e.pluggableConfigSchemaType("track"))}).actions((e=>({setTarget(t){e.target=t}})))}const g=(0,r(68446).observer)((function({model:e}){if(e?.target){if(e.target.type)return`${e.target.type} settings`;if((0,u.isStateTreeNode)(e.target)){const t=(0,u.getType)(e.target);if(t.name)return`${t.name.replace("ConfigurationSchema","")} settings`}}return n.createElement(n.Fragment,null,"Settings")})),h=(0,i.ConfigurationSchema)("ConfigurationEditorWidget",{}),f=(0,n.lazy)((()=>Promise.all([r.e(3011),r.e(3162),r.e(1537),r.e(6395),r.e(3614)]).then(r.bind(r,13614)))),y=(0,i.ConfigurationSchema)("NcbiSequenceReportAliasAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my/sequence_report.tsv",locationType:"UriLocation"}},useUcscNameOverride:{type:"boolean",defaultValue:!0,description:"forces usage of the UCSC names over the NCBI style names from a FASTA"}},{explicitlyTyped:!0});r(64248);const b=(0,n.lazy)((()=>Promise.all([r.e(3011),r.e(3162),r.e(1537),r.e(6395),r.e(3614)]).then(r.bind(r,13614))));class w extends a.A{name="ConfigurationPlugin";install(e){!function(e){e.addAdapterType((()=>new o.AdapterType({name:"FromConfigAdapter",configSchema:s,getAdapterClass:()=>r.e(6833).then(r.bind(r,86833)).then((e=>e.default)),adapterMetadata:{hiddenFromGUI:!0}})))}(e),function(e){e.addAdapterType((()=>new o.AdapterType({name:"FromConfigRegionsAdapter",configSchema:l,getAdapterClass:()=>r.e(491).then(r.bind(r,80491)).then((e=>e.default)),adapterMetadata:{hiddenFromGUI:!0}})))}(e),function(e){e.addAdapterType((()=>new o.AdapterType({name:"FromConfigSequenceAdapter",configSchema:c,getAdapterClass:()=>r.e(7013).then(r.bind(r,97013)).then((e=>e.default)),adapterMetadata:{hiddenFromGUI:!0}})))}(e),function(e){e.addAdapterType((()=>new o.AdapterType({name:"RefNameAliasAdapter",configSchema:d,getAdapterClass:()=>r.e(2249).then(r.bind(r,92249)).then((e=>e.default)),adapterMetadata:{hiddenFromGUI:!0}})))}(e),function(e){e.addWidgetType((()=>new o.WidgetType({name:"ConfigurationEditorWidget",HeadingComponent:g,configSchema:h,stateModel:m(e),ReactComponent:f})))}(e),function(e){e.addAdapterType((()=>new o.AdapterType({name:"NcbiSequenceReportAliasAdapter",configSchema:y,getAdapterClass:()=>r.e(3175).then(r.bind(r,43175)).then((e=>e.default)),adapterMetadata:{hiddenFromGUI:!0}})))}(e)}}},69426:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(68584),a=r(58921),o=r(7552),i=r(36422),s=r(8832);const l=i.types.model("AddConnectionModel",{id:s.ElementId,type:i.types.literal("AddConnectionWidget")}),c=(0,n.ConfigurationSchema)("AddConnectionWidget",{});function d(e){e.addWidgetType((()=>new a.WidgetType({name:"AddConnectionWidget",heading:"Add a connection",configSchema:c,stateModel:l,ReactComponent:(0,o.lazy)((()=>Promise.all([r.e(5189),r.e(4456)]).then(r.bind(r,44456))))})))}},62367:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var n=r(68584),a=r(58921),o=r(7552),i=r(36422),s=r(8832),l=r(91468);function c(e=""){try{return new URL(e),!0}catch(t){return e.startsWith("/")}}function d(e){return i.types.model("AddTrackModel",{id:s.ElementId,type:i.types.literal("AddTrackWidget"),view:i.types.safeReference(e.pluggableMstType("view","stateModel"))}).volatile((()=>({trackSource:"fromFile",trackData:void 0,indexTrackData:void 0,altAssemblyName:"",altTrackName:"",altTrackType:"",adapterHint:"",textIndexTrack:!0,textIndexingConf:void 0}))).actions((e=>({setAdapterHint(t){e.adapterHint=t},setTrackSource(t){e.trackSource=t},setTextIndexingConf(t){e.textIndexingConf=t},setTextIndexTrack(t){e.textIndexTrack=t},setTrackData(t){e.trackData=t},setIndexTrackData(t){e.indexTrackData=t},setAssembly(t){e.altAssemblyName=t},setTrackName(t){e.altTrackName=t},setTrackType(t){e.altTrackType=t},clearData(){e.trackSource="",e.altTrackName="",e.altTrackType="",e.altAssemblyName="",e.adapterHint="",e.indexTrackData=void 0,e.trackData=void 0,e.textIndexingConf=void 0,e.textIndexTrack=!0}}))).views((e=>({get trackAdapter(){const{trackData:t,indexTrackData:r,adapterHint:n}=e;return t?(0,l.guessAdapter)(t,r,n,e):void 0},get trackName(){return e.altTrackName||(e.trackData?(0,l.getFileName)(e.trackData):"")},get isFtp(){const{trackData:t,indexTrackData:r}=e;return!(!r?.uri?.startsWith("ftp://")&&!t?.uri?.startsWith("ftp://"))},get isRelativeTrackUrl(){const t=e.trackData?.uri;return!!t&&!c(t)},get isRelativeIndexUrl(){const t=e.indexTrackData?.uri;return!!t&&!c(t)},get isRelativeUrl(){return this.isRelativeIndexUrl||this.isRelativeTrackUrl},get trackHttp(){return e.trackData?.uri?.startsWith("http://")},get indexHttp(){return e.indexTrackData?.uri?.startsWith("http://")},get wrongProtocol(){return"https:"===window.location.protocol&&(this.trackHttp||this.indexHttp)},get unsupported(){return this.trackAdapter?.type===l.UNSUPPORTED},get assembly(){return e.altAssemblyName||e.view.assemblyNames?.[0]},get trackType(){return e.altTrackType||(this.trackAdapter?(0,l.guessTrackType)(this.trackAdapter.type,e):"")}}))).views((e=>({get warningMessage(){return e.isFtp?"Warning: JBrowse cannot access files using the ftp protocol":e.isRelativeUrl?"Warning: one or more of your files do not provide the protocol e.g.\n          https://, please provide an absolute URL unless you are sure a\n          relative URL is intended.":e.wrongProtocol?"Warning: You entered a http:// resources but we cannot access HTTP\n          resources from JBrowse when it is running on https. Please use an\n          https URL for your track, or access the JBrowse app from the http\n          protocol":""}})))}const u=(0,n.ConfigurationSchema)("AddTrackWidget",{});function p(e){e.addWidgetType((()=>new a.WidgetType({name:"AddTrackWidget",heading:"Add a track",configSchema:u,stateModel:d(e),ReactComponent:(0,o.lazy)((()=>Promise.all([r.e(5189),r.e(9106),r.e(8704)]).then(r.bind(r,58704))))})))}},6842:(e,t,r)=>{"use strict";function n(e,t){return`${(e.startsWith("metadata.")?t.metadata?.[e.replace("metadata.","")]:t[e])||""}`}r.d(t,{a:()=>n})},68384:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>E});var n=r(36422),a=r(42489),o=r(68584),i=r(99546),s=r(8832),l=r(91468);function c(e=[],t=[]){if(e[0]===t[0])return!0;{const r=new Set(e);return t.some((e=>r.has(e)))}}function d(e,t,r){const n=(0,o.readConfObject)(t,"category")||[],a=e.toLowerCase();return(0,l.getTrackName)(t,r).toLowerCase().includes(a)||!!n.filter((e=>e.toLowerCase().includes(a))).length}function u(e,t,r=0){let n=!1;for(const a of e)a.children.length?u(a.children,t,r+1)&&r>0&&t.push(a.id):n=!0;return n}function p(e,t){for(const r of e)r.children.length&&t.push(r.id)}function m(e,t){const{assemblyManager:r}=(0,i.getSession)(t),{pluginManager:n}=(0,i.getEnv)(t),{view:a}=t;if(!a)return[];const s=t.assemblyNames.map((e=>r.get(e))).filter(i.notEmpty);return e.filter((e=>{const t=(0,o.readConfObject)(e,"assemblyNames"),n=t?.map((e=>r.get(e))).filter(i.notEmpty);return a.trackSelectorAnyOverlap?c(n,s):function(e=[],t=[]){const r=new Set(e);return t.every((e=>r.has(e)))}(n,s)})).filter((e=>{const{displayTypes:t}=n.getViewType(a.type);return c(t.map((e=>e.name)),e.displays.map((e=>e.type)))}))}function g({model:e,trackConfs:t,extra:r,noCategories:n,menuItems:a}){const s={children:[]},{collapsed:c,filterText:u,activeSortTrackNames:p,activeSortCategories:m,view:g}=e;if(!g)return[];const h=(0,i.getSession)(e),f=g.tracks,y=t.filter((e=>d(u,e,h)));for(const e of function(e,t,r){const n=e.map((e=>[e,(0,o.readConfObject)(e,"name"),(0,o.readConfObject)(e,"category")?.[0]||"",(0,o.readConfObject)(e,"category")?.[1]||"",(0,o.readConfObject)(e,"category")?.[2]||""]));return t&&n.sort(((e,t)=>e[1].localeCompare(t[1]))),r&&n.sort(((e,t)=>e[2]!==t[2]?e[2].localeCompare(t[2]):e[3]!==t[3]?e[3].localeCompare(t[3]):e[4]!==t[4]?e[4].localeCompare(t[4]):0)),n.map((e=>e[0]))}(y,p,m)){const t=[...(0,o.readConfObject)(e,"category")||[]];e.trackId.endsWith("sessionTrack")&&t.unshift(" Session tracks");let i=s;if(!n)for(let e=0;e<t.length;e++){const n=t[e],o=i.children.find((e=>e.name===n)),s=[r,t.slice(0,e+1).join(",")].filter((e=>!!e)).join("-");if(o)i=o;else{const e={children:[],name:n,id:s,isOpenByDefault:!c.get(s),menuItems:a,type:"category"};i.children.push(e),i=e}}const d=i.children.findIndex((e=>e.children.length)),u=-1===d?i.children.length:d;i.children.splice(u,0,{id:[r,e.trackId].filter((e=>!!e)).join(","),trackId:e.trackId,name:(0,l.getTrackName)(e,h),conf:e,checked:f.some((t=>t.configuration===e)),children:[],type:"track"})}return s.children}function h(e,t,r){return e.filter((e=>t.map((t=>r(t,e))).filter((e=>!!e)).length>5))}var f=r(6842);const y=["category","adapter","description"];function b(){return"undefined"!=typeof window?[window.location.pathname,new URLSearchParams(window.location.search).get("config")].filter((e=>!!e)).join("-"):"empty"}function w(e){return["recentlyUsedTracks",b(),e.join(",")].filter((e=>!!e)).join("-")}function v(){return`favoriteTracks-${b()}}`}function C(e,t){return["collapsedCategories",b(),e.join(","),t].join("-")}function S(e,t){const r=(0,i.localStorageGetItem)(e);return null!=r&&r?JSON.parse(r):t}function k(e,t){null!=t&&(0,i.localStorageSetItem)(e,JSON.stringify(t))}const T=10;function x(e){return n.types.model("HierarchicalTrackSelectorWidget",{id:s.ElementId,type:n.types.literal("HierarchicalTrackSelectorWidget"),view:n.types.safeReference(e.pluggableMstType("view","stateModel")),faceted:n.types.optional(n.types.model("FacetedModel",{filterText:n.types.optional(n.types.string,""),showSparse:n.types.optional(n.types.boolean,(()=>JSON.parse((0,i.localStorageGetItem)("facet-showSparse")||"false"))),showFilters:n.types.optional(n.types.boolean,(()=>JSON.parse((0,i.localStorageGetItem)("facet-showFilters")||"true"))),showOptions:n.types.optional(n.types.boolean,(()=>JSON.parse((0,i.localStorageGetItem)("facet-showTableOptions")||"false"))),panelWidth:n.types.optional(n.types.number,(()=>JSON.parse((0,i.localStorageGetItem)("facet-panelWidth")||"400")))}).volatile((()=>({visible:{},useShoppingCart:!1,filters:a.observable.map()}))).actions((e=>({setFilter(t,r){e.filters.set(t,r)},setPanelWidth:t=>(e.panelWidth=t,e.panelWidth),setUseShoppingCart(t){e.useShoppingCart=t},setFilterText(t){e.filterText=t},setShowSparse(t){e.showSparse=t},setShowOptions(t){e.showOptions=t},setShowFilters(t){e.showFilters=t}}))).views((e=>({get allTrackConfigurations(){return(0,n.getParent)(e).allTrackConfigurations}}))).views((e=>({get rows(){const t=(0,i.getSession)(e),{allTrackConfigurations:r,filterText:n}=e;return r.filter((e=>d(n,e,t))).map((e=>({id:e.trackId,conf:e,name:(0,l.getTrackName)(e,t),category:(0,o.readConfObject)(e,"category")?.join(", "),adapter:(0,o.readConfObject)(e,"adapter")?.type,description:(0,o.readConfObject)(e,"description"),metadata:(0,o.readConfObject)(e,"metadata")})))}}))).views((e=>({get filteredNonMetadataKeys(){return e.showSparse?y:h(y,e.rows,((e,t)=>e[t]))},get metadataKeys(){return[...new Set(e.rows.flatMap((e=>{return t=e.metadata,Object.entries(t).map((([e,t])=>"string"==typeof t?e:"")).filter((e=>!!e));var t})))]},get filteredMetadataKeys(){return e.showSparse?this.metadataKeys:h(this.metadataKeys,e.rows,((e,t)=>e.metadata[t]))},get fields(){return["name",...this.filteredNonMetadataKeys,...this.filteredMetadataKeys.map((e=>`metadata.${e}`))]},get filteredRows(){const t=[...e.filters.entries()].filter((e=>e[1].length>0)).map((([e,t])=>[e,new Set(t)]));return e.rows.filter((e=>t.every((([t,r])=>r.has((0,f.a)(t,e))))))}}))).actions((e=>({setVisible(t){e.visible=t},afterAttach(){(0,n.addDisposer)(e,(0,a.autorun)((()=>{this.setVisible(Object.fromEntries(e.fields.map((e=>[e,!0]))))})))}}))),{})}).volatile((()=>({favorites:S(v(),[]),recentlyUsed:[],selection:[],sortTrackNames:S("sortTrackNames",void 0),sortCategories:S("sortCategories",void 0),collapsed:a.observable.map(),filterText:"",recentlyUsedCounter:0,favoritesCounter:0}))).views((e=>({get shownTrackIds(){return new Set(e.view?.tracks?.map((e=>e.configuration.trackId)))},get selectionSet(){return new Set(e.selection)},get favoritesSet(){return new Set(e.favorites)},get recentlyUsedSet(){return new Set(e.recentlyUsed)},get assemblyNames(){return e.view?.assemblyNames||[]}}))).actions((e=>({setSortTrackNames(t){e.sortTrackNames=t},setSortCategories(t){e.sortCategories=t},setSelection(t){e.selection=t},addToSelection(t){e.selection=(0,i.dedupe)([...e.selection,...t],(e=>e.trackId))},removeFromSelection(t){const r=new Set(t);e.selection=e.selection.filter((e=>!r.has(e)))},clearSelection(){e.selection=[]},addToFavorites(t){e.favoritesCounter+=1,e.favorites=[...e.favorites,t]},removeFromFavorites(t){e.favorites=e.favorites.filter((e=>e!==t))},clearFavorites(){e.favorites=[]},setRecentlyUsedCounter(t){e.recentlyUsedCounter=t},setRecentlyUsed(t){e.recentlyUsed=t},setFavorites(t){e.favorites=t},setFavoritesCounter(t){e.favoritesCounter=t},addToRecentlyUsed(t){e.recentlyUsed.includes(t)||(e.recentlyUsedCounter=Math.min(e.recentlyUsedCounter+1,T),e.recentlyUsed=e.recentlyUsed.length>=T?[...e.recentlyUsed.slice(1),t]:[...e.recentlyUsed,t])},clearRecentlyUsed(){e.recentlyUsed=[]},setView(t){e.view=t},toggleCategory(t){e.collapsed.set(t,!e.collapsed.get(t))},setCategoryCollapsed(t,r){e.collapsed.set(t,r)},expandAllCategories(){e.collapsed.clear()},setCollapsedCategories(t){e.collapsed.replace(t)},clearFilterText(){e.filterText=""},setFilterText(t){e.filterText=t}}))).views((t=>({isSelected:e=>t.selectionSet.has(e),isFavorite:e=>t.favoritesSet.has(e),isRecentlyUsed:e=>t.recentlyUsedSet.has(e),getRefSeqTrackConf(r){const{assemblyManager:n}=(0,i.getSession)(t),a=n.get(r),o=a?.configuration.sequence,s=e.getViewType(t.view.type);if(o)for(const e of o.displays)if(s.displayTypes.some((t=>t.name===e.type)))return o}}))).views((e=>({get activeSortTrackNames(){return e.sortTrackNames??(0,o.getConf)((0,i.getSession)(e),["hierarchical","sort","trackNames"])},get activeSortCategories(){return e.sortCategories??(0,o.getConf)((0,i.getSession)(e),["hierarchical","sort","categories"])},get configAndSessionTrackConfigurations(){return[...e.assemblyNames.map((t=>e.getRefSeqTrackConf(t))),...m((0,i.getSession)(e).tracks,e)].filter(i.notEmpty)},get allTrackConfigurations(){const{connectionInstances:t=[]}=(0,i.getSession)(e);return[...this.configAndSessionTrackConfigurations,...t.flatMap((e=>e.tracks))]},get allTrackConfigurationTrackIdSet(){return new Map(this.allTrackConfigurations.map((e=>[e.trackId,e])))}}))).views((e=>({get favoriteTracks(){return e.favorites.filter((t=>e.allTrackConfigurationTrackIdSet.has(t))).map((t=>e.allTrackConfigurationTrackIdSet.get(t)))},get recentlyUsedTracks(){return e.recentlyUsed.filter((t=>e.allTrackConfigurationTrackIdSet.has(t))).map((t=>e.allTrackConfigurationTrackIdSet.get(t)))}}))).views((e=>({get allTracks(){const{connectionInstances:t=[]}=(0,i.getSession)(e);return[{group:"Tracks",tracks:e.configAndSessionTrackConfigurations,noCategories:!1,menuItems:[]},...t.flatMap((e=>({group:(0,o.getConf)(e,"name"),tracks:e.tracks,noCategories:!1,menuItems:[]})))]}}))).views((e=>({get hierarchy(){return{name:"Root",id:"Root",isOpenByDefault:!0,type:"category",children:e.allTracks.map((t=>({name:t.group,id:t.group,type:"category",isOpenByDefault:!e.collapsed.get(t.group),menuItems:t.menuItems,children:g({model:e,trackConfs:t.tracks,extra:t.group,noCategories:t.noCategories})})))}}}))).actions((e=>({collapseSubCategories(){const t=[];u(e.hierarchy.children,t);for(const r of t)e.setCategoryCollapsed(r,!0)},collapseTopLevelCategories(){const t=[];for(const r of e.hierarchy.children)r.children.length&&p(r.children,t);for(const r of t)e.setCategoryCollapsed(r,!0)}}))).views((e=>({get hasAnySubcategories(){return e.allTracks.some((e=>e.tracks.some((e=>(0,o.readConfObject)(e,"category")?.length>1))))}}))).actions((e=>({afterAttach(){(0,n.addDisposer)(e,(0,a.autorun)((()=>{const{assemblyNames:t,view:r}=e;if(e.setRecentlyUsed(S(w(t),[])),r){const n=S(C(t,r.type),void 0),a=["hierarchical","defaultCollapsed"],s=(0,i.getSession)(e);if(n)e.setCollapsedCategories(n);else{e.expandAllCategories(),(0,o.getConf)(s,[...a,"topLevelCategories"])&&e.collapseTopLevelCategories(),(0,o.getConf)(s,[...a,"subCategories"])&&e.collapseSubCategories();for(const t of(0,o.getConf)(s,[...a,"categoryNames"]))e.setCategoryCollapsed(`Tracks-${t}`,!0)}}}))),(0,n.addDisposer)(e,(0,a.autorun)((()=>{const{sortTrackNames:t,sortCategories:r,favorites:n,recentlyUsed:a,assemblyNames:o,collapsed:i,view:s}=e;k(w(o),a),k(v(),n),k("sortTrackNames",t),k("sortCategories",r),s&&k(C(o,s.type),i)})))}})))}const A=(0,o.ConfigurationSchema)("HierarchicalTrackSelectorWidget",{});var P=r(58921),M=r(7552);function E(e){e.addWidgetType((()=>new P.WidgetType({name:"HierarchicalTrackSelectorWidget",heading:"Available tracks",configSchema:A,stateModel:x(e),ReactComponent:(0,M.lazy)((()=>Promise.all([r.e(1725),r.e(5331)]).then(r.bind(r,25331))))})))}},679:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(68584),a=r(58921),o=r(7552),i=r(36422),s=r(8832);function l(e){return i.types.model("PluginStoreModel",{id:s.ElementId,type:i.types.literal("PluginStoreWidget"),filterText:"",view:i.types.safeReference(e.pluggableMstType("view","stateModel"))}).actions((e=>({clearFilterText(){e.filterText=""},setFilterText(t){e.filterText=t}})))}const c=(0,n.ConfigurationSchema)("PluginStoreWidget",{});function d(e){e.addWidgetType((()=>new a.WidgetType({name:"PluginStoreWidget",heading:"Plugin store",configSchema:c,stateModel:l(e),ReactComponent:(0,o.lazy)((()=>Promise.all([r.e(3011),r.e(7902)]).then(r.bind(r,87902))))})))}},9043:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(58921),a=r(1622),o=r(68584),i=r(36422);const s=(0,o.ConfigurationSchema)("UCSCTrackHubConnection",{hubTxtLocation:{type:"fileLocation",defaultValue:{uri:"http://mysite.com/path/to/hub.txt",locationType:"UriLocation"},description:"location of the hub file (usually called hub.txt)"},assemblyNames:{type:"stringArray",defaultValue:[],description:"optional list of genomes to import from this track hub, if empty all genomes will be imported"}},{baseConfiguration:a.baseConnectionConfig});function l(e){return i.types.compose("UCSCTrackHubConnection",(0,a.BaseConnectionModelFactory)(e),i.types.model({configuration:(0,o.ConfigurationReference)(s),type:i.types.literal("UCSCTrackHubConnection")})).actions((e=>({async connect(){const{doConnect:t}=await r.e(8435).then(r.bind(r,48435));t(e)}})))}function c(e){e.addConnectionType((()=>new n.ConnectionType({name:"UCSCTrackHubConnection",configSchema:s,stateModel:l(e),displayName:"UCSC Track Hub",description:"A track or assembly hub in the Track Hub format",url:"//genome.ucsc.edu/goldenPath/help/hgTrackHubHelp.html#Intro"})))}},90257:(e,t,r)=>{"use strict";function n(e,t,r=!0){const{assemblyName:n,refName:a,start:o,offset:i,oob:s}=t.pxToBp(e),l=Math.floor(o+i);return s?"out of bounds":`${r?`{${n}}`:""}${a}:${l.toLocaleString("en-US")}`}function a(e,t,r){const n=new Set,a=[...e].sort(((e,t)=>{const r=e.end-e.start;return t.end-t.start-r})),o=Array.from({length:Math.round(t)});for(const{key:e,offsetPx:i}of a){const a=Math.round(t-i+r),s=[Math.max(a-12,0),a];0===a||o.slice(...s).some(Boolean)?n.add(e):o.fill(!0,...s)}return n}function o(e,t,r=!0,n=!0){const a=[],o=function(e){const t=60*(e=Math.abs(e));let r=10**+Number(t).toExponential().split(/e/i)[1];for(;r<t&&(r*=2,!(r>=t));)r*=2.5;r=Math.max(r,5);const n=r/e;let a=0;return!(r%10)&&n/10>=15?a=r/10:!(r%5)&&n/5>=15?a=r/5:!(r%2)&&n/2>=15&&(a=r/2),{majorPitch:r,minorPitch:a}}(t),i=o.minorPitch||o.majorPitch;for(const{start:t,end:s,refName:l}of e){let e=0;const c=t,d=s;for(let s=Math.floor(c/i)*i;s<Math.ceil(d/i)*i+1;s+=i)n&&s%o.majorPitch?(a.push({type:"minor",base:s-1,index:e,refName:l}),e+=1):r&&Math.abs(s-t)>o.minorPitch&&(a.push({type:"major",base:s-1,index:e,refName:l}),e+=1)}return a}r.d(t,{H2:()=>o,rQ:()=>a,wJ:()=>n})},42752:(e,t,r)=>{"use strict";r.d(t,{$G:()=>s,Db:()=>l,fK:()=>c});var n=r(7552),a=r(75785),o=r(68446);const i=(0,a.n9)()((e=>({contentBlock:{position:"relative",minHeight:"100%",boxSizing:"border-box",whiteSpace:"nowrap",overflow:"hidden"},elidedBlock:{minHeight:"100%",boxSizing:"border-box",backgroundColor:"#999",backgroundImage:"repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)"},interRegionPaddingBlock:{minHeight:"100%",backgroundColor:e.palette.text.disabled},boundaryPaddingBlock:{minHeight:"100%",backgroundColor:e.palette.action.disabledBackground}}))),s=(0,o.observer)((function({block:e,children:t}){const{classes:r}=i(),{widthPx:a}=e;return n.createElement("div",{style:{width:a},className:r.contentBlock},t)}));function l({width:e}){const{classes:t}=i();return n.createElement("div",{className:t.elidedBlock,style:{width:e}})}function c({boundary:e,width:t,style:r={}}){const{classes:a}=i();return n.createElement("div",{style:{...r,width:t},className:e?a.boundaryPaddingBlock:a.interRegionPaddingBlock})}},37205:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(7552),a=r(9937),o=r(89003);const i=(0,r(75785).n9)()({ellipses:{textOverflow:"ellipsis",overflow:"hidden"}});function s({message:e,severity:t,action:r}){const{classes:s}=i();return n.createElement(a.A,{severity:t,action:r,classes:{message:s.ellipses}},n.createElement(o.A,{title:e},n.createElement("div",null,e)))}},2286:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(7552),a=r(68584),o=r(49823),i=r(68446);const s=(0,n.lazy)((()=>Promise.resolve().then(r.bind(r,9236)))),l=n.forwardRef((function({message:e},t){return n.createElement("div",{ref:t},n.isValidElement(e)?e:e?n.createElement(o.SanitizedHTML,{html:String(e)}):null)})),c=(0,i.observer)((function({model:e,clientMouseCoord:t}){const{featureUnderMouse:r}=e,o=t[0]+15,i=t[1],c=r?(0,a.getConf)(e,"mouseover",{feature:r}):void 0;return r&&c?n.createElement(n.Suspense,{fallback:null},n.createElement(s,{clientPoint:{x:o,y:i}},n.createElement(l,{message:c}))):null}))},66344:(e,t,r)=>{"use strict";r.d(t,{A:()=>S,s:()=>k});var n=r(36422),a=r(68584),o=r(99546),i=r(8832),s=r(92516),l=r(91468),c=r(7552),d=r(89003),u=r(61723),p=r(75785),m=r(68446),g=r(49823),h=r(4902),f=r(71627),y=r(37205);const b=(0,c.lazy)((()=>Promise.all([r.e(9245),r.e(4630)]).then(r.bind(r,74630)))),w=(0,p.n9)()((e=>{const t=e.palette.action.disabledBackground;return{loading:{paddingLeft:"0.6em",backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${t} 5px, ${t} 10px)`,textAlign:"center"}}})),v=(0,m.observer)((({model:e})=>{const{classes:t}=w(),{status:r}=e,{message:a}=(0,n.getParent)(e,2),o=a||r;return c.createElement("div",{className:t.loading},c.createElement(g.LoadingEllipses,{message:o}))})),C=(0,m.observer)((function({model:e}){return e.error?c.createElement(y.A,{message:`${e.error}`,severity:"error",action:c.createElement(c.Fragment,null,c.createElement(d.A,{title:"Reload track"},c.createElement(u.A,{"data-testid":"reload_button",onClick:()=>{e.reload()}},c.createElement(h.A,null))),c.createElement(d.A,{title:"Show stack trace"},c.createElement(u.A,{onClick:()=>{(0,o.getSession)(e).queueDialog((t=>[b,{onClose:t,error:e.error}]))}},c.createElement(f.A,null))))}):e.message?c.isValidElement(e.message)?e.message:c.createElement(y.A,{message:`${e.message}`,severity:"info"}):e.filled?e.reactElement:c.createElement(v,{model:e})})),S=n.types.model("BlockState",{key:n.types.string,region:i.Region,reloadFlag:0,isLeftEndOfDisplayedRegion:!1,isRightEndOfDisplayedRegion:!1}).volatile((()=>({renderInProgress:void 0,filled:!1,reactElement:void 0,features:void 0,layout:void 0,status:"",error:void 0,message:void 0,maxHeightReached:!1,ReactComponent:C,renderProps:void 0}))).actions((e=>{let t;return{doReload(){e.reloadFlag=e.reloadFlag+1},afterAttach(){const t=(0,o.getContainingDisplay)(e);setTimeout((()=>{(0,n.isAlive)(e)&&(0,o.makeAbortableReaction)(e,k,T,{name:`${t.id}/${(0,o.assembleLocString)(e.region)} rendering`,delay:t.renderDelay,fireImmediately:!0},this.setLoading,this.setRendered,this.setError)}),t.renderDelay)},setStatus(t){e.status=t},setLoading(r){void 0===t||t.signal.aborted||t.abort(),e.filled=!1,e.message=void 0,e.reactElement=void 0,e.features=void 0,e.layout=void 0,e.error=void 0,e.maxHeightReached=!1,e.renderProps=void 0,t=r},setMessage(r){t&&!t.signal.aborted&&t.abort(),e.filled=!1,e.message=r,e.reactElement=void 0,e.features=void 0,e.layout=void 0,e.error=void 0,e.maxHeightReached=!1,e.renderProps=void 0,t=void 0},setRendered(r){if(!r)return;const{reactElement:n,features:a,layout:o,maxHeightReached:i,renderProps:s}=r;e.filled=!0,e.message=void 0,e.reactElement=n,e.features=a,e.layout=o,e.error=void 0,e.maxHeightReached=i,e.renderProps=s,t=void 0},setError(r){console.error(r),t&&!t.signal.aborted&&t.abort(),e.filled=!1,e.message=void 0,e.reactElement=void 0,e.features=void 0,e.layout=void 0,e.maxHeightReached=!1,e.error=r,e.renderProps=void 0,t=void 0,(0,s.yH)(r)&&this.reload()},reload(){e.renderInProgress=void 0,e.filled=!1,e.reactElement=void 0,e.features=void 0,e.layout=void 0,e.error=void 0,e.message=void 0,e.maxHeightReached=!1,e.ReactComponent=C,e.renderProps=void 0,(0,n.getParent)(e,2).reload()},beforeDestroy(){(async()=>{try{t&&!t.signal.aborted&&t.abort();const r=(0,o.getContainingDisplay)(e),{rpcManager:a}=(0,o.getSession)(e),{rendererType:i}=r,{renderArgs:s}=k((0,n.cast)(e));s&&await i.freeResourcesInClient(a,JSON.parse(JSON.stringify(s)))}catch(e){console.error("Error while destroying block",e)}})()}}}));function k(e,t){try{const r=t||(0,o.getContainingDisplay)(e),{assemblyManager:i,rpcManager:s}=(0,o.getSession)(r),{adapterConfig:c,rendererType:d,error:u,parentTrack:p}=r,m=(0,l.getTrackAssemblyNames)(p),g=e.region.assemblyName;if(!m.includes(g)&&!m.some((e=>i.get(e)?.hasName(g))))throw new Error(`region assembly (${g}) does not match track assemblies (${m})`);const h=r.renderProps(),{config:f}=h;(0,a.readConfObject)(f);const y=(0,l.getRpcSessionId)(r),b=(0,o.getContainingView)(r).id;return{rendererType:d,rpcManager:s,renderProps:h,cannotBeRenderedReason:r.regionCannotBeRendered(e.region),displayError:u,renderArgs:{statusCallback:t=>{(0,n.isAlive)(e)&&e.setStatus(t)},assemblyName:e.region.assemblyName,regions:[(0,n.getSnapshot)(e.region)],adapterConfig:c,rendererType:d.name,sessionId:y,layoutId:b,blockKey:e.key,reloadFlag:e.reloadFlag,timeout:1e6}}}catch(e){return{displayError:e}}}async function T(e,t,r){if(!e)return;const{rendererType:a,renderProps:i,rpcManager:s,renderArgs:l,cannotBeRenderedReason:c,displayError:d}=e;if(!(0,n.isAlive)(r))return;if(d)return void r.setError(d);if(c)return void r.setMessage(c);if(i.notReady)return;const{reactElement:u,features:p,layout:m,maxHeightReached:g}=await a.renderInClient(s,{...l,...i,viewParams:(0,o.getViewParams)(r),signal:t});return{reactElement:u,features:p,layout:m,maxHeightReached:g,renderProps:i}}},21479:(e,t,r)=>{"use strict";r.d(t,{OX:()=>s,W7:()=>i,bf:()=>l});var n=r(99546),a=r(91468),o=r(36422);function i(e){return Math.floor(e/1e6)>0?`${Number.parseFloat((e/1e6).toPrecision(3))} Mb`:Math.floor(e/1e3)>0?`${Number.parseFloat((e/1e3).toPrecision(3))} Kb`:`${Math.floor(e)} bytes`}function s(e,t){const r="undefined"==typeof jest;return["clip",r?e:"jest",t,r?Math.random():""].filter((e=>!!e)).join("-")}async function l(e){const t=(0,n.getContainingView)(e).staticBlocks.contentBlocks,{rpcManager:r}=(0,n.getSession)(e),{adapterConfig:i}=e;if(!i)return{};const s=(0,a.getRpcSessionId)(e);return r.call(s,"CoreGetFeatureDensityStats",{sessionId:s,regions:t,adapterConfig:i,statusCallback:t=>{(0,o.isAlive)(e)&&e.setMessage(t)}})}},84481:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(7552),a=r(68446),o=r(99546),i=r(50574),s=r(76239);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},l.apply(null,arguments)}function c(e,t,r,n,a){return`M${e},${t}h${r-a}a${a},${a} 0 0 1 ${a},${a}v${n-2*a}a${a},${a} 0 0 1 ${-a},${a}h${a-r}z`}function d(e,t,r,n){return[[e,0],[e+r,n/2],[e,n]].toString()}function u(e,t,r,n){return[[e,n/2],[e+r,0],[e+r,n]].toString()}const p={gneg:"rgb(227,227,227)",gpos25:"rgb(142,142,142)",gpos50:"rgb(85,85,85)",gpos100:"rgb(0,0,0)",gpos75:"rgb(57,57,57)",gvar:"rgb(0,0,0)",stalk:"rgb(127,127,127)",acen:"#800"},m=(0,a.observer)((function({overview:e,block:t,assembly:r}){const{offsetPx:a,reversed:m}=t,g=(0,i.S5)(r,t.refName),h=m?g.length-1:0,f=m?0:g.length-1,y=s.Gu;let b=!1;return n.createElement("g",{transform:`translate(-${a})`},g.map(((t,r)=>{const a=JSON.stringify(t),{refName:i,type:s,start:g,end:w}=t,v=e.bpToPx({refName:i,coord:g})||0,C=e.bpToPx({refName:i,coord:w})||0,S=Math.min(v,C),k=Math.abs(C-v),T=p[s]||"black";return"acen"!==s||b?"acen"===s&&b?n.createElement("polygon",l({key:a,points:m?d(v-k,0,k,y):u(v,0,k,y)},(0,o.getFillProps)(T))):h===r?n.createElement("path",l({key:a,d:(x=S,A=k,P=y,`M${x+8},0h${A-8}v${P}h${8-A}a8,8 0 0 1 -8,-8v${16-P}a8,8 0 0 1 8,-8z`)},(0,o.getFillProps)(T))):f===r?n.createElement("path",l({key:a,d:c(S,0,k,y,8)},(0,o.getFillProps)(T))):n.createElement("rect",l({key:a,x:S,y:0,width:k,height:y},(0,o.getFillProps)(T))):(b=!0,n.createElement("polygon",l({key:a,points:m?u(v-k,0,k,y):d(v,0,k,y)},(0,o.getFillProps)(T))));var x,A,P})))}))},98273:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>ve});var n=r(7552),a=r(75785),o=r(49823),i=r(99546),s=r(68446),l=r(943),c=r(36422),d=r(82725),u=r(72639),p=r(61723),m=r(36715),g=r(68584),h=r(91468),f=r(23758),y=r(17307),b=r(30157),w=r(16217),v=r(374),C=r(91388),S=r(42281),k=r(66195),T=r(21430),x=r(35050);const A=(0,a.n9)()({dragHandle:{cursor:"grab"},dragHandleIcon:{display:"inline-block",verticalAlign:"middle",pointerEvents:"none"}}),P=function({trackId:e,view:t,track:r}){const{classes:a}=A();return n.createElement("span",{draggable:!0,className:a.dragHandle,onDragStart:e=>{const n=e.currentTarget;if(n.parentNode){const a=n.parentNode;e.dataTransfer.setDragImage(a,20,20),t.setDraggingTrackId(r.id)}},onDragEnd:()=>{t.setDraggingTrackId(void 0)},"data-testid":`dragHandle-${t.id}-${e}`},n.createElement(x.A,{className:a.dragHandleIcon,fontSize:"small"}))},M=(0,a.n9)()((e=>({root:{background:(0,u.X4)(e.palette.background.paper,.8),"&:hover":{background:e.palette.background.paper}},trackName:{fontSize:"0.8rem"},iconButton:{padding:e.spacing(1)}}))),E=(0,s.observer)(n.forwardRef((function({track:e,className:t},r){const{classes:a,cx:s}=M(),c=(0,i.getContainingView)(e),d=(0,i.getSession)(e),u=e.configuration,x=e.minimized,A=(0,g.getConf)(e,"trackId"),E=(0,h.getTrackName)(u,d),R=[{label:"Track order",type:"subMenu",priority:2e3,subMenu:[{label:x?"Restore track":"Minimize track",icon:x?v.A:w.A,onClick:()=>{e.setMinimized(!x)}},{label:"Move track to top",icon:S.A,onClick:()=>{c.moveTrackToTop(e.id)}},{label:"Move track up",icon:T.A,onClick:()=>{c.moveTrackUp(e.id)}},{label:"Move track down",icon:k.A,onClick:()=>{c.moveTrackDown(e.id)}},{label:"Move track to bottom",icon:C.A,onClick:()=>{c.moveTrackToBottom(e.id)}}]},...d.getTrackActionMenuItems?.(u)||[],...e.trackMenuItems()].sort(((e,t)=>(t?.priority||0)-(e?.priority||0)));return n.createElement(l.A,{ref:r,className:s(t,a.root)},n.createElement(P,{track:e,trackId:A,view:c}),n.createElement(p.A,{onClick:()=>c.hideTrack(A),className:a.iconButton,title:"close this track"},n.createElement(b.A,{fontSize:"small"})),n.createElement(m.A,{variant:"body1",component:"span",className:a.trackName,onMouseDown:e=>{e.stopPropagation()}},n.createElement(o.SanitizedHTML,{html:[E,x?"(minimized)":""].filter((e=>!!e)).join(" ")})),n.createElement(f.A,{menuItems:R,"data-testid":"track_menu_icon"},n.createElement(y.A,{fontSize:"small"})))}))),R=(0,a.n9)()({trackLabel:{zIndex:3},trackLabelOffset:{position:"relative",display:"inline-block"},trackLabelOverlap:{position:"absolute"}}),I=(0,s.observer)((function({track:e,view:t}){const{classes:r,cx:a}=R(),o=e.displays[0],{trackLabel:i,trackLabelOverlap:s,trackLabelOffset:l}=r,c="overlapping"!==t.trackLabelsSetting||o.prefersOffset?l:s;return"hidden"!==t.trackLabelsSetting?n.createElement(E,{track:e,className:a(i,c)}):null})),N=(0,a.n9)()({renderingComponentContainer:{position:"absolute",left:-1,height:"100%",width:"100%"},trackRenderingContainer:{overflowY:"auto",overflowX:"hidden",whiteSpace:"nowrap",position:"relative",background:"none",zIndex:2}}),F=(0,s.observer)((function({model:e,track:t,onDragEnter:r}){const{classes:a}=N(),i=t.displays[0],{height:s,RenderingComponent:l,DisplayBlurb:c}=i,{trackRefs:d,id:u,scaleFactor:p}=e,m=(0,g.getConf)(t,"trackId"),h=(0,n.useRef)(null),f=t.minimized;return(0,n.useEffect)((()=>(h.current&&(d[m]=h.current),()=>{delete d[m]})),[d,m]),n.createElement("div",{className:a.trackRenderingContainer,style:{height:f?20:s},onScroll:e=>i.setScrollTop(e.currentTarget.scrollTop),onDragEnter:r,"data-testid":`trackRenderingContainer-${u}-${m}`},f?null:n.createElement(n.Fragment,null,n.createElement("div",{ref:h,className:a.renderingComponentContainer,style:{transform:1!==p?`scaleX(${p})`:void 0}},n.createElement(n.Suspense,{fallback:n.createElement(o.LoadingEllipses,null)},n.createElement(l,{model:i,onHorizontalScroll:e.horizontalScroll}))),c?n.createElement("div",{style:{position:"absolute",left:0,top:i.height-20}},n.createElement(c,{model:i})):null))})),L=(0,a.n9)()({root:{marginTop:2},resizeHandle:{height:3,boxSizing:"border-box",position:"relative",zIndex:2}}),D=(0,s.observer)((function({model:e,track:t}){const{classes:r}=L(),a=t.displays[0],{draggingTrackId:i,showTrackOutlines:s}=e,u=(0,n.useRef)(null);return n.createElement(l.A,{ref:u,className:r.root,variant:s?"outlined":void 0,elevation:s?void 0:0,onClick:r=>{if(2===r.detail&&!t.displays[0].featureIdUnderMouse){const t=u.current?.getBoundingClientRect().left||0;e.zoomTo(e.bpPerPx/2,r.clientX-t,!0)}}},n.createElement(I,{track:t,view:e}),n.createElement(d.tH,{FallbackComponent:e=>n.createElement(o.ErrorMessage,{error:e.error})},n.createElement(F,{model:e,track:t,onDragEnter:()=>{(0,c.isAlive)(a)&&void 0!==i&&i!==a.id&&e.moveTrack(i,t.id)}})),n.createElement(o.ResizeHandle,{onDrag:a.resizeHeight,className:r.resizeHandle}))}));var B=r(50574);function V(e,t,r){const[a,o]=(0,n.useState)(),[i,s]=(0,n.useState)(),[l,c]=(0,n.useState)(),[d,u]=(0,n.useState)(),p=void 0!==a&&void 0===l;function m(t){if(r&&!t.shiftKey)return;t.preventDefault(),t.stopPropagation();const n=(0,B.Pn)(t,e.current);o(n),s(n)}function g(t){r?t.shiftKey?u((0,B.Pn)(t,e.current)):u(void 0):u((0,B.Pn)(t,e.current))}function h(){u(void 0),t.setOffsets(void 0,void 0)}function f(){c(void 0),o(void 0),s(void 0)}function y(e,t){t(),f()}(0,n.useEffect)((()=>{function r(t){if(e.current&&p){const r=(0,B.Pn)(t,e.current);s(r)}}function n(r){if(void 0!==a&&e.current){const{clientX:n,clientY:o}=r,i=(0,B.Pn)(r,e.current);c({offsetX:i,clientX:n,clientY:o});const s=function(e){if(void 0===a)return;const r=Math.min(a,e),n=Math.max(a,e);return{leftOffset:t.pxToBp(r),rightOffset:t.pxToBp(n)}}(i);s&&t.setOffsets(s.leftOffset,s.rightOffset),u(void 0)}}return p?(window.addEventListener("mousemove",r),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",n)}):()=>{}}),[a,p,t,e]),(0,n.useEffect)((()=>{!p&&void 0!==i&&void 0!==a&&Math.abs(i-a)<=3&&f()}),[p,i,a]);const b=Boolean(l);if(void 0===a)return{open:b,guideX:d,mouseDown:m,mouseMove:g,mouseOut:h,handleMenuItemClick:y};const w=l?l.offsetX:i||0,v=w<a?w:a,C=Math.abs(w-a);return{open:b,rubberbandOn:!0,mouseDown:m,mouseMove:g,mouseOut:h,handleClose:f,handleMenuItemClick:y,leftBpOffset:t.pxToBp(v),rightBpOffset:t.pxToBp(v+C),anchorPosition:l,numOfBpSelected:Math.ceil(C*t.bpPerPx),width:C,left:v}}var z=r(89003);const O=(0,a.n9)()({guide:{pointerEvents:"none",height:"100%",width:1,position:"absolute",zIndex:10}}),H=(0,s.observer)((function({model:e,coordX:t}){const{classes:r}=O();return n.createElement(z.A,{open:!0,placement:"top",title:(0,i.stringify)(e.pxToBp(t)),arrow:!0},n.createElement("div",{className:r.guide,style:{left:t,background:"red"}}))}));var j=r(91289);const W=(0,a.n9)()({rubberbandControl:{cursor:"crosshair",width:"100%",minHeight:8}}),G=(0,s.observer)((function({model:e,ControlComponent:t=n.createElement("div",null)}){const r=(0,n.useRef)(null),{classes:a}=W(),{guideX:i,rubberbandOn:s,leftBpOffset:l,rightBpOffset:c,numOfBpSelected:d,width:u,left:p,anchorPosition:m,handleMenuItemClick:g,open:h,handleClose:f,mouseMove:y,mouseDown:b,mouseOut:w}=V(r,e);return n.createElement(n.Fragment,null,void 0!==i?n.createElement(H,{model:e,coordX:i}):s?n.createElement(j.A,{leftBpOffset:l,rightBpOffset:c,numOfBpSelected:d,width:u,left:p}):null,m?n.createElement(o.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:m.clientX,top:m.clientY},onMenuItemClick:g,open:h,onClose:f,menuItems:e.rubberBandMenuItems()}):null,n.createElement("div",{"data-testid":"rubberband_controls",className:a.rubberbandControl,ref:r,onMouseDown:b,onMouseMove:y,onMouseOut:w},t))}));var $=r(42752),q=r(27703);const _=(0,a.n9)()((e=>({majorTickLabel:{fontSize:11,zIndex:1,background:e.palette.background.paper,lineHeight:"normal",pointerEvents:"none"},tick:{position:"absolute",width:0,display:"flex",justifyContent:"center",pointerEvents:"none"}}))),U=function({block:e,bpPerPx:t}){const{classes:r}=_(),{reversed:a,start:o,end:s}=e,l=(0,q.H2)(o,s,t,!0,!1);return n.createElement($.$G,{block:e},l.map((({type:e,base:l})=>{if("major"===e){const e=(a?s-l:l-o)/t,c=l+1;return n.createElement("div",{key:l,className:r.tick,style:{left:e}},c?n.createElement(m.A,{className:r.majorTickLabel},(0,i.getTickDisplayStr)(c,t)):null)}return null})))},J=(0,s.observer)((function({model:e}){const{staticBlocks:t,bpPerPx:r}=e;return n.createElement(n.Fragment,null,t.map(((e,t)=>{const{key:a,widthPx:o}=e,i=`${a}-${t}`;return"ContentBlock"===e.type?n.createElement(U,{key:i,block:e,bpPerPx:r}):"ElidedBlock"===e.type?n.createElement($.Db,{key:i,width:o}):"InterRegionPaddingBlock"===e.type?n.createElement($.fK,{key:i,width:o,style:{background:"none"},boundary:"boundary"===e.variant}):null})))})),X=(0,a.n9)()((e=>({refLabel:{fontSize:11,position:"absolute",left:2,top:-1,fontWeight:"bold",lineHeight:"normal",zIndex:1,background:e.palette.background.paper},b0:{left:0,zIndex:100}}))),Y=(0,s.observer)((function({model:e}){const{classes:t,cx:r}=X(),{staticBlocks:a,offsetPx:o,scaleBarDisplayPrefix:i}=e;let s=0;a.forEach(((e,t)=>{e.offsetPx-o<0&&(s=t)}));const l=i(),c=a.blocks[0];return n.createElement(n.Fragment,null,"ContentBlock"!==c?.type&&l?n.createElement(m.A,{className:r(t.b0,t.refLabel)},l):null,a.map(((e,r)=>{const{offsetPx:a,isLeftEndOfDisplayedRegion:i,key:c,type:d,refName:u}=e,p=r=s;return"ContentBlock"===d&&(i||p)?n.createElement(m.A,{key:`refLabel-${c}-${r}`,style:{left:p?Math.max(0,-o):a-o-1,paddingLeft:p?0:1},className:t.refLabel,"data-testid":`refLabel-${u}`},p&&l?`${l}:`:"",u):null})))}));function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},K.apply(null,arguments)}const Q=(0,a.n9)()({container:{overflow:"hidden",position:"relative"},zoomContainer:{position:"relative",zIndex:1},scalebar:{position:"absolute",display:"flex",pointerEvents:"none"}}),Z=(0,s.observer)(n.forwardRef((function({model:e,style:t,className:r,...a},o){const{classes:i,cx:s}=Q(),{staticBlocks:c,offsetPx:d,scaleFactor:u}=e,p=c.offsetPx-d;return n.createElement(l.A,K({"data-resizer":"true",className:s(i.container,r),variant:"outlined",ref:o,style:t},a),n.createElement("div",{className:i.zoomContainer,style:{transform:1!==u?`scaleX(${u})`:void 0}},n.createElement("div",{className:i.scalebar,style:{left:p-1,width:c.totalWidthPx,...t}},n.createElement(J,{model:e}))),n.createElement(Y,{model:e}))}))),ee=(0,a.n9)()((e=>({verticalGuidesZoomContainer:{position:"absolute",height:"100%",width:"100%",zIndex:1,pointerEvents:"none"},verticalGuidesContainer:{position:"absolute",height:"100%",zIndex:1,pointerEvents:"none",display:"flex"},tick:{position:"absolute",height:"100%",width:1},majorTick:{background:e.palette.action.disabled},minorTick:{background:e.palette.divider}})));function te({block:e,bpPerPx:t}){const{classes:r,cx:a}=ee(),o=(0,q.H2)(e.start,e.end,t);return n.createElement($.$G,{block:e},o.map((({type:o,base:i})=>{const s=(e.reversed?e.end-i:i-e.start)/t;return n.createElement("div",{key:i,className:a(r.tick,"major"===o||"labeledMajor"===o?r.majorTick:r.minorTick),style:{left:s}})})))}const re=(0,s.observer)((({model:e})=>{const{staticBlocks:t,bpPerPx:r}=e;return n.createElement(n.Fragment,null,t.map(((e,t)=>{const a=`${e.key}-${t}`;return"ContentBlock"===e.type?n.createElement(te,{key:a,block:e,bpPerPx:r}):"ElidedBlock"===e.type?n.createElement($.Db,{key:a,width:e.widthPx}):"InterRegionPaddingBlock"===e.type?n.createElement($.fK,{key:a,width:e.widthPx,boundary:"boundary"===e.variant}):null})))})),ne=(0,s.observer)((function({model:e}){const{classes:t}=ee(),r=e.staticBlocks.offsetPx-e.offsetPx;return n.createElement("div",{className:t.verticalGuidesZoomContainer,style:{transform:1!==e.scaleFactor?`scaleX(${e.scaleFactor})`:void 0}},n.createElement("div",{className:t.verticalGuidesContainer,style:{left:r,width:e.staticBlocks.totalWidthPx}},n.createElement(re,{model:e})))})),ae=(0,a.n9)()((e=>({centerLineContainer:{background:"transparent",height:"100%",zIndex:5,position:"absolute",border:`1px ${e.palette.action.active} dashed`,borderTop:"none",borderBottom:"none",pointerEvents:"none"},centerLineText:{position:"absolute",pointerEvents:"none",whiteSpace:"nowrap",fontWeight:"bold"}}))),oe=(0,s.observer)((function({model:e}){const{bpPerPx:t,centerLineInfo:r,trackHeights:a,tracks:o,width:i}=e,s=(0,n.useRef)(null),{classes:l}=ae(),c=i/2;return o.length?n.createElement("div",{"data-testid":"centerline_container",className:l.centerLineContainer,role:"presentation",ref:s,style:{left:`${c}px`,width:Math.max(1/t,1)}},r&&n.createElement("div",{"data-testid":"centerline_text",className:l.centerLineText,role:"presentation",style:{left:Math.max(1/t,1)+5,top:a}},r.refName,":"," ",Math.max(Math.round(r.offset)+1,0))):null})),ie=oe;var se=r(87485),le=r(75441),ce=r(11353);const de=(0,a.n9)()((e=>({highlight:{height:"100%",position:"absolute",overflow:"hidden",background:(0,se.M)(e.palette.highlight.main).alpha(.35).toRgbString()},linkIcon:{color:(0,se.M)(e.palette.highlight.main).darken(.2).toRgbString()}}))),ue=(0,s.observer)((function({model:e,highlight:t}){const{classes:r}=de(),[a,s]=(0,n.useState)(!1),l=(0,n.useRef)(null),c=(0,i.getSession)(e),{assemblyManager:d}=c,u=()=>{e.removeHighlight(t)};function m(){s(!1)}const g=d.get(t.assemblyName),h=(t=>{const r=e.bpToPx({refName:t.refName,coord:t.start}),n=e.bpToPx({refName:t.refName,coord:t.end});return r&&n?{width:Math.max(Math.abs(n.offsetPx-r.offsetPx),3),left:Math.min(r.offsetPx,n.offsetPx)-e.offsetPx}:void 0})({...t,refName:g?.getCanonicalRefName(t.refName)??t.refName});return h?n.createElement("div",{className:r.highlight,style:{left:h.left,width:h.width}},n.createElement(z.A,{title:"Highlighted from URL parameter",arrow:!0},n.createElement(p.A,{ref:l,onClick:()=>{s(!0)},style:{zIndex:3}},n.createElement(le.A,{fontSize:"small",className:r.linkIcon}))),n.createElement(o.Menu,{anchorEl:l.current,onMenuItemClick:(e,t)=>{t(c),m()},open:a,onClose:m,menuItems:[{label:"Dismiss highlight",icon:b.A,onClick:()=>{u()}},{label:"Bookmark highlighted region",icon:ce.A,onClick:()=>{let e=c.widgets.get("GridBookmark");e||(e=c.addWidget("GridBookmarkWidget","GridBookmark")),e.addBookmark(t),u()}}]})):null})),pe=(0,s.observer)((function({model:e}){return e.highlight.map(((t,r)=>n.createElement(ue,{key:`${JSON.stringify(t)}-${r}`,model:e,highlight:t})))}));var me=r(76239);const ge=(0,a.n9)()({tracksContainer:{position:"relative",overflow:"hidden"}}),he=(0,s.observer)((function({children:e,model:t}){const{classes:r}=ge(),{pluginManager:a}=(0,i.getEnv)(t),{mouseDown:s,mouseUp:l}=function(e){const[t,r]=(0,n.useState)(!1),a=(0,n.useRef)(!1),o=(0,n.useRef)(0);return(0,n.useEffect)((()=>{let n=()=>{};function i(t){t.preventDefault();const r=t.clientX-o.current;r&&(a.current||(a.current=!0,window.requestAnimationFrame((()=>{e.horizontalScroll(-r),a.current=!1,o.current=t.clientX}))))}function s(){o.current=0,t&&r(!1)}return t&&(window.addEventListener("mousemove",i,!0),window.addEventListener("mouseup",s,!0),n=()=>{window.removeEventListener("mousemove",i,!0),window.removeEventListener("mouseup",s,!0)}),n}),[e,t]),{mouseDown:function(e){if(e.shiftKey)return;const t=e.target;t.draggable||t.dataset.resizer||0===e.button&&(o.current=e.clientX,r(!0))},mouseUp:function(e){e.preventDefault(),r(!1)}}}(t),c=(0,n.useRef)(null),{guideX:d,rubberbandOn:u,leftBpOffset:p,rightBpOffset:m,numOfBpSelected:g,width:h,left:f,anchorPosition:y,open:b,handleMenuItemClick:w,handleClose:v,mouseMove:C,mouseDown:S}=V(c,t,!0);!function(e,t){const r=(0,n.useRef)(0),a=(0,n.useRef)(),o=(0,n.useRef)(!1);(0,n.useEffect)((()=>{const n=e.current;function i(e){e.ctrlKey?(e.preventDefault(),r.current+=e.deltaY/500,t.setScaleFactor(r.current<0?1-r.current:1/(1+r.current)),a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{t.setScaleFactor(1),t.zoomTo(r.current>0?t.bpPerPx*(1+r.current):t.bpPerPx/(1-r.current),e.clientX-(n?.getBoundingClientRect().left||0)),r.current=0}),300)):(Math.abs(e.deltaX)>Math.abs(2*e.deltaY)&&e.preventDefault(),r.current+=e.deltaX,o.current||(o.current=!0,window.requestAnimationFrame((()=>{t.horizontalScroll(r.current),r.current=0,o.current=!1}))))}return n?(n.addEventListener("wheel",i),()=>{n.removeEventListener("wheel",i)}):()=>{}}),[t,e])}(c,t);const k=a.evaluateExtensionPoint("LinearGenomeView-TracksContainerComponent",void 0,{model:t});return n.createElement("div",{ref:c,"data-testid":"trackContainer",className:r.tracksContainer,onMouseDown:e=>{s(e),S(e)},onMouseMove:C,onMouseUp:l},t.showGridlines?n.createElement(ne,{model:t}):null,t.showCenterLine?n.createElement(ie,{model:t}):null,void 0!==d?n.createElement(H,{model:t,coordX:d}):u?n.createElement(j.A,{leftBpOffset:p,rightBpOffset:m,numOfBpSelected:g,width:h,left:f}):null,y?n.createElement(o.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:y.clientX,top:y.clientY},onMenuItemClick:w,open:b,onClose:v,menuItems:t.rubberBandMenuItems()}):null,n.createElement(G,{model:t,ControlComponent:n.createElement(Z,{model:t,style:{height:me.jE,boxSizing:"border-box"}})}),n.createElement(pe,{model:t}),k,e)})),fe=(0,n.lazy)((()=>r.e(9372).then(r.bind(r,29372)))),ye=(0,n.lazy)((()=>r.e(1189).then(r.bind(r,21189)))),be=(0,a.n9)()((e=>({note:{textAlign:"center",paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},rel:{position:"relative"},top:{zIndex:1e3}}))),we=(0,s.observer)((function({model:e}){const{tracks:t,error:r,initialized:a,hasDisplayedRegions:s}=e,l=(0,n.useRef)(null),c=(0,i.getSession)(e),{classes:d}=be();if((0,n.useEffect)((()=>{function t(t){t.target instanceof Element&&l.current?.contains(t.target)&&c.setFocusedViewId?.(e.id)}return document.addEventListener("mousedown",t),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",t)}}),[c,e]),!a&&!r)return n.createElement(o.LoadingEllipses,{variant:"h6"});if(!s||r)return n.createElement(fe,{model:e});const u=e.MiniControlsComponent(),p=e.HeaderComponent();return n.createElement("div",{className:d.rel,ref:l,onMouseLeave:()=>{c.setHovered(void 0)},onMouseMove:t=>{const r=l.current;if(!r)return;const{tracks:n}=e,a=t.clientX-r.getBoundingClientRect().left,o=e.pxToBp(a),i=n.find((e=>e.displays[0].featureUnderMouse));c.setHovered({hoverPosition:o,hoverFeature:i})}},n.createElement(p,{model:e}),n.createElement(u,{model:e}),n.createElement(he,{model:e},t.length?t.map((t=>n.createElement(D,{key:t.id,model:e,track:t}))):n.createElement(n.Suspense,{fallback:n.createElement(n.Fragment,null)},n.createElement(ye,{model:e}))))})),ve=we},32474:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),a=r(48231),o=r(72639),i=r(68446),s=r(99546),l=r(76239);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c.apply(null,arguments)}const d=(0,i.observer)((function({model:e,overview:t,useOffset:r=!0}){const i=(0,a.A)(),d=Number(r),{interRegionPaddingWidth:u,offsetPx:p,dynamicBlocks:m,cytobandOffset:g}=e,{contentBlocks:h,totalWidthPxWithoutBorders:f}=m,y=i.palette.tertiary.light;if(!h.length)return null;const b=h.at(0),w=h.at(-1),v=(t.bpToPx({...b,coord:b.reversed?b.end:b.start})||0)+g*d,C=(t.bpToPx({...w,coord:w.reversed?w.start:w.end})||0)+g*d,S=Math.max(0,-p),k=S+f+h.length*u/2,T=[[S,l.Ij],[k,l.Ij],[C,0],[v,0]];return n.createElement("polygon",c({points:T.toString()},(0,s.getFillProps)((0,o.X4)(y,.3)),(0,s.getStrokeProps)((0,o.X4)(y,.8))))}))},5658:(e,t,r)=>{"use strict";r.d(t,{A:()=>b});var n=r(7552),a=r(68446),o=r(99546),i=r(8656),s=r(48901),l=r(1343),c=r(61723),d=r(93117),u=r(59121),p=r(25914);const m=(0,n.lazy)((()=>r.e(9374).then(r.bind(r,39374))));function g(){const[e,t]=(0,n.useState)(!1);return n.createElement(n.Fragment,null,n.createElement(c.A,{onClick:()=>{t(!0)},size:"small"},n.createElement(p.A,{fontSize:"small"})),e?n.createElement(n.Suspense,{fallback:null},n.createElement(m,{handleClose:()=>{t(!1)}})):null)}function h({showHelp:e,endAdornment:t}){return n.createElement(n.Fragment,null,n.createElement(d.A,{position:"end",style:{marginRight:7}},n.createElement(u.A,{fontSize:"small"}),e?n.createElement(g,null):null),t)}function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},f.apply(null,arguments)}function y({TextFieldProps:e,inputBoxVal:t,params:r,showHelp:a,setInputValue:o,setCurrentSearch:i}){const{helperText:s,InputProps:c={}}=e;return n.createElement(l.A,f({onBlur:()=>{o(t)}},r,e,{size:"small",helperText:s,slotProps:{input:{...r.InputProps,...c,endAdornment:n.createElement(h,{showHelp:a,endAdornment:r.InputProps.endAdornment})}},placeholder:"Search for location",onChange:e=>{i(e.target.value)}}))}const b=(0,a.observer)((function({model:e,onSelect:t,assemblyName:r,style:a,fetchResults:l,onChange:c,value:d,showHelp:u=!0,minWidth:p=200,maxWidth:m=550,TextFieldProps:g={}}){const h=(0,o.getSession)(e),{assemblyManager:f}=h,[b,w]=(0,n.useState)(!1),[v,C]=(0,n.useState)(!0),[S,k]=(0,n.useState)(""),[T,x]=(0,n.useState)(""),[A,P]=(0,n.useState)(),M=(0,o.useDebounce)(S,300),E=r?f.get(r):void 0,{coarseVisibleLocStrings:R,hasDisplayedRegions:I}=e;(0,n.useEffect)((()=>{(async()=>{try{if(""===M||!r)return;C(!1);const e=await l(M);C(!0),P(function(e){return Object.entries(function(e){const t={};for(const r of e){const e=r.getDisplayString();t[e]||(t[e]=[]),t[e].push(r)}return t}(e)).map((([e,t])=>1===t.length?{result:t[0]}:{result:new i.A({displayString:e,results:t,label:e})}))}(e))}catch(e){console.error(e),h.notifyError(`${e}`,e)}})()}),[r,l,M,h]);const N=R||d||"",F=Math.min(Math.max((0,o.measureText)(N,14)+100,p),m),L=E?.refNames,D=L?.map((e=>({result:new i.S({refName:e,label:e,matchedAttribute:"refName"})})))||[];return n.createElement(s.A,{"data-testid":"autocomplete",disableListWrap:!0,disableClearable:!0,disabled:!r,freeSolo:!0,includeInputInList:!0,selectOnFocus:!0,style:{...a,width:F},value:N,loading:!v,inputValue:T,onInputChange:(e,t)=>{x(t),c?.(t)},loadingText:"loading results",open:b,onOpen:()=>{w(!0)},onClose:()=>{w(!1),C(!0),I&&(k(""),P(void 0))},onChange:(e,n)=>{n&&r&&(t?.("string"==typeof n?new i.A({label:n}):n.result),x(N))},options:A?.length?A:D,getOptionDisabled:e=>"limitOption"===e.group,filterOptions:(e,{inputValue:t})=>function(e,t){const r=(n=e,a=t.toLocaleLowerCase(),n.filter((({result:e})=>e.getLabel().toLowerCase().includes(a)||e.matchedObject)));var n,a;return[...r.slice(0,100),...r.length>100?[{group:"limitOption",result:new i.A({label:"keep typing for more results"})}]:[]]}(e,t),renderInput:e=>n.createElement(y,{showHelp:u,params:e,inputBoxVal:N,TextFieldProps:g,setCurrentSearch:k,setInputValue:x}),getOptionLabel:e=>"string"==typeof e?e:e.result.getDisplayString()})}))},91289:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var n=r(7552),a=r(75785),o=r(72639),i=r(9555),s=r(36715),l=r(99546);const c=(0,a.n9)()((e=>{const{tertiary:t}=e.palette;return{rubberband:{height:"100%",background:(0,o.X4)(t.light,.7),position:"absolute",zIndex:10,textAlign:"center",overflow:"hidden"},rubberbandControl:{cursor:"crosshair",width:"100%",minHeight:8},rubberbandText:{color:t.contrastText},popover:{mouseEvents:"none",cursor:"crosshair"},paper:{paddingLeft:e.spacing(1),paddingRight:e.spacing(1)}}}));function d({leftBpOffset:e,rightBpOffset:t,numOfBpSelected:r,left:a,width:o}){const d=(0,n.useRef)(null),{classes:u}=c();return n.createElement(n.Fragment,null,d.current?n.createElement(n.Fragment,null,n.createElement(i.Ay,{className:u.popover,classes:{paper:u.paper},open:!0,anchorEl:d.current,anchorOrigin:{vertical:"top",horizontal:"left"},transformOrigin:{vertical:"bottom",horizontal:"right"},keepMounted:!0,disableRestoreFocus:!0},n.createElement(s.A,null,(0,l.stringify)(e))),n.createElement(i.Ay,{className:u.popover,classes:{paper:u.paper},open:!0,anchorEl:d.current,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"bottom",horizontal:"left"},keepMounted:!0,disableRestoreFocus:!0},n.createElement(s.A,null,(0,l.stringify)(t)))):null,n.createElement("div",{ref:d,className:u.rubberband,style:{left:a,width:o}},r?n.createElement(s.A,{variant:"h6",className:u.rubberbandText},(0,l.toLocale)(r)," bp"):null))}},50574:(e,t,r)=>{"use strict";r.d(t,{Jf:()=>o,Pn:()=>i,S5:()=>s});var n=r(99546),a=r(8656);async function o({queryString:e,searchType:t,searchScope:r,rankSearchResults:o,textSearchManager:i,assembly:s}){i||console.warn("No text search manager");const l=await(i?.search({queryString:e,searchType:t},r,o)),c=s?.allRefNames?.filter((t=>t.toLowerCase().startsWith(e.toLowerCase()))).slice(0,10).map((e=>new a.A({label:e})));return(0,n.dedupe)([...c||[],...l||[]],(e=>e.getId()))}function i(e,t){return e.clientX-(t?.getBoundingClientRect().left||0)}function s(e,t){return e?.cytobands?.map((t=>({refName:e.getCanonicalRefName(t.get("refName"))||t.get("refName"),start:t.get("start"),end:t.get("end"),type:t.get("type")}))).filter((e=>e.refName===t))||[]}},76239:(e,t,r)=>{"use strict";r.d(t,{Es:()=>l,Gu:()=>a,Ij:()=>n,P5:()=>c,Rd:()=>s,i3:()=>i,jE:()=>o});const n=48,a=20,o=17,i=3,s=2,l=7,c=32},98753:(e,t,r)=>{"use strict";r.d(t,{$:()=>w,z:()=>g,renderToSvg:()=>x});var n=r(7552),a=r(42489),o=r(99546),i=r(20139),s=r(49823),l=r(91468),c=r(36422),d=r(48231);function u({width:e,height:t,shift:r}){const a=(0,d.A)();return n.createElement("rect",{width:e+2*r,height:t,fill:(0,o.stripAlpha)(a.palette.background.default)})}function p({model:e,height:t}){const{dynamicBlocks:r,offsetPx:a,interRegionPaddingWidth:o}=e;return n.createElement(n.Fragment,null,r.contentBlocks.slice(1).map((e=>n.createElement("rect",{key:e.key,x:e.offsetPx-a-o,width:o,y:0,height:t,fill:"grey"}))))}function m({trackLabels:e,trackName:t,fontSize:r,trackLabelOffset:a,x:i}){const s=(0,d.A)(),l=(0,o.stripAlpha)(s.palette.text.primary),c="overlay"===e?5:0,u="offset"===e?5:0,p=(0,o.coarseStripHTML)(t);return"none"!==e?n.createElement("g",null,"left"===e?n.createElement("text",{x:a-40,y:20,fill:l,fontSize:r,dominantBaseline:"hanging",textAnchor:"end"},p):n.createElement("text",{x:i+c,y:u,fill:l,fontSize:r,dominantBaseline:"hanging"},p)):null}function g({displayResults:e,model:t,offset:r,textHeight:a,fontSize:i,trackLabels:s="offset",trackLabelOffset:c=0}){const d=(0,o.getSession)(t),u="offset"===s?a:0;return n.createElement(n.Fragment,null,e.map((({track:e,result:a})=>{const o=r,g=e.configuration,h=(0,l.getTrackName)(g,d),f=e.displays[0],y=Math.max(-t.offsetPx,0);return r+=f.height+u,n.createElement("g",{key:g.trackId,transform:`translate(0 ${o})`},n.createElement("g",{transform:`translate(${c} ${u})`},n.createElement(p,{model:t,height:f.height}),a),n.createElement(m,{trackName:h,fontSize:i,trackLabels:s,trackLabelOffset:c,x:y}))})))}var h=r(97884),f=r(84481),y=r(27703);function b({start:e,end:t,bpPerPx:r,reversed:a=!1,major:i=!0,minor:s=!0,hideText:l=!1}){const c=(0,y.H2)(e,t,r,i,s),u=(0,d.A)(),p=(0,o.stripAlpha)(u.palette.text.secondary);return n.createElement(n.Fragment,null,c.map((o=>{const i=(a?t-o.base:o.base-e)/r;return n.createElement("line",{key:`tick-${o.base}`,x1:i,x2:i,y1:0,y2:"major"===o.type?6:4,strokeWidth:1,stroke:p})})),l?null:c.filter((e=>"major"===e.type)).map((i=>{const s=(a?t-i.base:i.base-e)/r;return n.createElement("text",{key:`label-${i.base}`,x:s-3,y:18,fontSize:11,fill:p},(0,o.getTickDisplayStr)(i.base+1,r))})))}function w({model:e,fontSize:t}){const{dynamicBlocks:{contentBlocks:r},offsetPx:a,bpPerPx:i}=e,s=r.length<5,l=(0,d.A)(),c=(0,o.stripAlpha)(l.palette.text.primary);return n.createElement(n.Fragment,null,n.createElement(p,{model:e,height:30}),r.map((e=>{const{start:r,end:o,key:l,reversed:d,offsetPx:u,refName:p,widthPx:m}=e,g=u-a,h=`clip-${l}`;return n.createElement("g",{key:l},n.createElement("defs",null,n.createElement("clipPath",{id:h},n.createElement("rect",{x:0,y:0,width:m,height:100}))),n.createElement("g",{transform:`translate(${g} 0)`},n.createElement("g",{clipPath:`url(#${h})`},n.createElement("text",{x:4,y:t,fontSize:t,fill:c},p),n.createElement("g",{transform:"translate(0 20)"},n.createElement(b,{hideText:!s,start:r,end:o,bpPerPx:i,reversed:d})))))})))}function v({model:e,fontSize:t}){const{offsetPx:r,dynamicBlocks:{totalWidthPxWithoutBorders:a,totalBp:i}}=e,s=(0,d.A)(),l=(0,o.getBpDisplayStr)(i),c=Math.max(-r,0),u=c+a,p=(0,o.stripAlpha)(s.palette.text.secondary),m=c+(u-c)/2,g=t;return n.createElement(n.Fragment,null,n.createElement("line",{x1:c,x2:u,y1:10,y2:10,stroke:p}),n.createElement("line",{x1:c,x2:c,y1:5,y2:15,stroke:p}),n.createElement("line",{x1:u,x2:u,y1:5,y2:15,stroke:p}),n.createElement("text",{x:m,y:g,textAnchor:"middle",dominantBaseline:"hanging",fontSize:t,fill:p},l))}var C=r(32474),S=r(76239);function k({model:e,fontSize:t,cytobandHeight:r,rulerHeight:a}){const{width:i,assemblyNames:s,showCytobands:l,displayedRegions:c}=e,{assemblyManager:u}=(0,o.getSession)(e),p=s.length>1?"":s[0],m=u.get(p),g=(0,d.A)(),y=(0,o.stripAlpha)(g.palette.text.primary),b=h.A.create({displayedRegions:JSON.parse(JSON.stringify(c)),interRegionPaddingWidth:0,minimumBlockWidth:e.minimumBlockWidth}),k=e.dynamicBlocks.contentBlocks;if(!k.length)return null;b.setVolatileWidth(i),b.showAllRegions();const T=b.dynamicBlocks.contentBlocks[0],x=k.at(0),A=k.at(-1),P=b.bpToPx({...x,coord:x.reversed?x.end:x.start})||0,M=b.bpToPx({...A,coord:A.reversed?A.start:A.end})||0,E=+l*r;return n.createElement("g",{id:"header"},n.createElement("text",{x:0,y:0,dominantBaseline:"hanging",fontSize:t,fill:y},p),l?n.createElement("g",{transform:`translate(0 ${a})`},n.createElement(f.A,{overview:b,assembly:m,block:T}),n.createElement("rect",{stroke:"red",fill:"rgb(255,0,0)",fillOpacity:.1,width:Math.max(M-P,.5),height:S.Gu-1,x:P,y:.5}),n.createElement("g",{transform:`translate(0,${S.Gu})`},n.createElement(C.A,{overview:b,model:e,useOffset:!1}))):null,n.createElement("g",{transform:`translate(0 ${t+E})`},n.createElement(v,{model:e,fontSize:t})),n.createElement("g",{transform:`translate(0 ${a+E})`},n.createElement(w,{model:e,fontSize:t})))}var T=r(26612);async function x(e,t){await(0,a.when)((()=>e.initialized));const{textHeight:r=18,headerHeight:d=40,rulerHeight:p=50,fontSize:m=13,cytobandHeight:h=100,trackLabels:f="offset",themeName:y="default",Wrapper:b=({children:e})=>e}=t,w=(0,o.getSession)(e),{allThemes:v}=w,{createRootFn:C}=(0,c.getRoot)(e),S=v?.()[y],{width:x,tracks:A,showCytobands:P}=e,M=d+p+ +P*h+10,E=(0,T.m)(A,r,f)+M+100,R=await Promise.all(A.map((async e=>{const r=e.displays[0];return await(0,a.when)((()=>!r.renderProps().notReady)),{track:e,result:await r.renderSvg({...t,theme:S})}}))),I=(0,o.max)(A.map((e=>(0,o.measureText)((0,l.getTrackName)(e.configuration,w),m))),0)+40,N="left"===f?I:0,F=x+N;return(0,o.renderToStaticMarkup)(n.createElement(i.A,{theme:(0,s.createJBrowseTheme)(S)},n.createElement(b,null,n.createElement("svg",{width:F,height:E,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:[0,0,F+100,E].toString()},n.createElement(u,{width:F,height:E,shift:50}),n.createElement("g",{transform:"translate(50 0)"},n.createElement("g",{transform:`translate(${N})`},n.createElement(k,{model:e,fontSize:m,rulerHeight:p,cytobandHeight:h})),n.createElement(g,{textHeight:r,fontSize:m,model:e,displayResults:R,offset:M,trackLabels:f,trackLabelOffset:N}))))),C)}},26612:(e,t,r)=>{"use strict";r.d(t,{m:()=>a});var n=r(99546);function a(e,t,r){return(0,n.sum)(e.map((e=>e.displays[0].height+(["none","left"].includes(r)?0:t))))}},27703:(e,t,r)=>{"use strict";r.d(t,{CU:()=>s,Cz:()=>i,H2:()=>o,i3:()=>a});var n=r(99546);function a(e,t,r){const n=t*(e=Math.abs(e));let a=10**Number.parseInt(Number(n).toExponential().split(/e/i)[1],10);for(;a<n&&(a*=2,!(a>=n));)a*=2.5;a=Math.max(a,5);const o=a/e;let i=0;return!(a%10)&&o/10>=r?i=a/10:!(a%5)&&o/5>=r?i=a/5:!(a%2)&&o/2>=r&&(i=a/2),{majorPitch:a,minorPitch:i}}function o(e,t,r,n=!0,o=!0){const i=a(r,60,15);let s=e,l=t;r<0&&([s,l]=[l,s]),s-=Math.abs(20*r)-1,l+=Math.abs(20*r)+1;const c=i.minorPitch||i.majorPitch;let d=0;const u=[];for(let e=Math.floor(s/c)*c;e<Math.ceil(l/c)*c+1;e+=c)o&&e%(2*i.majorPitch)?(u.push({type:"minor",base:e-1,index:d}),d+=1):!n||e%(2*i.majorPitch)||(u.push({type:"major",base:e-1,index:d}),d+=1);return u}async function i(e,t,r){return Promise.all(e.map((async e=>{const n=e.assemblyName||r;if(!n)throw new Error("no assembly provided");const a=await t.waitForAssembly(n),{refName:o}=e;if(!a)throw new Error(`assembly ${n} not found`);const{regions:i}=a;if(!i)throw new Error(`regions not loaded yet for ${n}`);const s=a.getCanonicalRefName(e.refName);if(!s)throw new Error(`Could not find refName ${o} in ${a.name}`);const l=i.find((e=>e.refName===s));if(!l)throw new Error(`Could not find refName ${o} in ${n}`);return{...e,assemblyName:n,parentRegion:l}})))}function s(e,t,r){const a=e.split(/(\s+)/).map((e=>e.trim())).filter((e=>!!e));try{return a.map((e=>(0,n.parseLocString)(e,(e=>r(e,t)))))}catch(e){const[o,i,s]=a;if(/Unknown reference sequence/.exec(`${e}`)&&Number.isInteger(+i)&&Number.isInteger(+s))return[(0,n.parseLocString)(`${o}:${i}..${s}`,(e=>r(e,t)))];throw e}}},20529:(e,t,r)=>{"use strict";r.d(t,{Lr:()=>x,GQ:()=>V,LW:()=>w.A,e6:()=>k,$m:()=>nt.$,zh:()=>nt.z,Gd:()=>Je,_e:()=>b,Ki:()=>l,Ay:()=>yt,lw:()=>ut,bN:()=>ht,mJ:()=>ft.m});var n=r(12678),a=r(99546),o=r(68584),i=r(36422),s=r(11370);const l=(0,o.ConfigurationSchema)("BaseLinearDisplay",{maxFeatureScreenDensity:{type:"number",description:"maximum features per pixel that is displayed in the view, used if byte size estimates not available",defaultValue:.3},fetchSizeLimit:{type:"number",defaultValue:1e6,description:"maximum data to attempt to download for a given track, used if adapter doesn't specify one"},height:{type:"number",defaultValue:100,description:"default height for the track"},mouseover:{type:"string",description:"text to display when the cursor hovers over a feature",defaultValue:"jexl:get(feature,'name')",contextVariable:["feature"]},jexlFilters:{type:"stringArray",description:"default set of jexl filters to apply to a track. note: these do not use the jexl prefix because they have a deferred evaluation system",defaultValue:[]}},{explicitIdentifier:"displayId"});var c=r(7552),d=r(1622);class u{constructor(e){this.submaps=e}has(e){for(const t of this.submaps.values())if(t.has(e))return!0;return!1}get(e){for(const t of this.submaps.values())if(t.has(e))return t.get(e)}*values(){for(const e of this.keys())yield this.get(e)}*keys(){const e=new Set;for(const t of this.submaps.values())for(const r of t.keys())e.add(r);for(const t of e)yield t}find(e){for(const t of this.submaps.values())for(const r of t.values())if(e(r))return r}*[Symbol.iterator](){for(const e of this.keys())yield[e,this.get(e)]}*entries(){for(const e of this.keys())yield[e,this.get(e)]}}var p=r(91468),m=r(42489),g=r(63670),h=r(86013),f=r(66344);const y=20;function b(){return i.types.model({heightPreConfig:i.types.maybe(i.types.refinement("displayHeight",i.types.number,(e=>e>=y)))}).volatile((()=>({scrollTop:0}))).views((e=>({get height(){return e.heightPreConfig??(0,o.getConf)(e,"height")}}))).actions((e=>({setScrollTop(t){e.scrollTop=t},setHeight:t=>(e.heightPreConfig=Math.max(t,y),e.height),resizeHeight(t){const r=e.height;return this.setHeight(e.height+t)-r}})))}var w=r(37205),v=r(5401);const C=function({model:e}){const{regionTooLargeReason:t}=e;return c.createElement(w.A,{severity:"warning",action:c.createElement(v.A,{onClick:()=>{e.setFeatureDensityStatsLimit(e.featureDensityStats),e.reload()}},"Force load"),message:[t,"Zoom in to see features or force load (may be slow)"].filter((e=>!!e)).join(". ")})};var S=r(21479);function k(){return i.types.model({userBpPerPxLimit:i.types.maybe(i.types.number),userByteSizeLimit:i.types.maybe(i.types.number)}).volatile((()=>({featureDensityStatsP:void 0,featureDensityStats:void 0,currStatsBpPerPx:0}))).views((e=>({get currentBytesRequested(){return e.featureDensityStats?.bytes||0},get currentFeatureScreenDensity(){const t=(0,a.getContainingView)(e);return(e.featureDensityStats?.featureDensity||0)*t.bpPerPx},get maxFeatureScreenDensity(){return(0,o.getConf)(e,"maxFeatureScreenDensity")},get featureDensityStatsReady(){const t=(0,a.getContainingView)(e);return!(e.currStatsBpPerPx!==t.bpPerPx||!e.featureDensityStats&&!e.userBpPerPxLimit)},get maxAllowableBytes(){return e.userByteSizeLimit||e.featureDensityStats?.fetchSizeLimit||(0,o.getConf)(e,"fetchSizeLimit")}}))).actions((e=>({afterAttach(){(0,i.addDisposer)(e,(0,m.autorun)((()=>async function(e){try{const t=(0,a.getContainingView)(e);if(!t.initialized||!t.staticBlocks.contentBlocks.length||t.bpPerPx===e.currStatsBpPerPx||e.error)return;if(void 0!==e.featureDensityStats?.featureDensity)return void e.setCurrStatsBpPerPx(t.bpPerPx);e.clearFeatureDensityStats(),e.setCurrStatsBpPerPx(t.bpPerPx);const r=await e.getFeatureDensityStats();(0,i.isAlive)(e)&&e.setFeatureDensityStats(r)}catch(t){!(0,a.isAbortException)(t)&&(0,i.isAlive)(e)&&(console.error(t),e.setError(t))}}(e))))}}))).actions((e=>({setCurrStatsBpPerPx(t){e.currStatsBpPerPx=t},setFeatureDensityStatsLimit(t){const r=(0,a.getContainingView)(e);t?.bytes?e.userByteSizeLimit=t.bytes:e.userBpPerPxLimit=r.bpPerPx},getFeatureDensityStats(){return e.featureDensityStatsP||(e.featureDensityStatsP=(0,S.bf)(e).catch((t=>{throw(0,i.isAlive)(e)&&this.setFeatureDensityStatsP(void 0),t}))),e.featureDensityStatsP},setFeatureDensityStatsP(t){e.featureDensityStatsP=t},setFeatureDensityStats(t){e.featureDensityStats=t},clearFeatureDensityStats(){e.featureDensityStatsP=void 0,e.featureDensityStats=void 0}}))).views((e=>({get regionTooLarge(){const t=(0,a.getContainingView)(e);return!(!e.featureDensityStatsReady||t.dynamicBlocks.totalBp<2e4)&&(e.currentBytesRequested>e.maxAllowableBytes||(e.userBpPerPxLimit?t.bpPerPx>e.userBpPerPxLimit:e.currentFeatureScreenDensity>e.maxFeatureScreenDensity))},get regionTooLargeReason(){const t=e.currentBytesRequested,r=e.maxAllowableBytes;return t&&t>r?`Requested too much data (${(0,S.W7)(t)})`:""}}))).views((e=>({regionCannotBeRenderedText:t=>e.regionTooLarge?"Force load to see features":"",regionCannotBeRendered:t=>e.regionTooLarge?c.createElement(C,{model:e}):null})))}const T=(0,c.lazy)((()=>Promise.resolve().then(r.bind(r,2286)))),x=i.types.compose("BaseLinearDisplay",d.BaseDisplay,b(),k(),i.types.model({blockState:i.types.map(f.A),configuration:(0,o.ConfigurationReference)(l)})).volatile((()=>({featureIdUnderMouse:void 0,contextMenuFeature:void 0}))).views((e=>({get DisplayMessageComponent(){},get blockType(){return"staticBlocks"},get blockDefinitions(){const t=(0,a.getContainingView)(e);if(!t.initialized)throw new Error("view not initialized yet");return t[this.blockType]}}))).views((e=>({get renderDelay(){return 50},get TooltipComponent(){return T},get selectedFeatureId(){if((0,i.isAlive)(e)){const{selection:t}=(0,a.getSession)(e);if((0,a.isFeature)(t))return t.id()}}}))).views((e=>({get features(){const t=[];for(const r of e.blockState.values())r.features&&t.push(r.features);return new u(t)},get featureUnderMouse(){const t=e.featureIdUnderMouse;return t?this.features.get(t):void 0},getFeatureOverlapping:(t,r,n)=>e.blockState.get(t)?.layout?.getByCoord(r,n),getFeatureByID:(t,r)=>e.blockState.get(t)?.layout?.getByID(r),searchFeatureByID(t){let r;return e.blockState.forEach((e=>{const n=e.layout?.getByID(t);n&&(r=n)})),r}}))).actions((e=>({addBlock(t,r){e.blockState.set(t,f.A.create({key:t,region:r.toRegion()}))},deleteBlock(t){e.blockState.delete(t)},selectFeature(t){const r=(0,a.getSession)(e);if((0,a.isSessionModelWithWidgets)(r)){const n=r.addWidget("BaseFeatureWidget","baseFeature",{view:(0,a.getContainingView)(e),track:(0,a.getContainingTrack)(e),featureData:t.toJSON()});r.showWidget(n)}(0,a.isSelectionContainer)(r)&&r.setSelection(t)},navToFeature(t){(0,a.getContainingView)(e).navTo({refName:t.get("refName"),start:t.get("start"),end:t.get("end")})},clearFeatureSelection(){(0,a.getSession)(e).clearSelection()},setFeatureIdUnderMouse(t){e.featureIdUnderMouse=t},setContextMenuFeature(t){e.contextMenuFeature=t}}))).actions((e=>{const{reload:t}=e;return{async reload(){e.setError(),e.setCurrStatsBpPerPx(0),e.clearFeatureDensityStats(),[...e.blockState.values()].forEach((e=>{e.doReload()})),t()}}})).views((e=>({trackMenuItems:()=>[],contextMenuItems:()=>[...e.contextMenuFeature?[{label:"Open feature details",icon:g.A,onClick:()=>{e.contextMenuFeature&&e.selectFeature(e.contextMenuFeature)}},{label:"Zoom to feature",icon:h.A,onClick:()=>{e.contextMenuFeature&&e.navToFeature(e.contextMenuFeature)}}]:[]],renderProps:()=>({...(0,p.getParentRenderProps)(e),notReady:!e.featureDensityStatsReady,rpcDriverName:e.rpcDriverName,displayModel:e,onFeatureClick(t,r){const n=r||e.featureIdUnderMouse;if(n){const t=e.features.get(n);t&&e.selectFeature(t)}else e.clearFeatureSelection()},onClick(){e.clearFeatureSelection()},onFeatureContextMenu(t,r){const n=r||e.featureIdUnderMouse;n?e.setContextMenuFeature(e.features.get(n)):e.clearFeatureSelection()},onMouseMove(t,r){e.setFeatureIdUnderMouse(r)},onMouseLeave(t){e.setFeatureIdUnderMouse(void 0)},onContextMenu(){e.setContextMenuFeature(void 0),e.clearFeatureSelection()}})}))).actions((e=>({async renderSvg(t){const{renderBaseLinearDisplaySvg:n}=await r.e(3311).then(r.bind(r,23311));return n(e,t)},afterAttach(){(0,i.addDisposer)(e,(0,m.autorun)((()=>{const t={};(0,a.getContainingView)(e).initialized&&(e.blockDefinitions.contentBlocks.forEach((r=>{t[r.key]=!0,e.blockState.has(r.key)||e.addBlock(r.key,r)})),e.blockState.forEach(((r,n)=>{t[n]||e.deleteBlock(n)})))})))}}))).preProcessSnapshot((e=>{if(!e)return e;const{height:t,...r}=e;return{heightPreConfig:t,...r}})).postProcessSnapshot((e=>{const t=e,{blockState:r,...n}=t;return n}));var A=r(68446),P=r(48231),M=r(75785),E=r(49823),R=r(42752);const I=(0,M.n9)()({linearBlocks:{whiteSpace:"nowrap",textAlign:"left",position:"absolute",minHeight:"100%",display:"flex"},heightOverflowed:{position:"absolute",color:"rgb(77,77,77)",borderBottom:"2px solid rgb(77,77,77)",textShadow:"white 0px 0px 1px",whiteSpace:"nowrap",width:"100%",fontWeight:"bold",textAlign:"center",zIndex:2e3,boxSizing:"border-box"}}),N=(0,A.observer)((function({model:e}){const{classes:t}=I(),{blockDefinitions:r,blockState:n}=e;return c.createElement(c.Fragment,null,r.map((r=>{const a=`${e.id}-${r.key}`;if("ContentBlock"===r.type){const e=n.get(r.key);return c.createElement(R.$G,{block:r,key:a},e?.ReactComponent?c.createElement(e.ReactComponent,{model:e}):null,e?.maxHeightReached?c.createElement("div",{className:t.heightOverflowed,style:{top:e.layout.getTotalHeight()-16,pointerEvents:"none",height:16}},"Max height reached"):null)}if("ElidedBlock"===r.type)return c.createElement(R.Db,{key:a,width:r.widthPx});if("InterRegionPaddingBlock"===r.type)return c.createElement(R.fK,{key:a,width:r.widthPx,style:{background:"none"},boundary:"boundary"===r.variant});throw new Error(`invalid block type ${JSON.stringify(r)}`)})))})),F=(0,A.observer)((function({model:e}){const{classes:t}=I(),{blockDefinitions:r}=e,n=(0,a.getContainingView)(e);return c.createElement("div",{className:t.linearBlocks,style:{left:r.offsetPx-n.offsetPx}},c.createElement(N,{model:e}))})),L=F;r(2286);const D=(0,M.n9)()({display:{position:"relative",whiteSpace:"nowrap",textAlign:"left",width:"100%",minHeight:"100%"}}),B=(0,A.observer)((function(e){const{classes:t}=D(),r=(0,P.A)(),n=(0,c.useRef)(null),[a,i]=(0,c.useState)(),[s,l]=(0,c.useState)([0,0]),[d,u]=(0,c.useState)([0,0]),[p,m]=(0,c.useState)(),{model:g,children:h}=e,{TooltipComponent:f,DisplayMessageComponent:y,height:b}=g,w=g.contextMenuItems();return c.createElement("div",{ref:n,"data-testid":`display-${(0,o.getConf)(g,"displayId")}`,className:t.display,onContextMenu:e=>{e.preventDefault(),p?m(void 0):n.current&&m([e.clientX,e.clientY])},onMouseMove:e=>{if(!n.current)return;const t=n.current.getBoundingClientRect(),{left:r,top:a}=t;l([e.clientX-r,e.clientY-a]),u([e.clientX,e.clientY]),i(t)}},y?c.createElement(y,{model:g}):c.createElement(L,e),h,c.createElement(c.Suspense,{fallback:null},c.createElement(f,{model:g,height:b,offsetMouseCoord:s,clientMouseCoord:d,clientRect:a,mouseCoord:s})),c.createElement(E.Menu,{open:Boolean(p)&&w.length>0,onMenuItemClick:(e,t)=>{t(),m(void 0)},onClose:()=>{m(void 0),g.setContextMenuFeature(void 0)},TransitionProps:{onExit:()=>{m(void 0),g.setContextMenuFeature(void 0)}},anchorReference:"anchorPosition",anchorPosition:p?{top:p[1],left:p[0]}:void 0,style:{zIndex:r.zIndex.tooltip},menuItems:w}))})),V=B;var z=r(58921);function O(e){return(0,o.ConfigurationSchema)("LinearBareDisplay",{renderer:e.pluggableConfigSchemaType("renderer")},{baseConfiguration:l,explicitlyTyped:!0})}function H(e){return i.types.compose("LinearBareDisplay",x,i.types.model({type:i.types.literal("LinearBareDisplay"),configuration:(0,o.ConfigurationReference)(e)})).views((e=>{const{renderProps:t}=e;return{renderProps:()=>({...t(),...(0,p.getParentRenderProps)(e),rpcDriverName:e.rpcDriverName,config:e.configuration.renderer}),get rendererTypeName(){return e.configuration.renderer.type}}}))}var j=r(8832),W=r(93707),G=r(88530),$=r(97884),q=r(95095),_=r(45465),U=r(33039),J=r.n(U),X=r(90542),Y=r(25611),K=r(1633),Q=r(95947),Z=r(29417),ee=r(64502),te=r(87809),re=r(53794),ne=r(59121),ae=r(72639),oe=r(943),ie=r(61723),se=r(23758),le=r(91404),ce=r(66195);const de=(0,M.n9)()((e=>({background:{position:"absolute",right:0,zIndex:1001,background:e.palette.background.paper},focusedBackground:{background:(0,ae.X4)(e.palette.secondary.light,.2)}}))),ue=(0,A.observer)((function({model:e}){const{classes:t}=de(),{id:r,bpPerPx:n,maxBpPerPx:o,minBpPerPx:i,scaleFactor:s,hideHeader:l}=e,{focusedViewId:d}=(0,a.getSession)(e);return l?c.createElement(oe.A,{className:t.background},c.createElement(oe.A,{className:d===r?t.focusedBackground:void 0},c.createElement(se.A,{menuItems:e.menuItems()},c.createElement(ce.A,{fontSize:"small"})),c.createElement(ie.A,{"data-testid":"zoom_out",onClick:()=>{e.zoom(2*n)},disabled:n>=o-1e-4||1!==s},c.createElement(le.A,{fontSize:"small"})),c.createElement(ie.A,{"data-testid":"zoom_in",onClick:()=>{e.zoom(n/2)},disabled:n<=i+1e-4||1!==s},c.createElement(te.A,{fontSize:"small"})))):null})),pe=ue;var me=r(36715),ge=r(83867),he=r(40631),fe=r(97147),ye=r(50574),be=r(89003),we=r(91289);const ve=(0,M.n9)()({rubberbandControl:{cursor:"crosshair",width:"100%",minHeight:8},guide:{pointerEvents:"none",height:"100%",width:1,position:"absolute",zIndex:10},rel:{position:"relative"}}),Ce=(0,A.observer)((function({model:e,open:t,guideX:r,overview:n}){const{classes:o}=ve(),{cytobandOffset:i}=e,{assemblyManager:s}=(0,a.getSession)(e),l=n.pxToBp(r-i),d=s.get(l.assemblyName),u=d?.cytobands?.find((e=>l.coord>e.get("start")&&l.coord<e.get("end")&&l.refName===d.getCanonicalRefName(e.get("refName"))));return c.createElement(be.A,{open:t,placement:"top",title:[(0,a.stringify)(l),u?.get("name")].join(" "),arrow:!0},c.createElement("div",{className:o.guide,style:{left:r}}))})),Se=(0,A.observer)((function({model:e,overview:t,ControlComponent:r=c.createElement("div",null)}){const{cytobandOffset:n}=e,[o,i]=(0,c.useState)(),[s,l]=(0,c.useState)(),[d,u]=(0,c.useState)(),p=(0,c.useRef)(null),{classes:m}=ve(),g=void 0!==o;function h(e){e.preventDefault(),e.stopPropagation(),i((0,ye.Pn)(e,p.current))}function f(e){u((0,ye.Pn)(e,p.current))}function y(){u(void 0)}if((0,c.useEffect)((()=>{function r(e){const t=p.current;t&&g&&l((0,ye.Pn)(e,t))}function c(){if(void 0!==o&&void 0!==s&&Math.abs(s-o)>3){const r=Math.min(o,s),a=Math.max(o,s);e.moveTo(t.pxToBp(r-n),t.pxToBp(a-n))}if(void 0!==o&&void 0===s){const r=t.pxToBp(o-n);r.refName?e.centerAt(Math.round(r.coord),r.refName,r.index):((0,a.getSession)(e).notify("unknown position clicked"),console.error("unknown position clicked",r))}i(void 0),l(void 0),void 0!==o&&u(void 0)}function d(e){"Escape"===e.key&&(i(void 0),l(void 0))}return g?(window.addEventListener("mousemove",r,!0),window.addEventListener("mouseup",c,!0),window.addEventListener("keydown",d,!0),()=>{window.removeEventListener("mousemove",r,!0),window.removeEventListener("mouseup",c,!0),window.removeEventListener("keydown",d,!0)}):()=>{}}),[g,s,o,e,t,n]),void 0===o)return c.createElement("div",{className:m.rel},void 0!==d?c.createElement(Ce,{model:e,open:!g,overview:t,guideX:d}):null,c.createElement("div",{className:m.rubberbandControl,ref:p,onMouseDown:h,onMouseOut:y,onMouseMove:f},r));let b,w,v=o||0,C=0;return void 0!==s&&(v=s<o?s:o,C=s-o),o&&(b=t.pxToBp(o-n),w=t.pxToBp(o+C-n),void 0!==s&&s<o&&([b,w]=[w,b])),c.createElement("div",{className:m.rel},b&&w?c.createElement(we.A,{leftBpOffset:b,rightBpOffset:w,width:Math.abs(C),left:v}):null,c.createElement("div",{"data-testid":"rubberband_controls",className:m.rubberbandControl,ref:p,onMouseDown:h,onMouseOut:y,onMouseMove:f},r))})),ke=Se;var Te=r(84481),xe=r(32474),Ae=r(87485);const Pe=(0,M.n9)()((e=>({highlight:{height:"100%",position:"absolute",background:(0,Ae.M)(e.palette.highlight.main).alpha(.35).toRgbString(),borderLeft:`1px solid ${e.palette.highlight.main}`,borderRight:`1px solid ${e.palette.highlight.main}`}}))),Me=(0,A.observer)((function({model:e,overview:t}){const{classes:r}=Pe(),{highlight:n,cytobandOffset:o}=e,i=(0,a.getSession)(e),{assemblyManager:s}=i;return n.map((e=>{const r=s.get(e.assemblyName),n=r?.getCanonicalRefName(e.refName)??e.refName,a=t.bpToPx({...e,refName:n,coord:e.start}),i=t.bpToPx({...e,refName:n,coord:e.end});return void 0!==a&&void 0!==i?{width:Math.abs(i-a),left:a+o}:void 0})).filter(a.notEmpty).map((({left:e,width:t},n)=>c.createElement("div",{key:`${e}_${t}_${n}`,className:r.highlight,style:{width:t,left:e}})))})),Ee=Me;var Re=r(27703),Ie=r(76239);const Ne=(0,M.n9)()({scalebarLabel:{height:Ie.Gu,position:"absolute",display:"flex",justifyContent:"center",pointerEvents:"none"}}),Fe=(0,A.observer)((function({block:e,scale:t,overview:r,model:n}){const{classes:o}=Ne(),{start:i,end:s,reversed:l,refName:d,assemblyName:u}=e,{majorPitch:p}=(0,Re.i3)(t,120,15),{assemblyManager:m}=(0,a.getSession)(n),g=m.get(u),h=g?.getRefNameColor(d),f=[];for(let e=0;e<Math.floor((s-i)/p);e++){const t=(e+1)*p;f.push(l?s-t:i+t)}return f.map(((n,i)=>c.createElement(me.A,{key:`${JSON.stringify(e)}-${n}-${i}`,className:o.scalebarLabel,variant:"body2",style:{left:(i+1)*p/t,pointerEvents:"none",color:h}},(0,a.getTickDisplayStr)(n,r.bpPerPx))))})),Le=Fe,De=(0,M.n9)()((e=>({scalebar:{height:Ie.Gu},scalebarBorder:{border:"1px solid"},scalebarContig:{backgroundColor:e.palette.background.default,position:"absolute",top:0,height:Ie.Gu,overflow:"hidden"},scalebarContigForward:{backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='${e.palette.divider}'/%3E%3C/svg%3E")`,backgroundRepeat:"repeat"},scalebarContigReverse:{backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='${e.palette.divider}'/%3E%3C/svg%3E")`,backgroundRepeat:"repeat"},scalebarRefName:{position:"absolute",fontWeight:"bold",pointerEvents:"none",zIndex:100},scalebarVisibleRegion:{position:"absolute",height:Ie.Gu,pointerEvents:"none",zIndex:100,border:"1px solid"},overview:{height:Ie.Ij,position:"relative"},overviewSvg:{pointerEvents:"none",width:"100%",position:"absolute"}}))),Be=(0,A.observer)((function({scale:e,model:t,block:r,overview:n}){const{classes:o,cx:i}=De(),s=(0,P.A)(),{cytobandOffset:l,showCytobands:d}=t,{reversed:u,refName:p,assemblyName:m}=r,{assemblyManager:g}=(0,a.getSession)(t),h=g.get(m),f=h?.getRefNameColor(p),y=d&&(0,ye.S5)(h,r.refName).length;return c.createElement("div",null,c.createElement(me.A,{style:{left:r.offsetPx+3,color:y?s.palette.text.primary:f},className:o.scalebarRefName},p),c.createElement("div",{className:i(o.scalebarContig,y?void 0:u?o.scalebarContigReverse:o.scalebarContigForward,y?void 0:o.scalebarBorder),style:{left:r.offsetPx+l,width:r.widthPx,borderColor:f}},y?c.createElement("svg",{style:{width:"100%"}},c.createElement(Te.A,{overview:n,assembly:h,block:r})):c.createElement(Le,{model:t,overview:n,scale:e,block:r})))})),Ve=(0,A.observer)((function({model:e,scale:t,overview:r}){const{classes:n}=De(),o=(0,P.A)(),{dynamicBlocks:i,showCytobands:s,cytobandOffset:l}=e,{pluginManager:d}=(0,a.getEnv)(e),u=i.contentBlocks,p=r.dynamicBlocks,m=o.palette.tertiary.light;if(!u.length)return null;const g=u.at(0),h=u.at(-1),f=r.bpToPx({...g,coord:g.reversed?g.end:g.start})||0,y=r.bpToPx({...h,coord:h.reversed?h.start:h.end})||0,b=s?"#f00":m,w=s?.1:.3,v=d.evaluateExtensionPoint("LinearGenomeView-OverviewScalebarComponent",void 0,{model:e,overview:r});return c.createElement("div",{className:n.scalebar},c.createElement("div",{className:n.scalebarVisibleRegion,style:{width:y-f,left:f+l,background:(0,ae.X4)(b,w),borderColor:b}}),p.map(((a,o)=>"ContentBlock"!==a.type?c.createElement("div",{key:`${JSON.stringify(a)}-${o}`,className:n.scalebarContig,style:{width:a.widthPx,left:a.offsetPx,backgroundColor:"#999",backgroundImage:"repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)"}}):c.createElement(Be,{scale:t,block:a,model:e,overview:r,key:`${JSON.stringify(a)}-${o}`}))),c.createElement(Ee,{model:e,overview:r}),v)})),ze=(0,A.observer)((function({model:e,children:t}){const{classes:r}=De(),{minimumBlockWidth:n,totalBp:a,width:o,cytobandOffset:i,displayedRegions:s}=e,l=o-i,d=JSON.stringify(s),u=(0,c.useMemo)((()=>{const e=$.A.create({displayedRegions:JSON.parse(d),interRegionPaddingWidth:0,minimumBlockWidth:n});return e.setVolatileWidth(l),e.showAllRegions(),e}),[d,n,l]),p=a/(l-2*(s.length-1));return c.createElement("div",null,c.createElement(ke,{model:e,overview:u,ControlComponent:c.createElement(Ve,{model:e,overview:u,scale:p})}),c.createElement("div",{className:r.overview},c.createElement("svg",{height:Ie.Ij,className:r.overviewSvg},c.createElement(xe.A,{model:e,overview:u})),t))})),Oe=ze;var He=r(77005);const je=(0,M.n9)()((e=>({container:{display:"flex",flexDirection:"row",alignItems:"center"},slider:{width:70,color:e.palette.text.secondary}}))),We=(0,A.observer)((function({model:e}){const{classes:t}=je(),{maxBpPerPx:r,minBpPerPx:n,bpPerPx:a}=e,[o,i]=(0,c.useState)(100*-Math.log2(a));return(0,c.useEffect)((()=>{i(100*-Math.log2(a))}),[a]),c.createElement("div",{className:t.container},c.createElement(ie.A,{"data-testid":"zoom_out",onClick:()=>{e.zoom(2*a)},disabled:a>=r-1e-4,size:"large"},c.createElement(le.A,null)),c.createElement(He.Ay,{size:"small",className:t.slider,value:o,min:100*-Math.log2(r),max:100*-Math.log2(n),onChange:(e,t)=>{i(t)},onChangeCommitted:()=>e.zoomTo(2**(-o/100))}),c.createElement(ie.A,{"data-testid":"zoom_in",onClick:()=>{e.zoom(e.bpPerPx/2)},disabled:a<=n+1e-4,size:"large"},c.createElement(te.A,null)))})),Ge=We;var $e=r(5658),qe=r(6184);const _e=(0,M.n9)()((()=>({headerRefName:{minWidth:100}}))),Ue=(0,A.observer)((function({model:e,showHelp:t}){const{classes:r}=_e(),n=(0,P.A)(),o=(0,a.getSession)(e),{textSearchManager:i,assemblyManager:s}=o,{assemblyNames:l,rankSearchResults:d}=e,u=l[0],p=s.get(u),m=e.searchScope(u);return c.createElement($e.A,{showHelp:t,onSelect:async t=>{try{t.hasLocation()?await(0,qe.Kd)({option:t,model:e,assemblyName:u}):t.results?.length?e.setSearchResults(t.results,t.getLabel()):p&&await(0,qe.cm)({input:t.getLabel(),assembly:p,model:e})}catch(t){console.error(t),(0,a.getSession)(e).notify(`${t}`,"warning")}},assemblyName:u,fetchResults:e=>(0,ye.Jf)({queryString:e,searchScope:m,rankSearchResults:d,textSearchManager:i,assembly:p}),model:e,minWidth:175,TextFieldProps:{variant:"outlined",className:r.headerRefName,style:{margin:Ie.Es},InputProps:{style:{padding:0,height:Ie.P5,background:(0,ae.X4)(n.palette.background.paper,.8)}}}})})),Je=Ue,Xe=(0,M.n9)()((e=>({headerBar:{display:"flex"},headerForm:{flexWrap:"nowrap",marginRight:7},spacer:{flexGrow:1},panButton:{background:(0,ae.X4)(e.palette.background.paper,.8),color:e.palette.text.primary,margin:Ie.Es},bp:{display:"flex",alignItems:"center",marginLeft:5},toggleButton:{height:44,border:"none",marginLeft:e.spacing(4)},buttonSpacer:{marginRight:e.spacing(2)}}))),Ye=(0,A.observer)((({model:e})=>{const{classes:t}=Xe();return c.createElement(ie.A,{onClick:e.activateTrackSelector,className:t.toggleButton,title:"Open track selector",value:"track_select"},c.createElement(X.xU,{className:t.buttonSpacer}))}));function Ke({model:e}){const{classes:t}=Xe();return c.createElement(c.Fragment,null,c.createElement(v.A,{variant:"outlined",className:t.panButton,onClick:()=>{e.slide(-.9)}},c.createElement(fe.A,null)),c.createElement(v.A,{variant:"outlined",className:t.panButton,onClick:()=>{e.slide(.9)}},c.createElement(he.A,null)))}const Qe=(0,A.observer)((function({model:e}){const{classes:t}=Xe(),{coarseTotalBp:r}=e;return c.createElement(me.A,{variant:"body2",color:"textSecondary",className:t.bp},(0,a.getBpDisplayStr)(r))})),Ze=({model:e})=>{const{classes:t}=Xe();return c.createElement("div",{className:t.headerBar},c.createElement(Ye,{model:e}),c.createElement("div",{className:t.spacer}),c.createElement(ge.A,{row:!0,className:t.headerForm},c.createElement(Ke,{model:e}),c.createElement(Je,{model:e})),c.createElement(Qe,{model:e}),c.createElement(Ge,{model:e}),c.createElement("div",{className:t.spacer}))},et=(0,A.observer)((function({model:e}){const{hideHeader:t,hideHeaderOverview:r}=e;return t?null:r?c.createElement(Ze,{model:e}):c.createElement(Oe,{model:e},c.createElement(Ze,{model:e}))})),tt=et;var rt=r(98273),nt=r(98753);const at=(0,c.lazy)((()=>Promise.resolve().then(r.bind(r,87686)))),ot=(0,c.lazy)((()=>r.e(1281).then(r.bind(r,61281)))),it=(0,c.lazy)((()=>r.e(8528).then(r.bind(r,98528)))),st=(0,c.lazy)((()=>r.e(7761).then(r.bind(r,77761)))),lt=(0,c.lazy)((()=>r.e(9067).then(r.bind(r,79067))));function ct(e){if(!e.length)return"";const t=e.every((t=>t.assemblyName===e[0].assemblyName));return e.map((e=>(0,a.assembleLocString)({...e,start:Math.round(e.start),end:Math.round(e.end),assemblyName:t?void 0:e.assemblyName}))).join(" ")}function dt(e){return i.types.compose("LinearGenomeView",d.BaseViewModel,i.types.model({id:j.ElementId,type:i.types.literal("LinearGenomeView"),offsetPx:0,bpPerPx:1,displayedRegions:i.types.optional(i.types.frozen(),[]),tracks:i.types.array(e.pluggableMstType("track","stateModel")),hideHeader:!1,hideHeaderOverview:!1,hideNoTracksActive:!1,trackSelectorType:i.types.optional(i.types.enumeration(["hierarchical"]),"hierarchical"),showCenterLine:i.types.optional(i.types.boolean,(()=>Boolean(JSON.parse((0,a.localStorageGetItem)("lgv-showCenterLine")||"false")))),showCytobandsSetting:i.types.optional(i.types.boolean,(()=>Boolean(JSON.parse((0,a.localStorageGetItem)("lgv-showCytobands")||"true")))),trackLabels:i.types.optional(i.types.string,(()=>(0,a.localStorageGetItem)("lgv-trackLabels")||"")),showGridlines:!0,highlight:i.types.optional(i.types.array(i.types.frozen()),[]),colorByCDS:i.types.optional(i.types.boolean,(()=>Boolean(JSON.parse((0,a.localStorageGetItem)("lgv-colorByCDS")||"false")))),showTrackOutlines:i.types.optional(i.types.boolean,(()=>Boolean(JSON.parse((0,a.localStorageGetItem)("lgv-showTrackOutlines")||"true"))))})).volatile((()=>({volatileWidth:void 0,minimumBlockWidth:3,draggingTrackId:void 0,volatileError:void 0,afterDisplayedRegionsSetCallbacks:[],scaleFactor:1,trackRefs:{},coarseDynamicBlocks:[],coarseTotalBp:0,leftOffset:void 0,rightOffset:void 0}))).views((e=>({get trackLabelsSetting(){const t=(0,o.getConf)((0,a.getSession)(e),["LinearGenomeViewPlugin","trackLabels"]);return e.trackLabels||t},get width(){if(void 0===e.volatileWidth)throw new Error("width undefined, make sure to check for model.initialized");return e.volatileWidth},get interRegionPaddingWidth(){return Ie.Rd},get assemblyNames(){return[...new Set(e.displayedRegions.map((e=>e.assemblyName)))]}}))).views((e=>({scaleBarDisplayPrefix:()=>"LinearSyntenyView"===(0,i.getParent)(e,2).type?e.assemblyNames[0]:"",MiniControlsComponent:()=>pe,HeaderComponent:()=>tt,get assemblyErrors(){const{assemblyManager:t}=(0,a.getSession)(e);return e.assemblyNames.map((e=>t.get(e)?.error)).filter((e=>!!e)).join(", ")},get assembliesInitialized(){const{assemblyManager:t}=(0,a.getSession)(e),{assemblyNames:r}=e;return r.every((e=>t.get(e)?.initialized))},get initialized(){return void 0!==e.volatileWidth&&this.assembliesInitialized},get hasDisplayedRegions(){return e.displayedRegions.length>0},get scaleBarHeight(){return Ie.jE+Ie.i3},get headerHeight(){return e.hideHeader?0:e.hideHeaderOverview?Ie.Ij:Ie.Ij+Ie.Gu},get trackHeights(){return(0,a.sum)(e.tracks.map((e=>e.displays[0].height)))},get trackHeightsWithResizeHandles(){return this.trackHeights+e.tracks.length*Ie.i3},get height(){return this.trackHeightsWithResizeHandles+this.headerHeight+this.scaleBarHeight},get totalBp(){return(0,a.sum)(e.displayedRegions.map((e=>e.end-e.start)))},get maxBpPerPx(){return this.totalBp/(.9*e.width)},get minBpPerPx(){return.02},get error(){return e.volatileError||this.assemblyErrors},get maxOffset(){return this.displayedRegionsTotalPx-10},get minOffset(){return 30-e.width},get displayedRegionsTotalPx(){return this.totalBp/e.bpPerPx},renderProps:()=>({...(0,p.getParentRenderProps)(e),bpPerPx:e.bpPerPx,colorByCDS:e.colorByCDS}),searchScope:t=>({assemblyName:t,includeAggregateIndexes:!0,tracks:e.tracks}),getTrack:t=>e.tracks.find((e=>e.configuration.trackId===t)),rankSearchResults(t){const r=new Set(e.tracks.map((e=>e.configuration.trackId)));for(const e of t)r.has(e.trackId)&&e.updateScore(e.getScore()+1);return t},rewriteOnClicks(t,r){r.forEach((r=>{if("subMenu"in r&&this.rewriteOnClicks(t,r.subMenu),"onClick"in r){const n=r.onClick;r.onClick=(...r)=>{e.tracks.forEach((e=>{e.type===t&&n.apply(e,[e,...r])}))}}}))},get trackTypeActions(){const t=new Map;return e.tracks.forEach((e=>{if(!t.get(e.type)){const r=J()(e.viewMenuActions);this.rewriteOnClicks(e.type,r),t.set(e.type,r)}})),t}}))).actions((t=>({setShowTrackOutlines(e){t.showTrackOutlines=e},setColorByCDS(e){t.colorByCDS=e},setShowCytobands(e){t.showCytobandsSetting=e},setWidth(e){t.volatileWidth=e},setError(e){t.volatileError=e},setHideHeader(e){t.hideHeader=e},setHideHeaderOverview(e){t.hideHeaderOverview=e},setHideNoTracksActive(e){t.hideNoTracksActive=e},setShowGridlines(e){t.showGridlines=e},addToHighlights(e){t.highlight.push(e)},setHighlight(e){t.highlight=(0,i.cast)(e)},removeHighlight(e){t.highlight.remove(e)},scrollTo(e){const r=(0,a.clamp)(e,t.minOffset,t.maxOffset);return t.offsetPx=r,r},zoomTo(e,r=t.width/2,n=!1){const o=(0,a.clamp)(e,t.minBpPerPx,t.maxBpPerPx);if(o===t.bpPerPx)return o;const i=t.bpPerPx;return Math.abs(i-o)<1e-6?(console.warn("zoomTo bpPerPx rounding error"),i):(t.bpPerPx=o,this.scrollTo(Math.round((t.offsetPx+r)*i/o-(n?t.width/2:r))),o)},setOffsets(e,r){t.leftOffset=e,t.rightOffset=r},setSearchResults(e,r,n){(0,a.getSession)(t).queueDialog((a=>[lt,{model:t,searchResults:e,searchQuery:r,handleClose:a,assemblyName:n}]))},setNewView(e,t){this.zoomTo(e),this.scrollTo(t)},horizontallyFlip(){t.displayedRegions=(0,i.cast)([...t.displayedRegions].reverse().map((e=>({...e,reversed:!e.reversed})))),this.scrollTo(t.totalBp/t.bpPerPx-t.offsetPx-t.width)},showTrack(r,n={},a={}){const o=e.pluggableConfigSchemaType("track"),s=(0,i.resolveIdentifier)(o,(0,i.getRoot)(t),r);if(!s)throw new Error(`Could not resolve identifier "${r}"`);const l=e.getTrackType(s?.type);if(!l)throw new Error(`Unknown track type ${s.type}`);const c=e.getViewType(t.type),d=new Set(c.displayTypes.map((e=>e.name))),u=s.displays.find((e=>d.has(e.type)));if(!u)throw new Error(`Could not find a compatible display for view type ${t.type}`);const p=t.tracks.filter((e=>e.configuration===s));if(0===p.length){const e=l.stateModel.create({...n,type:s.type,configuration:s,displays:[{type:u.type,configuration:u,...a}]});return t.tracks.push(e),e}return p[0]},hideTrack(r){const n=e.pluggableConfigSchemaType("track"),a=(0,i.resolveIdentifier)(n,(0,i.getRoot)(t),r),o=t.tracks.filter((e=>e.configuration===a));return(0,m.transaction)((()=>{o.forEach((e=>t.tracks.remove(e)))})),o.length}}))).actions((e=>({moveTrackDown(t){const r=e.tracks.findIndex((e=>e.id===t));-1!==r&&-1!==r&&r<e.tracks.length-1&&e.tracks.splice(r,2,e.tracks[r+1],e.tracks[r])},moveTrackUp(t){const r=e.tracks.findIndex((e=>e.id===t));r>0&&e.tracks.splice(r-1,2,e.tracks[r],e.tracks[r-1])},moveTrackToTop(t){const r=e.tracks.findIndex((e=>e.id===t));e.tracks=(0,i.cast)([e.tracks[r],...e.tracks.filter((e=>e.id!==t))])},moveTrackToBottom(t){const r=e.tracks.findIndex((e=>e.id===t));e.tracks=(0,i.cast)([...e.tracks.filter((e=>e.id!==t)),e.tracks[r]])},moveTrack(t,r){const n=e.tracks.findIndex((e=>e.id===t));if(-1===n)throw new Error(`Track ID ${t} not found`);const a=e.tracks.findIndex((e=>e.id===r));if(-1===a)throw new Error(`Track ID ${r} not found`);const o=e.tracks.filter(((e,t)=>t!==n));o.splice(a,0,e.tracks[n]),e.tracks=(0,i.cast)(o)},toggleTrack:t=>!e.hideTrack(t)&&(e.showTrack(t),!0),setTrackLabels(t){localStorage.setItem("lgv-trackLabels",t),e.trackLabels=t},setShowCenterLine(t){e.showCenterLine=t},setDisplayedRegions(t){e.displayedRegions=(0,i.cast)(t),e.zoomTo(e.bpPerPx)},activateTrackSelector(){if("hierarchical"===e.trackSelectorType){const t=(0,a.getSession)(e);if((0,a.isSessionModelWithWidgets)(t)){const r=t.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:e});return t.showWidget(r),r}}throw new Error(`invalid track selector type ${e.trackSelectorType}`)},getSelectedRegions(t,r){const n=(0,i.getSnapshot)(e),a=$.A.create({...n,interRegionPaddingWidth:e.interRegionPaddingWidth});return a.setVolatileWidth(e.width),a.moveTo(t,r),a.dynamicBlocks.contentBlocks.map((e=>({...e,start:Math.floor(e.start),end:Math.ceil(e.end)})))},afterDisplayedRegionsSet(t){e.afterDisplayedRegionsSetCallbacks.push(t)},horizontalScroll(t){const r=e.offsetPx;return e.scrollTo(e.offsetPx+t)-r},center(){const t=e.totalBp/2/e.bpPerPx;e.scrollTo(Math.round(t-e.width/2))},showAllRegions(){e.zoomTo(e.maxBpPerPx),this.center()},showAllRegionsInAssembly(t){const r=(0,a.getSession)(e),{assemblyManager:n}=r;if(!t){const n=new Set(e.displayedRegions.map((e=>e.assemblyName)));if(n.size>1)return void r.notify("Can't perform operation with multiple assemblies currently");[t]=[...n]}const o=n.get(t);if(o){const{regions:t}=o;t&&(this.setDisplayedRegions(t),e.zoomTo(e.maxBpPerPx),this.center())}},setDraggingTrackId(t){e.draggingTrackId=t},setScaleFactor(t){e.scaleFactor=t},clearView(){this.setDisplayedRegions([]),e.tracks.clear(),e.scrollTo(0),e.zoomTo(10)},async exportSvg(t={}){const{renderToSvg:n}=await Promise.resolve().then(r.bind(r,98753)),a=await n(e,t),o=new Blob([a],{type:"image/svg+xml"});(0,_.saveAs)(o,t.filename||"image.svg")}}))).actions((e=>{let t=()=>{};return{slide:function(r){const[n,o]=(0,a.springAnimate)(e.offsetPx,e.offsetPx+e.width*r,e.scrollTo,void 0,void 0,200);t(),t=o,n()}}})).actions((e=>{let t=()=>{};return{zoom:function(r){if(e.zoomTo(e.bpPerPx),r<e.bpPerPx&&e.bpPerPx===e.minBpPerPx||r>e.bpPerPx&&e.bpPerPx===e.maxBpPerPx)return;const n=e.bpPerPx/r,[o,i]=(0,a.springAnimate)(1,n,e.setScaleFactor,(()=>{e.zoomTo(r),e.setScaleFactor(1)}));t(),t=i,o()}}})).views((e=>({get canShowCytobands(){return 1===e.displayedRegions.length&&this.anyCytobandsExist},get showCytobands(){return this.canShowCytobands&&e.showCytobandsSetting},get anyCytobandsExist(){const{assemblyManager:t}=(0,a.getSession)(e);return e.assemblyNames.some((e=>t.get(e)?.cytobands?.length))},get cytobandOffset(){return this.showCytobands?(0,a.measureText)(e.displayedRegions[0]?.refName||"",12)+15:0}}))).views((e=>({menuItems(){const{canShowCytobands:t,showCytobands:r}=e,n=(0,a.getSession)(e),o=[{label:"Return to import form",onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[at,{model:e,handleClose:t}]))},icon:Z.A},...(0,a.isSessionWithAddTracks)(n)?[{label:"Sequence search",icon:ne.A,onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[ot,{model:e,handleClose:t}]))}}]:[],{label:"Export SVG",icon:ee.A,onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[it,{model:e,handleClose:t}]))}},{label:"Open track selector",onClick:e.activateTrackSelector,icon:X.xU},{label:"Horizontally flip",icon:Y.A,onClick:e.horizontallyFlip},{label:"Color by CDS",type:"checkbox",checked:e.colorByCDS,icon:re.A,onClick:()=>{e.setColorByCDS(!e.colorByCDS)}},{label:"Show...",icon:K.A,subMenu:[{label:"Show all regions in assembly",onClick:e.showAllRegionsInAssembly},{label:"Show center line",type:"checkbox",checked:e.showCenterLine,onClick:()=>{e.setShowCenterLine(!e.showCenterLine)}},{label:"Show header",type:"checkbox",checked:!e.hideHeader,onClick:()=>{e.setHideHeader(!e.hideHeader)}},{label:"Show track outlines",type:"checkbox",checked:e.showTrackOutlines,onClick:()=>{e.setShowTrackOutlines(!e.showTrackOutlines)}},{label:"Show header overview",type:"checkbox",checked:!e.hideHeaderOverview,onClick:()=>{e.setHideHeaderOverview(!e.hideHeaderOverview)},disabled:e.hideHeader},{label:"Show no tracks active button",type:"checkbox",checked:!e.hideNoTracksActive,onClick:()=>{e.setHideNoTracksActive(!e.hideNoTracksActive)}},{label:"Show guidelines",type:"checkbox",checked:e.showGridlines,onClick:()=>{e.setShowGridlines(!e.showGridlines)}},...t?[{label:"Show ideogram",type:"checkbox",checked:e.showCytobands,onClick:()=>{e.setShowCytobands(!r)}}]:[]]},{label:"Track labels",icon:Q.A,subMenu:[{label:"Overlapping",icon:K.A,type:"radio",checked:"overlapping"===e.trackLabelsSetting,onClick:()=>{e.setTrackLabels("overlapping")}},{label:"Offset",icon:K.A,type:"radio",checked:"offset"===e.trackLabelsSetting,onClick:()=>{e.setTrackLabels("offset")}},{label:"Hidden",icon:K.A,type:"radio",checked:"hidden"===e.trackLabelsSetting,onClick:()=>{e.setTrackLabels("hidden")}}]}];for(const[t,r]of e.trackTypeActions.entries())r.length&&(o.push({type:"divider"},{type:"subHeader",label:t}),r.forEach((e=>o.push(e))));return o}}))).views((e=>{let t,r="";return{get staticBlocks(){const n=(0,G.A)(e),a=JSON.stringify(n);return r!==a&&(t=n,r=a),t},get dynamicBlocks(){return(0,W.A)(e)},get roundedDynamicBlocks(){return this.dynamicBlocks.contentBlocks.map((e=>({...e,start:Math.floor(e.start),end:Math.ceil(e.end)})))},get visibleLocStrings(){return ct(this.dynamicBlocks.contentBlocks)},get coarseVisibleLocStrings(){return ct(e.coarseDynamicBlocks)}}})).actions((e=>({setCoarseDynamicBlocks(t){e.coarseDynamicBlocks=t.contentBlocks,e.coarseTotalBp=t.totalBp},afterAttach(){(0,i.addDisposer)(e,(0,m.autorun)((()=>{e.initialized&&this.setCoarseDynamicBlocks(e.dynamicBlocks)}),{delay:150})),(0,i.addDisposer)(e,(0,m.autorun)((()=>{const t=e=>JSON.stringify(e),{showCytobandsSetting:r,showCenterLine:n,colorByCDS:o}=e;(0,a.localStorageSetItem)("lgv-showCytobands",t(r)),(0,a.localStorageSetItem)("lgv-showCenterLine",t(n)),(0,a.localStorageSetItem)("lgv-colorByCDS",t(o))})))}}))).actions((e=>({moveTo(t,r){(0,q.tw)(e,t,r)},async navToLocString(t,r){const{assemblyNames:n}=e,{assemblyManager:o}=(0,a.getSession)(e),i=r||n[0];return i&&await o.waitForAssembly(i),this.navToLocations((0,Re.CU)(t,i,((e,t)=>o.isValidRefName(e,t))),i)},async navToSearchString({input:t,assembly:r}){await(0,qe.cm)({input:t,assembly:r,model:e})},async navToLocations(t,r){const{assemblyManager:n}=(0,a.getSession)(e);await(0,m.when)((()=>void 0!==e.volatileWidth));const o=await(0,Re.Cz)(t,n,r);if(1===o.length){const t=o[0],{reversed:r,parentRegion:n,start:i,end:s}=t;e.setDisplayedRegions([{reversed:r,...n}]),this.navTo({...t,start:(0,a.clamp)(i??0,0,n.end),end:(0,a.clamp)(s??n.end,0,n.end)})}else e.setDisplayedRegions(o.map((e=>void 0===e.start?e.parentRegion:e))),e.showAllRegions()},navTo(e){this.navToMultiple([e])},navToMultiple(t){if(t.some((e=>void 0!==e.start&&void 0!==e.end&&e.start>e.end)))throw new Error("found start greater than end");const r=t.at(0),n=t.at(-1);if(!r||!n)return;const o=e.assemblyNames[0],{assemblyManager:i}=(0,a.getSession)(e),s=i.get(r.assemblyName||o),l=i.get(n.assemblyName||o),c=s?.getCanonicalRefName(r.refName)||r.refName,d=l?.getCanonicalRefName(n.refName)||n.refName,u=e.displayedRegions.find((e=>e.refName===c)),p=(0,a.findLast)(e.displayedRegions,(e=>e.refName===d));if(!u)throw new Error(`could not find a region with refName "${c}"`);if(!p)throw new Error(`could not find a region with refName "${d}"`);const m=void 0===r.start?u.start:r.start,g=void 0===r.end?u.end:r.end,h=void 0===n.start?p.start:n.start,f=void 0===n.end?p.end:n.end,y=e.displayedRegions.findIndex((e=>c===e.refName&&m>=e.start&&m<=e.end&&g<=e.end&&g>=e.start)),b=e.displayedRegions.findIndex((e=>d===e.refName&&h>=e.start&&h<=e.end&&f<=e.end&&f>=e.start));if(-1===y||-1===b)throw new Error(`could not find a region that contained "${t.map((e=>(0,a.assembleLocString)(e)))}"`);const w=e.displayedRegions[y],v=e.displayedRegions[b];this.moveTo({index:y,offset:w.reversed?w.end-g:m-w.start},{index:b,offset:v.reversed?v.end-h:f-v.start})}}))).views((e=>({rubberBandMenuItems:()=>[{label:"Zoom to region",icon:te.A,onClick:()=>{e.moveTo(e.leftOffset,e.rightOffset)}},{label:"Get sequence",icon:g.A,onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[st,{model:e,handleClose:t}]))}}],bpToPx:({refName:t,coord:r,regionNumber:n})=>(0,q.eB)({refName:t,coord:r,regionNumber:n,self:e}),centerAt(t,r,n){const a=this.bpToPx({refName:r,coord:t,regionNumber:n});void 0!==a&&e.scrollTo(Math.round(a.offsetPx-e.width/2))},pxToBp:t=>(0,q.Ii)(e,t),get centerLineInfo(){return e.displayedRegions.length>0?this.pxToBp(e.width/2):void 0}}))).actions((e=>({afterCreate(){function t(t){(0,a.getSession)(e).focusedViewId===e.id&&(t.ctrlKey||t.metaKey)&&("ArrowLeft"===t.code?(t.preventDefault(),e.slide(-.9)):"ArrowRight"===t.code?(t.preventDefault(),e.slide(.9)):"ArrowUp"===t.code&&1===e.scaleFactor?(t.preventDefault(),e.zoom(e.bpPerPx/2)):"ArrowDown"===t.code&&1===e.scaleFactor&&(t.preventDefault(),e.zoom(2*e.bpPerPx)))}document.addEventListener("keydown",t),(0,i.addDisposer)(e,(()=>{document.removeEventListener("keydown",t)}))}}))).preProcessSnapshot((e=>{if(!e)return e;const{highlight:t,...r}=e;return{highlight:Array.isArray(t)||void 0===t?t:[t],...r}}))}const ut=function(e){return(0,o.ConfigurationSchema)("LinearBasicDisplay",{renderer:e.pluggableConfigSchemaType("renderer")},{baseConfiguration:l,explicitlyTyped:!0})};var pt=r(93100);const mt=(0,c.lazy)((()=>r.e(4033).then(r.bind(r,34033)))),gt=(0,c.lazy)((()=>r.e(2412).then(r.bind(r,92412)))),ht=function(e){return i.types.compose("LinearBasicDisplay",x,i.types.model({type:i.types.literal("LinearBasicDisplay"),trackShowLabels:i.types.maybe(i.types.boolean),trackShowDescriptions:i.types.maybe(i.types.boolean),trackDisplayMode:i.types.maybe(i.types.string),trackMaxHeight:i.types.maybe(i.types.number),configuration:(0,o.ConfigurationReference)(e),jexlFilters:i.types.maybe(i.types.array(i.types.string))})).views((e=>({get activeFilters(){return e.jexlFilters??(0,o.getConf)(e,"jexlFilters").map((e=>`jexl:${e}`))},get rendererTypeName(){return(0,o.getConf)(e,["renderer","type"])},get showLabels(){return e.trackShowLabels??(0,o.getConf)(e,["renderer","showLabels"])},get showDescriptions(){return e.trackShowDescriptions??(0,o.getConf)(e,["renderer","showDescriptions"])},get maxHeight(){return e.trackMaxHeight??(0,o.getConf)(e,["renderer","maxHeight"])},get displayMode(){return e.trackDisplayMode??(0,o.getConf)(e,["renderer","displayMode"])}}))).views((e=>({get rendererConfig(){const t=(0,o.getConf)(e,["renderer"])||{};return e.rendererType.configSchema.create({...t,showLabels:e.showLabels,showDescriptions:e.showDescriptions,displayMode:e.displayMode,maxHeight:e.maxHeight},(0,i.getEnv)(e))}}))).actions((e=>({setJexlFilters(t){e.jexlFilters=(0,i.cast)(t)},toggleShowLabels(){e.trackShowLabels=!e.showLabels},toggleShowDescriptions(){e.trackShowDescriptions=!e.showDescriptions},setDisplayMode(t){e.trackDisplayMode=t},setMaxHeight(t){e.trackMaxHeight=t}}))).views((e=>{const{trackMenuItems:t,renderProps:r}=e;return{renderProps:()=>({...r(),config:e.rendererConfig,filters:new pt.A({filters:e.activeFilters})}),trackMenuItems:()=>[...t(),{label:"Show labels",icon:K.A,type:"checkbox",checked:e.showLabels,onClick:()=>{e.toggleShowLabels()}},{label:"Show descriptions",icon:K.A,type:"checkbox",checked:e.showDescriptions,onClick:()=>{e.toggleShowDescriptions()}},{label:"Display mode",icon:K.A,subMenu:["compact","reducedRepresentation","normal","collapse"].map((t=>({label:t,onClick:()=>{e.setDisplayMode(t)}})))},{label:"Set max height",onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[mt,{model:e,handleClose:t}]))}},{label:"Edit filters",onClick:()=>{(0,a.getSession)(e).queueDialog((t=>[gt,{model:e,handleClose:t}]))}}]}}))};var ft=r(26612);class yt extends n.A{name="LinearGenomeViewPlugin";exports={BaseLinearDisplayComponent:V,BaseLinearDisplay:x,baseLinearDisplayConfigSchema:l,SearchBox:Je,ZoomControls:Ge,LinearGenomeView:rt.default};configurationSchema=(0,o.ConfigurationSchema)("LinearGenomeViewConfigSchema",{trackLabels:{type:"string",defaultValue:"overlapping",model:i.types.enumeration("trackLabelOptions",["offset","overlapping","hidden"])}});install(e){var t;(t=e).addTrackType((()=>{const e=(e=>(0,o.ConfigurationSchema)("FeatureTrack",{},{baseConfiguration:(0,z.createBaseTrackConfig)(e),explicitIdentifier:"trackId"}))(t);return new z.TrackType({name:"FeatureTrack",displayName:"Feature track",configSchema:e,stateModel:(0,z.createBaseTrackModel)(t,"FeatureTrack",e)})})),function(e){e.addTrackType((()=>{const t=(e=>(0,o.ConfigurationSchema)("BasicTrack",{},{baseConfiguration:(0,z.createBaseTrackConfig)(e),explicitIdentifier:"trackId"}))(e);return new z.TrackType({name:"BasicTrack",configSchema:t,stateModel:(0,z.createBaseTrackModel)(e,"BasicTrack",t)})}))}(e),function(e){e.addDisplayType((()=>{const t=ut(e);return new z.DisplayType({name:"LinearBasicDisplay",displayName:"Basic feature display",configSchema:t,stateModel:ht(t),trackType:"FeatureTrack",viewType:"LinearGenomeView",ReactComponent:V})}))}(e),function(e){e.addViewType((()=>new z.ViewType({name:"LinearGenomeView",displayName:"Linear genome view",stateModel:dt(e),ReactComponent:(0,c.lazy)((()=>Promise.resolve().then(r.bind(r,98273))))})))}(e),function(e){e.addDisplayType((()=>{const t=O(e);return new z.DisplayType({name:"LinearBareDisplay",configSchema:t,displayName:"Bare feature display",stateModel:H(t),trackType:"BasicTrack",viewType:"LinearGenomeView",ReactComponent:V})}))}(e),function(e){e.addToExtensionPoint("LaunchView-LinearGenomeView",(async({session:e,assembly:t,loc:r,tracks:n=[],tracklist:o,nav:i,highlight:s})=>{try{const{assemblyManager:l}=e,{isValidRefName:c}=l,d=e.addView("LinearGenomeView",{});if(await(0,a.when)((()=>!!d.volatileWidth)),!t)throw new Error("No assembly provided when launching linear genome view");const u=await l.waitForAssembly(t);if(!u)throw new Error(`Assembly "${t}" not found when launching linear genome view`);o&&d.activateTrackSelector(),void 0!==i&&d.setHideHeader(!i),void 0!==s&&s.forEach((async e=>{const r=(0,a.parseLocString)(e,(e=>c(e,t))),{start:n,end:o}=r;void 0!==n&&void 0!==o&&d.addToHighlights({...r,start:n,end:o,assemblyName:t})})),await(0,qe.cm)({input:r,model:d,assembly:u});const p=[];if(n.forEach((e=>{!function(e,t,r){try{e.showTrack(t)}catch(e){if(!/Could not resolve identifier/.exec(`${e}`))throw e;r.push(t)}}(d,e,p)})),p.length)throw new Error(`Could not resolve identifiers: ${p.join(",")}`)}catch(t){throw e.notifyError(`${t}`,t),t}}))}(e)}configure(e){(0,a.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Linear genome view",icon:s.A,onClick:e=>{e.addView("LinearGenomeView",{})}})}}},6184:(e,t,r)=>{"use strict";r.d(t,{Kd:()=>o,cm:()=>i});var n=r(99546),a=r(8656);async function o({option:e,model:t,assemblyName:r}){const n=e.getLocation(),a=e.getTrackId();n&&(await t.navToLocString(n,r),a&&t.showTrack(a))}async function i({input:e,model:t,assembly:r}){const i=r.allRefNamesWithLowerCase||[],s=r.name;if(e.split(" ").every((e=>function(e,t){const[r,n]=function(e){const t=e.lastIndexOf(":");if(-1===t)return[e,""];return[e.slice(0,t),e.slice(t+1)]}(e);return t.includes(e)||t.includes(r)&&!Number.isNaN(Number.parseInt(n,10))}(e,i))))await t.navToLocString(e,r.name);else{const i=t.searchScope(s),{textSearchManager:l}=(0,n.getSession)(t),c=await async function({queryString:e,searchType:t,searchScope:r,rankSearchResults:o,textSearchManager:i,assembly:s}){i||console.warn("No text search manager");const l=await(i?.search({queryString:e,searchType:t},r,o)),c=s?.allRefNames?.filter((t=>t.toLowerCase().startsWith(e.toLowerCase()))).slice(0,10).map((e=>new a.A({label:e})));return(0,n.dedupe)([...c||[],...l||[]],(e=>e.getId()))}({queryString:e,searchType:"exact",searchScope:i,rankSearchResults:t.rankSearchResults,textSearchManager:l,assembly:r});c.length>1?t.setSearchResults(c,e.toLowerCase(),s):1===c.length?await o({option:c[0],model:t,assemblyName:s}):await t.navToLocString(e,s)}}},54702:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(9502);const a={DEL:"deletion",INS:"insertion",DUP:"duplication",INV:"inversion",INVDUP:"inverted_duplication",CNV:"copy_number_variation",TRA:"translocation","DUP:TANDEM":"tandem_duplication",NON_REF:"sequence_variant","*":"sequence_variant"};function o(e,t,r){if(!t||0===t.length)return["remark","no alternative alleles"];const a=new Set;let o=new Set;if(t.forEach((t=>{let[l,c]=i(t,r);l||([l,c]=function(e,t){if((0,n.h)(t))return["breakend",t];if(1===e.length&&1===t.length)return["SNV",s("SNV",e,t)];if("<INS>"===t)return["insertion",t];if("<DEL>"===t)return["deletion",t];if("<DUP>"===t)return["duplication",t];if("<CNV>"===t)return["cnv",t];if("<INV>"===t)return["inversion",t];if("<TRA>"===t)return["translocation",t];if(t.includes("<"))return["sv",t];if(e.length===t.length)return e.split("").reverse().join("")===t?["inversion",s("inversion",e,t)]:["substitution",s("substitution",e,t)];if(e.length<=t.length){const r=t.length-e.length,n=r.toLocaleString("en-US");return["insertion",r>5?`${n}bp INS`:s("insertion",e,t)]}if(e.length>t.length){const r=e.length-t.length,n=r.toLocaleString("en-US");return["deletion",r>5?`${n}bp DEL`:s("deletion",e,t)]}return["indel",s("indel",e,t)]}(e,t)),l&&c&&(a.add(l),o.add(c))})),o.size>1){const e=[...o],t=new Set(e.map((e=>{const t=e.split("->");return t[1]?t[0]:e})).filter((e=>!!e)));o=new Set([...t].map((e=>e.trim())).map((t=>{const r=e.map((e=>e.split("->").map((e=>e.trim())))).map((e=>e[1]&&e[0]===t?e[1]:"")).filter((e=>!!e));return r.length?`${t} -> ${r.join(",")}`:t})))}return a.size?[[...a].join(","),[...o].join(",")]:[]}function i(e,t){if("string"==typeof e&&!e.startsWith("<"))return[];let r=a[e];if(!r&&t.getMetadata("ALT",e)&&(r="sequence_variant"),r)return[r,e];const n=e.split(":");return n.length>1?i(`<${n.slice(0,-1).join(":")}>`,t):[]}function s(e,t,r){return`${e} ${t} -> ${r}`}class l{constructor(e){this.variant=e.variant,this.parser=e.parser,this.data=this.dataFromVariant(this.variant),this._id=e.id}get(e){return"samples"===e?this.variant.SAMPLES:this.data[e]??this.variant[e]}set(){}parent(){}children(){}tags(){return[...Object.keys(this.data),...Object.keys(this.variant),"samples"]}id(){return this._id}dataFromVariant(e){const{REF:t,ALT:r,POS:n,CHROM:a,INFO:i,ID:s}=e,l=n-1,[c,d]=o(t,r,this.parser),u=r?.includes("<TRA>"),p=r?.some((e=>e.includes("<")));return{refName:a,start:l,end:p&&i.END&&!u?+i.END[0]:l+t.length,description:d,type:c,name:s?.join(","),aliases:s&&s.length>1?s.slice(1):void 0}}toJSON(){return{uniqueId:this._id,...this.variant,...this.data,samples:this.variant.SAMPLES}}}},79230:(e,t,r)=>{"use strict";r.d(t,{_:()=>I.A,A:()=>N});var n=r(47369),a=r(68584);const o=(0,a.ConfigurationSchema)("VcfAdapter",{vcfLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.vcf",locationType:"UriLocation"}}},{explicitlyTyped:!0});var i=r(36422);const s=(0,a.ConfigurationSchema)("VcfTabixAdapter",{vcfGzLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.vcf.gz",locationType:"UriLocation"}},index:(0,a.ConfigurationSchema)("VcfIndex",{indexType:{model:i.types.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.vcf.gz.tbi",locationType:"UriLocation"}}})},{explicitlyTyped:!0});var l=r(91468),c=r(58273),d=r(1622),u=r(58921);var p=r(12678),m=r(14349),g=r(56328);var h=r(99546);var f=r(20529);function y(e){return i.types.compose("LinearVariantDisplay",(0,f.bN)(e),i.types.model({type:i.types.literal("LinearVariantDisplay"),configuration:(0,a.ConfigurationReference)(e)})).actions((e=>({async selectFeature(t){const r=(0,h.getSession)(e);if((0,h.isSessionModelWithWidgets)(r)){const{rpcManager:n}=r,o=(0,l.getRpcSessionId)(e),i=(0,h.getContainingTrack)(e),s=(0,h.getContainingView)(e),c=(0,a.getConf)(i,"adapter"),d=await n.call(o,"CoreGetMetadata",{adapterConfig:c});r.showWidget(r.addWidget("VariantFeatureWidget","variantFeature",{featureData:t.toJSON(),view:s,track:i,descriptions:d}))}r.setSelection(t)}})))}var b=r(94318);const w=(0,a.ConfigurationSchema)("StructuralVariantChordRenderer",{strokeColor:{type:"color",description:"the line color of each arc",defaultValue:"rgba(255,133,0,0.32)",contextVariable:["feature"]},strokeColorSelected:{type:"color",description:"the line color of an arc that has been selected",defaultValue:"black",contextVariable:["feature"]},strokeColorHover:{type:"color",description:"the line color of an arc that is being hovered over with the mouse",defaultValue:"#555",contextVariable:["feature"]}},{explicitlyTyped:!0});var v=r(7552),C=r(68446),S=r(9502);function k(){return k=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},k.apply(null,arguments)}function T(e,t){const r=e.region.elided?0:e.region.start,n=e.region.elided?0:e.region.end;return(e.flipped?n-t:t-r)/e.bpPerRadian+e.startRadians}const x=(0,C.observer)((function({feature:e,blocksForRefs:t,radius:r,config:n,bezierRadius:o,selected:i,onClick:s}){const[l,c]=(0,v.useState)(!1),d=t[e.get("refName")];if(!d)return null;let u,p,m;e.get("INFO")?[u]=e.get("INFO").SVTYPE||[]:e.get("mate")&&(u="mate");const g=e.get("ALT")?.[0],f=g&&(0,S.h)(g),y=e.get("start");if(f){const e=f.MatePosition.split(":");p=+e[1],m=t[e[0]]}else if("<TRA>"===g){const r=e.get("INFO")?.CHR2?.[0],n=e.get("INFO")?.END?.[0];p=Number.parseInt(n,10),m=t[r]}else if("mate"===u){const r=e.get("mate"),n=r.refName;p=r.start,m=t[n]}else console.warn("unknown sv type",u),p=y+1;if(m){const t=T(d,y),u=T(m,p),g=(0,h.polarToCartesian)(r,t),f=(0,h.polarToCartesian)(r,u),b=(0,h.polarToCartesian)(o,(u+t)/2),w=i?(0,a.readConfObject)(n,"strokeColorSelected",{feature:e}):(0,a.readConfObject)(n,"strokeColor",{feature:e}),C=(0,a.readConfObject)(n,"strokeColorHover",{feature:e});return v.createElement("path",k({"data-testid":`chord-${e.id()}`,cursor:"crosshair",fill:"none",d:["M",...g,"Q",...b,...f].join(" ")},(0,h.getStrokeProps)(l?C:w),{strokeWidth:l?3:1,onClick:t=>{s(e,d.region,m.region,t)},onMouseOver:()=>{i||c(!0)},onMouseOut:()=>{i||c(!1)}}))}return null})),A=(0,C.observer)((function({features:e,config:t,blockDefinitions:r,radius:n,bezierRadius:a,displayModel:o,onChordClick:i}){const{selectedFeatureId:s}=o||{},l=(0,v.useMemo)((()=>{const e={};for(const t of r){const r=t.region.elided?t.region.regions:[t.region];for(const n of r)e[n.refName]=t}return e}),[r]);return v.createElement("g",{"data-testid":"structuralVariantChordRenderer"},[...e.values()].map((e=>{const r=e.id(),o=String(s)===String(r);return v.createElement(x,{key:r,feature:e,config:t,radius:n,bezierRadius:a,blocksForRefs:l,selected:o,onClick:i})})))}));var P=r(67736),M=r(9342);function E(e){const t=(0,M.n)(e);return i.types.compose(t,i.types.model("VariantFeatureWidget",{type:i.types.literal("VariantFeatureWidget"),descriptions:i.types.frozen()}))}const R=(0,a.ConfigurationSchema)("VariantFeatureWidget",{});var I=r(54702);class N extends p.A{name="VariantsPlugin";install(e){var t;!function(e){e.addAdapterType((()=>new n.A({name:"VcfAdapter",displayName:"VCF adapter",configSchema:o,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4499),r.e(8343)]).then(r.bind(r,98343)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new n.A({name:"VcfTabixAdapter",displayName:"VCF tabix adapter",configSchema:s,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(8120),r.e(6621)]).then(r.bind(r,66621)).then((e=>e.default))})))}(e),function(e){e.addWidgetType((()=>new P.A({name:"VariantFeatureWidget",heading:"Feature details",configSchema:R,stateModel:E(e),ReactComponent:(0,v.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(5008),r.e(8984),r.e(8109)]).then(r.bind(r,88109))))})))}(e),(t=e).addTrackType((()=>{const e=(e=>(0,a.ConfigurationSchema)("VariantTrack",{},{baseConfiguration:(0,u.createBaseTrackConfig)(e)}))(t);return new c.A({name:"VariantTrack",displayName:"Variant track",configSchema:e,stateModel:(0,d.createBaseTrackModel)(t,"VariantTrack",e)})})),function(e){e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="VcfTabixAdapter",o=(0,l.getFileName)(t),i=r&&(0,l.getFileName)(r),s={type:a,vcfGzLocation:t,index:{location:r||(0,l.makeIndex)(t,".tbi"),indexType:(0,l.makeIndexType)(i,"CSI","TBI")}};return/\.vcf\.b?gz$/i.test(o)&&!n||n===a?s:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"VcfTabixAdapter"===t||"VcfAdapter"===t?"VariantTrack":e(t))),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="VcfAdapter",o=(0,l.getFileName)(t);return/\.vcf$/i.test(o)||n===a?{type:a,vcfLocation:t}:e(t,r,n)}))}(e),function(e){e.addDisplayType((()=>{const t=function(e){return(0,a.ConfigurationSchema)("LinearVariantDisplay",{},{baseConfiguration:(0,f.lw)(e),explicitlyTyped:!0})}(e);return new g.A({name:"LinearVariantDisplay",displayName:"Variant display",configSchema:t,stateModel:y(t),trackType:"VariantTrack",viewType:"LinearGenomeView",ReactComponent:f.GQ})}))}(e),function(e){e.addRendererType((()=>new b.A({name:"StructuralVariantChordRenderer",displayName:"SV chord renderer",ReactComponent:A,configSchema:w,pluginManager:e})))}(e),function(e){e.addDisplayType((()=>{const t=function(e){return(0,a.ConfigurationSchema)("ChordVariantDisplay",{renderer:i.types.optional(e.pluggableConfigSchemaType("renderer"),{type:"StructuralVariantChordRenderer"})},{baseConfiguration:m.kO,explicitlyTyped:!0})}(e),r=(e=>i.types.compose("ChordVariantDisplay",m.dg,i.types.model({type:i.types.literal("ChordVariantDisplay"),configuration:(0,a.ConfigurationReference)(e)})).views((e=>({get rendererTypeName(){return e.configuration.renderer.type},renderProps(){const t=(0,h.getContainingView)(e);return{...(0,l.getParentRenderProps)(e),rpcDriverName:e.rpcDriverName,displayModel:e,bezierRadius:t.radiusPx*e.bezierRadiusRatio,radius:t.radiusPx,blockDefinitions:e.blockDefinitions,config:e.configuration.renderer,onChordClick:t=>{e.onChordClick(t)}}}}))))(t);return new g.A({name:"ChordVariantDisplay",displayName:"Chord variant display",configSchema:t,stateModel:r,trackType:"VariantTrack",viewType:"CircularView",ReactComponent:m.DO})}))}(e)}}},57266:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Tooltip:()=>o.A,default:()=>d});var n=r(7552),a=r(68446),o=r(88262),i=r(75429);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s.apply(null,arguments)}const l=e=>e.toLocaleString("en-US"),c=n.forwardRef((function({feature:e},t){const r=e.get("start"),a=e.get("end"),o=[e.get("refName"),e.get("name"),r===a?l(r):`${l(r)}..${l(a)}`].filter((e=>!!e)).join(":");return void 0!==e.get("summary")?n.createElement("div",{ref:t},o,n.createElement("br",null),"Max: ",(0,i.toP)(e.get("maxScore")),n.createElement("br",null),"Avg: ",(0,i.toP)(e.get("score")),n.createElement("br",null),"Min: ",(0,i.toP)(e.get("minScore"))):n.createElement("div",{ref:t},o,n.createElement("br",null),`${(0,i.toP)(e.get("score"))}`)})),d=(0,a.observer)((function(e){return n.createElement(o.A,s({TooltipContents:c},e))}))},98911:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(7552),a=r(68446),o=r(99546),i=r(68584),s=r(20529),l=r(90461);const c=(0,a.observer)((e=>{const{model:t}=e,{stats:r,height:a,needsScalebar:c}=t,{trackLabels:d}=(0,o.getContainingView)(t),u=(0,o.getContainingTrack)(t),p="overlapping"===d?(0,o.measureText)((0,i.getConf)(u,"name"),12.8)+100:50;return n.createElement("div",null,n.createElement(s.GQ,e),r&&c?n.createElement("svg",{style:{position:"absolute",top:0,left:p,pointerEvents:"none",height:a,width:50}},n.createElement(l.A,{model:t})):null)}))},88262:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(7552),a=r(68446),o=r(75785),i=r(9236),s=r(75429);const l=(0,o.n9)()({hoverVertical:{background:"#333",border:"none",width:1,height:"100%",top:s.YSCALEBAR_LABEL_OFFSET,cursor:"default",position:"absolute",pointerEvents:"none"}}),c=(0,a.observer)((function({model:e,height:t,clientMouseCoord:r,offsetMouseCoord:a,clientRect:o,TooltipContents:c,useClientY:d}){const{featureUnderMouse:u}=e,{classes:p}=l(),m=r[0]+5,g=d?r[1]:o?.top||0;return u?n.createElement(n.Fragment,null,n.createElement(n.Suspense,{fallback:null},n.createElement(i.default,{clientPoint:{x:m,y:g}},n.createElement(c,{model:e,feature:u}))),n.createElement("div",{className:p.hoverVertical,style:{left:a[0],height:t-2*s.YSCALEBAR_LABEL_OFFSET}})):null}))},17970:(e,t,r)=>{"use strict";r.d(t,{r:()=>q.default,m_:()=>$.default,er:()=>s,Ep:()=>k,Oy:()=>y.YSCALEBAR_LABEL_OFFSET,Ay:()=>we,$z:()=>y.getOrigin,X_:()=>y.getScale,_i:()=>G});var n=r(12678),a=r(91468),o=r(92880),i=r(99546);class s extends o.default{supportsSVG=!0;async render(e){const t=await this.getFeatures(e),{height:r,regions:n,bpPerPx:a}=e,o=n[0],s=(o.end-o.start)/a,{reducedFeatures:l,...c}=await(0,i.renderToAbstractCanvas)(s,r,e,(r=>this.draw(r,{...e,features:t}))),d=await super.render({...e,...c,features:t,height:r,width:s});return{...d,...c,features:l?new Map(l.map((e=>[e.id(),e]))):d.features,height:r,width:s,containsNoTransferables:!0}}}var l=r(47369),c=r(68584);const d=(0,c.ConfigurationSchema)("BigWigAdapter",{bigWigLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bw",locationType:"UriLocation"}},source:{type:"string",defaultValue:"",description:"Used for multiwiggle"}},{explicitlyTyped:!0});var u=r(1622),p=r(58273);const m=(0,c.ConfigurationSchema)("MultiWiggleAdapter",{subadapters:{type:"frozen",defaultValue:[],description:"array of subadapter JSON objects"},bigWigs:{type:"frozen",description:"array of bigwig filenames, alternative to the subadapters slot",defaultValue:[]}},{explicitlyTyped:!0});var g=r(36422);const h=(0,c.ConfigurationSchema)("WiggleRenderer",{color:{type:"color",description:"the color of track, overrides posColor and negColor",defaultValue:"#f0f"},posColor:{type:"color",description:"the color to use when the score is positive",defaultValue:"blue"},negColor:{type:"color",description:"the color to use when the score is negative",defaultValue:"red"},clipColor:{type:"color",description:"the color of the clipping marker",defaultValue:"red"},bicolorPivot:{type:"stringEnum",model:g.types.enumeration("Scale type",["numeric","mean","z_score","none"]),description:"type of bicolor pivot",defaultValue:"numeric"},bicolorPivotValue:{type:"number",defaultValue:0,description:"value to use for bicolor pivot"}},{explicitlyTyped:!0}),f=(0,c.ConfigurationSchema)("DensityRenderer",{},{baseConfiguration:h,explicitlyTyped:!0});var y=r(75429);function b(e,t){const{features:r,regions:n,bpPerPx:a,scaleOpts:o,height:s,config:l}=t,d=n[0],u=(0,c.readConfObject)(l,"bicolorPivot"),p=(0,c.readConfObject)(l,"bicolorPivotValue"),m=(0,c.readConfObject)(l,"negColor"),g=(0,c.readConfObject)(l,"posColor"),h=(0,c.readConfObject)(l,"color"),f=(0,c.readConfObject)(l,"clipColor"),b="none"!==u&&"log"!==o.scaleType,w=(0,y.getScale)({...o,pivotValue:b?p:void 0,range:b?[m,"white",g]:["white",g]}),v="#f0f"===h?(e,t)=>w(t):(e,t)=>(0,c.readConfObject)(l,"color",{feature:e,score:t}),C=(0,y.getScale)({...o,range:[0,s]}).domain(),S=C[0],k=C[1];let T=Number.NEGATIVE_INFINITY,x=!1;const A=[];for(const t of r.values()){const[r,n]=(0,i.featureSpanPx)(t,d,a);Math.floor(r)!==Math.floor(T)&&(A.push(t),T=r);const o=t.get("score");x=x||o>k||o<S;const l=n-r+.3;e.fillStyle=v(t,o),e.fillRect(r,0,l,s)}if(e.save(),x){e.fillStyle=f;for(const t of r.values()){const[r,n]=(0,i.featureSpanPx)(t,d,a),s=n-r+.3,l=t.get("score");(l>k||l<S&&"log"!==o.scaleType)&&(0,y.fillRectCtx)(r,0,s,2,e)}}return e.restore(),{reducedFeatures:A}}class w extends s{async draw(e,t){return b(e,t)}}var v=r(68446),C=r(7552),S=r(49823);const k=(0,v.observer)((function(e){const{regions:t,features:r,bpPerPx:n,width:a,height:o,onMouseLeave:i,onMouseMove:s,onFeatureClick:l}=e,c=t[0],d=(0,C.useRef)(null);function u(e){let t=0;d.current&&(t=d.current.getBoundingClientRect().left);const o=e-t,i=c.reversed?a-o:o,s=c.start+n*i;let l;for(const e of r.values())if(s<=e.get("end")+n&&s>=e.get("start")){l=e;break}return l}return C.createElement("div",{ref:d,"data-testid":"wiggle-rendering-test",onMouseMove:e=>s?.(e,u(e.clientX)?.id()),onClick:e=>l?.(e,u(e.clientX)?.id()),onMouseLeave:e=>i?.(e),style:{overflow:"visible",position:"relative",height:o}},C.createElement(S.PrerenderedCanvas,e))}));var T=r(87485);function x(e,t){const r=e.toHsl(),n=r.l*(1+t);return(0,T.M)({...r,l:(0,i.clamp)(n,0,100)})}function A(e,t){const r=e.toHsl(),n=r.l*(1-t);return(0,T.M)({...r,l:(0,i.clamp)(n,0,100)})}const P=.3;function M(e,t){const{features:r,bpPerPx:n,regions:a,scaleOpts:o,height:s,config:l,ticks:d,displayCrossHatches:u,offset:p=0,colorCallback:m}=t,g=a[0],h=(g.end-g.start)/n,f=s-2*p,b=(0,c.readConfObject)(l,"filled"),w=(0,c.readConfObject)(l,"clipColor"),v=(0,c.readConfObject)(l,"summaryScoreMode"),C=(0,c.readConfObject)(l,"bicolorPivotValue"),S=(0,c.readConfObject)(l,"minSize"),k=(0,y.getScale)({...o,range:[0,f]}),M=(0,y.getOrigin)(o.scaleType),E=k.domain(),R=E[0],I=E[1],N=e=>(0,i.clamp)(f-(k(e)||0),0,f)+p,F=e=>b?(e=>N(M)-N(e))(e):Math.max(S,1);let L=!1,D=Number.NEGATIVE_INFINITY;const B=[],V=R<C&&I>C;if("whiskers"===v){let t,a;for(const o of r.values()){const[r,s]=(0,i.featureSpanPx)(o,g,n);if(o.get("summary")){const n=Math.max(s-r+P,S),i=o.get("maxScore"),l=m(o,i),c=V?l:l===t?a:a=x((0,T.M)(l),.4).toHex();(0,y.fillRectCtx)(r,N(i),n,F(i),e,c),t=l}}a=void 0,t=void 0;for(const o of r.values()){const[r,s]=(0,i.featureSpanPx)(o,g,n),l=o.get("score"),c=o.get("maxScore"),d=o.get("minScore"),u=o.get("summary"),p=m(o,l),h=V&&u?p===t?a:a=(0,T.M)(m(o,c)).mix((0,T.M)(m(o,d))).toString():p,f=Math.max(s-r+P,S);Math.floor(r)!==Math.floor(D)&&(B.push(o),D=r),L=L||l<R||l>I,(0,y.fillRectCtx)(r,N(l),f,F(l),e,h),t=p}a=void 0,t=void 0;for(const o of r.values()){const[r,s]=(0,i.featureSpanPx)(o,g,n);if(o.get("summary")){const n=o.get("minScore"),i=m(o,n),l=Math.max(s-r+P,S),c=V?i:i===t?a:a=A((0,T.M)(i),.4).toHex();(0,y.fillRectCtx)(r,N(n),l,F(n),e,c),t=i}}}else for(const t of r.values()){const[r,a]=(0,i.featureSpanPx)(t,g,n);Math.floor(r)!==Math.floor(D)&&(B.push(t),D=r);const o=t.get("score"),s=m(t,o);L=L||o<R||o>I;const l=Math.max(a-r+P,S);if("max"===v){const n=t.get("summary")?t.get("maxScore"):o;(0,y.fillRectCtx)(r,N(n),l,F(n),e,s)}else if("min"===v){const n=t.get("summary")?t.get("minScore"):o;(0,y.fillRectCtx)(r,N(n),l,F(n),e,s)}else(0,y.fillRectCtx)(r,N(o),l,F(o),e,s)}if(e.save(),L){e.fillStyle=w;for(const t of r.values()){const[r,a]=(0,i.featureSpanPx)(t,g,n),l=a-r+P,c=t.get("score");c>I?(0,y.fillRectCtx)(r,p,l,2,e):c<R&&"log"!==o.scaleType&&(0,y.fillRectCtx)(r,s,l,2,e)}}return e.restore(),u&&(e.lineWidth=1,e.strokeStyle="rgba(200,200,200,0.5)",d.values.forEach((t=>{e.beginPath(),e.moveTo(0,Math.round(N(t))),e.lineTo(h,Math.round(N(t))),e.stroke()}))),{reducedFeatures:B}}class E extends s{async draw(e,t){const{features:r,config:n}=t,a=(0,c.readConfObject)(n,"bicolorPivotValue"),o=(0,c.readConfObject)(n,"negColor"),i=(0,c.readConfObject)(n,"posColor");return M(e,{...t,colorCallback:"#f0f"===(0,c.readConfObject)(n,"color")?(e,t)=>t<a?o:i:(e,t)=>(0,c.readConfObject)(n,"color",{feature:e}),offset:y.YSCALEBAR_LABEL_OFFSET,features:[...r.values()]})}}const R=(0,c.ConfigurationSchema)("XYPlotRenderer",{filled:{type:"boolean",defaultValue:!0},displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1},summaryScoreMode:{type:"stringEnum",model:g.types.enumeration("Score type",["max","min","avg","whiskers"]),description:"choose whether to use max/min/average or whiskers which combines all three into the same rendering",defaultValue:"whiskers"},minSize:{type:"number",defaultValue:0}},{baseConfiguration:h,explicitlyTyped:!0}),I=(0,c.ConfigurationSchema)("LinePlotRenderer",{displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1}},{baseConfiguration:h,explicitlyTyped:!0});function N(e,t){const{features:r,regions:n,bpPerPx:a,scaleOpts:o,height:s,ticks:{values:l},displayCrossHatches:d,colorCallback:u,config:p,offset:m=0}=t,g=n[0],h=(g.end-g.start)/a,f=s-2*m,b=(0,c.readConfObject)(p,"clipColor"),w=(0,y.getScale)({...o,range:[0,f]}),v=w.domain(),C=v[0],S=v[1],k=e=>(0,i.clamp)(f-(w(e)||0),0,f)+m;let T,x=Number.NEGATIVE_INFINITY;const A=[];for(const t of r.values()){const[r,n]=(0,i.featureSpanPx)(t,g,a);Math.floor(r)!==Math.floor(x)&&(A.push(t),x=r);const s=t.get("score"),l=s<C,c=s>S,d=n-r+.3,p=u(t,s);e.beginPath(),e.strokeStyle=p;const h=void 0!==T?T:s;g.reversed?(e.moveTo(n,k(h)),e.lineTo(n,k(s)),e.lineTo(r,k(s))):(e.moveTo(r,k(h)),e.lineTo(r,k(s)),e.lineTo(n,k(s))),e.stroke(),T=s,c?(e.fillStyle=b,e.fillRect(r,m,d,2)):l&&"log"!==o.scaleType&&(e.fillStyle=b,e.fillRect(r,f-2,d,f))}return d&&(e.lineWidth=1,e.strokeStyle="rgba(200,200,200,0.5)",l.forEach((t=>{e.beginPath(),e.moveTo(0,Math.round(k(t))),e.lineTo(h,Math.round(k(t))),e.stroke()}))),{reducedFeatures:A}}class F extends s{async draw(e,t){const{config:r}=t,n=(0,c.readConfObject)(r,"color");return N(e,{...t,offset:y.YSCALEBAR_LABEL_OFFSET,colorCallback:"#f0f"===n?()=>"grey":e=>(0,c.readConfObject)(r,"color",{feature:e})})}}var L=r(56328),D=r(20529);function B(){return(0,c.ConfigurationSchema)("SharedWiggleDisplay",{autoscale:{type:"stringEnum",defaultValue:"local",model:g.types.enumeration("Autoscale type",["global","local","globalsd","localsd","zscore"]),description:"global/local using their min/max values or w/ standard deviations (globalsd/localsd)"},minimalTicks:{type:"boolean",defaultValue:!1,description:"use the minimal amount of ticks"},minScore:{type:"number",defaultValue:Number.MIN_VALUE,description:"minimum value for the y-scale"},maxScore:{type:"number",description:"maximum value for the y-scale",defaultValue:Number.MAX_VALUE},numStdDev:{type:"number",description:"number of standard deviations to use for autoscale types globalsd or localsd",defaultValue:3},scaleType:{type:"stringEnum",model:g.types.enumeration("Scale type",["linear","log"]),description:"The type of scale to use",defaultValue:"linear"},inverted:{type:"boolean",description:"draw upside down",defaultValue:!1}},{baseConfiguration:D.Ki,explicitlyTyped:!0})}var V=r(77126);const z=(0,C.lazy)((()=>r.e(8615).then(r.bind(r,8615))));function O(e){return g.types.compose(D.Lr,g.types.model({selectedRendering:g.types.optional(g.types.string,""),resolution:g.types.optional(g.types.number,1),fill:g.types.maybe(g.types.boolean),minSize:g.types.maybe(g.types.number),color:g.types.maybe(g.types.string),posColor:g.types.maybe(g.types.string),negColor:g.types.maybe(g.types.string),summaryScoreMode:g.types.maybe(g.types.string),rendererTypeNameState:g.types.maybe(g.types.string),scale:g.types.maybe(g.types.string),autoscale:g.types.maybe(g.types.string),displayCrossHatches:g.types.maybe(g.types.boolean),constraints:g.types.optional(g.types.model({max:g.types.maybe(g.types.number),min:g.types.maybe(g.types.number)}),{}),configuration:(0,c.ConfigurationReference)(e)})).volatile((()=>({message:void 0,stats:void 0,statsFetchInProgress:void 0}))).actions((e=>({updateQuantitativeStats(t){const{scoreMin:r,scoreMax:n}=t,a=1e-6;e.stats?(Math.abs(e.stats.scoreMax-n)>a||Math.abs(e.stats.scoreMin-r)>a)&&(e.stats={scoreMin:r,scoreMax:n}):e.stats={scoreMin:r,scoreMax:n}},setColor(t){e.color=t},setPosColor(t){e.posColor=t},setNegColor(t){e.negColor=t},setLoading(t){const{statsFetchInProgress:r}=e;void 0===r||r.signal.aborted||r.abort(),e.statsFetchInProgress=t},selectFeature(t){const r=(0,i.getSession)(e);(0,i.isSelectionContainer)(r)&&r.setSelection(t)},setResolution(t){e.resolution=t},setFill(t){0===t?(e.fill=!0,e.minSize=0):1===t?(e.fill=!1,e.minSize=1):2===t&&(e.fill=!1,e.minSize=2)},toggleLogScale(){e.scale="log"===e.scale?"linear":"log"},setScaleType(t){e.scale=t},setSummaryScoreMode(t){e.summaryScoreMode=t},setAutoscale(t){e.autoscale=t},setMaxScore(t){e.constraints.max=t},setRendererType(t){e.rendererTypeNameState=t},setMinScore(t){e.constraints.min=t},toggleCrossHatches(){e.displayCrossHatches=!e.displayCrossHatches},setCrossHatches(t){e.displayCrossHatches=t}}))).views((e=>({get adapterTypeName(){return e.adapterConfig.type},get rendererTypeNameSimple(){return e.rendererTypeNameState??(0,c.getConf)(e,"defaultRendering")},get filters(){},get scaleType(){return e.scale??(0,c.getConf)(e,"scaleType")},get maxScore(){return e.constraints.max??(0,c.getConf)(e,"maxScore")},get minScore(){return e.constraints.min??(0,c.getConf)(e,"minScore")}}))).views((e=>({get adapterCapabilities(){const t=e.adapterTypeName,{pluginManager:r}=(0,i.getEnv)(e);return r.getAdapterType(t).adapterCapabilities},get rendererConfig(){const{color:t,displayCrossHatches:r,fill:n,minSize:a,negColor:o,posColor:s,summaryScoreMode:l,scaleType:d,rendererTypeName:u}=e,p=(0,c.getConf)(e,["renderers",u])||{};return e.rendererType.configSchema.create({...p,...d?{scaleType:d}:{},...void 0!==n?{filled:n}:{},...void 0!==r?{displayCrossHatches:r}:{},...void 0!==l?{summaryScoreMode:l}:{},...void 0!==t?{color:t}:{},...void 0!==o?{negColor:o}:{},...void 0!==s?{posColor:s}:{},...void 0!==a?{minSize:a}:{}},(0,i.getEnv)(e))},get autoscaleType(){return e.autoscale??(0,c.getConf)(e,"autoscale")}}))).views((e=>{let t=[0,0];return{get domain(){const{stats:r,scaleType:n,minScore:a,maxScore:o}=e;if(!r)return;const i=(0,y.getNiceDomain)({domain:[r.scoreMin,r.scoreMax],bounds:[a,o],scaleType:n});return"log"===n&&i[1]===Number.MIN_VALUE?[0,Number.MIN_VALUE]:(JSON.stringify(t)!==JSON.stringify(i)&&(t=i),t)}}})).views((e=>({get filled(){const{fill:t,rendererConfig:r}=e;return t??(0,c.readConfObject)(r,"filled")},get summaryScoreModeSetting(){const{summaryScoreMode:t,rendererConfig:r}=e;return t??(0,c.readConfObject)(r,"summaryScoreMode")},get scaleOpts(){return{domain:e.domain,stats:e.stats,autoscaleType:e.autoscaleType,scaleType:e.scaleType,inverted:(0,c.getConf)(e,"inverted")}},get canHaveFill(){return"XYPlotRenderer"===e.rendererTypeName},get displayCrossHatchesSetting(){const{displayCrossHatches:t,rendererConfig:r}=e;return t??(0,c.readConfObject)(r,"displayCrossHatches")},get hasResolution(){return e.adapterCapabilities.includes("hasResolution")},get hasGlobalStats(){return e.adapterCapabilities.includes("hasGlobalStats")}}))).views((e=>({scoreTrackMenuItems:()=>[...e.hasResolution?[{label:"Resolution",subMenu:[{label:"Finer resolution",onClick:()=>{e.setResolution(5*e.resolution)}},{label:"Coarser resolution",onClick:()=>{e.setResolution(e.resolution/5)}}]},{label:"Summary score mode",subMenu:["min","max","avg","whiskers"].map((t=>({label:t,type:"radio",checked:e.summaryScoreModeSetting===t,onClick:()=>{e.setSummaryScoreMode(t)}})))}]:[],{label:"log"===e.scaleType?"Set linear scale":"Set log scale",onClick:()=>{e.toggleLogScale()}},{label:"Autoscale type",subMenu:[["local","Local"],...e.hasGlobalStats?[["global","Global"],["globalsd","Global ± 3σ"]]:[],["localsd","Local ± 3σ"]].map((([t,r])=>({label:r,type:"radio",checked:e.autoscaleType===t,onClick:()=>{e.setAutoscale(t)}})))},{label:"Set min/max score",onClick:()=>{(0,i.getSession)(e).queueDialog((t=>[z,{model:e,handleClose:t}]))}}]}))).actions((e=>{const{reload:t}=e;return{async reload(){e.setError(),t()}}}))}const H=(0,C.lazy)((()=>Promise.resolve().then(r.bind(r,57266)))),j=(0,C.lazy)((()=>Promise.all([r.e(6395),r.e(3106)]).then(r.bind(r,23106)))),W=new Map([["xyplot","XYPlotRenderer"],["density","DensityRenderer"],["line","LinePlotRenderer"]]),G=function(e,t){return g.types.compose("LinearWiggleDisplay",O(t),g.types.model({type:g.types.literal("LinearWiggleDisplay")})).views((e=>({get TooltipComponent(){return H},get rendererTypeName(){const t=e.rendererTypeNameSimple,r=W.get(t);if(!r)throw new Error(`unknown renderer ${t}`);return r}}))).views((e=>({get ticks(){const{scaleType:t,domain:r,height:n}=e,a=(0,c.getConf)(e,"minimalTicks"),o=(0,c.getConf)(e,"inverted"),i=[n-y.YSCALEBAR_LABEL_OFFSET,y.YSCALEBAR_LABEL_OFFSET];if(!r)return;const s=(0,y.getScale)({scaleType:t,domain:r,range:i,inverted:o}),l=(0,V.axisPropsFromTickScale)(s,4);return n<100||a?{...l,values:r}:l}}))).views((e=>{const{renderProps:t}=e;return{renderProps(){const r=t(),{filters:n,ticks:a,height:o,resolution:i,scaleOpts:s}=e;return{...r,notReady:r.notReady||!e.stats,rpcDriverName:e.rpcDriverName,displayModel:e,config:e.rendererConfig,displayCrossHatches:e.displayCrossHatchesSetting,scaleOpts:s,resolution:i,height:o,ticks:a,filters:n}},get needsScalebar(){const{rendererTypeName:t}=e;return"XYPlotRenderer"===t||"LinePlotRenderer"===t},get fillSetting(){return e.filled?0:1===e.minSize?1:2}}})).views((e=>{const{trackMenuItems:t}=e,r=(0,c.getConf)(e,"defaultRendering");return{trackMenuItems:()=>[...t(),{label:"Score",subMenu:e.scoreTrackMenuItems()},...e.canHaveFill?[{label:"Fill mode",subMenu:["filled","no fill","no fill w/ emphasis"].map(((t,r)=>({label:t,type:"radio",checked:e.fillSetting===r,onClick:()=>{e.setFill(r)}})))}]:[],...e.needsScalebar?[{type:"checkbox",label:"Draw cross hatches",checked:e.displayCrossHatchesSetting,onClick:()=>{e.toggleCrossHatches()}}]:[],...r?[{label:"Renderer type",subMenu:["xyplot","density","line"].map((t=>({label:t,type:"radio",checked:e.rendererTypeNameSimple===t,onClick:()=>{e.setRendererType(t)}})))}]:[],{label:"Set color",onClick:()=>{(0,i.getSession)(e).queueDialog((t=>[j,{model:e,handleClose:t}]))}}]}})).actions((e=>{const{renderSvg:t}=e;return{afterAttach(){(async()=>{const{quantitativeStatsAutorun:t}=await Promise.resolve().then(r.bind(r,75429));t(e)})()},async renderSvg(n){const{renderSvg:a}=await r.e(7627).then(r.bind(r,57627));return a(e,n,t)}}}))};var $=r(57266),q=r(98911);var _=r(42489),U=r(41365),J=r.n(U),X=r(40898);const Y=(0,C.lazy)((()=>r.e(6021).then(r.bind(r,96021)))),K=(0,C.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(5640),r.e(6395),r.e(6932)]).then(r.bind(r,36932)))),Q=new Map([["xyplot","MultiXYPlotRenderer"],["multirowxy","MultiRowXYPlotRenderer"],["multirowdensity","MultiDensityRenderer"],["multiline","MultiLineRenderer"],["multirowline","MultiRowLineRenderer"]]),Z=function(e,t){return g.types.compose("MultiLinearWiggleDisplay",O(t),g.types.model({type:g.types.literal("MultiLinearWiggleDisplay"),layout:g.types.optional(g.types.frozen(),[])})).volatile((()=>({featureUnderMouseVolatile:void 0,sourcesVolatile:void 0}))).actions((e=>({setLayout(t){e.layout=t},clearLayout(){e.layout=[]},setSources(t){J()(t,e.sourcesVolatile)||(e.sourcesVolatile=t)},setFeatureUnderMouse(t){e.featureUnderMouseVolatile=t}}))).views((e=>({get featureUnderMouse(){return e.featureUnderMouseVolatile},get TooltipComponent(){return Y},get rendererTypeName(){const t=e.rendererTypeNameSimple,r=Q.get(t);if(!r)throw new Error(`unknown renderer ${t}`);return r}}))).views((e=>({get needsScalebar(){return"MultiXYPlotRenderer"===e.rendererTypeName||"MultiRowXYPlotRenderer"===e.rendererTypeName||"MultiLineRenderer"===e.rendererTypeName||"MultiRowLineRenderer"===e.rendererTypeName},get needsFullHeightScalebar(){return"MultiXYPlotRenderer"===e.rendererTypeName||"MultiLineRenderer"===e.rendererTypeName},get isMultiRow(){return"MultiRowXYPlotRenderer"===e.rendererTypeName||"MultiRowLineRenderer"===e.rendererTypeName||"MultiDensityRenderer"===e.rendererTypeName},get needsCustomLegend(){return"MultiDensityRenderer"===e.rendererTypeName},get canHaveFill(){return"MultiXYPlotRenderer"===e.rendererTypeName||"MultiRowXYPlotRenderer"===e.rendererTypeName},get renderColorBoxes(){return!("MultiRowLineRenderer"===e.rendererTypeName||"MultiRowXYPlotRenderer"===e.rendererTypeName)},get prefersOffset(){return this.isMultiRow},get sources(){const t=Object.fromEntries(e.sourcesVolatile?.map((e=>[e.name,e]))||[]),r=e.layout.length?e.layout:e.sourcesVolatile;return r?.map((e=>({...t[e.name],...e}))).map(((e,t)=>({...e,color:e.color||(this.isMultiRow?"blue":X.set1[t]||"#000000".replaceAll("0",(()=>(~~(16*Math.random())).toString(16))))})))}}))).views((e=>({get rowHeight(){const{sources:t,height:r,isMultiRow:n}=e;return n?r/(t?.length||1):r},get rowHeightTooSmallForScalebar(){return this.rowHeight<70},get useMinimalTicks(){return(0,c.getConf)(e,"minimalTicks")||this.rowHeightTooSmallForScalebar}}))).views((e=>({get ticks(){const{scaleType:t,domain:r,isMultiRow:n,rowHeight:a,useMinimalTicks:o}=e;if(!r)return;const i=n?0:y.YSCALEBAR_LABEL_OFFSET,s=(0,V.axisPropsFromTickScale)((0,y.getScale)({scaleType:t,domain:r,range:[a-i,i],inverted:(0,c.getConf)(e,"inverted")}),4);return o?{...s,values:r}:s},get colors(){return["red","blue","green","orange","purple","cyan","pink","darkblue","darkred","pink"]}}))).views((e=>{const{renderProps:t}=e;return{renderProps(){const r=t(),{displayCrossHatches:n,filters:a,height:o,resolution:i,rpcDriverName:s,scaleOpts:l,stats:c,sources:d,ticks:u,rendererConfig:p}=e;return{...r,notReady:r.notReady||!d||!c,displayModel:e,config:p,displayCrossHatches:n,filters:a,height:o,resolution:i,rpcDriverName:s,scaleOpts:l,sources:d,ticks:u,onMouseMove:(t,r)=>{e.setFeatureUnderMouse(r)},onMouseLeave:()=>{e.setFeatureUnderMouse(void 0)}}},get hasResolution(){return e.adapterCapabilities.includes("hasResolution")},get hasGlobalStats(){return e.adapterCapabilities.includes("hasGlobalStats")},get fillSetting(){return e.filled?0:1===e.minSize?1:2}}})).views((e=>{const{trackMenuItems:t}=e,r=(0,c.getConf)(e,"defaultRendering");return{trackMenuItems:()=>[...t(),{label:"Score",subMenu:e.scoreTrackMenuItems()},...e.canHaveFill?[{label:"Fill mode",subMenu:["filled","no fill","no fill w/ emphasis"].map(((t,r)=>({label:t,type:"radio",checked:e.fillSetting===r,onClick:()=>{e.setFill(r)}})))}]:[],...e.needsScalebar?[{type:"checkbox",label:"Draw cross hatches",checked:e.displayCrossHatchesSetting,onClick:()=>{e.toggleCrossHatches()}}]:[],...r?[{label:"Renderer type",subMenu:["xyplot","multirowxy","multirowdensity","multiline","multirowline"].map((t=>({label:t,type:"radio",checked:e.rendererTypeNameSimple===t,onClick:()=>{e.setRendererType(t)}})))}]:[],{label:"Edit colors/arrangement...",onClick:()=>{(0,i.getSession)(e).queueDialog((t=>[K,{model:e,handleClose:t}]))}}]}})).actions((e=>{const{renderSvg:t}=e;return{afterAttach(){(async()=>{const{quantitativeStatsAutorun:t}=await Promise.resolve().then(r.bind(r,75429));t(e),(0,g.addDisposer)(e,(0,_.autorun)((async()=>{const{rpcManager:t}=(0,i.getSession)(e),{adapterConfig:r}=e,n=(0,a.getRpcSessionId)(e),o=await t.call(n,"MultiWiggleGetSources",{sessionId:n,adapterConfig:r});(0,g.isAlive)(e)&&e.setSources(o)})))})()},async renderSvg(n){const{renderSvg:a}=await r.e(8880).then(r.bind(r,28880));return a(e,n,t)}}}))};const ee=(0,v.observer)((function(e){const{regions:t,features:r,bpPerPx:n,width:a,height:o,sources:s,onMouseLeave:l=()=>{},onMouseMove:c=()=>{},onFeatureClick:d=()=>{},displayModel:u}=e,p=t[0],m=(0,C.useRef)(null),{isMultiRow:g}=u||{};function h(e,t){if(!m.current)return;const l=m.current.getBoundingClientRect(),c=e-l.left,d=t-l.top,u=s[Math.floor(d/o*s.length)];if(!u)return;const h=p.reversed?a-c:c,f=p.start+n*h;let y;if(g){for(const e of r.values())if(e.get("source")===u.name&&f<=e.get("end")+n&&f>=e.get("start")){y=e;break}}else{const e=[];for(const t of r.values())f<=t.get("end")+n&&f>=t.get("start")&&e.push(t);if(e.length){const t=Math.floor(f);y=new i.SimpleFeature({uniqueId:"mouseoverfeat",sources:Object.fromEntries(e.map((e=>e.toJSON())).map((e=>{const{refName:t,start:r,end:n,source:a,...o}=e;return[a,o]}))),...p,start:t,end:t+1})}}return y}return C.createElement("div",{ref:m,onMouseMove:e=>{const{clientX:t,clientY:r}=e,n=h(t,r);c(e,n)},onClick:e=>{const{clientX:t,clientY:r}=e,n=h(t,r);d(e,n)},onMouseLeave:e=>{l(e)},style:{overflow:"visible",position:"relative",height:o}},C.createElement(S.PrerenderedCanvas,e))}));class te extends s{async draw(e,t){const{sources:r,features:n}=t,a=(0,i.groupBy)(n.values(),(e=>e.get("source")));let o=[];for(const n of r){const r=a[n.name]||[],{reducedFeatures:i}=M(e,{...t,features:r,offset:y.YSCALEBAR_LABEL_OFFSET,colorCallback:()=>n.color||"blue"});o=o.concat(i)}return{reducedFeatures:o}}}const re=(0,c.ConfigurationSchema)("MultiXYPlotRenderer",{filled:{type:"boolean",defaultValue:!0},displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1},summaryScoreMode:{type:"stringEnum",model:g.types.enumeration("Score type",["max","min","avg","whiskers"]),description:"choose whether to use max/min/average or whiskers which combines all three into the same rendering",defaultValue:"avg"},minSize:{type:"number",defaultValue:0}},{baseConfiguration:h,explicitlyTyped:!0});class ne extends s{async draw(e,t){const{bpPerPx:r,sources:n,regions:a,features:o}=t,s=a[0],l=(0,i.groupBy)(o.values(),(e=>e.get("source"))),c=t.height/n.length,d=(s.end-s.start)/r;let u=[];return e.save(),n.forEach((r=>{const{reducedFeatures:n}=M(e,{...t,features:l[r.name]||[],height:c,colorCallback:()=>r.color||"blue"});e.strokeStyle="rgba(200,200,200,0.8)",e.beginPath(),e.moveTo(0,c),e.lineTo(d,c),e.stroke(),e.translate(0,c),u=u.concat(n)})),e.restore(),{reducedFeatures:u}}}const ae=(0,c.ConfigurationSchema)("MultiRowXYPlotRenderer",{filled:{type:"boolean",defaultValue:!0},displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1},summaryScoreMode:{type:"stringEnum",model:g.types.enumeration("Score type",["max","min","avg","whiskers"]),description:"choose whether to use max/min/average or whiskers which combines all three into the same rendering",defaultValue:"whiskers"},minSize:{type:"number",defaultValue:0}},{baseConfiguration:h,explicitlyTyped:!0}),oe=(0,c.ConfigurationSchema)("MultiDensityRenderer",{},{baseConfiguration:h,explicitlyTyped:!0});class ie extends s{async draw(e,t){const{sources:r,features:n}=t,a=(0,i.groupBy)(n.values(),(e=>e.get("source"))),o=t.height/r.length;let s=[];return e.save(),r.forEach((r=>{const n=a[r.name]||[],{reducedFeatures:i}=b(e,{...t,features:n,height:o});e.translate(0,o),s=s.concat(i)})),e.restore(),{reducedFeatures:s}}}class se extends s{async draw(e,t){const{sources:r,features:n}=t,a=(0,i.groupBy)(n.values(),(e=>e.get("source")));let o=[];return r.forEach((r=>{const{reducedFeatures:n}=N(e,{...t,features:a[r.name]||[],colorCallback:()=>r.color||"blue"});o=o.concat(n)})),{reducedFeatures:o}}}const le=(0,c.ConfigurationSchema)("MultiLineRenderer",{displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1},summaryScoreMode:{type:"stringEnum",model:g.types.enumeration("Score type",["max","min","avg","whiskers"]),description:"choose whether to use max/min/average or whiskers which combines all three into the same rendering",defaultValue:"avg"}},{baseConfiguration:h,explicitlyTyped:!0});class ce extends s{async draw(e,t){const{bpPerPx:r,sources:n,regions:a,features:o}=t,s=a[0],l=(0,i.groupBy)(o.values(),(e=>e.get("source"))),c=t.height/n.length,d=(s.end-s.start)/r;let u=[];return e.save(),n.forEach((r=>{const{reducedFeatures:n}=N(e,{...t,features:l[r.name]||[],height:c,colorCallback:()=>r.color||"blue"});e.strokeStyle="rgba(200,200,200,0.8)",e.beginPath(),e.moveTo(0,c),e.lineTo(d,c),e.stroke(),e.translate(0,c),u=u.concat(n)})),e.restore(),{reducedFeatures:u}}}const de=(0,c.ConfigurationSchema)("MultiRowLineRenderer",{displayCrossHatches:{type:"boolean",description:"choose to draw cross hatches (sideways lines)",defaultValue:!1},summaryScoreMode:{type:"stringEnum",model:g.types.enumeration("Score type",["max","min","avg","whiskers"]),description:"choose whether to use max/min/average or whiskers which combines all three into the same rendering",defaultValue:"avg"}},{baseConfiguration:h,explicitlyTyped:!0}),ue=(0,C.lazy)((()=>r.e(9305).then(r.bind(r,69305))));var pe=r(58921),me=r(2406),ge=r(93100),he=r(3496);class fe extends me.A{name="MultiWiggleGetSources";async deserializeArguments(e,t){return{...await super.deserializeArguments(e,t),filters:e.filters?new ge.A({filters:e.filters}):void 0}}async serializeArguments(e,t){const r=this.pluginManager,n=r.rootModel?.session?.assemblyManager;if(!n)return e;const a=await(0,i.renameRegionsIfNeeded)(n,{...e,filters:e.filters?.toJSON().filters});return super.serializeArguments(a,t)}async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{regions:a,adapterConfig:o,sessionId:i}=n,{dataAdapter:s}=await(0,he.cK)(r,i,o);return s.getSources(a,n)}}class ye extends me.A{name="WiggleGetMultiRegionQuantitativeStats";async deserializeArguments(e,t){return{...await super.deserializeArguments(e,t),filters:e.filters?new ge.A({filters:e.filters}):void 0}}async serializeArguments(e,t){const r=this.pluginManager,n=r.rootModel?.session?.assemblyManager;if(!n)return e;const a=await(0,i.renameRegionsIfNeeded)(n,{...e,filters:e.filters?.toJSON().filters});return super.serializeArguments(a,t)}async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{regions:a,adapterConfig:o,sessionId:i}=n,{dataAdapter:s}=await(0,he.cK)(r,i,o);return s.getMultiRegionQuantitativeStats(a,n)}}class be extends me.A{name="WiggleGetGlobalQuantitativeStats";async deserializeArguments(e,t){return{...await super.deserializeArguments(e,t),filters:e.filters?new ge.A({filters:e.filters}):void 0}}async execute(e,t){const r=this.pluginManager,n=await this.deserializeArguments(e,t),{adapterConfig:a,sessionId:o}=n,{dataAdapter:i}=await(0,he.cK)(r,o,a);return i.getGlobalStats(n)}}class we extends n.A{name="WigglePlugin";install(e){e.addAdapterType((()=>new l.A({name:"MultiWiggleAdapter",displayName:"Multi-wiggle adapter",configSchema:m,adapterCapabilities:["hasResolution","hasLocalStats","hasGlobalStats"],adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>r.e(1822).then(r.bind(r,31822)).then((e=>e.default))}))),e.addAdapterType((()=>new l.A({name:"BigWigAdapter",displayName:"BigWig adapter",configSchema:d,adapterCapabilities:["hasResolution","hasLocalStats","hasGlobalStats"],getAdapterClass:()=>Promise.all([r.e(3902),r.e(4234)]).then(r.bind(r,14234)).then((e=>e.default))}))),function(e){e.addTrackType((()=>{const t=function(e){return(0,c.ConfigurationSchema)("QuantitativeTrack",{},{baseConfiguration:(0,u.createBaseTrackConfig)(e)})}(e);return new p.A({name:"QuantitativeTrack",displayName:"Quantitative track",configSchema:t,stateModel:(0,u.createBaseTrackModel)(e,"QuantitativeTrack",t)})}))}(e),function(e){e.addTrackType((()=>{const t=(e=>(0,c.ConfigurationSchema)("MultiQuantitativeTrack",{},{baseConfiguration:(0,u.createBaseTrackConfig)(e)}))(e);return new p.A({name:"MultiQuantitativeTrack",displayName:"Multi-quantitative track",configSchema:t,stateModel:(0,u.createBaseTrackModel)(e,"MultiQuantitativeTrack",t)})}))}(e),function(e){e.addDisplayType((()=>{const t=function(e){const t=e.getRendererType("XYPlotRenderer").configSchema,r=e.getRendererType("DensityRenderer").configSchema,n=e.getRendererType("LinePlotRenderer").configSchema;return(0,c.ConfigurationSchema)("LinearWiggleDisplay",{defaultRendering:{type:"stringEnum",model:g.types.enumeration("Rendering",["density","xyplot","line"]),defaultValue:"xyplot"},renderers:(0,c.ConfigurationSchema)("RenderersConfiguration",{DensityRenderer:r,XYPlotRenderer:t,LinePlotRenderer:n})},{baseConfiguration:B(),explicitlyTyped:!0})}(e),n=G(e,t);return new L.A({name:"LinearWiggleDisplay",displayName:"Wiggle display",configSchema:t,stateModel:n,trackType:"QuantitativeTrack",viewType:"LinearGenomeView",ReactComponent:(0,C.lazy)((()=>Promise.resolve().then(r.bind(r,98911))))})}))}(e),function(e){e.addDisplayType((()=>{const t=function(e){const t=e.getRendererType("MultiXYPlotRenderer").configSchema,r=e.getRendererType("MultiDensityRenderer").configSchema,n=e.getRendererType("MultiRowXYPlotRenderer").configSchema,a=e.getRendererType("MultiLineRenderer").configSchema,o=e.getRendererType("MultiRowLineRenderer").configSchema;return(0,c.ConfigurationSchema)("MultiLinearWiggleDisplay",{defaultRendering:{type:"stringEnum",model:g.types.enumeration("Rendering",["multirowxy","xyplot","multirowdensity","multiline","multirowline"]),defaultValue:"multirowxy"},renderers:(0,c.ConfigurationSchema)("RenderersConfiguration",{MultiXYPlotRenderer:t,MultiDensityRenderer:r,MultiRowXYPlotRenderer:n,MultiLineRenderer:a,MultiRowLineRenderer:o}),height:{type:"number",defaultValue:200}},{baseConfiguration:B(),explicitlyTyped:!0})}(e);return new L.A({name:"MultiLinearWiggleDisplay",displayName:"Multi-wiggle display",configSchema:t,stateModel:Z(0,t),trackType:"MultiQuantitativeTrack",viewType:"LinearGenomeView",ReactComponent:(0,C.lazy)((()=>r.e(8526).then(r.bind(r,8526))))})}))}(e),function(e){e.addRendererType((()=>new F({name:"LinePlotRenderer",ReactComponent:k,configSchema:I,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new E({name:"XYPlotRenderer",ReactComponent:k,configSchema:R,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new w({name:"DensityRenderer",ReactComponent:k,configSchema:f,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new te({name:"MultiXYPlotRenderer",ReactComponent:ee,configSchema:re,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new ne({name:"MultiRowXYPlotRenderer",ReactComponent:ee,configSchema:ae,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new ie({name:"MultiDensityRenderer",ReactComponent:ee,configSchema:oe,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new se({name:"MultiLineRenderer",ReactComponent:ee,configSchema:le,pluginManager:e})))}(e),function(e){e.addRendererType((()=>new ce({name:"MultiRowLineRenderer",ReactComponent:ee,configSchema:de,pluginManager:e})))}(e),function(e){e.addAddTrackWorkflowType((()=>new pe.AddTrackWorkflowType({name:"Multi-wiggle track",ReactComponent:(0,C.lazy)((()=>r.e(2018).then(r.bind(r,52018)))),stateModel:g.types.model({})})))}(e),function(e){e.addToExtensionPoint("TrackSelector-multiTrackMenuItems",((e,t)=>{const{session:r}=t;return[...e,...(0,i.isSessionWithAddTracks)(r)?[{label:"Create multi-wiggle track",onClick:e=>{const t=e.selection,r=t.map((e=>(0,c.readConfObject)(e,"name")));(0,i.getSession)(e).queueDialog((n=>[ue,{tracks:t,onClose:(a,o)=>{a&&o&&function(n){const a=t.map((e=>(0,c.readConfObject)(e,"adapter"))).map(((e,t)=>({...e,source:r[t]}))),o=[...new Set(t.flatMap((e=>(0,c.readConfObject)(e,"assemblyNames"))))],s=`multitrack-${+Date.now()}-sessionTrack`,l=(0,i.getSession)(e);(0,i.isSessionWithAddTracks)(l)&&(l.addTrackConf({type:"MultiQuantitativeTrack",trackId:s,name:n.name,assemblyNames:o,adapter:{type:"MultiWiggleAdapter",subadapters:a}}),e.view.showTrack(s))}(o),n()}}]))}}]:[]]}))}(e),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const o="BigWigAdapter",i=(0,a.getFileName)(t),s={type:o,bigWigLocation:t};return/\.(bw|bigwig)$/i.test(i)&&!n||n===o?s:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"BigWigAdapter"===t?"QuantitativeTrack":e(t))),e.addRpcMethod((()=>new be(e))),e.addRpcMethod((()=>new ye(e))),e.addRpcMethod((()=>new fe(e)))}exports={LinearWiggleDisplayReactComponent:q.default,XYPlotRendererReactComponent:k,XYPlotRenderer:E,WiggleBaseRenderer:s,linearWiggleDisplayModelFactory:G,xyPlotRendererConfigSchema:R,utils:y}}},90461:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(7552),a=r(48231),o=r(68446),i=r(77126);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s.apply(null,arguments)}const l=(0,o.observer)((function({model:e,orientation:t}){const{ticks:r}=e,o=(0,a.A)();return r?n.createElement(i.Axis,s({},r,{shadow:2,format:e=>e,style:{orient:"left"===t?i.LEFT:i.RIGHT},bg:o.palette.background.default,fg:o.palette.text.primary})):null}))},75429:(e,t,r)=>{"use strict";r.r(t),r.d(t,{YSCALEBAR_LABEL_OFFSET:()=>u,fillRectCtx:()=>w,getNiceDomain:()=>g,getOrigin:()=>m,getQuantitativeStats:()=>h,getScale:()=>p,quantitativeStatsAutorun:()=>f,round:()=>b,toP:()=>y});var n=r(45824),a=r(35873),o=r(6754),i=r(42489),s=r(99546),l=r(91468),c=r(36422),d=r(68584);const u=5;function p({domain:e=[],range:t=[],scaleType:r,pivotValue:i,inverted:s}){let l;const[c,d]=e;if(void 0===c||void 0===d)throw new Error("invalid domain");if("linear"===r)l=(0,n.A)();else if("log"===r)l=(0,a.A)().base(2);else{if("quantize"!==r)throw new Error("undefined scaleType");l=(0,o.A)()}l.domain(void 0!==i?[c,i,d]:[c,d]),l.nice();const[u,p]=t;if(void 0===u||void 0===p)throw new Error("invalid range");return l.range(s?t.slice().reverse():t),l}function m(e){return"log"===e?1:0}function g({scaleType:e,domain:t,bounds:r}){const[i,s]=r;let[l,c]=t;"linear"===e&&(c<0&&(c=0),l>0&&(l=0)),"log"===e&&l>=0&&c>1&&(l=1),void 0!==i&&i!==Number.MIN_VALUE&&(l=i),void 0!==s&&s!==Number.MAX_VALUE&&(c=s);const d=(e=>{if("linear"===e)return(0,n.A)();if("log"===e){const e=(0,a.A)();return e.base(2),e}if("quantize"===e)return(0,o.A)();throw new Error(`undefined scaleType ${e}`)})(e);return d.domain([l,c]),d.nice(),d.domain()}async function h(e,t){const{rpcManager:r}=(0,s.getSession)(e),n=(0,d.getConf)(e,"numStdDev")||3,{adapterConfig:a,autoscaleType:o}=e,i=(0,l.getRpcSessionId)(e),u={sessionId:i,adapterConfig:a,statusCallback:t=>{(0,c.isAlive)(e)&&e.setMessage(t)},...t};if("global"===o||"globalsd"===o){const e=await r.call(i,"WiggleGetGlobalQuantitativeStats",u),{scoreMin:t,scoreMean:a,scoreStdDev:s}=e;return"globalsd"===o?{...e,scoreMin:t>=0?0:a-n*s,scoreMax:a+n*s}:e}if("local"===o||"localsd"===o){const{dynamicBlocks:t,bpPerPx:a}=(0,s.getContainingView)(e),l=await r.call(i,"WiggleGetMultiRegionQuantitativeStats",{...u,regions:t.contentBlocks.map((e=>{const{start:t,end:r}=e;return{...JSON.parse(JSON.stringify(e)),start:Math.floor(t),end:Math.ceil(r)}})),bpPerPx:a}),{scoreMin:c,scoreMean:d,scoreStdDev:p}=l;return"localsd"===o?{...l,scoreMin:c>=0?0:d-n*p,scoreMax:d+n*p}:l}if("zscale"===o)return r.call(i,"WiggleGetGlobalQuantitativeStats",u);throw new Error(`invalid autoscaleType '${o}'`)}function f(e){(0,c.addDisposer)(e,(0,i.autorun)((async()=>{try{const t=new AbortController,r=(0,s.getContainingView)(e);if(e.setLoading(t),!r.initialized||!e.featureDensityStatsReady||e.regionTooLarge||e.error)return;const n=JSON.stringify(r.dynamicBlocks),a=await h(e,{signal:t.signal,filters:[],...e.renderProps()});(0,c.isAlive)(e)&&e.updateQuantitativeStats(a,n)}catch(t){!(0,s.isAbortException)(t)&&(0,c.isAlive)(e)&&(console.error(t),e.setError(t))}}),{delay:1e3}))}function y(e=0){return+(+e).toPrecision(6)}function b(e){return Math.round(1e5*e)/1e5}function w(e,t,r,n,a,o){r<0&&(e+=r,r=-r),n<0&&(t+=n,n=-n),o&&(a.fillStyle=o),a.fillRect(e,t,r,n)}},63163:(e,t,r)=>{"use strict";r.d(t,{A:()=>Mo});var n=r(82727),a=r(12678),o=r(92070),i=r(68584),s=r(1622);const l=(0,i.ConfigurationSchema)("OAuthInternetAccount",{tokenType:{description:"a custom name for a token to include in the header",type:"string",defaultValue:"Bearer"},authEndpoint:{description:"the authorization code endpoint of the internet account",type:"string",defaultValue:""},tokenEndpoint:{description:"the token endpoint of the internet account",type:"string",defaultValue:""},needsPKCE:{description:"boolean to indicate if the endpoint needs a PKCE code",type:"boolean",defaultValue:!1},clientId:{description:"id for the OAuth application",type:"string",defaultValue:""},scopes:{description:"optional scopes for the authorization call",type:"string",defaultValue:""},state:{description:"optional state for the authorization call",type:"string",defaultValue:""},responseType:{description:"the type of response from the authorization endpoint. can be 'token' or 'code'",type:"string",defaultValue:"code"}},{baseConfiguration:s.BaseInternetAccountConfig,explicitlyTyped:!0});var c=r(99546),d=r(36422),u=r(35451);function p(e){return e.replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}function m(e,t){try{const r=JSON.parse(e);return"invalid_grant"===r.error&&t(),r?.error_description??e}catch(e){}return e}function g(e,t){return e.refresh_token&&t(e.refresh_token),e.access_token}async function h({response:e,reason:t,statusText:r}){return[`HTTP ${e.status}`,t,r??await f(e)].filter((e=>!!e)).join(" - ")}async function f(e){try{return await e.text()}catch(t){return e.statusText}}const y=e=>s.InternetAccount.named("OAuthInternetAccount").props({type:d.types.literal("OAuthInternetAccount"),configuration:(0,i.ConfigurationReference)(e)}).views((()=>{let e;return{get codeVerifierPKCE(){if(e)return e;const t=new Uint8Array(32);return globalThis.crypto.getRandomValues(t),e=p(u.hp.from(t).toString("base64")),e}}})).views((e=>({get authEndpoint(){return(0,i.getConf)(e,"authEndpoint")},get tokenEndpoint(){return(0,i.getConf)(e,"tokenEndpoint")},get needsPKCE(){return(0,i.getConf)(e,"needsPKCE")},get clientId(){return(0,i.getConf)(e,"clientId")},get scopes(){return(0,i.getConf)(e,"scopes")},state:()=>(0,i.getConf)(e,"state"),get responseType(){return(0,i.getConf)(e,"responseType")},get refreshTokenKey(){return`${e.internetAccountId}-refreshToken`}}))).actions((e=>({storeRefreshToken(t){localStorage.setItem(e.refreshTokenKey,t)},removeRefreshToken(){localStorage.removeItem(e.refreshTokenKey)},retrieveRefreshToken:()=>localStorage.getItem(e.refreshTokenKey),async exchangeAuthorizationForAccessToken(t,r){const n=new URLSearchParams(Object.entries({code:t,grant_type:"authorization_code",client_id:e.clientId,redirect_uri:r,...e.needsPKCE?{code_verifier:e.codeVerifierPKCE}:{}})),a=await fetch(e.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()});if(!a.ok)throw new Error(await h({response:a,reason:"Failed to obtain token"}));return g(await a.json(),(e=>{this.storeRefreshToken(e)}))},async exchangeRefreshForAccessToken(t){const r=await fetch(e.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Object.entries({grant_type:"refresh_token",refresh_token:t,client_id:e.clientId})).toString()});if(!r.ok){e.removeToken();const t=await r.text();throw new Error(await h({response:r,statusText:m(t,(()=>{this.removeRefreshToken()}))}))}return g(await r.json(),(e=>{this.storeRefreshToken(e)}))}}))).actions((e=>{let t,n;return{addMessageChannel(e,r){t=t=>{this.finishOAuthWindow(t,e,r)},window.addEventListener("message",t)},deleteMessageChannel(){window.removeEventListener("message",t)},async finishOAuthWindow(t,r,n){if(t.data.name!==`JBrowseAuthWindow-${e.internetAccountId}`)return void this.deleteMessageChannel();const a=t.data.redirectUri,o=a.replace("#","?"),i=new URL(o),s=i.search,l=new URLSearchParams(s);if(l.has("access_token")){const t=l.get("access_token");return t?(e.storeToken(t),void r(t)):void n(new Error("Error with token endpoint"))}if(l.has("code")){const t=l.get("code");if(!t)return void n(new Error("Error with authorization endpoint"));try{const n=await e.exchangeAuthorizationForAccessToken(t,i.origin+i.pathname);return e.storeToken(n),void r(n)}catch(e){return void(e instanceof Error?n(e):n(new Error(String(e))))}}a.includes("access_denied")?n(new Error("OAuth flow was cancelled")):a.includes("error")?n(new Error(`OAuth flow error: ${s}`)):this.deleteMessageChannel()},async useEndpointForAuthorization(t,n){const a=c.isElectron?"http://localhost/auth":window.location.origin+window.location.pathname,o={client_id:e.clientId,redirect_uri:a,response_type:e.responseType,token_access_type:"offline"};e.state()&&(o.state=e.state()),e.scopes&&(o.scope=e.scopes),e.needsPKCE&&(o.code_challenge=await async function(e){const t=await Promise.all([r.e(7753),r.e(8424)]).then(r.t.bind(r,27181,23)).then((e=>e.default));return p((await Promise.all([r.e(7753),r.e(6435)]).then(r.t.bind(r,29038,23))).stringify(t(e)))}(e.codeVerifierPKCE),o.code_challenge_method="S256");const i=new URLSearchParams(Object.entries(o)),s=new URL(e.authEndpoint);s.search=i.toString();const l=`JBrowseAuthWindow-${e.internetAccountId}`;if(c.isElectron){const{ipcRenderer:r}=window.require("electron"),a=await r.invoke("openAuthWindow",{internetAccountId:e.internetAccountId,data:o,url:s.toString()}),i=new MessageEvent("message",{data:{name:l,redirectUri:a}});this.finishOAuthWindow(i,t,n)}else window.open(s,l,"width=500,height=600,left=0,top=0")},async getTokenFromUser(t,r){const n=e.retrieveRefreshToken();let a=!0;if(n)try{t(await e.exchangeRefreshForAccessToken(n)),a=!1}catch(t){console.error(t),e.removeRefreshToken()}a&&(this.addMessageChannel(t,r),this.useEndpointForAuthorization(t,r))},async validateToken(t,r){const a=e.addAuthHeaderToInit({method:"HEAD"},t),o=await fetch(r.uri,a);if(!o.ok){e.removeToken();const t=e.retrieveRefreshToken();if(t)try{n||(n=e.exchangeRefreshForAccessToken(t));const r=await n;return n=void 0,r}catch(e){console.error("Token could not be refreshed",e)}throw new Error(await h({response:o,reason:"Error validating token"}))}return t}}})).actions((e=>{const t=e.getFetcher;return{getFetcher(r){const n=t(r);return async(t,a)=>(r&&await e.validateToken(await e.getToken(r),r),n(t,a))}}})),b=(0,i.ConfigurationSchema)("ExternalTokenInternetAccount",{validateWithHEAD:{description:"validate the token with a HEAD request before using it",type:"boolean",defaultValue:!0}},{baseConfiguration:s.BaseInternetAccountConfig,explicitlyTyped:!0});var w=r(7552),v=r(29499),C=r(1343),S=r(58507),k=r(5401),T=r(49823);const x=({internetAccountId:e,handleClose:t})=>{const[r,n]=(0,w.useState)("");return w.createElement(T.Dialog,{open:!0,maxWidth:"xl","data-testid":"externalToken-form",title:`Enter token for ${e}`},w.createElement(v.A,{style:{display:"flex",flexDirection:"column"}},w.createElement(C.A,{required:!0,label:"Enter Token",variant:"outlined",inputProps:{"data-testid":"entry-externalToken"},onChange:e=>{n(e.target.value)},margin:"dense"})),w.createElement(S.A,null,w.createElement(k.A,{variant:"contained",color:"primary",type:"submit",disabled:!r,onClick:()=>{r&&t(r)}},"Add"),w.createElement(k.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))},A=e=>s.InternetAccount.named("ExternalTokenInternetAccount").props({type:d.types.literal("ExternalTokenInternetAccount"),configuration:(0,i.ConfigurationReference)(e)}).views((e=>({get validateWithHEAD(){return(0,i.getConf)(e,"validateWithHEAD")}}))).actions((e=>({getTokenFromUser(t,r){const{session:n}=(0,d.getRoot)(e);n.queueDialog((n=>[x,{internetAccountId:e.internetAccountId,handleClose:e=>{e?t(e):r(new Error("user cancelled entry")),n()}}]))},async validateToken(t,r){if(!e.validateWithHEAD)return t;const n=e.addAuthHeaderToInit({method:"HEAD"},t),a=await fetch(r.uri,n);if(!a.ok){let e;try{e=await a.text()}catch(t){e=""}throw new Error(`Token could not be validated — ${a.status} ${e?` (${e})`:""}`)}return t}}))),P=(0,i.ConfigurationSchema)("HTTPBasicInternetAccount",{tokenType:{description:"a custom name for a token to include in the header",type:"string",defaultValue:"Basic"},validateWithHEAD:{description:"validate the token with a HEAD request before using it",type:"boolean",defaultValue:!0}},{baseConfiguration:s.BaseInternetAccountConfig,explicitlyTyped:!0});function M({internetAccountId:e,handleClose:t}){const[r,n]=(0,w.useState)(""),[a,o]=(0,w.useState)("");return w.createElement(T.Dialog,{open:!0,maxWidth:"xl","data-testid":"login-httpbasic",title:`Log in for ${e}`},w.createElement("form",{onSubmit:e=>{r&&a?t(btoa(`${r}:${a}`)):t(),e.preventDefault()}},w.createElement(v.A,{style:{display:"flex",flexDirection:"column"}},w.createElement(C.A,{required:!0,label:"Username",variant:"outlined",inputProps:{"data-testid":"login-httpbasic-username"},onChange:e=>{n(e.target.value)},margin:"dense"}),w.createElement(C.A,{required:!0,label:"Password",type:"password",autoComplete:"current-password",variant:"outlined",inputProps:{"data-testid":"login-httpbasic-password"},onChange:e=>{o(e.target.value)},margin:"dense"})),w.createElement(S.A,null,w.createElement(k.A,{variant:"contained",color:"primary",type:"submit"},"Submit"),w.createElement(k.A,{variant:"contained",color:"secondary",type:"submit",onClick:()=>{t()}},"Cancel"))))}const E=e=>s.InternetAccount.named("HTTPBasicInternetAccount").props({type:d.types.literal("HTTPBasicInternetAccount"),configuration:(0,i.ConfigurationReference)(e)}).views((e=>({get validateWithHEAD(){return(0,i.getConf)(e,"validateWithHEAD")}}))).actions((e=>({getTokenFromUser(t,r){const{session:n}=(0,d.getRoot)(e);n.queueDialog((n=>[M,{internetAccountId:e.internetAccountId,handleClose:e=>{e?t(e):r(new Error("User cancelled entry")),n()}}]))},async validateToken(t,r){if(!e.validateWithHEAD)return t;const n=e.addAuthHeaderToInit({method:"HEAD"},t),a=await fetch(r.uri,n);if(!a.ok)throw new Error(await h({response:a,reason:"Error validating token"}));return t}}))),R=(0,i.ConfigurationSchema)("DropboxOAuthInternetAccount",{authEndpoint:{description:"the authorization code endpoint of the internet account",type:"string",defaultValue:"https://www.dropbox.com/oauth2/authorize"},tokenEndpoint:{description:"the token endpoint of the internet account",type:"string",defaultValue:"https://api.dropbox.com/oauth2/token"},needsPKCE:{description:"boolean to indicate if the endpoint needs a PKCE code",type:"boolean",defaultValue:!0},domains:{description:"array of valid domains the url can contain to use this account",type:"stringArray",defaultValue:["addtodropbox.com","db.tt","dropbox.com","dropboxapi.com","dropboxbusiness.com","dropbox.tech","getdropbox.com"]}},{baseConfiguration:l,explicitlyTyped:!0}),I={shared_link_not_found:"The shared link wasn't found.",shared_link_access_denied:"The caller is not allowed to access this shared link.",unsupported_link_type:"This type of link is not supported; use files/export instead.",shared_link_is_directory:"Directories cannot be retrieved by this endpoint."};async function N(e,t){let r="";try{const t=JSON.parse(await e.text()).error[".tag"];r=I[t]||t}catch(e){}return h({response:e,reason:t,statusText:r})}var F=r(2859);function L(e){return w.createElement(F.A,e,w.createElement("path",{d:"M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z"}))}const D=e=>y(l).named("DropboxOAuthInternetAccount").props({type:d.types.literal("DropboxOAuthInternetAccount"),configuration:(0,i.ConfigurationReference)(e)}).views((()=>({get toggleContents(){return w.createElement(L,null)},get selectorLabel(){return"Enter Dropbox share link"}}))).actions((e=>({getFetcher:t=>async(r,n)=>{const a=await e.getToken(t),o=e.addAuthHeaderToInit({...n,method:"POST"},a);o.headers.append("Dropbox-API-Arg",JSON.stringify({url:r}));const i=await fetch("https://content.dropboxapi.com/2/sharing/get_shared_link_file",o);if(!i.ok)throw new Error(await N(i));return i},async validateToken(t,r){const n=await fetch("https://api.dropboxapi.com/2/sharing/get_shared_link_metadata",{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({url:r.uri})});if(!n.ok){const t=e.retrieveRefreshToken();if(t){e.removeRefreshToken();const n=await e.exchangeRefreshForAccessToken(t);return this.validateToken(n,r)}throw new Error(await N(n,"Token could not be validated"))}return t}}))),B=(0,i.ConfigurationSchema)("GoogleDriveOAuthInternetAccount",{authEndpoint:{description:"the authorization code endpoint of the internet account",type:"string",defaultValue:"https://accounts.google.com/o/oauth2/v2/auth"},scopes:{description:"optional scopes for the authorization call",type:"string",defaultValue:"https://www.googleapis.com/auth/drive.readonly"},domains:{description:"array of valid domains the url can contain to use this account",type:"stringArray",defaultValue:['drive.google.com"']},responseType:{description:"the type of response from the authorization endpoint",type:"string",defaultValue:"token"}},{baseConfiguration:l,explicitlyTyped:!0});async function V(e,t){let r="";try{r=JSON.parse(await e.text()).error.message}catch(e){}return h({response:e,reason:t,statusText:r})}var z=r(99834);class O extends z.RemoteFileWithRangeCache{constructor(e,t){super(e,t),this.statsPromise=this.fetch(e,{metadataOnly:!0}).then((e=>e.json()))}async fetch(e,t){return super.fetch(e,t)}async stat(){return this.statsPromise}}function H(e){return w.createElement(F.A,e,w.createElement("path",{d:"M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z"}))}function j(e){return`https://www.googleapis.com/drive/v3/files/${/[-\w]{25,}/.exec(e)}`}function W(e){return y(l).named("GoogleDriveOAuthInternetAccount").props({type:d.types.literal("GoogleDriveOAuthInternetAccount"),configuration:(0,i.ConfigurationReference)(e)}).views((()=>({get toggleContents(){return w.createElement(H,null)},get selectorLabel(){return"Enter Google Drive share link"}}))).actions((e=>({getFetcher:t=>async(r,n)=>{const a=new URL(j(String(r))),o=new URLSearchParams;n?.metadataOnly?o.append("fields","size"):o.append("alt","media"),a.search=o.toString();const i=await e.getToken(t),s=await fetch(a,e.addAuthHeaderToInit({...n,method:"GET",credentials:"same-origin"},i));if(!s.ok)throw new Error(await V(s));return s},openLocation(e){return new O(e.uri,{fetch:this.getFetcher(e)})},async validateToken(e,t){const r=await fetch(j(t.uri),{headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/x-www-form-urlencoded"}});if(!r.ok)throw new Error(await V(r,"Token could not be validated"));return e}})))}class G extends a.A{name="AuthenticationPlugin";exports={OAuthConfigSchema:l,OAuthInternetAccountModelFactory:y,ExternalTokenConfigSchema:b,ExternalTokenInternetAccountModelFactory:A,HTTPBasicConfigSchema:P,HTTPBasicInternetAccountModelFactory:E,DropboxOAuthConfigSchema:R,DropboxOAuthInternetAccountModelFactory:D,GoogleDriveOAuthConfigSchema:B,GoogleDriveOAuthInternetAccountModelFactory:W};install(e){e.addInternetAccountType((()=>new o.A({name:"OAuthInternetAccount",configSchema:l,stateModel:y(l)}))),e.addInternetAccountType((()=>new o.A({name:"ExternalTokenInternetAccount",configSchema:b,stateModel:A(b)}))),e.addInternetAccountType((()=>new o.A({name:"HTTPBasicInternetAccount",configSchema:P,stateModel:E(P)}))),e.addInternetAccountType((()=>new o.A({name:"DropboxOAuthInternetAccount",configSchema:R,stateModel:D(R)}))),e.addInternetAccountType((()=>new o.A({name:"GoogleDriveOAuthInternetAccount",configSchema:B,stateModel:W(B)})))}}var $=r(47369);const q=(0,i.ConfigurationSchema)("BigBedAdapter",{bigBedLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bb",locationType:"UriLocation"}},scoreColumn:{type:"string",description:'The column to use as a "score" attribute',defaultValue:""},aggregateField:{type:"string",description:"An attribute to aggregate features with",defaultValue:"geneName"}},{explicitlyTyped:!0}),_=(0,i.ConfigurationSchema)("BedpeAdapter",{bedpeLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bedpe.gz",locationType:"UriLocation"}},columnNames:{type:"stringArray",description:"List of column names",defaultValue:[]}},{explicitlyTyped:!0}),U=(0,i.ConfigurationSchema)("BedTabixAdapter",{bedGzLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},index:(0,i.ConfigurationSchema)("TabixIndex",{indexType:{model:d.types.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz.tbi",locationType:"UriLocation"}}}),columnNames:{type:"stringArray",description:"List of column names",defaultValue:[]},scoreColumn:{type:"string",description:'The column to use as a "score" attribute',defaultValue:""},autoSql:{type:"string",description:"The autoSql definition for the data fields in the file",defaultValue:""}},{explicitlyTyped:!0}),J=(0,i.ConfigurationSchema)("BedAdapter",{bedLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},columnNames:{type:"stringArray",description:"List of column names",defaultValue:[]},scoreColumn:{type:"string",description:'The column to use as a "score" attribute',defaultValue:""},autoSql:{type:"string",description:"The autoSql definition for the data fields in the file",defaultValue:""},colRef:{type:"number",description:'The column to use as a "refName" attribute',defaultValue:0},colStart:{type:"number",description:'The column to use as a "start" attribute',defaultValue:1},colEnd:{type:"number",description:'The column to use as a "end" attribute',defaultValue:2}},{explicitlyTyped:!0});var X=r(91468);class Y extends a.A{name="BedPlugin";install(e){!function(e){e.addAdapterType((()=>new $.A({name:"BigBedAdapter",displayName:"BigBed adapter",configSchema:q,getAdapterClass:()=>Promise.all([r.e(972),r.e(3902),r.e(6834)]).then(r.bind(r,6834)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"BedAdapter",displayName:"BED adapter",configSchema:J,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4499),r.e(972),r.e(4864)]).then(r.bind(r,34864)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"BedpeAdapter",displayName:"BEDPE adapter",configSchema:_,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4499),r.e(14)]).then(r.bind(r,10014)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"BedTabixAdapter",displayName:"BED tabix adapter",configSchema:U,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(8120),r.e(972),r.e(6214)]).then(r.bind(r,86214)).then((e=>e.default))})))}(e),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BigBedAdapter",o=(0,X.getFileName)(t),i={type:a,bigBedLocation:t};return/\.(bb|bigbed)$/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BedpeAdapter",o=(0,X.getFileName)(t);return/\.bedpe(\.gz)?$/i.test(o)||n===a?{type:a,bedpeLocation:t}:e(t,r,n)})),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BedTabixAdapter",o=(0,X.getFileName)(t),i=r&&(0,X.getFileName)(r);return/\.bed\.b?gz$/i.test(o)||n===a?{type:a,bedGzLocation:t,index:{location:r||(0,X.makeIndex)(t,".tbi"),indexType:(0,X.makeIndexType)(i,"CSI","TBI")}}:e(t,r,n)})),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BedAdapter",o=(0,X.getFileName)(t);return/\.bed$/i.test(o)||n===a?{type:a,bedLocation:t}:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"BedpeAdapter"===t?"VariantTrack":e(t)))}}var K=r(8832),Q=r(58921);const Z=(0,i.ConfigurationSchema)("BreakpointAlignmentsWidget",{}),ee=d.types.model("BreakpointAlignmentsWidget",{id:K.ElementId,type:d.types.literal("BreakpointAlignmentsWidget"),featureData:d.types.frozen()}).actions((e=>({setFeatureData(t){e.featureData=t},clearFeatureData(){e.featureData=void 0}})));var te=r(63589),re=r(9502);class ne extends te.A{getBreakendCoveringRegions({feature:e,assembly:t}){const r=e.get("ALT")?.[0],n=r?(0,re.h)(r):void 0,a=e.get("start"),o=e.get("refName");let i,s;if("<TRA>"===r){const t=e.get("INFO");i=t.END[0]-1,s=t.CHR2[0]}else if(n?.MatePosition){const e=n.MatePosition.split(":");i=+e[1]-1,s=e[0]}else if(e.get("mate")){const t=e.get("mate");s=t.refName,i=t.start}else i=a+1;if(!s)throw new Error(`unable to resolve mate refName ${s} in reference genome`);return{pos:a,refName:t.getCanonicalRefName(o),mateRefName:t.getCanonicalRefName(s),matePos:i}}singleLevelSnapshotFromBreakendFeature(e,t){const r=(0,c.getSession)(t),{assemblyName:n}=t.displayedRegions[0],{assemblyManager:a}=r,o=a.get(n);if(!o)throw new Error(`assembly ${n} not found`);if(!o.regions)throw new Error(`assembly ${n} regions not loaded`);const{refName:i,pos:s,mateRefName:l,matePos:d}=this.getBreakendCoveringRegions({feature:e,assembly:o}),u=o.regions.find((e=>e.refName===i)),p=o.regions.find((e=>e.refName===l)),m=[{...u},{...u}],g=[{...p},{...p}];return m[0].end=s,m[1].start=s,g[0].end=d,g[1].start=d,{type:"BreakpointSplitView",views:[{type:"LinearGenomeView",displayedRegions:m,hideHeader:!0,bpPerPx:10,offsetPx:(u.start+e.get("start"))/10}],displayName:`${e.get("name")||e.get("id")||"breakend"} split detail`,featureData:void 0}}snapshotFromBreakendFeature(e,t){const r=(0,c.getSession)(t),{assemblyName:n}=t.displayedRegions[0],{assemblyManager:a}=r,o=a.get(n);if(!o)throw new Error(`assembly ${n} not found`);if(!o.regions)throw new Error(`assembly ${n} regions not loaded`);const{refName:i,pos:s,mateRefName:l,matePos:d}=this.getBreakendCoveringRegions({feature:e,assembly:o}),u=o.regions.find((e=>e.refName===i)),p=o.regions.find((e=>e.refName===l)),m=[{...u},{...u}],g=[{...p},{...p}];return m[0].end=s,m[1].start=s,g[0].end=d,g[1].start=d,{type:"BreakpointSplitView",views:[{type:"LinearGenomeView",displayedRegions:m,hideHeader:!0,bpPerPx:10,offsetPx:(u.start+e.get("start"))/10},{type:"LinearGenomeView",displayedRegions:g,hideHeader:!0,bpPerPx:10,offsetPx:(p.start+d)/10}],displayName:`${e.get("name")||e.get("id")||"breakend"} split detail`}}}var ae=r(42489),oe=r(45465),ie=r(64502),se=r(75441),le=r(49473);const ce=(0,w.lazy)((()=>r.e(7790).then(r.bind(r,47790))));function de(e,t){return e.displays[0].searchFeatureByID?.(t.id())}async function ue(e,t){const{views:r}=e,{rpcManager:n,assemblyManager:a}=(0,c.getSession)(e),o=e.views[0]?.assemblyNames[0];if(!o)return;if(!await a.waitForAssembly(o))return;const s=t.configuration.trackId;return Promise.all(r.map((async e=>(await n.call(s,"CoreGetFeatures",{adapterConfig:(0,i.getConf)(t,["adapter"]),sessionId:s,regions:e.staticBlocks.contentBlocks})).flat())))}function pe(e){return d.types.compose("BreakpointSplitView",s.BaseViewModel,d.types.model({type:d.types.literal("BreakpointSplitView"),height:d.types.optional(d.types.refinement("viewHeight",d.types.number,(e=>e>=40)),400),trackSelectorType:"hierarchical",showIntraviewLinks:!0,linkViews:!1,interactToggled:!1,views:d.types.array(e.getViewType("LinearGenomeView").stateModel)})).volatile((()=>({width:800,matchedTrackFeatures:{}}))).views((e=>({async exportSvg(t={}){const{renderToSvg:n}=await Promise.all([r.e(5727),r.e(5668)]).then(r.bind(r,95668)),a=await n(e,t),o=new Blob([a],{type:"image/svg+xml"});(0,oe.saveAs)(o,t.filename||"image.svg")}}))).views((e=>({get matchedTracks(){return 1===e.views.length?e.views[0].tracks:(0,le.y$)((e=>e.configuration.trackId),...e.views.map((e=>e.tracks)))},getMatchedTracks:t=>e.views.map((e=>e.getTrack(t))).filter((e=>!!e)),hasTranslocations(e){return[...this.getTrackFeatures(e).values()].find((e=>"translocation"===e.get("type")))},hasPairedFeatures(e){return[...this.getTrackFeatures(e).values()].find((e=>"paired_feature"===e.get("type")))},getTrackFeatures:t=>new Map(e.matchedTrackFeatures[t]?.flat().map((e=>[e.id(),e]))),getMatchedFeaturesInLayout(e,t){const r=this.getMatchedTracks(e);return t.map((e=>e.map((e=>{const t=r.findIndex((t=>de(t,e)));return-1!==t?{feature:e,layout:de(r[t],e),level:t}:void 0})).filter(c.notEmpty)))}}))).actions((e=>({afterAttach(){(0,d.addDisposer)(e,(0,d.onAction)(e,(({name:t,path:r,args:n})=>{e.linkViews&&["horizontalScroll","zoomTo","setScaleFactor","showTrack","toggleTrack","hideTrack","setTrackLabels","toggleCenterLine"].includes(t)&&r&&this.onSubviewAction(t,r,n)})))},onSubviewAction(t,r,n){e.views.forEach((e=>{(0,d.getPath)(e).endsWith(r)||e[t](n?.[0])}))},setWidth(t){e.width=t,e.views.forEach((e=>{e.setWidth(t)}))},removeView(t){e.views.remove(t)},toggleInteract(){e.interactToggled=!e.interactToggled},toggleIntraviewLinks(){e.showIntraviewLinks=!e.showIntraviewLinks},toggleLinkViews(){e.linkViews=!e.linkViews},setMatchedTrackFeatures(t){e.matchedTrackFeatures=t},reverseViewOrder(){e.views.reverse()}}))).actions((e=>({afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((async()=>{try{if(!e.views.every((e=>e.initialized)))return;e.setMatchedTrackFeatures(Object.fromEntries(await Promise.all(e.matchedTracks.map((async t=>[t.configuration.trackId,await ue(e,t)])))))}catch(t){console.error(t),(0,c.getSession)(e).notifyError(`${t}`,t)}})))},menuItems:()=>[...e.views.map(((e,t)=>[t,e.menuItems()])).map((e=>({label:`Row ${e[0]+1} view menu`,subMenu:e[1]}))),{label:"Reverse view order",onClick:()=>{e.reverseViewOrder()}},{label:"Show intra-view links",type:"checkbox",checked:e.showIntraviewLinks,onClick:()=>{e.toggleIntraviewLinks()}},{label:"Allow clicking alignment squiggles?",type:"checkbox",checked:e.interactToggled,onClick:()=>{e.toggleInteract()}},{label:"Link views",type:"checkbox",icon:se.A,checked:e.linkViews,onClick:()=>{e.toggleLinkViews()}},{label:"Export SVG",icon:ie.A,onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[ce,{model:e,handleClose:t}]))}}]})))}class me extends a.A{name="BreakpointSplitViewPlugin";install(e){!function(e){e.addViewType((()=>new ne({name:"BreakpointSplitView",displayName:"Breakpoint split view",stateModel:pe(e),ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(5727),r.e(7348)]).then(r.bind(r,67348))))})))}(e),function(e){e.addWidgetType((()=>new Q.WidgetType({name:"BreakpointAlignmentsWidget",heading:"Breakpoint feature details",configSchema:Z,stateModel:ee,ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(3011),r.e(6157),r.e(6683),r.e(2627),r.e(8984),r.e(5677)]).then(r.bind(r,90439))))})))}(e)}configure(){}}var ge=r(14349),he=r(59099);const fe=(0,i.ConfigurationSchema)("PAFAdapter",{assemblyNames:{type:"stringArray",defaultValue:[],description:"Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second"},targetAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the target assembly name"},queryAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the query assembly name"},pafLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/file.paf",locationType:"UriLocation"}}},{explicitlyTyped:!0}),ye=(0,i.ConfigurationSchema)("PairwiseIndexedPAFAdapter",{assemblyNames:{type:"stringArray",defaultValue:[],description:"Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second"},targetAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the target assembly name"},queryAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the query assembly name"},pifGzLocation:{type:"fileLocation",description:"location of pairwise tabix indexed PAF (pif)",defaultValue:{uri:"/path/to/data/file.pif.gz",locationType:"UriLocation"}},index:(0,i.ConfigurationSchema)("TabixIndex",{indexType:{model:d.types.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.paf.gz.tbi",locationType:"UriLocation"}}})},{explicitlyTyped:!0}),be=(0,i.ConfigurationSchema)("MCScanAnchorsAdapter",{mcscanAnchorsLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/mcscan.anchors",locationType:"UriLocation"}},bed1Location:{type:"fileLocation",defaultValue:{uri:"/path/to/file.bed",locationType:"UriLocation"}},bed2Location:{type:"fileLocation",defaultValue:{uri:"/path/to/file.bed",locationType:"UriLocation"}},assemblyNames:{type:"stringArray",defaultValue:[]}},{explicitlyTyped:!0}),we=(0,i.ConfigurationSchema)("MCScanSimpleAnchorsAdapter",{mcscanSimpleAnchorsLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/mcscan.anchors.simple",locationType:"UriLocation"}},bed1Location:{type:"fileLocation",defaultValue:{uri:"/path/to/file.bed",locationType:"UriLocation"}},bed2Location:{type:"fileLocation",defaultValue:{uri:"/path/to/file.bed",locationType:"UriLocation"}},assemblyNames:{type:"stringArray",defaultValue:[]}},{explicitlyTyped:!0}),ve=(0,i.ConfigurationSchema)("MashMapAdapter",{assemblyNames:{type:"stringArray",defaultValue:[],description:"Target is the first value in the array, query is the second"},targetAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames array: the target assembly"},queryAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames array: the query assembly"},outLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/mashmap.out",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Ce=(0,i.ConfigurationSchema)("DeltaAdapter",{assemblyNames:{type:"stringArray",defaultValue:[],description:"Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second"},targetAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the target assembly name"},queryAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames: the query assembly name"},deltaLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/file.delta",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Se=(0,i.ConfigurationSchema)("ChainAdapter",{assemblyNames:{type:"stringArray",defaultValue:[],description:"Target is the first value in the array, query is the second"},targetAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames array: the target assembly"},queryAssembly:{type:"string",defaultValue:"",description:"Alternative to assemblyNames array: the query assembly"},chainLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/file.chain",locationType:"UriLocation"}}},{explicitlyTyped:!0});class ke extends a.A{name="ComparativeAdaptersPlugin";install(e){!function(e){e.addAdapterType((()=>new $.A({name:"PAFAdapter",displayName:"PAF adapter",configSchema:fe,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(5904)]).then(r.bind(r,35904)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"PairwiseIndexedPAFAdapter",displayName:"Pairwise indexed PAF adapter",configSchema:ye,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(8120),r.e(3167)]).then(r.bind(r,23167)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"DeltaAdapter",displayName:"MUMmer delta adapter",configSchema:Ce,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(5904),r.e(2820)]).then(r.bind(r,12820)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"ChainAdapter",displayName:"Liftover chain adapter",configSchema:Se,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(5904),r.e(8929)]).then(r.bind(r,98929)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"MCScanAnchorsAdapter",displayName:"MCScan anchors adapter",configSchema:be,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(8965)]).then(r.bind(r,28965)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"MCScanSimpleAnchorsAdapter",displayName:"MCScan anchors.simple adapter",configSchema:we,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(9409)]).then(r.bind(r,69409)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"MashMapAdapter",displayName:"MashMap adapter",configSchema:ve,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(5904),r.e(9449)]).then(r.bind(r,29449)).then((e=>e.default))})))}(e),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="PAFAdapter",o=(0,X.getFileName)(t);return/\.paf/i.test(o)||n===a?{type:a,pafLocation:t}:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"PAFAdapter"===t?"SyntenyTrack":e(t)))}}var Te=r(16574),xe=r(24006),Ae=r(7772),Pe=r(90542),Me=r(29417),Ee=r(97884),Re=r(93707);const Ie=Ee.A.extend((e=>{const t=ae.observable.box(1);return{views:{get dynamicBlocks(){return(0,Re.A)(e,!1,!1)},get scaleFactor(){return t.get()},get maxBpPerPx(){return e.totalBp/(e.width-50)},get minBpPerPx(){return.02},get maxOffset(){return e.displayedRegionsTotalPx-.2*e.width},get minOffset(){return.8*-e.width}},actions:{setScaleFactor(e){t.set(e)},center(){const t=e.totalBp/2/e.bpPerPx;e.scrollTo(t-e.width/2)}}}})),Ne=Ie.extend((e=>({views:{get width(){return(0,d.getParent)(e).viewWidth}}}))),Fe=Ie.extend((e=>({views:{get width(){return(0,d.getParent)(e).viewHeight}}})));var Le=r(90257);const De=(0,w.lazy)((()=>r.e(8859).then(r.bind(r,78859)))),Be=(0,w.lazy)((()=>Promise.resolve().then(r.bind(r,87686))));function Ve(e){return(0,c.measureText)(e.slice(0,30))}function ze(e,t,r){return(0,c.max)([...e.filter((e=>!r.has(e.key))).map((e=>Ve(e.refName))),...e.filter((e=>!r.has(e.key))).map((e=>Ve((0,c.getTickDisplayStr)(e.end,t))))])}var Oe=r(56328),He=r(75785),je=r(36715),We=r(68446);const Ge=(0,He.n9)()((e=>{const t=e.palette.action.disabledBackground;return{loading:{paddingLeft:"0.6em",backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${t} 5px, ${t} 10px)`,textAlign:"center"},blockMessage:{backgroundColor:t,padding:"10px"},blockError:{backgroundColor:t,padding:"10px",color:"red"}}}));function $e(){const[e,t]=(0,w.useState)(!1),{classes:r}=Ge();return(0,w.useEffect)((()=>{const e=setTimeout((()=>{t(!0)}),300);return()=>{clearTimeout(e)}}),[]),e?w.createElement("div",{className:r.loading},w.createElement(T.LoadingEllipses,null)):null}function qe({messageText:e}){const{classes:t}=Ge();return w.createElement("div",{className:t.blockMessage},w.createElement(je.A,null,e))}function _e({error:e}){const{classes:t}=Ge();return w.createElement("div",{className:t.blockError},w.createElement(je.A,null,`${e}`))}const Ue=(0,We.observer)((function({model:e,style:t}){return e.error?w.createElement(_e,{error:e.error,"data-testid":"reload_button"}):e.message?w.createElement(qe,{messageText:e.message}):e.filled?e.shouldDisplay?w.createElement("div",{style:t},e.reactElement):null:w.createElement($e,null)})),Je=Ue;var Xe=r(33039),Ye=r.n(Xe);function Ke(e){const{rpcManager:t}=(0,c.getSession)(e),{rendererType:r}=e,{adapterConfig:n}=e,a=(0,c.getContainingView)(e);if((0,i.readConfObject)(e.configuration),(0,d.getSnapshot)(a),a.initialized){const{viewWidth:o,viewHeight:i,borderSize:s,borderX:l,borderY:c}=a;return{rendererType:r,rpcManager:t,renderProps:{...e.renderProps(),view:Ye()((0,d.getSnapshot)(a)),width:o,height:i,borderSize:s,borderX:l,borderY:c,adapterConfig:n,rendererType:r.name,sessionId:(0,X.getRpcSessionId)(e),timeout:1e6}}}}function Qe(e){return d.types.compose("DotplotDisplay",s.BaseDisplay,d.types.model({type:d.types.literal("DotplotDisplay"),configuration:(0,i.ConfigurationReference)(e)}).volatile((()=>({warnings:[],renderInProgress:void 0,filled:!1,data:void 0,reactElement:void 0,message:void 0,renderingComponent:void 0,ReactComponent2:Je})))).views((e=>({get shouldDisplay(){const{vview:t,hview:r}=(0,c.getContainingView)(e);return t.bpPerPx===e.data.bpPerPxY&&r.bpPerPx===e.data.bpPerPxX},get rendererTypeName(){return(0,i.getConf)(e,["renderer","type"])},renderProps:()=>({...(0,X.getParentRenderProps)(e),rpcDriverName:e.rpcDriverName,displayModel:e,config:e.configuration.renderer})}))).views((e=>({async renderSvg(t){const r=Ke(e);if(!r)return null;const{rendererType:n,rpcManager:a,renderProps:o}=r,i=await n.renderInClient(a,{...o,exportSVG:t,theme:t.theme||o.theme}),{hview:s,vview:l}=(0,c.getContainingView)(e),d=-s.offsetPx+i.offsetX,u=-l.offsetPx+i.offsetY;return w.createElement("g",{transform:`translate(${d} ${-u})`},w.createElement(c.ReactRendering,{rendering:i}))}}))).actions((e=>{let t;return{afterAttach(){(0,c.makeAbortableReaction)(e,(()=>Ke(e)),(e=>async function(e){if(!e)return;const{rendererType:t,rpcManager:r,renderProps:n}=e,{reactElement:a,...o}=await t.renderInClient(r,n);return{reactElement:a,data:o,renderingComponent:t.ReactComponent}}(e)),{name:`${e.type} ${e.id} rendering`,delay:500,fireImmediately:!0},this.setLoading,this.setRendered,this.setError)},setLoading(r){e.filled=!1,e.message=void 0,e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0,t=r},setMessage(r){t&&!t.signal.aborted&&t.abort(),e.filled=!1,e.message=r,e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0,t=void 0},setRendered(r){if(void 0===r)return;const{data:n,reactElement:a,renderingComponent:o}=r;e.warnings=n.warnings,e.filled=!0,e.message=void 0,e.reactElement=a,e.data=n,e.error=void 0,e.renderingComponent=o,t=void 0},setError(r){console.error(r),t&&!t.signal.aborted&&t.abort(),e.filled=!1,e.message=void 0,e.reactElement=void 0,e.data=void 0,e.error=r,e.renderingComponent=void 0,t=void 0}}}))}function Ze(){return Ze=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ze.apply(null,arguments)}const et=(0,We.observer)((function(e){const{model:t,children:r}=e,{offsetX:n=0,offsetY:a=0}=t.data||{},o=(0,c.getContainingView)(t),i=o.vview.offsetPx-a,s=-(o.hview.offsetPx-n);return w.createElement("div",{style:{position:"relative"}},w.createElement(t.ReactComponent2,Ze({},e,{style:{position:"absolute",top:i,left:s}})),r)})),tt=et;const rt=(0,We.observer)((function(e){return w.createElement(T.PrerenderedCanvas,e)}));var nt=r(57027);class at extends nt.A{supportsSVG=!0;async renameRegionsIfNeeded(e){const t=this.pluginManager,r=t.rootModel?.session?.assemblyManager,{view:n,sessionId:a,adapterConfig:o}=e;async function i(e){if(!r)throw new Error("No assembly manager provided");return(await(0,c.renameRegionsIfNeeded)(r,{sessionId:a,adapterConfig:o,regions:e})).regions}return n.hview.displayedRegions=await i(n.hview.displayedRegions),n.vview.displayedRegions=await i(n.vview.displayedRegions),e}async render(e){const{width:t,height:n,view:{hview:a,vview:o}}=e,i=[t,n],s=[a,o].map(((e,t)=>{const r=Ie.create(e);return r.setVolatileWidth(i[t]),r})),l=s[0],d=await this.getFeatures({...e,regions:l.dynamicBlocks.contentBlocks});l.setFeatures(d);const{drawDotplot:u}=await r.e(1752).then(r.bind(r,31752)),p=await(0,c.renderToAbstractCanvas)(t,n,e,(t=>u(t,{...e,views:s})));return{...await super.render({...e,...p,height:n,width:t}),...p,height:n,width:t,offsetX:s[0].dynamicBlocks.blocks[0]?.offsetPx||0,offsetY:s[1].dynamicBlocks.blocks[0]?.offsetPx||0,bpPerPxX:s[0].bpPerPx,bpPerPxY:s[1].bpPerPx}}}const ot=(0,i.ConfigurationSchema)("DotplotRenderer",{color:{type:"color",description:"the color of each feature in a synteny, used with colorBy:default",defaultValue:"#f0f",contextVariable:["feature"]},posColor:{type:"color",description:"the color for forward alignments, used with colorBy:strand",defaultValue:"blue"},negColor:{type:"color",description:"the color for reverse alignments, used with colorBy:strand",defaultValue:"red"},lineWidth:{type:"number",description:"width of the lines to be drawn",defaultValue:2.5},colorBy:{type:"stringEnum",model:d.types.enumeration("colorBy",["identity","meanQueryIdentity","mappingQuality","strand","default"]),description:'Color by options:<br/>\n<ul>\n  <li>"identity" - the identity of the particular hit, similar to D-GENIES, use the other config slots \'thresholds\' and \'thresholdsPalette\' to define colors for this setting</li>\n  <li>"meanQueryIdentity" - calculates the weighted mean identity (weighted by alignment length) of all the hits that the query maps to (e.g. if the query is split aligned to many target, uses their weighted mean. can help show patterns of more related and distant synteny after WGD)</li>\n  <li>"mappingQuality" - uses mapping quality from PAF, some adapters don\'t have this setting</li>\n  <li>"strand" - colors negative alignments with negColor and positive alignments with posColor</li>\n  <li>"default" - uses the \'color\' config slot</li>\n</ul>',defaultValue:"default"},thresholdsPalette:{type:"stringArray",defaultValue:["#094b09","#2ebd40","#d5670b","#ffd84b"],description:"threshold colors, used with colorBy:identity"},thresholds:{type:"stringArray",defaultValue:["0.75","0.5","0.25","0"],description:"threshold breakpoints, used with colorBy:identity"}},{explicitlyTyped:!0});var it=r(2406);class st extends it.A{name="ComparativeRender";async renameRegionsIfNeeded(e,t){return t.renameRegionsIfNeeded(e)}getRenderer(e){return this.pluginManager.getRendererType(e)}async serializeArguments(e,t){const{rendererType:r}=e,n=this.getRenderer(r),a=await super.serializeArguments(e,t),o=await this.renameRegionsIfNeeded(a,n);return"MainThreadRpcDriver"===t?o:n.serializeArgsInClient(o)}async execute(e,t){let r=e;"MainThreadRpcDriver"!==t&&(r=await this.deserializeArguments(e,t));const{sessionId:n,rendererType:a,signal:o}=r;if(!n)throw new Error("must pass a unique session id");(0,c.checkAbortSignal)(o);const i=this.getRenderer(a);return"MainThreadRpcDriver"===t?i.render(r):i.renderInWorker(r)}async deserializeReturn(e,t,r){const n=await super.deserializeReturn(e,t,r);return"MainThreadRpcDriver"===r?n:this.getRenderer(t.rendererType).deserializeResultsInClient(n,t)}}var lt=r(374);const{featurizeSA:ct,getClip:dt,getTag:ut,getLength:pt,getLengthSansClipping:mt}=n.aF;class gt extends a.A{name="DotplotPlugin";install(e){var t;!function(e){e.addViewType((()=>{return new te.A({name:"DotplotView",displayName:"Dotplot view",stateModel:(t=e,d.types.compose("DotplotView",Ae.A,d.types.model({id:K.ElementId,type:d.types.literal("DotplotView"),height:600,borderSize:20,tickSize:5,vtextRotation:0,htextRotation:-90,fontSize:15,trackSelectorType:"hierarchical",assemblyNames:d.types.array(d.types.string),drawCigar:!0,hview:d.types.optional(Ne,{}),vview:d.types.optional(Fe,{}),tracks:d.types.array(t.pluggableMstType("track","stateModel")),viewTrackConfigs:d.types.array(t.pluggableConfigSchemaType("track"))})).volatile((()=>({volatileWidth:void 0,volatileError:void 0,cursorMode:(0,c.localStorageGetItem)("dotplot-cursorMode")||"crosshair",showPanButtons:Boolean(JSON.parse((0,c.localStorageGetItem)("dotplot-showPanbuttons")||"true")),wheelMode:(0,c.localStorageGetItem)("dotplot-wheelMode")||"zoom",borderX:100,borderY:100}))).views((e=>({get width(){if(!e.volatileWidth)throw new Error("width not initialized");return e.volatileWidth}}))).views((e=>({get assemblyErrors(){const{assemblyManager:t}=(0,c.getSession)(e);return e.assemblyNames.map((e=>t.get(e)?.error)).filter((e=>!!e)).join(", ")},get assembliesInitialized(){const{assemblyManager:t}=(0,c.getSession)(e);return e.assemblyNames.every((e=>t.get(e)?.initialized??!0))}}))).views((e=>({get initialized(){return void 0!==e.volatileWidth&&e.hview.displayedRegions.length>0&&e.vview.displayedRegions.length>0&&e.assembliesInitialized},get hticks(){const{hview:t}=e,{dynamicBlocks:r,staticBlocks:n,bpPerPx:a}=t;return r.contentBlocks.length>5?[]:(0,Le.H2)(n.contentBlocks,a)},get vticks(){const{vview:t}=e,{dynamicBlocks:r,staticBlocks:n,bpPerPx:a}=t;return r.contentBlocks.length>5?[]:(0,Le.H2)(n.contentBlocks,a)},get loading(){return e.assemblyNames.length>0&&!this.initialized},get viewWidth(){return e.width-e.borderX},get viewHeight(){return e.height-e.borderY},get views(){return[e.hview,e.vview]},renderProps(){const t=(0,c.getSession)(e);return{...(0,X.getParentRenderProps)(e),drawCigar:e.drawCigar,highResolutionScaling:(0,i.getConf)(t,"highResolutionScaling")}}}))).actions((e=>({setShowPanButtons(t){e.showPanButtons=t},setWheelMode(t){e.wheelMode=t},setCursorMode(t){e.cursorMode=t},setDrawCigar(t){e.drawCigar=t},clearView(){e.hview.setDisplayedRegions([]),e.vview.setDisplayedRegions([]),e.assemblyNames=(0,d.cast)([]),e.tracks.clear()},setBorderX(t){e.borderX=t},setBorderY(t){e.borderY=t},setWidth:t=>(e.volatileWidth=t,e.volatileWidth),setHeight:t=>(e.height=t,e.height),setError(t){e.volatileError=t},zoomOutButton(){e.hview.zoomOut(),e.vview.zoomOut()},zoomInButton(){e.hview.zoomIn(),e.vview.zoomIn()},activateTrackSelector(){if("hierarchical"===e.trackSelectorType){const t=(0,c.getSession)(e);if((0,c.isSessionModelWithWidgets)(t)){const r=t.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:e});return t.showWidget(r),r}}throw new Error(`invalid track selector type ${e.trackSelectorType}`)},showTrack(r,n={}){const a=t.pluggableConfigSchemaType("track"),o=(0,d.resolveIdentifier)(a,(0,d.getRoot)(e),r),i=t.getTrackType(o.type);if(!i)throw new Error(`unknown track type ${o.type}`);const s=t.getViewType(e.type),l=o.displays.find((e=>s.displayTypes.find((t=>t.name===e.type))));if(!l)throw new Error(`could not find a compatible display for view type ${e.type}`);const c=i.stateModel.create({...n,type:o.type,configuration:o,displays:[{type:l.type,configuration:l}]});e.tracks.push(c)},hideTrack(r){const n=t.pluggableConfigSchemaType("track"),a=(0,d.resolveIdentifier)(n,(0,d.getRoot)(e),r),o=e.tracks.filter((e=>e.configuration===a));return(0,ae.transaction)((()=>{o.forEach((t=>e.tracks.remove(t)))})),o.length},toggleTrack(e){return!this.hideTrack(e)&&(this.showTrack(e),!0)},setAssemblyNames(t,r){e.assemblyNames=(0,d.cast)([t,r])},setViews(t){e.hview=(0,d.cast)(t[0]),e.vview=(0,d.cast)(t[1])},getCoords(t,r){const[n,a]=(0,c.minmax)(r[0],t[0]),[o,i]=(0,c.minmax)(r[1],t[1]);return Math.abs(a-n)>3&&Math.abs(i-o)>3?[e.hview.pxToBp(n),e.hview.pxToBp(a),e.vview.pxToBp(e.viewHeight-o),e.vview.pxToBp(e.viewHeight-i)]:void 0},zoomIn(t,r){const n=this.getCoords(t,r);if(n){const[t,r,a,o]=n;e.hview.moveTo(t,r),e.vview.moveTo(o,a)}},showAllRegions(){e.hview.zoomTo(e.hview.maxBpPerPx),e.vview.zoomTo(e.vview.maxBpPerPx),e.vview.center(),e.hview.center()},onDotplotView(t,r){const n=this.getCoords(t,r);if(n){const[t,r,a,o]=n,i=(0,c.getSession)(e),s=Ie.create({...(0,d.getSnapshot)(e.hview),minimumBlockWidth:0,interRegionPaddingWidth:0}),l=Ie.create({...(0,d.getSnapshot)(e.vview),minimumBlockWidth:0,interRegionPaddingWidth:0});s.setVolatileWidth(e.hview.width),l.setVolatileWidth(e.vview.width),s.moveTo(t,r),l.moveTo(o,a),s.zoomTo(s.bpPerPx/(e.width/e.hview.width),0),l.zoomTo(l.bpPerPx/(e.width/e.vview.width),0);const u=e.tracks.map((e=>e.configuration.displays.find((e=>"LinearSyntenyDisplay"===e.type)))).filter((e=>!!e)).map((e=>{const t=(0,d.getParent)(e,2);return{type:t.type,configuration:t,displays:[{type:e.type,configuration:e}]}})),{id:p,...m}=(0,d.getSnapshot)(s),{id:g,...h}=(0,d.getSnapshot)(l),f={type:"LinearSyntenyView",views:[{type:"LinearGenomeView",tracks:[],hideHeader:!0,...m},{type:"LinearGenomeView",tracks:[],hideHeader:!0,...h}],tracks:u};i.addView("LinearSyntenyView",f)}}}))).actions((e=>({async exportSvg(t={}){const{renderToSvg:n}=await r.e(1266).then(r.bind(r,11266)),a=await n(e,t),o=new Blob([a],{type:"image/svg+xml"});(0,oe.saveAs)(o,t.filename||"image.svg")},beforeDestroy(){const t=(0,c.getSession)(e);for(const r in e.assemblyNames)t.removeTemporaryAssembly?.(r)},afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((()=>{const{showPanButtons:t,wheelMode:r,cursorMode:n}=e;var a;"undefined"!=typeof localStorage&&(localStorage.setItem("dotplot-showPanbuttons",(a=t,JSON.stringify(a))),localStorage.setItem("dotplot-cursorMode",n),localStorage.setItem("dotplot-wheelMode",r))}))),(0,d.addDisposer)(e,(0,ae.autorun)((()=>{const t=(0,c.getSession)(e);if(void 0===e.volatileWidth||!e.assembliesInitialized)return;if(e.hview.displayedRegions.length>0&&e.vview.displayedRegions.length>0)return;const r=[e.hview,e.vview];(0,ae.transaction)((()=>{e.assemblyNames.forEach(((e,n)=>{const a=t.assemblyManager.get(e);r[n].setDisplayedRegions(a?.regions||[])})),e.showAllRegions()}))}),{delay:1e3})),(0,d.addDisposer)(e,(0,ae.autorun)((function(){if(void 0===e.volatileWidth)return;const{vview:t,hview:r,viewHeight:n,viewWidth:a}=e,o=t.dynamicBlocks.contentBlocks,i=r.dynamicBlocks.contentBlocks,s=r.offsetPx,l=t.offsetPx,c=(0,Le.rQ)(o,n,l),d=(0,Le.rQ)(i,a,s),u=ze(i,t.bpPerPx,d),p=ze(o,r.bpPerPx,c);e.setBorderY(Math.max(u+40,50)),e.setBorderX(Math.max(p+40,50))})))},squareView(){const{hview:t,vview:r}=e,n=(t.bpPerPx+r.bpPerPx)/2,a=t.pxToBp(t.width/2),o=r.pxToBp(r.width/2);t.setBpPerPx(n),t.centerAt(a.coord,a.refName,a.index),r.setBpPerPx(n),r.centerAt(o.coord,o.refName,o.index)},squareViewProportional(){const{hview:t,vview:r}=e,n=t.width/r.width,a=(t.bpPerPx+r.bpPerPx)/2,o=t.pxToBp(t.width/2),i=r.pxToBp(r.width/2);t.setBpPerPx(a/n),t.centerAt(o.coord,o.refName,o.index),r.setBpPerPx(a),r.centerAt(i.coord,i.refName,i.index)}}))).views((e=>({menuItems(){const t=(0,c.getSession)(e);return[{label:"Return to import form",onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Be,{model:e,handleClose:t}]))},icon:Me.A},{label:"Square view - same bp per pixel",onClick:()=>{e.squareView()}},{label:"Rectangular view - same total bp",onClick:()=>{e.squareView()}},{label:"Show all regions",onClick:()=>{e.showAllRegions()}},{label:"Export SVG",icon:ie.A,onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[De,{model:e,handleClose:t}]))}},...(0,c.isSessionModelWithWidgets)(t)?[{label:"Open track selector",onClick:e.activateTrackSelector,icon:Pe.xU}]:[]]},get error(){return e.volatileError||e.assemblyErrors}})))),ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(5515),r.e(3474)]).then(r.bind(r,63474))))});var t}))}(e),(t=e).addDisplayType((()=>{const e=function(e){return(0,i.ConfigurationSchema)("DotplotDisplay",{renderer:d.types.optional(e.pluggableConfigSchemaType("renderer"),{type:"DotplotRenderer"})},{explicitIdentifier:"displayId",explicitlyTyped:!0})}(t);return new Oe.A({name:"DotplotDisplay",displayName:"Dotplot display",configSchema:e,stateModel:Qe(e),trackType:"SyntenyTrack",viewType:"DotplotView",ReactComponent:tt})})),function(e){e.addRendererType((()=>new at({name:"DotplotRenderer",configSchema:ot,ReactComponent:rt,pluginManager:e})))}(e),function(e){e.addToExtensionPoint("LaunchView-DotplotView",(async({session:e,views:t,tracks:r=[]})=>{try{const n=e.addView("DotplotView",{}),a=t.map((e=>e.assembly));(0,ae.transaction)((()=>{n.setViews([{bpPerPx:.1,offsetPx:0},{bpPerPx:.1,offsetPx:0}]),n.setAssemblyNames(a[0],a[1])}));const o=[];if(r.forEach((e=>{!function(e,t,r){try{e.showTrack(t)}catch(e){if(!/Could not resolve identifier/.exec(`${e}`))throw e;r.push(t)}}(n,e,o)})),o.length)throw new Error(`Could not resolve identifiers: ${o.join(",")}`)}catch(t){throw e.notifyError(`${t}`,t),t}}))}(e),function(e){e.addToExtensionPoint("Core-extendPluggableElement",(e=>{if("LinearPileupDisplay"===e.name){const{stateModel:t}=e,r=t.extend((e=>{const t=e.contextMenuItems;return{views:{contextMenuItems(){const r=e.contextMenuFeature;return[...t(),...r?[{label:"Dotplot of read vs ref",icon:lt.A,onClick:()=>{!function(e,t){const r=(0,c.getSession)(t);try{const n=e.get("CIGAR"),a=dt(n,1),o=e.get("flags"),s=e.get("strand"),l=e.get("name"),d=`${l}_assembly_${Date.now()}`,{parentTrack:u}=t,[p]=(0,i.getConf)(u,"assemblyNames"),m=[p,d],g=`track-${Date.now()}`,h=`${l}_vs_${p}`,f=ut(e,"SA")||"",y=ct(f,e.id(),s,l,!0),b=e.toJSON();b.strand=1,b.mate={refName:l,start:a,end:a+mt(n)};const w=pt(2048&o?y[0].CIGAR:n),v=[b,...y];v.sort(((e,t)=>e.clipPos-t.clipPos));const C=v.reduce(((e,t)=>e+t.end-t.start),0);r.addView("DotplotView",{type:"DotplotView",hview:{offsetPx:0,bpPerPx:C/800,displayedRegions:(0,c.gatherOverlaps)(v.map(((e,t)=>{const{start:r,end:n,refName:a}=e;return{start:r,end:n,refName:a,index:t,assemblyName:p}})))},vview:{offsetPx:0,bpPerPx:w/400,minimumBlockWidth:0,interRegionPaddingWidth:0,displayedRegions:[{assemblyName:d,start:0,end:w,refName:l}]},viewTrackConfigs:[{type:"SyntenyTrack",assemblyNames:m,adapter:{type:"FromConfigAdapter",features:v},trackId:g,name:h}],assemblyNames:m,tracks:[{configuration:g,type:"SyntenyTrack",displays:[{type:"DotplotDisplay",configuration:`${g}-DotplotDisplay`}]}],displayName:`${l} vs ${p}`})}catch(e){console.error(e),r.notifyError(`${e}`,e)}}(r,e)}}]:[]]}}}}));e.stateModel=r}return e}))}(e),e.addRpcMethod((()=>new st(e)))}configure(e){(0,c.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Dotplot view",icon:xe.A,onClick:e=>{e.addView("DotplotView",{})}})}}const ht=(0,i.ConfigurationSchema)("GtfAdapter",{gtfLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.gtf",locationType:"UriLocation"}}},{explicitlyTyped:!0});class ft extends a.A{name="GTFPlugin";install(e){e.addAdapterType((()=>new $.A({name:"GtfAdapter",displayName:"GTF adapter",configSchema:ht,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4499),r.e(1503)]).then(r.bind(r,61503)).then((e=>e.default))}))),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="GtfAdapter",o=(0,X.getFileName)(t),i={type:a,gtfLocation:t};return/\.gtf(\.gz)?$/i.test(o)&&!n||n===a?i:e(t,r,n)}))}}const yt=(0,i.ConfigurationSchema)("Gff3TabixAdapter",{gffGzLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.gff.gz",locationType:"UriLocation"}},index:(0,i.ConfigurationSchema)("Gff3TabixIndex",{indexType:{model:d.types.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.gff.gz.tbi",locationType:"UriLocation"}}}),dontRedispatch:{type:"stringArray",defaultValue:["chromosome","region","contig"]}},{explicitlyTyped:!0}),bt=(0,i.ConfigurationSchema)("Gff3Adapter",{gffLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.gff",locationType:"UriLocation"}}},{explicitlyTyped:!0});class wt extends a.A{name="GFF3Plugin";install(e){!function(e){e.addAdapterType((()=>new Q.AdapterType({name:"Gff3TabixAdapter",displayName:"GFF3 tabix adapter",configSchema:yt,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(8120),r.e(2645),r.e(7409)]).then(r.bind(r,27409)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new Q.AdapterType({name:"Gff3Adapter",displayName:"GFF3 adapter",configSchema:bt,getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(4499),r.e(2645),r.e(7809)]).then(r.bind(r,37809)).then((e=>e.default))})))}(e),function(e){e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="Gff3TabixAdapter",o=(0,X.getFileName)(t),i=r&&(0,X.getFileName)(r);return/\.gff3?\.b?gz$/i.test(o)||n===a?{type:a,bamLocation:t,gffGzLocation:t,index:{location:r||(0,X.makeIndex)(t,".tbi"),indexType:(0,X.makeIndexType)(i,"CSI","TBI")}}:e(t,r,n)})),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="Gff3Adapter",o=(0,X.getFileName)(t),i={type:a,gffLocation:t};return/\.gff3?$/i.test(o)&&!n||n===a?i:e(t,r,n)}))}(e)}}const vt=d.types.model("Job",{name:d.types.string,statusMessage:d.types.maybe(d.types.string),progressPct:d.types.number}).volatile((()=>({cancelCallback(){}}))).actions((e=>({setCancelCallback(t){e.cancelCallback=t},setStatusMessage(t){e.statusMessage=t},setProgressPct(t){e.progressPct=t}}))),Ct=(0,i.ConfigurationSchema)("JobsListWidget",{});class St extends a.A{name="JobsManagementPlugin";install(e){!function(e){e.addWidgetType((()=>new Q.WidgetType({name:"JobsListWidget",heading:"Jobs list",configSchema:Ct,stateModel:d.types.model("JobsListModel",{id:K.ElementId,type:d.types.literal("JobsListWidget"),jobs:d.types.array(vt),finished:d.types.array(vt),queued:d.types.array(vt),aborted:d.types.array(vt)}).actions((e=>({addJob(t){const{cancelCallback:r}=t,n=e.jobs.push(t),a=e.jobs[n-1];return a.setCancelCallback(r),a},removeJob(t){const r=e.jobs.findIndex((e=>e.name===t)),n=e.jobs[r];return e.jobs.splice(r,1),n},addFinishedJob:t=>(e.finished.push(t),e.finished),addQueuedJob:t=>(e.queued.push(t),e.finished),addAbortedJob:t=>(e.aborted.push(t),e.aborted),removeQueuedJob(t){const r=e.queued.findIndex((e=>e.name===t)),n=e.queued[r];return e.queued.splice(r,1),n},updateJobStatusMessage(t,r){const n=e.jobs.find((e=>e.name===t));if(!n)throw new Error(`No job found with name ${t}`);n.setStatusMessage(r)},updateJobProgressPct(t,r){const n=e.jobs.find((e=>e.name===t));if(!n)throw new Error(`No job found with name ${t}`);n.setProgressPct(r)}}))),ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(3011),r.e(9168)]).then(r.bind(r,29168))))})))}(e)}configure(e){(0,c.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToMenu("Tools",{label:"Jobs list",icon:Pe.jT,onClick:e=>{if((0,c.isSessionModelWithWidgets)(e)){const{widgets:t}=e;let r=t.get("JobsList");r||(r=e.addWidget("JobsListWidget","JobsList")),e.showWidget(r)}}})}}const kt=(0,i.ConfigurationSchema)("NCListAdapter",{rootUrlTemplate:{type:"fileLocation",defaultValue:{uri:"/path/to/my/{refseq}/trackData.json",locationType:"UriLocation"}},refNames:{type:"stringArray",defaultValue:[],description:"List of refNames used by the NCList used for aliasing"}},{explicitlyTyped:!0});var Tt=r(8024);const xt=(0,i.ConfigurationSchema)("JBrowse1TextSearchAdapter",{namesIndexLocation:{type:"fileLocation",defaultValue:{uri:"/volvox/names",locationType:"UriLocation"},description:"the location of the JBrowse1 names index data directory"},tracks:{type:"stringArray",defaultValue:[],description:"List of tracks covered by text search adapter"},assemblyNames:{type:"stringArray",defaultValue:[],description:"List of assemblies covered by text search adapter"}},{explicitlyTyped:!0,explicitIdentifier:"textSearchAdapterId"});var At=r(91612);const Pt=(0,i.ConfigurationSchema)("JBrowse1Connection",{dataDirLocation:{type:"fileLocation",defaultValue:{uri:"http://mysite.com/jbrowse/data/",locationType:"UriLocation"},description:"the location of the JBrowse 1 data directory, often something like http://mysite.com/jbrowse/data/"},assemblyNames:{description:"name of the assembly the connection belongs to, should be a single entry",type:"stringArray",defaultValue:[]}},{baseConfiguration:s.baseConnectionConfig});function Mt(e){return d.types.compose("JBrowse1Connection",(0,s.BaseConnectionModelFactory)(e),d.types.model({configuration:(0,i.ConfigurationReference)(Pt),type:d.types.literal("JBrowse1Connection")})).actions((e=>({async connect(){const t=(0,c.getSession)(e);try{const n=(0,i.getConf)(e,"dataDirLocation"),{fetchJb1:a}=await r.e(7911).then(r.bind(r,77911)),{convertTrackConfig:o}=await r.e(5998).then(r.bind(r,55998)),s=await a(n),l=(0,i.getConf)(e,"assemblyNames")[0];if(!l)throw new Error("assembly name required for JBrowse 1 connection");const c=t.assemblies.find((e=>(0,i.readConfObject)(e,"name")===l));if(!c)throw new Error(`Assembly "${l}" not found`);const d=(0,i.readConfObject)(c,["sequence","adapter"]),u=s.tracks?.map((e=>({...o(e,s.dataRoot||"",d),assemblyNames:[l]})));e.setTrackConfs(u)}catch(r){console.error(r),t.notifyError(`There was a problem connecting to the JBrowse 1 data directory "${e.name}". Please make sure you have entered a valid location. The error that was thrown is: "${r}"`,r),t.breakConnection?.(e.configuration)}}})))}class Et extends a.A{name="LegacyJBrowsePlugin";install(e){!function(e){e.addAdapterType((()=>new Q.AdapterType({name:"NCListAdapter",displayName:"NCList adapter",configSchema:kt,getAdapterClass:()=>r.e(3525).then(r.bind(r,33525)).then((e=>e.default))})))}(e),function(e){e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="NCListAdapter",o=(0,X.getFileName)(t);return/trackData.jsonz?$/i.test(o)||n===a?{type:a,rootUrlTemplate:t}:e(t,r,n)}))}(e),function(e){e.addTextSearchAdapterType((()=>new Tt.A({name:"JBrowse1TextSearchAdapter",configSchema:xt,description:"A JBrowse 1 text search adapter",getAdapterClass:()=>r.e(8797).then(r.bind(r,58797)).then((e=>e.default))})))}(e),function(e){e.addConnectionType((()=>new At.A({name:"JBrowse1Connection",configSchema:Pt,stateModel:Mt(e),displayName:"JBrowse 1 Data",description:"A JBrowse 1 data directory",url:"//jbrowse.org/"})))}(e)}}var Rt=r(20529),It=r(24250);const Nt=function(e){return(0,i.ConfigurationSchema)("LinearComparativeDisplay",{},{explicitlyTyped:!0,explicitIdentifier:"displayId"})};function Ft(e){const{rpcManager:t}=(0,c.getSession)(e),r=e;(0,i.readConfObject)(e.configuration);const{adapterConfig:n}=e,a=(0,c.getContainingView)(e),o=(0,X.getRpcSessionId)(e);return(0,d.getSnapshot)(a),a.initialized?{rpcManager:t,renderProps:{...r.renderProps(),view:a,adapterConfig:n,sessionId:o,timeout:1e6,self:e}}:void 0}async function Lt(e){if(!e)return;const{rpcManager:t,renderProps:r}=e,{adapterConfig:n}=r,a=r.view.views[0],o=await t.call("getFeats","CoreGetFeatures",{regions:a.staticBlocks.contentBlocks,sessionId:"getFeats",adapterConfig:n});return{features:(0,c.dedupe)(o,(e=>e.id()))}}const Dt=function(e){return d.types.compose("LinearComparativeDisplay",s.BaseDisplay,d.types.model({type:d.types.literal("LinearComparativeDisplay"),configuration:(0,i.ConfigurationReference)(e),height:100})).volatile((()=>({renderInProgress:void 0,features:void 0,message:void 0}))).views((e=>({renderProps:()=>({rpcDriverName:e.rpcDriverName,displayModel:e,highResolutionScaling:2})}))).actions((e=>{let t;return{setLoading(r){e.message=void 0,e.error=void 0,t=r},setMessage(r){t&&!t.signal.aborted&&t.abort(),e.message=r,e.error=void 0,t=void 0},setRendered(r){if(!r)return;const{features:n}=r,a=e.features||[],o=new Set(a.map((e=>e.id()))),i=new Set(n.map((e=>e.id())));let s=!1,l=!1;for(const e of n)if(!o.has(e.id())){s=!0;break}for(const e of a)if(!i.has(e.id())){l=!0;break}e.message=void 0,e.error=void 0,t=void 0,(s||l||!e.features)&&(e.features=n)},setError(r){console.error(r),t&&!t.signal.aborted&&t.abort(),e.message=void 0,e.error=r,t=void 0}}})).actions((e=>({afterAttach(){(0,c.makeAbortableReaction)(e,Ft,Lt,{name:`${e.type} ${e.id} rendering`,delay:1e3,fireImmediately:!0},e.setLoading,e.setRendered,e.setError)}})))},Bt=(0,w.lazy)((()=>Promise.resolve().then(r.bind(r,87686)))),Vt=function(e){return d.types.compose("LinearComparativeView",Ae.A,d.types.model({id:K.ElementId,type:d.types.literal("LinearComparativeView"),trackSelectorType:"hierarchical",showIntraviewLinks:!0,interactToggled:!1,middleComparativeHeight:100,tracks:d.types.array(e.pluggableMstType("track","stateModel")),views:d.types.array(e.getViewType("LinearGenomeView").stateModel),viewTrackConfigs:d.types.array(e.pluggableConfigSchemaType("track"))})).volatile((()=>({width:void 0}))).views((e=>({get highResolutionScaling(){return 2},get initialized(){return void 0!==e.width&&e.views.length>0&&e.views.every((e=>e.initialized))},get refNames(){return e.views.map((e=>[...new Set(e.staticBlocks.map((e=>e.refName)))]))},get assemblyNames(){return[...new Set(e.views.flatMap((e=>e.assemblyNames)))]}}))).actions((t=>({beforeDestroy(){const e=(0,c.getSession)(t);for(const r of t.assemblyNames)e.removeTemporaryAssembly?.(r)},onSubviewAction(e,r,n){t.views.forEach((t=>{(0,d.getPath)(t).endsWith(r)||t[e](n?.[0])}))},setWidth(e){t.width=e},setViews(e){t.views=(0,d.cast)(e)},removeView(e){t.views.remove(e)},setMiddleComparativeHeight:e=>(t.middleComparativeHeight=e,t.middleComparativeHeight),activateTrackSelector(){if("hierarchical"!==t.trackSelectorType)throw new Error(`invalid track selector type ${t.trackSelectorType}`);{const e=(0,c.getSession)(t);if((0,c.isSessionModelWithWidgets)(e)){const r=e.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:t});return e.showWidget(r),r}}},toggleTrack(e){return!this.hideTrack(e)&&(this.showTrack(e),!0)},showTrack(r,n={}){const a=e.pluggableConfigSchemaType("track"),o=(0,d.resolveIdentifier)(a,(0,d.getRoot)(t),r);if(!o)throw new Error(`track not found ${r}`);const i=e.getTrackType(o.type);if(!i)throw new Error(`unknown track type ${o.type}`);const s=e.getViewType(t.type),l=new Set(s.displayTypes.map((e=>e.name))),c=o.displays.find((e=>l.has(e.type)));if(!c)throw new Error(`could not find a compatible display for view type ${t.type}`);t.tracks.push(i.stateModel.create({...n,type:o.type,configuration:o,displays:[{type:c.type,configuration:c}]}))},hideTrack(r){const n=e.pluggableConfigSchemaType("track"),a=(0,d.resolveIdentifier)(n,(0,d.getRoot)(t),r),o=t.tracks.filter((e=>e.configuration===a));return(0,ae.transaction)((()=>{o.forEach((e=>t.tracks.remove(e)))})),o.length},squareView(){const e=(0,c.avg)(t.views.map((e=>e.bpPerPx)));t.views.forEach((t=>{const r=t.pxToBp(t.width/2);t.setNewView(e,t.offsetPx),r.refName&&t.centerAt(r.coord,r.refName,r.index)}))},clearView(){t.views=(0,d.cast)([]),t.tracks=(0,d.cast)([])}}))).views((()=>({headerMenuItems:()=>[]}))).views((e=>({menuItems:()=>[...e.views.map(((e,t)=>[t,e.menuItems()])).map((e=>({label:`View ${e[0]+1} Menu`,subMenu:e[1]}))),{label:"Return to import form",onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Bt,{model:e,handleClose:t}]))},icon:Me.A},{label:"Open track selector",onClick:e.activateTrackSelector,icon:Pe.xU}],rubberBandMenuItems:()=>[{label:"Zoom to region(s)",onClick:()=>{e.views.forEach((e=>{const{leftOffset:t,rightOffset:r}=e;t&&r&&e.moveTo(t,r)}))}}]}))).actions((e=>({afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((()=>{e.width&&e.views.forEach((t=>{t.setWidth(e.width)}))})))}})))},zt=function(e){return d.types.compose("LinearSyntenyDisplay",Dt(e),d.types.model({type:d.types.literal("LinearSyntenyDisplay"),configuration:(0,i.ConfigurationReference)(e)})).volatile((()=>({mainCanvas:null,clickMapCanvas:null,cigarClickMapCanvas:null,mouseoverCanvas:null,featPositions:[],mouseoverId:void 0,clickId:void 0,cigarMouseoverId:-1}))).actions((e=>({setFeatPositions(t){e.featPositions=t},setMainCanvasRef(t){e.mainCanvas=t},setClickMapCanvasRef(t){e.clickMapCanvas=t},setCigarClickMapCanvasRef(t){e.cigarClickMapCanvas=t},setMouseoverCanvasRef(t){e.mouseoverCanvas=t},setMouseoverId(t){e.mouseoverId=t},setCigarMouseoverId(t){e.cigarMouseoverId=t},setClickId(t){e.clickId=t}}))).views((e=>({get adapterConfig(){return{name:e.parentTrack.configuration.adapter.type,assemblyNames:(0,i.getConf)(e,"assemblyNames"),...(0,i.getConf)(e.parentTrack,"adapter")}},get trackIds(){return(0,i.getConf)(e,"trackIds")},get numFeats(){return e.featPositions.length},get ready(){return this.numFeats>0},get featMap(){return Object.fromEntries(e.featPositions.map((e=>[e.f.id(),e])))}}))).actions((e=>({afterAttach(){(async()=>{try{const{doAfterAttach:t}=await r.e(8856).then(r.bind(r,28856));t(e)}catch(t){console.error(t),e.setError(t)}})()}})))},Ot=(0,w.lazy)((()=>r.e(5682).then(r.bind(r,33301))));var Ht=r(52521),jt=r(1633);function Wt(e){return w.createElement(F.A,e,w.createElement("path",{fill:"currentColor",d:"M16.5,21C13.5,21 12.31,16.76 11.05,12.28C10.14,9.04 9,5 7.5,5C4.11,5 4,11.93 4,12H2C2,11.63 2.06,3 7.5,3C10.5,3 11.71,7.25 12.97,11.74C13.83,14.8 15,19 16.5,19C19.94,19 20.03,12.07 20.03,12H22.03C22.03,12.37 21.97,21 16.5,21Z"}))}const Gt=(0,w.lazy)((()=>r.e(8869).then(r.bind(r,78869))));function $t(e){return d.types.compose("LinearSyntenyView",Vt(e),d.types.model({type:d.types.literal("LinearSyntenyView"),drawCIGAR:!0,drawCurves:!1})).actions((e=>({toggleCurves(){e.drawCurves=!e.drawCurves},toggleCIGAR(){e.drawCIGAR=!e.drawCIGAR},showAllRegions(){(0,ae.transaction)((()=>{e.views.forEach((e=>{e.showAllRegionsInAssembly()}))}))}}))).actions((e=>({async exportSvg(t){const{renderToSvg:n}=await r.e(9658).then(r.bind(r,69658)),a=await n(e,t),o=new Blob([a],{type:"image/svg+xml"});(0,oe.saveAs)(o,t.filename||"image.svg")}}))).views((e=>{const t=e.headerMenuItems,r=e.menuItems;return{headerMenuItems:()=>[...t(),{label:"Square view",onClick:e.squareView,description:"Makes both views use the same zoom level, adjusting to the average of each",icon:Ht.A},{label:"Show all regions",onClick:e.showAllRegions,description:"Show entire genome assemblies",icon:jt.A},{label:"Draw CIGAR",onClick:e.toggleCIGAR,checked:e.drawCIGAR,type:"checkbox",description:"Draws per-base CIGAR level alignments"},{label:"Use curved lines",type:"checkbox",checked:e.drawCurves,onClick:e.toggleCurves,icon:Wt},{label:"Export SVG",icon:ie.A,onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Gt,{model:e,handleClose:t}]))}}],menuItems:()=>[...r(),{label:"Export SVG",icon:ie.A,onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Gt,{model:e,handleClose:t}]))}}]}}))}function qt(e,t,r){try{e.showTrack(t)}catch(e){if(!/Could not resolve identifier/.exec(`${e}`))throw e;r.push(t)}}var _t=r(58273);const Ut=(0,w.lazy)((()=>r.e(3416).then(r.bind(r,3416))));class Jt extends a.A{name="LinearComparativeViewPlugin";install(e){!function(e){e.addViewType((()=>new te.A({name:"LinearComparativeView",displayName:"Linear comparative view",stateModel:Vt(e),ReactComponent:(0,w.lazy)((()=>r.e(8876).then(r.bind(r,98876))))})))}(e),function(e){e.addViewType((()=>new te.A({name:"LinearSyntenyView",displayName:"Linear synteny view",stateModel:$t(e),ReactComponent:(0,w.lazy)((()=>r.e(3795).then(r.bind(r,13795))))})))}(e),function(e){e.addDisplayType((()=>{const e=Nt();return new Oe.A({name:"LinearComparativeDisplay",configSchema:e,stateModel:Dt(e),trackType:"SyntenyTrack",viewType:"LinearComparativeView",ReactComponent:()=>null})}))}(e),function(e){e.addDisplayType((()=>{const e=(0,i.ConfigurationSchema)("LinearSyntenyDisplay",{trackIds:{type:"stringArray",defaultValue:[]},middle:{type:"boolean",defaultValue:!0}},{baseConfiguration:Nt(),explicitlyTyped:!0});return new Oe.A({name:"LinearSyntenyDisplay",configSchema:e,stateModel:zt(e),trackType:"SyntenyTrack",viewType:"LinearSyntenyView",ReactComponent:(0,w.lazy)((()=>r.e(4753).then(r.bind(r,44753))))})}))}(e),function(e){e.addDisplayType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("LGVSyntenyDisplay",{},{baseConfiguration:(0,n.ww)(e),explicitlyTyped:!0})}(e),r=(a=t,d.types.compose("LGVSyntenyDisplay",(0,n.N5)(a),d.types.model({type:d.types.literal("LGVSyntenyDisplay"),configuration:(0,i.ConfigurationReference)(a)})).views((e=>{const t=e.contextMenuItems;return{contextMenuItems(){const r=e.contextMenuFeature;return[...t(),...r?[{label:"Open synteny view for this position",onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Ot,{model:e,handleClose:t,feature:r}]))}}]:[]]}}})).views((e=>{const{trackMenuItems:t,colorSchemeSubMenuItems:r}=e;return{trackMenuItems:()=>[...t(),{label:"Color scheme",subMenu:[...r()]}]}})).actions((e=>({afterCreate(){e.colorBy?e.setColorScheme({...e.colorBy}):e.setColorScheme({type:"strand"})}}))));var a;return new Oe.A({name:"LGVSyntenyDisplay",configSchema:t,stateModel:r,trackType:"SyntenyTrack",viewType:"LinearGenomeView",ReactComponent:Rt.GQ})}))}(e),function(e){e.addToExtensionPoint("LaunchView-LinearSyntenyView",(async({session:e,views:t,tracks:r=[]})=>{try{const{assemblyManager:n}=e,a=e.addView("LinearSyntenyView",{});await(0,ae.when)((()=>!!a.width)),a.setViews(await Promise.all(t.map((async e=>{const t=await n.waitForAssembly(e.assembly);if(!t)throw new Error(`Assembly ${e.assembly} failed to load`);return{type:"LinearGenomeView",bpPerPx:1,offsetPx:0,hideHeader:!0,displayedRegions:t.regions}})))),await Promise.all(a.views.map((e=>(0,ae.when)((()=>e.initialized)))));const o=[];if(await Promise.all(t.map((async(e,t)=>{const r=a.views[t],{assembly:i,loc:s,tracks:l=[]}=e,c=await n.waitForAssembly(i);if(!c)throw new Error(`Assembly ${e.assembly} failed to load`);await r.navToSearchString({input:s,assembly:c}),l.forEach((e=>{qt(r,e,o)}))}))),r.forEach((e=>{qt(a,e,o)})),o.length)throw new Error(`Could not resolve identifiers: ${o.join(",")}`)}catch(t){throw e.notifyError(`${t}`,t),t}}))}(e),function(e){e.addTrackType((()=>{const t=(e=>(0,i.ConfigurationSchema)("SyntenyTrack",{},{baseConfiguration:(0,s.createBaseTrackConfig)(e)}))(e);return new _t.A({name:"SyntenyTrack",configSchema:t,stateModel:(0,s.createBaseTrackModel)(e,"SyntenyTrack",t)})}))}(e),e.addToExtensionPoint("Core-extendPluggableElement",(e=>("LinearPileupDisplay"!==e.name||(e.stateModel=e.stateModel.extend((e=>{const t=e.contextMenuItems;return{views:{contextMenuItems(){const r=e.contextMenuFeature,n=(0,c.getContainingTrack)(e);return[...t(),...r?[{label:"Linear read vs ref",icon:lt.A,onClick:()=>{(0,c.getSession)(e).queueDialog((e=>[Ut,{track:n,feature:r,handleClose:e}]))}}]:[]]}}}}))),e)))}configure(e){(0,c.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Linear synteny view",icon:It.A,onClick:e=>{e.addView("LinearSyntenyView",{})}})}}function Xt(e){return d.types.compose("LinearLollipopDisplay",Rt.Lr,d.types.model({type:d.types.literal("LinearLollipopDisplay"),configuration:(0,i.ConfigurationReference)(e)})).views((e=>{const{renderProps:t}=e;return{get blockType(){return"dynamicBlocks"},get renderDelay(){return 500},renderProps:()=>({...t(),rpcDriverName:e.rpcDriverName,config:e.configuration.renderer}),get rendererTypeName(){return e.configuration.renderer.type}}}))}var Yt=r(98111),Kt=r(2265),Qt=r(32595);class Zt{totalHeight=0;constructor({width:e}){if(!e)throw new Error("width required to make a new FloatingLayout");this.width=e}items=[];layout=new Map;layoutDirty=!1;add(e,t,r,n,a){this.items.push({uniqueId:e,anchorLocation:t,width:r,height:n,data:a}),this.layoutDirty=!0}getLayout(e){if(!this.layoutDirty)return this.layout;if(!e)throw new Error("configuration object required");const t=(0,i.readConfObject)(e,"minStickLength"),r=this.items.sort(((e,t)=>e.data.score-t.data.score));let n=0;const a=new Array(r.length);for(let e=0;e<r.length;e+=1){const o=r[e],{anchorLocation:i,width:s,height:l}=o,c=i-s/2,d=c+s;let u=t,p=u+l;for(let t=0;t<e;t+=1){const[,e]=a[t],{x:r,y:n,width:o,height:i}=e,s=r+o,m=n+i;(0,Qt.R6)(r,s,c,d)&&(0,Qt.R6)(n,m,u,p)&&(u=m,p=u+l,t=-1)}a[e]=[o.uniqueId,{...o,x:c,y:u}],p>n&&(n=p)}return this.totalHeight=n,this.layout=new Map(a),this.layoutDirty=!1,this.layout}getTotalHeight(){if(this.layoutDirty)throw new Error("getTotalHeight does not work when the layout is dirty.");return this.totalHeight}serializeRegion(){return this.toJSON()}toJSON(){if(this.layoutDirty)throw new Error("toJSON does not work when the layout is dirty.");return{pairs:[...this.getLayout()],totalHeight:this.getTotalHeight()}}static fromJSON(){throw new Error("not supported")}}class er{constructor({pairs:e,totalHeight:t}){this.layout=new Map(e),this.totalHeight=t}add(e){if(!this.layout.has(e))throw new Error(`layout error, precomputed layout is missing ${e}`)}getLayout(){return this.layout}getTotalHeight(){return this.totalHeight}static fromJSON(e){return new er(e)}}class tr extends Yt.LayoutSession{makeLayout(){const{end:e,start:t}=this.regions[0],r=(e-t)/this.bpPerPx;return new Kt.A(Zt,{width:r})}layoutIsValid(){return!1}}class rr extends Yt.default{createSession(e){return new tr(e)}deserializeLayoutInClient(e){return new er(e)}}const nr=(0,i.ConfigurationSchema)("LollipopRenderer",{strokeColor:{type:"color",description:"the outer color of each lollipop",defaultValue:"green",contextVariable:["feature"]},innerColor:{type:"color",description:"the inner color of each lollipop",defaultValue:"#7fc75f",contextVariable:["feature"]},strokeWidth:{type:"number",description:"width of the stroked border",defaultValue:4,contextVariable:["feature"]},radius:{type:"number",description:"radius in pixels of each lollipop body",defaultValue:"jexl:sqrt(max(3, (get(feature,'score')*10)/3.14))",contextVariable:["feature"]},caption:{type:"string",description:"the tooltip caption displayed when the mouse hovers over a lollipop",defaultValue:"jexl:get(feature,'name')",contextVariable:["feature"]},minStickLength:{type:"number",description:'minimum lollipop "stick" length, in pixels',defaultValue:5},stickColor:{type:"color",description:"color of the lollipop stick",defaultValue:"black",contextVariable:["feature"]},stickWidth:{type:"number",description:"width in pixels of the lollipop stick",defaultValue:2,contextVariable:["feature"]},score:{type:"number",description:'the "score" of each lollipop, displayed as a number in the center of the circle',defaultValue:"jexl:get(feature,'score')",contextVariable:["feature"]}},{explicitlyTyped:!0});class ar extends a.A{name="LollipopPlugin";install(e){!function(e){e.addRendererType((()=>new rr({name:"LollipopRenderer",ReactComponent:(0,w.lazy)((()=>r.e(6861).then(r.bind(r,46861)))),configSchema:nr,pluginManager:e})))}(e),function(e){e.addDisplayType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("LinearLollipopDisplay",{renderer:e.pluggableConfigSchemaType("renderer")},{baseConfiguration:Rt.Ki,explicitlyTyped:!0})}(e);return new Q.DisplayType({name:"LinearLollipopDisplay",configSchema:t,stateModel:Xt(t),trackType:"LollipopTrack",viewType:"LinearGenomeView",ReactComponent:Rt.GQ})}))}(e)}}function or(e){return d.types.compose("LinearArcDisplay",Rt.Lr,d.types.model({type:d.types.literal("LinearArcDisplay"),configuration:(0,i.ConfigurationReference)(e),displayMode:d.types.maybe(d.types.string)})).views((e=>({get blockType(){return"staticBlocks"},get renderDelay(){return 500},get rendererTypeName(){return e.configuration.renderer.type}}))).views((e=>({get displayModeSetting(){return e.displayMode??(0,i.getConf)(e,["renderer","displayMode"])}}))).views((e=>({get rendererConfig(){const t=(0,i.getConf)(e,["renderer"])||{};return e.rendererType.configSchema.create({...t,displayMode:e.displayModeSetting},(0,c.getEnv)(e))}}))).views((e=>{const{renderProps:t}=e;return{renderProps:()=>({...t(),rpcDriverName:e.rpcDriverName,config:e.rendererConfig,height:e.height})}})).actions((e=>({setDisplayMode(t){e.displayMode=t}}))).views((e=>{const t=e.trackMenuItems;return{trackMenuItems:()=>[...t(),{label:"Display mode",subMenu:[{type:"radio",label:"Arcs",onClick:()=>{e.setDisplayMode("arcs")},checked:"arcs"===e.displayMode},{type:"radio",label:"Semi-circles",onClick:()=>{e.setDisplayMode("semicircles")},checked:"semicircles"===e.displayMode}]}]}}))}function ir(e){return d.types.compose("LinearPairedArcDisplay",Q.BaseDisplay,(0,Rt._e)(),(0,Rt.e6)(),d.types.model({type:d.types.literal("LinearPairedArcDisplay"),configuration:(0,i.ConfigurationReference)(e),displayMode:d.types.maybe(d.types.string)})).volatile((()=>({lastDrawnOffsetPx:0,features:void 0,loading:!1,drawn:!0}))).views((e=>({get displayModeSetting(){return e.displayMode??(0,i.getConf)(e,["renderer","displayMode"])}}))).actions((e=>({selectFeature(t){const r=(0,c.getSession)(e);if((0,c.isSessionModelWithWidgets)(r)){const n=r.addWidget("VariantFeatureWidget","variantFeature",{view:(0,c.getContainingView)(e),track:(0,c.getContainingTrack)(e),featureData:t.toJSON()});r.showWidget(n)}(0,c.isSelectionContainer)(r)&&r.setSelection(t)},setLoading(t){e.loading=t},setFeatures(t){e.features=t},setDisplayMode(t){e.displayMode=t}}))).actions((e=>({afterAttach(){(async()=>{try{const{doAfterAttach:t}=await r.e(3497).then(r.bind(r,93497));t(e)}catch(t){console.error(t),e.setError(t)}})()},async renderSvg(t){const{renderArcSvg:n}=await r.e(4345).then(r.bind(r,44345));return n(e,t)}})))}function sr(){return sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},sr.apply(null,arguments)}const lr=(0,w.lazy)((()=>r.e(2241).then(r.bind(r,72241))));function cr({selectedFeatureId:e,region:t,bpPerPx:r,config:n,height:a,feature:o,onFeatureClick:s}){const[l,d]=(0,w.useState)(!1),[u,p]=(0,c.bpSpanPx)(o.get("start"),o.get("end"),t,r),m=o.id(),g=e&&String(e)===String(o.id()),h=g?"red":(0,i.readConfObject)(n,"color",{feature:o}),f=g?"red":"black",y=(0,i.readConfObject)(n,"label",{feature:o}),b=(0,i.readConfObject)(n,"caption",{feature:o}),v=(0,i.readConfObject)(n,"thickness",{feature:o})||2,C=Math.min((0,i.readConfObject)(n,"height",{feature:o})||100,a),S=w.createRef(),k=.5*C*.75+.375*C;return w.createElement("g",null,w.createElement("path",sr({ref:S},(0,c.getStrokeProps)(h),{d:`M ${u} 0 C ${u} ${C}, ${p} ${C}, ${p} 0`,strokeWidth:v,fill:"transparent",onClick:e=>{s(e,m)},onMouseOver:()=>{d(!0)},onMouseLeave:()=>{d(!1)},pointerEvents:"stroke"})),l?w.createElement(w.Suspense,{fallback:null},w.createElement(lr,{contents:b})):null,w.createElement("text",{x:u+(p-u)/2,y:k+3,stroke:"white",strokeWidth:"0.6em"},y),w.createElement("text",{x:u+(p-u)/2,y:k+3,stroke:f},y))}function dr(e,t,r,n){const a=(n-90)*Math.PI/180;return{x:e+r*Math.cos(a),y:t+r*Math.sin(a)}}function ur(e,t,r,n,a){const o=dr(e,t,r,a),i=dr(e,t,r,n),s=a-n<=180?"0":"1";return["M",o.x,o.y,"A",r,r,0,s,0,i.x,i.y].join(" ")}function pr({selectedFeatureId:e,region:t,bpPerPx:r,config:n,onFeatureClick:a,feature:o}){const[s,l]=(0,w.useState)(!1),[d,u]=(0,c.bpSpanPx)(o.get("start"),o.get("end"),t,r),p=o.id(),m=e&&String(e)===String(o.id()),g=m?"red":(0,i.readConfObject)(n,"color",{feature:o}),h=m?"red":"black",f=(0,i.readConfObject)(n,"label",{feature:o}),y=(0,i.readConfObject)(n,"caption",{feature:o}),b=(0,i.readConfObject)(n,"thickness",{feature:o})||2,v=w.createRef(),C=(u-d)/2;return w.createElement("g",null,w.createElement("path",sr({d:ur(d+(u-d)/2,0,(u-d)/2,90,270)},(0,c.getStrokeProps)(g),{strokeWidth:b,fill:"transparent",onClick:e=>{a(e,p)},onMouseOver:()=>{l(!0)},onMouseLeave:()=>{l(!1)},ref:v,pointerEvents:"stroke"})),s?w.createElement(lr,{contents:y}):null,w.createElement("text",{x:d+(u-d)/2,y:C+3,stroke:"white",strokeWidth:"0.6em"},f),w.createElement("text",{x:d+(u-d)/2,y:C+3,stroke:h},f))}function mr({exportSVG:e,width:t,height:r,children:n}){return e?n:w.createElement("svg",{width:t,height:r},n)}const gr=(0,We.observer)((function({features:e,config:t,regions:r,bpPerPx:n,height:a,exportSVG:o,displayModel:s,onFeatureClick:l}){const c=r[0],d=(c.end-c.start)/n,u="semicircles"===(0,i.readConfObject)(t,"displayMode"),{selectedFeatureId:p}=s||{};return w.createElement(mr,{exportSVG:o,width:d,height:a},[...e.values()].map((e=>u?w.createElement(pr,{key:e.id(),config:t,region:c,bpPerPx:n,selectedFeatureId:p,onFeatureClick:l,feature:e}):w.createElement(cr,{key:e.id(),height:a,config:t,region:c,bpPerPx:n,selectedFeatureId:p,onFeatureClick:l,feature:e}))))})),hr=(0,i.ConfigurationSchema)("ArcRenderer",{color:{type:"color",description:"the color of the arcs",defaultValue:"darkblue",contextVariable:["feature"]},thickness:{type:"number",description:"the thickness of the arcs",defaultValue:"jexl:logThickness(feature,'score')",contextVariable:["feature"]},label:{type:"string",description:"the label to appear at the apex of the arcs",defaultValue:"jexl:get(feature,'score')",contextVariable:["feature"]},height:{type:"number",description:"the height of the arcs",defaultValue:"jexl:log10(get(feature,'end')-get(feature,'start'))*50",contextVariable:["feature"]},caption:{type:"string",description:"the caption to appear when hovering over any point on the arcs",defaultValue:"jexl:get(feature,'name')",contextVariable:["feature"]},displayMode:{type:"enum",defaultValue:"arcs",model:d.types.enumeration("DisplayMode",["arcs","semicircles"]),description:"render semi-circles instead of arcs"}},{explicitlyTyped:!0});var fr=r(92880);class yr extends fr.default{}var br=r(40898);class wr extends a.A{name="ArcRenderer";install(e){!function(e){e.addRendererType((()=>new yr({name:"ArcRenderer",ReactComponent:gr,configSchema:hr,pluginManager:e})))}(e),function(e){e.addDisplayType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("LinearArcDisplay",{renderer:d.types.optional(e.pluggableConfigSchemaType("renderer"),{type:"ArcRenderer"})},{baseConfiguration:Rt.Ki,explicitlyTyped:!0})}(e);return new Q.DisplayType({name:"LinearArcDisplay",displayName:"Arc display",configSchema:t,stateModel:or(t),trackType:"FeatureTrack",viewType:"LinearGenomeView",ReactComponent:Rt.GQ})}))}(e),function(e){e.addDisplayType((()=>{const e=(0,i.ConfigurationSchema)("LinearPairedArcDisplay",{color:{type:"color",description:"the color of the arcs",defaultValue:"jexl:defaultPairedArcColor(feature,alt)",contextVariable:["feature","alt"]}},{baseConfiguration:Rt.Ki,explicitlyTyped:!0});return new Q.DisplayType({name:"LinearPairedArcDisplay",displayName:"Arc display",configSchema:e,stateModel:ir(e),trackType:"VariantTrack",viewType:"LinearGenomeView",ReactComponent:(0,w.lazy)((()=>r.e(7126).then(r.bind(r,87126))))})}))}(e),e.jexl.addFunction("logThickness",((e,t)=>Math.log(e.get(t)+1))),e.jexl.addFunction("defaultPairedArcColor",((e,t)=>t?.startsWith("<DEL")?br.set1[0]:t?.startsWith("<DUP")?br.set1[1]:t?.startsWith("<INV")?br.set1[2]:t?.startsWith("<TRA")?br.set1[3]:t?.startsWith("<CNV")?br.set1[4]:br.set1[6]))}}var vr=r(67736),Cr=r(25914),Sr=r(36993);const kr=(0,i.ConfigurationSchema)("AboutWidget",{}),Tr=d.types.model("AboutWidget",{id:K.ElementId,type:d.types.literal("AboutWidget")}),xr=(0,i.ConfigurationSchema)("HelpWidget",{}),Ar=d.types.model("HelpWidget",{id:K.ElementId,type:d.types.literal("HelpWidget")}),Pr=(0,i.ConfigurationSchema)("ImportSessionWidget",{}),Mr=d.types.model("ImportSessionWidget",{id:K.ElementId,type:d.types.literal("ImportSessionWidget")}),Er=(0,i.ConfigurationSchema)("SessionManager",{}),Rr=d.types.model("SessionManager",{id:K.ElementId,type:d.types.literal("SessionManager")});class Ir extends a.A{name="MenusPlugin";install(e){e.addWidgetType((()=>new vr.A({name:"AboutWidget",heading:"About",configSchema:kr,stateModel:Tr,ReactComponent:(0,w.lazy)((()=>r.e(9032).then(r.bind(r,99032))))}))),e.addWidgetType((()=>new vr.A({name:"HelpWidget",heading:"Help",configSchema:xr,stateModel:Ar,ReactComponent:(0,w.lazy)((()=>r.e(4974).then(r.bind(r,74974))))}))),e.addWidgetType((()=>new vr.A({name:"ImportSessionWidget",heading:"Import session",configSchema:Pr,stateModel:Mr,ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(3778),r.e(7389)]).then(r.bind(r,67389))))}))),e.addWidgetType((()=>new vr.A({name:"SessionManager",heading:"Sessions",configSchema:Er,stateModel:Rr,ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(3162),r.e(8762)]).then(r.bind(r,58762))))})))}configure(e){(0,c.isAbstractMenuManager)(e.rootModel)&&(e.rootModel.appendToMenu("Help",{label:"About",icon:Sr.A,onClick:e=>{const t=e.addWidget("AboutWidget","aboutWidget");e.showWidget(t)}}),e.rootModel.appendToMenu("Help",{label:"Help",icon:Cr.A,onClick:e=>{const t=e.addWidget("HelpWidget","helpWidget");e.showWidget(t)}}))}}var Nr=r(46377),Fr=r(66885),Lr=r(6434),Dr=r(2401),Br=r.n(Dr);class Vr extends Nr.BaseFeatureDataAdapter{constructor(e,t,r){super(e,t,r),this.endpoint=(0,i.readConfObject)(e,"endpoint").uri,this.queryTemplate=(0,i.readConfObject)(e,"queryTemplate"),this.additionalQueryParams=(0,i.readConfObject)(e,"additionalQueryParams"),this.refNamesQueryTemplate=(0,i.readConfObject)(e,"refNamesQueryTemplate"),this.configRefNames=(0,i.readConfObject)(e,"refNames")}async getRefNames(e={}){if(this.refNames)return this.refNames;if(this.refNamesQueryTemplate){const t=encodeURIComponent(this.refNamesQueryTemplate),r=await this.querySparql(t,e);this.refNames=this.resultsToRefNames(r)}else this.refNames=this.configRefNames;return this.refNames}getFeatures(e,t={}){return(0,Fr.ObservableCreate)((async r=>{const n=encodeURIComponent(Br()(this.queryTemplate,e)),{refName:a}=e,o=await this.querySparql(n,t);this.resultsToFeatures(o,a).forEach((e=>{r.next(e)})),r.complete()}),t.signal)}async querySparql(e,t){let r="";this.additionalQueryParams.length&&(r=`&${this.additionalQueryParams.join("&")}`);const n=t?.signal;return(await fetch(`${this.endpoint}?query=${e}${r}`,{headers:{accept:"application/json,application/sparql-results+json"},signal:n})).json()}resultsToRefNames(e){const t=e.results.bindings||[];if(!e.head.vars.includes("refName"))throw new Error('"refName" not found in refNamesQueryTemplate response');return t.map((e=>e.refName.value))}resultsToFeatures(e,t){const r=e.results.bindings||[],n=e.head.vars;["start","end","uniqueId"].forEach((e=>{n.includes(e)||console.error(`Required field ${e} missing from feature data`)}));const a={};r.forEach((e=>{const r=[{}];n.forEach((t=>{if(t in e){const{value:n}=e[t];let a=0;for(;t.startsWith("sub_");)t=t.slice(4),a+=1;for(;a>r.length-1;)r.push({});r[a][t]=n}})),r.forEach(((e,n)=>{const{uniqueId:o,start:i,end:s,strand:l}=e;n<r.length-1&&(r[n+1].parentUniqueId=o),a[o]={data:{...e,uniqueId:o,refName:t,start:Number.parseInt(i,10),end:Number.parseInt(s,10),strand:Number.parseInt(l,10)||0}}}))}));for(const[e,t]of Object.entries(a)){const r=t.data.parentUniqueId;if(t.data.parentUniqueId=void 0,r){const n=a[r];if(n)n.data.subfeatures||(n.data.subfeatures=[]),n.data.subfeatures.push({...t.data,uniqueId:e}),delete a[e];else{const n=Object.values(a).map((e=>e.data.subfeatures)).filter((e=>!!e)).flat();let o=!1;for(const i of n){if(i.uniqueId===r){i.subfeatures||(i.subfeatures=[]),i.subfeatures.push({...t.data,uniqueId:e}),delete a[e],o=!0;break}i.subfeatures&&n.push(...i.subfeatures)}o||console.error(`Could not find parentID ${r}`)}}}return Object.keys(a).map((e=>new Lr.A({...a[e].data,uniqueId:e,subfeatures:a[e].data.subfeatures})))}async hasDataForRefName(e,t={}){const r=await this.getRefNames(t);return!(r.length&&!r.includes(e))}freeResources(){}}const zr=(0,i.ConfigurationSchema)("SPARQLAdapter",{endpoint:{type:"fileLocation",defaultValue:{uri:"https://somesite.com/sparql",locationType:"UriLocation"},description:"URL of the SPARQL endpoint"},queryTemplate:{type:"text",defaultValue:"",description:"SPARQL query where {start} {end} and {refName} will get replaced for each call"},refNamesQueryTemplate:{type:"text",defaultValue:"",description:"SPARQL query that returns the possible refNames in a ?refName column"},refNames:{type:"stringArray",defaultValue:[],description:'Possible refNames used by the SPARQL endpoint (ignored if "refNamesQueryTemplate" is provided)'},additionalQueryParams:{type:"stringArray",defaultValue:[],description:'Additional parameters to add to the query, e.g. "format=JSON"'}},{explicitlyTyped:!0});class Or extends a.A{name="RdfPlugin";install(e){e.addAdapterType((()=>new $.A({name:"SPARQLAdapter",displayName:"SPARQL adapter",configSchema:zr,AdapterClass:Vr}))),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="SPARQLAdapter",o=(0,X.getFileName)(t);return/\/sparql$/i.test(o)||n===a?{type:a,endpoint:t}:e(t,r,n)}))}}const Hr=(0,i.ConfigurationSchema)("TwoBitAdapter",{twoBitLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.2bit",locationType:"UriLocation"}},chromSizesLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/default.chrom.sizes",locationType:"UriLocation"},description:"An optional chrom.sizes file can be supplied to speed up loading since parsing the twobit file can take time"}},{explicitlyTyped:!0});function jr(){return jr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},jr.apply(null,arguments)}function Wr({codonTable:e,seq:t,frame:r,bpPerPx:n,colorByCDS:a,region:o,seqStart:i,height:s,y:l,reverse:d=!1,theme:u}){const p=(Math.abs(r)-1-i%3+3)%3,m=t.length-p,g=m-m%3,h=t.slice(p,p+g),f=[];for(let t=0;t<h.length;t+=3){const r=h.slice(t,t+3),n=d?(0,c.revcom)(r):r,a=e[n]||"";f.push({letter:a,codon:n.toUpperCase()})}const y=(o.end-o.start)/n,b=1/n*3,v=1/n>=12,C=p/n-(o.start-i)/n,S=a?u?.palette.framesCDS.at(r)?.main:u?.palette.frames.at(r)?.main;return w.createElement(w.Fragment,null,w.createElement("rect",{x:0,y:l,width:y,height:s,fill:S}),f.map(((e,t)=>{const r=o.reversed?y-(t+1)*b-C:b*t+C,{letter:n,codon:a}=e,i=c.defaultStarts.includes(a)?u?.palette.startCodon:c.defaultStops.includes(a)?u?.palette.stopCodon:void 0;return v||i?w.createElement(w.Fragment,{key:`${t}-${n}`},w.createElement("rect",{x:r,y:l,width:v?b:b+.7,height:s,stroke:v?"#555":"none",fill:i||"none"}),v?w.createElement("text",{x:r+b/2,fontSize:s-2,y:l+s/2,dominantBaseline:"middle",textAnchor:"middle"},n):null):null})))}function Gr({bpPerPx:e,region:t,feature:r,sequenceType:n,theme:a,height:o,seq:i,y:s}){const l=1/e>=12,d=r.get("start"),u=r.get("end"),[p,m]=(0,c.bpSpanPx)(d,u,t,e),g=t.reversed,h=u-d,f=Math.max((m-p)/h,.8);return w.createElement(w.Fragment,null,i.split("").map(((e,t)=>{const r="dna"===n?a.palette.bases[e.toUpperCase()]:void 0,i=g?m-(t+1)*f:p+t*f;return w.createElement(w.Fragment,{key:`${e}-${t}`},w.createElement("rect",{x:i,y:s,width:f,height:o,fill:r?r.main:"#aaa",stroke:l?"#555":"none"}),l?w.createElement("text",{x:i+f/2,y:s+o/2,dominantBaseline:"middle",textAnchor:"middle",fontSize:o-2,fill:r?a.palette.getContrastText(r.main):"black"},e):null)})))}function $r({regions:e,theme:t,colorByCDS:r,features:n=new Map,showReverse:a=!0,showForward:o=!0,showTranslation:i=!0,sequenceType:s="dna",bpPerPx:l,rowHeight:d}){const u=e[0],p=(0,T.createJBrowseTheme)(t),m=(0,c.generateCodonTable)(c.defaultCodonTable),[g]=[...n.values()];if(!g)return null;const h=g.get("seq");if(!h)return null;let f=-d;const y=l<=1,b=i&&o?[3,2,1]:[],v=i&&a?[-1,-2,-3]:[],[C,S]=u.reversed?[v.toReversed(),b.toReversed()]:[b,v];return w.createElement(w.Fragment,null,C.map((e=>w.createElement(Wr,{key:`translation-${e}`,colorByCDS:r,seq:h,y:f+=d,codonTable:m,frame:e,bpPerPx:l,region:u,seqStart:g.get("start"),theme:p,height:d,reverse:u.reversed}))),o&&y?w.createElement(Gr,{height:d,sequenceType:s,y:f+=d,feature:g,region:u,seq:u.reversed?(0,c.complement)(h):h,bpPerPx:l,theme:p}):null,a&&y?w.createElement(Gr,{height:d,sequenceType:s,y:f+=d,feature:g,region:u,seq:u.reversed?h:(0,c.complement)(h),bpPerPx:l,theme:p}):null,S.map((e=>w.createElement(Wr,{key:`rev-translation-${e}`,colorByCDS:r,seq:h,y:f+=d,codonTable:m,frame:e,bpPerPx:l,region:u,seqStart:g.get("start"),theme:p,height:d,reverse:!u.reversed}))))}function qr({exportSVG:e,width:t,totalHeight:r,children:n}){return e?n:w.createElement("svg",{"data-testid":"sequence_track",width:t,height:r,style:{display:"block",width:t,height:r,userSelect:"none"}},n)}const _r=(0,We.observer)((function(e){const{regions:t,bpPerPx:r,sequenceHeight:n}=e,a=t[0],o=(a.end-a.start)/r;return w.createElement(qr,jr({},e,{totalHeight:n,width:o}),w.createElement($r,e))})),Ur=(0,i.ConfigurationSchema)("DivSequenceRenderer",{height:{type:"number",description:"height in pixels of each line of sequence",defaultValue:16}},{explicitlyTyped:!0});class Jr extends fr.default{supportsSVG=!0;getExpandedRegion(e){return{...e,start:Math.max(e.start-3,0),end:e.end+3}}}const Xr=(0,i.ConfigurationSchema)("BgzipFastaAdapter",{fastaLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa.gz",locationType:"UriLocation"}},faiLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa.gz.fai",locationType:"UriLocation"}},metadataLocation:{description:"Optional metadata file",type:"fileLocation",defaultValue:{uri:"/path/to/fa.metadata.yaml",locationType:"UriLocation"}},gziLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa.gz.gzi",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Yr=(0,i.ConfigurationSchema)("ChromSizesAdapter",{chromSizesLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/species.chrom.sizes",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Kr=(0,i.ConfigurationSchema)("IndexedFastaAdapter",{fastaLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa",locationType:"UriLocation"}},faiLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa.fai",locationType:"UriLocation"}},metadataLocation:{description:"Optional metadata file",type:"fileLocation",defaultValue:{uri:"/path/to/fa.metadata.yaml",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Qr=(0,i.ConfigurationSchema)("UnindexedFastaAdapter",{rewriteRefNames:{type:"string",defaultValue:"",contextVariable:["refName"]},fastaLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/seq.fa",locationType:"UriLocation"}},metadataLocation:{description:"Optional metadata file",type:"fileLocation",defaultValue:{uri:"/path/to/fa.metadata.yaml",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Zr=(0,i.ConfigurationSchema)("SequenceSearchAdapter",{search:{type:"string",defaultValue:"",description:"Search string or regex to search for"},sequenceAdapter:{type:"frozen",defaultValue:null},searchForward:{type:"boolean",defaultValue:!0},searchReverse:{type:"boolean",defaultValue:!0},caseInsensitive:{type:"boolean",defaultValue:!0}},{explicitlyTyped:!0});const en=(0,i.ConfigurationSchema)("LinearReferenceSequenceDisplay",{renderer:Ur},{explicitIdentifier:"displayId",explicitlyTyped:!0});class tn extends a.A{name="SequencePlugin";install(e){!function(e){e.addRendererType((()=>new Jr({name:"DivSequenceRenderer",ReactComponent:_r,configSchema:Ur,pluginManager:e})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"TwoBitAdapter",displayName:"TwoBit adapter",configSchema:Hr,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>r.e(9280).then(r.bind(r,79280)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"BgzipFastaAdapter",displayName:"Bgzip-indexed FASTA adapter",configSchema:Xr,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(2977),r.e(9206)]).then(r.bind(r,79206)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"ChromSizesAdapter",displayName:"Chrom sizes adapter",configSchema:Yr,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>r.e(7842).then(r.bind(r,57842)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"IndexedFastaAdapter",displayName:"Indexed FASTA adapter",configSchema:Kr,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>Promise.all([r.e(7864),r.e(9086),r.e(2977),r.e(7489)]).then(r.bind(r,69870)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"UnindexedFastaAdapter",displayName:"Unindexed FASTA adapter",configSchema:Qr,adapterMetadata:{hiddenFromGUI:!0},getAdapterClass:()=>r.e(3578).then(r.bind(r,93578)).then((e=>e.default))})))}(e),function(e){e.addAdapterType((()=>new $.A({name:"SequenceSearchAdapter",displayName:"Sequence search adapter",adapterMetadata:{hiddenFromGUI:!0},configSchema:Zr,getAdapterClass:()=>r.e(946).then(r.bind(r,90946)).then((e=>e.default))})))}(e),function(e){e.addTrackType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("ReferenceSequenceTrack",{adapter:e.pluggableConfigSchemaType("adapter"),displays:d.types.array(e.pluggableConfigSchemaType("display")),name:{type:"string",description:'optional track name, otherwise uses the "Reference sequence (assemblyName)"',defaultValue:""},sequenceType:{type:"string",description:"either dna or pep",defaultValue:"dna"},description:{description:"a description of the track",type:"string",defaultValue:""},metadata:{type:"frozen",description:"anything to add about this track",defaultValue:{}},formatAbout:(0,i.ConfigurationSchema)("FormatAbout",{config:{type:"frozen",description:"formats configuration in about dialog",defaultValue:{},contextVariable:["config"]},hideUris:{type:"boolean",defaultValue:!1}})},{preProcessSnapshot:t=>{const r=JSON.parse(JSON.stringify(t)),n=new Set,{displays:a=[]}=r;if("placeholderId"!==r.trackId){a.forEach((e=>e&&n.add(e.type)));const t=e.getTrackType(r.type);t?.displayTypes.forEach((e=>{n.has(e.name)||a.push({displayId:`${r.trackId}-${e.name}`,type:e.name})}))}return{...r,displays:a}},explicitIdentifier:"trackId",explicitlyTyped:!0,actions:e=>({addDisplayConf(t){const{type:r}=t;if(!r)throw new Error(`unknown display type ${r}`);const n=e.displays.find((e=>e&&e.displayId===t.displayId));if(n)return n;const a=e.displays.push(t);return e.displays[a-1]}})})}(e);return new _t.A({name:"ReferenceSequenceTrack",displayName:"Reference sequence track",configSchema:t,stateModel:(0,s.createBaseTrackModel)(e,"ReferenceSequenceTrack",t)})}))}(e),function(e){e.addDisplayType((()=>{const e=function(e){return d.types.compose("LinearReferenceSequenceDisplay",Rt.Lr,d.types.model({type:d.types.literal("LinearReferenceSequenceDisplay"),configuration:(0,i.ConfigurationReference)(e),showForward:!0,showReverse:!0,showTranslation:!0})).volatile((()=>({rowHeight:15}))).views((e=>({get sequenceType(){return(0,i.getConf)((0,c.getContainingTrack)(e),"sequenceType")},get showForwardActual(){return e.showForward},get showReverseActual(){return"dna"===this.sequenceType&&e.showReverse},get showTranslationActual(){return"dna"===this.sequenceType&&e.showTranslation}}))).views((e=>({get sequenceHeight(){const{rowHeight:t,showTranslationActual:r,showReverseActual:n,showForwardActual:a}=e;return(n&&r?3*t:0)+(a&&r?3*t:0)+(n?t:0)+(a?t:0)}}))).views((e=>{const{renderProps:t}=e;return{renderProps(){const{rpcDriverName:r,showForwardActual:n,showReverseActual:a,showTranslationActual:o,rowHeight:i,sequenceHeight:s,sequenceType:l}=e;return{...t(),...(0,X.getParentRenderProps)(e),config:e.configuration.renderer,rpcDriverName:r,showForward:n,showReverse:a,showTranslation:o,sequenceType:l,rowHeight:i,sequenceHeight:s}}}})).views((e=>({regionCannotBeRendered:()=>(0,c.getContainingView)(e).bpPerPx>3?"Zoom in to see sequence":void 0,get rendererTypeName(){return e.configuration.renderer.type}}))).actions((e=>({toggleShowForward(){e.showForward=!e.showForward},toggleShowReverse(){e.showReverse=!e.showReverse},toggleShowTranslation(){e.showTranslation=!e.showTranslation},afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((()=>{(0,c.getContainingView)(e).bpPerPx>3?e.setHeight(50):e.setHeight(e.sequenceHeight)})))}}))).views((e=>({trackMenuItems:()=>[..."dna"===e.sequenceType?[{label:"Show forward",type:"checkbox",checked:e.showForward,onClick:()=>{e.toggleShowForward()}},{label:"Show reverse",type:"checkbox",checked:e.showReverse,onClick:()=>{e.toggleShowReverse()}},{label:"Show translation",type:"checkbox",checked:e.showTranslation,onClick:()=>{e.toggleShowTranslation()}}]:[]]})))}(en);return new Q.DisplayType({name:"LinearReferenceSequenceDisplay",configSchema:en,stateModel:e,displayName:"Reference sequence display",trackType:"ReferenceSequenceTrack",viewType:"LinearGenomeView",ReactComponent:Rt.GQ})}))}(e),function(e){e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="TwoBitAdapter",o=(0,X.getFileName)(t),i={type:a,twoBitLocation:t};return/\.2bit$/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"TwoBitAdapter"===t?"ReferenceSequenceTrack":e(t))),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="IndexedFastaAdapter",o=(0,X.getFileName)(t),i={type:a,fastaLocation:t,faiLocation:r||(0,X.makeIndex)(t,".fai")};return/\.(fa|fasta|fas|fna|mfa)$/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"IndexedFastaAdapter"===t?"ReferenceSequenceTrack":e(t))),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="BgzipFastaAdapter",o=(0,X.getFileName)(t),i={type:a,faiLocation:(0,X.makeIndex)(t,".fai"),gziLocation:(0,X.makeIndex)(t,".gzi")};return/\.(fa|fasta|fas|fna|mfa)\.b?gz$/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"BgzipFastaAdapter"===t?"ReferenceSequenceTrack":e(t)))}(e)}}var rn=r(88217),nn=r(48231);const an=(0,We.observer)((function({text:e,x:t,y:r,region:n,reversed:a,bpPerPx:o,exportSVG:i,feature:s,viewParams:l,color:u="black",fontHeight:p=11,featureWidth:m=0,allowedWidthExpansion:g=0,displayModel:h={}}){const f=m+g,y=(0,c.measureText)(e,p),b=(0,d.isStateTreeNode)(h)&&(0,d.isAlive)(h)&&!i?(0,c.getViewParams)(h):l,v=a?b.end:b.start,[C,S]=(0,w.useState)(i),k=(0,nn.A)();if((0,w.useEffect)((()=>{S(!0)}),[]),(0,d.isStateTreeNode)(n)&&!(0,d.isAlive)(n))return null;const T=n.start,x=n.end,A=s.get("start"),P=s.get("end"),M=y*o;return v<x&&v>T&&A<v&&v+M<P?t=b.offsetPx:A<v&&v+M<P&&v+M>T&&v+M<x&&(t=b.offsetPx1),C?w.createElement("text",{x:t,y:r+p,fill:"#f0f"===u?(0,c.stripAlpha)(k.palette.text.primary):u,fontSize:p},y>f?`${e.slice(0,f/(.6*p))}...`:e):null}));function on(){return on=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},on.apply(null,arguments)}const sn=(0,We.observer)((function(e){const{feature:t,rootLayout:r,config:n,name:a,description:o,shouldShowName:s,shouldShowDescription:l}=e,c=r.getSubRecord(String(t.id()));if(!c)return null;const{GlyphComponent:d}=c.data||{};return w.createElement("g",null,w.createElement(d,on({featureLayout:c},e)),s?w.createElement(an,on({text:a,x:r.getSubRecord("nameLabel")?.absolute.left||0,y:r.getSubRecord("nameLabel")?.absolute.top||0,color:(0,i.readConfObject)(n,["labels","nameColor"],{feature:t}),featureWidth:c.width},e)):null,l?w.createElement(an,on({text:o,x:r.getSubRecord("descriptionLabel")?.absolute.left||0,y:r.getSubRecord("descriptionLabel")?.absolute.top||0,color:(0,i.readConfObject)(n,["labels","descriptionColor"],{feature:t}),featureWidth:c.width},e)):null)}));function ln(){return ln=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ln.apply(null,arguments)}function cn({rect:e,region:t,bpPerPx:r,...n}){if(!e)return null;const[a,o,i,s]=e,[l,d]=(0,c.bpSpanPx)(a,i,t,r),u=Math.round(o),p=(t.end-t.start)/r,m=Math.round(s-o),g=d-l;if(l+g<0)return null;const h=Math.max(l,0),f=h-l,y=Math.max(1,Math.min(g-f,p));return w.createElement("rect",ln({x:h-2,y:u-2,width:y+4,height:m+4},n))}const dn=(0,We.observer)((function({displayModel:e={},blockKey:t,region:r,bpPerPx:n,movedDuringLastMouseDown:a,...o}){const{selectedFeatureId:i,featureIdUnderMouse:s,contextMenuFeature:l}=e,c=s||l?.id(),[d,u]=(0,w.useState)(!1);function p(e){const{onFeatureMouseOut:t}=o;t&&c&&t(e,c)}function m(e){const{onFeatureMouseOver:t}=o;t&&c&&t(e,c)}return(0,w.useEffect)((()=>{u(!0)}),[]),d?w.createElement(w.Fragment,null,c?w.createElement(cn,{rect:e.getFeatureByID?.(t,c),region:r,bpPerPx:n,fill:"#000",fillOpacity:"0.2",onMouseDown:function(e){const{onFeatureMouseDown:t}=o;t&&c&&t(e,c)},onMouseEnter:function(e){const{onFeatureMouseEnter:t}=o;t&&c&&t(e,c)},onMouseOut:p,onMouseOver:m,onMouseUp:function(e){const{onFeatureMouseUp:t}=o;t&&c&&t(e,c)},onMouseLeave:function(e){const{onFeatureMouseLeave:t}=o;t&&c&&t(e,c)},onMouseMove:function(e){const{onFeatureMouseMove:t}=o;t&&c&&t(e,c)},onClick:function(e){if(a)return;const{onFeatureClick:t}=o;t&&c&&(e.stopPropagation(),t(e,c))},onContextMenu:function(e){const{onFeatureContextMenu:t}=o;t&&c&&t(e,c)},onFocus:m,onBlur:p,"data-testid":c}):null,i?w.createElement(cn,{rect:e.getFeatureByID?.(t,i),region:r,bpPerPx:n,stroke:"#00b8ff",fill:"none"}):null):null})),un=(0,We.observer)((function({feature:e,featureLayout:t,config:r,region:n}){const a=e.get("strand"),o=n.reversed?-1:1,s=7*a*o,{left:l=0,top:d=0,width:u=0,height:p=0}=t.absolute,m=(0,i.readConfObject)(r,"color2",{feature:e}),g=(0,nn.A)(),h="#f0f"===m?(0,c.stripAlpha)(g.palette.text.secondary):m,f=a*o==-1?l:a*o==1?l+u:null,y=d+p/2;return f?w.createElement(w.Fragment,null,w.createElement("line",{x1:f,x2:f+s,y1:y,y2:y,stroke:h}),w.createElement("polygon",{points:[[f+s/2,y-2.5],[f+s/2,y+2.5],[f+s,y]].toString(),stroke:h,fill:h})):null})),pn=(0,We.observer)((function(e){const t=(0,nn.A)(),{colorByCDS:r,feature:n,region:a,config:o,featureLayout:s,bpPerPx:l,topLevel:d}=e,{start:u,end:p}=a,m=(p-u)/l,g=n.get("start"),h=n.get("end"),f=n.get("type"),y=n.get("strand"),b=n.get("phase"),v=(h-g)/l,{left:C=0}=s.absolute;let{top:S=0,height:k=0}=s.absolute;if(C+v<0)return null;Pn(n)&&(S+=.175*k,k*=.65);const T=Math.max(C,0),x=T-C,A=Math.max(2,Math.min(v-x,m));let P=Pn(n)?(0,i.readConfObject)(o,"color3",{feature:n}):(0,i.readConfObject)(o,"color1",{feature:n});if(r&&"CDS"===f&&void 0!==y&&void 0!==b){const e=(0,c.getFrame)(g,h,y,b),r=t.palette.framesCDS.at(e)?.main;r&&(P=r)}return n.parent()&&"intron"===f?null:w.createElement(w.Fragment,null,d?w.createElement(un,e):null,w.createElement("rect",{"data-testid":`box-${n.id()}`,x:T,y:S,width:A,height:k,fill:P,stroke:(0,i.readConfObject)(o,"outline",{feature:n})}))}));function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},mn.apply(null,arguments)}const gn=(0,We.observer)((function(e){const{feature:t,featureLayout:r,selected:n,config:a,subfeatures:o=t.get("subfeatures")}=e,s=(0,nn.A)(),l=(0,i.readConfObject)(a,"color2",{feature:t}),d="#f0f"===l?(0,c.stripAlpha)(s.palette.text.secondary):l,{left:u=0,top:p=0,width:m=0,height:g=0}=r.absolute,h=p+g/2;return w.createElement(w.Fragment,null,w.createElement("line",{"data-testid":t.id(),x1:u,y1:h,y2:h,x2:u+m,stroke:d}),o?.map((t=>{const a=String(t.id()),o=r.getSubRecord(a);if(!o)return null;const{GlyphComponent:i}=o.data||{};return w.createElement(i,mn({key:`glyph-${a}`},e,{feature:t,topLevel:!1,featureLayout:o,selected:n}))})),w.createElement(un,e))}));function hn(){return hn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},hn.apply(null,arguments)}function fn(e){return/(\bUTR|_UTR|untranslated[_\s]region)\b/.test(e.get("type")||"")}function yn(e,t){let r=e.get("subfeatures");if(!r||0===r.length)return[];const n=r.some((e=>fn(e))),a=["mRNA","transcript"].includes(e.get("type"));return(!n&&a||(0,i.readConfObject)(t,"impliedUTRs"))&&(r=function(e,t){const r=[...t];let n,a,o=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;const s=[];for(const t of r){const r=t.get("type");/^cds/i.test(r)?(o>t.get("start")&&(o=t.get("start")),i<t.get("end")&&(i=t.get("end"))):/exon/i.test(r)?s.push(t):fn(t)&&(n=t.get("start")===e.get("start"),a=t.get("end")===e.get("end"))}if(!(s.length&&o<Number.POSITIVE_INFINITY&&i>Number.NEGATIVE_INFINITY))return r;s.sort(((e,t)=>e.get("start")-t.get("start")));const l=e.get("strand");let d,u;if(!n)for(let t=0;t<s.length&&(d=s[t].get("start"),!(d>=o));t++){u=o>s[t].get("end")?s[t].get("end"):o;const n=l>=0?"five_prime_UTR":"three_prime_UTR";r.unshift(new c.SimpleFeature({parent:e,id:`${e.id()}_${n}_${t}`,data:{start:d,end:u,strand:l,type:n}}))}if(!a)for(let t=s.length-1;t>=0&&(u=s[t].get("end"),!(u<=i));t--){d=i<s[t].get("start")?s[t].get("start"):i;const n=l>=0?"three_prime_UTR":"five_prime_UTR";r.push(new c.SimpleFeature({parent:e,id:`${e.id()}_${n}_${t}`,data:{start:d,end:u,strand:l,type:n}}))}return r}(e,r)),r.filter((e=>function(e,t){return function(e,t){const r=(0,i.readConfObject)(t,"subParts"),n="string"==typeof r?r.split(/\s*,\s*/):r;return e=>n.map((e=>e.toLowerCase())).includes(e.get("type").toLowerCase())}(0,t)(e)}(e,t)))}const bn=(0,We.observer)((function(e){const{feature:t,config:r}=e,n=yn(t,r);return w.createElement(gn,hn({},e,{subfeatures:n}))}));bn.layOut=({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o})=>{const i=xn({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o});return An({layout:i,subfeatures:yn(t,a),bpPerPx:r,reversed:n,config:a,extraGlyphs:o}),i};const wn=bn;function vn(){return vn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},vn.apply(null,arguments)}const Cn=(0,We.observer)((function(e){const{feature:t,featureLayout:r,selected:n}=e;return t.get("subfeatures")?.map((t=>{const a=String(t.id()),o=r.getSubRecord(a);if(!o)return null;const{GlyphComponent:i}=o.data||{};return w.createElement(i,vn({key:`glyph-${a}`},e,{feature:t,featureLayout:o,selected:n}))}))}));Cn.layOut=({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o})=>{const s=xn({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o}),l=(0,i.readConfObject)(a,"displayMode");if("reducedRepresentation"!==l){let e=0;t.get("subfeatures")?.forEach((t=>{const c=kn(t,o),d=(0,i.readConfObject)(a,"height",{feature:t});(c.layOut||Tn)({layout:s,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o}).move(0,e),e+="collapse"===l?0:("compact"===l?d/3:d)+2}))}return s};const Sn=Cn;function kn(e,t){const r=e.get("type"),n=e.get("subfeatures");if(n?.length&&"CDS"!==r){const t=n.find((e=>!!e.get("subfeatures")));return["mRNA","transcript","primary_transcript"].includes(r)&&n.some((e=>"CDS"===e.get("type")))?wn:!e.parent()&&t?Sn:gn}return t?.find((t=>t.validator(e)))?.glyph||pn}function Tn({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o}){const s=(0,i.readConfObject)(a,"displayMode"),l=xn({layout:e,feature:t,bpPerPx:r,reversed:n,config:a,extraGlyphs:o});return"reducedRepresentation"!==s&&An({layout:l,subfeatures:t.get("subfeatures")||[],bpPerPx:r,reversed:n,config:a,extraGlyphs:o}),l}function xn(e){const{layout:t,feature:r,bpPerPx:n,reversed:a,config:o,extraGlyphs:s}=e,l=(0,i.readConfObject)(o,"displayMode"),c="reducedRepresentation"===l?pn:kn(r,s),d=r.parent();let u=0;d&&(u=(a?d.get("end")-r.get("end"):r.get("start")-d.get("start"))/n);const p=(0,i.readConfObject)(o,"height",{feature:r}),m=(r.get("end")-r.get("start"))/n,g=t.parent,h=g?g.top:0;return t.addChild(String(r.id()),u,"collapse"===l?0:h,Math.max(m,1),"compact"===l?p/2:p,{GlyphComponent:c})}function An(e){const{layout:t,subfeatures:r,bpPerPx:n,reversed:a,config:o,extraGlyphs:i}=e;r.forEach((e=>{(kn(e,i).layOut||Tn)({layout:t,feature:e,bpPerPx:n,reversed:a,config:o,extraGlyphs:i})}))}function Pn(e){return/(\bUTR|_UTR|untranslated[_\s]region)\b/.test(e.get("type")||"")}function Mn(){return Mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Mn.apply(null,arguments)}function En(e){const{feature:t,detectRerender:r,bpPerPx:n,region:a,config:o,displayMode:s,layout:l,extraGlyphs:d}=e;r?.();const{reversed:u}=a,p=t.get(u?"end":"start"),m=(0,c.bpToPx)(p,a,n),g="collapsed"!==s,h=new rn.SceneGraph("root",0,0,0,0),f=(kn(t,d).layOut||Tn)({layout:h,feature:t,bpPerPx:n,reversed:u,config:o,extraGlyphs:d});let y=!1,b=!1,v="",C="",S=0,k=0;if(g){const e=(0,i.readConfObject)(o,"showLabels"),r=(0,i.readConfObject)(o,"showDescriptions");S=(0,i.readConfObject)(o,["labels","fontSize"],{feature:t}),k=(0,i.readConfObject)(o,"maxFeatureGlyphExpansion")||0,v=String((0,i.readConfObject)(o,["labels","name"],{feature:t})||""),y=/\S/.test(v)&&e;const n=e=>{const t=h.width+k,r=(0,c.measureText)(e,S);return Math.round(Math.min(r,t))};if(C=String((0,i.readConfObject)(o,["labels","description"],{feature:t})||""),b=/\S/.test(C)&&r,y&&h.addChild("nameLabel",0,f.bottom,n(v),S),b){const e=y?h.getSubRecord("nameLabel"):f;if(!e)throw new Error("failed to layout nameLabel");h.addChild("descriptionLabel",0,e.bottom,n(C),S)}}const T=l.addRect(t.id(),t.get("start"),t.get("start")+h.width*n+3*n,h.height+5);return null===T?null:(h.move(m,T),w.createElement(sn,Mn({rootLayout:h,name:v,shouldShowName:y,description:C,shouldShowDescription:b,fontHeight:S,allowedWidthExpansion:k,reversed:a.reversed,topLevel:!0},e)))}const Rn=(0,We.observer)((function(e){const{features:t=new Map,isFeatureDisplayed:r}=e;return w.createElement(w.Fragment,null,[...t.values()].filter((e=>!r||r(e))).map((t=>w.createElement(En,Mn({key:t.id(),feature:t},e)))))})),In=(0,We.observer)((function(e){const{layout:t,blockKey:r,regions:n=[],bpPerPx:a,config:o,displayModel:s={},exportSVG:l,featureDisplayHandler:c,onMouseOut:d,onMouseDown:u,onMouseLeave:p,onMouseEnter:m,onMouseOver:g,onMouseMove:h,onMouseUp:f,onClick:y}=e,b=n[0],v=(b.end-b.start)/a,C=(0,i.readConfObject)(o,"displayMode"),S=(0,i.readConfObject)(o,"maxHeight"),k=(0,w.useRef)(null),[T,x]=(0,w.useState)(!1),[A,P]=(0,w.useState)(S),[M,E]=(0,w.useState)(!1),R=(0,w.useCallback)((e=>(x(!0),E(!1),u?.(e))),[u]),I=(0,w.useCallback)((e=>(x(!1),f?.(e))),[f]),N=(0,w.useCallback)((e=>{if(!k.current)return;T&&E(!0);const{left:t,top:n}=k.current.getBoundingClientRect(),o=e.clientX-t,i=e.clientY-n,l=b.reversed?v-o:o,c=b.start+a*l,d=s.getFeatureOverlapping?.(r,c,i);h&&h(e,d)}),[r,a,T,h,b.reversed,b.start,s,v]),F=(0,w.useCallback)((e=>{M||y?.(e)}),[M,y]);return(0,w.useEffect)((()=>{P(t.getTotalHeight())}),[t]),l?w.createElement(Rn,Mn({displayMode:C,isFeatureDisplayed:c,region:b},e)):w.createElement("svg",{ref:k,"data-testid":"svgfeatures",width:v,height:A+100,style:{display:"block"},onMouseDown:R,onMouseUp:I,onMouseEnter:m,onMouseLeave:p,onMouseOver:g,onMouseOut:d,onMouseMove:N,onClick:F},w.createElement(Rn,Mn({displayMode:C,region:b,movedDuringLastMouseDown:M,isFeatureDisplayed:c},e)),w.createElement(dn,Mn({},e,{region:b,movedDuringLastMouseDown:M})))})),Nn=(0,i.ConfigurationSchema)("SvgFeatureRenderer",{color1:{type:"color",description:"the main color of each feature",defaultValue:"goldenrod",contextVariable:["feature"]},color2:{type:"color",description:"the secondary color of each feature, used for connecting lines, etc",defaultValue:"#f0f",contextVariable:["feature"]},color3:{type:"color",description:"the tertiary color of each feature, often used for contrasting fills, like on UTRs",defaultValue:"#357089",contextVariable:["feature"]},outline:{type:"color",description:"the outline for features",defaultValue:"",contextVariable:["feature"]},height:{type:"number",description:"height in pixels of the main body of each feature",defaultValue:10,contextVariable:["feature"]},showLabels:{type:"boolean",defaultValue:!0},showDescriptions:{type:"boolean",defaultValue:!0},labels:(0,i.ConfigurationSchema)("SvgFeatureLabels",{name:{type:"string",description:"the primary name of the feature to show, if space is available",defaultValue:"jexl:get(feature,'name') || get(feature,'id')",contextVariable:["feature"]},nameColor:{type:"color",description:"the color of the name label, if shown",defaultValue:"#f0f",contextVariable:["feature"]},description:{type:"string",description:"the text description to show, if space is available",defaultValue:"jexl:get(feature,'note') || get(feature,'description')",contextVariable:["feature"]},descriptionColor:{type:"color",description:"the color of the description, if shown",defaultValue:"blue",contextVariable:["feature"]},fontSize:{type:"number",description:"height in pixels of the text to use for names and descriptions",defaultValue:12,contextVariable:["feature"]}}),displayMode:{type:"stringEnum",model:d.types.enumeration("displayMode",["normal","compact","reducedRepresentation","collapse"]),description:"Alternative display modes",defaultValue:"normal"},maxFeatureGlyphExpansion:{type:"number",description:"maximum number of pixels on each side of a feature's bounding coordinates that a glyph is allowed to use",defaultValue:500},maxHeight:{type:"integer",description:"the maximum height to be used in a svg rendering",defaultValue:1200},subParts:{type:"string",description:"subparts for a glyph",defaultValue:"CDS,UTR,five_prime_UTR,three_prime_UTR"},impliedUTRs:{type:"boolean",description:"imply UTR from the exon and CDS differences",defaultValue:!1}},{explicitlyTyped:!0});class Fn extends Yt.default{supportsSVG=!0}class Ln extends a.A{name="SVGPlugin";install(e){e.addRendererType((()=>new Fn({name:"SvgFeatureRenderer",ReactComponent:In,configSchema:Nn,pluginManager:e})))}}var Dn=r(79230),Bn=r(17970);const Vn=(0,w.lazy)((()=>r.e(3384).then(r.bind(r,93384))));function zn(e,t){return d.types.compose("SharedGCContentModel",(0,Bn._i)(e,t),d.types.model({windowSize:d.types.maybe(d.types.number),windowDelta:d.types.maybe(d.types.number)})).actions((e=>({setGCContentParams({windowSize:t,windowDelta:r}){e.windowSize=t,e.windowDelta=r}}))).views((e=>({get windowSizeSetting(){return e.windowSize??(0,i.getConf)(e,"windowSize")},get windowDeltaSetting(){return e.windowDelta??(0,i.getConf)(e,"windowDelta")}}))).views((e=>{const{trackMenuItems:t,renderProps:r}=e;return{trackMenuItems:()=>[...t(),{label:"Change GC parameters",onClick:()=>{(0,c.getSession)(e).queueDialog((t=>[Vn,{model:e,handleClose:t}]))}}],renderProps(){const t=(0,i.getConf)(e.parentTrack,"adapter");return{...r(),adapterConfig:{type:"GCContentAdapter",sequenceAdapter:t,windowSize:e.windowSizeSetting,windowDelta:e.windowDeltaSetting}}}}}))}class On extends a.A{name="GCContentPlugin";install(e){var t;!function(e){e.addAdapterType((()=>new $.A({name:"GCContentAdapter",displayName:"GC content adapter",adapterMetadata:{hiddenFromGUI:!0},configSchema:(0,i.ConfigurationSchema)("GCContentAdapter",{sequenceAdapter:{type:"frozen",defaultValue:null},windowSize:{type:"number",defaultValue:100},windowDelta:{type:"number",defaultValue:100}},{explicitlyTyped:!0}),getAdapterClass:()=>r.e(9756).then(r.bind(r,49756)).then((e=>e.default))})))}(e),(t=e).addTrackType((()=>{const e=(e=>(0,i.ConfigurationSchema)("GCContentTrack",{},{baseConfiguration:(0,Q.createBaseTrackConfig)(e)}))(t);return new _t.A({name:"GCContentTrack",displayName:"GCContent track",configSchema:e,stateModel:(0,s.createBaseTrackModel)(t,"GCContentTrack",e)})})),function(e){e.addDisplayType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("LinearGCContentDisplay",{windowSize:{type:"number",defaultValue:100},windowDelta:{type:"number",defaultValue:100}},{baseConfiguration:e.getDisplayType("LinearWiggleDisplay").configSchema,explicitlyTyped:!0})}(e),r=function(e,t){return d.types.compose("LinearGCContentDisplay",zn(e,t),d.types.model({type:d.types.literal("LinearGCContentDisplay")}))}(e,t);return new Q.DisplayType({name:"LinearGCContentDisplay",configSchema:t,stateModel:r,displayName:"GC content display",trackType:"ReferenceSequenceTrack",viewType:"LinearGenomeView",ReactComponent:Bn.r})})),e.addDisplayType((()=>{const t=function(e){return(0,i.ConfigurationSchema)("LinearGCContentTrackDisplay",{windowSize:{type:"number",defaultValue:100},windowDelta:{type:"number",defaultValue:100}},{baseConfiguration:e.getDisplayType("LinearWiggleDisplay").configSchema,explicitlyTyped:!0})}(e),r=function(e,t){return d.types.compose("LinearGCContentTrackDisplay",zn(e,t),d.types.model({type:d.types.literal("LinearGCContentTrackDisplay")}))}(e,t);return new Q.DisplayType({name:"LinearGCContentTrackDisplay",configSchema:t,stateModel:r,displayName:"GC content display",trackType:"GCContentTrack",viewType:"LinearGenomeView",ReactComponent:Bn.r})}))}(e)}}var Hn=r(39494),jn=r(4449),Wn=r(43283),Gn=r(98360),$n=r(29629),qn=r(93117),_n=r(61723),Un=r(23550),Jn=r(31892);function Xn(e,{DataCellReactComponent:t=null,FilterModelType:r=null,compare:n,displayName:a,categoryName:o}){return d.types.model(`ColumnDataType${e}`,{type:d.types.literal(e)}).volatile((()=>({DataCellReactComponent:t,FilterModelType:r,displayName:a||e,categoryName:o}))).views((()=>({compare:n,get hasFilter(){return!!r}})))}const Yn=(0,He.n9)()({textFilterControlAdornment:{marginRight:"-18px"},textFilterControl:{"& .MuiInput-formControl":{marginTop:8},"& .MuiInputLabel-formControl":{top:"-7px","&.MuiInputLabel-shrink":{top:"-3px"}}}}),Kn=(0,We.observer)((function({filterModel:e}){const{classes:t}=Yn(),r=(0,Un.getEnumerationValues)((0,Un.getSubType)((0,Un.getPropertyType)((0,d.getPropertyMembers)(e),"operation")));return w.createElement(w.Fragment,null,w.createElement(Gn.A,{value:e.operation,onChange:t=>e.setOperation(String(t.target.value))},r.map((e=>w.createElement($n.A,{key:e,value:e},e))))," ",w.createElement(C.A,{label:"range",placeholder:"chr1:100-200",error:e.locStringIsInvalid,value:e.locString,onChange:t=>e.setLocString(t.target.value),className:t.textFilterControl,InputProps:{endAdornment:w.createElement(qn.A,{className:t.textFilterControlAdornment,position:"end"},w.createElement(_n.A,{"aria-label":"clear filter",onClick:()=>e.setLocString("")},w.createElement(Jn.A,null)))}}))})),Qn={"overlaps with":(e,t)=>e.refName===t.refName&&(0,c.doesIntersect2)(e.start,e.end,t.start,t.end),"contained within":(e,t)=>e.refName===t.refName&&(0,c.isContainedWithin)(e.start,e.end,t.start,t.end),"fully contains":(e,t)=>e.refName===t.refName&&(0,c.isContainedWithin)(t.start,t.end,e.start,e.end),"does not overlap":(e,t)=>!Qn["overlaps with"](e,t),"not contained within":(e,t)=>!Qn["contained within"](e,t),"does not contain":(e,t)=>!Qn["fully contains"](e,t)},Zn=d.types.model("ColumnLocStringFilter",{type:d.types.literal("LocString"),columnNumber:d.types.integer,locString:"",operation:d.types.optional(d.types.string,"overlaps with")}).views((e=>({get locStringIsInvalid(){if(e.locString){const e=this.parsedLocString;return!e||""===e.refName||"number"!=typeof e.start||"number"!=typeof e.end||e.start>e.end}return!1},get parsedLocString(){const t=(0,c.getSession)(e),r=(0,d.getParent)(e,3).spreadsheet,{assemblyName:n}=r;try{return(0,c.parseLocString)(e.locString,(e=>t.assemblyManager.isValidRefName(e,n)))}catch(e){return}}}))).views((e=>({get predicate(){const{locString:t,locStringIsInvalid:r,parsedLocString:n,operation:a,columnNumber:o}=e;return t&&!r&&n?function(e,t){const{cellsWithDerived:r}=t,i=r[o];if(!i?.text||!i.extendedData)return!1;const s=i.extendedData;if(!s.refName)return!1;const l=Qn[a];if(!l)throw new Error(`"${a}" not implemented in location filter`);return l(s,n)}:function(){return!0}}}))).actions((e=>({setLocString(t){e.locString=t},setOperation(t){e.operation=t}}))).volatile((()=>({ReactComponent:Kn}))),ea=Xn("LocString",{categoryName:"Location",displayName:"Full location",compare:(e,t)=>(0,c.compareLocs)(e.extendedData,t.extendedData),FilterModelType:Zn,DataCellReactComponent:(0,We.observer)((function({cell:e,columnNumber:t,spreadsheet:r}){return w.createElement("a",{onClick:async t=>{t.preventDefault();const n=(0,c.getSession)(r);try{await async function(e,t,r){const n=(0,c.getSession)(e),{assemblyName:a}=e,{id:o}=(0,d.getParent)(e),i=`${o}_${a}`;let s=n.views.find((e=>e.id===i));s||(s=n.addView("LinearGenomeView",{id:i})),await s.navToLocString(r.text,a)}(r,0,e)}catch(e){console.error(e),n.notifyError(`${e}`,e)}},title:"open a new linear genome view here",href:"#"},e.text)}))}),ta=["equals","contains","does not contain","does not equal","starts with","ends with"],ra={contains:(e,t)=>e.toLowerCase().includes(t),equals:(e,t)=>e.toLowerCase()===t,"starts with":(e,t)=>e.toLowerCase().startsWith(t),"ends with":(e,t)=>{const r=e.toLowerCase().indexOf(t);return-1!==r&&r===e.length-t.length},"does not contain":(e,t)=>!ra.contains(e,t),"does not equal":(e,t)=>!ra.equals(e,t)},na=(0,He.n9)()({textFilterControlAdornment:{marginRight:"-18px"},textFilterControl:{margin:0,"& .MuiInput-formControl":{marginTop:8},"& .MuiInputLabel-formControl":{top:"-7px","&.MuiInputLabel-shrink":{top:"-3px"}}}}),aa=(0,We.observer)((({filterModel:e})=>{const{classes:t}=na(),r=(0,Un.getEnumerationValues)((0,Un.getSubType)((0,Un.getPropertyType)((0,d.getPropertyMembers)(e),"operation")));return w.createElement(w.Fragment,null,w.createElement(Gn.A,{value:e.operation,onChange:t=>{e.setOperation(String(t.target.value))}},r.map((e=>w.createElement($n.A,{key:e,value:e},e))))," ",w.createElement(C.A,{label:"text",value:e.stringToFind,onChange:t=>e.setString(t.target.value),className:t.textFilterControl,InputProps:{endAdornment:w.createElement(qn.A,{className:t.textFilterControlAdornment,position:"end"},w.createElement(_n.A,{"aria-label":"clear filter",onClick:()=>e.setString("")},w.createElement(Jn.A,null)))}}))})),oa=d.types.model("ColumnTextFilter",{type:d.types.literal("Text"),columnNumber:d.types.integer,stringToFind:"",operation:d.types.optional(d.types.enumeration(ta),ta[0])}).views((e=>({get predicate(){const{stringToFind:t,columnNumber:r,operation:n}=e;if(!t)return function(){return!0};const a=t.toLowerCase();return function(e,t){const{cellsWithDerived:o}=t,i=o[r];if(!i?.text)return!1;const s=ra[n];if(!s)throw new Error(`"${n}" not implemented in location filter`);return s(i.text,a)}}}))).actions((e=>({setString(t){e.stringToFind=t},setOperation(t){e.operation=t}}))).volatile((()=>({ReactComponent:aa}))),ia=Xn("Text",{compare:(e,t)=>e.text.localeCompare(t.text),FilterModelType:oa}),sa=Xn("LocRef",{categoryName:"Location",displayName:"Reference seq",compare:(e,t)=>e.text.localeCompare(t.text),FilterModelType:d.types.compose(oa,d.types.model({type:d.types.literal("LocRef")}))}),la=["equals","greater than","less than","between","not between"],ca={equals:(e,t)=>e===t,"greater than":(e,t)=>e>t,"less than":(e,t)=>e<t,between:(e,t,r)=>e>t&&void 0!==r&&e<r,"not between":(e,t,r)=>!ca.between(e,t,r)},da=(0,He.n9)()({textFilterControlAdornment:{marginRight:"-18px"},textFilterControl:{"& .MuiInput-formControl":{marginTop:8},"& .MuiInputLabel-formControl":{top:"-7px","&.MuiInputLabel-shrink":{top:"-3px"}}}}),ua=(0,We.observer)((({filterModel:e})=>{const{classes:t}=da(),r=la;return w.createElement(w.Fragment,null,w.createElement(Gn.A,{value:e.operation,onChange:t=>e.setOperation(String(t.target.value))},r.map((e=>w.createElement($n.A,{key:e,value:e},e))))," ",w.createElement(C.A,{label:"number",placeholder:"123",type:"number",error:e.firstNumberIsInvalid,defaultValue:e.firstNumber,onChange:t=>{e.setFirstNumber(Number.parseFloat(t.target.value))},className:t.textFilterControl}),"between"!==e.operation&&"not between"!==e.operation?null:w.createElement(w.Fragment,null," and ",w.createElement(C.A,{label:"number",placeholder:"456",type:"number",error:e.secondNumberIsInvalid,defaultValue:e.secondNumber,onChange:t=>e.setSecondNumber(Number.parseFloat(t.target.value)),className:t.textFilterControl})))})),pa=d.types.model("ColumnNumberFilter",{type:d.types.literal("Number"),columnNumber:d.types.integer,firstNumber:d.types.maybe(d.types.number),secondNumber:d.types.maybe(d.types.number),operation:d.types.optional(d.types.enumeration(la),la[0])}).views((e=>({get predicate(){if("number"!=typeof e.firstNumber)return function(){return!0};const{firstNumber:t,secondNumber:r,operation:n,columnNumber:a}=e;return function(e,o){const{cellsWithDerived:i}=o,s=i[a];if(!s?.text)return!1;const l=Number.parseFloat(s.text);if("number"!=typeof l)return!1;const c=ca[n];if(!c)throw new Error(`"${n}" not implemented in location filter`);return c(l,t,r)}}}))).actions((e=>({setFirstNumber(t){e.firstNumber=Number.isNaN(t)||"number"!=typeof t?void 0:t},setSecondNumber(t){e.secondNumber=Number.isNaN(t)||"number"!=typeof t?void 0:t},setOperation(t){e.operation=t}}))).volatile((()=>({ReactComponent:ua}))),ma={Number:Xn("Number",{compare:(e,t)=>Number.parseFloat(e.text)-Number.parseFloat(t.text),FilterModelType:pa}),Text:ia,LocString:ea,LocRef:sa,LocStart:Xn("LocStart",{categoryName:"Location",displayName:"Start",compare:(e,t)=>Number.parseFloat(e.text)-Number.parseFloat(t.text),FilterModelType:d.types.compose(pa,d.types.model({type:d.types.literal("LocStart")}))}),LocEnd:Xn("LocEnd",{categoryName:"Location",displayName:"End",compare:(e,t)=>Number.parseFloat(e.text)-Number.parseFloat(t.text),FilterModelType:d.types.compose(pa,d.types.model({type:d.types.literal("LocEnd")}))})},ga=Object.values(ma),ha=d.types.union(...ga),fa=d.types.union(...ga.map((e=>{const{FilterModelType:t}=e.create({type:e.properties.type.value});return t})).filter((e=>!!e))),ya=d.types.model("SpreadsheetCell",{text:d.types.string,extendedData:d.types.maybe(d.types.frozen())}),ba=d.types.model("SpreadsheetRow",{id:d.types.identifier,cells:d.types.array(ya),extendedData:d.types.maybe(d.types.frozen()),isSelected:!1}).actions((e=>({toggleSelect(){e.isSelected=!e.isSelected},unSelect(){e.isSelected=!1},select(){e.isSelected=!0},setExtendedData(t){e.extendedData=t}}))).views((e=>({get cellsWithDerived(){const{columns:t}=(0,d.getParent)(e,3);let r=0;return t.map((t=>t.isDerived?t.expr.evalSync({row:e}):e.cells[r++]))}}))),wa=d.types.model("StaticRowSet",{isLoaded:d.types.literal(!0),rows:d.types.array(ba)}).views((e=>({get count(){return e.rows.length},get passingFiltersCount(){return this.sortedFilteredRows.length},get selectedCount(){return this.selectedRows.length},get selectedAndPassingFiltersCount(){return this.selectedFilteredRows.length},get sortedRows(){const t=(0,d.getParent)(e);return[...e.rows].sort(t.rowSortingComparisonFunction)},get selectedRows(){return e.rows.filter((e=>e.isSelected))},get selectedFilteredRows(){const t=(0,d.getParent)(e),r=(0,d.getParent)(t),{filterControls:n}=r;return this.selectedRows.filter((e=>n.rowPassesFilters(t,e)))},get sortedFilteredRows(){const t=(0,d.getParent)(e),r=(0,d.getParent)(t),{filterControls:n}=r;return e.rows.filter((e=>n.rowPassesFilters(t,e))).sort(t.rowSortingComparisonFunction)}}))).actions((e=>({unselectAll(){e.rows.forEach((e=>{e.unSelect()}))}}))),va=d.types.model("ColumnDefinition",{name:d.types.maybe(d.types.string),dataType:d.types.optional(ha,(()=>({type:"Text"}))),isDerived:!1,derivationFunctionText:d.types.maybe(d.types.string)}).views((e=>({get expr(){if(e.isDerived)return(0,Wn.A)(String(e.derivationFunctionText),(0,c.getEnv)(e).pluginManager.jexl)}}))),Ca=d.types.model("Spreadsheet",{rowSet:d.types.optional(wa,(()=>wa.create())),columns:d.types.array(va),columnDisplayOrder:d.types.array(d.types.number),hasColumnNames:!1,sortColumns:d.types.array(d.types.model("SortColumns",{columnNumber:d.types.number,descending:!1}).actions((e=>({switchDirection(){e.descending=!e.descending}})))),assemblyName:d.types.maybe(d.types.string)}).volatile((()=>({defaultDataType:ma.Text,rowMenuPosition:null,isLoaded:!1}))).views((e=>({get initialized(){const t=(0,c.getSession)(e),r=e.assemblyName;return!!r&&t.assemblyManager.get(r)?.initialized},get hideRowSelection(){return(0,d.getParent)(e).hideRowSelection},get dataTypeChoices(){return Object.keys(ma).map((e=>{const t=ma[e].create({type:e}),{displayName:r,categoryName:n}=t;return{typeName:e,displayName:r,categoryName:n}}))},rowSortingComparisonFunction(t,r){for(const{columnNumber:n,descending:a}of e.sortColumns){const{dataType:o}=e.columns[n],i=o.compare(t.cellsWithDerived[n],r.cellsWithDerived[n]);if(i)return a?-i:i}return 0}}))).actions((e=>({afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((async()=>{const t=(0,c.getSession)(e),{assemblyManager:r}=t;try{e.assemblyName&&(await r.waitForAssembly(e.assemblyName),this.setLoaded(!0))}catch(r){t.notify(`failed to load assembly ${e.assemblyName} ${r}`,"error")}})))},setLoaded(t){e.isLoaded=t},setRowMenuPosition(t){e.rowMenuPosition=t},setSortColumns(t){t&&(e.sortColumns=t)},setColumnType(t,r){e.columns[t].dataType={type:r}},unselectAll(){e.rowSet.unselectAll()}}))),Sa=["CSV","TSV","VCF","BED","BEDPE","STAR-Fusion"],ka={CSV:()=>r.e(9870).then(r.bind(r,59870)).then((e=>e.parseCsvBuffer)),TSV:()=>r.e(9870).then(r.bind(r,59870)).then((e=>e.parseTsvBuffer)),VCF:()=>r.e(9314).then(r.bind(r,99314)).then((e=>e.parseVcfBuffer)),BED:()=>r.e(6310).then(r.bind(r,6310)).then((e=>e.parseBedBuffer)),BEDPE:()=>r.e(6310).then(r.bind(r,6310)).then((e=>e.parseBedPEBuffer)),"STAR-Fusion":()=>r.e(759).then(r.bind(r,759)).then((e=>e.parseSTARFusionBuffer))},Ta=new RegExp(`\\.(${Sa.join("|")})(\\.gz)?$`,"i"),xa=d.types.model("SpreadsheetImportWizard",{fileType:d.types.optional(d.types.enumeration(Sa),"CSV"),hasColumnNameLine:!0,columnNameLineNumber:1,selectedAssemblyName:d.types.maybe(d.types.string)}).volatile((()=>({fileTypes:Sa,fileSource:void 0,error:void 0,loading:!1}))).views((e=>({get isReadyToOpen(){return!e.error&&e.fileSource&&(e.fileSource.blobId||e.fileSource.localPath||e.fileSource.uri)},get canCancel(){return(0,d.getParent)(e).readyToDisplay},get fileName(){return e.fileSource.uri||e.fileSource.localPath||e.fileSource.blobId&&e.fileSource.name},get requiresUnzip(){return this.fileName.endsWith("gz")},isValidRefName(t,r){const{assemblyManager:n}=(0,c.getSession)(e);return!!r&&n.isValidRefName(t,r)}}))).actions((e=>({setSelectedAssemblyName(t){e.selectedAssemblyName=t},setFileSource(t){if(e.fileSource=t,e.error=void 0,e.fileSource){const t=e.fileName;if(t){const r=Ta.exec(t)?.[1];r&&(e.fileType="tsv"===r&&t.includes("star-fusion")?"STAR-Fusion":r.toUpperCase())}}},toggleHasColumnNameLine(){e.hasColumnNameLine=!e.hasColumnNameLine},setColumnNameLineNumber(t){t>0&&(e.columnNameLineNumber=t)},setFileType(t){e.fileType=t},setError(t){console.error(t),e.loading=!1,e.error=t},setLoaded(){e.loading=!1,e.error=void 0},cancelButton(){e.error=void 0,(0,d.getParent)(e).setDisplayMode()},async import(t){if(!e.fileSource)return;if(e.loading)throw new Error("Cannot import, load already in progress");e.selectedAssemblyName=t,e.loading=!0;const n=e.fileType,a=await ka[n](),{unzip:o}=await Promise.all([r.e(7864),r.e(9086),r.e(7706)]).then(r.bind(r,7706)),{pluginManager:i}=(0,c.getEnv)(e),s=(0,z.openLocation)(e.fileSource,i);try{if((await s.stat()).size>3e7)throw new Error(`File is too big. Tabular files are limited to at most ${3e4.toLocaleString()}kb.`)}catch(e){console.warn(e)}try{await s.readFile().then((t=>e.requiresUnzip?o(t):t)).then((t=>a(t,e))).then((t=>{this.setLoaded(),(0,d.getParent)(e).displaySpreadsheet(t)}))}catch(e){this.setError(e)}}}))),Aa=xa,Pa=d.types.model("RowFullTextFilter",{type:d.types.literal("RowFullText"),stringToFind:""}).views((e=>({get predicate(){let t=e.stringToFind;return t?(t=t.toLowerCase(),function(e,r){const{cellsWithDerived:n}=r;for(const e of n)if(e.text.toLowerCase().includes(t))return!0;return!1}):function(){return!0}}}))).actions((e=>({setString(t){e.stringToFind=t},clear(){e.stringToFind=""}}))),Ma=d.types.model("SpreadsheetFilterControls",{rowFullText:d.types.optional(Pa,(()=>({type:"RowFullText",stringToFind:""}))),columnFilters:d.types.array(fa)}).views((e=>({get filters(){return[e.rowFullText,...e.columnFilters].filter((e=>!!e))},setRowFullTextFilter(t){e.rowFullText={type:"RowFullText",stringToFind:t}},rowPassesFilters(e,t){for(const r of this.filters)if(!r.predicate(e,t))return!1;return!0}}))).actions((e=>({addBlankColumnFilter(t){const{dataType:r}=(0,d.getParent)(e).spreadsheet.columns[t];e.columnFilters.push({type:r.type,columnNumber:t})},removeColumnFilter:t=>e.columnFilters.remove(t),clearAllFilters(){e.columnFilters.clear(),e.rowFullText.clear()}}))),Ea=[{label:"Toggle select",icon:jn.A,onClick(e,t){const r=t.rowMenuPosition?.rowNumber;void 0!==r&&t.rowSet.rows[+r-1].toggleSelect()}}],Ra=d.types.model("SpreadsheetView",{type:d.types.literal("SpreadsheetView"),offsetPx:0,height:d.types.optional(d.types.refinement("SpreadsheetViewHeight",d.types.number,(e=>e>=40)),440),hideVerticalResizeHandle:!1,hideFilterControls:!1,filterControls:d.types.optional(Ma,(()=>Ma.create({}))),mode:d.types.optional(d.types.enumeration("SpreadsheetViewMode",["import","display"]),"import"),importWizard:d.types.optional(Aa,(()=>Aa.create())),spreadsheet:d.types.maybe(Ca)}).volatile((()=>({width:400,rowMenuItems:Ea}))).views((e=>({get readyToDisplay(){return!!e.spreadsheet&&e.spreadsheet.isLoaded},get hideRowSelection(){return!!(0,d.getEnv)(e).hideRowSelection},get outputRows(){if(e.spreadsheet?.rowSet.isLoaded){const t=e.spreadsheet.rowSet.selectedFilteredRows;return t.length?t:e.spreadsheet.rowSet.sortedFilteredRows}},get assembly(){const t=e.spreadsheet?.assemblyName;if(t)return(0,c.getSession)(e).assemblies.find((e=>(0,i.readConfObject)(e,"name")===t))}}))).actions((e=>({setRowMenuItems(t){e.rowMenuItems=t},setWidth:t=>(e.width=t,e.width),setHeight:t=>(e.height=t>40?t:40,e.height),resizeHeight(t){const r=e.height;return this.setHeight(e.height+t)-r},resizeWidth(t){const r=e.width;return this.setWidth(e.width+t)-r},displaySpreadsheet(t){e.filterControls.clearAllFilters(),e.spreadsheet=(0,d.cast)(t),e.mode="display"},setImportMode(){e.mode="import"},setDisplayMode(){e.readyToDisplay&&(e.mode="display")}}))).views((e=>({menuItems:()=>[{label:"Return to import form",onClick:()=>{e.setImportMode()},icon:Me.A}]}))),Ia=d.types.compose(s.BaseViewModel,Ra);class Na extends a.A{name="SpreadsheetViewPlugin";install(e){!function(e){e.addViewType((()=>new Q.ViewType({name:"SpreadsheetView",displayName:"Spreadsheet view",stateModel:Ia,ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(8565),r.e(3682),r.e(8546)]).then(r.bind(r,78546))))})))}(e),function(e){e.addToExtensionPoint("LaunchView-SpreadsheetView",(async({session:e,assembly:t,uri:r,fileType:n})=>{const a=e.addView("SpreadsheetView"),o=r.split(".");let i=o.pop()?.toUpperCase();"GZ"===i&&(i=o.pop()?.toUpperCase()),a.importWizard.setFileType(n||i||""),a.importWizard.setSelectedAssemblyName(t),a.importWizard.setFileSource({uri:r,locationType:"UriLocation"}),await a.importWizard.import(t)}))}(e)}configure(e){const{rootModel:t}=e;(0,c.isAbstractMenuManager)(t)&&t.appendToSubMenu(["Add"],{label:"Spreadsheet view",icon:Hn.A,onClick:e=>{e.addView("SpreadsheetView",{})}})}}var Fa=r(92516),La=r(67393),Da=r(67314),Ba=r(33371),Va=r(32808);const za=(0,He.n9)()((e=>({circularViewOptions:{padding:e.spacing(1)}}))),Oa=(0,We.observer)((function({svInspector:e}){const{classes:t}=za();return w.createElement(Da.Ay,{container:!0,className:t.circularViewOptions,style:{height:e.circularViewOptionsBarHeight}},w.createElement(Da.Ay,{item:!0},w.createElement(Ba.A,{control:w.createElement(Va.A,{checked:e.onlyDisplayRelevantRegionsInCircularView,onChange:t=>{e.setOnlyDisplayRelevantRegionsInCircularView(t.target.checked)}}),label:"show only regions with data"})))})),Ha=(0,He.n9)()((e=>({resizeHandleVert:{background:e.palette.action.selected,width:4,boxSizing:"border-box",borderTop:"1px solid #fafafa"},resizeHandleHoriz:{background:e.palette.action.selected,height:4,boxSizing:"border-box",borderTop:"1px solid #fafafa"},viewControls:{margin:0},viewsContainer:{display:"flex"},container:{overflow:"hidden"}}))),ja=(0,We.observer)((function({model:e}){const{classes:t}=Ha(),{SpreadsheetViewReactComponent:r,CircularViewReactComponent:n,showCircularView:a}=e;return w.createElement("div",{className:t.container},w.createElement("div",{className:t.viewsContainer},w.createElement("div",{style:{width:e.spreadsheetView.width},className:t.container},w.createElement(r,{model:e.spreadsheetView})),a?w.createElement(w.Fragment,null,w.createElement(T.ResizeHandle,{onDrag:t=>{const r=e.circularView.resizeWidth(-t);return e.spreadsheetView.resizeWidth(-r)},vertical:!0,flexbox:!0,className:t.resizeHandleVert}),w.createElement("div",{style:{width:e.circularView.width}},w.createElement(Oa,{svInspector:e}),w.createElement(n,{model:e.circularView}))):null),w.createElement(T.ResizeHandle,{onDrag:e.resizeHeight,className:t.resizeHandleHoriz}))})),Wa=ja;var Ga=r(52686);function $a(e,t,r,n,a,o){const i={};return e.forEach(((e,n)=>{if(t.includes(n))return;let{text:a}=r.cells[n];"Number"===e.dataType.type&&(a=Number.parseFloat(a)),i[e.name]=a})),{...i,uniqueId:`sv-inspector-adhoc-${o}`,refName:n.refName,start:n.start,end:n.end,mate:{refName:a.refName,start:a.start,end:a.end}}}function qa(e,t,r,n){return r.extendedData?.vcfFeature||r.extendedData?.feature||function(e,t,r,n){const{columns:a,columnDisplayOrder:o}=e,i={};o.forEach((e=>{const t=a[e];i[t.dataType.type]||(i[t.dataType.type]=[]),i[t.dataType.type].push(e)}));const s=i.LocString||[],l=i.LocStart||[],d=i.LocEnd||[],u=i.LocRef||[];return s.length>=2?function(e,t,r,n,a){const o=(0,c.parseLocString)(r.cells[t[0]].text,a),i=(0,c.parseLocString)(r.cells[t[1]].text,a);return $a(e,[t[0],t[1]],r,o,i,n)}(a,s,r,t,n):u.length>=2&&l.length>=2&&d.length>=2?function(e,t,r,n,a,o){const i=e=>a.cells[e].text,s={refName:i(t[0]),start:Number.parseInt(i(r[0]),10)-1,end:Number.parseInt(i(n[0]),10)},l={refName:i(t[1]),start:Number.parseInt(i(r[1]),10)-1,end:Number.parseInt(i(n[1]),10)};return $a(e,[t[0],r[0],n[0],t[1],r[1],n[1]],a,s,l,o)}(a,u,l,d,r,t):void 0}(t.spreadsheet,n,r,e.assemblyManager.isValidRefName)}function _a(e,t,r,n,a){const{pluginManager:o}=(0,c.getEnv)(e),i=(0,c.getSession)(t),s=qa(i,r,n,a);if(s){const t=new c.SimpleFeature(s);return i.setSelection(t),o.getViewType("BreakpointSplitView").snapshotFromBreakendFeature(t,e.circularView)}}function Ua(e,t,r){const n=(0,c.getSession)(t);n.setSelection(e);const a=(0,c.getContainingView)(t),o=r.getViewType("BreakpointSplitView").snapshotFromBreakendFeature(e,a);o.views[0].offsetPx-=a.width/2+100,o.views[1].offsetPx-=a.width/2+100,n.addView("BreakpointSplitView",o)}class Ja extends a.A{name="SvInspectorViewPlugin";install(e){!function(e){e.jexl.addFunction("defaultOnChordClick",Ua),e.addViewType((()=>{const t=function(e){const t=e.getViewType("SpreadsheetView"),r=e.getViewType("CircularView"),n=t.stateModel,a=r.stateModel;return d.types.compose("SvInspectorView",s.BaseViewModel,d.types.model({id:K.ElementId,type:d.types.literal("SvInspectorView"),height:d.types.optional(d.types.refinement("SvInspectorViewHeight",d.types.number,(e=>e>=400)),550),onlyDisplayRelevantRegionsInCircularView:!1,mode:d.types.optional(d.types.enumeration("SvInspectorViewMode",["import","display"]),"import"),spreadsheetView:d.types.optional(n,(()=>n.create({type:"SpreadsheetView",hideVerticalResizeHandle:!0}))),circularView:d.types.optional(a,(()=>a.create({type:"CircularView",hideVerticalResizeHandle:!0,hideTrackSelectorButton:!0,disableImportForm:!0})))})).volatile((()=>({width:800}))).views((e=>({get selectedRows(){return e.spreadsheetView.spreadsheet?.rowSet.selectedRows},get assemblyName(){const{assembly:t}=e.spreadsheetView;return t?(0,i.readConfObject)(t,"name"):void 0},get showCircularView(){return"display"===e.spreadsheetView.mode},get features(){const t=(0,c.getSession)(e),{spreadsheetView:r}=e,{outputRows:n=[]}=r;return n.map(((e,n)=>qa(t,r,e,n))).filter((e=>!!e))},get featuresAdapterConfigSnapshot(){return{type:"FromConfigAdapter",features:this.features}},get featureRefNames(){return[...this.features.map((e=>e.refName)),...this.features.flatMap((e=>e.INFO?.CHR2)).filter((e=>!!e))]},get featuresCircularTrackConfiguration(){return{type:"VariantTrack",trackId:`sv-inspector-variant-track-${e.id}`,name:"features from tabular data",adapter:this.featuresAdapterConfigSnapshot,assemblyNames:[this.assemblyName],displays:[{type:"ChordVariantDisplay",displayId:`sv-inspector-variant-track-chord-display-${e.id}`,onChordClick:"jexl:defaultOnChordClick(feature, track, pluginManager)",renderer:{type:"StructuralVariantChordRenderer"}}]}}}))).volatile((()=>({SpreadsheetViewReactComponent:t.ReactComponent,CircularViewReactComponent:r.ReactComponent,circularViewOptionsBarHeight:52}))).actions((e=>({setWidth(t){e.width=t},setHeight:t=>(e.height=t>400?t:400,e.height),setImportMode(){e.spreadsheetView.setImportMode()},setDisplayMode(){e.spreadsheetView.setDisplayMode()},setDisplayedRegions(t){e.circularView.setDisplayedRegions(t)},setOnlyDisplayRelevantRegionsInCircularView(t){e.onlyDisplayRelevantRegionsInCircularView=Boolean(t)}}))).views((e=>({menuItems:()=>[{label:"Return to import form",onClick:()=>{e.setImportMode()},icon:Me.A}]}))).actions((e=>({resizeHeight(t){const r=e.height;return e.setHeight(e.height+t)-r},afterAttach(){(0,d.addDisposer)(e,(0,ae.autorun)((()=>{if(e.showCircularView){const t=Math.round(.66*e.width),r=e.width-t;e.spreadsheetView.setWidth(t-1),e.circularView.setWidth(r)}else e.spreadsheetView.setWidth(e.width)}),{name:"SvInspectorView width binding"})),(0,d.addDisposer)(e,(0,ae.autorun)((()=>{e.spreadsheetView.setHeight(e.height-52),e.circularView.setHeight(e.height-52-52)}),{name:"SvInspectorView height binding"})),(0,d.addDisposer)(e,(0,ae.autorun)((async()=>{const{assemblyName:t,onlyDisplayRelevantRegionsInCircularView:r,circularView:n,featureRefNames:a}=e,{tracks:o}=n,{assemblyManager:i}=(0,c.getSession)(e);if(!t)return;const s=await i.waitForAssembly(t);if(!s)return;const{getCanonicalRefName:l,regions:d=[]}=s;if(r){if(1===o.length)try{const e=new Set(a.map((e=>l(e)||e)));n.setDisplayedRegions(Ye()(d.filter((t=>e.has(t.refName)))))}catch(e){n.setError(e)}}else n.setDisplayedRegions(d)}),{name:"SvInspectorView displayed regions bind"})),(0,d.addDisposer)(e,(0,ae.reaction)((()=>({generatedTrackConf:e.featuresCircularTrackConfiguration,assemblyName:e.assemblyName})),(t=>{const{assemblyName:r,generatedTrackConf:n}=t,{circularView:a}=e;a.tracks.forEach((e=>a.hideTrack(e.configuration.trackId))),r&&a.addTrackConf(n,{assemblyName:r})}),{name:"SvInspectorView track configuration binding",fireImmediately:!0})),(0,d.addDisposer)(e,(0,ae.autorun)((()=>{e.spreadsheetView.setRowMenuItems([{label:"Open split detail view",icon:Ga.A,disabled:(t,r,n,a)=>!function(e,t,r,n,a){try{return Boolean(_a(e,t,r,n,a))}catch(e){return console.error("Unable to open breakpoint split view from table row",e),!1}}(e,t,r,a,n),onClick(t,r,n,a){!function(e,t,r,n,a){const o=_a(e,t,r,n,a);if(o){const{circularView:r}=e;o.views[0].offsetPx-=r.width/2+100,o.views[1].offsetPx-=r.width/2+100,(0,c.getSession)(t).addView("BreakpointSplitView",o)}}(e,t,r,a,n)}}])})))}})))}(e);return new te.A({name:"SvInspectorView",displayName:"SV inspector",stateModel:t,ReactComponent:Wa})}))}(e),function(e){e.addToExtensionPoint("LaunchView-SvInspectorView",(async({session:e,assembly:t,uri:r,fileType:n})=>{const a=e.addView("SvInspectorView"),o=r.split(".");let i=o.pop()?.toUpperCase();"GZ"===i&&(i=o.pop()?.toUpperCase()),a.spreadsheetView.importWizard.setFileType(n||i||""),a.spreadsheetView.importWizard.setSelectedAssemblyName(t),a.spreadsheetView.importWizard.setFileSource({uri:r,locationType:"UriLocation"}),await a.spreadsheetView.importWizard.import(t)}))}(e)}configure(e){(0,Fa.Nh)(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"SV inspector",icon:La.A,onClick:e=>{e.addView("SvInspectorView",{})}})}}var Xa=r(87485);function Ya(){return Ya=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ya.apply(null,arguments)}const Ka=(0,We.observer)((function(e){const{width:t,height:r}=e,n=Math.ceil(t);return w.createElement("div",{style:{position:"relative",width:n,height:r}},w.createElement(T.PrerenderedCanvas,Ya({},e,{style:{position:"absolute",left:0,top:0}})))})),Qa=(0,i.ConfigurationSchema)("HicRenderer",{baseColor:{type:"color",description:"base color to be used in the hic alignment",defaultValue:"#f00"},color:{type:"color",description:"the color of each feature in a hic alignment",defaultValue:"jexl:interpolate(count,scale)",contextVariable:["count","maxScore","baseColor","scale"]},maxHeight:{type:"integer",description:"the maximum height to be used in a hic rendering",defaultValue:600}},{explicitlyTyped:!0});var Za=r(198),eo=r(98506),to=r(82088),ro=r(3496),no=r(44728);class ao extends Za.default{supportsSVG=!0;async render(e){const{config:t,regions:n,bpPerPx:a}=e,o=n[0],s=(o.end-o.start)/a,l=(0,i.readConfObject)(t,"maxHeight"),c=await this.getFeatures(e),{makeImageData:d}=await r.e(9088).then(r.bind(r,49088)),u=await(0,eo.u1)(s,l,e,(t=>d(t,{...e,features:c,pluginManager:this.pluginManager})));return{...await super.render({...e,...u,features:c,region:e.regions[0],height:l,width:s}),...u,height:l,width:s}}async getFeatures(e){const{regions:t,sessionId:r,adapterConfig:n}=e,{dataAdapter:a}=await(0,ro.cK)(this.pluginManager,r,n);return await(0,no._)(a.getFeatures(t[0],e).pipe((0,to.$)()))}}function oo(e){return d.types.compose("LinearHicDisplay",Rt.Lr,d.types.model({type:d.types.literal("LinearHicDisplay"),configuration:(0,i.ConfigurationReference)(e),resolution:d.types.optional(d.types.number,1),useLogScale:!1,colorScheme:d.types.maybe(d.types.string)})).views((e=>{const{renderProps:t}=e;return{get blockType(){return"dynamicBlocks"},get rendererTypeName(){return"HicRenderer"},renderProps(){const r=e.rendererType.configSchema.create({...(0,i.getConf)(e,"renderer"),...e.colorScheme?{color:"jexl:interpolate(count,scale)"}:{}},(0,d.getEnv)(e));return{...t(),config:r,rpcDriverName:e.rpcDriverName,displayModel:e,resolution:e.resolution,useLogScale:e.useLogScale,colorScheme:e.colorScheme}}}})).actions((e=>({setResolution(t){e.resolution=t},setUseLogScale(t){e.useLogScale=t},setColorScheme(t){e.colorScheme=t}}))).views((e=>{const{trackMenuItems:t}=e;return{trackMenuItems:()=>[...t(),{label:"Use log scale",type:"checkbox",checked:e.useLogScale,onClick:()=>{e.setUseLogScale(!e.useLogScale)}},{label:"Color scheme",type:"subMenu",subMenu:[{label:"Fall",onClick:()=>{e.setColorScheme("fall")}},{label:"Viridis",onClick:()=>{e.setColorScheme("viridis")}},{label:"Juicebox",onClick:()=>{e.setColorScheme("juicebox")}},{label:"Clear",onClick:()=>{e.setColorScheme(void 0)}}]},{label:"Resolution",subMenu:[{label:"Finer resolution",onClick:()=>{e.setResolution(2*e.resolution)}},{label:"Coarser resolution",onClick:()=>{e.setResolution(e.resolution/2)}}]}]}}))}const io=(0,i.ConfigurationSchema)("HicAdapter",{hicLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.hic",locationType:"UriLocation"}}},{explicitlyTyped:!0});class so extends a.A{name="HicPlugin";install(e){!function(e){e.addAdapterType((()=>new Q.AdapterType({name:"HicAdapter",displayName:"Hi-C adapter",configSchema:io,getAdapterClass:()=>Promise.all([r.e(6514),r.e(937)]).then(r.bind(r,90937)).then((e=>e.default))})))}(e),function(e){e.addRendererType((()=>new ao({name:"HicRenderer",ReactComponent:Ka,configSchema:Qa,pluginManager:e})))}(e),function(e){e.addTrackType((()=>{const t=(e=>(0,i.ConfigurationSchema)("HicTrack",{},{baseConfiguration:(0,Q.createBaseTrackConfig)(e)}))(e);return new _t.A({name:"HicTrack",displayName:"Hi-C track",configSchema:t,stateModel:(0,s.createBaseTrackModel)(e,"HicTrack",t)})}))}(e),function(e){e.addDisplayType((()=>{const t=(e=>(0,i.ConfigurationSchema)("LinearHicDisplay",{renderer:e.getRendererType("HicRenderer").configSchema},{baseConfiguration:Rt.Ki,explicitlyTyped:!0}))(e);return new Q.DisplayType({name:"LinearHicDisplay",displayName:"Hi-C contact matrix display",configSchema:t,stateModel:oo(t),trackType:"HicTrack",viewType:"LinearGenomeView",ReactComponent:Rt.GQ})}))}(e),e.addToExtensionPoint("Core-guessAdapterForLocation",(e=>(t,r,n)=>{const a="HicAdapter",o=(0,X.getFileName)(t),i={type:a,hicLocation:t};return/\.hic/i.test(o)&&!n||n===a?i:e(t,r,n)})),e.addToExtensionPoint("Core-guessTrackTypeForLocation",(e=>t=>"HicAdapter"===t?"HicTrack":e(t)))}configure(e){const{jexl:t}=e;t.addFunction("alpha",((e,t)=>e.alpha(t))),t.addFunction("hsl",(e=>(0,Xa.M)(e.toHsl()))),t.addFunction("colorString",(e=>e.toHex())),t.addFunction("interpolate",((e,t)=>t(e)))}}const lo=(0,i.ConfigurationSchema)("TrixTextSearchAdapter",{ixFilePath:{type:"fileLocation",defaultValue:{uri:"out.ix",locationType:"UriLocation"},description:"the location of the trix ix file"},ixxFilePath:{type:"fileLocation",defaultValue:{uri:"out.ixx",locationType:"UriLocation"},description:"the location of the trix ixx file"},metaFilePath:{type:"fileLocation",defaultValue:{uri:"meta.json",locationType:"UriLocation"},description:"the location of the metadata json file for the trix index"},tracks:{type:"stringArray",defaultValue:[],description:"List of tracks covered by text search adapter"},assemblyNames:{type:"stringArray",defaultValue:[],description:"List of assemblies covered by text search adapter"}},{explicitlyTyped:!0,explicitIdentifier:"textSearchAdapterId"});class co extends a.A{name="TrixPlugin";install(e){e.addTextSearchAdapterType((()=>new Tt.A({name:"TrixTextSearchAdapter",displayName:"Trix text search adapter",configSchema:lo,description:"Trix text search adapter",getAdapterClass:()=>r.e(5260).then(r.bind(r,15260)).then((e=>e.default))})))}}var uo=r(11353),po=r(29948),mo=r(17037),go=r(95947);const ho=d.types.compose(K.Region,d.types.model("Label",{label:d.types.optional(d.types.string,""),highlight:d.types.optional(d.types.string,"rgba(247, 129, 192, 0.35)")})).actions((e=>({setLabel(t){e.label=t},setHighlight(t){e.highlight=t}}))),fo=d.types.model("SharedBookmarksModel",{sharedBookmarks:d.types.maybe(d.types.array(ho))}),yo=()=>"undefined"!=typeof window?`bookmarks-${[window.location.host+window.location.pathname].join("-")}`:"empty";var bo=r(89003),wo=r(23758);const vo=(0,He.n9)()({highlight:{overflow:"hidden",height:"100%",position:"absolute",zIndex:100,pointerEvents:"none"},highlightButton:{pointerEvents:"auto"}}),Co=(0,We.observer)((function({model:e}){const{classes:t}=vo(),r=(0,c.getSession)(e),{assemblyManager:n}=r,{showBookmarkHighlights:a,showBookmarkLabels:o}=e,i=r.widgets.get("GridBookmark");(0,w.useEffect)((()=>{i||r.addWidget("GridBookmarkWidget","GridBookmark")}),[r,i]);const s=new Set(e.assemblyNames);return a&&i?.bookmarks?i.bookmarks.filter((e=>s.has(e.assemblyName))).map((t=>{const r=n.get(t.assemblyName),a=r?.getCanonicalRefName(t.refName)??t.refName,o=e.bpToPx({refName:a,coord:t.start}),i=e.bpToPx({refName:a,coord:t.end});return o&&i?{width:Math.max(Math.abs(i.offsetPx-o.offsetPx),3),left:Math.min(o.offsetPx,i.offsetPx)-e.offsetPx,highlight:t.highlight,label:t.label,bookmark:t}:void 0})).filter(c.notEmpty).map((({left:e,width:n,highlight:a,label:s,bookmark:l},c)=>w.createElement("div",{key:`${e}_${n}_${c}`,className:t.highlight,style:{left:e,width:n,background:a}},o?w.createElement("div",{className:t.highlightButton},w.createElement(wo.A,{menuItems:[{label:"Open bookmark widget",onClick:()=>{r.showWidget(i)}},{label:"Remove bookmark",onClick:()=>{i.removeBookmarkObject(l)}}]},w.createElement(bo.A,{title:s,arrow:!0},w.createElement(uo.A,{fontSize:"small",sx:{color:0!==(0,Xa.M)(a).alpha()?(0,Xa.M)(a).alpha(.8).toRgbString():(0,Xa.M)(a).alpha(0).toRgbString()}})))):null))):null})),So=Co,ko=(0,He.n9)()({highlight:{height:"100%",position:"absolute"}}),To=(0,We.observer)((function({model:e,overview:t}){const{cytobandOffset:r}=e,n=(0,c.getSession)(e),{classes:a}=ko(),{assemblyManager:o}=n,{showBookmarkHighlights:i,showBookmarkLabels:s}=e,l=n.widgets.get("GridBookmark");(0,w.useEffect)((()=>{l||n.addWidget("GridBookmarkWidget","GridBookmark")}),[n,l]);const d=new Set(e.assemblyNames);return i&&l?.bookmarks?l.bookmarks.filter((e=>d.has(e.assemblyName))).map((e=>{const n=o.get(e.assemblyName),a=n?.getCanonicalRefName(e.refName)??e.refName,i=e.reversed,s=t.bpToPx({refName:a,coord:i?e.end:e.start}),l=t.bpToPx({refName:a,coord:i?e.start:e.end});return void 0!==s&&void 0!==l?{width:Math.abs(l-s),left:s+r,highlight:e.highlight,label:e.label}:void 0})).filter(c.notEmpty).map(((e,t)=>{const{left:r,width:n,highlight:o,label:i}=e;return w.createElement(bo.A,{key:`${JSON.stringify(e)}-${t}`,title:s?i:"",arrow:!0},w.createElement("div",{className:a.highlight,style:{left:r,width:n,background:o,borderLeft:`1px solid ${o}`,borderRight:`1px solid ${o}`}}))})):null})),xo=To,Ao=(0,i.ConfigurationSchema)("GridBookmarkWidget",{});class Po extends a.A{name="GridBookmarkPlugin";install(e){(function(e){e.addWidgetType((()=>new Q.WidgetType({name:"GridBookmarkWidget",heading:"Bookmarked regions",configSchema:Ao,stateModel:d.types.model("GridBookmarkModel",{id:K.ElementId,type:d.types.literal("GridBookmarkWidget"),bookmarks:d.types.optional(d.types.array(ho),(()=>JSON.parse((0,c.localStorageGetItem)(yo())||"[]")))}).volatile((()=>({selectedBookmarks:[],selectedAssembliesPre:void 0}))).views((e=>({get bookmarkAssemblies(){return[...new Set(e.bookmarks.map((e=>e.assemblyName)))]},get validAssemblies(){const{assemblyManager:t}=(0,c.getSession)(e);return new Set(this.bookmarkAssemblies.filter((e=>t.get(e))))},get areBookmarksHighlightedOnAllOpenViews(){const{views:t}=(0,c.getSession)(e);return t.every((e=>!("showBookmarkHighlights"in e)||e.showBookmarkHighlights))},get areBookmarksHighlightLabelsOnAllOpenViews(){const{views:t}=(0,c.getSession)(e);return t.every((e=>!("showBookmarkLabels"in e)||e.showBookmarkLabels))}}))).views((e=>({get bookmarksWithValidAssemblies(){return e.bookmarks.filter((t=>e.validAssemblies.has(t.assemblyName)))}}))).views((e=>({get sharedBookmarksModel(){return fo.create({sharedBookmarks:JSON.parse(JSON.stringify(e.selectedBookmarks))})},get allBookmarksModel(){return fo.create({sharedBookmarks:JSON.parse(JSON.stringify(e.bookmarksWithValidAssemblies))})}}))).actions((e=>({setSelectedAssemblies(t){e.selectedAssembliesPre=t}}))).views((e=>({get selectedAssemblies(){return e.selectedAssembliesPre?.filter((t=>e.validAssemblies.has(t)))??[...e.validAssemblies]}}))).actions((e=>({importBookmarks(t){e.bookmarks=(0,d.cast)([...e.bookmarks,...t])},addBookmark(t){e.bookmarks.push(t)},removeBookmark(t){e.bookmarks.splice(t,1)},updateBookmarkLabel(e,t){e.correspondingObj.setLabel(t)},updateBookmarkHighlight(e,t){e.correspondingObj.setHighlight(t)},updateBulkBookmarkHighlights(t){e.selectedBookmarks.forEach((e=>{this.updateBookmarkHighlight(e,t)}))},setSelectedBookmarks(t){e.selectedBookmarks=t},setBookmarkedRegions(t){e.bookmarks=(0,d.cast)(t)},setHighlightToggle(t){const{views:r}=(0,c.getSession)(e);r.forEach((e=>{e.toggleShowBookmarkHighlights?.(t)}))},setLabelToggle(t){const{views:r}=(0,c.getSession)(e);r.forEach((e=>{e.toggleShowBookmarkLabels?.(t)}))}}))).actions((e=>({clearAllBookmarks(){e.setBookmarkedRegions(e.bookmarks.filter((t=>!e.validAssemblies.has(t.assemblyName))))},clearSelectedBookmarks(){for(const t of e.selectedBookmarks)e.bookmarks.remove(t.correspondingObj);e.selectedBookmarks=[]},removeBookmarkObject(t){e.bookmarks.remove(t)}}))).actions((e=>({afterAttach(){const t=yo();function r(r){if(r.key===t){const r=JSON.parse((0,c.localStorageGetItem)(t)||"[]");e.setBookmarkedRegions(r)}}window.addEventListener("storage",r),(0,d.addDisposer)(e,(()=>{window.removeEventListener("storage",r)})),(0,d.addDisposer)(e,(0,ae.autorun)((()=>{(0,c.localStorageSetItem)(t,JSON.stringify(e.bookmarks))})))}}))).postProcessSnapshot((e=>{const{bookmarks:t,...r}=e;return r})),ReactComponent:(0,w.lazy)((()=>Promise.all([r.e(8565),r.e(5676),r.e(5031),r.e(6395),r.e(3199)]).then(r.bind(r,53199))))}))),function(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",((e,{model:t})=>[...e||[],w.createElement(So,{key:"highlight_grid_bookmark",model:t})])),e.addToExtensionPoint("LinearGenomeView-OverviewScalebarComponent",((e,{model:t,overview:r})=>[...e||[],w.createElement(xo,{key:"overview_highlight_grid_bookmark",model:t,overview:r})]))}(e)})(e),e.addToExtensionPoint("Core-extendPluggableElement",(e=>{if("LinearGenomeView"===e.name){const{stateModel:t}=e,r=t.props({showBookmarkHighlights:!0,showBookmarkLabels:!0}).actions((e=>({toggleShowBookmarkHighlights(t){e.showBookmarkHighlights=void 0!==t?t:!e.showBookmarkHighlights},toggleShowBookmarkLabels(t){e.showBookmarkLabels=void 0!==t?t:!e.showBookmarkLabels},activateBookmarkWidget(){const t=(0,c.getSession)(e);if((0,c.isSessionModelWithWidgets)(t)){let e=t.widgets.get("GridBookmark");return e||(e=t.addWidget("GridBookmarkWidget","GridBookmark")),t.showWidget(e),t.widgets.get("GridBookmark")}throw new Error("Could not open bookmark widget")}}))).actions((e=>({navigateNewestBookmark(){const t=(0,c.getSession)(e),r=e.activateBookmarkWidget();r.bookmarks.length?e.navTo(r.bookmarks.at(-1)):t.notify("There are no recent bookmarks to navigate to.","info")},bookmarkCurrentRegion(){if(e.id===(0,c.getSession)(e).focusedViewId){const t=e.getSelectedRegions(void 0,void 0),r=e.activateBookmarkWidget();if(!t.length)throw new Error("no region selected");r.addBookmark(t[0])}}}))).views((e=>{const t=e.menuItems,r=e.rubberBandMenuItems;return{menuItems:()=>[...t(),{type:"divider"},{label:"Bookmarks",icon:po.A,subMenu:[{label:"Open bookmark widget",icon:po.A,onClick:()=>e.activateBookmarkWidget()},{label:"Bookmark current region",icon:uo.A,onClick:()=>{e.bookmarkCurrentRegion()}},{label:"Toggle bookmark highlights",icon:mo.A,type:"checkbox",checked:e.showBookmarkHighlights,onClick:()=>{e.toggleShowBookmarkHighlights()}},{label:"Toggle bookmark labels",icon:go.A,type:"checkbox",checked:e.showBookmarkLabels,onClick:()=>{e.toggleShowBookmarkLabels()}}]}],rubberBandMenuItems:()=>[...r(),{label:"Bookmark region",icon:uo.A,onClick:()=>{const{leftOffset:t,rightOffset:r}=e,n=e.getSelectedRegions(t,r),a=e.activateBookmarkWidget();if(!n.length)throw new Error("no regions selected");a.addBookmark(n[0])}}]}})).actions((e=>({afterCreate(){document.addEventListener("keydown",(t=>{const r=(t.ctrlKey||t.metaKey)&&t.shiftKey;r&&"KeyD"===t.code&&(t.preventDefault(),e.activateBookmarkWidget(),e.bookmarkCurrentRegion(),(0,c.getSession)(e).notify("Bookmark created.","success")),r&&"KeyM"===t.code&&(t.preventDefault(),e.navigateNewestBookmark())}))}})));e.stateModel=r}return e}))}configure(e){(0,c.isAbstractMenuManager)(e.rootModel)&&e.rootModel.appendToMenu("Tools",{label:"Bookmarks",icon:po.A,onClick:e=>{let t=e.widgets.get("GridBookmark");t||(t=e.addWidget("GridBookmarkWidget","GridBookmark")),e.showWidget(t)}})}}const Mo=[Ln,Rt.Ay,n.Ay,G,Y,ge.Ay,he.Ay,Te.A,gt,ft,wt,St,Et,Jt,ar,Ir,Or,tn,Dn.A,Bn.Ay,On,Na,Ja,me,so,co,Po,ke,wr]},52404:()=>{}}]);
+//# sourceMappingURL=6837.a706c464.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6837.a706c464.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6837.a706c464.chunk.js","mappings":"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iB,QAAQjB,MAAMA,EAChB,CAGJ,OAAO4P,CACT,CAEA,iCAAMC,CACJL,EACAE,EACAC,GAEA,MAAMF,EAAY/P,KAAKiL,gBAAgBtC,IAAImH,GAC3C,IAAII,EAAcF,EAClB,GAAID,EACF,IAAK,MAAMtH,KAAYsH,EACrB,IACEG,QAAoBzH,EAASyH,EAAaD,EAC5C,CAAE,MAAO3P,GACPiB,QAAQjB,MAAMA,EAChB,CAGJ,OAAO4P,CACT,E,ifCznBF,SACE,OACA,kBACA,QACA,oBACA,YACA,aACA,mBACA,sBACA,0BACA,gBACA,oBACA,gBAEA,uBACA,2BACA,8BACA,qCACA,qCACA,0BACA,+BACA,iCACA,2BACA,gCACA,6BACA,0BACA,wBACA,gCACA,2BACA,gCACA,yBACA,gCACA,mCACA,gCACA,+BACA,8BACA,qCACA,6BACA,sCACA,yBACA,6BACA,8BACA,2BACA,kCACA,gCACA,kCACA,sCACA,4BACA,2BACA,wBACA,yBACA,gCACA,8BACA,gCACA,qCACA,mCACA,8BACA,yBACA,yBACA,yBACA,+BACA,0BACA,8BACA,+BACA,mCACA,yBACA,mCACA,yBACA,6BACA,mCACA,4CACA,iCACA,kCACA,iCACA,yBACA,6BACA,6BACA,0BACA,iCACA,kCACA,+BACA,mCACA,0BACA,4BACA,2BACA,2BACA,0BACA,+BACA,2BACA,sCACA,2BACA,6BACA,2BACA,6BACA,oCACA,8BACA,oCACA,kCACA,0BACA,yBACA,+BACA,kCACA,8BACA,6BACA,4BACA,4BACA,2BACA,wBACA,0BACA,8BACA,8BACA,mCACA,gCACA,8BACA,oCACA,6BACA,mCACA,yBACA,8BACA,qCACA,iCACA,sCACA,4BACA,4BACA,+BACA,0BACA,iCACA,iCACA,sBACA,2BACA,6BACA,uBACA,4BACA,yBACA,sBACA,oBACA,4BACA,uBACA,4BACA,qBACA,4BACA,+BACA,4BACA,2BACA,0BACA,iCACA,yBACA,kCACA,qBACA,yBACA,0BACA,uBACA,8BACA,4BACA,8BACA,kCACA,wBACA,uBACA,oBACA,qBACA,4BACA,0BACA,4BACA,iCACA,+BACA,0BACA,qBACA,qBACA,qBACA,2BACA,sBACA,0BACA,2BACA,+BACA,qBACA,+BACA,qBACA,yBACA,+BACA,wCACA,6BACA,8BACA,6BACA,qBACA,yBACA,yBACA,sBACA,6BACA,8BACA,2BACA,+BACA,sBACA,wBACA,uBACA,uBACA,sBACA,2BACA,uBACA,kCACA,uBACA,yBACA,uBACA,yBACA,gCACA,0BACA,gCACA,8BACA,sBACA,qBACA,2BACA,8BACA,0BACA,yBACA,wBACA,wBACA,uBACA,oBACA,sBACA,0BACA,0BACA,+BACA,4BACA,0BACA,gCACA,yBACA,+BACA,qBACA,0BACA,iCACA,6BACA,kCACA,wBACA,wBACA,2BACA,gCACA,qCACA,gCACA,yBACA,mBACA,uBACA,sCACA,+CACA,kDACA,kDACA,gDACA,iDAEA,6CACA,uEACA,0EACA,gEACA,oEACA,6DACA,8BACA,+BACA,mBACA,qBACA,2BACA,6BACA,4BACA,qCACA,wBACA,oCACA,0BACA,oDACA,2C,wNC3NF,MAAME,EAAU,CACdC,WAAWpI,EAAAA,EAAAA,OAAK,IAAM,0DACtBqI,kBAAkBrI,EAAAA,EAAAA,OAAK,IAAM,kCAC7BsI,kBAAkBtI,EAAAA,EAAAA,OAAK,IAAM,kCAC7BuI,OAAOvI,EAAAA,EAAAA,OAAK,IAAM,kCAClBwI,YAAYxI,EAAAA,EAAAA,OAAK,IAAM,kCACvByI,cAAczI,EAAAA,EAAAA,OAAK,IAAM,kCACzB0I,QAAQ1I,EAAAA,EAAAA,OAAK,IAAM,kCACnB2I,aAAa3I,EAAAA,EAAAA,OAAK,IAAM,kCACxB4I,UAAU5I,EAAAA,EAAAA,OAAK,IAAM,kCACrB6I,OAAO7I,EAAAA,EAAAA,OAAK,IAAM,kCAClB8I,KAAK9I,EAAAA,EAAAA,OAAK,IAAM,kCAChB+I,aAAa/I,EAAAA,EAAAA,OAAK,IAAM,iCACxBgJ,QAAQhJ,EAAAA,EAAAA,OAAK,IAAM,kCACnBiJ,aAAajJ,EAAAA,EAAAA,OAAK,IAAM,kCACx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","sources":["../../../packages/core/BaseFeatureWidget/configSchema.ts","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/model.ts","../../../packages/core/BaseFeatureWidget/stateModelFactory.ts","../../../packages/core/Plugin.ts","../../../packages/core/rpc/methods/CoreGetRefNames.ts","../../../packages/core/rpc/methods/CoreGetFeatureDetails.ts","../../../packages/core/rpc/methods/CoreGetMetadata.ts","../../../packages/core/rpc/methods/CoreGetFileInfo.ts","../../../packages/core/rpc/methods/CoreGetFeatures.ts","../../../packages/core/rpc/methods/util.ts","../../../packages/core/rpc/methods/CoreRender.ts","../../../packages/core/rpc/methods/CoreFreeResources.ts","../../../packages/core/rpc/methods/CoreGetFeatureDensityStats.ts","../../../packages/core/data_adapters/CytobandAdapter/configSchema.ts","../../../packages/core/CorePlugin.ts","../../../packages/core/data_adapters/CytobandAdapter/index.ts","../../../packages/core/PluginManager.ts","../../../packages/core/ReExports/list.ts","../../../packages/core/ReExports/modules.tsx","../../../packages/core/TextSearch/BaseResults.ts","../../../packages/core/TextSearch/TextSearchManager.ts","../../../packages/core/configuration/configurationSlot.ts","../../../packages/core/configuration/configurationSchema.ts","../../../packages/core/configuration/util.ts","../../../packages/core/data_adapters/BaseAdapter/util.ts","../../../packages/core/data_adapters/BaseAdapter/BaseAdapter.ts","../../../packages/core/data_adapters/BaseAdapter/BaseFeatureDataAdapter.ts","../../../packages/core/data_adapters/BaseAdapter/BaseSequenceAdapter.ts","../../../packages/core/pluggableElementTypes/AdapterType.ts","../../../packages/core/pluggableElementTypes/AddTrackWorkflowType.ts","../../../packages/core/pluggableElementTypes/ConnectionType.ts","../../../packages/core/pluggableElementTypes/DisplayType.ts","../../../packages/core/pluggableElementTypes/InternetAccountType.ts","../../../packages/core/pluggableElementTypes/PluggableElementBase.ts","../../../packages/core/util/map-obj.ts","../../../packages/core/pluggableElementTypes/RpcMethodType.ts","../../../packages/core/pluggableElementTypes/TextSearchAdapterType.ts","../../../packages/core/pluggableElementTypes/TrackType.ts","../../../packages/core/pluggableElementTypes/ViewType.ts","../../../packages/core/pluggableElementTypes/WidgetType.ts","../../../packages/core/pluggableElementTypes/models/BaseViewModel.ts","../../../packages/core/pluggableElementTypes/models/baseConnectionConfig.ts","../../../packages/core/pluggableElementTypes/models/BaseConnectionModelFactory.ts","../../../packages/core/pluggableElementTypes/models/BaseDisplayModel.tsx","../../../packages/core/pluggableElementTypes/models/baseInternetAccountConfig.ts","../../../packages/core/pluggableElementTypes/models/InternetAccountModel.ts","../../../packages/core/pluggableElementTypes/models/BaseTrackModel.ts","../../../packages/core/pluggableElementTypes/models/baseTrackConfig.ts","../../../packages/core/pluggableElementTypes/renderers/BoxRendererType.ts","../../../packages/core/pluggableElementTypes/renderers/RpcRenderedSvgGroup.tsx","../../../packages/core/pluggableElementTypes/renderers/CircularChordRendererType.tsx","../../../packages/core/pluggableElementTypes/renderers/ComparativeServerSideRendererType.ts","../../../packages/core/pluggableElementTypes/renderers/FeatureRendererType.ts","../../../packages/core/pluggableElementTypes/renderers/RendererType.ts","../../../packages/core/pluggableElementTypes/renderers/ServerSideRenderedContent.tsx","../../../packages/core/pluggableElementTypes/renderers/ServerSideRendererType.tsx","../../../packages/core/pluggableElementTypes/renderers/util/serializableFilterChain.ts","../../../packages/core/ui/BaseTooltip.tsx","../../../packages/core/ui/CascadingMenuButton.tsx","../../../packages/core/ui/FatalErrorDialog.tsx","../../../packages/core/ui/FileSelector/LocalFileChooser.tsx","../../../packages/core/ui/FileSelector/UrlChooser.tsx","../../../packages/core/ui/LoadingEllipses.tsx","../../../packages/core/ui/RedErrorMessageBox.tsx","../../../packages/core/ui/colors.ts","../../../packages/core/util/Base1DUtils.ts","../../../packages/core/util/Base1DViewModel.ts","../../../packages/core/util/aborting.ts","../../../packages/core/util/blobToDataURL.ts","../../../packages/core/util/blockTypes.ts","../../../packages/core/util/calculateDynamicBlocks.ts","../../../packages/core/util/calculateStaticBlocks.ts","../../../packages/core/util/color/cssColorsLevel4.ts","../../../packages/core/util/color/index.ts","../../../packages/core/util/colord.ts","../../../packages/core/util/dedupe.ts","../../../packages/core/util/idMaker.ts","../../../packages/core/util/io/RemoteFileWithRangeCache.ts","../../../packages/core/util/io/index.ts","../../../packages/core/util/jexl.ts","../../../packages/core/util/jexlStrings.ts","../../../packages/core/util/layouts/GranularRectLayout.ts","../../../packages/core/util/layouts/MultiLayout.ts","../../../packages/core/util/layouts/PrecomputedLayout.ts","../../../packages/core/util/layouts/PrecomputedMultiLayout.js","../../../packages/core/util/layouts/SceneGraph.ts","../../../packages/core/util/mst-reflection.ts","../../../packages/core/util/nanoid.js","../../../packages/core/util/offscreenCanvasPonyfill.tsx","../../../packages/core/util/offscreenCanvasUtils.tsx","../../../packages/core/util/range.ts","../../../packages/core/util/rxjs.ts","../../../packages/core/util/simpleFeature.ts","../../../packages/core/util/stats.ts","../../../packages/core/util/types/index.ts","../../../packages/core/util/useMeasure.ts","../../../packages/core/util/when.ts","../../../plugins/alignments/src/MismatchParser/index.ts","../../../plugins/alignments/src/CramAdapter/configSchema.ts","../../../plugins/alignments/src/CramAdapter/index.ts","../../../plugins/alignments/src/BamAdapter/configSchema.ts","../../../plugins/alignments/src/BamAdapter/index.ts","../../../plugins/alignments/src/HtsgetBamAdapter/configSchema.ts","../../../plugins/alignments/src/HtsgetBamAdapter/index.ts","../../../plugins/alignments/src/SNPCoverageAdapter/configSchema.ts","../../../plugins/alignments/src/SNPCoverageAdapter/index.ts","../../../plugins/alignments/src/SNPCoverageRenderer/configSchema.ts","../../../plugins/alignments/src/SNPCoverageRenderer/SNPCoverageRenderer.ts","../../../plugins/alignments/src/SNPCoverageRenderer/index.ts","../../../plugins/alignments/src/PileupRenderer/PileupLayoutSession.ts","../../../plugins/alignments/src/PileupRenderer/PileupRenderer.ts","../../../plugins/alignments/src/PileupRenderer/layoutFeatures.ts","../../../plugins/alignments/src/PileupRenderer/sortUtil.ts","../../../plugins/alignments/src/PileupRenderer/layoutFeature.ts","../../../plugins/alignments/src/PileupRenderer/configSchema.ts","../../../plugins/alignments/src/PileupRenderer/components/PileupRendering.tsx","../../../plugins/alignments/src/PileupRenderer/index.ts","../../../plugins/alignments/src/LinearAlignmentsDisplay/models/util.ts","../../../plugins/alignments/src/LinearAlignmentsDisplay/models/model.tsx","../../../plugins/alignments/src/LinearAlignmentsDisplay/models/alignmentsModel.tsx","../../../plugins/alignments/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx","../../../plugins/alignments/src/LinearAlignmentsDisplay/index.ts","../../../plugins/alignments/src/LinearAlignmentsDisplay/models/configSchema.ts","../../../plugins/alignments/src/LinearSNPCoverageDisplay/models/model.ts","../../../plugins/alignments/src/LinearSNPCoverageDisplay/index.ts","../../../plugins/alignments/src/LinearSNPCoverageDisplay/models/configSchema.ts","../../../plugins/alignments/src/LinearReadArcsDisplay/model.ts","../../../plugins/alignments/src/LinearReadArcsDisplay/index.ts","../../../plugins/alignments/src/LinearReadArcsDisplay/configSchema.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/configSchema.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/model.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/index.ts","../../../plugins/alignments/src/AlignmentsTrack/index.ts","../../../plugins/alignments/src/AlignmentsTrack/configSchemaF.ts","../../../plugins/alignments/src/AlignmentsFeatureDetail/configSchema.ts","../../../plugins/alignments/src/AlignmentsFeatureDetail/stateModelFactory.ts","../../../plugins/alignments/src/AlignmentsFeatureDetail/index.ts","../../../plugins/alignments/src/PileupRPC/base.ts","../../../plugins/alignments/src/PileupRPC/methods/GetReducedFeatures.ts","../../../plugins/alignments/src/PileupRPC/util.ts","../../../plugins/alignments/src/PileupRPC/methods/GetVisibleModifications.ts","../../../plugins/alignments/src/PileupRPC/methods/GetGlobalValueForTag.ts","../../../plugins/alignments/src/PileupRPC/index.ts","../../../plugins/alignments/src/GuessAlignmentsTypes/index.ts","../../../plugins/alignments/src/LinearPileupDisplay/configSchema.ts","../../../plugins/alignments/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx","../../../plugins/alignments/src/LinearPileupDisplay/SharedLinearPileupDisplayMixin.ts","../../../plugins/alignments/src/LinearPileupDisplay/model.ts","../../../plugins/alignments/src/LinearPileupDisplay/index.ts","../../../plugins/alignments/src/index.ts","../../../plugins/alignments/src/shared/color.ts","../../../plugins/alignments/src/shared/index.ts","../../../plugins/alignments/src/util.ts","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/util.ts","../../../plugins/circular-view/src/CircularView/models/viewportVisibleRegion.ts","../../../plugins/circular-view/src/CircularView/models/slices.ts","../../../plugins/circular-view/src/CircularView/models/model.ts","../../../plugins/circular-view/src/BaseChordDisplay/components/Loading.tsx","../../../plugins/circular-view/src/BaseChordDisplay/components/DisplayError.tsx","../../../plugins/circular-view/src/BaseChordDisplay/components/BaseChordDisplay.tsx","../../../plugins/circular-view/src/BaseChordDisplay/models/renderReaction.ts","../../../plugins/circular-view/src/BaseChordDisplay/models/configSchema.ts","../../../plugins/circular-view/src/BaseChordDisplay/models/model.tsx","../../../plugins/circular-view/src/index.ts","../../../plugins/circular-view/src/CircularView/index.ts","../../../plugins/circular-view/src/LaunchCircularView/index.ts","../../../plugins/config/src/ConfigurationEditorWidget/components/JsonEditor.tsx","../../../plugins/config/src/FromConfigAdapter/configSchema.ts","../../../plugins/config/src/FromConfigRegionsAdapter/configSchema.ts","../../../plugins/config/src/FromConfigSequenceAdapter/configSchema.ts","../../../plugins/config/src/RefNameAliasAdapter/configSchema.ts","../../../plugins/config/src/ConfigurationEditorWidget/model.ts","../../../plugins/config/src/ConfigurationEditorWidget/components/HeadingComponent.tsx","../../../plugins/config/src/ConfigurationEditorWidget/index.ts","../../../plugins/config/src/NcbiSequenceReportAliasAdapter/configSchema.ts","../../../plugins/config/src/index.ts","../../../plugins/config/src/FromConfigAdapter/index.ts","../../../plugins/config/src/FromConfigRegionsAdapter/index.ts","../../../plugins/config/src/FromConfigSequenceAdapter/index.ts","../../../plugins/config/src/RefNameAliasAdapter/index.ts","../../../plugins/config/src/NcbiSequenceReportAliasAdapter/index.ts","../../../plugins/data-management/src/AddConnectionWidget/model.ts","../../../plugins/data-management/src/AddConnectionWidget/index.ts","../../../plugins/data-management/src/AddTrackWidget/model.ts","../../../plugins/data-management/src/AddTrackWidget/index.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/faceted/util.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/util.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/filterTracks.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/generateHierarchy.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/facetedUtil.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/facetedModel.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/model.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/configSchema.ts","../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/index.ts","../../../plugins/data-management/src/PluginStoreWidget/model.ts","../../../plugins/data-management/src/PluginStoreWidget/index.ts","../../../plugins/data-management/src/ucsc-trackhub/configSchema.ts","../../../plugins/data-management/src/ucsc-trackhub/model.ts","../../../plugins/data-management/src/ucsc-trackhub/index.ts","../../../plugins/dotplot-view/src/DotplotView/components/util.ts","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/Block.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/BlockMsg.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/Tooltip.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/util.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Cytobands.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TrackLabelDragHandle.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TrackLabel.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TrackLabelContainer.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TrackRenderingContainer.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TrackContainer.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/hooks.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/components/VerticalGuide.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Rubberband.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/ScalebarCoordinateTicks.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/ScalebarCoordinateLabels.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/ScalebarRefNameLabels.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Scalebar.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Gridlines.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/CenterLine.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Highlight.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/TracksContainer.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/LinearGenomeView.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/OverviewScalebarPolygon.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/RefNameAutocomplete/index.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/RefNameAutocomplete/util.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/components/RubberbandSpan.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/util.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/consts.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGBackground.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGRegionSeparators.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGTrackLabel.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGTracks.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGRuler.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGScalebar.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGHeader.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/SVGLinearGenomeView.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/svgcomponents/util.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/util.ts","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/configSchema.ts","../../../packages/core/util/compositeMap.ts","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/TrackHeightMixin.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/TooLargeMessage.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/FeatureDensityMixin.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/autorunFeatureDensityStats.ts","../../../plugins/linear-genome-view/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/LinearBlocks.tsx","../../../plugins/linear-genome-view/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx","../../../plugins/linear-genome-view/src/LinearBareDisplay/configSchema.ts","../../../plugins/linear-genome-view/src/LinearBareDisplay/model.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/components/MiniControls.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/OverviewRubberband.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/OverviewHighlight.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/OverviewScalebarTickLabels.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/OverviewScalebar.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/ZoomControls.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/SearchBox.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/Header.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/model.ts","../../../plugins/linear-genome-view/src/LinearBasicDisplay/configSchema.ts","../../../plugins/linear-genome-view/src/LinearBasicDisplay/model.ts","../../../plugins/linear-genome-view/src/index.ts","../../../plugins/linear-genome-view/src/FeatureTrack/index.ts","../../../plugins/linear-genome-view/src/FeatureTrack/configSchema.ts","../../../plugins/linear-genome-view/src/BasicTrack/index.ts","../../../plugins/linear-genome-view/src/BasicTrack/configSchema.ts","../../../plugins/linear-genome-view/src/LinearBasicDisplay/index.ts","../../../plugins/linear-genome-view/src/LinearGenomeView/index.ts","../../../plugins/linear-genome-view/src/LinearBareDisplay/index.ts","../../../plugins/linear-genome-view/src/LaunchLinearGenomeView/index.ts","../../../plugins/linear-genome-view/src/searchUtils.ts","../../../plugins/variants/src/VcfFeature/util.ts","../../../plugins/variants/src/VcfFeature/index.ts","../../../plugins/variants/src/VcfAdapter/configSchema.ts","../../../plugins/variants/src/VcfTabixAdapter/configSchema.ts","../../../plugins/variants/src/LinearVariantDisplay/model.ts","../../../plugins/variants/src/StructuralVariantChordRenderer/configSchema.ts","../../../plugins/variants/src/StructuralVariantChordRenderer/Chord.tsx","../../../plugins/variants/src/StructuralVariantChordRenderer/ReactComponent.tsx","../../../plugins/variants/src/VariantFeatureWidget/stateModelFactory.ts","../../../plugins/variants/src/VariantFeatureWidget/configSchema.ts","../../../plugins/variants/src/index.ts","../../../plugins/variants/src/VariantTrack/index.ts","../../../plugins/variants/src/VcfAdapter/index.ts","../../../plugins/variants/src/VcfTabixAdapter/index.ts","../../../plugins/variants/src/VariantFeatureWidget/index.ts","../../../plugins/variants/src/VariantTrack/configSchema.ts","../../../plugins/variants/src/extensionPoints.ts","../../../plugins/variants/src/LinearVariantDisplay/index.ts","../../../plugins/variants/src/LinearVariantDisplay/configSchema.ts","../../../plugins/variants/src/StructuralVariantChordRenderer/index.ts","../../../plugins/variants/src/ChordVariantDisplay/index.ts","../../../plugins/variants/src/ChordVariantDisplay/models/configSchema.ts","../../../plugins/variants/src/ChordVariantDisplay/models/stateModelFactory.ts","../../../plugins/wiggle/src/LinearWiggleDisplay/components/Tooltip.tsx","../../../plugins/wiggle/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx","../../../plugins/wiggle/src/Tooltip.tsx","../../../plugins/wiggle/src/WiggleBaseRenderer.tsx","../../../plugins/wiggle/src/BigWigAdapter/configSchema.ts","../../../plugins/wiggle/src/QuantitativeTrack/configSchema.ts","../../../plugins/wiggle/src/MultiWiggleAdapter/configSchema.ts","../../../plugins/wiggle/src/configSchema.ts","../../../plugins/wiggle/src/DensityRenderer/configSchema.ts","../../../plugins/wiggle/src/drawDensity.ts","../../../plugins/wiggle/src/DensityRenderer/DensityRenderer.ts","../../../plugins/wiggle/src/WiggleRendering.tsx","../../../plugins/wiggle/src/drawXY.ts","../../../plugins/wiggle/src/XYPlotRenderer/XYPlotRenderer.ts","../../../plugins/wiggle/src/XYPlotRenderer/configSchema.ts","../../../plugins/wiggle/src/LinePlotRenderer/configSchema.ts","../../../plugins/wiggle/src/drawLine.ts","../../../plugins/wiggle/src/LinePlotRenderer/LinePlotRenderer.ts","../../../plugins/wiggle/src/shared/configShared.ts","../../../plugins/wiggle/src/shared/modelShared.ts","../../../plugins/wiggle/src/LinearWiggleDisplay/models/model.ts","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.ts","../../../plugins/wiggle/src/MultiWiggleRendering.tsx","../../../plugins/wiggle/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts","../../../plugins/wiggle/src/MultiXYPlotRenderer/configSchema.ts","../../../plugins/wiggle/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts","../../../plugins/wiggle/src/MultiRowXYPlotRenderer/configSchema.ts","../../../plugins/wiggle/src/MultiDensityRenderer/configSchema.ts","../../../plugins/wiggle/src/MultiDensityRenderer/MultiDensityRenderer.ts","../../../plugins/wiggle/src/MultiLineRenderer/MultiLineRenderer.ts","../../../plugins/wiggle/src/MultiLineRenderer/configSchema.ts","../../../plugins/wiggle/src/MultiRowLineRenderer/MultiRowLineRenderer.ts","../../../plugins/wiggle/src/MultiRowLineRenderer/configSchema.ts","../../../plugins/wiggle/src/CreateMultiWiggleExtension/index.ts","../../../plugins/wiggle/src/WiggleRPC/MultiWiggleGetSources.ts","../../../plugins/wiggle/src/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.ts","../../../plugins/wiggle/src/WiggleRPC/WiggleGetGlobalQuantitativeStats.ts","../../../plugins/wiggle/src/index.ts","../../../plugins/wiggle/src/MultiWiggleAdapter/index.ts","../../../plugins/wiggle/src/BigWigAdapter/index.ts","../../../plugins/wiggle/src/QuantitativeTrack/index.ts","../../../plugins/wiggle/src/MultiQuantitativeTrack/index.ts","../../../plugins/wiggle/src/MultiQuantitativeTrack/configSchema.ts","../../../plugins/wiggle/src/LinearWiggleDisplay/index.ts","../../../plugins/wiggle/src/LinearWiggleDisplay/models/configSchema.ts","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/index.ts","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/models/configSchema.ts","../../../plugins/wiggle/src/LinePlotRenderer/index.ts","../../../plugins/wiggle/src/XYPlotRenderer/index.ts","../../../plugins/wiggle/src/DensityRenderer/index.ts","../../../plugins/wiggle/src/MultiXYPlotRenderer/index.ts","../../../plugins/wiggle/src/MultiRowXYPlotRenderer/index.ts","../../../plugins/wiggle/src/MultiDensityRenderer/index.ts","../../../plugins/wiggle/src/MultiLineRenderer/index.ts","../../../plugins/wiggle/src/MultiRowLineRenderer/index.ts","../../../plugins/wiggle/src/MultiWiggleAddTrackWorkflow/index.ts","../../../plugins/wiggle/src/shared/YScaleBar.tsx","../../../plugins/wiggle/src/util.ts","../../../plugins/authentication/src/OAuthModel/configSchema.ts","../../../plugins/authentication/src/OAuthModel/util.ts","../../../plugins/authentication/src/util.ts","../../../plugins/authentication/src/OAuthModel/model.tsx","../../../plugins/authentication/src/ExternalTokenModel/configSchema.ts","../../../plugins/authentication/src/ExternalTokenModel/ExternalTokenEntryForm.tsx","../../../plugins/authentication/src/ExternalTokenModel/model.tsx","../../../plugins/authentication/src/HTTPBasicModel/configSchema.ts","../../../plugins/authentication/src/HTTPBasicModel/HTTPBasicLoginForm.tsx","../../../plugins/authentication/src/HTTPBasicModel/model.tsx","../../../plugins/authentication/src/DropboxOAuthModel/configSchema.ts","../../../plugins/authentication/src/DropboxOAuthModel/util.ts","../../../plugins/authentication/src/DropboxOAuthModel/DropboxIcon.tsx","../../../plugins/authentication/src/DropboxOAuthModel/model.tsx","../../../plugins/authentication/src/GoogleDriveOAuthModel/configSchema.ts","../../../plugins/authentication/src/GoogleDriveOAuthModel/util.ts","../../../plugins/authentication/src/GoogleDriveOAuthModel/GoogleDriveFilehandle.ts","../../../plugins/authentication/src/GoogleDriveOAuthModel/GoogleDriveIcon.tsx","../../../plugins/authentication/src/GoogleDriveOAuthModel/model.tsx","../../../plugins/authentication/src/index.ts","../../../plugins/bed/src/BigBedAdapter/configSchema.ts","../../../plugins/bed/src/BedpeAdapter/configSchema.ts","../../../plugins/bed/src/BedTabixAdapter/configSchema.ts","../../../plugins/bed/src/BedAdapter/configSchema.ts","../../../plugins/bed/src/index.ts","../../../plugins/bed/src/BigBedAdapter/index.ts","../../../plugins/bed/src/BedAdapter/index.ts","../../../plugins/bed/src/BedpeAdapter/index.ts","../../../plugins/bed/src/BedTabixAdapter/index.ts","../../../plugins/breakpoint-split-view/src/BreakpointAlignmentsFeatureDetail/index.ts","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/BreakpointSplitView.ts","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/model.ts","../../../plugins/breakpoint-split-view/src/index.ts","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/index.ts","../../../plugins/comparative-adapters/src/PAFAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/MCScanAnchorsAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/MCScanSimpleAnchorsAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/MashMapAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/DeltaAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/ChainAdapter/configSchema.ts","../../../plugins/comparative-adapters/src/index.ts","../../../plugins/comparative-adapters/src/PAFAdapter/index.ts","../../../plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/index.ts","../../../plugins/comparative-adapters/src/DeltaAdapter/index.ts","../../../plugins/comparative-adapters/src/ChainAdapter/index.ts","../../../plugins/comparative-adapters/src/MCScanAnchorsAdapter/index.ts","../../../plugins/comparative-adapters/src/MCScanSimpleAnchorsAdapter/index.ts","../../../plugins/comparative-adapters/src/MashMapAdapter/index.ts","../../../plugins/dotplot-view/src/DotplotView/1dview.ts","../../../plugins/dotplot-view/src/DotplotView/model.ts","../../../plugins/dotplot-view/src/ServerSideRenderedBlockContent.tsx","../../../plugins/dotplot-view/src/DotplotDisplay/renderDotplotBlock.ts","../../../plugins/dotplot-view/src/DotplotDisplay/stateModelFactory.tsx","../../../plugins/dotplot-view/src/DotplotDisplay/components/DotplotDisplay.tsx","../../../plugins/dotplot-view/src/DotplotRenderer/components/DotplotRendering.tsx","../../../plugins/dotplot-view/src/DotplotRenderer/DotplotRenderer.ts","../../../plugins/dotplot-view/src/DotplotRenderer/configSchema.ts","../../../plugins/dotplot-view/src/ComparativeRenderer/index.ts","../../../plugins/dotplot-view/src/DotplotReadVsRef/DotplotReadVsRef.ts","../../../plugins/dotplot-view/src/index.ts","../../../plugins/dotplot-view/src/DotplotDisplay/index.ts","../../../plugins/dotplot-view/src/DotplotView/index.ts","../../../plugins/dotplot-view/src/DotplotRenderer/index.ts","../../../plugins/dotplot-view/src/LaunchDotplotView.ts","../../../plugins/dotplot-view/src/DotplotReadVsRef/index.ts","../../../plugins/gtf/src/GtfAdapter/configSchema.ts","../../../plugins/gtf/src/index.ts","../../../plugins/gff3/src/Gff3TabixAdapter/configSchema.ts","../../../plugins/gff3/src/Gff3Adapter/configSchema.ts","../../../plugins/gff3/src/index.ts","../../../plugins/gff3/src/Gff3TabixAdapter/index.ts","../../../plugins/gff3/src/Gff3Adapter/index.ts","../../../plugins/gff3/src/GuessGff3/index.ts","../../../plugins/jobs-management/src/JobsListWidget/jobModel.ts","../../../plugins/jobs-management/src/JobsListWidget/index.ts","../../../plugins/jobs-management/src/index.ts","../../../plugins/jobs-management/src/JobsListWidget/model.ts","../../../plugins/legacy-jbrowse/src/NCListAdapter/configSchema.ts","../../../plugins/legacy-jbrowse/src/JBrowse1TextSearchAdapter/configSchema.ts","../../../plugins/legacy-jbrowse/src/JBrowse1Connection/configSchema.ts","../../../plugins/legacy-jbrowse/src/JBrowse1Connection/model.ts","../../../plugins/legacy-jbrowse/src/index.ts","../../../plugins/legacy-jbrowse/src/NCListAdapter/index.ts","../../../plugins/legacy-jbrowse/src/GuessNCList/index.ts","../../../plugins/legacy-jbrowse/src/JBrowse1TextSearchAdapter/index.ts","../../../plugins/legacy-jbrowse/src/JBrowse1Connection/index.ts","../../../plugins/linear-comparative-view/src/LinearComparativeDisplay/configSchemaF.ts","../../../plugins/linear-comparative-view/src/LinearComparativeDisplay/stateModelFactory.ts","../../../plugins/linear-comparative-view/src/LinearComparativeView/model.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/model.ts","../../../plugins/linear-comparative-view/src/LGVSyntenyDisplay/model.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/Icons.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/model.ts","../../../plugins/linear-comparative-view/src/LaunchLinearSyntenyView.ts","../../../plugins/linear-comparative-view/src/SyntenyTrack/configSchema.ts","../../../plugins/linear-comparative-view/src/LinearReadVsRef/index.ts","../../../plugins/linear-comparative-view/src/index.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/index.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/index.ts","../../../plugins/linear-comparative-view/src/LinearComparativeDisplay/index.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/index.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/configSchemaF.ts","../../../plugins/linear-comparative-view/src/LGVSyntenyDisplay/index.ts","../../../plugins/linear-comparative-view/src/LGVSyntenyDisplay/configSchemaF.ts","../../../plugins/linear-comparative-view/src/SyntenyTrack/index.tsx","../../../plugins/lollipop/src/LinearLollipopDisplay/model.ts","../../../plugins/lollipop/src/LollipopRenderer/Layout.ts","../../../plugins/lollipop/src/LollipopRenderer/LollipopRenderer.js","../../../plugins/lollipop/src/LollipopRenderer/configSchema.ts","../../../plugins/lollipop/src/index.ts","../../../plugins/lollipop/src/LollipopRenderer/index.ts","../../../plugins/lollipop/src/LinearLollipopDisplay/index.ts","../../../plugins/lollipop/src/LinearLollipopDisplay/configSchema.ts","../../../plugins/arc/src/LinearArcDisplay/model.ts","../../../plugins/arc/src/LinearPairedArcDisplay/model.ts","../../../plugins/arc/src/ArcRenderer/ArcRendering.tsx","../../../plugins/arc/src/ArcRenderer/configSchema.ts","../../../plugins/arc/src/ArcRenderer/ArcRenderer.ts","../../../plugins/arc/src/index.ts","../../../plugins/arc/src/ArcRenderer/index.ts","../../../plugins/arc/src/LinearArcDisplay/index.ts","../../../plugins/arc/src/LinearArcDisplay/configSchema.ts","../../../plugins/arc/src/LinearPairedArcDisplay/index.ts","../../../plugins/arc/src/LinearPairedArcDisplay/configSchema.ts","../../../plugins/menus/src/AboutWidget/index.ts","../../../plugins/menus/src/HelpWidget/index.ts","../../../plugins/menus/src/ImportSessionWidget/index.ts","../../../plugins/menus/src/SessionManager/index.ts","../../../plugins/menus/src/index.ts","../../../plugins/rdf/src/SPARQLAdapter/SPARQLAdapter.ts","../../../plugins/rdf/src/SPARQLAdapter/configSchema.ts","../../../plugins/rdf/src/index.ts","../../../plugins/sequence/src/TwoBitAdapter/configSchema.ts","../../../plugins/sequence/src/DivSequenceRenderer/components/DivSequenceRendering.tsx","../../../plugins/sequence/src/DivSequenceRenderer/configSchema.ts","../../../plugins/sequence/src/DivSequenceRenderer/index.ts","../../../plugins/sequence/src/BgzipFastaAdapter/configSchema.ts","../../../plugins/sequence/src/ChromSizesAdapter/configSchema.ts","../../../plugins/sequence/src/IndexedFastaAdapter/configSchema.ts","../../../plugins/sequence/src/UnindexedFastaAdapter/configSchema.ts","../../../plugins/sequence/src/SequenceSearchAdapter/configSchema.ts","../../../plugins/sequence/src/LinearReferenceSequenceDisplay/configSchema.ts","../../../plugins/sequence/src/index.ts","../../../plugins/sequence/src/TwoBitAdapter/index.ts","../../../plugins/sequence/src/BgzipFastaAdapter/index.ts","../../../plugins/sequence/src/ChromSizesAdapter/index.ts","../../../plugins/sequence/src/IndexedFastaAdapter/index.ts","../../../plugins/sequence/src/UnindexedFastaAdapter/index.ts","../../../plugins/sequence/src/SequenceSearchAdapter/index.ts","../../../plugins/sequence/src/ReferenceSequenceTrack/index.ts","../../../plugins/sequence/src/ReferenceSequenceTrack/configSchema.ts","../../../plugins/sequence/src/LinearReferenceSequenceDisplay/index.ts","../../../plugins/sequence/src/LinearReferenceSequenceDisplay/model.ts","../../../plugins/sequence/src/createExtensionPoints.ts","../../../plugins/svg/src/SvgFeatureRenderer/components/FeatureLabel.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/FeatureGlyph.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/SvgOverlay.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/Arrow.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/Box.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/Segments.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/ProcessedTranscript.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/Subfeatures.tsx","../../../plugins/svg/src/SvgFeatureRenderer/components/util.ts","../../../plugins/svg/src/SvgFeatureRenderer/components/SvgFeatureRendering.tsx","../../../plugins/svg/src/SvgFeatureRenderer/configSchema.ts","../../../plugins/svg/src/index.ts","../../../plugins/gccontent/src/GCContentAdapter/configSchema.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/shared.ts","../../../plugins/gccontent/src/index.ts","../../../plugins/gccontent/src/GCContentTrack/index.ts","../../../plugins/gccontent/src/GCContentAdapter/index.ts","../../../plugins/gccontent/src/GCContentTrack/configSchema.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/index.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/config1.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/stateModel1.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/config2.ts","../../../plugins/gccontent/src/LinearGCContentDisplay/stateModel2.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/LocString.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/Text.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/LocRef.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/Number.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/index.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/LocStart.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ColumnDataTypes/LocEnd.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/Row.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/StaticRowSet.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/Spreadsheet.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/ImportWizard.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/FilterControls.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/models/SpreadsheetView.ts","../../../plugins/spreadsheet-view/src/index.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/index.ts","../../../plugins/spreadsheet-view/src/LaunchSpreadsheetView/index.ts","../../../plugins/sv-inspector/src/SvInspectorView/components/CircularViewOptions.tsx","../../../plugins/sv-inspector/src/SvInspectorView/components/SvInspectorView.tsx","../../../plugins/sv-inspector/src/SvInspectorView/models/adhocFeatureUtils.ts","../../../plugins/sv-inspector/src/SvInspectorView/models/breakpointSplitViewFromTableRow.ts","../../../plugins/sv-inspector/src/SvInspectorView/index.ts","../../../plugins/sv-inspector/src/index.ts","../../../plugins/sv-inspector/src/SvInspectorView/models/SvInspectorView.ts","../../../plugins/sv-inspector/src/LaunchSvInspectorView/index.ts","../../../plugins/hic/src/HicRenderer/components/HicRendering.tsx","../../../plugins/hic/src/HicRenderer/configSchema.ts","../../../plugins/hic/src/HicRenderer/HicRenderer.tsx","../../../plugins/hic/src/LinearHicDisplay/model.ts","../../../plugins/hic/src/HicAdapter/configSchema.ts","../../../plugins/hic/src/index.ts","../../../plugins/hic/src/HicAdapter/index.ts","../../../plugins/hic/src/HicRenderer/index.ts","../../../plugins/hic/src/HicTrack/index.ts","../../../plugins/hic/src/HicTrack/configSchema.ts","../../../plugins/hic/src/LinearHicDisplay/index.ts","../../../plugins/hic/src/LinearHicDisplay/configSchema.ts","../../../plugins/trix/src/TrixTextSearchAdapter/configSchema.ts","../../../plugins/trix/src/index.ts","../../../plugins/grid-bookmark/src/GridBookmarkWidget/model.ts","../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/Highlight/Highlight.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/Highlight/OverviewHighlight.tsx","../../../plugins/grid-bookmark/src/GridBookmarkWidget/index.ts","../../../plugins/grid-bookmark/src/index.ts","../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/Highlight/index.tsx","corePlugins.ts"],"sourcesContent":["import { ConfigurationSchema } from '../configuration'\n\nconst configSchema = ConfigurationSchema('BaseFeatureWidget', {})\nexport { configSchema }\n","import { types, addDisposer, Instance } from 'mobx-state-tree'\nimport { autorun } from 'mobx'\n\n// locals\nimport {\n  SimpleFeatureSerialized,\n  localStorageGetItem,\n  localStorageSetItem,\n} from '../../util'\n\nfunction localStorageGetNumber(key: string, defaultVal: number) {\n  return +(localStorageGetItem(key) ?? defaultVal)\n}\n\nexport function SequenceFeatureDetailsF() {\n  return types\n    .model('SequenceFeatureDetails')\n    .volatile(() => ({\n      showCoordinatesSetting:\n        localStorageGetItem('sequenceFeatureDetails-showCoordinatesSetting') ||\n        'none',\n      intronBp: localStorageGetNumber('sequenceFeatureDetails-intronBp', 10),\n      upDownBp: localStorageGetNumber('sequenceFeatureDetails-upDownBp', 100),\n      upperCaseCDS: Boolean(\n        JSON.parse(\n          localStorageGetItem('sequenceFeatureDetails-upperCaseCDS') || 'true',\n        ),\n      ),\n      charactersPerRow: 100,\n      feature: undefined as SimpleFeatureSerialized | undefined,\n      mode: '',\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setFeature(f: SimpleFeatureSerialized) {\n        self.feature = f\n      },\n      /**\n       * #action\n       */\n      setUpDownBp(f: number) {\n        self.upDownBp = f\n      },\n      /**\n       * #action\n       */\n      setIntronBp(f: number) {\n        self.intronBp = f\n      },\n      /**\n       * #action\n       */\n      setUpperCaseCDS(f: boolean) {\n        self.upperCaseCDS = f\n      },\n      /**\n       * #action\n       */\n      setShowCoordinates(f: 'none' | 'relative' | 'genomic') {\n        self.showCoordinatesSetting = f\n      },\n      /**\n       * #action\n       */\n      setMode(mode: string) {\n        self.mode = mode\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get showCoordinates() {\n        return self.showCoordinatesSetting !== 'none'\n      },\n      /**\n       * #getter\n       */\n      get showGenomicCoordsOption() {\n        return (\n          self.mode === 'gene' ||\n          self.mode === 'gene_updownstream' ||\n          self.mode === 'genomic' ||\n          self.mode === 'genomic_sequence_updownstream'\n        )\n      },\n      /**\n       * #getter\n       */\n      get hasCDS() {\n        return self.feature?.subfeatures?.some(sub => sub.type === 'CDS')\n      },\n      /**\n       * #getter\n       */\n      get hasExon() {\n        return self.feature?.subfeatures?.some(sub => sub.type === 'exon')\n      },\n      /**\n       * #getter\n       */\n      get hasExonOrCDS() {\n        return this.hasExon || this.hasCDS\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            localStorageSetItem(\n              'sequenceFeatureDetails-upDownBp',\n              JSON.stringify(self.upDownBp),\n            )\n            localStorageSetItem(\n              'sequenceFeatureDetails-intronBp',\n              JSON.stringify(self.intronBp),\n            )\n            localStorageSetItem(\n              'sequenceFeatureDetails-upperCaseCDS',\n              JSON.stringify(self.upperCaseCDS),\n            )\n            localStorageSetItem(\n              'sequenceFeatureDetails-showCoordinatesSetting',\n              self.showCoordinatesSetting,\n            )\n          }),\n        )\n        addDisposer(\n          self,\n          autorun(() => {\n            self.setMode(\n              self.hasCDS ? 'cds' : self.hasExon ? 'cdna' : 'genomic',\n            )\n          }),\n        )\n      },\n    }))\n}\n\nexport type SequenceFeatureDetailsStateModel = ReturnType<\n  typeof SequenceFeatureDetailsF\n>\nexport type SequenceFeatureDetailsModel =\n  Instance<SequenceFeatureDetailsStateModel>\n","import { types, addDisposer, Instance } from 'mobx-state-tree'\nimport { autorun } from 'mobx'\nimport clone from 'clone'\n\n// locals\nimport PluginManager from '../PluginManager'\nimport { getConf } from '../configuration'\nimport { getSession } from '../util'\nimport { ElementId } from '../util/types/mst'\nimport { SequenceFeatureDetailsF } from './SequenceFeatureDetails/model'\n\ninterface Feat {\n  subfeatures?: Record<string, unknown>[]\n}\n\nfunction formatSubfeatures(\n  obj: Feat,\n  depth: number,\n  parse: (obj: Record<string, unknown>) => void,\n  currentDepth = 0,\n  returnObj = {} as Record<string, unknown>,\n) {\n  if (depth <= currentDepth) {\n    return\n  }\n  obj.subfeatures?.map(sub => {\n    formatSubfeatures(sub, depth, parse, currentDepth + 1, returnObj)\n    parse(sub)\n  })\n}\n\n/**\n * #stateModel BaseFeatureWidget\n * displays data about features, allowing configuration callbacks to modify the\n * contents of what is displayed\n *\n * see: formatDetails-\\>feature,formatDetails-\\>subfeatures\n */\nexport function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .model('BaseFeatureWidget', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('BaseFeatureWidget'),\n      /**\n       * #property\n       */\n      featureData: types.frozen(),\n      /**\n       * #property\n       */\n      formattedFields: types.frozen(),\n      /**\n       * #property\n       */\n      unformattedFeatureData: types.frozen(),\n      /**\n       * #property\n       */\n      view: types.safeReference(\n        pluginManager.pluggableMstType('view', 'stateModel'),\n      ),\n      /**\n       * #property\n       */\n      track: types.safeReference(\n        pluginManager.pluggableMstType('track', 'stateModel'),\n      ),\n      /**\n       * #property\n       */\n      trackId: types.maybe(types.string),\n      /**\n       * #property\n       */\n      trackType: types.maybe(types.string),\n      /**\n       * #property\n       */\n      maxDepth: types.maybe(types.number),\n\n      /**\n       * #property\n       */\n      sequenceFeatureDetails: types.optional(SequenceFeatureDetailsF(), {}),\n    })\n    .volatile(() => ({\n      error: undefined as unknown,\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setFeatureData(featureData: Record<string, unknown>) {\n        self.unformattedFeatureData = featureData\n      },\n      /**\n       * #action\n       */\n      clearFeatureData() {\n        self.featureData = undefined\n      },\n      /**\n       * #action\n       */\n      setFormattedData(feat: Record<string, unknown>) {\n        self.featureData = feat\n      },\n      /**\n       * #action\n       */\n      setExtra(type?: string, trackId?: string, maxDepth?: number) {\n        self.trackId = trackId\n        self.trackType = type\n        self.maxDepth = maxDepth\n      },\n      /**\n       * #action\n       */\n      setError(e: unknown) {\n        self.error = e\n      },\n    }))\n    .actions(self => ({\n      afterCreate() {\n        addDisposer(\n          self,\n          autorun(() => {\n            try {\n              const { unformattedFeatureData, track } = self\n              const session = getSession(self)\n              if (track) {\n                self.setExtra(\n                  track.type,\n                  track.configuration.trackId,\n                  getConf(track, ['formatDetails', 'maxDepth']),\n                )\n              }\n              if (unformattedFeatureData) {\n                const feature = clone(unformattedFeatureData)\n\n                const combine = (\n                  arg2: string,\n                  feature: Record<string, unknown>,\n                ) => ({\n                  ...getConf(session, ['formatDetails', arg2], { feature }),\n                  ...getConf(track, ['formatDetails', arg2], { feature }),\n                })\n\n                if (track) {\n                  feature.__jbrowsefmt = combine('feature', feature)\n\n                  formatSubfeatures(\n                    feature,\n                    getConf(track, ['formatDetails', 'depth']),\n                    sub => {\n                      sub.__jbrowsefmt = combine('subfeatures', sub)\n                    },\n                  )\n                }\n\n                self.setFormattedData(feature)\n              }\n            } catch (e) {\n              console.error(e)\n              self.setError(e)\n            }\n          }),\n        )\n      },\n    }))\n    .preProcessSnapshot(snap => {\n      // @ts-expect-error\n      const { featureData, finalizedFeatureData, ...rest } = snap\n      return {\n        unformattedFeatureData: featureData,\n        featureData: finalizedFeatureData,\n        ...rest,\n      }\n    })\n    .postProcessSnapshot(snap => {\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      const { unformattedFeatureData, featureData, ...rest } = snap as Omit<\n        typeof snap,\n        symbol\n      >\n      // finalizedFeatureData avoids running formatter twice if loading from\n      // snapshot\n      return {\n        // replacing undefined with null helps with allowing fields to be\n        // hidden, setting null is not allowed by jexl so we set it to\n        // undefined to hide. see config guide. this replacement happens both\n        // here and when displaying the featureData in base feature widget\n        finalizedFeatureData: JSON.parse(\n          JSON.stringify(featureData, (_, v) => (v === undefined ? null : v)),\n        ),\n        ...rest,\n      }\n    })\n}\n\nexport type BaseFeatureWidgetStateModel = ReturnType<typeof stateModelFactory>\nexport type BaseFeatureWidgetModel = Instance<BaseFeatureWidgetStateModel>\n","import PluginManager from './PluginManager'\nimport { AnyConfigurationSchemaType } from './configuration'\n\n/**\n * base class for a JBrowse plugin\n */\nexport default abstract class Plugin {\n  abstract name: string\n\n  url?: string\n\n  version?: string\n\n  install(_pluginManager: PluginManager): void {}\n\n  configure(_pluginManager: PluginManager): void {}\n\n  configurationSchema?: AnyConfigurationSchemaType\n}\n\nexport type PluginConstructor = new (...args: unknown[]) => Plugin\n","import { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\n\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\n\nexport default class CoreGetRefNames extends RpcMethodType {\n  name = 'CoreGetRefNames'\n\n  async execute(\n    args: {\n      sessionId: string\n      signal: RemoteAbortSignal\n      adapterConfig: Record<string, unknown>\n    },\n    rpcDriver: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    const { sessionId, adapterConfig } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n\n    if (isFeatureAdapter(dataAdapter)) {\n      return dataAdapter.getRefNames(deserializedArgs)\n    }\n    return []\n  }\n}\n","import RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\nimport { RenderArgs } from './util'\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { renameRegionsIfNeeded, getLayoutId } from '../../util'\nimport { RenderArgsSerialized } from './util'\n\n/**\n * fetches features from an adapter and call a renderer with them\n */\nexport default class CoreGetFeatureDetails extends RpcMethodType {\n  name = 'CoreGetFeatureDetails'\n\n  async serializeArguments(args: RenderArgs, rpcDriver: string) {\n    const { rootModel } = this.pluginManager\n    const assemblyManager = rootModel!.session!.assemblyManager\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n    const superArgs = (await super.serializeArguments(\n      renamedArgs,\n      rpcDriver,\n    )) as RenderArgs\n    if (rpcDriver === 'MainThreadRpcDriver') {\n      return superArgs\n    }\n    const { rendererType } = args\n    const RendererType = this.pluginManager.getRendererType(rendererType)!\n    // @ts-expect-error\n    return RendererType.serializeArgsInClient(superArgs)\n  }\n\n  async execute(\n    args: RenderArgsSerialized & { signal?: RemoteAbortSignal },\n    rpcDriver: string,\n  ) {\n    let deserializedArgs = args\n    if (rpcDriver !== 'MainThreadRpcDriver') {\n      deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    }\n    const { rendererType, featureId } = deserializedArgs\n    const RendererType = this.pluginManager.getRendererType(rendererType)!\n\n    return {\n      // @ts-expect-error\n      feature: RendererType.sessions[getLayoutId(args)]?.cachedLayout.layout\n        .getDataByID(featureId)\n        ?.toJSON(),\n    }\n  }\n}\n","import { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\n\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\n\nexport default class CoreGetMetadata extends RpcMethodType {\n  name = 'CoreGetMetadata'\n\n  async execute(\n    args: {\n      sessionId: string\n      signal: RemoteAbortSignal\n      adapterConfig: Record<string, unknown>\n    },\n    rpcDriver: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    const { sessionId, adapterConfig } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n    return isFeatureAdapter(dataAdapter)\n      ? dataAdapter.getMetadata(deserializedArgs)\n      : null\n  }\n}\n","import { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\n\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\n\nexport default class CoreGetFileInfo extends RpcMethodType {\n  name = 'CoreGetInfo'\n\n  async execute(\n    args: {\n      sessionId: string\n      signal: RemoteAbortSignal\n      adapterConfig: Record<string, unknown>\n    },\n    rpcDriver: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    const { sessionId, adapterConfig } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n    return isFeatureAdapter(dataAdapter)\n      ? dataAdapter.getHeader(deserializedArgs)\n      : null\n  }\n}\n","import { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\nimport { RenderArgs } from './util'\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\nimport { renameRegionsIfNeeded, Region } from '../../util'\nimport SimpleFeature, {\n  SimpleFeatureSerialized,\n} from '../../util/simpleFeature'\n\nexport default class CoreGetFeatures extends RpcMethodType {\n  name = 'CoreGetFeatures'\n\n  async deserializeReturn(\n    feats: SimpleFeatureSerialized[],\n    args: unknown,\n    rpcDriver: string,\n  ) {\n    const superDeserialized = (await super.deserializeReturn(\n      feats,\n      args,\n      rpcDriver,\n    )) as SimpleFeatureSerialized[]\n    return superDeserialized.map(feat => new SimpleFeature(feat))\n  }\n\n  async serializeArguments(args: RenderArgs, rpcDriver: string) {\n    const { rootModel } = this.pluginManager\n    const assemblyManager = rootModel!.session!.assemblyManager\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n    return super.serializeArguments(\n      renamedArgs,\n      rpcDriver,\n    ) as Promise<RenderArgs>\n  }\n\n  async execute(\n    args: {\n      sessionId: string\n      regions: Region[]\n      adapterConfig: Record<string, unknown>\n      signal?: RemoteAbortSignal\n\n      opts?: any\n    },\n    rpcDriver: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    const { signal, sessionId, adapterConfig, regions, opts } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n    if (!isFeatureAdapter(dataAdapter)) {\n      throw new Error('Adapter does not support retrieving features')\n    }\n    const ret = dataAdapter.getFeaturesInMultipleRegions(regions, {\n      ...opts,\n      signal,\n    })\n    const r = await firstValueFrom(ret.pipe(toArray()))\n    return r.map(f => f.toJSON())\n  }\n}\n","import { ServerSideRendererType } from '../../pluggableElementTypes'\nimport {\n  RenderArgs as ServerSideRenderArgs,\n  RenderArgsSerialized as ServerSideRenderArgsSerialized,\n} from '../../pluggableElementTypes/renderers/ServerSideRendererType'\nimport { Region } from '../../util'\n\nexport interface RenderArgs extends ServerSideRenderArgs {\n  adapterConfig: Record<string, unknown>\n  rendererType: string\n}\n\nexport interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {\n  assemblyName: string\n  regions: Region[]\n  adapterConfig: Record<string, unknown>\n  rendererType: string\n}\n\nexport function validateRendererType<T>(\n  rendererType: string,\n  RendererType: T,\n): ServerSideRendererType {\n  // @ts-expect-error\n  if (!RendererType.ReactComponent) {\n    throw new Error(\n      `renderer ${rendererType} has no ReactComponent, it may not be completely implemented yet`,\n    )\n  }\n  return RendererType as unknown as ServerSideRendererType\n}\n\nexport {\n  type RenderResults,\n  type ResultsSerialized,\n} from '../../pluggableElementTypes/renderers/ServerSideRendererType'\n","import RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\nimport {\n  RenderResults,\n  ResultsSerialized,\n  RenderArgs,\n  RenderArgsSerialized,\n  validateRendererType,\n} from './util'\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { checkAbortSignal, renameRegionsIfNeeded } from '../../util'\n\n/**\n * fetches features from an adapter and call a renderer with them\n */\nexport default class CoreRender extends RpcMethodType {\n  name = 'CoreRender'\n\n  async serializeArguments(args: RenderArgs, rpcDriver: string) {\n    const { rootModel } = this.pluginManager\n    const assemblyManager = rootModel!.session!.assemblyManager\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n    const superArgs = (await super.serializeArguments(\n      renamedArgs,\n      rpcDriver,\n    )) as RenderArgs\n    if (rpcDriver === 'MainThreadRpcDriver') {\n      return superArgs\n    }\n\n    const { rendererType } = args\n\n    const RendererType = validateRendererType(\n      rendererType,\n      this.pluginManager.getRendererType(rendererType),\n    )\n\n    return RendererType.serializeArgsInClient(superArgs)\n  }\n\n  async execute(\n    args: RenderArgsSerialized & { signal?: RemoteAbortSignal },\n    rpcDriver: string,\n  ) {\n    let deserializedArgs = args\n    if (rpcDriver !== 'MainThreadRpcDriver') {\n      deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    }\n    const { sessionId, rendererType, signal } = deserializedArgs\n    if (!sessionId) {\n      throw new Error('must pass a unique session id')\n    }\n\n    checkAbortSignal(signal)\n\n    const RendererType = validateRendererType(\n      rendererType,\n      this.pluginManager.getRendererType(rendererType),\n    )\n\n    const result =\n      rpcDriver === 'MainThreadRpcDriver'\n        ? await RendererType.render(deserializedArgs)\n        : await RendererType.renderInWorker(deserializedArgs)\n\n    checkAbortSignal(signal)\n    return result\n  }\n\n  async deserializeReturn(\n    serializedReturn: RenderResults | ResultsSerialized,\n    args: RenderArgs,\n    rpcDriver: string,\n  ): Promise<unknown> {\n    const des = await super.deserializeReturn(serializedReturn, args, rpcDriver)\n    if (rpcDriver === 'MainThreadRpcDriver') {\n      return des\n    }\n\n    const { rendererType } = args\n    const RendererType = validateRendererType(\n      rendererType,\n      this.pluginManager.getRendererType(rendererType),\n    )\n    return RendererType.deserializeResultsInClient(\n      des as ResultsSerialized,\n      args,\n    )\n  }\n}\n","import RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\nimport { freeAdapterResources } from '../../data_adapters/dataAdapterCache'\n\n/**\n * free up any resources (e.g. cached adapter objects)\n * that are only associated with the given track ID.\n *\n * returns number of objects deleted\n */\nexport default class CoreFreeResources extends RpcMethodType {\n  name = 'CoreFreeResources'\n\n  async execute(specification: Record<string, unknown>) {\n    let deleteCount = 0\n\n    deleteCount += freeAdapterResources(specification)\n\n    // pass the freeResources hint along to all the renderers as well\n    this.pluginManager.getRendererTypes().forEach(renderer => {\n      const count = renderer.freeResources(/* specification */)\n      if (count) {\n        deleteCount += count\n      }\n    })\n\n    return deleteCount\n  }\n  async serializeArguments(args: Record<string, unknown>, _rpcDriver: string) {\n    return args\n  }\n}\n","import { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport RpcMethodType from '../../pluggableElementTypes/RpcMethodType'\nimport { RenderArgs } from './util'\nimport { RemoteAbortSignal } from '../remoteAbortSignals'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\nimport { renameRegionsIfNeeded, Region } from '../../util'\n\nexport default class CoreGetFeatureDensityStats extends RpcMethodType {\n  name = 'CoreGetFeatureDensityStats'\n\n  async serializeArguments(\n    args: RenderArgs & {\n      signal?: AbortSignal\n      statusCallback?: (arg: string) => void\n    },\n    rpcDriver: string,\n  ) {\n    const { rootModel } = this.pluginManager\n    const assemblyManager = rootModel!.session!.assemblyManager\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {\n      ...args,\n      filters: args.filters?.toJSON().filters,\n    })\n\n    return super.serializeArguments(renamedArgs, rpcDriver)\n  }\n\n  async execute(\n    args: {\n      adapterConfig: Record<string, unknown>\n      regions: Region[]\n      signal?: RemoteAbortSignal\n      headers?: Record<string, string>\n      sessionId: string\n    },\n    rpcDriver: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    const { adapterConfig, sessionId, regions } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n\n    if (!isFeatureAdapter(dataAdapter)) {\n      throw new Error('Adapter does not support retrieving features')\n    }\n    return dataAdapter.getMultiRegionFeatureDensityStats(\n      regions,\n      deserializedArgs,\n    )\n  }\n}\n","import { ConfigurationSchema } from '../../configuration'\n\n/**\n * #config CytobandAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'CytobandAdapter',\n  {\n    /**\n     * #slot\n     */\n    cytobandLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/cytoband.txt.gz' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default configSchema\n","import { lazy } from 'react'\nimport { configSchema, stateModelFactory } from './BaseFeatureWidget'\nimport Plugin from './Plugin'\nimport PluginManager from './PluginManager'\nimport * as coreRpcMethods from './rpc/coreRpcMethods'\nimport WidgetType from './pluggableElementTypes/WidgetType'\nimport CytobandAdapterF from './data_adapters/CytobandAdapter'\n\n// the core plugin, which registers types that ALL JBrowse applications are\n// expected to need.\nexport default class CorePlugin extends Plugin {\n  name = 'CorePlugin'\n\n  install(pluginManager: PluginManager) {\n    // register all our core rpc methods\n    Object.values(coreRpcMethods).forEach(RpcMethod => {\n      pluginManager.addRpcMethod(() => new RpcMethod(pluginManager))\n    })\n\n    CytobandAdapterF(pluginManager)\n\n    pluginManager.addWidgetType(() => {\n      return new WidgetType({\n        name: 'BaseFeatureWidget',\n        heading: 'Feature details',\n        configSchema,\n        stateModel: stateModelFactory(pluginManager),\n        ReactComponent: lazy(\n          () => import('./BaseFeatureWidget/BaseFeatureDetail'),\n        ),\n      })\n    })\n  }\n}\n","import { AdapterType } from '../../pluggableElementTypes'\nimport PluginManager from '../../PluginManager'\nimport configSchema from './configSchema'\n\nexport default function CytobandAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'CytobandAdapter',\n        configSchema,\n        getAdapterClass: () => import('./CytobandAdapter').then(f => f.default),\n      }),\n  )\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport {\n  isModelType,\n  isType,\n  types,\n  IAnyType,\n  IAnyModelType,\n} from 'mobx-state-tree'\n\n// Pluggable elements\nimport PluggableElementBase from './pluggableElementTypes/PluggableElementBase'\nimport RendererType from './pluggableElementTypes/renderers/RendererType'\nimport AdapterType from './pluggableElementTypes/AdapterType'\nimport TrackType from './pluggableElementTypes/TrackType'\nimport DisplayType from './pluggableElementTypes/DisplayType'\nimport ViewType from './pluggableElementTypes/ViewType'\nimport WidgetType from './pluggableElementTypes/WidgetType'\nimport ConnectionType from './pluggableElementTypes/ConnectionType'\nimport RpcMethodType from './pluggableElementTypes/RpcMethodType'\nimport InternetAccountType from './pluggableElementTypes/InternetAccountType'\nimport TextSearchAdapterType from './pluggableElementTypes/TextSearchAdapterType'\nimport AddTrackWorkflowType from './pluggableElementTypes/AddTrackWorkflowType'\n\nimport {\n  ConfigurationSchema,\n  isBareConfigurationSchemaType,\n} from './configuration'\n\nimport Plugin from './Plugin'\nimport ReExports from './ReExports'\n\nimport {\n  PluggableElementType,\n  PluggableElementMember,\n} from './pluggableElementTypes'\nimport { AbstractRootModel } from './util'\nimport CorePlugin from './CorePlugin'\nimport createJexlInstance from './util/jexl'\nimport { PluginDefinition } from './PluginLoader'\n\n// helper class that keeps groups of callbacks that are then run in a specified\n// order by group\nclass PhasedScheduler<PhaseName extends string> {\n  phaseCallbacks = new Map<PhaseName, Function[]>()\n\n  phaseOrder: PhaseName[] = []\n\n  constructor(...phaseOrder: PhaseName[]) {\n    this.phaseOrder = phaseOrder\n  }\n\n  add(phase: PhaseName, callback: Function) {\n    if (!this.phaseOrder.includes(phase)) {\n      throw new Error(`unknown phase ${phase}`)\n    }\n    let phaseCallbacks = this.phaseCallbacks.get(phase)\n    if (!phaseCallbacks) {\n      phaseCallbacks = []\n      this.phaseCallbacks.set(phase, phaseCallbacks)\n    }\n    phaseCallbacks.push(callback)\n  }\n\n  run() {\n    this.phaseOrder.forEach(phaseName => {\n      this.phaseCallbacks.get(phaseName)?.forEach(callback => callback())\n    })\n  }\n}\n\ntype PluggableElementTypeGroup =\n  | 'renderer'\n  | 'adapter'\n  | 'display'\n  | 'track'\n  | 'connection'\n  | 'view'\n  | 'widget'\n  | 'rpc method'\n  | 'internet account'\n  | 'text search adapter'\n  | 'add track workflow'\n\n/** internal class that holds the info for a certain element type */\nclass TypeRecord<ElementClass extends PluggableElementBase> {\n  registeredTypes: Record<string, ElementClass> = {}\n\n  constructor(\n    public typeName: string,\n    public baseClass:\n      | (new (...args: unknown[]) => ElementClass)\n      // covers abstract class case\n      | (Function & {\n          prototype: ElementClass\n        }),\n  ) {}\n\n  add(name: string, t: ElementClass) {\n    this.registeredTypes[name] = t\n  }\n\n  has(name: string) {\n    return name in this.registeredTypes\n  }\n\n  get(name: string) {\n    if (!this.has(name)) {\n      throw new Error(\n        `${this.typeName} '${name}' not found, perhaps its plugin is not loaded or its plugin has not added it.`,\n      )\n    }\n    return this.registeredTypes[name]\n  }\n\n  all() {\n    return Object.values(this.registeredTypes)\n  }\n}\n\ntype AnyFunction = (...args: any) => any\n\n/**\n * free-form string-to-unknown mapping of metadata related to the instance of\n * this plugin. `isCore` is typically set to `Boolean(true)` if the plugin was\n * loaded as part of the \"core\" set of plugins for this application. Can also\n * use this metadata to stash other things about why the plugin is loaded, such\n * as where it came from, what plugin depends on it, etc.\n */\nexport type PluginMetadata = Record<string, unknown>\n\nexport interface PluginLoadRecord {\n  metadata?: PluginMetadata\n  plugin: Plugin\n}\nexport interface RuntimePluginLoadRecord extends PluginLoadRecord {\n  definition: PluginDefinition\n}\n\nexport default class PluginManager {\n  plugins: Plugin[] = []\n\n  jexl = createJexlInstance()\n\n  pluginMetadata: Record<string, PluginMetadata> = {}\n\n  runtimePluginDefinitions: PluginDefinition[] = []\n\n  elementCreationSchedule = new PhasedScheduler<PluggableElementTypeGroup>(\n    'renderer',\n    'adapter',\n    'text search adapter',\n    'display',\n    'track',\n    'connection',\n    'view',\n    'widget',\n    'rpc method',\n    'internet account',\n    'add track workflow',\n  ) as PhasedScheduler<PluggableElementTypeGroup> | undefined\n\n  rendererTypes = new TypeRecord('RendererType', RendererType)\n\n  adapterTypes = new TypeRecord('AdapterType', AdapterType)\n\n  textSearchAdapterTypes = new TypeRecord(\n    'TextSearchAdapterType',\n    TextSearchAdapterType,\n  )\n\n  trackTypes = new TypeRecord('TrackType', TrackType)\n\n  displayTypes = new TypeRecord('DisplayType', DisplayType)\n\n  connectionTypes = new TypeRecord('ConnectionType', ConnectionType)\n\n  viewTypes = new TypeRecord('ViewType', ViewType)\n\n  widgetTypes = new TypeRecord('WidgetType', WidgetType)\n\n  rpcMethods = new TypeRecord('RpcMethodType', RpcMethodType)\n\n  addTrackWidgets = new TypeRecord('AddTrackWorkflow', AddTrackWorkflowType)\n\n  internetAccountTypes = new TypeRecord(\n    'InternetAccountType',\n    InternetAccountType,\n  )\n\n  configured = false\n\n  rootModel?: AbstractRootModel\n\n  extensionPoints = new Map<string, Function[]>()\n\n  constructor(initialPlugins: (Plugin | PluginLoadRecord)[] = []) {\n    // add the core plugin\n    this.addPlugin({\n      plugin: new CorePlugin(),\n      metadata: {\n        isCore: true,\n      },\n    })\n\n    // add all the initial plugins\n    initialPlugins.forEach(plugin => {\n      this.addPlugin(plugin)\n    })\n  }\n\n  pluginConfigurationSchemas() {\n    const configurationSchemas: Record<string, unknown> = {}\n    this.plugins.forEach(plugin => {\n      if (plugin.configurationSchema) {\n        configurationSchemas[plugin.name] = plugin.configurationSchema\n      }\n    })\n    return configurationSchemas\n  }\n\n  addPlugin(load: Plugin | PluginLoadRecord | RuntimePluginLoadRecord) {\n    if (this.configured) {\n      throw new Error('JBrowse already configured, cannot add plugins')\n    }\n\n    // check for availability of 'install' and 'configure' as a proxy for being\n    // an 'instanceof Plugin'\n    const [plugin, metadata = {}] =\n      'install' in load && 'configure' in load\n        ? [load, {}]\n        : [load.plugin, load.metadata]\n\n    if (this.plugins.includes(plugin)) {\n      throw new Error('plugin already installed')\n    }\n\n    this.pluginMetadata[plugin.name] = metadata\n    if ('definition' in load) {\n      this.runtimePluginDefinitions.push(load.definition)\n    }\n    plugin.install(this)\n    this.plugins.push(plugin)\n    return this\n  }\n\n  getPlugin(name: string) {\n    return this.plugins.find(p => p.name === name)\n  }\n\n  hasPlugin(name: string) {\n    return this.getPlugin(name) !== undefined\n  }\n\n  createPluggableElements() {\n    // run the creation callbacks for each element type in order.\n    // see elementCreationSchedule above for the creation order\n    if (this.elementCreationSchedule) {\n      this.elementCreationSchedule.run()\n      this.elementCreationSchedule = undefined\n    }\n    return this\n  }\n\n  setRootModel(rootModel: AbstractRootModel) {\n    this.rootModel = rootModel\n  }\n\n  configure() {\n    if (this.configured) {\n      throw new Error('already configured')\n    }\n\n    this.plugins.forEach(plugin => {\n      plugin.configure(this)\n    })\n\n    this.configured = true\n\n    return this\n  }\n\n  getElementTypeRecord(\n    groupName: PluggableElementTypeGroup,\n  ): TypeRecord<PluggableElementBase> {\n    switch (groupName) {\n      case 'adapter':\n        return this.adapterTypes\n      case 'text search adapter':\n        return this.textSearchAdapterTypes\n      case 'connection':\n        return this.connectionTypes\n      case 'widget':\n        return this.widgetTypes\n      case 'renderer':\n        return this.rendererTypes\n      case 'display':\n        return this.displayTypes\n      case 'track':\n        return this.trackTypes\n      case 'view':\n        return this.viewTypes\n      case 'rpc method':\n        return this.rpcMethods\n      case 'internet account':\n        return this.internetAccountTypes\n      case 'add track workflow':\n        return this.addTrackWidgets\n      default:\n        throw new Error(`invalid element type '${groupName}'`)\n    }\n  }\n\n  addElementType(\n    groupName: PluggableElementTypeGroup,\n    creationCallback: (pluginManager: PluginManager) => PluggableElementType,\n  ) {\n    if (typeof creationCallback !== 'function') {\n      throw new Error(\n        'must provide a callback function that returns the new type object',\n      )\n    }\n    const typeRecord = this.getElementTypeRecord(groupName)\n\n    this.elementCreationSchedule?.add(groupName, () => {\n      const newElement = creationCallback(this)\n      if (!newElement.name) {\n        throw new Error(`cannot add a ${groupName} with no name`)\n      }\n\n      if (typeRecord.has(newElement.name)) {\n        throw new Error(\n          `${groupName} ${newElement.name} already registered, cannot register it again`,\n        )\n      }\n\n      typeRecord.add(\n        newElement.name,\n        this.evaluateExtensionPoint(\n          'Core-extendPluggableElement',\n          newElement,\n        ) as PluggableElementType,\n      )\n    })\n\n    return this\n  }\n\n  getElementType(groupName: PluggableElementTypeGroup, typeName: string) {\n    return this.getElementTypeRecord(groupName).get(typeName)\n  }\n\n  getElementTypesInGroup(groupName: PluggableElementTypeGroup) {\n    return this.getElementTypeRecord(groupName).all()\n  }\n\n  getTrackElements() {\n    return this.getElementTypesInGroup('track') as TrackType[]\n  }\n\n  getConnectionElements() {\n    return this.getElementTypesInGroup('connection') as ConnectionType[]\n  }\n\n  getAddTrackWorkflowElements() {\n    return this.getElementTypesInGroup(\n      'add track workflow',\n    ) as AddTrackWorkflowType[]\n  }\n\n  getRpcElements() {\n    return this.getElementTypesInGroup('rpc method') as RpcMethodType[]\n  }\n\n  getDisplayElements() {\n    return this.getElementTypesInGroup('display') as DisplayType[]\n  }\n\n  getAdapterElements() {\n    return this.getElementTypesInGroup('adapter') as AdapterType[]\n  }\n\n  /** get a MST type for the union of all specified pluggable MST types */\n  pluggableMstType(\n    groupName: PluggableElementTypeGroup,\n    fieldName: PluggableElementMember,\n    fallback: IAnyType = types.maybe(types.null),\n  ) {\n    const pluggableTypes = this.getElementTypeRecord(groupName)\n      .all()\n      // @ts-expect-error\n      .map(t => t[fieldName])\n      .filter(t => isType(t) && isModelType(t)) as IAnyType[]\n\n    // try to smooth over the case when no types are registered, mostly\n    // encountered in tests\n    if (pluggableTypes.length === 0 && typeof jest === 'undefined') {\n      console.warn(\n        `No pluggable types found matching ('${groupName}','${fieldName}')`,\n      )\n      return fallback\n    }\n    return types.union(...pluggableTypes)\n  }\n\n  /** get a MST type for the union of all specified pluggable config schemas */\n  pluggableConfigSchemaType(\n    typeGroup: PluggableElementTypeGroup,\n    fieldName: PluggableElementMember = 'configSchema',\n  ) {\n    const pluggableTypes = this.getElementTypeRecord(typeGroup)\n      .all()\n      // @ts-expect-error\n      .map(t => t[fieldName])\n      .filter(t => isBareConfigurationSchemaType(t)) as IAnyType[]\n\n    if (pluggableTypes.length === 0) {\n      pluggableTypes.push(ConfigurationSchema('Null', {}))\n    }\n    return types.union(...pluggableTypes) as IAnyModelType\n  }\n\n  jbrequireCache = new Map()\n\n  lib = ReExports\n\n  load = <FTYPE extends AnyFunction>(lib: FTYPE): ReturnType<FTYPE> => {\n    if (!this.jbrequireCache.has(lib)) {\n      this.jbrequireCache.set(lib, lib(this))\n    }\n    return this.jbrequireCache.get(lib)\n  }\n\n  /**\n   * Get the re-exported version of the given package name.\n   * Throws an error if the package is not re-exported by the plugin manager.\n   *\n   * @returns the library's default export\n   */\n  jbrequire = (\n    lib: keyof typeof ReExports | AnyFunction | { default: AnyFunction },\n  ): any => {\n    if (typeof lib === 'string') {\n      const pack = this.lib[lib]\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!pack) {\n        throw new TypeError(\n          `No jbrequire re-export defined for package '${lib}'. If this package must be shared between plugins, add it to ReExports.js. If it does not need to be shared, just import it normally.`,\n        )\n      }\n      return pack\n    }\n\n    if (typeof lib === 'function') {\n      return this.load(lib)\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (lib.default) {\n      return this.jbrequire(lib.default)\n    }\n\n    throw new TypeError(\n      'lib passed to jbrequire must be either a string or a function',\n    )\n  }\n\n  getRendererType(typeName: string) {\n    return this.rendererTypes.get(typeName)\n  }\n\n  getRendererTypes(): RendererType[] {\n    return this.rendererTypes.all()\n  }\n\n  getAdapterType(typeName: string) {\n    return this.adapterTypes.get(typeName)\n  }\n\n  getTextSearchAdapterType(typeName: string) {\n    return this.textSearchAdapterTypes.get(typeName)\n  }\n\n  getTrackType(typeName: string) {\n    return this.trackTypes.get(typeName)\n  }\n\n  getDisplayType(typeName: string) {\n    return this.displayTypes.get(typeName)\n  }\n\n  getViewType(typeName: string) {\n    return this.viewTypes.get(typeName)\n  }\n\n  getAddTrackWorkflow(typeName: string) {\n    return this.addTrackWidgets.get(typeName)\n  }\n\n  getWidgetType(typeName: string) {\n    return this.widgetTypes.get(typeName)\n  }\n\n  getConnectionType(typeName: string) {\n    return this.connectionTypes.get(typeName)\n  }\n\n  getRpcMethodType(methodName: string) {\n    return this.rpcMethods.get(methodName)\n  }\n\n  getInternetAccountType(name: string) {\n    return this.internetAccountTypes.get(name)\n  }\n\n  addRendererType(cb: (pm: PluginManager) => RendererType) {\n    return this.addElementType('renderer', cb)\n  }\n\n  addAdapterType(cb: (pm: PluginManager) => AdapterType) {\n    return this.addElementType('adapter', cb)\n  }\n\n  addTextSearchAdapterType(cb: (pm: PluginManager) => TextSearchAdapterType) {\n    return this.addElementType('text search adapter', cb)\n  }\n\n  addTrackType(cb: (pm: PluginManager) => TrackType) {\n    // Goes through the already-created displays and registers the ones that\n    // specify this track type\n    const callback = () => {\n      const track = cb(this)\n      const displays = this.getElementTypesInGroup('display') as DisplayType[]\n      displays.forEach(display => {\n        // track may have already added the displayType in its cb\n        if (\n          display.trackType === track.name &&\n          !track.displayTypes.includes(display)\n        ) {\n          track.addDisplayType(display)\n        }\n      })\n      return track\n    }\n    return this.addElementType('track', callback)\n  }\n\n  addDisplayType(cb: (pluginManager: PluginManager) => DisplayType) {\n    return this.addElementType('display', cb)\n  }\n\n  addViewType(cb: (pluginManager: PluginManager) => ViewType) {\n    const callback = () => {\n      const newView = cb(this)\n      const displays = this.getElementTypesInGroup('display') as DisplayType[]\n      displays.forEach(display => {\n        // view may have already added the displayType in its callback\n        // see ViewType for description of extendedName\n        if (\n          (display.viewType === newView.name ||\n            display.viewType === newView.extendedName) &&\n          !newView.displayTypes.includes(display)\n        ) {\n          newView.addDisplayType(display)\n        }\n      })\n      return newView\n    }\n    return this.addElementType('view', callback)\n  }\n\n  addWidgetType(cb: (pm: PluginManager) => WidgetType) {\n    return this.addElementType('widget', cb)\n  }\n\n  addConnectionType(cb: (pm: PluginManager) => ConnectionType) {\n    return this.addElementType('connection', cb)\n  }\n\n  addRpcMethod(cb: (pm: PluginManager) => RpcMethodType) {\n    return this.addElementType('rpc method', cb)\n  }\n\n  addInternetAccountType(cb: (pm: PluginManager) => InternetAccountType) {\n    return this.addElementType('internet account', cb)\n  }\n\n  addAddTrackWorkflowType(cb: (pm: PluginManager) => AddTrackWorkflowType) {\n    return this.addElementType('add track workflow', cb)\n  }\n\n  addToExtensionPoint<T>(\n    extensionPointName: string,\n    callback: (extendee: T, props: Record<string, unknown>) => T,\n  ) {\n    let callbacks = this.extensionPoints.get(extensionPointName)\n    if (!callbacks) {\n      callbacks = []\n      this.extensionPoints.set(extensionPointName, callbacks)\n    }\n    callbacks.push(callback)\n  }\n\n  evaluateExtensionPoint(\n    extensionPointName: string,\n    extendee: unknown,\n    props?: Record<string, unknown>,\n  ) {\n    const callbacks = this.extensionPoints.get(extensionPointName)\n    let accumulator = extendee\n    if (callbacks) {\n      for (const callback of callbacks) {\n        try {\n          accumulator = callback(accumulator, props)\n        } catch (error) {\n          console.error(error)\n        }\n      }\n    }\n    return accumulator\n  }\n\n  async evaluateAsyncExtensionPoint(\n    extensionPointName: string,\n    extendee: unknown,\n    props?: Record<string, unknown>,\n  ) {\n    const callbacks = this.extensionPoints.get(extensionPointName)\n    let accumulator = extendee\n    if (callbacks) {\n      for (const callback of callbacks) {\n        try {\n          accumulator = await callback(accumulator, props)\n        } catch (error) {\n          console.error(error)\n        }\n      }\n    }\n    return accumulator\n  }\n}\n","/**\n * Used by plugin build systems to determine if a module is provided by JBrowse\n * globally and thus doesn't need to be bundled. A check in ./modules.tsx makes\n * sure this is in sync with the re-exported modules.\n */\nexport default [\n  'mobx',\n  'mobx-state-tree',\n  'react',\n  'react/jsx-runtime',\n  'react-dom',\n  'mobx-react',\n  '@mui/x-data-grid',\n  '@mui/material/utils',\n  '@material-ui/core/utils',\n  'tss-react/mui',\n  '@material-ui/core',\n  '@mui/material',\n\n  '@mui/material/styles',\n  '@material-ui/core/styles',\n  '@material-ui/core/Accordion',\n  '@material-ui/core/AccordionActions',\n  '@material-ui/core/AccordionDetails',\n  '@material-ui/core/Alert',\n  '@material-ui/core/AlertTitle',\n  '@material-ui/core/Autocomplete',\n  '@material-ui/core/Avatar',\n  '@material-ui/core/AvatarGroup',\n  '@material-ui/core/Backdrop',\n  '@material-ui/core/Badge',\n  '@material-ui/core/Box',\n  '@material-ui/core/Breadcrumbs',\n  '@material-ui/core/Button',\n  '@material-ui/core/ButtonGroup',\n  '@material-ui/core/Card',\n  '@material-ui/core/CardActions',\n  '@material-ui/core/CardActionArea',\n  '@material-ui/core/CardContent',\n  '@material-ui/core/CardHeader',\n  '@material-ui/core/CardMedia',\n  '@material-ui/core/CircularProgress',\n  '@material-ui/core/Collapse',\n  '@material-ui/core/ClickAwayListener',\n  '@material-ui/core/Chip',\n  '@material-ui/core/Checkbox',\n  '@material-ui/core/Container',\n  '@material-ui/core/Dialog',\n  '@material-ui/core/DialogActions',\n  '@material-ui/core/DialogTitle',\n  '@material-ui/core/DialogContent',\n  '@material-ui/core/DialogContentText',\n  '@material-ui/core/Divider',\n  '@material-ui/core/Drawer',\n  '@material-ui/core/Fab',\n  '@material-ui/core/Fade',\n  '@material-ui/core/FilledInput',\n  '@material-ui/core/FormLabel',\n  '@material-ui/core/FormControl',\n  '@material-ui/core/FormControlLabel',\n  '@material-ui/core/FormHelperText',\n  '@material-ui/core/FormGroup',\n  '@material-ui/core/Grid',\n  '@material-ui/core/Grow',\n  '@material-ui/core/Icon',\n  '@material-ui/core/IconButton',\n  '@material-ui/core/Input',\n  '@material-ui/core/InputBase',\n  '@material-ui/core/InputLabel',\n  '@material-ui/core/InputAdornment',\n  '@material-ui/core/Link',\n  '@material-ui/core/LinearProgress',\n  '@material-ui/core/List',\n  '@material-ui/core/ListItem',\n  '@material-ui/core/ListItemAvatar',\n  '@material-ui/core/ListItemSecondaryAction',\n  '@material-ui/core/ListItemIcon',\n  '@material-ui/core/ListSubheader',\n  '@material-ui/core/ListItemText',\n  '@material-ui/core/Menu',\n  '@material-ui/core/MenuItem',\n  '@material-ui/core/MenuList',\n  '@material-ui/core/Modal',\n  '@material-ui/core/NativeSelect',\n  '@material-ui/core/OutlinedInput',\n  '@material-ui/core/Pagination',\n  '@material-ui/core/PaginationItem',\n  '@material-ui/core/Paper',\n  '@material-ui/core/Popover',\n  '@material-ui/core/Popper',\n  '@material-ui/core/Portal',\n  '@material-ui/core/Radio',\n  '@material-ui/core/RadioGroup',\n  '@material-ui/core/Rating',\n  '@material-ui/core/ScopedCssBaseline',\n  '@material-ui/core/Select',\n  '@material-ui/core/Skeleton',\n  '@material-ui/core/Slider',\n  '@material-ui/core/Snackbar',\n  '@material-ui/core/SnackbarContent',\n  '@material-ui/core/SpeedDial',\n  '@material-ui/core/SpeedDialAction',\n  '@material-ui/core/SpeedDialIcon',\n  '@material-ui/core/Stack',\n  '@material-ui/core/Step',\n  '@material-ui/core/StepButton',\n  '@material-ui/core/StepConnector',\n  '@material-ui/core/StepLabel',\n  '@material-ui/core/StepIcon',\n  '@material-ui/core/Stepper',\n  '@material-ui/core/SvgIcon',\n  '@material-ui/core/Switch',\n  '@material-ui/core/Tab',\n  '@material-ui/core/Table',\n  '@material-ui/core/TableBody',\n  '@material-ui/core/TableCell',\n  '@material-ui/core/TableContainer',\n  '@material-ui/core/TableFooter',\n  '@material-ui/core/TableHead',\n  '@material-ui/core/TablePagination',\n  '@material-ui/core/TableRow',\n  '@material-ui/core/TableSortLabel',\n  '@material-ui/core/Tabs',\n  '@material-ui/core/TextField',\n  '@material-ui/core/TextareaAutosize',\n  '@material-ui/core/ToggleButton',\n  '@material-ui/core/ToggleButtonGroup',\n  '@material-ui/core/Toolbar',\n  '@material-ui/core/Tooltip',\n  '@material-ui/core/Typography',\n  '@mui/material/Accordion',\n  '@mui/material/AccordionActions',\n  '@mui/material/AccordionDetails',\n  '@mui/material/Alert',\n  '@mui/material/AlertTitle',\n  '@mui/material/Autocomplete',\n  '@mui/material/Avatar',\n  '@mui/material/AvatarGroup',\n  '@mui/material/Backdrop',\n  '@mui/material/Badge',\n  '@mui/material/Box',\n  '@mui/material/Breadcrumbs',\n  '@mui/material/Button',\n  '@mui/material/ButtonGroup',\n  '@mui/material/Card',\n  '@mui/material/CardActions',\n  '@mui/material/CardActionArea',\n  '@mui/material/CardContent',\n  '@mui/material/CardHeader',\n  '@mui/material/CardMedia',\n  '@mui/material/CircularProgress',\n  '@mui/material/Collapse',\n  '@mui/material/ClickAwayListener',\n  '@mui/material/Chip',\n  '@mui/material/Checkbox',\n  '@mui/material/Container',\n  '@mui/material/Dialog',\n  '@mui/material/DialogActions',\n  '@mui/material/DialogTitle',\n  '@mui/material/DialogContent',\n  '@mui/material/DialogContentText',\n  '@mui/material/Divider',\n  '@mui/material/Drawer',\n  '@mui/material/Fab',\n  '@mui/material/Fade',\n  '@mui/material/FilledInput',\n  '@mui/material/FormLabel',\n  '@mui/material/FormControl',\n  '@mui/material/FormControlLabel',\n  '@mui/material/FormHelperText',\n  '@mui/material/FormGroup',\n  '@mui/material/Grid',\n  '@mui/material/Grow',\n  '@mui/material/Icon',\n  '@mui/material/IconButton',\n  '@mui/material/Input',\n  '@mui/material/InputBase',\n  '@mui/material/InputLabel',\n  '@mui/material/InputAdornment',\n  '@mui/material/Link',\n  '@mui/material/LinearProgress',\n  '@mui/material/List',\n  '@mui/material/ListItem',\n  '@mui/material/ListItemAvatar',\n  '@mui/material/ListItemSecondaryAction',\n  '@mui/material/ListItemIcon',\n  '@mui/material/ListSubheader',\n  '@mui/material/ListItemText',\n  '@mui/material/Menu',\n  '@mui/material/MenuItem',\n  '@mui/material/MenuList',\n  '@mui/material/Modal',\n  '@mui/material/NativeSelect',\n  '@mui/material/OutlinedInput',\n  '@mui/material/Pagination',\n  '@mui/material/PaginationItem',\n  '@mui/material/Paper',\n  '@mui/material/Popover',\n  '@mui/material/Popper',\n  '@mui/material/Portal',\n  '@mui/material/Radio',\n  '@mui/material/RadioGroup',\n  '@mui/material/Rating',\n  '@mui/material/ScopedCssBaseline',\n  '@mui/material/Select',\n  '@mui/material/Skeleton',\n  '@mui/material/Slider',\n  '@mui/material/Snackbar',\n  '@mui/material/SnackbarContent',\n  '@mui/material/SpeedDial',\n  '@mui/material/SpeedDialAction',\n  '@mui/material/SpeedDialIcon',\n  '@mui/material/Stack',\n  '@mui/material/Step',\n  '@mui/material/StepButton',\n  '@mui/material/StepConnector',\n  '@mui/material/StepLabel',\n  '@mui/material/StepIcon',\n  '@mui/material/Stepper',\n  '@mui/material/SvgIcon',\n  '@mui/material/Switch',\n  '@mui/material/Tab',\n  '@mui/material/Table',\n  '@mui/material/TableBody',\n  '@mui/material/TableCell',\n  '@mui/material/TableContainer',\n  '@mui/material/TableFooter',\n  '@mui/material/TableHead',\n  '@mui/material/TablePagination',\n  '@mui/material/TableRow',\n  '@mui/material/TableSortLabel',\n  '@mui/material/Tabs',\n  '@mui/material/TextField',\n  '@mui/material/TextareaAutosize',\n  '@mui/material/ToggleButton',\n  '@mui/material/ToggleButtonGroup',\n  '@mui/material/Toolbar',\n  '@mui/material/Tooltip',\n  '@mui/material/Typography',\n  '@material-ui/lab/ToggleButton',\n  '@material-ui/lab/ToggleButtonGroup',\n  '@material-ui/lab/Autocomplete',\n  '@material-ui/lab/Alert',\n  '@material-ui/lab',\n  '@jbrowse/core/Plugin',\n  '@jbrowse/core/pluggableElementTypes',\n  '@jbrowse/core/pluggableElementTypes/ViewType',\n  '@jbrowse/core/pluggableElementTypes/AdapterType',\n  '@jbrowse/core/pluggableElementTypes/DisplayType',\n  '@jbrowse/core/pluggableElementTypes/TrackType',\n  '@jbrowse/core/pluggableElementTypes/WidgetType',\n\n  '@jbrowse/core/pluggableElementTypes/models',\n  '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType',\n  '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType',\n  '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType',\n  '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType',\n  '@jbrowse/core/pluggableElementTypes/renderers/RendererType',\n  '@jbrowse/core/configuration',\n  '@jbrowse/core/util/types/mst',\n  '@jbrowse/core/ui',\n  '@jbrowse/core/util',\n  '@jbrowse/core/util/color',\n  '@jbrowse/core/util/layouts',\n  '@jbrowse/core/util/tracks',\n  '@jbrowse/core/util/Base1DViewModel',\n  '@jbrowse/core/util/io',\n  '@jbrowse/core/util/mst-reflection',\n  '@jbrowse/core/util/rxjs',\n  '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail',\n  '@jbrowse/core/data_adapters/BaseAdapter',\n]\n","/* eslint-disable react-refresh/only-export-components */\n// this is all the stuff that the pluginManager re-exports for plugins to use\nimport React, { lazy, LazyExoticComponent, Suspense } from 'react'\nimport * as ReactJSXRuntime from 'react/jsx-runtime'\nimport * as ReactDom from 'react-dom'\nimport * as mobx from 'mobx'\nimport * as mst from 'mobx-state-tree'\nimport * as mxreact from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\nimport * as MUIStyles from '@mui/material/styles'\nimport * as MUIUtils from '@mui/material/utils'\nimport { useTheme } from '@mui/material'\nimport {\n  useGridApiContext,\n  useGridApiRef,\n  useGridRootProps,\n} from '@mui/x-data-grid'\n\n// material-ui lab\nimport * as BaseAdapterExports from '../data_adapters/BaseAdapter'\n\nimport Base1DView from '../util/Base1DViewModel'\nimport * as pluggableElementTypes from '../pluggableElementTypes'\nimport ViewType from '../pluggableElementTypes/ViewType'\nimport AdapterType from '../pluggableElementTypes/AdapterType'\nimport DisplayType from '../pluggableElementTypes/DisplayType'\nimport TrackType from '../pluggableElementTypes/TrackType'\nimport WidgetType from '../pluggableElementTypes/WidgetType'\n\nimport * as pluggableElementTypeModels from '../pluggableElementTypes/models'\nimport * as ServerSideRendererType from '../pluggableElementTypes/renderers/ServerSideRendererType'\nimport CircularChordRendererType from '../pluggableElementTypes/renderers/CircularChordRendererType'\nimport * as BoxRendererType from '../pluggableElementTypes/renderers/BoxRendererType'\nimport * as FeatureRendererType from '../pluggableElementTypes/renderers/FeatureRendererType'\nimport * as RendererType from '../pluggableElementTypes/renderers/RendererType'\n\nimport * as Configuration from '../configuration'\nimport Plugin from '../Plugin'\nimport * as coreUi from '../ui'\nimport * as coreUtil from '../util'\nimport * as coreColor from '../util/color'\nimport * as coreLayouts from '../util/layouts'\nimport * as trackUtils from '../util/tracks'\nimport * as coreIo from '../util/io'\nimport * as coreMstReflection from '../util/mst-reflection'\nimport * as rxjs from '../util/rxjs'\nimport * as mstTypes from '../util/types/mst'\n\nimport reExportsList from './list'\n\nconst Entries = {\n  Accordion: lazy(() => import('@mui/material/Accordion')),\n  AccordionActions: lazy(() => import('@mui/material/AccordionActions')),\n  AccordionDetails: lazy(() => import('@mui/material/AccordionDetails')),\n  Alert: lazy(() => import('@mui/material/Alert')),\n  AlertTitle: lazy(() => import('@mui/material/AlertTitle')),\n  Autocomplete: lazy(() => import('@mui/material/Autocomplete')),\n  Avatar: lazy(() => import('@mui/material/Avatar')),\n  AvatarGroup: lazy(() => import('@mui/material/AvatarGroup')),\n  Backdrop: lazy(() => import('@mui/material/Backdrop')),\n  Badge: lazy(() => import('@mui/material/Badge')),\n  Box: lazy(() => import('@mui/material/Box')),\n  Breadcrumbs: lazy(() => import('@mui/material/Breadcrumbs')),\n  Button: lazy(() => import('@mui/material/Button')),\n  ButtonGroup: lazy(() => import('@mui/material/ButtonGroup')),\n  Card: lazy(() => import('@mui/material/Card')),\n  CardActions: lazy(() => import('@mui/material/CardActions')),\n  CardActionArea: lazy(() => import('@mui/material/CardActionArea')),\n  CardContent: lazy(() => import('@mui/material/CardContent')),\n  CardHeader: lazy(() => import('@mui/material/CardHeader')),\n  CardMedia: lazy(() => import('@mui/material/CardMedia')),\n  CircularProgress: lazy(() => import('@mui/material/CircularProgress')),\n  Collapse: lazy(() => import('@mui/material/Collapse')),\n  ClickAwayListener: lazy(() => import('@mui/material/ClickAwayListener')),\n  Chip: lazy(() => import('@mui/material/Chip')),\n  Checkbox: lazy(() => import('@mui/material/Checkbox')),\n  Container: lazy(() => import('@mui/material/Container')),\n  Dialog: lazy(() => import('@mui/material/Dialog')),\n  DialogActions: lazy(() => import('@mui/material/DialogActions')),\n  DialogTitle: lazy(() => import('@mui/material/DialogTitle')),\n  DialogContent: lazy(() => import('@mui/material/DialogContent')),\n  DialogContentText: lazy(() => import('@mui/material/DialogContentText')),\n  Divider: lazy(() => import('@mui/material/Divider')),\n  Drawer: lazy(() => import('@mui/material/Drawer')),\n  Fab: lazy(() => import('@mui/material/Fab')),\n  Fade: lazy(() => import('@mui/material/Fade')),\n  FilledInput: lazy(() => import('@mui/material/FilledInput')),\n  FormLabel: lazy(() => import('@mui/material/FormLabel')),\n  FormControl: lazy(() => import('@mui/material/FormControl')),\n  FormControlLabel: lazy(() => import('@mui/material/FormControlLabel')),\n  FormHelperText: lazy(() => import('@mui/material/FormHelperText')),\n  FormGroup: lazy(() => import('@mui/material/FormGroup')),\n  Grid: lazy(() => import('@mui/material/Grid')),\n  Grow: lazy(() => import('@mui/material/Grow')),\n  Icon: lazy(() => import('@mui/material/Icon')),\n  IconButton: lazy(() => import('@mui/material/IconButton')),\n  Input: lazy(() => import('@mui/material/Input')),\n  InputBase: lazy(() => import('@mui/material/InputBase')),\n  InputLabel: lazy(() => import('@mui/material/InputLabel')),\n  InputAdornment: lazy(() => import('@mui/material/InputAdornment')),\n  Link: lazy(() => import('@mui/material/Link')),\n  LinearProgress: lazy(() => import('@mui/material/LinearProgress')),\n  List: lazy(() => import('@mui/material/List')),\n  ListItem: lazy(() => import('@mui/material/ListItem')),\n  ListItemAvatar: lazy(() => import('@mui/material/ListItemAvatar')),\n  ListItemSecondaryAction: lazy(\n    () => import('@mui/material/ListItemSecondaryAction'),\n  ),\n  ListItemIcon: lazy(() => import('@mui/material/ListItemIcon')),\n  ListSubheader: lazy(() => import('@mui/material/ListSubheader')),\n  ListItemText: lazy(() => import('@mui/material/ListItemText')),\n  Menu: lazy(() => import('@mui/material/Menu')),\n  MenuItem: lazy(() => import('@mui/material/MenuItem')),\n  MenuList: lazy(() => import('@mui/material/MenuList')),\n  Modal: lazy(() => import('@mui/material/Modal')),\n  NativeSelect: lazy(() => import('@mui/material/NativeSelect')),\n  OutlinedInput: lazy(() => import('@mui/material/OutlinedInput')),\n  Pagination: lazy(() => import('@mui/material/Pagination')),\n  PaginationItem: lazy(() => import('@mui/material/PaginationItem')),\n  Paper: lazy(() => import('@mui/material/Paper')),\n  Popover: lazy(() => import('@mui/material/Popover')),\n  Popper: lazy(() => import('@mui/material/Popper')),\n  Portal: lazy(() => import('@mui/material/Portal')),\n  Radio: lazy(() => import('@mui/material/Radio')),\n  RadioGroup: lazy(() => import('@mui/material/RadioGroup')),\n  Rating: lazy(() => import('@mui/material/Rating')),\n  ScopedCssBaseline: lazy(() => import('@mui/material/ScopedCssBaseline')),\n  Select: lazy(() => import('@mui/material/Select')),\n  Skeleton: lazy(() => import('@mui/material/Skeleton')),\n  Slider: lazy(() => import('@mui/material/Slider')),\n  Snackbar: lazy(() => import('@mui/material/Snackbar')),\n  SnackbarContent: lazy(() => import('@mui/material/SnackbarContent')),\n  SpeedDial: lazy(() => import('@mui/material/SpeedDial')),\n  SpeedDialAction: lazy(() => import('@mui/material/SpeedDialAction')),\n  SpeedDialIcon: lazy(() => import('@mui/material/SpeedDialIcon')),\n  Stack: lazy(() => import('@mui/material/Stack')),\n  Step: lazy(() => import('@mui/material/Step')),\n  StepButton: lazy(() => import('@mui/material/StepButton')),\n  StepConnector: lazy(() => import('@mui/material/StepConnector')),\n  StepLabel: lazy(() => import('@mui/material/StepLabel')),\n  StepIcon: lazy(() => import('@mui/material/StepIcon')),\n  Stepper: lazy(() => import('@mui/material/Stepper')),\n  SvgIcon: lazy(() => import('@mui/material/SvgIcon')),\n  Switch: lazy(() => import('@mui/material/Switch')),\n  Tab: lazy(() => import('@mui/material/Tab')),\n  Table: lazy(() => import('@mui/material/Table')),\n  TableBody: lazy(() => import('@mui/material/TableBody')),\n  TableCell: lazy(() => import('@mui/material/TableCell')),\n  TableContainer: lazy(() => import('@mui/material/TableContainer')),\n  TableFooter: lazy(() => import('@mui/material/TableFooter')),\n  TableHead: lazy(() => import('@mui/material/TableHead')),\n  TablePagination: lazy(() => import('@mui/material/TablePagination')),\n  TableRow: lazy(() => import('@mui/material/TableRow')),\n  TableSortLabel: lazy(() => import('@mui/material/TableSortLabel')),\n  Tabs: lazy(() => import('@mui/material/Tabs')),\n  TextField: lazy(() => import('@mui/material/TextField')),\n  TextareaAutosize: lazy(() => import('@mui/material/TextareaAutosize')),\n  ToggleButton: lazy(() => import('@mui/material/ToggleButton')),\n  ToggleButtonGroup: lazy(() => import('@mui/material/ToggleButtonGroup')),\n  Toolbar: lazy(() => import('@mui/material/Toolbar')),\n  Tooltip: lazy(() => import('@mui/material/Tooltip')),\n  Typography: lazy(() => import('@mui/material/Typography')),\n}\n\nconst LazyMUICore = Object.fromEntries(\n  Object.entries(Entries).map(([key, ReactComponent]) => {\n    const Component = React.forwardRef((props: any, ref) => (\n      <Suspense fallback={null}>\n        <ReactComponent {...props} ref={ref} />\n      </Suspense>\n    ))\n    Component.displayName = key\n    return [key, Component]\n  }),\n)\n\nconst MaterialPrefixMUI = Object.fromEntries(\n  Object.entries(LazyMUICore).map(([key, value]) => [\n    `@material-ui/core/${key}`,\n    value,\n  ]),\n)\n\nconst MuiPrefixMUI = Object.fromEntries(\n  Object.entries(LazyMUICore).map(([key, value]) => [\n    `@mui/material/${key}`,\n    value,\n  ]),\n)\n\nconst Attributes = lazy(() => import('./Attributes'))\nconst FeatureDetails = lazy(() => import('./FeatureDetails'))\nconst BaseCard = lazy(() => import('./BaseCard'))\n\nconst DataGridEntries: Record<string, LazyExoticComponent<any>> = {\n  DataGrid: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({ default: module.DataGrid })),\n  ),\n  GridActionsCellItem: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridActionsCellItem,\n    })),\n  ),\n  GridAddIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridAddIcon,\n    })),\n  ),\n  GridArrowDownwardIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridArrowDownwardIcon,\n    })),\n  ),\n  GridArrowUpwardIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridArrowUpwardIcon,\n    })),\n  ),\n  GridCellCheckboxForwardRef: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridCellCheckboxForwardRef,\n    })),\n  ),\n  GridCellCheckboxRenderer: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridCellCheckboxRenderer,\n    })),\n  ),\n  GridCheckCircleIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridCheckCircleIcon,\n    })),\n  ),\n  GridCheckIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridCheckIcon,\n    })),\n  ),\n  GridCloseIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridCloseIcon,\n    })),\n  ),\n  GridColumnHeaderSeparator: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridColumnHeaderSeparator,\n    })),\n  ),\n  GridColumnHeaderSortIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridColumnHeaderSortIcon,\n    })),\n  ),\n  GridColumnIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridColumnIcon,\n    })),\n  ),\n  GridColumnMenu: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridColumnMenu,\n    })),\n  ),\n  GridColumnMenuContainer: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridColumnMenuContainer,\n    })),\n  ),\n  GridDragIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridDragIcon,\n    })),\n  ),\n  GridExpandMoreIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridExpandMoreIcon,\n    })),\n  ),\n  GridFilterAltIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridFilterAltIcon,\n    })),\n  ),\n  GridFilterForm: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridFilterForm,\n    })),\n  ),\n  GridFilterListIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridFilterListIcon,\n    })),\n  ),\n  GridFilterPanel: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridFilterPanel,\n    })),\n  ),\n  GridFooter: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({ default: module.GridFooter })),\n  ),\n  GridFooterContainer: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridFooterContainer,\n    })),\n  ),\n  GridHeader: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({ default: module.GridHeader })),\n  ),\n  GridHeaderCheckbox: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridHeaderCheckbox,\n    })),\n  ),\n  GridKeyboardArrowRight: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridKeyboardArrowRight,\n    })),\n  ),\n  GridLoadIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridLoadIcon,\n    })),\n  ),\n  GridLoadingOverlay: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridLoadingOverlay,\n    })),\n  ),\n  GridMenuIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridMenuIcon,\n    })),\n  ),\n  GridMoreVertIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridMoreVertIcon,\n    })),\n  ),\n  GridNoRowsOverlay: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridNoRowsOverlay,\n    })),\n  ),\n  GridOverlay: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridOverlay,\n    })),\n  ),\n  GridPagination: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridPagination,\n    })),\n  ),\n  GridPanel: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({ default: module.GridPanel })),\n  ),\n  GridPanelWrapper: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridPanelWrapper,\n    })),\n  ),\n  GridRemoveIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridRemoveIcon,\n    })),\n  ),\n  GridRoot: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({ default: module.GridRoot })),\n  ),\n  GridRowCount: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridRowCount,\n    })),\n  ),\n  GridSaveAltIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridSaveAltIcon,\n    })),\n  ),\n  GridSearchIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridSearchIcon,\n    })),\n  ),\n  GridSelectedRowCount: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridSelectedRowCount,\n    })),\n  ),\n  GridSeparatorIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridSeparatorIcon,\n    })),\n  ),\n  GridTableRowsIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridTableRowsIcon,\n    })),\n  ),\n  GridToolbar: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbar,\n    })),\n  ),\n  GridToolbarColumnsButton: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarColumnsButton,\n    })),\n  ),\n  GridToolbarContainer: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarContainer,\n    })),\n  ),\n  GridToolbarDensitySelector: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarDensitySelector,\n    })),\n  ),\n  GridToolbarExport: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarExport,\n    })),\n  ),\n  GridToolbarExportContainer: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarExportContainer,\n    })),\n  ),\n  GridToolbarFilterButton: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridToolbarFilterButton,\n    })),\n  ),\n  GridTripleDotsVerticalIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridTripleDotsVerticalIcon,\n    })),\n  ),\n  GridViewHeadlineIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridViewHeadlineIcon,\n    })),\n  ),\n  GridViewStreamIcon: lazy(() =>\n    import('@mui/x-data-grid').then(module => ({\n      default: module.GridViewStreamIcon,\n    })),\n  ),\n}\n\nconst LazyDataGridComponents = Object.fromEntries(\n  Object.entries(DataGridEntries).map(([key, ReactComponent]) => {\n    const Component = React.forwardRef((props: any, ref) => (\n      <Suspense fallback={null}>\n        <ReactComponent {...props} ref={ref} />\n      </Suspense>\n    ))\n    Component.displayName = key\n    return [key, Component]\n  }),\n)\n\nconst LazyAttributes = React.forwardRef((props: any, ref) => (\n  <Suspense fallback={null}>\n    <Attributes {...props} ref={ref} />\n  </Suspense>\n))\nLazyAttributes.displayName = 'Attributes'\n\nconst LazyFeatureDetails = React.forwardRef((props: any, ref) => (\n  <Suspense fallback={null}>\n    <FeatureDetails {...props} ref={ref} />\n  </Suspense>\n))\nLazyFeatureDetails.displayName = 'FeatureDetails'\n\nconst LazyBaseCard = React.forwardRef((props: any, ref) => (\n  <Suspense fallback={null}>\n    <BaseCard {...props} ref={ref} />\n  </Suspense>\n))\nLazyBaseCard.displayName = 'BaseCard'\n\nconst libs = {\n  mobx,\n  'mobx-state-tree': mst,\n  react: React,\n  'react/jsx-runtime': ReactJSXRuntime,\n  'react-dom': ReactDom,\n  'mobx-react': mxreact,\n  '@mui/x-data-grid': {\n    useGridApiContext,\n    useGridApiRef,\n    useGridRootProps,\n    ...LazyDataGridComponents,\n  },\n\n  // special case so plugins can easily use @mui/icons-material; don't remove\n  '@mui/material/utils': MUIUtils,\n  '@material-ui/core/utils': MUIUtils,\n  'tss-react/mui': { makeStyles },\n\n  '@material-ui/core': {\n    ...LazyMUICore,\n    useTheme,\n    alpha: MUIStyles.alpha,\n\n    makeStyles: (args: any) => {\n      const useStyles = makeStyles()(args)\n      return () => useStyles().classes\n    },\n  },\n  '@mui/material': {\n    ...LazyMUICore,\n    alpha: MUIStyles.alpha,\n    useTheme: MUIStyles.useTheme,\n  },\n\n  // end special case\n  // material-ui subcomponents, should get rid of these\n  '@mui/material/styles': {\n    MUIStyles,\n\n    makeStyles: (args: any) => {\n      const useStyles = makeStyles()(args)\n      return () => useStyles().classes\n    },\n  },\n  '@material-ui/core/styles': {\n    MUIStyles,\n\n    makeStyles: (args: any) => {\n      const useStyles = makeStyles()(args)\n      return () => useStyles().classes\n    },\n  },\n  ...MaterialPrefixMUI,\n  ...MuiPrefixMUI,\n\n  // these are core in @mui/material, but used to be in @material-ui/lab\n  '@material-ui/lab/ToggleButton': Entries.ToggleButton,\n  '@material-ui/lab/ToggleButtonGroup': Entries.ToggleButtonGroup,\n  '@material-ui/lab/Autocomplete': Entries.Autocomplete,\n  '@material-ui/lab/Alert': Entries.Alert,\n  '@material-ui/lab': {\n    Alert: Entries.Alert,\n    Autocomplete: Entries.Autocomplete,\n    ToggleButton: Entries.ToggleButton,\n    ToggleButtonGroup: Entries.ToggleButtonGroup,\n  },\n\n  '@jbrowse/core/Plugin': Plugin,\n  '@jbrowse/core/pluggableElementTypes': pluggableElementTypes,\n  '@jbrowse/core/pluggableElementTypes/ViewType': ViewType,\n  '@jbrowse/core/pluggableElementTypes/AdapterType': AdapterType,\n  '@jbrowse/core/pluggableElementTypes/DisplayType': DisplayType,\n  '@jbrowse/core/pluggableElementTypes/TrackType': TrackType,\n  '@jbrowse/core/pluggableElementTypes/WidgetType': WidgetType,\n  '@jbrowse/core/pluggableElementTypes/models': pluggableElementTypeModels,\n  '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType':\n    ServerSideRendererType,\n  '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType':\n    CircularChordRendererType,\n  '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType':\n    BoxRendererType,\n  '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType':\n    FeatureRendererType,\n  '@jbrowse/core/pluggableElementTypes/renderers/RendererType': RendererType,\n  '@jbrowse/core/configuration': Configuration,\n  '@jbrowse/core/util/types/mst': mstTypes,\n  '@jbrowse/core/ui': coreUi,\n  '@jbrowse/core/util': coreUtil,\n  '@jbrowse/core/util/color': coreColor,\n  '@jbrowse/core/util/layouts': coreLayouts,\n  '@jbrowse/core/util/tracks': trackUtils,\n  '@jbrowse/core/util/Base1DViewModel': Base1DView,\n  '@jbrowse/core/util/io': coreIo,\n  '@jbrowse/core/util/mst-reflection': coreMstReflection,\n  '@jbrowse/core/util/rxjs': rxjs,\n\n  '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail': {\n    Attributes: LazyAttributes,\n    FeatureDetails: LazyFeatureDetails,\n    BaseCard: LazyBaseCard,\n  },\n  '@jbrowse/core/data_adapters/BaseAdapter': BaseAdapterExports,\n}\n\nconst libsList = Object.keys(libs)\n\n// make sure that all the items in the ReExports/list array (used by build\n// systems and such) are included here, and vice versa\nconst inLibsOnly = libsList.filter(mod => !reExportsList.includes(mod))\nif (inLibsOnly.length > 0) {\n  throw new Error(\n    `The following modules are in the modules libs, but not the re-exports list: ${inLibsOnly.join(\n      ', ',\n    )}`,\n  )\n}\nconst inReExportsOnly = reExportsList.filter(mod => !libsList.includes(mod))\nif (inReExportsOnly.length) {\n  throw new Error(\n    `The following modules are in the re-exports list, but not the modules libs: ${inReExportsOnly.join(\n      ', ',\n    )}`,\n  )\n}\n\nexport default libs\n","import React from 'react'\nimport TextSearchAdapterType from '../pluggableElementTypes/TextSearchAdapterType'\nimport { SearchType } from '../data_adapters/BaseAdapter'\n\nexport interface BaseResultArgs {\n  label: string\n\n  displayString?: string\n\n  renderingComponent?: React.ReactElement\n\n  matchedAttribute?: string\n\n  matchedObject?: object\n\n  textSearchAdapter?: TextSearchAdapterType\n\n  relevance?: SearchType\n\n  locString?: string\n\n  refName?: string\n\n  trackId?: string\n\n  score?: number\n\n  results?: BaseResult[]\n}\n\nexport default class BaseResult {\n  label: string\n\n  renderingComponent?: React.ReactElement\n\n  displayString?: string\n\n  matchedAttribute?: string\n\n  matchedObject?: object\n\n  textSearchAdapter?: TextSearchAdapterType\n\n  relevance?: SearchType\n\n  trackId?: string\n\n  score: number\n\n  locString?: string\n\n  results?: BaseResult[]\n  constructor(args: BaseResultArgs) {\n    this.label = args.label\n    this.locString = args.locString\n    this.renderingComponent = args.renderingComponent\n    this.displayString = args.displayString\n    this.matchedAttribute = args.matchedAttribute\n    this.matchedObject = args.matchedObject\n    this.textSearchAdapter = args.textSearchAdapter\n    this.relevance = args.relevance\n    this.trackId = args.trackId\n    this.score = args.score || 1\n    this.results = args.results || []\n  }\n\n  getLabel() {\n    return this.label\n  }\n\n  getDisplayString() {\n    return this.displayString || this.label\n  }\n\n  getRenderingComponent() {\n    return this.renderingComponent\n  }\n\n  getTrackId() {\n    return this.trackId\n  }\n\n  getScore() {\n    return this.score\n  }\n\n  updateScore(newScore: number) {\n    this.score = newScore\n    return this.score\n  }\n\n  getId() {\n    return `${this.getLabel()}-${this.getLocation()}-${this.getTrackId()}`\n  }\n\n  hasLocation() {\n    return !!this.locString\n  }\n\n  getLocation() {\n    return this.locString\n  }\n\n  getComboResults() {\n    return this.results\n  }\n}\n\nexport class RefSequenceResult extends BaseResult {\n  refName: string\n\n  constructor(args: BaseResultArgs) {\n    super(args)\n    this.refName = args.refName ?? ''\n  }\n\n  getLocation() {\n    return this.refName\n  }\n}\n","import BaseResult from './BaseResults'\nimport PluginManager from '../PluginManager'\nimport QuickLRU from '../util/QuickLRU'\nimport {\n  BaseTextSearchAdapter,\n  BaseTextSearchArgs,\n} from '../data_adapters/BaseAdapter'\nimport { readConfObject, AnyConfigurationModel } from '../configuration'\n\nexport interface SearchScope {\n  includeAggregateIndexes: boolean\n  assemblyName: string\n  tracks?: string[]\n}\n\nexport default class TextSearchManager {\n  adapterCache = new QuickLRU<string, BaseTextSearchAdapter>({\n    maxSize: 15,\n  })\n\n  constructor(public pluginManager: PluginManager) {}\n\n  loadTextSearchAdapters(searchScope: SearchScope) {\n    return Promise.all(\n      this.relevantAdapters(searchScope).map(async conf => {\n        const adapterId = readConfObject(conf, 'textSearchAdapterId')\n        const r = this.adapterCache.get(adapterId)\n        if (r) {\n          return r\n        } else {\n          const adapterType = this.pluginManager.getTextSearchAdapterType(\n            conf.type,\n          )!\n          const AdapterClass = await adapterType.getAdapterClass()\n          const adapterInstance = new AdapterClass(\n            conf,\n            undefined,\n            this.pluginManager,\n          ) as BaseTextSearchAdapter\n          this.adapterCache.set(adapterId, adapterInstance)\n          return adapterInstance\n        }\n      }),\n    )\n  }\n\n  relevantAdapters(searchScope: SearchScope) {\n    const rootModel = this.pluginManager.rootModel\n    const { aggregateTextSearchAdapters } = rootModel?.jbrowse as {\n      aggregateTextSearchAdapters: AnyConfigurationModel[]\n    }\n    const { tracks } = rootModel?.session as {\n      tracks: AnyConfigurationModel[]\n    }\n\n    const { assemblyName } = searchScope\n\n    return [\n      ...this.getAdaptersWithAssembly(\n        assemblyName,\n        aggregateTextSearchAdapters,\n      ),\n      ...this.getTrackAdaptersWithAssembly(assemblyName, tracks),\n    ]\n  }\n\n  getAdaptersWithAssembly(\n    assemblyName: string,\n    confs: AnyConfigurationModel[],\n  ): AnyConfigurationModel[] {\n    return confs.filter(c =>\n      readConfObject(c, 'assemblyNames')?.includes(assemblyName),\n    )\n  }\n\n  getTrackAdaptersWithAssembly(\n    assemblyName: string,\n    confs: AnyConfigurationModel[],\n  ) {\n    return confs\n      .filter(conf =>\n        readConfObject(conf, [\n          'textSearching',\n          'textSearchAdapter',\n          'assemblyNames',\n        ])?.includes(assemblyName),\n      )\n      .map(\n        conf => conf.textSearching.textSearchAdapter as AnyConfigurationModel,\n      )\n  }\n\n  /**\n   * Returns list of relevant results given a search query and options\n   *\n   * @param args - search options/arguments include: search query limit of\n   * results to return, searchType...prefix | full | exact\", etc.\n   */\n  async search(\n    args: BaseTextSearchArgs,\n    searchScope: SearchScope,\n    rankFn: (results: BaseResult[]) => BaseResult[],\n  ) {\n    const adapters = await this.loadTextSearchAdapters(searchScope)\n    const results = await Promise.all(adapters.map(a => a.searchIndex(args)))\n    return this.sortResults(results.flat(), rankFn)\n  }\n\n  /**\n   * Returns array of revelevant and sorted results\n   * @param results - array of results from all text search adapters\n   * @param rankFn - function that updates results scores\n   * based on more relevance\n   */\n  sortResults(\n    results: BaseResult[],\n    rankFn: (results: BaseResult[]) => BaseResult[],\n  ) {\n    return rankFn(\n      results.sort((a, b) => -b.getLabel().localeCompare(a.getLabel())),\n    ).sort((r1, r2) => r1.getScore() - r2.getScore())\n  }\n}\n","import { types, IAnyModelType, IAnyComplexType } from 'mobx-state-tree'\nimport { stringToJexlExpression } from '../util/jexlStrings'\nimport { FileLocation } from '../util/types/mst'\nimport { getEnv } from '../util'\n\nfunction isValidColorString(/* str */) {\n  // TODO: check all the crazy cases for whether it's a valid HTML/CSS color string\n  return true\n}\nconst typeModels: Record<string, any> = {\n  stringArray: types.array(types.string),\n  stringArrayMap: types.map(types.array(types.string)),\n  numberMap: types.map(types.number),\n  boolean: types.boolean,\n  color: types.refinement('Color', types.string, isValidColorString),\n  integer: types.integer,\n  number: types.number,\n  string: types.string,\n  text: types.string,\n  fileLocation: FileLocation,\n  frozen: types.frozen(),\n}\n\n// default values we use if the defaultValue is malformed or does not work\nconst fallbackDefaults: Record<string, any> = {\n  stringArray: [],\n  stringArrayMap: {},\n  numberMap: {},\n  boolean: true,\n  color: 'black',\n  integer: 1,\n  number: 1,\n  string: '',\n  text: '',\n  fileLocation: { uri: '/path/to/resource.txt', locationType: 'UriLocation' },\n  frozen: {},\n}\n\nconst literalJSON = (self: { value: any }) => ({\n  views: {\n    get valueJSON() {\n      return self.value\n    },\n  },\n})\n\nconst objectJSON = (self: { value: any }) => ({\n  views: {\n    get valueJSON() {\n      return JSON.stringify(self.value)\n    },\n  },\n})\n\n// custom actions for modifying the value models\nconst typeModelExtensions: Record<string, (self: any) => any> = {\n  fileLocation: objectJSON,\n  number: literalJSON,\n  integer: literalJSON,\n  boolean: literalJSON,\n  frozen: objectJSON,\n  // special actions for working with stringArray slots\n  stringArray: (self: { value: string[] }) => ({\n    views: {\n      get valueJSON() {\n        return JSON.stringify(self.value)\n      },\n    },\n    actions: {\n      add(val: string) {\n        self.value.push(val)\n      },\n      removeAtIndex(idx: number) {\n        self.value.splice(idx, 1)\n      },\n      setAtIndex(idx: number, val: string) {\n        self.value[idx] = val\n      },\n    },\n  }),\n  stringArrayMap: (self: { value: Map<string, string[]> }) => ({\n    views: {\n      get valueJSON() {\n        return JSON.stringify(self.value)\n      },\n    },\n    actions: {\n      add(key: string, val: any) {\n        self.value.set(key, val)\n      },\n      remove(key: string) {\n        self.value.delete(key)\n      },\n      addToKey(key: string, val: string) {\n        const ar = self.value.get(key)\n        if (!ar) {\n          throw new Error(`${key} not found`)\n        }\n        ar.push(val)\n      },\n      removeAtKeyIndex(key: string, idx: number) {\n        const ar = self.value.get(key)\n        if (!ar) {\n          throw new Error(`${key} not found`)\n        }\n        ar.splice(idx, 1)\n      },\n      setAtKeyIndex(key: string, idx: number, val: string) {\n        const ar = self.value.get(key)\n        if (!ar) {\n          throw new Error(`${key} not found`)\n        }\n        ar[idx] = val\n      },\n    },\n  }),\n  numberMap: (self: { value: Map<string, number> }) => ({\n    views: {\n      get valueJSON() {\n        return JSON.stringify(self.value)\n      },\n    },\n    actions: {\n      add(key: string, val: number) {\n        self.value.set(key, val)\n      },\n      remove(key: string) {\n        self.value.delete(key)\n      },\n    },\n  }),\n}\n\n// const FunctionStringType = types.refinement(\n//   'FunctionString',\n//   types.string,\n//   str => functionRegexp.test(str),\n// )\n\nconst JexlStringType = types.refinement('JexlString', types.string, str =>\n  str.startsWith('jexl:'),\n)\nfunction json(value: any) {\n  return value?.toJSON ? value.toJSON() : `\"${value}\"`\n}\nexport interface ConfigSlotDefinition {\n  /** human-readable description of the slot's meaning */\n  description?: string\n  /** custom base MST model for the slot's value */\n  model?: IAnyModelType | IAnyComplexType\n  /** name of the type of slot, e.g. \"string\", \"number\", \"stringArray\" */\n  type: string\n  /** default value of the slot */\n  defaultValue: any\n  /** parameter names of the function callback */\n  contextVariable?: string[]\n}\n\n/**\n * builds a MST model for a configuration slot\n *\n * @param slotName -\n * @param  definition -\n */\nexport default function ConfigSlot(\n  slotName: string,\n  {\n    description = '',\n    model,\n    type,\n    defaultValue,\n    contextVariable = [],\n  }: ConfigSlotDefinition,\n) {\n  if (!type) {\n    throw new Error('type name required')\n  }\n  if (!model) {\n    model = typeModels[type]\n  }\n  if (!model) {\n    throw new Error(\n      `no builtin config slot type \"${type}\", and no 'model' param provided`,\n    )\n  }\n\n  if (defaultValue === undefined) {\n    throw new Error(\"no 'defaultValue' provided\")\n  }\n\n  // if the `type` is something like `color`, then the model name\n  // here will be `ColorConfigSlot`\n  const configSlotModelName = `${slotName\n    .charAt(0)\n    .toUpperCase()}${slotName.slice(1)}ConfigSlot`\n  let slot = types\n    .model(configSlotModelName, {\n      name: types.literal(slotName),\n      description: types.literal(description),\n      type: types.literal(type),\n      value: types.optional(types.union(JexlStringType, model), defaultValue),\n    })\n    .volatile(() => ({\n      contextVariable,\n    }))\n    .views(self => ({\n      get isCallback() {\n        return String(self.value).startsWith('jexl:')\n      },\n    }))\n    .views(self => ({\n      get expr() {\n        if (self.isCallback) {\n          // compile as jexl function\n          const { pluginManager } = getEnv(self)\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          if (!pluginManager && typeof jest === 'undefined') {\n            console.warn(\n              'no pluginManager detected on config env (if you dynamically instantiate a config, for example in renderProps for your display model, check that you add the env argument)',\n            )\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          return stringToJexlExpression(String(self.value), pluginManager?.jexl)\n        }\n        return { evalSync: () => self.value }\n      },\n\n      // JS representation of the value of this slot, suitable\n      // for embedding in either JSON or a JS function string.\n      // many of the data types override this in typeModelExtensions\n      get valueJSON(): any[] | Record<string, any> | string | undefined {\n        if (self.isCallback) {\n          return undefined\n        }\n\n        return json(self.value)\n      },\n    }))\n    .preProcessSnapshot(val =>\n      typeof val === 'object' && val.name === slotName\n        ? val\n        : {\n            name: slotName,\n            description,\n            type,\n            value: val,\n          },\n    )\n    .postProcessSnapshot(snap => {\n      if (typeof snap.value === 'object') {\n        return JSON.stringify(snap.value) !== JSON.stringify(defaultValue)\n          ? snap.value\n          : undefined\n      }\n      return snap.value !== defaultValue ? snap.value : undefined\n    })\n    .actions(self => ({\n      set(newVal: any) {\n        self.value = newVal\n      },\n      reset() {\n        self.value = defaultValue\n      },\n      convertToCallback() {\n        if (self.isCallback) {\n          return\n        }\n        self.value = `jexl:${self.valueJSON || \"''\"}`\n      },\n      convertToValue() {\n        if (!self.isCallback) {\n          return\n        }\n        // try calling it with no arguments\n        try {\n          const funcResult = self.expr.evalSync()\n          if (funcResult !== undefined) {\n            self.value = funcResult\n            return\n          }\n        } catch (e) {\n          /* ignore */\n        }\n        self.value = defaultValue\n        // if it is still a callback (happens if the defaultValue is a\n        // callback), then use the last-resort fallback default\n        // if defaultValue has jexl: string, run this part\n        if (!(type in fallbackDefaults)) {\n          throw new Error(`no fallbackDefault defined for type ${type}`)\n        }\n        self.value = fallbackDefaults[type]\n      },\n    }))\n\n  // if there are any type-specific extensions (views or actions)\n  //  to the slot, add those in\n  if (typeModelExtensions[type]) {\n    slot = slot.extend(typeModelExtensions[type])\n  }\n\n  const completeModel = types.optional(slot, {\n    name: slotName,\n    type,\n    description,\n    value: defaultValue,\n  })\n  const m = completeModel\n  Object.defineProperty(m, 'isJBrowseConfigurationSlot', { value: true })\n  return m\n}\n","import {\n  types,\n  isStateTreeNode,\n  isType,\n  isLateType,\n  getSnapshot,\n  IAnyType,\n  SnapshotOut,\n} from 'mobx-state-tree'\n\nimport { ElementId } from '../util/types/mst'\n\nimport ConfigSlot, { ConfigSlotDefinition } from './configurationSlot'\nimport { isConfigurationSchemaType } from './util'\nimport { AnyConfigurationSchemaType } from './types'\n\nexport type {\n  AnyConfigurationSchemaType,\n  AnyConfigurationModel,\n  AnyConfigurationSlot,\n  AnyConfigurationSlotType,\n} from './types'\n\nfunction isEmptyObject(thing: unknown) {\n  return (\n    typeof thing === 'object' &&\n    !Array.isArray(thing) &&\n    thing !== null &&\n    Object.keys(thing).length === 0\n  )\n}\n\nfunction isEmptyArray(thing: unknown) {\n  return Array.isArray(thing) && thing.length === 0\n}\n\nexport interface ConfigurationSchemaDefinition {\n  [n: string]:\n    | ConfigSlotDefinition\n    | ConfigurationSchemaDefinition\n    | string\n    | number\n    | IAnyType\n}\n\nexport interface ConfigurationSchemaOptions<\n  BASE_SCHEMA extends AnyConfigurationSchemaType | undefined,\n  EXPLICIT_IDENTIFIER extends string | undefined,\n> {\n  explicitlyTyped?: boolean\n  explicitIdentifier?: EXPLICIT_IDENTIFIER\n  implicitIdentifier?: string | boolean\n  baseConfiguration?: BASE_SCHEMA\n\n  actions?: (self: unknown) => any\n  views?: (self: unknown) => any\n  extend?: (self: unknown) => any\n  preProcessSnapshot?: (\n    snapshot: Record<string, unknown>,\n  ) => Record<string, unknown>\n}\n\nfunction preprocessConfigurationSchemaArguments(\n  modelName: string,\n  inputSchemaDefinition: ConfigurationSchemaDefinition,\n  inputOptions: ConfigurationSchemaOptions<any, any> = {},\n) {\n  if (typeof modelName !== 'string') {\n    throw new Error(\n      'first arg must be string name of the model that this config schema goes with',\n    )\n  }\n\n  // if we have a base configuration schema that we are\n  // extending, grab the slot definitions from that\n  let schemaDefinition = inputSchemaDefinition\n  let options = inputOptions\n  if (inputOptions.baseConfiguration?.jbrowseSchemaDefinition) {\n    schemaDefinition = {\n      ...inputOptions.baseConfiguration.jbrowseSchemaDefinition,\n      ...schemaDefinition,\n    }\n    options = {\n      ...inputOptions.baseConfiguration.jbrowseSchemaOptions,\n      ...inputOptions,\n    }\n    options.baseConfiguration = undefined\n  }\n  return { schemaDefinition, options }\n}\n\nfunction makeConfigurationSchemaModel<\n  DEFINITION extends ConfigurationSchemaDefinition,\n  OPTIONS extends ConfigurationSchemaOptions<any, any>,\n>(modelName: string, schemaDefinition: DEFINITION, options: OPTIONS) {\n  // now assemble the MST model of the configuration schema\n  const modelDefinition: Record<string, any> = {}\n  let identifier: string | undefined\n\n  if (options.explicitlyTyped) {\n    modelDefinition.type = types.optional(types.literal(modelName), modelName)\n  }\n\n  if (options.explicitIdentifier && options.implicitIdentifier) {\n    throw new Error(\n      `Cannot have both explicit and implicit identifiers in ${modelName}`,\n    )\n  }\n  if (options.explicitIdentifier) {\n    if (typeof options.explicitIdentifier === 'string') {\n      modelDefinition[options.explicitIdentifier] = types.identifier\n      identifier = options.explicitIdentifier\n    } else {\n      modelDefinition.id = types.identifier\n      identifier = 'id'\n    }\n  } else if (options.implicitIdentifier) {\n    if (typeof options.implicitIdentifier === 'string') {\n      modelDefinition[options.implicitIdentifier] = ElementId\n      identifier = options.implicitIdentifier\n    } else {\n      modelDefinition.id = ElementId\n      identifier = 'id'\n    }\n  }\n\n  const volatileConstants: Record<string, any> = {\n    isJBrowseConfigurationSchema: true,\n    jbrowseSchema: {\n      modelName,\n      definition: schemaDefinition,\n      options,\n    },\n  }\n  Object.entries(schemaDefinition).forEach(([slotName, slotDefinition]) => {\n    if (\n      (isType(slotDefinition) && isLateType(slotDefinition)) ||\n      isConfigurationSchemaType(slotDefinition)\n    ) {\n      // this is either an MST late() type (which we assume to be a sub-configuration),\n      // or an actual sub-configuration\n      modelDefinition[slotName] = slotDefinition\n    } else if (\n      typeof slotDefinition === 'string' ||\n      typeof slotDefinition === 'number'\n    ) {\n      volatileConstants[slotName] = slotDefinition\n    } else if (typeof slotDefinition === 'object') {\n      // this is a slot definition\n      if (!slotDefinition.type) {\n        throw new Error(`no type set for config slot ${modelName}.${slotName}`)\n      }\n      try {\n        modelDefinition[slotName] = ConfigSlot(\n          slotName,\n          slotDefinition as ConfigSlotDefinition,\n        )\n      } catch (e) {\n        throw new Error(\n          `invalid config slot definition for ${modelName}.${slotName}: ${e}`,\n        )\n      }\n    } else {\n      throw new Error(\n        `invalid configuration schema definition, \"${slotName}\" must be either a valid configuration slot definition, a constant, or a nested configuration schema`,\n      )\n    }\n  })\n\n  let completeModel = types\n    .model(`${modelName}ConfigurationSchema`, modelDefinition)\n    .actions(self => ({\n      setSubschema(slotName: string, data: Record<string, unknown>) {\n        if (!isConfigurationSchemaType(modelDefinition[slotName])) {\n          throw new Error(`${slotName} is not a subschema, cannot replace`)\n        }\n        const newSchema = isStateTreeNode(data)\n          ? data\n          : modelDefinition[slotName].create(data)\n        self[slotName] = newSchema\n        return newSchema\n      },\n    }))\n\n  if (Object.keys(volatileConstants).length) {\n    completeModel = completeModel.volatile((/* self */) => volatileConstants)\n  }\n  if (options.actions) {\n    completeModel = completeModel.actions(options.actions)\n  }\n  if (options.views) {\n    completeModel = completeModel.views(options.views)\n  }\n  if (options.extend) {\n    completeModel = completeModel.extend(options.extend)\n  }\n\n  const identifierDefault = identifier ? { [identifier]: 'placeholderId' } : {}\n  const modelDefault = options.explicitlyTyped\n    ? { type: modelName, ...identifierDefault }\n    : identifierDefault\n\n  const defaultSnap = getSnapshot(completeModel.create(modelDefault))\n  completeModel = completeModel.postProcessSnapshot(snap => {\n    const newSnap: SnapshotOut<typeof completeModel> = {}\n    let matchesDefault = true\n    // let keyCount = 0\n    for (const [key, value] of Object.entries(snap)) {\n      if (matchesDefault) {\n        if (typeof defaultSnap[key] === 'object' && typeof value === 'object') {\n          if (JSON.stringify(defaultSnap[key]) !== JSON.stringify(value)) {\n            matchesDefault = false\n          }\n        } else if (defaultSnap[key] !== value) {\n          matchesDefault = false\n        }\n      }\n      if (\n        value !== undefined &&\n        volatileConstants[key] === undefined &&\n        !isEmptyObject(value) &&\n        !isEmptyArray(value)\n      ) {\n        // keyCount += 1\n        newSnap[key] = value\n      }\n    }\n    if (matchesDefault) {\n      return {}\n    }\n    return newSnap\n  })\n\n  if (options.preProcessSnapshot) {\n    completeModel = completeModel.preProcessSnapshot(options.preProcessSnapshot)\n  }\n\n  return types.optional(completeModel, modelDefault)\n}\n\nexport interface ConfigurationSchemaType<\n  DEFINITION extends ConfigurationSchemaDefinition,\n  OPTIONS extends ConfigurationSchemaOptions<any, any>,\n> extends ReturnType<typeof makeConfigurationSchemaModel<DEFINITION, OPTIONS>> {\n  isJBrowseConfigurationSchema: boolean\n  jbrowseSchemaDefinition: DEFINITION\n  jbrowseSchemaOptions: OPTIONS\n  type: string\n  [key: string]: unknown\n}\n\nexport function ConfigurationSchema<\n  DEFINITION extends ConfigurationSchemaDefinition,\n  OPTIONS extends ConfigurationSchemaOptions<BASE_SCHEMA, EXPLICIT_IDENTIFIER>,\n  BASE_SCHEMA extends AnyConfigurationSchemaType | undefined = undefined,\n  EXPLICIT_IDENTIFIER extends string | undefined = undefined,\n>(\n  modelName: string,\n  inputSchemaDefinition: DEFINITION,\n  inputOptions?: ConfigurationSchemaOptions<BASE_SCHEMA, EXPLICIT_IDENTIFIER>,\n): ConfigurationSchemaType<DEFINITION, OPTIONS> {\n  const { schemaDefinition, options } = preprocessConfigurationSchemaArguments(\n    modelName,\n    inputSchemaDefinition,\n    inputOptions,\n  )\n  const schemaType = makeConfigurationSchemaModel(\n    modelName,\n    schemaDefinition,\n    options,\n  ) as AnyConfigurationSchemaType\n  // saving a couple of jbrowse-specific things in the type object. hope nobody gets mad.\n  schemaType.isJBrowseConfigurationSchema = true\n  schemaType.jbrowseSchemaDefinition = schemaDefinition\n  schemaType.jbrowseSchemaOptions = options\n  return schemaType\n}\n\nexport function ConfigurationReference<\n  SCHEMATYPE extends AnyConfigurationSchemaType,\n>(schemaType: SCHEMATYPE) {\n  // we cast this to SCHEMATYPE, because the reference *should* behave just\n  // like the object it points to. It won't be undefined (this is a\n  // `reference`, not a `safeReference`)\n  return types.union(types.reference(schemaType), schemaType) as SCHEMATYPE\n}\n","import {\n  isStateTreeNode,\n  getSnapshot,\n  getType,\n  isMapType,\n  isType,\n  isUnionType,\n  isOptionalType,\n  isArrayType,\n  isModelType,\n  isLateType,\n} from 'mobx-state-tree'\n\nimport {\n  getUnionSubTypes,\n  getDefaultValue,\n  getSubType,\n  resolveLateType,\n} from '../util/mst-reflection'\n\nimport {\n  AnyConfigurationModel,\n  AnyConfigurationSchemaType,\n  ConfigurationSlotName,\n  ConfigurationSchemaForModel,\n} from './types'\n\n/**\n * given a configuration model (an instance of a ConfigurationSchema),\n * read the configuration variable at the given path\n *\n * @param model - instance of ConfigurationSchema\n * @param slotPaths - array of paths to read\n * @param args - extra arguments e.g. for a feature callback,\n *  will be sent to each of the slotNames\n */\nexport function readConfObject<CONFMODEL extends AnyConfigurationModel>(\n  confObject: CONFMODEL,\n  slotPath?:\n    | ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>\n    | string[],\n  args: Record<string, unknown> = {},\n): any {\n  if (!slotPath) {\n    return JSON.parse(JSON.stringify(getSnapshot(confObject)))\n  }\n  if (typeof slotPath === 'string') {\n    let slot = confObject[slotPath]\n    // check for the subconf being a map if we don't find it immediately\n    if (\n      !slot &&\n      isStateTreeNode(confObject) &&\n      isMapType(getType(confObject))\n    ) {\n      slot = confObject.get(slotPath)\n    }\n    if (!slot) {\n      return undefined\n      // if we want to be very strict about config slots, we could uncomment the below\n      // instead of returning undefined\n      //\n      // const modelType = getType(model)\n      // const schemaType = model.configuration && getType(model.configuration)\n      // throw new Error(\n      //   `no slot \"${slotName}\" found in ${modelType.name} configuration (${\n      //     schemaType.name\n      //   })`,\n      // )\n    }\n\n    const val = slot.expr ? slot.expr.evalSync(args) : slot\n    return isStateTreeNode(val)\n      ? JSON.parse(JSON.stringify(getSnapshot(val)))\n      : val\n  }\n\n  if (Array.isArray(slotPath)) {\n    const slotName = slotPath[0]!\n    if (slotPath.length > 1) {\n      const newPath = slotPath.slice(1)\n      let subConf = confObject[slotName]\n      // check for the subconf being a map if we don't find it immediately\n      if (\n        !subConf &&\n        isStateTreeNode(confObject) &&\n        isMapType(getType(confObject))\n      ) {\n        subConf = confObject.get(slotName)\n      }\n      return subConf ? readConfObject(subConf, newPath, args) : undefined\n    }\n    return readConfObject(\n      confObject,\n      slotName as ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>,\n      args,\n    )\n  }\n  throw new TypeError('slotPath must be a string or array')\n}\n\n/**\n * helper method for readConfObject, reads the config from a mst model\n *\n * @param model - object containing a 'configuration' member\n * @param slotPaths - array of paths to read\n * @param args - extra arguments e.g. for a feature callback,\n *   will be sent to each of the slotNames\n */\nexport function getConf<CONFMODEL extends AnyConfigurationModel>(\n  model: { configuration: CONFMODEL },\n  slotPath?: Parameters<typeof readConfObject<CONFMODEL>>[1],\n  args?: Parameters<typeof readConfObject<CONFMODEL>>[2],\n) {\n  const { configuration } = model\n  if (isConfigurationModel(configuration)) {\n    return readConfObject<CONFMODEL>(configuration, slotPath, args)\n  }\n  throw new TypeError('cannot getConf on this model, it has no configuration')\n}\n\n/**\n * given a union of explicitly typed configuration schema types,\n * extract an array of the type names contained in the union\n *\n * @param unionType -\n * @returns Array of type names contained in the union\n */\nexport function getTypeNamesFromExplicitlyTypedUnion(maybeUnionType: unknown) {\n  if (isType(maybeUnionType)) {\n    maybeUnionType = resolveLateType(maybeUnionType)\n    // @ts-expect-error\n    if (isUnionType(maybeUnionType)) {\n      const typeNames: string[] = []\n      getUnionSubTypes(maybeUnionType).forEach(type => {\n        type = resolveLateType(type)\n        let typeName = getTypeNamesFromExplicitlyTypedUnion(type)\n        if (!typeName.length) {\n          const def = getDefaultValue(type)\n          typeName = [def.type]\n        }\n        if (!typeName[0]) {\n          // debugger\n          throw new Error(`invalid config schema type ${type}`)\n        }\n        typeNames.push(...typeName)\n      })\n      return typeNames\n    }\n  }\n  return []\n}\n\nexport function isBareConfigurationSchemaType(\n  thing: unknown,\n): thing is AnyConfigurationSchemaType {\n  if (isType(thing)) {\n    if (\n      isModelType(thing) &&\n      ('isJBrowseConfigurationSchema' in thing ||\n        thing.name.includes('ConfigurationSchema'))\n    ) {\n      return true\n    }\n    // if it's a late type, assume its a config schema\n    if (isLateType(thing)) {\n      return true\n    }\n  }\n  return false\n}\n\nexport function isConfigurationSchemaType(\n  thing: unknown,\n): thing is AnyConfigurationSchemaType {\n  if (!isType(thing)) {\n    return false\n  }\n\n  // written as a series of if-statements instead of a big logical OR\n  // because this construction gives much better debugging backtraces.\n\n  // also, note that the order of these statements matters, because\n  // for example some union types are also optional types\n\n  if (isBareConfigurationSchemaType(thing)) {\n    return true\n  }\n\n  if (isUnionType(thing)) {\n    return getUnionSubTypes(thing).every(\n      t => isConfigurationSchemaType(t) || t.name === 'undefined',\n    )\n  }\n\n  if (isOptionalType(thing) && isConfigurationSchemaType(getSubType(thing))) {\n    return true\n  }\n\n  if (isArrayType(thing) && isConfigurationSchemaType(getSubType(thing))) {\n    return true\n  }\n\n  if (isMapType(thing) && isConfigurationSchemaType(getSubType(thing))) {\n    return true\n  }\n\n  return false\n}\n\nexport function isConfigurationModel(\n  thing: unknown,\n): thing is AnyConfigurationModel {\n  return isStateTreeNode(thing) && isConfigurationSchemaType(getType(thing))\n}\n\nexport function isConfigurationSlotType(thing: unknown) {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'isJBrowseConfigurationSlot' in thing\n  )\n}\n","import { BaseAdapter } from './BaseAdapter'\nimport { BaseFeatureDataAdapter } from './BaseFeatureDataAdapter'\nimport { BaseRefNameAliasAdapter } from './BaseRefNameAliasAdapter'\nimport { BaseSequenceAdapter } from './BaseSequenceAdapter'\nimport { BaseTextSearchAdapter } from './BaseTextSearchAdapter'\nimport { RegionsAdapter } from './RegionsAdapter'\n\nexport type AnyDataAdapter =\n  | BaseAdapter\n  | BaseFeatureDataAdapter\n  | BaseRefNameAliasAdapter\n  | BaseTextSearchAdapter\n  | RegionsAdapter\n  | BaseSequenceAdapter\n\nexport function isSequenceAdapter(t: AnyDataAdapter): t is BaseSequenceAdapter {\n  return 'getRegions' in t && 'getFeatures' in t\n}\n\nexport function isRegionsAdapter(t: AnyDataAdapter): t is RegionsAdapter {\n  return 'getRegions' in t\n}\n\nexport function isFeatureAdapter(\n  t: AnyDataAdapter,\n): t is BaseFeatureDataAdapter {\n  return 'getFeatures' in t\n}\n\nexport function isRefNameAliasAdapter(t: object): t is BaseRefNameAliasAdapter {\n  return 'getRefNameAliases' in t\n}\n\nexport function isTextSearchAdapter(\n  t: AnyDataAdapter,\n): t is BaseTextSearchAdapter {\n  return 'searchIndex' in t\n}\n","import { isStateTreeNode, getSnapshot } from 'mobx-state-tree'\n\n// locals\nimport { readConfObject, AnyConfigurationModel } from '../../configuration'\nimport { getSubAdapterType } from '../dataAdapterCache'\nimport { AugmentedRegion as Region } from '../../util/types'\nimport idMaker from '../../util/idMaker'\nimport PluginManager from '../../PluginManager'\nimport { ConfigurationSchema } from '../../configuration'\n\nconst EmptyConfig = ConfigurationSchema('empty', {})\n\nexport abstract class BaseAdapter {\n  public id: string\n\n  static capabilities = [] as string[]\n\n  constructor(\n    public config: AnyConfigurationModel = EmptyConfig.create(),\n    public getSubAdapter?: getSubAdapterType,\n    public pluginManager?: PluginManager,\n  ) {\n    // note: we use switch on jest here for more simple feature IDs\n    // in test environment\n    if (typeof jest === 'undefined') {\n      const data = isStateTreeNode(config) ? getSnapshot(config) : config\n      this.id = `${idMaker(data)}`\n    } else {\n      this.id = 'test'\n    }\n  }\n\n  /**\n   * Same as `readConfObject(this.config, arg)`.\n   * Note: Does not offer the same TS type checking as `readConfObject`,\n   * consider using that instead.\n   */\n  getConf(arg: string | string[]) {\n    return readConfObject(this.config, arg)\n  }\n\n  /**\n   * Called to provide a hint that data tied to a certain region will not be\n   * needed for the foreseeable future and can be purged from caches, etc\n   * @param region - Region\n   */\n  public abstract freeResources(region: Region): void\n}\n","import { Observable, firstValueFrom, merge } from 'rxjs'\nimport { toArray } from 'rxjs/operators'\n\n// locals\nimport { BaseAdapter } from './BaseAdapter'\nimport { BaseOptions } from './BaseOptions'\nimport { FeatureDensityStats } from './types'\nimport { ObservableCreate } from '../../util/rxjs'\nimport { checkAbortSignal, sum, max, min } from '../../util'\nimport { Feature } from '../../util/simpleFeature'\nimport { AugmentedRegion as Region } from '../../util/types'\nimport { blankStats, rectifyStats, scoresToStats } from '../../util/stats'\n\n/**\n * Base class for feature adapters to extend. Defines some methods that\n * subclasses must implement.\n */\nexport abstract class BaseFeatureDataAdapter extends BaseAdapter {\n  /**\n   * Get all reference sequence names used in the data source\n   * Example:\n   * public async getRefNames(opts?: BaseOptions): Promise\\<string[]\\> \\}\n   *   await this.setup()\n   *   const \\{ refNames \\} = this.metadata\n   *   return refNames\n   * \\}\n   *\n   *\n   * NOTE: If an adapter is unable to determine the reference sequence names,\n   * the array will be empty\n   * @param opts - Feature adapter options\n   */\n  public abstract getRefNames(opts?: BaseOptions): Promise<string[]>\n\n  /**\n   * Get features from the data source that overlap a region\n   * Example:\n   * public getFeatures(\n   *   region: Region,\n   *   opts: BaseOptions,\n   * ): Observable<Feature> \\{\n   *   return ObservableCreate(observer =\\> \\{\n   *     const records = getRecords(assembly, refName, start, end)\n   *     records.forEach(record =\\> \\{\n   *       observer.next(this.recordToFeature(record))\n   *     \\})\n   *     observer.complete()\n   *   \\})\n   * \\}\n   * @param region - Region\n   * @param opts - Feature adapter options\n   * @returns Observable of Feature objects in the region\n   */\n  public abstract getFeatures(\n    region: Region,\n    opts?: BaseOptions,\n  ): Observable<Feature>\n\n  /**\n   * Return \"header info\" that is fetched from the data file, or other info\n   * that would not simply be in the config of the file. The return value can\n   * be `{tag:string, data: any}[]` e.g. list of tags with their values which\n   * is how VCF,BAM,CRAM return values for getInfo or it can be a nested JSON\n   * object\n   */\n  public async getHeader(_opts?: BaseOptions): Promise<unknown> {\n    return null\n  }\n\n  /**\n   * Return info that is primarily used for interpreting the data that is there,\n   * primarily in reference to being used for augmenting feature details panels\n   */\n  public async getMetadata(_opts?: BaseOptions): Promise<unknown> {\n    return null\n  }\n\n  /**\n   * Checks if the store has data for the given assembly and reference\n   * sequence, and then gets the features in the region if it does.\n   */\n  public getFeaturesInRegion(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const hasData = await this.hasDataForRefName(region.refName, opts)\n      checkAbortSignal(opts.signal)\n      if (!hasData) {\n        observer.complete()\n      } else {\n        this.getFeatures(region, opts).subscribe(observer)\n      }\n    })\n  }\n\n  /**\n   * Checks if the store has data for the given assembly and reference\n   * sequence, and then gets the features in the region if it does.\n   *\n   * Currently this just calls getFeatureInRegion for each region. Adapters that\n   * are frequently called on multiple regions simultaneously may want to\n   * implement a more efficient custom version of this method.\n   *\n   * Currently this just calls getFeatureInRegion for each region. Adapters that\n   * are frequently called on multiple regions simultaneously may want to\n   * implement a more efficient custom version of this method.\n   *\n   * @param regions - Regions\n   * @param opts - Feature adapter options\n   * @returns Observable of Feature objects in the regions\n   */\n  public getFeaturesInMultipleRegions(\n    regions: Region[],\n    opts: BaseOptions = {},\n  ) {\n    return merge(\n      ...regions.map(region => this.getFeaturesInRegion(region, opts)),\n    )\n  }\n\n  /**\n   * Check if the store has data for the given reference name.\n   * @param refName - Name of the reference sequence\n   * @returns Whether data source has data for the given reference name\n   */\n  public async hasDataForRefName(refName: string, opts: BaseOptions = {}) {\n    const refNames = await this.getRefNames(opts)\n    return refNames.includes(refName)\n  }\n\n  /**\n   * Calculates the minimum score, maximum score, and other statistics from\n   * features over a region, primarily used for quantitative tracks\n   */\n  public async getRegionQuantitativeStats(region: Region, opts?: BaseOptions) {\n    const feats = this.getFeatures(region, opts)\n    return scoresToStats(region, feats)\n  }\n  /**\n   * Calculates the minimum score, maximum score, and other statistics from\n   * features over multiple regions, primarily used for quantitative tracks\n   */\n  public async getMultiRegionQuantitativeStats(\n    regions: Region[] = [],\n    opts?: BaseOptions,\n  ) {\n    if (!regions.length) {\n      return blankStats()\n    }\n    const feats = await Promise.all(\n      regions.map(region => this.getRegionQuantitativeStats(region, opts)),\n    )\n\n    const scoreMax = max(feats.map(a => a.scoreMax))\n    const scoreMin = min(feats.map(a => a.scoreMin))\n    const scoreSum = sum(feats.map(a => a.scoreSum))\n    const scoreSumSquares = sum(feats.map(a => a.scoreSumSquares))\n    const featureCount = sum(feats.map(a => a.featureCount))\n    const basesCovered = sum(feats.map(a => a.basesCovered))\n\n    return rectifyStats({\n      scoreMin,\n      scoreMax,\n      featureCount,\n      basesCovered,\n      scoreSumSquares,\n      scoreSum,\n    })\n  }\n\n  /**\n   * Calculates the \"feature density\" of a region. The primary purpose of this\n   * API is to alert the user if they are going to be downloading too much\n   * information, and give them a hint to zoom in to see more. The default\n   * implementation samples from the regions, downloads feature data with\n   * getFeatures, and returns an object with the form \\{featureDensity:number\\}\n   *\n   * Derived classes can override this to return alternative calculations for\n   * featureDensity, or they can also return an object containing a byte size\n   * calculation with the format \\{bytes:number, fetchSizeLimit:number\\} where\n   * fetchSizeLimit is the adapter-defined limit for what it thinks is 'too\n   * much data' (e.g. CRAM and BAM may vary on what they think too much data\n   * is)\n   */\n  getRegionFeatureDensityStats(region: Region, opts?: BaseOptions) {\n    let lastTime = +Date.now()\n    const statsFromInterval = async (length: number, expansionTime: number) => {\n      const { start, end } = region\n      const sampleCenter = start * 0.75 + end * 0.25\n\n      const features = await firstValueFrom(\n        this.getFeatures(\n          {\n            ...region,\n            start: Math.max(0, Math.round(sampleCenter - length / 2)),\n            end: Math.min(Math.round(sampleCenter + length / 2), end),\n          },\n          opts,\n        ).pipe(toArray()),\n      )\n\n      return maybeRecordStats(\n        length,\n        { featureDensity: features.length / length },\n        features.length,\n        expansionTime,\n      )\n    }\n\n    const maybeRecordStats = async (\n      interval: number,\n      stats: FeatureDensityStats,\n      statsSampleFeatures: number,\n      expansionTime: number,\n    ): Promise<FeatureDensityStats> => {\n      const refLen = region.end - region.start\n      if (statsSampleFeatures >= 70 || interval * 2 > refLen) {\n        return stats\n      } else if (expansionTime <= 5000) {\n        const currTime = +Date.now()\n        expansionTime += currTime - lastTime\n        lastTime = currTime\n        return statsFromInterval(interval * 2, expansionTime)\n      } else {\n        console.warn(\n          \"Stats estimation reached timeout, or didn't get enough features\",\n        )\n        return { featureDensity: Number.POSITIVE_INFINITY }\n      }\n    }\n\n    return statsFromInterval(1000, 0)\n  }\n\n  /**\n   * Calculates the \"feature density\" of a set of regions. The primary purpose\n   * of this API is to alert the user if they are going to be downloading too\n   * much information, and give them a hint to zoom in to see more. The default\n   * implementation samples from the regions, downloads feature data with\n   * getFeatures, and returns an object with the form \\{featureDensity:number\\}\n   *\n   * Derived classes can override this to return alternative calculations for\n   * featureDensity, or they can also return an object containing a byte size\n   * calculation with the format \\{bytes:number, fetchSizeLimit:number\\} where\n   * fetchSizeLimit is the adapter-defined limit for what it thinks is 'too\n   * much data' (e.g. CRAM and BAM may vary on what they think too much data\n   * is)\n   */\n  public async getMultiRegionFeatureDensityStats(\n    regions: Region[],\n    opts?: BaseOptions,\n  ) {\n    if (!regions.length) {\n      throw new Error('No regions supplied')\n    }\n    return this.getRegionFeatureDensityStats(regions[0]!, opts)\n  }\n}\n","import { NoAssemblyRegion } from '../../util'\nimport { BaseOptions } from './types'\nimport { RegionsAdapter } from '../BaseAdapter'\nimport { BaseFeatureDataAdapter } from './BaseFeatureDataAdapter'\n\nexport abstract class BaseSequenceAdapter\n  extends BaseFeatureDataAdapter\n  implements RegionsAdapter\n{\n  async getMultiRegionFeatureDensityStats() {\n    return { featureDensity: 0 }\n  }\n\n  /**\n   * Fetches a list of 'regions' with refName, start, and extends\n   */\n  abstract getRegions(opts: BaseOptions): Promise<NoAssemblyRegion[]>\n}\n","import PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport { AnyAdapter } from '../data_adapters/BaseAdapter'\n\nexport interface AdapterMetadata {\n  category?: string\n  hiddenFromGUI?: boolean\n  description?: string\n}\n\nexport default class AdapterType extends PluggableElementBase {\n  getAdapterClass: () => Promise<AnyAdapter>\n\n  configSchema: AnyConfigurationSchemaType\n\n  adapterCapabilities: string[]\n\n  adapterMetadata?: AdapterMetadata\n\n  constructor(\n    stuff: {\n      name: string\n      configSchema: AnyConfigurationSchemaType\n      displayName?: string\n      adapterCapabilities?: string[]\n      adapterMetadata?: AdapterMetadata\n    } & (\n      | {\n          AdapterClass: AnyAdapter\n        }\n      | {\n          getAdapterClass: () => Promise<AnyAdapter>\n        }\n    ),\n  ) {\n    super(stuff)\n    this.getAdapterClass =\n      'AdapterClass' in stuff\n        ? async () => stuff.AdapterClass\n        : stuff.getAdapterClass\n    this.configSchema = stuff.configSchema\n    this.adapterCapabilities = stuff.adapterCapabilities || []\n    this.adapterMetadata = stuff.adapterMetadata\n  }\n}\n","import React from 'react'\nimport { IAnyModelType } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\n\ntype BasicComponent = React.ComponentType<{\n  // TODO: can we use AbstractViewModel here?\n\n  model: any\n}>\ntype AddTrackWorkflowComponentType =\n  | React.LazyExoticComponent<BasicComponent>\n  | BasicComponent\n\nexport default class AddTrackWorkflow extends PluggableElementBase {\n  ReactComponent: AddTrackWorkflowComponentType\n\n  stateModel: IAnyModelType\n\n  constructor(stuff: {\n    name: string\n    ReactComponent: AddTrackWorkflowComponentType\n    stateModel: IAnyModelType\n  }) {\n    super(stuff)\n    this.ReactComponent = stuff.ReactComponent\n    this.stateModel = stuff.stateModel\n  }\n}\n","import { IAnyModelType } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport { AnyReactComponentType } from '../util'\n\nexport default class ConnectionType extends PluggableElementBase {\n  stateModel: IAnyModelType\n\n  configSchema: AnyConfigurationSchemaType\n\n  description: string\n\n  url: string\n\n  configEditorComponent?: AnyReactComponentType\n\n  constructor(stuff: {\n    name: string\n    stateModel: IAnyModelType\n    configSchema: AnyConfigurationSchemaType\n    displayName: string\n    description: string\n    configEditorComponent?: AnyReactComponentType\n    url: string\n  }) {\n    super(stuff)\n    this.stateModel = stuff.stateModel\n    this.configSchema = stuff.configSchema\n    this.description = stuff.description\n    this.url = stuff.url\n    this.configEditorComponent = stuff.configEditorComponent\n  }\n}\n","import { IAnyModelType } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport { AnyReactComponentType } from '../util'\nimport { AnyConfigurationSchemaType } from '../configuration'\n\nexport default class DisplayType extends PluggableElementBase {\n  stateModel: IAnyModelType\n\n  configSchema: AnyConfigurationSchemaType\n\n  ReactComponent: AnyReactComponentType\n\n  /**\n   * The track type the display is associated with\n   */\n  trackType: string\n\n  /*\n   * Indicates that this display type can be a \"sub-display\" of another type of\n   * display, e.g. in AlignmentsDisplay, has Pileup and SNPCoverage subDisplays\n   */\n  subDisplay?: {\n    type: string\n    [key: string]: unknown\n  }\n\n  /**\n   * The view type the display is associated with\n   */\n  viewType: string\n\n  constructor(stuff: {\n    name: string\n    stateModel: IAnyModelType\n    trackType: string\n    viewType: string\n    displayName?: string\n    subDisplay?: { type: string; [key: string]: unknown }\n    configSchema: AnyConfigurationSchemaType\n    ReactComponent: AnyReactComponentType\n  }) {\n    super(stuff)\n    this.stateModel = stuff.stateModel\n    this.subDisplay = stuff.subDisplay\n    this.configSchema = stuff.configSchema\n    this.ReactComponent = stuff.ReactComponent\n    this.trackType = stuff.trackType\n    this.viewType = stuff.viewType\n  }\n}\n","import { IAnyModelType } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration/types'\n\nexport default class InternetAccountType extends PluggableElementBase {\n  stateModel: IAnyModelType\n\n  configSchema: AnyConfigurationSchemaType\n\n  constructor(stuff: {\n    name: string\n    stateModel: IAnyModelType\n    configSchema: AnyConfigurationSchemaType\n  }) {\n    super(stuff)\n    this.stateModel = stuff.stateModel\n    this.configSchema = stuff.configSchema\n  }\n}\n","export default abstract class PluggableElementBase {\n  name: string\n  maybeDisplayName?: string\n\n  constructor(args: { name?: string; displayName?: string }) {\n    this.name = args.name || 'UNKNOWN'\n    this.maybeDisplayName = args.displayName\n  }\n\n  get displayName() {\n    return this.maybeDisplayName || this.name\n  }\n}\n","// adapted from map-obj (MIT), with modifications to pass the \"whole object\"\n// from an array of objects into itself\nconst isObject = (value: unknown) => typeof value === 'object' && value !== null\n\n// Customized for this use-case\nconst isObjectCustom = (value: unknown) =>\n  isObject(value) &&\n  !(value instanceof RegExp) &&\n  !(value instanceof Error) &&\n  !(value instanceof Date) &&\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  !(globalThis.Blob && value instanceof globalThis.Blob)\n\ntype Obj = Record<string, unknown>\n\nexport default function map(\n  object: Obj,\n  mapper: (val: unknown) => void,\n  isSeen = new WeakSet(),\n) {\n  if (isSeen.has(object)) {\n    return\n  }\n\n  isSeen.add(object)\n\n  const mapArray = (array: unknown[]) => {\n    array.forEach(element => {\n      mapper(element)\n      if (isObject(element)) {\n        map(element as Record<string, unknown>, mapper, isSeen)\n      }\n    })\n  }\n\n  if (Array.isArray(object)) {\n    mapArray(object)\n  }\n\n  for (const value of Object.values(object)) {\n    mapper(value)\n\n    if (isObjectCustom(value)) {\n      if (Array.isArray(value)) {\n        mapArray(value)\n      } else {\n        map(value as Obj, mapper, isSeen)\n      }\n    }\n  }\n}\n","import mapObject from '../util/map-obj'\nimport PluginManager from '../PluginManager'\nimport PluggableElementBase from './PluggableElementBase'\nimport { setBlobMap, getBlobMap } from '../util/tracks'\nimport {\n  isAppRootModel,\n  isUriLocation,\n  isAuthNeededException,\n  RetryError,\n  UriLocation,\n} from '../util/types'\n\nimport {\n  deserializeAbortSignal,\n  isRemoteAbortSignal,\n  RemoteAbortSignal,\n} from '../rpc/remoteAbortSignals'\n\ninterface SerializedArgs {\n  signal?: RemoteAbortSignal\n  blobMap?: Record<string, File>\n}\nexport type RpcMethodConstructor = new (pm: PluginManager) => RpcMethodType\n\nexport default abstract class RpcMethodType extends PluggableElementBase {\n  constructor(public pluginManager: PluginManager) {\n    super({})\n  }\n\n  async serializeArguments(\n    args: Record<string, unknown>,\n    rpcDriverClassName: string,\n  ): Promise<Record<string, unknown>> {\n    const blobMap = getBlobMap()\n    await this.augmentLocationObjects(args, rpcDriverClassName)\n    return { ...args, blobMap }\n  }\n\n  async serializeNewAuthArguments(\n    loc: UriLocation,\n    rpcDriverClassName: string,\n  ) {\n    const rootModel = this.pluginManager.rootModel\n\n    // args dont need auth or already have auth\n    if (!isAppRootModel(rootModel) || loc.internetAccountPreAuthorization) {\n      return loc\n    }\n\n    const account = rootModel.findAppropriateInternetAccount(loc)\n\n    // mutating loc object is not allowed in MainThreadRpcDriver, and is only\n    // needed for web worker RPC\n    if (account && rpcDriverClassName !== 'MainThreadRpcDriver') {\n      loc.internetAccountPreAuthorization =\n        await account.getPreAuthorizationInformation(loc)\n    }\n    return loc\n  }\n\n  async deserializeArguments<T extends SerializedArgs>(\n    serializedArgs: T,\n    _rpcDriverClassName: string,\n  ) {\n    if (serializedArgs.blobMap) {\n      setBlobMap(serializedArgs.blobMap)\n    }\n    const { signal } = serializedArgs\n\n    return {\n      ...serializedArgs,\n      signal: isRemoteAbortSignal(signal)\n        ? deserializeAbortSignal(signal)\n        : undefined,\n    }\n  }\n\n  abstract execute(\n    serializedArgs: unknown,\n    rpcDriverClassName: string,\n  ): Promise<unknown>\n\n  async serializeReturn(\n    originalReturn: unknown,\n    _args: unknown,\n    _rpcDriverClassName: string,\n  ) {\n    return originalReturn\n  }\n\n  async deserializeReturn(\n    serializedReturn: unknown,\n    _args: unknown,\n    _rpcDriverClassName: string,\n  ) {\n    let r: unknown\n    try {\n      r = await serializedReturn\n    } catch (error) {\n      if (isAuthNeededException(error)) {\n        const retryAccount = // @ts-expect-error\n          this.pluginManager.rootModel?.createEphemeralInternetAccount(\n            `HTTPBasicInternetAccount-${new URL(error.url).origin}`,\n            {},\n            error.url,\n          )\n        throw new RetryError(\n          'Retrying with created internet account',\n          retryAccount.internetAccountId,\n        )\n      }\n      throw error\n    }\n    return r\n  }\n\n  private async augmentLocationObjects(\n    thing: Record<string, unknown>,\n    rpcDriverClassName: string,\n  ) {\n    const uris = [] as UriLocation[]\n\n    // using map-obj avoids cycles, seen in circular view svg export\n    mapObject(thing, val => {\n      if (isUriLocation(val)) {\n        uris.push(val)\n      }\n    })\n    for (const uri of uris) {\n      await this.serializeNewAuthArguments(uri, rpcDriverClassName)\n    }\n    return thing\n  }\n}\n","import PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport { AnyAdapter } from '../data_adapters/BaseAdapter'\n\nexport default class TextSearchAdapterType extends PluggableElementBase {\n  getAdapterClass: () => Promise<AnyAdapter>\n\n  configSchema: AnyConfigurationSchemaType\n\n  description?: string\n\n  constructor(\n    stuff: {\n      name: string\n      displayName?: string\n      description?: string\n      configSchema: AnyConfigurationSchemaType\n    } & (\n      | {\n          AdapterClass: AnyAdapter\n        }\n      | {\n          getAdapterClass: () => Promise<AnyAdapter>\n        }\n    ),\n  ) {\n    super(stuff)\n    this.description = stuff.description\n    this.configSchema = stuff.configSchema\n    this.getAdapterClass =\n      'getAdapterClass' in stuff\n        ? stuff.getAdapterClass\n        : async () => stuff.AdapterClass\n  }\n}\n","import { IAnyModelType } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration'\nimport DisplayType from './DisplayType'\n\nexport default class TrackType extends PluggableElementBase {\n  stateModel: IAnyModelType\n\n  configSchema: AnyConfigurationSchemaType\n\n  displayTypes: DisplayType[] = []\n\n  constructor(stuff: {\n    name: string\n    stateModel: IAnyModelType\n    displayName?: string\n    configSchema: AnyConfigurationSchemaType\n  }) {\n    super(stuff)\n    this.stateModel = stuff.stateModel\n    this.configSchema = stuff.configSchema\n  }\n\n  addDisplayType(display: DisplayType) {\n    this.displayTypes.push(display)\n  }\n}\n","import React from 'react'\nimport { IAnyModelType, IAnyStateTreeNode } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport DisplayType from './DisplayType'\n\ntype BasicView = React.ComponentType<{\n  // TODO: can we use AbstractViewModel here?\n\n  model: any\n  session?: IAnyStateTreeNode\n}>\ntype ViewComponentType = React.LazyExoticComponent<BasicView> | BasicView\n\nexport default class ViewType extends PluggableElementBase {\n  ReactComponent: ViewComponentType\n\n  stateModel: IAnyModelType\n\n  displayTypes: DisplayType[] = []\n\n  // extendedName can be used for when you extend a given view type, and want\n  // to register all of that view types displays to yourself\n  //\n  // e.g. you create a linear-genome-view subtype, and want all the tracks that\n  // are compatible display types for the linear-genome-view to be compatible\n  // with your type also (without this, display types are only registered to a\n  // single view type)\n  extendedName?: string\n\n  constructor(stuff: {\n    name: string\n    displayName?: string\n    ReactComponent: ViewComponentType\n    stateModel: IAnyModelType\n    extendedName?: string\n  }) {\n    super(stuff)\n    this.ReactComponent = stuff.ReactComponent\n    this.stateModel = stuff.stateModel\n    this.extendedName = stuff.extendedName\n  }\n\n  addDisplayType(display: DisplayType) {\n    this.displayTypes.push(display)\n  }\n}\n","import React, { ComponentType, LazyExoticComponent } from 'react'\nimport { IAnyModelType, IAnyStateTreeNode } from 'mobx-state-tree'\nimport PluggableElementBase from './PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../configuration'\n\ntype WidgetComponentType = LazyExoticComponent<React.FC<any>> | React.FC<any>\n\ntype HeadingComponentType = ComponentType<{ model: IAnyStateTreeNode }>\n\nexport default class WidgetType extends PluggableElementBase {\n  heading?: string\n\n  configSchema: AnyConfigurationSchemaType\n\n  HeadingComponent?: HeadingComponentType\n\n  ReactComponent: WidgetComponentType\n\n  stateModel: IAnyModelType\n\n  constructor(stuff: {\n    name: string\n    heading?: string\n    HeadingComponent?: HeadingComponentType\n    configSchema: AnyConfigurationSchemaType\n    stateModel: IAnyModelType\n    ReactComponent: WidgetComponentType\n  }) {\n    super(stuff)\n    this.heading = stuff.heading\n    this.HeadingComponent = stuff.HeadingComponent\n    this.configSchema = stuff.configSchema\n    this.stateModel = stuff.stateModel\n    this.ReactComponent = stuff.ReactComponent\n  }\n}\n","import { types, Instance } from 'mobx-state-tree'\nimport { ElementId } from '../../util/types/mst'\nimport { MenuItem } from '../../ui'\nimport { Region } from '../../util/types/mst'\n\n/**\n * #stateModel BaseViewModel\n * #category view\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BaseViewModel = types\n  .model('BaseView', {\n    /**\n     * #property\n     */\n    id: ElementId,\n\n    /**\n     * #property\n     * displayName is displayed in the header of the view, or assembly names\n     * being used if none is specified\n     */\n    displayName: types.maybe(types.string),\n\n    /**\n     * #property\n     */\n    minimized: false,\n  })\n  .volatile(() => ({\n    width: 800,\n  }))\n  .views(() => ({\n    /**\n     * #getter\n     */\n    menuItems(): MenuItem[] {\n      return []\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    setDisplayName(name: string) {\n      self.displayName = name\n    },\n\n    /**\n     * #action\n     * width is an important attribute of the view model, when it becomes set, it\n     * often indicates when the app can start drawing to it. certain views like\n     * lgv are strict about this because if it tries to draw before it knows the\n     * width it should draw to, it may start fetching data for regions it doesn't\n     * need to\n     *\n     * setWidth is updated by a ResizeObserver generally, the views often need\n     * to know how wide they are to properly draw genomic regions\n     */\n    setWidth(newWidth: number) {\n      self.width = newWidth\n    },\n\n    /**\n     * #action\n     */\n    setMinimized(flag: boolean) {\n      self.minimized = flag\n    },\n  }))\n\nexport default BaseViewModel\n\nexport type IBaseViewModel = Instance<typeof BaseViewModel>\n\nexport const BaseViewModelWithDisplayedRegions = BaseViewModel.props({\n  displayedRegions: types.array(Region),\n})\nexport type IBaseViewModelWithDisplayedRegions = Instance<\n  typeof BaseViewModelWithDisplayedRegions\n>\n","import type { Instance } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '../../configuration'\n\n/**\n * #config BaseConnection\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BaseConnectionConfig = ConfigurationSchema(\n  'BaseConnection',\n  {\n    /**\n     * #slot\n     */\n    name: {\n      type: 'string',\n      defaultValue: 'nameOfConnection',\n      description: 'a unique name for this connection',\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'optional list of names of assemblies in this connection',\n    },\n  },\n  {\n    explicitlyTyped: true,\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'connectionId',\n  },\n)\n\nexport default BaseConnectionConfig\nexport type BaseConnectionConfigSchema = typeof BaseConnectionConfig\nexport type BaseConnectionConfigModel = Instance<BaseConnectionConfigSchema>\n","import { cast, types } from 'mobx-state-tree'\nimport {\n  AnyConfigurationModel,\n  ConfigurationReference,\n} from '../../configuration'\nimport PluginManager from '../../PluginManager'\n\nimport configSchema from './baseConnectionConfig'\n\ntype TrackConf = AnyConfigurationModel | Record<string, unknown>\n\n/**\n * #stateModel BaseConnectionModel\n */\nfunction stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .model('Connection', {\n      /**\n       * #property\n       */\n      name: types.identifier,\n      /**\n       * #property\n       */\n      tracks: types.array(pluginManager.pluggableConfigSchemaType('track')),\n\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(configSchema),\n    })\n    .actions(() => ({\n      /**\n       * #action\n       */\n      connect(_arg: AnyConfigurationModel) {},\n    }))\n    .actions(self => ({\n      afterAttach() {\n        if (self.tracks.length === 0) {\n          self.connect(self.configuration)\n        }\n      },\n      /**\n       * #action\n       */\n      addTrackConf(trackConf: TrackConf) {\n        const length = self.tracks.push(trackConf)\n        return self.tracks[length - 1]\n      },\n      /**\n       * #action\n       */\n      addTrackConfs(trackConfs: TrackConf[]) {\n        self.tracks.push(...trackConfs)\n      },\n      /**\n       * #action\n       */\n      setTrackConfs(trackConfs: AnyConfigurationModel[]) {\n        self.tracks = cast(trackConfs)\n      },\n      /**\n       * #action\n       */\n      clear() {},\n    }))\n}\n\nexport type BaseConnectionModel = ReturnType<typeof stateModelFactory>\nexport default stateModelFactory\n","import React from 'react'\nimport { getParent, Instance, types, isRoot } from 'mobx-state-tree'\n\n// locals\nimport { getConf } from '../../configuration'\nimport { MenuItem } from '../../ui'\nimport { getParentRenderProps } from '../../util/tracks'\nimport { getContainingView, getEnv } from '../../util'\nimport { ElementId } from '../../util/types/mst'\n\n/**\n * #stateModel BaseDisplay\n * #category display\n */\nfunction stateModelFactory() {\n  return types\n    .model('BaseDisplay', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.string,\n      /**\n       * #property\n       */\n      rpcDriverName: types.maybe(types.string),\n    })\n    .volatile(() => ({\n      rendererTypeName: '',\n      error: undefined as unknown,\n      message: undefined as string | undefined,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get RenderingComponent(): React.FC<{\n        model: typeof self\n        onHorizontalScroll?: () => void\n        blockState?: Record<string, any>\n      }> {\n        const { pluginManager } = getEnv(self)\n        return pluginManager.getDisplayType(self.type)!\n          .ReactComponent as React.FC<{\n          model: typeof self\n          onHorizontalScroll?: () => void\n          blockState?: Record<string, any>\n        }>\n      },\n\n      /**\n       * #getter\n       */\n      get DisplayBlurb(): React.FC<{ model: typeof self }> | null {\n        return null\n      },\n\n      /**\n       * #getter\n       */\n      get adapterConfig() {\n        return getConf(this.parentTrack, 'adapter')\n      },\n\n      /**\n       * #getter\n       */\n      get parentTrack() {\n        let track = getParent<any>(self)\n        while (!(track.configuration && getConf(track, 'trackId'))) {\n          if (isRoot(track)) {\n            throw new Error(`No parent track found for ${self.type} ${self.id}`)\n          }\n          track = getParent<any>(track)\n        }\n        return track\n      },\n\n      /**\n       * #method\n       * the react props that are passed to the Renderer when data\n       * is rendered in this display\n       */\n      renderProps() {\n        return {\n          ...getParentRenderProps(self),\n          notReady: getContainingView(self).minimized,\n          rpcDriverName: self.rpcDriverName,\n          displayModel: self,\n        }\n      },\n\n      /**\n       * #getter\n       * the pluggable element type object for this display's renderer\n       */\n      get rendererType() {\n        const { pluginManager } = getEnv(self)\n        return pluginManager.getRendererType(self.rendererTypeName)!\n      },\n\n      /**\n       * #getter\n       * if a display-level message should be displayed instead, make this\n       * return a react component\n       */\n      get DisplayMessageComponent() {\n        return undefined as undefined | React.FC<any>\n      },\n      /**\n       * #method\n       */\n      trackMenuItems(): MenuItem[] {\n        return []\n      },\n\n      /**\n       * #getter\n       */\n      get viewMenuActions(): MenuItem[] {\n        return []\n      },\n      /**\n       * #method\n       * @param region -\n       * @returns falsy if the region is fine to try rendering. Otherwise,\n       * return a react node + string of text. string of text describes why it\n       * cannot be rendered react node allows user to force load at current\n       * setting\n       */\n      regionCannotBeRendered(/* region */) {\n        return null\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setMessage(arg?: string) {\n        self.message = arg\n      },\n      /**\n       * #action\n       */\n      setError(error?: unknown) {\n        self.error = error\n      },\n      /**\n       * #action\n       */\n      setRpcDriverName(rpcDriverName: string) {\n        self.rpcDriverName = rpcDriverName\n      },\n      /**\n       * #action\n       * base display reload does nothing, see specialized displays for details\n       */\n      reload() {},\n    }))\n}\n\nexport const BaseDisplay = stateModelFactory()\nexport type BaseDisplayStateModel = typeof BaseDisplay\nexport type BaseDisplayModel = Instance<BaseDisplayStateModel>\n","import { ConfigurationSchema } from '../../configuration'\n\n/**\n * #config BaseInternetAccount\n * the \"base\" internet account type\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport const BaseInternetAccountConfig = ConfigurationSchema(\n  'InternetAccount',\n  {\n    /**\n     * #slot\n     */\n    name: {\n      description: 'descriptive name of the internet account',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    description: {\n      description: 'a description of the internet account',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    authHeader: {\n      description: 'request header for credentials',\n      type: 'string',\n      defaultValue: 'Authorization',\n    },\n    /**\n     * #slot\n     */\n    tokenType: {\n      description: 'a custom name for a token to include in the header',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    domains: {\n      description:\n        'array of valid domains the url can contain to use this account',\n      type: 'stringArray',\n      defaultValue: [],\n    },\n  },\n  {\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'internetAccountId',\n    explicitlyTyped: true,\n  },\n)\n","import React from 'react'\nimport { Instance, types } from 'mobx-state-tree'\nimport { ConfigurationReference, getConf } from '../../configuration'\nimport { RemoteFileWithRangeCache } from '../../util/io'\nimport { ElementId } from '../../util/types/mst'\nimport { UriLocation, AnyReactComponentType } from '../../util/types'\nimport { BaseInternetAccountConfig } from './baseInternetAccountConfig'\n\nconst inWebWorker = typeof sessionStorage === 'undefined'\n\n/**\n * #stateModel BaseInternetAccountModel\n * #category internetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport const InternetAccount = types\n  .model('InternetAccount', {\n    /**\n     * #property\n     */\n    id: ElementId,\n    /**\n     * #property\n     */\n    type: types.string,\n    /**\n     * #property\n     */\n    configuration: ConfigurationReference(BaseInternetAccountConfig),\n  })\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get name(): string {\n      return getConf(self, 'name')\n    },\n    /**\n     * #getter\n     */\n    get description(): string {\n      return getConf(self, 'description')\n    },\n    /**\n     * #getter\n     */\n    get internetAccountId(): string {\n      return getConf(self, 'internetAccountId') // NOTE: this is the explicitIdentifier of the config schema\n    },\n    /**\n     * #getter\n     */\n    get authHeader(): string {\n      return getConf(self, 'authHeader')\n    },\n    /**\n     * #getter\n     */\n    get tokenType(): string {\n      return getConf(self, 'tokenType')\n    },\n    /**\n     * #getter\n     */\n    get domains(): string[] {\n      return getConf(self, 'domains')\n    },\n    /**\n     * #getter\n     * Can use this to customize what is displayed in fileSelector's toggle box\n     */\n    get toggleContents(): React.ReactNode {\n      return null\n    },\n    /**\n     * #getter\n     * Can use this to customize what the fileSelector. It takes a prop called\n     * `setLocation` that should be used to set a UriLocation\n     */\n    get SelectorComponent(): AnyReactComponentType | undefined {\n      return undefined\n    },\n    /**\n     * #getter\n     * Can use this to add a label to the UrlChooser. Has no effect if a custom\n     * SelectorComponent is supplied\n     */\n    get selectorLabel(): string | undefined {\n      return undefined\n    },\n  }))\n  .views(self => ({\n    /**\n     * #method\n     * Determine whether this internetAccount provides credentials for a URL\n     * @param location  - UriLocation of resource\n     * @returns true or false\n     */\n    handlesLocation(location: UriLocation) {\n      return self.domains.some(domain => location.uri.includes(domain))\n    },\n    /**\n     * #getter\n     * The key used to store this internetAccount's token in sessionStorage\n     */\n    get tokenKey() {\n      return `${self.internetAccountId}-token`\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     * Must be implemented by a model extending or composing this one. Pass the\n     * user's token to `resolve`.\n     * @param resolve - Pass the token to this function\n     * @param reject - If there is an error getting the token, call this function\n     */\n    getTokenFromUser(\n      _resolve: (token: string) => void,\n      _reject: (error: Error) => void,\n    ): void {\n      throw new Error('getTokenFromUser must be implemented by extending model')\n    },\n    /**\n     * #action\n     */\n    storeToken(token: string) {\n      sessionStorage.setItem(self.tokenKey, token)\n    },\n    /**\n     * #action\n     */\n    removeToken() {\n      sessionStorage.removeItem(self.tokenKey)\n    },\n    /**\n     * #action\n     */\n    retrieveToken() {\n      return sessionStorage.getItem(self.tokenKey)\n    },\n    /**\n     * #action\n     * This can be used by an internetAccount to validate a token works before\n     * it is used. This is run when preAuthorizationInformation is requested,\n     * so it can be used to check that a token is valid before sending it to a\n     * worker thread. It expects the token to be returned so that this action\n     * can also be used to generate a new token (e.g. by using a refresh token)\n     * if the original one was invalid. Should throw an error if a token is\n     * invalid.\n     *\n     * @param token - Auth token\n     * @param loc - UriLocation of the resource\n     * @returns - Valid auth token\n     */\n    async validateToken(token: string, _loc: UriLocation) {\n      return token\n    },\n  }))\n  .actions(self => {\n    let tokenPromise: Promise<string> | undefined = undefined\n    return {\n      /**\n       * #action\n       * Try to get the token from the location pre-auth, from local storage,\n       * or from a previously cached promise. If token is not available, uses\n       * `getTokenFromUser`.\n       *\n       * @param location - UriLocation of the resource\n       * @returns A promise for the token\n       */\n      async getToken(location?: UriLocation): Promise<string> {\n        if (tokenPromise) {\n          return tokenPromise\n        }\n        let token = location?.internetAccountPreAuthorization?.authInfo?.token\n        if (token) {\n          tokenPromise = Promise.resolve(token)\n          return tokenPromise\n        }\n        if (inWebWorker) {\n          throw new Error(\n            'Did not get internet account pre-authorization info in worker',\n          )\n        }\n        token = self.retrieveToken()\n        if (token) {\n          tokenPromise = Promise.resolve(token)\n          return tokenPromise\n        }\n        tokenPromise = new Promise((resolve, reject) => {\n          self.getTokenFromUser(\n            token => {\n              self.storeToken(token)\n              resolve(token)\n            },\n            error => {\n              self.removeToken()\n              reject(error)\n            },\n          )\n        })\n        return tokenPromise\n      },\n    }\n  })\n  .actions(self => ({\n    /**\n     * #action\n     */\n    addAuthHeaderToInit(init?: RequestInit, token?: string) {\n      return {\n        ...init,\n        headers: new Headers({\n          ...init?.headers,\n          ...(token\n            ? {\n                [self.authHeader]: self.tokenType\n                  ? `${self.tokenType} ${token}`\n                  : token,\n              }\n            : {}),\n        }),\n      }\n    },\n    /**\n     * #action\n     * Gets the token and returns it along with the information needed to\n     * create a new internetAccount.\n     *\n     * @param location - UriLocation of the resource\n     * @returns\n     */\n    async getPreAuthorizationInformation(location: UriLocation) {\n      const authToken = await self.getToken(location)\n      let validatedToken: string | undefined\n      try {\n        validatedToken = await self.validateToken(authToken, location)\n      } catch (error) {\n        self.removeToken()\n        throw error\n      }\n      return {\n        internetAccountType: self.type,\n        authInfo: {\n          token: validatedToken,\n          configuration: getConf(self),\n        },\n      }\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     * Get a fetch method that will add any needed authentication headers to\n     * the request before sending it. If location is provided, it will be\n     * checked to see if it includes a token in it pre-auth information.\n     *\n     * @param loc - UriLocation of the resource\n     * @returns A function that can be used to fetch\n     */\n    getFetcher(loc?: UriLocation) {\n      return async (input: RequestInfo, init?: RequestInit) => {\n        const authToken = await self.getToken(loc)\n        const newInit = self.addAuthHeaderToInit(init, authToken)\n        return fetch(input, newInit)\n      }\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     * Gets a filehandle that uses a fetch that adds auth headers\n     * @param location - UriLocation of the resource\n     * @returns A filehandle\n     */\n    openLocation(location: UriLocation) {\n      return new RemoteFileWithRangeCache(location.uri, {\n        fetch: self.getFetcher(location),\n      })\n    },\n  }))\n\nexport type BaseInternetAccountStateModel = typeof InternetAccount\nexport type BaseInternetAccountModel = Instance<BaseInternetAccountStateModel>\n","import { transaction } from 'mobx'\nimport {\n  getRoot,\n  resolveIdentifier,\n  types,\n  Instance,\n  IAnyStateTreeNode,\n} from 'mobx-state-tree'\n\n// locals\nimport {\n  getConf,\n  AnyConfigurationModel,\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n} from '../../configuration'\nimport PluginManager from '../../PluginManager'\nimport { MenuItem } from '../../ui'\nimport { getContainingView, getEnv, getSession } from '../../util'\nimport { isSessionModelWithConfigEditing } from '../../util/types'\nimport { ElementId } from '../../util/types/mst'\n\nexport function getCompatibleDisplays(self: IAnyStateTreeNode) {\n  const { pluginManager } = getEnv(self)\n  const view = getContainingView(self)\n  const viewType = pluginManager.getViewType(view.type)!\n  const compatTypes = new Set(viewType.displayTypes.map(d => d.name))\n  const displays = self.configuration.displays as AnyConfigurationModel[]\n  return displays.filter(d => compatTypes.has(d.type))\n}\n\n/**\n * #stateModel BaseTrackModel\n * #category track\n *\n * these MST models only exist for tracks that are *shown*. they should contain\n * only UI state for the track, and have a reference to a track configuration.\n * note that multiple displayed tracks could use the same configuration.\n */\nexport function createBaseTrackModel(\n  pm: PluginManager,\n  trackType: string,\n  baseTrackConfig: AnyConfigurationSchemaType,\n) {\n  return types\n    .model(trackType, {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal(trackType),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(baseTrackConfig),\n      /**\n       * #property\n       */\n      minimized: false,\n      /**\n       * #property\n       */\n      displays: types.array(pm.pluggableMstType('display', 'stateModel')),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       * determines which webworker to send the track to, currently based on trackId\n       */\n      get rpcSessionId() {\n        return self.configuration.trackId\n      },\n      /**\n       * #getter\n       */\n      get name() {\n        return getConf(self, 'name')\n      },\n      /**\n       * #getter\n       */\n      get textSearchAdapter() {\n        return getConf(self, 'textSearchAdapter')\n      },\n\n      /**\n       * #getter\n       */\n      get adapterType() {\n        const adapterConfig = getConf(self, 'adapter')\n        if (!adapterConfig) {\n          throw new Error(`no adapter configuration provided for ${self.type}`)\n        }\n        const adapterType = pm.getAdapterType(adapterConfig.type)\n        if (!adapterType) {\n          throw new Error(`unknown adapter type ${adapterConfig.type}`)\n        }\n        return adapterType\n      },\n\n      /**\n       * #getter\n       */\n      get viewMenuActions(): MenuItem[] {\n        return self.displays.flatMap(d => d.viewMenuActions)\n      },\n\n      /**\n       * #getter\n       */\n      get canConfigure() {\n        const session = getSession(self)\n        const { sessionTracks, adminMode } = session\n        return (\n          isSessionModelWithConfigEditing(session) &&\n          (adminMode ||\n            sessionTracks?.find(t => t.trackId === self.configuration.trackId))\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setMinimized(flag: boolean) {\n        self.minimized = flag\n      },\n\n      /**\n       * #action\n       */\n      showDisplay(displayId: string, initialSnapshot = {}) {\n        const schema = pm.pluggableConfigSchemaType('display')\n        const conf = resolveIdentifier(schema, getRoot(self), displayId)\n        const displayType = pm.getDisplayType(conf.type)\n        if (!displayType) {\n          throw new Error(`unknown display type ${conf.type}`)\n        }\n        const display = displayType.stateModel.create({\n          ...initialSnapshot,\n          type: conf.type,\n          configuration: conf,\n        })\n        self.displays.push(display)\n      },\n\n      /**\n       * #action\n       */\n      hideDisplay(displayId: string) {\n        const schema = pm.pluggableConfigSchemaType('display')\n        const conf = resolveIdentifier(schema, getRoot(self), displayId)\n        const t = self.displays.filter(d => d.configuration === conf)\n        transaction(() => {\n          t.forEach(d => self.displays.remove(d))\n        })\n        return t.length\n      },\n\n      /**\n       * #action\n       */\n      replaceDisplay(oldId: string, newId: string, initialSnapshot = {}) {\n        const idx = self.displays.findIndex(\n          d => d.configuration.displayId === oldId,\n        )\n        if (idx === -1) {\n          throw new Error(`could not find display id ${oldId} to replace`)\n        }\n        const schema = pm.pluggableConfigSchemaType('display')\n        const conf = resolveIdentifier(schema, getRoot(self), newId)\n        const displayType = pm.getDisplayType(conf.type)\n        if (!displayType) {\n          throw new Error(`unknown display type ${conf.type}`)\n        }\n        self.displays.splice(idx, 1, {\n          ...initialSnapshot,\n          type: conf.type,\n          configuration: conf,\n        })\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      trackMenuItems() {\n        const menuItems: MenuItem[] = self.displays.flatMap(d =>\n          d.trackMenuItems(),\n        )\n        const shownId = self.displays[0].configuration.displayId\n        const compatDisp = getCompatibleDisplays(self)\n\n        return [\n          ...menuItems,\n          ...(compatDisp.length > 1\n            ? [\n                {\n                  type: 'subMenu',\n                  label: 'Display types',\n                  priority: -1000,\n                  subMenu: compatDisp.map(d => ({\n                    type: 'radio',\n                    label: pm.getDisplayType(d.type)!.displayName,\n                    checked: d.displayId === shownId,\n                    onClick: () => {\n                      self.replaceDisplay(shownId, d.displayId)\n                    },\n                  })),\n                },\n              ]\n            : []),\n        ]\n      },\n    }))\n}\n\nexport type BaseTrackStateModel = ReturnType<typeof createBaseTrackModel>\nexport type BaseTrackModel = Instance<BaseTrackStateModel>\n","import { types, Instance } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '../../configuration'\nimport PluginManager from '../../PluginManager'\n\n/**\n * #config BaseTrack\n */\nexport function createBaseTrackConfig(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'BaseTrack',\n    {\n      /**\n       * #slot\n       */\n      name: {\n        description: 'descriptive name of the track',\n        type: 'string',\n        defaultValue: 'Track',\n      },\n      /**\n       * #slot\n       */\n      assemblyNames: {\n        description: 'name of the assembly (or assemblies) track belongs to',\n        type: 'stringArray',\n        defaultValue: ['assemblyName'],\n      },\n      /**\n       * #slot\n       */\n      description: {\n        description: 'a description of the track',\n        type: 'string',\n        defaultValue: '',\n      },\n      /**\n       * #slot\n       */\n      category: {\n        description: 'the category and sub-categories of a track',\n        type: 'stringArray',\n        defaultValue: [],\n      },\n      /**\n       * #slot\n       */\n      metadata: {\n        type: 'frozen',\n        description: 'anything to add about this track',\n        defaultValue: {},\n      },\n      /**\n       * #slot\n       */\n      adapter: pluginManager.pluggableConfigSchemaType('adapter'),\n\n      textSearching: ConfigurationSchema('textSearching', {\n        /**\n         * #slot textSearching.indexedAttributes\n         */\n        indexingAttributes: {\n          type: 'stringArray',\n          description:\n            'list of which feature attributes to index for text searching',\n          defaultValue: ['Name', 'ID'],\n        },\n        /**\n         * #slot textSearching.indexingFeatureTypesToExclude\n         */\n        indexingFeatureTypesToExclude: {\n          type: 'stringArray',\n          description: 'list of feature types to exclude in text search index',\n          defaultValue: ['CDS', 'exon'],\n        },\n\n        /**\n         * #slot textSearching.textSearchAdapter\n         */\n        textSearchAdapter: pluginManager.pluggableConfigSchemaType(\n          'text search adapter',\n        ),\n      }),\n\n      /**\n       * #slot\n       */\n      displays: types.array(pluginManager.pluggableConfigSchemaType('display')),\n\n      formatDetails: ConfigurationSchema('FormatDetails', {\n        /**\n         * #slot formatDetails.feature\n         */\n        feature: {\n          type: 'frozen',\n          description: 'adds extra fields to the feature details',\n          defaultValue: {},\n          contextVariable: ['feature'],\n        },\n        /**\n         * #slot formatDetails.subfeatures\n         */\n        subfeatures: {\n          type: 'frozen',\n          description: 'adds extra fields to the subfeatures of a feature',\n          defaultValue: {},\n          contextVariable: ['feature'],\n        },\n        /**\n         * #slot formatDetails.depth\n         */\n        depth: {\n          type: 'number',\n          defaultValue: 2,\n          description:\n            'depth of subfeatures to iterate the formatter on formatDetails.subfeatures (e.g. you may not want to format the exon/cds subfeatures, so limited to 2',\n        },\n        /**\n         * #slot formatDetails.maxDepth\n         */\n        maxDepth: {\n          type: 'number',\n          defaultValue: 99999,\n          description: 'Maximum depth to render subfeatures',\n        },\n      }),\n      formatAbout: ConfigurationSchema('FormatAbout', {\n        /**\n         * #slot formatAbout.config\n         */\n        config: {\n          type: 'frozen',\n          description: 'formats configuration object in about dialog',\n          defaultValue: {},\n          contextVariable: ['config'],\n        },\n\n        /**\n         * #slot formatAbout.hideUris\n         */\n        hideUris: {\n          type: 'boolean',\n          defaultValue: false,\n        },\n      }),\n    },\n    {\n      preProcessSnapshot: s2 => {\n        const snap = pluginManager.evaluateExtensionPoint(\n          'Core-preProcessTrackConfig',\n          JSON.parse(JSON.stringify(s2)),\n        ) as {\n          trackId: string\n          name: string\n          type: string\n          displays: { type: string; displayId: string }[]\n        }\n        const { displays = [] } = snap\n        if (snap.trackId !== 'placeholderId') {\n          // Gets the displays on the track snapshot and the possible displays\n          // from the track type and adds any missing possible displays to the\n          // snapshot\n          const configDisplayTypes = new Set(displays.map(d => d.type))\n          pluginManager.getTrackType(snap.type)!.displayTypes.forEach(d => {\n            if (!configDisplayTypes.has(d.name)) {\n              displays.push({\n                displayId: `${snap.trackId}-${d.name}`,\n                type: d.name,\n              })\n            }\n          })\n        }\n        return { ...snap, displays }\n      },\n      /**\n       * #identifier\n       */\n      explicitIdentifier: 'trackId',\n      explicitlyTyped: true,\n\n      actions: (self: any) => ({\n        addDisplayConf(conf: { type: string; displayId: string }) {\n          const { type } = conf\n          if (!type) {\n            throw new Error(`unknown display type ${type}`)\n          }\n          const display = self.displays.find(\n            (d: any) => d?.displayId === conf.displayId,\n          )\n          if (display) {\n            return display\n          }\n          const length = self.displays.push(conf)\n          return self.displays[length - 1]\n        },\n      }),\n    },\n  )\n}\n\nexport type BaseTrackConfigSchema = ReturnType<typeof createBaseTrackConfig>\nexport type BaseTrackConfig = Instance<BaseTrackConfigSchema>\n","import deepEqual from 'fast-deep-equal'\n\n// layouts\nimport GranularRectLayout from '../../util/layouts/GranularRectLayout'\nimport MultiLayout from '../../util/layouts/MultiLayout'\nimport { SerializedLayout, BaseLayout } from '../../util/layouts/BaseLayout'\nimport PrecomputedLayout from '../../util/layouts/PrecomputedLayout'\n\n// other\nimport FeatureRendererType, {\n  RenderArgs as FeatureRenderArgs,\n  RenderArgsSerialized as FeatureRenderArgsSerialized,\n  RenderArgsDeserialized as FeatureRenderArgsDeserialized,\n  RenderResults as FeatureRenderResults,\n  ResultsSerialized as FeatureResultsSerialized,\n  ResultsDeserialized as FeatureResultsDeserialized,\n} from './FeatureRendererType'\nimport { getLayoutId, Region, Feature } from '../../util'\nimport { readConfObject, AnyConfigurationModel } from '../../configuration'\nimport SerializableFilterChain from './util/serializableFilterChain'\nimport RpcManager from '../../rpc/RpcManager'\n\nexport interface LayoutSessionProps {\n  config: AnyConfigurationModel\n  bpPerPx: number\n  filters?: SerializableFilterChain\n}\n\nexport type MyMultiLayout = MultiLayout<GranularRectLayout<unknown>, unknown>\n\nexport interface CachedLayout {\n  layout: MyMultiLayout\n  config: AnyConfigurationModel\n  filters?: SerializableFilterChain\n}\n\nexport class LayoutSession implements LayoutSessionProps {\n  config: AnyConfigurationModel\n\n  bpPerPx: number\n\n  filters?: SerializableFilterChain\n\n  constructor(args: LayoutSessionProps) {\n    this.config = args.config\n    this.bpPerPx = args.bpPerPx\n    this.filters = args.filters\n    this.update(args)\n  }\n\n  update(props: LayoutSessionProps) {\n    Object.assign(this, props)\n  }\n\n  makeLayout() {\n    return new MultiLayout(GranularRectLayout, {\n      maxHeight: readConfObject(this.config, 'maxHeight'),\n      displayMode: readConfObject(this.config, 'displayMode'),\n      pitchX: this.bpPerPx,\n      pitchY: readConfObject(this.config, 'noSpacing') ? 1 : 3,\n    })\n  }\n\n  /**\n   * @param layout -\n   * @returns true if the given layout is a valid one to use for this session\n   */\n  cachedLayoutIsValid(cachedLayout: CachedLayout) {\n    return (\n      cachedLayout.layout.subLayoutConstructorArgs.pitchX === this.bpPerPx &&\n      deepEqual(readConfObject(this.config), cachedLayout.config) &&\n      deepEqual(this.filters, cachedLayout.filters)\n    )\n  }\n\n  cachedLayout: CachedLayout | undefined\n\n  get layout(): MyMultiLayout {\n    if (!this.cachedLayout || !this.cachedLayoutIsValid(this.cachedLayout)) {\n      this.cachedLayout = {\n        layout: this.makeLayout(),\n        config: readConfObject(this.config),\n        filters: this.filters,\n      }\n    }\n    return this.cachedLayout.layout\n  }\n}\nexport interface RenderArgs extends FeatureRenderArgs {\n  bpPerPx: number\n  layoutId: string\n}\n\nexport interface RenderArgsSerialized extends FeatureRenderArgsSerialized {\n  bpPerPx: number\n}\n\nexport interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {\n  bpPerPx: number\n  layoutId: string\n}\n\nexport interface RenderResults extends FeatureRenderResults {\n  layout: BaseLayout<Feature>\n}\n\nexport interface ResultsSerialized extends FeatureResultsSerialized {\n  maxHeightReached: boolean\n  layout: SerializedLayout\n}\n\nexport interface ResultsDeserialized extends FeatureResultsDeserialized {\n  maxHeightReached: boolean\n  layout: PrecomputedLayout<string>\n}\n\nexport default class BoxRendererType extends FeatureRendererType {\n  sessions: Record<string, LayoutSession> = {}\n\n  getWorkerSession(\n    props: LayoutSessionProps & { sessionId: string; layoutId: string },\n  ) {\n    const key = getLayoutId(props)\n    if (!this.sessions[key]) {\n      this.sessions[key] = this.createSession(props)\n    }\n    const session = this.sessions[key]\n    session.update(props)\n    return session\n  }\n\n  getExpandedRegion(region: Region, renderArgs: RenderArgsDeserialized) {\n    const { bpPerPx, config } = renderArgs\n    const maxFeatureGlyphExpansion =\n      readConfObject(config, 'maxFeatureGlyphExpansion') || 0\n    const bpExpansion = Math.round(maxFeatureGlyphExpansion * bpPerPx)\n    return {\n      ...(region as Omit<typeof region, symbol>),\n      start: Math.floor(Math.max(region.start - bpExpansion, 0)),\n      end: Math.ceil(region.end + bpExpansion),\n    }\n  }\n\n  createSession(props: LayoutSessionProps) {\n    return new LayoutSession(props)\n  }\n\n  async freeResourcesInClient(rpcManager: RpcManager, args: RenderArgs) {\n    const { regions } = args\n    const key = getLayoutId(args)\n    const session = this.sessions[key]\n    if (session) {\n      const region = regions[0]!\n      session.layout.discardRange(region.refName, region.start, region.end)\n    }\n    return await super.freeResourcesInClient(rpcManager, args)\n  }\n\n  deserializeLayoutInClient(json: SerializedLayout) {\n    return new PrecomputedLayout(json)\n  }\n\n  deserializeResultsInClient(result: ResultsSerialized, args: RenderArgs) {\n    const layout = this.deserializeLayoutInClient(result.layout)\n    return super.deserializeResultsInClient(\n      { ...result, layout } as FeatureResultsSerialized,\n      args,\n    ) as ResultsDeserialized\n  }\n\n  createLayoutInWorker(args: RenderArgsDeserialized) {\n    const { regions } = args\n    const session = this.getWorkerSession(args)\n    return session.layout.getSublayout(regions[0]!.refName)\n  }\n\n  serializeResultsInWorker(\n    results: RenderResults,\n    args: RenderArgsDeserialized,\n  ): ResultsSerialized {\n    const serialized = super.serializeResultsInWorker(\n      results,\n      args,\n    ) as ResultsSerialized\n\n    const region = args.regions[0]!\n    serialized.layout = results.layout.serializeRegion(\n      this.getExpandedRegion(region, args),\n    )\n    serialized.features = serialized.features.filter(f => {\n      return Boolean(serialized.layout.rectangles[f.uniqueId])\n    })\n\n    serialized.maxHeightReached = serialized.layout.maxHeightReached\n    return serialized\n  }\n\n  /**\n   * gets layout and renders\n   *\n   * @param props - render args\n   */\n  async render(props: RenderArgsDeserialized): Promise<RenderResults> {\n    const layout =\n      (props.layout as undefined | BaseLayout<unknown>) ||\n      this.createLayoutInWorker(props)\n    const result = await super.render({ ...props, layout })\n    return { ...result, layout }\n  }\n}\n","import React, { useEffect, useRef } from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { AnyReactComponentType, Feature, rIC } from '../../util'\nimport { ThemeOptions, ThemeProvider } from '@mui/material'\nimport { createJBrowseTheme } from '../../ui'\nimport { getRoot } from 'mobx-state-tree'\n// eslint-disable-next-line react/no-deprecated\nimport { hydrate, unmountComponentAtNode } from 'react-dom'\n\ninterface Props {\n  html: string\n  features: Map<string, Feature>\n  theme: ThemeOptions\n\n  displayModel?: any\n  RenderingComponent: AnyReactComponentType\n}\n\nconst NewHydrate = observer(function RpcRenderedSvgGroup(props: Props) {\n  const { html, theme, RenderingComponent, ...rest } = props\n  const ref = useRef<SVGGElement>(null)\n\n  // this `any` is a react-dom/client::Root\n\n  const rootRef = useRef<any>()\n\n  const root = getRoot<any>(props.displayModel)\n  const hydrateRoot = root.hydrateFn\n\n  useEffect(() => {\n    const renderTimeout = rIC(() => {\n      if (!ref.current) {\n        return\n      }\n      const jbrowseTheme = createJBrowseTheme(theme)\n      rootRef.current =\n        rootRef.current ??\n        hydrateRoot(\n          ref.current,\n          <ThemeProvider theme={jbrowseTheme}>\n            <RenderingComponent {...rest} />\n          </ThemeProvider>,\n        )\n    })\n    return () => {\n      if (renderTimeout !== undefined) {\n        clearTimeout(renderTimeout)\n      }\n      const root = rootRef.current\n      rootRef.current = undefined\n\n      setTimeout(() => {\n        root?.unmount()\n      })\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies:\n  }, [RenderingComponent, hydrateRoot, theme, rest])\n\n  return <g ref={ref} dangerouslySetInnerHTML={{ __html: html }} />\n})\n\nconst OldHydrate = observer(function OldHydrate(props: Props) {\n  const { html, RenderingComponent } = props\n  const ref = useRef<SVGGElement>(null)\n  useEffect(() => {\n    const domNode = ref.current\n    function doHydrate() {\n      if (domNode && html) {\n        if (domNode.innerHTML) {\n          // eslint-disable-next-line @typescript-eslint/no-deprecated\n          unmountComponentAtNode(domNode)\n        }\n\n        // setting outline:none fixes react \"focusable\" element issue. see\n        // https://github.com/GMOD/jbrowse-components/issues/2160\n        domNode.style.outline = 'none'\n        domNode.innerHTML = html\n        // use requestIdleCallback to defer main-thread rendering and\n        // hydration for when we have some free time. helps keep the\n        // framerate up.\n        rIC(() => {\n          // eslint-disable-next-line @typescript-eslint/no-deprecated\n          hydrate(<RenderingComponent {...props} />, domNode)\n        })\n      }\n    }\n    doHydrate()\n    return () => {\n      if (domNode) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        unmountComponentAtNode(domNode)\n      }\n    }\n  }, [html, RenderingComponent, props])\n\n  return <g ref={ref} />\n})\n\nconst RpcRenderedSvgGroup = observer(function (props: Props) {\n  const root = getRoot<any>(props.displayModel)\n  return root.hydrateFn ? <NewHydrate {...props} /> : <OldHydrate {...props} />\n})\n\nexport default RpcRenderedSvgGroup\n","import React from 'react'\nimport { SimpleFeature, SimpleFeatureSerialized } from '../../util'\nimport FeatureRenderer from './FeatureRendererType'\nimport RpcRenderedSvgGroup from './RpcRenderedSvgGroup'\nimport { ThemeOptions } from '@mui/material'\n\nexport default class CircularChordRendererType extends FeatureRenderer {\n  supportsSVG = true\n\n  deserializeResultsInClient(\n    res: { features: SimpleFeatureSerialized[]; html: string },\n    args: {\n      displayModel?: any\n      theme: ThemeOptions\n      exportSVG?: { rasterizeLayers?: boolean }\n    },\n  ) {\n    const deserializedFeatures = new Map(\n      res.features.map(f => SimpleFeature.fromJSON(f)).map(f => [f.id(), f]),\n    )\n    // if we are rendering svg, we skip hydration\n    if (args.exportSVG) {\n      // only return the res if the renderer explicitly has\n      // this.supportsSVG support to avoid garbage being rendered in SVG\n      // document\n      return {\n        ...res,\n        features: deserializedFeatures,\n        blockKey: 'circularChord',\n        html: this.supportsSVG\n          ? res.html\n          : '<text y=\"12\" fill=\"black\">SVG export not supported for this track</text>',\n      }\n    }\n\n    // hydrate res using ServerSideRenderedContent\n    return {\n      ...res,\n      features: deserializedFeatures,\n      blockKey: 'circularChord',\n      reactElement: (\n        <RpcRenderedSvgGroup\n          {...args}\n          {...res}\n          features={deserializedFeatures}\n          RenderingComponent={this.ReactComponent}\n        />\n      ),\n    }\n  }\n}\n","import { filter, toArray } from 'rxjs/operators'\nimport { Feature } from '../../util/simpleFeature'\nimport { Region } from '../../util/types'\nimport ServerSideRenderer, {\n  RenderArgs as ServerSideRenderArgs,\n  RenderArgsSerialized as ServerSideRenderArgsSerialized,\n  RenderArgsDeserialized as ServerSideRenderArgsDeserialized,\n  ResultsSerialized as ServerSideResultsSerialized,\n  ResultsDeserialized as ServerSideResultsDeserialized,\n} from './ServerSideRendererType'\nimport RpcManager from '../../rpc/RpcManager'\nimport { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport { BaseFeatureDataAdapter } from '../../data_adapters/BaseAdapter'\nimport { dedupe, getSerializedSvg } from '../../util'\nimport { firstValueFrom } from 'rxjs'\nimport { AnyConfigurationModel } from '../../configuration'\n\nexport interface RenderArgs extends ServerSideRenderArgs {\n  blockKey: string\n}\n\nexport interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {\n  blockKey: string\n}\n\nexport interface RenderArgsDeserialized\n  extends ServerSideRenderArgsDeserialized {\n  blockKey: string\n}\n\nexport type ResultsSerialized = ServerSideResultsSerialized\n\nexport interface ResultsDeserialized extends ServerSideResultsDeserialized {\n  blockKey: string\n}\n\nexport interface ResultsSerializedSvgExport extends ResultsSerialized {\n  canvasRecordedData: unknown\n  width: number\n  height: number\n  reactElement: unknown\n}\n\nfunction isSvgExport(e: ResultsSerialized): e is ResultsSerializedSvgExport {\n  return 'canvasRecordedData' in e\n}\n\nexport default class ComparativeServerSideRenderer extends ServerSideRenderer {\n  /**\n   * directly modifies the render arguments to prepare them to be serialized\n   * and sent to the worker.\n   *\n   * @param args - the arguments passed to render\n   * @returns the same object\n   */\n\n  async renameRegionsIfNeeded(args: RenderArgs) {\n    return args\n  }\n\n  serializeArgsInClient(args: RenderArgs) {\n    const deserializedArgs = {\n      ...args,\n      displayModel: undefined,\n    }\n\n    return super.serializeArgsInClient(deserializedArgs)\n  }\n\n  // deserialize some of the results that came back from the worker\n  deserializeResultsInClient(\n    result: ResultsSerialized,\n    args: RenderArgs,\n  ): ResultsDeserialized {\n    const deserialized = super.deserializeResultsInClient(result, args)\n    return {\n      ...deserialized,\n      blockKey: args.blockKey,\n    }\n  }\n\n  /**\n   * Render method called on the client. Serializes args, then\n   * calls `render` with the RPC manager.\n   */\n  async renderInClient(rpcManager: RpcManager, args: RenderArgs) {\n    const results = (await rpcManager.call(\n      args.sessionId,\n      'ComparativeRender',\n      args,\n    )) as ResultsSerialized\n\n    if (isSvgExport(results)) {\n      results.html = await getSerializedSvg(results)\n      results.reactElement = undefined\n    }\n    return results\n  }\n\n  /**\n   * @param renderArgs -\n   * @param feature -\n   * @returns true if this feature passes all configured filters\n   */\n  featurePassesFilters(renderArgs: RenderArgsDeserialized, feature: Feature) {\n    return renderArgs.filters\n      ? renderArgs.filters.passes(feature, renderArgs)\n      : true\n  }\n\n  async getFeatures(renderArgs: {\n    regions: Region[]\n    sessionId: string\n    adapterConfig: AnyConfigurationModel\n  }) {\n    const pm = this.pluginManager\n    const { regions, sessionId, adapterConfig } = renderArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n    const requestRegions = regions.map(r => {\n      // make sure the requested region's start and end are integers, if\n      // there is a region specification.\n      const requestRegion = { ...r }\n      if (requestRegion.start) {\n        requestRegion.start = Math.floor(requestRegion.start)\n      }\n      if (requestRegion.end) {\n        requestRegion.end = Math.floor(requestRegion.end)\n      }\n      return requestRegion\n    })\n\n    // note that getFeaturesInMultipleRegions does not do glyph expansion\n    const res = await firstValueFrom(\n      (dataAdapter as BaseFeatureDataAdapter)\n        .getFeaturesInMultipleRegions(requestRegions, renderArgs)\n        .pipe(\n          // @ts-expect-error\n          filter(f => this.featurePassesFilters(renderArgs, f)),\n          toArray(),\n        ),\n    )\n\n    // dedupe needed xref https://github.com/GMOD/jbrowse-components/pull/3404/\n    return dedupe(res, f => f.id())\n  }\n}\n\nexport { type RenderResults } from './ServerSideRendererType'\n","import { toArray } from 'rxjs/operators'\nimport clone from 'clone'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport { checkAbortSignal, iterMap } from '../../util'\nimport SimpleFeature, {\n  Feature,\n  SimpleFeatureSerialized,\n} from '../../util/simpleFeature'\nimport { AugmentedRegion as Region } from '../../util/types'\nimport { getAdapter } from '../../data_adapters/dataAdapterCache'\nimport ServerSideRendererType, {\n  RenderArgs as ServerSideRenderArgs,\n  RenderArgsSerialized as ServerSideRenderArgsSerialized,\n  RenderArgsDeserialized as ServerSideRenderArgsDeserialized,\n  RenderResults as ServerSideRenderResults,\n  ResultsDeserialized as ServerSideResultsDeserialized,\n  ResultsSerialized as ServerSideResultsSerialized,\n} from './ServerSideRendererType'\nimport { isFeatureAdapter } from '../../data_adapters/BaseAdapter'\nimport { AnyConfigurationModel } from '../../configuration'\n\nexport interface RenderArgs extends ServerSideRenderArgs {\n  displayModel?: {\n    id: string\n    selectedFeatureId?: string\n  }\n  regions: Region[]\n  blockKey: string\n}\n\nexport interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {\n  displayModel?: {\n    id: string\n    selectedFeatureId?: string\n  }\n  regions: Region[]\n  blockKey: string\n}\n\nexport interface RenderArgsDeserialized\n  extends ServerSideRenderArgsDeserialized {\n  displayModel: { id: string; selectedFeatureId?: string }\n  regions: Region[]\n  blockKey: string\n  adapterConfig: AnyConfigurationModel\n}\n\nexport interface RenderResults extends ServerSideRenderResults {\n  features: Map<string, Feature>\n}\n\nexport interface ResultsSerialized extends ServerSideResultsSerialized {\n  features: SimpleFeatureSerialized[]\n}\n\nexport interface ResultsDeserialized extends ServerSideResultsDeserialized {\n  features: Map<string, Feature>\n  blockKey: string\n}\n\nexport default class FeatureRendererType extends ServerSideRendererType {\n  /**\n   * replaces the `displayModel` param (which on the client is a MST model)\n   * with a stub that only contains the `selectedFeature`, since this is the\n   * only part of the track model that most renderers read. also serializes the\n   * config and regions to JSON from MST objects.\n   *\n   * @param args - the arguments passed to render\n   */\n  serializeArgsInClient(args: RenderArgs) {\n    const { regions } = args\n    const serializedArgs = {\n      ...args,\n      displayModel: undefined,\n      regions: clone(regions),\n    }\n    return super.serializeArgsInClient(serializedArgs)\n  }\n\n  /**\n   * Adds feature deserialization to base server-side result deserialization\n   *\n   * @param results - the results of the render\n   * @param args - the arguments passed to render\n   */\n  deserializeResultsInClient(\n    result: ResultsSerialized,\n    args: RenderArgs,\n  ): ResultsDeserialized {\n    const deserializedFeatures = new Map<string, SimpleFeature>(\n      result.features.map(f => SimpleFeature.fromJSON(f)).map(f => [f.id(), f]),\n    )\n\n    const deserialized = super.deserializeResultsInClient(\n      {\n        ...result,\n        features: deserializedFeatures,\n      } as ServerSideResultsSerialized,\n      args,\n    )\n    return {\n      ...deserialized,\n      blockKey: args.blockKey,\n      features: deserializedFeatures,\n    }\n  }\n\n  /**\n   * Adds feature serialization to base server-side result serialization\n   *\n   * @param result - object containing the results of calling the `render`\n   * method\n   * @param args - deserialized render args\n   */\n  serializeResultsInWorker(\n    result: RenderResults,\n    args: RenderArgsDeserialized,\n  ): ResultsSerialized {\n    const serialized = super.serializeResultsInWorker(result, args)\n    const { features } = result\n    return {\n      ...serialized,\n      features: iterMap(features.values(), f => f.toJSON(), features.size),\n    }\n  }\n\n  /**\n   * will expand if soft clipping or feature glyphs are shown\n   *\n   * @param region - rendering region\n   * @param _renderArgs - render args, unused, may be used in deriving classes\n   */\n  getExpandedRegion(region: Region, _renderArgs: RenderArgsDeserialized) {\n    return region\n  }\n\n  /**\n   * use the dataAdapter to fetch the features to be rendered\n   *\n   * @param renderArgs -\n   * @returns Map of features as `{ id => feature, ... }`\n   */\n  async getFeatures(\n    renderArgs: RenderArgsDeserialized,\n  ): Promise<Map<string, Feature>> {\n    const pm = this.pluginManager\n    const { signal, regions, sessionId, adapterConfig } = renderArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n    if (!isFeatureAdapter(dataAdapter)) {\n      throw new Error('Adapter does not support retrieving features')\n    }\n\n    // make sure the requested region's start and end are integers, if\n    // there is a region specification.\n    const requestRegions = regions.map(r => {\n      const requestRegion = { ...r }\n      if (requestRegion.start) {\n        requestRegion.start = Math.floor(requestRegion.start)\n      }\n      if (requestRegion.end) {\n        requestRegion.end = Math.ceil(requestRegion.end)\n      }\n      return requestRegion\n    })\n\n    const region = requestRegions[0]!\n\n    const featureObservable =\n      requestRegions.length === 1\n        ? dataAdapter.getFeatures(\n            this.getExpandedRegion(region, renderArgs),\n            renderArgs,\n          )\n        : dataAdapter.getFeaturesInMultipleRegions(requestRegions, renderArgs)\n\n    const feats = await firstValueFrom(featureObservable.pipe(toArray()))\n    checkAbortSignal(signal)\n    return new Map<string, Feature>(\n      feats\n        .filter(feat => this.featurePassesFilters(renderArgs, feat))\n        .map(feat => [feat.id(), feat] as const),\n    )\n  }\n\n  /**\n   * @param renderArgs -\n   * @param feature -\n   * @returns true if this feature passes all configured filters\n   */\n  featurePassesFilters(renderArgs: RenderArgsDeserialized, feature: Feature) {\n    return renderArgs.filters\n      ? renderArgs.filters.passes(feature, renderArgs)\n      : true\n  }\n\n  /**\n   * gets features and renders\n   *\n   * @param props - render args\n   */\n  async render(\n    props: RenderArgsDeserialized & { features?: Map<string, Feature> },\n  ): Promise<RenderResults> {\n    const features = props.features || (await this.getFeatures(props))\n    const result = await super.render({ ...props, features })\n    return { ...result, features }\n  }\n}\n","import React, { ReactElement } from 'react'\nimport PluggableElementBase from '../PluggableElementBase'\nimport { AnyConfigurationSchemaType } from '../../configuration'\nimport { AnyReactComponentType } from '../../util'\nimport PluginManager from '../../PluginManager'\n\nexport type RenderProps = Record<string, unknown>\n\nexport interface RenderResults {\n  reactElement?: ReactElement\n  html?: string\n}\n\nexport default class RendererType extends PluggableElementBase {\n  ReactComponent: AnyReactComponentType\n\n  supportsSVG = true\n\n  configSchema: AnyConfigurationSchemaType\n\n  pluginManager: PluginManager\n\n  constructor(stuff: {\n    name: string\n    ReactComponent: AnyReactComponentType\n    displayName?: string\n    configSchema: AnyConfigurationSchemaType\n    pluginManager: PluginManager\n  }) {\n    super(stuff)\n    this.ReactComponent = stuff.ReactComponent\n    this.configSchema = stuff.configSchema\n    this.pluginManager = stuff.pluginManager\n  }\n\n  async render(props: RenderProps): Promise<RenderResults> {\n    return {\n      reactElement: React.createElement(this.ReactComponent, props, null),\n    }\n  }\n\n  /**\n   * frees resources associated with the given range, session, etc.\n   * optionally returns the number of data items deleted\n   */\n  freeResources(/* specification: {} */): number {\n    return 0\n  }\n}\n","import React, { useEffect, useRef } from 'react'\nimport { ThemeProvider } from '@mui/material/styles'\n\n// locals\nimport { createJBrowseTheme } from '../../ui'\nimport { ResultsSerialized, RenderArgs } from './ServerSideRendererType'\nimport { observer } from 'mobx-react'\nimport { getRoot } from 'mobx-state-tree'\n// eslint-disable-next-line react/no-deprecated\nimport { hydrate, unmountComponentAtNode } from 'react-dom'\nimport { rIC } from '../../util'\n\ninterface Props extends ResultsSerialized, RenderArgs {\n  RenderingComponent: React.ComponentType<any>\n}\n\nconst NewHydrate = observer(function ServerSideRenderedContent({\n  theme,\n  html,\n  RenderingComponent,\n  ...rest\n}: Props) {\n  const ref = useRef<HTMLDivElement>(null)\n  const rootRef = useRef<any>()\n  const { hydrateFn } = getRoot<any>(rest.displayModel)\n\n  useEffect(() => {\n    // requestIdleCallback here helps to avoid hydration mismatch because it\n    // provides time for dangerouslySetInnerHTML to set the innerHTML contents\n    // of the node, otherwise ref.current.innerHTML can be empty\n    const renderTimeout = rIC(() => {\n      if (!ref.current) {\n        return\n      }\n      const jbrowseTheme = createJBrowseTheme(theme)\n      // if there is a hydration mismatch, investigate value of\n      // - value of ref.current.innerHTML\n      // - value of `html` variable\n      // - renderToString of the below React element\n      rootRef.current =\n        rootRef.current ??\n        hydrateFn(\n          ref.current,\n          <ThemeProvider theme={jbrowseTheme}>\n            <RenderingComponent {...rest} />\n          </ThemeProvider>,\n        )\n    })\n    return () => {\n      if (renderTimeout !== undefined) {\n        clearTimeout(renderTimeout)\n      }\n      const root = rootRef.current\n      rootRef.current = undefined\n\n      setTimeout(() => {\n        root?.unmount()\n      })\n    }\n    /* biome-ignore lint/correctness/useExhaustiveDependencies: */\n  }, [theme, rest, hydrateFn, RenderingComponent])\n\n  return (\n    <div\n      data-testid=\"hydrationContainer\"\n      ref={ref}\n      dangerouslySetInnerHTML={{ __html: html }}\n    />\n  )\n})\n\nconst OldHydrate = observer(function ({\n  theme,\n  html,\n  RenderingComponent,\n  ...rest\n}: Props) {\n  const ref = useRef<HTMLDivElement>(null)\n  const jbrowseTheme = createJBrowseTheme(theme)\n\n  useEffect(() => {\n    const domNode = ref.current\n    function doHydrate() {\n      if (domNode) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        unmountComponentAtNode(domNode)\n        domNode.innerHTML = html\n\n        rIC(() => {\n          // eslint-disable-next-line @typescript-eslint/no-deprecated\n          hydrate(\n            <ThemeProvider theme={jbrowseTheme}>\n              <RenderingComponent {...rest} />\n            </ThemeProvider>,\n            domNode,\n          )\n        })\n      }\n    }\n\n    doHydrate()\n\n    return () => {\n      if (domNode) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        unmountComponentAtNode(domNode)\n      }\n    }\n    /* biome-ignore lint/correctness/useExhaustiveDependencies: */\n  }, [html, jbrowseTheme, rest, RenderingComponent])\n\n  return <div ref={ref} />\n})\n\nconst ServerSideRenderedContent = observer(function (props: Props) {\n  const root = getRoot<any>(props.displayModel)\n  return root.hydrateFn ? <NewHydrate {...props} /> : <OldHydrate {...props} />\n})\n\nexport default ServerSideRenderedContent\n","import React from 'react'\nimport { ThemeOptions } from '@mui/material'\nimport { ThemeProvider } from '@mui/material/styles'\nimport { renderToString } from 'react-dom/server'\nimport {\n  SnapshotOrInstance,\n  SnapshotIn,\n  getSnapshot,\n  isStateTreeNode,\n} from 'mobx-state-tree'\n\n// locals\nimport { checkAbortSignal, getSerializedSvg, updateStatus } from '../../util'\nimport SerializableFilterChain, {\n  SerializedFilterChain,\n} from './util/serializableFilterChain'\nimport { AnyConfigurationModel } from '../../configuration'\nimport RpcManager from '../../rpc/RpcManager'\nimport { createJBrowseTheme } from '../../ui'\n\nimport RendererType, { RenderProps, RenderResults } from './RendererType'\nimport ServerSideRenderedContent from './ServerSideRenderedContent'\n\ninterface BaseRenderArgs extends RenderProps {\n  sessionId: string\n  // Note that signal serialization happens after serializeArgsInClient and\n  // deserialization happens before deserializeArgsInWorker\n  signal?: AbortSignal\n  theme: ThemeOptions\n  exportSVG?: {\n    rasterizeLayers?: boolean\n  }\n}\n\nexport interface RenderArgs extends BaseRenderArgs {\n  config: SnapshotOrInstance<AnyConfigurationModel>\n  filters?: SerializableFilterChain\n}\n\nexport interface RenderArgsSerialized extends BaseRenderArgs {\n  statusCallback?: (arg: string) => void\n  config: SnapshotIn<AnyConfigurationModel>\n  filters?: SerializedFilterChain\n}\nexport interface RenderArgsDeserialized extends BaseRenderArgs {\n  config: AnyConfigurationModel\n  filters?: SerializableFilterChain\n}\n\nexport interface ResultsSerialized extends Omit<RenderResults, 'reactElement'> {\n  html: string\n}\n\nexport interface ResultsSerializedSvgExport extends ResultsSerialized {\n  canvasRecordedData: unknown\n  width: number\n  height: number\n  reactElement: unknown\n}\n\nexport type ResultsDeserialized = RenderResults\n\nfunction isSvgExport(e: ResultsSerialized): e is ResultsSerializedSvgExport {\n  return 'canvasRecordedData' in e\n}\n\nexport default class ServerSideRenderer extends RendererType {\n  /**\n   * directly modifies the render arguments to prepare them to be serialized and\n   * sent to the worker.\n   *\n   * @param args - the arguments passed to render\n   * @returns the same object\n   */\n  serializeArgsInClient(args: RenderArgs): RenderArgsSerialized {\n    return {\n      ...args,\n      config: isStateTreeNode(args.config)\n        ? getSnapshot(args.config)\n        : args.config,\n      filters: args.filters?.toJSON().filters,\n    }\n  }\n\n  /**\n   * Deserialize the render results from the worker in the client. Includes\n   * hydrating of the React HTML string, and not hydrating the result if SVG is\n   * being rendered\n   *\n   * @param results - the results of the render\n   * @param args - the arguments passed to render\n   */\n  deserializeResultsInClient(\n    res: ResultsSerialized,\n    args: RenderArgs,\n  ): ResultsDeserialized {\n    // if we are rendering svg, we skip hydration\n    if (args.exportSVG) {\n      // only return the res if the renderer explicitly has\n      // this.supportsSVG support to avoid garbage being rendered in SVG\n      // document\n      return {\n        ...res,\n        html: this.supportsSVG\n          ? res.html\n          : '<text y=\"12\" fill=\"black\">SVG export not supported for this track</text>',\n      }\n    }\n\n    // get res using ServerSideRenderedContent\n    return {\n      ...res,\n      reactElement: (\n        <ServerSideRenderedContent\n          {...args}\n          {...res}\n          RenderingComponent={this.ReactComponent}\n        />\n      ),\n    }\n  }\n\n  /**\n   * modifies the passed arguments object to inflate arguments as necessary.\n   * called in the worker process.\n   *\n   * @param args - the converted arguments to modify\n   */\n  deserializeArgsInWorker(args: RenderArgsSerialized): RenderArgsDeserialized {\n    const deserialized = { ...args } as unknown as RenderArgsDeserialized\n    deserialized.config = this.configSchema.create(args.config || {}, {\n      pluginManager: this.pluginManager,\n    })\n    deserialized.filters = args.filters\n      ? new SerializableFilterChain({\n          filters: args.filters,\n        })\n      : undefined\n\n    return deserialized\n  }\n\n  /**\n   * Serialize results of the render to send them to the client. Includes\n   * rendering React to an HTML string.\n   *\n   * @param results - object containing the results of calling the `render`\n   * method\n   * @param args - deserialized render args\n   */\n  serializeResultsInWorker(\n    results: RenderResults,\n    args: RenderArgsDeserialized,\n  ): ResultsSerialized {\n    const html = renderToString(\n      <ThemeProvider theme={createJBrowseTheme(args.theme)}>\n        {results.reactElement}\n      </ThemeProvider>,\n    )\n    results.reactElement = undefined\n    return { ...results, html }\n  }\n\n  /**\n   * Render method called on the client. Serializes args, then calls\n   * \"CoreRender\" with the RPC manager.\n   *\n   * @param rpcManager - RPC manager\n   * @param args - render args\n   */\n  async renderInClient(rpcManager: RpcManager, args: RenderArgs) {\n    const results = (await rpcManager.call(\n      args.sessionId,\n      'CoreRender',\n      args,\n    )) as ResultsSerialized\n\n    if (isSvgExport(results)) {\n      results.html = await getSerializedSvg(results)\n      results.reactElement = undefined\n    }\n    return results\n  }\n\n  /**\n   * Render method called on the worker. `render` is called here in server-side\n   * rendering\n   *\n   * @param args - serialized render args\n   */\n  async renderInWorker(args: RenderArgsSerialized): Promise<ResultsSerialized> {\n    const { signal, statusCallback = () => {} } = args\n    const deserializedArgs = this.deserializeArgsInWorker(args)\n\n    const results = await updateStatus('Rendering plot', statusCallback, () =>\n      this.render(deserializedArgs),\n    )\n    checkAbortSignal(signal)\n\n    // serialize the results for passing back to the main thread.\n    // these will be transmitted to the main process, and will come out\n    // as the result of renderRegionWithWorker.\n    return updateStatus('Serializing results', statusCallback, () =>\n      this.serializeResultsInWorker(results, deserializedArgs),\n    )\n  }\n\n  async freeResourcesInClient(rpcManager: RpcManager, args: RenderArgs) {\n    const serializedArgs = this.serializeArgsInClient(args)\n\n    const freed = this.freeResources()\n    const freedRpc = (await rpcManager.call(\n      args.sessionId,\n      'CoreFreeResources',\n      serializedArgs,\n    )) as number\n    return freed + freedRpc\n  }\n}\n\nexport { type RenderResults } from './RendererType'\n","import { stringToJexlExpression } from '../../../util/jexlStrings'\n\ntype FilterExpression = (...args: Record<string, any>[] | any[]) => boolean\n\ninterface Filter {\n  string: string\n  expr: FilterExpression\n}\n\nexport type SerializedFilterChain = string[]\n\nexport default class SerializableFilterChain {\n  filterChain: Filter[]\n\n  constructor({ filters = [] }: { filters: SerializedFilterChain }) {\n    this.filterChain = filters\n      .map(f => f.trim())\n      .filter(f => !!f)\n      .map(inputFilter => {\n        if (typeof inputFilter === 'string') {\n          const expr = stringToJexlExpression(inputFilter) as FilterExpression\n          return { expr, string: inputFilter }\n        }\n        throw new Error(`invalid inputFilter string \"${inputFilter}\"`)\n      })\n  }\n\n  passes(...args: any[]) {\n    for (const entry of this.filterChain) {\n      if (\n        // @ts-expect-error\n        !entry.expr.evalSync({ feature: args[0] })\n      ) {\n        return false\n      }\n    }\n    return true\n  }\n\n  toJSON() {\n    return { filters: this.filterChain.map(f => f.string) }\n  }\n\n  static fromJSON(json: { filters: SerializedFilterChain }) {\n    return new SerializableFilterChain(json)\n  }\n}\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { alpha, Portal, useTheme } from '@mui/material'\n\nimport {\n  useClientPoint,\n  useFloating,\n  useInteractions,\n} from '@floating-ui/react'\n\nfunction round(value: number) {\n  return Math.round(value * 1e5) / 1e5\n}\n\nconst useStyles = makeStyles()(theme => ({\n  // these styles come from\n  // https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js\n  tooltip: {\n    position: 'absolute',\n    pointerEvents: 'none',\n    backgroundColor: alpha(theme.palette.grey[700], 0.9),\n    borderRadius: theme.shape.borderRadius,\n    color: theme.palette.common.white,\n    fontFamily: theme.typography.fontFamily,\n    padding: '4px 8px',\n    fontSize: theme.typography.pxToRem(12),\n    lineHeight: `${round(14 / 10)}em`,\n    maxWidth: 300,\n    wordWrap: 'break-word',\n  },\n}))\n\nexport default function BaseTooltip({\n  clientPoint: clientPointCoords,\n  children,\n  placement = 'right',\n}: {\n  placement?: 'left' | 'right'\n  clientPoint?: { x: number; y: number }\n  children: React.ReactNode\n}) {\n  const theme = useTheme()\n  const popperTheme = theme.components?.MuiPopper\n  const { classes } = useStyles()\n  const { refs, floatingStyles, context } = useFloating({\n    placement,\n    strategy: 'fixed',\n  })\n\n  const clientPoint = useClientPoint(context, clientPointCoords)\n  const { getFloatingProps } = useInteractions([clientPoint])\n  return (\n    <Portal container={popperTheme?.defaultProps?.container}>\n      <div\n        className={classes.tooltip}\n        ref={refs.setFloating}\n        style={{\n          ...floatingStyles,\n          zIndex: 100000,\n          // workaround for tooltips flashing at top left corner of screen\n          // when first appearing\n          visibility:\n            floatingStyles.transform === 'translate(0px, 0px)'\n              ? 'hidden'\n              : undefined,\n          pointerEvents: 'none',\n        }}\n        {...getFloatingProps()}\n      >\n        {children}\n      </div>\n    </Portal>\n  )\n}\n","import React, { useEffect } from 'react'\nimport CascadingMenu from '@jbrowse/core/ui/CascadingMenu'\nimport { IconButton } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport {\n  bindTrigger,\n  bindPopover,\n  usePopupState,\n} from 'material-ui-popup-state/hooks'\nimport { MenuItem } from '@jbrowse/core/ui'\n\nconst CascadingMenuButton = observer(function CascadingMenuButton({\n  children,\n  menuItems,\n  closeAfterItemClick = true,\n  stopPropagation,\n  setOpen,\n  onClick: onClickExtra,\n  ...rest\n}: {\n  children?: React.ReactElement\n  menuItems: MenuItem[]\n  closeAfterItemClick?: boolean\n  stopPropagation?: boolean\n  onClick?: () => void\n  setOpen?: (arg: boolean) => void\n  [key: string]: unknown\n}) {\n  const popupState = usePopupState({\n    popupId: 'viewMenu',\n    variant: 'popover',\n  })\n  const { onClick, onTouchStart, ...rest2 } = bindTrigger(popupState)\n  const { isOpen } = popupState\n  useEffect(() => {\n    setOpen?.(isOpen)\n  }, [isOpen, setOpen])\n\n  return (\n    <>\n      <IconButton\n        onClick={event => {\n          if (stopPropagation) {\n            event.stopPropagation()\n          }\n          onClick(event)\n          onClickExtra?.()\n        }}\n        onTouchStart={event => {\n          if (stopPropagation) {\n            event.stopPropagation()\n          }\n          onTouchStart(event)\n          onClickExtra?.()\n        }}\n        {...rest2}\n        {...rest}\n        disabled={menuItems.length === 0}\n      >\n        {children}\n      </IconButton>\n      <CascadingMenu\n        {...bindPopover(popupState)}\n        onMenuItemClick={(_: unknown, callback: () => void) => {\n          callback()\n        }}\n        menuItems={menuItems}\n        closeAfterItemClick={closeAfterItemClick}\n        popupState={popupState}\n      />\n    </>\n  )\n})\n\nexport default CascadingMenuButton\n","import React, { useState } from 'react'\nimport {\n  Button,\n  Dialog,\n  DialogActions,\n  DialogContent,\n  DialogTitle,\n} from '@mui/material'\nimport FactoryResetDialog from './FactoryResetDialog'\nimport ErrorMessage from './ErrorMessage'\n\nconst ResetComponent = ({\n  onFactoryReset,\n  resetButtonText,\n}: {\n  onFactoryReset: () => void\n  resetButtonText: string\n}) => {\n  const [dialogOpen, setDialogOpen] = useState(false)\n\n  return (\n    <>\n      <Button\n        data-testid=\"fatal-error\"\n        color=\"primary\"\n        variant=\"contained\"\n        onClick={() => {\n          setDialogOpen(true)\n        }}\n      >\n        {resetButtonText}\n      </Button>\n      <FactoryResetDialog\n        onClose={() => {\n          setDialogOpen(false)\n        }}\n        open={dialogOpen}\n        onFactoryReset={onFactoryReset}\n      />\n    </>\n  )\n}\n\nexport default function FatalErrorDialog({\n  componentStack,\n  error = 'No error message provided',\n  onFactoryReset,\n  resetButtonText = 'Factory Reset',\n}: {\n  componentStack?: string\n  error?: unknown\n  onFactoryReset: () => void\n  resetButtonText?: string\n}) {\n  return (\n    <Dialog maxWidth=\"xl\" open>\n      <DialogTitle>Fatal error</DialogTitle>\n      <DialogContent>\n        <ErrorMessage error={error} />\n        <pre>{componentStack}</pre>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            window.location.reload()\n          }}\n        >\n          Refresh\n        </Button>\n        <ResetComponent\n          onFactoryReset={onFactoryReset}\n          resetButtonText={resetButtonText}\n        />\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import React from 'react'\nimport { Box, Button, Typography, FormControl } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { isElectron } from '../../util'\nimport { LocalPathLocation, FileLocation, BlobLocation } from '../../util/types'\nimport { getBlob, storeBlobLocation } from '../../util/tracks'\n\nfunction isLocalPathLocation(loc: FileLocation): loc is LocalPathLocation {\n  return 'localPath' in loc\n}\n\nfunction isBlobLocation(loc: FileLocation): loc is BlobLocation {\n  return 'blobId' in loc\n}\n\nconst useStyles = makeStyles()(theme => ({\n  filename: {\n    marginLeft: theme.spacing(1),\n  },\n}))\n\nfunction LocalFileChooser({\n  location,\n  setLocation,\n}: {\n  location?: FileLocation\n  setLocation: (arg: FileLocation) => void\n}) {\n  const { classes } = useStyles()\n  const filename =\n    location &&\n    ((isBlobLocation(location) && location.name) ||\n      (isLocalPathLocation(location) && location.localPath))\n\n  const needToReload =\n    location && isBlobLocation(location) && !getBlob(location.blobId)\n\n  return (\n    <Box display=\"flex\" flexDirection=\"row\" alignItems=\"center\">\n      <Box>\n        <FormControl fullWidth>\n          <Button variant=\"outlined\" component=\"label\">\n            Choose File\n            <input\n              type=\"file\"\n              hidden\n              onChange={({ target }) => {\n                const file = target.files?.[0]\n                if (file) {\n                  if (isElectron) {\n                    const { webUtils } = window.require('electron')\n                    setLocation({\n                      localPath: webUtils.getPathForFile(file),\n                      locationType: 'LocalPathLocation',\n                    })\n                  } else {\n                    // @ts-expect-error\n                    setLocation(storeBlobLocation({ blob: file }))\n                  }\n                }\n              }}\n            />\n          </Button>\n        </FormControl>\n      </Box>\n      <Box>\n        <Typography\n          component=\"span\"\n          className={classes.filename}\n          color={filename ? 'initial' : 'textSecondary'}\n        >\n          {filename || 'No file chosen'}\n        </Typography>\n        {needToReload ? (\n          <Typography color=\"error\">(need to reload)</Typography>\n        ) : null}\n      </Box>\n    </Box>\n  )\n}\n\nexport default LocalFileChooser\n","import React from 'react'\nimport { TextField } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { FileLocation, isUriLocation } from '../../util/types'\n\nconst UrlChooser = observer(function ({\n  location,\n  setLocation,\n  label,\n}: {\n  location?: FileLocation\n  setLocation: (arg: FileLocation) => void\n  label?: string\n}) {\n  return (\n    <TextField\n      fullWidth\n      variant=\"outlined\"\n      inputProps={{ 'data-testid': 'urlInput' }}\n      defaultValue={location && isUriLocation(location) ? location.uri : ''}\n      label={label || 'Enter URL'}\n      onChange={event => {\n        setLocation({\n          uri: event.target.value.trim(),\n          locationType: 'UriLocation',\n        })\n      }}\n    />\n  )\n})\n\nexport default UrlChooser\n","import React from 'react'\nimport { Typography, TypographyProps } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { keyframes } from 'tss-react'\n\nconst useStyles = makeStyles()({\n  dots: {\n    '&::after': {\n      display: 'inline-block',\n      content: '\"\"',\n      width: '1em',\n      textAlign: 'left',\n      animation: `${keyframes`\n      0% {\n        content: '';\n      }\n      25% {\n          content: '.';\n      }\n      50% {\n        content: '..';\n      }\n      75% {\n        content: '...';\n      }\n      `} 1.2s infinite ease-in-out`,\n    },\n  },\n})\n\ninterface Props extends TypographyProps {\n  message?: string\n}\n\nexport default function LoadingEllipses({\n  message,\n  variant = 'body2',\n  ...rest\n}: Props) {\n  const { classes } = useStyles()\n  return (\n    <Typography className={classes.dots} {...rest} variant={variant}>\n      {message || 'Loading'}\n    </Typography>\n  )\n}\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()(theme => ({\n  bg: {\n    padding: 4,\n    margin: 4,\n    overflow: 'auto',\n    maxHeight: 200,\n    background: theme.palette.mode === 'dark' ? '#833' : '#f88',\n    border: `1px solid ${theme.palette.divider}`,\n  },\n}))\n\nexport default function RedErrorMessageBox({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const { classes } = useStyles()\n  return <div className={classes.bg}>{children}</div>\n}\n","const category10 = [\n  '#1f77b4',\n  '#ff7f0e',\n  '#2ca02c',\n  '#d62728',\n  '#9467bd',\n  '#8c564b',\n  '#e377c2',\n  '#7f7f7f',\n  '#bcbd22',\n  '#17becf',\n]\nconst dark2 = [\n  '#1b9e77',\n  '#d95f02',\n  '#7570b3',\n  '#e7298a',\n  '#66a61e',\n  '#e6ab02',\n  '#a6761d',\n  '#666666',\n]\nconst set1 = [\n  '#e41a1c',\n  '#377eb8',\n  '#4daf4a',\n  '#984ea3',\n  '#ff7f00',\n  '#ffff33',\n  '#a65628',\n  '#f781bf',\n  '#999999',\n]\nconst set2 = [\n  '#66c2a5',\n  '#fc8d62',\n  '#8da0cb',\n  '#e78ac3',\n  '#a6d854',\n  '#ffd92f',\n  '#e5c494',\n  '#b3b3b3',\n]\nconst tableau10 = [\n  '#4e79a7',\n  '#f28e2c',\n  '#e15759',\n  '#76b7b2',\n  '#59a14f',\n  '#edc949',\n  '#af7aa1',\n  '#ff9da7',\n  '#9c755f',\n  '#bab0ab',\n]\n\nconst ggplot2Colors6 = [\n  '#F8766D',\n  '#B79F00',\n  '#00BA38',\n  '#00BFC4',\n  '#619CFF',\n  '#F564E3',\n]\n\nconst ggplot2Colors5 = ['#F8766D', '#A3A500', '#00BF7D', '#00B0F6', '#E76BF3']\nconst ggplot2Colors4 = ['#F8766D', '#7CAE00', '#00BFC4', '#C77CFF']\nconst ggplot2Colors3 = ['#F8766D', '#00BA38', '#619CFF']\n\nexport {\n  set1,\n  set2,\n  tableau10,\n  dark2,\n  category10,\n  ggplot2Colors6,\n  ggplot2Colors5,\n  ggplot2Colors4,\n  ggplot2Colors3,\n}\n","import { Region, ViewSnap } from './index'\n\nexport interface BpOffset {\n  refName?: string\n  index: number\n  offset: number\n  start?: number\n  end?: number\n}\n\nfunction lengthBetween(self: ViewSnap, start: BpOffset, end: BpOffset) {\n  let bpSoFar = 0\n  const { displayedRegions } = self\n  if (start.index === end.index) {\n    bpSoFar += end.offset - start.offset\n  } else {\n    const s = displayedRegions[start.index]!\n    bpSoFar += s.end - s.start - start.offset\n    if (end.index - start.index >= 2) {\n      for (let i = start.index + 1; i < end.index; i++) {\n        const region = displayedRegions[i]!\n        const len = region.end - region.start\n        bpSoFar += len\n      }\n    }\n    bpSoFar += end.offset\n  }\n  return bpSoFar\n}\n\nexport function moveTo(\n  self: ViewSnap & {\n    zoomTo: (arg: number) => number\n    scrollTo: (arg: number) => void\n  },\n  start?: BpOffset,\n  end?: BpOffset,\n) {\n  if (!start || !end) {\n    return\n  }\n  const {\n    width,\n    interRegionPaddingWidth,\n    displayedRegions,\n    bpPerPx,\n    minimumBlockWidth,\n  } = self\n\n  const len = lengthBetween(self, start, end)\n  let numBlocksWideEnough = 0\n  for (let i = start.index; i < end.index; i++) {\n    const r = displayedRegions[i]!\n    if ((r.end - r.start) / bpPerPx > minimumBlockWidth) {\n      numBlocksWideEnough++\n    }\n  }\n\n  const targetBpPerPx =\n    len / (width - interRegionPaddingWidth * numBlocksWideEnough)\n  const newBpPerPx = self.zoomTo(targetBpPerPx)\n\n  // If our target bpPerPx was smaller than the allowed minBpPerPx, adjust\n  // the scroll so the requested range is in the middle of the screen\n  let extraBp = 0\n  if (targetBpPerPx < newBpPerPx) {\n    extraBp = ((newBpPerPx - targetBpPerPx) * self.width) / 2\n  }\n\n  let bpToStart = -extraBp\n\n  for (let i = 0; i < self.displayedRegions.length; i += 1) {\n    const region = self.displayedRegions[i]!\n    if (start.index === i) {\n      bpToStart += start.offset\n      break\n    } else {\n      bpToStart += region.end - region.start\n    }\n  }\n\n  self.scrollTo(Math.round(bpToStart / self.bpPerPx))\n}\n\nfunction coord(r: Region, bp: number) {\n  return Math.floor(r.reversed ? r.end - bp : r.start + bp) + 1\n}\n\n// manual return type since getSnapshot hard to infer here\nexport function pxToBp(\n  self: ViewSnap,\n  px: number,\n): {\n  coord: number\n  index: number\n  refName: string\n  oob: boolean\n  assemblyName: string\n  offset: number\n  start: number\n  end: number\n  reversed?: boolean\n} {\n  let bpSoFar = 0\n  const {\n    bpPerPx,\n    offsetPx,\n    displayedRegions,\n    interRegionPaddingWidth,\n    staticBlocks,\n  } = self\n  const blocks = staticBlocks.contentBlocks\n  const bp = (offsetPx + px) * bpPerPx\n  if (bp < 0) {\n    const r = displayedRegions[0]!\n    const snap = r\n    return {\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      ...(snap as Omit<typeof snap, symbol>),\n      oob: true,\n      coord: coord(r, bp),\n      offset: bp,\n      index: 0,\n    }\n  }\n\n  const interRegionPaddingBp = interRegionPaddingWidth * bpPerPx\n  let currBlock = 0\n  for (let i = 0; i < displayedRegions.length; i++) {\n    const r = displayedRegions[i]!\n    const len = r.end - r.start\n    const offset = bp - bpSoFar\n    if (len + bpSoFar > bp && bpSoFar <= bp) {\n      const snap = r\n      return {\n        // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n        ...(snap as Omit<typeof snap, symbol>),\n        oob: false,\n        offset,\n        coord: coord(r, offset),\n        index: i,\n      }\n    }\n\n    // add the interRegionPaddingWidth if the boundary is in the screen e.g. in\n    // a static block\n    if (blocks[currBlock]?.regionNumber === i) {\n      bpSoFar += len + interRegionPaddingBp\n      currBlock++\n    } else {\n      bpSoFar += len\n    }\n  }\n\n  if (bp >= bpSoFar && displayedRegions.length > 0) {\n    const r = displayedRegions.at(-1)!\n    const len = r.end - r.start\n    const offset = bp - bpSoFar + len\n\n    const snap = r\n    return {\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      ...(snap as Omit<typeof snap, symbol>),\n      oob: true,\n      offset,\n      coord: coord(r, offset),\n      index: displayedRegions.length - 1,\n    }\n  }\n  return {\n    coord: 0,\n    index: 0,\n    refName: '',\n    oob: true,\n    assemblyName: '',\n    offset: 0,\n    start: 0,\n    end: 0,\n    reversed: false,\n  }\n}\n\nexport function bpToPx({\n  refName,\n  coord,\n  regionNumber,\n  self,\n}: {\n  refName: string\n  coord: number\n  regionNumber?: number\n  self: ViewSnap\n}) {\n  let bpSoFar = 0\n\n  const { interRegionPaddingWidth, bpPerPx, displayedRegions, staticBlocks } =\n    self\n  const blocks = staticBlocks.contentBlocks\n  const interRegionPaddingBp = interRegionPaddingWidth * bpPerPx\n  let currBlock = 0\n\n  let i = 0\n  for (; i < displayedRegions.length; i++) {\n    const r = displayedRegions[i]!\n    const len = r.end - r.start\n    if (\n      refName === r.refName &&\n      coord >= r.start &&\n      coord <= r.end &&\n      (regionNumber ? regionNumber === i : true)\n    ) {\n      bpSoFar += r.reversed ? r.end - coord : coord - r.start\n      break\n    }\n\n    // add the interRegionPaddingWidth if the boundary is in the screen e.g. in\n    // a static block\n    if (blocks[currBlock]?.regionNumber === i) {\n      bpSoFar += len + interRegionPaddingBp\n      currBlock++\n    } else {\n      bpSoFar += len\n    }\n  }\n  const found = displayedRegions[i]\n  if (found) {\n    return {\n      index: i,\n      offsetPx: Math.round(bpSoFar / bpPerPx),\n    }\n  }\n\n  return undefined\n}\n\nexport function bpToPxMap({\n  refName,\n  coord,\n  regionNumber,\n  self,\n}: {\n  refName: string\n  coord: number\n  regionNumber?: number\n  self: ViewSnap\n}) {\n  let bpSoFar = 0\n\n  const { interRegionPaddingWidth, bpPerPx, displayedRegions, staticBlocks } =\n    self\n  const blocks = staticBlocks.contentBlocks\n  const interRegionPaddingBp = interRegionPaddingWidth * bpPerPx\n  const map = {}\n  let currBlock = 0\n\n  let i = 0\n  for (; i < displayedRegions.length; i++) {\n    const r = displayedRegions[i]!\n    const len = r.end - r.start\n    if (\n      refName === r.refName &&\n      coord >= r.start &&\n      coord <= r.end &&\n      (regionNumber === undefined ? true : regionNumber === i)\n    ) {\n      bpSoFar += r.reversed ? r.end - coord : coord - r.start\n      break\n    }\n\n    // add the interRegionPaddingWidth if the boundary is in the screen e.g. in\n    // a static block\n    if (blocks[currBlock]?.regionNumber === i) {\n      bpSoFar += len + interRegionPaddingBp\n      currBlock++\n    } else {\n      bpSoFar += len\n    }\n  }\n  const found = displayedRegions[i]\n  if (found) {\n    return {\n      index: i,\n      offsetPx: Math.round(bpSoFar / bpPerPx),\n    }\n  }\n\n  return map\n}\n","import { types, cast, Instance } from 'mobx-state-tree'\nimport { clamp, sum } from './index'\nimport { Feature } from './simpleFeature'\nimport { ElementId } from './types/mst'\nimport { Region as IRegion } from './types'\nimport calculateDynamicBlocks from './calculateDynamicBlocks'\nimport calculateStaticBlocks from './calculateStaticBlocks'\nimport { moveTo, pxToBp, bpToPx, BpOffset } from './Base1DUtils'\n\n/**\n * #stateModel Base1DView\n * used in non-lgv view representations of a 1d view e.g. the two axes of the\n * dotplot use this\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst Base1DView = types\n  .model('Base1DView', {\n    /**\n     * #property\n     */\n    id: ElementId,\n    /**\n     * #property\n     */\n    displayedRegions: types.optional(types.frozen<IRegion[]>(), []),\n    /**\n     * #property\n     */\n    bpPerPx: 0,\n    /**\n     * #property\n     */\n    offsetPx: 0,\n    /**\n     * #property\n     */\n    interRegionPaddingWidth: types.optional(types.number, 0),\n    /**\n     * #property\n     */\n    minimumBlockWidth: types.optional(types.number, 0),\n  })\n  .volatile(() => ({\n    features: undefined as undefined | Feature[],\n    volatileWidth: 0,\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    setDisplayedRegions(regions: IRegion[]) {\n      self.displayedRegions = cast(regions)\n    },\n    /**\n     * #action\n     */\n    setBpPerPx(val: number) {\n      self.bpPerPx = val\n    },\n    /**\n     * #action\n     */\n    setVolatileWidth(width: number) {\n      self.volatileWidth = width\n    },\n  }))\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get width() {\n      return self.volatileWidth\n    },\n    /**\n     * #getter\n     */\n    get assemblyNames() {\n      return [...new Set(self.displayedRegions.map(r => r.assemblyName))]\n    },\n    /**\n     * #getter\n     */\n    get displayedRegionsTotalPx() {\n      return this.totalBp / self.bpPerPx\n    },\n\n    /**\n     * #getter\n     */\n    get maxOffset() {\n      // objectively determined to keep the linear genome on the main screen\n      const leftPadding = 10\n      return this.displayedRegionsTotalPx - leftPadding\n    },\n\n    /**\n     * #getter\n     */\n    get minOffset() {\n      // objectively determined to keep the linear genome on the main screen\n      const rightPadding = 30\n      return -this.width + rightPadding\n    },\n\n    /**\n     * #getter\n     */\n    get totalBp() {\n      return sum(self.displayedRegions.map(a => a.end - a.start))\n    },\n  }))\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get dynamicBlocks() {\n      return calculateDynamicBlocks(self)\n    },\n\n    /**\n     * #getter\n     */\n    get staticBlocks() {\n      return calculateStaticBlocks(self)\n    },\n\n    /**\n     * #getter\n     */\n    get currBp() {\n      return sum(this.dynamicBlocks.map(a => a.end - a.start))\n    },\n  }))\n  .views(self => ({\n    /**\n     * #method\n     */\n    pxToBp(px: number) {\n      return pxToBp(self, px)\n    },\n\n    /**\n     * #method\n     */\n    bpToPx({\n      refName,\n      coord,\n      regionNumber,\n    }: {\n      refName: string\n      coord: number\n      regionNumber?: number\n    }) {\n      return bpToPx({ refName, coord, regionNumber, self })?.offsetPx\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    setFeatures(features: Feature[]) {\n      self.features = features\n    },\n\n    /**\n     * #action\n     * this makes a zoomed out view that shows all displayedRegions that makes\n     * the overview bar square with the scale bar\n     */\n    showAllRegions() {\n      self.bpPerPx = self.totalBp / self.width\n      self.offsetPx = 0\n    },\n\n    /**\n     * #action\n     */\n    zoomOut() {\n      this.zoomTo(self.bpPerPx * 2)\n    },\n\n    /**\n     * #action\n     */\n    zoomIn() {\n      this.zoomTo(self.bpPerPx / 2)\n    },\n\n    /**\n     * #action\n     */\n    zoomTo(bpPerPx: number, offset = self.width / 2) {\n      const newBpPerPx = clamp(\n        bpPerPx,\n        'minBpPerPx' in self ? (self.minBpPerPx as number) : 0,\n        'maxBpPerPx' in self\n          ? (self.maxBpPerPx as number)\n          : Number.POSITIVE_INFINITY,\n      )\n\n      const oldBpPerPx = self.bpPerPx\n      if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {\n        return oldBpPerPx\n      }\n\n      self.bpPerPx = newBpPerPx\n\n      // tweak the offset so that the center of the view remains at the same\n      // coordinate\n      self.offsetPx = clamp(\n        Math.round(\n          ((self.offsetPx + offset) * oldBpPerPx) / newBpPerPx - offset,\n        ),\n        self.minOffset,\n        self.maxOffset,\n      )\n      return self.bpPerPx\n    },\n\n    /**\n     * #action\n     */\n    scrollTo(offsetPx: number) {\n      const newOffsetPx = clamp(offsetPx, self.minOffset, self.maxOffset)\n      self.offsetPx = newOffsetPx\n      return newOffsetPx\n    },\n    /**\n     * #action\n     */\n    centerAt(coord: number, refName: string | undefined, regionNumber: number) {\n      if (!refName) {\n        return\n      }\n      const centerPx = self.bpToPx({\n        refName,\n        coord,\n        regionNumber,\n      })\n      if (centerPx) {\n        this.scrollTo(Math.round(centerPx - self.width / 2))\n      }\n    },\n\n    /**\n     * #action\n     * note: the scroll is clamped to keep the view on the main screen\n     */\n    scroll(distance: number) {\n      const oldOffsetPx = self.offsetPx\n      const newOffsetPx = clamp(\n        self.offsetPx + distance,\n        self.minOffset,\n        self.maxOffset,\n      )\n      self.offsetPx = newOffsetPx\n      return newOffsetPx - oldOffsetPx\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     * offset is the base-pair-offset in the displayed region, index is the\n     * index of the displayed region in the linear genome view\n     *\n     * @param start - object as `{start, end, offset, index}`\n     * @param end - object as `{start, end, offset, index}`\n     */\n    moveTo(start?: BpOffset, end?: BpOffset) {\n      moveTo(self, start, end)\n    },\n  }))\n\nexport type Base1DViewStateModel = typeof Base1DView\nexport type Base1DViewModel = Instance<Base1DViewStateModel>\n\nexport default Base1DView\n","import { Observable, fromEvent } from 'rxjs'\n\nclass AbortError extends Error {\n  public code: string | undefined\n}\n\n/**\n * properly check if the given AbortSignal is aborted.\n * per the standard, if the signal reads as aborted,\n * this function throws either a DOMException AbortError, or a regular error\n * with a `code` attribute set to `ERR_ABORTED`.\n *\n * for convenience, passing `undefined` is a no-op\n *\n * @param signal -\n * @returns nothing\n */\nexport function checkAbortSignal(signal?: AbortSignal): void {\n  if (!signal) {\n    return\n  }\n\n  if (!(signal instanceof AbortSignal)) {\n    throw new TypeError('must pass an AbortSignal')\n  }\n\n  if (signal.aborted) {\n    throw makeAbortError()\n  }\n}\n\nfunction timeout(ms: number) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n/**\n * Skips to the next tick, then runs `checkAbortSignal`.\n * Await this to inside an otherwise synchronous loop to\n * provide a place to break when an abort signal is received.\n */\nexport async function abortBreakPoint(signal?: AbortSignal) {\n  // it was observed that an actual timeout is needed to get the aborting (wrap\n  // hicrenderer in a try catch, console.error the error, and rethrow the error\n  // to see). using await Promise.resolve() did not appear to allow aborting to\n  // occur\n  await timeout(1)\n  checkAbortSignal(signal)\n}\n\nexport function makeAbortError() {\n  if (typeof DOMException !== 'undefined') {\n    return new DOMException('aborted', 'AbortError')\n  }\n  const e = new AbortError('aborted')\n  e.code = 'ERR_ABORTED'\n  return e\n}\n\nexport function observeAbortSignal(signal?: AbortSignal): Observable<Event> {\n  if (!signal) {\n    return new Observable()\n  }\n  return fromEvent(signal, 'abort')\n}\n\n/**\n * check if the given exception was caused by an operation being intentionally aborted\n * @param exception -\n */\nexport function isAbortException(exception: unknown): boolean {\n  return (\n    exception instanceof Error &&\n    // DOMException\n    (exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      (exception as AbortError).code === 'ERR_ABORTED' ||\n      // message contains aborted for bubbling through RPC\n      // things we have seen that we want to catch here\n      // Error: aborted\n      // AbortError: aborted\n      // AbortError: The user aborted a request.\n      !!/\\b(aborted|aborterror)\\b/i.test(exception.message))\n  )\n}\n","export function blobToDataURL(blob: Blob): Promise<string> {\n  const a = new FileReader()\n  return new Promise((resolve, reject) => {\n    a.onload = e => {\n      if (e.target) {\n        resolve(e.target.result as string)\n      } else {\n        reject(new Error('unknown result reading blob from canvas'))\n      }\n    }\n    a.readAsDataURL(blob)\n  })\n}\n","import { sum } from '.'\n\ntype Func<T> = (value: BaseBlock, index: number, array: BaseBlock[]) => T\n\nexport class BlockSet {\n  constructor(public blocks: BaseBlock[] = []) {}\n\n  push(block: BaseBlock) {\n    if (block.type === 'ElidedBlock' && this.blocks.length > 0) {\n      const lastBlock = this.blocks.at(-1)\n      if (lastBlock?.type === 'ElidedBlock') {\n        ;(lastBlock as ElidedBlock).push(block as ElidedBlock)\n        return\n      }\n    }\n\n    this.blocks.push(block)\n  }\n\n  getBlocks() {\n    return this.blocks\n  }\n\n  getRegions() {\n    return this.blocks.map(block => block.toRegion())\n  }\n\n  map<T, U = this>(func: Func<T>, thisarg?: U) {\n    // eslint-disable-next-line unicorn/no-array-method-this-argument\n    return this.blocks.map(func, thisarg)\n  }\n\n  forEach<T, U = this>(func: Func<T>, thisarg?: U) {\n    // eslint-disable-next-line unicorn/no-array-method-this-argument\n    this.blocks.forEach(func, thisarg)\n  }\n\n  get length() {\n    return this.blocks.length\n  }\n\n  get totalWidthPx() {\n    return this.blocks.length > 0\n      ? sum(this.blocks.map(blocks => blocks.widthPx))\n      : 0\n  }\n\n  get totalWidthPxWithoutBorders() {\n    return this.blocks.length > 0\n      ? sum(\n          this.blocks\n            .filter(block => block.variant !== 'boundary')\n            .map(blocks => blocks.widthPx),\n        )\n      : 0\n  }\n\n  get offsetPx() {\n    return this.blocks.length > 0 ? this.blocks[0]!.offsetPx : 0\n  }\n\n  get contentBlocks() {\n    return this.blocks.filter(block => block.type === 'ContentBlock')\n  }\n\n  get totalBp() {\n    return sum(this.contentBlocks.map(block => block.end - block.start))\n  }\n}\n\nexport class BaseBlock {\n  type = 'BaseBlock'\n\n  public regionNumber?: number\n\n  public reversed?: boolean\n\n  public refName: string\n\n  public start: number\n\n  public end: number\n\n  public assemblyName: string\n\n  public key: string\n\n  public offsetPx: number\n\n  public widthPx = 0\n\n  public variant?: string\n\n  public isLeftEndOfDisplayedRegion?: boolean\n\n  /**\n   * a block that should be shown as filled with data\n   */\n\n  constructor(data: Record<string, any>) {\n    Object.assign(this, data)\n    this.assemblyName = data.assemblyName\n    this.refName = data.refName\n    this.start = data.start\n    this.end = data.end\n    this.key = data.key\n    this.offsetPx = data.offsetPx\n  }\n\n  toRegion() {\n    return {\n      refName: this.refName,\n      start: this.start,\n      end: this.end,\n      assemblyName: this.assemblyName,\n      reversed: this.reversed,\n    }\n  }\n}\n\nexport class ContentBlock extends BaseBlock {\n  type = 'ContentBlock'\n}\n\n/**\n * marker block representing one or more blocks that are\n * too small to be shown at the current zoom level\n */\nexport class ElidedBlock extends BaseBlock {\n  type = 'ElidedBlock'\n\n  public widthPx: number\n\n  public elidedBlockCount = 0\n\n  constructor(data: Record<string, any>) {\n    super(data)\n    this.widthPx = data.widthPx\n  }\n\n  push(otherBlock: ElidedBlock) {\n    this.elidedBlockCount += 1\n    this.refName = ''\n    this.start = 0\n    this.end = 0\n    this.widthPx += otherBlock.widthPx\n  }\n}\n\n/**\n * marker block that sits between two different displayed regions\n * and provides a thick border between them\n */\nexport class InterRegionPaddingBlock extends BaseBlock {\n  type = 'InterRegionPaddingBlock'\n}\n","import { isStateTreeNode, getSnapshot } from 'mobx-state-tree'\nimport { intersection2 } from './range'\nimport { assembleLocStringFast } from '.'\nimport {\n  BlockSet,\n  ContentBlock,\n  ElidedBlock,\n  InterRegionPaddingBlock,\n} from './blockTypes'\nimport { Base1DViewModel } from './calculateStaticBlocks'\n\n/**\n * returns a BlockSet of which the `blocks` attribute is an array of 'dynamic\n * blocks', which are blocks representing only the regions that are visible in\n * the view right now. these are mostly used by tracks for which static blocks\n * are not feasible.\n *\n * each block is a plain JS object like:\n *   `{ refName, start, end, offsetPx, reversed? }`\n *\n * start and end are in bp, and start is always less than end, but if reversed\n * is true, startBp will be on the right side of the visible region.\n *\n * offsetPx is the number of pixels from the left edge of the view to the left\n * edge of the region\n *\n * NOTE: start, end, and offsetPx may all be fractional!\n *\n * @returns BlockSet of `{ refName, startBp, end, offset, reversed? }`\n */\nexport default function calculateDynamicBlocks(\n  model: Base1DViewModel,\n  padding = true,\n  elision = true,\n) {\n  const {\n    offsetPx,\n    displayedRegions,\n    bpPerPx,\n    width,\n    minimumBlockWidth,\n    interRegionPaddingWidth,\n  } = model\n\n  if (!width) {\n    throw new Error('view has no width, cannot calculate displayed blocks')\n  }\n  const blocks = new BlockSet()\n  let displayedRegionLeftPx = 0\n  const windowLeftPx = offsetPx\n  const windowRightPx = windowLeftPx + width\n  for (\n    let regionNumber = 0;\n    regionNumber < displayedRegions.length;\n    regionNumber++\n  ) {\n    const region = displayedRegions[regionNumber]\n    const {\n      assemblyName,\n      refName,\n      start: regionStart,\n      end: regionEnd,\n      reversed,\n    } = region!\n    const displayedRegionRightPx =\n      displayedRegionLeftPx + (regionEnd - regionStart) / bpPerPx\n\n    const regionWidthPx = (regionEnd - regionStart) / bpPerPx\n    const parentRegion = isStateTreeNode(region) ? getSnapshot(region) : region\n\n    const [leftPx, rightPx] = intersection2(\n      windowLeftPx,\n      windowRightPx,\n      displayedRegionLeftPx,\n      displayedRegionRightPx,\n    )\n    if (leftPx !== undefined && rightPx !== undefined) {\n      // this displayed region overlaps the view, so make a record for it\n      let start: number\n      let end: number\n      let isLeftEndOfDisplayedRegion: boolean\n      let isRightEndOfDisplayedRegion: boolean\n      let blockOffsetPx: number\n      if (reversed) {\n        start = Math.max(\n          regionStart,\n          regionEnd - (rightPx - displayedRegionLeftPx) * bpPerPx,\n        )\n        end = regionEnd - (leftPx - displayedRegionLeftPx) * bpPerPx\n        isLeftEndOfDisplayedRegion = end === regionEnd\n        isRightEndOfDisplayedRegion = start === regionStart\n        blockOffsetPx = displayedRegionLeftPx + (regionEnd - end) / bpPerPx\n      } else {\n        start = (leftPx - displayedRegionLeftPx) * bpPerPx + regionStart\n        end = Math.min(\n          regionEnd,\n          (rightPx - displayedRegionLeftPx) * bpPerPx + regionStart,\n        )\n        isLeftEndOfDisplayedRegion = start === regionStart\n        isRightEndOfDisplayedRegion = end === regionEnd\n        blockOffsetPx = displayedRegionLeftPx + (start - regionStart) / bpPerPx\n      }\n      const widthPx = (end - start) / bpPerPx\n      const blockData = {\n        assemblyName,\n        refName,\n        start,\n        end,\n        reversed,\n        offsetPx: blockOffsetPx,\n        parentRegion,\n        regionNumber,\n        widthPx,\n        isLeftEndOfDisplayedRegion,\n        isRightEndOfDisplayedRegion,\n        key: '',\n      }\n      blockData.key = `${assembleLocStringFast(blockData)}-${regionNumber}${\n        reversed ? '-reversed' : ''\n      }`\n\n      if (padding && blocks.length === 0 && isLeftEndOfDisplayedRegion) {\n        blocks.push(\n          new InterRegionPaddingBlock({\n            key: `${blockData.key}-beforeFirstRegion`,\n            widthPx: -offsetPx,\n            offsetPx: blockData.offsetPx + offsetPx,\n            variant: 'boundary',\n          }),\n        )\n      }\n\n      if (elision && regionWidthPx < minimumBlockWidth) {\n        blocks.push(new ElidedBlock(blockData))\n      } else {\n        blocks.push(new ContentBlock(blockData))\n      }\n\n      if (padding) {\n        // insert a inter-region padding block if we are crossing a displayed region\n        if (\n          regionWidthPx >= minimumBlockWidth &&\n          blockData.isRightEndOfDisplayedRegion &&\n          regionNumber < displayedRegions.length - 1\n        ) {\n          blocks.push(\n            new InterRegionPaddingBlock({\n              key: `${blockData.key}-rightpad`,\n              widthPx: interRegionPaddingWidth,\n              offsetPx: blockData.offsetPx + blockData.widthPx,\n            }),\n          )\n          displayedRegionLeftPx += interRegionPaddingWidth\n        }\n\n        if (\n          regionNumber === displayedRegions.length - 1 &&\n          blockData.isRightEndOfDisplayedRegion\n        ) {\n          blockOffsetPx = blockData.offsetPx + blockData.widthPx\n          blocks.push(\n            new InterRegionPaddingBlock({\n              key: `${blockData.key}-afterLastRegion`,\n              widthPx: width - blockOffsetPx + offsetPx,\n              offsetPx: blockOffsetPx,\n              variant: 'boundary',\n            }),\n          )\n        }\n      }\n    }\n    displayedRegionLeftPx += (regionEnd - regionStart) / bpPerPx\n  }\n  return blocks\n}\n","import { isStateTreeNode, getSnapshot, Instance } from 'mobx-state-tree'\nimport { assembleLocStringFast } from '.'\nimport {\n  BlockSet,\n  ContentBlock,\n  ElidedBlock,\n  InterRegionPaddingBlock,\n} from './blockTypes'\nimport { Region } from './types'\nimport type { Region as RegionModel } from './types/mst'\n\nexport interface Base1DViewModel {\n  offsetPx: number\n  width: number\n  displayedRegions: (Region | Instance<typeof RegionModel>)[]\n  bpPerPx: number\n  minimumBlockWidth: number\n  interRegionPaddingWidth: number\n}\n\nexport default function calculateStaticBlocks(\n  model: Base1DViewModel,\n  padding = true,\n  elision = true,\n  extra = 0,\n  width = 800,\n) {\n  const {\n    offsetPx,\n    displayedRegions,\n    bpPerPx,\n    minimumBlockWidth,\n    interRegionPaddingWidth,\n    width: modelWidth,\n  } = model\n\n  const windowLeftBp = offsetPx * bpPerPx\n  const windowRightBp = (offsetPx + modelWidth) * bpPerPx\n  const blockSizePx = width\n  const blockSizeBp = Math.ceil(blockSizePx * bpPerPx)\n  // for each displayed region\n  let regionBpOffset = 0\n  const blocks = new BlockSet()\n  for (\n    let regionNumber = 0;\n    regionNumber < displayedRegions.length;\n    regionNumber++\n  ) {\n    const region = displayedRegions[regionNumber]!\n    const {\n      assemblyName,\n      refName,\n      start: regionStart,\n      end: regionEnd,\n      reversed,\n    } = region\n\n    const regionBlockCount = Math.ceil((regionEnd - regionStart) / blockSizeBp)\n    const parentRegion = isStateTreeNode(region) ? getSnapshot(region) : region\n\n    let windowRightBlockNum =\n      Math.floor((windowRightBp - regionBpOffset) / blockSizeBp) + extra\n    if (windowRightBlockNum >= regionBlockCount) {\n      windowRightBlockNum = regionBlockCount - 1\n    }\n\n    let windowLeftBlockNum =\n      Math.floor((windowLeftBp - regionBpOffset) / blockSizeBp) - extra\n    if (windowLeftBlockNum < 0) {\n      windowLeftBlockNum = 0\n    }\n\n    const regionWidthPx = (regionEnd - regionStart) / bpPerPx\n\n    for (\n      let blockNum = windowLeftBlockNum;\n      blockNum <= windowRightBlockNum;\n      blockNum += 1\n    ) {\n      let start: number\n      let end: number\n      let isLeftEndOfDisplayedRegion: boolean\n      let isRightEndOfDisplayedRegion: boolean\n      if (reversed) {\n        start = Math.max(regionStart, regionEnd - (blockNum + 1) * blockSizeBp)\n        end = regionEnd - blockNum * blockSizeBp\n        isLeftEndOfDisplayedRegion = end === regionEnd\n        isRightEndOfDisplayedRegion = start === regionStart\n      } else {\n        start = regionStart + blockNum * blockSizeBp\n        end = Math.min(regionEnd, regionStart + (blockNum + 1) * blockSizeBp)\n        isLeftEndOfDisplayedRegion = start === regionStart\n        isRightEndOfDisplayedRegion = end === regionEnd\n      }\n      const widthPx = (end - start) / bpPerPx\n      const blockData = {\n        assemblyName,\n        refName,\n        start,\n        end,\n        reversed,\n        offsetPx: (regionBpOffset + blockNum * blockSizeBp) / bpPerPx,\n        parentRegion,\n        regionNumber,\n        widthPx,\n        isLeftEndOfDisplayedRegion,\n        isRightEndOfDisplayedRegion,\n        key: '',\n      }\n      blockData.key = `${assembleLocStringFast(blockData)}-${regionNumber}${\n        reversed ? '-reversed' : ''\n      }`\n\n      if (padding && regionNumber === 0 && blockNum === 0) {\n        blocks.push(\n          new InterRegionPaddingBlock({\n            key: `${blockData.key}-beforeFirstRegion`,\n            widthPx: width,\n            offsetPx: blockData.offsetPx - width,\n            variant: 'boundary',\n          }),\n        )\n      }\n\n      if (elision && regionWidthPx < minimumBlockWidth) {\n        blocks.push(new ElidedBlock(blockData))\n      } else {\n        blocks.push(new ContentBlock(blockData))\n      }\n\n      if (padding) {\n        // insert a inter-region padding block if we are crossing a displayed region\n        if (\n          regionWidthPx >= minimumBlockWidth &&\n          blockData.isRightEndOfDisplayedRegion &&\n          regionNumber < displayedRegions.length - 1\n        ) {\n          regionBpOffset += interRegionPaddingWidth * bpPerPx\n          blocks.push(\n            new InterRegionPaddingBlock({\n              key: `${blockData.key}-rightpad`,\n              widthPx: interRegionPaddingWidth,\n              offsetPx: blockData.offsetPx + blockData.widthPx,\n            }),\n          )\n        }\n        if (\n          regionNumber === displayedRegions.length - 1 &&\n          blockData.isRightEndOfDisplayedRegion\n        ) {\n          regionBpOffset += interRegionPaddingWidth * bpPerPx\n          blocks.push(\n            new InterRegionPaddingBlock({\n              key: `${blockData.key}-afterLastRegion`,\n              widthPx: width,\n              offsetPx: blockData.offsetPx + blockData.widthPx,\n              variant: 'boundary',\n            }),\n          )\n        }\n      }\n    }\n    regionBpOffset += regionEnd - regionStart\n  }\n  return blocks\n}\n","// from https://www.w3.org/TR/css-color-4/#named-colors\n\nconst colors: Record<string, string> = {\n  aliceblue: '#F0F8FF',\n  antiquewhite: '#FAEBD7',\n  aqua: '#00FFFF',\n  aquamarine: '#7FFFD4',\n  azure: '#F0FFFF',\n  beige: '#F5F5DC',\n  bisque: '#FFE4C4',\n  black: '#000000',\n  blanchedalmond: '#FFEBCD',\n  blue: '#0000FF',\n  blueviolet: '#8A2BE2',\n  brown: '#A52A2A',\n  burlywood: '#DEB887',\n  cadetblue: '#5F9EA0',\n  chartreuse: '#7FFF00',\n  chocolate: '#D2691E',\n  coral: '#FF7F50',\n  cornflowerblue: '#6495ED',\n  cornsilk: '#FFF8DC',\n  crimson: '#DC143C',\n  cyan: '#00FFFF',\n  darkblue: '#00008B',\n  darkcyan: '#008B8B',\n  darkgoldenrod: '#B8860B',\n  darkgray: '#A9A9A9',\n  darkgreen: '#006400',\n  darkgrey: '#A9A9A9',\n  darkkhaki: '#BDB76B',\n  darkmagenta: '#8B008B',\n  darkolivegreen: '#556B2F',\n  darkorange: '#FF8C00',\n  darkorchid: '#9932CC',\n  darkred: '#8B0000',\n  darksalmon: '#E9967A',\n  darkseagreen: '#8FBC8F',\n  darkslateblue: '#483D8B',\n  darkslategray: '#2F4F4F',\n  darkslategrey: '#2F4F4F',\n  darkturquoise: '#00CED1',\n  darkviolet: '#9400D3',\n  deeppink: '#FF1493',\n  deepskyblue: '#00BFFF',\n  dimgray: '#696969',\n  dimgrey: '#696969',\n  dodgerblue: '#1E90FF',\n  firebrick: '#B22222',\n  floralwhite: '#FFFAF0',\n  forestgreen: '#228B22',\n  fuchsia: '#FF00FF',\n  gainsboro: '#DCDCDC',\n  ghostwhite: '#F8F8FF',\n  gold: '#FFD700',\n  goldenrod: '#DAA520',\n  gray: '#808080',\n  green: '#008000',\n  greenyellow: '#ADFF2F',\n  grey: '#808080',\n  honeydew: '#F0FFF0',\n  hotpink: '#FF69B4',\n  indianred: '#CD5C5C',\n  indigo: '#4B0082',\n  ivory: '#FFFFF0',\n  khaki: '#F0E68C',\n  lavender: '#E6E6FA',\n  lavenderblush: '#FFF0F5',\n  lawngreen: '#7CFC00',\n  lemonchiffon: '#FFFACD',\n  lightblue: '#ADD8E6',\n  lightcoral: '#F08080',\n  lightcyan: '#E0FFFF',\n  lightgoldenrodyellow: '#FAFAD2',\n  lightgray: '#D3D3D3',\n  lightgreen: '#90EE90',\n  lightgrey: '#D3D3D3',\n  lightpink: '#FFB6C1',\n  lightsalmon: '#FFA07A',\n  lightseagreen: '#20B2AA',\n  lightskyblue: '#87CEFA',\n  lightslategray: '#778899',\n  lightslategrey: '#778899',\n  lightsteelblue: '#B0C4DE',\n  lightyellow: '#FFFFE0',\n  lime: '#00FF00',\n  limegreen: '#32CD32',\n  linen: '#FAF0E6',\n  magenta: '#FF00FF',\n  maroon: '#800000',\n  mediumaquamarine: '#66CDAA',\n  mediumblue: '#0000CD',\n  mediumorchid: '#BA55D3',\n  mediumpurple: '#9370DB',\n  mediumseagreen: '#3CB371',\n  mediumslateblue: '#7B68EE',\n  mediumspringgreen: '#00FA9A',\n  mediumturquoise: '#48D1CC',\n  mediumvioletred: '#C71585',\n  midnightblue: '#191970',\n  mintcream: '#F5FFFA',\n  mistyrose: '#FFE4E1',\n  moccasin: '#FFE4B5',\n  navajowhite: '#FFDEAD',\n  navy: '#000080',\n  oldlace: '#FDF5E6',\n  olive: '#808000',\n  olivedrab: '#6B8E23',\n  orange: '#FFA500',\n  orangered: '#FF4500',\n  orchid: '#DA70D6',\n  palegoldenrod: '#EEE8AA',\n  palegreen: '#98FB98',\n  paleturquoise: '#AFEEEE',\n  palevioletred: '#DB7093',\n  papayawhip: '#FFEFD5',\n  peachpuff: '#FFDAB9',\n  peru: '#CD853F',\n  pink: '#FFC0CB',\n  plum: '#DDA0DD',\n  powderblue: '#B0E0E6',\n  purple: '#800080',\n  rebeccapurple: '#663399',\n  red: '#FF0000',\n  rosybrown: '#BC8F8F',\n  royalblue: '#4169E1',\n  saddlebrown: '#8B4513',\n  salmon: '#FA8072',\n  sandybrown: '#F4A460',\n  seagreen: '#2E8B57',\n  seashell: '#FFF5EE',\n  sienna: '#A0522D',\n  silver: '#C0C0C0',\n  skyblue: '#87CEEB',\n  slateblue: '#6A5ACD',\n  slategray: '#708090',\n  slategrey: '#708090',\n  snow: '#FFFAFA',\n  springgreen: '#00FF7F',\n  steelblue: '#4682B4',\n  tan: '#D2B48C',\n  teal: '#008080',\n  thistle: '#D8BFD8',\n  tomato: '#FF6347',\n  turquoise: '#40E0D0',\n  violet: '#EE82EE',\n  wheat: '#F5DEB3',\n  white: '#FFFFFF',\n  whitesmoke: '#F5F5F5',\n  yellow: '#FFFF00',\n  yellowgreen: '#9ACD32',\n}\n\nexport function namedColorToHex(name: string): string | undefined {\n  return colors[name]\n}\n\nexport function isNamedColor(name: string): boolean {\n  return !!colors[name]\n}\n","import {\n  darken,\n  emphasize as muiEmphasize,\n  getContrastRatio,\n  getLuminance as muiGetLuminance,\n  lighten,\n} from '@mui/material/styles'\nimport { namedColorToHex } from './cssColorsLevel4'\n\n/**\n * Algorithmically pick a contrasting text color that will\n * be visible on top of the given background color. Either\n * black or white.\n *\n * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),\n *  hsl(), hsla(), or named color\n * @returns 'black' or 'white'\n */\nexport function contrastingTextColor(color: string): string {\n  const luminance = getLuminance(color)\n  return luminance > 0.5 ? 'black' : 'white'\n}\n\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n * Uses MUI's `getLuminance`, but adds support for named colors\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),\n *  hsl(), hsla(), or named color\n * @returns The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color: string): number {\n  const convertedColor = namedColorToHex(color)\n  return muiGetLuminance(convertedColor || color)\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * Uses MUI's `emphasize`, but adds support for named colors\n *\n * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),\n * hsl(), hsla(), or named color\n * @param coefficient - multiplier in the range 0 - 1, defaults to 0.15\n * @returns A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color: string, coefficient = 0.15): string {\n  const convertedColor = namedColorToHex(color)\n  return muiEmphasize(convertedColor || color, coefficient)\n}\n\nexport function makeContrasting(\n  foreground: string,\n  background = 'white',\n  minContrastRatio = 3,\n) {\n  let convertedForeground = namedColorToHex(foreground) || foreground\n  const convertedBackground = namedColorToHex(background) || background\n  const backgroundLuminance = getLuminance(convertedBackground)\n  let contrastRatio = getContrastRatio(convertedForeground, convertedBackground)\n  const originalColor = convertedForeground\n  let coefficient = 0.05\n  while (contrastRatio < minContrastRatio) {\n    convertedForeground =\n      backgroundLuminance > 0.5\n        ? darken(originalColor, coefficient)\n        : lighten(originalColor, coefficient)\n    coefficient += 0.05\n    contrastRatio = getContrastRatio(convertedForeground, convertedBackground)\n  }\n  return convertedForeground\n}\n\nexport { isNamedColor, namedColorToHex } from './cssColorsLevel4'\n","import { extend } from 'colord'\nimport mix from 'colord/plugins/mix'\nimport names from 'colord/plugins/names'\nextend([mix, names])\n\nexport { Colord, colord } from 'colord'\n","type Hasher<T> = (input: T) => string\n\n// from https://github.com/seriousManual/dedupe/blob/master/LICENSE\nexport function dedupe<T>(list: T[], hasher: Hasher<T> = JSON.stringify) {\n  const clone: T[] = []\n  const lookup = new Set<string>()\n\n  for (const entry of list) {\n    const hashed = hasher(entry)\n\n    if (!lookup.has(hashed)) {\n      clone.push(entry)\n      lookup.add(hashed)\n    }\n  }\n\n  return clone\n}\n","import { hashCode } from './'\n\n// generates a short \"id fingerprint\" from the config passed to the base\n// feature adapter by recursively enumerating props, but if config is too big\n// does not process entire config (FromConfigAdapter for example can be large)\n\nexport default function idMaker(args: any, id = '') {\n  const keys = Object.keys(args)\n  for (const key of keys) {\n    if (id.length > 5000) {\n      break\n    }\n    id +=\n      typeof args[key] === 'object' && args[key]\n        ? idMaker(args[key], id)\n        : `${key}-${args[key]};`\n  }\n  return hashCode(id)\n}\n","import { HttpRangeFetcher } from '@gmod/http-range-fetcher'\nimport { Buffer } from 'buffer'\nimport { RemoteFile, PolyfilledResponse } from 'generic-filehandle'\n\ntype BinaryRangeFetch = (\n  url: string,\n  start: number,\n  end: number,\n  options?: { headers?: HeadersInit; signal?: AbortSignal },\n) => Promise<BinaryRangeResponse>\n\nexport interface BinaryRangeResponse {\n  headers: Record<string, string>\n  requestDate: Date\n  responseDate: Date\n  buffer: Buffer\n}\n\nconst fetchers: Record<string, BinaryRangeFetch> = {}\n\nfunction binaryRangeFetch(\n  url: string,\n  start: number,\n  end: number,\n  options: { headers?: HeadersInit; signal?: AbortSignal } = {},\n): Promise<BinaryRangeResponse> {\n  const fetcher = fetchers[url]\n  if (!fetcher) {\n    throw new Error(`fetch not registered for ${url}`)\n  }\n  return fetcher(url, start, end, options)\n}\n\nconst globalRangeCache = new HttpRangeFetcher({\n  fetch: binaryRangeFetch,\n  size: 500 * 1024 ** 2, // 500MiB\n  chunkSize: 128 * 1024, // 128KiB\n  maxFetchSize: 100 * 1024 ** 2, // 100MiB\n  minimumTTL: 24 * 60 * 60 * 1000, // 1 day\n})\n\nexport function clearCache() {\n  globalRangeCache.reset()\n}\n\nexport class RemoteFileWithRangeCache extends RemoteFile {\n  public async fetch(\n    url: RequestInfo,\n    init?: RequestInit,\n  ): Promise<PolyfilledResponse> {\n    const str = String(url)\n    if (!fetchers[str]) {\n      fetchers[str] = this.fetchBinaryRange.bind(this)\n    }\n    // if it is a range request, route it through the range cache\n    const range = new Headers(init?.headers).get('range')\n    if (range) {\n      const rangeParse = /bytes=(\\d+)-(\\d+)/.exec(range)\n      if (rangeParse) {\n        const [, start, end] = rangeParse\n        const s = Number.parseInt(start!, 10)\n        const e = Number.parseInt(end!, 10)\n        const len = e - s\n        const { buffer, headers } = (await globalRangeCache.getRange(\n          url,\n          s,\n          len + 1,\n          { signal: init?.signal },\n        )) as BinaryRangeResponse\n        return new Response(buffer, { status: 206, headers })\n      }\n    }\n    return super.fetch(url, init)\n  }\n\n  public async fetchBinaryRange(\n    url: string,\n    start: number,\n    end: number,\n    options: { headers?: HeadersInit; signal?: AbortSignal } = {},\n  ): Promise<BinaryRangeResponse> {\n    const requestDate = new Date()\n    const res = await super.fetch(url, {\n      ...options,\n      headers: {\n        ...options.headers,\n        range: `bytes=${start}-${end}`,\n      },\n    })\n    const responseDate = new Date()\n    if (!res.ok) {\n      const errorMessage = `HTTP ${res.status} fetching ${url} bytes ${start}-${end}`\n      const hint = ' (should be 206 for range requests)'\n      throw new Error(`${errorMessage}${res.status === 200 ? hint : ''}`)\n    }\n\n    // translate the Headers object into a regular key -> value object.\n    // will miss duplicate headers of course\n\n    const headers: Record<string, any> = {}\n    for (const [k, v] of res.headers.entries()) {\n      headers[k] = v\n    }\n\n    // return the response headers, and the data buffer\n    const arrayBuffer = await res.arrayBuffer()\n    return {\n      headers,\n      requestDate,\n      responseDate,\n      buffer: Buffer.from(arrayBuffer),\n    }\n  }\n}\n","import {\n  BlobFile,\n  GenericFilehandle,\n  LocalFile,\n  Fetcher,\n} from 'generic-filehandle'\nimport isNode from 'detect-node'\n\n// locals\nimport { RemoteFileWithRangeCache } from './RemoteFileWithRangeCache'\nimport {\n  FileLocation,\n  LocalPathLocation,\n  BlobLocation,\n  isRootModelWithInternetAccounts,\n  isUriLocation,\n  AuthNeededError,\n  UriLocation,\n} from '../types'\nimport { BaseInternetAccountModel } from '../../pluggableElementTypes/models'\nimport { getBlob } from '../tracks'\nimport PluginManager from '../../PluginManager'\nimport { isElectron } from '../'\n\nfunction isLocalPathLocation(\n  location: FileLocation,\n): location is LocalPathLocation {\n  return 'localPath' in location\n}\n\nfunction isBlobLocation(location: FileLocation): location is BlobLocation {\n  return 'blobId' in location\n}\n\n/** if a UriLocation has a baseUri, resolves its uri with respect to that base */\nexport function resolveUriLocation(location: UriLocation) {\n  return location.baseUri\n    ? { ...location, uri: new URL(location.uri, location.baseUri).href }\n    : location\n}\n\nexport function openLocation(\n  location: FileLocation,\n  pluginManager?: PluginManager,\n): GenericFilehandle {\n  if (isLocalPathLocation(location)) {\n    if (!location.localPath) {\n      throw new Error('No local path provided')\n    }\n\n    if (isNode || isElectron) {\n      return new LocalFile(location.localPath)\n    } else {\n      throw new Error(\"can't use local files in the browser\")\n    }\n  }\n  if (isBlobLocation(location)) {\n    // special case where blob is not directly stored on the model, use a getter\n    const blob = getBlob(location.blobId)\n    if (!blob) {\n      throw new Error(\n        `file (\"${location.name}\") was opened locally from a previous session. To restore it, go to track settings and reopen the file`,\n      )\n    }\n    return new BlobFile(blob)\n  }\n  if (isUriLocation(location)) {\n    // Check for empty string\n    if (!location.uri) {\n      throw new Error('No URI provided')\n    }\n\n    // Resolve any relative URLs to absolute URLs\n    const absoluteLocation = resolveUriLocation(location)\n\n    // If there is a plugin manager, we can try internet accounts\n    if (pluginManager) {\n      const internetAccount = getInternetAccount(location, pluginManager)\n      // If an internetAccount was found, use it to open the location\n      if (internetAccount) {\n        return internetAccount.openLocation(absoluteLocation)\n      }\n    }\n    // Otherwise fall back on usual open\n    return new RemoteFileWithRangeCache(absoluteLocation.uri, {\n      fetch: checkAuthNeededFetch,\n    })\n  }\n  throw new Error('invalid fileLocation')\n}\n\nexport function getFetcher(\n  location: FileLocation,\n  pluginManager?: PluginManager,\n): Fetcher {\n  if (!isUriLocation(location)) {\n    throw new Error(`Not a valid UriLocation: ${JSON.stringify(location)}`)\n  }\n  if (pluginManager) {\n    const internetAccount = getInternetAccount(location, pluginManager)\n    if (internetAccount) {\n      return internetAccount.getFetcher(location)\n    }\n  }\n  return checkAuthNeededFetch\n}\n\nfunction getInternetAccount(\n  location: UriLocation,\n  pluginManager: PluginManager,\n): BaseInternetAccountModel | undefined {\n  const { rootModel } = pluginManager\n  // If there is an appRootModel, use it to find the internetAccount\n  if (rootModel && isRootModelWithInternetAccounts(rootModel)) {\n    return rootModel.findAppropriateInternetAccount(location)\n  }\n  // If there is no appRootModel, but there is pre-auth, create a temporary\n  // internetAccount. This is typical in a worker.\n  if (location.internetAccountPreAuthorization) {\n    if (!location.internetAccountPreAuthorization.authInfo.token) {\n      throw new Error(\n        'Failed to obtain token from internet account. Try reloading the page',\n      )\n    }\n    return pluginManager\n      .getInternetAccountType(\n        location.internetAccountPreAuthorization.internetAccountType,\n      )!\n      .stateModel.create({\n        type: location.internetAccountPreAuthorization.internetAccountType,\n        configuration:\n          location.internetAccountPreAuthorization.authInfo.configuration,\n      })\n  }\n  return undefined\n}\n\n// This fetch throws a special error if the response is \"401\" and includes a\n// \"WWW-Authenticate: Basic\" header. This is so downstream code can retry if\n// needed with HTTP Basic authentication included\nasync function checkAuthNeededFetch(url: RequestInfo, opts?: RequestInit) {\n  const response = await fetch(url, opts)\n  if (\n    response.status === 401 &&\n    response.headers.get('WWW-Authenticate')?.includes('Basic')\n  ) {\n    throw new AuthNeededError(\n      'Accessing HTTPBasic resource without authentication',\n      url.toString(),\n    )\n  }\n  return response\n}\n\nexport { RemoteFileWithRangeCache } from './RemoteFileWithRangeCache'\n","import jexl from 'jexl'\nimport { Feature } from './simpleFeature'\n\ntype JexlWithAddFunction = typeof jexl & {\n  addFunction(name: string, func: (...args: unknown[]) => unknown): void\n}\ntype JexlNonBuildable = Omit<typeof jexl, 'Jexl'>\n\nexport default function JexlF(/* config?: any*/): JexlNonBuildable {\n  const j = new jexl.Jexl() as JexlWithAddFunction\n  // someday will make sure all of configs callbacks are added in, including\n  // ones passed in\n\n  // below are core functions\n  j.addFunction('get', (feature: Feature, data: string) => feature.get(data))\n  j.addFunction('parent', (feature: Feature) => feature.parent())\n\n  j.addFunction('id', (feature: Feature) => feature.id())\n\n  // let user cast a jexl type into a javascript type\n  j.addFunction('cast', (arg: unknown) => arg)\n\n  // logging\n  j.addFunction('log', (thing: unknown) => {\n    console.log(thing) // eslint-disable-line no-console\n    return thing\n  })\n\n  // math\n  // addfunction added in jexl 2.3 but types/jexl still on 2.2\n  j.addFunction('max', Math.max)\n  j.addFunction('min', Math.min)\n  j.addFunction('sqrt', Math.sqrt)\n  j.addFunction('ceil', Math.ceil)\n  j.addFunction('floor', Math.floor)\n  j.addFunction('round', Math.round)\n  j.addFunction('abs', Math.abs)\n  j.addFunction('log10', Math.log10)\n  j.addFunction('parseInt', Number.parseInt)\n  j.addFunction('parseFloat', Number.parseFloat)\n\n  // string\n  j.addFunction('split', (s: string, char: string) => s.split(char))\n  j.addFunction('charAt', (s: string, index: number) => s.charAt(index))\n  j.addFunction('charCodeAt', (s: string, index: number) => s.charCodeAt(index))\n  j.addFunction('codePointAt', (s: string, pos: number) => s.codePointAt(pos))\n  j.addFunction('startsWith', (s: string, search: string, len?: number) =>\n    s.startsWith(search, len),\n  )\n  j.addFunction('endsWith', (s: string, search: string, len?: number) =>\n    s.endsWith(search, len),\n  )\n  j.addFunction('padEnd', (s: string, len: number, pad?: string) =>\n    s.padEnd(len, pad),\n  )\n  j.addFunction('padStart', (s: string, len: number, fill?: string) =>\n    s.padStart(len, fill),\n  )\n  j.addFunction('repeat', (s: string, count: number) => s.repeat(count))\n  j.addFunction('replace', (s: string, match: string, sub: string) =>\n    s.replace(match, sub),\n  )\n  j.addFunction('replaceAll', (s: string, match: string, sub: string) =>\n    s.replaceAll(match, sub),\n  )\n  j.addFunction('slice', (s: string, start: number, end?: number) =>\n    s.slice(start, end),\n  )\n  j.addFunction('startsWith', (s: string, search: string, pos?: number) =>\n    s.startsWith(search, pos),\n  )\n  j.addFunction('substring', (s: string, start: number, end?: number) =>\n    // eslint-disable-next-line unicorn/prefer-string-slice\n    s.substring(start, end),\n  )\n  j.addFunction('toLowerCase', (s: string) => s.toLowerCase())\n  j.addFunction('toUpperCase', (s: string) => s.toUpperCase())\n  j.addFunction('jsonParse', (s: string) => JSON.parse(s))\n  j.addFunction('trim', (s: string) => s.trim())\n  j.addFunction('trimEnd', (s: string) => s.trimEnd())\n  j.addFunction('trimStart', (s: string) => s.trimStart())\n\n  j.addFunction('getTag', (feature: Feature, s: string) => {\n    const tags = feature.get('tags')\n    return tags ? tags[s] : feature.get(s)\n  })\n\n  j.addBinaryOp('&', 15, (a: number, b: number) => a & b)\n\n  return j\n}\n","import createJexlInstance from './jexl'\n\nconst compilationCache: Record<string, any> = {}\n\n// revert function strings back to main, create a different file for\n// jexlStrings.ts pass the jexl property of the pluginManager as a param\n\n/**\n * compile a jexlExpression to a string\n *\n * @param str - string of code like `jexl:...`\n * @param options -\n */\nexport function stringToJexlExpression(str: string, jexl?: any) {\n  const cacheKey = `nosig|${str}`\n  if (!compilationCache[cacheKey]) {\n    const match = str.startsWith('jexl:')\n    if (!match) {\n      throw new Error('string does not appear to be in jexl format')\n    }\n    const code = str.split('jexl:')[1]!\n    const compiled = jexl\n      ? jexl.compile(code)\n      : createJexlInstance().compile(code)\n    compilationCache[cacheKey] = compiled\n  }\n\n  return compilationCache[cacheKey]\n}\n","import {\n  RectTuple,\n  SerializedLayout,\n  Rectangle,\n  BaseLayout,\n} from './BaseLayout'\n\n/**\n * Rectangle-layout manager that lays out rectangles using bitmaps at\n * resolution that, for efficiency, may be somewhat lower than that of\n * the coordinate system for the rectangles being laid out.  `pitchX`\n * and `pitchY` are the ratios of input scale resolution to internal\n * bitmap resolution.\n */\n\n// minimum excess size of the array at which we garbage collect\nconst minSizeToBotherWith = 10000\nconst maxFeaturePitchWidth = 20000\n\nfunction segmentsIntersect(\n  x1: number,\n  x2: number,\n  y1: number,\n  y2: number,\n): boolean {\n  return x2 >= y1 && y2 >= x1\n}\n\ntype Bit<T> = Record<string, T> | string | undefined\n\ninterface RowState<T> {\n  min: number\n  max: number\n  offset: number\n  bits: Bit<T>[]\n}\n// a single row in the layout\nclass LayoutRow<T> {\n  private padding = 1\n\n  private allFilled?: Record<string, T> | string\n\n  private widthLimit = 1_000_000\n\n  private rowState?: RowState<T>\n\n  // this.rowState.bits is the array of items in the layout row, indexed by (x - this.offset)\n  // this.rowState.min is the leftmost edge of all the rectangles we have in the layout\n  // this.rowState.max is the rightmost edge of all the rectangles we have in the layout\n  // this.rowState.offset is the offset of the bits array relative to the genomic coordinates\n  //      (modified by pitchX, but we don't know that in this class)\n\n  setAllFilled(data: Record<string, T> | string): void {\n    this.allFilled = data\n  }\n\n  getItemAt(x: number): Record<string, T> | string | undefined {\n    if (this.allFilled) {\n      return this.allFilled\n    }\n    if (\n      this.rowState?.min === undefined ||\n      x < this.rowState.min ||\n      x >= this.rowState.max\n    ) {\n      return undefined\n    }\n    return this.rowState.bits[x - this.rowState.offset]\n  }\n\n  isRangeClear(left: number, right: number) {\n    if (this.allFilled) {\n      return false\n    }\n\n    if (\n      this.rowState === undefined ||\n      right <= this.rowState.min ||\n      left >= this.rowState.max\n    ) {\n      return true\n    }\n    const { min, max, offset, bits } = this.rowState\n\n    const maxX = Math.min(max, right) - offset\n    let flag = true\n    for (let x = Math.max(min, left) - offset; x < maxX && flag; x++) {\n      flag = bits[x] === undefined\n    }\n\n    return flag\n  }\n\n  // NOTE: this.rowState.min, this.rowState.max, and this.rowState.offset are\n  // interbase coordinates\n  initialize(left: number, right: number): RowState<T> {\n    const rectWidth = right - left\n    return {\n      offset: left - rectWidth,\n      min: left,\n      max: right,\n      bits: Array.from({ length: 3 * rectWidth }),\n    }\n  }\n\n  addRect(rect: Rectangle<T>, data: Record<string, T> | string): void {\n    const left = rect.l\n    const right = rect.r + this.padding // only padding on the right\n    if (!this.rowState) {\n      this.rowState = this.initialize(left, right)\n    }\n\n    // or check if we need to expand to the left and/or to the right\n    let oLeft = left - this.rowState.offset\n    let oRight = right - this.rowState.offset\n    const currLength = this.rowState.bits.length\n\n    // expand rightward if necessary\n    if (oRight >= this.rowState.bits.length) {\n      const additionalLength = oRight + 1\n      if (this.rowState.bits.length + additionalLength > this.widthLimit) {\n        console.warn(\n          'Layout width limit exceeded, discarding old layout. Please be more careful about discarding unused blocks.',\n        )\n        this.rowState = this.initialize(left, right)\n      } else if (additionalLength > 0) {\n        this.rowState.bits = [\n          ...this.rowState.bits,\n          ...Array.from<Bit<T>>({ length: additionalLength }),\n        ]\n      }\n    }\n\n    // expand leftward if necessary\n    if (left < this.rowState.offset) {\n      // use math.min to avoid negative lengths\n      const additionalLength = Math.min(\n        currLength - oLeft,\n        this.rowState.offset,\n      )\n      if (this.rowState.bits.length + additionalLength > this.widthLimit) {\n        console.warn(\n          'Layout width limit exceeded, discarding old layout. Please be more careful about discarding unused blocks.',\n        )\n\n        this.rowState = this.initialize(left, right)\n      } else {\n        this.rowState.bits = [\n          ...Array.from<Bit<T>>({ length: additionalLength }),\n          ...this.rowState.bits,\n        ]\n        this.rowState.offset -= additionalLength\n      }\n    }\n    oRight = right - this.rowState.offset\n    oLeft = left - this.rowState.offset\n    const w = oRight - oLeft\n\n    if (w > maxFeaturePitchWidth) {\n      console.warn(\n        `Layout X pitch set too low, feature spans ${w} bits in a single row.`,\n        rect,\n        data,\n      )\n    }\n\n    for (let x = oLeft; x < oRight; x += 1) {\n      this.rowState.bits[x] = data\n    }\n\n    if (left < this.rowState.min) {\n      this.rowState.min = left\n    }\n    if (right > this.rowState.max) {\n      this.rowState.max = right\n    }\n  }\n\n  /**\n   *  Given a range of interbase coordinates, deletes all data dealing with that range\n   */\n  discardRange(left: number, right: number): void {\n    if (this.allFilled) {\n      return\n    } // allFilled is irrevocable currently\n\n    // if we have no data, do nothing\n    if (!this.rowState) {\n      return\n    }\n\n    // if doesn't overlap at all, do nothing\n    if (right <= this.rowState.min || left >= this.rowState.max) {\n      return\n    }\n\n    // if completely encloses range, discard everything\n    if (left <= this.rowState.min && right >= this.rowState.max) {\n      this.rowState = undefined\n      return\n    }\n\n    // if overlaps left edge, adjust the min\n    if (right > this.rowState.min && left <= this.rowState.min) {\n      this.rowState.min = right\n    }\n\n    // if overlaps right edge, adjust the max\n    if (left < this.rowState.max && right >= this.rowState.max) {\n      this.rowState.max = left\n    }\n\n    // now trim the left, right, or both sides of the array\n    if (\n      this.rowState.offset < this.rowState.min - minSizeToBotherWith &&\n      this.rowState.bits.length >\n        this.rowState.max + minSizeToBotherWith - this.rowState.offset\n    ) {\n      // trim both sides\n      const leftTrimAmount = this.rowState.min - this.rowState.offset\n      const rightTrimAmount =\n        this.rowState.bits.length -\n        1 -\n        (this.rowState.max - this.rowState.offset)\n      // if (rightTrimAmount <= 0) debugger\n      // if (leftTrimAmount <= 0) debugger\n      // this.log(`trim both sides, ${leftTrimAmount} from left, ${rightTrimAmount} from right`)\n      this.rowState.bits = this.rowState.bits.slice(\n        leftTrimAmount,\n        this.rowState.bits.length - rightTrimAmount,\n      )\n      this.rowState.offset += leftTrimAmount\n      // if (this.rowState.offset > this.rowState.min) debugger\n      // if (this.rowState.bits.length <= this.rowState.max - this.rowState.offset) debugger\n    } else if (this.rowState.offset < this.rowState.min - minSizeToBotherWith) {\n      // trim left side\n      const desiredOffset =\n        this.rowState.min - Math.floor(minSizeToBotherWith / 2)\n      const trimAmount = desiredOffset - this.rowState.offset\n      // this.log(`trim left side by ${trimAmount}`)\n      this.rowState.bits.splice(0, trimAmount)\n      this.rowState.offset += trimAmount\n      // if (this.rowState.offset > this.rowState.min) debugger\n      // if (this.rowState.bits.length <= this.rowState.max - this.rowState.offset) debugger\n    } else if (\n      this.rowState.bits.length >\n      this.rowState.max - this.rowState.offset + minSizeToBotherWith\n    ) {\n      // trim right side\n      const desiredLength =\n        this.rowState.max -\n        this.rowState.offset +\n        1 +\n        Math.floor(minSizeToBotherWith / 2)\n      // this.log(`trim right side by ${this.rowState.bits.length-desiredLength}`)\n      // if (desiredLength > this.rowState.bits.length) debugger\n      this.rowState.bits.length = desiredLength\n      // if (this.rowState.offset > this.rowState.min) debugger\n      // if (this.rowState.bits.length <= this.rowState.max - this.rowState.offset) debugger\n    }\n\n    // if (this.rowState.offset > this.rowState.min) debugger\n    // if (this.rowState.bits.length <= this.rowState.max - this.rowState.offset) debugger\n\n    // if range now enclosed in the new bounds, loop through and clear the bits\n    const oLeft = Math.max(this.rowState.min, left) - this.rowState.offset\n    // if (oLeft < 0) debugger\n    // if (oLeft >= this.rowState.bits.length) debugger\n    // if (oRight < 0) debugger\n    // if (oRight >= this.rowState.bits.length) debugger\n\n    const oRight = Math.min(right, this.rowState.max) - this.rowState.offset\n    for (let x = oLeft; x >= 0 && x < oRight; x += 1) {\n      this.rowState.bits[x] = undefined\n    }\n  }\n}\n\nexport default class GranularRectLayout<T> implements BaseLayout<T> {\n  private pitchX: number\n\n  private pitchY: number\n\n  private hardRowLimit: number\n\n  private bitmap: LayoutRow<T>[]\n\n  private rectangles: Map<string, Rectangle<T>>\n\n  public maxHeightReached: boolean\n\n  private maxHeight: number\n\n  private displayMode: string\n\n  private pTotalHeight: number\n\n  /**\n   * pitchX - layout grid pitch in the X direction\n   * pitchY - layout grid pitch in the Y direction\n   * maxHeight - maximum layout height, default Infinity (no max)\n   */\n  constructor({\n    pitchX = 10,\n    pitchY = 10,\n    maxHeight = 10000,\n    hardRowLimit = 10000,\n    displayMode = 'normal',\n  }: {\n    pitchX?: number\n    pitchY?: number\n    maxHeight?: number\n    displayMode?: string\n    hardRowLimit?: number\n  } = {}) {\n    this.pitchX = pitchX\n    this.pitchY = pitchY\n    this.hardRowLimit = hardRowLimit\n    this.maxHeightReached = false\n    this.displayMode = displayMode\n\n    // reduce the pitchY to try and pack the features tighter\n    if (this.displayMode === 'compact') {\n      this.pitchY = Math.round(this.pitchY / 4) || 1\n      this.pitchX = Math.round(this.pitchX / 4) || 1\n    }\n\n    this.bitmap = []\n    this.rectangles = new Map()\n    this.maxHeight = Math.ceil(maxHeight / this.pitchY)\n    this.pTotalHeight = 0 // total height, in units of bitmap squares (px/pitchY)\n  }\n\n  /**\n   * @returns top position for the rect, or Null if laying\n   *  out the rect would exceed maxHeight\n   */\n  addRect(\n    id: string,\n    left: number,\n    right: number,\n    height: number,\n    data?: T,\n  ): number | null {\n    // if we have already laid it out, return its layout\n    const storedRec = this.rectangles.get(id)\n    if (storedRec) {\n      if (storedRec.top === null) {\n        return null\n      }\n\n      // add it to the bitmap again, since that bitmap range may have been\n      // discarded\n      this.addRectToBitmap(storedRec)\n      return storedRec.top * this.pitchY\n    }\n\n    const pLeft = Math.floor(left / this.pitchX)\n    const pRight = Math.floor(right / this.pitchX)\n    const pHeight = Math.ceil(height / this.pitchY)\n\n    const rectangle: Rectangle<T> = {\n      id,\n      l: pLeft,\n      r: pRight,\n      top: null,\n      h: pHeight,\n      originalHeight: height,\n      data,\n    }\n\n    const maxTop = this.maxHeight - pHeight\n    let top = 0\n    if (this.displayMode !== 'collapse') {\n      for (; top <= maxTop; top += 1) {\n        if (!this.collides(rectangle, top)) {\n          break\n        }\n      }\n\n      if (top > maxTop) {\n        rectangle.top = null\n        this.rectangles.set(id, rectangle)\n        this.maxHeightReached = true\n        return null\n      }\n    }\n    rectangle.top = top\n    this.addRectToBitmap(rectangle)\n    this.rectangles.set(id, rectangle)\n    this.pTotalHeight = Math.max(this.pTotalHeight || 0, top + pHeight)\n    return top * this.pitchY\n  }\n\n  collides(rect: Rectangle<T>, top: number) {\n    const { bitmap } = this\n\n    const maxY = top + rect.h\n    for (let y = top; y < maxY; y += 1) {\n      const row = bitmap[y]\n      if (row !== undefined && !row.isRangeClear(rect.l, rect.r)) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  /**\n   * make a subarray if it does not exist\n   */\n  private autovivifyRow(bitmap: LayoutRow<T>[], y: number) {\n    let row = bitmap[y]\n    if (!row) {\n      if (y > this.hardRowLimit) {\n        throw new Error(\n          `layout hard limit (${\n            this.hardRowLimit * this.pitchY\n          }px) exceeded, aborting layout`,\n        )\n      }\n      row = new LayoutRow()\n      bitmap[y] = row\n    }\n    return row\n  }\n\n  addRectToBitmap(rect: Rectangle<T>) {\n    if (rect.top === null) {\n      return\n    }\n\n    const data = rect.id\n    const yEnd = rect.top + rect.h\n    if (rect.r - rect.l > maxFeaturePitchWidth) {\n      // the rect is very big in relation to the view size, just pretend, for\n      // the purposes of layout, that it extends infinitely.  this will cause\n      // weird layout if a user scrolls manually for a very, very long time\n      // along the genome at the same zoom level.  but most users will not do\n      // that.  hopefully.\n      for (let y = rect.top; y < yEnd; y += 1) {\n        this.autovivifyRow(this.bitmap, y).setAllFilled(data)\n      }\n    } else {\n      for (let y = rect.top; y < yEnd; y += 1) {\n        this.autovivifyRow(this.bitmap, y).addRect(rect, data)\n      }\n    }\n  }\n\n  /**\n   *  Given a range of X coordinates, deletes all data dealing with\n   *  the features.\n   */\n  discardRange(left: number, right: number) {\n    const pLeft = Math.floor(left / this.pitchX)\n    const pRight = Math.floor(right / this.pitchX)\n    const { bitmap } = this\n    for (const row of bitmap) {\n      row.discardRange(pLeft, pRight)\n    }\n  }\n\n  hasSeen(id: string) {\n    return this.rectangles.has(id)\n  }\n\n  getByCoord(x: number, y: number) {\n    const pY = Math.floor(y / this.pitchY)\n    const row = this.bitmap[pY]\n    if (!row) {\n      return undefined\n    }\n    const pX = Math.floor(x / this.pitchX)\n    return row.getItemAt(pX)\n  }\n\n  getByID(id: string) {\n    const r = this.rectangles.get(id)\n    if (r) {\n      const t = r.top! * this.pitchY\n      return [\n        r.l * this.pitchX,\n        t,\n        r.r * this.pitchX,\n        t + r.originalHeight,\n      ] as RectTuple\n    }\n\n    return undefined\n  }\n\n  getDataByID(id: string) {\n    return this.rectangles.get(id)?.data\n  }\n\n  cleanup() {}\n\n  getTotalHeight() {\n    return this.pTotalHeight * this.pitchY\n  }\n\n  get totalHeight() {\n    return this.getTotalHeight()\n  }\n\n  getRectangles(): Map<string, RectTuple> {\n    return new Map(\n      [...this.rectangles.entries()].map(([id, rect]) => {\n        const { l, r, originalHeight, top } = rect\n        const t = (top || 0) * this.pitchY\n        const b = t + originalHeight\n        return [id, [l * this.pitchX, t, r * this.pitchX, b]] // left, top, right, bottom\n      }),\n    )\n  }\n\n  serializeRegion(region: { start: number; end: number }): SerializedLayout {\n    const regionRectangles: Record<string, RectTuple> = {}\n    let maxHeightReached = false\n    for (const [id, rect] of this.rectangles.entries()) {\n      const { l, r, originalHeight, top } = rect\n      if (rect.top === null) {\n        maxHeightReached = true\n      } else {\n        const t = (top || 0) * this.pitchY\n        const b = t + originalHeight\n        const y1 = l * this.pitchX\n        const y2 = r * this.pitchX\n        const x1 = region.start\n        const x2 = region.end\n        // add +/- pitchX to avoid resolution causing errors\n        if (segmentsIntersect(x1, x2, y1 - this.pitchX, y2 + this.pitchX)) {\n          regionRectangles[id] = [y1, t, y2, b]\n        }\n      }\n    }\n    return {\n      rectangles: regionRectangles,\n      containsNoTransferables: true,\n      totalHeight: this.getTotalHeight(),\n      maxHeightReached,\n    }\n  }\n\n  toJSON(): SerializedLayout {\n    const rectangles = Object.fromEntries(this.getRectangles())\n    return {\n      rectangles,\n      containsNoTransferables: true,\n      totalHeight: this.getTotalHeight(),\n      maxHeightReached: this.maxHeightReached,\n    }\n  }\n}\n","import { BaseLayout, SerializedLayout } from './BaseLayout'\n\nexport default class MultiLayout<SUB_LAYOUT_CLASS extends BaseLayout<T>, T> {\n  subLayouts = new Map<string, SUB_LAYOUT_CLASS>()\n\n  /**\n   * layout class that just keeps a number of named sub-layouts.\n   * basically just a fancier\n   * `{ layout1: new GranularRectLayout(), layout2: new GranularRectLayout() ...}`\n   */\n  constructor(\n    public SubLayoutClass: new (...args: any[]) => SUB_LAYOUT_CLASS,\n    public subLayoutConstructorArgs: Record<string, any> = {},\n  ) {}\n\n  getDataByID(id: string): unknown {\n    for (const layout of this.subLayouts.values()) {\n      // @ts-expect-error\n      const r = layout.getDataByID(id)\n      if (r) {\n        return r\n      }\n    }\n    return undefined\n  }\n\n  getSublayout(layoutName: string): SUB_LAYOUT_CLASS {\n    let subLayout = this.subLayouts.get(layoutName)\n    if (subLayout === undefined) {\n      subLayout = new this.SubLayoutClass(this.subLayoutConstructorArgs)\n      this.subLayouts.set(layoutName, subLayout)\n      return subLayout\n    }\n\n    return subLayout\n  }\n\n  addRect(\n    layoutName: string,\n    id: string,\n    left: number,\n    right: number,\n    height: number,\n    data: Record<string, T> = {},\n  ) {\n    return this.getSublayout(layoutName).addRect(id, left, right, height, data)\n  }\n\n  discardRange(layoutName: string, left: number, right: number) {\n    return this.subLayouts.get(layoutName)?.discardRange(left, right)\n  }\n\n  toJSON() {\n    const data: Record<string, SerializedLayout> = {}\n    for (const [layoutName, sublayout] of this.subLayouts.entries()) {\n      data[layoutName] = sublayout.toJSON()\n    }\n    return data\n  }\n}\n","import {\n  RectTuple,\n  SerializedLayout,\n  BaseLayout,\n  Rectangle,\n} from './BaseLayout'\nimport RBush from 'rbush'\n\nexport interface Layout {\n  minX: number\n  minY: number\n  maxX: number\n  maxY: number\n  name: string\n}\n\nexport default class PrecomputedLayout<T> implements BaseLayout<T> {\n  private rectangles: Map<string, RectTuple>\n\n  private totalHeight: number\n\n  public maxHeightReached: boolean\n\n  private rbush: RBush<Layout>\n\n  constructor({ rectangles, totalHeight, maxHeightReached }: SerializedLayout) {\n    this.rectangles = new Map(Object.entries(rectangles))\n    // rectangles is of the form \"featureId\": [leftPx, topPx, rightPx, bottomPx]\n    this.totalHeight = totalHeight\n    this.maxHeightReached = maxHeightReached\n    this.rbush = new RBush()\n    for (const [key, layout] of Object.entries(rectangles)) {\n      this.rbush.insert({\n        minX: layout[0],\n        minY: layout[1],\n        maxX: layout[2],\n        maxY: layout[3],\n        name: key,\n      })\n    }\n  }\n\n  addRect(id: string) {\n    const rect = this.rectangles.get(id)\n    if (!rect) {\n      throw new Error(`id ${id} not found in precomputed feature layout`)\n    }\n    // left, top, right, bottom\n    return rect[1]\n  }\n\n  /**\n   * returns a Map of `feature id -> rectangle`\n   */\n  getRectangles(): Map<string, RectTuple> {\n    return this.rectangles\n  }\n\n  getTotalHeight(): number {\n    return this.totalHeight\n  }\n\n  collides(_rect: Rectangle<T>, _top: number): boolean {\n    throw new Error('Method not implemented.')\n  }\n\n  getByCoord(x: number, y: number) {\n    const rect = { minX: x, minY: y, maxX: x + 1, maxY: y + 1 }\n    return this.rbush.collides(rect)\n      ? this.rbush.search(rect)[0]!.name\n      : undefined\n  }\n\n  getByID(id: string) {\n    return this.rectangles.get(id)\n  }\n\n  addRectToBitmap(_rect: Rectangle<T>, _data: Record<string, T>): void {\n    throw new Error('Method not implemented.')\n  }\n\n  discardRange(_left: number, _right: number): void {\n    throw new Error('Method not implemented.')\n  }\n\n  serializeRegion(_region: { start: number; end: number }): SerializedLayout {\n    throw new Error('Method not implemented.')\n  }\n\n  toJSON(): SerializedLayout {\n    return {\n      rectangles: Object.fromEntries(this.rectangles),\n      totalHeight: this.totalHeight,\n      maxHeightReached: false,\n      containsNoTransferables: true,\n    }\n  }\n}\n","import MultiLayout from './MultiLayout'\nimport PrecomputedLayout from './PrecomputedLayout'\n\nclass ThrowingLayout {\n  constructor() {\n    throw new Error('invalid layout name')\n  }\n}\n\nexport default class PrecomputedMultiLayout extends MultiLayout {\n  constructor(json) {\n    // use ThrowingLayout because there is not supposed to be any creation\n    // of new layouts in a precomputed layout\n    super(ThrowingLayout)\n    Object.entries(json).forEach(([layoutName, sublayoutJson]) => {\n      this.subLayouts.set(layoutName, new PrecomputedLayout(sublayoutJson))\n    })\n  }\n}\n","interface AbsoluteCache {\n  dirty: boolean\n  left?: number\n  right?: number\n  top?: number\n  bottom?: number\n  width?: number\n  height?: number\n}\n\nexport default class SceneGraph {\n  private children: Map<string, SceneGraph>\n\n  private absoluteCache: AbsoluteCache\n\n  public parent?: SceneGraph\n\n  /**\n   * note: all coordinates are inter-base or inter-pixel coordinates\n   */\n  constructor(\n    public name: string,\n    public left: number,\n    public top: number,\n    public width: number,\n    public height: number,\n\n    public data?: Record<string, any>,\n  ) {\n    this.children = new Map()\n    this.absoluteCache = { dirty: true }\n  }\n\n  addChild(\n    nameOrSceneGraph: string | SceneGraph,\n    left: number,\n    top: number,\n    width: number,\n    height: number,\n\n    data?: Record<string, any>,\n  ) {\n    const child =\n      nameOrSceneGraph instanceof SceneGraph\n        ? nameOrSceneGraph\n        : new SceneGraph(nameOrSceneGraph, left, top, width, height, data)\n\n    if (!(child instanceof SceneGraph)) {\n      throw new TypeError(\n        'argument to addChild must be an array or a SceneGraph',\n      )\n    }\n\n    if (this.children.has(child.name)) {\n      throw new Error(`child named \"${child.name}\" already exists`)\n    }\n\n    // update the bounds to match the child\n    child.parent = this\n    const {\n      left: childLeft,\n      right: childRight,\n      top: childTop,\n      bottom: childBottom,\n    } = child.absolute\n    if (\n      childLeft !== undefined &&\n      childRight !== undefined &&\n      childTop !== undefined &&\n      childBottom !== undefined\n    ) {\n      this.expand(childLeft, childRight, childTop, childBottom)\n      this.children.set(child.name, child)\n    }\n    return child\n  }\n\n  getSubRecord(name: string) {\n    return this.children.get(name)\n  }\n\n  /**\n   * if the record does not already cover the given absolute extents, extend it\n   * to cover them\n   *\n   * @param left -\n   * @param right -\n   * @param top -\n   * @param bottom -\n   */\n  expand(newLeft: number, newRight: number, newTop: number, newBottom: number) {\n    const { left, right, top, bottom } = this.absolute\n\n    if (left !== undefined && newLeft < left) {\n      const diff = left - newLeft\n      this.width += diff\n      this.left -= diff\n    }\n    if (right !== undefined && newRight > right) {\n      this.width += newRight - right\n    }\n    if (top !== undefined && newTop < top) {\n      const diff = top - newTop\n      this.height += diff\n      this.top -= diff\n    }\n    if (bottom !== undefined && newBottom > bottom) {\n      this.height += newBottom - bottom\n    }\n    if (this.parent) {\n      this.parent.expand(newLeft, newRight, newTop, newBottom)\n    }\n    this.absoluteCache.dirty = true\n  }\n\n  get bottom() {\n    return this.top + this.height\n  }\n\n  get right() {\n    return this.left + this.width\n  }\n\n  walkParents(callback: (arg: SceneGraph) => void) {\n    if (this.parent) {\n      callback(this.parent)\n      this.parent.walkParents(callback)\n    }\n  }\n\n  walkChildren(callback: (c: SceneGraph) => void) {\n    for (const sub of this.children.values()) {\n      callback(sub)\n      sub.walkChildren(callback)\n    }\n  }\n\n  get absolute() {\n    if (this.absoluteCache.dirty) {\n      let xOffset = 0\n      let yOffset = 0\n      this.walkParents((node: SceneGraph) => {\n        xOffset += node.left\n        yOffset += node.top\n      })\n      this.absoluteCache = {\n        dirty: false,\n        left: this.left + xOffset,\n        right: this.right + xOffset,\n        top: this.top + yOffset,\n        bottom: this.bottom + yOffset,\n        width: this.width,\n        height: this.height,\n      }\n    }\n    return this.absoluteCache\n  }\n\n  move(x: number, y: number) {\n    this.left += x\n    this.top += y\n\n    this.absoluteCache.dirty = true\n    this.walkChildren(c => {\n      c.absoluteCache.dirty = true\n    })\n    const { left, right, top, bottom } = this.absolute\n    if (\n      left !== undefined &&\n      right !== undefined &&\n      top !== undefined &&\n      bottom !== undefined\n    ) {\n      this.expand(left, right, top, bottom)\n    }\n  }\n}\n","import {\n  isOptionalType,\n  isUnionType,\n  isArrayType,\n  isMapType,\n  isLateType,\n  IAnyType,\n  IModelReflectionPropertiesData,\n  IAnyComplexType,\n  ISimpleType,\n  UnionStringArray,\n} from 'mobx-state-tree'\n\nexport interface ILiteralType<T> extends ISimpleType<T> {\n  value: T\n}\n\n/**\n * get the inner type of an MST optional, array, or late type object\n */\nexport function getSubType(type: IAnyType): IAnyType {\n  let t: IAnyType\n  if (isOptionalType(type)) {\n    // @ts-expect-error\n    t = type._subtype || type.type\n  } else if (isArrayType(type) || isMapType(type)) {\n    // @ts-expect-error\n    t = type._subtype || type._subType || type.subType\n    // @ts-expect-error\n  } else if (typeof type.getSubType === 'function') {\n    // @ts-expect-error\n    return type.getSubType()\n  } else {\n    throw new TypeError('unsupported mst type')\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (!t) {\n    throw new Error('failed to get subtype')\n  }\n  return t\n}\n\n/**\n * get the array of the subtypes in a union\n */\nexport function getUnionSubTypes(unionType: IAnyType): IAnyType[] {\n  if (!isUnionType(unionType)) {\n    throw new TypeError('not an MST union type')\n  }\n  const t =\n    // @ts-expect-error\n    unionType._types ||\n    // @ts-expect-error\n    unionType.types ||\n    // @ts-expect-error\n    getSubType(unionType)._types ||\n    // @ts-expect-error\n    getSubType(unionType).types\n  if (!t) {\n    // debugger\n    throw new Error('failed to extract subtypes from mst union')\n  }\n  return t\n}\n\n/**\n * get the type of one of the properties of the given MST model type\n */\nexport function getPropertyType(\n  type: IModelReflectionPropertiesData,\n  propertyName: string,\n) {\n  return type.properties[propertyName]!\n}\n\n/**\n * get the base type from inside an MST optional type\n */\nexport function getDefaultValue(type: IAnyType) {\n  if (!isOptionalType(type)) {\n    throw new TypeError('type must be an optional type')\n  }\n  // @ts-expect-error\n  return type._defaultValue || type.defaultValue\n}\n\nexport type IEnumerationType<T extends string> = ISimpleType<\n  UnionStringArray<T[]>\n>\n\n/** get the string values of an MST enumeration type */\nexport function getEnumerationValues(type: IAnyComplexType) {\n  const subtypes = getUnionSubTypes(type) as ILiteralType<string>[]\n  // the subtypes should all be literals with a value member\n  return subtypes.map(t => t.value)\n}\n\nexport function resolveLateType(maybeLate: IAnyType) {\n  if (\n    !isUnionType(maybeLate) &&\n    !isArrayType(maybeLate) &&\n    isLateType(maybeLate)\n  ) {\n    // @ts-expect-error\n    return maybeLate.getSubType()\n  }\n  return maybeLate\n}\n","// This file replaces `index.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\n// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// Same as in non-secure/index.js\nexport const urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nexport const random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\n\nexport const customRandom = (alphabet, defaultSize, getRandom) => {\n  // First, a bitmask is necessary to generate the ID. The bitmask makes bytes\n  // values closer to the alphabet size. The bitmask calculates the closest\n  // `2^31 - 1` number, which exceeds the alphabet size.\n  // For example, the bitmask for the alphabet size 30 is 31 (00011111).\n  // `Math.clz32` is not used, because it is not available in browsers.\n  const mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n  // Though, the bitmask solution is not perfect since the bytes exceeding\n  // the alphabet size are refused. Therefore, to reliably generate the ID,\n  // the random bytes redundancy has to be satisfied.\n\n  // Note: every hardware random generator call is performance expensive,\n  // because the system call for entropy collection takes a lot of time.\n  // So, to avoid additional system calls, extra bytes are requested in advance.\n\n  // Next, a step determines how many random bytes to generate.\n  // The number of random bytes gets decided upon the ID size, mask,\n  // alphabet size, and magic number 1.6 (using 1.6 peaks at performance\n  // according to benchmarks).\n\n  // `-~f => Math.ceil(f)` if f is a float\n  // `-~i => i + 1` if i is an integer\n  const step = -~((1.6 * mask * defaultSize) / alphabet.length)\n\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      const bytes = getRandom(step)\n      // A compact alternative for `for (var i = 0; i < step; i++)`.\n      let j = step\n      while (j--) {\n        // Adding `|| ''` refuses a random byte that exceeds the alphabet size.\n        id += alphabet[bytes[j] & mask] || ''\n        if (id.length === size) {\n          return id\n        }\n      }\n    }\n  }\n}\n\nexport const customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\n\nexport const nanoid = (size = 21) =>\n  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n    // It is incorrect to use bytes exceeding the alphabet size.\n    // The following mask reduces the random byte in the 0-255 value\n    // range to the 0-63 value range. Therefore, adding hacks, such\n    // as empty string fallback or magic numbers, is unnecessary because\n    // the bitmask trims bytes down to the alphabet size.\n    byte &= 63\n    if (byte < 36) {\n      // `0-9a-z`\n      id += byte.toString(36)\n    } else if (byte < 62) {\n      // `A-Z`\n      id += (byte - 26).toString(36).toUpperCase()\n    } else if (byte > 62) {\n      id += '-'\n    } else {\n      id += '_'\n    }\n    return id\n  }, '')\n","/* eslint-disable react-refresh/only-export-components */\n// This file is a ponyfill for the HTML5 OffscreenCanvas API.\n\nimport isNode from 'detect-node'\n\nimport { CanvasSequence } from 'canvas-sequencer'\n\ntype AbstractCanvas = any\n\ntype AbstractImageBitmap = any\n\nexport let createCanvas: (width: number, height: number) => AbstractCanvas\nexport let createImageBitmap: (\n  canvas: AbstractCanvas,\n) => Promise<AbstractImageBitmap>\n\n/** the JS class (constructor) for offscreen-generated image bitmap data */\nexport let ImageBitmapType: unknown\n\nexport function drawImageOntoCanvasContext(\n  imageData: any,\n  context: CanvasRenderingContext2D,\n) {\n  if (imageData.serializedCommands) {\n    const seq = new CanvasSequence(imageData.serializedCommands)\n    seq.execute(context)\n  } else {\n    context.drawImage(imageData as CanvasImageSource, 0, 0)\n  }\n}\n\nconst weHave = {\n  realOffscreenCanvas: typeof OffscreenCanvas === 'function',\n  node: isNode,\n}\n\nif (weHave.realOffscreenCanvas) {\n  createCanvas = (width, height) => new OffscreenCanvas(width, height)\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  createImageBitmap = window.createImageBitmap || self.createImageBitmap\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  ImageBitmapType = window.ImageBitmap || self.ImageBitmap\n} else if (weHave.node) {\n  // use node-canvas if we are running in node (i.e. automated tests)\n  createCanvas = (...args) => {\n    // @ts-expect-error\n    return nodeCreateCanvas(...args)\n  }\n  createImageBitmap = async canvas => {\n    const dataUri = canvas.toDataURL()\n    // @ts-expect-error\n    const img = new nodeImage()\n    return new Promise((resolve, reject) => {\n      // need onload for jest\n      img.onload = () => {\n        resolve(img)\n      }\n      img.onerror = reject\n      img.src = dataUri\n    })\n  }\n} else {\n  createCanvas = (width: number, height: number) => {\n    const context = new CanvasSequence()\n    return {\n      width,\n      height,\n      getContext() {\n        return context\n      },\n    }\n  }\n  createImageBitmap = async canvas => {\n    const ctx = canvas.getContext('2d')\n    return {\n      height: canvas.height,\n      width: canvas.width,\n      serializedCommands: ctx.toJSON(),\n      containsNoTransferables: true,\n    }\n  }\n  ImageBitmapType = String\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport React from 'react'\nimport { CanvasSequence } from 'canvas-sequencer'\n\n// locals\nimport { createCanvas, createImageBitmap } from './offscreenCanvasPonyfill'\nimport { blobToDataURL } from './blobToDataURL'\n\nexport type RenderReturn = Record<string, unknown> | undefined\n\ntype RendererRet = Promise<RenderReturn> | RenderReturn\n\nexport async function renderToAbstractCanvas(\n  width: number,\n  height: number,\n  opts: {\n    exportSVG?: { rasterizeLayers?: boolean; scale?: number }\n    highResolutionScaling?: number\n  },\n  cb: (ctx: CanvasRenderingContext2D) => RendererRet,\n) {\n  const { exportSVG, highResolutionScaling = 1 } = opts\n\n  if (exportSVG) {\n    if (!exportSVG.rasterizeLayers) {\n      const fakeCtx = new CanvasSequence()\n      const result = await cb(fakeCtx)\n      return {\n        ...result,\n        canvasRecordedData: fakeCtx.toJSON(),\n      }\n    } else {\n      const s = exportSVG.scale || highResolutionScaling\n      const canvas = createCanvas(Math.ceil(width * s), height * s)\n      const ctx = canvas.getContext('2d')\n      if (!ctx) {\n        throw new Error('2d canvas rendering not supported on this platform')\n      }\n      ctx.scale(s, s)\n      const result = await cb(ctx)\n\n      // two methods needed for converting canvas to PNG, one for webworker\n      // offscreen canvas, one for main thread\n      return {\n        ...result,\n        reactElement: (\n          <image\n            width={width}\n            height={height}\n            xlinkHref={\n              'convertToBlob' in canvas\n                ? await blobToDataURL(\n                    await canvas.convertToBlob({\n                      type: 'image/png',\n                    }),\n                  )\n                : canvas.toDataURL('image/png')\n            }\n          />\n        ),\n      }\n    }\n  } else {\n    const s = highResolutionScaling\n    const canvas = createCanvas(Math.ceil(width * s), height * s)\n    const ctx = canvas.getContext('2d')\n    if (!ctx) {\n      throw new Error('2d canvas rendering not supported on this platform')\n    }\n    ctx.scale(s, s)\n    const result = await cb(ctx)\n    return { ...result, imageData: await createImageBitmap(canvas) }\n  }\n}\n\nexport async function getSerializedSvg(results: {\n  width: number\n  height: number\n  canvasRecordedData: unknown\n}) {\n  const { width, height, canvasRecordedData } = results\n\n  // @ts-ignore needs to be ignore not expect error, produces error in build step\n  const C2S = await import('canvas2svg')\n  const ctx = new C2S.default(width, height)\n  const seq = new CanvasSequence(canvasRecordedData)\n  seq.execute(ctx)\n\n  // innerHTML strips the outer <svg> element from returned data, we add\n  // our own <svg> element in the view's SVG export\n  return ctx.getSvg().innerHTML as string\n}\n\nexport function ReactRendering({\n  rendering,\n}: {\n  rendering: {\n    reactElement?: React.ReactNode\n    html?: string\n  }\n}) {\n  return React.isValidElement(rendering.reactElement) ? (\n    rendering.reactElement\n  ) : (\n    <g dangerouslySetInnerHTML={{ __html: rendering.html || '' }} />\n  )\n}\n","/**\n * fast low-level intersection of 2 coordinate ranges. assumes interbase coordinates.\n *\n * assumes `left <= right` for both ranges\n *\n * @returns array of [left, right], or [] if the ranges do not intersect. the choice of [] is because it allows destructuring array assignment without check for undefined return\n */\nexport function intersection2(\n  left1: number,\n  right1: number,\n  left2: number,\n  right2: number,\n): [number, number] | [] {\n  // this code is verbose because \"if\" statements are faster than Math.min and Math.max\n  if (right1 > left2 && left1 < right2 && right2 - left2 && right1 - left1) {\n    if (left1 > left2) {\n      if (right1 < right2) {\n        // 1     |-------|\n        //     |------------|\n        return [left1, right1]\n      }\n      // 2         |----|\n      //      |------|\n      return [left1, right2]\n    }\n    if (right1 < right2) {\n      // 3  |-----|\n      //       |------|\n      return [left2, right1]\n    }\n    // 4     |------------|\n    //         |-------|\n    return [left2, right2]\n  }\n  return []\n}\n\n/**\n * Return whether 2 interbase coordinate ranges intersect.\n *\n * @param left1 -\n * @param right1 -\n * @param left2 -\n * @param right2 -\n *\n * @returns true if the two ranges intersect\n */\nexport function doesIntersect2(\n  left1: number,\n  right1: number,\n  left2: number,\n  right2: number,\n) {\n  return right1 > left2 && left1 < right2\n}\n\n/**\n * Return whether the first region is completely contained within the second region\n *\n * @param left1 - candidate inner region left\n * @param right1 - candidate inner region right\n * @param left2 - candidate outer region left\n * @param right2 - candidate outer region right\n */\nexport function isContainedWithin(\n  left1: number,\n  right1: number,\n  left2: number,\n  right2: number,\n) {\n  return left2 <= left1 && right2 >= right1\n}\n","import { Observable, Observer } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { observeAbortSignal } from '.'\n\n/**\n * Wrapper for rxjs Observable.create with improved error handling and\n * aborting support\n * @param func - observer function, could be async\n */\nexport function ObservableCreate<T>(\n  func: (arg: Observer<T>) => void | Promise<void>,\n  signal?: AbortSignal,\n): Observable<T> {\n  return new Observable((observer: Observer<T>) => {\n    try {\n      const ret = func(observer)\n      if (ret?.catch) {\n        ret.catch((error: unknown) => {\n          observer.error(error)\n        })\n      }\n    } catch (error) {\n      observer.error(error)\n    }\n  }).pipe(takeUntil(observeAbortSignal(signal)))\n}\n","/**\n * Abstract feature object\n */\nexport interface Feature {\n  /**\n   * Get a piece of data about the feature.  All features must have\n   * 'start' and 'end', but everything else is optional.\n   */\n  get(name: 'refName'): string\n  get(name: 'start' | 'end'): number\n  get(name: 'subfeatures'): Feature[] | undefined\n\n  get(name: string): any\n\n  /**\n   * Set an item of data.\n   */\n\n  set(name: string, val: any): void\n\n  /**\n   * Get an array listing which data keys are present in this feature.\n   */\n  tags(): string[]\n\n  /**\n   * Get the unique ID of this feature.\n   */\n  id(): string\n\n  /**\n   * Get this feature's parent feature, or undefined if none.\n   */\n  parent(): Feature | undefined\n\n  /**\n   * Get an array of child features, or undefined if none.\n   */\n  children(): Feature[] | undefined\n\n  /**\n   * Convert to JSON\n   */\n  toJSON(): SimpleFeatureSerialized\n}\n\nexport function isFeature(thing: unknown): thing is Feature {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    typeof (thing as Feature).get === 'function' &&\n    typeof (thing as Feature).id === 'function'\n  )\n}\n\nexport interface SimpleFeatureArgs {\n  /** key-value data, must include 'start' and 'end' */\n  data: Record<string, unknown>\n  /** optional parent feature */\n  parent?: Feature\n  /** unique identifier. can also be in data.uniqueId */\n  id: string | number // thing that can be stringified easily\n}\n\n// subfeatures do not have to have uniqueId\nexport interface SimpleFeatureSerializedNoId {\n  [key: string]: unknown\n  parentId?: string\n  start: number\n  end: number\n  refName: string\n  type?: string\n  subfeatures?: SimpleFeatureSerializedNoId[]\n}\n\n// base serialized feature has to have a uniqueId\nexport interface SimpleFeatureSerialized extends SimpleFeatureSerializedNoId {\n  subfeatures?: SimpleFeatureSerializedNoId[]\n  uniqueId: string\n}\n\nfunction isSimpleFeatureSerialized(\n  args: SimpleFeatureSerialized | SimpleFeatureArgs,\n): args is SimpleFeatureSerialized {\n  return 'uniqueId' in args && typeof args.data !== 'object'\n}\n\n/**\n * Simple implementation of a feature object.\n */\nexport default class SimpleFeature implements Feature {\n  private data: Record<string, any>\n\n  private subfeatures?: SimpleFeature[]\n\n  private parentHandle?: Feature\n\n  private uniqueId: string\n\n  /**\n   * @param args - SimpleFeature args\n   *\n   * Note: args.data.subfeatures can be an array of these same args,\n   * which will be inflated to more instances of this class.\n   */\n  public constructor(args: SimpleFeatureArgs | SimpleFeatureSerialized) {\n    if (isSimpleFeatureSerialized(args)) {\n      this.data = args\n    } else {\n      this.data = args.data\n      // load handle from args.parent (not args.data.parent) this reason is\n      // because if args is an object, it likely isn't properly loaded with\n      // parent as a Feature reference (probably a raw parent ID or something\n      // instead)\n      this.parentHandle = args.parent\n    }\n\n    // the feature id comes from args.id, args.data.uniqueId, or args.uniqueId\n    // due to this initialization\n    const id = isSimpleFeatureSerialized(args) ? args.uniqueId : args.id\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (id === undefined || id === null) {\n      throw new Error(\n        'SimpleFeature requires a unique `id` or `data.uniqueId` attribute',\n      )\n    }\n    this.uniqueId = String(id)\n\n    if (!(this.data.aliases || this.data.end - this.data.start >= 0)) {\n      throw new Error(\n        `invalid feature data, end less than start. end: ${this.data.end} start: ${this.data.start}`,\n      )\n    }\n    if (this.data.subfeatures) {\n      this.subfeatures = this.data.subfeatures?.map((f: any, i: number) =>\n        typeof f.get !== 'function'\n          ? new SimpleFeature({\n              id: f.uniqueId || `${id}-${i}`,\n              data: {\n                strand: this.data.strand,\n                ...f,\n              } as Record<string, any>,\n              parent: this,\n            })\n          : f,\n      )\n    }\n  }\n\n  /**\n   * Get a piece of data about the feature.  All features must have\n   * 'start' and 'end', but everything else is optional.\n   */\n\n  public get(name: string): any {\n    return name === 'subfeatures'\n      ? this.subfeatures\n      : name === 'parent'\n        ? this.parent()\n        : this.data[name]\n  }\n\n  /**\n   * Set an item of data.\n   */\n\n  public set(name: string, val: any): void {\n    this.data[name] = val\n  }\n\n  /**\n   * Get an array listing which data keys are present in this feature.\n   */\n  public tags(): string[] {\n    return Object.keys(this.data)\n  }\n\n  /**\n   * Get the unique ID of this feature.\n   */\n  public id(): string {\n    return this.uniqueId\n  }\n\n  /**\n   * Get this feature's parent feature, or undefined if none.\n   */\n  public parent(): Feature | undefined {\n    return this.parentHandle\n  }\n\n  /**\n   * Get an array of child features, or undefined if none.\n   */\n  public children(): Feature[] | undefined {\n    return this.get('subfeatures')\n  }\n\n  public toJSON(): SimpleFeatureSerialized {\n    const d = { ...this.data, uniqueId: this.id() } as SimpleFeatureSerialized\n    const p = this.parent()\n    if (p) {\n      d.parentId = p.id()\n    }\n    const c = this.children()\n    if (c) {\n      d.subfeatures = c.map(child => child.toJSON())\n    }\n    return d\n  }\n\n  public static fromJSON(json: SimpleFeatureSerialized) {\n    return new SimpleFeature({ ...json })\n  }\n}\n","import { firstValueFrom, Observable } from 'rxjs'\nimport { reduce } from 'rxjs/operators'\n\n// locals\nimport { NoAssemblyRegion } from './types'\nimport { Feature } from './simpleFeature'\n\nexport interface UnrectifiedQuantitativeStats {\n  scoreMin: number\n  scoreMax: number\n  scoreSum: number\n  scoreSumSquares: number\n  featureCount: number\n  basesCovered: number\n}\nexport interface QuantitativeStats extends UnrectifiedQuantitativeStats {\n  featureDensity: number\n  scoreMean: number\n  scoreStdDev: number\n}\n\n/**\n * calculate standard deviation using the 'shortcut method' that accepts\n * the sum and the sum squares of the elements\n *\n * @param sum - sum(i, 1..n)\n * @param sumSquares - sum(i^2, 1..n)\n * @param n - number of elements\n * @param population - boolean: use population instead of sample correction\n * @returns - the estimated std deviation\n */\nexport function calcStdFromSums(\n  sum: number,\n  sumSquares: number,\n  n: number,\n  population = false,\n): number {\n  if (n === 0) {\n    return 0\n  }\n  let variance: number\n  if (population) {\n    variance = sumSquares / n - (sum * sum) / (n * n)\n  } else {\n    // sample correction is n-1\n    variance = sumSquares - (sum * sum) / n\n    if (n > 1) {\n      variance /= n - 1\n    }\n  }\n\n  return variance < 0 ? 0 : Math.sqrt(variance)\n}\n\n/**\n * @param stats - a summary stats object with scoreSum, featureCount,\n * scoreSumSquares, and basesCovered\n * @returns - a summary stats object with\n * scoreMean, scoreStdDev, and featureDensity added\n */\nexport function rectifyStats(s: UnrectifiedQuantitativeStats) {\n  return {\n    ...s,\n    scoreMean: (s.scoreSum || 0) / (s.featureCount || s.basesCovered || 1),\n    scoreStdDev: calcStdFromSums(\n      s.scoreSum,\n      s.scoreSumSquares,\n      s.featureCount || s.basesCovered,\n    ),\n    featureDensity: (s.featureCount || 1) / s.basesCovered,\n  } as QuantitativeStats\n}\n\n/**\n * calculates per-base scores for variable width features over a region\n *\n * @param region - object contains start, end\n * @param features - list of features with start, end, score\n * @returns array of numeric scores\n */\nexport function calcPerBaseStats(\n  region: NoAssemblyRegion,\n  features: Feature[],\n): number[] {\n  const { start, end } = region\n  const scores = []\n  const feats = features.sort((a, b) => a.get('start') - b.get('start'))\n  let pos = start\n  let currentFeat = 0\n  let i = 0\n\n  while (pos < end) {\n    while (\n      currentFeat < feats.length &&\n      pos >= feats[currentFeat]!.get('end')\n    ) {\n      currentFeat += 1\n    }\n    const f = feats[currentFeat]\n    if (!f) {\n      scores[i] = 0\n    } else if (pos >= f.get('start') && pos < f.get('end')) {\n      scores[i] = f.get('score')\n    } else {\n      scores[i] = 0\n    }\n    i += 1\n    pos += 1\n  }\n  return scores\n}\n\n/**\n * transform a list of scores to summary statistics\n *\n * @param region - object with start, end\n * @param features - array of features which are possibly summary features\n * @returns - object with scoreMax, scoreMin, scoreSum, scoreSumSquares, etc\n */\nexport async function scoresToStats(\n  region: NoAssemblyRegion,\n  feats: Observable<Feature>,\n) {\n  const { start, end } = region\n  const seed = {\n    scoreMin: Number.MAX_VALUE,\n    scoreMax: Number.MIN_VALUE,\n    scoreSum: 0,\n    scoreSumSquares: 0,\n    featureCount: 0,\n  }\n  let found = false\n\n  const { scoreMin, scoreMax, scoreSum, scoreSumSquares, featureCount } =\n    await firstValueFrom(\n      feats.pipe(\n        reduce((acc, f) => {\n          const s = f.get('score')\n          const summary = f.get('summary')\n          const { scoreMax, scoreMin } = acc\n          acc.scoreMax = Math.max(scoreMax, summary ? f.get('maxScore') : s)\n          acc.scoreMin = Math.min(scoreMin, summary ? f.get('minScore') : s)\n          acc.scoreSum += s\n          acc.scoreSumSquares += s * s\n          acc.featureCount += 1\n          found = true\n\n          return acc\n        }, seed),\n      ),\n    )\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  return found\n    ? rectifyStats({\n        scoreMax,\n        scoreMin,\n        scoreSum,\n        scoreSumSquares,\n        featureCount,\n        basesCovered: end - start + 1,\n      })\n    : blankStats()\n}\n\nexport function blankStats() {\n  return {\n    scoreMin: 0,\n    scoreMax: 0,\n    scoreMean: 0,\n    scoreStdDev: 0,\n    scoreSum: 0,\n    scoreSumSquares: 0,\n    featureCount: 0,\n    featureDensity: 0,\n    basesCovered: 0,\n  } as QuantitativeStats\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport React from 'react'\nimport {\n  isStateTreeNode,\n  Instance,\n  SnapshotIn,\n  IAnyStateTreeNode,\n  IStateTreeNode,\n  IType,\n} from 'mobx-state-tree'\nimport { ThemeOptions } from '@mui/material'\nimport { AnyConfigurationModel } from '../../configuration'\nimport TextSearchManager from '../../TextSearch/TextSearchManager'\nimport { MenuItem } from '../../ui'\nimport RpcManager from '../../rpc/RpcManager'\nimport { Feature } from '../simpleFeature'\nimport { BaseInternetAccountModel } from '../../pluggableElementTypes/models'\n// types\nimport type assemblyManager from '../../assemblyManager'\nimport type {\n  NoAssemblyRegion as MUNoAssemblyRegion,\n  Region as MUIRegion,\n  LocalPathLocation as MULocalPathLocation,\n  UriLocation as MUUriLocation,\n  BlobLocation as MUBlobLocation,\n} from './mst'\n\nexport * from './util'\n\n/** abstract type for a model that contains multiple views */\nexport interface AbstractViewContainer\n  extends IStateTreeNode<IType<any, unknown, any>> {\n  views: AbstractViewModel[]\n  removeView(view: AbstractViewModel): void\n  addView(\n    typeName: string,\n    initialState?: Record<string, unknown>,\n  ): AbstractViewModel\n}\nexport function isViewContainer(\n  thing: unknown,\n): thing is AbstractViewContainer {\n  return (\n    isStateTreeNode(thing) &&\n    'removeView' in thing &&\n    'addView' in thing &&\n    'views' in thing\n  )\n}\n\nexport type NotificationLevel = 'error' | 'info' | 'warning' | 'success'\nexport interface SnackAction {\n  name: React.ReactElement\n  onClick: () => void\n}\n\nexport type AssemblyManager = Instance<ReturnType<typeof assemblyManager>>\n\nexport interface BasePlugin {\n  version?: string\n  name: string\n  url?: string\n}\n\nexport interface JBrowsePlugin {\n  name: string\n  authors: string[]\n  description: string\n  location: string\n  url?: string\n  umdUrl?: string\n  esmUrl?: string\n  cjsUrl?: string\n  license: string\n  image?: string\n}\n\nexport type DialogComponentType =\n  | React.LazyExoticComponent<React.FC<any>>\n  | React.FC<any>\n\n/** minimum interface that all session state models must implement */\nexport interface AbstractSessionModel extends AbstractViewContainer {\n  jbrowse: IAnyStateTreeNode\n  drawerPosition?: string\n  configuration: AnyConfigurationModel\n  rpcManager: RpcManager\n  assemblyNames: string[]\n  assemblies: AnyConfigurationModel[]\n  selection?: unknown\n  focusedViewId?: string\n  themeName?: string\n  hovered: unknown\n  setHovered: (arg: unknown) => void\n  setFocusedViewId?: (id: string) => void\n  allThemes?: () => Record<string, ThemeOptions>\n  setSelection: (feature: Feature) => void\n  setSession?: (arg: { name: string; [key: string]: unknown }) => void\n  clearSelection: () => void\n  duplicateCurrentSession?: () => void\n  notify: (\n    message: string,\n    level?: NotificationLevel,\n    action?: SnackAction,\n  ) => void\n  notifyError: (message: string, error?: unknown, extra?: unknown) => void\n  assemblyManager: AssemblyManager\n  version: string\n  getTrackActionMenuItems?: Function\n  addAssembly?: Function\n  removeAssembly?: Function\n  textSearchManager?: TextSearchManager\n  connections: AnyConfigurationModel[]\n  deleteConnection?: Function\n  temporaryAssemblies?: unknown[]\n  addTemporaryAssembly?: (arg: Record<string, unknown>) => void\n  removeTemporaryAssembly?: (arg: string) => void\n  sessionConnections?: AnyConfigurationModel[]\n  sessionTracks?: AnyConfigurationModel[]\n  connectionInstances?: {\n    name: string\n    tracks: AnyConfigurationModel[]\n    configuration: AnyConfigurationModel\n  }[]\n  makeConnection?: Function\n  breakConnection?: Function\n\n  prepareToBreakConnection?: (arg: AnyConfigurationModel) => any\n  adminMode?: boolean\n  showWidget?: Function\n  addWidget?: Function\n\n  DialogComponent?: DialogComponentType\n\n  DialogProps: any\n  queueDialog<T extends DialogComponentType>(\n    callback: (doneCallback: () => void) => [T, React.ComponentProps<T>],\n  ): void\n  name: string\n  id?: string\n  tracks: AnyConfigurationModel[]\n}\nexport function isSessionModel(thing: unknown): thing is AbstractSessionModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'rpcManager' in thing &&\n    'configuration' in thing\n  )\n}\n\n/** abstract interface for a session allows editing configurations */\nexport interface SessionWithConfigEditing extends AbstractSessionModel {\n  editConfiguration(configuration: AnyConfigurationModel): void\n}\nexport function isSessionModelWithConfigEditing(\n  thing: unknown,\n): thing is SessionWithConfigEditing {\n  return isSessionModel(thing) && 'editConfiguration' in thing\n}\n\n/** abstract interface for a session allows adding tracks */\nexport interface SessionWithConfigEditing extends AbstractSessionModel {\n  addTrackConf(\n    configuration: AnyConfigurationModel | SnapshotIn<AnyConfigurationModel>,\n  ): void\n}\nexport function isSessionWithAddTracks(\n  thing: unknown,\n): thing is SessionWithConfigEditing {\n  return (\n    // @ts-expect-error\n    isSessionModel(thing) && 'addTrackConf' in thing && !thing.disableAddTracks\n  )\n}\n\n/** abstract interface for a session allows adding tracks */\nexport interface SessionWithShareURL extends AbstractSessionModel {\n  shareURL: string\n}\nexport function isSessionWithShareURL(\n  thing: unknown,\n): thing is SessionWithShareURL {\n  return isSessionModel(thing) && 'shareURL' in thing && !!thing.shareURL\n}\n\nexport interface Widget {\n  type: string\n  id: string\n}\n\n/** abstract interface for a session that manages widgets */\nexport interface SessionWithWidgets extends AbstractSessionModel {\n  minimized: boolean\n  visibleWidget?: Widget\n  widgets: Map<string | number, Widget>\n  activeWidgets: Map<string | number, Widget>\n  hideAllWidgets: () => void\n  addWidget(\n    typeName: string,\n    id: string,\n    initialState?: Record<string, unknown>,\n    configuration?: { type: string },\n  ): Widget\n  showWidget(widget: unknown): void\n  hideWidget(widget: unknown): void\n}\n\n/* only some sessions with widgets use a drawer widget */\nexport interface SessionWithDrawerWidgets extends SessionWithWidgets {\n  drawerWidth: number\n  resizeDrawer(arg: number): number\n  minimizeWidgetDrawer(): void\n  showWidgetDrawer: () => void\n  drawerPosition: string\n  setDrawerPosition(arg: string): void\n}\n\nexport function isSessionModelWithWidgets(\n  thing: unknown,\n): thing is SessionWithWidgets {\n  return isSessionModel(thing) && 'widgets' in thing\n}\ninterface SessionWithConnections {\n  makeConnection: (arg: AnyConfigurationModel) => void\n}\nexport function isSessionModelWithConnections(\n  thing: unknown,\n): thing is SessionWithConnections {\n  return isSessionModel(thing) && 'makeConnection' in thing\n}\n\ninterface SessionWithConnectionEditing {\n  addConnectionConf: (arg: AnyConfigurationModel) => void\n}\n\nexport function isSessionModelWithConnectionEditing(\n  thing: unknown,\n): thing is SessionWithConnectionEditing {\n  return isSessionModel(thing) && 'addConnectionConf' in thing\n}\n\nexport interface SessionWithSessionPlugins extends AbstractSessionModel {\n  sessionPlugins: JBrowsePlugin[]\n  addSessionPlugin: Function\n  removeSessionPlugin: Function\n}\nexport function isSessionWithSessionPlugins(\n  thing: unknown,\n): thing is SessionWithSessionPlugins {\n  return isSessionModel(thing) && 'sessionPlugins' in thing\n}\n\n/** abstract interface for a session that manages a global selection */\nexport interface SelectionContainer extends AbstractSessionModel {\n  selection?: unknown\n  setSelection(thing: unknown): void\n}\nexport function isSelectionContainer(\n  thing: unknown,\n): thing is SelectionContainer {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'selection' in thing &&\n    'setSelection' in thing\n  )\n}\n\n/** abstract interface for a session allows applying focus to views and widgets */\nexport interface SessionWithFocusedViewAndDrawerWidgets\n  extends SessionWithDrawerWidgets {\n  focusedViewId: string | undefined\n  setFocusedViewId(id: string): void\n}\n\n/** minimum interface that all view state models must implement */\nexport interface AbstractViewModel {\n  id: string\n  type: string\n  width: number\n  minimized: boolean\n  setWidth(width: number): void\n  setMinimized(flag: boolean): void\n  displayName: string | undefined\n  setDisplayName: (arg: string) => void\n  menuItems: () => MenuItem[]\n}\nexport function isViewModel(thing: unknown): thing is AbstractViewModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'width' in thing &&\n    'setWidth' in thing\n  )\n}\n\nexport interface AbstractTrackModel {\n  displays: AbstractDisplayModel[]\n  configuration: AnyConfigurationModel\n}\n\nexport function isTrackModel(thing: unknown): thing is AbstractTrackModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'configuration' in thing &&\n    // @ts-expect-error\n    thing.configuration.trackId\n  )\n}\n\nexport interface AbstractDisplayModel {\n  id: string\n  parentTrack: AbstractTrackModel\n  renderDelay: number\n  rendererType: any\n  cannotBeRenderedReason?: string\n}\nexport function isDisplayModel(thing: unknown): thing is AbstractDisplayModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'configuration' in thing &&\n    // @ts-expect-error\n    thing.configuration.displayId\n  )\n}\n\nexport interface TrackViewModel extends AbstractViewModel {\n  showTrack(trackId: string): void\n  hideTrack(trackId: string): void\n}\nexport function isTrackViewModel(thing: unknown): thing is TrackViewModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'showTrack' in thing &&\n    'hideTrack' in thing\n  )\n}\n\n/** minimum interface for the root MST model of a JBrowse app */\nexport interface AbstractRootModel {\n  jbrowse: IAnyStateTreeNode\n  session?: AbstractSessionModel\n  setDefaultSession?(): void\n  adminMode?: boolean\n  error?: unknown\n}\n\n/** root model with more included for the heavier JBrowse web and desktop app */\nexport interface AppRootModel extends AbstractRootModel {\n  internetAccounts: BaseInternetAccountModel[]\n  findAppropriateInternetAccount(\n    location: UriLocation,\n  ): BaseInternetAccountModel | undefined\n}\n\nexport function isAppRootModel(thing: unknown): thing is AppRootModel {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'findAppropriateInternetAccount' in thing\n  )\n}\n\nexport interface RootModelWithInternetAccounts extends AbstractRootModel {\n  internetAccounts: BaseInternetAccountModel[]\n  findAppropriateInternetAccount(\n    location: UriLocation,\n  ): BaseInternetAccountModel | undefined\n}\n\nexport function isRootModelWithInternetAccounts(\n  thing: unknown,\n): thing is RootModelWithInternetAccounts {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'internetAccounts' in thing &&\n    'findAppropriateInternetAccount' in thing\n  )\n}\n\n/** a root model that manages global menus */\nexport interface AbstractMenuManager {\n  appendMenu(menuName: string): void\n  insertMenu(menuName: string, position: number): number\n  insertInMenu(menuName: string, menuItem: MenuItem, position: number): number\n  appendToMenu(menuName: string, menuItem: MenuItem): number\n  appendToSubMenu(menuPath: string[], menuItem: MenuItem): number\n  insertInSubMenu(\n    menuPath: string[],\n    menuItem: MenuItem,\n    position: number,\n  ): number\n}\nexport function isAbstractMenuManager(\n  thing: unknown,\n): thing is AbstractMenuManager {\n  return (\n    typeof thing === 'object' &&\n    thing !== null &&\n    'appendMenu' in thing &&\n    'appendToSubMenu' in thing\n  )\n}\n\n// Empty interfaces required by mobx-state-tree\n// See https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface NoAssemblyRegion\n  extends SnapshotIn<typeof MUNoAssemblyRegion> {}\n\n/**\n * a description of a specific genomic region. assemblyName, refName, start,\n * end, and reversed\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface Region extends SnapshotIn<typeof MUIRegion> {}\n\nexport interface AugmentedRegion extends Region {\n  originalRefName?: string\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface LocalPathLocation\n  extends SnapshotIn<typeof MULocalPathLocation> {}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface UriLocation extends SnapshotIn<typeof MUUriLocation> {}\n\nexport function isUriLocation(location: unknown): location is UriLocation {\n  return (\n    typeof location === 'object' &&\n    location !== null &&\n    'uri' in location &&\n    !!location.uri\n  )\n}\nexport function isLocalPathLocation(\n  location: unknown,\n): location is LocalPathLocation {\n  return (\n    typeof location === 'object' &&\n    location !== null &&\n    'localPath' in location &&\n    !!location.localPath\n  )\n}\n\nexport function isBlobLocation(location: unknown): location is BlobLocation {\n  return (\n    typeof location === 'object' &&\n    location !== null &&\n    'blobId' in location &&\n    !!location.blobId\n  )\n}\nexport class AuthNeededError extends Error {\n  constructor(\n    public message: string,\n    public url: string,\n  ) {\n    super(message)\n    this.name = 'AuthNeededError'\n\n    Object.setPrototypeOf(this, AuthNeededError.prototype)\n  }\n}\n\nexport class RetryError extends Error {\n  constructor(\n    public message: string,\n    public internetAccountId: string,\n  ) {\n    super(message)\n    this.name = 'RetryError'\n  }\n}\n\nexport function isAuthNeededException(\n  exception: unknown,\n): exception is AuthNeededError {\n  return (\n    exception instanceof Error &&\n    // DOMException\n    (exception.name === 'AuthNeededError' ||\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      (exception as AuthNeededError).url !== undefined)\n  )\n}\n\nexport function isRetryException(exception: Error): boolean {\n  return (\n    // DOMException\n    exception.name === 'RetryError' ||\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    (exception as RetryError).internetAccountId !== undefined\n  )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface BlobLocation extends SnapshotIn<typeof MUBlobLocation> {}\n\nexport type FileLocation = LocalPathLocation | UriLocation | BlobLocation\n\n// These types are slightly different than the MST models representing a\n// location because a blob cannot be stored in a MST, so this is the\n// pre-processed file location\nexport interface PreUriLocation {\n  uri: string\n}\nexport interface PreLocalPathLocation {\n  localPath: string\n}\nexport interface PreBlobLocation {\n  blob: File\n}\nexport type PreFileLocation =\n  | PreUriLocation\n  | PreLocalPathLocation\n  | PreBlobLocation\n\nexport { default as TextSearchManager } from '../../TextSearch/TextSearchManager'\n","import { useState, useEffect, useRef } from 'react'\n\nexport default function useMeasure() {\n  const ref = useRef<HTMLDivElement>(null)\n  const [dims, setDims] = useState<{ width?: number; height?: number }>({\n    width: undefined,\n    height: undefined,\n  })\n  useEffect(() => {\n    if (!ref.current) {\n      return\n    }\n    const RS =\n      typeof window !== 'undefined' && 'ResizeObserver' in window\n        ? window.ResizeObserver\n        : undefined\n\n    if (!RS) {\n      return\n    }\n    const observer = new RS(entries => {\n      setDims({\n        width: entries[0]!.contentRect.width,\n        height: entries[0]!.contentRect.height,\n      })\n    })\n    observer.observe(ref.current)\n\n    // Callback fired when component is unmounted\n    return () => {\n      observer.disconnect()\n    }\n  }, [])\n\n  return [ref, dims] as const\n}\n","import { when as mobxWhen, IWhenOptions } from 'mobx'\nimport { makeAbortError } from './aborting'\n\ninterface WhenOpts extends IWhenOptions {\n  signal?: AbortSignal\n}\n\n/**\n * Wrapper for mobx `when` that adds timeout and aborting support.\n */\nexport function when(\n  getter: () => boolean,\n  { timeout, signal, name }: WhenOpts = {},\n) {\n  return new Promise((resolve, reject) => {\n    let finished = false\n\n    const whenPromise = mobxWhen(getter)\n\n    // set up timeout\n    let timeoutId: ReturnType<typeof setTimeout> | undefined\n    let finishTimeout = () => {}\n    if (timeout) {\n      timeoutId = setTimeout(() => {\n        if (!finished) {\n          finished = true\n          whenPromise.cancel()\n          reject(new Error(`timed out waiting for ${name || 'whenPresent'}`))\n        }\n      }, timeout)\n      finishTimeout = () => {\n        if (timeoutId) {\n          clearTimeout(timeoutId)\n        }\n      }\n    }\n\n    // set up aborting\n    if (signal) {\n      signal.addEventListener('abort', () => {\n        if (!finished) {\n          finished = true\n\n          // mobx when supports a cancel method\n          whenPromise.cancel()\n          finishTimeout()\n\n          reject(makeAbortError())\n        }\n      })\n    }\n\n    whenPromise\n      .then(() => {\n        if (!finished) {\n          finished = true\n          finishTimeout()\n\n          resolve(true)\n        }\n      })\n      .catch((err: unknown) => {\n        if (!finished) {\n          finished = true\n          finishTimeout()\n          // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n          reject(err)\n        }\n      })\n  })\n}\n\n/**\n * Wrapper for mobx `when` that makes a promise for the return value\n * of the given function at the point in time when it becomes not\n * undefined and not null.\n */\nexport async function whenPresent<FUNCTION extends () => unknown>(\n  getter: FUNCTION,\n  opts: WhenOpts = {},\n): Promise<NonNullable<ReturnType<FUNCTION>>> {\n  await when(() => {\n    const val = getter()\n    return val !== undefined && val !== null\n  }, opts)\n\n  return getter() as NonNullable<ReturnType<FUNCTION>>\n}\n","import { revcom, Feature } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\nimport { getTagAlt } from '../util'\n\nexport interface Mismatch {\n  qual?: number\n  start: number\n  length: number\n  type: string\n  base: string\n  altbase?: string\n  seq?: string\n  cliplen?: number\n}\nconst mdRegex = new RegExp(/(\\d+|\\^[a-z]+|[a-z])/gi)\nconst modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/)\nconst cigarRegex = new RegExp(/([MIDNSHPX=])/)\nconst startClip = new RegExp(/(\\d+)[SH]$/)\nconst endClip = new RegExp(/^(\\d+)([SH])/)\n\nexport function parseCigar(cigar = '') {\n  return cigar.split(cigarRegex).slice(0, -1)\n}\n\nexport function cigarToMismatches(\n  ops: string[],\n  seq?: string,\n  ref?: string,\n  qual?: Buffer,\n) {\n  let roffset = 0 // reference offset\n  let soffset = 0 // seq offset\n  const mismatches: Mismatch[] = []\n  const hasRefAndSeq = ref && seq\n  for (let i = 0; i < ops.length; i += 2) {\n    const len = +ops[i]!\n    const op = ops[i + 1]!\n\n    if (op === 'M' || op === '=' || op === 'E') {\n      if (hasRefAndSeq) {\n        for (let j = 0; j < len; j++) {\n          if (\n            // @ts-ignore in the full yarn build of the repo, this says that object is possibly undefined for some reason, ignored\n            seq[soffset + j].toUpperCase() !== ref[roffset + j].toUpperCase()\n          ) {\n            mismatches.push({\n              start: roffset + j,\n              type: 'mismatch',\n              base: seq[soffset + j]!,\n              altbase: ref[roffset + j]!,\n              length: 1,\n            })\n          }\n        }\n      }\n      soffset += len\n    }\n    if (op === 'I') {\n      mismatches.push({\n        start: roffset,\n        type: 'insertion',\n        base: `${len}`,\n        length: 0,\n      })\n      soffset += len\n    } else if (op === 'D') {\n      mismatches.push({\n        start: roffset,\n        type: 'deletion',\n        base: '*',\n        length: len,\n      })\n    } else if (op === 'N') {\n      mismatches.push({\n        start: roffset,\n        type: 'skip',\n        base: 'N',\n        length: len,\n      })\n    } else if (op === 'X') {\n      const r = seq?.slice(soffset, soffset + len) || []\n      const q = qual?.subarray(soffset, soffset + len) || []\n\n      for (let j = 0; j < len; j++) {\n        mismatches.push({\n          start: roffset + j,\n          type: 'mismatch',\n          base: r[j]!,\n          qual: q[j]!,\n          length: 1,\n        })\n      }\n      soffset += len\n    } else if (op === 'H') {\n      mismatches.push({\n        start: roffset,\n        type: 'hardclip',\n        base: `H${len}`,\n        cliplen: len,\n        length: 1,\n      })\n    } else if (op === 'S') {\n      mismatches.push({\n        start: roffset,\n        type: 'softclip',\n        base: `S${len}`,\n        cliplen: len,\n        length: 1,\n      })\n      soffset += len\n    }\n\n    if (op !== 'I' && op !== 'S' && op !== 'H') {\n      roffset += len\n    }\n  }\n  return mismatches\n}\n\n/**\n * parse a SAM MD tag to find mismatching bases of the template versus the\n * reference @returns array of mismatches and their positions\n */\nexport function mdToMismatches(\n  mdstring: string,\n  ops: string[],\n  cigarMismatches: Mismatch[],\n  seq: string,\n  qual?: Buffer,\n) {\n  let curr: Mismatch = { start: 0, base: '', length: 0, type: 'mismatch' }\n  let lastCigar = 0\n  let lastTemplateOffset = 0\n  let lastRefOffset = 0\n  let lastSkipPos = 0\n  const mismatchRecords: Mismatch[] = []\n  const skips = cigarMismatches.filter(cigar => cigar.type === 'skip')\n\n  // convert a position on the reference sequence to a position\n  // on the template sequence, taking into account hard and soft\n  // clipping of reads\n\n  function nextRecord(): void {\n    mismatchRecords.push(curr)\n\n    // get a new mismatch record ready\n    curr = {\n      start: curr.start + curr.length,\n      length: 0,\n      base: '',\n      type: 'mismatch',\n    }\n  }\n\n  function getTemplateCoordLocal(refCoord: number): number {\n    let templateOffset = lastTemplateOffset\n    let refOffset = lastRefOffset\n    for (\n      let i = lastCigar;\n      i < ops.length && refOffset <= refCoord;\n      i += 2, lastCigar = i\n    ) {\n      const len = +ops[i]!\n      const op = ops[i + 1]!\n\n      if (op === 'S' || op === 'I') {\n        templateOffset += len\n      } else if (op === 'D' || op === 'P' || op === 'N') {\n        refOffset += len\n      } else if (op !== 'H') {\n        templateOffset += len\n        refOffset += len\n      }\n    }\n    lastTemplateOffset = templateOffset\n    lastRefOffset = refOffset\n\n    return templateOffset - (refOffset - refCoord)\n  }\n\n  // now actually parse the MD string\n  const md = mdstring.match(mdRegex) || []\n  for (const token of md) {\n    const num = +token\n    if (!Number.isNaN(num)) {\n      curr.start += num\n    } else if (token.startsWith('^')) {\n      curr.start += token.length - 1\n    } else {\n      // mismatch\n      // eslint-disable-next-line @typescript-eslint/prefer-for-of\n      for (let j = 0; j < token.length; j += 1) {\n        curr.length = 1\n\n        while (lastSkipPos < skips.length) {\n          const mismatch = skips[lastSkipPos]!\n          if (curr.start >= mismatch.start) {\n            curr.start += mismatch.length\n            lastSkipPos++\n          } else {\n            break\n          }\n        }\n        const s = getTemplateCoordLocal(curr.start)\n        curr.base = seq[s] || 'X'\n        curr.qual = qual?.[s]\n        curr.altbase = token\n        nextRecord()\n      }\n    }\n  }\n  return mismatchRecords\n}\n\nexport function getMismatches(\n  cigar: string,\n  md?: string,\n  seq?: string,\n  ref?: string,\n  qual?: Buffer,\n) {\n  let mismatches: Mismatch[] = []\n  const ops = parseCigar(cigar)\n\n  // parse the CIGAR tag if it has one\n  if (cigar) {\n    mismatches = mismatches.concat(cigarToMismatches(ops, seq, ref, qual))\n  }\n\n  // now let's look for CRAM or MD mismatches\n  if (md && seq) {\n    mismatches = mismatches.concat(\n      mdToMismatches(md, ops, mismatches, seq, qual),\n    )\n  }\n\n  return mismatches\n}\n// get relative reference sequence positions for positions given relative to\n// the read sequence\nexport function* getNextRefPos(cigarOps: string[], positions: number[]) {\n  let readPos = 0\n  let refPos = 0\n  let currPos = 0\n\n  for (let i = 0; i < cigarOps.length && currPos < positions.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]!\n    if (op === 'S' || op === 'I') {\n      for (let i = 0; i < len && currPos < positions.length; i++) {\n        if (positions[currPos] === readPos + i) {\n          currPos++\n        }\n      }\n      readPos += len\n    } else if (op === 'D' || op === 'N') {\n      refPos += len\n    } else if (op === 'M' || op === 'X' || op === '=') {\n      for (let i = 0; i < len && currPos < positions.length; i++) {\n        if (positions[currPos] === readPos + i) {\n          yield refPos + i\n          currPos++\n        }\n      }\n      readPos += len\n      refPos += len\n    }\n  }\n}\n\nexport function getModificationProbabilities(feature: Feature) {\n  const m = (getTagAlt(feature, 'ML', 'Ml') as number[] | string) || []\n  return m\n    ? (typeof m === 'string' ? m.split(',').map(e => +e) : m).map(e => e / 255)\n    : (getTagAlt(feature, 'MP', 'Mp') as string | undefined)\n        ?.split('')\n        .map(s => s.charCodeAt(0) - 33)\n        .map(elt => Math.min(1, elt / 50))\n}\n\nexport function getMethBins(feature: Feature) {\n  const fstart = feature.get('start')\n  const fend = feature.get('end')\n  const fstrand = feature.get('strand') as -1 | 0 | 1\n  const flen = fend - fstart\n  const mm = (getTagAlt(feature, 'MM', 'Mm') as string | undefined) || ''\n  const methBins = new Array<number>(flen)\n  const methProbs = new Array<number>(flen)\n  const seq = feature.get('seq') as string | undefined\n  if (seq) {\n    const ops = parseCigar(feature.get('CIGAR'))\n    const probabilities = getModificationProbabilities(feature)\n    const modifications = getModificationPositions(mm, seq, fstrand)\n    let probIndex = 0\n    for (const { type, positions } of modifications) {\n      if (type === 'm') {\n        for (const ref of getNextRefPos(ops, positions)) {\n          const prob = probabilities?.[probIndex] || 0\n          probIndex++\n          if (ref >= 0 && ref < flen) {\n            methBins[ref] = 1\n            methProbs[ref] = prob\n          }\n        }\n      }\n    }\n  }\n  return { methBins, methProbs }\n}\n\nexport function getModificationPositions(\n  mm: string,\n  fseq: string,\n  fstrand: number,\n) {\n  const seq = fstrand === -1 ? revcom(fseq) : fseq\n  const mods = mm.split(';').filter(mod => !!mod)\n  const result = []\n  for (const mod of mods) {\n    const [basemod, ...skips] = mod.split(',')\n\n    // regexes based on parse_mm.pl from hts-specs\n    const matches = modificationRegex.exec(basemod!)\n    if (!matches) {\n      throw new Error('bad format for MM tag')\n    }\n    const [, base, strand, typestr] = matches\n\n    // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n    // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n    const types = typestr!.split(/(\\d+|.)/).filter(f => !!f)\n\n    if (strand === '-') {\n      console.warn('unsupported negative strand modifications')\n      // make sure to return a somewhat matching type even in this case\n      result.push({ type: 'unsupported', positions: [] as number[] })\n    }\n\n    // this logic also based on parse_mm.pl from hts-specs is that in the\n    // sequence of the read, if we have a modification type e.g. C+m;2 and a\n    // sequence ACGTACGTAC we skip the two instances of C and go to the last\n    // C\n    for (const type of types) {\n      let i = 0\n      const positions = []\n      for (const d of skips) {\n        let delta = +d\n        do {\n          if (base === 'N' || base === seq[i]) {\n            delta--\n          }\n          i++\n        } while (delta >= 0 && i < seq.length)\n\n        const temp = i - 1\n        positions.push(fstrand === -1 ? seq.length - 1 - temp : temp)\n      }\n      if (fstrand === -1) {\n        positions.sort((a, b) => a - b)\n      }\n      result.push({\n        type,\n        positions,\n      })\n    }\n  }\n  return result\n}\n\nexport function getModificationTypes(mm: string) {\n  return mm\n    .split(';')\n    .filter(mod => !!mod)\n    .flatMap(mod => {\n      const basemod = mod.split(',')[0]!\n\n      const matches = modificationRegex.exec(basemod)\n      if (!matches) {\n        throw new Error(`bad format for MM tag: ${mm}`)\n      }\n      const typestr = matches[3]!\n\n      // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n      // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n      return typestr.split(/(\\d+|.)/).filter(f => !!f)\n    })\n}\n\nexport function getOrientedCigar(flip: boolean, cigar: string[]) {\n  if (flip) {\n    const ret = []\n    for (let i = 0; i < cigar.length; i += 2) {\n      const len = cigar[i]!\n      let op = cigar[i + 1]!\n      if (op === 'D') {\n        op = 'I'\n      } else if (op === 'I') {\n        op = 'D'\n      }\n      ret.push(len, op)\n    }\n    return ret\n  }\n  return cigar\n}\n\nexport function getOrientedMismatches(flip: boolean, cigar: string) {\n  const p = parseCigar(cigar)\n  return cigarToMismatches(flip ? getOrientedCigar(flip, p) : p)\n}\n\nexport function getLengthOnRef(cigar: string) {\n  const cigarOps = parseCigar(cigar)\n  let lengthOnRef = 0\n  for (let i = 0; i < cigarOps.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]\n    if (op !== 'H' && op !== 'S' && op !== 'I') {\n      lengthOnRef += len\n    }\n  }\n  return lengthOnRef\n}\n\nexport function getLength(cigar: string) {\n  const cigarOps = parseCigar(cigar)\n  let length = 0\n  for (let i = 0; i < cigarOps.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]\n    if (op !== 'D' && op !== 'N') {\n      length += len\n    }\n  }\n  return length\n}\n\nexport function getLengthSansClipping(cigar: string) {\n  const cigarOps = parseCigar(cigar)\n  let length = 0\n  for (let i = 0; i < cigarOps.length; i += 2) {\n    const len = +cigarOps[i]!\n    const op = cigarOps[i + 1]\n    if (op !== 'H' && op !== 'S' && op !== 'D' && op !== 'N') {\n      length += len\n    }\n  }\n  return length\n}\n\nexport function getClip(cigar: string, strand: number) {\n  return strand === -1\n    ? +(startClip.exec(cigar) || [])[1]! || 0\n    : +(endClip.exec(cigar) || [])[1]! || 0\n}\n\nexport function getTag(f: Feature, tag: string) {\n  const tags = f.get('tags')\n  return tags ? tags[tag] : f.get(tag)\n}\n\n// produces a list of \"feature-like\" object from parsing supplementary\n// alignments in the SA tag\n//\n// @param normalize - used specifically in the linear-read-vs-ref context, it\n// flips features around relative to the original feature. other contexts of\n// usage can keep this false\nexport function featurizeSA(\n  SA: string | undefined,\n  id: string,\n  strand: number,\n  readName: string,\n  normalize?: boolean,\n) {\n  return (\n    SA?.split(';')\n      .filter(aln => !!aln)\n      .map((aln, index) => {\n        const ret = aln.split(',')\n        const saRef = ret[0]!\n        const saStart = ret[1]!\n        const saStrand = ret[2]!\n        const saCigar = ret[3]!\n        const saLengthOnRef = getLengthOnRef(saCigar)\n        const saLength = getLength(saCigar)\n        const saLengthSansClipping = getLengthSansClipping(saCigar)\n        const saStrandNormalized = saStrand === '-' ? -1 : 1\n        const saClipPos = getClip(\n          saCigar,\n          (normalize ? strand : 1) * saStrandNormalized,\n        )\n        const saRealStart = +saStart - 1\n        return {\n          refName: saRef,\n          start: saRealStart,\n          end: saRealStart + saLengthOnRef,\n          seqLength: saLength,\n          clipPos: saClipPos,\n          CIGAR: saCigar,\n          strand: (normalize ? strand : 1) * saStrandNormalized,\n          uniqueId: `${id}_SA${index}`,\n          mate: {\n            start: saClipPos,\n            end: saClipPos + saLengthSansClipping,\n            refName: readName,\n          },\n        }\n      }) || []\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config CramAdapter\n * used to configure CRAM adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'CramAdapter',\n  {\n    /**\n     * #slot fetchSizeLimit\n     */\n    fetchSizeLimit: {\n      type: 'number',\n      description:\n        'size in bytes over which to display a warning to the user that too much data will be fetched',\n      defaultValue: 3_000_000,\n    },\n\n    /**\n     * #slot cramLocation\n     */\n    cramLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my.cram',\n        locationType: 'UriLocation',\n      },\n    },\n\n    /**\n     * #slot craiLocation\n     */\n    craiLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my.cram.crai',\n        locationType: 'UriLocation',\n      },\n    },\n\n    /**\n     * #slot sequenceAdapter\n     * generally refers to the reference genome assembly's sequence adapter\n     * currently needs to be manually added\n     */\n    sequenceAdapter: {\n      type: 'frozen',\n      description: 'sequence data adapter',\n      defaultValue: null,\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\n// locals\nimport configSchema from './configSchema'\n\nexport default function CramAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(() => {\n    return new AdapterType({\n      name: 'CramAdapter',\n      displayName: 'CRAM adapter',\n      configSchema,\n      getAdapterClass: () => import('./CramAdapter').then(r => r.default),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config BamAdapter\n * used to configure BAM adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'BamAdapter',\n  {\n    /**\n     * #slot\n     */\n    bamLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.bam', locationType: 'UriLocation' },\n    },\n\n    index: ConfigurationSchema('BamIndex', {\n      /**\n       * #slot index.indexType\n       */\n      indexType: {\n        model: types.enumeration('IndexType', ['BAI', 'CSI']),\n        type: 'stringEnum',\n        defaultValue: 'BAI',\n      },\n      /**\n       * #slot index.location\n       */\n      location: {\n        type: 'fileLocation',\n        defaultValue: {\n          uri: '/path/to/my.bam.bai',\n          locationType: 'UriLocation',\n        },\n      },\n    }),\n    /**\n     * #slot\n     */\n    fetchSizeLimit: {\n      type: 'number',\n      description:\n        'size to fetch in bytes over which to display a warning to the user that too much data will be fetched',\n      defaultValue: 5_000_000,\n    },\n    /**\n     * #slot\n     * generally refers to the reference genome assembly's sequence adapter\n     * currently needs to be manually added\n     */\n    sequenceAdapter: {\n      type: 'frozen',\n      description:\n        'sequence data adapter, used to calculate SNPs when BAM reads lacking MD tags',\n      defaultValue: null,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function BamAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(() => {\n    return new AdapterType({\n      name: 'BamAdapter',\n      displayName: 'BAM adapter',\n      configSchema,\n      getAdapterClass: () => import('./BamAdapter').then(r => r.default),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config HtsgetBamAdapter\n * Used to fetch data from Htsget endpoints in BAM format, using the gmod/bam library\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst HtsgetBamAdapter = ConfigurationSchema(\n  'HtsgetBamAdapter',\n  {\n    /**\n     * #slot\n     */\n    htsgetBase: {\n      type: 'string',\n      description: 'the base URL to fetch from',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    htsgetTrackId: {\n      type: 'string',\n      description: 'the trackId, which is appended to the base URL',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    sequenceAdapter: {\n      type: 'frozen',\n      description:\n        'sequence data adapter, used to calculate SNPs when BAM reads lacking MD tags',\n      defaultValue: null,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default HtsgetBamAdapter\n","import configSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nexport default function HtsgetBamAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(() => {\n    return new AdapterType({\n      name: 'HtsgetBamAdapter',\n      displayName: 'Htsget BAM adapter',\n      adapterMetadata: {\n        hiddenFromGUI: true,\n      },\n      configSchema,\n      getAdapterClass: () => import('./HtsgetBamAdapter').then(r => r.default),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config SNPCoverageAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'SNPCoverageAdapter',\n  {\n    /**\n     * #slot\n     * normally refers to a BAM or CRAM adapter\n     */\n    subadapter: {\n      type: 'frozen',\n      defaultValue: null,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function SNPCoverageAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(() => {\n    return new AdapterType({\n      name: 'SNPCoverageAdapter',\n      displayName: 'SNPCoverage adapter',\n      adapterMetadata: {\n        hiddenFromGUI: true,\n      },\n      getAdapterClass: () =>\n        import('./SNPCoverageAdapter').then(r => r.default),\n      configSchema,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config SNPCoverageRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst SNPCoverageRenderer = ConfigurationSchema(\n  'SNPCoverageRenderer',\n  {\n    /**\n     * #slot\n     */\n    clipColor: {\n      type: 'color',\n      description: 'the color of the clipping marker',\n      defaultValue: 'red',\n    },\n    /**\n     * #slot\n     */\n    indicatorThreshold: {\n      type: 'number',\n      description:\n        'the proportion of reads containing a insertion/clip indicator',\n      defaultValue: 0.4,\n    },\n    /**\n     * #slot\n     */\n    drawArcs: {\n      type: 'boolean',\n      description: 'Draw sashimi-style arcs for intron features',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    drawInterbaseCounts: {\n      type: 'boolean',\n      description:\n        'draw count \"upsidedown histogram\" of the interbase events that don\\'t contribute to the coverage count so are not drawn in the normal histogram',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    drawIndicators: {\n      type: 'boolean',\n      description:\n        'draw a triangular indicator where an event has been detected',\n      defaultValue: true,\n    },\n\n    color: {\n      type: 'color',\n      description: 'Background color for the SNPCoverage renderer',\n      defaultValue: '#d3d3d3',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default SNPCoverageRenderer\n","import { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { featureSpanPx, bpSpanPx, Feature } from '@jbrowse/core/util'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\nimport {\n  getOrigin,\n  getScale,\n  ScaleOpts,\n  WiggleBaseRenderer,\n  YSCALEBAR_LABEL_OFFSET,\n} from '@jbrowse/plugin-wiggle'\n\nexport interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {\n  bpPerPx: number\n  height: number\n  highResolutionScaling: number\n  scaleOpts: ScaleOpts\n}\n\nexport interface RenderArgsDeserializedWithFeatures\n  extends RenderArgsDeserialized {\n  features: Map<string, Feature>\n  ticks: { values: number[] }\n  displayCrossHatches: boolean\n  modificationTagMap?: Record<string, string>\n}\n\ntype Counts = Record<string, { total: number; strands: Record<string, number> }>\n\ninterface SNPInfo {\n  cov: Counts\n  noncov: Counts\n  total: number\n}\n\nconst fudgeFactor = 0.6\n\nexport default class SNPCoverageRenderer extends WiggleBaseRenderer {\n  // note: the snps are drawn on linear scale even if the data is drawn in log\n  // scape hence the two different scales being used\n  async draw(\n    ctx: CanvasRenderingContext2D,\n    props: RenderArgsDeserializedWithFeatures,\n  ) {\n    const {\n      features,\n      regions,\n      bpPerPx,\n      displayCrossHatches,\n      modificationTagMap = {},\n      scaleOpts,\n      height: unadjustedHeight,\n      theme: configTheme,\n      config: cfg,\n      ticks,\n    } = props\n    const theme = createJBrowseTheme(configTheme)\n    const region = regions[0]!\n    const width = (region.end - region.start) / bpPerPx\n\n    // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n    // wiggle display, and makes the height of the actual drawn area add\n    // \"padding\" to the top and bottom of the display\n    const offset = YSCALEBAR_LABEL_OFFSET\n    const height = unadjustedHeight - offset * 2\n\n    const opts = { ...scaleOpts, range: [0, height] }\n    const viewScale = getScale(opts)\n\n    // clipping and insertion indicators, uses a smaller height/2 scale\n    const indicatorViewScale = getScale({\n      ...opts,\n      range: [0, height / 2],\n      scaleType: 'linear',\n    })\n    const originY = getOrigin(scaleOpts.scaleType)\n    const originLinear = getOrigin('linear')\n\n    const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold')\n    const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts')\n    const drawArcs = readConfObject(cfg, 'drawArcs')\n    const drawIndicators = readConfObject(cfg, 'drawIndicators')\n\n    // get the y coordinate that we are plotting at, this can be log scale\n    const toY = (n: number) => height - (viewScale(n) || 0) + offset\n    const toHeight = (n: number) => toY(originY) - toY(n)\n    // used specifically for indicator\n    const toY2 = (n: number) => height - (indicatorViewScale(n) || 0) + offset\n    const toHeight2 = (n: number) => toY2(originLinear) - toY2(n)\n\n    const { bases } = theme.palette\n    const colorForBase: Record<string, string> = {\n      A: bases.A.main,\n      C: bases.C.main,\n      G: bases.G.main,\n      T: bases.T.main,\n      insertion: 'purple',\n      softclip: 'blue',\n      hardclip: 'red',\n      total: readConfObject(cfg, 'color'),\n      meth: 'red',\n      unmeth: 'blue',\n    }\n\n    const feats = [...features.values()]\n    const coverage = feats.filter(f => f.get('type') !== 'skip')\n    const skips = feats.filter(f => f.get('type') === 'skip')\n\n    // Use two pass rendering, which helps in visualizing the SNPs at higher\n    // bpPerPx First pass: draw the gray background\n    ctx.fillStyle = colorForBase.total!\n    for (const feature of coverage) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n      const w = rightPx - leftPx + fudgeFactor\n      const score = feature.get('score') as number\n      ctx.fillRect(leftPx, toY(score), w, toHeight(score))\n    }\n\n    // Keep track of previous total which we will use it to draw the interbase\n    // indicator (if there is a sudden clip, there will be no read coverage but\n    // there will be \"clip\" coverage) at that position beyond the read. if the\n    // clip is right at a block boundary then prevTotal will not be available,\n    // so this is a best attempt to plot interbase indicator at the \"cliffs\"\n    let prevTotal = 0\n\n    // extraHorizontallyFlippedOffset is used to draw interbase items, which\n    // are located to the left when forward and right when reversed\n    const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0\n\n    // Second pass: draw the SNP data, and add a minimum feature width of 1px\n    // which can be wider than the actual bpPerPx This reduces overdrawing of\n    // the grey background over the SNPs\n\n    for (const feature of coverage) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n      const score = feature.get('score') as number\n      const snpinfo = feature.get('snpinfo') as SNPInfo\n      const w = Math.max(rightPx - leftPx, 1)\n      const totalScore = snpinfo.total\n      const keys = Object.keys(snpinfo.cov).sort()\n\n      let curr = 0\n      for (const base of keys) {\n        const { total } = snpinfo.cov[base]!\n        ctx.fillStyle =\n          colorForBase[base] ||\n          modificationTagMap[base.replace('mod_', '')] ||\n          'black'\n\n        const height = toHeight(score)\n        const bottom = toY(score) + height\n        ctx.fillRect(\n          Math.round(leftPx),\n          bottom - ((total + curr) / score) * height,\n          w,\n          (total / score) * height,\n        )\n        curr += total\n      }\n\n      const interbaseEvents = Object.keys(snpinfo.noncov)\n      const indicatorHeight = 4.5\n      if (drawInterbaseCounts) {\n        let curr = 0\n        for (const base of interbaseEvents) {\n          const { total } = snpinfo.noncov[base]!\n          const r = 0.6\n          ctx.fillStyle = colorForBase[base]!\n          ctx.fillRect(\n            leftPx - r + extraHorizontallyFlippedOffset,\n            indicatorHeight + toHeight2(curr),\n            r * 2,\n            toHeight2(total),\n          )\n          curr += total\n        }\n      }\n\n      if (drawIndicators) {\n        let accum = 0\n        let max = 0\n        let maxBase = ''\n        for (const base of interbaseEvents) {\n          const { total } = snpinfo.noncov[base]!\n          accum += total\n          if (total > max) {\n            max = total\n            maxBase = base\n          }\n        }\n\n        // avoid drawing a bunch of indicators if coverage is very low e.g.\n        // less than 7, uses the prev total in the case of the \"cliff\"\n        const indicatorComparatorScore = Math.max(totalScore, prevTotal)\n        if (\n          accum > indicatorComparatorScore * indicatorThreshold &&\n          indicatorComparatorScore > 7\n        ) {\n          ctx.fillStyle = colorForBase[maxBase]!\n          ctx.beginPath()\n          const l = leftPx + extraHorizontallyFlippedOffset\n          ctx.moveTo(l - 3.5, 0)\n          ctx.lineTo(l + 3.5, 0)\n          ctx.lineTo(l, indicatorHeight)\n          ctx.fill()\n        }\n      }\n      prevTotal = totalScore\n    }\n\n    if (drawArcs) {\n      for (const f of skips) {\n        const [left, right] = bpSpanPx(\n          f.get('start'),\n          f.get('end'),\n          region,\n          bpPerPx,\n        )\n\n        ctx.beginPath()\n        const str = f.get('strand') as number\n        const xs = f.get('xs') as string\n        const pos = 'rgba(255,200,200,0.7)'\n        const neg = 'rgba(200,200,255,0.7)'\n        const neutral = 'rgba(200,200,200,0.7)'\n\n        if (xs === '+') {\n          ctx.strokeStyle = pos\n        } else if (xs === '-') {\n          ctx.strokeStyle = neg\n        } else if (str === 1) {\n          ctx.strokeStyle = pos\n        } else if (str === -1) {\n          ctx.strokeStyle = neg\n        } else {\n          ctx.strokeStyle = neutral\n        }\n\n        ctx.lineWidth = Math.log(f.get('score') + 1)\n        ctx.moveTo(left, height - offset * 2)\n        ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2)\n        ctx.stroke()\n      }\n    }\n\n    if (displayCrossHatches) {\n      ctx.lineWidth = 1\n      ctx.strokeStyle = 'rgba(140,140,140,0.8)'\n      ticks.values.forEach(tick => {\n        ctx.beginPath()\n        ctx.moveTo(0, Math.round(toY(tick)))\n        ctx.lineTo(width, Math.round(toY(tick)))\n        ctx.stroke()\n      })\n    }\n    return undefined\n  }\n}\n","import configSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport SNPCoverageRenderer from './SNPCoverageRenderer'\n\nimport { WiggleRendering } from '@jbrowse/plugin-wiggle'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new SNPCoverageRenderer({\n        name: 'SNPCoverageRenderer',\n        ReactComponent: WiggleRendering,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import deepEqual from 'fast-deep-equal'\nimport { LayoutSession } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport GranularRectLayout from '@jbrowse/core/util/layouts/GranularRectLayout'\nimport MultiLayout from '@jbrowse/core/util/layouts/MultiLayout'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nexport interface PileupLayoutSessionProps {\n  config: AnyConfigurationModel\n  bpPerPx: number\n  filters: SerializableFilterChain\n  filterBy: unknown\n  sortedBy: unknown\n  showSoftClip: unknown\n}\n\ntype MyMultiLayout = MultiLayout<GranularRectLayout<unknown>, unknown>\ninterface CachedPileupLayout {\n  layout: MyMultiLayout\n  config: AnyConfigurationModel\n  filters?: SerializableFilterChain\n  filterBy: unknown\n  sortedBy: unknown\n  showSoftClip: boolean\n}\n\n// The pileup layout session adds\n// - sorting and revealing soft clip changes the layout of pileup renderer\n// - extra conditions to see if cached layout is valid\nexport class PileupLayoutSession extends LayoutSession {\n  sortedBy: unknown\n  filterBy: unknown\n\n  showSoftClip = false\n\n  constructor(args: PileupLayoutSessionProps) {\n    super(args)\n    this.config = args.config\n  }\n\n  cachedLayoutIsValid(cachedLayout: CachedPileupLayout) {\n    return (\n      super.cachedLayoutIsValid(cachedLayout) &&\n      this.showSoftClip === cachedLayout.showSoftClip &&\n      deepEqual(this.sortedBy, cachedLayout.sortedBy) &&\n      deepEqual(this.filterBy, cachedLayout.filterBy)\n    )\n  }\n\n  cachedLayout: CachedPileupLayout | undefined\n\n  get layout(): MyMultiLayout {\n    if (!this.cachedLayout || !this.cachedLayoutIsValid(this.cachedLayout)) {\n      this.cachedLayout = {\n        layout: this.makeLayout(),\n        config: readConfObject(this.config),\n        filters: this.filters,\n        filterBy: this.filterBy,\n        sortedBy: this.sortedBy,\n        showSoftClip: this.showSoftClip,\n      }\n    }\n    return this.cachedLayout.layout\n  }\n}\n","import BoxRendererType, {\n  RenderArgsDeserialized as BoxRenderArgsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport {\n  Feature,\n  Region,\n  notEmpty,\n  renderToAbstractCanvas,\n} from '@jbrowse/core/util'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { BaseLayout } from '@jbrowse/core/util/layouts/BaseLayout'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport {\n  PileupLayoutSession,\n  PileupLayoutSessionProps,\n} from './PileupLayoutSession'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport { fetchSequence, shouldFetchReferenceSequence } from '../util'\nimport { layoutFeats } from './layoutFeatures'\n\nexport interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {\n  colorBy?: { type: string; tag?: string }\n  colorTagMap?: Record<string, string>\n  modificationTagMap?: Record<string, string>\n  sortedBy?: {\n    type: string\n    pos: number\n    refName: string\n    assemblyName: string\n    tag?: string\n  }\n  showSoftClip: boolean\n  highResolutionScaling: number\n}\n\nexport interface RenderArgsDeserializedWithFeaturesAndLayout\n  extends RenderArgsDeserialized {\n  features: Map<string, Feature>\n  layout: BaseLayout<Feature>\n  regionSequence?: string\n}\n\nexport default class PileupRenderer extends BoxRendererType {\n  supportsSVG = true\n\n  async fetchSequence(renderProps: RenderArgsDeserialized) {\n    const { sessionId, regions, adapterConfig } = renderProps\n    const { sequenceAdapter } = adapterConfig\n    if (!sequenceAdapter) {\n      return undefined\n    }\n    const pm = this.pluginManager\n    const { dataAdapter } = await getAdapter(pm, sessionId, sequenceAdapter)\n    const region = regions[0]!\n    return fetchSequence(region, dataAdapter as BaseFeatureDataAdapter)\n  }\n\n  getExpandedRegion(region: Region, renderArgs: RenderArgsDeserialized) {\n    const { config, showSoftClip } = renderArgs\n    const { start, end } = region\n    const maxClippingSize = readConfObject(config, 'maxClippingSize')\n    const bpExpansion = showSoftClip ? Math.round(maxClippingSize) : 0\n\n    return {\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      ...(region as Omit<typeof region, symbol>),\n      start: Math.floor(Math.max(start - bpExpansion, 0)),\n      end: Math.ceil(end + bpExpansion),\n    }\n  }\n\n  async render(renderProps: RenderArgsDeserialized) {\n    const features = await this.getFeatures(renderProps)\n    const layout = this.createLayoutInWorker(renderProps)\n    const { regions, bpPerPx } = renderProps\n    const region = regions[0]!\n\n    const layoutRecords = layoutFeats({\n      ...renderProps,\n      features,\n      layout,\n    })\n\n    // only need reference sequence if there are features and only for some\n    // cases\n    const regionSequence =\n      features.size && shouldFetchReferenceSequence(renderProps.colorBy?.type)\n        ? await this.fetchSequence(renderProps)\n        : undefined\n    const width = (region.end - region.start) / bpPerPx\n    const height = Math.max(layout.getTotalHeight(), 1)\n\n    const { makeImageData } = await import('./makeImageData')\n    const res = await renderToAbstractCanvas(\n      width,\n      height,\n      renderProps,\n      ctx => {\n        makeImageData({\n          ctx,\n          layoutRecords: layoutRecords.filter(notEmpty),\n          canvasWidth: width,\n          renderArgs: {\n            ...renderProps,\n            layout,\n            features,\n            regionSequence,\n          },\n        })\n        return undefined\n      },\n    )\n\n    const results = await super.render({\n      ...renderProps,\n      ...res,\n      features,\n      layout,\n      height,\n      width,\n    })\n\n    return {\n      ...results,\n      ...res,\n      features: new Map(),\n      layout,\n      height,\n      width,\n      maxHeightReached: layout.maxHeightReached,\n    }\n  }\n\n  createSession(args: PileupLayoutSessionProps) {\n    return new PileupLayoutSession(args)\n  }\n}\n\nexport {\n  type RenderArgs,\n  type RenderResults,\n  type RenderArgsSerialized,\n  type ResultsSerialized,\n  type ResultsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\n","import { readConfObject } from '@jbrowse/core/configuration'\nimport { iterMap } from '@jbrowse/core/util'\n\n// locals\nimport { layoutFeature } from './layoutFeature'\nimport { RenderArgsDeserializedWithFeaturesAndLayout } from './PileupRenderer'\nimport { sortFeature } from './sortUtil'\n\n// layout determines the height of the canvas that we use to render\nexport function layoutFeats(\n  props: RenderArgsDeserializedWithFeaturesAndLayout,\n) {\n  const { layout, features, sortedBy, config, bpPerPx, showSoftClip, regions } =\n    props\n  const region = regions[0]!\n  const featureMap =\n    sortedBy?.type && region.start === sortedBy.pos\n      ? sortFeature(features, sortedBy)\n      : features\n\n  const heightPx = readConfObject(config, 'height')\n  const displayMode = readConfObject(config, 'displayMode')\n  return iterMap(\n    featureMap.values(),\n    feature =>\n      layoutFeature({\n        feature,\n        layout,\n        bpPerPx,\n        region,\n        showSoftClip,\n        heightPx,\n        displayMode,\n      }),\n    featureMap.size,\n  )\n}\n","import { doesIntersect2, Feature } from '@jbrowse/core/util'\nimport { Mismatch } from '../MismatchParser'\n\ninterface SortObject {\n  pos: number\n  type: string\n  tag?: string\n}\nexport const sortFeature = (\n  features: Map<string, Feature>,\n  sortedBy: SortObject,\n) => {\n  const featureArray = Array.from(features.values())\n  const featuresInCenterLine: Feature[] = []\n  const featuresOutsideCenter: Feature[] = []\n  const { pos, type } = sortedBy\n\n  // only sort on features that intersect center line, append those outside post-sort\n  featureArray.forEach(innerArray => {\n    const feature = innerArray\n    const start = feature.get('start')\n    const end = feature.get('end')\n    if (doesIntersect2(pos - 1, pos, start, end)) {\n      featuresInCenterLine.push(innerArray)\n    } else {\n      featuresOutsideCenter.push(innerArray)\n    }\n  })\n\n  const isCram = featureArray.length ? featureArray[0]!.get('tags') : false\n  switch (type) {\n    case 'Start location': {\n      featuresInCenterLine.sort((a, b) => a.get('start') - b.get('start'))\n      break\n    }\n\n    case 'tag': {\n      const tag = sortedBy.tag!\n      const getTag = (f: Feature, t: string) => {\n        return isCram ? f.get('tags')[t] : f.get(t)\n      }\n      const isString =\n        featuresInCenterLine[0] &&\n        typeof getTag(featuresInCenterLine[0], tag) === 'string'\n      if (isString) {\n        featuresInCenterLine.sort((a, b) =>\n          getTag(b, tag).localeCompare(getTag(a, tag)),\n        )\n      } else {\n        featuresInCenterLine.sort(\n          (a, b) => (getTag(b, tag) || 0) - (getTag(a, tag) || 0),\n        )\n      }\n      break\n    }\n\n    // first sort all mismatches, then all reference bases at the end\n    case 'Base pair': {\n      const baseSortArray: [string, Mismatch][] = []\n      featuresInCenterLine.forEach(feature => {\n        const mismatches: Mismatch[] = feature.get('mismatches')\n        mismatches.forEach(mismatch => {\n          const start = feature.get('start')\n          const offset = start + mismatch.start + 1\n          const consuming =\n            mismatch.type === 'insertion' || mismatch.type === 'softclip'\n          const len = consuming ? 0 : mismatch.length\n          if (pos >= offset && pos < offset + len) {\n            baseSortArray.push([feature.id(), mismatch])\n          }\n        })\n      })\n\n      const baseMap = new Map(baseSortArray)\n      featuresInCenterLine.sort((a, b) => {\n        const aMismatch = baseMap.get(a.id())\n        const bMismatch = baseMap.get(b.id())\n        const acode = bMismatch?.base.toUpperCase()\n        const bcode = aMismatch?.base.toUpperCase()\n        if (acode === bcode && acode === '*') {\n          // @ts-expect-error\n          return aMismatch.length - bMismatch.length\n        }\n        return (\n          (acode ? acode.charCodeAt(0) : 0) - (bcode ? bcode.charCodeAt(0) : 0)\n        )\n      })\n\n      break\n    }\n\n    // sorts positive strands then negative strands\n    case 'Read strand': {\n      featuresInCenterLine.sort((a, b) =>\n        a.get('strand') <= b.get('strand') ? 1 : -1,\n      )\n      break\n    }\n  }\n\n  return new Map(\n    [...featuresInCenterLine, ...featuresOutsideCenter].map(feature => [\n      feature.id(),\n      feature,\n    ]),\n  )\n}\n","import { bpSpanPx, Feature, Region } from '@jbrowse/core/util'\nimport { BaseLayout } from '@jbrowse/core/util/layouts'\n// locals\nimport { Mismatch } from '../MismatchParser'\n\nexport interface LayoutRecord {\n  feature: Feature\n  leftPx: number\n  rightPx: number\n  topPx: number\n  heightPx: number\n}\n\nexport function layoutFeature({\n  feature,\n  layout,\n  bpPerPx,\n  region,\n  showSoftClip,\n  heightPx,\n  displayMode,\n}: {\n  feature: Feature\n  layout: BaseLayout<Feature>\n  bpPerPx: number\n  region: Region\n  showSoftClip?: boolean\n  heightPx: number\n  displayMode: string\n}): LayoutRecord | null {\n  let expansionBefore = 0\n  let expansionAfter = 0\n\n  // Expand the start and end of feature when softclipping enabled\n  if (showSoftClip) {\n    const mismatches = feature.get('mismatches') as Mismatch[]\n    const seq = feature.get('seq') as string\n    if (seq) {\n      for (const { type, start, cliplen = 0 } of mismatches) {\n        if (type === 'softclip') {\n          if (start === 0) {\n            expansionBefore = cliplen\n          } else {\n            expansionAfter = cliplen\n          }\n        }\n      }\n    }\n  }\n\n  const [leftPx, rightPx] = bpSpanPx(\n    feature.get('start') - expansionBefore,\n    feature.get('end') + expansionAfter,\n    region,\n    bpPerPx,\n  )\n\n  if (displayMode === 'compact') {\n    heightPx /= 3\n  }\n  if (feature.get('refName') !== region.refName) {\n    throw new Error(\n      `feature ${feature.id()} is not on the current region's reference sequence ${\n        region.refName\n      }`,\n    )\n  }\n  const topPx = layout.addRect(\n    feature.id(),\n    feature.get('start') - expansionBefore,\n    feature.get('end') + expansionAfter,\n    heightPx,\n    feature,\n  )\n  if (topPx === null) {\n    return null\n  }\n\n  return {\n    feature,\n    leftPx,\n    rightPx,\n    topPx: displayMode === 'collapse' ? 0 : topPx,\n    heightPx,\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config PileupRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst PileupRenderer = ConfigurationSchema(\n  'PileupRenderer',\n  {\n    /**\n     * #slot\n     * default magenta here is used to detect the user has not customized this\n     */\n    color: {\n      type: 'color',\n      description: 'the color of each feature in a pileup alignment',\n      defaultValue: '#f0f',\n      contextVariable: ['feature'],\n    },\n\n    /**\n     * #slot\n     */\n    orientationType: {\n      type: 'stringEnum',\n      model: types.enumeration('orientationType', ['fr', 'rf', 'ff']),\n      defaultValue: 'fr',\n      description:\n        'read sequencer orientation. fr is normal \"reads pointing at each other ---> <--- while some other sequencers can use other options',\n    },\n    /**\n     * #slot\n     */\n    displayMode: {\n      type: 'stringEnum',\n      model: types.enumeration('displayMode', [\n        'normal',\n        'compact',\n        'collapse',\n      ]),\n      description: 'Alternative display modes',\n      defaultValue: 'normal',\n    },\n    /**\n     * #slot\n     */\n    minSubfeatureWidth: {\n      type: 'number',\n      description:\n        'the minimum width in px for a pileup mismatch feature. use for increasing/decreasing mismatch marker widths when zoomed out, e.g. 0 or 1',\n      defaultValue: 1,\n    },\n    /**\n     * #slot\n     */\n    maxHeight: {\n      type: 'integer',\n      description: 'the maximum height to be used in a pileup rendering',\n      defaultValue: 1200,\n    },\n    /**\n     * #slot\n     */\n    maxClippingSize: {\n      type: 'integer',\n      description: 'the max clip size to be used in a pileup rendering',\n      defaultValue: 10000,\n    },\n    /**\n     * #slot\n     */\n    height: {\n      type: 'number',\n      description: 'the height of each feature in a pileup alignment',\n      defaultValue: 7,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    noSpacing: {\n      type: 'boolean',\n      description: 'remove spacing between features',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    largeInsertionIndicatorScale: {\n      type: 'number',\n      description:\n        'scale at which to draw the large insertion indicators (bp/pixel)',\n      defaultValue: 10,\n    },\n    /**\n     * #slot\n     */\n    mismatchAlpha: {\n      type: 'boolean',\n      defaultValue: false,\n      description: 'Fade low quality mismatches',\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default PileupRenderer\n","import React, { useRef, useState, useEffect } from 'react'\nimport { Region } from '@jbrowse/core/util/types'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { bpSpanPx } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport type { BaseLinearDisplayModel } from '@jbrowse/plugin-linear-genome-view'\n\nconst PileupRendering = observer(function (props: {\n  blockKey: string\n  displayModel?: BaseLinearDisplayModel\n  width: number\n  height: number\n  regions: Region[]\n  bpPerPx: number\n  sortedBy?: {\n    type: string\n    pos: number\n    refName: string\n  }\n  colorBy?: {\n    type: string\n    tag?: string\n  }\n  filterBy?: {\n    tagFilter?: { tag: string }\n  }\n  onMouseMove?: (event: React.MouseEvent, featureId?: string) => void\n}) {\n  const {\n    onMouseMove,\n    blockKey,\n    displayModel,\n    width,\n    height,\n    regions,\n    bpPerPx,\n    sortedBy,\n    colorBy,\n    filterBy,\n  } = props\n  const { selectedFeatureId, featureIdUnderMouse, contextMenuFeature } =\n    displayModel || {}\n  const [firstRender, setFirstRender] = useState(false)\n  useEffect(() => {\n    setFirstRender(true)\n  }, [])\n\n  const region = regions[0]!\n  const ref = useRef<HTMLDivElement>(null)\n  const [mouseIsDown, setMouseIsDown] = useState(false)\n  const [movedDuringLastMouseDown, setMovedDuringLastMouseDown] =\n    useState(false)\n  const selectedRect = selectedFeatureId\n    ? displayModel?.getFeatureByID(blockKey, selectedFeatureId)\n    : undefined\n\n  const highlightedFeature = featureIdUnderMouse || contextMenuFeature?.id()\n  const highlightedRect = highlightedFeature\n    ? displayModel?.getFeatureByID(blockKey, highlightedFeature)\n    : undefined\n\n  function makeRect(r: [number, number, number, number], offset = 2) {\n    const [leftBp, topPx, rightBp, bottomPx] = r\n    const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n    const rectTop = Math.round(topPx)\n    const rectHeight = Math.round(bottomPx - topPx)\n    return {\n      left: leftPx - offset,\n      top: rectTop - offset,\n      width: rightPx - leftPx,\n      height: rectHeight,\n    }\n  }\n  const selected = selectedRect ? makeRect(selectedRect) : undefined\n  const highlight = highlightedRect ? makeRect(highlightedRect, 0) : undefined\n\n  function onMouseDown(event: React.MouseEvent) {\n    setMouseIsDown(true)\n    setMovedDuringLastMouseDown(false)\n    callMouseHandler('MouseDown', event)\n  }\n\n  function onMouseEnter(event: React.MouseEvent) {\n    callMouseHandler('MouseEnter', event)\n  }\n\n  function onMouseOut(event: React.MouseEvent) {\n    callMouseHandler('MouseOut', event)\n    callMouseHandler('MouseLeave', event)\n  }\n\n  function onMouseOver(event: React.MouseEvent) {\n    callMouseHandler('MouseOver', event)\n  }\n\n  function onMouseUp(event: React.MouseEvent) {\n    setMouseIsDown(false)\n    callMouseHandler('MouseUp', event)\n  }\n\n  function onClick(event: React.MouseEvent) {\n    if (!movedDuringLastMouseDown) {\n      callMouseHandler('Click', event)\n    }\n  }\n\n  function onMouseLeave(event: React.MouseEvent) {\n    callMouseHandler('MouseOut', event)\n    callMouseHandler('MouseLeave', event)\n  }\n\n  function onContextMenu(event: React.MouseEvent) {\n    callMouseHandler('ContextMenu', event)\n  }\n\n  function mouseMove(event: React.MouseEvent) {\n    if (!ref.current) {\n      return\n    }\n    if (mouseIsDown) {\n      setMovedDuringLastMouseDown(true)\n    }\n    const rect = ref.current.getBoundingClientRect()\n    const offsetX = event.clientX - rect.left\n    const offsetY = event.clientY - rect.top\n    const px = region.reversed ? width - offsetX : offsetX\n    const clientBp = region.start + bpPerPx * px\n\n    onMouseMove?.(\n      event,\n      displayModel?.getFeatureOverlapping(blockKey, clientBp, offsetY),\n    )\n  }\n\n  function callMouseHandler(handlerName: string, event: React.MouseEvent) {\n    // @ts-expect-error\n    const featureHandler = props[`onFeature${handlerName}`]\n    // @ts-expect-error\n    const canvasHandler = props[`on${handlerName}`]\n    if (featureHandler && featureIdUnderMouse) {\n      featureHandler(event, featureIdUnderMouse)\n    } else if (canvasHandler) {\n      canvasHandler(event, featureIdUnderMouse)\n    }\n  }\n\n  const canvasWidth = Math.ceil(width)\n  // need to call this in render so we get the right observer behavior\n  return (\n    <div\n      ref={ref}\n      data-testid={[\n        'pileup-overlay',\n        sortedBy?.type,\n        colorBy?.type,\n        colorBy?.tag,\n        filterBy?.tagFilter?.tag,\n      ]\n        .filter(f => !!f)\n        .join('-')}\n      style={{ position: 'relative', width: canvasWidth, height }}\n      onMouseDown={event => {\n        onMouseDown(event)\n      }}\n      onMouseEnter={event => {\n        onMouseEnter(event)\n      }}\n      onMouseOut={event => {\n        onMouseOut(event)\n      }}\n      onMouseOver={event => {\n        onMouseOver(event)\n      }}\n      onMouseUp={event => {\n        onMouseUp(event)\n      }}\n      onMouseLeave={event => {\n        onMouseLeave(event)\n      }}\n      onMouseMove={event => {\n        mouseMove(event)\n      }}\n      onClick={event => {\n        onClick(event)\n      }}\n      onContextMenu={event => {\n        onContextMenu(event)\n      }}\n      onFocus={() => {}}\n      onBlur={() => {}}\n    >\n      <PrerenderedCanvas\n        {...props}\n        style={{ position: 'absolute', left: 0, top: 0 }}\n      />\n      {firstRender && highlight ? (\n        <div\n          style={{\n            position: 'absolute',\n            backgroundColor: '#0003',\n            pointerEvents: 'none',\n            ...highlight,\n          }}\n        />\n      ) : null}\n      {firstRender && selected ? (\n        <div\n          style={{\n            position: 'absolute',\n            border: '2px solid #00b8ff',\n            boxSizing: 'content-box',\n            pointerEvents: 'none',\n            ...selected,\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default PileupRendering\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport PileupRenderer from './PileupRenderer'\nimport configSchema from './configSchema'\nimport ReactComponent from './components/PileupRendering'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addRendererType(() => {\n    return new PileupRenderer({\n      name: 'PileupRenderer',\n      displayName: 'Pileup renderer',\n      ReactComponent,\n      configSchema,\n      pluginManager,\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nexport function getLowerPanelDisplays(pluginManager: PluginManager) {\n  return pluginManager\n    .getDisplayElements()\n    .filter(f => f.subDisplay?.type === 'LinearAlignmentsDisplay')\n    .filter(f => f.subDisplay?.lowerPanel)\n}\n","import React from 'react'\nimport { autorun, when } from 'mobx'\nimport {\n  addDisposer,\n  getSnapshot,\n  isAlive,\n  types,\n  Instance,\n  IStateTreeNode,\n} from 'mobx-state-tree'\nimport deepEqual from 'fast-deep-equal'\n\n// jbrowse\nimport {\n  AnyConfigurationModel,\n  AnyConfigurationSchemaType,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport { LinearAlignmentsDisplayMixin } from './alignmentsModel'\nimport { getLowerPanelDisplays } from './util'\nimport { IFilter } from '../../shared'\n\nconst minDisplayHeight = 20\n\nfunction deepSnap<T extends IStateTreeNode, U extends IStateTreeNode>(\n  x1?: T,\n  x2?: U,\n) {\n  return deepEqual(\n    x1 ? getSnapshot(x1) : undefined,\n    x2 ? getSnapshot(x2) : undefined,\n  )\n}\n\nfunction preCheck(self: LinearAlignmentsDisplayModel) {\n  const { PileupDisplay, SNPCoverageDisplay } = self\n  return (\n    PileupDisplay ||\n    isAlive(PileupDisplay) ||\n    SNPCoverageDisplay ||\n    isAlive(SNPCoverageDisplay)\n  )\n}\n\nfunction propagateColorBy(self: LinearAlignmentsDisplayModel) {\n  const { PileupDisplay, SNPCoverageDisplay } = self\n  if (!preCheck(self) || !PileupDisplay.colorBy) {\n    return\n  }\n  if (!deepSnap(PileupDisplay.colorBy, SNPCoverageDisplay.colorBy)) {\n    SNPCoverageDisplay.setColorBy(getSnapshot(PileupDisplay.colorBy))\n  }\n}\n\nfunction propagateFilterBy(self: LinearAlignmentsDisplayModel) {\n  const { PileupDisplay, SNPCoverageDisplay } = self\n  if (!preCheck(self) || !PileupDisplay.filterBy) {\n    return\n  }\n  if (!deepSnap(PileupDisplay.filterBy, SNPCoverageDisplay.filterBy)) {\n    SNPCoverageDisplay.setFilterBy(getSnapshot(PileupDisplay.filterBy))\n  }\n}\n\n/**\n * #stateModel LinearAlignmentsDisplay\n * extends\n * - [BaseDisplay](../basedisplay)\n * - [LinearAlignmentsDisplayMixin](../linearalignmentsdisplaymixin)\n */\nfunction stateModelFactory(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'LinearAlignmentsDisplay',\n      BaseDisplay,\n      LinearAlignmentsDisplayMixin(pluginManager, configSchema),\n    )\n    .volatile(() => ({\n      scrollTop: 0,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setScrollTop(scrollTop: number) {\n        self.scrollTop = scrollTop\n      },\n\n      /**\n       * #action\n       */\n      setSNPCoverageHeight(n: number) {\n        self.snpCovHeight = n\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get height() {\n        return self.heightPreConfig ?? getConf(self, 'height')\n      },\n\n      /**\n       * #getter\n       */\n      get featureIdUnderMouse() {\n        return (\n          self.PileupDisplay.featureIdUnderMouse ||\n          self.SNPCoverageDisplay.featureIdUnderMouse\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get pileupConf() {\n        const conf = getConf(self, 'pileupDisplay')\n        return {\n          ...conf,\n          type: self.lowerPanelType,\n          displayId: `${self.configuration.displayId}_${self.lowerPanelType}_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n        }\n      },\n\n      /**\n       * #method\n       */\n      getFeatureByID(blockKey: string, id: string) {\n        return self.PileupDisplay.getFeatureByID(blockKey, id)\n      },\n      /**\n       * #method\n       */\n      searchFeatureByID(id: string) {\n        return self.PileupDisplay.searchFeatureByID?.(id)\n      },\n\n      /**\n       * #getter\n       */\n      get features() {\n        return self.PileupDisplay.features\n      },\n\n      /**\n       * #getteralignmentsdisplaymodel\n       */\n      get DisplayBlurb() {\n        return self.PileupDisplay?.DisplayBlurb\n      },\n\n      /**\n       * #getter\n       */\n      get sortedBy() {\n        return self.PileupDisplay.sortedBy\n      },\n\n      /**\n       * #getter\n       */\n      get coverageConf() {\n        const conf = getConf(self, 'snpCoverageDisplay')\n        return {\n          ...conf,\n          displayId: `${self.configuration.displayId}_snpcoverage_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setSNPCoverageDisplay(configuration: AnyConfigurationModel) {\n        self.SNPCoverageDisplay = {\n          type: 'LinearSNPCoverageDisplay',\n          configuration,\n          height: self.snpCovHeight,\n        }\n      },\n      /**\n       * #action\n       */\n      setFeatureDensityStatsLimit(stats?: FeatureDensityStats) {\n        self.PileupDisplay.setFeatureDensityStatsLimit(stats)\n        self.SNPCoverageDisplay.setFeatureDensityStatsLimit(stats)\n      },\n\n      /**\n       * #action\n       */\n      setPileupDisplay(configuration: AnyConfigurationModel) {\n        self.PileupDisplay = {\n          type: configuration.type || 'LinearPileupDisplay',\n          configuration,\n        }\n      },\n      /**\n       * #action\n       */\n      setHeight(n: number) {\n        self.heightPreConfig = Math.max(n, minDisplayHeight)\n        return self.heightPreConfig\n      },\n      /**\n       * #action\n       */\n      setFilterBy(filter: IFilter) {\n        self.PileupDisplay.setFilterBy(filter)\n        self.SNPCoverageDisplay.setFilterBy(filter)\n      },\n      /**\n       * #action\n       */\n      setLowerPanelType(type: string) {\n        self.lowerPanelType = type\n      },\n      /**\n       * #action\n       */\n      resizeHeight(distance: number) {\n        const oldHeight = self.height\n        const newHeight = this.setHeight(self.height + distance)\n        return newHeight - oldHeight\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            const {\n              SNPCoverageDisplay,\n              PileupDisplay,\n              coverageConf,\n              pileupConf,\n            } = self\n\n            if (!SNPCoverageDisplay) {\n              self.setSNPCoverageDisplay(coverageConf)\n            } else if (\n              !deepEqual(\n                coverageConf,\n                getSnapshot(SNPCoverageDisplay.configuration),\n              )\n            ) {\n              SNPCoverageDisplay.setHeight(self.snpCovHeight)\n              SNPCoverageDisplay.setConfig(self.coverageConf)\n            }\n\n            if (!PileupDisplay || self.lowerPanelType !== PileupDisplay.type) {\n              self.setPileupDisplay(pileupConf)\n            } else if (\n              !deepEqual(pileupConf, getSnapshot(PileupDisplay.configuration))\n            ) {\n              PileupDisplay.setConfig(self.pileupConf)\n            }\n\n            propagateColorBy(self as LinearAlignmentsDisplayModel)\n            propagateFilterBy(self as LinearAlignmentsDisplayModel)\n          }),\n        )\n\n        addDisposer(\n          self,\n          autorun(() => {\n            self.setSNPCoverageHeight(self.SNPCoverageDisplay.height)\n          }),\n        )\n\n        addDisposer(\n          self,\n          autorun(() => {\n            self.PileupDisplay.setHeight(\n              self.height - self.SNPCoverageDisplay.height,\n            )\n          }),\n        )\n      },\n      /**\n       * #action\n       */\n      async renderSvg(opts: { rasterizeLayers?: boolean }) {\n        const pileupHeight = self.height - self.SNPCoverageDisplay.height\n        await when(\n          () =>\n            !self.PileupDisplay.renderProps().notReady &&\n            !self.SNPCoverageDisplay.renderProps().notReady,\n        )\n        return (\n          <>\n            <g>{await self.SNPCoverageDisplay.renderSvg(opts)}</g>\n            <g transform={`translate(0 ${self.SNPCoverageDisplay.height})`}>\n              {await self.PileupDisplay.renderSvg({\n                ...opts,\n                overrideHeight: pileupHeight,\n              })}\n            </g>\n          </>\n        )\n      },\n    }))\n    .views(self => {\n      const { trackMenuItems: superTrackMenuItems } = self\n      return {\n        /**\n         * #method\n         */\n        trackMenuItems(): MenuItem[] {\n          if (!self.PileupDisplay) {\n            return []\n          }\n          const extra = getLowerPanelDisplays(pluginManager).map(d => ({\n            type: 'radio',\n            label: d.displayName,\n            checked: d.name === self.PileupDisplay.type,\n            onClick: () => {\n              self.setLowerPanelType(d.name)\n            },\n          }))\n          return [\n            ...superTrackMenuItems(),\n            {\n              type: 'subMenu',\n              label: 'Pileup settings',\n              subMenu: self.PileupDisplay.trackMenuItems(),\n            },\n            {\n              type: 'subMenu',\n              label: 'SNPCoverage settings',\n              subMenu: self.SNPCoverageDisplay.trackMenuItems(),\n            },\n            {\n              type: 'subMenu',\n              label: 'Replace lower panel with...',\n              subMenu: extra,\n            },\n          ]\n        },\n      }\n    })\n    .preProcessSnapshot(snap => {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!snap) {\n        return snap\n      }\n      // @ts-expect-error\n      const { height, ...rest } = snap\n      return { heightPreConfig: height, ...rest }\n    })\n}\n\nexport default stateModelFactory\n\nexport type LinearAlignmentsDisplayStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearAlignmentsDisplayModel =\n  Instance<LinearAlignmentsDisplayStateModel>\n","import { types } from 'mobx-state-tree'\n\n// jbrowse\nimport {\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getLowerPanelDisplays } from './util'\n\n/**\n * #stateModel LinearAlignmentsDisplayMixin\n */\nexport function LinearAlignmentsDisplayMixin(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types.model({\n    /**\n     * #property\n     * refers to LinearPileupDisplay sub-display model\n     */\n    PileupDisplay: types.maybe(\n      types.union(\n        ...getLowerPanelDisplays(pluginManager).map(f => f.stateModel),\n      ),\n    ),\n    /**\n     * #property\n     * refers to LinearSNPCoverageDisplay sub-display model\n     */\n    SNPCoverageDisplay: types.maybe(\n      pluginManager.getDisplayType('LinearSNPCoverageDisplay')!.stateModel,\n    ),\n    /**\n     * #property\n     */\n    snpCovHeight: 45,\n    /**\n     * #property\n     */\n    type: types.literal('LinearAlignmentsDisplay'),\n    /**\n     * #property\n     */\n    configuration: ConfigurationReference(configSchema),\n    /**\n     * #property\n     */\n    heightPreConfig: types.maybe(types.number),\n    /**\n     * #property\n     */\n    userFeatureScreenDensity: types.maybe(types.number),\n    /**\n     * #property\n     */\n    lowerPanelType: 'LinearPileupDisplay',\n  })\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearAlignmentsDisplayModel } from '../models/model'\n\nconst useStyles = makeStyles()({\n  resizeHandle: {\n    height: 5,\n    position: 'absolute',\n    zIndex: 2,\n  },\n})\n\nconst AlignmentsDisplay = observer(function AlignmentsDisplay({\n  model,\n}: {\n  model: LinearAlignmentsDisplayModel\n}) {\n  const { PileupDisplay, SNPCoverageDisplay } = model\n  const { classes } = useStyles()\n  if (!SNPCoverageDisplay) {\n    return null\n  }\n  const top = SNPCoverageDisplay.height ?? 100\n  return (\n    <div\n      data-testid={`display-${getConf(model, 'displayId')}`}\n      style={{ position: 'relative' }}\n    >\n      <div data-testid=\"Blockset-snpcoverage\">\n        <SNPCoverageDisplay.RenderingComponent model={SNPCoverageDisplay} />\n      </div>\n      <ResizeHandle\n        onDrag={delta => {\n          SNPCoverageDisplay.setHeight(SNPCoverageDisplay.height + delta)\n          return delta\n        }}\n        className={classes.resizeHandle}\n        style={{ top: top - 4 }}\n      />\n\n      <div\n        data-testid=\"Blockset-pileup\"\n        style={{\n          position: 'absolute',\n          top,\n        }}\n      >\n        <PileupDisplay.RenderingComponent model={PileupDisplay} />\n      </div>\n    </div>\n  )\n})\n\nexport default AlignmentsDisplay\n","import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n// locals\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport ReactComponent from './components/AlignmentsDisplay'\n\nexport default function LinearAlignmentsDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearAlignmentsDisplay',\n      displayName: 'Alignments display (combination)',\n      configSchema,\n      stateModel: modelFactory(pluginManager, configSchema),\n      trackType: 'AlignmentsTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearAlignmentsDisplay\n * has a \"pileup\" sub-display, where you can see individual reads and a\n * quantitative \"snpcoverage\" sub-display track showing SNP frequencies\n */\nexport default function configModelFactory(pm: PluginManager) {\n  return ConfigurationSchema(\n    'LinearAlignmentsDisplay',\n    {\n      /**\n       * #slot\n       */\n      pileupDisplay: pm.getDisplayType('LinearPileupDisplay')!.configSchema,\n\n      /**\n       * #slot\n       */\n      snpCoverageDisplay: pm.getDisplayType('LinearSNPCoverageDisplay')!\n        .configSchema,\n\n      /**\n       * #slot\n       */\n      height: {\n        type: 'number',\n        defaultValue: 250,\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import { lazy } from 'react'\nimport { types, cast, getEnv, getSnapshot, isAlive } from 'mobx-state-tree'\nimport { observable } from 'mobx'\n\n// jbrowse\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  getConf,\n  readConfObject,\n  AnyConfigurationSchemaType,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { linearWiggleDisplayModelFactory } from '@jbrowse/plugin-wiggle'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\n\n// locals\nimport { FilterModel, IFilter, getUniqueModificationValues } from '../../shared'\nimport { createAutorun, modificationColors } from '../../util'\nimport { randomColor } from '../../util'\n\n// lazies\nconst Tooltip = lazy(() => import('../components/Tooltip'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([['snpcoverage', 'SNPCoverageRenderer']])\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * #stateModel LinearSNPCoverageDisplay\n * extends\n * - [LinearWiggleDisplay](../linearwiggledisplay)\n */\nfunction stateModelFactory(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'LinearSNPCoverageDisplay',\n      linearWiggleDisplayModelFactory(pluginManager, configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearSNPCoverageDisplay'),\n        /**\n         * #property\n         */\n        drawInterbaseCounts: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        drawIndicators: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        drawArcs: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        filterBy: types.optional(FilterModel, {}),\n        /**\n         * #property\n         */\n        colorBy: types.maybe(\n          types.model({\n            type: types.string,\n            tag: types.maybe(types.string),\n          }),\n        ),\n        /**\n         * #property\n         */\n        jexlFilters: types.optional(types.array(types.string), []),\n      }),\n    )\n    .volatile(() => ({\n      modificationTagMap: observable.map<string, string>({}),\n      modificationsReady: false,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setConfig(configuration: AnyConfigurationModel) {\n        self.configuration = configuration\n      },\n      /**\n       * #action\n       */\n      setFilterBy(filter: IFilter) {\n        self.filterBy = cast(filter)\n      },\n      /**\n       * #action\n       */\n      setColorBy(colorBy?: { type: string; tag?: string }) {\n        self.colorBy = cast(colorBy)\n      },\n      /**\n       * #action\n       */\n      setJexlFilters(filters: string[]) {\n        self.jexlFilters = cast(filters)\n      },\n\n      /**\n       * #action\n       */\n      updateModificationColorMap(uniqueModifications: string[]) {\n        uniqueModifications.forEach(value => {\n          if (!self.modificationTagMap.has(value)) {\n            self.modificationTagMap.set(\n              value,\n              modificationColors[value] || randomColor(),\n            )\n          }\n        })\n      },\n    }))\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #getter\n         */\n        get rendererConfig() {\n          const configBlob =\n            getConf(self, ['renderers', self.rendererTypeName]) || {}\n\n          return self.rendererType.configSchema.create(\n            {\n              ...configBlob,\n              drawInterbaseCounts:\n                self.drawInterbaseCounts ?? configBlob.drawInterbaseCounts,\n              drawIndicators: self.drawIndicators ?? configBlob.drawIndicators,\n              drawArcs: self.drawArcs ?? configBlob.drawArcs,\n            },\n            getEnv(self),\n          )\n        },\n        /**\n         * #getter\n         */\n        get drawArcsSetting() {\n          return (\n            self.drawArcs ?? readConfObject(this.rendererConfig, 'drawArcs')\n          )\n        },\n        /**\n         * #getter\n         */\n        get drawInterbaseCountsSetting() {\n          return (\n            self.drawInterbaseCounts ??\n            readConfObject(this.rendererConfig, 'drawInterbaseCounts')\n          )\n        },\n        /**\n         * #getter\n         */\n        get drawIndicatorsSetting() {\n          return (\n            self.drawIndicators ??\n            readConfObject(this.rendererConfig, 'drawIndicators')\n          )\n        },\n\n        /**\n         * #getter\n         */\n        get autorunReady() {\n          const view = getContainingView(self) as LGV\n          return (\n            view.initialized &&\n            self.featureDensityStatsReady &&\n            !self.regionTooLarge &&\n            !self.error\n          )\n        },\n\n        get renderReady() {\n          const superProps = superRenderProps()\n          return !superProps.notReady && self.modificationsReady\n        },\n\n        get ready() {\n          return this.renderReady\n        },\n\n        /**\n         * #method\n         */\n        renderProps() {\n          const superProps = superRenderProps()\n          const { colorBy, filterBy, modificationTagMap } = self\n          return {\n            ...superProps,\n            notReady: !this.ready,\n            filters: self.filters,\n            modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),\n\n            // must use getSnapshot because otherwise changes to e.g. just the\n            // colorBy.type are not read\n            colorBy: colorBy ? getSnapshot(colorBy) : undefined,\n            filterBy: getSnapshot(filterBy),\n          }\n        },\n      }\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setModificationsReady(flag: boolean) {\n        self.modificationsReady = flag\n      },\n      /**\n       * #action\n       */\n      toggleDrawIndicators() {\n        self.drawIndicators = !self.drawIndicatorsSetting\n      },\n      /**\n       * #action\n       */\n      toggleDrawInterbaseCounts() {\n        self.drawInterbaseCounts = !self.drawInterbaseCountsSetting\n      },\n      /**\n       * #action\n       */\n      toggleDrawArcs() {\n        self.drawArcs = !self.drawArcsSetting\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        createAutorun(\n          self,\n          async () => {\n            self.setModificationsReady(false)\n            if (!self.autorunReady) {\n              return\n            }\n            const view = getContainingView(self) as LGV\n            const { staticBlocks } = view\n            const { colorBy } = self\n            if (colorBy?.type === 'modifications') {\n              const adapter = getConf(self.parentTrack, 'adapter')\n              const vals = await getUniqueModificationValues({\n                self,\n                adapterConfig: adapter,\n                blocks: staticBlocks,\n              })\n              if (isAlive(self)) {\n                self.updateModificationColorMap(vals)\n                self.setModificationsReady(true)\n              }\n            } else {\n              self.setModificationsReady(true)\n            }\n          },\n          { delay: 1000 },\n        )\n      },\n    }))\n\n    .views(self => {\n      const { trackMenuItems: superTrackMenuItems } = self\n      return {\n        /**\n         * #getter\n         */\n        get TooltipComponent() {\n          return Tooltip\n        },\n\n        /**\n         * #getter\n         */\n        get adapterConfig() {\n          const subadapter = getConf(self.parentTrack, 'adapter')\n          return {\n            type: 'SNPCoverageAdapter',\n            subadapter,\n          }\n        },\n\n        /**\n         * #getter\n         */\n        get rendererTypeName() {\n          return rendererTypes.get('snpcoverage')\n        },\n\n        /**\n         * #getter\n         */\n        get needsScalebar() {\n          return true\n        },\n\n        /**\n         * #method\n         */\n        contextMenuItems() {\n          return []\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Draw insertion/clipping indicators',\n              type: 'checkbox',\n              checked: self.drawIndicatorsSetting,\n              onClick: () => {\n                self.toggleDrawIndicators()\n              },\n            },\n            {\n              label: 'Draw insertion/clipping counts',\n              type: 'checkbox',\n              checked: self.drawInterbaseCountsSetting,\n              onClick: () => {\n                self.toggleDrawInterbaseCounts()\n              },\n            },\n            {\n              label: 'Draw arcs',\n              type: 'checkbox',\n              checked: self.drawArcsSetting,\n              onClick: () => {\n                self.toggleDrawArcs()\n              },\n            },\n          ]\n        },\n\n        /**\n         * #getter\n         */\n        get filters() {\n          return new SerializableFilterChain({ filters: self.jexlFilters })\n        },\n      }\n    })\n}\n\nexport type SNPCoverageDisplayModel = ReturnType<typeof stateModelFactory>\n\nexport default stateModelFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport { LinearWiggleDisplayReactComponent } from '@jbrowse/plugin-wiggle'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearSNPCoverageDisplay',\n      displayName: 'SNPCoverage display',\n      configSchema,\n      stateModel: modelFactory(pluginManager, configSchema),\n      trackType: 'AlignmentsTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: LinearWiggleDisplayReactComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearSNPCoverageDisplay\n *\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default function SNPCoverageConfigFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearSNPCoverageDisplay',\n    {\n      /**\n       * #slot\n       */\n      autoscale: {\n        type: 'stringEnum',\n        defaultValue: 'local',\n        model: types.enumeration('Autoscale type', ['local']),\n        description:\n          'performs local autoscaling (no other options for SNP Coverage available)',\n      },\n      /**\n       * #slot\n       */\n      minScore: {\n        type: 'number',\n        defaultValue: Number.MIN_VALUE,\n        description: 'minimum value for the y-scale',\n      },\n      /**\n       * #slot\n       */\n      maxScore: {\n        type: 'number',\n        description: 'maximum value for the y-scale',\n        defaultValue: Number.MAX_VALUE,\n      },\n      /**\n       * #slot\n       */\n      scaleType: {\n        type: 'stringEnum',\n        model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale\n        description: 'The type of scale to use',\n        defaultValue: 'linear',\n      },\n      /**\n       * #slot\n       */ inverted: {\n        type: 'boolean',\n        description: 'draw upside down',\n        defaultValue: false,\n      },\n      /**\n       * #slot\n       */\n      multiTicks: {\n        type: 'boolean',\n        description: 'Display multiple values for the ticks',\n        defaultValue: false,\n      },\n      /**\n       * #slot\n       */\n      renderers: ConfigurationSchema('RenderersConfiguration', {\n        SNPCoverageRenderer: pluginManager.getRendererType(\n          'SNPCoverageRenderer',\n        )!.configSchema,\n      }),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import React, { lazy } from 'react'\nimport { cast, types, Instance } from 'mobx-state-tree'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes'\nimport {\n  FeatureDensityMixin,\n  TrackHeightMixin,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// icons\nimport PaletteIcon from '@mui/icons-material/Palette'\nimport FilterListIcon from '@mui/icons-material/ClearAll'\n\n// locals\nimport { FilterModel, IFilter } from '../shared'\nimport { ChainData } from '../shared/fetchChains'\n\n// async\nconst FilterByTagDialog = lazy(() => import('../shared/FilterByTagDialog'))\n\n/**\n * #stateModel LinearReadArcsDisplay\n * the arc display is a non-block-based track, so draws to a single canvas and\n * can connect multiple regions\n * extends\n * - [BaseDisplay](../basedisplay)\n * - [TrackHeightMixin](../trackheightmixin)\n * - [FeatureDensityMixin](../featuredensitymixin)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearReadArcsDisplay',\n      BaseDisplay,\n      TrackHeightMixin(),\n      FeatureDensityMixin(),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearReadArcsDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n\n        /**\n         * #property\n         */\n        filterBy: types.optional(FilterModel, {}),\n\n        /**\n         * #property\n         */\n        lineWidth: types.maybe(types.number),\n\n        /**\n         * #property\n         */\n        jitter: types.maybe(types.number),\n\n        /**\n         * #property\n         */\n        colorBy: types.maybe(\n          types.model({\n            type: types.string,\n            tag: types.maybe(types.string),\n            extra: types.frozen(),\n          }),\n        ),\n\n        /**\n         * #property\n         */\n        drawInter: true,\n\n        /**\n         * #property\n         */\n        drawLongRange: true,\n      }),\n    )\n    .volatile(() => ({\n      loading: false,\n      chainData: undefined as ChainData | undefined,\n      lastDrawnOffsetPx: undefined as number | undefined,\n      lastDrawnBpPerPx: 0,\n      ref: null as HTMLCanvasElement | null,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setLastDrawnOffsetPx(n: number) {\n        self.lastDrawnOffsetPx = n\n      },\n      /**\n       * #action\n       */\n      setLastDrawnBpPerPx(n: number) {\n        self.lastDrawnBpPerPx = n\n      },\n      /**\n       * #action\n       */\n      setLoading(f: boolean) {\n        self.loading = f\n      },\n\n      /**\n       * #action\n       */\n      reload() {\n        self.error = undefined\n      },\n      /**\n       * #action\n       * internal, a reference to a HTMLCanvas because we use a autorun to draw\n       * the canvas\n       */\n      setRef(ref: HTMLCanvasElement | null) {\n        self.ref = ref\n      },\n\n      /**\n       * #action\n       */\n      setColorScheme(s: { type: string }) {\n        self.colorBy = cast(s)\n      },\n\n      /**\n       * #action\n       */\n      setChainData(args: ChainData) {\n        self.chainData = args\n      },\n\n      /**\n       * #action\n       */\n      setDrawInter(f: boolean) {\n        self.drawInter = f\n      },\n\n      /**\n       * #action\n       */\n      setDrawLongRange(f: boolean) {\n        self.drawLongRange = f\n      },\n\n      /**\n       * #action\n       */\n      setFilterBy(filter: IFilter) {\n        self.filterBy = cast(filter)\n      },\n\n      /**\n       * #action\n       * thin, bold, extrabold, etc\n       */\n      setLineWidth(n: number) {\n        self.lineWidth = n\n      },\n\n      /**\n       * #action\n       * jitter val, helpful to jitter the x direction so you see better\n       * evidence when e.g. 100 long reads map to same x position\n       */\n      setJitter(n: number) {\n        self.jitter = n\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get drawn() {\n        return self.lastDrawnOffsetPx !== undefined\n      },\n      /**\n       * #getter\n       */\n      get lineWidthSetting() {\n        return self.lineWidth ?? getConf(self, 'lineWidth')\n      },\n\n      /**\n       * #getter\n       */\n      get jitterVal(): number {\n        return self.jitter ?? getConf(self, 'jitter')\n      },\n    }))\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderProps: superRenderProps,\n      } = self\n      return {\n        /**\n         * #method\n         * only used to tell system it's ready for export\n         */\n        renderProps() {\n          return {\n            ...superRenderProps(),\n            notReady: !self.chainData,\n          }\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Filter by',\n              icon: FilterListIcon,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  FilterByTagDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n            {\n              label: 'Line width',\n              subMenu: [\n                {\n                  label: 'Thin',\n                  onClick: () => {\n                    self.setLineWidth(1)\n                  },\n                },\n                {\n                  label: 'Bold',\n                  onClick: () => {\n                    self.setLineWidth(2)\n                  },\n                },\n                {\n                  label: 'Extra bold',\n                  onClick: () => {\n                    self.setLineWidth(5)\n                  },\n                },\n              ],\n            },\n            {\n              label: 'Jitter x-positions',\n              subMenu: [\n                {\n                  type: 'checkbox',\n                  checked: self.jitterVal === 0,\n                  label: 'None',\n                  onClick: () => {\n                    self.setJitter(0)\n                  },\n                },\n                {\n                  type: 'checkbox',\n                  checked: self.jitterVal === 2,\n                  label: 'Small',\n                  onClick: () => {\n                    self.setJitter(2)\n                  },\n                },\n                {\n                  type: 'checkbox',\n                  checked: self.jitterVal === 10,\n                  label: 'Large',\n                  onClick: () => {\n                    self.setJitter(10)\n                  },\n                },\n              ],\n            },\n            {\n              label: 'Draw inter-region vertical lines',\n              type: 'checkbox',\n              checked: self.drawInter,\n              onClick: () => {\n                self.setDrawInter(!self.drawInter)\n              },\n            },\n            {\n              label: 'Draw long range connections',\n              type: 'checkbox',\n              checked: self.drawLongRange,\n              onClick: () => {\n                self.setDrawLongRange(!self.drawLongRange)\n              },\n            },\n            {\n              label: 'Color scheme',\n              icon: PaletteIcon,\n              subMenu: [\n                {\n                  label: 'Insert size ± 3σ and orientation',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'insertSizeAndOrientation' })\n                  },\n                },\n                {\n                  label: 'Insert size ± 3σ',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'insertSize' })\n                  },\n                },\n                {\n                  label: 'Orientation',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'orientation' })\n                  },\n                },\n                {\n                  label: 'Insert size gradient',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'gradient' })\n                  },\n                },\n              ],\n            },\n          ]\n        },\n      }\n    })\n    .views(self => ({\n      /**\n       * #method\n       */\n      async renderSvg(opts: {\n        rasterizeLayers?: boolean\n      }): Promise<React.ReactNode> {\n        const { renderSvg } = await import('../shared/renderSvg')\n        const { drawFeats } = await import('./drawFeats')\n        return renderSvg(self as LinearReadArcsDisplayModel, opts, drawFeats)\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        ;(async () => {\n          try {\n            const { doAfterAttach } = await import('../shared/afterAttach')\n            const { drawFeats } = await import('./drawFeats')\n            doAfterAttach(self, drawFeats)\n          } catch (e) {\n            console.error(e)\n            self.setError(e)\n          }\n        })()\n      },\n    }))\n}\n\nexport type LinearReadArcsDisplayStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearReadArcsDisplayModel =\n  Instance<LinearReadArcsDisplayStateModel>\n\nexport default stateModelFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\n// locals\nimport configSchemaF from './configSchema'\nimport stateModelF from './model'\nimport { lazy } from 'react'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new DisplayType({\n      name: 'LinearReadArcsDisplay',\n      displayName: 'Arc display',\n      configSchema,\n      stateModel: stateModelF(configSchema),\n      trackType: 'AlignmentsTrack',\n      viewType: 'LinearGenomeView',\n      subDisplay: { type: 'LinearAlignmentsDisplay', lowerPanel: true },\n      ReactComponent: lazy(() => import('./components/ReactComponent')),\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config LinearReadArcsDisplay\n */\nfunction configSchemaF(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearReadArcsDisplay',\n    {\n      /**\n       * #slot\n       */\n      maxFeatureScreenDensity: {\n        type: 'number',\n        description: 'maximum features per pixel that is displayed in the view',\n        defaultValue: 5,\n      },\n\n      /**\n       * #slot\n       */\n      lineWidth: {\n        type: 'number',\n        description: 'set arc line width',\n        defaultValue: 1,\n      },\n\n      /**\n       * #slot\n       */\n      jitter: {\n        type: 'number',\n        description:\n          'jitters the x position so e.g. if many reads map to exact same x position, jittering makes it easy to see that there are many of them',\n        defaultValue: 0,\n      },\n\n      /**\n       * #slot\n       */\n      colorScheme: {\n        type: 'stringEnum',\n        model: types.enumeration('colorScheme', [\n          'strand',\n          'normal',\n          'insertSize',\n          'insertSizeAndOrientation',\n          'mappingQuality',\n          'tag',\n        ]),\n        description: 'color scheme to use',\n        defaultValue: 'normal',\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaF\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config LinearReadCloudDisplay\n */\nfunction configSchemaF(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearReadCloudDisplay',\n    {\n      /**\n       * #slot\n       */\n      maxFeatureScreenDensity: {\n        type: 'number',\n        description: 'maximum features per pixel that is displayed in the view',\n        defaultValue: 5,\n      },\n\n      /**\n       * #slot\n       */\n      featureHeight: {\n        type: 'number',\n        defaultValue: 7,\n      },\n\n      /**\n       * #slot\n       */\n      colorScheme: {\n        type: 'stringEnum',\n        model: types.enumeration('colorScheme', [\n          'strand',\n          'normal',\n          'insertSize',\n          'insertSizeAndOrientation',\n          'mappingQuality',\n          'tag',\n        ]),\n        description: 'color scheme to use',\n        defaultValue: 'normal',\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaF\n","import React, { lazy } from 'react'\nimport { cast, types, Instance } from 'mobx-state-tree'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n  FeatureDensityMixin,\n  TrackHeightMixin,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// icons\nimport PaletteIcon from '@mui/icons-material/Palette'\nimport FilterListIcon from '@mui/icons-material/ClearAll'\n\n// locals\nimport { FilterModel, IFilter } from '../shared'\nimport { ChainData } from '../shared/fetchChains'\n\n// async\nconst FilterByTagDialog = lazy(() => import('../shared/FilterByTagDialog'))\n\n/**\n * #stateModel LinearReadCloudDisplay\n * it is not a block based track, hence not BaseLinearDisplay\n * extends\n * - [BaseDisplay](../basedisplay)\n * - [TrackHeightMixin](../trackheightmixin)\n * - [FeatureDensityMixin](../featuredensitymixin)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearReadCloudDisplay',\n      BaseDisplay,\n      TrackHeightMixin(),\n      FeatureDensityMixin(),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearReadCloudDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n\n        /**\n         * #property\n         */\n        filterBy: types.optional(FilterModel, {}),\n\n        /**\n         * #property\n         */\n        colorBy: types.maybe(\n          types.model({\n            type: types.string,\n            tag: types.maybe(types.string),\n            extra: types.frozen(),\n          }),\n        ),\n\n        /**\n         * #property\n         */\n        drawSingletons: true,\n      }),\n    )\n    .volatile(() => ({\n      loading: false,\n      chainData: undefined as ChainData | undefined,\n      lastDrawnOffsetPx: undefined as number | undefined,\n      lastDrawnBpPerPx: 0,\n      ref: null as HTMLCanvasElement | null,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setDrawSingletons(f: boolean) {\n        self.drawSingletons = f\n      },\n      /**\n       * #action\n       */\n      setLastDrawnOffsetPx(n: number) {\n        self.lastDrawnOffsetPx = n\n      },\n      /**\n       * #action\n       */\n      setLastDrawnBpPerPx(n: number) {\n        self.lastDrawnBpPerPx = n\n      },\n\n      /**\n       * #action\n       */\n      setLoading(f: boolean) {\n        self.loading = f\n      },\n      /**\n       * #action\n       */\n      reload() {\n        self.error = undefined\n      },\n      /**\n       * #action\n       * internal, a reference to a HTMLCanvas because we use a autorun to draw\n       * the canvas\n       */\n      setRef(ref: HTMLCanvasElement | null) {\n        self.ref = ref\n      },\n\n      setColorScheme(s: { type: string }) {\n        self.colorBy = cast(s)\n      },\n\n      /**\n       * #action\n       */\n      setChainData(args: ChainData) {\n        self.chainData = args\n      },\n\n      /**\n       * #action\n       */\n      setFilterBy(filter: IFilter) {\n        self.filterBy = cast(filter)\n      },\n    }))\n    .views(self => ({\n      get drawn() {\n        return self.lastDrawnOffsetPx !== undefined\n      },\n    }))\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderProps: superRenderProps,\n      } = self\n\n      return {\n        // we don't use a server side renderer, so this fills in minimal\n        // info so as not to crash\n        renderProps() {\n          return {\n            ...superRenderProps(),\n            notReady: !self.chainData,\n          }\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Draw singletons',\n              type: 'checkbox',\n              checked: self.drawSingletons,\n              onClick: () => {\n                self.setDrawSingletons(!self.drawSingletons)\n              },\n            },\n            {\n              label: 'Filter by',\n              icon: FilterListIcon,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  FilterByTagDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n\n            {\n              label: 'Color scheme',\n              icon: PaletteIcon,\n              subMenu: [\n                {\n                  label: 'Insert size ± 3σ and orientation',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'insertSizeAndOrientation' })\n                  },\n                },\n                {\n                  label: 'Insert size ± 3σ',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'insertSize' })\n                  },\n                },\n                {\n                  label: 'Orientation',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'orientation' })\n                  },\n                },\n                {\n                  label: 'Insert size gradient',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'gradient' })\n                  },\n                },\n              ],\n            },\n          ]\n        },\n\n        /**\n         * #method\n         */\n        async renderSvg(opts: {\n          rasterizeLayers?: boolean\n        }): Promise<React.ReactNode> {\n          const { renderSvg } = await import('../shared/renderSvg')\n          const { drawFeats } = await import('./drawFeats')\n          return renderSvg(self as LinearReadCloudDisplayModel, opts, drawFeats)\n        },\n      }\n    })\n    .actions(self => ({\n      afterAttach() {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        ;(async () => {\n          try {\n            const { doAfterAttach } = await import('../shared/afterAttach')\n            const { drawFeats } = await import('./drawFeats')\n            doAfterAttach(self, drawFeats)\n          } catch (e) {\n            console.error(e)\n            self.setError(e)\n          }\n        })()\n      },\n    }))\n}\n\nexport type LinearReadCloudDisplayStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearReadCloudDisplayModel =\n  Instance<LinearReadCloudDisplayStateModel>\n\nexport default stateModelFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\n// locals\nimport configSchemaF from './configSchema'\nimport stateModelF from './model'\nimport { lazy } from 'react'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new DisplayType({\n      name: 'LinearReadCloudDisplay',\n      displayName: 'Read cloud display',\n      configSchema,\n      stateModel: stateModelF(configSchema),\n      trackType: 'AlignmentsTrack',\n      viewType: 'LinearGenomeView',\n      subDisplay: { type: 'LinearAlignmentsDisplay', lowerPanel: true },\n      ReactComponent: lazy(() => import('./components/ReactComponent')),\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport configSchemaF from './configSchemaF'\n\nexport default function register(pm: PluginManager) {\n  pm.addTrackType(() => {\n    const configSchema = configSchemaF(pm)\n    const track = new TrackType({\n      name: 'AlignmentsTrack',\n      displayName: 'Alignments track',\n      configSchema,\n      stateModel: createBaseTrackModel(pm, 'AlignmentsTrack', configSchema),\n    })\n    const linearAlignmentsDisplay = pm.getDisplayType(\n      'LinearAlignmentsDisplay',\n    )!\n    // Add LinearAlignmentsDisplay here so that it has priority over the other\n    // linear displays (defaults to order the displays are added, but we have\n    // to add the Pileup and SNPCoverage displays first).\n    track.addDisplayType(linearAlignmentsDisplay)\n    return track\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config AlignmentsTrack\n * has very little config; most config and state logic is on the display\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default function configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'AlignmentsTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport const configSchema = ConfigurationSchema('AlignmentsFeatureWidget', {})\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { Instance, types } from 'mobx-state-tree'\nimport { stateModelFactory as baseModelFactory } from '@jbrowse/core/BaseFeatureWidget'\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n  const baseModel = baseModelFactory(pluginManager)\n  return types.compose(\n    baseModel,\n    types.model('AlignmentsFeatureWidget', {\n      type: types.literal('AlignmentsFeatureWidget'),\n    }),\n  )\n}\n\nexport type AlignmentFeatureWidgetStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type AlignmentFeatureWidgetModel =\n  Instance<AlignmentFeatureWidgetStateModel>\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'\nimport { configSchema } from './configSchema'\nimport { stateModelFactory } from './stateModelFactory'\n\nexport default function AlignmentFeatureDetailsF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(\n    () =>\n      new WidgetType({\n        name: 'AlignmentsFeatureWidget',\n        heading: 'Feature details',\n        configSchema: configSchema,\n        stateModel: stateModelFactory(pluginManager),\n        ReactComponent: lazy(() => import('./AlignmentsFeatureDetail')),\n      }),\n  )\n}\n","import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport { renameRegionsIfNeeded } from '@jbrowse/core/util'\nimport { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'\n\n// specialized get features to return limited data about alignments\nexport default abstract class PileupBaseRPC extends RpcMethodType {\n  async serializeArguments(\n    args: RenderArgs & {\n      signal?: AbortSignal\n      statusCallback?: (arg: string) => void\n    },\n    rpcDriver: string,\n  ) {\n    const { rootModel } = this.pluginManager\n    const assemblyManager = rootModel?.session?.assemblyManager\n    if (!assemblyManager) {\n      throw new Error('no assembly manager available')\n    }\n\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n    return super.serializeArguments(renamedArgs, rpcDriver)\n  }\n}\n","import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { Region, dedupe, groupBy } from '@jbrowse/core/util'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n// locals\nimport { filterForPairs, getInsertSizeStats } from '../util'\nimport PileupBaseRPC from '../base'\nimport { getTag } from '../../util'\n\n// specialized get features to return limited data about alignments\nexport default class PileupGetReducedFeatures extends PileupBaseRPC {\n  name = 'PileupGetReducedFeatures'\n\n  async execute(\n    args: {\n      adapterConfig: Record<string, unknown>\n      signal?: RemoteAbortSignal\n      headers?: Record<string, string>\n      regions: Region[]\n      sessionId: string\n      tag: string\n    },\n    rpcDriver: string,\n  ) {\n    const des = await this.deserializeArguments(args, rpcDriver)\n    const { adapterConfig, sessionId, regions } = des\n    const dataAdapter = (\n      await getAdapter(this.pluginManager, sessionId, adapterConfig)\n    ).dataAdapter as BaseFeatureDataAdapter\n\n    const featuresArray = await firstValueFrom(\n      dataAdapter.getFeaturesInMultipleRegions(regions, des).pipe(toArray()),\n    )\n\n    const reduced = dedupe(\n      featuresArray.map(f => ({\n        id: f.id(),\n        refName: f.get('refName'),\n        name: f.get('name'),\n        start: f.get('start'),\n        strand: f.get('strand'),\n        end: f.get('end'),\n        flags: f.get('flags'),\n        tlen: f.get('template_length'),\n        pair_orientation: f.get('pair_orientation'),\n        next_ref: f.get('next_ref'),\n        next_pos: f.get('next_pos'),\n        clipPos: f.get('clipPos'),\n        SA: getTag(f, 'SA'),\n      })),\n      f => f.id,\n    )\n\n    const filtered = filterForPairs(reduced)\n    const stats = filtered.length ? getInsertSizeStats(filtered) : undefined\n    const chains = groupBy(reduced, f => f.name)\n\n    return {\n      chains: Object.values(chains),\n      stats,\n      hasPaired: !!stats,\n      containsNoTransferables: true,\n    }\n  }\n}\n","import { ReducedFeature } from '../shared/fetchChains'\n\nexport function getInsertSizeStats(features: ReducedFeature[]) {\n  const filtered = features.map(f => Math.abs(f.tlen))\n  const sum = filtered.reduce((a, b) => a + b, 0)\n  const sum2 = filtered.map(a => a * a).reduce((a, b) => a + b, 0)\n  const total = filtered.length\n  const avg = sum / total\n  const sd = Math.sqrt((total * sum2 - sum * sum) / (total * total))\n  const upper = avg + 4 * sd\n  const lower = avg - 3 * sd\n  return { upper, lower, avg, sd }\n}\n\nexport function filterForPairs(features: ReducedFeature[]) {\n  return features.filter(\n    f => f.flags & 2 && !(f.flags & 256) && !(f.flags & 2048),\n  )\n}\n","import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport { getModificationTypes } from '../../MismatchParser'\nimport PileupBaseRPC from '../base'\nimport { getTagAlt } from '../../util'\n\nexport default class PileupGetVisibleModifications extends PileupBaseRPC {\n  name = 'PileupGetVisibleModifications'\n\n  async execute(\n    args: {\n      adapterConfig: Record<string, unknown>\n      signal?: RemoteAbortSignal\n      headers?: Record<string, string>\n      regions: Region[]\n      sessionId: string\n      tag: string\n    },\n    rpcDriver: string,\n  ) {\n    const { adapterConfig, sessionId, regions } =\n      await this.deserializeArguments(args, rpcDriver)\n    const dataAdapter = (\n      await getAdapter(this.pluginManager, sessionId, adapterConfig)\n    ).dataAdapter as BaseFeatureDataAdapter\n\n    const featuresArray = await firstValueFrom(\n      dataAdapter.getFeaturesInMultipleRegions(regions).pipe(toArray()),\n    )\n\n    const uniqueValues = new Set<string>()\n    featuresArray.forEach(f => {\n      getModificationTypes(getTagAlt(f, 'MM', 'Mm') || '').forEach(t =>\n        uniqueValues.add(t),\n      )\n    })\n    return [...uniqueValues]\n  }\n}\n","import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { Region } from '@jbrowse/core/util'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\n// locals\nimport PileupBaseRPC from '../base'\nimport { getTag } from '../../util'\n\nexport default class PileupGetGlobalValueForTag extends PileupBaseRPC {\n  name = 'PileupGetGlobalValueForTag'\n\n  async execute(\n    args: {\n      adapterConfig: Record<string, unknown>\n      signal?: RemoteAbortSignal\n      headers?: Record<string, string>\n      regions: Region[]\n      sessionId: string\n      tag: string\n    },\n    rpcDriver: string,\n  ) {\n    const { adapterConfig, sessionId, regions, tag } =\n      await this.deserializeArguments(args, rpcDriver)\n\n    const dataAdapter = (\n      await getAdapter(this.pluginManager, sessionId, adapterConfig)\n    ).dataAdapter as BaseFeatureDataAdapter\n\n    const features = dataAdapter.getFeaturesInMultipleRegions(regions)\n    const featuresArray = await firstValueFrom(features.pipe(toArray()))\n    return [\n      ...new Set(\n        featuresArray\n          .map(feature => getTag(feature, tag))\n          .filter(f => f !== undefined)\n          .map(f => `${f}`),\n      ),\n    ]\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  PileupGetGlobalValueForTag,\n  PileupGetVisibleModifications,\n  PileupGetReducedFeatures,\n} from './rpcMethods'\n\nexport default function PileupRPCMethodsF(pm: PluginManager) {\n  pm.addRpcMethod(() => new PileupGetGlobalValueForTag(pm))\n  pm.addRpcMethod(() => new PileupGetVisibleModifications(pm))\n  pm.addRpcMethod(() => new PileupGetReducedFeatures(pm))\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  makeIndex,\n  makeIndexType,\n  getFileName,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default function GuessAlignmentsTypesF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.cram$/i\n        const adapterName = 'CramAdapter'\n        const fileName = getFileName(file)\n        const obj = {\n          type: adapterName,\n          cramLocation: file,\n          craiLocation: index || makeIndex(file, '.crai'),\n        }\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.bam$/i\n        const adapterName = 'BamAdapter'\n        const fileName = getFileName(file)\n        const indexName = index && getFileName(index)\n\n        const obj = {\n          type: adapterName,\n          bamLocation: file,\n          index: {\n            location: index || makeIndex(file, '.bai'),\n            indexType: makeIndexType(indexName, 'CSI', 'BAI'),\n          },\n        }\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'Core-guessTrackTypeForLocation',\n    (trackTypeGuesser: TrackTypeGuesser) => {\n      return (adapterName: string) => {\n        if (adapterName === 'BamAdapter' || adapterName === 'CramAdapter') {\n          return 'AlignmentsTrack'\n        }\n        return trackTypeGuesser(adapterName)\n      }\n    },\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearPileupDisplay\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nfunction configSchemaF(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearPileupDisplay',\n    {\n      /**\n       * #slot\n       */\n      defaultRendering: {\n        type: 'stringEnum',\n        model: types.enumeration('Rendering', ['pileup']),\n        defaultValue: 'pileup',\n      },\n      /**\n       * #slot\n       */\n      renderers: ConfigurationSchema('RenderersConfiguration', {\n        PileupRenderer:\n          pluginManager.getRendererType('PileupRenderer')!.configSchema,\n      }),\n      /**\n       * #slot\n       */\n      maxFeatureScreenDensity: {\n        type: 'number',\n        description: 'maximum features per pixel that is displayed in the view',\n        defaultValue: 5,\n      },\n\n      /**\n       * #slot\n       */\n      colorScheme: {\n        type: 'stringEnum',\n        model: types.enumeration('colorScheme', [\n          'strand',\n          'normal',\n          'insertSize',\n          'insertSizeAndOrientation',\n          'mappingQuality',\n          'tag',\n        ]),\n        description: 'color scheme to use',\n        defaultValue: 'normal',\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaF\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Typography } from '@mui/material'\n\nconst LinearPileupDisplayBlurb = observer(function ({\n  model,\n}: {\n  model: {\n    sortedBy?: {\n      pos: number\n      refName: number\n      type: string\n      tag?: string\n    }\n  }\n}) {\n  const { sortedBy } = model\n  return sortedBy ? (\n    <div data-testid={`blurb-${sortedBy}`}>\n      <Typography color=\"secondary\" variant=\"caption\">\n        {`Sorted by ${sortedBy.tag ?? sortedBy.type} at ${\n          sortedBy.refName\n        }:${sortedBy.pos}`}\n      </Typography>\n    </div>\n  ) : null\n})\n\nexport default LinearPileupDisplayBlurb\n","import { lazy } from 'react'\nimport { autorun, observable } from 'mobx'\nimport { cast, types, addDisposer, getSnapshot } from 'mobx-state-tree'\nimport copy from 'copy-to-clipboard'\nimport {\n  AnyConfigurationModel,\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  readConfObject,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n  getEnv,\n  getSession,\n  isSessionModelWithWidgets,\n  getContainingView,\n  SimpleFeature,\n  SimpleFeatureSerialized,\n  Feature,\n  getContainingTrack,\n} from '@jbrowse/core/util'\n\nimport {\n  LinearGenomeViewModel,\n  BaseLinearDisplay,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// icons\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen'\nimport FilterListIcon from '@mui/icons-material/ClearAll'\n\n// locals\nimport LinearPileupDisplayBlurb from './components/LinearPileupDisplayBlurb'\nimport { getUniqueTagValues, FilterModel, IFilter } from '../shared'\nimport { createAutorun } from '../util'\nimport { ColorByModel, ExtraColorBy } from '../shared/color'\n\n// lazies\nconst FilterByTagDialog = lazy(() => import('../shared/FilterByTagDialog'))\nconst ColorByTagDialog = lazy(() => import('./components/ColorByTagDialog'))\nconst SetFeatureHeightDialog = lazy(\n  () => import('./components/SetFeatureHeightDialog'),\n)\nconst SetMaxHeightDialog = lazy(() => import('./components/SetMaxHeightDialog'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([\n  ['pileup', 'PileupRenderer'],\n  ['svg', 'SvgFeatureRenderer'],\n])\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * #stateModel SharedLinearPileupDisplayMixin\n * #category display\n * extends `BaseLinearDisplay`\n */\nexport function SharedLinearPileupDisplayMixin(\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        featureHeight: types.maybe(types.number),\n        /**\n         * #property\n         */\n        noSpacing: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        fadeLikelihood: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        trackMaxHeight: types.maybe(types.number),\n        /**\n         * #property\n         */\n        colorBy: ColorByModel,\n        /**\n         * #property\n         */\n        filterBy: types.optional(FilterModel, {}),\n        /**\n         * #property\n         */\n        jexlFilters: types.optional(types.array(types.string), []),\n      }),\n    )\n    .volatile(() => ({\n      colorTagMap: observable.map<string, string>({}),\n      featureUnderMouseVolatile: undefined as undefined | Feature,\n      tagsReady: false,\n    }))\n    .views(self => ({\n      get autorunReady() {\n        const view = getContainingView(self) as LGV\n        return (\n          view.initialized &&\n          self.featureDensityStatsReady &&\n          !self.regionTooLarge\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setTagsReady(flag: boolean) {\n        self.tagsReady = flag\n      },\n\n      /**\n       * #action\n       */\n      setMaxHeight(n?: number) {\n        self.trackMaxHeight = n\n      },\n\n      /**\n       * #action\n       */\n      setFeatureHeight(n?: number) {\n        self.featureHeight = n\n      },\n\n      /**\n       * #action\n       */\n      setNoSpacing(flag?: boolean) {\n        self.noSpacing = flag\n      },\n\n      /**\n       * #action\n       */\n      setColorScheme(colorScheme: {\n        type: string\n        tag?: string\n        extra?: ExtraColorBy\n      }) {\n        self.colorTagMap = observable.map({}) // clear existing mapping\n        self.colorBy = cast(colorScheme)\n        if (colorScheme.tag) {\n          self.tagsReady = false\n        }\n      },\n\n      /**\n       * #action\n       */\n      updateColorTagMap(uniqueTag: string[]) {\n        // pale color scheme\n        // https://cran.r-project.org/web/packages/khroma/vignettes/tol.html\n        // e.g. \"tol_light\"\n        const colorPalette = [\n          '#BBCCEE',\n          'pink',\n          '#CCDDAA',\n          '#EEEEBB',\n          '#FFCCCC',\n          'lightblue',\n          'lightgreen',\n          'tan',\n          '#CCEEFF',\n          'lightsalmon',\n        ]\n\n        uniqueTag.forEach(value => {\n          if (!self.colorTagMap.has(value)) {\n            const totalKeys = [...self.colorTagMap.keys()].length\n            self.colorTagMap.set(value, colorPalette[totalKeys]!)\n          }\n        })\n      },\n\n      /**\n       * #action\n       */\n      setFeatureUnderMouse(feat?: Feature) {\n        self.featureUnderMouseVolatile = feat\n      },\n\n      /**\n       * #action\n       */\n      selectFeature(feature: Feature) {\n        const session = getSession(self)\n        if (isSessionModelWithWidgets(session)) {\n          const featureWidget = session.addWidget(\n            'AlignmentsFeatureWidget',\n            'alignmentFeature',\n            {\n              featureData: feature.toJSON(),\n              view: getContainingView(self),\n              track: getContainingTrack(self),\n            },\n          )\n          session.showWidget(featureWidget)\n        }\n        session.setSelection(feature)\n      },\n\n      /**\n       * #action\n       * uses copy-to-clipboard and generates notification\n       */\n      copyFeatureToClipboard(feature: Feature) {\n        const { uniqueId, ...rest } = feature.toJSON()\n        const session = getSession(self)\n        copy(JSON.stringify(rest, null, 4))\n        session.notify('Copied to clipboard', 'success')\n      },\n\n      /**\n       * #action\n       */\n      setConfig(conf: AnyConfigurationModel) {\n        self.configuration = conf\n      },\n\n      /**\n       * #action\n       */\n      setFilterBy(filter: IFilter) {\n        self.filterBy = cast(filter)\n      },\n\n      /**\n       * #action\n       */\n      setJexlFilters(filters: string[]) {\n        self.jexlFilters = cast(filters)\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rendererConfig() {\n        const { featureHeight, noSpacing, trackMaxHeight, rendererTypeName } =\n          self\n        const configBlob = getConf(self, ['renderers', rendererTypeName]) || {}\n        return self.rendererType.configSchema.create(\n          {\n            ...configBlob,\n            ...(featureHeight !== undefined ? { height: featureHeight } : {}),\n            ...(noSpacing !== undefined ? { noSpacing } : {}),\n            ...(trackMaxHeight !== undefined\n              ? { maxHeight: trackMaxHeight }\n              : {}),\n          },\n          getEnv(self),\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get maxHeight() {\n        return readConfObject(self.rendererConfig, 'maxHeight')\n      },\n\n      /**\n       * #getter\n       */\n      get featureHeightSetting() {\n        return readConfObject(self.rendererConfig, 'height')\n      },\n      /**\n       * #getter\n       */\n      get featureUnderMouse() {\n        return self.featureUnderMouseVolatile\n      },\n      /**\n       * #getter\n       */\n      renderReady() {\n        return self.tagsReady\n      },\n      /**\n       * #getter\n       */\n      get filters() {\n        return new SerializableFilterChain({ filters: self.jexlFilters })\n      },\n    }))\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderProps: superRenderProps,\n      } = self\n\n      return {\n        /**\n         * #getter\n         */\n        get rendererTypeName() {\n          const viewName = getConf(self, 'defaultRendering')\n          const rendererType = rendererTypes.get(viewName)\n          if (!rendererType) {\n            throw new Error(`unknown alignments view name ${viewName}`)\n          }\n          return rendererType\n        },\n\n        /**\n         * #method\n         */\n        contextMenuItems() {\n          const feat = self.contextMenuFeature\n          return feat\n            ? [\n                {\n                  label: 'Open feature details',\n                  icon: MenuOpenIcon,\n                  onClick: (): void => {\n                    self.clearFeatureSelection()\n                    self.selectFeature(feat)\n                  },\n                },\n                {\n                  label: 'Copy info to clipboard',\n                  icon: ContentCopyIcon,\n                  onClick: (): void => {\n                    self.copyFeatureToClipboard(feat)\n                  },\n                },\n              ]\n            : []\n        },\n\n        /**\n         * #getter\n         */\n        get DisplayBlurb() {\n          return LinearPileupDisplayBlurb\n        },\n        /**\n         * #method\n         */\n        renderPropsPre() {\n          const { colorTagMap, colorBy, filterBy, rpcDriverName } = self\n\n          const superProps = superRenderProps()\n          return {\n            ...superProps,\n            notReady: superProps.notReady || !self.renderReady(),\n            rpcDriverName,\n            displayModel: self,\n            colorBy: colorBy ? getSnapshot(colorBy) : undefined,\n            filterBy: JSON.parse(JSON.stringify(filterBy)),\n            filters: self.filters,\n            colorTagMap: Object.fromEntries(colorTagMap.toJSON()),\n            config: self.rendererConfig,\n            async onFeatureClick(_: unknown, featureId?: string) {\n              const session = getSession(self)\n              const { rpcManager } = session\n              try {\n                const f = featureId || self.featureIdUnderMouse\n                if (!f) {\n                  self.clearFeatureSelection()\n                } else {\n                  const sessionId = getRpcSessionId(self)\n                  const { feature } = (await rpcManager.call(\n                    sessionId,\n                    'CoreGetFeatureDetails',\n                    {\n                      featureId: f,\n                      sessionId,\n                      layoutId: getContainingView(self).id,\n                      rendererType: 'PileupRenderer',\n                    },\n                  )) as { feature: SimpleFeatureSerialized | undefined }\n\n                  if (feature) {\n                    self.selectFeature(new SimpleFeature(feature))\n                  }\n                }\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            },\n\n            onClick() {\n              self.clearFeatureSelection()\n            },\n            // similar to click but opens a menu with further options\n            async onFeatureContextMenu(_: unknown, featureId?: string) {\n              const session = getSession(self)\n              const { rpcManager } = session\n              try {\n                const f = featureId || self.featureIdUnderMouse\n                if (!f) {\n                  self.clearFeatureSelection()\n                } else {\n                  const sessionId = getRpcSessionId(self)\n                  const { feature } = (await rpcManager.call(\n                    sessionId,\n                    'CoreGetFeatureDetails',\n                    {\n                      featureId: f,\n                      sessionId,\n                      layoutId: getContainingView(self).id,\n                      rendererType: 'PileupRenderer',\n                    },\n                  )) as { feature: SimpleFeatureSerialized | undefined }\n\n                  if (feature) {\n                    self.setContextMenuFeature(new SimpleFeature(feature))\n                  }\n                }\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`)\n              }\n            },\n          }\n        },\n\n        /**\n         * #method\n         */\n        colorSchemeSubMenuItems() {\n          return [\n            {\n              label: 'Normal',\n              onClick: () => {\n                self.setColorScheme({ type: 'normal' })\n              },\n            },\n            {\n              label: 'Mapping quality',\n              onClick: () => {\n                self.setColorScheme({ type: 'mappingQuality' })\n              },\n            },\n            {\n              label: 'Strand',\n              onClick: () => {\n                self.setColorScheme({ type: 'strand' })\n              },\n            },\n            {\n              label: 'Per-base quality',\n              onClick: () => {\n                self.setColorScheme({ type: 'perBaseQuality' })\n              },\n            },\n            {\n              label: 'Per-base lettering',\n              onClick: () => {\n                self.setColorScheme({ type: 'perBaseLettering' })\n              },\n            },\n            {\n              label: 'First-of-pair strand',\n              onClick: () => {\n                self.setColorScheme({ type: 'stranded' })\n              },\n            },\n            {\n              label: 'Color by tag...',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  ColorByTagDialog,\n                  {\n                    model: self,\n                    handleClose,\n                  },\n                ])\n              },\n            },\n          ]\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n\n            {\n              label: 'Set feature height...',\n              priority: 1,\n              subMenu: [\n                {\n                  label: 'Normal',\n                  onClick: () => {\n                    self.setFeatureHeight(7)\n                    self.setNoSpacing(false)\n                  },\n                },\n                {\n                  label: 'Compact',\n                  onClick: () => {\n                    self.setFeatureHeight(2)\n                    self.setNoSpacing(true)\n                  },\n                },\n                {\n                  label: 'Manually set height',\n                  onClick: () => {\n                    getSession(self).queueDialog(handleClose => [\n                      SetFeatureHeightDialog,\n                      {\n                        model: self,\n                        handleClose,\n                      },\n                    ])\n                  },\n                },\n              ],\n            },\n            {\n              label: 'Set max height...',\n              priority: -1,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  SetMaxHeightDialog,\n                  {\n                    model: self,\n                    handleClose,\n                  },\n                ])\n              },\n            },\n            {\n              label: 'Filter by...',\n              icon: FilterListIcon,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  FilterByTagDialog,\n                  {\n                    model: self,\n                    handleClose,\n                  },\n                ])\n              },\n            },\n          ]\n        },\n      }\n    })\n    .views(self => ({\n      renderProps() {\n        return self.renderPropsPre()\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        createAutorun(\n          self,\n          async () => {\n            const view = getContainingView(self) as LGV\n            if (!self.autorunReady) {\n              return\n            }\n\n            const { colorBy, tagsReady } = self\n            const { staticBlocks } = view\n            if (colorBy?.tag && !tagsReady) {\n              const vals = await getUniqueTagValues({\n                self,\n                tag: colorBy.tag,\n                blocks: staticBlocks,\n              })\n              self.updateColorTagMap(vals)\n            }\n            self.setTagsReady(true)\n          },\n          { delay: 1000 },\n        )\n\n        // autorun synchronizes featureUnderMouse with featureIdUnderMouse\n        // asynchronously. this is needed due to how we do not serialize all\n        // features from the BAM/CRAM over the rpc\n        addDisposer(\n          self,\n          autorun(async () => {\n            const session = getSession(self)\n            try {\n              const featureId = self.featureIdUnderMouse\n              if (self.featureUnderMouse?.id() !== featureId) {\n                if (!featureId) {\n                  self.setFeatureUnderMouse(undefined)\n                } else {\n                  const sessionId = getRpcSessionId(self)\n                  const view = getContainingView(self)\n                  const { feature } = (await session.rpcManager.call(\n                    sessionId,\n                    'CoreGetFeatureDetails',\n                    {\n                      featureId,\n                      sessionId,\n                      layoutId: view.id,\n                      rendererType: 'PileupRenderer',\n                    },\n                  )) as { feature: SimpleFeatureSerialized | undefined }\n\n                  // check featureIdUnderMouse is still the same as the\n                  // feature.id that was returned e.g. that the user hasn't\n                  // moused over to a new position during the async operation\n                  // above\n                  if (\n                    feature &&\n                    self.featureIdUnderMouse === feature.uniqueId\n                  ) {\n                    self.setFeatureUnderMouse(new SimpleFeature(feature))\n                  }\n                }\n              }\n            } catch (e) {\n              console.error(e)\n              session.notifyError(`${e}`, e)\n            }\n          }),\n        )\n      },\n    }))\n}\n","import { lazy } from 'react'\nimport { types, Instance } from 'mobx-state-tree'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  readConfObject,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { getEnv, getSession, getContainingView } from '@jbrowse/core/util'\nimport { getUniqueModificationValues } from '../shared'\n\nimport { createAutorun, randomColor, modificationColors } from '../util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// icons\nimport VisibilityIcon from '@mui/icons-material/Visibility'\nimport SortIcon from '@mui/icons-material/Sort'\nimport WorkspacesIcon from '@mui/icons-material/Workspaces'\nimport ColorLensIcon from '@mui/icons-material/ColorLens'\n\n// locals\nimport { SharedLinearPileupDisplayMixin } from './SharedLinearPileupDisplayMixin'\nimport { observable } from 'mobx'\n\n// lazies\nconst SortByTagDialog = lazy(() => import('./components/SortByTagDialog'))\nconst GroupByDialog = lazy(() => import('./components/GroupByDialog'))\nconst ModificationsDialog = lazy(\n  () => import('./components/ColorByModificationsDialog'),\n)\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * #stateModel LinearPileupDisplay\n * #category display\n * extends\n * - [SharedLinearPileupDisplayMixin](../sharedlinearpileupdisplaymixin)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearPileupDisplay',\n      SharedLinearPileupDisplayMixin(configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearPileupDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        showSoftClipping: false,\n        /**\n         * #property\n         */\n        mismatchAlpha: types.maybe(types.boolean),\n\n        /**\n         * #property\n         */\n        sortedBy: types.maybe(\n          types.model({\n            type: types.string,\n            pos: types.number,\n            tag: types.maybe(types.string),\n            refName: types.string,\n            assemblyName: types.string,\n          }),\n        ),\n      }),\n    )\n    .volatile(() => ({\n      sortReady: false,\n      currSortBpPerPx: 0,\n      modificationTagMap: observable.map<string, string>({}),\n      modificationsReady: false,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setCurrSortBpPerPx(n: number) {\n        self.currSortBpPerPx = n\n      },\n      /**\n       * #action\n       */\n      updateModificationColorMap(uniqueModifications: string[]) {\n        uniqueModifications.forEach(value => {\n          if (!self.modificationTagMap.has(value)) {\n            self.modificationTagMap.set(\n              value,\n              modificationColors[value] || randomColor(),\n            )\n          }\n        })\n      },\n      /**\n       * #action\n       */\n      setModificationsReady(flag: boolean) {\n        self.modificationsReady = flag\n      },\n      /**\n       * #action\n       */\n      setSortReady(flag: boolean) {\n        self.sortReady = flag\n      },\n      /**\n       * #action\n       */\n      clearSelected() {\n        self.sortedBy = undefined\n      },\n      /**\n       * #action\n       */\n      toggleSoftClipping() {\n        self.showSoftClipping = !self.showSoftClipping\n      },\n      /**\n       * #action\n       */\n      toggleMismatchAlpha() {\n        self.mismatchAlpha = !self.mismatchAlpha\n      },\n      /**\n       * #action\n       */\n      setSortedBy(type: string, tag?: string) {\n        const { centerLineInfo } = getContainingView(self) as LGV\n        if (!centerLineInfo) {\n          return\n        }\n        const { refName, assemblyName, offset } = centerLineInfo\n        const centerBp = Math.round(offset) + 1\n\n        if (centerBp < 0 || !refName) {\n          return\n        }\n\n        self.sortReady = false\n        self.sortedBy = {\n          type,\n          pos: centerBp,\n          refName,\n          assemblyName,\n          tag,\n        }\n      },\n      /**\n       * #action\n       * overrides base from SharedLinearPileupDisplay to make sortReady false\n       * since changing feature height destroys the sort-induced layout\n       */\n      setFeatureHeight(n?: number) {\n        self.sortReady = false\n        self.featureHeight = n\n      },\n    }))\n    .actions(self => {\n      // resets the sort object and refresh whole display on reload\n      const superReload = self.reload\n\n      return {\n        /**\n         * #action\n         */\n        reload() {\n          self.clearSelected()\n          superReload()\n        },\n      }\n    })\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rendererConfig() {\n        const {\n          featureHeight,\n          noSpacing,\n          trackMaxHeight,\n          mismatchAlpha,\n          rendererTypeName,\n        } = self\n        const configBlob = getConf(self, ['renderers', rendererTypeName]) || {}\n        return self.rendererType.configSchema.create(\n          {\n            ...configBlob,\n            ...(featureHeight !== undefined ? { height: featureHeight } : {}),\n            ...(noSpacing !== undefined ? { noSpacing } : {}),\n            ...(mismatchAlpha !== undefined ? { mismatchAlpha } : {}),\n            ...(trackMaxHeight !== undefined\n              ? { maxHeight: trackMaxHeight }\n              : {}),\n          },\n          getEnv(self),\n        )\n      },\n    }))\n    .views(self => {\n      const { renderReady: superRenderReady } = self\n      return {\n        /**\n         * #getter\n         */\n        get mismatchAlphaSetting() {\n          return readConfObject(self.rendererConfig, 'mismatchAlpha')\n        },\n        /**\n         * #method\n         */\n        renderReady() {\n          const view = getContainingView(self) as LGV\n          return (\n            self.modificationsReady &&\n            self.currSortBpPerPx === view.bpPerPx &&\n            superRenderReady()\n          )\n        },\n      }\n    })\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderPropsPre: superRenderPropsPre,\n        renderProps: superRenderProps,\n        colorSchemeSubMenuItems: superColorSchemeSubMenuItems,\n      } = self\n\n      return {\n        /**\n         * #method\n         */\n        renderPropsPre() {\n          const { sortedBy, showSoftClipping, modificationTagMap } = self\n          const superProps = superRenderPropsPre()\n          return {\n            ...superProps,\n            showSoftClip: showSoftClipping,\n            sortedBy,\n            modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),\n          }\n        },\n        /**\n         * #method\n         */\n        renderProps() {\n          const { sortReady } = self\n          const result = superRenderProps()\n          return {\n            ...result,\n            notReady: result.notReady || !sortReady,\n          }\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n\n            {\n              label: 'Sort by...',\n              icon: SortIcon,\n              disabled: self.showSoftClipping,\n              subMenu: [\n                ...['Start location', 'Read strand', 'Base pair'].map(\n                  option => ({\n                    label: option,\n                    onClick: () => {\n                      self.setSortedBy(option)\n                    },\n                  }),\n                ),\n                {\n                  label: 'Sort by tag...',\n                  onClick: () => {\n                    getSession(self).queueDialog(handleClose => [\n                      SortByTagDialog,\n                      {\n                        model: self,\n                        handleClose,\n                      },\n                    ])\n                  },\n                },\n                {\n                  label: 'Clear sort',\n                  onClick: () => {\n                    self.clearSelected()\n                  },\n                },\n              ],\n            },\n            {\n              label: 'Color by...',\n              icon: ColorLensIcon,\n              subMenu: [\n                {\n                  label: 'Pair orientation',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'pairOrientation' })\n                  },\n                },\n                {\n                  label: 'Modifications or methylation',\n                  onClick: () => {\n                    getSession(self).queueDialog(doneCallback => [\n                      ModificationsDialog,\n                      {\n                        model: self,\n                        handleClose: doneCallback,\n                      },\n                    ])\n                  },\n                },\n                {\n                  label: 'Insert size',\n                  onClick: () => {\n                    self.setColorScheme({ type: 'insertSize' })\n                  },\n                },\n                ...superColorSchemeSubMenuItems(),\n              ],\n            },\n            {\n              label: 'Group by...',\n              icon: WorkspacesIcon,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  GroupByDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n            {\n              label: 'Show soft clipping',\n              icon: VisibilityIcon,\n              type: 'checkbox',\n              checked: self.showSoftClipping,\n              onClick: () => {\n                self.toggleSoftClipping()\n                // if toggling from off to on, will break sort for this track\n                // so clear it\n                if (self.showSoftClipping) {\n                  self.clearSelected()\n                }\n              },\n            },\n            {\n              label: 'Fade mismatches by quality',\n              type: 'checkbox',\n              checked: self.mismatchAlphaSetting,\n              onClick: () => {\n                self.toggleMismatchAlpha()\n              },\n            },\n          ] as const\n        },\n      }\n    })\n    .actions(self => ({\n      afterAttach() {\n        createAutorun(\n          self,\n          async () => {\n            const view = getContainingView(self) as LGV\n            if (!self.autorunReady) {\n              return\n            }\n\n            self.setCurrSortBpPerPx(view.bpPerPx)\n          },\n          { delay: 1000 },\n        )\n        createAutorun(\n          self,\n          async () => {\n            const { rpcManager } = getSession(self)\n            const view = getContainingView(self) as LGV\n            if (!self.autorunReady) {\n              return\n            }\n\n            const { sortedBy, adapterConfig, rendererType, sortReady } = self\n            const { bpPerPx } = view\n\n            if (\n              sortedBy &&\n              (!sortReady || self.currSortBpPerPx === view.bpPerPx)\n            ) {\n              const { pos, refName, assemblyName } = sortedBy\n              // render just the sorted region first\n              // @ts-expect-error\n              await self.rendererType.renderInClient(rpcManager, {\n                assemblyName,\n                regions: [\n                  {\n                    start: pos,\n                    end: pos + 1,\n                    refName,\n                    assemblyName,\n                  },\n                ],\n                adapterConfig,\n                rendererType: rendererType.name,\n                sessionId: getRpcSessionId(self),\n                layoutId: view.id,\n                timeout: 1_000_000,\n                ...self.renderPropsPre(),\n              })\n            }\n            self.setCurrSortBpPerPx(bpPerPx)\n            self.setSortReady(true)\n          },\n          { delay: 1000 },\n        )\n\n        createAutorun(self, async () => {\n          if (!self.autorunReady) {\n            return\n          }\n          const { parentTrack, colorBy } = self\n          const { staticBlocks } = getContainingView(self) as LGV\n          if (colorBy?.type === 'modifications') {\n            const adapter = getConf(parentTrack, ['adapter'])\n            const vals = await getUniqueModificationValues({\n              self,\n              adapterConfig: adapter,\n              blocks: staticBlocks,\n            })\n            self.updateModificationColorMap(vals)\n          }\n          self.setModificationsReady(true)\n        })\n      },\n    }))\n}\n\nexport type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>\nexport default stateModelFactory\n","import configSchemaFactory from './configSchema'\nimport modelFactory from './model'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nexport default function register(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearPileupDisplay',\n      displayName: 'Pileup display',\n      configSchema,\n      stateModel: modelFactory(configSchema),\n      subDisplay: { type: 'LinearAlignmentsDisplay', lowerPanel: true },\n      trackType: 'AlignmentsTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n\nexport { default as linearPileupDisplayStateModelFactory } from './model'\nexport { default as linearPileupDisplayConfigSchemaFactory } from './configSchema'\nexport { SharedLinearPileupDisplayMixin } from './SharedLinearPileupDisplayMixin'\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport BamAdapterF from './CramAdapter'\nimport CramAdapterF from './BamAdapter'\nimport HtsgetBamAdapterF from './HtsgetBamAdapter'\nimport SNPCoverageAdapterF from './SNPCoverageAdapter'\nimport SNPCoverageRendererF from './SNPCoverageRenderer'\nimport PileupRendererF from './PileupRenderer'\nimport LinearAlignmentsDisplayF from './LinearAlignmentsDisplay'\nimport LinearSNPCoverageDisplayF from './LinearSNPCoverageDisplay'\nimport LinearReadArcsDisplayF from './LinearReadArcsDisplay'\nimport LinearReadCloudDisplayF from './LinearReadCloudDisplay'\nimport AlignmentsTrackF from './AlignmentsTrack'\nimport AlignmentsFeatureWidgetF from './AlignmentsFeatureDetail'\nimport PileupRPCMethodsF from './PileupRPC'\nimport GuessAlignmentsTypesF from './GuessAlignmentsTypes'\nimport LinearPileupDisplayF from './LinearPileupDisplay'\n\nexport default class AlignmentsPlugin extends Plugin {\n  name = 'AlignmentsPlugin'\n\n  install(pluginManager: PluginManager) {\n    ;[\n      CramAdapterF,\n      BamAdapterF,\n      LinearPileupDisplayF,\n      LinearSNPCoverageDisplayF,\n      AlignmentsTrackF,\n      SNPCoverageAdapterF,\n      HtsgetBamAdapterF,\n      PileupRendererF,\n      PileupRPCMethodsF,\n      SNPCoverageRendererF,\n      LinearReadArcsDisplayF,\n      LinearReadCloudDisplayF,\n      LinearAlignmentsDisplayF,\n      AlignmentsFeatureWidgetF,\n      GuessAlignmentsTypesF,\n    ].map(f => {\n      f(pluginManager)\n    })\n  }\n}\n\nexport {\n  linearPileupDisplayStateModelFactory,\n  linearPileupDisplayConfigSchemaFactory,\n  SharedLinearPileupDisplayMixin,\n} from './LinearPileupDisplay'\nexport { type LinearPileupDisplayModel } from './LinearPileupDisplay/model'\nexport * as MismatchParser from './MismatchParser'\n","import { types, Instance } from 'mobx-state-tree'\n\nimport { orientationTypes, pairMap } from '../util'\nimport { ChainStats } from './fetchChains'\n\nexport const fillColor = {\n  color_fwd_strand_not_proper: '#ECC8C8',\n  color_rev_strand_not_proper: '#BEBED8',\n  color_fwd_strand: '#EC8B8B',\n  color_rev_strand: '#8F8FD8',\n  color_fwd_missing_mate: '#D11919',\n  color_rev_missing_mate: '#1919D1',\n  color_fwd_diff_chr: '#000',\n  color_rev_diff_chr: '#969696',\n  color_pair_lr: '#c8c8c8',\n  color_pair_rr: 'navy',\n  color_pair_rl: 'teal',\n  color_pair_ll: 'green',\n  color_nostrand: '#c8c8c8',\n  color_interchrom: 'purple',\n  color_longinsert: 'red',\n  color_shortinsert: 'pink',\n  color_unknown: 'grey',\n}\n\n// manually calculated by running\n// const color = require('color')\n// Object.fromEntries(Object.entries(fillColor).map(([key,val])=>{\n//   return [key, color(val).darken('0.3').hex()]\n// }))\n// this avoids (expensive) use of Color module at runtime\nexport const strokeColor = {\n  color_fwd_strand_not_proper: '#CA6767',\n  color_rev_strand_not_proper: '#7272AA',\n  color_fwd_strand: '#DC2A2A',\n  color_rev_strand: '#4141BA',\n  color_fwd_missing_mate: '#921111',\n  color_rev_missing_mate: '#111192',\n  color_fwd_diff_chr: '#000000',\n  color_rev_diff_chr: '#696969',\n  color_pair_lr: '#8C8C8C',\n  color_pair_rr: '#00005A',\n  color_pair_rl: '#005A5A',\n  color_pair_ll: '#005A00',\n  color_nostrand: '#8C8C8C',\n  color_interchrom: '#5A005A',\n  color_longinsert: '#B30000',\n  color_shortinsert: '#FF3A5C',\n  color_unknown: 'grey',\n}\n\nexport function getPairedInsertSizeColor(\n  f1: { refName: string; tlen?: number },\n  f2: { refName: string },\n  stats?: ChainStats,\n) {\n  const sameRef = f1.refName === f2.refName\n  const tlen = Math.abs(f1.tlen || 0)\n  if (sameRef && tlen > (stats?.upper || 0)) {\n    return [fillColor.color_longinsert, strokeColor.color_longinsert] as const\n  } else if (sameRef && tlen < (stats?.lower || 0)) {\n    return [fillColor.color_shortinsert, strokeColor.color_shortinsert] as const\n  } else if (!sameRef) {\n    return [fillColor.color_interchrom, strokeColor.color_interchrom] as const\n  } else {\n    return undefined\n  }\n}\n\nconst defaultColor = [fillColor.color_unknown, fillColor.color_unknown] as const\n\n// return color scheme with both insert size and orientation coloring,\n// prioritzing orientation coloring\nexport function getPairedInsertSizeAndOrientationColor(\n  f1: { refName: string; pair_orientation?: string; tlen?: number },\n  f2: { refName: string },\n  stats?: ChainStats,\n) {\n  return (\n    getPairedOrientationColorOrDefault(f1) ||\n    getPairedInsertSizeColor(f1, f2, stats) ||\n    defaultColor\n  )\n}\n\nexport function getPairedOrientationColorOrDefault(f: {\n  pair_orientation?: string\n}) {\n  const type = orientationTypes.fr\n  const r = type[f.pair_orientation || ''] as keyof typeof pairMap\n  const type2 = pairMap[r] as keyof typeof fillColor\n  return r === 'LR'\n    ? undefined\n    : ([fillColor[type2], strokeColor[type2]] as const)\n}\n\nexport function getPairedOrientationColor(f: { pair_orientation?: string }) {\n  return getPairedOrientationColorOrDefault(f) || defaultColor\n}\n\nexport interface ExtraColorBy {\n  custom?: Record<string, string>\n}\n\nexport const ColorByModel = types.maybe(\n  types.model({\n    type: types.string,\n    tag: types.maybe(types.string),\n    extra: types.frozen(),\n  }),\n)\n\nexport type IColorByModel = Instance<typeof ColorByModel>\n","import { types, IAnyStateTreeNode } from 'mobx-state-tree'\nimport { BlockSet } from '@jbrowse/core/util/blockTypes'\nimport { getSession } from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nexport async function getUniqueTagValues({\n  self,\n  tag,\n  blocks,\n  opts,\n}: {\n  self: IAnyStateTreeNode & { adapterConfig: AnyConfigurationModel }\n  tag: string\n  blocks: BlockSet\n  opts?: {\n    headers?: Record<string, string>\n    signal?: AbortSignal\n    filters: string[]\n  }\n}) {\n  const { rpcManager } = getSession(self)\n  const { adapterConfig } = self\n  const sessionId = getRpcSessionId(self)\n  const values = await rpcManager.call(\n    getRpcSessionId(self),\n    'PileupGetGlobalValueForTag',\n    {\n      adapterConfig,\n      tag,\n      sessionId,\n      regions: blocks.contentBlocks,\n      ...opts,\n    },\n  )\n  return values as string[]\n}\n\ntype Track = IAnyStateTreeNode & { configuration: AnyConfigurationModel }\n\nexport async function getUniqueModificationValues({\n  self,\n  adapterConfig,\n  blocks,\n  opts,\n}: {\n  self: IAnyStateTreeNode & {\n    parentTrack: Track\n  }\n  adapterConfig: AnyConfigurationModel\n  blocks: BlockSet\n  opts?: {\n    headers?: Record<string, string>\n    signal?: AbortSignal\n    filters: string[]\n  }\n}) {\n  const { rpcManager } = getSession(self)\n  const sessionId = getRpcSessionId(self)\n  const values = await rpcManager.call(\n    sessionId,\n    'PileupGetVisibleModifications',\n    {\n      adapterConfig,\n      sessionId,\n      regions: blocks.contentBlocks,\n      ...opts,\n    },\n  )\n  return values as string[]\n}\n\nexport const FilterModel = types.model({\n  flagInclude: types.optional(types.number, 0),\n  flagExclude: types.optional(types.number, 1540),\n  readName: types.maybe(types.string),\n  tagFilter: types.maybe(\n    types.model({\n      tag: types.string,\n      value: types.maybe(types.string),\n    }),\n  ),\n})\n\nexport interface IFilter {\n  flagExclude: number\n  flagInclude: number\n  readName?: string\n  tagFilter?: {\n    tag: string\n    value?: string\n  }\n}\n","import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Feature, AugmentedRegion } from '@jbrowse/core/util'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\nimport { IAnyStateTreeNode, addDisposer, isAlive } from 'mobx-state-tree'\nimport { IAutorunOptions, autorun } from 'mobx'\n\n// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and\n// BAM does not\nexport function getTag(feature: Feature, tag: string) {\n  const tags = feature.get('tags')\n  return tags !== undefined ? tags[tag] : feature.get(tag)\n}\n\n// use fallback alt tag, used in situations where upper case/lower case tags\n// exist e.g. Mm/MM for base modifications\nexport function getTagAlt(feature: Feature, tag: string, alt: string) {\n  return getTag(feature, tag) ?? getTag(feature, alt)\n}\n\n// orientation definitions from igv.js, see also\n// https://software.broadinstitute.org/software/igv/interpreting_pair_orientations\nexport const orientationTypes = {\n  fr: {\n    F1R2: 'LR',\n    F2R1: 'LR',\n\n    F1F2: 'LL',\n    F2F1: 'LL',\n\n    R1R2: 'RR',\n    R2R1: 'RR',\n\n    R1F2: 'RL',\n    R2F1: 'RL',\n  } as Record<string, string>,\n\n  rf: {\n    R1F2: 'LR',\n    R2F1: 'LR',\n\n    R1R2: 'LL',\n    R2R1: 'LL',\n\n    F1F2: 'RR',\n    F2F1: 'RR',\n\n    F1R2: 'RL',\n    F2R1: 'RL',\n  } as Record<string, string>,\n\n  ff: {\n    F2F1: 'LR',\n    R1R2: 'LR',\n\n    F2R1: 'LL',\n    R1F2: 'LL',\n\n    R2F1: 'RR',\n    F1R2: 'RR',\n\n    R2R1: 'RL',\n    F1F2: 'RL',\n  } as Record<string, string>,\n}\n\nexport const pairMap = {\n  LR: 'color_pair_lr',\n  LL: 'color_pair_ll',\n  RR: 'color_pair_rr',\n  RL: 'color_pair_rl',\n} as const\n\nexport function getColorWGBS(strand: number, base: string) {\n  if (strand === 1) {\n    if (base === 'C') {\n      return '#f00'\n    }\n    if (base === 'T') {\n      return '#00f'\n    }\n  } else if (strand === -1) {\n    if (base === 'G') {\n      return '#f00'\n    }\n    if (base === 'A') {\n      return '#00f'\n    }\n  }\n  return '#888'\n}\n\n// fetches region sequence augmenting by +/- 1bp for CpG on either side of\n// requested region\nexport async function fetchSequence(\n  region: AugmentedRegion,\n  adapter: BaseFeatureDataAdapter,\n) {\n  const { start, end, originalRefName, refName } = region\n\n  const feats = await firstValueFrom(\n    adapter\n      .getFeatures({\n        ...region,\n        refName: originalRefName || refName,\n        end: end + 1,\n        start: Math.max(0, start - 1),\n      })\n      .pipe(toArray()),\n  )\n  return feats[0]?.get('seq')\n}\n\n// has to check underlying C-G (aka CpG) on the reference sequence\nexport function shouldFetchReferenceSequence(type?: string) {\n  return type === 'methylation'\n}\n\n// adapted from IGV\n// https://github.com/igvteam/igv/blob/e803e3af2d8c9ea049961dfd4628146bdde9a574/src/main/java/org/broad/igv/sam/mods/BaseModificationColors.java#L27\nexport const modificationColors = {\n  m: 'rgb(255,0,0)',\n  h: 'rgb(11, 132, 165)',\n  o: 'rgb(111, 78, 129)',\n  f: 'rgb(246, 200, 95)',\n  c: 'rgb(157, 216, 102)',\n  g: 'rgb(255, 160, 86)',\n  e: 'rgb(141, 221, 208)',\n  b: 'rgb(202, 71, 47)',\n} as Record<string, string>\n\ntype DisplayModel = IAnyStateTreeNode & { setError: (arg: unknown) => void }\n\nexport function createAutorun(\n  self: DisplayModel,\n  cb: () => Promise<void>,\n  opts?: IAutorunOptions,\n) {\n  addDisposer(\n    self,\n    autorun(async () => {\n      try {\n        await cb()\n      } catch (e) {\n        if (isAlive(self)) {\n          self.setError(e)\n        }\n      }\n    }, opts),\n  )\n}\nexport function randomColor() {\n  return `hsl(${Math.random() * 200}, 50%, 50%)`\n}\n","import { useState, useEffect } from 'react'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { clamp } from '@jbrowse/core/util'\n\n// locals\nimport { LayoutRecord } from './model'\n\ntype LGV = LinearGenomeViewModel\n\ninterface Display {\n  height: number\n  scrollTop: number\n  SNPCoverageDisplay?: { height: number }\n}\n\ninterface Track {\n  displays: Display[]\n}\n\nconst [, TOP, , BOTTOM] = [0, 1, 2, 3] as const\n\nfunction cheight(chunk: LayoutRecord) {\n  return chunk[BOTTOM] - chunk[TOP]\n}\n\nexport function heightFromSpecificLevel(\n  views: LGV[],\n  trackId: string,\n  level: number,\n  getYPosOverride?: (trackId: string, level: number) => number,\n) {\n  return getYPosOverride\n    ? getYPosOverride(trackId, level)\n    : views[level]!.trackRefs[trackId]?.getBoundingClientRect().top || 0\n}\n\nexport function getPxFromCoordinate(view: LGV, refName: string, coord: number) {\n  return (view.bpToPx({ refName, coord })?.offsetPx || 0) - view.offsetPx\n}\n\n// get's the yposition of a layout record in a track\nexport function yPos(\n  trackId: string,\n  level: number,\n  views: LGV[],\n  tracks: Track[],\n  c: LayoutRecord,\n  getYPosOverride?: (trackId: string, level: number) => number,\n) {\n  const display = tracks[level]!.displays[0]!\n  const min = 0\n  const max = display.height\n  let offset = 0\n  const { SNPCoverageDisplay } = display\n  if (SNPCoverageDisplay) {\n    offset = SNPCoverageDisplay.height\n  }\n  const yPos = getYPosOverride ? 0 : display.scrollTop\n  return (\n    clamp(c[TOP] - yPos + cheight(c) / 2 + offset, min, max) +\n    heightFromSpecificLevel(views, trackId, level, getYPosOverride) +\n    display.scrollTop\n  )\n}\n\n// we combo a useEffect and useState combo to force rerender on snap changing.\n// the setup of this being a useEffect+useState makes it re-render once the\n// useEffect is called, which is generally the \"next frame\". If we removed the\n// below use\nexport const useNextFrame = (variable: unknown) => {\n  const [, setNextFrameState] = useState<unknown>()\n  useEffect(() => {\n    setNextFrameState(variable)\n  }, [variable])\n}\n\n// https://stackoverflow.com/a/49186706/2129219 the array-intersection package\n// on npm has a large kb size, and we are just intersecting open track ids so\n// simple is better\nexport function intersect<T>(\n  cb: (l: T) => string,\n  a1: T[] = [],\n  a2: T[] = [],\n  ...rest: T[][]\n): T[] {\n  const ids = new Set(a2.map(elt => cb(elt)))\n  const a12 = a1.filter(value => ids.has(cb(value)))\n  return rest.length === 0 ? a12 : intersect(cb, a12, ...rest)\n}\n","function findCircleIntersectionX(\n  y: number,\n  cx: number,\n  cy: number,\n  r: number,\n  resultArray: [number, number][],\n) {\n  const d = Math.abs(y - cy)\n  if (d > r) {\n    return\n  }\n  if (d === r) {\n    resultArray.push([cx, y])\n  }\n  const solution = Math.sqrt(r * r - d * d)\n  resultArray.push([cx - solution, y], [cx + solution, y])\n}\n\nfunction findCircleIntersectionY(\n  x: number,\n  cx: number,\n  cy: number,\n  r: number,\n  resultArray: [number, number][],\n) {\n  const d = Math.abs(x - cx)\n  if (d > r) {\n    return\n  }\n  if (d === r) {\n    resultArray.push([x, cy])\n  }\n  const solution = Math.sqrt(r * r - d * d)\n  resultArray.push([x, cy - solution], [x, cy + solution])\n}\n\nfunction cartesianToTheta(x: number, y: number) {\n  let theta = (Math.atan(y / x) + 2 * Math.PI) % (2 * Math.PI)\n  if (x < 0) {\n    if (y <= 0) {\n      theta += Math.PI\n    } else {\n      theta -= Math.PI\n    }\n  }\n  return theta\n}\n\nexport function cartesianToPolar(x: number, y: number) {\n  const rho = Math.sqrt(x * x + y * y)\n  if (rho === 0) {\n    return [0, 0] as const\n  }\n  const theta = cartesianToTheta(x, y)\n  return [rho, theta] as const\n}\n\nconst twoPi = 2 * Math.PI\nexport function thetaRangesOverlap(\n  r1start: number,\n  r1length: number,\n  r2start: number,\n  r2length: number,\n) {\n  if (r1length <= 0 || r2length <= 0) {\n    return false\n  }\n  if (r1length + 0.0001 >= twoPi || r2length + 0.0001 >= twoPi) {\n    return true\n  }\n\n  // put both range starts between 2π and 4π\n  r1start = (((r1start % twoPi) + twoPi) % twoPi) + twoPi\n  r2start = (((r2start % twoPi) + twoPi) % twoPi) + twoPi\n\n  if (r1start < r2start + r2length && r1start + r1length > r2start) {\n    return true\n  }\n\n  // move r2 2π to the left and check\n  r2start -= twoPi\n  if (r1start < r2start + r2length && r1start + r1length > r2start) {\n    return true\n  }\n\n  // move it 2π to the right and check\n  r2start += twoPi + twoPi\n  return r1start < r2start + r2length && r1start + r1length > r2start\n}\n\n// return which arc range has any part of the circle visible in the viewport\nexport function viewportVisibleSection(\n  viewSides: [number, number, number, number],\n  circleCenter: [number, number],\n  circleRadius: number,\n) {\n  let [viewL, viewR, viewT, viewB] = viewSides\n  const [cx, cy] = circleCenter\n\n  // transform coordinate system to center of circle\n  viewL -= cx\n  viewR -= cx\n  viewT -= cy\n  viewB -= cy\n\n  const centerIsInsideViewport =\n    viewL < 0 && viewR > 0 && viewT < 0 && viewB > 0\n\n  if (centerIsInsideViewport) {\n    const vertices = [\n      [viewL, viewT],\n      [viewR, viewT],\n      [viewL, viewB],\n      [viewR, viewB],\n    ] as const\n    let maxRho = Number.NEGATIVE_INFINITY\n    for (const [x, y] of vertices) {\n      const rho = Math.sqrt(x * x + y * y)\n      if (rho > maxRho) {\n        maxRho = rho\n      }\n    }\n    return {\n      rho: [0, Math.min(circleRadius, maxRho)] as [number, number],\n      theta: [0, 2 * Math.PI] as [number, number],\n    }\n  }\n  // const viewportCompletelyContainsCircle =\n  //   circleCenter[0] - viewL >= circleRadius &&\n  //   viewR - circleCenter[0] >= circleRadius &&\n  //   circleCenter[1] - viewT >= circleRadius &&\n  //   viewB - circleCenter[1] >= circleRadius\n\n  // if (viewportCompletelyContainsCircle) {\n  //   return [0, 2 * Math.PI]\n  // }\n\n  // const distToCenterSquared = ([x, y]) => {\n  //   const [cx, cy] = circleCenter\n  //   const sq = n => n * n\n  //   return sq(x - cx) + sq(y - cy)\n  // }\n  // const circleRadiusSquared = circleRadius * circleRadius\n\n  // const tlInside = distToCenterSquared([viewL, viewT]) <= circleRadiusSquared\n  // const trInside = distToCenterSquared([viewR, viewT]) <= circleRadiusSquared\n  // const blInside = distToCenterSquared([viewL, viewB]) <= circleRadiusSquared\n  // const brInside = distToCenterSquared([viewR, viewB]) <= circleRadiusSquared\n\n  // const noIntersection = !tlInside && !trInside && !blInside && !brInside\n  // if (noIntersection) return undefined\n\n  // const circleCompletelyContainsViewport =\n  //   tlInside && trInside && blInside && brInside\n  // if (circleCompletelyContainsViewport) {\n  //   // viewport is in the circle, but the center is not in it, so take max\n  //   // and min of thetas to the center\n  //   const thetas = [\n  //     Math.atan(viewT / viewL),\n  //     Math.atan(viewT / viewR),\n  //     Math.atan(viewB / viewL),\n  //     Math.atan(viewB / viewR),\n  //   ]\n\n  //   return [Math.min(...thetas), Math.max(...thetas)]\n  // }\n\n  // if we get here, the viewport is partly in, partly out of the circle\n\n  // const viewLIntersects = Math.abs(viewL - circleCenter[0]) <= circleRadius\n  // const viewRIntersects = Math.abs(viewR - circleCenter[0]) <= circleRadius\n  // const viewTIntersects = Math.abs(viewT - circleCenter[1]) <= circleRadius\n  // const viewBIntersects = Math.abs(viewB - circleCenter[1]) <= circleRadius\n\n  // const numIntersectingSides =\n  //   Number(viewLIntersects) +\n  //   Number(viewRIntersects) +\n  //   Number(viewTIntersects) +\n  //   Number(viewBIntersects)\n\n  // if (numIntersectingSides === 4) return [0, 2 * Math.PI]\n  // if (numIntersectingSides === 3) {\n  //   // TODO calculate the thetas of the\n  // } else if (numIntersectingSides === 2) {\n  //   // TODO calculate the thetas of the 2 intersection points\n  // } else if (numIntersectingSides === 1) {\n  //   // TODO calculate the thetas of the 1-2 intersection points of the line, and the angle between\n  // }\n\n  // make a list of vertices-of-interest that lie inside both shapes to examine\n  // to determine the range covered by their intersection\n\n  // transform coordinates to have the circle as the origin and find the intersections\n  // of the circle and the view rectangle\n  const vertices: [number, number][] = [\n    [viewL, viewT],\n    [viewR, viewT],\n    [viewL, viewB],\n    [viewR, viewB],\n  ]\n  findCircleIntersectionY(viewL, 0, 0, circleRadius, vertices)\n  findCircleIntersectionY(viewR, 0, 0, circleRadius, vertices)\n  findCircleIntersectionX(viewT, 0, 0, circleRadius, vertices)\n  findCircleIntersectionX(viewB, 0, 0, circleRadius, vertices)\n\n  // for each edge, also look at the closest point to center if it is inside the circle\n  if (-viewL < circleRadius) {\n    vertices.push([viewL, 0])\n  }\n  if (viewR < circleRadius) {\n    vertices.push([viewR, 0])\n  }\n  if (-viewT < circleRadius) {\n    vertices.push([0, viewT])\n  }\n  if (viewB < circleRadius) {\n    vertices.push([0, viewB])\n  }\n\n  // const verticesOriginal = vertices.map(([x, y]) => [x + cx, y + cy])\n\n  // now convert them all to polar and take the max and min of rho and theta\n\n  // const viewportCenterTheta = cartesianToTheta(viewR + viewL, viewT + viewB)\n  const reflect = viewL >= 0 ? -1 : 1\n  // viewportCenterTheta < Math.PI / 2 || viewportCenterTheta > 1.5 * Math.PI\n  //   ? -1\n  //   : 1\n  let rhoMin = Number.POSITIVE_INFINITY\n  let rhoMax = Number.NEGATIVE_INFINITY\n  let thetaMin = Number.POSITIVE_INFINITY\n  let thetaMax = Number.NEGATIVE_INFINITY\n  for (const [vx, vy] of vertices) {\n    // ignore vertex if outside the viewport\n    if (vx >= viewL && vx <= viewR && vy >= viewT && vy <= viewB) {\n      const [rho, theta] = cartesianToPolar(vx * reflect, vy * reflect)\n      // ignore vertex if outside the circle\n      if (rho <= circleRadius + 0.001) {\n        // ignore theta if rho is 0\n        if (theta < thetaMin && rho > 0.0001) {\n          thetaMin = theta\n        }\n        if (theta > thetaMax && rho > 0.0001) {\n          thetaMax = theta\n        }\n        if (rho < rhoMin) {\n          rhoMin = rho\n        }\n        if (rho > rhoMax) {\n          rhoMax = rho\n        }\n      }\n    }\n  }\n\n  if (reflect === -1) {\n    thetaMin += Math.PI\n    thetaMax += Math.PI\n  }\n\n  if (thetaMin > 2 * Math.PI && thetaMax > 2 * Math.PI) {\n    thetaMin -= 2 * Math.PI\n    thetaMax -= 2 * Math.PI\n  }\n\n  return {\n    rho: [rhoMin, Math.min(circleRadius, rhoMax)] as [number, number],\n    theta: [thetaMin, thetaMax] as [number, number],\n  }\n}\n","import { polarToCartesian, assembleLocString, Region } from '@jbrowse/core/util'\nimport { thetaRangesOverlap } from './viewportVisibleRegion'\n\nexport interface SliceElidedRegion {\n  elided: true\n  widthBp: number\n  regions: Region[]\n}\n\nexport interface SliceNonElidedRegion {\n  elided: false\n  widthBp: number\n  start: number\n  end: number\n  refName: string\n  assemblyName: string\n}\nexport type SliceRegion = SliceNonElidedRegion | SliceElidedRegion\n\nexport class Slice {\n  key: string\n\n  startRadians: number\n\n  endRadians: number\n\n  bpPerRadian: number\n\n  flipped: boolean\n\n  constructor(\n    view: { bpPerRadian: number },\n    public region: SliceRegion,\n    public offsetRadians: number,\n    public radianWidth: number,\n  ) {\n    const { bpPerRadian } = view\n    this.key =\n      'regions' in region\n        ? JSON.stringify(region.regions)\n        : assembleLocString(region)\n    this.bpPerRadian = bpPerRadian\n    this.flipped = false\n\n    this.startRadians = offsetRadians\n    this.endRadians = region.widthBp / this.bpPerRadian + offsetRadians\n    Object.freeze(this)\n  }\n\n  bpToXY(bp: number, radiusPx: number) {\n    let offsetBp: number | undefined\n    if (this.region.elided) {\n      offsetBp = this.region.widthBp / 2\n    } else if (this.flipped) {\n      offsetBp = this.region.end - bp\n    } else {\n      offsetBp = bp - this.region.start\n    }\n    const totalRadians = offsetBp / this.bpPerRadian + this.offsetRadians\n    return polarToCartesian(radiusPx, totalRadians)\n  }\n\n  toJSON() {\n    return Object.fromEntries(Object.entries(this))\n  }\n}\n\nfunction calculateStaticSlices(self: {\n  elidedRegions: readonly SliceRegion[]\n  bpPerRadian: number\n  spacingPx: number\n  pxPerRadian: number\n}) {\n  const slices = []\n  let currentRadianOffset = 0\n  const { bpPerRadian, spacingPx, pxPerRadian } = self\n  for (const region of self.elidedRegions) {\n    const radianWidth = region.widthBp / bpPerRadian + spacingPx / pxPerRadian\n    slices.push(new Slice(self, region, currentRadianOffset, radianWidth))\n    currentRadianOffset += radianWidth\n  }\n  return slices\n}\n\nfunction sliceIsVisible(\n  self: { offsetRadians: number; visibleSection: { theta: [number, number] } },\n  slice: Slice,\n) {\n  const {\n    theta: [visibleThetaMin, visibleThetaMax],\n  } = self.visibleSection\n\n  return thetaRangesOverlap(\n    slice.offsetRadians + self.offsetRadians,\n    slice.radianWidth,\n    visibleThetaMin,\n    visibleThetaMax - visibleThetaMin,\n  )\n}\n\nexport { calculateStaticSlices, sliceIsVisible }\n","import React, { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  cast,\n  getRoot,\n  resolveIdentifier,\n  types,\n  SnapshotOrInstance,\n  Instance,\n} from 'mobx-state-tree'\nimport { Region } from '@jbrowse/core/util/types/mst'\nimport { transaction } from 'mobx'\nimport { saveAs } from 'file-saver'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  clamp,\n  isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\nimport PhotoCameraIcon from '@mui/icons-material/PhotoCamera'\n\n// locals\nimport { calculateStaticSlices, sliceIsVisible, SliceRegion } from './slices'\nimport { viewportVisibleSection } from './viewportVisibleRegion'\n\n// lazies\nconst ExportSvgDialog = lazy(() => import('../components/ExportSvgDialog'))\n\nexport interface ExportSvgOptions {\n  rasterizeLayers?: boolean\n  filename?: string\n  Wrapper?: React.FC<{ children: React.ReactNode }>\n  themeName?: string\n}\n\n/**\n * #stateModel CircularView\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nfunction stateModelFactory(pluginManager: PluginManager) {\n  const minHeight = 40\n  const minWidth = 100\n  const defaultHeight = 400\n  return types\n    .compose(\n      'CircularView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('CircularView'),\n        /**\n         * #property\n         * similar to offsetPx in linear genome view\n         */\n        offsetRadians: -Math.PI / 2,\n        /**\n         * #property\n         */\n        bpPerPx: 200,\n        /**\n         * #property\n         */\n        tracks: types.array(\n          pluginManager.pluggableMstType('track', 'stateModel'),\n        ),\n\n        /**\n         * #property\n         */\n        hideVerticalResizeHandle: false,\n        /**\n         * #property\n         */\n        hideTrackSelectorButton: false,\n        /**\n         * #property\n         */\n        lockedFitToWindow: true,\n        /**\n         * #property\n         */\n        disableImportForm: false,\n\n        /**\n         * #property\n         */\n        height: types.optional(\n          types.refinement('trackHeight', types.number, n => n >= minHeight),\n          defaultHeight,\n        ),\n        /**\n         * #property\n         */\n        displayedRegions: types.array(Region),\n        /**\n         * #property\n         */\n        scrollX: 0,\n        /**\n         * #property\n         */\n        scrollY: 0,\n\n        /**\n         * #property\n         */\n        minimumRadiusPx: 25,\n        /**\n         * #property\n         */\n        spacingPx: 10,\n        /**\n         * #property\n         */\n        paddingPx: 80,\n        /**\n         * #property\n         */\n        lockedPaddingPx: 100,\n        /**\n         * #property\n         */\n        minVisibleWidth: 6,\n        /**\n         * #property\n         */\n        minimumBlockWidth: 20,\n        /**\n         * #property\n         */\n        trackSelectorType: 'hierarchical',\n      }),\n    )\n    .volatile(() => ({\n      volatileWidth: undefined as number | undefined,\n      error: undefined as unknown,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get width() {\n        if (self.volatileWidth === undefined) {\n          throw new Error(\n            'wait for view to be initialized first before accessing width',\n          )\n        }\n        return self.volatileWidth\n      },\n\n      /**\n       * #getter\n       */\n      get visibleSection() {\n        const { scrollX, scrollY, width, height } = self\n        return viewportVisibleSection(\n          [scrollX, scrollX + width, scrollY, scrollY + height],\n          this.centerXY,\n          this.radiusPx,\n        )\n      },\n      /**\n       * #getter\n       */\n      get circumferencePx() {\n        let elidedBp = 0\n\n        for (const r of this.elidedRegions) {\n          elidedBp += r.widthBp\n        }\n        return (\n          elidedBp / self.bpPerPx + self.spacingPx * this.elidedRegions.length\n        )\n      },\n      /**\n       * #getter\n       */\n      get radiusPx() {\n        return this.circumferencePx / (2 * Math.PI)\n      },\n      /**\n       * #getter\n       */\n      get bpPerRadian() {\n        return self.bpPerPx * this.radiusPx\n      },\n      /**\n       * #getter\n       */\n      get pxPerRadian() {\n        return this.radiusPx\n      },\n      /**\n       * #getter\n       */\n      get centerXY(): [number, number] {\n        return [this.radiusPx + self.paddingPx, this.radiusPx + self.paddingPx]\n      },\n      /**\n       * #getter\n       */\n      get totalBp() {\n        let total = 0\n        for (const region of self.displayedRegions) {\n          total += region.end - region.start\n        }\n        return total\n      },\n      /**\n       * #getter\n       */\n      get maximumRadiusPx() {\n        return self.lockedFitToWindow\n          ? Math.min(self.width, self.height) / 2 - self.lockedPaddingPx\n          : 1000000\n      },\n      /**\n       * #getter\n       */\n      get maxBpPerPx() {\n        const minCircumferencePx = 2 * Math.PI * self.minimumRadiusPx\n        return this.totalBp / minCircumferencePx\n      },\n      /**\n       * #getter\n       */\n      get minBpPerPx() {\n        // min depends on window dimensions, clamp between old min(0.01) and max\n        const maxCircumferencePx = 2 * Math.PI * this.maximumRadiusPx\n        return clamp(\n          this.totalBp / maxCircumferencePx,\n          0.0000000001,\n          this.maxBpPerPx,\n        )\n      },\n      /**\n       * #getter\n       */\n      get atMaxBpPerPx() {\n        return self.bpPerPx >= this.maxBpPerPx\n      },\n      /**\n       * #getter\n       */\n      get atMinBpPerPx() {\n        return self.bpPerPx <= this.minBpPerPx\n      },\n      /**\n       * #getter\n       */\n      get tooSmallToLock() {\n        return this.minBpPerPx <= 0.0000000001\n      },\n      /**\n       * #getter\n       */\n      get figureDimensions(): [number, number] {\n        return [\n          this.radiusPx * 2 + 2 * self.paddingPx,\n          this.radiusPx * 2 + 2 * self.paddingPx,\n        ]\n      },\n      /**\n       * #getter\n       */\n      get figureWidth() {\n        return this.figureDimensions[0]\n      },\n      /**\n       * #getter\n       */\n      get figureHeight() {\n        return this.figureDimensions[1]\n      },\n      /**\n       * #getter\n       * this is displayedRegions, post-processed to elide regions that are too\n       * small to see reasonably\n       */\n      get elidedRegions() {\n        const visible: SliceRegion[] = []\n        self.displayedRegions.forEach(region => {\n          const widthBp = region.end - region.start\n          const widthPx = widthBp / self.bpPerPx\n          if (widthPx < self.minVisibleWidth) {\n            // too small to see, collapse into a single elision region\n            const lastVisible = visible.at(-1)\n            if (lastVisible?.elided) {\n              lastVisible.regions.push({ ...region })\n              lastVisible.widthBp += widthBp\n            } else {\n              visible.push({\n                elided: true,\n                widthBp,\n                regions: [{ ...region }],\n              })\n            }\n          } else {\n            // big enough to see, display it\n            visible.push({ ...region, widthBp, elided: false })\n          }\n        })\n\n        // remove any single-region elisions\n        for (let i = 0; i < visible.length; i += 1) {\n          const v = visible[i]!\n          if (v.elided && v.regions.length === 1) {\n            visible[i] = { ...v, ...v.regions[0]!, elided: false }\n          }\n        }\n        return visible\n      },\n      /**\n       * #getter\n       */\n      get assemblyNames() {\n        const assemblyNames: string[] = []\n        self.displayedRegions.forEach(displayedRegion => {\n          if (!assemblyNames.includes(displayedRegion.assemblyName)) {\n            assemblyNames.push(displayedRegion.assemblyName)\n          }\n        })\n        return assemblyNames\n      },\n      /**\n       * #getter\n       */\n      get initialized() {\n        const { assemblyManager } = getSession(self)\n        return (\n          self.volatileWidth !== undefined &&\n          this.assemblyNames.every(a => assemblyManager.get(a)?.initialized)\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get staticSlices() {\n        return calculateStaticSlices(self)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get visibleStaticSlices() {\n        return self.staticSlices.filter(s => sliceIsVisible(self, s))\n      },\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.volatileWidth = Math.max(newWidth, minWidth)\n        return self.volatileWidth\n      },\n      /**\n       * #action\n       */\n      setHeight(newHeight: number) {\n        self.height = Math.max(newHeight, minHeight)\n        return self.height\n      },\n      /**\n       * #action\n       */\n      resizeHeight(distance: number) {\n        const oldHeight = self.height\n        const newHeight = this.setHeight(self.height + distance)\n        this.setModelViewWhenAdjust(!self.tooSmallToLock)\n        return newHeight - oldHeight\n      },\n      /**\n       * #action\n       */\n      resizeWidth(distance: number) {\n        const oldWidth = self.width\n        const newWidth = this.setWidth(self.width + distance)\n        this.setModelViewWhenAdjust(!self.tooSmallToLock)\n        return newWidth - oldWidth\n      },\n      /**\n       * #action\n       */\n      rotateClockwiseButton() {\n        this.rotateClockwise(Math.PI / 6)\n      },\n\n      /**\n       * #action\n       */\n      rotateCounterClockwiseButton() {\n        this.rotateCounterClockwise(Math.PI / 6)\n      },\n\n      /**\n       * #action\n       */\n      rotateClockwise(distance = 0.17) {\n        self.offsetRadians += distance\n      },\n\n      /**\n       * #action\n       */\n      rotateCounterClockwise(distance = 0.17) {\n        self.offsetRadians -= distance\n      },\n\n      /**\n       * #action\n       */\n      zoomInButton() {\n        this.setBpPerPx(self.bpPerPx / 1.4)\n      },\n\n      /**\n       * #action\n       */\n      zoomOutButton() {\n        this.setBpPerPx(self.bpPerPx * 1.4)\n      },\n\n      /**\n       * #action\n       */\n      setBpPerPx(newVal: number) {\n        self.bpPerPx = clamp(newVal, self.minBpPerPx, self.maxBpPerPx)\n      },\n\n      /**\n       * #action\n       */\n      setModelViewWhenAdjust(secondCondition: boolean) {\n        if (self.lockedFitToWindow && secondCondition) {\n          this.setBpPerPx(self.minBpPerPx)\n        }\n      },\n\n      /**\n       * #action\n       */\n      setDisplayedRegions(regions: SnapshotOrInstance<typeof Region>[]) {\n        const previouslyEmpty = self.displayedRegions.length === 0\n        self.displayedRegions = cast(regions)\n\n        if (previouslyEmpty) {\n          this.setBpPerPx(self.minBpPerPx)\n        } else {\n          this.setBpPerPx(self.bpPerPx)\n        }\n      },\n\n      /**\n       * #action\n       */\n      activateTrackSelector() {\n        if (self.trackSelectorType === 'hierarchical') {\n          const session = getSession(self)\n          if (isSessionModelWithWidgets(session)) {\n            const selector = session.addWidget(\n              'HierarchicalTrackSelectorWidget',\n              'hierarchicalTrackSelector',\n              { view: self },\n            )\n            session.showWidget(selector)\n            return selector\n          }\n        }\n        throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n      },\n\n      /**\n       * #action\n       */\n      toggleTrack(trackId: string) {\n        const hiddenCount = this.hideTrack(trackId)\n        if (!hiddenCount) {\n          this.showTrack(trackId)\n          return true\n        }\n        return false\n      },\n\n      /**\n       * #action\n       */\n      setError(error: unknown) {\n        self.error = error\n      },\n\n      /**\n       * #action\n       */\n      showTrack(trackId: string, initialSnapshot = {}) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        const trackType = pluginManager.getTrackType(conf.type)\n        if (!trackType) {\n          throw new Error(`unknown track type ${conf.type}`)\n        }\n        const viewType = pluginManager.getViewType(self.type)!\n        const supportedDisplays = new Set(\n          viewType.displayTypes.map(d => d.name),\n        )\n        const displayConf = conf.displays.find((d: AnyConfigurationModel) =>\n          supportedDisplays.has(d.type),\n        )\n        const track = trackType.stateModel.create({\n          ...initialSnapshot,\n          type: conf.type,\n          configuration: conf,\n          displays: [{ type: displayConf.type, configuration: displayConf }],\n        })\n        self.tracks.push(track)\n      },\n\n      /**\n       * #action\n       */\n      addTrackConf(configuration: AnyConfigurationModel, initialSnapshot = {}) {\n        const { type } = configuration\n        const name = readConfObject(configuration, 'name')\n        const trackType = pluginManager.getTrackType(type)\n        if (!trackType) {\n          throw new Error(`unknown track type ${type}`)\n        }\n        const viewType = pluginManager.getViewType(self.type)!\n        const supportedDisplays = new Set(\n          viewType.displayTypes.map(d => d.name),\n        )\n        const displayConf = configuration.displays.find(\n          (d: AnyConfigurationModel) => supportedDisplays.has(d.type),\n        )\n        self.tracks.push(\n          trackType.stateModel.create({\n            ...initialSnapshot,\n            name,\n            type,\n            configuration,\n            displays: [{ type: displayConf.type, configuration: displayConf }],\n          }),\n        )\n      },\n\n      /**\n       * #action\n       */\n      hideTrack(trackId: string) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        const t = self.tracks.filter(t => t.configuration === conf)\n        transaction(() => {\n          t.forEach(t => self.tracks.remove(t))\n        })\n        return t.length\n      },\n\n      /**\n       * #action\n       */\n      toggleFitToWindowLock() {\n        // when going unlocked -> locked and circle is cut off, set to the\n        // locked minBpPerPx\n        self.lockedFitToWindow = !self.lockedFitToWindow\n        this.setModelViewWhenAdjust(self.atMinBpPerPx)\n        return self.lockedFitToWindow\n      },\n      /**\n       * #action\n       * creates an svg export and save using FileSaver\n       */\n      async exportSvg(opts: ExportSvgOptions = {}) {\n        const { renderToSvg } = await import('../svgcomponents/SVGCircularView')\n        const html = await renderToSvg(self as CircularViewModel, opts)\n        const blob = new Blob([html], { type: 'image/svg+xml' })\n        saveAs(blob, opts.filename || 'image.svg')\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       * return the view menu items\n       */\n      menuItems(): MenuItem[] {\n        return [\n          {\n            label: 'Return to import form',\n            onClick: () => {\n              self.setDisplayedRegions([])\n            },\n            icon: FolderOpenIcon,\n          },\n          {\n            label: 'Export SVG',\n            icon: PhotoCameraIcon,\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ExportSvgDialog,\n                { model: self, handleClose },\n              ])\n            },\n          },\n          {\n            label: 'Open track selector',\n            onClick: self.activateTrackSelector,\n            icon: TrackSelectorIcon,\n          },\n        ]\n      },\n    }))\n}\n\nexport type CircularViewStateModel = ReturnType<typeof stateModelFactory>\nexport type CircularViewModel = Instance<CircularViewStateModel>\n\nexport default stateModelFactory\n","import React, { useState, useEffect } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles()(theme => {\n  const offset = 2\n  const duration = 1.4\n\n  const { primary, secondary, tertiary, quaternary } = theme.palette\n  return {\n    path: {\n      strokeDasharray: 187,\n      strokeDashoffset: 50,\n      animation: `$dash ${duration}s ease-in-out infinite, $colors ${\n        duration * 4\n      }s ease-in-out infinite`,\n    },\n    '@keyframes colors': {\n      '0%': {\n        stroke: primary.light,\n      },\n      '25%': {\n        stroke: secondary.light,\n      },\n      '50%': {\n        stroke: tertiary.light,\n      },\n      '75%': {\n        stroke: quaternary.light,\n      },\n      '100%': {\n        stroke: primary.light,\n      },\n    },\n\n    '@keyframes dash': {\n      '0%': {\n        strokeDashoffset: offset,\n      },\n      '50%': {\n        strokeDashoffset: offset / 4,\n        transform: 'rotate(135deg)',\n      },\n      '100%': {\n        strokeDashoffset: offset,\n        transform: 'rotate(720deg)',\n      },\n    },\n  }\n})\n\nconst Loading = observer(function ({\n  model: {\n    renderProps: { radius },\n  },\n}: {\n  model: { renderProps: { radius: number } }\n}) {\n  const { classes } = useStyles()\n\n  // only show the loading message after 400ms to prevent excessive flickering\n  const [shown, setShown] = useState(false)\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setShown(true)\n    }, 400)\n    return () => {\n      clearTimeout(timeout)\n    }\n  })\n\n  return !shown ? null : (\n    <g>\n      <defs>\n        <pattern\n          id=\"diagonalHatch\"\n          width=\"10\"\n          height=\"10\"\n          patternTransform=\"rotate(45 0 0)\"\n          patternUnits=\"userSpaceOnUse\"\n        >\n          <line\n            x1=\"0\"\n            y1=\"0\"\n            x2=\"0\"\n            y2=\"10\"\n            style={{ stroke: 'rgba(255,255,255,0.5)', strokeWidth: 10 }}\n          />\n        </pattern>\n      </defs>\n      <circle cx=\"0\" cy=\"0\" r={radius} fill=\"#f1f1f1\" />\n      <circle cx=\"0\" cy=\"0\" r={radius} fill=\"url(#diagonalHatch)\" />\n      <text\n        x=\"0\"\n        y=\"0\"\n        transform=\"rotate(90 0 0)\"\n        dominantBaseline=\"middle\"\n        textAnchor=\"middle\"\n      >\n        Loading&hellip;\n      </text>\n      <circle\n        className={classes.path}\n        fill=\"none\"\n        strokeWidth=\"4\"\n        strokeLinecap=\"round\"\n        cx=\"0\"\n        cy=\"0\"\n        r=\"60\"\n      />\n    </g>\n  )\n})\n\nexport default Loading\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nconst DisplayError = observer(function ({\n  model,\n}: {\n  model: { renderProps: { radius: number }; error: unknown }\n}) {\n  const {\n    renderProps: { radius },\n    error,\n  } = model\n  return (\n    <g>\n      <defs>\n        <pattern\n          id=\"diagonalHatch\"\n          width=\"10\"\n          height=\"10\"\n          patternTransform=\"rotate(45 0 0)\"\n          patternUnits=\"userSpaceOnUse\"\n        >\n          <line\n            x1=\"0\"\n            y1=\"0\"\n            x2=\"0\"\n            y2=\"10\"\n            style={{ stroke: 'rgba(255,0,0,0.5)', strokeWidth: 10 }}\n          />\n        </pattern>\n      </defs>\n      <circle cx=\"0\" cy=\"0\" r={radius} fill=\"#ffb4b4\" />\n      <circle cx=\"0\" cy=\"0\" r={radius} fill=\"url(#diagonalHatch)\" />\n      <text\n        x=\"0\"\n        y=\"0\"\n        transform=\"rotate(90 0 0)\"\n        dominantBaseline=\"middle\"\n        textAnchor=\"middle\"\n      >\n        {String(error)}\n      </text>\n    </g>\n  )\n})\n\nexport default DisplayError\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport Loading from './Loading'\nimport DisplayError from './DisplayError'\n\nconst BaseChordDisplay = observer(function ({\n  display,\n}: {\n  display: {\n    filled: boolean\n    error: unknown\n    reactElement: React.ReactElement\n    renderProps: { radius: number }\n  }\n}) {\n  if (display.error) {\n    return <DisplayError model={display} />\n  }\n  if (!display.filled) {\n    return <Loading model={display} />\n  }\n\n  return display.reactElement\n})\n\nexport default BaseChordDisplay\n","import clone from 'clone'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { getSession, getContainingView } from '@jbrowse/core/util'\nimport { CircularViewModel } from '../../CircularView/models/model'\n\nexport function renderReactionData(self: any) {\n  const view = getContainingView(self) as CircularViewModel\n  const { rendererType } = self\n  const { rpcManager } = getSession(view)\n\n  return {\n    rendererType,\n    rpcManager,\n    renderProps: self.renderProps(),\n    renderArgs: {\n      assemblyName: view.displayedRegions[0]!.assemblyName,\n      adapterConfig: clone(self.adapterConfig),\n      rendererType: rendererType.name,\n      regions: clone(view.displayedRegions),\n      blockDefinitions: self.blockDefinitions,\n      sessionId: getRpcSessionId(self),\n      timeout: 1000000,\n    },\n  }\n}\n\nexport async function renderReactionEffect(\n  props: any,\n  signal: AbortSignal | undefined,\n  self: any,\n) {\n  if (!props) {\n    throw new Error('cannot render with no props')\n  }\n\n  const {\n    rendererType,\n    rpcManager,\n    cannotBeRenderedReason,\n    renderArgs,\n    renderProps,\n    exportSVG,\n  } = props\n\n  if (cannotBeRenderedReason) {\n    return { message: cannotBeRenderedReason }\n  }\n\n  // don't try to render 0 or NaN radius or no regions\n  if (!renderProps.radius || !renderArgs.regions?.length) {\n    return { message: 'Skipping render' }\n  }\n\n  // check renderertype compatibility\n  if (!self.isCompatibleWithRenderer(rendererType)) {\n    throw new Error(\n      `renderer ${rendererType.name} is not compatible with this display type`,\n    )\n  }\n\n  const { html, ...data } = await rendererType.renderInClient(rpcManager, {\n    ...renderArgs,\n    ...renderProps,\n    exportSVG,\n  })\n\n  return {\n    html,\n    data,\n    reactElement: data.reactElement,\n    renderingComponent: rendererType.ReactComponent,\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BaseChordDisplay\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst baseChordDisplayConfig = ConfigurationSchema(\n  'BaseChordDisplay',\n  {\n    /**\n     * #slot\n     */\n    onChordClick: {\n      type: 'boolean',\n      description:\n        'callback that should be run when a chord in the track is clicked',\n      defaultValue: false,\n      contextVariable: ['feature', 'track', 'pluginManager'],\n    },\n  },\n  {\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'displayId',\n  },\n)\n\nexport { baseChordDisplayConfig }\n","import React from 'react'\nimport clone from 'clone'\nimport { getParent, isAlive, types } from 'mobx-state-tree'\n\n// jbrowse\nimport { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport CircularChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType'\nimport RendererType from '@jbrowse/core/pluggableElementTypes/renderers/RendererType'\nimport {\n  getContainingView,\n  getSession,\n  getEnv,\n  isFeature,\n  makeAbortableReaction,\n  AnyReactComponentType,\n  Feature,\n  ReactRendering,\n} from '@jbrowse/core/util'\nimport {\n  getParentRenderProps,\n  getRpcSessionId,\n  getTrackAssemblyNames,\n} from '@jbrowse/core/util/tracks'\n\n// locals\nimport { renderReactionData, renderReactionEffect } from './renderReaction'\nimport {\n  CircularViewModel,\n  ExportSvgOptions,\n} from '../../CircularView/models/model'\nimport { ThemeOptions } from '@mui/material'\nimport { baseChordDisplayConfig } from './configSchema'\n\n/**\n * #stateModel BaseChordDisplay\n * extends\n * - [BaseDisplay](../basedisplay)\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport const BaseChordDisplayModel = types\n  .compose(\n    'BaseChordDisplay',\n    BaseDisplay,\n    types.model({\n      /**\n       * #property\n       */\n      bezierRadiusRatio: 0.1,\n      /**\n       * #property\n       */\n      assemblyName: types.maybe(types.string),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(baseChordDisplayConfig),\n    }),\n  )\n  .volatile(() => ({\n    // NOTE: all this volatile stuff has to be filled in at once\n    // so that it stays consistent\n    filled: false,\n    reactElement: undefined as React.ReactElement | undefined,\n    data: undefined,\n    html: undefined as string | undefined,\n    message: '',\n    renderingComponent: undefined as undefined | AnyReactComponentType,\n    refNameMap: undefined as Record<string, string> | undefined,\n  }))\n  .actions(self => {\n    const { pluginManager } = getEnv(self)\n    const track = self\n    return {\n      /**\n       * #action\n       */\n      onChordClick(feature: Feature) {\n        getConf(self, 'onChordClick', { feature, track, pluginManager })\n      },\n    }\n  })\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get blockDefinitions() {\n      const view = getContainingView(self) as CircularViewModel\n      const origSlices = view.staticSlices\n      if (!self.refNameMap) {\n        return origSlices\n      }\n\n      const slices = clone(origSlices)\n\n      slices.forEach(slice => {\n        const regions = slice.region.elided\n          ? slice.region.regions\n          : [slice.region]\n        regions.forEach(region => {\n          const renamed = self.refNameMap?.[region.refName]\n          if (renamed && region.refName !== renamed) {\n            region.refName = renamed\n          }\n        })\n      })\n      return slices\n    },\n\n    /**\n     * #method\n     */\n    renderProps() {\n      const view = getContainingView(self) as CircularViewModel\n      return {\n        ...getParentRenderProps(self),\n        rpcDriverName: self.rpcDriverName,\n        bezierRadius: view.radiusPx * self.bezierRadiusRatio,\n        radius: view.radiusPx,\n        blockDefinitions: this.blockDefinitions,\n        onChordClick: self.onChordClick,\n      }\n    },\n\n    /**\n     * #getter\n     * the pluggable element type object for this display's renderer\n     */\n    get rendererType() {\n      return getEnv(self).pluginManager.getRendererType(self.rendererTypeName)\n    },\n\n    /**\n     * #method\n     */\n    isCompatibleWithRenderer(renderer: RendererType) {\n      return !!(renderer instanceof CircularChordRendererType)\n    },\n\n    /**\n     * #getter\n     * returns a string feature ID if the globally-selected object\n     * is probably a feature\n     */\n    get selectedFeatureId() {\n      if (!isAlive(self)) {\n        return undefined\n      }\n      const session = getSession(self)\n      const { selection } = session\n      // does it quack like a feature?\n      if (isFeature(selection)) {\n        return selection.id()\n      }\n      return undefined\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    renderStarted() {\n      self.filled = false\n      self.message = ''\n      self.reactElement = undefined\n      self.data = undefined\n      self.html = undefined\n      self.error = undefined\n      self.renderingComponent = undefined\n    },\n    /**\n     * #action\n     */\n    renderSuccess({\n      message,\n      data,\n      reactElement,\n      html,\n      renderingComponent,\n    }: {\n      message: string\n      data: any\n      html: string\n      reactElement: React.ReactElement\n      renderingComponent: AnyReactComponentType\n    }) {\n      if (message) {\n        self.filled = false\n        self.message = message\n        self.reactElement = undefined\n        self.data = undefined\n        self.html = undefined\n        self.error = undefined\n        self.renderingComponent = undefined\n      } else {\n        self.filled = true\n        self.message = ''\n        self.reactElement = reactElement\n        self.data = data\n        self.html = html\n        self.error = undefined\n        self.renderingComponent = renderingComponent\n      }\n    },\n    /**\n     * #action\n     */\n    renderError(error: unknown) {\n      console.error(error)\n      // the rendering failed for some reason\n      self.filled = false\n      self.message = ''\n      self.reactElement = undefined\n      self.html = undefined\n      self.data = undefined\n      self.error = error\n      self.renderingComponent = undefined\n    },\n\n    /**\n     * #action\n     */\n    setRefNameMap(refNameMap: Record<string, string>) {\n      self.refNameMap = refNameMap\n    },\n  }))\n  .actions(self => ({\n    afterAttach() {\n      makeAbortableReaction(\n        self,\n        renderReactionData,\n\n        // @ts-expect-error\n        renderReactionEffect,\n        {\n          name: `${self.type} ${self.id} rendering`,\n          // delay: self.renderDelay || 300,\n          fireImmediately: true,\n        },\n        self.renderStarted,\n        self.renderSuccess,\n        self.renderError,\n      )\n\n      makeAbortableReaction(\n        self,\n        () => ({\n          assemblyNames: getTrackAssemblyNames(self.parentTrack),\n\n          adapter: getConf(getParent<any>(self, 2), 'adapter'),\n          assemblyManager: getSession(self).assemblyManager,\n        }),\n\n        async ({ assemblyNames, adapter, assemblyManager }: any, signal) => {\n          return assemblyManager.getRefNameMapForAdapter(\n            adapter,\n            assemblyNames[0],\n            { signal, sessionId: getRpcSessionId(self) },\n          )\n        },\n        {\n          name: `${self.type} ${self.id} getting refNames`,\n          fireImmediately: true,\n        },\n        () => {},\n        refNameMap => {\n          self.setRefNameMap(refNameMap)\n        },\n        error => {\n          console.error(error)\n          self.setError(error)\n        },\n      )\n    },\n  }))\n  .views(self => ({\n    /**\n     * #method\n     */\n    async renderSvg(\n      opts: ExportSvgOptions & {\n        theme?: ThemeOptions\n      },\n    ) {\n      const data = renderReactionData(self)\n      const rendering = await renderReactionEffect(\n        {\n          ...data,\n          exportSVG: opts,\n          theme: opts.theme || data.renderProps.theme,\n        },\n        undefined,\n        self,\n      )\n      return <ReactRendering rendering={rendering} />\n    },\n  }))\n","import { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\n\n// locals\n\nimport CircularViewF from './CircularView'\nimport LaunchCircularViewF from './LaunchCircularView'\n\n// icons\nimport DataUsageIcon from '@mui/icons-material/DataUsage'\n\nexport default class CircularViewPlugin extends Plugin {\n  name = 'CircularViewPlugin'\n\n  install(pluginManager: PluginManager) {\n    CircularViewF(pluginManager)\n    LaunchCircularViewF(pluginManager)\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToSubMenu(['Add'], {\n        label: 'Circular view',\n        icon: DataUsageIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('CircularView', {})\n        },\n      })\n    }\n  }\n}\n\nexport {\n  baseChordDisplayConfig,\n  BaseChordDisplayModel,\n  BaseChordDisplayComponent,\n} from './BaseChordDisplay'\n\nexport {\n  type CircularViewModel,\n  type CircularViewStateModel,\n} from './CircularView/models/model'\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport stateModelFactory from './models/model'\n\nexport default function CircularViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(\n    () =>\n      new ViewType({\n        ReactComponent: lazy(() => import('./components/CircularView')),\n        stateModel: stateModelFactory(pluginManager),\n        name: 'CircularView',\n        displayName: 'Circular view',\n      }),\n  )\n}\n","import { when } from 'mobx'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport { CircularViewModel } from '../CircularView/models/model'\n\ntype CGV = CircularViewModel\n\nexport default function LaunchCircularViewF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-CircularView',\n    // @ts-expect-error\n    async ({\n      session,\n      assembly,\n      tracks = [],\n    }: {\n      session: AbstractSessionModel\n      assembly?: string\n      loc: string\n      tracks?: string[]\n    }) => {\n      const { assemblyManager } = session\n      const view = session.addView('CircularView', {}) as CGV\n\n      await when(() => view.initialized)\n\n      if (!assembly) {\n        throw new Error(\n          'No assembly provided when launching circular genome view',\n        )\n      }\n\n      const asm = await assemblyManager.waitForAssembly(assembly)\n      if (!asm) {\n        throw new Error(\n          `Assembly \"${assembly}\" not found when launching circular genome view`,\n        )\n      }\n\n      view.setDisplayedRegions(asm.regions || [])\n\n      tracks.forEach(track => {\n        view.showTrack(track)\n      })\n    },\n  )\n}\n","import React, { useEffect, useState } from 'react'\nimport { InputLabel, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// fontSize and fontFamily have to match between Editor and SyntaxHighlighter\nconst fontSize = '12px'\n// Optimize by using system default fonts: https://css-tricks.com/snippets/css/font-stacks/\nconst fontFamily =\n  'Consolas, \"Andale Mono WT\", \"Andale Mono\", \"Lucida Console\", \"Lucida Sans Typewriter\", \"DejaVu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Liberation Mono\", \"Nimbus Mono L\", Monaco, \"Courier New\", Courier, monospace'\n\nconst useStyles = makeStyles()(theme => ({\n  error: {\n    color: 'red',\n    fontSize: '0.8em',\n  },\n  callbackEditor: {\n    fontFamily,\n    fontSize,\n    background: theme.palette.background.default,\n    width: 800,\n    marginTop: '16px',\n    border: '1px solid rgba(0,0,0,0.42)',\n  },\n  callbackContainer: {\n    width: '100%',\n    overflowX: 'auto',\n  },\n  textAreaFont: {\n    fontFamily,\n  },\n}))\n\nconst JsonEditor = observer(function JsonEditor({\n  slot,\n}: {\n  slot: {\n    name: string\n    description: string\n    value: unknown\n    set: (arg: unknown) => void\n  }\n}) {\n  const { classes } = useStyles()\n  const [contents, setContents] = useState(JSON.stringify(slot.value, null, 2))\n  const [error, setError] = useState<unknown>()\n\n  useEffect(() => {\n    try {\n      setError(undefined)\n      slot.set(JSON.parse(contents))\n    } catch (e) {\n      console.error({ e })\n      setError(e)\n    }\n  }, [contents, slot])\n\n  return (\n    <>\n      {error ? <p className={classes.error}>{`${error}`}</p> : null}\n      <div className={classes.callbackContainer}>\n        <InputLabel shrink htmlFor=\"json-editor\">\n          {slot.name}\n        </InputLabel>\n        <TextField\n          id=\"json-editor\"\n          className={classes.callbackEditor}\n          value={contents}\n          helperText={slot.description}\n          multiline\n          onChange={event => {\n            setContents(event.target.value)\n          }}\n          style={{ background: error ? '#fdd' : undefined }}\n          InputProps={{\n            classes: {\n              input: classes.textAreaFont,\n            },\n          }}\n        />\n      </div>\n    </>\n  )\n})\n\nexport default JsonEditor\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config FromConfigAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'FromConfigAdapter',\n  {\n    /**\n     * #slot\n     */\n    features: {\n      type: 'frozen',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true, implicitIdentifier: 'adapterId' },\n)\n\nexport default configSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config FromConfigRegionsAdapter\n * used for specifying refNames+sizes of an assembly\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst regionsConfigSchema = ConfigurationSchema(\n  'FromConfigRegionsAdapter',\n  {\n    /**\n     * #slot\n     */\n    features: {\n      type: 'frozen',\n      defaultValue: [],\n    },\n  },\n  {\n    explicitlyTyped: true,\n    implicitIdentifier: 'adapterId',\n  },\n)\nexport default regionsConfigSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config FromConfigSequenceAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst sequenceConfigSchema = ConfigurationSchema(\n  'FromConfigSequenceAdapter',\n  {\n    /**\n     * #slot\n     */\n    features: {\n      type: 'frozen',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true, implicitIdentifier: 'adapterId' },\n)\n\nexport default sequenceConfigSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config RefNameAliasAdapter\n * can read \"chromAliases\" type files from UCSC or any tab separated file of\n * refName aliases\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst RefNameAliasAdapter = ConfigurationSchema(\n  'RefNameAliasAdapter',\n  {\n    /**\n     * #slot\n     */\n    location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my/aliases.txt',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     * by default, the \"ref names that match the fasta\" are assumed to be in the\n     * first column (0), change this variable if needed\n     */\n    refNameColumn: {\n      type: 'number',\n      defaultValue: 0,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default RefNameAliasAdapter\n","import { types } from 'mobx-state-tree'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nexport default function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .model('ConfigurationEditorWidget', {\n      id: ElementId,\n      type: types.literal('ConfigurationEditorWidget'),\n      // If you add different types of targets, don't forget to account for that\n      // in the key of ./components/ConfigurationEditor.js\n      target: types.safeReference(\n        pluginManager.pluggableConfigSchemaType('track'),\n      ),\n    })\n    .actions(self => ({\n      setTarget(newTarget: any) {\n        self.target = newTarget\n      },\n    }))\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { isStateTreeNode, getType } from 'mobx-state-tree'\n\nconst HeadingComponent = observer(function ({\n  model,\n}: {\n  model?: {\n    target: {\n      type: string\n    }\n  }\n}) {\n  if (model?.target) {\n    if (model.target.type) {\n      return `${model.target.type} settings`\n    }\n    if (isStateTreeNode(model.target)) {\n      const type = getType(model.target)\n      if (type.name) {\n        return `${type.name.replace('ConfigurationSchema', '')} settings`\n      }\n    }\n  }\n  return <>Settings</>\n})\n\nexport default HeadingComponent\n","import { lazy } from 'react'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport stateModelFactory from './model'\nimport HeadingComponent from './components/HeadingComponent'\n\nconst configSchema = ConfigurationSchema('ConfigurationEditorWidget', {})\n\nconst LazyConfigurationEditorComponent = lazy(\n  () => import('./components/ConfigurationEditor'),\n)\n\nexport default function registerConfigurationEditorWidget(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'ConfigurationEditorWidget',\n      HeadingComponent,\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: LazyConfigurationEditorComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config NcbiSequenceReportAliasAdapter\n * can read \"sequence_report.tsv\" type files from NCBI\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst NcbiSequenceReportAliasAdapterConfigSchema = ConfigurationSchema(\n  'NcbiSequenceReportAliasAdapter',\n  {\n    /**\n     * #slot\n     */\n    location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my/sequence_report.tsv',\n        locationType: 'UriLocation',\n      },\n    },\n\n    useUcscNameOverride: {\n      type: 'boolean',\n      defaultValue: true,\n      description:\n        'forces usage of the UCSC names over the NCBI style names from a FASTA',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default NcbiSequenceReportAliasAdapterConfigSchema\n","import { lazy } from 'react'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport FromConfigAdapterF from './FromConfigAdapter'\nimport FromConfigRegionsAdapterF from './FromConfigRegionsAdapter'\nimport FromConfigSequenceAdapterF from './FromConfigSequenceAdapter'\nimport RefNameAliasAdapterF from './RefNameAliasAdapter'\nimport ConfigurationEditorWidgetF from './ConfigurationEditorWidget'\nimport NcbiSequenceReportAliasAdapterF from './NcbiSequenceReportAliasAdapter'\n\nconst LazyConfigurationEditorComponent = lazy(\n  () => import('./ConfigurationEditorWidget/components/ConfigurationEditor'),\n)\n\nexport default class ConfigurationPlugin extends Plugin {\n  name = 'ConfigurationPlugin'\n\n  install(pluginManager: PluginManager) {\n    FromConfigAdapterF(pluginManager)\n    FromConfigRegionsAdapterF(pluginManager)\n    FromConfigSequenceAdapterF(pluginManager)\n    RefNameAliasAdapterF(pluginManager)\n    ConfigurationEditorWidgetF(pluginManager)\n    NcbiSequenceReportAliasAdapterF(pluginManager)\n  }\n}\n\nexport { default as JsonEditor } from './ConfigurationEditorWidget/components/JsonEditor'\n\nexport { LazyConfigurationEditorComponent as ConfigurationEditor }\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\n\nexport default function FromConfigAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'FromConfigAdapter',\n        configSchema,\n        getAdapterClass: () =>\n          import('./FromConfigAdapter').then(r => r.default),\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n      }),\n  )\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\n\nexport default function FromConfigRegionsAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'FromConfigRegionsAdapter',\n        configSchema,\n        getAdapterClass: () =>\n          import('./FromConfigRegionsAdapter').then(r => r.default),\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n      }),\n  )\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport configSchema from './configSchema'\n\nexport default function FromConfigSequenceAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'FromConfigSequenceAdapter',\n        configSchema,\n        getAdapterClass: () =>\n          import('./FromConfigSequenceAdapter').then(r => r.default),\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n      }),\n  )\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport configSchema from './configSchema'\n\nexport default function RefNameAliasAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'RefNameAliasAdapter',\n        configSchema,\n        getAdapterClass: () =>\n          import('./RefNameAliasAdapter').then(r => r.default),\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n      }),\n  )\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport configSchema from './configSchema'\n\nexport default function NcbiSequenceReportAliasAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addAdapterType(() => {\n    return new AdapterType({\n      name: 'NcbiSequenceReportAliasAdapter',\n      configSchema,\n      getAdapterClass: () =>\n        import('./NcbiSequenceReportAliasAdapter').then(r => r.default),\n      adapterMetadata: {\n        hiddenFromGUI: true,\n      },\n    })\n  })\n}\n","import { types } from 'mobx-state-tree'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\n\nexport default types.model('AddConnectionModel', {\n  id: ElementId,\n  type: types.literal('AddConnectionWidget'),\n})\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { lazy } from 'react'\n\nimport stateModel from './model'\nconst configSchema = ConfigurationSchema('AddConnectionWidget', {})\n\nexport default function AddConnectionWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'AddConnectionWidget',\n      heading: 'Add a connection',\n      configSchema,\n      stateModel,\n      ReactComponent: lazy(() => import('./components/AddConnectionWidget')),\n    })\n  })\n}\n","import { types, Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  guessAdapter,\n  guessTrackType,\n  getFileName,\n  UNSUPPORTED,\n} from '@jbrowse/core/util/tracks'\n\nfunction isAbsoluteUrl(url = '') {\n  try {\n    new URL(url)\n    return true\n  } catch (error) {\n    return url.startsWith('/')\n  }\n}\ninterface IndexingAttr {\n  attributes: string[]\n  exclude: string[]\n}\n\n/**\n * #stateModel AddTrackModel\n */\nexport default function f(pluginManager: PluginManager) {\n  return types\n    .model('AddTrackModel', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('AddTrackWidget'),\n      /**\n       * #property\n       */\n      view: types.safeReference(\n        pluginManager.pluggableMstType('view', 'stateModel'),\n      ),\n    })\n    .volatile(() => ({\n      trackSource: 'fromFile',\n      trackData: undefined as FileLocation | undefined,\n      indexTrackData: undefined as FileLocation | undefined,\n\n      // alts\n      altAssemblyName: '',\n      altTrackName: '',\n      altTrackType: '',\n\n      adapterHint: '',\n      textIndexTrack: true,\n      textIndexingConf: undefined as IndexingAttr | undefined,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setAdapterHint(obj: string) {\n        self.adapterHint = obj\n      },\n      /**\n       * #action\n       */\n      setTrackSource(str: string) {\n        self.trackSource = str\n      },\n      /**\n       * #action\n       */\n      setTextIndexingConf(conf: IndexingAttr) {\n        self.textIndexingConf = conf\n      },\n      /**\n       * #action\n       */\n      setTextIndexTrack(flag: boolean) {\n        self.textIndexTrack = flag\n      },\n      /**\n       * #action\n       */\n      setTrackData(obj: FileLocation) {\n        self.trackData = obj\n      },\n      /**\n       * #action\n       */\n      setIndexTrackData(obj: FileLocation) {\n        self.indexTrackData = obj\n      },\n      /**\n       * #action\n       */\n      setAssembly(str: string) {\n        self.altAssemblyName = str\n      },\n      /**\n       * #action\n       */\n      setTrackName(str: string) {\n        self.altTrackName = str\n      },\n      /**\n       * #action\n       */\n      setTrackType(str: string) {\n        self.altTrackType = str\n      },\n      /**\n       * #action\n       */\n      clearData() {\n        self.trackSource = ''\n        self.altTrackName = ''\n        self.altTrackType = ''\n        self.altAssemblyName = ''\n        self.adapterHint = ''\n        self.indexTrackData = undefined\n        self.trackData = undefined\n        self.textIndexingConf = undefined\n        self.textIndexTrack = true\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get trackAdapter() {\n        const { trackData, indexTrackData, adapterHint } = self\n\n        return trackData\n          ? guessAdapter(trackData, indexTrackData, adapterHint, self)\n          : undefined\n      },\n\n      /**\n       * #getter\n       */\n      get trackName() {\n        return (\n          self.altTrackName ||\n          (self.trackData ? getFileName(self.trackData) : '')\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get isFtp() {\n        const { trackData: track, indexTrackData: index } = self\n        return !!(\n          // @ts-expect-error\n          (index?.uri?.startsWith('ftp://') || track?.uri?.startsWith('ftp://'))\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get isRelativeTrackUrl() {\n        // @ts-expect-error\n        const uri = self.trackData?.uri\n        return uri ? !isAbsoluteUrl(uri) : false\n      },\n      /**\n       * #getter\n       */\n      get isRelativeIndexUrl() {\n        // @ts-expect-error\n        const uri = self.indexTrackData?.uri\n        return uri ? !isAbsoluteUrl(uri) : false\n      },\n      /**\n       * #getter\n       */\n      get isRelativeUrl() {\n        return this.isRelativeIndexUrl || this.isRelativeTrackUrl\n      },\n\n      /**\n       * #getter\n       */\n      get trackHttp() {\n        // @ts-expect-error\n        return self.trackData?.uri?.startsWith('http://')\n      },\n      /**\n       * #getter\n       */\n      get indexHttp() {\n        // @ts-expect-error\n        return self.indexTrackData?.uri?.startsWith('http://')\n      },\n\n      /**\n       * #getter\n       */\n      get wrongProtocol() {\n        return (\n          window.location.protocol === 'https:' &&\n          (this.trackHttp || this.indexHttp)\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get unsupported() {\n        return this.trackAdapter?.type === UNSUPPORTED\n      },\n\n      /**\n       * #getter\n       */\n      get assembly() {\n        return self.altAssemblyName || self.view.assemblyNames?.[0]\n      },\n\n      /**\n       * #getter\n       */\n      get trackType() {\n        return (\n          self.altTrackType ||\n          (this.trackAdapter\n            ? guessTrackType(this.trackAdapter.type, self)\n            : '')\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get warningMessage() {\n        if (self.isFtp) {\n          return 'Warning: JBrowse cannot access files using the ftp protocol'\n        } else if (self.isRelativeUrl) {\n          return `Warning: one or more of your files do not provide the protocol e.g.\n          https://, please provide an absolute URL unless you are sure a\n          relative URL is intended.`\n        } else if (self.wrongProtocol) {\n          return `Warning: You entered a http:// resources but we cannot access HTTP\n          resources from JBrowse when it is running on https. Please use an\n          https URL for your track, or access the JBrowse app from the http\n          protocol`\n        }\n        return ''\n      },\n    }))\n}\n\nexport type AddTrackStateModel = ReturnType<typeof f>\nexport type AddTrackModel = Instance<AddTrackStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { lazy } from 'react'\n\nimport stateModelFactory from './model'\nconst configSchema = ConfigurationSchema('AddTrackWidget', {})\n\nexport default function AddTrackWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'AddTrackWidget',\n      heading: 'Add a track',\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/AddTrackWidget')),\n    })\n  })\n}\n","export interface Row {\n  id: string\n  metadata?: Record<string, unknown>\n  [key: string]: unknown\n}\n\nexport function getRowStr(facet: string, row: Row) {\n  return `${\n    (facet.startsWith('metadata.')\n      ? row.metadata?.[facet.replace('metadata.', '')]\n      : row[facet]) || ''\n  }`\n}\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\n\nexport function hasAnyOverlap<T>(a1: T[] = [], a2: T[] = []) {\n  // shortcut case is that arrays are single entries, and are equal\n  // long case is that we use a set\n  if (a1[0] === a2[0]) {\n    return true\n  } else {\n    const s1 = new Set(a1)\n    return a2.some(a => s1.has(a))\n  }\n}\n\nexport function hasAllOverlap<T>(a1: T[] = [], a2: T[] = []) {\n  const s1 = new Set(a1)\n  return a2.every(a => s1.has(a))\n}\n\nexport function matches(\n  query: string,\n  conf: AnyConfigurationModel,\n  session: AbstractSessionModel,\n) {\n  const categories = (readConfObject(conf, 'category') || []) as string[]\n  const queryLower = query.toLowerCase()\n  return (\n    getTrackName(conf, session).toLowerCase().includes(queryLower) ||\n    !!categories.filter(c => c.toLowerCase().includes(queryLower)).length\n  )\n}\n\ninterface Node {\n  children: Node[]\n  id: string\n}\n\nexport function findSubCategories(obj: Node[], paths: string[], depth = 0) {\n  let hasSubs = false\n  for (const elt of obj) {\n    if (elt.children.length) {\n      const hasSubCategories = findSubCategories(elt.children, paths, depth + 1)\n      // avoid pushing the root \"Tracks\" node by checking depth>0\n      if (hasSubCategories && depth > 0) {\n        paths.push(elt.id)\n      }\n    } else {\n      hasSubs = true\n    }\n  }\n  return hasSubs\n}\n\nexport function findTopLevelCategories(obj: Node[], paths: string[]) {\n  for (const elt of obj) {\n    if (elt.children.length) {\n      paths.push(elt.id)\n    }\n  }\n}\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { getEnv, getSession, notEmpty } from '@jbrowse/core/util'\nimport { hasAllOverlap, hasAnyOverlap } from './util'\n\nexport function filterTracks(\n  tracks: AnyConfigurationModel[],\n  self: {\n    view?: {\n      type: string\n      trackSelectorAnyOverlap?: boolean\n    }\n    assemblyNames: string[]\n  },\n) {\n  const { assemblyManager } = getSession(self)\n  const { pluginManager } = getEnv(self)\n  const { view } = self\n\n  if (!view) {\n    return []\n  }\n  const trackListAssemblies = self.assemblyNames\n    .map(a => assemblyManager.get(a))\n    .filter(notEmpty)\n  return tracks\n    .filter(c => {\n      const trackAssemblyNames = readConfObject(c, 'assemblyNames') as\n        | string[]\n        | undefined\n      const trackAssemblies = trackAssemblyNames\n        ?.map(name => assemblyManager.get(name))\n        .filter(notEmpty)\n      return view.trackSelectorAnyOverlap\n        ? hasAnyOverlap(trackAssemblies, trackListAssemblies)\n        : hasAllOverlap(trackAssemblies, trackListAssemblies)\n    })\n    .filter(c => {\n      const { displayTypes } = pluginManager.getViewType(view.type)!\n      const compatDisplays = displayTypes.map(d => d.name)\n      const trackDisplays = c.displays.map((d: { type: string }) => d.type)\n      return hasAnyOverlap(compatDisplays, trackDisplays)\n    })\n}\n","import {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\n\n// locals\nimport { matches } from './util'\nimport { MenuItem } from '@jbrowse/core/ui'\n\nfunction sortConfs(\n  confs: AnyConfigurationModel[],\n  sortNames: boolean,\n  sortCategories: boolean,\n) {\n  // uses readConfObject instead of getTrackName so that the undefined\n  // reference sequence track is sorted to the top\n  const ret = confs.map(c => [\n    c,\n    readConfObject(c, 'name'),\n    readConfObject(c, 'category')?.[0] || '',\n    readConfObject(c, 'category')?.[1] || '',\n    readConfObject(c, 'category')?.[2] || '',\n  ])\n  if (sortNames) {\n    ret.sort((a, b) => a[1].localeCompare(b[1]))\n  }\n  if (sortCategories) {\n    // sort up to three sub-category levels, harder to code it to go deeper\n    // than this and likely rarely used\n    ret.sort((a, b) => {\n      if (a[2] !== b[2]) {\n        return a[2].localeCompare(b[2])\n      } else if (a[3] !== b[3]) {\n        return a[3].localeCompare(b[3])\n      } else if (a[4] !== b[4]) {\n        return a[4].localeCompare(b[4])\n      }\n      return 0\n    })\n  }\n  return ret.map(a => a[0])\n}\n\nexport interface TreeTrackNode {\n  name: string\n  id: string\n  trackId: string\n  conf: AnyConfigurationModel\n  checked: boolean\n  children: TreeNode[] // empty\n  type: 'track'\n}\n\nexport interface TreeCategoryNode {\n  name: string\n  id: string\n  isOpenByDefault: boolean\n  children: TreeNode[]\n  type: 'category'\n}\n\nexport type TreeNode = TreeTrackNode | TreeCategoryNode\n\nexport function generateHierarchy({\n  model,\n  trackConfs,\n  extra,\n  noCategories,\n  menuItems,\n}: {\n  model: {\n    filterText: string\n    activeSortTrackNames: boolean\n    activeSortCategories: boolean\n    collapsed: Map<string | number, boolean>\n    view?: {\n      tracks: { configuration: AnyConfigurationModel }[]\n    }\n  }\n  noCategories?: boolean\n  menuItems?: MenuItem[]\n  trackConfs: AnyConfigurationModel[]\n  extra?: string\n}): TreeNode[] {\n  const hierarchy = { children: [] as TreeNode[] } as TreeNode\n  const {\n    collapsed,\n    filterText,\n    activeSortTrackNames,\n    activeSortCategories,\n    view,\n  } = model\n  if (!view) {\n    return []\n  }\n  const session = getSession(model)\n  const viewTracks = view.tracks\n  const confs = trackConfs.filter(conf => matches(filterText, conf, session))\n\n  // uses getConf\n  for (const conf of sortConfs(\n    confs,\n    activeSortTrackNames,\n    activeSortCategories,\n  )) {\n    // copy the categories since this array can be mutated downstream\n    const categories = [...(readConfObject(conf, 'category') || [])]\n\n    // hack where if trackId ends with sessionTrack, then push it to a\n    // category that starts with a space to force sort to the top\n    if (conf.trackId.endsWith('sessionTrack')) {\n      categories.unshift(' Session tracks')\n    }\n\n    let currLevel = hierarchy\n\n    if (!noCategories) {\n      // find existing category to put track into or create it\n      for (let i = 0; i < categories.length; i++) {\n        const category = categories[i]\n        const ret = currLevel.children.find(c => c.name === category)\n        const id = [extra, categories.slice(0, i + 1).join(',')]\n          .filter(f => !!f)\n          .join('-')\n        if (!ret) {\n          const n = {\n            children: [],\n            name: category,\n            id,\n            isOpenByDefault: !collapsed.get(id),\n            menuItems,\n            type: 'category' as const,\n          }\n          currLevel.children.push(n)\n          currLevel = n\n        } else {\n          currLevel = ret\n        }\n      }\n    }\n\n    // uses splice to try to put all leaf nodes above \"category nodes\" if you\n    // change the splice to a simple push and open\n    // test_data/test_order/config.json you will see the weirdness\n    const r = currLevel.children.findIndex(elt => elt.children.length)\n    const idx = r === -1 ? currLevel.children.length : r\n    currLevel.children.splice(idx, 0, {\n      id: [extra, conf.trackId].filter(f => !!f).join(','),\n      trackId: conf.trackId,\n      name: getTrackName(conf, session),\n      conf,\n      checked: viewTracks.some(f => f.configuration === conf),\n      children: [],\n      type: 'track' as const,\n    })\n  }\n\n  return hierarchy.children\n}\n","export function findNonSparseKeys(\n  keys: readonly string[],\n  rows: Record<string, unknown>[],\n  cb: (row: Record<string, unknown>, f: string) => unknown,\n) {\n  return keys.filter(f => rows.map(r => cb(r, f)).filter(f => !!f).length > 5)\n}\n\nexport function getRootKeys(obj: Record<string, unknown>) {\n  return Object.entries(obj)\n    .map(([key, val]) => (typeof val === 'string' ? key : ''))\n    .filter(f => !!f)\n}\n","import { Instance, addDisposer, getParent, types } from 'mobx-state-tree'\nimport { matches } from './util'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { getSession, localStorageGetItem } from '@jbrowse/core/util'\nimport { autorun, observable } from 'mobx'\nimport { getRootKeys, findNonSparseKeys } from './facetedUtil'\nimport { getRowStr } from './components/faceted/util'\n\nconst nonMetadataKeys = ['category', 'adapter', 'description'] as const\n\n/**\n * #stateModel FacetedModel\n */\nexport function facetedStateTreeF() {\n  return types\n    .model('FacetedModel', {\n      /**\n       * #property\n       */\n      filterText: types.optional(types.string, ''),\n      /**\n       * #property\n       */\n      showSparse: types.optional(types.boolean, () =>\n        JSON.parse(localStorageGetItem('facet-showSparse') || 'false'),\n      ),\n      /**\n       * #property\n       */\n      showFilters: types.optional(types.boolean, () =>\n        JSON.parse(localStorageGetItem('facet-showFilters') || 'true'),\n      ),\n\n      /**\n       * #property\n       */\n      showOptions: types.optional(types.boolean, () =>\n        JSON.parse(localStorageGetItem('facet-showTableOptions') || 'false'),\n      ),\n\n      /**\n       * #property\n       */\n      panelWidth: types.optional(types.number, () =>\n        JSON.parse(localStorageGetItem('facet-panelWidth') || '400'),\n      ),\n    })\n    .volatile(() => ({\n      visible: {} as Record<string, boolean>,\n      useShoppingCart: false,\n      filters: observable.map<string, string[]>(),\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setFilter(key: string, value: string[]) {\n        self.filters.set(key, value)\n      },\n      /**\n       * #action\n       */\n      setPanelWidth(width: number) {\n        self.panelWidth = width\n        return self.panelWidth\n      },\n      /**\n       * #action\n       */\n      setUseShoppingCart(f: boolean) {\n        self.useShoppingCart = f\n      },\n      /**\n       * #action\n       */\n      setFilterText(str: string) {\n        self.filterText = str\n      },\n      /**\n       * #action\n       */\n      setShowSparse(f: boolean) {\n        self.showSparse = f\n      },\n      /**\n       * #action\n       */\n      setShowOptions(f: boolean) {\n        self.showOptions = f\n      },\n      /**\n       * #action\n       */\n      setShowFilters(f: boolean) {\n        self.showFilters = f\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get allTrackConfigurations() {\n        return getParent<{ allTrackConfigurations: AnyConfigurationModel[] }>(\n          self,\n        ).allTrackConfigurations\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rows() {\n        const session = getSession(self)\n        const { allTrackConfigurations, filterText } = self\n        return allTrackConfigurations\n          .filter(conf => matches(filterText, conf, session))\n          .map(track => {\n            return {\n              id: track.trackId as string,\n              conf: track,\n              name: getTrackName(track, session),\n              category: readConfObject(track, 'category')?.join(', ') as string,\n              adapter: readConfObject(track, 'adapter')?.type as string,\n              description: readConfObject(track, 'description') as string,\n              metadata: readConfObject(track, 'metadata') as Record<\n                string,\n                unknown\n              >,\n            } as const\n          })\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get filteredNonMetadataKeys() {\n        return self.showSparse\n          ? nonMetadataKeys\n          : findNonSparseKeys(nonMetadataKeys, self.rows, (r, f) => r[f])\n      },\n      /**\n       * #getter\n       */\n      get metadataKeys() {\n        return [...new Set(self.rows.flatMap(row => getRootKeys(row.metadata)))]\n      },\n      get filteredMetadataKeys() {\n        return self.showSparse\n          ? this.metadataKeys\n          : findNonSparseKeys(\n              this.metadataKeys,\n              self.rows,\n              // @ts-expect-error\n              (r, f) => r.metadata[f],\n            )\n      },\n      /**\n       * #getter\n       */\n      get fields() {\n        return [\n          'name',\n          ...this.filteredNonMetadataKeys,\n          ...this.filteredMetadataKeys.map(m => `metadata.${m}`),\n        ]\n      },\n      /**\n       * #getter\n       */\n      get filteredRows() {\n        const arrFilters = [...self.filters.entries()]\n          .filter(f => f[1].length > 0)\n          .map(([key, val]) => [key, new Set(val)] as const)\n        return self.rows.filter(row =>\n          arrFilters.every(([key, val]) => val.has(getRowStr(key, row))),\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setVisible(args: Record<string, boolean>) {\n        self.visible = args\n      },\n\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            this.setVisible(Object.fromEntries(self.fields.map(c => [c, true])))\n          }),\n        )\n      },\n    }))\n}\n\nexport type FacetedStateModel = ReturnType<typeof facetedStateTreeF>\nexport type FacetedModel = Instance<FacetedStateModel>\n","import { types, addDisposer, Instance } from 'mobx-state-tree'\nimport { autorun, observable } from 'mobx'\nimport {\n  getConf,\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport {\n  dedupe,\n  getSession,\n  localStorageGetItem,\n  localStorageSetItem,\n  notEmpty,\n} from '@jbrowse/core/util'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport { filterTracks } from './filterTracks'\nimport { generateHierarchy } from './generateHierarchy'\nimport { findSubCategories, findTopLevelCategories } from './util'\nimport { facetedStateTreeF } from './facetedModel'\n\ntype MaybeAnyConfigurationModel = AnyConfigurationModel | undefined\n\ntype MaybeBoolean = boolean | undefined\n\ntype MaybeCollapsedKeys = [string, boolean][] | undefined\n\n// for settings that are config dependent\nfunction keyConfigPostFix() {\n  return typeof window !== 'undefined'\n    ? [\n        window.location.pathname,\n        new URLSearchParams(window.location.search).get('config'),\n      ]\n        .filter(f => !!f)\n        .join('-')\n    : 'empty'\n}\n\nfunction recentlyUsedK(assemblyNames: string[]) {\n  return ['recentlyUsedTracks', keyConfigPostFix(), assemblyNames.join(',')]\n    .filter(f => !!f)\n    .join('-')\n}\n\n// this has a extra } at the end because that's how it was initially\n// released\nfunction favoritesK() {\n  return `favoriteTracks-${keyConfigPostFix()}}`\n}\n\nfunction collapsedK(assemblyNames: string[], viewType: string) {\n  return [\n    'collapsedCategories',\n    keyConfigPostFix(),\n    assemblyNames.join(','),\n    viewType,\n  ].join('-')\n}\n\nfunction sortTrackNamesK() {\n  return 'sortTrackNames'\n}\n\nfunction sortCategoriesK() {\n  return 'sortCategories'\n}\n\nfunction localStorageGetJSON<T>(key: string, defaultValue: T) {\n  const val = localStorageGetItem(key)\n  return val !== undefined && val !== null && val\n    ? (JSON.parse(val) as T)\n    : defaultValue\n}\n\nfunction localStorageSetJSON(key: string, val: unknown) {\n  if (val !== undefined && val !== null) {\n    localStorageSetItem(key, JSON.stringify(val))\n  }\n}\n\nconst MAX_RECENTLY_USED = 10\n\n/**\n * #stateModel HierarchicalTrackSelectorWidget\n */\nexport default function stateTreeFactory(pluginManager: PluginManager) {\n  return types\n    .model('HierarchicalTrackSelectorWidget', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('HierarchicalTrackSelectorWidget'),\n\n      /**\n       * #property\n       */\n      view: types.safeReference(\n        pluginManager.pluggableMstType('view', 'stateModel'),\n      ),\n      /**\n       * #property\n       */\n      faceted: types.optional(facetedStateTreeF(), {}),\n    })\n    .volatile(() => ({\n      /**\n       * #volatile\n       */\n      favorites: localStorageGetJSON<string[]>(favoritesK(), []),\n      /**\n       * #volatile\n       */\n      recentlyUsed: [] as string[],\n      /**\n       * #volatile\n       */\n      selection: [] as AnyConfigurationModel[],\n      /**\n       * #volatile\n       */\n      sortTrackNames: localStorageGetJSON<MaybeBoolean>(\n        sortTrackNamesK(),\n        undefined,\n      ),\n      /**\n       * #volatile\n       */\n      sortCategories: localStorageGetJSON<MaybeBoolean>(\n        sortCategoriesK(),\n        undefined,\n      ),\n      /**\n       * #volatile\n       */\n      collapsed: observable.map<string, boolean>(),\n      /**\n       * #volatile\n       */\n      filterText: '',\n      /**\n       * #volatile\n       */\n      recentlyUsedCounter: 0,\n      /**\n       * #volatile\n       */\n      favoritesCounter: 0,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get shownTrackIds() {\n        return new Set<string>(\n          self.view?.tracks?.map(\n            (t: { configuration: { trackId: string } }) =>\n              t.configuration.trackId,\n          ),\n        )\n      },\n      /**\n       * #getter\n       */\n      get selectionSet() {\n        return new Set(self.selection)\n      },\n      /**\n       * #getter\n       */\n      get favoritesSet() {\n        return new Set(self.favorites)\n      },\n      /**\n       * #getter\n       */\n      get recentlyUsedSet() {\n        return new Set(self.recentlyUsed)\n      },\n      /**\n       * #getter\n       */\n      get assemblyNames(): string[] {\n        return self.view?.assemblyNames || []\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setSortTrackNames(val: boolean) {\n        self.sortTrackNames = val\n      },\n      /**\n       * #action\n       */\n      setSortCategories(val: boolean) {\n        self.sortCategories = val\n      },\n      /**\n       * #action\n       */\n      setSelection(elt: AnyConfigurationModel[]) {\n        self.selection = elt\n      },\n      /**\n       * #action\n       */\n      addToSelection(elt: AnyConfigurationModel[]) {\n        self.selection = dedupe([...self.selection, ...elt], e => e.trackId)\n      },\n      /**\n       * #action\n       */\n      removeFromSelection(elt: AnyConfigurationModel[]) {\n        const s = new Set(elt)\n        self.selection = self.selection.filter(f => !s.has(f))\n      },\n      /**\n       * #action\n       */\n      clearSelection() {\n        self.selection = []\n      },\n\n      /**\n       * #action\n       */\n      addToFavorites(trackId: string) {\n        self.favoritesCounter += 1\n        self.favorites = [...self.favorites, trackId]\n      },\n      /**\n       * #action\n       */\n      removeFromFavorites(trackId: string) {\n        self.favorites = self.favorites.filter(f => f !== trackId)\n      },\n      /**\n       * #action\n       */\n      clearFavorites() {\n        self.favorites = []\n      },\n\n      /**\n       * #action\n       */\n      setRecentlyUsedCounter(val: number) {\n        self.recentlyUsedCounter = val\n      },\n      /**\n       * #action\n       */\n      setRecentlyUsed(str: string[]) {\n        self.recentlyUsed = str\n      },\n      /**\n       * #action\n       */\n      setFavorites(str: string[]) {\n        self.favorites = str\n      },\n      /**\n       * #action\n       */\n      setFavoritesCounter(val: number) {\n        self.favoritesCounter = val\n      },\n      /**\n       * #action\n       */\n      addToRecentlyUsed(id: string) {\n        if (!self.recentlyUsed.includes(id)) {\n          self.recentlyUsedCounter = Math.min(\n            self.recentlyUsedCounter + 1,\n            MAX_RECENTLY_USED,\n          )\n          self.recentlyUsed =\n            self.recentlyUsed.length >= MAX_RECENTLY_USED\n              ? [...self.recentlyUsed.slice(1), id]\n              : [...self.recentlyUsed, id]\n        }\n      },\n      /**\n       * #action\n       */\n      clearRecentlyUsed() {\n        self.recentlyUsed = []\n      },\n      /**\n       * #action\n       */\n      setView(view: unknown) {\n        self.view = view\n      },\n      /**\n       * #action\n       */\n      toggleCategory(pathName: string) {\n        self.collapsed.set(pathName, !self.collapsed.get(pathName))\n      },\n      /**\n       * #action\n       */\n      setCategoryCollapsed(pathName: string, status: boolean) {\n        self.collapsed.set(pathName, status)\n      },\n      /**\n       * #action\n       */\n      expandAllCategories() {\n        self.collapsed.clear()\n      },\n      /**\n       * #action\n       */\n      setCollapsedCategories(str: [string, boolean][]) {\n        self.collapsed.replace(str)\n      },\n      /**\n       * #action\n       */\n      clearFilterText() {\n        self.filterText = ''\n      },\n      /**\n       * #action\n       */\n      setFilterText(newText: string) {\n        self.filterText = newText\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      isSelected(track: AnyConfigurationModel) {\n        return self.selectionSet.has(track)\n      },\n      /**\n       * #method\n       */\n      isFavorite(trackId: string) {\n        return self.favoritesSet.has(trackId)\n      },\n      /**\n       * #method\n       */\n      isRecentlyUsed(trackId: string) {\n        return self.recentlyUsedSet.has(trackId)\n      },\n      /**\n       * #method\n       */\n      getRefSeqTrackConf(assemblyName: string): MaybeAnyConfigurationModel {\n        const { assemblyManager } = getSession(self)\n        const assembly = assemblyManager.get(assemblyName)\n        const trackConf = assembly?.configuration.sequence\n        const viewType = pluginManager.getViewType(self.view.type)!\n        if (trackConf) {\n          for (const display of trackConf.displays) {\n            if (viewType.displayTypes.some(d => d.name === display.type)) {\n              return trackConf\n            }\n          }\n        }\n        return undefined\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get activeSortTrackNames() {\n        return (\n          self.sortTrackNames ??\n          getConf(getSession(self), ['hierarchical', 'sort', 'trackNames'])\n        )\n      },\n      /**\n       * #getter\n       */\n      get activeSortCategories() {\n        return (\n          self.sortCategories ??\n          getConf(getSession(self), ['hierarchical', 'sort', 'categories'])\n        )\n      },\n\n      /**\n       * #getter\n       * filter out tracks that don't match the current assembly/display types\n       */\n      get configAndSessionTrackConfigurations() {\n        return [\n          ...self.assemblyNames.map(a => self.getRefSeqTrackConf(a)),\n          ...filterTracks(getSession(self).tracks, self),\n        ].filter(notEmpty)\n      },\n      /**\n       * #getter\n       */\n      get allTrackConfigurations() {\n        const { connectionInstances = [] } = getSession(self)\n        return [\n          ...this.configAndSessionTrackConfigurations,\n          ...connectionInstances.flatMap(c => c.tracks),\n        ]\n      },\n\n      /**\n       * #getter\n       */\n      get allTrackConfigurationTrackIdSet() {\n        return new Map(this.allTrackConfigurations.map(t => [t.trackId, t]))\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * filters out tracks that are not in the favorites group\n       */\n      get favoriteTracks() {\n        return self.favorites\n          .filter(t => self.allTrackConfigurationTrackIdSet.has(t))\n          .map(t => self.allTrackConfigurationTrackIdSet.get(t)!)\n      },\n\n      /**\n       * #getter\n       * filters out tracks that are not in the recently used group\n       */\n      get recentlyUsedTracks() {\n        return self.recentlyUsed\n          .filter(t => self.allTrackConfigurationTrackIdSet.has(t))\n          .map(t => self.allTrackConfigurationTrackIdSet.get(t)!)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get allTracks() {\n        const { connectionInstances = [] } = getSession(self)\n        return [\n          {\n            group: 'Tracks',\n            tracks: self.configAndSessionTrackConfigurations,\n            noCategories: false,\n            menuItems: [],\n          },\n          ...connectionInstances.flatMap(c => ({\n            group: getConf(c, 'name'),\n            tracks: c.tracks,\n            noCategories: false,\n            menuItems: [],\n          })),\n        ]\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get hierarchy() {\n        return {\n          name: 'Root',\n          id: 'Root',\n          isOpenByDefault: true,\n          type: 'category' as const,\n          children: self.allTracks.map(s => ({\n            name: s.group,\n            id: s.group,\n            type: 'category' as const,\n            isOpenByDefault: !self.collapsed.get(s.group),\n            menuItems: s.menuItems,\n            children: generateHierarchy({\n              // @ts-expect-error conflict between IMSTMap and Map types in typescript 5.6\n              model: self,\n              trackConfs: s.tracks,\n              extra: s.group,\n              noCategories: s.noCategories,\n            }),\n          })),\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      collapseSubCategories() {\n        const paths = [] as string[]\n        findSubCategories(self.hierarchy.children, paths)\n        for (const path of paths) {\n          self.setCategoryCollapsed(path, true)\n        }\n      },\n      /**\n       * #action\n       */\n      collapseTopLevelCategories() {\n        const paths = [] as string[]\n        for (const trackGroups of self.hierarchy.children) {\n          if (trackGroups.children.length) {\n            findTopLevelCategories(trackGroups.children, paths)\n          }\n        }\n        for (const path of paths) {\n          self.setCategoryCollapsed(path, true)\n        }\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get hasAnySubcategories() {\n        return self.allTracks.some(group =>\n          group.tracks.some(t => readConfObject(t, 'category')?.length > 1),\n        )\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        // this should be the first autorun to properly initialize\n        addDisposer(\n          self,\n          autorun(() => {\n            const { assemblyNames, view } = self\n            self.setRecentlyUsed(\n              localStorageGetJSON<string[]>(recentlyUsedK(assemblyNames), []),\n            )\n            if (view) {\n              const lc = localStorageGetJSON<MaybeCollapsedKeys>(\n                collapsedK(assemblyNames, view.type),\n                undefined,\n              )\n              const r = ['hierarchical', 'defaultCollapsed']\n              const session = getSession(self)\n              if (!lc) {\n                self.expandAllCategories()\n                if (getConf(session, [...r, 'topLevelCategories'])) {\n                  self.collapseTopLevelCategories()\n                }\n                if (getConf(session, [...r, 'subCategories'])) {\n                  self.collapseSubCategories()\n                }\n                for (const elt of getConf(session, [...r, 'categoryNames'])) {\n                  self.setCategoryCollapsed(`Tracks-${elt}`, true)\n                }\n              } else {\n                self.setCollapsedCategories(lc)\n              }\n            }\n          }),\n        )\n        // this should be the second autorun\n        addDisposer(\n          self,\n          autorun(() => {\n            const {\n              sortTrackNames,\n              sortCategories,\n              favorites,\n              recentlyUsed,\n              assemblyNames,\n              collapsed,\n              view,\n            } = self\n            localStorageSetJSON(recentlyUsedK(assemblyNames), recentlyUsed)\n            localStorageSetJSON(favoritesK(), favorites)\n            localStorageSetJSON(sortTrackNamesK(), sortTrackNames)\n            localStorageSetJSON(sortCategoriesK(), sortCategories)\n            if (view) {\n              localStorageSetJSON(\n                collapsedK(assemblyNames, view.type),\n                collapsed,\n              )\n            }\n          }),\n        )\n      },\n    }))\n}\n\nexport type HierarchicalTrackSelectorStateModel = ReturnType<\n  typeof stateTreeFactory\n>\nexport type HierarchicalTrackSelectorModel =\n  Instance<HierarchicalTrackSelectorStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nconst configSchema = ConfigurationSchema('HierarchicalTrackSelectorWidget', {})\nexport default configSchema\n","import stateModelFactory from './model'\nimport configSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport { lazy } from 'react'\n\nexport default function HierarchicalTrackSelectorWidgetF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'HierarchicalTrackSelectorWidget',\n      heading: 'Available tracks',\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(\n        () => import('./components/HierarchicalTrackSelector'),\n      ),\n    })\n  })\n}\n\nexport {\n  type HierarchicalTrackSelectorModel,\n  default as stateModelFactory,\n} from './model'\nexport { default as configSchema } from './configSchema'\n","import { types, Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\n\nexport default function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .model('PluginStoreModel', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('PluginStoreWidget'),\n      /**\n       * #property\n       */\n      filterText: '',\n      /**\n       * #property\n       */\n      view: types.safeReference(\n        pluginManager.pluggableMstType('view', 'stateModel'),\n      ),\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      clearFilterText() {\n        self.filterText = ''\n      },\n      /**\n       * #action\n       */\n      setFilterText(newText: string) {\n        self.filterText = newText\n      },\n    }))\n}\n\nexport type PluginStoreStateModel = ReturnType<typeof stateModelFactory>\nexport type PluginStoreModel = Instance<PluginStoreStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { lazy } from 'react'\n\nimport stateModelFactory from './model'\nconst configSchema = ConfigurationSchema('PluginStoreWidget', {})\n\nexport default function PluginStoreWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'PluginStoreWidget',\n      heading: 'Plugin store',\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/PluginStoreWidget')),\n    })\n  })\n}\n","import { baseConnectionConfig } from '@jbrowse/core/pluggableElementTypes/models'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config UCSCTrackHubConnection\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst UCSCTrackHubConnection = ConfigurationSchema(\n  'UCSCTrackHubConnection',\n  {\n    /**\n     * #slot\n     */\n    hubTxtLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: 'http://mysite.com/path/to/hub.txt',\n        locationType: 'UriLocation',\n      },\n      description: 'location of the hub file (usually called hub.txt)',\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'optional list of genomes to import from this track hub, if empty all genomes will be imported',\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseConnectionConfig,\n  },\n)\n\nexport default UCSCTrackHubConnection\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseConnectionModelFactory } from '@jbrowse/core/pluggableElementTypes/models'\nimport { ConfigurationReference } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n// locals\nimport configSchema from './configSchema'\n\n/**\n * #stateModel UCSCTrackHubConnection\n * extends BaseConnectionModel\n */\nexport default function UCSCTrackHubConnection(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'UCSCTrackHubConnection',\n      BaseConnectionModelFactory(pluginManager),\n      types.model({\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        type: types.literal('UCSCTrackHubConnection'),\n      }),\n    )\n    .actions(self => ({\n      /**\n       * #action\n       */\n      async connect() {\n        const { doConnect } = await import('./doConnect')\n\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        doConnect(self)\n      },\n    }))\n}\n","import { ConnectionType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport stateModelFactory from './model'\nimport configSchema from './configSchema'\n\nexport default function UCSCTrackHubConnectionF(pluginManager: PluginManager) {\n  pluginManager.addConnectionType(\n    () =>\n      new ConnectionType({\n        name: 'UCSCTrackHubConnection',\n        configSchema,\n        stateModel: stateModelFactory(pluginManager),\n        displayName: 'UCSC Track Hub',\n        description: 'A track or assembly hub in the Track Hub format',\n        url: '//genome.ucsc.edu/goldenPath/help/hgTrackHubHelp.html#Intro',\n      }),\n  )\n}\n","import { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { Dotplot1DViewModel } from '../model'\n\nexport function locstr(\n  px: number,\n  view: Dotplot1DViewModel,\n  includeAsm = true,\n) {\n  const { assemblyName, refName, start, offset, oob } = view.pxToBp(px)\n  const coord = Math.floor(start + offset)\n  return oob\n    ? 'out of bounds'\n    : `${\n        includeAsm ? `{${assemblyName}}` : ''\n      }${refName}:${coord.toLocaleString('en-US')}`\n}\n\nexport function getBlockLabelKeysToHide(\n  blocks: BaseBlock[],\n  length: number,\n  viewOffsetPx: number,\n) {\n  const blockLabelKeysToHide = new Set<string>()\n  const sortedBlocks = [...blocks].sort((a, b) => {\n    const alen = a.end - a.start\n    const blen = b.end - b.start\n    return blen - alen\n  })\n  const positions = Array.from({ length: Math.round(length) })\n  for (const { key, offsetPx } of sortedBlocks) {\n    const y = Math.round(length - offsetPx + viewOffsetPx)\n    const labelBounds = [Math.max(y - 12, 0), y]\n    if (y === 0 || positions.slice(...labelBounds).some(Boolean)) {\n      blockLabelKeysToHide.add(key)\n    } else {\n      positions.fill(true, ...labelBounds)\n    }\n  }\n  return blockLabelKeysToHide\n}\n/**\n * Given a scale ( bp/px ) and minimum distances (px) between major and minor\n * gridlines, return an object like `{ majorPitch: bp, minorPitch: bp }` giving\n * the gridline pitches to use.\n */\nexport function chooseGridPitch(\n  scale: number,\n  minMajorPitchPx: number,\n  minMinorPitchPx: number,\n) {\n  scale = Math.abs(scale)\n  const minMajorPitchBp = minMajorPitchPx * scale\n  const majorMagnitude = +Number(minMajorPitchBp)\n    .toExponential()\n    .split(/e/i)[1]!\n\n  let majorPitch = 10 ** majorMagnitude\n  while (majorPitch < minMajorPitchBp) {\n    majorPitch *= 2\n    if (majorPitch >= minMajorPitchBp) {\n      break\n    }\n    majorPitch *= 2.5\n  }\n\n  majorPitch = Math.max(majorPitch, 5)\n\n  const majorPitchPx = majorPitch / scale\n\n  let minorPitch = 0\n  if (!(majorPitch % 10) && majorPitchPx / 10 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 10\n  } else if (!(majorPitch % 5) && majorPitchPx / 5 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 5\n  } else if (!(majorPitch % 2) && majorPitchPx / 2 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 2\n  }\n\n  return { majorPitch, minorPitch }\n}\n\nexport function makeTicks(\n  regions: BaseBlock[],\n  bpPerPx: number,\n  emitMajor = true,\n  emitMinor = true,\n) {\n  const ticks = []\n  const gridPitch = chooseGridPitch(bpPerPx, 60, 15)\n  const iterPitch = gridPitch.minorPitch || gridPitch.majorPitch\n  for (const { start, end, refName } of regions) {\n    let index = 0\n\n    const minBase = start\n    const maxBase = end\n\n    for (\n      let base = Math.floor(minBase / iterPitch) * iterPitch;\n      base < Math.ceil(maxBase / iterPitch) * iterPitch + 1;\n      base += iterPitch\n    ) {\n      if (emitMinor && base % gridPitch.majorPitch) {\n        ticks.push({ type: 'minor', base: base - 1, index, refName })\n        index += 1\n      } else if (emitMajor && Math.abs(base - start) > gridPitch.minorPitch) {\n        ticks.push({ type: 'major', base: base - 1, index, refName })\n        index += 1\n      }\n    }\n  }\n  return ticks\n}\n","import React from 'react'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles()(theme => ({\n  contentBlock: {\n    position: 'relative',\n    minHeight: '100%',\n    boxSizing: 'border-box',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n  },\n  elidedBlock: {\n    minHeight: '100%',\n    boxSizing: 'border-box',\n    backgroundColor: '#999',\n    backgroundImage:\n      'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n  },\n  interRegionPaddingBlock: {\n    minHeight: '100%',\n    backgroundColor: theme.palette.text.disabled,\n  },\n  boundaryPaddingBlock: {\n    minHeight: '100%',\n    backgroundColor: theme.palette.action.disabledBackground,\n  },\n}))\n\nconst ContentBlock = observer(function ({\n  block,\n  children,\n}: {\n  block: BaseBlock\n  children: React.ReactNode\n}) {\n  const { classes } = useStyles()\n  const { widthPx } = block\n  return (\n    <div style={{ width: widthPx }} className={classes.contentBlock}>\n      {children}\n    </div>\n  )\n})\n\nfunction ElidedBlock({ width }: { width: number }) {\n  const { classes } = useStyles()\n  return <div className={classes.elidedBlock} style={{ width }} />\n}\n\nfunction InterRegionPaddingBlock({\n  boundary,\n  width,\n  style = {},\n}: {\n  boundary: boolean\n  width: number\n  style?: React.CSSProperties\n}) {\n  const { classes } = useStyles()\n  return (\n    <div\n      style={{\n        ...style,\n        width,\n      }}\n      className={\n        boundary\n          ? classes.boundaryPaddingBlock\n          : classes.interRegionPaddingBlock\n      }\n    />\n  )\n}\n\nexport { ContentBlock, ElidedBlock, InterRegionPaddingBlock }\n","import React from 'react'\nimport { Tooltip, Alert, AlertColor } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  ellipses: {\n    textOverflow: 'ellipsis',\n    overflow: 'hidden',\n  },\n})\n\nexport default function BlockMsg({\n  message,\n  severity,\n  action,\n}: {\n  message: string\n  severity?: AlertColor\n  action?: React.ReactNode\n}) {\n  const { classes } = useStyles()\n  return (\n    <Alert\n      severity={severity}\n      action={action}\n      classes={{ message: classes.ellipses }}\n    >\n      <Tooltip title={message}>\n        <div>{message}</div>\n      </Tooltip>\n    </Alert>\n  )\n}\n","import React, { lazy, Suspense } from 'react'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n// locals\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nconst BaseTooltip = lazy(() => import('@jbrowse/core/ui/BaseTooltip'))\n\ninterface Props {\n  message: React.ReactNode | string\n}\nconst TooltipContents = React.forwardRef<HTMLDivElement, Props>(\n  function TooltipContents2({ message }, ref) {\n    return (\n      <div ref={ref}>\n        {React.isValidElement(message) ? (\n          message\n        ) : message ? (\n          <SanitizedHTML html={String(message)} />\n        ) : null}\n      </div>\n    )\n  },\n)\n\ntype Coord = [number, number]\nconst Tooltip = observer(function ({\n  model,\n  clientMouseCoord,\n}: {\n  model: BaseLinearDisplayModel\n  clientMouseCoord: Coord\n}) {\n  const { featureUnderMouse } = model\n  const x = clientMouseCoord[0] + 15\n  const y = clientMouseCoord[1]\n\n  const contents = featureUnderMouse\n    ? getConf(model, 'mouseover', { feature: featureUnderMouse })\n    : undefined\n\n  return featureUnderMouse && contents ? (\n    <Suspense fallback={null}>\n      <BaseTooltip clientPoint={{ x, y }}>\n        <TooltipContents message={contents} />\n      </BaseTooltip>\n    </Suspense>\n  ) : null\n})\n\nexport default Tooltip\n","import React, { lazy } from 'react'\nimport { Tooltip, IconButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport { getSession } from '@jbrowse/core/util'\n\n// icons\nimport RefreshIcon from '@mui/icons-material/Refresh'\nimport ReportIcon from '@mui/icons-material/Report'\n\n// locals\nimport BlockMsg from './BlockMsg'\n\nconst ErrorMessageStackTraceDialog = lazy(\n  () => import('@jbrowse/core/ui/ErrorMessageStackTraceDialog'),\n)\n\nconst useStyles = makeStyles()(theme => {\n  const bg = theme.palette.action.disabledBackground\n  return {\n    loading: {\n      paddingLeft: '0.6em',\n      backgroundColor: theme.palette.background.default,\n      backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,\n      textAlign: 'center',\n    },\n  }\n})\n\nconst LoadingMessage = observer(({ model }: { model: { status?: string } }) => {\n  const { classes } = useStyles()\n  const { status: blockStatus } = model\n  const { message: displayStatus } = getParent<{ message?: string }>(model, 2)\n  const status = displayStatus || blockStatus\n  return (\n    <div className={classes.loading}>\n      <LoadingEllipses message={status} />\n    </div>\n  )\n})\n\nconst ServerSideRenderedBlockContent = observer(function ({\n  model,\n}: {\n  model: {\n    error?: unknown\n    reload: () => void\n    message: React.ReactNode\n    filled?: boolean\n    status?: string\n    reactElement?: React.ReactElement\n  }\n}) {\n  if (model.error) {\n    return (\n      <BlockMsg\n        message={`${model.error}`}\n        severity=\"error\"\n        action={\n          <>\n            <Tooltip title=\"Reload track\">\n              <IconButton\n                data-testid=\"reload_button\"\n                onClick={() => {\n                  model.reload()\n                }}\n              >\n                <RefreshIcon />\n              </IconButton>\n            </Tooltip>\n            <Tooltip title=\"Show stack trace\">\n              <IconButton\n                onClick={() => {\n                  getSession(model).queueDialog(onClose => [\n                    ErrorMessageStackTraceDialog,\n                    { onClose, error: model.error as Error },\n                  ])\n                }}\n              >\n                <ReportIcon />\n              </IconButton>\n            </Tooltip>\n          </>\n        }\n      />\n    )\n  } else if (model.message) {\n    // the message can be a fully rendered react component, e.g. the region too large message\n    return React.isValidElement(model.message) ? (\n      model.message\n    ) : (\n      <BlockMsg message={`${model.message}`} severity=\"info\" />\n    )\n  } else if (!model.filled) {\n    return <LoadingMessage model={model} />\n  } else {\n    return model.reactElement\n  }\n})\n\nexport default ServerSideRenderedBlockContent\n","import React from 'react'\nimport {\n  types,\n  getParent,\n  isAlive,\n  cast,\n  Instance,\n  getSnapshot,\n} from 'mobx-state-tree'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport {\n  assembleLocString,\n  getSession,\n  getContainingDisplay,\n  getContainingView,\n  getViewParams,\n  makeAbortableReaction,\n  Feature,\n} from '@jbrowse/core/util'\nimport { Region } from '@jbrowse/core/util/types/mst'\nimport {\n  AbstractDisplayModel,\n  isRetryException,\n} from '@jbrowse/core/util/types'\n\nimport {\n  getTrackAssemblyNames,\n  getRpcSessionId,\n} from '@jbrowse/core/util/tracks'\n\n// locals\nimport ServerSideRenderedBlockContent from '../components/ServerSideRenderedBlockContent'\n\n// the MST state of a single server-side-rendered block in a display\nconst blockState = types\n  .model('BlockState', {\n    key: types.string,\n    region: Region,\n    reloadFlag: 0,\n    isLeftEndOfDisplayedRegion: false,\n    isRightEndOfDisplayedRegion: false,\n  })\n  // NOTE: all this volatile stuff has to be filled in at once, so that it stays consistent\n  .volatile(() => ({\n    renderInProgress: undefined as AbortController | undefined,\n    filled: false,\n    reactElement: undefined as React.ReactElement | undefined,\n    features: undefined as Map<string, Feature> | undefined,\n    layout: undefined as any,\n    status: '',\n    error: undefined as unknown,\n    message: undefined as string | undefined,\n    maxHeightReached: false,\n    ReactComponent: ServerSideRenderedBlockContent,\n    renderProps: undefined as any,\n  }))\n  .actions(self => {\n    let renderInProgress: undefined | AbortController\n    return {\n      doReload() {\n        self.reloadFlag = self.reloadFlag + 1\n      },\n      afterAttach() {\n        const display = getContainingDisplay(self)\n        setTimeout(() => {\n          if (isAlive(self)) {\n            makeAbortableReaction(\n              self as any,\n              renderBlockData,\n              renderBlockEffect, // reaction doesn't expect async here\n              {\n                name: `${display.id}/${assembleLocString(\n                  self.region,\n                )} rendering`,\n                delay: display.renderDelay,\n                fireImmediately: true,\n              },\n              this.setLoading,\n              this.setRendered,\n              this.setError,\n            )\n          }\n        }, display.renderDelay)\n      },\n      setStatus(message: string) {\n        self.status = message\n      },\n      setLoading(abortController: AbortController) {\n        if (\n          renderInProgress !== undefined &&\n          !renderInProgress.signal.aborted\n        ) {\n          renderInProgress.abort()\n        }\n        self.filled = false\n        self.message = undefined\n        self.reactElement = undefined\n        self.features = undefined\n        self.layout = undefined\n        self.error = undefined\n        self.maxHeightReached = false\n        self.renderProps = undefined\n        renderInProgress = abortController\n      },\n      setMessage(messageText: string) {\n        if (renderInProgress && !renderInProgress.signal.aborted) {\n          renderInProgress.abort()\n        }\n        self.filled = false\n        self.message = messageText\n        self.reactElement = undefined\n        self.features = undefined\n        self.layout = undefined\n        self.error = undefined\n        self.maxHeightReached = false\n        self.renderProps = undefined\n        renderInProgress = undefined\n      },\n      setRendered(\n        props:\n          | {\n              reactElement: React.ReactElement\n              features: Map<string, Feature>\n              layout: any\n              maxHeightReached: boolean\n              renderProps: any\n            }\n          | undefined,\n      ) {\n        if (!props) {\n          return\n        }\n        const {\n          reactElement,\n          features,\n          layout,\n          maxHeightReached,\n          renderProps,\n        } = props\n        self.filled = true\n        self.message = undefined\n        self.reactElement = reactElement\n        self.features = features\n        self.layout = layout\n        self.error = undefined\n        self.maxHeightReached = maxHeightReached\n        self.renderProps = renderProps\n        renderInProgress = undefined\n      },\n      setError(error: unknown) {\n        console.error(error)\n        if (renderInProgress && !renderInProgress.signal.aborted) {\n          renderInProgress.abort()\n        }\n        // the rendering failed for some reason\n        self.filled = false\n        self.message = undefined\n        self.reactElement = undefined\n        self.features = undefined\n        self.layout = undefined\n        self.maxHeightReached = false\n        self.error = error\n        self.renderProps = undefined\n        renderInProgress = undefined\n        if (isRetryException(error as Error)) {\n          this.reload()\n        }\n      },\n      reload() {\n        self.renderInProgress = undefined\n        self.filled = false\n        self.reactElement = undefined\n        self.features = undefined\n        self.layout = undefined\n        self.error = undefined\n        self.message = undefined\n        self.maxHeightReached = false\n        self.ReactComponent = ServerSideRenderedBlockContent\n        self.renderProps = undefined\n        getParent<any>(self, 2).reload()\n      },\n      beforeDestroy() {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        ;(async () => {\n          try {\n            if (renderInProgress && !renderInProgress.signal.aborted) {\n              renderInProgress.abort()\n            }\n            const display = getContainingDisplay(self)\n            const { rpcManager } = getSession(self)\n            const { rendererType } = display\n            const { renderArgs } = renderBlockData(cast(self))\n            // renderArgs can be undefined if an error occurred in this block\n            if (renderArgs) {\n              await rendererType.freeResourcesInClient(\n                rpcManager,\n                JSON.parse(JSON.stringify(renderArgs)),\n              )\n            }\n          } catch (e) {\n            console.error('Error while destroying block', e)\n          }\n        })()\n      },\n    }\n  })\n\nexport default blockState\nexport type BlockStateModel = typeof blockState\nexport type BlockModel = Instance<BlockStateModel>\n\n// calls the render worker to render the block content not using a flow for\n// this, because the flow doesn't work with autorun\nexport function renderBlockData(\n  self: BlockModel,\n  optDisplay?: AbstractDisplayModel,\n) {\n  try {\n    const display = optDisplay || (getContainingDisplay(self) as any)\n    const { assemblyManager, rpcManager } = getSession(display)\n    const { adapterConfig, rendererType, error, parentTrack } = display\n    const assemblyNames = getTrackAssemblyNames(parentTrack)\n    const regionAsm = self.region.assemblyName\n    if (\n      !assemblyNames.includes(regionAsm) &&\n      !assemblyNames.some(name => assemblyManager.get(name)?.hasName(regionAsm))\n    ) {\n      throw new Error(\n        `region assembly (${regionAsm}) does not match track assemblies (${assemblyNames})`,\n      )\n    }\n\n    const renderProps = display.renderProps()\n    const { config } = renderProps\n\n    // This line is to trigger the mobx reaction when the config changes\n    // It won't trigger the reaction if it doesn't think we're accessing it\n    readConfObject(config)\n\n    const sessionId = getRpcSessionId(display)\n    const layoutId = getContainingView(display).id\n    const cannotBeRenderedReason = display.regionCannotBeRendered(self.region)\n\n    return {\n      rendererType,\n      rpcManager,\n      renderProps,\n      cannotBeRenderedReason,\n      displayError: error,\n      renderArgs: {\n        statusCallback: (message: string) => {\n          if (isAlive(self)) {\n            self.setStatus(message)\n          }\n        },\n        assemblyName: self.region.assemblyName,\n        regions: [getSnapshot(self.region)],\n        adapterConfig,\n        rendererType: rendererType.name,\n        sessionId,\n        layoutId,\n        blockKey: self.key,\n        reloadFlag: self.reloadFlag,\n        timeout: 1000000, // 10000,\n      },\n    }\n  } catch (e) {\n    return { displayError: e }\n  }\n}\n\nasync function renderBlockEffect(\n  props: ReturnType<typeof renderBlockData> | undefined,\n  signal: AbortSignal,\n  self: BlockModel,\n) {\n  if (!props) {\n    return\n  }\n  const {\n    rendererType,\n    renderProps,\n    rpcManager,\n    renderArgs,\n    cannotBeRenderedReason,\n    displayError,\n  } = props\n  if (!isAlive(self)) {\n    return undefined\n  }\n\n  if (displayError) {\n    self.setError(displayError)\n    return undefined\n  }\n  if (cannotBeRenderedReason) {\n    self.setMessage(cannotBeRenderedReason)\n    return undefined\n  }\n\n  if (renderProps.notReady) {\n    return undefined\n  }\n\n  const { reactElement, features, layout, maxHeightReached } =\n    await rendererType.renderInClient(rpcManager, {\n      ...renderArgs,\n      ...renderProps,\n      viewParams: getViewParams(self),\n      signal,\n    })\n  return {\n    reactElement,\n    features,\n    layout,\n    maxHeightReached,\n    renderProps,\n  }\n}\n","import { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { getContainingView, getSession } from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { IAnyStateTreeNode, isAlive } from 'mobx-state-tree'\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\n\nexport interface RenderProps {\n  rendererType: any\n  renderArgs: Record<string, any>\n  renderProps: Record<string, any>\n  displayError: unknown\n  rpcManager: { call: (...args: unknown[]) => void }\n  cannotBeRenderedReason: string\n}\n\nexport interface ErrorProps {\n  displayError: string\n}\n\nexport function getDisplayStr(totalBytes: number) {\n  if (Math.floor(totalBytes / 1000000) > 0) {\n    return `${Number.parseFloat((totalBytes / 1000000).toPrecision(3))} Mb`\n  } else if (Math.floor(totalBytes / 1000) > 0) {\n    return `${Number.parseFloat((totalBytes / 1000).toPrecision(3))} Kb`\n  } else {\n    return `${Math.floor(totalBytes)} bytes`\n  }\n}\n\n// stabilize clipid under test for snapshot\nexport function getId(id: string, index: number) {\n  const notJest = typeof jest === 'undefined'\n  return ['clip', notJest ? id : 'jest', index, notJest ? Math.random() : '']\n    .filter(f => !!f)\n    .join('-')\n}\n\nexport async function getFeatureDensityStatsPre(\n  self: IAnyStateTreeNode & {\n    adapterConfig?: AnyConfigurationModel\n    setMessage: (arg: string) => void\n  },\n) {\n  const view = getContainingView(self) as LinearGenomeViewModel\n  const regions = view.staticBlocks.contentBlocks\n\n  const { rpcManager } = getSession(self)\n  const { adapterConfig } = self\n  if (!adapterConfig) {\n    // A track extending the base track might not have an adapter config\n    // e.g. Apollo tracks don't use adapters\n    return {}\n  }\n  const sessionId = getRpcSessionId(self)\n\n  return rpcManager.call(sessionId, 'CoreGetFeatureDensityStats', {\n    sessionId,\n    regions,\n    adapterConfig,\n    statusCallback: (message: string) => {\n      if (isAlive(self)) {\n        self.setMessage(message)\n      }\n    },\n  }) as Promise<FeatureDensityStats>\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// core\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { getFillProps } from '@jbrowse/core/util'\n\n// locals\nimport { getCytobands } from './util'\nimport { HEADER_OVERVIEW_HEIGHT } from '../consts'\n\n// rounded rect from https://stackoverflow.com/a/45889603/2129219\nfunction rightRoundedRect(\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  radius: number,\n) {\n  return `M${x},${y}h${width - radius}a${radius},${radius} 0 0 1 ${radius},${radius}v${height - 2 * radius}a${radius},${radius} 0 0 1 ${-radius},${radius}h${radius - width}z`\n}\n\nfunction leftRoundedRect(\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  radius: number,\n) {\n  return `M${x + radius},${y}h${width - radius}v${height}h${radius - width}a${radius},${radius} 0 0 1 ${-radius},${-radius}v${2 * radius - height}a${radius},${radius} 0 0 1 ${radius},${-radius}z`\n}\n\nfunction leftTriangle(x: number, y: number, width: number, height: number) {\n  return [\n    [x, 0],\n    [x + width, height / 2],\n    [x, height],\n  ].toString()\n}\n\nfunction rightTriangle(x: number, y: number, width: number, height: number) {\n  return [\n    [x, height / 2],\n    [x + width, 0],\n    [x + width, height],\n  ].toString()\n}\n\nconst colorMap: Record<string, string> = {\n  gneg: 'rgb(227,227,227)',\n  gpos25: 'rgb(142,142,142)',\n  gpos50: 'rgb(85,85,85)',\n  gpos100: 'rgb(0,0,0)',\n  gpos75: 'rgb(57,57,57)',\n  gvar: 'rgb(0,0,0)',\n  stalk: 'rgb(127,127,127)',\n  acen: '#800',\n}\n\nconst Cytobands = observer(function ({\n  overview,\n  block,\n  assembly,\n}: {\n  overview: Base1DViewModel\n  assembly?: Assembly\n  block: ContentBlock\n}) {\n  const { offsetPx, reversed } = block\n  const cytobands = getCytobands(assembly, block.refName)\n  const lcap = reversed ? cytobands.length - 1 : 0\n  const rcap = reversed ? 0 : cytobands.length - 1\n\n  const h = HEADER_OVERVIEW_HEIGHT\n  let centromereSeen = false\n  return (\n    <g transform={`translate(-${offsetPx})`}>\n      {cytobands.map((args, index) => {\n        const k = JSON.stringify(args)\n        const { refName, type, start, end } = args\n        const s = overview.bpToPx({ refName, coord: start }) || 0\n        const e = overview.bpToPx({ refName, coord: end }) || 0\n        const l = Math.min(s, e)\n        const w = Math.abs(e - s)\n        const c = colorMap[type] || 'black'\n        if (type === 'acen' && !centromereSeen) {\n          centromereSeen = true // the next acen entry is drawn with different right triangle\n          return (\n            <polygon\n              key={k}\n              points={\n                reversed\n                  ? rightTriangle(s - w, 0, w, h)\n                  : leftTriangle(s, 0, w, h)\n              }\n              {...getFillProps(c)}\n            />\n          )\n        }\n        if (type === 'acen' && centromereSeen) {\n          return (\n            <polygon\n              key={k}\n              points={\n                reversed\n                  ? leftTriangle(s - w, 0, w, h)\n                  : rightTriangle(s, 0, w, h)\n              }\n              {...getFillProps(c)}\n            />\n          )\n        }\n        if (lcap === index) {\n          return (\n            <path\n              key={k}\n              d={leftRoundedRect(l, 0, w, h, 8)}\n              {...getFillProps(c)}\n            />\n          )\n        }\n        if (rcap === index) {\n          return (\n            <path\n              key={k}\n              d={rightRoundedRect(l, 0, w, h, 8)}\n              {...getFillProps(c)}\n            />\n          )\n        }\n        return (\n          <rect key={k} x={l} y={0} width={w} height={h} {...getFillProps(c)} />\n        )\n      })}\n    </g>\n  )\n})\n\nexport default Cytobands\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\n\n// icons\nimport DragIcon from '@mui/icons-material/DragIndicator'\n\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()({\n  dragHandle: {\n    cursor: 'grab',\n  },\n  dragHandleIcon: {\n    display: 'inline-block',\n    verticalAlign: 'middle',\n    pointerEvents: 'none',\n  },\n})\n\nfunction TrackLabelDragHandle({\n  trackId,\n  view,\n  track,\n}: {\n  trackId: string\n  track: BaseTrackModel\n  view: LinearGenomeViewModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <span\n      draggable\n      className={classes.dragHandle}\n      onDragStart={event => {\n        const target = event.currentTarget\n        if (target.parentNode) {\n          const parent = target.parentNode as HTMLElement\n          event.dataTransfer.setDragImage(parent, 20, 20)\n          view.setDraggingTrackId(track.id)\n        }\n      }}\n      onDragEnd={() => {\n        view.setDraggingTrackId(undefined)\n      }}\n      data-testid={`dragHandle-${view.id}-${trackId}`}\n    >\n      <DragIcon className={classes.dragHandleIcon} fontSize=\"small\" />\n    </span>\n  )\n}\n\nexport default TrackLabelDragHandle\n","import React from 'react'\nimport { IconButton, Paper, Typography, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { getSession, getContainingView } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\nimport CloseIcon from '@mui/icons-material/Close'\nimport MinimizeIcon from '@mui/icons-material/Minimize'\nimport AddIcon from '@mui/icons-material/Add'\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown'\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'\n\nimport { LinearGenomeViewModel } from '..'\nimport TrackLabelDragHandle from './TrackLabelDragHandle'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    background: alpha(theme.palette.background.paper, 0.8),\n    '&:hover': {\n      background: theme.palette.background.paper,\n    },\n  },\n  trackName: {\n    fontSize: '0.8rem',\n  },\n  iconButton: {\n    padding: theme.spacing(1),\n  },\n}))\n\ntype LGV = LinearGenomeViewModel\n\ninterface Props {\n  track: BaseTrackModel\n  className?: string\n}\n\nconst TrackLabel = observer(\n  React.forwardRef<HTMLDivElement, Props>(function TrackLabel2(\n    { track, className },\n    ref,\n  ) {\n    const { classes, cx } = useStyles()\n    const view = getContainingView(track) as LGV\n    const session = getSession(track)\n    const trackConf = track.configuration\n    const minimized = track.minimized\n    const trackId = getConf(track, 'trackId')\n    const trackName = getTrackName(trackConf, session)\n    const items = [\n      {\n        label: 'Track order',\n        type: 'subMenu',\n        priority: 2000,\n        subMenu: [\n          {\n            label: minimized ? 'Restore track' : 'Minimize track',\n            icon: minimized ? AddIcon : MinimizeIcon,\n            onClick: () => {\n              track.setMinimized(!minimized)\n            },\n          },\n          {\n            label: 'Move track to top',\n            icon: KeyboardDoubleArrowUpIcon,\n            onClick: () => {\n              view.moveTrackToTop(track.id)\n            },\n          },\n\n          {\n            label: 'Move track up',\n            icon: KeyboardArrowUpIcon,\n            onClick: () => {\n              view.moveTrackUp(track.id)\n            },\n          },\n          {\n            label: 'Move track down',\n            icon: KeyboardArrowDownIcon,\n            onClick: () => {\n              view.moveTrackDown(track.id)\n            },\n          },\n          {\n            label: 'Move track to bottom',\n            icon: KeyboardDoubleArrowDownIcon,\n            onClick: () => {\n              view.moveTrackToBottom(track.id)\n            },\n          },\n        ],\n      },\n      ...(session.getTrackActionMenuItems?.(trackConf) || []),\n      ...track.trackMenuItems(),\n    ].sort((a, b) => (b?.priority || 0) - (a?.priority || 0))\n\n    return (\n      <Paper ref={ref} className={cx(className, classes.root)}>\n        <TrackLabelDragHandle track={track} trackId={trackId} view={view} />\n        <IconButton\n          onClick={() => view.hideTrack(trackId)}\n          className={classes.iconButton}\n          title=\"close this track\"\n        >\n          <CloseIcon fontSize=\"small\" />\n        </IconButton>\n\n        <Typography\n          variant=\"body1\"\n          component=\"span\"\n          className={classes.trackName}\n          onMouseDown={event => {\n            // avoid becoming a click-and-drag action on the lgv\n            event.stopPropagation()\n          }}\n        >\n          <SanitizedHTML\n            html={[trackName, minimized ? '(minimized)' : '']\n              .filter(f => !!f)\n              .join(' ')}\n          />\n        </Typography>\n\n        <CascadingMenuButton menuItems={items} data-testid=\"track_menu_icon\">\n          <MoreVertIcon fontSize=\"small\" />\n        </CascadingMenuButton>\n      </Paper>\n    )\n  }),\n)\n\nexport default TrackLabel\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// jbrowse core\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport TrackLabel from './TrackLabel'\n\nconst useStyles = makeStyles()({\n  trackLabel: {\n    zIndex: 3,\n  },\n\n  trackLabelOffset: {\n    position: 'relative',\n    display: 'inline-block',\n  },\n  trackLabelOverlap: {\n    position: 'absolute',\n  },\n})\n\ntype LGV = LinearGenomeViewModel\n\nconst TrackLabelContainer = observer(function ({\n  track,\n  view,\n}: {\n  track: BaseTrackModel\n  view: LGV\n}) {\n  const { classes, cx } = useStyles()\n  const display = track.displays[0]\n  const { trackLabel, trackLabelOverlap, trackLabelOffset } = classes\n  const labelStyle =\n    view.trackLabelsSetting !== 'overlapping' || display.prefersOffset\n      ? trackLabelOffset\n      : trackLabelOverlap\n\n  return view.trackLabelsSetting !== 'hidden' ? (\n    <TrackLabel track={track} className={cx(trackLabel, labelStyle)} />\n  ) : null\n})\n\nexport default TrackLabelContainer\n","import React, { Suspense, useEffect, useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// jbrowse core\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()({\n  // aligns with block boundaries. check for example the breakpoint split view\n  // demo to see if features align if wanting to change things\n  renderingComponentContainer: {\n    position: 'absolute',\n    // -1 offset because of the 1px border of the Paper\n    left: -1,\n    height: '100%',\n    width: '100%',\n  },\n\n  trackRenderingContainer: {\n    overflowY: 'auto',\n    overflowX: 'hidden',\n    whiteSpace: 'nowrap',\n    position: 'relative',\n    background: 'none',\n    zIndex: 2,\n  },\n})\n\ntype LGV = LinearGenomeViewModel\n\nconst TrackRenderingContainer = observer(function ({\n  model,\n  track,\n  onDragEnter,\n}: {\n  model: LGV\n  track: BaseTrackModel\n  onDragEnter: () => void\n}) {\n  const { classes } = useStyles()\n  const display = track.displays[0]\n  const { height, RenderingComponent, DisplayBlurb } = display\n  const { trackRefs, id, scaleFactor } = model\n  const trackId = getConf(track, 'trackId')\n  const ref = useRef<HTMLDivElement>(null)\n  const minimized = track.minimized\n\n  useEffect(() => {\n    if (ref.current) {\n      trackRefs[trackId] = ref.current\n    }\n    return () => {\n      delete trackRefs[trackId]\n    }\n  }, [trackRefs, trackId])\n\n  return (\n    <div\n      className={classes.trackRenderingContainer}\n      style={{\n        height: minimized ? 20 : height,\n      }}\n      onScroll={evt => display.setScrollTop(evt.currentTarget.scrollTop)}\n      onDragEnter={onDragEnter}\n      data-testid={`trackRenderingContainer-${id}-${trackId}`}\n    >\n      {!minimized ? (\n        <>\n          <div\n            ref={ref}\n            className={classes.renderingComponentContainer}\n            style={{\n              transform:\n                scaleFactor !== 1 ? `scaleX(${scaleFactor})` : undefined,\n            }}\n          >\n            <Suspense fallback={<LoadingEllipses />}>\n              <RenderingComponent\n                model={display}\n                onHorizontalScroll={model.horizontalScroll}\n              />\n            </Suspense>\n          </div>\n\n          {DisplayBlurb ? (\n            <div\n              style={{\n                position: 'absolute',\n                left: 0,\n                top: display.height - 20,\n              }}\n            >\n              <DisplayBlurb model={display} />\n            </div>\n          ) : null}\n        </>\n      ) : null}\n    </div>\n  )\n})\n\nexport default TrackRenderingContainer\n","import React, { useRef } from 'react'\nimport { Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { isAlive } from 'mobx-state-tree'\nimport { ErrorBoundary } from 'react-error-boundary'\n\n// jbrowse core\nimport { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { ResizeHandle, ErrorMessage } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport TrackLabelContainer from './TrackLabelContainer'\nimport TrackRenderingContainer from './TrackRenderingContainer'\n\nconst useStyles = makeStyles()({\n  root: {\n    marginTop: 2,\n  },\n  resizeHandle: {\n    height: 3,\n    boxSizing: 'border-box',\n    position: 'relative',\n    zIndex: 2,\n  },\n})\n\ntype LGV = LinearGenomeViewModel\n\nconst TrackContainer = observer(function ({\n  model,\n  track,\n}: {\n  model: LGV\n  track: BaseTrackModel\n}) {\n  const { classes } = useStyles()\n  const display = track.displays[0]\n  const { draggingTrackId, showTrackOutlines } = model\n  const ref = useRef<HTMLDivElement>(null)\n\n  return (\n    <Paper\n      ref={ref}\n      className={classes.root}\n      variant={showTrackOutlines ? 'outlined' : undefined}\n      elevation={showTrackOutlines ? undefined : 0}\n      onClick={event => {\n        if (event.detail === 2 && !track.displays[0].featureIdUnderMouse) {\n          const left = ref.current?.getBoundingClientRect().left || 0\n          model.zoomTo(model.bpPerPx / 2, event.clientX - left, true)\n        }\n      }}\n    >\n      <TrackLabelContainer track={track} view={model} />\n      <ErrorBoundary FallbackComponent={e => <ErrorMessage error={e.error} />}>\n        <TrackRenderingContainer\n          model={model}\n          track={track}\n          onDragEnter={() => {\n            if (\n              isAlive(display) &&\n              draggingTrackId !== undefined &&\n              draggingTrackId !== display.id\n            ) {\n              model.moveTrack(draggingTrackId, track.id)\n            }\n          }}\n        />\n      </ErrorBoundary>\n      <ResizeHandle\n        onDrag={display.resizeHeight}\n        className={classes.resizeHandle}\n      />\n    </Paper>\n  )\n})\n\nexport default TrackContainer\n","import React, { useRef, useEffect, useState } from 'react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport { getRelativeX } from './util'\n\ntype LGV = LinearGenomeViewModel\ntype Timer = ReturnType<typeof setTimeout>\n\nexport function useSideScroll(model: LGV) {\n  const [mouseDragging, setMouseDragging] = useState(false)\n  // refs are to store these variables to avoid repeated rerenders associated\n  // with useState/setState\n  const scheduled = useRef(false)\n\n  const prevX = useRef<number>(0)\n\n  useEffect(() => {\n    let cleanup = () => {}\n\n    function globalMouseMove(event: MouseEvent) {\n      event.preventDefault()\n      const currX = event.clientX\n      const distance = currX - prevX.current\n      if (distance) {\n        // use rAF to make it so multiple event handlers aren't fired per-frame\n        // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n        if (!scheduled.current) {\n          scheduled.current = true\n          window.requestAnimationFrame(() => {\n            model.horizontalScroll(-distance)\n            scheduled.current = false\n            prevX.current = event.clientX\n          })\n        }\n      }\n    }\n\n    function globalMouseUp() {\n      prevX.current = 0\n      if (mouseDragging) {\n        setMouseDragging(false)\n      }\n    }\n\n    if (mouseDragging) {\n      window.addEventListener('mousemove', globalMouseMove, true)\n      window.addEventListener('mouseup', globalMouseUp, true)\n      cleanup = () => {\n        window.removeEventListener('mousemove', globalMouseMove, true)\n        window.removeEventListener('mouseup', globalMouseUp, true)\n      }\n    }\n    return cleanup\n  }, [model, mouseDragging])\n\n  function mouseDown(event: React.MouseEvent) {\n    if (event.shiftKey) {\n      return\n    }\n    // check if clicking a draggable element or a resize handle\n    const target = event.target as HTMLElement\n    if (target.draggable || target.dataset.resizer) {\n      return\n    }\n\n    // otherwise do click and drag scroll\n    if (event.button === 0) {\n      prevX.current = event.clientX\n      setMouseDragging(true)\n    }\n  }\n\n  // this local mouseup is used in addition to the global because sometimes\n  // the global add/remove are not called in time, resulting in issue #533\n  function mouseUp(event: React.MouseEvent) {\n    event.preventDefault()\n    setMouseDragging(false)\n  }\n  return { mouseDown, mouseUp }\n}\n\ninterface AnchorPosition {\n  offsetX: number\n  clientX: number\n  clientY: number\n}\n\nexport function useRangeSelect(\n  ref: React.RefObject<HTMLDivElement>,\n  model: LGV,\n  shiftOnly?: boolean,\n) {\n  const [startX, setStartX] = useState<number>()\n  const [currentX, setCurrentX] = useState<number>()\n\n  // clientX and clientY used for anchorPosition for menu\n  // offsetX used for calculations about width of selection\n  const [anchorPosition, setAnchorPosition] = useState<AnchorPosition>()\n  const [guideX, setGuideX] = useState<number>()\n  const mouseDragging = startX !== undefined && anchorPosition === undefined\n\n  useEffect(() => {\n    function computeOffsets(offsetX: number) {\n      if (startX === undefined) {\n        return\n      }\n      const leftPx = Math.min(startX, offsetX)\n      const rightPx = Math.max(startX, offsetX)\n      return {\n        leftOffset: model.pxToBp(leftPx),\n        rightOffset: model.pxToBp(rightPx),\n      }\n    }\n\n    function globalMouseMove(event: MouseEvent) {\n      if (ref.current && mouseDragging) {\n        const relativeX = getRelativeX(event, ref.current)\n        setCurrentX(relativeX)\n      }\n    }\n\n    function globalMouseUp(event: MouseEvent) {\n      if (startX !== undefined && ref.current) {\n        const { clientX, clientY } = event\n        const offsetX = getRelativeX(event, ref.current)\n        // as stated above, store both clientX/Y and offsetX for different\n        // purposes\n        setAnchorPosition({\n          offsetX,\n          clientX,\n          clientY,\n        })\n        const args = computeOffsets(offsetX)\n        if (args) {\n          model.setOffsets(args.leftOffset, args.rightOffset)\n        }\n        setGuideX(undefined)\n      }\n    }\n    if (mouseDragging) {\n      window.addEventListener('mousemove', globalMouseMove)\n      window.addEventListener('mouseup', globalMouseUp)\n      return () => {\n        window.removeEventListener('mousemove', globalMouseMove)\n        window.removeEventListener('mouseup', globalMouseUp)\n      }\n    }\n    return () => {}\n  }, [startX, mouseDragging, model, ref])\n\n  useEffect(() => {\n    if (\n      !mouseDragging &&\n      currentX !== undefined &&\n      startX !== undefined &&\n      Math.abs(currentX - startX) <= 3\n    ) {\n      handleClose()\n    }\n  }, [mouseDragging, currentX, startX])\n\n  function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n    if (shiftOnly && !event.shiftKey) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n    const relativeX = getRelativeX(event, ref.current)\n    setStartX(relativeX)\n    setCurrentX(relativeX)\n  }\n\n  function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n    if (shiftOnly) {\n      if (event.shiftKey) {\n        setGuideX(getRelativeX(event, ref.current))\n      } else {\n        setGuideX(undefined)\n      }\n    } else {\n      setGuideX(getRelativeX(event, ref.current))\n    }\n  }\n\n  function mouseOut() {\n    setGuideX(undefined)\n    model.setOffsets(undefined, undefined)\n  }\n\n  function handleClose() {\n    setAnchorPosition(undefined)\n    setStartX(undefined)\n    setCurrentX(undefined)\n  }\n\n  function handleMenuItemClick(_: unknown, callback: () => void) {\n    callback()\n    handleClose()\n  }\n\n  const open = Boolean(anchorPosition)\n  if (startX === undefined) {\n    return {\n      open,\n      guideX,\n      mouseDown,\n      mouseMove,\n      mouseOut,\n      handleMenuItemClick,\n    }\n  }\n  const right = anchorPosition ? anchorPosition.offsetX : currentX || 0\n  const left = right < startX ? right : startX\n  const width = Math.abs(right - startX)\n  const leftBpOffset = model.pxToBp(left)\n  const rightBpOffset = model.pxToBp(left + width)\n  const numOfBpSelected = Math.ceil(width * model.bpPerPx)\n\n  return {\n    open,\n    rubberbandOn: true,\n    mouseDown,\n    mouseMove,\n    mouseOut,\n    handleClose,\n    handleMenuItemClick,\n    leftBpOffset,\n    rightBpOffset,\n    anchorPosition,\n    numOfBpSelected,\n    width,\n    left,\n  }\n}\n\nexport function useWheelScroll(\n  ref: React.RefObject<HTMLDivElement>,\n  model: {\n    bpPerPx: number\n    zoomTo: (arg: number, arg2?: number) => void\n    setScaleFactor: (arg: number) => void\n    horizontalScroll: (arg: number) => void\n  },\n) {\n  const delta = useRef(0)\n  const timeout = useRef<Timer>()\n  const scheduled = useRef(false)\n  useEffect(() => {\n    const curr = ref.current\n\n    // if ctrl is held down, zoom in with y-scroll\n    // else scroll horizontally with x-scroll\n    function onWheel(event: WheelEvent) {\n      if (event.ctrlKey) {\n        event.preventDefault()\n        delta.current += event.deltaY / 500\n        model.setScaleFactor(\n          delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current),\n        )\n        if (timeout.current) {\n          clearTimeout(timeout.current)\n        }\n        timeout.current = setTimeout(() => {\n          model.setScaleFactor(1)\n          model.zoomTo(\n            delta.current > 0\n              ? model.bpPerPx * (1 + delta.current)\n              : model.bpPerPx / (1 - delta.current),\n            event.clientX - (curr?.getBoundingClientRect().left || 0),\n          )\n          delta.current = 0\n        }, 300)\n      } else {\n        // this is needed to stop the event from triggering \"back button\n        // action\" on MacOSX etc.  but is a heuristic to avoid preventing the\n        // inner-track scroll behavior\n        if (Math.abs(event.deltaX) > Math.abs(2 * event.deltaY)) {\n          event.preventDefault()\n        }\n        delta.current += event.deltaX\n        if (!scheduled.current) {\n          // use rAF to make it so multiple event handlers aren't fired per-frame\n          // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/\n          scheduled.current = true\n          window.requestAnimationFrame(() => {\n            model.horizontalScroll(delta.current)\n            delta.current = 0\n            scheduled.current = false\n          })\n        }\n      }\n    }\n    if (curr) {\n      curr.addEventListener('wheel', onWheel)\n      return () => {\n        curr.removeEventListener('wheel', onWheel)\n      }\n    }\n    return () => {}\n  }, [model, ref])\n}\n","import React from 'react'\nimport { Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { stringify } from '@jbrowse/core/util'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  guide: {\n    pointerEvents: 'none',\n    height: '100%',\n    width: 1,\n    position: 'absolute',\n    zIndex: 10,\n  },\n})\n\nconst VerticalGuide = observer(function VerticalGuide({\n  model,\n  coordX,\n}: {\n  model: LGV\n  coordX: number\n}) {\n  const { classes } = useStyles()\n  return (\n    <Tooltip open placement=\"top\" title={stringify(model.pxToBp(coordX))} arrow>\n      <div\n        className={classes.guide}\n        style={{\n          left: coordX,\n          background: 'red',\n        }}\n      />\n    </Tooltip>\n  )\n})\n\nexport default VerticalGuide\n","import React, { useRef } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { Menu } from '@jbrowse/core/ui'\n\n// locals\nimport VerticalGuide from './VerticalGuide'\nimport RubberbandSpan from './RubberbandSpan'\nimport { useRangeSelect } from './hooks'\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  rubberbandControl: {\n    cursor: 'crosshair',\n    width: '100%',\n    minHeight: 8,\n  },\n})\n\nconst Rubberband = observer(function ({\n  model,\n  ControlComponent = <div />,\n}: {\n  model: LGV\n  ControlComponent?: React.ReactElement\n}) {\n  const ref = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n\n  const {\n    guideX,\n    rubberbandOn,\n    leftBpOffset,\n    rightBpOffset,\n    numOfBpSelected,\n    width,\n    left,\n    anchorPosition,\n    handleMenuItemClick,\n    open,\n    handleClose,\n    mouseMove,\n    mouseDown,\n    mouseOut,\n  } = useRangeSelect(ref, model)\n\n  return (\n    <>\n      {guideX !== undefined ? (\n        <VerticalGuide model={model} coordX={guideX} />\n      ) : rubberbandOn ? (\n        <RubberbandSpan\n          leftBpOffset={leftBpOffset}\n          rightBpOffset={rightBpOffset}\n          numOfBpSelected={numOfBpSelected}\n          width={width}\n          left={left}\n        />\n      ) : null}\n      {anchorPosition ? (\n        <Menu\n          anchorReference=\"anchorPosition\"\n          anchorPosition={{\n            left: anchorPosition.clientX,\n            top: anchorPosition.clientY,\n          }}\n          onMenuItemClick={handleMenuItemClick}\n          open={open}\n          onClose={handleClose}\n          menuItems={model.rubberBandMenuItems()}\n        />\n      ) : null}\n      <div\n        data-testid=\"rubberband_controls\"\n        className={classes.rubberbandControl}\n        ref={ref}\n        onMouseDown={mouseDown}\n        onMouseMove={mouseMove}\n        onMouseOut={mouseOut}\n      >\n        {ControlComponent}\n      </div>\n    </>\n  )\n})\n\nexport default Rubberband\n","import { Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\nimport React from 'react'\nimport { getTickDisplayStr } from '@jbrowse/core/util'\n\n// locals\nimport { ContentBlock as ContentBlockComponent } from '../../BaseLinearDisplay/components/Block'\nimport { makeTicks } from '../util'\n\nconst useStyles = makeStyles()(theme => ({\n  majorTickLabel: {\n    fontSize: 11,\n    zIndex: 1,\n    background: theme.palette.background.paper,\n    lineHeight: 'normal',\n    pointerEvents: 'none',\n  },\n  tick: {\n    position: 'absolute',\n    width: 0,\n    display: 'flex',\n    justifyContent: 'center',\n    pointerEvents: 'none',\n  },\n}))\n\nconst ScalebarCoordinateTicks = function ({\n  block,\n  bpPerPx,\n}: {\n  block: ContentBlock\n  bpPerPx: number\n}) {\n  const { classes } = useStyles()\n  const { reversed, start, end } = block\n  const ticks = makeTicks(start, end, bpPerPx, true, false)\n\n  return (\n    <ContentBlockComponent block={block}>\n      {ticks.map(({ type, base }) => {\n        if (type === 'major') {\n          const x = (reversed ? end - base : base - start) / bpPerPx\n          const baseNumber = base + 1\n          return (\n            <div key={base} className={classes.tick} style={{ left: x }}>\n              {baseNumber ? (\n                <Typography className={classes.majorTickLabel}>\n                  {getTickDisplayStr(baseNumber, bpPerPx)}\n                </Typography>\n              ) : null}\n            </div>\n          )\n        }\n        return null\n      })}\n    </ContentBlockComponent>\n  )\n}\n\nexport default ScalebarCoordinateTicks\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport {\n  ElidedBlock as ElidedBlockComponent,\n  InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\nimport ScalebarCoordinateTicks from './ScalebarCoordinateTicks'\n\ntype LGV = LinearGenomeViewModel\n\nconst ScalebarCoordinateLabels = observer(function ({ model }: { model: LGV }) {\n  const { staticBlocks, bpPerPx } = model\n  return (\n    <>\n      {staticBlocks.map((b, idx) => {\n        const { key, widthPx } = b\n        const k = `${key}-${idx}`\n        if (b.type === 'ContentBlock') {\n          return <ScalebarCoordinateTicks key={k} block={b} bpPerPx={bpPerPx} />\n        } else if (b.type === 'ElidedBlock') {\n          return <ElidedBlockComponent key={k} width={widthPx} />\n        } else if (b.type === 'InterRegionPaddingBlock') {\n          return (\n            <InterRegionPaddingBlockComponent\n              key={k}\n              width={widthPx}\n              style={{ background: 'none' }}\n              boundary={b.variant === 'boundary'}\n            />\n          )\n        } else {\n          return null\n        }\n      })}\n    </>\n  )\n})\n\nexport default ScalebarCoordinateLabels\n","import React from 'react'\nimport { Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => ({\n  refLabel: {\n    fontSize: 11,\n    position: 'absolute',\n    left: 2,\n    top: -1,\n    fontWeight: 'bold',\n    lineHeight: 'normal',\n    zIndex: 1,\n    background: theme.palette.background.paper,\n  },\n  b0: {\n    left: 0,\n    zIndex: 100,\n  },\n}))\n\nconst ScalebarRefNameLabels = observer(function ({ model }: { model: LGV }) {\n  const { classes, cx } = useStyles()\n  const { staticBlocks, offsetPx, scaleBarDisplayPrefix } = model\n\n  // find the block that needs pinning to the left side for context\n  let lastLeftBlock = 0\n  staticBlocks.forEach((block, i) => {\n    if (block.offsetPx - offsetPx < 0) {\n      lastLeftBlock = i\n    }\n  })\n  const val = scaleBarDisplayPrefix()\n  const b0 = staticBlocks.blocks[0]\n  return (\n    <>\n      {b0?.type !== 'ContentBlock' && val ? (\n        <Typography className={cx(classes.b0, classes.refLabel)}>\n          {val}\n        </Typography>\n      ) : null}\n      {staticBlocks.map((block, index) => {\n        const {\n          offsetPx: blockOffsetPx,\n          isLeftEndOfDisplayedRegion,\n          key,\n          type,\n          refName,\n        } = block\n        const last = (index = lastLeftBlock)\n        return type === 'ContentBlock' &&\n          (isLeftEndOfDisplayedRegion || last) ? (\n          <Typography\n            key={`refLabel-${key}-${index}`}\n            style={{\n              left: last\n                ? Math.max(0, -offsetPx)\n                : blockOffsetPx - offsetPx - 1,\n              paddingLeft: last ? 0 : 1,\n            }}\n            className={classes.refLabel}\n            data-testid={`refLabel-${refName}`}\n          >\n            {last && val ? `${val}:` : ''}\n            {refName}\n          </Typography>\n        ) : null\n      })}\n    </>\n  )\n})\n\nexport default ScalebarRefNameLabels\n","import { Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport React from 'react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport ScalebarCoordinateLabels from './ScalebarCoordinateLabels'\nimport ScalebarRefNameLabels from './ScalebarRefNameLabels'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  container: {\n    overflow: 'hidden',\n    position: 'relative',\n  },\n  zoomContainer: {\n    position: 'relative',\n    zIndex: 1,\n  },\n  scalebar: {\n    position: 'absolute',\n    display: 'flex',\n    pointerEvents: 'none',\n  },\n})\n\ninterface ScalebarProps {\n  model: LGV\n  style?: React.CSSProperties\n  className?: string\n}\n\nconst Scalebar = observer(\n  React.forwardRef<HTMLDivElement, ScalebarProps>(function Scalebar2(\n    { model, style, className, ...other },\n    ref,\n  ) {\n    const { classes, cx } = useStyles()\n    const { staticBlocks, offsetPx, scaleFactor } = model\n    const offsetLeft = staticBlocks.offsetPx - offsetPx\n    return (\n      <Paper\n        data-resizer=\"true\" // used to avoid click-and-drag scrolls on trackscontainer\n        className={cx(classes.container, className)}\n        variant=\"outlined\"\n        ref={ref}\n        style={style}\n        {...other}\n      >\n        <div\n          className={classes.zoomContainer}\n          style={{\n            transform: scaleFactor !== 1 ? `scaleX(${scaleFactor})` : undefined,\n          }}\n        >\n          <div\n            className={classes.scalebar}\n            style={{\n              left: offsetLeft - 1,\n              width: staticBlocks.totalWidthPx,\n              ...style,\n            }}\n          >\n            <ScalebarCoordinateLabels model={model} />\n          </div>\n        </div>\n        <ScalebarRefNameLabels model={model} />\n      </Paper>\n    )\n  }),\n)\n\nexport default Scalebar\n","import React from 'react'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { LinearGenomeViewModel } from '..'\nimport {\n  ContentBlock as ContentBlockComponent,\n  ElidedBlock as ElidedBlockComponent,\n  InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from '../../BaseLinearDisplay/components/Block'\n\nimport { makeTicks } from '../util'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => ({\n  verticalGuidesZoomContainer: {\n    position: 'absolute',\n    height: '100%',\n    width: '100%',\n    zIndex: 1,\n    pointerEvents: 'none',\n  },\n  verticalGuidesContainer: {\n    position: 'absolute',\n    height: '100%',\n    zIndex: 1,\n    pointerEvents: 'none',\n    display: 'flex',\n  },\n  tick: {\n    position: 'absolute',\n    height: '100%',\n    width: 1,\n  },\n  majorTick: {\n    background: theme.palette.action.disabled,\n  },\n  minorTick: {\n    background: theme.palette.divider,\n  },\n}))\n\nfunction RenderedBlockLines({\n  block,\n  bpPerPx,\n}: {\n  block: ContentBlock\n  bpPerPx: number\n}) {\n  const { classes, cx } = useStyles()\n  const ticks = makeTicks(block.start, block.end, bpPerPx)\n  return (\n    <ContentBlockComponent block={block}>\n      {ticks.map(({ type, base }) => {\n        const x =\n          (block.reversed ? block.end - base : base - block.start) / bpPerPx\n        return (\n          <div\n            key={base}\n            className={cx(\n              classes.tick,\n              type === 'major' || type === 'labeledMajor'\n                ? classes.majorTick\n                : classes.minorTick,\n            )}\n            style={{ left: x }}\n          />\n        )\n      })}\n    </ContentBlockComponent>\n  )\n}\nconst RenderedVerticalGuides = observer(({ model }: { model: LGV }) => {\n  const { staticBlocks, bpPerPx } = model\n  return (\n    <>\n      {staticBlocks.map((block, index) => {\n        const k = `${block.key}-${index}`\n        if (block.type === 'ContentBlock') {\n          return <RenderedBlockLines key={k} block={block} bpPerPx={bpPerPx} />\n        } else if (block.type === 'ElidedBlock') {\n          return <ElidedBlockComponent key={k} width={block.widthPx} />\n        } else if (block.type === 'InterRegionPaddingBlock') {\n          return (\n            <InterRegionPaddingBlockComponent\n              key={k}\n              width={block.widthPx}\n              boundary={block.variant === 'boundary'}\n            />\n          )\n        }\n        return null\n      })}\n    </>\n  )\n})\nconst Gridlines = observer(function ({ model }: { model: LGV }) {\n  const { classes } = useStyles()\n  // find the block that needs pinning to the left side for context\n  const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx\n  return (\n    <div\n      className={classes.verticalGuidesZoomContainer}\n      style={{\n        transform:\n          model.scaleFactor !== 1 ? `scaleX(${model.scaleFactor})` : undefined,\n      }}\n    >\n      <div\n        className={classes.verticalGuidesContainer}\n        style={{\n          left: offsetLeft,\n          width: model.staticBlocks.totalWidthPx,\n        }}\n      >\n        <RenderedVerticalGuides model={model} />\n      </div>\n    </div>\n  )\n})\n\nexport default Gridlines\n","import React, { useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => ({\n  centerLineContainer: {\n    background: 'transparent',\n    height: '100%',\n    zIndex: 5, // above the track but under menu\n    position: 'absolute',\n    border: `1px ${theme.palette.action.active} dashed`,\n    borderTop: 'none',\n    borderBottom: 'none',\n    pointerEvents: 'none',\n  },\n  centerLineText: {\n    position: 'absolute',\n    pointerEvents: 'none',\n    whiteSpace: 'nowrap',\n    fontWeight: 'bold',\n  },\n}))\n\nconst CenterLine = observer(function ({ model }: { model: LGV }) {\n  const { bpPerPx, centerLineInfo, trackHeights, tracks, width } = model\n  const ref = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n  const startingPosition = width / 2\n\n  return tracks.length ? (\n    <div\n      data-testid=\"centerline_container\"\n      className={classes.centerLineContainer}\n      role=\"presentation\"\n      ref={ref}\n      style={{\n        left: `${startingPosition}px`,\n        width: Math.max(1 / bpPerPx, 1),\n      }}\n    >\n      {centerLineInfo && (\n        <div\n          // text that indicates what bp is center, positioned\n          // at the bottom right of the center line\n          data-testid=\"centerline_text\"\n          className={classes.centerLineText}\n          role=\"presentation\"\n          style={{\n            left: Math.max(1 / bpPerPx, 1) + 5,\n            top: trackHeights,\n          }}\n        >\n          {/* change bp to refName */}\n          {centerLineInfo.refName}:{' '}\n          {Math.max(Math.round(centerLineInfo.offset) + 1, 0)}\n        </div>\n      )}\n    </div>\n  ) : null\n})\n\nexport default CenterLine\n","import React, { useRef, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { colord } from '@jbrowse/core/util/colord'\nimport { Region, SessionWithWidgets, getSession } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { IconButton, Tooltip } from '@mui/material'\n\n// icons\nimport LinkIcon from '@mui/icons-material/Link'\nimport CloseIcon from '@mui/icons-material/Close'\nimport BookmarkIcon from '@mui/icons-material/Bookmark'\n\n// locals\nimport { LinearGenomeViewModel } from '../model'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => ({\n  highlight: {\n    height: '100%',\n    position: 'absolute',\n    overflow: 'hidden',\n    background: colord(theme.palette.highlight.main).alpha(0.35).toRgbString(),\n  },\n  linkIcon: {\n    color: colord(theme.palette.highlight.main).darken(0.2).toRgbString(),\n  },\n}))\n\nconst Highlight = observer(function Highlight({\n  model,\n  highlight,\n}: {\n  model: LGV\n  highlight: {\n    assemblyName: string\n    refName: string\n    start: number\n    end: number\n  }\n}) {\n  const { classes } = useStyles()\n  const [open, setOpen] = useState(false)\n  const anchorEl = useRef(null)\n  const session = getSession(model) as SessionWithWidgets\n  const { assemblyManager } = session\n\n  const dismissHighlight = () => {\n    model.removeHighlight(highlight)\n  }\n\n  function handleClose() {\n    setOpen(false)\n  }\n\n  // coords\n  const mapCoords = (r: {\n    assemblyName: string\n    refName: string\n    start: number\n    end: number\n  }) => {\n    const s = model.bpToPx({\n      refName: r.refName,\n      coord: r.start,\n    })\n    const e = model.bpToPx({\n      refName: r.refName,\n      coord: r.end,\n    })\n    return s && e\n      ? {\n          width: Math.max(Math.abs(e.offsetPx - s.offsetPx), 3),\n          left: Math.min(s.offsetPx, e.offsetPx) - model.offsetPx,\n        }\n      : undefined\n  }\n\n  const asm = assemblyManager.get(highlight.assemblyName)\n\n  const h = mapCoords({\n    ...highlight,\n    refName: asm?.getCanonicalRefName(highlight.refName) ?? highlight.refName,\n  })\n\n  return h ? (\n    <div\n      className={classes.highlight}\n      style={{\n        left: h.left,\n        width: h.width,\n      }}\n    >\n      <Tooltip title=\"Highlighted from URL parameter\" arrow>\n        <IconButton\n          ref={anchorEl}\n          onClick={() => {\n            setOpen(true)\n          }}\n          style={{ zIndex: 3 }}\n        >\n          <LinkIcon fontSize=\"small\" className={classes.linkIcon} />\n        </IconButton>\n      </Tooltip>\n      <Menu\n        anchorEl={anchorEl.current}\n        onMenuItemClick={(_event, callback) => {\n          callback(session)\n          handleClose()\n        }}\n        open={open}\n        onClose={handleClose}\n        menuItems={[\n          {\n            label: 'Dismiss highlight',\n            icon: CloseIcon,\n            onClick: () => {\n              dismissHighlight()\n            },\n          },\n          {\n            label: 'Bookmark highlighted region',\n            icon: BookmarkIcon,\n            onClick: () => {\n              let bookmarkWidget = session.widgets.get('GridBookmark')\n              if (!bookmarkWidget) {\n                bookmarkWidget = session.addWidget(\n                  'GridBookmarkWidget',\n                  'GridBookmark',\n                )\n              }\n              // @ts-expect-error\n              bookmarkWidget.addBookmark(highlight as Region)\n              dismissHighlight()\n            },\n          },\n        ]}\n      />\n    </div>\n  ) : null\n})\n\nconst HighlightGroup = observer(function HighlightGroup({\n  model,\n}: {\n  model: LGV\n}) {\n  return model.highlight.map((highlight, idx) => (\n    <Highlight\n      key={`${JSON.stringify(highlight)}-${idx}`}\n      model={model}\n      highlight={highlight}\n    />\n  ))\n})\n\nexport default HighlightGroup\n","import React, { useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { Menu } from '@jbrowse/core/ui'\nimport { getEnv } from '@jbrowse/core/util'\n\n// local utils\nimport { LinearGenomeViewModel } from '..'\nimport { useSideScroll, useRangeSelect, useWheelScroll } from './hooks'\n\n// local components\nimport Rubberband from './Rubberband'\nimport Scalebar from './Scalebar'\nimport Gridlines from './Gridlines'\nimport CenterLine from './CenterLine'\nimport VerticalGuide from './VerticalGuide'\nimport RubberbandSpan from './RubberbandSpan'\nimport HighlightGroup from './Highlight'\nimport { SCALE_BAR_HEIGHT } from '../consts'\n\nconst useStyles = makeStyles()({\n  tracksContainer: {\n    position: 'relative',\n    overflow: 'hidden',\n  },\n})\n\ntype LGV = LinearGenomeViewModel\n\nconst TracksContainer = observer(function TracksContainer({\n  children,\n  model,\n}: {\n  children: React.ReactNode\n  model: LGV\n}) {\n  const { classes } = useStyles()\n  const { pluginManager } = getEnv(model)\n  const { mouseDown: mouseDown1, mouseUp } = useSideScroll(model)\n  const ref = useRef<HTMLDivElement>(null)\n  const {\n    guideX,\n    rubberbandOn,\n    leftBpOffset,\n    rightBpOffset,\n    numOfBpSelected,\n    width,\n    left,\n    anchorPosition,\n    open,\n    handleMenuItemClick,\n    handleClose,\n    mouseMove,\n    mouseDown: mouseDown2,\n  } = useRangeSelect(ref, model, true)\n  useWheelScroll(ref, model)\n\n  const additional = pluginManager.evaluateExtensionPoint(\n    'LinearGenomeView-TracksContainerComponent',\n    undefined,\n    { model },\n  ) as React.ReactNode\n\n  return (\n    <div\n      ref={ref}\n      data-testid=\"trackContainer\"\n      className={classes.tracksContainer}\n      onMouseDown={event => {\n        mouseDown1(event)\n        mouseDown2(event)\n      }}\n      onMouseMove={mouseMove}\n      onMouseUp={mouseUp}\n    >\n      {model.showGridlines ? <Gridlines model={model} /> : null}\n      {model.showCenterLine ? <CenterLine model={model} /> : null}\n      {guideX !== undefined ? (\n        <VerticalGuide model={model} coordX={guideX} />\n      ) : rubberbandOn ? (\n        <RubberbandSpan\n          leftBpOffset={leftBpOffset}\n          rightBpOffset={rightBpOffset}\n          numOfBpSelected={numOfBpSelected}\n          width={width}\n          left={left}\n        />\n      ) : null}\n      {anchorPosition ? (\n        <Menu\n          anchorReference=\"anchorPosition\"\n          anchorPosition={{\n            left: anchorPosition.clientX,\n            top: anchorPosition.clientY,\n          }}\n          onMenuItemClick={handleMenuItemClick}\n          open={open}\n          onClose={handleClose}\n          menuItems={model.rubberBandMenuItems()}\n        />\n      ) : null}\n\n      <Rubberband\n        model={model}\n        ControlComponent={\n          <Scalebar\n            model={model}\n            style={{\n              height: SCALE_BAR_HEIGHT,\n              boxSizing: 'border-box',\n            }}\n          />\n        }\n      />\n      <HighlightGroup model={model} />\n      {additional}\n      {children}\n    </div>\n  )\n})\n\nexport default TracksContainer\n","import React, { lazy, Suspense, useEffect, useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport { getSession } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport TrackContainer from './TrackContainer'\nimport TracksContainer from './TracksContainer'\n\nconst ImportForm = lazy(() => import('./ImportForm'))\nconst NoTracksActiveButton = lazy(() => import('./NoTracksActiveButton'))\n\nconst useStyles = makeStyles()(theme => ({\n  note: {\n    textAlign: 'center',\n    paddingTop: theme.spacing(1),\n    paddingBottom: theme.spacing(1),\n  },\n  rel: {\n    position: 'relative',\n  },\n  top: {\n    zIndex: 1000,\n  },\n}))\n\nconst LinearGenomeView = observer(function ({\n  model,\n}: {\n  model: LinearGenomeViewModel\n}) {\n  const { tracks, error, initialized, hasDisplayedRegions } = model\n  const ref = useRef<HTMLDivElement>(null)\n  const session = getSession(model)\n  const { classes } = useStyles()\n  useEffect(() => {\n    // sets the focused view id based on a click within the LGV;\n    // necessary for subviews to be focused properly\n    function handleSelectView(e: Event) {\n      if (e.target instanceof Element && ref.current?.contains(e.target)) {\n        session.setFocusedViewId?.(model.id)\n      }\n    }\n\n    document.addEventListener('mousedown', handleSelectView)\n    document.addEventListener('keydown', handleSelectView)\n    return () => {\n      document.removeEventListener('mousedown', handleSelectView)\n      document.removeEventListener('keydown', handleSelectView)\n    }\n  }, [session, model])\n\n  if (!initialized && !error) {\n    return <LoadingEllipses variant=\"h6\" />\n  }\n  if (!hasDisplayedRegions || error) {\n    return <ImportForm model={model} />\n  }\n\n  const MiniControlsComponent = model.MiniControlsComponent()\n  const HeaderComponent = model.HeaderComponent()\n\n  return (\n    <div\n      className={classes.rel}\n      ref={ref}\n      onMouseLeave={() => {\n        session.setHovered(undefined)\n      }}\n      onMouseMove={event => {\n        const c = ref.current\n        if (!c) {\n          return\n        }\n        const { tracks } = model\n        const leftPx = event.clientX - c.getBoundingClientRect().left\n        const hoverPosition = model.pxToBp(leftPx)\n        const hoverFeature = tracks.find(t => t.displays[0].featureUnderMouse)\n        session.setHovered({ hoverPosition, hoverFeature })\n      }}\n    >\n      <HeaderComponent model={model} />\n      <MiniControlsComponent model={model} />\n      <TracksContainer model={model}>\n        {!tracks.length ? (\n          <Suspense fallback={<React.Fragment />}>\n            <NoTracksActiveButton model={model} />\n          </Suspense>\n        ) : (\n          tracks.map(track => (\n            <TrackContainer key={track.id} model={model} track={track} />\n          ))\n        )}\n      </TracksContainer>\n    </div>\n  )\n})\n\nexport default LinearGenomeView\n","import React from 'react'\nimport { useTheme, alpha } from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// core\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { getFillProps, getStrokeProps } from '@jbrowse/core/util'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport { HEADER_BAR_HEIGHT } from '../consts'\n\nconst OverviewScalebarPolygon = observer(function ({\n  model,\n  overview,\n  useOffset = true,\n}: {\n  model: LinearGenomeViewModel\n  overview: Base1DViewModel\n  useOffset?: boolean\n}) {\n  const theme = useTheme()\n  const multiplier = Number(useOffset)\n  const { interRegionPaddingWidth, offsetPx, dynamicBlocks, cytobandOffset } =\n    model\n  const { contentBlocks, totalWidthPxWithoutBorders } = dynamicBlocks\n  const polygonColor = theme.palette.tertiary.light\n\n  // catches possible null from at's below\n  if (!contentBlocks.length) {\n    return null\n  }\n  const first = contentBlocks.at(0)!\n  const last = contentBlocks.at(-1)!\n  const topLeft =\n    (overview.bpToPx({\n      ...first,\n      coord: first.reversed ? first.end : first.start,\n    }) || 0) +\n    cytobandOffset * multiplier\n  const topRight =\n    (overview.bpToPx({\n      ...last,\n      coord: last.reversed ? last.start : last.end,\n    }) || 0) +\n    cytobandOffset * multiplier\n\n  const startPx = Math.max(0, -offsetPx)\n  const endPx =\n    startPx +\n    totalWidthPxWithoutBorders +\n    (contentBlocks.length * interRegionPaddingWidth) / 2\n\n  const points = [\n    [startPx, HEADER_BAR_HEIGHT],\n    [endPx, HEADER_BAR_HEIGHT],\n    [topRight, 0],\n    [topLeft, 0],\n  ]\n\n  return (\n    <polygon\n      points={points.toString()}\n      {...getFillProps(alpha(polygonColor, 0.3))}\n      {...getStrokeProps(alpha(polygonColor, 0.8))}\n    />\n  )\n})\n\nexport default OverviewScalebarPolygon\n","import React, { Suspense, lazy, useState } from 'react'\n\nimport { IconButton, InputAdornment } from '@mui/material'\n\n// icons\nimport SearchIcon from '@mui/icons-material/Search'\nimport HelpIcon from '@mui/icons-material/Help'\n\n// lazy\nconst HelpDialog = lazy(() => import('./HelpDialog'))\n\nfunction HelpAdornment() {\n  const [isHelpDialogDisplayed, setHelpDialogDisplayed] = useState(false)\n  return (\n    <>\n      <IconButton\n        onClick={() => {\n          setHelpDialogDisplayed(true)\n        }}\n        size=\"small\"\n      >\n        <HelpIcon fontSize=\"small\" />\n      </IconButton>\n      {isHelpDialogDisplayed ? (\n        <Suspense fallback={null}>\n          <HelpDialog\n            handleClose={() => {\n              setHelpDialogDisplayed(false)\n            }}\n          />\n        </Suspense>\n      ) : null}\n    </>\n  )\n}\n\nexport default function EndAdornment({\n  showHelp,\n  endAdornment,\n}: {\n  showHelp?: boolean\n  endAdornment: React.ReactNode\n}) {\n  return (\n    <>\n      <InputAdornment position=\"end\" style={{ marginRight: 7 }}>\n        <SearchIcon fontSize=\"small\" />\n        {showHelp ? <HelpAdornment /> : null}\n      </InputAdornment>\n      {endAdornment}\n    </>\n  )\n}\n","import React from 'react'\nimport {\n  AutocompleteRenderInputParams,\n  TextField,\n  TextFieldProps as TFP,\n} from '@mui/material'\n\n// locals\nimport EndAdornment from './EndAdornment'\n\nexport default function AutocompleteTextField({\n  TextFieldProps,\n  inputBoxVal,\n  params,\n  showHelp,\n  setInputValue,\n  setCurrentSearch,\n}: {\n  TextFieldProps: TFP\n  inputBoxVal: string\n  showHelp?: boolean\n  params: AutocompleteRenderInputParams\n  setInputValue: (arg: string) => void\n  setCurrentSearch: (arg: string) => void\n}) {\n  // eslint-disable-next-line @typescript-eslint/no-deprecated\n  const { helperText, InputProps = {} } = TextFieldProps\n  return (\n    <TextField\n      onBlur={() => {\n        // this is used to restore a refName or the non-user-typed input\n        // to the box on blurring\n        setInputValue(inputBoxVal)\n      }}\n      {...params}\n      {...TextFieldProps}\n      size=\"small\"\n      helperText={helperText}\n      slotProps={{\n        input: {\n          ...params.InputProps,\n          ...InputProps,\n\n          endAdornment: (\n            <EndAdornment\n              showHelp={showHelp}\n              endAdornment={params.InputProps.endAdornment}\n            />\n          ),\n        },\n      }}\n      placeholder=\"Search for location\"\n      onChange={e => {\n        setCurrentSearch(e.target.value)\n      }}\n    />\n  )\n}\n","import React, { useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession, useDebounce, measureText } from '@jbrowse/core/util'\nimport BaseResult, {\n  RefSequenceResult,\n} from '@jbrowse/core/TextSearch/BaseResults'\nimport { Autocomplete, TextFieldProps as TFP } from '@mui/material'\n\n// locals\nimport { LinearGenomeViewModel } from '../../model'\nimport { getDeduplicatedResult, getFiltered, Option } from './util'\nimport AutocompleteTextField from './AutocompleteTextField'\n\nconst RefNameAutocomplete = observer(function ({\n  model,\n  onSelect,\n  assemblyName,\n  style,\n  fetchResults,\n  onChange,\n  value,\n  showHelp = true,\n  minWidth = 200,\n  maxWidth = 550,\n  TextFieldProps = {},\n}: {\n  model: LinearGenomeViewModel\n  onSelect?: (region: BaseResult) => void\n  onChange?: (val: string) => void\n  assemblyName?: string\n  value?: string\n  fetchResults: (query: string) => Promise<BaseResult[]>\n  style?: React.CSSProperties\n  minWidth?: number\n  maxWidth?: number\n  showHelp?: boolean\n  TextFieldProps?: TFP\n}) {\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const [open, setOpen] = useState(false)\n  const [loaded, setLoaded] = useState(true)\n  const [currentSearch, setCurrentSearch] = useState('')\n  const [inputValue, setInputValue] = useState('')\n  const [searchOptions, setSearchOptions] = useState<Option[]>()\n  const debouncedSearch = useDebounce(currentSearch, 300)\n  const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined\n  const { coarseVisibleLocStrings, hasDisplayedRegions } = model\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        if (debouncedSearch === '' || !assemblyName) {\n          return\n        }\n\n        setLoaded(false)\n        const results = await fetchResults(debouncedSearch)\n        setLoaded(true)\n        setSearchOptions(getDeduplicatedResult(results))\n      } catch (e) {\n        console.error(e)\n        session.notifyError(`${e}`, e)\n      }\n    })()\n  }, [assemblyName, fetchResults, debouncedSearch, session])\n\n  const inputBoxVal = coarseVisibleLocStrings || value || ''\n\n  // heuristic, text width + 60 accommodates help icon and search icon\n  const width = Math.min(\n    Math.max(measureText(inputBoxVal, 14) + 100, minWidth),\n    maxWidth,\n  )\n\n  const refNames = assembly?.refNames\n  const regionOptions =\n    refNames?.map(refName => ({\n      result: new RefSequenceResult({\n        refName,\n        label: refName,\n        matchedAttribute: 'refName',\n      }),\n    })) || []\n\n  // notes on implementation:\n  // The selectOnFocus setting helps highlight the field when clicked\n  return (\n    <Autocomplete\n      data-testid=\"autocomplete\"\n      disableListWrap\n      disableClearable\n      disabled={!assemblyName}\n      freeSolo\n      includeInputInList\n      selectOnFocus\n      style={{ ...style, width }}\n      value={inputBoxVal}\n      loading={!loaded}\n      inputValue={inputValue}\n      onInputChange={(_event, newInputValue) => {\n        setInputValue(newInputValue)\n        onChange?.(newInputValue)\n      }}\n      loadingText=\"loading results\"\n      open={open}\n      onOpen={() => {\n        setOpen(true)\n      }}\n      onClose={() => {\n        setOpen(false)\n        setLoaded(true)\n        if (hasDisplayedRegions) {\n          setCurrentSearch('')\n          setSearchOptions(undefined)\n        }\n      }}\n      onChange={(_event, selectedOption) => {\n        if (!selectedOption || !assemblyName) {\n          return\n        }\n\n        if (typeof selectedOption === 'string') {\n          // handles string inputs on keyPress enter\n          onSelect?.(new BaseResult({ label: selectedOption }))\n        } else {\n          onSelect?.(selectedOption.result)\n        }\n        setInputValue(inputBoxVal)\n      }}\n      options={searchOptions?.length ? searchOptions : regionOptions}\n      getOptionDisabled={option => option.group === 'limitOption'}\n      filterOptions={(opts, { inputValue }) => getFiltered(opts, inputValue)}\n      renderInput={params => (\n        <AutocompleteTextField\n          showHelp={showHelp}\n          params={params}\n          inputBoxVal={inputBoxVal}\n          TextFieldProps={TextFieldProps}\n          setCurrentSearch={setCurrentSearch}\n          setInputValue={setInputValue}\n        />\n      )}\n      getOptionLabel={opt =>\n        typeof opt === 'string' ? opt : opt.result.getDisplayString()\n      }\n    />\n  )\n})\n\nexport default RefNameAutocomplete\n","import BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\nexport interface Option {\n  group?: string\n  result: BaseResult\n}\n\n// filter so don't need re-filtering\nfunction filterOptions(options: Option[], searchQuery: string) {\n  return options.filter(\n    ({ result }) =>\n      result.getLabel().toLowerCase().includes(searchQuery) ||\n      result.matchedObject,\n  )\n}\n\n// the logic of this method is to only apply a filter to RefSequenceResults\n// because they do not have a matchedObject. the trix search results already\nexport function getFiltered(opts: Option[], inputValue: string) {\n  const filtered = filterOptions(opts, inputValue.toLocaleLowerCase())\n  return [\n    ...filtered.slice(0, 100),\n    ...(filtered.length > 100\n      ? [\n          {\n            group: 'limitOption',\n            result: new BaseResult({\n              label: 'keep typing for more results',\n            }),\n          },\n        ]\n      : []),\n  ]\n}\n\nexport function aggregateResults(results: BaseResult[]) {\n  const m: Record<string, BaseResult[]> = {}\n\n  for (const result of results) {\n    const displayString = result.getDisplayString()\n    if (!m[displayString]) {\n      m[displayString] = []\n    }\n    m[displayString].push(result)\n  }\n  return m\n}\n\nexport function getDeduplicatedResult(results: BaseResult[]) {\n  return Object.entries(aggregateResults(results)).map(\n    ([displayString, results]) =>\n      results.length === 1\n        ? {\n            result: results[0]!,\n          }\n        : {\n            // deduplicate a \"multi-result\"\n            result: new BaseResult({\n              displayString,\n              results,\n              label: displayString,\n            }),\n          },\n  )\n}\n","import React, { useRef } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { Popover, Typography, alpha } from '@mui/material'\nimport { stringify, toLocale } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()(theme => {\n  const { tertiary } = theme.palette\n  const background = alpha(tertiary.light, 0.7)\n  return {\n    rubberband: {\n      height: '100%',\n      background,\n      position: 'absolute',\n      zIndex: 10,\n      textAlign: 'center',\n      overflow: 'hidden',\n    },\n    rubberbandControl: {\n      cursor: 'crosshair',\n      width: '100%',\n      minHeight: 8,\n    },\n    rubberbandText: {\n      color: tertiary.contrastText,\n    },\n    popover: {\n      mouseEvents: 'none',\n      cursor: 'crosshair',\n    },\n    paper: {\n      paddingLeft: theme.spacing(1),\n      paddingRight: theme.spacing(1),\n    },\n  }\n})\n\ninterface Offset {\n  coord: number\n  refName?: string\n  oob?: boolean\n}\n\nexport default function RubberbandSpan({\n  leftBpOffset,\n  rightBpOffset,\n  numOfBpSelected,\n  left,\n  width,\n}: {\n  leftBpOffset: Offset\n  rightBpOffset: Offset\n  numOfBpSelected?: number\n  left: number\n  width: number\n}) {\n  const ref = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n  return (\n    <>\n      {ref.current ? (\n        <>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={ref.current}\n            anchorOrigin={{ vertical: 'top', horizontal: 'left' }}\n            transformOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n            keepMounted\n            disableRestoreFocus\n          >\n            <Typography>{stringify(leftBpOffset)}</Typography>\n          </Popover>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={ref.current}\n            anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n            transformOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n            keepMounted\n            disableRestoreFocus\n          >\n            <Typography>{stringify(rightBpOffset)}</Typography>\n          </Popover>\n        </>\n      ) : null}\n      <div ref={ref} className={classes.rubberband} style={{ left, width }}>\n        {numOfBpSelected ? (\n          <Typography variant=\"h6\" className={classes.rubberbandText}>\n            {toLocale(numOfBpSelected)} bp\n          </Typography>\n        ) : null}\n      </div>\n    </>\n  )\n}\n","import { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { SearchScope } from '@jbrowse/core/TextSearch/TextSearchManager'\nimport { dedupe, TextSearchManager } from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\nexport async function fetchResults({\n  queryString,\n  searchType,\n  searchScope,\n  rankSearchResults,\n  textSearchManager,\n  assembly,\n}: {\n  queryString: string\n  searchScope: SearchScope\n  rankSearchResults: (results: BaseResult[]) => BaseResult[]\n  searchType?: SearchType\n  textSearchManager?: TextSearchManager\n  assembly?: Assembly\n}) {\n  if (!textSearchManager) {\n    console.warn('No text search manager')\n  }\n\n  const textSearchResults = await textSearchManager?.search(\n    {\n      queryString,\n      searchType,\n    },\n    searchScope,\n    rankSearchResults,\n  )\n\n  const refNameResults = assembly?.allRefNames\n    ?.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase()))\n    .slice(0, 10)\n    .map(r => new BaseResult({ label: r }))\n\n  return dedupe(\n    [...(refNameResults || []), ...(textSearchResults || [])],\n    elt => elt.getId(),\n  )\n}\n\n// splits on the last instance of a character\nexport function splitLast(str: string, split: string): [string, string] {\n  const lastIndex = str.lastIndexOf(split)\n  if (lastIndex === -1) {\n    return [str, '']\n  } else {\n    const before = str.slice(0, lastIndex)\n    const after = str.slice(lastIndex + 1)\n    return [before, after]\n  }\n}\n\nexport function getRelativeX(\n  event: { clientX: number; target: EventTarget | null },\n  element: HTMLElement | null,\n) {\n  return event.clientX - (element?.getBoundingClientRect().left || 0)\n}\n\nexport function getCytobands(assembly: Assembly | undefined, refName: string) {\n  return (\n    assembly?.cytobands\n      ?.map(f => ({\n        refName:\n          assembly.getCanonicalRefName(f.get('refName')) || f.get('refName'),\n        start: f.get('start'),\n        end: f.get('end'),\n        type: f.get('type') as string,\n      }))\n      .filter(f => f.refName === refName) || []\n  )\n}\n","export const HEADER_BAR_HEIGHT = 48\nexport const HEADER_OVERVIEW_HEIGHT = 20\nexport const SCALE_BAR_HEIGHT = 17\nexport const RESIZE_HANDLE_HEIGHT = 3\nexport const INTER_REGION_PADDING_WIDTH = 2\nexport const SPACING = 7\nexport const WIDGET_HEIGHT = 32\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n  shift,\n}: {\n  width: number\n  height: number\n  shift: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      width={width + shift * 2}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\n// SVG component, region separator\nexport default function SVGRegionSeparators({\n  model,\n  height,\n}: {\n  height: number\n  model: LGV\n}) {\n  const { dynamicBlocks, offsetPx, interRegionPaddingWidth } = model\n  return (\n    <>\n      {dynamicBlocks.contentBlocks.slice(1).map(block => (\n        <rect\n          key={block.key}\n          x={block.offsetPx - offsetPx - interRegionPaddingWidth}\n          width={interRegionPaddingWidth}\n          y={0}\n          height={height}\n          fill=\"grey\"\n        />\n      ))}\n    </>\n  )\n}\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { coarseStripHTML, stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGTrackLabel({\n  trackLabels,\n  trackName,\n  fontSize,\n  trackLabelOffset,\n  x,\n}: {\n  trackName: string\n  trackLabels: string\n  fontSize: number\n  trackLabelOffset: number\n  x: number\n}) {\n  const theme = useTheme()\n  const fill = stripAlpha(theme.palette.text.primary)\n  const xoff = trackLabels === 'overlay' ? 5 : 0\n  const yoff = trackLabels === 'offset' ? 5 : 0\n  const name = coarseStripHTML(trackName)\n  return trackLabels !== 'none' ? (\n    <g>\n      {trackLabels === 'left' ? (\n        <text\n          x={trackLabelOffset - 40}\n          y={20}\n          fill={fill}\n          fontSize={fontSize}\n          dominantBaseline=\"hanging\"\n          textAnchor=\"end\"\n        >\n          {name}\n        </text>\n      ) : (\n        <text\n          x={x + xoff}\n          y={yoff}\n          fill={fill}\n          fontSize={fontSize}\n          dominantBaseline=\"hanging\"\n        >\n          {name}\n        </text>\n      )}\n    </g>\n  ) : null\n}\n","import React from 'react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { getSession } from '@jbrowse/core/util'\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport SVGRegionSeparators from './SVGRegionSeparators'\nimport SVGTrackLabel from './SVGTrackLabel'\n\ntype LGV = LinearGenomeViewModel\n\ninterface DisplayResult {\n  track: {\n    configuration: AnyConfigurationModel\n    displays: { height: number }[]\n  }\n  result: string\n}\n\n// SVG component, tracks\nexport default function SVGTracks({\n  displayResults,\n  model,\n  offset,\n  textHeight,\n  fontSize,\n  trackLabels = 'offset',\n  trackLabelOffset = 0,\n}: {\n  displayResults: DisplayResult[]\n  model: LGV\n  offset: number\n  textHeight: number\n  fontSize: number\n  trackLabels?: string\n  trackLabelOffset?: number\n}) {\n  const session = getSession(model)\n  const textOffset = trackLabels === 'offset' ? textHeight : 0\n  return (\n    <>\n      {displayResults.map(({ track, result }) => {\n        const current = offset\n        const conf = track.configuration\n        const trackName = getTrackName(conf, session)\n        const display = track.displays[0]!\n        const x = Math.max(-model.offsetPx, 0)\n        offset += display.height + textOffset\n        return (\n          <g key={conf.trackId} transform={`translate(0 ${current})`}>\n            <g transform={`translate(${trackLabelOffset} ${textOffset})`}>\n              <SVGRegionSeparators model={model} height={display.height} />\n              {result}\n            </g>\n            <SVGTrackLabel\n              trackName={trackName}\n              fontSize={fontSize}\n              trackLabels={trackLabels}\n              trackLabelOffset={trackLabelOffset}\n              x={x}\n            />\n          </g>\n        )\n      })}\n    </>\n  )\n}\n","import React from 'react'\nimport { getTickDisplayStr, stripAlpha } from '@jbrowse/core/util'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { makeTicks } from '../util'\n\nimport { LinearGenomeViewModel } from '..'\nimport SVGRegionSeparators from './SVGRegionSeparators'\n\ntype LGV = LinearGenomeViewModel\n\nfunction Ruler({\n  start,\n  end,\n  bpPerPx,\n  reversed = false,\n  major = true,\n  minor = true,\n  hideText = false,\n}: {\n  start: number\n  end: number\n  bpPerPx: number\n  reversed?: boolean\n  major?: boolean\n  minor?: boolean\n  hideText?: boolean\n}) {\n  const ticks = makeTicks(start, end, bpPerPx, major, minor)\n  const theme = useTheme()\n  const c = stripAlpha(theme.palette.text.secondary)\n  return (\n    <>\n      {ticks.map(tick => {\n        const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx\n        return (\n          <line\n            key={`tick-${tick.base}`}\n            x1={x}\n            x2={x}\n            y1={0}\n            y2={tick.type === 'major' ? 6 : 4}\n            strokeWidth={1}\n            stroke={c}\n          />\n        )\n      })}\n      {!hideText\n        ? ticks\n            .filter(tick => tick.type === 'major')\n            .map(tick => {\n              const x =\n                (reversed ? end - tick.base : tick.base - start) / bpPerPx\n              return (\n                <text\n                  key={`label-${tick.base}`}\n                  x={x - 3}\n                  y={7 + 11}\n                  fontSize={11}\n                  fill={c}\n                >\n                  {getTickDisplayStr(tick.base + 1, bpPerPx)}\n                </text>\n              )\n            })\n        : null}\n    </>\n  )\n}\n\nexport default function SVGRuler({\n  model,\n  fontSize,\n}: {\n  model: LGV\n  fontSize: number\n}) {\n  const {\n    dynamicBlocks: { contentBlocks },\n    offsetPx: viewOffsetPx,\n    bpPerPx,\n  } = model\n  const renderRuler = contentBlocks.length < 5\n  const theme = useTheme()\n  const c = stripAlpha(theme.palette.text.primary)\n  return (\n    <>\n      <SVGRegionSeparators model={model} height={30} />\n      {contentBlocks.map(block => {\n        const { start, end, key, reversed, offsetPx, refName, widthPx } = block\n        const offset = offsetPx - viewOffsetPx\n        const clipid = `clip-${key}`\n        return (\n          <g key={key}>\n            <defs>\n              <clipPath id={clipid}>\n                <rect x={0} y={0} width={widthPx} height={100} />\n              </clipPath>\n            </defs>\n            <g transform={`translate(${offset} 0)`}>\n              <g clipPath={`url(#${clipid})`}>\n                <text x={4} y={fontSize} fontSize={fontSize} fill={c}>\n                  {refName}\n                </text>\n                <g transform=\"translate(0 20)\">\n                  <Ruler\n                    hideText={!renderRuler}\n                    start={start}\n                    end={end}\n                    bpPerPx={bpPerPx}\n                    reversed={reversed}\n                  />\n                </g>\n              </g>\n            </g>\n          </g>\n        )\n      })}\n    </>\n  )\n}\n","import React from 'react'\nimport { getBpDisplayStr, stripAlpha } from '@jbrowse/core/util'\nimport { useTheme } from '@mui/material'\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nexport default function SVGScalebar({\n  model,\n  fontSize,\n}: {\n  model: LGV\n  fontSize: number\n}) {\n  const {\n    offsetPx,\n    dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp },\n  } = model\n  const theme = useTheme()\n  const displayBp = getBpDisplayStr(totalBp)\n  const x0 = Math.max(-offsetPx, 0)\n  const x1 = x0 + totalWidthPx\n  const c = stripAlpha(theme.palette.text.secondary)\n  const x = x0 + (x1 - x0) / 2\n  const y = fontSize\n  return (\n    <>\n      <line x1={x0} x2={x1} y1={10} y2={10} stroke={c} />\n      <line x1={x0} x2={x0} y1={5} y2={15} stroke={c} />\n      <line x1={x1} x2={x1} y1={5} y2={15} stroke={c} />\n      <text\n        x={x}\n        y={y}\n        textAnchor=\"middle\"\n        dominantBaseline=\"hanging\"\n        fontSize={fontSize}\n        fill={c}\n      >\n        {displayBp}\n      </text>\n    </>\n  )\n}\n","import React from 'react'\nimport { getSession, stripAlpha } from '@jbrowse/core/util'\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport Cytobands from '../components/Cytobands'\nimport SVGRuler from './SVGRuler'\nimport SVGScalebar from './SVGScalebar'\nimport OverviewScalebarPolygon from '../components/OverviewScalebarPolygon'\nimport { HEADER_OVERVIEW_HEIGHT } from '../consts'\n\nexport default function SVGHeader({\n  model,\n  fontSize,\n  cytobandHeight,\n  rulerHeight,\n}: {\n  model: LinearGenomeViewModel\n  rulerHeight: number\n  fontSize: number\n  cytobandHeight: number\n}) {\n  const { width, assemblyNames, showCytobands, displayedRegions } = model\n  const { assemblyManager } = getSession(model)\n  const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0]!\n  const assembly = assemblyManager.get(assemblyName)\n  const theme = useTheme()\n  const c = stripAlpha(theme.palette.text.primary)\n  const overview = Base1DView.create({\n    displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),\n    interRegionPaddingWidth: 0,\n    minimumBlockWidth: model.minimumBlockWidth,\n  })\n  const visibleRegions = model.dynamicBlocks.contentBlocks\n  if (!visibleRegions.length) {\n    return null\n  }\n\n  overview.setVolatileWidth(width)\n  overview.showAllRegions()\n  const block = overview.dynamicBlocks.contentBlocks[0]!\n  const first = visibleRegions.at(0)!\n  const last = visibleRegions.at(-1)!\n  const firstOverviewPx =\n    overview.bpToPx({\n      ...first,\n      coord: first.reversed ? first.end : first.start,\n    }) || 0\n\n  const lastOverviewPx =\n    overview.bpToPx({\n      ...last,\n      coord: last.reversed ? last.start : last.end,\n    }) || 0\n  const y = +showCytobands * cytobandHeight\n  return (\n    <g id=\"header\">\n      <text x={0} y={0} dominantBaseline=\"hanging\" fontSize={fontSize} fill={c}>\n        {assemblyName}\n      </text>\n\n      {showCytobands ? (\n        <g transform={`translate(0 ${rulerHeight})`}>\n          <Cytobands overview={overview} assembly={assembly} block={block} />\n          <rect\n            stroke=\"red\"\n            fill=\"rgb(255,0,0)\"\n            fillOpacity={0.1}\n            width={Math.max(lastOverviewPx - firstOverviewPx, 0.5)}\n            height={HEADER_OVERVIEW_HEIGHT - 1}\n            x={firstOverviewPx}\n            y={0.5}\n          />\n          <g transform={`translate(0,${HEADER_OVERVIEW_HEIGHT})`}>\n            <OverviewScalebarPolygon\n              overview={overview}\n              model={model}\n              useOffset={false}\n            />\n          </g>\n        </g>\n      ) : null}\n\n      <g transform={`translate(0 ${fontSize + y})`}>\n        <SVGScalebar model={model} fontSize={fontSize} />\n      </g>\n      <g transform={`translate(0 ${rulerHeight + y})`}>\n        <SVGRuler model={model} fontSize={fontSize} />\n      </g>\n    </g>\n  )\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport React from 'react'\nimport { when } from 'mobx'\nimport {\n  getSession,\n  max,\n  measureText,\n  renderToStaticMarkup,\n} from '@jbrowse/core/util'\nimport { ThemeProvider } from '@mui/material'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { getRoot } from 'mobx-state-tree'\n\n// locals\nimport { LinearGenomeViewModel, ExportSvgOptions } from '..'\nimport SVGBackground from './SVGBackground'\nimport SVGTracks from './SVGTracks'\nimport SVGHeader from './SVGHeader'\nimport { totalHeight } from './util'\n\ntype LGV = LinearGenomeViewModel\n\n// render LGV to SVG\nexport async function renderToSvg(model: LGV, opts: ExportSvgOptions) {\n  await when(() => model.initialized)\n  const {\n    textHeight = 18,\n    headerHeight = 40,\n    rulerHeight = 50,\n    fontSize = 13,\n    cytobandHeight = 100,\n    trackLabels = 'offset',\n    themeName = 'default',\n    Wrapper = ({ children }) => children,\n  } = opts\n  const session = getSession(model)\n  const { allThemes } = session\n\n  const { createRootFn } = getRoot<any>(model)\n  const theme = allThemes?.()[themeName]\n  const { width, tracks, showCytobands } = model\n  const shift = 50\n  const c = +showCytobands * cytobandHeight\n  const offset = headerHeight + rulerHeight + c + 10\n  const height = totalHeight(tracks, textHeight, trackLabels) + offset + 100\n  const displayResults = await Promise.all(\n    tracks.map(async track => {\n      const display = track.displays[0]\n      await when(() => !display.renderProps().notReady)\n      return { track, result: await display.renderSvg({ ...opts, theme }) }\n    }),\n  )\n  const trackLabelMaxLen =\n    max(\n      tracks.map(t =>\n        measureText(getTrackName(t.configuration, session), fontSize),\n      ),\n      0,\n    ) + 40\n  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0\n  const w = width + trackLabelOffset\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={createJBrowseTheme(theme)}>\n      <Wrapper>\n        <svg\n          width={w}\n          height={height}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, w + shift * 2, height].toString()}\n        >\n          <SVGBackground width={w} height={height} shift={shift} />\n          <g transform={`translate(${shift} 0)`}>\n            <g transform={`translate(${trackLabelOffset})`}>\n              <SVGHeader\n                model={model}\n                fontSize={fontSize}\n                rulerHeight={rulerHeight}\n                cytobandHeight={cytobandHeight}\n              />\n            </g>\n            <SVGTracks\n              textHeight={textHeight}\n              fontSize={fontSize}\n              model={model}\n              displayResults={displayResults}\n              offset={offset}\n              trackLabels={trackLabels}\n              trackLabelOffset={trackLabelOffset}\n            />\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n\nexport { default as SVGRuler } from './SVGRuler'\nexport { default as SVGTracks } from './SVGTracks'\n","import { sum } from '@jbrowse/core/util'\n\ninterface Display {\n  height: number\n}\ninterface Track {\n  displays: Display[]\n}\n\nexport function totalHeight(\n  tracks: Track[],\n  textHeight: number,\n  trackLabels: string,\n) {\n  return sum(\n    tracks.map(\n      t =>\n        t.displays[0]!.height +\n        (['none', 'left'].includes(trackLabels) ? 0 : textHeight),\n    ),\n  )\n}\n","import {\n  AssemblyManager,\n  ParsedLocString,\n  parseLocString,\n} from '@jbrowse/core/util'\n\n/**\n * Given a scale ( bp/px ) and minimum distances (px) between major and minor\n * gridlines, return an object like `{ majorPitch: bp, minorPitch: bp }` giving\n * the gridline pitches to use.\n */\nexport function chooseGridPitch(\n  scale: number,\n  minMajorPitchPx: number,\n  minMinorPitchPx: number,\n) {\n  scale = Math.abs(scale)\n  const minMajorPitchBp = minMajorPitchPx * scale\n  const majorMagnitude = Number.parseInt(\n    Number(minMajorPitchBp).toExponential().split(/e/i)[1]!,\n    10,\n  )\n\n  let majorPitch = 10 ** majorMagnitude\n  while (majorPitch < minMajorPitchBp) {\n    majorPitch *= 2\n    if (majorPitch >= minMajorPitchBp) {\n      break\n    }\n    majorPitch *= 2.5\n  }\n\n  majorPitch = Math.max(majorPitch, 5)\n\n  const majorPitchPx = majorPitch / scale\n\n  let minorPitch = 0\n  if (!(majorPitch % 10) && majorPitchPx / 10 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 10\n  } else if (!(majorPitch % 5) && majorPitchPx / 5 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 5\n  } else if (!(majorPitch % 2) && majorPitchPx / 2 >= minMinorPitchPx) {\n    minorPitch = majorPitch / 2\n  }\n\n  return { majorPitch, minorPitch }\n}\n\nexport function makeTicks(\n  start: number,\n  end: number,\n  bpPerPx: number,\n  emitMajor = true,\n  emitMinor = true,\n) {\n  const gridPitch = chooseGridPitch(bpPerPx, 60, 15)\n\n  let minBase = start\n  let maxBase = end\n\n  if (bpPerPx < 0) {\n    ;[minBase, maxBase] = [maxBase, minBase]\n  }\n\n  // add 20px additional on the right and left to allow us to draw the ends\n  // of labels that lie a little outside our region\n  minBase -= Math.abs(20 * bpPerPx) - 1\n  maxBase += Math.abs(20 * bpPerPx) + 1\n\n  const iterPitch = gridPitch.minorPitch || gridPitch.majorPitch\n  let index = 0\n  const ticks = []\n  for (\n    let base = Math.floor(minBase / iterPitch) * iterPitch;\n    base < Math.ceil(maxBase / iterPitch) * iterPitch + 1;\n    base += iterPitch\n  ) {\n    if (emitMinor && base % (gridPitch.majorPitch * 2)) {\n      ticks.push({ type: 'minor', base: base - 1, index })\n      index += 1\n    } else if (emitMajor && !(base % (gridPitch.majorPitch * 2))) {\n      ticks.push({ type: 'major', base: base - 1, index })\n      index += 1\n    }\n  }\n  return ticks\n}\n\n/**\n * Generate location objects for a set of parsed locstrings, which includes\n * translating the refNames to assembly-canonical refNames and adding the\n * 'parentRegion'\n *\n * Used by navToLocations and navToLocString\n */\nexport async function generateLocations(\n  regions: ParsedLocString[],\n  assemblyManager: AssemblyManager,\n  assemblyName?: string,\n) {\n  return Promise.all(\n    regions.map(async region => {\n      const asmName = region.assemblyName || assemblyName\n      if (!asmName) {\n        throw new Error('no assembly provided')\n      }\n      const asm = await assemblyManager.waitForAssembly(asmName)\n      const { refName } = region\n      if (!asm) {\n        throw new Error(`assembly ${asmName} not found`)\n      }\n      const { regions } = asm\n      if (!regions) {\n        throw new Error(`regions not loaded yet for ${asmName}`)\n      }\n      const canonicalRefName = asm.getCanonicalRefName(region.refName)\n      if (!canonicalRefName) {\n        throw new Error(`Could not find refName ${refName} in ${asm.name}`)\n      }\n      const parentRegion = regions.find(r => r.refName === canonicalRefName)\n      if (!parentRegion) {\n        throw new Error(`Could not find refName ${refName} in ${asmName}`)\n      }\n\n      return {\n        ...(region as Omit<typeof region, symbol>),\n        assemblyName: asmName,\n        parentRegion,\n      }\n    }),\n  )\n}\n\n/**\n * Parses locString or space separated set of locStrings into location objects\n * Example inputs:\n * \"chr1\"\n * \"chr1:1-100\"\n * \"chr1:1..100\"\n * \"chr1 chr2\"\n * \"chr1:1-100 chr2:1-100\"\n * \"chr1 100 200\" equivalent to \"chr1:1-100\"\n *\n * Used by navToLocString\n */\nexport function parseLocStrings(\n  input: string,\n  assemblyName: string,\n  isValidRefName: (str: string, assemblyName: string) => boolean,\n) {\n  const inputs = input\n    .split(/(\\s+)/)\n    .map(f => f.trim())\n    .filter(f => !!f)\n  // first try interpreting as a whitespace-separated sequence of\n  // multiple locstrings\n  try {\n    return inputs.map(loc =>\n      parseLocString(loc, ref => isValidRefName(ref, assemblyName)),\n    )\n  } catch (e) {\n    // if this fails, try interpreting as a whitespace-separated refname,\n    // start, end if start and end are integer inputs\n    const [refName, start, end] = inputs\n    if (\n      /Unknown reference sequence/.exec(`${e}`) &&\n      Number.isInteger(+start!) &&\n      Number.isInteger(+end!)\n    ) {\n      return [\n        parseLocString(`${refName}:${start}..${end}`, ref =>\n          isValidRefName(ref, assemblyName),\n        ),\n      ]\n    }\n    throw e\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BaseLinearDisplay\n * #category display\n *\n * `BaseLinearDisplay` is a \"base\" config that is extended by other configs including\n * - `LinearBasicDisplay` (used for feature tracks, etc)\n * - `LinearBareDisplay` (more stripped down than even the basic display, not\n *   commonly used)\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst baseLinearDisplayConfigSchema = ConfigurationSchema(\n  'BaseLinearDisplay',\n  {\n    /**\n     * #slot\n     */\n    maxFeatureScreenDensity: {\n      type: 'number',\n      description:\n        'maximum features per pixel that is displayed in the view, used if byte size estimates not available',\n      defaultValue: 0.3,\n    },\n    /**\n     * #slot\n     */\n    fetchSizeLimit: {\n      type: 'number',\n      defaultValue: 1_000_000,\n      description:\n        \"maximum data to attempt to download for a given track, used if adapter doesn't specify one\",\n    },\n    /**\n     * #slot\n     */\n    height: {\n      type: 'number',\n      defaultValue: 100,\n      description: 'default height for the track',\n    },\n    /**\n     * #slot\n     */\n    mouseover: {\n      type: 'string',\n      description: 'text to display when the cursor hovers over a feature',\n      defaultValue: `jexl:get(feature,'name')`,\n\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     * config jexlFilters are deferred evaluated so they are prepended with\n     * jexl at runtime rather than being stored with jexl in the config\n     */\n    jexlFilters: {\n      type: 'stringArray',\n      description:\n        'default set of jexl filters to apply to a track. note: these do not use the jexl prefix because they have a deferred evaluation system',\n      defaultValue: [],\n    },\n  },\n  {\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'displayId',\n  },\n)\n\nexport default baseLinearDisplayConfigSchema\n","// takes an array or Map or Set (anything iterable with values()) of Maps and\n// lets you query them as one Map\nexport default class CompositeMap<T, U> {\n  constructor(private submaps: Map<T, U>[]) {}\n\n  has(id: T) {\n    for (const submap of this.submaps.values()) {\n      if (submap.has(id)) {\n        return true\n      }\n    }\n    return false\n  }\n\n  get(id: T) {\n    for (const submap of this.submaps.values()) {\n      if (submap.has(id)) {\n        return submap.get(id)\n      }\n    }\n    return undefined\n  }\n\n  *values() {\n    for (const key of this.keys()) {\n      yield this.get(key) as U\n    }\n  }\n\n  *keys() {\n    const keys = new Set<T>()\n    for (const submap of this.submaps.values()) {\n      for (const key of submap.keys()) {\n        keys.add(key)\n      }\n    }\n    for (const key of keys) {\n      yield key\n    }\n  }\n\n  find<V>(f: (arg0: U) => V) {\n    for (const submap of this.submaps.values()) {\n      for (const value of submap.values()) {\n        const found = f(value)\n        if (found) {\n          return value\n        }\n      }\n    }\n    return undefined\n  }\n\n  *[Symbol.iterator]() {\n    for (const key of this.keys()) {\n      yield [key, this.get(key)]\n    }\n  }\n\n  *entries() {\n    for (const k of this.keys()) {\n      yield [k, this.get(k)]\n    }\n  }\n}\n","import { getConf } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nconst minDisplayHeight = 20\n\n/**\n * #stateModel TrackHeightMixin\n * #category display\n */\nexport default function TrackHeightMixin() {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      heightPreConfig: types.maybe(\n        types.refinement(\n          'displayHeight',\n          types.number,\n          n => n >= minDisplayHeight,\n        ),\n      ),\n    })\n    .volatile(() => ({\n      /**\n       * #property\n       */\n      scrollTop: 0,\n    }))\n    .views(self => ({\n      get height() {\n        // @ts-expect-error\n        return self.heightPreConfig ?? (getConf(self, 'height') as number)\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setScrollTop(scrollTop: number) {\n        self.scrollTop = scrollTop\n      },\n      /**\n       * #action\n       */\n      setHeight(displayHeight: number) {\n        self.heightPreConfig = Math.max(displayHeight, minDisplayHeight)\n        return self.height\n      },\n      /**\n       * #action\n       */\n      resizeHeight(distance: number) {\n        const oldHeight = self.height\n        const newHeight = this.setHeight(self.height + distance)\n        return newHeight - oldHeight\n      },\n    }))\n}\n","import React from 'react'\nimport { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport BlockMsg from '../components/BlockMsg'\nimport { Button } from '@mui/material'\n\nfunction TooLargeMessage({\n  model,\n}: {\n  model: {\n    regionTooLargeReason: string\n    featureDensityStats?: FeatureDensityStats\n    setFeatureDensityStatsLimit: (s?: FeatureDensityStats) => void\n    reload: () => void\n  }\n}) {\n  const { regionTooLargeReason } = model\n  return (\n    <BlockMsg\n      severity=\"warning\"\n      action={\n        <Button\n          onClick={() => {\n            model.setFeatureDensityStatsLimit(model.featureDensityStats)\n            model.reload()\n          }}\n        >\n          Force load\n        </Button>\n      }\n      message={[\n        regionTooLargeReason,\n        'Zoom in to see features or force load (may be slow)',\n      ]\n        .filter(f => !!f)\n        .join('. ')}\n    />\n  )\n}\n\nexport default TooLargeMessage\n","import React from 'react'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { autorun } from 'mobx'\nimport { addDisposer, isAlive, types } from 'mobx-state-tree'\n\n// locals\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\nimport TooLargeMessage from '../components/TooLargeMessage'\nimport { getDisplayStr, getFeatureDensityStatsPre } from './util'\nimport autorunFeatureDensityStats from './autorunFeatureDensityStats'\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * #stateModel FeatureDensityMixin\n * #category display\n */\nexport default function FeatureDensityMixin() {\n  return types\n    .model({\n      /**\n       * #property\n       */\n      userBpPerPxLimit: types.maybe(types.number),\n      /**\n       * #property\n       */\n\n      userByteSizeLimit: types.maybe(types.number),\n    })\n    .volatile(() => ({\n      featureDensityStatsP: undefined as\n        | undefined\n        | Promise<FeatureDensityStats>,\n      featureDensityStats: undefined as undefined | FeatureDensityStats,\n      currStatsBpPerPx: 0,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get currentBytesRequested() {\n        return self.featureDensityStats?.bytes || 0\n      },\n\n      /**\n       * #getter\n       */\n      get currentFeatureScreenDensity() {\n        const view = getContainingView(self) as LGV\n        return (self.featureDensityStats?.featureDensity || 0) * view.bpPerPx\n      },\n\n      /**\n       * #getter\n       */\n      get maxFeatureScreenDensity() {\n        // @ts-expect-error\n        return getConf(self, 'maxFeatureScreenDensity')\n      },\n      /**\n       * #getter\n       */\n      get featureDensityStatsReady() {\n        const view = getContainingView(self) as LGV\n        return (\n          self.currStatsBpPerPx === view.bpPerPx &&\n          (!!self.featureDensityStats || !!self.userBpPerPxLimit)\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get maxAllowableBytes() {\n        return (\n          self.userByteSizeLimit ||\n          self.featureDensityStats?.fetchSizeLimit ||\n          // @ts-expect-error\n          (getConf(self, 'fetchSizeLimit') as number)\n        )\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => autorunFeatureDensityStats(self as any)),\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setCurrStatsBpPerPx(n: number) {\n        self.currStatsBpPerPx = n\n      },\n      /**\n       * #action\n       */\n      setFeatureDensityStatsLimit(stats?: FeatureDensityStats) {\n        const view = getContainingView(self) as LGV\n        if (stats?.bytes) {\n          self.userByteSizeLimit = stats.bytes\n        } else {\n          self.userBpPerPxLimit = view.bpPerPx\n        }\n      },\n      /**\n       * #action\n       */\n      getFeatureDensityStats() {\n        if (!self.featureDensityStatsP) {\n          self.featureDensityStatsP = getFeatureDensityStatsPre(\n            self as any,\n          ).catch((e: unknown) => {\n            if (isAlive(self)) {\n              this.setFeatureDensityStatsP(undefined)\n            }\n            throw e\n          })\n        }\n        return self.featureDensityStatsP\n      },\n\n      /**\n       * #action\n       */\n      setFeatureDensityStatsP(arg: any) {\n        self.featureDensityStatsP = arg\n      },\n\n      /**\n       * #action\n       */\n      setFeatureDensityStats(featureDensityStats?: FeatureDensityStats) {\n        self.featureDensityStats = featureDensityStats\n      },\n      /**\n       * #action\n       */\n      clearFeatureDensityStats() {\n        self.featureDensityStatsP = undefined\n        self.featureDensityStats = undefined\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * region is too large if:\n       * - stats are ready\n       * - region is greater than 20kb (don't warn when zoomed in less than that)\n       * - and bytes is greater than max allowed bytes or density greater than max\n       *   density\n       */\n      get regionTooLarge() {\n        const view = getContainingView(self) as LGV\n        if (\n          !self.featureDensityStatsReady ||\n          view.dynamicBlocks.totalBp < 20_000\n        ) {\n          return false\n        }\n        return (\n          self.currentBytesRequested > self.maxAllowableBytes ||\n          (self.userBpPerPxLimit\n            ? view.bpPerPx > self.userBpPerPxLimit\n            : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity)\n        )\n      },\n\n      /**\n       * #getter\n       * only shows a message of bytes requested is defined, the feature density\n       * based stats don't produce any helpful message besides to zoom in\n       */\n      get regionTooLargeReason() {\n        const req = self.currentBytesRequested\n        const max = self.maxAllowableBytes\n\n        return req && req > max\n          ? `Requested too much data (${getDisplayStr(req)})`\n          : ''\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      regionCannotBeRenderedText(_region: Region) {\n        return self.regionTooLarge ? 'Force load to see features' : ''\n      },\n\n      /**\n       * #method\n       * @param region -\n       * @returns falsy if the region is fine to try rendering. Otherwise,\n       *  return a react node + string of text.\n       *  string of text describes why it cannot be rendered\n       *  react node allows user to force load at current setting\n       */\n      regionCannotBeRendered(_region: Region) {\n        return self.regionTooLarge ? (\n          <TooLargeMessage model={self as any} />\n        ) : null\n      },\n    }))\n}\n","import { getContainingView, isAbortException } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\nimport { isAlive } from 'mobx-state-tree'\nimport { BaseLinearDisplayModel } from './BaseLinearDisplayModel'\n\n// stats estimation autorun calls getFeatureDensityStats against the data\n// adapter which by default uses featureDensity, but can also respond with a\n// byte size estimate and fetch size limit (data adapter can define what is too\n// much data)\nexport default async function autorunFeatureDensityStats(\n  self: BaseLinearDisplayModel,\n) {\n  try {\n    const view = getContainingView(self) as LinearGenomeViewModel\n\n    // extra check for contentBlocks.length\n    // https://github.com/GMOD/jbrowse-components/issues/2694\n    if (\n      !view.initialized ||\n      !view.staticBlocks.contentBlocks.length ||\n      view.bpPerPx === self.currStatsBpPerPx ||\n      self.error\n    ) {\n      return\n    }\n\n    // don't re-estimate featureDensity even if zoom level changes,\n    // jbrowse1-style assume it's sort of representative\n    if (self.featureDensityStats?.featureDensity !== undefined) {\n      self.setCurrStatsBpPerPx(view.bpPerPx)\n      return\n    }\n\n    self.clearFeatureDensityStats()\n    self.setCurrStatsBpPerPx(view.bpPerPx)\n    const stats = await self.getFeatureDensityStats()\n    if (isAlive(self)) {\n      self.setFeatureDensityStats(stats)\n    }\n  } catch (e) {\n    if (!isAbortException(e) && isAlive(self)) {\n      console.error(e)\n      self.setError(e)\n    }\n  }\n}\n","import React, { lazy } from 'react'\nimport { ThemeOptions } from '@mui/material'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport { ConfigurationReference } from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n  getContainingView,\n  getContainingTrack,\n  getSession,\n  isSelectionContainer,\n  isSessionModelWithWidgets,\n  isFeature,\n  Feature,\n  AnyReactComponentType,\n} from '@jbrowse/core/util'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport CompositeMap from '@jbrowse/core/util/compositeMap'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { autorun } from 'mobx'\nimport { addDisposer, isAlive, types, Instance } from 'mobx-state-tree'\n\n// icons\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen'\nimport CenterFocusStrongIcon from '@mui/icons-material/CenterFocusStrong'\n\n// locals\nimport { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'\nimport BlockState from './serverSideRenderedBlock'\nimport configSchema from './configSchema'\nimport TrackHeightMixin from './TrackHeightMixin'\nimport FeatureDensityMixin from './FeatureDensityMixin'\n\n// lazies\nconst Tooltip = lazy(() => import('../components/Tooltip'))\n\ntype LGV = LinearGenomeViewModel\n\nexport interface Layout {\n  minX: number\n  minY: number\n  maxX: number\n  maxY: number\n  name: string\n}\n\ntype LayoutRecord = [number, number, number, number]\n\nexport interface ExportSvgDisplayOptions extends ExportSvgOptions {\n  overrideHeight: number\n  theme: ThemeOptions\n}\n\n/**\n * #stateModel BaseLinearDisplay\n * #category display\n *\n * BaseLinearDisplay is used as the basis for many linear genome view tracks.\n * It is block based, and can use 'static blocks' or 'dynamic blocks'\n *\n * extends\n * - [BaseDisplay](../basedisplay)\n * - [TrackHeightMixin](../trackheightmixin)\n * - [FeatureDensityMixin](../featuredensitymixin)\n */\nfunction stateModelFactory() {\n  return types\n    .compose(\n      'BaseLinearDisplay',\n      BaseDisplay,\n      TrackHeightMixin(),\n      FeatureDensityMixin(),\n      types.model({\n        /**\n         * #property\n         * updated via autorun\n         */\n        blockState: types.map(BlockState),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n    .volatile(() => ({\n      featureIdUnderMouse: undefined as undefined | string,\n      contextMenuFeature: undefined as undefined | Feature,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * if a display-level message should be displayed instead of the blocks,\n       * make this return a react component\n       */\n      get DisplayMessageComponent(): undefined | React.FC<any> {\n        return undefined\n      },\n      /**\n       * #getter\n       */\n      get blockType(): 'staticBlocks' | 'dynamicBlocks' {\n        return 'staticBlocks'\n      },\n      /**\n       * #getter\n       */\n      get blockDefinitions() {\n        const view = getContainingView(self) as LGV\n        if (!view.initialized) {\n          throw new Error('view not initialized yet')\n        }\n        return view[this.blockType]\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * how many milliseconds to wait for the display to\n       * \"settle\" before re-rendering a block\n       */\n      get renderDelay() {\n        return 50\n      },\n\n      /**\n       * #getter\n       */\n      get TooltipComponent(): AnyReactComponentType {\n        return Tooltip as AnyReactComponentType\n      },\n\n      /**\n       * #getter\n       * returns a string feature ID if the globally-selected object\n       * is probably a feature\n       */\n      get selectedFeatureId() {\n        if (isAlive(self)) {\n          const { selection } = getSession(self)\n          // does it quack like a feature?\n          if (isFeature(selection)) {\n            return selection.id()\n          }\n        }\n        return undefined\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * a CompositeMap of `featureId -> feature obj` that\n       * just looks in all the block data for that feature\n       */\n      get features() {\n        const featureMaps = []\n        for (const block of self.blockState.values()) {\n          if (block.features) {\n            featureMaps.push(block.features)\n          }\n        }\n        return new CompositeMap(featureMaps)\n      },\n\n      /**\n       * #getter\n       */\n      get featureUnderMouse() {\n        const feat = self.featureIdUnderMouse\n        return feat ? this.features.get(feat) : undefined\n      },\n\n      /**\n       * #getter\n       */\n      getFeatureOverlapping(\n        blockKey: string,\n        x: number,\n        y: number,\n      ): string | undefined {\n        return self.blockState.get(blockKey)?.layout?.getByCoord(x, y)\n      },\n\n      /**\n       * #getter\n       */\n      getFeatureByID(blockKey: string, id: string): LayoutRecord | undefined {\n        return self.blockState.get(blockKey)?.layout?.getByID(id)\n      },\n\n      /**\n       * #getter\n       */\n      searchFeatureByID(id: string): LayoutRecord | undefined {\n        let ret: LayoutRecord | undefined\n        self.blockState.forEach(block => {\n          const val = block.layout?.getByID(id)\n          if (val) {\n            ret = val\n          }\n        })\n        return ret\n      },\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      addBlock(key: string, block: BaseBlock) {\n        self.blockState.set(\n          key,\n          BlockState.create({\n            key,\n            region: block.toRegion(),\n          }),\n        )\n      },\n\n      /**\n       * #action\n       */\n      deleteBlock(key: string) {\n        self.blockState.delete(key)\n      },\n      /**\n       * #action\n       */\n      selectFeature(feature: Feature) {\n        const session = getSession(self)\n        if (isSessionModelWithWidgets(session)) {\n          const featureWidget = session.addWidget(\n            'BaseFeatureWidget',\n            'baseFeature',\n            {\n              view: getContainingView(self),\n              track: getContainingTrack(self),\n              featureData: feature.toJSON(),\n            },\n          )\n\n          session.showWidget(featureWidget)\n        }\n        if (isSelectionContainer(session)) {\n          session.setSelection(feature)\n        }\n      },\n      /**\n       * #action\n       */\n      navToFeature(feature: Feature) {\n        const view = getContainingView(self) as LGV\n        view.navTo({\n          refName: feature.get('refName'),\n          start: feature.get('start'),\n          end: feature.get('end'),\n        })\n      },\n      /**\n       * #action\n       */\n      clearFeatureSelection() {\n        getSession(self).clearSelection()\n      },\n      /**\n       * #action\n       */\n      setFeatureIdUnderMouse(feature?: string) {\n        self.featureIdUnderMouse = feature\n      },\n\n      /**\n       * #action\n       */\n      setContextMenuFeature(feature?: Feature) {\n        self.contextMenuFeature = feature\n      },\n    }))\n\n    .actions(self => {\n      const { reload: superReload } = self\n\n      return {\n        /**\n         * #action\n         */\n        async reload() {\n          self.setError()\n          self.setCurrStatsBpPerPx(0)\n          self.clearFeatureDensityStats()\n          ;[...self.blockState.values()].forEach(val => {\n            val.doReload()\n          })\n          superReload()\n        },\n      }\n    })\n\n    .views(self => ({\n      /**\n       * #method\n       */\n      trackMenuItems(): MenuItem[] {\n        return []\n      },\n\n      /**\n       * #method\n       */\n      contextMenuItems(): MenuItem[] {\n        return [\n          ...(self.contextMenuFeature\n            ? [\n                {\n                  label: 'Open feature details',\n                  icon: MenuOpenIcon,\n                  onClick: () => {\n                    if (self.contextMenuFeature) {\n                      self.selectFeature(self.contextMenuFeature)\n                    }\n                  },\n                },\n                {\n                  label: 'Zoom to feature',\n                  icon: CenterFocusStrongIcon,\n                  onClick: () => {\n                    if (self.contextMenuFeature) {\n                      self.navToFeature(self.contextMenuFeature)\n                    }\n                  },\n                },\n              ]\n            : []),\n        ]\n      },\n      /**\n       * #method\n       */\n      renderProps() {\n        return {\n          ...getParentRenderProps(self),\n          notReady: !self.featureDensityStatsReady,\n          rpcDriverName: self.rpcDriverName,\n\n          displayModel: self,\n          onFeatureClick(_: unknown, featureId?: string) {\n            const f = featureId || self.featureIdUnderMouse\n            if (!f) {\n              self.clearFeatureSelection()\n            } else {\n              const feature = self.features.get(f)\n              if (feature) {\n                self.selectFeature(feature)\n              }\n            }\n          },\n          onClick() {\n            self.clearFeatureSelection()\n          },\n          // similar to click but opens a menu with further options\n          onFeatureContextMenu(_: unknown, featureId?: string) {\n            const f = featureId || self.featureIdUnderMouse\n            if (!f) {\n              self.clearFeatureSelection()\n            } else {\n              // feature id under mouse passed to context menu\n              self.setContextMenuFeature(self.features.get(f))\n            }\n          },\n\n          onMouseMove(_: unknown, featureId?: string) {\n            self.setFeatureIdUnderMouse(featureId)\n          },\n\n          onMouseLeave(_: unknown) {\n            self.setFeatureIdUnderMouse(undefined)\n          },\n\n          onContextMenu() {\n            self.setContextMenuFeature(undefined)\n            self.clearFeatureSelection()\n          },\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #method\n       */\n      async renderSvg(opts: ExportSvgDisplayOptions) {\n        const { renderBaseLinearDisplaySvg } = await import('./renderSvg')\n        return renderBaseLinearDisplaySvg(self as BaseLinearDisplayModel, opts)\n      },\n      afterAttach() {\n        // watch the parent's blocks to update our block state when they change,\n        // then we recreate the blocks on our own model (creating and deleting to\n        // match the parent blocks)\n        addDisposer(\n          self,\n          autorun(() => {\n            const blocksPresent: Record<string, boolean> = {}\n            const view = getContainingView(self) as LGV\n            if (!view.initialized) {\n              return\n            }\n            self.blockDefinitions.contentBlocks.forEach(block => {\n              blocksPresent[block.key] = true\n              if (!self.blockState.has(block.key)) {\n                self.addBlock(block.key, block)\n              }\n            })\n            self.blockState.forEach((_, key) => {\n              if (!blocksPresent[key]) {\n                self.deleteBlock(key as string)\n              }\n            })\n          }),\n        )\n      },\n    }))\n    .preProcessSnapshot(snap => {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!snap) {\n        return snap\n      }\n      // rewrite \"height\" from older snapshots to \"heightPreConfig\", this allows\n      // us to maintain a height \"getter\" going forward\n      // @ts-expect-error\n      const { height, ...rest } = snap\n      return { heightPreConfig: height, ...rest }\n    })\n    .postProcessSnapshot(snap => {\n      // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit\n      const r = snap as Omit<typeof snap, symbol>\n      const { blockState, ...rest } = r\n      return rest\n    })\n}\n\nexport const BaseLinearDisplay = stateModelFactory()\n\nexport type BaseLinearDisplayStateModel = typeof BaseLinearDisplay\nexport type BaseLinearDisplayModel = Instance<BaseLinearDisplayStateModel>\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nimport {\n  ContentBlock as ContentBlockComponent,\n  ElidedBlock as ElidedBlockComponent,\n  InterRegionPaddingBlock as InterRegionPaddingBlockComponent,\n} from './Block'\nimport { LinearGenomeViewModel } from '../../LinearGenomeView'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  linearBlocks: {\n    whiteSpace: 'nowrap',\n    textAlign: 'left',\n    position: 'absolute',\n    minHeight: '100%',\n    display: 'flex',\n  },\n  heightOverflowed: {\n    position: 'absolute',\n    color: 'rgb(77,77,77)',\n    borderBottom: '2px solid rgb(77,77,77)',\n    textShadow: 'white 0px 0px 1px',\n    whiteSpace: 'nowrap',\n    width: '100%',\n    fontWeight: 'bold',\n    textAlign: 'center',\n    zIndex: 2000,\n    boxSizing: 'border-box',\n  },\n})\n\nconst RenderedBlocks = observer(function ({\n  model,\n}: {\n  model: BaseLinearDisplayModel\n}) {\n  const { classes } = useStyles()\n  const { blockDefinitions, blockState } = model\n  return (\n    <>\n      {blockDefinitions.map(block => {\n        const key = `${model.id}-${block.key}`\n        if (block.type === 'ContentBlock') {\n          const state = blockState.get(block.key)\n          return (\n            <ContentBlockComponent block={block} key={key}>\n              {state?.ReactComponent ? (\n                <state.ReactComponent model={state} />\n              ) : null}\n              {state?.maxHeightReached ? (\n                <div\n                  className={classes.heightOverflowed}\n                  style={{\n                    top: state.layout.getTotalHeight() - 16,\n                    pointerEvents: 'none',\n                    height: 16,\n                  }}\n                >\n                  Max height reached\n                </div>\n              ) : null}\n            </ContentBlockComponent>\n          )\n        }\n        if (block.type === 'ElidedBlock') {\n          return <ElidedBlockComponent key={key} width={block.widthPx} />\n        }\n        if (block.type === 'InterRegionPaddingBlock') {\n          return (\n            <InterRegionPaddingBlockComponent\n              key={key}\n              width={block.widthPx}\n              style={{ background: 'none' }}\n              boundary={block.variant === 'boundary'}\n            />\n          )\n        }\n        throw new Error(`invalid block type ${JSON.stringify(block)}`)\n      })}\n    </>\n  )\n})\n\nexport { RenderedBlocks }\n\nconst LinearBlocks = observer(function ({\n  model,\n}: {\n  model: BaseLinearDisplayModel\n}) {\n  const { classes } = useStyles()\n  const { blockDefinitions } = model\n  const viewModel = getContainingView(model) as LGV\n  return (\n    <div\n      className={classes.linearBlocks}\n      style={{\n        left: blockDefinitions.offsetPx - viewModel.offsetPx,\n      }}\n    >\n      <RenderedBlocks model={model} />\n    </div>\n  )\n})\n\nexport default LinearBlocks\n","import React, { useState, useRef, Suspense } from 'react'\nimport { observer } from 'mobx-react'\nimport { useTheme } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { Menu } from '@jbrowse/core/ui'\n\n// locals\n\nimport LinearBlocks from './LinearBlocks'\nimport { BaseLinearDisplayModel } from '../models/BaseLinearDisplayModel'\n\nconst useStyles = makeStyles()({\n  display: {\n    position: 'relative',\n    whiteSpace: 'nowrap',\n    textAlign: 'left',\n    width: '100%',\n    minHeight: '100%',\n  },\n})\n\ntype Coord = [number, number]\n\nconst BaseLinearDisplay = observer(function (props: {\n  model: BaseLinearDisplayModel\n  children?: React.ReactNode\n}) {\n  const { classes } = useStyles()\n  const theme = useTheme()\n  const ref = useRef<HTMLDivElement>(null)\n  const [clientRect, setClientRect] = useState<DOMRect>()\n  const [offsetMouseCoord, setOffsetMouseCoord] = useState<Coord>([0, 0])\n  const [clientMouseCoord, setClientMouseCoord] = useState<Coord>([0, 0])\n  const [contextCoord, setContextCoord] = useState<Coord>()\n  const { model, children } = props\n  const { TooltipComponent, DisplayMessageComponent, height } = model\n  const items = model.contextMenuItems()\n  return (\n    <div\n      ref={ref}\n      data-testid={`display-${getConf(model, 'displayId')}`}\n      className={classes.display}\n      onContextMenu={event => {\n        event.preventDefault()\n        if (contextCoord) {\n          // There's already a context menu open, so close it\n          setContextCoord(undefined)\n        } else if (ref.current) {\n          setContextCoord([event.clientX, event.clientY])\n        }\n      }}\n      onMouseMove={event => {\n        if (!ref.current) {\n          return\n        }\n        const rect = ref.current.getBoundingClientRect()\n        const { left, top } = rect\n        setOffsetMouseCoord([event.clientX - left, event.clientY - top])\n        setClientMouseCoord([event.clientX, event.clientY])\n        setClientRect(rect)\n      }}\n    >\n      {DisplayMessageComponent ? (\n        <DisplayMessageComponent model={model} />\n      ) : (\n        <LinearBlocks {...props} />\n      )}\n      {children}\n\n      <Suspense fallback={null}>\n        <TooltipComponent\n          model={model}\n          height={height}\n          offsetMouseCoord={offsetMouseCoord}\n          clientMouseCoord={clientMouseCoord}\n          clientRect={clientRect}\n          mouseCoord={offsetMouseCoord}\n        />\n      </Suspense>\n\n      <Menu\n        open={Boolean(contextCoord) && items.length > 0}\n        onMenuItemClick={(_, callback) => {\n          callback()\n          setContextCoord(undefined)\n        }}\n        onClose={() => {\n          setContextCoord(undefined)\n          model.setContextMenuFeature(undefined)\n        }}\n        TransitionProps={{\n          onExit: () => {\n            setContextCoord(undefined)\n            model.setContextMenuFeature(undefined)\n          },\n        }}\n        anchorReference=\"anchorPosition\"\n        anchorPosition={\n          contextCoord\n            ? { top: contextCoord[1], left: contextCoord[0] }\n            : undefined\n        }\n        style={{\n          zIndex: theme.zIndex.tooltip,\n        }}\n        menuItems={items}\n      />\n    </div>\n  )\n})\n\nexport default BaseLinearDisplay\n\nexport { default as Tooltip } from './Tooltip'\nexport { default as BlockMsg } from './BlockMsg'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\n/**\n * #config LinearBareDisplay\n * #category display\n */\nfunction configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearBareDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: pluginManager.pluggableConfigSchemaType('renderer'),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport { configSchemaFactory }\n","import {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n} from '@jbrowse/core/configuration'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { types } from 'mobx-state-tree'\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\n\n/**\n * #stateModel LinearBareDisplay\n * #category display\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearBareDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearBareDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          return {\n            ...superRenderProps(),\n            ...getParentRenderProps(self),\n            rpcDriverName: self.rpcDriverName,\n            config: self.configuration.renderer,\n          }\n        },\n\n        /**\n         * #getter\n         */\n        get rendererTypeName() {\n          return self.configuration.renderer.type\n        },\n      }\n    })\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { IconButton, Paper, alpha } from '@mui/material'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession } from '@jbrowse/core/util'\n\n// icons\nimport ZoomIn from '@mui/icons-material/ZoomIn'\nimport ZoomOut from '@mui/icons-material/ZoomOut'\nimport ArrowDown from '@mui/icons-material/KeyboardArrowDown'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()(theme => ({\n  background: {\n    position: 'absolute',\n    right: 0,\n    zIndex: 1001,\n    background: theme.palette.background.paper,\n  },\n  focusedBackground: {\n    background: alpha(theme.palette.secondary.light, 0.2),\n  },\n}))\n\nconst MiniControls = observer(function ({\n  model,\n}: {\n  model: LinearGenomeViewModel\n}) {\n  const { classes } = useStyles()\n  const { id, bpPerPx, maxBpPerPx, minBpPerPx, scaleFactor, hideHeader } = model\n  const { focusedViewId } = getSession(model)\n  return hideHeader ? (\n    <Paper className={classes.background}>\n      <Paper\n        className={focusedViewId === id ? classes.focusedBackground : undefined}\n      >\n        <CascadingMenuButton menuItems={model.menuItems()}>\n          <ArrowDown fontSize=\"small\" />\n        </CascadingMenuButton>\n        <IconButton\n          data-testid=\"zoom_out\"\n          onClick={() => {\n            model.zoom(bpPerPx * 2)\n          }}\n          disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}\n        >\n          <ZoomOut fontSize=\"small\" />\n        </IconButton>\n        <IconButton\n          data-testid=\"zoom_in\"\n          onClick={() => {\n            model.zoom(bpPerPx / 2)\n          }}\n          disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}\n        >\n          <ZoomIn fontSize=\"small\" />\n        </IconButton>\n      </Paper>\n    </Paper>\n  ) : null\n})\n\nexport default MiniControls\n","import React, { useRef, useEffect, useState } from 'react'\nimport { Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession, stringify } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport RubberbandSpan from './RubberbandSpan'\nimport { getRelativeX } from './util'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  rubberbandControl: {\n    cursor: 'crosshair',\n    width: '100%',\n    minHeight: 8,\n  },\n  guide: {\n    pointerEvents: 'none',\n    height: '100%',\n    width: 1,\n    position: 'absolute',\n    zIndex: 10,\n  },\n  rel: {\n    position: 'relative',\n  },\n})\n\nconst HoverTooltip = observer(function ({\n  model,\n  open,\n  guideX,\n  overview,\n}: {\n  model: LGV\n  open: boolean\n  guideX: number\n  overview: Base1DViewModel\n}) {\n  const { classes } = useStyles()\n  const { cytobandOffset } = model\n  const { assemblyManager } = getSession(model)\n\n  const px = overview.pxToBp(guideX - cytobandOffset)\n  const assembly = assemblyManager.get(px.assemblyName)\n  const cytoband = assembly?.cytobands?.find(\n    f =>\n      px.coord > f.get('start') &&\n      px.coord < f.get('end') &&\n      px.refName === assembly.getCanonicalRefName(f.get('refName')),\n  )\n\n  return (\n    <Tooltip\n      open={open}\n      placement=\"top\"\n      title={[stringify(px), cytoband?.get('name')].join(' ')}\n      arrow\n    >\n      <div className={classes.guide} style={{ left: guideX }} />\n    </Tooltip>\n  )\n})\n\nconst OverviewRubberband = observer(function OverviewRubberband({\n  model,\n  overview,\n  ControlComponent = <div />,\n}: {\n  model: LGV\n  overview: Base1DViewModel\n  ControlComponent?: React.ReactElement\n}) {\n  const { cytobandOffset } = model\n  const [startX, setStartX] = useState<number>()\n  const [currentX, setCurrentX] = useState<number>()\n  const [guideX, setGuideX] = useState<number>()\n  const controlsRef = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n  const mouseDragging = startX !== undefined\n\n  useEffect(() => {\n    function globalMouseMove(event: MouseEvent) {\n      const ref = controlsRef.current\n      if (ref && mouseDragging) {\n        setCurrentX(getRelativeX(event, ref))\n      }\n    }\n\n    function globalMouseUp() {\n      // click and drag\n      if (startX !== undefined && currentX !== undefined) {\n        if (Math.abs(currentX - startX) > 3) {\n          const left = Math.min(startX, currentX)\n          const right = Math.max(startX, currentX)\n          model.moveTo(\n            overview.pxToBp(left - cytobandOffset),\n            overview.pxToBp(right - cytobandOffset),\n          )\n        }\n      }\n\n      // just a click\n      if (startX !== undefined && currentX === undefined) {\n        const click = overview.pxToBp(startX - cytobandOffset)\n        if (!click.refName) {\n          getSession(model).notify('unknown position clicked')\n          console.error('unknown position clicked', click)\n        } else {\n          model.centerAt(Math.round(click.coord), click.refName, click.index)\n        }\n      }\n      setStartX(undefined)\n      setCurrentX(undefined)\n\n      if (startX !== undefined) {\n        setGuideX(undefined)\n      }\n    }\n\n    function globalKeyDown(event: KeyboardEvent) {\n      if (event.key === 'Escape') {\n        setStartX(undefined)\n        setCurrentX(undefined)\n      }\n    }\n\n    if (mouseDragging) {\n      window.addEventListener('mousemove', globalMouseMove, true)\n      window.addEventListener('mouseup', globalMouseUp, true)\n      window.addEventListener('keydown', globalKeyDown, true)\n      return () => {\n        window.removeEventListener('mousemove', globalMouseMove, true)\n        window.removeEventListener('mouseup', globalMouseUp, true)\n        window.removeEventListener('keydown', globalKeyDown, true)\n      }\n    }\n    return () => {}\n  }, [mouseDragging, currentX, startX, model, overview, cytobandOffset])\n\n  function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n    event.preventDefault()\n    event.stopPropagation()\n    setStartX(getRelativeX(event, controlsRef.current))\n  }\n\n  function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n    setGuideX(getRelativeX(event, controlsRef.current))\n  }\n\n  function mouseOut() {\n    setGuideX(undefined)\n  }\n\n  if (startX === undefined) {\n    return (\n      <div className={classes.rel}>\n        {guideX !== undefined ? (\n          <HoverTooltip\n            model={model}\n            open={!mouseDragging}\n            overview={overview}\n            guideX={guideX}\n          />\n        ) : null}\n        <div\n          className={classes.rubberbandControl}\n          ref={controlsRef}\n          onMouseDown={mouseDown}\n          onMouseOut={mouseOut}\n          onMouseMove={mouseMove}\n        >\n          {ControlComponent}\n        </div>\n      </div>\n    )\n  }\n\n  let left = startX || 0\n  let width = 0\n  if (currentX !== undefined) {\n    left = currentX < startX ? currentX : startX\n    width = currentX - startX\n  }\n  // calculate the start and end bp of drag\n  let leftBpOffset: ReturnType<typeof overview.pxToBp> | undefined\n  let rightBpOffset: ReturnType<typeof overview.pxToBp> | undefined\n  if (startX) {\n    leftBpOffset = overview.pxToBp(startX - cytobandOffset)\n    rightBpOffset = overview.pxToBp(startX + width - cytobandOffset)\n    if (currentX !== undefined && currentX < startX) {\n      ;[leftBpOffset, rightBpOffset] = [rightBpOffset, leftBpOffset]\n    }\n  }\n\n  return (\n    <div className={classes.rel}>\n      {leftBpOffset && rightBpOffset ? (\n        <RubberbandSpan\n          leftBpOffset={leftBpOffset}\n          rightBpOffset={rightBpOffset}\n          width={Math.abs(width)}\n          left={left}\n        />\n      ) : null}\n      <div\n        data-testid=\"rubberband_controls\"\n        className={classes.rubberbandControl}\n        ref={controlsRef}\n        onMouseDown={mouseDown}\n        onMouseOut={mouseOut}\n        onMouseMove={mouseMove}\n      >\n        {ControlComponent}\n      </div>\n    </div>\n  )\n})\n\nexport default OverviewRubberband\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { colord } from '@jbrowse/core/util/colord'\nimport { SessionWithWidgets, getSession, notEmpty } from '@jbrowse/core/util'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\n\n// locals\nimport { LinearGenomeViewModel } from '../model'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => ({\n  highlight: {\n    height: '100%',\n    position: 'absolute',\n    background: colord(theme.palette.highlight.main).alpha(0.35).toRgbString(),\n    borderLeft: `1px solid ${theme.palette.highlight.main}`,\n    borderRight: `1px solid ${theme.palette.highlight.main}`,\n  },\n}))\n\nconst OverviewHighlight = observer(function OverviewHighlight({\n  model,\n  overview,\n}: {\n  model: LGV\n  overview: Base1DViewModel\n}) {\n  const { classes } = useStyles()\n  const { highlight, cytobandOffset } = model\n\n  const session = getSession(model) as SessionWithWidgets\n  const { assemblyManager } = session\n  return highlight\n    .map(r => {\n      const asm = assemblyManager.get(r.assemblyName)\n      const refName = asm?.getCanonicalRefName(r.refName) ?? r.refName\n      const s = overview.bpToPx({\n        ...r,\n        refName,\n        coord: r.start,\n      })\n      const e = overview.bpToPx({\n        ...r,\n        refName,\n        coord: r.end,\n      })\n      return s !== undefined && e !== undefined\n        ? {\n            width: Math.abs(e - s),\n            left: s + cytobandOffset,\n          }\n        : undefined\n    })\n    .filter(notEmpty)\n    .map(({ left, width }, idx) => (\n      <div\n        /* biome-ignore lint/suspicious/noArrayIndexKey: */\n        key={`${left}_${width}_${idx}`}\n        className={classes.highlight}\n        style={{\n          width: width,\n          left: left,\n        }}\n      />\n    ))\n})\n\nexport default OverviewHighlight\n","import React from 'react'\nimport { Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// core\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { getSession, getTickDisplayStr } from '@jbrowse/core/util'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\n\n// locals\nimport type { LinearGenomeViewModel } from '..'\nimport { chooseGridPitch } from '../util'\nimport { HEADER_OVERVIEW_HEIGHT } from '../consts'\n\nconst useStyles = makeStyles()({\n  scalebarLabel: {\n    height: HEADER_OVERVIEW_HEIGHT,\n    position: 'absolute',\n    display: 'flex',\n    justifyContent: 'center',\n    pointerEvents: 'none',\n  },\n})\n\nconst OverviewScalebarTickLabels = observer(function ({\n  block,\n  scale,\n  overview,\n  model,\n}: {\n  model: LinearGenomeViewModel\n  scale: number\n  block: ContentBlock\n  overview: Base1DViewModel\n}) {\n  const { classes } = useStyles()\n  const { start, end, reversed, refName, assemblyName } = block\n  const { majorPitch } = chooseGridPitch(scale, 120, 15)\n  const { assemblyManager } = getSession(model)\n  const assembly = assemblyManager.get(assemblyName)\n  const refNameColor = assembly?.getRefNameColor(refName)\n\n  const tickLabels = []\n  for (let i = 0; i < Math.floor((end - start) / majorPitch); i++) {\n    const offsetLabel = (i + 1) * majorPitch\n    tickLabels.push(reversed ? end - offsetLabel : start + offsetLabel)\n  }\n  return tickLabels.map((tickLabel, labelIdx) => (\n    <Typography\n      key={`${JSON.stringify(block)}-${tickLabel}-${labelIdx}`}\n      className={classes.scalebarLabel}\n      variant=\"body2\"\n      style={{\n        left: ((labelIdx + 1) * majorPitch) / scale,\n        pointerEvents: 'none',\n        color: refNameColor,\n      }}\n    >\n      {getTickDisplayStr(tickLabel, overview.bpPerPx)}\n    </Typography>\n  ))\n})\n\nexport default OverviewScalebarTickLabels\n","import React, { useMemo } from 'react'\nimport { Typography, useTheme, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// core\nimport Base1DView, { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { getEnv, getSession } from '@jbrowse/core/util'\nimport { ContentBlock } from '@jbrowse/core/util/blockTypes'\n\n// locals\nimport type { LinearGenomeViewModel } from '..'\nimport { getCytobands } from './util'\nimport OverviewRubberband from './OverviewRubberband'\nimport Cytobands from './Cytobands'\nimport OverviewScalebarPolygon from './OverviewScalebarPolygon'\nimport OverviewHighlight from './OverviewHighlight'\nimport OverviewScalebarTickLabels from './OverviewScalebarTickLabels'\nimport { HEADER_BAR_HEIGHT, HEADER_OVERVIEW_HEIGHT } from '../consts'\n\nconst wholeSeqSpacer = 2\n\nconst useStyles = makeStyles()(theme => ({\n  scalebar: {\n    height: HEADER_OVERVIEW_HEIGHT,\n  },\n  scalebarBorder: {\n    border: '1px solid',\n  },\n  scalebarContig: {\n    backgroundColor: theme.palette.background.default,\n    position: 'absolute',\n    top: 0,\n    height: HEADER_OVERVIEW_HEIGHT,\n    overflow: 'hidden',\n  },\n  scalebarContigForward: {\n    backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='${theme.palette.divider}'/%3E%3C/svg%3E\")`,\n    backgroundRepeat: 'repeat',\n  },\n  scalebarContigReverse: {\n    backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='${theme.palette.divider}'/%3E%3C/svg%3E\")`,\n    backgroundRepeat: 'repeat',\n  },\n\n  scalebarRefName: {\n    position: 'absolute',\n    fontWeight: 'bold',\n    pointerEvents: 'none',\n    zIndex: 100,\n  },\n  scalebarVisibleRegion: {\n    position: 'absolute',\n    height: HEADER_OVERVIEW_HEIGHT,\n    pointerEvents: 'none',\n    zIndex: 100,\n    border: '1px solid',\n  },\n  overview: {\n    height: HEADER_BAR_HEIGHT,\n    position: 'relative',\n  },\n  overviewSvg: {\n    pointerEvents: 'none',\n    width: '100%',\n    position: 'absolute',\n  },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nconst OverviewBox = observer(function ({\n  scale,\n  model,\n  block,\n  overview,\n}: {\n  scale: number\n  model: LGV\n  block: ContentBlock\n  overview: Base1DViewModel\n}) {\n  const { classes, cx } = useStyles()\n  const theme = useTheme()\n  const { cytobandOffset, showCytobands } = model\n  const { reversed, refName, assemblyName } = block\n  const { assemblyManager } = getSession(model)\n  const assembly = assemblyManager.get(assemblyName)\n  const refNameColor = assembly?.getRefNameColor(refName)\n\n  const canDisplayCytobands =\n    showCytobands && getCytobands(assembly, block.refName).length\n\n  return (\n    <div>\n      {/* name of sequence */}\n      <Typography\n        style={{\n          left: block.offsetPx + 3,\n          color: canDisplayCytobands\n            ? theme.palette.text.primary\n            : refNameColor,\n        }}\n        className={classes.scalebarRefName}\n      >\n        {refName}\n      </Typography>\n      <div\n        className={cx(\n          classes.scalebarContig,\n          canDisplayCytobands\n            ? undefined\n            : reversed\n              ? classes.scalebarContigReverse\n              : classes.scalebarContigForward,\n          !canDisplayCytobands ? classes.scalebarBorder : undefined,\n        )}\n        style={{\n          left: block.offsetPx + cytobandOffset,\n          width: block.widthPx,\n          borderColor: refNameColor,\n        }}\n      >\n        {canDisplayCytobands ? (\n          <svg style={{ width: '100%' }}>\n            <Cytobands overview={overview} assembly={assembly} block={block} />\n          </svg>\n        ) : (\n          <OverviewScalebarTickLabels\n            model={model}\n            overview={overview}\n            scale={scale}\n            block={block}\n          />\n        )}\n      </div>\n    </div>\n  )\n})\n\nconst Scalebar = observer(function ({\n  model,\n  scale,\n  overview,\n}: {\n  model: LGV\n  overview: Base1DViewModel\n  scale: number\n}) {\n  const { classes } = useStyles()\n  const theme = useTheme()\n  const { dynamicBlocks, showCytobands, cytobandOffset } = model\n  const { pluginManager } = getEnv(model)\n  const visibleRegions = dynamicBlocks.contentBlocks\n  const overviewVisibleRegions = overview.dynamicBlocks\n  const scalebarColor = theme.palette.tertiary.light\n  // catches possible null from at's below\n  if (!visibleRegions.length) {\n    return null\n  }\n\n  const first = visibleRegions.at(0)!\n  const last = visibleRegions.at(-1)!\n\n  const firstOverviewPx =\n    overview.bpToPx({\n      ...first,\n      coord: first.reversed ? first.end : first.start,\n    }) || 0\n\n  const lastOverviewPx =\n    overview.bpToPx({\n      ...last,\n      coord: last.reversed ? last.start : last.end,\n    }) || 0\n\n  const color = showCytobands ? '#f00' : scalebarColor\n  const transparency = showCytobands ? 0.1 : 0.3\n\n  const additional = pluginManager.evaluateExtensionPoint(\n    'LinearGenomeView-OverviewScalebarComponent',\n    undefined,\n    { model, overview },\n  ) as React.ReactNode\n\n  return (\n    <div className={classes.scalebar}>\n      <div\n        className={classes.scalebarVisibleRegion}\n        style={{\n          width: lastOverviewPx - firstOverviewPx,\n          left: firstOverviewPx + cytobandOffset,\n          background: alpha(color, transparency),\n          borderColor: color,\n        }}\n      />\n      {/* this is the entire scale bar */}\n      {overviewVisibleRegions.map((block, idx) => {\n        return !(block.type === 'ContentBlock') ? (\n          <div\n            key={`${JSON.stringify(block)}-${idx}`}\n            className={classes.scalebarContig}\n            style={{\n              width: block.widthPx,\n              left: block.offsetPx,\n              backgroundColor: '#999',\n              backgroundImage:\n                'repeating-linear-gradient(90deg, transparent, transparent 1px, rgba(255,255,255,.5) 1px, rgba(255,255,255,.5) 3px)',\n            }}\n          />\n        ) : (\n          <OverviewBox\n            scale={scale}\n            block={block}\n            model={model}\n            overview={overview}\n            key={`${JSON.stringify(block)}-${idx}`}\n          />\n        )\n      })}\n      <OverviewHighlight model={model} overview={overview} />\n      {additional}\n    </div>\n  )\n})\n\nconst OverviewScalebar = observer(function ({\n  model,\n  children,\n}: {\n  model: LGV\n  children: React.ReactNode\n}) {\n  const { classes } = useStyles()\n  const {\n    minimumBlockWidth,\n    totalBp,\n    width,\n    cytobandOffset,\n    displayedRegions,\n  } = model\n\n  const modWidth = width - cytobandOffset\n  const str = JSON.stringify(displayedRegions)\n  const overview = useMemo(() => {\n    const overview = Base1DView.create({\n      displayedRegions: JSON.parse(str),\n      interRegionPaddingWidth: 0,\n      minimumBlockWidth,\n    })\n\n    overview.setVolatileWidth(modWidth)\n    overview.showAllRegions()\n    return overview\n  }, [str, minimumBlockWidth, modWidth])\n\n  const scale =\n    totalBp / (modWidth - (displayedRegions.length - 1) * wholeSeqSpacer)\n\n  return (\n    <div>\n      <OverviewRubberband\n        model={model}\n        overview={overview}\n        ControlComponent={\n          <Scalebar model={model} overview={overview} scale={scale} />\n        }\n      />\n      <div className={classes.overview}>\n        <svg height={HEADER_BAR_HEIGHT} className={classes.overviewSvg}>\n          <OverviewScalebarPolygon model={model} overview={overview} />\n        </svg>\n        {children}\n      </div>\n    </div>\n  )\n})\n\nexport default OverviewScalebar\n","import React, { useState, useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport { Slider, IconButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport ZoomIn from '@mui/icons-material/ZoomIn'\nimport ZoomOut from '@mui/icons-material/ZoomOut'\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()(theme => ({\n  container: {\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  slider: {\n    width: 70,\n    color: theme.palette.text.secondary,\n  },\n}))\n\nconst ZoomControls = observer(function ({\n  model,\n}: {\n  model: LinearGenomeViewModel\n}) {\n  const { classes } = useStyles()\n  const { maxBpPerPx, minBpPerPx, bpPerPx } = model\n  const [value, setValue] = useState(-Math.log2(bpPerPx) * 100)\n  useEffect(() => {\n    setValue(-Math.log2(bpPerPx) * 100)\n  }, [bpPerPx])\n\n  return (\n    <div className={classes.container}>\n      <IconButton\n        data-testid=\"zoom_out\"\n        onClick={() => {\n          model.zoom(bpPerPx * 2)\n        }}\n        disabled={bpPerPx >= maxBpPerPx - 0.0001}\n        size=\"large\"\n      >\n        <ZoomOut />\n      </IconButton>\n\n      <Slider\n        size=\"small\"\n        className={classes.slider}\n        value={value}\n        min={-Math.log2(maxBpPerPx) * 100}\n        max={-Math.log2(minBpPerPx) * 100}\n        onChange={(_, val) => {\n          setValue(val as number)\n        }}\n        onChangeCommitted={() => model.zoomTo(2 ** (-value / 100))}\n      />\n      <IconButton\n        data-testid=\"zoom_in\"\n        onClick={() => {\n          model.zoom(model.bpPerPx / 2)\n        }}\n        disabled={bpPerPx <= minBpPerPx + 0.0001}\n        size=\"large\"\n      >\n        <ZoomIn />\n      </IconButton>\n    </div>\n  )\n})\n\nexport default ZoomControls\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { useTheme, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getSession } from '@jbrowse/core/util'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { fetchResults } from './util'\nimport { LinearGenomeViewModel } from '..'\nimport { handleSelectedRegion, navToOption } from '../../searchUtils'\nimport { SPACING, WIDGET_HEIGHT } from '../consts'\n\nconst useStyles = makeStyles()(() => ({\n  headerRefName: {\n    minWidth: 100,\n  },\n}))\n\nconst SearchBox = observer(function ({\n  model,\n  showHelp,\n}: {\n  showHelp?: boolean\n  model: LinearGenomeViewModel\n}) {\n  const { classes } = useStyles()\n  const theme = useTheme()\n  const session = getSession(model)\n\n  const { textSearchManager, assemblyManager } = session\n  const { assemblyNames, rankSearchResults } = model\n  const assemblyName = assemblyNames[0]!\n  const assembly = assemblyManager.get(assemblyName)\n  const searchScope = model.searchScope(assemblyName)\n\n  return (\n    <RefNameAutocomplete\n      showHelp={showHelp}\n      onSelect={async option => {\n        try {\n          if (option.hasLocation()) {\n            await navToOption({ option, model, assemblyName })\n          } else if (option.results?.length) {\n            model.setSearchResults(option.results, option.getLabel())\n          } else if (assembly) {\n            await handleSelectedRegion({\n              input: option.getLabel(),\n              assembly,\n              model,\n            })\n          }\n        } catch (e) {\n          console.error(e)\n          getSession(model).notify(`${e}`, 'warning')\n        }\n      }}\n      assemblyName={assemblyName}\n      fetchResults={queryString =>\n        fetchResults({\n          queryString,\n          searchScope,\n          rankSearchResults,\n          textSearchManager,\n          assembly,\n        })\n      }\n      model={model}\n      minWidth={175}\n      TextFieldProps={{\n        variant: 'outlined',\n        className: classes.headerRefName,\n        style: {\n          margin: SPACING,\n        },\n        InputProps: {\n          style: {\n            padding: 0,\n            height: WIDGET_HEIGHT,\n            background: alpha(theme.palette.background.paper, 0.8),\n          },\n        },\n      }}\n    />\n  )\n})\n\nexport default SearchBox\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, IconButton, FormGroup, Typography, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getBpDisplayStr } from '@jbrowse/core/util'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward'\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport OverviewScalebar from './OverviewScalebar'\nimport ZoomControls from './ZoomControls'\nimport SearchBox from './SearchBox'\nimport { SPACING } from '../consts'\n\ntype LGV = LinearGenomeViewModel\nconst useStyles = makeStyles()(theme => ({\n  headerBar: {\n    display: 'flex',\n  },\n  headerForm: {\n    flexWrap: 'nowrap',\n    marginRight: 7,\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n\n  panButton: {\n    background: alpha(theme.palette.background.paper, 0.8),\n    color: theme.palette.text.primary,\n    margin: SPACING,\n  },\n  bp: {\n    display: 'flex',\n    alignItems: 'center',\n    marginLeft: 5,\n  },\n  toggleButton: {\n    height: 44,\n    border: 'none',\n    marginLeft: theme.spacing(4),\n  },\n  buttonSpacer: {\n    marginRight: theme.spacing(2),\n  },\n}))\n\nconst HeaderButtons = observer(({ model }: { model: LGV }) => {\n  const { classes } = useStyles()\n  return (\n    <IconButton\n      onClick={model.activateTrackSelector}\n      className={classes.toggleButton}\n      title=\"Open track selector\"\n      value=\"track_select\"\n    >\n      <TrackSelectorIcon className={classes.buttonSpacer} />\n    </IconButton>\n  )\n})\n\nfunction PanControls({ model }: { model: LGV }) {\n  const { classes } = useStyles()\n  return (\n    <>\n      <Button\n        variant=\"outlined\"\n        className={classes.panButton}\n        onClick={() => {\n          model.slide(-0.9)\n        }}\n      >\n        <ArrowBackIcon />\n      </Button>\n      <Button\n        variant=\"outlined\"\n        className={classes.panButton}\n        onClick={() => {\n          model.slide(0.9)\n        }}\n      >\n        <ArrowForwardIcon />\n      </Button>\n    </>\n  )\n}\n\nconst RegionWidth = observer(function ({ model }: { model: LGV }) {\n  const { classes } = useStyles()\n  const { coarseTotalBp } = model\n  return (\n    <Typography variant=\"body2\" color=\"textSecondary\" className={classes.bp}>\n      {getBpDisplayStr(coarseTotalBp)}\n    </Typography>\n  )\n})\n\nconst Controls = ({ model }: { model: LGV }) => {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.headerBar}>\n      <HeaderButtons model={model} />\n      <div className={classes.spacer} />\n      <FormGroup row className={classes.headerForm}>\n        <PanControls model={model} />\n        <SearchBox model={model} />\n      </FormGroup>\n      <RegionWidth model={model} />\n      <ZoomControls model={model} />\n      <div className={classes.spacer} />\n    </div>\n  )\n}\n\nconst LinearGenomeViewHeader = observer(function ({ model }: { model: LGV }) {\n  const { hideHeader, hideHeaderOverview } = model\n  return !hideHeader ? (\n    hideHeaderOverview ? (\n      <Controls model={model} />\n    ) : (\n      <OverviewScalebar model={model}>\n        <Controls model={model} />\n      </OverviewScalebar>\n    )\n  ) : null\n})\n\nexport default LinearGenomeViewHeader\n","import React, { lazy } from 'react'\nimport { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { Region } from '@jbrowse/core/util/types'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { Region as IRegion } from '@jbrowse/core/util/types'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport {\n  assembleLocString,\n  clamp,\n  findLast,\n  getSession,\n  isSessionModelWithWidgets,\n  isSessionWithAddTracks,\n  localStorageGetItem,\n  localStorageSetItem,\n  measureText,\n  springAnimate,\n  sum,\n  ParsedLocString,\n} from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { BlockSet, BaseBlock } from '@jbrowse/core/util/blockTypes'\nimport calculateDynamicBlocks from '@jbrowse/core/util/calculateDynamicBlocks'\nimport calculateStaticBlocks from '@jbrowse/core/util/calculateStaticBlocks'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { when, transaction, autorun } from 'mobx'\nimport {\n  addDisposer,\n  cast,\n  getSnapshot,\n  getRoot,\n  resolveIdentifier,\n  types,\n  Instance,\n  getParent,\n} from 'mobx-state-tree'\n\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\nimport { moveTo, pxToBp, bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { saveAs } from 'file-saver'\nimport clone from 'clone'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport SyncAltIcon from '@mui/icons-material/SyncAlt'\nimport VisibilityIcon from '@mui/icons-material/Visibility'\nimport LabelIcon from '@mui/icons-material/Label'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\nimport PhotoCameraIcon from '@mui/icons-material/PhotoCamera'\nimport ZoomInIcon from '@mui/icons-material/ZoomIn'\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen'\nimport PaletteIcon from '@mui/icons-material/Palette'\nimport SearchIcon from '@mui/icons-material/Search'\n\nimport MiniControls from './components/MiniControls'\nimport Header from './components/Header'\nimport { generateLocations, parseLocStrings } from './util'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { handleSelectedRegion } from '../searchUtils'\nimport {\n  HEADER_BAR_HEIGHT,\n  HEADER_OVERVIEW_HEIGHT,\n  INTER_REGION_PADDING_WIDTH,\n  RESIZE_HANDLE_HEIGHT,\n  SCALE_BAR_HEIGHT,\n} from './consts'\n\n// lazies\nconst ReturnToImportFormDialog = lazy(\n  () => import('@jbrowse/core/ui/ReturnToImportFormDialog'),\n)\nconst SequenceSearchDialog = lazy(\n  () => import('./components/SequenceSearchDialog'),\n)\nconst ExportSvgDialog = lazy(() => import('./components/ExportSvgDialog'))\nconst GetSequenceDialog = lazy(() => import('./components/GetSequenceDialog'))\nconst SearchResultsDialog = lazy(\n  () => import('./components/SearchResultsDialog'),\n)\n\nexport interface BpOffset {\n  refName?: string\n  index: number\n  offset: number\n  start?: number\n  end?: number\n  coord?: number\n  reversed?: boolean\n  assemblyName?: string\n  oob?: boolean\n}\nexport interface ExportSvgOptions {\n  rasterizeLayers?: boolean\n  filename?: string\n  Wrapper?: React.FC<{ children: React.ReactNode }>\n  fontSize?: number\n  rulerHeight?: number\n  textHeight?: number\n  paddingHeight?: number\n  headerHeight?: number\n  cytobandHeight?: number\n  trackLabels?: string\n  themeName?: string\n}\n\nexport interface HighlightType {\n  start: number\n  end: number\n  assemblyName: string\n  refName: string\n}\n\nfunction calculateVisibleLocStrings(contentBlocks: BaseBlock[]) {\n  if (!contentBlocks.length) {\n    return ''\n  }\n  const isSingleAssemblyName = contentBlocks.every(\n    b => b.assemblyName === contentBlocks[0]!.assemblyName,\n  )\n  const locs = contentBlocks.map(block =>\n    assembleLocString({\n      ...block,\n      start: Math.round(block.start),\n      end: Math.round(block.end),\n      assemblyName: isSingleAssemblyName ? undefined : block.assemblyName,\n    }),\n  )\n  return locs.join(' ')\n}\n\nexport interface NavLocation {\n  refName: string\n  start?: number\n  end?: number\n  assemblyName?: string\n}\n\n/**\n * #stateModel LinearGenomeView\n * #category view\n *\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nexport function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'LinearGenomeView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        id: ElementId,\n\n        /**\n         * #property\n         * this is a string instead of the const literal 'LinearGenomeView' to\n         * reduce some typescripting strictness, but you should pass the string\n         * 'LinearGenomeView' to the model explicitly\n         */\n        type: types.literal('LinearGenomeView') as unknown as string,\n\n        /**\n         * #property\n         * corresponds roughly to the horizontal scroll of the LGV\n         */\n        offsetPx: 0,\n\n        /**\n         * #property\n         * corresponds roughly to the zoom level, base-pairs per pixel\n         */\n        bpPerPx: 1,\n\n        /**\n         * #property\n         * currently displayed regions, can be a single chromosome, arbitrary\n         * subsections, or the entire  set of chromosomes in the genome, but it not\n         * advised to use the entire set of chromosomes if your assembly is very\n         * fragmented\n         */\n        displayedRegions: types.optional(types.frozen<IRegion[]>(), []),\n\n        /**\n         * #property\n         * array of currently displayed tracks state models instances\n         */\n        tracks: types.array(\n          pluginManager.pluggableMstType('track', 'stateModel'),\n        ),\n\n        /**\n         * #property\n         */\n        hideHeader: false,\n\n        /**\n         * #property\n         */\n        hideHeaderOverview: false,\n\n        /**\n         * #property\n         */\n        hideNoTracksActive: false,\n\n        /**\n         * #property\n         */\n        trackSelectorType: types.optional(\n          types.enumeration(['hierarchical']),\n          'hierarchical',\n        ),\n        /**\n         * #property\n         * show the \"center line\"\n         */\n        showCenterLine: types.optional(types.boolean, () =>\n          Boolean(\n            JSON.parse(localStorageGetItem('lgv-showCenterLine') || 'false'),\n          ),\n        ),\n\n        /**\n         * #property\n         * show the \"cytobands\" in the overview scale bar\n         */\n        showCytobandsSetting: types.optional(types.boolean, () =>\n          Boolean(\n            JSON.parse(localStorageGetItem('lgv-showCytobands') || 'true'),\n          ),\n        ),\n\n        /**\n         * #property\n         * how to display the track labels, can be \"overlapping\", \"offset\", or\n         * \"hidden\", or empty string \"\" (which results in conf being used). see\n         * LinearGenomeViewPlugin\n         * https://jbrowse.org/jb2/docs/config/lineargenomeviewplugin/ docs for\n         * how conf is used\n         */\n        trackLabels: types.optional(\n          types.string,\n          () => localStorageGetItem('lgv-trackLabels') || '',\n        ),\n\n        /**\n         * #property\n         * show the \"gridlines\" in the track area\n         */\n        showGridlines: true,\n\n        /**\n         * #property\n         * highlights on the LGV from the URL parameters\n         */\n        highlight: types.optional(\n          types.array(types.frozen<HighlightType>()),\n          [],\n        ),\n\n        /**\n         * #property\n         * color by CDS\n         */\n        colorByCDS: types.optional(types.boolean, () =>\n          Boolean(JSON.parse(localStorageGetItem('lgv-colorByCDS') || 'false')),\n        ),\n\n        /**\n         * #property\n         * color by CDS\n         */\n        showTrackOutlines: types.optional(types.boolean, () =>\n          Boolean(\n            JSON.parse(localStorageGetItem('lgv-showTrackOutlines') || 'true'),\n          ),\n        ),\n      }),\n    )\n    .volatile(() => ({\n      volatileWidth: undefined as number | undefined,\n      minimumBlockWidth: 3,\n      draggingTrackId: undefined as undefined | string,\n      volatileError: undefined as unknown,\n\n      // array of callbacks to run after the next set of the displayedRegions,\n      // which is basically like an onLoad\n      afterDisplayedRegionsSetCallbacks: [] as (() => void)[],\n      scaleFactor: 1,\n      trackRefs: {} as Record<string, HTMLDivElement>,\n      coarseDynamicBlocks: [] as BaseBlock[],\n      coarseTotalBp: 0,\n      leftOffset: undefined as undefined | BpOffset,\n      rightOffset: undefined as undefined | BpOffset,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * this is the effective value of the track labels setting, incorporating\n       * both the config and view state. use this instead of view.trackLabels\n       */\n      get trackLabelsSetting() {\n        const sessionSetting = getConf(getSession(self), [\n          'LinearGenomeViewPlugin',\n          'trackLabels',\n        ])\n        return self.trackLabels || sessionSetting\n      },\n      /**\n       * #getter\n       */\n      get width(): number {\n        if (self.volatileWidth === undefined) {\n          throw new Error(\n            'width undefined, make sure to check for model.initialized',\n          )\n        }\n        return self.volatileWidth\n      },\n      /**\n       * #getter\n       */\n      get interRegionPaddingWidth() {\n        return INTER_REGION_PADDING_WIDTH\n      },\n\n      /**\n       * #getter\n       */\n      get assemblyNames() {\n        return [\n          ...new Set(self.displayedRegions.map(region => region.assemblyName)),\n        ]\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      scaleBarDisplayPrefix() {\n        return getParent<any>(self, 2).type === 'LinearSyntenyView'\n          ? self.assemblyNames[0]\n          : ''\n      },\n      /**\n       * #method\n       */\n\n      MiniControlsComponent(): React.FC<any> {\n        return MiniControls\n      },\n\n      /**\n       * #method\n       */\n\n      HeaderComponent(): React.FC<any> {\n        return Header\n      },\n\n      /**\n       * #getter\n       */\n      get assemblyErrors() {\n        const { assemblyManager } = getSession(self)\n        return self.assemblyNames\n          .map(a => assemblyManager.get(a)?.error)\n          .filter(f => !!f)\n          .join(', ')\n      },\n\n      /**\n       * #getter\n       */\n      get assembliesInitialized() {\n        const { assemblyManager } = getSession(self)\n        const { assemblyNames } = self\n        return assemblyNames.every(a => assemblyManager.get(a)?.initialized)\n      },\n\n      /**\n       * #getter\n       */\n      get initialized() {\n        return self.volatileWidth !== undefined && this.assembliesInitialized\n      },\n\n      /**\n       * #getter\n       */\n      get hasDisplayedRegions() {\n        return self.displayedRegions.length > 0\n      },\n\n      /**\n       * #getter\n       */\n      get scaleBarHeight() {\n        return SCALE_BAR_HEIGHT + RESIZE_HANDLE_HEIGHT\n      },\n\n      /**\n       * #getter\n       */\n      get headerHeight() {\n        if (self.hideHeader) {\n          return 0\n        }\n        if (self.hideHeaderOverview) {\n          return HEADER_BAR_HEIGHT\n        }\n        return HEADER_BAR_HEIGHT + HEADER_OVERVIEW_HEIGHT\n      },\n\n      /**\n       * #getter\n       */\n      get trackHeights() {\n        return sum(self.tracks.map(t => t.displays[0].height))\n      },\n\n      /**\n       * #getter\n       */\n      get trackHeightsWithResizeHandles() {\n        return this.trackHeights + self.tracks.length * RESIZE_HANDLE_HEIGHT\n      },\n\n      /**\n       * #getter\n       */\n      get height() {\n        return (\n          this.trackHeightsWithResizeHandles +\n          this.headerHeight +\n          this.scaleBarHeight\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get totalBp() {\n        return sum(self.displayedRegions.map(r => r.end - r.start))\n      },\n\n      /**\n       * #getter\n       */\n      get maxBpPerPx() {\n        return this.totalBp / (self.width * 0.9)\n      },\n\n      /**\n       * #getter\n       */\n      get minBpPerPx() {\n        return 1 / 50\n      },\n\n      /**\n       * #getter\n       */\n      get error(): unknown {\n        return self.volatileError || this.assemblyErrors\n      },\n\n      /**\n       * #getter\n       */\n      get maxOffset() {\n        // objectively determined to keep the linear genome on the main screen\n        const leftPadding = 10\n        return this.displayedRegionsTotalPx - leftPadding\n      },\n\n      /**\n       * #getter\n       */\n      get minOffset() {\n        // objectively determined to keep the linear genome on the main screen\n        const rightPadding = 30\n        return -self.width + rightPadding\n      },\n\n      /**\n       * #getter\n       */\n      get displayedRegionsTotalPx() {\n        return this.totalBp / self.bpPerPx\n      },\n\n      /**\n       * #method\n       */\n      renderProps() {\n        return {\n          ...getParentRenderProps(self),\n          bpPerPx: self.bpPerPx,\n          colorByCDS: self.colorByCDS,\n        }\n      },\n\n      /**\n       * #method\n       */\n      searchScope(assemblyName: string) {\n        return {\n          assemblyName,\n          includeAggregateIndexes: true,\n          tracks: self.tracks,\n        }\n      },\n\n      /**\n       * #method\n       */\n      getTrack(id: string) {\n        return self.tracks.find(t => t.configuration.trackId === id)\n      },\n\n      /**\n       * #method\n       */\n      rankSearchResults(results: BaseResult[]) {\n        // order of rank\n        const openTrackIds = new Set(\n          self.tracks.map(track => track.configuration.trackId),\n        )\n        for (const result of results) {\n          if (openTrackIds.has(result.trackId)) {\n            result.updateScore(result.getScore() + 1)\n          }\n        }\n        return results\n      },\n\n      /**\n       * #method\n       * modifies view menu action onClick to apply to all tracks of same type\n       */\n      rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]) {\n        viewMenuActions.forEach(action => {\n          // go to lowest level menu\n          if ('subMenu' in action) {\n            this.rewriteOnClicks(trackType, action.subMenu)\n          }\n          if ('onClick' in action) {\n            const holdOnClick = action.onClick\n            action.onClick = (...args: unknown[]) => {\n              self.tracks.forEach(track => {\n                if (track.type === trackType) {\n                  holdOnClick.apply(track, [track, ...args])\n                }\n              })\n            }\n          }\n        })\n      },\n      /**\n       * #getter\n       */\n      get trackTypeActions() {\n        const allActions = new Map<string, MenuItem[]>()\n        self.tracks.forEach(track => {\n          const trackInMap = allActions.get(track.type)\n          if (!trackInMap) {\n            const viewMenuActions = clone(track.viewMenuActions)\n            this.rewriteOnClicks(track.type, viewMenuActions)\n            allActions.set(track.type, viewMenuActions)\n          }\n        })\n\n        return allActions\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setShowTrackOutlines(arg: boolean) {\n        self.showTrackOutlines = arg\n      },\n      /**\n       * #action\n       */\n      setColorByCDS(flag: boolean) {\n        self.colorByCDS = flag\n      },\n      /**\n       * #action\n       */\n      setShowCytobands(flag: boolean) {\n        self.showCytobandsSetting = flag\n      },\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.volatileWidth = newWidth\n      },\n      /**\n       * #action\n       */\n      setError(error: unknown) {\n        self.volatileError = error\n      },\n      /**\n       * #action\n       */\n      setHideHeader(b: boolean) {\n        self.hideHeader = b\n      },\n      /**\n       * #action\n       */\n      setHideHeaderOverview(b: boolean) {\n        self.hideHeaderOverview = b\n      },\n      /**\n       * #action\n       */\n      setHideNoTracksActive(b: boolean) {\n        self.hideNoTracksActive = b\n      },\n      /**\n       * #action\n       */\n      setShowGridlines(b: boolean) {\n        self.showGridlines = b\n      },\n      /**\n       * #action\n       */\n      addToHighlights(highlight: HighlightType) {\n        self.highlight.push(highlight)\n      },\n      /**\n       * #action\n       */\n      setHighlight(highlight?: HighlightType[]) {\n        self.highlight = cast(highlight)\n      },\n      /**\n       * #action\n       */\n      removeHighlight(highlight: HighlightType) {\n        self.highlight.remove(highlight)\n      },\n      /**\n       * #action\n       */\n      scrollTo(offsetPx: number) {\n        const newOffsetPx = clamp(offsetPx, self.minOffset, self.maxOffset)\n        self.offsetPx = newOffsetPx\n        return newOffsetPx\n      },\n\n      /**\n       * #action\n       */\n      zoomTo(bpPerPx: number, offset = self.width / 2, centerAtOffset = false) {\n        const newBpPerPx = clamp(bpPerPx, self.minBpPerPx, self.maxBpPerPx)\n        if (newBpPerPx === self.bpPerPx) {\n          return newBpPerPx\n        }\n        const oldBpPerPx = self.bpPerPx\n\n        if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {\n          console.warn('zoomTo bpPerPx rounding error')\n          return oldBpPerPx\n        }\n        self.bpPerPx = newBpPerPx\n\n        // tweak the offset so that the center of the view remains at the same\n        // coordinate\n        this.scrollTo(\n          Math.round(\n            ((self.offsetPx + offset) * oldBpPerPx) / newBpPerPx -\n              (centerAtOffset ? self.width / 2 : offset),\n          ),\n        )\n        return newBpPerPx\n      },\n\n      /**\n       * #action\n       * sets offsets of rubberband, used in the get sequence dialog can call\n       * view.getSelectedRegions(view.leftOffset,view.rightOffset) to compute\n       * the selected regions from the offsets\n       */\n      setOffsets(left?: BpOffset, right?: BpOffset) {\n        self.leftOffset = left\n        self.rightOffset = right\n      },\n\n      /**\n       * #action\n       */\n      setSearchResults(\n        searchResults: BaseResult[],\n        searchQuery: string,\n        assemblyName?: string,\n      ) {\n        getSession(self).queueDialog(handleClose => [\n          SearchResultsDialog,\n          {\n            model: self as LinearGenomeViewModel,\n            searchResults,\n            searchQuery,\n            handleClose,\n            assemblyName,\n          },\n        ])\n      },\n\n      /**\n       * #action\n       */\n      setNewView(bpPerPx: number, offsetPx: number) {\n        this.zoomTo(bpPerPx)\n        this.scrollTo(offsetPx)\n      },\n\n      /**\n       * #action\n       */\n      horizontallyFlip() {\n        self.displayedRegions = cast(\n          [...self.displayedRegions]\n            .reverse()\n            .map(region => ({ ...region, reversed: !region.reversed })),\n        )\n        this.scrollTo(self.totalBp / self.bpPerPx - self.offsetPx - self.width)\n      },\n\n      /**\n       * #action\n       */\n      showTrack(\n        trackId: string,\n        initialSnapshot = {},\n        displayInitialSnapshot = {},\n      ) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        if (!conf) {\n          throw new Error(`Could not resolve identifier \"${trackId}\"`)\n        }\n        const trackType = pluginManager.getTrackType(conf?.type)\n        if (!trackType) {\n          throw new Error(`Unknown track type ${conf.type}`)\n        }\n        const viewType = pluginManager.getViewType(self.type)!\n        const supportedDisplays = new Set(\n          viewType.displayTypes.map(d => d.name),\n        )\n        const displayConf = conf.displays.find((d: AnyConfigurationModel) =>\n          supportedDisplays.has(d.type),\n        )\n        if (!displayConf) {\n          throw new Error(\n            `Could not find a compatible display for view type ${self.type}`,\n          )\n        }\n\n        const t = self.tracks.filter(t => t.configuration === conf)\n        if (t.length === 0) {\n          const track = trackType.stateModel.create({\n            ...initialSnapshot,\n            type: conf.type,\n            configuration: conf,\n            displays: [\n              {\n                type: displayConf.type,\n                configuration: displayConf,\n                ...displayInitialSnapshot,\n              },\n            ],\n          })\n          self.tracks.push(track)\n          return track\n        }\n        return t[0]\n      },\n      /**\n       * #action\n       */\n      hideTrack(trackId: string) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        const t = self.tracks.filter(t => t.configuration === conf)\n        transaction(() => {\n          t.forEach(t => self.tracks.remove(t))\n        })\n        return t.length\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      moveTrackDown(id: string) {\n        const idx = self.tracks.findIndex(v => v.id === id)\n        if (idx === -1) {\n          return\n        }\n\n        if (idx !== -1 && idx < self.tracks.length - 1) {\n          self.tracks.splice(idx, 2, self.tracks[idx + 1], self.tracks[idx])\n        }\n      },\n      /**\n       * #action\n       */\n      moveTrackUp(id: string) {\n        const idx = self.tracks.findIndex(track => track.id === id)\n        if (idx > 0) {\n          self.tracks.splice(idx - 1, 2, self.tracks[idx], self.tracks[idx - 1])\n        }\n      },\n      /**\n       * #action\n       */\n      moveTrackToTop(id: string) {\n        const idx = self.tracks.findIndex(track => track.id === id)\n        self.tracks = cast([\n          self.tracks[idx],\n          ...self.tracks.filter(track => track.id !== id),\n        ])\n      },\n      /**\n       * #action\n       */\n      moveTrackToBottom(id: string) {\n        const idx = self.tracks.findIndex(track => track.id === id)\n        self.tracks = cast([\n          ...self.tracks.filter(track => track.id !== id),\n          self.tracks[idx],\n        ])\n      },\n      /**\n       * #action\n       */\n      moveTrack(movingId: string, targetId: string) {\n        const oldIndex = self.tracks.findIndex(track => track.id === movingId)\n        if (oldIndex === -1) {\n          throw new Error(`Track ID ${movingId} not found`)\n        }\n        const newIndex = self.tracks.findIndex(track => track.id === targetId)\n        if (newIndex === -1) {\n          throw new Error(`Track ID ${targetId} not found`)\n        }\n\n        const tracks = self.tracks.filter((_, idx) => idx !== oldIndex)\n        tracks.splice(newIndex, 0, self.tracks[oldIndex])\n        self.tracks = cast(tracks)\n      },\n\n      /**\n       * #action\n       */\n      toggleTrack(trackId: string) {\n        // if we have any tracks with that configuration, turn them off\n        const hiddenCount = self.hideTrack(trackId)\n        // if none had that configuration, turn one on\n        if (!hiddenCount) {\n          self.showTrack(trackId)\n          return true\n        }\n        return false\n      },\n\n      /**\n       * #action\n       */\n      setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden') {\n        localStorage.setItem('lgv-trackLabels', setting)\n        self.trackLabels = setting\n      },\n\n      /**\n       * #action\n       */\n      setShowCenterLine(b: boolean) {\n        self.showCenterLine = b\n      },\n\n      /**\n       * #action\n       */\n      setDisplayedRegions(regions: Region[]) {\n        self.displayedRegions = cast(regions)\n        self.zoomTo(self.bpPerPx)\n      },\n\n      /**\n       * #action\n       */\n      activateTrackSelector() {\n        if (self.trackSelectorType === 'hierarchical') {\n          const session = getSession(self)\n          if (isSessionModelWithWidgets(session)) {\n            const selector = session.addWidget(\n              'HierarchicalTrackSelectorWidget',\n              'hierarchicalTrackSelector',\n              { view: self },\n            )\n            session.showWidget(selector)\n            return selector\n          }\n        }\n        throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n      },\n\n      /**\n       * #method\n       * Helper method for the fetchSequence.\n       * Retrieves the corresponding regions that were selected by the\n       * rubberband\n       *\n       * @param leftOffset - `object as {start, end, index, offset}`, offset = start\n       * of user drag\n       * @param rightOffset - `object as {start, end, index, offset}`,\n       * offset = end of user drag\n       * @returns array of Region[]\n       */\n      getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset) {\n        const snap = getSnapshot(self)\n        const simView = Base1DView.create({\n          ...snap,\n          interRegionPaddingWidth: self.interRegionPaddingWidth,\n        })\n\n        simView.setVolatileWidth(self.width)\n        simView.moveTo(leftOffset, rightOffset)\n\n        return simView.dynamicBlocks.contentBlocks.map(region => ({\n          ...region,\n          start: Math.floor(region.start),\n          end: Math.ceil(region.end),\n        }))\n      },\n\n      /**\n       * #action\n       * schedule something to be run after the next time displayedRegions is\n       * set\n       */\n      afterDisplayedRegionsSet(cb: () => void) {\n        self.afterDisplayedRegionsSetCallbacks.push(cb)\n      },\n\n      /**\n       * #action\n       */\n      horizontalScroll(distance: number) {\n        const oldOffsetPx = self.offsetPx\n        // newOffsetPx is the actual offset after the scroll is clamped\n        const newOffsetPx = self.scrollTo(self.offsetPx + distance)\n        return newOffsetPx - oldOffsetPx\n      },\n\n      /**\n       * #action\n       */\n      center() {\n        const centerBp = self.totalBp / 2\n        const centerPx = centerBp / self.bpPerPx\n        self.scrollTo(Math.round(centerPx - self.width / 2))\n      },\n\n      /**\n       * #action\n       */\n      showAllRegions() {\n        self.zoomTo(self.maxBpPerPx)\n        this.center()\n      },\n\n      /**\n       * #action\n       */\n      showAllRegionsInAssembly(assemblyName?: string) {\n        const session = getSession(self)\n        const { assemblyManager } = session\n        if (!assemblyName) {\n          const names = new Set(self.displayedRegions.map(r => r.assemblyName))\n          if (names.size > 1) {\n            session.notify(\n              `Can't perform operation with multiple assemblies currently`,\n            )\n            return\n          }\n          ;[assemblyName] = [...names]\n        }\n        const assembly = assemblyManager.get(assemblyName!)\n        if (assembly) {\n          const { regions } = assembly\n          if (regions) {\n            this.setDisplayedRegions(regions)\n            self.zoomTo(self.maxBpPerPx)\n            this.center()\n          }\n        }\n      },\n\n      /**\n       * #action\n       */\n      setDraggingTrackId(idx?: string) {\n        self.draggingTrackId = idx\n      },\n\n      /**\n       * #action\n       */\n      setScaleFactor(factor: number) {\n        self.scaleFactor = factor\n      },\n\n      /**\n       * #action\n       * this \"clears the view\" and makes the view return to the import form\n       */\n      clearView() {\n        this.setDisplayedRegions([])\n        self.tracks.clear()\n        // it is necessary to run these after setting displayed regions empty\n        // or else model.offsetPx gets set to Infinity and breaks\n        // mobx-state-tree snapshot\n        self.scrollTo(0)\n        self.zoomTo(10)\n      },\n\n      /**\n       * #method\n       * creates an svg export and save using FileSaver\n       */\n      async exportSvg(opts: ExportSvgOptions = {}) {\n        const { renderToSvg } = await import(\n          './svgcomponents/SVGLinearGenomeView'\n        )\n        const html = await renderToSvg(self as LinearGenomeViewModel, opts)\n        const blob = new Blob([html], { type: 'image/svg+xml' })\n        saveAs(blob, opts.filename || 'image.svg')\n      },\n    }))\n    .actions(self => {\n      let cancelLastAnimation = () => {}\n\n      /**\n       * #action\n       * perform animated slide\n       */\n      function slide(viewWidths: number) {\n        const [animate, cancelAnimation] = springAnimate(\n          self.offsetPx,\n          self.offsetPx + self.width * viewWidths,\n          self.scrollTo,\n          undefined,\n          undefined,\n          200,\n        )\n        cancelLastAnimation()\n        cancelLastAnimation = cancelAnimation!\n        animate!()\n      }\n\n      return { slide }\n    })\n    .actions(self => {\n      let cancelLastAnimation = () => {}\n\n      /**\n       * #action\n       * perform animated zoom\n       */\n      function zoom(targetBpPerPx: number) {\n        self.zoomTo(self.bpPerPx)\n        if (\n          // already zoomed all the way in\n          (targetBpPerPx < self.bpPerPx && self.bpPerPx === self.minBpPerPx) ||\n          // already zoomed all the way out\n          (targetBpPerPx > self.bpPerPx && self.bpPerPx === self.maxBpPerPx)\n        ) {\n          return\n        }\n        const factor = self.bpPerPx / targetBpPerPx\n        const [animate, cancelAnimation] = springAnimate(\n          1,\n          factor,\n          self.setScaleFactor,\n          () => {\n            self.zoomTo(targetBpPerPx)\n            self.setScaleFactor(1)\n          },\n        )\n        cancelLastAnimation()\n        cancelLastAnimation = cancelAnimation!\n        animate!()\n      }\n\n      return { zoom }\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get canShowCytobands() {\n        return self.displayedRegions.length === 1 && this.anyCytobandsExist\n      },\n      /**\n       * #getter\n       */\n      get showCytobands() {\n        return this.canShowCytobands && self.showCytobandsSetting\n      },\n      /**\n       * #getter\n       */\n      get anyCytobandsExist() {\n        const { assemblyManager } = getSession(self)\n        return self.assemblyNames.some(\n          a => assemblyManager.get(a)?.cytobands?.length,\n        )\n      },\n      /**\n       * #getter\n       * the cytoband is displayed to the right of the chromosome name, and\n       * that offset is calculated manually with this method\n       */\n      get cytobandOffset() {\n        return this.showCytobands\n          ? measureText(self.displayedRegions[0]?.refName || '', 12) + 15\n          : 0\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       * return the view menu items\n       */\n      menuItems(): MenuItem[] {\n        const { canShowCytobands, showCytobands } = self\n        const session = getSession(self)\n        const menuItems: MenuItem[] = [\n          {\n            label: 'Return to import form',\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ReturnToImportFormDialog,\n                { model: self, handleClose },\n              ])\n            },\n            icon: FolderOpenIcon,\n          },\n          ...(isSessionWithAddTracks(session)\n            ? [\n                {\n                  label: 'Sequence search',\n                  icon: SearchIcon,\n                  onClick: () => {\n                    getSession(self).queueDialog(handleClose => [\n                      SequenceSearchDialog,\n                      { model: self, handleClose },\n                    ])\n                  },\n                },\n              ]\n            : []),\n          {\n            label: 'Export SVG',\n            icon: PhotoCameraIcon,\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ExportSvgDialog,\n                { model: self, handleClose },\n              ])\n            },\n          },\n          {\n            label: 'Open track selector',\n            onClick: self.activateTrackSelector,\n            icon: TrackSelectorIcon,\n          },\n          {\n            label: 'Horizontally flip',\n            icon: SyncAltIcon,\n            onClick: self.horizontallyFlip,\n          },\n          {\n            label: 'Color by CDS',\n            type: 'checkbox',\n            checked: self.colorByCDS,\n            icon: PaletteIcon,\n            onClick: () => {\n              self.setColorByCDS(!self.colorByCDS)\n            },\n          },\n          {\n            label: 'Show...',\n            icon: VisibilityIcon,\n            subMenu: [\n              {\n                label: 'Show all regions in assembly',\n                onClick: self.showAllRegionsInAssembly,\n              },\n              {\n                label: 'Show center line',\n                type: 'checkbox',\n                checked: self.showCenterLine,\n                onClick: () => {\n                  self.setShowCenterLine(!self.showCenterLine)\n                },\n              },\n              {\n                label: 'Show header',\n                type: 'checkbox',\n                checked: !self.hideHeader,\n                onClick: () => {\n                  self.setHideHeader(!self.hideHeader)\n                },\n              },\n\n              {\n                label: 'Show track outlines',\n                type: 'checkbox',\n                checked: self.showTrackOutlines,\n                onClick: () => {\n                  self.setShowTrackOutlines(!self.showTrackOutlines)\n                },\n              },\n              {\n                label: 'Show header overview',\n                type: 'checkbox',\n                checked: !self.hideHeaderOverview,\n                onClick: () => {\n                  self.setHideHeaderOverview(!self.hideHeaderOverview)\n                },\n                disabled: self.hideHeader,\n              },\n              {\n                label: 'Show no tracks active button',\n                type: 'checkbox',\n                checked: !self.hideNoTracksActive,\n                onClick: () => {\n                  self.setHideNoTracksActive(!self.hideNoTracksActive)\n                },\n              },\n              {\n                label: 'Show guidelines',\n                type: 'checkbox',\n                checked: self.showGridlines,\n                onClick: () => {\n                  self.setShowGridlines(!self.showGridlines)\n                },\n              },\n              ...(canShowCytobands\n                ? [\n                    {\n                      label: 'Show ideogram',\n                      type: 'checkbox' as const,\n                      checked: self.showCytobands,\n                      onClick: () => {\n                        self.setShowCytobands(!showCytobands)\n                      },\n                    },\n                  ]\n                : []),\n            ],\n          },\n          {\n            label: 'Track labels',\n            icon: LabelIcon,\n            subMenu: [\n              {\n                label: 'Overlapping',\n                icon: VisibilityIcon,\n                type: 'radio',\n                checked: self.trackLabelsSetting === 'overlapping',\n                onClick: () => {\n                  self.setTrackLabels('overlapping')\n                },\n              },\n              {\n                label: 'Offset',\n                icon: VisibilityIcon,\n                type: 'radio',\n                checked: self.trackLabelsSetting === 'offset',\n                onClick: () => {\n                  self.setTrackLabels('offset')\n                },\n              },\n              {\n                label: 'Hidden',\n                icon: VisibilityIcon,\n                type: 'radio',\n                checked: self.trackLabelsSetting === 'hidden',\n                onClick: () => {\n                  self.setTrackLabels('hidden')\n                },\n              },\n            ],\n          },\n        ]\n\n        // add track's view level menu options\n        for (const [key, value] of self.trackTypeActions.entries()) {\n          if (value.length) {\n            menuItems.push(\n              { type: 'divider' },\n              { type: 'subHeader', label: key },\n            )\n            value.forEach(action => menuItems.push(action))\n          }\n        }\n\n        return menuItems\n      },\n    }))\n    .views(self => {\n      let currentlyCalculatedStaticBlocks: BlockSet | undefined\n      let stringifiedCurrentlyCalculatedStaticBlocks = ''\n      return {\n        /**\n         * #getter\n         * static blocks are an important concept jbrowse uses to avoid\n         * re-rendering when you scroll to the side. when you horizontally\n         * scroll to the right, old blocks to the left may be removed, and new\n         * blocks may be instantiated on the right. tracks may use the static\n         * blocks to render their data for the region represented by the block\n         */\n        get staticBlocks() {\n          const ret = calculateStaticBlocks(self)\n          const sret = JSON.stringify(ret)\n          if (stringifiedCurrentlyCalculatedStaticBlocks !== sret) {\n            currentlyCalculatedStaticBlocks = ret\n            stringifiedCurrentlyCalculatedStaticBlocks = sret\n          }\n          return currentlyCalculatedStaticBlocks!\n        },\n        /**\n         * #getter\n         * dynamic blocks represent the exact coordinates of the currently\n         * visible genome regions on the screen. they are similar to static\n         * blocks, but static blocks can go offscreen while dynamic blocks\n         * represent exactly what is on screen\n         */\n        get dynamicBlocks() {\n          return calculateDynamicBlocks(self)\n        },\n        /**\n         * #getter\n         * rounded dynamic blocks are dynamic blocks without fractions of bp\n         */\n        get roundedDynamicBlocks() {\n          return this.dynamicBlocks.contentBlocks.map(\n            block =>\n              ({\n                ...block,\n                start: Math.floor(block.start),\n                end: Math.ceil(block.end),\n              }) as BaseBlock,\n          )\n        },\n\n        /**\n         * #getter\n         * a single \"combo-locstring\" representing all the regions visible on\n         * the screen\n         */\n        get visibleLocStrings() {\n          return calculateVisibleLocStrings(this.dynamicBlocks.contentBlocks)\n        },\n\n        /**\n         * #getter\n         * same as visibleLocStrings, but only updated every 300ms\n         */\n        get coarseVisibleLocStrings() {\n          return calculateVisibleLocStrings(self.coarseDynamicBlocks)\n        },\n      }\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setCoarseDynamicBlocks(blocks: BlockSet) {\n        self.coarseDynamicBlocks = blocks.contentBlocks\n        self.coarseTotalBp = blocks.totalBp\n      },\n\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(\n            () => {\n              if (self.initialized) {\n                this.setCoarseDynamicBlocks(self.dynamicBlocks)\n              }\n            },\n            { delay: 150 },\n          ),\n        )\n\n        addDisposer(\n          self,\n          autorun(() => {\n            const s = (s: unknown) => JSON.stringify(s)\n            const { showCytobandsSetting, showCenterLine, colorByCDS } = self\n            localStorageSetItem('lgv-showCytobands', s(showCytobandsSetting))\n            localStorageSetItem('lgv-showCenterLine', s(showCenterLine))\n            localStorageSetItem('lgv-colorByCDS', s(colorByCDS))\n          }),\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       * offset is the base-pair-offset in the displayed region, index is the\n       * index of the displayed region in the linear genome view\n       *\n       * @param start - object as `{start, end, offset, index}`\n       * @param end - object as `{start, end, offset, index}`\n       */\n      moveTo(start?: BpOffset, end?: BpOffset) {\n        moveTo(self, start, end)\n      },\n\n      /**\n       * #action\n       * Navigate to the given locstring, will change displayed regions if\n       * needed, and wait for assemblies to be initialized\n       *\n       * @param input - e.g. \"chr1:1-100\", \"chr1:1-100 chr2:1-100\", \"chr 1 100\"\n       * @param optAssemblyName - (optional) the assembly name to use when\n       * navigating to the locstring\n       */\n      async navToLocString(input: string, optAssemblyName?: string) {\n        const { assemblyNames } = self\n        const { assemblyManager } = getSession(self)\n        const assemblyName = optAssemblyName || assemblyNames[0]!\n        if (assemblyName) {\n          await assemblyManager.waitForAssembly(assemblyName)\n        }\n\n        return this.navToLocations(\n          parseLocStrings(input, assemblyName, (ref, asm) =>\n            assemblyManager.isValidRefName(ref, asm),\n          ),\n          assemblyName,\n        )\n      },\n\n      /**\n       * #action\n       * Performs a text index search, and navigates to it immediately if a\n       * single result is returned. Will pop up a search dialog if multiple\n       * results are returned\n       */\n      async navToSearchString({\n        input,\n        assembly,\n      }: {\n        input: string\n        assembly: Assembly\n      }) {\n        await handleSelectedRegion({\n          input,\n          assembly,\n          model: self as LinearGenomeViewModel,\n        })\n      },\n\n      /**\n       * #action\n       * Similar to `navToLocString`, but accepts parsed location objects\n       * instead of strings. Will try to perform `setDisplayedRegions` if\n       * changing regions\n       */\n      async navToLocations(\n        parsedLocStrings: ParsedLocString[],\n        assemblyName?: string,\n      ) {\n        const { assemblyManager } = getSession(self)\n        await when(() => self.volatileWidth !== undefined)\n\n        const locations = await generateLocations(\n          parsedLocStrings,\n          assemblyManager,\n          assemblyName,\n        )\n\n        if (locations.length === 1) {\n          const loc = locations[0]!\n          const { reversed, parentRegion, start, end } = loc\n          self.setDisplayedRegions([{ reversed, ...parentRegion }])\n\n          this.navTo({\n            ...loc,\n            start: clamp(start ?? 0, 0, parentRegion.end),\n            end: clamp(end ?? parentRegion.end, 0, parentRegion.end),\n          })\n        } else {\n          self.setDisplayedRegions(\n            // @ts-expect-error\n            locations.map(r => (r.start === undefined ? r.parentRegion : r)),\n          )\n          self.showAllRegions()\n        }\n      },\n\n      /**\n       * #action\n       * Navigate to a location based on its refName and optionally start, end,\n       * and assemblyName. Will not try to change displayed regions, use\n       * `navToLocations` instead. Only navigates to a location if it is\n       * entirely within a displayedRegion. Navigates to the first matching\n       * location encountered.\n       *\n       * Throws an error if navigation was unsuccessful\n       *\n       * @param query - a proposed location to navigate to\n       */\n      navTo(query: NavLocation) {\n        this.navToMultiple([query])\n      },\n\n      /**\n       * #action\n       * Navigate to a location based on its refName and optionally start, end,\n       * and assemblyName. Will not try to change displayed regions, use\n       * navToLocations instead. Only navigates to a location if it is entirely\n       * within a displayedRegion. Navigates to the first matching location\n       * encountered.\n       *\n       * Throws an error if navigation was unsuccessful\n       *\n       * @param locations - proposed location to navigate to\n       */\n      navToMultiple(locations: NavLocation[]) {\n        if (\n          locations.some(\n            l =>\n              l.start !== undefined && l.end !== undefined && l.start > l.end,\n          )\n        ) {\n          throw new Error('found start greater than end')\n        }\n        const f1 = locations.at(0)\n        const f2 = locations.at(-1)\n        if (!f1 || !f2) {\n          return\n        }\n        const a = self.assemblyNames[0]!\n        const { assemblyManager } = getSession(self)\n        const assembly1 = assemblyManager.get(f1.assemblyName || a)\n        const assembly2 = assemblyManager.get(f2.assemblyName || a)\n        const ref1 = assembly1?.getCanonicalRefName(f1.refName) || f1.refName\n        const ref2 = assembly2?.getCanonicalRefName(f2.refName) || f2.refName\n        const r1 = self.displayedRegions.find(r => r.refName === ref1)\n        const r2 = findLast(self.displayedRegions, r => r.refName === ref2)\n        if (!r1) {\n          throw new Error(`could not find a region with refName \"${ref1}\"`)\n        }\n        if (!r2) {\n          throw new Error(`could not find a region with refName \"${ref2}\"`)\n        }\n\n        const s1 = f1.start === undefined ? r1.start : f1.start\n        const e1 = f1.end === undefined ? r1.end : f1.end\n        const s2 = f2.start === undefined ? r2.start : f2.start\n        const e2 = f2.end === undefined ? r2.end : f2.end\n\n        const index = self.displayedRegions.findIndex(\n          r =>\n            ref1 === r.refName &&\n            s1 >= r.start &&\n            s1 <= r.end &&\n            e1 <= r.end &&\n            e1 >= r.start,\n        )\n\n        const index2 = self.displayedRegions.findIndex(\n          r =>\n            ref2 === r.refName &&\n            s2 >= r.start &&\n            s2 <= r.end &&\n            e2 <= r.end &&\n            e2 >= r.start,\n        )\n\n        if (index === -1 || index2 === -1) {\n          throw new Error(\n            `could not find a region that contained \"${locations.map(l =>\n              assembleLocString(l),\n            )}\"`,\n          )\n        }\n\n        const sd = self.displayedRegions[index]!\n        const ed = self.displayedRegions[index2]!\n\n        this.moveTo(\n          {\n            index,\n            offset: sd.reversed ? sd.end - e1 : s1 - sd.start,\n          },\n          {\n            index: index2,\n            offset: ed.reversed ? ed.end - s2 : e2 - ed.start,\n          },\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      rubberBandMenuItems(): MenuItem[] {\n        return [\n          {\n            label: 'Zoom to region',\n            icon: ZoomInIcon,\n            onClick: () => {\n              self.moveTo(self.leftOffset, self.rightOffset)\n            },\n          },\n          {\n            label: 'Get sequence',\n            icon: MenuOpenIcon,\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                GetSequenceDialog,\n\n                { model: self as any, handleClose },\n              ])\n            },\n          },\n        ]\n      },\n\n      /**\n       * #method\n       */\n      bpToPx({\n        refName,\n        coord,\n        regionNumber,\n      }: {\n        refName: string\n        coord: number\n        regionNumber?: number\n      }) {\n        return bpToPx({ refName, coord, regionNumber, self })\n      },\n\n      /**\n       * #method\n       * scrolls the view to center on the given bp. if that is not in any of\n       * the displayed regions, does nothing\n       *\n       * @param coord - basepair at which you want to center the view\n       * @param refName - refName of the displayedRegion you are centering at\n       * @param regionNumber - index of the displayedRegion\n       */\n      centerAt(coord: number, refName: string, regionNumber?: number) {\n        const centerPx = this.bpToPx({\n          refName,\n          coord,\n          regionNumber,\n        })\n        if (centerPx !== undefined) {\n          self.scrollTo(Math.round(centerPx.offsetPx - self.width / 2))\n        }\n      },\n\n      /**\n       * #method\n       */\n      pxToBp(px: number) {\n        return pxToBp(self, px)\n      },\n\n      /**\n       * #getter\n       */\n      get centerLineInfo() {\n        return self.displayedRegions.length > 0\n          ? this.pxToBp(self.width / 2)\n          : undefined\n      },\n    }))\n    .actions(self => ({\n      afterCreate() {\n        function handler(e: KeyboardEvent) {\n          const session = getSession(self)\n          if (session.focusedViewId === self.id && (e.ctrlKey || e.metaKey)) {\n            if (e.code === 'ArrowLeft') {\n              e.preventDefault()\n              self.slide(-0.9)\n            } else if (e.code === 'ArrowRight') {\n              e.preventDefault()\n              self.slide(0.9)\n            } else if (e.code === 'ArrowUp' && self.scaleFactor === 1) {\n              e.preventDefault()\n              self.zoom(self.bpPerPx / 2)\n            } else if (e.code === 'ArrowDown' && self.scaleFactor === 1) {\n              e.preventDefault()\n              self.zoom(self.bpPerPx * 2)\n            }\n          }\n        }\n        document.addEventListener('keydown', handler)\n        addDisposer(self, () => {\n          document.removeEventListener('keydown', handler)\n        })\n      },\n    }))\n    .preProcessSnapshot(snap => {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (!snap) {\n        return snap\n      }\n      const { highlight, ...rest } = snap\n      return {\n        highlight:\n          Array.isArray(highlight) || highlight === undefined\n            ? highlight\n            : [highlight],\n        ...rest,\n      }\n    })\n}\n\nexport type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>\n\nexport {\n  default as ReactComponent,\n  default as LinearGenomeView,\n} from './components/LinearGenomeView'\n\nexport { default as RefNameAutocomplete } from './components/RefNameAutocomplete'\nexport { default as SearchBox } from './components/SearchBox'\nexport { default as ZoomControls } from './components/ZoomControls'\n\nexport { renderToSvg } from './svgcomponents/SVGLinearGenomeView'\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { baseLinearDisplayConfigSchema } from '../BaseLinearDisplay'\n\n/**\n * #config LinearBasicDisplay\n * #category display\n */\nfunction configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearBasicDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: pluginManager.pluggableConfigSchemaType('renderer'),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaFactory\n","import { lazy } from 'react'\nimport {\n  getConf,\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { types, getEnv, Instance, cast } from 'mobx-state-tree'\n\n// icons\nimport VisibilityIcon from '@mui/icons-material/Visibility'\n\n// locals\nimport { BaseLinearDisplay } from '../BaseLinearDisplay'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\n\nconst SetMaxHeightDialog = lazy(() => import('./components/SetMaxHeightDialog'))\nconst AddFiltersDialog = lazy(() => import('./components/AddFiltersDialog'))\n\n/**\n * #stateModel LinearBasicDisplay\n * #category display\n * used by `FeatureTrack`, has simple settings like \"show/hide feature labels\",\n * etc.\n *\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearBasicDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearBasicDisplay'),\n        /**\n         * #property\n         */\n        trackShowLabels: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        trackShowDescriptions: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        trackDisplayMode: types.maybe(types.string),\n        /**\n         * #property\n         */\n        trackMaxHeight: types.maybe(types.number),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        jexlFilters: types.maybe(types.array(types.string)),\n      }),\n    )\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get activeFilters() {\n        // config jexlFilters are deferred evaluated so they are prepended with\n        // jexl at runtime rather than being stored with jexl in the config\n        return (\n          self.jexlFilters ??\n          getConf(self, 'jexlFilters').map((r: string) => `jexl:${r}`)\n        )\n      },\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        return getConf(self, ['renderer', 'type'])\n      },\n\n      /**\n       * #getter\n       */\n      get showLabels() {\n        return self.trackShowLabels ?? getConf(self, ['renderer', 'showLabels'])\n      },\n\n      /**\n       * #getter\n       */\n      get showDescriptions() {\n        return (\n          self.trackShowDescriptions ??\n          getConf(self, ['renderer', 'showDescriptions'])\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get maxHeight() {\n        return self.trackMaxHeight ?? getConf(self, ['renderer', 'maxHeight'])\n      },\n\n      /**\n       * #getter\n       */\n      get displayMode() {\n        return (\n          self.trackDisplayMode ?? getConf(self, ['renderer', 'displayMode'])\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rendererConfig() {\n        const configBlob = getConf(self, ['renderer']) || {}\n        const config = configBlob as Omit<typeof configBlob, symbol>\n\n        return self.rendererType.configSchema.create(\n          {\n            ...config,\n            showLabels: self.showLabels,\n            showDescriptions: self.showDescriptions,\n            displayMode: self.displayMode,\n            maxHeight: self.maxHeight,\n          },\n          getEnv(self),\n        )\n      },\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setJexlFilters(f?: string[]) {\n        self.jexlFilters = cast(f)\n      },\n      /**\n       * #action\n       */\n      toggleShowLabels() {\n        self.trackShowLabels = !self.showLabels\n      },\n      /**\n       * #action\n       */\n      toggleShowDescriptions() {\n        self.trackShowDescriptions = !self.showDescriptions\n      },\n      /**\n       * #action\n       */\n      setDisplayMode(val: string) {\n        self.trackDisplayMode = val\n      },\n      /**\n       * #action\n       */\n      setMaxHeight(val?: number) {\n        self.trackMaxHeight = val\n      },\n    }))\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderProps: superRenderProps,\n      } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          const superProps = superRenderProps()\n          return {\n            ...(superProps as Omit<typeof superProps, symbol>),\n            config: self.rendererConfig,\n            filters: new SerializableFilterChain({\n              filters: self.activeFilters,\n            }),\n          }\n        },\n\n        /**\n         * #method\n         */\n        trackMenuItems(): MenuItem[] {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Show labels',\n              icon: VisibilityIcon,\n              type: 'checkbox',\n              checked: self.showLabels,\n              onClick: () => {\n                self.toggleShowLabels()\n              },\n            },\n            {\n              label: 'Show descriptions',\n              icon: VisibilityIcon,\n              type: 'checkbox',\n              checked: self.showDescriptions,\n              onClick: () => {\n                self.toggleShowDescriptions()\n              },\n            },\n            {\n              label: 'Display mode',\n              icon: VisibilityIcon,\n              subMenu: [\n                'compact',\n                'reducedRepresentation',\n                'normal',\n                'collapse',\n              ].map(val => ({\n                label: val,\n                onClick: () => {\n                  self.setDisplayMode(val)\n                },\n              })),\n            },\n            {\n              label: 'Set max height',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  SetMaxHeightDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n            {\n              label: 'Edit filters',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  AddFiltersDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n      }\n    })\n}\n\nexport type FeatureTrackStateModel = ReturnType<typeof stateModelFactory>\nexport type FeatureTrackModel = Instance<FeatureTrackStateModel>\n\nexport default stateModelFactory\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n// icons\nimport LineStyleIcon from '@mui/icons-material/LineStyle'\n\n// locals\nimport {\n  BaseLinearDisplay,\n  BaseLinearDisplayComponent,\n  baseLinearDisplayConfigSchema,\n} from './BaseLinearDisplay'\nimport LinearBareDisplayF from './LinearBareDisplay'\nimport LinearGenomeViewF, {\n  SearchBox,\n  ZoomControls,\n  LinearGenomeView,\n} from './LinearGenomeView'\n\nimport LinearBasicDisplayF from './LinearBasicDisplay'\nimport FeatureTrackF from './FeatureTrack'\nimport BasicTrackF from './BasicTrack'\nimport LaunchLinearGenomeViewF from './LaunchLinearGenomeView'\n\nexport default class LinearGenomeViewPlugin extends Plugin {\n  name = 'LinearGenomeViewPlugin'\n\n  exports = {\n    BaseLinearDisplayComponent,\n    BaseLinearDisplay,\n    baseLinearDisplayConfigSchema,\n    SearchBox,\n    ZoomControls,\n    LinearGenomeView,\n  }\n\n  /**\n   * #config LinearGenomeViewConfigSchema\n   */\n  configurationSchema = ConfigurationSchema('LinearGenomeViewConfigSchema', {\n    /**\n     * #slot configuration.LinearGenomeViewPlugin.trackLabels\n     */\n    trackLabels: {\n      type: 'string',\n      defaultValue: 'overlapping',\n      model: types.enumeration('trackLabelOptions', [\n        'offset',\n        'overlapping',\n        'hidden',\n      ]),\n    },\n  })\n\n  install(pluginManager: PluginManager) {\n    FeatureTrackF(pluginManager)\n    BasicTrackF(pluginManager)\n    LinearBasicDisplayF(pluginManager)\n    LinearGenomeViewF(pluginManager)\n    LinearBareDisplayF(pluginManager)\n    LaunchLinearGenomeViewF(pluginManager)\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToSubMenu(['Add'], {\n        label: 'Linear genome view',\n        icon: LineStyleIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('LinearGenomeView', {})\n        },\n      })\n    }\n  }\n}\n\nexport type {\n  ExportSvgDisplayOptions,\n  BaseLinearDisplayModel,\n  BlockModel,\n} from './BaseLinearDisplay'\n\nexport { configSchemaFactory as linearBareDisplayConfigSchemaFactory } from './LinearBareDisplay'\nexport {\n  baseLinearDisplayConfigSchema,\n  BaseLinearDisplay,\n  BlockMsg,\n  BaseLinearDisplayComponent,\n  TrackHeightMixin,\n  FeatureDensityMixin,\n  TooLargeMessage,\n} from './BaseLinearDisplay'\nexport {\n  type LinearGenomeViewModel,\n  type LinearGenomeViewStateModel,\n  RefNameAutocomplete,\n  SearchBox,\n} from './LinearGenomeView'\nexport {\n  renderToSvg,\n  SVGTracks,\n  SVGRuler,\n} from './LinearGenomeView/svgcomponents/SVGLinearGenomeView'\nexport { totalHeight } from './LinearGenomeView/svgcomponents/util'\nexport {\n  configSchema as linearBasicDisplayConfigSchemaFactory,\n  modelFactory as linearBasicDisplayModelFactory,\n} from './LinearBasicDisplay'\n","import {\n  createBaseTrackModel,\n  TrackType,\n} from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaF from './configSchema'\n\nexport default function FeatureTrackF(pm: PluginManager) {\n  pm.addTrackType(() => {\n    const configSchema = configSchemaF(pm)\n    return new TrackType({\n      name: 'FeatureTrack',\n      displayName: 'Feature track',\n      configSchema,\n      stateModel: createBaseTrackModel(pm, 'FeatureTrack', configSchema),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config FeatureTrack\n * #category track\n * used for basic gene and feature tracks, generally used with LinearBasicDisplay\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'FeatureTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n      /**\n       * #identifier\n       */\n      explicitIdentifier: 'trackId',\n    },\n  )\n\nexport default configSchema\n","import {\n  createBaseTrackModel,\n  TrackType,\n} from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaF from './configSchema'\n\nexport default function BasicTrackF(pm: PluginManager) {\n  pm.addTrackType(() => {\n    const configSchema = configSchemaF(pm)\n\n    return new TrackType({\n      name: 'BasicTrack',\n      configSchema,\n      stateModel: createBaseTrackModel(pm, 'BasicTrack', configSchema),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config BasicTrack\n * #category track\n * synonym for FeatureTrack\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'BasicTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n      explicitIdentifier: 'trackId',\n    },\n  )\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport { BaseLinearDisplayComponent } from '../BaseLinearDisplay'\n\n// locals\nimport configSchema from './configSchema'\nimport modelFactory from './model'\n\nexport default function LinearBasicDisplay(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const config = configSchema(pluginManager)\n    return new DisplayType({\n      name: 'LinearBasicDisplay',\n      displayName: 'Basic feature display',\n      configSchema: config,\n      stateModel: modelFactory(config),\n      trackType: 'FeatureTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n\nexport { default as modelFactory } from './model'\nexport { default as configSchema } from './configSchema'\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\nimport { stateModelFactory } from './model'\n\nexport default function LinearGenomeViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new ViewType({\n      name: 'LinearGenomeView',\n      displayName: 'Linear genome view',\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/LinearGenomeView')),\n    })\n  })\n}\n\nexport * from './model'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { DisplayType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { configSchemaFactory } from './configSchema'\nimport { stateModelFactory } from './model'\nimport { BaseLinearDisplayComponent } from '../BaseLinearDisplay/'\n\nexport default function LinearBareDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearBareDisplay',\n      configSchema,\n      displayName: 'Bare feature display',\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'BasicTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n\nexport { configSchemaFactory } from './configSchema'\nexport { stateModelFactory } from './model'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, when, parseLocString } from '@jbrowse/core/util'\n// locals\nimport { LinearGenomeViewModel } from '../LinearGenomeView'\nimport { handleSelectedRegion } from '../searchUtils'\n\ntype LGV = LinearGenomeViewModel\n\nexport default function LaunchLinearGenomeViewF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-LinearGenomeView',\n    // @ts-expect-error\n    async ({\n      session,\n      assembly,\n      loc,\n      tracks = [],\n      tracklist,\n      nav,\n      highlight,\n    }: {\n      session: AbstractSessionModel\n      assembly?: string\n      loc: string\n      tracks?: string[]\n      tracklist?: boolean\n      nav?: boolean\n      highlight?: string[]\n    }) => {\n      try {\n        const { assemblyManager } = session\n\n        const { isValidRefName } = assemblyManager\n\n        const view = session.addView('LinearGenomeView', {}) as LGV\n\n        await when(() => !!view.volatileWidth)\n\n        if (!assembly) {\n          throw new Error(\n            'No assembly provided when launching linear genome view',\n          )\n        }\n\n        const asm = await assemblyManager.waitForAssembly(assembly)\n        if (!asm) {\n          throw new Error(\n            `Assembly \"${assembly}\" not found when launching linear genome view`,\n          )\n        }\n\n        if (tracklist) {\n          view.activateTrackSelector()\n        }\n        if (nav !== undefined) {\n          view.setHideHeader(!nav)\n        }\n        if (highlight !== undefined) {\n          highlight.forEach(async h => {\n            const p = parseLocString(h, refName =>\n              isValidRefName(refName, assembly),\n            )\n            const { start, end } = p\n            if (start !== undefined && end !== undefined) {\n              view.addToHighlights({\n                ...p,\n                start,\n                end,\n                assemblyName: assembly,\n              })\n            }\n          })\n        }\n\n        await handleSelectedRegion({ input: loc, model: view, assembly: asm })\n\n        const idsNotFound = [] as string[]\n        tracks.forEach(track => {\n          tryTrack(view, track, idsNotFound)\n        })\n        if (idsNotFound.length) {\n          throw new Error(\n            `Could not resolve identifiers: ${idsNotFound.join(',')}`,\n          )\n        }\n      } catch (e) {\n        session.notifyError(`${e}`, e)\n        throw e\n      }\n    },\n  )\n}\n\nfunction tryTrack(\n  model: {\n    showTrack: (arg: string) => void\n  },\n  trackId: string,\n  idsNotFound: string[],\n) {\n  try {\n    model.showTrack(trackId)\n  } catch (e) {\n    if (/Could not resolve identifier/.exec(`${e}`)) {\n      idsNotFound.push(trackId)\n    } else {\n      throw e\n    }\n  }\n}\n","import { getSession } from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { SearchScope } from '@jbrowse/core/TextSearch/TextSearchManager'\nimport { dedupe, TextSearchManager } from '@jbrowse/core/util'\n\n// locals\nimport { LinearGenomeViewModel } from './LinearGenomeView'\n\nexport async function navToOption({\n  option,\n  model,\n  assemblyName,\n}: {\n  model: LinearGenomeViewModel\n  option: BaseResult\n  assemblyName: string\n}) {\n  const location = option.getLocation()\n  const trackId = option.getTrackId()\n  if (location) {\n    await model.navToLocString(location, assemblyName)\n    if (trackId) {\n      model.showTrack(trackId)\n    }\n  }\n}\n\n// gets a string as input, or use stored option results from previous query,\n// then re-query and\n// 1) if it has multiple results: pop a dialog\n// 2) if it's a single result navigate to it\n// 3) else assume it's a locstring and navigate to it\nexport async function handleSelectedRegion({\n  input,\n  model,\n  assembly,\n}: {\n  input: string\n  model: LinearGenomeViewModel\n  assembly: Assembly\n}) {\n  const allRefs = assembly.allRefNamesWithLowerCase || []\n  const assemblyName = assembly.name\n  if (input.split(' ').every(entry => checkRef(entry, allRefs))) {\n    await model.navToLocString(input, assembly.name)\n  } else {\n    const searchScope = model.searchScope(assemblyName)\n    const { textSearchManager } = getSession(model)\n    const results = await fetchResults({\n      queryString: input,\n      searchType: 'exact',\n      searchScope,\n      rankSearchResults: model.rankSearchResults,\n      textSearchManager,\n      assembly,\n    })\n\n    if (results.length > 1) {\n      model.setSearchResults(results, input.toLowerCase(), assemblyName)\n    } else if (results.length === 1) {\n      await navToOption({\n        option: results[0]!,\n        model,\n        assemblyName,\n      })\n    } else {\n      await model.navToLocString(input, assemblyName)\n    }\n  }\n}\n\nexport function checkRef(str: string, allRefs: string[]) {\n  const [ref, rest] = splitLast(str, ':')\n  return (\n    allRefs.includes(str) ||\n    (allRefs.includes(ref) && !Number.isNaN(Number.parseInt(rest, 10)))\n  )\n}\n\nexport async function fetchResults({\n  queryString,\n  searchType,\n  searchScope,\n  rankSearchResults,\n  textSearchManager,\n  assembly,\n}: {\n  queryString: string\n  searchScope: SearchScope\n  rankSearchResults: (results: BaseResult[]) => BaseResult[]\n  searchType?: SearchType\n  textSearchManager?: TextSearchManager\n  assembly?: Assembly\n}) {\n  if (!textSearchManager) {\n    console.warn('No text search manager')\n  }\n\n  const textSearchResults = await textSearchManager?.search(\n    {\n      queryString,\n      searchType,\n    },\n    searchScope,\n    rankSearchResults,\n  )\n\n  const refNameResults = assembly?.allRefNames\n    ?.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase()))\n    .slice(0, 10)\n    .map(r => new BaseResult({ label: r }))\n\n  return dedupe(\n    [...(refNameResults || []), ...(textSearchResults || [])],\n    elt => elt.getId(),\n  )\n}\n\n// splits on the last instance of a character\nexport function splitLast(str: string, split: string): [string, string] {\n  const lastIndex = str.lastIndexOf(split)\n  if (lastIndex === -1) {\n    return [str, '']\n  }\n  const before = str.slice(0, lastIndex)\n  const after = str.slice(lastIndex + 1)\n  return [before, after]\n}\n","import VCF, { parseBreakend } from '@gmod/vcf'\n\nconst altTypeToSO: Record<string, string> = {\n  DEL: 'deletion',\n  INS: 'insertion',\n  DUP: 'duplication',\n  INV: 'inversion',\n  INVDUP: 'inverted_duplication',\n  CNV: 'copy_number_variation',\n  TRA: 'translocation',\n  'DUP:TANDEM': 'tandem_duplication',\n  NON_REF: 'sequence_variant',\n  '*': 'sequence_variant',\n}\n\n/**\n * Get a sequence ontology (SO) term that describes the variant type\n */\nexport function getSOTermAndDescription(\n  ref: string,\n  alt: string[] | undefined,\n  parser: VCF,\n): string[] {\n  // it's just a remark if there are no alternate alleles\n  if (!alt || alt.length === 0) {\n    return ['remark', 'no alternative alleles']\n  }\n\n  const soTerms = new Set<string>()\n  let descriptions = new Set<string>()\n  alt.forEach(a => {\n    let [soTerm, description] = getSOAndDescFromAltDefs(a, parser)\n    if (!soTerm) {\n      ;[soTerm, description] = getSOAndDescByExamination(ref, a)\n    }\n    if (soTerm && description) {\n      soTerms.add(soTerm)\n      descriptions.add(description)\n    }\n  })\n\n  // Combine descriptions like [\"SNV G -> A\", \"SNV G -> T\"] to [\"SNV G -> A,T\"]\n  if (descriptions.size > 1) {\n    const descs = [...descriptions]\n    const prefixes = new Set(\n      descs\n        .map(desc => {\n          const prefix = desc.split('->')\n          return prefix[1] ? prefix[0] : desc\n        })\n        .filter((f): f is string => !!f),\n    )\n\n    descriptions = new Set(\n      [...prefixes]\n        .map(r => r.trim())\n        .map(prefix => {\n          const suffixes = descs\n            .map(desc => desc.split('->').map(r => r.trim()))\n            .map(pref => (pref[1] && pref[0] === prefix ? pref[1] : ''))\n            .filter(f => !!f)\n\n          return suffixes.length ? `${prefix} -> ${suffixes.join(',')}` : prefix\n        }),\n    )\n  }\n  if (soTerms.size) {\n    return [[...soTerms].join(','), [...descriptions].join(',')]\n  }\n  return []\n}\n\nexport function getSOAndDescFromAltDefs(alt: string, parser: VCF): string[] {\n  if (typeof alt === 'string' && !alt.startsWith('<')) {\n    return []\n  }\n\n  // look for a definition with an SO type for this\n  let soTerm = altTypeToSO[alt]\n  // if no SO term but ALT is in metadata, assume sequence_variant\n  if (!soTerm && parser.getMetadata('ALT', alt)) {\n    soTerm = 'sequence_variant'\n  }\n  if (soTerm) {\n    return [soTerm, alt]\n  }\n\n  // try to look for a definition for a parent term if we can\n  const modAlt = alt.split(':')\n  if (modAlt.length > 1) {\n    return getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser)\n  }\n\n  // no parent\n  return []\n}\n\n// note: term SNV is used instead of SNP because SO definition of SNP says\n// abundance must be at least 1% in population, and can't be sure we meet\n// that\nexport function getSOAndDescByExamination(ref: string, alt: string) {\n  const bnd = parseBreakend(alt)\n  if (bnd) {\n    return ['breakend', alt]\n  }\n  if (ref.length === 1 && alt.length === 1) {\n    return ['SNV', makeDescriptionString('SNV', ref, alt)]\n  }\n  if (alt === '<INS>') {\n    return ['insertion', alt]\n  }\n  if (alt === '<DEL>') {\n    return ['deletion', alt]\n  }\n  if (alt === '<DUP>') {\n    return ['duplication', alt]\n  }\n  if (alt === '<CNV>') {\n    return ['cnv', alt]\n  }\n  if (alt === '<INV>') {\n    return ['inversion', alt]\n  }\n  if (alt === '<TRA>') {\n    return ['translocation', alt]\n  }\n  if (alt.includes('<')) {\n    return ['sv', alt]\n  }\n  if (ref.length === alt.length) {\n    return ref.split('').reverse().join('') === alt\n      ? ['inversion', makeDescriptionString('inversion', ref, alt)]\n      : ['substitution', makeDescriptionString('substitution', ref, alt)]\n  }\n  if (ref.length <= alt.length) {\n    const len = alt.length - ref.length\n    const lena = len.toLocaleString('en-US')\n    return [\n      'insertion',\n      len > 5 ? `${lena}bp INS` : makeDescriptionString('insertion', ref, alt),\n    ]\n  }\n  if (ref.length > alt.length) {\n    const len = ref.length - alt.length\n    const lena = len.toLocaleString('en-US')\n    return [\n      'deletion',\n      len > 5 ? `${lena}bp DEL` : makeDescriptionString('deletion', ref, alt),\n    ]\n  }\n\n  return ['indel', makeDescriptionString('indel', ref, alt)]\n}\n\nfunction makeDescriptionString(soTerm: string, ref: string, alt: string) {\n  return `${soTerm} ${ref} -> ${alt}`\n}\n","import { Feature } from '@jbrowse/core/util'\nimport VCF from '@gmod/vcf'\n\n// locals\nimport { getSOTermAndDescription } from './util'\n\ntype Samples = Record<\n  string,\n  Record<string, { values: string[] | number[] | null }>\n>\n\ninterface FeatureData {\n  [key: string]: unknown\n  refName: string\n  start: number\n  end: number\n  description?: string\n  type?: string\n  name?: string\n  aliases?: string[]\n  samples?: Samples\n}\n\nexport default class VCFFeature implements Feature {\n  private variant: any\n\n  private parser: VCF\n\n  private data: FeatureData\n\n  private _id: string\n\n  constructor(args: { variant: any; parser: VCF; id: string }) {\n    this.variant = args.variant\n    this.parser = args.parser\n    this.data = this.dataFromVariant(this.variant)\n    this._id = args.id\n  }\n\n  get(field: string): any {\n    return field === 'samples'\n      ? this.variant.SAMPLES\n      : (this.data[field] ?? this.variant[field])\n  }\n\n  set() {}\n\n  parent() {\n    return undefined\n  }\n\n  children() {\n    return undefined\n  }\n\n  tags() {\n    return [...Object.keys(this.data), ...Object.keys(this.variant), 'samples']\n  }\n\n  id() {\n    return this._id\n  }\n\n  dataFromVariant(variant: {\n    REF: string\n    POS: number\n    ALT?: string[]\n    CHROM: string\n    INFO: any\n    ID?: string[]\n  }): FeatureData {\n    const { REF, ALT, POS, CHROM, INFO, ID } = variant\n    const start = POS - 1\n    const [type, description] = getSOTermAndDescription(REF, ALT, this.parser)\n    const isTRA = ALT?.includes('<TRA>')\n    const isSymbolic = ALT?.some(f => f.includes('<'))\n\n    return {\n      refName: CHROM,\n      start,\n      end: isSymbolic && INFO.END && !isTRA ? +INFO.END[0] : start + REF.length,\n      description,\n      type,\n      name: ID?.join(','),\n      aliases: ID && ID.length > 1 ? ID.slice(1) : undefined,\n    }\n  }\n\n  toJSON(): any {\n    return {\n      uniqueId: this._id,\n      ...this.variant,\n      ...this.data,\n      samples: this.variant.SAMPLES,\n    }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config VcfAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst VcfAdapter = ConfigurationSchema(\n  'VcfAdapter',\n  {\n    /**\n     * #slot\n     */\n    vcfLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.vcf', locationType: 'UriLocation' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default VcfAdapter\n","import { types } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config VcfTabixAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst VcfTabixAdapter = ConfigurationSchema(\n  'VcfTabixAdapter',\n  {\n    /**\n     * #slot\n     */\n    vcfGzLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.vcf.gz', locationType: 'UriLocation' },\n    },\n    index: ConfigurationSchema('VcfIndex', {\n      /**\n       * #slot index.indexType\n       */\n      indexType: {\n        model: types.enumeration('IndexType', ['TBI', 'CSI']),\n        type: 'stringEnum',\n        defaultValue: 'TBI',\n      },\n      /**\n       * #slot index.location\n       */\n      location: {\n        type: 'fileLocation',\n        defaultValue: {\n          uri: '/path/to/my.vcf.gz.tbi',\n          locationType: 'UriLocation',\n        },\n      },\n    }),\n  },\n  { explicitlyTyped: true },\n)\n\nexport default VcfTabixAdapter\n","import { getConf, ConfigurationReference } from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n  getContainingTrack,\n  getSession,\n  getContainingView,\n  isSessionModelWithWidgets,\n  Feature,\n} from '@jbrowse/core/util'\n\nimport { linearBasicDisplayModelFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { Instance, types } from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\n\n/**\n * #stateModel LinearVariantDisplay\n * similar to basic display, but provides custom widget on feature click\n * extends\n *\n * - [LinearBasicDisplay](../linearbasicdisplay)\n */\nexport default function stateModelFactory(\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'LinearVariantDisplay',\n      linearBasicDisplayModelFactory(configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearVariantDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      async selectFeature(feature: Feature) {\n        const session = getSession(self)\n        if (isSessionModelWithWidgets(session)) {\n          const { rpcManager } = session\n          const sessionId = getRpcSessionId(self)\n          const track = getContainingTrack(self)\n          const view = getContainingView(self)\n          const adapterConfig = getConf(track, 'adapter')\n          const descriptions = await rpcManager.call(\n            sessionId,\n            'CoreGetMetadata',\n            {\n              adapterConfig,\n            },\n          )\n          session.showWidget(\n            session.addWidget('VariantFeatureWidget', 'variantFeature', {\n              featureData: feature.toJSON(),\n              view,\n              track,\n              descriptions,\n            }),\n          )\n        }\n\n        session.setSelection(feature)\n      },\n    }))\n}\n\nexport type LinearVariantDisplayStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearVariantDisplayModel = Instance<LinearVariantDisplayStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config StructuralVariantChordRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'StructuralVariantChordRenderer',\n  {\n    /**\n     * #slot\n     */\n    strokeColor: {\n      type: 'color',\n      description: 'the line color of each arc',\n      defaultValue: 'rgba(255,133,0,0.32)',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    strokeColorSelected: {\n      type: 'color',\n      description: 'the line color of an arc that has been selected',\n      defaultValue: 'black',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    strokeColorHover: {\n      type: 'color',\n      description:\n        'the line color of an arc that is being hovered over with the mouse',\n      defaultValue: '#555',\n      contextVariable: ['feature'],\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default configSchema\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { polarToCartesian, Feature, getStrokeProps } from '@jbrowse/core/util'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { parseBreakend } from '@gmod/vcf'\n\nexport interface Region {\n  end: number\n  start: number\n  refName: string\n  elided?: false\n}\n\nexport interface ElidedRegion {\n  elided: true\n  regions: Region[]\n}\n\nexport type AnyRegion = Region | ElidedRegion\n\nexport interface Block {\n  flipped: boolean\n  bpPerRadian: number\n  startRadians: number\n  region: AnyRegion\n}\n\nfunction bpToRadians(block: Block, pos: number) {\n  const blockStart = block.region.elided ? 0 : block.region.start\n  const blockEnd = block.region.elided ? 0 : block.region.end\n  const bpOffset = block.flipped ? blockEnd - pos : pos - blockStart\n  return bpOffset / block.bpPerRadian + block.startRadians\n}\n\nconst Chord = observer(function Chord({\n  feature,\n  blocksForRefs,\n  radius,\n  config,\n  bezierRadius,\n  selected,\n  onClick,\n}: {\n  feature: Feature\n  blocksForRefs: Record<string, Block>\n  radius: number\n  config: AnyConfigurationModel\n  bezierRadius: number\n  selected: boolean\n  onClick: (feat: Feature, reg: AnyRegion, end: AnyRegion, evt: unknown) => void\n}) {\n  const [hovered, setHovered] = useState(false)\n  // find the blocks that our start and end points belong to\n  const startBlock = blocksForRefs[feature.get('refName')]\n  if (!startBlock) {\n    return null\n  }\n  let svType: string | undefined\n  if (feature.get('INFO')) {\n    ;[svType] = feature.get('INFO').SVTYPE || []\n  } else if (feature.get('mate')) {\n    svType = 'mate'\n  }\n  let endPosition: number\n  let endBlock: Block | undefined\n  const alt = feature.get('ALT')?.[0]\n  const bnd = alt && parseBreakend(alt)\n  const startPos = feature.get('start')\n  if (bnd) {\n    // VCF BND\n    const matePosition = bnd.MatePosition.split(':')\n    endPosition = +matePosition[1]\n    endBlock = blocksForRefs[matePosition[0]]\n  } else if (alt === '<TRA>') {\n    // VCF TRA\n    const chr2 = feature.get('INFO')?.CHR2?.[0]\n    const end = feature.get('INFO')?.END?.[0]\n    endPosition = Number.parseInt(end, 10)\n    endBlock = blocksForRefs[chr2]\n  } else if (svType === 'mate') {\n    // generic simplefeatures arcs\n    const mate = feature.get('mate')\n    const chr2 = mate.refName\n    endPosition = mate.start\n    endBlock = blocksForRefs[chr2]\n  } else {\n    console.warn('unknown sv type', svType)\n    endPosition = startPos + 1\n  }\n\n  if (endBlock) {\n    const startRadians = bpToRadians(startBlock, startPos)\n    const endRadians = bpToRadians(endBlock, endPosition)\n    const startXY = polarToCartesian(radius, startRadians)\n    const endXY = polarToCartesian(radius, endRadians)\n    const controlXY = polarToCartesian(\n      bezierRadius,\n      (endRadians + startRadians) / 2,\n    )\n\n    const strokeColor = selected\n      ? readConfObject(config, 'strokeColorSelected', { feature })\n      : readConfObject(config, 'strokeColor', { feature })\n\n    const hoverStrokeColor = readConfObject(config, 'strokeColorHover', {\n      feature,\n    })\n    return (\n      <path\n        data-testid={`chord-${feature.id()}`}\n        cursor=\"crosshair\"\n        fill=\"none\"\n        d={['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' ')}\n        {...getStrokeProps(hovered ? hoverStrokeColor : strokeColor)}\n        strokeWidth={hovered ? 3 : 1}\n        onClick={evt => {\n          onClick(feature, startBlock.region, endBlock.region, evt)\n        }}\n        onMouseOver={() => {\n          if (!selected) {\n            setHovered(true)\n          }\n        }}\n        onMouseOut={() => {\n          if (!selected) {\n            setHovered(false)\n          }\n        }}\n      />\n    )\n  }\n\n  return null\n})\n\nexport default Chord\n","import React, { useMemo } from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\n// locals\nimport Chord, { Block, AnyRegion } from './Chord'\n\nconst StructuralVariantChordsReactComponent = observer(function ({\n  features,\n  config,\n  blockDefinitions,\n  radius,\n  bezierRadius,\n  displayModel,\n  onChordClick,\n}: {\n  features: Map<string, Feature>\n  radius: number\n  config: AnyConfigurationModel\n  displayModel?: {\n    id: string\n    selectedFeatureId: string\n  }\n  blockDefinitions: Block[]\n  bezierRadius: number\n  onChordClick: (\n    feature: Feature,\n    reg: AnyRegion,\n    endBlock: AnyRegion,\n    evt: unknown,\n  ) => void\n}) {\n  const { selectedFeatureId } = displayModel || {}\n  const blocksForRefsMemo = useMemo(() => {\n    const blocksForRefs = {} as Record<string, Block>\n    for (const block of blockDefinitions) {\n      const regions = block.region.elided\n        ? block.region.regions\n        : [block.region]\n      for (const region of regions) {\n        blocksForRefs[region.refName] = block\n      }\n    }\n    return blocksForRefs\n  }, [blockDefinitions])\n\n  return (\n    <g data-testid=\"structuralVariantChordRenderer\">\n      {[...features.values()].map(feature => {\n        const id = feature.id()\n        const selected = String(selectedFeatureId) === String(id)\n        return (\n          <Chord\n            key={id}\n            feature={feature}\n            config={config}\n            radius={radius}\n            bezierRadius={bezierRadius}\n            blocksForRefs={blocksForRefsMemo}\n            selected={selected}\n            onClick={onChordClick}\n          />\n        )\n      })}\n    </g>\n  )\n})\n\nexport default StructuralVariantChordsReactComponent\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { Instance, types } from 'mobx-state-tree'\nimport { stateModelFactory as baseModelFactory } from '@jbrowse/core/BaseFeatureWidget'\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n  const baseModel = baseModelFactory(pluginManager)\n  return types.compose(\n    baseModel,\n    types.model('VariantFeatureWidget', {\n      type: types.literal('VariantFeatureWidget'),\n      descriptions: types.frozen(),\n    }),\n  )\n}\n\nexport type VariantFeatureWidgetStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type VariantFeatureWidgetModel = Instance<VariantFeatureWidgetStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport const configSchema = ConfigurationSchema('VariantFeatureWidget', {})\n","import VcfAdapterF from './VcfAdapter'\nimport VcfTabixAdapterF from './VcfTabixAdapter'\nimport ExtensionPointsF from './extensionPoints'\nimport VariantTrackF from './VariantTrack'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport ChordVariantDisplayF from './ChordVariantDisplay'\nimport LinearVariantDisplayF from './LinearVariantDisplay'\nimport StructuralVariantChordRendererF from './StructuralVariantChordRenderer'\nimport VariantFeatureWidgetF from './VariantFeatureWidget'\n\nexport default class VariantsPlugin extends Plugin {\n  name = 'VariantsPlugin'\n\n  install(pluginManager: PluginManager) {\n    VcfAdapterF(pluginManager)\n    VcfTabixAdapterF(pluginManager)\n    VariantFeatureWidgetF(pluginManager)\n    VariantTrackF(pluginManager)\n    ExtensionPointsF(pluginManager)\n    LinearVariantDisplayF(pluginManager)\n    StructuralVariantChordRendererF(pluginManager)\n    ChordVariantDisplayF(pluginManager)\n  }\n}\n\nexport { default as VcfFeature } from './VcfFeature'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport configSchemaF from './configSchema'\n\nexport default function VariantTrackF(pm: PluginManager) {\n  pm.addTrackType(() => {\n    const configSchema = configSchemaF(pm)\n    return new TrackType({\n      name: 'VariantTrack',\n      displayName: 'Variant track',\n      configSchema,\n      stateModel: createBaseTrackModel(pm, 'VariantTrack', configSchema),\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function VcfAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'VcfAdapter',\n        displayName: 'VCF adapter',\n        configSchema,\n        getAdapterClass: () => import('./VcfAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport { default as configSchema } from './configSchema'\n\nexport default function VcfTabixAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'VcfTabixAdapter',\n        displayName: 'VCF tabix adapter',\n        configSchema,\n        getAdapterClass: () => import('./VcfTabixAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { lazy } from 'react'\nimport WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { stateModelFactory } from './stateModelFactory'\nimport { configSchema } from './configSchema'\n\nexport default function VariantFeatureWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(\n    () =>\n      new WidgetType({\n        name: 'VariantFeatureWidget',\n        heading: 'Feature details',\n        configSchema: configSchema,\n        stateModel: stateModelFactory(pluginManager),\n        ReactComponent: lazy(() => import('./VariantFeatureWidget')),\n      }),\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config VariantTrack\n * Mostly similar to feature track, but has `ChordDisplayType` registered to it,\n * and custom feature details in `LinearVariantDisplay`\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'VariantTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  makeIndex,\n  makeIndexType,\n  getFileName,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default function ExtensionPointsF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.vcf\\.b?gz$/i\n        const adapterName = 'VcfTabixAdapter'\n        const fileName = getFileName(file)\n        const indexName = index && getFileName(index)\n        const obj = {\n          type: adapterName,\n          vcfGzLocation: file,\n          index: {\n            location: index || makeIndex(file, '.tbi'),\n            indexType: makeIndexType(indexName, 'CSI', 'TBI'),\n          },\n        }\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'Core-guessTrackTypeForLocation',\n    (trackTypeGuesser: TrackTypeGuesser) => {\n      return (adapterName: string) => {\n        if (adapterName === 'VcfTabixAdapter' || adapterName === 'VcfAdapter') {\n          return 'VariantTrack'\n        }\n        return trackTypeGuesser(adapterName)\n      }\n    },\n  )\n\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.vcf$/i\n        const adapterName = 'VcfAdapter'\n        const fileName = getFileName(file)\n        if (regexGuess.test(fileName) || adapterHint === adapterName) {\n          return {\n            type: adapterName,\n            vcfLocation: file,\n          }\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport stateModelFactory from './model'\nimport configSchemaF from './configSchema'\n\nexport default function LinearVariantDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new DisplayType({\n      name: 'LinearVariantDisplay',\n      displayName: 'Variant display',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'VariantTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #config LinearVariantDisplay\n * mostly empty, this display type is very much\n * like a `FeatureTrack` with a `LinearBasicDisplay` except it has a custom\n * feature details widget\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default function configSchemaF(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearVariantDisplay',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport type LinearVariantDisplayConfigModel = ReturnType<typeof configSchemaF>\nexport type LinearVariantDisplayConfig =\n  Instance<LinearVariantDisplayConfigModel>\n","import ChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\nimport ReactComponent from './ReactComponent'\n\nexport default function StructuralVariantChordRendererF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addRendererType(\n    () =>\n      new ChordRendererType({\n        name: 'StructuralVariantChordRenderer',\n        displayName: 'SV chord renderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseChordDisplayComponent } from '@jbrowse/plugin-circular-view'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\n// locals\nimport configSchemaF from './models/configSchema'\nimport stateModelF from './models/stateModelFactory'\n\nexport default function ChordVariantDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    const stateModel = stateModelF(configSchema)\n    return new DisplayType({\n      name: 'ChordVariantDisplay',\n      displayName: 'Chord variant display',\n      configSchema,\n      stateModel,\n      trackType: 'VariantTrack',\n      viewType: 'CircularView',\n      ReactComponent: BaseChordDisplayComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { baseChordDisplayConfig } from '@jbrowse/plugin-circular-view'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config ChordVariantDisplay\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nfunction stateModelFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'ChordVariantDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: types.optional(\n        pluginManager.pluggableConfigSchemaType('renderer'),\n        { type: 'StructuralVariantChordRenderer' },\n      ),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseChordDisplayConfig,\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default stateModelFactory\n","import {\n  BaseChordDisplayModel,\n  CircularViewModel,\n} from '@jbrowse/plugin-circular-view'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n} from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport { Feature, getContainingView } from '@jbrowse/core/util'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\n\n/**\n * #stateModel ChordVariantDisplay\n * extends\n * - [BaseChordDisplay](../basechorddisplay)\n */\nconst stateModelFactory = (configSchema: AnyConfigurationSchemaType) => {\n  return types\n    .compose(\n      'ChordVariantDisplay',\n      BaseChordDisplayModel,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('ChordVariantDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        return self.configuration.renderer.type\n      },\n\n      /**\n       * #method\n       */\n      renderProps(): Record<string, unknown> {\n        const view = getContainingView(self) as CircularViewModel\n        return {\n          ...getParentRenderProps(self),\n          rpcDriverName: self.rpcDriverName,\n          displayModel: self,\n          bezierRadius: view.radiusPx * self.bezierRadiusRatio,\n          radius: view.radiusPx,\n          blockDefinitions: self.blockDefinitions,\n          config: self.configuration.renderer,\n          onChordClick: (arg: Feature) => {\n            self.onChordClick(arg)\n          },\n        }\n      },\n    }))\n}\n\n// http://localhost:3000/test_data/hs37d5.HG002-SequelII-CCS.sv.vcf.gz.tbi\n\n// render request is for 1.5x the current viewing window\n\n// tracks all have a height\n//\nexport default stateModelFactory\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util'\n\n// locals\nimport Tooltip, { TooltipContentsComponent } from '../../Tooltip'\nimport { toP } from '../../util'\n\nconst en = (n: number) => n.toLocaleString('en-US')\n\ninterface Props {\n  feature: Feature\n}\n\nconst TooltipContents = React.forwardRef<HTMLDivElement, Props>(\n  function TooltipContents2({ feature }, ref) {\n    const start = feature.get('start')\n    const end = feature.get('end')\n    const refName = feature.get('refName')\n    const name = feature.get('name')\n    const loc = [\n      refName,\n      name,\n      start === end ? en(start) : `${en(start)}..${en(end)}`,\n    ]\n      .filter(f => !!f)\n      .join(':')\n\n    return feature.get('summary') !== undefined ? (\n      <div ref={ref}>\n        {loc}\n        <br />\n        Max: {toP(feature.get('maxScore'))}\n        <br />\n        Avg: {toP(feature.get('score'))}\n        <br />\n        Min: {toP(feature.get('minScore'))}\n      </div>\n    ) : (\n      <div ref={ref}>\n        {loc}\n        <br />\n        {`${toP(feature.get('score'))}`}\n      </div>\n    )\n  },\n)\n\ntype Coord = [number, number]\n\nconst WiggleTooltip = observer(function (props: {\n  model: {\n    featureUnderMouse?: Feature\n  }\n  height: number\n  offsetMouseCoord: Coord\n  clientMouseCoord: Coord\n  clientRect?: DOMRect\n  TooltipContents?: TooltipContentsComponent\n}) {\n  return <Tooltip TooltipContents={TooltipContents} {...props} />\n})\nexport default WiggleTooltip\n\nexport { default as Tooltip } from '../../Tooltip'\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  measureText,\n  getContainingView,\n  getContainingTrack,\n} from '@jbrowse/core/util'\nimport { getConf } from '@jbrowse/core/configuration'\nimport {\n  BaseLinearDisplayComponent,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport YScaleBar from '../../shared/YScaleBar'\n\ntype LGV = LinearGenomeViewModel\n\nconst LinearWiggleDisplay = observer((props: { model: WiggleDisplayModel }) => {\n  const { model } = props\n  const { stats, height, needsScalebar } = model\n\n  const { trackLabels } = getContainingView(model) as LGV\n  const track = getContainingTrack(model)\n  const left =\n    trackLabels === 'overlapping'\n      ? measureText(getConf(track, 'name'), 12.8) + 100\n      : 50\n  return (\n    <div>\n      <BaseLinearDisplayComponent {...props} />\n      {stats && needsScalebar ? (\n        <svg\n          style={{\n            position: 'absolute',\n            top: 0,\n            left,\n            pointerEvents: 'none',\n            height,\n            width: 50,\n          }}\n        >\n          <YScaleBar model={model} />\n        </svg>\n      ) : null}\n    </div>\n  )\n})\n\nexport default LinearWiggleDisplay\n","import React, { Suspense } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { Feature } from '@jbrowse/core/util'\nimport BaseTooltip from '@jbrowse/core/ui/BaseTooltip'\n// locals\nimport { YSCALEBAR_LABEL_OFFSET } from './util'\n\nconst useStyles = makeStyles()({\n  hoverVertical: {\n    background: '#333',\n    border: 'none',\n    width: 1,\n    height: '100%',\n    top: YSCALEBAR_LABEL_OFFSET,\n    cursor: 'default',\n    position: 'absolute',\n    pointerEvents: 'none',\n  },\n})\n\ntype Coord = [number, number]\n\n// React.forwardRef component for the tooltip, the ref is used for measuring\n// the size of the tooltip\nexport type TooltipContentsComponent = React.ForwardRefExoticComponent<\n  { feature: Feature; model: any } & React.RefAttributes<HTMLDivElement>\n>\n\nconst Tooltip = observer(function Tooltip({\n  model,\n  height,\n  clientMouseCoord,\n  offsetMouseCoord,\n  clientRect,\n  TooltipContents,\n  useClientY,\n}: {\n  model: { featureUnderMouse?: Feature }\n  useClientY?: boolean\n  height: number\n  clientMouseCoord: Coord\n  offsetMouseCoord: Coord\n  clientRect?: DOMRect\n  TooltipContents: TooltipContentsComponent\n}) {\n  const { featureUnderMouse } = model\n  const { classes } = useStyles()\n\n  const x = clientMouseCoord[0] + 5\n  const y = useClientY ? clientMouseCoord[1] : clientRect?.top || 0\n  return featureUnderMouse ? (\n    <>\n      <Suspense fallback={null}>\n        <BaseTooltip clientPoint={{ x, y }}>\n          <TooltipContents model={model} feature={featureUnderMouse} />\n        </BaseTooltip>\n      </Suspense>\n\n      <div\n        className={classes.hoverVertical}\n        style={{\n          left: offsetMouseCoord[0],\n          height: height - YSCALEBAR_LABEL_OFFSET * 2,\n        }}\n      />\n    </>\n  ) : null\n})\n\nexport default Tooltip\n","import FeatureRendererType, {\n  RenderArgs as FeatureRenderArgs,\n  RenderArgsDeserialized as FeatureRenderArgsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\nimport { renderToAbstractCanvas, Feature } from '@jbrowse/core/util'\nimport { ThemeOptions } from '@mui/material'\n\n// locals\nimport { ScaleOpts, Source } from './util'\n\nexport interface RenderArgs extends FeatureRenderArgs {\n  scaleOpts: ScaleOpts\n}\n\nexport interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {\n  bpPerPx: number\n  height: number\n  highResolutionScaling: number\n  scaleOpts: ScaleOpts\n  displayCrossHatches: boolean\n  ticks: { values: number[] }\n  themeOptions: ThemeOptions\n}\n\nexport interface RenderArgsDeserializedWithFeatures\n  extends RenderArgsDeserialized {\n  features: Map<string, Feature>\n}\n\nexport interface MultiRenderArgsDeserialized\n  extends RenderArgsDeserializedWithFeatures {\n  sources: Source[]\n}\n\nexport default abstract class WiggleBaseRenderer extends FeatureRendererType {\n  supportsSVG = true\n\n  async render(renderProps: RenderArgsDeserialized) {\n    const features = await this.getFeatures(renderProps)\n    const { height, regions, bpPerPx } = renderProps\n    const region = regions[0]!\n    const width = (region.end - region.start) / bpPerPx\n\n    // @ts-expect-error\n    const { reducedFeatures, ...rest } = await renderToAbstractCanvas(\n      width,\n      height,\n      renderProps,\n      ctx =>\n        this.draw(ctx, {\n          ...renderProps,\n          features,\n        }),\n    )\n\n    const results = await super.render({\n      ...renderProps,\n      ...rest,\n      features,\n      height,\n      width,\n    })\n\n    return {\n      ...results,\n      ...rest,\n      features: reducedFeatures\n        ? new Map<string, Feature>(\n            reducedFeatures.map((r: Feature) => [r.id(), r]),\n          )\n        : results.features,\n      height,\n      width,\n      containsNoTransferables: true,\n    }\n  }\n\n  /**\n   * draw features to context given props, to be used by derived renderer\n   * classes\n   */\n  abstract draw<T extends RenderArgsDeserializedWithFeatures>(\n    ctx: CanvasRenderingContext2D,\n\n    props: T,\n  ): Promise<Record<string, unknown> | undefined>\n}\n\nexport {\n  type RenderArgsSerialized,\n  type RenderResults,\n  type ResultsDeserialized,\n  type ResultsSerialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BigWigAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BigWigAdapter = ConfigurationSchema(\n  'BigWigAdapter',\n  {\n    /**\n     * #slot\n     */\n    bigWigLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my.bw',\n        locationType: 'UriLocation',\n      },\n    },\n\n    /**\n     * #slot\n     */\n    source: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Used for multiwiggle',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default BigWigAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config QuantitativeTrack\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nfunction configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'QuantitativeTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n}\n\nexport default configSchemaFactory\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config MultiWiggleAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst MultiWiggleAdapter = ConfigurationSchema(\n  'MultiWiggleAdapter',\n  {\n    /**\n     * #slot\n     */\n    subadapters: {\n      type: 'frozen',\n      defaultValue: [],\n      description: 'array of subadapter JSON objects',\n    },\n    /**\n     * #slot\n     */\n    bigWigs: {\n      type: 'frozen',\n      description:\n        'array of bigwig filenames, alternative to the subadapters slot',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default MultiWiggleAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config WiggleRenderer\n * this is the \"base wiggle renderer config schema\"\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst WiggleRenderer = ConfigurationSchema(\n  'WiggleRenderer',\n  {\n    /**\n     * #slot\n     */\n    color: {\n      type: 'color',\n      description: 'the color of track, overrides posColor and negColor',\n      defaultValue: '#f0f',\n    },\n    /**\n     * #slot\n     */\n    posColor: {\n      type: 'color',\n      description: 'the color to use when the score is positive',\n      defaultValue: 'blue',\n    },\n    /**\n     * #slot\n     */\n    negColor: {\n      type: 'color',\n      description: 'the color to use when the score is negative',\n      defaultValue: 'red',\n    },\n    /**\n     * #slot\n     */\n    clipColor: {\n      type: 'color',\n      description: 'the color of the clipping marker',\n      defaultValue: 'red',\n    },\n    /**\n     * #slot\n     */\n    bicolorPivot: {\n      type: 'stringEnum',\n      model: types.enumeration('Scale type', [\n        'numeric',\n        'mean',\n        'z_score',\n        'none',\n      ]),\n      description: 'type of bicolor pivot',\n      defaultValue: 'numeric',\n    },\n    /**\n     * #slot\n     */\n    bicolorPivotValue: {\n      type: 'number',\n      defaultValue: 0,\n      description: 'value to use for bicolor pivot',\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default WiggleRenderer\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config DensityRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'DensityRenderer',\n  {},\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { featureSpanPx, Feature, Region } from '@jbrowse/core/util'\n\n// locals\nimport { fillRectCtx, getScale, ScaleOpts } from './util'\n\nconst fudgeFactor = 0.3\nconst clipHeight = 2\n\nexport function drawDensity(\n  ctx: CanvasRenderingContext2D,\n  props: {\n    features: Map<string, Feature> | Feature[]\n    regions: Region[]\n    bpPerPx: number\n    scaleOpts: ScaleOpts\n    height: number\n    ticks: { values: number[] }\n    displayCrossHatches: boolean\n    config: AnyConfigurationModel\n  },\n) {\n  const { features, regions, bpPerPx, scaleOpts, height, config } = props\n  const region = regions[0]!\n  const pivot = readConfObject(config, 'bicolorPivot')\n  const pivotValue = readConfObject(config, 'bicolorPivotValue')\n  const negColor = readConfObject(config, 'negColor')\n  const posColor = readConfObject(config, 'posColor')\n  const color = readConfObject(config, 'color')\n  const clipColor = readConfObject(config, 'clipColor')\n  const crossing = pivot !== 'none' && scaleOpts.scaleType !== 'log'\n  const scale = getScale({\n    ...scaleOpts,\n    pivotValue: crossing ? pivotValue : undefined,\n    range: crossing ? [negColor, 'white', posColor] : ['white', posColor],\n  })\n\n  const scale2 = getScale({ ...scaleOpts, range: [0, height] })\n  const cb =\n    color === '#f0f'\n      ? (_: Feature, score: number) => scale(score)\n      : (feature: Feature, score: number) =>\n          readConfObject(config, 'color', { feature, score })\n  const domain = scale2.domain()\n  const niceMin = domain[0]!\n  const niceMax = domain[1]!\n\n  let prevLeftPx = Number.NEGATIVE_INFINITY\n  let hasClipping = false\n  const reducedFeatures = []\n  for (const feature of features.values()) {\n    const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n    // create reduced features, avoiding multiple features per px\n    if (Math.floor(leftPx) !== Math.floor(prevLeftPx)) {\n      reducedFeatures.push(feature)\n      prevLeftPx = leftPx\n    }\n    const score = feature.get('score')\n    hasClipping = hasClipping || score > niceMax || score < niceMin\n    const w = rightPx - leftPx + fudgeFactor\n    ctx.fillStyle = cb(feature, score)\n    ctx.fillRect(leftPx, 0, w, height)\n  }\n\n  // second pass: draw clipping\n  // avoid persisting the red fillstyle with save/restore\n  ctx.save()\n  if (hasClipping) {\n    ctx.fillStyle = clipColor\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n      const w = rightPx - leftPx + fudgeFactor\n      const score = feature.get('score')\n      if (score > niceMax) {\n        fillRectCtx(leftPx, 0, w, clipHeight, ctx)\n      } else if (score < niceMin && scaleOpts.scaleType !== 'log') {\n        fillRectCtx(leftPx, 0, w, clipHeight, ctx)\n      }\n    }\n  }\n  ctx.restore()\n\n  return { reducedFeatures }\n}\n","import { drawDensity } from '../drawDensity'\n\nimport WiggleBaseRenderer, {\n  RenderArgsDeserializedWithFeatures,\n} from '../WiggleBaseRenderer'\n\nexport default class DensityRenderer extends WiggleBaseRenderer {\n  async draw(\n    ctx: CanvasRenderingContext2D,\n    props: RenderArgsDeserializedWithFeatures,\n  ) {\n    return drawDensity(ctx, props)\n  }\n}\n","import { observer } from 'mobx-react'\nimport React, { useRef } from 'react'\n\nimport { Region } from '@jbrowse/core/util/types'\nimport { Feature } from '@jbrowse/core/util'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\n\nconst WiggleRendering = observer(function (props: {\n  regions: Region[]\n  features: Map<string, Feature>\n  bpPerPx: number\n  width: number\n  height: number\n  blockKey: string\n  onMouseLeave?: (event: React.MouseEvent) => void\n  onMouseMove?: (event: React.MouseEvent, arg?: string) => void\n  onFeatureClick?: (event: React.MouseEvent, arg?: string) => void\n}) {\n  const {\n    regions,\n    features,\n    bpPerPx,\n    width,\n    height,\n    onMouseLeave,\n    onMouseMove,\n    onFeatureClick,\n  } = props\n  const region = regions[0]!\n  const ref = useRef<HTMLDivElement>(null)\n\n  function getFeatureUnderMouse(eventClientX: number) {\n    // calculates feature under mouse\n    let offset = 0\n    if (ref.current) {\n      offset = ref.current.getBoundingClientRect().left\n    }\n    const offsetX = eventClientX - offset\n    const px = region.reversed ? width - offsetX : offsetX\n    const clientBp = region.start + bpPerPx * px\n    let featureUnderMouse: Feature | undefined\n    for (const feature of features.values()) {\n      // bpPerPx added to the end to accommodate \"reduced features\" (one feature per px)\n      if (\n        clientBp <= feature.get('end') + bpPerPx &&\n        clientBp >= feature.get('start')\n      ) {\n        featureUnderMouse = feature\n        break\n      }\n    }\n    return featureUnderMouse\n  }\n  return (\n    <div\n      ref={ref}\n      data-testid=\"wiggle-rendering-test\"\n      onMouseMove={e => onMouseMove?.(e, getFeatureUnderMouse(e.clientX)?.id())}\n      onClick={e => onFeatureClick?.(e, getFeatureUnderMouse(e.clientX)?.id())}\n      onMouseLeave={e => onMouseLeave?.(e)}\n      style={{\n        overflow: 'visible',\n        position: 'relative',\n        height,\n      }}\n    >\n      <PrerenderedCanvas {...props} />\n    </div>\n  )\n})\n\nexport default WiggleRendering\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { colord, Colord } from '@jbrowse/core/util/colord'\n// required to import this for typescript purposes\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport mix from 'colord/plugins/mix'\n\nimport { clamp, featureSpanPx, Feature, Region } from '@jbrowse/core/util'\n\n// locals\nimport { fillRectCtx, getOrigin, getScale, ScaleOpts } from './util'\n\nfunction lighten(color: Colord, amount: number) {\n  const hslColor = color.toHsl()\n  const l = hslColor.l * (1 + amount)\n  return colord({ ...hslColor, l: clamp(l, 0, 100) })\n}\n\nfunction darken(color: Colord, amount: number) {\n  const hslColor = color.toHsl()\n  const l = hslColor.l * (1 - amount)\n  return colord({ ...hslColor, l: clamp(l, 0, 100) })\n}\n\nconst fudgeFactor = 0.3\nconst clipHeight = 2\n\nexport function drawXY(\n  ctx: CanvasRenderingContext2D,\n  props: {\n    features: Map<string, Feature> | Feature[]\n    bpPerPx: number\n    regions: Region[]\n    scaleOpts: ScaleOpts\n    height: number\n    ticks: { values: number[] }\n    config: AnyConfigurationModel\n    displayCrossHatches: boolean\n    offset?: number\n    colorCallback: (f: Feature, score: number) => string\n  },\n) {\n  const {\n    features,\n    bpPerPx,\n    regions,\n    scaleOpts,\n    height: unadjustedHeight,\n    config,\n    ticks,\n    displayCrossHatches,\n    offset = 0,\n    colorCallback,\n  } = props\n  const region = regions[0]!\n  const width = (region.end - region.start) / bpPerPx\n\n  // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n  // wiggle display, and makes the height of the actual drawn area add\n  // \"padding\" to the top and bottom of the display\n  const height = unadjustedHeight - offset * 2\n\n  const filled = readConfObject(config, 'filled')\n  const clipColor = readConfObject(config, 'clipColor')\n  const summaryScoreMode = readConfObject(config, 'summaryScoreMode')\n  const pivotValue = readConfObject(config, 'bicolorPivotValue')\n  const minSize = readConfObject(config, 'minSize')\n\n  const scale = getScale({ ...scaleOpts, range: [0, height] })\n  const originY = getOrigin(scaleOpts.scaleType)\n  const domain = scale.domain()\n  const niceMin = domain[0]!\n  const niceMax = domain[1]!\n\n  const toY = (n: number) => clamp(height - (scale(n) || 0), 0, height) + offset\n  const toOrigin = (n: number) => toY(originY) - toY(n)\n  const getHeight = (n: number) => (filled ? toOrigin(n) : Math.max(minSize, 1))\n  let hasClipping = false\n\n  let prevLeftPx = Number.NEGATIVE_INFINITY\n  const reducedFeatures = []\n  const crossingOrigin = niceMin < pivotValue && niceMax > pivotValue\n\n  // we handle whiskers separately to render max row, min row, and avg in three\n  // passes. this reduces subpixel rendering issues. note: for stylistic\n  // reasons, clipping indicator is only drawn for score, not min/max score\n  if (summaryScoreMode === 'whiskers') {\n    let lastCol: string | undefined\n    let lastMix: string | undefined\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n      if (feature.get('summary')) {\n        const w = Math.max(rightPx - leftPx + fudgeFactor, minSize)\n        const max = feature.get('maxScore')\n        const c = colorCallback(feature, max)\n        const effectiveC = crossingOrigin\n          ? c\n          : c === lastCol\n            ? lastMix\n            : (lastMix = lighten(colord(c), 0.4).toHex())\n        fillRectCtx(leftPx, toY(max), w, getHeight(max), ctx, effectiveC)\n        lastCol = c\n      }\n    }\n    lastMix = undefined\n    lastCol = undefined\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n      const score = feature.get('score')\n      const max = feature.get('maxScore')\n      const min = feature.get('minScore')\n      const summary = feature.get('summary')\n      const c = colorCallback(feature, score)\n      const effectiveC =\n        crossingOrigin && summary\n          ? c === lastCol\n            ? lastMix\n            : (lastMix = colord(colorCallback(feature, max))\n                .mix(colord(colorCallback(feature, min)))\n                .toString())\n          : c\n      const w = Math.max(rightPx - leftPx + fudgeFactor, minSize)\n      // create reduced features, avoiding multiple features per px\n      if (Math.floor(leftPx) !== Math.floor(prevLeftPx)) {\n        reducedFeatures.push(feature)\n        prevLeftPx = leftPx\n      }\n      hasClipping = hasClipping || score < niceMin || score > niceMax\n      fillRectCtx(leftPx, toY(score), w, getHeight(score), ctx, effectiveC)\n      lastCol = c\n    }\n    lastMix = undefined\n    lastCol = undefined\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n      if (feature.get('summary')) {\n        const min = feature.get('minScore')\n        const c = colorCallback(feature, min)\n        const w = Math.max(rightPx - leftPx + fudgeFactor, minSize)\n        const effectiveC = crossingOrigin\n          ? c\n          : c === lastCol\n            ? lastMix\n            : (lastMix = darken(colord(c), 0.4).toHex())\n\n        fillRectCtx(leftPx, toY(min), w, getHeight(min), ctx, effectiveC)\n        lastCol = c\n      }\n    }\n  } else {\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n      // create reduced features, avoiding multiple features per px\n      if (Math.floor(leftPx) !== Math.floor(prevLeftPx)) {\n        reducedFeatures.push(feature)\n        prevLeftPx = leftPx\n      }\n\n      const score = feature.get('score')\n      const c = colorCallback(feature, score)\n\n      hasClipping = hasClipping || score < niceMin || score > niceMax\n      const w = Math.max(rightPx - leftPx + fudgeFactor, minSize)\n\n      if (summaryScoreMode === 'max') {\n        const s = feature.get('summary') ? feature.get('maxScore') : score\n        fillRectCtx(leftPx, toY(s), w, getHeight(s), ctx, c)\n      } else if (summaryScoreMode === 'min') {\n        const s = feature.get('summary') ? feature.get('minScore') : score\n        fillRectCtx(leftPx, toY(s), w, getHeight(s), ctx, c)\n      } else {\n        fillRectCtx(leftPx, toY(score), w, getHeight(score), ctx, c)\n      }\n    }\n  }\n\n  // second pass: draw clipping\n  // avoid persisting the red fillstyle with save/restore\n  ctx.save()\n  if (hasClipping) {\n    ctx.fillStyle = clipColor\n    for (const feature of features.values()) {\n      const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n      const w = rightPx - leftPx + fudgeFactor\n      const score = feature.get('score')\n      if (score > niceMax) {\n        fillRectCtx(leftPx, offset, w, clipHeight, ctx)\n      } else if (score < niceMin && scaleOpts.scaleType !== 'log') {\n        fillRectCtx(leftPx, unadjustedHeight, w, clipHeight, ctx)\n      }\n    }\n  }\n  ctx.restore()\n\n  if (displayCrossHatches) {\n    ctx.lineWidth = 1\n    ctx.strokeStyle = 'rgba(200,200,200,0.5)'\n    ticks.values.forEach(tick => {\n      ctx.beginPath()\n      ctx.moveTo(0, Math.round(toY(tick)))\n      ctx.lineTo(width, Math.round(toY(tick)))\n      ctx.stroke()\n    })\n  }\n\n  return { reducedFeatures }\n}\n","import { readConfObject } from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\nimport { drawXY } from '../drawXY'\nimport WiggleBaseRenderer, {\n  RenderArgsDeserializedWithFeatures,\n} from '../WiggleBaseRenderer'\nimport { YSCALEBAR_LABEL_OFFSET } from '../util'\n\nexport default class XYPlotRenderer extends WiggleBaseRenderer {\n  async draw(\n    ctx: CanvasRenderingContext2D,\n    props: RenderArgsDeserializedWithFeatures,\n  ) {\n    const { features, config } = props\n\n    // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n    // wiggle display, and makes the height of the actual drawn area add\n    // \"padding\" to the top and bottom of the display\n    const pivotValue = readConfObject(config, 'bicolorPivotValue')\n    const negColor = readConfObject(config, 'negColor')\n    const posColor = readConfObject(config, 'posColor')\n\n    return drawXY(ctx, {\n      ...props,\n      colorCallback:\n        readConfObject(config, 'color') === '#f0f'\n          ? (_: Feature, score: number) =>\n              score < pivotValue ? negColor : posColor\n          : (feature: Feature, _score: number) =>\n              readConfObject(config, 'color', { feature }),\n      offset: YSCALEBAR_LABEL_OFFSET,\n      features: [...features.values()],\n    })\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport baseWiggleRendererConfigSchema from '../configSchema'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config XYPlotRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'XYPlotRenderer',\n  {\n    /**\n     * #slot\n     */\n    filled: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    summaryScoreMode: {\n      type: 'stringEnum',\n      model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),\n      description:\n        'choose whether to use max/min/average or whiskers which combines all three into the same rendering',\n      defaultValue: 'whiskers',\n    },\n    /**\n     * #slot\n     */\n    minSize: {\n      type: 'number',\n      defaultValue: 0,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config LinePlotRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'LinePlotRenderer',\n  {\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { clamp, featureSpanPx, Feature, Region } from '@jbrowse/core/util'\n\n// locals\nimport { getScale, ScaleOpts } from './util'\n\nconst fudgeFactor = 0.3\nconst clipHeight = 2\n\nexport function drawLine(\n  ctx: CanvasRenderingContext2D,\n  props: {\n    features: Map<string, Feature> | Feature[]\n    regions: Region[]\n    bpPerPx: number\n    scaleOpts: ScaleOpts\n    height: number\n    ticks: { values: number[] }\n    displayCrossHatches: boolean\n    colorCallback: (f: Feature, score: number) => string\n    config: AnyConfigurationModel\n    offset?: number\n  },\n) {\n  const {\n    features,\n    regions,\n    bpPerPx,\n    scaleOpts,\n    height: unadjustedHeight,\n    ticks: { values },\n    displayCrossHatches,\n    colorCallback,\n    config,\n    offset = 0,\n  } = props\n  const region = regions[0]!\n  const width = (region.end - region.start) / bpPerPx\n\n  // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n  // wiggle display, and makes the height of the actual drawn area add\n  // \"padding\" to the top and bottom of the display\n  const height = unadjustedHeight - offset * 2\n  const clipColor = readConfObject(config, 'clipColor')\n  const scale = getScale({ ...scaleOpts, range: [0, height] })\n  const domain = scale.domain()\n  const niceMin = domain[0]!\n  const niceMax = domain[1]!\n  const toY = (n: number) => clamp(height - (scale(n) || 0), 0, height) + offset\n\n  let lastVal: number | undefined\n  let prevLeftPx = Number.NEGATIVE_INFINITY\n  const reducedFeatures = []\n  for (const feature of features.values()) {\n    const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n    // create reduced features, avoiding multiple features per px\n    if (Math.floor(leftPx) !== Math.floor(prevLeftPx)) {\n      reducedFeatures.push(feature)\n      prevLeftPx = leftPx\n    }\n    const score = feature.get('score')\n    const lowClipping = score < niceMin\n    const highClipping = score > niceMax\n    const w = rightPx - leftPx + fudgeFactor\n\n    const c = colorCallback(feature, score)\n\n    ctx.beginPath()\n    ctx.strokeStyle = c\n    const startPos = lastVal !== undefined ? lastVal : score\n    if (!region.reversed) {\n      ctx.moveTo(leftPx, toY(startPos))\n      ctx.lineTo(leftPx, toY(score))\n      ctx.lineTo(rightPx, toY(score))\n    } else {\n      ctx.moveTo(rightPx, toY(startPos))\n      ctx.lineTo(rightPx, toY(score))\n      ctx.lineTo(leftPx, toY(score))\n    }\n    ctx.stroke()\n    lastVal = score\n\n    if (highClipping) {\n      ctx.fillStyle = clipColor\n      ctx.fillRect(leftPx, offset, w, clipHeight)\n    } else if (lowClipping && scaleOpts.scaleType !== 'log') {\n      ctx.fillStyle = clipColor\n      ctx.fillRect(leftPx, height - clipHeight, w, height)\n    }\n  }\n\n  if (displayCrossHatches) {\n    ctx.lineWidth = 1\n    ctx.strokeStyle = 'rgba(200,200,200,0.5)'\n    values.forEach(tick => {\n      ctx.beginPath()\n      ctx.moveTo(0, Math.round(toY(tick)))\n      ctx.lineTo(width, Math.round(toY(tick)))\n      ctx.stroke()\n    })\n  }\n  return { reducedFeatures }\n}\n","import { readConfObject } from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\nimport WiggleBaseRenderer, {\n  RenderArgsDeserializedWithFeatures,\n} from '../WiggleBaseRenderer'\n\nimport { YSCALEBAR_LABEL_OFFSET } from '../util'\nimport { drawLine } from '../drawLine'\n\nexport default class LinePlotRenderer extends WiggleBaseRenderer {\n  async draw(\n    ctx: CanvasRenderingContext2D,\n    props: RenderArgsDeserializedWithFeatures,\n  ) {\n    const { config } = props\n    const c = readConfObject(config, 'color')\n    return drawLine(ctx, {\n      ...props,\n      offset: YSCALEBAR_LABEL_OFFSET,\n      colorCallback:\n        c === '#f0f'\n          ? () => 'grey'\n          : (feature: Feature) => readConfObject(config, 'color', { feature }),\n    })\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config SharedWiggleDisplay\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nexport default function sharedWiggleConfigFactory() {\n  return ConfigurationSchema(\n    'SharedWiggleDisplay',\n    {\n      /**\n       * #slot\n       */\n      autoscale: {\n        type: 'stringEnum',\n        defaultValue: 'local',\n        model: types.enumeration('Autoscale type', [\n          'global',\n          'local',\n          'globalsd',\n          'localsd',\n          'zscore',\n        ]),\n        description:\n          'global/local using their min/max values or w/ standard deviations (globalsd/localsd)',\n      },\n\n      /**\n       * #slot\n       */\n      minimalTicks: {\n        type: 'boolean',\n        defaultValue: false,\n        description: 'use the minimal amount of ticks',\n      },\n\n      /**\n       * #slot\n       */\n      minScore: {\n        type: 'number',\n        defaultValue: Number.MIN_VALUE,\n        description: 'minimum value for the y-scale',\n      },\n      /**\n       * #slot\n       */\n      maxScore: {\n        type: 'number',\n        description: 'maximum value for the y-scale',\n        defaultValue: Number.MAX_VALUE,\n      },\n      /**\n       * #slot\n       */\n      numStdDev: {\n        type: 'number',\n        description:\n          'number of standard deviations to use for autoscale types globalsd or localsd',\n        defaultValue: 3,\n      },\n      /**\n       * #slot\n       */\n      scaleType: {\n        type: 'stringEnum',\n        model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale\n        description: 'The type of scale to use',\n        defaultValue: 'linear',\n      },\n\n      /**\n       * #slot\n       */\n      inverted: {\n        type: 'boolean',\n        description: 'draw upside down',\n        defaultValue: false,\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  getConf,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport {\n  Feature,\n  getEnv,\n  getSession,\n  isSelectionContainer,\n} from '@jbrowse/core/util'\nimport { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\n\n// locals\nimport { getNiceDomain } from '../util'\nimport { lazy } from 'react'\n\n// lazies\nconst SetMinMaxDialog = lazy(() => import('./SetMinMaxDialog'))\n\n/**\n * #stateModel SharedWiggleMixin\n */\nexport default function SharedWiggleMixin(\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        selectedRendering: types.optional(types.string, ''),\n        /**\n         * #property\n         */\n        resolution: types.optional(types.number, 1),\n        /**\n         * #property\n         */\n        fill: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        minSize: types.maybe(types.number),\n        /**\n         * #property\n         */\n        color: types.maybe(types.string),\n        /**\n         * #property\n         */\n        posColor: types.maybe(types.string),\n        /**\n         * #property\n         */\n        negColor: types.maybe(types.string),\n        /**\n         * #property\n         */\n        summaryScoreMode: types.maybe(types.string),\n        /**\n         * #property\n         */\n        rendererTypeNameState: types.maybe(types.string),\n        /**\n         * #property\n         */\n        scale: types.maybe(types.string),\n        /**\n         * #property\n         */\n        autoscale: types.maybe(types.string),\n        /**\n         * #property\n         */\n        displayCrossHatches: types.maybe(types.boolean),\n        /**\n         * #property\n         */\n        constraints: types.optional(\n          types.model({\n            max: types.maybe(types.number),\n            min: types.maybe(types.number),\n          }),\n          {},\n        ),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n    .volatile(() => ({\n      message: undefined as undefined | string,\n      stats: undefined as { scoreMin: number; scoreMax: number } | undefined,\n      statsFetchInProgress: undefined as undefined | AbortController,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      updateQuantitativeStats(stats: { scoreMin: number; scoreMax: number }) {\n        const { scoreMin, scoreMax } = stats\n        const EPSILON = 0.000001\n        if (!self.stats) {\n          self.stats = { scoreMin, scoreMax }\n        } else if (\n          Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||\n          Math.abs(self.stats.scoreMin - scoreMin) > EPSILON\n        ) {\n          self.stats = { scoreMin, scoreMax }\n        }\n      },\n      /**\n       * #action\n       */\n      setColor(color?: string) {\n        self.color = color\n      },\n      /**\n       * #action\n       */\n      setPosColor(color?: string) {\n        self.posColor = color\n      },\n      /**\n       * #action\n       */\n      setNegColor(color?: string) {\n        self.negColor = color\n      },\n\n      /**\n       * #action\n       */\n      setLoading(aborter: AbortController) {\n        const { statsFetchInProgress: statsFetch } = self\n        if (statsFetch !== undefined && !statsFetch.signal.aborted) {\n          statsFetch.abort()\n        }\n        self.statsFetchInProgress = aborter\n      },\n\n      /**\n       * #action\n       * this overrides the BaseLinearDisplayModel to avoid popping up a\n       * feature detail display, but still sets the feature selection on the\n       * model so listeners can detect a click\n       */\n      selectFeature(feature: Feature) {\n        const session = getSession(self)\n        if (isSelectionContainer(session)) {\n          session.setSelection(feature)\n        }\n      },\n\n      /**\n       * #action\n       */\n      setResolution(res: number) {\n        self.resolution = res\n      },\n\n      /**\n       * #action\n       */\n      setFill(fill: number) {\n        if (fill === 0) {\n          self.fill = true\n          self.minSize = 0\n        } else if (fill === 1) {\n          self.fill = false\n          self.minSize = 1\n        } else if (fill === 2) {\n          self.fill = false\n          self.minSize = 2\n        }\n      },\n\n      /**\n       * #action\n       */\n      toggleLogScale() {\n        self.scale = self.scale === 'log' ? 'linear' : 'log'\n      },\n\n      /**\n       * #action\n       */\n      setScaleType(scale?: string) {\n        self.scale = scale\n      },\n\n      /**\n       * #action\n       */\n      setSummaryScoreMode(val: string) {\n        self.summaryScoreMode = val\n      },\n\n      /**\n       * #action\n       */\n      setAutoscale(val: string) {\n        self.autoscale = val\n      },\n\n      /**\n       * #action\n       */\n      setMaxScore(val?: number) {\n        self.constraints.max = val\n      },\n\n      /**\n       * #action\n       */\n      setRendererType(val: string) {\n        self.rendererTypeNameState = val\n      },\n\n      /**\n       * #action\n       */\n      setMinScore(val?: number) {\n        self.constraints.min = val\n      },\n\n      /**\n       * #action\n       */\n      toggleCrossHatches() {\n        self.displayCrossHatches = !self.displayCrossHatches\n      },\n\n      /**\n       * #action\n       */\n      setCrossHatches(cross: boolean) {\n        self.displayCrossHatches = cross\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get adapterTypeName() {\n        return self.adapterConfig.type\n      },\n\n      /**\n       * #getter\n       */\n      get rendererTypeNameSimple() {\n        return self.rendererTypeNameState ?? getConf(self, 'defaultRendering')\n      },\n\n      /**\n       * #getter\n       * subclasses can define these, as snpcoverage track does\n       */\n      get filters() {\n        return undefined\n      },\n\n      /**\n       * #getter\n       */\n      get scaleType() {\n        return self.scale ?? getConf(self, 'scaleType')\n      },\n\n      /**\n       * #getter\n       */\n      get maxScore() {\n        return self.constraints.max ?? getConf(self, 'maxScore')\n      },\n\n      /**\n       * #getter\n       */\n      get minScore() {\n        return self.constraints.min ?? getConf(self, 'minScore')\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get adapterCapabilities() {\n        const type = self.adapterTypeName\n        const { pluginManager } = getEnv(self)\n        return pluginManager.getAdapterType(type)!.adapterCapabilities\n      },\n      /**\n       * #getter\n       */\n      get rendererConfig() {\n        const {\n          color,\n          displayCrossHatches,\n          fill,\n          minSize,\n          negColor,\n          posColor,\n          summaryScoreMode,\n          scaleType,\n          rendererTypeName,\n        } = self\n        const configBlob = getConf(self, ['renderers', rendererTypeName]) || {}\n        return self.rendererType.configSchema.create(\n          {\n            ...configBlob,\n            ...(scaleType ? { scaleType } : {}),\n            ...(fill !== undefined ? { filled: fill } : {}),\n            ...(displayCrossHatches !== undefined\n              ? { displayCrossHatches }\n              : {}),\n            ...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),\n            ...(color !== undefined ? { color } : {}),\n            ...(negColor !== undefined ? { negColor } : {}),\n            ...(posColor !== undefined ? { posColor } : {}),\n            ...(minSize !== undefined ? { minSize } : {}),\n          },\n          getEnv(self),\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get autoscaleType() {\n        return self.autoscale ?? getConf(self, 'autoscale')\n      },\n    }))\n    .views(self => {\n      let oldDomain: [number, number] = [0, 0]\n      return {\n        /**\n         * #getter\n         */\n        get domain() {\n          const { stats, scaleType, minScore, maxScore } = self\n          if (!stats) {\n            return undefined\n          }\n\n          const ret = getNiceDomain({\n            domain: [stats.scoreMin, stats.scoreMax],\n            bounds: [minScore, maxScore],\n            scaleType,\n          })\n\n          // avoid weird scalebar if log value and empty region displayed\n          if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {\n            return [0, Number.MIN_VALUE]\n          }\n\n          // avoid returning a new object if it matches the old value\n          if (JSON.stringify(oldDomain) !== JSON.stringify(ret)) {\n            oldDomain = ret\n          }\n\n          return oldDomain\n        },\n      }\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get filled(): boolean {\n        const { fill, rendererConfig } = self\n        return fill ?? readConfObject(rendererConfig, 'filled')\n      },\n      /**\n       * #getter\n       */\n      get summaryScoreModeSetting(): string {\n        const { summaryScoreMode: mode, rendererConfig } = self\n        return mode ?? readConfObject(rendererConfig, 'summaryScoreMode')\n      },\n\n      /**\n       * #getter\n       */\n      get scaleOpts() {\n        return {\n          domain: self.domain,\n          stats: self.stats,\n          autoscaleType: self.autoscaleType,\n          scaleType: self.scaleType,\n          inverted: getConf(self, 'inverted'),\n        }\n      },\n\n      /**\n       * #getter\n       */\n      get canHaveFill() {\n        return self.rendererTypeName === 'XYPlotRenderer'\n      },\n\n      /**\n       * #getter\n       */\n      get displayCrossHatchesSetting(): boolean {\n        const { displayCrossHatches: hatches, rendererConfig } = self\n        return hatches ?? readConfObject(rendererConfig, 'displayCrossHatches')\n      },\n      /**\n       * #getter\n       */\n      get hasResolution() {\n        return self.adapterCapabilities.includes('hasResolution')\n      },\n\n      /**\n       * #getter\n       */\n      get hasGlobalStats() {\n        return self.adapterCapabilities.includes('hasGlobalStats')\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      scoreTrackMenuItems() {\n        return [\n          ...(self.hasResolution\n            ? [\n                {\n                  label: 'Resolution',\n                  subMenu: [\n                    {\n                      label: 'Finer resolution',\n                      onClick: () => {\n                        self.setResolution(self.resolution * 5)\n                      },\n                    },\n                    {\n                      label: 'Coarser resolution',\n                      onClick: () => {\n                        self.setResolution(self.resolution / 5)\n                      },\n                    },\n                  ],\n                },\n                {\n                  label: 'Summary score mode',\n                  subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({\n                    label: elt,\n                    type: 'radio',\n                    checked: self.summaryScoreModeSetting === elt,\n                    onClick: () => {\n                      self.setSummaryScoreMode(elt)\n                    },\n                  })),\n                },\n              ]\n            : []),\n          {\n            label:\n              self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',\n            onClick: () => {\n              self.toggleLogScale()\n            },\n          },\n          {\n            label: 'Autoscale type',\n            subMenu: [\n              ['local', 'Local'],\n              ...(self.hasGlobalStats\n                ? ([\n                    ['global', 'Global'],\n                    ['globalsd', 'Global ± 3σ'],\n                  ] as const)\n                : []),\n              ['localsd', 'Local ± 3σ'],\n            ].map(([val, label]) => ({\n              label,\n              type: 'radio',\n              checked: self.autoscaleType === val,\n              onClick: () => {\n                self.setAutoscale(val)\n              },\n            })),\n          },\n          {\n            label: 'Set min/max score',\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                SetMinMaxDialog,\n                { model: self, handleClose },\n              ])\n            },\n          },\n        ]\n      },\n    }))\n    .actions(self => {\n      const { reload: superReload } = self\n      return {\n        /**\n         * #action\n         */\n        async reload() {\n          self.setError()\n          superReload()\n        },\n      }\n    })\n}\n","import { lazy } from 'react'\nimport {\n  AnyConfigurationSchemaType,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { AnyReactComponentType, getSession } from '@jbrowse/core/util'\nimport { types, Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { axisPropsFromTickScale } from 'react-d3-axis-mod'\nimport { ExportSvgDisplayOptions } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { getScale, YSCALEBAR_LABEL_OFFSET } from '../../util'\nimport SharedWiggleMixin from '../../shared/modelShared'\n\n// lazies\nconst Tooltip = lazy(() => import('../components/Tooltip'))\nconst SetColorDialog = lazy(() => import('../components/SetColorDialog'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([\n  ['xyplot', 'XYPlotRenderer'],\n  ['density', 'DensityRenderer'],\n  ['line', 'LinePlotRenderer'],\n])\n\n/**\n * #stateModel LinearWiggleDisplay\n * extends\n * - [SharedWiggleMixin](../sharedwigglemixin)\n */\nfunction stateModelFactory(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'LinearWiggleDisplay',\n      SharedWiggleMixin(configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearWiggleDisplay'),\n      }),\n    )\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get TooltipComponent() {\n        return Tooltip as AnyReactComponentType\n      },\n\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        const name = self.rendererTypeNameSimple\n        const rendererType = rendererTypes.get(name)\n        if (!rendererType) {\n          throw new Error(`unknown renderer ${name}`)\n        }\n        return rendererType\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get ticks() {\n        const { scaleType, domain, height } = self\n        const minimalTicks = getConf(self, 'minimalTicks')\n        const inverted = getConf(self, 'inverted')\n        const range = [height - YSCALEBAR_LABEL_OFFSET, YSCALEBAR_LABEL_OFFSET]\n        if (!domain) {\n          return undefined\n        }\n        const scale = getScale({\n          scaleType,\n          domain,\n          range,\n          inverted,\n        })\n        const ticks = axisPropsFromTickScale(scale, 4)\n        return height < 100 || minimalTicks\n          ? { ...ticks, values: domain }\n          : ticks\n      },\n    }))\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          const superProps = superRenderProps()\n          const { filters, ticks, height, resolution, scaleOpts } = self\n          return {\n            ...superProps,\n            notReady: superProps.notReady || !self.stats,\n            rpcDriverName: self.rpcDriverName,\n            displayModel: self,\n            config: self.rendererConfig,\n            displayCrossHatches: self.displayCrossHatchesSetting,\n            scaleOpts,\n            resolution,\n            height,\n            ticks,\n            filters,\n          }\n        },\n\n        /**\n         * #getter\n         */\n        get needsScalebar() {\n          const { rendererTypeName: type } = self\n          return type === 'XYPlotRenderer' || type === 'LinePlotRenderer'\n        },\n        /**\n         * #getter\n         */\n        get fillSetting() {\n          if (self.filled) {\n            return 0\n          } else if (self.minSize === 1) {\n            return 1\n          } else {\n            return 2\n          }\n        },\n      }\n    })\n    .views(self => {\n      const { trackMenuItems: superTrackMenuItems } = self\n      const hasRenderings = getConf(self, 'defaultRendering')\n      return {\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Score',\n              subMenu: self.scoreTrackMenuItems(),\n            },\n\n            ...(self.canHaveFill\n              ? [\n                  {\n                    label: 'Fill mode',\n                    subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(\n                      (elt, idx) => ({\n                        label: elt,\n                        type: 'radio',\n                        checked: self.fillSetting === idx,\n                        onClick: () => {\n                          self.setFill(idx)\n                        },\n                      }),\n                    ),\n                  },\n                ]\n              : []),\n\n            ...(self.needsScalebar\n              ? [\n                  {\n                    type: 'checkbox',\n                    label: 'Draw cross hatches',\n                    checked: self.displayCrossHatchesSetting,\n                    onClick: () => {\n                      self.toggleCrossHatches()\n                    },\n                  },\n                ]\n              : []),\n\n            ...(hasRenderings\n              ? [\n                  {\n                    label: 'Renderer type',\n                    subMenu: ['xyplot', 'density', 'line'].map(key => ({\n                      label: key,\n                      type: 'radio',\n                      checked: self.rendererTypeNameSimple === key,\n                      onClick: () => {\n                        self.setRendererType(key)\n                      },\n                    })),\n                  },\n                ]\n              : []),\n\n            {\n              label: 'Set color',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  SetColorDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n      }\n    })\n    .actions(self => {\n      const { renderSvg: superRenderSvg } = self\n\n      return {\n        afterAttach() {\n          // eslint-disable-next-line @typescript-eslint/no-floating-promises\n          ;(async () => {\n            const { quantitativeStatsAutorun } = await import('../../util')\n            quantitativeStatsAutorun(self)\n          })()\n        },\n        /**\n         * #action\n         */\n        async renderSvg(opts: ExportSvgDisplayOptions) {\n          const { renderSvg } = await import('./renderSvg')\n          return renderSvg(self, opts, superRenderSvg)\n        },\n      }\n    })\n}\n\nexport type WiggleDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type WiggleDisplayModel = Instance<WiggleDisplayStateModel>\n\nexport default stateModelFactory\n","import { lazy } from 'react'\nimport { addDisposer, isAlive, types, Instance } from 'mobx-state-tree'\nimport { autorun } from 'mobx'\nimport { axisPropsFromTickScale } from 'react-d3-axis-mod'\nimport deepEqual from 'fast-deep-equal'\n\n// jbrowse imports\nimport {\n  AnyConfigurationSchemaType,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { getSession, Feature, AnyReactComponentType } from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { set1 as colors } from '@jbrowse/core/ui/colors'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ExportSvgDisplayOptions } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { getScale, YSCALEBAR_LABEL_OFFSET } from '../../util'\nimport SharedWiggleMixin from '../../shared/modelShared'\n\nconst randomColor = () =>\n  '#000000'.replaceAll('0', () => (~~(Math.random() * 16)).toString(16))\n\n// lazies\nconst Tooltip = lazy(() => import('../components/Tooltip'))\nconst SetColorDialog = lazy(() => import('../components/SetColorDialog'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([\n  ['xyplot', 'MultiXYPlotRenderer'],\n  ['multirowxy', 'MultiRowXYPlotRenderer'],\n  ['multirowdensity', 'MultiDensityRenderer'],\n  ['multiline', 'MultiLineRenderer'],\n  ['multirowline', 'MultiRowLineRenderer'],\n])\n\ninterface Source {\n  name: string\n  color?: string\n  group?: string\n}\n\n/**\n * #stateModel MultiLinearWiggleDisplay\n * extends\n * - [SharedWiggleMixin](../sharedwigglemixin)\n */\nexport function stateModelFactory(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'MultiLinearWiggleDisplay',\n      SharedWiggleMixin(configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('MultiLinearWiggleDisplay'),\n\n        /**\n         * #property\n         */\n        layout: types.optional(types.frozen<Source[]>(), []),\n      }),\n    )\n    .volatile(() => ({\n      featureUnderMouseVolatile: undefined as Feature | undefined,\n      sourcesVolatile: undefined as Source[] | undefined,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setLayout(layout: Source[]) {\n        self.layout = layout\n      },\n      /**\n       * #action\n       */\n      clearLayout() {\n        self.layout = []\n      },\n\n      /**\n       * #action\n       */\n      setSources(sources: Source[]) {\n        if (!deepEqual(sources, self.sourcesVolatile)) {\n          self.sourcesVolatile = sources\n        }\n      },\n\n      /**\n       * #action\n       */\n      setFeatureUnderMouse(f?: Feature) {\n        self.featureUnderMouseVolatile = f\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get featureUnderMouse() {\n        return self.featureUnderMouseVolatile\n      },\n      /**\n       * #getter\n       */\n      get TooltipComponent() {\n        return Tooltip as AnyReactComponentType\n      },\n\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        const name = self.rendererTypeNameSimple\n        const rendererType = rendererTypes.get(name)\n        if (!rendererType) {\n          throw new Error(`unknown renderer ${name}`)\n        }\n        return rendererType\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get needsScalebar() {\n        return (\n          self.rendererTypeName === 'MultiXYPlotRenderer' ||\n          self.rendererTypeName === 'MultiRowXYPlotRenderer' ||\n          self.rendererTypeName === 'MultiLineRenderer' ||\n          self.rendererTypeName === 'MultiRowLineRenderer'\n        )\n      },\n      /**\n       * #getter\n       */\n      get needsFullHeightScalebar() {\n        return (\n          self.rendererTypeName === 'MultiXYPlotRenderer' ||\n          self.rendererTypeName === 'MultiLineRenderer'\n        )\n      },\n      /**\n       * #getter\n       */\n      get isMultiRow() {\n        return (\n          self.rendererTypeName === 'MultiRowXYPlotRenderer' ||\n          self.rendererTypeName === 'MultiRowLineRenderer' ||\n          self.rendererTypeName === 'MultiDensityRenderer'\n        )\n      },\n      /**\n       * #getter\n       * can be used to give it a \"color scale\" like a R heatmap, not\n       * implemented like this yet but flag can be used for this\n       */\n      get needsCustomLegend() {\n        return self.rendererTypeName === 'MultiDensityRenderer'\n      },\n\n      get canHaveFill() {\n        return (\n          self.rendererTypeName === 'MultiXYPlotRenderer' ||\n          self.rendererTypeName === 'MultiRowXYPlotRenderer'\n        )\n      },\n      /**\n       * #getter\n       * the multirowxy and multiline don't need to use colors on the legend\n       * boxes since their track is drawn with the color. sort of a stylistic\n       * choice\n       */\n      get renderColorBoxes() {\n        return !(\n          self.rendererTypeName === 'MultiRowLineRenderer' ||\n          self.rendererTypeName === 'MultiRowXYPlotRenderer'\n        )\n      },\n      /**\n       * #getter\n       * positions multi-row below the tracklabel even if using overlap\n       * tracklabels for everything else\n       */\n      get prefersOffset() {\n        return this.isMultiRow\n      },\n      /**\n       * #getter\n       */\n      get sources() {\n        const sources = Object.fromEntries(\n          self.sourcesVolatile?.map(s => [s.name, s]) || [],\n        )\n        const iter = self.layout.length ? self.layout : self.sourcesVolatile\n        return iter\n          ?.map(s => ({\n            ...sources[s.name],\n            ...s,\n          }))\n          .map((s, i) => ({\n            ...s,\n            color:\n              s.color ||\n              (!this.isMultiRow ? colors[i] || randomColor() : 'blue'),\n          }))\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rowHeight() {\n        const { sources, height, isMultiRow } = self\n        return isMultiRow ? height / (sources?.length || 1) : height\n      },\n      /**\n       * #getter\n       */\n      get rowHeightTooSmallForScalebar() {\n        return this.rowHeight < 70\n      },\n\n      /**\n       * #getter\n       */\n      get useMinimalTicks() {\n        return (\n          getConf(self, 'minimalTicks') || this.rowHeightTooSmallForScalebar\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get ticks() {\n        const { scaleType, domain, isMultiRow, rowHeight, useMinimalTicks } =\n          self\n\n        if (!domain) {\n          return undefined\n        }\n\n        const offset = isMultiRow ? 0 : YSCALEBAR_LABEL_OFFSET\n        const ticks = axisPropsFromTickScale(\n          getScale({\n            scaleType,\n            domain,\n            range: [rowHeight - offset, offset],\n            inverted: getConf(self, 'inverted') as boolean,\n          }),\n          4,\n        )\n        return useMinimalTicks ? { ...ticks, values: domain } : ticks\n      },\n\n      /**\n       * #getter\n       */\n      get colors() {\n        return [\n          'red',\n          'blue',\n          'green',\n          'orange',\n          'purple',\n          'cyan',\n          'pink',\n          'darkblue',\n          'darkred',\n          'pink',\n        ]\n      },\n    }))\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          const superProps = superRenderProps()\n          const {\n            displayCrossHatches,\n            filters,\n            height,\n            resolution,\n            rpcDriverName,\n            scaleOpts,\n            stats,\n            sources,\n            ticks,\n            rendererConfig: config,\n          } = self\n          return {\n            ...superProps,\n            notReady: superProps.notReady || !sources || !stats,\n            displayModel: self,\n            config,\n            displayCrossHatches,\n            filters,\n            height,\n            resolution,\n            rpcDriverName,\n            scaleOpts,\n            sources,\n            ticks,\n            onMouseMove: (_: unknown, f: Feature) => {\n              self.setFeatureUnderMouse(f)\n            },\n            onMouseLeave: () => {\n              self.setFeatureUnderMouse(undefined)\n            },\n          }\n        },\n\n        /**\n         * #getter\n         */\n        get hasResolution() {\n          return self.adapterCapabilities.includes('hasResolution')\n        },\n\n        /**\n         * #getter\n         */\n        get hasGlobalStats() {\n          return self.adapterCapabilities.includes('hasGlobalStats')\n        },\n\n        /**\n         * #getter\n         */\n        get fillSetting() {\n          if (self.filled) {\n            return 0\n          } else if (self.minSize === 1) {\n            return 1\n          } else {\n            return 2\n          }\n        },\n      }\n    })\n    .views(self => {\n      const { trackMenuItems: superTrackMenuItems } = self\n      const hasRenderings = getConf(self, 'defaultRendering')\n      return {\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Score',\n              subMenu: self.scoreTrackMenuItems(),\n            },\n\n            ...(self.canHaveFill\n              ? [\n                  {\n                    label: 'Fill mode',\n                    subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(\n                      (elt, idx) => ({\n                        label: elt,\n                        type: 'radio',\n                        checked: self.fillSetting === idx,\n                        onClick: () => {\n                          self.setFill(idx)\n                        },\n                      }),\n                    ),\n                  },\n                ]\n              : []),\n\n            ...(self.needsScalebar\n              ? [\n                  {\n                    type: 'checkbox',\n                    label: 'Draw cross hatches',\n                    checked: self.displayCrossHatchesSetting,\n                    onClick: () => {\n                      self.toggleCrossHatches()\n                    },\n                  },\n                ]\n              : []),\n            ...(hasRenderings\n              ? [\n                  {\n                    label: 'Renderer type',\n                    subMenu: [\n                      'xyplot',\n                      'multirowxy',\n                      'multirowdensity',\n                      'multiline',\n                      'multirowline',\n                    ].map(key => ({\n                      label: key,\n                      type: 'radio',\n                      checked: self.rendererTypeNameSimple === key,\n                      onClick: () => {\n                        self.setRendererType(key)\n                      },\n                    })),\n                  },\n                ]\n              : []),\n\n            {\n              label: 'Edit colors/arrangement...',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  SetColorDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n      }\n    })\n    .actions(self => {\n      const { renderSvg: superRenderSvg } = self\n      return {\n        afterAttach() {\n          // eslint-disable-next-line @typescript-eslint/no-floating-promises\n          ;(async () => {\n            const { quantitativeStatsAutorun } = await import('../../util')\n            quantitativeStatsAutorun(self)\n            addDisposer(\n              self,\n              autorun(async () => {\n                const { rpcManager } = getSession(self)\n                const { adapterConfig } = self\n                const sessionId = getRpcSessionId(self)\n                const sources = (await rpcManager.call(\n                  sessionId,\n                  'MultiWiggleGetSources',\n                  {\n                    sessionId,\n                    adapterConfig,\n                  },\n                )) as Source[]\n                if (isAlive(self)) {\n                  self.setSources(sources)\n                }\n              }),\n            )\n          })()\n        },\n\n        /**\n         * #action\n         */\n        async renderSvg(opts: ExportSvgDisplayOptions) {\n          const { renderSvg } = await import('./renderSvg')\n          return renderSvg(self, opts, superRenderSvg)\n        },\n      }\n    })\n}\n\nexport type WiggleDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type WiggleDisplayModel = Instance<WiggleDisplayStateModel>\n\nexport default stateModelFactory\n","import { observer } from 'mobx-react'\nimport React, { useRef } from 'react'\n\nimport { Region } from '@jbrowse/core/util/types'\nimport { SimpleFeature, Feature } from '@jbrowse/core/util'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { Source } from './util'\n\nconst MultiWiggleRendering = observer(function (props: {\n  regions: Region[]\n  features: Map<string, Feature>\n  bpPerPx: number\n  width: number\n  height: number\n  blockKey: string\n  sources: Source[]\n  displayModel?: { isMultiRow: boolean }\n  onMouseLeave?: (event: React.MouseEvent) => void\n  onMouseMove?: (event: React.MouseEvent, arg?: Feature) => void\n  onFeatureClick?: (event: React.MouseEvent, arg?: Feature) => void\n}) {\n  const {\n    regions,\n    features,\n    bpPerPx,\n    width,\n    height,\n    sources,\n    onMouseLeave = () => {},\n    onMouseMove = () => {},\n    onFeatureClick = () => {},\n    displayModel,\n  } = props\n  const region = regions[0]!\n  const ref = useRef<HTMLDivElement>(null)\n  const { isMultiRow } = displayModel || {}\n\n  function getFeatureUnderMouse(eventClientX: number, eventClientY: number) {\n    if (!ref.current) {\n      return\n    }\n    const rect = ref.current.getBoundingClientRect()\n    const offsetX = eventClientX - rect.left\n    const offsetY = eventClientY - rect.top\n    const source = sources[Math.floor((offsetY / height) * sources.length)]\n    if (!source) {\n      return\n    }\n    const px = region.reversed ? width - offsetX : offsetX\n    const mouseoverBp = region.start + bpPerPx * px\n    let featureUnderMouse: Feature | undefined\n    if (isMultiRow) {\n      for (const feature of features.values()) {\n        if (feature.get('source') !== source.name) {\n          continue\n        }\n        if (\n          mouseoverBp <= feature.get('end') + bpPerPx &&\n          mouseoverBp >= feature.get('start')\n        ) {\n          featureUnderMouse = feature\n          break\n        }\n      }\n    } else {\n      const featuresUnderMouse = []\n      for (const feature of features.values()) {\n        if (\n          mouseoverBp <= feature.get('end') + bpPerPx &&\n          mouseoverBp >= feature.get('start')\n        ) {\n          featuresUnderMouse.push(feature)\n        }\n      }\n\n      if (featuresUnderMouse.length) {\n        const pos = Math.floor(mouseoverBp)\n        featureUnderMouse = new SimpleFeature({\n          uniqueId: 'mouseoverfeat',\n          sources: Object.fromEntries(\n            featuresUnderMouse\n              .map(f => f.toJSON())\n              .map(f => {\n                const { refName, start, end, source, ...rest } = f\n                return [source, rest]\n              }),\n          ),\n          ...region,\n          start: pos,\n          end: pos + 1,\n        })\n      }\n    }\n    return featureUnderMouse\n  }\n\n  return (\n    <div\n      ref={ref}\n      onMouseMove={event => {\n        const { clientX, clientY } = event\n        const featureUnderMouse = getFeatureUnderMouse(clientX, clientY)\n        onMouseMove(event, featureUnderMouse)\n      }}\n      onClick={event => {\n        const { clientX, clientY } = event\n        const featureUnderMouse = getFeatureUnderMouse(clientX, clientY)\n        onFeatureClick(event, featureUnderMouse)\n      }}\n      onMouseLeave={event => {\n        onMouseLeave(event)\n      }}\n      style={{\n        overflow: 'visible',\n        position: 'relative',\n        height,\n      }}\n    >\n      <PrerenderedCanvas {...props} />\n    </div>\n  )\n})\n\nexport default MultiWiggleRendering\n","import { groupBy, Feature } from '@jbrowse/core/util'\nimport { drawXY } from '../drawXY'\nimport { YSCALEBAR_LABEL_OFFSET } from '../util'\n\nimport WiggleBaseRenderer, {\n  MultiRenderArgsDeserialized as MultiArgs,\n} from '../WiggleBaseRenderer'\n\nexport default class MultiXYPlotRenderer extends WiggleBaseRenderer {\n  // @ts-expect-error\n  async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {\n    const { sources, features } = props\n    const groups = groupBy(features.values(), f => f.get('source'))\n    let feats = [] as Feature[]\n    for (const source of sources) {\n      const features = groups[source.name] || []\n      const { reducedFeatures } = drawXY(ctx, {\n        ...props,\n        features,\n        offset: YSCALEBAR_LABEL_OFFSET,\n        colorCallback: () => source.color || 'blue',\n      })\n      feats = feats.concat(reducedFeatures)\n    }\n    return { reducedFeatures: feats }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config MultiXYPlotRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'MultiXYPlotRenderer',\n  {\n    /**\n     * #slot\n     */\n    filled: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    summaryScoreMode: {\n      type: 'stringEnum',\n      model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),\n      description:\n        'choose whether to use max/min/average or whiskers which combines all three into the same rendering',\n      defaultValue: 'avg',\n    },\n    /**\n     * #slot\n     */\n    minSize: {\n      type: 'number',\n      defaultValue: 0,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\nexport default configSchema\n","import { groupBy, Feature } from '@jbrowse/core/util'\nimport { drawXY } from '../drawXY'\n\nimport WiggleBaseRenderer, {\n  MultiRenderArgsDeserialized as MultiArgs,\n} from '../WiggleBaseRenderer'\n\nexport default class MultiXYPlotRenderer extends WiggleBaseRenderer {\n  // @ts-expect-error\n  async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {\n    const { bpPerPx, sources, regions, features } = props\n    const region = regions[0]!\n    const groups = groupBy(features.values(), f => f.get('source'))\n    const height = props.height / sources.length\n    const width = (region.end - region.start) / bpPerPx\n    let feats = [] as Feature[]\n    ctx.save()\n    sources.forEach(source => {\n      const { reducedFeatures } = drawXY(ctx, {\n        ...props,\n        features: groups[source.name] || [],\n        height,\n        colorCallback: () => source.color || 'blue',\n      })\n      ctx.strokeStyle = 'rgba(200,200,200,0.8)'\n      ctx.beginPath()\n      ctx.moveTo(0, height)\n      ctx.lineTo(width, height)\n      ctx.stroke()\n      ctx.translate(0, height)\n      feats = feats.concat(reducedFeatures)\n    })\n    ctx.restore()\n    return { reducedFeatures: feats }\n  }\n}\n","import { types } from 'mobx-state-tree'\n\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config MultiRowXYPlotRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'MultiRowXYPlotRenderer',\n  {\n    /**\n     * #slot\n     */\n    filled: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    summaryScoreMode: {\n      type: 'stringEnum',\n      model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),\n      description:\n        'choose whether to use max/min/average or whiskers which combines all three into the same rendering',\n      defaultValue: 'whiskers',\n    },\n    /**\n     * #slot\n     */\n    minSize: {\n      type: 'number',\n      defaultValue: 0,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config MultiDensityRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'MultiDensityRenderer',\n  {},\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import { groupBy, Feature } from '@jbrowse/core/util'\nimport WiggleBaseRenderer, {\n  MultiRenderArgsDeserialized as MultiArgs,\n} from '../WiggleBaseRenderer'\nimport { drawDensity } from '../drawDensity'\n\nexport default class MultiXYPlotRenderer extends WiggleBaseRenderer {\n  // @ts-expect-error\n  async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {\n    const { sources, features } = props\n    const groups = groupBy(features.values(), f => f.get('source'))\n    const height = props.height / sources.length\n    let feats = [] as Feature[]\n    ctx.save()\n    sources.forEach(source => {\n      const features = groups[source.name] || []\n      const { reducedFeatures } = drawDensity(ctx, {\n        ...props,\n        features,\n        height,\n      })\n      ctx.translate(0, height)\n      feats = feats.concat(reducedFeatures)\n    })\n    ctx.restore()\n    return { reducedFeatures: feats }\n  }\n}\n","import { groupBy, Feature } from '@jbrowse/core/util'\nimport { drawLine } from '../drawLine'\n\nimport WiggleBaseRenderer, {\n  MultiRenderArgsDeserialized as MultiArgs,\n} from '../WiggleBaseRenderer'\n\nexport default class MultiLineRenderer extends WiggleBaseRenderer {\n  // @ts-expect-error\n  async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {\n    const { sources, features } = props\n    const groups = groupBy(features.values(), f => f.get('source'))\n    let feats = [] as Feature[]\n    sources.forEach(source => {\n      const { reducedFeatures } = drawLine(ctx, {\n        ...props,\n        features: groups[source.name] || [],\n        colorCallback: () => source.color || 'blue',\n      })\n      feats = feats.concat(reducedFeatures)\n    })\n    return { reducedFeatures: feats }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n/**\n * #config MultiLineRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'MultiLineRenderer',\n  {\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    summaryScoreMode: {\n      type: 'stringEnum',\n      model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),\n      description:\n        'choose whether to use max/min/average or whiskers which combines all three into the same rendering',\n      defaultValue: 'avg',\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\nexport default configSchema\n","import { groupBy, Feature } from '@jbrowse/core/util'\nimport { drawLine } from '../drawLine'\n\nimport WiggleBaseRenderer, {\n  MultiRenderArgsDeserialized as MultiArgs,\n} from '../WiggleBaseRenderer'\n\nexport default class MultiRowLineRenderer extends WiggleBaseRenderer {\n  // @ts-expect-error\n  async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {\n    const { bpPerPx, sources, regions, features } = props\n    const region = regions[0]!\n    const groups = groupBy(features.values(), f => f.get('source'))\n    const height = props.height / sources.length\n    const width = (region.end - region.start) / bpPerPx\n    let feats = [] as Feature[]\n    ctx.save()\n    sources.forEach(source => {\n      const { reducedFeatures } = drawLine(ctx, {\n        ...props,\n        features: groups[source.name] || [],\n        height,\n        colorCallback: () => source.color || 'blue',\n      })\n      ctx.strokeStyle = 'rgba(200,200,200,0.8)'\n      ctx.beginPath()\n      ctx.moveTo(0, height)\n      ctx.lineTo(width, height)\n      ctx.stroke()\n      ctx.translate(0, height)\n      feats = feats.concat(reducedFeatures)\n    })\n    ctx.restore()\n    return { reducedFeatures: feats }\n  }\n}\n","import { types } from 'mobx-state-tree'\n\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport baseWiggleRendererConfigSchema from '../configSchema'\n\n/**\n * #config MultiRowLineRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'MultiRowLineRenderer',\n  {\n    /**\n     * #slot\n     */\n    displayCrossHatches: {\n      type: 'boolean',\n      description: 'choose to draw cross hatches (sideways lines)',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    summaryScoreMode: {\n      type: 'stringEnum',\n      model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),\n      description:\n        'choose whether to use max/min/average or whiskers which combines all three into the same rendering',\n      defaultValue: 'avg',\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseWiggleRendererConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport default configSchema\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'\nimport { HierarchicalTrackSelectorModel } from '@jbrowse/plugin-data-management'\n\nconst ConfirmDialog = lazy(() => import('./ConfirmDialog'))\n\nexport default function CreateMultiWiggleExtensionF(pm: PluginManager) {\n  pm.addToExtensionPoint(\n    'TrackSelector-multiTrackMenuItems',\n    (items: unknown[], props: Record<string, unknown>) => {\n      const { session } = props\n      return [\n        ...items,\n        ...(isSessionWithAddTracks(session)\n          ? [\n              {\n                label: 'Create multi-wiggle track',\n                onClick: (model: HierarchicalTrackSelectorModel) => {\n                  const tracks = model.selection\n                  const trackIds = tracks.map(c => readConfObject(c, 'name'))\n                  function makeTrack(arg: { name: string }) {\n                    const subadapters = tracks\n                      .map(c => readConfObject(c, 'adapter'))\n                      .map((c, idx) => ({ ...c, source: trackIds[idx] }))\n                    const assemblyNames = [\n                      ...new Set(\n                        tracks.flatMap(c => readConfObject(c, 'assemblyNames')),\n                      ),\n                    ]\n                    const now = +Date.now()\n                    const trackId = `multitrack-${now}-sessionTrack`\n\n                    const session = getSession(model)\n                    if (isSessionWithAddTracks(session)) {\n                      session.addTrackConf({\n                        type: 'MultiQuantitativeTrack',\n                        trackId,\n                        name: arg.name,\n                        assemblyNames,\n                        adapter: {\n                          type: 'MultiWiggleAdapter',\n                          subadapters,\n                        },\n                      })\n                      model.view.showTrack(trackId)\n                    }\n                  }\n                  getSession(model).queueDialog(handleClose => [\n                    ConfirmDialog,\n                    {\n                      tracks,\n                      onClose: (arg: boolean, arg1?: { name: string }) => {\n                        if (arg && arg1) {\n                          makeTrack(arg1)\n                        }\n                        handleClose()\n                      },\n                    },\n                  ])\n                },\n              },\n            ]\n          : []),\n      ]\n    },\n  )\n}\n","import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'\nimport { renameRegionsIfNeeded, Region } from '@jbrowse/core/util'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nexport class MultiWiggleGetSources extends RpcMethodType {\n  name = 'MultiWiggleGetSources'\n\n  async deserializeArguments(args: any, rpcDriverClassName: string) {\n    const l = await super.deserializeArguments(args, rpcDriverClassName)\n    return {\n      ...l,\n      filters: args.filters\n        ? new SerializableFilterChain({\n            filters: args.filters,\n          })\n        : undefined,\n    }\n  }\n\n  async serializeArguments(\n    args: RenderArgs & {\n      signal?: AbortSignal\n      statusCallback?: (arg: string) => void\n    },\n    rpcDriverClassName: string,\n  ) {\n    const pm = this.pluginManager\n    const assemblyManager = pm.rootModel?.session?.assemblyManager\n    if (!assemblyManager) {\n      return args\n    }\n\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {\n      ...args,\n      filters: args.filters?.toJSON().filters,\n    })\n\n    return super.serializeArguments(renamedArgs, rpcDriverClassName)\n  }\n\n  async execute(\n    args: {\n      adapterConfig: AnyConfigurationModel\n      signal?: RemoteAbortSignal\n      sessionId: string\n      headers?: Record<string, string>\n      regions: Region[]\n      bpPerPx: number\n    },\n    rpcDriverClassName: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(\n      args,\n      rpcDriverClassName,\n    )\n    const { regions, adapterConfig, sessionId } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n\n    // @ts-expect-error\n    return dataAdapter.getSources(regions, deserializedArgs)\n  }\n}\n","import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { Region, renameRegionsIfNeeded } from '@jbrowse/core/util'\n\nexport class WiggleGetMultiRegionQuantitativeStats extends RpcMethodType {\n  name = 'WiggleGetMultiRegionQuantitativeStats'\n\n  async deserializeArguments(args: any, rpcDriverClassName: string) {\n    const l = await super.deserializeArguments(args, rpcDriverClassName)\n    return {\n      ...l,\n      filters: args.filters\n        ? new SerializableFilterChain({\n            filters: args.filters,\n          })\n        : undefined,\n    }\n  }\n\n  async serializeArguments(\n    args: RenderArgs & {\n      signal?: AbortSignal\n      statusCallback?: (arg: string) => void\n    },\n    rpcDriverClassName: string,\n  ) {\n    const pm = this.pluginManager\n    const assemblyManager = pm.rootModel?.session?.assemblyManager\n    if (!assemblyManager) {\n      return args\n    }\n\n    const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {\n      ...args,\n      filters: args.filters?.toJSON().filters,\n    })\n\n    return super.serializeArguments(renamedArgs, rpcDriverClassName)\n  }\n\n  async execute(\n    args: {\n      adapterConfig: Record<string, unknown>\n      signal?: RemoteAbortSignal\n      sessionId: string\n      headers?: Record<string, string>\n      regions: Region[]\n      bpPerPx: number\n    },\n    rpcDriverClassName: string,\n  ) {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(\n      args,\n      rpcDriverClassName,\n    )\n    const { regions, adapterConfig, sessionId } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n\n    // @ts-expect-error\n    return dataAdapter.getMultiRegionQuantitativeStats(\n      regions,\n      deserializedArgs,\n    )\n  }\n}\n","import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { QuantitativeStats } from '@jbrowse/core/util/stats'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nexport class WiggleGetGlobalQuantitativeStats extends RpcMethodType {\n  name = 'WiggleGetGlobalQuantitativeStats'\n\n  async deserializeArguments(args: any, rpcDriverClassName: string) {\n    const l = await super.deserializeArguments(args, rpcDriverClassName)\n    return {\n      ...l,\n      filters: args.filters\n        ? new SerializableFilterChain({\n            filters: args.filters,\n          })\n        : undefined,\n    }\n  }\n\n  async execute(\n    args: {\n      adapterConfig: AnyConfigurationModel\n      signal?: RemoteAbortSignal\n      headers?: Record<string, string>\n      sessionId: string\n    },\n    rpcDriverClassName: string,\n  ): Promise<QuantitativeStats> {\n    const pm = this.pluginManager\n    const deserializedArgs = await this.deserializeArguments(\n      args,\n      rpcDriverClassName,\n    )\n    const { adapterConfig, sessionId } = deserializedArgs\n    const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)\n\n    // @ts-expect-error\n    return dataAdapter.getGlobalStats(deserializedArgs)\n  }\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  AdapterGuesser,\n  TrackTypeGuesser,\n  getFileName,\n} from '@jbrowse/core/util/tracks'\n\n// locals\nimport WiggleBaseRenderer from './WiggleBaseRenderer'\n\nimport BigWigAdapterF from './BigWigAdapter'\nimport QuantitativeTrackF from './QuantitativeTrack'\nimport MultiQuantitativeTrackF from './MultiQuantitativeTrack'\nimport MultiWiggleAdapterF from './MultiWiggleAdapter'\nimport DensityRendererF from './DensityRenderer'\nimport XYPlotRendererF from './XYPlotRenderer'\nimport LinePlotRendererF from './LinePlotRenderer'\nimport LinearWiggleDisplayF from './LinearWiggleDisplay'\nimport MultiLinearWiggleDisplayF from './MultiLinearWiggleDisplay'\nimport MultiXYPlotRendererF from './MultiXYPlotRenderer'\nimport MultiRowXYPlotRendererF from './MultiRowXYPlotRenderer'\nimport MultiDensityRendererF from './MultiDensityRenderer'\nimport MultiLineRendererF from './MultiLineRenderer'\nimport MultiRowLineRendererF from './MultiRowLineRenderer'\nimport CreateMultiWiggleExtensionF from './CreateMultiWiggleExtension'\nimport MultiWiggleAddTrackWorkflowF from './MultiWiggleAddTrackWorkflow'\n\nimport * as utils from './util'\n\nimport {\n  WiggleGetGlobalQuantitativeStats,\n  WiggleGetMultiRegionQuantitativeStats,\n  MultiWiggleGetSources,\n} from './WiggleRPC/rpcMethods'\n\nimport {\n  ReactComponent as LinearWiggleDisplayReactComponent,\n  modelFactory as linearWiggleDisplayModelFactory,\n} from './LinearWiggleDisplay'\n\nimport {\n  ReactComponent as XYPlotRendererReactComponent,\n  configSchema as xyPlotRendererConfigSchema,\n  XYPlotRenderer,\n} from './XYPlotRenderer'\n\nexport default class WigglePlugin extends Plugin {\n  name = 'WigglePlugin'\n\n  install(pm: PluginManager) {\n    MultiWiggleAdapterF(pm)\n    BigWigAdapterF(pm)\n    QuantitativeTrackF(pm)\n    MultiQuantitativeTrackF(pm)\n    LinearWiggleDisplayF(pm)\n    MultiLinearWiggleDisplayF(pm)\n    LinePlotRendererF(pm)\n    XYPlotRendererF(pm)\n    DensityRendererF(pm)\n    MultiXYPlotRendererF(pm)\n    MultiRowXYPlotRendererF(pm)\n    MultiDensityRendererF(pm)\n    MultiLineRendererF(pm)\n    MultiRowLineRendererF(pm)\n    MultiWiggleAddTrackWorkflowF(pm)\n    CreateMultiWiggleExtensionF(pm)\n\n    pm.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (cb: AdapterGuesser) => {\n        return (file: FileLocation, index?: FileLocation, hint?: string) => {\n          const regexGuess = /\\.(bw|bigwig)$/i\n          const adapterName = 'BigWigAdapter'\n          const fileName = getFileName(file)\n          const obj = {\n            type: adapterName,\n            bigWigLocation: file,\n          }\n\n          if (regexGuess.test(fileName) && !hint) {\n            return obj\n          }\n          if (hint === adapterName) {\n            return obj\n          }\n\n          return cb(file, index, hint)\n        }\n      },\n    )\n    pm.addToExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (trackTypeGuesser: TrackTypeGuesser) => {\n        return (adapterName: string) => {\n          if (adapterName === 'BigWigAdapter') {\n            return 'QuantitativeTrack'\n          }\n          return trackTypeGuesser(adapterName)\n        }\n      },\n    )\n\n    pm.addRpcMethod(() => new WiggleGetGlobalQuantitativeStats(pm))\n    pm.addRpcMethod(() => new WiggleGetMultiRegionQuantitativeStats(pm))\n    pm.addRpcMethod(() => new MultiWiggleGetSources(pm))\n  }\n\n  exports = {\n    LinearWiggleDisplayReactComponent,\n    XYPlotRendererReactComponent,\n    XYPlotRenderer,\n    WiggleBaseRenderer,\n    linearWiggleDisplayModelFactory,\n    xyPlotRendererConfigSchema,\n    utils,\n  }\n}\n\nexport * from './util'\n\nexport { default as WiggleRendering } from './WiggleRendering'\nexport {\n  Tooltip,\n  ReactComponent as LinearWiggleDisplayReactComponent,\n  modelFactory as linearWiggleDisplayModelFactory,\n} from './LinearWiggleDisplay'\nexport { type TooltipContentsComponent } from './Tooltip'\n\nexport { default as WiggleBaseRenderer } from './WiggleBaseRenderer'\n","import configSchema from './configSchema'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nexport default function MultiWiggleAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'MultiWiggleAdapter',\n        displayName: 'Multi-wiggle adapter',\n        configSchema,\n        adapterCapabilities: [\n          'hasResolution',\n          'hasLocalStats',\n          'hasGlobalStats',\n        ],\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./MultiWiggleAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function BigWigAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BigWigAdapter',\n        displayName: 'BigWig adapter',\n        configSchema,\n        adapterCapabilities: [\n          'hasResolution',\n          'hasLocalStats',\n          'hasGlobalStats',\n        ],\n        getAdapterClass: () => import('./BigWigAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaF from './configSchema'\n\nexport default function QuantitativeTrackF(pluginManager: PluginManager) {\n  pluginManager.addTrackType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new TrackType({\n      name: 'QuantitativeTrack',\n      displayName: 'Quantitative track',\n      configSchema,\n      stateModel: createBaseTrackModel(\n        pluginManager,\n        'QuantitativeTrack',\n        configSchema,\n      ),\n    })\n  })\n}\n","import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaF from './configSchema'\n\nexport default function MultiQuantitativeTrackF(pluginManager: PluginManager) {\n  pluginManager.addTrackType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new TrackType({\n      name: 'MultiQuantitativeTrack',\n      displayName: 'Multi-quantitative track',\n      configSchema,\n      stateModel: createBaseTrackModel(\n        pluginManager,\n        'MultiQuantitativeTrack',\n        configSchema,\n      ),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config MultiQuantitativeTrack\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) => {\n  return ConfigurationSchema(\n    'MultiQuantitativeTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n}\n\nexport default configSchema\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport { lazy } from 'react'\n\nexport default function LinearWiggleDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    const stateModel = modelFactory(pluginManager, configSchema)\n    return new DisplayType({\n      name: 'LinearWiggleDisplay',\n      displayName: 'Wiggle display',\n      configSchema,\n      stateModel,\n      trackType: 'QuantitativeTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: lazy(() => import('./components/WiggleDisplayComponent')),\n    })\n  })\n}\n\nexport { default as Tooltip } from './components/Tooltip'\nexport { default as ReactComponent } from './components/WiggleDisplayComponent'\nexport { default as modelFactory } from './models/model'\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport sharedWiggleConfigFactory from '../../shared/configShared'\n\n/**\n * #config LinearWiggleDisplay\n * extends\n * - [SharedWiggleDisplay](../sharedwiggledisplay)\n */\nexport default function WiggleConfigFactory(pluginManager: PluginManager) {\n  const XYPlotRendererConfigSchema =\n    pluginManager.getRendererType('XYPlotRenderer')!.configSchema\n  const DensityRendererConfigSchema =\n    pluginManager.getRendererType('DensityRenderer')!.configSchema\n  const LinePlotRendererConfigSchema =\n    pluginManager.getRendererType('LinePlotRenderer')!.configSchema\n\n  return ConfigurationSchema(\n    'LinearWiggleDisplay',\n    {\n      /**\n       * #slot\n       */\n      defaultRendering: {\n        type: 'stringEnum',\n        model: types.enumeration('Rendering', ['density', 'xyplot', 'line']),\n        defaultValue: 'xyplot',\n      },\n      /**\n       * #slot\n       */\n      renderers: ConfigurationSchema('RenderersConfiguration', {\n        DensityRenderer: DensityRendererConfigSchema,\n        XYPlotRenderer: XYPlotRendererConfigSchema,\n        LinePlotRenderer: LinePlotRendererConfigSchema,\n      }),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: sharedWiggleConfigFactory(),\n      explicitlyTyped: true,\n    },\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport { lazy } from 'react'\n\nexport default function MultiLinearWiggleDisplayF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'MultiLinearWiggleDisplay',\n      displayName: 'Multi-wiggle display',\n      configSchema,\n      stateModel: modelFactory(pluginManager, configSchema),\n      trackType: 'MultiQuantitativeTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: lazy(() => import('./components/WiggleDisplayComponent')),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport sharedWiggleConfigFactory from '../../shared/configShared'\n\n/**\n * #config MultiLinearWiggleDisplay\n * extends\n * - [SharedWiggleDisplay](../sharedwiggledisplay)\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default function WiggleConfigFactory(pluginManager: PluginManager) {\n  const MultiXYPlotRendererConfigSchema = pluginManager.getRendererType(\n    'MultiXYPlotRenderer',\n  )!.configSchema\n  const MultiDensityRendererConfigSchema = pluginManager.getRendererType(\n    'MultiDensityRenderer',\n  )!.configSchema\n  const MultiRowXYPlotRendererConfigSchema = pluginManager.getRendererType(\n    'MultiRowXYPlotRenderer',\n  )!.configSchema\n  const MultiLineRendererConfigSchema =\n    pluginManager.getRendererType('MultiLineRenderer')!.configSchema\n  const MultiRowLineRendererConfigSchema = pluginManager.getRendererType(\n    'MultiRowLineRenderer',\n  )!.configSchema\n\n  return ConfigurationSchema(\n    'MultiLinearWiggleDisplay',\n    {\n      /**\n       * #slot\n       */\n      defaultRendering: {\n        type: 'stringEnum',\n        model: types.enumeration('Rendering', [\n          'multirowxy',\n          'xyplot',\n          'multirowdensity',\n          'multiline',\n          'multirowline',\n        ]),\n        defaultValue: 'multirowxy',\n      },\n\n      /**\n       * #slot\n       */\n      renderers: ConfigurationSchema('RenderersConfiguration', {\n        MultiXYPlotRenderer: MultiXYPlotRendererConfigSchema,\n        MultiDensityRenderer: MultiDensityRendererConfigSchema,\n        MultiRowXYPlotRenderer: MultiRowXYPlotRendererConfigSchema,\n        MultiLineRenderer: MultiLineRendererConfigSchema,\n        MultiRowLineRenderer: MultiRowLineRendererConfigSchema,\n      }),\n\n      /**\n       * #slot\n       */\n      height: {\n        type: 'number',\n        defaultValue: 200,\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: sharedWiggleConfigFactory(),\n      explicitlyTyped: true,\n    },\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\nimport ReactComponent from '../WiggleRendering'\nimport LinePlotRenderer from './LinePlotRenderer'\n\nexport default function LinePlotRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new LinePlotRenderer({\n        name: 'LinePlotRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import ReactComponent from '../WiggleRendering'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport XYPlotRenderer from './XYPlotRenderer'\nimport configSchema from './configSchema'\n\nexport default function XYPlotRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new XYPlotRenderer({\n        name: 'XYPlotRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n\nexport { default as XYPlotRenderer } from './XYPlotRenderer'\nexport { default as ReactComponent } from '../WiggleRendering'\nexport { default as configSchema } from './configSchema'\n","import configSchema from './configSchema'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport DensityRenderer from './DensityRenderer'\nimport ReactComponent from '../WiggleRendering'\n\nexport default function DensityRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new DensityRenderer({\n        name: 'DensityRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport ReactComponent from '../MultiWiggleRendering'\nimport MultiXYPlotRenderer from './MultiXYPlotRenderer'\nimport configSchema from './configSchema'\n\nexport default function MultiXYPlotRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new MultiXYPlotRenderer({\n        name: 'MultiXYPlotRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport ReactComponent from '../MultiWiggleRendering'\nimport MultiRowXYPlotRenderer from './MultiRowXYPlotRenderer'\nimport configSchema from './configSchema'\n\nexport default function MultiRowXYPlotRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new MultiRowXYPlotRenderer({\n        name: 'MultiRowXYPlotRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\nimport ReactComponent from '../MultiWiggleRendering'\nimport MultiDensityRenderer from './MultiDensityRenderer'\n\nexport default function MultiDensityRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new MultiDensityRenderer({\n        name: 'MultiDensityRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport ReactComponent from '../MultiWiggleRendering'\nimport MultiLineRenderer from './MultiLineRenderer'\nimport configSchema from './configSchema'\n\nexport default function MultiLineRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new MultiLineRenderer({\n        name: 'MultiLineRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport ReactComponent from '../MultiWiggleRendering'\nimport MultiRowLineRenderer from './MultiRowLineRenderer'\nimport configSchema from './configSchema'\n\nexport default function MultiRowLineRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new MultiRowLineRenderer({\n        name: 'MultiRowLineRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AddTrackWorkflowType } from '@jbrowse/core/pluggableElementTypes'\nimport { types } from 'mobx-state-tree'\n\n// locals\nimport { lazy } from 'react'\n\nexport default function MultiWiggleAddTrackWorkflowF(pm: PluginManager) {\n  pm.addAddTrackWorkflowType(\n    () =>\n      new AddTrackWorkflowType({\n        name: 'Multi-wiggle track',\n        ReactComponent: lazy(() => import('./AddTrackWorkflow')),\n        stateModel: types.model({}),\n      }),\n  )\n}\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { Axis, LEFT, RIGHT } from 'react-d3-axis-mod'\nimport type { axisPropsFromTickScale } from 'react-d3-axis-mod'\n\ntype Ticks = ReturnType<typeof axisPropsFromTickScale>\n\nconst YScaleBar = observer(function ({\n  model,\n  orientation,\n}: {\n  model: { ticks?: Ticks }\n  orientation?: string\n}) {\n  const { ticks } = model\n  const theme = useTheme()\n  return ticks ? (\n    <Axis\n      {...ticks}\n      shadow={2}\n      format={(n: number) => n}\n      style={{ orient: orientation === 'left' ? LEFT : RIGHT }}\n      bg={theme.palette.background.default}\n      fg={theme.palette.text.primary}\n    />\n  ) : null\n})\n\nexport default YScaleBar\n","import {\n  scaleLinear,\n  scaleLog,\n  scaleQuantize,\n} from '@mui/x-charts-vendor/d3-scale'\nimport { autorun } from 'mobx'\nimport {\n  isAbortException,\n  getSession,\n  getContainingView,\n} from '@jbrowse/core/util'\nimport { QuantitativeStats } from '@jbrowse/core/util/stats'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { addDisposer, isAlive } from 'mobx-state-tree'\n\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { AnyConfigurationModel, getConf } from '@jbrowse/core/configuration'\n\ntype LGV = LinearGenomeViewModel\n\nexport const YSCALEBAR_LABEL_OFFSET = 5\n\nexport interface ScaleOpts {\n  domain: number[]\n  range: number[]\n  scaleType: string\n  pivotValue?: number\n  inverted?: boolean\n}\n\nexport interface Source {\n  baseUri?: string\n  name: string\n  color?: string\n  group?: string\n}\n\n/**\n * produces a d3-scale from arguments. applies a \"nice domain\" adjustment\n *\n * @param object - containing attributes\n *   - domain [min,max]\n *   - range [min,max]\n *   - bounds [min,max]\n *   - scaleType (linear or log)\n *   - pivotValue (number)\n *   - inverted (boolean)\n */\nexport function getScale({\n  domain = [],\n  range = [],\n  scaleType,\n  pivotValue,\n  inverted,\n}: ScaleOpts) {\n  let scale:\n    | ReturnType<typeof scaleLinear<number>>\n    | ReturnType<typeof scaleLog<number>>\n    | ReturnType<typeof scaleQuantize<number>>\n  const [min, max] = domain\n  if (min === undefined || max === undefined) {\n    throw new Error('invalid domain')\n  }\n  if (scaleType === 'linear') {\n    scale = scaleLinear()\n  } else if (scaleType === 'log') {\n    scale = scaleLog().base(2)\n  } else if (scaleType === 'quantize') {\n    scale = scaleQuantize()\n  } else {\n    throw new Error('undefined scaleType')\n  }\n  scale.domain(pivotValue !== undefined ? [min, pivotValue, max] : [min, max])\n  scale.nice()\n\n  const [rangeMin, rangeMax] = range\n  if (rangeMin === undefined || rangeMax === undefined) {\n    throw new Error('invalid range')\n  }\n  scale.range(inverted ? range.slice().reverse() : range)\n  return scale\n}\n/**\n * gets the origin for drawing the graph. for linear this is 0, for log this is arbitrarily set to log(1)==0\n *\n * @param scaleType -\n */\nexport function getOrigin(scaleType: string /* , pivot, stats */) {\n  // if (pivot) {\n  //   if (pivot === 'mean') {\n  //     return stats.scoreMean || 0\n  //   }\n  //   if (pivot === 'zero') {\n  //     return 0\n  //   }\n  //   return parseFloat()\n  // }\n  // if (scaleType === 'z_score') {\n  //   return stats.scoreMean || 0\n  // }\n  if (scaleType === 'log') {\n    return 1\n  }\n  return 0\n}\n\n/**\n * produces a \"nice\" domain that actually rounds down to 0 for the min\n * or 0 to the max depending on if all values are positive or negative\n *\n * @param object - containing attributes\n *   - domain [min,max]\n *   - bounds [min,max]\n *   - mean\n *   - stddev\n *   - scaleType (linear or log)\n */\nexport function getNiceDomain({\n  scaleType,\n  domain,\n  bounds,\n}: {\n  scaleType: string\n  domain: readonly [number, number]\n  bounds: readonly [number | undefined, number | undefined]\n}) {\n  const [minScore, maxScore] = bounds\n  let [min, max] = domain\n\n  if (scaleType === 'linear') {\n    if (max < 0) {\n      max = 0\n    }\n    if (min > 0) {\n      min = 0\n    }\n  }\n  if (scaleType === 'log') {\n    // for min>0 and max>1, set log min to 1, which works for most coverage\n    // types tracks. if max is not >1, might be like raw p-values so then it'll\n    // display negative values\n    if (min >= 0 && max > 1) {\n      min = 1\n    }\n  }\n\n  if (minScore !== undefined && minScore !== Number.MIN_VALUE) {\n    min = minScore\n  }\n  if (maxScore !== undefined && maxScore !== Number.MAX_VALUE) {\n    max = maxScore\n  }\n  const getScaleType = (type: string) => {\n    if (type === 'linear') {\n      return scaleLinear()\n    }\n    if (type === 'log') {\n      const scale = scaleLog()\n      scale.base(2)\n      return scale\n    }\n    if (type === 'quantize') {\n      return scaleQuantize()\n    }\n    throw new Error(`undefined scaleType ${type}`)\n  }\n  const scale = getScaleType(scaleType)\n\n  scale.domain([min, max])\n  scale.nice()\n  return scale.domain() as [number, number]\n}\n\nexport async function getQuantitativeStats(\n  self: {\n    adapterConfig: AnyConfigurationModel\n    configuration: AnyConfigurationModel\n    autoscaleType: string\n    setMessage: (str: string) => void\n  },\n  opts: {\n    headers?: Record<string, string>\n    signal?: AbortSignal\n    filters: string[]\n  },\n): Promise<QuantitativeStats> {\n  const { rpcManager } = getSession(self)\n  const numStdDev = getConf(self, 'numStdDev') || 3\n  const { adapterConfig, autoscaleType } = self\n  const sessionId = getRpcSessionId(self)\n  const params = {\n    sessionId,\n    adapterConfig,\n    statusCallback: (message: string) => {\n      if (isAlive(self)) {\n        self.setMessage(message)\n      }\n    },\n    ...opts,\n  }\n\n  if (autoscaleType === 'global' || autoscaleType === 'globalsd') {\n    const results = (await rpcManager.call(\n      sessionId,\n      'WiggleGetGlobalQuantitativeStats',\n      params,\n    )) as QuantitativeStats\n    const { scoreMin, scoreMean, scoreStdDev } = results\n    // globalsd uses heuristic to avoid unnecessary scoreMin<0\n    // if the scoreMin is never less than 0\n    // helps with most coverage bigwigs just being >0\n    return autoscaleType === 'globalsd'\n      ? {\n          ...results,\n          scoreMin: scoreMin >= 0 ? 0 : scoreMean - numStdDev * scoreStdDev,\n          scoreMax: scoreMean + numStdDev * scoreStdDev,\n        }\n      : results\n  }\n  if (autoscaleType === 'local' || autoscaleType === 'localsd') {\n    const { dynamicBlocks, bpPerPx } = getContainingView(self) as LGV\n    const results = (await rpcManager.call(\n      sessionId,\n      'WiggleGetMultiRegionQuantitativeStats',\n      {\n        ...params,\n        regions: dynamicBlocks.contentBlocks.map(region => {\n          const { start, end } = region\n          return {\n            ...JSON.parse(JSON.stringify(region)),\n            start: Math.floor(start),\n            end: Math.ceil(end),\n          }\n        }),\n        bpPerPx,\n      },\n    )) as QuantitativeStats\n    const { scoreMin, scoreMean, scoreStdDev } = results\n\n    // localsd uses heuristic to avoid unnecessary scoreMin<0 if the\n    // scoreMin is never less than 0 helps with most coverage bigwigs\n    // just being >0\n    return autoscaleType === 'localsd'\n      ? {\n          ...results,\n          scoreMin: scoreMin >= 0 ? 0 : scoreMean - numStdDev * scoreStdDev,\n          scoreMax: scoreMean + numStdDev * scoreStdDev,\n        }\n      : results\n  }\n  if (autoscaleType === 'zscale') {\n    return rpcManager.call(\n      sessionId,\n      'WiggleGetGlobalQuantitativeStats',\n      params,\n    ) as Promise<QuantitativeStats>\n  }\n  throw new Error(`invalid autoscaleType '${autoscaleType}'`)\n}\n\nexport function quantitativeStatsAutorun(self: {\n  featureDensityStatsReady: boolean\n  regionTooLarge: boolean\n  error: unknown\n  setLoading: (aborter: AbortController) => void\n  setError: (error: unknown) => void\n  updateQuantitativeStats: (\n    stats: QuantitativeStats,\n    statsRegion: string,\n  ) => void\n  renderProps: () => Record<string, unknown>\n  configuration: AnyConfigurationModel\n  adapterConfig: AnyConfigurationModel\n  autoscaleType: string\n  setMessage: (str: string) => void\n}) {\n  addDisposer(\n    self,\n    autorun(\n      async () => {\n        try {\n          const aborter = new AbortController()\n          const view = getContainingView(self) as LGV\n          self.setLoading(aborter)\n\n          if (\n            !view.initialized ||\n            !self.featureDensityStatsReady ||\n            self.regionTooLarge ||\n            self.error\n          ) {\n            return\n          }\n          const statsRegion = JSON.stringify(view.dynamicBlocks)\n\n          const wiggleStats = await getQuantitativeStats(self, {\n            signal: aborter.signal,\n            filters: [],\n            ...self.renderProps(),\n          })\n\n          if (isAlive(self)) {\n            self.updateQuantitativeStats(wiggleStats, statsRegion)\n          }\n        } catch (e) {\n          if (!isAbortException(e) && isAlive(self)) {\n            console.error(e)\n            self.setError(e)\n          }\n        }\n      },\n      { delay: 1000 },\n    ),\n  )\n}\n\nexport function toP(s = 0) {\n  return +(+s).toPrecision(6)\n}\n\nexport function round(value: number) {\n  return Math.round(value * 1e5) / 1e5\n}\n\n// avoid drawing negative width features for SVG exports\nexport function fillRectCtx(\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  ctx: CanvasRenderingContext2D,\n  color?: string,\n) {\n  if (width < 0) {\n    x += width\n    width = -width\n  }\n  if (height < 0) {\n    y += height\n    height = -height\n  }\n\n  if (color) {\n    ctx.fillStyle = color\n  }\n  ctx.fillRect(x, y, width, height)\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport { BaseInternetAccountConfig } from '@jbrowse/core/pluggableElementTypes/models'\n\n/**\n * #config OAuthInternetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst OAuthConfigSchema = ConfigurationSchema(\n  'OAuthInternetAccount',\n  {\n    /**\n     * #slot\n     */\n    tokenType: {\n      description: 'a custom name for a token to include in the header',\n      type: 'string',\n      defaultValue: 'Bearer',\n    },\n    /**\n     * #slot\n     */\n    authEndpoint: {\n      description: 'the authorization code endpoint of the internet account',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    tokenEndpoint: {\n      description: 'the token endpoint of the internet account',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    needsPKCE: {\n      description: 'boolean to indicate if the endpoint needs a PKCE code',\n      type: 'boolean',\n      defaultValue: false,\n    },\n    /**\n     * #slot\n     */\n    clientId: {\n      description: 'id for the OAuth application',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    scopes: {\n      description: 'optional scopes for the authorization call',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    state: {\n      description: 'optional state for the authorization call',\n      type: 'string',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    responseType: {\n      description:\n        \"the type of response from the authorization endpoint. can be 'token' or 'code'\",\n      type: 'string',\n      defaultValue: 'code',\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: BaseInternetAccountConfig,\n    explicitlyTyped: true,\n  },\n)\n\nexport type OAuthInternetAccountConfigModel = typeof OAuthConfigSchema\nexport type OAuthInternetAccountConfig =\n  Instance<OAuthInternetAccountConfigModel>\nexport default OAuthConfigSchema\n","export function fixup(buf: string) {\n  return buf.replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n}\n\nexport async function generateChallenge(val: string) {\n  const sha256 = await import('crypto-js/sha256').then(f => f.default)\n  const Base64 = await import('crypto-js/enc-base64')\n  return fixup(Base64.stringify(sha256(val)))\n}\n\n// if response is JSON, checks if it needs to remove tokens in error, or just plain throw\nexport function processError(text: string, invalidErrorCb: () => void) {\n  try {\n    const obj = JSON.parse(text)\n    if (obj.error === 'invalid_grant') {\n      invalidErrorCb()\n    }\n    return obj?.error_description ?? text\n  } catch (e) {\n    /* response text is not json, just use original text as error */\n  }\n  return text\n}\n\nexport function processTokenResponse(\n  data: { refresh_token?: string; access_token: string },\n  storeRefreshTokenCb: (str: string) => void,\n) {\n  if (data.refresh_token) {\n    storeRefreshTokenCb(data.refresh_token)\n  }\n  return data.access_token\n}\n","export async function getResponseError({\n  response,\n  reason,\n  statusText,\n}: {\n  response: Response\n  reason?: string\n  statusText?: string\n}) {\n  return [\n    `HTTP ${response.status}`,\n    reason,\n    statusText ?? (await getError(response)),\n  ]\n    .filter(f => !!f)\n    .join(' - ')\n}\n\nexport async function getError(response: Response) {\n  try {\n    return await response.text()\n  } catch (e) {\n    return response.statusText\n  }\n}\n","import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { InternetAccount } from '@jbrowse/core/pluggableElementTypes/models'\nimport { isElectron, UriLocation } from '@jbrowse/core/util'\nimport { Instance, types } from 'mobx-state-tree'\nimport { Buffer } from 'buffer'\n\n// locals\nimport { OAuthInternetAccountConfigModel } from './configSchema'\nimport {\n  fixup,\n  generateChallenge,\n  processError,\n  processTokenResponse,\n} from './util'\nimport { getResponseError } from '../util'\n\ninterface OAuthData {\n  client_id: string\n  redirect_uri: string\n  response_type: 'token' | 'code'\n  scope?: string\n  code_challenge?: string\n  code_challenge_method?: string\n  token_access_type?: string\n  state?: string\n}\n\n/**\n * #stateModel OAuthInternetAccount\n */\nconst stateModelFactory = (configSchema: OAuthInternetAccountConfigModel) => {\n  return InternetAccount.named('OAuthInternetAccount')\n    .props({\n      /**\n       * #property\n       */\n      type: types.literal('OAuthInternetAccount'),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(configSchema),\n    })\n    .views(() => {\n      let codeVerifier: string | undefined = undefined\n      return {\n        /**\n         * #getter\n         */\n        get codeVerifierPKCE() {\n          if (codeVerifier) {\n            return codeVerifier\n          }\n          const array = new Uint8Array(32)\n          globalThis.crypto.getRandomValues(array)\n          codeVerifier = fixup(Buffer.from(array).toString('base64'))\n          return codeVerifier\n        },\n      }\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get authEndpoint(): string {\n        return getConf(self, 'authEndpoint')\n      },\n      /**\n       * #getter\n       */\n      get tokenEndpoint(): string {\n        return getConf(self, 'tokenEndpoint')\n      },\n      /**\n       * #getter\n       */\n      get needsPKCE(): boolean {\n        return getConf(self, 'needsPKCE')\n      },\n      /**\n       * #getter\n       */\n      get clientId(): string {\n        return getConf(self, 'clientId')\n      },\n      /**\n       * #getter\n       */\n      get scopes(): string {\n        return getConf(self, 'scopes')\n      },\n      /**\n       * #method\n       * OAuth state parameter:\n       * https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1\n       *\n       * Can override or extend if dynamic state is needed.\n       */\n      state(): string | undefined {\n        return getConf(self, 'state')\n      },\n      /**\n       * #getter\n       */\n      get responseType(): 'token' | 'code' {\n        return getConf(self, 'responseType')\n      },\n      /**\n       * #getter\n       */\n      get refreshTokenKey() {\n        return `${self.internetAccountId}-refreshToken`\n      },\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      storeRefreshToken(refreshToken: string) {\n        localStorage.setItem(self.refreshTokenKey, refreshToken)\n      },\n      /**\n       * #action\n       */\n      removeRefreshToken() {\n        localStorage.removeItem(self.refreshTokenKey)\n      },\n      /**\n       * #method\n       */\n      retrieveRefreshToken() {\n        return localStorage.getItem(self.refreshTokenKey)\n      },\n      /**\n       * #action\n       */\n      async exchangeAuthorizationForAccessToken(\n        token: string,\n        redirectUri: string,\n      ): Promise<string> {\n        const params = new URLSearchParams(\n          Object.entries({\n            code: token,\n            grant_type: 'authorization_code',\n            client_id: self.clientId,\n            redirect_uri: redirectUri,\n            ...(self.needsPKCE ? { code_verifier: self.codeVerifierPKCE } : {}),\n          }),\n        )\n\n        const response = await fetch(self.tokenEndpoint, {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n          body: params.toString(),\n        })\n\n        if (!response.ok) {\n          throw new Error(\n            await getResponseError({\n              response,\n              reason: 'Failed to obtain token',\n            }),\n          )\n        }\n\n        const data = await response.json()\n        return processTokenResponse(data, token => {\n          this.storeRefreshToken(token)\n        })\n      },\n      /**\n       * #action\n       */\n      async exchangeRefreshForAccessToken(\n        refreshToken: string,\n      ): Promise<string> {\n        const response = await fetch(self.tokenEndpoint, {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n          body: new URLSearchParams(\n            Object.entries({\n              grant_type: 'refresh_token',\n              refresh_token: refreshToken,\n              client_id: self.clientId,\n            }),\n          ).toString(),\n        })\n\n        if (!response.ok) {\n          self.removeToken()\n          const text = await response.text()\n          throw new Error(\n            await getResponseError({\n              response,\n              statusText: processError(text, () => {\n                this.removeRefreshToken()\n              }),\n            }),\n          )\n        }\n        const data = await response.json()\n        return processTokenResponse(data, token => {\n          this.storeRefreshToken(token)\n        })\n      },\n    }))\n    .actions(self => {\n      let listener: (event: MessageEvent) => undefined\n      let exchangedTokenPromise: Promise<string> | undefined = undefined\n      return {\n        /**\n         * #action\n         * used to listen to child window for auth code/token\n         */\n        addMessageChannel(\n          resolve: (token: string) => void,\n          reject: (error: Error) => void,\n        ) {\n          listener = event => {\n            // this should probably get better handling, but ignored for now\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            this.finishOAuthWindow(event, resolve, reject)\n          }\n          window.addEventListener('message', listener)\n        },\n        /**\n         * #action\n         */\n        deleteMessageChannel() {\n          window.removeEventListener('message', listener)\n        },\n        /**\n         * #action\n         */\n        async finishOAuthWindow(\n          event: MessageEvent,\n          resolve: (token: string) => void,\n          reject: (error: Error) => void,\n        ) {\n          if (\n            event.data.name !== `JBrowseAuthWindow-${self.internetAccountId}`\n          ) {\n            this.deleteMessageChannel()\n            return\n          }\n          const redirectUriWithInfo = event.data.redirectUri\n          const fixedQueryString = redirectUriWithInfo.replace('#', '?')\n          const redirectUrl = new URL(fixedQueryString)\n          const queryStringSearch = redirectUrl.search\n          const urlParams = new URLSearchParams(queryStringSearch)\n          if (urlParams.has('access_token')) {\n            const token = urlParams.get('access_token')\n            if (!token) {\n              reject(new Error('Error with token endpoint'))\n              return\n            }\n            self.storeToken(token)\n            resolve(token)\n            return\n          }\n          if (urlParams.has('code')) {\n            const code = urlParams.get('code')\n            if (!code) {\n              reject(new Error('Error with authorization endpoint'))\n              return\n            }\n            try {\n              const token = await self.exchangeAuthorizationForAccessToken(\n                code,\n                redirectUrl.origin + redirectUrl.pathname,\n              )\n              self.storeToken(token)\n              resolve(token)\n              return\n            } catch (e) {\n              if (e instanceof Error) {\n                reject(e)\n              } else {\n                reject(new Error(String(e)))\n              }\n              return\n            }\n          }\n          if (redirectUriWithInfo.includes('access_denied')) {\n            reject(new Error('OAuth flow was cancelled'))\n            return\n          }\n          if (redirectUriWithInfo.includes('error')) {\n            reject(new Error(`OAuth flow error: ${queryStringSearch}`))\n            return\n          }\n          this.deleteMessageChannel()\n        },\n        /**\n         * #action\n         * opens external OAuth flow, popup for web and new browser window for\n         * desktop\n         */\n        async useEndpointForAuthorization(\n          resolve: (token: string) => void,\n          reject: (error: Error) => void,\n        ) {\n          const redirectUri = isElectron\n            ? 'http://localhost/auth'\n            : window.location.origin + window.location.pathname\n          const data: OAuthData = {\n            client_id: self.clientId,\n            redirect_uri: redirectUri,\n            response_type: self.responseType,\n            token_access_type: 'offline',\n          }\n\n          if (self.state()) {\n            data.state = self.state()\n          }\n\n          if (self.scopes) {\n            data.scope = self.scopes\n          }\n\n          if (self.needsPKCE) {\n            data.code_challenge = await generateChallenge(self.codeVerifierPKCE)\n            data.code_challenge_method = 'S256'\n          }\n\n          const params = new URLSearchParams(Object.entries(data))\n\n          const url = new URL(self.authEndpoint)\n          url.search = params.toString()\n\n          const eventName = `JBrowseAuthWindow-${self.internetAccountId}`\n          if (isElectron) {\n            const { ipcRenderer } = window.require('electron')\n            const redirectUri = await ipcRenderer.invoke('openAuthWindow', {\n              internetAccountId: self.internetAccountId,\n              data,\n              url: url.toString(),\n            })\n\n            const eventFromDesktop = new MessageEvent('message', {\n              data: { name: eventName, redirectUri: redirectUri },\n            })\n            // may want to improve handling\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            this.finishOAuthWindow(eventFromDesktop, resolve, reject)\n          } else {\n            window.open(url, eventName, 'width=500,height=600,left=0,top=0')\n          }\n        },\n        /**\n         * #action\n         */\n        async getTokenFromUser(\n          resolve: (token: string) => void,\n          reject: (error: Error) => void,\n        ) {\n          const refreshToken = self.retrieveRefreshToken()\n          let doUserFlow = true\n\n          // if there is a refresh token, then try it out, and only if that\n          // refresh token succeeds, set doUserFlow to false\n          if (refreshToken) {\n            try {\n              const token =\n                await self.exchangeRefreshForAccessToken(refreshToken)\n              resolve(token)\n              doUserFlow = false\n            } catch (e) {\n              console.error(e)\n              self.removeRefreshToken()\n            }\n          }\n          if (doUserFlow) {\n            this.addMessageChannel(resolve, reject)\n            // may want to improve handling\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            this.useEndpointForAuthorization(resolve, reject)\n          }\n        },\n        /**\n         * #action\n         */\n        async validateToken(token: string, location: UriLocation) {\n          const newInit = self.addAuthHeaderToInit({ method: 'HEAD' }, token)\n          const response = await fetch(location.uri, newInit)\n          if (!response.ok) {\n            self.removeToken()\n            const refreshToken = self.retrieveRefreshToken()\n            if (refreshToken) {\n              try {\n                if (!exchangedTokenPromise) {\n                  exchangedTokenPromise =\n                    self.exchangeRefreshForAccessToken(refreshToken)\n                }\n                const newToken = await exchangedTokenPromise\n                exchangedTokenPromise = undefined\n                return newToken\n              } catch (err) {\n                console.error('Token could not be refreshed', err)\n                // let original error be thrown\n              }\n            }\n\n            throw new Error(\n              await getResponseError({\n                response,\n                reason: 'Error validating token',\n              }),\n            )\n          }\n          return token\n        },\n      }\n    })\n    .actions(self => {\n      const superGetFetcher = self.getFetcher\n      return {\n        /**\n         * #action\n         * Get a fetch method that will add any needed authentication headers\n         * to the request before sending it. If location is provided, it will\n         * be checked to see if it includes a token in it's pre-auth\n         * information.\n         *\n         * @param loc - UriLocation of the resource\n         * @returns A function that can be used to fetch\n         */\n        getFetcher(loc?: UriLocation) {\n          const fetcher = superGetFetcher(loc)\n          return async (input: RequestInfo, init?: RequestInit) => {\n            if (loc) {\n              await self.validateToken(await self.getToken(loc), loc)\n            }\n            return fetcher(input, init)\n          }\n        },\n      }\n    })\n}\n\nexport default stateModelFactory\nexport type OAuthStateModel = ReturnType<typeof stateModelFactory>\nexport type OAuthModel = Instance<OAuthStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport { BaseInternetAccountConfig } from '@jbrowse/core/pluggableElementTypes/models'\n\n/**\n * #config ExternalTokenInternetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst ExternalTokenConfigSchema = ConfigurationSchema(\n  'ExternalTokenInternetAccount',\n  {\n    /**\n     * #slot\n     */\n    validateWithHEAD: {\n      description: 'validate the token with a HEAD request before using it',\n      type: 'boolean',\n      defaultValue: true,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: BaseInternetAccountConfig,\n    explicitlyTyped: true,\n  },\n)\n\nexport type ExternalTokenInternetAccountConfigModel =\n  typeof ExternalTokenConfigSchema\n\nexport type ExternalTokenInternetAccountConfig =\n  Instance<ExternalTokenInternetAccountConfigModel>\nexport default ExternalTokenConfigSchema\n","import React, { useState } from 'react'\nimport { Button, DialogContent, DialogActions, TextField } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport const ExternalTokenEntryForm = ({\n  internetAccountId,\n  handleClose,\n}: {\n  internetAccountId: string\n  handleClose: (token?: string) => void\n}) => {\n  const [token, setToken] = useState('')\n\n  return (\n    <Dialog\n      open\n      maxWidth=\"xl\"\n      data-testid=\"externalToken-form\"\n      title={`Enter token for ${internetAccountId}`}\n    >\n      <DialogContent style={{ display: 'flex', flexDirection: 'column' }}>\n        <TextField\n          required\n          label=\"Enter Token\"\n          variant=\"outlined\"\n          inputProps={{ 'data-testid': 'entry-externalToken' }}\n          onChange={event => {\n            setToken(event.target.value)\n          }}\n          margin=\"dense\"\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          disabled={!token}\n          onClick={() => {\n            if (token) {\n              handleClose(token)\n            }\n          }}\n        >\n          Add\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { InternetAccount } from '@jbrowse/core/pluggableElementTypes/models'\nimport { UriLocation } from '@jbrowse/core/util/types'\nimport { ExternalTokenInternetAccountConfigModel } from './configSchema'\nimport { Instance, types, getRoot } from 'mobx-state-tree'\n\nimport { ExternalTokenEntryForm } from './ExternalTokenEntryForm'\n\nconst stateModelFactory = (\n  configSchema: ExternalTokenInternetAccountConfigModel,\n) => {\n  return InternetAccount.named('ExternalTokenInternetAccount')\n    .props({\n      type: types.literal('ExternalTokenInternetAccount'),\n      configuration: ConfigurationReference(configSchema),\n    })\n    .views(self => ({\n      get validateWithHEAD(): boolean {\n        return getConf(self, 'validateWithHEAD')\n      },\n    }))\n    .actions(self => ({\n      getTokenFromUser(\n        resolve: (token: string) => void,\n        reject: (error: Error) => void,\n      ) {\n        const { session } = getRoot<any>(self)\n        session.queueDialog((doneCallback: () => void) => [\n          ExternalTokenEntryForm,\n          {\n            internetAccountId: self.internetAccountId,\n            handleClose: (token: string) => {\n              if (token) {\n                resolve(token)\n              } else {\n                reject(new Error('user cancelled entry'))\n              }\n              doneCallback()\n            },\n          },\n        ])\n      },\n      async validateToken(token: string, location: UriLocation) {\n        if (!self.validateWithHEAD) {\n          return token\n        }\n        const newInit = self.addAuthHeaderToInit({ method: 'HEAD' }, token)\n        const response = await fetch(location.uri, newInit)\n        if (!response.ok) {\n          let errorMessage: string\n          try {\n            errorMessage = await response.text()\n          } catch (error) {\n            errorMessage = ''\n          }\n          throw new Error(\n            `Token could not be validated — ${response.status} ${errorMessage ? ` (${errorMessage})` : ''}`,\n          )\n        }\n        return token\n      },\n    }))\n}\n\nexport default stateModelFactory\nexport type ExternalTokenStateModel = ReturnType<typeof stateModelFactory>\nexport type ExternalTokenModel = Instance<ExternalTokenStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport { BaseInternetAccountConfig } from '@jbrowse/core/pluggableElementTypes/models'\n\n/**\n * #config HTTPBasicInternetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst HTTPBasicConfigSchema = ConfigurationSchema(\n  'HTTPBasicInternetAccount',\n  {\n    /**\n     * #slot\n     */\n    tokenType: {\n      description: 'a custom name for a token to include in the header',\n      type: 'string',\n      defaultValue: 'Basic',\n    },\n    /**\n     * #slot\n     */\n    validateWithHEAD: {\n      description: 'validate the token with a HEAD request before using it',\n      type: 'boolean',\n      defaultValue: true,\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: BaseInternetAccountConfig,\n    explicitlyTyped: true,\n  },\n)\n\nexport type HTTPBasicInternetAccountConfigModel = typeof HTTPBasicConfigSchema\n\nexport type HTTPBasicInternetAccountConfig =\n  Instance<HTTPBasicInternetAccountConfigModel>\nexport default HTTPBasicConfigSchema\n","import React, { useState } from 'react'\nimport { Button, DialogContent, DialogActions, TextField } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport function HTTPBasicLoginForm({\n  internetAccountId,\n  handleClose,\n}: {\n  internetAccountId: string\n  handleClose: (arg?: string) => void\n}) {\n  const [username, setUsername] = useState('')\n  const [password, setPassword] = useState('')\n\n  return (\n    <Dialog\n      open\n      maxWidth=\"xl\"\n      data-testid=\"login-httpbasic\"\n      title={`Log in for ${internetAccountId}`}\n    >\n      <form\n        onSubmit={event => {\n          if (username && password) {\n            handleClose(btoa(`${username}:${password}`))\n          } else {\n            handleClose()\n          }\n          event.preventDefault()\n        }}\n      >\n        <DialogContent style={{ display: 'flex', flexDirection: 'column' }}>\n          <TextField\n            required\n            label=\"Username\"\n            variant=\"outlined\"\n            inputProps={{ 'data-testid': 'login-httpbasic-username' }}\n            onChange={event => {\n              setUsername(event.target.value)\n            }}\n            margin=\"dense\"\n          />\n          <TextField\n            required\n            label=\"Password\"\n            type=\"password\"\n            autoComplete=\"current-password\"\n            variant=\"outlined\"\n            inputProps={{ 'data-testid': 'login-httpbasic-password' }}\n            onChange={event => {\n              setPassword(event.target.value)\n            }}\n            margin=\"dense\"\n          />\n        </DialogContent>\n        <DialogActions>\n          <Button variant=\"contained\" color=\"primary\" type=\"submit\">\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            type=\"submit\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </form>\n    </Dialog>\n  )\n}\n","import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { InternetAccount } from '@jbrowse/core/pluggableElementTypes/models'\nimport { UriLocation } from '@jbrowse/core/util/types'\nimport { Instance, types, getRoot } from 'mobx-state-tree'\n\n// locals\nimport { HTTPBasicInternetAccountConfigModel } from './configSchema'\nimport { HTTPBasicLoginForm } from './HTTPBasicLoginForm'\nimport { getResponseError } from '../util'\n\n/**\n * #stateModel HTTPBasicInternetAccount\n */\nconst stateModelFactory = (\n  configSchema: HTTPBasicInternetAccountConfigModel,\n) => {\n  return InternetAccount.named('HTTPBasicInternetAccount')\n    .props({\n      /**\n       * #property\n       */\n      type: types.literal('HTTPBasicInternetAccount'),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(configSchema),\n    })\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get validateWithHEAD(): boolean {\n        return getConf(self, 'validateWithHEAD')\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      getTokenFromUser(\n        resolve: (token: string) => void,\n        reject: (error: Error) => void,\n      ) {\n        const { session } = getRoot<any>(self)\n        session.queueDialog((doneCallback: () => void) => [\n          HTTPBasicLoginForm,\n          {\n            internetAccountId: self.internetAccountId,\n            handleClose: (token: string) => {\n              if (token) {\n                resolve(token)\n              } else {\n                reject(new Error('User cancelled entry'))\n              }\n              doneCallback()\n            },\n          },\n        ])\n      },\n      /**\n       * #action\n       */\n      async validateToken(token: string, location: UriLocation) {\n        if (!self.validateWithHEAD) {\n          return token\n        }\n        const newInit = self.addAuthHeaderToInit({ method: 'HEAD' }, token)\n        const response = await fetch(location.uri, newInit)\n        if (!response.ok) {\n          throw new Error(\n            await getResponseError({\n              response,\n              reason: 'Error validating token',\n            }),\n          )\n        }\n        return token\n      },\n    }))\n}\n\nexport default stateModelFactory\nexport type HTTPBasicStateModel = ReturnType<typeof stateModelFactory>\nexport type HTTPBasicModel = Instance<HTTPBasicStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport OAuthConfigSchema from '../OAuthModel/configSchema'\n\n/**\n * #config DropboxOAuthInternetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst DropboxOAuthConfigSchema = ConfigurationSchema(\n  'DropboxOAuthInternetAccount',\n  {\n    /**\n     * #slot\n     */\n    authEndpoint: {\n      description: 'the authorization code endpoint of the internet account',\n      type: 'string',\n      defaultValue: 'https://www.dropbox.com/oauth2/authorize',\n    },\n    /**\n     * #slot\n     */\n    tokenEndpoint: {\n      description: 'the token endpoint of the internet account',\n      type: 'string',\n      defaultValue: 'https://api.dropbox.com/oauth2/token',\n    },\n    /**\n     * #slot\n     */\n    needsPKCE: {\n      description: 'boolean to indicate if the endpoint needs a PKCE code',\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    domains: {\n      description:\n        'array of valid domains the url can contain to use this account',\n      type: 'stringArray',\n      defaultValue: [\n        'addtodropbox.com',\n        'db.tt',\n        'dropbox.com',\n        'dropboxapi.com',\n        'dropboxbusiness.com',\n        'dropbox.tech',\n        'getdropbox.com',\n      ],\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: OAuthConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport type DropboxOAuthInternetAccountConfigModel =\n  typeof DropboxOAuthConfigSchema\n\nexport type DropboxOAuthInternetAccountConfig =\n  Instance<DropboxOAuthInternetAccountConfigModel>\nexport default DropboxOAuthConfigSchema\n","import { getResponseError } from '../util'\n\ninterface DropboxError {\n  error_summary: string\n  error: {\n    '.tag': string\n  }\n}\n\n/**\n * Error messages from\n * https://www.dropbox.com/developers/documentation/http/documentation#sharing-get_shared_link_file\n * */\nconst dropboxErrorMessages: Record<string, string> = {\n  shared_link_not_found: \"The shared link wasn't found.\",\n  shared_link_access_denied:\n    'The caller is not allowed to access this shared link.',\n  unsupported_link_type:\n    'This type of link is not supported; use files/export instead.',\n  shared_link_is_directory: 'Directories cannot be retrieved by this endpoint.',\n}\n\nexport async function getDescriptiveErrorMessage(\n  response: Response,\n  reason?: string,\n) {\n  let errorMessage = ''\n  try {\n    const err = JSON.parse(await response.text()) as DropboxError\n    const tag = err.error['.tag']\n    errorMessage = dropboxErrorMessages[tag] || tag\n  } catch (error) {\n    /* do nothing */\n  }\n  return getResponseError({ response, reason, statusText: errorMessage })\n}\n","import React from 'react'\nimport { SvgIcon, SvgIconProps } from '@mui/material'\n\nexport default function DropboxIcon(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z\" />\n    </SvgIcon>\n  )\n}\n","import React from 'react'\nimport { ConfigurationReference } from '@jbrowse/core/configuration'\nimport { UriLocation } from '@jbrowse/core/util/types'\nimport { Instance, types } from 'mobx-state-tree'\n\n// locals\nimport { DropboxOAuthInternetAccountConfigModel } from './configSchema'\nimport baseModel from '../OAuthModel/model'\nimport { configSchema as OAuthConfigSchema } from '../OAuthModel'\nimport { getDescriptiveErrorMessage } from './util'\nimport DropboxIcon from './DropboxIcon'\n\n/**\n * #stateModel DropboxOAuthInternetAccount\n */\nconst stateModelFactory = (\n  configSchema: DropboxOAuthInternetAccountConfigModel,\n) => {\n  return baseModel(OAuthConfigSchema)\n    .named('DropboxOAuthInternetAccount')\n    .props({\n      /**\n       * #property\n       */\n      type: types.literal('DropboxOAuthInternetAccount'),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(configSchema),\n    })\n    .views(() => ({\n      /**\n       * #getter\n       * The FileSelector icon for Dropbox\n       */\n      get toggleContents() {\n        return <DropboxIcon />\n      },\n      /**\n       * #getter\n       */\n      get selectorLabel() {\n        return 'Enter Dropbox share link'\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #method\n       */\n      getFetcher(location?: UriLocation) {\n        return async (input: RequestInfo, init?: RequestInit) => {\n          const authToken = await self.getToken(location)\n          const newInit = self.addAuthHeaderToInit(\n            { ...init, method: 'POST' },\n            authToken,\n          )\n          newInit.headers.append(\n            'Dropbox-API-Arg',\n            JSON.stringify({ url: input }),\n          )\n          const response = await fetch(\n            'https://content.dropboxapi.com/2/sharing/get_shared_link_file',\n            newInit,\n          )\n          if (!response.ok) {\n            throw new Error(await getDescriptiveErrorMessage(response))\n          }\n          return response\n        }\n      },\n      /**\n       * #action\n       */\n      async validateToken(\n        token: string,\n        location: UriLocation,\n      ): Promise<string> {\n        const response = await fetch(\n          'https://api.dropboxapi.com/2/sharing/get_shared_link_metadata',\n          {\n            method: 'POST',\n            headers: {\n              Authorization: `Bearer ${token}`,\n              'Content-Type': 'application/json',\n            },\n            body: JSON.stringify({\n              url: location.uri,\n            }),\n          },\n        )\n        if (!response.ok) {\n          const refreshToken = self.retrieveRefreshToken()\n          if (refreshToken) {\n            self.removeRefreshToken()\n            const newToken =\n              await self.exchangeRefreshForAccessToken(refreshToken)\n            return this.validateToken(newToken, location)\n          }\n          throw new Error(\n            await getDescriptiveErrorMessage(\n              response,\n              'Token could not be validated',\n            ),\n          )\n        }\n        return token\n      },\n    }))\n}\n\nexport default stateModelFactory\nexport type DropboxOAuthStateModel = ReturnType<typeof stateModelFactory>\nexport type DropboxOAuthModel = Instance<DropboxOAuthStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { Instance } from 'mobx-state-tree'\nimport OAuthConfigSchema from '../OAuthModel/configSchema'\n\n/**\n * #config GoogleDriveOAuthInternetAccount\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst GoogleDriveOAuthConfigSchema = ConfigurationSchema(\n  'GoogleDriveOAuthInternetAccount',\n  {\n    /**\n     * #slot\n     */\n    authEndpoint: {\n      description: 'the authorization code endpoint of the internet account',\n      type: 'string',\n      defaultValue: 'https://accounts.google.com/o/oauth2/v2/auth',\n    },\n    /**\n     * #slot\n     */\n    scopes: {\n      description: 'optional scopes for the authorization call',\n      type: 'string',\n      defaultValue: 'https://www.googleapis.com/auth/drive.readonly',\n    },\n    /**\n     * #slot\n     */\n    domains: {\n      description:\n        'array of valid domains the url can contain to use this account',\n      type: 'stringArray',\n      defaultValue: ['drive.google.com\"'],\n    },\n    /**\n     * #slot\n     */\n    responseType: {\n      description: 'the type of response from the authorization endpoint',\n      type: 'string',\n      defaultValue: 'token',\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: OAuthConfigSchema,\n    explicitlyTyped: true,\n  },\n)\n\nexport type GoogleDriveOAuthInternetAccountConfigModel =\n  typeof GoogleDriveOAuthConfigSchema\n\nexport type GoogleDriveOAuthInternetAccountConfig =\n  Instance<GoogleDriveOAuthInternetAccountConfigModel>\nexport default GoogleDriveOAuthConfigSchema\n","import { getResponseError } from '../util'\n\ninterface GoogleDriveError {\n  error: {\n    errors: {\n      domain: string\n      reason: string\n      message: string\n      locationType?: string\n      location?: string\n    }[]\n    code: number\n    message: string\n  }\n}\n\nexport async function getDescriptiveErrorMessage(\n  response: Response,\n  reason?: string,\n) {\n  let errorMessage = ''\n  try {\n    const err = JSON.parse(await response.text()) as GoogleDriveError\n    errorMessage = err.error.message\n  } catch (error) {\n    /* do nothing */\n  }\n  return getResponseError({ response, reason, statusText: errorMessage })\n}\n","import { RemoteFileWithRangeCache } from '@jbrowse/core/util/io'\nimport {\n  FilehandleOptions,\n  Stats,\n  PolyfilledResponse,\n} from 'generic-filehandle'\n\nexport interface RequestInitWithMetadata extends RequestInit {\n  metadataOnly?: boolean\n}\n\ninterface GoogleDriveFilehandleOptions extends FilehandleOptions {\n  fetch(\n    input: RequestInfo,\n    opts?: RequestInitWithMetadata,\n  ): Promise<PolyfilledResponse>\n}\n\nexport class GoogleDriveFile extends RemoteFileWithRangeCache {\n  private statsPromise: Promise<{ size: number }>\n  constructor(source: string, opts: GoogleDriveFilehandleOptions) {\n    super(source, opts)\n    this.statsPromise = this.fetch(source, {\n      metadataOnly: true,\n    }).then((response: Response) => response.json())\n  }\n\n  async fetch(\n    input: RequestInfo,\n    opts?: RequestInitWithMetadata,\n  ): Promise<PolyfilledResponse> {\n    return super.fetch(input, opts)\n  }\n\n  async stat(): Promise<Stats> {\n    return this.statsPromise\n  }\n}\n","import React from 'react'\nimport { SvgIconProps, SvgIcon } from '@mui/material'\n\nexport default function GoogleDriveIcon(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z\" />\n    </SvgIcon>\n  )\n}\n","import React from 'react'\nimport { ConfigurationReference } from '@jbrowse/core/configuration'\nimport { Instance, types } from 'mobx-state-tree'\nimport { UriLocation } from '@jbrowse/core/util/types'\n\n// locals\nimport { GoogleDriveOAuthInternetAccountConfigModel } from './configSchema'\nimport baseModel from '../OAuthModel/model'\nimport { configSchema as OAuthConfigSchema } from '../OAuthModel'\nimport { getDescriptiveErrorMessage } from './util'\nimport { GoogleDriveFile } from './GoogleDriveFilehandle'\nimport GoogleDriveIcon from './GoogleDriveIcon'\n\nexport interface RequestInitWithMetadata extends RequestInit {\n  metadataOnly?: boolean\n}\n\nfunction getUri(str: string) {\n  const urlId = /[-\\w]{25,}/.exec(str)\n  return `https://www.googleapis.com/drive/v3/files/${urlId}`\n}\n\n/**\n * #stateModel GoogleDriveOAuthInternetAccount\n */\nexport default function stateModelFactory(\n  configSchema: GoogleDriveOAuthInternetAccountConfigModel,\n) {\n  return baseModel(OAuthConfigSchema)\n    .named('GoogleDriveOAuthInternetAccount')\n    .props({\n      /**\n       * #property\n       */\n      type: types.literal('GoogleDriveOAuthInternetAccount'),\n      /**\n       * #property\n       */\n      configuration: ConfigurationReference(configSchema),\n    })\n    .views(() => ({\n      /**\n       * #getter\n       * The FileSelector icon for Google drive\n       */\n      get toggleContents() {\n        return <GoogleDriveIcon />\n      },\n      /**\n       * #getter\n       */\n      get selectorLabel() {\n        return 'Enter Google Drive share link'\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #method\n       */\n      getFetcher(location?: UriLocation) {\n        return async (input: RequestInfo, init?: RequestInitWithMetadata) => {\n          const driveUrl = new URL(getUri(String(input)))\n          const searchParams = new URLSearchParams()\n          if (init?.metadataOnly) {\n            searchParams.append('fields', 'size')\n          } else {\n            searchParams.append('alt', 'media')\n          }\n          driveUrl.search = searchParams.toString()\n          const authToken = await self.getToken(location)\n          const response = await fetch(\n            driveUrl,\n            self.addAuthHeaderToInit(\n              { ...init, method: 'GET', credentials: 'same-origin' },\n              authToken,\n            ),\n          )\n          if (!response.ok) {\n            throw new Error(await getDescriptiveErrorMessage(response))\n          }\n          return response\n        }\n      },\n      /**\n       * #method\n       */\n      openLocation(location: UriLocation) {\n        return new GoogleDriveFile(location.uri, {\n          fetch: this.getFetcher(location),\n        })\n      },\n      /**\n       * #action\n       */\n      async validateToken(token: string, location: UriLocation) {\n        const response = await fetch(getUri(location.uri), {\n          headers: {\n            Authorization: `Bearer ${token}`,\n            'Content-Type': 'application/x-www-form-urlencoded',\n          },\n        })\n        if (!response.ok) {\n          throw new Error(\n            await getDescriptiveErrorMessage(\n              response,\n              'Token could not be validated',\n            ),\n          )\n        }\n        return token\n      },\n    }))\n}\n\nexport type GoogleDriveOAuthStateModel = ReturnType<typeof stateModelFactory>\nexport type GoogleDriveOAuthModel = Instance<GoogleDriveOAuthStateModel>\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport InternetAccountType from '@jbrowse/core/pluggableElementTypes/InternetAccountType'\nimport {\n  configSchema as OAuthConfigSchema,\n  modelFactory as OAuthInternetAccountModelFactory,\n} from './OAuthModel'\nimport {\n  configSchema as ExternalTokenConfigSchema,\n  modelFactory as ExternalTokenInternetAccountModelFactory,\n} from './ExternalTokenModel'\nimport {\n  configSchema as HTTPBasicConfigSchema,\n  modelFactory as HTTPBasicInternetAccountModelFactory,\n} from './HTTPBasicModel'\nimport {\n  configSchema as DropboxOAuthConfigSchema,\n  modelFactory as DropboxOAuthInternetAccountModelFactory,\n} from './DropboxOAuthModel'\nimport {\n  configSchema as GoogleDriveOAuthConfigSchema,\n  modelFactory as GoogleDriveOAuthInternetAccountModelFactory,\n} from './GoogleDriveOAuthModel'\n\nexport default class AuthenticationPlugin extends Plugin {\n  name = 'AuthenticationPlugin'\n\n  exports = {\n    OAuthConfigSchema,\n    OAuthInternetAccountModelFactory,\n    ExternalTokenConfigSchema,\n    ExternalTokenInternetAccountModelFactory,\n    HTTPBasicConfigSchema,\n    HTTPBasicInternetAccountModelFactory,\n    DropboxOAuthConfigSchema,\n    DropboxOAuthInternetAccountModelFactory,\n    GoogleDriveOAuthConfigSchema,\n    GoogleDriveOAuthInternetAccountModelFactory,\n  }\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addInternetAccountType(() => {\n      return new InternetAccountType({\n        name: 'OAuthInternetAccount',\n        configSchema: OAuthConfigSchema,\n        stateModel: OAuthInternetAccountModelFactory(OAuthConfigSchema),\n      })\n    })\n    pluginManager.addInternetAccountType(() => {\n      return new InternetAccountType({\n        name: 'ExternalTokenInternetAccount',\n        configSchema: ExternalTokenConfigSchema,\n        stateModel: ExternalTokenInternetAccountModelFactory(\n          ExternalTokenConfigSchema,\n        ),\n      })\n    })\n    pluginManager.addInternetAccountType(() => {\n      return new InternetAccountType({\n        name: 'HTTPBasicInternetAccount',\n        configSchema: HTTPBasicConfigSchema,\n        stateModel: HTTPBasicInternetAccountModelFactory(HTTPBasicConfigSchema),\n      })\n    })\n    pluginManager.addInternetAccountType(() => {\n      return new InternetAccountType({\n        name: 'DropboxOAuthInternetAccount',\n        configSchema: DropboxOAuthConfigSchema,\n        stateModel: DropboxOAuthInternetAccountModelFactory(\n          DropboxOAuthConfigSchema,\n        ),\n      })\n    })\n    pluginManager.addInternetAccountType(() => {\n      return new InternetAccountType({\n        name: 'GoogleDriveOAuthInternetAccount',\n        configSchema: GoogleDriveOAuthConfigSchema,\n        stateModel: GoogleDriveOAuthInternetAccountModelFactory(\n          GoogleDriveOAuthConfigSchema,\n        ),\n      })\n    })\n  }\n}\n\nexport {\n  configSchema as OAuthConfigSchema,\n  modelFactory as OAuthInternetAccountModelFactory,\n} from './OAuthModel'\nexport {\n  configSchema as ExternalTokenConfigSchema,\n  modelFactory as ExternalTokenInternetAccountModelFactory,\n} from './ExternalTokenModel'\n\nexport {\n  configSchema as HTTPBasicConfigSchema,\n  modelFactory as HTTPBasicInternetAccountModelFactory,\n} from './HTTPBasicModel'\n\nexport {\n  configSchema as DropboxOAuthConfigSchema,\n  modelFactory as DropboxOAuthInternetAccountModelFactory,\n} from './DropboxOAuthModel'\n\nexport {\n  configSchema as GoogleDriveOAuthConfigSchema,\n  modelFactory as GoogleDriveOAuthInternetAccountModelFactory,\n} from './GoogleDriveOAuthModel'\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BigBedAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BigBedAdapter = ConfigurationSchema(\n  'BigBedAdapter',\n  {\n    /**\n     * #slot\n     */\n    bigBedLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.bb', locationType: 'UriLocation' },\n    },\n\n    /**\n     * #slot\n     */\n    scoreColumn: {\n      type: 'string',\n      description: 'The column to use as a \"score\" attribute',\n      defaultValue: '',\n    },\n\n    /**\n     * #slot\n     */\n    aggregateField: {\n      type: 'string',\n      description: 'An attribute to aggregate features with',\n      defaultValue: 'geneName',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default BigBedAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BedpeAdapter\n * intended for SVs in a single assembly\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BedpeAdapter = ConfigurationSchema(\n  'BedpeAdapter',\n  {\n    /**\n     * #slot\n     * can be plaintext or gzipped, not indexed so loaded into memory on startup\n     */\n    bedpeLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my.bedpe.gz',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    columnNames: {\n      type: 'stringArray',\n      description: 'List of column names',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default BedpeAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config BedTabixAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BedTabixAdapter = ConfigurationSchema(\n  'BedTabixAdapter',\n  {\n    /**\n     * #slot\n     */\n    bedGzLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.bed.gz', locationType: 'UriLocation' },\n    },\n\n    index: ConfigurationSchema('TabixIndex', {\n      /**\n       * #slot index.indexType\n       */\n      indexType: {\n        model: types.enumeration('IndexType', ['TBI', 'CSI']),\n        type: 'stringEnum',\n        defaultValue: 'TBI',\n      },\n      /**\n       * #slot index.location\n       */\n      location: {\n        type: 'fileLocation',\n        defaultValue: {\n          uri: '/path/to/my.bed.gz.tbi',\n          locationType: 'UriLocation',\n        },\n      },\n    }),\n\n    /**\n     * #slot\n     */\n    columnNames: {\n      type: 'stringArray',\n      description: 'List of column names',\n      defaultValue: [],\n    },\n\n    /**\n     * #slot\n     */\n    scoreColumn: {\n      type: 'string',\n      description: 'The column to use as a \"score\" attribute',\n      defaultValue: '',\n    },\n\n    /**\n     * #slot\n     */\n    autoSql: {\n      type: 'string',\n      description: 'The autoSql definition for the data fields in the file',\n      defaultValue: '',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default BedTabixAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config BedAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BedAdapter = ConfigurationSchema(\n  'BedAdapter',\n  {\n    /**\n     * #slot\n     */\n    bedLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.bed.gz', locationType: 'UriLocation' },\n    },\n    /**\n     * #slot\n     */\n    columnNames: {\n      type: 'stringArray',\n      description: 'List of column names',\n      defaultValue: [],\n    },\n    /**\n     * #slot\n     */\n    scoreColumn: {\n      type: 'string',\n      description: 'The column to use as a \"score\" attribute',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    autoSql: {\n      type: 'string',\n      description: 'The autoSql definition for the data fields in the file',\n      defaultValue: '',\n    },\n    /**\n     * #slot\n     */\n    colRef: {\n      type: 'number',\n      description: 'The column to use as a \"refName\" attribute',\n      defaultValue: 0,\n    },\n    /**\n     * #slot\n     */\n    colStart: {\n      type: 'number',\n      description: 'The column to use as a \"start\" attribute',\n      defaultValue: 1,\n    },\n    /**\n     * #slot\n     */\n    colEnd: {\n      type: 'number',\n      description: 'The column to use as a \"end\" attribute',\n      defaultValue: 2,\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default BedAdapter\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport BigBedAdapterF from './BigBedAdapter'\nimport BedpeAdapterF from './BedpeAdapter'\nimport BedTabixAdapterF from './BedTabixAdapter'\nimport BedAdapterF from './BedAdapter'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  getFileName,\n  makeIndex,\n  makeIndexType,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default class BedPlugin extends Plugin {\n  name = 'BedPlugin'\n\n  install(pluginManager: PluginManager) {\n    BigBedAdapterF(pluginManager)\n    BedAdapterF(pluginManager)\n    BedpeAdapterF(pluginManager)\n    BedTabixAdapterF(pluginManager)\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.(bb|bigbed)$/i\n          const adapterName = 'BigBedAdapter'\n          const fileName = getFileName(file)\n          const obj = {\n            type: adapterName,\n            bigBedLocation: file,\n          }\n\n          if (regexGuess.test(fileName) && !adapterHint) {\n            return obj\n          }\n          if (adapterHint === adapterName) {\n            return obj\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.bedpe(\\.gz)?$/i\n          const adapterName = 'BedpeAdapter'\n          const fileName = getFileName(file)\n          if (regexGuess.test(fileName) || adapterHint === adapterName) {\n            return {\n              type: adapterName,\n              bedpeLocation: file,\n            }\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.bed\\.b?gz$/i\n          const adapterName = 'BedTabixAdapter'\n          const fileName = getFileName(file)\n          const indexName = index && getFileName(index)\n          if (regexGuess.test(fileName) || adapterHint === adapterName) {\n            return {\n              type: adapterName,\n              bedGzLocation: file,\n              index: {\n                location: index || makeIndex(file, '.tbi'),\n                indexType: makeIndexType(indexName, 'CSI', 'TBI'),\n              },\n            }\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.bed$/i\n          const adapterName = 'BedAdapter'\n          const fileName = getFileName(file)\n          if (regexGuess.test(fileName) || adapterHint === adapterName) {\n            return {\n              type: adapterName,\n              bedLocation: file,\n            }\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (trackTypeGuesser: TrackTypeGuesser) => (adapterName: string) =>\n        adapterName === 'BedpeAdapter'\n          ? 'VariantTrack'\n          : trackTypeGuesser(adapterName),\n    )\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function BigBedAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BigBedAdapter',\n        displayName: 'BigBed adapter',\n        configSchema,\n        getAdapterClass: () => import('./BigBedAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function BedAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BedAdapter',\n        displayName: 'BED adapter',\n        configSchema,\n        getAdapterClass: () => import('./BedAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function BedpeAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BedpeAdapter',\n        displayName: 'BEDPE adapter',\n        configSchema,\n        getAdapterClass: () => import('./BedpeAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function BedTabixAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BedTabixAdapter',\n        displayName: 'BED tabix adapter',\n        configSchema,\n        getAdapterClass: () => import('./BedTabixAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { lazy } from 'react'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\n\nconst configSchema = ConfigurationSchema('BreakpointAlignmentsWidget', {})\n\nconst stateModel = types\n  .model('BreakpointAlignmentsWidget', {\n    id: ElementId,\n    type: types.literal('BreakpointAlignmentsWidget'),\n    featureData: types.frozen(),\n  })\n  .actions(self => ({\n    setFeatureData(data: unknown) {\n      self.featureData = data\n    },\n    clearFeatureData() {\n      self.featureData = undefined\n    },\n  }))\n\nexport default function BreakpointAlignmentsFeatureDetailF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'BreakpointAlignmentsWidget',\n      heading: 'Breakpoint feature details',\n      configSchema,\n      stateModel,\n      ReactComponent: lazy(() => import('./BreakpointAlignmentsFeatureDetail')),\n    })\n  })\n}\n","import { getSession, Feature, Region } from '@jbrowse/core/util'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport { parseBreakend } from '@gmod/vcf'\nimport { IStateTreeNode } from 'mobx-state-tree'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\nexport default class BreakpointSplitViewType extends ViewType {\n  getBreakendCoveringRegions({\n    feature,\n    assembly,\n  }: {\n    feature: Feature\n    assembly: Assembly\n  }) {\n    const alt = feature.get('ALT')?.[0]\n    const bnd = alt ? parseBreakend(alt) : undefined\n    const startPos = feature.get('start')\n    const refName = feature.get('refName')\n    let endPos: number\n\n    let mateRefName: string | undefined\n\n    // a VCF breakend feature\n    if (alt === '<TRA>') {\n      const INFO = feature.get('INFO')\n      endPos = INFO.END[0] - 1\n      mateRefName = INFO.CHR2[0]\n    } else if (bnd?.MatePosition) {\n      const matePosition = bnd.MatePosition.split(':')\n      endPos = +matePosition[1]! - 1\n      mateRefName = matePosition[0]!\n    } else if (feature.get('mate')) {\n      // a generic 'mate' feature\n      const mate = feature.get('mate')\n      mateRefName = mate.refName\n      endPos = mate.start\n    } else {\n      endPos = startPos + 1\n    }\n\n    if (!mateRefName) {\n      throw new Error(\n        `unable to resolve mate refName ${mateRefName} in reference genome`,\n      )\n    }\n\n    return {\n      pos: startPos,\n      refName: assembly.getCanonicalRefName(refName),\n      mateRefName: assembly.getCanonicalRefName(mateRefName),\n      matePos: endPos,\n    }\n  }\n\n  singleLevelSnapshotFromBreakendFeature(\n    feature: Feature,\n    view: { displayedRegions: Region[] } & IStateTreeNode,\n  ) {\n    const session = getSession(view)\n    const bpPerPx = 10\n    const { assemblyName } = view.displayedRegions[0]!\n\n    const { assemblyManager } = session\n    const assembly = assemblyManager.get(assemblyName)\n    if (!assembly) {\n      throw new Error(`assembly ${assemblyName} not found`)\n    }\n    if (!assembly.regions) {\n      throw new Error(`assembly ${assemblyName} regions not loaded`)\n    }\n    const {\n      refName,\n      pos: startPos,\n      mateRefName,\n      matePos: endPos,\n    } = this.getBreakendCoveringRegions({\n      feature,\n      assembly,\n    })\n\n    const topRegion = assembly.regions.find(f => f.refName === refName)!\n    const bottomRegion = assembly.regions.find(f => f.refName === mateRefName)!\n    const topMarkedRegion = [{ ...topRegion }, { ...topRegion }]\n    const bottomMarkedRegion = [{ ...bottomRegion }, { ...bottomRegion }]\n    topMarkedRegion[0]!.end = startPos\n    topMarkedRegion[1]!.start = startPos\n    bottomMarkedRegion[0]!.end = endPos\n    bottomMarkedRegion[1]!.start = endPos\n    return {\n      type: 'BreakpointSplitView',\n      views: [\n        {\n          type: 'LinearGenomeView',\n          displayedRegions: topMarkedRegion,\n          hideHeader: true,\n          bpPerPx,\n          offsetPx: (topRegion.start + feature.get('start')) / bpPerPx,\n        },\n      ],\n      displayName: `${\n        feature.get('name') || feature.get('id') || 'breakend'\n      } split detail`,\n      featureData: undefined as unknown,\n    }\n  }\n\n  snapshotFromBreakendFeature(\n    feature: Feature,\n    view: { displayedRegions: Region[] } & IStateTreeNode,\n  ) {\n    const session = getSession(view)\n    const bpPerPx = 10\n    const { assemblyName } = view.displayedRegions[0]!\n\n    const { assemblyManager } = session\n    const assembly = assemblyManager.get(assemblyName)\n    if (!assembly) {\n      throw new Error(`assembly ${assemblyName} not found`)\n    }\n    if (!assembly.regions) {\n      throw new Error(`assembly ${assemblyName} regions not loaded`)\n    }\n    const {\n      refName,\n      pos: startPos,\n      mateRefName,\n      matePos: endPos,\n    } = this.getBreakendCoveringRegions({\n      feature,\n      assembly,\n    })\n\n    const topRegion = assembly.regions.find(f => f.refName === refName)!\n    const bottomRegion = assembly.regions.find(f => f.refName === mateRefName)!\n    const topMarkedRegion = [{ ...topRegion }, { ...topRegion }]\n    const bottomMarkedRegion = [{ ...bottomRegion }, { ...bottomRegion }]\n    topMarkedRegion[0]!.end = startPos\n    topMarkedRegion[1]!.start = startPos\n    bottomMarkedRegion[0]!.end = endPos\n    bottomMarkedRegion[1]!.start = endPos\n    return {\n      type: 'BreakpointSplitView',\n      views: [\n        {\n          type: 'LinearGenomeView',\n          displayedRegions: topMarkedRegion,\n          hideHeader: true,\n          bpPerPx,\n          offsetPx: (topRegion.start + feature.get('start')) / bpPerPx,\n        },\n        {\n          type: 'LinearGenomeView',\n          displayedRegions: bottomMarkedRegion,\n          hideHeader: true,\n          bpPerPx,\n          offsetPx: (bottomRegion.start + endPos) / bpPerPx,\n        },\n      ],\n      displayName: `${\n        feature.get('name') || feature.get('id') || 'breakend'\n      } split detail`,\n    }\n  }\n}\n","import React, { lazy } from 'react'\nimport {\n  types,\n  onAction,\n  addDisposer,\n  getPath,\n  Instance,\n} from 'mobx-state-tree'\nimport { autorun } from 'mobx'\nimport { saveAs } from 'file-saver'\n\n// jbrowse\nimport {\n  LinearGenomeViewModel,\n  LinearGenomeViewStateModel,\n} from '@jbrowse/plugin-linear-genome-view'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { getSession, Feature, notEmpty } from '@jbrowse/core/util'\nimport { AnyConfigurationModel, getConf } from '@jbrowse/core/configuration'\n\n// icons\nimport PhotoCamera from '@mui/icons-material/PhotoCamera'\nimport LinkIcon from '@mui/icons-material/Link'\n\n// locals\nimport { intersect } from './util'\n\n// lazies\nconst ExportSvgDialog = lazy(() => import('./components/ExportSvgDialog'))\n\ninterface Display {\n  searchFeatureByID?: (str: string) => LayoutRecord\n}\n\ninterface Track {\n  displays: Display[]\n}\n\nfunction calc(track: Track, f: Feature) {\n  return track.displays[0]!.searchFeatureByID?.(f.id())\n}\n\nexport interface ExportSvgOptions {\n  rasterizeLayers?: boolean\n  filename?: string\n  Wrapper?: React.FC<{ children: React.ReactNode }>\n  fontSize?: number\n  rulerHeight?: number\n  textHeight?: number\n  paddingHeight?: number\n  headerHeight?: number\n  cytobandHeight?: number\n  trackLabels?: string\n  themeName?: string\n}\n\ntype LGV = LinearGenomeViewModel\n\nexport interface Breakend {\n  MateDirection: string\n  Join: string\n  Replacement: string\n  MatePosition: string\n}\n\nexport type LayoutRecord = [number, number, number, number]\n\nasync function getBlockFeatures(\n  model: BreakpointViewModel,\n  track: { configuration: AnyConfigurationModel },\n) {\n  const { views } = model\n  const { rpcManager, assemblyManager } = getSession(model)\n  const assemblyName = model.views[0]?.assemblyNames[0]\n  if (!assemblyName) {\n    return undefined\n  }\n  const assembly = await assemblyManager.waitForAssembly(assemblyName)\n  if (!assembly) {\n    return undefined // throw new Error(`assembly not found: \"${assemblyName}\"`)\n  }\n  const sessionId = track.configuration.trackId\n  return Promise.all(\n    views.map(async view =>\n      (\n        (await rpcManager.call(sessionId, 'CoreGetFeatures', {\n          adapterConfig: getConf(track, ['adapter']),\n          sessionId,\n          regions: view.staticBlocks.contentBlocks,\n        })) as Feature[][]\n      ).flat(),\n    ),\n  )\n}\n\n/**\n * #stateModel BreakpointSplitView\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nexport default function stateModelFactory(pluginManager: PluginManager) {\n  const minHeight = 40\n  const defaultHeight = 400\n  return types\n    .compose(\n      'BreakpointSplitView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('BreakpointSplitView'),\n        /**\n         * #property\n         */\n        height: types.optional(\n          types.refinement(\n            'viewHeight',\n            types.number,\n            (n: number) => n >= minHeight,\n          ),\n          defaultHeight,\n        ),\n        /**\n         * #property\n         */\n        trackSelectorType: 'hierarchical',\n        /**\n         * #property\n         */\n        showIntraviewLinks: true,\n        /**\n         * #property\n         */\n        linkViews: false,\n        /**\n         * #property\n         */\n        interactToggled: false,\n        /**\n         * #property\n         */\n        views: types.array(\n          pluginManager.getViewType('LinearGenomeView')!\n            .stateModel as LinearGenomeViewStateModel,\n        ),\n      }),\n    )\n    .volatile(() => ({\n      width: 800,\n      matchedTrackFeatures: {} as Record<string, Feature[][]>,\n    }))\n    .views(self => ({\n      /**\n       * #method\n       * creates an svg export and save using FileSaver\n       */\n      async exportSvg(opts: ExportSvgOptions = {}) {\n        const { renderToSvg } = await import(\n          './svgcomponents/SVGBreakpointSplitView'\n        )\n        const html = await renderToSvg(self as BreakpointViewModel, opts)\n        const blob = new Blob([html], { type: 'image/svg+xml' })\n        saveAs(blob, opts.filename || 'image.svg')\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       * Find all track ids that match across multiple views, or return just\n       * the single view's track if only a single row is used\n       */\n      get matchedTracks() {\n        return self.views.length === 1\n          ? self.views[0]!.tracks\n          : intersect(\n              elt => elt.configuration.trackId,\n              ...self.views.map(\n                view => view.tracks as { configuration: { trackId: string } }[],\n              ),\n            )\n      },\n\n      /**\n       * #method\n       * Get tracks with a given trackId across multiple views\n       */\n      getMatchedTracks(trackConfigId: string) {\n        return self.views\n          .map(view => view.getTrack(trackConfigId))\n          .filter(f => !!f)\n      },\n\n      /**\n       * #method\n       * Translocation features are handled differently since they do not have\n       * a mate e.g. they are one sided\n       */\n      hasTranslocations(trackConfigId: string) {\n        return [...this.getTrackFeatures(trackConfigId).values()].find(\n          f => f.get('type') === 'translocation',\n        )\n      },\n\n      /**\n       * #method\n       * Paired features similar to breakends, but simpler, like BEDPE\n       */\n      hasPairedFeatures(trackConfigId: string) {\n        return [...this.getTrackFeatures(trackConfigId).values()].find(\n          f => f.get('type') === 'paired_feature',\n        )\n      },\n\n      /**\n       * #method\n       * Get a composite map of featureId-\\>feature map for a track across\n       * multiple views\n       */\n      getTrackFeatures(trackConfigId: string) {\n        return new Map(\n          self.matchedTrackFeatures[trackConfigId]\n            ?.flat()\n            .map(f => [f.id(), f] as const),\n        )\n      },\n\n      /**\n       * #method\n       */\n      getMatchedFeaturesInLayout(trackConfigId: string, features: Feature[][]) {\n        // use reverse to search the second track first\n        const tracks = this.getMatchedTracks(trackConfigId)\n        return features.map(c =>\n          c\n            .map(feature => {\n              const level = tracks.findIndex(track => calc(track, feature))\n              return level !== -1\n                ? {\n                    feature,\n                    layout: calc(tracks[level], feature),\n                    level,\n                  }\n                : undefined\n            })\n            .filter(notEmpty),\n        )\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          onAction(\n            self,\n            ({\n              name,\n              path,\n              args,\n            }: {\n              name: string\n              path?: string\n              args?: unknown[]\n            }) => {\n              if (self.linkViews) {\n                const actions = [\n                  'horizontalScroll',\n                  'zoomTo',\n                  'setScaleFactor',\n                  'showTrack',\n                  'toggleTrack',\n                  'hideTrack',\n                  'setTrackLabels',\n                  'toggleCenterLine',\n                ]\n                if (actions.includes(name) && path) {\n                  this.onSubviewAction(name, path, args)\n                }\n              }\n            },\n          ),\n        )\n      },\n\n      onSubviewAction(actionName: string, path: string, args?: unknown[]) {\n        self.views.forEach(view => {\n          const ret = getPath(view)\n          if (!ret.endsWith(path)) {\n            // @ts-ignore\n            view[actionName](args?.[0])\n          }\n        })\n      },\n\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.width = newWidth\n        self.views.forEach(v => {\n          v.setWidth(newWidth)\n        })\n      },\n\n      /**\n       * #action\n       */\n      removeView(view: LGV) {\n        self.views.remove(view)\n      },\n\n      /**\n       * #action\n       */\n      toggleInteract() {\n        self.interactToggled = !self.interactToggled\n      },\n\n      /**\n       * #action\n       */\n      toggleIntraviewLinks() {\n        self.showIntraviewLinks = !self.showIntraviewLinks\n      },\n\n      /**\n       * #action\n       */\n      toggleLinkViews() {\n        self.linkViews = !self.linkViews\n      },\n\n      /**\n       * #action\n       */\n      setMatchedTrackFeatures(obj: Record<string, Feature[][]>) {\n        self.matchedTrackFeatures = obj\n      },\n      /**\n       * #action\n       */\n      reverseViewOrder() {\n        self.views.reverse()\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(async () => {\n            try {\n              if (!self.views.every(view => view.initialized)) {\n                return\n              }\n              self.setMatchedTrackFeatures(\n                Object.fromEntries(\n                  await Promise.all(\n                    self.matchedTracks.map(async track => [\n                      track.configuration.trackId,\n                      await getBlockFeatures(self as any, track),\n                    ]),\n                  ),\n                ),\n              )\n            } catch (e) {\n              console.error(e)\n              getSession(self).notifyError(`${e}`, e)\n            }\n          }),\n        )\n      },\n\n      /**\n       * #method\n       */\n      menuItems() {\n        return [\n          ...self.views\n            .map((view, idx) => [idx, view.menuItems()] as const)\n            .map(f => ({\n              label: `Row ${f[0] + 1} view menu`,\n              subMenu: f[1],\n            })),\n\n          {\n            label: 'Reverse view order',\n            onClick: () => {\n              self.reverseViewOrder()\n            },\n          },\n          {\n            label: 'Show intra-view links',\n            type: 'checkbox',\n            checked: self.showIntraviewLinks,\n            onClick: () => {\n              self.toggleIntraviewLinks()\n            },\n          },\n          {\n            label: 'Allow clicking alignment squiggles?',\n            type: 'checkbox',\n            checked: self.interactToggled,\n            onClick: () => {\n              self.toggleInteract()\n            },\n          },\n\n          {\n            label: 'Link views',\n            type: 'checkbox',\n            icon: LinkIcon,\n            checked: self.linkViews,\n            onClick: () => {\n              self.toggleLinkViews()\n            },\n          },\n          {\n            label: 'Export SVG',\n            icon: PhotoCamera,\n            onClick: (): void => {\n              getSession(self).queueDialog(handleClose => [\n                ExportSvgDialog,\n                { model: self, handleClose },\n              ])\n            },\n          },\n        ]\n      },\n    }))\n}\n\nexport type BreakpointViewStateModel = ReturnType<typeof stateModelFactory>\nexport type BreakpointViewModel = Instance<BreakpointViewStateModel>\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\nimport BreakpointAlignmentsWidgetF from './BreakpointAlignmentsFeatureDetail'\nimport BreakpointSplitViewF from './BreakpointSplitView'\n\nexport default class BreakpointSplitViewPlugin extends Plugin {\n  name = 'BreakpointSplitViewPlugin'\n\n  install(pluginManager: PluginManager) {\n    BreakpointSplitViewF(pluginManager)\n    BreakpointAlignmentsWidgetF(pluginManager)\n  }\n\n  configure() {}\n}\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport BreakpointSplitView from './BreakpointSplitView'\nimport stateModelFactory from './model'\n\nexport default function BreakpointSplitViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new BreakpointSplitView({\n      name: 'BreakpointSplitView',\n      displayName: 'Breakpoint split view',\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/BreakpointSplitView')),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config PAFAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst PAFAdapter = ConfigurationSchema(\n  'PAFAdapter',\n  {\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second',\n    },\n    /**\n     * #slot\n     */\n    targetAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the target assembly name',\n    },\n    /**\n     * #slot\n     */\n    queryAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the query assembly name',\n    },\n    /**\n     * #slot\n     */\n    pafLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/file.paf',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default PAFAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config PairwiseIndexedPAFAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst PairwiseIndexedPAFAdapter = ConfigurationSchema(\n  'PairwiseIndexedPAFAdapter',\n  {\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second',\n    },\n    /**\n     * #slot\n     */\n    targetAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the target assembly name',\n    },\n    /**\n     * #slot\n     */\n    queryAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the query assembly name',\n    },\n    /**\n     * #slot\n     */\n    pifGzLocation: {\n      type: 'fileLocation',\n      description: 'location of pairwise tabix indexed PAF (pif)',\n      defaultValue: {\n        uri: '/path/to/data/file.pif.gz',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    index: ConfigurationSchema('TabixIndex', {\n      /**\n       * #slot index.indexType\n       */\n      indexType: {\n        model: types.enumeration('IndexType', ['TBI', 'CSI']),\n        type: 'stringEnum',\n        defaultValue: 'TBI',\n      },\n      /**\n       * #slot index.location\n       */\n      location: {\n        type: 'fileLocation',\n        defaultValue: {\n          uri: '/path/to/my.paf.gz.tbi',\n          locationType: 'UriLocation',\n        },\n      },\n    }),\n  },\n  { explicitlyTyped: true },\n)\n\nexport default PairwiseIndexedPAFAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config MCScanAnchorsAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst MCScanAnchorsAdapter = ConfigurationSchema(\n  'MCScanAnchorsAdapter',\n  {\n    /**\n     * #slot\n     */\n    mcscanAnchorsLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/mcscan.anchors',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    bed1Location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/file.bed',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    bed2Location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/file.bed',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default MCScanAnchorsAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config MCScanSimpleAnchorsAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst MCScanSimpleAnchorsAdapter = ConfigurationSchema(\n  'MCScanSimpleAnchorsAdapter',\n  {\n    /**\n     * #slot\n     */\n    mcscanSimpleAnchorsLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/mcscan.anchors.simple',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    bed1Location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/file.bed',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    bed2Location: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/file.bed',\n        locationType: 'UriLocation',\n      },\n    },\n\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default MCScanSimpleAnchorsAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config MashMapAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst MashMapAdapter = ConfigurationSchema(\n  'MashMapAdapter',\n  {\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Target is the first value in the array, query is the second',\n    },\n\n    /**\n     * #slot\n     */\n    targetAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames array: the target assembly',\n    },\n    /**\n     * #slot\n     */\n    queryAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames array: the query assembly',\n    },\n    /**\n     * #slot\n     */\n    outLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/mashmap.out',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default MashMapAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config DeltaAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst DeltaAdapter = ConfigurationSchema(\n  'DeltaAdapter',\n  {\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second',\n    },\n    /**\n     * #slot\n     * alternative to assembly names\n     */\n    targetAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the target assembly name',\n    },\n    /**\n     * #slot\n     * alternative to assembly names\n     */\n    queryAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames: the query assembly name',\n    },\n    /**\n     * #slot\n     */\n    deltaLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/file.delta', locationType: 'UriLocation' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default DeltaAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config ChainAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst ChainAdapter = ConfigurationSchema(\n  'ChainAdapter',\n  {\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Target is the first value in the array, query is the second',\n    },\n    /**\n     * #slot\n     * can be specified as alternative to assemblyNames\n     */\n    targetAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames array: the target assembly',\n    },\n    /**\n     * #slot\n     * can be specified as alternative to assemblyNames\n     */\n    queryAssembly: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Alternative to assemblyNames array: the query assembly',\n    },\n    /**\n     * #slot\n     */\n    chainLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/file.chain', locationType: 'UriLocation' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default ChainAdapter\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\n\nimport PAFAdapterF from './PAFAdapter'\nimport PairwiseIndexedPAFAdapterF from './PairwiseIndexedPAFAdapter'\nimport MCScanAnchorsAdapterF from './MCScanAnchorsAdapter'\nimport MCScanSimpleAnchorsAdapterF from './MCScanSimpleAnchorsAdapter'\nimport MashMapAdapterF from './MashMapAdapter'\nimport DeltaAdapterF from './DeltaAdapter'\nimport ChainAdapterF from './ChainAdapter'\n\nimport {\n  getFileName,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default class ComparativeAdaptersPlugin extends Plugin {\n  name = 'ComparativeAdaptersPlugin'\n\n  install(pluginManager: PluginManager) {\n    PAFAdapterF(pluginManager)\n    PairwiseIndexedPAFAdapterF(pluginManager)\n    DeltaAdapterF(pluginManager)\n    ChainAdapterF(pluginManager)\n    MCScanAnchorsAdapterF(pluginManager)\n    MCScanSimpleAnchorsAdapterF(pluginManager)\n    MashMapAdapterF(pluginManager)\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.paf/i\n          const adapterName = 'PAFAdapter'\n          const fileName = getFileName(file)\n          if (regexGuess.test(fileName) || adapterHint === adapterName) {\n            return {\n              type: adapterName,\n              pafLocation: file,\n            }\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n    pluginManager.addToExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (trackTypeGuesser: TrackTypeGuesser) => {\n        return (adapterName: string) =>\n          adapterName === 'PAFAdapter'\n            ? 'SyntenyTrack'\n            : trackTypeGuesser(adapterName)\n      },\n    )\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function PAFAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'PAFAdapter',\n        displayName: 'PAF adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () => import('./PAFAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function PairwiseIndexedPAFAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'PairwiseIndexedPAFAdapter',\n        displayName: 'Pairwise indexed PAF adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./PairwiseIndexedPAFAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function DeltaAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'DeltaAdapter',\n        displayName: 'MUMmer delta adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () => import('./DeltaAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function ChainAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'ChainAdapter',\n        displayName: 'Liftover chain adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () => import('./ChainAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function MCScanAnchorsAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'MCScanAnchorsAdapter',\n        displayName: 'MCScan anchors adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n\n        getAdapterClass: () =>\n          import('./MCScanAnchorsAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function MCScanSimpleAnchorsAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'MCScanSimpleAnchorsAdapter',\n        displayName: 'MCScan anchors.simple adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./MCScanSimpleAnchorsAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default function MashMapAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'MashMapAdapter',\n        displayName: 'MashMap adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () => import('./MashMapAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { getParent, Instance } from 'mobx-state-tree'\nimport { observable } from 'mobx'\nimport Base1DView from '@jbrowse/core/util/Base1DViewModel'\nimport calculateDynamicBlocks from '@jbrowse/core/util/calculateDynamicBlocks'\n\n/**\n * #stateModel Dotplot1DView\n * ref https://mobx-state-tree.js.org/concepts/volatiles on volatile state used here\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst Dotplot1DView = Base1DView.extend(self => {\n  const scaleFactor = observable.box(1)\n  return {\n    views: {\n      /**\n       * #getter\n       * this uses padding=false and elision=false\n       */\n      get dynamicBlocks() {\n        return calculateDynamicBlocks(self, false, false)\n      },\n      /**\n       * #getter\n       */\n\n      get scaleFactor() {\n        return scaleFactor.get()\n      },\n\n      /**\n       * #getter\n       */\n      get maxBpPerPx() {\n        return self.totalBp / (self.width - 50)\n      },\n\n      /**\n       * #getter\n       */\n      get minBpPerPx() {\n        return 1 / 50\n      },\n\n      /**\n       * #getter\n       */\n      get maxOffset() {\n        return self.displayedRegionsTotalPx - self.width * 0.2\n      },\n\n      /**\n       * #getter\n       */\n      get minOffset() {\n        return -self.width * 0.8\n      },\n    },\n    actions: {\n      /**\n       * #action\n       */\n      setScaleFactor(n: number) {\n        scaleFactor.set(n)\n      },\n\n      /**\n       * #action\n       */\n      center() {\n        const centerBp = self.totalBp / 2\n        const centerPx = centerBp / self.bpPerPx\n        self.scrollTo(centerPx - self.width / 2)\n      },\n    },\n  }\n})\n\nconst DotplotHView = Dotplot1DView.extend(self => ({\n  views: {\n    get width() {\n      return getParent<any>(self).viewWidth\n    },\n  },\n}))\n\nconst DotplotVView = Dotplot1DView.extend(self => ({\n  views: {\n    get width() {\n      return getParent<any>(self).viewHeight\n    },\n  },\n}))\n\nexport { DotplotVView, DotplotHView, Dotplot1DView }\nexport type Dotplot1DViewModel = Instance<typeof Dotplot1DView>\n","import React, { lazy } from 'react'\nimport {\n  addDisposer,\n  cast,\n  getParent,\n  getRoot,\n  getSnapshot,\n  resolveIdentifier,\n  types,\n  Instance,\n  SnapshotIn,\n} from 'mobx-state-tree'\nimport { saveAs } from 'file-saver'\nimport { autorun, transaction } from 'mobx'\n\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { BaseTrackStateModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport BaseViewModel from '@jbrowse/core/pluggableElementTypes/models/BaseViewModel'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport {\n  getSession,\n  isSessionModelWithWidgets,\n  minmax,\n  measureText,\n  max,\n  localStorageGetItem,\n  getTickDisplayStr,\n} from '@jbrowse/core/util'\nimport { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\nimport PhotoCameraIcon from '@mui/icons-material/PhotoCamera'\n\n// locals\nimport { Dotplot1DView, DotplotHView, DotplotVView } from './1dview'\nimport { getBlockLabelKeysToHide, makeTicks } from './components/util'\nimport { BaseBlock } from '@jbrowse/core/util/blockTypes'\n\n// lazies\nconst ExportSvgDialog = lazy(() => import('./components/ExportSvgDialog'))\nconst ReturnToImportFormDialog = lazy(\n  () => import('@jbrowse/core/ui/ReturnToImportFormDialog'),\n)\ntype Coord = [number, number]\n\nexport interface ExportSvgOptions {\n  rasterizeLayers?: boolean\n  filename?: string\n  Wrapper?: React.FC<{ children: React.ReactNode }>\n  themeName?: string\n}\n\nfunction stringLenPx(a: string) {\n  return measureText(a.slice(0, 30))\n}\n\nfunction pxWidthForBlocks(\n  blocks: BaseBlock[],\n  bpPerPx: number,\n  hide: Set<string>,\n) {\n  return max([\n    ...blocks.filter(b => !hide.has(b.key)).map(b => stringLenPx(b.refName)),\n    ...blocks\n      .filter(b => !hide.has(b.key))\n      .map(b => stringLenPx(getTickDisplayStr(b.end, bpPerPx))),\n  ])\n}\n\n/**\n * #stateModel DotplotView\n * #category view\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nexport default function stateModelFactory(pm: PluginManager) {\n  return types\n    .compose(\n      'DotplotView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        id: ElementId,\n        /**\n         * #property\n         */\n        type: types.literal('DotplotView'),\n        /**\n         * #property\n         */\n        height: 600,\n        /**\n         * #property\n         */\n        borderSize: 20,\n        /**\n         * #property\n         */\n        tickSize: 5,\n        /**\n         * #property\n         */\n        vtextRotation: 0,\n        /**\n         * #property\n         */\n        htextRotation: -90,\n        /**\n         * #property\n         */\n        fontSize: 15,\n        /**\n         * #property\n         */\n        trackSelectorType: 'hierarchical',\n        /**\n         * #property\n         */\n        assemblyNames: types.array(types.string),\n        /**\n         * #property\n         */\n        drawCigar: true,\n        /**\n         * #property\n         */\n        hview: types.optional(DotplotHView, {}),\n        /**\n         * #property\n         */\n        vview: types.optional(DotplotVView, {}),\n\n        /**\n         * #property\n         */\n        tracks: types.array(\n          pm.pluggableMstType('track', 'stateModel') as BaseTrackStateModel,\n        ),\n\n        /**\n         * #property\n         * this represents tracks specific to this view specifically used\n         * for read vs ref dotplots where this track would not really apply\n         * elsewhere\n         */\n        viewTrackConfigs: types.array(pm.pluggableConfigSchemaType('track')),\n      }),\n    )\n    .volatile(() => ({\n      volatileWidth: undefined as number | undefined,\n      volatileError: undefined as unknown,\n\n      // these are 'personal preferences', stored in volatile and\n      // loaded/written to localStorage\n      cursorMode: localStorageGetItem('dotplot-cursorMode') || 'crosshair',\n      showPanButtons: Boolean(\n        JSON.parse(localStorageGetItem('dotplot-showPanbuttons') || 'true'),\n      ),\n      wheelMode: localStorageGetItem('dotplot-wheelMode') || 'zoom',\n      borderX: 100,\n      borderY: 100,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get width(): number {\n        if (!self.volatileWidth) {\n          throw new Error('width not initialized')\n        }\n        return self.volatileWidth\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get assemblyErrors() {\n        const { assemblyManager } = getSession(self)\n        return self.assemblyNames\n          .map(a => assemblyManager.get(a)?.error)\n          .filter(f => !!f)\n          .join(', ')\n      },\n      /**\n       * #getter\n       */\n      get assembliesInitialized() {\n        const { assemblyManager } = getSession(self)\n        return self.assemblyNames.every(\n          n => assemblyManager.get(n)?.initialized ?? true,\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get initialized() {\n        return (\n          self.volatileWidth !== undefined &&\n          self.hview.displayedRegions.length > 0 &&\n          self.vview.displayedRegions.length > 0 &&\n          self.assembliesInitialized\n        )\n      },\n      /**\n       * #getter\n       */\n      get hticks() {\n        const { hview } = self\n        const { dynamicBlocks, staticBlocks, bpPerPx } = hview\n        return dynamicBlocks.contentBlocks.length > 5\n          ? []\n          : makeTicks(staticBlocks.contentBlocks, bpPerPx)\n      },\n      /**\n       * #getter\n       */\n      get vticks() {\n        const { vview } = self\n        const { dynamicBlocks, staticBlocks, bpPerPx } = vview\n        return dynamicBlocks.contentBlocks.length > 5\n          ? []\n          : makeTicks(staticBlocks.contentBlocks, bpPerPx)\n      },\n      /**\n       * #getter\n       */\n      get loading() {\n        return self.assemblyNames.length > 0 && !this.initialized\n      },\n      /**\n       * #getter\n       */\n      get viewWidth() {\n        return self.width - self.borderX\n      },\n      /**\n       * #getter\n       */\n      get viewHeight() {\n        return self.height - self.borderY\n      },\n      /**\n       * #getter\n       */\n      get views() {\n        return [self.hview, self.vview]\n      },\n\n      /**\n       * #method\n       */\n      renderProps() {\n        const session = getSession(self)\n        return {\n          ...getParentRenderProps(self),\n          drawCigar: self.drawCigar,\n          highResolutionScaling: getConf(session, 'highResolutionScaling'),\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setShowPanButtons(flag: boolean) {\n        self.showPanButtons = flag\n      },\n      /**\n       * #action\n       */\n      setWheelMode(str: string) {\n        self.wheelMode = str\n      },\n      /**\n       * #action\n       */\n      setCursorMode(str: string) {\n        self.cursorMode = str\n      },\n      /**\n       * #action\n       */\n      setDrawCigar(flag: boolean) {\n        self.drawCigar = flag\n      },\n      /**\n       * #action\n       * returns to the import form\n       */\n      clearView() {\n        self.hview.setDisplayedRegions([])\n        self.vview.setDisplayedRegions([])\n        self.assemblyNames = cast([])\n        self.tracks.clear()\n      },\n      /**\n       * #action\n       */\n      setBorderX(n: number) {\n        self.borderX = n\n      },\n      /**\n       * #action\n       */\n      setBorderY(n: number) {\n        self.borderY = n\n      },\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.volatileWidth = newWidth\n        return self.volatileWidth\n      },\n      /**\n       * #action\n       */\n      setHeight(newHeight: number) {\n        self.height = newHeight\n        return self.height\n      },\n\n      /**\n       * #action\n       */\n      setError(e: unknown) {\n        self.volatileError = e\n      },\n\n      /**\n       * #action\n       */\n      zoomOutButton() {\n        self.hview.zoomOut()\n        self.vview.zoomOut()\n      },\n      /**\n       * #action\n       */\n      zoomInButton() {\n        self.hview.zoomIn()\n        self.vview.zoomIn()\n      },\n      /**\n       * #action\n       */\n      activateTrackSelector() {\n        if (self.trackSelectorType === 'hierarchical') {\n          const session = getSession(self)\n          if (isSessionModelWithWidgets(session)) {\n            const selector = session.addWidget(\n              'HierarchicalTrackSelectorWidget',\n              'hierarchicalTrackSelector',\n              { view: self },\n            )\n            session.showWidget(selector)\n            return selector\n          }\n        }\n        throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n      },\n\n      /**\n       * #action\n       */\n      showTrack(trackId: string, initialSnapshot = {}) {\n        const schema = pm.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        const trackType = pm.getTrackType(conf.type)\n        if (!trackType) {\n          throw new Error(`unknown track type ${conf.type}`)\n        }\n        const viewType = pm.getViewType(self.type)!\n        const displayConf = conf.displays.find((d: AnyConfigurationModel) =>\n          viewType.displayTypes.find(type => type.name === d.type),\n        )\n        if (!displayConf) {\n          throw new Error(\n            `could not find a compatible display for view type ${self.type}`,\n          )\n        }\n        const track = trackType.stateModel.create({\n          ...initialSnapshot,\n          type: conf.type,\n          configuration: conf,\n          displays: [{ type: displayConf.type, configuration: displayConf }],\n        })\n        self.tracks.push(track)\n      },\n\n      /**\n       * #action\n       */\n      hideTrack(trackId: string) {\n        const schema = pm.pluggableConfigSchemaType('track')\n        const conf = resolveIdentifier(schema, getRoot(self), trackId)\n        const t = self.tracks.filter(t => t.configuration === conf)\n        transaction(() => {\n          t.forEach(t => self.tracks.remove(t))\n        })\n        return t.length\n      },\n      /**\n       * #action\n       */\n      toggleTrack(trackId: string) {\n        const hiddenCount = this.hideTrack(trackId)\n        if (!hiddenCount) {\n          this.showTrack(trackId)\n          return true\n        }\n        return false\n      },\n      /**\n       * #action\n       */\n      setAssemblyNames(target: string, query: string) {\n        self.assemblyNames = cast([target, query])\n      },\n      /**\n       * #action\n       */\n      setViews(arr: SnapshotIn<Base1DViewModel>[]) {\n        self.hview = cast(arr[0])\n        self.vview = cast(arr[1])\n      },\n\n      /**\n       * #action\n       */\n      getCoords(mousedown: Coord, mouseup: Coord) {\n        const [xmin, xmax] = minmax(mouseup[0], mousedown[0])\n        const [ymin, ymax] = minmax(mouseup[1], mousedown[1])\n        return Math.abs(xmax - xmin) > 3 && Math.abs(ymax - ymin) > 3\n          ? [\n              self.hview.pxToBp(xmin),\n              self.hview.pxToBp(xmax),\n              self.vview.pxToBp(self.viewHeight - ymin),\n              self.vview.pxToBp(self.viewHeight - ymax),\n            ]\n          : undefined\n      },\n\n      /**\n       * #action\n       * zooms into clicked and dragged region\n       */\n      zoomIn(mousedown: Coord, mouseup: Coord) {\n        const result = this.getCoords(mousedown, mouseup)\n        if (result) {\n          const [x1, x2, y1, y2] = result\n          self.hview.moveTo(x1, x2)\n          self.vview.moveTo(y2, y1)\n        }\n      },\n      /**\n       * #action\n       */\n      showAllRegions() {\n        self.hview.zoomTo(self.hview.maxBpPerPx)\n        self.vview.zoomTo(self.vview.maxBpPerPx)\n        self.vview.center()\n        self.hview.center()\n      },\n      /**\n       * #action\n       * creates a linear synteny view from the clicked and dragged region\n       */\n      onDotplotView(mousedown: Coord, mouseup: Coord) {\n        const result = this.getCoords(mousedown, mouseup)\n        if (result) {\n          const [x1, x2, y1, y2] = result\n          const session = getSession(self)\n\n          const d1 = Dotplot1DView.create({\n            ...getSnapshot(self.hview),\n            minimumBlockWidth: 0,\n            interRegionPaddingWidth: 0,\n          })\n          const d2 = Dotplot1DView.create({\n            ...getSnapshot(self.vview),\n            minimumBlockWidth: 0,\n            interRegionPaddingWidth: 0,\n          })\n          d1.setVolatileWidth(self.hview.width)\n          d2.setVolatileWidth(self.vview.width)\n          d1.moveTo(x1, x2)\n          d2.moveTo(y2, y1)\n          d1.zoomTo(d1.bpPerPx / (self.width / self.hview.width), 0)\n          d2.zoomTo(d2.bpPerPx / (self.width / self.vview.width), 0)\n\n          // add the specific evidence tracks to the LGVs in the split view\n          // note: scales the bpPerPx by scaling proportional of the dotplot\n          // width to the eventual lgv width\n          const tracks = self.tracks\n            .map(track =>\n              track.configuration.displays.find(\n                (display: { type: string }) =>\n                  display.type === 'LinearSyntenyDisplay',\n              ),\n            )\n            .filter(f => !!f)\n            .map(displayConf => {\n              const trackConf = getParent<AnyConfigurationModel>(displayConf, 2)\n              return {\n                type: trackConf.type,\n                configuration: trackConf,\n                displays: [\n                  { type: displayConf.type, configuration: displayConf },\n                ],\n              }\n            })\n\n          const { id: _unused1, ...rest1 } = getSnapshot(d1)\n          const { id: _unused2, ...rest2 } = getSnapshot(d2)\n          const viewSnapshot = {\n            type: 'LinearSyntenyView',\n            views: [\n              {\n                type: 'LinearGenomeView',\n                tracks: [],\n                hideHeader: true,\n                ...rest1,\n              },\n              {\n                type: 'LinearGenomeView',\n                tracks: [],\n                hideHeader: true,\n                ...rest2,\n              },\n            ],\n            tracks,\n          }\n\n          session.addView('LinearSyntenyView', viewSnapshot)\n        }\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       * creates an svg export and save using FileSaver\n       */\n      async exportSvg(opts: ExportSvgOptions = {}) {\n        const { renderToSvg } = await import('./svgcomponents/SVGDotplotView')\n        const html = await renderToSvg(self as DotplotViewModel, opts)\n        const blob = new Blob([html], { type: 'image/svg+xml' })\n        saveAs(blob, opts.filename || 'image.svg')\n      },\n      // if any of our assemblies are temporary assemblies\n      beforeDestroy() {\n        const session = getSession(self)\n        for (const name in self.assemblyNames) {\n          session.removeTemporaryAssembly?.(name)\n        }\n      },\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            const s = (s: unknown) => JSON.stringify(s)\n            const { showPanButtons, wheelMode, cursorMode } = self\n            if (typeof localStorage !== 'undefined') {\n              localStorage.setItem('dotplot-showPanbuttons', s(showPanButtons))\n              localStorage.setItem('dotplot-cursorMode', cursorMode)\n              localStorage.setItem('dotplot-wheelMode', wheelMode)\n            }\n          }),\n        )\n        addDisposer(\n          self,\n          autorun(\n            () => {\n              const session = getSession(self)\n\n              // don't operate if width not set yet\n              if (\n                self.volatileWidth === undefined ||\n                !self.assembliesInitialized\n              ) {\n                return\n              }\n\n              // also don't operate if displayedRegions already set, this is a\n              // helper autorun to load regions from assembly\n              if (\n                self.hview.displayedRegions.length > 0 &&\n                self.vview.displayedRegions.length > 0\n              ) {\n                return\n              }\n\n              const views = [self.hview, self.vview]\n              transaction(() => {\n                self.assemblyNames.forEach((name, index) => {\n                  const assembly = session.assemblyManager.get(name)\n                  const view = views[index]!\n                  view.setDisplayedRegions(assembly?.regions || [])\n                })\n                self.showAllRegions()\n              })\n            },\n            { delay: 1000 },\n          ),\n        )\n        addDisposer(\n          self,\n          autorun(function borderSetter() {\n            // make sure we have a width on the view before trying to load\n            if (self.volatileWidth === undefined) {\n              return\n            }\n            const { vview, hview, viewHeight, viewWidth } = self\n            const padding = 40\n            const vblocks = vview.dynamicBlocks.contentBlocks\n            const hblocks = hview.dynamicBlocks.contentBlocks\n            const hoffset = hview.offsetPx\n            const voffset = vview.offsetPx\n\n            const vhide = getBlockLabelKeysToHide(vblocks, viewHeight, voffset)\n            const hhide = getBlockLabelKeysToHide(hblocks, viewWidth, hoffset)\n            const by = pxWidthForBlocks(hblocks, vview.bpPerPx, hhide)\n            const bx = pxWidthForBlocks(vblocks, hview.bpPerPx, vhide)\n\n            // these are set via autorun to avoid dependency cycle\n            self.setBorderY(Math.max(by + padding, 50))\n            self.setBorderX(Math.max(bx + padding, 50))\n          }),\n        )\n      },\n      /**\n       * #action\n       */\n      squareView() {\n        const { hview, vview } = self\n        const avg = (hview.bpPerPx + vview.bpPerPx) / 2\n        const hpx = hview.pxToBp(hview.width / 2)\n        const vpx = vview.pxToBp(vview.width / 2)\n        hview.setBpPerPx(avg)\n        hview.centerAt(hpx.coord, hpx.refName, hpx.index)\n        vview.setBpPerPx(avg)\n        vview.centerAt(vpx.coord, vpx.refName, vpx.index)\n      },\n      /**\n       * #action\n       */\n      squareViewProportional() {\n        const { hview, vview } = self\n        const ratio = hview.width / vview.width\n        const avg = (hview.bpPerPx + vview.bpPerPx) / 2\n        const hpx = hview.pxToBp(hview.width / 2)\n        const vpx = vview.pxToBp(vview.width / 2)\n        hview.setBpPerPx(avg / ratio)\n        hview.centerAt(hpx.coord, hpx.refName, hpx.index)\n        vview.setBpPerPx(avg)\n        vview.centerAt(vpx.coord, vpx.refName, vpx.index)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      menuItems() {\n        const session = getSession(self)\n        return [\n          {\n            label: 'Return to import form',\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ReturnToImportFormDialog,\n                { model: self, handleClose },\n              ])\n            },\n            icon: FolderOpenIcon,\n          },\n          {\n            label: 'Square view - same bp per pixel',\n            onClick: () => {\n              self.squareView()\n            },\n          },\n          {\n            label: 'Rectangular view - same total bp',\n            onClick: () => {\n              self.squareView()\n            },\n          },\n          {\n            label: 'Show all regions',\n            onClick: () => {\n              self.showAllRegions()\n            },\n          },\n          {\n            label: 'Export SVG',\n            icon: PhotoCameraIcon,\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ExportSvgDialog,\n                { model: self, handleClose },\n              ])\n            },\n          },\n          ...(isSessionModelWithWidgets(session)\n            ? [\n                {\n                  label: 'Open track selector',\n                  onClick: self.activateTrackSelector,\n                  icon: TrackSelectorIcon,\n                },\n              ]\n            : []),\n        ]\n      },\n      /**\n       * #getter\n       */\n      get error(): unknown {\n        return self.volatileError || self.assemblyErrors\n      },\n    }))\n}\n\nexport type DotplotViewStateModel = ReturnType<typeof stateModelFactory>\nexport type DotplotViewModel = Instance<DotplotViewStateModel>\n\nexport { type Dotplot1DViewModel, Dotplot1DView } from './1dview'\n","import React, { useEffect, useState, CSSProperties } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { Typography } from '@mui/material'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles()(theme => {\n  const bg = theme.palette.action.disabledBackground\n  return {\n    loading: {\n      paddingLeft: '0.6em',\n      backgroundColor: theme.palette.background.default,\n      backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,\n      textAlign: 'center',\n    },\n\n    blockMessage: {\n      backgroundColor: bg,\n      padding: '10px',\n    },\n    blockError: {\n      backgroundColor: bg,\n      padding: '10px',\n      color: 'red',\n    },\n  }\n})\n\nfunction LoadingMessage() {\n  // only show the loading message after 300ms to prevent excessive flickering\n  const [shown, setShown] = useState(false)\n  const { classes } = useStyles()\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setShown(true)\n    }, 300)\n    return () => {\n      clearTimeout(timeout)\n    }\n  }, [])\n\n  return shown ? (\n    <div className={classes.loading}>\n      <LoadingEllipses />\n    </div>\n  ) : null\n}\n\nfunction BlockMessage({ messageText }: { messageText: string }) {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.blockMessage}>\n      <Typography>{messageText}</Typography>\n    </div>\n  )\n}\n\nfunction BlockError({ error }: { error: unknown }) {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.blockError}>\n      <Typography>{`${error}`}</Typography>\n    </div>\n  )\n}\n\nconst ServerSideRenderedDotplotContent = observer(function ({\n  model,\n  style,\n}: {\n  model: {\n    error?: unknown\n    message?: string\n    filled?: boolean\n    shouldDisplay?: boolean\n    reactElement?: React.ReactElement\n  }\n  style: CSSProperties\n}) {\n  if (model.error) {\n    return <BlockError error={model.error} data-testid=\"reload_button\" />\n  } else if (model.message) {\n    return <BlockMessage messageText={model.message} />\n  } else if (!model.filled) {\n    return <LoadingMessage />\n  } else if (model.shouldDisplay) {\n    return <div style={style}>{model.reactElement}</div>\n  }\n  return null\n})\n\nexport default ServerSideRenderedDotplotContent\n","import clone from 'clone'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { getSnapshot, IAnyStateTreeNode } from 'mobx-state-tree'\nimport { getContainingView, getSession } from '@jbrowse/core/util'\n\nimport { DotplotViewModel } from '../DotplotView/model'\n\nexport function renderBlockData(self: IAnyStateTreeNode) {\n  const { rpcManager } = getSession(self)\n  const { rendererType } = self\n  const { adapterConfig } = self\n  const parent = getContainingView(self) as DotplotViewModel\n\n  // Alternative to readConfObject(config) is below used because renderProps is\n  // something under our control.  Compare to serverSideRenderedBlock\n  readConfObject(self.configuration)\n  getSnapshot(parent)\n\n  if (parent.initialized) {\n    const { viewWidth, viewHeight, borderSize, borderX, borderY } = parent\n    return {\n      rendererType,\n      rpcManager,\n      renderProps: {\n        ...self.renderProps(),\n        view: clone(getSnapshot(parent)),\n        width: viewWidth,\n        height: viewHeight,\n        borderSize,\n        borderX,\n        borderY,\n        adapterConfig,\n        rendererType: rendererType.name,\n        sessionId: getRpcSessionId(self),\n        timeout: 1000000, // 10000,\n      },\n    }\n  }\n  return undefined\n}\n\nexport async function renderBlockEffect(\n  props?: ReturnType<typeof renderBlockData>,\n) {\n  if (!props) {\n    return\n  }\n\n  const { rendererType, rpcManager, renderProps } = props\n  const { reactElement, ...data } = await rendererType.renderInClient(\n    rpcManager,\n    renderProps,\n  )\n  return {\n    reactElement,\n    data,\n    renderingComponent: rendererType.ReactComponent,\n  }\n}\n","import React from 'react'\nimport { ThemeOptions } from '@mui/material'\nimport { types, Instance } from 'mobx-state-tree'\nimport {\n  getConf,\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport {\n  getContainingView,\n  makeAbortableReaction,\n  ReactRendering,\n} from '@jbrowse/core/util'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\n\n// locals\nimport ServerSideRenderedBlockContent from '../ServerSideRenderedBlockContent'\nimport { renderBlockData, renderBlockEffect } from './renderDotplotBlock'\nimport { DotplotViewModel, ExportSvgOptions } from '../DotplotView/model'\n\n/**\n * #stateModel DotplotDisplay\n * #category display\n */\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'DotplotDisplay',\n      BaseDisplay,\n      types\n        .model({\n          /**\n           * #property\n           */\n          type: types.literal('DotplotDisplay'),\n          /**\n           * #property\n           */\n          configuration: ConfigurationReference(configSchema),\n        })\n        .volatile(() => ({\n          warnings: [] as { message: string; effect: string }[],\n          renderInProgress: undefined as AbortController | undefined,\n          filled: false,\n          data: undefined as any,\n          reactElement: undefined as React.ReactElement | undefined,\n          message: undefined as string | undefined,\n          renderingComponent: undefined as any,\n          ReactComponent2:\n            ServerSideRenderedBlockContent as unknown as React.FC<any>,\n        })),\n    )\n    .views(self => ({\n      get shouldDisplay() {\n        const { vview, hview } = getContainingView(self) as DotplotViewModel\n        return (\n          vview.bpPerPx === self.data.bpPerPxY &&\n          hview.bpPerPx === self.data.bpPerPxX\n        )\n      },\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        return getConf(self, ['renderer', 'type'])\n      },\n      /**\n       * #method\n       */\n      renderProps() {\n        return {\n          ...getParentRenderProps(self),\n          rpcDriverName: self.rpcDriverName,\n          displayModel: self,\n          config: self.configuration.renderer,\n        }\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      async renderSvg(opts: ExportSvgOptions & { theme?: ThemeOptions }) {\n        const props = renderBlockData(self)\n        if (!props) {\n          return null\n        }\n\n        const { rendererType, rpcManager, renderProps } = props\n        const rendering = await rendererType.renderInClient(rpcManager, {\n          ...renderProps,\n          exportSVG: opts,\n          theme: opts.theme || renderProps.theme,\n        })\n        const { hview, vview } = getContainingView(self) as DotplotViewModel\n        const offX = -hview.offsetPx + rendering.offsetX\n        const offY = -vview.offsetPx + rendering.offsetY\n        return (\n          <g transform={`translate(${offX} ${-offY})`}>\n            <ReactRendering rendering={rendering} />\n          </g>\n        )\n      },\n    }))\n    .actions(self => {\n      let renderInProgress: undefined | AbortController\n\n      return {\n        afterAttach() {\n          makeAbortableReaction(\n            self,\n            () => renderBlockData(self),\n            blockData => renderBlockEffect(blockData),\n            {\n              name: `${self.type} ${self.id} rendering`,\n              delay: 500,\n              fireImmediately: true,\n            },\n            this.setLoading,\n            this.setRendered,\n            this.setError,\n          )\n        },\n        /**\n         * #action\n         */\n        setLoading(abortController: AbortController) {\n          self.filled = false\n          self.message = undefined\n          self.reactElement = undefined\n          self.data = undefined\n          self.error = undefined\n          self.renderingComponent = undefined\n          renderInProgress = abortController\n        },\n        /**\n         * #action\n         */\n        setMessage(messageText: string) {\n          if (renderInProgress && !renderInProgress.signal.aborted) {\n            renderInProgress.abort()\n          }\n          self.filled = false\n          self.message = messageText\n          self.reactElement = undefined\n          self.data = undefined\n          self.error = undefined\n          self.renderingComponent = undefined\n          renderInProgress = undefined\n        },\n        /**\n         * #action\n         */\n        setRendered(args?: {\n          data: any\n          reactElement: React.ReactElement\n          renderingComponent: React.Component\n        }) {\n          if (args === undefined) {\n            return\n          }\n          const { data, reactElement, renderingComponent } = args\n          self.warnings = data.warnings\n          self.filled = true\n          self.message = undefined\n          self.reactElement = reactElement\n          self.data = data\n          self.error = undefined\n          self.renderingComponent = renderingComponent\n          renderInProgress = undefined\n        },\n        /**\n         * #action\n         */\n        setError(error: unknown) {\n          console.error(error)\n          if (renderInProgress && !renderInProgress.signal.aborted) {\n            renderInProgress.abort()\n          }\n          // the rendering failed for some reason\n          self.filled = false\n          self.message = undefined\n          self.reactElement = undefined\n          self.data = undefined\n          self.error = error\n          self.renderingComponent = undefined\n          renderInProgress = undefined\n        },\n      }\n    })\n}\n\nexport type DotplotDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type DotplotDisplayModel = Instance<DotplotDisplayStateModel>\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\n\n// locals\nimport { DotplotDisplayModel } from '../stateModelFactory'\nimport { DotplotViewModel } from '../../DotplotView/model'\n\nconst DotplotDisplay = observer(function DotplotDisplay(props: {\n  model: DotplotDisplayModel\n  children?: React.ReactNode\n}) {\n  const { model, children } = props\n  const { offsetX = 0, offsetY = 0 } = model.data || {}\n  const view = getContainingView(model) as DotplotViewModel\n\n  const top = view.vview.offsetPx - offsetY\n  const left = -(view.hview.offsetPx - offsetX)\n  return (\n    <div style={{ position: 'relative' }}>\n      <model.ReactComponent2\n        {...props}\n        style={{\n          position: 'absolute',\n          top,\n          left,\n        }}\n      />\n      {children}\n    </div>\n  )\n})\n\nexport default DotplotDisplay\n","import React from 'react'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { DotplotRenderArgsDeserialized } from '../DotplotRenderer'\n\nconst DotplotRendering = observer(function (\n  props: DotplotRenderArgsDeserialized,\n) {\n  return <PrerenderedCanvas {...props} />\n})\n\nexport default DotplotRendering\n","import { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport {\n  renameRegionsIfNeeded,\n  renderToAbstractCanvas,\n  Region,\n} from '@jbrowse/core/util'\nimport ComparativeRenderer, {\n  RenderArgsDeserialized,\n  RenderArgs,\n} from '@jbrowse/core/pluggableElementTypes/renderers/ComparativeServerSideRendererType'\n\n// locals\nimport { Dotplot1DView, Dotplot1DViewModel } from '../DotplotView/model'\n\nexport interface DotplotRenderArgsDeserialized extends RenderArgsDeserialized {\n  adapterConfig: AnyConfigurationModel\n  height: number\n  width: number\n  highResolutionScaling: number\n  view: {\n    hview: Dotplot1DViewModel\n    vview: Dotplot1DViewModel\n  }\n}\n\ninterface DotplotRenderArgs extends RenderArgs {\n  adapterConfig: AnyConfigurationModel\n  sessionId: string\n  view: {\n    hview: { displayedRegions: Region[] }\n    vview: { displayedRegions: Region[] }\n  }\n}\n\nexport default class DotplotRenderer extends ComparativeRenderer {\n  supportsSVG = true\n\n  async renameRegionsIfNeeded(args: DotplotRenderArgs) {\n    const pm = this.pluginManager\n    const assemblyManager = pm.rootModel?.session?.assemblyManager\n\n    const { view, sessionId, adapterConfig } = args\n\n    async function process(regions?: Region[]) {\n      if (!assemblyManager) {\n        throw new Error('No assembly manager provided')\n      }\n      const result = await renameRegionsIfNeeded(assemblyManager, {\n        sessionId,\n        adapterConfig,\n        regions,\n      })\n      return result.regions\n    }\n\n    view.hview.displayedRegions = await process(view.hview.displayedRegions)\n    view.vview.displayedRegions = await process(view.vview.displayedRegions)\n\n    return args\n  }\n\n  async render(renderProps: DotplotRenderArgsDeserialized) {\n    const {\n      width,\n      height,\n      view: { hview, vview },\n    } = renderProps\n    const dimensions = [width, height]\n    const views = [hview, vview].map((snap, idx) => {\n      const view = Dotplot1DView.create(snap)\n      view.setVolatileWidth(dimensions[idx]!)\n      return view\n    })\n    const target = views[0]!\n    const feats = await this.getFeatures({\n      ...renderProps,\n      regions: target.dynamicBlocks.contentBlocks,\n    })\n    target.setFeatures(feats)\n\n    const { drawDotplot } = await import('./drawDotplot')\n    const ret = await renderToAbstractCanvas(width, height, renderProps, ctx =>\n      drawDotplot(ctx, { ...renderProps, views }),\n    )\n\n    const results = await super.render({\n      ...renderProps,\n      ...ret,\n      height,\n      width,\n    })\n\n    return {\n      ...results,\n      ...ret,\n      height,\n      width,\n      offsetX: views[0]!.dynamicBlocks.blocks[0]?.offsetPx || 0,\n      offsetY: views[1]!.dynamicBlocks.blocks[0]?.offsetPx || 0,\n      bpPerPxX: views[0]!.bpPerPx,\n      bpPerPxY: views[1]!.bpPerPx,\n    }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config DotplotRenderer\n * #category renderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default ConfigurationSchema(\n  'DotplotRenderer',\n  {\n    /**\n     * #slot\n     */\n    color: {\n      type: 'color',\n      description:\n        'the color of each feature in a synteny, used with colorBy:default',\n      defaultValue: '#f0f',\n      contextVariable: ['feature'],\n    },\n\n    /**\n     * #slot\n     */\n    posColor: {\n      type: 'color',\n      description: 'the color for forward alignments, used with colorBy:strand',\n      defaultValue: 'blue',\n    },\n    /**\n     * #slot\n     */\n    negColor: {\n      type: 'color',\n      description: 'the color for reverse alignments, used with colorBy:strand',\n      defaultValue: 'red',\n    },\n\n    /**\n     * #slot\n     */\n    lineWidth: {\n      type: 'number',\n      description: 'width of the lines to be drawn',\n      defaultValue: 2.5, // 2.5 is similar to D-GENIES\n    },\n\n    /**\n     * #slot\n     */\n    colorBy: {\n      type: 'stringEnum',\n      model: types.enumeration('colorBy', [\n        'identity',\n        'meanQueryIdentity',\n        'mappingQuality',\n        'strand',\n        'default',\n      ]),\n      description: `Color by options:<br/>\n<ul>\n  <li>\"identity\" - the identity of the particular hit, similar to D-GENIES, use the other config slots 'thresholds' and 'thresholdsPalette' to define colors for this setting</li>\n  <li>\"meanQueryIdentity\" - calculates the weighted mean identity (weighted by alignment length) of all the hits that the query maps to (e.g. if the query is split aligned to many target, uses their weighted mean. can help show patterns of more related and distant synteny after WGD)</li>\n  <li>\"mappingQuality\" - uses mapping quality from PAF, some adapters don't have this setting</li>\n  <li>\"strand\" - colors negative alignments with negColor and positive alignments with posColor</li>\n  <li>\"default\" - uses the 'color' config slot</li>\n</ul>`,\n      defaultValue: 'default',\n    },\n\n    /**\n     * #slot\n     */\n    thresholdsPalette: {\n      type: 'stringArray',\n      defaultValue: ['#094b09', '#2ebd40', '#d5670b', '#ffd84b'],\n      description: 'threshold colors, used with colorBy:identity',\n    },\n\n    /**\n     * #slot\n     */\n    thresholds: {\n      type: 'stringArray',\n      defaultValue: ['0.75', '0.5', '0.25', '0'],\n      description: 'threshold breakpoints, used with colorBy:identity',\n    },\n  },\n  { explicitlyTyped: true },\n)\n","import { checkAbortSignal } from '@jbrowse/core/util'\nimport RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport ComparativeRenderer, {\n  RenderArgs as ComparativeRenderArgs,\n  RenderArgsSerialized as ComparativeRenderArgsSerialized,\n  RenderResults,\n  ResultsSerialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/ComparativeServerSideRendererType'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\n\ninterface RenderArgs extends ComparativeRenderArgs {\n  adapterConfig: Record<string, unknown>\n  rendererType: string\n}\n\ninterface RenderArgsSerialized extends ComparativeRenderArgsSerialized {\n  adapterConfig: Record<string, unknown>\n  rendererType: string\n}\n\n/**\n * call a synteny renderer with the given args\n * param views: a set of views that each contain a set of regions\n * used instead of passing regions directly as in render()\n */\nexport default class ComparativeRender extends RpcMethodType {\n  name = 'ComparativeRender'\n\n  async renameRegionsIfNeeded(args: RenderArgs, rend: ComparativeRenderer) {\n    return rend.renameRegionsIfNeeded(args)\n  }\n\n  getRenderer(rendererType: string) {\n    const pm = this.pluginManager\n    return pm.getRendererType(rendererType) as ComparativeRenderer\n  }\n\n  async serializeArguments(args: RenderArgs, rpcDriver: string) {\n    const { rendererType } = args\n    const renderer = this.getRenderer(rendererType)\n    const n = (await super.serializeArguments(args, rpcDriver)) as RenderArgs\n    const result = await this.renameRegionsIfNeeded(n, renderer)\n\n    return rpcDriver === 'MainThreadRpcDriver'\n      ? result\n      : renderer.serializeArgsInClient(result)\n  }\n\n  async execute(\n    args: RenderArgsSerialized & { signal?: RemoteAbortSignal },\n    rpcDriver: string,\n  ) {\n    let deserializedArgs = args\n    if (rpcDriver !== 'MainThreadRpcDriver') {\n      deserializedArgs = await this.deserializeArguments(args, rpcDriver)\n    }\n    const { sessionId, rendererType, signal } = deserializedArgs\n    if (!sessionId) {\n      throw new Error('must pass a unique session id')\n    }\n\n    checkAbortSignal(signal)\n\n    const renderer = this.getRenderer(rendererType)\n    return rpcDriver === 'MainThreadRpcDriver'\n      ? renderer.render(deserializedArgs)\n      : renderer.renderInWorker(deserializedArgs)\n  }\n\n  async deserializeReturn(\n    val: RenderResults | ResultsSerialized,\n    args: RenderArgs,\n    rpcDriver: string,\n  ): Promise<unknown> {\n    const ret = (await super.deserializeReturn(\n      val,\n      args,\n      rpcDriver,\n    )) as ResultsSerialized\n    if (rpcDriver === 'MainThreadRpcDriver') {\n      return ret\n    }\n\n    const renderer = this.getRenderer(args.rendererType)\n    return renderer.deserializeResultsInClient(ret, args)\n  }\n}\n","import { getConf } from '@jbrowse/core/configuration'\nimport { getSession, Feature, gatherOverlaps } from '@jbrowse/core/util'\nimport {\n  LinearPileupDisplayModel,\n  MismatchParser,\n} from '@jbrowse/plugin-alignments'\n\n// locals\nimport { ReducedFeature } from '../util'\n\nconst { featurizeSA, getClip, getTag, getLength, getLengthSansClipping } =\n  MismatchParser\n\nexport function onClick(feature: Feature, self: LinearPileupDisplayModel) {\n  const session = getSession(self)\n  try {\n    const cigar = feature.get('CIGAR')\n    const clipPos = getClip(cigar, 1)\n    const flags = feature.get('flags')\n    const strand = feature.get('strand')\n    const readName = feature.get('name')\n    const readAssembly = `${readName}_assembly_${Date.now()}`\n    const { parentTrack } = self\n    const [trackAssembly] = getConf(parentTrack, 'assemblyNames')\n    const assemblyNames = [trackAssembly, readAssembly]\n    const trackId = `track-${Date.now()}`\n    const trackName = `${readName}_vs_${trackAssembly}`\n    const SA = (getTag(feature, 'SA') as string) || ''\n    const SA2 = featurizeSA(SA, feature.id(), strand, readName, true)\n\n    const feat = feature.toJSON()\n    feat.strand = 1\n    feat.mate = {\n      refName: readName,\n      start: clipPos,\n      end: clipPos + getLengthSansClipping(cigar),\n    }\n\n    // if secondary alignment or supplementary, calculate length from SA[0]'s\n    // CIGAR which is the primary alignments. otherwise it is the primary\n    // alignment just use seq.length if primary alignment\n    const totalLength = getLength(flags & 2048 ? SA2[0]!.CIGAR : cigar)\n\n    const features = [feat, ...SA2] as ReducedFeature[]\n\n    features.sort((a, b) => a.clipPos - b.clipPos)\n\n    const refLength = features.reduce((a, f) => a + f.end - f.start, 0)\n\n    session.addView('DotplotView', {\n      type: 'DotplotView',\n      hview: {\n        offsetPx: 0,\n        bpPerPx: refLength / 800,\n        displayedRegions: gatherOverlaps(\n          features.map((f, index) => {\n            const { start, end, refName } = f\n            return {\n              start,\n              end,\n              refName,\n              index,\n              assemblyName: trackAssembly,\n            }\n          }),\n        ),\n      },\n      vview: {\n        offsetPx: 0,\n        bpPerPx: totalLength / 400,\n        minimumBlockWidth: 0,\n        interRegionPaddingWidth: 0,\n        displayedRegions: [\n          {\n            assemblyName: readAssembly,\n            start: 0,\n            end: totalLength,\n            refName: readName,\n          },\n        ],\n      },\n\n      viewTrackConfigs: [\n        {\n          type: 'SyntenyTrack',\n          assemblyNames,\n          adapter: {\n            type: 'FromConfigAdapter',\n            features,\n          },\n          trackId,\n          name: trackName,\n        },\n      ],\n      assemblyNames,\n      tracks: [\n        {\n          configuration: trackId,\n          type: 'SyntenyTrack',\n          displays: [\n            {\n              type: 'DotplotDisplay',\n              configuration: `${trackId}-DotplotDisplay`,\n            },\n          ],\n        },\n      ],\n\n      displayName: `${readName} vs ${trackAssembly}`,\n    })\n  } catch (e) {\n    console.error(e)\n    session.notifyError(`${e}`, e)\n  }\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\n\n// icons\nimport TimelineIcon from '@mui/icons-material/Timeline'\n\n// locals\nimport DotplotViewF from './DotplotView'\nimport DotplotDisplayF from './DotplotDisplay'\nimport DotplotRendererF from './DotplotRenderer'\nimport LaunchDotplotViewF from './LaunchDotplotView'\nimport ComparativeRenderer from './ComparativeRenderer'\nimport DotplotReadVsRefMenuItem from './DotplotReadVsRef'\n\nexport default class DotplotPlugin extends Plugin {\n  name = 'DotplotPlugin'\n\n  install(pluginManager: PluginManager) {\n    DotplotViewF(pluginManager)\n    DotplotDisplayF(pluginManager)\n    DotplotRendererF(pluginManager)\n    LaunchDotplotViewF(pluginManager)\n    DotplotReadVsRefMenuItem(pluginManager)\n\n    // install our comparative rendering rpc callback\n    pluginManager.addRpcMethod(() => new ComparativeRenderer(pluginManager))\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToSubMenu(['Add'], {\n        label: 'Dotplot view',\n        icon: TimelineIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('DotplotView', {})\n        },\n      })\n    }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport { stateModelFactory } from './stateModelFactory'\nimport ReactComponent from './components/DotplotDisplay'\n\nexport default function DotplotDisplayF(pm: PluginManager) {\n  pm.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pm)\n    return new DisplayType({\n      name: 'DotplotDisplay',\n      displayName: 'Dotplot display',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'SyntenyTrack',\n      viewType: 'DotplotView',\n      ReactComponent,\n    })\n  })\n}\n\n/**\n * #config DotplotDisplay\n */\nexport function configSchemaFactory(pm: any) {\n  return ConfigurationSchema(\n    'DotplotDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: types.optional(pm.pluggableConfigSchemaType('renderer'), {\n        type: 'DotplotRenderer',\n      }),\n    },\n    {\n      /**\n       * #identifier\n       */\n      explicitIdentifier: 'displayId',\n      explicitlyTyped: true,\n    },\n  )\n}\n","import { lazy } from 'react'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n// locals\nimport stateModelFactory from './model'\n\nexport default function DotplotViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new ViewType({\n      name: 'DotplotView',\n      displayName: 'Dotplot view',\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/DotplotView')),\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport ReactComponent from './components/DotplotRendering'\nimport DotplotRenderer from './DotplotRenderer'\nimport configSchema from './configSchema'\n\nexport default function DotplotRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new DotplotRenderer({\n        name: 'DotplotRenderer',\n        configSchema: configSchema,\n        ReactComponent,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { DotplotViewModel } from './DotplotView/model'\nimport { transaction } from 'mobx'\n\nexport default function LaunchDotplotView(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-DotplotView',\n    // @ts-expect-error\n    async ({\n      session,\n      views,\n      tracks = [],\n    }: {\n      session: AbstractSessionModel\n      views: { loc: string; assembly: string; tracks?: string[] }[]\n      tracks?: string[]\n    }) => {\n      try {\n        const model = session.addView('DotplotView', {}) as DotplotViewModel\n        const assemblyNames = views.map(view => view.assembly)\n\n        transaction(() => {\n          model.setViews([\n            { bpPerPx: 0.1, offsetPx: 0 },\n            { bpPerPx: 0.1, offsetPx: 0 },\n          ])\n          model.setAssemblyNames(assemblyNames[0]!, assemblyNames[1]!)\n        })\n\n        // http://localhost:3000/?config=test_data%2Fvolvox%2Fconfig.json&session=spec-{\"views\":[{\"type\":\"DotplotView\",\"views\":[{\"assembly\":\"volvox\"},{\"assembly\":\"volvox\"}],\"tracks\":[\"volvox_fake_synteny\"]}]}\n\n        const idsNotFound = [] as string[]\n        tracks.forEach(track => {\n          tryTrack(model, track, idsNotFound)\n        })\n\n        if (idsNotFound.length) {\n          throw new Error(\n            `Could not resolve identifiers: ${idsNotFound.join(',')}`,\n          )\n        }\n      } catch (e) {\n        session.notifyError(`${e}`, e)\n        throw e\n      }\n    },\n  )\n}\n\nfunction tryTrack(\n  model: { showTrack: (arg: string) => void },\n  trackId: string,\n  idsNotFound: string[],\n) {\n  try {\n    model.showTrack(trackId)\n  } catch (e) {\n    if (/Could not resolve identifier/.exec(`${e}`)) {\n      idsNotFound.push(trackId)\n    } else {\n      throw e\n    }\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  DisplayType,\n  PluggableElementType,\n} from '@jbrowse/core/pluggableElementTypes'\nimport { LinearPileupDisplayModel } from '@jbrowse/plugin-alignments'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\n\n// local\nimport { onClick } from './DotplotReadVsRef'\n\nexport default function DotplotReadVsRefMenuItem(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-extendPluggableElement',\n    (pluggableElement: PluggableElementType) => {\n      if (pluggableElement.name === 'LinearPileupDisplay') {\n        const { stateModel } = pluggableElement as DisplayType\n        const newStateModel = stateModel.extend(\n          (self: LinearPileupDisplayModel) => {\n            const superContextMenuItems = self.contextMenuItems\n            return {\n              views: {\n                contextMenuItems() {\n                  const feature = self.contextMenuFeature\n                  return [\n                    ...superContextMenuItems(),\n                    ...(feature\n                      ? [\n                          {\n                            label: 'Dotplot of read vs ref',\n                            icon: AddIcon,\n                            onClick: () => {\n                              onClick(feature, self)\n                            },\n                          },\n                        ]\n                      : []),\n                  ]\n                },\n              },\n            }\n          },\n        )\n\n        ;(pluggableElement as DisplayType).stateModel = newStateModel\n      }\n      return pluggableElement\n    },\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config GtfAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst GtfAdapter = ConfigurationSchema(\n  'GtfAdapter',\n  {\n    /**\n     * #slot\n     */\n    gtfLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.gtf', locationType: 'UriLocation' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default GtfAdapter\n","import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\nimport { configSchema as gtfAdapterConfigSchema } from './GtfAdapter'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { AdapterGuesser, getFileName } from '@jbrowse/core/util/tracks'\n\nexport default class GtfPlugin extends Plugin {\n  name = 'GTFPlugin'\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addAdapterType(\n      () =>\n        new AdapterType({\n          name: 'GtfAdapter',\n          displayName: 'GTF adapter',\n          configSchema: gtfAdapterConfigSchema,\n          getAdapterClass: () =>\n            import('./GtfAdapter/GtfAdapter').then(r => r.default),\n        }),\n    )\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.gtf(\\.gz)?$/i\n          const adapterName = 'GtfAdapter'\n          const fileName = getFileName(file)\n\n          const obj = {\n            type: adapterName,\n            gtfLocation: file,\n          }\n          if (regexGuess.test(fileName) && !adapterHint) {\n            return obj\n          } else if (adapterHint === adapterName) {\n            return obj\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n  }\n}\n","import { types } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config Gff3TabixAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst Gff3TabixAdapter = ConfigurationSchema(\n  'Gff3TabixAdapter',\n  {\n    /**\n     * #slot\n     */\n    gffGzLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.gff.gz', locationType: 'UriLocation' },\n    },\n\n    index: ConfigurationSchema('Gff3TabixIndex', {\n      /**\n       * #slot index.indexType\n       */\n      indexType: {\n        model: types.enumeration('IndexType', ['TBI', 'CSI']),\n        type: 'stringEnum',\n        defaultValue: 'TBI',\n      },\n      /**\n       * #slot index.indexType\n       */\n      location: {\n        type: 'fileLocation',\n        defaultValue: {\n          uri: '/path/to/my.gff.gz.tbi',\n          locationType: 'UriLocation',\n        },\n      },\n    }),\n    /**\n     * #slot\n     * the Gff3TabixAdapter has to \"redispatch\" if it fetches a region and\n     * features it finds inside that region extend outside the region we requested.\n     * you can disable this for certain feature types to avoid fetching e.g. the\n     * entire chromosome\n     */\n    dontRedispatch: {\n      type: 'stringArray',\n      defaultValue: ['chromosome', 'region', 'contig'],\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default Gff3TabixAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config Gff3Adapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst Gff3Adapter = ConfigurationSchema(\n  'Gff3Adapter',\n  {\n    /**\n     * #slot\n     */\n    gffLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.gff', locationType: 'UriLocation' },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default Gff3Adapter\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\n\nimport Gff3TabixAdapterF from './Gff3TabixAdapter'\nimport Gff3AdapterF from './Gff3Adapter'\nimport GuessGff3F from './GuessGff3'\n\nexport default class GFF3Plugin extends Plugin {\n  name = 'GFF3Plugin'\n\n  install(pluginManager: PluginManager) {\n    Gff3TabixAdapterF(pluginManager)\n    Gff3AdapterF(pluginManager)\n    GuessGff3F(pluginManager)\n  }\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\n\nexport default function Gff3TabixAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'Gff3TabixAdapter',\n        displayName: 'GFF3 tabix adapter',\n        configSchema,\n        getAdapterClass: () =>\n          import('./Gff3TabixAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\n\nexport default function Gff3AdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'Gff3Adapter',\n        displayName: 'GFF3 adapter',\n        configSchema,\n        getAdapterClass: () => import('./Gff3Adapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  makeIndex,\n  makeIndexType,\n  getFileName,\n  AdapterGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default function GuessGff3F(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.gff3?\\.b?gz$/i\n        const adapterName = 'Gff3TabixAdapter'\n        const fileName = getFileName(file)\n        const indexName = index && getFileName(index)\n        if (regexGuess.test(fileName) || adapterHint === adapterName) {\n          return {\n            type: adapterName,\n            bamLocation: file,\n            gffGzLocation: file,\n            index: {\n              location: index || makeIndex(file, '.tbi'),\n              indexType: makeIndexType(indexName, 'CSI', 'TBI'),\n            },\n          }\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.gff3?$/i\n        const adapterName = 'Gff3Adapter'\n        const fileName = getFileName(file)\n        const obj = {\n          type: adapterName,\n          gffLocation: file,\n        }\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n}\n","import { types } from 'mobx-state-tree'\n\n/**\n * #stateModel\n */\nexport const Job = types\n  .model('Job', {\n    /**\n     * #property\n     */\n    name: types.string,\n    /**\n     * #property\n     */\n    statusMessage: types.maybe(types.string),\n    /**\n     * #property\n     */\n    progressPct: types.number,\n  })\n  .volatile(() => ({\n    cancelCallback() {},\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    setCancelCallback(cancelCallback: () => void) {\n      self.cancelCallback = cancelCallback\n    },\n\n    /**\n     * #action\n     */\n    setStatusMessage(message?: string) {\n      self.statusMessage = message\n    },\n\n    /**\n     * #action\n     */\n    setProgressPct(pct: number) {\n      self.progressPct = pct\n    },\n  }))\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport { lazy } from 'react'\n\nimport { stateModelFactory } from './model'\nexport const configSchema = ConfigurationSchema('JobsListWidget', {})\n\nexport default function JobsListWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'JobsListWidget',\n      heading: 'Jobs list',\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/JobsListWidget')),\n    })\n  })\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { SessionWithWidgets, isAbstractMenuManager } from '@jbrowse/core/util'\nimport { Indexing } from '@jbrowse/core/ui/Icons'\nimport { isSessionModelWithWidgets } from '@jbrowse/core/util'\nimport JobsListWidgetF from './JobsListWidget'\n\nexport default class JobsManagementPlugin extends Plugin {\n  name = 'JobsManagementPlugin'\n\n  install(pluginManager: PluginManager) {\n    JobsListWidgetF(pluginManager)\n  }\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToMenu('Tools', {\n        label: 'Jobs list',\n        icon: Indexing, // TODO: pick a better icon\n        onClick: (session: SessionWithWidgets) => {\n          if (isSessionModelWithWidgets(session)) {\n            const { widgets } = session\n            let jobStatusWidget = widgets.get('JobsList')\n            if (!jobStatusWidget) {\n              jobStatusWidget = session.addWidget('JobsListWidget', 'JobsList')\n              session.showWidget(jobStatusWidget)\n            } else {\n              session.showWidget(jobStatusWidget)\n            }\n          }\n        },\n      })\n    }\n  }\n}\n","import { types, Instance, SnapshotIn } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { Job } from './jobModel'\n\nexport interface NewJob extends SnapshotIn<typeof Job> {\n  cancelCallback(): void\n  setStatusMessage(msg?: string): void\n}\n\n/**\n * #stateModel JobsListModel\n */\nexport function stateModelFactory(_pluginManager: PluginManager) {\n  return types\n    .model('JobsListModel', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('JobsListWidget'),\n      /**\n       * #property\n       */\n      jobs: types.array(Job),\n      /**\n       * #property\n       */\n      finished: types.array(Job),\n      /**\n       * #property\n       */\n      queued: types.array(Job),\n      /**\n       * #property\n       */\n      aborted: types.array(Job),\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      addJob(job: NewJob) {\n        const { cancelCallback } = job\n        const length = self.jobs.push(job)\n        const addedJob = self.jobs[length - 1]!\n        addedJob.setCancelCallback(cancelCallback)\n        return addedJob\n      },\n      /**\n       * #action\n       */\n      removeJob(jobName: string) {\n        const indx = self.jobs.findIndex(job => job.name === jobName)\n        const removed = self.jobs[indx]\n        self.jobs.splice(indx, 1)\n        return removed\n      },\n      /**\n       * #action\n       */\n      addFinishedJob(job: NewJob) {\n        self.finished.push(job)\n        return self.finished\n      },\n      /**\n       * #action\n       */\n      addQueuedJob(job: NewJob) {\n        self.queued.push(job)\n        return self.finished\n      },\n      /**\n       * #action\n       */\n      addAbortedJob(job: NewJob) {\n        self.aborted.push(job)\n        return self.aborted\n      },\n      /**\n       * #action\n       */\n      removeQueuedJob(jobName: string) {\n        const indx = self.queued.findIndex(job => job.name === jobName)\n        const removed = self.queued[indx]\n        self.queued.splice(indx, 1)\n        return removed\n      },\n      /**\n       * #action\n       */\n      updateJobStatusMessage(jobName: string, message?: string) {\n        const job = self.jobs.find(job => job.name === jobName)\n        if (!job) {\n          throw new Error(`No job found with name ${jobName}`)\n        }\n        job.setStatusMessage(message)\n      },\n      /**\n       * #action\n       */\n      updateJobProgressPct(jobName: string, pct: number) {\n        const job = self.jobs.find(job => job.name === jobName)\n        if (!job) {\n          throw new Error(`No job found with name ${jobName}`)\n        }\n        job.setProgressPct(pct)\n      },\n    }))\n}\n\nexport type JobsListStateModel = ReturnType<typeof stateModelFactory>\nexport type JobsListModel = Instance<JobsListStateModel>\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config NCListAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst NCListAdapter = ConfigurationSchema(\n  'NCListAdapter',\n  {\n    /**\n     * #slot\n     */\n    rootUrlTemplate: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my/{refseq}/trackData.json',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    refNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'List of refNames used by the NCList used for aliasing',\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default NCListAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config JBrowse1TextSearchAdapter\n * note: metadata about tracks and assemblies covered by text search adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default ConfigurationSchema(\n  'JBrowse1TextSearchAdapter',\n  {\n    /**\n     * #slot\n     */\n    namesIndexLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/volvox/names', locationType: 'UriLocation' },\n      description: 'the location of the JBrowse1 names index data directory',\n    },\n    /**\n     * #slot\n     */\n    tracks: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'List of tracks covered by text search adapter',\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'List of assemblies covered by text search adapter',\n    },\n  },\n  {\n    explicitlyTyped: true,\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'textSearchAdapterId',\n  },\n)\n","import { baseConnectionConfig } from '@jbrowse/core/pluggableElementTypes/models'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config JBrowse1Connection\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst JBrowse1Connection = ConfigurationSchema(\n  'JBrowse1Connection',\n  {\n    /**\n     * #slot\n     */\n    dataDirLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: 'http://mysite.com/jbrowse/data/',\n        locationType: 'UriLocation',\n      },\n      description:\n        'the location of the JBrowse 1 data directory, often something like http://mysite.com/jbrowse/data/',\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      description:\n        'name of the assembly the connection belongs to, should be a single entry',\n      type: 'stringArray',\n      defaultValue: [],\n    },\n  },\n  {\n    /**\n     * #baseConfiguration\n     */\n    baseConfiguration: baseConnectionConfig,\n  },\n)\n\nexport default JBrowse1Connection\n","import {\n  ConfigurationReference,\n  getConf,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseConnectionModelFactory } from '@jbrowse/core/pluggableElementTypes/models'\nimport { types } from 'mobx-state-tree'\n\n// locals\nimport configSchema from './configSchema'\n\nexport default function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'JBrowse1Connection',\n      BaseConnectionModelFactory(pluginManager),\n      types.model({\n        configuration: ConfigurationReference(configSchema),\n        type: types.literal('JBrowse1Connection'),\n      }),\n    )\n\n    .actions(self => ({\n      async connect() {\n        const session = getSession(self)\n        try {\n          const dataDirLocation = getConf(self, 'dataDirLocation')\n          const { fetchJb1 } = await import('./jb1ConfigLoad')\n          const { convertTrackConfig } = await import('./jb1ToJb2')\n          const config = await fetchJb1(dataDirLocation)\n          const assemblyName = getConf(self, 'assemblyNames')[0]\n          if (!assemblyName) {\n            throw new Error('assembly name required for JBrowse 1 connection')\n          }\n          const conf = session.assemblies.find(\n            a => readConfObject(a, 'name') === assemblyName,\n          )\n          if (!conf) {\n            throw new Error(`Assembly \"${assemblyName}\" not found`)\n          }\n          const sequenceAdapter = readConfObject(conf, ['sequence', 'adapter'])\n\n          // @ts-expect-error\n          const jb2Tracks = config.tracks?.map(jb1Track => ({\n            ...convertTrackConfig(\n              jb1Track,\n              config.dataRoot || '',\n              sequenceAdapter,\n            ),\n            assemblyNames: [assemblyName],\n          }))\n\n          self.setTrackConfs(jb2Tracks)\n        } catch (error) {\n          console.error(error)\n          session.notifyError(\n            `There was a problem connecting to the JBrowse 1 data directory \"${self.name}\". Please make sure you have entered a valid location. The error that was thrown is: \"${error}\"`,\n            error,\n          )\n          session.breakConnection?.(self.configuration)\n        }\n      },\n    }))\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport NCListAdapterF from './NCListAdapter'\nimport JBrowse1TextSearchAdapterF from './JBrowse1TextSearchAdapter'\nimport JBrowse1ConnectionF from './JBrowse1Connection'\nimport GuessNCListF from './GuessNCList'\n\nexport default class LegacyJBrowsePlugin extends Plugin {\n  name = 'LegacyJBrowsePlugin'\n\n  install(pluginManager: PluginManager) {\n    NCListAdapterF(pluginManager)\n    GuessNCListF(pluginManager)\n    JBrowse1TextSearchAdapterF(pluginManager)\n    JBrowse1ConnectionF(pluginManager)\n  }\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport configSchema from './configSchema'\n\nexport default function NCListAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'NCListAdapter',\n        displayName: 'NCList adapter',\n        configSchema,\n        getAdapterClass: () => import('./NCListAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AdapterGuesser, getFileName } from '@jbrowse/core/util/tracks'\nimport { FileLocation } from '@jbrowse/core/util/types'\n\nexport default function GuessNCListF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /trackData.jsonz?$/i\n        const adapterName = 'NCListAdapter'\n        const fileName = getFileName(file)\n        if (regexGuess.test(fileName) || adapterHint === adapterName) {\n          return {\n            type: adapterName,\n            rootUrlTemplate: file,\n          }\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TextSearchAdapterType from '@jbrowse/core/pluggableElementTypes/TextSearchAdapterType'\n\n// locals\nimport configSchema from './configSchema'\n\nexport default function JBrowse1TextSearchAdapterF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addTextSearchAdapterType(\n    () =>\n      new TextSearchAdapterType({\n        name: 'JBrowse1TextSearchAdapter',\n        configSchema,\n        description: 'A JBrowse 1 text search adapter',\n        getAdapterClass: () =>\n          import('./JBrowse1TextSearchAdapter').then(t => t.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport ConnectionType from '@jbrowse/core/pluggableElementTypes/ConnectionType'\n\n// locals\nimport modelFactory from './model'\nimport configSchema from './configSchema'\n\nexport default function JBrowse1ConnectionF(pluginManager: PluginManager) {\n  pluginManager.addConnectionType(\n    () =>\n      new ConnectionType({\n        name: 'JBrowse1Connection',\n        configSchema,\n        stateModel: modelFactory(pluginManager),\n        displayName: 'JBrowse 1 Data',\n        description: 'A JBrowse 1 data directory',\n        url: '//jbrowse.org/',\n      }),\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config LinearComparativeDisplay\n */\nfunction configSchemaFactory(_pluginManager: any) {\n  return ConfigurationSchema(\n    'LinearComparativeDisplay',\n    {},\n    {\n      explicitlyTyped: true,\n\n      /**\n       * #identifier\n       */\n      explicitIdentifier: 'displayId',\n    },\n  )\n}\n\nexport default configSchemaFactory\n","import {\n  readConfObject,\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport { types, getSnapshot, Instance } from 'mobx-state-tree'\nimport {\n  dedupe,\n  Feature,\n  getContainingView,\n  getSession,\n  makeAbortableReaction,\n} from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport { LinearComparativeViewModel } from '../LinearComparativeView/model'\n\n/**\n * #stateModel LinearComparativeDisplay\n * extends\n * - [BaseDisplay](../basedisplay)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearComparativeDisplay',\n      BaseDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearComparativeDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        height: 100,\n      }),\n    )\n    .volatile((/* self */) => ({\n      renderInProgress: undefined as AbortController | undefined,\n      features: undefined as Feature[] | undefined,\n      message: undefined as string | undefined,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      renderProps() {\n        return {\n          rpcDriverName: self.rpcDriverName,\n          displayModel: self,\n          highResolutionScaling: 2,\n        }\n      },\n    }))\n    .actions(self => {\n      let renderInProgress: undefined | AbortController\n\n      return {\n        /**\n         * #action\n         * controlled by a reaction\n         */\n        setLoading(abortController: AbortController) {\n          self.message = undefined\n          self.error = undefined\n          renderInProgress = abortController\n        },\n\n        /**\n         * #action\n         * controlled by a reaction\n         */\n        setMessage(messageText: string) {\n          if (renderInProgress && !renderInProgress.signal.aborted) {\n            renderInProgress.abort()\n          }\n          self.message = messageText\n          self.error = undefined\n          renderInProgress = undefined\n        },\n\n        /**\n         * #action\n         * controlled by a reaction\n         */\n        setRendered(args?: { features: Feature[] }) {\n          if (!args) {\n            return\n          }\n          const { features } = args\n          const existingFeatures = self.features || []\n\n          const featIds = new Set(existingFeatures.map(f => f.id()))\n          const newFeatIds = new Set(features.map(f => f.id()))\n\n          let foundNewFeatureNotInExistingMap = false\n          let foundExistingFeatureNotInNewMap = false\n          for (const feat of features) {\n            if (!featIds.has(feat.id())) {\n              foundNewFeatureNotInExistingMap = true\n              break\n            }\n          }\n          for (const existingFeat of existingFeatures) {\n            if (!newFeatIds.has(existingFeat.id())) {\n              foundExistingFeatureNotInNewMap = true\n              break\n            }\n          }\n\n          self.message = undefined\n          self.error = undefined\n          renderInProgress = undefined\n\n          if (\n            foundNewFeatureNotInExistingMap ||\n            foundExistingFeatureNotInNewMap ||\n            !self.features\n          ) {\n            self.features = features\n          }\n        },\n\n        /**\n         * #action\n         * controlled by a reaction\n         */\n        setError(error: unknown) {\n          console.error(error)\n          if (renderInProgress && !renderInProgress.signal.aborted) {\n            renderInProgress.abort()\n          }\n          // the rendering failed for some reason\n          self.message = undefined\n          self.error = error\n          renderInProgress = undefined\n        },\n      }\n    })\n    .actions(self => ({\n      afterAttach() {\n        makeAbortableReaction(\n          // @ts-expect-error\n          self,\n          renderBlockData,\n          renderBlockEffect,\n          {\n            name: `${self.type} ${self.id} rendering`,\n            delay: 1000,\n            fireImmediately: true,\n          },\n          self.setLoading,\n          self.setRendered,\n          self.setError,\n        )\n      },\n    }))\n}\nfunction renderBlockData(self: LinearComparativeDisplay) {\n  const { rpcManager } = getSession(self)\n  const display = self\n\n  // Alternative to readConfObject(config) is below used because renderProps is\n  // something under our control.  Compare to serverSideRenderedBlock\n  readConfObject(self.configuration)\n\n  const { adapterConfig } = self\n  const parent = getContainingView(self) as LinearComparativeViewModel\n  const sessionId = getRpcSessionId(self)\n  getSnapshot(parent)\n\n  return parent.initialized\n    ? {\n        rpcManager,\n        renderProps: {\n          ...display.renderProps(),\n          view: parent,\n          adapterConfig,\n          sessionId,\n          timeout: 1000000,\n          self,\n        },\n      }\n    : undefined\n}\n\nasync function renderBlockEffect(props: ReturnType<typeof renderBlockData>) {\n  if (!props) {\n    return\n  }\n\n  const { rpcManager, renderProps } = props\n  const { adapterConfig } = renderProps\n  const view0 = renderProps.view.views[0]\n\n  const features = (await rpcManager.call('getFeats', 'CoreGetFeatures', {\n    regions: view0.staticBlocks.contentBlocks,\n    sessionId: 'getFeats',\n    adapterConfig,\n  })) as Feature[]\n\n  return {\n    features: dedupe(features, f => f.id()),\n  }\n}\n\nexport default stateModelFactory\nexport type LinearComparativeDisplayModel = ReturnType<typeof stateModelFactory>\nexport type LinearComparativeDisplay = Instance<LinearComparativeDisplayModel>\n","import { lazy } from 'react'\nimport {\n  addDisposer,\n  cast,\n  getPath,\n  getRoot,\n  resolveIdentifier,\n  types,\n  Instance,\n  SnapshotIn,\n} from 'mobx-state-tree'\nimport { autorun, transaction } from 'mobx'\n\n// jbrowse\nimport BaseViewModel from '@jbrowse/core/pluggableElementTypes/models/BaseViewModel'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { getSession, isSessionModelWithWidgets, avg } from '@jbrowse/core/util'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport {\n  LinearGenomeViewModel,\n  LinearGenomeViewStateModel,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// icons\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\n\n// lazies\nconst ReturnToImportFormDialog = lazy(\n  () => import('@jbrowse/core/ui/ReturnToImportFormDialog'),\n)\n\n/**\n * #stateModel LinearComparativeView\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nfunction stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'LinearComparativeView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        id: ElementId,\n        /**\n         * #property\n         */\n        type: types.literal('LinearComparativeView'),\n        /**\n         * #property\n         */\n        trackSelectorType: 'hierarchical',\n        /**\n         * #property\n         */\n        showIntraviewLinks: true,\n        /**\n         * #property\n         */\n        interactToggled: false,\n        /**\n         * #property\n         */\n        middleComparativeHeight: 100,\n        /**\n         * #property\n         */\n        tracks: types.array(\n          pluginManager.pluggableMstType('track', 'stateModel'),\n        ),\n        /**\n         * #property\n         * currently this is limited to an array of two\n         */\n        views: types.array(\n          pluginManager.getViewType('LinearGenomeView')!\n            .stateModel as LinearGenomeViewStateModel,\n        ),\n\n        /**\n         * #property\n         * this represents tracks specific to this view specifically used for\n         * read vs ref dotplots where this track would not really apply\n         * elsewhere\n         */\n        viewTrackConfigs: types.array(\n          pluginManager.pluggableConfigSchemaType('track'),\n        ),\n      }),\n    )\n    .volatile(() => ({\n      /**\n       * #volatile\n       */\n      width: undefined as number | undefined,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get highResolutionScaling() {\n        return 2\n      },\n      /**\n       * #getter\n       */\n      get initialized() {\n        return (\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          self.width !== undefined &&\n          self.views.length > 0 &&\n          self.views.every(view => view.initialized)\n        )\n      },\n\n      /**\n       * #getter\n       */\n      get refNames() {\n        return self.views.map(v => [\n          ...new Set(v.staticBlocks.map(m => m.refName)),\n        ])\n      },\n\n      /**\n       * #getter\n       */\n      get assemblyNames() {\n        return [...new Set(self.views.flatMap(v => v.assemblyNames))]\n      },\n    }))\n    .actions(self => ({\n      // automatically removes session assemblies associated with this view\n      // e.g. read vs ref\n      beforeDestroy() {\n        const session = getSession(self)\n        for (const name of self.assemblyNames) {\n          session.removeTemporaryAssembly?.(name)\n        }\n      },\n\n      onSubviewAction(actionName: string, path: string, args?: unknown[]) {\n        self.views.forEach(view => {\n          const ret = getPath(view)\n          if (!ret.endsWith(path)) {\n            // @ts-expect-error\n            view[actionName](args?.[0])\n          }\n        })\n      },\n\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.width = newWidth\n      },\n\n      /**\n       * #action\n       */\n      setViews(views: SnapshotIn<LinearGenomeViewModel>[]) {\n        self.views = cast(views)\n      },\n\n      /**\n       * #action\n       */\n      removeView(view: LinearGenomeViewModel) {\n        self.views.remove(view)\n      },\n\n      /**\n       * #action\n       */\n      setMiddleComparativeHeight(n: number) {\n        self.middleComparativeHeight = n\n        return self.middleComparativeHeight\n      },\n\n      /**\n       * #action\n       */\n      activateTrackSelector() {\n        if (self.trackSelectorType === 'hierarchical') {\n          const session = getSession(self)\n          if (isSessionModelWithWidgets(session)) {\n            const selector = session.addWidget(\n              'HierarchicalTrackSelectorWidget',\n              'hierarchicalTrackSelector',\n              { view: self },\n            )\n            session.showWidget(selector)\n            return selector\n          }\n          return undefined\n        }\n        throw new Error(`invalid track selector type ${self.trackSelectorType}`)\n      },\n\n      /**\n       * #action\n       */\n      toggleTrack(trackId: string) {\n        const hiddenCount = this.hideTrack(trackId)\n        if (!hiddenCount) {\n          this.showTrack(trackId)\n          return true\n        }\n        return false\n      },\n\n      /**\n       * #action\n       */\n      showTrack(trackId: string, initialSnapshot = {}) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const configuration = resolveIdentifier(schema, getRoot(self), trackId)\n        if (!configuration) {\n          throw new Error(`track not found ${trackId}`)\n        }\n        const trackType = pluginManager.getTrackType(configuration.type)\n        if (!trackType) {\n          throw new Error(`unknown track type ${configuration.type}`)\n        }\n        const viewType = pluginManager.getViewType(self.type)!\n        const supportedDisplays = new Set(\n          viewType.displayTypes.map(d => d.name),\n        )\n        const displayConf = configuration.displays.find(\n          (d: AnyConfigurationModel) => supportedDisplays.has(d.type),\n        )\n        if (!displayConf) {\n          throw new Error(\n            `could not find a compatible display for view type ${self.type}`,\n          )\n        }\n        self.tracks.push(\n          trackType.stateModel.create({\n            ...initialSnapshot,\n            type: configuration.type,\n            configuration,\n            displays: [{ type: displayConf.type, configuration: displayConf }],\n          }),\n        )\n      },\n\n      /**\n       * #action\n       */\n      hideTrack(trackId: string) {\n        const schema = pluginManager.pluggableConfigSchemaType('track')\n        const config = resolveIdentifier(schema, getRoot(self), trackId)\n        const shownTracks = self.tracks.filter(t => t.configuration === config)\n        transaction(() => {\n          shownTracks.forEach(t => self.tracks.remove(t))\n        })\n        return shownTracks.length\n      },\n      /**\n       * #action\n       */\n      squareView() {\n        const average = avg(self.views.map(v => v.bpPerPx))\n        self.views.forEach(view => {\n          const center = view.pxToBp(view.width / 2)\n          view.setNewView(average, view.offsetPx)\n          if (!center.refName) {\n            return\n          }\n          view.centerAt(center.coord, center.refName, center.index)\n        })\n      },\n      /**\n       * #action\n       */\n      clearView() {\n        self.views = cast([])\n        self.tracks = cast([])\n      },\n    }))\n    .views(() => ({\n      /**\n       * #method\n       * includes a subset of view menu options because the full list is a\n       * little overwhelming. overridden by subclasses\n       */\n      headerMenuItems(): MenuItem[] {\n        return []\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      menuItems(): MenuItem[] {\n        return [\n          ...self.views\n            .map((view, idx) => [idx, view.menuItems()] as const)\n            .map(f => ({ label: `View ${f[0] + 1} Menu`, subMenu: f[1] })),\n          {\n            label: 'Return to import form',\n            onClick: () => {\n              getSession(self).queueDialog(handleClose => [\n                ReturnToImportFormDialog,\n                { model: self, handleClose },\n              ])\n            },\n            icon: FolderOpenIcon,\n          },\n          {\n            label: 'Open track selector',\n            onClick: self.activateTrackSelector,\n            icon: TrackSelectorIcon,\n          },\n        ]\n      },\n      /**\n       * #method\n       */\n      rubberBandMenuItems() {\n        return [\n          {\n            label: 'Zoom to region(s)',\n            onClick: () => {\n              self.views.forEach(view => {\n                const { leftOffset, rightOffset } = view\n                if (leftOffset && rightOffset) {\n                  view.moveTo(leftOffset, rightOffset)\n                }\n              })\n            },\n          },\n        ]\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            if (self.width) {\n              self.views.forEach(v => {\n                v.setWidth(self.width)\n              })\n            }\n          }),\n        )\n      },\n    }))\n}\n\nexport type LinearComparativeViewStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearComparativeViewModel =\n  Instance<LinearComparativeViewStateModel>\n\nexport default stateModelFactory\n","import { types, Instance } from 'mobx-state-tree'\nimport {\n  getConf,\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport { Feature } from '@jbrowse/core/util'\n\n// locals\nimport baseModelFactory from '../LinearComparativeDisplay/stateModelFactory'\n\ninterface Pos {\n  offsetPx: number\n}\n\nexport interface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\n/**\n * #stateModel LinearSyntenyDisplay\n * extends\n * - [LinearComparativeDisplay](../linearcomparativedisplay)\n */\nfunction stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearSyntenyDisplay',\n      baseModelFactory(configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearSyntenyDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n    .volatile(() => ({\n      // canvas used for drawing visible screen\n      mainCanvas: null as HTMLCanvasElement | null,\n\n      // canvas used for drawing click map with feature ids\n      // this renders a unique color per alignment, so that it can be re-traced\n      // after a feature click with getImageData at that pixel\n      clickMapCanvas: null as HTMLCanvasElement | null,\n\n      // canvas used for drawing click map with cigar data\n      // this can show if you are mousing over a insertion/deletion. it is similar\n      // in purpose to the clickMapRef but was not feasible to pack this into the\n      // clickMapRef\n      cigarClickMapCanvas: null as HTMLCanvasElement | null,\n\n      // canvas for drawing mouseover shading\n      // this is separate from the other code for speed: don't have to redraw\n      // entire canvas to do a feature's mouseover shading\n      mouseoverCanvas: null as HTMLCanvasElement | null,\n\n      // assigned by reaction\n      featPositions: [] as FeatPos[],\n\n      // currently mouse'd over feature\n      mouseoverId: undefined as string | undefined,\n\n      // currently click'd over feature\n      clickId: undefined as string | undefined,\n\n      // currently mouseover'd CIGAR subfeature\n      cigarMouseoverId: -1,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setFeatPositions(arg: FeatPos[]) {\n        self.featPositions = arg\n      },\n      /**\n       * #action\n       */\n      setMainCanvasRef(ref: HTMLCanvasElement | null) {\n        self.mainCanvas = ref\n      },\n      /**\n       * #action\n       */\n      setClickMapCanvasRef(ref: HTMLCanvasElement | null) {\n        self.clickMapCanvas = ref\n      },\n      /**\n       * #action\n       */\n      setCigarClickMapCanvasRef(ref: HTMLCanvasElement | null) {\n        self.cigarClickMapCanvas = ref\n      },\n      /**\n       * #action\n       */\n      setMouseoverCanvasRef(ref: HTMLCanvasElement | null) {\n        self.mouseoverCanvas = ref\n      },\n      /**\n       * #action\n       */\n      setMouseoverId(arg?: string) {\n        self.mouseoverId = arg\n      },\n      /**\n       * #action\n       */\n      setCigarMouseoverId(arg: number) {\n        self.cigarMouseoverId = arg\n      },\n      /**\n       * #action\n       */\n      setClickId(arg?: string) {\n        self.clickId = arg\n      },\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get adapterConfig() {\n        return {\n          name: self.parentTrack.configuration.adapter.type,\n          assemblyNames: getConf(self, 'assemblyNames'),\n          ...getConf(self.parentTrack, 'adapter'),\n        }\n      },\n      /**\n       * #getter\n       */\n      get trackIds() {\n        return getConf(self, 'trackIds') as string[]\n      },\n      /**\n       * #getter\n       */\n      get numFeats() {\n        return self.featPositions.length\n      },\n      /**\n       * #getter\n       * used for synteny svg rendering\n       */\n      get ready() {\n        return this.numFeats > 0\n      },\n\n      /**\n       * #getter\n       */\n      get featMap() {\n        return Object.fromEntries(self.featPositions.map(f => [f.f.id(), f]))\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        ;(async () => {\n          try {\n            const { doAfterAttach } = await import('./afterAttach')\n            doAfterAttach(self)\n          } catch (e) {\n            console.error(e)\n            self.setError(e)\n          }\n        })()\n      },\n    }))\n}\n\nexport type LinearSyntenyDisplayStateModel = ReturnType<\n  typeof stateModelFactory\n>\nexport type LinearSyntenyDisplayModel = Instance<LinearSyntenyDisplayStateModel>\n\nexport default stateModelFactory\n","import { lazy } from 'react'\nimport {\n  ConfigurationReference,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport { SharedLinearPileupDisplayMixin } from '@jbrowse/plugin-alignments'\nimport { types } from 'mobx-state-tree'\n\nconst LaunchSyntenyViewDialog = lazy(\n  () => import('./components/LaunchSyntenyViewDialog'),\n)\n\n/**\n * #stateModel LGVSyntenyDisplay\n * displays location of \"synteny\" feature in a plain LGV, allowing linking out\n * to external synteny views\n *\n * extends\n * - [SharedLinearPileupDisplayMixin](../sharedlinearpileupdisplaymixin)\n */\nfunction stateModelFactory(schema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LGVSyntenyDisplay',\n      SharedLinearPileupDisplayMixin(schema),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LGVSyntenyDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(schema),\n      }),\n    )\n    .views(self => {\n      const superContextMenuItems = self.contextMenuItems\n      return {\n        /**\n         * #method\n         */\n        contextMenuItems() {\n          const feature = self.contextMenuFeature\n          return [\n            ...superContextMenuItems(),\n            ...(feature\n              ? [\n                  {\n                    label: 'Open synteny view for this position',\n                    onClick: () => {\n                      getSession(self).queueDialog(handleClose => [\n                        LaunchSyntenyViewDialog,\n                        {\n                          model: self,\n                          handleClose,\n                          feature,\n                        },\n                      ])\n                    },\n                  },\n                ]\n              : []),\n          ]\n        },\n      }\n    })\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        colorSchemeSubMenuItems: superColorSchemeSubMenuItems,\n      } = self\n      return {\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Color scheme',\n              subMenu: [...superColorSchemeSubMenuItems()],\n            },\n          ]\n        },\n      }\n    })\n    .actions(self => ({\n      afterCreate() {\n        // use color by stand to help indicate inversions better on first load,\n        // otherwise use selected orientation\n        if (self.colorBy) {\n          self.setColorScheme({ ...self.colorBy })\n        } else {\n          self.setColorScheme({ type: 'strand' })\n        }\n      },\n    }))\n}\n\nexport default stateModelFactory\n","import React from 'react'\nimport { SvgIcon, SvgIconProps } from '@mui/material'\n\nexport function Curves(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M16.5,21C13.5,21 12.31,16.76 11.05,12.28C10.14,9.04 9,5 7.5,5C4.11,5 4,11.93 4,12H2C2,11.63 2.06,3 7.5,3C10.5,3 11.71,7.25 12.97,11.74C13.83,14.8 15,19 16.5,19C19.94,19 20.03,12.07 20.03,12H22.03C22.03,12.37 21.97,21 16.5,21Z\"\n      />\n    </SvgIcon>\n  )\n}\n\nexport function StraightLines(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M22 12L17 22L7.1 6.04L4.24 12H2L7 2L16.9 17.96L19.76 12H22Z\"\n      />\n    </SvgIcon>\n  )\n}\n","import React, { lazy } from 'react'\nimport { types, Instance } from 'mobx-state-tree'\nimport { transaction } from 'mobx'\nimport { getSession } from '@jbrowse/core/util'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { saveAs } from 'file-saver'\n\n// icons\nimport CropFreeIcon from '@mui/icons-material/CropFree'\nimport VisibilityIcon from '@mui/icons-material/Visibility'\nimport PhotoCameraIcon from '@mui/icons-material/PhotoCamera'\nimport { Curves } from './components/Icons'\n\n// locals\nimport baseModel from '../LinearComparativeView/model'\n\n// lazies\nconst ExportSvgDialog = lazy(() => import('./components/ExportSvgDialog'))\n\nexport interface ExportSvgOptions {\n  rasterizeLayers?: boolean\n  scale?: number\n  filename?: string\n  Wrapper?: React.FC<{ children: React.ReactNode }>\n  fontSize?: number\n  rulerHeight?: number\n  textHeight?: number\n  paddingHeight?: number\n  headerHeight?: number\n  cytobandHeight?: number\n  themeName?: string\n  trackLabels?: string\n}\n\n/**\n * #stateModel LinearSyntenyView\n * extends\n * - [LinearComparativeView](../linearcomparativeview)\n */\nexport default function stateModelFactory(pluginManager: PluginManager) {\n  return types\n    .compose(\n      'LinearSyntenyView',\n      baseModel(pluginManager),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearSyntenyView'),\n        /**\n         * #property/\n         */\n        drawCIGAR: true,\n        /**\n         * #property\n         */\n        drawCurves: false,\n      }),\n    )\n    .actions(self => ({\n      /**\n       * #action\n       */\n      toggleCurves() {\n        self.drawCurves = !self.drawCurves\n      },\n      /**\n       * #action\n       */\n      toggleCIGAR() {\n        self.drawCIGAR = !self.drawCIGAR\n      },\n      /**\n       * #action\n       */\n      showAllRegions() {\n        transaction(() => {\n          self.views.forEach(view => {\n            view.showAllRegionsInAssembly()\n          })\n        })\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      async exportSvg(opts: ExportSvgOptions) {\n        const { renderToSvg } = await import(\n          './svgcomponents/SVGLinearSyntenyView'\n        )\n        const html = await renderToSvg(self as LinearSyntenyViewModel, opts)\n        const blob = new Blob([html], { type: 'image/svg+xml' })\n        saveAs(blob, opts.filename || 'image.svg')\n      },\n    }))\n    .views(self => {\n      const superHeaderMenuItems = self.headerMenuItems\n      const superMenuItems = self.menuItems\n      return {\n        /**\n         * #method\n         * includes a subset of view menu options because the full list is a\n         * little overwhelming\n         */\n        headerMenuItems() {\n          return [\n            ...superHeaderMenuItems(),\n            {\n              label: 'Square view',\n              onClick: self.squareView,\n              description:\n                'Makes both views use the same zoom level, adjusting to the average of each',\n              icon: CropFreeIcon,\n            },\n            {\n              label: 'Show all regions',\n              onClick: self.showAllRegions,\n              description: 'Show entire genome assemblies',\n              icon: VisibilityIcon,\n            },\n            {\n              label: 'Draw CIGAR',\n              onClick: self.toggleCIGAR,\n              checked: self.drawCIGAR,\n              type: 'checkbox',\n              description: 'Draws per-base CIGAR level alignments',\n            },\n            {\n              label: 'Use curved lines',\n              type: 'checkbox',\n              checked: self.drawCurves,\n              onClick: self.toggleCurves,\n              icon: Curves,\n            },\n            {\n              label: 'Export SVG',\n              icon: PhotoCameraIcon,\n              onClick: (): void => {\n                getSession(self).queueDialog(handleClose => [\n                  ExportSvgDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n        /**\n         * #method\n         */\n        menuItems() {\n          return [\n            ...superMenuItems(),\n            {\n              label: 'Export SVG',\n              icon: PhotoCameraIcon,\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  ExportSvgDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n      }\n    })\n}\nexport type LinearSyntenyViewStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearSyntenyViewModel = Instance<LinearSyntenyViewStateModel>\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { when } from 'mobx'\n\n// locals\nimport { LinearSyntenyViewModel } from './LinearSyntenyView/model'\n\ntype LSV = LinearSyntenyViewModel\n\ninterface ViewData {\n  loc: string\n  assembly: string\n  tracks?: string[]\n}\n\nexport default function LaunchLinearSyntenyView(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-LinearSyntenyView',\n    // @ts-expect-error\n    async ({\n      session,\n      views,\n      tracks = [],\n    }: {\n      session: AbstractSessionModel\n      views: ViewData[]\n      tracks?: string[]\n    }) => {\n      try {\n        const { assemblyManager } = session\n        const model = session.addView('LinearSyntenyView', {}) as LSV\n\n        await when(() => !!model.width)\n\n        model.setViews(\n          await Promise.all(\n            views.map(async view => {\n              const asm = await assemblyManager.waitForAssembly(view.assembly)\n              if (!asm) {\n                throw new Error(`Assembly ${view.assembly} failed to load`)\n              }\n              return {\n                type: 'LinearGenomeView' as const,\n                bpPerPx: 1,\n                offsetPx: 0,\n                hideHeader: true,\n                displayedRegions: asm.regions,\n              }\n            }),\n          ),\n        )\n\n        await Promise.all(model.views.map(view => when(() => view.initialized)))\n\n        const idsNotFound = [] as string[]\n        await Promise.all(\n          views.map(async (data, idx) => {\n            const view = model.views[idx]!\n            const { assembly, loc, tracks = [] } = data\n            const asm = await assemblyManager.waitForAssembly(assembly)\n            if (!asm) {\n              throw new Error(`Assembly ${data.assembly} failed to load`)\n            }\n            await view.navToSearchString({ input: loc, assembly: asm })\n            tracks.forEach(track => {\n              tryTrack(view, track, idsNotFound)\n            })\n          }),\n        )\n\n        tracks.forEach(track => {\n          tryTrack(model, track, idsNotFound)\n        })\n\n        if (idsNotFound.length) {\n          throw new Error(\n            `Could not resolve identifiers: ${idsNotFound.join(',')}`,\n          )\n        }\n      } catch (e) {\n        session.notifyError(`${e}`, e)\n        throw e\n      }\n    },\n  )\n}\n\nfunction tryTrack(\n  model: { showTrack: (arg: string) => void },\n  trackId: string,\n  idsNotFound: string[],\n) {\n  try {\n    model.showTrack(trackId)\n  } catch (e) {\n    if (/Could not resolve identifier/.exec(`${e}`)) {\n      idsNotFound.push(trackId)\n    } else {\n      throw e\n    }\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config SyntenyTrack\n * extends\n * - [BaseTrack](../basetrack)\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'SyntenyTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n\nexport default configSchema\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport { PluggableElementType } from '@jbrowse/core/pluggableElementTypes'\nimport { getSession, getContainingTrack } from '@jbrowse/core/util'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\n\n// locals\nconst ReadVsRefDialog = lazy(() => import('./LinearReadVsRef'))\n\nfunction isDisplay(elt: { name: string }): elt is DisplayType {\n  return elt.name === 'LinearPileupDisplay'\n}\n\nexport default function LinearReadVsRefMenuItemF(pm: PluginManager) {\n  pm.addToExtensionPoint(\n    'Core-extendPluggableElement',\n    (pluggableElement: PluggableElementType) => {\n      if (!isDisplay(pluggableElement)) {\n        return pluggableElement\n      }\n      pluggableElement.stateModel = pluggableElement.stateModel.extend(self => {\n        const superContextMenuItems = self.contextMenuItems\n        return {\n          views: {\n            contextMenuItems() {\n              const feature = self.contextMenuFeature\n              const track = getContainingTrack(self)\n              return [\n                ...superContextMenuItems(),\n                ...(feature\n                  ? [\n                      {\n                        label: 'Linear read vs ref',\n                        icon: AddIcon,\n                        onClick: () => {\n                          getSession(self).queueDialog(handleClose => [\n                            ReadVsRefDialog,\n                            {\n                              track,\n                              feature,\n                              handleClose,\n                            },\n                          ])\n                        },\n                      },\n                    ]\n                  : []),\n              ]\n            },\n          },\n        }\n      })\n      return pluggableElement\n    },\n  )\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\n\nimport CalendarIcon from '@mui/icons-material/CalendarViewDay'\nimport LinearComparativeDisplayF from './LinearComparativeDisplay'\nimport LinearComparativeViewF from './LinearComparativeView'\nimport LinearSyntenyDisplayF from './LinearSyntenyDisplay'\nimport LGVSyntenyDisplayF from './LGVSyntenyDisplay'\nimport LinearSyntenyViewF from './LinearSyntenyView'\nimport LaunchLinearSyntenyViewF from './LaunchLinearSyntenyView'\nimport SyntenyTrackF from './SyntenyTrack'\nimport LinearReadVsRefMenuItemF from './LinearReadVsRef'\n\nexport default class LinearComparativeViewPlugin extends Plugin {\n  name = 'LinearComparativeViewPlugin'\n\n  install(pluginManager: PluginManager) {\n    LinearComparativeViewF(pluginManager)\n    LinearSyntenyViewF(pluginManager)\n    LinearComparativeDisplayF(pluginManager)\n    LinearSyntenyDisplayF(pluginManager)\n    LGVSyntenyDisplayF(pluginManager)\n    LaunchLinearSyntenyViewF(pluginManager)\n    SyntenyTrackF(pluginManager)\n    LinearReadVsRefMenuItemF(pluginManager)\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToSubMenu(['Add'], {\n        label: 'Linear synteny view',\n        icon: CalendarIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('LinearSyntenyView', {})\n        },\n      })\n    }\n  }\n}\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\nimport modelFactory from './model'\n\nexport default function LinearComparativeViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new ViewType({\n      name: 'LinearComparativeView',\n      displayName: 'Linear comparative view',\n      stateModel: modelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/LinearComparativeView')),\n    })\n  })\n}\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport modelFactory from './model'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\n\nexport default function LinearSyntenyViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new ViewType({\n      name: 'LinearSyntenyView',\n      displayName: 'Linear synteny view',\n      stateModel: modelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/LinearSyntenyView')),\n    })\n  })\n}\n","import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport configSchemaFactory from './configSchemaF'\nimport stateModelFactory from './stateModelFactory'\n\nexport default function LinearComparativeDisplayF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearComparativeDisplay',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'SyntenyTrack',\n      viewType: 'LinearComparativeView',\n      ReactComponent: () => {\n        return null\n      },\n    })\n  })\n}\n","import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport configSchemaF from './configSchemaF'\nimport stateModelFactory from './model'\nimport { lazy } from 'react'\n\nexport default function LinearSyntenyDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new DisplayType({\n      name: 'LinearSyntenyDisplay',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'SyntenyTrack',\n      viewType: 'LinearSyntenyView',\n      ReactComponent: lazy(() => import('./components/Component')),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport baseConfigFactory from '../LinearComparativeDisplay/configSchemaF'\n\n/**\n * #config LinearSyntenyDisplay\n */\nfunction configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearSyntenyDisplay',\n    {\n      /**\n       * #slot\n       * currently unused\n       */\n      trackIds: {\n        type: 'stringArray',\n        defaultValue: [],\n      },\n\n      /**\n       * #slot\n       * currently unused\n       */\n      middle: { type: 'boolean', defaultValue: true },\n    },\n    {\n      /**\n       * #baseConfiguration\n       * this refers to the LinearComparativeDisplay\n       */\n      baseConfiguration: baseConfigFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport configSchemaF from './configSchemaF'\nimport stateModelF from './model'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nexport default function LGVSyntenyDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    const stateModel = stateModelF(configSchema)\n    return new DisplayType({\n      name: 'LGVSyntenyDisplay',\n      configSchema,\n      stateModel,\n      trackType: 'SyntenyTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { linearPileupDisplayConfigSchemaFactory } from '@jbrowse/plugin-alignments'\n\n/**\n * #config LGVSyntenyDisplay\n * extends config\n * - [LinearPileupDisplay](../linearpileupdisplay)\n */\nfunction configSchemaF(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LGVSyntenyDisplay',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: linearPileupDisplayConfigSchemaFactory(pluginManager),\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport default configSchemaF\n","import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaF from './configSchema'\n\nexport default function registerSyntenyTrack(pluginManager: PluginManager) {\n  pluginManager.addTrackType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new TrackType({\n      name: 'SyntenyTrack',\n      configSchema,\n      stateModel: createBaseTrackModel(\n        pluginManager,\n        'SyntenyTrack',\n        configSchema,\n      ),\n    })\n  })\n}\n","import {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n} from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #stateModel LinearLollipopDisplay\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearLollipopDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearLollipopDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n      }),\n    )\n\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #getter\n         */\n        get blockType() {\n          return 'dynamicBlocks'\n        },\n        /**\n         * #getter\n         */\n        get renderDelay() {\n          return 500\n        },\n        /**\n         * #method\n         */\n        renderProps() {\n          return {\n            ...superRenderProps(),\n            rpcDriverName: self.rpcDriverName,\n            config: self.configuration.renderer,\n          }\n        },\n        /**\n         * #getter\n         */\n        get rendererTypeName() {\n          return self.configuration.renderer.type\n        },\n      }\n    })\n}\n","import { readConfObject } from '@jbrowse/core/configuration'\nimport { doesIntersect2 } from '@jbrowse/core/util/range'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\ninterface LayoutItem {\n  uniqueId: string\n  anchorLocation: number\n  width: number\n  height: number\n  data: { score: number }\n}\n\ntype LayoutEntry = LayoutItem & { x: number; y: number }\n\ntype LayoutMap = Map<string, LayoutEntry>\n\nexport class FloatingLayout {\n  width: number\n\n  totalHeight = 0\n\n  constructor({ width }: { width: number }) {\n    if (!width) {\n      throw new Error('width required to make a new FloatingLayout')\n    }\n    this.width = width\n  }\n\n  items: LayoutItem[] = []\n\n  layout: LayoutMap = new Map()\n\n  layoutDirty = false\n\n  add(\n    uniqueId: string,\n    anchorLocation: number,\n    width: number,\n    height: number,\n    data: { score: number },\n  ) {\n    this.items.push({ uniqueId, anchorLocation, width, height, data })\n    this.layoutDirty = true\n  }\n\n  /**\n   * @returns Map of `uniqueId => {x,y,anchorLocation,width,height,data}`\n   */\n  getLayout(configuration?: AnyConfigurationModel) {\n    if (!this.layoutDirty) {\n      return this.layout\n    }\n    if (!configuration) {\n      throw new Error('configuration object required')\n    }\n\n    const minY = readConfObject(configuration, 'minStickLength')\n\n    // sort them by score ascending, so higher scores will always end up\n    // stacked last (toward the bottom)\n    const sorted = this.items.sort((a, b) => a.data.score - b.data.score)\n\n    // bump them\n    let maxBottom = 0\n    const layoutEntries: [string, LayoutEntry][] = new Array(sorted.length)\n    for (let i = 0; i < sorted.length; i += 1) {\n      const currentItem = sorted[i]!\n      const { anchorLocation, width, height } = currentItem\n      const start = anchorLocation - width / 2\n      const end = start + width\n      let top = minY\n      let bottom = top + height\n\n      // figure out how far down to put it\n      for (let j = 0; j < i; j += 1) {\n        const [, previouslyLaidOutItem] = layoutEntries[j]!\n        const {\n          x: prevStart,\n          y: prevTop,\n          width: prevWidth,\n          height: prevHeight,\n        } = previouslyLaidOutItem\n        const prevEnd = prevStart + prevWidth\n        const prevBottom = prevTop + prevHeight\n        if (\n          doesIntersect2(prevStart, prevEnd, start, end) &&\n          doesIntersect2(prevTop, prevBottom, top, bottom)\n        ) {\n          // bump this one to the bottom of the previous one\n          top = prevBottom\n          bottom = top + height\n          j = -1 // we need to check all of them again after bumping\n        }\n      }\n\n      // record the entry and update the maxBottom\n      layoutEntries[i] = [\n        currentItem.uniqueId,\n        { ...currentItem, x: start, y: top },\n      ]\n      if (bottom > maxBottom) {\n        maxBottom = bottom\n      }\n    }\n\n    // try to tile them left to right all at the same level\n    // if they don't fit, try to alternate them on 2 levels, then 3\n    this.totalHeight = maxBottom\n    this.layout = new Map(layoutEntries)\n    this.layoutDirty = false\n    return this.layout\n  }\n\n  getTotalHeight() {\n    if (this.layoutDirty) {\n      throw new Error('getTotalHeight does not work when the layout is dirty.')\n    }\n    return this.totalHeight\n  }\n\n  serializeRegion() {\n    return this.toJSON()\n  }\n\n  toJSON() {\n    if (this.layoutDirty) {\n      throw new Error('toJSON does not work when the layout is dirty.')\n    }\n    return { pairs: [...this.getLayout()], totalHeight: this.getTotalHeight() }\n  }\n\n  static fromJSON() {\n    throw new Error('not supported')\n  }\n}\n\nexport class PrecomputedFloatingLayout {\n  layout: LayoutMap\n\n  totalHeight: number\n\n  constructor({\n    pairs,\n    totalHeight,\n  }: {\n    pairs: [string, LayoutEntry][]\n    totalHeight: number\n  }) {\n    this.layout = new Map(pairs)\n    this.totalHeight = totalHeight\n  }\n\n  add(uniqueId: string) {\n    if (!this.layout.has(uniqueId)) {\n      throw new Error(`layout error, precomputed layout is missing ${uniqueId}`)\n    }\n  }\n\n  getLayout() {\n    return this.layout\n  }\n\n  getTotalHeight() {\n    return this.totalHeight\n  }\n\n  static fromJSON(\n    json: ConstructorParameters<typeof PrecomputedFloatingLayout>[0],\n  ) {\n    return new PrecomputedFloatingLayout(json)\n  }\n}\n","import BoxRendererType, {\n  LayoutSession,\n} from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport MultiLayout from '@jbrowse/core/util/layouts/MultiLayout'\nimport { FloatingLayout, PrecomputedFloatingLayout } from './Layout'\n\nclass FloatingLayoutSession extends LayoutSession {\n  makeLayout() {\n    'sequenceAdapter'\n\n    const { end, start } = this.regions[0]\n    const widthPx = (end - start) / this.bpPerPx\n    return new MultiLayout(FloatingLayout, { width: widthPx })\n  }\n\n  layoutIsValid(/* layout */) {\n    return false // layout.left layout.width === this.width\n  }\n}\n\nexport default class LollipopRenderer extends BoxRendererType {\n  createSession(args) {\n    return new FloatingLayoutSession(args)\n  }\n\n  deserializeLayoutInClient(json) {\n    return new PrecomputedFloatingLayout(json)\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport default ConfigurationSchema(\n  'LollipopRenderer',\n  {\n    strokeColor: {\n      type: 'color',\n      description: 'the outer color of each lollipop',\n      defaultValue: 'green',\n      contextVariable: ['feature'],\n    },\n    innerColor: {\n      type: 'color',\n      description: 'the inner color of each lollipop',\n      defaultValue: '#7fc75f',\n      contextVariable: ['feature'],\n    },\n    strokeWidth: {\n      type: 'number',\n      description: 'width of the stroked border',\n      defaultValue: 4,\n      contextVariable: ['feature'],\n    },\n    radius: {\n      type: 'number',\n      description: 'radius in pixels of each lollipop body',\n      defaultValue: `jexl:sqrt(max(3, (get(feature,'score')*10)/3.14))`,\n      contextVariable: ['feature'],\n    },\n    caption: {\n      type: 'string',\n      description:\n        'the tooltip caption displayed when the mouse hovers over a lollipop',\n      defaultValue: `jexl:get(feature,'name')`,\n      contextVariable: ['feature'],\n    },\n    minStickLength: {\n      type: 'number',\n      description: 'minimum lollipop \"stick\" length, in pixels',\n      defaultValue: 5,\n    },\n    stickColor: {\n      type: 'color',\n      description: 'color of the lollipop stick',\n      defaultValue: 'black',\n      contextVariable: ['feature'],\n    },\n    stickWidth: {\n      type: 'number',\n      description: 'width in pixels of the lollipop stick',\n      defaultValue: 2,\n      contextVariable: ['feature'],\n    },\n    score: {\n      type: 'number',\n      description:\n        'the \"score\" of each lollipop, displayed as a number in the center of the circle',\n      defaultValue: `jexl:get(feature,'score')`,\n      contextVariable: ['feature'],\n    },\n  },\n  { explicitlyTyped: true },\n)\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport LinearLollipopDisplayF from './LinearLollipopDisplay'\nimport LollipopRendererF from './LollipopRenderer'\n\nexport default class LollipopPlugin extends Plugin {\n  name = 'LollipopPlugin'\n\n  install(pluginManager: PluginManager) {\n    LollipopRendererF(pluginManager)\n    LinearLollipopDisplayF(pluginManager)\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { lazy } from 'react'\nimport LollipopRenderer from './LollipopRenderer'\nimport configSchema from './configSchema'\n\nexport default function LollipopRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new LollipopRenderer({\n        name: 'LollipopRenderer',\n        ReactComponent: lazy(() => import('./components/LollipopRendering')),\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nimport { stateModelFactory } from './model'\nimport { configSchemaFactory } from './configSchema'\n\nexport default function LinearLollipopDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearLollipopDisplay',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'LollipopTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #config LinearLollipopDisplay\n */\nexport function configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearLollipopDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: pluginManager.pluggableConfigSchemaType('renderer'),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\nimport { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'\nimport { getEnv } from '@jbrowse/core/util'\n\n/**\n * #stateModel LinearArcDisplay\n * extends\n * - [BaseLinearDisplay](../baselineardisplay)\n */\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearArcDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearArcDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        displayMode: types.maybe(types.string),\n      }),\n    )\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get blockType() {\n        return 'staticBlocks'\n      },\n      /**\n       * #getter\n       */\n      get renderDelay() {\n        return 500\n      },\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        return self.configuration.renderer.type\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get displayModeSetting() {\n        return self.displayMode ?? getConf(self, ['renderer', 'displayMode'])\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get rendererConfig() {\n        const configBlob = getConf(self, ['renderer']) || {}\n        const config = configBlob as Omit<typeof configBlob, symbol>\n        return self.rendererType.configSchema.create(\n          {\n            ...config,\n            displayMode: self.displayModeSetting,\n          },\n          getEnv(self),\n        )\n      },\n    }))\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          return {\n            ...superRenderProps(),\n            rpcDriverName: self.rpcDriverName,\n            config: self.rendererConfig,\n            height: self.height,\n          }\n        },\n      }\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setDisplayMode(flag: string) {\n        self.displayMode = flag\n      },\n    }))\n    .views(self => {\n      const superMenuItems = self.trackMenuItems\n      return {\n        /**\n         * #method\n         */\n        trackMenuItems() {\n          return [\n            ...superMenuItems(),\n            {\n              label: 'Display mode',\n              subMenu: [\n                {\n                  type: 'radio',\n                  label: 'Arcs',\n                  onClick: () => {\n                    self.setDisplayMode('arcs')\n                  },\n                  checked: self.displayMode === 'arcs',\n                },\n                {\n                  type: 'radio',\n                  label: 'Semi-circles',\n                  onClick: () => {\n                    self.setDisplayMode('semicircles')\n                  },\n                  checked: self.displayMode === 'semicircles',\n                },\n              ],\n            },\n          ]\n        },\n      }\n    })\n}\n","import React from 'react'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { Instance, types } from 'mobx-state-tree'\nimport {\n  Feature,\n  getSession,\n  isSessionModelWithWidgets,\n  getContainingView,\n  getContainingTrack,\n  isSelectionContainer,\n} from '@jbrowse/core/util'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes'\nimport {\n  FeatureDensityMixin,\n  TrackHeightMixin,\n} from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #stateModel LinearPairedArcDisplay\n * this is a non-block-based track type, and can connect arcs across multiple\n * displayedRegions\n *\n * extends\n * - [BaseDisplay](../basedisplay)\n * - [TrackHeightMixin](../trackheightmixin)\n * - [FeatureDensityMixin](../featuredensitymixin)\n */\nexport function stateModelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearPairedArcDisplay',\n      BaseDisplay,\n      TrackHeightMixin(),\n      FeatureDensityMixin(),\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearPairedArcDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        displayMode: types.maybe(types.string),\n      }),\n    )\n    .volatile(() => ({\n      lastDrawnOffsetPx: 0,\n      features: undefined as Feature[] | undefined,\n      loading: false,\n      drawn: true,\n    }))\n\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get displayModeSetting() {\n        return self.displayMode ?? getConf(self, ['renderer', 'displayMode'])\n      },\n    }))\n\n    .actions(self => ({\n      /**\n       * #action\n       */\n      selectFeature(feature: Feature) {\n        const session = getSession(self)\n        if (isSessionModelWithWidgets(session)) {\n          const featureWidget = session.addWidget(\n            'VariantFeatureWidget',\n            'variantFeature',\n            {\n              view: getContainingView(self),\n              track: getContainingTrack(self),\n              featureData: feature.toJSON(),\n            },\n          )\n\n          session.showWidget(featureWidget)\n        }\n        if (isSelectionContainer(session)) {\n          session.setSelection(feature)\n        }\n      },\n      /**\n       * #action\n       */\n      setLoading(flag: boolean) {\n        self.loading = flag\n      },\n      /**\n       * #action\n       */\n      setFeatures(f: Feature[]) {\n        self.features = f\n      },\n      /**\n       * #action\n       */\n      setDisplayMode(flag: string) {\n        self.displayMode = flag\n      },\n    }))\n\n    .actions(self => ({\n      afterAttach() {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        ;(async () => {\n          try {\n            const { doAfterAttach } = await import('./afterAttach')\n            doAfterAttach(self)\n          } catch (e) {\n            console.error(e)\n            self.setError(e)\n          }\n        })()\n      },\n      /**\n       * #action\n       */\n      async renderSvg(opts: {\n        rasterizeLayers?: boolean\n      }): Promise<React.ReactNode> {\n        const { renderArcSvg } = await import('./renderSvg')\n        // @ts-expect-error\n        return renderArcSvg(self, opts)\n      },\n    }))\n}\n\nexport type LinearArcDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearArcDisplayModel = Instance<LinearArcDisplayStateModel>\n","import React, { lazy, Suspense, useState } from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Feature, Region, bpSpanPx, getStrokeProps } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\n// locals\nconst ArcTooltip = lazy(() => import('../ArcTooltip'))\n\nfunction Arc({\n  selectedFeatureId,\n  region,\n  bpPerPx,\n  config,\n  height: displayHeight,\n  feature,\n  onFeatureClick,\n}: {\n  selectedFeatureId?: string\n  region: Region\n  config: AnyConfigurationModel\n  bpPerPx: number\n  height: number\n  feature: Feature\n  onFeatureClick: (event: React.MouseEvent, featureId: string) => void\n}) {\n  const [isMouseOvered, setIsMouseOvered] = useState(false)\n  const [left, right] = bpSpanPx(\n    feature.get('start'),\n    feature.get('end'),\n    region,\n    bpPerPx,\n  )\n  const featureId = feature.id()\n  const selected =\n    selectedFeatureId && String(selectedFeatureId) === String(feature.id())\n  const stroke = selected ? 'red' : readConfObject(config, 'color', { feature })\n  const textStroke = selected ? 'red' : 'black'\n  const label = readConfObject(config, 'label', { feature })\n  const caption = readConfObject(config, 'caption', { feature })\n  const strokeWidth = readConfObject(config, 'thickness', { feature }) || 2\n  const height = Math.min(\n    readConfObject(config, 'height', { feature }) || 100,\n    displayHeight,\n  )\n  const ref = React.createRef<SVGPathElement>()\n\n  // formula: https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B%C3%A9zier_curves\n  const t = 0.5\n  const t1 = 1 - t\n  const textYCoord = 3 * (t1 * t1) * (t * height) + 3 * t1 * (t * t) * height\n\n  return (\n    <g>\n      <path\n        ref={ref}\n        {...getStrokeProps(stroke)}\n        d={`M ${left} 0 C ${left} ${height}, ${right} ${height}, ${right} 0`}\n        strokeWidth={strokeWidth}\n        fill=\"transparent\"\n        onClick={e => {\n          onFeatureClick(e, featureId)\n        }}\n        onMouseOver={() => {\n          setIsMouseOvered(true)\n        }}\n        onMouseLeave={() => {\n          setIsMouseOvered(false)\n        }}\n        pointerEvents=\"stroke\"\n      />\n\n      {isMouseOvered ? (\n        <Suspense fallback={null}>\n          <ArcTooltip contents={caption} />\n        </Suspense>\n      ) : null}\n      <text\n        x={left + (right - left) / 2}\n        y={textYCoord + 3}\n        stroke=\"white\"\n        strokeWidth=\"0.6em\"\n      >\n        {label}\n      </text>\n      <text\n        x={left + (right - left) / 2}\n        y={textYCoord + 3}\n        stroke={textStroke}\n      >\n        {label}\n      </text>\n    </g>\n  )\n}\n\nfunction polarToCartesian(\n  centerX: number,\n  centerY: number,\n  radius: number,\n  angleInDegrees: number,\n) {\n  const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180\n\n  return {\n    x: centerX + radius * Math.cos(angleInRadians),\n    y: centerY + radius * Math.sin(angleInRadians),\n  }\n}\n\nfunction describeArc(\n  x: number,\n  y: number,\n  radius: number,\n  startAngle: number,\n  endAngle: number,\n) {\n  const start = polarToCartesian(x, y, radius, endAngle)\n  const end = polarToCartesian(x, y, radius, startAngle)\n  const largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1'\n\n  return [\n    'M',\n    start.x,\n    start.y,\n    'A',\n    radius,\n    radius,\n    0,\n    largeArcFlag,\n    0,\n    end.x,\n    end.y,\n  ].join(' ')\n}\n\nfunction SemiCircles({\n  selectedFeatureId,\n  region,\n  bpPerPx,\n  config,\n  onFeatureClick,\n  feature,\n}: {\n  selectedFeatureId?: string\n  region: Region\n  config: AnyConfigurationModel\n  onFeatureClick: (event: React.MouseEvent, featureId: string) => void\n  bpPerPx: number\n  feature: Feature\n}) {\n  const [isMouseOvered, setIsMouseOvered] = useState(false)\n  const [left, right] = bpSpanPx(\n    feature.get('start'),\n    feature.get('end'),\n    region,\n    bpPerPx,\n  )\n\n  const featureId = feature.id()\n  const selected =\n    selectedFeatureId && String(selectedFeatureId) === String(feature.id())\n  const stroke = selected ? 'red' : readConfObject(config, 'color', { feature })\n  const textStroke = selected ? 'red' : 'black'\n  const label = readConfObject(config, 'label', { feature })\n  const caption = readConfObject(config, 'caption', { feature })\n  const strokeWidth = readConfObject(config, 'thickness', { feature }) || 2\n  const ref = React.createRef<SVGPathElement>()\n  const textYCoord = (right - left) / 2\n\n  return (\n    <g>\n      <path\n        d={describeArc(\n          left + (right - left) / 2,\n          0,\n          (right - left) / 2,\n          90,\n          270,\n        )}\n        {...getStrokeProps(stroke)}\n        strokeWidth={strokeWidth}\n        fill=\"transparent\"\n        onClick={e => {\n          onFeatureClick(e, featureId)\n        }}\n        onMouseOver={() => {\n          setIsMouseOvered(true)\n        }}\n        onMouseLeave={() => {\n          setIsMouseOvered(false)\n        }}\n        ref={ref}\n        pointerEvents=\"stroke\"\n      />\n      {isMouseOvered ? <ArcTooltip contents={caption} /> : null}\n      <text\n        x={left + (right - left) / 2}\n        y={textYCoord + 3}\n        stroke=\"white\"\n        strokeWidth=\"0.6em\"\n      >\n        {label}\n      </text>\n      <text\n        x={left + (right - left) / 2}\n        y={textYCoord + 3}\n        stroke={textStroke}\n      >\n        {label}\n      </text>\n    </g>\n  )\n}\nconst ArcRendering = observer(function ({\n  features,\n  config,\n  regions,\n  bpPerPx,\n  height,\n  exportSVG,\n  displayModel,\n  onFeatureClick,\n}: {\n  features: Map<string, Feature>\n  config: AnyConfigurationModel\n  regions: Region[]\n  bpPerPx: number\n  height: number\n  displayModel?: { selectedFeatureId: string }\n  onFeatureClick: (event: React.MouseEvent, featureId: string) => void\n  exportSVG: boolean\n}) {\n  const region = regions[0]!\n  const width = (region.end - region.start) / bpPerPx\n  const semicircles = readConfObject(config, 'displayMode') === 'semicircles'\n  const { selectedFeatureId } = displayModel || {}\n\n  return (\n    <Wrapper exportSVG={exportSVG} width={width} height={height}>\n      {[...features.values()].map(f =>\n        semicircles ? (\n          <SemiCircles\n            key={f.id()}\n            config={config}\n            region={region}\n            bpPerPx={bpPerPx}\n            selectedFeatureId={selectedFeatureId}\n            onFeatureClick={onFeatureClick}\n            feature={f}\n          />\n        ) : (\n          <Arc\n            key={f.id()}\n            height={height}\n            config={config}\n            region={region}\n            bpPerPx={bpPerPx}\n            selectedFeatureId={selectedFeatureId}\n            onFeatureClick={onFeatureClick}\n            feature={f}\n          />\n        ),\n      )}\n    </Wrapper>\n  )\n})\n\nfunction Wrapper({\n  exportSVG,\n  width,\n  height,\n  children,\n}: {\n  exportSVG: boolean\n  width: number\n  height: number\n  children: React.ReactNode\n}) {\n  return exportSVG ? (\n    children\n  ) : (\n    <svg width={width} height={height}>\n      {children}\n    </svg>\n  )\n}\n\nexport default ArcRendering\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config ArcRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst ArcRenderer = ConfigurationSchema(\n  'ArcRenderer',\n  {\n    /**\n     * #slot\n     */\n    color: {\n      type: 'color',\n      description: 'the color of the arcs',\n      defaultValue: 'darkblue',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    thickness: {\n      type: 'number',\n      description: 'the thickness of the arcs',\n      defaultValue: `jexl:logThickness(feature,'score')`,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    label: {\n      type: 'string',\n      description: 'the label to appear at the apex of the arcs',\n      defaultValue: `jexl:get(feature,'score')`,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    height: {\n      type: 'number',\n      description: 'the height of the arcs',\n      defaultValue: `jexl:log10(get(feature,'end')-get(feature,'start'))*50`,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    caption: {\n      type: 'string',\n      description:\n        'the caption to appear when hovering over any point on the arcs',\n      defaultValue: `jexl:get(feature,'name')`,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    displayMode: {\n      type: 'enum',\n      defaultValue: 'arcs',\n      model: types.enumeration('DisplayMode', ['arcs', 'semicircles']),\n      description: 'render semi-circles instead of arcs',\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default ArcRenderer\n","import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\n\nexport default class ArcRenderer extends FeatureRendererType {}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport LinearArcDisplayF from './LinearArcDisplay'\nimport LinearPairedArcDisplayF from './LinearPairedArcDisplay'\nimport ArcRendererF from './ArcRenderer'\nimport { Feature } from '@jbrowse/core/util'\nimport { set1 } from '@jbrowse/core/ui/colors'\n\nexport default class ArcPlugin extends Plugin {\n  name = 'ArcRenderer'\n  install(pluginManager: PluginManager) {\n    ArcRendererF(pluginManager)\n    LinearArcDisplayF(pluginManager)\n    LinearPairedArcDisplayF(pluginManager)\n\n    pluginManager.jexl.addFunction(\n      'logThickness',\n      (feature: Feature, attributeName: string) =>\n        Math.log(feature.get(attributeName) + 1),\n    )\n    pluginManager.jexl.addFunction(\n      'defaultPairedArcColor',\n      (_feature: Feature, alt?: string) => {\n        if (alt?.startsWith('<DEL')) {\n          return set1[0]\n        } else if (alt?.startsWith('<DUP')) {\n          return set1[1]\n        } else if (alt?.startsWith('<INV')) {\n          return set1[2]\n        } else if (alt?.startsWith('<TRA')) {\n          return set1[3]\n        } else if (alt?.startsWith('<CNV')) {\n          return set1[4]\n        } else {\n          return set1[6] // skip 5, yellow\n        }\n      },\n    )\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport ReactComponent from './ArcRendering'\nimport configSchema from './configSchema'\nimport ArcRenderer from './ArcRenderer'\n\nexport default function ArcRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new ArcRenderer({\n        name: 'ArcRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nimport { configSchemaFactory } from './configSchema'\nimport { stateModelFactory } from './model'\n\nexport default function LinearArcDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearArcDisplay',\n      displayName: 'Arc display',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'FeatureTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { types } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #config LinearArcDisplay\n */\nexport function configSchemaFactory(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearArcDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: types.optional(\n        pluginManager.pluggableConfigSchemaType('renderer'),\n        { type: 'ArcRenderer' },\n      ),\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { DisplayType } from '@jbrowse/core/pluggableElementTypes'\n\nimport { configSchemaFactory } from './configSchema'\nimport { stateModelFactory } from './model'\nimport { lazy } from 'react'\n\nexport default function LinearPairedArcDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory()\n    return new DisplayType({\n      name: 'LinearPairedArcDisplay',\n      displayName: 'Arc display',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'VariantTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: lazy(() => import('./components/ReactComponent')),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\n\n/**\n * #config LinearPairedArcDisplay\n */\nexport function configSchemaFactory() {\n  return ConfigurationSchema(\n    'LinearPairedArcDisplay',\n    {\n      /**\n       * #slot\n       */\n      color: {\n        type: 'color',\n        description: 'the color of the arcs',\n        defaultValue: 'jexl:defaultPairedArcColor(feature,alt)',\n        contextVariable: ['feature', 'alt'],\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\n\nexport const configSchema = ConfigurationSchema('AboutWidget', {})\n\nexport const stateModel = types.model('AboutWidget', {\n  id: ElementId,\n  type: types.literal('AboutWidget'),\n})\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\n\nexport const configSchema = ConfigurationSchema('HelpWidget', {})\n\nexport const stateModel = types.model('HelpWidget', {\n  id: ElementId,\n  type: types.literal('HelpWidget'),\n})\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\n\nexport const configSchema = ConfigurationSchema('ImportSessionWidget', {})\n\nexport const stateModel = types.model('ImportSessionWidget', {\n  id: ElementId,\n  type: types.literal('ImportSessionWidget'),\n})\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\n\nexport const configSchema = ConfigurationSchema('SessionManager', {})\n\nexport const stateModel = types.model('SessionManager', {\n  id: ElementId,\n  type: types.literal('SessionManager'),\n})\n","import { lazy } from 'react'\nimport WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { SessionWithWidgets, isAbstractMenuManager } from '@jbrowse/core/util'\n\nimport HelpIcon from '@mui/icons-material/Help'\nimport InfoIcon from '@mui/icons-material/Info'\n\nimport {\n  configSchema as aboutConfigSchema,\n  stateModel as aboutStateModel,\n} from './AboutWidget'\nimport {\n  configSchema as helpConfigSchema,\n  stateModel as helpStateModel,\n} from './HelpWidget'\nimport {\n  configSchema as importSessionConfigSchema,\n  stateModel as importSessionStateModel,\n} from './ImportSessionWidget'\nimport {\n  configSchema as sessionManagerConfigSchema,\n  stateModel as sessionManagerStateModel,\n} from './SessionManager'\n\nexport default class MenusPlugin extends Plugin {\n  name = 'MenusPlugin'\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addWidgetType(() => {\n      return new WidgetType({\n        name: 'AboutWidget',\n        heading: 'About',\n        configSchema: aboutConfigSchema,\n        stateModel: aboutStateModel,\n        ReactComponent: lazy(\n          () => import('./AboutWidget/components/AboutWidget'),\n        ),\n      })\n    })\n\n    pluginManager.addWidgetType(() => {\n      return new WidgetType({\n        name: 'HelpWidget',\n        heading: 'Help',\n        configSchema: helpConfigSchema,\n        stateModel: helpStateModel,\n        ReactComponent: lazy(\n          () => import('./HelpWidget/components/HelpWidget'),\n        ),\n      })\n    })\n\n    pluginManager.addWidgetType(() => {\n      return new WidgetType({\n        name: 'ImportSessionWidget',\n        heading: 'Import session',\n        configSchema: importSessionConfigSchema,\n        stateModel: importSessionStateModel,\n        ReactComponent: lazy(\n          () => import('./ImportSessionWidget/components/ImportSessionWidget'),\n        ),\n      })\n    })\n\n    pluginManager.addWidgetType(() => {\n      return new WidgetType({\n        name: 'SessionManager',\n        heading: 'Sessions',\n        configSchema: sessionManagerConfigSchema,\n        stateModel: sessionManagerStateModel,\n        ReactComponent: lazy(\n          () => import('./SessionManager/components/SessionManager'),\n        ),\n      })\n    })\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToMenu('Help', {\n        label: 'About',\n        icon: InfoIcon,\n        onClick: (session: SessionWithWidgets) => {\n          const widget = session.addWidget('AboutWidget', 'aboutWidget')\n          session.showWidget(widget)\n        },\n      })\n      pluginManager.rootModel.appendToMenu('Help', {\n        label: 'Help',\n        icon: HelpIcon,\n        onClick: (session: SessionWithWidgets) => {\n          const widget = session.addWidget('HelpWidget', 'helpWidget')\n          session.showWidget(widget)\n        },\n      })\n    }\n  }\n}\n","import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport format from 'string-template'\nimport { Instance } from 'mobx-state-tree'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nimport type MyConfigSchema from './configSchema'\n\ninterface SPARQLEntry {\n  type: string\n  value: string\n  dataTypes?: string\n}\n\ntype SPARQLBinding = Record<string, SPARQLEntry>\n\ninterface SPARQLResponseHead {\n  vars: string[]\n}\n\ninterface SPARQLResponseResults {\n  bindings?: SPARQLBinding[]\n}\n\ninterface SPARQLResponse {\n  head: SPARQLResponseHead\n  results: SPARQLResponseResults\n}\n\ninterface SPARQLFeatureData {\n  start: number\n  end: number\n  strand: number\n  refName: string\n  subfeatures?: SPARQLFeatureData[]\n  uniqueId: string\n\n  [propName: string]: any\n}\n\ninterface SPARQLFeature {\n  data: SPARQLFeatureData\n}\n\nexport default class SPARQLAdapter extends BaseFeatureDataAdapter {\n  private endpoint: string\n\n  private queryTemplate: string\n\n  private refNamesQueryTemplate: string\n\n  private additionalQueryParams: string[]\n\n  private configRefNames: string[]\n\n  private refNames: string[] | undefined\n\n  public constructor(\n    config: Instance<typeof MyConfigSchema>,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    this.endpoint = readConfObject(config, 'endpoint').uri\n    this.queryTemplate = readConfObject(config, 'queryTemplate')\n    this.additionalQueryParams = readConfObject(config, 'additionalQueryParams')\n    this.refNamesQueryTemplate = readConfObject(config, 'refNamesQueryTemplate')\n    this.configRefNames = readConfObject(config, 'refNames')\n  }\n\n  public async getRefNames(opts: BaseOptions = {}): Promise<string[]> {\n    if (this.refNames) {\n      return this.refNames\n    }\n    if (this.refNamesQueryTemplate) {\n      const queryTemplate = encodeURIComponent(this.refNamesQueryTemplate)\n      const results = await this.querySparql(queryTemplate, opts)\n      this.refNames = this.resultsToRefNames(results)\n    } else {\n      this.refNames = this.configRefNames\n    }\n    return this.refNames\n  }\n\n  public getFeatures(query: NoAssemblyRegion, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const filledTemplate = encodeURIComponent(\n        format(this.queryTemplate, query),\n      )\n      const { refName } = query\n      const results = await this.querySparql(filledTemplate, opts)\n      this.resultsToFeatures(results, refName).forEach(feature => {\n        observer.next(feature)\n      })\n      observer.complete()\n    }, opts.signal)\n  }\n\n  private async querySparql(query: string, opts?: BaseOptions): Promise<any> {\n    let additionalQueryParams = ''\n    if (this.additionalQueryParams.length) {\n      additionalQueryParams = `&${this.additionalQueryParams.join('&')}`\n    }\n    const signal = opts?.signal\n    const response = await fetch(\n      `${this.endpoint}?query=${query}${additionalQueryParams}`,\n      {\n        headers: { accept: 'application/json,application/sparql-results+json' },\n        signal,\n      },\n    )\n    return response.json()\n  }\n\n  private resultsToRefNames(response: SPARQLResponse): string[] {\n    const rows = response.results.bindings || []\n    const fields = response.head.vars\n    if (!fields.includes('refName')) {\n      throw new Error('\"refName\" not found in refNamesQueryTemplate response')\n    }\n    return rows.map(row => row.refName!.value)\n  }\n\n  private resultsToFeatures(\n    results: SPARQLResponse,\n    refName: string,\n  ): SimpleFeature[] {\n    const rows = results.results.bindings || []\n    const fields = results.head.vars\n    const requiredFields = ['start', 'end', 'uniqueId']\n    requiredFields.forEach(requiredField => {\n      if (!fields.includes(requiredField)) {\n        console.error(\n          `Required field ${requiredField} missing from feature data`,\n        )\n      }\n    })\n    const seenFeatures: Record<string, SPARQLFeature> = {}\n    rows.forEach(row => {\n      const rawData: Record<string, string>[] = [{}]\n      fields.forEach(field => {\n        if (field in row) {\n          const { value } = row[field]!\n          let idx = 0\n          while (field.startsWith('sub_')) {\n            field = field.slice(4)\n            idx += 1\n          }\n          while (idx > rawData.length - 1) {\n            rawData.push({})\n          }\n          rawData[idx]![field] = value\n        }\n      })\n\n      rawData.forEach((rd, idx) => {\n        const { uniqueId, start, end, strand } = rd\n        if (idx < rawData.length - 1) {\n          rawData[idx + 1]!.parentUniqueId = uniqueId!\n        }\n        seenFeatures[uniqueId!] = {\n          data: {\n            ...rd,\n            uniqueId: uniqueId!,\n            refName,\n            start: Number.parseInt(start!, 10),\n            end: Number.parseInt(end!, 10),\n            strand: Number.parseInt(strand!, 10) || 0,\n          },\n        }\n      })\n    })\n\n    // resolve subfeatures, keeping only top-level features in seenFeatures\n    for (const [uniqueId, f] of Object.entries(seenFeatures)) {\n      const pid = f.data.parentUniqueId\n      f.data.parentUniqueId = undefined\n      if (pid) {\n        const p = seenFeatures[pid]\n        if (p) {\n          if (!p.data.subfeatures) {\n            p.data.subfeatures = []\n          }\n          p.data.subfeatures.push({\n            ...f.data,\n            uniqueId,\n          })\n          delete seenFeatures[uniqueId]\n        } else {\n          const subfeatures = Object.values(seenFeatures)\n            .map(sf => sf.data.subfeatures)\n            .filter(sf => !!sf)\n            .flat()\n          let found = false\n          for (const subfeature of subfeatures) {\n            if (subfeature.uniqueId === pid) {\n              if (!subfeature.subfeatures) {\n                subfeature.subfeatures = []\n              }\n              subfeature.subfeatures.push({\n                ...f.data,\n                uniqueId,\n              })\n              delete seenFeatures[uniqueId]\n              found = true\n              break\n            }\n            if (subfeature.subfeatures) {\n              subfeatures.push(...subfeature.subfeatures)\n            }\n          }\n          if (!found) {\n            console.error(`Could not find parentID ${pid}`)\n          }\n        }\n      }\n    }\n\n    return Object.keys(seenFeatures).map(\n      seenFeature =>\n        new SimpleFeature({\n          ...seenFeatures[seenFeature]!.data,\n          uniqueId: seenFeature,\n          subfeatures: seenFeatures[seenFeature]!.data.subfeatures,\n        }),\n    )\n  }\n\n  public async hasDataForRefName(\n    refName: string,\n    opts: BaseOptions = {},\n  ): Promise<boolean> {\n    const refNames = await this.getRefNames(opts)\n    if (refNames.length && !refNames.includes(refName)) {\n      return false\n    }\n    return true\n  }\n\n  public freeResources(/* { region } */): void {}\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport default ConfigurationSchema(\n  'SPARQLAdapter',\n  {\n    endpoint: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: 'https://somesite.com/sparql',\n        locationType: 'UriLocation',\n      },\n      description: 'URL of the SPARQL endpoint',\n    },\n    queryTemplate: {\n      type: 'text',\n      defaultValue: '',\n      description:\n        'SPARQL query where {start} {end} and {refName} will get replaced for each call',\n    },\n    refNamesQueryTemplate: {\n      type: 'text',\n      defaultValue: '',\n      description:\n        'SPARQL query that returns the possible refNames in a ?refName column',\n    },\n    refNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Possible refNames used by the SPARQL endpoint (ignored if \"refNamesQueryTemplate\" is provided)',\n    },\n    additionalQueryParams: {\n      type: 'stringArray',\n      defaultValue: [],\n      description:\n        'Additional parameters to add to the query, e.g. \"format=JSON\"',\n    },\n  },\n  { explicitlyTyped: true },\n)\n","import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  AdapterClass as SPARQLAdapterClass,\n  configSchema as sparqlAdapterConfigSchema,\n} from './SPARQLAdapter'\nimport { AdapterGuesser, getFileName } from '@jbrowse/core/util/tracks'\n\nexport default class RdfPlugin extends Plugin {\n  name = 'RdfPlugin'\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addAdapterType(\n      () =>\n        new AdapterType({\n          name: 'SPARQLAdapter',\n          displayName: 'SPARQL adapter',\n          configSchema: sparqlAdapterConfigSchema,\n          AdapterClass: SPARQLAdapterClass,\n        }),\n    )\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\/sparql$/i\n          const adapterName = 'SPARQLAdapter'\n          const fileName = getFileName(file)\n          if (regexGuess.test(fileName) || adapterHint === adapterName) {\n            return {\n              type: adapterName,\n              endpoint: file,\n            }\n          }\n          return adapterGuesser(file, index, adapterHint)\n        }\n      },\n    )\n  }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config TwoBitAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst TwoBitAdapter = ConfigurationSchema(\n  'TwoBitAdapter',\n  {\n    /**\n     * #slot\n     */\n    twoBitLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/my.2bit', locationType: 'UriLocation' },\n    },\n    /**\n     * #slot\n     */\n    chromSizesLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/default.chrom.sizes',\n        locationType: 'UriLocation',\n      },\n      description:\n        'An optional chrom.sizes file can be supplied to speed up loading since parsing the twobit file can take time',\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default TwoBitAdapter\n","import React from 'react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\nimport {\n  Feature,\n  Region,\n  bpSpanPx,\n  revcom,\n  complement,\n  defaultStarts,\n  defaultStops,\n  defaultCodonTable,\n  generateCodonTable,\n  Frame,\n} from '@jbrowse/core/util'\nimport { Theme } from '@mui/material'\n\nfunction Translation({\n  codonTable,\n  seq,\n  frame,\n  bpPerPx,\n  colorByCDS,\n  region,\n  seqStart,\n  height,\n  y,\n  reverse = false,\n  theme,\n}: {\n  codonTable: Record<string, string>\n  seq: string\n  frame: Frame\n  colorByCDS: boolean\n  bpPerPx: number\n  region: Region\n  seqStart: number\n  reverse?: boolean\n  height: number\n  y: number\n  theme?: Theme\n}) {\n  const normalizedFrame = Math.abs(frame) - 1\n  const seqFrame = seqStart % 3\n  const frameShift = (normalizedFrame - seqFrame + 3) % 3\n\n  const frameShiftAdjustedSeqLength = seq.length - frameShift\n  const multipleOfThreeLength =\n    frameShiftAdjustedSeqLength - (frameShiftAdjustedSeqLength % 3)\n  const seqSliced = seq.slice(frameShift, frameShift + multipleOfThreeLength)\n\n  const translated: { letter: string; codon: string }[] = []\n  for (let i = 0; i < seqSliced.length; i += 3) {\n    const codon = seqSliced.slice(i, i + 3)\n    const normalizedCodon = reverse ? revcom(codon) : codon\n    const aminoAcid = codonTable[normalizedCodon] || ''\n    translated.push({\n      letter: aminoAcid,\n      codon: normalizedCodon.toUpperCase(),\n    })\n  }\n\n  const width = (region.end - region.start) / bpPerPx\n  const codonWidth = (1 / bpPerPx) * 3\n  const renderLetter = 1 / bpPerPx >= 12\n  const frameOffset = frameShift / bpPerPx\n  const startOffset = (region.start - seqStart) / bpPerPx\n  const offset = frameOffset - startOffset\n  const defaultFill = colorByCDS\n    ? theme?.palette.framesCDS.at(frame)?.main\n    : theme?.palette.frames.at(frame)?.main\n  return (\n    <>\n      <rect x={0} y={y} width={width} height={height} fill={defaultFill} />\n      {translated.map((element, index) => {\n        const x = region.reversed\n          ? width - (index + 1) * codonWidth - offset\n          : codonWidth * index + offset\n        const { letter, codon } = element\n        const codonFill = defaultStarts.includes(codon)\n          ? theme?.palette.startCodon\n          : defaultStops.includes(codon)\n            ? theme?.palette.stopCodon\n            : undefined\n        return !(renderLetter || codonFill) ? null : (\n          <React.Fragment key={`${index}-${letter}`}>\n            <rect\n              x={x}\n              y={y}\n              width={\n                renderLetter\n                  ? codonWidth\n                  : codonWidth + 0.7 /* small fudge factor when zoomed out*/\n              }\n              height={height}\n              stroke={renderLetter ? '#555' : 'none'}\n              fill={codonFill || 'none'}\n            />\n            {renderLetter ? (\n              <text\n                x={x + codonWidth / 2}\n                fontSize={height - 2}\n                y={y + height / 2}\n                dominantBaseline=\"middle\"\n                textAnchor=\"middle\"\n              >\n                {letter}\n              </text>\n            ) : null}\n          </React.Fragment>\n        )\n      })}\n    </>\n  )\n}\n\nfunction Sequence({\n  bpPerPx,\n  region,\n  feature,\n  sequenceType,\n  theme,\n  height,\n  seq,\n  y,\n}: {\n  seq: string\n  theme: Theme\n  bpPerPx: number\n  sequenceType: string\n  height: number\n  region: Region\n  feature: Feature\n  y: number\n}) {\n  const render = 1 / bpPerPx >= 12\n  const s = feature.get('start')\n  const e = feature.get('end')\n  const [leftPx, rightPx] = bpSpanPx(s, e, region, bpPerPx)\n  const reverse = region.reversed\n  const len = e - s\n  const w = Math.max((rightPx - leftPx) / len, 0.8)\n\n  return (\n    <>\n      {seq.split('').map((letter, index) => {\n        const color =\n          sequenceType === 'dna'\n            ? // @ts-expect-error\n              theme.palette.bases[letter.toUpperCase()]\n            : undefined\n        const x = reverse ? rightPx - (index + 1) * w : leftPx + index * w\n        return (\n          /* biome-ignore lint/suspicious/noArrayIndexKey: */\n          <React.Fragment key={`${letter}-${index}`}>\n            <rect\n              x={x}\n              y={y}\n              width={w}\n              height={height}\n              fill={color ? color.main : '#aaa'}\n              stroke={render ? '#555' : 'none'}\n            />\n            {render ? (\n              <text\n                x={x + w / 2}\n                y={y + height / 2}\n                dominantBaseline=\"middle\"\n                textAnchor=\"middle\"\n                fontSize={height - 2}\n                fill={\n                  color ? theme.palette.getContrastText(color.main) : 'black'\n                }\n              >\n                {letter}\n              </text>\n            ) : null}\n          </React.Fragment>\n        )\n      })}\n    </>\n  )\n}\n\nfunction SequenceSVG({\n  regions,\n  theme: configTheme,\n  colorByCDS,\n  features = new Map(),\n  showReverse = true,\n  showForward = true,\n  showTranslation = true,\n  sequenceType = 'dna',\n  bpPerPx,\n  rowHeight,\n}: {\n  regions: Region[]\n  theme?: Theme\n  features: Map<string, Feature>\n  colorByCDS: boolean\n  showReverse?: boolean\n  showForward?: boolean\n  showTranslation?: boolean\n  sequenceType?: string\n  bpPerPx: number\n  rowHeight: number\n}) {\n  const region = regions[0]!\n  const theme = createJBrowseTheme(configTheme)\n  const codonTable = generateCodonTable(defaultCodonTable)\n  const [feature] = [...features.values()]\n  if (!feature) {\n    return null\n  }\n  const seq: string = feature.get('seq')\n  if (!seq) {\n    return null\n  }\n\n  // incrementer for the y-position of the current sequence being rendered\n  // (applies to both translation rows and dna rows)\n  let currY = -rowHeight\n\n  const showSequence = bpPerPx <= 1\n\n  const forwardFrames: Frame[] = showTranslation && showForward ? [3, 2, 1] : []\n  const reverseFrames: Frame[] =\n    showTranslation && showReverse ? [-1, -2, -3] : []\n\n  // if region.reversed, the forward translation is on bottom, reverse on top\n  const [topFrames, bottomFrames] = region.reversed\n    ? [reverseFrames.toReversed(), forwardFrames.toReversed()]\n    : [forwardFrames, reverseFrames]\n  return (\n    <>\n      {topFrames.map(index => (\n        <Translation\n          key={`translation-${index}`}\n          colorByCDS={colorByCDS}\n          seq={seq}\n          y={(currY += rowHeight)}\n          codonTable={codonTable}\n          frame={index}\n          bpPerPx={bpPerPx}\n          region={region}\n          seqStart={feature.get('start')}\n          theme={theme}\n          height={rowHeight}\n          reverse={region.reversed}\n        />\n      ))}\n\n      {showForward && showSequence ? (\n        <Sequence\n          height={rowHeight}\n          sequenceType={sequenceType}\n          y={(currY += rowHeight)}\n          feature={feature}\n          region={region}\n          seq={region.reversed ? complement(seq) : seq}\n          bpPerPx={bpPerPx}\n          theme={theme}\n        />\n      ) : null}\n\n      {showReverse && showSequence ? (\n        <Sequence\n          height={rowHeight}\n          sequenceType={sequenceType}\n          y={(currY += rowHeight)}\n          feature={feature}\n          region={region}\n          seq={region.reversed ? seq : complement(seq)}\n          bpPerPx={bpPerPx}\n          theme={theme}\n        />\n      ) : null}\n\n      {bottomFrames.map(index => (\n        <Translation\n          key={`rev-translation-${index}`}\n          colorByCDS={colorByCDS}\n          seq={seq}\n          y={(currY += rowHeight)}\n          codonTable={codonTable}\n          frame={index}\n          bpPerPx={bpPerPx}\n          region={region}\n          seqStart={feature.get('start')}\n          theme={theme}\n          height={rowHeight}\n          reverse={!region.reversed}\n        />\n      ))}\n    </>\n  )\n}\n\nfunction Wrapper({\n  exportSVG,\n  width,\n  totalHeight,\n  children,\n}: {\n  exportSVG?: { rasterizeLayers: boolean }\n  width: number\n  totalHeight: number\n  children: React.ReactNode\n}) {\n  return exportSVG ? (\n    children\n  ) : (\n    <svg\n      data-testid=\"sequence_track\"\n      width={width}\n      height={totalHeight}\n      style={{\n        // use block because svg by default is inline, which adds a margin\n        display: 'block',\n        width,\n        height: totalHeight,\n        userSelect: 'none',\n      }}\n    >\n      {children}\n    </svg>\n  )\n}\n\nconst DivSequenceRendering = observer(function (props: {\n  exportSVG?: { rasterizeLayers: boolean }\n  features: Map<string, Feature>\n  regions: Region[]\n  colorByCDS: boolean\n  bpPerPx: number\n  rowHeight: number\n  sequenceHeight: number\n  config: AnyConfigurationModel\n  theme?: Theme\n  showForward?: boolean\n  showReverse?: boolean\n  showTranslation?: boolean\n}) {\n  const { regions, bpPerPx, sequenceHeight } = props\n  const region = regions[0]!\n  const width = (region.end - region.start) / bpPerPx\n\n  return (\n    <Wrapper {...props} totalHeight={sequenceHeight} width={width}>\n      <SequenceSVG {...props} />\n    </Wrapper>\n  )\n})\n\nexport default DivSequenceRendering\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config DivSequenceRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst DivSequenceRenderer = ConfigurationSchema(\n  'DivSequenceRenderer',\n  {\n    /**\n     * #slot\n     */\n    height: {\n      type: 'number',\n      description: 'height in pixels of each line of sequence',\n      defaultValue: 16,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default DivSequenceRenderer\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport { Region } from '@jbrowse/core/util/types'\nimport FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\nimport ReactComponent from './components/DivSequenceRendering'\nimport configSchema from './configSchema'\n\n/* adjust in both directions */\nclass DivSequenceRenderer extends FeatureRendererType {\n  supportsSVG = true\n\n  getExpandedRegion(region: Region) {\n    return {\n      ...region,\n      start: Math.max(region.start - 3, 0),\n      end: region.end + 3,\n    }\n  }\n}\n\nexport default function DivSequenceRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new DivSequenceRenderer({\n        name: 'DivSequenceRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n/**\n * #config BgzipFastaAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst BgzipFastaAdapter = ConfigurationSchema(\n  'BgzipFastaAdapter',\n  {\n    /**\n     * #slot\n     */\n    fastaLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/seq.fa.gz', locationType: 'UriLocation' },\n    },\n    /**\n     * #slot\n     */\n    faiLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/seq.fa.gz.fai',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    metadataLocation: {\n      description: 'Optional metadata file',\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/fa.metadata.yaml',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    gziLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/seq.fa.gz.gzi',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default BgzipFastaAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config ChromSizesAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst ChromSizesAdapter = ConfigurationSchema(\n  'ChromSizesAdapter',\n  {\n    /**\n     * #slot\n     */\n    chromSizesLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/species.chrom.sizes',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default ChromSizesAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config IndexedFastaAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst IndexedFastaAdapter = ConfigurationSchema(\n  'IndexedFastaAdapter',\n  {\n    /**\n     * #slot\n     */\n    fastaLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/seq.fa', locationType: 'UriLocation' },\n    },\n    /**\n     * #slot\n     */\n    faiLocation: {\n      type: 'fileLocation',\n      defaultValue: { uri: '/path/to/seq.fa.fai', locationType: 'UriLocation' },\n    },\n    /**\n     * #slot\n     */\n    metadataLocation: {\n      description: 'Optional metadata file',\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/fa.metadata.yaml',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default IndexedFastaAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config UnindexedFastaAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst UnindexedFastaAdapter = ConfigurationSchema(\n  'UnindexedFastaAdapter',\n  {\n    rewriteRefNames: {\n      type: 'string',\n      defaultValue: '',\n      contextVariable: ['refName'],\n    },\n    /**\n     * #slot\n     */\n    fastaLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/seq.fa',\n        locationType: 'UriLocation',\n      },\n    },\n    /**\n     * #slot\n     */\n    metadataLocation: {\n      description: 'Optional metadata file',\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/fa.metadata.yaml',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\nexport default UnindexedFastaAdapter\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config SequenceSearchAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = ConfigurationSchema(\n  'SequenceSearchAdapter',\n  {\n    /**\n     * #slot\n     */\n    search: {\n      type: 'string',\n      defaultValue: '',\n      description: 'Search string or regex to search for',\n    },\n    /**\n     * #slot\n     */\n    sequenceAdapter: {\n      type: 'frozen',\n      defaultValue: null,\n    },\n    /**\n     * #slot\n     */\n    searchForward: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    searchReverse: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n    /**\n     * #slot\n     */\n    caseInsensitive: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default configSchema\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { default as divSequenceRendererConfigSchema } from '../DivSequenceRenderer/configSchema'\n\n/**\n * #config LinearReferenceSequenceDisplay\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport const configSchema = ConfigurationSchema(\n  'LinearReferenceSequenceDisplay',\n  {\n    /**\n     * #slot\n     */\n    renderer: divSequenceRendererConfigSchema,\n  },\n  { explicitIdentifier: 'displayId', explicitlyTyped: true },\n)\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport TwoBitAdapterF from './TwoBitAdapter'\nimport DivSequenceRendererF from './DivSequenceRenderer'\nimport BgzipFastaAdapterF from './BgzipFastaAdapter'\nimport ChromSizesAdapterF from './ChromSizesAdapter'\nimport IndexedFastaAdapterF from './IndexedFastaAdapter'\nimport UnindexedFastaAdapterF from './UnindexedFastaAdapter'\nimport SequenceSearchAdapterF from './SequenceSearchAdapter'\nimport ReferenceSequenceTrackF from './ReferenceSequenceTrack'\nimport LinearReferenceSequenceDisplayF from './LinearReferenceSequenceDisplay'\nimport createExtensionPoints from './createExtensionPoints'\n\nexport default class SequencePlugin extends Plugin {\n  name = 'SequencePlugin'\n\n  install(pluginManager: PluginManager) {\n    DivSequenceRendererF(pluginManager)\n    TwoBitAdapterF(pluginManager)\n    BgzipFastaAdapterF(pluginManager)\n    ChromSizesAdapterF(pluginManager)\n    IndexedFastaAdapterF(pluginManager)\n    UnindexedFastaAdapterF(pluginManager)\n    SequenceSearchAdapterF(pluginManager)\n    ReferenceSequenceTrackF(pluginManager)\n    LinearReferenceSequenceDisplayF(pluginManager)\n    createExtensionPoints(pluginManager)\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function TwoBitAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'TwoBitAdapter',\n        displayName: 'TwoBit adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () => import('./TwoBitAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function BgzipFastaAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'BgzipFastaAdapter',\n        displayName: 'Bgzip-indexed FASTA adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./BgzipFastaAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function ChromSizesAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'ChromSizesAdapter',\n        displayName: 'Chrom sizes adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./ChromSizesAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function IndexedFastaAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'IndexedFastaAdapter',\n        displayName: 'Indexed FASTA adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./IndexedFastaAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function UnindexedFastaAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'UnindexedFastaAdapter',\n        displayName: 'Unindexed FASTA adapter',\n        configSchema,\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        getAdapterClass: () =>\n          import('./UnindexedFastaAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchema from './configSchema'\n\nexport default function SequenceSearchAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'SequenceSearchAdapter',\n        displayName: 'Sequence search adapter',\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        configSchema,\n        getAdapterClass: () =>\n          import('./SequenceSearchAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { createReferenceSeqTrackConfig } from './configSchema'\n\nexport default function ReferenceSequenceTrackF(pluginManager: PluginManager) {\n  pluginManager.addTrackType(() => {\n    const configSchema = createReferenceSeqTrackConfig(pluginManager)\n\n    return new TrackType({\n      name: 'ReferenceSequenceTrack',\n      displayName: 'Reference sequence track',\n      configSchema,\n      stateModel: createBaseTrackModel(\n        pluginManager,\n        'ReferenceSequenceTrack',\n        configSchema,\n      ),\n    })\n  })\n}\n","import { types } from 'mobx-state-tree'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// Note: this is primarily a copy of createBaseTrackConfig, except with a\n// subset of the config slots, to avoid including fields that don't make sense\n// for the ReferenceSequenceTrack\n\n/**\n * #config ReferenceSequenceTrack\n * used to display base level DNA sequence tracks\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport function createReferenceSeqTrackConfig(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'ReferenceSequenceTrack',\n    {\n      /**\n       * #slot\n       * configuration for track adapter\n       */\n      adapter: pluginManager.pluggableConfigSchemaType('adapter'),\n\n      /**\n       * #slot\n       * configuration for the displays e.g. LinearReferenceSequenceDisplay\n       */\n      displays: types.array(pluginManager.pluggableConfigSchemaType('display')),\n\n      /**\n       * #slot\n       */\n      name: {\n        type: 'string',\n        description:\n          'optional track name, otherwise uses the \"Reference sequence (assemblyName)\"',\n        defaultValue: '',\n      },\n\n      /**\n       * #slot\n       */\n      sequenceType: {\n        type: 'string',\n        description: 'either dna or pep',\n        defaultValue: 'dna',\n      },\n\n      /**\n       * #slot\n       */\n      description: {\n        description: 'a description of the track',\n        type: 'string',\n        defaultValue: '',\n      },\n\n      /**\n       * #slot\n       */\n      metadata: {\n        type: 'frozen',\n        description: 'anything to add about this track',\n        defaultValue: {},\n      },\n\n      formatAbout: ConfigurationSchema('FormatAbout', {\n        /**\n         * #slot formatAbout.config\n         */\n        config: {\n          type: 'frozen',\n          description: 'formats configuration in about dialog',\n          defaultValue: {},\n          contextVariable: ['config'],\n        },\n\n        /**\n         * #slot formatAbout.hideUris\n         */\n        hideUris: {\n          type: 'boolean',\n          defaultValue: false,\n        },\n      }),\n    },\n    {\n      preProcessSnapshot: s => {\n        const snap = JSON.parse(JSON.stringify(s))\n        const displayTypes = new Set()\n        const { displays = [] } = snap\n        if (snap.trackId !== 'placeholderId') {\n          // Gets the displays on the track snapshot and the possible displays\n          // from the track type and adds any missing possible displays to the\n          // snapshot\n          displays.forEach((d: any) => d && displayTypes.add(d.type))\n          const trackType = pluginManager.getTrackType(snap.type)\n          trackType?.displayTypes.forEach(displayType => {\n            if (!displayTypes.has(displayType.name)) {\n              displays.push({\n                displayId: `${snap.trackId}-${displayType.name}`,\n                type: displayType.name,\n              })\n            }\n          })\n        }\n        return { ...snap, displays }\n      },\n      /**\n       * #identifier\n       * all tracks have a globally unique 'trackId'\n       */\n      explicitIdentifier: 'trackId',\n      explicitlyTyped: true,\n      actions: (self: any) => ({\n        addDisplayConf(displayConf: { type: string; displayId: string }) {\n          const { type } = displayConf\n          if (!type) {\n            throw new Error(`unknown display type ${type}`)\n          }\n          const display = self.displays.find(\n            (d: any) => d && d.displayId === displayConf.displayId,\n          )\n          if (display) {\n            return display\n          }\n          const length = self.displays.push(displayConf)\n          return self.displays[length - 1]\n        },\n      }),\n    },\n  )\n}\n","import { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nimport { configSchema } from './configSchema'\nimport { modelFactory } from './model'\n\nexport default function LinearReferenceSequenceDisplayF(\n  pluginManager: PluginManager,\n) {\n  pluginManager.addDisplayType(() => {\n    const stateModel = modelFactory(configSchema)\n    return new DisplayType({\n      name: 'LinearReferenceSequenceDisplay',\n      configSchema,\n      stateModel,\n      displayName: 'Reference sequence display',\n      trackType: 'ReferenceSequenceTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import { addDisposer, types } from 'mobx-state-tree'\nimport {\n  BaseLinearDisplay,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\nimport {\n  AnyConfigurationSchemaType,\n  ConfigurationReference,\n  getConf,\n} from '@jbrowse/core/configuration'\nimport { getParentRenderProps } from '@jbrowse/core/util/tracks'\nimport { getContainingTrack, getContainingView } from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * #stateModel LinearReferenceSequenceDisplay\n * base model `BaseLinearDisplay`\n */\nexport function modelFactory(configSchema: AnyConfigurationSchemaType) {\n  return types\n    .compose(\n      'LinearReferenceSequenceDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearReferenceSequenceDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        showForward: true,\n        /**\n         * #property\n         */\n        showReverse: true,\n        /**\n         * #property\n         */\n        showTranslation: true,\n      }),\n    )\n    .volatile(() => ({\n      /**\n       * #property\n       */\n      rowHeight: 15,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get sequenceType() {\n        return getConf(getContainingTrack(self), 'sequenceType')\n      },\n\n      /**\n       * #getter\n       * showReverse setting, it is NOT disabled for non-dna sequences\n       */\n      get showForwardActual() {\n        return self.showForward\n      },\n\n      /**\n       * #getter\n       * showReverse setting, is disabled for non-dna sequences\n       */\n      get showReverseActual() {\n        return this.sequenceType === 'dna' ? self.showReverse : false\n      },\n\n      /**\n       * #getter\n       * showTranslation setting is disabled for non-dna sequences\n       */\n      get showTranslationActual() {\n        return this.sequenceType === 'dna' ? self.showTranslation : false\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get sequenceHeight() {\n        const {\n          rowHeight,\n          showTranslationActual,\n          showReverseActual,\n          showForwardActual,\n        } = self\n        const r1 =\n          showReverseActual && showTranslationActual ? rowHeight * 3 : 0\n        const r2 =\n          showForwardActual && showTranslationActual ? rowHeight * 3 : 0\n        const t = r1 + r2\n        const r = showReverseActual ? rowHeight : 0\n        const s = showForwardActual ? rowHeight : 0\n        return t + r + s\n      },\n    }))\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #method\n         */\n        renderProps() {\n          const {\n            rpcDriverName,\n            showForwardActual,\n            showReverseActual,\n            showTranslationActual,\n            rowHeight,\n            sequenceHeight,\n            sequenceType,\n          } = self\n          return {\n            ...superRenderProps(),\n            ...getParentRenderProps(self),\n            config: self.configuration.renderer,\n            rpcDriverName,\n            showForward: showForwardActual,\n            showReverse: showReverseActual,\n            showTranslation: showTranslationActual,\n            sequenceType,\n            rowHeight,\n            sequenceHeight,\n          }\n        },\n      }\n    })\n    .views(self => ({\n      /**\n       * #method\n       */\n      regionCannotBeRendered(/* region */) {\n        const view = getContainingView(self) as LGV\n        return view.bpPerPx > 3 ? 'Zoom in to see sequence' : undefined\n      },\n      /**\n       * #getter\n       */\n      get rendererTypeName() {\n        return self.configuration.renderer.type\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      toggleShowForward() {\n        self.showForward = !self.showForward\n      },\n      /**\n       * #action\n       */\n      toggleShowReverse() {\n        self.showReverse = !self.showReverse\n      },\n      /**\n       * #action\n       */\n      toggleShowTranslation() {\n        self.showTranslation = !self.showTranslation\n      },\n      afterAttach() {\n        addDisposer(\n          self,\n          autorun(() => {\n            const view = getContainingView(self) as LGV\n            if (view.bpPerPx > 3) {\n              self.setHeight(50)\n            } else {\n              self.setHeight(self.sequenceHeight)\n            }\n          }),\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      trackMenuItems() {\n        return [\n          ...(self.sequenceType === 'dna'\n            ? [\n                {\n                  label: 'Show forward',\n                  type: 'checkbox',\n                  checked: self.showForward,\n                  onClick: () => {\n                    self.toggleShowForward()\n                  },\n                },\n                {\n                  label: 'Show reverse',\n                  type: 'checkbox',\n                  checked: self.showReverse,\n                  onClick: () => {\n                    self.toggleShowReverse()\n                  },\n                },\n                {\n                  label: 'Show translation',\n                  type: 'checkbox',\n                  checked: self.showTranslation,\n                  onClick: () => {\n                    self.toggleShowTranslation()\n                  },\n                },\n              ]\n            : []),\n        ]\n      },\n    }))\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport {\n  makeIndex,\n  getFileName,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport default function ExtensionPointsF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.2bit$/i\n        const adapterName = 'TwoBitAdapter'\n        const fileName = getFileName(file)\n        const obj = {\n          type: adapterName,\n          twoBitLocation: file,\n        }\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'Core-guessTrackTypeForLocation',\n    (trackTypeGuesser: TrackTypeGuesser) => {\n      return (adapterName: string) => {\n        if (adapterName === 'TwoBitAdapter') {\n          return 'ReferenceSequenceTrack'\n        }\n        return trackTypeGuesser(adapterName)\n      }\n    },\n  )\n\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.(fa|fasta|fas|fna|mfa)$/i\n        const adapterName = 'IndexedFastaAdapter'\n        const fileName = getFileName(file)\n        const obj = {\n          type: adapterName,\n          fastaLocation: file,\n          faiLocation: index || makeIndex(file, '.fai'),\n        }\n\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'Core-guessTrackTypeForLocation',\n    (trackTypeGuesser: TrackTypeGuesser) => {\n      return (adapterName: string) => {\n        if (adapterName === 'IndexedFastaAdapter') {\n          return 'ReferenceSequenceTrack'\n        }\n        return trackTypeGuesser(adapterName)\n      }\n    },\n  )\n\n  pluginManager.addToExtensionPoint(\n    'Core-guessAdapterForLocation',\n    (adapterGuesser: AdapterGuesser) => {\n      return (\n        file: FileLocation,\n        index?: FileLocation,\n        adapterHint?: string,\n      ) => {\n        const regexGuess = /\\.(fa|fasta|fas|fna|mfa)\\.b?gz$/i\n        const adapterName = 'BgzipFastaAdapter'\n        const fileName = getFileName(file)\n        const obj = {\n          type: adapterName,\n          faiLocation: makeIndex(file, '.fai'),\n          gziLocation: makeIndex(file, '.gzi'),\n        }\n\n        if (regexGuess.test(fileName) && !adapterHint) {\n          return obj\n        }\n        if (adapterHint === adapterName) {\n          return obj\n        }\n        return adapterGuesser(file, index, adapterHint)\n      }\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'Core-guessTrackTypeForLocation',\n    (trackTypeGuesser: TrackTypeGuesser) => {\n      return (adapterName: string) => {\n        if (adapterName === 'BgzipFastaAdapter') {\n          return 'ReferenceSequenceTrack'\n        }\n        return trackTypeGuesser(adapterName)\n      }\n    },\n  )\n}\n","import React, { useEffect, useState } from 'react'\nimport { useTheme } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { isAlive, isStateTreeNode } from 'mobx-state-tree'\nimport {\n  measureText,\n  getViewParams,\n  Feature,\n  Region,\n  stripAlpha,\n} from '@jbrowse/core/util'\nimport { DisplayModel } from './util'\n\ninterface ViewParams {\n  start: number\n  end: number\n  offsetPx: number\n  offsetPx1: number\n}\n\nconst FeatureLabel = observer(function ({\n  text,\n  x,\n  y,\n  region,\n  reversed,\n  bpPerPx,\n  exportSVG,\n  feature,\n  viewParams,\n  color = 'black',\n  fontHeight = 11,\n  featureWidth = 0,\n  allowedWidthExpansion = 0,\n  displayModel = {},\n}: {\n  text: string\n  x: number\n  y: number\n  color?: string\n  fontHeight?: number\n  featureWidth?: number\n  bpPerPx: number\n  allowedWidthExpansion?: number\n  feature: Feature\n  reversed?: boolean\n  displayModel?: DisplayModel\n  exportSVG?: unknown\n  region: Region\n  viewParams: ViewParams\n}) {\n  const totalWidth = featureWidth + allowedWidthExpansion\n  const measuredTextWidth = measureText(text, fontHeight)\n  const params =\n    isStateTreeNode(displayModel) && isAlive(displayModel) && !exportSVG\n      ? getViewParams(displayModel)\n      : viewParams\n\n  const viewLeft = reversed ? params.end : params.start\n\n  const [labelVisible, setLabelVisible] = useState(exportSVG)\n  const theme = useTheme()\n\n  // we use an effect to set the label visible because there can be a\n  // mismatch between the server and the client after hydration due to the\n  // floating labels. if we are exporting an SVG we allow it as is though and\n  // do not use the effect\n  useEffect(() => {\n    setLabelVisible(true)\n  }, [])\n\n  if (isStateTreeNode(region) && !isAlive(region)) {\n    return null\n  }\n\n  const rstart = region.start\n  const rend = region.end\n  const fstart = feature.get('start')\n  const fend = feature.get('end')\n\n  const featureWidthBp = measuredTextWidth * bpPerPx\n\n  // this tricky bit of code helps smooth over block boundaries\n  // not supported for reverse mode currently\n  // reason: reverse mode allocates space for the label in the \"normal\n  // forward orientation\" making it hard to slide. The reverse mode should\n  // allocate the label space in the reverse orientation to slide it\n  if (\n    viewLeft < rend &&\n    viewLeft > rstart &&\n    fstart < viewLeft &&\n    viewLeft + featureWidthBp < fend\n  ) {\n    x = params.offsetPx\n  } else if (\n    fstart < viewLeft &&\n    viewLeft + featureWidthBp < fend &&\n    viewLeft + featureWidthBp > rstart &&\n    viewLeft + featureWidthBp < rend\n  ) {\n    x = params.offsetPx1\n  }\n\n  return labelVisible ? (\n    <text\n      x={x}\n      y={y + fontHeight}\n      fill={color === '#f0f' ? stripAlpha(theme.palette.text.primary) : color}\n      fontSize={fontHeight}\n    >\n      {measuredTextWidth > totalWidth\n        ? `${text.slice(0, totalWidth / (fontHeight * 0.6))}...`\n        : text}\n    </text>\n  ) : null\n})\n\nexport default FeatureLabel\n","import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Feature, Region } from '@jbrowse/core/util'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport { observer } from 'mobx-react'\n\n// locals\nimport type { DisplayModel } from './util'\nimport FeatureLabel from './FeatureLabel'\n\nconst FeatureGlyph = observer(function (props: {\n  feature: Feature\n  rootLayout: SceneGraph\n  config: AnyConfigurationModel\n  name: string\n  description: string\n  shouldShowName: boolean\n  shouldShowDescription: boolean\n  colorByCDS: boolean\n  fontHeight: number\n  allowedWidthExpansion: number\n  exportSVG?: unknown\n  displayModel?: DisplayModel\n  selected?: boolean\n  reversed?: boolean\n  topLevel?: boolean\n  region: Region\n  viewParams: {\n    end: number\n    start: number\n    offsetPx: number\n    offsetPx1: number\n  }\n  bpPerPx: number\n}) {\n  const {\n    feature,\n    rootLayout,\n    config,\n    name,\n    description,\n    shouldShowName,\n    shouldShowDescription,\n  } = props\n\n  const featureLayout = rootLayout.getSubRecord(String(feature.id()))\n  if (!featureLayout) {\n    return null\n  }\n  const { GlyphComponent } = featureLayout.data || {}\n\n  return (\n    <g>\n      <GlyphComponent featureLayout={featureLayout} {...props} />\n      {shouldShowName ? (\n        <FeatureLabel\n          text={name}\n          x={rootLayout.getSubRecord('nameLabel')?.absolute.left || 0}\n          y={rootLayout.getSubRecord('nameLabel')?.absolute.top || 0}\n          color={readConfObject(config, ['labels', 'nameColor'], { feature })}\n          featureWidth={featureLayout.width}\n          {...props}\n        />\n      ) : null}\n      {shouldShowDescription ? (\n        <FeatureLabel\n          text={description}\n          x={rootLayout.getSubRecord('descriptionLabel')?.absolute.left || 0}\n          y={rootLayout.getSubRecord('descriptionLabel')?.absolute.top || 0}\n          color={readConfObject(config, ['labels', 'descriptionColor'], {\n            feature,\n          })}\n          featureWidth={featureLayout.width}\n          {...props}\n        />\n      ) : null}\n    </g>\n  )\n})\n\nexport default FeatureGlyph\n","import React, { useEffect, useState } from 'react'\nimport { bpSpanPx, Feature, Region } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\ntype LayoutRecord = [number, number, number, number]\n\ninterface OverlayRectProps extends React.SVGProps<SVGRectElement> {\n  rect?: LayoutRecord\n  region: Region\n  bpPerPx: number\n}\n\nfunction OverlayRect({\n  rect,\n  region,\n  bpPerPx,\n  ...rectProps\n}: OverlayRectProps) {\n  if (!rect) {\n    return null\n  }\n  const [leftBp, topPx, rightBp, bottomPx] = rect\n  const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n  const rectTop = Math.round(topPx)\n  const screenWidth = (region.end - region.start) / bpPerPx\n  const rectHeight = Math.round(bottomPx - topPx)\n  const width = rightPx - leftPx\n\n  if (leftPx + width < 0) {\n    return null\n  }\n  const leftWithinBlock = Math.max(leftPx, 0)\n  const diff = leftWithinBlock - leftPx\n  const widthWithinBlock = Math.max(1, Math.min(width - diff, screenWidth))\n\n  return (\n    <rect\n      x={leftWithinBlock - 2}\n      y={rectTop - 2}\n      width={widthWithinBlock + 4}\n      height={rectHeight + 4}\n      {...rectProps}\n    />\n  )\n}\n\ntype ME = React.MouseEvent<SVGRectElement>\ntype MEFE = ME | React.FocusEvent<SVGRectElement>\n\nconst SvgOverlay = observer(function ({\n  displayModel = {},\n  blockKey,\n  region,\n  bpPerPx,\n  movedDuringLastMouseDown,\n  ...handlers\n}: {\n  region: Region\n  displayModel?: {\n    getFeatureByID?: (arg0: string, arg1: string) => LayoutRecord\n    selectedFeatureId?: string\n    featureIdUnderMouse?: string\n    contextMenuFeature?: Feature\n  }\n  bpPerPx: number\n  blockKey: string\n  movedDuringLastMouseDown?: boolean\n  onFeatureMouseDown?(event: ME, featureId: string): void\n  onFeatureMouseEnter?(event: ME, featureId: string): void\n  onFeatureMouseOut?(event: MEFE, featureId: string): void\n  onFeatureMouseOver?(event: MEFE, featureId: string): void\n  onFeatureMouseUp?(event: ME, featureId: string): void\n  onFeatureMouseLeave?(event: ME, featureId: string): void\n  onFeatureMouseMove?(event: ME, featureId: string): void\n  // synthesized from mouseup and mousedown\n  onFeatureClick?(event: ME, featureId: string): void\n  onFeatureContextMenu?(event: ME, featureId: string): void\n}) {\n  const { selectedFeatureId, featureIdUnderMouse, contextMenuFeature } =\n    displayModel\n\n  const mouseoverFeatureId = featureIdUnderMouse || contextMenuFeature?.id()\n  const [renderOverlay, setRenderOverlay] = useState(false)\n  useEffect(() => {\n    setRenderOverlay(true)\n  }, [])\n\n  function onFeatureMouseDown(event: ME) {\n    const { onFeatureMouseDown: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseEnter(event: ME) {\n    const { onFeatureMouseEnter: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseOut(event: ME | React.FocusEvent<SVGRectElement>) {\n    const { onFeatureMouseOut: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseOver(event: ME | React.FocusEvent<SVGRectElement>) {\n    const { onFeatureMouseOver: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseUp(event: ME) {\n    const { onFeatureMouseUp: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseLeave(event: ME) {\n    const { onFeatureMouseLeave: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureMouseMove(event: ME) {\n    const { onFeatureMouseMove: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureClick(event: ME) {\n    if (movedDuringLastMouseDown) {\n      return undefined\n    }\n    const { onFeatureClick: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    event.stopPropagation()\n    handler(event, mouseoverFeatureId)\n  }\n\n  function onFeatureContextMenu(event: ME) {\n    const { onFeatureContextMenu: handler } = handlers\n    if (!(handler && mouseoverFeatureId)) {\n      return undefined\n    }\n    handler(event, mouseoverFeatureId)\n  }\n\n  return renderOverlay ? (\n    <>\n      {mouseoverFeatureId ? (\n        <OverlayRect\n          rect={displayModel.getFeatureByID?.(blockKey, mouseoverFeatureId)}\n          region={region}\n          bpPerPx={bpPerPx}\n          fill=\"#000\"\n          fillOpacity=\"0.2\"\n          onMouseDown={onFeatureMouseDown}\n          onMouseEnter={onFeatureMouseEnter}\n          onMouseOut={onFeatureMouseOut}\n          onMouseOver={onFeatureMouseOver}\n          onMouseUp={onFeatureMouseUp}\n          onMouseLeave={onFeatureMouseLeave}\n          onMouseMove={onFeatureMouseMove}\n          onClick={onFeatureClick}\n          onContextMenu={onFeatureContextMenu}\n          onFocus={onFeatureMouseOver}\n          onBlur={onFeatureMouseOut}\n          data-testid={mouseoverFeatureId}\n        />\n      ) : null}\n      {selectedFeatureId ? (\n        <OverlayRect\n          rect={displayModel.getFeatureByID?.(blockKey, selectedFeatureId)}\n          region={region}\n          bpPerPx={bpPerPx}\n          stroke=\"#00b8ff\"\n          fill=\"none\"\n        />\n      ) : null}\n    </>\n  ) : null\n})\n\nexport default SvgOverlay\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport { Region, Feature, stripAlpha } from '@jbrowse/core/util'\nimport { useTheme } from '@mui/material'\n\nconst Arrow = observer(function Arrow({\n  feature,\n  featureLayout,\n  config,\n  region,\n}: {\n  region: Region\n  feature: Feature\n  featureLayout: SceneGraph\n  config: AnyConfigurationModel\n}) {\n  const strand = feature.get('strand')\n  const size = 5\n  const reverseFlip = region.reversed ? -1 : 1\n  const offset = 7 * strand * reverseFlip\n  const { left = 0, top = 0, width = 0, height = 0 } = featureLayout.absolute\n\n  const c = readConfObject(config, 'color2', { feature })\n  const theme = useTheme()\n  const color2 = c === '#f0f' ? stripAlpha(theme.palette.text.secondary) : c\n  const p =\n    strand * reverseFlip === -1\n      ? left\n      : strand * reverseFlip === 1\n        ? left + width\n        : null\n  const y = top + height / 2\n\n  return p ? (\n    <>\n      <line x1={p} x2={p + offset} y1={y} y2={y} stroke={color2} />\n      <polygon\n        points={[\n          [p + offset / 2, y - size / 2],\n          [p + offset / 2, y + size / 2],\n          [p + offset, y],\n        ].toString()}\n        stroke={color2}\n        fill={color2}\n      />\n    </>\n  ) : null\n})\n\nexport default Arrow\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Region, Feature, getFrame } from '@jbrowse/core/util'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { isUTR } from './util'\nimport Arrow from './Arrow'\n\nconst utrHeightFraction = 0.65\n\nconst Box = observer(function Box(props: {\n  feature: Feature\n  region: Region\n  config: AnyConfigurationModel\n  featureLayout: SceneGraph\n  bpPerPx: number\n  selected?: boolean\n  topLevel?: boolean\n  colorByCDS: boolean\n}) {\n  const theme = useTheme()\n  const {\n    colorByCDS,\n    feature,\n    region,\n    config,\n    featureLayout,\n    bpPerPx,\n    topLevel,\n  } = props\n  const { start, end } = region\n  const screenWidth = (end - start) / bpPerPx\n  const featureStart = feature.get('start')\n  const featureEnd = feature.get('end')\n  const featureType: string | undefined = feature.get('type')\n  const featureStrand: -1 | 1 | undefined = feature.get('strand')\n  const featurePhase: 0 | 1 | 2 | undefined = feature.get('phase')\n  const width = (featureEnd - featureStart) / bpPerPx\n  const { left = 0 } = featureLayout.absolute\n  let { top = 0, height = 0 } = featureLayout.absolute\n\n  if (left + width < 0) {\n    return null\n  }\n\n  if (isUTR(feature)) {\n    top += ((1 - utrHeightFraction) / 2) * height\n    height *= utrHeightFraction\n  }\n  const leftWithinBlock = Math.max(left, 0)\n  const diff = leftWithinBlock - left\n  const widthWithinBlock = Math.max(2, Math.min(width - diff, screenWidth))\n\n  let fill: string = isUTR(feature)\n    ? readConfObject(config, 'color3', { feature })\n    : readConfObject(config, 'color1', { feature })\n  if (\n    colorByCDS &&\n    featureType === 'CDS' &&\n    featureStrand !== undefined &&\n    featurePhase !== undefined\n  ) {\n    const frame = getFrame(\n      featureStart,\n      featureEnd,\n      featureStrand,\n      featurePhase,\n    )\n    const frameColor = theme.palette.framesCDS.at(frame)?.main\n    if (frameColor) {\n      fill = frameColor\n    }\n  }\n\n  // if feature has parent and type is intron, then don't render the intron\n  // subfeature (if it doesn't have a parent, then maybe the introns are\n  // separately displayed features that should be displayed)\n  return feature.parent() && featureType === 'intron' ? null : (\n    <>\n      {topLevel ? <Arrow {...props} /> : null}\n      <rect\n        data-testid={`box-${feature.id()}`}\n        x={leftWithinBlock}\n        y={top}\n        width={widthWithinBlock}\n        height={height}\n        fill={fill}\n        stroke={readConfObject(config, 'outline', { feature }) as string}\n      />\n    </>\n  )\n})\n\nexport default Box\n","import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport { Region, Feature, stripAlpha } from '@jbrowse/core/util'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport Arrow from './Arrow'\n\nconst Segments = observer(function Segments(props: {\n  region: Region\n  feature: Feature\n  featureLayout: SceneGraph\n  config: AnyConfigurationModel\n  selected?: boolean\n  reversed?: boolean\n  subfeatures?: Feature[]\n  children?: React.ReactNode\n}) {\n  const {\n    feature,\n    featureLayout,\n    selected,\n    config,\n    // some subfeatures may be computed e.g. makeUTRs,\n    // so these are passed as a prop, or feature.get('subfeatures') by default\n    subfeatures = feature.get('subfeatures'),\n  } = props\n\n  const theme = useTheme()\n  const c = readConfObject(config, 'color2', { feature })\n  const color2 = c === '#f0f' ? stripAlpha(theme.palette.text.secondary) : c\n\n  const { left = 0, top = 0, width = 0, height = 0 } = featureLayout.absolute\n\n  const y = top + height / 2\n  return (\n    <>\n      <line\n        data-testid={feature.id()}\n        x1={left}\n        y1={y}\n        y2={y}\n        x2={left + width}\n        stroke={color2}\n      />\n      {subfeatures?.map(subfeature => {\n        const subfeatureId = String(subfeature.id())\n        const subfeatureLayout = featureLayout.getSubRecord(subfeatureId)\n        // This subfeature got filtered out\n        if (!subfeatureLayout) {\n          return null\n        }\n        const { GlyphComponent } = subfeatureLayout.data || {}\n        return (\n          <GlyphComponent\n            key={`glyph-${subfeatureId}`}\n            {...props}\n            feature={subfeature}\n            topLevel={false}\n            featureLayout={subfeatureLayout}\n            selected={selected}\n          />\n        )\n      })}\n      <Arrow {...props} />\n    </>\n  )\n})\n\nexport default Segments\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\n\nimport Segments from './Segments'\nimport { ExtraGlyphValidator, layOutFeature, layOutSubfeatures } from './util'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport { Region, Feature, SimpleFeature } from '@jbrowse/core/util'\n\n// returns a callback that will filter features features according to the\n// subParts conf var\nfunction makeSubpartsFilter(\n  confKey: string | string[],\n  config: AnyConfigurationModel,\n) {\n  const filter = readConfObject(config, confKey) as string[] | string\n  const ret = typeof filter === 'string' ? filter.split(/\\s*,\\s*/) : filter\n\n  return (feature: Feature) =>\n    ret\n      .map(typeName => typeName.toLowerCase())\n      .includes(feature.get('type').toLowerCase())\n}\n\nfunction filterSubpart(feature: Feature, config: AnyConfigurationModel) {\n  return makeSubpartsFilter('subParts', config)(feature)\n}\n\nfunction isUTR(feature: Feature) {\n  return /(\\bUTR|_UTR|untranslated[_\\s]region)\\b/.test(\n    feature.get('type') || '',\n  )\n}\n\nfunction makeUTRs(parent: Feature, subs: Feature[]) {\n  // based on Lincoln's UTR-making code in\n  // Bio::Graphics::Glyph::processed_transcript\n  const subparts = [...subs]\n\n  let codeStart = Number.POSITIVE_INFINITY\n  let codeEnd = Number.NEGATIVE_INFINITY\n\n  let haveLeftUTR: boolean | undefined\n  let haveRightUTR: boolean | undefined\n\n  // gather exons, find coding start and end, and look for UTRs\n  const exons = []\n  for (const subpart of subparts) {\n    const type = subpart.get('type')\n    if (/^cds/i.test(type)) {\n      if (codeStart > subpart.get('start')) {\n        codeStart = subpart.get('start')\n      }\n      if (codeEnd < subpart.get('end')) {\n        codeEnd = subpart.get('end')\n      }\n    } else if (/exon/i.test(type)) {\n      exons.push(subpart)\n    } else if (isUTR(subpart)) {\n      haveLeftUTR = subpart.get('start') === parent.get('start')\n      haveRightUTR = subpart.get('end') === parent.get('end')\n    }\n  }\n\n  // bail if we don't have exons and CDS\n  if (\n    !(\n      exons.length &&\n      codeStart < Number.POSITIVE_INFINITY &&\n      codeEnd > Number.NEGATIVE_INFINITY\n    )\n  ) {\n    return subparts\n  }\n\n  // make sure the exons are sorted by coord\n  exons.sort((a, b) => a.get('start') - b.get('start'))\n\n  const strand = parent.get('strand')\n\n  // make the left-hand UTRs\n  let start: number | undefined\n  let end: number | undefined\n  if (!haveLeftUTR) {\n    for (let i = 0; i < exons.length; i++) {\n      start = exons[i]!.get('start')\n      if (start >= codeStart) {\n        break\n      }\n      end = codeStart > exons[i]!.get('end') ? exons[i]!.get('end') : codeStart\n      const type = strand >= 0 ? 'five_prime_UTR' : 'three_prime_UTR'\n      subparts.unshift(\n        new SimpleFeature({\n          parent,\n          id: `${parent.id()}_${type}_${i}`,\n          data: { start, end, strand, type },\n        }),\n      )\n    }\n  }\n\n  // make the right-hand UTRs\n  if (!haveRightUTR) {\n    for (let i = exons.length - 1; i >= 0; i--) {\n      end = exons[i]!.get('end')\n      if (end <= codeEnd) {\n        break\n      }\n\n      start =\n        codeEnd < exons[i]!.get('start') ? exons[i]!.get('start') : codeEnd\n      const type = strand >= 0 ? 'three_prime_UTR' : 'five_prime_UTR'\n      subparts.push(\n        new SimpleFeature({\n          parent,\n          id: `${parent.id()}_${type}_${i}`,\n          data: { start, end, strand, type },\n        }),\n      )\n    }\n  }\n\n  return subparts\n}\n\nfunction getSubparts(f: Feature, config: AnyConfigurationModel) {\n  let c = f.get('subfeatures')\n  if (!c || c.length === 0) {\n    return []\n  }\n  const hasUTRs = c.some(child => isUTR(child))\n  const isTranscript = ['mRNA', 'transcript'].includes(f.get('type'))\n  const impliedUTRs = !hasUTRs && isTranscript\n\n  // if we think we should use impliedUTRs, or it is specifically in the\n  // config, then makeUTRs\n  if (impliedUTRs || readConfObject(config, 'impliedUTRs')) {\n    c = makeUTRs(f, c)\n  }\n\n  return c.filter(element => filterSubpart(element, config))\n}\n\nconst ProcessedTranscript = observer(function ProcessedTranscript(props: {\n  feature: Feature\n  region: Region\n  config: AnyConfigurationModel\n  featureLayout: SceneGraph\n  selected?: boolean\n  reversed?: boolean\n  [key: string]: unknown\n}) {\n  const { feature, config } = props\n  const subfeatures = getSubparts(feature, config)\n\n  // we manually compute some subfeatures, so pass these separately\n  return <Segments {...props} subfeatures={subfeatures} />\n})\n\n// @ts-expect-error\nProcessedTranscript.layOut = ({\n  layout,\n  feature,\n  bpPerPx,\n  reversed,\n  config,\n  extraGlyphs,\n}: {\n  layout: SceneGraph\n  feature: Feature\n  bpPerPx: number\n  reversed: boolean\n  config: AnyConfigurationModel\n  extraGlyphs: ExtraGlyphValidator[]\n}) => {\n  const subLayout = layOutFeature({\n    layout,\n    feature,\n    bpPerPx,\n    reversed,\n    config,\n    extraGlyphs,\n  })\n  const subfeatures = getSubparts(feature, config)\n  layOutSubfeatures({\n    layout: subLayout,\n    subfeatures,\n    bpPerPx,\n    reversed,\n    config,\n    extraGlyphs,\n  })\n  return subLayout\n}\n\nexport default ProcessedTranscript\n","import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { SceneGraph } from '@jbrowse/core/util/layouts'\nimport {\n  chooseGlyphComponent,\n  ExtraGlyphValidator,\n  layOut,\n  layOutFeature,\n} from './util'\n\nconst Subfeatures = observer(function Subfeatures(props: {\n  feature: Feature\n  featureLayout: SceneGraph\n  selected?: boolean\n}) {\n  const { feature, featureLayout, selected } = props\n\n  return feature.get('subfeatures')?.map(subfeature => {\n    const subfeatureId = String(subfeature.id())\n    const subfeatureLayout = featureLayout.getSubRecord(subfeatureId)\n    if (!subfeatureLayout) {\n      return null\n    }\n    const { GlyphComponent } = subfeatureLayout.data || {}\n    return (\n      <GlyphComponent\n        key={`glyph-${subfeatureId}`}\n        {...props}\n        feature={subfeature}\n        featureLayout={subfeatureLayout}\n        selected={selected}\n      />\n    )\n  })\n})\n\n// @ts-expect-error\nSubfeatures.layOut = ({\n  layout,\n  feature,\n  bpPerPx,\n  reversed,\n  config,\n  extraGlyphs,\n}: {\n  layout: SceneGraph\n  feature: Feature\n  bpPerPx: number\n  reversed: boolean\n  config: AnyConfigurationModel\n  extraGlyphs: ExtraGlyphValidator[]\n}) => {\n  const subLayout = layOutFeature({\n    layout,\n    feature,\n    bpPerPx,\n    reversed,\n    config,\n    extraGlyphs,\n  })\n  const displayMode = readConfObject(config, 'displayMode')\n  if (displayMode !== 'reducedRepresentation') {\n    let topOffset = 0\n    feature.get('subfeatures')?.forEach(subfeature => {\n      const SubfeatureGlyphComponent = chooseGlyphComponent(\n        subfeature,\n        extraGlyphs,\n      )\n      const subfeatureHeight = readConfObject(config, 'height', {\n        feature: subfeature,\n      }) as number\n\n      const subSubLayout = (SubfeatureGlyphComponent.layOut || layOut)({\n        layout: subLayout,\n        feature: subfeature,\n        bpPerPx,\n        reversed,\n        config,\n        extraGlyphs,\n      })\n      subSubLayout.move(0, topOffset)\n      topOffset +=\n        displayMode === 'collapse'\n          ? 0\n          : (displayMode === 'compact'\n              ? subfeatureHeight / 3\n              : subfeatureHeight) + 2\n    })\n  }\n  return subLayout\n}\n\nexport default Subfeatures\n","import React from 'react'\nimport {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport SceneGraph from '@jbrowse/core/util/layouts/SceneGraph'\nimport { Feature, Region } from '@jbrowse/core/util'\n\n// locals\nimport Box from './Box'\nimport ProcessedTranscript from './ProcessedTranscript'\nimport Segments from './Segments'\nimport Subfeatures from './Subfeatures'\n\nexport interface Glyph\n  extends React.FC<{\n    colorByCDS: boolean\n    feature: Feature\n    featureLayout: SceneGraph\n    selected?: boolean\n    config: AnyConfigurationModel\n    region: Region\n    bpPerPx: number\n    topLevel?: boolean\n    [key: string]: unknown\n  }> {\n  layOut?: (arg: FeatureLayOutArgs) => SceneGraph\n}\n\ntype LayoutRecord = [number, number, number, number]\n\nexport interface DisplayModel {\n  getFeatureByID?: (arg0: string, arg1: string) => LayoutRecord\n  getFeatureOverlapping?: (\n    blockKey: string,\n    bp: number,\n    y: number,\n  ) => string | undefined\n  selectedFeatureId?: string\n  featureIdUnderMouse?: string\n  contextMenuFeature?: Feature\n}\n\nexport interface ExtraGlyphValidator {\n  glyph: Glyph\n  validator: (feature: Feature) => boolean\n}\n\nexport function chooseGlyphComponent(\n  feature: Feature,\n  extraGlyphs?: ExtraGlyphValidator[],\n): Glyph {\n  const type = feature.get('type')\n  const subfeatures = feature.get('subfeatures')\n\n  if (subfeatures?.length && type !== 'CDS') {\n    const hasSubSub = subfeatures.find(sub => !!sub.get('subfeatures'))\n    if (\n      ['mRNA', 'transcript', 'primary_transcript'].includes(type) &&\n      subfeatures.some(f => f.get('type') === 'CDS')\n    ) {\n      return ProcessedTranscript\n    }\n    if (!feature.parent() && hasSubSub) {\n      // only do sub-sub on parent level features like gene\n      return Subfeatures\n    }\n    return Segments\n  }\n\n  return extraGlyphs?.find(f => f.validator(feature))?.glyph || Box\n}\n\ninterface BaseLayOutArgs {\n  layout: SceneGraph\n  bpPerPx: number\n  reversed?: boolean\n  config: AnyConfigurationModel\n}\n\ninterface FeatureLayOutArgs extends BaseLayOutArgs {\n  feature: Feature\n  extraGlyphs?: ExtraGlyphValidator[]\n}\n\ninterface SubfeatureLayOutArgs extends BaseLayOutArgs {\n  subfeatures: Feature[]\n  extraGlyphs?: ExtraGlyphValidator[]\n}\n\nexport function layOut({\n  layout,\n  feature,\n  bpPerPx,\n  reversed,\n  config,\n  extraGlyphs,\n}: FeatureLayOutArgs): SceneGraph {\n  const displayMode = readConfObject(config, 'displayMode')\n  const subLayout = layOutFeature({\n    layout,\n    feature,\n    bpPerPx,\n    reversed,\n    config,\n    extraGlyphs,\n  })\n  if (displayMode !== 'reducedRepresentation') {\n    layOutSubfeatures({\n      layout: subLayout,\n      subfeatures: feature.get('subfeatures') || [],\n      bpPerPx,\n      reversed,\n      config,\n      extraGlyphs,\n    })\n  }\n  return subLayout\n}\n\nexport function layOutFeature(args: FeatureLayOutArgs) {\n  const { layout, feature, bpPerPx, reversed, config, extraGlyphs } = args\n  const displayMode = readConfObject(config, 'displayMode') as string\n  const GlyphComponent =\n    displayMode === 'reducedRepresentation'\n      ? Box\n      : chooseGlyphComponent(feature, extraGlyphs)\n  const parentFeature = feature.parent()\n  let x = 0\n  if (parentFeature) {\n    x =\n      (reversed\n        ? parentFeature.get('end') - feature.get('end')\n        : feature.get('start') - parentFeature.get('start')) / bpPerPx\n  }\n  const height = readConfObject(config, 'height', { feature }) as number\n  const width = (feature.get('end') - feature.get('start')) / bpPerPx\n  const layoutParent = layout.parent\n  const top = layoutParent ? layoutParent.top : 0\n  return layout.addChild(\n    String(feature.id()),\n    x,\n    displayMode === 'collapse' ? 0 : top,\n    Math.max(width, 1), // has to be at least one to register in the layout\n    displayMode === 'compact' ? height / 2 : height,\n    { GlyphComponent },\n  )\n}\n\nexport function layOutSubfeatures(args: SubfeatureLayOutArgs) {\n  const { layout, subfeatures, bpPerPx, reversed, config, extraGlyphs } = args\n  subfeatures.forEach(feature => {\n    ;(chooseGlyphComponent(feature, extraGlyphs).layOut || layOut)({\n      layout,\n      feature,\n      bpPerPx,\n      reversed,\n      config,\n      extraGlyphs,\n    })\n  })\n}\n\nexport function isUTR(feature: Feature) {\n  return /(\\bUTR|_UTR|untranslated[_\\s]region)\\b/.test(\n    feature.get('type') || '',\n  )\n}\n","import React, { useEffect, useRef, useState, useCallback } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { bpToPx, measureText, Region, Feature } from '@jbrowse/core/util'\nimport { BaseLayout, SceneGraph } from '@jbrowse/core/util/layouts'\n\n// locals\nimport FeatureGlyph from './FeatureGlyph'\nimport SvgOverlay from './SvgOverlay'\nimport {\n  chooseGlyphComponent,\n  layOut,\n  ExtraGlyphValidator,\n  DisplayModel,\n} from './util'\n\n// used to make features have a little padding for their labels\nconst xPadding = 3\nconst yPadding = 5\n\n// used so that user can click-away-from-feature below the laid out features\n// (issue #1248)\nconst svgHeightPadding = 100\n\nfunction RenderedFeatureGlyph(props: {\n  feature: Feature\n  bpPerPx: number\n  region: Region\n  config: AnyConfigurationModel\n  colorByCDS: boolean\n  layout: BaseLayout<unknown>\n  extraGlyphs?: ExtraGlyphValidator[]\n  displayMode: string\n  exportSVG?: unknown\n  displayModel?: DisplayModel\n  detectRerender?: () => void\n  viewParams: {\n    start: number\n    end: number\n    offsetPx: number\n    offsetPx1: number\n  }\n  [key: string]: unknown\n}) {\n  const {\n    feature,\n    detectRerender,\n    bpPerPx,\n    region,\n    config,\n    displayMode,\n    layout,\n    extraGlyphs,\n  } = props\n\n  // used for unit testing, difficult to mock out so it is in actual source code\n  detectRerender?.()\n\n  const { reversed } = region\n  const start = feature.get(reversed ? 'end' : 'start')\n  const startPx = bpToPx(start, region, bpPerPx)\n  const labelAllowed = displayMode !== 'collapsed'\n\n  const rootLayout = new SceneGraph('root', 0, 0, 0, 0)\n  const GlyphComponent = chooseGlyphComponent(feature, extraGlyphs)\n  const featureLayout = (GlyphComponent.layOut || layOut)({\n    layout: rootLayout,\n    feature,\n    bpPerPx,\n    reversed,\n    config,\n    extraGlyphs,\n  })\n  let shouldShowName = false\n  let shouldShowDescription = false\n  let name = ''\n  let description = ''\n  let fontHeight = 0\n  let expansion = 0\n  if (labelAllowed) {\n    const showLabels = readConfObject(config, 'showLabels')\n    const showDescriptions = readConfObject(config, 'showDescriptions')\n    fontHeight = readConfObject(config, ['labels', 'fontSize'], { feature })\n    expansion = readConfObject(config, 'maxFeatureGlyphExpansion') || 0\n    name = String(readConfObject(config, ['labels', 'name'], { feature }) || '')\n    shouldShowName = /\\S/.test(name) && showLabels\n\n    const getWidth = (text: string) => {\n      const glyphWidth = rootLayout.width + expansion\n      const textWidth = measureText(text, fontHeight)\n      return Math.round(Math.min(textWidth, glyphWidth))\n    }\n\n    description = String(\n      readConfObject(config, ['labels', 'description'], { feature }) || '',\n    )\n    shouldShowDescription = /\\S/.test(description) && showDescriptions\n\n    if (shouldShowName) {\n      rootLayout.addChild(\n        'nameLabel',\n        0,\n        featureLayout.bottom,\n        getWidth(name),\n        fontHeight,\n      )\n    }\n\n    if (shouldShowDescription) {\n      const aboveLayout = shouldShowName\n        ? rootLayout.getSubRecord('nameLabel')\n        : featureLayout\n      if (!aboveLayout) {\n        throw new Error('failed to layout nameLabel')\n      }\n\n      rootLayout.addChild(\n        'descriptionLabel',\n        0,\n        aboveLayout.bottom,\n        getWidth(description),\n        fontHeight,\n      )\n    }\n  }\n\n  const topPx = layout.addRect(\n    feature.id(),\n    feature.get('start'),\n    feature.get('start') + rootLayout.width * bpPerPx + xPadding * bpPerPx,\n    rootLayout.height + yPadding,\n  )\n  if (topPx === null) {\n    return null\n  }\n  rootLayout.move(startPx, topPx)\n\n  return (\n    <FeatureGlyph\n      rootLayout={rootLayout}\n      name={name}\n      shouldShowName={shouldShowName}\n      description={description}\n      shouldShowDescription={shouldShowDescription}\n      fontHeight={fontHeight}\n      allowedWidthExpansion={expansion}\n      reversed={region.reversed}\n      topLevel={true}\n      {...props}\n    />\n  )\n}\n\nconst RenderedFeatures = observer(function RenderedFeatures(props: {\n  features?: Map<string, Feature>\n  isFeatureDisplayed?: (f: Feature) => boolean\n  bpPerPx: number\n  config: AnyConfigurationModel\n  displayMode: string\n  colorByCDS: boolean\n  displayModel?: DisplayModel\n  region: Region\n  exportSVG?: unknown\n  extraGlyphs?: ExtraGlyphValidator[]\n  layout: BaseLayout<unknown>\n  viewParams: {\n    start: number\n    end: number\n    offsetPx: number\n    offsetPx1: number\n  }\n  [key: string]: unknown\n}) {\n  const { features = new Map(), isFeatureDisplayed } = props\n  return (\n    <>\n      {[...features.values()]\n        .filter(feature =>\n          isFeatureDisplayed ? isFeatureDisplayed(feature) : true,\n        )\n        .map(feature => (\n          <RenderedFeatureGlyph\n            key={feature.id()}\n            feature={feature}\n            {...props}\n          />\n        ))}\n    </>\n  )\n})\n\nconst SvgFeatureRendering = observer(function SvgFeatureRendering(props: {\n  layout: BaseLayout<unknown>\n  blockKey: string\n  regions: Region[]\n  bpPerPx: number\n  detectRerender?: () => void\n  config: AnyConfigurationModel\n  colorByCDS: boolean\n  features: Map<string, Feature>\n  displayModel?: DisplayModel\n  exportSVG?: boolean\n  viewParams: {\n    start: number\n    end: number\n    offsetPx: number\n    offsetPx1: number\n  }\n  featureDisplayHandler?: (f: Feature) => boolean\n  extraGlyphs?: ExtraGlyphValidator[]\n  onMouseOut?: React.MouseEventHandler\n  onMouseDown?: React.MouseEventHandler\n  onMouseLeave?: React.MouseEventHandler\n  onMouseEnter?: React.MouseEventHandler\n  onMouseOver?: React.MouseEventHandler\n  onMouseMove?: (event: React.MouseEvent, featureId?: string) => void\n  onMouseUp?: React.MouseEventHandler\n  onClick?: React.MouseEventHandler\n}) {\n  const {\n    layout,\n    blockKey,\n    regions = [],\n    bpPerPx,\n    config,\n    displayModel = {},\n    exportSVG,\n    featureDisplayHandler,\n    onMouseOut,\n    onMouseDown,\n    onMouseLeave,\n    onMouseEnter,\n    onMouseOver,\n    onMouseMove,\n    onMouseUp,\n    onClick,\n  } = props\n\n  const region = regions[0]!\n  const width = (region.end - region.start) / bpPerPx\n  const displayMode = readConfObject(config, 'displayMode') as string\n  const maxConfHeight = readConfObject(config, 'maxHeight') as number\n\n  const ref = useRef<SVGSVGElement>(null)\n  const [mouseIsDown, setMouseIsDown] = useState(false)\n  const [height, setHeight] = useState(maxConfHeight)\n  const [movedDuringLastMouseDown, setMovedDuringLastMouseDown] =\n    useState(false)\n\n  const mouseDown = useCallback(\n    (event: React.MouseEvent) => {\n      setMouseIsDown(true)\n      setMovedDuringLastMouseDown(false)\n      return onMouseDown?.(event)\n    },\n    [onMouseDown],\n  )\n\n  const mouseUp = useCallback(\n    (event: React.MouseEvent) => {\n      setMouseIsDown(false)\n      return onMouseUp?.(event)\n    },\n    [onMouseUp],\n  )\n\n  const mouseMove = useCallback(\n    (event: React.MouseEvent) => {\n      if (!ref.current) {\n        return\n      }\n      if (mouseIsDown) {\n        setMovedDuringLastMouseDown(true)\n      }\n      const { left, top } = ref.current.getBoundingClientRect()\n      const offsetX = event.clientX - left\n      const offsetY = event.clientY - top\n      const px = region.reversed ? width - offsetX : offsetX\n      const clientBp = region.start + bpPerPx * px\n\n      const featureIdCurrentlyUnderMouse = displayModel.getFeatureOverlapping?.(\n        blockKey,\n        clientBp,\n        offsetY,\n      )\n\n      if (onMouseMove) {\n        onMouseMove(event, featureIdCurrentlyUnderMouse)\n      }\n    },\n    [\n      blockKey,\n      bpPerPx,\n      mouseIsDown,\n      onMouseMove,\n      region.reversed,\n      region.start,\n      displayModel,\n      width,\n    ],\n  )\n\n  const click = useCallback(\n    (event: React.MouseEvent) => {\n      // don't select a feature if we are clicking and dragging\n      if (movedDuringLastMouseDown) {\n        return\n      }\n      onClick?.(event)\n    },\n    [movedDuringLastMouseDown, onClick],\n  )\n\n  useEffect(() => {\n    setHeight(layout.getTotalHeight())\n  }, [layout])\n\n  return exportSVG ? (\n    <RenderedFeatures\n      displayMode={displayMode}\n      isFeatureDisplayed={featureDisplayHandler}\n      region={region}\n      {...props}\n    />\n  ) : (\n    <svg\n      ref={ref}\n      data-testid=\"svgfeatures\"\n      width={width}\n      height={height + svgHeightPadding}\n      style={{\n        // use block because svg by default is inline, which adds a margin\n        display: 'block',\n      }}\n      onMouseDown={mouseDown}\n      onMouseUp={mouseUp}\n      onMouseEnter={onMouseEnter}\n      onMouseLeave={onMouseLeave}\n      onMouseOver={onMouseOver}\n      onMouseOut={onMouseOut}\n      onMouseMove={mouseMove}\n      onClick={click}\n    >\n      <RenderedFeatures\n        displayMode={displayMode}\n        region={region}\n        movedDuringLastMouseDown={movedDuringLastMouseDown}\n        isFeatureDisplayed={featureDisplayHandler}\n        {...props}\n      />\n\n      <SvgOverlay\n        {...props}\n        region={region}\n        movedDuringLastMouseDown={movedDuringLastMouseDown}\n      />\n    </svg>\n  )\n})\n\nexport default SvgFeatureRendering\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\n/**\n * #config SvgFeatureRenderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst SvgFeatureRenderer = ConfigurationSchema(\n  'SvgFeatureRenderer',\n  {\n    /**\n     * #slot\n     */\n    color1: {\n      type: 'color',\n      description: 'the main color of each feature',\n      defaultValue: 'goldenrod',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    color2: {\n      type: 'color',\n      description:\n        'the secondary color of each feature, used for connecting lines, etc',\n      defaultValue: '#f0f',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    color3: {\n      type: 'color',\n      description:\n        'the tertiary color of each feature, often used for contrasting fills, like on UTRs',\n      defaultValue: '#357089',\n      contextVariable: ['feature'],\n    },\n\n    /**\n     * #slot\n     */\n    outline: {\n      type: 'color',\n      description: 'the outline for features',\n      defaultValue: '',\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    height: {\n      type: 'number',\n      description: 'height in pixels of the main body of each feature',\n      defaultValue: 10,\n      contextVariable: ['feature'],\n    },\n    /**\n     * #slot\n     */\n    showLabels: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n\n    /**\n     * #slot\n     */\n    showDescriptions: {\n      type: 'boolean',\n      defaultValue: true,\n    },\n\n    labels: ConfigurationSchema('SvgFeatureLabels', {\n      /**\n       * #slot labels.name\n       */\n      name: {\n        type: 'string',\n        description:\n          'the primary name of the feature to show, if space is available',\n        defaultValue: `jexl:get(feature,'name') || get(feature,'id')`,\n        contextVariable: ['feature'],\n      },\n      /**\n       * #slot labels.nameColor\n       */\n      nameColor: {\n        type: 'color',\n        description: 'the color of the name label, if shown',\n        defaultValue: '#f0f',\n        contextVariable: ['feature'],\n      },\n      /**\n       * #slot labels.description\n       */\n      description: {\n        type: 'string',\n        description: 'the text description to show, if space is available',\n        defaultValue: `jexl:get(feature,'note') || get(feature,'description')`,\n        contextVariable: ['feature'],\n      },\n      /**\n       * #slot labels.descriptionColor\n       */\n      descriptionColor: {\n        type: 'color',\n        description: 'the color of the description, if shown',\n        defaultValue: 'blue',\n        contextVariable: ['feature'],\n      },\n\n      /**\n       * #slot labels.fontSize\n       */\n      fontSize: {\n        type: 'number',\n        description:\n          'height in pixels of the text to use for names and descriptions',\n        defaultValue: 12,\n        contextVariable: ['feature'],\n      },\n    }),\n\n    /**\n     * #slot\n     */\n    displayMode: {\n      type: 'stringEnum',\n      model: types.enumeration('displayMode', [\n        'normal',\n        'compact',\n        'reducedRepresentation',\n        'collapse',\n      ]),\n      description: 'Alternative display modes',\n      defaultValue: 'normal',\n    },\n\n    /**\n     * #slot\n     */\n    maxFeatureGlyphExpansion: {\n      type: 'number',\n      description:\n        \"maximum number of pixels on each side of a feature's bounding coordinates that a glyph is allowed to use\",\n      defaultValue: 500,\n    },\n\n    /**\n     * #slot\n     */\n    maxHeight: {\n      type: 'integer',\n      description: 'the maximum height to be used in a svg rendering',\n      defaultValue: 1200,\n    },\n\n    /**\n     * #slot\n     */\n    subParts: {\n      type: 'string',\n      description: 'subparts for a glyph',\n      defaultValue: 'CDS,UTR,five_prime_UTR,three_prime_UTR',\n    },\n\n    /**\n     * #slot\n     */\n    impliedUTRs: {\n      type: 'boolean',\n      description: 'imply UTR from the exon and CDS differences',\n      defaultValue: false,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default SvgFeatureRenderer\n","import BoxRendererType from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport {\n  configSchema as svgFeatureRendererConfigSchema,\n  ReactComponent as SvgFeatureRendererReactComponent,\n} from './SvgFeatureRenderer'\n\nclass SvgFeatureRenderer extends BoxRendererType {\n  supportsSVG = true\n}\n\nexport default class SVGPlugin extends Plugin {\n  name = 'SVGPlugin'\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addRendererType(\n      () =>\n        new SvgFeatureRenderer({\n          name: 'SvgFeatureRenderer',\n          ReactComponent: SvgFeatureRendererReactComponent,\n          configSchema: svgFeatureRendererConfigSchema,\n          pluginManager,\n        }),\n    )\n  }\n}\n\nexport {\n  configSchema as svgFeatureRendererConfigSchema,\n  ReactComponent as SvgFeatureRendererReactComponent,\n} from './SvgFeatureRenderer'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config GCContentAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst GCContentAdapterF = (_pluginManager: PluginManager) => {\n  return ConfigurationSchema(\n    'GCContentAdapter',\n    {\n      /**\n       * #slot\n       */\n      sequenceAdapter: {\n        type: 'frozen',\n        defaultValue: null,\n      },\n      /**\n       * #slot\n       */\n      windowSize: {\n        type: 'number',\n        defaultValue: 100,\n      },\n      /**\n       * #slot\n       */\n      windowDelta: {\n        type: 'number',\n        defaultValue: 100,\n      },\n    },\n    { explicitlyTyped: true },\n  )\n}\n\nexport default GCContentAdapterF\n","import {\n  getConf,\n  AnyConfigurationSchemaType,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSession } from '@jbrowse/core/util'\nimport { linearWiggleDisplayModelFactory } from '@jbrowse/plugin-wiggle'\nimport { types } from 'mobx-state-tree'\nimport { lazy } from 'react'\n\nconst EditGCContentParamsDialog = lazy(\n  () => import('./components/EditGCContentParams'),\n)\n\n/**\n * #stateModel SharedGCContentModel\n * #category display\n * extends\n * - [LinearWiggleDisplay](../linearwiggledisplay)\n */\nexport default function SharedModelF(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'SharedGCContentModel',\n      linearWiggleDisplayModelFactory(pluginManager, configSchema),\n      types.model({\n        /**\n         * #property\n         */\n        windowSize: types.maybe(types.number),\n        /**\n         * #property\n         */\n        windowDelta: types.maybe(types.number),\n      }),\n    )\n    .actions(self => ({\n      setGCContentParams({\n        windowSize,\n        windowDelta,\n      }: {\n        windowSize: number\n        windowDelta: number\n      }) {\n        self.windowSize = windowSize\n        self.windowDelta = windowDelta\n      },\n    }))\n    .views(self => ({\n      get windowSizeSetting() {\n        return self.windowSize ?? getConf(self, 'windowSize')\n      },\n      get windowDeltaSetting() {\n        return self.windowDelta ?? getConf(self, 'windowDelta')\n      },\n    }))\n    .views(self => {\n      const {\n        trackMenuItems: superTrackMenuItems,\n        renderProps: superRenderProps,\n      } = self\n      return {\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Change GC parameters',\n              onClick: () => {\n                getSession(self).queueDialog(handleClose => [\n                  EditGCContentParamsDialog,\n                  { model: self, handleClose },\n                ])\n              },\n            },\n          ]\n        },\n        /**\n         * #method\n         * retrieves the sequence adapter from parent track, and puts it as a\n         * subadapter on a GCContentAdapter\n         */\n        renderProps() {\n          const sequenceAdapter = getConf(self.parentTrack, 'adapter')\n          return {\n            ...superRenderProps(),\n            adapterConfig: {\n              type: 'GCContentAdapter',\n              sequenceAdapter,\n              windowSize: self.windowSizeSetting,\n              windowDelta: self.windowDeltaSetting,\n            },\n          }\n        },\n      }\n    })\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport GCContentAdapterF from './GCContentAdapter'\nimport GCContentTrackF from './GCContentTrack'\nimport LinearGCContentDisplayF from './LinearGCContentDisplay'\n\nexport default class GCContentPlugin extends Plugin {\n  name = 'GCContentPlugin'\n\n  install(pluginManager: PluginManager) {\n    GCContentAdapterF(pluginManager)\n    GCContentTrackF(pluginManager)\n    LinearGCContentDisplayF(pluginManager)\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport configSchemaF from './configSchema'\n\nexport default function GCContentTrackF(pm: PluginManager) {\n  pm.addTrackType(() => {\n    const configSchema = configSchemaF(pm)\n    return new TrackType({\n      name: 'GCContentTrack',\n      displayName: 'GCContent track',\n      configSchema,\n      stateModel: createBaseTrackModel(pm, 'GCContentTrack', configSchema),\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nimport configSchemaF from './configSchema'\n\nexport default function GCContentAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'GCContentAdapter',\n        displayName: 'GC content adapter',\n        adapterMetadata: {\n          hiddenFromGUI: true,\n        },\n        configSchema: configSchemaF(pluginManager),\n        getAdapterClass: () =>\n          import('./GCContentAdapter').then(r => r.default),\n      }),\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config GCContentTrack\n * used for having a gc content track outside of the \"reference sequence display\"\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'GCContentTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n\nexport default configSchema\n","import { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { LinearWiggleDisplayReactComponent } from '@jbrowse/plugin-wiggle'\n\nimport configSchemaFactory1 from './config1'\nimport configSchemaFactory2 from './config2'\nimport stateModelF1 from './stateModel1'\nimport stateModelF2 from './stateModel2'\n\nexport default function LinearGCContentDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory1(pluginManager)\n    const stateModel = stateModelF1(pluginManager, configSchema)\n    return new DisplayType({\n      name: 'LinearGCContentDisplay',\n      configSchema,\n      stateModel,\n      displayName: 'GC content display',\n      trackType: 'ReferenceSequenceTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: LinearWiggleDisplayReactComponent,\n    })\n  })\n\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory2(pluginManager)\n    const stateModel = stateModelF2(pluginManager, configSchema)\n    return new DisplayType({\n      name: 'LinearGCContentTrackDisplay',\n      configSchema,\n      stateModel,\n      displayName: 'GC content display',\n      trackType: 'GCContentTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: LinearWiggleDisplayReactComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearGCContentDisplay\n * #category display\n * extends LinearWiggleDisplay\n */\nexport default function LinearGCContentDisplay(pluginManager: PluginManager) {\n  return ConfigurationSchema(\n    'LinearGCContentDisplay',\n    {\n      windowSize: {\n        type: 'number',\n        defaultValue: 100,\n      },\n      windowDelta: {\n        type: 'number',\n        defaultValue: 100,\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: pluginManager.getDisplayType('LinearWiggleDisplay')!\n        .configSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { types } from 'mobx-state-tree'\n// locals\nimport SharedModelF from './shared'\n\n/**\n * #stateModel LinearGCContentDisplay\n * #category display\n * base model `SharedGCContentModel`\n */\nexport default function stateModelF(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types.compose(\n    'LinearGCContentDisplay',\n    SharedModelF(pluginManager, configSchema),\n    types.model({\n      type: types.literal('LinearGCContentDisplay'),\n    }),\n  )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearGCContentTrackDisplay\n * #category display\n * extends LinearWiggleDisplay, used specifically for GCContentTrack\n */\nexport default function LinearGCContentTrackDisplayF(\n  pluginManager: PluginManager,\n) {\n  return ConfigurationSchema(\n    'LinearGCContentTrackDisplay',\n    {\n      windowSize: {\n        type: 'number',\n        defaultValue: 100,\n      },\n      windowDelta: {\n        type: 'number',\n        defaultValue: 100,\n      },\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: pluginManager.getDisplayType('LinearWiggleDisplay')!\n        .configSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n","import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { types } from 'mobx-state-tree'\n// locals\nimport SharedModelF from './shared'\n\n/**\n * #stateModel LinearGCContentTrackDisplay\n * #category display\n *\n * used on GCContentTrack, separately from the display type on the\n * ReferenceSequenceTrack\n *\n * extends\n * - [SharedGCContentModel](../sharedgccontentmodel)\n */\nexport default function stateModelF(\n  pluginManager: PluginManager,\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types.compose(\n    'LinearGCContentTrackDisplay',\n    SharedModelF(pluginManager, configSchema),\n    types.model({\n      type: types.literal('LinearGCContentTrackDisplay'),\n    }),\n  )\n}\n","import React from 'react'\nimport { types } from 'mobx-state-tree'\n\n/** utility function for assembling the MST model of a column data type */\nexport default function MakeSpreadsheetColumnType(\n  name: string,\n  {\n    DataCellReactComponent = null,\n    FilterModelType = null,\n    compare,\n    displayName = undefined,\n    categoryName = undefined,\n  }: {\n    compare?: any\n    DataCellReactComponent?: React.FC<any> | null\n    FilterModelType?: any\n    displayName?: string\n    categoryName?: string\n  },\n) {\n  return types\n    .model(`ColumnDataType${name}`, {\n      type: types.literal(name),\n    })\n    .volatile(() => ({\n      DataCellReactComponent,\n      FilterModelType: FilterModelType,\n      displayName: displayName || name,\n      categoryName,\n    }))\n    .views(() => ({\n      compare,\n      get hasFilter() {\n        return !!FilterModelType\n      },\n    }))\n}\n","import React from 'react'\nimport {\n  IconButton,\n  TextField,\n  MenuItem,\n  InputAdornment,\n  Select,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { types, getParent, getPropertyMembers } from 'mobx-state-tree'\n\n// jbrowse imports\nimport {\n  getPropertyType,\n  getEnumerationValues,\n  getSubType,\n} from '@jbrowse/core/util/mst-reflection'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport {\n  doesIntersect2,\n  isContainedWithin,\n  compareLocs,\n  getSession,\n  parseLocString,\n} from '@jbrowse/core/util'\n\n// icons\nimport ClearIcon from '@mui/icons-material/Clear'\n\n// locals\nimport MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\n\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()({\n  textFilterControlAdornment: { marginRight: '-18px' },\n  textFilterControl: {\n    '& .MuiInput-formControl': {\n      marginTop: 8,\n    },\n    '& .MuiInputLabel-formControl': {\n      top: '-7px',\n      '&.MuiInputLabel-shrink': {\n        top: '-3px',\n      },\n    },\n  },\n})\n\n// React component for the column filter control\nconst FilterReactComponent = observer(function ({\n  filterModel,\n}: {\n  filterModel: any\n}) {\n  const { classes } = useStyles()\n  const operationChoices = getEnumerationValues(\n    getSubType(getPropertyType(getPropertyMembers(filterModel), 'operation')),\n  )\n  return (\n    <>\n      <Select\n        value={filterModel.operation}\n        onChange={event => filterModel.setOperation(String(event.target.value))}\n      >\n        {operationChoices.map(name => (\n          <MenuItem key={name} value={name}>\n            {name}\n          </MenuItem>\n        ))}\n      </Select>{' '}\n      <TextField\n        label=\"range\"\n        placeholder=\"chr1:100-200\"\n        error={filterModel.locStringIsInvalid}\n        value={filterModel.locString}\n        onChange={evt => filterModel.setLocString(evt.target.value)}\n        className={classes.textFilterControl}\n        InputProps={{\n          endAdornment: (\n            <InputAdornment\n              className={classes.textFilterControlAdornment}\n              position=\"end\"\n            >\n              <IconButton\n                aria-label=\"clear filter\"\n                onClick={() => filterModel.setLocString('')}\n              >\n                <ClearIcon />\n              </IconButton>\n            </InputAdornment>\n          ),\n        }}\n      />\n    </>\n  )\n})\n\nconst OPERATIONS = [\n  'overlaps with',\n  'contained within',\n  'fully contains',\n  'does not overlap',\n  'not contained within',\n  'does not contain',\n] as const\n\ninterface Loc {\n  start: number\n  end: number\n  refName: string\n}\n\n// NOTE: assembly names, if present, are ignored in all of these predicates\nconst OPERATION_PREDICATES = {\n  'overlaps with': (cellLocation, specifiedLocation) => {\n    return (\n      cellLocation.refName === specifiedLocation.refName &&\n      doesIntersect2(\n        cellLocation.start,\n        cellLocation.end,\n        specifiedLocation.start,\n        specifiedLocation.end,\n      )\n    )\n  },\n  'contained within': (cellLocation, specifiedLocation) => {\n    return (\n      cellLocation.refName === specifiedLocation.refName &&\n      isContainedWithin(\n        cellLocation.start,\n        cellLocation.end,\n        specifiedLocation.start,\n        specifiedLocation.end,\n      )\n    )\n  },\n  'fully contains': (cellLocation, specifiedLocation) => {\n    return (\n      cellLocation.refName === specifiedLocation.refName &&\n      isContainedWithin(\n        specifiedLocation.start,\n        specifiedLocation.end,\n        cellLocation.start,\n        cellLocation.end,\n      )\n    )\n  },\n} as Record<string, (a: Loc, b: Loc) => boolean>\n\nOPERATION_PREDICATES['does not overlap'] = (\n  cellLocation,\n  specifiedLocation,\n) => {\n  return !OPERATION_PREDICATES['overlaps with']!(\n    cellLocation,\n    specifiedLocation,\n  )\n}\nOPERATION_PREDICATES['not contained within'] = (\n  cellLocation,\n  specifiedLocation,\n) => {\n  return !OPERATION_PREDICATES['contained within']!(\n    cellLocation,\n    specifiedLocation,\n  )\n}\nOPERATION_PREDICATES['does not contain'] = (\n  cellLocation,\n  specifiedLocation,\n) => {\n  return !OPERATION_PREDICATES['fully contains']!(\n    cellLocation,\n    specifiedLocation,\n  )\n}\n\n// MST model for the column filter control\nconst FilterModelType = types\n  .model('ColumnLocStringFilter', {\n    type: types.literal('LocString'),\n    columnNumber: types.integer,\n    locString: '',\n    operation: types.optional(types.string, OPERATIONS[0]),\n  })\n  .views(self => ({\n    get locStringIsInvalid() {\n      if (self.locString) {\n        const parsed = this.parsedLocString\n        return (\n          !parsed ||\n          parsed.refName === '' ||\n          typeof parsed.start !== 'number' ||\n          typeof parsed.end !== 'number' ||\n          parsed.start > parsed.end\n        )\n      }\n      return false\n    },\n    get parsedLocString() {\n      const session = getSession(self)\n\n      const model = getParent<any>(self, 3).spreadsheet\n      const { assemblyName } = model\n      try {\n        return parseLocString(self.locString, refName =>\n          session.assemblyManager.isValidRefName(refName, assemblyName),\n        )\n      } catch (e) {\n        return undefined\n      }\n    },\n  }))\n  .views(self => ({\n    // returns a function that tests the given row\n    get predicate() {\n      const {\n        locString,\n        locStringIsInvalid,\n        parsedLocString,\n        operation,\n        columnNumber,\n      } = self // avoid closing over self\n      if (!locString || locStringIsInvalid || !parsedLocString) {\n        return function alwaysTrue() {\n          return true\n        }\n      }\n\n      return function stringPredicate(_sheet: any, row: any) {\n        const { cellsWithDerived: cells } = row\n        const cell = cells[columnNumber]\n\n        if (!cell?.text || !cell.extendedData) {\n          return false\n        }\n        const parsedCellText = cell.extendedData\n        if (!parsedCellText.refName) {\n          return false\n        }\n\n        const predicate = OPERATION_PREDICATES[operation]\n        if (!predicate) {\n          throw new Error(`\"${operation}\" not implemented in location filter`)\n        }\n\n        return predicate(parsedCellText, parsedLocString as Loc)\n      }\n    },\n  }))\n  .actions(self => ({\n    setLocString(s: string) {\n      self.locString = s\n    },\n    setOperation(op: string) {\n      self.operation = op\n    },\n  }))\n  .volatile(() => ({ ReactComponent: FilterReactComponent }))\n\n// opens a new LGV at the location described in the locString in the cell text\n\nasync function locationLinkClick(\n  spreadsheet: any,\n  _columnNumber: number,\n\n  cell: any,\n) {\n  const session = getSession(spreadsheet)\n  const { assemblyName } = spreadsheet\n\n  const { id } = getParent<any>(spreadsheet)\n\n  const newViewId = `${id}_${assemblyName}`\n  let view = session.views.find(v => v.id === newViewId) as LGV | undefined\n  if (!view) {\n    view = session.addView('LinearGenomeView', {\n      id: newViewId,\n    }) as LGV\n  }\n  await view.navToLocString(cell.text, assemblyName)\n}\n\ntype DataCell = any\n\nconst DataCellReactComponent = observer(function ({\n  cell,\n  columnNumber,\n  spreadsheet,\n}: DataCell) {\n  return (\n    <a\n      onClick={async evt => {\n        evt.preventDefault()\n        const session = getSession(spreadsheet)\n        try {\n          await locationLinkClick(spreadsheet, columnNumber, cell)\n        } catch (e) {\n          console.error(e)\n          session.notifyError(`${e}`, e)\n        }\n      }}\n      title=\"open a new linear genome view here\"\n      href=\"#\"\n    >\n      {cell.text}\n    </a>\n  )\n})\n\nconst LocStringColumnType = MakeSpreadsheetColumnType('LocString', {\n  categoryName: 'Location',\n  displayName: 'Full location',\n\n  compare(cellA: { extendedData: any }, cellB: { extendedData: any }) {\n    return compareLocs(cellA.extendedData, cellB.extendedData)\n  },\n  FilterModelType,\n  DataCellReactComponent,\n})\n\nexport default LocStringColumnType\n","import React from 'react'\nimport {\n  IconButton,\n  TextField,\n  MenuItem,\n  InputAdornment,\n  Select,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\nimport { types, getPropertyMembers } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport {\n  getPropertyType,\n  getEnumerationValues,\n  getSubType,\n} from '@jbrowse/core/util/mst-reflection'\n\n// icons\nimport ClearIcon from '@mui/icons-material/Clear'\n\nconst OPERATIONS = [\n  'equals',\n  'contains',\n  'does not contain',\n  'does not equal',\n  'starts with',\n  'ends with',\n]\n\n// NOTE: assembly names, if present, are ignored in all of these predicates\nconst OPERATION_PREDICATES = {\n  contains: (textInCell, stringToFind) => {\n    return textInCell.toLowerCase().includes(stringToFind)\n  },\n  equals: (textInCell, stringToFind) => {\n    return textInCell.toLowerCase() === stringToFind\n  },\n  'starts with': (textInCell, stringToFind) => {\n    return textInCell.toLowerCase().startsWith(stringToFind)\n  },\n  'ends with': (textInCell, stringToFind) => {\n    const index = textInCell.toLowerCase().indexOf(stringToFind)\n    if (index === -1) {\n      return false\n    }\n    return index === textInCell.length - stringToFind.length\n  },\n} as Record<string, (a: string, b: string) => boolean>\n\nOPERATION_PREDICATES['does not contain'] = (textInCell, stringToFind) => {\n  return !OPERATION_PREDICATES.contains!(textInCell, stringToFind)\n}\nOPERATION_PREDICATES['does not equal'] = (textInCell, stringToFind) => {\n  return !OPERATION_PREDICATES.equals!(textInCell, stringToFind)\n}\n\nconst useStyles = makeStyles()({\n  textFilterControlAdornment: { marginRight: '-18px' },\n  textFilterControl: {\n    margin: 0,\n    '& .MuiInput-formControl': {\n      marginTop: 8,\n    },\n    '& .MuiInputLabel-formControl': {\n      top: '-7px',\n      '&.MuiInputLabel-shrink': {\n        top: '-3px',\n      },\n    },\n  },\n})\n\n// React component for the column filter control\nconst FilterReactComponent = observer(\n  ({ filterModel }: { filterModel: any }) => {\n    const { classes } = useStyles()\n    const operationChoices = getEnumerationValues(\n      getSubType(getPropertyType(getPropertyMembers(filterModel), 'operation')),\n    )\n    return (\n      <>\n        <Select\n          value={filterModel.operation}\n          onChange={event => {\n            filterModel.setOperation(String(event.target.value))\n          }}\n        >\n          {operationChoices.map(name => (\n            <MenuItem key={name} value={name}>\n              {name}\n            </MenuItem>\n          ))}\n        </Select>{' '}\n        <TextField\n          label=\"text\"\n          value={filterModel.stringToFind}\n          onChange={evt => filterModel.setString(evt.target.value)}\n          className={classes.textFilterControl}\n          InputProps={{\n            endAdornment: (\n              <InputAdornment\n                className={classes.textFilterControlAdornment}\n                position=\"end\"\n              >\n                <IconButton\n                  aria-label=\"clear filter\"\n                  onClick={() => filterModel.setString('')}\n                >\n                  <ClearIcon />\n                </IconButton>\n              </InputAdornment>\n            ),\n          }}\n        />\n      </>\n    )\n  },\n)\n\n// MST model for the column filter control\nconst ColumnTextFilter = types\n  .model('ColumnTextFilter', {\n    type: types.literal('Text'),\n    columnNumber: types.integer,\n    stringToFind: '',\n    operation: types.optional(types.enumeration(OPERATIONS), OPERATIONS[0]!),\n  })\n  .views(self => ({\n    // returns a function that tests the given row\n    get predicate() {\n      const { stringToFind, columnNumber, operation } = self // avoid closing over self\n      if (!stringToFind) {\n        return function alwaysTrue() {\n          return true\n        }\n      }\n      const s = stringToFind.toLowerCase() // case insensitive match\n\n      return function stringPredicate(_sheet: any, row: any) {\n        const { cellsWithDerived } = row\n        const cell = cellsWithDerived[columnNumber]\n        if (!cell?.text) {\n          return false\n        }\n        const predicate = OPERATION_PREDICATES[operation]\n        if (!predicate) {\n          throw new Error(`\"${operation}\" not implemented in location filter`)\n        }\n        return predicate(cell.text, s)\n      }\n    },\n  }))\n  .actions(self => ({\n    setString(s: string) {\n      self.stringToFind = s\n    },\n    setOperation(op: string) {\n      self.operation = op\n    },\n  }))\n  .volatile(() => ({ ReactComponent: FilterReactComponent }))\n\nconst TextColumnType = MakeSpreadsheetColumnType('Text', {\n  compare(cellA: { text: string }, cellB: { text: string }) {\n    return cellA.text.localeCompare(cellB.text)\n  },\n  FilterModelType: ColumnTextFilter,\n})\n\nexport { TextColumnType as TextColumn, ColumnTextFilter as FilterModelType }\n","import MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\nimport { FilterModelType as NumberFilterModel } from './Text'\nimport { types } from 'mobx-state-tree'\n\nconst FilterModelType = types.compose(\n  NumberFilterModel,\n  types.model({\n    type: types.literal('LocRef'),\n  }),\n)\n\nconst LocRef = MakeSpreadsheetColumnType('LocRef', {\n  categoryName: 'Location',\n  displayName: 'Reference seq',\n  compare(cellA: { text: string }, cellB: { text: string }) {\n    return cellA.text.localeCompare(cellB.text)\n  },\n  FilterModelType,\n})\n\nexport default LocRef\n","import React from 'react'\nimport { types } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { MenuItem, Select, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\n\nconst OPERATIONS = [\n  'equals',\n  'greater than',\n  'less than',\n  'between',\n  'not between',\n]\n\n// NOTE: assembly names, if present, are ignored in all of these predicates\nconst OPERATION_PREDICATES = {\n  equals: (numberInCell, firstNumber) => {\n    return numberInCell === firstNumber\n  },\n  'greater than': (numberInCell, firstNumber) => {\n    return numberInCell > firstNumber\n  },\n  'less than': (numberInCell, firstNumber) => {\n    return numberInCell < firstNumber\n  },\n  between: (numberInCell, firstNumber, secondNumber) => {\n    return (\n      numberInCell > firstNumber &&\n      secondNumber !== undefined &&\n      numberInCell < secondNumber\n    )\n  },\n} as Record<string, (arg0: number, a: number, b?: number) => boolean>\n\nOPERATION_PREDICATES['not between'] = (\n  numberInCell,\n  firstNumber,\n  secondNumber,\n) => {\n  return !OPERATION_PREDICATES.between!(numberInCell, firstNumber, secondNumber)\n}\n\nconst useStyles = makeStyles()({\n  textFilterControlAdornment: { marginRight: '-18px' },\n  textFilterControl: {\n    '& .MuiInput-formControl': {\n      marginTop: 8,\n    },\n    '& .MuiInputLabel-formControl': {\n      top: '-7px',\n      '&.MuiInputLabel-shrink': {\n        top: '-3px',\n      },\n    },\n  },\n})\n\n// React component for the column filter control\nconst FilterReactComponent = observer(\n  ({ filterModel }: { filterModel: any }) => {\n    const { classes } = useStyles()\n\n    const operationChoices = OPERATIONS\n\n    return (\n      <>\n        <Select\n          value={filterModel.operation}\n          onChange={e => filterModel.setOperation(String(e.target.value))}\n        >\n          {operationChoices.map(name => (\n            <MenuItem key={name} value={name}>\n              {name}\n            </MenuItem>\n          ))}\n        </Select>{' '}\n        <TextField\n          label=\"number\"\n          placeholder=\"123\"\n          type=\"number\"\n          error={filterModel.firstNumberIsInvalid}\n          defaultValue={filterModel.firstNumber}\n          onChange={evt => {\n            filterModel.setFirstNumber(Number.parseFloat(evt.target.value))\n          }}\n          className={classes.textFilterControl}\n        />\n        {filterModel.operation !== 'between' &&\n        filterModel.operation !== 'not between' ? null : (\n          <>\n            {' and '}\n            <TextField\n              label=\"number\"\n              placeholder=\"456\"\n              type=\"number\"\n              error={filterModel.secondNumberIsInvalid}\n              defaultValue={filterModel.secondNumber}\n              onChange={evt =>\n                filterModel.setSecondNumber(Number.parseFloat(evt.target.value))\n              }\n              className={classes.textFilterControl}\n            />\n          </>\n        )}\n      </>\n    )\n  },\n)\n\n// MST model for the column filter control\nconst FilterModelType = types\n  .model('ColumnNumberFilter', {\n    type: types.literal('Number'),\n    columnNumber: types.integer,\n    firstNumber: types.maybe(types.number),\n    secondNumber: types.maybe(types.number),\n    operation: types.optional(types.enumeration(OPERATIONS), OPERATIONS[0]!),\n  })\n  .views(self => ({\n    // returns a function that tests the given row\n    get predicate() {\n      if (typeof self.firstNumber !== 'number') {\n        return function alwaysTrue() {\n          return true\n        }\n      }\n\n      const { firstNumber, secondNumber, operation, columnNumber } = self // avoid closing over self\n\n      return function stringPredicate(_sheet: any, row: any) {\n        const { cellsWithDerived } = row\n        const cell = cellsWithDerived[columnNumber]\n\n        if (!cell?.text) {\n          return false\n        }\n\n        const parsedCellText = Number.parseFloat(cell.text)\n        if (typeof parsedCellText !== 'number') {\n          return false\n        }\n\n        const predicate = OPERATION_PREDICATES[operation]\n        if (!predicate) {\n          throw new Error(`\"${operation}\" not implemented in location filter`)\n        }\n\n        return predicate(parsedCellText, firstNumber, secondNumber)\n      }\n    },\n  }))\n  .actions(self => ({\n    setFirstNumber(n: number) {\n      self.firstNumber =\n        Number.isNaN(n) || typeof n !== 'number' ? undefined : n\n    },\n    setSecondNumber(n: number) {\n      self.secondNumber =\n        Number.isNaN(n) || typeof n !== 'number' ? undefined : n\n    },\n    setOperation(op: string) {\n      self.operation = op\n    },\n  }))\n  .volatile(() => ({ ReactComponent: FilterReactComponent }))\n\nconst NumberColumn = MakeSpreadsheetColumnType('Number', {\n  compare(cellA: { text: string }, cellB: { text: string }) {\n    return Number.parseFloat(cellA.text) - Number.parseFloat(cellB.text)\n  },\n  FilterModelType,\n})\n\nexport { NumberColumn, FilterModelType }\n","import LocString from './LocString'\nimport LocRef from './LocRef'\nimport LocStart from './LocStart'\nimport LocEnd from './LocEnd'\nimport { NumberColumn } from './Number'\nimport { TextColumn as Text } from './Text'\nimport { types, IAnyModelType } from 'mobx-state-tree'\n\nconst ColumnTypes = {\n  Number: NumberColumn,\n  Text,\n  LocString,\n  LocRef,\n  LocStart,\n  LocEnd,\n}\n\nconst allColumnTypes = Object.values(ColumnTypes)\nconst AnyColumnType = types.union(...allColumnTypes)\nconst AnyFilterModelType = types.union(\n  ...allColumnTypes\n    .map(columnType => {\n      // just instantiate the blank types to get their filter model types\n      const { FilterModelType } = columnType.create({\n        // @ts-expect-error\n        type: columnType.properties.type.value,\n      })\n      return FilterModelType as unknown as IAnyModelType | undefined\n    })\n    // some column types might not have filter machinery, filter those out\n    .filter(t => !!t),\n)\n\nexport { ColumnTypes, AnyColumnType, AnyFilterModelType }\n","import MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\nimport { types } from 'mobx-state-tree'\nimport { FilterModelType as NumberFilterModel } from './Number'\n\nconst FilterModelType = types.compose(\n  NumberFilterModel,\n  types.model({\n    type: types.literal('LocStart'),\n  }),\n)\n\nconst LocStart = MakeSpreadsheetColumnType('LocStart', {\n  categoryName: 'Location',\n  displayName: 'Start',\n  compare(cellA: { text: string }, cellB: { text: string }) {\n    return Number.parseFloat(cellA.text) - Number.parseFloat(cellB.text)\n  },\n  FilterModelType,\n})\n\nexport default LocStart\n","import MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType'\nimport { FilterModelType as NumberFilterModel } from './Number'\nimport { types } from 'mobx-state-tree'\n\nconst FilterModelType = types.compose(\n  NumberFilterModel,\n  types.model({\n    type: types.literal('LocEnd'),\n  }),\n)\n\nconst LocEnd = MakeSpreadsheetColumnType('LocEnd', {\n  categoryName: 'Location',\n  displayName: 'End',\n  compare(cellA: { text: string }, cellB: { text: string }) {\n    return Number.parseFloat(cellA.text) - Number.parseFloat(cellB.text)\n  },\n  FilterModelType,\n})\n\nexport default LocEnd\n","import { types, getParent } from 'mobx-state-tree'\n\nconst CellModel = types.model('SpreadsheetCell', {\n  text: types.string,\n  extendedData: types.maybe(types.frozen()),\n})\n\nconst RowModel = types\n  .model('SpreadsheetRow', {\n    id: types.identifier,\n    cells: types.array(CellModel),\n    extendedData: types.maybe(types.frozen()),\n    isSelected: false,\n  })\n  .actions(self => ({\n    toggleSelect() {\n      self.isSelected = !self.isSelected\n    },\n    unSelect() {\n      self.isSelected = false\n    },\n    select() {\n      self.isSelected = true\n    },\n    setExtendedData(data: unknown) {\n      self.extendedData = data\n    },\n  }))\n  .views(self => ({\n    get cellsWithDerived() {\n      const { columns } = getParent<any>(self, 3)\n      let i = 0\n\n      return columns.map((column: { isDerived: boolean; expr: any }) => {\n        if (column.isDerived) {\n          return column.expr.evalSync({\n            row: self,\n          })\n        }\n        return self.cells[i++]\n      })\n    },\n  }))\n\nexport default RowModel\n","import RowModel from './Row'\nimport { types, getParent } from 'mobx-state-tree'\n\nconst StaticRowModel = types\n  .model('StaticRowSet', {\n    isLoaded: types.literal(true),\n    rows: types.array(RowModel),\n  })\n  .views(self => ({\n    get count() {\n      return self.rows.length\n    },\n\n    get passingFiltersCount() {\n      return this.sortedFilteredRows.length\n    },\n\n    get selectedCount() {\n      return this.selectedRows.length\n    },\n\n    get selectedAndPassingFiltersCount() {\n      return this.selectedFilteredRows.length\n    },\n\n    get sortedRows() {\n      const parent = getParent<any>(self)\n      return [...self.rows].sort(parent.rowSortingComparisonFunction)\n    },\n\n    get selectedRows() {\n      return self.rows.filter(r => r.isSelected)\n    },\n\n    get selectedFilteredRows() {\n      const sheet = getParent<any>(self)\n\n      const view = getParent<any>(sheet)\n      const { filterControls } = view\n      return this.selectedRows.filter(row =>\n        filterControls.rowPassesFilters(sheet, row),\n      )\n    },\n\n    // the set of all rows that pass the filters, sorted\n    get sortedFilteredRows() {\n      const sheet = getParent<any>(self)\n\n      const view = getParent<any>(sheet)\n      const { filterControls } = view\n      return self.rows\n        .filter(row => filterControls.rowPassesFilters(sheet, row))\n        .sort(sheet.rowSortingComparisonFunction)\n    },\n  }))\n  .actions(self => ({\n    unselectAll() {\n      self.rows.forEach(row => {\n        row.unSelect()\n      })\n    },\n  }))\n\nexport default StaticRowModel\n","import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings'\nimport { getSession, getEnv } from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\nimport {\n  addDisposer,\n  types,\n  getParent,\n  SnapshotIn,\n  Instance,\n} from 'mobx-state-tree'\n\n// locals\nimport { ColumnTypes, AnyColumnType } from './ColumnDataTypes'\nimport StaticRowSetModel from './StaticRowSet'\nimport type RowModel from './Row'\n\ntype Row = Instance<typeof RowModel>\n\nconst ColumnDefinition = types\n  .model('ColumnDefinition', {\n    name: types.maybe(types.string),\n    dataType: types.optional(AnyColumnType, () => ({\n      type: 'Text',\n    })),\n    // set to true if column is derived from other columns\n    // if the column is derived, each cell will have a\n    // `derivationFunction` that is called to get its value\n    isDerived: false,\n    // if this cell is derived from other cells, execute this function to get\n    // the value\n    derivationFunctionText: types.maybe(types.string),\n  })\n  .views(self => ({\n    get expr() {\n      if (self.isDerived) {\n        // compile this as a jexl expression\n        return stringToJexlExpression(\n          String(self.derivationFunctionText),\n          getEnv(self).pluginManager.jexl,\n        )\n      }\n      return undefined\n    },\n  }))\n\ntype RowMenuPosition = { anchorEl: Element; rowNumber: string } | null\n\n/**\n * #stateModel SpreadsheetViewSpreadsheet\n * #category view\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst Spreadsheet = types\n  .model('Spreadsheet', {\n    /**\n     * #property\n     */\n    rowSet: types.optional(StaticRowSetModel, () => StaticRowSetModel.create()),\n    /**\n     * #property\n     */\n    columns: types.array(ColumnDefinition),\n    /**\n     * #property\n     */\n    columnDisplayOrder: types.array(types.number),\n    /**\n     * #property\n     */\n    hasColumnNames: false,\n    /**\n     * #property\n     */\n    sortColumns: types.array(\n      types\n        .model('SortColumns', {\n          columnNumber: types.number,\n          descending: false,\n        })\n        .actions(self => ({\n          switchDirection() {\n            self.descending = !self.descending\n          },\n        })),\n    ),\n\n    assemblyName: types.maybe(types.string),\n  })\n  .volatile(() => ({\n    defaultDataType: ColumnTypes.Text,\n    rowMenuPosition: null as RowMenuPosition,\n    isLoaded: false,\n  }))\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get initialized() {\n      const session = getSession(self)\n      const name = self.assemblyName\n      return name ? session.assemblyManager.get(name)?.initialized : false\n    },\n    /**\n     * #getter\n     */\n    get hideRowSelection() {\n      // just delegates to parent\n\n      return getParent<any>(self).hideRowSelection\n    },\n\n    /**\n     * #getter\n     * list of data type names to be made available in the column\n     * dropdown menu\n     */\n    get dataTypeChoices() {\n      const typeNames = Object.keys(ColumnTypes) as (keyof typeof ColumnTypes)[]\n      return typeNames.map(typeName => {\n        const dataType = ColumnTypes[typeName].create({ type: typeName })\n        const { displayName, categoryName } = dataType\n        return { typeName, displayName, categoryName }\n      })\n    },\n\n    /**\n     * #method\n     */\n    rowSortingComparisonFunction(rowA: Row, rowB: Row) {\n      for (const { columnNumber, descending } of self.sortColumns) {\n        const { dataType } = self.columns[columnNumber]!\n        const result = dataType.compare(\n          rowA.cellsWithDerived[columnNumber],\n          rowB.cellsWithDerived[columnNumber],\n        )\n        if (result) {\n          return descending ? -result : result\n        }\n      }\n      return 0\n    },\n  }))\n  .actions(self => ({\n    afterAttach() {\n      addDisposer(\n        self,\n        autorun(async () => {\n          const session = getSession(self)\n          const { assemblyManager } = session\n          try {\n            if (self.assemblyName) {\n              await assemblyManager.waitForAssembly(self.assemblyName)\n              this.setLoaded(true)\n            }\n          } catch (error) {\n            session.notify(\n              `failed to load assembly ${self.assemblyName} ${error}`,\n              'error',\n            )\n          }\n        }),\n      )\n    },\n\n    /**\n     * #action\n     */\n    setLoaded(flag: boolean) {\n      self.isLoaded = flag\n    },\n\n    /**\n     * #action\n     */\n    setRowMenuPosition(newPosition: RowMenuPosition) {\n      self.rowMenuPosition = newPosition\n    },\n\n    /**\n     * #action\n     */\n    setSortColumns(newSort: NonNullable<SnapshotIn<typeof self.sortColumns>>) {\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      if (newSort) {\n        // @ts-expect-error\n        self.sortColumns = newSort\n      }\n    },\n\n    /**\n     * #action\n     */\n    setColumnType(columnNumber: number, newTypeName: string) {\n      self.columns[columnNumber]!.dataType = { type: newTypeName }\n    },\n\n    /**\n     * #action\n     */\n    unselectAll() {\n      self.rowSet.unselectAll()\n    },\n  }))\n\nexport type SpreadsheetStateModel = typeof Spreadsheet\nexport type SpreadsheetModel = Instance<SpreadsheetStateModel>\n\nexport default Spreadsheet\n","import { types, getParent, Instance } from 'mobx-state-tree'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { getSession, getEnv } from '@jbrowse/core/util'\n\n// 30MB\nconst IMPORT_SIZE_LIMIT = 30_000_000\n\nconst fileTypes = ['CSV', 'TSV', 'VCF', 'BED', 'BEDPE', 'STAR-Fusion']\nconst fileTypeParsers = {\n  CSV: () =>\n    import('../importAdapters/ImportUtils').then(r => r.parseCsvBuffer),\n  TSV: () =>\n    import('../importAdapters/ImportUtils').then(r => r.parseTsvBuffer),\n  VCF: () => import('../importAdapters/VcfImport').then(r => r.parseVcfBuffer),\n  BED: () => import('../importAdapters/BedImport').then(r => r.parseBedBuffer),\n  BEDPE: () =>\n    import('../importAdapters/BedImport').then(r => r.parseBedPEBuffer),\n  'STAR-Fusion': () =>\n    import('../importAdapters/STARFusionImport').then(\n      r => r.parseSTARFusionBuffer,\n    ),\n}\n// regexp used to guess the type of a file or URL from its file extension\nconst fileTypesRegexp = new RegExp(`\\\\.(${fileTypes.join('|')})(\\\\.gz)?$`, 'i')\n\n/**\n * #stateModel SpreadsheetImportWizard\n * #category view\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst ImportWizard = types\n  .model('SpreadsheetImportWizard', {\n    /**\n     * #property\n     */\n    fileType: types.optional(types.enumeration(fileTypes), 'CSV'),\n    /**\n     * #property\n     */\n    hasColumnNameLine: true,\n    /**\n     * #property\n     */\n    columnNameLineNumber: 1,\n    /**\n     * #property\n     */\n    selectedAssemblyName: types.maybe(types.string),\n  })\n  .volatile(() => ({\n    fileTypes,\n\n    fileSource: undefined as any,\n    error: undefined as unknown,\n    loading: false,\n  }))\n  .views(self => ({\n    get isReadyToOpen() {\n      return (\n        !self.error &&\n        self.fileSource &&\n        (self.fileSource.blobId ||\n          self.fileSource.localPath ||\n          self.fileSource.uri)\n      )\n    },\n    get canCancel() {\n      return getParent<any>(self).readyToDisplay\n    },\n\n    get fileName() {\n      return (\n        self.fileSource.uri ||\n        self.fileSource.localPath ||\n        (self.fileSource.blobId && self.fileSource.name)\n      )\n    },\n\n    get requiresUnzip() {\n      return this.fileName.endsWith('gz')\n    },\n\n    isValidRefName(refName: string, assemblyName?: string) {\n      const { assemblyManager } = getSession(self)\n      if (!assemblyName) {\n        return false\n      }\n      return assemblyManager.isValidRefName(refName, assemblyName)\n    },\n  }))\n  .actions(self => ({\n    setSelectedAssemblyName(s: string) {\n      self.selectedAssemblyName = s\n    },\n    setFileSource(newSource: unknown) {\n      self.fileSource = newSource\n      self.error = undefined\n\n      if (self.fileSource) {\n        // try to autodetect the file type, ignore errors\n        const name = self.fileName\n\n        if (name) {\n          const firstMatch = fileTypesRegexp.exec(name)?.[1]\n          if (firstMatch) {\n            self.fileType =\n              firstMatch === 'tsv' && name.includes('star-fusion')\n                ? 'STAR-Fusion'\n                : firstMatch.toUpperCase()\n          }\n        }\n      }\n    },\n\n    toggleHasColumnNameLine() {\n      self.hasColumnNameLine = !self.hasColumnNameLine\n    },\n\n    setColumnNameLineNumber(newnumber: number) {\n      if (newnumber > 0) {\n        self.columnNameLineNumber = newnumber\n      }\n    },\n\n    setFileType(typeName: string) {\n      self.fileType = typeName\n    },\n\n    setError(error: unknown) {\n      console.error(error)\n      self.loading = false\n      self.error = error\n    },\n\n    setLoaded() {\n      self.loading = false\n      self.error = undefined\n    },\n\n    cancelButton() {\n      self.error = undefined\n\n      getParent<any>(self).setDisplayMode()\n    },\n\n    // fetch and parse the file, make a new Spreadsheet model for it,\n    // then set the parent to display it\n    async import(assemblyName: string) {\n      if (!self.fileSource) {\n        return\n      }\n\n      if (self.loading) {\n        throw new Error('Cannot import, load already in progress')\n      }\n\n      self.selectedAssemblyName = assemblyName\n      self.loading = true\n      const type = self.fileType as keyof typeof fileTypeParsers\n      const typeParser = await fileTypeParsers[type]()\n\n      const { unzip } = await import('@gmod/bgzf-filehandle')\n      const { pluginManager } = getEnv(self)\n      const filehandle = openLocation(self.fileSource, pluginManager)\n      try {\n        const stat = await filehandle.stat()\n        if (stat.size > IMPORT_SIZE_LIMIT) {\n          throw new Error(\n            `File is too big. Tabular files are limited to at most ${(\n              IMPORT_SIZE_LIMIT / 1000\n            ).toLocaleString()}kb.`,\n          )\n        }\n      } catch (e) {\n        // not required for stat to succeed to proceed, but it is helpful\n        console.warn(e)\n      }\n\n      try {\n        await filehandle\n          .readFile()\n          .then(buffer => (self.requiresUnzip ? unzip(buffer) : buffer))\n          .then(buffer => typeParser(buffer, self))\n          .then(spreadsheet => {\n            this.setLoaded()\n\n            getParent<any>(self).displaySpreadsheet(spreadsheet)\n          })\n      } catch (e) {\n        this.setError(e)\n      }\n    },\n  }))\n\nexport type ImportWizardStateModel = typeof ImportWizard\nexport type ImportWizardModel = Instance<ImportWizardStateModel>\n\nexport default ImportWizard\n","import { types, getParent, SnapshotIn } from 'mobx-state-tree'\nimport { AnyFilterModelType as AnyColumnFilter } from './ColumnDataTypes'\n\n// filter that finds a simple string in any of the cells of a row\nconst RowFullTextFilter = types\n  .model('RowFullTextFilter', {\n    type: types.literal('RowFullText'),\n    stringToFind: '',\n  })\n  .views(self => ({\n    // returns a function that tests the given row\n    get predicate() {\n      let s = self.stringToFind // avoid closing over self\n      if (!s) {\n        return function alwaysTrue() {\n          return true\n        }\n      }\n      s = s.toLowerCase()\n      return function stringPredicate(\n        _sheet: unknown,\n        row: { cellsWithDerived: { text: string }[] },\n      ) {\n        const { cellsWithDerived } = row\n        for (const cell of cellsWithDerived) {\n          // note: case insensitive\n          if (cell.text.toLowerCase().includes(s)) {\n            return true\n          }\n        }\n        return false\n      }\n    },\n  }))\n  .actions(self => ({\n    setString(s: string) {\n      self.stringToFind = s\n    },\n    clear() {\n      self.stringToFind = ''\n    },\n  }))\n\nconst model = types\n  .model('SpreadsheetFilterControls', {\n    rowFullText: types.optional(\n      RowFullTextFilter,\n      () =>\n        ({\n          type: 'RowFullText',\n          stringToFind: '',\n        }) as SnapshotIn<typeof RowFullTextFilter>,\n    ),\n    columnFilters: types.array(AnyColumnFilter),\n  })\n  .views(self => ({\n    get filters() {\n      return [self.rowFullText, ...self.columnFilters].filter(f => !!f)\n    },\n    setRowFullTextFilter(stringToFind: string) {\n      // @ts-expect-error\n      self.rowFullText = {\n        type: 'RowFullText',\n        stringToFind,\n      }\n    },\n    rowPassesFilters(sheet: unknown, row: unknown) {\n      for (const filter of this.filters) {\n        if (!filter.predicate(sheet, row)) {\n          return false\n        }\n      }\n      return true\n    },\n  }))\n  .actions(self => ({\n    addBlankColumnFilter(columnNumber: number) {\n      const { dataType } =\n        getParent<any>(self).spreadsheet.columns[columnNumber]\n      self.columnFilters.push({\n        type: dataType.type,\n        columnNumber,\n      })\n    },\n    removeColumnFilter(filter: typeof AnyColumnFilter) {\n      return self.columnFilters.remove(filter)\n    },\n    clearAllFilters() {\n      self.columnFilters.clear()\n      self.rowFullText.clear()\n    },\n  }))\n\nexport default model\n","import { types, getEnv, cast, SnapshotIn, Instance } from 'mobx-state-tree'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { getSession } from '@jbrowse/core/util'\n\n// icons\nimport DoneIcon from '@mui/icons-material/Done'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\n\nimport SpreadsheetModel from './Spreadsheet'\nimport ImportWizardModel from './ImportWizard'\nimport FilterControlsModel from './FilterControls'\n\ntype Spreadsheet = Instance<typeof SpreadsheetModel>\n\nexport type MenuItemWithDisabledCallback = MenuItem & {\n  disabled?:\n    | boolean\n    | ((\n        viewModel: unknown,\n        spreadsheetModel: Spreadsheet,\n        rowNumber: number,\n        row: Spreadsheet['rowSet']['rows'][0],\n      ) => boolean)\n}\n\nconst defaultRowMenuItems: MenuItemWithDisabledCallback[] = [\n  {\n    label: 'Toggle select',\n    icon: DoneIcon,\n    onClick(_view: unknown, spreadsheet: Spreadsheet) {\n      const rowNumber = spreadsheet.rowMenuPosition?.rowNumber\n      if (rowNumber !== undefined) {\n        spreadsheet.rowSet.rows[+rowNumber - 1]!.toggleSelect()\n      }\n    },\n  },\n]\n\nconst minHeight = 40\nconst defaultHeight = 440\n\n/**\n * #stateModel SpreadsheetView\n * #category view\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst model = types\n  .model('SpreadsheetView', {\n    /**\n     * #property\n     */\n    type: types.literal('SpreadsheetView'),\n    /**\n     * #property\n     */\n    offsetPx: 0,\n    /**\n     * #property\n     */\n    height: types.optional(\n      types.refinement(\n        'SpreadsheetViewHeight',\n        types.number,\n        n => n >= minHeight,\n      ),\n      defaultHeight,\n    ),\n    /**\n     * #property\n     */\n    hideVerticalResizeHandle: false,\n    /**\n     * #property\n     */\n    hideFilterControls: false,\n    /**\n     * #property\n     */\n    filterControls: types.optional(FilterControlsModel, () =>\n      FilterControlsModel.create({}),\n    ),\n    /**\n     * #property\n     * switch specifying whether we are showing the import wizard or the\n     * spreadsheet in our viewing area\n     */\n    mode: types.optional(\n      types.enumeration('SpreadsheetViewMode', ['import', 'display']),\n      'import',\n    ),\n    /**\n     * #property\n     */\n    importWizard: types.optional(ImportWizardModel, () =>\n      ImportWizardModel.create(),\n    ),\n    /**\n     * #property\n     */\n    spreadsheet: types.maybe(SpreadsheetModel),\n  })\n  .volatile(() => ({\n    width: 400,\n    rowMenuItems: defaultRowMenuItems,\n  }))\n  .views(self => ({\n    /**\n     * #getter\n     */\n    get readyToDisplay() {\n      return !!self.spreadsheet && self.spreadsheet.isLoaded\n    },\n    /**\n     * #getter\n     */\n    get hideRowSelection() {\n      return !!getEnv(self).hideRowSelection\n    },\n    /**\n     * #getter\n     */\n    get outputRows() {\n      if (self.spreadsheet?.rowSet.isLoaded) {\n        const selected = self.spreadsheet.rowSet.selectedFilteredRows\n        if (selected.length) {\n          return selected\n        }\n        return self.spreadsheet.rowSet.sortedFilteredRows\n      }\n      return undefined\n    },\n    /**\n     * #getter\n     */\n    get assembly() {\n      const name = self.spreadsheet?.assemblyName\n      if (name) {\n        const assemblies = getSession(self).assemblies\n        return assemblies.find(asm => readConfObject(asm, 'name') === name)\n      }\n      return undefined\n    },\n  }))\n  .actions(self => ({\n    /**\n     * #action\n     */\n    setRowMenuItems(newItems: MenuItem[]) {\n      self.rowMenuItems = newItems\n    },\n    /**\n     * #action\n     */\n    setWidth(newWidth: number) {\n      self.width = newWidth\n      return self.width\n    },\n    /**\n     * #action\n     */\n    setHeight(newHeight: number) {\n      self.height = newHeight > minHeight ? newHeight : minHeight\n      return self.height\n    },\n    /**\n     * #action\n     */\n    resizeHeight(distance: number) {\n      const oldHeight = self.height\n      const newHeight = this.setHeight(self.height + distance)\n      return newHeight - oldHeight\n    },\n    /**\n     * #action\n     */\n    resizeWidth(distance: number) {\n      const oldWidth = self.width\n      const newWidth = this.setWidth(self.width + distance)\n      return newWidth - oldWidth\n    },\n\n    /**\n     * #action\n     * load a new spreadsheet and set our mode to display it\n     */\n    displaySpreadsheet(spreadsheet: SnapshotIn<typeof SpreadsheetModel>) {\n      self.filterControls.clearAllFilters()\n      self.spreadsheet = cast(spreadsheet)\n      self.mode = 'display'\n    },\n    /**\n     * #action\n     */\n    setImportMode() {\n      self.mode = 'import'\n    },\n    /**\n     * #action\n     */\n    setDisplayMode() {\n      if (self.readyToDisplay) {\n        self.mode = 'display'\n      }\n    },\n  }))\n  .views(self => ({\n    /**\n     * #method\n     */\n    menuItems() {\n      return [\n        {\n          label: 'Return to import form',\n          onClick: () => {\n            self.setImportMode()\n          },\n          icon: FolderOpenIcon,\n        },\n      ]\n    },\n  }))\n\nconst SpreadsheetView = types.compose(BaseViewModel, model)\n\nexport type SpreadsheetViewStateModel = typeof SpreadsheetView\nexport type SpreadsheetViewModel = Instance<SpreadsheetViewStateModel>\n\nexport default SpreadsheetView\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\nimport { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'\n\n// icons\nimport ViewComfyIcon from '@mui/icons-material/ViewComfy'\n\n// locals\nimport SpreadsheetViewF from './SpreadsheetView'\n\nimport LaunchSpreadsheetViewF from './LaunchSpreadsheetView'\n\nexport default class SpreadsheetViewPlugin extends Plugin {\n  name = 'SpreadsheetViewPlugin'\n\n  install(pluginManager: PluginManager) {\n    SpreadsheetViewF(pluginManager)\n    LaunchSpreadsheetViewF(pluginManager)\n  }\n\n  configure(pluginManager: PluginManager) {\n    const { rootModel } = pluginManager\n    if (isAbstractMenuManager(rootModel)) {\n      rootModel.appendToSubMenu(['Add'], {\n        label: 'Spreadsheet view',\n        icon: ViewComfyIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('SpreadsheetView', {})\n        },\n      })\n    }\n  }\n}\n\nexport {\n  type SpreadsheetViewModel,\n  type SpreadsheetViewStateModel,\n} from './SpreadsheetView'\n","import { lazy } from 'react'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport stateModel from './models/SpreadsheetView'\n\nexport default function SpreadsheetViewF(pluginManager: PluginManager) {\n  pluginManager.addViewType(() => {\n    return new ViewType({\n      name: 'SpreadsheetView',\n      displayName: 'Spreadsheet view',\n      stateModel,\n      ReactComponent: lazy(() => import('./components/SpreadsheetView')),\n    })\n  })\n}\n\nexport {\n  type SpreadsheetViewModel,\n  type SpreadsheetViewStateModel,\n} from './models/SpreadsheetView'\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { SpreadsheetViewModel } from '../SpreadsheetView'\n\nexport default function LaunchSpreadsheetViewF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-SpreadsheetView',\n    // @ts-expect-error\n    async ({\n      session,\n      assembly,\n      uri,\n      fileType,\n    }: {\n      session: AbstractSessionModel\n      assembly: string\n      uri: string\n      fileType?: string\n    }) => {\n      const view = session.addView('SpreadsheetView') as SpreadsheetViewModel\n      const exts = uri.split('.')\n      let ext = exts.pop()?.toUpperCase()\n      if (ext === 'GZ') {\n        ext = exts.pop()?.toUpperCase()\n      }\n\n      view.importWizard.setFileType(fileType || ext || '')\n      view.importWizard.setSelectedAssemblyName(assembly)\n      view.importWizard.setFileSource({\n        uri,\n        locationType: 'UriLocation',\n      })\n      await view.importWizard.import(assembly)\n    },\n  )\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Grid, FormControlLabel, Checkbox } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { SvInspectorViewModel } from '../models/SvInspectorView'\n\nconst useStyles = makeStyles()(theme => ({\n  circularViewOptions: {\n    padding: theme.spacing(1),\n  },\n}))\n\nconst CircularViewOptions = observer(function ({\n  svInspector,\n}: {\n  svInspector: SvInspectorViewModel\n}) {\n  const { classes } = useStyles()\n\n  return (\n    <Grid\n      container\n      className={classes.circularViewOptions}\n      style={{ height: svInspector.circularViewOptionsBarHeight }}\n    >\n      <Grid item>\n        <FormControlLabel\n          control={\n            <Checkbox\n              checked={svInspector.onlyDisplayRelevantRegionsInCircularView}\n              onChange={e => {\n                svInspector.setOnlyDisplayRelevantRegionsInCircularView(\n                  e.target.checked,\n                )\n              }}\n            />\n          }\n          label=\"show only regions with data\"\n        />\n      </Grid>\n    </Grid>\n  )\n})\n\nexport default CircularViewOptions\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport { SvInspectorViewModel } from '../models/SvInspectorView'\nimport CircularViewOptions from './CircularViewOptions'\n\nconst useStyles = makeStyles()(theme => ({\n  resizeHandleVert: {\n    background: theme.palette.action.selected,\n    width: 4,\n    boxSizing: 'border-box',\n    borderTop: '1px solid #fafafa',\n  },\n  resizeHandleHoriz: {\n    background: theme.palette.action.selected,\n    height: 4,\n    boxSizing: 'border-box',\n    borderTop: '1px solid #fafafa',\n  },\n  viewControls: {\n    margin: 0,\n  },\n  viewsContainer: {\n    display: 'flex',\n  },\n  container: {\n    overflow: 'hidden',\n  },\n}))\n\nconst SvInspectorView = observer(function ({\n  model,\n}: {\n  model: SvInspectorViewModel\n}) {\n  const { classes } = useStyles()\n\n  const {\n    SpreadsheetViewReactComponent,\n    CircularViewReactComponent,\n    showCircularView,\n  } = model\n\n  return (\n    <div className={classes.container}>\n      <div className={classes.viewsContainer}>\n        <div\n          style={{ width: model.spreadsheetView.width }}\n          className={classes.container}\n        >\n          <SpreadsheetViewReactComponent model={model.spreadsheetView} />\n        </div>\n\n        {showCircularView ? (\n          <>\n            <ResizeHandle\n              onDrag={distance => {\n                const ret1 = model.circularView.resizeWidth(-distance)\n                return model.spreadsheetView.resizeWidth(-ret1)\n              }}\n              vertical\n              flexbox\n              className={classes.resizeHandleVert}\n            />\n            <div style={{ width: model.circularView.width }}>\n              <CircularViewOptions svInspector={model} />\n              <CircularViewReactComponent model={model.circularView} />\n            </div>\n          </>\n        ) : null}\n      </div>\n      <ResizeHandle\n        onDrag={model.resizeHeight}\n        className={classes.resizeHandleHoriz}\n      />\n    </div>\n  )\n})\n\nexport default SvInspectorView\n","// @ts-nocheck\n// this file contains the rather verbose functions for\n// creating features from CSV/TSV lines\nimport { parseLocString } from '@jbrowse/core/util'\n\nexport function makeAdHocFeature(\n  columns,\n  columnsAlreadyUsedInLocations,\n  row,\n  loc1,\n  loc2,\n  rowNumber,\n) {\n  // load all the other data in the row into an `otherData` object\n  const otherData = {}\n  columns.forEach((column, columnNumber) => {\n    if (columnsAlreadyUsedInLocations.includes(columnNumber)) {\n      return\n    }\n    let { text } = row.cells[columnNumber]\n    if (column.dataType.type === 'Number') {\n      text = Number.parseFloat(text)\n    }\n    otherData[column.name] = text\n  })\n\n  // make the final feature data out of otherData + the parsed locations\n  return {\n    ...otherData,\n    uniqueId: `sv-inspector-adhoc-${rowNumber}`,\n    refName: loc1.refName,\n    start: loc1.start,\n    end: loc1.end,\n    mate: {\n      refName: loc2.refName,\n      start: loc2.start,\n      end: loc2.end,\n    },\n  }\n}\n\nexport function makeAdHocSvFeatureFromTwoLocations(\n  columns,\n  locationColumnNumbers,\n  row,\n  rowNumber,\n  isValidRefName,\n) {\n  // use the first two locations we found (first according to *displayed* order)\n  const loc1 = parseLocString(\n    row.cells[locationColumnNumbers[0]].text,\n    isValidRefName,\n  )\n  const loc2 = parseLocString(\n    row.cells[locationColumnNumbers[1]].text,\n    isValidRefName,\n  )\n\n  const columnsAlreadyUsedInLocations = [\n    locationColumnNumbers[0],\n    locationColumnNumbers[1],\n  ]\n\n  return makeAdHocFeature(\n    columns,\n    columnsAlreadyUsedInLocations,\n    row,\n    loc1,\n    loc2,\n    rowNumber,\n  )\n}\n\nexport function makeAdHocSvFeatureFromTwoRefStartEndSets(\n  columns,\n  locRefColumnNumbers,\n  locStartColumnNumbers,\n  locEndColumnNumbers,\n  row,\n  rowNumber,\n) {\n  const textOf = colno => row.cells[colno].text\n  const loc1 = {\n    refName: textOf(locRefColumnNumbers[0]),\n    start: Number.parseInt(textOf(locStartColumnNumbers[0]), 10) - 1,\n    end: Number.parseInt(textOf(locEndColumnNumbers[0]), 10),\n  }\n  const loc2 = {\n    refName: textOf(locRefColumnNumbers[1]),\n    start: Number.parseInt(textOf(locStartColumnNumbers[1]), 10) - 1,\n    end: Number.parseInt(textOf(locEndColumnNumbers[1]), 10),\n  }\n  const columnsAlreadyUsedInLocations = [\n    locRefColumnNumbers[0],\n    locStartColumnNumbers[0],\n    locEndColumnNumbers[0],\n    locRefColumnNumbers[1],\n    locStartColumnNumbers[1],\n    locEndColumnNumbers[1],\n  ]\n  return makeAdHocFeature(\n    columns,\n    columnsAlreadyUsedInLocations,\n    row,\n    loc1,\n    loc2,\n    rowNumber,\n  )\n}\n\n// makes a feature data object (passed as `data` to a SimpleFeature constructor)\n// out of table row if the row has 2 location columns. undefined if not\nexport function makeAdHocSvFeature(sheet, rowNumber, row, isValidRefName) {\n  const { columns, columnDisplayOrder } = sheet\n  const columnTypes = {}\n  columnDisplayOrder.forEach(columnNumber => {\n    const columnDefinition = columns[columnNumber]\n    if (!columnTypes[columnDefinition.dataType.type]) {\n      columnTypes[columnDefinition.dataType.type] = []\n    }\n    columnTypes[columnDefinition.dataType.type].push(columnNumber)\n  })\n  const locationColumnNumbers = columnTypes.LocString || []\n  const locStartColumnNumbers = columnTypes.LocStart || []\n  const locEndColumnNumbers = columnTypes.LocEnd || []\n  const locRefColumnNumbers = columnTypes.LocRef || []\n\n  // if we have 2 or more columns of type location, make a feature from them\n  if (locationColumnNumbers.length >= 2) {\n    return makeAdHocSvFeatureFromTwoLocations(\n      columns,\n      locationColumnNumbers,\n      row,\n      rowNumber,\n      isValidRefName,\n    )\n  }\n  if (\n    locRefColumnNumbers.length >= 2 &&\n    locStartColumnNumbers.length >= 2 &&\n    locEndColumnNumbers.length >= 2\n  ) {\n    return makeAdHocSvFeatureFromTwoRefStartEndSets(\n      columns,\n      locRefColumnNumbers,\n      locStartColumnNumbers,\n      locEndColumnNumbers,\n      row,\n      rowNumber,\n    )\n  }\n  return undefined\n}\n","// @ts-nocheck\nimport { SimpleFeature, getEnv, getSession } from '@jbrowse/core/util'\nimport { makeAdHocSvFeature } from './adhocFeatureUtils'\n\nexport function getFeatureForRow(session, spreadsheetView, row, rowNumber) {\n  return (\n    row.extendedData?.vcfFeature ||\n    row.extendedData?.feature ||\n    makeAdHocSvFeature(\n      spreadsheetView.spreadsheet,\n      rowNumber,\n      row,\n      session.assemblyManager.isValidRefName,\n    )\n  )\n}\n\nexport function breakpointSplitViewSnapshotFromTableRow(\n  svInspectorView,\n  spreadsheetView,\n  spreadsheet,\n  row,\n  rowNumber,\n) {\n  const { pluginManager } = getEnv(svInspectorView)\n  const session = getSession(spreadsheetView)\n  const featureData = getFeatureForRow(session, spreadsheet, row, rowNumber)\n\n  if (featureData) {\n    const feature = new SimpleFeature(featureData)\n    session.setSelection(feature)\n    return pluginManager\n      .getViewType('BreakpointSplitView')\n      .snapshotFromBreakendFeature(feature, svInspectorView.circularView)\n  }\n  return undefined\n}\n\nexport function openBreakpointSplitViewFromTableRow(\n  svInspectorView,\n  spreadsheetView,\n  spreadsheet,\n  row,\n  rowNumber,\n) {\n  const viewSnapshot = breakpointSplitViewSnapshotFromTableRow(\n    svInspectorView,\n    spreadsheetView,\n    spreadsheet,\n    row,\n    rowNumber,\n  )\n  if (viewSnapshot) {\n    // try to center the offsetPx\n    const { circularView } = svInspectorView\n    viewSnapshot.views[0].offsetPx -= circularView.width / 2 + 100\n    viewSnapshot.views[1].offsetPx -= circularView.width / 2 + 100\n\n    const session = getSession(spreadsheetView)\n    session.addView('BreakpointSplitView', viewSnapshot)\n  }\n}\n\nexport function canOpenBreakpointSplitViewFromTableRow(\n  svInspectorView,\n  spreadsheetView,\n  spreadsheet,\n  row,\n  rowNumber,\n) {\n  try {\n    return Boolean(\n      breakpointSplitViewSnapshotFromTableRow(\n        svInspectorView,\n        spreadsheetView,\n        spreadsheet,\n        row,\n        rowNumber,\n      ),\n    )\n  } catch (e) {\n    console.error('Unable to open breakpoint split view from table row', e)\n    return false\n  }\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'\n\nimport ReactComponent from './components/SvInspectorView'\nimport stateModelFactory from './models/SvInspectorView'\nimport { Feature, getContainingView, getSession } from '@jbrowse/core/util'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport BreakpointSplitViewType from '@jbrowse/plugin-breakpoint-split-view/src/BreakpointSplitView/BreakpointSplitView'\nimport { CircularViewModel } from '@jbrowse/plugin-circular-view'\n\nfunction defaultOnChordClick(\n  feature: Feature,\n  chordTrack: IAnyStateTreeNode,\n  pluginManager: PluginManager,\n) {\n  const session = getSession(chordTrack)\n  session.setSelection(feature)\n  const view = getContainingView(chordTrack) as CircularViewModel\n  const viewType = pluginManager.getViewType(\n    'BreakpointSplitView',\n  ) as BreakpointSplitViewType\n  const viewSnapshot = viewType.snapshotFromBreakendFeature(feature, view)\n\n  // try to center the offsetPx\n  viewSnapshot.views[0]!.offsetPx -= view.width / 2 + 100\n  viewSnapshot.views[1]!.offsetPx -= view.width / 2 + 100\n\n  session.addView('BreakpointSplitView', viewSnapshot)\n}\n\nexport default function SvInspectorViewF(pluginManager: PluginManager) {\n  pluginManager.jexl.addFunction('defaultOnChordClick', defaultOnChordClick)\n\n  pluginManager.addViewType(() => {\n    const stateModel = stateModelFactory(pluginManager)\n    return new ViewType({\n      name: 'SvInspectorView',\n      displayName: 'SV inspector',\n      stateModel,\n      ReactComponent,\n    })\n  })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport Plugin from '@jbrowse/core/Plugin'\nimport {\n  AbstractSessionModel,\n  isAbstractMenuManager,\n} from '@jbrowse/core/util/types'\n\n// icons\nimport TableChartIcon from '@mui/icons-material/TableChart'\n\n// locals\nimport SvInspectorViewF from './SvInspectorView'\nimport LaunchSvInspectorViewF from './LaunchSvInspectorView'\n\nexport default class SvInspectorViewPlugin extends Plugin {\n  name = 'SvInspectorViewPlugin'\n\n  install(pluginManager: PluginManager) {\n    SvInspectorViewF(pluginManager)\n    LaunchSvInspectorViewF(pluginManager)\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToSubMenu(['Add'], {\n        label: 'SV inspector',\n        icon: TableChartIcon,\n        onClick: (session: AbstractSessionModel) => {\n          session.addView('SvInspectorView', {})\n        },\n      })\n    }\n  }\n}\n","import clone from 'clone'\nimport { autorun, reaction } from 'mobx'\nimport { types, addDisposer, Instance } from 'mobx-state-tree'\n\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSession, Region } from '@jbrowse/core/util'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport { SpreadsheetViewStateModel } from '@jbrowse/plugin-spreadsheet-view'\nimport { CircularViewStateModel } from '@jbrowse/plugin-circular-view'\n\n// icons\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew'\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen'\n\n// locals\nimport {\n  canOpenBreakpointSplitViewFromTableRow,\n  openBreakpointSplitViewFromTableRow,\n  getFeatureForRow,\n} from './breakpointSplitViewFromTableRow'\n\n/**\n * #stateModel SvInspectorView\n * #category view\n * does not extend, but is a combination of a\n * - [SpreadsheetView](../spreadsheetview)\n * - [CircularView](../circularview)\n *\n * extends\n * - [BaseViewModel](../baseviewmodel)\n */\nfunction SvInspectorViewF(pluginManager: PluginManager) {\n  const SpreadsheetViewType = pluginManager.getViewType('SpreadsheetView')!\n  const CircularViewType = pluginManager.getViewType('CircularView')!\n\n  const SpreadsheetModel =\n    SpreadsheetViewType.stateModel as SpreadsheetViewStateModel\n  const CircularModel = CircularViewType.stateModel as CircularViewStateModel\n\n  const minHeight = 400\n  const defaultHeight = 550\n  const headerHeight = 52\n  const circularViewOptionsBarHeight = 52\n  return types\n    .compose(\n      'SvInspectorView',\n      BaseViewModel,\n      types.model({\n        /**\n         * #property\n         */\n        id: ElementId,\n        /**\n         * #property\n         */\n        type: types.literal('SvInspectorView'),\n\n        /**\n         * #property\n         */\n        height: types.optional(\n          types.refinement(\n            'SvInspectorViewHeight',\n            types.number,\n            n => n >= minHeight,\n          ),\n          defaultHeight,\n        ),\n        /**\n         * #property\n         */\n        onlyDisplayRelevantRegionsInCircularView: false,\n        /**\n         * #property\n         * switch specifying whether we are showing the import wizard or the\n         * spreadsheet in our viewing area\n         */\n        mode: types.optional(\n          types.enumeration('SvInspectorViewMode', ['import', 'display']),\n          'import',\n        ),\n        /**\n         * #property\n         */\n        spreadsheetView: types.optional(SpreadsheetModel, () =>\n          SpreadsheetModel.create({\n            type: 'SpreadsheetView',\n            hideVerticalResizeHandle: true,\n          }),\n        ),\n        /**\n         * #property\n         */\n        circularView: types.optional(CircularModel, () =>\n          CircularModel.create({\n            type: 'CircularView',\n            hideVerticalResizeHandle: true,\n            hideTrackSelectorButton: true,\n            disableImportForm: true,\n          }),\n        ),\n      }),\n    )\n    .volatile(() => ({\n      width: 800,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get selectedRows() {\n        return self.spreadsheetView.spreadsheet?.rowSet.selectedRows\n      },\n      /**\n       * #getter\n       */\n      get assemblyName() {\n        const { assembly } = self.spreadsheetView\n        return assembly\n          ? (readConfObject(assembly, 'name') as string)\n          : undefined\n      },\n      /**\n       * #getter\n       */\n      get showCircularView() {\n        return self.spreadsheetView.mode === 'display'\n      },\n\n      /**\n       * #getter\n       */\n      get features() {\n        const session = getSession(self)\n        const { spreadsheetView } = self\n        const { outputRows = [] } = spreadsheetView\n        return outputRows\n          .map((r, i) => getFeatureForRow(session, spreadsheetView, r, i))\n          .filter(f => !!f)\n      },\n      /**\n       * #getter\n       */\n      get featuresAdapterConfigSnapshot() {\n        return {\n          type: 'FromConfigAdapter',\n          features: this.features,\n        }\n      },\n      /**\n       * #getter\n       */\n      get featureRefNames() {\n        const refs = this.features.map(r => r.refName)\n        const CHR2 = this.features.flatMap(r => r.INFO?.CHR2).filter(f => !!f)\n        return [...refs, ...CHR2]\n      },\n      /**\n       * #getter\n       */\n      get featuresCircularTrackConfiguration() {\n        return {\n          type: 'VariantTrack',\n          trackId: `sv-inspector-variant-track-${self.id}`,\n          name: 'features from tabular data',\n          adapter: this.featuresAdapterConfigSnapshot,\n          assemblyNames: [this.assemblyName],\n          displays: [\n            {\n              type: 'ChordVariantDisplay',\n              displayId: `sv-inspector-variant-track-chord-display-${self.id}`,\n              onChordClick:\n                'jexl:defaultOnChordClick(feature, track, pluginManager)',\n              renderer: { type: 'StructuralVariantChordRenderer' },\n            },\n          ],\n        }\n      },\n    }))\n    .volatile(() => ({\n      SpreadsheetViewReactComponent: SpreadsheetViewType.ReactComponent,\n      CircularViewReactComponent: CircularViewType.ReactComponent,\n      circularViewOptionsBarHeight,\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setWidth(newWidth: number) {\n        self.width = newWidth\n      },\n      /**\n       * #action\n       */\n      setHeight(newHeight: number) {\n        self.height = newHeight > minHeight ? newHeight : minHeight\n        return self.height\n      },\n      /**\n       * #action\n       */\n      setImportMode() {\n        self.spreadsheetView.setImportMode()\n      },\n      /**\n       * #action\n       */\n      setDisplayMode() {\n        self.spreadsheetView.setDisplayMode()\n      },\n\n      /**\n       * #action\n       */\n      setDisplayedRegions(regions: Region[]) {\n        self.circularView.setDisplayedRegions(regions)\n      },\n      /**\n       * #action\n       */\n      setOnlyDisplayRelevantRegionsInCircularView(val: boolean) {\n        self.onlyDisplayRelevantRegionsInCircularView = Boolean(val)\n      },\n    }))\n    .views(self => ({\n      /**\n       * #method\n       */\n      menuItems() {\n        return [\n          {\n            label: 'Return to import form',\n            onClick: () => {\n              self.setImportMode()\n            },\n            icon: FolderOpenIcon,\n          },\n        ]\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      resizeHeight(distance: number) {\n        const oldHeight = self.height\n        const newHeight = self.setHeight(self.height + distance)\n        return newHeight - oldHeight\n      },\n      afterAttach() {\n        // synchronize subview widths\n        addDisposer(\n          self,\n          autorun(\n            () => {\n              const borderWidth = 1\n              if (self.showCircularView) {\n                const spreadsheetWidth = Math.round(self.width * 0.66)\n                const circularViewWidth = self.width - spreadsheetWidth\n                self.spreadsheetView.setWidth(spreadsheetWidth - borderWidth)\n                self.circularView.setWidth(circularViewWidth)\n              } else {\n                self.spreadsheetView.setWidth(self.width)\n              }\n            },\n            { name: 'SvInspectorView width binding' },\n          ),\n        )\n        // synchronize subview heights\n        addDisposer(\n          self,\n          autorun(\n            () => {\n              self.spreadsheetView.setHeight(self.height - headerHeight)\n              self.circularView.setHeight(\n                self.height - headerHeight - circularViewOptionsBarHeight,\n              )\n            },\n            { name: 'SvInspectorView height binding' },\n          ),\n        )\n\n        // bind circularview displayedRegions to spreadsheet assembly, mediated\n        // by the onlyRelevantRegions toggle\n        addDisposer(\n          self,\n          autorun(\n            async () => {\n              const {\n                assemblyName,\n                onlyDisplayRelevantRegionsInCircularView,\n                circularView,\n                featureRefNames,\n              } = self\n              const { tracks } = circularView\n              const { assemblyManager } = getSession(self)\n              if (!assemblyName) {\n                return\n              }\n              const asm = await assemblyManager.waitForAssembly(assemblyName)\n              if (!asm) {\n                return\n              }\n\n              const { getCanonicalRefName, regions = [] } = asm\n              if (onlyDisplayRelevantRegionsInCircularView) {\n                if (tracks.length === 1) {\n                  try {\n                    // canonicalize the store's ref names if necessary\n                    const refSet = new Set(\n                      featureRefNames.map(r => getCanonicalRefName(r) || r),\n                    )\n\n                    circularView.setDisplayedRegions(\n                      clone(regions.filter(r => refSet.has(r.refName))),\n                    )\n                  } catch (e) {\n                    circularView.setError(e)\n                  }\n                }\n              } else {\n                circularView.setDisplayedRegions(regions)\n              }\n            },\n            { name: 'SvInspectorView displayed regions bind' },\n          ),\n        )\n\n        // bind circularview tracks to our track snapshot view\n        addDisposer(\n          self,\n          reaction(\n            () => ({\n              generatedTrackConf: self.featuresCircularTrackConfiguration,\n              assemblyName: self.assemblyName,\n            }),\n            data => {\n              const { assemblyName, generatedTrackConf } = data\n              const { circularView } = self\n              // hide any visible tracks\n              circularView.tracks.forEach(t =>\n                circularView.hideTrack(t.configuration.trackId),\n              )\n\n              // put our track in as the only track\n              if (assemblyName) {\n                // @ts-expect-error\n                circularView.addTrackConf(generatedTrackConf, {\n                  assemblyName,\n                })\n              }\n            },\n            {\n              name: 'SvInspectorView track configuration binding',\n              fireImmediately: true,\n            },\n          ),\n        )\n\n        // bind spreadsheetView row menu actions to us\n        addDisposer(\n          self,\n          autorun(() => {\n            self.spreadsheetView.setRowMenuItems(\n              // these are the MenuItem entries for the row menu actions in the\n              // spreadsheet view.  these are installed into the child\n              // SpreadsheetView using an autorun below\n              [\n                {\n                  label: 'Open split detail view',\n                  icon: OpenInNewIcon,\n                  // @ts-expect-error\n                  disabled(spreadsheetView, spreadsheet, rowNumber, row) {\n                    return !canOpenBreakpointSplitViewFromTableRow(\n                      self,\n                      spreadsheetView,\n                      spreadsheet,\n                      row,\n                      rowNumber,\n                    )\n                  },\n\n                  onClick(spreadsheetView, spreadsheet, rowNumber, row) {\n                    openBreakpointSplitViewFromTableRow(\n                      self,\n                      spreadsheetView,\n                      spreadsheet,\n                      row,\n                      rowNumber,\n                    )\n                  },\n                },\n              ],\n            )\n          }),\n        )\n      },\n    }))\n}\n\nexport type SvInspectorViewStateModel = ReturnType<typeof SvInspectorViewF>\nexport type SvInspectorViewModel = Instance<SvInspectorViewStateModel>\n\nexport default SvInspectorViewF\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\nimport { SvInspectorViewModel } from '../SvInspectorView/models/SvInspectorView'\n\nexport default function LaunchSvInspectorViewF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LaunchView-SvInspectorView',\n    // @ts-expect-error\n    async ({\n      session,\n      assembly,\n      uri,\n      fileType,\n    }: {\n      session: AbstractSessionModel\n      assembly: string\n      uri: string\n      fileType?: string\n    }) => {\n      const view = session.addView('SvInspectorView') as SvInspectorViewModel\n      const exts = uri.split('.')\n      let ext = exts.pop()?.toUpperCase()\n      if (ext === 'GZ') {\n        ext = exts.pop()?.toUpperCase()\n      }\n\n      view.spreadsheetView.importWizard.setFileType(fileType || ext || '')\n      view.spreadsheetView.importWizard.setSelectedAssemblyName(assembly)\n      view.spreadsheetView.importWizard.setFileSource({\n        uri,\n        locationType: 'UriLocation',\n      })\n      await view.spreadsheetView.importWizard.import(assembly)\n    },\n  )\n}\n","import React from 'react'\nimport { Region } from '@jbrowse/core/util/types'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n\nconst HicRendering = observer(function HicRendering(props: {\n  blockKey: string\n  width: number\n  height: number\n  regions: Region[]\n  bpPerPx: number\n}) {\n  const { width, height } = props\n  const canvasWidth = Math.ceil(width)\n  // need to call this in render so we get the right observer behavior\n  return (\n    <div style={{ position: 'relative', width: canvasWidth, height }}>\n      <PrerenderedCanvas\n        {...props}\n        style={{ position: 'absolute', left: 0, top: 0 }}\n      />\n    </div>\n  )\n})\n\nexport default HicRendering\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config HicRenderer\n * #category renderer\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst HicRenderer = ConfigurationSchema(\n  'HicRenderer',\n  {\n    /**\n     * #slot\n     */\n    baseColor: {\n      type: 'color',\n      description: 'base color to be used in the hic alignment',\n      defaultValue: '#f00',\n    },\n    /**\n     * #slot\n     */\n    color: {\n      type: 'color',\n      description: 'the color of each feature in a hic alignment',\n      defaultValue: 'jexl:interpolate(count,scale)',\n      contextVariable: ['count', 'maxScore', 'baseColor', 'scale'],\n    },\n\n    /**\n     * #slot\n     */\n    maxHeight: {\n      type: 'integer',\n      description: 'the maximum height to be used in a hic rendering',\n      defaultValue: 600,\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default HicRenderer\n","import ServerSideRendererType, {\n  RenderArgs as ServerSideRenderArgs,\n  RenderArgsDeserialized as ServerSideRenderArgsDeserialized,\n  ResultsSerialized as ServerSideResultsSerialized,\n  ResultsDeserialized as ServerSideResultsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType'\nimport { Region } from '@jbrowse/core/util/types'\nimport { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'\nimport { toArray } from 'rxjs/operators'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { firstValueFrom } from 'rxjs'\n\ninterface HicFeature {\n  bin1: number\n  bin2: number\n  counts: number\n}\n\ninterface HicDataAdapter extends BaseFeatureDataAdapter {\n  getResolution: (bp: number) => Promise<number>\n}\n\nexport interface RenderArgs extends ServerSideRenderArgs {\n  regions: Region[]\n}\n\nexport interface RenderArgsDeserialized\n  extends ServerSideRenderArgsDeserialized {\n  regions: Region[]\n  dataAdapter: HicDataAdapter\n  bpPerPx: number\n  highResolutionScaling: number\n  resolution: number\n  adapterConfig: AnyConfigurationModel\n}\n\nexport interface RenderArgsDeserializedWithFeatures\n  extends RenderArgsDeserialized {\n  features: HicFeature[]\n}\n\nexport type ResultsSerialized = ServerSideResultsSerialized\n\nexport type ResultsDeserialized = ServerSideResultsDeserialized\n\nexport default class HicRenderer extends ServerSideRendererType {\n  supportsSVG = true\n\n  async render(renderProps: RenderArgsDeserialized) {\n    const { config, regions, bpPerPx } = renderProps\n    const region = regions[0]!\n    const width = (region.end - region.start) / bpPerPx\n    const height = readConfObject(config, 'maxHeight')\n    const features = await this.getFeatures(renderProps)\n\n    const { makeImageData } = await import('./makeImageData')\n    const res = await renderToAbstractCanvas(width, height, renderProps, ctx =>\n      makeImageData(ctx, {\n        ...renderProps,\n        features,\n        pluginManager: this.pluginManager,\n      }),\n    )\n    const results = await super.render({\n      ...renderProps,\n      ...res,\n      features,\n      region: renderProps.regions[0],\n      height,\n      width,\n    })\n\n    return {\n      ...results,\n      ...res,\n      height,\n      width,\n    }\n  }\n\n  async getFeatures(args: RenderArgsDeserialized) {\n    const { regions, sessionId, adapterConfig } = args\n    const { dataAdapter } = await getAdapter(\n      this.pluginManager,\n      sessionId,\n      adapterConfig,\n    )\n    const features = await firstValueFrom(\n      (dataAdapter as BaseFeatureDataAdapter)\n        .getFeatures(regions[0]!, args)\n        .pipe(toArray()),\n    )\n    // cast to any to avoid return-type conflict, because the\n    // types of features returned by our getFeatures are quite\n    // different from the base interface\n\n    return features as any\n  }\n}\n\nexport {\n  type RenderArgsSerialized,\n  type RenderResults,\n} from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType'\n","import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'\nimport { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'\nimport { types, getEnv } from 'mobx-state-tree'\nimport { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'\n\n/**\n * #stateModel LinearHicDisplay\n * #category display\n * extends `BaseLinearDisplay`\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nexport default function stateModelFactory(\n  configSchema: AnyConfigurationSchemaType,\n) {\n  return types\n    .compose(\n      'LinearHicDisplay',\n      BaseLinearDisplay,\n      types.model({\n        /**\n         * #property\n         */\n        type: types.literal('LinearHicDisplay'),\n        /**\n         * #property\n         */\n        configuration: ConfigurationReference(configSchema),\n        /**\n         * #property\n         */\n        resolution: types.optional(types.number, 1),\n        /**\n         * #property\n         */\n        useLogScale: false,\n        /**\n         * #property\n         */\n        colorScheme: types.maybe(types.string),\n      }),\n    )\n    .views(self => {\n      const { renderProps: superRenderProps } = self\n      return {\n        /**\n         * #getter\n         */\n        get blockType() {\n          return 'dynamicBlocks'\n        },\n        /**\n         * #getter\n         */\n        get rendererTypeName() {\n          return 'HicRenderer'\n        },\n        /**\n         * #method\n         */\n        renderProps() {\n          const config = self.rendererType.configSchema.create(\n            {\n              ...getConf(self, 'renderer'),\n\n              // add specific jexl color callback when using pre-defined color schemes\n              ...(self.colorScheme\n                ? { color: 'jexl:interpolate(count,scale)' }\n                : {}),\n            },\n            getEnv(self),\n          )\n\n          return {\n            ...superRenderProps(),\n            config,\n            rpcDriverName: self.rpcDriverName,\n            displayModel: self,\n            resolution: self.resolution,\n            useLogScale: self.useLogScale,\n            colorScheme: self.colorScheme,\n          }\n        },\n      }\n    })\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setResolution(n: number) {\n        self.resolution = n\n      },\n      /**\n       * #action\n       */\n      setUseLogScale(f: boolean) {\n        self.useLogScale = f\n      },\n      /**\n       * #action\n       */\n      setColorScheme(f?: string) {\n        self.colorScheme = f\n      },\n    }))\n    .views(self => {\n      const { trackMenuItems: superTrackMenuItems } = self\n      return {\n        /**\n         * #getter\n         */\n        trackMenuItems() {\n          return [\n            ...superTrackMenuItems(),\n            {\n              label: 'Use log scale',\n              type: 'checkbox',\n              checked: self.useLogScale,\n              onClick: () => {\n                self.setUseLogScale(!self.useLogScale)\n              },\n            },\n            {\n              label: 'Color scheme',\n              type: 'subMenu',\n              subMenu: [\n                {\n                  label: 'Fall',\n                  onClick: () => {\n                    self.setColorScheme('fall')\n                  },\n                },\n                {\n                  label: 'Viridis',\n                  onClick: () => {\n                    self.setColorScheme('viridis')\n                  },\n                },\n                {\n                  label: 'Juicebox',\n                  onClick: () => {\n                    self.setColorScheme('juicebox')\n                  },\n                },\n                {\n                  label: 'Clear',\n                  onClick: () => {\n                    self.setColorScheme(undefined)\n                  },\n                },\n              ],\n            },\n            {\n              label: 'Resolution',\n              subMenu: [\n                {\n                  label: 'Finer resolution',\n                  onClick: () => {\n                    self.setResolution(self.resolution * 2)\n                  },\n                },\n                {\n                  label: 'Coarser resolution',\n                  onClick: () => {\n                    self.setResolution(self.resolution / 2)\n                  },\n                },\n              ],\n            },\n          ]\n        },\n      }\n    })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config HicAdapter\n * #category adapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst HicAdapter = ConfigurationSchema(\n  'HicAdapter',\n  {\n    /**\n     * #slot\n     */\n    hicLocation: {\n      type: 'fileLocation',\n      defaultValue: {\n        uri: '/path/to/my.hic',\n        locationType: 'UriLocation',\n      },\n    },\n  },\n  { explicitlyTyped: true },\n)\n\nexport default HicAdapter\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { colord, Colord } from '@jbrowse/core/util/colord'\nimport {\n  getFileName,\n  AdapterGuesser,\n  TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\n// locals\nimport HicRendererF from './HicRenderer'\nimport HicTrackF from './HicTrack'\nimport LinearHicDisplayF from './LinearHicDisplay'\nimport HicAdapterF from './HicAdapter'\n\nexport default class HicPlugin extends Plugin {\n  name = 'HicPlugin'\n\n  install(pluginManager: PluginManager) {\n    HicAdapterF(pluginManager)\n    HicRendererF(pluginManager)\n    HicTrackF(pluginManager)\n    LinearHicDisplayF(pluginManager)\n\n    pluginManager.addToExtensionPoint(\n      'Core-guessAdapterForLocation',\n      (adapterGuesser: AdapterGuesser) => {\n        return (\n          file: FileLocation,\n          index?: FileLocation,\n          adapterHint?: string,\n        ) => {\n          const regexGuess = /\\.hic/i\n          const adapterName = 'HicAdapter'\n          const fileName = getFileName(file)\n          const obj = {\n            type: adapterName,\n            hicLocation: file,\n          }\n\n          if (regexGuess.test(fileName) && !adapterHint) {\n            return obj\n          } else if (adapterHint === adapterName) {\n            return obj\n          } else {\n            return adapterGuesser(file, index, adapterHint)\n          }\n        }\n      },\n    )\n    pluginManager.addToExtensionPoint(\n      'Core-guessTrackTypeForLocation',\n      (trackTypeGuesser: TrackTypeGuesser) => {\n        return (adapterName: string) =>\n          adapterName === 'HicAdapter'\n            ? 'HicTrack'\n            : trackTypeGuesser(adapterName)\n      },\n    )\n  }\n\n  configure(pluginManager: PluginManager) {\n    const { jexl } = pluginManager\n    jexl.addFunction('alpha', (color: Colord, n: number) => color.alpha(n))\n    jexl.addFunction('hsl', (color: Colord) => colord(color.toHsl()))\n    jexl.addFunction('colorString', (color: Colord) => color.toHex())\n    jexl.addFunction(\n      'interpolate',\n      (count: number, scale: (n: number) => string) => scale(count),\n    )\n  }\n}\n","import { AdapterType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './configSchema'\n\nexport default function HicAdapterF(pluginManager: PluginManager) {\n  pluginManager.addAdapterType(\n    () =>\n      new AdapterType({\n        name: 'HicAdapter',\n        displayName: 'Hi-C adapter',\n        configSchema,\n        getAdapterClass: () => import('./HicAdapter').then(r => r.default),\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\n\nimport ReactComponent from './components/HicRendering'\nimport configSchema from './configSchema'\nimport HicRenderer from './HicRenderer'\n\nexport default function HicRendererF(pluginManager: PluginManager) {\n  pluginManager.addRendererType(\n    () =>\n      new HicRenderer({\n        name: 'HicRenderer',\n        ReactComponent,\n        configSchema,\n        pluginManager,\n      }),\n  )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'\nimport configSchemaF from './configSchema'\n\nexport default function HicTrackF(pluginManager: PluginManager) {\n  pluginManager.addTrackType(() => {\n    const configSchema = configSchemaF(pluginManager)\n    return new TrackType({\n      name: 'HicTrack',\n      displayName: 'Hi-C track',\n      configSchema,\n      stateModel: createBaseTrackModel(pluginManager, 'HicTrack', configSchema),\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { createBaseTrackConfig } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config HicTrack\n * #category track\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst configSchema = (pluginManager: PluginManager) =>\n  ConfigurationSchema(\n    'HicTrack',\n    {},\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: createBaseTrackConfig(pluginManager),\n    },\n  )\n\nexport default configSchema\n","import { DisplayType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nimport configSchemaFactory from './configSchema'\nimport stateModelFactory from './model'\n\nexport default function LinearHicDisplayF(pluginManager: PluginManager) {\n  pluginManager.addDisplayType(() => {\n    const configSchema = configSchemaFactory(pluginManager)\n    return new DisplayType({\n      name: 'LinearHicDisplay',\n      displayName: 'Hi-C contact matrix display',\n      configSchema,\n      stateModel: stateModelFactory(configSchema),\n      trackType: 'HicTrack',\n      viewType: 'LinearGenomeView',\n      ReactComponent: BaseLinearDisplayComponent,\n    })\n  })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport { Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n/**\n * #config LinearHicDisplay\n * #category display\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst HicTrackConfigFactory = (pluginManager: PluginManager) => {\n  return ConfigurationSchema(\n    'LinearHicDisplay',\n    {\n      /**\n       * #slot\n       */\n      renderer: pluginManager.getRendererType('HicRenderer')!.configSchema,\n    },\n    {\n      /**\n       * #baseConfiguration\n       */\n      baseConfiguration: baseLinearDisplayConfigSchema,\n      explicitlyTyped: true,\n    },\n  )\n}\n\nexport type HicTrackConfigModel = ReturnType<typeof HicTrackConfigFactory>\nexport type HicTrackConfig = Instance<HicTrackConfigModel>\nexport default HicTrackConfigFactory\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\n/**\n * #config TrixTextSearchAdapter\n */\nfunction x() {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\nconst TrixTextSearchAdapter = ConfigurationSchema(\n  'TrixTextSearchAdapter',\n  {\n    /**\n     * #slot\n     */\n    ixFilePath: {\n      type: 'fileLocation',\n      defaultValue: { uri: 'out.ix', locationType: 'UriLocation' },\n      description: 'the location of the trix ix file',\n    },\n    /**\n     * #slot\n     */\n    ixxFilePath: {\n      type: 'fileLocation',\n      defaultValue: { uri: 'out.ixx', locationType: 'UriLocation' },\n      description: 'the location of the trix ixx file',\n    },\n    /**\n     * #slot\n     */\n    metaFilePath: {\n      type: 'fileLocation',\n      defaultValue: { uri: 'meta.json', locationType: 'UriLocation' },\n      description: 'the location of the metadata json file for the trix index',\n    },\n    /**\n     * #slot\n     */\n    tracks: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'List of tracks covered by text search adapter',\n    },\n    /**\n     * #slot\n     */\n    assemblyNames: {\n      type: 'stringArray',\n      defaultValue: [],\n      description: 'List of assemblies covered by text search adapter',\n    },\n  },\n  {\n    explicitlyTyped: true,\n    /**\n     * #identifier\n     */\n    explicitIdentifier: 'textSearchAdapterId',\n  },\n)\n\nexport default TrixTextSearchAdapter\n","import TextSearchAdapterType from '@jbrowse/core/pluggableElementTypes/TextSearchAdapterType'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport configSchema from './TrixTextSearchAdapter/configSchema'\n\nexport default class TrixPlugin extends Plugin {\n  name = 'TrixPlugin'\n\n  install(pluginManager: PluginManager) {\n    pluginManager.addTextSearchAdapterType(() => {\n      return new TextSearchAdapterType({\n        name: 'TrixTextSearchAdapter',\n        displayName: 'Trix text search adapter',\n        configSchema,\n        description: 'Trix text search adapter',\n        getAdapterClass: () =>\n          import('./TrixTextSearchAdapter/TrixTextSearchAdapter').then(\n            d => d.default,\n          ),\n      })\n    })\n  }\n}\n","import {\n  types,\n  cast,\n  Instance,\n  SnapshotIn,\n  IMSTArray,\n  addDisposer,\n} from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { Region } from '@jbrowse/core/util/types'\nimport { Region as RegionModel, ElementId } from '@jbrowse/core/util/types/mst'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\nimport {\n  getSession,\n  localStorageGetItem,\n  localStorageSetItem,\n} from '@jbrowse/core/util'\nimport { autorun } from 'mobx'\n\nconst LabeledRegionModel = types\n  .compose(\n    RegionModel,\n    types.model('Label', {\n      label: types.optional(types.string, ''),\n      highlight: types.optional(types.string, 'rgba(247, 129, 192, 0.35)'),\n    }),\n  )\n  .actions(self => ({\n    setLabel(label: string) {\n      self.label = label\n    },\n    setHighlight(color: string) {\n      self.highlight = color\n    },\n  }))\n\nconst SharedBookmarksModel = types.model('SharedBookmarksModel', {\n  sharedBookmarks: types.maybe(types.array(LabeledRegionModel)),\n})\n\nexport interface IExtendedLGV extends LinearGenomeViewModel {\n  showBookmarkHighlights: boolean\n  showBookmarkLabels: boolean\n  toggleShowBookmarkHighlights: (arg: boolean) => void\n  toggleShowBookmarkLabels: (arg: boolean) => void\n}\n\nexport interface ILabeledRegionModel\n  extends SnapshotIn<typeof LabeledRegionModel> {\n  refName: string\n  start: number\n  end: number\n  reversed: boolean\n  highlight: string\n  assemblyName: string\n  label: string\n  setRefName: (newRefName: string) => void\n  setLabel: (label: string) => void\n  setHighlight: (color: string) => void\n}\n\nexport interface IExtendedLabeledRegionModel extends ILabeledRegionModel {\n  id: number\n  correspondingObj: ILabeledRegionModel\n}\n\nconst localStorageKeyF = () =>\n  typeof window !== 'undefined'\n    ? `bookmarks-${[window.location.host + window.location.pathname].join('-')}`\n    : 'empty'\n\n/**\n * #stateModel GridBookmarkWidgetModel\n */\nexport default function f(_pluginManager: PluginManager) {\n  return types\n    .model('GridBookmarkModel', {\n      /**\n       * #property\n       */\n      id: ElementId,\n      /**\n       * #property\n       */\n      type: types.literal('GridBookmarkWidget'),\n      /**\n       * #property\n       * removed by postProcessSnapshot, only loaded from localStorage\n       */\n      bookmarks: types.optional(types.array(LabeledRegionModel), () =>\n        JSON.parse(localStorageGetItem(localStorageKeyF()) || '[]'),\n      ),\n    })\n    .volatile(() => ({\n      selectedBookmarks: [] as IExtendedLabeledRegionModel[],\n      selectedAssembliesPre: undefined as string[] | undefined,\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get bookmarkAssemblies() {\n        return [...new Set(self.bookmarks.map(r => r.assemblyName))]\n      },\n      /**\n       * #getter\n       */\n      get validAssemblies() {\n        const { assemblyManager } = getSession(self)\n        return new Set(\n          this.bookmarkAssemblies.filter(a => assemblyManager.get(a)),\n        )\n      },\n      /**\n       * #getter\n       */\n      get areBookmarksHighlightedOnAllOpenViews() {\n        const { views } = getSession(self)\n        return views.every(v =>\n          'showBookmarkHighlights' in v ? v.showBookmarkHighlights : true,\n        )\n      },\n      /**\n       * #getter\n       */\n      get areBookmarksHighlightLabelsOnAllOpenViews() {\n        const { views } = getSession(self)\n        return views.every(v =>\n          'showBookmarkLabels' in v ? v.showBookmarkLabels : true,\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get bookmarksWithValidAssemblies() {\n        return self.bookmarks.filter(e =>\n          self.validAssemblies.has(e.assemblyName),\n        )\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get sharedBookmarksModel() {\n        // requires cloning bookmarks with JSON.stringify/parse to avoid duplicate\n        // reference to same object in the same state tree, will otherwise error\n        // when performing share\n        return SharedBookmarksModel.create({\n          sharedBookmarks: JSON.parse(JSON.stringify(self.selectedBookmarks)),\n        })\n      },\n      /**\n       * #getter\n       */\n      get allBookmarksModel() {\n        // requires cloning bookmarks with JSON.stringify/parse to avoid duplicate\n        // reference to same object in the same state tree, will otherwise error\n        // when performing share\n        return SharedBookmarksModel.create({\n          sharedBookmarks: JSON.parse(\n            JSON.stringify(self.bookmarksWithValidAssemblies),\n          ),\n        })\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      setSelectedAssemblies(assemblies?: string[]) {\n        self.selectedAssembliesPre = assemblies\n      },\n    }))\n    .views(self => ({\n      /**\n       * #getter\n       */\n      get selectedAssemblies() {\n        return (\n          self.selectedAssembliesPre?.filter(f =>\n            self.validAssemblies.has(f),\n          ) ?? [...self.validAssemblies]\n        )\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      importBookmarks(regions: Region[]) {\n        self.bookmarks = cast([...self.bookmarks, ...regions])\n      },\n      /**\n       * #action\n       */\n      addBookmark(region: Region) {\n        self.bookmarks.push(region)\n      },\n      /**\n       * #action\n       */\n      removeBookmark(index: number) {\n        self.bookmarks.splice(index, 1)\n      },\n      /**\n       * #action\n       */\n      updateBookmarkLabel(\n        bookmark: IExtendedLabeledRegionModel,\n        label: string,\n      ) {\n        bookmark.correspondingObj.setLabel(label)\n      },\n      /**\n       * #action\n       */\n      updateBookmarkHighlight(\n        bookmark: IExtendedLabeledRegionModel,\n        color: string,\n      ) {\n        bookmark.correspondingObj.setHighlight(color)\n      },\n      /**\n       * #action\n       */\n      updateBulkBookmarkHighlights(color: string) {\n        self.selectedBookmarks.forEach(bookmark => {\n          this.updateBookmarkHighlight(bookmark, color)\n        })\n      },\n      /**\n       * #action\n       */\n      setSelectedBookmarks(bookmarks: IExtendedLabeledRegionModel[]) {\n        self.selectedBookmarks = bookmarks\n      },\n      /**\n       * #action\n       */\n      setBookmarkedRegions(regions: IMSTArray<typeof LabeledRegionModel>) {\n        self.bookmarks = cast(regions)\n      },\n      /**\n       * #action\n       */\n      setHighlightToggle(toggle: boolean) {\n        const { views } = getSession(self)\n        views.forEach(view => {\n          // @ts-expect-error\n          view.toggleShowBookmarkHighlights?.(toggle)\n        })\n      },\n      /**\n       * #action\n       */\n      setLabelToggle(toggle: boolean) {\n        const { views } = getSession(self)\n        views.forEach(view => {\n          // @ts-expect-error\n          view.toggleShowBookmarkLabels?.(toggle)\n        })\n      },\n    }))\n    .actions(self => ({\n      /**\n       * #action\n       */\n      clearAllBookmarks() {\n        self.setBookmarkedRegions(\n          self.bookmarks.filter(\n            bookmark => !self.validAssemblies.has(bookmark.assemblyName),\n          ) as IMSTArray<typeof LabeledRegionModel>,\n        )\n      },\n      /**\n       * #action\n       */\n      clearSelectedBookmarks() {\n        for (const bookmark of self.selectedBookmarks) {\n          self.bookmarks.remove(bookmark.correspondingObj)\n        }\n        self.selectedBookmarks = []\n      },\n\n      removeBookmarkObject(arg: Instance<typeof LabeledRegionModel>) {\n        self.bookmarks.remove(arg)\n      },\n    }))\n    .actions(self => ({\n      afterAttach() {\n        const key = localStorageKeyF()\n        function handler(e: StorageEvent) {\n          if (e.key === key) {\n            const localStorage = JSON.parse(localStorageGetItem(key) || '[]')\n            self.setBookmarkedRegions(localStorage)\n          }\n        }\n        window.addEventListener('storage', handler)\n        addDisposer(self, () => {\n          window.removeEventListener('storage', handler)\n        })\n        addDisposer(\n          self,\n          autorun(() => {\n            localStorageSetItem(key, JSON.stringify(self.bookmarks))\n          }),\n        )\n      },\n    }))\n    .postProcessSnapshot(snap => {\n      const { bookmarks: _, ...rest } = snap as Omit<typeof snap, symbol>\n      return rest\n    })\n}\n\nexport type GridBookmarkStateModel = ReturnType<typeof f>\nexport type GridBookmarkModel = Instance<GridBookmarkStateModel>\n","import React, { useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { SessionWithWidgets, getSession, notEmpty } from '@jbrowse/core/util'\nimport { colord } from '@jbrowse/core/util/colord'\nimport { Tooltip } from '@mui/material'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\n// icons\nimport BookmarkIcon from '@mui/icons-material/Bookmark'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\nimport { IExtendedLGV } from '../../model'\n\ntype LGV = IExtendedLGV\n\nconst useStyles = makeStyles()({\n  highlight: {\n    // when the highlight is small, overflow:hidden makes the icon/indicators\n    // invisible\n    overflow: 'hidden',\n    height: '100%',\n    position: 'absolute',\n    zIndex: 100,\n    pointerEvents: 'none',\n  },\n  highlightButton: {\n    // re-enable pointerEvents on the button\n    pointerEvents: 'auto',\n  },\n})\n\nconst Highlight = observer(function Highlight({ model }: { model: LGV }) {\n  const { classes } = useStyles()\n  const session = getSession(model) as SessionWithWidgets\n  const { assemblyManager } = session\n  const { showBookmarkHighlights, showBookmarkLabels } = model\n\n  const bookmarkWidget = session.widgets.get('GridBookmark') as\n    | GridBookmarkModel\n    | undefined\n\n  useEffect(() => {\n    if (!bookmarkWidget) {\n      session.addWidget('GridBookmarkWidget', 'GridBookmark')\n    }\n  }, [session, bookmarkWidget])\n\n  const set = new Set(model.assemblyNames)\n\n  return showBookmarkHighlights && bookmarkWidget?.bookmarks\n    ? bookmarkWidget.bookmarks\n        .filter(value => set.has(value.assemblyName))\n        .map(r => {\n          const asm = assemblyManager.get(r.assemblyName)\n          const refName = asm?.getCanonicalRefName(r.refName) ?? r.refName\n          const s = model.bpToPx({ refName, coord: r.start })\n          const e = model.bpToPx({ refName, coord: r.end })\n          return s && e\n            ? {\n                width: Math.max(Math.abs(e.offsetPx - s.offsetPx), 3),\n                left: Math.min(s.offsetPx, e.offsetPx) - model.offsetPx,\n                highlight: r.highlight,\n                label: r.label,\n                bookmark: r,\n              }\n            : undefined\n        })\n        .filter(notEmpty)\n        .map(({ left, width, highlight, label, bookmark }, idx) => (\n          <div\n            /* biome-ignore lint/suspicious/noArrayIndexKey: */\n            key={`${left}_${width}_${idx}`}\n            className={classes.highlight}\n            style={{\n              left,\n              width,\n              background: highlight,\n            }}\n          >\n            {showBookmarkLabels ? (\n              <div className={classes.highlightButton}>\n                <CascadingMenuButton\n                  menuItems={[\n                    {\n                      label: 'Open bookmark widget',\n                      onClick: () => {\n                        session.showWidget(bookmarkWidget)\n                      },\n                    },\n                    {\n                      label: 'Remove bookmark',\n                      onClick: () => {\n                        bookmarkWidget.removeBookmarkObject(bookmark)\n                      },\n                    },\n                  ]}\n                >\n                  <Tooltip title={label} arrow>\n                    <BookmarkIcon\n                      fontSize=\"small\"\n                      sx={{\n                        color:\n                          colord(highlight).alpha() !== 0\n                            ? colord(highlight).alpha(0.8).toRgbString()\n                            : colord(highlight).alpha(0).toRgbString(),\n                      }}\n                    />\n                  </Tooltip>\n                </CascadingMenuButton>\n              </div>\n            ) : null}\n          </div>\n        ))\n    : null\n})\n\nexport default Highlight\n","import React, { useEffect } from 'react'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { SessionWithWidgets, getSession, notEmpty } from '@jbrowse/core/util'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\nimport { Tooltip } from '@mui/material'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\nimport { IExtendedLGV } from '../../model'\n\ntype LGV = IExtendedLGV\n\nconst useStyles = makeStyles()({\n  highlight: {\n    height: '100%',\n    position: 'absolute',\n  },\n})\n\nconst OverviewHighlight = observer(function OverviewHighlight({\n  model,\n  overview,\n}: {\n  model: LGV\n  overview: Base1DViewModel\n}) {\n  const { cytobandOffset } = model\n  const session = getSession(model) as SessionWithWidgets\n  const { classes } = useStyles()\n  const { assemblyManager } = session\n  const { showBookmarkHighlights, showBookmarkLabels } = model\n  const bookmarkWidget = session.widgets.get('GridBookmark') as\n    | GridBookmarkModel\n    | undefined\n\n  useEffect(() => {\n    if (!bookmarkWidget) {\n      session.addWidget('GridBookmarkWidget', 'GridBookmark')\n    }\n  }, [session, bookmarkWidget])\n\n  const assemblyNames = new Set(model.assemblyNames)\n  return showBookmarkHighlights && bookmarkWidget?.bookmarks\n    ? bookmarkWidget.bookmarks\n        .filter(r => assemblyNames.has(r.assemblyName))\n        .map(r => {\n          const asm = assemblyManager.get(r.assemblyName)\n          const refName = asm?.getCanonicalRefName(r.refName) ?? r.refName\n          const rev = r.reversed\n          const s = overview.bpToPx({ refName, coord: rev ? r.end : r.start })\n          const e = overview.bpToPx({ refName, coord: rev ? r.start : r.end })\n          return s !== undefined && e !== undefined\n            ? {\n                width: Math.abs(e - s),\n                left: s + cytobandOffset,\n                highlight: r.highlight,\n                label: r.label,\n              }\n            : undefined\n        })\n        .filter(notEmpty)\n        .map((obj, idx) => {\n          const { left, width, highlight, label } = obj\n          return (\n            <Tooltip\n              key={`${JSON.stringify(obj)}-${idx}`}\n              title={showBookmarkLabels ? label : ''}\n              arrow\n            >\n              <div\n                className={classes.highlight}\n                style={{\n                  left,\n                  width,\n                  background: highlight,\n                  borderLeft: `1px solid ${highlight}`,\n                  borderRight: `1px solid ${highlight}`,\n                }}\n              />\n            </Tooltip>\n          )\n        })\n    : null\n})\n\nexport default OverviewHighlight\n","import { lazy } from 'react'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { WidgetType } from '@jbrowse/core/pluggableElementTypes'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport stateModelFactory from './model'\nimport AddHighlightModelF from './components/Highlight'\n\nconst configSchema = ConfigurationSchema('GridBookmarkWidget', {})\n\nexport default function GridBookmarkWidgetF(pluginManager: PluginManager) {\n  pluginManager.addWidgetType(() => {\n    return new WidgetType({\n      name: 'GridBookmarkWidget',\n      heading: 'Bookmarked regions',\n      configSchema,\n      stateModel: stateModelFactory(pluginManager),\n      ReactComponent: lazy(() => import('./components/GridBookmarkWidget')),\n    })\n  })\n  AddHighlightModelF(pluginManager)\n}\n","import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { LinearGenomeViewStateModel } from '@jbrowse/plugin-linear-genome-view'\nimport {\n  SessionWithWidgets,\n  getSession,\n  isAbstractMenuManager,\n  isSessionModelWithWidgets,\n} from '@jbrowse/core/util'\nimport {\n  PluggableElementType,\n  ViewType,\n} from '@jbrowse/core/pluggableElementTypes'\n\n// icons\nimport BookmarkIcon from '@mui/icons-material/Bookmark'\nimport BookmarksIcon from '@mui/icons-material/Bookmarks'\nimport HighlightIcon from '@mui/icons-material/Highlight'\nimport LabelIcon from '@mui/icons-material/Label'\n\nimport GridBookmarkWidgetF from './GridBookmarkWidget'\nimport { GridBookmarkModel } from './GridBookmarkWidget/model'\n\nexport default class GridBookmarkPlugin extends Plugin {\n  name = 'GridBookmarkPlugin'\n\n  install(pluginManager: PluginManager) {\n    GridBookmarkWidgetF(pluginManager)\n\n    pluginManager.addToExtensionPoint(\n      'Core-extendPluggableElement',\n      (pluggableElement: PluggableElementType) => {\n        if (pluggableElement.name === 'LinearGenomeView') {\n          const { stateModel } = pluggableElement as ViewType\n          const lgv = stateModel as LinearGenomeViewStateModel\n          const newStateModel = lgv\n            .props({\n              /**\n               * #property\n               * show the bookmark highlights on this track\n               */\n              showBookmarkHighlights: true,\n              /**\n               * #property\n               * show the bookmark labels on this track\n               */\n              showBookmarkLabels: true,\n            })\n            .actions(self => ({\n              /**\n               * #action\n               */\n              toggleShowBookmarkHighlights(toggle?: boolean) {\n                self.showBookmarkHighlights =\n                  toggle !== undefined ? toggle : !self.showBookmarkHighlights\n              },\n              /**\n               * #action\n               */\n              toggleShowBookmarkLabels(toggle?: boolean) {\n                self.showBookmarkLabels =\n                  toggle !== undefined ? toggle : !self.showBookmarkLabels\n              },\n              activateBookmarkWidget() {\n                const session = getSession(self)\n                if (isSessionModelWithWidgets(session)) {\n                  let bookmarkWidget = session.widgets.get('GridBookmark')\n                  if (!bookmarkWidget) {\n                    bookmarkWidget = session.addWidget(\n                      'GridBookmarkWidget',\n                      'GridBookmark',\n                    )\n                  }\n\n                  session.showWidget(bookmarkWidget)\n                  return session.widgets.get(\n                    'GridBookmark',\n                  ) as GridBookmarkModel\n                }\n\n                throw new Error('Could not open bookmark widget')\n              },\n            }))\n            .actions(self => ({\n              navigateNewestBookmark() {\n                const session = getSession(self)\n                const bookmarkWidget = self.activateBookmarkWidget()\n                if (bookmarkWidget.bookmarks.length) {\n                  self.navTo(bookmarkWidget.bookmarks.at(-1)!)\n                } else {\n                  session.notify(\n                    'There are no recent bookmarks to navigate to.',\n                    'info',\n                  )\n                }\n              },\n\n              bookmarkCurrentRegion() {\n                if (self.id === getSession(self).focusedViewId) {\n                  const selectedRegions = self.getSelectedRegions(\n                    undefined,\n                    undefined,\n                  )\n                  const bookmarkWidget = self.activateBookmarkWidget()\n                  if (!selectedRegions.length) {\n                    throw new Error('no region selected')\n                  } else {\n                    bookmarkWidget.addBookmark(selectedRegions[0]!)\n                  }\n                }\n              },\n            }))\n            .views(self => {\n              const superMenuItems = self.menuItems\n              const superRubberBandMenuItems = self.rubberBandMenuItems\n              return {\n                menuItems() {\n                  return [\n                    ...superMenuItems(),\n                    { type: 'divider' },\n                    {\n                      label: 'Bookmarks',\n                      icon: BookmarksIcon,\n                      subMenu: [\n                        {\n                          label: 'Open bookmark widget',\n                          icon: BookmarksIcon,\n                          onClick: () => self.activateBookmarkWidget(),\n                        },\n                        {\n                          label: 'Bookmark current region',\n                          icon: BookmarkIcon,\n                          onClick: () => {\n                            self.bookmarkCurrentRegion()\n                          },\n                        },\n                        {\n                          label: 'Toggle bookmark highlights',\n                          icon: HighlightIcon,\n                          type: 'checkbox',\n                          checked: self.showBookmarkHighlights,\n                          onClick: () => {\n                            self.toggleShowBookmarkHighlights()\n                          },\n                        },\n                        {\n                          label: 'Toggle bookmark labels',\n                          icon: LabelIcon,\n                          type: 'checkbox',\n                          checked: self.showBookmarkLabels,\n                          onClick: () => {\n                            self.toggleShowBookmarkLabels()\n                          },\n                        },\n                      ],\n                    },\n                  ]\n                },\n\n                rubberBandMenuItems() {\n                  return [\n                    ...superRubberBandMenuItems(),\n                    {\n                      label: 'Bookmark region',\n                      icon: BookmarkIcon,\n                      onClick: () => {\n                        const { leftOffset, rightOffset } = self\n                        const selectedRegions = self.getSelectedRegions(\n                          leftOffset,\n                          rightOffset,\n                        )\n                        const bookmarkWidget = self.activateBookmarkWidget()\n                        if (!selectedRegions.length) {\n                          throw new Error('no regions selected')\n                        } else {\n                          bookmarkWidget.addBookmark(selectedRegions[0]!)\n                        }\n                      },\n                    },\n                  ]\n                },\n              }\n            })\n            .actions(self => ({\n              afterCreate() {\n                document.addEventListener('keydown', e => {\n                  const activationSequence =\n                    (e.ctrlKey || e.metaKey) && e.shiftKey\n                  // ctrl+shift+d or cmd+shift+d\n                  if (activationSequence && e.code === 'KeyD') {\n                    e.preventDefault()\n                    self.activateBookmarkWidget()\n                    self.bookmarkCurrentRegion()\n                    getSession(self).notify('Bookmark created.', 'success')\n                  }\n                  // ctrl+shift+m or cmd+shift+m\n                  if (activationSequence && e.code === 'KeyM') {\n                    e.preventDefault()\n                    self.navigateNewestBookmark()\n                  }\n                })\n              },\n            }))\n\n          ;(pluggableElement as ViewType).stateModel = newStateModel\n        }\n        return pluggableElement\n      },\n    )\n  }\n\n  configure(pluginManager: PluginManager) {\n    if (isAbstractMenuManager(pluginManager.rootModel)) {\n      pluginManager.rootModel.appendToMenu('Tools', {\n        label: 'Bookmarks',\n        icon: BookmarksIcon,\n        onClick: (session: SessionWithWidgets) => {\n          let bookmarkWidget = session.widgets.get('GridBookmark')\n          if (!bookmarkWidget) {\n            bookmarkWidget = session.addWidget(\n              'GridBookmarkWidget',\n              'GridBookmark',\n            )\n          }\n          session.showWidget(bookmarkWidget)\n        },\n      })\n    }\n  }\n}\n","import React from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'\n\n// locals\nimport Highlight from './Highlight'\nimport OverviewHighlight from './OverviewHighlight'\nimport { IExtendedLGV } from '../../model'\n\nexport default function AddHighlightModelF(pluginManager: PluginManager) {\n  pluginManager.addToExtensionPoint(\n    'LinearGenomeView-TracksContainerComponent',\n    // @ts-expect-error\n    (\n      rest: React.ReactNode[] | undefined,\n      { model }: { model: IExtendedLGV },\n    ) => {\n      return [\n        ...(rest || []),\n        <Highlight key=\"highlight_grid_bookmark\" model={model} />,\n      ]\n    },\n  )\n  pluginManager.addToExtensionPoint(\n    'LinearGenomeView-OverviewScalebarComponent',\n    // @ts-expect-error\n    (\n      rest: React.ReactNode[] | undefined,\n      { model, overview }: { model: IExtendedLGV; overview: Base1DViewModel },\n    ) => {\n      return [\n        ...(rest || []),\n        <OverviewHighlight\n          key=\"overview_highlight_grid_bookmark\"\n          model={model}\n          overview={overview}\n        />,\n      ]\n    },\n  )\n}\n","import Alignments from '@jbrowse/plugin-alignments'\nimport Authentication from '@jbrowse/plugin-authentication'\nimport Bed from '@jbrowse/plugin-bed'\nimport BreakpointSplitView from '@jbrowse/plugin-breakpoint-split-view'\nimport CircularView from '@jbrowse/plugin-circular-view'\nimport Config from '@jbrowse/plugin-config'\nimport ComparativeAdapters from '@jbrowse/plugin-comparative-adapters'\nimport DataManagement from '@jbrowse/plugin-data-management'\nimport DotplotView from '@jbrowse/plugin-dotplot-view'\nimport GtfPlugin from '@jbrowse/plugin-gtf'\nimport Gff3 from '@jbrowse/plugin-gff3'\nimport JobsManagementPlugin from '@jbrowse/plugin-jobs-management'\nimport LegacyJBrowse from '@jbrowse/plugin-legacy-jbrowse'\nimport LinearGenomeView from '@jbrowse/plugin-linear-genome-view'\nimport LinearComparativeView from '@jbrowse/plugin-linear-comparative-view'\nimport Lollipop from '@jbrowse/plugin-lollipop'\nimport Arc from '@jbrowse/plugin-arc'\nimport Menus from '@jbrowse/plugin-menus'\nimport RDF from '@jbrowse/plugin-rdf'\nimport Sequence from '@jbrowse/plugin-sequence'\nimport SVG from '@jbrowse/plugin-svg'\nimport Variants from '@jbrowse/plugin-variants'\nimport Wiggle from '@jbrowse/plugin-wiggle'\nimport GCContent from '@jbrowse/plugin-gccontent'\nimport SpreadsheetViewPlugin from '@jbrowse/plugin-spreadsheet-view'\nimport SvInspectorPlugin from '@jbrowse/plugin-sv-inspector'\nimport HicPlugin from '@jbrowse/plugin-hic'\nimport TrixPlugin from '@jbrowse/plugin-trix'\nimport GridBookmarkPlugin from '@jbrowse/plugin-grid-bookmark'\n\nconst corePlugins = [\n  SVG,\n  LinearGenomeView,\n  Alignments,\n  Authentication,\n  Bed,\n  CircularView,\n  Config,\n  DataManagement,\n  DotplotView,\n  GtfPlugin,\n  Gff3,\n  JobsManagementPlugin,\n  LegacyJBrowse,\n  LinearComparativeView,\n  Lollipop,\n  Menus,\n  RDF,\n  Sequence,\n  Variants,\n  Wiggle,\n  GCContent,\n  SpreadsheetViewPlugin,\n  SvInspectorPlugin,\n  BreakpointSplitView,\n  HicPlugin,\n  TrixPlugin,\n  GridBookmarkPlugin,\n  ComparativeAdapters,\n  Arc,\n]\n\nexport default corePlugins\n"],"names":["configSchema","ConfigurationSchema","localStorageGetNumber","key","defaultVal","localStorageGetItem","formatSubfeatures","obj","depth","parse","currentDepth","returnObj","subfeatures","map","sub","stateModelFactory","pluginManager","types","model","id","ElementId","type","literal","featureData","frozen","formattedFields","unformattedFeatureData","view","safeReference","pluggableMstType","track","trackId","maybe","string","trackType","maxDepth","number","sequenceFeatureDetails","optional","volatile","showCoordinatesSetting","intronBp","upDownBp","upperCaseCDS","Boolean","JSON","charactersPerRow","feature","undefined","mode","actions","self","setFeature","f","setUpDownBp","setIntronBp","setUpperCaseCDS","setShowCoordinates","setMode","views","showCoordinates","showGenomicCoordsOption","hasCDS","some","hasExon","hasExonOrCDS","this","afterAttach","addDisposer","autorun","localStorageSetItem","stringify","error","setFeatureData","clearFeatureData","setFormattedData","feat","setExtra","setError","e","afterCreate","session","getSession","configuration","getConf","clone","combine","arg2","__jbrowsefmt","console","preProcessSnapshot","snap","finalizedFeatureData","rest","postProcessSnapshot","_","v","Plugin","install","_pluginManager","configure","CoreGetRefNames","RpcMethodType","name","execute","args","rpcDriver","pm","deserializedArgs","deserializeArguments","sessionId","adapterConfig","dataAdapter","getAdapter","isFeatureAdapter","getRefNames","CoreGetFeatureDetails","serializeArguments","rootModel","assemblyManager","renamedArgs","renameRegionsIfNeeded","superArgs","super","rendererType","getRendererType","serializeArgsInClient","featureId","RendererType","sessions","getLayoutId","cachedLayout","layout","getDataByID","toJSON","CoreGetMetadata","getMetadata","CoreGetFileInfo","getHeader","CoreGetFeatures","deserializeReturn","feats","SimpleFeature","signal","regions","opts","Error","ret","getFeaturesInMultipleRegions","firstValueFrom","pipe","toArray","validateRendererType","ReactComponent","CoreRender","checkAbortSignal","result","render","renderInWorker","serializedReturn","des","deserializeResultsInClient","CoreFreeResources","specification","deleteCount","freeAdapterResources","getRendererTypes","forEach","renderer","count","freeResources","_rpcDriver","CoreGetFeatureDensityStats","filters","getMultiRegionFeatureDensityStats","cytobandLocation","defaultValue","uri","explicitlyTyped","CorePlugin","Object","values","coreRpcMethods","RpcMethod","addRpcMethod","addAdapterType","AdapterType","getAdapterClass","then","default","CytobandAdapterF","addWidgetType","WidgetType","heading","stateModel","lazy","PhasedScheduler","phaseCallbacks","Map","phaseOrder","constructor","add","phase","callback","includes","get","set","push","run","phaseName","TypeRecord","registeredTypes","typeName","baseClass","t","has","all","PluginManager","plugins","jexl","createJexlInstance","pluginMetadata","runtimePluginDefinitions","elementCreationSchedule","rendererTypes","adapterTypes","textSearchAdapterTypes","TextSearchAdapterType","trackTypes","TrackType","displayTypes","DisplayType","connectionTypes","ConnectionType","viewTypes","ViewType","widgetTypes","rpcMethods","addTrackWidgets","AddTrackWorkflowType","internetAccountTypes","InternetAccountType","configured","extensionPoints","initialPlugins","addPlugin","plugin","metadata","isCore","pluginConfigurationSchemas","configurationSchemas","configurationSchema","load","definition","getPlugin","find","p","hasPlugin","createPluggableElements","setRootModel","getElementTypeRecord","groupName","addElementType","creationCallback","typeRecord","newElement","evaluateExtensionPoint","getElementType","getElementTypesInGroup","getTrackElements","getConnectionElements","getAddTrackWorkflowElements","getRpcElements","getDisplayElements","getAdapterElements","fieldName","fallback","null","pluggableTypes","filter","isType","isModelType","length","jest","warn","union","pluggableConfigSchemaType","typeGroup","isBareConfigurationSchemaType","jbrequireCache","lib","ReExports","jbrequire","pack","TypeError","getAdapterType","getTextSearchAdapterType","getTrackType","getDisplayType","getViewType","getAddTrackWorkflow","getWidgetType","getConnectionType","getRpcMethodType","methodName","getInternetAccountType","addRendererType","cb","addTextSearchAdapterType","addTrackType","display","addDisplayType","addViewType","newView","viewType","extendedName","addConnectionType","addInternetAccountType","addAddTrackWorkflowType","addToExtensionPoint","extensionPointName","callbacks","extendee","props","accumulator","evaluateAsyncExtensionPoint","Entries","Accordion","AccordionActions","AccordionDetails","Alert","AlertTitle","Autocomplete","Avatar","AvatarGroup","Backdrop","Badge","Box","Breadcrumbs","Button","ButtonGroup","Card","CardActions","CardActionArea","CardContent","CardHeader","CardMedia","CircularProgress","Collapse","ClickAwayListener","Chip","Checkbox","Container","Dialog","DialogActions","DialogTitle","DialogContent","DialogContentText","Divider","Drawer","Fab","Fade","FilledInput","FormLabel","FormControl","FormControlLabel","FormHelperText","FormGroup","Grid","Grow","Icon","IconButton","Input","InputBase","InputLabel","InputAdornment","Link","LinearProgress","List","ListItem","ListItemAvatar","ListItemSecondaryAction","ListItemIcon","ListSubheader","ListItemText","Menu","MenuItem","MenuList","Modal","NativeSelect","OutlinedInput","Pagination","PaginationItem","Paper","Popover","Popper","Portal","Radio","RadioGroup","Rating","ScopedCssBaseline","Select","Skeleton","Slider","Snackbar","SnackbarContent","SpeedDial","SpeedDialAction","SpeedDialIcon","Stack","Step","StepButton","StepConnector","StepLabel","StepIcon","Stepper","SvgIcon","Switch","Tab","Table","TableBody","TableCell","TableContainer","TableFooter","TableHead","TablePagination","TableRow","TableSortLabel","Tabs","TextField","TextareaAutosize","ToggleButton","ToggleButtonGroup","Toolbar","Tooltip","Typography","LazyMUICore","fromEntries","entries","Component","React","ref","Suspense","_extends","displayName","MaterialPrefixMUI","value","MuiPrefixMUI","Attributes","FeatureDetails","BaseCard","DataGridEntries","DataGrid","module","GridActionsCellItem","GridAddIcon","GridArrowDownwardIcon","GridArrowUpwardIcon","GridCellCheckboxForwardRef","GridCellCheckboxRenderer","GridCheckCircleIcon","GridCheckIcon","GridCloseIcon","GridColumnHeaderSeparator","GridColumnHeaderSortIcon","GridColumnIcon","GridColumnMenu","GridColumnMenuContainer","GridDragIcon","GridExpandMoreIcon","GridFilterAltIcon","GridFilterForm","GridFilterListIcon","GridFilterPanel","GridFooter","GridFooterContainer","GridHeader","GridHeaderCheckbox","GridKeyboardArrowRight","GridLoadIcon","GridLoadingOverlay","GridMenuIcon","GridMoreVertIcon","GridNoRowsOverlay","GridOverlay","GridPagination","GridPanel","GridPanelWrapper","GridRemoveIcon","GridRoot","GridRowCount","GridSaveAltIcon","GridSearchIcon","GridSelectedRowCount","GridSeparatorIcon","GridTableRowsIcon","GridToolbar","GridToolbarColumnsButton","GridToolbarContainer","GridToolbarDensitySelector","GridToolbarExport","GridToolbarExportContainer","GridToolbarFilterButton","GridTripleDotsVerticalIcon","GridViewHeadlineIcon","GridViewStreamIcon","LazyDataGridComponents","LazyAttributes","LazyFeatureDetails","LazyBaseCard","libs","mobx","mst","react","ReactJSXRuntime","ReactDom","mxreact","useGridApiContext","useGridApiRef","useGridRootProps","MUIUtils","makeStyles","useTheme","alpha","MUIStyles","useStyles","classes","pluggableElementTypes","pluggableElementTypeModels","ServerSideRendererType","CircularChordRendererType","BoxRendererType","FeatureRendererType","Configuration","mstTypes","coreUi","coreUtil","coreColor","coreLayouts","trackUtils","Base1DView","coreIo","coreMstReflection","rxjs","BaseAdapterExports","libsList","keys","inLibsOnly","mod","reExportsList","join","inReExportsOnly","BaseResult","label","locString","renderingComponent","displayString","matchedAttribute","matchedObject","textSearchAdapter","relevance","score","results","getLabel","getDisplayString","getRenderingComponent","getTrackId","getScore","updateScore","newScore","getId","getLocation","hasLocation","getComboResults","RefSequenceResult","refName","TextSearchManager","adapterCache","QuickLRU","maxSize","loadTextSearchAdapters","searchScope","Promise","relevantAdapters","async","adapterId","readConfObject","conf","r","adapterType","adapterInstance","aggregateTextSearchAdapters","jbrowse","tracks","assemblyName","getAdaptersWithAssembly","getTrackAdaptersWithAssembly","confs","c","textSearching","search","rankFn","adapters","a","searchIndex","sortResults","flat","sort","b","localeCompare","r1","r2","typeModels","stringArray","array","stringArrayMap","numberMap","boolean","color","refinement","integer","text","fileLocation","FileLocation","fallbackDefaults","locationType","literalJSON","valueJSON","objectJSON","typeModelExtensions","val","removeAtIndex","idx","splice","setAtIndex","remove","delete","addToKey","ar","removeAtKeyIndex","setAtKeyIndex","JexlStringType","str","startsWith","isEmptyArray","thing","Array","isArray","modelName","inputSchemaDefinition","inputOptions","schemaDefinition","options","baseConfiguration","jbrowseSchemaDefinition","jbrowseSchemaOptions","preprocessConfigurationSchemaArguments","schemaType","modelDefinition","identifier","explicitIdentifier","implicitIdentifier","volatileConstants","isJBrowseConfigurationSchema","jbrowseSchema","slotName","slotDefinition","isLateType","isConfigurationSchemaType","description","contextVariable","configSlotModelName","charAt","toUpperCase","slice","slot","isCallback","String","expr","getEnv","stringToJexlExpression","evalSync","newVal","reset","convertToCallback","convertToValue","funcResult","extend","m","defineProperty","ConfigSlot","completeModel","setSubschema","data","newSchema","isStateTreeNode","create","identifierDefault","modelDefault","defaultSnap","getSnapshot","newSnap","matchesDefault","makeConfigurationSchemaModel","ConfigurationReference","reference","confObject","slotPath","isMapType","getType","newPath","subConf","isConfigurationModel","getTypeNamesFromExplicitlyTypedUnion","maybeUnionType","resolveLateType","isUnionType","typeNames","getUnionSubTypes","getDefaultValue","every","isOptionalType","getSubType","isArrayType","isConfigurationSlotType","isSequenceAdapter","isRegionsAdapter","isRefNameAliasAdapter","isTextSearchAdapter","EmptyConfig","BaseAdapter","static","config","getSubAdapter","idMaker","arg","BaseFeatureDataAdapter","_opts","getFeaturesInRegion","region","ObservableCreate","hasData","hasDataForRefName","getFeatures","subscribe","observer","complete","merge","getRegionQuantitativeStats","scoresToStats","getMultiRegionQuantitativeStats","blankStats","scoreMax","max","scoreMin","min","scoreSum","sum","scoreSumSquares","featureCount","basesCovered","rectifyStats","getRegionFeatureDensityStats","lastTime","Date","now","statsFromInterval","expansionTime","start","end","sampleCenter","features","Math","round","maybeRecordStats","featureDensity","interval","stats","statsSampleFeatures","refLen","currTime","Number","POSITIVE_INFINITY","BaseSequenceAdapter","PluggableElementBase","stuff","AdapterClass","adapterCapabilities","adapterMetadata","AddTrackWorkflow","url","configEditorComponent","subDisplay","maybeDisplayName","isObject","isObjectCustom","RegExp","globalThis","Blob","object","mapper","isSeen","WeakSet","mapArray","element","rpcDriverClassName","blobMap","getBlobMap","augmentLocationObjects","serializeNewAuthArguments","loc","isAppRootModel","internetAccountPreAuthorization","account","findAppropriateInternetAccount","getPreAuthorizationInformation","serializedArgs","_rpcDriverClassName","setBlobMap","isRemoteAbortSignal","deserializeAbortSignal","serializeReturn","originalReturn","_args","isAuthNeededException","retryAccount","createEphemeralInternetAccount","URL","origin","RetryError","internetAccountId","uris","mapObject","isUriLocation","HeadingComponent","BaseViewModel","minimized","width","menuItems","setDisplayName","setWidth","newWidth","setMinimized","flag","displayedRegions","Region","assemblyNames","connect","_arg","addTrackConf","trackConf","addTrackConfs","trackConfs","setTrackConfs","cast","clear","BaseDisplay","rpcDriverName","rendererTypeName","message","RenderingComponent","DisplayBlurb","parentTrack","getParent","isRoot","renderProps","getParentRenderProps","notReady","getContainingView","displayModel","DisplayMessageComponent","trackMenuItems","viewMenuActions","regionCannotBeRendered","setMessage","setRpcDriverName","reload","BaseInternetAccountConfig","authHeader","tokenType","domains","inWebWorker","sessionStorage","InternetAccount","toggleContents","SelectorComponent","selectorLabel","handlesLocation","location","domain","tokenKey","getTokenFromUser","_resolve","_reject","storeToken","token","setItem","removeToken","removeItem","retrieveToken","getItem","validateToken","_loc","tokenPromise","getToken","authInfo","resolve","reject","addAuthHeaderToInit","init","headers","Headers","authToken","validatedToken","internetAccountType","getFetcher","input","newInit","fetch","openLocation","RemoteFileWithRangeCache","createBaseTrackModel","baseTrackConfig","displays","rpcSessionId","flatMap","d","canConfigure","sessionTracks","adminMode","isSessionModelWithConfigEditing","showDisplay","displayId","initialSnapshot","schema","resolveIdentifier","getRoot","displayType","hideDisplay","transaction","replaceDisplay","oldId","newId","findIndex","shownId","compatDisp","compatTypes","Set","getCompatibleDisplays","priority","subMenu","checked","onClick","createBaseTrackConfig","category","adapter","indexingAttributes","indexingFeatureTypesToExclude","formatDetails","formatAbout","hideUris","s2","configDisplayTypes","addDisplayConf","LayoutSession","bpPerPx","update","assign","makeLayout","MultiLayout","GranularRectLayout","maxHeight","displayMode","pitchX","pitchY","cachedLayoutIsValid","subLayoutConstructorArgs","deepEqual","getWorkerSession","createSession","getExpandedRegion","renderArgs","maxFeatureGlyphExpansion","bpExpansion","floor","ceil","freeResourcesInClient","rpcManager","discardRange","deserializeLayoutInClient","json","PrecomputedLayout","createLayoutInWorker","getSublayout","serializeResultsInWorker","serialized","serializeRegion","rectangles","uniqueId","maxHeightReached","NewHydrate","html","theme","useRef","rootRef","hydrateRoot","hydrateFn","useEffect","renderTimeout","rIC","current","jbrowseTheme","createJBrowseTheme","ThemeProvider","clearTimeout","root","setTimeout","unmount","dangerouslySetInnerHTML","__html","OldHydrate","domNode","innerHTML","unmountComponentAtNode","style","outline","hydrate","FeatureRenderer","supportsSVG","res","deserializedFeatures","fromJSON","exportSVG","blockKey","reactElement","RpcRenderedSvgGroup","ComparativeServerSideRenderer","ServerSideRenderer","renderInClient","call","getSerializedSvg","featurePassesFilters","passes","requestRegions","requestRegion","dedupe","iterMap","size","_renderArgs","featureObservable","ServerSideRenderedContent","deserializeArgsInWorker","deserialized","SerializableFilterChain","renderToString","statusCallback","updateStatus","filterChain","trim","inputFilter","entry","tooltip","position","pointerEvents","backgroundColor","palette","grey","borderRadius","shape","common","white","fontFamily","typography","padding","fontSize","pxToRem","lineHeight","maxWidth","wordWrap","BaseTooltip","clientPoint","clientPointCoords","children","placement","popperTheme","components","MuiPopper","refs","floatingStyles","context","useFloating","strategy","useClientPoint","getFloatingProps","useInteractions","container","defaultProps","className","setFloating","zIndex","visibility","transform","closeAfterItemClick","stopPropagation","setOpen","onClickExtra","popupState","usePopupState","popupId","variant","onTouchStart","rest2","bindTrigger","isOpen","event","disabled","CascadingMenu","bindPopover","onMenuItemClick","ResetComponent","onFactoryReset","resetButtonText","dialogOpen","setDialogOpen","useState","FactoryResetDialog","onClose","open","FatalErrorDialog","componentStack","ErrorMessage","window","isBlobLocation","filename","marginLeft","spacing","setLocation","localPath","needToReload","getBlob","blobId","flexDirection","alignItems","fullWidth","component","hidden","onChange","target","file","files","isElectron","webUtils","require","getPathForFile","storeBlobLocation","blob","inputProps","dots","content","textAlign","animation","keyframes","LoadingEllipses","bg","margin","overflow","background","border","divider","RedErrorMessageBox","category10","dark2","set1","set2","tableau10","ggplot2Colors6","ggplot2Colors5","ggplot2Colors4","ggplot2Colors3","moveTo","interRegionPaddingWidth","minimumBlockWidth","len","bpSoFar","index","offset","s","i","lengthBetween","numBlocksWideEnough","targetBpPerPx","newBpPerPx","zoomTo","extraBp","bpToStart","scrollTo","coord","bp","reversed","pxToBp","px","offsetPx","staticBlocks","blocks","contentBlocks","oob","interRegionPaddingBp","currBlock","regionNumber","at","bpToPx","volatileWidth","setDisplayedRegions","setBpPerPx","setVolatileWidth","displayedRegionsTotalPx","totalBp","maxOffset","minOffset","dynamicBlocks","calculateDynamicBlocks","calculateStaticBlocks","currBp","setFeatures","showAllRegions","zoomOut","zoomIn","clamp","minBpPerPx","maxBpPerPx","oldBpPerPx","abs","newOffsetPx","centerAt","centerPx","scroll","distance","oldOffsetPx","AbortError","AbortSignal","aborted","makeAbortError","abortBreakPoint","DOMException","code","observeAbortSignal","fromEvent","Observable","isAbortException","exception","test","blobToDataURL","FileReader","onload","readAsDataURL","BlockSet","block","lastBlock","getBlocks","getRegions","toRegion","func","thisarg","totalWidthPx","widthPx","totalWidthPxWithoutBorders","BaseBlock","ContentBlock","ElidedBlock","elidedBlockCount","otherBlock","InterRegionPaddingBlock","elision","displayedRegionLeftPx","windowLeftPx","windowRightPx","regionStart","regionEnd","displayedRegionRightPx","regionWidthPx","parentRegion","leftPx","rightPx","intersection2","isLeftEndOfDisplayedRegion","isRightEndOfDisplayedRegion","blockOffsetPx","blockData","assembleLocStringFast","extra","modelWidth","windowLeftBp","windowRightBp","blockSizePx","blockSizeBp","regionBpOffset","regionBlockCount","windowRightBlockNum","windowLeftBlockNum","blockNum","colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","namedColorToHex","isNamedColor","contrastingTextColor","getLuminance","convertedColor","muiGetLuminance","emphasize","coefficient","muiEmphasize","makeContrasting","foreground","minContrastRatio","convertedForeground","convertedBackground","backgroundLuminance","contrastRatio","getContrastRatio","originalColor","darken","lighten","mix","names","list","hasher","lookup","hashed","hashCode","fetchers","globalRangeCache","HttpRangeFetcher","fetcher","chunkSize","maxFetchSize","minimumTTL","RemoteFile","fetchBinaryRange","bind","range","rangeParse","exec","parseInt","buffer","getRange","Response","status","requestDate","responseDate","ok","errorMessage","hint","k","arrayBuffer","Buffer","from","resolveUriLocation","baseUri","href","isLocalPathLocation","isNode","LocalFile","BlobFile","absoluteLocation","internetAccount","getInternetAccount","checkAuthNeededFetch","isRootModelWithInternetAccounts","response","AuthNeededError","toString","JexlF","j","addFunction","parent","log","sqrt","log10","parseFloat","char","split","charCodeAt","pos","codePointAt","endsWith","pad","padEnd","fill","padStart","repeat","match","replace","replaceAll","substring","toLowerCase","trimEnd","trimStart","tags","addBinaryOp","compilationCache","cacheKey","compiled","compile","minSizeToBotherWith","segmentsIntersect","x1","x2","y1","y2","LayoutRow","widthLimit","setAllFilled","allFilled","getItemAt","x","rowState","bits","isRangeClear","left","right","maxX","initialize","rectWidth","addRect","rect","l","oLeft","oRight","currLength","additionalLength","w","leftTrimAmount","rightTrimAmount","trimAmount","desiredLength","hardRowLimit","bitmap","pTotalHeight","height","storedRec","top","addRectToBitmap","pLeft","pRight","pHeight","rectangle","h","originalHeight","maxTop","collides","maxY","y","row","autovivifyRow","yEnd","hasSeen","getByCoord","pY","pX","getByID","cleanup","getTotalHeight","totalHeight","getRectangles","regionRectangles","containsNoTransferables","subLayouts","SubLayoutClass","layoutName","subLayout","sublayout","rbush","RBush","insert","minX","minY","_rect","_top","_data","_left","_right","_region","ThrowingLayout","PrecomputedMultiLayout","sublayoutJson","SceneGraph","absoluteCache","dirty","addChild","nameOrSceneGraph","child","childLeft","childRight","childTop","bottom","childBottom","absolute","expand","getSubRecord","newLeft","newRight","newTop","newBottom","diff","walkParents","walkChildren","xOffset","yOffset","node","move","_subtype","_subType","subType","unionType","_types","getPropertyType","propertyName","properties","_defaultValue","getEnumerationValues","maybeLate","nanoid","crypto","getRandomValues","Uint8Array","reduce","byte","createCanvas","createImageBitmap","ImageBitmapType","drawImageOntoCanvasContext","imageData","serializedCommands","CanvasSequence","drawImage","weHave","OffscreenCanvas","ImageBitmap","nodeCreateCanvas","dataUri","canvas","toDataURL","img","nodeImage","onerror","src","getContext","ctx","renderToAbstractCanvas","highResolutionScaling","rasterizeLayers","scale","xlinkHref","convertToBlob","fakeCtx","canvasRecordedData","getSvg","ReactRendering","rendering","left1","right1","left2","right2","doesIntersect2","isContainedWithin","catch","takeUntil","isFeature","isSimpleFeatureSerialized","parentHandle","aliases","strand","parentId","calcStdFromSums","sumSquares","n","population","variance","scoreMean","scoreStdDev","seed","MAX_VALUE","MIN_VALUE","found","acc","summary","isViewContainer","isSessionModel","isSessionWithAddTracks","disableAddTracks","isSessionWithShareURL","shareURL","isSessionModelWithWidgets","isSessionModelWithConnections","isSessionModelWithConnectionEditing","isSessionWithSessionPlugins","isSelectionContainer","isViewModel","isTrackModel","isDisplayModel","isTrackViewModel","isAbstractMenuManager","setPrototypeOf","prototype","isRetryException","useMeasure","dims","setDims","RS","ResizeObserver","contentRect","observe","disconnect","when","getter","timeout","finished","whenPromise","mobxWhen","timeoutId","finishTimeout","cancel","addEventListener","err","whenPresent","mdRegex","modificationRegex","cigarRegex","startClip","endClip","parseCigar","cigar","cigarToMismatches","ops","seq","qual","roffset","soffset","mismatches","hasRefAndSeq","op","base","altbase","q","subarray","cliplen","mdToMismatches","mdstring","cigarMismatches","curr","lastCigar","lastTemplateOffset","lastRefOffset","lastSkipPos","mismatchRecords","skips","getTemplateCoordLocal","refCoord","templateOffset","refOffset","md","num","isNaN","mismatch","getMismatches","concat","getNextRefPos","cigarOps","positions","readPos","refPos","currPos","getModificationProbabilities","getTagAlt","elt","getMethBins","fstart","fend","fstrand","flen","mm","methBins","methProbs","probabilities","modifications","getModificationPositions","probIndex","prob","fseq","revcom","mods","basemod","matches","typestr","delta","temp","getModificationTypes","getOrientedCigar","flip","getOrientedMismatches","getLengthOnRef","lengthOnRef","getLength","getLengthSansClipping","getClip","getTag","tag","featurizeSA","SA","readName","normalize","aln","saRef","saStart","saStrand","saCigar","saLengthOnRef","saLength","saLengthSansClipping","saStrandNormalized","saClipPos","saRealStart","seqLength","clipPos","CIGAR","mate","fetchSizeLimit","cramLocation","craiLocation","sequenceAdapter","CramAdapterF","bamLocation","indexType","enumeration","BamAdapterF","htsgetBase","htsgetTrackId","HtsgetBamAdapterF","hiddenFromGUI","subadapter","SNPCoverageAdapterF","clipColor","indicatorThreshold","drawArcs","drawInterbaseCounts","drawIndicators","SNPCoverageRenderer","WiggleBaseRenderer","draw","displayCrossHatches","modificationTagMap","scaleOpts","unadjustedHeight","configTheme","cfg","ticks","YSCALEBAR_LABEL_OFFSET","viewScale","getScale","indicatorViewScale","scaleType","originY","getOrigin","originLinear","toY","toHeight","toY2","toHeight2","bases","colorForBase","A","main","C","G","T","insertion","softclip","hardclip","total","meth","unmeth","coverage","fillStyle","featureSpanPx","fillRect","prevTotal","extraHorizontallyFlippedOffset","snpinfo","totalScore","cov","interbaseEvents","noncov","indicatorHeight","accum","maxBase","indicatorComparatorScore","beginPath","lineTo","bpSpanPx","xs","neg","neutral","strokeStyle","lineWidth","bezierCurveTo","stroke","tick","register","WiggleRendering","PileupLayoutSession","showSoftClip","sortedBy","filterBy","PileupRenderer","fetchSequence","maxClippingSize","layoutRecords","featureMap","sortFeature","featureArray","featuresInCenterLine","featuresOutsideCenter","innerArray","isCram","baseSortArray","baseMap","aMismatch","bMismatch","acode","bcode","heightPx","expansionBefore","expansionAfter","topPx","layoutFeature","layoutFeats","regionSequence","shouldFetchReferenceSequence","colorBy","makeImageData","notEmpty","canvasWidth","orientationType","minSubfeatureWidth","noSpacing","largeInsertionIndicatorScale","mismatchAlpha","onMouseMove","selectedFeatureId","featureIdUnderMouse","contextMenuFeature","firstRender","setFirstRender","mouseIsDown","setMouseIsDown","movedDuringLastMouseDown","setMovedDuringLastMouseDown","selectedRect","getFeatureByID","highlightedFeature","highlightedRect","makeRect","leftBp","rightBp","bottomPx","selected","highlight","callMouseHandler","handlerName","featureHandler","canvasHandler","tagFilter","onMouseDown","onMouseEnter","onMouseOut","onMouseOver","onMouseUp","onMouseLeave","getBoundingClientRect","offsetX","clientX","offsetY","clientY","clientBp","getFeatureOverlapping","mouseMove","onContextMenu","onFocus","onBlur","PrerenderedCanvas","boxSizing","getLowerPanelDisplays","lowerPanel","deepSnap","preCheck","PileupDisplay","SNPCoverageDisplay","isAlive","compose","snpCovHeight","heightPreConfig","userFeatureScreenDensity","lowerPanelType","LinearAlignmentsDisplayMixin","scrollTop","setScrollTop","setSNPCoverageHeight","pileupConf","searchFeatureByID","coverageConf","setSNPCoverageDisplay","setFeatureDensityStatsLimit","setPileupDisplay","setHeight","setFilterBy","setLowerPanelType","resizeHeight","oldHeight","setConfig","setColorBy","propagateColorBy","propagateFilterBy","renderSvg","pileupHeight","overrideHeight","superTrackMenuItems","resizeHandle","AlignmentsDisplay","ResizeHandle","onDrag","LinearAlignmentsDisplayF","pileupDisplay","snpCoverageDisplay","baseLinearDisplayConfigSchema","modelFactory","linearWiggleDisplayModelFactory","FilterModel","jexlFilters","observable","modificationsReady","setJexlFilters","updateModificationColorMap","uniqueModifications","modificationColors","randomColor","superRenderProps","rendererConfig","configBlob","drawArcsSetting","drawInterbaseCountsSetting","drawIndicatorsSetting","autorunReady","initialized","featureDensityStatsReady","regionTooLarge","renderReady","ready","superProps","setModificationsReady","toggleDrawIndicators","toggleDrawInterbaseCounts","toggleDrawArcs","createAutorun","vals","getUniqueModificationValues","delay","TooltipComponent","needsScalebar","contextMenuItems","autoscale","minScore","maxScore","inverted","multiTicks","renderers","configSchemaFactory","LinearWiggleDisplayReactComponent","FilterByTagDialog","TrackHeightMixin","FeatureDensityMixin","jitter","drawInter","drawLongRange","loading","chainData","lastDrawnOffsetPx","lastDrawnBpPerPx","setLastDrawnOffsetPx","setLastDrawnBpPerPx","setLoading","setRef","setColorScheme","setChainData","setDrawInter","setDrawLongRange","setLineWidth","setJitter","drawn","lineWidthSetting","jitterVal","icon","FilterListIcon","queueDialog","handleClose","PaletteIcon","drawFeats","doAfterAttach","maxFeatureScreenDensity","colorScheme","linearBasicDisplayConfigSchemaFactory","configSchemaF","stateModelF","drawSingletons","setDrawSingletons","featureHeight","linearAlignmentsDisplay","baseModel","baseModelFactory","AlignmentFeatureDetailsF","PileupBaseRPC","PileupGetReducedFeatures","featuresArray","reduced","flags","tlen","pair_orientation","next_ref","next_pos","filtered","sum2","avg","sd","upper","lower","getInsertSizeStats","chains","groupBy","hasPaired","PileupGetVisibleModifications","uniqueValues","PileupGetGlobalValueForTag","PileupRPCMethodsF","GuessAlignmentsTypesF","adapterGuesser","adapterHint","adapterName","fileName","getFileName","makeIndex","indexName","makeIndexType","trackTypeGuesser","defaultRendering","LinearPileupDisplayBlurb","ColorByTagDialog","SetFeatureHeightDialog","SetMaxHeightDialog","SharedLinearPileupDisplayMixin","BaseLinearDisplay","fadeLikelihood","trackMaxHeight","ColorByModel","colorTagMap","featureUnderMouseVolatile","tagsReady","setTagsReady","setMaxHeight","setFeatureHeight","setNoSpacing","updateColorTagMap","uniqueTag","colorPalette","totalKeys","setFeatureUnderMouse","selectFeature","featureWidget","addWidget","getContainingTrack","showWidget","setSelection","copyFeatureToClipboard","copy","notify","featureHeightSetting","featureUnderMouse","viewName","MenuOpenIcon","clearFeatureSelection","ContentCopyIcon","renderPropsPre","onFeatureClick","getRpcSessionId","layoutId","onFeatureContextMenu","setContextMenuFeature","colorSchemeSubMenuItems","getUniqueTagValues","notifyError","SortByTagDialog","GroupByDialog","ModificationsDialog","showSoftClipping","sortReady","currSortBpPerPx","setCurrSortBpPerPx","setSortReady","clearSelected","toggleSoftClipping","toggleMismatchAlpha","setSortedBy","centerLineInfo","centerBp","superReload","superRenderReady","mismatchAlphaSetting","superRenderPropsPre","superColorSchemeSubMenuItems","SortIcon","option","ColorLensIcon","doneCallback","WorkspacesIcon","VisibilityIcon","BaseLinearDisplayComponent","AlignmentsPlugin","LinearPileupDisplayF","LinearSNPCoverageDisplayF","AlignmentsTrackF","PileupRendererF","SNPCoverageRendererF","LinearReadArcsDisplayF","LinearReadCloudDisplayF","AlignmentsFeatureWidgetF","fillColor","color_fwd_strand_not_proper","color_rev_strand_not_proper","color_fwd_strand","color_rev_strand","color_fwd_missing_mate","color_rev_missing_mate","color_fwd_diff_chr","color_rev_diff_chr","color_pair_lr","color_pair_rr","color_pair_rl","color_pair_ll","color_nostrand","color_interchrom","color_longinsert","color_shortinsert","color_unknown","strokeColor","getPairedInsertSizeColor","f1","f2","sameRef","defaultColor","getPairedInsertSizeAndOrientationColor","getPairedOrientationColorOrDefault","orientationTypes","fr","type2","pairMap","getPairedOrientationColor","flagInclude","flagExclude","alt","F1R2","F2R1","F1F2","F2F1","R1R2","R2R1","R1F2","R2F1","rf","ff","LR","LL","RR","RL","originalRefName","o","g","random","TOP","BOTTOM","heightFromSpecificLevel","level","getYPosOverride","trackRefs","getPxFromCoordinate","yPos","chunk","useNextFrame","variable","setNextFrameState","intersect","a1","a2","ids","a12","findCircleIntersectionX","cx","cy","resultArray","solution","findCircleIntersectionY","cartesianToPolar","rho","theta","atan","PI","cartesianToTheta","twoPi","Slice","offsetRadians","radianWidth","bpPerRadian","assembleLocString","flipped","startRadians","endRadians","widthBp","freeze","bpToXY","radiusPx","offsetBp","elided","totalRadians","polarToCartesian","ExportSvgDialog","hideVerticalResizeHandle","hideTrackSelectorButton","lockedFitToWindow","disableImportForm","scrollX","scrollY","minimumRadiusPx","spacingPx","paddingPx","lockedPaddingPx","minVisibleWidth","trackSelectorType","visibleSection","viewSides","circleCenter","circleRadius","viewL","viewR","viewT","viewB","vertices","maxRho","NEGATIVE_INFINITY","reflect","rhoMin","rhoMax","thetaMin","thetaMax","vx","vy","viewportVisibleSection","centerXY","circumferencePx","elidedBp","elidedRegions","pxPerRadian","maximumRadiusPx","minCircumferencePx","maxCircumferencePx","atMaxBpPerPx","atMinBpPerPx","tooSmallToLock","figureDimensions","figureWidth","figureHeight","visible","lastVisible","displayedRegion","staticSlices","slices","currentRadianOffset","calculateStaticSlices","visibleStaticSlices","visibleThetaMin","visibleThetaMax","r1start","r2start","r2length","r1length","sliceIsVisible","newHeight","setModelViewWhenAdjust","resizeWidth","oldWidth","rotateClockwiseButton","rotateClockwise","rotateCounterClockwiseButton","rotateCounterClockwise","zoomInButton","zoomOutButton","secondCondition","previouslyEmpty","activateTrackSelector","selector","toggleTrack","hideTrack","showTrack","supportedDisplays","displayConf","toggleFitToWindowLock","exportSvg","renderToSvg","saveAs","FolderOpenIcon","PhotoCameraIcon","TrackSelectorIcon","primary","secondary","tertiary","quaternary","path","strokeDasharray","strokeDashoffset","light","radius","shown","setShown","patternTransform","patternUnits","strokeWidth","dominantBaseline","textAnchor","strokeLinecap","DisplayError","filled","Loading","renderReactionData","blockDefinitions","renderReactionEffect","cannotBeRenderedReason","isCompatibleWithRenderer","baseChordDisplayConfig","onChordClick","BaseChordDisplayModel","bezierRadiusRatio","refNameMap","origSlices","renamed","bezierRadius","selection","renderStarted","renderSuccess","renderError","setRefNameMap","makeAbortableReaction","fireImmediately","getTrackAssemblyNames","getRefNameMapForAdapter","CircularViewPlugin","CircularViewF","assembly","addView","asm","waitForAssembly","LaunchCircularViewF","appendToSubMenu","DataUsageIcon","callbackEditor","marginTop","callbackContainer","overflowX","textAreaFont","contents","setContents","shrink","htmlFor","helperText","multiline","InputProps","refNameColumn","setTarget","newTarget","LazyConfigurationEditorComponent","useUcscNameOverride","ConfigurationPlugin","FromConfigAdapterF","FromConfigRegionsAdapterF","FromConfigSequenceAdapterF","RefNameAliasAdapterF","ConfigurationEditorWidgetF","NcbiSequenceReportAliasAdapterF","AddConnectionWidgetF","isAbsoluteUrl","trackSource","trackData","indexTrackData","altAssemblyName","altTrackName","altTrackType","textIndexTrack","textIndexingConf","setAdapterHint","setTrackSource","setTextIndexingConf","setTextIndexTrack","setTrackData","setIndexTrackData","setAssembly","setTrackName","setTrackType","clearData","trackAdapter","guessAdapter","trackName","isFtp","isRelativeTrackUrl","isRelativeIndexUrl","isRelativeUrl","trackHttp","indexHttp","wrongProtocol","protocol","unsupported","UNSUPPORTED","guessTrackType","warningMessage","AddTrackWidgetF","getRowStr","facet","hasAnyOverlap","s1","query","categories","queryLower","getTrackName","findSubCategories","paths","hasSubs","findTopLevelCategories","filterTracks","trackListAssemblies","trackAssemblyNames","trackAssemblies","trackSelectorAnyOverlap","hasAllOverlap","generateHierarchy","noCategories","hierarchy","collapsed","filterText","activeSortTrackNames","activeSortCategories","viewTracks","sortNames","sortCategories","sortConfs","unshift","currLevel","isOpenByDefault","findNonSparseKeys","rows","nonMetadataKeys","keyConfigPostFix","pathname","URLSearchParams","recentlyUsedK","favoritesK","collapsedK","localStorageGetJSON","localStorageSetJSON","MAX_RECENTLY_USED","stateTreeFactory","faceted","showSparse","showFilters","showOptions","panelWidth","useShoppingCart","setFilter","setPanelWidth","setUseShoppingCart","setFilterText","setShowSparse","setShowOptions","setShowFilters","allTrackConfigurations","filteredNonMetadataKeys","metadataKeys","getRootKeys","filteredMetadataKeys","fields","filteredRows","arrFilters","setVisible","favorites","recentlyUsed","sortTrackNames","recentlyUsedCounter","favoritesCounter","shownTrackIds","selectionSet","favoritesSet","recentlyUsedSet","setSortTrackNames","setSortCategories","addToSelection","removeFromSelection","clearSelection","addToFavorites","removeFromFavorites","clearFavorites","setRecentlyUsedCounter","setRecentlyUsed","setFavorites","setFavoritesCounter","addToRecentlyUsed","clearRecentlyUsed","setView","toggleCategory","pathName","setCategoryCollapsed","expandAllCategories","setCollapsedCategories","clearFilterText","newText","isSelected","isFavorite","isRecentlyUsed","getRefSeqTrackConf","sequence","configAndSessionTrackConfigurations","connectionInstances","allTrackConfigurationTrackIdSet","favoriteTracks","recentlyUsedTracks","allTracks","group","collapseSubCategories","collapseTopLevelCategories","trackGroups","hasAnySubcategories","lc","HierarchicalTrackSelectorWidgetF","PluginStoreWidgetF","hubTxtLocation","baseConnectionConfig","UCSCTrackHubConnection","BaseConnectionModelFactory","doConnect","UCSCTrackHubConnectionF","locstr","includeAsm","toLocaleString","getBlockLabelKeysToHide","viewOffsetPx","blockLabelKeysToHide","sortedBlocks","alen","labelBounds","makeTicks","emitMajor","emitMinor","gridPitch","minMajorPitchBp","majorPitch","toExponential","majorPitchPx","minorPitch","chooseGridPitch","iterPitch","minBase","contentBlock","minHeight","whiteSpace","elidedBlock","backgroundImage","interRegionPaddingBlock","boundaryPaddingBlock","action","disabledBackground","boundary","ellipses","textOverflow","BlockMsg","severity","title","TooltipContents","SanitizedHTML","clientMouseCoord","ErrorMessageStackTraceDialog","paddingLeft","LoadingMessage","blockStatus","displayStatus","RefreshIcon","ReportIcon","reloadFlag","renderInProgress","ServerSideRenderedBlockContent","doReload","getContainingDisplay","renderBlockData","renderBlockEffect","renderDelay","setRendered","setStatus","abortController","abort","messageText","beforeDestroy","optDisplay","regionAsm","hasName","displayError","viewParams","getViewParams","getDisplayStr","totalBytes","toPrecision","notJest","getFeatureDensityStatsPre","rightRoundedRect","leftTriangle","rightTriangle","colorMap","gneg","gpos25","gpos50","gpos100","gpos75","gvar","stalk","acen","overview","cytobands","getCytobands","lcap","rcap","HEADER_OVERVIEW_HEIGHT","centromereSeen","points","getFillProps","dragHandle","cursor","dragHandleIcon","verticalAlign","draggable","onDragStart","currentTarget","parentNode","dataTransfer","setDragImage","setDraggingTrackId","onDragEnd","DragIcon","paper","iconButton","items","AddIcon","MinimizeIcon","KeyboardDoubleArrowUpIcon","moveTrackToTop","KeyboardArrowUpIcon","moveTrackUp","KeyboardArrowDownIcon","moveTrackDown","KeyboardDoubleArrowDownIcon","moveTrackToBottom","getTrackActionMenuItems","TrackLabelDragHandle","CloseIcon","CascadingMenuButton","MoreVertIcon","trackLabel","trackLabelOffset","trackLabelOverlap","labelStyle","trackLabelsSetting","prefersOffset","TrackLabel","renderingComponentContainer","trackRenderingContainer","overflowY","onDragEnter","scaleFactor","onScroll","evt","onHorizontalScroll","horizontalScroll","draggingTrackId","showTrackOutlines","elevation","detail","TrackLabelContainer","ErrorBoundary","FallbackComponent","TrackRenderingContainer","moveTrack","useRangeSelect","shiftOnly","startX","setStartX","currentX","setCurrentX","anchorPosition","setAnchorPosition","guideX","setGuideX","mouseDragging","mouseDown","shiftKey","preventDefault","relativeX","getRelativeX","mouseOut","setOffsets","handleMenuItemClick","globalMouseMove","globalMouseUp","leftOffset","rightOffset","computeOffsets","removeEventListener","rubberbandOn","leftBpOffset","rightBpOffset","numOfBpSelected","guide","coordX","arrow","rubberbandControl","ControlComponent","VerticalGuide","RubberbandSpan","anchorReference","rubberBandMenuItems","majorTickLabel","justifyContent","ContentBlockComponent","baseNumber","getTickDisplayStr","ScalebarCoordinateTicks","ElidedBlockComponent","InterRegionPaddingBlockComponent","refLabel","fontWeight","b0","scaleBarDisplayPrefix","lastLeftBlock","last","zoomContainer","scalebar","other","offsetLeft","ScalebarCoordinateLabels","ScalebarRefNameLabels","verticalGuidesZoomContainer","verticalGuidesContainer","majorTick","minorTick","RenderedBlockLines","RenderedVerticalGuides","centerLineContainer","active","borderTop","borderBottom","centerLineText","CenterLine","trackHeights","startingPosition","role","colord","toRgbString","linkIcon","Highlight","anchorEl","dismissHighlight","removeHighlight","mapCoords","getCanonicalRefName","LinkIcon","_event","BookmarkIcon","bookmarkWidget","widgets","addBookmark","tracksContainer","mouseDown1","mouseUp","setMouseDragging","scheduled","prevX","requestAnimationFrame","dataset","resizer","button","useSideScroll","mouseDown2","onWheel","ctrlKey","deltaY","setScaleFactor","deltaX","useWheelScroll","additional","showGridlines","Gridlines","showCenterLine","Rubberband","Scalebar","SCALE_BAR_HEIGHT","HighlightGroup","ImportForm","NoTracksActiveButton","note","paddingTop","paddingBottom","rel","LinearGenomeView","hasDisplayedRegions","handleSelectView","Element","contains","setFocusedViewId","document","MiniControlsComponent","HeaderComponent","setHovered","hoverPosition","hoverFeature","TracksContainer","TrackContainer","useOffset","multiplier","cytobandOffset","polygonColor","first","topLeft","topRight","startPx","endPx","HEADER_BAR_HEIGHT","getStrokeProps","HelpDialog","HelpAdornment","isHelpDialogDisplayed","setHelpDialogDisplayed","HelpIcon","EndAdornment","showHelp","endAdornment","marginRight","SearchIcon","AutocompleteTextField","TextFieldProps","inputBoxVal","params","setInputValue","setCurrentSearch","slotProps","placeholder","onSelect","fetchResults","minWidth","loaded","setLoaded","currentSearch","inputValue","searchOptions","setSearchOptions","debouncedSearch","useDebounce","coarseVisibleLocStrings","aggregateResults","getDeduplicatedResult","measureText","refNames","regionOptions","disableListWrap","disableClearable","freeSolo","includeInputInList","selectOnFocus","onInputChange","newInputValue","loadingText","onOpen","selectedOption","getOptionDisabled","filterOptions","searchQuery","toLocaleLowerCase","getFiltered","renderInput","getOptionLabel","opt","rubberband","rubberbandText","contrastText","popover","mouseEvents","paddingRight","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","disableRestoreFocus","toLocale","queryString","searchType","rankSearchResults","textSearchManager","textSearchResults","refNameResults","allRefNames","RESIZE_HANDLE_HEIGHT","INTER_REGION_PADDING_WIDTH","SPACING","WIDGET_HEIGHT","SVGBackground","shift","stripAlpha","SVGRegionSeparators","SVGTrackLabel","trackLabels","xoff","yoff","coarseStripHTML","SVGTracks","displayResults","textHeight","textOffset","Ruler","major","minor","hideText","SVGRuler","renderRuler","clipid","clipPath","SVGScalebar","displayBp","getBpDisplayStr","x0","SVGHeader","cytobandHeight","rulerHeight","showCytobands","visibleRegions","firstOverviewPx","lastOverviewPx","Cytobands","fillOpacity","OverviewScalebarPolygon","headerHeight","themeName","Wrapper","allThemes","createRootFn","trackLabelMaxLen","renderToStaticMarkup","xmlns","xmlnsXlink","viewBox","minMajorPitchPx","minMinorPitchPx","generateLocations","asmName","canonicalRefName","parseLocStrings","isValidRefName","inputs","parseLocString","isInteger","mouseover","CompositeMap","submaps","submap","Symbol","iterator","minDisplayHeight","displayHeight","regionTooLargeReason","featureDensityStats","userBpPerPxLimit","userByteSizeLimit","featureDensityStatsP","currStatsBpPerPx","currentBytesRequested","bytes","currentFeatureScreenDensity","maxAllowableBytes","setCurrStatsBpPerPx","clearFeatureDensityStats","getFeatureDensityStats","setFeatureDensityStats","autorunFeatureDensityStats","setFeatureDensityStatsP","req","regionCannotBeRenderedText","TooLargeMessage","blockState","BlockState","blockType","featureMaps","addBlock","deleteBlock","navToFeature","navTo","setFeatureIdUnderMouse","CenterFocusStrongIcon","renderBaseLinearDisplaySvg","blocksPresent","linearBlocks","heightOverflowed","textShadow","RenderedBlocks","state","LinearBlocks","viewModel","clientRect","setClientRect","offsetMouseCoord","setOffsetMouseCoord","setClientMouseCoord","contextCoord","setContextCoord","mouseCoord","TransitionProps","onExit","focusedBackground","MiniControls","hideHeader","focusedViewId","ArrowDown","zoom","ZoomOut","ZoomIn","HoverTooltip","cytoband","OverviewRubberband","controlsRef","click","globalKeyDown","borderLeft","borderRight","OverviewHighlight","scalebarLabel","OverviewScalebarTickLabels","refNameColor","getRefNameColor","tickLabels","offsetLabel","tickLabel","labelIdx","scalebarBorder","scalebarContig","scalebarContigForward","backgroundRepeat","scalebarContigReverse","scalebarRefName","scalebarVisibleRegion","overviewSvg","OverviewBox","canDisplayCytobands","borderColor","overviewVisibleRegions","scalebarColor","transparency","OverviewScalebar","modWidth","useMemo","slider","ZoomControls","setValue","log2","onChangeCommitted","headerRefName","SearchBox","RefNameAutocomplete","navToOption","setSearchResults","handleSelectedRegion","headerBar","headerForm","flexWrap","spacer","flexGrow","panButton","toggleButton","buttonSpacer","HeaderButtons","PanControls","slide","ArrowBackIcon","ArrowForwardIcon","RegionWidth","coarseTotalBp","Controls","LinearGenomeViewHeader","hideHeaderOverview","ReturnToImportFormDialog","SequenceSearchDialog","GetSequenceDialog","SearchResultsDialog","calculateVisibleLocStrings","isSingleAssemblyName","hideNoTracksActive","showCytobandsSetting","colorByCDS","volatileError","afterDisplayedRegionsSetCallbacks","coarseDynamicBlocks","sessionSetting","Header","assemblyErrors","assembliesInitialized","scaleBarHeight","trackHeightsWithResizeHandles","includeAggregateIndexes","getTrack","openTrackIds","rewriteOnClicks","holdOnClick","apply","trackTypeActions","allActions","setShowTrackOutlines","setColorByCDS","setShowCytobands","setHideHeader","setHideHeaderOverview","setHideNoTracksActive","setShowGridlines","addToHighlights","setHighlight","centerAtOffset","searchResults","setNewView","horizontallyFlip","reverse","displayInitialSnapshot","movingId","targetId","oldIndex","newIndex","setTrackLabels","setting","localStorage","setShowCenterLine","getSelectedRegions","simView","afterDisplayedRegionsSet","center","showAllRegionsInAssembly","factor","clearView","cancelLastAnimation","viewWidths","animate","cancelAnimation","springAnimate","canShowCytobands","anyCytobandsExist","SyncAltIcon","LabelIcon","currentlyCalculatedStaticBlocks","stringifiedCurrentlyCalculatedStaticBlocks","sret","roundedDynamicBlocks","visibleLocStrings","setCoarseDynamicBlocks","navToLocString","optAssemblyName","navToLocations","navToSearchString","parsedLocStrings","locations","navToMultiple","assembly1","assembly2","ref1","ref2","findLast","e1","e2","index2","ed","ZoomInIcon","handler","metaKey","AddFiltersDialog","trackShowLabels","trackShowDescriptions","trackDisplayMode","activeFilters","showLabels","showDescriptions","toggleShowLabels","toggleShowDescriptions","setDisplayMode","LinearGenomeViewPlugin","exports","BasicTrackF","LinearBasicDisplayF","LinearGenomeViewF","LinearBareDisplayF","tracklist","nav","idsNotFound","tryTrack","LaunchLinearGenomeViewF","LineStyleIcon","allRefs","allRefNamesWithLowerCase","lastIndex","lastIndexOf","splitLast","checkRef","altTypeToSO","DEL","INS","DUP","INV","INVDUP","CNV","TRA","NON_REF","getSOTermAndDescription","parser","soTerms","descriptions","soTerm","getSOAndDescFromAltDefs","parseBreakend","makeDescriptionString","lena","getSOAndDescByExamination","descs","prefixes","desc","prefix","suffixes","pref","modAlt","VCFFeature","dataFromVariant","_id","field","SAMPLES","REF","ALT","POS","CHROM","INFO","ID","isTRA","isSymbolic","END","samples","vcfLocation","vcfGzLocation","linearBasicDisplayModelFactory","strokeColorSelected","strokeColorHover","bpToRadians","blockStart","blockEnd","blocksForRefs","hovered","startBlock","svType","endPosition","endBlock","SVTYPE","bnd","startPos","matePosition","MatePosition","chr2","CHR2","startXY","endXY","controlXY","hoverStrokeColor","blocksForRefsMemo","Chord","VariantsPlugin","VcfAdapterF","VcfTabixAdapterF","VariantFeatureWidgetF","ExtensionPointsF","LinearVariantDisplayF","ChordRendererType","StructuralVariantChordRendererF","BaseChordDisplayComponent","ChordVariantDisplayF","en","toP","YScaleBar","hoverVertical","useClientY","reducedFeatures","bigWigLocation","source","subadapters","bigWigs","posColor","negColor","bicolorPivot","bicolorPivotValue","baseWiggleRendererConfigSchema","drawDensity","pivot","pivotValue","crossing","niceMin","niceMax","prevLeftPx","hasClipping","save","fillRectCtx","restore","DensityRenderer","getFeatureUnderMouse","eventClientX","amount","hslColor","toHsl","fudgeFactor","drawXY","colorCallback","summaryScoreMode","minSize","getHeight","toOrigin","crossingOrigin","lastCol","lastMix","effectiveC","toHex","XYPlotRenderer","_score","drawLine","lastVal","lowClipping","highClipping","LinePlotRenderer","sharedWiggleConfigFactory","minimalTicks","numStdDev","SetMinMaxDialog","SharedWiggleMixin","selectedRendering","resolution","rendererTypeNameState","constraints","statsFetchInProgress","updateQuantitativeStats","EPSILON","setColor","setPosColor","setNegColor","aborter","statsFetch","setResolution","setFill","toggleLogScale","setScaleType","setSummaryScoreMode","setAutoscale","setMaxScore","setRendererType","setMinScore","toggleCrossHatches","setCrossHatches","cross","adapterTypeName","rendererTypeNameSimple","autoscaleType","oldDomain","getNiceDomain","bounds","summaryScoreModeSetting","canHaveFill","displayCrossHatchesSetting","hatches","hasResolution","hasGlobalStats","scoreTrackMenuItems","SetColorDialog","axisPropsFromTickScale","fillSetting","hasRenderings","superRenderSvg","quantitativeStatsAutorun","sourcesVolatile","setLayout","clearLayout","setSources","sources","needsFullHeightScalebar","isMultiRow","needsCustomLegend","renderColorBoxes","iter","rowHeight","rowHeightTooSmallForScalebar","useMinimalTicks","eventClientY","mouseoverBp","featuresUnderMouse","MultiXYPlotRenderer","groups","translate","MultiLineRenderer","MultiRowLineRenderer","ConfirmDialog","MultiWiggleGetSources","getSources","WiggleGetMultiRegionQuantitativeStats","WiggleGetGlobalQuantitativeStats","getGlobalStats","WigglePlugin","QuantitativeTrackF","MultiQuantitativeTrackF","XYPlotRendererConfigSchema","DensityRendererConfigSchema","LinePlotRendererConfigSchema","LinearWiggleDisplayF","MultiXYPlotRendererConfigSchema","MultiDensityRendererConfigSchema","MultiRowXYPlotRendererConfigSchema","MultiLineRendererConfigSchema","MultiRowLineRendererConfigSchema","MultiDensityRenderer","MultiRowXYPlotRenderer","MultiLinearWiggleDisplayF","LinePlotRendererF","XYPlotRendererF","DensityRendererF","MultiXYPlotRendererF","MultiRowXYPlotRendererF","MultiDensityRendererF","MultiLineRendererF","MultiRowLineRendererF","MultiWiggleAddTrackWorkflowF","trackIds","arg1","makeTrack","CreateMultiWiggleExtensionF","XYPlotRendererReactComponent","xyPlotRendererConfigSchema","utils","orientation","Axis","shadow","format","orient","LEFT","RIGHT","fg","scaleLinear","scaleLog","scaleQuantize","nice","rangeMin","rangeMax","getScaleType","getQuantitativeStats","AbortController","statsRegion","wiggleStats","authEndpoint","tokenEndpoint","needsPKCE","clientId","scopes","responseType","fixup","buf","processError","invalidErrorCb","error_description","processTokenResponse","storeRefreshTokenCb","refresh_token","access_token","getResponseError","reason","statusText","getError","named","codeVerifier","codeVerifierPKCE","refreshTokenKey","storeRefreshToken","refreshToken","removeRefreshToken","retrieveRefreshToken","exchangeAuthorizationForAccessToken","redirectUri","grant_type","client_id","redirect_uri","code_verifier","method","body","exchangeRefreshForAccessToken","listener","exchangedTokenPromise","addMessageChannel","finishOAuthWindow","deleteMessageChannel","redirectUriWithInfo","fixedQueryString","redirectUrl","queryStringSearch","urlParams","useEndpointForAuthorization","response_type","token_access_type","scope","code_challenge","sha256","generateChallenge","code_challenge_method","eventName","ipcRenderer","invoke","eventFromDesktop","MessageEvent","doUserFlow","newToken","superGetFetcher","validateWithHEAD","ExternalTokenEntryForm","setToken","required","HTTPBasicLoginForm","username","setUsername","password","setPassword","onSubmit","btoa","autoComplete","OAuthConfigSchema","dropboxErrorMessages","shared_link_not_found","shared_link_access_denied","unsupported_link_type","shared_link_is_directory","getDescriptiveErrorMessage","DropboxIcon","append","Authorization","GoogleDriveFile","statsPromise","metadataOnly","stat","GoogleDriveIcon","getUri","driveUrl","searchParams","credentials","AuthenticationPlugin","OAuthInternetAccountModelFactory","ExternalTokenConfigSchema","ExternalTokenInternetAccountModelFactory","HTTPBasicConfigSchema","HTTPBasicInternetAccountModelFactory","DropboxOAuthConfigSchema","DropboxOAuthInternetAccountModelFactory","GoogleDriveOAuthConfigSchema","GoogleDriveOAuthInternetAccountModelFactory","bigBedLocation","scoreColumn","aggregateField","bedpeLocation","columnNames","bedGzLocation","autoSql","bedLocation","colRef","colStart","colEnd","BedPlugin","BigBedAdapterF","BedAdapterF","BedpeAdapterF","BedTabixAdapterF","BreakpointSplitViewType","getBreakendCoveringRegions","endPos","mateRefName","matePos","singleLevelSnapshotFromBreakendFeature","topRegion","bottomRegion","topMarkedRegion","bottomMarkedRegion","snapshotFromBreakendFeature","calc","getBlockFeatures","showIntraviewLinks","linkViews","interactToggled","matchedTrackFeatures","matchedTracks","getMatchedTracks","trackConfigId","hasTranslocations","getTrackFeatures","hasPairedFeatures","getMatchedFeaturesInLayout","onAction","onSubviewAction","actionName","getPath","removeView","toggleInteract","toggleIntraviewLinks","toggleLinkViews","setMatchedTrackFeatures","reverseViewOrder","PhotoCamera","BreakpointSplitViewPlugin","BreakpointSplitView","BreakpointSplitViewF","BreakpointAlignmentsWidgetF","targetAssembly","queryAssembly","pafLocation","pifGzLocation","mcscanAnchorsLocation","bed1Location","bed2Location","mcscanSimpleAnchorsLocation","outLocation","deltaLocation","chainLocation","ComparativeAdaptersPlugin","PAFAdapterF","PairwiseIndexedPAFAdapterF","DeltaAdapterF","ChainAdapterF","MCScanAnchorsAdapterF","MCScanSimpleAnchorsAdapterF","MashMapAdapterF","Dotplot1DView","box","DotplotHView","viewWidth","DotplotVView","viewHeight","stringLenPx","pxWidthForBlocks","hide","blockMessage","blockError","BlockMessage","BlockError","ServerSideRenderedDotplotContent","shouldDisplay","borderSize","borderX","borderY","warnings","ReactComponent2","vview","hview","bpPerPxY","bpPerPxX","offX","offY","DotplotDisplay","DotplotRenderer","ComparativeRenderer","process","dimensions","drawDotplot","thresholdsPalette","thresholds","ComparativeRender","rend","getRenderer","MismatchParser","DotplotPlugin","tickSize","vtextRotation","htextRotation","drawCigar","viewTrackConfigs","cursorMode","showPanButtons","wheelMode","hticks","vticks","setShowPanButtons","setWheelMode","setCursorMode","setDrawCigar","setBorderX","setBorderY","setAssemblyNames","setViews","arr","getCoords","mousedown","mouseup","xmin","xmax","minmax","ymin","ymax","onDotplotView","d1","d2","_unused1","rest1","_unused2","viewSnapshot","removeTemporaryAssembly","vblocks","hblocks","hoffset","voffset","vhide","hhide","by","bx","squareView","hpx","vpx","squareViewProportional","ratio","DotplotViewF","DotplotRendererF","LaunchDotplotViewF","pluggableElement","newStateModel","superContextMenuItems","readAssembly","trackAssembly","SA2","totalLength","refLength","gatherOverlaps","DotplotReadVsRefMenuItem","TimelineIcon","gtfLocation","GtfPlugin","gtfAdapterConfigSchema","gffGzLocation","dontRedispatch","gffLocation","GFF3Plugin","Gff3TabixAdapterF","Gff3AdapterF","GuessGff3F","Job","statusMessage","progressPct","cancelCallback","setCancelCallback","setStatusMessage","setProgressPct","pct","JobsManagementPlugin","jobs","queued","addJob","job","addedJob","removeJob","jobName","indx","removed","addFinishedJob","addQueuedJob","addAbortedJob","removeQueuedJob","updateJobStatusMessage","updateJobProgressPct","JobsListWidgetF","appendToMenu","Indexing","jobStatusWidget","rootUrlTemplate","namesIndexLocation","dataDirLocation","fetchJb1","convertTrackConfig","assemblies","jb2Tracks","jb1Track","dataRoot","breakConnection","LegacyJBrowsePlugin","NCListAdapterF","GuessNCListF","JBrowse1TextSearchAdapterF","JBrowse1ConnectionF","view0","existingFeatures","featIds","newFeatIds","foundNewFeatureNotInExistingMap","foundExistingFeatureNotInNewMap","existingFeat","middleComparativeHeight","setMiddleComparativeHeight","shownTracks","average","headerMenuItems","mainCanvas","clickMapCanvas","cigarClickMapCanvas","mouseoverCanvas","featPositions","mouseoverId","clickId","cigarMouseoverId","setFeatPositions","setMainCanvasRef","setClickMapCanvasRef","setCigarClickMapCanvasRef","setMouseoverCanvasRef","setMouseoverId","setCigarMouseoverId","setClickId","numFeats","featMap","LaunchSyntenyViewDialog","Curves","drawCIGAR","drawCurves","toggleCurves","toggleCIGAR","superHeaderMenuItems","superMenuItems","CropFreeIcon","ReadVsRefDialog","LinearComparativeViewPlugin","LinearComparativeViewF","LinearSyntenyViewF","LinearComparativeDisplayF","middle","baseConfigFactory","LinearSyntenyDisplayF","linearPileupDisplayConfigSchemaFactory","LGVSyntenyDisplayF","LaunchLinearSyntenyViewF","SyntenyTrackF","CalendarIcon","FloatingLayout","layoutDirty","anchorLocation","getLayout","sorted","maxBottom","layoutEntries","currentItem","previouslyLaidOutItem","prevStart","prevTop","prevWidth","prevHeight","prevEnd","prevBottom","pairs","PrecomputedFloatingLayout","FloatingLayoutSession","layoutIsValid","LollipopRenderer","innerColor","caption","minStickLength","stickColor","stickWidth","LollipopPlugin","LollipopRendererF","LinearLollipopDisplayF","displayModeSetting","renderArcSvg","ArcTooltip","Arc","isMouseOvered","setIsMouseOvered","textStroke","textYCoord","centerX","centerY","angleInDegrees","angleInRadians","cos","sin","describeArc","startAngle","endAngle","largeArcFlag","SemiCircles","semicircles","thickness","ArcRenderer","ArcPlugin","ArcRendererF","LinearArcDisplayF","LinearPairedArcDisplayF","attributeName","_feature","MenusPlugin","aboutConfigSchema","aboutStateModel","helpConfigSchema","helpStateModel","importSessionConfigSchema","importSessionStateModel","sessionManagerConfigSchema","sessionManagerStateModel","InfoIcon","widget","SPARQLAdapter","endpoint","queryTemplate","additionalQueryParams","refNamesQueryTemplate","configRefNames","encodeURIComponent","querySparql","resultsToRefNames","filledTemplate","resultsToFeatures","next","accept","bindings","head","vars","requiredField","seenFeatures","rawData","rd","parentUniqueId","pid","sf","subfeature","seenFeature","RdfPlugin","sparqlAdapterConfigSchema","SPARQLAdapterClass","twoBitLocation","chromSizesLocation","Translation","codonTable","frame","seqStart","frameShift","frameShiftAdjustedSeqLength","multipleOfThreeLength","seqSliced","translated","codon","normalizedCodon","aminoAcid","letter","codonWidth","renderLetter","defaultFill","framesCDS","frames","codonFill","defaultStarts","startCodon","defaultStops","stopCodon","Sequence","sequenceType","getContrastText","SequenceSVG","showReverse","showForward","showTranslation","generateCodonTable","defaultCodonTable","currY","showSequence","forwardFrames","reverseFrames","topFrames","bottomFrames","toReversed","complement","userSelect","sequenceHeight","DivSequenceRenderer","fastaLocation","faiLocation","metadataLocation","gziLocation","rewriteRefNames","searchForward","searchReverse","caseInsensitive","divSequenceRendererConfigSchema","SequencePlugin","DivSequenceRendererF","TwoBitAdapterF","BgzipFastaAdapterF","ChromSizesAdapterF","IndexedFastaAdapterF","UnindexedFastaAdapterF","SequenceSearchAdapterF","createReferenceSeqTrackConfig","ReferenceSequenceTrackF","showForwardActual","showReverseActual","showTranslationActual","toggleShowForward","toggleShowReverse","toggleShowTranslation","LinearReferenceSequenceDisplayF","createExtensionPoints","fontHeight","featureWidth","allowedWidthExpansion","totalWidth","measuredTextWidth","viewLeft","labelVisible","setLabelVisible","rstart","featureWidthBp","offsetPx1","rootLayout","shouldShowName","shouldShowDescription","featureLayout","GlyphComponent","FeatureLabel","OverlayRect","rectProps","rectTop","screenWidth","rectHeight","leftWithinBlock","widthWithinBlock","handlers","mouseoverFeatureId","renderOverlay","setRenderOverlay","onFeatureMouseOut","onFeatureMouseOver","onFeatureMouseDown","onFeatureMouseEnter","onFeatureMouseUp","onFeatureMouseLeave","onFeatureMouseMove","reverseFlip","color2","topLevel","featureStart","featureEnd","featureType","featureStrand","featurePhase","isUTR","getFrame","frameColor","Arrow","subfeatureId","subfeatureLayout","getSubparts","hasUTRs","isTranscript","subs","subparts","haveLeftUTR","haveRightUTR","codeStart","codeEnd","exons","subpart","makeUTRs","confKey","makeSubpartsFilter","filterSubpart","ProcessedTranscript","Segments","layOut","extraGlyphs","layOutFeature","layOutSubfeatures","Subfeatures","topOffset","SubfeatureGlyphComponent","chooseGlyphComponent","subfeatureHeight","hasSubSub","validator","glyph","parentFeature","layoutParent","RenderedFeatureGlyph","detectRerender","labelAllowed","expansion","getWidth","glyphWidth","textWidth","aboveLayout","FeatureGlyph","RenderedFeatures","isFeatureDisplayed","featureDisplayHandler","maxConfHeight","useCallback","featureIdCurrentlyUnderMouse","SvgOverlay","color1","color3","labels","nameColor","descriptionColor","subParts","impliedUTRs","SvgFeatureRenderer","SVGPlugin","SvgFeatureRendererReactComponent","svgFeatureRendererConfigSchema","EditGCContentParamsDialog","SharedModelF","windowSize","windowDelta","setGCContentParams","windowSizeSetting","windowDeltaSetting","GCContentPlugin","GCContentAdapterF","configSchemaFactory1","stateModelF1","configSchemaFactory2","stateModelF2","LinearGCContentDisplayF","MakeSpreadsheetColumnType","DataCellReactComponent","FilterModelType","compare","categoryName","hasFilter","textFilterControlAdornment","textFilterControl","FilterReactComponent","filterModel","operationChoices","getPropertyMembers","operation","setOperation","locStringIsInvalid","setLocString","ClearIcon","OPERATION_PREDICATES","overlaps with","cellLocation","specifiedLocation","contained within","fully contains","columnNumber","parsed","parsedLocString","spreadsheet","predicate","_sheet","cellsWithDerived","cells","cell","extendedData","parsedCellText","cellA","cellB","compareLocs","_columnNumber","newViewId","locationLinkClick","OPERATIONS","textInCell","stringToFind","equals","starts with","ends with","indexOf","setString","ColumnTextFilter","TextColumnType","NumberFilterModel","numberInCell","firstNumber","greater than","less than","between","secondNumber","firstNumberIsInvalid","setFirstNumber","secondNumberIsInvalid","setSecondNumber","ColumnTypes","Text","LocString","LocRef","LocStart","LocEnd","allColumnTypes","AnyColumnType","AnyFilterModelType","columnType","CellModel","toggleSelect","unSelect","select","setExtendedData","columns","column","isDerived","isLoaded","RowModel","passingFiltersCount","sortedFilteredRows","selectedCount","selectedRows","selectedAndPassingFiltersCount","selectedFilteredRows","sortedRows","rowSortingComparisonFunction","sheet","filterControls","rowPassesFilters","unselectAll","ColumnDefinition","dataType","derivationFunctionText","rowSet","StaticRowSetModel","columnDisplayOrder","hasColumnNames","sortColumns","descending","switchDirection","defaultDataType","rowMenuPosition","hideRowSelection","dataTypeChoices","rowA","rowB","setRowMenuPosition","newPosition","setSortColumns","newSort","setColumnType","newTypeName","fileTypes","fileTypeParsers","CSV","parseCsvBuffer","TSV","parseTsvBuffer","VCF","parseVcfBuffer","BED","parseBedBuffer","BEDPE","parseBedPEBuffer","STAR-Fusion","parseSTARFusionBuffer","fileTypesRegexp","ImportWizard","fileType","hasColumnNameLine","columnNameLineNumber","selectedAssemblyName","fileSource","isReadyToOpen","canCancel","readyToDisplay","requiresUnzip","setSelectedAssemblyName","setFileSource","newSource","firstMatch","toggleHasColumnNameLine","setColumnNameLineNumber","newnumber","setFileType","cancelButton","import","typeParser","unzip","filehandle","readFile","displaySpreadsheet","RowFullTextFilter","rowFullText","columnFilters","AnyColumnFilter","setRowFullTextFilter","addBlankColumnFilter","removeColumnFilter","clearAllFilters","defaultRowMenuItems","DoneIcon","_view","rowNumber","hideFilterControls","FilterControlsModel","importWizard","ImportWizardModel","SpreadsheetModel","rowMenuItems","outputRows","setRowMenuItems","newItems","setImportMode","SpreadsheetViewPlugin","SpreadsheetViewF","exts","ext","pop","LaunchSpreadsheetViewF","ViewComfyIcon","circularViewOptions","svInspector","circularViewOptionsBarHeight","item","control","onlyDisplayRelevantRegionsInCircularView","setOnlyDisplayRelevantRegionsInCircularView","resizeHandleVert","resizeHandleHoriz","viewControls","viewsContainer","SvInspectorView","SpreadsheetViewReactComponent","CircularViewReactComponent","showCircularView","spreadsheetView","ret1","circularView","flexbox","CircularViewOptions","makeAdHocFeature","columnsAlreadyUsedInLocations","loc1","loc2","otherData","getFeatureForRow","vcfFeature","columnTypes","columnDefinition","locationColumnNumbers","locStartColumnNumbers","locEndColumnNumbers","locRefColumnNumbers","makeAdHocSvFeatureFromTwoLocations","textOf","colno","makeAdHocSvFeatureFromTwoRefStartEndSets","makeAdHocSvFeature","breakpointSplitViewSnapshotFromTableRow","svInspectorView","defaultOnChordClick","chordTrack","SvInspectorViewPlugin","SpreadsheetViewType","CircularViewType","CircularModel","featuresAdapterConfigSnapshot","featureRefNames","featuresCircularTrackConfiguration","spreadsheetWidth","circularViewWidth","refSet","reaction","generatedTrackConf","OpenInNewIcon","canOpenBreakpointSplitViewFromTableRow","openBreakpointSplitViewFromTableRow","SvInspectorViewF","LaunchSvInspectorViewF","TableChartIcon","baseColor","HicRenderer","useLogScale","setUseLogScale","hicLocation","HicPlugin","HicAdapterF","HicRendererF","HicTrackF","LinearHicDisplayF","ixFilePath","ixxFilePath","metaFilePath","TrixPlugin","LabeledRegionModel","RegionModel","setLabel","SharedBookmarksModel","sharedBookmarks","localStorageKeyF","host","highlightButton","showBookmarkHighlights","showBookmarkLabels","bookmarks","bookmark","removeBookmarkObject","sx","rev","GridBookmarkPlugin","selectedBookmarks","selectedAssembliesPre","bookmarkAssemblies","validAssemblies","areBookmarksHighlightedOnAllOpenViews","areBookmarksHighlightLabelsOnAllOpenViews","bookmarksWithValidAssemblies","sharedBookmarksModel","allBookmarksModel","setSelectedAssemblies","selectedAssemblies","importBookmarks","removeBookmark","updateBookmarkLabel","correspondingObj","updateBookmarkHighlight","updateBulkBookmarkHighlights","setSelectedBookmarks","setBookmarkedRegions","setHighlightToggle","toggle","toggleShowBookmarkHighlights","setLabelToggle","toggleShowBookmarkLabels","clearAllBookmarks","clearSelectedBookmarks","AddHighlightModelF","GridBookmarkWidgetF","activateBookmarkWidget","navigateNewestBookmark","bookmarkCurrentRegion","selectedRegions","superRubberBandMenuItems","BookmarksIcon","HighlightIcon","activationSequence","SVG","Alignments","Authentication","Bed","CircularView","Config","DataManagement","DotplotView","Gff3","LegacyJBrowse","LinearComparativeView","Lollipop","Menus","RDF","Variants","Wiggle","GCContent","SvInspectorPlugin","ComparativeAdapters"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6861.66a2e4c0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6861],{46861:(e,o,t)=>{t.r(o),t.d(o,{default:()=>M});var r=t(7552),n=t(68584),u=t(99546),a=t(68446),s=t(80208);function c({feature:e,config:o,layoutRecord:{y:t,data:{anchorX:u,radiusPx:a,score:c}}}){const i=(0,n.readConfObject)(o,"innerColor",{feature:e}),l=String(c),d=2*a/l.length*1.1;return d<12?null:r.createElement("text",{style:{fontSize:d,fill:(0,s.contrastingTextColor)(i)},x:u,y:t+a-d/2.4,textAnchor:"middle",dominantBaseline:"hanging"},l)}const i=(0,a.observer)((function(e){const{feature:o,config:t,layoutRecord:u,selectedFeatureId:a}=e,{anchorLocation:s,y:i,data:{radiusPx:l}}=u,d=o=>{const{onFeatureMouseDown:t,feature:r}=e;return t?.(o,r.id())},f=o=>{const{onFeatureMouseEnter:t,feature:r}=e;return t?.(o,r.id())},M=o=>{const{onFeatureMouseOut:t,feature:r}=e;return t?.(o,r.id())},g=o=>{const{onFeatureMouseOver:t,feature:r}=e;return t?.(o,r.id())},b=o=>{const{onFeatureMouseUp:t,feature:r}=e;return t?.(o,r.id())},y=o=>{const{onFeatureMouseLeave:t,feature:r}=e;return t?.(o,r.id())},p=o=>{const{onFeatureMouseMove:t,feature:r}=e;return t?.(o,r.id())},v=o=>{const{onFeatureClick:t,feature:r}=e;return o.stopPropagation(),t?.(o,r.id())},h={fill:(0,n.readConfObject)(t,"strokeColor",{feature:o})};String(a)===String(o.id())&&(h.fill="red");const O={fill:(0,n.readConfObject)(t,"innerColor",{feature:o})},C=(0,n.readConfObject)(t,"strokeWidth",{feature:o});return r.createElement("g",{"data-testid":o.id()},r.createElement("title",null,(0,n.readConfObject)(t,"caption",{feature:o})),r.createElement("circle",{cx:s,cy:i+l,r:l,style:h,onMouseDown:d,onMouseEnter:f,onMouseOut:M,onMouseOver:g,onMouseUp:b,onMouseLeave:y,onMouseMove:p,onClick:v,onFocus:g,onBlur:M}),l-C<=2?null:r.createElement("circle",{cx:s,cy:i+l,r:l-C,style:O,onMouseDown:d,onMouseEnter:f,onMouseOut:M,onMouseOver:g,onMouseUp:b,onMouseLeave:y,onMouseMove:p,onClick:v,onFocus:g,onBlur:M}),r.createElement(c,{feature:o,config:t,layoutRecord:u}))})),l=(0,a.observer)((function({feature:e,config:o,layoutRecord:{anchorLocation:t,y:u,data:{radiusPx:a}}}){return r.createElement("line",{x1:t,y1:0,x2:t,y2:u+2*a,stroke:(0,n.readConfObject)(o,"stickColor",{feature:e}),strokeWidth:(0,n.readConfObject)(o,"stickWidth",{feature:e})})}));function d(){return d=Object.assign?Object.assign.bind():function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},d.apply(null,arguments)}function f(e){const{feature:o,bpPerPx:t,config:r,region:a,layout:s}=e,c=Math.abs(o.get("end")+o.get("start"))/2,i=(0,u.bpToPx)(c,a,t),l=(0,n.readConfObject)(r,"radius",{feature:o});l||console.error(new Error(`lollipop radius ${l} configured for feature ${o.id()}`)),s.add(o.id(),i,2*l,2*l,{featureId:o.id(),anchorX:i,radiusPx:l,score:(0,n.readConfObject)(e.config,"score",{feature:o})})}const M=(0,a.observer)((function(e){const o=o=>{const{onMouseEnter:t}=e;return t?.(o)},t=o=>{const{onMouseLeave:t}=e;return t?.(o)},{regions:n,bpPerPx:u,layout:a,config:s,features:c=new Map,displayModel:M={}}=e,{selectedFeatureId:g}=M,b=n[0];for(const e of c.values())f({feature:e,bpPerPx:u,region:b,config:s,layout:a});const y=(b.end-b.start)/u,p=[...a.getLayout(s).values()],v=a.getTotalHeight();return r.createElement("svg",{width:y,height:v,style:{position:"relative"},onMouseDown:o=>{const{onMouseDown:t}=e;return t?.(o)},onMouseUp:o=>{const{onMouseUp:t}=e;return t?.(o)},onMouseEnter:o,onMouseLeave:t,onMouseOver:o=>{const{onMouseOver:t}=e;return t?.(o)},onMouseOut:o=>{const{onMouseOut:t}=e;return t?.(o)},onFocus:o,onBlur:t,onClick:o=>{const{onClick:t}=e;return t?.(o)}},p.map((o=>{const t=c.get(o.data.featureId);return r.createElement(r.Fragment,{key:t.id()},r.createElement(l,d({key:`stick-${t.id()}`},e,{config:s,layoutRecord:o,feature:t})),r.createElement(i,d({key:`body-${t.id()}`},e,{layoutRecord:o,feature:t,selectedFeatureId:g})))})))}))}}]);
+//# sourceMappingURL=6861.66a2e4c0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6861.66a2e4c0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6861.66a2e4c0.chunk.js","mappings":"iNAQe,SAASA,GAAU,QAChCC,EAAO,OACPC,EACAC,cAAc,EACZC,EACAC,MAAM,QAAEC,EAAO,SAAEC,EAAQ,MAAEC,MAU7B,MAAMC,GAAaC,EAAAA,EAAAA,gBAAeR,EAAQ,aAAc,CAAED,YAEpDU,EAAcC,OAAOJ,GAErBK,EADwB,EAAXN,EAAgBI,EAAYG,OAChB,IAC/B,OAAID,EAAa,GACR,KAGPE,EAAAA,cAAA,QACEC,MAAO,CAAEC,SAAUJ,EAAYK,MAAMC,EAAAA,EAAAA,sBAAqBV,IAC1DW,EAAGd,EACHF,EAAGA,EAAIG,EAAWM,EAAa,IAC/BQ,WAAW,SACXC,iBAAiB,WAEhBX,EAGP,CCrCA,MA4GA,GA5GiBY,EAAAA,EAAAA,WAAS,SAAkBC,GAC1C,MAAM,QAAEvB,EAAO,OAAEC,EAAM,aAAEC,EAAY,kBAAEsB,GAAsBD,GACvD,eACJE,EAAc,EACdtB,EACAC,MAAM,SAAEE,IACNJ,EAEEwB,EAAsBC,IAC1B,MAAQD,mBAAoBE,EAAO,QAAE5B,GAAYuB,EACjD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCC,EAAuBH,IAC3B,MAAQG,oBAAqBF,EAAO,QAAE5B,GAAYuB,EAClD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCE,EAAqBJ,IACzB,MAAQI,kBAAmBH,EAAO,QAAE5B,GAAYuB,EAChD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCG,EAAsBL,IAC1B,MAAQK,mBAAoBJ,EAAO,QAAE5B,GAAYuB,EACjD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCI,EAAoBN,IACxB,MAAQM,iBAAkBL,EAAO,QAAE5B,GAAYuB,EAC/C,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCK,EAAuBP,IAC3B,MAAQO,oBAAqBN,EAAO,QAAE5B,GAAYuB,EAClD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCM,EAAsBR,IAC1B,MAAQQ,mBAAoBP,EAAO,QAAE5B,GAAYuB,EACjD,OAAOK,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCO,EAAkBT,IACtB,MAAQS,eAAgBR,EAAO,QAAE5B,GAAYuB,EAE7C,OADAI,EAAMU,kBACCT,IAAUD,EAAO3B,EAAQ6B,KAAK,EAGjCS,EAAa,CACjBrB,MAAMR,EAAAA,EAAAA,gBAAeR,EAAQ,cAAe,CAAED,aAE5CW,OAAOa,KAAuBb,OAAOX,EAAQ6B,QAC/CS,EAAWrB,KAAO,OAGpB,MAAMsB,EAAa,CACjBtB,MAAMR,EAAAA,EAAAA,gBAAeR,EAAQ,aAAc,CAAED,aAGzCwC,GAAc/B,EAAAA,EAAAA,gBAAeR,EAAQ,cAAe,CAAED,YAE5D,OACEc,EAAAA,cAAA,KAAG,cAAad,EAAQ6B,MACtBf,EAAAA,cAAA,cAAQL,EAAAA,EAAAA,gBAAeR,EAAQ,UAAW,CAAED,aAC5Cc,EAAAA,cAAA,UACE2B,GAAIhB,EACJiB,GAAIvC,EAAIG,EACRqC,EAAGrC,EACHS,MAAOuB,EACPM,YAAalB,EACbmB,aAAcf,EACdgB,WAAYf,EACZgB,YAAaf,EACbgB,UAAWf,EACXgB,aAAcf,EACdgB,YAAaf,EACbgB,QAASf,EACTgB,QAASpB,EACTqB,OAAQtB,IAETzB,EAAWkC,GAAe,EAAI,KAC7B1B,EAAAA,cAAA,UACE2B,GAAIhB,EACJiB,GAAIvC,EAAIG,EACRqC,EAAGrC,EAAWkC,EACdzB,MAAOwB,EACPK,YAAalB,EACbmB,aAAcf,EACdgB,WAAYf,EACZgB,YAAaf,EACbgB,UAAWf,EACXgB,aAAcf,EACdgB,YAAaf,EACbgB,QAASf,EACTgB,QAASpB,EACTqB,OAAQtB,IAGZjB,EAAAA,cAACf,EAAS,CACRC,QAASA,EACTC,OAAQA,EACRC,aAAcA,IAItB,IC1EA,GA7BcoB,EAAAA,EAAAA,WAAS,UAAe,QACpCtB,EAAO,OACPC,EACAC,cAAc,eACZuB,EAAc,EACdtB,EACAC,MAAM,SAAEE,MAWV,OACEQ,EAAAA,cAAA,QACEwC,GAAI7B,EACJ8B,GAAI,EACJC,GAAI/B,EACJgC,GAAItD,EAAI,EAAIG,EACZoD,QAAQjD,EAAAA,EAAAA,gBAAeR,EAAQ,aAAc,CAAED,YAC/CwC,aAAa/B,EAAAA,EAAAA,gBAAeR,EAAQ,aAAc,CAAED,aAG1D,I,wNCvBA,SAAS2D,EAAWC,GAOlB,MAAM,QAAE5D,EAAO,QAAE6D,EAAO,OAAE5D,EAAM,OAAE6D,EAAM,OAAEC,GAAWH,EAE/CI,EAAWC,KAAKC,IAAIlE,EAAQmE,IAAI,OAASnE,EAAQmE,IAAI,UAAY,EACjEC,GAAWC,EAAAA,EAAAA,QAAOL,EAAUF,EAAQD,GACpCvD,GAAWG,EAAAA,EAAAA,gBAAeR,EAAQ,SAAU,CAAED,YAE/CM,GACHgE,QAAQC,MACN,IAAIC,MACF,mBAAmBlE,4BAAmCN,EAAQ6B,SAIpEkC,EAAOU,IAAIzE,EAAQ6B,KAAMuC,EAAqB,EAAX9D,EAAyB,EAAXA,EAAc,CAC7DoE,UAAW1E,EAAQ6B,KACnBxB,QAAS+D,EACT9D,WACAC,OAAOE,EAAAA,EAAAA,gBAAemD,EAAK3D,OAAQ,QAAS,CAAED,aAElD,CAEA,MAoGA,GApG0BsB,EAAAA,EAAAA,WAAS,SAAUC,GAC3C,MAUMsB,EAAgBlB,IACpB,MAAQkB,aAAcjB,GAAYL,EAClC,OAAOK,IAAUD,EAAM,EAGnBsB,EAAgBtB,IACpB,MAAQsB,aAAcrB,GAAYL,EAClC,OAAOK,IAAUD,EAAM,GAkBnB,QACJgD,EAAO,QACPd,EAAO,OACPE,EAAM,OACN9D,EAAM,SACN2E,EAAW,IAAIC,IAAK,aACpBC,EAAe,CAAC,GACdvD,GACE,kBAAEC,GAAsBsD,EACxBhB,EAASa,EAAQ,GACvB,IAAK,MAAM3E,KAAW4E,EAASG,SAC7BpB,EAAW,CACT3D,UACA6D,UACAC,SACA7D,SACA8D,WAIJ,MAAMiB,GAASlB,EAAOmB,IAAMnB,EAAOoB,OAASrB,EACtCsB,EAAU,IAAIpB,EAAOqB,UAAUnF,GAAQ8E,UACvCM,EAAStB,EAAOuB,iBAEtB,OACExE,EAAAA,cAAA,OACEkE,MAAOA,EACPK,OAAQA,EACRtE,MAAO,CAAEwE,SAAU,YACnB3C,YAhEiBjB,IACnB,MAAQiB,YAAahB,GAAYL,EACjC,OAAOK,IAAUD,EAAM,EA+DrBqB,UA5DerB,IACjB,MAAQqB,UAAWpB,GAAYL,EAC/B,OAAOK,IAAUD,EAAM,EA2DrBkB,aAAcA,EACdI,aAAcA,EACdF,YAhDiBpB,IACnB,MAAQoB,YAAanB,GAAYL,EACjC,OAAOK,IAAUD,EAAM,EA+CrBmB,WA5CgBnB,IAClB,MAAQmB,WAAYlB,GAAYL,EAChC,OAAOK,IAAUD,EAAM,EA2CrByB,QAASP,EACTQ,OAAQJ,EACRE,QA1CaxB,IACf,MAAQwB,QAASvB,GAAYL,EAC7B,OAAOK,IAAUD,EAAM,GA0CpBwD,EAAQK,KAAItF,IACX,MAAMF,EAAU4E,EAAST,IAAIjE,EAAaE,KAAKsE,WAC/C,OACE5D,EAAAA,cAACA,EAAAA,SAAc,CAAC2E,IAAKzF,EAAQ6B,MAC3Bf,EAAAA,cAAC4E,EAAKC,EAAA,CACJF,IAAK,SAASzF,EAAQ6B,QAClBN,EAAK,CACTtB,OAAQA,EACRC,aAAcA,EACdF,QAASA,KAEXc,EAAAA,cAAC8E,EAAQD,EAAA,CACPF,IAAK,QAAQzF,EAAQ6B,QACjBN,EAAK,CACTrB,aAAcA,EACdF,QAASA,EACTwB,kBAAmBA,KAEN,IAK3B,G","sources":["../../../plugins/lollipop/src/LollipopRenderer/components/ScoreText.tsx","../../../plugins/lollipop/src/LollipopRenderer/components/Lollipop.tsx","../../../plugins/lollipop/src/LollipopRenderer/components/Stick.tsx","../../../plugins/lollipop/src/LollipopRenderer/components/LollipopRendering.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { contrastingTextColor } from '@jbrowse/core/util/color'\nimport { Feature } from '@jbrowse/core/util'\n\nexport default function ScoreText({\n  feature,\n  config,\n  layoutRecord: {\n    y,\n    data: { anchorX, radiusPx, score },\n  },\n}: {\n  feature: Feature\n  config: AnyConfigurationModel\n  layoutRecord: {\n    y: number\n    data: { anchorX: number; radiusPx: number; score: number }\n  }\n}) {\n  const innerColor = readConfObject(config, 'innerColor', { feature })\n\n  const scoreString = String(score)\n  const fontWidth = (radiusPx * 2) / scoreString.length\n  const fontHeight = fontWidth * 1.1\n  if (fontHeight < 12) {\n    return null\n  }\n  return (\n    <text\n      style={{ fontSize: fontHeight, fill: contrastingTextColor(innerColor) }}\n      x={anchorX}\n      y={y + radiusPx - fontHeight / 2.4}\n      textAnchor=\"middle\"\n      dominantBaseline=\"hanging\"\n    >\n      {scoreString}\n    </text>\n  )\n}\n","import React from 'react'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\nimport ScoreText from './ScoreText'\n\nconst Lollipop = observer(function Lollipop(props: Record<string, any>) {\n  const { feature, config, layoutRecord, selectedFeatureId } = props\n  const {\n    anchorLocation,\n    y,\n    data: { radiusPx },\n  } = layoutRecord\n\n  const onFeatureMouseDown = (event: React.MouseEvent) => {\n    const { onFeatureMouseDown: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseEnter = (event: React.MouseEvent) => {\n    const { onFeatureMouseEnter: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseOut = (event: React.MouseEvent | React.FocusEvent) => {\n    const { onFeatureMouseOut: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseOver = (event: React.MouseEvent | React.FocusEvent) => {\n    const { onFeatureMouseOver: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseUp = (event: React.MouseEvent) => {\n    const { onFeatureMouseUp: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseLeave = (event: React.MouseEvent) => {\n    const { onFeatureMouseLeave: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureMouseMove = (event: React.MouseEvent) => {\n    const { onFeatureMouseMove: handler, feature } = props\n    return handler?.(event, feature.id())\n  }\n\n  const onFeatureClick = (event: React.MouseEvent) => {\n    const { onFeatureClick: handler, feature } = props\n    event.stopPropagation()\n    return handler?.(event, feature.id())\n  }\n\n  const styleOuter = {\n    fill: readConfObject(config, 'strokeColor', { feature }),\n  }\n  if (String(selectedFeatureId) === String(feature.id())) {\n    styleOuter.fill = 'red'\n  }\n\n  const styleInner = {\n    fill: readConfObject(config, 'innerColor', { feature }),\n  }\n\n  const strokeWidth = readConfObject(config, 'strokeWidth', { feature })\n\n  return (\n    <g data-testid={feature.id()}>\n      <title>{readConfObject(config, 'caption', { feature })}</title>\n      <circle\n        cx={anchorLocation}\n        cy={y + radiusPx}\n        r={radiusPx}\n        style={styleOuter}\n        onMouseDown={onFeatureMouseDown}\n        onMouseEnter={onFeatureMouseEnter}\n        onMouseOut={onFeatureMouseOut}\n        onMouseOver={onFeatureMouseOver}\n        onMouseUp={onFeatureMouseUp}\n        onMouseLeave={onFeatureMouseLeave}\n        onMouseMove={onFeatureMouseMove}\n        onClick={onFeatureClick}\n        onFocus={onFeatureMouseOver}\n        onBlur={onFeatureMouseOut}\n      />\n      {radiusPx - strokeWidth <= 2 ? null : (\n        <circle\n          cx={anchorLocation}\n          cy={y + radiusPx}\n          r={radiusPx - strokeWidth}\n          style={styleInner}\n          onMouseDown={onFeatureMouseDown}\n          onMouseEnter={onFeatureMouseEnter}\n          onMouseOut={onFeatureMouseOut}\n          onMouseOver={onFeatureMouseOver}\n          onMouseUp={onFeatureMouseUp}\n          onMouseLeave={onFeatureMouseLeave}\n          onMouseMove={onFeatureMouseMove}\n          onClick={onFeatureClick}\n          onFocus={onFeatureMouseOver}\n          onBlur={onFeatureMouseOut}\n        />\n      )}\n      <ScoreText\n        feature={feature}\n        config={config}\n        layoutRecord={layoutRecord}\n      />\n    </g>\n  )\n})\n\nexport default Lollipop\n","import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util'\n\nconst Stick = observer(function Stick({\n  feature,\n  config,\n  layoutRecord: {\n    anchorLocation,\n    y,\n    data: { radiusPx },\n  },\n}: {\n  feature: Feature\n  config: AnyConfigurationModel\n  layoutRecord: {\n    anchorLocation: number\n    y: number\n    data: { radiusPx: number }\n  }\n}) {\n  return (\n    <line\n      x1={anchorLocation}\n      y1={0}\n      x2={anchorLocation}\n      y2={y + 2 * radiusPx}\n      stroke={readConfObject(config, 'stickColor', { feature })}\n      strokeWidth={readConfObject(config, 'stickWidth', { feature })}\n    />\n  )\n})\n\nexport default Stick\n","import React from 'react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { Feature, Region, bpToPx } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\n// locals\nimport Lollipop from './Lollipop'\nimport Stick from './Stick'\n\nfunction layoutFeat(args: {\n  feature: Feature\n  bpPerPx: number\n  region: Region\n  layout: { add: (...args: unknown[]) => void }\n  config: AnyConfigurationModel\n}) {\n  const { feature, bpPerPx, config, region, layout } = args\n\n  const centerBp = Math.abs(feature.get('end') + feature.get('start')) / 2\n  const centerPx = bpToPx(centerBp, region, bpPerPx)\n  const radiusPx = readConfObject(config, 'radius', { feature })\n\n  if (!radiusPx) {\n    console.error(\n      new Error(\n        `lollipop radius ${radiusPx} configured for feature ${feature.id()}`,\n      ),\n    )\n  }\n  layout.add(feature.id(), centerPx, radiusPx * 2, radiusPx * 2, {\n    featureId: feature.id(),\n    anchorX: centerPx,\n    radiusPx,\n    score: readConfObject(args.config, 'score', { feature }),\n  })\n}\n\nconst LollipopRendering = observer(function (props: Record<string, any>) {\n  const onMouseDown = (event: React.MouseEvent) => {\n    const { onMouseDown: handler } = props\n    return handler?.(event)\n  }\n\n  const onMouseUp = (event: React.MouseEvent) => {\n    const { onMouseUp: handler } = props\n    return handler?.(event)\n  }\n\n  const onMouseEnter = (event: React.MouseEvent | React.FocusEvent) => {\n    const { onMouseEnter: handler } = props\n    return handler?.(event)\n  }\n\n  const onMouseLeave = (event: React.MouseEvent | React.FocusEvent) => {\n    const { onMouseLeave: handler } = props\n    return handler?.(event)\n  }\n\n  const onMouseOver = (event: React.MouseEvent) => {\n    const { onMouseOver: handler } = props\n    return handler?.(event)\n  }\n\n  const onMouseOut = (event: React.MouseEvent) => {\n    const { onMouseOut: handler } = props\n    return handler?.(event)\n  }\n\n  const onClick = (event: React.MouseEvent) => {\n    const { onClick: handler } = props\n    return handler?.(event)\n  }\n\n  const {\n    regions,\n    bpPerPx,\n    layout,\n    config,\n    features = new Map(),\n    displayModel = {},\n  } = props\n  const { selectedFeatureId } = displayModel\n  const region = regions[0]!\n  for (const feature of features.values()) {\n    layoutFeat({\n      feature,\n      bpPerPx,\n      region,\n      config,\n      layout,\n    })\n  }\n\n  const width = (region.end - region.start) / bpPerPx\n  const records = [...layout.getLayout(config).values()]\n  const height = layout.getTotalHeight()\n\n  return (\n    <svg\n      width={width}\n      height={height}\n      style={{ position: 'relative' }}\n      onMouseDown={onMouseDown}\n      onMouseUp={onMouseUp}\n      onMouseEnter={onMouseEnter}\n      onMouseLeave={onMouseLeave}\n      onMouseOver={onMouseOver}\n      onMouseOut={onMouseOut}\n      onFocus={onMouseEnter}\n      onBlur={onMouseLeave}\n      onClick={onClick}\n    >\n      {records.map(layoutRecord => {\n        const feature = features.get(layoutRecord.data.featureId)\n        return (\n          <React.Fragment key={feature.id()}>\n            <Stick\n              key={`stick-${feature.id()}`}\n              {...props}\n              config={config}\n              layoutRecord={layoutRecord}\n              feature={feature}\n            />\n            <Lollipop\n              key={`body-${feature.id()}`}\n              {...props}\n              layoutRecord={layoutRecord}\n              feature={feature}\n              selectedFeatureId={selectedFeatureId}\n            />\n          </React.Fragment>\n        )\n      })}\n    </svg>\n  )\n})\n\nexport default LollipopRendering\n"],"names":["ScoreText","feature","config","layoutRecord","y","data","anchorX","radiusPx","score","innerColor","readConfObject","scoreString","String","fontHeight","length","React","style","fontSize","fill","contrastingTextColor","x","textAnchor","dominantBaseline","observer","props","selectedFeatureId","anchorLocation","onFeatureMouseDown","event","handler","id","onFeatureMouseEnter","onFeatureMouseOut","onFeatureMouseOver","onFeatureMouseUp","onFeatureMouseLeave","onFeatureMouseMove","onFeatureClick","stopPropagation","styleOuter","styleInner","strokeWidth","cx","cy","r","onMouseDown","onMouseEnter","onMouseOut","onMouseOver","onMouseUp","onMouseLeave","onMouseMove","onClick","onFocus","onBlur","x1","y1","x2","y2","stroke","layoutFeat","args","bpPerPx","region","layout","centerBp","Math","abs","get","centerPx","bpToPx","console","error","Error","add","featureId","regions","features","Map","displayModel","values","width","end","start","records","getLayout","height","getTotalHeight","position","map","key","Stick","_extends","Lollipop"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6932.a37ea756.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6932],{36932:(e,t,n)=>{n.r(t),n.d(t,{default:()=>W});var l=n(7552),o=n(29499),a=n(5401),r=n(58507),c=n(75785),i=n(99546),s=n(33039),u=n.n(s),m=n(943),d=n(40985),h=n(2187),g=n(43163),p=n(61723),E=n(24387),f=n(68446),b=n(21254),C=n.n(b),w=n(30157);function v(){return v=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},v.apply(null,arguments)}const k=(0,c.n9)()((e=>({closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}})));function A(e){const t=(0,l.useRef)(null);return l.createElement(C(),{nodeRef:t,cancel:'[class*="MuiDialogContent-root"]',onStart:e=>e.target?.className?.includes("MuiDialogTitle")},l.createElement(m.A,v({ref:t},e)))}const S=(0,f.observer)((function(e){const{classes:t}=k(),{title:n,children:o,onClose:a}=e;return l.createElement(d.A,v({},e,{PaperComponent:A}),l.createElement(h.A,null,l.createElement(g.A,{style:{cursor:"move"}},n,a?l.createElement(p.A,{className:t.closeButton,onClick:()=>{a()}},l.createElement(w.A,null)):null),l.createElement(E.A,null),o))}));var y=n(85676),M=n(66395),x=n(49823),O=n(58474),T=n(42281),N=n(91388),H=n(66195),j=n(21430);const B=(0,c.n9)()({cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}),L=function({rows:e,onChange:t,showTips:n}){const{classes:o}=B(),[r,c]=(0,l.useState)(null),[s,u]=(0,l.useState)([]),{name:m,color:d,baseUri:h,...g}=e[0],[p,E]=(0,l.useState)("blue"),[f,b]=(0,l.useState)({idx:0,field:null});return l.createElement("div",null,l.createElement(a.A,{disabled:!s.length,onClick:e=>{c(e.currentTarget)}},"Change color of selected items"),l.createElement(a.A,{onClick:()=>{t((0,O.BO)([...e],s))},disabled:!s.length},l.createElement(j.A,null),n?"Move selected items up":null),l.createElement(a.A,{onClick:()=>{t((0,O.oJ)([...e],s))},disabled:!s.length},l.createElement(H.A,null),n?"Move selected items down":null),l.createElement(a.A,{onClick:()=>{t((0,O.BO)([...e],s,e.length))},disabled:!s.length},l.createElement(T.A,null),n?"Move selected items to top":null),l.createElement(a.A,{onClick:()=>{t((0,O.oJ)([...e],s,e.length))},disabled:!s.length},l.createElement(N.A,null),n?"Move selected items to bottom":null),l.createElement(M.FO,{anchorEl:r,color:p,onChange:n=>{E(n),s.forEach((t=>{const l=e.find((e=>e.name===t));l&&(l.color=n)})),t([...e])},onClose:()=>{c(null)}}),l.createElement("div",{style:{height:400,width:"100%"}},l.createElement(y.z,{getRowId:e=>e.name,checkboxSelection:!0,disableRowSelectionOnClick:!0,onRowSelectionModelChange:e=>{u(e)},rows:e,rowHeight:25,columnHeaderHeight:33,columns:[{field:"color",headerName:"Color",renderCell:n=>{const{value:o,id:a}=n;return l.createElement(M.Ay,{color:o||"blue",onChange:n=>{const l=e.find((e=>e.name===a));l&&(l.color=n),t([...e])}})}},{field:"name",headerName:"Name",width:(0,i.measureGridWidth)(e.map((e=>e.name)))},...Object.keys(g).map((t=>({field:t,renderCell:({value:e})=>l.createElement("div",{className:o.cell},l.createElement(x.SanitizedHTML,{html:(0,i.getStr)(e)})),width:(0,i.measureGridWidth)(e.map((e=>`${e[t]}`)))})))],sortModel:[],onSortModelChange:n=>{const l=n[0],o=(f.idx+1)%2,a=l.field||f.field;b({idx:o,field:a}),t(a?[...e].sort(((e,t)=>{const n=(0,i.getStr)(e[a]),l=(0,i.getStr)(t[a]);return 1===o?n.localeCompare(l):l.localeCompare(n)})):e)}})))},R=(0,c.n9)()({content:{minWidth:800}});function W({model:e,handleClose:t}){const{classes:n}=R(),{sources:c}=e,[s,m]=(0,l.useState)(u()(c||[])),[d,h]=(0,i.useLocalStorage)("multiwiggle-showTips",!0);return l.createElement(S,{open:!0,onClose:t,maxWidth:"xl",title:"Multi-wiggle color/arrangement editor"},l.createElement(o.A,{className:n.content},l.createElement(a.A,{variant:"contained",style:{float:"right"},onClick:()=>{h(!d)}},d?"Hide tips":"Show tips"),l.createElement("br",null),d?l.createElement(l.Fragment,null,"Helpful tips",l.createElement("ul",null,l.createElement("li",null,"You can select rows in the table with the checkboxes"),l.createElement("li",null,"Multi-select is enabled with shift-click and control-click"),l.createElement("li",null,'The "Move selected items up/down" can re-arrange subtracks'),l.createElement("li",null,"Sorting the data grid itself can also re-arrange subtracks"),l.createElement("li",null,"Changes are applied when you hit Submit"),l.createElement("li",null,"You can click and drag the dialog box to move it on the screen"),l.createElement("li",null,"Columns in the table can be hidden using a vertical '...' menu on the right side of each column"))):null,l.createElement(L,{rows:s,onChange:m,showTips:d})),l.createElement(r.A,null,l.createElement(a.A,{variant:"contained",type:"submit",color:"inherit",onClick:()=>{e.clearLayout(),m(e.sources||[])}},"Clear custom settings"),l.createElement(a.A,{variant:"contained",color:"secondary",onClick:()=>{t(),m([...e.sources||[]])}},"Cancel"),l.createElement(a.A,{variant:"contained",color:"primary",type:"submit",onClick:()=>{e.setLayout(s),t()}},"Submit")))}},58474:(e,t,n)=>{n.d(t,{A3:()=>i,BO:()=>a,oJ:()=>r});var l=n(99546),o=n(68584);function a(e,t,n=1){const l=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>e-t));let o=0;for(const t of l){const l=Math.max(o,t-n);l>=o&&e.splice(l,0,e.splice(t,1)[0]),o+=1}return e}function r(e,t,n=1){const l=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>t-e));let o=e.length-1;for(const t of l){const l=Math.min(o,t+n);l<=o&&e.splice(l,0,e.splice(t,1)[0]),o-=1}return e}const c=12.8;function i(e){const{prefersOffset:t}=e,{trackLabels:n}=(0,l.getContainingView)(e),a=(0,l.getContainingTrack)(e),r=(0,o.getConf)(a,"name");return"overlapping"!==n||t?10:(0,l.measureText)(r,c)+100}}}]);
+//# sourceMappingURL=6932.a37ea756.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6932.a37ea756.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6932.a37ea756.chunk.js","mappings":"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","sources":["../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/DraggableDialog.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/SourcesGrid.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/util.ts"],"sourcesContent":["import React, { useRef } from 'react'\nimport {\n  Dialog,\n  DialogTitle,\n  IconButton,\n  Divider,\n  DialogProps,\n  Paper,\n  ScopedCssBaseline,\n  PaperProps,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport Draggable from 'react-draggable'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n\nconst useStyles = makeStyles()(theme => ({\n  closeButton: {\n    position: 'absolute',\n    right: theme.spacing(1),\n    top: theme.spacing(1),\n    color: theme.palette.grey[500],\n  },\n}))\n\nfunction PaperComponent(props: PaperProps) {\n  const ref = useRef<HTMLDivElement>(null)\n  return (\n    <Draggable\n      nodeRef={ref}\n      cancel={'[class*=\"MuiDialogContent-root\"]'}\n      // @ts-expect-error\n      onStart={arg => arg.target?.className?.includes('MuiDialogTitle')}\n    >\n      <Paper ref={ref} {...props} />\n    </Draggable>\n  )\n}\n\nconst DraggableDialog = observer(function DraggableDialog(\n  props: DialogProps & { title: string },\n) {\n  const { classes } = useStyles()\n  const { title, children, onClose } = props\n\n  return (\n    <Dialog {...props} PaperComponent={PaperComponent}>\n      <ScopedCssBaseline>\n        <DialogTitle style={{ cursor: 'move' }}>\n          {title}\n          {onClose ? (\n            <IconButton\n              className={classes.closeButton}\n              onClick={() => {\n                // @ts-expect-error\n                onClose()\n              }}\n            >\n              <CloseIcon />\n            </IconButton>\n          ) : null}\n        </DialogTitle>\n        <Divider />\n        {children}\n      </ScopedCssBaseline>\n    </Dialog>\n  )\n})\n\nexport default DraggableDialog\n","import React, { useState } from 'react'\nimport { Button } from '@mui/material'\nimport { getStr, measureGridWidth } from '@jbrowse/core/util'\nimport { DataGrid, GridColDef } from '@mui/x-data-grid'\nimport { makeStyles } from 'tss-react/mui'\nimport ColorPicker, { ColorPopover } from '@jbrowse/core/ui/ColorPicker'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\n\n// locals\nimport { moveUp, moveDown } from './util'\nimport { Source } from '../../util'\n\n// icons\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp'\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'\n\nconst useStyles = makeStyles()({\n  cell: {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n  },\n})\n\ninterface SortField {\n  idx: number\n  field: string | null\n}\n\nfunction SourcesGrid({\n  rows,\n  onChange,\n  showTips,\n}: {\n  rows: Source[]\n  onChange: (arg: Source[]) => void\n  showTips: boolean\n}) {\n  const { classes } = useStyles()\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n  const [selected, setSelected] = useState([] as string[])\n  const { name: _name, color: _color, baseUri: _baseUri, ...rest } = rows[0]!\n  const [widgetColor, setWidgetColor] = useState('blue')\n  const [currSort, setCurrSort] = useState<SortField>({\n    idx: 0,\n    field: null,\n  })\n\n  return (\n    <div>\n      <Button\n        disabled={!selected.length}\n        onClick={event => {\n          setAnchorEl(event.currentTarget)\n        }}\n      >\n        Change color of selected items\n      </Button>\n      <Button\n        onClick={() => {\n          onChange(moveUp([...rows], selected))\n        }}\n        disabled={!selected.length}\n      >\n        <KeyboardArrowUpIcon />\n        {showTips ? 'Move selected items up' : null}\n      </Button>\n      <Button\n        onClick={() => {\n          onChange(moveDown([...rows], selected))\n        }}\n        disabled={!selected.length}\n      >\n        <KeyboardArrowDownIcon />\n        {showTips ? 'Move selected items down' : null}\n      </Button>\n      <Button\n        onClick={() => {\n          onChange(moveUp([...rows], selected, rows.length))\n        }}\n        disabled={!selected.length}\n      >\n        <KeyboardDoubleArrowUpIcon />\n        {showTips ? 'Move selected items to top' : null}\n      </Button>\n      <Button\n        onClick={() => {\n          onChange(moveDown([...rows], selected, rows.length))\n        }}\n        disabled={!selected.length}\n      >\n        <KeyboardDoubleArrowDownIcon />\n        {showTips ? 'Move selected items to bottom' : null}\n      </Button>\n      <ColorPopover\n        anchorEl={anchorEl}\n        color={widgetColor}\n        onChange={c => {\n          setWidgetColor(c)\n          selected.forEach(id => {\n            const elt = rows.find(f => f.name === id)\n            if (elt) {\n              elt.color = c\n            }\n          })\n\n          onChange([...rows])\n        }}\n        onClose={() => {\n          setAnchorEl(null)\n        }}\n      />\n      <div style={{ height: 400, width: '100%' }}>\n        <DataGrid\n          getRowId={row => row.name}\n          checkboxSelection\n          disableRowSelectionOnClick\n          onRowSelectionModelChange={arg => {\n            setSelected(arg as string[])\n          }}\n          rows={rows}\n          rowHeight={25}\n          columnHeaderHeight={33}\n          columns={[\n            {\n              field: 'color',\n              headerName: 'Color',\n              renderCell: params => {\n                const { value, id } = params\n                return (\n                  <ColorPicker\n                    color={value || 'blue'}\n                    onChange={c => {\n                      const elt = rows.find(f => f.name === id)\n                      if (elt) {\n                        elt.color = c\n                      }\n                      onChange([...rows])\n                    }}\n                  />\n                )\n              },\n            },\n            {\n              field: 'name',\n              headerName: 'Name',\n              width: measureGridWidth(rows.map(r => r.name)),\n            },\n            ...Object.keys(rest).map(\n              val =>\n                ({\n                  field: val,\n                  renderCell: ({ value }) => (\n                    <div className={classes.cell}>\n                      <SanitizedHTML html={getStr(value)} />\n                    </div>\n                  ),\n                  width: measureGridWidth(\n                    rows.map(r => `${r[val as keyof Source]}`),\n                  ),\n                }) satisfies GridColDef<(typeof rows)[0]>,\n            ),\n          ]}\n          sortModel={\n            [\n              /* we control the sort as a controlled component using onSortModelChange */\n            ]\n          }\n          onSortModelChange={args => {\n            const sort = args[0]\n            // this idx%2 flip flops the sorting order, we could inspect args\n            // for sort direction asc or desc but this is just a simplified\n            // thing since we are controlling sort instead of the default data\n            // grid sort anyways\n            const idx = (currSort.idx + 1) % 2\n            const field = sort!.field || currSort.field\n            setCurrSort({ idx, field })\n            onChange(\n              field\n                ? [...rows].sort((a, b) => {\n                    const aa = getStr(a[field as keyof Source])\n                    const bb = getStr(b[field as keyof Source])\n                    return idx === 1\n                      ? aa.localeCompare(bb)\n                      : bb.localeCompare(aa)\n                  })\n                : rows,\n            )\n          }}\n        />\n      </div>\n    </div>\n  )\n}\n\nexport default SourcesGrid\n","import React, { useState } from 'react'\nimport { Button, DialogContent, DialogActions } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { useLocalStorage } from '@jbrowse/core/util'\nimport clone from 'clone'\n\n// locals\nimport DraggableDialog from './DraggableDialog'\nimport { Source } from '../../util'\nimport SourcesGrid from './SourcesGrid'\n\nconst useStyles = makeStyles()({\n  content: {\n    minWidth: 800,\n  },\n})\n\nexport default function SetColorDialog({\n  model,\n  handleClose,\n}: {\n  model: {\n    sources?: Source[]\n    setLayout: (s: Source[]) => void\n    clearLayout: () => void\n  }\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const { sources } = model\n  const [currLayout, setCurrLayout] = useState(clone(sources || []))\n  const [showTips, setShowTips] = useLocalStorage('multiwiggle-showTips', true)\n  return (\n    <DraggableDialog\n      open\n      onClose={handleClose}\n      maxWidth=\"xl\"\n      title={'Multi-wiggle color/arrangement editor'}\n    >\n      <DialogContent className={classes.content}>\n        <Button\n          variant=\"contained\"\n          style={{ float: 'right' }}\n          onClick={() => {\n            setShowTips(!showTips)\n          }}\n        >\n          {showTips ? 'Hide tips' : 'Show tips'}\n        </Button>\n        <br />\n        {showTips ? (\n          <>\n            Helpful tips\n            <ul>\n              <li>You can select rows in the table with the checkboxes</li>\n              <li>\n                Multi-select is enabled with shift-click and control-click\n              </li>\n              <li>\n                The \"Move selected items up/down\" can re-arrange subtracks\n              </li>\n              <li>\n                Sorting the data grid itself can also re-arrange subtracks\n              </li>\n              <li>Changes are applied when you hit Submit</li>\n              <li>\n                You can click and drag the dialog box to move it on the screen\n              </li>\n              <li>\n                Columns in the table can be hidden using a vertical '...' menu\n                on the right side of each column\n              </li>\n            </ul>\n          </>\n        ) : null}\n        <SourcesGrid\n          rows={currLayout}\n          onChange={setCurrLayout}\n          showTips={showTips}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          type=\"submit\"\n          color=\"inherit\"\n          onClick={() => {\n            model.clearLayout()\n            setCurrLayout(model.sources || [])\n          }}\n        >\n          Clear custom settings\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n            setCurrLayout([...(model.sources || [])])\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={() => {\n            model.setLayout(currLayout)\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </DraggableDialog>\n  )\n}\n","import {\n  getContainingTrack,\n  getContainingView,\n  measureText,\n} from '@jbrowse/core/util'\nimport { WiggleDisplayModel } from '../models/model'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\nexport function moveUp(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => a - b)\n  let lastIdx = 0\n  for (const old of idxs) {\n    const idx = Math.max(lastIdx, old - by)\n    if (idx >= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx + 1\n  }\n\n  return arr\n}\n\nexport function moveDown(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => b - a)\n  let lastIdx = arr.length - 1\n  for (const old of idxs) {\n    const idx = Math.min(lastIdx, old + by)\n    if (idx <= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx - 1\n  }\n\n  return arr\n}\n\nconst trackLabelFontSize = 12.8\n\nexport function getOffset(model: WiggleDisplayModel) {\n  const { prefersOffset } = model\n  const { trackLabels } = getContainingView(model) as LinearGenomeViewModel\n  const track = getContainingTrack(model)\n  const trackName = getConf(track, 'name')\n  return trackLabels === 'overlapping' && !prefersOffset\n    ? measureText(trackName, trackLabelFontSize) + 100\n    : 10\n}\n"],"names":["useStyles","makeStyles","theme","closeButton","position","right","spacing","top","color","palette","grey","PaperComponent","props","ref","useRef","React","Draggable","nodeRef","cancel","onStart","arg","target","className","includes","Paper","_extends","observer","classes","title","children","onClose","Dialog","ScopedCssBaseline","DialogTitle","style","cursor","IconButton","onClick","CloseIcon","Divider","cell","whiteSpace","overflow","textOverflow","rows","onChange","showTips","anchorEl","setAnchorEl","useState","selected","setSelected","name","_name","_color","baseUri","_baseUri","rest","widgetColor","setWidgetColor","currSort","setCurrSort","idx","field","Button","disabled","length","event","currentTarget","moveUp","KeyboardArrowUpIcon","moveDown","KeyboardArrowDownIcon","KeyboardDoubleArrowUpIcon","KeyboardDoubleArrowDownIcon","ColorPopover","c","forEach","id","elt","find","f","height","width","DataGrid","getRowId","row","checkboxSelection","disableRowSelectionOnClick","onRowSelectionModelChange","rowHeight","columnHeaderHeight","columns","headerName","renderCell","params","value","ColorPicker","measureGridWidth","map","r","Object","keys","val","SanitizedHTML","html","getStr","sortModel","onSortModelChange","args","sort","a","b","aa","bb","localeCompare","content","minWidth","SetColorDialog","model","handleClose","sources","currLayout","setCurrLayout","clone","setShowTips","useLocalStorage","DraggableDialog","open","maxWidth","DialogContent","variant","float","SourcesGrid","DialogActions","type","clearLayout","setLayout","arr","sel","by","idxs","l","findIndex","v","lastIdx","old","Math","max","splice","min","trackLabelFontSize","getOffset","prefersOffset","trackLabels","getContainingView","track","getContainingTrack","trackName","getConf","measureText"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6946.dd09a891.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6946],{26946:(e,t,a)=>{a.d(t,{drawFeats:()=>m});var o=a(99546),s=a(91476),f=a(68584);function n(e,t,a,o,s,f){a<0&&(e+=a,a=-a),o<0&&(t+=o,o=-o),f&&(s.fillStyle=f),s.fillRect(e,t,a,o)}function r(e,t,a,o,s,f){a<0&&(e+=a,a=-a),o<0&&(t+=o,o=-o),f&&(s.strokeStyle=f),s.strokeRect(e,t,a,o)}var i=a(36917);function c({type:e,v0:t,v1:a,stats:o}){if("insertSizeAndOrientation"===e)return(0,i.sY)(t,a,o);if("orientation"===e)return(0,i.DW)(t);if("insertSize"===e)return(0,i.L9)(t,a,o);if("gradient"===e){const e=Math.min(t.start,a.start),o=Math.max(t.end,a.end);return[`hsl(${10*Math.log10(Math.abs(o-e))},50%,50%)`,`hsl(${10*Math.log10(Math.abs(o-e))},50%,30%)`]}}function m(e,t){const{chainData:a}=e;if(!a)return;const{assemblyManager:m}=(0,o.getSession)(e),h=(0,o.getContainingView)(e),l=h.assemblyNames[0],d=m.get(l);d&&((0,s.d)(a)?function({ctx:e,self:t,chainData:a,view:s,asm:i}){const m=[],h=(0,f.getConf)(t,"featureHeight"),l=t.colorBy?.type||"insertSizeAndOrientation",{chains:d,stats:x}=a;for(const a of d)if(a.length>1){const e=a[0],t=a[1],o=i.getCanonicalRefName(e.refName)||e.refName,f=i.getCanonicalRefName(t.refName)||t.refName,n=s.bpToPx({refName:o,coord:e.start})?.offsetPx,r=s.bpToPx({refName:o,coord:e.end})?.offsetPx,c=s.bpToPx({refName:f,coord:t.start})?.offsetPx,h=s.bpToPx({refName:f,coord:t.end})?.offsetPx;let l=0;if(void 0!==n&&void 0!==r&&void 0!==c&&void 0!==h){if(e.refName===t.refName){const a=Math.min(e.start,t.start),o=Math.max(e.end,t.end);l=Math.abs(o-a)}m.push({r1s:n,r1e:r,r2s:c,r2e:h,v0:e,v1:t,distance:l})}}else if(t.drawSingletons){const t=a[0],o=i.getCanonicalRefName(t.refName)||t.refName,f=s.bpToPx({refName:o,coord:t.start})?.offsetPx,c=s.bpToPx({refName:o,coord:t.end})?.offsetPx;if(void 0!==f&&void 0!==c){const t=Math.max(c-f,2);n(f-s.offsetPx,0,t,h,e,"#f00"),r(f-s.offsetPx,0,t,h,e,"#a00")}}const g=Math.log((0,o.max)(m.map((e=>e.distance)))),N=Math.max(Math.log((0,o.min)(m.map((e=>e.distance))))-1,0),P=(t.height-20)/(g-N);for(const{r1e:t,r1s:a,r2e:o,r2s:f,distance:i,v0:d,v1:g}of m){const m=Math.max(t-a,2),b=Math.max(o-f,2),[M,u]=c({type:l,v0:d,v1:g,stats:x})||[],v=(Math.log(i)-N)*P,p=h/2-.5,w=f-t;n(t-s.offsetPx,v+p,w,1,e,"black"),r(a-s.offsetPx,v,m,h,e,u),r(f-s.offsetPx,v,b,h,e,u),n(a-s.offsetPx,v,m,h,e,M),n(f-s.offsetPx,v,b,h,e,M)}}({self:e,view:h,asm:d,ctx:t,chainData:a}):function({ctx:e,self:t,chainData:a,view:s,asm:c}){const m=[],h=[],{chains:l}=a,{height:d}=t,x=(0,f.getConf)(t,"featureHeight");for(const e of l){let t=Number.MAX_VALUE,a=Number.MIN_VALUE;for(const o of e){const e=c.getCanonicalRefName(o.refName)||o.refName,f=s.bpToPx({refName:e,coord:o.start})?.offsetPx,n=s.bpToPx({refName:e,coord:o.end})?.offsetPx;void 0!==f&&void 0!==n&&(t=Math.min(t,f),a=Math.max(a,n))}const o=Math.abs(a-t);m.push(o),h.push(t)}const g=Math.log((0,o.max)(m)),N=Math.max(Math.log((0,o.min)(m))-1,0),P=(d-20)/(g-N),b=x/2-.5;for(let t=0;t<l.length;t++){const a=l[t],o=m[t],f=(Math.log(o)-N)*P;n(h[t]-s.offsetPx,f+b,o,1,e,"black");const d=a[0];let g;if(2048&d.flags){const e=d.SA?.split(";")[0].split(",")[2];g="-"===e?-1:1}else g=d.strand;for(const t of a){const a=c.getCanonicalRefName(t.refName)||t.refName,o=s.bpToPx({refName:a,coord:t.start})?.offsetPx,m=s.bpToPx({refName:a,coord:t.end})?.offsetPx;if(void 0!==o&&void 0!==m){const a=Math.max(m-o,2),c=o-s.offsetPx,h=-1==t.strand*g?"color_rev_strand":"color_fwd_strand";r(c,f,a,x,e,i.w7[h]),n(c,f,a,x,e,i.pf[h])}}}}({self:e,view:h,asm:d,ctx:t,chainData:a}))}},91476:(e,t,a)=>{function o(e){for(const t of e.chains.values())if(1&t[0].flags)return!0;return!1}a.d(t,{d:()=>o})}}]);
+//# sourceMappingURL=6946.dd09a891.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6946.dd09a891.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6946.dd09a891.chunk.js","mappings":"uLACO,SAASA,EACdC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEIH,EAAQ,IACVF,GAAKE,EACLA,GAASA,GAEPC,EAAS,IACXF,GAAKE,EACLA,GAAUA,GAGRE,IACFD,EAAIE,UAAYD,GAGlBD,EAAIG,SAASP,EAAGC,EAAGC,EAAOC,EAC5B,CAEO,SAASK,EACdR,EACAC,EACAC,EACAC,EACAC,EACAK,GAEIP,EAAQ,IACVF,GAAKE,EACLA,GAASA,GAEPC,EAAS,IACXF,GAAKE,EACLA,GAAUA,GAGRM,IACFL,EAAIM,YAAcD,GAEpBL,EAAIO,WAAWX,EAAGC,EAAGC,EAAOC,EAC9B,C,eCiEO,SAASS,GAAe,KAC7BC,EAAI,GACJC,EAAE,GACFC,EAAE,MACFC,IAOA,GAAa,6BAATH,EACF,OAAOI,EAAAA,EAAAA,IAAuCH,EAAIC,EAAIC,GAExD,GAAa,gBAATH,EACF,OAAOK,EAAAA,EAAAA,IAA0BJ,GAEnC,GAAa,eAATD,EACF,OAAOM,EAAAA,EAAAA,IAAyBL,EAAIC,EAAIC,GAE1C,GAAa,aAATH,EAAqB,CACvB,MAAMO,EAAIC,KAAKC,IAAIR,EAAGS,MAAOR,EAAGQ,OAC1BC,EAAIH,KAAKI,IAAIX,EAAGY,IAAKX,EAAGW,KAC9B,MAAO,CACL,OAAqC,GAA9BL,KAAKM,MAAMN,KAAKO,IAAIJ,EAAIJ,eAC/B,OAAqC,GAA9BC,KAAKM,MAAMN,KAAKO,IAAIJ,EAAIJ,eAEnC,CAEF,CCjIO,SAASS,EACdC,EACA1B,GAEA,MAAM,UAAE2B,GAAcD,EACtB,IAAKC,EACH,OAEF,MAAM,gBAAEC,IAAoBC,EAAAA,EAAAA,YAAWH,GACjCI,GAAOC,EAAAA,EAAAA,mBAAkBL,GACzBM,EAAeF,EAAKG,cAAc,GAClCC,EAAMN,EAAgBO,IAAIH,GAC3BE,KAIaE,EAAAA,EAAAA,GAAeT,GDH5B,UAAwB,IAC7B3B,EAAG,KACH0B,EAAI,UACJC,EAAS,KACTG,EAAI,IACJI,IAQA,MAAMG,EAAuB,GACvBC,GAAgBC,EAAAA,EAAAA,SAAQb,EAAM,iBAC9BjB,EAAOiB,EAAKc,SAAS/B,MAAQ,4BAC7B,OAAEgC,EAAM,MAAE7B,GAAUe,EAE1B,IAAK,MAAMe,KAASD,EAIlB,GAAIC,EAAMC,OAAS,EAAG,CACpB,MAAMjC,EAAKgC,EAAM,GACX/B,EAAK+B,EAAM,GACXE,EAAMV,EAAIW,oBAAoBnC,EAAGoC,UAAYpC,EAAGoC,QAChDC,EAAMb,EAAIW,oBAAoBlC,EAAGmC,UAAYnC,EAAGmC,QAChDE,EAAMlB,EAAKmB,OAAO,CAAEH,QAASF,EAAKM,MAAOxC,EAAGS,SAAUgC,SACtDC,EAAMtB,EAAKmB,OAAO,CAAEH,QAASF,EAAKM,MAAOxC,EAAGY,OAAQ6B,SACpDE,EAAMvB,EAAKmB,OAAO,CAAEH,QAASC,EAAKG,MAAOvC,EAAGQ,SAAUgC,SACtDG,EAAMxB,EAAKmB,OAAO,CAAEH,QAASC,EAAKG,MAAOvC,EAAGW,OAAQ6B,SAE1D,IAAII,EAAW,EAEf,QACUC,IAARR,QACQQ,IAARJ,QACQI,IAARH,QACQG,IAARF,EACA,CACA,GAAI5C,EAAGoC,UAAYnC,EAAGmC,QAAS,CAC7B,MAAM9B,EAAIC,KAAKC,IAAIR,EAAGS,MAAOR,EAAGQ,OAC1BC,EAAIH,KAAKI,IAAIX,EAAGY,IAAKX,EAAGW,KAC9BiC,EAAWtC,KAAKO,IAAIJ,EAAIJ,EAC1B,CACAqB,EAAOoB,KAAK,CACVT,MACAI,MACAC,MACAC,MACA5C,KACAC,KACA4C,YAEJ,CACF,MAAO,GAAI7B,EAAKgC,eAAgB,CAC9B,MAAMhD,EAAKgC,EAAM,GAEXE,EAAMV,EAAIW,oBAAoBnC,EAAGoC,UAAYpC,EAAGoC,QAChDE,EAAMlB,EAAKmB,OAAO,CAAEH,QAASF,EAAKM,MAAOxC,EAAGS,SAAUgC,SACtDC,EAAMtB,EAAKmB,OAAO,CAAEH,QAASF,EAAKM,MAAOxC,EAAGY,OAAQ6B,SAC1D,QAAYK,IAARR,QAA6BQ,IAARJ,EAAmB,CAC1C,MAAMO,EAAK1C,KAAKI,IAAI+B,EAAMJ,EAAK,GAC/BrD,EAAYqD,EAAMlB,EAAKqB,SAAU,EAAGQ,EAAIrB,EAAetC,EAAK,QAC5DI,EAAc4C,EAAMlB,EAAKqB,SAAU,EAAGQ,EAAIrB,EAAetC,EAAK,OAChE,CACF,CAGF,MAAM4D,EAAO3C,KAAK4C,KAAIxC,EAAAA,EAAAA,KAAIgB,EAAOyB,KAAIC,GAAKA,EAAER,aACtCS,EAAO/C,KAAKI,IAAIJ,KAAK4C,KAAI3C,EAAAA,EAAAA,KAAImB,EAAOyB,KAAIC,GAAKA,EAAER,aAAc,EAAG,GAChEU,GAAUvC,EAAK3B,OAAS,KAAO6D,EAAOI,GAC5C,IAAK,MAAM,IAAEZ,EAAG,IAAEJ,EAAG,IAAEM,EAAG,IAAED,EAAG,SAAEE,EAAQ,GAAE7C,EAAE,GAAEC,KAAQ0B,EAAQ,CAC7D,MAAMsB,EAAK1C,KAAKI,IAAI+B,EAAMJ,EAAK,GACzBkB,EAAKjD,KAAKI,IAAIiC,EAAMD,EAAK,IACxBc,EAAMC,GAAU5D,EAAe,CAAEC,OAAMC,KAAIC,KAAIC,WAAY,GAC5DyD,GAAOpD,KAAK4C,IAAIN,GAAYS,GAAQC,EACpCK,EAAahC,EAAgB,EAAI,GACjCiC,EAAIlB,EAAMD,EAChBzD,EAAYyD,EAAMtB,EAAKqB,SAAUkB,EAAMC,EAAYC,EAAG,EAAGvE,EAAK,SAC9DI,EAAc4C,EAAMlB,EAAKqB,SAAUkB,EAAKV,EAAIrB,EAAetC,EAAKoE,GAChEhE,EAAciD,EAAMvB,EAAKqB,SAAUkB,EAAKH,EAAI5B,EAAetC,EAAKoE,GAChEzE,EAAYqD,EAAMlB,EAAKqB,SAAUkB,EAAKV,EAAIrB,EAAetC,EAAKmE,GAC9DxE,EAAY0D,EAAMvB,EAAKqB,SAAUkB,EAAKH,EAAI5B,EAAetC,EAAKmE,EAChE,CACF,CC/EIK,CAAe,CAAE9C,OAAMI,OAAMI,MAAKlC,MAAK2B,cCnBpC,UAA4B,IACjC3B,EAAG,KACH0B,EAAI,UACJC,EAAS,KACTG,EAAI,IACJI,IAQA,MAAMuC,EAAsB,GACtBC,EAAkB,IAClB,OAAEjC,GAAWd,GACb,OAAE5B,GAAW2B,EACbY,GAAgBC,EAAAA,EAAAA,SAAQb,EAAM,iBAIpC,IAAK,MAAMgB,KAASD,EAAQ,CAC1B,IAAIkC,EAAOC,OAAOC,UACdC,EAAOF,OAAOG,UAClB,IAAK,MAAMC,KAAOtC,EAAO,CACvB,MAAMI,EAAUZ,EAAIW,oBAAoBmC,EAAIlC,UAAYkC,EAAIlC,QACtDmC,EAAKnD,EAAKmB,OAAO,CAAEH,UAASI,MAAO8B,EAAI7D,SAAUgC,SACjD+B,EAAKpD,EAAKmB,OAAO,CAAEH,UAASI,MAAO8B,EAAI1D,OAAQ6B,cAC1CK,IAAPyB,QAA2BzB,IAAP0B,IACtBP,EAAO1D,KAAKC,IAAIyD,EAAMM,GACtBH,EAAO7D,KAAKI,IAAIyD,EAAMI,GAE1B,CACA,MAAM3B,EAAWtC,KAAKO,IAAIsD,EAAOH,GACjCF,EAAUhB,KAAKF,GACfmB,EAAMjB,KAAKkB,EACb,CAEA,MAAMf,EAAO3C,KAAK4C,KAAIxC,EAAAA,EAAAA,KAAIoD,IACpBT,EAAO/C,KAAKI,IAAIJ,KAAK4C,KAAI3C,EAAAA,EAAAA,KAAIuD,IAAc,EAAG,GAC9CR,GAAUlE,EAAS,KAAO6D,EAAOI,GACjCM,EAAahC,EAAgB,EAAI,GAGvC,IAAK,IAAI6C,EAAI,EAAGA,EAAI1C,EAAOE,OAAQwC,IAAK,CACtC,MAAMzC,EAAQD,EAAO0C,GACfZ,EAAIE,EAAUU,GACdd,GAAOpD,KAAK4C,IAAIU,GAAKP,GAAQC,EAEnCtE,EADY+E,EAAMS,GACArD,EAAKqB,SAAUkB,EAAMC,EAAYC,EAAG,EAAGvE,EAAK,SAC9D,MAAMoF,EAAK1C,EAAM,GACjB,IAAI2C,EACJ,GAAiB,KAAXD,EAAGE,MAEF,CACL,MAAMC,EAAMH,EAAGI,IAAIC,MAAM,KAAK,GAAIA,MAAM,KAAK,GAC7CJ,EAAwB,MAARE,GAAe,EAAI,CACrC,MAJEF,EAAgBD,EAAGM,OAKrB,IAAK,MAAMhF,KAAMgC,EAAO,CACtB,MAAMiD,EAAKzD,EAAIW,oBAAoBnC,EAAGoC,UAAYpC,EAAGoC,QAC/CmC,EAAKnD,EAAKmB,OAAO,CAAEH,QAAS6C,EAAIzC,MAAOxC,EAAGS,SAAUgC,SACpD+B,EAAKpD,EAAKmB,OAAO,CAAEH,QAAS6C,EAAIzC,MAAOxC,EAAGY,OAAQ6B,SACxD,QAAWK,IAAPyB,QAA2BzB,IAAP0B,EAAkB,CACxC,MAAMX,EAAItD,KAAKI,IAAI6D,EAAKD,EAAI,GACtBW,EAAIX,EAAKnD,EAAKqB,SAEdY,GACiB,GAFCrD,EAAGgF,OAASL,EAET,mBAAqB,mBAChDjF,EAAcwF,EAAGvB,EAAKE,EAAGjC,EAAetC,EAAKK,EAAAA,GAAY0D,IACzDpE,EAAYiG,EAAGvB,EAAKE,EAAGjC,EAAetC,EAAKC,EAAAA,GAAU8D,GACvD,CACF,CACF,CACF,CDpDI8B,CAAmB,CAAEnE,OAAMI,OAAMI,MAAKlC,MAAK2B,cAE/C,C,kBEhCO,SAASS,EAAe0D,GAC7B,IAAK,MAAMC,KAAKD,EAASrD,OAAOuD,SAC9B,GAAkB,EAAdD,EAAE,GAAIT,MACR,OAAO,EAGX,OAAO,CACT,C","sources":["../../../plugins/alignments/src/LinearReadCloudDisplay/util.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/drawPairChains.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/drawFeats.ts","../../../plugins/alignments/src/LinearReadCloudDisplay/drawLongReadChains.ts","../../../plugins/alignments/src/shared/util.ts"],"sourcesContent":["// avoid drawing negative width features for SVG exports\nexport function fillRectCtx(\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  ctx: CanvasRenderingContext2D,\n  fillColor?: string,\n) {\n  if (width < 0) {\n    x += width\n    width = -width\n  }\n  if (height < 0) {\n    y += height\n    height = -height\n  }\n\n  if (fillColor) {\n    ctx.fillStyle = fillColor\n  }\n\n  ctx.fillRect(x, y, width, height)\n}\n\nexport function strokeRectCtx(\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  ctx: CanvasRenderingContext2D,\n  strokeColor?: string,\n) {\n  if (width < 0) {\n    x += width\n    width = -width\n  }\n  if (height < 0) {\n    y += height\n    height = -height\n  }\n\n  if (strokeColor) {\n    ctx.strokeStyle = strokeColor\n  }\n  ctx.strokeRect(x, y, width, height)\n}\n","import { getConf } from '@jbrowse/core/configuration'\nimport { max, min } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\n\nimport { ChainData, ChainStats, ReducedFeature } from '../shared/fetchChains'\nimport { LinearReadCloudDisplayModel } from './model'\nimport { fillRectCtx, strokeRectCtx } from './util'\nimport {\n  getPairedInsertSizeAndOrientationColor,\n  getPairedInsertSizeColor,\n  getPairedOrientationColor,\n} from '../shared/color'\n\ninterface ChainCoord {\n  distance: number\n  r1s: number\n  r1e: number\n  r2s: number\n  r2e: number\n  v0: ReducedFeature\n  v1: ReducedFeature\n}\n\nexport function drawPairChains({\n  ctx,\n  self,\n  chainData,\n  view,\n  asm,\n}: {\n  ctx: CanvasRenderingContext2D\n  self: LinearReadCloudDisplayModel\n  chainData: ChainData\n  view: LinearGenomeViewModel\n  asm: Assembly\n}) {\n  const coords: ChainCoord[] = []\n  const featureHeight = getConf(self, 'featureHeight')\n  const type = self.colorBy?.type || 'insertSizeAndOrientation'\n  const { chains, stats } = chainData\n\n  for (const chain of chains) {\n    // if we're looking at a paired read (flag 1) then assume it is just\n    // two reads (some small cases may defy this assumption such as\n    // secondary alignments but this may be uncommon)\n    if (chain.length > 1) {\n      const v0 = chain[0]!\n      const v1 = chain[1]!\n      const ra1 = asm.getCanonicalRefName(v0.refName) || v0.refName\n      const ra2 = asm.getCanonicalRefName(v1.refName) || v1.refName\n      const r1s = view.bpToPx({ refName: ra1, coord: v0.start })?.offsetPx\n      const r1e = view.bpToPx({ refName: ra1, coord: v0.end })?.offsetPx\n      const r2s = view.bpToPx({ refName: ra2, coord: v1.start })?.offsetPx\n      const r2e = view.bpToPx({ refName: ra2, coord: v1.end })?.offsetPx\n\n      let distance = 0\n\n      if (\n        r1s !== undefined &&\n        r1e !== undefined &&\n        r2s !== undefined &&\n        r2e !== undefined\n      ) {\n        if (v0.refName === v1.refName) {\n          const s = Math.min(v0.start, v1.start)\n          const e = Math.max(v0.end, v1.end)\n          distance = Math.abs(e - s)\n        }\n        coords.push({\n          r1s,\n          r1e,\n          r2s,\n          r2e,\n          v0,\n          v1,\n          distance,\n        })\n      }\n    } else if (self.drawSingletons) {\n      const v0 = chain[0]!\n\n      const ra1 = asm.getCanonicalRefName(v0.refName) || v0.refName\n      const r1s = view.bpToPx({ refName: ra1, coord: v0.start })?.offsetPx\n      const r1e = view.bpToPx({ refName: ra1, coord: v0.end })?.offsetPx\n      if (r1s !== undefined && r1e !== undefined) {\n        const w1 = Math.max(r1e - r1s, 2)\n        fillRectCtx(r1s - view.offsetPx, 0, w1, featureHeight, ctx, '#f00')\n        strokeRectCtx(r1s - view.offsetPx, 0, w1, featureHeight, ctx, '#a00')\n      }\n    }\n  }\n\n  const maxD = Math.log(max(coords.map(c => c.distance)))\n  const minD = Math.max(Math.log(min(coords.map(c => c.distance))) - 1, 0)\n  const scaler = (self.height - 20) / (maxD - minD)\n  for (const { r1e, r1s, r2e, r2s, distance, v0, v1 } of coords) {\n    const w1 = Math.max(r1e - r1s, 2)\n    const w2 = Math.max(r2e - r2s, 2)\n    const [fill, stroke] = getPairedColor({ type, v0, v1, stats }) || []\n    const top = (Math.log(distance) - minD) * scaler\n    const halfHeight = featureHeight / 2 - 0.5\n    const w = r2s - r1e\n    fillRectCtx(r1e - view.offsetPx, top + halfHeight, w, 1, ctx, 'black')\n    strokeRectCtx(r1s - view.offsetPx, top, w1, featureHeight, ctx, stroke)\n    strokeRectCtx(r2s - view.offsetPx, top, w2, featureHeight, ctx, stroke)\n    fillRectCtx(r1s - view.offsetPx, top, w1, featureHeight, ctx, fill)\n    fillRectCtx(r2s - view.offsetPx, top, w2, featureHeight, ctx, fill)\n  }\n}\n\nexport function getPairedColor({\n  type,\n  v0,\n  v1,\n  stats,\n}: {\n  type: string\n  v0: ReducedFeature\n  v1: ReducedFeature\n  stats?: ChainStats\n}): readonly [string, string] | undefined {\n  if (type === 'insertSizeAndOrientation') {\n    return getPairedInsertSizeAndOrientationColor(v0, v1, stats)\n  }\n  if (type === 'orientation') {\n    return getPairedOrientationColor(v0)\n  }\n  if (type === 'insertSize') {\n    return getPairedInsertSizeColor(v0, v1, stats)\n  }\n  if (type === 'gradient') {\n    const s = Math.min(v0.start, v1.start)\n    const e = Math.max(v0.end, v1.end)\n    return [\n      `hsl(${Math.log10(Math.abs(e - s)) * 10},50%,50%)`,\n      `hsl(${Math.log10(Math.abs(e - s)) * 10},50%,30%)`,\n    ] as const\n  }\n  return undefined\n}\n","import { getContainingView, getSession } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { LinearReadCloudDisplayModel } from './model'\nimport { hasPairedReads } from '../shared/util'\nimport { drawPairChains } from './drawPairChains'\nimport { drawLongReadChains } from './drawLongReadChains'\n\ntype LGV = LinearGenomeViewModel\n\nexport function drawFeats(\n  self: LinearReadCloudDisplayModel,\n  ctx: CanvasRenderingContext2D,\n) {\n  const { chainData } = self\n  if (!chainData) {\n    return\n  }\n  const { assemblyManager } = getSession(self)\n  const view = getContainingView(self) as LGV\n  const assemblyName = view.assemblyNames[0]!\n  const asm = assemblyManager.get(assemblyName)\n  if (!asm) {\n    return\n  }\n\n  const hasPaired = hasPairedReads(chainData)\n\n  if (hasPaired) {\n    drawPairChains({ self, view, asm, ctx, chainData })\n  } else {\n    drawLongReadChains({ self, view, asm, ctx, chainData })\n  }\n}\n","import { getConf } from '@jbrowse/core/configuration'\nimport { max, min } from '@jbrowse/core/util'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { ChainData } from '../shared/fetchChains'\nimport { LinearReadCloudDisplayModel } from './model'\nimport { fillColor, strokeColor } from '../shared/color'\nimport { fillRectCtx, strokeRectCtx } from './util'\n\nexport function drawLongReadChains({\n  ctx,\n  self,\n  chainData,\n  view,\n  asm,\n}: {\n  ctx: CanvasRenderingContext2D\n  self: LinearReadCloudDisplayModel\n  chainData: ChainData\n  view: LinearGenomeViewModel\n  asm: Assembly\n}) {\n  const distances: number[] = []\n  const minXs: number[] = []\n  const { chains } = chainData\n  const { height } = self\n  const featureHeight = getConf(self, 'featureHeight')\n\n  // get bounds on the 'distances' (pixel span that a particular split long\n  // read 'chain' would have in view)\n  for (const chain of chains) {\n    let minX = Number.MAX_VALUE\n    let maxX = Number.MIN_VALUE\n    for (const elt of chain) {\n      const refName = asm.getCanonicalRefName(elt.refName) || elt.refName\n      const rs = view.bpToPx({ refName, coord: elt.start })?.offsetPx\n      const re = view.bpToPx({ refName, coord: elt.end })?.offsetPx\n      if (rs !== undefined && re !== undefined) {\n        minX = Math.min(minX, rs)\n        maxX = Math.max(maxX, re)\n      }\n    }\n    const distance = Math.abs(maxX - minX)\n    distances.push(distance)\n    minXs.push(minX)\n  }\n\n  const maxD = Math.log(max(distances))\n  const minD = Math.max(Math.log(min(distances)) - 1, 0)\n  const scaler = (height - 20) / (maxD - minD)\n  const halfHeight = featureHeight / 2 - 0.5\n\n  // draw split long read 'chains' as connected entities\n  for (let i = 0; i < chains.length; i++) {\n    const chain = chains[i]!\n    const w = distances[i]!\n    const top = (Math.log(w) - minD) * scaler\n    const min = minXs[i]!\n    fillRectCtx(min - view.offsetPx, top + halfHeight, w, 1, ctx, 'black')\n    const c1 = chain[0]!\n    let primaryStrand: undefined | number\n    if (!(c1.flags & 2048)) {\n      primaryStrand = c1.strand\n    } else {\n      const res = c1.SA?.split(';')[0]!.split(',')[2]\n      primaryStrand = res === '-' ? -1 : 1\n    }\n    for (const v0 of chain) {\n      const ra = asm.getCanonicalRefName(v0.refName) || v0.refName\n      const rs = view.bpToPx({ refName: ra, coord: v0.start })?.offsetPx\n      const re = view.bpToPx({ refName: ra, coord: v0.end })?.offsetPx\n      if (rs !== undefined && re !== undefined) {\n        const w = Math.max(re - rs, 2)\n        const l = rs - view.offsetPx\n        const effectiveStrand = v0.strand * primaryStrand\n        const c =\n          effectiveStrand === -1 ? 'color_rev_strand' : 'color_fwd_strand'\n        strokeRectCtx(l, top, w, featureHeight, ctx, strokeColor[c])\n        fillRectCtx(l, top, w, featureHeight, ctx, fillColor[c])\n      }\n    }\n  }\n}\n","import { ChainData } from './fetchChains'\n\nexport function hasPairedReads(features: ChainData) {\n  for (const f of features.chains.values()) {\n    if (f[0]!.flags & 1) {\n      return true\n    }\n  }\n  return false\n}\n"],"names":["fillRectCtx","x","y","width","height","ctx","fillColor","fillStyle","fillRect","strokeRectCtx","strokeColor","strokeStyle","strokeRect","getPairedColor","type","v0","v1","stats","getPairedInsertSizeAndOrientationColor","getPairedOrientationColor","getPairedInsertSizeColor","s","Math","min","start","e","max","end","log10","abs","drawFeats","self","chainData","assemblyManager","getSession","view","getContainingView","assemblyName","assemblyNames","asm","get","hasPairedReads","coords","featureHeight","getConf","colorBy","chains","chain","length","ra1","getCanonicalRefName","refName","ra2","r1s","bpToPx","coord","offsetPx","r1e","r2s","r2e","distance","undefined","push","drawSingletons","w1","maxD","log","map","c","minD","scaler","w2","fill","stroke","top","halfHeight","w","drawPairChains","distances","minXs","minX","Number","MAX_VALUE","maxX","MIN_VALUE","elt","rs","re","i","c1","primaryStrand","flags","res","SA","split","strand","ra","l","drawLongReadChains","features","f","values"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6999.3486cca0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[6999],{66999:(e,t,r)=>{r.r(t),r.d(t,{default:()=>f});var n=r(7552),o=r(68446),s=r(99546),a=r(373);const c="rgb(220,220,180)",l="rgba(250,200,200)";function d({str:e,charactersPerRow:t,showCoordinates:r,currRemainder:n=0,splitSize:o=10}){const s=Math.ceil(e.length/t),a=new Array(s);let c=n%10,l=0,d=0;for(;l<s+1;++l){const s=0===l?t-n:t,m=e.slice(d,d+s);if(!m)break;if(r){let e="";for(let t=0,r=c;t<m.length;t++,r++)r%o==0&&(e+=" ",r=0),e+=m[t];e&&(a[l]=e)}else a[l]=m;c=0,d+=s}return{segments:a,remainder:((a.at(-1)?.replaceAll(" ","").length||0)+(l<2?n:0))%t}}const m=(0,o.observer)((function({chunks:e,start:t,color:r,strand:o=1,coordStart:s=t,model:a}){const{charactersPerRow:c,showCoordinates:l}=a;return e.map(((a,d)=>{const m=0===d&&t%c==0||d>0?`${(""+(s-t%c+d*o*c)).padStart(4)}   `:"",u=d===e.length-1&&(e.at(-1)?.replaceAll(" ","").length||0)+(0===d?t%c:0)!==c?null:l?" \n":"";return n.createElement(n.Fragment,{key:`${a}-${d}`},l?m:null,n.createElement("span",{style:{background:r}},a),u)}))})),u=(0,o.observer)((function({utr:e,cds:t,exons:r,sequence:o,upstream:s,downstream:a,feature:u,includeIntrons:i,collapseIntron:h,model:g}){const{upperCaseCDS:w,intronBp:p,charactersPerRow:f,showCoordinates:C,showCoordinatesSetting:b}=g,E=t.length>0,k=(t.length?[...t,...e].sort(((e,t)=>e.start-t.start)):r).filter((e=>e.start!==e.end)),R=e=>w?e.toLowerCase():e,S=e=>w?e.toUpperCase():e,q=-1===u.strand?-1:1,y="genomic"===b&&i&&!h,v=y?q:1;let P=y?q>0?u.start+1-(s?.length||0):u.end+(s?.length||0):0,$=0,_=0,x=null;if(s){const{segments:e,remainder:t}=d({str:R(s),charactersPerRow:f,showCoordinates:C});x=n.createElement(m,{model:g,color:l,strand:v,start:$,coordStart:P,chunks:e}),_=t,$+=s.length*v,P+=s.length*v}const I=[];for(let e=0;e<k.length;e++){const t=k[e],r=o.slice(t.end,k[e+1]?.start),s=o.slice(t.start,t.end),{segments:a,remainder:l}=d({str:E?"CDS"===t.type?S(s):R(s):S(s),charactersPerRow:f,currRemainder:_,showCoordinates:C});if(I.push(n.createElement(m,{key:`${JSON.stringify(t)}-mid`,model:g,color:"CDS"===t.type?c:"rgb(200,240,240)",strand:v,start:$,coordStart:P,chunks:a})),_=l,$+=s.length*v,P+=s.length*v,r&&i&&e<k.length-1){const e=R(h&&r.length>2*p?`${r.slice(0,p)}...${r.slice(-p)}`:r),{segments:o,remainder:s}=d({str:e,charactersPerRow:f,currRemainder:_,showCoordinates:C});o.length&&(I.push(n.createElement(m,{key:`${JSON.stringify(t)}-intron`,model:g,strand:v,coordStart:P,start:$,chunks:o})),_=s,$+=e.length*v,P+=e.length*v)}}let T=null;if(a){const{segments:e}=d({str:R(a),charactersPerRow:f,currRemainder:_,showCoordinates:C});T=n.createElement(m,{start:$,model:g,strand:v,chunks:e,coordStart:P,color:l})}return n.createElement(n.Fragment,null,x,I,T)})),i=(0,o.observer)((function({cds:e,sequence:t,codonTable:r,model:o}){const{charactersPerRow:s,showCoordinates:c}=o,l=(0,a.o9)(e,t);let u="";for(let e=0;e<l.length;e+=3)u+=r[l.slice(e,e+3)]||"&";const{segments:i}=d({str:u,charactersPerRow:s,showCoordinates:c});return n.createElement(m,{model:o,color:"rgb(220,160,220)",chunks:i,start:0})})),h=(0,o.observer)((function({sequence:e,upstream:t,feature:r,downstream:o,model:s}){const{charactersPerRow:a,showCoordinatesSetting:c,showCoordinates:u}=s;let i=0,h=null,g=0;const w=-1===r.strand?-1:1,p="genomic"===c,f=p?w:1;let C=p?w>0?r.start+1-(t?.length||0):r.end+(t?.length||0):0;if(t){const{segments:e,remainder:r}=d({str:t,charactersPerRow:a,showCoordinates:u});h=n.createElement(m,{model:s,color:l,start:i,coordStart:C,chunks:e}),g=r,i+=t.length*f,C+=t.length*f}const{segments:b,remainder:E}=d({str:e,charactersPerRow:a,showCoordinates:u,currRemainder:g}),k=n.createElement(m,{model:s,color:"rgb(200,280,200)",start:i,coordStart:C,chunks:b});g=E,i+=e.length*f,C+=e.length*f;let R=null;if(o){const{segments:e}=d({str:o,charactersPerRow:a,currRemainder:g,showCoordinates:u});R=n.createElement(m,{start:i,model:s,chunks:e,coordStart:C,color:l})}return n.createElement(n.Fragment,null,h,k,R)})),g=(0,o.observer)((function({cds:e,sequence:t,model:r}){const{charactersPerRow:o,showCoordinates:s}=r,{segments:l}=d({str:(0,a.o9)(e,t),charactersPerRow:o,showCoordinates:s});return n.createElement(m,{model:r,color:c,chunks:l,start:0})}));function w({children:e}){return n.createElement("pre",{style:{fontFamily:"monospace",color:"black",fontSize:11}},e)}function p({children:e}){return n.createElement("div",{style:{fontFamily:"monospace",color:"black",fontSize:11,maxWidth:600,whiteSpace:"wrap",wordBreak:"break-all"}},e)}const f=(0,o.observer)(n.forwardRef((function(e,t){const{model:r,feature:o}=e,{showCoordinates:c,mode:l}=r;let{sequence:{seq:d,upstream:m="",downstream:f=""}}=e;const{subfeatures:C=[]}=o,b=C.sort(((e,t)=>e.start-t.start)).map((e=>({...e,start:e.start-o.start,end:e.end-o.start})));let E=(0,a.Qq)(b.filter((e=>"CDS"===e.type))),k=(0,a.Qq)(b.filter((e=>e.type?.match(/utr/i)))),R=(0,a.Qq)(b.filter((e=>"exon"===e.type)));!k.length&&E.length&&R.length&&(k=(0,a.h8)(E,R)),k.length||!E.length||R.length||(k=(0,a.V4)(E,{start:0,end:o.end-o.start,type:"gene"})),-1===o.strand&&([d,m,f]=[(0,s.revcom)(d),(0,s.revcom)(f),(0,s.revcom)(m)],E=(0,a.YC)(E,d.length),R=(0,a.YC)(R,d.length),k=(0,a.YC)(k,d.length));const S=(0,s.generateCodonTable)(s.defaultCodonTable),q=c?w:p;return n.createElement("div",{"data-testid":"sequence_panel",ref:t,style:{maxHeight:300,overflow:"auto"}},n.createElement(q,null,n.createElement("div",{style:{background:"white"}},`>${[`${o.name||o.id}-${l}`,`${o.refName}:${(0,s.toLocale)(o.start+1)}-${(0,s.toLocale)(o.end)}${y=o.strand,-1===y?"(-)":1===y?"(+)":""}`,l.endsWith("updownstream")?`+/- ${(0,s.toLocale)(r.upDownBp)} up/downstream bp`:""].filter((e=>!!e)).join(" ")}\n`),"genomic"===l?n.createElement(h,{feature:o,model:r,sequence:d}):"genomic_sequence_updownstream"===l?n.createElement(h,{model:r,feature:o,sequence:d,upstream:m,downstream:f}):"cds"===l?n.createElement(g,{model:r,cds:E,sequence:d}):"cdna"===l?n.createElement(u,{model:r,exons:R,feature:o,cds:E,utr:k,sequence:d}):"protein"===l?n.createElement(i,{model:r,cds:E,codonTable:S,sequence:d}):"gene"===l?n.createElement(u,{model:r,exons:R,feature:o,cds:E,utr:k,sequence:d,includeIntrons:!0}):"gene_collapsed_intron"===l?n.createElement(u,{model:r,exons:R,feature:o,cds:E,sequence:d,utr:k,includeIntrons:!0,collapseIntron:!0}):"gene_updownstream"===l?n.createElement(u,{model:r,exons:R,feature:o,cds:E,sequence:d,utr:k,upstream:m,downstream:f,includeIntrons:!0}):"gene_updownstream_collapsed_intron"===l?n.createElement(u,{model:r,exons:R,feature:o,cds:E,sequence:d,utr:k,upstream:m,downstream:f,includeIntrons:!0,collapseIntron:!0}):n.createElement("div",null,"Unknown type")));var y})))}}]);
+//# sourceMappingURL=6999.3486cca0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/6999.3486cca0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/6999.3486cca0.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/util.ts","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.tsx"],"sourcesContent":["// note that these are currently put into the style section instead of being\n// defined in classes to aid copy and paste to an external document e.g. word\nexport const intronColor = undefined\nexport const utrColor = 'rgb(200,240,240)'\nexport const proteinColor = 'rgb(220,160,220)'\nexport const cdsColor = 'rgb(220,220,180)'\nexport const updownstreamColor = 'rgba(250,200,200)'\nexport const genomeColor = 'rgb(200,280,200)'\n\nexport function splitString({\n  str,\n  charactersPerRow,\n  showCoordinates,\n  currRemainder = 0,\n  splitSize = 10,\n}: {\n  str: string\n  charactersPerRow: number\n  showCoordinates: boolean\n  currRemainder?: number\n  splitStart?: number\n  splitSize?: number\n}) {\n  const numChunks = Math.ceil(str.length / charactersPerRow)\n  const chunks = new Array(numChunks)\n  let splitStart = currRemainder % 10\n\n  let iter = 0\n  let offset = 0\n  for (; iter < numChunks + 1; ++iter) {\n    const inc = iter === 0 ? charactersPerRow - currRemainder : charactersPerRow\n    const r = str.slice(offset, offset + inc)\n    if (!r) {\n      break\n    }\n    if (showCoordinates) {\n      let res = ''\n      for (let i = 0, j = splitStart; i < r.length; i++, j++) {\n        // note: this adds a space at the start but it causes trouble to try to\n        // say e.g. j%splitSize==0 && j to try to only add non-zero spaces\n        if (j % splitSize === 0) {\n          res += ' '\n          j = 0\n        }\n        res += r[i]\n      }\n      if (res) {\n        chunks[iter] = res\n      }\n    } else {\n      chunks[iter] = r\n    }\n    splitStart = 0 // after newline, reset\n    offset += inc\n  }\n\n  return {\n    segments: chunks,\n    remainder:\n      ((chunks.at(-1)?.replaceAll(' ', '').length || 0) +\n        (iter < 2 ? currRemainder : 0)) %\n      charactersPerRow,\n  }\n}\n","import React from 'react'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport { observer } from 'mobx-react'\n\nconst SequenceDisplay = observer(function ({\n  chunks,\n  start,\n  color,\n  strand = 1,\n  coordStart = start,\n  model,\n}: {\n  chunks: string[]\n  start: number\n  coordStart?: number\n  strand?: number\n  color?: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n\n  return chunks.map((chunk, idx) => {\n    const f = coordStart - (start % charactersPerRow)\n    const prefix =\n      (idx === 0 && start % charactersPerRow === 0) || idx > 0\n        ? `${`${f + idx * strand * charactersPerRow}`.padStart(4)}   `\n        : ''\n    const postfix =\n      idx === chunks.length - 1 &&\n      (chunks.at(-1)?.replaceAll(' ', '').length || 0) +\n        (idx === 0 ? start % charactersPerRow : 0) !==\n        charactersPerRow\n        ? null\n        : showCoordinates\n          ? ' \\n'\n          : ''\n    return (\n      /* biome-ignore lint/suspicious/noArrayIndexKey: */\n      <React.Fragment key={`${chunk}-${idx}`}>\n        {showCoordinates ? prefix : null}\n        <span style={{ background: color }}>{chunk}</span>\n        {postfix}\n      </React.Fragment>\n    )\n  })\n})\n\nexport default SequenceDisplay\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { Feat } from '../../util'\nimport { splitString, cdsColor, updownstreamColor, utrColor } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\nimport { SimpleFeatureSerialized } from '../../../util'\n\nconst CDNASequence = observer(function ({\n  utr,\n  cds,\n  exons,\n  sequence,\n  upstream,\n  downstream,\n  feature,\n  includeIntrons,\n  collapseIntron,\n  model,\n}: {\n  utr: Feat[]\n  cds: Feat[]\n  exons: Feat[]\n  sequence: string\n  upstream?: string\n  downstream?: string\n  feature: SimpleFeatureSerialized\n  includeIntrons?: boolean\n  collapseIntron?: boolean\n  model: SequenceFeatureDetailsModel\n}) {\n  const {\n    upperCaseCDS,\n    intronBp,\n    charactersPerRow,\n    showCoordinates,\n    showCoordinatesSetting,\n  } = model\n  const hasCds = cds.length > 0\n  const chunks = (\n    cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons\n  ).filter(f => f.start !== f.end)\n  const toLower = (s: string) => (upperCaseCDS ? s.toLowerCase() : s)\n  const toUpper = (s: string) => (upperCaseCDS ? s.toUpperCase() : s)\n\n  const strand = feature.strand === -1 ? -1 : 1\n  const fullGenomicCoordinates =\n    showCoordinatesSetting === 'genomic' && includeIntrons && !collapseIntron\n\n  const mult = fullGenomicCoordinates ? strand : 1\n  let coordStart = fullGenomicCoordinates\n    ? strand > 0\n      ? feature.start + 1 - (upstream?.length || 0)\n      : feature.end + (upstream?.length || 0)\n    : 0\n  let currStart = 0\n  let currRemainder = 0\n\n  let upstreamChunk = null as React.ReactNode\n  if (upstream) {\n    const { segments, remainder } = splitString({\n      str: toLower(upstream),\n      charactersPerRow,\n      showCoordinates,\n    })\n    upstreamChunk = (\n      <SequenceDisplay\n        model={model}\n        color={updownstreamColor}\n        strand={mult}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />\n    )\n    currRemainder = remainder\n    currStart = currStart + upstream.length * mult\n    coordStart = coordStart + upstream.length * mult\n  }\n\n  const middleChunks = [] as React.ReactNode[]\n  for (let idx = 0; idx < chunks.length; idx++) {\n    const chunk = chunks[idx]!\n    const intron = sequence.slice(chunk.end, chunks[idx + 1]?.start)\n    const s = sequence.slice(chunk.start, chunk.end)\n    const { segments, remainder } = splitString({\n      str: hasCds\n        ? chunk.type === 'CDS'\n          ? toUpper(s)\n          : toLower(s)\n        : toUpper(s),\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n\n    middleChunks.push(\n      <SequenceDisplay\n        key={`${JSON.stringify(chunk)}-mid`}\n        model={model}\n        color={chunk.type === 'CDS' ? cdsColor : utrColor}\n        strand={mult}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />,\n    )\n    currRemainder = remainder\n    currStart = currStart + s.length * mult\n    coordStart = coordStart + s.length * mult\n\n    if (intron && includeIntrons && idx < chunks.length - 1) {\n      const str = toLower(\n        collapseIntron && intron.length > intronBp * 2\n          ? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`\n          : intron,\n      )\n      const { segments, remainder } = splitString({\n        str,\n        charactersPerRow,\n        currRemainder,\n        showCoordinates,\n      })\n\n      if (segments.length) {\n        middleChunks.push(\n          <SequenceDisplay\n            key={`${JSON.stringify(chunk)}-intron`}\n            model={model}\n            strand={mult}\n            coordStart={coordStart}\n            start={currStart}\n            chunks={segments}\n          />,\n        )\n        currRemainder = remainder\n        currStart = currStart + str.length * mult\n        coordStart = coordStart + str.length * mult\n      }\n    }\n  }\n\n  let downstreamChunk = null as React.ReactNode\n  if (downstream) {\n    const { segments } = splitString({\n      str: toLower(downstream),\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n    downstreamChunk = (\n      <SequenceDisplay\n        start={currStart}\n        model={model}\n        strand={mult}\n        chunks={segments}\n        coordStart={coordStart}\n        color={updownstreamColor}\n      />\n    )\n  }\n  return (\n    <>\n      {upstreamChunk}\n      {middleChunks}\n      {downstreamChunk}\n    </>\n  )\n})\n\nexport default CDNASequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { Feat, stitch } from '../../util'\nimport { proteinColor, splitString } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\n\nconst ProteinSequence = observer(function ({\n  cds,\n  sequence,\n  codonTable,\n  model,\n}: {\n  cds: Feat[]\n  sequence: string\n  codonTable: Record<string, string>\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n  const str = stitch(cds, sequence)\n  let protein = ''\n  for (let i = 0; i < str.length; i += 3) {\n    // use & symbol for undefined codon, or partial slice\n    protein += codonTable[str.slice(i, i + 3)] || '&'\n  }\n  const { segments } = splitString({\n    str: protein,\n    charactersPerRow,\n    showCoordinates,\n  })\n  return (\n    <SequenceDisplay\n      model={model}\n      color={proteinColor}\n      chunks={segments}\n      start={0}\n    />\n  )\n})\n\nexport default ProteinSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { genomeColor, splitString, updownstreamColor } from '../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\nimport { SimpleFeatureSerialized } from '../../../util'\n\nconst GenomicSequence = observer(function ({\n  sequence,\n  upstream,\n  feature,\n  downstream,\n  model,\n}: {\n  sequence: string\n  feature: SimpleFeatureSerialized\n  upstream?: string\n  downstream?: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinatesSetting, showCoordinates } = model\n  let currStart = 0\n  let upstreamChunk = null as React.ReactNode\n  let currRemainder = 0\n  const strand = feature.strand === -1 ? -1 : 1\n  const fullGenomicCoordinates = showCoordinatesSetting === 'genomic'\n  const mult = fullGenomicCoordinates ? strand : 1\n  let coordStart = fullGenomicCoordinates\n    ? strand > 0\n      ? feature.start + 1 - (upstream?.length || 0)\n      : feature.end + (upstream?.length || 0)\n    : 0\n  if (upstream) {\n    const { segments, remainder } = splitString({\n      str: upstream,\n      charactersPerRow,\n      showCoordinates,\n    })\n    upstreamChunk = (\n      <SequenceDisplay\n        model={model}\n        color={updownstreamColor}\n        start={currStart}\n        coordStart={coordStart}\n        chunks={segments}\n      />\n    )\n    currRemainder = remainder\n    currStart = currStart + upstream.length * mult\n    coordStart = coordStart + upstream.length * mult\n  }\n\n  const { segments, remainder } = splitString({\n    str: sequence,\n    charactersPerRow,\n    showCoordinates,\n    currRemainder,\n  })\n  const middleChunk = (\n    <SequenceDisplay\n      model={model}\n      color={genomeColor}\n      start={currStart}\n      coordStart={coordStart}\n      chunks={segments}\n    />\n  )\n  currRemainder = remainder\n  currStart += sequence.length * mult\n  coordStart = coordStart + sequence.length * mult\n\n  let downstreamChunk = null as React.ReactNode\n  if (downstream) {\n    const { segments } = splitString({\n      str: downstream,\n      charactersPerRow,\n      currRemainder,\n      showCoordinates,\n    })\n    downstreamChunk = (\n      <SequenceDisplay\n        start={currStart}\n        model={model}\n        chunks={segments}\n        coordStart={coordStart}\n        color={updownstreamColor}\n      />\n    )\n  }\n\n  return (\n    <>\n      {upstreamChunk}\n      {middleChunk}\n      {downstreamChunk}\n    </>\n  )\n})\n\nexport default GenomicSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { cdsColor, splitString } from '../util'\nimport { Feat, stitch } from '../../util'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport SequenceDisplay from './SequenceDisplay'\n\nconst CDSSequence = observer(function ({\n  cds,\n  sequence,\n  model,\n}: {\n  cds: Feat[]\n  sequence: string\n  model: SequenceFeatureDetailsModel\n}) {\n  const { charactersPerRow, showCoordinates } = model\n  const { segments } = splitString({\n    str: stitch(cds, sequence),\n    charactersPerRow,\n    showCoordinates,\n  })\n  return (\n    <SequenceDisplay\n      model={model}\n      color={cdsColor}\n      chunks={segments}\n      start={0}\n    />\n  )\n})\n\nexport default CDSSequence\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport {\n  SimpleFeatureSerialized,\n  defaultCodonTable,\n  generateCodonTable,\n  revcom,\n  toLocale,\n} from '../../util'\nimport {\n  SeqState,\n  calculateUTRs,\n  calculateUTRs2,\n  dedupe,\n  revlist,\n} from '../util'\nimport { SequenceFeatureDetailsModel } from './model'\n// panel types\nimport CDNASequence from './seqtypes/CDNASequence'\nimport ProteinSequence from './seqtypes/ProteinSequence'\nimport GenomicSequence from './seqtypes/GenomicSequence'\nimport CDSSequence from './seqtypes/CDSSequence'\n\ninterface SequencePanelProps {\n  sequence: SeqState\n  feature: SimpleFeatureSerialized\n  model: SequenceFeatureDetailsModel\n}\n\nfunction getStrand(strand: number) {\n  if (strand === -1) {\n    return '(-)'\n  } else if (strand === 1) {\n    return '(+)'\n  } else {\n    return ''\n  }\n}\n\nfunction WordWrap({ children }: { children: React.ReactNode }) {\n  return (\n    <pre\n      style={{\n        /* raw styles instead of className so that html copy works */\n        fontFamily: 'monospace',\n        color: 'black',\n        fontSize: 11,\n      }}\n    >\n      {children}\n    </pre>\n  )\n}\n\nfunction NoWordWrap({ children }: { children: React.ReactNode }) {\n  return (\n    <div\n      style={{\n        /* raw styles instead of className so that html copy works */\n        fontFamily: 'monospace',\n        color: 'black',\n        fontSize: 11,\n        maxWidth: 600,\n        whiteSpace: 'wrap',\n        wordBreak: 'break-all',\n      }}\n    >\n      {children}\n    </div>\n  )\n}\n\nconst SequencePanel = observer(\n  React.forwardRef<HTMLDivElement, SequencePanelProps>(function S(props, ref) {\n    const { model, feature } = props\n    const { showCoordinates, mode } = model\n    let {\n      sequence: { seq, upstream = '', downstream = '' },\n    } = props\n    const { subfeatures = [] } = feature\n\n    const children = subfeatures\n      .sort((a, b) => a.start - b.start)\n      .map(sub => ({\n        ...sub,\n        start: sub.start - feature.start,\n        end: sub.end - feature.start,\n      }))\n\n    // we filter duplicate entries in cds and exon lists duplicate entries\n    // may be rare but was seen in Gencode v36 track NCList, likely a bug\n    // on GFF3 or probably worth ignoring here (produces broken protein\n    // translations if included)\n    //\n    // position 1:224,800,006..225,203,064 gene ENSG00000185842.15 first\n    // transcript ENST00000445597.6\n    //\n    // http://localhost:3000/?config=test_data%2Fconfig.json&session=share-FUl7G1isvF&password=HXh5Y\n\n    let cds = dedupe(children.filter(sub => sub.type === 'CDS'))\n    let utr = dedupe(children.filter(sub => sub.type?.match(/utr/i)))\n    let exons = dedupe(children.filter(sub => sub.type === 'exon'))\n\n    if (!utr.length && cds.length && exons.length) {\n      utr = calculateUTRs(cds, exons)\n    }\n    if (!utr.length && cds.length && !exons.length) {\n      utr = calculateUTRs2(cds, {\n        start: 0,\n        end: feature.end - feature.start,\n        type: 'gene',\n      })\n    }\n\n    if (feature.strand === -1) {\n      // doing this in a single assignment is needed because downstream and\n      // upstream are swapped so this avoids a temp variable\n      ;[seq, upstream, downstream] = [\n        revcom(seq),\n        revcom(downstream),\n        revcom(upstream),\n      ]\n      cds = revlist(cds, seq.length)\n      exons = revlist(exons, seq.length)\n      utr = revlist(utr, seq.length)\n    }\n    const codonTable = generateCodonTable(defaultCodonTable)\n\n    const Container = showCoordinates ? WordWrap : NoWordWrap\n    return (\n      <div\n        data-testid=\"sequence_panel\"\n        ref={ref}\n        style={{ maxHeight: 300, overflow: 'auto' }}\n      >\n        <Container>\n          <div style={{ background: 'white' }}>\n            {`>${[\n              `${feature.name || feature.id}-${mode}`,\n              `${feature.refName}:${toLocale(feature.start + 1)}-${toLocale(feature.end)}${getStrand(feature.strand as number)}`,\n              mode.endsWith('updownstream')\n                ? `+/- ${toLocale(model.upDownBp)} up/downstream bp`\n                : '',\n            ]\n              .filter(f => !!f)\n              .join(' ')}\\n`}\n          </div>\n          {mode === 'genomic' ? (\n            <GenomicSequence feature={feature} model={model} sequence={seq} />\n          ) : mode === 'genomic_sequence_updownstream' ? (\n            <GenomicSequence\n              model={model}\n              feature={feature}\n              sequence={seq}\n              upstream={upstream}\n              downstream={downstream}\n            />\n          ) : mode === 'cds' ? (\n            <CDSSequence model={model} cds={cds} sequence={seq} />\n          ) : mode === 'cdna' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              utr={utr}\n              sequence={seq}\n            />\n          ) : mode === 'protein' ? (\n            <ProteinSequence\n              model={model}\n              cds={cds}\n              codonTable={codonTable}\n              sequence={seq}\n            />\n          ) : mode === 'gene' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              utr={utr}\n              sequence={seq}\n              includeIntrons\n            />\n          ) : mode === 'gene_collapsed_intron' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              includeIntrons\n              collapseIntron\n            />\n          ) : mode === 'gene_updownstream' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              upstream={upstream}\n              downstream={downstream}\n              includeIntrons\n            />\n          ) : mode === 'gene_updownstream_collapsed_intron' ? (\n            <CDNASequence\n              model={model}\n              exons={exons}\n              feature={feature}\n              cds={cds}\n              sequence={seq}\n              utr={utr}\n              upstream={upstream}\n              downstream={downstream}\n              includeIntrons\n              collapseIntron\n            />\n          ) : (\n            <div>Unknown type</div>\n          )}\n        </Container>\n      </div>\n    )\n  }),\n)\n\nexport default SequencePanel\n"],"names":["cdsColor","updownstreamColor","splitString","str","charactersPerRow","showCoordinates","currRemainder","splitSize","numChunks","Math","ceil","length","chunks","Array","splitStart","iter","offset","inc","r","slice","res","i","j","segments","remainder","at","replaceAll","observer","start","color","strand","coordStart","model","map","chunk","idx","prefix","padStart","postfix","React","key","style","background","utr","cds","exons","sequence","upstream","downstream","feature","includeIntrons","collapseIntron","upperCaseCDS","intronBp","showCoordinatesSetting","hasCds","sort","a","b","filter","f","end","toLower","s","toLowerCase","toUpper","toUpperCase","fullGenomicCoordinates","mult","currStart","upstreamChunk","SequenceDisplay","middleChunks","intron","type","push","JSON","stringify","downstreamChunk","codonTable","stitch","protein","middleChunk","WordWrap","children","fontFamily","fontSize","NoWordWrap","maxWidth","whiteSpace","wordBreak","props","ref","mode","seq","subfeatures","sub","dedupe","match","calculateUTRs","calculateUTRs2","revcom","revlist","generateCodonTable","defaultCodonTable","Container","maxHeight","overflow","name","id","refName","toLocale","endsWith","upDownBp","join","GenomicSequence","CDSSequence","CDNASequence","ProteinSequence"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7013.5240d550.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7013,6833],{86833:(e,t,s)=>{s.r(t),s.d(t,{default:()=>c,makeFeatures:()=>u});var a=s(46377),r=s(6434),n=s(66885),o=s(68584);function u(e){const t=new Map;for(const s of e){const e=new r.A(s),a=e.get("refName");let n=t.get(a);n||(n=[],t.set(a,n)),n.push(e)}for(const e of t.values())e.sort(((e,t)=>e.get("start")-t.get("start")));return t}class c extends a.BaseFeatureDataAdapter{constructor(e,t,s){super(e,t,s);const a=(0,o.readConfObject)(e,"features");this.features=u(a)}async getRefNames(){return[...this.features.keys()]}async getRefNameAliases(){return[...this.features.values()].map((e=>({refName:e[0].get("refName"),aliases:e[0].get("aliases")})))}getFeatures(e){const{refName:t,start:s,end:a}=e;return(0,n.ObservableCreate)((async e=>{const r=this.features.get(t)||[];for(const t of r)t.get("end")>s&&t.get("start")<a&&e.next(t);e.complete()}))}freeResources(){}}},97013:(e,t,s)=>{s.r(t),s.d(t,{default:()=>c});var a=s(6434),r=s(66885),n=s(82088),o=s(86833),u=s(44728);class c extends o.default{getFeatures(e){return(0,r.ObservableCreate)((async t=>{const s=(await(0,u._)(super.getFeatures(e).pipe((0,n.$)())))[0];t.next(new a.A({...s.toJSON(),uniqueId:`${s.id()}:${e.start}-${e.end}`,end:e.end,start:e.start,seq:s.get("seq").slice(Math.max(e.start-s.get("start"),0),Math.max(e.end-s.get("start"),0))})),t.complete()}))}async getRegions(){const e=[];for(const[t,s]of this.features){let a;for(const r of s)a&&a.end>=r.get("start")&&a.start<=r.get("end")?a.end=r.get("end"):(a&&e.push(a),a={refName:t,start:r.get("start"),end:r.get("end")});a&&e.push(a)}return e}freeResources(){}}}}]);
+//# sourceMappingURL=7013.5240d550.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7013.5240d550.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7013.5240d550.chunk.js","mappings":"8NAcO,SAASA,EAAaC,GAC3B,MAAMC,EAAW,IAAIC,IACrB,IAAK,MAAMC,KAASH,EAAO,CACzB,MAAMI,EAAI,IAAIC,EAAAA,EAAcF,GACtBG,EAAUF,EAAEG,IAAI,WACtB,IAAIC,EAASP,EAASM,IAAID,GACrBE,IACHA,EAAS,GACTP,EAASQ,IAAIH,EAASE,IAGxBA,EAAOE,KAAKN,EACd,CAGA,IAAK,MAAMO,KAAeV,EAASW,SACjCD,EAAYE,MAAK,CAACC,EAAGC,IAAMD,EAAEP,IAAI,SAAWQ,EAAER,IAAI,WAGpD,OAAON,CACT,CAEe,MAAMe,UAA0BC,EAAAA,uBAG7CC,WAAAA,CACEC,EACAC,EACAC,GAEAC,MAAMH,EAAMC,EAAeC,GAC3B,MAAME,GAAQC,EAAAA,EAAAA,gBAAeL,EAAM,YACnCM,KAAKxB,SAAWF,EAAawB,EAC/B,CAEA,iBAAMG,GACJ,MAAO,IAAID,KAAKxB,SAAS0B,OAC3B,CAEA,uBAAMC,GACJ,MAAO,IAAIH,KAAKxB,SAASW,UAAUiB,KAAIC,IAAgB,CACrDxB,QAASwB,EAAa,GAAIvB,IAAI,WAC9BwB,QAASD,EAAa,GAAIvB,IAAI,cAElC,CAEAyB,WAAAA,CAAYC,GACV,MAAM,QAAE3B,EAAO,MAAE4B,EAAK,IAAEC,GAAQF,EAEhC,OAAOG,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAMpC,EAAWwB,KAAKxB,SAASM,IAAID,IAAY,GAC/C,IAAK,MAAMF,KAAKH,EACVG,EAAEG,IAAI,OAAS2B,GAAS9B,EAAEG,IAAI,SAAW4B,GAC3CG,EAASC,KAAKnC,GAGlBkC,EAASE,UAAU,GAEvB,CAEAC,aAAAA,GAAuC,E,0GChE1B,MAAMC,UACX1B,EAAAA,QAQRgB,WAAAA,CAAYC,GACV,OAAOG,EAAAA,EAAAA,mBAA0BC,UAC/B,MAGMM,SAHcC,EAAAA,EAAAA,GAClBtB,MAAMU,YAAYC,GAAQY,MAAKC,EAAAA,EAAAA,QAEd,GACnBR,EAASC,KACP,IAAIlC,EAAAA,EAAc,IACbsC,EAAKI,SACRC,SAAU,GAAGL,EAAKM,QAAQhB,EAAOC,SAASD,EAAOE,MACjDA,IAAKF,EAAOE,IACZD,MAAOD,EAAOC,MACdgB,IAAKP,EACFpC,IAAI,OACJ4C,MACCC,KAAKC,IAAIpB,EAAOC,MAAQS,EAAKpC,IAAI,SAAU,GAC3C6C,KAAKC,IAAIpB,EAAOE,IAAMQ,EAAKpC,IAAI,SAAU,OAKjD+B,EAASE,UAAU,GAEvB,CAKA,gBAAMc,GACJ,MAAMC,EAAU,GAGhB,IAAK,MAAOjD,EAASL,KAAawB,KAAKxB,SAAU,CAC/C,IAAIuD,EAGJ,IAAK,MAAMC,KAAWxD,EAElBuD,GACAA,EAAcrB,KAAOsB,EAAQlD,IAAI,UACjCiD,EAActB,OAASuB,EAAQlD,IAAI,OAEnCiD,EAAcrB,IAAMsB,EAAQlD,IAAI,QAE5BiD,GACFD,EAAQ7C,KAAK8C,GAEfA,EAAgB,CACdlD,UACA4B,MAAOuB,EAAQlD,IAAI,SACnB4B,IAAKsB,EAAQlD,IAAI,SAInBiD,GACFD,EAAQ7C,KAAK8C,EAEjB,CAEA,OAAOD,CACT,CAOAd,aAAAA,GAAuC,E","sources":["../../../plugins/config/src/FromConfigAdapter/FromConfigAdapter.ts","../../../plugins/config/src/FromConfigSequenceAdapter/FromConfigSequenceAdapter.ts"],"sourcesContent":["import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport SimpleFeature, {\n  Feature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nexport function makeFeatures(fdata: SimpleFeatureSerialized[]) {\n  const features = new Map<string, Feature[]>()\n  for (const entry of fdata) {\n    const f = new SimpleFeature(entry)\n    const refName = f.get('refName') as string\n    let bucket = features.get(refName)\n    if (!bucket) {\n      bucket = []\n      features.set(refName, bucket)\n    }\n\n    bucket.push(f)\n  }\n\n  // sort the features on each reference sequence by start coordinate\n  for (const refFeatures of features.values()) {\n    refFeatures.sort((a, b) => a.get('start') - b.get('start'))\n  }\n\n  return features\n}\n\nexport default class FromConfigAdapter extends BaseFeatureDataAdapter {\n  protected features: Map<string, Feature[]>\n\n  constructor(\n    conf: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(conf, getSubAdapter, pluginManager)\n    const feats = readConfObject(conf, 'features') as SimpleFeatureSerialized[]\n    this.features = makeFeatures(feats)\n  }\n\n  async getRefNames() {\n    return [...this.features.keys()]\n  }\n\n  async getRefNameAliases() {\n    return [...this.features.values()].map(featureArray => ({\n      refName: featureArray[0]!.get('refName'),\n      aliases: featureArray[0]!.get('aliases'),\n    }))\n  }\n\n  getFeatures(region: NoAssemblyRegion) {\n    const { refName, start, end } = region\n\n    return ObservableCreate<Feature>(async observer => {\n      const features = this.features.get(refName) || []\n      for (const f of features) {\n        if (f.get('end') > start && f.get('start') < end) {\n          observer.next(f)\n        }\n      }\n      observer.complete()\n    })\n  }\n\n  freeResources(/* { region } */): void {}\n}\n","import SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { toArray } from 'rxjs/operators'\nimport { RegionsAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// locals\nimport FromConfigAdapter from '../FromConfigAdapter/FromConfigAdapter'\nimport { firstValueFrom } from 'rxjs'\n\nexport default class FromConfigSequenceAdapter\n  extends FromConfigAdapter\n  implements RegionsAdapter\n{\n  /**\n   * Fetch features for a certain region\n   * @param region - Region\n   * @returns Observable of Feature objects in the region\n   */\n  getFeatures(region: NoAssemblyRegion) {\n    return ObservableCreate<Feature>(async observer => {\n      const feats = await firstValueFrom(\n        super.getFeatures(region).pipe(toArray()),\n      )\n      const feat = feats[0]!\n      observer.next(\n        new SimpleFeature({\n          ...feat.toJSON(),\n          uniqueId: `${feat.id()}:${region.start}-${region.end}`,\n          end: region.end,\n          start: region.start,\n          seq: feat\n            .get('seq')\n            .slice(\n              Math.max(region.start - feat.get('start'), 0),\n              Math.max(region.end - feat.get('start'), 0),\n            ),\n        }),\n      )\n\n      observer.complete()\n    })\n  }\n\n  /**\n   * Get refName, start, and end for all features after collapsing any overlaps\n   */\n  async getRegions() {\n    const regions = []\n\n    // recall: features are stored in this object sorted by start coordinate\n    for (const [refName, features] of this.features) {\n      let currentRegion:\n        | { start: number; end: number; refName: string }\n        | undefined\n      for (const feature of features) {\n        if (\n          currentRegion &&\n          currentRegion.end >= feature.get('start') &&\n          currentRegion.start <= feature.get('end')\n        ) {\n          currentRegion.end = feature.get('end')\n        } else {\n          if (currentRegion) {\n            regions.push(currentRegion)\n          }\n          currentRegion = {\n            refName,\n            start: feature.get('start'),\n            end: feature.get('end'),\n          }\n        }\n      }\n      if (currentRegion) {\n        regions.push(currentRegion)\n      }\n    }\n\n    return regions\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  freeResources(/* { region } */): void {}\n}\n"],"names":["makeFeatures","fdata","features","Map","entry","f","SimpleFeature","refName","get","bucket","set","push","refFeatures","values","sort","a","b","FromConfigAdapter","BaseFeatureDataAdapter","constructor","conf","getSubAdapter","pluginManager","super","feats","readConfObject","this","getRefNames","keys","getRefNameAliases","map","featureArray","aliases","getFeatures","region","start","end","ObservableCreate","async","observer","next","complete","freeResources","FromConfigSequenceAdapter","feat","firstValueFrom","pipe","toArray","toJSON","uniqueId","id","seq","slice","Math","max","getRegions","regions","currentRegion","feature"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7067.e9508417.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7067],{37067:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.A});var a=s(26993)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7087.79101e8e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7087],{67087:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});var l=n(7552),a=n(36715),r=n(87731),i=n(99546),o=n(68984);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},s.apply(null,arguments)}const c=(0,l.lazy)((()=>n.e(4704).then(n.bind(n,84704)))),u=(0,l.lazy)((()=>n.e(5903).then(n.bind(n,25903))));function m({locStrings:e,model:t}){const n=(0,i.getSession)(t);return l.createElement("div",null,l.createElement(a.A,null,"Navigate to breakend endpoint in linear view:"),l.createElement("ul",null,e.map(((e,a)=>l.createElement("li",{key:`${e}-${a}`},e," ",l.createElement(r.A,{href:"#",onClick:l=>{l.preventDefault();const{view:a}=t;try{if(!a)throw new Error("No view associated with this feature detail panel anymore");a.navToLocString?.(e)}catch(e){console.error(e),n.notify(`${e}`)}}},"(LGV)"))))))}function w({locStrings:e,model:t,feature:n,viewType:o}){const s=(0,i.getSession)(t),m=new i.SimpleFeature(n);return l.createElement("div",null,l.createElement(a.A,null,"Launch split view"),l.createElement("ul",null,e.map((e=>l.createElement("li",{key:JSON.stringify(e)},`${n.refName}:${n.start} // ${e}`," ",l.createElement(r.A,{href:"#",onClick:e=>{e.preventDefault(),s.queueDialog((e=>[c,{handleClose:e,model:t,feature:m,viewType:o,view:t.view,assemblyName:t.view.displayedRegions[0].assemblyName}]))}},"(top/bottom)")," ",l.createElement(r.A,{href:"#",onClick:e=>{e.preventDefault(),s.queueDialog((e=>[u,{handleClose:e,model:t,feature:m,viewType:o,view:t.view,assemblyName:t.view.displayedRegions[0].assemblyName}]))}},"(single row)"))))))}function d(e){const{model:t,locStrings:n,feature:a}=e,r=(0,i.getSession)(t),{pluginManager:c}=(0,i.getEnv)(r);let u;try{u=c.getViewType("BreakpointSplitView")}catch(e){}return l.createElement(o.BaseCard,s({},e,{title:"Breakends"}),l.createElement(m,{model:t,locStrings:n}),u?l.createElement(w,{viewType:u,model:t,locStrings:n,feature:a}):null)}}}]);
+//# sourceMappingURL=7087.79101e8e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7087.79101e8e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7087.79101e8e.chunk.js","mappings":"yaAeA,MAAMA,GAAiCC,EAAAA,EAAAA,OACrC,IAAM,kCAEFC,GAAkCD,EAAAA,EAAAA,OACtC,IAAM,kCAGR,SAASE,GAAc,WACrBC,EAAU,MACVC,IAKA,MAAMC,GAAUC,EAAAA,EAAAA,YAAWF,GAC3B,OACEG,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAU,KAAC,iDACZD,EAAAA,cAAA,UACGJ,EAAWM,KAAI,CAACC,EAAWC,IAE1BJ,EAAAA,cAAA,MAAIK,IAAK,GAAGF,KAAaC,KACtBD,EAAW,IACZH,EAAAA,cAACM,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,IACPA,EAAMC,iBACN,MAAM,KAAEC,GAASd,EACjB,IACE,IAAIc,EAGF,MAAM,IAAIC,MACR,6DAHFD,EAAKE,iBAAiBV,EAM1B,CAAE,MAAOW,GACPC,QAAQC,MAAMF,GACdhB,EAAQmB,OAAO,GAAGH,IACpB,IAEH,aAQb,CAEA,SAASI,GAA+B,WACtCtB,EAAU,MACVC,EAAK,QACLsB,EAAO,SACPC,IAOA,MAAMtB,GAAUC,EAAAA,EAAAA,YAAWF,GACrBwB,EAAgB,IAAIC,EAAAA,cAAcH,GACxC,OACEnB,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAU,KAAC,qBACZD,EAAAA,cAAA,UACGJ,EAAWM,KAAIC,GACdH,EAAAA,cAAA,MAAIK,IAAKkB,KAAKC,UAAUrB,IACrB,GAAGgB,EAAQM,WAAWN,EAAQO,YAAYvB,IAAa,IACxDH,EAAAA,cAACM,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,IACPA,EAAMC,iBACNZ,EAAQ6B,aAAYC,GAAe,CACjCpC,EACA,CACEoC,cACA/B,QACAsB,QAASE,EAETD,WACAT,KAAMd,EAAMc,KACZkB,aAAchC,EAAMc,KAAKmB,iBAAiB,GAAGD,gBAE/C,GAEL,gBAEO,IACR7B,EAAAA,cAACM,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,IACPA,EAAMC,iBACNZ,EAAQ6B,aAAYC,GAAe,CACjClC,EACA,CACEkC,cACA/B,QACAsB,QAASE,EAETD,WACAT,KAAMd,EAAMc,KACZkB,aAAchC,EAAMc,KAAKmB,iBAAiB,GAAGD,gBAE/C,GAEL,oBAQb,CAEe,SAASE,EAAcC,GAKpC,MAAM,MAAEnC,EAAK,WAAED,EAAU,QAAEuB,GAAYa,EACjClC,GAAUC,EAAAA,EAAAA,YAAWF,IACrB,cAAEoC,IAAkBC,EAAAA,EAAAA,QAAOpC,GACjC,IAAIsB,EAEJ,IACEA,EAAWa,EAAcE,YAAY,sBACvC,CAAE,MAAOrB,GACP,CAGF,OACEd,EAAAA,cAACoC,EAAAA,SAAQC,EAAA,GAAKL,EAAK,CAAEM,MAAM,cACzBtC,EAAAA,cAACL,EAAa,CAACE,MAAOA,EAAOD,WAAYA,IACxCwB,EACCpB,EAAAA,cAACkB,EAA8B,CAC7BE,SAAUA,EACVvB,MAAOA,EACPD,WAAYA,EACZuB,QAASA,IAET,KAGV,C","sources":["../../../plugins/variants/src/VariantFeatureWidget/LaunchBreakendPanel.tsx"],"sourcesContent":["import React, { lazy } from 'react'\nimport { Link, Typography } from '@mui/material'\nimport {\n  getEnv,\n  getSession,\n  SimpleFeature,\n  SimpleFeatureSerialized,\n} from '@jbrowse/core/util'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { VariantFeatureWidgetModel } from './stateModelFactory'\n\n// lazies\nconst BreakendMultiLevelOptionDialog = lazy(\n  () => import('./BreakendMultiLevelOptionDialog'),\n)\nconst BreakendSingleLevelOptionDialog = lazy(\n  () => import('./BreakendSingleLevelOptionDialog'),\n)\n\nfunction LocStringList({\n  locStrings,\n  model,\n}: {\n  locStrings: string[]\n  model: VariantFeatureWidgetModel\n}) {\n  const session = getSession(model)\n  return (\n    <div>\n      <Typography>Navigate to breakend endpoint in linear view:</Typography>\n      <ul>\n        {locStrings.map((locString, index) => (\n          /* biome-ignore lint/suspicious/noArrayIndexKey: */\n          <li key={`${locString}-${index}`}>\n            {locString}{' '}\n            <Link\n              href=\"#\"\n              onClick={event => {\n                event.preventDefault()\n                const { view } = model\n                try {\n                  if (view) {\n                    view.navToLocString?.(locString)\n                  } else {\n                    throw new Error(\n                      'No view associated with this feature detail panel anymore',\n                    )\n                  }\n                } catch (e) {\n                  console.error(e)\n                  session.notify(`${e}`)\n                }\n              }}\n            >\n              (LGV)\n            </Link>\n          </li>\n        ))}\n      </ul>\n    </div>\n  )\n}\n\nfunction LaunchBreakpointSplitViewPanel({\n  locStrings,\n  model,\n  feature,\n  viewType,\n}: {\n  locStrings: string[]\n  model: VariantFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n  viewType: ViewType\n}) {\n  const session = getSession(model)\n  const simpleFeature = new SimpleFeature(feature)\n  return (\n    <div>\n      <Typography>Launch split view</Typography>\n      <ul>\n        {locStrings.map(locString => (\n          <li key={JSON.stringify(locString)}>\n            {`${feature.refName}:${feature.start} // ${locString}`}{' '}\n            <Link\n              href=\"#\"\n              onClick={event => {\n                event.preventDefault()\n                session.queueDialog(handleClose => [\n                  BreakendMultiLevelOptionDialog,\n                  {\n                    handleClose,\n                    model,\n                    feature: simpleFeature,\n                    // @ts-expect-error\n                    viewType,\n                    view: model.view,\n                    assemblyName: model.view.displayedRegions[0].assemblyName,\n                  },\n                ])\n              }}\n            >\n              (top/bottom)\n            </Link>{' '}\n            <Link\n              href=\"#\"\n              onClick={event => {\n                event.preventDefault()\n                session.queueDialog(handleClose => [\n                  BreakendSingleLevelOptionDialog,\n                  {\n                    handleClose,\n                    model,\n                    feature: simpleFeature,\n                    // @ts-expect-error\n                    viewType,\n                    view: model.view,\n                    assemblyName: model.view.displayedRegions[0].assemblyName,\n                  },\n                ])\n              }}\n            >\n              (single row)\n            </Link>\n          </li>\n        ))}\n      </ul>\n    </div>\n  )\n}\n\nexport default function BreakendPanel(props: {\n  locStrings: string[]\n  model: VariantFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { model, locStrings, feature } = props\n  const session = getSession(model)\n  const { pluginManager } = getEnv(session)\n  let viewType: ViewType | undefined\n\n  try {\n    viewType = pluginManager.getViewType('BreakpointSplitView')\n  } catch (e) {\n    // ignore\n  }\n\n  return (\n    <BaseCard {...props} title=\"Breakends\">\n      <LocStringList model={model} locStrings={locStrings} />\n      {viewType ? (\n        <LaunchBreakpointSplitViewPanel\n          viewType={viewType}\n          model={model}\n          locStrings={locStrings}\n          feature={feature}\n        />\n      ) : null}\n    </BaseCard>\n  )\n}\n"],"names":["BreakendMultiLevelOptionDialog","lazy","BreakendSingleLevelOptionDialog","LocStringList","locStrings","model","session","getSession","React","Typography","map","locString","index","key","Link","href","onClick","event","preventDefault","view","Error","navToLocString","e","console","error","notify","LaunchBreakpointSplitViewPanel","feature","viewType","simpleFeature","SimpleFeature","JSON","stringify","refName","start","queueDialog","handleClose","assemblyName","displayedRegions","BreakendPanel","props","pluginManager","getEnv","getViewType","BaseCard","_extends","title"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7117.b3239756.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7117],{17177:(e,t,a)=>{a.d(t,{A:()=>A});var o=a(7552),r=a(93878),i=a(70799),s=a(72639),c=a(15622),n=a(58520),l=a(15110),d=a(51148),h=a(60129),p=a(4785),m=a(66889),u=a(69500);const g=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.edge&&t[`edge${(0,c.A)(a.edge)}`],t[`size${(0,c.A)(a.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${m.A.thumb}`]:{width:16,height:16},[`& .${m.A.switchBase}`]:{padding:4,[`&.${m.A.checked}`]:{transform:"translateX(16px)"}}}}]}),v=(0,d.Ay)(l.A,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.switchBase,{[`& .${m.A.input}`]:t.input},"default"!==a.color&&t[`color${(0,c.A)(a.color)}`]]}})((0,h.A)((({theme:e})=>({position:"absolute",top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${"light"===e.palette.mode?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create(["left","transform"],{duration:e.transitions.duration.shortest}),[`&.${m.A.checked}`]:{transform:"translateX(20px)"},[`&.${m.A.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${"light"===e.palette.mode?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${m.A.checked} + .${m.A.track}`]:{opacity:.5},[`&.${m.A.disabled} + .${m.A.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:""+("light"===e.palette.mode?.12:.2)},[`& .${m.A.input}`]:{left:"-100%",width:"300%"}}))),(0,h.A)((({theme:e})=>({"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(e.palette).filter((0,n.A)(["light"])).map((([t])=>({props:{color:t},style:{[`&.${m.A.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${m.A.disabled}`]:{color:e.vars?e.vars.palette.Switch[`${t}DisabledColor`]:`${"light"===e.palette.mode?(0,s.a)(e.palette[t].main,.62):(0,s.e$)(e.palette[t].main,.55)}`}},[`&.${m.A.checked} + .${m.A.track}`]:{backgroundColor:(e.vars||e).palette[t].main}}})))]})))),b=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(e,t)=>t.track})((0,h.A)((({theme:e})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),backgroundColor:e.vars?e.vars.palette.common.onBackground:`${"light"===e.palette.mode?e.palette.common.black:e.palette.common.white}`,opacity:e.vars?e.vars.opacity.switchTrack:""+("light"===e.palette.mode?.38:.3)})))),w=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})((0,h.A)((({theme:e})=>({boxShadow:(e.vars||e).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"})))),A=o.forwardRef((function(e,t){const a=(0,p.b)({props:e,name:"MuiSwitch"}),{className:o,color:s="primary",edge:n=!1,size:l="medium",sx:d,...h}=a,A={...a,color:s,edge:n,size:l},k=(e=>{const{classes:t,edge:a,size:o,color:r,checked:s,disabled:n}=e,l={root:["root",a&&`edge${(0,c.A)(a)}`,`size${(0,c.A)(o)}`],switchBase:["switchBase",`color${(0,c.A)(r)}`,s&&"checked",n&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},d=(0,i.A)(l,m.n,t);return{...t,...d}})(A),$=(0,u.jsx)(w,{className:k.thumb,ownerState:A});return(0,u.jsxs)(g,{className:(0,r.A)(k.root,o),sx:d,ownerState:A,children:[(0,u.jsx)(v,{type:"checkbox",icon:$,checkedIcon:$,ref:t,ownerState:A,...h,classes:{...k,root:k.switchBase}}),(0,u.jsx)(b,{className:k.track,ownerState:A})]})}))},67117:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o.A,getSwitchUtilityClass:()=>r.n,switchClasses:()=>r.A});var o=a(17177),r=a(66889)},66889:(e,t,a)=>{a.d(t,{A:()=>s,n:()=>i});var o=a(33761),r=a(85693);function i(e){return(0,r.Ay)("MuiSwitch",e)}const s=(0,o.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"])}}]);
+//# sourceMappingURL=7117.b3239756.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7117.b3239756.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7117.b3239756.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Switch/Switch.js","../../../node_modules/@mui/material/Switch/switchClasses.js"],"sourcesContent":["'use client';\n\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, darken, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport switchClasses, { getSwitchUtilityClass } from \"./switchClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    edge,\n    size,\n    color,\n    checked,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n    switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n    thumb: ['thumb'],\n    track: ['track'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the disabled and checked classes to the SwitchBase\n    ...composedClasses\n  };\n};\nconst SwitchRoot = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})({\n  display: 'inline-flex',\n  width: 34 + 12 * 2,\n  height: 14 + 12 * 2,\n  overflow: 'hidden',\n  padding: 12,\n  boxSizing: 'border-box',\n  position: 'relative',\n  flexShrink: 0,\n  zIndex: 0,\n  // Reset the stacking context.\n  verticalAlign: 'middle',\n  // For correct alignment with the text.\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [{\n    props: {\n      edge: 'start'\n    },\n    style: {\n      marginLeft: -8\n    }\n  }, {\n    props: {\n      edge: 'end'\n    },\n    style: {\n      marginRight: -8\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 24,\n      padding: 7,\n      [`& .${switchClasses.thumb}`]: {\n        width: 16,\n        height: 16\n      },\n      [`& .${switchClasses.switchBase}`]: {\n        padding: 4,\n        [`&.${switchClasses.checked}`]: {\n          transform: 'translateX(16px)'\n        }\n      }\n    }\n  }]\n});\nconst SwitchSwitchBase = styled(SwitchBase, {\n  name: 'MuiSwitch',\n  slot: 'SwitchBase',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.switchBase, {\n      [`& .${switchClasses.input}`]: styles.input\n    }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  zIndex: 1,\n  // Render above the focus ripple.\n  color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n  transition: theme.transitions.create(['left', 'transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${switchClasses.checked}`]: {\n    transform: 'translateX(20px)'\n  },\n  [`&.${switchClasses.disabled}`]: {\n    color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n  },\n  [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n    opacity: 0.5\n  },\n  [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n    opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n  },\n  [`& .${switchClasses.input}`]: {\n    left: '-100%',\n    width: '300%'\n  }\n})), memoTheme(({\n  theme\n}) => ({\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${switchClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity),\n          '@media (hover: none)': {\n            backgroundColor: 'transparent'\n          }\n        },\n        [`&.${switchClasses.disabled}`]: {\n          color: theme.vars ? theme.vars.palette.Switch[`${color}DisabledColor`] : `${theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.55)}`\n        }\n      },\n      [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n        backgroundColor: (theme.vars || theme).palette[color].main\n      }\n    }\n  }))]\n})));\nconst SwitchTrack = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(memoTheme(({\n  theme\n}) => ({\n  height: '100%',\n  width: '100%',\n  borderRadius: 14 / 2,\n  zIndex: -1,\n  transition: theme.transitions.create(['opacity', 'background-color'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n  opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n})));\nconst SwitchThumb = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => styles.thumb\n})(memoTheme(({\n  theme\n}) => ({\n  boxShadow: (theme.vars || theme).shadows[1],\n  backgroundColor: 'currentColor',\n  width: 20,\n  height: 20,\n  borderRadius: '50%'\n})));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSwitch'\n  });\n  const {\n    className,\n    color = 'primary',\n    edge = false,\n    size = 'medium',\n    sx,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    edge,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n    className: classes.thumb,\n    ownerState: ownerState\n  });\n  return /*#__PURE__*/_jsxs(SwitchRoot, {\n    className: clsx(classes.root, className),\n    sx: sx,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(SwitchSwitchBase, {\n      type: \"checkbox\",\n      icon: icon,\n      checkedIcon: icon,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      classes: {\n        ...classes,\n        root: classes.switchBase\n      }\n    }), /*#__PURE__*/_jsx(SwitchTrack, {\n      className: classes.track,\n      ownerState: ownerState\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense switch styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Switch;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n  return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;"],"names":["SwitchRoot","name","slot","overridesResolver","props","styles","ownerState","root","edge","size","display","width","height","overflow","padding","boxSizing","position","flexShrink","zIndex","verticalAlign","colorAdjust","variants","style","marginLeft","marginRight","thumb","switchBase","checked","transform","SwitchSwitchBase","input","color","theme","top","left","vars","palette","Switch","defaultColor","mode","common","white","grey","transition","transitions","create","duration","shortest","disabled","defaultDisabledColor","track","opacity","switchTrackDisabled","backgroundColor","action","activeChannel","hoverOpacity","active","Object","entries","filter","map","main","mainChannel","SwitchTrack","borderRadius","onBackground","black","switchTrack","SwitchThumb","boxShadow","shadows","inProps","ref","className","sx","other","classes","slots","composedClasses","useUtilityClasses","icon","children","type","checkedIcon","getSwitchUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7126.b4b7d70b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7126],{53740:(e,t,n)=>{n.d(t,{A:()=>f});var r=n(7552),o=n(68446),a=n(99546),l=n(68584),s=n(9502);function i(e,t){const n=t?(0,s.h)(t):void 0,r=e.get("start");let o=e.get("end");const a=e.get("strand"),l=e.get("mate"),i=e.get("refName");let c,m=0,u=0,d=0,g=0;if(["<TRA","<DEL","<INV","<INS","<DUP","<CNV"].some((e=>t?.startsWith(e)))){const t=e.get("INFO"),n=t?.END?.[0]??o;c=t?.CHR2?.[0]??i,m=n,u=n-1,o=r+1}else if(n?.MatePosition){const e=n.MatePosition.split(":");g="left"===n.MateDirection?1:-1,d="left"===n.Join?-1:1,m=+e[1],u=+e[1]-1,c=e[0]}return{k1:{refName:i,start:r,end:o,strand:a,mateDirection:g},k2:l??{refName:c||"unknown",end:m,start:u,mateDirection:d}}}function c(e,t){const{k1:n,k2:r}=i(e,t);return[e.get("name"),e.get("id"),(0,a.assembleLocString)(n),(0,a.assembleLocString)(r),e.get("INFO")?.SVTYPE,t].filter((e=>!!e)).join(" - ")}function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(null,arguments)}const u=(0,r.lazy)((()=>n.e(2241).then(n.bind(n,72241)))),d=(0,o.observer)((function({model:e,feature:t,alt:n,assembly:o,view:s}){const[d,g]=(0,r.useState)(!1),{height:f}=e,{k1:b,k2:h}=i(t,n),k=(0,r.useRef)(null),p=(0,l.getConf)(e,"color",{feature:t,alt:n}),E=o.getCanonicalRefName(b.refName)||b.refName,v=o.getCanonicalRefName(h.refName)||h.refName,x=b.start,N=h.start,C=s.bpToPx({refName:E,coord:x})?.offsetPx,y=s.bpToPx({refName:v,coord:N})?.offsetPx;if(void 0!==C&&void 0!==y){const o=(y-C)/2,l=Math.abs(o),i=Math.min(f,l),E=C-s.offsetPx,v=y-s.offsetPx,x=d?"black":p,N=3;return l>1?r.createElement(r.Fragment,null,r.createElement("path",m({d:`M ${E} 0 C ${E} ${i}, ${v} ${i}, ${v} 0`,ref:k},(0,a.getStrokeProps)(x),{strokeWidth:N,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},fill:"none",pointerEvents:"stroke"})),b.mateDirection?r.createElement("line",m({},(0,a.getStrokeProps)(x),{strokeWidth:N,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},x1:E,x2:E+20*b.mateDirection,y1:1.5,y2:1.5})):null,h.mateDirection?r.createElement("line",m({},(0,a.getStrokeProps)(x),{strokeWidth:N,onMouseOut:()=>{g(!1)},onMouseOver:()=>{g(!0)},onClick:()=>{e.selectFeature(t)},x1:v,x2:v+20*h.mateDirection,y1:1.5,y2:1.5})):null,d?r.createElement(r.Suspense,{fallback:null},r.createElement(u,{contents:c(t,n)})):null):null}return null})),g=(0,o.observer)((function({model:e,exportSVG:t,children:n}){const{height:o}=e,l=(0,a.getContainingView)(e),s=Math.round(l.dynamicBlocks.totalWidthPx);return t?n:r.createElement("svg",{width:s,height:o},n)})),f=(0,o.observer)((function({model:e,exportSVG:t}){const n=(0,a.getContainingView)(e),o=(0,a.getSession)(e),{assemblyManager:l}=o,{features:s}=e,i=l.get(n.assemblyNames[0]);return i?r.createElement(g,{model:e,exportSVG:t},s?.map((t=>{const a=t.get("ALT");return a?.map((a=>r.createElement(d,{key:`${t.id()}-${a}`,session:o,feature:t,alt:a,view:n,model:e,assembly:i})))??r.createElement(d,{key:t.id(),session:o,feature:t,view:n,model:e,assembly:i})}))):null}))},87126:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var r=n(7552),o=n(68446),a=n(89003),l=n(61723),s=n(49823),i=n(20529),c=n(75785),m=n(4902),u=n(71627),d=n(99546);const g=(0,r.lazy)((()=>Promise.all([n.e(9245),n.e(4630)]).then(n.bind(n,74630)))),f=(0,c.n9)()((e=>({loading:{backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${e.palette.action.disabledBackground} 5px, ${e.palette.action.disabledBackground} 10px)`,position:"absolute",bottom:0,height:50,width:300,right:0,pointerEvents:"none",textAlign:"center"}}))),b=(0,o.observer)((function({model:e,children:t}){const{error:n,regionTooLarge:o}=e;return n?r.createElement(i.LW,{message:`${n}`,severity:"error",action:r.createElement(r.Fragment,null,r.createElement(a.A,{title:"Reload"},r.createElement(l.A,{"data-testid":"reload_button",onClick:()=>{e.reload()}},r.createElement(m.A,null))),r.createElement(a.A,{title:"Show stack trace"},r.createElement(l.A,{onClick:()=>{(0,d.getSession)(e).queueDialog((t=>[g,{onClose:t,error:e.error}]))}},r.createElement(u.A,null))))}):o?e.regionCannotBeRendered():r.createElement(h,{model:e},t)})),h=(0,o.observer)((function({model:e,children:t}){const{loading:n}=e;return r.createElement("div",null,t,n?r.createElement(k,{model:e}):null)})),k=(0,o.observer)((function({model:e}){const{classes:t}=f(),{message:n}=e;return r.createElement("div",{className:t.loading},r.createElement(s.LoadingEllipses,{message:n}))})),p=b;var E=n(53740);const v=(0,o.observer)((function({model:e,exportSVG:t}){return r.createElement(p,{model:e},r.createElement(E.A,{model:e,exportSVG:t}))}))}}]);
+//# sourceMappingURL=7126.b4b7d70b.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7126.b4b7d70b.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7126.b4b7d70b.chunk.js","mappings":"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","sources":["../../../plugins/arc/src/LinearPairedArcDisplay/components/util.ts","../../../plugins/arc/src/LinearPairedArcDisplay/components/Arcs.tsx","../../../plugins/arc/src/LinearPairedArcDisplay/components/BaseDisplayComponent.tsx","../../../plugins/arc/src/LinearPairedArcDisplay/components/ReactComponent.tsx"],"sourcesContent":["import { parseBreakend } from '@gmod/vcf'\nimport { Feature, assembleLocString } from '@jbrowse/core/util'\n\nexport function makeFeaturePair(feature: Feature, alt?: string) {\n  const bnd = alt ? parseBreakend(alt) : undefined\n  const start = feature.get('start')\n  let end = feature.get('end')\n  const strand = feature.get('strand')\n  const mate = feature.get('mate') as\n    | {\n        refName: string\n        start: number\n        end: number\n        mateDirection?: number\n      }\n    | undefined\n  const refName = feature.get('refName')\n\n  let mateRefName: string | undefined\n  let mateEnd = 0\n  let mateStart = 0\n  let joinDirection = 0\n  let mateDirection = 0\n\n  // one sided bracket used, because there could be <INS:ME> and we just check\n  // startswith below\n  const symbolicAlleles = ['<TRA', '<DEL', '<INV', '<INS', '<DUP', '<CNV']\n  if (symbolicAlleles.some(a => alt?.startsWith(a))) {\n    // END is defined to be a single value, not an array. CHR2 not defined in\n    // VCF spec, but should be similar\n    const info = feature.get('INFO')\n    const e = info?.END?.[0] ?? end\n    mateRefName = info?.CHR2?.[0] ?? refName\n    mateEnd = e\n    mateStart = e - 1\n    // re-adjust the arc to be from start to end of feature by re-assigning end\n    // to the 'mate'\n    end = start + 1\n  } else if (bnd?.MatePosition) {\n    const matePosition = bnd.MatePosition.split(':')\n    mateDirection = bnd.MateDirection === 'left' ? 1 : -1\n    joinDirection = bnd.Join === 'left' ? -1 : 1\n    mateEnd = +matePosition[1]!\n    mateStart = +matePosition[1]! - 1\n    mateRefName = matePosition[0]\n  }\n\n  return {\n    k1: {\n      refName,\n      start,\n      end,\n      strand,\n      mateDirection,\n    },\n    k2: mate ?? {\n      refName: mateRefName || 'unknown',\n      end: mateEnd,\n      start: mateStart,\n      mateDirection: joinDirection,\n    },\n  }\n}\n\nexport function makeSummary(feature: Feature, alt?: string) {\n  const { k1, k2 } = makeFeaturePair(feature, alt)\n  return [\n    feature.get('name'),\n    feature.get('id'),\n    assembleLocString(k1),\n    assembleLocString(k2),\n    feature.get('INFO')?.SVTYPE,\n    alt,\n  ]\n    .filter(f => !!f)\n    .join(' - ')\n}\n","import React, { lazy, Suspense, useRef, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  AbstractSessionModel,\n  Feature,\n  getContainingView,\n  getSession,\n  getStrokeProps,\n} from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { Assembly } from '@jbrowse/core/assemblyManager/assembly'\nimport { getConf } from '@jbrowse/core/configuration'\n\n// local\nimport { LinearArcDisplayModel } from '../model'\nimport { makeFeaturePair, makeSummary } from './util'\n\nconst ArcTooltip = lazy(() => import('../../ArcTooltip'))\n\ntype LGV = LinearGenomeViewModel\n\nconst Arc = observer(function ({\n  model,\n  feature,\n  alt,\n  assembly,\n  view,\n}: {\n  feature: Feature\n  alt?: string\n  model: LinearArcDisplayModel\n  assembly: Assembly\n  session: AbstractSessionModel\n  view: LinearGenomeViewModel\n}) {\n  const [mouseOvered, setMouseOvered] = useState(false)\n  const { height } = model\n  const { k1, k2 } = makeFeaturePair(feature, alt)\n  const ref = useRef<SVGPathElement>(null)\n  const c = getConf(model, 'color', { feature, alt })\n  const ra1 = assembly.getCanonicalRefName(k1.refName) || k1.refName\n  const ra2 = assembly.getCanonicalRefName(k2.refName) || k2.refName\n  const p1 = k1.start\n  const p2 = k2.start\n  const r1 = view.bpToPx({ refName: ra1, coord: p1 })?.offsetPx\n  const r2 = view.bpToPx({ refName: ra2, coord: p2 })?.offsetPx\n\n  if (r1 !== undefined && r2 !== undefined) {\n    const radius = (r2 - r1) / 2\n    const absrad = Math.abs(radius)\n    const destY = Math.min(height, absrad)\n    const p1 = r1 - view.offsetPx\n    const p2 = r2 - view.offsetPx\n    const left = p1\n    const right = p2\n    const col = mouseOvered ? 'black' : c\n    const sw = 3\n\n    return absrad > 1 ? (\n      <>\n        <path\n          d={`M ${left} 0 C ${left} ${destY}, ${right} ${destY}, ${right} 0`}\n          ref={ref}\n          {...getStrokeProps(col)}\n          strokeWidth={sw}\n          onMouseOut={() => {\n            setMouseOvered(false)\n          }}\n          onMouseOver={() => {\n            setMouseOvered(true)\n          }}\n          onClick={() => {\n            model.selectFeature(feature)\n          }}\n          fill=\"none\"\n          pointerEvents=\"stroke\"\n        />\n        {k1.mateDirection ? (\n          <line\n            {...getStrokeProps(col)}\n            strokeWidth={sw}\n            onMouseOut={() => {\n              setMouseOvered(false)\n            }}\n            onMouseOver={() => {\n              setMouseOvered(true)\n            }}\n            onClick={() => {\n              model.selectFeature(feature)\n            }}\n            x1={left}\n            x2={left + k1.mateDirection * 20}\n            y1={1.5}\n            y2={1.5}\n          />\n        ) : null}\n        {k2.mateDirection ? (\n          <line\n            {...getStrokeProps(col)}\n            strokeWidth={sw}\n            onMouseOut={() => {\n              setMouseOvered(false)\n            }}\n            onMouseOver={() => {\n              setMouseOvered(true)\n            }}\n            onClick={() => {\n              model.selectFeature(feature)\n            }}\n            x1={right}\n            x2={right + k2.mateDirection * 20}\n            y1={1.5}\n            y2={1.5}\n          />\n        ) : null}\n        {mouseOvered ? (\n          <Suspense fallback={null}>\n            <ArcTooltip contents={makeSummary(feature, alt)} />\n          </Suspense>\n        ) : null}\n      </>\n    ) : null\n  }\n  return null\n})\n\nconst Wrapper = observer(function ({\n  model,\n  exportSVG,\n  children,\n}: {\n  model: LinearArcDisplayModel\n  exportSVG?: boolean\n  children: React.ReactNode\n}) {\n  const { height } = model\n  const view = getContainingView(model) as LGV\n  const width = Math.round(view.dynamicBlocks.totalWidthPx)\n  return exportSVG ? (\n    children\n  ) : (\n    <svg width={width} height={height}>\n      {children}\n    </svg>\n  )\n})\n\nconst Arcs = observer(function ({\n  model,\n  exportSVG,\n}: {\n  model: LinearArcDisplayModel\n  exportSVG?: boolean\n}) {\n  const view = getContainingView(model) as LGV\n  const session = getSession(model)\n  const { assemblyManager } = session\n  const { features } = model\n  const assembly = assemblyManager.get(view.assemblyNames[0]!)\n\n  return assembly ? (\n    <Wrapper model={model} exportSVG={exportSVG}>\n      {features?.map(f => {\n        const alts = f.get('ALT') as string[] | undefined\n        return (\n          alts?.map(a => (\n            <Arc\n              key={`${f.id()}-${a}`}\n              session={session}\n              feature={f}\n              alt={a}\n              view={view}\n              model={model}\n              assembly={assembly}\n            />\n          )) ?? (\n            <Arc\n              key={f.id()}\n              session={session}\n              feature={f}\n              view={view}\n              model={model}\n              assembly={assembly}\n            />\n          )\n        )\n      })}\n    </Wrapper>\n  ) : null\n})\n\nexport default Arcs\n","import React, { lazy } from 'react'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport { BlockMsg } from '@jbrowse/plugin-linear-genome-view'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// local\nimport { LinearArcDisplayModel } from '../model'\n\n// icons\nimport RefreshIcon from '@mui/icons-material/Refresh'\nimport ReportIcon from '@mui/icons-material/Report'\n\nimport { getSession } from '@jbrowse/core/util'\n\nconst ErrorMessageStackTraceDialog = lazy(\n  () => import('@jbrowse/core/ui/ErrorMessageStackTraceDialog'),\n)\n\nconst useStyles = makeStyles()(theme => ({\n  loading: {\n    backgroundColor: theme.palette.background.default,\n    backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${theme.palette.action.disabledBackground} 5px, ${theme.palette.action.disabledBackground} 10px)`,\n    position: 'absolute',\n    bottom: 0,\n    height: 50,\n    width: 300,\n    right: 0,\n    pointerEvents: 'none',\n    textAlign: 'center',\n  },\n}))\n\nconst BaseDisplayComponent = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearArcDisplayModel\n  children?: React.ReactNode\n}) {\n  const { error, regionTooLarge } = model\n  return error ? (\n    <BlockMsg\n      message={`${error}`}\n      severity=\"error\"\n      action={\n        <>\n          <Tooltip title=\"Reload\">\n            <IconButton\n              data-testid=\"reload_button\"\n              onClick={() => {\n                model.reload()\n              }}\n            >\n              <RefreshIcon />\n            </IconButton>\n          </Tooltip>\n          <Tooltip title=\"Show stack trace\">\n            <IconButton\n              onClick={() => {\n                getSession(model).queueDialog(onClose => [\n                  ErrorMessageStackTraceDialog,\n                  { onClose, error: model.error as Error },\n                ])\n              }}\n            >\n              <ReportIcon />\n            </IconButton>\n          </Tooltip>\n        </>\n      }\n    />\n  ) : regionTooLarge ? (\n    model.regionCannotBeRendered()\n  ) : (\n    <DataDisplay model={model}>{children}</DataDisplay>\n  )\n})\n\nconst DataDisplay = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearArcDisplayModel\n  children?: React.ReactNode\n}) {\n  const { loading } = model\n  return (\n    <div>\n      {children}\n      {loading ? <LoadingBar model={model} /> : null}\n    </div>\n  )\n})\n\nconst LoadingBar = observer(function ({\n  model,\n}: {\n  model: LinearArcDisplayModel\n}) {\n  const { classes } = useStyles()\n  const { message } = model\n  return (\n    <div className={classes.loading}>\n      <LoadingEllipses message={message} />\n    </div>\n  )\n})\n\nexport default BaseDisplayComponent\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// local\nimport { LinearArcDisplayModel } from '../model'\nimport BaseDisplayComponent from './BaseDisplayComponent'\nimport Arcs from './Arcs'\n\nconst LinearArcReactComponent = observer(function ({\n  model,\n  exportSVG,\n}: {\n  model: LinearArcDisplayModel\n  exportSVG?: boolean\n}) {\n  return (\n    <BaseDisplayComponent model={model}>\n      <Arcs model={model} exportSVG={exportSVG} />\n    </BaseDisplayComponent>\n  )\n})\n\nexport default LinearArcReactComponent\n"],"names":["makeFeaturePair","feature","alt","bnd","parseBreakend","undefined","start","get","end","strand","mate","refName","mateRefName","mateEnd","mateStart","joinDirection","mateDirection","some","a","startsWith","info","e","END","CHR2","MatePosition","matePosition","split","MateDirection","Join","k1","k2","makeSummary","assembleLocString","SVTYPE","filter","f","join","ArcTooltip","lazy","Arc","observer","model","assembly","view","mouseOvered","setMouseOvered","useState","height","ref","useRef","c","getConf","ra1","getCanonicalRefName","ra2","p1","p2","r1","bpToPx","coord","offsetPx","r2","radius","absrad","Math","abs","destY","min","left","right","col","sw","React","_extends","d","getStrokeProps","strokeWidth","onMouseOut","onMouseOver","onClick","selectFeature","fill","pointerEvents","x1","x2","y1","y2","Suspense","fallback","contents","Wrapper","exportSVG","children","getContainingView","width","round","dynamicBlocks","totalWidthPx","session","getSession","assemblyManager","features","assemblyNames","map","alts","key","id","ErrorMessageStackTraceDialog","useStyles","makeStyles","theme","loading","backgroundColor","palette","background","default","backgroundImage","action","disabledBackground","position","bottom","textAlign","BaseDisplayComponent","error","regionTooLarge","BlockMsg","message","severity","Tooltip","title","IconButton","reload","RefreshIcon","queueDialog","onClose","ReportIcon","regionCannotBeRendered","DataDisplay","LoadingBar","classes","className","LoadingEllipses","Arcs"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7181.938de865.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7181],{97181:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var o=n(7552),r=n(29499),s=n(99123),i=n(58181),a=n(45331),d=n(58507),l=n(5401),c=n(49823);const u=(0,n(68446).observer)((function({modalInfo:e={},onClose:t}){const{name:n,dereferenceTypeCount:u,safelyBreakConnection:m}=e;return o.createElement(c.Dialog,{open:!0,maxWidth:"lg",title:`Close connection "${n}"`},o.createElement(r.A,null,u?o.createElement(o.Fragment,null,o.createElement(s.A,null,"Closing this connection will close:"),o.createElement(i.A,null,Object.entries(u).map((([e,t])=>o.createElement(a.Ay,{key:e},`${t} ${e}`))))):null,o.createElement(s.A,null,"Are you sure you want to close this connection?")),o.createElement(d.A,null,o.createElement(l.A,{onClick:()=>{t()},color:"primary"},"Cancel"),o.createElement(l.A,{variant:"contained",onClick:()=>{m?.(),t()},color:"primary"},"OK")))}))},45331:(e,t,n)=>{n.d(t,{Ay:()=>h});var o=n(7552),r=n(93878),s=n(70799),i=n(23879),a=n(51148),d=n(60129),l=n(4785),c=n(3755),u=n(51584),m=n(57406),p=n(74823),g=n(2451),A=n(77999),b=n(69500);const y=(0,a.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters,!n.disablePadding&&t.padding,n.hasSecondaryAction&&t.secondaryAction]}})((0,d.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${g.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),v=(0,a.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),h=o.forwardRef((function(e,t){const n=(0,l.b)({props:e,name:"MuiListItem"}),{alignItems:a="center",children:d,className:g,component:h,components:S={},componentsProps:f={},ContainerComponent:w="li",ContainerProps:{className:x,...I}={},dense:C=!1,disableGutters:G=!1,disablePadding:L=!1,divider:P=!1,secondaryAction:R,slotProps:k={},slots:M={},...j}=n,E=o.useContext(m.A),N=o.useMemo((()=>({dense:C||E.dense||!1,alignItems:a,disableGutters:G})),[a,E.dense,C,G]),B=o.useRef(null),_=o.Children.toArray(d),F=_.length&&(0,c.A)(_[_.length-1],["ListItemSecondaryAction"]),T={...n,alignItems:a,dense:N.dense,disableGutters:G,disablePadding:L,divider:P,hasSecondaryAction:F},$=(e=>{const{alignItems:t,classes:n,dense:o,disableGutters:r,disablePadding:i,divider:a,hasSecondaryAction:d}=e,l={root:["root",o&&"dense",!r&&"gutters",!i&&"padding",a&&"divider","flex-start"===t&&"alignItemsFlexStart",d&&"secondaryAction"],container:["container"]};return(0,s.A)(l,p._,n)})(T),D=(0,u.A)(B,t),O=M.root||S.Root||y,Y=k.root||f.root||{},z={className:(0,r.A)($.root,Y.className,g),...j};let K=h||"li";return F?(K=z.component||h?K:"div","li"===w&&("li"===K?K="div":"li"===z.component&&(z.component="div")),(0,b.jsx)(m.A.Provider,{value:N,children:(0,b.jsxs)(v,{as:w,className:(0,r.A)($.container,x),ref:D,ownerState:T,...I,children:[(0,b.jsx)(O,{...Y,...!(0,i.A)(O)&&{as:K,ownerState:{...T,...Y.ownerState}},...z,children:_}),_.pop()]})})):(0,b.jsx)(m.A.Provider,{value:N,children:(0,b.jsxs)(O,{...Y,as:K,ref:D,...!(0,i.A)(O)&&{ownerState:{...T,...Y.ownerState}},...z,children:[_,R&&(0,b.jsx)(A.A,{children:R})]})})}))},74823:(e,t,n)=>{n.d(t,{A:()=>i,_:()=>s});var o=n(33761),r=n(85693);function s(e){return(0,r.Ay)("MuiListItem",e)}const i=(0,o.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},2451:(e,t,n)=>{n.d(t,{A:()=>i,Y:()=>s});var o=n(33761),r=n(85693);function s(e){return(0,r.Ay)("MuiListItemButton",e)}const i=(0,o.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,n)=>{n.d(t,{A:()=>p});var o=n(7552),r=n(93878),s=n(70799),i=n(51148),a=n(4785),d=n(57406),l=n(87739),c=n(69500);const u=(0,i.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),m=o.forwardRef((function(e,t){const n=(0,a.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:i,...m}=n,p=o.useContext(d.A),g={...n,disableGutters:p.disableGutters},A=(e=>{const{disableGutters:t,classes:n}=e,o={root:["root",t&&"disableGutters"]};return(0,s.A)(o,l.g,n)})(g);return(0,c.jsx)(u,{className:(0,r.A)(A.root,i),ownerState:g,ref:t,...m})}));m.muiName="ListItemSecondaryAction";const p=m},87739:(e,t,n)=>{n.d(t,{A:()=>i,g:()=>s});var o=n(33761),r=n(85693);function s(e){return(0,r.Ay)("MuiListItemSecondaryAction",e)}const i=(0,o.A)("MuiListItemSecondaryAction",["root","disableGutters"])}}]);
+//# sourceMappingURL=7181.938de865.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7181.938de865.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7181.938de865.chunk.js","mappings":"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","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.tsx","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js"],"sourcesContent":["import React from 'react'\nimport {\n  DialogContent,\n  DialogContentText,\n  Button,\n  List,\n  ListItem,\n  DialogActions,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { observer } from 'mobx-react'\n\nconst CloseConnectionDialog = observer(function CloseConnectionDialog({\n  modalInfo = {},\n  onClose,\n}: {\n  modalInfo?: {\n    name?: string\n    dereferenceTypeCount?: Record<string, number>\n    safelyBreakConnection?: () => void\n  }\n  onClose: () => void\n}) {\n  const { name, dereferenceTypeCount, safelyBreakConnection } = modalInfo\n  return (\n    <Dialog open maxWidth=\"lg\" title={`Close connection \"${name}\"`}>\n      <DialogContent>\n        {dereferenceTypeCount ? (\n          <>\n            <DialogContentText>\n              Closing this connection will close:\n            </DialogContentText>\n            <List>\n              {Object.entries(dereferenceTypeCount).map(([key, value]) => (\n                <ListItem key={key}>{`${value} ${key}`}</ListItem>\n              ))}\n            </List>\n          </>\n        ) : null}\n        <DialogContentText>\n          Are you sure you want to close this connection?\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            onClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          onClick={() => {\n            safelyBreakConnection?.()\n            onClose()\n          }}\n          color=\"primary\"\n        >\n          OK\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default CloseConnectionDialog\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;"],"names":["observer","modalInfo","onClose","name","dereferenceTypeCount","safelyBreakConnection","React","Dialog","open","maxWidth","title","DialogContent","DialogContentText","List","Object","entries","map","key","value","ListItem","DialogActions","Button","onClick","color","variant","ListItemRoot","slot","overridesResolver","props","styles","ownerState","root","dense","alignItems","alignItemsFlexStart","divider","disableGutters","gutters","disablePadding","padding","hasSecondaryAction","secondaryAction","theme","display","justifyContent","position","textDecoration","width","boxSizing","textAlign","variants","style","paddingTop","paddingBottom","paddingLeft","paddingRight","borderBottom","vars","palette","backgroundClip","button","transition","transitions","create","duration","shortest","backgroundColor","action","hover","ListItemContainer","container","inProps","ref","children","childrenProp","className","component","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","slots","other","context","childContext","listItemRef","toArray","length","classes","useUtilityClasses","handleRef","Root","rootProps","componentProps","Component","Provider","as","pop","getListItemUtilityClass","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","transform","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7203.03e2b86a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7203],{59705:(r,e,t)=>{t.d(e,{A:()=>A});var s=t(7552),a=t(93878),i=t(70799),o=t(64761),n=t(51148),l=t(60129),c=t(4785),d=t(15622),p=t(58520),h=t(72489),u=t(69500);const m=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,v=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,f="string"!=typeof m?o.AH`
+        animation: ${m} 1.4s linear infinite;
+      `:null,k="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s ease-in-out infinite;
+      `:null,y=(0,n.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.root,e[t.variant],e[`color${(0,d.A)(t.color)}`]]}})((0,l.A)((({theme:r})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:r.transitions.create("transform")}},{props:{variant:"indeterminate"},style:f||{animation:`${m} 1.4s linear infinite`}},...Object.entries(r.palette).filter((0,p.A)()).map((([e])=>({props:{color:e},style:{color:(r.vars||r).palette[e].main}})))]})))),g=(0,n.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(r,e)=>e.svg})({display:"block"}),b=(0,n.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(r,e)=>{const{ownerState:t}=r;return[e.circle,e[`circle${(0,d.A)(t.variant)}`],t.disableShrink&&e.circleDisableShrink]}})((0,l.A)((({theme:r})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:r.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:r})=>"indeterminate"===r.variant&&!r.disableShrink,style:k||{animation:`${v} 1.4s ease-in-out infinite`}}]})))),A=s.forwardRef((function(r,e){const t=(0,c.b)({props:r,name:"MuiCircularProgress"}),{className:s,color:o="primary",disableShrink:n=!1,size:l=40,style:p,thickness:m=3.6,value:v=0,variant:f="indeterminate",...k}=t,A={...t,color:o,disableShrink:n,size:l,thickness:m,value:v,variant:f},x=(r=>{const{classes:e,variant:t,color:s,disableShrink:a}=r,o={root:["root",t,`color${(0,d.A)(s)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(t)}`,a&&"circleDisableShrink"]};return(0,i.A)(o,h.b,e)})(A),w={},S={},C={};if("determinate"===f){const r=2*Math.PI*((44-m)/2);w.strokeDasharray=r.toFixed(3),C["aria-valuenow"]=Math.round(v),w.strokeDashoffset=`${((100-v)/100*r).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,u.jsx)(y,{className:(0,a.A)(x.root,s),style:{width:l,height:l,...S,...p},ownerState:A,ref:e,role:"progressbar",...C,...k,children:(0,u.jsx)(g,{className:x.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,u.jsx)(b,{className:x.circle,style:w,ownerState:A,cx:44,cy:44,r:(44-m)/2,fill:"none",strokeWidth:m})})})}))},72489:(r,e,t)=>{t.d(e,{A:()=>o,b:()=>i});var s=t(33761),a=t(85693);function i(r){return(0,a.Ay)("MuiCircularProgress",r)}const o=(0,s.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},97203:(r,e,t)=>{t.r(e),t.d(e,{circularProgressClasses:()=>a.A,default:()=>s.A,getCircularProgressUtilityClass:()=>a.b});var s=t(59705),a=t(72489)}}]);
+//# sourceMappingURL=7203.03e2b86a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7203.03e2b86a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7203.03e2b86a.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/722.4329bc98.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[722,8341,5484,7865,246,2627,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=722.4329bc98.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/722.4329bc98.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/722.4329bc98.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7309.f9d18abb.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7309],{67309:(o,s,n)=>{n.r(s),n.d(s,{accordionActionsClasses:()=>p,default:()=>b,getAccordionActionsUtilityClass:()=>d});var t=n(7552),e=n(93878),i=n(70799),c=n(51148),a=n(4785),r=n(33761),l=n(85693);function d(o){return(0,l.Ay)("MuiAccordionActions",o)}const p=(0,r.A)("MuiAccordionActions",["root","spacing"]);var u=n(69500);const A=(0,c.Ay)("div",{name:"MuiAccordionActions",slot:"Root",overridesResolver:(o,s)=>{const{ownerState:n}=o;return[s.root,!n.disableSpacing&&s.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",variants:[{props:o=>!o.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),b=t.forwardRef((function(o,s){const n=(0,a.b)({props:o,name:"MuiAccordionActions"}),{className:t,disableSpacing:c=!1,...r}=n,l={...n,disableSpacing:c},p=(o=>{const{classes:s,disableSpacing:n}=o,t={root:["root",!n&&"spacing"]};return(0,i.A)(t,d,s)})(l);return(0,u.jsx)(A,{className:(0,e.A)(p.root,t),ref:s,ownerState:l,...r})}))}}]);
+//# sourceMappingURL=7309.f9d18abb.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7309.f9d18abb.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7309.f9d18abb.chunk.js","mappings":"0SAEO,SAASA,EAAgCC,GAC9C,OAAO,EAAAC,EAAA,IAAqB,sBAAuBD,EACrD,CACA,MACA,GADgC,EAAAE,EAAA,GAAuB,sBAAuB,CAAC,OAAQ,Y,eCKvF,MAUMC,GAAuB,EAAAC,EAAA,IAAO,MAAO,CACzCC,KAAM,sBACNL,KAAM,OACNM,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,MAAOD,EAAWE,gBAAkBH,EAAOI,QAAQ,GAPzC,CAS1B,CACDC,QAAS,OACTC,WAAY,SACZC,QAAS,EACTC,eAAgB,WAChBC,SAAU,CAAC,CACTV,MAAOA,IAAUA,EAAMI,eACvBO,MAAO,CACL,gCAAiC,CAC/BC,WAAY,QAsDpB,EAjDsC,cAAiB,SAA0BC,EAASC,GACxF,MAAMd,GAAQ,OAAgB,CAC5BA,MAAOa,EACPf,KAAM,yBAEF,UACJiB,EAAS,eACTX,GAAiB,KACdY,GACDhB,EACEE,EAAa,IACdF,EACHI,kBAEIa,EA/CkBf,KACxB,MAAM,QACJe,EAAO,eACPb,GACEF,EACEgB,EAAQ,CACZf,KAAM,CAAC,QAASC,GAAkB,YAEpC,OAAO,EAAAe,EAAA,GAAeD,EAAO1B,EAAiCyB,EAAQ,EAuCtDG,CAAkBlB,GAClC,OAAoB,SAAKN,EAAsB,CAC7CmB,WAAW,EAAAM,EAAA,GAAKJ,EAAQd,KAAMY,GAC9BD,IAAKA,EACLZ,WAAYA,KACTc,GAEP,G","sources":["../../../node_modules/@mui/material/AccordionActions/accordionActionsClasses.js","../../../node_modules/@mui/material/AccordionActions/AccordionActions.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionActions', slot);\n}\nconst accordionActionsClasses = generateUtilityClasses('MuiAccordionActions', ['root', 'spacing']);\nexport default accordionActionsClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getAccordionActionsUtilityClass } from \"./accordionActionsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getAccordionActionsUtilityClass, classes);\n};\nconst AccordionActionsRoot = styled('div', {\n  name: 'MuiAccordionActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  justifyContent: 'flex-end',\n  variants: [{\n    props: props => !props.disableSpacing,\n    style: {\n      '& > :not(style) ~ :not(style)': {\n        marginLeft: 8\n      }\n    }\n  }]\n});\nconst AccordionActions = /*#__PURE__*/React.forwardRef(function AccordionActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionActions'\n  });\n  const {\n    className,\n    disableSpacing = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableSpacing\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionActionsRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionActions;"],"names":["getAccordionActionsUtilityClass","slot","generateUtilityClass","generateUtilityClasses","AccordionActionsRoot","styled","name","overridesResolver","props","styles","ownerState","root","disableSpacing","spacing","display","alignItems","padding","justifyContent","variants","style","marginLeft","inProps","ref","className","other","classes","slots","composeClasses","useUtilityClasses","clsx"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7348.40afbdc0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7348],{67348:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var r=n(7552),a=n(68446),l=n(99546),i=n(75785),c=n(95727);const s=(0,i.n9)()({overlay:{display:"flex",width:"100%",gridArea:"1/1","& path":{cursor:"crosshair",fill:"none"}}}),o=(0,a.observer)((function({model:e}){const{classes:t}=s(),{matchedTracks:n,interactToggled:a}=e,l=(0,r.useRef)(null);return r.createElement("div",{className:t.overlay},r.createElement("svg",{ref:l,style:{width:"100%",zIndex:10,pointerEvents:a?void 0:"none"}},n.map((t=>r.createElement(c.A,{parentRef:l,key:t.configuration.trackId,model:e,trackId:t.configuration.trackId})))))})),d=(0,i.n9)()((e=>({viewDivider:{background:e.palette.secondary.main,height:3},container:{display:"grid"},content:{gridArea:"1/1"},rel:{position:"relative"}}))),m=(0,a.observer)((function({model:e}){const{classes:t}=d(),{views:n}=e,{pluginManager:a}=(0,l.getEnv)(e);return r.createElement("div",{className:t.content},r.createElement("div",{className:t.rel},n.map(((e,l)=>{const{ReactComponent:i}=a.getViewType(e.type),c=r.createElement(i,{key:e.id,model:e});return l===n.length-1?c:[c,r.createElement("div",{key:`${e.id}-divider`,className:t.viewDivider})]}))))})),v=(0,a.observer)((function({model:e}){const{classes:t}=d();return r.createElement("div",null,r.createElement("div",{className:t.container},r.createElement(m,{model:e}),r.createElement(o,{model:e})))}))}}]);
+//# sourceMappingURL=7348.40afbdc0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7348.40afbdc0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7348.40afbdc0.chunk.js","mappings":"iNAQA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,CAAa,CAC7BC,QAAS,CACPC,QAAS,OACTC,MAAO,OACPC,SAAU,MACV,SAAU,CACRC,OAAQ,YACRC,KAAM,WA0CZ,GArCmCC,EAAAA,EAAAA,WAAS,UAAU,MACpDC,IAIA,MAAM,QAAEC,GAAYV,KACd,cAAEW,EAAa,gBAAEC,GAAoBH,EACrCI,GAAMC,EAAAA,EAAAA,QAAO,MACnB,OACEC,EAAAA,cAAA,OAAKC,UAAWN,EAAQR,SACtBa,EAAAA,cAAA,OACEF,IAAKA,EACLI,MAAO,CACLb,MAAO,OACPc,OAAQ,GACRC,cAAeP,OAAkBQ,EAAY,SAG9CT,EAAcU,KAAIC,GAOjBP,EAAAA,cAACQ,EAAAA,EAAO,CACNC,UAAWX,EACXY,IAAKH,EAAMI,cAAcC,QACzBlB,MAAOA,EACPkB,QAASL,EAAMI,cAAcC,aAMzC,IC9CM3B,GAAYC,EAAAA,EAAAA,KAAAA,EAAa2B,IAAS,CACtCC,YAAa,CACXC,WAAYF,EAAMG,QAAQC,UAAUC,KACpCC,OAAQ,GAEVC,UAAW,CACThC,QAAS,QAEXiC,QAAS,CACP/B,SAAU,OAEZgC,IAAK,CACHC,SAAU,gBAIRC,GAA4B/B,EAAAA,EAAAA,WAAS,UAAU,MACnDC,IAIA,MAAM,QAAEC,GAAYV,KACd,MAAEwC,GAAU/B,GACZ,cAAEgC,IAAkBC,EAAAA,EAAAA,QAAOjC,GACjC,OACEM,EAAAA,cAAA,OAAKC,UAAWN,EAAQ0B,SACtBrB,EAAAA,cAAA,OAAKC,UAAWN,EAAQ2B,KACrBG,EAAMnB,KAAI,CAACsB,EAAMC,KAChB,MAAM,eAAEC,GAAmBJ,EAAcK,YAAYH,EAAKI,MACpDC,EAAgBjC,EAAAA,cAAC8B,EAAc,CAACpB,IAAKkB,EAAKM,GAAIxC,MAAOkC,IAC3D,OAAOC,IAAQJ,EAAMU,OAAS,EAC1BF,EACA,CACEA,EACAjC,EAAAA,cAAA,OACEU,IAAK,GAAGkB,EAAKM,aACbjC,UAAWN,EAAQmB,cAEtB,KAKf,IAkBA,GAhB4BrB,EAAAA,EAAAA,WAAS,UAAU,MAC7CC,IAIA,MAAM,QAAEC,GAAYV,IACpB,OACEe,EAAAA,cAAA,WACEA,EAAAA,cAAA,OAAKC,UAAWN,EAAQyB,WACtBpB,EAAAA,cAACwB,EAAyB,CAAC9B,MAAOA,IAClCM,EAAAA,cAACoC,EAA0B,CAAC1C,MAAOA,KAI3C,G","sources":["../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/BreakpointSplitViewOverlay.tsx","../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/BreakpointSplitView.tsx"],"sourcesContent":["import React, { useRef } from 'react'\n\nimport { makeStyles } from 'tss-react/mui'\n\nimport Overlay from './Overlay'\nimport { BreakpointViewModel } from '../model'\nimport { observer } from 'mobx-react'\n\nconst useStyles = makeStyles()({\n  overlay: {\n    display: 'flex',\n    width: '100%',\n    gridArea: '1/1',\n    '& path': {\n      cursor: 'crosshair',\n      fill: 'none',\n    },\n  },\n})\n\nconst BreakpointSplitViewOverlay = observer(function ({\n  model,\n}: {\n  model: BreakpointViewModel\n}) {\n  const { classes } = useStyles()\n  const { matchedTracks, interactToggled } = model\n  const ref = useRef(null)\n  return (\n    <div className={classes.overlay}>\n      <svg\n        ref={ref}\n        style={{\n          width: '100%',\n          zIndex: 10,\n          pointerEvents: interactToggled ? undefined : 'none',\n        }}\n      >\n        {matchedTracks.map(track => (\n          // note: we must pass ref down, because:\n          // - the child component needs to getBoundingClientRect on the this\n          // components SVG, and...\n          // - we cannot rely on using getBoundingClientRect in this component\n          // to make sure this works because if it gets shifted around by\n          // another element, this will not re-render necessarily\n          <Overlay\n            parentRef={ref}\n            key={track.configuration.trackId}\n            model={model}\n            trackId={track.configuration.trackId}\n          />\n        ))}\n      </svg>\n    </div>\n  )\n})\n\nexport default BreakpointSplitViewOverlay\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getEnv } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { BreakpointViewModel } from '../model'\nimport BreakpointSplitViewOverlay from './BreakpointSplitViewOverlay'\n\nconst useStyles = makeStyles()(theme => ({\n  viewDivider: {\n    background: theme.palette.secondary.main,\n    height: 3,\n  },\n  container: {\n    display: 'grid',\n  },\n  content: {\n    gridArea: '1/1',\n  },\n  rel: {\n    position: 'relative',\n  },\n}))\n\nconst BreakpointSplitViewLevels = observer(function ({\n  model,\n}: {\n  model: BreakpointViewModel\n}) {\n  const { classes } = useStyles()\n  const { views } = model\n  const { pluginManager } = getEnv(model)\n  return (\n    <div className={classes.content}>\n      <div className={classes.rel}>\n        {views.map((view, idx) => {\n          const { ReactComponent } = pluginManager.getViewType(view.type)!\n          const viewComponent = <ReactComponent key={view.id} model={view} />\n          return idx === views.length - 1\n            ? viewComponent\n            : [\n                viewComponent,\n                <div\n                  key={`${view.id}-divider`}\n                  className={classes.viewDivider}\n                />,\n              ]\n        })}\n      </div>\n    </div>\n  )\n})\n\nconst BreakpointSplitView = observer(function ({\n  model,\n}: {\n  model: BreakpointViewModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <div>\n      <div className={classes.container}>\n        <BreakpointSplitViewLevels model={model} />\n        <BreakpointSplitViewOverlay model={model} />\n      </div>\n    </div>\n  )\n})\n\nexport default BreakpointSplitView\n"],"names":["useStyles","makeStyles","overlay","display","width","gridArea","cursor","fill","observer","model","classes","matchedTracks","interactToggled","ref","useRef","React","className","style","zIndex","pointerEvents","undefined","map","track","Overlay","parentRef","key","configuration","trackId","theme","viewDivider","background","palette","secondary","main","height","container","content","rel","position","BreakpointSplitViewLevels","views","pluginManager","getEnv","view","idx","ReactComponent","getViewType","type","viewComponent","id","length","BreakpointSplitViewOverlay"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7374.932d083d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7374],{77999:(t,e,s)=>{s.d(e,{A:()=>A});var o=s(7552),r=s(93878),a=s(70799),i=s(51148),n=s(4785),c=s(57406),l=s(87739),u=s(69500);const d=(0,i.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:s}=t;return[e.root,s.disableGutters&&e.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:t})=>t.disableGutters,style:{right:0}}]}),b=o.forwardRef((function(t,e){const s=(0,n.b)({props:t,name:"MuiListItemSecondaryAction"}),{className:i,...b}=s,A=o.useContext(c.A),m={...s,disableGutters:A.disableGutters},y=(t=>{const{disableGutters:e,classes:s}=t,o={root:["root",e&&"disableGutters"]};return(0,a.A)(o,l.g,s)})(m);return(0,u.jsx)(d,{className:(0,r.A)(y.root,i),ownerState:m,ref:e,...b})}));b.muiName="ListItemSecondaryAction";const A=b},97374:(t,e,s)=>{s.r(e),s.d(e,{default:()=>o.A,getListItemSecondaryActionClassesUtilityClass:()=>r.g,listItemSecondaryActionClasses:()=>r.A});var o=s(77999),r=s(87739)},87739:(t,e,s)=>{s.d(e,{A:()=>i,g:()=>a});var o=s(33761),r=s(85693);function a(t){return(0,r.Ay)("MuiListItemSecondaryAction",t)}const i=(0,o.A)("MuiListItemSecondaryAction",["root","disableGutters"])}}]);
+//# sourceMappingURL=7374.932d083d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7374.932d083d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7374.932d083d.chunk.js","mappings":"oOAWA,MAUMA,GAA8B,QAAO,MAAO,CAChDC,KAAM,6BACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMD,EAAWE,gBAAkBH,EAAOG,eAAe,GAPxC,CASjC,CACDC,SAAU,WACVC,MAAO,GACPC,IAAK,MACLC,UAAW,mBACXC,SAAU,CAAC,CACTT,MAAO,EACLE,gBACIA,EAAWE,eACjBM,MAAO,CACLJ,MAAO,OAUPK,EAAuC,cAAiB,SAAiCC,EAASC,GACtG,MAAMb,GAAQ,OAAgB,CAC5BA,MAAOY,EACPf,KAAM,gCAEF,UACJiB,KACGC,GACDf,EACEgB,EAAU,aAAiB,KAC3Bd,EAAa,IACdF,EACHI,eAAgBY,EAAQZ,gBAEpBa,EArDkBf,KACxB,MAAM,eACJE,EAAc,QACda,GACEf,EACEgB,EAAQ,CACZf,KAAM,CAAC,OAAQC,GAAkB,mBAEnC,OAAO,OAAec,EAAO,EAAAC,EAA+CF,EAAQ,EA6CpEG,CAAkBlB,GAClC,OAAoB,SAAKN,EAA6B,CACpDkB,WAAW,OAAKG,EAAQd,KAAMW,GAC9BZ,WAAYA,EACZW,IAAKA,KACFE,GAEP,IAuBAJ,EAAwBU,QAAU,0BAClC,S,6OC7FO,SAASC,EAA8CxB,GAC5D,OAAO,QAAqB,6BAA8BA,EAC5D,CACA,MACA,GADuC,OAAuB,6BAA8B,CAAC,OAAQ,kB","sources":["../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;"],"names":["ListItemSecondaryActionRoot","name","slot","overridesResolver","props","styles","ownerState","root","disableGutters","position","right","top","transform","variants","style","ListItemSecondaryAction","inProps","ref","className","other","context","classes","slots","g","useUtilityClasses","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7389.fa6a1eb0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7389],{67389:(e,r,t)=>{t.r(r),t.d(r,{default:()=>E});var a=t(7552),o=t(72639),n=t(943),c=t(36715),l=t(5401),s=t(99546),i=t(75785),d=t(68446),p=t(60832),g=t(7009),m=t(61599);const u=(0,i.n9)()((e=>({error:{margin:e.spacing(2)},errorHeader:{background:e.palette.error.light,color:e.palette.error.contrastText,padding:e.spacing(2),textAlign:"center"},errorMessage:{padding:e.spacing(2)}})));function b({error:e}){const{classes:r}=u();return a.createElement(n.A,{className:r.error},a.createElement("div",{className:r.errorHeader},a.createElement(m.A,{color:"inherit",fontSize:"large"}),a.createElement("div",null,a.createElement(c.A,{variant:"h6",color:"inherit",align:"center"},"Import error"))),a.createElement(c.A,{className:r.errorMessage},`${e}`))}function h(e,r){return t=>r[t[e]]}const v=(0,i.n9)()((e=>({root:{margin:e.spacing(1)},paper:{display:"flex",flexDirection:"column"},dropZone:{textAlign:"center",margin:e.spacing(2),padding:e.spacing(2),borderWidth:2,borderRadius:2,borderColor:h("isDragActive",{true:e.palette.secondary.light,false:e.palette.divider}),borderStyle:"dashed",backgroundColor:h("isDragActive",{true:(0,o.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),false:e.palette.background.default}),outline:"none",transition:"border .24s ease-in-out","&:focus":{borderColor:e.palette.secondary.light}},uploadIcon:{color:e.palette.text.secondary}}))),E=(0,d.observer)((function({model:e}){const[r,t]=(0,a.useState)(),{getRootProps:o,getInputProps:i,isDragActive:d}=(0,p.VB)({accept:"application/json",maxSize:536870912,multiple:!1,onDrop:async(r,a)=>{try{if(a.length>0)throw new Error(a[0].errors.map((e=>`${e}`)).join(", "));const t=await r[0].text();(0,s.getSession)(e).setSession?.(JSON.parse(t).session)}catch(e){console.error(e),t(e)}}}),{classes:m}=v({isDragActive:d});return a.createElement("div",{className:m.root},a.createElement(n.A,{className:m.paper},a.createElement("div",o({className:m.dropZone}),a.createElement("input",i()),a.createElement(g.A,{className:m.uploadIcon,fontSize:"large"}),a.createElement(c.A,{color:"textSecondary",align:"center",variant:"body1"},"Drag and drop files here"),a.createElement(c.A,{color:"textSecondary",align:"center",variant:"body2"},"or"),a.createElement(l.A,{color:"primary",variant:"contained"},"Browse Files"))),r?a.createElement(b,{error:r}):null)}))}}]);
+//# sourceMappingURL=7389.fa6a1eb0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7389.fa6a1eb0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7389.fa6a1eb0.chunk.js","mappings":"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","sources":["../../../plugins/menus/src/ImportSessionWidget/components/ImportError.tsx","../../../plugins/menus/src/ImportSessionWidget/components/ImportSessionWidget.tsx"],"sourcesContent":["import React from 'react'\nimport { Paper, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport ErrorIcon from '@mui/icons-material/Error'\n\nconst useStyles = makeStyles()(theme => ({\n  error: {\n    margin: theme.spacing(2),\n  },\n  errorHeader: {\n    background: theme.palette.error.light,\n    color: theme.palette.error.contrastText,\n    padding: theme.spacing(2),\n    textAlign: 'center',\n  },\n  errorMessage: {\n    padding: theme.spacing(2),\n  },\n}))\n\nexport default function ImportError({ error }: { error: unknown }) {\n  const { classes } = useStyles()\n  return (\n    <Paper className={classes.error}>\n      <div className={classes.errorHeader}>\n        <ErrorIcon color=\"inherit\" fontSize=\"large\" />\n        <div>\n          <Typography variant=\"h6\" color=\"inherit\" align=\"center\">\n            Import error\n          </Typography>\n        </div>\n      </div>\n      <Typography className={classes.errorMessage}>{`${error}`}</Typography>\n    </Paper>\n  )\n}\n","import React, { useState } from 'react'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport { Button, Paper, Typography, alpha } from '@mui/material'\nimport { getSession } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { useDropzone } from 'react-dropzone'\n\n// icons\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload'\n\n// locals\nimport ImportError from './ImportError'\n\nconst MAX_FILE_SIZE = 512 * 1024 ** 2 // 512 MiB\n\nfunction styledBy(property: string, mapping: Record<string, string>) {\n  return (props: Record<string, string>) => mapping[props[property]!]\n}\n\n// @ts-expect-error\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(1),\n  },\n  paper: {\n    display: 'flex',\n    flexDirection: 'column',\n  },\n  dropZone: {\n    textAlign: 'center',\n    margin: theme.spacing(2),\n    padding: theme.spacing(2),\n    borderWidth: 2,\n    borderRadius: 2,\n    borderColor: styledBy('isDragActive', {\n      true: theme.palette.secondary.light,\n      false: theme.palette.divider,\n    }),\n    borderStyle: 'dashed',\n    backgroundColor: styledBy('isDragActive', {\n      true: alpha(\n        theme.palette.text.primary,\n        theme.palette.action.hoverOpacity,\n      ),\n      false: theme.palette.background.default,\n    }),\n    outline: 'none',\n    transition: 'border .24s ease-in-out',\n    '&:focus': {\n      borderColor: theme.palette.secondary.light,\n    },\n  },\n  uploadIcon: {\n    color: theme.palette.text.secondary,\n  },\n}))\n\nconst ImportSessionWidget = observer(function ({\n  model,\n}: {\n  model: IAnyStateTreeNode\n}) {\n  const [error, setError] = useState<unknown>()\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({\n    // @ts-expect-error\n    accept: 'application/json',\n    maxSize: MAX_FILE_SIZE,\n    multiple: false,\n    onDrop: async (acceptedFiles, rejectedFiles) => {\n      try {\n        if (rejectedFiles.length > 0) {\n          throw new Error(rejectedFiles[0]!.errors.map(e => `${e}`).join(', '))\n        }\n        const sessionText = await acceptedFiles[0]!.text()\n        getSession(model).setSession?.(JSON.parse(sessionText).session)\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    },\n  })\n\n  // @ts-expect-error\n\n  const { classes } = useStyles({ isDragActive }) as any\n\n  return (\n    <div className={classes.root}>\n      <Paper className={classes.paper}>\n        <div {...getRootProps({ className: classes.dropZone })}>\n          <input {...getInputProps()} />\n          <CloudUploadIcon className={classes.uploadIcon} fontSize=\"large\" />\n          <Typography color=\"textSecondary\" align=\"center\" variant=\"body1\">\n            Drag and drop files here\n          </Typography>\n          <Typography color=\"textSecondary\" align=\"center\" variant=\"body2\">\n            or\n          </Typography>\n          <Button color=\"primary\" variant=\"contained\">\n            Browse Files\n          </Button>\n        </div>\n      </Paper>\n      {error ? <ImportError error={error} /> : null}\n    </div>\n  )\n})\n\nexport default ImportSessionWidget\n"],"names":["useStyles","makeStyles","theme","error","margin","spacing","errorHeader","background","palette","light","color","contrastText","padding","textAlign","errorMessage","ImportError","classes","React","Paper","className","ErrorIcon","fontSize","Typography","variant","align","styledBy","property","mapping","props","root","paper","display","flexDirection","dropZone","borderWidth","borderRadius","borderColor","true","secondary","false","divider","borderStyle","backgroundColor","alpha","text","primary","action","hoverOpacity","default","outline","transition","uploadIcon","observer","model","setError","useState","getRootProps","getInputProps","isDragActive","useDropzone","accept","maxSize","multiple","onDrop","async","acceptedFiles","rejectedFiles","length","Error","errors","map","e","join","sessionText","getSession","setSession","JSON","parse","session","console","CloudUploadIcon","Button"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7407.4421929d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7407],{62859:(e,t,o)=>{o.d(t,{A:()=>v});var a=o(7552),i=o(93878),r=o(70799),s=o(48054),l=o(15622),n=o(1791),c=o(55270),p=o(51148),d=o(60129),b=o(58520),u=o(4785),h=o(69500);const m=(0,p.Ay)(s.A,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,c.A)(e)||"classes"===e,overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`size${(0,l.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,t[(0,l.A)(o.size)],t[o.color]]}})((0,d.A)((({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${n.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}))),(0,d.A)((({theme:e})=>({variants:[...Object.entries(e.palette).filter((0,b.A)(["dark","contrastText"])).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}})))]}))),(0,d.A)((({theme:e})=>({[`&.${n.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})))),v=a.forwardRef((function(e,t){const o=(0,u.b)({props:e,name:"MuiFab"}),{children:a,className:s,color:c="default",component:p="button",disabled:d=!1,disableFocusRipple:b=!1,focusVisibleClassName:v,size:g="large",variant:y="circular",...f}=o,A={...o,color:c,component:p,disabled:d,disableFocusRipple:b,size:g,variant:y},w=(e=>{const{color:t,variant:o,classes:a,size:i}=e,s={root:["root",o,`size${(0,l.A)(i)}`,"inherit"===t?"colorInherit":t]},c=(0,r.A)(s,n.C,a);return{...a,...c}})(A);return(0,h.jsx)(m,{className:(0,i.A)(w.root,s),component:p,disabled:d,focusRipple:!b,focusVisibleClassName:(0,i.A)(w.focusVisible,v),ownerState:A,ref:t,...f,classes:w,children:a})}))},1791:(e,t,o)=>{o.d(t,{A:()=>s,C:()=>r});var a=o(33761),i=o(85693);function r(e){return(0,i.Ay)("MuiFab",e)}const s=(0,a.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"])},67407:(e,t,o)=>{o.r(t),o.d(t,{default:()=>w,getSpeedDialActionUtilityClass:()=>m,speedDialActionClasses:()=>v});var a=o(7552),i=o(93878),r=o(70799),s=o(72639),l=o(51148),n=o(60129),c=o(4785),p=o(62859),d=o(89003),b=o(15622),u=o(33761),h=o(85693);function m(e){return(0,h.Ay)("MuiSpeedDialAction",e)}const v=(0,u.A)("MuiSpeedDialAction",["fab","fabClosed","staticTooltip","staticTooltipClosed","staticTooltipLabel","tooltipPlacementLeft","tooltipPlacementRight"]);var g=o(69500);const y=(0,l.Ay)(p.A,{name:"MuiSpeedDialAction",slot:"Fab",skipVariantsResolver:!1,overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.fab,!o.open&&t.fabClosed]}})((0,n.A)((({theme:e})=>({margin:8,color:(e.vars||e).palette.text.secondary,backgroundColor:(e.vars||e).palette.background.paper,"&:hover":{backgroundColor:e.vars?e.vars.palette.SpeedDialAction.fabHoverBg:(0,s.tL)(e.palette.background.paper,.15)},transition:`${e.transitions.create("transform",{duration:e.transitions.duration.shorter})}, opacity 0.8s`,opacity:1,variants:[{props:({ownerState:e})=>!e.open,style:{opacity:0,transform:"scale(0)"}}]})))),f=(0,l.Ay)("span",{name:"MuiSpeedDialAction",slot:"StaticTooltip",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.staticTooltip,!o.open&&t.staticTooltipClosed,t[`tooltipPlacement${(0,b.A)(o.tooltipPlacement)}`]]}})((0,n.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",[`& .${v.staticTooltipLabel}`]:{transition:e.transitions.create(["transform","opacity"],{duration:e.transitions.duration.shorter}),opacity:1},variants:[{props:({ownerState:e})=>!e.open,style:{[`& .${v.staticTooltipLabel}`]:{opacity:0,transform:"scale(0.5)"}}},{props:{tooltipPlacement:"left"},style:{[`& .${v.staticTooltipLabel}`]:{transformOrigin:"100% 50%",right:"100%",marginRight:8}}},{props:{tooltipPlacement:"right"},style:{[`& .${v.staticTooltipLabel}`]:{transformOrigin:"0% 50%",left:"100%",marginLeft:8}}}]})))),A=(0,l.Ay)("span",{name:"MuiSpeedDialAction",slot:"StaticTooltipLabel",overridesResolver:(e,t)=>t.staticTooltipLabel})((0,n.A)((({theme:e})=>({position:"absolute",...e.typography.body1,backgroundColor:(e.vars||e).palette.background.paper,borderRadius:(e.vars||e).shape.borderRadius,boxShadow:(e.vars||e).shadows[1],color:(e.vars||e).palette.text.secondary,padding:"4px 16px",wordBreak:"keep-all"})))),w=a.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiSpeedDialAction"}),{className:s,delay:l=0,FabProps:n={},icon:p,id:u,open:h,TooltipClasses:v,tooltipOpen:w=!1,tooltipPlacement:x="left",tooltipTitle:C,...S}=o,T={...o,tooltipPlacement:x},k=(e=>{const{open:t,tooltipPlacement:o,classes:a}=e,i={fab:["fab",!t&&"fabClosed"],staticTooltip:["staticTooltip",`tooltipPlacement${(0,b.A)(o)}`,!t&&"staticTooltipClosed"],staticTooltipLabel:["staticTooltipLabel"]};return(0,r.A)(i,m,a)})(T),[R,z]=a.useState(w),L={transitionDelay:`${l}ms`},$=(0,g.jsx)(y,{size:"small",className:(0,i.A)(k.fab,s),tabIndex:-1,role:"menuitem",ownerState:T,...n,style:{...L,...n.style},children:p});return w?(0,g.jsxs)(f,{id:u,ref:t,className:k.staticTooltip,ownerState:T,...S,children:[(0,g.jsx)(A,{style:L,id:`${u}-label`,className:k.staticTooltipLabel,ownerState:T,children:C}),a.cloneElement($,{"aria-labelledby":`${u}-label`})]}):(!h&&R&&z(!1),(0,g.jsx)(d.A,{id:u,ref:t,title:C,placement:x,onClose:()=>{z(!1)},onOpen:()=>{z(!0)},open:h&&R,classes:v,...S,children:$}))}))}}]);
+//# sourceMappingURL=7407.4421929d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7407.4421929d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7407.4421929d.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Fab/Fab.js","../../../node_modules/@mui/material/Fab/fabClasses.js","../../../node_modules/@mui/material/SpeedDialAction/speedDialActionClasses.js","../../../node_modules/@mui/material/SpeedDialAction/SpeedDialAction.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  minHeight: 36,\n  transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  borderRadius: '50%',\n  padding: 0,\n  minWidth: 0,\n  width: 56,\n  height: 56,\n  zIndex: (theme.vars || theme).zIndex.fab,\n  boxShadow: (theme.vars || theme).shadows[6],\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[12]\n  },\n  color: theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText?.(theme.palette.grey[300]),\n  backgroundColor: (theme.vars || theme).palette.grey[300],\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.grey.A100,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette.grey[300]\n    },\n    textDecoration: 'none'\n  },\n  [`&.${fabClasses.focusVisible}`]: {\n    boxShadow: (theme.vars || theme).shadows[6]\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      size: 'medium'\n    },\n    style: {\n      width: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended'\n    },\n    style: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'small'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 8px',\n      borderRadius: 34 / 2,\n      minWidth: 34,\n      height: 34\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'medium'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 16px',\n      borderRadius: 40 / 2,\n      minWidth: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].contrastText,\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      '&:hover': {\n        backgroundColor: (theme.vars || theme).palette[color].dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }\n  }))]\n})), memoTheme(({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n})));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n    children,\n    className,\n    color = 'default',\n    component = 'button',\n    disabled = false,\n    disableFocusRipple = false,\n    focusVisibleClassName,\n    size = 'large',\n    variant = 'circular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, {\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    classes: classes,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSpeedDialActionUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDialAction', slot);\n}\nconst speedDialActionClasses = generateUtilityClasses('MuiSpeedDialAction', ['fab', 'fabClosed', 'staticTooltip', 'staticTooltipClosed', 'staticTooltipLabel', 'tooltipPlacementLeft', 'tooltipPlacementRight']);\nexport default speedDialActionClasses;","'use client';\n\n// @inheritedComponent Tooltip\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { emphasize } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Fab from \"../Fab/index.js\";\nimport Tooltip from \"../Tooltip/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport speedDialActionClasses, { getSpeedDialActionUtilityClass } from \"./speedDialActionClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    tooltipPlacement,\n    classes\n  } = ownerState;\n  const slots = {\n    fab: ['fab', !open && 'fabClosed'],\n    staticTooltip: ['staticTooltip', `tooltipPlacement${capitalize(tooltipPlacement)}`, !open && 'staticTooltipClosed'],\n    staticTooltipLabel: ['staticTooltipLabel']\n  };\n  return composeClasses(slots, getSpeedDialActionUtilityClass, classes);\n};\nconst SpeedDialActionFab = styled(Fab, {\n  name: 'MuiSpeedDialAction',\n  slot: 'Fab',\n  skipVariantsResolver: false,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.fab, !ownerState.open && styles.fabClosed];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  margin: 8,\n  color: (theme.vars || theme).palette.text.secondary,\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  '&:hover': {\n    backgroundColor: theme.vars ? theme.vars.palette.SpeedDialAction.fabHoverBg : emphasize(theme.palette.background.paper, 0.15)\n  },\n  transition: `${theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shorter\n  })}, opacity 0.8s`,\n  opacity: 1,\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.open,\n    style: {\n      opacity: 0,\n      transform: 'scale(0)'\n    }\n  }]\n})));\nconst SpeedDialActionStaticTooltip = styled('span', {\n  name: 'MuiSpeedDialAction',\n  slot: 'StaticTooltip',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.staticTooltip, !ownerState.open && styles.staticTooltipClosed, styles[`tooltipPlacement${capitalize(ownerState.tooltipPlacement)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  [`& .${speedDialActionClasses.staticTooltipLabel}`]: {\n    transition: theme.transitions.create(['transform', 'opacity'], {\n      duration: theme.transitions.duration.shorter\n    }),\n    opacity: 1\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.open,\n    style: {\n      [`& .${speedDialActionClasses.staticTooltipLabel}`]: {\n        opacity: 0,\n        transform: 'scale(0.5)'\n      }\n    }\n  }, {\n    props: {\n      tooltipPlacement: 'left'\n    },\n    style: {\n      [`& .${speedDialActionClasses.staticTooltipLabel}`]: {\n        transformOrigin: '100% 50%',\n        right: '100%',\n        marginRight: 8\n      }\n    }\n  }, {\n    props: {\n      tooltipPlacement: 'right'\n    },\n    style: {\n      [`& .${speedDialActionClasses.staticTooltipLabel}`]: {\n        transformOrigin: '0% 50%',\n        left: '100%',\n        marginLeft: 8\n      }\n    }\n  }]\n})));\nconst SpeedDialActionStaticTooltipLabel = styled('span', {\n  name: 'MuiSpeedDialAction',\n  slot: 'StaticTooltipLabel',\n  overridesResolver: (props, styles) => styles.staticTooltipLabel\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  ...theme.typography.body1,\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  boxShadow: (theme.vars || theme).shadows[1],\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '4px 16px',\n  wordBreak: 'keep-all'\n})));\nconst SpeedDialAction = /*#__PURE__*/React.forwardRef(function SpeedDialAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSpeedDialAction'\n  });\n  const {\n    className,\n    delay = 0,\n    FabProps = {},\n    icon,\n    id,\n    open,\n    TooltipClasses,\n    tooltipOpen: tooltipOpenProp = false,\n    tooltipPlacement = 'left',\n    tooltipTitle,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    tooltipPlacement\n  };\n  const classes = useUtilityClasses(ownerState);\n  const [tooltipOpen, setTooltipOpen] = React.useState(tooltipOpenProp);\n  const handleTooltipClose = () => {\n    setTooltipOpen(false);\n  };\n  const handleTooltipOpen = () => {\n    setTooltipOpen(true);\n  };\n  const transitionStyle = {\n    transitionDelay: `${delay}ms`\n  };\n  const fab = /*#__PURE__*/_jsx(SpeedDialActionFab, {\n    size: \"small\",\n    className: clsx(classes.fab, className),\n    tabIndex: -1,\n    role: \"menuitem\",\n    ownerState: ownerState,\n    ...FabProps,\n    style: {\n      ...transitionStyle,\n      ...FabProps.style\n    },\n    children: icon\n  });\n  if (tooltipOpenProp) {\n    return /*#__PURE__*/_jsxs(SpeedDialActionStaticTooltip, {\n      id: id,\n      ref: ref,\n      className: classes.staticTooltip,\n      ownerState: ownerState,\n      ...other,\n      children: [/*#__PURE__*/_jsx(SpeedDialActionStaticTooltipLabel, {\n        style: transitionStyle,\n        id: `${id}-label`,\n        className: classes.staticTooltipLabel,\n        ownerState: ownerState,\n        children: tooltipTitle\n      }), /*#__PURE__*/React.cloneElement(fab, {\n        'aria-labelledby': `${id}-label`\n      })]\n    });\n  }\n  if (!open && tooltipOpen) {\n    setTooltipOpen(false);\n  }\n  return /*#__PURE__*/_jsx(Tooltip, {\n    id: id,\n    ref: ref,\n    title: tooltipTitle,\n    placement: tooltipPlacement,\n    onClose: handleTooltipClose,\n    onOpen: handleTooltipOpen,\n    open: open && tooltipOpen,\n    classes: TooltipClasses,\n    ...other,\n    children: fab\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SpeedDialAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Adds a transition delay, to allow a series of SpeedDialActions to be animated.\n   * @default 0\n   */\n  delay: PropTypes.number,\n  /**\n   * Props applied to the [`Fab`](https://mui.com/material-ui/api/fab/) component.\n   * @default {}\n   */\n  FabProps: PropTypes.object,\n  /**\n   * The icon to display in the SpeedDial Fab.\n   */\n  icon: PropTypes.node,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Tooltip`](https://mui.com/material-ui/api/tooltip/) element.\n   */\n  TooltipClasses: PropTypes.object,\n  /**\n   * Make the tooltip always visible when the SpeedDial is open.\n   * @default false\n   */\n  tooltipOpen: PropTypes.bool,\n  /**\n   * Placement of the tooltip.\n   * @default 'left'\n   */\n  tooltipPlacement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Label to display in the tooltip.\n   */\n  tooltipTitle: PropTypes.node\n} : void 0;\nexport default SpeedDialAction;"],"names":["FabRoot","name","slot","shouldForwardProp","prop","overridesResolver","props","styles","ownerState","root","variant","size","color","colorInherit","theme","typography","button","minHeight","transition","transitions","create","duration","short","borderRadius","padding","minWidth","width","height","zIndex","vars","fab","boxShadow","shadows","palette","text","primary","getContrastText","grey","backgroundColor","A100","textDecoration","focusVisible","variants","style","Object","entries","filter","map","contrastText","main","dark","disabled","action","disabledBackground","inProps","ref","children","className","component","disableFocusRipple","focusVisibleClassName","other","classes","slots","composedClasses","useUtilityClasses","focusRipple","getFabUtilityClass","getSpeedDialActionUtilityClass","generateUtilityClass","generateUtilityClasses","SpeedDialActionFab","styled","Fab","skipVariantsResolver","open","fabClosed","memoTheme","margin","secondary","background","paper","SpeedDialAction","fabHoverBg","shorter","opacity","transform","SpeedDialActionStaticTooltip","staticTooltip","staticTooltipClosed","capitalize","tooltipPlacement","position","display","alignItems","staticTooltipLabel","transformOrigin","right","marginRight","left","marginLeft","SpeedDialActionStaticTooltipLabel","body1","shape","wordBreak","delay","FabProps","icon","id","TooltipClasses","tooltipOpen","tooltipOpenProp","tooltipTitle","composeClasses","setTooltipOpen","transitionStyle","transitionDelay","clsx","tabIndex","role","Tooltip","title","placement","onClose","onOpen"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7409.8e71acc1.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7409],{27409:(e,t,s)=>{s.r(t),s.d(t,{default:()=>h});var a=s(46377),n=s(32595),r=s(99834),i=s(66885),o=s(6434),d=s(68120),c=s(52645),l=s(68584),f=s(77744);class h extends a.BaseFeatureDataAdapter{constructor(e,t,s){super(e,t,s);const a=(0,l.readConfObject)(e,"gffGzLocation"),n=(0,l.readConfObject)(e,["index","indexType"]),i=(0,l.readConfObject)(e,["index","location"]),o=(0,l.readConfObject)(e,"dontRedispatch");this.dontRedispatch=o||["chromosome","contig","region"],this.gff=new d.wD({filehandle:(0,r.openLocation)(a,this.pluginManager),csiFilehandle:"CSI"===n?(0,r.openLocation)(i,this.pluginManager):void 0,tbiFilehandle:"CSI"!==n?(0,r.openLocation)(i,this.pluginManager):void 0,chunkCacheSize:52428800,renameRefSeqs:e=>e})}async getRefNames(e={}){return this.gff.getReferenceSequenceNames(e)}async getHeader(){return this.gff.getHeader()}getFeatures(e,t={}){return(0,i.ObservableCreate)((async s=>{const a=await this.gff.getMetadata();await this.getFeaturesHelper(e,t,a,s,!0)}),t.signal)}async getFeaturesHelper(e,t,s,a,r,i=e){try{const d=[];if(await this.gff.getLines(e.refName,e.start,e.end,((e,t)=>{d.push(this.parseLine(s.columnNumbers,e,t))})),r&&d.length){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const e of d){const t=e.fields[2];if(!this.dontRedispatch.includes(t)){const t=e.start-1;t<n&&(n=t),e.end>r&&(r=e.end)}}if(r>e.end||n<e.start)return void await this.getFeaturesHelper({...e,start:n,end:r},t,s,a,!1,e)}const l=d.map((e=>(e.fields[8]&&"."!==e.fields[8]?e.fields[8].includes("_lineHash")||(e.fields[8]+=`;_lineHash=${e.lineHash}`):e.fields[8]=`_lineHash=${e.lineHash}`,e.fields.join("\t")))).join("\n");for(const e of(0,c.g)(l))for(const t of e){const e=new o.A({data:(0,f.d)(t),id:`${this.id}-offset-${t.attributes?._lineHash?.[0]}`});(0,n.R6)(e.get("start"),e.get("end"),i.start,i.end)&&a.next(e)}a.complete()}catch(e){a.error(e)}}parseLine(e,t,s){const a=t.split("\t");return{start:+a[e.start-1],end:+a[e.end-1],lineHash:s,fields:a}}freeResources(){}}},77744:(e,t,s)=>{function a(e){const{end:t,start:s,child_features:n,derived_features:r,attributes:i,type:o,source:d,phase:c,seq_id:l,score:f,strand:h}=e;let u;"+"===h?u=1:"-"===h?u=-1:"."===h&&(u=0);const g=new Set(["start","end","seq_id","score","type","source","phase","strand"]),p=i||{},b={};for(const e of Object.keys(p)){let t=e.toLowerCase();if(g.has(t)&&(t+="2"),p[e]&&"_lineHash"!==e){let s=p[e];Array.isArray(s)&&1===s.length&&([s]=s),b[t]=s}}return{...b,start:s-1,end:t,strand:u,type:o,source:d,refName:l,derived_features:r,phase:null===c?void 0:Number(c),score:null===f?void 0:f,subfeatures:n.flatMap((e=>e.map((e=>a(e)))))}}s.d(t,{d:()=>a})}}]);
+//# sourceMappingURL=7409.8e71acc1.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7409.8e71acc1.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7409.8e71acc1.chunk.js","mappings":"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","sources":["../../../plugins/gff3/src/Gff3TabixAdapter/Gff3TabixAdapter.ts","../../../plugins/gff3/src/featureData.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { doesIntersect2 } from '@jbrowse/core/util/range'\nimport { Region } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { TabixIndexedFile } from '@gmod/tabix'\nimport { parseStringSync } from 'gff-nostream'\nimport { Observer } from 'rxjs'\nimport {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { featureData } from '../featureData'\n\ninterface LineFeature {\n  start: number\n  end: number\n  lineHash: number\n  fields: string[]\n}\n\nexport default class Gff3TabixAdapter extends BaseFeatureDataAdapter {\n  protected gff: TabixIndexedFile\n\n  protected dontRedispatch: string[]\n\n  public constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const gffGzLocation = readConfObject(config, 'gffGzLocation')\n    const indexType = readConfObject(config, ['index', 'indexType'])\n    const location = readConfObject(config, ['index', 'location'])\n    const dontRedispatch = readConfObject(config, 'dontRedispatch')\n\n    this.dontRedispatch = dontRedispatch || ['chromosome', 'contig', 'region']\n    this.gff = new TabixIndexedFile({\n      filehandle: openLocation(gffGzLocation, this.pluginManager),\n      csiFilehandle:\n        indexType === 'CSI'\n          ? openLocation(location, this.pluginManager)\n          : undefined,\n      tbiFilehandle:\n        indexType !== 'CSI'\n          ? openLocation(location, this.pluginManager)\n          : undefined,\n      chunkCacheSize: 50 * 2 ** 20,\n      renameRefSeqs: (n: string) => n,\n    })\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    return this.gff.getReferenceSequenceNames(opts)\n  }\n\n  public async getHeader() {\n    return this.gff.getHeader()\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const metadata = await this.gff.getMetadata()\n      await this.getFeaturesHelper(query, opts, metadata, observer, true)\n    }, opts.signal)\n  }\n\n  private async getFeaturesHelper(\n    query: Region,\n    opts: BaseOptions,\n    metadata: { columnNumbers: { start: number; end: number } },\n    observer: Observer<Feature>,\n    allowRedispatch: boolean,\n    originalQuery = query,\n  ) {\n    try {\n      const lines: LineFeature[] = []\n\n      await this.gff.getLines(\n        query.refName,\n        query.start,\n        query.end,\n        (line, fileOffset) => {\n          lines.push(this.parseLine(metadata.columnNumbers, line, fileOffset))\n        },\n      )\n      if (allowRedispatch && lines.length) {\n        let minStart = Number.POSITIVE_INFINITY\n        let maxEnd = Number.NEGATIVE_INFINITY\n        for (const line of lines) {\n          const featureType = line.fields[2]!\n          // only expand redispatch range if feature is not a \"dontRedispatch\"\n          // type skips large regions like chromosome,region\n          if (!this.dontRedispatch.includes(featureType)) {\n            const start = line.start - 1 // gff is 1-based\n            if (start < minStart) {\n              minStart = start\n            }\n            if (line.end > maxEnd) {\n              maxEnd = line.end\n            }\n          }\n        }\n        if (maxEnd > query.end || minStart < query.start) {\n          // make a new feature callback to only return top-level features\n          // in the original query range\n          await this.getFeaturesHelper(\n            { ...query, start: minStart, end: maxEnd },\n            opts,\n            metadata,\n            observer,\n            false,\n            query,\n          )\n          return\n        }\n      }\n\n      const gff3 = lines\n        .map(lineRecord => {\n          if (lineRecord.fields[8] && lineRecord.fields[8] !== '.') {\n            if (!lineRecord.fields[8].includes('_lineHash')) {\n              lineRecord.fields[8] += `;_lineHash=${lineRecord.lineHash}`\n            }\n          } else {\n            lineRecord.fields[8] = `_lineHash=${lineRecord.lineHash}`\n          }\n          return lineRecord.fields.join('\\t')\n        })\n        .join('\\n')\n\n      for (const featureLocs of parseStringSync(gff3)) {\n        for (const featureLoc of featureLocs) {\n          const f = new SimpleFeature({\n            data: featureData(featureLoc),\n            id: `${this.id}-offset-${featureLoc.attributes?._lineHash?.[0]}`,\n          })\n          if (\n            doesIntersect2(\n              f.get('start'),\n              f.get('end'),\n              originalQuery.start,\n              originalQuery.end,\n            )\n          ) {\n            observer.next(f)\n          }\n        }\n      }\n      observer.complete()\n    } catch (e) {\n      observer.error(e)\n    }\n  }\n\n  private parseLine(\n    columnNumbers: { start: number; end: number },\n    line: string,\n    fileOffset: number,\n  ) {\n    const fields = line.split('\\t')\n\n    // note: index column numbers are 1-based\n    return {\n      start: +fields[columnNumbers.start - 1]!,\n      end: +fields[columnNumbers.end - 1]!,\n      lineHash: fileOffset,\n      fields,\n    }\n  }\n\n  public freeResources(/* { region } */) {}\n}\n","import { GFF3FeatureLineWithRefs } from 'gff-nostream'\n\ninterface GFF3Feature {\n  start: number\n  end: number\n  strand?: number\n  type: string | null\n  source: string | null\n  refName: string\n  derived_features: unknown[] | null\n  phase?: number\n  score?: number\n  subfeatures: GFF3Feature[] | undefined\n  [key: string]: unknown\n}\n\nexport function featureData(data: GFF3FeatureLineWithRefs): GFF3Feature {\n  const {\n    end,\n    start,\n    child_features,\n    derived_features,\n    attributes,\n    type,\n    source,\n    phase,\n    seq_id,\n    score,\n    strand,\n  } = data\n\n  let strand2: number | undefined\n  if (strand === '+') {\n    strand2 = 1\n  } else if (strand === '-') {\n    strand2 = -1\n  } else if (strand === '.') {\n    strand2 = 0\n  }\n\n  const defaultFields = new Set([\n    'start',\n    'end',\n    'seq_id',\n    'score',\n    'type',\n    'source',\n    'phase',\n    'strand',\n  ])\n  const dataAttributes = attributes || {}\n  const resultAttributes = {} as Record<string, unknown>\n  for (const a of Object.keys(dataAttributes)) {\n    let b = a.toLowerCase()\n    if (defaultFields.has(b)) {\n      // add \"suffix\" to tag name if it already exists\n      // reproduces behavior of NCList\n      b += '2'\n    }\n    if (dataAttributes[a] && a !== '_lineHash') {\n      let attr: string | string[] | undefined = dataAttributes[a]\n      if (Array.isArray(attr) && attr.length === 1) {\n        ;[attr] = attr\n      }\n      resultAttributes[b] = attr\n    }\n  }\n\n  return {\n    ...resultAttributes,\n    start: start! - 1,\n    end: end!,\n    strand: strand2,\n    type,\n    source,\n    refName: seq_id!,\n    derived_features,\n    phase: phase === null ? undefined : Number(phase),\n    score: score === null ? undefined : score,\n    subfeatures: child_features.flatMap(childLocs =>\n      childLocs.map(childLoc => featureData(childLoc)),\n    ),\n  }\n}\n"],"names":["Gff3TabixAdapter","BaseFeatureDataAdapter","constructor","config","getSubAdapter","pluginManager","super","gffGzLocation","readConfObject","indexType","location","dontRedispatch","this","gff","TabixIndexedFile","filehandle","openLocation","csiFilehandle","undefined","tbiFilehandle","chunkCacheSize","renameRefSeqs","n","getRefNames","opts","getReferenceSequenceNames","getHeader","getFeatures","query","ObservableCreate","async","metadata","getMetadata","getFeaturesHelper","observer","signal","allowRedispatch","originalQuery","lines","getLines","refName","start","end","line","fileOffset","push","parseLine","columnNumbers","length","minStart","Number","POSITIVE_INFINITY","maxEnd","NEGATIVE_INFINITY","featureType","fields","includes","gff3","map","lineRecord","lineHash","join","featureLocs","parseStringSync","featureLoc","f","SimpleFeature","data","featureData","id","attributes","_lineHash","doesIntersect2","get","next","complete","e","error","split","freeResources","child_features","derived_features","type","source","phase","seq_id","score","strand","strand2","defaultFields","Set","dataAttributes","resultAttributes","a","Object","keys","b","toLowerCase","has","attr","Array","isArray","subfeatures","flatMap","childLocs","childLoc"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/741.a9772d36.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[741],{60741:(e,n,t)=>{t.r(n),t.d(n,{default:()=>A});var o=t(7552),l=t(89003),c=t(61723),r=t(29499),a=t(36715),i=t(58507),s=t(5401),m=t(49823),u=t(75785),d=t(68446),E=t(68584),b=t(30157);const C=(0,u.n9)()((e=>({connectionContainer:{margin:e.spacing(4),width:500}})));function h(){return o.createElement(l.A,{title:"Unable to delete connection in config file as non-admin user"},o.createElement(c.A,null,o.createElement(b.A,{color:"disabled"})))}const A=(0,d.observer)((function({session:e,handleClose:n,breakConnection:t}){const{classes:l}=C(),{adminMode:u,connections:d,sessionConnections:A}=e;return o.createElement(m.Dialog,{open:!0,onClose:n,maxWidth:"lg",title:"Delete connections"},o.createElement(r.A,null,o.createElement(a.A,null,"Click the X icon to delete the connection from your config completely"),o.createElement("div",{className:l.connectionContainer},d.map((e=>{const n=(0,E.readConfObject)(e,"name");return o.createElement(a.A,{key:`conn-${n}`},u||A?.includes(e)?o.createElement(c.A,{onClick:()=>{t(e,!0)}},o.createElement(b.A,{color:"error"})):o.createElement(h,null),n)})),d.length?null:o.createElement(a.A,null,"No connections found"))),o.createElement(i.A,null,o.createElement(s.A,{onClick:()=>{n()},variant:"contained",color:"primary"},"Close")))}))}}]);
+//# sourceMappingURL=741.a9772d36.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/741.a9772d36.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/741.a9772d36.chunk.js","mappings":"4RAqBA,MAAMA,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,oBAAqB,CACnBC,OAAQF,EAAMG,QAAQ,GACtBC,MAAO,SAIX,SAASC,IACP,OACEC,EAAAA,cAACC,EAAAA,EAAO,CAACC,MAAM,gEACbF,EAAAA,cAACG,EAAAA,EAAU,KACTH,EAAAA,cAACI,EAAAA,EAAS,CAACC,MAAM,cAIzB,CAEA,MAyDA,GAzDgCC,EAAAA,EAAAA,WAAS,UAAU,QACjDC,EAAO,YACPC,EAAW,gBACXC,IAMA,MAAM,QAAEC,GAAYlB,KACd,UAAEmB,EAAS,YAAEC,EAAW,mBAAEC,GAAuBN,EACvD,OACEP,EAAAA,cAACc,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASR,EAAaS,SAAS,KAAKf,MAAM,sBACrDF,EAAAA,cAACkB,EAAAA,EAAa,KACZlB,EAAAA,cAACmB,EAAAA,EAAU,KAAC,yEAGZnB,EAAAA,cAAA,OAAKoB,UAAWV,EAAQf,qBACrBiB,EAAYS,KAAIC,IACf,MAAMC,GAAOC,EAAAA,EAAAA,gBAAeF,EAAM,QAClC,OACEtB,EAAAA,cAACmB,EAAAA,EAAU,CAACM,IAAK,QAAQF,KACtBZ,GAAaE,GAAoBa,SAASJ,GACzCtB,EAAAA,cAACG,EAAAA,EAAU,CACTwB,QAASA,KACPlB,EAAgBa,GAAM,EAAK,GAG7BtB,EAAAA,cAACI,EAAAA,EAAS,CAACC,MAAM,WAGnBL,EAAAA,cAACD,EAAc,MAEhBwB,EACU,IAGfX,EAAYgB,OAEV,KADF5B,EAAAA,cAACmB,EAAAA,EAAU,KAAC,0BAIlBnB,EAAAA,cAAC6B,EAAAA,EAAa,KACZ7B,EAAAA,cAAC8B,EAAAA,EAAM,CACLH,QAASA,KACPnB,GAAa,EAEfuB,QAAQ,YACR1B,MAAM,WACP,UAMT,G","sources":["../../../plugins/data-management/src/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  IconButton,\n  Tooltip,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n\nconst useStyles = makeStyles()(theme => ({\n  connectionContainer: {\n    margin: theme.spacing(4),\n    width: 500,\n  },\n}))\n\nfunction DisabledButton() {\n  return (\n    <Tooltip title=\"Unable to delete connection in config file as non-admin user\">\n      <IconButton>\n        <CloseIcon color=\"disabled\" />\n      </IconButton>\n    </Tooltip>\n  )\n}\n\nconst ManageConnectionsDialog = observer(function ({\n  session,\n  handleClose,\n  breakConnection,\n}: {\n  handleClose: () => void\n  session: AbstractSessionModel\n  breakConnection: (conf: AnyConfigurationModel, arg: boolean) => void\n}) {\n  const { classes } = useStyles()\n  const { adminMode, connections, sessionConnections } = session\n  return (\n    <Dialog open onClose={handleClose} maxWidth=\"lg\" title=\"Delete connections\">\n      <DialogContent>\n        <Typography>\n          Click the X icon to delete the connection from your config completely\n        </Typography>\n        <div className={classes.connectionContainer}>\n          {connections.map(conf => {\n            const name = readConfObject(conf, 'name')\n            return (\n              <Typography key={`conn-${name}`}>\n                {adminMode || sessionConnections?.includes(conf) ? (\n                  <IconButton\n                    onClick={() => {\n                      breakConnection(conf, true)\n                    }}\n                  >\n                    <CloseIcon color=\"error\" />\n                  </IconButton>\n                ) : (\n                  <DisabledButton />\n                )}\n                {name}\n              </Typography>\n            )\n          })}\n          {!connections.length ? (\n            <Typography>No connections found</Typography>\n          ) : null}\n        </div>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          variant=\"contained\"\n          color=\"primary\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default ManageConnectionsDialog\n"],"names":["useStyles","makeStyles","theme","connectionContainer","margin","spacing","width","DisabledButton","React","Tooltip","title","IconButton","CloseIcon","color","observer","session","handleClose","breakConnection","classes","adminMode","connections","sessionConnections","Dialog","open","onClose","maxWidth","DialogContent","Typography","className","map","conf","name","readConfObject","key","includes","onClick","length","DialogActions","Button","variant"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7418.2ac24978.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7418],{27418:(t,e,o)=>{o.r(e),o.d(e,{alertTitleClasses:()=>h,default:()=>T,getAlertTitleUtilityClass:()=>b});var r=o(7552),s=o(93878),l=o(70799),i=o(51148),a=o(60129),n=o(4785),u=o(36715),c=o(33761),A=o(85693);function b(t){return(0,A.Ay)("MuiAlertTitle",t)}const h=(0,c.A)("MuiAlertTitle",["root"]);var m=o(69500);const p=(0,i.Ay)(u.A,{name:"MuiAlertTitle",slot:"Root",overridesResolver:(t,e)=>e.root})((0,a.A)((({theme:t})=>({fontWeight:t.typography.fontWeightMedium,marginTop:-2})))),T=r.forwardRef((function(t,e){const o=(0,n.b)({props:t,name:"MuiAlertTitle"}),{className:r,...i}=o,a=o,u=(t=>{const{classes:e}=t;return(0,l.A)({root:["root"]},b,e)})(a);return(0,m.jsx)(p,{gutterBottom:!0,component:"div",ownerState:a,ref:e,className:(0,s.A)(u.root,r),...i})}))}}]);
+//# sourceMappingURL=7418.2ac24978.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7418.2ac24978.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7418.2ac24978.chunk.js","mappings":"oTAEO,SAASA,EAA0BC,GACxC,OAAO,EAAAC,EAAA,IAAqB,gBAAiBD,EAC/C,CACA,MACA,GAD0B,EAAAE,EAAA,GAAuB,gBAAiB,CAAC,S,eCOnE,MASMC,GAAiB,EAAAC,EAAA,IAAOC,EAAA,EAAY,CACxCC,KAAM,gBACNN,KAAM,OACNO,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHxB,EAIpB,EAAAC,EAAA,IAAU,EACXC,YAEO,CACLC,WAAYD,EAAME,WAAWC,iBAC7BC,WAAY,OA6ChB,EA1CgC,cAAiB,SAAoBC,EAASC,GAC5E,MAAMV,GAAQ,OAAgB,CAC5BA,MAAOS,EACPX,KAAM,mBAEF,UACJa,KACGC,GACDZ,EACEa,EAAab,EACbc,EA/BkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,EAAAE,EAAA,GAHO,CACZb,KAAM,CAAC,SAEoBX,EAA2BuB,EAAQ,EAwBhDE,CAAkBH,GAClC,OAAoB,SAAKlB,EAAgB,CACvCsB,cAAc,EACdC,UAAW,MACXL,WAAYA,EACZH,IAAKA,EACLC,WAAW,EAAAQ,EAAA,GAAKL,EAAQZ,KAAMS,MAC3BC,GAEP,G","sources":["../../../node_modules/@mui/material/AlertTitle/alertTitleClasses.js","../../../node_modules/@mui/material/AlertTitle/AlertTitle.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiAlertTitle', slot);\n}\nconst alertTitleClasses = generateUtilityClasses('MuiAlertTitle', ['root']);\nexport default alertTitleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport { getAlertTitleUtilityClass } from \"./alertTitleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAlertTitleUtilityClass, classes);\n};\nconst AlertTitleRoot = styled(Typography, {\n  name: 'MuiAlertTitle',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    fontWeight: theme.typography.fontWeightMedium,\n    marginTop: -2\n  };\n}));\nconst AlertTitle = /*#__PURE__*/React.forwardRef(function AlertTitle(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAlertTitle'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AlertTitleRoot, {\n    gutterBottom: true,\n    component: \"div\",\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AlertTitle.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AlertTitle;"],"names":["getAlertTitleUtilityClass","slot","generateUtilityClass","generateUtilityClasses","AlertTitleRoot","styled","Typography","name","overridesResolver","props","styles","root","memoTheme","theme","fontWeight","typography","fontWeightMedium","marginTop","inProps","ref","className","other","ownerState","classes","composeClasses","useUtilityClasses","gutterBottom","component","clsx"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7428.1e6f676f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7428],{27428:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var o=n(7552),a=n(36715),r=n(5401),l=n(68446),s=n(78781),c=n(49823),i=n(54579),u=n(14465);const m=(0,o.lazy)((()=>n.e(6999).then(n.bind(n,66999)))),d=(0,o.lazy)((()=>n.e(6746).then(n.bind(n,76746)))),p=(0,l.observer)((function({model:e,feature:t}){const{sequenceFeatureDetails:n}=e,{upDownBp:l}=n,p=(0,o.useRef)(null),[f,b]=(0,o.useState)(!1),[w,g]=(0,o.useState)(!1),{sequence:h,error:C}=(0,s.p)(e,t,l,w);return(0,o.useEffect)((()=>{n.setFeature(t)}),[n,t]),o.createElement(o.Fragment,null,o.createElement("div",null,o.createElement(u.A,{model:n}),o.createElement(i.A,{ref:p,model:n,extraItems:[{label:"Open in dialog",onClick:()=>{setTimeout((()=>{b(!0)}),1)}}]})),f?o.createElement("div",null,"Open in dialog...",o.createElement(o.Suspense,{fallback:o.createElement(c.LoadingEllipses,null)},o.createElement(d,{model:e,feature:t,handleClose:()=>{b(!1)}}))):o.createElement("div",null,"gene"===t.type?o.createElement(a.A,null,"Note: inspect subfeature sequences for protein/CDS computations"):null,C?o.createElement(c.ErrorMessage,{error:C}):h?"error"in h?o.createElement(o.Fragment,null,o.createElement(a.A,{color:"error"},h.error),o.createElement(r.A,{variant:"contained",color:"inherit",onClick:()=>{g(!0)}},"Force load")):o.createElement(o.Suspense,{fallback:o.createElement(c.LoadingEllipses,null)},o.createElement(m,{ref:p,feature:t,sequence:h,model:n})):o.createElement(c.LoadingEllipses,null)))}))},54579:(e,t,n)=>{n.d(t,{A:()=>d});var o=n(7552),a=n(68446),r=n(31409),l=n.n(r),s=n(45465),c=n(23758),i=n(17307),u=n(22168);const m=(0,o.lazy)((()=>n.e(3550).then(n.bind(n,21169)))),d=(0,a.observer)(o.forwardRef((function({model:e,extraItems:t=[]},n){if("function"==typeof n)throw new Error("needs a non function ref");const[a,r]=(0,o.useState)(!1),{showCoordinatesSetting:d,showGenomicCoordsOption:p}=e;return o.createElement(o.Fragment,null,o.createElement(c.A,{menuItems:[{label:"Copy plaintext",onClick:()=>{const e=n?.current;e&&l()(e.textContent||"",{format:"text/plain"})}},{label:"Copy HTML",onClick:()=>{const e=n?.current;e&&l()(e.outerHTML,{format:"text/html"})}},{label:"Download plaintext",onClick:()=>{const e=n?.current;e&&(0,s.saveAs)(new Blob([e.textContent||""],{type:"text/plain;charset=utf-8"}),"sequence.txt")}},{label:"Download HTML",onClick:()=>{const e=n?.current;e&&(0,s.saveAs)(new Blob([e.outerHTML||""],{type:"text/html;charset=utf-8"}),"sequence.html")}},...t,{label:"Show coordinates?",type:"subMenu",subMenu:[{label:"No coordinates",type:"radio",checked:"none"===d,onClick:()=>{e.setShowCoordinates("none")}},{label:"Coordinates relative to feature start",type:"radio",checked:"relative"===d,onClick:()=>{e.setShowCoordinates("relative")}},...p?[{label:"Coordinates relative to genome (only available for continuous genome based sequence types)",type:"radio",checked:"genomic"===d,onClick:()=>{e.setShowCoordinates("genomic")}}]:[]]},{label:"Settings",icon:u.A,onClick:()=>{r(!0)}}]},o.createElement(i.A,null)),a?o.createElement(m,{model:e,handleClose:()=>{r(!1)}}):null)})))},14465:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(7552),a=n(48171),r=n(98360),l=n(29629),s=n(68446);const c=(0,n(75785).n9)()({formControl:{margin:0,marginLeft:4}}),i=(0,s.observer)((function({model:e}){const{classes:t}=c(),{intronBp:n,upDownBp:s,mode:i,hasCDS:u,hasExonOrCDS:m}=e;return o.createElement(a.A,{className:t.formControl},o.createElement(r.A,{size:"small",value:i,onChange:t=>{e.setMode(t.target.value)}},Object.entries({...u?{cds:"CDS"}:{},...u?{protein:"Protein"}:{},...m?{cdna:"cDNA"}:{},...m?{gene:"Genomic w/ full introns"}:{},...m?{gene_updownstream:`Genomic w/ full introns +/- ${s}bp up+down stream`}:{},...m?{gene_collapsed_intron:`Genomic w/ ${n}bp intron`}:{},...m?{gene_updownstream_collapsed_intron:`Genomic w/ ${n}bp intron +/- ${s}bp up+down stream `}:{},...m?{}:{genomic:"Genomic"},...m?{}:{genomic_sequence_updownstream:`Genomic +/- ${s}bp up+down stream`}}).map((([e,t])=>o.createElement(l.A,{key:e,value:e},t)))))}))},78781:(e,t,n)=>{n.d(t,{p:()=>s});var o=n(7552),a=n(99546),r=n(68584);const l=5e5;function s(e,t,n,s){const[c,i]=(0,o.useState)(),[u,m]=(0,o.useState)();return(0,o.useEffect)((()=>{if(!e)return;const{assemblyManager:o,rpcManager:c}=(0,a.getSession)(e),u=e.view?.assemblyNames?.[0]||"";async function d(e,t,n){const a=await o.waitForAssembly(u);if(!a)throw new Error("assembly not found");const l="getSequence",s=await c.call(l,"CoreGetFeatures",{adapterConfig:(0,r.getConf)(a,["sequence","adapter"]),sessionId:l,regions:[{start:e,end:t,refName:a.getCanonicalRefName(n),assemblyName:u}]}),[i]=s;return i?.get("seq")||""}(async()=>{try{m(void 0);const{start:e,end:o,refName:a}=t;if(!s&&o-e>l)i({error:`Genomic sequence larger than ${l}bp, use "force load" button to display`});else{const t=e-n,r=o+n,l=await d(e,o,a),s=await d(Math.max(0,t),e,a),c=await d(o,r,a);i({seq:l,upstream:s,downstream:c})}}catch(e){console.error(e),m(e)}})()}),[t,e,n,s]),{sequence:c,error:u}}},22168:(e,t,n)=>{n.d(t,{A:()=>r});var o=n(74893),a=n(69500);const r=(0,o.A)((0,a.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")}}]);
+//# sourceMappingURL=7428.1e6f676f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7428.1e6f676f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7428.1e6f676f.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/hooks.ts","../../../node_modules/@mui/icons-material/esm/Settings.js"],"sourcesContent":["import React, { lazy, useRef, useState, Suspense, useEffect } from 'react'\nimport { Button, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { useFeatureSequence } from './hooks'\nimport { ErrorMessage, LoadingEllipses } from '../../ui'\nimport { SimpleFeatureSerialized } from '../../util'\nimport { BaseFeatureWidgetModel } from '../stateModelFactory'\n\n// icons\nimport SequenceFeatureMenu from './dialogs/SequenceFeatureMenu'\nimport SequenceTypeSelector from './dialogs/SequenceTypeSelector'\n\n// lazies\nconst SequencePanel = lazy(() => import('./SequencePanel'))\nconst SequenceDialog = lazy(() => import('./dialogs/SequenceDialog'))\n\n// set the key on this component to feature.id to clear state after new feature\n// is selected\nconst SequenceFeatureDetails = observer(function ({\n  model,\n  feature,\n}: {\n  model: BaseFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { sequenceFeatureDetails } = model\n  const { upDownBp } = sequenceFeatureDetails\n  const seqPanelRef = useRef<HTMLDivElement>(null)\n\n  const [openInDialog, setOpenInDialog] = useState(false)\n  const [force, setForce] = useState(false)\n  const { sequence, error } = useFeatureSequence(\n    model,\n    feature,\n    upDownBp,\n    force,\n  )\n  useEffect(() => {\n    sequenceFeatureDetails.setFeature(feature)\n  }, [sequenceFeatureDetails, feature])\n\n  return (\n    <>\n      <div>\n        <SequenceTypeSelector model={sequenceFeatureDetails} />\n        <SequenceFeatureMenu\n          ref={seqPanelRef}\n          model={sequenceFeatureDetails}\n          extraItems={[\n            {\n              label: 'Open in dialog',\n              onClick: () => {\n                // this is given a setTimeout because it allows the menu to\n                // close before dialog opens\n                setTimeout(() => {\n                  setOpenInDialog(true)\n                }, 1)\n              },\n            },\n          ]}\n        />\n      </div>\n      {openInDialog ? (\n        <div>\n          Open in dialog...\n          <Suspense fallback={<LoadingEllipses />}>\n            <SequenceDialog\n              model={model}\n              feature={feature}\n              handleClose={() => {\n                setOpenInDialog(false)\n              }}\n            />\n          </Suspense>\n        </div>\n      ) : (\n        <div>\n          {feature.type === 'gene' ? (\n            <Typography>\n              Note: inspect subfeature sequences for protein/CDS computations\n            </Typography>\n          ) : null}\n          {error ? (\n            <ErrorMessage error={error} />\n          ) : !sequence ? (\n            <LoadingEllipses />\n          ) : 'error' in sequence ? (\n            <>\n              <Typography color=\"error\">{sequence.error}</Typography>\n              <Button\n                variant=\"contained\"\n                color=\"inherit\"\n                onClick={() => {\n                  setForce(true)\n                }}\n              >\n                Force load\n              </Button>\n            </>\n          ) : (\n            <Suspense fallback={<LoadingEllipses />}>\n              <SequencePanel\n                ref={seqPanelRef}\n                feature={feature}\n                sequence={sequence}\n                model={sequenceFeatureDetails}\n              />\n            </Suspense>\n          )}\n        </div>\n      )}\n    </>\n  )\n})\n\nexport default SequenceFeatureDetails\n","import React, { lazy, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport copy from 'copy-to-clipboard'\nimport { saveAs } from 'file-saver'\n\n// locals\nimport CascadingMenuButton from '../../../ui/CascadingMenuButton'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport { MenuItem } from '../../../ui'\n\n// icons\nimport MoreVert from '@mui/icons-material/MoreVert'\nimport Settings from '@mui/icons-material/Settings'\n\n// lazies\nconst SequenceFeatureSettingsDialog = lazy(() => import('./SettingsDialog'))\n\ninterface Props {\n  model: SequenceFeatureDetailsModel\n  extraItems?: MenuItem[]\n}\nconst SequenceFeatureMenu = observer(\n  React.forwardRef<HTMLDivElement, Props>(function SequenceFeatureMenu2(\n    { model, extraItems = [] },\n    ref,\n  ) {\n    if (typeof ref === 'function') {\n      throw new Error('needs a non function ref')\n    }\n    const [showSettings, setShowSettings] = useState(false)\n    const { showCoordinatesSetting, showGenomicCoordsOption } = model\n\n    return (\n      <>\n        <CascadingMenuButton\n          menuItems={[\n            {\n              label: 'Copy plaintext',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  copy(r.textContent || '', { format: 'text/plain' })\n                }\n              },\n            },\n            {\n              label: 'Copy HTML',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  copy(r.outerHTML, { format: 'text/html' })\n                }\n              },\n            },\n            {\n              label: 'Download plaintext',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  saveAs(\n                    new Blob([r.textContent || ''], {\n                      type: 'text/plain;charset=utf-8',\n                    }),\n                    'sequence.txt',\n                  )\n                }\n              },\n            },\n            {\n              label: 'Download HTML',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  saveAs(\n                    new Blob([r.outerHTML || ''], {\n                      type: 'text/html;charset=utf-8',\n                    }),\n                    'sequence.html',\n                  )\n                }\n              },\n            },\n\n            ...extraItems,\n\n            {\n              label: 'Show coordinates?',\n              type: 'subMenu',\n              subMenu: [\n                {\n                  label: 'No coordinates',\n                  type: 'radio',\n                  checked: showCoordinatesSetting === 'none',\n                  onClick: () => {\n                    model.setShowCoordinates('none')\n                  },\n                },\n                {\n                  label: 'Coordinates relative to feature start',\n                  type: 'radio',\n                  checked: showCoordinatesSetting === 'relative',\n                  onClick: () => {\n                    model.setShowCoordinates('relative')\n                  },\n                },\n                ...(showGenomicCoordsOption\n                  ? [\n                      {\n                        label:\n                          'Coordinates relative to genome (only available for continuous genome based sequence types)',\n                        type: 'radio' as const,\n                        checked: showCoordinatesSetting === 'genomic',\n                        onClick: () => {\n                          model.setShowCoordinates('genomic')\n                        },\n                      },\n                    ]\n                  : []),\n              ],\n            },\n            {\n              label: 'Settings',\n              icon: Settings,\n              onClick: () => {\n                setShowSettings(true)\n              },\n            },\n          ]}\n        >\n          <MoreVert />\n        </CascadingMenuButton>\n\n        {showSettings ? (\n          <SequenceFeatureSettingsDialog\n            model={model}\n            handleClose={() => {\n              setShowSettings(false)\n            }}\n          />\n        ) : null}\n      </>\n    )\n  }),\n)\n\nexport default SequenceFeatureMenu\n","import React from 'react'\nimport { FormControl, MenuItem, Select } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n// locals\nimport { SequenceFeatureDetailsModel } from '../model'\n\nconst useStyles = makeStyles()({\n  formControl: {\n    margin: 0,\n    marginLeft: 4,\n  },\n})\n\nconst SequenceTypeSelector = observer(function ({\n  model,\n}: {\n  model: SequenceFeatureDetailsModel\n}) {\n  const { classes } = useStyles()\n  const { intronBp, upDownBp, mode, hasCDS, hasExonOrCDS } = model\n\n  return (\n    <FormControl className={classes.formControl}>\n      <Select\n        size=\"small\"\n        value={mode}\n        onChange={event => {\n          model.setMode(event.target.value)\n        }}\n      >\n        {Object.entries({\n          ...(hasCDS\n            ? {\n                cds: 'CDS',\n              }\n            : {}),\n          ...(hasCDS\n            ? {\n                protein: 'Protein',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                cdna: 'cDNA',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene: 'Genomic w/ full introns',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_updownstream: `Genomic w/ full introns +/- ${upDownBp}bp up+down stream`,\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_collapsed_intron: `Genomic w/ ${intronBp}bp intron`,\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_updownstream_collapsed_intron: `Genomic w/ ${intronBp}bp intron +/- ${upDownBp}bp up+down stream `,\n              }\n            : {}),\n          ...(!hasExonOrCDS\n            ? {\n                genomic: 'Genomic',\n              }\n            : {}),\n          ...(!hasExonOrCDS\n            ? {\n                genomic_sequence_updownstream: `Genomic +/- ${upDownBp}bp up+down stream`,\n              }\n            : {}),\n        }).map(([key, val]) => (\n          <MenuItem key={key} value={key}>\n            {val}\n          </MenuItem>\n        ))}\n      </Select>\n    </FormControl>\n  )\n})\n\nexport default SequenceTypeSelector\n","import { useEffect, useState } from 'react'\n\nimport { SeqState, ErrorState } from '../util'\nimport { Feature, SimpleFeatureSerialized, getSession } from '../../util'\nimport { getConf } from '../../configuration'\n\nconst BPLIMIT = 500_000\n\ninterface CoordFeat extends SimpleFeatureSerialized {\n  refName: string\n  start: number\n  end: number\n}\n\nexport function useFeatureSequence(\n  model: { view?: { assemblyNames?: string[] } } | undefined,\n  feature: SimpleFeatureSerialized,\n  upDownBp: number,\n  forceLoad: boolean,\n) {\n  const [sequence, setSequence] = useState<SeqState | ErrorState>()\n  const [error, setError] = useState<unknown>()\n  useEffect(() => {\n    if (!model) {\n      return\n    }\n    const { assemblyManager, rpcManager } = getSession(model)\n    const assemblyName = model.view?.assemblyNames?.[0] || ''\n    async function fetchSeq(start: number, end: number, refName: string) {\n      const assembly = await assemblyManager.waitForAssembly(assemblyName)\n      if (!assembly) {\n        throw new Error('assembly not found')\n      }\n      const sessionId = 'getSequence'\n      const feats = await rpcManager.call(sessionId, 'CoreGetFeatures', {\n        adapterConfig: getConf(assembly, ['sequence', 'adapter']),\n        sessionId,\n        regions: [\n          {\n            start,\n            end,\n            refName: assembly.getCanonicalRefName(refName),\n            assemblyName,\n          },\n        ],\n      })\n\n      const [feat] = feats as Feature[]\n      return (feat?.get('seq') as string | undefined) || ''\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        setError(undefined)\n        const { start, end, refName } = feature as CoordFeat\n\n        if (!forceLoad && end - start > BPLIMIT) {\n          setSequence({\n            error: `Genomic sequence larger than ${BPLIMIT}bp, use \"force load\" button to display`,\n          })\n        } else {\n          const b = start - upDownBp\n          const e = end + upDownBp\n          const seq = await fetchSeq(start, end, refName)\n          const up = await fetchSeq(Math.max(0, b), start, refName)\n          const down = await fetchSeq(end, e, refName)\n          setSequence({ seq, upstream: up, downstream: down })\n        }\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [feature, model, upDownBp, forceLoad])\n  return { sequence, error }\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');"],"names":["SequencePanel","lazy","SequenceDialog","observer","model","feature","sequenceFeatureDetails","upDownBp","seqPanelRef","useRef","openInDialog","setOpenInDialog","useState","force","setForce","sequence","error","useFeatureSequence","useEffect","setFeature","React","SequenceTypeSelector","SequenceFeatureMenu","ref","extraItems","label","onClick","setTimeout","Suspense","fallback","LoadingEllipses","handleClose","type","Typography","ErrorMessage","color","Button","variant","SequenceFeatureSettingsDialog","Error","showSettings","setShowSettings","showCoordinatesSetting","showGenomicCoordsOption","CascadingMenuButton","menuItems","r","current","copy","textContent","format","outerHTML","saveAs","Blob","subMenu","checked","setShowCoordinates","icon","Settings","MoreVert","useStyles","makeStyles","formControl","margin","marginLeft","classes","intronBp","mode","hasCDS","hasExonOrCDS","FormControl","className","Select","size","value","onChange","event","setMode","target","Object","entries","cds","protein","cdna","gene","gene_updownstream","gene_collapsed_intron","gene_updownstream_collapsed_intron","genomic","genomic_sequence_updownstream","map","key","val","MenuItem","BPLIMIT","forceLoad","setSequence","setError","assemblyManager","rpcManager","getSession","assemblyName","view","assemblyNames","async","fetchSeq","start","end","refName","assembly","waitForAssembly","sessionId","feats","call","adapterConfig","getConf","regions","getCanonicalRefName","feat","get","undefined","b","e","seq","up","Math","max","down","upstream","downstream","console","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7489.b8a76d29.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7489],{69870:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var s=a(71616),n=a(46377),i=a(99834),r=a(66885),c=a(99546),o=a(47046),u=a(43334);class h extends n.BaseSequenceAdapter{seqCache=new o.A({cache:new u.A({maxSize:200}),fill:async(e,t)=>{const{refName:a,start:s,end:n,fasta:i}=e;return i.getSequence(a,s,n,{...e,signal:t})}});async getRefNames(e){const{fasta:t}=await this.setup();return t.getSequenceNames(e)}async getRegions(e){const{fasta:t}=await this.setup(),a=await t.getSequenceSizes(e);return Object.keys(a).map((e=>({refName:e,start:0,end:a[e]})))}async setupPre(){const e=this.getConf("fastaLocation"),t=this.getConf("faiLocation");return{fasta:new s.BL({fasta:(0,i.openLocation)(e,this.pluginManager),fai:(0,i.openLocation)(t,this.pluginManager)})}}async getHeader(){const e=this.getConf("metadataLocation");return""===e.uri||"/path/to/fa.metadata.yaml"===e.uri?null:(0,i.openLocation)(e,this.pluginManager).readFile("utf8")}async setup(){return this.setupP||(this.setupP=this.setupPre().catch((e=>{throw this.setupP=void 0,e}))),this.setupP}getFeatures(e,t){const{refName:a,start:s,end:n}=e;return(0,r.ObservableCreate)((async e=>{const{fasta:i}=await this.setup(),r=await i.getSequenceSize(a,t),o=Math.min(r,n),u=[],h=128e3,f=s-s%h,l=n+(h-n%h);for(let e=f;e<l;e+=h){const s={refName:a,start:e,end:e+h};u.push(this.seqCache.get(JSON.stringify(s),{...s,fasta:i},t?.signal))}const p=(await Promise.all(u)).join("").slice(s-f).slice(0,n-s);p&&e.next(new c.SimpleFeature({id:`${a} ${s}-${o}`,data:{refName:a,start:s,end:o,seq:p}})),e.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=7489.b8a76d29.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7489.b8a76d29.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7489.b8a76d29.chunk.js","mappings":"wOAmBe,MAAMA,UAA4BC,EAAAA,oBAGvCC,SAAW,IAAIC,EAAAA,EAA6C,CAClEC,MAAO,IAAIC,EAAAA,EAAS,CAAEC,QAAS,MAC/BC,KAAMC,MAAOC,EAASC,KACpB,MAAM,QAAEC,EAAO,MAAEC,EAAK,IAAEC,EAAG,MAAEC,GAAUL,EACvC,OAAOK,EAAMC,YAAYJ,EAASC,EAAOC,EAAK,IAAKJ,EAAMC,UAAS,IAItE,iBAAaM,CAAYC,GACvB,MAAM,MAAEH,SAAgBI,KAAKC,QAC7B,OAAOL,EAAMM,iBAAiBH,EAChC,CAEA,gBAAaI,CAAWJ,GACtB,MAAM,MAAEH,SAAgBI,KAAKC,QACvBG,QAAiBR,EAAMS,iBAAiBN,GAC9C,OAAOO,OAAOC,KAAKH,GAAUI,KAAIf,IAAW,CAC1CA,UACAC,MAAO,EACPC,IAAKS,EAASX,MAElB,CAEA,cAAagB,GACX,MAAMC,EAAgBV,KAAKW,QAAQ,iBAC7BC,EAAcZ,KAAKW,QAAQ,eAEjC,MAAO,CACLf,MAAO,IAAIiB,EAAAA,GAAa,CACtBjB,OAAOkB,EAAAA,EAAAA,cAAaJ,EAAeV,KAAKe,eACxCC,KAAKF,EAAAA,EAAAA,cAAaF,EAAaZ,KAAKe,iBAG1C,CAEA,eAAaE,GACX,MAAMC,EAAMlB,KAAKW,QAAQ,oBACzB,MAAmB,KAAZO,EAAIC,KAA0B,8BAAZD,EAAIC,IACzB,MACAL,EAAAA,EAAAA,cAAaI,EAAKlB,KAAKe,eAAeK,SAAS,OACrD,CAEA,WAAanB,GAOX,OANKD,KAAKqB,SACRrB,KAAKqB,OAASrB,KAAKS,WAAWa,OAAOC,IAEnC,MADAvB,KAAKqB,YAASG,EACRD,CAAC,KAGJvB,KAAKqB,MACd,CAEOI,WAAAA,CAAYC,EAA0B3B,GAC3C,MAAM,QAAEN,EAAO,MAAEC,EAAK,IAAEC,GAAQ+B,EAChC,OAAOC,EAAAA,EAAAA,mBAA0BrC,UAC/B,MAAM,MAAEM,SAAgBI,KAAKC,QACvB2B,QAAahC,EAAMiC,gBAAgBpC,EAASM,GAC5C+B,EAAYC,KAAKC,IAAIJ,EAAMjC,GAC3BsC,EAAS,GACTC,EAAY,MAEZC,EAAIzC,EAASA,EAAQwC,EACrBX,EAAI5B,GAAOuC,EAAavC,EAAMuC,GACpC,IAAK,IAAIE,EAAaD,EAAGC,EAAab,EAAGa,GAAcF,EAAW,CAChE,MAAMG,EAAI,CACR5C,UACAC,MAAO0C,EACPzC,IAAKyC,EAAaF,GAEpBD,EAAOK,KACLtC,KAAKhB,SAASuD,IAAIC,KAAKC,UAAUJ,GAAI,IAAKA,EAAGzC,SAASG,GAAMP,QAEhE,CACA,MAAMkD,SAAaC,QAAQC,IAAIX,IAC5BY,KAAK,IACLC,MAAMpD,EAAQyC,GACdW,MAAM,EAAGnD,EAAMD,GACdgD,GACFK,EAASC,KACP,IAAIC,EAAAA,cAAc,CAChBC,GAAI,GAAGzD,KAAWC,KAASoC,IAC3BqB,KAAM,CAAE1D,UAASC,QAAOC,IAAKmC,EAAWY,UAI9CK,EAASK,UAAU,GAEvB,CAOOC,aAAAA,GAAuC,E","sources":["../../../plugins/sequence/src/IndexedFastaAdapter/IndexedFastaAdapter.ts"],"sourcesContent":["import { IndexedFasta } from '@gmod/indexedfasta'\nimport {\n  BaseSequenceAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { FileLocation, NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { SimpleFeature, Feature } from '@jbrowse/core/util'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport QuickLRU from '@jbrowse/core/util/QuickLRU'\n\ninterface T {\n  refName: string\n  start: number\n  end: number\n  fasta: IndexedFasta\n}\n\nexport default class IndexedFastaAdapter extends BaseSequenceAdapter {\n  protected setupP?: Promise<{ fasta: IndexedFasta }>\n\n  private seqCache = new AbortablePromiseCache<T, string | undefined>({\n    cache: new QuickLRU({ maxSize: 200 }),\n    fill: async (args: T, signal?: AbortSignal) => {\n      const { refName, start, end, fasta } = args\n      return fasta.getSequence(refName, start, end, { ...args, signal })\n    },\n  })\n\n  public async getRefNames(opts?: BaseOptions) {\n    const { fasta } = await this.setup()\n    return fasta.getSequenceNames(opts)\n  }\n\n  public async getRegions(opts?: BaseOptions) {\n    const { fasta } = await this.setup()\n    const seqSizes = await fasta.getSequenceSizes(opts)\n    return Object.keys(seqSizes).map(refName => ({\n      refName,\n      start: 0,\n      end: seqSizes[refName]!,\n    }))\n  }\n\n  public async setupPre() {\n    const fastaLocation = this.getConf('fastaLocation') as FileLocation\n    const faiLocation = this.getConf('faiLocation') as FileLocation\n\n    return {\n      fasta: new IndexedFasta({\n        fasta: openLocation(fastaLocation, this.pluginManager),\n        fai: openLocation(faiLocation, this.pluginManager),\n      }),\n    }\n  }\n\n  public async getHeader() {\n    const loc = this.getConf('metadataLocation')\n    return loc.uri === '' || loc.uri === '/path/to/fa.metadata.yaml'\n      ? null\n      : openLocation(loc, this.pluginManager).readFile('utf8')\n  }\n\n  public async setup() {\n    if (!this.setupP) {\n      this.setupP = this.setupPre().catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  public getFeatures(region: NoAssemblyRegion, opts?: BaseOptions) {\n    const { refName, start, end } = region\n    return ObservableCreate<Feature>(async observer => {\n      const { fasta } = await this.setup()\n      const size = await fasta.getSequenceSize(refName, opts)\n      const regionEnd = Math.min(size, end)\n      const chunks = []\n      const chunkSize = 128000\n\n      const s = start - (start % chunkSize)\n      const e = end + (chunkSize - (end % chunkSize))\n      for (let chunkStart = s; chunkStart < e; chunkStart += chunkSize) {\n        const r = {\n          refName,\n          start: chunkStart,\n          end: chunkStart + chunkSize,\n        }\n        chunks.push(\n          this.seqCache.get(JSON.stringify(r), { ...r, fasta }, opts?.signal),\n        )\n      }\n      const seq = (await Promise.all(chunks))\n        .join('')\n        .slice(start - s)\n        .slice(0, end - start)\n      if (seq) {\n        observer.next(\n          new SimpleFeature({\n            id: `${refName} ${start}-${regionEnd}`,\n            data: { refName, start, end: regionEnd, seq },\n          }),\n        )\n      }\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["IndexedFastaAdapter","BaseSequenceAdapter","seqCache","AbortablePromiseCache","cache","QuickLRU","maxSize","fill","async","args","signal","refName","start","end","fasta","getSequence","getRefNames","opts","this","setup","getSequenceNames","getRegions","seqSizes","getSequenceSizes","Object","keys","map","setupPre","fastaLocation","getConf","faiLocation","IndexedFasta","openLocation","pluginManager","fai","getHeader","loc","uri","readFile","setupP","catch","e","undefined","getFeatures","region","ObservableCreate","size","getSequenceSize","regionEnd","Math","min","chunks","chunkSize","s","chunkStart","r","push","get","JSON","stringify","seq","Promise","all","join","slice","observer","next","SimpleFeature","id","data","complete","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7564.3a461e67.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7564],{7564:(e,n,t)=>{t.r(n),t.d(n,{default:()=>d});var a=t(7552),l=t(49823),s=t(29499),o=t(99123),r=t(58507),i=t(5401),c=t(32761),u=t(58701),h=t(59773);function m({onConfirm:e,onCancel:n,reason:t}){return a.createElement(l.Dialog,{open:!0,maxWidth:"xl",title:"Warning"},a.createElement(s.A,null,a.createElement(u.A,{fontSize:"large"}),a.createElement(o.A,null,"This link contains a session that has the following unknown plugins:",a.createElement("ul",null,t.map((e=>a.createElement("li",{key:JSON.stringify(e)},(0,h.lc)(e))))),"Please ensure you trust the source of this session.")),a.createElement(r.A,null,a.createElement(i.A,{color:"primary",variant:"contained",onClick:()=>{e()}},"Yes, I trust it"),a.createElement(i.A,{variant:"contained",color:"secondary",onClick:()=>{n()}},"Cancel")))}function d({loader:e,handleClose:n}){const{sessionTriaged:t}=e;return t?a.createElement(m,{onConfirm:async()=>{const a=JSON.parse(JSON.stringify(t.snap));await e.setSessionSnapshot({...a,id:(0,c.Ak)()},!0),n()},onCancel:()=>{e.setBlankSession(!0),n()},reason:t.reason}):null}},58701:(e,n,t)=>{t.d(n,{A:()=>s});var a=t(74893),l=t(69500);const s=(0,a.A)((0,l.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning")}}]);
+//# sourceMappingURL=7564.3a461e67.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7564.3a461e67.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7564.3a461e67.chunk.js","mappings":"2PAkBA,SAASA,GAAqB,UAC5BC,EAAS,SACTC,EAAQ,OACRC,IAMA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,SAAS,KAAKC,MAAM,WAC/BJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAW,CAACC,SAAS,UACtBP,EAAAA,cAACQ,EAAAA,EAAiB,KAAC,uEAEjBR,EAAAA,cAAA,UACGD,EAAOU,KAAIC,GACVV,EAAAA,cAAA,MAAIW,IAAKC,KAAKC,UAAUH,KAAKI,EAAAA,EAAAA,IAAwBJ,OAEpD,wDAITV,EAAAA,cAACe,EAAAA,EAAa,KACZf,EAAAA,cAACgB,EAAAA,EAAM,CACLC,MAAM,UACNC,QAAQ,YACRC,QAASA,KACPtB,GAAW,GAEd,mBAGDG,EAAAA,cAACgB,EAAAA,EAAM,CACLE,QAAQ,YACRD,MAAM,YACNE,QAASA,KACPrB,GAAU,GAEb,WAMT,CAEe,SAASsB,GAAe,OACrCC,EAAM,YACNC,IAKA,MAAM,eAAEC,GAAmBF,EAC3B,OAAOE,EACLvB,EAAAA,cAACJ,EAAoB,CACnBC,UAAW2B,UACT,MAAMC,EAAUb,KAAKc,MAAMd,KAAKC,UAAUU,EAAeI,aAGnDN,EAAOO,mBAAmB,IAAKH,EAASI,IAAIC,EAAAA,EAAAA,QAAY,GAC9DR,GAAa,EAEfxB,SAAUA,KACRuB,EAAOU,iBAAgB,GACvBT,GAAa,EAEfvB,OAAQwB,EAAexB,SAEvB,IACN,C,6DCrFA,SAAe,QAA4B,SAAK,OAAQ,CACtDiC,EAAG,8CACD,U","sources":["components/SessionWarningDialog.tsx","../../../node_modules/@mui/icons-material/esm/Warning.js"],"sourcesContent":["import React from 'react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  Button,\n  DialogContent,\n  DialogContentText,\n  DialogActions,\n} from '@mui/material'\nimport { nanoid } from '@jbrowse/core/util/nanoid'\n\nimport WarningIcon from '@mui/icons-material/Warning'\nimport {\n  PluginDefinition,\n  pluginDescriptionString,\n} from '@jbrowse/core/PluginLoader'\n\nimport { SessionLoaderModel } from '../SessionLoader'\n\nfunction SessionWarningDialog({\n  onConfirm,\n  onCancel,\n  reason,\n}: {\n  onConfirm: () => void\n  onCancel: () => void\n  reason: PluginDefinition[]\n}) {\n  return (\n    <Dialog open maxWidth=\"xl\" title=\"Warning\">\n      <DialogContent>\n        <WarningIcon fontSize=\"large\" />\n        <DialogContentText>\n          This link contains a session that has the following unknown plugins:\n          <ul>\n            {reason.map(r => (\n              <li key={JSON.stringify(r)}>{pluginDescriptionString(r)}</li>\n            ))}\n          </ul>\n          Please ensure you trust the source of this session.\n        </DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          color=\"primary\"\n          variant=\"contained\"\n          onClick={() => {\n            onConfirm()\n          }}\n        >\n          Yes, I trust it\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            onCancel()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n\nexport default function SessionTriaged({\n  loader,\n  handleClose,\n}: {\n  loader: SessionLoaderModel\n  handleClose: () => void\n}) {\n  const { sessionTriaged } = loader\n  return sessionTriaged ? (\n    <SessionWarningDialog\n      onConfirm={async () => {\n        const session = JSON.parse(JSON.stringify(sessionTriaged.snap))\n\n        // second param true says we passed user confirmation\n        await loader.setSessionSnapshot({ ...session, id: nanoid() }, true)\n        handleClose()\n      }}\n      onCancel={() => {\n        loader.setBlankSession(true)\n        handleClose()\n      }}\n      reason={sessionTriaged.reason}\n    />\n  ) : null\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z\"\n}), 'Warning');"],"names":["SessionWarningDialog","onConfirm","onCancel","reason","React","Dialog","open","maxWidth","title","DialogContent","WarningIcon","fontSize","DialogContentText","map","r","key","JSON","stringify","pluginDescriptionString","DialogActions","Button","color","variant","onClick","SessionTriaged","loader","handleClose","sessionTriaged","async","session","parse","snap","setSessionSnapshot","id","nanoid","setBlankSession","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7579.1b98701c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7579],{17579:(t,o,e)=>{e.r(o),e.d(o,{ButtonGroupButtonContext:()=>m.A,ButtonGroupContext:()=>$.A,buttonGroupClasses:()=>v,default:()=>x,getButtonGroupUtilityClass:()=>B});var r=e(7552),i=e(93878),a=e(70799),n=e(72639),d=e(27921),l=e(15622),s=e(51148),u=e(60129),p=e(58520),b=e(4785),c=e(33761),g=e(85693);function B(t){return(0,g.Ay)("MuiButtonGroup",t)}const v=(0,c.A)("MuiButtonGroup",["root","contained","outlined","text","disableElevation","disabled","firstButton","fullWidth","horizontal","vertical","colorPrimary","colorSecondary","grouped","groupedHorizontal","groupedVertical","groupedText","groupedTextHorizontal","groupedTextVertical","groupedTextPrimary","groupedTextSecondary","groupedOutlined","groupedOutlinedHorizontal","groupedOutlinedVertical","groupedOutlinedPrimary","groupedOutlinedSecondary","groupedContained","groupedContainedHorizontal","groupedContainedVertical","groupedContainedPrimary","groupedContainedSecondary","lastButton","middleButton"]);var $=e(21572),m=e(97712),h=e(69500);const f=(0,s.Ay)("div",{name:"MuiButtonGroup",slot:"Root",overridesResolver:(t,o)=>{const{ownerState:e}=t;return[{[`& .${v.grouped}`]:o.grouped},{[`& .${v.grouped}`]:o[`grouped${(0,l.A)(e.orientation)}`]},{[`& .${v.grouped}`]:o[`grouped${(0,l.A)(e.variant)}`]},{[`& .${v.grouped}`]:o[`grouped${(0,l.A)(e.variant)}${(0,l.A)(e.orientation)}`]},{[`& .${v.grouped}`]:o[`grouped${(0,l.A)(e.variant)}${(0,l.A)(e.color)}`]},{[`& .${v.firstButton}`]:o.firstButton},{[`& .${v.lastButton}`]:o.lastButton},{[`& .${v.middleButton}`]:o.middleButton},o.root,o[e.variant],!0===e.disableElevation&&o.disableElevation,e.fullWidth&&o.fullWidth,"vertical"===e.orientation&&o.vertical]}})((0,u.A)((({theme:t})=>({display:"inline-flex",borderRadius:(t.vars||t).shape.borderRadius,variants:[{props:{variant:"contained"},style:{boxShadow:(t.vars||t).shadows[2]}},{props:{disableElevation:!0},style:{boxShadow:"none"}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{orientation:"vertical"},style:{flexDirection:"column",[`& .${v.lastButton},& .${v.middleButton}`]:{borderTopRightRadius:0,borderTopLeftRadius:0},[`& .${v.firstButton},& .${v.middleButton}`]:{borderBottomRightRadius:0,borderBottomLeftRadius:0}}},{props:{orientation:"horizontal"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderTopRightRadius:0,borderBottomRightRadius:0},[`& .${v.lastButton},& .${v.middleButton}`]:{borderTopLeftRadius:0,borderBottomLeftRadius:0}}},{props:{variant:"text",orientation:"horizontal"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderRight:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${v.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}}}},{props:{variant:"text",orientation:"vertical"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderBottom:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${v.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}}}},...Object.entries(t.palette).filter((0,p.A)()).flatMap((([o])=>[{props:{variant:"text",color:o},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderColor:t.vars?`rgba(${t.vars.palette[o].mainChannel} / 0.5)`:(0,n.X4)(t.palette[o].main,.5)}}}])),{props:{variant:"outlined",orientation:"horizontal"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderRightColor:"transparent","&:hover":{borderRightColor:"currentColor"}},[`& .${v.lastButton},& .${v.middleButton}`]:{marginLeft:-1}}},{props:{variant:"outlined",orientation:"vertical"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderBottomColor:"transparent","&:hover":{borderBottomColor:"currentColor"}},[`& .${v.lastButton},& .${v.middleButton}`]:{marginTop:-1}}},{props:{variant:"contained",orientation:"horizontal"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderRight:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${v.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}}}},{props:{variant:"contained",orientation:"vertical"},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderBottom:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${v.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}}}},...Object.entries(t.palette).filter((0,p.A)(["dark"])).map((([o])=>({props:{variant:"contained",color:o},style:{[`& .${v.firstButton},& .${v.middleButton}`]:{borderColor:(t.vars||t).palette[o].dark}}})))],[`& .${v.grouped}`]:{minWidth:40,boxShadow:"none",props:{variant:"contained"},style:{"&:hover":{boxShadow:"none"}}}})))),x=r.forwardRef((function(t,o){const e=(0,b.b)({props:t,name:"MuiButtonGroup"}),{children:n,className:s,color:u="primary",component:p="div",disabled:c=!1,disableElevation:g=!1,disableFocusRipple:v=!1,disableRipple:x=!1,fullWidth:y=!1,orientation:R="horizontal",size:A="medium",variant:C="outlined",...w}=e,z={...e,color:u,component:p,disabled:c,disableElevation:g,disableFocusRipple:v,disableRipple:x,fullWidth:y,orientation:R,size:A,variant:C},T=(t=>{const{classes:o,color:e,disabled:r,disableElevation:i,fullWidth:n,orientation:d,variant:s}=t,u={root:["root",s,d,n&&"fullWidth",i&&"disableElevation",`color${(0,l.A)(e)}`],grouped:["grouped",`grouped${(0,l.A)(d)}`,`grouped${(0,l.A)(s)}`,`grouped${(0,l.A)(s)}${(0,l.A)(d)}`,`grouped${(0,l.A)(s)}${(0,l.A)(e)}`,r&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]};return(0,a.A)(u,B,o)})(z),S=r.useMemo((()=>({className:T.grouped,color:u,disabled:c,disableElevation:g,disableFocusRipple:v,disableRipple:x,fullWidth:y,size:A,variant:C})),[u,c,g,v,x,y,A,C,T.grouped]),W=(0,d.A)(n),E=W.length,k=t=>{const o=0===t,e=t===E-1;return o&&e?"":o?T.firstButton:e?T.lastButton:T.middleButton};return(0,h.jsx)(f,{as:p,role:"group",className:(0,i.A)(T.root,s),ref:o,ownerState:z,...w,children:(0,h.jsx)($.A.Provider,{value:S,children:W.map(((t,o)=>(0,h.jsx)(m.A.Provider,{value:k(o),children:t},o)))})})}))}}]);
+//# sourceMappingURL=7579.1b98701c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7579.1b98701c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7579.1b98701c.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js","../../../node_modules/@mui/material/ButtonGroup/ButtonGroup.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonGroup', slot);\n}\nconst buttonGroupClasses = generateUtilityClasses('MuiButtonGroup', ['root', 'contained', 'outlined', 'text', 'disableElevation', 'disabled', 'firstButton', 'fullWidth', 'horizontal', 'vertical', 'colorPrimary', 'colorSecondary', 'grouped', 'groupedHorizontal', 'groupedVertical', 'groupedText', 'groupedTextHorizontal', 'groupedTextVertical', 'groupedTextPrimary', 'groupedTextSecondary', 'groupedOutlined', 'groupedOutlinedHorizontal', 'groupedOutlinedVertical', 'groupedOutlinedPrimary', 'groupedOutlinedSecondary', 'groupedContained', 'groupedContainedHorizontal', 'groupedContainedVertical', 'groupedContainedPrimary', 'groupedContainedSecondary', 'lastButton', 'middleButton']);\nexport default buttonGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport getValidReactChildren from '@mui/utils/getValidReactChildren';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport buttonGroupClasses, { getButtonGroupUtilityClass } from \"./buttonGroupClasses.js\";\nimport ButtonGroupContext from \"./ButtonGroupContext.js\";\nimport ButtonGroupButtonContext from \"./ButtonGroupButtonContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [{\n    [`& .${buttonGroupClasses.grouped}`]: styles.grouped\n  }, {\n    [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.orientation)}`]\n  }, {\n    [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}`]\n  }, {\n    [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}${capitalize(ownerState.orientation)}`]\n  }, {\n    [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}${capitalize(ownerState.color)}`]\n  }, {\n    [`& .${buttonGroupClasses.firstButton}`]: styles.firstButton\n  }, {\n    [`& .${buttonGroupClasses.lastButton}`]: styles.lastButton\n  }, {\n    [`& .${buttonGroupClasses.middleButton}`]: styles.middleButton\n  }, styles.root, styles[ownerState.variant], ownerState.disableElevation === true && styles.disableElevation, ownerState.fullWidth && styles.fullWidth, ownerState.orientation === 'vertical' && styles.vertical];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    disableElevation,\n    fullWidth,\n    orientation,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, orientation, fullWidth && 'fullWidth', disableElevation && 'disableElevation', `color${capitalize(color)}`],\n    grouped: ['grouped', `grouped${capitalize(orientation)}`, `grouped${capitalize(variant)}`, `grouped${capitalize(variant)}${capitalize(orientation)}`, `grouped${capitalize(variant)}${capitalize(color)}`, disabled && 'disabled'],\n    firstButton: ['firstButton'],\n    lastButton: ['lastButton'],\n    middleButton: ['middleButton']\n  };\n  return composeClasses(slots, getButtonGroupUtilityClass, classes);\n};\nconst ButtonGroupRoot = styled('div', {\n  name: 'MuiButtonGroup',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-flex',\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  variants: [{\n    props: {\n      variant: 'contained'\n    },\n    style: {\n      boxShadow: (theme.vars || theme).shadows[2]\n    }\n  }, {\n    props: {\n      disableElevation: true\n    },\n    style: {\n      boxShadow: 'none'\n    }\n  }, {\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      orientation: 'vertical'\n    },\n    style: {\n      flexDirection: 'column',\n      [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderTopRightRadius: 0,\n        borderTopLeftRadius: 0\n      },\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderBottomRightRadius: 0,\n        borderBottomLeftRadius: 0\n      }\n    }\n  }, {\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderTopRightRadius: 0,\n        borderBottomRightRadius: 0\n      },\n      [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0\n      }\n    }\n  }, {\n    props: {\n      variant: 'text',\n      orientation: 'horizontal'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderRight: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n        [`&.${buttonGroupClasses.disabled}`]: {\n          borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n        }\n      }\n    }\n  }, {\n    props: {\n      variant: 'text',\n      orientation: 'vertical'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderBottom: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n        [`&.${buttonGroupClasses.disabled}`]: {\n          borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n        }\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).flatMap(([color]) => [{\n    props: {\n      variant: 'text',\n      color\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.5)` : alpha(theme.palette[color].main, 0.5)\n      }\n    }\n  }]), {\n    props: {\n      variant: 'outlined',\n      orientation: 'horizontal'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderRightColor: 'transparent',\n        '&:hover': {\n          borderRightColor: 'currentColor'\n        }\n      },\n      [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {\n        marginLeft: -1\n      }\n    }\n  }, {\n    props: {\n      variant: 'outlined',\n      orientation: 'vertical'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderBottomColor: 'transparent',\n        '&:hover': {\n          borderBottomColor: 'currentColor'\n        }\n      },\n      [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {\n        marginTop: -1\n      }\n    }\n  }, {\n    props: {\n      variant: 'contained',\n      orientation: 'horizontal'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderRight: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n        [`&.${buttonGroupClasses.disabled}`]: {\n          borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n        }\n      }\n    }\n  }, {\n    props: {\n      variant: 'contained',\n      orientation: 'vertical'\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderBottom: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n        [`&.${buttonGroupClasses.disabled}`]: {\n          borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n        }\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark'])).map(([color]) => ({\n    props: {\n      variant: 'contained',\n      color\n    },\n    style: {\n      [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {\n        borderColor: (theme.vars || theme).palette[color].dark\n      }\n    }\n  }))],\n  [`& .${buttonGroupClasses.grouped}`]: {\n    minWidth: 40,\n    boxShadow: 'none',\n    props: {\n      variant: 'contained'\n    },\n    style: {\n      '&:hover': {\n        boxShadow: 'none'\n      }\n    }\n  }\n})));\nconst ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiButtonGroup'\n  });\n  const {\n    children,\n    className,\n    color = 'primary',\n    component = 'div',\n    disabled = false,\n    disableElevation = false,\n    disableFocusRipple = false,\n    disableRipple = false,\n    fullWidth = false,\n    orientation = 'horizontal',\n    size = 'medium',\n    variant = 'outlined',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    disableRipple,\n    fullWidth,\n    orientation,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const context = React.useMemo(() => ({\n    className: classes.grouped,\n    color,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    disableRipple,\n    fullWidth,\n    size,\n    variant\n  }), [color, disabled, disableElevation, disableFocusRipple, disableRipple, fullWidth, size, variant, classes.grouped]);\n  const validChildren = getValidReactChildren(children);\n  const childrenCount = validChildren.length;\n  const getButtonPositionClassName = index => {\n    const isFirstButton = index === 0;\n    const isLastButton = index === childrenCount - 1;\n    if (isFirstButton && isLastButton) {\n      return '';\n    }\n    if (isFirstButton) {\n      return classes.firstButton;\n    }\n    if (isLastButton) {\n      return classes.lastButton;\n    }\n    return classes.middleButton;\n  };\n  return /*#__PURE__*/_jsx(ButtonGroupRoot, {\n    as: component,\n    role: \"group\",\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: /*#__PURE__*/_jsx(ButtonGroupContext.Provider, {\n      value: context,\n      children: validChildren.map((child, index) => {\n        return /*#__PURE__*/_jsx(ButtonGroupButtonContext.Provider, {\n          value: getButtonPositionClassName(index),\n          children: child\n        }, index);\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: PropTypes.bool,\n  /**\n   * If `true`, the button keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the button ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the buttons will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default ButtonGroup;"],"names":["getButtonGroupUtilityClass","slot","generateUtilityClass","generateUtilityClasses","ButtonGroupRoot","styled","name","overridesResolver","props","styles","ownerState","grouped","capitalize","orientation","variant","color","firstButton","lastButton","middleButton","root","disableElevation","fullWidth","vertical","memoTheme","theme","display","borderRadius","vars","shape","variants","style","boxShadow","shadows","width","flexDirection","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderRight","palette","common","onBackgroundChannel","mode","disabled","action","borderBottom","Object","entries","filter","createSimplePaletteValueFilter","flatMap","borderColor","mainChannel","main","borderRightColor","marginLeft","borderBottomColor","marginTop","grey","map","dark","minWidth","inProps","ref","children","className","component","disableFocusRipple","disableRipple","size","other","classes","slots","composeClasses","useUtilityClasses","context","validChildren","getValidReactChildren","childrenCount","length","getButtonPositionClassName","index","isFirstButton","isLastButton","as","role","clsx","ButtonGroupContext","Provider","value","child","ButtonGroupButtonContext"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7584.a162e3d6.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7584],{47584:(s,a,e)=>{e.r(a),e.d(a,{default:()=>b.A,getTypographyUtilityClass:()=>l.y,typographyClasses:()=>l.A});var b=e(36715),l=e(90175)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/759.9c32be0d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[759,9870],{59870:(e,t,n)=>{n.r(t),n.d(t,{bufferToString:()=>r,parseCsvBuffer:()=>u,parseTsvBuffer:()=>m});var a=n(99546);function r(e){return new TextDecoder("utf8",{fatal:!0}).decode(e)}async function s(e,t={}){return(await n.e(2847).then(n.t.bind(n,82847,23)).then((e=>e.default)))({noheader:!0,output:"csv",...t}).fromString(r(e))}function o(e,t,n){const r=e.rows[0].cells[t].text||"";let s,o="Text";try{s=(0,a.parseLocString)(r,n)}catch(e){}return s?.refName&&"number"==typeof s.start?o="LocString":/^\d+(\.\d+)?$/.test(r)&&(o="Number"),o}function c(e,t={}){const{hasColumnNameLine:n=!1,columnNameLineNumber:r=1,isValidRefName:s=()=>!1,selectedAssemblyName:c}=t;let u=0;const m={isLoaded:!0,rows:e.map(((e,t)=>{const a=t+(n?0:1);return e.length>u&&(u=e.length),{id:String(a),cells:e.map(((e,t)=>({columnNumber:t,text:e})))}}))},i={};if(n&&void 0!==r){const[e]=m.rows.splice(r-1,1);e&&e.cells.forEach(((e,t)=>{i[t]=e.text||""}))}const l=[],f=[];for(let e=0;e<u;e+=1){f.push(e);const t=o(m,e,s);if("LocString"===t)for(const t of m.rows){const n=t.cells[e];n.extendedData=(0,a.parseLocString)(n.text,s)}l[e]={name:i[e],dataType:{type:t}}}return{rowSet:m,columnDisplayOrder:f,hasColumnNames:!!n,columns:l,assemblyName:c}}async function u(e,t){return c(await s(e),t)}async function m(e,t){return c(await s(e,{delimiter:"\t"}),t)}},759:(e,t,n)=>{n.r(t),n.d(t,{parseSTARFusionBuffer:()=>o});var a=n(59870);function r(e){const t=e.split(":");return{refName:t[0],pos:Number.parseInt(t[1],10),strand:"-"===t[2]?-1:1}}const s={SpanningFragCount:!0,FFPM:!0,LeftBreakEntropy:!0,RightBreakEntropy:!0,JunctionReadCount:!0};async function o(e,t){const n=await(0,a.parseTsvBuffer)(e,{hasColumnNameLine:!0,columnNameLineNumber:1,selectedAssemblyName:t.selectedAssemblyName,isValidRefName:()=>!1});return n.columns[0].name=n.columns[0].name.replace("#",""),n.columns.forEach((e=>{s[e.name]&&(e.dataType={type:"Number"})})),n.rowSet.rows.forEach(((e,t)=>{const a={};e.cells.forEach((({text:e},t)=>{const o=n.columns[t];if("LeftBreakpoint"===o.name&&e){const{refName:t,pos:n,strand:s}=r(e);a.refName=t,a.start=n,a.end=n,a.strand=s}else if("RightBreakpoint"===o.name&&e){const{refName:t,pos:n,strand:s}=r(e);a.mate={refName:t,start:n,end:n,strand:s}}else e&&s[o.name]?a[o.name]=Number.parseFloat(e):a[o.name]=e})),a.uniqueId=`sf-${t+1}`,e.extendedData={feature:a}})),n}}}]);
+//# sourceMappingURL=759.9c32be0d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/759.9c32be0d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/759.9c32be0d.chunk.js","mappings":"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","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/ImportUtils.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/STARFusionImport.ts"],"sourcesContent":["import { ParsedLocString, parseLocString } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nexport function bufferToString(buffer: Buffer) {\n  return new TextDecoder('utf8', { fatal: true }).decode(buffer)\n}\n\nasync function parseWith(buffer: Buffer, options = {}) {\n  const csv = await import('csvtojson').then(module => module.default)\n  return csv({ noheader: true, output: 'csv', ...options }).fromString(\n    bufferToString(buffer),\n  )\n}\n\nexport interface Row {\n  id: string\n\n  extendedData?: any\n  cells: {\n    text: string\n\n    extendedData?: any\n  }[]\n}\n\nexport interface RowSet {\n  isLoaded: boolean\n  rows: Row[]\n}\n\nexport interface ParseOptions {\n  hasColumnNameLine?: boolean\n  columnNameLineNumber?: number\n  selectedAssemblyName?: string\n  isValidRefName?: (refName: string, assemblyName?: string) => boolean\n}\n\nexport interface Column {\n  name: string\n  dataType: { type: string }\n  isDerived?: boolean\n  derivationFunctionText?: string\n}\n\nfunction guessColumnType(\n  rowSet: RowSet,\n  columnNumber: number,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const text = rowSet.rows[0]!.cells[columnNumber]!.text || ''\n\n  let guessedType = 'Text'\n\n  let parsedLoc: ParsedLocString | undefined\n  try {\n    parsedLoc = parseLocString(text, isValidRefName)\n  } catch (error) {\n    //\n  }\n  if (parsedLoc?.refName && typeof parsedLoc.start === 'number') {\n    guessedType = 'LocString'\n  } else if (/^\\d+(\\.\\d+)?$/.test(text)) {\n    guessedType = 'Number'\n  }\n\n  // MAYBE TODO: iterate over the rest of the rows to confirm\n  // the type for all the rows\n\n  return guessedType\n}\n\nfunction dataToSpreadsheetSnapshot(\n  rows: string[][],\n  options: ParseOptions = {},\n) {\n  const {\n    hasColumnNameLine = false,\n    columnNameLineNumber = 1,\n    isValidRefName = () => false,\n    selectedAssemblyName,\n  } = options\n  // rows is an array of row objects and columnNames\n  // is an array of column names (in import order)\n  let maxCols = 0\n  const rowSet: RowSet = {\n    isLoaded: true,\n    rows: rows.map((row, rowNumber) => {\n      const id = rowNumber + (hasColumnNameLine ? 0 : 1)\n      if (row.length > maxCols) {\n        maxCols = row.length\n      }\n      return {\n        id: String(id),\n        cells: row.map((text, columnNumber) => {\n          return { columnNumber, text }\n        }),\n      }\n    }),\n  }\n\n  // process the column names row if present\n  const columnNames: Record<string, string> = {}\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (hasColumnNameLine && columnNameLineNumber !== undefined) {\n    const [colNamesRow] = rowSet.rows.splice(columnNameLineNumber - 1, 1)\n\n    if (colNamesRow) {\n      colNamesRow.cells.forEach((cell, columnNumber) => {\n        columnNames[columnNumber] = cell.text || ''\n      })\n    }\n  }\n\n  // make our column definitions\n  const columns: Column[] = []\n  const columnDisplayOrder = []\n  for (let columnNumber = 0; columnNumber < maxCols; columnNumber += 1) {\n    columnDisplayOrder.push(columnNumber)\n    const guessedType = guessColumnType(rowSet, columnNumber, isValidRefName)\n\n    // store extendeddata for LocString column\n    if (guessedType === 'LocString') {\n      for (const row of rowSet.rows) {\n        const cell = row.cells[columnNumber]!\n        cell.extendedData = parseLocString(cell.text, isValidRefName)\n      }\n    }\n\n    columns[columnNumber] = {\n      name: columnNames[columnNumber]!,\n      dataType: {\n        type: guessedType,\n      },\n    }\n  }\n\n  return {\n    rowSet,\n    columnDisplayOrder,\n    hasColumnNames: !!hasColumnNameLine,\n    columns,\n    assemblyName: selectedAssemblyName,\n  }\n}\n\nexport async function parseCsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer)\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n\nexport async function parseTsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer, { delimiter: '\\t' })\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n","import { parseTsvBuffer, ParseOptions } from './ImportUtils'\nimport type { Buffer } from 'buffer'\n\nfunction parseSTARFusionBreakpointString(str: string) {\n  const fields = str.split(':')\n  const refName = fields[0]!\n  const pos = Number.parseInt(fields[1]!, 10)\n  const strand = fields[2] === '-' ? -1 : 1\n  return { refName, pos, strand }\n}\n\nconst numericColumns: Record<string, boolean> = {\n  SpanningFragCount: true,\n  FFPM: true,\n  LeftBreakEntropy: true,\n  RightBreakEntropy: true,\n  JunctionReadCount: true,\n}\n\nexport async function parseSTARFusionBuffer(\n  buffer: Buffer,\n  options: ParseOptions,\n) {\n  const data = await parseTsvBuffer(buffer, {\n    hasColumnNameLine: true,\n    columnNameLineNumber: 1,\n    selectedAssemblyName: options.selectedAssemblyName,\n    isValidRefName: () => false,\n  })\n\n  // remove the # in #FusionName\n  data.columns[0]!.name = data.columns[0]!.name.replace('#', '')\n  // set some columns to be numeric\n  data.columns.forEach(col => {\n    if (numericColumns[col.name]) {\n      col.dataType = { type: 'Number' }\n    }\n  })\n\n  // decorate each row with a feature object in its extendedData\n  data.rowSet.rows.forEach((row, rowNumber) => {\n    const featureData: Record<string, any> = {}\n    row.cells.forEach(({ text }, columnNumber) => {\n      const column = data.columns[columnNumber]!\n      if (column.name === 'LeftBreakpoint' && text) {\n        const { refName, pos, strand } = parseSTARFusionBreakpointString(text)\n        featureData.refName = refName\n        featureData.start = pos\n        featureData.end = pos\n        featureData.strand = strand\n      } else if (column.name === 'RightBreakpoint' && text) {\n        const { refName, pos, strand } = parseSTARFusionBreakpointString(text)\n        featureData.mate = {\n          refName,\n          start: pos,\n          end: pos,\n          strand,\n        }\n      } else if (text && numericColumns[column.name]) {\n        // some other column, numeric\n        featureData[column.name] = Number.parseFloat(text)\n      } else {\n        // some other column, text\n        featureData[column.name] = text\n      }\n    })\n    featureData.uniqueId = `sf-${rowNumber + 1}`\n    row.extendedData = {\n      feature: featureData,\n    }\n  })\n\n  return data\n}\n"],"names":["bufferToString","buffer","TextDecoder","fatal","decode","async","parseWith","options","then","module","default","noheader","output","fromString","guessColumnType","rowSet","columnNumber","isValidRefName","text","rows","cells","parsedLoc","guessedType","parseLocString","error","refName","start","test","dataToSpreadsheetSnapshot","hasColumnNameLine","columnNameLineNumber","selectedAssemblyName","maxCols","isLoaded","map","row","rowNumber","id","length","String","columnNames","undefined","colNamesRow","splice","forEach","cell","columns","columnDisplayOrder","push","extendedData","name","dataType","type","hasColumnNames","assemblyName","parseCsvBuffer","parseTsvBuffer","delimiter","parseSTARFusionBreakpointString","str","fields","split","pos","Number","parseInt","strand","numericColumns","SpanningFragCount","FFPM","LeftBreakEntropy","RightBreakEntropy","JunctionReadCount","parseSTARFusionBuffer","data","replace","col","featureData","column","end","mate","parseFloat","uniqueId","feature"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7627.31dfd44e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7627],{57627:(e,t,n)=>{n.d(t,{renderSvg:()=>o});var a=n(7552),r=n(99546),s=n(42489),l=n(90461);async function o(e,t,n){await(0,s.when)((()=>!!e.stats&&!!e.regionCannotBeRenderedText));const{needsScalebar:o,stats:i}=e,{offsetPx:c}=(0,r.getContainingView)(e);return a.createElement(a.Fragment,null,a.createElement("g",{id:"snpcov"},await n(t)),o&&i?a.createElement("g",{transform:`translate(${Math.max(-c,0)})`},a.createElement(l.A,{model:e,orientation:"left"})):null)}}}]);
+//# sourceMappingURL=7627.31dfd44e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7627.31dfd44e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7627.31dfd44e.chunk.js","mappings":"iMAUOA,eAAeC,EACpBC,EACAC,EACAC,SAEMC,EAAAA,EAAAA,OAAK,MAAQH,EAAKI,SAAWJ,EAAKK,6BACxC,MAAM,cAAEC,EAAa,MAAEF,GAAUJ,GAC3B,SAAEO,IAAaC,EAAAA,EAAAA,mBAAkBR,GACvC,OACES,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,KAAGC,GAAG,gBAAgBR,EAAeD,IACpCK,GAAiBF,EAChBK,EAAAA,cAAA,KAAGE,UAAW,aAAaC,KAAKC,KAAKN,EAAU,OAC7CE,EAAAA,cAACK,EAAAA,EAAS,CAACC,MAAOf,EAAMgB,YAAY,UAEpC,KAGV,C","sources":["../../../plugins/wiggle/src/LinearWiggleDisplay/models/renderSvg.tsx"],"sourcesContent":["import React from 'react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { when } from 'mobx'\nimport YScaleBar from '../../shared/YScaleBar'\nimport {\n  ExportSvgDisplayOptions,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\nimport { WiggleDisplayModel } from './model'\n\nexport async function renderSvg(\n  self: WiggleDisplayModel,\n  opts: ExportSvgDisplayOptions,\n  superRenderSvg: (opts: ExportSvgDisplayOptions) => Promise<React.ReactNode>,\n) {\n  await when(() => !!self.stats && !!self.regionCannotBeRenderedText)\n  const { needsScalebar, stats } = self\n  const { offsetPx } = getContainingView(self) as LinearGenomeViewModel\n  return (\n    <>\n      <g id=\"snpcov\">{await superRenderSvg(opts)}</g>\n      {needsScalebar && stats ? (\n        <g transform={`translate(${Math.max(-offsetPx, 0)})`}>\n          <YScaleBar model={self} orientation=\"left\" />\n        </g>\n      ) : null}\n    </>\n  )\n}\n"],"names":["async","renderSvg","self","opts","superRenderSvg","when","stats","regionCannotBeRenderedText","needsScalebar","offsetPx","getContainingView","React","id","transform","Math","max","YScaleBar","model","orientation"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/765.20669bca.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[765],{40765:(e,o,n)=>{n.r(o),n.d(o,{default:()=>i});var t=n(7552),l=n(29499),r=n(99123),a=n(58507),s=n(5401),c=n(49823);const i=({sessionToDelete:e,onClose:o,rootModel:n})=>{const[i,u]=(0,t.useState)();return t.createElement(c.Dialog,{open:!0,onClose:()=>{o(!1)},title:`Delete session "${e}"?`},t.createElement(l.A,null,i?t.createElement(c.ErrorMessage,{error:i}):null,t.createElement(r.A,null,"This action cannot be undone")),t.createElement(a.A,null,t.createElement(s.A,{onClick:()=>{o(!1)},color:"primary"},"Cancel"),t.createElement(s.A,{onClick:()=>{(async()=>{try{e&&n.removeSavedSession({name:e}),o(!0)}catch(e){console.error(e),u(e)}})()},color:"primary",variant:"contained",autoFocus:!0},"Delete")))}}}]);
+//# sourceMappingURL=765.20669bca.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/765.20669bca.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/765.20669bca.chunk.js","mappings":"0NAUA,MAyDA,EAzD4BA,EAC1BC,kBACAC,UACAC,gBAMA,MAAOC,EAAOC,IAAYC,EAAAA,EAAAA,YAC1B,OACEC,EAAAA,cAACC,EAAAA,OAAM,CACLC,MAAI,EACJP,QAASA,KACPA,GAAQ,EAAM,EAEhBQ,MAAO,mBAAmBT,OAE1BM,EAAAA,cAACI,EAAAA,EAAa,KACXP,EAAQG,EAAAA,cAACK,EAAAA,aAAY,CAACR,MAAOA,IAAY,KAC1CG,EAAAA,cAACM,EAAAA,EAAiB,KAAC,iCAErBN,EAAAA,cAACO,EAAAA,EAAa,KACZP,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAASA,KACPd,GAAQ,EAAM,EAEhBe,MAAM,WACP,UAGDV,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAASA,KAEN,WACC,IACMf,GACFE,EAAUe,mBAAmB,CAAEC,KAAMlB,IAEvCC,GAAQ,EACV,CAAE,MAAOkB,GACPC,QAAQjB,MAAMgB,GACdf,EAASe,EACX,CACD,EAVA,EAUG,EAENH,MAAM,UACNK,QAAQ,YACRC,WAAS,GACV,WAII,C","sources":["components/DeleteSessionDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport type { WebRootModel } from '../rootModel/rootModel'\n\nconst DeleteSessionDialog = ({\n  sessionToDelete,\n  onClose,\n  rootModel,\n}: {\n  sessionToDelete?: string\n  onClose: (_arg0: boolean) => void\n  rootModel: WebRootModel\n}) => {\n  const [error, setError] = useState<unknown>()\n  return (\n    <Dialog\n      open\n      onClose={() => {\n        onClose(false)\n      }}\n      title={`Delete session \"${sessionToDelete}\"?`}\n    >\n      <DialogContent>\n        {error ? <ErrorMessage error={error} /> : null}\n        <DialogContentText>This action cannot be undone</DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            onClose(false)\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            ;(async () => {\n              try {\n                if (sessionToDelete) {\n                  rootModel.removeSavedSession({ name: sessionToDelete })\n                }\n                onClose(true)\n              } catch (e) {\n                console.error(e)\n                setError(e)\n              }\n            })()\n          }}\n          color=\"primary\"\n          variant=\"contained\"\n          autoFocus\n        >\n          Delete\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n\nexport default DeleteSessionDialog\n"],"names":["DeleteSessionDialog","sessionToDelete","onClose","rootModel","error","setError","useState","React","Dialog","open","title","DialogContent","ErrorMessage","DialogContentText","DialogActions","Button","onClick","color","removeSavedSession","name","e","console","variant","autoFocus"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7663.e79b053a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7663],{47663:(e,t,r)=>{r.r(t),r.d(t,{default:()=>R});var s=r(7552),a=r(36422),n=r(68446),o=r(49823),l=r(1343),c=r(29499),i=r(99123),h=r(61723),u=r(36715),d=r(58507),m=r(5401),w=r(31409),p=r.n(w),E=r(430),S=r(22168),b=r(90542),C=r(74893),g=r(69500);const f=(0,C.A)((0,g.jsx)("path",{d:"M21 7h-2v2h-2V7h-2V5h2V3h2v2h2zm-2 14-7-3-7 3V5c0-1.1.9-2 2-2h7c-.63.84-1 1.87-1 3 0 2.76 2.24 5 5 5 .34 0 .68-.03 1-.1z"}),"BookmarkAdd");var k=r(49409),y=r(17765);const A=(0,s.lazy)((()=>r.e(4741).then(r.bind(r,84741))));function L({url:e}){return s.createElement(l.A,{label:"URL",value:e,InputProps:{readOnly:!0},variant:"filled",fullWidth:!0,onClick:e=>{e.target.select()}})}const R=(0,n.observer)((function({handleClose:e,session:t}){const[r,n]=(0,s.useState)(""),[l,w]=(0,s.useState)(""),[C,g]=(0,s.useState)(""),[R,v]=(0,s.useState)(""),[P,U]=(0,s.useState)(!0),[I,j]=(0,s.useState)(),[B,D]=(0,s.useState)(!1),[,J]=(0,E.useQueryParam)("password",E.StringParam),[,M]=(0,E.useQueryParam)("session",E.StringParam),V=t.shareURL,$=localStorage.getItem("jbrowse-shareURL")||"short",_=(0,a.getSnapshot)(t);(0,s.useEffect)((()=>{(async()=>{if(!I)try{if("short"===$){U(!0);const e=new URL(window.location.href),t=await(0,y.J)(_,V,e.href),r=new URLSearchParams(e.search);r.set("session",`share-${t.json.sessionId}`),r.set("password",t.password),e.search=r.toString(),g(e.href),n(`share-${t.json.sessionId}`),w(t.password)}else{const e=await(0,k.eW)(JSON.stringify((0,a.getSnapshot)(t))),r=new URL(window.location.href),s=new URLSearchParams(r.search);s.set("session",`encoded-${e}`),n(`encoded-${e}`),r.search=s.toString(),v(r.toString())}}catch(e){j(e)}finally{U(!1)}})()}),[$,I,t,V,_]);const x="short"===$&&P||!!I;return s.createElement(s.Fragment,null,s.createElement(o.Dialog,{maxWidth:"xl",open:!0,onClose:e,title:"JBrowse Shareable Link"},s.createElement(c.A,null,s.createElement(i.A,null,"Copy the URL below to share your current JBrowse session.",s.createElement(h.A,{onClick:()=>{D(!0)}},s.createElement(S.A,null))),"short"===$?I?s.createElement(o.ErrorMessage,{error:I,onReset:()=>{j(void 0)}}):P?s.createElement(u.A,null,"Generating short URL..."):s.createElement(L,{url:C}):s.createElement(L,{url:R})),s.createElement(d.A,null,s.createElement(m.A,{startIcon:s.createElement(f,null),disabled:x,onClick:e=>{e.preventDefault(),J(l,"replaceIn"),M(r,"replaceIn"),alert("Now press Ctrl+D (PC) or Cmd+D (Mac)")}},"Create browser Bookmark"),s.createElement(m.A,{onClick:()=>{p()(C||R),t.notify("Copied to clipboard","success")},startIcon:s.createElement(b.PM,null),disabled:x},"Copy to Clipboard"),s.createElement(m.A,{onClick:e,autoFocus:!0},"Close"))),s.createElement(A,{open:B,onClose:()=>{D(!1)},currentSetting:$}))}))}}]);
+//# sourceMappingURL=7663.e79b053a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7663.e79b053a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7663.e79b053a.chunk.js","mappings":"0VAIA,SAAe,EAAAA,EAAA,IAA4B,SAAK,OAAQ,CACtDC,EAAG,6HACD,e,0BCoBJ,MAAMC,GAAiBC,EAAAA,EAAAA,OAAK,IAAM,kCAIlC,SAASC,GAAU,IAAEC,IACnB,OACEC,EAAAA,cAACC,EAAAA,EAAS,CACRC,MAAM,MACNC,MAAOJ,EACPK,WAAY,CAAEC,UAAU,GACxBC,QAAQ,SACRC,WAAS,EACTC,QAASC,IACQA,EAAMC,OACdC,QAAQ,GAIvB,CAEA,MA2IA,GA3IoBC,EAAAA,EAAAA,WAAS,UAAU,YACrCC,EAAW,QACXC,IAKA,MAAOC,EAAcC,IAAmBC,EAAAA,EAAAA,UAAS,KAC1CC,EAAeC,IAAoBF,EAAAA,EAAAA,UAAS,KAC5CG,EAAUC,IAAeJ,EAAAA,EAAAA,UAAS,KAClCK,EAASC,IAAcN,EAAAA,EAAAA,UAAS,KAChCO,EAASC,IAAcR,EAAAA,EAAAA,WAAS,IAChCS,EAAOC,IAAYV,EAAAA,EAAAA,aACnBW,EAAoBC,IAAyBZ,EAAAA,EAAAA,WAAS,IACtD,CAAEa,IAAeC,EAAAA,EAAAA,eAAc,WAAYC,EAAAA,cAC3C,CAAEC,IAAcF,EAAAA,EAAAA,eAAc,UAAWC,EAAAA,aAE1CjC,EAAMe,EAAQoB,SACdC,EACJC,aAAaC,QArCkB,qBAqCqB,QAChDC,GAAOC,EAAAA,EAAAA,aAAYzB,IAEzB0B,EAAAA,EAAAA,YAAU,KAEP,WAEC,IAAId,EAGJ,IACE,GAAuB,UAAnBS,EAA4B,CAC9BV,GAAW,GACX,MAAMgB,EAAc,IAAIC,IAAIC,OAAOC,SAASC,MACtCC,QAAeC,EAAAA,EAAAA,GAAqBT,EAAMvC,EAAK0C,EAAYI,MAC3DG,EAAS,IAAIC,gBAAgBR,EAAYS,QAC/CF,EAAOG,IAAI,UAAW,SAASL,EAAOM,KAAKC,aAC3CL,EAAOG,IAAI,WAAYL,EAAOQ,UAC9Bb,EAAYS,OAASF,EAAOO,WAC5BlC,EAAYoB,EAAYI,MAExB7B,EAAgB,SAAS8B,EAAOM,KAAKC,aACrClC,EAAiB2B,EAAOQ,SAC1B,KAAO,CACL,MAAME,QAAaC,EAAAA,EAAAA,IAAaC,KAAKC,WAAUpB,EAAAA,EAAAA,aAAYzB,KACrDQ,EAAU,IAAIoB,IAAIC,OAAOC,SAASC,MAClCe,EAAa,IAAIX,gBAAgB3B,EAAQ4B,QAC/CU,EAAWT,IAAI,UAAW,WAAWK,KACrCxC,EAAgB,WAAWwC,KAC3BlC,EAAQ4B,OAASU,EAAWL,WAC5BhC,EAAWD,EAAQiC,WACrB,CACF,CAAE,MAAOM,GACPlC,EAASkC,EACX,CAAE,QACApC,GAAW,EACb,CACD,EAhCA,EAgCG,GACH,CAACU,EAAgBT,EAAOZ,EAASf,EAAKuC,IAEzC,MAAMwB,EAA+B,UAAnB3B,GAA8BX,KAAcE,EAC9D,OACE1B,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC+D,EAAAA,OAAM,CACLC,SAAS,KACTC,MAAI,EACJC,QAASrD,EACTsD,MAAM,0BAENnE,EAAAA,cAACoE,EAAAA,EAAa,KACZpE,EAAAA,cAACqE,EAAAA,EAAiB,KAAC,4DAEjBrE,EAAAA,cAACsE,EAAAA,EAAU,CACT9D,QAASA,KACPqB,GAAsB,EAAK,GAG7B7B,EAAAA,cAACuE,EAAAA,EAAY,QAIG,UAAnBpC,EACCT,EACE1B,EAAAA,cAACwE,EAAAA,aAAY,CACX9C,MAAOA,EACP+C,QAASA,KACP9C,OAAS+C,EAAU,IAGrBlD,EACFxB,EAAAA,cAAC2E,EAAAA,EAAU,KAAC,2BAEZ3E,EAAAA,cAACF,EAAS,CAACC,IAAKqB,IAGlBpB,EAAAA,cAACF,EAAS,CAACC,IAAKuB,KAGpBtB,EAAAA,cAAC4E,EAAAA,EAAa,KACZ5E,EAAAA,cAAC6E,EAAAA,EAAM,CACLC,UAAW9E,EAAAA,cAAC+E,EAAe,MAC3BjB,SAAUA,EACVtD,QAASC,IACPA,EAAMuE,iBACNlD,EAAYZ,EAAe,aAC3Be,EAAWlB,EAAc,aACzBkE,MAAM,uCAAuC,GAEhD,2BAIDjF,EAAAA,cAAC6E,EAAAA,EAAM,CACLrE,QAASA,KACP0E,IAAK9D,GAAYE,GACjBR,EAAQqE,OAAO,sBAAuB,UAAU,EAElDL,UAAW9E,EAAAA,cAACoF,EAAAA,GAAe,MAC3BtB,SAAUA,GACX,qBAID9D,EAAAA,cAAC6E,EAAAA,EAAM,CAACrE,QAASK,EAAawE,WAAS,GAAC,WAM5CrF,EAAAA,cAACJ,EAAc,CACbqE,KAAMrC,EACNsC,QAASA,KACPrC,GAAsB,EAAM,EAE9BM,eAAgBA,IAIxB,G","sources":["../../../node_modules/@mui/icons-material/esm/BookmarkAdd.js","components/ShareDialog.tsx"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M21 7h-2v2h-2V7h-2V5h2V3h2v2h2zm-2 14-7-3-7 3V5c0-1.1.9-2 2-2h7c-.63.84-1 1.87-1 3 0 2.76 2.24 5 5 5 .34 0 .68-.03 1-.1z\"\n}), 'BookmarkAdd');","import React, { useState, useEffect, lazy } from 'react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n  IconButton,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport copy from 'copy-to-clipboard'\nimport { StringParam, useQueryParam } from 'use-query-params'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\n// icons\nimport SettingsIcon from '@mui/icons-material/Settings'\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport BookmarkAddIcon from '@mui/icons-material/BookmarkAdd'\n\n// locals\nimport { toUrlSafeB64 } from '../util'\nimport { shareSessionToDynamo } from '../sessionSharing'\n\nconst SettingsDialog = lazy(() => import('./ShareSettingsDialog'))\n\nconst SHARE_URL_LOCALSTORAGE_KEY = 'jbrowse-shareURL'\n\nfunction LinkField({ url }: { url: string }) {\n  return (\n    <TextField\n      label=\"URL\"\n      value={url}\n      InputProps={{ readOnly: true }}\n      variant=\"filled\"\n      fullWidth\n      onClick={event => {\n        const target = event.target as HTMLTextAreaElement\n        target.select()\n      }}\n    />\n  )\n}\n\nconst ShareDialog = observer(function ({\n  handleClose,\n  session,\n}: {\n  handleClose: () => void\n  session: AbstractSessionModel & { shareURL: string }\n}) {\n  const [sessionParam, setSessionParam] = useState('')\n  const [passwordParam, setPasswordParam] = useState('')\n  const [shortUrl, setShortUrl] = useState('')\n  const [longUrl, setLongUrl] = useState('')\n  const [loading, setLoading] = useState(true)\n  const [error, setError] = useState<unknown>()\n  const [settingsDialogOpen, setSettingsDialogOpen] = useState(false)\n  const [, setPassword] = useQueryParam('password', StringParam)\n  const [, setSession] = useQueryParam('session', StringParam)\n\n  const url = session.shareURL\n  const currentSetting =\n    localStorage.getItem(SHARE_URL_LOCALSTORAGE_KEY) || 'short'\n  const snap = getSnapshot(session)\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      // checking !error allows retry when error state is cleared\n      if (error) {\n        return\n      }\n      try {\n        if (currentSetting === 'short') {\n          setLoading(true)\n          const locationUrl = new URL(window.location.href)\n          const result = await shareSessionToDynamo(snap, url, locationUrl.href)\n          const params = new URLSearchParams(locationUrl.search)\n          params.set('session', `share-${result.json.sessionId}`)\n          params.set('password', result.password)\n          locationUrl.search = params.toString()\n          setShortUrl(locationUrl.href)\n\n          setSessionParam(`share-${result.json.sessionId}`)\n          setPasswordParam(result.password)\n        } else {\n          const sess = await toUrlSafeB64(JSON.stringify(getSnapshot(session)))\n          const longUrl = new URL(window.location.href)\n          const longParams = new URLSearchParams(longUrl.search)\n          longParams.set('session', `encoded-${sess}`)\n          setSessionParam(`encoded-${sess}`)\n          longUrl.search = longParams.toString()\n          setLongUrl(longUrl.toString())\n        }\n      } catch (e) {\n        setError(e)\n      } finally {\n        setLoading(false)\n      }\n    })()\n  }, [currentSetting, error, session, url, snap])\n\n  const disabled = (currentSetting === 'short' && loading) || !!error\n  return (\n    <>\n      <Dialog\n        maxWidth=\"xl\"\n        open\n        onClose={handleClose}\n        title=\"JBrowse Shareable Link\"\n      >\n        <DialogContent>\n          <DialogContentText>\n            Copy the URL below to share your current JBrowse session.\n            <IconButton\n              onClick={() => {\n                setSettingsDialogOpen(true)\n              }}\n            >\n              <SettingsIcon />\n            </IconButton>\n          </DialogContentText>\n\n          {currentSetting === 'short' ? (\n            error ? (\n              <ErrorMessage\n                error={error}\n                onReset={() => {\n                  setError(undefined)\n                }}\n              />\n            ) : loading ? (\n              <Typography>Generating short URL...</Typography>\n            ) : (\n              <LinkField url={shortUrl} />\n            )\n          ) : (\n            <LinkField url={longUrl} />\n          )}\n        </DialogContent>\n        <DialogActions>\n          <Button\n            startIcon={<BookmarkAddIcon />}\n            disabled={disabled}\n            onClick={event => {\n              event.preventDefault()\n              setPassword(passwordParam, 'replaceIn')\n              setSession(sessionParam, 'replaceIn')\n              alert('Now press Ctrl+D (PC) or Cmd+D (Mac)')\n            }}\n          >\n            Create browser Bookmark\n          </Button>\n\n          <Button\n            onClick={() => {\n              copy(shortUrl || longUrl)\n              session.notify('Copied to clipboard', 'success')\n            }}\n            startIcon={<ContentCopyIcon />}\n            disabled={disabled}\n          >\n            Copy to Clipboard\n          </Button>\n\n          <Button onClick={handleClose} autoFocus>\n            Close\n          </Button>\n        </DialogActions>\n      </Dialog>\n\n      <SettingsDialog\n        open={settingsDialogOpen}\n        onClose={() => {\n          setSettingsDialogOpen(false)\n        }}\n        currentSetting={currentSetting}\n      />\n    </>\n  )\n})\n\nexport default ShareDialog\n"],"names":["createSvgIcon","d","SettingsDialog","lazy","LinkField","url","React","TextField","label","value","InputProps","readOnly","variant","fullWidth","onClick","event","target","select","observer","handleClose","session","sessionParam","setSessionParam","useState","passwordParam","setPasswordParam","shortUrl","setShortUrl","longUrl","setLongUrl","loading","setLoading","error","setError","settingsDialogOpen","setSettingsDialogOpen","setPassword","useQueryParam","StringParam","setSession","shareURL","currentSetting","localStorage","getItem","snap","getSnapshot","useEffect","locationUrl","URL","window","location","href","result","shareSessionToDynamo","params","URLSearchParams","search","set","json","sessionId","password","toString","sess","toUrlSafeB64","JSON","stringify","longParams","e","disabled","Dialog","maxWidth","open","onClose","title","DialogContent","DialogContentText","IconButton","SettingsIcon","ErrorMessage","onReset","undefined","Typography","DialogActions","Button","startIcon","BookmarkAddIcon","preventDefault","alert","copy","notify","ContentCopyIcon","autoFocus"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7706.430ce07e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7706],{7706:(e,t,r)=>{r.d(t,{sG:()=>d,unzip:()=>s,i2:()=>o});var n=r(35451),i=r(45834),a=r(57864);async function s(e){try{let t,r=0,i=0;const s=[];let o,h=0;do{const n=e.subarray(r);if(o=new a.Inflate,({strm:t}=o),o.push(n,a.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);r+=t.next_in,s[i]=o.result,h+=s[i].length,i+=1}while(t.avail_in);const l=new Uint8Array(h);for(let e=0,t=0;e<s.length;e++)l.set(s[e],t),t+=s[e].length;return n.hp.from(l)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let r;const{minv:i,maxv:s}=t;let o=i.blockPosition,h=i.dataPosition;const l=[],c=[],d=[];let f=0,w=0;do{const t=e.subarray(o-i.blockPosition),n=new a.Inflate;if(({strm:r}=n),n.push(t,a.Z_SYNC_FLUSH),n.err)throw new Error(n.msg);const g=n.result;l.push(g);let u=g.length;c.push(o),d.push(h),1===l.length&&i.dataPosition&&(l[0]=l[0].subarray(i.dataPosition),u=l[0].length);const p=o;if(o+=r.next_in,h+=u,p>=s.blockPosition){l[w]=l[w].subarray(0,s.blockPosition===i.blockPosition?s.dataPosition-i.dataPosition+1:s.dataPosition+1),c.push(o),d.push(h),f+=l[w].length;break}f+=l[w].length,w++}while(r.avail_in);const g=new Uint8Array(f);for(let e=0,t=0;e<l.length;e++)g.set(l[e],t),t+=l[e].length;return{buffer:n.hp.from(g),cpositions:c,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var h=r(59086),l=r.n(h);class c{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new i.EY(t)}}_readLongWithOverflow(e,t=0,r=!0){const n=l().fromBytesLE(e.slice(t,t+8),r);if(n.greaterThan(Number.MAX_SAFE_INTEGER)||n.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return n.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=n.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const r=new Array(t+1);r[0]=[0,0];const i=16*t;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=n.hp.allocUnsafe(i),await this.filehandle.read(e,0,i,8);for(let n=0;n<t;n+=1){const t=this._readLongWithOverflow(e,16*n),i=this._readLongWithOverflow(e,16*n+8);r[n+1]=[t,i]}return r}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const r=t+e;if(0===e)return[];const n=await this._getIndex(),i=[],a=(e,r)=>{const n=e[1],i=r?r[1]:1/0;return n<=t&&i>t?0:n<t?-1:1};let s=0,o=n.length-1,h=Math.floor(n.length/2),l=a(n[h],n[h+1]);for(;0!==l;)l>0?o=h-1:l<0&&(s=h+1),h=Math.ceil((o-s)/2)+s,l=a(n[h],n[h+1]);i.push(n[h]);let c=h+1;for(;c<n.length&&(i.push(n[c]),!(n[c][1]>=r));c+=1);return i[i.length-1][1]<r&&i.push([]),i}}class d{constructor({filehandle:e,path:t,gziFilehandle:r,gziPath:n}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new i.EY(t)}if(!r&&!n&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:r,path:r||n||!t?`${t}.gzi`:n})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),r=n.hp.allocUnsafe(4),{bytesRead:i}=await this.filehandle.read(r,0,4,t-28-4);if(4!==i)throw new Error("read error");return e+r.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[r]){let n=r;n||(n=(await this.filehandle.stat()).size);const i=n-t;return await this.filehandle.read(e,0,i,t),await s(e.slice(0,i))}async read(e,t,r,i){const a=await this.gzi.getRelevantBlocksForRead(r,i),s=n.hp.allocUnsafe(65536);let o=t,h=0;for(let t=0;t<a.length-1;t+=1){const n=await this._readAndUncompressBlock(s,a[t],a[t+1]),[,l]=a[t],c=l>=i?0:i-l,d=Math.min(i+r,l+n.length)-l;c>=0&&c<n.length&&(n.copy(e,o,c,d),o+=d-c,h+=d-c)}return{bytesRead:h,buffer:e}}}}}]);
+//# sourceMappingURL=7706.430ce07e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7706.430ce07e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7706.430ce07e.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts"],"sourcesContent":["import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n"],"names":["async","unzip","inputData","strm","pos","i","chunks","inflator","totalSize","remainingInput","subarray","Inflate","push","Z_SYNC_FLUSH","err","Error","msg","next_in","result","length","avail_in","Uint8Array","offset","set","from","e","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","buffer","len","origCpos","GziIndex","constructor","filehandle","path","this","TypeError","_readLongWithOverflow","buf","unsigned","long","slice","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","index","_readIndex","allocUnsafe","read","numEntries","entries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","entry","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","Object","assign","size","getUncompressedFileSize","blocks","undefined","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","next","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/772.83c2d2db.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[772],{70772:(e,t,o)=>{o.r(t),o.d(t,{default:()=>p});var a=o(7552),r=o(68446),i=o(29499),n=o(36715),s=o(54617),l=o(17177),c=o(58507),d=o(5401),h=o(49823);const p=(0,r.observer)((function({onClose:e,model:t}){return a.createElement(h.Dialog,{open:!0,onClose:e,title:"Highlight bookmarks"},a.createElement(i.A,null,a.createElement(n.A,{variant:"h6"},"Highlight toggles"),a.createElement(s.A,{direction:"row",alignItems:"center"},a.createElement(l.A,{"data-testid":"toggle_highlight_all_switch",checked:t.areBookmarksHighlightedOnAllOpenViews,onChange:()=>{t.setHighlightToggle(!t.areBookmarksHighlightedOnAllOpenViews)}}),a.createElement(n.A,null,"Toggle bookmark highlights on all open views")),a.createElement(s.A,{direction:"row",alignItems:"center"},a.createElement(l.A,{"data-testid":"toggle_highlight_label_all_switch",checked:t.areBookmarksHighlightLabelsOnAllOpenViews,onChange:()=>{t.setLabelToggle(!t.areBookmarksHighlightLabelsOnAllOpenViews)}}),a.createElement(n.A,null,"Toggle 'bookmark' icon on LGV tracks"))),a.createElement(c.A,null,a.createElement(d.A,{variant:"contained",color:"primary",onClick:()=>{e()}},"Close")))}))},54617:(e,t,o)=>{o.d(t,{A:()=>$});var a=o(7552),r=o(93878),i=o(78745),n=o(85693),s=o(70799),l=o(24959),c=o(82081),d=o(8455),h=o(72861),p=o(43059),m=o(34901),u=o(69500);const g=(0,h.A)(),k=(0,l.A)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function v(e){return(0,c.A)({props:e,name:"MuiStack",defaultTheme:g})}function A(e,t){const o=a.Children.toArray(e).filter(Boolean);return o.reduce(((e,r,i)=>(e.push(r),i<o.length-1&&e.push(a.cloneElement(t,{key:`separator-${i}`})),e)),[])}const b=({ownerState:e,theme:t})=>{let o={display:"flex",flexDirection:"column",...(0,p.NI)({theme:t},(0,p.kW)({values:e.direction,breakpoints:t.breakpoints.values}),(e=>({flexDirection:e})))};if(e.spacing){const a=(0,m.LX)(t),r=Object.keys(t.breakpoints.values).reduce(((t,o)=>(("object"==typeof e.spacing&&null!=e.spacing[o]||"object"==typeof e.direction&&null!=e.direction[o])&&(t[o]=!0),t)),{}),n=(0,p.kW)({values:e.direction,base:r}),s=(0,p.kW)({values:e.spacing,base:r});"object"==typeof n&&Object.keys(n).forEach(((e,t,o)=>{if(!n[e]){const a=t>0?n[o[t-1]]:"column";n[e]=a}}));const l=(t,o)=>{return e.useFlexGap?{gap:(0,m._W)(a,t)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{[`margin${r=o?n[o]:e.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[r]}`]:(0,m._W)(a,t)}};var r};o=(0,i.A)(o,(0,p.NI)({theme:t},s,l))}return o=(0,p.iZ)(t.breakpoints,o),o};var w=o(51148),y=o(31049);const f=function(e={}){const{createStyledComponent:t=k,useThemeProps:o=v,componentName:i="MuiStack"}=e,l=t(b),c=a.forwardRef((function(e,t){const a=o(e),c=(0,d.A)(a),{component:h="div",direction:p="column",spacing:m=0,divider:g,children:k,className:v,useFlexGap:b=!1,...w}=c,y={direction:p,spacing:m,useFlexGap:b},f=(0,s.A)({root:["root"]},(e=>(0,n.Ay)(i,e)),{});return(0,u.jsx)(l,{as:h,ownerState:y,ref:t,className:(0,r.A)(f.root,v),...w,children:g?A(k,g):k})}));return c}({createStyledComponent:(0,w.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,y.A)({props:e,name:"MuiStack"})}),$=f},17177:(e,t,o)=>{o.d(t,{A:()=>b});var a=o(7552),r=o(93878),i=o(70799),n=o(72639),s=o(15622),l=o(58520),c=o(15110),d=o(51148),h=o(60129),p=o(4785),m=o(66889),u=o(69500);const g=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.edge&&t[`edge${(0,s.A)(o.edge)}`],t[`size${(0,s.A)(o.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${m.A.thumb}`]:{width:16,height:16},[`& .${m.A.switchBase}`]:{padding:4,[`&.${m.A.checked}`]:{transform:"translateX(16px)"}}}}]}),k=(0,d.Ay)(c.A,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.switchBase,{[`& .${m.A.input}`]:t.input},"default"!==o.color&&t[`color${(0,s.A)(o.color)}`]]}})((0,h.A)((({theme:e})=>({position:"absolute",top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${"light"===e.palette.mode?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create(["left","transform"],{duration:e.transitions.duration.shortest}),[`&.${m.A.checked}`]:{transform:"translateX(20px)"},[`&.${m.A.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${"light"===e.palette.mode?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${m.A.checked} + .${m.A.track}`]:{opacity:.5},[`&.${m.A.disabled} + .${m.A.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:""+("light"===e.palette.mode?.12:.2)},[`& .${m.A.input}`]:{left:"-100%",width:"300%"}}))),(0,h.A)((({theme:e})=>({"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(e.palette).filter((0,l.A)(["light"])).map((([t])=>({props:{color:t},style:{[`&.${m.A.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette[t].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${m.A.disabled}`]:{color:e.vars?e.vars.palette.Switch[`${t}DisabledColor`]:`${"light"===e.palette.mode?(0,n.a)(e.palette[t].main,.62):(0,n.e$)(e.palette[t].main,.55)}`}},[`&.${m.A.checked} + .${m.A.track}`]:{backgroundColor:(e.vars||e).palette[t].main}}})))]})))),v=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(e,t)=>t.track})((0,h.A)((({theme:e})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),backgroundColor:e.vars?e.vars.palette.common.onBackground:`${"light"===e.palette.mode?e.palette.common.black:e.palette.common.white}`,opacity:e.vars?e.vars.opacity.switchTrack:""+("light"===e.palette.mode?.38:.3)})))),A=(0,d.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})((0,h.A)((({theme:e})=>({boxShadow:(e.vars||e).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"})))),b=a.forwardRef((function(e,t){const o=(0,p.b)({props:e,name:"MuiSwitch"}),{className:a,color:n="primary",edge:l=!1,size:c="medium",sx:d,...h}=o,b={...o,color:n,edge:l,size:c},w=(e=>{const{classes:t,edge:o,size:a,color:r,checked:n,disabled:l}=e,c={root:["root",o&&`edge${(0,s.A)(o)}`,`size${(0,s.A)(a)}`],switchBase:["switchBase",`color${(0,s.A)(r)}`,n&&"checked",l&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},d=(0,i.A)(c,m.n,t);return{...t,...d}})(b),y=(0,u.jsx)(A,{className:w.thumb,ownerState:b});return(0,u.jsxs)(g,{className:(0,r.A)(w.root,a),sx:d,ownerState:b,children:[(0,u.jsx)(k,{type:"checkbox",icon:y,checkedIcon:y,ref:t,ownerState:b,...h,classes:{...w,root:w.switchBase}}),(0,u.jsx)(v,{className:w.track,ownerState:b})]})}))},66889:(e,t,o)=>{o.d(t,{A:()=>n,n:()=>i});var a=o(33761),r=o(85693);function i(e){return(0,r.Ay)("MuiSwitch",e)}const n=(0,a.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"])}}]);
+//# sourceMappingURL=772.83c2d2db.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/772.83c2d2db.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/772.83c2d2db.chunk.js","mappings":"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","sources":["../../../plugins/grid-bookmark/src/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.tsx","../../../node_modules/@mui/system/Stack/createStack.js","../../../node_modules/@mui/material/Stack/Stack.js","../../../node_modules/@mui/material/Switch/Switch.js","../../../node_modules/@mui/material/Switch/switchClasses.js"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogContent,\n  DialogActions,\n  Stack,\n  Typography,\n  Switch,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\n// locals\nimport { GridBookmarkModel } from '../../model'\n\nconst HighlightSettingsDialog = observer(function ({\n  onClose,\n  model,\n}: {\n  onClose: () => void\n  model: GridBookmarkModel\n}) {\n  return (\n    <Dialog open onClose={onClose} title=\"Highlight bookmarks\">\n      <DialogContent>\n        <Typography variant=\"h6\">Highlight toggles</Typography>\n        <Stack direction=\"row\" alignItems=\"center\">\n          <Switch\n            data-testid=\"toggle_highlight_all_switch\"\n            checked={model.areBookmarksHighlightedOnAllOpenViews}\n            onChange={() => {\n              model.setHighlightToggle(\n                !model.areBookmarksHighlightedOnAllOpenViews,\n              )\n            }}\n          />\n          <Typography>Toggle bookmark highlights on all open views</Typography>\n        </Stack>\n        <Stack direction=\"row\" alignItems=\"center\">\n          <Switch\n            data-testid=\"toggle_highlight_label_all_switch\"\n            checked={model.areBookmarksHighlightLabelsOnAllOpenViews}\n            onChange={() => {\n              model.setLabelToggle(\n                !model.areBookmarksHighlightLabelsOnAllOpenViews,\n              )\n            }}\n          />\n          <Typography>Toggle 'bookmark' icon on LGV tracks</Typography>\n        </Stack>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            onClose()\n          }}\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default HighlightSettingsDialog\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport systemStyled from \"../styled/index.js\";\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from \"../breakpoints/index.js\";\nimport { createUnarySpacing, getValue } from \"../spacing/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiStack',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n  return useThemePropsSystem({\n    props,\n    name: 'MuiStack',\n    defaultTheme\n  });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  return childrenArray.reduce((output, child, index) => {\n    output.push(child);\n    if (index < childrenArray.length - 1) {\n      output.push(/*#__PURE__*/React.cloneElement(separator, {\n        key: `separator-${index}`\n      }));\n    }\n    return output;\n  }, []);\n}\nconst getSideFromDirection = direction => {\n  return {\n    row: 'Left',\n    'row-reverse': 'Right',\n    column: 'Top',\n    'column-reverse': 'Bottom'\n  }[direction];\n};\nexport const style = ({\n  ownerState,\n  theme\n}) => {\n  let styles = {\n    display: 'flex',\n    flexDirection: 'column',\n    ...handleBreakpoints({\n      theme\n    }, resolveBreakpointValues({\n      values: ownerState.direction,\n      breakpoints: theme.breakpoints.values\n    }), propValue => ({\n      flexDirection: propValue\n    }))\n  };\n  if (ownerState.spacing) {\n    const transformer = createUnarySpacing(theme);\n    const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n      if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n        acc[breakpoint] = true;\n      }\n      return acc;\n    }, {});\n    const directionValues = resolveBreakpointValues({\n      values: ownerState.direction,\n      base\n    });\n    const spacingValues = resolveBreakpointValues({\n      values: ownerState.spacing,\n      base\n    });\n    if (typeof directionValues === 'object') {\n      Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n        const directionValue = directionValues[breakpoint];\n        if (!directionValue) {\n          const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n          directionValues[breakpoint] = previousDirectionValue;\n        }\n      });\n    }\n    const styleFromPropValue = (propValue, breakpoint) => {\n      if (ownerState.useFlexGap) {\n        return {\n          gap: getValue(transformer, propValue)\n        };\n      }\n      return {\n        // The useFlexGap={false} implement relies on each child to give up control of the margin.\n        // We need to reset the margin to avoid double spacing.\n        '& > :not(style):not(style)': {\n          margin: 0\n        },\n        '& > :not(style) ~ :not(style)': {\n          [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n        }\n      };\n    };\n    styles = deepmerge(styles, handleBreakpoints({\n      theme\n    }, spacingValues, styleFromPropValue));\n  }\n  styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n  return styles;\n};\nexport default function createStack(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiStack'\n  } = options;\n  const useUtilityClasses = () => {\n    const slots = {\n      root: ['root']\n    };\n    return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n  };\n  const StackRoot = createStyledComponent(style);\n  const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n    const themeProps = useThemeProps(inProps);\n    const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n    const {\n      component = 'div',\n      direction = 'column',\n      spacing = 0,\n      divider,\n      children,\n      className,\n      useFlexGap = false,\n      ...other\n    } = props;\n    const ownerState = {\n      direction,\n      spacing,\n      useFlexGap\n    };\n    const classes = useUtilityClasses();\n    return /*#__PURE__*/_jsx(StackRoot, {\n      as: component,\n      ownerState: ownerState,\n      ref: ref,\n      className: clsx(classes.root, className),\n      ...other,\n      children: divider ? joinChildren(children, divider) : children\n    });\n  });\n  process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n    divider: PropTypes.node,\n    spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Stack = createStack({\n  createStyledComponent: styled('div', {\n    name: 'MuiStack',\n    slot: 'Root',\n    overridesResolver: (props, styles) => styles.root\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiStack'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * Add an element between each child.\n   */\n  divider: PropTypes.node,\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n   *\n   * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n   * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n   *\n   * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n   * @default false\n   */\n  useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","'use client';\n\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, darken, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport switchClasses, { getSwitchUtilityClass } from \"./switchClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    edge,\n    size,\n    color,\n    checked,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n    switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n    thumb: ['thumb'],\n    track: ['track'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the disabled and checked classes to the SwitchBase\n    ...composedClasses\n  };\n};\nconst SwitchRoot = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})({\n  display: 'inline-flex',\n  width: 34 + 12 * 2,\n  height: 14 + 12 * 2,\n  overflow: 'hidden',\n  padding: 12,\n  boxSizing: 'border-box',\n  position: 'relative',\n  flexShrink: 0,\n  zIndex: 0,\n  // Reset the stacking context.\n  verticalAlign: 'middle',\n  // For correct alignment with the text.\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [{\n    props: {\n      edge: 'start'\n    },\n    style: {\n      marginLeft: -8\n    }\n  }, {\n    props: {\n      edge: 'end'\n    },\n    style: {\n      marginRight: -8\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 24,\n      padding: 7,\n      [`& .${switchClasses.thumb}`]: {\n        width: 16,\n        height: 16\n      },\n      [`& .${switchClasses.switchBase}`]: {\n        padding: 4,\n        [`&.${switchClasses.checked}`]: {\n          transform: 'translateX(16px)'\n        }\n      }\n    }\n  }]\n});\nconst SwitchSwitchBase = styled(SwitchBase, {\n  name: 'MuiSwitch',\n  slot: 'SwitchBase',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.switchBase, {\n      [`& .${switchClasses.input}`]: styles.input\n    }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  zIndex: 1,\n  // Render above the focus ripple.\n  color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n  transition: theme.transitions.create(['left', 'transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${switchClasses.checked}`]: {\n    transform: 'translateX(20px)'\n  },\n  [`&.${switchClasses.disabled}`]: {\n    color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n  },\n  [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n    opacity: 0.5\n  },\n  [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n    opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n  },\n  [`& .${switchClasses.input}`]: {\n    left: '-100%',\n    width: '300%'\n  }\n})), memoTheme(({\n  theme\n}) => ({\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['light'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${switchClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity),\n          '@media (hover: none)': {\n            backgroundColor: 'transparent'\n          }\n        },\n        [`&.${switchClasses.disabled}`]: {\n          color: theme.vars ? theme.vars.palette.Switch[`${color}DisabledColor`] : `${theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.55)}`\n        }\n      },\n      [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n        backgroundColor: (theme.vars || theme).palette[color].main\n      }\n    }\n  }))]\n})));\nconst SwitchTrack = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(memoTheme(({\n  theme\n}) => ({\n  height: '100%',\n  width: '100%',\n  borderRadius: 14 / 2,\n  zIndex: -1,\n  transition: theme.transitions.create(['opacity', 'background-color'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n  opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n})));\nconst SwitchThumb = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => styles.thumb\n})(memoTheme(({\n  theme\n}) => ({\n  boxShadow: (theme.vars || theme).shadows[1],\n  backgroundColor: 'currentColor',\n  width: 20,\n  height: 20,\n  borderRadius: '50%'\n})));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSwitch'\n  });\n  const {\n    className,\n    color = 'primary',\n    edge = false,\n    size = 'medium',\n    sx,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    edge,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n    className: classes.thumb,\n    ownerState: ownerState\n  });\n  return /*#__PURE__*/_jsxs(SwitchRoot, {\n    className: clsx(classes.root, className),\n    sx: sx,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(SwitchSwitchBase, {\n      type: \"checkbox\",\n      icon: icon,\n      checkedIcon: icon,\n      ref: ref,\n      ownerState: ownerState,\n      ...other,\n      classes: {\n        ...classes,\n        root: classes.switchBase\n      }\n    }), /*#__PURE__*/_jsx(SwitchTrack, {\n      className: classes.track,\n      ownerState: ownerState\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense switch styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Switch;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n  return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;"],"names":["observer","onClose","model","React","Dialog","open","title","DialogContent","Typography","variant","Stack","direction","alignItems","Switch","checked","areBookmarksHighlightedOnAllOpenViews","onChange","setHighlightToggle","areBookmarksHighlightLabelsOnAllOpenViews","setLabelToggle","DialogActions","Button","color","onClick","defaultTheme","createTheme","defaultCreateStyledComponent","name","slot","overridesResolver","props","styles","root","useThemePropsDefault","useThemeProps","joinChildren","children","separator","childrenArray","toArray","filter","Boolean","reduce","output","child","index","push","length","key","style","ownerState","theme","display","flexDirection","values","breakpoints","propValue","spacing","transformer","base","Object","keys","acc","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","styleFromPropValue","useFlexGap","gap","margin","row","column","deepmerge","options","createStyledComponent","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","component","divider","className","other","classes","composeClasses","generateUtilityClass","as","clsx","createStack","SwitchRoot","edge","size","width","height","overflow","padding","boxSizing","position","flexShrink","zIndex","verticalAlign","colorAdjust","variants","marginLeft","marginRight","thumb","switchBase","transform","SwitchSwitchBase","input","top","left","vars","palette","defaultColor","mode","common","white","grey","transition","transitions","create","duration","shortest","disabled","defaultDisabledColor","track","opacity","switchTrackDisabled","backgroundColor","action","activeChannel","hoverOpacity","active","entries","map","main","mainChannel","SwitchTrack","borderRadius","onBackground","black","switchTrack","SwitchThumb","boxShadow","shadows","sx","slots","composedClasses","useUtilityClasses","icon","type","checkedIcon","getSwitchUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7753.87963fd9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7753],{17753:function(t,n,e){var i;t.exports=(i=i||function(t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==e.g&&e.g.crypto&&(n=e.g.crypto),!n)try{n=e(2775)}catch(t){}var i=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function t(){}return function(n){var e;return t.prototype=n,e=new t,t.prototype=null,e}}(),o={},s=o.lib={},a=s.Base={extend:function(t){var n=r(this);return t&&n.mixIn(t),n.hasOwnProperty("init")&&this.init!==n.init||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var n in t)t.hasOwnProperty(n)&&(this[n]=t[n]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=a.extend({init:function(t,n){t=this.words=t||[],this.sigBytes=null!=n?n:4*t.length},toString:function(t){return(t||f).stringify(this)},concat:function(t){var n=this.words,e=t.words,i=this.sigBytes,r=t.sigBytes;if(this.clamp(),i%4)for(var o=0;o<r;o++){var s=e[o>>>2]>>>24-o%4*8&255;n[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var a=0;a<r;a+=4)n[i+a>>>2]=e[a>>>2];return this.sigBytes+=r,this},clamp:function(){var n=this.words,e=this.sigBytes;n[e>>>2]&=4294967295<<32-e%4*8,n.length=t.ceil(e/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var n=[],e=0;e<t;e+=4)n.push(i());return new c.init(n,t)}}),u=o.enc={},f=u.Hex={stringify:function(t){for(var n=t.words,e=t.sigBytes,i=[],r=0;r<e;r++){var o=n[r>>>2]>>>24-r%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var n=t.length,e=[],i=0;i<n;i+=2)e[i>>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new c.init(e,n/2)}},h=u.Latin1={stringify:function(t){for(var n=t.words,e=t.sigBytes,i=[],r=0;r<e;r++){var o=n[r>>>2]>>>24-r%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var n=t.length,e=[],i=0;i<n;i++)e[i>>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new c.init(e,n)}},p=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},d=s.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(n){var e,i=this._data,r=i.words,o=i.sigBytes,s=this.blockSize,a=o/(4*s),u=(a=n?t.ceil(a):t.max((0|a)-this._minBufferSize,0))*s,f=t.min(4*u,o);if(u){for(var h=0;h<u;h+=s)this._doProcessBlock(r,h);e=r.splice(0,u),i.sigBytes-=f}return new c.init(e,f)},clone:function(){var t=a.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),l=(s.Hasher=d.extend({cfg:a.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(n,e){return new t.init(e).finalize(n)}},_createHmacHelper:function(t){return function(n,e){return new l.HMAC.init(t,e).finalize(n)}}}),o.algo={});return o}(Math),i)}}]);
+//# sourceMappingURL=7753.87963fd9.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7753.87963fd9.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7753.87963fd9.chunk.js","mappings":"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","sources":["../../../node_modules/crypto-js/core.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"names":["CryptoJS","module","exports","Math","crypto","window","self","globalThis","msCrypto","g","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","Error","create","Object","F","obj","subtype","prototype","C","C_lib","lib","Base","extend","overrides","this","mixIn","hasOwnProperty","init","$super","apply","arguments","instance","properties","propertyName","toString","clone","WordArray","words","sigBytes","length","encoder","Hex","stringify","concat","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","i","thatByte","j","ceil","call","slice","random","nBytes","push","C_enc","enc","hexChars","bite","join","parse","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","String","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","e","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","data","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","max","_minBufferSize","nBytesReady","min","offset","_doProcessBlock","splice","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","message","_createHmacHelper","key","HMAC","algo"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7761.0cf7cf29.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7761],{77761:(e,t,r)=>{r.r(t),r.d(t,{default:()=>C});var a=r(7552),n=r(75785),s=r(29499),o=r(36715),i=r(75653),l=r(59705),c=r(1343),d=r(83867),m=r(33371),u=r(32808),h=r(58507),p=r(5401),f=r(68446),g=r(45465),b=r(68584),v=r(31409),x=r.n(v),A=r(49823),y=r(99546),k=r(90542),w=r(91194);const S=(0,n.n9)()({dialogContent:{width:"80em"},textAreaFont:{fontFamily:"Courier New"}}),C=(0,f.observer)((function({model:e,handleClose:t}){const{classes:r}=S(),[n,f]=(0,a.useState)(),[v,C]=(0,a.useState)(),[$,E]=(0,a.useState)(!1),[R,M]=(0,a.useState)(!1),[W,N]=(0,a.useState)(!1),{leftOffset:q,rightOffset:P}=e,j=Boolean(void 0===v);(0,a.useEffect)((()=>{const t=new AbortController;return(async()=>{try{const r=e.getSelectedRegions(q,P);if(0===r.length)throw new Error("Selected region is out of bounds");const a=await async function(e,t,r){const a=(0,y.getSession)(e),{leftOffset:n,rightOffset:s}=e;if(!n||!s)throw new Error("no offsets on model to use for range");if(n.assemblyName!==s.assemblyName)throw new Error("not able to fetch sequences from multiple assemblies");const{rpcManager:o,assemblyManager:i}=a,l=n.assemblyName||s.assemblyName||"",c=i.get(l);if(!c)throw new Error(`assembly ${l} not found`);const d=(0,b.getConf)(c,["sequence","adapter"]),m="getSequence";return o.call(m,"CoreGetFeatures",{adapterConfig:d,regions:t,sessionId:m,signal:r})}(e,r,t.signal);C(a)}catch(e){console.error(e),f(e)}})(),()=>{t.abort()}}),[e,q,P]);const G=v?v.map((e=>{let t=e.get("seq");const r=e.get("refName"),a=e.get("start")+1,n=e.get("end"),s=`${r}:${a}-${n}`;if(t?.length!==n-a+1)throw new Error(`${s} returned ${t.length.toLocaleString()} bases, but should have returned ${(n-a).toLocaleString()}`);return $&&(t=(0,y.reverse)(t)),W&&(t=(0,y.complement)(t)),{header:s+($?"-rev":"")+(W?"-comp":""),seq:t}})).map((e=>{return`>${e.header}\n${t=e.seq,t.replaceAll(/(.{1,80})/g,"$1\n").trimEnd()}`;var t})).join("\n"):"",D=!!G&&G.length>1e6;return a.createElement(A.Dialog,{maxWidth:"xl",open:!0,onClose:()=>{t(),e.setOffsets()},title:"Reference sequence"},a.createElement(s.A,null,n?a.createElement(o.A,{color:"error"},`${n}`):j?a.createElement(i.A,null,"Retrieving reference sequence...",a.createElement(l.A,{style:{marginLeft:10},size:20,disableShrink:!0})):null,a.createElement(c.A,{"data-testid":"rubberband-sequence",variant:"outlined",multiline:!0,minRows:5,maxRows:10,disabled:D,className:r.dialogContent,fullWidth:!0,value:D?"Reference sequence too large to display, use the download FASTA button":G,InputProps:{readOnly:!0,classes:{input:r.textAreaFont}}}),a.createElement(d.A,null,a.createElement(m.A,{control:a.createElement(u.A,{value:$,onChange:e=>{E(e.target.checked)}}),label:"Reverse sequence"}),a.createElement(m.A,{control:a.createElement(u.A,{value:W,onChange:e=>{N(e.target.checked)}}),label:"Complement sequence"})),a.createElement(o.A,{style:{margin:10}},'Note: Check both boxes for the "reverse complement"')),a.createElement(h.A,null,a.createElement(p.A,{onClick:()=>{x()(G),M(!0),setTimeout((()=>{M(!1)}),500)},disabled:j||!!n||D,color:"primary",startIcon:a.createElement(k.PM,null)},R?"Copied":"Copy to clipboard"),a.createElement(p.A,{onClick:()=>{(0,g.saveAs)(new Blob([G||""],{type:"text/x-fasta;charset=utf-8"}),"jbrowse_ref_seq.fa")},disabled:j||!!n,color:"primary",startIcon:a.createElement(w.A,null)},"Download FASTA"),a.createElement(p.A,{onClick:t,variant:"contained"},"Close")))}))},91194:(e,t,r)=>{r.d(t,{A:()=>s});var a=r(74893),n=r(69500);const s=(0,a.A)((0,n.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"GetApp")},59705:(e,t,r)=>{r.d(t,{A:()=>y});var a=r(7552),n=r(93878),s=r(70799),o=r(64761),i=r(51148),l=r(60129),c=r(4785),d=r(15622),m=r(58520),u=r(72489),h=r(69500);const p=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,g="string"!=typeof p?o.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,b="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,v=(0,i.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,d.A)(r.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:g||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,m.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),x=(0,i.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),A=(0,i.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,d.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:b||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),y=a.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:o="primary",disableShrink:i=!1,size:l=40,style:m,thickness:p=3.6,value:f=0,variant:g="indeterminate",...b}=r,y={...r,color:o,disableShrink:i,size:l,thickness:p,value:f,variant:g},k=(e=>{const{classes:t,variant:r,color:a,disableShrink:n}=e,o={root:["root",r,`color${(0,d.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(r)}`,n&&"circleDisableShrink"]};return(0,s.A)(o,u.b,t)})(y),w={},S={},C={};if("determinate"===g){const e=2*Math.PI*((44-p)/2);w.strokeDasharray=e.toFixed(3),C["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,h.jsx)(v,{className:(0,n.A)(k.root,a),style:{width:l,height:l,...S,...m},ownerState:y,ref:t,role:"progressbar",...C,...b,children:(0,h.jsx)(x,{className:k.svg,ownerState:y,viewBox:"22 22 44 44",children:(0,h.jsx)(A,{className:k.circle,style:w,ownerState:y,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>o,b:()=>s});var a=r(33761),n=r(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const o=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},75653:(e,t,r)=>{r.d(t,{A:()=>x});var a=r(7552),n=r(93878),s=r(85693),o=r(70799),i=r(33283),l=r(82081),c=r(24959),d=r(72861),m=r(69500);const u=(0,d.A)(),h=(0,c.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,i.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),p=e=>(0,l.A)({props:e,name:"MuiContainer",defaultTheme:u});var f=r(15622),g=r(51148),b=r(31049);const v=function(e={}){const{createStyledComponent:t=h,useThemeProps:r=p,componentName:l="MuiContainer"}=e,c=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,r)=>{const a=r,n=e.breakpoints.values[a];return 0!==n&&(t[e.breakpoints.up(a)]={maxWidth:`${n}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),d=a.forwardRef((function(e,t){const a=r(e),{className:d,component:u="div",disableGutters:h=!1,fixed:p=!1,maxWidth:f="lg",classes:g,...b}=a,v={...a,component:u,disableGutters:h,fixed:p,maxWidth:f},x=((e,t)=>{const{classes:r,fixed:a,disableGutters:n,maxWidth:l}=e,c={root:["root",l&&`maxWidth${(0,i.A)(String(l))}`,a&&"fixed",n&&"disableGutters"]};return(0,o.A)(c,(e=>(0,s.Ay)(t,e)),r)})(v,l);return(0,m.jsx)(c,{as:u,ownerState:v,className:(0,n.A)(x.root,d),ref:t,...b})}));return d}({createStyledComponent:(0,g.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,f.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,b.A)({props:e,name:"MuiContainer"})}),x=v},24959:(e,t,r)=>{r.d(t,{A:()=>a});const a=(0,r(15543).Ay)()}}]);
+//# sourceMappingURL=7761.0cf7cf29.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7761.0cf7cf29.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7761.0cf7cf29.chunk.js","mappings":"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","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/GetSequenceDialog.tsx","../../../packages/core/util/formatFastaStrings.ts","../../../node_modules/@mui/icons-material/esm/GetApp.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  Container,\n  DialogActions,\n  DialogContent,\n  FormGroup,\n  FormControlLabel,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { saveAs } from 'file-saver'\nimport { getConf } from '@jbrowse/core/configuration'\nimport copy from 'copy-to-clipboard'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  getSession,\n  reverse,\n  complement,\n  Feature,\n  Region,\n} from '@jbrowse/core/util'\nimport { formatSeqFasta } from '@jbrowse/core/util/formatFastaStrings'\n\n// icons\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport GetAppIcon from '@mui/icons-material/GetApp'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()({\n  dialogContent: {\n    width: '80em',\n  },\n  textAreaFont: {\n    fontFamily: 'Courier New',\n  },\n})\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * Fetches and returns a list features for a given list of regions\n */\nasync function fetchSequence(\n  model: LGV,\n  regions: Region[],\n  signal?: AbortSignal,\n) {\n  const session = getSession(model)\n  const { leftOffset, rightOffset } = model\n\n  if (!leftOffset || !rightOffset) {\n    throw new Error('no offsets on model to use for range')\n  }\n\n  if (leftOffset.assemblyName !== rightOffset.assemblyName) {\n    throw new Error('not able to fetch sequences from multiple assemblies')\n  }\n  const { rpcManager, assemblyManager } = session\n  const assemblyName = leftOffset.assemblyName || rightOffset.assemblyName || ''\n  const assembly = assemblyManager.get(assemblyName)\n  if (!assembly) {\n    throw new Error(`assembly ${assemblyName} not found`)\n  }\n  const adapterConfig = getConf(assembly, ['sequence', 'adapter'])\n\n  const sessionId = 'getSequence'\n  return rpcManager.call(sessionId, 'CoreGetFeatures', {\n    adapterConfig,\n    regions,\n    sessionId,\n    signal,\n  }) as Promise<Feature[]>\n}\n\nconst GetSequenceDialog = observer(function ({\n  model,\n  handleClose,\n}: {\n  model: LGV\n  handleClose: () => void\n}) {\n  const { classes } = useStyles()\n  const [error, setError] = useState<unknown>()\n  const [sequenceChunks, setSequenceChunks] = useState<Feature[]>()\n  const [rev, setReverse] = useState(false)\n  const [copied, setCopied] = useState(false)\n  const [comp, setComplement] = useState(false)\n  const { leftOffset, rightOffset } = model\n  const loading = Boolean(sequenceChunks === undefined)\n\n  useEffect(() => {\n    const controller = new AbortController()\n\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        // random note: the current selected region can't be a computed because\n        // it uses action on base1dview even though it's on the ephemeral\n        // base1dview\n        const selection = model.getSelectedRegions(leftOffset, rightOffset)\n        if (selection.length === 0) {\n          throw new Error('Selected region is out of bounds')\n        }\n        const chunks = await fetchSequence(model, selection, controller.signal)\n        setSequenceChunks(chunks)\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n\n    return () => {\n      controller.abort()\n    }\n  }, [model, leftOffset, rightOffset])\n\n  const sequence = sequenceChunks\n    ? formatSeqFasta(\n        sequenceChunks.map(chunk => {\n          let chunkSeq = chunk.get('seq')\n          const chunkRefName = chunk.get('refName')\n          const chunkStart = chunk.get('start') + 1\n          const chunkEnd = chunk.get('end')\n          const loc = `${chunkRefName}:${chunkStart}-${chunkEnd}`\n          if (chunkSeq?.length !== chunkEnd - chunkStart + 1) {\n            throw new Error(\n              `${loc} returned ${chunkSeq.length.toLocaleString()} bases, but should have returned ${(\n                chunkEnd - chunkStart\n              ).toLocaleString()}`,\n            )\n          }\n\n          if (rev) {\n            chunkSeq = reverse(chunkSeq)\n          }\n          if (comp) {\n            chunkSeq = complement(chunkSeq)\n          }\n          return {\n            header: loc + (rev ? '-rev' : '') + (comp ? '-comp' : ''),\n            seq: chunkSeq,\n          }\n        }),\n      )\n    : ''\n\n  const sequenceTooLarge = sequence ? sequence.length > 1_000_000 : false\n\n  return (\n    <Dialog\n      maxWidth=\"xl\"\n      open\n      onClose={() => {\n        handleClose()\n        model.setOffsets()\n      }}\n      title=\"Reference sequence\"\n    >\n      <DialogContent>\n        {error ? (\n          <Typography color=\"error\">{`${error}`}</Typography>\n        ) : loading ? (\n          <Container>\n            Retrieving reference sequence...\n            <CircularProgress\n              style={{ marginLeft: 10 }}\n              size={20}\n              disableShrink\n            />\n          </Container>\n        ) : null}\n        <TextField\n          data-testid=\"rubberband-sequence\"\n          variant=\"outlined\"\n          multiline\n          minRows={5}\n          maxRows={10}\n          disabled={sequenceTooLarge}\n          className={classes.dialogContent}\n          fullWidth\n          value={\n            sequenceTooLarge\n              ? 'Reference sequence too large to display, use the download FASTA button'\n              : sequence\n          }\n          InputProps={{\n            readOnly: true,\n            classes: {\n              input: classes.textAreaFont,\n            },\n          }}\n        />\n        <FormGroup>\n          <FormControlLabel\n            control={\n              <Checkbox\n                value={rev}\n                onChange={event => {\n                  setReverse(event.target.checked)\n                }}\n              />\n            }\n            label=\"Reverse sequence\"\n          />\n          <FormControlLabel\n            control={\n              <Checkbox\n                value={comp}\n                onChange={event => {\n                  setComplement(event.target.checked)\n                }}\n              />\n            }\n            label=\"Complement sequence\"\n          />\n        </FormGroup>\n        <Typography style={{ margin: 10 }}>\n          Note: Check both boxes for the &quot;reverse complement&quot;\n        </Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            copy(sequence)\n            setCopied(true)\n            setTimeout(() => {\n              setCopied(false)\n            }, 500)\n          }}\n          disabled={loading || !!error || sequenceTooLarge}\n          color=\"primary\"\n          startIcon={<ContentCopyIcon />}\n        >\n          {copied ? 'Copied' : 'Copy to clipboard'}\n        </Button>\n        <Button\n          onClick={() => {\n            saveAs(\n              new Blob([sequence || ''], {\n                type: 'text/x-fasta;charset=utf-8',\n              }),\n              'jbrowse_ref_seq.fa',\n            )\n          }}\n          disabled={loading || !!error}\n          color=\"primary\"\n          startIcon={<GetAppIcon />}\n        >\n          Download FASTA\n        </Button>\n        <Button onClick={handleClose} variant=\"contained\">\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default GetSequenceDialog\n","export interface SeqChunk {\n  header: string\n  seq: string\n}\n/**\n * Returns sequence with new line every 80 characters\n * ref https://stackoverflow.com/a/51506718/2129219\n *\n * @param seqString -  string\n * @returns formatted sequence string\n */\nexport function formatFastaLines(seqString: string) {\n  return seqString.replaceAll(/(.{1,80})/g, '$1\\n').trimEnd()\n}\n/**\n * Formats the sequences chunks into Fasta format\n *\n * @param chunks - array of seq chunks of the form `{ header: string, seq: string }`\n * @returns formatted sequence in fasta format\n */\nexport function formatSeqFasta(chunks: SeqChunk[]) {\n  return chunks\n    .map(chunk => `>${chunk.header}\\n${formatFastaLines(chunk.seq)}`)\n    .join('\\n')\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z\"\n}), 'GetApp');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["useStyles","makeStyles","dialogContent","width","textAreaFont","fontFamily","observer","model","handleClose","classes","error","setError","useState","sequenceChunks","setSequenceChunks","rev","setReverse","copied","setCopied","comp","setComplement","leftOffset","rightOffset","loading","Boolean","undefined","useEffect","controller","AbortController","selection","getSelectedRegions","length","Error","chunks","async","regions","signal","session","getSession","assemblyName","rpcManager","assemblyManager","assembly","get","adapterConfig","getConf","sessionId","call","fetchSequence","e","console","abort","sequence","map","chunk","chunkSeq","chunkRefName","chunkStart","chunkEnd","loc","toLocaleString","reverse","complement","header","seq","seqString","replaceAll","trimEnd","join","sequenceTooLarge","React","Dialog","maxWidth","open","onClose","setOffsets","title","DialogContent","Typography","color","Container","CircularProgress","style","marginLeft","size","disableShrink","TextField","variant","multiline","minRows","maxRows","disabled","className","fullWidth","value","InputProps","readOnly","input","FormGroup","FormControlLabel","control","Checkbox","onChange","event","target","checked","label","margin","DialogActions","Button","onClick","copy","setTimeout","startIcon","ContentCopyIcon","saveAs","Blob","type","GetAppIcon","d","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","theme","display","variants","transition","transitions","create","animation","Object","entries","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","defaultTheme","createTheme","defaultCreateStyledComponent","capitalize","String","fixed","disableGutters","useThemePropsDefault","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","boxSizing","marginRight","paddingLeft","spacing","paddingRight","breakpoints","up","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","max","xs","component","classesProp","composeClasses","generateUtilityClass","as","clsx","createContainer"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7773.7e072552.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7773],{87773:(s,e,l)=>{l.r(e),l.d(e,{default:()=>a.A,getListUtilityClass:()=>b.H,listClasses:()=>b.A});var a=l(58181),b=l(5085)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7790.3790bece.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7790],{47790:(e,t,r)=>{r.r(t),r.d(t,{default:()=>g});var a=r(7552),n=r(59705),s=r(36715),i=r(1343),l=r(29499),o=r(29629),c=r(33371),m=r(32808),u=r(58507),d=r(5401),v=r(49823),h=r(99546);function f(){return a.createElement("div",null,a.createElement(n.A,{size:20,style:{marginRight:20}}),a.createElement(s.A,{display:"inline"},"Creating SVG"))}function p({children:e,...t}){return a.createElement("div",null,a.createElement(i.A,t,e))}function y(e,t){return(0,h.useLocalStorage)(`svg-${e}`,t)}function g({model:e,handleClose:t}){const r=(0,h.getSession)(e),n="undefined"!=typeof OffscreenCanvas,[i,g]=(0,a.useState)(n),[b,k]=(0,a.useState)(!1),[A,E]=(0,a.useState)(),[S,w]=y("file","jbrowse.svg"),[x,C]=y("tracklabels","offset"),[$,D]=y("theme",r.themeName||"default");return a.createElement(v.Dialog,{open:!0,onClose:t,title:"Export SVG"},a.createElement(l.A,null,A?a.createElement(v.ErrorMessage,{error:A}):b?a.createElement(f,null):null,a.createElement(p,{helperText:"filename",value:S,onChange:e=>{w(e.target.value)}}),a.createElement(p,{select:!0,label:"Track label positioning",variant:"outlined",style:{width:150},value:x,onChange:e=>{C(e.target.value)}},a.createElement(o.A,{value:"offset"},"Offset"),a.createElement(o.A,{value:"overlay"},"Overlay"),a.createElement(o.A,{value:"left"},"Left"),a.createElement(o.A,{value:"none"},"None")),a.createElement("br",null),r.allThemes?a.createElement(p,{select:!0,label:"Theme",variant:"outlined",value:$,onChange:e=>{D(e.target.value)}},Object.entries(r.allThemes()).map((([e,t])=>a.createElement(o.A,{key:e,value:e},t.name||"(Unknown name)")))):null,n?a.createElement(c.A,{control:a.createElement(m.A,{checked:i,onChange:()=>{g((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):a.createElement(s.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),a.createElement(u.A,null,a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{k(!0),E(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:S,trackLabels:x,themeName:$}),t()}catch(e){console.error(e),E(e)}finally{k(!1)}}},"Submit")))}},59705:(e,t,r)=>{r.d(t,{A:()=>A});var a=r(7552),n=r(93878),s=r(70799),i=r(64761),l=r(51148),o=r(60129),c=r(4785),m=r(15622),u=r(58520),d=r(72489),v=r(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,p="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,y="string"!=typeof f?i.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,g=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,m.A)(r.color)}`]]}})((0,o.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:p||{animation:`${h} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),b=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,m.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,o.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:l=!1,size:o=40,style:u,thickness:h=3.6,value:f=0,variant:p="indeterminate",...y}=r,A={...r,color:i,disableShrink:l,size:o,thickness:h,value:f,variant:p},E=(e=>{const{classes:t,variant:r,color:a,disableShrink:n}=e,i={root:["root",r,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(r)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,d.b,t)})(A),S={},w={},x={};if("determinate"===p){const e=2*Math.PI*((44-h)/2);S.strokeDasharray=e.toFixed(3),x["aria-valuenow"]=Math.round(f),S.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,v.jsx)(g,{className:(0,n.A)(E.root,a),style:{width:o,height:o,...w,...u},ownerState:A,ref:t,role:"progressbar",...x,...y,children:(0,v.jsx)(b,{className:E.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,v.jsx)(k,{className:E.circle,style:S,ownerState:A,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>s});var a=r(33761),n=r(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=7790.3790bece.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7790.3790bece.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7790.3790bece.chunk.js","mappings":"4RAmBA,SAASA,IACP,OACEC,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAgB,CAACC,KAAM,GAAIC,MAAO,CAAEC,YAAa,MAClDJ,EAAAA,cAACK,EAAAA,EAAU,CAACC,QAAQ,UAAS,gBAGnC,CAEA,SAASC,GAAW,SAAEC,KAAaC,IACjC,OACET,EAAAA,cAAA,WACEA,EAAAA,cAACU,EAAAA,EAAcD,EAAOD,GAG5B,CACA,SAASG,EAAeC,EAAaC,GACnC,OAAOC,EAAAA,EAAAA,iBAAgB,OAAOF,IAAOC,EACvC,CAEe,SAASE,GAAgB,MACtCC,EAAK,YACLC,IAKA,MAAMC,GAAUC,EAAAA,EAAAA,YAAWH,GACrBI,EAA6C,oBAApBC,iBACxBC,EAAiBC,IAAsBC,EAAAA,EAAAA,UAASJ,IAChDK,EAASC,IAAcF,EAAAA,EAAAA,WAAS,IAChCG,EAAOC,IAAYJ,EAAAA,EAAAA,aACnBK,EAAUC,GAAenB,EAAY,OAAQ,gBAC7CoB,EAAaC,GAAkBrB,EAAY,cAAe,WAC1DsB,EAAWC,GAAgBvB,EAChC,QACAO,EAAQe,WAAa,WAEvB,OACEjC,EAAAA,cAACmC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASpB,EAAaqB,MAAM,cACvCtC,EAAAA,cAACuC,EAAAA,EAAa,KACXZ,EACC3B,EAAAA,cAACwC,EAAAA,aAAY,CAACb,MAAOA,IACnBF,EACFzB,EAAAA,cAACD,EAAc,MACb,KACJC,EAAAA,cAACO,EAAU,CACTkC,WAAW,WACXC,MAAOb,EACPc,SAAUC,IACRd,EAAYc,EAAMC,OAAOH,MAAM,IAGnC1C,EAAAA,cAACO,EAAU,CACTuC,QAAM,EACNC,MAAM,0BACNC,QAAQ,WACR7C,MAAO,CAAE8C,MAAO,KAChBP,MAAOX,EACPY,SAAUC,IACRZ,EAAeY,EAAMC,OAAOH,MAAM,GAGpC1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,UAAS,UACzB1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,WAAU,WAC1B1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,QAAO,QACvB1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,QAAO,SAEzB1C,EAAAA,cAAA,WACCkB,EAAQiC,UACPnD,EAAAA,cAACO,EAAU,CACTuC,QAAM,EACNC,MAAM,QACNC,QAAQ,WACRN,MAAOT,EACPU,SAAUC,IACRV,EAAaU,EAAMC,OAAOH,MAAM,GAGjCU,OAAOC,QAAQnC,EAAQiC,aAAaG,KAAI,EAAE1C,EAAKC,KAC9Cb,EAAAA,cAACkD,EAAAA,EAAQ,CAACtC,IAAKA,EAAK8B,MAAO9B,GAGvBC,EAAI0C,MAAQ,qBAKlB,KAEHnC,EACCpB,EAAAA,cAACwD,EAAAA,EAAgB,CACfC,QACEzD,EAAAA,cAAC0D,EAAAA,EAAQ,CACPC,QAASrC,EACTqB,SAAUA,KACRpB,GAAmBV,IAAQA,GAAI,IAIrCkC,MAAM,iFAGR/C,EAAAA,cAACK,EAAAA,EAAU,KAAC,yFAMhBL,EAAAA,cAAC4D,EAAAA,EAAa,KACZ5D,EAAAA,cAAC6D,EAAAA,EAAM,CACLb,QAAQ,YACRc,MAAM,YACNC,QAASA,KACP9C,GAAa,GAEhB,UAGDjB,EAAAA,cAAC6D,EAAAA,EAAM,CACLb,QAAQ,YACRc,MAAM,UACNE,KAAK,SACLD,QAASE,UACPvC,GAAW,GACXE,OAASsC,GACT,UACQlD,EAAMmD,UAAU,CACpB7C,kBACAO,WACAE,cACAE,cAEFhB,GACF,CAAE,MAAOmD,GACPC,QAAQ1C,MAAMyC,GACdxC,EAASwC,EACX,CAAE,QACA1C,GAAW,EACb,IAEH,WAMT,C,8JCxJA,MACM4C,EAAyB,IAAS;;;;;;;;EASlCC,EAAuB,IAAS;;;;;;;;;;;;;;;EAoBhCC,EAAoD,iBAA3BF,EAAsC,IAAG;qBACnDA;QACX,KACJG,EAAgD,iBAAzBF,EAAoC,IAAG;qBAC/CA;QACX,KAeJG,GAAuB,QAAO,OAAQ,CAC1CnB,KAAM,sBACNoB,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAW/B,SAAU8B,EAAO,SAAQ,OAAWC,EAAWjB,UAAU,GAPvE,EAS1B,QAAU,EACXmB,YACI,CACJ3E,QAAS,eACT4E,SAAU,CAAC,CACTL,MAAO,CACL7B,QAAS,eAEX7C,MAAO,CACLgF,WAAYF,EAAMG,YAAYC,OAAO,eAEtC,CACDR,MAAO,CACL7B,QAAS,iBAEX7C,MAAOqE,GAAmB,CACxBc,UAAW,GAAGhB,8BAEZlB,OAAOC,QAAQ4B,EAAMM,SAASC,QAAO,UAAkClC,KAAI,EAAEQ,MAAW,CAC5Fe,MAAO,CACLf,SAEF3D,MAAO,CACL2D,OAAQmB,EAAMQ,MAAQR,GAAOM,QAAQzB,GAAO4B,gBAI5CC,GAAsB,QAAO,MAAO,CACxCpC,KAAM,sBACNoB,KAAM,MACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOc,KAHnB,CAIzB,CACDtF,QAAS,UAELuF,GAAyB,QAAO,SAAU,CAC9CtC,KAAM,sBACNoB,KAAM,SACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOgB,OAAQhB,EAAO,UAAS,OAAWC,EAAW/B,YAAa+B,EAAWgB,eAAiBjB,EAAOkB,oBAAoB,GAPtG,EAS5B,QAAU,EACXf,YACI,CACJgB,OAAQ,eACRf,SAAU,CAAC,CACTL,MAAO,CACL7B,QAAS,eAEX7C,MAAO,CACLgF,WAAYF,EAAMG,YAAYC,OAAO,uBAEtC,CACDR,MAAO,CACL7B,QAAS,iBAEX7C,MAAO,CAEL+F,gBAAiB,cACjBC,iBAAkB,IAEnB,CACDtB,MAAO,EACLE,gBAC2B,kBAAvBA,EAAW/B,UAAgC+B,EAAWgB,cAC5D5F,MAAOsE,GAAiB,CAEtBa,UAAW,GAAGf,sCA8IpB,EAlIsC,cAAiB,SAA0B6B,EAASC,GACxF,MAAMxB,GAAQ,OAAgB,CAC5BA,MAAOuB,EACP7C,KAAM,yBAEF,UACJ+C,EAAS,MACTxC,EAAQ,UAAS,cACjBiC,GAAgB,EAAK,KACrB7F,EAAO,GAAE,MACTC,EAAK,UACLoG,EAAY,IAAG,MACf7D,EAAQ,EAAC,QACTM,EAAU,mBACPwD,GACD3B,EACEE,EAAa,IACdF,EACHf,QACAiC,gBACA7F,OACAqG,YACA7D,QACAM,WAEIyD,EAjIkB1B,KACxB,MAAM,QACJ0B,EAAO,QACPzD,EAAO,MACPc,EAAK,cACLiC,GACEhB,EACE2B,EAAQ,CACZ1B,KAAM,CAAC,OAAQhC,EAAS,SAAQ,OAAWc,MAC3C8B,IAAK,CAAC,OACNE,OAAQ,CAAC,SAAU,UAAS,OAAW9C,KAAY+C,GAAiB,wBAEtE,OAAO,OAAeW,EAAO,IAAiCD,EAAQ,EAqHtDE,CAAkB5B,GAC5B6B,EAAc,CAAC,EACfC,EAAY,CAAC,EACbC,EAAY,CAAC,EACnB,GAAgB,gBAAZ9D,EAA2B,CAC7B,MAAM+D,EAAgB,EAAIC,KAAKC,KA1KtB,GA0KoCV,GAAa,GAC1DK,EAAYV,gBAAkBa,EAAcG,QAAQ,GACpDJ,EAAU,iBAAmBE,KAAKG,MAAMzE,GACxCkE,EAAYT,iBAAmB,KAAK,IAAMzD,GAAS,IAAMqE,GAAeG,QAAQ,OAChFL,EAAUO,UAAY,gBACxB,CACA,OAAoB,SAAK1C,EAAsB,CAC7C4B,WAAW,OAAKG,EAAQzB,KAAMsB,GAC9BnG,MAAO,CACL8C,MAAO/C,EACPmH,OAAQnH,KACL2G,KACA1G,GAEL4E,WAAYA,EACZsB,IAAKA,EACLiB,KAAM,iBACHR,KACAN,EACHhG,UAAuB,SAAKmF,EAAqB,CAC/CW,UAAWG,EAAQb,IACnBb,WAAYA,EACZwC,QAAS,cACT/G,UAAuB,SAAKqF,EAAwB,CAClDS,UAAWG,EAAQX,OACnB3F,MAAOyG,EACP7B,WAAYA,EACZyC,GArMK,GAsMLC,GAtMK,GAuMLC,GAvMK,GAuMMnB,GAAa,EACxBoB,KAAM,OACNC,YAAarB,OAIrB,G,qECzNO,SAASsB,EAAgClD,GAC9C,OAAO,QAAqB,sBAAuBA,EACrD,CACA,MACA,GADgC,OAAuB,sBAAuB,CAAC,OAAQ,cAAe,gBAAiB,eAAgB,iBAAkB,MAAO,SAAU,oBAAqB,sBAAuB,uB","sources":["../../../plugins/breakpoint-split-view/src/BreakpointSplitView/components/ExportSvgDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\n// locals\nimport { ExportSvgOptions } from '../model'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [trackLabels, setTrackLabels] = useSvgLocal('tracklabels', 'offset')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n        <TextField2\n          select\n          label=\"Track label positioning\"\n          variant=\"outlined\"\n          style={{ width: 150 }}\n          value={trackLabels}\n          onChange={event => {\n            setTrackLabels(event.target.value)\n          }}\n        >\n          <MenuItem value=\"offset\">Offset</MenuItem>\n          <MenuItem value=\"overlay\">Overlay</MenuItem>\n          <MenuItem value=\"left\">Left</MenuItem>\n          <MenuItem value=\"none\">None</MenuItem>\n        </TextField2>\n        <br />\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            variant=\"outlined\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                trackLabels,\n                themeName,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["LoadingMessage","React","CircularProgress","size","style","marginRight","Typography","display","TextField2","children","rest","TextField","useSvgLocal","key","val","useLocalStorage","ExportSvgDialog","model","handleClose","session","getSession","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","useState","loading","setLoading","error","setError","filename","setFilename","trackLabels","setTrackLabels","themeName","setThemeName","Dialog","open","onClose","title","DialogContent","ErrorMessage","helperText","value","onChange","event","target","select","label","variant","width","MenuItem","allThemes","Object","entries","map","name","FormControlLabel","control","Checkbox","checked","DialogActions","Button","color","onClick","type","async","undefined","exportSvg","e","console","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","root","theme","variants","transition","transitions","create","animation","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7809.eb2c5f08.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7809],{37809:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});var r=a(46377),s=a(99834),n=a(66885),i=a(32598),o=a(6434),c=a(7706),l=a(52645),d=a(99546),u=a(77744);class f extends r.BaseFeatureDataAdapter{calculatedIntervalTreeMap={};async loadDataP(e){const{statusCallback:t=()=>{}}=e||{},a=await(0,s.openLocation)(this.getConf("gffLocation"),this.pluginManager).readFile(e),r=(0,d.isGzip)(a)?await(0,d.updateStatus)("Unzipping",t,(()=>(0,c.unzip)(a))):a,n=[],f={};let h=0;const p="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;let g=0;for(;h<r.length;){const e=r.indexOf("\n",h),a=-1===e?r.subarray(h):r.subarray(h,e),s=(p?.decode(a)||a.toString()).trim();if(s)if(s.startsWith("#"))n.push(s);else{if(s.startsWith(">"))break;{const e=s.indexOf("\t"),t=s.slice(0,e);f[t]||(f[t]=""),f[t]+=`${s}\n`}}g++%1e4==0&&t(`Loading ${Math.floor(h/1e6).toLocaleString("en-US")}/${Math.floor(r.length/1e6).toLocaleString("en-US")} MB`),h=e+1}const b=Object.fromEntries(Object.entries(f).map((([e,t])=>[e,a=>{if(!this.calculatedIntervalTreeMap[e]){a?.("Parsing GFF data");const r=new i.Ay;(0,l.g)(t).flat().map(((t,a)=>new o.A({data:(0,u.d)(t),id:`${this.id}-${e}-${a}`}))).forEach((e=>r.insert([e.get("start"),e.get("end")],e))),this.calculatedIntervalTreeMap[e]=r}return this.calculatedIntervalTreeMap[e]}])));return{header:n.join("\n"),intervalTreeMap:b}}async loadData(e){return this.gffFeatures||(this.gffFeatures=this.loadDataP(e).catch((e=>{throw this.gffFeatures=void 0,e}))),this.gffFeatures}async getRefNames(e={}){const{intervalTreeMap:t}=await this.loadData(e);return Object.keys(t)}async getHeader(e={}){const{header:t}=await this.loadData(e);return t}getFeatures(e,t={}){return(0,n.ObservableCreate)((async a=>{try{const{start:r,end:s,refName:n}=e,{intervalTreeMap:i}=await this.loadData(t);i[n]?.(t.statusCallback).search([r,s]).forEach((e=>{a.next(e)})),a.complete()}catch(e){a.error(e)}}),t.signal)}freeResources(){}}},77744:(e,t,a)=>{function r(e){const{end:t,start:a,child_features:s,derived_features:n,attributes:i,type:o,source:c,phase:l,seq_id:d,score:u,strand:f}=e;let h;"+"===f?h=1:"-"===f?h=-1:"."===f&&(h=0);const p=new Set(["start","end","seq_id","score","type","source","phase","strand"]),g=i||{},b={};for(const e of Object.keys(g)){let t=e.toLowerCase();if(p.has(t)&&(t+="2"),g[e]&&"_lineHash"!==e){let a=g[e];Array.isArray(a)&&1===a.length&&([a]=a),b[t]=a}}return{...b,start:a-1,end:t,strand:h,type:o,source:c,refName:d,derived_features:n,phase:null===l?void 0:Number(l),score:null===u?void 0:u,subfeatures:s.flatMap((e=>e.map((e=>r(e)))))}}a.d(t,{d:()=>r})}}]);
+//# sourceMappingURL=7809.eb2c5f08.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7809.eb2c5f08.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7809.eb2c5f08.chunk.js","mappings":"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","sources":["../../../plugins/gff3/src/Gff3Adapter/Gff3Adapter.ts","../../../plugins/gff3/src/featureData.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { parseStringSync } from 'gff-nostream'\nimport { isGzip, updateStatus } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport { featureData } from '../featureData'\n\ntype StatusCallback = (arg: string) => void\n\nexport default class Gff3Adapter extends BaseFeatureDataAdapter {\n  calculatedIntervalTreeMap: Record<string, IntervalTree> = {}\n\n  gffFeatures?: Promise<{\n    header: string\n    intervalTreeMap: Record<string, (sc?: StatusCallback) => IntervalTree>\n  }>\n\n  private async loadDataP(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const buf = (await openLocation(\n      this.getConf('gffLocation'),\n      this.pluginManager,\n    ).readFile(opts)) as Buffer\n    const buffer = isGzip(buf)\n      ? await updateStatus('Unzipping', statusCallback, () => unzip(buf))\n      : buf\n    const headerLines = []\n    const featureMap = {} as Record<string, string>\n    let blockStart = 0\n\n    const decoder =\n      typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\n    let i = 0\n    while (blockStart < buffer.length) {\n      const n = buffer.indexOf('\\n', blockStart)\n      // could be a non-newline ended file, so subarray to end of file if n===-1\n      const b =\n        n === -1 ? buffer.subarray(blockStart) : buffer.subarray(blockStart, n)\n      const line = (decoder?.decode(b) || b.toString()).trim()\n      if (line) {\n        if (line.startsWith('#')) {\n          headerLines.push(line)\n        } else if (line.startsWith('>')) {\n          break\n        } else {\n          const ret = line.indexOf('\\t')\n          const refName = line.slice(0, ret)\n          if (!featureMap[refName]) {\n            featureMap[refName] = ''\n          }\n          featureMap[refName] += `${line}\\n`\n        }\n      }\n      if (i++ % 10_000 === 0) {\n        statusCallback(\n          `Loading ${Math.floor(blockStart / 1_000_000).toLocaleString('en-US')}/${Math.floor(buffer.length / 1_000_000).toLocaleString('en-US')} MB`,\n        )\n      }\n\n      blockStart = n + 1\n    }\n\n    const intervalTreeMap = Object.fromEntries(\n      Object.entries(featureMap).map(([refName, lines]) => [\n        refName,\n        (sc?: (arg: string) => void) => {\n          if (!this.calculatedIntervalTreeMap[refName]) {\n            sc?.('Parsing GFF data')\n            const intervalTree = new IntervalTree()\n            parseStringSync(lines)\n              .flat()\n              .map(\n                (f, i) =>\n                  new SimpleFeature({\n                    data: featureData(f),\n                    id: `${this.id}-${refName}-${i}`,\n                  }),\n              )\n              .forEach(obj =>\n                intervalTree.insert([obj.get('start'), obj.get('end')], obj),\n              )\n            this.calculatedIntervalTreeMap[refName] = intervalTree\n          }\n          return this.calculatedIntervalTreeMap[refName]\n        },\n      ]),\n    )\n\n    return {\n      header: headerLines.join('\\n'),\n      intervalTreeMap,\n    }\n  }\n\n  private async loadData(opts: BaseOptions) {\n    if (!this.gffFeatures) {\n      this.gffFeatures = this.loadDataP(opts).catch((e: unknown) => {\n        this.gffFeatures = undefined\n        throw e\n      })\n    }\n\n    return this.gffFeatures\n  }\n\n  public async getRefNames(opts: BaseOptions = {}) {\n    const { intervalTreeMap } = await this.loadData(opts)\n    return Object.keys(intervalTreeMap)\n  }\n\n  public async getHeader(opts: BaseOptions = {}) {\n    const { header } = await this.loadData(opts)\n    return header\n  }\n\n  public getFeatures(query: NoAssemblyRegion, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      try {\n        const { start, end, refName } = query\n        const { intervalTreeMap } = await this.loadData(opts)\n        intervalTreeMap[refName]?.(opts.statusCallback)\n          .search([start, end])\n          .forEach(f => {\n            observer.next(f)\n          })\n        observer.complete()\n      } catch (e) {\n        observer.error(e)\n      }\n    }, opts.signal)\n  }\n\n  public freeResources(/* { region } */) {}\n}\n","import { GFF3FeatureLineWithRefs } from 'gff-nostream'\n\ninterface GFF3Feature {\n  start: number\n  end: number\n  strand?: number\n  type: string | null\n  source: string | null\n  refName: string\n  derived_features: unknown[] | null\n  phase?: number\n  score?: number\n  subfeatures: GFF3Feature[] | undefined\n  [key: string]: unknown\n}\n\nexport function featureData(data: GFF3FeatureLineWithRefs): GFF3Feature {\n  const {\n    end,\n    start,\n    child_features,\n    derived_features,\n    attributes,\n    type,\n    source,\n    phase,\n    seq_id,\n    score,\n    strand,\n  } = data\n\n  let strand2: number | undefined\n  if (strand === '+') {\n    strand2 = 1\n  } else if (strand === '-') {\n    strand2 = -1\n  } else if (strand === '.') {\n    strand2 = 0\n  }\n\n  const defaultFields = new Set([\n    'start',\n    'end',\n    'seq_id',\n    'score',\n    'type',\n    'source',\n    'phase',\n    'strand',\n  ])\n  const dataAttributes = attributes || {}\n  const resultAttributes = {} as Record<string, unknown>\n  for (const a of Object.keys(dataAttributes)) {\n    let b = a.toLowerCase()\n    if (defaultFields.has(b)) {\n      // add \"suffix\" to tag name if it already exists\n      // reproduces behavior of NCList\n      b += '2'\n    }\n    if (dataAttributes[a] && a !== '_lineHash') {\n      let attr: string | string[] | undefined = dataAttributes[a]\n      if (Array.isArray(attr) && attr.length === 1) {\n        ;[attr] = attr\n      }\n      resultAttributes[b] = attr\n    }\n  }\n\n  return {\n    ...resultAttributes,\n    start: start! - 1,\n    end: end!,\n    strand: strand2,\n    type,\n    source,\n    refName: seq_id!,\n    derived_features,\n    phase: phase === null ? undefined : Number(phase),\n    score: score === null ? undefined : score,\n    subfeatures: child_features.flatMap(childLocs =>\n      childLocs.map(childLoc => featureData(childLoc)),\n    ),\n  }\n}\n"],"names":["Gff3Adapter","BaseFeatureDataAdapter","calculatedIntervalTreeMap","loadDataP","opts","statusCallback","buf","openLocation","this","getConf","pluginManager","readFile","buffer","isGzip","updateStatus","unzip","headerLines","featureMap","blockStart","decoder","TextDecoder","undefined","i","length","n","indexOf","b","subarray","line","decode","toString","trim","startsWith","push","ret","refName","slice","Math","floor","toLocaleString","intervalTreeMap","Object","fromEntries","entries","map","lines","sc","intervalTree","IntervalTree","parseStringSync","flat","f","SimpleFeature","data","featureData","id","forEach","obj","insert","get","header","join","loadData","gffFeatures","catch","e","getRefNames","keys","getHeader","getFeatures","query","ObservableCreate","async","start","end","search","observer","next","complete","error","signal","freeResources","child_features","derived_features","attributes","type","source","phase","seq_id","score","strand","strand2","defaultFields","Set","dataAttributes","resultAttributes","a","toLowerCase","has","attr","Array","isArray","Number","subfeatures","flatMap","childLocs","childLoc"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7812.6bb31bfb.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7812],{7812:(e,s,b)=>{b.r(s),b.d(s,{checkboxClasses:()=>l.A,default:()=>a.A,getCheckboxUtilityClass:()=>l.w});var a=b(32808),l=b(42687)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7831.cfcb0221.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7831],{47831:(e,t,l)=>{l.r(t),l.d(t,{default:()=>b});var n=l(7552),r=l(68446),a=l(49823),u=l(9236);const b=(0,r.observer)((function({title:e}){return e?n.createElement(u.default,null,n.createElement(a.SanitizedHTML,{html:e})):null}))}}]);
+//# sourceMappingURL=7831.cfcb0221.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7831.cfcb0221.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7831.cfcb0221.chunk.js","mappings":"qMAKA,MAQA,GARuBA,EAAAA,EAAAA,WAAS,UAAU,MAAEC,IAC1C,OAAOA,EACLC,EAAAA,cAACC,EAAAA,QAAW,KACVD,EAAAA,cAACE,EAAAA,cAAa,CAACC,KAAMJ,KAErB,IACN,G","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/SyntenyTooltip.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { SanitizedHTML } from '@jbrowse/core/ui'\nimport BaseTooltip from '@jbrowse/core/ui/BaseTooltip'\n\nconst SyntenyTooltip = observer(function ({ title }: { title: string }) {\n  return title ? (\n    <BaseTooltip>\n      <SanitizedHTML html={title} />\n    </BaseTooltip>\n  ) : null\n})\n\nexport default SyntenyTooltip\n"],"names":["observer","title","React","BaseTooltip","SanitizedHTML","html"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7842.cbff451c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7842],{57842:(e,t,s)=>{s.r(t),s.d(t,{default:()=>i});var r=s(46377),a=s(99834);class i extends r.BaseAdapter{async setupPre(){const e=this.pluginManager,t=(0,a.openLocation)(this.getConf("chromSizesLocation"),e),s=await t.readFile("utf8");return Object.fromEntries(s.split(/\n|\r\n|\r/).map((e=>e.trim())).filter((e=>!!e)).map((e=>{const[t,s]=e.split("\t");return[t,+s]})))}async setup(){return this.setupP||(this.setupP=this.setupPre().catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async getRegions(){const e=await this.setup();return Object.keys(e).map((t=>({refName:t,start:0,end:e[t]})))}getHeader(){return{}}freeResources(){}}}}]);
+//# sourceMappingURL=7842.cbff451c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7842.cbff451c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7842.cbff451c.chunk.js","mappings":"iLAMe,MAAMA,UACXC,EAAAA,YAMR,cAAMC,GACJ,MAAMC,EAAKC,KAAKC,cACVC,GAAOC,EAAAA,EAAAA,cAAaH,KAAKI,QAAQ,sBAAuBL,GACxDM,QAAaH,EAAKI,SAAS,QACjC,OAAOC,OAAOC,YACZH,EACGI,MAAM,cACNC,KAAIC,GAAKA,EAAEC,SACXC,QAAOF,KAAOA,IACdD,KAAII,IACH,MAAOC,EAAMC,GAAUF,EAAKL,MAAM,MAClC,MAAO,CAACM,GAAQC,EAAQ,IAGhC,CAEA,WAAMC,GAOJ,OANKjB,KAAKkB,SACRlB,KAAKkB,OAASlB,KAAKF,WAAWqB,OAAOC,IAEnC,MADApB,KAAKkB,YAASG,EACRD,CAAC,KAGJpB,KAAKkB,MACd,CAEA,gBAAaI,GACX,MAAMC,QAAgBvB,KAAKiB,QAC3B,OAAOV,OAAOiB,KAAKD,GAASb,KAAIe,IAAW,CACzCA,UACAC,MAAO,EACPC,IAAKJ,EAAQE,MAEjB,CAEOG,SAAAA,GACL,MAAO,CAAC,CACV,CAEOC,aAAAA,GAAuC,E","sources":["../../../plugins/sequence/src/ChromSizesAdapter/ChromSizesAdapter.ts"],"sourcesContent":["import {\n  RegionsAdapter,\n  BaseAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\n\nexport default class ChromSizesAdapter\n  extends BaseAdapter\n  implements RegionsAdapter\n{\n  // the map of refSeq to length\n  protected setupP?: Promise<Record<string, number>>\n\n  async setupPre() {\n    const pm = this.pluginManager\n    const file = openLocation(this.getConf('chromSizesLocation'), pm)\n    const data = await file.readFile('utf8')\n    return Object.fromEntries(\n      data\n        .split(/\\n|\\r\\n|\\r/)\n        .map(f => f.trim())\n        .filter(f => !!f)\n        .map(line => {\n          const [name, length] = line.split('\\t')\n          return [name!, +length!]\n        }),\n    )\n  }\n\n  async setup() {\n    if (!this.setupP) {\n      this.setupP = this.setupPre().catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  public async getRegions() {\n    const refSeqs = await this.setup()\n    return Object.keys(refSeqs).map(refName => ({\n      refName,\n      start: 0,\n      end: refSeqs[refName]!,\n    }))\n  }\n\n  public getHeader() {\n    return {}\n  }\n\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["ChromSizesAdapter","BaseAdapter","setupPre","pm","this","pluginManager","file","openLocation","getConf","data","readFile","Object","fromEntries","split","map","f","trim","filter","line","name","length","setup","setupP","catch","e","undefined","getRegions","refSeqs","keys","refName","start","end","getHeader","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7864.59d0de32.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7864],{57864:(t,e,a)=>{var i={};(0,a(62393).assign)(i,a(78131),a(3263),a(27149)),t.exports=i},78131:(t,e,a)=>{var i=a(64047),n=a(62393),r=a(97376),s=a(20062),o=a(96742),h=Object.prototype.toString;function l(t){if(!(this instanceof l))return new l(t);this.options=n.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var a=i.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(0!==a)throw new Error(s[a]);if(e.header&&i.deflateSetHeader(this.strm,e.header),e.dictionary){var d;if(d="string"==typeof e.dictionary?r.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,0!==(a=i.deflateSetDictionary(this.strm,d)))throw new Error(s[a]);this._dict_set=!0}}function d(t,e){var a=new l(e);if(a.push(t,!0),a.err)throw a.msg||s[a.err];return a.result}l.prototype.push=function(t,e){var a,s,o=this.strm,l=this.options.chunkSize;if(this.ended)return!1;s=e===~~e?e:!0===e?4:0,"string"==typeof t?o.input=r.string2buf(t):"[object ArrayBuffer]"===h.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new n.Buf8(l),o.next_out=0,o.avail_out=l),1!==(a=i.deflate(o,s))&&0!==a)return this.onEnd(a),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==s&&2!==s)||("string"===this.options.to?this.onData(r.buf2binstring(n.shrinkBuf(o.output,o.next_out))):this.onData(n.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==a);return 4===s?(a=i.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,0===a):2!==s||(this.onEnd(0),o.avail_out=0,!0)},l.prototype.onData=function(t){this.chunks.push(t)},l.prototype.onEnd=function(t){0===t&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=l,e.deflate=d,e.deflateRaw=function(t,e){return(e=e||{}).raw=!0,d(t,e)},e.gzip=function(t,e){return(e=e||{}).gzip=!0,d(t,e)}},3263:(t,e,a)=>{var i=a(54003),n=a(62393),r=a(97376),s=a(27149),o=a(20062),h=a(96742),l=a(17826),d=Object.prototype.toString;function _(t){if(!(this instanceof _))return new _(t);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(15&e.windowBits||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var a=i.inflateInit2(this.strm,e.windowBits);if(a!==s.Z_OK)throw new Error(o[a]);if(this.header=new l,i.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=r.string2buf(e.dictionary):"[object ArrayBuffer]"===d.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=i.inflateSetDictionary(this.strm,e.dictionary))!==s.Z_OK))throw new Error(o[a])}function f(t,e){var a=new _(e);if(a.push(t,!0),a.err)throw a.msg||o[a.err];return a.result}_.prototype.push=function(t,e){var a,o,h,l,_,f=this.strm,u=this.options.chunkSize,c=this.options.dictionary,w=!1;if(this.ended)return!1;o=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof t?f.input=r.binstring2buf(t):"[object ArrayBuffer]"===d.call(t)?f.input=new Uint8Array(t):f.input=t,f.next_in=0,f.avail_in=f.input.length;do{if(0===f.avail_out&&(f.output=new n.Buf8(u),f.next_out=0,f.avail_out=u),(a=i.inflate(f,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&c&&(a=i.inflateSetDictionary(this.strm,c)),a===s.Z_BUF_ERROR&&!0===w&&(a=s.Z_OK,w=!1),a!==s.Z_STREAM_END&&a!==s.Z_OK)return this.onEnd(a),this.ended=!0,!1;f.next_out&&(0!==f.avail_out&&a!==s.Z_STREAM_END&&(0!==f.avail_in||o!==s.Z_FINISH&&o!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=r.utf8border(f.output,f.next_out),l=f.next_out-h,_=r.buf2string(f.output,h),f.next_out=l,f.avail_out=u-l,l&&n.arraySet(f.output,f.output,h,l,0),this.onData(_)):this.onData(n.shrinkBuf(f.output,f.next_out)))),0===f.avail_in&&0===f.avail_out&&(w=!0)}while((f.avail_in>0||0===f.avail_out)&&a!==s.Z_STREAM_END);return a===s.Z_STREAM_END&&(o=s.Z_FINISH),o===s.Z_FINISH?(a=i.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===s.Z_OK):o!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),f.avail_out=0,!0)},_.prototype.onData=function(t){this.chunks.push(t)},_.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=_,e.inflate=f,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,f(t,e)},e.ungzip=f},62393:(t,e)=>{var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(var n in a)i(a,n)&&(t[n]=a[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(i=0,e=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),n=0,e=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},r={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,n)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,r))},e.setTyped(a)},97376:(t,e,a)=>{var i=a(62393),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var s=new i.Buf8(256),o=0;o<256;o++)s[o]=o>=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function h(t,e){if(e<65534&&(t.subarray&&r||!t.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(t,e));for(var a="",s=0;s<e;s++)a+=String.fromCharCode(t[s]);return a}s[254]=s[254]=1,e.string2buf=function(t){var e,a,n,r,s,o=t.length,h=0;for(r=0;r<o;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new i.Buf8(h),s=0,r=0;s<h;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},e.buf2binstring=function(t){return h(t,t.length)},e.binstring2buf=function(t){for(var e=new i.Buf8(t.length),a=0,n=e.length;a<n;a++)e[a]=t.charCodeAt(a);return e},e.buf2string=function(t,e){var a,i,n,r,o=e||t.length,l=new Array(2*o);for(i=0,a=0;a<o;)if((n=t[a++])<128)l[i++]=n;else if((r=s[n])>4)l[i++]=65533,a+=r-1;else{for(n&=2===r?31:3===r?15:7;r>1&&a<o;)n=n<<6|63&t[a++],r--;r>1?l[i++]=65533:n<65536?l[i++]=n:(n-=65536,l[i++]=55296|n>>10&1023,l[i++]=56320|1023&n)}return h(l,i)},e.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+s[t[a]]>e?a:e}},68225:t=>{t.exports=function(t,e,a,i){for(var n=65535&t,r=t>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(n=n+e[i++]|0)|0}while(--s);n%=65521,r%=65521}return n|r<<16}},27149:t=>{t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},86299:t=>{var e=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();t.exports=function(t,a,i,n){var r=e,s=n+i;t^=-1;for(var o=n;o<s;o++)t=t>>>8^r[255&(t^a[o])];return~t}},64047:(t,e,a)=>{var i,n=a(62393),r=a(11517),s=a(68225),o=a(86299),h=a(20062),l=-2,d=258,_=262,f=103,u=113,c=666;function w(t,e){return t.msg=h[e],e}function g(t){return(t<<1)-(t>4?9:0)}function b(t){for(var e=t.length;--e>=0;)t[e]=0}function m(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(n.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function p(t,e){r._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,m(t.strm)}function v(t,e){t.pending_buf[t.pending++]=e}function k(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function y(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-_?t.strstart-(t.w_size-_):0,l=t.window,f=t.w_mask,u=t.prev,c=t.strstart+d,w=l[r+s-1],g=l[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(l[(a=e)+s]===g&&l[a+s-1]===w&&l[a]===l[r]&&l[++a]===l[r+1]){r+=2,a++;do{}while(l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&r<c);if(i=d-(c-r),r=c-d,i>s){if(t.match_start=e,s=i,i>=o)break;w=l[r+s-1],g=l[r+s]}}}while((e=u[e&f])>h&&0!=--n);return s<=t.lookahead?s:t.lookahead}function x(t){var e,a,i,r,h,l,d,f,u,c,w=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=w+(w-_)){n.arraySet(t.window,t.window,w,w,0),t.match_start-=w,t.strstart-=w,t.block_start-=w,e=a=t.hash_size;do{i=t.head[--e],t.head[e]=i>=w?i-w:0}while(--a);e=a=w;do{i=t.prev[--e],t.prev[e]=i>=w?i-w:0}while(--a);r+=w}if(0===t.strm.avail_in)break;if(l=t.strm,d=t.window,f=t.strstart+t.lookahead,u=r,c=void 0,(c=l.avail_in)>u&&(c=u),a=0===c?0:(l.avail_in-=c,n.arraySet(d,l.input,l.next_in,c,f),1===l.state.wrap?l.adler=s(l.adler,d,c,f):2===l.state.wrap&&(l.adler=o(l.adler,d,c,f)),l.next_in+=c,l.total_in+=c,c),t.lookahead+=a,t.lookahead+t.insert>=3)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+3-1])&t.hash_mask,t.prev[h&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=h,h++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<_&&0!==t.strm.avail_in)}function z(t,e){for(var a,i;;){if(t.lookahead<_){if(x(t),t.lookahead<_&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-_&&(t.match_length=y(t,a)),t.match_length>=3)if(i=r._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(p(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,4===e?(p(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(p(t,!1),0===t.strm.avail_out)?1:2}function B(t,e){for(var a,i,n;;){if(t.lookahead<_){if(x(t),t.lookahead<_&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-_&&(t.match_length=y(t,a),t.match_length<=5&&(1===t.strategy||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=r._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(p(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((i=r._tr_tally(t,0,t.window[t.strstart-1]))&&p(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=r._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,4===e?(p(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(p(t,!1),0===t.strm.avail_out)?1:2}function S(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function E(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(1146),this.dyn_dtree=new n.Buf16(122),this.bl_tree=new n.Buf16(78),b(this.dyn_ltree),b(this.dyn_dtree),b(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(16),this.heap=new n.Buf16(573),b(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(573),b(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function A(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=2,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:u,t.adler=2===e.wrap?0:1,e.last_flush=0,r._tr_init(e),0):w(t,l)}function Z(t){var e,a=A(t);return 0===a&&((e=t.state).window_size=2*e.w_size,b(e.head),e.max_lazy_match=i[e.level].max_lazy,e.good_match=i[e.level].good_length,e.nice_match=i[e.level].nice_length,e.max_chain_length=i[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),a}function R(t,e,a,i,r,s){if(!t)return l;var o=1;if(-1===e&&(e=6),i<0?(o=0,i=-i):i>15&&(o=2,i-=16),r<1||r>9||8!==a||i<8||i>15||e<0||e>9||s<0||s>4)return w(t,l);8===i&&(i=9);var h=new E;return t.state=h,h.strm=t,h.wrap=o,h.gzhead=null,h.w_bits=i,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new n.Buf8(2*h.w_size),h.head=new n.Buf16(h.hash_size),h.prev=new n.Buf16(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new n.Buf8(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=s,h.method=a,Z(t)}i=[new S(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(x(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,p(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-_&&(p(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(p(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(p(t,!1),t.strm.avail_out),1)})),new S(4,4,8,4,z),new S(4,5,16,8,z),new S(4,6,32,32,z),new S(4,4,16,16,B),new S(8,16,32,32,B),new S(8,16,128,128,B),new S(8,32,128,256,B),new S(32,128,258,1024,B),new S(32,258,258,4096,B)],e.deflateInit=function(t,e){return R(t,e,8,15,8,0)},e.deflateInit2=R,e.deflateReset=Z,e.deflateResetKeep=A,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?l:(t.state.gzhead=e,0):l},e.deflate=function(t,e){var a,n,s,h;if(!t||!t.state||e>5||e<0)return t?w(t,l):l;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===c&&4!==e)return w(t,0===t.avail_out?-5:l);if(n.strm=t,a=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,v(n,31),v(n,139),v(n,8),n.gzhead?(v(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),v(n,255&n.gzhead.time),v(n,n.gzhead.time>>8&255),v(n,n.gzhead.time>>16&255),v(n,n.gzhead.time>>24&255),v(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),v(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(v(n,255&n.gzhead.extra.length),v(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=o(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(v(n,0),v(n,0),v(n,0),v(n,0),v(n,0),v(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),v(n,3),n.status=u);else{var _=8+(n.w_bits-8<<4)<<8;_|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(_|=32),_+=31-_%31,n.status=u,k(n,_),0!==n.strstart&&(k(n,t.adler>>>16),k(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(s=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),m(t),s=n.pending,n.pending!==n.pending_buf_size));)v(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),m(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,v(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),m(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,v(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>s&&(t.adler=o(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.status=f)}else n.status=f;if(n.status===f&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&m(t),n.pending+2<=n.pending_buf_size&&(v(n,255&t.adler),v(n,t.adler>>8&255),t.adler=0,n.status=u)):n.status=u),0!==n.pending){if(m(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&g(e)<=g(a)&&4!==e)return w(t,-5);if(n.status===c&&0!==t.avail_in)return w(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==c){var y=2===n.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(x(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,a=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(p(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(p(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(p(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var a,i,n,s,o=t.window;;){if(t.lookahead<=d){if(x(t),t.lookahead<=d&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=o[n=t.strstart-1])===o[++n]&&i===o[++n]&&i===o[++n]){s=t.strstart+d;do{}while(i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&n<s);t.match_length=d-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=r._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(p(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(p(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(p(t,!1),0===t.strm.avail_out)?1:2}(n,e):i[n.level].func(n,e);if(3!==y&&4!==y||(n.status=c),1===y||3===y)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===y&&(1===e?r._tr_align(n):5!==e&&(r._tr_stored_block(n,0,0,!1),3===e&&(b(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),m(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(v(n,255&t.adler),v(n,t.adler>>8&255),v(n,t.adler>>16&255),v(n,t.adler>>24&255),v(n,255&t.total_in),v(n,t.total_in>>8&255),v(n,t.total_in>>16&255),v(n,t.total_in>>24&255)):(k(n,t.adler>>>16),k(n,65535&t.adler)),m(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},e.deflateEnd=function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==f&&e!==u&&e!==c?w(t,l):(t.state=null,e===u?w(t,-3):0):l},e.deflateSetDictionary=function(t,e){var a,i,r,o,h,d,_,f,u=e.length;if(!t||!t.state)return l;if(2===(o=(a=t.state).wrap)||1===o&&42!==a.status||a.lookahead)return l;for(1===o&&(t.adler=s(t.adler,e,u,0)),a.wrap=0,u>=a.w_size&&(0===o&&(b(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,e,u-a.w_size,a.w_size,0),e=f,u=a.w_size),h=t.avail_in,d=t.next_in,_=t.input,t.avail_in=u,t.next_in=0,t.input=e,x(a);a.lookahead>=3;){i=a.strstart,r=a.lookahead-2;do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+3-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++}while(--r);a.strstart=i,a.lookahead=2,x(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=2,a.match_available=0,t.next_in=d,t.input=_,t.avail_in=h,a.wrap=o,0},e.deflateInfo="pako deflate (from Nodeca project)"},17826:t=>{t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},56833:t=>{t.exports=function(t,e){var a,i,n,r,s,o,h,l,d,_,f,u,c,w,g,b,m,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),h=a.dmax,l=a.wsize,d=a.whave,_=a.wnext,f=a.window,u=a.hold,c=a.bits,w=a.lencode,g=a.distcode,b=(1<<a.lenbits)-1,m=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=w[u&b];e:for(;;){if(u>>>=v=p>>>24,c-=v,0==(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(64&v){if(32&v){a.mode=12;break t}t.msg="invalid literal/length code",a.mode=30;break t}p=w[(65535&p)+(u&(1<<v)-1)];continue e}for(k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&m];;){if(u>>>=v=p>>>24,c-=v,16&(v=p>>>16&255)){if(y=65535&p,c<(v&=15)&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),(y+=u&(1<<v)-1)>h){t.msg="invalid distance too far back",a.mode=30;break t}if(u>>>=v,c-=v,y>(v=r-s)){if((v=y-v)>d&&a.sane){t.msg="invalid distance too far back",a.mode=30;break t}if(x=0,z=f,0===_){if(x+=l-v,v<k){k-=v;do{S[r++]=f[x++]}while(--v);x=r-y,z=S}}else if(_<v){if(x+=l+_-v,(v-=_)<k){k-=v;do{S[r++]=f[x++]}while(--v);if(x=0,_<k){k-=v=_;do{S[r++]=f[x++]}while(--v);x=r-y,z=S}}}else if(x+=_-v,v<k){k-=v;do{S[r++]=f[x++]}while(--v);x=r-y,z=S}for(;k>2;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],k>1&&(S[r++]=z[x++]))}else{x=r-y;do{S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],k-=3}while(k>2);k&&(S[r++]=S[x++],k>1&&(S[r++]=S[x++]))}break}if(64&v){t.msg="invalid distance code",a.mode=30;break t}p=g[(65535&p)+(u&(1<<v)-1)]}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},54003:(t,e,a)=>{var i=a(62393),n=a(68225),r=a(86299),s=a(56833),o=a(43010),h=-2,l=12,d=30;function _(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function f(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function u(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(852),e.distcode=e.distdyn=new i.Buf32(592),e.sane=1,e.back=-1,0):h}function c(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,u(t)):h}function w(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?h:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,c(t))):h}function g(t,e){var a,i;return t?(i=new f,t.state=i,i.window=null,0!==(a=w(t,e))&&(t.state=null),a):h}var b,m,p=!0;function v(t){if(p){var e;for(b=new i.Buf32(512),m=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(o(1,t.lens,0,288,b,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;o(2,t.lens,0,32,m,0,t.work,{bits:5}),p=!1}t.lencode=b,t.lenbits=9,t.distcode=m,t.distbits=5}function k(t,e,a,n){var r,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new i.Buf8(s.wsize)),n>=s.wsize?(i.arraySet(s.window,e,a-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>n&&(r=n),i.arraySet(s.window,e,a-n,r,s.wnext),(n-=r)?(i.arraySet(s.window,e,a-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=r))),0}e.inflateReset=c,e.inflateReset2=w,e.inflateResetKeep=u,e.inflateInit=function(t){return g(t,15)},e.inflateInit2=g,e.inflate=function(t,e){var a,f,u,c,w,g,b,m,p,y,x,z,B,S,E,A,Z,R,C,N,I,O,D,T,U=0,F=new i.Buf8(4),L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return h;(a=t.state).mode===l&&(a.mode=13),w=t.next_out,u=t.output,b=t.avail_out,c=t.next_in,f=t.input,g=t.avail_in,m=a.hold,p=a.bits,y=g,x=b,O=0;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;p<16;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(2&a.wrap&&35615===m){a.check=0,F[0]=255&m,F[1]=m>>>8&255,a.check=r(a.check,F,2,0),m=0,p=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&m)<<8)+(m>>8))%31){t.msg="incorrect header check",a.mode=d;break}if(8!=(15&m)){t.msg="unknown compression method",a.mode=d;break}if(p-=4,I=8+(15&(m>>>=4)),0===a.wbits)a.wbits=I;else if(I>a.wbits){t.msg="invalid window size",a.mode=d;break}a.dmax=1<<I,t.adler=a.check=1,a.mode=512&m?10:l,m=0,p=0;break;case 2:for(;p<16;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(a.flags=m,8!=(255&a.flags)){t.msg="unknown compression method",a.mode=d;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=d;break}a.head&&(a.head.text=m>>8&1),512&a.flags&&(F[0]=255&m,F[1]=m>>>8&255,a.check=r(a.check,F,2,0)),m=0,p=0,a.mode=3;case 3:for(;p<32;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.head&&(a.head.time=m),512&a.flags&&(F[0]=255&m,F[1]=m>>>8&255,F[2]=m>>>16&255,F[3]=m>>>24&255,a.check=r(a.check,F,4,0)),m=0,p=0,a.mode=4;case 4:for(;p<16;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.head&&(a.head.xflags=255&m,a.head.os=m>>8),512&a.flags&&(F[0]=255&m,F[1]=m>>>8&255,a.check=r(a.check,F,2,0)),m=0,p=0,a.mode=5;case 5:if(1024&a.flags){for(;p<16;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.length=m,a.head&&(a.head.extra_len=m),512&a.flags&&(F[0]=255&m,F[1]=m>>>8&255,a.check=r(a.check,F,2,0)),m=0,p=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&((z=a.length)>g&&(z=g),z&&(a.head&&(I=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,c,z,I)),512&a.flags&&(a.check=r(a.check,f,z,c)),g-=z,c+=z,a.length-=z),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===g)break t;z=0;do{I=f[c+z++],a.head&&I&&a.length<65536&&(a.head.name+=String.fromCharCode(I))}while(I&&z<g);if(512&a.flags&&(a.check=r(a.check,f,z,c)),g-=z,c+=z,I)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===g)break t;z=0;do{I=f[c+z++],a.head&&I&&a.length<65536&&(a.head.comment+=String.fromCharCode(I))}while(I&&z<g);if(512&a.flags&&(a.check=r(a.check,f,z,c)),g-=z,c+=z,I)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;p<16;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(m!==(65535&a.check)){t.msg="header crc mismatch",a.mode=d;break}m=0,p=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=l;break;case 10:for(;p<32;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}t.adler=a.check=_(m),m=0,p=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=w,t.avail_out=b,t.next_in=c,t.avail_in=g,a.hold=m,a.bits=p,2;t.adler=a.check=1,a.mode=l;case l:if(5===e||6===e)break t;case 13:if(a.last){m>>>=7&p,p-=7&p,a.mode=27;break}for(;p<3;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}switch(a.last=1&m,p-=1,3&(m>>>=1)){case 0:a.mode=14;break;case 1:if(v(a),a.mode=20,6===e){m>>>=2,p-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=d}m>>>=2,p-=2;break;case 14:for(m>>>=7&p,p-=7&p;p<32;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if((65535&m)!=(m>>>16^65535)){t.msg="invalid stored block lengths",a.mode=d;break}if(a.length=65535&m,m=0,p=0,a.mode=15,6===e)break t;case 15:a.mode=16;case 16:if(z=a.length){if(z>g&&(z=g),z>b&&(z=b),0===z)break t;i.arraySet(u,f,c,z,w),g-=z,c+=z,b-=z,w+=z,a.length-=z;break}a.mode=l;break;case 17:for(;p<14;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(a.nlen=257+(31&m),m>>>=5,p-=5,a.ndist=1+(31&m),m>>>=5,p-=5,a.ncode=4+(15&m),m>>>=4,p-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=d;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;p<3;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.lens[L[a.have++]]=7&m,m>>>=3,p-=3}for(;a.have<19;)a.lens[L[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,D={bits:a.lenbits},O=o(0,a.lens,0,19,a.lencode,0,a.work,D),a.lenbits=D.bits,O){t.msg="invalid code lengths set",a.mode=d;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;A=(U=a.lencode[m&(1<<a.lenbits)-1])>>>16&255,Z=65535&U,!((E=U>>>24)<=p);){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(Z<16)m>>>=E,p-=E,a.lens[a.have++]=Z;else{if(16===Z){for(T=E+2;p<T;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(m>>>=E,p-=E,0===a.have){t.msg="invalid bit length repeat",a.mode=d;break}I=a.lens[a.have-1],z=3+(3&m),m>>>=2,p-=2}else if(17===Z){for(T=E+3;p<T;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}p-=E,I=0,z=3+(7&(m>>>=E)),m>>>=3,p-=3}else{for(T=E+7;p<T;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}p-=E,I=0,z=11+(127&(m>>>=E)),m>>>=7,p-=7}if(a.have+z>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=d;break}for(;z--;)a.lens[a.have++]=I}}if(a.mode===d)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=d;break}if(a.lenbits=9,D={bits:a.lenbits},O=o(1,a.lens,0,a.nlen,a.lencode,0,a.work,D),a.lenbits=D.bits,O){t.msg="invalid literal/lengths set",a.mode=d;break}if(a.distbits=6,a.distcode=a.distdyn,D={bits:a.distbits},O=o(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,D),a.distbits=D.bits,O){t.msg="invalid distances set",a.mode=d;break}if(a.mode=20,6===e)break t;case 20:a.mode=21;case 21:if(g>=6&&b>=258){t.next_out=w,t.avail_out=b,t.next_in=c,t.avail_in=g,a.hold=m,a.bits=p,s(t,x),w=t.next_out,u=t.output,b=t.avail_out,c=t.next_in,f=t.input,g=t.avail_in,m=a.hold,p=a.bits,a.mode===l&&(a.back=-1);break}for(a.back=0;A=(U=a.lencode[m&(1<<a.lenbits)-1])>>>16&255,Z=65535&U,!((E=U>>>24)<=p);){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(A&&!(240&A)){for(R=E,C=A,N=Z;A=(U=a.lencode[N+((m&(1<<R+C)-1)>>R)])>>>16&255,Z=65535&U,!(R+(E=U>>>24)<=p);){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}m>>>=R,p-=R,a.back+=R}if(m>>>=E,p-=E,a.back+=E,a.length=Z,0===A){a.mode=26;break}if(32&A){a.back=-1,a.mode=l;break}if(64&A){t.msg="invalid literal/length code",a.mode=d;break}a.extra=15&A,a.mode=22;case 22:if(a.extra){for(T=a.extra;p<T;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.length+=m&(1<<a.extra)-1,m>>>=a.extra,p-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;A=(U=a.distcode[m&(1<<a.distbits)-1])>>>16&255,Z=65535&U,!((E=U>>>24)<=p);){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(!(240&A)){for(R=E,C=A,N=Z;A=(U=a.distcode[N+((m&(1<<R+C)-1)>>R)])>>>16&255,Z=65535&U,!(R+(E=U>>>24)<=p);){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}m>>>=R,p-=R,a.back+=R}if(m>>>=E,p-=E,a.back+=E,64&A){t.msg="invalid distance code",a.mode=d;break}a.offset=Z,a.extra=15&A,a.mode=24;case 24:if(a.extra){for(T=a.extra;p<T;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}a.offset+=m&(1<<a.extra)-1,m>>>=a.extra,p-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=d;break}a.mode=25;case 25:if(0===b)break t;if(z=x-b,a.offset>z){if((z=a.offset-z)>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=d;break}z>a.wnext?(z-=a.wnext,B=a.wsize-z):B=a.wnext-z,z>a.length&&(z=a.length),S=a.window}else S=u,B=w-a.offset,z=a.length;z>b&&(z=b),b-=z,a.length-=z;do{u[w++]=S[B++]}while(--z);0===a.length&&(a.mode=21);break;case 26:if(0===b)break t;u[w++]=a.length,b--,a.mode=21;break;case 27:if(a.wrap){for(;p<32;){if(0===g)break t;g--,m|=f[c++]<<p,p+=8}if(x-=b,t.total_out+=x,a.total+=x,x&&(t.adler=a.check=a.flags?r(a.check,u,x,w-x):n(a.check,u,x,w-x)),x=b,(a.flags?m:_(m))!==a.check){t.msg="incorrect data check",a.mode=d;break}m=0,p=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;p<32;){if(0===g)break t;g--,m+=f[c++]<<p,p+=8}if(m!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=d;break}m=0,p=0}a.mode=29;case 29:O=1;break t;case d:O=-3;break t;case 31:return-4;default:return h}return t.next_out=w,t.avail_out=b,t.next_in=c,t.avail_in=g,a.hold=m,a.bits=p,(a.wsize||x!==t.avail_out&&a.mode<d&&(a.mode<27||4!==e))&&k(t,t.output,t.next_out,x-t.avail_out)?(a.mode=31,-4):(y-=t.avail_in,x-=t.avail_out,t.total_in+=y,t.total_out+=x,a.total+=x,a.wrap&&x&&(t.adler=a.check=a.flags?r(a.check,u,x,t.next_out-x):n(a.check,u,x,t.next_out-x)),t.data_type=a.bits+(a.last?64:0)+(a.mode===l?128:0)+(20===a.mode||15===a.mode?256:0),(0===y&&0===x||4===e)&&0===O&&(O=-5),O)},e.inflateEnd=function(t){if(!t||!t.state)return h;var e=t.state;return e.window&&(e.window=null),t.state=null,0},e.inflateGetHeader=function(t,e){var a;return t&&t.state&&2&(a=t.state).wrap?(a.head=e,e.done=!1,0):h},e.inflateSetDictionary=function(t,e){var a,i=e.length;return t&&t.state?0!==(a=t.state).wrap&&11!==a.mode?h:11===a.mode&&n(1,e,i,0)!==a.check?-3:k(t,e,i,i)?(a.mode=31,-4):(a.havedict=1,0):h},e.inflateInfo="pako inflate (from Nodeca project)"},43010:(t,e,a)=>{var i=a(62393),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,a,h,l,d,_,f){var u,c,w,g,b,m,p,v,k,y=f.bits,x=0,z=0,B=0,S=0,E=0,A=0,Z=0,R=0,C=0,N=0,I=null,O=0,D=new i.Buf16(16),T=new i.Buf16(16),U=null,F=0;for(x=0;x<=15;x++)D[x]=0;for(z=0;z<h;z++)D[e[a+z]]++;for(E=y,S=15;S>=1&&0===D[S];S--);if(E>S&&(E=S),0===S)return l[d++]=20971520,l[d++]=20971520,f.bits=1,0;for(B=1;B<S&&0===D[B];B++);for(E<B&&(E=B),R=1,x=1;x<=15;x++)if(R<<=1,(R-=D[x])<0)return-1;if(R>0&&(0===t||1!==S))return-1;for(T[1]=0,x=1;x<15;x++)T[x+1]=T[x]+D[x];for(z=0;z<h;z++)0!==e[a+z]&&(_[T[e[a+z]]++]=z);if(0===t?(I=U=_,m=19):1===t?(I=n,O-=257,U=r,F-=257,m=256):(I=s,U=o,m=-1),N=0,z=0,x=B,b=d,A=E,Z=0,w=-1,g=(C=1<<E)-1,1===t&&C>852||2===t&&C>592)return 1;for(;;){p=x-Z,_[z]<m?(v=0,k=_[z]):_[z]>m?(v=U[F+_[z]],k=I[O+_[z]]):(v=96,k=0),u=1<<x-Z,B=c=1<<A;do{l[b+(N>>Z)+(c-=u)]=p<<24|v<<16|k}while(0!==c);for(u=1<<x-1;N&u;)u>>=1;if(0!==u?(N&=u-1,N+=u):N=0,z++,0==--D[x]){if(x===S)break;x=e[a+_[z]]}if(x>E&&(N&g)!==w){for(0===Z&&(Z=E),b+=B,R=1<<(A=x-Z);A+Z<S&&!((R-=D[A+Z])<=0);)A++,R<<=1;if(C+=1<<A,1===t&&C>852||2===t&&C>592)return 1;l[w=N&g]=E<<24|A<<16|b-d}}return 0!==N&&(l[b+N]=x-Z<<24|64<<16),f.bits=E,0}},20062:t=>{t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},11517:(t,e,a)=>{var i=a(62393);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var r=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Array(576);n(l);var d=new Array(60);n(d);var _=new Array(512);n(_);var f=new Array(256);n(f);var u=new Array(29);n(u);var c,w,g,b=new Array(30);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function p(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function v(t){return t<256?_[t]:_[256+(t>>>7)]}function k(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function y(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,k(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function x(t,e,a){y(t,a[2*e],a[2*e+1])}function z(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1}function B(t,e,a){var i,n,r=new Array(16),s=0;for(i=1;i<=15;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=z(r[o]++,o))}}function S(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function E(t){t.bi_valid>8?k(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function A(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function Z(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&A(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!A(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function R(t,e,a){var i,n,o,h,l=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*l]<<8|t.pending_buf[t.d_buf+2*l+1],n=t.pending_buf[t.l_buf+l],l++,0===i?x(t,n,e):(x(t,(o=f[n])+256+1,e),0!==(h=r[o])&&y(t,n-=u[o],h),x(t,o=v(--i),a),0!==(h=s[o])&&y(t,i-=b[o],h))}while(l<t.last_lit);x(t,256,e)}function C(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,h=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<h;a++)0!==r[2*a]?(t.heap[++t.heap_len]=l=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=l<2?++l:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=l,a=t.heap_len>>1;a>=1;a--)Z(t,r,a);n=h;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Z(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,Z(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,i,n,r,s,o,h=e.dyn_tree,l=e.max_code,d=e.stat_desc.static_tree,_=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,w=0;for(r=0;r<=15;r++)t.bl_count[r]=0;for(h[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(r=h[2*h[2*(i=t.heap[a])+1]+1]+1)>c&&(r=c,w++),h[2*i+1]=r,i>l||(t.bl_count[r]++,s=0,i>=u&&(s=f[i-u]),o=h[2*i],t.opt_len+=o*(r+s),_&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==w){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,w-=2}while(w>0);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)(n=t.heap[--a])>l||(h[2*n+1]!==r&&(t.opt_len+=(r-h[2*n+1])*h[2*n],h[2*n+1]=r),i--)}}(t,e),B(r,l,t.bl_count)}function N(t,e,a){var i,n,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<h&&n===s||(o<l?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,r=n,0===s?(h=138,l=3):n===s?(h=6,l=3):(h=7,l=4))}function I(t,e,a){var i,n,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<h&&n===s)){if(o<l)do{x(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==r&&(x(t,n,t.bl_tree),o--),x(t,16,t.bl_tree),y(t,o-3,2)):o<=10?(x(t,17,t.bl_tree),y(t,o-3,3)):(x(t,18,t.bl_tree),y(t,o-11,7));o=0,r=n,0===s?(h=138,l=3):n===s?(h=6,l=3):(h=7,l=4)}}n(b);var O=!1;function D(t,e,a,n){y(t,0+(n?1:0),3),function(t,e,a){E(t),k(t,a),k(t,~a),i.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}(t,e,a)}e._tr_init=function(t){O||(function(){var t,e,a,i,n,h=new Array(16);for(a=0,i=0;i<28;i++)for(u[i]=a,t=0;t<1<<r[i];t++)f[a++]=i;for(f[a-1]=i,n=0,i=0;i<16;i++)for(b[i]=n,t=0;t<1<<s[i];t++)_[n++]=i;for(n>>=7;i<30;i++)for(b[i]=n<<7,t=0;t<1<<s[i]-7;t++)_[256+n++]=i;for(e=0;e<=15;e++)h[e]=0;for(t=0;t<=143;)l[2*t+1]=8,t++,h[8]++;for(;t<=255;)l[2*t+1]=9,t++,h[9]++;for(;t<=279;)l[2*t+1]=7,t++,h[7]++;for(;t<=287;)l[2*t+1]=8,t++,h[8]++;for(B(l,287,h),t=0;t<30;t++)d[2*t+1]=5,d[2*t]=z(t,5);c=new m(l,r,257,286,15),w=new m(d,s,0,30,15),g=new m(new Array(0),o,0,19,7)}(),O=!0),t.l_desc=new p(t.dyn_ltree,c),t.d_desc=new p(t.dyn_dtree,w),t.bl_desc=new p(t.bl_tree,g),t.bi_buf=0,t.bi_valid=0,S(t)},e._tr_stored_block=D,e._tr_flush_block=function(t,e,a,i){var n,r,s=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),C(t,t.l_desc),C(t,t.d_desc),s=function(t){var e;for(N(t,t.dyn_ltree,t.l_desc.max_code),N(t,t.dyn_dtree,t.d_desc.max_code),C(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?D(t,e,a,i):4===t.strategy||r===n?(y(t,2+(i?1:0),3),R(t,l,d)):(y(t,4+(i?1:0),3),function(t,e,a,i){var n;for(y(t,e-257,5),y(t,a-1,5),y(t,i-4,4),n=0;n<i;n++)y(t,t.bl_tree[2*h[n]+1],3);I(t,t.dyn_ltree,e-1),I(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),R(t,t.dyn_ltree,t.dyn_dtree)),S(t),i&&E(t)},e._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(f[a]+256+1)]++,t.dyn_dtree[2*v(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){y(t,2,3),x(t,256,l),function(t){16===t.bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},96742:t=>{t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}}}]);
+//# sourceMappingURL=7864.59d0de32.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7864.59d0de32.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7864.59d0de32.chunk.js","mappings":"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","sources":["../../../node_modules/pako/index.js","../../../node_modules/pako/lib/deflate.js","../../../node_modules/pako/lib/inflate.js","../../../node_modules/pako/lib/utils/common.js","../../../node_modules/pako/lib/utils/strings.js","../../../node_modules/pako/lib/zlib/adler32.js","../../../node_modules/pako/lib/zlib/constants.js","../../../node_modules/pako/lib/zlib/crc32.js","../../../node_modules/pako/lib/zlib/deflate.js","../../../node_modules/pako/lib/zlib/gzheader.js","../../../node_modules/pako/lib/zlib/inffast.js","../../../node_modules/pako/lib/zlib/inflate.js","../../../node_modules/pako/lib/zlib/inftrees.js","../../../node_modules/pako/lib/zlib/messages.js","../../../node_modules/pako/lib/zlib/trees.js","../../../node_modules/pako/lib/zlib/zstream.js"],"sourcesContent":["// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign    = require('./lib/utils/common').assign;\n\nvar deflate   = require('./lib/deflate');\nvar inflate   = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar c            = require('./zlib/constants');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\nvar GZheader     = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== c.Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 aligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n","'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n        );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils         = require('../utils/common');\nvar adler32       = require('./adler32');\nvar crc32         = require('./crc32');\nvar inflate_fast  = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\nvar Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n  this.work = new utils.Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\nfunction inflateInit(strm) {\n  return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = new utils.Buf32(512);\n    distfix = new utils.Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new utils.Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      utils.arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        state.flags = 0;           /* expect zlib header */\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        else if (len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n        state.dmax = 1 << len;\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if (state.flags & 0x0200) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Array(state.head.extra_len);\n              }\n              utils.arraySet(\n                state.head.extra,\n                input,\n                next,\n                // extra field is limited to 65536 bytes\n                // - no need for additional size check\n                copy,\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if (state.flags & 0x0200) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          utils.arraySet(output, input, next, copy, put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inflate_fast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if (_out) {\n            strm.adler = state.check =\n                /*UPDATE(state.check, put - _out, _out);*/\n                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n      state.mode = MEM;\n      return Z_MEM_ERROR;\n    }\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n"],"names":["pako","assign","module","exports","zlib_deflate","utils","strings","msg","ZStream","toString","Object","prototype","Deflate","options","this","level","method","chunkSize","windowBits","memLevel","strategy","to","opt","raw","gzip","err","ended","chunks","strm","avail_out","status","deflateInit2","Error","header","deflateSetHeader","dictionary","dict","string2buf","call","Uint8Array","deflateSetDictionary","_dict_set","deflate","input","deflator","push","result","data","mode","_mode","next_in","avail_in","length","output","Buf8","next_out","onEnd","onData","buf2binstring","shrinkBuf","deflateEnd","chunk","join","flattenChunks","deflateRaw","zlib_inflate","c","GZheader","Inflate","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","Z_FINISH","Z_NO_FLUSH","binstring2buf","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","inflateRaw","ungzip","TYPED_OK","Uint16Array","Int32Array","_has","obj","key","hasOwnProperty","sources","Array","slice","arguments","source","shift","TypeError","p","buf","size","subarray","fnTyped","dest","src","src_offs","len","dest_offs","set","i","l","pos","fnUntyped","concat","apply","setTyped","on","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","String","fromCharCode","__","_utf8len","q","str","c2","m_pos","str_len","buf_len","charCodeAt","max","out","c_len","utf16buf","adler","s1","s2","n","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","crcTable","table","k","makeTable","crc","t","end","configuration_table","trees","adler32","crc32","MAX_MATCH","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","rank","f","zero","flush_pending","s","state","pending","pending_buf","pending_out","total_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","b","putShortMSB","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","window","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","m","more","start","_w_size","window_size","hash_size","head","wrap","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","ret","max_block_size","max_start","deflateInit","old_flush","beg","val","text","hcrc","extra","name","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","next","tmpDict","dictLength","deflateInfo","xflags","extra_len","done","_in","_out","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from","from_source","lencode","distcode","lenbits","distbits","top","dolen","sane","inflate_fast","inflate_table","TYPE","BAD","zswap32","InflateState","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","left","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","hbuf","order","inf_leave","inflateInfo","lbase","lext","dbase","dext","type","lens_index","codes","table_index","incr","fill","low","mask","min","root","curr","drop","used","huff","base","base_index","count","MAXBITS","offs","extra_index","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","w","send_bits","value","send_code","tree","bi_reverse","code","res","gen_codes","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","v","j","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","h","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7865.e02aee95.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7865,8341,722,5484,246,2627,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=7865.e02aee95.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7865.e02aee95.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7865.e02aee95.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7902.f48e3002.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7902],{87902:(e,t,n)=>{n.r(t),n.d(t,{default:()=>H});var r=n(7552),o=n(36715),a=n(5401),s=n(1343),i=n(93117),l=n(61723),d=n(63011),c=n(41578),u=n(75785),m=n(68446),p=n(36422),g=n(49823),A=n(99546),v=n(7720),b=n(31892),y=n(74893),f=n(69500);const h=(0,y.A)((0,f.jsx)("path",{d:"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"InfoOutlined");var x=n(58181),S=n(89003),w=n(45331),C=n(30157),E=n(79698),M=n(92516);const I=(0,r.lazy)((()=>n.e(8556).then(n.bind(n,78556)))),k=(0,u.n9)()((()=>({lockedPluginTooltip:{marginRight:"0.5rem"}})));function R(){const{classes:e}=k();return r.createElement(S.A,{className:e.lockedPluginTooltip,title:"This plugin was installed by an administrator, you cannot remove it."},r.createElement(E.A,null))}const L=(0,m.observer)((function({plugin:e,model:t}){const[n,a]=(0,r.useState)(),{pluginManager:s}=(0,A.getEnv)(t),i=(0,A.getSession)(t),{jbrowse:d,adminMode:c}=i,u=!!(0,M.zA)(i)&&i.sessionPlugins.some((t=>s.pluginMetadata[e.name]?.url===t.url));return r.createElement(r.Fragment,null,n?r.createElement(r.Suspense,{fallback:null},r.createElement(I,{plugin:n,onClose:t=>{if(t){const t=s.pluginMetadata[e.name];c?d.removePlugin(t):(0,M.zA)(i)&&i.removeSessionPlugin(t)}a(void 0)}})):null,r.createElement(w.Ay,{key:e.name},c||u?r.createElement(l.A,{"data-testid":`removePlugin-${e.name}`,onClick:()=>{a(e.name)}},r.createElement(C.A,null)):r.createElement(R,null),r.createElement(o.A,null,e.name)))})),N=(0,m.observer)((function({pluginManager:e,model:t}){const{plugins:n}=e,{filterText:a}=t,s=n.filter((t=>!e.pluginMetadata[t.name]?.isCore));return r.createElement(x.A,null,s.length>0?s.filter((e=>e.name.toLowerCase().includes(a.toLowerCase()))).map((e=>r.createElement(L,{key:e.name,plugin:e,model:t}))):r.createElement(o.A,null,"No plugins currently installed"))}));var j=n(1773),P=n(25355),G=n(87731),$=n(71379);const T=(0,y.A)((0,f.jsx)("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person");var V=n(374),z=n(79529);const F=(0,u.n9)()({card:{margin:"0.5em"},icon:{marginLeft:"0.5em",marginRight:"0.5em"},bold:{fontWeight:600},dataField:{display:"flex",alignItems:"center"}}),B=(0,m.observer)((function({plugin:e,model:t,adminMode:n}){const{classes:s}=F(),i=(0,A.getSession)(t),{pluginManager:l}=(0,A.getEnv)(t),{runtimePluginDefinitions:d}=l,c=d.some((t=>t.url===e.url)),[u,m]=(0,r.useState)(!1),g=c||u,v=(0,p.getParent)(t,3),{jbrowse:b}=v;return r.createElement(j.A,{variant:"outlined",key:e.name,className:s.card},r.createElement(P.A,null,r.createElement(o.A,{variant:"h5"},r.createElement(G.A,{href:`${e.location}#readme`,target:"_blank",rel:"noopener"},e.name)),r.createElement("div",{className:s.dataField},r.createElement(T,{style:{marginRight:"0.5em"}}),r.createElement(o.A,null,e.authors.join(", "))),r.createElement(o.A,{className:s.bold},"Description:"),r.createElement(o.A,null,e.description)),r.createElement($.A,null,r.createElement(a.A,{variant:"contained",disabled:g,startIcon:c?r.createElement(z.A,null):r.createElement(V.A,null),onClick:()=>{n?b.addPlugin({name:e.name,url:e.url}):(0,M.zA)(i)&&i.addSessionPlugin(e),m(!0)}},c?"Installed":"Install")))})),D=(0,r.lazy)((()=>n.e(4755).then(n.bind(n,54755)))),W=(0,u.n9)()((e=>({expandIcon:{color:e.palette.tertiary.contrastText},adminBadge:{borderRadius:3,backgroundColor:e.palette.quaternary.main,padding:"1em",display:"flex",alignContent:"center"},customPluginButton:{margin:"1em auto",display:"flex"}}))),H=(0,m.observer)((function({model:e}){const{classes:t}=W(),{plugins:n,error:u}=function(){const[e,t]=(0,r.useState)(),[n,o]=(0,r.useState)();return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://jbrowse.org/plugin-store/plugins.json");if(!e.ok){const t=await e.text();throw new Error(`HTTP ${e.status} fetching plugins: ${t}`)}const n=await e.json();t(n.plugins)}catch(e){console.error(e),o(e)}})()}),[]),{plugins:e,error:n}}(),[m,y]=(0,r.useState)(!1),{adminMode:f}=(0,A.getSession)(e),{pluginManager:x}=(0,p.getEnv)(e);return r.createElement("div",null,f&&r.createElement(r.Fragment,null,!A.isElectron&&r.createElement("div",{className:t.adminBadge},r.createElement(h,{style:{marginRight:"0.3em"}}),r.createElement(o.A,null,"You are using the ",r.createElement("code",null,"admin-server"),". Any changes you make will be saved to your configuration file. You also have the ability to add custom plugins that are not in the store.")),r.createElement(a.A,{className:t.customPluginButton,variant:"contained",onClick:()=>{y(!0)}},"Add custom plugin"),m?r.createElement(r.Suspense,{fallback:null},r.createElement(D,{onClose:()=>{y(!1)},model:e})):null),r.createElement(s.A,{label:"Filter plugins",value:e.filterText,onChange:t=>{e.setFilterText(t.target.value)},fullWidth:!0,InputProps:{endAdornment:r.createElement(i.A,{position:"end"},r.createElement(l.A,{onClick:()=>{e.clearFilterText()}},r.createElement(b.A,null)))}}),r.createElement(d.A,{defaultExpanded:!0},r.createElement(c.A,{expandIcon:r.createElement(v.A,{className:t.expandIcon})},r.createElement(o.A,{variant:"h5"},"Installed plugins")),r.createElement("div",{style:{margin:"1em"}},r.createElement(N,{pluginManager:x,model:e}))),r.createElement(d.A,{defaultExpanded:!0},r.createElement(c.A,{expandIcon:r.createElement(v.A,{className:t.expandIcon})},r.createElement(o.A,{variant:"h5"},"Available plugins")),u?r.createElement(o.A,{color:"error"},`${u}`):n?n.filter((t=>!(A.isElectron&&t.cjsUrl)&&t.name.toLowerCase().includes(e.filterText.toLowerCase()))).map((t=>r.createElement(B,{key:t.name,plugin:t,model:e,adminMode:!!f}))):r.createElement(g.LoadingEllipses,null)))}))},79529:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(74893),o=n(69500);const a=(0,r.A)((0,o.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},7720:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(74893),o=n(69500);const a=(0,r.A)((0,o.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},79698:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(74893),o=n(69500);const a=(0,r.A)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock")},41578:(e,t,n)=>{n.d(t,{A:()=>f});var r=n(7552),o=n(93878),a=n(70799),s=n(51148),i=n(60129),l=n(4785),d=n(48054),c=n(51132),u=n(33761),m=n(85693);function p(e){return(0,m.Ay)("MuiAccordionSummary",e)}const g=(0,u.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var A=n(69500);const v=(0,s.Ay)(d.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(e,t)=>t.root})((0,i.A)((({theme:e})=>{const t={duration:e.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create(["min-height","background-color"],t),[`&.${g.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${g.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${g.disabled})`]:{cursor:"pointer"},variants:[{props:e=>!e.disableGutters,style:{[`&.${g.expanded}`]:{minHeight:64}}}]}}))),b=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(e,t)=>t.content})((0,i.A)((({theme:e})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create(["margin"],{duration:e.transitions.duration.shortest}),[`&.${g.expanded}`]:{margin:"20px 0"}}}]})))),y=(0,s.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(e,t)=>t.expandIconWrapper})((0,i.A)((({theme:e})=>({display:"flex",color:(e.vars||e).palette.action.active,transform:"rotate(0deg)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest}),[`&.${g.expanded}`]:{transform:"rotate(180deg)"}})))),f=r.forwardRef((function(e,t){const n=(0,l.b)({props:e,name:"MuiAccordionSummary"}),{children:s,className:i,expandIcon:d,focusVisibleClassName:u,onClick:m,...g}=n,{disabled:f=!1,disableGutters:h,expanded:x,toggle:S}=r.useContext(c.A),w={...n,expanded:x,disabled:f,disableGutters:h},C=(e=>{const{classes:t,expanded:n,disabled:r,disableGutters:o}=e,s={root:["root",n&&"expanded",r&&"disabled",!o&&"gutters"],focusVisible:["focusVisible"],content:["content",n&&"expanded",!o&&"contentGutters"],expandIconWrapper:["expandIconWrapper",n&&"expanded"]};return(0,a.A)(s,p,t)})(w);return(0,A.jsxs)(v,{focusRipple:!1,disableRipple:!0,disabled:f,component:"div","aria-expanded":x,className:(0,o.A)(C.root,i),focusVisibleClassName:(0,o.A)(C.focusVisible,u),onClick:e=>{S&&S(e),m&&m(e)},ref:t,ownerState:w,...g,children:[(0,A.jsx)(b,{className:C.content,ownerState:w,children:s}),d&&(0,A.jsx)(y,{className:C.expandIconWrapper,ownerState:w,children:d})]})}))},1773:(e,t,n)=>{n.d(t,{A:()=>m});var r=n(7552),o=n(93878),a=n(70799),s=n(51148),i=n(4785),l=n(943),d=n(50885),c=n(69500);const u=(0,s.Ay)(l.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),m=r.forwardRef((function(e,t){const n=(0,i.b)({props:e,name:"MuiCard"}),{className:r,raised:s=!1,...l}=n,m={...n,raised:s},p=(e=>{const{classes:t}=e;return(0,a.A)({root:["root"]},d.T,t)})(m);return(0,c.jsx)(u,{className:(0,o.A)(p.root,r),elevation:s?8:void 0,ref:t,ownerState:m,...l})}))},50885:(e,t,n)=>{n.d(t,{A:()=>s,T:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiCard",e)}const s=(0,r.A)("MuiCard",["root"])},71379:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(7552),o=n(93878),a=n(70799),s=n(51148),i=n(4785),l=n(93863),d=n(69500);const c=(0,s.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),u=r.forwardRef((function(e,t){const n=(0,i.b)({props:e,name:"MuiCardActions"}),{disableSpacing:r=!1,className:s,...u}=n,m={...n,disableSpacing:r},p=(e=>{const{classes:t,disableSpacing:n}=e,r={root:["root",!n&&"spacing"]};return(0,a.A)(r,l.E,t)})(m);return(0,d.jsx)(c,{className:(0,o.A)(p.root,s),ownerState:m,ref:t,...u})}))},93863:(e,t,n)=>{n.d(t,{A:()=>s,E:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiCardActions",e)}const s=(0,r.A)("MuiCardActions",["root","spacing"])},25355:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(7552),o=n(93878),a=n(70799),s=n(51148),i=n(4785),l=n(61823),d=n(69500);const c=(0,s.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:16,"&:last-child":{paddingBottom:24}}),u=r.forwardRef((function(e,t){const n=(0,i.b)({props:e,name:"MuiCardContent"}),{className:r,component:s="div",...u}=n,m={...n,component:s},p=(e=>{const{classes:t}=e;return(0,a.A)({root:["root"]},l.h,t)})(m);return(0,d.jsx)(c,{as:s,className:(0,o.A)(p.root,r),ownerState:m,ref:t,...u})}))},61823:(e,t,n)=>{n.d(t,{A:()=>s,h:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiCardContent",e)}const s=(0,r.A)("MuiCardContent",["root"])},87731:(e,t,n)=>{n.d(t,{A:()=>x});var r=n(7552),o=n(93878),a=n(72639),s=n(70799),i=n(91527),l=n(15622),d=n(51148),c=n(48231),u=n(60129),m=n(58520),p=n(4785),g=n(36715),A=n(58161),v=n(39995);const b=({theme:e,ownerState:t})=>{const n=t.color,r=(0,v.Yn)(e,`palette.${n}`,!1)||t.color,o=(0,v.Yn)(e,`palette.${n}Channel`);return"vars"in e&&o?`rgba(${o} / 0.4)`:(0,a.X4)(r,.4)};var y=n(69500);const f={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},h=(0,d.Ay)(g.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`underline${(0,l.A)(n.underline)}`],"button"===n.component&&t.button]}})((0,u.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:t})=>"always"===e&&"inherit"!==t.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,m.A)()).map((([t])=>({props:{underline:"always",color:t},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.4)`:(0,a.X4)(e.palette[t].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${A.A.focusVisible}`]:{outline:"auto"}}}]})))),x=r.forwardRef((function(e,t){const n=(0,p.b)({props:e,name:"MuiLink"}),a=(0,c.A)(),{className:d,color:u="primary",component:m="a",onBlur:g,onFocus:v,TypographyClasses:x,underline:S="always",variant:w="inherit",sx:C,...E}=n,[M,I]=r.useState(!1),k={...n,color:u,component:m,focusVisible:M,underline:S,variant:w},R=(e=>{const{classes:t,component:n,focusVisible:r,underline:o}=e,a={root:["root",`underline${(0,l.A)(o)}`,"button"===n&&"button",r&&"focusVisible"]};return(0,s.A)(a,A.t,t)})(k);return(0,y.jsx)(h,{color:u,className:(0,o.A)(R.root,d),classes:x,component:m,onBlur:e=>{(0,i.A)(e.target)||I(!1),g&&g(e)},onFocus:e=>{(0,i.A)(e.target)&&I(!0),v&&v(e)},ref:t,ownerState:k,variant:w,...E,sx:[...void 0===f[u]?[{color:u}]:[],...Array.isArray(C)?C:[C]],style:{...E.style,..."always"===S&&"inherit"!==u&&!f[u]&&{"--Link-underlineColor":b({theme:a,ownerState:k})}}})}))},58161:(e,t,n)=>{n.d(t,{A:()=>s,t:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiLink",e)}const s=(0,r.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])},45331:(e,t,n)=>{n.d(t,{Ay:()=>f});var r=n(7552),o=n(93878),a=n(70799),s=n(23879),i=n(51148),l=n(60129),d=n(4785),c=n(3755),u=n(51584),m=n(57406),p=n(74823),g=n(2451),A=n(77999),v=n(69500);const b=(0,i.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters,!n.disablePadding&&t.padding,n.hasSecondaryAction&&t.secondaryAction]}})((0,l.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${g.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),y=(0,i.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),f=r.forwardRef((function(e,t){const n=(0,d.b)({props:e,name:"MuiListItem"}),{alignItems:i="center",children:l,className:g,component:f,components:h={},componentsProps:x={},ContainerComponent:S="li",ContainerProps:{className:w,...C}={},dense:E=!1,disableGutters:M=!1,disablePadding:I=!1,divider:k=!1,secondaryAction:R,slotProps:L={},slots:N={},...j}=n,P=r.useContext(m.A),G=r.useMemo((()=>({dense:E||P.dense||!1,alignItems:i,disableGutters:M})),[i,P.dense,E,M]),$=r.useRef(null),T=r.Children.toArray(l),V=T.length&&(0,c.A)(T[T.length-1],["ListItemSecondaryAction"]),z={...n,alignItems:i,dense:G.dense,disableGutters:M,disablePadding:I,divider:k,hasSecondaryAction:V},F=(e=>{const{alignItems:t,classes:n,dense:r,disableGutters:o,disablePadding:s,divider:i,hasSecondaryAction:l}=e,d={root:["root",r&&"dense",!o&&"gutters",!s&&"padding",i&&"divider","flex-start"===t&&"alignItemsFlexStart",l&&"secondaryAction"],container:["container"]};return(0,a.A)(d,p._,n)})(z),B=(0,u.A)($,t),D=N.root||h.Root||b,W=L.root||x.root||{},H={className:(0,o.A)(F.root,W.className,g),...j};let _=f||"li";return V?(_=H.component||f?_:"div","li"===S&&("li"===_?_="div":"li"===H.component&&(H.component="div")),(0,v.jsx)(m.A.Provider,{value:G,children:(0,v.jsxs)(y,{as:S,className:(0,o.A)(F.container,w),ref:B,ownerState:z,...C,children:[(0,v.jsx)(D,{...W,...!(0,s.A)(D)&&{as:_,ownerState:{...z,...W.ownerState}},...H,children:T}),T.pop()]})})):(0,v.jsx)(m.A.Provider,{value:G,children:(0,v.jsxs)(D,{...W,as:_,ref:B,...!(0,s.A)(D)&&{ownerState:{...z,...W.ownerState}},...H,children:[T,R&&(0,v.jsx)(A.A,{children:R})]})})}))},74823:(e,t,n)=>{n.d(t,{A:()=>s,_:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiListItem",e)}const s=(0,r.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},2451:(e,t,n)=>{n.d(t,{A:()=>s,Y:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiListItemButton",e)}const s=(0,r.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,n)=>{n.d(t,{A:()=>p});var r=n(7552),o=n(93878),a=n(70799),s=n(51148),i=n(4785),l=n(57406),d=n(87739),c=n(69500);const u=(0,s.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),m=r.forwardRef((function(e,t){const n=(0,i.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:s,...m}=n,p=r.useContext(l.A),g={...n,disableGutters:p.disableGutters},A=(e=>{const{disableGutters:t,classes:n}=e,r={root:["root",t&&"disableGutters"]};return(0,a.A)(r,d.g,n)})(g);return(0,c.jsx)(u,{className:(0,o.A)(A.root,s),ownerState:g,ref:t,...m})}));m.muiName="ListItemSecondaryAction";const p=m},87739:(e,t,n)=>{n.d(t,{A:()=>s,g:()=>a});var r=n(33761),o=n(85693);function a(e){return(0,o.Ay)("MuiListItemSecondaryAction",e)}const s=(0,r.A)("MuiListItemSecondaryAction",["root","disableGutters"])}}]);
+//# sourceMappingURL=7902.f48e3002.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7902.f48e3002.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7902.f48e3002.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/InfoOutlined.js","../../../plugins/data-management/src/PluginStoreWidget/components/InstalledPlugin.tsx","../../../plugins/data-management/src/PluginStoreWidget/components/InstalledPluginsList.tsx","../../../node_modules/@mui/icons-material/esm/Person.js","../../../plugins/data-management/src/PluginStoreWidget/components/PluginCard.tsx","../../../plugins/data-management/src/PluginStoreWidget/components/PluginStoreWidget.tsx","../../../plugins/data-management/src/PluginStoreWidget/components/util.ts","../../../node_modules/@mui/icons-material/esm/Check.js","../../../node_modules/@mui/icons-material/esm/ExpandMore.js","../../../node_modules/@mui/icons-material/esm/Lock.js","../../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js","../../../node_modules/@mui/material/CardActions/CardActions.js","../../../node_modules/@mui/material/CardActions/cardActionsClasses.js","../../../node_modules/@mui/material/CardContent/CardContent.js","../../../node_modules/@mui/material/CardContent/cardContentClasses.js","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\"\n}), 'InfoOutlined');","import React, { Suspense, lazy, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { IconButton, ListItem, Tooltip, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nimport CloseIcon from '@mui/icons-material/Close'\nimport LockIcon from '@mui/icons-material/Lock'\n\nimport { getEnv, getSession } from '@jbrowse/core/util'\nimport {\n  BasePlugin,\n  isSessionWithSessionPlugins,\n} from '@jbrowse/core/util/types'\n\n// locals\nimport { PluginStoreModel } from '../model'\n\n// lazies\nconst DeletePluginDialog = lazy(() => import('./DeletePluginDialog'))\n\nconst useStyles = makeStyles()(() => ({\n  lockedPluginTooltip: {\n    marginRight: '0.5rem',\n  },\n}))\n\nfunction LockedPlugin() {\n  const { classes } = useStyles()\n  return (\n    <Tooltip\n      className={classes.lockedPluginTooltip}\n      title=\"This plugin was installed by an administrator, you cannot remove it.\"\n    >\n      <LockIcon />\n    </Tooltip>\n  )\n}\n\nconst InstalledPlugin = observer(function ({\n  plugin,\n  model,\n}: {\n  plugin: BasePlugin\n  model: PluginStoreModel\n}) {\n  const [dialogPlugin, setDialogPlugin] = useState<string>()\n  const { pluginManager } = getEnv(model)\n  const session = getSession(model)\n  const { jbrowse, adminMode } = session\n  const isSessionPlugin = isSessionWithSessionPlugins(session)\n    ? session.sessionPlugins.some(\n        p => pluginManager.pluginMetadata[plugin.name]?.url === p.url,\n      )\n    : false\n\n  return (\n    <>\n      {dialogPlugin ? (\n        <Suspense fallback={null}>\n          <DeletePluginDialog\n            plugin={dialogPlugin}\n            onClose={name => {\n              if (name) {\n                const pluginMetadata = pluginManager.pluginMetadata[plugin.name]\n\n                if (adminMode) {\n                  jbrowse.removePlugin(pluginMetadata)\n                } else if (isSessionWithSessionPlugins(session)) {\n                  session.removeSessionPlugin(pluginMetadata)\n                }\n              }\n              setDialogPlugin(undefined)\n            }}\n          />\n        </Suspense>\n      ) : null}\n      <ListItem key={plugin.name}>\n        {adminMode || isSessionPlugin ? (\n          <IconButton\n            data-testid={`removePlugin-${plugin.name}`}\n            onClick={() => {\n              setDialogPlugin(plugin.name)\n            }}\n          >\n            <CloseIcon />\n          </IconButton>\n        ) : (\n          <LockedPlugin />\n        )}\n        <Typography>{plugin.name}</Typography>\n      </ListItem>\n    </>\n  )\n})\n\nexport default InstalledPlugin\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { List, Typography } from '@mui/material'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\n// locals\nimport { PluginStoreModel } from '../model'\nimport InstalledPlugin from './InstalledPlugin'\n\nconst InstalledPluginsList = observer(function InstalledPluginsList({\n  pluginManager,\n  model,\n}: {\n  pluginManager: PluginManager\n  model: PluginStoreModel\n}) {\n  const { plugins } = pluginManager\n  const { filterText } = model\n\n  const externalPlugins = plugins.filter(\n    p => !pluginManager.pluginMetadata[p.name]?.isCore,\n  )\n\n  return (\n    <List>\n      {externalPlugins.length > 0 ? (\n        externalPlugins\n          .filter(p => p.name.toLowerCase().includes(filterText.toLowerCase()))\n          .map(p => <InstalledPlugin key={p.name} plugin={p} model={model} />)\n      ) : (\n        <Typography>No plugins currently installed</Typography>\n      )}\n    </List>\n  )\n})\n\nexport default InstalledPluginsList\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4\"\n}), 'Person');","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { getSession, getEnv } from '@jbrowse/core/util'\nimport {\n  JBrowsePlugin,\n  isSessionWithSessionPlugins,\n} from '@jbrowse/core/util/types'\nimport {\n  Card,\n  CardActions,\n  CardContent,\n  Button,\n  Link,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport PersonIcon from '@mui/icons-material/Person'\nimport AddIcon from '@mui/icons-material/Add'\nimport CheckIcon from '@mui/icons-material/Check'\n\n// locals\nimport { PluginStoreModel } from '../model'\n\nconst useStyles = makeStyles()({\n  card: {\n    margin: '0.5em',\n  },\n  icon: {\n    marginLeft: '0.5em',\n    marginRight: '0.5em',\n  },\n  bold: {\n    fontWeight: 600,\n  },\n  dataField: {\n    display: 'flex',\n    alignItems: 'center',\n  },\n})\n\nconst PluginCard = observer(function PluginCard({\n  plugin,\n  model,\n  adminMode,\n}: {\n  plugin: JBrowsePlugin\n  model: PluginStoreModel\n  adminMode: boolean\n}) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { pluginManager } = getEnv(model)\n  const { runtimePluginDefinitions } = pluginManager\n  // @ts-expect-error\n  const isInstalled = runtimePluginDefinitions.some(d => d.url === plugin.url)\n  const [tempDisabled, setTempDisabled] = useState(false)\n  const disableButton = isInstalled || tempDisabled\n\n  const rootModel = getParent<any>(model, 3)\n  const { jbrowse } = rootModel\n\n  return (\n    <Card variant=\"outlined\" key={plugin.name} className={classes.card}>\n      <CardContent>\n        <Typography variant=\"h5\">\n          <Link\n            href={`${plugin.location}#readme`}\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            {plugin.name}\n          </Link>\n        </Typography>\n        <div className={classes.dataField}>\n          <PersonIcon style={{ marginRight: '0.5em' }} />\n          <Typography>{plugin.authors.join(', ')}</Typography>\n        </div>\n        <Typography className={classes.bold}>Description:</Typography>\n        <Typography>{plugin.description}</Typography>\n      </CardContent>\n      <CardActions>\n        <Button\n          variant=\"contained\"\n          disabled={disableButton}\n          startIcon={isInstalled ? <CheckIcon /> : <AddIcon />}\n          onClick={() => {\n            if (adminMode) {\n              jbrowse.addPlugin({ name: plugin.name, url: plugin.url })\n            } else if (isSessionWithSessionPlugins(session)) {\n              session.addSessionPlugin(plugin)\n            }\n            setTempDisabled(true)\n          }}\n        >\n          {isInstalled ? 'Installed' : 'Install'}\n        </Button>\n      </CardActions>\n    </Card>\n  )\n})\n\nexport default PluginCard\n","import React, { useState, lazy, Suspense } from 'react'\nimport {\n  Accordion,\n  AccordionSummary,\n  Button,\n  IconButton,\n  InputAdornment,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getEnv } from 'mobx-state-tree'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport { getSession, isElectron } from '@jbrowse/core/util'\n\n// icons\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\nimport ClearIcon from '@mui/icons-material/Clear'\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'\n\n// locals\nimport InstalledPluginsList from './InstalledPluginsList'\nimport PluginCard from './PluginCard'\nimport { PluginStoreModel } from '../model'\nimport { useFetchPlugins } from './util'\n\n// lazies\nconst AddCustomPluginDialog = lazy(() => import('./AddCustomPluginDialog'))\n\nconst useStyles = makeStyles()(theme => ({\n  expandIcon: {\n    color: theme.palette.tertiary.contrastText,\n  },\n  adminBadge: {\n    borderRadius: 3,\n    backgroundColor: theme.palette.quaternary.main,\n    padding: '1em',\n    display: 'flex',\n    alignContent: 'center',\n  },\n  customPluginButton: {\n    margin: '1em auto',\n    display: 'flex',\n  },\n}))\n\nconst PluginStoreWidget = observer(function ({\n  model,\n}: {\n  model: PluginStoreModel\n}) {\n  const { classes } = useStyles()\n  const { plugins, error } = useFetchPlugins()\n  const [open, setOpen] = useState(false)\n  const { adminMode } = getSession(model)\n  const { pluginManager } = getEnv(model)\n\n  return (\n    <div>\n      {adminMode && (\n        <>\n          {!isElectron && (\n            <div className={classes.adminBadge}>\n              <InfoOutlinedIcon style={{ marginRight: '0.3em' }} />\n              <Typography>\n                You are using the <code>admin-server</code>. Any changes you\n                make will be saved to your configuration file. You also have the\n                ability to add custom plugins that are not in the store.\n              </Typography>\n            </div>\n          )}\n          <Button\n            className={classes.customPluginButton}\n            variant=\"contained\"\n            onClick={() => {\n              setOpen(true)\n            }}\n          >\n            Add custom plugin\n          </Button>\n          {open ? (\n            <Suspense fallback={null}>\n              <AddCustomPluginDialog\n                onClose={() => {\n                  setOpen(false)\n                }}\n                model={model}\n              />\n            </Suspense>\n          ) : null}\n        </>\n      )}\n      <TextField\n        label=\"Filter plugins\"\n        value={model.filterText}\n        onChange={event => {\n          model.setFilterText(event.target.value)\n        }}\n        fullWidth\n        InputProps={{\n          endAdornment: (\n            <InputAdornment position=\"end\">\n              <IconButton\n                onClick={() => {\n                  model.clearFilterText()\n                }}\n              >\n                <ClearIcon />\n              </IconButton>\n            </InputAdornment>\n          ),\n        }}\n      />\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Installed plugins</Typography>\n        </AccordionSummary>\n        <div style={{ margin: '1em' }}>\n          <InstalledPluginsList pluginManager={pluginManager} model={model} />\n        </div>\n      </Accordion>\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Available plugins</Typography>\n        </AccordionSummary>\n        {error ? (\n          <Typography color=\"error\">{`${error}`}</Typography>\n        ) : plugins ? (\n          plugins\n            .filter(plugin => {\n              // If plugin only has cjsUrl, don't display outside desktop\n              return (\n                !(isElectron && plugin.cjsUrl) &&\n                plugin.name\n                  .toLowerCase()\n                  .includes(model.filterText.toLowerCase())\n              )\n            })\n            .map(plugin => (\n              <PluginCard\n                key={plugin.name}\n                plugin={plugin}\n                model={model}\n                adminMode={!!adminMode}\n              />\n            ))\n        ) : (\n          <LoadingEllipses />\n        )}\n      </Accordion>\n    </div>\n  )\n})\n\nexport default PluginStoreWidget\n","import { useState, useEffect } from 'react'\n\nimport { JBrowsePlugin } from '@jbrowse/core/util/types'\n\nexport function useFetchPlugins() {\n  const [plugins, setPlugins] = useState<JBrowsePlugin[]>()\n  const [error, setError] = useState<unknown>()\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        const res = await fetch('https://jbrowse.org/plugin-store/plugins.json')\n        if (!res.ok) {\n          const err = await res.text()\n          throw new Error(`HTTP ${res.status} fetching plugins: ${err}`)\n        }\n        const array = await res.json()\n        setPlugins(array.plugins)\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [])\n  return { plugins, error }\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z\"\n}), 'Lock');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport AccordionContext from \"../Accordion/AccordionContext.js\";\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from \"./accordionSummaryClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    },\n    variants: [{\n      props: props => !props.disableGutters,\n      style: {\n        [`&.${accordionSummaryClasses.expanded}`]: {\n          minHeight: 64\n        }\n      }\n    }]\n  };\n}));\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0',\n  variants: [{\n    props: props => !props.disableGutters,\n    style: {\n      transition: theme.transitions.create(['margin'], {\n        duration: theme.transitions.duration.shortest\n      }),\n      [`&.${accordionSummaryClasses.expanded}`]: {\n        margin: '20px 0'\n      }\n    }\n  }]\n})));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n})));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n    children,\n    className,\n    expandIcon,\n    focusVisibleClassName,\n    onClick,\n    ...other\n  } = props;\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    expanded,\n    disabled,\n    disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, {\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardActionsUtilityClass } from \"./cardActionsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getCardActionsUtilityClass, classes);\n};\nconst CardActionsRoot = styled('div', {\n  name: 'MuiCardActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  variants: [{\n    props: {\n      disableSpacing: false\n    },\n    style: {\n      '& > :not(style) ~ :not(style)': {\n        marginLeft: 8\n      }\n    }\n  }]\n});\nconst CardActions = /*#__PURE__*/React.forwardRef(function CardActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardActions'\n  });\n  const {\n    disableSpacing = false,\n    className,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableSpacing\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardActionsRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActions', slot);\n}\nconst cardActionsClasses = generateUtilityClasses('MuiCardActions', ['root', 'spacing']);\nexport default cardActionsClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 16,\n  '&:last-child': {\n    paddingBottom: 24\n  }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;"],"names":["createSvgIcon","d","DeletePluginDialog","lazy","useStyles","makeStyles","lockedPluginTooltip","marginRight","LockedPlugin","classes","React","Tooltip","className","title","LockIcon","observer","plugin","model","dialogPlugin","setDialogPlugin","useState","pluginManager","getEnv","session","getSession","jbrowse","adminMode","isSessionPlugin","isSessionWithSessionPlugins","sessionPlugins","some","p","pluginMetadata","name","url","Suspense","fallback","onClose","removePlugin","removeSessionPlugin","undefined","ListItem","key","IconButton","onClick","CloseIcon","Typography","plugins","filterText","externalPlugins","filter","isCore","List","length","toLowerCase","includes","map","InstalledPlugin","card","margin","icon","marginLeft","bold","fontWeight","dataField","display","alignItems","runtimePluginDefinitions","isInstalled","tempDisabled","setTempDisabled","disableButton","rootModel","getParent","Card","variant","CardContent","Link","href","location","target","rel","PersonIcon","style","authors","join","description","CardActions","Button","disabled","startIcon","CheckIcon","AddIcon","addPlugin","addSessionPlugin","AddCustomPluginDialog","theme","expandIcon","color","palette","tertiary","contrastText","adminBadge","borderRadius","backgroundColor","quaternary","main","padding","alignContent","customPluginButton","error","setPlugins","setError","useEffect","res","fetch","ok","err","text","Error","status","array","json","e","console","useFetchPlugins","open","setOpen","isElectron","InfoOutlinedIcon","TextField","label","value","onChange","event","setFilterText","fullWidth","InputProps","endAdornment","InputAdornment","position","clearFilterText","ClearIcon","Accordion","defaultExpanded","AccordionSummary","ExpandMoreIcon","InstalledPluginsList","cjsUrl","PluginCard","LoadingEllipses","getAccordionSummaryUtilityClass","slot","generateUtilityClass","generateUtilityClasses","AccordionSummaryRoot","styled","ButtonBase","overridesResolver","props","styles","root","memoTheme","transition","duration","transitions","shortest","minHeight","spacing","create","focusVisible","vars","action","focus","opacity","disabledOpacity","cursor","variants","disableGutters","expanded","AccordionSummaryContent","content","flexGrow","AccordionSummaryExpandIconWrapper","expandIconWrapper","active","transform","inProps","ref","children","focusVisibleClassName","other","toggle","AccordionContext","A","ownerState","slots","composeClasses","useUtilityClasses","focusRipple","disableRipple","component","clsx","CardRoot","overflow","raised","elevation","getCardUtilityClass","CardActionsRoot","disableSpacing","getCardActionsUtilityClass","CardContentRoot","paddingBottom","as","getCardContentUtilityClass","transformedColor","channelColor","v6Colors","primary","secondary","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","capitalize","underline","button","textDecoration","textDecorationColor","Object","entries","createSimplePaletteValueFilter","mainChannel","primaryChannel","secondaryChannel","WebkitTapHighlightColor","outline","border","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","useTheme","onBlur","onFocus","TypographyClasses","sx","setFocusVisible","isFocusVisible","Array","isArray","getLinkUtilityClass","ListItemRoot","dense","alignItemsFlexStart","divider","gutters","disablePadding","hasSecondaryAction","secondaryAction","justifyContent","width","boxSizing","textAlign","paddingTop","paddingLeft","paddingRight","borderBottom","backgroundClip","hover","ListItemContainer","container","childrenProp","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","context","childContext","listItemRef","toArray","handleRef","Root","rootProps","componentProps","Component","Provider","pop","getListItemUtilityClass","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7909.8f1d759d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7909],{7909:(s,e,a)=>{a.r(e),a.d(e,{accordionClasses:()=>l.A,default:()=>b.A,getAccordionUtilityClass:()=>l.d});var b=a(63011),l=a(46263)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7911.764ec401.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 7911.764ec401.chunk.js.LICENSE.txt */
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7911],{77911:(e,r,t)=>{"use strict";t.d(r,{fetchJb1:()=>b});var o=t(99834),s=t(51687),n=t.n(s),i=t(76099),a=t.n(i),c=t(99546);function u(e){return e?.label&&"string"==typeof e.label}function l(e,r){for(const t of Object.keys(r))t in e&&"object"==typeof r[t]&&"object"==typeof e[t]?l(e[t],r[t]):void 0!==e[t]&&void 0===r[t]||(e[t]=r[t]);return e}function f(e){if(!e||"object"!=typeof e||"[object Function]"===Object.prototype.toString.call(e))return e;if(e.nodeType&&"cloneNode"in e)return e.cloneNode(!0);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);let r;if(Array.isArray(e)){r=[];for(let t=0,o=e.length;t<o;++t)t in e&&(r[t]=f(e[t]))}else r=e.constructor?new e.constructor:{};return function(e,r,t){const o={};for(const s in r){const n=r[s];s in e&&(e[s]===n||s in o&&o[s]===n)||(e[s]=t?t(n):n)}return e}(r,e,f)}function p(e,r){if(e.tracks&&!Array.isArray(e.tracks))if(u(e.tracks))e.tracks=[e.tracks];else{const r=[];for(const t of Object.keys(e.tracks)){const o=e.tracks[t];u(o)?r.push(o):r.push({label:t,...o})}e.tracks=r}const t=e.trackMetadata;if(t?.sources){if("string"==typeof t.sources&&(t.sources=[t.sources]),o=t.sources,o?.url&&"string"==typeof o.url&&(t.sources=[t.sources]),!Array.isArray(t.sources)){const e=[];for(const r of Object.keys(t.sources)){const o=t.sources[r];"name"in o||(o.name=r),e.push(o)}t.sources=e}t.sources=t.sources.map((e=>{if("string"==typeof e){const r={url:e},t=/\.(\w+)$/.exec(e);return t&&(r.type=t[1].toLowerCase()),r}return e}))}var o;if(e.sourceUrl=e.sourceUrl||r,e.sourceUrl.startsWith("/")&&(e.sourceUrl=new URL(e.sourceUrl,window.location.href).href),e.baseUrl=e.baseUrl||new URL(".",e.sourceUrl).href,e.baseUrl.length&&!e.baseUrl.endsWith("/")&&(e.baseUrl+="/"),e.sourceUrl){const r=[];e.tracks&&r.push(...e.tracks),e.stores&&r.push(...Object.values(e.stores)),e.names&&r.push(e.names),r.forEach((r=>{r.baseUrl||(r.baseUrl=e.baseUrl||"/")})),e.refSeqs&&"string"==typeof e.refSeqs&&(e.refSeqs=new URL(e.refSeqs,e.sourceUrl).href),e.nameUrl&&(e.nameUrl=new URL(e.nameUrl,e.sourceUrl).href)}return e.stores=e.stores||{},(e.tracks||[]).forEach((r=>{if(r.config){const e=r.config;r.config=void 0,r={...e,...r}}if(r.store)return;let t;t="FeatureTrack"===r.type?"JBrowse/View/Track/HTMLFeatures":"ImageTrack"===r.type?"JBrowse/View/Track/FixedImage":"ImageTrack.Wiggle"===r.type?"JBrowse/View/Track/FixedImage/Wiggle":"SequenceTrack"===r.type?"JBrowse/View/Track/Sequence":d("JBrowse/View/Track",r.type),r.type=t,y(e,r),r.histograms&&(r.histograms.baseUrl||(r.histograms.baseUrl=r.baseUrl),y(e,r.histograms))})),e}function d(e,r){return r?(r.includes("/")||(r=`${e}/${r}`),r=r.replace(/^\//,"")):""}function y(e,r){const{urlTemplate:t=""}=r,o=r.storeClass?d("JBrowse/Store",r.storeClass):function(e,r){return e?e.type?.includes("/FixedImage")?"JBrowse/Store/TiledImage/Fixed"+(0===e.backendVersion?"_v0":""):/\.jsonz?$/i.test(r)?"JBrowse/Store/SeqFeature/NCList"+(0===e.backendVersion?"_v0":""):/\.bam$/i.test(r)?"JBrowse/Store/SeqFeature/BAM":/\.cram$/i.test(r)?"JBrowse/Store/SeqFeature/CRAM":/\.gff3?$/i.test(r)?"JBrowse/Store/SeqFeature/GFF3":/\.bed$/i.test(r)?"JBrowse/Store/SeqFeature/BED":/\.vcf.b?gz$/i.test(r)?"JBrowse/Store/SeqFeature/VCFTabix":/\.gff3?.b?gz$/i.test(r)?"JBrowse/Store/SeqFeature/GFF3Tabix":/\.bed.b?gz$/i.test(r)?"JBrowse/Store/SeqFeature/BEDTabix":/\.(bw|bigwig)$/i.test(r)?"JBrowse/Store/SeqFeature/BigWig":/\.(bb|bigbed)$/i.test(r)?"JBrowse/Store/SeqFeature/BigBed":/\.(fa|fasta)$/i.test(r)?"JBrowse/Store/SeqFeature/IndexedFasta":/\.(fa|fasta)\.b?gz$/i.test(r)?"JBrowse/Store/SeqFeature/BgzipIndexedFasta":/\.2bit$/i.test(r)?"JBrowse/Store/SeqFeature/TwoBit":e.type?.endsWith("/Sequence")?"JBrowse/Store/Sequence/StaticChunked":"":""}(r,t);if(!o)return void console.warn(`Unable to determine an appropriate data store to use with track '${r.label}', please explicitly specify a storeClass in the configuration.`);const s={...r,type:o};s.name="JBrowse/Store/Sequence/StaticChunked"!==o&&"JBrowse/Store/Sequence/IndexedFasta"!==o&&"JBrowse/Store/SeqFeature/IndexedFasta"!==o&&"JBrowse/Store/SeqFeature/BgzipIndexedFasta"!==o&&"JBrowse/Store/SeqFeature/TwoBit"!==o&&"JBrowse/Store/Sequence/TwoBit"!==o&&!r.useAsRefSeqStore||e.stores?.refseqs?`store${(0,c.objectHash)(s)}`:"refseqs",e.stores||(e.stores={}),e.stores[s.name]=s,r.store=s.name}function w(e){return void 0!==e.uri}function h(e){return void 0!==e.localPath}async function b(e={uri:"",locationType:"UriLocation"},r={include:["{dataRoot}/trackList.json","{dataRoot}/tracks.conf"]},t={uri:"",locationType:"UriLocation"}){const o="uri"in e?"uri":"localPath",s=JSON.parse(JSON.stringify(e));let n="";if(w(e)&&(n=e.uri),h(e)&&(n=e.localPath),n.endsWith("/")&&(s[o]=n.slice(0,-1)),w(t)&&t.uri||h(t)&&t.localPath){const e="uri"in t?"uri":"localPath";let r="";w(t)&&(r=t.uri),h(t)&&(r=t.localPath),r.endsWith("/")&&(r=r.slice(0,-1));let n={};for(const t of["jbrowse.conf","jbrowse_conf.json"]){let o=null;try{o=await m({[e]:`${r}/${t}`})}catch(e){console.error(`tried to access ${r}/${t}, but failed`)}n=v(n,o)||{}}return s[o]&&(n.dataRoot=s[o]),g(n)}const i=p(r,window.location.href);return s[o]&&(i.dataRoot=s[o]),g(i)}async function g(e,r=B){const t=l(f(r),e);let o=await async function(e){return async function r(t,o){const s=t.sourceUrl||t.baseUrl;if(!s)throw new Error(`Could not determine source URL: ${JSON.stringify(t)}`);const n=v(f(o),t);if(!n)throw new Error("Problem merging configs");const i=j(function(e){return e?(Array.isArray(e)||(e=[e]),e.map((e=>("string"==typeof e&&(e={url:e}),"format"in e||(e.format=e.url.endsWith(".conf")?"conf":"JB_json"),"JB_json"!==e.format||"version"in e||(e.version=1),e)))):[]}(t.include||[]),n);t.include=void 0;const a=i.map((async t=>(t.cacheBuster=e.cacheBuster,r(await m({uri:new URL(t.url,s).href,locationType:"UriLocation"}),n))));return(await Promise.all(a)).forEach((e=>{t=v(t,e)||t})),t}(e=f(e),{})}(t);return o=v(o,e)||o,j(o,o),function(e){if(e.tracks||(e.tracks=[]),!e.baseUrl)throw new Error("Must provide a `baseUrl` in configuration")}(o),o}async function m(e){const r=await(0,o.openLocation)(e).readFile("utf8");return w(e)?S(r,e.uri):h(e)?S(r,e.localPath):S(r)}function S(e,r=""){return e.trim().startsWith("{")?function(e,r){if("string"==typeof e){let t;try{t=JSON.parse(e)}catch(e){throw new Error(`${e} when parsing configuration.`)}return p(t,r)}return p(e,r)}(e,r):function(e,r){let t;try{t=function(e,r){let t,o,s,i=[];const c={tracks:{}};let u;function l(){if(void 0!==s){let e;try{const r=/^json:(.+)/i.exec(s);if(e=r?JSON.parse(r[1]):/^[+-]?[\d.,]+([eE][-+]?\d+)?$/.test(s)?Number.parseFloat(s.replaceAll(",","")):s,!t)throw new Error(`Error parsing in section ${i.join(" - ")}`);const u=[...i,...t].join(".");if("+="===o){let r=n()(c,u);r?Array.isArray(r)||(r=[r]):r=[],r.push(e),e=r}"true"===e&&(e=!0),"false"===e&&(e=!1),a()(c,u,e)}catch(e){throw new Error(`syntax error${r?` in ${r}`:""}${u?" at line "+(u-1):""}`)}}}return e.split(/\n|\r\n|\r/).forEach(((e,r)=>{u=r+1;const n=e.replace(/^\s*#.+/,"");let a;if(a=/^\s*\[([^\]]+)/.exec(n))l(),t=void 0,s=void 0,i=a[1].trim().split(/\s*\.\s*/),1===i.length&&"general"===i[0].toLowerCase()&&(i=[]);else if(a=n.match(void 0===s?/^([^+=]+)(\+?=)(.*)/:/^(\S[^+=]+)(\+?=)(.*)/))l(),t=a[1].trim().split(/\s*\.\s*/),[,,o]=a,"include"===[...i,...t].join(".")&&(o="+="),s=a[3].trim();else if(void 0!==t&&(a=/^\s{0,4}\+\s*(.+)/.exec(n)))l(),o="+=",s=a[1].trim();else if(void 0!==s&&(a=/^\s+(\S.*)/.exec(n))){const e=a[1];s+=s.length?` ${e.trim()}`:e.trim()}else l(),t=void 0,s=void 0})),l(),c}(e,r)}catch(e){throw new Error(`${e} when parsing configuration.`)}return p(t,r)}(e,r)}function v(e,r){if(null===r)return null;null===e&&(e={});for(const t of Object.keys(r))if("tracks"===t&&t in e){const o=e[t]||[],s=r[t]||[];if(!Array.isArray(o)||!Array.isArray(s))throw new Error(`Track config has not been properly regularized: ${o} ${s}`);e[t]=k(o,s)}else"datasets"!==t&&t in e&&"object"==typeof r[t]&&"object"==typeof e[t]?e[t]=l(e[t],r[t]):"dataRoot"===t?(void 0===e[t]||"data"===e[t]&&void 0!==r[t])&&(e[t]=r[t]):void 0!==e[t]&&void 0===r[t]||(e[t]=r[t]);return e}function k(e,r){if(!r.length)return e;const t={};return e.forEach(((e,r)=>{e.index=r,t[e.label]=e})),r.forEach((r=>{const o=t[r.label];o?v(o,r):e.push(r)})),e}function j(e,r){if(!e)return e;if(Array.isArray(e))for(let t=0;t<e.length;t+=1)e[t]=j(e[t],r);else if("object"==typeof e){const t=e;for(const e of Object.keys(t))t[e]=j(t[e],r)}else if("string"==typeof e)return function(e,r){return e.replaceAll(/{([\s\w.]+)}/g,((e,t)=>{t=t.replaceAll(/\s+/g,"");const o=n()(r,t);if(void 0!==o)return"function"==typeof o?o(t):o;if(r.callback){const e=r.callback.call(this,t);if(void 0!==e)return e}return e}))}(e,r);return e}const B={tracks:[],containerID:"GenomeBrowser",dataRoot:"data",show_tracklist:!0,show_nav:!0,show_menu:!0,show_overview:!0,show_fullviewlink:!0,update_browser_title:!0,updateBrowserURL:!0,refSeqs:"{dataRoot}/seq/refSeqs.json",include:["jbrowse.conf","jbrowse_conf.json"],nameUrl:"{dataRoot}/names/root.json",datasets:{_DEFAULT_EXAMPLES:!0,volvox:{url:"?data=sample_data/json/volvox",name:"Volvox Example"},modencode:{url:"?data=sample_data/json/modencode",name:"MODEncode Example"},yeast:{url:"?data=sample_data/json/yeast",name:"Yeast Example"}},highlightSearchedRegions:!1,highResolutionMode:"auto"}},51687:(e,r,t)=>{const o=t(22282);function s(e,r,t){return"function"==typeof t.join?t.join(e):e[0]+r+e[1]}function n(e,r,t){return"function"!=typeof t.isValid||t.isValid(e,r)}function i(e){return o(e)||Array.isArray(e)||"function"==typeof e}e.exports=function(e,r,t){if(o(t)||(t={default:t}),!i(e))return void 0!==t.default?t.default:e;"number"==typeof r&&(r=String(r));const a=Array.isArray(r),c="string"==typeof r,u=t.separator||".",l=t.joinChar||("string"==typeof u?u:".");if(!c&&!a)return e;if(c&&r in e)return n(r,e,t)?e[r]:t.default;let f=a?r:function(e,r,t){return"function"==typeof t.split?t.split(e):e.split(r)}(r,u,t),p=f.length,d=0;do{let r=f[d];for("number"==typeof r&&(r=String(r));r&&"\\"===r.slice(-1);)r=s([r.slice(0,-1),f[++d]||""],l,t);if(r in e){if(!n(r,e,t))return t.default;e=e[r]}else{let o=!1,i=d+1;for(;i<p;)if(r=s([r,f[i++]],l,t),o=r in e){if(!n(r,e,t))return t.default;e=e[r],d=i-1;break}if(!o)return t.default}}while(++d<p&&i(e));return d===p?e:t.default}},14037:e=>{"use strict";e.exports=function(e){return"object"==typeof e?null===e:"function"!=typeof e}},22282:e=>{"use strict";e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},76099:(e,r,t)=>{"use strict";const{deleteProperty:o}=Reflect,s=t(14037),n=t(83830),i=e=>"object"==typeof e&&null!==e||"function"==typeof e,a=e=>{if(!s(e))throw new TypeError("Object keys must be strings or symbols");if((e=>"__proto__"===e||"constructor"===e||"prototype"===e)(e))throw new Error(`Cannot set unsafe key: "${e}"`)},c=(e,r)=>r&&"function"==typeof r.split?r.split(e):"symbol"==typeof e?[e]:Array.isArray(e)?e:((e,r,t)=>{const o=(e=>Array.isArray(e)?e.flat().map(String).join(","):e)(r?((e,r)=>{if("string"!=typeof e||!r)return e;let t=e+";";return void 0!==r.arrays&&(t+=`arrays=${r.arrays};`),void 0!==r.separator&&(t+=`separator=${r.separator};`),void 0!==r.split&&(t+=`split=${r.split};`),void 0!==r.merge&&(t+=`merge=${r.merge};`),void 0!==r.preservePaths&&(t+=`preservePaths=${r.preservePaths};`),t})(e,r):e);a(o);const s=l.cache.get(o)||t();return l.cache.set(o,s),s})(e,r,(()=>((e,r={})=>{const t=r.separator||".",o="/"!==t&&r.preservePaths;if("string"==typeof e&&!1!==o&&/\//.test(e))return[e];const s=[];let n="";const i=e=>{let r;""!==e.trim()&&Number.isInteger(r=Number(e))?s.push(r):s.push(e)};for(let r=0;r<e.length;r++){const o=e[r];"\\"!==o?o!==t?n+=o:(i(n),n=""):n+=e[++r]}return n&&i(n),s})(e,r))),u=(e,r,t,s)=>{if(a(r),void 0===t)o(e,r);else if(s&&s.merge){const o="function"===s.merge?s.merge:Object.assign;o&&n(e[r])&&n(t)?e[r]=o(e[r],t):e[r]=t}else e[r]=t;return e},l=(e,r,t,o)=>{if(!r||!i(e))return e;const s=c(r,o);let n=e;for(let e=0;e<s.length;e++){const r=s[e],c=s[e+1];if(a(r),void 0===c){u(n,r,t,o);break}"number"!=typeof c||Array.isArray(n[r])?(i(n[r])||(n[r]={}),n=n[r]):n=n[r]=[]}return e};l.split=c,l.cache=new Map,l.clear=()=>{l.cache=new Map},e.exports=l},83830:(e,r,t)=>{"use strict";var o=t(22282);function s(e){return!0===o(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var r,t;return!1!==s(e)&&"function"==typeof(r=e.constructor)&&!1!==s(t=r.prototype)&&!1!==t.hasOwnProperty("isPrototypeOf")}}}]);
+//# sourceMappingURL=7911.764ec401.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7911.764ec401.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,34 @@
+/*!
+ * get-value <https://github.com/jonschlinkert/get-value>
+ *
+ * Copyright (c) 2014-2018, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+/*!
+ * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+/*!
+ * is-primitive <https://github.com/jonschlinkert/is-primitive>
+ *
+ * Copyright (c) 2014-present, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+/*!
+ * isobject <https://github.com/jonschlinkert/isobject>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+/*!
+ * set-value <https://github.com/jonschlinkert/set-value>
+ *
+ * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert).
+ * Released under the MIT License.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7911.764ec401.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7911.764ec401.chunk.js","mappings":"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","sources":["../../../plugins/legacy-jbrowse/src/JBrowse1Connection/util.ts","../../../plugins/legacy-jbrowse/src/JBrowse1Connection/jb1ConfigParse.ts","../../../plugins/legacy-jbrowse/src/JBrowse1Connection/jb1ConfigLoad.ts","../../../node_modules/get-value/index.js","../../../node_modules/is-primitive/index.js","../../../node_modules/isobject/index.js","../../../node_modules/set-value/index.js","../../../node_modules/set-value/node_modules/is-plain-object/index.js"],"sourcesContent":["import getValue from 'get-value'\nimport { Track, Source } from './types'\n\nexport function isTrack(arg: any): arg is Track {\n  return arg?.label && typeof arg.label === 'string'\n}\n\nexport function isSource(arg: any): arg is Source {\n  return arg?.url && typeof arg.url === 'string'\n}\n\n/**\n * updates a with values from b, recursively\n */\n\ntype Obj = Record<string, any>\nexport function deepUpdate(a: Obj, b: Obj): Obj {\n  for (const prop of Object.keys(b)) {\n    if (\n      prop in a &&\n      typeof b[prop] === 'object' &&\n      typeof a[prop] === 'object'\n    ) {\n      deepUpdate(a[prop], b[prop])\n    } else if (a[prop] === undefined || b[prop] !== undefined) {\n      a[prop] = b[prop]\n    }\n  }\n  return a\n}\n\n/**\n * replace variables in a template string with values\n *\n * @param template - String with variable names in curly brackets\n * e.g., `http://foo/{bar}?arg={baz.foo}`\n * @param fillWith - object with attribute-value mappings\n * e.g., `{ 'bar': 'someurl', 'baz': { 'foo': 42 } }`\n * @returns the template string with variables in fillWith replaced\n * e.g., 'htp://foo/someurl?arg=valueforbaz'\n */\nexport function fillTemplate(template: string, fillWith: Obj): string {\n  return template.replaceAll(/{([\\s\\w.]+)}/g, (match, varName) => {\n    varName = varName.replaceAll(/\\s+/g, '')\n    const fill = getValue(fillWith, varName)\n    if (fill !== undefined) {\n      return typeof fill === 'function' ? fill(varName) : fill\n    }\n    if (fillWith.callback) {\n      // @ts-expect-error\n      const v = fillWith.callback.call(this, varName)\n      if (v !== undefined) {\n        return v\n      }\n    }\n    return match\n  })\n}\n\n/**\n * Clones objects (including DOM nodes) and all children.\n * Warning: do not clone cyclic structures\n * (Lifted from dojo https://github.com/dojo/dojo/blob/master/_base/lang.js)\n * @param src - The object to clone\n */\n\nexport function clone(src: any): any {\n  if (\n    !src ||\n    typeof src !== 'object' ||\n    Object.prototype.toString.call(src) === '[object Function]'\n  ) {\n    // null, undefined, any non-object, or function\n    return src // anything\n  }\n  if (src.nodeType && 'cloneNode' in src) {\n    // DOM Node\n    return src.cloneNode(true) // Node\n  }\n  if (src instanceof Date) {\n    // Date\n    return new Date(src.getTime()) // Date\n  }\n  if (src instanceof RegExp) {\n    // RegExp\n    return new RegExp(src) // RegExp\n  }\n  let r: unknown[]\n  if (Array.isArray(src)) {\n    // array\n    r = []\n    for (let i = 0, l = src.length; i < l; ++i) {\n      if (i in src) {\n        r[i] = clone(src[i])\n      }\n    }\n    // we don't clone functions for performance reasons\n    //    }else if(d.isFunction(src)){\n    //      // function\n    //      r = function(){ return src.apply(this, arguments); };\n  } else {\n    // generic objects\n    r = src.constructor ? new src.constructor() : {}\n  }\n  return mixin(r, src, clone)\n}\n\n/**\n * Copies/adds all properties of source to dest; returns dest.\n * (Lifted from dojo https://github.com/dojo/dojo/blob/master/_base/lang.js)\n *\n * All properties, including functions (sometimes termed \"methods\"), excluding\n * any non-standard extensions found in Object.prototype, are copied/added to\n * dest. Copying/adding each particular property is delegated to copyFunc\n * (if any); copyFunc defaults to the Javascript assignment operator if not\n * provided. Notice that by default, mixin executes a so-called \"shallow copy\"\n * and aggregate types are copied/added by reference.\n * @param dest - The object to which to copy/add all properties contained in\n * source.\n * @param source - The object from which to draw all properties to copy into dest.\n * @param copyFunc - The process used to copy/add a property in source; defaults\n * to the Javascript assignment operator.\n * @returns dest, as modified\n */\nfunction mixin(\n  dest: Obj,\n  source: Obj,\n  copyFunc?: (arg: unknown) => unknown,\n): Obj {\n  const empty = {}\n  for (const name in source) {\n    // the (!(name in empty) || empty[name] !== s) condition avoids copying\n    // properties in \"source\" inherited from Object.prototype.\t For example,\n    // if dest has a custom toString() method, don't overwrite it with the\n    // toString() method that source inherited from Object.prototype\n    const s = source[name]\n    if (\n      !(name in dest) ||\n      // @ts-expect-error\n      (dest[name] !== s && (!(name in empty) || empty[name] !== s))\n    ) {\n      dest[name] = copyFunc ? copyFunc(s) : s\n    }\n  }\n\n  return dest // Object\n}\n","/* eslint no-cond-assign: [\"error\", \"except-parens\"] */\nimport getValue from 'get-value'\nimport setValue from 'set-value'\nimport { objectHash } from '@jbrowse/core/util'\nimport { isSource, isTrack } from './util'\nimport { Config, Track, Source, Store, Names } from './types'\n\nexport function parseJB1Json(config: Config | string, url: string): Config {\n  if (typeof config === 'string') {\n    let parsedConf: Config\n    try {\n      parsedConf = JSON.parse(config)\n    } catch (error) {\n      throw new Error(`${error} when parsing configuration.`)\n    }\n    return regularizeConf(parsedConf, url)\n  }\n  return regularizeConf(config, url)\n}\n\nexport function parseJB1Conf(config: string, url: string): Config {\n  let parsedConf: Config\n  try {\n    parsedConf = parse(config, url)\n  } catch (error) {\n    throw new Error(`${error} when parsing configuration.`)\n  }\n  return regularizeConf(parsedConf, url)\n}\n\nfunction isAlwaysArray(varName: string): boolean {\n  if (varName === 'include') {\n    return true\n  }\n  return false\n}\n\nfunction parse(text: string, url: string): Config {\n  let section: string[] = []\n  let keyPath: string[] | undefined\n  let operation: string\n  let value: string | undefined\n  const data: Config = { tracks: {} }\n  let lineNumber: number\n\n  function recordVal(): void {\n    if (value !== undefined) {\n      let parsedValue:\n        | string\n        | number\n        | boolean\n        | string[]\n        | number[]\n        | boolean[]\n      try {\n        // parse json\n        const match = /^json:(.+)/i.exec(value)\n        if (match) {\n          parsedValue = JSON.parse(match[1]!)\n        }\n        // parse numbers if it looks numeric\n        else if (/^[+-]?[\\d.,]+([eE][-+]?\\d+)?$/.test(value)) {\n          parsedValue = Number.parseFloat(value.replaceAll(',', ''))\n        } else {\n          parsedValue = value\n        }\n\n        if (!keyPath) {\n          throw new Error(`Error parsing in section ${section.join(' - ')}`)\n        }\n        const path = [...section, ...keyPath].join('.')\n        if (operation === '+=') {\n          let existing = getValue(data, path)\n          if (existing) {\n            if (!Array.isArray(existing)) {\n              existing = [existing]\n            }\n          } else {\n            existing = []\n          }\n\n          existing.push(parsedValue)\n          parsedValue = existing\n        }\n        if (parsedValue === 'true') {\n          parsedValue = true\n        }\n        if (parsedValue === 'false') {\n          parsedValue = false\n        }\n        setValue(data, path, parsedValue)\n      } catch (e) {\n        throw new Error(\n          `syntax error${url ? ` in ${url}` : ''}${\n            lineNumber ? ` at line ${lineNumber - 1}` : ''\n          }`,\n        )\n      }\n    }\n  }\n\n  text.split(/\\n|\\r\\n|\\r/).forEach((textLine, i): void => {\n    lineNumber = i + 1\n    const line = textLine.replace(/^\\s*#.+/, '')\n\n    // new section\n    let match: RegExpMatchArray | null\n    if ((match = /^\\s*\\[([^\\]]+)/.exec(line))) {\n      // new section\n      recordVal()\n      keyPath = undefined\n      value = undefined\n      section = match[1]!.trim().split(/\\s*\\.\\s*/)\n      if (section.length === 1 && section[0]!.toLowerCase() === 'general') {\n        section = []\n      }\n    }\n    // new value\n    else if (\n      (match = line.match(\n        value === undefined ? /^([^+=]+)(\\+?=)(.*)/ : /^(\\S[^+=]+)(\\+?=)(.*)/,\n      ))\n    ) {\n      recordVal()\n      keyPath = match[1]!.trim().split(/\\s*\\.\\s*/)\n      // @ts-expect-error\n      ;[, , operation] = match\n      if (isAlwaysArray([...section, ...keyPath].join('.'))) {\n        operation = '+='\n      }\n      value = match[3]!.trim()\n    }\n    // add to existing array value\n    else if (\n      keyPath !== undefined &&\n      (match = /^\\s{0,4}\\+\\s*(.+)/.exec(line))\n    ) {\n      recordVal()\n      operation = '+='\n      value = match[1]!.trim()\n    }\n    // add to existing value\n    else if (value !== undefined && (match = /^\\s+(\\S.*)/.exec(line))) {\n      const m = match[1]!\n      value += value.length ? ` ${m.trim()}` : m.trim()\n    }\n    // done with last value\n    else {\n      recordVal()\n      keyPath = undefined\n      value = undefined\n    }\n  })\n\n  recordVal()\n\n  return data\n}\n\n/**\n * Applies defaults and any other necessary tweaks to the loaded configuration.\n * @param conf - the object containing the configuration, which it modifies\n * in-place\n * @param url - URL of the config file\n * @returns the same object it was passed\n */\nexport function regularizeConf(conf: Config, url: string): Config {\n  // if tracks is not an array, convert it to one\n  if (conf.tracks && !Array.isArray(conf.tracks)) {\n    // if it's a single track config, wrap it in an arrayref\n    if (isTrack(conf.tracks)) {\n      conf.tracks = [conf.tracks]\n    }\n    // otherwise, coerce it to an array\n    else {\n      const tracks: Track[] = []\n      for (const label of Object.keys(conf.tracks)) {\n        const track = conf.tracks[label]\n        if (isTrack(track)) {\n          tracks.push(track)\n        } else {\n          tracks.push({ label, ...track })\n        }\n      }\n      conf.tracks = tracks\n    }\n  }\n\n  // regularize trackMetadata.sources\n  const meta = conf.trackMetadata\n  if (meta?.sources) {\n    // if it's a single source config, wrap it in an arrayref\n    if (typeof meta.sources === 'string') {\n      meta.sources = [meta.sources]\n    }\n    if (isSource(meta.sources)) {\n      meta.sources = [meta.sources]\n    }\n\n    if (!Array.isArray(meta.sources)) {\n      const sources: Source[] = []\n      for (const name of Object.keys(meta.sources)) {\n        const source = meta.sources[name]!\n        if (!('name' in source)) {\n          source.name = name\n        }\n        sources.push(source)\n      }\n      meta.sources = sources\n    }\n\n    // coerce any string source defs to be URLs, and try to detect their types\n    meta.sources = meta.sources.map((sourceDef: string | Source): Source => {\n      if (typeof sourceDef === 'string') {\n        const newSourceDef: Source = { url: sourceDef }\n        const typeMatch = /\\.(\\w+)$/.exec(sourceDef)\n        if (typeMatch) {\n          newSourceDef.type = typeMatch[1]!.toLowerCase()\n        }\n        return newSourceDef\n      }\n      return sourceDef\n    })\n  }\n\n  conf.sourceUrl = conf.sourceUrl || url\n  if (conf.sourceUrl.startsWith('/')) {\n    conf.sourceUrl = new URL(conf.sourceUrl, window.location.href).href\n  }\n  conf.baseUrl = conf.baseUrl || new URL('.', conf.sourceUrl).href\n  if (conf.baseUrl.length && !conf.baseUrl.endsWith('/')) {\n    conf.baseUrl += '/'\n  }\n\n  if (conf.sourceUrl) {\n    // set a default baseUrl in each of the track and store confs, and the names\n    // conf, if needed\n    const addBase: (Track | Store | Names)[] = []\n    if (conf.tracks) {\n      addBase.push(...conf.tracks)\n    }\n    if (conf.stores) {\n      addBase.push(...Object.values(conf.stores))\n    }\n    if (conf.names) {\n      addBase.push(conf.names)\n    }\n\n    addBase.forEach((t): void => {\n      if (!t.baseUrl) {\n        t.baseUrl = conf.baseUrl || '/'\n      }\n    })\n\n    // resolve the refSeqs and nameUrl if present\n    if (conf.refSeqs && typeof conf.refSeqs === 'string') {\n      conf.refSeqs = new URL(conf.refSeqs, conf.sourceUrl).href\n    }\n    if (conf.nameUrl) {\n      conf.nameUrl = new URL(conf.nameUrl, conf.sourceUrl).href\n    }\n  }\n\n  conf.stores = conf.stores || {}\n  ;(conf.tracks || []).forEach((trackConfig: Track): void => {\n    // if there is a `config` subpart, just copy its keys in to the top-level\n    // config\n    if (trackConfig.config) {\n      const c = trackConfig.config\n      trackConfig.config = undefined\n      trackConfig = { ...c, ...trackConfig }\n    }\n\n    // skip if it's a new-style track def\n    if (trackConfig.store) {\n      return\n    }\n\n    let trackClassName: string\n    if (trackConfig.type === 'FeatureTrack') {\n      trackClassName = 'JBrowse/View/Track/HTMLFeatures'\n    } else if (trackConfig.type === 'ImageTrack') {\n      trackClassName = 'JBrowse/View/Track/FixedImage'\n    } else if (trackConfig.type === 'ImageTrack.Wiggle') {\n      trackClassName = 'JBrowse/View/Track/FixedImage/Wiggle'\n    } else if (trackConfig.type === 'SequenceTrack') {\n      trackClassName = 'JBrowse/View/Track/Sequence'\n    } else {\n      trackClassName = regularizeClass('JBrowse/View/Track', trackConfig.type)\n    }\n\n    trackConfig.type = trackClassName\n\n    synthesizeTrackStoreConfig(conf, trackConfig)\n\n    if (trackConfig.histograms) {\n      if (!trackConfig.histograms.baseUrl) {\n        trackConfig.histograms.baseUrl = trackConfig.baseUrl\n      }\n      synthesizeTrackStoreConfig(conf, trackConfig.histograms)\n    }\n  })\n\n  return conf\n}\n\n/**\n * prefix class name with `root` if it contains no slashes\n * @param root - Prefix root\n * @param className - class name\n */\nfunction regularizeClass(root: string, className: string | undefined): string {\n  if (!className) {\n    return ''\n  }\n  if (!className.includes('/')) {\n    className = `${root}/${className}`\n  }\n  className = className.replace(/^\\//, '')\n  return className\n}\n\nfunction guessStoreClass(\n  trackConfig: Track | undefined,\n  urlTemplate: string,\n): string {\n  if (!trackConfig) {\n    return ''\n  }\n  if (trackConfig.type?.includes('/FixedImage')) {\n    return `JBrowse/Store/TiledImage/Fixed${\n      trackConfig.backendVersion === 0 ? '_v0' : ''\n    }`\n  }\n  if (/\\.jsonz?$/i.test(urlTemplate)) {\n    return `JBrowse/Store/SeqFeature/NCList${\n      trackConfig.backendVersion === 0 ? '_v0' : ''\n    }`\n  }\n  if (/\\.bam$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BAM'\n  }\n  if (/\\.cram$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/CRAM'\n  }\n  if (/\\.gff3?$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/GFF3'\n  }\n  if (/\\.bed$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BED'\n  }\n  if (/\\.vcf.b?gz$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/VCFTabix'\n  }\n  if (/\\.gff3?.b?gz$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/GFF3Tabix'\n  }\n  if (/\\.bed.b?gz$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BEDTabix'\n  }\n  if (/\\.(bw|bigwig)$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BigWig'\n  }\n  if (/\\.(bb|bigbed)$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BigBed'\n  }\n  if (/\\.(fa|fasta)$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/IndexedFasta'\n  }\n  if (/\\.(fa|fasta)\\.b?gz$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/BgzipIndexedFasta'\n  }\n  if (/\\.2bit$/i.test(urlTemplate)) {\n    return 'JBrowse/Store/SeqFeature/TwoBit'\n  }\n  if (trackConfig.type?.endsWith('/Sequence')) {\n    return 'JBrowse/Store/Sequence/StaticChunked'\n  }\n  return ''\n}\n\nfunction synthesizeTrackStoreConfig(\n  mainConf: Config,\n  trackConfig: Track,\n): void {\n  // figure out what data store class to use with the track, applying some\n  // defaults if it is not explicit in the configuration\n  const { urlTemplate = '' } = trackConfig\n\n  const storeClass = trackConfig.storeClass\n    ? regularizeClass('JBrowse/Store', trackConfig.storeClass)\n    : guessStoreClass(trackConfig, urlTemplate)\n\n  if (!storeClass) {\n    console.warn(\n      `Unable to determine an appropriate data store to use with track '${trackConfig.label}', please explicitly specify a storeClass in the configuration.`,\n    )\n    return\n  }\n\n  // synthesize a separate store conf\n  const storeConf: Store = { ...trackConfig, type: storeClass }\n\n  // if this is the first sequence store we see, and we have no refseqs store\n  // defined explicitly, make this the refseqs store.\n  storeConf.name =\n    (storeClass === 'JBrowse/Store/Sequence/StaticChunked' ||\n      storeClass === 'JBrowse/Store/Sequence/IndexedFasta' ||\n      storeClass === 'JBrowse/Store/SeqFeature/IndexedFasta' ||\n      storeClass === 'JBrowse/Store/SeqFeature/BgzipIndexedFasta' ||\n      storeClass === 'JBrowse/Store/SeqFeature/TwoBit' ||\n      storeClass === 'JBrowse/Store/Sequence/TwoBit' ||\n      trackConfig.useAsRefSeqStore) &&\n    !mainConf.stores?.refseqs\n      ? 'refseqs'\n      : `store${objectHash(storeConf)}`\n  // record it\n  if (!mainConf.stores) {\n    mainConf.stores = {}\n  }\n  mainConf.stores[storeConf.name] = storeConf\n\n  // connect it to the track conf\n  trackConfig.store = storeConf.name\n}\n","import { openLocation } from '@jbrowse/core/util/io'\nimport { parseJB1Json, parseJB1Conf, regularizeConf } from './jb1ConfigParse'\nimport { clone, deepUpdate, fillTemplate } from './util'\nimport {\n  JBLocation,\n  UriLocation,\n  LocalPathLocation,\n  Config,\n  Track,\n  Include,\n} from './types'\n\nfunction isUriLocation(location: JBLocation): location is UriLocation {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  return (location as UriLocation).uri !== undefined\n}\n\nfunction isLocalPathLocation(\n  location: JBLocation,\n): location is LocalPathLocation {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  return (location as LocalPathLocation).localPath !== undefined\n}\n\nexport async function fetchJb1(\n  // eslint-disable-next-line unicorn/no-object-as-default-parameter\n  dataRoot: JBLocation = { uri: '', locationType: 'UriLocation' },\n  // eslint-disable-next-line unicorn/no-object-as-default-parameter\n  baseConfig: Config = {\n    include: ['{dataRoot}/trackList.json', '{dataRoot}/tracks.conf'],\n  },\n  // eslint-disable-next-line unicorn/no-object-as-default-parameter\n  baseConfigRoot: JBLocation = { uri: '', locationType: 'UriLocation' },\n): Promise<Config> {\n  const protocol = 'uri' in dataRoot ? 'uri' : 'localPath'\n  const dataRootReg = JSON.parse(JSON.stringify(dataRoot))\n  let dataRootLocation = ''\n  if (isUriLocation(dataRoot)) {\n    dataRootLocation = dataRoot.uri\n  }\n  if (isLocalPathLocation(dataRoot)) {\n    dataRootLocation = dataRoot.localPath\n  }\n  if (dataRootLocation.endsWith('/')) {\n    dataRootReg[protocol] = dataRootLocation.slice(0, -1)\n  }\n  if (\n    (isUriLocation(baseConfigRoot) && baseConfigRoot.uri) ||\n    (isLocalPathLocation(baseConfigRoot) && baseConfigRoot.localPath)\n  ) {\n    const baseProtocol = 'uri' in baseConfigRoot ? 'uri' : 'localPath'\n    let baseConfigLocation = ''\n    if (isUriLocation(baseConfigRoot)) {\n      baseConfigLocation = baseConfigRoot.uri\n    }\n    if (isLocalPathLocation(baseConfigRoot)) {\n      baseConfigLocation = baseConfigRoot.localPath\n    }\n    if (baseConfigLocation.endsWith('/')) {\n      baseConfigLocation = baseConfigLocation.slice(0, -1)\n    }\n    let newConfig: Config = {}\n    for (const conf of ['jbrowse.conf', 'jbrowse_conf.json']) {\n      let fetchedConfig = null\n      try {\n        // @ts-expect-error\n        fetchedConfig = await fetchConfigFile({\n          [baseProtocol]: `${baseConfigLocation}/${conf}`,\n        })\n      } catch (error) {\n        console.error(\n          `tried to access ${baseConfigLocation}/${conf}, but failed`,\n        )\n      }\n      newConfig = mergeConfigs(newConfig, fetchedConfig) || {}\n    }\n    if (dataRootReg[protocol]) {\n      newConfig.dataRoot = dataRootReg[protocol]\n    }\n    return createFinalConfig(newConfig)\n  }\n  const newConfig = regularizeConf(baseConfig, window.location.href)\n  if (dataRootReg[protocol]) {\n    newConfig.dataRoot = dataRootReg[protocol]\n  }\n  return createFinalConfig(newConfig)\n}\n\nexport async function createFinalConfig(\n  baseConfig: Config,\n  defaults = configDefaults,\n): Promise<Config> {\n  const configWithDefaults = deepUpdate(clone(defaults), baseConfig)\n  let finalConfig = await loadIncludes(configWithDefaults)\n  finalConfig = mergeConfigs(finalConfig, baseConfig) || finalConfig\n  fillTemplates(finalConfig, finalConfig)\n  validateConfig(finalConfig)\n  return finalConfig\n}\n\nexport async function fetchConfigFile(location: JBLocation): Promise<Config> {\n  const result = await openLocation(location).readFile('utf8')\n  if (isUriLocation(location)) {\n    return parseJb1(result, location.uri)\n  }\n  if (isLocalPathLocation(location)) {\n    return parseJb1(result, location.localPath)\n  }\n  return parseJb1(result)\n}\n\nexport function parseJb1(config: string, url = ''): Config {\n  if (config.trim().startsWith('{')) {\n    return parseJB1Json(config, url)\n  }\n  return parseJB1Conf(config, url)\n}\n\n/**\n * Merges config object b into a. Properties in b override those in a.\n */\nfunction mergeConfigs(a: Config | null, b: Config | null): Config | null {\n  if (b === null) {\n    return null\n  }\n\n  if (a === null) {\n    a = {}\n  }\n\n  for (const prop of Object.keys(b)) {\n    if (prop === 'tracks' && prop in a) {\n      const aTracks = a[prop] || []\n      const bTracks = b[prop] || []\n\n      if (Array.isArray(aTracks) && Array.isArray(bTracks)) {\n        a[prop] = mergeTrackConfigs(aTracks, bTracks)\n      } else {\n        throw new Error(\n          `Track config has not been properly regularized: ${aTracks} ${bTracks}`,\n        )\n      }\n    } else if (\n      !noRecursiveMerge(prop) &&\n      prop in a &&\n      // @ts-expect-error\n      typeof b[prop] === 'object' &&\n      // @ts-expect-error\n      typeof a[prop] === 'object'\n    ) {\n      // @ts-expect-error\n      a[prop] = deepUpdate(a[prop], b[prop])\n    } else if (prop === 'dataRoot') {\n      if (\n        a[prop] === undefined ||\n        (a[prop] === 'data' && b[prop] !== undefined)\n      ) {\n        a[prop] = b[prop]\n      }\n      // @ts-expect-error\n    } else if (a[prop] === undefined || b[prop] !== undefined) {\n      // @ts-expect-error\n      a[prop] = b[prop]\n    }\n  }\n  return a\n}\n\n/**\n * Special-case merging of two `tracks` configuration arrays.\n */\nfunction mergeTrackConfigs(a: Track[], b: Track[]): Track[] {\n  if (!b.length) {\n    return a\n  }\n\n  // index the tracks in `a` by track label\n  const aTracks: Record<string, Track> = {}\n  a.forEach((t, i): void => {\n    t.index = i\n    aTracks[t.label] = t\n  })\n\n  b.forEach((bT): void => {\n    const aT = aTracks[bT.label]\n    if (aT) {\n      mergeConfigs(aT, bT)\n    } else {\n      a.push(bT)\n    }\n  })\n\n  return a\n}\n\n/**\n * Recursively fetch, parse, and merge all the includes in the given config\n * object.  Calls the callback with the resulting configuration when finished.\n * @param inputConfig - Config to load includes into\n */\nasync function loadIncludes(inputConfig: Config): Promise<Config> {\n  inputConfig = clone(inputConfig)\n\n  async function loadRecur(\n    config: Config,\n    upstreamConf: Config,\n  ): Promise<Config> {\n    const sourceUrl = config.sourceUrl || config.baseUrl\n    if (!sourceUrl) {\n      throw new Error(\n        `Could not determine source URL: ${JSON.stringify(config)}`,\n      )\n    }\n    const newUpstreamConf = mergeConfigs(clone(upstreamConf), config)\n    if (!newUpstreamConf) {\n      throw new Error('Problem merging configs')\n    }\n    const includes = fillTemplates(\n      regularizeIncludes(config.include || []),\n      newUpstreamConf,\n    )\n    config.include = undefined\n\n    const loads = includes.map(async (include): Promise<Config> => {\n      include.cacheBuster = inputConfig.cacheBuster\n      const includedData = await fetchConfigFile({\n        uri: new URL(include.url, sourceUrl).href,\n        locationType: 'UriLocation',\n      })\n      return loadRecur(includedData, newUpstreamConf)\n    })\n    const includedDataObjects = await Promise.all(loads)\n    includedDataObjects.forEach((includedData): void => {\n      config = mergeConfigs(config, includedData) || config\n    })\n    return config\n  }\n\n  return loadRecur(inputConfig, {})\n}\n\nfunction regularizeIncludes(\n  includes: Include | string | (Include | string)[] | null,\n): Include[] {\n  if (!includes) {\n    return []\n  }\n\n  // coerce include to an array\n  if (!Array.isArray(includes)) {\n    includes = [includes]\n  }\n\n  return includes.map((include): Include => {\n    // coerce bare strings in the includes to URLs\n    if (typeof include === 'string') {\n      include = { url: include }\n    }\n\n    // set defaults for format and version\n    if (!('format' in include)) {\n      include.format = include.url.endsWith('.conf') ? 'conf' : 'JB_json'\n    }\n    if (include.format === 'JB_json' && !('version' in include)) {\n      include.version = 1\n    }\n    return include\n  })\n}\n\nfunction fillTemplates<T>(subconfig: T, config: Config): T {\n  if (!subconfig) {\n    return subconfig\n  }\n  if (Array.isArray(subconfig)) {\n    for (let i = 0; i < subconfig.length; i += 1) {\n      subconfig[i] = fillTemplates(subconfig[i], config)\n    }\n  } else if (typeof subconfig === 'object') {\n    const sub = subconfig as Record<string, any>\n    for (const name of Object.keys(sub)) {\n      sub[name] = fillTemplates(sub[name], config)\n    }\n  } else if (typeof subconfig === 'string') {\n    // @ts-expect-error\n    return fillTemplate(subconfig, config)\n  }\n\n  return subconfig\n}\n\n/**\n * list of config properties that should not be recursively merged\n * @param propName - name of config property\n */\nfunction noRecursiveMerge(propName: string): boolean {\n  return propName === 'datasets'\n}\n\nconst configDefaults = {\n  tracks: [],\n\n  containerID: 'GenomeBrowser',\n  dataRoot: 'data',\n  show_tracklist: true,\n  show_nav: true,\n  show_menu: true,\n  show_overview: true,\n  show_fullviewlink: true,\n  update_browser_title: true,\n  updateBrowserURL: true,\n\n  refSeqs: '{dataRoot}/seq/refSeqs.json',\n  include: ['jbrowse.conf', 'jbrowse_conf.json'],\n  nameUrl: '{dataRoot}/names/root.json',\n\n  datasets: {\n    _DEFAULT_EXAMPLES: true,\n    volvox: { url: '?data=sample_data/json/volvox', name: 'Volvox Example' },\n    modencode: {\n      url: '?data=sample_data/json/modencode',\n      name: 'MODEncode Example',\n    },\n    yeast: { url: '?data=sample_data/json/yeast', name: 'Yeast Example' },\n  },\n\n  highlightSearchedRegions: false,\n  highResolutionMode: 'auto',\n}\n\n/**\n * Examine the loaded and merged configuration for errors.  Throws\n * exceptions if it finds anything amiss.\n * @returns nothing meaningful\n */\nfunction validateConfig(config: Config): void {\n  if (!config.tracks) {\n    config.tracks = []\n  }\n  if (!config.baseUrl) {\n    throw new Error('Must provide a `baseUrl` in configuration')\n  }\n}\n","/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nconst isObject = require('isobject');\n\nmodule.exports = function(target, path, options) {\n  if (!isObject(options)) {\n    options = { default: options };\n  }\n\n  if (!isValidObject(target)) {\n    return typeof options.default !== 'undefined' ? options.default : target;\n  }\n\n  if (typeof path === 'number') {\n    path = String(path);\n  }\n\n  const isArray = Array.isArray(path);\n  const isString = typeof path === 'string';\n  const splitChar = options.separator || '.';\n  const joinChar = options.joinChar || (typeof splitChar === 'string' ? splitChar : '.');\n\n  if (!isString && !isArray) {\n    return target;\n  }\n\n  if (isString && path in target) {\n    return isValid(path, target, options) ? target[path] : options.default;\n  }\n\n  let segs = isArray ? path : split(path, splitChar, options);\n  let len = segs.length;\n  let idx = 0;\n\n  do {\n    let prop = segs[idx];\n    if (typeof prop === 'number') {\n      prop = String(prop);\n    }\n\n    while (prop && prop.slice(-1) === '\\\\') {\n      prop = join([prop.slice(0, -1), segs[++idx] || ''], joinChar, options);\n    }\n\n    if (prop in target) {\n      if (!isValid(prop, target, options)) {\n        return options.default;\n      }\n\n      target = target[prop];\n    } else {\n      let hasProp = false;\n      let n = idx + 1;\n\n      while (n < len) {\n        prop = join([prop, segs[n++]], joinChar, options);\n\n        if ((hasProp = prop in target)) {\n          if (!isValid(prop, target, options)) {\n            return options.default;\n          }\n\n          target = target[prop];\n          idx = n - 1;\n          break;\n        }\n      }\n\n      if (!hasProp) {\n        return options.default;\n      }\n    }\n  } while (++idx < len && isValidObject(target));\n\n  if (idx === len) {\n    return target;\n  }\n\n  return options.default;\n};\n\nfunction join(segs, joinChar, options) {\n  if (typeof options.join === 'function') {\n    return options.join(segs);\n  }\n  return segs[0] + joinChar + segs[1];\n}\n\nfunction split(path, splitChar, options) {\n  if (typeof options.split === 'function') {\n    return options.split(path);\n  }\n  return path.split(splitChar);\n}\n\nfunction isValid(key, target, options) {\n  if (typeof options.isValid === 'function') {\n    return options.isValid(key, target);\n  }\n  return true;\n}\n\nfunction isValidObject(val) {\n  return isObject(val) || Array.isArray(val) || typeof val === 'function';\n}\n","/*!\n * is-primitive <https://github.com/jonschlinkert/is-primitive>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isPrimitive(val) {\n  if (typeof val === 'object') {\n    return val === null;\n  }\n  return typeof val !== 'function';\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n  return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * set-value <https://github.com/jonschlinkert/set-value>\n *\n * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert).\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst { deleteProperty } = Reflect;\nconst isPrimitive = require('is-primitive');\nconst isPlainObject = require('is-plain-object');\n\nconst isObject = value => {\n  return (typeof value === 'object' && value !== null) || typeof value === 'function';\n};\n\nconst isUnsafeKey = key => {\n  return key === '__proto__' || key === 'constructor' || key === 'prototype';\n};\n\nconst validateKey = key => {\n  if (!isPrimitive(key)) {\n    throw new TypeError('Object keys must be strings or symbols');\n  }\n\n  if (isUnsafeKey(key)) {\n    throw new Error(`Cannot set unsafe key: \"${key}\"`);\n  }\n};\n\nconst toStringKey = input => {\n  return Array.isArray(input) ? input.flat().map(String).join(',') : input;\n};\n\nconst createMemoKey = (input, options) => {\n  if (typeof input !== 'string' || !options) return input;\n  let key = input + ';';\n  if (options.arrays !== undefined) key += `arrays=${options.arrays};`;\n  if (options.separator !== undefined) key += `separator=${options.separator};`;\n  if (options.split !== undefined) key += `split=${options.split};`;\n  if (options.merge !== undefined) key += `merge=${options.merge};`;\n  if (options.preservePaths !== undefined) key += `preservePaths=${options.preservePaths};`;\n  return key;\n};\n\nconst memoize = (input, options, fn) => {\n  const key = toStringKey(options ? createMemoKey(input, options) : input);\n  validateKey(key);\n\n  const value = setValue.cache.get(key) || fn();\n  setValue.cache.set(key, value);\n  return value;\n};\n\nconst splitString = (input, options = {}) => {\n  const sep = options.separator || '.';\n  const preserve = sep === '/' ? false : options.preservePaths;\n\n  if (typeof input === 'string' && preserve !== false && /\\//.test(input)) {\n    return [input];\n  }\n\n  const parts = [];\n  let part = '';\n\n  const push = part => {\n    let number;\n    if (part.trim() !== '' && Number.isInteger((number = Number(part)))) {\n      parts.push(number);\n    } else {\n      parts.push(part);\n    }\n  };\n\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n\n    if (value === '\\\\') {\n      part += input[++i];\n      continue;\n    }\n\n    if (value === sep) {\n      push(part);\n      part = '';\n      continue;\n    }\n\n    part += value;\n  }\n\n  if (part) {\n    push(part);\n  }\n\n  return parts;\n};\n\nconst split = (input, options) => {\n  if (options && typeof options.split === 'function') return options.split(input);\n  if (typeof input === 'symbol') return [input];\n  if (Array.isArray(input)) return input;\n  return memoize(input, options, () => splitString(input, options));\n};\n\nconst assignProp = (obj, prop, value, options) => {\n  validateKey(prop);\n\n  // Delete property when \"value\" is undefined\n  if (value === undefined) {\n    deleteProperty(obj, prop);\n\n  } else if (options && options.merge) {\n    const merge = options.merge === 'function' ? options.merge : Object.assign;\n\n    // Only merge plain objects\n    if (merge && isPlainObject(obj[prop]) && isPlainObject(value)) {\n      obj[prop] = merge(obj[prop], value);\n    } else {\n      obj[prop] = value;\n    }\n\n  } else {\n    obj[prop] = value;\n  }\n\n  return obj;\n};\n\nconst setValue = (target, path, value, options) => {\n  if (!path || !isObject(target)) return target;\n\n  const keys = split(path, options);\n  let obj = target;\n\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    const next = keys[i + 1];\n\n    validateKey(key);\n\n    if (next === undefined) {\n      assignProp(obj, key, value, options);\n      break;\n    }\n\n    if (typeof next === 'number' && !Array.isArray(obj[key])) {\n      obj = obj[key] = [];\n      continue;\n    }\n\n    if (!isObject(obj[key])) {\n      obj[key] = {};\n    }\n\n    obj = obj[key];\n  }\n\n  return target;\n};\n\nsetValue.split = split;\nsetValue.cache = new Map();\nsetValue.clear = () => {\n  setValue.cache = new Map();\n};\n\nmodule.exports = setValue;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n  return isObject(o) === true\n    && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObjectObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (typeof ctor !== 'function') return false;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObjectObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n};\n"],"names":["isTrack","arg","label","deepUpdate","a","b","prop","Object","keys","undefined","clone","src","prototype","toString","call","nodeType","cloneNode","Date","getTime","RegExp","r","Array","isArray","i","l","length","constructor","dest","source","copyFunc","empty","name","s","mixin","regularizeConf","conf","url","tracks","track","push","meta","trackMetadata","sources","map","sourceDef","newSourceDef","typeMatch","exec","type","toLowerCase","sourceUrl","startsWith","URL","window","location","href","baseUrl","endsWith","addBase","stores","values","names","forEach","t","refSeqs","nameUrl","trackConfig","config","c","store","trackClassName","regularizeClass","synthesizeTrackStoreConfig","histograms","root","className","includes","replace","mainConf","urlTemplate","storeClass","backendVersion","test","guessStoreClass","console","warn","storeConf","useAsRefSeqStore","refseqs","objectHash","isUriLocation","uri","isLocalPathLocation","localPath","async","fetchJb1","dataRoot","locationType","baseConfig","include","baseConfigRoot","protocol","dataRootReg","JSON","parse","stringify","dataRootLocation","slice","baseProtocol","baseConfigLocation","newConfig","fetchedConfig","fetchConfigFile","error","mergeConfigs","createFinalConfig","defaults","configDefaults","configWithDefaults","finalConfig","inputConfig","loadRecur","upstreamConf","Error","newUpstreamConf","fillTemplates","format","version","regularizeIncludes","loads","cacheBuster","Promise","all","includedData","loadIncludes","validateConfig","result","openLocation","readFile","parseJb1","trim","parsedConf","parseJB1Json","text","keyPath","operation","value","section","data","lineNumber","recordVal","parsedValue","match","Number","parseFloat","replaceAll","join","path","existing","getValue","setValue","e","split","textLine","line","m","parseJB1Conf","aTracks","bTracks","mergeTrackConfigs","index","bT","aT","subconfig","sub","template","fillWith","varName","fill","callback","v","this","fillTemplate","containerID","show_tracklist","show_nav","show_menu","show_overview","show_fullviewlink","update_browser_title","updateBrowserURL","datasets","_DEFAULT_EXAMPLES","volvox","modencode","yeast","highlightSearchedRegions","highResolutionMode","isObject","segs","joinChar","options","isValid","key","target","isValidObject","val","module","exports","default","String","isString","splitChar","separator","len","idx","hasProp","n","deleteProperty","Reflect","isPrimitive","isPlainObject","validateKey","TypeError","isUnsafeKey","input","fn","flat","toStringKey","arrays","merge","preservePaths","createMemoKey","cache","get","set","memoize","sep","preserve","parts","part","number","isInteger","splitString","assignProp","obj","assign","next","Map","clear","isObjectObject","o","ctor","prot","hasOwnProperty"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7974.3f19c570.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7974],{62859:(e,o,r)=>{r.d(o,{A:()=>g});var a=r(7552),t=r(93878),s=r(70799),i=r(48054),n=r(15622),d=r(1791),l=r(55270),c=r(51148),h=r(60129),p=r(58520),u=r(4785),b=r(69500);const v=(0,c.Ay)(i.A,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,l.A)(e)||"classes"===e,overridesResolver:(e,o)=>{const{ownerState:r}=e;return[o.root,o[r.variant],o[`size${(0,n.A)(r.size)}`],"inherit"===r.color&&o.colorInherit,o[(0,n.A)(r.size)],o[r.color]]}})((0,h.A)((({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${d.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}))),(0,h.A)((({theme:e})=>({variants:[...Object.entries(e.palette).filter((0,p.A)(["dark","contrastText"])).map((([o])=>({props:{color:o},style:{color:(e.vars||e).palette[o].contrastText,backgroundColor:(e.vars||e).palette[o].main,"&:hover":{backgroundColor:(e.vars||e).palette[o].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[o].main}}}})))]}))),(0,h.A)((({theme:e})=>({[`&.${d.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})))),g=a.forwardRef((function(e,o){const r=(0,u.b)({props:e,name:"MuiFab"}),{children:a,className:i,color:l="default",component:c="button",disabled:h=!1,disableFocusRipple:p=!1,focusVisibleClassName:g,size:m="large",variant:w="circular",...A}=r,x={...r,color:l,component:c,disabled:h,disableFocusRipple:p,size:m,variant:w},y=(e=>{const{color:o,variant:r,classes:a,size:t}=e,i={root:["root",r,`size${(0,n.A)(t)}`,"inherit"===o?"colorInherit":o]},l=(0,s.A)(i,d.C,a);return{...a,...l}})(x);return(0,b.jsx)(v,{className:(0,t.A)(y.root,i),component:c,disabled:h,focusRipple:!p,focusVisibleClassName:(0,t.A)(y.focusVisible,g),ownerState:x,ref:o,...A,classes:y,children:a})}))},1791:(e,o,r)=>{r.d(o,{A:()=>i,C:()=>s});var a=r(33761),t=r(85693);function s(e){return(0,t.Ay)("MuiFab",e)}const i=(0,a.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"])},97974:(e,o,r)=>{r.r(o),r.d(o,{default:()=>a.A,fabClasses:()=>t.A,getFabUtilityClass:()=>t.C});var a=r(62859),t=r(1791)}}]);
+//# sourceMappingURL=7974.3f19c570.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7974.3f19c570.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7974.3f19c570.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Fab/Fab.js","../../../node_modules/@mui/material/Fab/fabClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  minHeight: 36,\n  transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  borderRadius: '50%',\n  padding: 0,\n  minWidth: 0,\n  width: 56,\n  height: 56,\n  zIndex: (theme.vars || theme).zIndex.fab,\n  boxShadow: (theme.vars || theme).shadows[6],\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[12]\n  },\n  color: theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText?.(theme.palette.grey[300]),\n  backgroundColor: (theme.vars || theme).palette.grey[300],\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.grey.A100,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette.grey[300]\n    },\n    textDecoration: 'none'\n  },\n  [`&.${fabClasses.focusVisible}`]: {\n    boxShadow: (theme.vars || theme).shadows[6]\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      size: 'medium'\n    },\n    style: {\n      width: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended'\n    },\n    style: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'small'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 8px',\n      borderRadius: 34 / 2,\n      minWidth: 34,\n      height: 34\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'medium'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 16px',\n      borderRadius: 40 / 2,\n      minWidth: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].contrastText,\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      '&:hover': {\n        backgroundColor: (theme.vars || theme).palette[color].dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }\n  }))]\n})), memoTheme(({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n})));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n    children,\n    className,\n    color = 'default',\n    component = 'button',\n    disabled = false,\n    disableFocusRipple = false,\n    focusVisibleClassName,\n    size = 'large',\n    variant = 'circular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, {\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    classes: classes,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;"],"names":["FabRoot","name","slot","shouldForwardProp","prop","overridesResolver","props","styles","ownerState","root","variant","size","color","colorInherit","theme","typography","button","minHeight","transition","transitions","create","duration","short","borderRadius","padding","minWidth","width","height","zIndex","vars","fab","boxShadow","shadows","palette","text","primary","getContrastText","grey","backgroundColor","A100","textDecoration","focusVisible","variants","style","Object","entries","filter","map","contrastText","main","dark","disabled","action","disabledBackground","inProps","ref","children","className","component","disableFocusRipple","focusVisibleClassName","other","classes","slots","composedClasses","useUtilityClasses","focusRipple","getFabUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7991.5d96c772.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[7991],{27897:(e,t,o)=>{o.d(t,{A:()=>u});var n=o(7552),a=o(93878),r=o(70799),i=o(29628),l=o(81762),s=o(51148),c=o(4785),d=o(5110),p=o(69500);const v=(0,s.Ay)("div",{name:"MuiStep",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],o.alternativeLabel&&t.alternativeLabel,o.completed&&t.completed]}})({variants:[{props:{orientation:"horizontal"},style:{paddingLeft:8,paddingRight:8}},{props:{alternativeLabel:!0},style:{flex:1,position:"relative"}}]}),u=n.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiStep"}),{active:s,children:u,className:b,component:m="div",completed:x,disabled:A,expanded:L=!1,index:h,last:C,...f}=o,{activeStep:S,connector:w,alternativeLabel:g,orientation:j,nonLinear:y}=n.useContext(i.A);let[M=!1,k=!1,R=!1]=[s,x,A];S===h?M=void 0===s||s:!y&&S>h?k=void 0===x||x:!y&&S<h&&(R=void 0===A||A);const _=n.useMemo((()=>({index:h,last:C,expanded:L,icon:h+1,active:M,completed:k,disabled:R})),[h,C,L,M,k,R]),P={...o,active:M,orientation:j,alternativeLabel:g,completed:k,disabled:R,expanded:L,component:m},z=(e=>{const{classes:t,orientation:o,alternativeLabel:n,completed:a}=e,i={root:["root",o,n&&"alternativeLabel",a&&"completed"]};return(0,r.A)(i,d.L,t)})(P),N=(0,p.jsxs)(v,{as:m,className:(0,a.A)(z.root,b),ref:t,ownerState:P,...f,children:[w&&g&&0!==h?w:null,u]});return(0,p.jsx)(l.A.Provider,{value:_,children:w&&!g&&0!==h?(0,p.jsxs)(n.Fragment,{children:[w,N]}):N})}))},81762:(e,t,o)=>{o.d(t,{A:()=>i,P:()=>r});var n=o(7552);const a=n.createContext({});function r(){return n.useContext(a)}const i=a},47991:(e,t,o)=>{o.r(t),o.d(t,{StepContext:()=>r.A,default:()=>n.A,getStepUtilityClass:()=>a.L,stepClasses:()=>a.A,useStepContext:()=>r.P});var n=o(27897),a=o(5110),r=o(81762)},5110:(e,t,o)=>{o.d(t,{A:()=>i,L:()=>r});var n=o(33761),a=o(85693);function r(e){return(0,a.Ay)("MuiStep",e)}const i=(0,n.A)("MuiStep",["root","horizontal","vertical","alternativeLabel","completed"])},29628:(e,t,o)=>{o.d(t,{A:()=>i,s:()=>r});var n=o(7552);const a=n.createContext({});function r(){return n.useContext(a)}const i=a}}]);
+//# sourceMappingURL=7991.5d96c772.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/7991.5d96c772.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/7991.5d96c772.chunk.js","mappings":"8OAaA,MAYMA,GAAW,QAAO,MAAO,CAC7BC,KAAM,UACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAWE,aAAcF,EAAWG,kBAAoBJ,EAAOI,iBAAkBH,EAAWI,WAAaL,EAAOK,UAAU,GAPzI,CASd,CACDC,SAAU,CAAC,CACTP,MAAO,CACLI,YAAa,cAEfI,MAAO,CACLC,YAAa,EACbC,aAAc,IAEf,CACDV,MAAO,CACLK,kBAAkB,GAEpBG,MAAO,CACLG,KAAM,EACNC,SAAU,gBA8HhB,EA1H0B,cAAiB,SAAcC,EAASC,GAChE,MAAMd,GAAQ,OAAgB,CAC5BA,MAAOa,EACPhB,KAAM,aAGNkB,OAAQC,EAAU,SAClBC,EAAQ,UACRC,EAAS,UACTC,EAAY,MACZb,UAAWc,EACXC,SAAUC,EAAY,SACtBC,GAAW,EAAK,MAChBC,EAAK,KACLC,KACGC,GACD1B,GACE,WACJ2B,EAAU,UACVC,EAAS,iBACTvB,EAAgB,YAChBD,EAAW,UACXyB,GACE,aAAiB,KACrB,IAAKd,GAAS,EAAOT,GAAY,EAAOe,GAAW,GAAS,CAACL,EAAYI,EAAeE,GACpFK,IAAeH,EACjBT,OAAwBe,IAAfd,GAA2BA,GAC1Ba,GAAaF,EAAaH,EACpClB,OAA8BwB,IAAlBV,GAA8BA,GAChCS,GAAaF,EAAaH,IACpCH,OAA4BS,IAAjBR,GAA6BA,GAE1C,MAAMS,EAAe,WAAc,KAAM,CACvCP,QACAC,OACAF,WACAS,KAAMR,EAAQ,EACdT,SACAT,YACAe,cACE,CAACG,EAAOC,EAAMF,EAAUR,EAAQT,EAAWe,IACzCnB,EAAa,IACdF,EACHe,SACAX,cACAC,mBACAC,YACAe,WACAE,WACAJ,aAEIc,EA3FkB/B,KACxB,MAAM,QACJ+B,EAAO,YACP7B,EAAW,iBACXC,EAAgB,UAChBC,GACEJ,EACEgC,EAAQ,CACZ/B,KAAM,CAAC,OAAQC,EAAaC,GAAoB,mBAAoBC,GAAa,cAEnF,OAAO,OAAe4B,EAAO,IAAqBD,EAAQ,EAiF1CE,CAAkBjC,GAC5BkC,GAA2B,UAAMxC,EAAU,CAC/CyC,GAAIlB,EACJD,WAAW,OAAKe,EAAQ9B,KAAMe,GAC9BJ,IAAKA,EACLZ,WAAYA,KACTwB,EACHT,SAAU,CAACW,GAAavB,GAA8B,IAAVmB,EAAcI,EAAY,KAAMX,KAE9E,OAAoB,SAAK,IAAYqB,SAAU,CAC7CC,MAAOR,EACPd,SAAUW,IAAcvB,GAA8B,IAAVmB,GAA2B,UAAM,WAAgB,CAC3FP,SAAU,CAACW,EAAWQ,KACnBA,GAET,G,yDCnHA,MAAMI,EAA2B,gBAAoB,CAAC,GAS/C,SAASC,IACd,OAAO,aAAiBD,EAC1B,CACA,S,oPCdO,SAASE,EAAoB5C,GAClC,OAAO,QAAqB,UAAWA,EACzC,CACA,MACA,GADoB,OAAuB,UAAW,CAAC,OAAQ,aAAc,WAAY,mBAAoB,a,yDCD7G,MAAM6C,EAA8B,gBAAoB,CAAC,GASlD,SAASC,IACd,OAAO,aAAiBD,EAC1B,CACA,S","sources":["../../../node_modules/@mui/material/Step/Step.js","../../../node_modules/@mui/material/Step/StepContext.js","../../../node_modules/@mui/material/Step/stepClasses.js","../../../node_modules/@mui/material/Stepper/StepperContext.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport StepperContext from \"../Stepper/StepperContext.js\";\nimport StepContext from \"./StepContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getStepUtilityClass } from \"./stepClasses.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    alternativeLabel,\n    completed\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, alternativeLabel && 'alternativeLabel', completed && 'completed']\n  };\n  return composeClasses(slots, getStepUtilityClass, classes);\n};\nconst StepRoot = styled('div', {\n  name: 'MuiStep',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.completed && styles.completed];\n  }\n})({\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      paddingLeft: 8,\n      paddingRight: 8\n    }\n  }, {\n    props: {\n      alternativeLabel: true\n    },\n    style: {\n      flex: 1,\n      position: 'relative'\n    }\n  }]\n});\nconst Step = /*#__PURE__*/React.forwardRef(function Step(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiStep'\n  });\n  const {\n    active: activeProp,\n    children,\n    className,\n    component = 'div',\n    completed: completedProp,\n    disabled: disabledProp,\n    expanded = false,\n    index,\n    last,\n    ...other\n  } = props;\n  const {\n    activeStep,\n    connector,\n    alternativeLabel,\n    orientation,\n    nonLinear\n  } = React.useContext(StepperContext);\n  let [active = false, completed = false, disabled = false] = [activeProp, completedProp, disabledProp];\n  if (activeStep === index) {\n    active = activeProp !== undefined ? activeProp : true;\n  } else if (!nonLinear && activeStep > index) {\n    completed = completedProp !== undefined ? completedProp : true;\n  } else if (!nonLinear && activeStep < index) {\n    disabled = disabledProp !== undefined ? disabledProp : true;\n  }\n  const contextValue = React.useMemo(() => ({\n    index,\n    last,\n    expanded,\n    icon: index + 1,\n    active,\n    completed,\n    disabled\n  }), [index, last, expanded, active, completed, disabled]);\n  const ownerState = {\n    ...props,\n    active,\n    orientation,\n    alternativeLabel,\n    completed,\n    disabled,\n    expanded,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  const newChildren = /*#__PURE__*/_jsxs(StepRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [connector && alternativeLabel && index !== 0 ? connector : null, children]\n  });\n  return /*#__PURE__*/_jsx(StepContext.Provider, {\n    value: contextValue,\n    children: connector && !alternativeLabel && index !== 0 ? /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [connector, newChildren]\n    }) : newChildren\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Step.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Sets the step as active. Is passed to child components.\n   */\n  active: PropTypes.bool,\n  /**\n   * Should be `Step` sub-components such as `StepLabel`, `StepContent`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Mark the step as completed. Is passed to child components.\n   */\n  completed: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the step is disabled, will also disable the button if\n   * `StepButton` is a child of `Step`. Is passed to child components.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Expand the step.\n   * @default false\n   */\n  expanded: PropTypes.bool,\n  /**\n   * The position of the step.\n   * The prop defaults to the value inherited from the parent Stepper component.\n   */\n  index: integerPropType,\n  /**\n   * If `true`, the Step is displayed as rendered last.\n   * The prop defaults to the value inherited from the parent Stepper component.\n   */\n  last: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Step;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStepUtilityClass(slot) {\n  return generateUtilityClass('MuiStep', slot);\n}\nconst stepClasses = generateUtilityClasses('MuiStep', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'completed']);\nexport default stepClasses;","import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;"],"names":["StepRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","alternativeLabel","completed","variants","style","paddingLeft","paddingRight","flex","position","inProps","ref","active","activeProp","children","className","component","completedProp","disabled","disabledProp","expanded","index","last","other","activeStep","connector","nonLinear","undefined","contextValue","icon","classes","slots","useUtilityClasses","newChildren","as","Provider","value","StepContext","useStepContext","getStepUtilityClass","StepperContext","useStepperContext"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8007.3025c802.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,3 @@
+/*! For license information please see 8007.3025c802.chunk.js.LICENSE.txt */
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8007],{39975:()=>{},47046:(e,t,r)=>{r.d(t,{A:()=>a});class n{}class i{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new n){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(e),e.aborted?this.handleAborted(e):"function"==typeof e.addEventListener&&e.addEventListener("abort",(()=>{this.handleAborted(e)}))}handleAborted(e){this.signals.delete(e),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class o{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),e(this.currentMessage)}callback(e){this.currentMessage=e;for(const t of this.callbacks)t(e)}}class a{constructor({fill:e,cache:t}){if("function"!=typeof e)throw new TypeError("must pass a fill function");if("object"!=typeof t)throw new TypeError("must pass a cache object");if("function"!=typeof t.get||"function"!=typeof t.set||"function"!=typeof t.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=t,this.fillCallback=e}static isAbortException(e){return"AbortError"===e.name||"ERR_ABORTED"===e.code||"AbortError: aborted"===e.message||"Error: aborted"===e.message}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,r,n){const a=new i,s=new o;s.addCallback(n);const u={aborter:a,promise:this.fillCallback(t,a.signal,(e=>{s.callback(e)})),settled:!1,statusReporter:s,get aborted(){return this.aborter.signal.aborted}};u.aborter.addSignal(r),u.aborter.signal.addEventListener("abort",(()=>{u.settled||this.evict(e,u)})),u.promise.then((()=>{u.settled=!0}),(()=>{u.settled=!0,this.evict(e,u)})).catch((e=>{throw console.error(e),e})),this.cache.set(e,u)}static checkSinglePromise(e,t){function r(){if(null==t?void 0:t.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return e.then((e=>(r(),e)),(e=>{throw r(),e}))}has(e){return this.cache.has(e)}get(e,t,r,n){if(!r&&t instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const i=this.cache.get(e);return i?i.aborted&&!i.settled?(this.evict(e,i),this.get(e,t,r,n)):i.settled?i.promise:(i.aborter.addSignal(r),i.statusReporter.addCallback(n),a.checkSinglePromise(i.promise,r)):(this.fill(e,t,r,n),a.checkSinglePromise(this.cache.get(e).promise,r))}delete(e){const t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){const e=this.cache.keys();let t=0;for(let r=e.next();!r.done;r=e.next())this.delete(r.value),t+=1;return t}}},96757:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M4 8h4V4H4zm6 12h4v-4h-4zm-6 0h4v-4H4zm0-6h4v-4H4zm6 0h4v-4h-4zm6-10v4h4V4zm-6 4h4V4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z"}),"Apps")},25762:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},39548:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11"}),"Extension")},29078:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2zm-1 7h5.5L14 6.5z"}),"FileCopy")},91194:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"GetApp")},51469:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6z"}),"KeyboardArrowRight")},67386:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"}),"Launch")},922:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu")},550:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z"}),"Publish")},83105:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7z"}),"Redo")},89024:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save")},22168:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},37702:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"}),"Share")},62424:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M2 20h20v-4H2zm2-3h2v2H4zM2 4v4h20V4zm4 3H4V5h2zm-4 7h20v-4H2zm2-3h2v2H4z"}),"Storage")},73299:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(74893),i=r(69500);const o=(0,n.A)((0,i.jsx)("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8"}),"Undo")},27281:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(7552),i=r(93878),o=r(70799),a=r(51148),s=r(60129),u=r(4785),l=r(15622),c=r(58520),f=r(943),p=r(33761),h=r(85693);function d(e){return(0,h.Ay)("MuiAppBar",e)}(0,p.A)("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent","colorError","colorInfo","colorSuccess","colorWarning"]);var b=r(69500);const v=(e,t)=>e?`${e?.replace(")","")}, ${t})`:t,y=(0,a.Ay)(f.A,{name:"MuiAppBar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`position${(0,l.A)(r.position)}`],t[`color${(0,l.A)(r.color)}`]]}})((0,s.A)((({theme:e})=>({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0,variants:[{props:{position:"fixed"},style:{position:"fixed",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}}},{props:{position:"absolute"},style:{position:"absolute",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0}},{props:{position:"sticky"},style:{position:"sticky",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0}},{props:{position:"static"},style:{position:"static"}},{props:{position:"relative"},style:{position:"relative"}},{props:{color:"inherit"},style:{"--AppBar-color":"inherit"}},{props:{color:"default"},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles("dark",{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter((0,c.A)(["contrastText"])).map((([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}}))),{props:e=>!0===e.enableColorOnDark&&!["inherit","transparent"].includes(e.color),style:{backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)"}},{props:e=>!1===e.enableColorOnDark&&!["inherit","transparent"].includes(e.color),style:{backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)",...e.applyStyles("dark",{backgroundColor:e.vars?v(e.vars.palette.AppBar.darkBg,"var(--AppBar-background)"):null,color:e.vars?v(e.vars.palette.AppBar.darkColor,"var(--AppBar-color)"):null})}},{props:{color:"transparent"},style:{"--AppBar-background":"transparent","--AppBar-color":"inherit",backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)",...e.applyStyles("dark",{backgroundImage:"none"})}}]})))),g=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiAppBar"}),{className:n,color:a="primary",enableColorOnDark:s=!1,position:c="fixed",...f}=r,p={...r,color:a,position:c,enableColorOnDark:s},h=(e=>{const{color:t,position:r,classes:n}=e,i={root:["root",`color${(0,l.A)(t)}`,`position${(0,l.A)(r)}`]};return(0,o.A)(i,d,n)})(p);return(0,b.jsx)(y,{square:!0,component:"header",ownerState:p,elevation:4,className:(0,i.A)(h.root,n,"fixed"===c&&"mui-fixed"),ref:t,...f})}))},16179:(e,t,r)=>{r.d(t,{Ay:()=>h,qy:()=>u,rf:()=>l});var n=r(7552),i=r(69743),o=r(4785),a=r(69500);const s="function"==typeof(0,i.Dp)({}),u=(e,t)=>({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%",...t&&!e.vars&&{colorScheme:e.palette.mode}}),l=e=>({color:(e.vars||e).palette.text.primary,...e.typography.body1,backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}}),c=(e,t=!1)=>{const r={};t&&e.colorSchemes&&"function"==typeof e.getColorSchemeSelector&&Object.entries(e.colorSchemes).forEach((([t,n])=>{const i=e.getColorSchemeSelector(t);i.startsWith("@")?r[i]={":root":{colorScheme:n.palette?.mode}}:r[i.replace(/\s*&/,"")]={colorScheme:n.palette?.mode}}));let n={html:u(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:{margin:0,...l(e),"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}},...r};const i=e.components?.MuiCssBaseline?.styleOverrides;return i&&(n=[n,i]),n},f="mui-ecs",p=(0,i.Dp)(s?({theme:e,enableColorScheme:t})=>c(e,t):({theme:e})=>(e=>{const t=c(e,!1),r=Array.isArray(t)?t[0]:t;return!e.vars&&r&&(r.html[`:root:has(${f})`]={colorScheme:e.palette.mode}),e.colorSchemes&&Object.entries(e.colorSchemes).forEach((([t,n])=>{const i=e.getColorSchemeSelector(t);i.startsWith("@")?r[i]={[`:root:not(:has(.${f}))`]:{colorScheme:n.palette?.mode}}:r[i.replace(/\s*&/,"")]={[`&:not(:has(.${f}))`]:{colorScheme:n.palette?.mode}}})),t})(e)),h=function(e){const t=(0,o.b)({props:e,name:"MuiCssBaseline"}),{children:r,enableColorScheme:i=!1}=t;return(0,a.jsxs)(n.Fragment,{children:[s&&(0,a.jsx)(p,{enableColorScheme:i}),!s&&!i&&(0,a.jsx)("span",{className:f,style:{display:"none"}}),r]})}},62859:(e,t,r)=>{r.d(t,{A:()=>v});var n=r(7552),i=r(93878),o=r(70799),a=r(48054),s=r(15622),u=r(1791),l=r(55270),c=r(51148),f=r(60129),p=r(58520),h=r(4785),d=r(69500);const b=(0,c.Ay)(a.A,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,l.A)(e)||"classes"===e,overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`size${(0,s.A)(r.size)}`],"inherit"===r.color&&t.colorInherit,t[(0,s.A)(r.size)],t[r.color]]}})((0,f.A)((({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${u.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}))),(0,f.A)((({theme:e})=>({variants:[...Object.entries(e.palette).filter((0,p.A)(["dark","contrastText"])).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}})))]}))),(0,f.A)((({theme:e})=>({[`&.${u.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})))),v=n.forwardRef((function(e,t){const r=(0,h.b)({props:e,name:"MuiFab"}),{children:n,className:a,color:l="default",component:c="button",disabled:f=!1,disableFocusRipple:p=!1,focusVisibleClassName:v,size:y="large",variant:g="circular",...m}=r,_={...r,color:l,component:c,disabled:f,disableFocusRipple:p,size:y,variant:g},w=(e=>{const{color:t,variant:r,classes:n,size:i}=e,a={root:["root",r,`size${(0,s.A)(i)}`,"inherit"===t?"colorInherit":t]},l=(0,o.A)(a,u.C,n);return{...n,...l}})(_);return(0,d.jsx)(b,{className:(0,i.A)(w.root,a),component:c,disabled:f,focusRipple:!p,focusVisibleClassName:(0,i.A)(w.focusVisible,v),ownerState:_,ref:t,...m,classes:w,children:n})}))},1791:(e,t,r)=>{r.d(t,{A:()=>a,C:()=>o});var n=r(33761),i=r(85693);function o(e){return(0,i.Ay)("MuiFab",e)}const a=(0,n.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"])},17515:(e,t,r)=>{r.d(t,{A:()=>p});var n=r(7552),i=r(93878),o=r(70799),a=r(51148),s=r(60129),u=r(4785),l=r(89663),c=r(69500);const f=(0,a.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableGutters&&t.gutters,t[r.variant]]}})((0,s.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,t){const r=(0,u.b)({props:e,name:"MuiToolbar"}),{className:n,component:a="div",disableGutters:s=!1,variant:p="regular",...h}=r,d={...r,component:a,disableGutters:s,variant:p},b=(e=>{const{classes:t,disableGutters:r,variant:n}=e,i={root:["root",!r&&"gutters",n]};return(0,o.A)(i,l.U,t)})(d);return(0,c.jsx)(f,{as:a,className:(0,i.A)(b.root,n),ref:t,ownerState:d,...h})}))},89663:(e,t,r)=>{r.d(t,{A:()=>a,U:()=>o});var n=r(33761),i=r(85693);function o(e){return(0,i.Ay)("MuiToolbar",e)}const a=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])},35068:e=>{var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)},r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?s((r=e,Array.isArray(r)?[]:{}),e,t):e;var r}function i(e,t,r){return e.concat(t).map((function(e){return n(e,r)}))}function o(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function a(e,t){try{return t in e}catch(e){return!1}}function s(e,r,u){(u=u||{}).arrayMerge=u.arrayMerge||i,u.isMergeableObject=u.isMergeableObject||t,u.cloneUnlessOtherwiseSpecified=n;var l=Array.isArray(r);return l===Array.isArray(e)?l?u.arrayMerge(e,r,u):function(e,t,r){var i={};return r.isMergeableObject(e)&&o(e).forEach((function(t){i[t]=n(e[t],r)})),o(t).forEach((function(o){(function(e,t){return a(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,o)||(a(e,o)&&r.isMergeableObject(t[o])?i[o]=function(e,t){if(!t.customMerge)return s;var r=t.customMerge(e);return"function"==typeof r?r:s}(o,r)(e[o],t[o],r):i[o]=n(t[o],r))})),i}(e,r,u):n(r,u)}s.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return s(e,r,t)}),{})};var u=s;e.exports=u},78245:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(35451);function i(e){return("object"==typeof e&&null!==e&&"message"in e?e.message:`${e}`).replace(/\.$/,"")}class o{async getBufferFromResponse(e){const t=await e.arrayBuffer();return n.hp.from(t)}constructor(e,t={}){this.baseOverrides={},this.url=e;const r=t.fetch||globalThis.fetch.bind(globalThis);if(!r)throw new TypeError("no fetch function supplied, and none found in global environment");t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=r}async fetch(e,t){let r;try{r=await this.fetchImplementation(e,t)}catch(n){if(!`${n}`.includes("Failed to fetch"))throw new Error(`${i(n)} fetching ${e}`,{cause:n});console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:"reload"})}catch(t){throw new Error(`${i(t)} fetching ${e}`,{cause:t})}}return r}async read(e,t=0,r,n=0,i={}){const{headers:o={},signal:a,overrides:s={}}=i;r<1/0?o.range=`bytes=${n}-${n+r}`:r===1/0&&0!==n&&(o.range=`bytes=${n}-`);const u=await this.fetch(this.url,{...this.baseOverrides,...s,headers:{...o,...s.headers,...this.baseOverrides.headers},method:"GET",redirect:"follow",mode:"cors",signal:a});if(!u.ok)throw new Error(`HTTP ${u.status} fetching ${this.url}`);if(200===u.status&&0===n||206===u.status){const n=await this.getBufferFromResponse(u),i=n.copy(e,t,0,Math.min(r,n.length)),o=u.headers.get("content-range"),a=/\/(\d+)$/.exec(o||"");return(null==a?void 0:a[1])&&(this._stat={size:parseInt(a[1],10)}),{bytesRead:i,buffer:e}}if(200===u.status)throw new Error(`${this.url} fetch returned status 200, expected 206`);throw new Error(`HTTP ${u.status} fetching ${this.url}`)}async readFile(e={}){let t,r;"string"==typeof e?(t=e,r={}):(t=e.encoding,r=e,delete r.encoding);const{headers:n={},signal:i,overrides:o={}}=r,a=await this.fetch(this.url,{headers:n,method:"GET",redirect:"follow",mode:"cors",signal:i,...this.baseOverrides,...o});if(200!==a.status)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if("utf8"===t)return a.text();if(t)throw new Error(`unsupported encoding: ${t}`);return this.getBufferFromResponse(a)}async stat(){if(!this._stat){const e=n.hp.allocUnsafe(10);if(await this.read(e,0,10,0),!this._stat)throw new Error(`unable to determine size of file at ${this.url}`)}return this._stat}async close(){}}},8167:(e,t,r)=>{r.d(t,{P:()=>p});var n,i,o=r(7552),a=r(89059),s=r(77173),u="function"==typeof Symbol&&Symbol.for,l=null!==(i=null===(n=Object.getOwnPropertyDescriptor((function(){}),"name"))||void 0===n?void 0:n.configurable)&&void 0!==i&&i,c=u?Symbol.for("react.forward_ref"):"function"==typeof o.forwardRef&&(0,o.forwardRef)((function(e){return null})).$$typeof,f=u?Symbol.for("react.memo"):"function"==typeof o.memo&&(0,o.memo)((function(e){return null})).$$typeof;function p(e,t){var r;if(f&&e.$$typeof===f)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");if((0,a.P)())return e;var n=null!==(r=null==t?void 0:t.forwardRef)&&void 0!==r&&r,i=e,u=e.displayName||e.name;if(c&&e.$$typeof===c&&(n=!0,"function"!=typeof(i=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var p,d,b=function(e,t){return(0,s.q)((function(){return i(e,t)}),u)};return b.displayName=e.displayName,l&&Object.defineProperty(b,"name",{value:e.name,writable:!0,configurable:!0}),e.contextTypes&&(b.contextTypes=e.contextTypes),n&&(b=(0,o.forwardRef)(b)),b=(0,o.memo)(b),p=e,d=b,Object.keys(p).forEach((function(e){h[e]||Object.defineProperty(d,e,Object.getOwnPropertyDescriptor(p,e))})),b}var h={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0}},36422:(e,t,r)=>{r.r(t),r.d(t,{addDisposer:()=>W,addMiddleware:()=>xe,applyAction:()=>_e,applyPatch:()=>_,applySnapshot:()=>A,cast:()=>X,castFlowReturn:()=>Vt,castToReferenceSnapshot:()=>Q,castToSnapshot:()=>Z,clone:()=>H,createActionTrackingMiddleware:()=>ve,createActionTrackingMiddleware2:()=>ge,decorate:()=>Ce,destroy:()=>$,detach:()=>U,escapeJsonPath:()=>zt,flow:()=>It,getChildType:()=>y,getEnv:()=>K,getIdentifier:()=>D,getLivelinessChecking:()=>s,getMembers:()=>J,getNodeId:()=>ee,getParent:()=>T,getParentOfType:()=>x,getPath:()=>I,getPathParts:()=>V,getPropertyMembers:()=>Y,getRelativePath:()=>F,getRoot:()=>C,getRunningActionContext:()=>Ve,getSnapshot:()=>S,getType:()=>v,hasParent:()=>k,hasParentOfType:()=>E,isActionContextChildOf:()=>Me,isActionContextThisOrChildOf:()=>Re,isAlive:()=>G,isArrayType:()=>er,isFrozenType:()=>Lr,isIdentifierType:()=>Zr,isLateType:()=>Mr,isLiteralType:()=>wr,isMapType:()=>Yt,isModelType:()=>ar,isOptionalType:()=>xr,isPrimitiveType:()=>gr,isProtected:()=>j,isReferenceType:()=>Wr,isRefinementType:()=>Pr,isRoot:()=>N,isStateTreeNode:()=>Je,isType:()=>he,isUnionType:()=>Sr,isValidReference:()=>L,joinJsonPath:()=>Bt,onAction:()=>Oe,onPatch:()=>g,onSnapshot:()=>m,process:()=>st,protect:()=>O,recordActions:()=>we,recordPatches:()=>w,resolveIdentifier:()=>R,resolvePath:()=>M,setLivelinessChecking:()=>a,setLivelynessChecking:()=>u,splitJsonPath:()=>Ft,t:()=>rn,toGenerator:()=>Mt,toGeneratorFunction:()=>Nt,tryReference:()=>z,tryResolve:()=>B,typecheck:()=>$e,types:()=>rn,unescapeJsonPath:()=>Lt,unprotect:()=>P,walk:()=>q});var n,i=r(42489),o="warn";function a(e){o=e}function s(){return o}function u(e){a(e)}!function(e){e.afterCreate="afterCreate",e.afterAttach="afterAttach",e.afterCreationFinalization="afterCreationFinalization",e.beforeDetach="beforeDetach",e.beforeDestroy="beforeDestroy"}(n||(n={}));var l=function(e,t){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},l(e,t)};function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var f=function(){return f=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},f.apply(this,arguments)};function p(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function h(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}function b(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(d(arguments[t]));return e}function v(e){return Xe(e,1),Ze(e).type}function y(e,t){return Xe(e,1),Ze(e).getChildType(t)}function g(e,t){return Xe(e,1),Tt(),Ze(e).onPatch(t)}function m(e,t){return Xe(e,1),Tt(),Ze(e).onSnapshot(t)}function _(e,t){Xe(e,1),kt(),Ze(e).applyPatches(vt(t))}function w(e,t){Xe(e,1);var r,n={patches:[],inversePatches:[]},i={},o={get recording(){return!!r},get patches(){return i.patches||(i.patches=n.patches.slice()),i.patches},get reversedInversePatches(){return i.reversedInversePatches||(i.reversedInversePatches=n.inversePatches.slice().reverse()),i.reversedInversePatches},get inversePatches(){return i.inversePatches||(i.inversePatches=n.inversePatches.slice()),i.inversePatches},stop:function(){r&&(r(),r=void 0)},resume:function(){r||(r=g(e,(function(e,r){t&&!t(e,r,Ve())||(n.patches.push(e),n.inversePatches.push(r),i.patches=void 0,i.inversePatches=void 0,i.reversedInversePatches=void 0)})))},replay:function(t){_(t||e,n.patches)},undo:function(t){_(t||e,n.inversePatches.slice().reverse())}};return o.resume(),o}function O(e){Xe(e,1);var t=Ze(e);if(!t.isRoot)throw pt("`protect` can only be invoked on root nodes");t.isProtectionEnabled=!0}function P(e){Xe(e,1);var t=Ze(e);if(!t.isRoot)throw pt("`unprotect` can only be invoked on root nodes");t.isProtectionEnabled=!1}function j(e){return Ze(e).isProtected}function A(e,t){return Xe(e,1),Ze(e).applySnapshot(t)}function S(e,t){void 0===t&&(t=!0),Xe(e,1);var r=Ze(e);return t?r.snapshot:r.type.getSnapshot(r,!1)}function k(e,t){void 0===t&&(t=1),Xe(e,1),Et(0,0,0);for(var r=Ze(e).parent;r;){if(0==--t)return!0;r=r.parent}return!1}function T(e,t){void 0===t&&(t=1),Xe(e,1),Et(0,0,0);for(var r=t,n=Ze(e).parent;n;){if(0==--r)return n.storedValue;n=n.parent}throw pt("Failed to find the parent of "+Ze(e)+" at depth "+t)}function E(e,t){Xe(e,1),de(t,2);for(var r=Ze(e).parent;r;){if(t.is(r.storedValue))return!0;r=r.parent}return!1}function x(e,t){Xe(e,1),de(t,2);for(var r=Ze(e).parent;r;){if(t.is(r.storedValue))return r.storedValue;r=r.parent}throw pt("Failed to find the parent of "+Ze(e)+" of a given type")}function C(e){return Xe(e,1),Ze(e).root.storedValue}function I(e){return Xe(e,1),Ze(e).path}function V(e){return Xe(e,1),Ft(Ze(e).path)}function N(e){return Xe(e,1),Ze(e).isRoot}function M(e,t){Xe(e,1),xt();var r=nt(Ze(e),t);return r?r.value:void 0}function R(e,t,r){de(e,1),Xe(t,2),kt();var n=Ze(t).root.identifierCache.resolve(e,Qr(r));return null==n?void 0:n.value}function D(e){return Xe(e,1),Ze(e).identifier}function z(e,t){void 0===t&&(t=!0);try{var r=e();if(null==r)return;if(Je(r))return t?G(r)?r:void 0:r;throw pt("The reference to be checked is not one of node, null or undefined")}catch(e){if(e instanceof Fr)return;throw e}}function L(e,t){void 0===t&&(t=!0);try{var r=e();if(null==r)return!1;if(Je(r))return!t||G(r);throw pt("The reference to be checked is not one of node, null or undefined")}catch(e){if(e instanceof Fr)return!1;throw e}}function B(e,t){Xe(e,1),xt();var r=nt(Ze(e),t,!1);if(void 0!==r)try{return r.value}catch(e){return}}function F(e,t){return Xe(e,1),Xe(t,2),rt(Ze(e),Ze(t))}function H(e,t){void 0===t&&(t=!0),Xe(e,1);var r=Ze(e);return r.type.create(r.snapshot,!0===t?r.root.environment:!1===t?void 0:t)}function U(e){return Xe(e,1),Ze(e).detach(),e}function $(e){Xe(e,1);var t=Ze(e);t.isRoot?t.die():t.parent.removeChild(t.subpath)}function G(e){return Xe(e,1),Ze(e).observableIsAlive}function W(e,t){return Xe(e,1),Tt(),Ze(e).addDisposer(t),t}function K(e){return Xe(e,1),Ze(e).root.environment||ct}function q(e,t){Xe(e,1),Tt();var r=Ze(e);r.getChildren().forEach((function(e){Je(e.storedValue)&&q(e.storedValue,t)})),t(r.storedValue)}function Y(e){var t;return kt(t=Je(e)?v(e):e),{name:t.name,properties:f({},t.properties)}}function J(e){var t=Ze(e).type,r=f(f({},Y(t)),{actions:[],volatile:[],views:[],flowActions:[]});return Object.getOwnPropertyNames(e).forEach((function(t){if(!(t in r.properties)){var n=Object.getOwnPropertyDescriptor(e,t);n.get?(0,i.isComputedProp)(e,t)?r.views.push(t):r.volatile.push(t):(!0===n.value._isFlowAction&&r.flowActions.push(t),!0===n.value._isMSTAction?r.actions.push(t):(0,i.isObservableProp)(e,t)?r.volatile.push(t):r.views.push(t))}})),r}function X(e){return e}function Z(e){return e}function Q(e){return e}function ee(e){return Xe(e,1),Ze(e).nodeId}var te=function(){function e(e,t,r,n){Object.defineProperty(this,"type",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"environment",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(this,"_escapedSubpath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_subpath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_subpathUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pathUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"storedValue",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"aliveAtom",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:Ge.INITIALIZING}),Object.defineProperty(this,"_hookSubscribers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_parent",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pathAtom",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.environment=n,this.baseSetParent(t,r)}return Object.defineProperty(e.prototype,"subpath",{get:function(){return this._subpath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"subpathUponDeath",{get:function(){return this._subpathUponDeath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pathUponDeath",{get:function(){return this._pathUponDeath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.type.getValue(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},set:function(e){var t=this.isAlive;this._state=e;var r=this.isAlive;this.aliveAtom&&t!==r&&this.aliveAtom.reportChanged()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fireInternalHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._hookSubscribers&&this._hookSubscribers.emit(e,this,e)}}),Object.defineProperty(e.prototype,"registerHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._hookSubscribers||(this._hookSubscribers=new Pt),this._hookSubscribers.register(e,t)}}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getReconciliationType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type}}),Object.defineProperty(e.prototype,"baseSetParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this._parent=e,this._subpath=t,this._escapedSubpath=void 0,this.pathAtom&&this.pathAtom.reportChanged()}}),Object.defineProperty(e.prototype,"path",{get:function(){return this.getEscapedPath(!0)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getEscapedPath",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e&&(this.pathAtom||(this.pathAtom=(0,i.createAtom)("path")),this.pathAtom.reportObserved()),this.parent?(void 0===this._escapedSubpath&&(this._escapedSubpath=this._subpath?zt(this._subpath):""),this.parent.getEscapedPath(e)+"/"+this._escapedSubpath):""}}),Object.defineProperty(e.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isAlive",{get:function(){return this.state!==Ge.DEAD},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isDetaching",{get:function(){return this.state===Ge.DETACHING},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"observableIsAlive",{get:function(){return this.aliveAtom||(this.aliveAtom=(0,i.createAtom)("alive")),this.aliveAtom.reportObserved(),this.isAlive},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"baseFinalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.state===Ge.CREATED){if(this.parent){if(this.parent.state!==Ge.FINALIZED)return;this.fireHook(n.afterAttach)}this.state=Ge.FINALIZED,e&&e()}}}),Object.defineProperty(e.prototype,"baseFinalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this._hookSubscribers&&this._hookSubscribers.clearAll(),this._subpathUponDeath=this._subpath,this._pathUponDeath=this.getEscapedPath(!1),this.baseSetParent(null,""),this.state=Ge.DEAD}}),Object.defineProperty(e.prototype,"baseAboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.fireHook(n.beforeDestroy)}}),e}(),re=function(e){function t(t,r,n,i,o){var a=e.call(this,t,r,n,i)||this;try{a.storedValue=t.createNewInstance(o)}catch(e){throw a.state=Ge.DEAD,e}return a.state=Ge.CREATED,a.finalizeCreation(),a}return c(t,e),Object.defineProperty(t.prototype,"root",{get:function(){if(!this.parent)throw pt("This scalar node is not part of a tree");return this.parent.root},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"setParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.parent!==e,n=this.subpath!==t;(r||n)&&(this.environment=void 0,this.baseSetParent(this.parent,t))}}),Object.defineProperty(t.prototype,"snapshot",{get:function(){return this.getSnapshot()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type.getSnapshot(this)}}),Object.defineProperty(t.prototype,"toString",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=(this.isAlive?this.path:this.pathUponDeath)||"<root>";return this.type.name+"@"+e+(this.isAlive?"":" [dead]")}}),Object.defineProperty(t.prototype,"die",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.isAlive&&this.state!==Ge.DETACHING&&(this.aboutToDie(),this.finalizeDeath())}}),Object.defineProperty(t.prototype,"finalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseFinalizeCreation()}}),Object.defineProperty(t.prototype,"aboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseAboutToDie()}}),Object.defineProperty(t.prototype,"finalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.baseFinalizeDeath()}}),Object.defineProperty(t.prototype,"fireHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.fireInternalHook(e)}}),t}(te);re.prototype.die=(0,i.action)(re.prototype.die);var ne,ie,oe=1,ae={onError:function(e){throw e}},se=function(e){function t(t,r,n,o,a){var s=e.call(this,t,r,n,o)||this;if(Object.defineProperty(s,"nodeId",{enumerable:!0,configurable:!0,writable:!0,value:++oe}),Object.defineProperty(s,"identifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"identifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"unnormalizedIdentifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"identifierCache",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"isProtectionEnabled",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(s,"middlewares",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"hasSnapshotPostProcessor",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(s,"_applyPatches",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_applySnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_autoUnbox",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(s,"_isRunningAction",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(s,"_hasSnapshotReaction",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(s,"_observableInstanceState",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(s,"_childNodes",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_initialSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_cachedInitialSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_cachedInitialSnapshotCreated",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(s,"_snapshotComputed",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_snapshotUponDeath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(s,"_internalEvents",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s._snapshotComputed=(0,i.computed)((function(){return s.getSnapshot()})),s.unbox=s.unbox.bind(s),s._initialSnapshot=a,s.identifierAttribute=t.identifierAttribute,r||(s.identifierCache=new Ke),s._childNodes=t.initializeChildNodes(s,s._initialSnapshot),s.identifier=null,s.unnormalizedIdentifier=null,s.identifierAttribute&&s._initialSnapshot){var u=s._initialSnapshot[s.identifierAttribute];if(void 0===u){var l=s._childNodes[s.identifierAttribute];l&&(u=l.value)}if("string"!=typeof u&&"number"!=typeof u)throw pt("Instance identifier '"+s.identifierAttribute+"' for type '"+s.type.name+"' must be a string or a number");s.identifier=Qr(u),s.unnormalizedIdentifier=u}return r?r.root.identifierCache.addNodeToCache(s):s.identifierCache.addNodeToCache(s),s}return c(t,e),Object.defineProperty(t.prototype,"applyPatches",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.createObservableInstanceIfNeeded(),this._applyPatches(e)}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.createObservableInstanceIfNeeded(),this._applySnapshot(e)}}),Object.defineProperty(t.prototype,"createObservableInstanceIfNeeded",{enumerable:!1,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=!0),0===this._observableInstanceState&&this.createObservableInstance(e)}}),Object.defineProperty(t.prototype,"createObservableInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t,r,i,o;void 0===e&&(e=!0),this._observableInstanceState=1;for(var a=[],s=this.parent;s&&0===s._observableInstanceState;)a.unshift(s),s=s.parent;try{for(var u=h(a),l=u.next();!l.done;l=u.next())(d=l.value).createObservableInstanceIfNeeded(!1)}catch(e){t={error:e}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}var c=this.type;try{this.storedValue=c.createNewInstance(this._childNodes),this.preboot(),this._isRunningAction=!0,c.finalizeNewInstance(this,this.storedValue)}catch(e){throw this.state=Ge.DEAD,e}finally{this._isRunningAction=!1}if(this._observableInstanceState=2,this._snapshotComputed.trackAndCompute(),this.isRoot&&this._addSnapshotReaction(),this._childNodes=ct,this.state=Ge.CREATED,e){this.fireHook(n.afterCreate),this.finalizeCreation();try{for(var f=h(a.reverse()),p=f.next();!p.done;p=f.next()){var d;(d=p.value).fireHook(n.afterCreate),d.finalizeCreation()}}catch(e){i={error:e}}finally{try{p&&!p.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}}}}),Object.defineProperty(t.prototype,"root",{get:function(){var e=this.parent;return e?e.root:this},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clearParent",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(this.parent){this.fireHook(n.beforeDetach);var e=this.state;this.state=Ge.DETACHING;var t=this.root,r=t.environment,i=t.identifierCache.splitCache(this);try{this.parent.removeChild(this.subpath),this.baseSetParent(null,""),this.environment=r,this.identifierCache=i}finally{this.state=e}}}}),Object.defineProperty(t.prototype,"setParent",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=e!==this.parent,i=t!==this.subpath;(r||i)&&(r?(this.environment=void 0,e.root.identifierCache.mergeCache(this),this.baseSetParent(e,t),this.fireHook(n.afterAttach)):i&&this.baseSetParent(this.parent,t))}}),Object.defineProperty(t.prototype,"fireHook",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;this.fireInternalHook(e);var r=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[e];"function"==typeof r&&(i._allowStateChangesInsideComputed?(0,i._allowStateChangesInsideComputed)((function(){r.apply(t.storedValue)})):r.apply(this.storedValue))}}),Object.defineProperty(t.prototype,"snapshot",{get:function(){return this.hasSnapshotPostProcessor&&this.createObservableInstanceIfNeeded(),this._snapshotComputed.get()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.isAlive?2===this._observableInstanceState?this._getActualSnapshot():this._getCachedInitialSnapshot():this._snapshotUponDeath}}),Object.defineProperty(t.prototype,"_getActualSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.type.getSnapshot(this)}}),Object.defineProperty(t.prototype,"_getCachedInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(!this._cachedInitialSnapshotCreated){var e=this.type,t=this._childNodes,r=this._initialSnapshot;this._cachedInitialSnapshot=e.processInitialSnapshot(t,r),this._cachedInitialSnapshotCreated=!0}return this._cachedInitialSnapshot}}),Object.defineProperty(t.prototype,"isRunningAction",{enumerable:!1,configurable:!0,writable:!0,value:function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()}}),Object.defineProperty(t.prototype,"assertAlive",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t,r=s();if(!this.isAlive&&"ignore"!==r){var n=this._getAssertAliveError(e);switch(r){case"error":throw pt(n);case"warn":t=n,console.warn(new Error("[mobx-state-tree] "+t))}}}}),Object.defineProperty(t.prototype,"_getAssertAliveError",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.getEscapedPath(!1)||this.pathUponDeath||"",r=e.subpath&&zt(e.subpath)||"",n=e.actionContext||Ae();n&&"action"!==n.type&&n.parentActionEvent&&(n=n.parentActionEvent);var i="";return n&&null!=n.name&&(i=(n&&n.context&&I(n.context)||t)+"."+n.name+"()"),"You are trying to read or write to an object that is no longer part of a state tree. (Object type: '"+this.type.name+"', Path upon death: '"+t+"', Subpath: '"+r+"', Action: '"+i+"'). Either detach nodes first, or don't use objects after removing / replacing them in the tree."}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.assertAlive({subpath:e}),this._autoUnbox=!1;try{return 2===this._observableInstanceState?this.type.getChildNode(this,e):this._childNodes[e]}finally{this._autoUnbox=!0}}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.assertAlive(ct),this._autoUnbox=!1;try{return 2===this._observableInstanceState?this.type.getChildren(this):ot(this._childNodes)}finally{this._autoUnbox=!0}}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.type.getChildType(e)}}),Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"assertWritable",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.assertAlive(e),!this.isRunningAction()&&this.isProtected)throw pt("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.type.removeChild(this,e)}}),Object.defineProperty(t.prototype,"unbox",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e?(this.assertAlive({subpath:e.subpath||e.subpathUponDeath}),this._autoUnbox?e.value:e):e}}),Object.defineProperty(t.prototype,"toString",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=(this.isAlive?this.path:this.pathUponDeath)||"<root>",t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+e+t+(this.isAlive?"":" [dead]")}}),Object.defineProperty(t.prototype,"finalizeCreation",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;this.baseFinalizeCreation((function(){var t,r;try{for(var i=h(e.getChildren()),o=i.next();!o.done;o=i.next())o.value.finalizeCreation()}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}e.fireInternalHook(n.afterCreationFinalization)}))}}),Object.defineProperty(t.prototype,"detach",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(!this.isAlive)throw pt("Error while detaching, node is not alive.");this.clearParent()}}),Object.defineProperty(t.prototype,"preboot",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;this._applyPatches=Ee(this.storedValue,"@APPLY_PATCHES",(function(t){t.forEach((function(t){if(t.path){var r=Ft(t.path);it(e,r.slice(0,-1)).applyPatchLocally(r[r.length-1],t)}else e.type.applySnapshot(e,t.value)}))})),this._applySnapshot=Ee(this.storedValue,"@APPLY_SNAPSHOT",(function(t){if(t!==e.snapshot)return e.type.applySnapshot(e,t)})),wt(this.storedValue,"$treenode",this),wt(this.storedValue,"toJSON",et)}}),Object.defineProperty(t.prototype,"die",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.isAlive&&this.state!==Ge.DETACHING&&(this.aboutToDie(),this.finalizeDeath())}}),Object.defineProperty(t.prototype,"aboutToDie",{enumerable:!1,configurable:!0,writable:!0,value:function(){0!==this._observableInstanceState&&(this.getChildren().forEach((function(e){e.aboutToDie()})),this.baseAboutToDie(),this._internalEventsEmit("dispose"),this._internalEventsClear("dispose"))}}),Object.defineProperty(t.prototype,"finalizeDeath",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.getChildren().forEach((function(e){e.finalizeDeath()})),this.root.identifierCache.notifyDied(this);var e=this.snapshot;this._snapshotUponDeath=e,this._internalEventsClearAll(),this.baseFinalizeDeath()}}),Object.defineProperty(t.prototype,"onSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._addSnapshotReaction(),this._internalEventsRegister("snapshot",e)}}),Object.defineProperty(t.prototype,"emitSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._internalEventsEmit("snapshot",e)}}),Object.defineProperty(t.prototype,"onPatch",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._internalEventsRegister("patch",e)}}),Object.defineProperty(t.prototype,"emitPatch",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this._internalEventsHasSubscribers("patch")){var r=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];for(var n=0;n<t.length;n++){var i=t[n];for(var o in i)e[o]=i[o]}return e}({},e,{path:t.path.substr(this.path.length)+"/"+e.path}),n=d(function(e){if(!("oldValue"in e))throw pt("Patches without `oldValue` field cannot be inversed");return[Rt(e),Dt(e)]}(r),2),i=n[0],o=n[1];this._internalEventsEmit("patch",i,o)}this.parent&&this.parent.emitPatch(e,t)}}),Object.defineProperty(t.prototype,"hasDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._internalEventsHas("dispose",e)}}),Object.defineProperty(t.prototype,"addDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.hasDisposer(e))throw pt("cannot add a disposer when it is already registered for execution");this._internalEventsRegister("dispose",e,!0)}}),Object.defineProperty(t.prototype,"removeDisposer",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!this._internalEventsHas("dispose",e))throw pt("cannot remove a disposer which was never registered for execution");this._internalEventsUnregister("dispose",e)}}),Object.defineProperty(t.prototype,"removeMiddleware",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(this.middlewares){var t=this.middlewares.indexOf(e);t>=0&&this.middlewares.splice(t,1)}}}),Object.defineProperty(t.prototype,"addMiddleWare",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this;void 0===t&&(t=!0);var n={handler:e,includeHooks:t};return this.middlewares?this.middlewares.push(n):this.middlewares=[n],function(){r.removeMiddleware(n)}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this.assertWritable({subpath:e}),this.createObservableInstanceIfNeeded(),this.type.applyPatchLocally(this,e,t)}}),Object.defineProperty(t.prototype,"_addSnapshotReaction",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;if(!this._hasSnapshotReaction){var t=(0,i.reaction)((function(){return e.snapshot}),(function(t){return e.emitSnapshot(t)}),ae);this.addDisposer(t),this._hasSnapshotReaction=!0}}}),Object.defineProperty(t.prototype,"_internalEventsHasSubscribers",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return!!this._internalEvents&&this._internalEvents.hasSubscribers(e)}}),Object.defineProperty(t.prototype,"_internalEventsRegister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){return void 0===r&&(r=!1),this._internalEvents||(this._internalEvents=new Pt),this._internalEvents.register(e,t,r)}}),Object.defineProperty(t.prototype,"_internalEventsHas",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!!this._internalEvents&&this._internalEvents.has(e,t)}}),Object.defineProperty(t.prototype,"_internalEventsUnregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){this._internalEvents&&this._internalEvents.unregister(e,t)}}),Object.defineProperty(t.prototype,"_internalEventsEmit",{enumerable:!1,configurable:!0,writable:!0,value:function(e){for(var t,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];this._internalEvents&&(t=this._internalEvents).emit.apply(t,b([e],r))}}),Object.defineProperty(t.prototype,"_internalEventsClear",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this._internalEvents&&this._internalEvents.clear(e)}}),Object.defineProperty(t.prototype,"_internalEventsClearAll",{enumerable:!1,configurable:!0,writable:!0,value:function(){this._internalEvents&&this._internalEvents.clearAll()}}),t}(te);se.prototype.createObservableInstance=(0,i.action)(se.prototype.createObservableInstance),se.prototype.detach=(0,i.action)(se.prototype.detach),se.prototype.die=(0,i.action)(se.prototype.die),function(e){e[e.String=1]="String",e[e.Number=2]="Number",e[e.Boolean=4]="Boolean",e[e.Date=8]="Date",e[e.Literal=16]="Literal",e[e.Array=32]="Array",e[e.Map=64]="Map",e[e.Object=128]="Object",e[e.Frozen=256]="Frozen",e[e.Optional=512]="Optional",e[e.Reference=1024]="Reference",e[e.Identifier=2048]="Identifier",e[e.Late=4096]="Late",e[e.Refinement=8192]="Refinement",e[e.Union=16384]="Union",e[e.Null=32768]="Null",e[e.Undefined=65536]="Undefined",e[e.Integer=131072]="Integer",e[e.Custom=262144]="Custom",e[e.SnapshotProcessor=524288]="SnapshotProcessor",e[e.Lazy=1048576]="Lazy",e[e.Finite=2097152]="Finite",e[e.Float=4194304]="Float"}(ie||(ie={}));var ue="cannotDetermine",le=Symbol("$type"),ce=function(){function e(e){Object.defineProperty(this,ne,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"C",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"S",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"T",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"N",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isType",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=e}return Object.defineProperty(e.prototype,"create",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return Ue(this,e),this.instantiate(null,"",t,e).value}}),Object.defineProperty(e.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){throw pt("unimplemented method")}}),Object.defineProperty(e.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e===this}}),Object.defineProperty(e.prototype,"validate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(Qe(e)){var r=v(e);return this.isAssignableFrom(r)?Be():Fe(t,e)}return this.isValidSnapshot(e,t)}}),Object.defineProperty(e.prototype,"is",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return 0===this.validate(e,[{path:"",type:this}]).length}}),Object.defineProperty(e.prototype,"Type",{get:function(){throw pt("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"TypeWithoutSTN",{get:function(){throw pt("Factory.TypeWithoutSTN should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.TypeWithoutSTN`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"SnapshotType",{get:function(){throw pt("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"CreationType",{get:function(){throw pt("Factory.CreationType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.CreationType`")},enumerable:!1,configurable:!0}),e}();ne=le,ce.prototype.create=(0,i.action)(ce.prototype.create);var fe=function(e){function t(t){var r=e.call(this,t)||this;return Object.defineProperty(r,"identifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),r}return c(t,e),Object.defineProperty(t.prototype,"create",{enumerable:!1,configurable:!0,writable:!0,value:function(t,r){return void 0===t&&(t=this.getDefaultSnapshot()),e.prototype.create.call(this,t,r)}}),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.createObservableInstanceIfNeeded(),e.storedValue}}),Object.defineProperty(t.prototype,"isMatchingSnapshotId",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!e.identifierAttribute||e.identifier===Qr(t[e.identifierAttribute])}}),Object.defineProperty(t.prototype,"tryToReconcileNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return!(e.isDetaching||e.snapshot!==t&&(!Je(t)||Ze(t)!==e)&&(e.type!==this||!gt(t)||Je(t)||!this.isMatchingSnapshotId(e,t)||(e.applySnapshot(t),0)))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(this.tryToReconcileNode(e,t))return e.setParent(r,n),e;if(e.die(),Je(t)&&this.isAssignableFrom(v(t))){var i=Ze(t);return i.setParent(r,n),i}return this.instantiate(r,n,void 0,t)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return null}}),t}(ce);fe.prototype.create=(0,i.action)(fe.prototype.create);var pe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e}}),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(!e.isDetaching&&e.type===this&&e.storedValue===t)return e;var i=this.instantiate(r,n,void 0,t);return e.die(),i}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return null}}),t}(ce);function he(e){return"object"==typeof e&&e&&!0===e.isType}function de(e,t){kt()}var be=new Map;function ve(e){return function(t,r,n){switch(t.type){case"action":if(e.filter&&!0!==e.filter(t))return r(t);var i=e.onStart(t);e.onResume(t,i),be.set(t.id,{call:t,context:i,async:!1});try{var o=r(t);return e.onSuspend(t,i),!1===be.get(t.id).async&&(be.delete(t.id),e.onSuccess(t,i,o)),o}catch(r){throw be.delete(t.id),e.onFail(t,i,r),r}case"flow_spawn":return(a=be.get(t.rootId)).async=!0,r(t);case"flow_resume":case"flow_resume_error":var a=be.get(t.rootId);e.onResume(t,a.context);try{return r(t)}finally{e.onSuspend(t,a.context)}case"flow_throw":return a=be.get(t.rootId),be.delete(t.rootId),e.onFail(t,a.context,t.args[0]),r(t);case"flow_return":return a=be.get(t.rootId),be.delete(t.rootId),e.onSuccess(t,a.context,t.args[0]),r(t)}}}var ye=function(){function e(e,t){Object.defineProperty(this,"hooks",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"call",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"flowsPending",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"running",{enumerable:!0,configurable:!0,writable:!0,value:!0}),e&&e.onStart(t)}return Object.defineProperty(e.prototype,"finish",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.running&&(this.running=!1,this.hooks&&this.hooks.onFinish(this.call,e))}}),Object.defineProperty(e.prototype,"incFlowsPending",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.flowsPending++}}),Object.defineProperty(e.prototype,"decFlowsPending",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.flowsPending--}}),Object.defineProperty(e.prototype,"hasFlowsPending",{get:function(){return this.flowsPending>0},enumerable:!1,configurable:!0}),e}();function ge(e){var t=new Map;return function(r,n){var i=r.parentActionEvent?t.get(r.parentActionEvent.id):void 0;if("action"===r.type){var o=f(f({},r),{env:i&&i.call.env,parentCall:i&&i.call}),a=!e.filter||e.filter(o),s=new ye(a?e:void 0,o);t.set(r.id,s);var u=void 0;try{u=n(r)}catch(e){throw t.delete(r.id),s.finish(e),e}return s.hasFlowsPending||(t.delete(r.id),s.finish()),u}if(!i)return n(r);switch(r.type){case"flow_spawn":return i.incFlowsPending(),n(r);case"flow_resume":case"flow_resume_error":return n(r);case"flow_throw":var l=r.args[0];try{return n(r)}finally{i.decFlowsPending(),i.hasFlowsPending||(t.delete(r.parentActionEvent.id),i.finish(l))}case"flow_return":try{return n(r)}finally{i.decFlowsPending(),i.hasFlowsPending||(t.delete(r.parentActionEvent.id),i.finish())}}}}function me(e){return{$MST_UNSERIALIZABLE:!0,type:e}}function _e(e,t){Xe(e,1),kt(),(0,i.runInAction)((function(){vt(t).forEach((function(t){return function(e,t){var r=B(e,t.path||"");if(!r)throw pt("Invalid action path: "+(t.path||""));var n=Ze(r);if("@APPLY_PATCHES"===t.name)return _.call(null,r,t.args[0]);if("@APPLY_SNAPSHOT"===t.name)return A.call(null,r,t.args[0]);if("function"!=typeof r[t.name])throw pt("Action '"+t.name+"' does not exist in '"+n.path+"'");return r[t.name].apply(r,t.args?t.args.map((function(e){return(t=e)&&"object"==typeof t&&"$MST_DATE"in t?new Date(t.$MST_DATE):t;var t})):[])}(e,t)}))}))}function we(e,t){Xe(e,1);var r,n=[],i=function(e){(!t||t(e,Ve()))&&n.push(e)},o={actions:n,get recording(){return!!r},stop:function(){r&&(r(),r=void 0)},resume:function(){r||(r=Oe(e,i))},replay:function(e){_e(e,n)}};return o.resume(),o}function Oe(e,t,r){return void 0===r&&(r=!1),Xe(e,1),xe(e,(function(n,i){if("action"===n.type&&n.id===n.rootId){var o=Ze(n.context),a={name:n.name,path:rt(Ze(e),o),args:n.args.map((function(e,t){return function(e,t,r,n){if(n instanceof Date)return{$MST_DATE:n.getTime()};if(mt(n))return n;if(Je(n))return me("[MSTNode: "+v(n).name+"]");if("function"==typeof n)return me("[function]");if("object"==typeof n&&!yt(n)&&!bt(n))return me("[object "+(n&&n.constructor&&n.constructor.name||"Complex Object")+"]");try{return JSON.stringify(n),n}catch(e){return me(""+e)}}(0,n.name,0,e)}))};if(r){var s=i(n);return t(a),s}return t(a),i(n)}return i(n)}))}var Pe,je=1;function Ae(){return Pe}function Se(){return je++}function ke(e,t){var r=Ze(e.context);"action"===e.type&&r.assertAlive({actionContext:e});var o=r._isRunningAction;r._isRunningAction=!0;var a=Pe;Pe=e;try{return function(e,t,r){var o=new Ie(e,r);if(o.isEmpty)return(0,i.action)(r).apply(null,t.args);var a=null;return function e(t){var s=o.getNextMiddleware(),u=s&&s.handler;return u?!s.includeHooks&&n[t.name]?e(t):(u(t,(function(t,r){a=e(t),r&&(a=r(a))}),(function(e){a=e})),a):(0,i.action)(r).apply(null,t.args)}(t)}(r,e,t)}finally{Pe=a,r._isRunningAction=o}}function Te(e){if(e)return"action"===e.type?e:e.parentActionEvent}function Ee(e,t,r){var n=function(){var n=Se(),i=Pe,o=Te(i);return ke({type:"action",name:t,id:n,args:jt(arguments),context:e,tree:C(e),rootId:i?i.rootId:n,parentId:i?i.id:0,allParentIds:i?b(i.allParentIds,[i.id]):[],parentEvent:i,parentActionEvent:o},r)};return n._isMSTAction=!0,n._isFlowAction=r._isFlowAction,n}function xe(e,t,r){return void 0===r&&(r=!0),Ze(e).addMiddleWare(t,r)}function Ce(e,t,r){void 0===r&&(r=!0);var n={handler:e,includeHooks:r};return t.$mst_middleware=t.$mst_middleware||[],t.$mst_middleware.push(n),t}var Ie=function(){function e(e,t){Object.defineProperty(this,"arrayIndex",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"inArrayIndex",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"middlewares",{enumerable:!0,configurable:!0,writable:!0,value:[]}),t.$mst_middleware&&this.middlewares.push(t.$mst_middleware);for(var r=e;r;)r.middlewares&&this.middlewares.push(r.middlewares),r=r.parent}return Object.defineProperty(e.prototype,"isEmpty",{get:function(){return this.middlewares.length<=0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getNextMiddleware",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.middlewares[this.arrayIndex];if(e)return e[this.inArrayIndex++]||(this.arrayIndex++,this.inArrayIndex=0,this.getNextMiddleware())}}),e}();function Ve(){for(var e=Ae();e&&"action"!==e.type;)e=e.parentActionEvent;return e}function Ne(e,t,r){for(var n="number"==typeof t?t:t.id,i=r?e:e.parentActionEvent;i;){if(i.id===n)return!0;i=i.parentActionEvent}return!1}function Me(e,t){return Ne(e,t,!1)}function Re(e,t){return Ne(e,t,!0)}function De(e){return"function"==typeof e?"<function"+(e.name?" "+e.name:"")+">":Je(e)?"<"+e+">":"`"+function(e){try{return JSON.stringify(e)}catch(e){return"<Unserializable: "+e+">"}}(e)+"`"}function ze(e){var t=e.value,r=e.context[e.context.length-1].type,n=e.context.map((function(e){return e.path})).filter((function(e){return e.length>0})).join("/"),i=n.length>0?'at path "/'+n+'" ':"",o=Je(t)?"value of type "+Ze(t).type.name+":":mt(t)?"value":"snapshot",a=r&&Je(t)&&r.is(Ze(t).snapshot);return""+i+o+" "+De(t)+" is not assignable "+(r?"to type: `"+r.name+"`":"")+(e.message?" ("+e.message+")":"")+(r?gr(r)||mt(t)?".":", expected an instance of `"+r.name+"` or a snapshot like `"+r.describe()+"` instead."+(a?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function Le(e,t,r){return e.concat([{path:t,type:r}])}function Be(){return lt}function Fe(e,t,r){return[{context:e,value:t,message:r}]}function He(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function Ue(e,t){"undefined"!=typeof process&&$e(e,t)}function $e(e,t){var r=e.validate(t,[{path:"",type:e}]);if(r.length>0)throw pt(function(e,t,r){var n;if(0!==r.length)return"Error while converting "+(((n=De(t)).length<280?n:n.substring(0,272)+"......"+n.substring(n.length-8))+" to `")+e.name+"`:\n\n    "+r.map(ze).join("\n    ")}(e,t,r))}var Ge,We=0,Ke=function(){function e(){Object.defineProperty(this,"cacheId",{enumerable:!0,configurable:!0,writable:!0,value:We++}),Object.defineProperty(this,"cache",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.map()}),Object.defineProperty(this,"lastCacheModificationPerId",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.map()})}return Object.defineProperty(e.prototype,"updateLastCacheModificationPerId",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.lastCacheModificationPerId.get(e);this.lastCacheModificationPerId.set(e,void 0===t?1:t+1)}}),Object.defineProperty(e.prototype,"getLastCacheModificationPerId",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.lastCacheModificationPerId.get(e)||0;return this.cacheId+"-"+t}}),Object.defineProperty(e.prototype,"addNodeToCache",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(void 0===t&&(t=!0),e.identifierAttribute){var r=e.identifier;this.cache.has(r)||this.cache.set(r,i.observable.array([],ft));var n=this.cache.get(r);if(-1!==n.indexOf(e))throw pt("Already registered");n.push(e),t&&this.updateLastCacheModificationPerId(r)}}}),Object.defineProperty(e.prototype,"mergeCache",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;(0,i.values)(e.identifierCache.cache).forEach((function(e){return e.forEach((function(e){t.addNodeToCache(e)}))}))}}),Object.defineProperty(e.prototype,"notifyDied",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.identifierAttribute){var t=e.identifier,r=this.cache.get(t);r&&(r.remove(e),r.length||this.cache.delete(t),this.updateLastCacheModificationPerId(e.identifier))}}}),Object.defineProperty(e.prototype,"splitCache",{enumerable:!1,configurable:!0,writable:!0,value:function(t){var r=this,n=new e,o=t.path+"/";return(0,i.entries)(this.cache).forEach((function(e){for(var i=d(e,2),a=i[0],s=i[1],u=!1,l=s.length-1;l>=0;l--){var c=s[l];c!==t&&0!==c.path.indexOf(o)||(n.addNodeToCache(c,!1),s.splice(l,1),s.length||r.cache.delete(a),u=!0)}u&&r.updateLastCacheModificationPerId(a)})),n}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.cache.get(t);return!!r&&r.some((function(t){return e.isAssignableFrom(t.type)}))}}),Object.defineProperty(e.prototype,"resolve",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.cache.get(t);if(!r)return null;var n=r.filter((function(t){return e.isAssignableFrom(t.type)}));switch(n.length){case 0:return null;case 1:return n[0];default:throw pt("Cannot resolve a reference to type '"+e.name+"' with id: '"+t+"' unambigously, there are multiple candidates: "+n.map((function(e){return e.path})).join(", "))}}}),e}();function qe(e,t,r,n,i){var o=Qe(i);if(o){if(o.parent)throw pt("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(t?t.path:"")+"/"+r+"', but it lives already at '"+o.path+"'");return t&&o.setParent(t,r),o}return new se(e,t,r,n,i)}function Ye(e,t,r,n,i){return new re(e,t,r,n,i)}function Je(e){return!(!e||!e.$treenode)}function Xe(e,t){kt()}function Ze(e){if(!Je(e))throw pt("Value "+e+" is no MST Node");return e.$treenode}function Qe(e){return e&&e.$treenode||null}function et(){return Ze(this).snapshot}!function(e){e[e.INITIALIZING=0]="INITIALIZING",e[e.CREATED=1]="CREATED",e[e.FINALIZED=2]="FINALIZED",e[e.DETACHING=3]="DETACHING",e[e.DEAD=4]="DEAD"}(Ge||(Ge={}));var tt=function(e){return".."};function rt(e,t){if(e.root!==t.root)throw pt("Cannot calculate relative path: objects '"+e+"' and '"+t+"' are not part of the same object tree");for(var r=Ft(e.path),n=Ft(t.path),i=0;i<r.length&&r[i]===n[i];i++);return r.slice(i).map(tt).join("/")+Bt(n.slice(i))}function nt(e,t,r){return void 0===r&&(r=!0),it(e,Ft(t),r)}function it(e,t,r){void 0===r&&(r=!0);var n=e;try{for(var i=0;i<t.length;i++){var o=t[i];if(".."===o){if(n=n.parent)continue}else{if("."===o)continue;if(n){if(n instanceof re){var a=n.value;Je(a)&&(n=Ze(a))}if(n instanceof se&&n.getChildType(o)&&(n=n.getChildNode(o)))continue}}throw pt("Could not resolve '"+o+"' in path '"+(Bt(t.slice(0,i))||"/")+"' while resolving '"+Bt(t)+"'")}}catch(e){if(!r)return;throw e}return n}function ot(e){if(!e)return lt;var t=Object.keys(e);if(!t.length)return lt;var r=new Array(t.length);return t.forEach((function(t,n){r[n]=e[t]})),r}var at="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.";function st(e){return St("process","`process()` has been renamed to `flow()`. "+at),It(e)}var ut=Object.toString(),lt=Object.freeze([]),ct=Object.freeze({}),ft=(0,i._getGlobalState)().useProxies?{deep:!1}:{deep:!1,proxy:!1};function pt(e){return void 0===e&&(e="Illegal state"),new Error("[mobx-state-tree] "+e)}function ht(e){return e}Object.freeze(ft);var dt=Number.isInteger;function bt(e){return Array.isArray(e)||(0,i.isObservableArray)(e)}function vt(e){return e?bt(e)?e:[e]:lt}function yt(e){var t;if(null===e||"object"!=typeof e)return!1;var r=Object.getPrototypeOf(e);return null==r||(null===(t=r.constructor)||void 0===t?void 0:t.toString())===ut}function gt(e){return!(null===e||"object"!=typeof e||e instanceof Date||e instanceof RegExp)}function mt(e,t){return void 0===t&&(t=!0),null==e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e||t&&e instanceof Date}function _t(e){return"function"!=typeof e}function wt(e,t,r){!function(e,t,r){(0,i.isObservableObject)(e)?(0,i.defineProperty)(e,t,r):Object.defineProperty(e,t,r)}(e,t,{enumerable:!1,writable:!1,configurable:!0,value:r})}var Ot=function(){function e(){Object.defineProperty(this,"handlers",{enumerable:!0,configurable:!0,writable:!0,value:[]})}return Object.defineProperty(e.prototype,"hasSubscribers",{get:function(){return this.handlers.length>0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this;return void 0===t&&(t=!1),t?this.handlers.unshift(e):this.handlers.push(e),function(){r.unregister(e)}}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.handlers.indexOf(e)>=0}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}}),Object.defineProperty(e.prototype,"clear",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.handlers.length=0}}),Object.defineProperty(e.prototype,"emit",{enumerable:!1,configurable:!0,writable:!0,value:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.handlers.slice().forEach((function(t){return t.apply(void 0,b(e))}))}}),e}(),Pt=function(){function e(){Object.defineProperty(this,"eventHandlers",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}return Object.defineProperty(e.prototype,"hasSubscribers",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.eventHandlers&&this.eventHandlers[e];return!!t&&t.hasSubscribers}}),Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){void 0===r&&(r=!1),this.eventHandlers||(this.eventHandlers={});var n=this.eventHandlers[e];return n||(n=this.eventHandlers[e]=new Ot),n.register(t,r)}}),Object.defineProperty(e.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.eventHandlers&&this.eventHandlers[e];return!!r&&r.has(t)}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.eventHandlers&&this.eventHandlers[e];r&&r.unregister(t)}}),Object.defineProperty(e.prototype,"clear",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.eventHandlers&&delete this.eventHandlers[e]}}),Object.defineProperty(e.prototype,"clearAll",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.eventHandlers=void 0}}),Object.defineProperty(e.prototype,"emit",{enumerable:!1,configurable:!0,writable:!0,value:function(e){for(var t,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=this.eventHandlers&&this.eventHandlers[e];i&&(t=i).emit.apply(t,b(r))}}),e}();function jt(e){for(var t=new Array(e.length),r=0;r<e.length;r++)t[r]=e[r];return t}function At(e,t){return 0===e.indexOf(t)}var St=function(e,t){};function kt(e,t,r,n){}function Tt(e,t){}function Et(e,t,r,n){}function xt(e,t,r){void 0===r&&(r=!0)}function Ct(e){"function"==typeof queueMicrotask?queueMicrotask(e):"function"==typeof setImmediate?setImmediate(e):setTimeout(e,1)}function It(e){return function(e,t){var r=function(){var n=Se(),i=Ae();if(!i)throw pt("a mst flow must always have a parent context");var o=Te(i);if(!o)throw pt("a mst flow must always have a parent action context");var a={name:e,id:n,tree:i.tree,context:i.context,parentId:i.id,allParentIds:b(i.allParentIds,[i.id]),rootId:i.rootId,parentEvent:i,parentActionEvent:o},s=arguments;function u(e,t,n){return e.$mst_middleware=r.$mst_middleware,ke(f(f({},a),{type:t,args:[n]}),e)}return new Promise((function(e,n){var i,o=function(){i=t.apply(null,arguments),l(void 0)};function l(e){var t;try{var r=u((function(e){t=i.next(e)}),"flow_resume",e);r instanceof Error&&(t=i.throw(r))}catch(e){return void Ct((function(){u((function(t){n(e)}),"flow_throw",e)}))}p(t)}function c(e){var t;try{u((function(e){t=i.throw(e)}),"flow_resume_error",e)}catch(e){return void Ct((function(){u((function(t){n(e)}),"flow_throw",e)}))}p(t)}function p(t){if(!t.done){if(!t.value||"function"!=typeof t.value.then)throw pt("Only promises can be yielded to `async`, got: "+t);return t.value.then(l,c)}Ct((function(){u((function(t){e(t)}),"flow_return",t.value)}))}o.$mst_middleware=r.$mst_middleware,ke(f(f({},a),{type:"flow_spawn",args:jt(s)}),o)}))};return r._isFlowAction=!0,r}(e.name,e)}function Vt(e){return e}function Nt(e){return function(){var t,r=[];for(t=0;t<arguments.length;t++)r[t]=arguments[t];return p(this,(function(t){switch(t.label){case 0:return[4,e.apply(void 0,b(r))];case 1:return[2,t.sent()]}}))}}function Mt(e){return p(this,(function(t){switch(t.label){case 0:return[4,e];case 1:return[2,t.sent()]}}))}function Rt(e){switch(e.op){case"add":return{op:"add",path:e.path,value:e.value};case"remove":return{op:"remove",path:e.path};case"replace":return{op:"replace",path:e.path,value:e.value}}}function Dt(e){switch(e.op){case"add":return{op:"remove",path:e.path};case"remove":return{op:"add",path:e.path,value:e.oldValue};case"replace":return{op:"replace",path:e.path,value:e.oldValue}}}function zt(e){return 1==("number"==typeof e)?""+e:-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Lt(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Bt(e){if(0===e.length)return"";var t=function(e){return e.map(zt).join("/")};return"."===e[0]||".."===e[0]?t(e):"/"+t(e)}function Ft(e){var t=e.split("/").map(Lt);if(!(""===e||"."===e||".."===e||At(e,"/")||At(e,"./")||At(e,"../")))throw pt("a json path must be either rooted, empty or relative, but got '"+e+"'");return""===t[0]&&t.shift(),t}St.ids={};var Ht,Ut=Symbol("$preProcessorFailed"),$t=function(e){function t(t,r,n){var i=e.call(this,n||t.name)||this;return Object.defineProperty(i,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(i,"_processors",{enumerable:!0,configurable:!0,writable:!0,value:r}),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.SnapshotProcessor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"snapshotProcessor("+this._subtype.describe()+")"}}),Object.defineProperty(t.prototype,"preProcessSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._processors.preProcessor?this._processors.preProcessor.call(null,e):e}}),Object.defineProperty(t.prototype,"preProcessSnapshotSafe",{enumerable:!1,configurable:!0,writable:!0,value:function(e){try{return this.preProcessSnapshot(e)}catch(e){return Ut}}}),Object.defineProperty(t.prototype,"postProcessSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._processors.postProcessor?this._processors.postProcessor.call(null,e,t.storedValue):e}}),Object.defineProperty(t.prototype,"_fixNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;!function(e,t){for(var r,n,i=[],o=2;o<arguments.length;o++)i[o-2]=arguments[o];try{for(var a=h(i),s=a.next();!s.done;s=a.next()){var u=s.value;e[u]=t[u].bind(t)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}}(e.type,this,"create"),e instanceof se&&(e.hasSnapshotPostProcessor=!!this._processors.postProcessor);var r=e.getSnapshot;e.getSnapshot=function(){return t.postProcessSnapshot(r.call(e),e)},Sr(this._subtype)||(e.getReconciliationType=function(){return t})}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=Je(n)?n:this.preProcessSnapshot(n),o=this._subtype.instantiate(e,t,r,i);return this._fixNode(o),o}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=this._subtype.reconcile(e,Je(t)?t:this.preProcessSnapshot(t),r,n);return i!==e&&this._fixNode(i),i}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t=!0);var r=this._subtype.getSnapshot(e);return t?this.postProcessSnapshot(r,e):r}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.preProcessSnapshotSafe(e);return r===Ut?Fe(t,e,"Failed to preprocess value"):this._subtype.validate(r,t)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),Object.defineProperty(t.prototype,"is",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=he(e)?this._subtype:Je(e)?S(e,!1):this.preProcessSnapshotSafe(e);return t!==Ut&&0===this._subtype.validate(t,[{path:"",type:this._subtype}]).length}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isMatchingSnapshotId",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!(this._subtype instanceof fe))return!1;var r=this.preProcessSnapshot(t);return this._subtype.isMatchingSnapshotId(e,r)}}),t}(ce),Gt="Map.put can only be used to store complex values that have an identifier type attribute";function Wt(e,t){var r,n,i=e.getSubTypes();if(i===ue)return!1;if(i){var o=vt(i);try{for(var a=h(o),s=a.next();!s.done;s=a.next())if(!Wt(s.value,t))return!1}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}}return e instanceof or&&t.push(e),!0}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.YES=1]="YES",e[e.NO=2]="NO"}(Ht||(Ht={}));var Kt=function(e){function t(t,r){return e.call(this,t,i.observable.ref.enhancer,r)||this}return c(t,e),Object.defineProperty(t.prototype,"get",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.get.call(this,""+t)}}),Object.defineProperty(t.prototype,"has",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.has.call(this,""+t)}}),Object.defineProperty(t.prototype,"delete",{enumerable:!1,configurable:!0,writable:!0,value:function(t){return e.prototype.delete.call(this,""+t)}}),Object.defineProperty(t.prototype,"set",{enumerable:!1,configurable:!0,writable:!0,value:function(t,r){return e.prototype.set.call(this,""+t,r)}}),Object.defineProperty(t.prototype,"put",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!e)throw pt("Map.put cannot be used to set empty values");if(Je(e)){var t=Ze(e);if(null===t.identifier)throw pt(Gt);return this.set(t.identifier,e),e}if(gt(e)){var r=Ze(this),n=r.type;if(n.identifierMode!==Ht.YES)throw pt(Gt);var i=e[n.mapIdentifierAttribute];if(!en(i)){var o=this.put(n.getChildType().create(e,r.environment));return this.put(S(o))}var a=Qr(i);return this.set(a,e),this.get(a)}throw pt("Map.put can only be used to store complex values")}}),t}(i.ObservableMap),qt=function(e){function t(t,r,n){void 0===n&&(n=[]);var i=e.call(this,t)||this;return Object.defineProperty(i,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(i,"identifierMode",{enumerable:!0,configurable:!0,writable:!0,value:Ht.UNKNOWN}),Object.defineProperty(i,"mapIdentifierAttribute",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(i,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Map}),Object.defineProperty(i,"hookInitializers",{enumerable:!0,configurable:!0,writable:!0,value:[]}),i._determineIdentifierMode(),i.hookInitializers=n,i}return c(t,e),Object.defineProperty(t.prototype,"hooks",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var r=this.hookInitializers.length>0?this.hookInitializers.concat(e):[e];return new t(this.name,this._subType,r)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this._determineIdentifierMode(),qe(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"_determineIdentifierMode",{enumerable:!1,configurable:!0,writable:!0,value:function(){if(this.identifierMode===Ht.UNKNOWN){var e=[];if(Wt(this._subType,e)){var t=e.reduce((function(e,t){if(!t.identifierAttribute)return e;if(e&&e!==t.identifierAttribute)throw pt("The objects in a map should all have the same identifier attribute, expected '"+e+"', but child of type '"+t.name+"' declared attribute '"+t.identifierAttribute+"' as identifier");return t.identifierAttribute}),void 0);t?(this.identifierMode=Ht.YES,this.mapIdentifierAttribute=t):this.identifierMode=Ht.NO}}}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t={});var r=e.type._subType,n={};return Object.keys(t).forEach((function(i){n[i]=r.instantiate(e,i,void 0,t[i])})),n}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return new Kt(e,this.name)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){(0,i._interceptReads)(t,e.unbox),e.type.hookInitializers.forEach((function(e){var r=e(t);Object.keys(r).forEach((function(e){var n=r[e],i=Ee(t,e,n);wt(t,e,i)}))})),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return(0,i.values)(e.storedValue)}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=e.storedValue.get(""+t);if(!r)throw pt("Not a child "+t);return r}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Ze(e.object),r=e.name;t.assertWritable({subpath:r});var n=t.type,i=n._subType;switch(e.type){case"update":var o=e.newValue;if(o===e.object.get(r))return null;Ue(i,o),e.newValue=i.reconcile(t.getChildNode(r),e.newValue,t,r),n.processIdentifier(r,e.newValue);break;case"add":Ue(i,e.newValue),e.newValue=i.instantiate(t,r,void 0,e.newValue),n.processIdentifier(r,e.newValue)}return e}}),Object.defineProperty(t.prototype,"processIdentifier",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this.identifierMode===Ht.YES&&t instanceof se){var r=t.identifier;if(r!==e)throw pt("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+r+"', but expected: '"+e+"'")}}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return e.getChildren().forEach((function(e){t[e.subpath]=e.snapshot})),t}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return Object.keys(e).forEach((function(r){t[r]=e[r].getSnapshot()})),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Ze(e.object);switch(e.type){case"update":return void t.emitPatch({op:"replace",path:zt(e.name),value:e.newValue.snapshot,oldValue:e.oldValue?e.oldValue.snapshot:void 0},t);case"add":return void t.emitPatch({op:"add",path:zt(e.name),value:e.newValue.snapshot,oldValue:void 0},t);case"delete":var r=e.oldValue.snapshot;return e.oldValue.die(),void t.emitPatch({op:"remove",path:zt(e.name),oldValue:r},t)}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){var n=e.storedValue;switch(r.op){case"add":case"replace":n.set(t,r.value);break;case"remove":n.delete(t)}}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t);var r=e.storedValue,n={};if(Array.from(r.keys()).forEach((function(e){n[e]=!1})),t)for(var i in t)r.set(i,t[i]),n[""+i]=!0;Object.keys(n).forEach((function(e){!1===n[e]&&r.delete(e)}))}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subType}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this;return yt(e)?He(Object.keys(e).map((function(n){return r._subType.validate(e[n],Le(t,n,r._subType))}))):Fe(t,e,"Value is not a plain object")}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return ct}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue.delete(t)}}),t}(fe);function Yt(e){return he(e)&&(e.flags&ie.Map)>0}qt.prototype.applySnapshot=(0,i.action)(qt.prototype.applySnapshot);var Jt=function(e){function t(t,r,n){void 0===n&&(n=[]);var i=e.call(this,t)||this;return Object.defineProperty(i,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(i,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Array}),Object.defineProperty(i,"hookInitializers",{enumerable:!0,configurable:!0,writable:!0,value:[]}),i.hookInitializers=n,i}return c(t,e),Object.defineProperty(t.prototype,"hooks",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var r=this.hookInitializers.length>0?this.hookInitializers.concat(e):[e];return new t(this.name,this._subType,r)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return qe(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t=[]);var r=e.type._subType,n={};return t.forEach((function(t,i){var o=""+i;n[o]=r.instantiate(e,o,void 0,t)})),n}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=f(f({},ft),{name:this.name});return i.observable.array(ot(e),t)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){(0,i._getAdministration)(t).dehancer=e.unbox,e.type.hookInitializers.forEach((function(e){var r=e(t);Object.keys(r).forEach((function(e){var n=r[e],i=Ee(t,e,n);wt(t,e,i)}))})),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue.slice()}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=Number(t);if(r<e.storedValue.length)return e.storedValue[r];throw pt("Not a child: "+t)}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Ze(e.object);t.assertWritable({subpath:""+e.index});var r=t.type._subType,n=t.getChildren();switch(e.type){case"update":if(e.newValue===e.object[e.index])return null;var i=Xt(t,r,[n[e.index]],[e.newValue],[e.index]);if(!i)return null;e.newValue=i[0];break;case"splice":var o=e.index,a=e.removedCount,s=e.added,u=Xt(t,r,n.slice(o,o+a),s,s.map((function(e,t){return o+t})));if(!u)return null;e.added=u;for(var l=o+a;l<n.length;l++)n[l].setParent(t,""+(l+s.length-a))}return e}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.getChildren().map((function(e){return e.snapshot}))}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=[];return Object.keys(e).forEach((function(r){t.push(e[r].getSnapshot())})),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Ze(e.object);switch(e.type){case"update":return void t.emitPatch({op:"replace",path:""+e.index,value:e.newValue.snapshot,oldValue:e.oldValue?e.oldValue.snapshot:void 0},t);case"splice":for(var r=e.removedCount-1;r>=0;r--)t.emitPatch({op:"remove",path:""+(e.index+r),oldValue:e.removed[r].snapshot},t);for(r=0;r<e.addedCount;r++)t.emitPatch({op:"add",path:""+(e.index+r),value:t.getChildNode(""+(e.index+r)).snapshot,oldValue:void 0},t);return}}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){var n=e.storedValue,i="-"===t?n.length:Number(t);switch(r.op){case"replace":n[i]=r.value;break;case"add":n.splice(i,0,r.value);break;case"remove":n.splice(i,1)}}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t),e.storedValue.replace(t)}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subType}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this;return bt(e)?He(e.map((function(e,n){return r._subType.validate(e,Le(t,""+n,r._subType))}))):Fe(t,e,"Value is not an array")}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return lt}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue.splice(Number(t),1)}}),t}(fe);function Xt(e,t,r,n,i){for(var o,a=!0,s=0;;s++){var u=s<=n.length-1,l=r[s],c=u?n[s]:void 0,f=""+i[s];if(((o=c)instanceof re||o instanceof se)&&(c=c.storedValue),!l&&!u)break;if(u)if(l)if(Qt(l,c))r[s]=Zt(t,e,f,c,l);else{for(var p=void 0,h=s;h<r.length;h++)if(Qt(r[h],c)){p=r.splice(h,1)[0];break}a=!1,d=Zt(t,e,f,c,p),r.splice(s,0,d)}else{if(Je(c)&&Ze(c).parent===e)throw pt("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+e.path+"/"+f+"', but it lives already at '"+Ze(c).path+"'");a=!1;var d=Zt(t,e,f,c);r.splice(s,0,d)}else a=!1,r.splice(s,1),l instanceof se&&l.createObservableInstanceIfNeeded(),l.die(),s--}return a?null:r}function Zt(e,t,r,n,i){Ue(e,n);var o=function(){if(Je(n)){var o=Ze(n);if(o.assertAlive(ct),null!==o.parent&&o.parent===t)return o.setParent(t,r),o}return i?e.reconcile(i,n,t,r):e.instantiate(t,r,void 0,n)}();return i&&i!==o&&(i instanceof se&&i.createObservableInstanceIfNeeded(),i.die()),o}function Qt(e,t){if(!e.isAlive)return!1;if(Je(t)){var r=Ze(t);return r.isAlive&&r===e}if(e.snapshot===t)return!0;if(!(e instanceof se))return!1;var n=e.getReconciliationType();return null!==e.identifier&&e.identifierAttribute&&yt(t)&&n.is(t)&&n.isMatchingSnapshotId(e,t)}function er(e){return he(e)&&(e.flags&ie.Array)>0}Jt.prototype.applySnapshot=(0,i.action)(Jt.prototype.applySnapshot);var tr="preProcessSnapshot",rr="postProcessSnapshot";function nr(){return Ze(this).toString()}var ir={name:"AnonymousModel",properties:{},initializers:lt};var or=function(e){function t(t){var r,i,o,a=e.call(this,t.name||ir.name)||this;return Object.defineProperty(a,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Object}),Object.defineProperty(a,"initializers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(a,"properties",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(a,"preProcessor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(a,"postProcessor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(a,"propertyNames",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(a,"named",{enumerable:!0,configurable:!0,writable:!0,value:function(e){return a.cloneAndEnhance({name:e})}}),Object.defineProperty(a,"props",{enumerable:!0,configurable:!0,writable:!0,value:function(e){return a.cloneAndEnhance({properties:e})}}),Object.defineProperty(a,"preProcessSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var t=a.preProcessor;return t?a.cloneAndEnhance({preProcessor:function(r){return t(e(r))}}):a.cloneAndEnhance({preProcessor:e})}}),Object.defineProperty(a,"postProcessSnapshot",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var t=a.postProcessor;return t?a.cloneAndEnhance({postProcessor:function(r){return e(t(r))}}):a.cloneAndEnhance({postProcessor:e})}}),Object.assign(a,ir,t),a.properties=(r=a.properties,i=Object.keys(r),o=new Set,i.forEach((function(e){if(o.has(e))throw pt(e+" is declared twice in the model. Model should not contain the same keys");o.add(e)})),i.reduce((function(e,t){if(t in n)throw pt("Hook '"+t+"' was defined as property. Hooks should be defined as part of the actions");var i=Object.getOwnPropertyDescriptor(r,t);if("get"in i)throw pt("Getters are not supported as properties. Please use views instead");var o=i.value;if(null==o)throw pt("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");if(mt(o))e[t]=Tr(function(e){switch(typeof e){case"string":return ur;case"number":return lr;case"boolean":return hr;case"object":if(e instanceof Date)return yr}throw pt("Cannot determine primitive type from value "+e)}(o),o);else if(o instanceof qt)e[t]=Tr(o,{});else if(o instanceof Jt)e[t]=Tr(o,[]);else if(!he(o))throw pt("Invalid type definition for property '"+t+"', cannot infer a type from a value like '"+o+"' ("+typeof o+")");return e}),f({},r))),a.properties,a.propertyNames=Object.keys(a.properties),a.identifierAttribute=a._getIdentifierAttribute(),a}return c(t,e),Object.defineProperty(t.prototype,"_getIdentifierAttribute",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=void 0;return this.forAllProps((function(t,r){if(r.flags&ie.Identifier){if(e)throw pt("Cannot define property '"+t+"' as object identifier, property '"+e+"' is already defined as identifier property");e=t}})),e}}),Object.defineProperty(t.prototype,"cloneAndEnhance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return new t({name:e.name||this.name,properties:Object.assign({},this.properties,e.properties),initializers:this.initializers.concat(e.initializers||[]),preProcessor:e.preProcessor||this.preProcessor,postProcessor:e.postProcessor||this.postProcessor})}}),Object.defineProperty(t.prototype,"actions",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(r){return t.instantiateActions(r,e(r)),r}]})}}),Object.defineProperty(t.prototype,"instantiateActions",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw pt("actions initializer should return a plain object containing actions");Object.keys(t).forEach((function(r){if(r===tr)throw pt("Cannot define action '"+tr+"', it should be defined using 'type.preProcessSnapshot(fn)' instead");if(r===rr)throw pt("Cannot define action '"+rr+"', it should be defined using 'type.postProcessSnapshot(fn)' instead");var i=t[r],o=e[r];if(r in n&&o){var a=i;i=function(){o.apply(null,arguments),a.apply(null,arguments)}}var s=i.$mst_middleware,u=i.bind(t);u._isFlowAction=i._isFlowAction||!1,u.$mst_middleware=s;var l=Ee(e,r,u);t[r]=l,wt(e,r,l)}))}}),Object.defineProperty(t.prototype,"volatile",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;if("function"!=typeof e)throw pt("You passed an "+typeof e+" to volatile state as an argument, when function is expected");return this.cloneAndEnhance({initializers:[function(r){return t.instantiateVolatileState(r,e(r)),r}]})}}),Object.defineProperty(t.prototype,"instantiateVolatileState",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw pt("volatile state initializer should return a plain object containing state");(0,i.set)(e,t)}}),Object.defineProperty(t.prototype,"extend",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(r){var n=e(r),i=n.actions,o=n.views,a=n.state,s=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}(n,["actions","views","state"]);for(var u in s)throw pt("The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '"+u+"'");return a&&t.instantiateVolatileState(r,a),o&&t.instantiateViews(r,o),i&&t.instantiateActions(r,i),r}]})}}),Object.defineProperty(t.prototype,"views",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;return this.cloneAndEnhance({initializers:[function(r){return t.instantiateViews(r,e(r)),r}]})}}),Object.defineProperty(t.prototype,"instantiateViews",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(!yt(t))throw pt("views initializer should return a plain object containing views");Object.getOwnPropertyNames(t).forEach((function(r){var n,o=Object.getOwnPropertyDescriptor(t,r);if("get"in o)(0,i.defineProperty)(e,r,o),(0,i.makeObservable)(e,((n={})[r]=i.computed,n));else{if("function"!=typeof o.value)throw pt("A view member should either be a function or getter based property");wt(e,r,o.value)}}))}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return qe(this,e,t,r,Je(n)?n:this.applySnapshotPreProcessor(n))}}),Object.defineProperty(t.prototype,"initializeChildNodes",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){void 0===t&&(t={});var r=e.type,n={};return r.forAllProps((function(r,i){n[r]=i.instantiate(e,r,void 0,t[r])})),n}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=f(f({},ft),{name:this.name});return i.observable.object(e,ct,t)}}),Object.defineProperty(t.prototype,"finalizeNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){wt(t,"toString",nr),this.forAllProps((function(r){(0,i._interceptReads)(t,r,e.unbox)})),this.initializers.reduce((function(e,t){return t(e)}),t),(0,i.intercept)(t,this.willChange),(0,i.observe)(t,this.didChange)}}),Object.defineProperty(t.prototype,"willChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e,r=Ze(t.object),n=t.name;r.assertWritable({subpath:n});var i=r.type.properties[n];return i&&(Ue(i,t.newValue),t.newValue=i.reconcile(r.getChildNode(n),t.newValue,r,n)),t}}),Object.defineProperty(t.prototype,"didChange",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e,r=Ze(t.object);if(r.type.properties[t.name]){var n=t.oldValue?t.oldValue.snapshot:void 0;r.emitPatch({op:"replace",path:zt(t.name),value:t.newValue.snapshot,oldValue:n},r)}}}),Object.defineProperty(t.prototype,"getChildren",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this,r=[];return this.forAllProps((function(n){r.push(t.getChildNode(e,n))})),r}}),Object.defineProperty(t.prototype,"getChildNode",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r;if(!(t in this.properties))throw pt("Not a value property: "+t);var n=(0,i._getAdministration)(e.storedValue,t),o=null===(r=n.raw)||void 0===r?void 0:r.call(n);if(!o)throw pt("Node not available for property "+t);return o}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this;void 0===t&&(t=!0);var n={};return this.forAllProps((function(t,o){try{(0,i.getAtom)(e.storedValue,t).reportObserved()}catch(e){throw pt(t+" property is declared twice")}n[t]=r.getChildNode(e,t).snapshot})),t?this.applySnapshotPostProcessor(n):n}}),Object.defineProperty(t.prototype,"processInitialSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t={};return Object.keys(e).forEach((function(r){t[r]=e[r].getSnapshot()})),this.applySnapshotPostProcessor(t)}}),Object.defineProperty(t.prototype,"applyPatchLocally",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){if("replace"!==r.op&&"add"!==r.op)throw pt("object does not support operation "+r.op);e.storedValue[t]=r.value}}),Object.defineProperty(t.prototype,"applySnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){Ue(this,t);var r=this.applySnapshotPreProcessor(t);this.forAllProps((function(t){e.storedValue[t]=r[t]}))}}),Object.defineProperty(t.prototype,"applySnapshotPreProcessor",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.preProcessor;return t?t.call(null,e):e}}),Object.defineProperty(t.prototype,"applySnapshotPostProcessor",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.postProcessor;return t?t.call(null,e):e}}),Object.defineProperty(t.prototype,"getChildType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return xt(),this.properties[e]}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this,n=this.applySnapshotPreProcessor(e);return yt(n)?He(this.propertyNames.map((function(e){return r.properties[e].validate(n[e],Le(t,e,r.properties[e]))}))):Fe(t,n,"Value is not a plain object")}}),Object.defineProperty(t.prototype,"forAllProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;this.propertyNames.forEach((function(r){return e(r,t.properties[r])}))}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this;return"{ "+this.propertyNames.map((function(t){return t+": "+e.properties[t].describe()})).join("; ")+" }"}}),Object.defineProperty(t.prototype,"getDefaultSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){return ct}}),Object.defineProperty(t.prototype,"removeChild",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){e.storedValue[t]=void 0}}),t}(fe);function ar(e){return he(e)&&(e.flags&ie.Object)>0}or.prototype.applySnapshot=(0,i.action)(or.prototype.applySnapshot);var sr=function(e){function t(t,r,n,i){void 0===i&&(i=ht);var o=e.call(this,t)||this;return Object.defineProperty(o,"flags",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(o,"checker",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(o,"initializer",{enumerable:!0,configurable:!0,writable:!0,value:i}),o.flags=r,o}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return Ye(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"createNewInstance",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.initializer(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return mt(e)&&this.checker(e)?Be():Fe(t,e,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))}}),t}(pe),ur=new sr("string",ie.String,(function(e){return"string"==typeof e})),lr=new sr("number",ie.Number,(function(e){return"number"==typeof e})),cr=new sr("integer",ie.Integer,(function(e){return dt(e)})),fr=new sr("float",ie.Float,(function(e){return t=e,Number(t)===t&&t%1!=0;var t})),pr=new sr("finite",ie.Finite,(function(e){return t=e,Number.isFinite(t);var t})),hr=new sr("boolean",ie.Boolean,(function(e){return"boolean"==typeof e})),dr=new sr("null",ie.Null,(function(e){return null===e})),br=new sr("undefined",ie.Undefined,(function(e){return void 0===e})),vr=new sr("Date",ie.Date,(function(e){return"number"==typeof e||e instanceof Date}),(function(e){return e instanceof Date?e:new Date(e)}));vr.getSnapshot=function(e){return e.storedValue.getTime()};var yr=vr;function gr(e){return he(e)&&(e.flags&(ie.String|ie.Number|ie.Integer|ie.Boolean|ie.Date))>0}var mr=function(e){function t(t){var r=e.call(this,JSON.stringify(t))||this;return Object.defineProperty(r,"value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Literal}),r.value=t,r}return c(t,e),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return Ye(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return JSON.stringify(this.value)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return mt(e)&&e===this.value?Be():Fe(t,e,"Value is not a literal "+JSON.stringify(this.value))}}),t}(pe);function _r(e){return new mr(e)}function wr(e){return he(e)&&(e.flags&ie.Literal)>0}var Or=function(e){function t(t,r,n,i){var o=e.call(this,t)||this;return Object.defineProperty(o,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(o,"_predicate",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(o,"_message",{enumerable:!0,configurable:!0,writable:!0,value:i}),o}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.Refinement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this._subtype.instantiate(e,t,r,n)}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this._subtype.validate(e,t);if(r.length>0)return r;var n=Je(e)?Ze(e).snapshot:e;return this._predicate(n)?Be():Fe(t,e,this._message(e))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this._subtype.reconcile(e,t,r,n)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),t}(ce);function Pr(e){return(e.flags&ie.Refinement)>0}var jr=function(e){function t(t,r,n){var i=e.call(this,t)||this;return Object.defineProperty(i,"_types",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(i,"_dispatcher",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(i,"_eager",{enumerable:!0,configurable:!0,writable:!0,value:!0}),n=f({eager:!0,dispatcher:void 0},n),i._dispatcher=n.dispatcher,n.eager||(i._eager=!1),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){var e=ie.Union;return this._types.forEach((function(t){e|=t.flags})),e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._types.some((function(t){return t.isAssignableFrom(e)}))}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"("+this._types.map((function(e){return e.describe()})).join(" | ")+")"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=this.determineType(n,void 0);if(!i)throw pt("No matching type for union "+this.describe());return i.instantiate(e,t,r,n)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=this.determineType(t,e.getReconciliationType());if(!i)throw pt("No matching type for union "+this.describe());return i.reconcile(e,t,r,n)}}),Object.defineProperty(t.prototype,"determineType",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this._dispatcher?this._dispatcher(e):t?t.is(e)?t:this._types.filter((function(e){return e!==t})).find((function(t){return t.is(e)})):this._types.find((function(t){return t.is(e)}))}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this._dispatcher)return this._dispatcher(e).validate(e,t);for(var r=[],n=0,i=0;i<this._types.length;i++){var o=this._types[i].validate(e,t);if(0===o.length){if(this._eager)return Be();n++}else r.push(o)}return 1===n?Be():Fe(t,e,"No type is applicable for the union").concat(He(r))}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._types}}),t}(ce);function Ar(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var n=he(e)?void 0:e,i=he(e)?b([e],t):t,o="("+i.map((function(e){return e.name})).join(" | ")+")";return new jr(o,i,n)}function Sr(e){return(e.flags&ie.Union)>0}var kr=function(e){function t(t,r,n){var i=e.call(this,t.name)||this;return Object.defineProperty(i,"_subtype",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(i,"_defaultValue",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(i,"optionalValues",{enumerable:!0,configurable:!0,writable:!0,value:n}),i}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return this._subtype.flags|ie.Optional},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype.describe()+"?"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(this.optionalValues.indexOf(n)>=0){var i=this.getDefaultInstanceOrSnapshot();return this._subtype.instantiate(e,t,r,i)}return this._subtype.instantiate(e,t,r,n)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this._subtype.reconcile(e,this.optionalValues.indexOf(t)<0&&this._subtype.is(t)?t:this.getDefaultInstanceOrSnapshot(),r,n)}}),Object.defineProperty(t.prototype,"getDefaultInstanceOrSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e="function"==typeof this._defaultValue?this._defaultValue():this._defaultValue;return"function"==typeof this._defaultValue&&Ue(this,e),e}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this.optionalValues.indexOf(e)>=0?Be():this._subtype.validate(e,t)}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this._subtype.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this._subtype}}),t}(ce);function Tr(e,t,r){return function(e,t){if("function"!=typeof t&&Je(t))throw pt("default value cannot be an instance, pass a snapshot or a function that creates an instance/snapshot instead");de()}(0,t),new kr(e,t,r||Er)}var Er=[void 0];function xr(e){return he(e)&&(e.flags&ie.Optional)>0}var Cr=Tr(br,void 0),Ir=Tr(dr,null);function Vr(e){return de(),Ar(e,Cr)}var Nr=function(e){function t(t,r){var n=e.call(this,t)||this;return Object.defineProperty(n,"_definition",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(n,"_subType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),n}return c(t,e),Object.defineProperty(t.prototype,"flags",{get:function(){return(this._subType?this._subType.flags:0)|ie.Late},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"getSubType",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(!this._subType){var t=void 0;try{t=this._definition()}catch(e){if(!(e instanceof ReferenceError))throw e;t=void 0}if(e&&void 0===t)throw pt("Late type seems to be used too early, the definition (still) returns undefined");t&&(this._subType=t)}return this._subType}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this.getSubType(!0).instantiate(e,t,r,n)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return this.getSubType(!0).reconcile(e,t,r,n)}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.getSubType(!1);return e?e.name:"<uknown late type>"}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this.getSubType(!1);return r?r.validate(e,t):Be()}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this.getSubType(!1);return!!t&&t.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"getSubTypes",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.getSubType(!1)||ue}}),t}(ce);function Mr(e){return he(e)&&(e.flags&ie.Late)>0}var Rr=function(e){function t(t,r){var n=e.call(this,t)||this;return Object.defineProperty(n,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Lazy}),Object.defineProperty(n,"loadedType",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(n,"pendingNodeList",{enumerable:!0,configurable:!0,writable:!0,value:i.observable.array()}),(0,i.when)((function(){return n.pendingNodeList.length>0&&n.pendingNodeList.some((function(e){return e.isAlive&&n.options.shouldLoadPredicate(e.parent?e.parent.value:null)}))}),(function(){n.options.loadType().then((0,i.action)((function(e){n.loadedType=e,n.pendingNodeList.forEach((function(e){e.parent&&n.loadedType&&e.parent.applyPatches([{op:"replace",path:"/"+e.subpath,value:e.snapshot}])}))})))})),n}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"<lazy "+this.name+">"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var o=this;if(this.loadedType)return this.loadedType.instantiate(e,t,r,n);var a=Ye(this,e,t,r,n);return this.pendingNodeList.push(a),(0,i.when)((function(){return!a.isAlive}),(function(){return o.pendingNodeList.splice(o.pendingNodeList.indexOf(a),1)})),a}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return this.loadedType?this.loadedType.validate(e,t):_t(e)?Be():Fe(t,e,"Value is not serializable and cannot be lazy")}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(t,r,n,i){return this.loadedType?(t.die(),this.loadedType.instantiate(n,i,n.environment,r)):e.prototype.reconcile.call(this,t,r,n,i)}}),t}(pe),Dr=function(e){function t(t){var r=e.call(this,t?"frozen("+t.name+")":"frozen")||this;return Object.defineProperty(r,"subType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Frozen}),r}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"<any immutable value>"}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return Ye(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return _t(e)?this.subType?this.subType.validate(e,t):Be():Fe(t,e,"Value is not serializable and cannot be frozen")}}),t}(pe),zr=new Dr;function Lr(e){return he(e)&&(e.flags&ie.Frozen)>0}var Br=function(){function e(e,t){if(Object.defineProperty(this,"targetType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"identifier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"node",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"resolvedReference",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),en(e))this.identifier=e;else{if(!Je(e))throw pt("Can only store references to tree nodes or identifiers, got: '"+e+"'");var r=Ze(e);if(!r.identifierAttribute)throw pt("Can only store references with a defined identifier attribute.");var n=r.unnormalizedIdentifier;if(null==n)throw pt("Can only store references to tree nodes with a defined identifier.");this.identifier=n}}return Object.defineProperty(e.prototype,"updateResolvedReference",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=Qr(this.identifier),r=e.root,n=r.identifierCache.getLastCacheModificationPerId(t);if(!this.resolvedReference||this.resolvedReference.lastCacheModification!==n){var i=this.targetType,o=r.identifierCache.resolve(i,t);if(!o)throw new Fr("[mobx-state-tree] Failed to resolve reference '"+this.identifier+"' to type '"+this.targetType.name+"' (from node: "+e.path+")");this.resolvedReference={node:o,lastCacheModification:n}}}}),Object.defineProperty(e.prototype,"resolvedValue",{get:function(){return this.updateResolvedReference(this.node),this.resolvedReference.node.value},enumerable:!1,configurable:!0}),e}(),Fr=function(e){function t(r){var n=e.call(this,r)||this;return Object.setPrototypeOf(n,t.prototype),n}return c(t,e),t}(Error),Hr=function(e){function t(t,r){var n=e.call(this,"reference("+t.name+")")||this;return Object.defineProperty(n,"targetType",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(n,"onInvalidated",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Reference}),n}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"isAssignableFrom",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.targetType.isAssignableFrom(e)}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return en(e)?Be():Fe(t,e,"Value is not a valid identifier, which is a string or a number")}}),Object.defineProperty(t.prototype,"fireInvalidated",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=t.parent;if(i&&i.isAlive){var o=i.storedValue;o&&this.onInvalidated({cause:e,parent:o,invalidTarget:n?n.storedValue:void 0,invalidId:r,replaceRef:function(e){_(t.root.storedValue,{op:"replace",value:e,path:t.path})},removeRef:function(){ar(i.type)?this.replaceRef(void 0):_(t.root.storedValue,{op:"remove",path:t.path})}})}}}),Object.defineProperty(t.prototype,"addTargetNodeWatcher",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){var r=this,i=this.getValue(e);if(i){var o=Ze(i),a=function(i,a){var s=function(e){switch(e){case n.beforeDestroy:return"destroy";case n.beforeDetach:return"detach";default:return}}(a);s&&r.fireInvalidated(s,e,t,o)},s=o.registerHook(n.beforeDetach,a),u=o.registerHook(n.beforeDestroy,a);return function(){s(),u()}}}}),Object.defineProperty(t.prototype,"watchTargetNodeForInvalidations",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r){var i=this;if(this.onInvalidated){var o;e.registerHook(n.beforeDestroy,(function(){o&&o()}));var a=function(n){o&&o();var a=e.parent,s=a&&a.storedValue;a&&a.isAlive&&s&&((r?r.get(t,s):e.root.identifierCache.has(i.targetType,Qr(t)))?o=i.addTargetNodeWatcher(e,t):n||i.fireInvalidated("invalidSnapshotReference",e,t,null))};e.state===Ge.FINALIZED?a(!0):(e.isRoot||e.root.registerHook(n.afterCreationFinalization,(function(){e.parent&&e.parent.createObservableInstanceIfNeeded()})),e.registerHook(n.afterAttach,(function(){a(!1)})))}}}),t}(pe),Ur=function(e){function t(t,r){return e.call(this,t,r)||this}return c(t,e),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.isAlive)return e.storedValue.resolvedValue}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue.identifier}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=Je(n)?D(n):n,o=new Br(n,this.targetType),a=Ye(this,e,t,r,o);return o.node=a,this.watchTargetNodeForInvalidations(a,i,void 0),a}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(!e.isDetaching&&e.type===this){var i=Je(t),o=e.storedValue;if(!i&&o.identifier===t||i&&o.resolvedValue===t)return e.setParent(r,n),e}var a=this.instantiate(r,n,void 0,t);return e.die(),a}}),t}(Hr),$r=function(e){function t(t,r,n){var i=e.call(this,t,n)||this;return Object.defineProperty(i,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),i}return c(t,e),Object.defineProperty(t.prototype,"getValue",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(e.isAlive)return this.options.get(e.storedValue,e.parent?e.parent.storedValue:null)}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=Je(n)?this.options.set(n,e?e.storedValue:null):n,o=Ye(this,e,t,r,i);return this.watchTargetNodeForInvalidations(o,i,this.options),o}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=Je(t)?this.options.set(t,e?e.storedValue:null):t;if(!e.isDetaching&&e.type===this&&e.storedValue===i)return e.setParent(r,n),e;var o=this.instantiate(r,n,void 0,i);return e.die(),o}}),t}(Hr);function Gr(e,t){de();var r=t||void 0,n=t?t.onInvalidated:void 0;return r&&(r.get||r.set)?new $r(e,{get:r.get,set:r.set},n):new Ur(e,n)}function Wr(e){return(e.flags&ie.Reference)>0}var Kr=function(e){function t(t,r){var n=e.call(this,t)||this;return Object.defineProperty(n,"validType",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(n,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Identifier}),n}return c(t,e),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(!(e&&e.type instanceof or))throw pt("Identifier types can only be instantiated as direct child of a model type");return Ye(this,e,t,r,n)}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){if(e.storedValue!==t)throw pt("Tried to change identifier from '"+e.storedValue+"' to '"+t+"'. Changing identifiers is not allowed.");return e.setParent(r,n),e}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){return typeof e!==this.validType?Fe(t,e,"Value is not a valid "+this.describe()+", expected a "+this.validType):Be()}}),t}(pe),qr=function(e){function t(){var t=e.call(this,"identifier","string")||this;return Object.defineProperty(t,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Identifier}),t}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"identifier"}}),t}(Kr),Yr=function(e){function t(){return e.call(this,"identifierNumber","number")||this}return c(t,e),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return e.storedValue}}),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return"identifierNumber"}}),t}(Kr),Jr=new qr,Xr=new Yr;function Zr(e){return he(e)&&(e.flags&ie.Identifier)>0}function Qr(e){return""+e}function en(e){return"string"==typeof e||"number"==typeof e}var tn=function(e){function t(t){var r=e.call(this,t.name)||this;return Object.defineProperty(r,"options",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(r,"flags",{enumerable:!0,configurable:!0,writable:!0,value:ie.Custom}),r}return c(t,e),Object.defineProperty(t.prototype,"describe",{enumerable:!1,configurable:!0,writable:!0,value:function(){return this.name}}),Object.defineProperty(t.prototype,"isValidSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t){if(this.options.isTargetType(e))return Be();var r=this.options.getValidationMessage(e);return r?Fe(t,e,"Invalid value for type '"+this.name+"': "+r):Be()}}),Object.defineProperty(t.prototype,"getSnapshot",{enumerable:!1,configurable:!0,writable:!0,value:function(e){return this.options.toSnapshot(e.storedValue)}}),Object.defineProperty(t.prototype,"instantiate",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){return Ye(this,e,t,r,this.options.isTargetType(n)?n:this.options.fromSnapshot(n,e&&e.root.environment))}}),Object.defineProperty(t.prototype,"reconcile",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,r,n){var i=!this.options.isTargetType(t);if(!e.isDetaching&&e.type===this&&(i?t===e.snapshot:t===e.storedValue))return e.setParent(r,n),e;var o=i?this.options.fromSnapshot(t,r.root.environment):t,a=this.instantiate(r,n,void 0,o);return e.die(),a}}),t}(pe),rn={enumeration:function(e,t){var r="string"==typeof e?t:e,n=Ar.apply(void 0,b(r.map((function(e){return _r(""+e)}))));return"string"==typeof e&&(n.name=e),n},model:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r="string"==typeof e[0]?e.shift():"AnonymousModel",n=e.shift()||{};return new or({name:r,properties:n})},compose:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r="string"==typeof e[0],n=r?e[0]:"AnonymousModel";return r&&e.shift(),e.reduce((function(e,t){return e.cloneAndEnhance({name:e.name+"_"+t.name,properties:t.properties,initializers:t.initializers,preProcessor:function(r){return t.applySnapshotPreProcessor(e.applySnapshotPreProcessor(r))},postProcessor:function(r){return t.applySnapshotPostProcessor(e.applySnapshotPostProcessor(r))}})})).named(n)},custom:function(e){return new tn(e)},reference:Gr,safeReference:function(e,t){var r=Gr(e,f(f({},t),{onInvalidated:function(e){t&&t.onInvalidated&&t.onInvalidated(e),e.removeRef()}}));return t&&!1===t.acceptsUndefined?r:Vr(r)},union:Ar,optional:Tr,literal:_r,maybe:Vr,maybeNull:function(e){return de(),Ar(e,Ir)},refinement:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r="string"==typeof e[0]?e.shift():he(e[0])?e[0].name:null,n=e[0],i=e[1],o=e[2]?e[2]:function(e){return"Value does not respect the refinement predicate"};return de(),xt(),new Or(r,n,i,o)},string:ur,boolean:hr,number:lr,integer:cr,float:fr,finite:pr,Date:yr,map:function(e){return new qt("Map<string, "+e.name+">",e)},array:function(e){return de(),new Jt(e.name+"[]",e)},frozen:function(e){return 0===arguments.length?zr:he(e)?new Dr(e):Tr(zr,e)},identifier:Jr,identifierNumber:Xr,late:function(e,t){var r="string"==typeof e?e:"late("+e.toString()+")";return new Nr(r,"string"==typeof e?t:e)},lazy:function(e,t){return new Rr(e,t)},undefined:br,null:dr,snapshotProcessor:function(e,t,r){return de(),new $t(e,t,r)}}},42489:(e,t,r)=>{function n(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];throw new Error("number"==typeof e?"[MobX] minified error nr: "+e+(r.length?" "+r.map(String).join(","):"")+". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts":"[MobX] "+e)}r.r(t),r.d(t,{$mobx:()=>W,FlowCancellationError:()=>br,ObservableMap:()=>wn,ObservableSet:()=>jn,Reaction:()=>xt,_allowStateChanges:()=>Ye,_allowStateChangesInsideComputed:()=>qt,_allowStateReadsEnd:()=>dt,_allowStateReadsStart:()=>ht,_autoAction:()=>Kt,_endAction:()=>qe,_getAdministration:()=>Wn,_getGlobalState:()=>wt,_interceptReads:()=>Pr,_isComputingDerivation:()=>st,_resetGlobalState:()=>Ot,_startAction:()=>Ke,action:()=>Wt,autorun:()=>Jt,comparer:()=>J,computed:()=>Be,configure:()=>ur,createAtom:()=>Y,defineProperty:()=>zr,entries:()=>Vr,extendObservable:()=>lr,flow:()=>mr,flowResult:()=>wr,get:()=>Dr,getAtom:()=>Gn,getDebugName:()=>Kn,getDependencyTree:()=>cr,getObserverTree:()=>pr,has:()=>Rr,intercept:()=>jr,isAction:()=>Yt,isBoxedObservable:()=>Qe,isComputed:()=>Sr,isComputedProp:()=>kr,isFlow:()=>Or,isFlowCancellationError:()=>vr,isObservable:()=>Er,isObservableArray:()=>yn,isObservableMap:()=>On,isObservableObject:()=>In,isObservableProp:()=>xr,isObservableSet:()=>An,keys:()=>Cr,makeAutoObservable:()=>on,makeObservable:()=>rn,observable:()=>Re,observe:()=>Br,onBecomeObserved:()=>rr,onBecomeUnobserved:()=>nr,onReactionError:()=>Ct,override:()=>ee,ownKeys:()=>Lr,reaction:()=>Qt,remove:()=>Mr,runInAction:()=>qt,set:()=>Nr,spy:()=>Dt,toJS:()=>Ur,trace:()=>$r,transaction:()=>Gr,untracked:()=>ct,values:()=>Ir,when:()=>Wr});var i={};function o(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==r.g?r.g:"undefined"!=typeof self?self:i}var a=Object.assign,s=Object.getOwnPropertyDescriptor,u=Object.defineProperty,l=Object.prototype,c=[];Object.freeze(c);var f={};Object.freeze(f);var p="undefined"!=typeof Proxy,h=Object.toString();function d(){p||n("Proxy not available")}function b(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var v=function(){};function y(e){return"function"==typeof e}function g(e){switch(typeof e){case"string":case"symbol":case"number":return!0}return!1}function m(e){return null!==e&&"object"==typeof e}function _(e){if(!m(e))return!1;var t=Object.getPrototypeOf(e);if(null==t)return!0;var r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r.toString()===h}function w(e){var t=null==e?void 0:e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName)}function O(e,t,r){u(e,t,{enumerable:!1,writable:!0,configurable:!0,value:r})}function P(e,t,r){u(e,t,{enumerable:!1,writable:!1,configurable:!0,value:r})}function j(e,t){var r="isMobX"+e;return t.prototype[r]=!0,function(e){return m(e)&&!0===e[r]}}function A(e){return null!=e&&"[object Map]"===Object.prototype.toString.call(e)}function S(e){return null!=e&&"[object Set]"===Object.prototype.toString.call(e)}var k=void 0!==Object.getOwnPropertySymbols,T="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:k?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function E(e){return null===e?null:"object"==typeof e?""+e:e}function x(e,t){return l.hasOwnProperty.call(e,t)}var C=Object.getOwnPropertyDescriptors||function(e){var t={};return T(e).forEach((function(r){t[r]=s(e,r)})),t};function I(e,t){return!!(e&t)}function V(e,t,r){return r?e|=t:e&=~t,e}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function M(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,F(n.key),n)}}function R(e,t,r){return t&&M(e.prototype,t),r&&M(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function D(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return N(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},z.apply(null,arguments)}function L(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,B(e,t)}function B(e,t){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},B(e,t)}function F(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var H=Symbol("mobx-stored-annotations");function U(e){return Object.assign((function(t,r){if(G(r))return e.decorate_20223_(t,r);$(t,r,e)}),e)}function $(e,t,r){x(e,H)||O(e,H,z({},e[H])),function(e){return e.annotationType_===Q}(r)||(e[H][t]=r)}function G(e){return"object"==typeof e&&"string"==typeof e.kind}var W=Symbol("mobx administration"),K=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.flags_=0,this.observers_=new Set,this.lastAccessedBy_=0,this.lowestObserverState_=tt.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return Tt(this)},t.reportChanged=function(){St(),Et(this),kt()},t.toString=function(){return this.name_},R(e,[{key:"isBeingObserved",get:function(){return I(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=V(this.flags_,e.isBeingObservedMask_,t)}},{key:"isPendingUnobservation",get:function(){return I(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=V(this.flags_,e.isPendingUnobservationMask_,t)}},{key:"diffValue",get:function(){return I(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=V(this.flags_,e.diffValueMask_,1===t)}}])}();K.isBeingObservedMask_=1,K.isPendingUnobservationMask_=2,K.diffValueMask_=4;var q=j("Atom",K);function Y(e,t,r){void 0===t&&(t=v),void 0===r&&(r=v);var n=new K(e);return t!==v&&rr(n,t),r!==v&&nr(n,r),n}var J={identity:function(e,t){return e===t},structural:function(e,t){return Jn(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Jn(e,t,1)}};function X(e,t,r){return Er(e)?e:Array.isArray(e)?Re.array(e,{name:r}):_(e)?Re.object(e,void 0,{name:r}):A(e)?Re.map(e,{name:r}):S(e)?Re.set(e,{name:r}):"function"!=typeof e||Yt(e)||Or(e)?e:w(e)?mr(e):Kt(r,e)}function Z(e){return e}var Q="override",ee=U({annotationType_:Q,make_:function(e,t){return 0},extend_:function(e,t,r,i){n("'"+this.annotationType_+"' can only be used with 'makeObservable'")},decorate_20223_:function(e,t){console.warn("'"+this.annotationType_+"' cannot be used with decorators - this is a no-op")}});function te(e,t){return{annotationType_:e,options_:t,make_:re,extend_:ne,decorate_20223_:ie}}function re(e,t,r,n){var i;if(null!=(i=this.options_)&&i.bound)return null===this.extend_(e,t,r,!1)?0:1;if(n===e.target_)return null===this.extend_(e,t,r,!1)?0:2;if(Yt(r.value))return 1;var o=oe(e,this,t,r,!1);return u(n,t,o),2}function ne(e,t,r,n){var i=oe(e,this,t,r);return e.defineProperty_(t,i,n)}function ie(e,t){var r=t.kind,i=t.name,o=t.addInitializer,a=this;if("field"!=r){var s,u,l,c,f,p;if("method"==r)return Yt(e)||(u=e,e=Ge(null!=(l=null==(c=a.options_)?void 0:c.name)?l:i.toString(),u,null!=(f=null==(p=a.options_)?void 0:p.autoAction)&&f)),null!=(s=this.options_)&&s.bound&&o((function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t})),e;n("Cannot apply '"+a.annotationType_+"' to '"+String(i)+"' (kind: "+r+"):\n'"+a.annotationType_+"' can only be used on properties with a function value.")}else o((function(){$(this,i,a)}))}function oe(e,t,r,n,i){var o,a,s,u,l,c,f,p;void 0===i&&(i=_t.safeDescriptors),p=n,t.annotationType_,p.value;var h,d=n.value;return null!=(o=t.options_)&&o.bound&&(d=d.bind(null!=(h=e.proxy_)?h:e.target_)),{value:Ge(null!=(a=null==(s=t.options_)?void 0:s.name)?a:r.toString(),d,null!=(u=null==(l=t.options_)?void 0:l.autoAction)&&u,null!=(c=t.options_)&&c.bound?null!=(f=e.proxy_)?f:e.target_:void 0),configurable:!i||e.isPlainObject_,enumerable:!1,writable:!i}}function ae(e,t){return{annotationType_:e,options_:t,make_:se,extend_:ue,decorate_20223_:le}}function se(e,t,r,n){var i;if(n===e.target_)return null===this.extend_(e,t,r,!1)?0:2;if(null!=(i=this.options_)&&i.bound&&(!x(e.target_,t)||!Or(e.target_[t]))&&null===this.extend_(e,t,r,!1))return 0;if(Or(r.value))return 1;var o=ce(e,this,0,r,!1,!1);return u(n,t,o),2}function ue(e,t,r,n){var i,o=ce(e,this,0,r,null==(i=this.options_)?void 0:i.bound);return e.defineProperty_(t,o,n)}function le(e,t){var r,n=t.name,i=t.addInitializer;return Or(e)||(e=mr(e)),null!=(r=this.options_)&&r.bound&&i((function(){var e=this,t=e[n].bind(e);t.isMobXFlow=!0,e[n]=t})),e}function ce(e,t,r,n,i,o){var a;void 0===o&&(o=_t.safeDescriptors),a=n,t.annotationType_,a.value;var s,u=n.value;return Or(u)||(u=mr(u)),i&&((u=u.bind(null!=(s=e.proxy_)?s:e.target_)).isMobXFlow=!0),{value:u,configurable:!o||e.isPlainObject_,enumerable:!1,writable:!o}}function fe(e,t){return{annotationType_:e,options_:t,make_:pe,extend_:he,decorate_20223_:de}}function pe(e,t,r){return null===this.extend_(e,t,r,!1)?0:1}function he(e,t,r,n){return i=r,this.annotationType_,i.get,e.defineComputedProperty_(t,z({},this.options_,{get:r.get,set:r.set}),n);var i}function de(e,t){var r=this,n=t.name;return(0,t.addInitializer)((function(){var t=En(this)[W],i=z({},r.options_,{get:e,context:this});i.name||(i.name="ObservableObject."+n.toString()),t.values_.set(n,new et(i))})),function(){return this[W].getObservablePropValue_(n)}}function be(e,t){return{annotationType_:e,options_:t,make_:ve,extend_:ye,decorate_20223_:ge}}function ve(e,t,r){return null===this.extend_(e,t,r,!1)?0:1}function ye(e,t,r,n){var i,o;return this.annotationType_,e.defineObservableProperty_(t,r.value,null!=(i=null==(o=this.options_)?void 0:o.enhancer)?i:X,n)}function ge(e,t){var r=this,n=t.kind,i=t.name,o=new WeakSet;function a(e,t){var n,a,s=En(e)[W],u=new Ze(t,null!=(n=null==(a=r.options_)?void 0:a.enhancer)?n:X,"ObservableObject."+i.toString(),!1);s.values_.set(i,u),o.add(e)}if("accessor"==n)return{get:function(){return o.has(this)||a(this,e.get.call(this)),this[W].getObservablePropValue_(i)},set:function(e){return o.has(this)||a(this,e),this[W].setObservablePropValue_(i,e)},init:function(e){return o.has(this)||a(this,e),e}}}var me="true",_e=we();function we(e){return{annotationType_:me,options_:e,make_:Oe,extend_:Pe,decorate_20223_:je}}function Oe(e,t,r,n){var i,o,a,s;if(r.get)return Be.make_(e,t,r,n);if(r.set){var l=Ge(t.toString(),r.set);return n===e.target_?null===e.defineProperty_(t,{configurable:!_t.safeDescriptors||e.isPlainObject_,set:l})?0:2:(u(n,t,{configurable:!0,set:l}),2)}if(n!==e.target_&&"function"==typeof r.value)return w(r.value)?(null!=(s=this.options_)&&s.autoBind?mr.bound:mr).make_(e,t,r,n):(null!=(a=this.options_)&&a.autoBind?Kt.bound:Kt).make_(e,t,r,n);var c,f=!1===(null==(i=this.options_)?void 0:i.deep)?Re.ref:Re;return"function"==typeof r.value&&null!=(o=this.options_)&&o.autoBind&&(r.value=r.value.bind(null!=(c=e.proxy_)?c:e.target_)),f.make_(e,t,r,n)}function Pe(e,t,r,n){var i,o,a;return r.get?Be.extend_(e,t,r,n):r.set?e.defineProperty_(t,{configurable:!_t.safeDescriptors||e.isPlainObject_,set:Ge(t.toString(),r.set)},n):("function"==typeof r.value&&null!=(i=this.options_)&&i.autoBind&&(r.value=r.value.bind(null!=(a=e.proxy_)?a:e.target_)),(!1===(null==(o=this.options_)?void 0:o.deep)?Re.ref:Re).extend_(e,t,r,n))}function je(e,t){n("'"+this.annotationType_+"' cannot be used as a decorator")}var Ae={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function Se(e){return e||Ae}Object.freeze(Ae);var ke=be("observable"),Te=be("observable.ref",{enhancer:Z}),Ee=be("observable.shallow",{enhancer:function(e,t,r){return null==e||In(e)||yn(e)||On(e)||An(e)?e:Array.isArray(e)?Re.array(e,{name:r,deep:!1}):_(e)?Re.object(e,void 0,{name:r,deep:!1}):A(e)?Re.map(e,{name:r,deep:!1}):S(e)?Re.set(e,{name:r,deep:!1}):void 0}}),xe=be("observable.struct",{enhancer:function(e,t){return Jn(e,t)?t:e}}),Ce=U(ke);function Ie(e){return!0===e.deep?X:!1===e.deep?Z:(t=e.defaultDecorator)&&null!=(r=null==(n=t.options_)?void 0:n.enhancer)?r:X;var t,r,n}function Ve(e,t,r){return G(t)?ke.decorate_20223_(e,t):g(t)?void $(e,t,ke):Er(e)?e:_(e)?Re.object(e,t,r):Array.isArray(e)?Re.array(e,t):A(e)?Re.map(e,t):S(e)?Re.set(e,t):"object"==typeof e&&null!==e?e:Re.box(e,t)}a(Ve,Ce);var Ne,Me,Re=a(Ve,{box:function(e,t){var r=Se(t);return new Ze(e,Ie(r),r.name,!0,r.equals)},array:function(e,t){var r=Se(t);return(!1===_t.useProxies||!1===r.proxy?$n:cn)(e,Ie(r),r.name)},map:function(e,t){var r=Se(t);return new wn(e,Ie(r),r.name)},set:function(e,t){var r=Se(t);return new jn(e,Ie(r),r.name)},object:function(e,t,r){return qn((function(){return lr(!1===_t.useProxies||!1===(null==r?void 0:r.proxy)?En({},r):function(e,t){var r,n;return d(),null!=(n=(r=(e=En(e,t))[W]).proxy_)?n:r.proxy_=new Proxy(e,Yr)}({},r),e,t)}))},ref:U(Te),shallow:U(Ee),deep:Ce,struct:U(xe)}),De="computed",ze=fe(De),Le=fe("computed.struct",{equals:J.structural}),Be=function(e,t){if(G(t))return ze.decorate_20223_(e,t);if(g(t))return $(e,t,ze);if(_(e))return U(fe(De,e));var r=_(t)?t:{};return r.get=e,r.name||(r.name=e.name||""),new et(r)};Object.assign(Be,ze),Be.struct=U(Le);var Fe=0,He=1,Ue=null!=(Ne=null==(Me=s((function(){}),"name"))?void 0:Me.configurable)&&Ne,$e={value:"action",configurable:!0,writable:!1,enumerable:!1};function Ge(e,t,r,n){function i(){return We(e,r,t,n||this,arguments)}return void 0===r&&(r=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Ue&&($e.value=e,u(i,"name",$e)),i}function We(e,t,r,n,i){var o=Ke(0,t);try{return r.apply(n,i)}catch(e){throw o.error_=e,e}finally{qe(o)}}function Ke(e,t,r,n){var i=_t.trackingDerivation,o=!t||!i;St();var a=_t.allowStateChanges;o&&(ft(),a=Je(!0));var s={runAsAction_:o,prevDerivation_:i,prevAllowStateChanges_:a,prevAllowStateReads_:ht(!0),notifySpy_:!1,startTime_:0,actionId_:He++,parentActionId_:Fe};return Fe=s.actionId_,s}function qe(e){Fe!==e.actionId_&&n(30),Fe=e.parentActionId_,void 0!==e.error_&&(_t.suppressReactionErrors=!0),Xe(e.prevAllowStateChanges_),dt(e.prevAllowStateReads_),kt(),e.runAsAction_&&pt(e.prevDerivation_),_t.suppressReactionErrors=!1}function Ye(e,t){var r=Je(e);try{return t()}finally{Xe(r)}}function Je(e){var t=_t.allowStateChanges;return _t.allowStateChanges=e,t}function Xe(e){_t.allowStateChanges=e}var Ze=function(e){function t(t,r,n,i,o){var a;return void 0===n&&(n="ObservableValue"),void 0===i&&(i=!0),void 0===o&&(o=J.default),(a=e.call(this,n)||this).enhancer=void 0,a.name_=void 0,a.equals=void 0,a.hasUnreportedChange_=!1,a.interceptors_=void 0,a.changeListeners_=void 0,a.value_=void 0,a.dehancer=void 0,a.enhancer=r,a.name_=n,a.equals=o,a.value_=r(t,void 0,n),a}L(t,e);var r=t.prototype;return r.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},r.set=function(e){this.value_,(e=this.prepareNewValue_(e))!==_t.UNCHANGED&&this.setNewValue_(e)},r.prepareNewValue_=function(e){if(Jr(this)){var t=Zr(this,{object:this,type:sn,newValue:e});if(!t)return _t.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?_t.UNCHANGED:e},r.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),Qr(this)&&tn(this,{type:sn,object:this,newValue:e,oldValue:t})},r.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},r.intercept_=function(e){return Xr(this,e)},r.observe_=function(e,t){return t&&e({observableKind:"value",debugObjectName:this.name_,object:this,type:sn,newValue:this.value_,oldValue:void 0}),en(this,e)},r.raw=function(){return this.value_},r.toJSON=function(){return this.get()},r.toString=function(){return this.name_+"["+this.value_+"]"},r.valueOf=function(){return E(this.get())},r[Symbol.toPrimitive]=function(){return this.valueOf()},t}(K),Qe=j("ObservableValue",Ze),et=function(){function e(e){this.dependenciesState_=tt.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.observers_=new Set,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=tt.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new it(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.isTracing_=rt.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||n(31),this.derivation=e.get,this.name_=e.name||"ComputedValue",e.set&&(this.setter_=Ge("ComputedValue-setter",e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?J.structural:J.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){!function(e){e.lowestObserverState_===tt.UP_TO_DATE_&&(e.lowestObserverState_=tt.POSSIBLY_STALE_,e.observers_.forEach((function(e){e.dependenciesState_===tt.UP_TO_DATE_&&(e.dependenciesState_=tt.POSSIBLY_STALE_,e.onBecomeStale_())})))}(this)},t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.get=function(){if(this.isComputing&&n(32,this.name_,this.derivation),0!==_t.inBatch||0!==this.observers_.size||this.keepAlive_){if(Tt(this),at(this)){var e=_t.trackingContext;this.keepAlive_&&!e&&(_t.trackingContext=this),this.trackAndCompute()&&function(e){e.lowestObserverState_!==tt.STALE_&&(e.lowestObserverState_=tt.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===tt.POSSIBLY_STALE_?t.dependenciesState_=tt.STALE_:t.dependenciesState_===tt.UP_TO_DATE_&&(e.lowestObserverState_=tt.UP_TO_DATE_)})))}(this),_t.trackingContext=e}}else at(this)&&(this.warnAboutUntrackedRead_(),St(),this.value_=this.computeValue_(!1),kt());var t=this.value_;if(ot(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter&&n(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else n(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===tt.NOT_TRACKING_,r=this.computeValue_(!0),n=t||ot(e)||ot(r)||!this.equals_(e,r);return n&&(this.value_=r),n},t.computeValue_=function(e){this.isComputing=!0;var t,r=Je(!1);if(e)t=ut(this,this.derivation,this.scope_);else if(!0===_t.disableErrorBoundaries)t=this.derivation.call(this.scope_);else try{t=this.derivation.call(this.scope_)}catch(e){t=new it(e)}return Xe(r),this.isComputing=!1,t},t.suspend_=function(){this.keepAlive_||(lt(this),this.value_=void 0)},t.observe_=function(e,t){var r=this,n=!0,i=void 0;return Jt((function(){var o=r.get();if(!n||t){var a=ft();e({observableKind:"computed",debugObjectName:r.name_,type:sn,object:r,newValue:o,oldValue:i}),pt(a)}n=!1,i=o}))},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return E(this.get())},t[Symbol.toPrimitive]=function(){return this.valueOf()},R(e,[{key:"isComputing",get:function(){return I(this.flags_,e.isComputingMask_)},set:function(t){this.flags_=V(this.flags_,e.isComputingMask_,t)}},{key:"isRunningSetter",get:function(){return I(this.flags_,e.isRunningSetterMask_)},set:function(t){this.flags_=V(this.flags_,e.isRunningSetterMask_,t)}},{key:"isBeingObserved",get:function(){return I(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=V(this.flags_,e.isBeingObservedMask_,t)}},{key:"isPendingUnobservation",get:function(){return I(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=V(this.flags_,e.isPendingUnobservationMask_,t)}},{key:"diffValue",get:function(){return I(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=V(this.flags_,e.diffValueMask_,1===t)}}])}();et.isComputingMask_=1,et.isRunningSetterMask_=2,et.isBeingObservedMask_=4,et.isPendingUnobservationMask_=8,et.diffValueMask_=16;var tt,rt,nt=j("ComputedValue",et);!function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"}(tt||(tt={})),function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(rt||(rt={}));var it=function(e){this.cause=void 0,this.cause=e};function ot(e){return e instanceof it}function at(e){switch(e.dependenciesState_){case tt.UP_TO_DATE_:return!1;case tt.NOT_TRACKING_:case tt.STALE_:return!0;case tt.POSSIBLY_STALE_:for(var t=ht(!0),r=ft(),n=e.observing_,i=n.length,o=0;o<i;o++){var a=n[o];if(nt(a)){if(_t.disableErrorBoundaries)a.get();else try{a.get()}catch(e){return pt(r),dt(t),!0}if(e.dependenciesState_===tt.STALE_)return pt(r),dt(t),!0}}return bt(e),pt(r),dt(t),!1}}function st(){return null!==_t.trackingDerivation}function ut(e,t,r){var n=ht(!0);bt(e),e.newObserving_=new Array(0===e.runId_?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++_t.runId;var i,o=_t.trackingDerivation;if(_t.trackingDerivation=e,_t.inBatch++,!0===_t.disableErrorBoundaries)i=t.call(r);else try{i=t.call(r)}catch(e){i=new it(e)}return _t.inBatch--,_t.trackingDerivation=o,function(e){for(var t=e.observing_,r=e.observing_=e.newObserving_,n=tt.UP_TO_DATE_,i=0,o=e.unboundDepsCount_,a=0;a<o;a++){var s=r[a];0===s.diffValue&&(s.diffValue=1,i!==a&&(r[i]=s),i++),s.dependenciesState_>n&&(n=s.dependenciesState_)}for(r.length=i,e.newObserving_=null,o=t.length;o--;){var u=t[o];0===u.diffValue&&jt(u,e),u.diffValue=0}for(;i--;){var l=r[i];1===l.diffValue&&(l.diffValue=0,Pt(l,e))}n!==tt.UP_TO_DATE_&&(e.dependenciesState_=n,e.onBecomeStale_())}(e),dt(n),i}function lt(e){var t=e.observing_;e.observing_=[];for(var r=t.length;r--;)jt(t[r],e);e.dependenciesState_=tt.NOT_TRACKING_}function ct(e){var t=ft();try{return e()}finally{pt(t)}}function ft(){var e=_t.trackingDerivation;return _t.trackingDerivation=null,e}function pt(e){_t.trackingDerivation=e}function ht(e){var t=_t.allowStateReads;return _t.allowStateReads=e,t}function dt(e){_t.allowStateReads=e}function bt(e){if(e.dependenciesState_!==tt.UP_TO_DATE_){e.dependenciesState_=tt.UP_TO_DATE_;for(var t=e.observing_,r=t.length;r--;)t[r].lowestObserverState_=tt.UP_TO_DATE_}}var vt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],yt=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},gt=!0,mt=!1,_t=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(gt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new yt).version&&(gt=!1),gt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new yt):(setTimeout((function(){mt||n(35)}),1),new yt)}();function wt(){return _t}function Ot(){var e=new yt;for(var t in e)-1===vt.indexOf(t)&&(_t[t]=e[t]);_t.allowStateChanges=!_t.enforceActions}function Pt(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function jt(e,t){e.observers_.delete(t),0===e.observers_.size&&At(e)}function At(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,_t.pendingUnobservations.push(e))}function St(){_t.inBatch++}function kt(){if(0==--_t.inBatch){Nt();for(var e=_t.pendingUnobservations,t=0;t<e.length;t++){var r=e[t];r.isPendingUnobservation=!1,0===r.observers_.size&&(r.isBeingObserved&&(r.isBeingObserved=!1,r.onBUO()),r instanceof et&&r.suspend_())}_t.pendingUnobservations=[]}}function Tt(e){var t=_t.trackingDerivation;return null!==t?(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&_t.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved):(0===e.observers_.size&&_t.inBatch>0&&At(e),!1)}function Et(e){e.lowestObserverState_!==tt.STALE_&&(e.lowestObserverState_=tt.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===tt.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=tt.STALE_})))}var xt=function(){function e(e,t,r,n){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=tt.NOT_TRACKING_,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.isTracing_=rt.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=r,this.requiresObservable_=n}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled||(this.isScheduled=!0,_t.pendingReactions.push(this),Nt())},t.runReaction_=function(){if(!this.isDisposed){St(),this.isScheduled=!1;var e=_t.trackingContext;if(_t.trackingContext=this,at(this)){this.isTrackPending=!0;try{this.onInvalidate_()}catch(e){this.reportExceptionInDerivation_(e)}}_t.trackingContext=e,kt()}},t.track=function(e){if(!this.isDisposed){St(),this.isRunning=!0;var t=_t.trackingContext;_t.trackingContext=this;var r=ut(this,e,void 0);_t.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&lt(this),ot(r)&&this.reportExceptionInDerivation_(r.cause),kt()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(_t.disableErrorBoundaries)throw e;var r="[mobx] uncaught error in '"+this+"'";_t.suppressReactionErrors||console.error(r,e),_t.globalReactionErrorHandlers.forEach((function(r){return r(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(St(),lt(this),kt()))},t.getDisposer_=function(e){var t=this,r=function r(){t.dispose(),null==e||null==e.removeEventListener||e.removeEventListener("abort",r)};return null==e||null==e.addEventListener||e.addEventListener("abort",r),r[W]=this,r},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1)},R(e,[{key:"isDisposed",get:function(){return I(this.flags_,e.isDisposedMask_)},set:function(t){this.flags_=V(this.flags_,e.isDisposedMask_,t)}},{key:"isScheduled",get:function(){return I(this.flags_,e.isScheduledMask_)},set:function(t){this.flags_=V(this.flags_,e.isScheduledMask_,t)}},{key:"isTrackPending",get:function(){return I(this.flags_,e.isTrackPendingMask_)},set:function(t){this.flags_=V(this.flags_,e.isTrackPendingMask_,t)}},{key:"isRunning",get:function(){return I(this.flags_,e.isRunningMask_)},set:function(t){this.flags_=V(this.flags_,e.isRunningMask_,t)}},{key:"diffValue",get:function(){return I(this.flags_,e.diffValueMask_)?1:0},set:function(t){this.flags_=V(this.flags_,e.diffValueMask_,1===t)}}])}();function Ct(e){return _t.globalReactionErrorHandlers.push(e),function(){var t=_t.globalReactionErrorHandlers.indexOf(e);t>=0&&_t.globalReactionErrorHandlers.splice(t,1)}}xt.isDisposedMask_=1,xt.isScheduledMask_=2,xt.isTrackPendingMask_=4,xt.isRunningMask_=8,xt.diffValueMask_=16;var It=100,Vt=function(e){return e()};function Nt(){_t.inBatch>0||_t.isRunningReactions||Vt(Mt)}function Mt(){_t.isRunningReactions=!0;for(var e=_t.pendingReactions,t=0;e.length>0;){++t===It&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var r=e.splice(0),n=0,i=r.length;n<i;n++)r[n].runReaction_()}_t.isRunningReactions=!1}var Rt=j("Reaction",xt);function Dt(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}}var zt="action",Lt="autoAction",Bt="<unnamed action>",Ft=te(zt),Ht=te("action.bound",{bound:!0}),Ut=te(Lt,{autoAction:!0}),$t=te("autoAction.bound",{autoAction:!0,bound:!0});function Gt(e){return function(t,r){return y(t)?Ge(t.name||Bt,t,e):y(r)?Ge(t,r,e):G(r)?(e?Ut:Ft).decorate_20223_(t,r):g(r)?$(t,r,e?Ut:Ft):g(t)?U(te(e?Lt:zt,{name:t,autoAction:e})):void 0}}var Wt=Gt(!1);Object.assign(Wt,Ft);var Kt=Gt(!0);function qt(e){return We(e.name,!1,e,this,void 0)}function Yt(e){return y(e)&&!0===e.isMobxAction}function Jt(e,t){var r,n,i,o;void 0===t&&(t=f);var a,s=null!=(r=null==(n=t)?void 0:n.name)?r:"Autorun";if(t.scheduler||t.delay){var u=Zt(t),l=!1;a=new xt(s,(function(){l||(l=!0,u((function(){l=!1,a.isDisposed||a.track(c)})))}),t.onError,t.requiresObservable)}else a=new xt(s,(function(){this.track(c)}),t.onError,t.requiresObservable);function c(){e(a)}return null!=(i=t)&&null!=(i=i.signal)&&i.aborted||a.schedule_(),a.getDisposer_(null==(o=t)?void 0:o.signal)}Object.assign(Kt,Ut),Wt.bound=U(Ht),Kt.bound=U($t);var Xt=function(e){return e()};function Zt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Xt}function Qt(e,t,r){var n,i,o;void 0===r&&(r=f);var a,s,u,l=null!=(n=r.name)?n:"Reaction",c=Wt(l,r.onError?(a=r.onError,s=t,function(){try{return s.apply(this,arguments)}catch(e){a.call(this,e)}}):t),p=!r.scheduler&&!r.delay,h=Zt(r),d=!0,b=!1,v=r.compareStructural?J.structural:r.equals||J.default,y=new xt(l,(function(){d||p?g():b||(b=!0,h(g))}),r.onError,r.requiresObservable);function g(){if(b=!1,!y.isDisposed){var t=!1,n=u;y.track((function(){var r=Ye(!1,(function(){return e(y)}));t=d||!v(u,r),u=r})),(d&&r.fireImmediately||!d&&t)&&c(u,n,y),d=!1}}return null!=(i=r)&&null!=(i=i.signal)&&i.aborted||y.schedule_(),y.getDisposer_(null==(o=r)?void 0:o.signal)}var er="onBO",tr="onBUO";function rr(e,t,r){return ir(er,e,t,r)}function nr(e,t,r){return ir(tr,e,t,r)}function ir(e,t,r,n){var i="function"==typeof n?Gn(t,r):Gn(t),o=y(n)?n:r,a=e+"L";return i[a]?i[a].add(o):i[a]=new Set([o]),function(){var e=i[a];e&&(e.delete(o),0===e.size&&delete i[a])}}var or="never",ar="always",sr="observed";function ur(e){!0===e.isolateGlobalState&&function(){if((_t.pendingReactions.length||_t.inBatch||_t.isRunningReactions)&&n(36),mt=!0,gt){var e=o();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),_t=new yt}}();var t,r,i=e.useProxies,a=e.enforceActions;if(void 0!==i&&(_t.useProxies=i===ar||i!==or&&"undefined"!=typeof Proxy),"ifavailable"===i&&(_t.verifyProxies=!0),void 0!==a){var s=a===ar?ar:a===sr;_t.enforceActions=s,_t.allowStateChanges=!0!==s&&s!==ar}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(_t[t]=!!e[t])})),_t.allowStateReads=!_t.observableRequiresReaction,e.reactionScheduler&&(t=e.reactionScheduler,r=Vt,Vt=function(e){return t((function(){return r(e)}))})}function lr(e,t,r,n){var i=C(t);return qn((function(){var t=En(e,n)[W];T(i).forEach((function(e){t.extend_(e,i[e],!r||!(e in r)||r[e])}))})),e}function cr(e,t){return fr(Gn(e,t))}function fr(e){var t,r={name:e.name_};return e.observing_&&e.observing_.length>0&&(r.dependencies=(t=e.observing_,Array.from(new Set(t))).map(fr)),r}function pr(e,t){return hr(Gn(e,t))}function hr(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(hr)),t}var dr=0;function br(){this.message="FLOW_CANCELLED"}function vr(e){return e instanceof br}br.prototype=Object.create(Error.prototype);var yr=ae("flow"),gr=ae("flow.bound",{bound:!0}),mr=Object.assign((function(e,t){if(G(t))return yr.decorate_20223_(e,t);if(g(t))return $(e,t,yr);var r=e,n=r.name||"<unnamed flow>",i=function(){var e,t=arguments,i=++dr,o=Wt(n+" - runid: "+i+" - init",r).apply(this,t),a=void 0,s=new Promise((function(t,r){var s=0;function u(e){var t;a=void 0;try{t=Wt(n+" - runid: "+i+" - yield "+s++,o.next).call(o,e)}catch(e){return r(e)}c(t)}function l(e){var t;a=void 0;try{t=Wt(n+" - runid: "+i+" - yield "+s++,o.throw).call(o,e)}catch(e){return r(e)}c(t)}function c(e){if(!y(null==e?void 0:e.then))return e.done?t(e.value):(a=Promise.resolve(e.value)).then(u,l);e.then(c,r)}e=r,u(void 0)}));return s.cancel=Wt(n+" - runid: "+i+" - cancel",(function(){try{a&&_r(a);var t=o.return(void 0),r=Promise.resolve(t.value);r.then(v,v),_r(r),e(new br)}catch(t){e(t)}})),s};return i.isMobXFlow=!0,i}),yr);function _r(e){y(e.cancel)&&e.cancel()}function wr(e){return e}function Or(e){return!0===(null==e?void 0:e.isMobXFlow)}function Pr(e,t,r){var n;return On(e)||yn(e)||Qe(e)?n=Wn(e):In(e)&&(n=Wn(e,t)),n.dehancer="function"==typeof t?t:r,function(){n.dehancer=void 0}}function jr(e,t,r){return y(r)?function(e,t,r){return Wn(e,t).intercept_(r)}(e,t,r):function(e,t){return Wn(e).intercept_(t)}(e,t)}function Ar(e,t){if(void 0===t)return nt(e);if(!1===In(e))return!1;if(!e[W].values_.has(t))return!1;var r=Gn(e,t);return nt(r)}function Sr(e){return Ar(e)}function kr(e,t){return Ar(e,t)}function Tr(e,t){return!!e&&(void 0!==t?!!In(e)&&e[W].values_.has(t):In(e)||!!e[W]||q(e)||Rt(e)||nt(e))}function Er(e){return Tr(e)}function xr(e,t){return Tr(e,t)}function Cr(e){return In(e)?e[W].keys_():On(e)||An(e)?Array.from(e.keys()):yn(e)?e.map((function(e,t){return t})):void n(5)}function Ir(e){return In(e)?Cr(e).map((function(t){return e[t]})):On(e)?Cr(e).map((function(t){return e.get(t)})):An(e)?Array.from(e.values()):yn(e)?e.slice():void n(6)}function Vr(e){return In(e)?Cr(e).map((function(t){return[t,e[t]]})):On(e)?Cr(e).map((function(t){return[t,e.get(t)]})):An(e)?Array.from(e.entries()):yn(e)?e.map((function(e,t){return[t,e]})):void n(7)}function Nr(e,t,r){if(2!==arguments.length||An(e))In(e)?e[W].set_(t,r):On(e)?e.set(t,r):An(e)?e.add(t):yn(e)?("number"!=typeof t&&(t=parseInt(t,10)),t<0&&n("Invalid index: '"+t+"'"),St(),t>=e.length&&(e.length=t+1),e[t]=r,kt()):n(8);else{St();var i=t;try{for(var o in i)Nr(e,o,i[o])}finally{kt()}}}function Mr(e,t){In(e)?e[W].delete_(t):On(e)||An(e)?e.delete(t):yn(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):n(9)}function Rr(e,t){return In(e)?e[W].has_(t):On(e)||An(e)?e.has(t):yn(e)?t>=0&&t<e.length:void n(10)}function Dr(e,t){if(Rr(e,t))return In(e)?e[W].get_(t):On(e)?e.get(t):yn(e)?e[t]:void n(11)}function zr(e,t,r){if(In(e))return e[W].defineProperty_(t,r);n(39)}function Lr(e){if(In(e))return e[W].ownKeys_();n(38)}function Br(e,t,r,n){return y(r)?function(e,t,r,n){return Wn(e,t).observe_(r,n)}(e,t,r,n):function(e,t,r){return Wn(e).observe_(t,r)}(e,t,r)}function Fr(e,t,r){return e.set(t,r),r}function Hr(e,t){if(null==e||"object"!=typeof e||e instanceof Date||!Er(e))return e;if(Qe(e)||nt(e))return Hr(e.get(),t);if(t.has(e))return t.get(e);if(yn(e)){var r=Fr(t,e,new Array(e.length));return e.forEach((function(e,n){r[n]=Hr(e,t)})),r}if(An(e)){var n=Fr(t,e,new Set);return e.forEach((function(e){n.add(Hr(e,t))})),n}if(On(e)){var i=Fr(t,e,new Map);return e.forEach((function(e,r){i.set(r,Hr(e,t))})),i}var o=Fr(t,e,{});return Lr(e).forEach((function(r){l.propertyIsEnumerable.call(e,r)&&(o[r]=Hr(e[r],t))})),o}function Ur(e,t){return Hr(e,new Map)}function $r(){}function Gr(e,t){void 0===t&&(t=void 0),St();try{return e.apply(t)}finally{kt()}}function Wr(e,t,r){return 1===arguments.length||t&&"object"==typeof t?function(e,t){var r,n,i;if(null!=t&&null!=(r=t.signal)&&r.aborted)return Object.assign(Promise.reject(new Error("WHEN_ABORTED")),{cancel:function(){return null}});var o=new Promise((function(r,o){var a,s=Kr(e,r,z({},t,{onError:o}));n=function(){s(),o(new Error("WHEN_CANCELLED"))},i=function(){s(),o(new Error("WHEN_ABORTED"))},null==t||null==(a=t.signal)||null==a.addEventListener||a.addEventListener("abort",i)})).finally((function(){var e;return null==t||null==(e=t.signal)||null==e.removeEventListener?void 0:e.removeEventListener("abort",i)}));return o.cancel=n,o}(e,t):Kr(e,t,r||{})}function Kr(e,t,r){var n;if("number"==typeof r.timeout){var i=new Error("WHEN_TIMEOUT");n=setTimeout((function(){if(!a[W].isDisposed){if(a(),!r.onError)throw i;r.onError(i)}}),r.timeout)}r.name="When";var o=Ge("When-effect",t),a=Jt((function(t){Ye(!1,e)&&(t.dispose(),n&&clearTimeout(n),o())}),r);return a}function qr(e){return e[W]}mr.bound=U(gr);var Yr={has:function(e,t){return qr(e).has_(t)},get:function(e,t){return qr(e).get_(t)},set:function(e,t,r){var n;return!!g(t)&&(null==(n=qr(e).set_(t,r,!0))||n)},deleteProperty:function(e,t){var r;return!!g(t)&&(null==(r=qr(e).delete_(t,!0))||r)},defineProperty:function(e,t,r){var n;return null==(n=qr(e).defineProperty_(t,r))||n},ownKeys:function(e){return qr(e).ownKeys_()},preventExtensions:function(e){n(13)}};function Jr(e){return void 0!==e.interceptors_&&e.interceptors_.length>0}function Xr(e,t){var r=e.interceptors_||(e.interceptors_=[]);return r.push(t),b((function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}))}function Zr(e,t){var r=ft();try{for(var i=[].concat(e.interceptors_||[]),o=0,a=i.length;o<a&&((t=i[o](t))&&!t.type&&n(14),t);o++);return t}finally{pt(r)}}function Qr(e){return void 0!==e.changeListeners_&&e.changeListeners_.length>0}function en(e,t){var r=e.changeListeners_||(e.changeListeners_=[]);return r.push(t),b((function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}))}function tn(e,t){var r=ft(),n=e.changeListeners_;if(n){for(var i=0,o=(n=n.slice()).length;i<o;i++)n[i](t);pt(r)}}function rn(e,t,r){return qn((function(){var n=En(e,r)[W];null!=t||(t=function(e){return x(e,H)||O(e,H,z({},e[H])),e[H]}(e)),T(t).forEach((function(e){return n.make_(e,t[e])}))})),e}var nn=Symbol("mobx-keys");function on(e,t,r){return _(e)?lr(e,e,t,r):(qn((function(){var n=En(e,r)[W];if(!e[nn]){var i=Object.getPrototypeOf(e),o=new Set([].concat(T(e),T(i)));o.delete("constructor"),o.delete(W),O(i,nn,o)}e[nn].forEach((function(e){return n.make_(e,!t||!(e in t)||t[e])}))})),e)}var an="splice",sn="update",un={get:function(e,t){var r=e[W];return t===W?r:"length"===t?r.getArrayLength_():"string"!=typeof t||isNaN(t)?x(fn,t)?fn[t]:e[t]:r.get_(parseInt(t))},set:function(e,t,r){var n=e[W];return"length"===t&&n.setArrayLength_(r),"symbol"==typeof t||isNaN(t)?e[t]=r:n.set_(parseInt(t),r),!0},preventExtensions:function(){n(15)}},ln=function(){function e(e,t,r,n){void 0===e&&(e="ObservableArray"),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=r,this.legacyMode_=n,this.atom_=new K(e),this.enhancer_=function(e,r){return t(e,r,"ObservableArray[..]")}}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.dehanceValues_=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},t.intercept_=function(e){return Xr(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),en(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&n("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=new Array(e-t),i=0;i<e-t;i++)r[i]=void 0;this.spliceWithArray_(t,0,r)}else this.spliceWithArray_(e,t-e)},t.updateArrayLength_=function(e,t){e!==this.lastKnownLength_&&n(16),this.lastKnownLength_+=t,this.legacyMode_&&t>0&&Un(e+t+1)},t.spliceWithArray_=function(e,t,r){var n=this;this.atom_;var i=this.values_.length;if(void 0===e?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=1===arguments.length?i-e:null==t?0:Math.max(0,Math.min(t,i-e)),void 0===r&&(r=c),Jr(this)){var o=Zr(this,{object:this.proxy_,type:an,index:e,removedCount:t,added:r});if(!o)return c;t=o.removedCount,r=o.added}if(r=0===r.length?r:r.map((function(e){return n.enhancer_(e,void 0)})),this.legacyMode_){var a=r.length-t;this.updateArrayLength_(i,a)}var s=this.spliceItemsIntoValues_(e,t,r);return 0===t&&0===r.length||this.notifyArraySplice_(e,r,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,r){var n;if(r.length<1e4)return(n=this.values_).splice.apply(n,[e,t].concat(r));var i=this.values_.slice(e,e+t),o=this.values_.slice(e+t);this.values_.length+=r.length-t;for(var a=0;a<r.length;a++)this.values_[e+a]=r[a];for(var s=0;s<o.length;s++)this.values_[e+r.length+s]=o[s];return i},t.notifyArrayChildUpdate_=function(e,t,r){var n=!this.owned_&&!1,i=Qr(this),o=i||n?{observableKind:"array",object:this.proxy_,type:sn,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:r}:null;this.atom_.reportChanged(),i&&tn(this,o)},t.notifyArraySplice_=function(e,t,r){var n=!this.owned_&&!1,i=Qr(this),o=i||n?{observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:an,index:e,removed:r,added:t,removedCount:r.length,addedCount:t.length}:null;this.atom_.reportChanged(),i&&tn(this,o)},t.get_=function(e){if(!(this.legacyMode_&&e>=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e<r.length){this.atom_;var i=r[e];if(Jr(this)){var o=Zr(this,{type:sn,object:this.proxy_,index:e,newValue:t});if(!o)return;t=o.newValue}(t=this.enhancer_(t,i))!==i&&(r[e]=t,this.notifyArrayChildUpdate_(e,t,i))}else{for(var a=new Array(e+1-r.length),s=0;s<a.length-1;s++)a[s]=void 0;a[a.length-1]=t,this.spliceWithArray_(r.length,0,a)}},e}();function cn(e,t,r,n){return void 0===r&&(r="ObservableArray"),void 0===n&&(n=!1),d(),qn((function(){var i=new ln(r,t,n,!1);P(i.values_,W,i);var o=new Proxy(i.values_,un);return i.proxy_=o,e&&e.length&&i.spliceWithArray_(0,0,e),o}))}var fn={clear:function(){return this.splice(0)},replace:function(e){var t=this[W];return t.spliceWithArray_(0,t.values_.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),i=2;i<r;i++)n[i-2]=arguments[i];var o=this[W];switch(arguments.length){case 0:return[];case 1:return o.spliceWithArray_(e);case 2:return o.spliceWithArray_(e,t)}return o.spliceWithArray_(e,t,n)},spliceWithArray:function(e,t,r){return this[W].spliceWithArray_(e,t,r)},push:function(){for(var e=this[W],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return e.spliceWithArray_(e.values_.length,0,r),e.values_.length},pop:function(){return this.splice(Math.max(this[W].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[W],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return e.spliceWithArray_(0,0,r),e.values_.length},reverse:function(){return _t.trackingDerivation&&n(37,"reverse"),this.replace(this.slice().reverse()),this},sort:function(){_t.trackingDerivation&&n(37,"sort");var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[W],r=t.dehanceValues_(t.values_).indexOf(e);return r>-1&&(this.splice(r,1),!0)}};function pn(e,t){"function"==typeof Array.prototype[e]&&(fn[e]=t(e))}function hn(e){return function(){var t=this[W];t.atom_.reportObserved();var r=t.dehanceValues_(t.values_);return r[e].apply(r,arguments)}}function dn(e){return function(t,r){var n=this,i=this[W];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e]((function(e,i){return t.call(r,e,i,n)}))}}function bn(e){return function(){var t=this,r=this[W];r.atom_.reportObserved();var n=r.dehanceValues_(r.values_),i=arguments[0];return arguments[0]=function(e,r,n){return i(e,r,n,t)},n[e].apply(n,arguments)}}pn("at",hn),pn("concat",hn),pn("flat",hn),pn("includes",hn),pn("indexOf",hn),pn("join",hn),pn("lastIndexOf",hn),pn("slice",hn),pn("toString",hn),pn("toLocaleString",hn),pn("toSorted",hn),pn("toSpliced",hn),pn("with",hn),pn("every",dn),pn("filter",dn),pn("find",dn),pn("findIndex",dn),pn("findLast",dn),pn("findLastIndex",dn),pn("flatMap",dn),pn("forEach",dn),pn("map",dn),pn("some",dn),pn("toReversed",dn),pn("reduce",bn),pn("reduceRight",bn);var vn=j("ObservableArrayAdministration",ln);function yn(e){return m(e)&&vn(e[W])}var gn={},mn="add",_n="delete",wn=function(){function e(e,t,r){var i=this;void 0===t&&(t=X),void 0===r&&(r="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[W]=gn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,y(Map)||n(18),qn((function(){i.keysAtom_=Y("ObservableMap.keys()"),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!_t.trackingDerivation)return this.has_(e);var r=this.hasMap_.get(e);if(!r){var n=r=new Ze(this.has_(e),Z,"ObservableMap.key?",!1);this.hasMap_.set(e,n),nr(n,(function(){return t.hasMap_.delete(e)}))}return r.get()},t.set=function(e,t){var r=this.has_(e);if(Jr(this)){var n=Zr(this,{type:r?sn:mn,object:this,newValue:t,name:e});if(!n)return this;t=n.newValue}return r?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if(this.keysAtom_,Jr(this)&&!Zr(this,{type:_n,object:this,name:e}))return!1;if(this.has_(e)){var r=Qr(this),n=r?{observableKind:"map",debugObjectName:this.name_,type:_n,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return Gr((function(){var r;t.keysAtom_.reportChanged(),null==(r=t.hasMap_.get(e))||r.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),r&&tn(this,n),!0}return!1},t.updateValue_=function(e,t){var r=this.data_.get(e);if((t=r.prepareNewValue_(t))!==_t.UNCHANGED){var n=Qr(this),i=n?{observableKind:"map",debugObjectName:this.name_,type:sn,object:this,oldValue:r.value_,name:e,newValue:t}:null;r.setNewValue_(t),n&&tn(this,i)}},t.addValue_=function(e,t){var r=this;this.keysAtom_,Gr((function(){var n,i=new Ze(t,r.enhancer_,"ObservableMap.key",!1);r.data_.set(e,i),t=i.value_,null==(n=r.hasMap_.get(e))||n.setNewValue_(!0),r.keysAtom_.reportChanged()}));var n=Qr(this),i=n?{observableKind:"map",debugObjectName:this.name_,type:mn,object:this,name:e,newValue:t}:null;n&&tn(this,i)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Qn({next:function(){var r=t.next(),n=r.done,i=r.value;return{done:n,value:n?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return Qn({next:function(){var r=t.next(),n=r.done,i=r.value;return{done:n,value:n?void 0:[i,e.get(i)]}}})},t[Symbol.iterator]=function(){return this.entries()},t.forEach=function(e,t){for(var r,n=D(this);!(r=n()).done;){var i=r.value,o=i[0],a=i[1];e.call(t,a,o,this)}},t.merge=function(e){var t=this;return On(e)&&(e=new Map(e)),Gr((function(){var r,i,o;_(e)?function(e){var t=Object.keys(e);if(!k)return t;var r=Object.getOwnPropertySymbols(e);return r.length?[].concat(t,r.filter((function(t){return l.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(r){return t.set(r,e[r])})):Array.isArray(e)?e.forEach((function(e){var r=e[0],n=e[1];return t.set(r,n)})):A(e)?(r=e,i=Object.getPrototypeOf(r),o=Object.getPrototypeOf(i),null!==Object.getPrototypeOf(o)&&n(19,e),e.forEach((function(e,r){return t.set(r,e)}))):null!=e&&n(20,e)})),this},t.clear=function(){var e=this;Gr((function(){ct((function(){for(var t,r=D(e.keys());!(t=r()).done;){var n=t.value;e.delete(n)}}))}))},t.replace=function(e){var t=this;return Gr((function(){for(var r,i=function(e){if(A(e)||On(e))return e;if(Array.isArray(e))return new Map(e);if(_(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}return n(21,e)}(e),o=new Map,a=!1,s=D(t.data_.keys());!(r=s()).done;){var u=r.value;if(!i.has(u))if(t.delete(u))a=!0;else{var l=t.data_.get(u);o.set(u,l)}}for(var c,f=D(i.entries());!(c=f()).done;){var p=c.value,h=p[0],d=p[1],b=t.data_.has(h);if(t.set(h,d),t.data_.has(h)){var v=t.data_.get(h);o.set(h,v),b||(a=!0)}}if(!a)if(t.data_.size!==o.size)t.keysAtom_.reportChanged();else for(var y=t.data_.keys(),g=o.keys(),m=y.next(),w=g.next();!m.done;){if(m.value!==w.value){t.keysAtom_.reportChanged();break}m=y.next(),w=g.next()}t.data_=o})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return en(this,e)},t.intercept_=function(e){return Xr(this,e)},R(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Map"}}])}(),On=j("ObservableMap",wn),Pn={},jn=function(){function e(e,t,r){var i=this;void 0===t&&(t=X),void 0===r&&(r="ObservableSet"),this.name_=void 0,this[W]=Pn,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,y(Set)||n(22),this.enhancer_=function(e,n){return t(e,n,r)},qn((function(){i.atom_=Y(i.name_),e&&i.replace(e)}))}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;Gr((function(){ct((function(){for(var t,r=D(e.data_.values());!(t=r()).done;){var n=t.value;e.delete(n)}}))}))},t.forEach=function(e,t){for(var r,n=D(this);!(r=n()).done;){var i=r.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if(this.atom_,Jr(this)&&!Zr(this,{type:mn,object:this,newValue:e}))return this;if(!this.has(e)){Gr((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var r=Qr(this),n=r?{observableKind:"set",debugObjectName:this.name_,type:mn,object:this,newValue:e}:null;r&&tn(this,n)}return this},t.delete=function(e){var t=this;if(Jr(this)&&!Zr(this,{type:_n,object:this,oldValue:e}))return!1;if(this.has(e)){var r=Qr(this),n=r?{observableKind:"set",debugObjectName:this.name_,type:_n,object:this,oldValue:e}:null;return Gr((function(){t.atom_.reportChanged(),t.data_.delete(e)})),r&&tn(this,n),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),r=Array.from(this.values());return Qn({next:function(){var n=e;return e+=1,n<r.length?{value:[t[n],r[n]],done:!1}:{done:!0}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var e=this,t=0,r=Array.from(this.data_.values());return Qn({next:function(){return t<r.length?{value:e.dehanceValue_(r[t++]),done:!1}:{done:!0}}})},t.intersection=function(e){return S(e)&&!An(e)?e.intersection(this):new Set(this).intersection(e)},t.union=function(e){return S(e)&&!An(e)?e.union(this):new Set(this).union(e)},t.difference=function(e){return new Set(this).difference(e)},t.symmetricDifference=function(e){return S(e)&&!An(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},t.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},t.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},t.isDisjointFrom=function(e){return S(e)&&!An(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},t.replace=function(e){var t=this;return An(e)&&(e=new Set(e)),Gr((function(){Array.isArray(e)||S(e)?(t.clear(),e.forEach((function(e){return t.add(e)}))):null!=e&&n("Cannot initialize set from "+e)})),this},t.observe_=function(e,t){return en(this,e)},t.intercept_=function(e){return Xr(this,e)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return"[object ObservableSet]"},t[Symbol.iterator]=function(){return this.values()},R(e,[{key:"size",get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Set"}}])}(),An=j("ObservableSet",jn),Sn=Object.create(null),kn="remove",Tn=function(){function e(e,t,r,n){void 0===t&&(t=new Map),void 0===n&&(n=_e),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.target_=e,this.values_=t,this.name_=r,this.defaultAnnotation_=n,this.keysAtom_=new K("ObservableObject.keys"),this.isPlainObject_=_(this.target_)}var t=e.prototype;return t.getObservablePropValue_=function(e){return this.values_.get(e).get()},t.setObservablePropValue_=function(e,t){var r=this.values_.get(e);if(r instanceof et)return r.set(t),!0;if(Jr(this)){var n=Zr(this,{type:sn,object:this.proxy_||this.target_,name:e,newValue:t});if(!n)return null;t=n.newValue}if((t=r.prepareNewValue_(t))!==_t.UNCHANGED){var i=Qr(this),o=i?{type:sn,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:r.value_,name:e,newValue:t}:null;r.setNewValue_(t),i&&tn(this,o)}return!0},t.get_=function(e){return _t.trackingDerivation&&!x(this.target_,e)&&this.has_(e),this.target_[e]},t.set_=function(e,t,r){return void 0===r&&(r=!1),x(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):r?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,r)},t.has_=function(e){if(!_t.trackingDerivation)return e in this.target_;this.pendingKeys_||(this.pendingKeys_=new Map);var t=this.pendingKeys_.get(e);return t||(t=new Ze(e in this.target_,Z,"ObservableObject.key?",!1),this.pendingKeys_.set(e,t)),t.get()},t.make_=function(e,t){if(!0===t&&(t=this.defaultAnnotation_),!1!==t){if(!(e in this.target_)){var r;if(null!=(r=this.target_[H])&&r[e])return;n(1,t.annotationType_,this.name_+"."+e.toString())}for(var i=this.target_;i&&i!==l;){var o=s(i,e);if(o){var a=t.make_(this,e,o,i);if(0===a)return;if(1===a)break}i=Object.getPrototypeOf(i)}Vn(this,0,e)}},t.extend_=function(e,t,r,n){if(void 0===n&&(n=!1),!0===r&&(r=this.defaultAnnotation_),!1===r)return this.defineProperty_(e,t,n);var i=r.extend_(this,e,t,n);return i&&Vn(this,0,e),i},t.defineProperty_=function(e,t,r){void 0===r&&(r=!1),this.keysAtom_;try{St();var n=this.delete_(e);if(!n)return n;if(Jr(this)){var i=Zr(this,{object:this.proxy_||this.target_,name:e,type:mn,newValue:t.value});if(!i)return null;var o=i.newValue;t.value!==o&&(t=z({},t,{value:o}))}if(r){if(!Reflect.defineProperty(this.target_,e,t))return!1}else u(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{kt()}return!0},t.defineObservableProperty_=function(e,t,r,n){void 0===n&&(n=!1),this.keysAtom_;try{St();var i=this.delete_(e);if(!i)return i;if(Jr(this)){var o=Zr(this,{object:this.proxy_||this.target_,name:e,type:mn,newValue:t});if(!o)return null;t=o.newValue}var a=Cn(e),s={configurable:!_t.safeDescriptors||this.isPlainObject_,enumerable:!0,get:a.get,set:a.set};if(n){if(!Reflect.defineProperty(this.target_,e,s))return!1}else u(this.target_,e,s);var l=new Ze(t,r,"ObservableObject.key",!1);this.values_.set(e,l),this.notifyPropertyAddition_(e,l.value_)}finally{kt()}return!0},t.defineComputedProperty_=function(e,t,r){void 0===r&&(r=!1),this.keysAtom_;try{St();var n=this.delete_(e);if(!n)return n;if(Jr(this)&&!Zr(this,{object:this.proxy_||this.target_,name:e,type:mn,newValue:void 0}))return null;t.name||(t.name="ObservableObject.key"),t.context=this.proxy_||this.target_;var i=Cn(e),o={configurable:!_t.safeDescriptors||this.isPlainObject_,enumerable:!1,get:i.get,set:i.set};if(r){if(!Reflect.defineProperty(this.target_,e,o))return!1}else u(this.target_,e,o);this.values_.set(e,new et(t)),this.notifyPropertyAddition_(e,void 0)}finally{kt()}return!0},t.delete_=function(e,t){if(void 0===t&&(t=!1),this.keysAtom_,!x(this.target_,e))return!0;if(Jr(this)&&!Zr(this,{object:this.proxy_||this.target_,name:e,type:kn}))return null;try{var r;St();var n,i=Qr(this),o=this.values_.get(e),a=void 0;if(!o&&i&&(a=null==(n=s(this.target_,e))?void 0:n.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(o&&(this.values_.delete(e),o instanceof Ze&&(a=o.value_),Et(o)),this.keysAtom_.reportChanged(),null==(r=this.pendingKeys_)||null==(r=r.get(e))||r.set(e in this.target_),i){var u={type:kn,observableKind:"object",object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:a,name:e};i&&tn(this,u)}}finally{kt()}return!0},t.observe_=function(e,t){return en(this,e)},t.intercept_=function(e){return Xr(this,e)},t.notifyPropertyAddition_=function(e,t){var r,n=Qr(this);if(n){var i=n?{type:mn,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;n&&tn(this,i)}null==(r=this.pendingKeys_)||null==(r=r.get(e))||r.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),T(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function En(e,t){var r;if(x(e,W))return e;var n=null!=(r=null==t?void 0:t.name)?r:"ObservableObject",i=new Tn(e,new Map,String(n),function(e){var t;return e?null!=(t=e.defaultDecorator)?t:we(e):void 0}(t));return O(e,W,i),e}var xn=j("ObservableObjectAdministration",Tn);function Cn(e){return Sn[e]||(Sn[e]={get:function(){return this[W].getObservablePropValue_(e)},set:function(t){return this[W].setObservablePropValue_(e,t)}})}function In(e){return!!m(e)&&xn(e[W])}function Vn(e,t,r){var n;null==(n=e.target_[H])||delete n[r]}var Nn,Mn,Rn=Fn(0),Dn=function(){var e=!1,t={};return Object.defineProperty(t,"0",{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),zn=0,Ln=function(){};Nn=Ln,Mn=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(Nn.prototype,Mn):void 0!==Nn.prototype.__proto__?Nn.prototype.__proto__=Mn:Nn.prototype=Mn;var Bn=function(e){function t(t,r,n,i){var o;return void 0===n&&(n="ObservableArray"),void 0===i&&(i=!1),o=e.call(this)||this,qn((function(){var e=new ln(n,r,i,!0);e.proxy_=o,P(o,W,e),t&&t.length&&o.spliceWithArray(0,0,t),Dn&&Object.defineProperty(o,"0",Rn)})),o}L(t,e);var r=t.prototype;return r.concat=function(){this[W].atom_.reportObserved();for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return Array.prototype.concat.apply(this.slice(),t.map((function(e){return yn(e)?e.slice():e})))},r[Symbol.iterator]=function(){var e=this,t=0;return Qn({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},R(t,[{key:"length",get:function(){return this[W].getArrayLength_()},set:function(e){this[W].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return"Array"}}])}(Ln);function Fn(e){return{enumerable:!1,configurable:!0,get:function(){return this[W].get_(e)},set:function(t){this[W].set_(e,t)}}}function Hn(e){u(Bn.prototype,""+e,Fn(e))}function Un(e){if(e>zn){for(var t=zn;t<e+100;t++)Hn(t);zn=e}}function $n(e,t,r){return new Bn(e,t,r)}function Gn(e,t){if("object"==typeof e&&null!==e){if(yn(e))return void 0!==t&&n(23),e[W].atom_;if(An(e))return e.atom_;if(On(e)){if(void 0===t)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,Kn(e)),r}if(In(e)){if(!t)return n(26);var i=e[W].values_.get(t);return i||n(27,t,Kn(e)),i}if(q(e)||nt(e)||Rt(e))return e}else if(y(e)&&Rt(e[W]))return e[W];n(28)}function Wn(e,t){return e||n(29),void 0!==t?Wn(Gn(e,t)):q(e)||nt(e)||Rt(e)||On(e)||An(e)?e:e[W]?e[W]:void n(24,e)}function Kn(e,t){var r;if(void 0!==t)r=Gn(e,t);else{if(Yt(e))return e.name;r=In(e)||On(e)||An(e)?Wn(e):Gn(e)}return r.name_}function qn(e){var t=ft(),r=Je(!0);St();try{return e()}finally{kt(),Xe(r),pt(t)}}Object.entries(fn).forEach((function(e){var t=e[0],r=e[1];"concat"!==t&&O(Bn.prototype,t,r)})),Un(1e3);var Yn=l.toString;function Jn(e,t,r){return void 0===r&&(r=-1),Xn(e,t,r)}function Xn(e,t,r,n,i){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return!1;if(e!=e)return t!=t;var o=typeof e;if("function"!==o&&"object"!==o&&"object"!=typeof t)return!1;var a=Yn.call(e);if(a!==Yn.call(t))return!1;switch(a){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:0==+e?1/+e==1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case"[object Map]":case"[object Set]":r>=0&&r++}e=Zn(e),t=Zn(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var u=e.constructor,l=t.constructor;if(u!==l&&!(y(u)&&u instanceof u&&y(l)&&l instanceof l)&&"constructor"in e&&"constructor"in t)return!1}if(0===r)return!1;r<0&&(r=-1),i=i||[];for(var c=(n=n||[]).length;c--;)if(n[c]===e)return i[c]===t;if(n.push(e),i.push(t),s){if((c=e.length)!==t.length)return!1;for(;c--;)if(!Xn(e[c],t[c],r-1,n,i))return!1}else{var f,p=Object.keys(e);if(c=p.length,Object.keys(t).length!==c)return!1;for(;c--;)if(!x(t,f=p[c])||!Xn(e[f],t[f],r-1,n,i))return!1}return n.pop(),i.pop(),!0}function Zn(e){return yn(e)?e.slice():A(e)||On(e)||S(e)||An(e)?Array.from(e.entries()):e}function Qn(e){return e[Symbol.iterator]=ei,e}function ei(){return this}["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&n("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Dt,extras:{getDebugName:Kn},$mobx:W})},83504:(e,t,r)=>{r.d(t,{Q:()=>o});var n=r(7552);function i(){return{replace(e){window.history.replaceState(e.state,"",e.search||"?")},push(e){window.history.pushState(e.state,"",e.search||"?")},get location(){return window.location}}}const o=({children:e})=>{const[t]=(0,n.useState)(i);return e(t)}},430:(e,t,r)=>{r.d(t,{QueryParamProvider:()=>w,StringParam:()=>n,useQueryParam:()=>S});const n={encode:function(e){return null==e?e:String(e)},decode:function(e){const t=function(e,t){if(null==e)return e;if(0===e.length&&(!t||t&&""!==e))return null;const r=e instanceof Array?e[0]:e;return null==r||t||""!==r?r:null}(e,!0);return null==t?t:String(t)}};'{}[],":'.split("").map((e=>[e,encodeURIComponent(e)]));var i=r(7552);const o=new class{constructor(){this.paramsMap=new Map,this.registeredParams=new Map}set(e,t,r,n){this.paramsMap.set(e,{stringified:t,decoded:r,decode:n})}has(e,t,r){if(!this.paramsMap.has(e))return!1;const n=this.paramsMap.get(e);return!!n&&n.stringified===t&&(null==r||n.decode===r)}get(e){var t;if(this.paramsMap.has(e))return null==(t=this.paramsMap.get(e))?void 0:t.decoded}registerParams(e){for(const t of e){const e=this.registeredParams.get(t)||0;this.registeredParams.set(t,e+1)}}unregisterParams(e){for(const t of e){const e=(this.registeredParams.get(t)||0)-1;e<=0?(this.registeredParams.delete(t),this.paramsMap.has(t)&&this.paramsMap.delete(t)):this.registeredParams.set(t,e)}}clear(){this.paramsMap.clear(),this.registeredParams.clear()}};function a(e,t,r,n){var i;if(!r||!t.length)return e;let o={...e},a=!1;for(const e of t)Object.prototype.hasOwnProperty.call(o,e)||(o[e]=null!=(i=r[e])?i:n,a=!0);return a?o:e}const s=Object.prototype.hasOwnProperty;function u(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function l(e,t,r){var n,i;if(u(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(let a=0;a<o.length;a++){const l=null!=(i=null==(n=null==r?void 0:r[o[a]])?void 0:n.equals)?i:u;if(!s.call(t,o[a])||!l(e[o[a]],t[o[a]]))return!1}return!0}function c(e,t,r){const n={},i=Object.keys(t);for(const o of i){const i=t[o],a=e[o];let s;if(r.has(o,a,i.decode))s=r.get(o);else{if(s=i.decode(a),i.equals&&r.has(o,a)){const e=r.get(o);i.equals(s,e)&&(s=e)}void 0!==s&&r.set(o,a,s,i.decode)}void 0===s&&void 0!==i.default&&(s=i.default),n[o]=s}return n}function f(){let e;return function(t,r,n){const i=c(t,r,n);return null!=e&&l(e,i)?e:(e=i,i)}}let p,h,d,b={};const v=(e,t,r)=>{if(p===t&&d===e&&h===r)return b;p=t,d=e;const n=e(null!=t?t:"");h=r;const i=function(e){if(e)return Object.fromEntries(e.split("\n").map((e=>e.split("\0"))))}(r);for(let[e,t]of Object.entries(n)){(null==i?void 0:i[e])&&(delete n[e],e=i[e],n[e]=t);const r=b[e];l(t,r)&&(n[e]=r)}return b=n,n};function y(e,t){null==t&&(t={});const r={...e,...t};return t.params&&e.params&&(r.params={...e.params,...t.params}),r}const g={adapter:{},options:{searchStringToObject:function(e){const t=new URLSearchParams(e),r={};for(let[e,n]of t)Object.prototype.hasOwnProperty.call(r,e)?Array.isArray(r[e])?r[e].push(n):r[e]=[r[e],n]:r[e]=n;return r},objectToSearchString:function(e){const t=new URLSearchParams,r=Object.entries(e);for(const[e,n]of r)if(null!=n)if(Array.isArray(n))for(const r of n)t.append(e,null!=r?r:"");else t.append(e,n);return t.toString()},updateType:"pushIn",includeKnownParams:void 0,includeAllParams:!1,removeDefaultsFromUrl:!1,enableBatching:!1,skipUpdateWhenNoChange:!0}},m=i.createContext(g);function _({children:e,adapter:t,options:r}){const{adapter:n,options:o}=i.useContext(m),a=i.useMemo((()=>({adapter:null!=t?t:n,options:y(o,r)})),[t,r,n,o]);return i.createElement(m.Provider,{value:a},e)}function w({children:e,adapter:t,options:r}){const n=t;return n?i.createElement(n,null,(t=>i.createElement(_,{adapter:t,options:r},e))):i.createElement(_,{options:r},e)}function O({changes:e,updateType:t,currentSearchString:r,paramConfigMap:n,options:i}){const{searchStringToObject:s,objectToSearchString:u}=i;let l;null==t&&(t=i.updateType);const f=v(s,r),p=a(n,Object.keys(e),i.params);let h,d;return h="function"==typeof e?e(c(f,p,o)):e,l=function(e,t){const r={},n=Object.keys(t);for(const i of n){const n=t[i];e[i]?r[i]=e[i].encode(t[i]):r[i]=null==n?n:String(n)}return r}(p,h),i.removeDefaultsFromUrl&&function(e,t){var r;for(const n in e)void 0!==(null==(r=t[n])?void 0:r.default)&&void 0!==e[n]&&t[n].encode(t[n].default)===e[n]&&(e[n]=void 0)}(l,p),l=function(e,t){var r;let n={};for(const i in e)null!=(null==(r=t[i])?void 0:r.urlName)?n[t[i].urlName]=e[i]:n[i]=e[i];return n}(l,p),d=u("push"===t||"replace"===t?l:{...f,...l}),(null==d?void 0:d.length)&&"?"!==d[0]&&(d=`?${d}`),null!=d?d:""}const P=e=>e(),j=e=>setTimeout((()=>e()),0),A=[];const S=(e,t,r)=>{const s=(0,i.useMemo)((()=>({[e]:null!=t?t:"inherit"})),[e,t]),[u,l]=function(e,t){const{adapter:r,options:s}=function(){const e=i.useContext(m);if(void 0===e||e===g)throw new Error("useQueryParams must be used within a QueryParamProvider");return e}(),[u]=(0,i.useState)(f),{paramConfigMap:l,options:c}=function(e,t){let r,n;return void 0===e?(r={},n=t):Array.isArray(e)?(r=Object.fromEntries(e.map((e=>[e,"inherit"]))),n=t):(r=e,n=t),{paramConfigMap:r,options:n}}(e,t),p=(0,i.useMemo)((()=>y(s,c)),[s,c]);let h=function(e,t){var r,i,o;const a={};let s=!1;const u=Object.keys(e);let l=u;if(t.includeKnownParams||!1!==t.includeKnownParams&&0===u.length){const e=Object.keys(null!=(r=t.params)?r:{});l.push(...e)}for(const r of l){const u=e[r];null==u||"object"!=typeof u?(s=!0,a[r]=null!=(o=null==(i=t.params)?void 0:i[r])?o:n):a[r]=u}return s?a:e}(l,p);const d=v(p.searchStringToObject,r.location.search,function(e){let t;for(const r in e)if(e[r].urlName){const n=`${e[r].urlName}\0${r}`;t?t.push(n):t=[n]}return t?t.join("\n"):void 0}(h));p.includeAllParams&&(h=a(h,Object.keys(d),p.params,n));const b=u(d,h,o),_=Object.keys(h).join("\0");(0,i.useEffect)((()=>{const e=_.split("\0");return o.registerParams(e),()=>{o.unregisterParams(e)}}),[_]);const w={adapter:r,paramConfigMap:h,options:p},S=(0,i.useRef)(w);null==S.current&&(S.current=w),(0,i.useEffect)((()=>{S.current.adapter=r,S.current.paramConfigMap=h,S.current.options=p}),[r,h,p]);const[k]=(0,i.useState)((()=>(e,t)=>{const{adapter:r,paramConfigMap:n,options:i}=S.current;null==t&&(t=i.updateType),function(e,{immediate:t}={}){A.push(e);let r=t?P:j;1===A.length&&r((()=>{const t=A.slice();A.length=0;const r=t[0].currentSearchString;let n;for(let e=0;e<t.length;++e)n=O(0===e?t[e]:{...t[e],currentSearchString:n});e.options.skipUpdateWhenNoChange&&n===r||function({searchString:e,adapter:t,navigate:r,updateType:n}){const i={...t.location,search:e};r&&("string"==typeof n&&n.startsWith("replace")?t.replace(i):t.push(i))}({searchString:null!=n?n:"",adapter:t[t.length-1].adapter,navigate:!0,updateType:t[t.length-1].updateType})}))}({changes:e,updateType:t,currentSearchString:r.location.search,paramConfigMap:n,options:i,adapter:r},{immediate:!i.enableBatching})}));return[b,k]}(s,r);return[u[e],(0,i.useCallback)(((t,r)=>l("function"==typeof t?r=>{const n=t(r[e]);return{[e]:n}}:{[e]:t},r)),[e,l])]}}}]);
+//# sourceMappingURL=8007.3025c802.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8007.3025c802.chunk.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,14 @@
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8007.3025c802.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8007.3025c802.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@mui/icons-material/esm/Apps.js","../../../node_modules/@mui/icons-material/esm/Delete.js","../../../node_modules/@mui/icons-material/esm/Extension.js","../../../node_modules/@mui/icons-material/esm/FileCopy.js","../../../node_modules/@mui/icons-material/esm/GetApp.js","../../../node_modules/@mui/icons-material/esm/KeyboardArrowRight.js","../../../node_modules/@mui/icons-material/esm/Launch.js","../../../node_modules/@mui/icons-material/esm/Menu.js","../../../node_modules/@mui/icons-material/esm/Publish.js","../../../node_modules/@mui/icons-material/esm/Redo.js","../../../node_modules/@mui/icons-material/esm/Save.js","../../../node_modules/@mui/icons-material/esm/Settings.js","../../../node_modules/@mui/icons-material/esm/Share.js","../../../node_modules/@mui/icons-material/esm/Storage.js","../../../node_modules/@mui/icons-material/esm/Undo.js","../../../node_modules/@mui/material/AppBar/appBarClasses.js","../../../node_modules/@mui/material/AppBar/AppBar.js","../../../node_modules/@mui/material/CssBaseline/CssBaseline.js","../../../node_modules/@mui/material/Fab/Fab.js","../../../node_modules/@mui/material/Fab/fabClasses.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js","../../../node_modules/deepmerge/dist/cjs.js","../../../node_modules/generic-filehandle/src/remoteFile.ts","../../../node_modules/mobx-react-lite/src/observer.ts","../../../node_modules/mobx-state-tree/dist/mobx-state-tree.module.js","../../../node_modules/mobx/src/errors.ts","../../../node_modules/mobx/src/utils/global.ts","../../../node_modules/mobx/src/utils/utils.ts","../../../node_modules/mobx/src/api/decorators.ts","../../../node_modules/mobx/src/types/overrideannotation.ts","../../../node_modules/mobx/src/core/atom.ts","../../../node_modules/mobx/src/utils/comparer.ts","../../../node_modules/mobx/src/types/modifiers.ts","../../../node_modules/mobx/src/types/actionannotation.ts","../../../node_modules/mobx/src/types/flowannotation.ts","../../../node_modules/mobx/src/types/computedannotation.ts","../../../node_modules/mobx/src/types/observableannotation.ts","../../../node_modules/mobx/src/types/autoannotation.ts","../../../node_modules/mobx/src/api/observable.ts","../../../node_modules/mobx/src/types/dynamicobject.ts","../../../node_modules/mobx/src/api/computed.ts","../../../node_modules/mobx/src/core/action.ts","../../../node_modules/mobx/src/types/observablevalue.ts","../../../node_modules/mobx/src/core/computedvalue.ts","../../../node_modules/mobx/src/core/observable.ts","../../../node_modules/mobx/src/core/derivation.ts","../../../node_modules/mobx/src/core/globalstate.ts","../../../node_modules/mobx/src/core/reaction.ts","../../../node_modules/mobx/src/core/spy.ts","../../../node_modules/mobx/src/api/action.ts","../../../node_modules/mobx/src/api/autorun.ts","../../../node_modules/mobx/src/api/become-observed.ts","../../../node_modules/mobx/src/api/configure.ts","../../../node_modules/mobx/src/api/extendobservable.ts","../../../node_modules/mobx/src/api/extras.ts","../../../node_modules/mobx/src/api/flow.ts","../../../node_modules/mobx/src/api/intercept-read.ts","../../../node_modules/mobx/src/api/intercept.ts","../../../node_modules/mobx/src/api/iscomputed.ts","../../../node_modules/mobx/src/api/isobservable.ts","../../../node_modules/mobx/src/api/object-api.ts","../../../node_modules/mobx/src/api/observe.ts","../../../node_modules/mobx/src/api/tojs.ts","../../../node_modules/mobx/src/api/trace.ts","../../../node_modules/mobx/src/api/transaction.ts","../../../node_modules/mobx/src/api/when.ts","../../../node_modules/mobx/src/types/intercept-utils.ts","../../../node_modules/mobx/src/types/listen-utils.ts","../../../node_modules/mobx/src/api/makeObservable.ts","../../../node_modules/mobx/src/types/observablearray.ts","../../../node_modules/mobx/src/types/observablemap.ts","../../../node_modules/mobx/src/types/observableset.ts","../../../node_modules/mobx/src/types/observableobject.ts","../../../node_modules/mobx/src/types/legacyobservablearray.ts","../../../node_modules/mobx/src/types/type-utils.ts","../../../node_modules/mobx/src/utils/eq.ts","../../../node_modules/mobx/src/utils/iterable.ts","../../../node_modules/mobx/src/mobx.ts","../../../node_modules/use-query-params/adapters/window/index.js","../../../node_modules/serialize-query-params/src/params.ts","../../../node_modules/serialize-query-params/src/serialize.ts","../../../node_modules/serialize-query-params/src/updateLocation.ts","../../../node_modules/use-query-params/src/decodedParamCache.ts","../../../node_modules/use-query-params/src/inheritedParams.ts","../../../node_modules/use-query-params/src/shallowEqual.ts","../../../node_modules/use-query-params/src/latestValues.ts","../../../node_modules/use-query-params/src/memoSearchStringToObject.ts","../../../node_modules/use-query-params/src/urlName.ts","../../../node_modules/use-query-params/src/options.ts","../../../node_modules/use-query-params/src/QueryParamProvider.tsx","../../../node_modules/serialize-query-params/src/searchStringToObject.ts","../../../node_modules/serialize-query-params/src/objectToSearchString.ts","../../../node_modules/use-query-params/src/updateSearchString.ts","../../../node_modules/serialize-query-params/src/encodeQueryParams.ts","../../../node_modules/use-query-params/src/removeDefaults.ts","../../../node_modules/use-query-params/src/useQueryParam.ts","../../../node_modules/use-query-params/src/useQueryParams.ts"],"sourcesContent":["class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M4 8h4V4H4zm6 12h4v-4h-4zm-6 0h4v-4H4zm0-6h4v-4H4zm6 0h4v-4h-4zm6-10v4h4V4zm-6 4h4V4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z\"\n}), 'Apps');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11\"\n}), 'Extension');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2zm-1 7h5.5L14 6.5z\"\n}), 'FileCopy');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z\"\n}), 'GetApp');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6z\"\n}), 'KeyboardArrowRight');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z\"\n}), 'Launch');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z\"\n}), 'Publish');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7z\"\n}), 'Redo');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z\"\n}), 'Save');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92\"\n}), 'Share');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M2 20h20v-4H2zm2-3h2v2H4zM2 4v4h20V4zm4 3H4V5h2zm-4 7h20v-4H2zm2-3h2v2H4z\"\n}), 'Storage');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8\"\n}), 'Undo');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAppBarUtilityClass(slot) {\n  return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning']);\nexport default appBarClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getAppBarUtilityClass } from \"./appBarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    position,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, `position${capitalize(position)}`]\n  };\n  return composeClasses(slots, getAppBarUtilityClass, classes);\n};\n\n// var2 is the fallback.\n// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'\nconst joinVars = (var1, var2) => var1 ? `${var1?.replace(')', '')}, ${var2})` : var2;\nconst AppBarRoot = styled(Paper, {\n  name: 'MuiAppBar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`position${capitalize(ownerState.position)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  width: '100%',\n  boxSizing: 'border-box',\n  // Prevent padding issue with the Modal and fixed positioned AppBar.\n  flexShrink: 0,\n  variants: [{\n    props: {\n      position: 'fixed'\n    },\n    style: {\n      position: 'fixed',\n      zIndex: (theme.vars || theme).zIndex.appBar,\n      top: 0,\n      left: 'auto',\n      right: 0,\n      '@media print': {\n        // Prevent the app bar to be visible on each printed page.\n        position: 'absolute'\n      }\n    }\n  }, {\n    props: {\n      position: 'absolute'\n    },\n    style: {\n      position: 'absolute',\n      zIndex: (theme.vars || theme).zIndex.appBar,\n      top: 0,\n      left: 'auto',\n      right: 0\n    }\n  }, {\n    props: {\n      position: 'sticky'\n    },\n    style: {\n      position: 'sticky',\n      zIndex: (theme.vars || theme).zIndex.appBar,\n      top: 0,\n      left: 'auto',\n      right: 0\n    }\n  }, {\n    props: {\n      position: 'static'\n    },\n    style: {\n      position: 'static'\n    }\n  }, {\n    props: {\n      position: 'relative'\n    },\n    style: {\n      position: 'relative'\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      '--AppBar-color': 'inherit'\n    }\n  }, {\n    props: {\n      color: 'default'\n    },\n    style: {\n      '--AppBar-background': theme.vars ? theme.vars.palette.AppBar.defaultBg : theme.palette.grey[100],\n      '--AppBar-color': theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText(theme.palette.grey[100]),\n      ...theme.applyStyles('dark', {\n        '--AppBar-background': theme.vars ? theme.vars.palette.AppBar.defaultBg : theme.palette.grey[900],\n        '--AppBar-color': theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText(theme.palette.grey[900])\n      })\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['contrastText'])).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      '--AppBar-background': (theme.vars ?? theme).palette[color].main,\n      '--AppBar-color': (theme.vars ?? theme).palette[color].contrastText\n    }\n  })), {\n    props: props => props.enableColorOnDark === true && !['inherit', 'transparent'].includes(props.color),\n    style: {\n      backgroundColor: 'var(--AppBar-background)',\n      color: 'var(--AppBar-color)'\n    }\n  }, {\n    props: props => props.enableColorOnDark === false && !['inherit', 'transparent'].includes(props.color),\n    style: {\n      backgroundColor: 'var(--AppBar-background)',\n      color: 'var(--AppBar-color)',\n      ...theme.applyStyles('dark', {\n        backgroundColor: theme.vars ? joinVars(theme.vars.palette.AppBar.darkBg, 'var(--AppBar-background)') : null,\n        color: theme.vars ? joinVars(theme.vars.palette.AppBar.darkColor, 'var(--AppBar-color)') : null\n      })\n    }\n  }, {\n    props: {\n      color: 'transparent'\n    },\n    style: {\n      '--AppBar-background': 'transparent',\n      '--AppBar-color': 'inherit',\n      backgroundColor: 'var(--AppBar-background)',\n      color: 'var(--AppBar-color)',\n      ...theme.applyStyles('dark', {\n        backgroundImage: 'none'\n      })\n    }\n  }]\n})));\nconst AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAppBar'\n  });\n  const {\n    className,\n    color = 'primary',\n    enableColorOnDark = false,\n    position = 'fixed',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    position,\n    enableColorOnDark\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AppBarRoot, {\n    square: true,\n    component: \"header\",\n    ownerState: ownerState,\n    elevation: 4,\n    className: clsx(classes.root, className, position === 'fixed' && 'mui-fixed'),\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If true, the `color` prop is applied in dark mode.\n   * @default false\n   */\n  enableColorOnDark: PropTypes.bool,\n  /**\n   * The positioning type. The behavior of the different options is described\n   * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n   * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n   * @default 'fixed'\n   */\n  position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AppBar;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalCss } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\n\n// to determine if the global styles are static or dynamic\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst isDynamicSupport = typeof globalCss({}) === 'function';\nexport const html = (theme, enableColorScheme) => ({\n  WebkitFontSmoothing: 'antialiased',\n  // Antialiasing.\n  MozOsxFontSmoothing: 'grayscale',\n  // Antialiasing.\n  // Change from `box-sizing: content-box` so that `width`\n  // is not affected by `padding` or `border`.\n  boxSizing: 'border-box',\n  // Fix font resize problem in iOS\n  WebkitTextSizeAdjust: '100%',\n  // When used under CssVarsProvider, colorScheme should not be applied dynamically because it will generate the stylesheet twice for server-rendered applications.\n  ...(enableColorScheme && !theme.vars && {\n    colorScheme: theme.palette.mode\n  })\n});\nexport const body = theme => ({\n  color: (theme.vars || theme).palette.text.primary,\n  ...theme.typography.body1,\n  backgroundColor: (theme.vars || theme).palette.background.default,\n  '@media print': {\n    // Save printer ink.\n    backgroundColor: (theme.vars || theme).palette.common.white\n  }\n});\nexport const styles = (theme, enableColorScheme = false) => {\n  const colorSchemeStyles = {};\n  if (enableColorScheme && theme.colorSchemes && typeof theme.getColorSchemeSelector === 'function') {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      const selector = theme.getColorSchemeSelector(key);\n      if (selector.startsWith('@')) {\n        // for @media (prefers-color-scheme), we need to target :root\n        colorSchemeStyles[selector] = {\n          ':root': {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      } else {\n        // else, it's likely that the selector already target an element with a class or data attribute\n        colorSchemeStyles[selector.replace(/\\s*&/, '')] = {\n          colorScheme: scheme.palette?.mode\n        };\n      }\n    });\n  }\n  let defaultStyles = {\n    html: html(theme, enableColorScheme),\n    '*, *::before, *::after': {\n      boxSizing: 'inherit'\n    },\n    'strong, b': {\n      fontWeight: theme.typography.fontWeightBold\n    },\n    body: {\n      margin: 0,\n      // Remove the margin in all browsers.\n      ...body(theme),\n      // Add support for document.body.requestFullScreen().\n      // Other elements, if background transparent, are not supported.\n      '&::backdrop': {\n        backgroundColor: (theme.vars || theme).palette.background.default\n      }\n    },\n    ...colorSchemeStyles\n  };\n  const themeOverrides = theme.components?.MuiCssBaseline?.styleOverrides;\n  if (themeOverrides) {\n    defaultStyles = [defaultStyles, themeOverrides];\n  }\n  return defaultStyles;\n};\n\n// `ecs` stands for enableColorScheme. This is internal logic to make it work with Pigment CSS, so shorter is better.\nconst SELECTOR = 'mui-ecs';\nconst staticStyles = theme => {\n  const result = styles(theme, false);\n  const baseStyles = Array.isArray(result) ? result[0] : result;\n  if (!theme.vars && baseStyles) {\n    baseStyles.html[`:root:has(${SELECTOR})`] = {\n      colorScheme: theme.palette.mode\n    };\n  }\n  if (theme.colorSchemes) {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      const selector = theme.getColorSchemeSelector(key);\n      if (selector.startsWith('@')) {\n        // for @media (prefers-color-scheme), we need to target :root\n        baseStyles[selector] = {\n          [`:root:not(:has(.${SELECTOR}))`]: {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      } else {\n        // else, it's likely that the selector already target an element with a class or data attribute\n        baseStyles[selector.replace(/\\s*&/, '')] = {\n          [`&:not(:has(.${SELECTOR}))`]: {\n            colorScheme: scheme.palette?.mode\n          }\n        };\n      }\n    });\n  }\n  return result;\n};\nconst GlobalStyles = globalCss(isDynamicSupport ? ({\n  theme,\n  enableColorScheme\n}) => styles(theme, enableColorScheme) : ({\n  theme\n}) => staticStyles(theme));\n\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */\nfunction CssBaseline(inProps) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCssBaseline'\n  });\n  const {\n    children,\n    enableColorScheme = false\n  } = props;\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [isDynamicSupport && /*#__PURE__*/_jsx(GlobalStyles, {\n      enableColorScheme: enableColorScheme\n    }), !isDynamicSupport && !enableColorScheme && /*#__PURE__*/_jsx(\"span\", {\n      className: SELECTOR,\n      style: {\n        display: 'none'\n      }\n    }), children]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? CssBaseline.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * You can wrap a node.\n   */\n  children: PropTypes.node,\n  /**\n   * Enable `color-scheme` CSS property to use `theme.palette.mode`.\n   * For more details, check out https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme\n   * For browser support, check out https://caniuse.com/?search=color-scheme\n   * @default false\n   */\n  enableColorScheme: PropTypes.bool\n} : void 0;\nexport default CssBaseline;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  minHeight: 36,\n  transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  borderRadius: '50%',\n  padding: 0,\n  minWidth: 0,\n  width: 56,\n  height: 56,\n  zIndex: (theme.vars || theme).zIndex.fab,\n  boxShadow: (theme.vars || theme).shadows[6],\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[12]\n  },\n  color: theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText?.(theme.palette.grey[300]),\n  backgroundColor: (theme.vars || theme).palette.grey[300],\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.grey.A100,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette.grey[300]\n    },\n    textDecoration: 'none'\n  },\n  [`&.${fabClasses.focusVisible}`]: {\n    boxShadow: (theme.vars || theme).shadows[6]\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      size: 'medium'\n    },\n    style: {\n      width: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended'\n    },\n    style: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'small'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 8px',\n      borderRadius: 34 / 2,\n      minWidth: 34,\n      height: 34\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'medium'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 16px',\n      borderRadius: 40 / 2,\n      minWidth: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].contrastText,\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      '&:hover': {\n        backgroundColor: (theme.vars || theme).palette[color].dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }\n  }))]\n})), memoTheme(({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n})));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n    children,\n    className,\n    color = 'default',\n    component = 'button',\n    disabled = false,\n    disableFocusRipple = false,\n    focusVisibleClassName,\n    size = 'large',\n    variant = 'circular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, {\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    classes: classes,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Buffer } from 'buffer'\nimport {\n  GenericFilehandle,\n  FilehandleOptions,\n  Stats,\n  Fetcher,\n  PolyfilledResponse,\n} from './filehandle'\n\nfunction getMessage(e: unknown) {\n  const r =\n    typeof e === 'object' && e !== null && 'message' in e\n      ? (e.message as string)\n      : `${e}`\n  return r.replace(/\\.$/, '')\n}\n\nexport default class RemoteFile implements GenericFilehandle {\n  protected url: string\n  private _stat?: Stats\n  private fetchImplementation: Fetcher\n  private baseOverrides: any = {}\n\n  private async getBufferFromResponse(\n    response: PolyfilledResponse,\n  ): Promise<Buffer> {\n    const resp = await response.arrayBuffer()\n    return Buffer.from(resp)\n  }\n\n  public constructor(source: string, opts: FilehandleOptions = {}) {\n    this.url = source\n    const fetch = opts.fetch || globalThis.fetch.bind(globalThis)\n    if (!fetch) {\n      throw new TypeError(\n        `no fetch function supplied, and none found in global environment`,\n      )\n    }\n    if (opts.overrides) {\n      this.baseOverrides = opts.overrides\n    }\n    this.fetchImplementation = fetch\n  }\n\n  public async fetch(\n    input: RequestInfo,\n    init: RequestInit | undefined,\n  ): Promise<PolyfilledResponse> {\n    let response\n    try {\n      response = await this.fetchImplementation(input, init)\n    } catch (e) {\n      if (`${e}`.includes('Failed to fetch')) {\n        // refetch to to help work around a chrome bug (discussed in\n        // generic-filehandle issue #72) in which the chrome cache returns a\n        // CORS error for content in its cache.  see also\n        // https://github.com/GMOD/jbrowse-components/pull/1511\n        console.warn(\n          `generic-filehandle: refetching ${input} to attempt to work around chrome CORS header caching bug`,\n        )\n        try {\n          response = await this.fetchImplementation(input, {\n            ...init,\n            cache: 'reload',\n          })\n        } catch (e) {\n          throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })\n        }\n      } else {\n        throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })\n      }\n    }\n    return response\n  }\n\n  public async read(\n    buffer: Buffer,\n    offset = 0,\n    length: number,\n    position = 0,\n    opts: FilehandleOptions = {},\n  ): Promise<{ bytesRead: number; buffer: Buffer }> {\n    const { headers = {}, signal, overrides = {} } = opts\n    if (length < Infinity) {\n      headers.range = `bytes=${position}-${position + length}`\n    } else if (length === Infinity && position !== 0) {\n      headers.range = `bytes=${position}-`\n    }\n    const res = await this.fetch(this.url, {\n      ...this.baseOverrides,\n      ...overrides,\n      headers: {\n        ...headers,\n        ...overrides.headers,\n        ...this.baseOverrides.headers,\n      },\n      method: 'GET',\n      redirect: 'follow',\n      mode: 'cors',\n      signal,\n    })\n\n    if (!res.ok) {\n      throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n    }\n\n    if ((res.status === 200 && position === 0) || res.status === 206) {\n      const resData = await this.getBufferFromResponse(res)\n      const bytesCopied = resData.copy(\n        buffer,\n        offset,\n        0,\n        Math.min(length, resData.length),\n      )\n\n      // try to parse out the size of the remote file\n      const contentRange = res.headers.get('content-range')\n      const sizeMatch = /\\/(\\d+)$/.exec(contentRange || '')\n      if (sizeMatch?.[1]) {\n        this._stat = { size: parseInt(sizeMatch[1], 10) }\n      }\n\n      return { bytesRead: bytesCopied, buffer }\n    }\n\n    if (res.status === 200) {\n      throw new Error(`${this.url} fetch returned status 200, expected 206`)\n    }\n\n    // TODO: try harder here to gather more information about what the problem is\n    throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n  }\n\n  public async readFile(): Promise<Buffer>\n  public async readFile(options: BufferEncoding): Promise<string>\n  public async readFile<T extends undefined>(\n    options:\n      | Omit<FilehandleOptions, 'encoding'>\n      | (Omit<FilehandleOptions, 'encoding'> & { encoding: T }),\n  ): Promise<Buffer>\n  public async readFile<T extends BufferEncoding>(\n    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },\n  ): Promise<string>\n  readFile<T extends BufferEncoding>(\n    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },\n  ): T extends BufferEncoding ? Promise<Buffer> : Promise<Buffer | string>\n  public async readFile(\n    options: FilehandleOptions | BufferEncoding = {},\n  ): Promise<Buffer | string> {\n    let encoding\n    let opts\n    if (typeof options === 'string') {\n      encoding = options\n      opts = {}\n    } else {\n      encoding = options.encoding\n      opts = options\n      delete opts.encoding\n    }\n    const { headers = {}, signal, overrides = {} } = opts\n    const res = await this.fetch(this.url, {\n      headers,\n      method: 'GET',\n      redirect: 'follow',\n      mode: 'cors',\n      signal,\n      ...this.baseOverrides,\n      ...overrides,\n    })\n    if (res.status !== 200) {\n      throw new Error(`HTTP ${res.status} fetching ${this.url}`)\n    }\n    if (encoding === 'utf8') {\n      return res.text()\n    } else if (encoding) {\n      throw new Error(`unsupported encoding: ${encoding}`)\n    } else {\n      return this.getBufferFromResponse(res)\n    }\n  }\n\n  public async stat(): Promise<Stats> {\n    if (!this._stat) {\n      const buf = Buffer.allocUnsafe(10)\n      await this.read(buf, 0, 10, 0)\n      if (!this._stat) {\n        throw new Error(`unable to determine size of file at ${this.url}`)\n      }\n    }\n    return this._stat\n  }\n\n  public async close(): Promise<void> {\n    return\n  }\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\nconst isFunctionNameConfigurable =\n    Object.getOwnPropertyDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n    ? Symbol.for(\"react.forward_ref\")\n    : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n    ? Symbol.for(\"react.memo\")\n    : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n    readonly forwardRef?: boolean\n}\n\nexport function observer<P extends object, TRef = {}>(\n    baseComponent: React.ForwardRefRenderFunction<TRef, P>,\n    options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n    React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object, TRef = {}>(\n    baseComponent: React.ForwardRefExoticComponent<\n        React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n    >\n): React.MemoExoticComponent<\n    React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object>(\n    baseComponent: React.FunctionComponent<P>,\n    options?: IObserverOptions\n): React.FunctionComponent<P>\n\nexport function observer<\n    C extends React.FunctionComponent<any> | React.ForwardRefRenderFunction<any>,\n    Options extends IObserverOptions\n>(\n    baseComponent: C,\n    options?: Options\n): Options extends { forwardRef: true }\n    ? C extends React.ForwardRefRenderFunction<infer TRef, infer P>\n        ? C &\n              React.MemoExoticComponent<\n                  React.ForwardRefExoticComponent<\n                      React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n                  >\n              >\n        : never /* forwardRef set for a non forwarding component */\n    : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer<P extends object, TRef = {}>(\n    baseComponent:\n        | React.ForwardRefRenderFunction<TRef, P>\n        | React.FunctionComponent<P>\n        | React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>,\n    // TODO remove in next major\n    options?: IObserverOptions\n) {\n    if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n        warnObserverOptionsDeprecated = false\n        console.warn(\n            `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n        )\n    }\n\n    if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n        throw new Error(\n            `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n        )\n    }\n\n    // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n    if (isUsingStaticRendering()) {\n        return baseComponent\n    }\n\n    let useForwardRef = options?.forwardRef ?? false\n    let render = baseComponent\n\n    const baseComponentName = baseComponent.displayName || baseComponent.name\n\n    // If already wrapped with forwardRef, unwrap,\n    // so we can patch render and apply memo\n    if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n        useForwardRef = true\n        render = baseComponent[\"render\"]\n        if (typeof render !== \"function\") {\n            throw new Error(\n                `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n            )\n        }\n    }\n\n    let observerComponent = (props: any, ref: React.Ref<TRef>) => {\n        return useObserver(() => render(props, ref), baseComponentName)\n    }\n\n    // Inherit original name and displayName, see #3438\n    ;(observerComponent as React.FunctionComponent).displayName = baseComponent.displayName\n\n    if (isFunctionNameConfigurable) {\n        Object.defineProperty(observerComponent, \"name\", {\n            value: baseComponent.name,\n            writable: true,\n            configurable: true\n        })\n    }\n\n    // Support legacy context: `contextTypes` must be applied before `memo`\n    if ((baseComponent as any).contextTypes) {\n        ;(observerComponent as React.FunctionComponent).contextTypes = (\n            baseComponent as any\n        ).contextTypes\n    }\n\n    if (useForwardRef) {\n        // `forwardRef` must be applied prior `memo`\n        // `forwardRef(observer(cmp))` throws:\n        // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n        observerComponent = forwardRef(observerComponent)\n    }\n\n    // memo; we are not interested in deep updates\n    // in props; we assume that if deep objects are changed,\n    // this is in observables, which would have been tracked anyway\n    observerComponent = memo(observerComponent)\n\n    copyStaticProperties(baseComponent, observerComponent)\n\n    if (\"production\" !== process.env.NODE_ENV) {\n        Object.defineProperty(observerComponent, \"contextTypes\", {\n            set() {\n                throw new Error(\n                    `[mobx-react-lite] \\`${\n                        this.displayName || this.type?.displayName || this.type?.name || \"Component\"\n                    }.contextTypes\\` must be set before applying \\`observer\\`.`\n                )\n            }\n        })\n    }\n\n    return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n    $$typeof: true,\n    render: true,\n    compare: true,\n    type: true,\n    // Don't redefine `displayName`,\n    // it's defined as getter-setter pair on `memo` (see #3192).\n    displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n    Object.keys(base).forEach(key => {\n        if (!hoistBlackList[key]) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n        }\n    })\n}\n","import { isComputedProp, isObservableProp, createAtom, action, computed, _allowStateChangesInsideComputed, reaction, runInAction, observable, values, entries, _getGlobalState, isObservableArray, isObservableObject, defineProperty as defineProperty$1, ObservableMap, _interceptReads, intercept, observe, _getAdministration, set, makeObservable, getAtom, when } from 'mobx';\n\nvar livelinessChecking = \"warn\";\n/**\n * Defines what MST should do when running into reads / writes to objects that have died.\n * By default it will print a warning.\n * Use the `\"error\"` option to easy debugging to see where the error was thrown and when the offending read / write took place\n *\n * @param mode `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction setLivelinessChecking(mode) {\n    livelinessChecking = mode;\n}\n/**\n * Returns the current liveliness checking mode.\n *\n * @returns `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction getLivelinessChecking() {\n    return livelinessChecking;\n}\n/**\n * @deprecated use setLivelinessChecking instead\n * @hidden\n *\n * Defines what MST should do when running into reads / writes to objects that have died.\n * By default it will print a warning.\n * Use the `\"error\"` option to easy debugging to see where the error was thrown and when the offending read / write took place\n *\n * @param mode `\"warn\"`, `\"error\"` or `\"ignore\"`\n */\nfunction setLivelynessChecking(mode) {\n    setLivelinessChecking(mode);\n}\n\n/**\n * @hidden\n */\nvar Hook;\n(function (Hook) {\n    Hook[\"afterCreate\"] = \"afterCreate\";\n    Hook[\"afterAttach\"] = \"afterAttach\";\n    Hook[\"afterCreationFinalization\"] = \"afterCreationFinalization\";\n    Hook[\"beforeDetach\"] = \"beforeDetach\";\n    Hook[\"beforeDestroy\"] = \"beforeDestroy\";\n})(Hook || (Hook = {}));\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\n\n/**\n * Returns the _actual_ type of the given tree node. (Or throws)\n *\n * @param object\n * @returns\n */\nfunction getType(object) {\n    assertIsStateTreeNode(object, 1);\n    return getStateTreeNode(object).type;\n}\n/**\n * Returns the _declared_ type of the given sub property of an object, array or map.\n * In the case of arrays and maps the property name is optional and will be ignored.\n *\n * Example:\n * ```ts\n * const Box = types.model({ x: 0, y: 0 })\n * const box = Box.create()\n *\n * console.log(getChildType(box, \"x\").name) // 'number'\n * ```\n *\n * @param object\n * @param propertyName\n * @returns\n */\nfunction getChildType(object, propertyName) {\n    assertIsStateTreeNode(object, 1);\n    return getStateTreeNode(object).getChildType(propertyName);\n}\n/**\n * Registers a function that will be invoked for each mutation that is applied to the provided model instance, or to any of its children.\n * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details. onPatch events are emitted immediately and will not await the end of a transaction.\n * Patches can be used to deeply observe a model tree.\n *\n * @param target the model instance from which to receive patches\n * @param callback the callback that is invoked for each patch. The reversePatch is a patch that would actually undo the emitted patch\n * @returns function to remove the listener\n */\nfunction onPatch(target, callback) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(callback, 2);\n    return getStateTreeNode(target).onPatch(callback);\n}\n/**\n * Registers a function that is invoked whenever a new snapshot for the given model instance is available.\n * The listener will only be fire at the end of the current MobX (trans)action.\n * See [snapshots](https://github.com/mobxjs/mobx-state-tree#snapshots) for more details.\n *\n * @param target\n * @param callback\n * @returns\n */\nfunction onSnapshot(target, callback) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(callback, 2);\n    return getStateTreeNode(target).onSnapshot(callback);\n}\n/**\n * Applies a JSON-patch to the given model instance or bails out if the patch couldn't be applied\n * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details.\n *\n * Can apply a single past, or an array of patches.\n *\n * @param target\n * @param patch\n * @returns\n */\nfunction applyPatch(target, patch) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertArg(patch, function (p) { return typeof p === \"object\"; }, \"object or array\", 2);\n    getStateTreeNode(target).applyPatches(asArray(patch));\n}\n/**\n * Small abstraction around `onPatch` and `applyPatch`, attaches a patch listener to a tree and records all the patches.\n * Returns a recorder object with the following signature:\n *\n * Example:\n * ```ts\n * export interface IPatchRecorder {\n *      // the recorded patches\n *      patches: IJsonPatch[]\n *      // the inverse of the recorded patches\n *      inversePatches: IJsonPatch[]\n *      // true if currently recording\n *      recording: boolean\n *      // stop recording patches\n *      stop(): void\n *      // resume recording patches\n *      resume(): void\n *      // apply all the recorded patches on the given target (the original subject if omitted)\n *      replay(target?: IAnyStateTreeNode): void\n *      // reverse apply the recorded patches on the given target  (the original subject if omitted)\n *      // stops the recorder if not already stopped\n *      undo(): void\n * }\n * ```\n *\n * The optional filter function allows to skip recording certain patches.\n *\n * @param subject\n * @param filter\n * @returns\n */\nfunction recordPatches(subject, filter) {\n    // check all arguments\n    assertIsStateTreeNode(subject, 1);\n    var data = {\n        patches: [],\n        inversePatches: []\n    };\n    // we will generate the immutable copy of patches on demand for public consumption\n    var publicData = {};\n    var disposer;\n    var recorder = {\n        get recording() {\n            return !!disposer;\n        },\n        get patches() {\n            if (!publicData.patches) {\n                publicData.patches = data.patches.slice();\n            }\n            return publicData.patches;\n        },\n        get reversedInversePatches() {\n            if (!publicData.reversedInversePatches) {\n                publicData.reversedInversePatches = data.inversePatches.slice().reverse();\n            }\n            return publicData.reversedInversePatches;\n        },\n        get inversePatches() {\n            if (!publicData.inversePatches) {\n                publicData.inversePatches = data.inversePatches.slice();\n            }\n            return publicData.inversePatches;\n        },\n        stop: function () {\n            if (disposer) {\n                disposer();\n                disposer = undefined;\n            }\n        },\n        resume: function () {\n            if (disposer)\n                return;\n            disposer = onPatch(subject, function (patch, inversePatch) {\n                // skip patches that are asked to be filtered if there's a filter in place\n                if (filter && !filter(patch, inversePatch, getRunningActionContext())) {\n                    return;\n                }\n                data.patches.push(patch);\n                data.inversePatches.push(inversePatch);\n                // mark immutable public patches as dirty\n                publicData.patches = undefined;\n                publicData.inversePatches = undefined;\n                publicData.reversedInversePatches = undefined;\n            });\n        },\n        replay: function (target) {\n            applyPatch(target || subject, data.patches);\n        },\n        undo: function (target) {\n            applyPatch(target || subject, data.inversePatches.slice().reverse());\n        }\n    };\n    recorder.resume();\n    return recorder;\n}\n/**\n * The inverse of `unprotect`.\n *\n * @param target\n */\nfunction protect(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (!node.isRoot)\n        throw fail(\"`protect` can only be invoked on root nodes\");\n    node.isProtectionEnabled = true;\n}\n/**\n * By default it is not allowed to directly modify a model. Models can only be modified through actions.\n * However, in some cases you don't care about the advantages (like replayability, traceability, etc) this yields.\n * For example because you are building a PoC or don't have any middleware attached to your tree.\n *\n * In that case you can disable this protection by calling `unprotect` on the root of your tree.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *     done: false\n * }).actions(self => ({\n *     toggle() {\n *         self.done = !self.done\n *     }\n * }))\n *\n * const todo = Todo.create()\n * todo.done = true // throws!\n * todo.toggle() // OK\n * unprotect(todo)\n * todo.done = false // OK\n * ```\n */\nfunction unprotect(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (!node.isRoot)\n        throw fail(\"`unprotect` can only be invoked on root nodes\");\n    node.isProtectionEnabled = false;\n}\n/**\n * Returns true if the object is in protected mode, @see protect\n */\nfunction isProtected(target) {\n    return getStateTreeNode(target).isProtected;\n}\n/**\n * Applies a snapshot to a given model instances. Patch and snapshot listeners will be invoked as usual.\n *\n * @param target\n * @param snapshot\n * @returns\n */\nfunction applySnapshot(target, snapshot) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).applySnapshot(snapshot);\n}\n/**\n * Calculates a snapshot from the given model instance. The snapshot will always reflect the latest state but use\n * structural sharing where possible. Doesn't require MobX transactions to be completed.\n *\n * @param target\n * @param applyPostProcess If true (the default) then postProcessSnapshot gets applied.\n * @returns\n */\nfunction getSnapshot(target, applyPostProcess) {\n    if (applyPostProcess === void 0) { applyPostProcess = true; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (applyPostProcess)\n        return node.snapshot;\n    return freeze(node.type.getSnapshot(node, false));\n}\n/**\n * Given a model instance, returns `true` if the object has a parent, that is, is part of another object, map or array.\n *\n * @param target\n * @param depth How far should we look upward? 1 by default.\n * @returns\n */\nfunction hasParent(target, depth) {\n    if (depth === void 0) { depth = 1; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsNumber(depth, 2, 0);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (--depth === 0)\n            return true;\n        parent = parent.parent;\n    }\n    return false;\n}\n/**\n * Returns the immediate parent of this object, or throws.\n *\n * Note that the immediate parent can be either an object, map or array, and\n * doesn't necessarily refer to the parent model.\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired.\n *\n * @param target\n * @param depth How far should we look upward? 1 by default.\n * @returns\n */\nfunction getParent(target, depth) {\n    if (depth === void 0) { depth = 1; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsNumber(depth, 2, 0);\n    var d = depth;\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (--d === 0)\n            return parent.storedValue;\n        parent = parent.parent;\n    }\n    throw fail(\"Failed to find the parent of \" + getStateTreeNode(target) + \" at depth \" + depth);\n}\n/**\n * Given a model instance, returns `true` if the object has a parent of given type, that is, is part of another object, map or array\n *\n * @param target\n * @param type\n * @returns\n */\nfunction hasParentOfType(target, type) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsType(type, 2);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (type.is(parent.storedValue))\n            return true;\n        parent = parent.parent;\n    }\n    return false;\n}\n/**\n * Returns the target's parent of a given type, or throws.\n *\n * @param target\n * @param type\n * @returns\n */\nfunction getParentOfType(target, type) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsType(type, 2);\n    var parent = getStateTreeNode(target).parent;\n    while (parent) {\n        if (type.is(parent.storedValue))\n            return parent.storedValue;\n        parent = parent.parent;\n    }\n    throw fail(\"Failed to find the parent of \" + getStateTreeNode(target) + \" of a given type\");\n}\n/**\n * Given an object in a model tree, returns the root object of that tree.\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired.\n *\n * @param target\n * @returns\n */\nfunction getRoot(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).root.storedValue;\n}\n/**\n * Returns the path of the given object in the model tree\n *\n * @param target\n * @returns\n */\nfunction getPath(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).path;\n}\n/**\n * Returns the path of the given object as unescaped string array.\n *\n * @param target\n * @returns\n */\nfunction getPathParts(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return splitJsonPath(getStateTreeNode(target).path);\n}\n/**\n * Returns true if the given object is the root of a model tree.\n *\n * @param target\n * @returns\n */\nfunction isRoot(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).isRoot;\n}\n/**\n * Resolves a path relatively to a given object.\n * Returns undefined if no value can be found.\n *\n * @param target\n * @param path escaped json path\n * @returns\n */\nfunction resolvePath(target, path) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsString(path, 2);\n    var node = resolveNodeByPath(getStateTreeNode(target), path);\n    return node ? node.value : undefined;\n}\n/**\n * Resolves a model instance given a root target, the type and the identifier you are searching for.\n * Returns undefined if no value can be found.\n *\n * @param type\n * @param target\n * @param identifier\n * @returns\n */\nfunction resolveIdentifier(type, target, identifier) {\n    // check all arguments\n    assertIsType(type, 1);\n    assertIsStateTreeNode(target, 2);\n    assertIsValidIdentifier(identifier, 3);\n    var node = getStateTreeNode(target).root.identifierCache.resolve(type, normalizeIdentifier(identifier));\n    return node === null || node === void 0 ? void 0 : node.value;\n}\n/**\n * Returns the identifier of the target node.\n * This is the *string normalized* identifier, which might not match the type of the identifier attribute\n *\n * @param target\n * @returns\n */\nfunction getIdentifier(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).identifier;\n}\n/**\n * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns such reference if the check passes,\n * else it returns undefined.\n *\n * @param getter Function to access the reference.\n * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.\n * @returns\n */\nfunction tryReference(getter, checkIfAlive) {\n    if (checkIfAlive === void 0) { checkIfAlive = true; }\n    try {\n        var node = getter();\n        if (node === undefined || node === null) {\n            return undefined;\n        }\n        else if (isStateTreeNode(node)) {\n            if (!checkIfAlive) {\n                return node;\n            }\n            else {\n                return isAlive(node) ? node : undefined;\n            }\n        }\n        else {\n            throw fail(\"The reference to be checked is not one of node, null or undefined\");\n        }\n    }\n    catch (e) {\n        if (e instanceof InvalidReferenceError) {\n            return undefined;\n        }\n        throw e;\n    }\n}\n/**\n * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns if the check passes or not.\n *\n * @param getter Function to access the reference.\n * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.\n * @returns\n */\nfunction isValidReference(getter, checkIfAlive) {\n    if (checkIfAlive === void 0) { checkIfAlive = true; }\n    try {\n        var node = getter();\n        if (node === undefined || node === null) {\n            return false;\n        }\n        else if (isStateTreeNode(node)) {\n            return checkIfAlive ? isAlive(node) : true;\n        }\n        else {\n            throw fail(\"The reference to be checked is not one of node, null or undefined\");\n        }\n    }\n    catch (e) {\n        if (e instanceof InvalidReferenceError) {\n            return false;\n        }\n        throw e;\n    }\n}\n/**\n * Try to resolve a given path relative to a given node.\n *\n * @param target\n * @param path\n * @returns\n */\nfunction tryResolve(target, path) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsString(path, 2);\n    var node = resolveNodeByPath(getStateTreeNode(target), path, false);\n    if (node === undefined)\n        return undefined;\n    try {\n        return node.value;\n    }\n    catch (e) {\n        // For what ever reason not resolvable (e.g. totally not existing path, or value that cannot be fetched)\n        // see test / issue: 'try resolve doesn't work #686'\n        return undefined;\n    }\n}\n/**\n * Given two state tree nodes that are part of the same tree,\n * returns the shortest jsonpath needed to navigate from the one to the other\n *\n * @param base\n * @param target\n * @returns\n */\nfunction getRelativePath(base, target) {\n    // check all arguments\n    assertIsStateTreeNode(base, 1);\n    assertIsStateTreeNode(target, 2);\n    return getRelativePathBetweenNodes(getStateTreeNode(base), getStateTreeNode(target));\n}\n/**\n * Returns a deep copy of the given state tree node as new tree.\n * Shorthand for `snapshot(x) = getType(x).create(getSnapshot(x))`\n *\n * _Tip: clone will create a literal copy, including the same identifiers. To modify identifiers etc. during cloning, don't use clone but take a snapshot of the tree, modify it, and create new instance_\n *\n * @param source\n * @param keepEnvironment indicates whether the clone should inherit the same environment (`true`, the default), or not have an environment (`false`). If an object is passed in as second argument, that will act as the environment for the cloned tree.\n * @returns\n */\nfunction clone(source, keepEnvironment) {\n    if (keepEnvironment === void 0) { keepEnvironment = true; }\n    // check all arguments\n    assertIsStateTreeNode(source, 1);\n    var node = getStateTreeNode(source);\n    return node.type.create(node.snapshot, keepEnvironment === true\n        ? node.root.environment\n        : keepEnvironment === false\n            ? undefined\n            : keepEnvironment); // it's an object or something else\n}\n/**\n * Removes a model element from the state tree, and let it live on as a new state tree\n */\nfunction detach(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    getStateTreeNode(target).detach();\n    return target;\n}\n/**\n * Removes a model element from the state tree, and mark it as end-of-life; the element should not be used anymore\n */\nfunction destroy(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    if (node.isRoot)\n        node.die();\n    else\n        node.parent.removeChild(node.subpath);\n}\n/**\n * Returns true if the given state tree node is not killed yet.\n * This means that the node is still a part of a tree, and that `destroy`\n * has not been called. If a node is not alive anymore, the only thing one can do with it\n * is requesting it's last path and snapshot\n *\n * @param target\n * @returns\n */\nfunction isAlive(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).observableIsAlive;\n}\n/**\n * Use this utility to register a function that should be called whenever the\n * targeted state tree node is destroyed. This is a useful alternative to managing\n * cleanup methods yourself using the `beforeDestroy` hook.\n *\n * This methods returns the same disposer that was passed as argument.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   title: types.string\n * }).actions(self => ({\n *   afterCreate() {\n *     const autoSaveDisposer = reaction(\n *       () => getSnapshot(self),\n *       snapshot => sendSnapshotToServerSomehow(snapshot)\n *     )\n *     // stop sending updates to server if this\n *     // instance is destroyed\n *     addDisposer(self, autoSaveDisposer)\n *   }\n * }))\n * ```\n *\n * @param target\n * @param disposer\n * @returns The same disposer that was passed as argument\n */\nfunction addDisposer(target, disposer) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(disposer, 2);\n    var node = getStateTreeNode(target);\n    node.addDisposer(disposer);\n    return disposer;\n}\n/**\n * Returns the environment of the current state tree. For more info on environments,\n * see [Dependency injection](https://github.com/mobxjs/mobx-state-tree#dependency-injection)\n *\n * Please note that in child nodes access to the root is only possible\n * once the `afterAttach` hook has fired\n *\n * Returns an empty environment if the tree wasn't initialized with an environment\n *\n * @param target\n * @returns\n */\nfunction getEnv(target) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    var node = getStateTreeNode(target);\n    var env = node.root.environment;\n    if (!env)\n        return EMPTY_OBJECT;\n    return env;\n}\n/**\n * Performs a depth first walk through a tree.\n */\nfunction walk(target, processor) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertIsFunction(processor, 2);\n    var node = getStateTreeNode(target);\n    // tslint:disable-next-line:no_unused-variable\n    node.getChildren().forEach(function (child) {\n        if (isStateTreeNode(child.storedValue))\n            walk(child.storedValue, processor);\n    });\n    processor(node.storedValue);\n}\n/**\n * Returns a reflection of the model type properties and name for either a model type or model node.\n *\n * @param typeOrNode\n * @returns\n */\nfunction getPropertyMembers(typeOrNode) {\n    var type;\n    if (isStateTreeNode(typeOrNode)) {\n        type = getType(typeOrNode);\n    }\n    else {\n        type = typeOrNode;\n    }\n    assertArg(type, function (t) { return isModelType(t); }, \"model type or model instance\", 1);\n    return {\n        name: type.name,\n        properties: __assign({}, type.properties)\n    };\n}\n/**\n * Returns a reflection of the model node, including name, properties, views, volatile state,\n * and actions. `flowActions` is also provided as a separate array of names for any action that\n * came from a flow generator as well.\n *\n * In the case where a model has two actions: `doSomething` and `doSomethingWithFlow`, where\n * `doSomethingWithFlow` is a flow generator, the `actions` array will contain both actions,\n * i.e. [\"doSomething\", \"doSomethingWithFlow\"], and the `flowActions` array will contain only\n * the flow action, i.e. [\"doSomethingWithFlow\"].\n *\n * @param target\n * @returns\n */\nfunction getMembers(target) {\n    var type = getStateTreeNode(target).type;\n    var reflected = __assign(__assign({}, getPropertyMembers(type)), { actions: [], volatile: [], views: [], flowActions: [] });\n    var props = Object.getOwnPropertyNames(target);\n    props.forEach(function (key) {\n        if (key in reflected.properties)\n            return;\n        var descriptor = Object.getOwnPropertyDescriptor(target, key);\n        if (descriptor.get) {\n            if (isComputedProp(target, key))\n                reflected.views.push(key);\n            else\n                reflected.volatile.push(key);\n            return;\n        }\n        if (descriptor.value._isFlowAction === true) {\n            reflected.flowActions.push(key);\n        }\n        if (descriptor.value._isMSTAction === true) {\n            reflected.actions.push(key);\n        }\n        else if (isObservableProp(target, key)) {\n            reflected.volatile.push(key);\n        }\n        else {\n            reflected.views.push(key);\n        }\n    });\n    return reflected;\n}\n/**\n * Casts a node snapshot or instance type to an instance type so it can be assigned to a type instance.\n * Note that this is just a cast for the type system, this is, it won't actually convert a snapshot to an instance,\n * but just fool typescript into thinking so.\n * Either way, casting when outside an assignation operation won't compile.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   innerModel: ModelA\n * }).actions(self => ({\n *   someAction() {\n *     // this will allow the compiler to assign a snapshot to the property\n *     self.innerModel = cast({ a: 5 })\n *   }\n * }))\n * ```\n *\n * @param snapshotOrInstance Snapshot or instance\n * @returns The same object cast as an instance\n */\nfunction cast(snapshotOrInstance) {\n    return snapshotOrInstance;\n}\n/**\n * Casts a node instance type to a snapshot type so it can be assigned to a type snapshot (e.g. to be used inside a create call).\n * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a snapshot,\n * but just fool typescript into thinking so.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   innerModel: ModelA\n * })\n *\n * const a = ModelA.create({ n: 5 });\n * // this will allow the compiler to use a model as if it were a snapshot\n * const b = ModelB.create({ innerModel: castToSnapshot(a)})\n * ```\n *\n * @param snapshotOrInstance Snapshot or instance\n * @returns The same object cast as an input (creation) snapshot\n */\nfunction castToSnapshot(snapshotOrInstance) {\n    return snapshotOrInstance;\n}\n/**\n * Casts a node instance type to a reference snapshot type so it can be assigned to a reference snapshot (e.g. to be used inside a create call).\n * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a reference snapshot,\n * but just fool typescript into thinking so.\n *\n * Example:\n * ```ts\n * const ModelA = types.model({\n *   id: types.identifier,\n *   n: types.number\n * }).actions(self => ({\n *   setN(aNumber: number) {\n *     self.n = aNumber\n *   }\n * }))\n *\n * const ModelB = types.model({\n *   refA: types.reference(ModelA)\n * })\n *\n * const a = ModelA.create({ id: 'someId', n: 5 });\n * // this will allow the compiler to use a model as if it were a reference snapshot\n * const b = ModelB.create({ refA: castToReferenceSnapshot(a)})\n * ```\n *\n * @param instance Instance\n * @returns The same object cast as a reference snapshot (string or number)\n */\nfunction castToReferenceSnapshot(instance) {\n    return instance;\n}\n/**\n * Returns the unique node id (not to be confused with the instance identifier) for a\n * given instance.\n * This id is a number that is unique for each instance.\n *\n * @export\n * @param target\n * @returns\n */\nfunction getNodeId(target) {\n    assertIsStateTreeNode(target, 1);\n    return getStateTreeNode(target).nodeId;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar BaseNode = /** @class */ (function () {\n    function BaseNode(type, parent, subpath, environment) {\n        Object.defineProperty(this, \"type\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: type\n        });\n        Object.defineProperty(this, \"environment\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: environment\n        });\n        Object.defineProperty(this, \"_escapedSubpath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_subpath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_subpathUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_pathUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"storedValue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        }); // usually the same type as the value, but not always (such as with references)\n        Object.defineProperty(this, \"aliveAtom\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_state\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: NodeLifeCycle.INITIALIZING\n        });\n        Object.defineProperty(this, \"_hookSubscribers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_parent\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"pathAtom\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.environment = environment;\n        this.baseSetParent(parent, subpath);\n    }\n    Object.defineProperty(BaseNode.prototype, \"subpath\", {\n        get: function () {\n            return this._subpath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"subpathUponDeath\", {\n        get: function () {\n            return this._subpathUponDeath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"pathUponDeath\", {\n        get: function () {\n            return this._pathUponDeath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"value\", {\n        get: function () {\n            return this.type.getValue(this);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"state\", {\n        get: function () {\n            return this._state;\n        },\n        set: function (val) {\n            var wasAlive = this.isAlive;\n            this._state = val;\n            var isAlive = this.isAlive;\n            if (this.aliveAtom && wasAlive !== isAlive) {\n                this.aliveAtom.reportChanged();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"fireInternalHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            if (this._hookSubscribers) {\n                this._hookSubscribers.emit(name, this, name);\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"registerHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hook, hookHandler) {\n            if (!this._hookSubscribers) {\n                this._hookSubscribers = new EventHandlers();\n            }\n            return this._hookSubscribers.register(hook, hookHandler);\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"parent\", {\n        get: function () {\n            return this._parent;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"getReconciliationType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseSetParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath) {\n            this._parent = parent;\n            this._subpath = subpath;\n            this._escapedSubpath = undefined; // regenerate when needed\n            if (this.pathAtom) {\n                this.pathAtom.reportChanged();\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"path\", {\n        /*\n         * Returns (escaped) path representation as string\n         */\n        get: function () {\n            return this.getEscapedPath(true);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"getEscapedPath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (reportObserved) {\n            if (reportObserved) {\n                if (!this.pathAtom) {\n                    this.pathAtom = createAtom(\"path\");\n                }\n                this.pathAtom.reportObserved();\n            }\n            if (!this.parent)\n                return \"\";\n            // regenerate escaped subpath if needed\n            if (this._escapedSubpath === undefined) {\n                this._escapedSubpath = !this._subpath ? \"\" : escapeJsonPath(this._subpath);\n            }\n            return this.parent.getEscapedPath(reportObserved) + \"/\" + this._escapedSubpath;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"isRoot\", {\n        get: function () {\n            return this.parent === null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"isAlive\", {\n        get: function () {\n            return this.state !== NodeLifeCycle.DEAD;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"isDetaching\", {\n        get: function () {\n            return this.state === NodeLifeCycle.DETACHING;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"observableIsAlive\", {\n        get: function () {\n            if (!this.aliveAtom) {\n                this.aliveAtom = createAtom(\"alive\");\n            }\n            this.aliveAtom.reportObserved();\n            return this.isAlive;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseFinalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (whenFinalized) {\n            if (devMode()) {\n                if (!this.isAlive) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: cannot finalize the creation of a node that is already dead\");\n                }\n            }\n            // goal: afterCreate hooks runs depth-first. After attach runs parent first, so on afterAttach the parent has completed already\n            if (this.state === NodeLifeCycle.CREATED) {\n                if (this.parent) {\n                    if (this.parent.state !== NodeLifeCycle.FINALIZED) {\n                        // parent not ready yet, postpone\n                        return;\n                    }\n                    this.fireHook(Hook.afterAttach);\n                }\n                this.state = NodeLifeCycle.FINALIZED;\n                if (whenFinalized) {\n                    whenFinalized();\n                }\n            }\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseFinalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._hookSubscribers) {\n                this._hookSubscribers.clearAll();\n            }\n            this._subpathUponDeath = this._subpath;\n            this._pathUponDeath = this.getEscapedPath(false);\n            this.baseSetParent(null, \"\");\n            this.state = NodeLifeCycle.DEAD;\n        }\n    });\n    Object.defineProperty(BaseNode.prototype, \"baseAboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.fireHook(Hook.beforeDestroy);\n        }\n    });\n    return BaseNode;\n}());\n\n/**\n * @internal\n * @hidden\n */\nvar ScalarNode = /** @class */ (function (_super) {\n    __extends(ScalarNode, _super);\n    function ScalarNode(simpleType, parent, subpath, environment, initialSnapshot) {\n        var _this = _super.call(this, simpleType, parent, subpath, environment) || this;\n        try {\n            _this.storedValue = simpleType.createNewInstance(initialSnapshot);\n        }\n        catch (e) {\n            // short-cut to die the instance, to avoid the snapshot computed starting to throw...\n            _this.state = NodeLifeCycle.DEAD;\n            throw e;\n        }\n        _this.state = NodeLifeCycle.CREATED;\n        // for scalar nodes there's no point in firing this event since it would fire on the constructor, before\n        // anybody can actually register for/listen to it\n        // this.fireHook(Hook.AfterCreate)\n        _this.finalizeCreation();\n        return _this;\n    }\n    Object.defineProperty(ScalarNode.prototype, \"root\", {\n        get: function () {\n            // future optimization: store root ref in the node and maintain it\n            if (!this.parent)\n                throw fail(\"This scalar node is not part of a tree\");\n            return this.parent.root;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScalarNode.prototype, \"setParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (newParent, subpath) {\n            var parentChanged = this.parent !== newParent;\n            var subpathChanged = this.subpath !== subpath;\n            if (!parentChanged && !subpathChanged) {\n                return;\n            }\n            if (devMode()) {\n                if (!subpath) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: subpath expected\");\n                }\n                if (!newParent) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: parent expected\");\n                }\n                if (parentChanged) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: scalar nodes cannot change their parent\");\n                }\n            }\n            this.environment = undefined; // use parent's\n            this.baseSetParent(this.parent, subpath);\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"snapshot\", {\n        get: function () {\n            return freeze(this.getSnapshot());\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScalarNode.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type.getSnapshot(this);\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"toString\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var path = (this.isAlive ? this.path : this.pathUponDeath) || \"<root>\";\n            return this.type.name + \"@\" + path + (this.isAlive ? \"\" : \" [dead]\");\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"die\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive || this.state === NodeLifeCycle.DETACHING)\n                return;\n            this.aboutToDie();\n            this.finalizeDeath();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"finalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseFinalizeCreation();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"aboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseAboutToDie();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"finalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.baseFinalizeDeath();\n        }\n    });\n    Object.defineProperty(ScalarNode.prototype, \"fireHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            this.fireInternalHook(name);\n        }\n    });\n    return ScalarNode;\n}(BaseNode));\nScalarNode.prototype.die = action(ScalarNode.prototype.die);\n\nvar nextNodeId = 1;\nvar snapshotReactionOptions = {\n    onError: function (e) {\n        throw e;\n    }\n};\n/**\n * @internal\n * @hidden\n */\nvar ObjectNode = /** @class */ (function (_super) {\n    __extends(ObjectNode, _super);\n    function ObjectNode(complexType, parent, subpath, environment, initialValue) {\n        var _this = _super.call(this, complexType, parent, subpath, environment) || this;\n        Object.defineProperty(_this, \"nodeId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: ++nextNodeId\n        });\n        Object.defineProperty(_this, \"identifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"identifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        }); // Identifier is always normalized to string, even if the identifier property isn't\n        Object.defineProperty(_this, \"unnormalizedIdentifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"identifierCache\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"isProtectionEnabled\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        Object.defineProperty(_this, \"middlewares\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"hasSnapshotPostProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_applyPatches\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_applySnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_autoUnbox\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        }); // unboxing is disabled when reading child nodes\n        Object.defineProperty(_this, \"_isRunningAction\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        }); // only relevant for root\n        Object.defineProperty(_this, \"_hasSnapshotReaction\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_observableInstanceState\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0 /* UNINITIALIZED */\n        });\n        Object.defineProperty(_this, \"_childNodes\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_initialSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_cachedInitialSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_cachedInitialSnapshotCreated\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(_this, \"_snapshotComputed\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_snapshotUponDeath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // #region internal event handling\n        Object.defineProperty(_this, \"_internalEvents\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        _this._snapshotComputed = computed(function () { return freeze(_this.getSnapshot()); });\n        _this.unbox = _this.unbox.bind(_this);\n        _this._initialSnapshot = freeze(initialValue);\n        _this.identifierAttribute = complexType.identifierAttribute;\n        if (!parent) {\n            _this.identifierCache = new IdentifierCache();\n        }\n        _this._childNodes = complexType.initializeChildNodes(_this, _this._initialSnapshot);\n        // identifier can not be changed during lifecycle of a node\n        // so we safely can read it from initial snapshot\n        _this.identifier = null;\n        _this.unnormalizedIdentifier = null;\n        if (_this.identifierAttribute && _this._initialSnapshot) {\n            var id = _this._initialSnapshot[_this.identifierAttribute];\n            if (id === undefined) {\n                // try with the actual node if not (for optional identifiers)\n                var childNode = _this._childNodes[_this.identifierAttribute];\n                if (childNode) {\n                    id = childNode.value;\n                }\n            }\n            if (typeof id !== \"string\" && typeof id !== \"number\") {\n                throw fail(\"Instance identifier '\" + _this.identifierAttribute + \"' for type '\" + _this.type.name + \"' must be a string or a number\");\n            }\n            // normalize internal identifier to string\n            _this.identifier = normalizeIdentifier(id);\n            _this.unnormalizedIdentifier = id;\n        }\n        if (!parent) {\n            _this.identifierCache.addNodeToCache(_this);\n        }\n        else {\n            parent.root.identifierCache.addNodeToCache(_this);\n        }\n        return _this;\n    }\n    Object.defineProperty(ObjectNode.prototype, \"applyPatches\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (patches) {\n            this.createObservableInstanceIfNeeded();\n            this._applyPatches(patches);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            this.createObservableInstanceIfNeeded();\n            this._applySnapshot(snapshot);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"createObservableInstanceIfNeeded\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fireHooks) {\n            if (fireHooks === void 0) { fireHooks = true; }\n            if (this._observableInstanceState === 0 /* UNINITIALIZED */) {\n                this.createObservableInstance(fireHooks);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"createObservableInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fireHooks) {\n            var e_1, _a, e_2, _b;\n            if (fireHooks === void 0) { fireHooks = true; }\n            if (devMode()) {\n                if (this.state !== NodeLifeCycle.INITIALIZING) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: the creation of the observable instance must be done on the initializing phase\");\n                }\n            }\n            this._observableInstanceState = 1 /* CREATING */;\n            // make sure the parent chain is created as well\n            // array with parent chain from parent to child\n            var parentChain = [];\n            var parent = this.parent;\n            // for performance reasons we never go back further than the most direct\n            // uninitialized parent\n            // this is done to avoid traversing the whole tree to the root when using\n            // the same reference again\n            while (parent &&\n                parent._observableInstanceState === 0 /* UNINITIALIZED */) {\n                parentChain.unshift(parent);\n                parent = parent.parent;\n            }\n            try {\n                // initialize the uninitialized parent chain from parent to child\n                for (var parentChain_1 = __values(parentChain), parentChain_1_1 = parentChain_1.next(); !parentChain_1_1.done; parentChain_1_1 = parentChain_1.next()) {\n                    var p = parentChain_1_1.value;\n                    // delay firing hooks until after all parents have been created\n                    p.createObservableInstanceIfNeeded(false);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (parentChain_1_1 && !parentChain_1_1.done && (_a = parentChain_1.return)) _a.call(parentChain_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            var type = this.type;\n            try {\n                this.storedValue = type.createNewInstance(this._childNodes);\n                this.preboot();\n                this._isRunningAction = true;\n                type.finalizeNewInstance(this, this.storedValue);\n            }\n            catch (e) {\n                // short-cut to die the instance, to avoid the snapshot computed starting to throw...\n                this.state = NodeLifeCycle.DEAD;\n                throw e;\n            }\n            finally {\n                this._isRunningAction = false;\n            }\n            this._observableInstanceState = 2 /* CREATED */;\n            this._snapshotComputed.trackAndCompute();\n            if (this.isRoot)\n                this._addSnapshotReaction();\n            this._childNodes = EMPTY_OBJECT;\n            this.state = NodeLifeCycle.CREATED;\n            if (fireHooks) {\n                this.fireHook(Hook.afterCreate);\n                // Note that the parent might not be finalized at this point\n                // so afterAttach won't be called until later in that case\n                this.finalizeCreation();\n                try {\n                    // fire the hooks of the parents that we created\n                    for (var _c = __values(parentChain.reverse()), _d = _c.next(); !_d.done; _d = _c.next()) {\n                        var p = _d.value;\n                        p.fireHook(Hook.afterCreate);\n                        // This will call afterAttach on the child if necessary\n                        p.finalizeCreation();\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"root\", {\n        get: function () {\n            var parent = this.parent;\n            return parent ? parent.root : this;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ObjectNode.prototype, \"clearParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.parent)\n                return;\n            // detach if attached\n            this.fireHook(Hook.beforeDetach);\n            var previousState = this.state;\n            this.state = NodeLifeCycle.DETACHING;\n            var root = this.root;\n            var newEnv = root.environment;\n            var newIdCache = root.identifierCache.splitCache(this);\n            try {\n                this.parent.removeChild(this.subpath);\n                this.baseSetParent(null, \"\");\n                this.environment = newEnv;\n                this.identifierCache = newIdCache;\n            }\n            finally {\n                this.state = previousState;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"setParent\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (newParent, subpath) {\n            var parentChanged = newParent !== this.parent;\n            var subpathChanged = subpath !== this.subpath;\n            if (!parentChanged && !subpathChanged) {\n                return;\n            }\n            if (devMode()) {\n                if (!subpath) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: subpath expected\");\n                }\n                if (!newParent) {\n                    // istanbul ignore next\n                    throw fail(\"assertion failed: new parent expected\");\n                }\n                if (this.parent && parentChanged) {\n                    throw fail(\"A node cannot exists twice in the state tree. Failed to add \" + this + \" to path '\" + newParent.path + \"/\" + subpath + \"'.\");\n                }\n                if (!this.parent && newParent.root === this) {\n                    throw fail(\"A state tree is not allowed to contain itself. Cannot assign \" + this + \" to path '\" + newParent.path + \"/\" + subpath + \"'\");\n                }\n                if (!this.parent && !!this.environment && this.environment !== newParent.root.environment) {\n                    throw fail(\"A state tree cannot be made part of another state tree as long as their environments are different.\");\n                }\n            }\n            if (parentChanged) {\n                // attach to new parent\n                this.environment = undefined; // will use root's\n                newParent.root.identifierCache.mergeCache(this);\n                this.baseSetParent(newParent, subpath);\n                this.fireHook(Hook.afterAttach);\n            }\n            else if (subpathChanged) {\n                // moving to a new subpath on the same parent\n                this.baseSetParent(this.parent, subpath);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"fireHook\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (name) {\n            var _this = this;\n            this.fireInternalHook(name);\n            var fn = this.storedValue && typeof this.storedValue === \"object\" && this.storedValue[name];\n            if (typeof fn === \"function\") {\n                // we check for it to allow old mobx peer dependencies that don't have the method to work (even when still bugged)\n                if (_allowStateChangesInsideComputed) {\n                    _allowStateChangesInsideComputed(function () {\n                        fn.apply(_this.storedValue);\n                    });\n                }\n                else {\n                    fn.apply(this.storedValue);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"snapshot\", {\n        // advantage of using computed for a snapshot is that nicely respects transactions etc.\n        get: function () {\n            if (this.hasSnapshotPostProcessor) {\n                this.createObservableInstanceIfNeeded();\n            }\n            return this._snapshotComputed.get();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    // NOTE: we use this method to get snapshot without creating @computed overhead\n    Object.defineProperty(ObjectNode.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive)\n                return this._snapshotUponDeath;\n            return this._observableInstanceState === 2 /* CREATED */\n                ? this._getActualSnapshot()\n                : this._getCachedInitialSnapshot();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getActualSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.type.getSnapshot(this);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getCachedInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this._cachedInitialSnapshotCreated) {\n                var type = this.type;\n                var childNodes = this._childNodes;\n                var snapshot = this._initialSnapshot;\n                this._cachedInitialSnapshot = type.processInitialSnapshot(childNodes, snapshot);\n                this._cachedInitialSnapshotCreated = true;\n            }\n            return this._cachedInitialSnapshot;\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"isRunningAction\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._isRunningAction)\n                return true;\n            if (this.isRoot)\n                return false;\n            return this.parent.isRunningAction();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"assertAlive\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            var livelinessChecking = getLivelinessChecking();\n            if (!this.isAlive && livelinessChecking !== \"ignore\") {\n                var error = this._getAssertAliveError(context);\n                switch (livelinessChecking) {\n                    case \"error\":\n                        throw fail(error);\n                    case \"warn\":\n                        warnError(error);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_getAssertAliveError\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            var escapedPath = this.getEscapedPath(false) || this.pathUponDeath || \"\";\n            var subpath = (context.subpath && escapeJsonPath(context.subpath)) || \"\";\n            var actionContext = context.actionContext || getCurrentActionContext();\n            // try to use a real action context if possible since it includes the action name\n            if (actionContext && actionContext.type !== \"action\" && actionContext.parentActionEvent) {\n                actionContext = actionContext.parentActionEvent;\n            }\n            var actionFullPath = \"\";\n            if (actionContext && actionContext.name != null) {\n                // try to use the context, and if it not available use the node one\n                var actionPath = (actionContext && actionContext.context && getPath(actionContext.context)) || escapedPath;\n                actionFullPath = actionPath + \".\" + actionContext.name + \"()\";\n            }\n            return \"You are trying to read or write to an object that is no longer part of a state tree. (Object type: '\" + this.type.name + \"', Path upon death: '\" + escapedPath + \"', Subpath: '\" + subpath + \"', Action: '\" + actionFullPath + \"'). Either detach nodes first, or don't use objects after removing / replacing them in the tree.\";\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath) {\n            this.assertAlive({\n                subpath: subpath\n            });\n            this._autoUnbox = false;\n            try {\n                return this._observableInstanceState === 2 /* CREATED */\n                    ? this.type.getChildNode(this, subpath)\n                    : this._childNodes[subpath];\n            }\n            finally {\n                this._autoUnbox = true;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.assertAlive(EMPTY_OBJECT);\n            this._autoUnbox = false;\n            try {\n                return this._observableInstanceState === 2 /* CREATED */\n                    ? this.type.getChildren(this)\n                    : convertChildNodesToArray(this._childNodes);\n            }\n            finally {\n                this._autoUnbox = true;\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (propertyName) {\n            return this.type.getChildType(propertyName);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"isProtected\", {\n        get: function () {\n            return this.root.isProtectionEnabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ObjectNode.prototype, \"assertWritable\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (context) {\n            this.assertAlive(context);\n            if (!this.isRunningAction() && this.isProtected) {\n                throw fail(\"Cannot modify '\" + this + \"', the object is protected and can only be modified by using an action.\");\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath) {\n            this.type.removeChild(this, subpath);\n        }\n    });\n    // bound on the constructor\n    Object.defineProperty(ObjectNode.prototype, \"unbox\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNode) {\n            if (!childNode)\n                return childNode;\n            this.assertAlive({\n                subpath: childNode.subpath || childNode.subpathUponDeath\n            });\n            return this._autoUnbox ? childNode.value : childNode;\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"toString\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var path = (this.isAlive ? this.path : this.pathUponDeath) || \"<root>\";\n            var identifier = this.identifier ? \"(id: \" + this.identifier + \")\" : \"\";\n            return this.type.name + \"@\" + path + identifier + (this.isAlive ? \"\" : \" [dead]\");\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"finalizeCreation\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            this.baseFinalizeCreation(function () {\n                var e_3, _a;\n                try {\n                    for (var _b = __values(_this.getChildren()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                        var child = _c.value;\n                        child.finalizeCreation();\n                    }\n                }\n                catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                finally {\n                    try {\n                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                    }\n                    finally { if (e_3) throw e_3.error; }\n                }\n                _this.fireInternalHook(Hook.afterCreationFinalization);\n            });\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"detach\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive)\n                throw fail(\"Error while detaching, node is not alive.\");\n            this.clearParent();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"preboot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var self = this;\n            this._applyPatches = createActionInvoker(this.storedValue, \"@APPLY_PATCHES\", function (patches) {\n                patches.forEach(function (patch) {\n                    if (!patch.path) {\n                        self.type.applySnapshot(self, patch.value);\n                        return;\n                    }\n                    var parts = splitJsonPath(patch.path);\n                    var node = resolveNodeByPathParts(self, parts.slice(0, -1));\n                    node.applyPatchLocally(parts[parts.length - 1], patch);\n                });\n            });\n            this._applySnapshot = createActionInvoker(this.storedValue, \"@APPLY_SNAPSHOT\", function (snapshot) {\n                // if the snapshot is the same as the current one, avoid performing a reconcile\n                if (snapshot === self.snapshot)\n                    return;\n                // else, apply it by calling the type logic\n                return self.type.applySnapshot(self, snapshot);\n            });\n            addHiddenFinalProp(this.storedValue, \"$treenode\", this);\n            addHiddenFinalProp(this.storedValue, \"toJSON\", toJSON);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"die\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (!this.isAlive || this.state === NodeLifeCycle.DETACHING)\n                return;\n            this.aboutToDie();\n            this.finalizeDeath();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"aboutToDie\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._observableInstanceState === 0 /* UNINITIALIZED */) {\n                return;\n            }\n            this.getChildren().forEach(function (node) {\n                node.aboutToDie();\n            });\n            // beforeDestroy should run before the disposers since else we could end up in a situation where\n            // a disposer added with addDisposer at this stage (beforeDestroy) is actually never released\n            this.baseAboutToDie();\n            this._internalEventsEmit(\"dispose\" /* Dispose */);\n            this._internalEventsClear(\"dispose\" /* Dispose */);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"finalizeDeath\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            // invariant: not called directly but from \"die\"\n            this.getChildren().forEach(function (node) {\n                node.finalizeDeath();\n            });\n            this.root.identifierCache.notifyDied(this);\n            // \"kill\" the computed prop and just store the last snapshot\n            var snapshot = this.snapshot;\n            this._snapshotUponDeath = snapshot;\n            this._internalEventsClearAll();\n            this.baseFinalizeDeath();\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"onSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (onChange) {\n            this._addSnapshotReaction();\n            return this._internalEventsRegister(\"snapshot\" /* Snapshot */, onChange);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"emitSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            this._internalEventsEmit(\"snapshot\" /* Snapshot */, snapshot);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"onPatch\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (handler) {\n            return this._internalEventsRegister(\"patch\" /* Patch */, handler);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"emitPatch\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (basePatch, source) {\n            if (this._internalEventsHasSubscribers(\"patch\" /* Patch */)) {\n                var localizedPatch = extend({}, basePatch, {\n                    path: source.path.substr(this.path.length) + \"/\" + basePatch.path // calculate the relative path of the patch\n                });\n                var _a = __read(splitPatch(localizedPatch), 2), patch = _a[0], reversePatch = _a[1];\n                this._internalEventsEmit(\"patch\" /* Patch */, patch, reversePatch);\n            }\n            if (this.parent)\n                this.parent.emitPatch(basePatch, source);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"hasDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            return this._internalEventsHas(\"dispose\" /* Dispose */, disposer);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"addDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            if (!this.hasDisposer(disposer)) {\n                this._internalEventsRegister(\"dispose\" /* Dispose */, disposer, true);\n                return;\n            }\n            throw fail(\"cannot add a disposer when it is already registered for execution\");\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeDisposer\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (disposer) {\n            if (!this._internalEventsHas(\"dispose\" /* Dispose */, disposer)) {\n                throw fail(\"cannot remove a disposer which was never registered for execution\");\n            }\n            this._internalEventsUnregister(\"dispose\" /* Dispose */, disposer);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"removeMiddleware\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (middleware) {\n            if (this.middlewares) {\n                var index = this.middlewares.indexOf(middleware);\n                if (index >= 0) {\n                    this.middlewares.splice(index, 1);\n                }\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"addMiddleWare\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (handler, includeHooks) {\n            var _this = this;\n            if (includeHooks === void 0) { includeHooks = true; }\n            var middleware = { handler: handler, includeHooks: includeHooks };\n            if (!this.middlewares)\n                this.middlewares = [middleware];\n            else\n                this.middlewares.push(middleware);\n            return function () {\n                _this.removeMiddleware(middleware);\n            };\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (subpath, patch) {\n            this.assertWritable({\n                subpath: subpath\n            });\n            this.createObservableInstanceIfNeeded();\n            this.type.applyPatchLocally(this, subpath, patch);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_addSnapshotReaction\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            if (!this._hasSnapshotReaction) {\n                var snapshotDisposer = reaction(function () { return _this.snapshot; }, function (snapshot) { return _this.emitSnapshot(snapshot); }, snapshotReactionOptions);\n                this.addDisposer(snapshotDisposer);\n                this._hasSnapshotReaction = true;\n            }\n        }\n    });\n    // we proxy the methods to avoid creating an EventHandlers instance when it is not needed\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsHasSubscribers\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            return !!this._internalEvents && this._internalEvents.hasSubscribers(event);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsRegister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler, atTheBeginning) {\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (!this._internalEvents) {\n                this._internalEvents = new EventHandlers();\n            }\n            return this._internalEvents.register(event, eventHandler, atTheBeginning);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsHas\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler) {\n            return !!this._internalEvents && this._internalEvents.has(event, eventHandler);\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsUnregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, eventHandler) {\n            if (this._internalEvents) {\n                this._internalEvents.unregister(event, eventHandler);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsEmit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var _a;\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (this._internalEvents) {\n                (_a = this._internalEvents).emit.apply(_a, __spread([event], args));\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsClear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            if (this._internalEvents) {\n                this._internalEvents.clear(event);\n            }\n        }\n    });\n    Object.defineProperty(ObjectNode.prototype, \"_internalEventsClearAll\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this._internalEvents) {\n                this._internalEvents.clearAll();\n            }\n        }\n    });\n    return ObjectNode;\n}(BaseNode));\nObjectNode.prototype.createObservableInstance = action(ObjectNode.prototype.createObservableInstance);\nObjectNode.prototype.detach = action(ObjectNode.prototype.detach);\nObjectNode.prototype.die = action(ObjectNode.prototype.die);\n\nvar _a;\n/**\n * @internal\n * @hidden\n */\nvar TypeFlags;\n(function (TypeFlags) {\n    TypeFlags[TypeFlags[\"String\"] = 1] = \"String\";\n    TypeFlags[TypeFlags[\"Number\"] = 2] = \"Number\";\n    TypeFlags[TypeFlags[\"Boolean\"] = 4] = \"Boolean\";\n    TypeFlags[TypeFlags[\"Date\"] = 8] = \"Date\";\n    TypeFlags[TypeFlags[\"Literal\"] = 16] = \"Literal\";\n    TypeFlags[TypeFlags[\"Array\"] = 32] = \"Array\";\n    TypeFlags[TypeFlags[\"Map\"] = 64] = \"Map\";\n    TypeFlags[TypeFlags[\"Object\"] = 128] = \"Object\";\n    TypeFlags[TypeFlags[\"Frozen\"] = 256] = \"Frozen\";\n    TypeFlags[TypeFlags[\"Optional\"] = 512] = \"Optional\";\n    TypeFlags[TypeFlags[\"Reference\"] = 1024] = \"Reference\";\n    TypeFlags[TypeFlags[\"Identifier\"] = 2048] = \"Identifier\";\n    TypeFlags[TypeFlags[\"Late\"] = 4096] = \"Late\";\n    TypeFlags[TypeFlags[\"Refinement\"] = 8192] = \"Refinement\";\n    TypeFlags[TypeFlags[\"Union\"] = 16384] = \"Union\";\n    TypeFlags[TypeFlags[\"Null\"] = 32768] = \"Null\";\n    TypeFlags[TypeFlags[\"Undefined\"] = 65536] = \"Undefined\";\n    TypeFlags[TypeFlags[\"Integer\"] = 131072] = \"Integer\";\n    TypeFlags[TypeFlags[\"Custom\"] = 262144] = \"Custom\";\n    TypeFlags[TypeFlags[\"SnapshotProcessor\"] = 524288] = \"SnapshotProcessor\";\n    TypeFlags[TypeFlags[\"Lazy\"] = 1048576] = \"Lazy\";\n    TypeFlags[TypeFlags[\"Finite\"] = 2097152] = \"Finite\";\n    TypeFlags[TypeFlags[\"Float\"] = 4194304] = \"Float\";\n})(TypeFlags || (TypeFlags = {}));\n/**\n * @internal\n * @hidden\n */\nvar cannotDetermineSubtype = \"cannotDetermine\";\n/** @hidden */\nvar $type = Symbol(\"$type\");\n/**\n * A base type produces a MST node (Node in the state tree)\n *\n * @internal\n * @hidden\n */\nvar BaseType = /** @class */ (function () {\n    function BaseType(name) {\n        Object.defineProperty(this, _a, {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // these are just to make inner types avaialable to inherited classes\n        Object.defineProperty(this, \"C\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"S\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"T\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"N\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"isType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.name = name;\n    }\n    Object.defineProperty(BaseType.prototype, \"create\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot, environment) {\n            typecheckInternal(this, snapshot);\n            return this.instantiate(null, \"\", environment, snapshot).value;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            // istanbul ignore next\n            throw fail(\"unimplemented method\");\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return type === this;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"validate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var node = getStateTreeNodeSafe(value);\n            if (node) {\n                var valueType = getType(value);\n                return this.isAssignableFrom(valueType)\n                    ? typeCheckSuccess()\n                    : typeCheckFailure(context, value);\n                // it is tempting to compare snapshots, but in that case we should always clone on assignments...\n            }\n            return this.isValidSnapshot(value, context);\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"is\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (thing) {\n            return this.validate(thing, [{ path: \"\", type: this }]).length === 0;\n        }\n    });\n    Object.defineProperty(BaseType.prototype, \"Type\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"TypeWithoutSTN\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.TypeWithoutSTN should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.TypeWithoutSTN`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"SnapshotType\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BaseType.prototype, \"CreationType\", {\n        get: function () {\n            // istanbul ignore next\n            throw fail(\"Factory.CreationType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.CreationType`\");\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return BaseType;\n}());\n_a = $type;\nBaseType.prototype.create = action(BaseType.prototype.create);\n/**\n * A complex type produces a MST node (Node in the state tree)\n *\n * @internal\n * @hidden\n */\nvar ComplexType = /** @class */ (function (_super) {\n    __extends(ComplexType, _super);\n    function ComplexType(name) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"identifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        return _this;\n    }\n    Object.defineProperty(ComplexType.prototype, \"create\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot, environment) {\n            if (snapshot === void 0) { snapshot = this.getDefaultSnapshot(); }\n            return _super.prototype.create.call(this, snapshot, environment);\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            node.createObservableInstanceIfNeeded();\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"isMatchingSnapshotId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, snapshot) {\n            return (!current.identifierAttribute ||\n                current.identifier === normalizeIdentifier(snapshot[current.identifierAttribute]));\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"tryToReconcileNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue) {\n            if (current.isDetaching)\n                return false;\n            if (current.snapshot === newValue) {\n                // newValue is the current snapshot of the node, noop\n                return true;\n            }\n            if (isStateTreeNode(newValue) && getStateTreeNode(newValue) === current) {\n                // the current node is the same as the new one\n                return true;\n            }\n            if (current.type === this &&\n                isMutable(newValue) &&\n                !isStateTreeNode(newValue) &&\n                this.isMatchingSnapshotId(current, newValue)) {\n                // the newValue has no node, so can be treated like a snapshot\n                // we can reconcile\n                current.applySnapshot(newValue);\n                return true;\n            }\n            return false;\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var nodeReconciled = this.tryToReconcileNode(current, newValue);\n            if (nodeReconciled) {\n                current.setParent(parent, subpath);\n                return current;\n            }\n            // current node cannot be recycled in any way\n            current.die(); // noop if detaching\n            // attempt to reuse the new one\n            if (isStateTreeNode(newValue) && this.isAssignableFrom(getType(newValue))) {\n                // newValue is a Node as well, move it here..\n                var newNode = getStateTreeNode(newValue);\n                newNode.setParent(parent, subpath);\n                return newNode;\n            }\n            // nothing to do, we have to create a new node\n            return this.instantiate(parent, subpath, undefined, newValue);\n        }\n    });\n    Object.defineProperty(ComplexType.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return null;\n        }\n    });\n    return ComplexType;\n}(BaseType));\nComplexType.prototype.create = action(ComplexType.prototype.create);\n/**\n * @internal\n * @hidden\n */\nvar SimpleType = /** @class */ (function (_super) {\n    __extends(SimpleType, _super);\n    function SimpleType() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(SimpleType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            return snapshot;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            // if we ever find a case where scalar nodes can be accessed without iterating through its parent\n            // uncomment this to make sure the parent chain is created when this is accessed\n            // if (node.parent) {\n            //     node.parent.createObservableInstanceIfNeeded()\n            // }\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            // reconcile only if type and value are still the same, and only if the node is not detaching\n            if (!current.isDetaching && current.type === this && current.storedValue === newValue) {\n                return current;\n            }\n            var res = this.instantiate(parent, subpath, undefined, newValue);\n            current.die(); // noop if detaching\n            return res;\n        }\n    });\n    Object.defineProperty(SimpleType.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return null;\n        }\n    });\n    return SimpleType;\n}(BaseType));\n/**\n * Returns if a given value represents a type.\n *\n * @param value Value to check.\n * @returns `true` if the value is a type.\n */\nfunction isType(value) {\n    return typeof value === \"object\" && value && value.isType === true;\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsType(type, argNumber) {\n    assertArg(type, isType, \"mobx-state-tree type\", argNumber);\n}\n\nvar runningActions = new Map();\n/**\n * Note: Consider migrating to `createActionTrackingMiddleware2`, it is easier to use.\n *\n * Convenience utility to create action based middleware that supports async processes more easily.\n * All hooks are called for both synchronous and asynchronous actions. Except that either `onSuccess` or `onFail` is called\n *\n * The create middleware tracks the process of an action (assuming it passes the `filter`).\n * `onResume` can return any value, which will be passed as second argument to any other hook. This makes it possible to keep state during a process.\n *\n * See the `atomic` middleware for an example\n *\n * @param hooks\n * @returns\n */\nfunction createActionTrackingMiddleware(hooks) {\n    return function actionTrackingMiddleware(call, next, abort) {\n        switch (call.type) {\n            case \"action\": {\n                if (!hooks.filter || hooks.filter(call) === true) {\n                    var context = hooks.onStart(call);\n                    hooks.onResume(call, context);\n                    runningActions.set(call.id, {\n                        call: call,\n                        context: context,\n                        async: false\n                    });\n                    try {\n                        var res = next(call);\n                        hooks.onSuspend(call, context);\n                        if (runningActions.get(call.id).async === false) {\n                            runningActions.delete(call.id);\n                            hooks.onSuccess(call, context, res);\n                        }\n                        return res;\n                    }\n                    catch (e) {\n                        runningActions.delete(call.id);\n                        hooks.onFail(call, context, e);\n                        throw e;\n                    }\n                }\n                else {\n                    return next(call);\n                }\n            }\n            case \"flow_spawn\": {\n                var root = runningActions.get(call.rootId);\n                root.async = true;\n                return next(call);\n            }\n            case \"flow_resume\":\n            case \"flow_resume_error\": {\n                var root = runningActions.get(call.rootId);\n                hooks.onResume(call, root.context);\n                try {\n                    return next(call);\n                }\n                finally {\n                    hooks.onSuspend(call, root.context);\n                }\n            }\n            case \"flow_throw\": {\n                var root = runningActions.get(call.rootId);\n                runningActions.delete(call.rootId);\n                hooks.onFail(call, root.context, call.args[0]);\n                return next(call);\n            }\n            case \"flow_return\": {\n                var root = runningActions.get(call.rootId);\n                runningActions.delete(call.rootId);\n                hooks.onSuccess(call, root.context, call.args[0]);\n                return next(call);\n            }\n        }\n    };\n}\n\nvar RunningAction = /** @class */ (function () {\n    function RunningAction(hooks, call) {\n        Object.defineProperty(this, \"hooks\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: hooks\n        });\n        Object.defineProperty(this, \"call\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: call\n        });\n        Object.defineProperty(this, \"flowsPending\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"running\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        if (hooks) {\n            hooks.onStart(call);\n        }\n    }\n    Object.defineProperty(RunningAction.prototype, \"finish\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (error) {\n            if (this.running) {\n                this.running = false;\n                if (this.hooks) {\n                    this.hooks.onFinish(this.call, error);\n                }\n            }\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"incFlowsPending\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.flowsPending++;\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"decFlowsPending\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.flowsPending--;\n        }\n    });\n    Object.defineProperty(RunningAction.prototype, \"hasFlowsPending\", {\n        get: function () {\n            return this.flowsPending > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return RunningAction;\n}());\n/**\n * Convenience utility to create action based middleware that supports async processes more easily.\n * The flow is like this:\n * - for each action: if filter passes -> `onStart` -> (inner actions recursively) -> `onFinish`\n *\n * Example: if we had an action `a` that called inside an action `b1`, then `b2` the flow would be:\n * - `filter(a)`\n * - `onStart(a)`\n *   - `filter(b1)`\n *   - `onStart(b1)`\n *   - `onFinish(b1)`\n *   - `filter(b2)`\n *   - `onStart(b2)`\n *   - `onFinish(b2)`\n * - `onFinish(a)`\n *\n * The flow is the same no matter if the actions are sync or async.\n *\n * See the `atomic` middleware for an example\n *\n * @param hooks\n * @returns\n */\nfunction createActionTrackingMiddleware2(middlewareHooks) {\n    var runningActions = new Map();\n    return function actionTrackingMiddleware(call, next) {\n        // find parentRunningAction\n        var parentRunningAction = call.parentActionEvent\n            ? runningActions.get(call.parentActionEvent.id)\n            : undefined;\n        if (call.type === \"action\") {\n            var newCall = __assign(__assign({}, call), { \n                // make a shallow copy of the parent action env\n                env: parentRunningAction && parentRunningAction.call.env, parentCall: parentRunningAction && parentRunningAction.call });\n            var passesFilter = !middlewareHooks.filter || middlewareHooks.filter(newCall);\n            var hooks = passesFilter ? middlewareHooks : undefined;\n            var runningAction = new RunningAction(hooks, newCall);\n            runningActions.set(call.id, runningAction);\n            var res = void 0;\n            try {\n                res = next(call);\n            }\n            catch (e) {\n                runningActions.delete(call.id);\n                runningAction.finish(e);\n                throw e;\n            }\n            // sync action finished\n            if (!runningAction.hasFlowsPending) {\n                runningActions.delete(call.id);\n                runningAction.finish();\n            }\n            return res;\n        }\n        else {\n            if (!parentRunningAction) {\n                return next(call);\n            }\n            switch (call.type) {\n                case \"flow_spawn\": {\n                    parentRunningAction.incFlowsPending();\n                    return next(call);\n                }\n                case \"flow_resume\":\n                case \"flow_resume_error\": {\n                    return next(call);\n                }\n                case \"flow_throw\": {\n                    var error = call.args[0];\n                    try {\n                        return next(call);\n                    }\n                    finally {\n                        parentRunningAction.decFlowsPending();\n                        if (!parentRunningAction.hasFlowsPending) {\n                            runningActions.delete(call.parentActionEvent.id);\n                            parentRunningAction.finish(error);\n                        }\n                    }\n                }\n                case \"flow_return\": {\n                    try {\n                        return next(call);\n                    }\n                    finally {\n                        parentRunningAction.decFlowsPending();\n                        if (!parentRunningAction.hasFlowsPending) {\n                            runningActions.delete(call.parentActionEvent.id);\n                            parentRunningAction.finish();\n                        }\n                    }\n                }\n            }\n        }\n    };\n}\n\nfunction serializeArgument(node, actionName, index, arg) {\n    if (arg instanceof Date)\n        return { $MST_DATE: arg.getTime() };\n    if (isPrimitive(arg))\n        return arg;\n    // We should not serialize MST nodes, even if we can, because we don't know if the receiving party can handle a raw snapshot instead of an\n    // MST type instance. So if one wants to serialize a MST node that was pass in, either explitly pass: 1: an id, 2: a (relative) path, 3: a snapshot\n    if (isStateTreeNode(arg))\n        return serializeTheUnserializable(\"[MSTNode: \" + getType(arg).name + \"]\");\n    if (typeof arg === \"function\")\n        return serializeTheUnserializable(\"[function]\");\n    if (typeof arg === \"object\" && !isPlainObject(arg) && !isArray(arg))\n        return serializeTheUnserializable(\"[object \" + ((arg && arg.constructor && arg.constructor.name) || \"Complex Object\") + \"]\");\n    try {\n        // Check if serializable, cycle free etc...\n        // MWE: there must be a better way....\n        JSON.stringify(arg); // or throws\n        return arg;\n    }\n    catch (e) {\n        return serializeTheUnserializable(\"\" + e);\n    }\n}\nfunction deserializeArgument(adm, value) {\n    if (value && typeof value === \"object\" && \"$MST_DATE\" in value)\n        return new Date(value[\"$MST_DATE\"]);\n    return value;\n}\nfunction serializeTheUnserializable(baseType) {\n    return {\n        $MST_UNSERIALIZABLE: true,\n        type: baseType\n    };\n}\n/**\n * Applies an action or a series of actions in a single MobX transaction.\n * Does not return any value\n * Takes an action description as produced by the `onAction` middleware.\n *\n * @param target\n * @param actions\n */\nfunction applyAction(target, actions) {\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    assertArg(actions, function (a) { return typeof a === \"object\"; }, \"object or array\", 2);\n    runInAction(function () {\n        asArray(actions).forEach(function (action) { return baseApplyAction(target, action); });\n    });\n}\nfunction baseApplyAction(target, action) {\n    var resolvedTarget = tryResolve(target, action.path || \"\");\n    if (!resolvedTarget)\n        throw fail(\"Invalid action path: \" + (action.path || \"\"));\n    var node = getStateTreeNode(resolvedTarget);\n    // Reserved functions\n    if (action.name === \"@APPLY_PATCHES\") {\n        return applyPatch.call(null, resolvedTarget, action.args[0]);\n    }\n    if (action.name === \"@APPLY_SNAPSHOT\") {\n        return applySnapshot.call(null, resolvedTarget, action.args[0]);\n    }\n    if (!(typeof resolvedTarget[action.name] === \"function\"))\n        throw fail(\"Action '\" + action.name + \"' does not exist in '\" + node.path + \"'\");\n    return resolvedTarget[action.name].apply(resolvedTarget, action.args ? action.args.map(function (v) { return deserializeArgument(node, v); }) : []);\n}\n/**\n * Small abstraction around `onAction` and `applyAction`, attaches an action listener to a tree and records all the actions emitted.\n * Returns an recorder object with the following signature:\n *\n * Example:\n * ```ts\n * export interface IActionRecorder {\n *      // the recorded actions\n *      actions: ISerializedActionCall[]\n *      // true if currently recording\n *      recording: boolean\n *      // stop recording actions\n *      stop(): void\n *      // resume recording actions\n *      resume(): void\n *      // apply all the recorded actions on the given object\n *      replay(target: IAnyStateTreeNode): void\n * }\n * ```\n *\n * The optional filter function allows to skip recording certain actions.\n *\n * @param subject\n * @returns\n */\nfunction recordActions(subject, filter) {\n    // check all arguments\n    assertIsStateTreeNode(subject, 1);\n    var actions = [];\n    var listener = function (call) {\n        var recordThis = filter ? filter(call, getRunningActionContext()) : true;\n        if (recordThis) {\n            actions.push(call);\n        }\n    };\n    var disposer;\n    var recorder = {\n        actions: actions,\n        get recording() {\n            return !!disposer;\n        },\n        stop: function () {\n            if (disposer) {\n                disposer();\n                disposer = undefined;\n            }\n        },\n        resume: function () {\n            if (disposer)\n                return;\n            disposer = onAction(subject, listener);\n        },\n        replay: function (target) {\n            applyAction(target, actions);\n        }\n    };\n    recorder.resume();\n    return recorder;\n}\n/**\n * Registers a function that will be invoked for each action that is called on the provided model instance, or to any of its children.\n * See [actions](https://github.com/mobxjs/mobx-state-tree#actions) for more details. onAction events are emitted only for the outermost called action in the stack.\n * Action can also be intercepted by middleware using addMiddleware to change the function call before it will be run.\n *\n * Not all action arguments might be serializable. For unserializable arguments, a struct like `{ $MST_UNSERIALIZABLE: true, type: \"someType\" }` will be generated.\n * MST Nodes are considered non-serializable as well (they could be serialized as there snapshot, but it is uncertain whether an replaying party will be able to handle such a non-instantiated snapshot).\n * Rather, when using `onAction` middleware, one should consider in passing arguments which are 1: an id, 2: a (relative) path, or 3: a snapshot. Instead of a real MST node.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.array(Todo)\n * }).actions(self => ({\n *   add(todo) {\n *     self.todos.push(todo);\n *   }\n * }))\n *\n * const s = TodoStore.create({ todos: [] })\n *\n * let disposer = onAction(s, (call) => {\n *   console.log(call);\n * })\n *\n * s.add({ task: \"Grab a coffee\" })\n * // Logs: { name: \"add\", path: \"\", args: [{ task: \"Grab a coffee\" }] }\n * ```\n *\n * @param target\n * @param listener\n * @param attachAfter (default false) fires the listener *after* the action has executed instead of before.\n * @returns\n */\nfunction onAction(target, listener, attachAfter) {\n    if (attachAfter === void 0) { attachAfter = false; }\n    // check all arguments\n    assertIsStateTreeNode(target, 1);\n    if (devMode()) {\n        if (!isRoot(target))\n            warnError(\"Warning: Attaching onAction listeners to non root nodes is dangerous: No events will be emitted for actions initiated higher up in the tree.\");\n        if (!isProtected(target))\n            warnError(\"Warning: Attaching onAction listeners to non protected nodes is dangerous: No events will be emitted for direct modifications without action.\");\n    }\n    return addMiddleware(target, function handler(rawCall, next) {\n        if (rawCall.type === \"action\" && rawCall.id === rawCall.rootId) {\n            var sourceNode_1 = getStateTreeNode(rawCall.context);\n            var info = {\n                name: rawCall.name,\n                path: getRelativePathBetweenNodes(getStateTreeNode(target), sourceNode_1),\n                args: rawCall.args.map(function (arg, index) {\n                    return serializeArgument(sourceNode_1, rawCall.name, index, arg);\n                })\n            };\n            if (attachAfter) {\n                var res = next(rawCall);\n                listener(info);\n                return res;\n            }\n            else {\n                listener(info);\n                return next(rawCall);\n            }\n        }\n        else {\n            return next(rawCall);\n        }\n    });\n}\n\nvar nextActionId = 1;\nvar currentActionContext;\n/**\n * @internal\n * @hidden\n */\nfunction getCurrentActionContext() {\n    return currentActionContext;\n}\n/**\n * @internal\n * @hidden\n */\nfunction getNextActionId() {\n    return nextActionId++;\n}\n// TODO: optimize away entire action context if there is no middleware in tree?\n/**\n * @internal\n * @hidden\n */\nfunction runWithActionContext(context, fn) {\n    var node = getStateTreeNode(context.context);\n    if (context.type === \"action\") {\n        node.assertAlive({\n            actionContext: context\n        });\n    }\n    var baseIsRunningAction = node._isRunningAction;\n    node._isRunningAction = true;\n    var previousContext = currentActionContext;\n    currentActionContext = context;\n    try {\n        return runMiddleWares(node, context, fn);\n    }\n    finally {\n        currentActionContext = previousContext;\n        node._isRunningAction = baseIsRunningAction;\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction getParentActionContext(parentContext) {\n    if (!parentContext)\n        return undefined;\n    if (parentContext.type === \"action\")\n        return parentContext;\n    return parentContext.parentActionEvent;\n}\n/**\n * @internal\n * @hidden\n */\nfunction createActionInvoker(target, name, fn) {\n    var res = function () {\n        var id = getNextActionId();\n        var parentContext = currentActionContext;\n        var parentActionContext = getParentActionContext(parentContext);\n        return runWithActionContext({\n            type: \"action\",\n            name: name,\n            id: id,\n            args: argsToArray(arguments),\n            context: target,\n            tree: getRoot(target),\n            rootId: parentContext ? parentContext.rootId : id,\n            parentId: parentContext ? parentContext.id : 0,\n            allParentIds: parentContext ? __spread(parentContext.allParentIds, [parentContext.id]) : [],\n            parentEvent: parentContext,\n            parentActionEvent: parentActionContext\n        }, fn);\n    };\n    res._isMSTAction = true;\n    res._isFlowAction = fn._isFlowAction;\n    return res;\n}\n/**\n * Middleware can be used to intercept any action is invoked on the subtree where it is attached.\n * If a tree is protected (by default), this means that any mutation of the tree will pass through your middleware.\n *\n * For more details, see the [middleware docs](concepts/middleware.md)\n *\n * @param target Node to apply the middleware to.\n * @param middleware Middleware to apply.\n * @returns A callable function to dispose the middleware.\n */\nfunction addMiddleware(target, handler, includeHooks) {\n    if (includeHooks === void 0) { includeHooks = true; }\n    var node = getStateTreeNode(target);\n    if (devMode()) {\n        if (!node.isProtectionEnabled) {\n            warnError(\"It is recommended to protect the state tree before attaching action middleware, as otherwise it cannot be guaranteed that all changes are passed through middleware. See `protect`\");\n        }\n    }\n    return node.addMiddleWare(handler, includeHooks);\n}\n/**\n * Binds middleware to a specific action.\n *\n * Example:\n * ```ts\n * type.actions(self => {\n *   function takeA____() {\n *       self.toilet.donate()\n *       self.wipe()\n *       self.wipe()\n *       self.toilet.flush()\n *   }\n *   return {\n *     takeA____: decorate(atomic, takeA____)\n *   }\n * })\n * ```\n *\n * @param handler\n * @param fn\n * @param includeHooks\n * @returns The original function\n */\nfunction decorate(handler, fn, includeHooks) {\n    if (includeHooks === void 0) { includeHooks = true; }\n    var middleware = { handler: handler, includeHooks: includeHooks };\n    fn.$mst_middleware = fn.$mst_middleware || [];\n    fn.$mst_middleware.push(middleware);\n    return fn;\n}\nvar CollectedMiddlewares = /** @class */ (function () {\n    function CollectedMiddlewares(node, fn) {\n        Object.defineProperty(this, \"arrayIndex\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"inArrayIndex\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\n        });\n        Object.defineProperty(this, \"middlewares\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        // we just push middleware arrays into an array of arrays to avoid making copies\n        if (fn.$mst_middleware) {\n            this.middlewares.push(fn.$mst_middleware);\n        }\n        var n = node;\n        // Find all middlewares. Optimization: cache this?\n        while (n) {\n            if (n.middlewares)\n                this.middlewares.push(n.middlewares);\n            n = n.parent;\n        }\n    }\n    Object.defineProperty(CollectedMiddlewares.prototype, \"isEmpty\", {\n        get: function () {\n            return this.middlewares.length <= 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(CollectedMiddlewares.prototype, \"getNextMiddleware\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var array = this.middlewares[this.arrayIndex];\n            if (!array)\n                return undefined;\n            var item = array[this.inArrayIndex++];\n            if (!item) {\n                this.arrayIndex++;\n                this.inArrayIndex = 0;\n                return this.getNextMiddleware();\n            }\n            return item;\n        }\n    });\n    return CollectedMiddlewares;\n}());\nfunction runMiddleWares(node, baseCall, originalFn) {\n    var middlewares = new CollectedMiddlewares(node, originalFn);\n    // Short circuit\n    if (middlewares.isEmpty)\n        return action(originalFn).apply(null, baseCall.args);\n    var result = null;\n    function runNextMiddleware(call) {\n        var middleware = middlewares.getNextMiddleware();\n        var handler = middleware && middleware.handler;\n        if (!handler) {\n            return action(originalFn).apply(null, call.args);\n        }\n        // skip hooks if asked to\n        if (!middleware.includeHooks && Hook[call.name]) {\n            return runNextMiddleware(call);\n        }\n        var nextInvoked = false;\n        function next(call2, callback) {\n            nextInvoked = true;\n            // the result can contain\n            // - the non manipulated return value from an action\n            // - the non manipulated abort value\n            // - one of the above but manipulated through the callback function\n            result = runNextMiddleware(call2);\n            if (callback) {\n                result = callback(result);\n            }\n        }\n        var abortInvoked = false;\n        function abort(value) {\n            abortInvoked = true;\n            // overwrite the result\n            // can be manipulated through middlewares earlier in the queue using the callback fn\n            result = value;\n        }\n        handler(call, next, abort);\n        if (devMode()) {\n            if (!nextInvoked && !abortInvoked) {\n                var node2 = getStateTreeNode(call.tree);\n                throw fail(\"Neither the next() nor the abort() callback within the middleware \" + handler.name + \" for the action: \\\"\" + call.name + \"\\\" on the node: \" + node2.type.name + \" was invoked.\");\n            }\n            else if (nextInvoked && abortInvoked) {\n                var node2 = getStateTreeNode(call.tree);\n                throw fail(\"The next() and abort() callback within the middleware \" + handler.name + \" for the action: \\\"\" + call.name + \"\\\" on the node: \" + node2.type.name + \" were invoked.\");\n            }\n        }\n        return result;\n    }\n    return runNextMiddleware(baseCall);\n}\n\n/**\n * Returns the currently executing MST action context, or undefined if none.\n */\nfunction getRunningActionContext() {\n    var current = getCurrentActionContext();\n    while (current && current.type !== \"action\") {\n        current = current.parentActionEvent;\n    }\n    return current;\n}\nfunction _isActionContextThisOrChildOf(actionContext, sameOrParent, includeSame) {\n    var parentId = typeof sameOrParent === \"number\" ? sameOrParent : sameOrParent.id;\n    var current = includeSame\n        ? actionContext\n        : actionContext.parentActionEvent;\n    while (current) {\n        if (current.id === parentId) {\n            return true;\n        }\n        current = current.parentActionEvent;\n    }\n    return false;\n}\n/**\n * Returns if the given action context is a parent of this action context.\n */\nfunction isActionContextChildOf(actionContext, parent) {\n    return _isActionContextThisOrChildOf(actionContext, parent, false);\n}\n/**\n * Returns if the given action context is this or a parent of this action context.\n */\nfunction isActionContextThisOrChildOf(actionContext, parentOrThis) {\n    return _isActionContextThisOrChildOf(actionContext, parentOrThis, true);\n}\n\nfunction safeStringify(value) {\n    try {\n        return JSON.stringify(value);\n    }\n    catch (e) {\n        // istanbul ignore next\n        return \"<Unserializable: \" + e + \">\";\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction prettyPrintValue(value) {\n    return typeof value === \"function\"\n        ? \"<function\" + (value.name ? \" \" + value.name : \"\") + \">\"\n        : isStateTreeNode(value)\n            ? \"<\" + value + \">\"\n            : \"`\" + safeStringify(value) + \"`\";\n}\nfunction shortenPrintValue(valueInString) {\n    return valueInString.length < 280\n        ? valueInString\n        : valueInString.substring(0, 272) + \"......\" + valueInString.substring(valueInString.length - 8);\n}\nfunction toErrorString(error) {\n    var value = error.value;\n    var type = error.context[error.context.length - 1].type;\n    var fullPath = error.context\n        .map(function (_a) {\n        var path = _a.path;\n        return path;\n    })\n        .filter(function (path) { return path.length > 0; })\n        .join(\"/\");\n    var pathPrefix = fullPath.length > 0 ? \"at path \\\"/\" + fullPath + \"\\\" \" : \"\";\n    var currentTypename = isStateTreeNode(value)\n        ? \"value of type \" + getStateTreeNode(value).type.name + \":\"\n        : isPrimitive(value)\n            ? \"value\"\n            : \"snapshot\";\n    var isSnapshotCompatible = type && isStateTreeNode(value) && type.is(getStateTreeNode(value).snapshot);\n    return (\"\" + pathPrefix + currentTypename + \" \" + prettyPrintValue(value) + \" is not assignable \" + (type ? \"to type: `\" + type.name + \"`\" : \"\") +\n        (error.message ? \" (\" + error.message + \")\" : \"\") +\n        (type\n            ? isPrimitiveType(type) || isPrimitive(value)\n                ? \".\"\n                : \", expected an instance of `\" + type.name + \"` or a snapshot like `\" + type.describe() + \"` instead.\" +\n                    (isSnapshotCompatible\n                        ? \" (Note that a snapshot of the provided value is compatible with the targeted type)\"\n                        : \"\")\n            : \".\"));\n}\n/**\n * @internal\n * @hidden\n */\nfunction getContextForPath(context, path, type) {\n    return context.concat([{ path: path, type: type }]);\n}\n/**\n * @internal\n * @hidden\n */\nfunction typeCheckSuccess() {\n    return EMPTY_ARRAY;\n}\n/**\n * @internal\n * @hidden\n */\nfunction typeCheckFailure(context, value, message) {\n    return [{ context: context, value: value, message: message }];\n}\n/**\n * @internal\n * @hidden\n */\nfunction flattenTypeErrors(errors) {\n    return errors.reduce(function (a, i) { return a.concat(i); }, []);\n}\n// TODO; doublecheck: typecheck should only needed to be invoked from: type.create and array / map / value.property will change\n/**\n * @internal\n * @hidden\n */\nfunction typecheckInternal(type, value) {\n    // runs typeChecking if it is in dev-mode or through a process.env.ENABLE_TYPE_CHECK flag\n    if (isTypeCheckingEnabled()) {\n        typecheck(type, value);\n    }\n}\n/**\n * Run's the typechecker for the given type on the given value, which can be a snapshot or an instance.\n * Throws if the given value is not according the provided type specification.\n * Use this if you need typechecks even in a production build (by default all automatic runtime type checks will be skipped in production builds)\n *\n * @param type Type to check against.\n * @param value Value to be checked, either a snapshot or an instance.\n */\nfunction typecheck(type, value) {\n    var errors = type.validate(value, [{ path: \"\", type: type }]);\n    if (errors.length > 0) {\n        throw fail(validationErrorsToString(type, value, errors));\n    }\n}\nfunction validationErrorsToString(type, value, errors) {\n    if (errors.length === 0) {\n        return undefined;\n    }\n    return (\"Error while converting \" + shortenPrintValue(prettyPrintValue(value)) + \" to `\" + type.name + \"`:\\n\\n    \" + errors.map(toErrorString).join(\"\\n    \"));\n}\n\nvar identifierCacheId = 0;\n/**\n * @internal\n * @hidden\n */\nvar IdentifierCache = /** @class */ (function () {\n    function IdentifierCache() {\n        Object.defineProperty(this, \"cacheId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: identifierCacheId++\n        });\n        // n.b. in cache all identifiers are normalized to strings\n        Object.defineProperty(this, \"cache\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.map()\n        });\n        // last time the cache (array) for a given time changed\n        // n.b. it is not really the time, but just an integer that gets increased after each modification to the array\n        Object.defineProperty(this, \"lastCacheModificationPerId\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.map()\n        });\n    }\n    Object.defineProperty(IdentifierCache.prototype, \"updateLastCacheModificationPerId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (identifier) {\n            var lcm = this.lastCacheModificationPerId.get(identifier);\n            // we start at 1 since 0 means no update since cache creation\n            this.lastCacheModificationPerId.set(identifier, lcm === undefined ? 1 : lcm + 1);\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"getLastCacheModificationPerId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (identifier) {\n            var modificationId = this.lastCacheModificationPerId.get(identifier) || 0;\n            return this.cacheId + \"-\" + modificationId;\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"addNodeToCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, lastCacheUpdate) {\n            if (lastCacheUpdate === void 0) { lastCacheUpdate = true; }\n            if (node.identifierAttribute) {\n                var identifier = node.identifier;\n                if (!this.cache.has(identifier)) {\n                    this.cache.set(identifier, observable.array([], mobxShallow));\n                }\n                var set = this.cache.get(identifier);\n                if (set.indexOf(node) !== -1)\n                    throw fail(\"Already registered\");\n                set.push(node);\n                if (lastCacheUpdate) {\n                    this.updateLastCacheModificationPerId(identifier);\n                }\n            }\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"mergeCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            values(node.identifierCache.cache).forEach(function (nodes) {\n                return nodes.forEach(function (child) {\n                    _this.addNodeToCache(child);\n                });\n            });\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"notifyDied\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            if (node.identifierAttribute) {\n                var id = node.identifier;\n                var set = this.cache.get(id);\n                if (set) {\n                    set.remove(node);\n                    // remove empty sets from cache\n                    if (!set.length) {\n                        this.cache.delete(id);\n                    }\n                    this.updateLastCacheModificationPerId(node.identifier);\n                }\n            }\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"splitCache\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (splitNode) {\n            var _this = this;\n            var newCache = new IdentifierCache();\n            // The slash is added here so we only match children of the splitNode. In version 5.1.8 and\n            // earlier there was no trailing slash, so non children that started with the same path string\n            // were being matched incorrectly.\n            var basePath = splitNode.path + \"/\";\n            entries(this.cache).forEach(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], nodes = _b[1];\n                var modified = false;\n                for (var i = nodes.length - 1; i >= 0; i--) {\n                    var node = nodes[i];\n                    if (node === splitNode || node.path.indexOf(basePath) === 0) {\n                        newCache.addNodeToCache(node, false); // no need to update lastUpdated since it is a whole new cache\n                        nodes.splice(i, 1);\n                        // remove empty sets from cache\n                        if (!nodes.length) {\n                            _this.cache.delete(id);\n                        }\n                        modified = true;\n                    }\n                }\n                if (modified) {\n                    _this.updateLastCacheModificationPerId(id);\n                }\n            });\n            return newCache;\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type, identifier) {\n            var set = this.cache.get(identifier);\n            if (!set)\n                return false;\n            return set.some(function (candidate) { return type.isAssignableFrom(candidate.type); });\n        }\n    });\n    Object.defineProperty(IdentifierCache.prototype, \"resolve\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type, identifier) {\n            var set = this.cache.get(identifier);\n            if (!set)\n                return null;\n            var matches = set.filter(function (candidate) { return type.isAssignableFrom(candidate.type); });\n            switch (matches.length) {\n                case 0:\n                    return null;\n                case 1:\n                    return matches[0];\n                default:\n                    throw fail(\"Cannot resolve a reference to type '\" + type.name + \"' with id: '\" + identifier + \"' unambigously, there are multiple candidates: \" + matches\n                        .map(function (n) { return n.path; })\n                        .join(\", \"));\n            }\n        }\n    });\n    return IdentifierCache;\n}());\n\n/**\n * @internal\n * @hidden\n */\nfunction createObjectNode(type, parent, subpath, environment, initialValue) {\n    var existingNode = getStateTreeNodeSafe(initialValue);\n    if (existingNode) {\n        if (existingNode.parent) {\n            // istanbul ignore next\n            throw fail(\"Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '\" + (parent ? parent.path : \"\") + \"/\" + subpath + \"', but it lives already at '\" + existingNode.path + \"'\");\n        }\n        if (parent) {\n            existingNode.setParent(parent, subpath);\n        }\n        // else it already has no parent since it is a pre-requisite\n        return existingNode;\n    }\n    // not a node, a snapshot\n    return new ObjectNode(type, parent, subpath, environment, initialValue);\n}\n/**\n * @internal\n * @hidden\n */\nfunction createScalarNode(type, parent, subpath, environment, initialValue) {\n    return new ScalarNode(type, parent, subpath, environment, initialValue);\n}\n/**\n * @internal\n * @hidden\n */\nfunction isNode(value) {\n    return value instanceof ScalarNode || value instanceof ObjectNode;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar NodeLifeCycle;\n(function (NodeLifeCycle) {\n    NodeLifeCycle[NodeLifeCycle[\"INITIALIZING\"] = 0] = \"INITIALIZING\";\n    NodeLifeCycle[NodeLifeCycle[\"CREATED\"] = 1] = \"CREATED\";\n    NodeLifeCycle[NodeLifeCycle[\"FINALIZED\"] = 2] = \"FINALIZED\";\n    NodeLifeCycle[NodeLifeCycle[\"DETACHING\"] = 3] = \"DETACHING\";\n    NodeLifeCycle[NodeLifeCycle[\"DEAD\"] = 4] = \"DEAD\"; // no coming back from this one\n})(NodeLifeCycle || (NodeLifeCycle = {}));\n/**\n * Returns true if the given value is a node in a state tree.\n * More precisely, that is, if the value is an instance of a\n * `types.model`, `types.array` or `types.map`.\n *\n * @param value\n * @returns true if the value is a state tree node.\n */\nfunction isStateTreeNode(value) {\n    return !!(value && value.$treenode);\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsStateTreeNode(value, argNumber) {\n    assertArg(value, isStateTreeNode, \"mobx-state-tree node\", argNumber);\n}\n/**\n * @internal\n * @hidden\n */\nfunction getStateTreeNode(value) {\n    if (!isStateTreeNode(value)) {\n        // istanbul ignore next\n        throw fail(\"Value \" + value + \" is no MST Node\");\n    }\n    return value.$treenode;\n}\n/**\n * @internal\n * @hidden\n */\nfunction getStateTreeNodeSafe(value) {\n    return (value && value.$treenode) || null;\n}\n/**\n * @internal\n * @hidden\n */\nfunction toJSON() {\n    return getStateTreeNode(this).snapshot;\n}\nvar doubleDot = function (_) { return \"..\"; };\n/**\n * @internal\n * @hidden\n */\nfunction getRelativePathBetweenNodes(base, target) {\n    // PRE condition target is (a child of) base!\n    if (base.root !== target.root) {\n        throw fail(\"Cannot calculate relative path: objects '\" + base + \"' and '\" + target + \"' are not part of the same object tree\");\n    }\n    var baseParts = splitJsonPath(base.path);\n    var targetParts = splitJsonPath(target.path);\n    var common = 0;\n    for (; common < baseParts.length; common++) {\n        if (baseParts[common] !== targetParts[common])\n            break;\n    }\n    // TODO: assert that no targetParts paths are \"..\", \".\" or \"\"!\n    return baseParts.slice(common).map(doubleDot).join(\"/\") + joinJsonPath(targetParts.slice(common));\n}\n/**\n * @internal\n * @hidden\n */\nfunction resolveNodeByPath(base, path, failIfResolveFails) {\n    if (failIfResolveFails === void 0) { failIfResolveFails = true; }\n    return resolveNodeByPathParts(base, splitJsonPath(path), failIfResolveFails);\n}\n/**\n * @internal\n * @hidden\n */\nfunction resolveNodeByPathParts(base, pathParts, failIfResolveFails) {\n    if (failIfResolveFails === void 0) { failIfResolveFails = true; }\n    var current = base;\n    try {\n        for (var i = 0; i < pathParts.length; i++) {\n            var part = pathParts[i];\n            if (part === \"..\") {\n                current = current.parent;\n                if (current)\n                    continue; // not everything has a parent\n            }\n            else if (part === \".\") {\n                continue;\n            }\n            else if (current) {\n                if (current instanceof ScalarNode) {\n                    // check if the value of a scalar resolves to a state tree node (e.g. references)\n                    // then we can continue resolving...\n                    var value = current.value;\n                    if (isStateTreeNode(value)) {\n                        current = getStateTreeNode(value);\n                        // fall through\n                    }\n                }\n                if (current instanceof ObjectNode) {\n                    var subType = current.getChildType(part);\n                    if (subType) {\n                        current = current.getChildNode(part);\n                        if (current)\n                            continue;\n                    }\n                }\n            }\n            throw fail(\"Could not resolve '\" + part + \"' in path '\" + (joinJsonPath(pathParts.slice(0, i)) || \"/\") + \"' while resolving '\" + joinJsonPath(pathParts) + \"'\");\n        }\n    }\n    catch (e) {\n        if (!failIfResolveFails) {\n            return undefined;\n        }\n        throw e;\n    }\n    return current;\n}\n/**\n * @internal\n * @hidden\n */\nfunction convertChildNodesToArray(childNodes) {\n    if (!childNodes)\n        return EMPTY_ARRAY;\n    var keys = Object.keys(childNodes);\n    if (!keys.length)\n        return EMPTY_ARRAY;\n    var result = new Array(keys.length);\n    keys.forEach(function (key, index) {\n        result[index] = childNodes[key];\n    });\n    return result;\n}\n\n// based on: https://github.com/mobxjs/mobx-utils/blob/master/src/async-action.ts\n/*\n    All contents of this file are deprecated.\n\n    The term `process` has been replaced with `flow` to avoid conflicts with the\n    global `process` object.\n\n    Refer to `flow.ts` for any further changes to this implementation.\n*/\nvar DEPRECATION_MESSAGE = \"See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. \" +\n    \"Note that the middleware event types starting with `process` now start with `flow`.\";\n/**\n * @hidden\n *\n * @deprecated has been renamed to `flow()`.\n * See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information.\n * Note that the middleware event types starting with `process` now start with `flow`.\n *\n * @returns {Promise}\n */\nfunction process$1(asyncAction) {\n    deprecated(\"process\", \"`process()` has been renamed to `flow()`. \" + DEPRECATION_MESSAGE);\n    return flow(asyncAction);\n}\n\nvar plainObjectString = Object.toString();\n/**\n * @internal\n * @hidden\n */\nvar EMPTY_ARRAY = Object.freeze([]);\n/**\n * @internal\n * @hidden\n */\nvar EMPTY_OBJECT = Object.freeze({});\n/**\n * @internal\n * @hidden\n */\nvar mobxShallow = _getGlobalState().useProxies\n    ? { deep: false }\n    : { deep: false, proxy: false };\nObject.freeze(mobxShallow);\n/**\n * @internal\n * @hidden\n */\nfunction fail(message) {\n    if (message === void 0) { message = \"Illegal state\"; }\n    return new Error(\"[mobx-state-tree] \" + message);\n}\n/**\n * @internal\n * @hidden\n */\nfunction identity(_) {\n    return _;\n}\n/**\n * @internal\n * @hidden\n */\nvar isInteger = Number.isInteger;\n/**\n * @internal\n * @hidden\n */\nfunction isFloat(val) {\n    return Number(val) === val && val % 1 !== 0;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isFinite(val) {\n    return Number.isFinite(val);\n}\n/**\n * @internal\n * @hidden\n */\nfunction isArray(val) {\n    return Array.isArray(val) || isObservableArray(val);\n}\n/**\n * @internal\n * @hidden\n */\nfunction asArray(val) {\n    if (!val)\n        return EMPTY_ARRAY;\n    if (isArray(val))\n        return val;\n    return [val];\n}\n/**\n * @internal\n * @hidden\n */\nfunction extend(a) {\n    var b = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        b[_i - 1] = arguments[_i];\n    }\n    for (var i = 0; i < b.length; i++) {\n        var current = b[i];\n        for (var key in current)\n            a[key] = current[key];\n    }\n    return a;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isPlainObject(value) {\n    var _a;\n    if (value === null || typeof value !== \"object\")\n        return false;\n    var proto = Object.getPrototypeOf(value);\n    if (proto == null)\n        return true;\n    return ((_a = proto.constructor) === null || _a === void 0 ? void 0 : _a.toString()) === plainObjectString;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isMutable(value) {\n    return (value !== null &&\n        typeof value === \"object\" &&\n        !(value instanceof Date) &&\n        !(value instanceof RegExp));\n}\n/**\n * @internal\n * @hidden\n */\nfunction isPrimitive(value, includeDate) {\n    if (includeDate === void 0) { includeDate = true; }\n    return (value === null ||\n        value === undefined ||\n        typeof value === \"string\" ||\n        typeof value === \"number\" ||\n        typeof value === \"boolean\" ||\n        (includeDate && value instanceof Date));\n}\n/**\n * @internal\n * @hidden\n * Freeze a value and return it (if not in production)\n */\nfunction freeze(value) {\n    if (!devMode())\n        return value;\n    return isPrimitive(value) || isObservableArray(value) ? value : Object.freeze(value);\n}\n/**\n * @internal\n * @hidden\n * Recursively freeze a value (if not in production)\n */\nfunction deepFreeze(value) {\n    if (!devMode())\n        return value;\n    freeze(value);\n    if (isPlainObject(value)) {\n        Object.keys(value).forEach(function (propKey) {\n            if (!isPrimitive(value[propKey]) && !Object.isFrozen(value[propKey])) {\n                deepFreeze(value[propKey]);\n            }\n        });\n    }\n    return value;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isSerializable(value) {\n    return typeof value !== \"function\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction defineProperty(object, key, descriptor) {\n    isObservableObject(object)\n        ? defineProperty$1(object, key, descriptor)\n        : Object.defineProperty(object, key, descriptor);\n}\n/**\n * @internal\n * @hidden\n */\nfunction addHiddenFinalProp(object, propName, value) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: false,\n        configurable: true,\n        value: value\n    });\n}\n/**\n * @internal\n * @hidden\n */\nfunction addHiddenWritableProp(object, propName, value) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: true,\n        configurable: true,\n        value: value\n    });\n}\n/**\n * @internal\n * @hidden\n */\nvar EventHandler = /** @class */ (function () {\n    function EventHandler() {\n        Object.defineProperty(this, \"handlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n    }\n    Object.defineProperty(EventHandler.prototype, \"hasSubscribers\", {\n        get: function () {\n            return this.handlers.length > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(EventHandler.prototype, \"register\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn, atTheBeginning) {\n            var _this = this;\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (atTheBeginning) {\n                this.handlers.unshift(fn);\n            }\n            else {\n                this.handlers.push(fn);\n            }\n            return function () {\n                _this.unregister(fn);\n            };\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            return this.handlers.indexOf(fn) >= 0;\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"unregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var index = this.handlers.indexOf(fn);\n            if (index >= 0) {\n                this.handlers.splice(index, 1);\n            }\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"clear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.handlers.length = 0;\n        }\n    });\n    Object.defineProperty(EventHandler.prototype, \"emit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // make a copy just in case it changes\n            var handlers = this.handlers.slice();\n            handlers.forEach(function (f) { return f.apply(void 0, __spread(args)); });\n        }\n    });\n    return EventHandler;\n}());\n/**\n * @internal\n * @hidden\n */\nvar EventHandlers = /** @class */ (function () {\n    function EventHandlers() {\n        Object.defineProperty(this, \"eventHandlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n    }\n    Object.defineProperty(EventHandlers.prototype, \"hasSubscribers\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            return !!handler && handler.hasSubscribers;\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"register\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn, atTheBeginning) {\n            if (atTheBeginning === void 0) { atTheBeginning = false; }\n            if (!this.eventHandlers) {\n                this.eventHandlers = {};\n            }\n            var handler = this.eventHandlers[event];\n            if (!handler) {\n                handler = this.eventHandlers[event] = new EventHandler();\n            }\n            return handler.register(fn, atTheBeginning);\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            return !!handler && handler.has(fn);\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"unregister\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event, fn) {\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            if (handler) {\n                handler.unregister(fn);\n            }\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"clear\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            if (this.eventHandlers) {\n                delete this.eventHandlers[event];\n            }\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"clearAll\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            this.eventHandlers = undefined;\n        }\n    });\n    Object.defineProperty(EventHandlers.prototype, \"emit\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (event) {\n            var _a;\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            var handler = this.eventHandlers && this.eventHandlers[event];\n            if (handler) {\n                (_a = handler).emit.apply(_a, __spread(args));\n            }\n        }\n    });\n    return EventHandlers;\n}());\n/**\n * @internal\n * @hidden\n */\nfunction argsToArray(args) {\n    var res = new Array(args.length);\n    for (var i = 0; i < args.length; i++)\n        res[i] = args[i];\n    return res;\n}\n/**\n * @internal\n * @hidden\n */\nfunction stringStartsWith(str, beginning) {\n    return str.indexOf(beginning) === 0;\n}\n/**\n * @internal\n * @hidden\n */\nvar deprecated = function (id, message) {\n    // skip if running production\n    if (!devMode())\n        return;\n    // warn if hasn't been warned before\n    if (deprecated.ids && !deprecated.ids.hasOwnProperty(id)) {\n        warnError(\"Deprecation warning: \" + message);\n    }\n    // mark as warned to avoid duplicate warn message\n    if (deprecated.ids)\n        deprecated.ids[id] = true;\n};\ndeprecated.ids = {};\n/**\n * @internal\n * @hidden\n */\nfunction warnError(msg) {\n    console.warn(new Error(\"[mobx-state-tree] \" + msg));\n}\n/**\n * @internal\n * @hidden\n */\nfunction isTypeCheckingEnabled() {\n    return (devMode() ||\n        (typeof process !== \"undefined\" && process.env && process.env.ENABLE_TYPE_CHECK === \"true\"));\n}\n/**\n * @internal\n * @hidden\n */\nfunction devMode() {\n    return process.env.NODE_ENV !== \"production\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertArg(value, fn, typeName, argNumber) {\n    if (devMode()) {\n        if (!fn(value)) {\n            // istanbul ignore next\n            throw fail(\"expected \" + typeName + \" as argument \" + asArray(argNumber).join(\" or \") + \", got \" + value + \" instead\");\n        }\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsFunction(value, argNumber) {\n    assertArg(value, function (fn) { return typeof fn === \"function\"; }, \"function\", argNumber);\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsNumber(value, argNumber, min, max) {\n    assertArg(value, function (n) { return typeof n === \"number\"; }, \"number\", argNumber);\n    if (min !== undefined) {\n        assertArg(value, function (n) { return n >= min; }, \"number greater than \" + min, argNumber);\n    }\n    if (max !== undefined) {\n        assertArg(value, function (n) { return n <= max; }, \"number lesser than \" + max, argNumber);\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsString(value, argNumber, canBeEmpty) {\n    if (canBeEmpty === void 0) { canBeEmpty = true; }\n    assertArg(value, function (s) { return typeof s === \"string\"; }, \"string\", argNumber);\n    if (!canBeEmpty) {\n        assertArg(value, function (s) { return s !== \"\"; }, \"not empty string\", argNumber);\n    }\n}\n/**\n * @internal\n * @hidden\n */\nfunction setImmediateWithFallback(fn) {\n    if (typeof queueMicrotask === \"function\") {\n        queueMicrotask(fn);\n    }\n    else if (typeof setImmediate === \"function\") {\n        setImmediate(fn);\n    }\n    else {\n        setTimeout(fn, 1);\n    }\n}\n\n/**\n * See [asynchronous actions](concepts/async-actions.md).\n *\n * @returns The flow as a promise.\n */\nfunction flow(generator) {\n    return createFlowSpawner(generator.name, generator);\n}\n/**\n * @deprecated Not needed since TS3.6.\n * Used for TypeScript to make flows that return a promise return the actual promise result.\n *\n * @param val\n * @returns\n */\nfunction castFlowReturn(val) {\n    return val;\n}\n/**\n * @experimental\n * experimental api - might change on minor/patch releases\n *\n * Convert a promise-returning function to a generator-returning one.\n * This is intended to allow for usage of `yield*` in async actions to\n * retain the promise return type.\n *\n * Example:\n * ```ts\n * function getDataAsync(input: string): Promise<number> { ... }\n * const getDataGen = toGeneratorFunction(getDataAsync);\n *\n * const someModel.actions(self => ({\n *   someAction: flow(function*() {\n *     // value is typed as number\n *     const value = yield* getDataGen(\"input value\");\n *     ...\n *   })\n * }))\n * ```\n */\nfunction toGeneratorFunction(p) {\n    return function () {\n        var _i;\n        var args = [];\n        for (_i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, p.apply(void 0, __spread(args))];\n                case 1: return [2 /*return*/, (_a.sent())];\n            }\n        });\n    };\n}\n/**\n * @experimental\n * experimental api - might change on minor/patch releases\n *\n * Convert a promise to a generator yielding that promise\n * This is intended to allow for usage of `yield*` in async actions to\n * retain the promise return type.\n *\n * Example:\n * ```ts\n * function getDataAsync(input: string): Promise<number> { ... }\n *\n * const someModel.actions(self => ({\n *   someAction: flow(function*() {\n *     // value is typed as number\n *     const value = yield* toGenerator(getDataAsync(\"input value\"));\n *     ...\n *   })\n * }))\n * ```\n */\nfunction toGenerator(p) {\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0: return [4 /*yield*/, p];\n            case 1: return [2 /*return*/, (_a.sent())];\n        }\n    });\n}\n/**\n * @internal\n * @hidden\n */\nfunction createFlowSpawner(name, generator) {\n    var spawner = function flowSpawner() {\n        // Implementation based on https://github.com/tj/co/blob/master/index.js\n        var runId = getNextActionId();\n        var parentContext = getCurrentActionContext();\n        if (!parentContext) {\n            throw fail(\"a mst flow must always have a parent context\");\n        }\n        var parentActionContext = getParentActionContext(parentContext);\n        if (!parentActionContext) {\n            throw fail(\"a mst flow must always have a parent action context\");\n        }\n        var contextBase = {\n            name: name,\n            id: runId,\n            tree: parentContext.tree,\n            context: parentContext.context,\n            parentId: parentContext.id,\n            allParentIds: __spread(parentContext.allParentIds, [parentContext.id]),\n            rootId: parentContext.rootId,\n            parentEvent: parentContext,\n            parentActionEvent: parentActionContext\n        };\n        var args = arguments;\n        function wrap(fn, type, arg) {\n            fn.$mst_middleware = spawner.$mst_middleware; // pick up any middleware attached to the flow\n            return runWithActionContext(__assign(__assign({}, contextBase), { type: type, args: [arg] }), fn);\n        }\n        return new Promise(function (resolve, reject) {\n            var gen;\n            var init = function asyncActionInit() {\n                gen = generator.apply(null, arguments);\n                onFulfilled(undefined); // kick off the flow\n            };\n            init.$mst_middleware = spawner.$mst_middleware;\n            runWithActionContext(__assign(__assign({}, contextBase), { type: \"flow_spawn\", args: argsToArray(args) }), init);\n            function onFulfilled(res) {\n                var ret;\n                try {\n                    // prettier-ignore\n                    var cancelError = wrap(function (r) { ret = gen.next(r); }, \"flow_resume\", res);\n                    if (cancelError instanceof Error) {\n                        ret = gen.throw(cancelError);\n                    }\n                }\n                catch (e) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { reject(e); }, \"flow_throw\", e);\n                    });\n                    return;\n                }\n                next(ret);\n                return;\n            }\n            function onRejected(err) {\n                var ret;\n                try {\n                    // prettier-ignore\n                    wrap(function (r) { ret = gen.throw(r); }, \"flow_resume_error\", err); // or yieldError?\n                }\n                catch (e) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { reject(e); }, \"flow_throw\", e);\n                    });\n                    return;\n                }\n                next(ret);\n            }\n            function next(ret) {\n                if (ret.done) {\n                    // prettier-ignore\n                    setImmediateWithFallback(function () {\n                        wrap(function (r) { resolve(r); }, \"flow_return\", ret.value);\n                    });\n                    return;\n                }\n                // TODO: support more type of values? See https://github.com/tj/co/blob/249bbdc72da24ae44076afd716349d2089b31c4c/index.js#L100\n                if (!ret.value || typeof ret.value.then !== \"function\") {\n                    // istanbul ignore next\n                    throw fail(\"Only promises can be yielded to `async`, got: \" + ret);\n                }\n                return ret.value.then(onFulfilled, onRejected);\n            }\n        });\n    };\n    spawner._isFlowAction = true;\n    return spawner;\n}\n\n/**\n * @internal\n * @hidden\n */\nfunction splitPatch(patch) {\n    if (!(\"oldValue\" in patch))\n        throw fail(\"Patches without `oldValue` field cannot be inversed\");\n    return [stripPatch(patch), invertPatch(patch)];\n}\n/**\n * @internal\n * @hidden\n */\nfunction stripPatch(patch) {\n    // strips `oldvalue` information from the patch, so that it becomes a patch conform the json-patch spec\n    // this removes the ability to undo the patch\n    switch (patch.op) {\n        case \"add\":\n            return { op: \"add\", path: patch.path, value: patch.value };\n        case \"remove\":\n            return { op: \"remove\", path: patch.path };\n        case \"replace\":\n            return { op: \"replace\", path: patch.path, value: patch.value };\n    }\n}\nfunction invertPatch(patch) {\n    switch (patch.op) {\n        case \"add\":\n            return {\n                op: \"remove\",\n                path: patch.path\n            };\n        case \"remove\":\n            return {\n                op: \"add\",\n                path: patch.path,\n                value: patch.oldValue\n            };\n        case \"replace\":\n            return {\n                op: \"replace\",\n                path: patch.path,\n                value: patch.oldValue\n            };\n    }\n}\n/**\n * Simple simple check to check it is a number.\n */\nfunction isNumber(x) {\n    return typeof x === \"number\";\n}\n/**\n * Escape slashes and backslashes.\n *\n * http://tools.ietf.org/html/rfc6901\n */\nfunction escapeJsonPath(path) {\n    if (isNumber(path) === true) {\n        return \"\" + path;\n    }\n    if (path.indexOf(\"/\") === -1 && path.indexOf(\"~\") === -1)\n        return path;\n    return path.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\n/**\n * Unescape slashes and backslashes.\n */\nfunction unescapeJsonPath(path) {\n    return path.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\n/**\n * Generates a json-path compliant json path from path parts.\n *\n * @param path\n * @returns\n */\nfunction joinJsonPath(path) {\n    // `/` refers to property with an empty name, while `` refers to root itself!\n    if (path.length === 0)\n        return \"\";\n    var getPathStr = function (p) { return p.map(escapeJsonPath).join(\"/\"); };\n    if (path[0] === \".\" || path[0] === \"..\") {\n        // relative\n        return getPathStr(path);\n    }\n    else {\n        // absolute\n        return \"/\" + getPathStr(path);\n    }\n}\n/**\n * Splits and decodes a json path into several parts.\n *\n * @param path\n * @returns\n */\nfunction splitJsonPath(path) {\n    // `/` refers to property with an empty name, while `` refers to root itself!\n    var parts = path.split(\"/\").map(unescapeJsonPath);\n    var valid = path === \"\" ||\n        path === \".\" ||\n        path === \"..\" ||\n        stringStartsWith(path, \"/\") ||\n        stringStartsWith(path, \"./\") ||\n        stringStartsWith(path, \"../\");\n    if (!valid) {\n        throw fail(\"a json path must be either rooted, empty or relative, but got '\" + path + \"'\");\n    }\n    // '/a/b/c' -> [\"a\", \"b\", \"c\"]\n    // '../../b/c' -> [\"..\", \"..\", \"b\", \"c\"]\n    // '' -> []\n    // '/' -> ['']\n    // './a' -> [\".\", \"a\"]\n    // /./a' -> [\".\", \"a\"] equivalent to './a'\n    if (parts[0] === \"\") {\n        parts.shift();\n    }\n    return parts;\n}\n\n/** @hidden */\nvar $preProcessorFailed = Symbol(\"$preProcessorFailed\");\nvar SnapshotProcessor = /** @class */ (function (_super) {\n    __extends(SnapshotProcessor, _super);\n    function SnapshotProcessor(_subtype, _processors, name) {\n        var _this = _super.call(this, name || _subtype.name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_processors\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _processors\n        });\n        return _this;\n    }\n    Object.defineProperty(SnapshotProcessor.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.SnapshotProcessor;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"snapshotProcessor(\" + this._subtype.describe() + \")\";\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"preProcessSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn) {\n            if (this._processors.preProcessor) {\n                return this._processors.preProcessor.call(null, sn);\n            }\n            return sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"preProcessSnapshotSafe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn) {\n            try {\n                return this.preProcessSnapshot(sn);\n            }\n            catch (e) {\n                return $preProcessorFailed;\n            }\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"postProcessSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (sn, node) {\n            if (this._processors.postProcessor) {\n                return this._processors.postProcessor.call(null, sn, node.storedValue);\n            }\n            return sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"_fixNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            // the node has to use these methods rather than the original type ones\n            proxyNodeTypeMethods(node.type, this, \"create\");\n            if (node instanceof ObjectNode) {\n                node.hasSnapshotPostProcessor = !!this._processors.postProcessor;\n            }\n            var oldGetSnapshot = node.getSnapshot;\n            node.getSnapshot = function () { return _this.postProcessSnapshot(oldGetSnapshot.call(node), node); };\n            if (!isUnionType(this._subtype)) {\n                node.getReconciliationType = function () {\n                    return _this;\n                };\n            }\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var processedInitialValue = isStateTreeNode(initialValue)\n                ? initialValue\n                : this.preProcessSnapshot(initialValue);\n            var node = this._subtype.instantiate(parent, subpath, environment, processedInitialValue);\n            this._fixNode(node);\n            return node;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var node = this._subtype.reconcile(current, isStateTreeNode(newValue) ? newValue : this.preProcessSnapshot(newValue), parent, subpath);\n            if (node !== current) {\n                this._fixNode(node);\n            }\n            return node;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            if (applyPostProcess === void 0) { applyPostProcess = true; }\n            var sn = this._subtype.getSnapshot(node);\n            return applyPostProcess ? this.postProcessSnapshot(sn, node) : sn;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var processedSn = this.preProcessSnapshotSafe(value);\n            if (processedSn === $preProcessorFailed) {\n                return typeCheckFailure(context, value, \"Failed to preprocess value\");\n            }\n            return this._subtype.validate(processedSn, context);\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"is\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (thing) {\n            var value = isType(thing)\n                ? this._subtype\n                : isStateTreeNode(thing)\n                    ? getSnapshot(thing, false)\n                    : this.preProcessSnapshotSafe(thing);\n            if (value === $preProcessorFailed) {\n                return false;\n            }\n            return this._subtype.validate(value, [{ path: \"\", type: this._subtype }]).length === 0;\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(SnapshotProcessor.prototype, \"isMatchingSnapshotId\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, snapshot) {\n            if (!(this._subtype instanceof ComplexType)) {\n                return false;\n            }\n            var processedSn = this.preProcessSnapshot(snapshot);\n            return this._subtype.isMatchingSnapshotId(current, processedSn);\n        }\n    });\n    return SnapshotProcessor;\n}(BaseType));\nfunction proxyNodeTypeMethods(nodeType, snapshotProcessorType) {\n    var e_1, _a;\n    var methods = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        methods[_i - 2] = arguments[_i];\n    }\n    try {\n        for (var methods_1 = __values(methods), methods_1_1 = methods_1.next(); !methods_1_1.done; methods_1_1 = methods_1.next()) {\n            var method = methods_1_1.value;\n            nodeType[method] = snapshotProcessorType[method].bind(snapshotProcessorType);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (methods_1_1 && !methods_1_1.done && (_a = methods_1.return)) _a.call(methods_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\n/**\n * `types.snapshotProcessor` - Runs a pre/post snapshot processor before/after serializing a given type.\n *\n * Example:\n * ```ts\n * const Todo1 = types.model({ text: types.string })\n * // in the backend the text type must be null when empty\n * interface BackendTodo {\n *     text: string | null\n * }\n *\n * const Todo2 = types.snapshotProcessor(Todo1, {\n *     // from snapshot to instance\n *     preProcessor(snapshot: BackendTodo) {\n *         return {\n *             text: sn.text || \"\";\n *         }\n *     },\n *\n *     // from instance to snapshot\n *     postProcessor(snapshot, node): BackendTodo {\n *         return {\n *             text: !sn.text ? null : sn.text\n *         }\n *     }\n * })\n * ```\n *\n * @param type Type to run the processors over.\n * @param processors Processors to run.\n * @param name Type name, or undefined to inherit the inner type one.\n * @returns\n */\nfunction snapshotProcessor(type, processors, name) {\n    assertIsType(type, 1);\n    if (devMode()) {\n        if (processors.postProcessor && typeof processors.postProcessor !== \"function\") {\n            // istanbul ignore next\n            throw fail(\"postSnapshotProcessor must be a function\");\n        }\n        if (processors.preProcessor && typeof processors.preProcessor !== \"function\") {\n            // istanbul ignore next\n            throw fail(\"preSnapshotProcessor must be a function\");\n        }\n    }\n    return new SnapshotProcessor(type, processors, name);\n}\n\nvar needsIdentifierError = \"Map.put can only be used to store complex values that have an identifier type attribute\";\nfunction tryCollectModelTypes(type, modelTypes) {\n    var e_1, _a;\n    var subtypes = type.getSubTypes();\n    if (subtypes === cannotDetermineSubtype) {\n        return false;\n    }\n    if (subtypes) {\n        var subtypesArray = asArray(subtypes);\n        try {\n            for (var subtypesArray_1 = __values(subtypesArray), subtypesArray_1_1 = subtypesArray_1.next(); !subtypesArray_1_1.done; subtypesArray_1_1 = subtypesArray_1.next()) {\n                var subtype = subtypesArray_1_1.value;\n                if (!tryCollectModelTypes(subtype, modelTypes))\n                    return false;\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (subtypesArray_1_1 && !subtypesArray_1_1.done && (_a = subtypesArray_1.return)) _a.call(subtypesArray_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    if (type instanceof ModelType) {\n        modelTypes.push(type);\n    }\n    return true;\n}\n/**\n * @internal\n * @hidden\n */\nvar MapIdentifierMode;\n(function (MapIdentifierMode) {\n    MapIdentifierMode[MapIdentifierMode[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    MapIdentifierMode[MapIdentifierMode[\"YES\"] = 1] = \"YES\";\n    MapIdentifierMode[MapIdentifierMode[\"NO\"] = 2] = \"NO\";\n})(MapIdentifierMode || (MapIdentifierMode = {}));\nvar MSTMap = /** @class */ (function (_super) {\n    __extends(MSTMap, _super);\n    function MSTMap(initialData, name) {\n        return _super.call(this, initialData, observable.ref.enhancer, name) || this;\n    }\n    Object.defineProperty(MSTMap.prototype, \"get\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            // maybe this is over-enthousiastic? normalize numeric keys to strings\n            return _super.prototype.get.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"has\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            return _super.prototype.has.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"delete\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key) {\n            return _super.prototype.delete.call(this, \"\" + key);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"set\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (key, value) {\n            return _super.prototype.set.call(this, \"\" + key, value);\n        }\n    });\n    Object.defineProperty(MSTMap.prototype, \"put\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value) {\n            if (!value)\n                throw fail(\"Map.put cannot be used to set empty values\");\n            if (isStateTreeNode(value)) {\n                var node = getStateTreeNode(value);\n                if (devMode()) {\n                    if (!node.identifierAttribute) {\n                        throw fail(needsIdentifierError);\n                    }\n                }\n                if (node.identifier === null) {\n                    throw fail(needsIdentifierError);\n                }\n                this.set(node.identifier, value);\n                return value;\n            }\n            else if (!isMutable(value)) {\n                throw fail(\"Map.put can only be used to store complex values\");\n            }\n            else {\n                var mapNode = getStateTreeNode(this);\n                var mapType = mapNode.type;\n                if (mapType.identifierMode !== MapIdentifierMode.YES) {\n                    throw fail(needsIdentifierError);\n                }\n                var idAttr = mapType.mapIdentifierAttribute;\n                var id = value[idAttr];\n                if (!isValidIdentifier(id)) {\n                    // try again but this time after creating a node for the value\n                    // since it might be an optional identifier\n                    var newNode = this.put(mapType.getChildType().create(value, mapNode.environment));\n                    return this.put(getSnapshot(newNode));\n                }\n                var key = normalizeIdentifier(id);\n                this.set(key, value);\n                return this.get(key);\n            }\n        }\n    });\n    return MSTMap;\n}(ObservableMap));\n/**\n * @internal\n * @hidden\n */\nvar MapType = /** @class */ (function (_super) {\n    __extends(MapType, _super);\n    function MapType(name, _subType, hookInitializers) {\n        if (hookInitializers === void 0) { hookInitializers = []; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subType\n        });\n        Object.defineProperty(_this, \"identifierMode\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: MapIdentifierMode.UNKNOWN\n        });\n        Object.defineProperty(_this, \"mapIdentifierAttribute\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: undefined\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Map\n        });\n        Object.defineProperty(_this, \"hookInitializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        _this._determineIdentifierMode();\n        _this.hookInitializers = hookInitializers;\n        return _this;\n    }\n    Object.defineProperty(MapType.prototype, \"hooks\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hooks) {\n            var hookInitializers = this.hookInitializers.length > 0 ? this.hookInitializers.concat(hooks) : [hooks];\n            return new MapType(this.name, this._subType, hookInitializers);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            this._determineIdentifierMode();\n            return createObjectNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"_determineIdentifierMode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            if (this.identifierMode !== MapIdentifierMode.UNKNOWN) {\n                return;\n            }\n            var modelTypes = [];\n            if (tryCollectModelTypes(this._subType, modelTypes)) {\n                var identifierAttribute = modelTypes.reduce(function (current, type) {\n                    if (!type.identifierAttribute)\n                        return current;\n                    if (current && current !== type.identifierAttribute) {\n                        throw fail(\"The objects in a map should all have the same identifier attribute, expected '\" + current + \"', but child of type '\" + type.name + \"' declared attribute '\" + type.identifierAttribute + \"' as identifier\");\n                    }\n                    return type.identifierAttribute;\n                }, undefined);\n                if (identifierAttribute) {\n                    this.identifierMode = MapIdentifierMode.YES;\n                    this.mapIdentifierAttribute = identifierAttribute;\n                }\n                else {\n                    this.identifierMode = MapIdentifierMode.NO;\n                }\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, initialSnapshot) {\n            if (initialSnapshot === void 0) { initialSnapshot = {}; }\n            var subType = objNode.type._subType;\n            var result = {};\n            Object.keys(initialSnapshot).forEach(function (name) {\n                result[name] = subType.instantiate(objNode, name, undefined, initialSnapshot[name]);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            return new MSTMap(childNodes, this.name);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            _interceptReads(instance, node.unbox);\n            var type = node.type;\n            type.hookInitializers.forEach(function (initializer) {\n                var hooks = initializer(instance);\n                Object.keys(hooks).forEach(function (name) {\n                    var hook = hooks[name];\n                    var actionInvoker = createActionInvoker(instance, name, hook);\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(instance, name, actionInvoker);\n                });\n            });\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            // return (node.storedValue as ObservableMap<any>).values()\n            return values(node.storedValue);\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var childNode = node.storedValue.get(\"\" + key);\n            if (!childNode)\n                throw fail(\"Not a child \" + key);\n            return childNode;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            var key = change.name;\n            node.assertWritable({ subpath: key });\n            var mapType = node.type;\n            var subType = mapType._subType;\n            switch (change.type) {\n                case \"update\":\n                    {\n                        var newValue = change.newValue;\n                        var oldValue = change.object.get(key);\n                        if (newValue === oldValue)\n                            return null;\n                        typecheckInternal(subType, newValue);\n                        change.newValue = subType.reconcile(node.getChildNode(key), change.newValue, node, key);\n                        mapType.processIdentifier(key, change.newValue);\n                    }\n                    break;\n                case \"add\":\n                    {\n                        typecheckInternal(subType, change.newValue);\n                        change.newValue = subType.instantiate(node, key, undefined, change.newValue);\n                        mapType.processIdentifier(key, change.newValue);\n                    }\n                    break;\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"processIdentifier\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (expected, node) {\n            if (this.identifierMode === MapIdentifierMode.YES && node instanceof ObjectNode) {\n                var identifier = node.identifier;\n                if (identifier !== expected)\n                    throw fail(\"A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '\" + identifier + \"', but expected: '\" + expected + \"'\");\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var res = {};\n            node.getChildren().forEach(function (childNode) {\n                res[childNode.subpath] = childNode.snapshot;\n            });\n            return res;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = {};\n            Object.keys(childNodes).forEach(function (key) {\n                processed[key] = childNodes[key].getSnapshot();\n            });\n            return processed;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            switch (change.type) {\n                case \"update\":\n                    return void node.emitPatch({\n                        op: \"replace\",\n                        path: escapeJsonPath(change.name),\n                        value: change.newValue.snapshot,\n                        oldValue: change.oldValue ? change.oldValue.snapshot : undefined\n                    }, node);\n                case \"add\":\n                    return void node.emitPatch({\n                        op: \"add\",\n                        path: escapeJsonPath(change.name),\n                        value: change.newValue.snapshot,\n                        oldValue: undefined\n                    }, node);\n                case \"delete\":\n                    // a node got deleted, get the old snapshot and make the node die\n                    var oldSnapshot = change.oldValue.snapshot;\n                    change.oldValue.die();\n                    // emit the patch\n                    return void node.emitPatch({\n                        op: \"remove\",\n                        path: escapeJsonPath(change.name),\n                        oldValue: oldSnapshot\n                    }, node);\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            var target = node.storedValue;\n            switch (patch.op) {\n                case \"add\":\n                case \"replace\":\n                    target.set(subpath, patch.value);\n                    break;\n                case \"remove\":\n                    target.delete(subpath);\n                    break;\n            }\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var target = node.storedValue;\n            var currentKeys = {};\n            Array.from(target.keys()).forEach(function (key) {\n                currentKeys[key] = false;\n            });\n            if (snapshot) {\n                // Don't use target.replace, as it will throw away all existing items first\n                for (var key in snapshot) {\n                    target.set(key, snapshot[key]);\n                    currentKeys[\"\" + key] = true;\n                }\n            }\n            Object.keys(currentKeys).forEach(function (key) {\n                if (currentKeys[key] === false)\n                    target.delete(key);\n            });\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subType;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            if (!isPlainObject(value)) {\n                return typeCheckFailure(context, value, \"Value is not a plain object\");\n            }\n            return flattenTypeErrors(Object.keys(value).map(function (path) {\n                return _this._subType.validate(value[path], getContextForPath(context, path, _this._subType));\n            }));\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_OBJECT;\n        }\n    });\n    Object.defineProperty(MapType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue.delete(subpath);\n        }\n    });\n    return MapType;\n}(ComplexType));\nMapType.prototype.applySnapshot = action(MapType.prototype.applySnapshot);\n/**\n * `types.map` - Creates a key based collection type who's children are all of a uniform declared type.\n * If the type stored in a map has an identifier, it is mandatory to store the child under that identifier in the map.\n *\n * This type will always produce [observable maps](https://mobx.js.org/api.html#observablemap)\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   id: types.identifier,\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.map(Todo)\n * })\n *\n * const s = TodoStore.create({ todos: {} })\n * unprotect(s)\n * s.todos.set(17, { task: \"Grab coffee\", id: 17 })\n * s.todos.put({ task: \"Grab cookie\", id: 18 }) // put will infer key from the identifier\n * console.log(s.todos.get(17).task) // prints: \"Grab coffee\"\n * ```\n *\n * @param subtype\n * @returns\n */\nfunction map(subtype) {\n    return new MapType(\"Map<string, \" + subtype.name + \">\", subtype);\n}\n/**\n * Returns if a given value represents a map type.\n *\n * @param type\n * @returns `true` if it is a map type.\n */\nfunction isMapType(type) {\n    return isType(type) && (type.flags & TypeFlags.Map) > 0;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar ArrayType = /** @class */ (function (_super) {\n    __extends(ArrayType, _super);\n    function ArrayType(name, _subType, hookInitializers) {\n        if (hookInitializers === void 0) { hookInitializers = []; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Array\n        });\n        Object.defineProperty(_this, \"hookInitializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        _this.hookInitializers = hookInitializers;\n        return _this;\n    }\n    Object.defineProperty(ArrayType.prototype, \"hooks\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (hooks) {\n            var hookInitializers = this.hookInitializers.length > 0 ? this.hookInitializers.concat(hooks) : [hooks];\n            return new ArrayType(this.name, this._subType, hookInitializers);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createObjectNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, snapshot) {\n            if (snapshot === void 0) { snapshot = []; }\n            var subType = objNode.type._subType;\n            var result = {};\n            snapshot.forEach(function (item, index) {\n                var subpath = \"\" + index;\n                result[subpath] = subType.instantiate(objNode, subpath, undefined, item);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var options = __assign(__assign({}, mobxShallow), { name: this.name });\n            return observable.array(convertChildNodesToArray(childNodes), options);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            _getAdministration(instance).dehancer = node.unbox;\n            var type = node.type;\n            type.hookInitializers.forEach(function (initializer) {\n                var hooks = initializer(instance);\n                Object.keys(hooks).forEach(function (name) {\n                    var hook = hooks[name];\n                    var actionInvoker = createActionInvoker(instance, name, hook);\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(instance, name, actionInvoker);\n                });\n            });\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue.slice();\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var index = Number(key);\n            if (index < node.storedValue.length)\n                return node.storedValue[index];\n            throw fail(\"Not a child: \" + key);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            node.assertWritable({ subpath: \"\" + change.index });\n            var subType = node.type._subType;\n            var childNodes = node.getChildren();\n            switch (change.type) {\n                case \"update\":\n                    {\n                        if (change.newValue === change.object[change.index])\n                            return null;\n                        var updatedNodes = reconcileArrayChildren(node, subType, [childNodes[change.index]], [change.newValue], [change.index]);\n                        if (!updatedNodes) {\n                            return null;\n                        }\n                        change.newValue = updatedNodes[0];\n                    }\n                    break;\n                case \"splice\":\n                    {\n                        var index_1 = change.index, removedCount = change.removedCount, added = change.added;\n                        var addedNodes = reconcileArrayChildren(node, subType, childNodes.slice(index_1, index_1 + removedCount), added, added.map(function (_, i) { return index_1 + i; }));\n                        if (!addedNodes) {\n                            return null;\n                        }\n                        change.added = addedNodes;\n                        // update paths of remaining items\n                        for (var i = index_1 + removedCount; i < childNodes.length; i++) {\n                            childNodes[i].setParent(node, \"\" + (i + added.length - removedCount));\n                        }\n                    }\n                    break;\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.getChildren().map(function (childNode) { return childNode.snapshot; });\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = [];\n            Object.keys(childNodes).forEach(function (key) {\n                processed.push(childNodes[key].getSnapshot());\n            });\n            return processed;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (change) {\n            var node = getStateTreeNode(change.object);\n            switch (change.type) {\n                case \"update\":\n                    return void node.emitPatch({\n                        op: \"replace\",\n                        path: \"\" + change.index,\n                        value: change.newValue.snapshot,\n                        oldValue: change.oldValue ? change.oldValue.snapshot : undefined\n                    }, node);\n                case \"splice\":\n                    for (var i = change.removedCount - 1; i >= 0; i--)\n                        node.emitPatch({\n                            op: \"remove\",\n                            path: \"\" + (change.index + i),\n                            oldValue: change.removed[i].snapshot\n                        }, node);\n                    for (var i = 0; i < change.addedCount; i++)\n                        node.emitPatch({\n                            op: \"add\",\n                            path: \"\" + (change.index + i),\n                            value: node.getChildNode(\"\" + (change.index + i)).snapshot,\n                            oldValue: undefined\n                        }, node);\n                    return;\n            }\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            var target = node.storedValue;\n            var index = subpath === \"-\" ? target.length : Number(subpath);\n            switch (patch.op) {\n                case \"replace\":\n                    target[index] = patch.value;\n                    break;\n                case \"add\":\n                    target.splice(index, 0, patch.value);\n                    break;\n                case \"remove\":\n                    target.splice(index, 1);\n                    break;\n            }\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var target = node.storedValue;\n            target.replace(snapshot);\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subType;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            if (!isArray(value)) {\n                return typeCheckFailure(context, value, \"Value is not an array\");\n            }\n            return flattenTypeErrors(value.map(function (item, index) {\n                return _this._subType.validate(item, getContextForPath(context, \"\" + index, _this._subType));\n            }));\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_ARRAY;\n        }\n    });\n    Object.defineProperty(ArrayType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue.splice(Number(subpath), 1);\n        }\n    });\n    return ArrayType;\n}(ComplexType));\nArrayType.prototype.applySnapshot = action(ArrayType.prototype.applySnapshot);\n/**\n * `types.array` - Creates an index based collection type who's children are all of a uniform declared type.\n *\n * This type will always produce [observable arrays](https://mobx.js.org/api.html#observablearray)\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   task: types.string\n * })\n *\n * const TodoStore = types.model({\n *   todos: types.array(Todo)\n * })\n *\n * const s = TodoStore.create({ todos: [] })\n * unprotect(s) // needed to allow modifying outside of an action\n * s.todos.push({ task: \"Grab coffee\" })\n * console.log(s.todos[0]) // prints: \"Grab coffee\"\n * ```\n *\n * @param subtype\n * @returns\n */\nfunction array(subtype) {\n    assertIsType(subtype, 1);\n    return new ArrayType(subtype.name + \"[]\", subtype);\n}\nfunction reconcileArrayChildren(parent, childType, oldNodes, newValues, newPaths) {\n    var nothingChanged = true;\n    for (var i = 0;; i++) {\n        var hasNewNode = i <= newValues.length - 1;\n        var oldNode = oldNodes[i];\n        var newValue = hasNewNode ? newValues[i] : undefined;\n        var newPath = \"\" + newPaths[i];\n        // for some reason, instead of newValue we got a node, fallback to the storedValue\n        // TODO: https://github.com/mobxjs/mobx-state-tree/issues/340#issuecomment-325581681\n        if (isNode(newValue))\n            newValue = newValue.storedValue;\n        if (!oldNode && !hasNewNode) {\n            // both are empty, end\n            break;\n        }\n        else if (!hasNewNode) {\n            // new one does not exists\n            nothingChanged = false;\n            oldNodes.splice(i, 1);\n            if (oldNode instanceof ObjectNode) {\n                // since it is going to be returned by pop/splice/shift better create it before killing it\n                // so it doesn't end up in an undead state\n                oldNode.createObservableInstanceIfNeeded();\n            }\n            oldNode.die();\n            i--;\n        }\n        else if (!oldNode) {\n            // there is no old node, create it\n            // check if already belongs to the same parent. if so, avoid pushing item in. only swapping can occur.\n            if (isStateTreeNode(newValue) && getStateTreeNode(newValue).parent === parent) {\n                // this node is owned by this parent, but not in the reconcilable set, so it must be double\n                throw fail(\"Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '\" + parent.path + \"/\" + newPath + \"', but it lives already at '\" + getStateTreeNode(newValue).path + \"'\");\n            }\n            nothingChanged = false;\n            var newNode = valueAsNode(childType, parent, newPath, newValue);\n            oldNodes.splice(i, 0, newNode);\n        }\n        else if (areSame(oldNode, newValue)) {\n            // both are the same, reconcile\n            oldNodes[i] = valueAsNode(childType, parent, newPath, newValue, oldNode);\n        }\n        else {\n            // nothing to do, try to reorder\n            var oldMatch = undefined;\n            // find a possible candidate to reuse\n            for (var j = i; j < oldNodes.length; j++) {\n                if (areSame(oldNodes[j], newValue)) {\n                    oldMatch = oldNodes.splice(j, 1)[0];\n                    break;\n                }\n            }\n            nothingChanged = false;\n            var newNode = valueAsNode(childType, parent, newPath, newValue, oldMatch);\n            oldNodes.splice(i, 0, newNode);\n        }\n    }\n    return nothingChanged ? null : oldNodes;\n}\n/**\n * Convert a value to a node at given parent and subpath. Attempts to reuse old node if possible and given.\n */\nfunction valueAsNode(childType, parent, subpath, newValue, oldNode) {\n    // ensure the value is valid-ish\n    typecheckInternal(childType, newValue);\n    function getNewNode() {\n        // the new value has a MST node\n        if (isStateTreeNode(newValue)) {\n            var childNode = getStateTreeNode(newValue);\n            childNode.assertAlive(EMPTY_OBJECT);\n            // the node lives here\n            if (childNode.parent !== null && childNode.parent === parent) {\n                childNode.setParent(parent, subpath);\n                return childNode;\n            }\n        }\n        // there is old node and new one is a value/snapshot\n        if (oldNode) {\n            return childType.reconcile(oldNode, newValue, parent, subpath);\n        }\n        // nothing to do, create from scratch\n        return childType.instantiate(parent, subpath, undefined, newValue);\n    }\n    var newNode = getNewNode();\n    if (oldNode && oldNode !== newNode) {\n        if (oldNode instanceof ObjectNode) {\n            // since it is going to be returned by pop/splice/shift better create it before killing it\n            // so it doesn't end up in an undead state\n            oldNode.createObservableInstanceIfNeeded();\n        }\n        oldNode.die();\n    }\n    return newNode;\n}\n/**\n * Check if a node holds a value.\n */\nfunction areSame(oldNode, newValue) {\n    // never consider dead old nodes for reconciliation\n    if (!oldNode.isAlive) {\n        return false;\n    }\n    // the new value has the same node\n    if (isStateTreeNode(newValue)) {\n        var newNode = getStateTreeNode(newValue);\n        return newNode.isAlive && newNode === oldNode;\n    }\n    // the provided value is the snapshot of the old node\n    if (oldNode.snapshot === newValue) {\n        return true;\n    }\n    // Non object nodes don't get reconciled\n    if (!(oldNode instanceof ObjectNode)) {\n        return false;\n    }\n    var oldNodeType = oldNode.getReconciliationType();\n    // new value is a snapshot with the correct identifier\n    return (oldNode.identifier !== null &&\n        oldNode.identifierAttribute &&\n        isPlainObject(newValue) &&\n        oldNodeType.is(newValue) &&\n        oldNodeType.isMatchingSnapshotId(oldNode, newValue));\n}\n/**\n * Returns if a given value represents an array type.\n *\n * @param type\n * @returns `true` if the type is an array type.\n */\nfunction isArrayType(type) {\n    return isType(type) && (type.flags & TypeFlags.Array) > 0;\n}\n\nvar PRE_PROCESS_SNAPSHOT = \"preProcessSnapshot\";\nvar POST_PROCESS_SNAPSHOT = \"postProcessSnapshot\";\nfunction objectTypeToString() {\n    return getStateTreeNode(this).toString();\n}\nvar defaultObjectOptions = {\n    name: \"AnonymousModel\",\n    properties: {},\n    initializers: EMPTY_ARRAY\n};\nfunction toPropertiesObject(declaredProps) {\n    var keysList = Object.keys(declaredProps);\n    var alreadySeenKeys = new Set();\n    keysList.forEach(function (key) {\n        if (alreadySeenKeys.has(key)) {\n            throw fail(key + \" is declared twice in the model. Model should not contain the same keys\");\n        }\n        alreadySeenKeys.add(key);\n    });\n    // loop through properties and ensures that all items are types\n    return keysList.reduce(function (props, key) {\n        // warn if user intended a HOOK\n        if (key in Hook) {\n            throw fail(\"Hook '\" + key + \"' was defined as property. Hooks should be defined as part of the actions\");\n        }\n        // the user intended to use a view\n        var descriptor = Object.getOwnPropertyDescriptor(declaredProps, key);\n        if (\"get\" in descriptor) {\n            throw fail(\"Getters are not supported as properties. Please use views instead\");\n        }\n        // undefined and null are not valid\n        var value = descriptor.value;\n        if (value === null || value === undefined) {\n            throw fail(\"The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?\");\n        }\n        // its a primitive, convert to its type\n        else if (isPrimitive(value)) {\n            props[key] = optional(getPrimitiveFactoryFromValue(value), value);\n        }\n        // map defaults to empty object automatically for models\n        else if (value instanceof MapType) {\n            props[key] = optional(value, {});\n        }\n        else if (value instanceof ArrayType) {\n            props[key] = optional(value, []);\n        }\n        // its already a type\n        else if (isType(value)) ;\n        // its a function, maybe the user wanted a view?\n        else if (devMode() && typeof value === \"function\") {\n            throw fail(\"Invalid type definition for property '\" + key + \"', it looks like you passed a function. Did you forget to invoke it, or did you intend to declare a view / action?\");\n        }\n        // no other complex values\n        else if (devMode() && typeof value === \"object\") {\n            throw fail(\"Invalid type definition for property '\" + key + \"', it looks like you passed an object. Try passing another model type or a types.frozen.\");\n        }\n        else {\n            throw fail(\"Invalid type definition for property '\" + key + \"', cannot infer a type from a value like '\" + value + \"' (\" + typeof value + \")\");\n        }\n        return props;\n    }, __assign({}, declaredProps));\n}\n/**\n * @internal\n * @hidden\n */\nvar ModelType = /** @class */ (function (_super) {\n    __extends(ModelType, _super);\n    function ModelType(opts) {\n        var _this = _super.call(this, opts.name || defaultObjectOptions.name) || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Object\n        });\n        /*\n         * The original object definition\n         */\n        Object.defineProperty(_this, \"initializers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"properties\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"preProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"postProcessor\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"propertyNames\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"named\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (name) {\n                return _this.cloneAndEnhance({ name: name });\n            }\n        });\n        Object.defineProperty(_this, \"props\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (properties) {\n                return _this.cloneAndEnhance({ properties: properties });\n            }\n        });\n        Object.defineProperty(_this, \"preProcessSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (preProcessor) {\n                var currentPreprocessor = _this.preProcessor;\n                if (!currentPreprocessor)\n                    return _this.cloneAndEnhance({ preProcessor: preProcessor });\n                else\n                    return _this.cloneAndEnhance({\n                        preProcessor: function (snapshot) { return currentPreprocessor(preProcessor(snapshot)); }\n                    });\n            }\n        });\n        Object.defineProperty(_this, \"postProcessSnapshot\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: function (postProcessor) {\n                var currentPostprocessor = _this.postProcessor;\n                if (!currentPostprocessor)\n                    return _this.cloneAndEnhance({ postProcessor: postProcessor });\n                else\n                    return _this.cloneAndEnhance({\n                        postProcessor: function (snapshot) { return postProcessor(currentPostprocessor(snapshot)); }\n                    });\n            }\n        });\n        Object.assign(_this, defaultObjectOptions, opts);\n        // ensures that any default value gets converted to its related type\n        _this.properties = toPropertiesObject(_this.properties);\n        freeze(_this.properties); // make sure nobody messes with it\n        _this.propertyNames = Object.keys(_this.properties);\n        _this.identifierAttribute = _this._getIdentifierAttribute();\n        return _this;\n    }\n    Object.defineProperty(ModelType.prototype, \"_getIdentifierAttribute\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var identifierAttribute = undefined;\n            this.forAllProps(function (propName, propType) {\n                if (propType.flags & TypeFlags.Identifier) {\n                    if (identifierAttribute)\n                        throw fail(\"Cannot define property '\" + propName + \"' as object identifier, property '\" + identifierAttribute + \"' is already defined as identifier property\");\n                    identifierAttribute = propName;\n                }\n            });\n            return identifierAttribute;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"cloneAndEnhance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (opts) {\n            return new ModelType({\n                name: opts.name || this.name,\n                properties: Object.assign({}, this.properties, opts.properties),\n                initializers: this.initializers.concat(opts.initializers || []),\n                preProcessor: opts.preProcessor || this.preProcessor,\n                postProcessor: opts.postProcessor || this.postProcessor\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"actions\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var actionInitializer = function (self) {\n                _this.instantiateActions(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [actionInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateActions\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, actions) {\n            // check if return is correct\n            if (!isPlainObject(actions))\n                throw fail(\"actions initializer should return a plain object containing actions\");\n            // bind actions to the object created\n            Object.keys(actions).forEach(function (name) {\n                // warn if preprocessor was given\n                if (name === PRE_PROCESS_SNAPSHOT)\n                    throw fail(\"Cannot define action '\" + PRE_PROCESS_SNAPSHOT + \"', it should be defined using 'type.preProcessSnapshot(fn)' instead\");\n                // warn if postprocessor was given\n                if (name === POST_PROCESS_SNAPSHOT)\n                    throw fail(\"Cannot define action '\" + POST_PROCESS_SNAPSHOT + \"', it should be defined using 'type.postProcessSnapshot(fn)' instead\");\n                var action2 = actions[name];\n                // apply hook composition\n                var baseAction = self[name];\n                if (name in Hook && baseAction) {\n                    var specializedAction_1 = action2;\n                    action2 = function () {\n                        baseAction.apply(null, arguments);\n                        specializedAction_1.apply(null, arguments);\n                    };\n                }\n                // the goal of this is to make sure actions using \"this\" can call themselves,\n                // while still allowing the middlewares to register them\n                var middlewares = action2.$mst_middleware; // make sure middlewares are not lost\n                var boundAction = action2.bind(actions);\n                boundAction._isFlowAction = action2._isFlowAction || false;\n                boundAction.$mst_middleware = middlewares;\n                var actionInvoker = createActionInvoker(self, name, boundAction);\n                actions[name] = actionInvoker;\n                (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(self, name, actionInvoker);\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"volatile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            if (typeof fn !== \"function\") {\n                throw fail(\"You passed an \" + typeof fn + \" to volatile state as an argument, when function is expected\");\n            }\n            var stateInitializer = function (self) {\n                _this.instantiateVolatileState(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [stateInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateVolatileState\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, state) {\n            // check views return\n            if (!isPlainObject(state))\n                throw fail(\"volatile state initializer should return a plain object containing state\");\n            set(self, state);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"extend\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var initializer = function (self) {\n                var _a = fn(self), actions = _a.actions, views = _a.views, state = _a.state, rest = __rest(_a, [\"actions\", \"views\", \"state\"]);\n                for (var key in rest)\n                    throw fail(\"The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '\" + key + \"'\");\n                if (state)\n                    _this.instantiateVolatileState(self, state);\n                if (views)\n                    _this.instantiateViews(self, views);\n                if (actions)\n                    _this.instantiateActions(self, actions);\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [initializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"views\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            var viewInitializer = function (self) {\n                _this.instantiateViews(self, fn(self));\n                return self;\n            };\n            return this.cloneAndEnhance({ initializers: [viewInitializer] });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiateViews\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (self, views) {\n            // check views return\n            if (!isPlainObject(views))\n                throw fail(\"views initializer should return a plain object containing views\");\n            Object.getOwnPropertyNames(views).forEach(function (key) {\n                var _a;\n                // is this a computed property?\n                var descriptor = Object.getOwnPropertyDescriptor(views, key);\n                if (\"get\" in descriptor) {\n                    defineProperty$1(self, key, descriptor);\n                    makeObservable(self, (_a = {}, _a[key] = computed, _a));\n                }\n                else if (typeof descriptor.value === \"function\") {\n                    (!devMode() ? addHiddenFinalProp : addHiddenWritableProp)(self, key, descriptor.value);\n                }\n                else {\n                    throw fail(\"A view member should either be a function or getter based property\");\n                }\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var value = isStateTreeNode(initialValue)\n                ? initialValue\n                : this.applySnapshotPreProcessor(initialValue);\n            return createObjectNode(this, parent, subpath, environment, value);\n            // Optimization: record all prop- view- and action names after first construction, and generate an optimal base class\n            // that pre-reserves all these fields for fast object-member lookups\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"initializeChildNodes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (objNode, initialSnapshot) {\n            if (initialSnapshot === void 0) { initialSnapshot = {}; }\n            var type = objNode.type;\n            var result = {};\n            type.forAllProps(function (name, childType) {\n                result[name] = childType.instantiate(objNode, name, undefined, initialSnapshot[name]);\n            });\n            return result;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var options = __assign(__assign({}, mobxShallow), { name: this.name });\n            return observable.object(childNodes, EMPTY_OBJECT, options);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"finalizeNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, instance) {\n            addHiddenFinalProp(instance, \"toString\", objectTypeToString);\n            this.forAllProps(function (name) {\n                _interceptReads(instance, name, node.unbox);\n            });\n            this.initializers.reduce(function (self, fn) { return fn(self); }, instance);\n            intercept(instance, this.willChange);\n            observe(instance, this.didChange);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"willChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (chg) {\n            // TODO: mobx typings don't seem to take into account that newValue can be set even when removing a prop\n            var change = chg;\n            var node = getStateTreeNode(change.object);\n            var subpath = change.name;\n            node.assertWritable({ subpath: subpath });\n            var childType = node.type.properties[subpath];\n            // only properties are typed, state are stored as-is references\n            if (childType) {\n                typecheckInternal(childType, change.newValue);\n                change.newValue = childType.reconcile(node.getChildNode(subpath), change.newValue, node, subpath);\n            }\n            return change;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"didChange\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (chg) {\n            // TODO: mobx typings don't seem to take into account that newValue can be set even when removing a prop\n            var change = chg;\n            var childNode = getStateTreeNode(change.object);\n            var childType = childNode.type.properties[change.name];\n            if (!childType) {\n                // don't emit patches for volatile state\n                return;\n            }\n            var oldChildValue = change.oldValue ? change.oldValue.snapshot : undefined;\n            childNode.emitPatch({\n                op: \"replace\",\n                path: escapeJsonPath(change.name),\n                value: change.newValue.snapshot,\n                oldValue: oldChildValue\n            }, childNode);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildren\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var _this = this;\n            var res = [];\n            this.forAllProps(function (name) {\n                res.push(_this.getChildNode(node, name));\n            });\n            return res;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildNode\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, key) {\n            var _a;\n            if (!(key in this.properties))\n                throw fail(\"Not a value property: \" + key);\n            var adm = _getAdministration(node.storedValue, key);\n            var childNode = (_a = adm.raw) === null || _a === void 0 ? void 0 : _a.call(adm);\n            if (!childNode)\n                throw fail(\"Node not available for property \" + key);\n            return childNode;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, applyPostProcess) {\n            var _this = this;\n            if (applyPostProcess === void 0) { applyPostProcess = true; }\n            var res = {};\n            this.forAllProps(function (name, type) {\n                try {\n                    // TODO: FIXME, make sure the observable ref is used!\n                    var atom = getAtom(node.storedValue, name);\n                    atom.reportObserved();\n                }\n                catch (e) {\n                    throw fail(name + \" property is declared twice\");\n                }\n                res[name] = _this.getChildNode(node, name).snapshot;\n            });\n            if (applyPostProcess) {\n                return this.applySnapshotPostProcessor(res);\n            }\n            return res;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"processInitialSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (childNodes) {\n            var processed = {};\n            Object.keys(childNodes).forEach(function (key) {\n                processed[key] = childNodes[key].getSnapshot();\n            });\n            return this.applySnapshotPostProcessor(processed);\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applyPatchLocally\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath, patch) {\n            if (!(patch.op === \"replace\" || patch.op === \"add\")) {\n                throw fail(\"object does not support operation \" + patch.op);\n            }\n            node.storedValue[subpath] = patch.value;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, snapshot) {\n            typecheckInternal(this, snapshot);\n            var preProcessedSnapshot = this.applySnapshotPreProcessor(snapshot);\n            this.forAllProps(function (name) {\n                node.storedValue[name] = preProcessedSnapshot[name];\n            });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshotPreProcessor\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            var processor = this.preProcessor;\n            return processor ? processor.call(null, snapshot) : snapshot;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"applySnapshotPostProcessor\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            var postProcessor = this.postProcessor;\n            if (postProcessor)\n                return postProcessor.call(null, snapshot);\n            return snapshot;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getChildType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (propertyName) {\n            assertIsString(propertyName, 1);\n            return this.properties[propertyName];\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var _this = this;\n            var snapshot = this.applySnapshotPreProcessor(value);\n            if (!isPlainObject(snapshot)) {\n                return typeCheckFailure(context, snapshot, \"Value is not a plain object\");\n            }\n            return flattenTypeErrors(this.propertyNames.map(function (key) {\n                return _this.properties[key].validate(snapshot[key], getContextForPath(context, key, _this.properties[key]));\n            }));\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"forAllProps\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (fn) {\n            var _this = this;\n            this.propertyNames.forEach(function (key) { return fn(key, _this.properties[key]); });\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var _this = this;\n            // optimization: cache\n            return (\"{ \" +\n                this.propertyNames.map(function (key) { return key + \": \" + _this.properties[key].describe(); }).join(\"; \") +\n                \" }\");\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"getDefaultSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return EMPTY_OBJECT;\n        }\n    });\n    Object.defineProperty(ModelType.prototype, \"removeChild\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node, subpath) {\n            node.storedValue[subpath] = undefined;\n        }\n    });\n    return ModelType;\n}(ComplexType));\nModelType.prototype.applySnapshot = action(ModelType.prototype.applySnapshot);\n/**\n * `types.model` - Creates a new model type by providing a name, properties, volatile state and actions.\n *\n * See the [model type](/concepts/trees#creating-models) description or the [getting started](intro/getting-started.md#getting-started-1) tutorial.\n */\nfunction model() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (devMode() && typeof args[0] !== \"string\" && args[1]) {\n        throw fail(\"Model creation failed. First argument must be a string when two arguments are provided\");\n    }\n    var name = typeof args[0] === \"string\" ? args.shift() : \"AnonymousModel\";\n    var properties = args.shift() || {};\n    return new ModelType({ name: name, properties: properties });\n}\n/**\n * `types.compose` - Composes a new model from one or more existing model types.\n * This method can be invoked in two forms:\n * Given 2 or more model types, the types are composed into a new Type.\n * Given first parameter as a string and 2 or more model types,\n * the types are composed into a new Type with the given name\n */\nfunction compose() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    // TODO: just join the base type names if no name is provided\n    var hasTypename = typeof args[0] === \"string\";\n    var typeName = hasTypename ? args[0] : \"AnonymousModel\";\n    if (hasTypename) {\n        args.shift();\n    }\n    // check all parameters\n    if (devMode()) {\n        args.forEach(function (type, i) {\n            assertArg(type, isModelType, \"mobx-state-tree model type\", hasTypename ? i + 2 : i + 1);\n        });\n    }\n    return args\n        .reduce(function (prev, cur) {\n        return prev.cloneAndEnhance({\n            name: prev.name + \"_\" + cur.name,\n            properties: cur.properties,\n            initializers: cur.initializers,\n            preProcessor: function (snapshot) {\n                return cur.applySnapshotPreProcessor(prev.applySnapshotPreProcessor(snapshot));\n            },\n            postProcessor: function (snapshot) {\n                return cur.applySnapshotPostProcessor(prev.applySnapshotPostProcessor(snapshot));\n            }\n        });\n    })\n        .named(typeName);\n}\n/**\n * Returns if a given value represents a model type.\n *\n * @param type\n * @returns\n */\nfunction isModelType(type) {\n    return isType(type) && (type.flags & TypeFlags.Object) > 0;\n}\n\n// TODO: implement CoreType using types.custom ?\n/**\n * @internal\n * @hidden\n */\nvar CoreType = /** @class */ (function (_super) {\n    __extends(CoreType, _super);\n    function CoreType(name, flags, checker, initializer) {\n        if (initializer === void 0) { initializer = identity; }\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: flags\n        });\n        Object.defineProperty(_this, \"checker\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: checker\n        });\n        Object.defineProperty(_this, \"initializer\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: initializer\n        });\n        _this.flags = flags;\n        return _this;\n    }\n    Object.defineProperty(CoreType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"createNewInstance\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (snapshot) {\n            return this.initializer(snapshot);\n        }\n    });\n    Object.defineProperty(CoreType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (isPrimitive(value) && this.checker(value)) {\n                return typeCheckSuccess();\n            }\n            var typeName = this.name === \"Date\" ? \"Date or a unix milliseconds timestamp\" : this.name;\n            return typeCheckFailure(context, value, \"Value is not a \" + typeName);\n        }\n    });\n    return CoreType;\n}(SimpleType));\n/**\n * `types.string` - Creates a type that can only contain a string value.\n * This type is used for string values by default\n *\n * Example:\n * ```ts\n * const Person = types.model({\n *   firstName: types.string,\n *   lastName: \"Doe\"\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar string = new CoreType(\"string\", TypeFlags.String, function (v) { return typeof v === \"string\"; });\n/**\n * `types.number` - Creates a type that can only contain a numeric value.\n * This type is used for numeric values by default\n *\n * Example:\n * ```ts\n * const Vector = types.model({\n *   x: types.number,\n *   y: 1.5\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar number = new CoreType(\"number\", TypeFlags.Number, function (v) { return typeof v === \"number\"; });\n/**\n * `types.integer` - Creates a type that can only contain an integer value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.integer,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar integer = new CoreType(\"integer\", TypeFlags.Integer, function (v) { return isInteger(v); });\n/**\n * `types.float` - Creates a type that can only contain an float value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.float,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar float = new CoreType(\"float\", TypeFlags.Float, function (v) { return isFloat(v); });\n/**\n * `types.finite` - Creates a type that can only contain an finite value.\n *\n * Example:\n * ```ts\n * const Size = types.model({\n *   width: types.finite,\n *   height: 10\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar finite = new CoreType(\"finite\", TypeFlags.Finite, function (v) { return isFinite(v); });\n/**\n * `types.boolean` - Creates a type that can only contain a boolean value.\n * This type is used for boolean values by default\n *\n * Example:\n * ```ts\n * const Thing = types.model({\n *   isCool: types.boolean,\n *   isAwesome: false\n * })\n * ```\n */\n// tslint:disable-next-line:variable-name\nvar boolean = new CoreType(\"boolean\", TypeFlags.Boolean, function (v) { return typeof v === \"boolean\"; });\n/**\n * `types.null` - The type of the value `null`\n */\nvar nullType = new CoreType(\"null\", TypeFlags.Null, function (v) { return v === null; });\n/**\n * `types.undefined` - The type of the value `undefined`\n */\nvar undefinedType = new CoreType(\"undefined\", TypeFlags.Undefined, function (v) { return v === undefined; });\nvar _DatePrimitive = new CoreType(\"Date\", TypeFlags.Date, function (v) { return typeof v === \"number\" || v instanceof Date; }, function (v) { return (v instanceof Date ? v : new Date(v)); });\n_DatePrimitive.getSnapshot = function (node) {\n    return node.storedValue.getTime();\n};\n/**\n * `types.Date` - Creates a type that can only contain a javascript Date value.\n *\n * Example:\n * ```ts\n * const LogLine = types.model({\n *   timestamp: types.Date,\n * })\n *\n * LogLine.create({ timestamp: new Date() })\n * ```\n */\nvar DatePrimitive = _DatePrimitive;\n/**\n * @internal\n * @hidden\n */\nfunction getPrimitiveFactoryFromValue(value) {\n    switch (typeof value) {\n        case \"string\":\n            return string;\n        case \"number\":\n            return number; // In the future, isInteger(value) ? integer : number would be interesting, but would be too breaking for now\n        case \"boolean\":\n            return boolean;\n        case \"object\":\n            if (value instanceof Date)\n                return DatePrimitive;\n    }\n    throw fail(\"Cannot determine primitive type from value \" + value);\n}\n/**\n * Returns if a given value represents a primitive type.\n *\n * @param type\n * @returns\n */\nfunction isPrimitiveType(type) {\n    return (isType(type) &&\n        (type.flags &\n            (TypeFlags.String |\n                TypeFlags.Number |\n                TypeFlags.Integer |\n                TypeFlags.Boolean |\n                TypeFlags.Date)) >\n            0);\n}\n\n/**\n * @internal\n * @hidden\n */\nvar Literal = /** @class */ (function (_super) {\n    __extends(Literal, _super);\n    function Literal(value) {\n        var _this = _super.call(this, JSON.stringify(value)) || this;\n        Object.defineProperty(_this, \"value\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Literal\n        });\n        _this.value = value;\n        return _this;\n    }\n    Object.defineProperty(Literal.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Literal.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return JSON.stringify(this.value);\n        }\n    });\n    Object.defineProperty(Literal.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (isPrimitive(value) && value === this.value) {\n                return typeCheckSuccess();\n            }\n            return typeCheckFailure(context, value, \"Value is not a literal \" + JSON.stringify(this.value));\n        }\n    });\n    return Literal;\n}(SimpleType));\n/**\n * `types.literal` - The literal type will return a type that will match only the exact given type.\n * The given value must be a primitive, in order to be serialized to a snapshot correctly.\n * You can use literal to match exact strings for example the exact male or female string.\n *\n * Example:\n * ```ts\n * const Person = types.model({\n *     name: types.string,\n *     gender: types.union(types.literal('male'), types.literal('female'))\n * })\n * ```\n *\n * @param value The value to use in the strict equal check\n * @returns\n */\nfunction literal(value) {\n    // check that the given value is a primitive\n    assertArg(value, isPrimitive, \"primitive\", 1);\n    return new Literal(value);\n}\n/**\n * Returns if a given value represents a literal type.\n *\n * @param type\n * @returns\n */\nfunction isLiteralType(type) {\n    return isType(type) && (type.flags & TypeFlags.Literal) > 0;\n}\n\nvar Refinement = /** @class */ (function (_super) {\n    __extends(Refinement, _super);\n    function Refinement(name, _subtype, _predicate, _message) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_predicate\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _predicate\n        });\n        Object.defineProperty(_this, \"_message\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _message\n        });\n        return _this;\n    }\n    Object.defineProperty(Refinement.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.Refinement;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Refinement.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            // create the child type\n            return this._subtype.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var subtypeErrors = this._subtype.validate(value, context);\n            if (subtypeErrors.length > 0)\n                return subtypeErrors;\n            var snapshot = isStateTreeNode(value) ? getStateTreeNode(value).snapshot : value;\n            if (!this._predicate(snapshot)) {\n                return typeCheckFailure(context, value, this._message(value));\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this._subtype.reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Refinement.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    return Refinement;\n}(BaseType));\n/**\n * `types.refinement` - Creates a type that is more specific than the base type, e.g. `types.refinement(types.string, value => value.length > 5)` to create a type of strings that can only be longer then 5.\n *\n * @param name\n * @param type\n * @param predicate\n * @returns\n */\nfunction refinement() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var name = typeof args[0] === \"string\" ? args.shift() : isType(args[0]) ? args[0].name : null;\n    var type = args[0];\n    var predicate = args[1];\n    var message = args[2] ? args[2] : function (v) { return \"Value does not respect the refinement predicate\"; };\n    // ensures all parameters are correct\n    assertIsType(type, [1, 2]);\n    assertIsString(name, 1);\n    assertIsFunction(predicate, [2, 3]);\n    assertIsFunction(message, [3, 4]);\n    return new Refinement(name, type, predicate, message);\n}\n/**\n * Returns if a given value is a refinement type.\n *\n * @param type\n * @returns\n */\nfunction isRefinementType(type) {\n    return (type.flags & TypeFlags.Refinement) > 0;\n}\n\n/**\n * `types.enumeration` - Can be used to create an string based enumeration.\n * (note: this methods is just sugar for a union of string literals)\n *\n * Example:\n * ```ts\n * const TrafficLight = types.model({\n *   color: types.enumeration(\"Color\", [\"Red\", \"Orange\", \"Green\"])\n * })\n * ```\n *\n * @param name descriptive name of the enumeration (optional)\n * @param options possible values this enumeration can have\n * @returns\n */\nfunction enumeration(name, options) {\n    var realOptions = typeof name === \"string\" ? options : name;\n    // check all options\n    if (devMode()) {\n        realOptions.forEach(function (option, i) {\n            assertIsString(option, i + 1);\n        });\n    }\n    var type = union.apply(void 0, __spread(realOptions.map(function (option) { return literal(\"\" + option); })));\n    if (typeof name === \"string\")\n        type.name = name;\n    return type;\n}\n\n/**\n * @internal\n * @hidden\n */\nvar Union = /** @class */ (function (_super) {\n    __extends(Union, _super);\n    function Union(name, _types, options) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_types\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _types\n        });\n        Object.defineProperty(_this, \"_dispatcher\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(_this, \"_eager\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: true\n        });\n        options = __assign({ eager: true, dispatcher: undefined }, options);\n        _this._dispatcher = options.dispatcher;\n        if (!options.eager)\n            _this._eager = false;\n        return _this;\n    }\n    Object.defineProperty(Union.prototype, \"flags\", {\n        get: function () {\n            var result = TypeFlags.Union;\n            this._types.forEach(function (type) {\n                result |= type.flags;\n            });\n            return result;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Union.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._types.some(function (subType) { return subType.isAssignableFrom(type); });\n        }\n    });\n    Object.defineProperty(Union.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"(\" + this._types.map(function (factory) { return factory.describe(); }).join(\" | \") + \")\";\n        }\n    });\n    Object.defineProperty(Union.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var type = this.determineType(initialValue, undefined);\n            if (!type)\n                throw fail(\"No matching type for union \" + this.describe()); // can happen in prod builds\n            return type.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Union.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var type = this.determineType(newValue, current.getReconciliationType());\n            if (!type)\n                throw fail(\"No matching type for union \" + this.describe()); // can happen in prod builds\n            return type.reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Union.prototype, \"determineType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, reconcileCurrentType) {\n            // try the dispatcher, if defined\n            if (this._dispatcher) {\n                return this._dispatcher(value);\n            }\n            // find the most accomodating type\n            // if we are using reconciliation try the current node type first (fix for #1045)\n            if (reconcileCurrentType) {\n                if (reconcileCurrentType.is(value)) {\n                    return reconcileCurrentType;\n                }\n                return this._types.filter(function (t) { return t !== reconcileCurrentType; }).find(function (type) { return type.is(value); });\n            }\n            else {\n                return this._types.find(function (type) { return type.is(value); });\n            }\n        }\n    });\n    Object.defineProperty(Union.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this._dispatcher) {\n                return this._dispatcher(value).validate(value, context);\n            }\n            var allErrors = [];\n            var applicableTypes = 0;\n            for (var i = 0; i < this._types.length; i++) {\n                var type = this._types[i];\n                var errors = type.validate(value, context);\n                if (errors.length === 0) {\n                    if (this._eager)\n                        return typeCheckSuccess();\n                    else\n                        applicableTypes++;\n                }\n                else {\n                    allErrors.push(errors);\n                }\n            }\n            if (applicableTypes === 1)\n                return typeCheckSuccess();\n            return typeCheckFailure(context, value, \"No type is applicable for the union\").concat(flattenTypeErrors(allErrors));\n        }\n    });\n    Object.defineProperty(Union.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._types;\n        }\n    });\n    return Union;\n}(BaseType));\n/**\n * `types.union` - Create a union of multiple types. If the correct type cannot be inferred unambiguously from a snapshot, provide a dispatcher function of the form `(snapshot) => Type`.\n *\n * @param optionsOrType\n * @param otherTypes\n * @returns\n */\nfunction union(optionsOrType) {\n    var otherTypes = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        otherTypes[_i - 1] = arguments[_i];\n    }\n    var options = isType(optionsOrType) ? undefined : optionsOrType;\n    var types = isType(optionsOrType) ? __spread([optionsOrType], otherTypes) : otherTypes;\n    var name = \"(\" + types.map(function (type) { return type.name; }).join(\" | \") + \")\";\n    // check all options\n    if (devMode()) {\n        if (options) {\n            assertArg(options, function (o) { return isPlainObject(o); }, \"object { eager?: boolean, dispatcher?: Function }\", 1);\n        }\n        types.forEach(function (type, i) {\n            assertIsType(type, options ? i + 2 : i + 1);\n        });\n    }\n    return new Union(name, types, options);\n}\n/**\n * Returns if a given value represents a union type.\n *\n * @param type\n * @returns\n */\nfunction isUnionType(type) {\n    return (type.flags & TypeFlags.Union) > 0;\n}\n\n/**\n * @hidden\n * @internal\n */\nvar OptionalValue = /** @class */ (function (_super) {\n    __extends(OptionalValue, _super);\n    function OptionalValue(_subtype, _defaultValue, optionalValues) {\n        var _this = _super.call(this, _subtype.name) || this;\n        Object.defineProperty(_this, \"_subtype\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _subtype\n        });\n        Object.defineProperty(_this, \"_defaultValue\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _defaultValue\n        });\n        Object.defineProperty(_this, \"optionalValues\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: optionalValues\n        });\n        return _this;\n    }\n    Object.defineProperty(OptionalValue.prototype, \"flags\", {\n        get: function () {\n            return this._subtype.flags | TypeFlags.Optional;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(OptionalValue.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype.describe() + \"?\";\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            if (this.optionalValues.indexOf(initialValue) >= 0) {\n                var defaultInstanceOrSnapshot = this.getDefaultInstanceOrSnapshot();\n                return this._subtype.instantiate(parent, subpath, environment, defaultInstanceOrSnapshot);\n            }\n            return this._subtype.instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this._subtype.reconcile(current, this.optionalValues.indexOf(newValue) < 0 && this._subtype.is(newValue)\n                ? newValue\n                : this.getDefaultInstanceOrSnapshot(), parent, subpath);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"getDefaultInstanceOrSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var defaultInstanceOrSnapshot = typeof this._defaultValue === \"function\"\n                ? this._defaultValue()\n                : this._defaultValue;\n            // while static values are already snapshots and checked on types.optional\n            // generator functions must always be rechecked just in case\n            if (typeof this._defaultValue === \"function\") {\n                typecheckInternal(this, defaultInstanceOrSnapshot);\n            }\n            return defaultInstanceOrSnapshot;\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            // defaulted values can be skipped\n            if (this.optionalValues.indexOf(value) >= 0) {\n                return typeCheckSuccess();\n            }\n            // bounce validation to the sub-type\n            return this._subtype.validate(value, context);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this._subtype.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(OptionalValue.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this._subtype;\n        }\n    });\n    return OptionalValue;\n}(BaseType));\nfunction checkOptionalPreconditions(type, defaultValueOrFunction) {\n    // make sure we never pass direct instances\n    if (typeof defaultValueOrFunction !== \"function\" && isStateTreeNode(defaultValueOrFunction)) {\n        throw fail(\"default value cannot be an instance, pass a snapshot or a function that creates an instance/snapshot instead\");\n    }\n    assertIsType(type, 1);\n    if (devMode()) {\n        // we only check default values if they are passed directly\n        // if they are generator functions they will be checked once they are generated\n        // we don't check generator function results here to avoid generating a node just for type-checking purposes\n        // which might generate side-effects\n        if (typeof defaultValueOrFunction !== \"function\") {\n            typecheckInternal(type, defaultValueOrFunction);\n        }\n    }\n}\n/**\n * `types.optional` - Can be used to create a property with a default value.\n *\n * Depending on the third argument (`optionalValues`) there are two ways of operation:\n * - If the argument is not provided, then if a value is not provided in the snapshot (`undefined` or missing),\n *   it will default to the provided `defaultValue`\n * - If the argument is provided, then if the value in the snapshot matches one of the optional values inside the array then it will\n *   default to the provided `defaultValue`. Additionally, if one of the optional values inside the array is `undefined` then a missing\n *   property is also valid.\n *\n *   Note that it is also possible to include values of the same type as the intended subtype as optional values,\n *   in this case the optional value will be transformed into the `defaultValue` (e.g. `types.optional(types.string, \"unnamed\", [undefined, \"\"])`\n *   will transform the snapshot values `undefined` (and therefore missing) and empty strings into the string `\"unnamed\"` when it gets\n *   instantiated).\n *\n * If `defaultValue` is a function, the function will be invoked for every new instance.\n * Applying a snapshot in which the optional value is one of the optional values (or `undefined`/_not_ present if none are provided) causes the\n * value to be reset.\n *\n * Example:\n * ```ts\n * const Todo = types.model({\n *   title: types.string,\n *   subtitle1: types.optional(types.string, \"\", [null]),\n *   subtitle2: types.optional(types.string, \"\", [null, undefined]),\n *   done: types.optional(types.boolean, false),\n *   created: types.optional(types.Date, () => new Date()),\n * })\n *\n * // if done is missing / undefined it will become false\n * // if created is missing / undefined it will get a freshly generated timestamp\n * // if subtitle1 is null it will default to \"\", but it cannot be missing or undefined\n * // if subtitle2 is null or undefined it will default to \"\"; since it can be undefined it can also be missing\n * const todo = Todo.create({ title: \"Get coffee\", subtitle1: null })\n * ```\n *\n * @param type\n * @param defaultValueOrFunction\n * @param optionalValues an optional array with zero or more primitive values (string, number, boolean, null or undefined)\n *                       that will be converted into the default. `[ undefined ]` is assumed when none is provided\n * @returns\n */\nfunction optional(type, defaultValueOrFunction, optionalValues) {\n    checkOptionalPreconditions(type, defaultValueOrFunction);\n    return new OptionalValue(type, defaultValueOrFunction, optionalValues ? optionalValues : undefinedAsOptionalValues);\n}\nvar undefinedAsOptionalValues = [undefined];\n/**\n * Returns if a value represents an optional type.\n *\n * @template IT\n * @param type\n * @returns\n */\nfunction isOptionalType(type) {\n    return isType(type) && (type.flags & TypeFlags.Optional) > 0;\n}\n\nvar optionalUndefinedType = optional(undefinedType, undefined);\nvar optionalNullType = optional(nullType, null);\n/**\n * `types.maybe` - Maybe will make a type nullable, and also optional.\n * The value `undefined` will be used to represent nullability.\n *\n * @param type\n * @returns\n */\nfunction maybe(type) {\n    assertIsType(type, 1);\n    return union(type, optionalUndefinedType);\n}\n/**\n * `types.maybeNull` - Maybe will make a type nullable, and also optional.\n * The value `null` will be used to represent no value.\n *\n * @param type\n * @returns\n */\nfunction maybeNull(type) {\n    assertIsType(type, 1);\n    return union(type, optionalNullType);\n}\n\nvar Late = /** @class */ (function (_super) {\n    __extends(Late, _super);\n    function Late(name, _definition) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"_definition\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: _definition\n        });\n        Object.defineProperty(_this, \"_subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        return _this;\n    }\n    Object.defineProperty(Late.prototype, \"flags\", {\n        get: function () {\n            return (this._subType ? this._subType.flags : 0) | TypeFlags.Late;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Late.prototype, \"getSubType\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (mustSucceed) {\n            if (!this._subType) {\n                var t = undefined;\n                try {\n                    t = this._definition();\n                }\n                catch (e) {\n                    if (e instanceof ReferenceError)\n                        // can happen in strict ES5 code when a definition is self refering\n                        t = undefined;\n                    else\n                        throw e;\n                }\n                if (mustSucceed && t === undefined)\n                    throw fail(\"Late type seems to be used too early, the definition (still) returns undefined\");\n                if (t) {\n                    if (devMode() && !isType(t))\n                        throw fail(\"Failed to determine subtype, make sure types.late returns a type definition.\");\n                    this._subType = t;\n                }\n            }\n            return this._subType;\n        }\n    });\n    Object.defineProperty(Late.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            return this.getSubType(true).instantiate(parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            return this.getSubType(true).reconcile(current, newValue, parent, subpath);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var t = this.getSubType(false);\n            return t ? t.name : \"<uknown late type>\";\n        }\n    });\n    Object.defineProperty(Late.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            var t = this.getSubType(false);\n            if (!t) {\n                // See #916; the variable the definition closure is pointing to wasn't defined yet, so can't be evaluted yet here\n                return typeCheckSuccess();\n            }\n            return t.validate(value, context);\n        }\n    });\n    Object.defineProperty(Late.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            var t = this.getSubType(false);\n            return t ? t.isAssignableFrom(type) : false;\n        }\n    });\n    Object.defineProperty(Late.prototype, \"getSubTypes\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            var subtype = this.getSubType(false);\n            return subtype ? subtype : cannotDetermineSubtype;\n        }\n    });\n    return Late;\n}(BaseType));\n/**\n * `types.late` - Defines a type that gets implemented later. This is useful when you have to deal with circular dependencies.\n * Please notice that when defining circular dependencies TypeScript isn't smart enough to inference them.\n *\n * Example:\n * ```ts\n *   // TypeScript isn't smart enough to infer self referencing types.\n *  const Node = types.model({\n *       children: types.array(types.late((): IAnyModelType => Node)) // then typecast each array element to Instance<typeof Node>\n *  })\n * ```\n *\n * @param name The name to use for the type that will be returned.\n * @param type A function that returns the type that will be defined.\n * @returns\n */\nfunction late(nameOrType, maybeType) {\n    var name = typeof nameOrType === \"string\" ? nameOrType : \"late(\" + nameOrType.toString() + \")\";\n    var type = typeof nameOrType === \"string\" ? maybeType : nameOrType;\n    // checks that the type is actually a late type\n    if (devMode()) {\n        if (!(typeof type === \"function\" && type.length === 0))\n            throw fail(\"Invalid late type, expected a function with zero arguments that returns a type, got: \" +\n                type);\n    }\n    return new Late(name, type);\n}\n/**\n * Returns if a given value represents a late type.\n *\n * @param type\n * @returns\n */\nfunction isLateType(type) {\n    return isType(type) && (type.flags & TypeFlags.Late) > 0;\n}\n\nfunction lazy(name, options) {\n    // TODO: fix this unknown casting to be stricter\n    return new Lazy(name, options);\n}\n/**\n * @internal\n * @hidden\n */\nvar Lazy = /** @class */ (function (_super) {\n    __extends(Lazy, _super);\n    function Lazy(name, options) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Lazy\n        });\n        Object.defineProperty(_this, \"loadedType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(_this, \"pendingNodeList\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: observable.array()\n        });\n        when(function () {\n            return _this.pendingNodeList.length > 0 &&\n                _this.pendingNodeList.some(function (node) {\n                    return node.isAlive && _this.options.shouldLoadPredicate(node.parent ? node.parent.value : null);\n                });\n        }, function () {\n            _this.options.loadType().then(action(function (type) {\n                _this.loadedType = type;\n                _this.pendingNodeList.forEach(function (node) {\n                    if (!node.parent)\n                        return;\n                    if (!_this.loadedType)\n                        return;\n                    node.parent.applyPatches([\n                        {\n                            op: \"replace\",\n                            path: \"/\" + node.subpath,\n                            value: node.snapshot\n                        }\n                    ]);\n                });\n            }));\n        });\n        return _this;\n    }\n    Object.defineProperty(Lazy.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"<lazy \" + this.name + \">\";\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, value) {\n            var _this = this;\n            if (this.loadedType) {\n                return this.loadedType.instantiate(parent, subpath, environment, value);\n            }\n            var node = createScalarNode(this, parent, subpath, environment, deepFreeze(value));\n            this.pendingNodeList.push(node);\n            when(function () { return !node.isAlive; }, function () { return _this.pendingNodeList.splice(_this.pendingNodeList.indexOf(node), 1); });\n            return node;\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this.loadedType) {\n                return this.loadedType.validate(value, context);\n            }\n            if (!isSerializable(value)) {\n                return typeCheckFailure(context, value, \"Value is not serializable and cannot be lazy\");\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(Lazy.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, value, parent, subpath) {\n            if (this.loadedType) {\n                current.die();\n                return this.loadedType.instantiate(parent, subpath, parent.environment, value);\n            }\n            return _super.prototype.reconcile.call(this, current, value, parent, subpath);\n        }\n    });\n    return Lazy;\n}(SimpleType));\n\n/**\n * @internal\n * @hidden\n */\nvar Frozen = /** @class */ (function (_super) {\n    __extends(Frozen, _super);\n    function Frozen(subType) {\n        var _this = _super.call(this, subType ? \"frozen(\" + subType.name + \")\" : \"frozen\") || this;\n        Object.defineProperty(_this, \"subType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: subType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Frozen\n        });\n        return _this;\n    }\n    Object.defineProperty(Frozen.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"<any immutable value>\";\n        }\n    });\n    Object.defineProperty(Frozen.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, value) {\n            // create the node\n            return createScalarNode(this, parent, subpath, environment, deepFreeze(value));\n        }\n    });\n    Object.defineProperty(Frozen.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (!isSerializable(value)) {\n                return typeCheckFailure(context, value, \"Value is not serializable and cannot be frozen\");\n            }\n            if (this.subType)\n                return this.subType.validate(value, context);\n            return typeCheckSuccess();\n        }\n    });\n    return Frozen;\n}(SimpleType));\nvar untypedFrozenInstance = new Frozen();\n/**\n * `types.frozen` - Frozen can be used to store any value that is serializable in itself (that is valid JSON).\n * Frozen values need to be immutable or treated as if immutable. They need be serializable as well.\n * Values stored in frozen will snapshotted as-is by MST, and internal changes will not be tracked.\n *\n * This is useful to store complex, but immutable values like vectors etc. It can form a powerful bridge to parts of your application that should be immutable, or that assume data to be immutable.\n *\n * Note: if you want to store free-form state that is mutable, or not serializeable, consider using volatile state instead.\n *\n * Frozen properties can be defined in three different ways\n * 1. `types.frozen(SubType)` - provide a valid MST type and frozen will check if the provided data conforms the snapshot for that type\n * 2. `types.frozen({ someDefaultValue: true})` - provide a primitive value, object or array, and MST will infer the type from that object, and also make it the default value for the field\n * 3. `types.frozen<TypeScriptType>()` - provide a typescript type, to help in strongly typing the field (design time only)\n *\n * Example:\n * ```ts\n * const GameCharacter = types.model({\n *   name: string,\n *   location: types.frozen({ x: 0, y: 0})\n * })\n *\n * const hero = GameCharacter.create({\n *   name: \"Mario\",\n *   location: { x: 7, y: 4 }\n * })\n *\n * hero.location = { x: 10, y: 2 } // OK\n * hero.location.x = 7 // Not ok!\n * ```\n *\n * ```ts\n * type Point = { x: number, y: number }\n *    const Mouse = types.model({\n *         loc: types.frozen<Point>()\n *    })\n * ```\n *\n * @param defaultValueOrType\n * @returns\n */\nfunction frozen(arg) {\n    if (arguments.length === 0)\n        return untypedFrozenInstance;\n    else if (isType(arg))\n        return new Frozen(arg);\n    else\n        return optional(untypedFrozenInstance, arg);\n}\n/**\n * Returns if a given value represents a frozen type.\n *\n * @param type\n * @returns\n */\nfunction isFrozenType(type) {\n    return isType(type) && (type.flags & TypeFlags.Frozen) > 0;\n}\n\nfunction getInvalidationCause(hook) {\n    switch (hook) {\n        case Hook.beforeDestroy:\n            return \"destroy\";\n        case Hook.beforeDetach:\n            return \"detach\";\n        default:\n            return undefined;\n    }\n}\nvar StoredReference = /** @class */ (function () {\n    function StoredReference(value, targetType) {\n        Object.defineProperty(this, \"targetType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: targetType\n        });\n        Object.defineProperty(this, \"identifier\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"node\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"resolvedReference\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        if (isValidIdentifier(value)) {\n            this.identifier = value;\n        }\n        else if (isStateTreeNode(value)) {\n            var targetNode = getStateTreeNode(value);\n            if (!targetNode.identifierAttribute)\n                throw fail(\"Can only store references with a defined identifier attribute.\");\n            var id = targetNode.unnormalizedIdentifier;\n            if (id === null || id === undefined) {\n                throw fail(\"Can only store references to tree nodes with a defined identifier.\");\n            }\n            this.identifier = id;\n        }\n        else {\n            throw fail(\"Can only store references to tree nodes or identifiers, got: '\" + value + \"'\");\n        }\n    }\n    Object.defineProperty(StoredReference.prototype, \"updateResolvedReference\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            var normalizedId = normalizeIdentifier(this.identifier);\n            var root = node.root;\n            var lastCacheModification = root.identifierCache.getLastCacheModificationPerId(normalizedId);\n            if (!this.resolvedReference ||\n                this.resolvedReference.lastCacheModification !== lastCacheModification) {\n                var targetType = this.targetType;\n                // reference was initialized with the identifier of the target\n                var target = root.identifierCache.resolve(targetType, normalizedId);\n                if (!target) {\n                    throw new InvalidReferenceError(\"[mobx-state-tree] Failed to resolve reference '\" + this.identifier + \"' to type '\" + this.targetType.name + \"' (from node: \" + node.path + \")\");\n                }\n                this.resolvedReference = {\n                    node: target,\n                    lastCacheModification: lastCacheModification\n                };\n            }\n        }\n    });\n    Object.defineProperty(StoredReference.prototype, \"resolvedValue\", {\n        get: function () {\n            this.updateResolvedReference(this.node);\n            return this.resolvedReference.node.value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return StoredReference;\n}());\n/**\n * @internal\n * @hidden\n */\nvar InvalidReferenceError = /** @class */ (function (_super) {\n    __extends(InvalidReferenceError, _super);\n    function InvalidReferenceError(m) {\n        var _this = _super.call(this, m) || this;\n        Object.setPrototypeOf(_this, InvalidReferenceError.prototype);\n        return _this;\n    }\n    return InvalidReferenceError;\n}(Error));\n/**\n * @internal\n * @hidden\n */\nvar BaseReferenceType = /** @class */ (function (_super) {\n    __extends(BaseReferenceType, _super);\n    function BaseReferenceType(targetType, onInvalidated) {\n        var _this = _super.call(this, \"reference(\" + targetType.name + \")\") || this;\n        Object.defineProperty(_this, \"targetType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: targetType\n        });\n        Object.defineProperty(_this, \"onInvalidated\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: onInvalidated\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Reference\n        });\n        return _this;\n    }\n    Object.defineProperty(BaseReferenceType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"isAssignableFrom\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (type) {\n            return this.targetType.isAssignableFrom(type);\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            return isValidIdentifier(value)\n                ? typeCheckSuccess()\n                : typeCheckFailure(context, value, \"Value is not a valid identifier, which is a string or a number\");\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"fireInvalidated\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (cause, storedRefNode, referenceId, refTargetNode) {\n            // to actually invalidate a reference we need an alive parent,\n            // since it is a scalar value (immutable-ish) and we need to change it\n            // from the parent\n            var storedRefParentNode = storedRefNode.parent;\n            if (!storedRefParentNode || !storedRefParentNode.isAlive) {\n                return;\n            }\n            var storedRefParentValue = storedRefParentNode.storedValue;\n            if (!storedRefParentValue) {\n                return;\n            }\n            this.onInvalidated({\n                cause: cause,\n                parent: storedRefParentValue,\n                invalidTarget: refTargetNode ? refTargetNode.storedValue : undefined,\n                invalidId: referenceId,\n                replaceRef: function (newRef) {\n                    applyPatch(storedRefNode.root.storedValue, {\n                        op: \"replace\",\n                        value: newRef,\n                        path: storedRefNode.path\n                    });\n                },\n                removeRef: function () {\n                    if (isModelType(storedRefParentNode.type)) {\n                        this.replaceRef(undefined);\n                    }\n                    else {\n                        applyPatch(storedRefNode.root.storedValue, {\n                            op: \"remove\",\n                            path: storedRefNode.path\n                        });\n                    }\n                }\n            });\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"addTargetNodeWatcher\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode, referenceId) {\n            var _this = this;\n            // this will make sure the target node becomes created\n            var refTargetValue = this.getValue(storedRefNode);\n            if (!refTargetValue) {\n                return undefined;\n            }\n            var refTargetNode = getStateTreeNode(refTargetValue);\n            var hookHandler = function (_, refTargetNodeHook) {\n                var cause = getInvalidationCause(refTargetNodeHook);\n                if (!cause) {\n                    return;\n                }\n                _this.fireInvalidated(cause, storedRefNode, referenceId, refTargetNode);\n            };\n            var refTargetDetachHookDisposer = refTargetNode.registerHook(Hook.beforeDetach, hookHandler);\n            var refTargetDestroyHookDisposer = refTargetNode.registerHook(Hook.beforeDestroy, hookHandler);\n            return function () {\n                refTargetDetachHookDisposer();\n                refTargetDestroyHookDisposer();\n            };\n        }\n    });\n    Object.defineProperty(BaseReferenceType.prototype, \"watchTargetNodeForInvalidations\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode, identifier, customGetSet) {\n            var _this = this;\n            if (!this.onInvalidated) {\n                return;\n            }\n            var onRefTargetDestroyedHookDisposer;\n            // get rid of the watcher hook when the stored ref node is destroyed\n            // detached is ignored since scalar nodes (where the reference resides) cannot be detached\n            storedRefNode.registerHook(Hook.beforeDestroy, function () {\n                if (onRefTargetDestroyedHookDisposer) {\n                    onRefTargetDestroyedHookDisposer();\n                }\n            });\n            var startWatching = function (sync) {\n                // re-create hook in case the stored ref gets reattached\n                if (onRefTargetDestroyedHookDisposer) {\n                    onRefTargetDestroyedHookDisposer();\n                }\n                // make sure the target node is actually there and initialized\n                var storedRefParentNode = storedRefNode.parent;\n                var storedRefParentValue = storedRefParentNode && storedRefParentNode.storedValue;\n                if (storedRefParentNode && storedRefParentNode.isAlive && storedRefParentValue) {\n                    var refTargetNodeExists = void 0;\n                    if (customGetSet) {\n                        refTargetNodeExists = !!customGetSet.get(identifier, storedRefParentValue);\n                    }\n                    else {\n                        refTargetNodeExists = storedRefNode.root.identifierCache.has(_this.targetType, normalizeIdentifier(identifier));\n                    }\n                    if (!refTargetNodeExists) {\n                        // we cannot change the reference in sync mode\n                        // since we are in the middle of a reconciliation/instantiation and the change would be overwritten\n                        // for those cases just let the wrong reference be assigned and fail upon usage\n                        // (like current references do)\n                        // this means that effectively this code will only run when it is created from a snapshot\n                        if (!sync) {\n                            _this.fireInvalidated(\"invalidSnapshotReference\", storedRefNode, identifier, null);\n                        }\n                    }\n                    else {\n                        onRefTargetDestroyedHookDisposer = _this.addTargetNodeWatcher(storedRefNode, identifier);\n                    }\n                }\n            };\n            if (storedRefNode.state === NodeLifeCycle.FINALIZED) {\n                // already attached, so the whole tree is ready\n                startWatching(true);\n            }\n            else {\n                if (!storedRefNode.isRoot) {\n                    // start watching once the whole tree is ready\n                    storedRefNode.root.registerHook(Hook.afterCreationFinalization, function () {\n                        // make sure to attach it so it can start listening\n                        if (storedRefNode.parent) {\n                            storedRefNode.parent.createObservableInstanceIfNeeded();\n                        }\n                    });\n                }\n                // start watching once the node is attached somewhere / parent changes\n                storedRefNode.registerHook(Hook.afterAttach, function () {\n                    startWatching(false);\n                });\n            }\n        }\n    });\n    return BaseReferenceType;\n}(SimpleType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierReferenceType = /** @class */ (function (_super) {\n    __extends(IdentifierReferenceType, _super);\n    function IdentifierReferenceType(targetType, onInvalidated) {\n        return _super.call(this, targetType, onInvalidated) || this;\n    }\n    Object.defineProperty(IdentifierReferenceType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            if (!storedRefNode.isAlive)\n                return undefined;\n            var storedRef = storedRefNode.storedValue;\n            return storedRef.resolvedValue;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            var ref = storedRefNode.storedValue;\n            return ref.identifier;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var identifier = isStateTreeNode(initialValue) ? getIdentifier(initialValue) : initialValue;\n            var storedRef = new StoredReference(initialValue, this.targetType);\n            var storedRefNode = createScalarNode(this, parent, subpath, environment, storedRef);\n            storedRef.node = storedRefNode;\n            this.watchTargetNodeForInvalidations(storedRefNode, identifier, undefined);\n            return storedRefNode;\n        }\n    });\n    Object.defineProperty(IdentifierReferenceType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            if (!current.isDetaching && current.type === this) {\n                var compareByValue = isStateTreeNode(newValue);\n                var ref = current.storedValue;\n                if ((!compareByValue && ref.identifier === newValue) ||\n                    (compareByValue && ref.resolvedValue === newValue)) {\n                    current.setParent(parent, subpath);\n                    return current;\n                }\n            }\n            var newNode = this.instantiate(parent, subpath, undefined, newValue);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return IdentifierReferenceType;\n}(BaseReferenceType));\n/**\n * @internal\n * @hidden\n */\nvar CustomReferenceType = /** @class */ (function (_super) {\n    __extends(CustomReferenceType, _super);\n    function CustomReferenceType(targetType, options, onInvalidated) {\n        var _this = _super.call(this, targetType, onInvalidated) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        return _this;\n    }\n    Object.defineProperty(CustomReferenceType.prototype, \"getValue\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            if (!storedRefNode.isAlive)\n                return undefined;\n            var referencedNode = this.options.get(storedRefNode.storedValue, storedRefNode.parent ? storedRefNode.parent.storedValue : null);\n            return referencedNode;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (storedRefNode) {\n            return storedRefNode.storedValue;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, newValue) {\n            var identifier = isStateTreeNode(newValue)\n                ? this.options.set(newValue, parent ? parent.storedValue : null)\n                : newValue;\n            var storedRefNode = createScalarNode(this, parent, subpath, environment, identifier);\n            this.watchTargetNodeForInvalidations(storedRefNode, identifier, this.options);\n            return storedRefNode;\n        }\n    });\n    Object.defineProperty(CustomReferenceType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            var newIdentifier = isStateTreeNode(newValue)\n                ? this.options.set(newValue, current ? current.storedValue : null)\n                : newValue;\n            if (!current.isDetaching && current.type === this && current.storedValue === newIdentifier) {\n                current.setParent(parent, subpath);\n                return current;\n            }\n            var newNode = this.instantiate(parent, subpath, undefined, newIdentifier);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return CustomReferenceType;\n}(BaseReferenceType));\n/**\n * `types.reference` - Creates a reference to another type, which should have defined an identifier.\n * See also the [reference and identifiers](https://github.com/mobxjs/mobx-state-tree#references-and-identifiers) section.\n */\nfunction reference(subType, options) {\n    assertIsType(subType, 1);\n    if (devMode()) {\n        if (arguments.length === 2 && typeof arguments[1] === \"string\") {\n            // istanbul ignore next\n            throw fail(\"References with base path are no longer supported. Please remove the base path.\");\n        }\n    }\n    var getSetOptions = options ? options : undefined;\n    var onInvalidated = options\n        ? options.onInvalidated\n        : undefined;\n    if (getSetOptions && (getSetOptions.get || getSetOptions.set)) {\n        if (devMode()) {\n            if (!getSetOptions.get || !getSetOptions.set) {\n                throw fail(\"reference options must either contain both a 'get' and a 'set' method or none of them\");\n            }\n        }\n        return new CustomReferenceType(subType, {\n            get: getSetOptions.get,\n            set: getSetOptions.set\n        }, onInvalidated);\n    }\n    else {\n        return new IdentifierReferenceType(subType, onInvalidated);\n    }\n}\n/**\n * Returns if a given value represents a reference type.\n *\n * @param type\n * @returns\n */\nfunction isReferenceType(type) {\n    return (type.flags & TypeFlags.Reference) > 0;\n}\n/**\n * `types.safeReference` - A safe reference is like a standard reference, except that it accepts the undefined value by default\n * and automatically sets itself to undefined (when the parent is a model) / removes itself from arrays and maps\n * when the reference it is pointing to gets detached/destroyed.\n *\n * The optional options parameter object accepts a parameter named `acceptsUndefined`, which is set to true by default, so it is suitable\n * for model properties.\n * When used inside collections (arrays/maps), it is recommended to set this option to false so it can't take undefined as value,\n * which is usually the desired in those cases.\n * Additionally, the optional options parameter object accepts a parameter named `onInvalidated`, which will be called when the reference target node that the reference is pointing to is about to be detached/destroyed\n *\n * Strictly speaking it is a `types.maybe(types.reference(X))` (when `acceptsUndefined` is set to true, the default) and\n * `types.reference(X)` (when `acceptsUndefined` is set to false), both of them with a customized `onInvalidated` option.\n *\n * @param subType\n * @param options\n * @returns\n */\nfunction safeReference(subType, options) {\n    var refType = reference(subType, __assign(__assign({}, options), { onInvalidated: function (ev) {\n            if (options && options.onInvalidated) {\n                options.onInvalidated(ev);\n            }\n            ev.removeRef();\n        } }));\n    if (options && options.acceptsUndefined === false) {\n        return refType;\n    }\n    else {\n        return maybe(refType);\n    }\n}\n\nvar BaseIdentifierType = /** @class */ (function (_super) {\n    __extends(BaseIdentifierType, _super);\n    function BaseIdentifierType(name, validType) {\n        var _this = _super.call(this, name) || this;\n        Object.defineProperty(_this, \"validType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: validType\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Identifier\n        });\n        return _this;\n    }\n    Object.defineProperty(BaseIdentifierType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            if (!parent || !(parent.type instanceof ModelType))\n                throw fail(\"Identifier types can only be instantiated as direct child of a model type\");\n            return createScalarNode(this, parent, subpath, environment, initialValue);\n        }\n    });\n    Object.defineProperty(BaseIdentifierType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, newValue, parent, subpath) {\n            // we don't consider detaching here since identifier are scalar nodes, and scalar nodes cannot be detached\n            if (current.storedValue !== newValue)\n                throw fail(\"Tried to change identifier from '\" + current.storedValue + \"' to '\" + newValue + \"'. Changing identifiers is not allowed.\");\n            current.setParent(parent, subpath);\n            return current;\n        }\n    });\n    Object.defineProperty(BaseIdentifierType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (typeof value !== this.validType) {\n                return typeCheckFailure(context, value, \"Value is not a valid \" + this.describe() + \", expected a \" + this.validType);\n            }\n            return typeCheckSuccess();\n        }\n    });\n    return BaseIdentifierType;\n}(SimpleType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierType = /** @class */ (function (_super) {\n    __extends(IdentifierType, _super);\n    function IdentifierType() {\n        var _this = _super.call(this, \"identifier\", \"string\") || this;\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Identifier\n        });\n        return _this;\n    }\n    Object.defineProperty(IdentifierType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"identifier\";\n        }\n    });\n    return IdentifierType;\n}(BaseIdentifierType));\n/**\n * @internal\n * @hidden\n */\nvar IdentifierNumberType = /** @class */ (function (_super) {\n    __extends(IdentifierNumberType, _super);\n    function IdentifierNumberType() {\n        return _super.call(this, \"identifierNumber\", \"number\") || this;\n    }\n    Object.defineProperty(IdentifierNumberType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return node.storedValue;\n        }\n    });\n    Object.defineProperty(IdentifierNumberType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return \"identifierNumber\";\n        }\n    });\n    return IdentifierNumberType;\n}(BaseIdentifierType));\n/**\n * `types.identifier` - Identifiers are used to make references, lifecycle events and reconciling works.\n * Inside a state tree, for each type can exist only one instance for each given identifier.\n * For example there couldn't be 2 instances of user with id 1. If you need more, consider using references.\n * Identifier can be used only as type property of a model.\n * This type accepts as parameter the value type of the identifier field that can be either string or number.\n *\n * Example:\n * ```ts\n *  const Todo = types.model(\"Todo\", {\n *      id: types.identifier,\n *      title: types.string\n *  })\n * ```\n *\n * @returns\n */\nvar identifier = new IdentifierType();\n/**\n * `types.identifierNumber` - Similar to `types.identifier`. This one will serialize from / to a number when applying snapshots\n *\n * Example:\n * ```ts\n *  const Todo = types.model(\"Todo\", {\n *      id: types.identifierNumber,\n *      title: types.string\n *  })\n * ```\n *\n * @returns\n */\nvar identifierNumber = new IdentifierNumberType();\n/**\n * Returns if a given value represents an identifier type.\n *\n * @param type\n * @returns\n */\nfunction isIdentifierType(type) {\n    return isType(type) && (type.flags & TypeFlags.Identifier) > 0;\n}\n/**\n * @internal\n * @hidden\n */\nfunction normalizeIdentifier(id) {\n    return \"\" + id;\n}\n/**\n * @internal\n * @hidden\n */\nfunction isValidIdentifier(id) {\n    return typeof id === \"string\" || typeof id === \"number\";\n}\n/**\n * @internal\n * @hidden\n */\nfunction assertIsValidIdentifier(id, argNumber) {\n    assertArg(id, isValidIdentifier, \"string or number (identifier)\", argNumber);\n}\n\n/**\n * `types.custom` - Creates a custom type. Custom types can be used for arbitrary immutable values, that have a serializable representation. For example, to create your own Date representation, Decimal type etc.\n *\n * The signature of the options is:\n * ```ts\n * export interface CustomTypeOptions<S, T> {\n *     // Friendly name\n *     name: string\n *     // given a serialized value and environment, how to turn it into the target type\n *     fromSnapshot(snapshot: S, env: any): T\n *     // return the serialization of the current value\n *     toSnapshot(value: T): S\n *     // if true, this is a converted value, if false, it's a snapshot\n *     isTargetType(value: T | S): value is T\n *     // a non empty string is assumed to be a validation error\n *     getValidationMessage?(snapshot: S): string\n * }\n * ```\n *\n * Example:\n * ```ts\n * const DecimalPrimitive = types.custom<string, Decimal>({\n *     name: \"Decimal\",\n *     fromSnapshot(value: string) {\n *         return new Decimal(value)\n *     },\n *     toSnapshot(value: Decimal) {\n *         return value.toString()\n *     },\n *     isTargetType(value: string | Decimal): boolean {\n *         return value instanceof Decimal\n *     },\n *     getValidationMessage(value: string): string {\n *         if (/^-?\\d+\\.\\d+$/.test(value)) return \"\" // OK\n *         return `'${value}' doesn't look like a valid decimal number`\n *     }\n * })\n *\n * const Wallet = types.model({\n *     balance: DecimalPrimitive\n * })\n * ```\n *\n * @param options\n * @returns\n */\nfunction custom(options) {\n    return new CustomType(options);\n}\n/**\n * @internal\n * @hidden\n */\nvar CustomType = /** @class */ (function (_super) {\n    __extends(CustomType, _super);\n    function CustomType(options) {\n        var _this = _super.call(this, options.name) || this;\n        Object.defineProperty(_this, \"options\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: options\n        });\n        Object.defineProperty(_this, \"flags\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: TypeFlags.Custom\n        });\n        return _this;\n    }\n    Object.defineProperty(CustomType.prototype, \"describe\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function () {\n            return this.name;\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"isValidSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (value, context) {\n            if (this.options.isTargetType(value))\n                return typeCheckSuccess();\n            var typeError = this.options.getValidationMessage(value);\n            if (typeError) {\n                return typeCheckFailure(context, value, \"Invalid value for type '\" + this.name + \"': \" + typeError);\n            }\n            return typeCheckSuccess();\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"getSnapshot\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (node) {\n            return this.options.toSnapshot(node.storedValue);\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"instantiate\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (parent, subpath, environment, initialValue) {\n            var valueToStore = this.options.isTargetType(initialValue)\n                ? initialValue\n                : this.options.fromSnapshot(initialValue, parent && parent.root.environment);\n            return createScalarNode(this, parent, subpath, environment, valueToStore);\n        }\n    });\n    Object.defineProperty(CustomType.prototype, \"reconcile\", {\n        enumerable: false,\n        configurable: true,\n        writable: true,\n        value: function (current, value, parent, subpath) {\n            var isSnapshot = !this.options.isTargetType(value);\n            // in theory customs use scalar nodes which cannot be detached, but still...\n            if (!current.isDetaching) {\n                var unchanged = current.type === this &&\n                    (isSnapshot ? value === current.snapshot : value === current.storedValue);\n                if (unchanged) {\n                    current.setParent(parent, subpath);\n                    return current;\n                }\n            }\n            var valueToStore = isSnapshot\n                ? this.options.fromSnapshot(value, parent.root.environment)\n                : value;\n            var newNode = this.instantiate(parent, subpath, undefined, valueToStore);\n            current.die(); // noop if detaching\n            return newNode;\n        }\n    });\n    return CustomType;\n}(SimpleType));\n\n// we import the types to re-export them inside types.\nvar types = {\n    enumeration: enumeration,\n    model: model,\n    compose: compose,\n    custom: custom,\n    reference: reference,\n    safeReference: safeReference,\n    union: union,\n    optional: optional,\n    literal: literal,\n    maybe: maybe,\n    maybeNull: maybeNull,\n    refinement: refinement,\n    string: string,\n    boolean: boolean,\n    number: number,\n    integer: integer,\n    float: float,\n    finite: finite,\n    Date: DatePrimitive,\n    map: map,\n    array: array,\n    frozen: frozen,\n    identifier: identifier,\n    identifierNumber: identifierNumber,\n    late: late,\n    lazy: lazy,\n    undefined: undefinedType,\n    null: nullType,\n    snapshotProcessor: snapshotProcessor\n};\n\nexport { addDisposer, addMiddleware, applyAction, applyPatch, applySnapshot, cast, castFlowReturn, castToReferenceSnapshot, castToSnapshot, clone, createActionTrackingMiddleware, createActionTrackingMiddleware2, decorate, destroy, detach, escapeJsonPath, flow, getChildType, getEnv, getIdentifier, getLivelinessChecking, getMembers, getNodeId, getParent, getParentOfType, getPath, getPathParts, getPropertyMembers, getRelativePath, getRoot, getRunningActionContext, getSnapshot, getType, hasParent, hasParentOfType, isActionContextChildOf, isActionContextThisOrChildOf, isAlive, isArrayType, isFrozenType, isIdentifierType, isLateType, isLiteralType, isMapType, isModelType, isOptionalType, isPrimitiveType, isProtected, isReferenceType, isRefinementType, isRoot, isStateTreeNode, isType, isUnionType, isValidReference, joinJsonPath, onAction, onPatch, onSnapshot, process$1 as process, protect, recordActions, recordPatches, resolveIdentifier, resolvePath, setLivelinessChecking, setLivelynessChecking, splitJsonPath, types as t, toGenerator, toGeneratorFunction, tryReference, tryResolve, typecheck, types, unescapeJsonPath, unprotect, walk };\n","const niceErrors = {\n    0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n    1(annotationType, key: PropertyKey) {\n        return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n    },\n    /*\n    2(prop) {\n        return `invalid decorator for '${prop.toString()}'`\n    },\n    3(prop) {\n        return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n    },\n    4(prop) {\n        return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n    },\n    */\n    5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n    6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n    7: \"'entries()' can only be used on observable objects, arrays and maps\",\n    8: \"'set()' can only be used on observable objects, arrays and maps\",\n    9: \"'remove()' can only be used on observable objects, arrays and maps\",\n    10: \"'has()' can only be used on observable objects, arrays and maps\",\n    11: \"'get()' can only be used on observable objects, arrays and maps\",\n    12: `Invalid annotation`,\n    13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n    14: \"Intercept handlers should return nothing or a change object\",\n    15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n    16: `Modification exception: the internal structure of an observable array was changed.`,\n    17(index, length) {\n        return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n    },\n    18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n    19(other) {\n        return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n    },\n    20(other) {\n        return \"Cannot initialize map from \" + other\n    },\n    21(dataStructure) {\n        return `Cannot convert to map from '${dataStructure}'`\n    },\n    22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n    23: \"It is not possible to get index atoms from arrays\",\n    24(thing) {\n        return \"Cannot obtain administration from \" + thing\n    },\n    25(property, name) {\n        return `the entry '${property}' does not exist in the observable map '${name}'`\n    },\n    26: \"please specify a property\",\n    27(property, name) {\n        return `no observable property '${property.toString()}' found on the observable object '${name}'`\n    },\n    28(thing) {\n        return \"Cannot obtain atom from \" + thing\n    },\n    29: \"Expecting some object\",\n    30: \"invalid action stack. did you forget to finish an action?\",\n    31: \"missing option for computed: get\",\n    32(name, derivation) {\n        return `Cycle detected in computation ${name}: ${derivation}`\n    },\n    33(name) {\n        return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n    },\n    34(name) {\n        return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n    },\n    35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n    36: \"isolateGlobalState should be called before MobX is running any reactions\",\n    37(method) {\n        return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n    },\n    38: \"'ownKeys()' can only be used on observable objects\",\n    39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n    if (__DEV__) {\n        let e: any = typeof error === \"string\" ? error : errors[error]\n        if (typeof e === \"function\") e = e.apply(null, args as any)\n        throw new Error(`[MobX] ${e}`)\n    }\n    throw new Error(\n        typeof error === \"number\"\n            ? `[MobX] minified error nr: ${error}${\n                  args.length ? \" \" + args.map(String).join(\",\") : \"\"\n              }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n            : `[MobX] ${error}`\n    )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n    if (typeof globalThis !== \"undefined\") {\n        return globalThis\n    }\n    if (typeof window !== \"undefined\") {\n        return window\n    }\n    if (typeof global !== \"undefined\") {\n        return global\n    }\n    if (typeof self !== \"undefined\") {\n        return self\n    }\n    return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n    (): void\n    name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n    if (!hasProxy) {\n        die(\n            __DEV__\n                ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n                : \"Proxy not available\"\n        )\n    }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n    if (__DEV__ && globalState.verifyProxies) {\n        die(\n            \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n                msg\n        )\n    }\n}\n\nexport function getNextId() {\n    return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n    let invoked = false\n    return function () {\n        if (invoked) {\n            return\n        }\n        invoked = true\n        return (func as any).apply(this, arguments)\n    }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n    return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n    return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n    const t = typeof value\n    switch (t) {\n        case \"string\":\n        case \"symbol\":\n        case \"number\":\n            return true\n    }\n    return false\n}\n\nexport function isObject(value: any): value is Object {\n    return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n    if (!isObject(value)) {\n        return false\n    }\n    const proto = Object.getPrototypeOf(value)\n    if (proto == null) {\n        return true\n    }\n    const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n    return (\n        typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n    )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n    const constructor = obj?.constructor\n    if (!constructor) {\n        return false\n    }\n    if (\n        \"GeneratorFunction\" === constructor.name ||\n        \"GeneratorFunction\" === constructor.displayName\n    ) {\n        return true\n    }\n    return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: true,\n        configurable: true,\n        value\n    })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n    defineProperty(object, propName, {\n        enumerable: false,\n        writable: false,\n        configurable: true,\n        value\n    })\n}\n\nexport function createInstanceofPredicate<T>(\n    name: string,\n    theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n    const propName = \"isMobX\" + name\n    theClass.prototype[propName] = true\n    return function (x) {\n        return isObject(x) && x[propName] === true\n    } as any\n}\n\n/**\n * Yields true for both native and observable Map, even across different windows.\n */\nexport function isES6Map(thing: unknown): thing is Map<any, any> {\n    return thing != null && Object.prototype.toString.call(thing) === \"[object Map]\"\n}\n\n/**\n * Makes sure a Map is an instance of non-inherited native or observable Map.\n */\nexport function isPlainES6Map(thing: Map<unknown, unknown>): boolean {\n    const mapProto = Object.getPrototypeOf(thing)\n    const objectProto = Object.getPrototypeOf(mapProto)\n    const nullProto = Object.getPrototypeOf(objectProto)\n    return nullProto === null\n}\n\n/**\n * Yields true for both native and observable Set, even across different windows.\n */\nexport function isES6Set(thing: unknown): thing is Set<any> {\n    return thing != null && Object.prototype.toString.call(thing) === \"[object Set]\"\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n    const keys = Object.keys(object)\n    // Not supported in IE, so there are not going to be symbol props anyway...\n    if (!hasGetOwnPropertySymbols) {\n        return keys\n    }\n    const symbols = Object.getOwnPropertySymbols(object)\n    if (!symbols.length) {\n        return keys\n    }\n    return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n    typeof Reflect !== \"undefined\" && Reflect.ownKeys\n        ? Reflect.ownKeys\n        : hasGetOwnPropertySymbols\n        ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n        : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n    if (typeof key === \"string\") {\n        return key\n    }\n    if (typeof key === \"symbol\") {\n        return key.toString()\n    }\n    return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n    return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n    return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n    Object.getOwnPropertyDescriptors ||\n    function getOwnPropertyDescriptors(target: any) {\n        // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n        const res: any = {}\n        // Note: without polyfill for ownKeys, symbols won't be picked up\n        ownKeys(target).forEach(key => {\n            res[key] = getDescriptor(target, key)\n        })\n        return res\n    }\n\nexport function getFlag(flags: number, mask: number) {\n    return !!(flags & mask)\n}\n\nexport function setFlag(flags: number, mask: number, newValue: boolean): number {\n    if (newValue) {\n        flags |= mask\n    } else {\n        flags &= ~mask\n    }\n    return flags\n}\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nimport type { Decorator } from \"../types/decorator_fills\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation<D extends Decorator = Decorator>(\n    annotation: Annotation\n): PropertyDecorator & Annotation & D {\n    function decorator(target, property) {\n        if (is20223Decorator(property)) {\n            return annotation.decorate_20223_(target, property)\n        } else {\n            storeAnnotation(target, property, annotation)\n        }\n    }\n    return Object.assign(decorator, annotation) as any\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n    if (!hasProp(prototype, storedAnnotationsSymbol)) {\n        addHiddenProp(prototype, storedAnnotationsSymbol, {\n            // Inherit annotations\n            ...prototype[storedAnnotationsSymbol]\n        })\n    }\n    // @override must override something\n    if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n        const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n        die(\n            `'${fieldName}' is decorated with 'override', ` +\n                `but no such decorated member was found on prototype.`\n        )\n    }\n    // Cannot re-decorate\n    assertNotDecorated(prototype, annotation, key)\n\n    // Ignore override\n    if (!isOverride(annotation)) {\n        prototype[storedAnnotationsSymbol][key] = annotation\n    }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n    if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n        const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n        const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n        const requestedAnnotationType = annotation.annotationType_\n        die(\n            `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n                `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n                `\\nRe-decorating fields is not allowed.` +\n                `\\nUse '@override' decorator for methods overridden by subclass.`\n        )\n    }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n    if (!hasProp(target, storedAnnotationsSymbol)) {\n        // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n        //     die(\n        //         `No annotations were passed to makeObservable, but no decorated members have been found either`\n        //     )\n        // }\n        // We need a copy as we will remove annotation from the list once it's applied.\n        addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n    }\n    return target[storedAnnotationsSymbol]\n}\n\nexport function is20223Decorator(context): context is DecoratorContext {\n    return typeof context == \"object\" && typeof context[\"kind\"] == \"string\"\n}\n\nexport function assert20223DecoratorType(\n    context: DecoratorContext,\n    types: DecoratorContext[\"kind\"][]\n) {\n    if (__DEV__ && !types.includes(context.kind)) {\n        die(\n            `The decorator applied to '${String(context.name)}' cannot be used on a ${\n                context.kind\n            } element`\n        )\n    }\n}\n","import {\n    die,\n    Annotation,\n    hasProp,\n    createDecoratorAnnotation,\n    ObservableObjectAdministration,\n    MakeResult\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"./decorator_fills\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator & ClassMethodDecorator =\n    createDecoratorAnnotation({\n        annotationType_: OVERRIDE,\n        make_,\n        extend_,\n        decorate_20223_\n    })\n\nexport function isOverride(annotation: Annotation): boolean {\n    return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(this: Annotation, adm: ObservableObjectAdministration, key): MakeResult {\n    // Must not be plain object\n    if (__DEV__ && adm.isPlainObject_) {\n        die(\n            `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${this.annotationType_}' cannot be used on plain objects.`\n        )\n    }\n    // Must override something\n    if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n        die(\n            `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n                `but no such annotated member was found on prototype.`\n        )\n    }\n    return MakeResult.Cancel\n}\n\nfunction extend_(this: Annotation, adm, key, descriptor, proxyTrap): boolean {\n    die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: DecoratorContext) {\n    console.warn(`'${this.annotationType_}' cannot be used with decorators - this is a no-op`)\n}\n","import {\n    IDerivationState_,\n    IObservable,\n    IDerivation,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    noop,\n    onBecomeObserved,\n    onBecomeUnobserved,\n    propagateChanged,\n    reportObserved,\n    startBatch,\n    Lambda\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n    reportObserved(): boolean\n    reportChanged(): void\n}\n\nexport class Atom implements IAtom {\n    private static readonly isBeingObservedMask_ = 0b001\n    private static readonly isPendingUnobservationMask_ = 0b010\n    private static readonly diffValueMask_ = 0b100\n    private flags_ = 0b000\n\n    observers_ = new Set<IDerivation>()\n\n    lastAccessedBy_ = 0\n    lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n    /**\n     * Create a new atom. For debugging purposes it is recommended to give it a name.\n     * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n     */\n    constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n    // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n    get isBeingObserved(): boolean {\n        return getFlag(this.flags_, Atom.isBeingObservedMask_)\n    }\n    set isBeingObserved(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Atom.isBeingObservedMask_, newValue)\n    }\n\n    get isPendingUnobservation(): boolean {\n        return getFlag(this.flags_, Atom.isPendingUnobservationMask_)\n    }\n    set isPendingUnobservation(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Atom.isPendingUnobservationMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, Atom.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(this.flags_, Atom.diffValueMask_, newValue === 1 ? true : false)\n    }\n\n    // onBecomeObservedListeners\n    public onBOL: Set<Lambda> | undefined\n    // onBecomeUnobservedListeners\n    public onBUOL: Set<Lambda> | undefined\n\n    public onBO() {\n        if (this.onBOL) {\n            this.onBOL.forEach(listener => listener())\n        }\n    }\n\n    public onBUO() {\n        if (this.onBUOL) {\n            this.onBUOL.forEach(listener => listener())\n        }\n    }\n\n    /**\n     * Invoke this method to notify mobx that your atom has been used somehow.\n     * Returns true if there is currently a reactive context.\n     */\n    public reportObserved(): boolean {\n        return reportObserved(this)\n    }\n\n    /**\n     * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n     */\n    public reportChanged() {\n        startBatch()\n        propagateChanged(this)\n        endBatch()\n    }\n\n    toString() {\n        return this.name_\n    }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n    name: string,\n    onBecomeObservedHandler: () => void = noop,\n    onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n    const atom = new Atom(name)\n    // default `noop` listener will not initialize the hook Set\n    if (onBecomeObservedHandler !== noop) {\n        onBecomeObserved(atom, onBecomeObservedHandler)\n    }\n\n    if (onBecomeUnobservedHandler !== noop) {\n        onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n    }\n    return atom\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n    (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n    return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n    return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n    return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n    if (Object.is) {\n        return Object.is(a, b)\n    }\n\n    return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n    identity: identityComparer,\n    structural: structuralComparer,\n    default: defaultComparer,\n    shallow: shallowComparer\n}\n","import {\n    deepEqual,\n    isES6Map,\n    isES6Set,\n    isObservable,\n    isObservableArray,\n    isObservableMap,\n    isObservableSet,\n    isObservableObject,\n    isPlainObject,\n    observable,\n    die,\n    isAction,\n    autoAction,\n    flow,\n    isFlow,\n    isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n    (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n    // it is an observable already, done\n    if (isObservable(v)) {\n        return v\n    }\n\n    // something that can be converted and mutated?\n    if (Array.isArray(v)) {\n        return observable.array(v, { name })\n    }\n    if (isPlainObject(v)) {\n        return observable.object(v, undefined, { name })\n    }\n    if (isES6Map(v)) {\n        return observable.map(v, { name })\n    }\n    if (isES6Set(v)) {\n        return observable.set(v, { name })\n    }\n    if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n        if (isGenerator(v)) {\n            return flow(v)\n        } else {\n            return autoAction(name, v)\n        }\n    }\n    return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n    if (v === undefined || v === null) {\n        return v\n    }\n    if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n        return v\n    }\n    if (Array.isArray(v)) {\n        return observable.array(v, { name, deep: false })\n    }\n    if (isPlainObject(v)) {\n        return observable.object(v, undefined, { name, deep: false })\n    }\n    if (isES6Map(v)) {\n        return observable.map(v, { name, deep: false })\n    }\n    if (isES6Set(v)) {\n        return observable.set(v, { name, deep: false })\n    }\n\n    if (__DEV__) {\n        die(\n            \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n        )\n    }\n}\n\nexport function referenceEnhancer(newValue?) {\n    // never turn into an observable\n    return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n    if (__DEV__ && isObservable(v)) {\n        die(`observable.struct should not be used with observable values`)\n    }\n    if (deepEqual(v, oldValue)) {\n        return oldValue\n    }\n    return v\n}\n","import {\n    ObservableObjectAdministration,\n    createAction,\n    isAction,\n    defineProperty,\n    die,\n    isFunction,\n    Annotation,\n    globalState,\n    MakeResult,\n    assert20223DecoratorType,\n    storeAnnotation\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // bound\n    if (this.options_?.bound) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Break\n    }\n    // own\n    if (source === adm.target_) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Continue\n    }\n    // prototype\n    if (isAction(descriptor.value)) {\n        // A prototype could have been annotated already by other constructor,\n        // rest of the proto chain must be annotated already\n        return MakeResult.Break\n    }\n    const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n    defineProperty(source, key, actionDescriptor)\n    return MakeResult.Continue\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n    return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: DecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"method\", \"field\"])\n    }\n    const { kind, name, addInitializer } = context\n    const ann = this\n\n    const _createAction = m =>\n        createAction(ann.options_?.name ?? name!.toString(), m, ann.options_?.autoAction ?? false)\n\n    // Backwards/Legacy behavior, expects makeObservable(this)\n    if (kind == \"field\") {\n        addInitializer(function () {\n            storeAnnotation(this, name, ann)\n        })\n        return\n    }\n\n    if (kind == \"method\") {\n        if (!isAction(mthd)) {\n            mthd = _createAction(mthd)\n        }\n\n        if (this.options_?.bound) {\n            addInitializer(function () {\n                const self = this as any\n                const bound = self[name].bind(self)\n                bound.isMobxAction = true\n                self[name] = bound\n            })\n        }\n\n        return mthd\n    }\n\n    die(\n        `Cannot apply '${ann.annotationType_}' to '${String(name)}' (kind: ${kind}):` +\n            `\\n'${ann.annotationType_}' can only be used on properties with a function value.`\n    )\n}\n\nfunction assertActionDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { value }: PropertyDescriptor\n) {\n    if (__DEV__ && !isFunction(value)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on properties with a function value.`\n        )\n    }\n}\n\nexport function createActionDescriptor(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    // provides ability to disable safeDescriptors for prototypes\n    safeDescriptors: boolean = globalState.safeDescriptors\n) {\n    assertActionDescriptor(adm, annotation, key, descriptor)\n    let { value } = descriptor\n    if (annotation.options_?.bound) {\n        value = value.bind(adm.proxy_ ?? adm.target_)\n    }\n    return {\n        value: createAction(\n            annotation.options_?.name ?? key.toString(),\n            value,\n            annotation.options_?.autoAction ?? false,\n            // https://github.com/mobxjs/mobx/discussions/3140\n            annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n        ),\n        // Non-configurable for classes\n        // prevents accidental field redefinition in subclass\n        configurable: safeDescriptors ? adm.isPlainObject_ : true,\n        // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n        enumerable: false,\n        // Non-obsevable, therefore non-writable\n        // Also prevents rewriting in subclass constructor\n        writable: safeDescriptors ? false : true\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    Annotation,\n    defineProperty,\n    die,\n    flow,\n    isFlow,\n    isFunction,\n    globalState,\n    MakeResult,\n    hasProp,\n    assert20223DecoratorType\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // own\n    if (source === adm.target_) {\n        return this.extend_(adm, key, descriptor, false) === null\n            ? MakeResult.Cancel\n            : MakeResult.Continue\n    }\n    // prototype\n    // bound - must annotate protos to support super.flow()\n    if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n        if (this.extend_(adm, key, descriptor, false) === null) {\n            return MakeResult.Cancel\n        }\n    }\n    if (isFlow(descriptor.value)) {\n        // A prototype could have been annotated already by other constructor,\n        // rest of the proto chain must be annotated already\n        return MakeResult.Break\n    }\n    const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n    defineProperty(source, key, flowDescriptor)\n    return MakeResult.Continue\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n    return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: ClassMethodDecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"method\"])\n    }\n    const { name, addInitializer } = context\n\n    if (!isFlow(mthd)) {\n        mthd = flow(mthd)\n    }\n\n    if (this.options_?.bound) {\n        addInitializer(function () {\n            const self = this as any\n            const bound = self[name].bind(self)\n            bound.isMobXFlow = true\n            self[name] = bound\n        })\n    }\n\n    return mthd\n}\n\nfunction assertFlowDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { value }: PropertyDescriptor\n) {\n    if (__DEV__ && !isFunction(value)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n        )\n    }\n}\n\nfunction createFlowDescriptor(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    bound: boolean,\n    // provides ability to disable safeDescriptors for prototypes\n    safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n    assertFlowDescriptor(adm, annotation, key, descriptor)\n    let { value } = descriptor\n    // In case of flow.bound, the descriptor can be from already annotated prototype\n    if (!isFlow(value)) {\n        value = flow(value)\n    }\n    if (bound) {\n        // We do not keep original function around, so we bind the existing flow\n        value = value.bind(adm.proxy_ ?? adm.target_)\n        // This is normally set by `flow`, but `bind` returns new function...\n        value.isMobXFlow = true\n    }\n    return {\n        value,\n        // Non-configurable for classes\n        // prevents accidental field redefinition in subclass\n        configurable: safeDescriptors ? adm.isPlainObject_ : true,\n        // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n        enumerable: false,\n        // Non-obsevable, therefore non-writable\n        // Also prevents rewriting in subclass constructor\n        writable: safeDescriptors ? false : true\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    die,\n    Annotation,\n    MakeResult,\n    assert20223DecoratorType,\n    $mobx,\n    asObservableObject,\n    ComputedValue\n} from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n): MakeResult {\n    return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    assertComputedDescriptor(adm, this, key, descriptor)\n    return adm.defineComputedProperty_(\n        key,\n        {\n            ...this.options_,\n            get: descriptor.get,\n            set: descriptor.set\n        },\n        proxyTrap\n    )\n}\n\nfunction decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorContext) {\n    if (__DEV__) {\n        assert20223DecoratorType(context, [\"getter\"])\n    }\n    const ann = this\n    const { name: key, addInitializer } = context\n\n    addInitializer(function () {\n        const adm: ObservableObjectAdministration = asObservableObject(this)[$mobx]\n        const options = {\n            ...ann.options_,\n            get,\n            context: this\n        }\n        options.name ||= __DEV__\n            ? `${adm.name_}.${key.toString()}`\n            : `ObservableObject.${key.toString()}`\n        adm.values_.set(key, new ComputedValue(options))\n    })\n\n    return function () {\n        return this[$mobx].getObservablePropValue_(key)\n    }\n}\n\nfunction assertComputedDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    { get }: PropertyDescriptor\n) {\n    if (__DEV__ && !get) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n        )\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    deepEnhancer,\n    die,\n    Annotation,\n    MakeResult,\n    assert20223DecoratorType,\n    ObservableValue,\n    asObservableObject,\n    $mobx\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n    return {\n        annotationType_: name,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n): MakeResult {\n    return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n    this: Annotation,\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    assertObservableDescriptor(adm, this, key, descriptor)\n    return adm.defineObservableProperty_(\n        key,\n        descriptor.value,\n        this.options_?.enhancer ?? deepEnhancer,\n        proxyTrap\n    )\n}\n\nfunction decorate_20223_(\n    this: Annotation,\n    desc,\n    context: ClassAccessorDecoratorContext | ClassFieldDecoratorContext\n) {\n    if (__DEV__) {\n        if (context.kind === \"field\") {\n            throw die(\n                `Please use \\`@observable accessor ${String(\n                    context.name\n                )}\\` instead of \\`@observable ${String(context.name)}\\``\n            )\n        }\n        assert20223DecoratorType(context, [\"accessor\"])\n    }\n\n    const ann = this\n    const { kind, name } = context\n\n    // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n    //   `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n    //   This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n    //   before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n    //   from an object whose class did not declare it` error.\n    // TODO: it seems that this will not be required anymore in the final version of the spec\n    // See TODO: link\n    const initializedObjects = new WeakSet()\n\n    function initializeObservable(target, value) {\n        const adm: ObservableObjectAdministration = asObservableObject(target)[$mobx]\n        const observable = new ObservableValue(\n            value,\n            ann.options_?.enhancer ?? deepEnhancer,\n            __DEV__ ? `${adm.name_}.${name.toString()}` : `ObservableObject.${name.toString()}`,\n            false\n        )\n        adm.values_.set(name, observable)\n        initializedObjects.add(target)\n    }\n\n    if (kind == \"accessor\") {\n        return {\n            get() {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, desc.get.call(this))\n                }\n                return this[$mobx].getObservablePropValue_(name)\n            },\n            set(value) {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, value)\n                }\n                return this[$mobx].setObservablePropValue_(name, value)\n            },\n            init(value) {\n                if (!initializedObjects.has(this)) {\n                    initializeObservable(this, value)\n                }\n                return value\n            }\n        }\n    }\n\n    return\n}\n\nfunction assertObservableDescriptor(\n    adm: ObservableObjectAdministration,\n    { annotationType_ }: Annotation,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor\n) {\n    if (__DEV__ && !(\"value\" in descriptor)) {\n        die(\n            `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n                `\\n'${annotationType_}' cannot be used on getter/setter properties`\n        )\n    }\n}\n","import {\n    ObservableObjectAdministration,\n    observable,\n    Annotation,\n    defineProperty,\n    createAction,\n    globalState,\n    flow,\n    computed,\n    autoAction,\n    isGenerator,\n    MakeResult,\n    die\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n    return {\n        annotationType_: AUTO,\n        options_: options,\n        make_,\n        extend_,\n        decorate_20223_\n    }\n}\n\nfunction make_(\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    source: object\n): MakeResult {\n    // getter -> computed\n    if (descriptor.get) {\n        return computed.make_(adm, key, descriptor, source)\n    }\n    // lone setter -> action setter\n    if (descriptor.set) {\n        // TODO make action applicable to setter and delegate to action.make_\n        const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n        // own\n        if (source === adm.target_) {\n            return adm.defineProperty_(key, {\n                configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n                set\n            }) === null\n                ? MakeResult.Cancel\n                : MakeResult.Continue\n        }\n        // proto\n        defineProperty(source, key, {\n            configurable: true,\n            set\n        })\n        return MakeResult.Continue\n    }\n    // function on proto -> autoAction/flow\n    if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n        if (isGenerator(descriptor.value)) {\n            const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n            return flowAnnotation.make_(adm, key, descriptor, source)\n        }\n        const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n        return actionAnnotation.make_(adm, key, descriptor, source)\n    }\n    // other -> observable\n    // Copy props from proto as well, see test:\n    // \"decorate should work with Object.create\"\n    let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n    // if function respect autoBind option\n    if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n        descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n    }\n    return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n    adm: ObservableObjectAdministration,\n    key: PropertyKey,\n    descriptor: PropertyDescriptor,\n    proxyTrap: boolean\n): boolean | null {\n    // getter -> computed\n    if (descriptor.get) {\n        return computed.extend_(adm, key, descriptor, proxyTrap)\n    }\n    // lone setter -> action setter\n    if (descriptor.set) {\n        // TODO make action applicable to setter and delegate to action.extend_\n        return adm.defineProperty_(\n            key,\n            {\n                configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n                set: createAction(key.toString(), descriptor.set) as (v: any) => void\n            },\n            proxyTrap\n        )\n    }\n    // other -> observable\n    // if function respect autoBind option\n    if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n        descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n    }\n    let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n    return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: ClassGetterDecoratorContext) {\n    die(`'${this.annotationType_}' cannot be used as a decorator`)\n}\n","import {\n    IEnhancer,\n    IEqualsComparer,\n    IObservableArray,\n    IObservableMapInitialValues,\n    IObservableSetInitialValues,\n    IObservableValue,\n    ObservableMap,\n    ObservableSet,\n    ObservableValue,\n    asDynamicObservableObject,\n    createObservableArray,\n    deepEnhancer,\n    extendObservable,\n    isES6Map,\n    isES6Set,\n    isObservable,\n    isPlainObject,\n    referenceEnhancer,\n    Annotation,\n    shallowEnhancer,\n    refStructEnhancer,\n    AnnotationsMap,\n    asObservableObject,\n    storeAnnotation,\n    createDecoratorAnnotation,\n    createLegacyArray,\n    globalState,\n    assign,\n    isStringish,\n    createObservableAnnotation,\n    createAutoAnnotation,\n    is20223Decorator,\n    initObservable\n} from \"../internal\"\n\nimport type { ClassAccessorDecorator, ClassFieldDecorator } from \"../types/decorator_fills\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n    name?: string\n    equals?: IEqualsComparer<any>\n    deep?: boolean\n    defaultDecorator?: Annotation\n    proxy?: boolean\n    autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n    deep: true,\n    name: undefined,\n    defaultDecorator: undefined,\n    proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n    return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n    enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n    enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n    enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation =\n    createDecoratorAnnotation<ClassAccessorDecorator>(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n    return options.deep === true\n        ? deepEnhancer\n        : options.deep === false\n        ? referenceEnhancer\n        : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n    options?: CreateObservableOptions\n): Annotation | undefined {\n    return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n    return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n    // @observable someProp; (2022.3 Decorators)\n    if (is20223Decorator(arg2)) {\n        return observableAnnotation.decorate_20223_(v, arg2)\n    }\n\n    // @observable someProp;\n    if (isStringish(arg2)) {\n        storeAnnotation(v, arg2, observableAnnotation)\n        return\n    }\n\n    // already observable - ignore\n    if (isObservable(v)) {\n        return v\n    }\n\n    // plain object\n    if (isPlainObject(v)) {\n        return observable.object(v, arg2, arg3)\n    }\n\n    // Array\n    if (Array.isArray(v)) {\n        return observable.array(v, arg2)\n    }\n\n    // Map\n    if (isES6Map(v)) {\n        return observable.map(v, arg2)\n    }\n\n    // Set\n    if (isES6Set(v)) {\n        return observable.set(v, arg2)\n    }\n\n    // other object - ignore\n    if (typeof v === \"object\" && v !== null) {\n        return v\n    }\n\n    // anything else\n    return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n    <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n    <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory\n    extends Annotation,\n        PropertyDecorator,\n        ClassAccessorDecorator,\n        ClassFieldDecorator {\n    // TODO: remove ClassFieldDecorator, this is only temporarily support for legacy decorators\n    <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n    <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n    <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n    <T extends object>(\n        value: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ): T\n\n    box: IObservableValueFactory\n    array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n    set: <T = any>(\n        initialValues?: IObservableSetInitialValues<T>,\n        options?: CreateObservableOptions\n    ) => ObservableSet<T>\n    map: <K = any, V = any>(\n        initialValues?: IObservableMapInitialValues<K, V>,\n        options?: CreateObservableOptions\n    ) => ObservableMap<K, V>\n    object: <T = any>(\n        props: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ) => T\n\n    /**\n     * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n     */\n    ref: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    /**\n     * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n     */\n    shallow: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    deep: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n    struct: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n    box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n    },\n    array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n        const o = asCreateObservableOptions(options)\n        return (\n            globalState.useProxies === false || o.proxy === false\n                ? createLegacyArray\n                : createObservableArray\n        )(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    map<K = any, V = any>(\n        initialValues?: IObservableMapInitialValues<K, V>,\n        options?: CreateObservableOptions\n    ): ObservableMap<K, V> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    set<T = any>(\n        initialValues?: IObservableSetInitialValues<T>,\n        options?: CreateObservableOptions\n    ): ObservableSet<T> {\n        const o = asCreateObservableOptions(options)\n        return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n    },\n    object<T extends object = any>(\n        props: T,\n        decorators?: AnnotationsMap<T, never>,\n        options?: CreateObservableOptions\n    ): T {\n        return initObservable(() =>\n            extendObservable(\n                globalState.useProxies === false || options?.proxy === false\n                    ? asObservableObject({}, options)\n                    : asDynamicObservableObject({}, options),\n                props,\n                decorators\n            )\n        )\n    },\n    ref: createDecoratorAnnotation(observableRefAnnotation),\n    shallow: createDecoratorAnnotation(observableShallowAnnotation),\n    deep: observableDecoratorAnnotation,\n    struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n    $mobx,\n    IIsObservableObject,\n    ObservableObjectAdministration,\n    warnAboutProxyRequirement,\n    assertProxies,\n    die,\n    isStringish,\n    globalState,\n    CreateObservableOptions,\n    asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n    return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n    has(target: IIsObservableObject, name: PropertyKey): boolean {\n        if (__DEV__ && globalState.trackingDerivation) {\n            warnAboutProxyRequirement(\n                \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n            )\n        }\n        return getAdm(target).has_(name)\n    },\n    get(target: IIsObservableObject, name: PropertyKey): any {\n        return getAdm(target).get_(name)\n    },\n    set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n        if (!isStringish(name)) {\n            return false\n        }\n        if (__DEV__ && !getAdm(target).values_.has(name)) {\n            warnAboutProxyRequirement(\n                \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n            )\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).set_(name, value, true) ?? true\n    },\n    deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n        if (__DEV__) {\n            warnAboutProxyRequirement(\n                \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n            )\n        }\n        if (!isStringish(name)) {\n            return false\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).delete_(name, true) ?? true\n    },\n    defineProperty(\n        target: IIsObservableObject,\n        name: PropertyKey,\n        descriptor: PropertyDescriptor\n    ): boolean {\n        if (__DEV__) {\n            warnAboutProxyRequirement(\n                \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n            )\n        }\n        // null (intercepted) -> true (success)\n        return getAdm(target).defineProperty_(name, descriptor) ?? true\n    },\n    ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n        if (__DEV__ && globalState.trackingDerivation) {\n            warnAboutProxyRequirement(\n                \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n            )\n        }\n        return getAdm(target).ownKeys_()\n    },\n    preventExtensions(target) {\n        die(13)\n    }\n}\n\nexport function asDynamicObservableObject(\n    target: any,\n    options?: CreateObservableOptions\n): IIsObservableObject {\n    assertProxies()\n    target = asObservableObject(target, options)\n    return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n    ComputedValue,\n    IComputedValueOptions,\n    Annotation,\n    storeAnnotation,\n    createDecoratorAnnotation,\n    isStringish,\n    isPlainObject,\n    isFunction,\n    die,\n    IComputedValue,\n    createComputedAnnotation,\n    comparer,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassGetterDecorator } from \"../types/decorator_fills\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator, ClassGetterDecorator {\n    // @computed(opts)\n    <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator & ClassGetterDecorator\n    // computed(fn, opts)\n    <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n    struct: Annotation & PropertyDecorator & ClassGetterDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n    equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n    if (is20223Decorator(arg2)) {\n        // @computed (2022.3 Decorators)\n        return computedAnnotation.decorate_20223_(arg1, arg2)\n    }\n    if (isStringish(arg2)) {\n        // @computed\n        return storeAnnotation(arg1, arg2, computedAnnotation)\n    }\n    if (isPlainObject(arg1)) {\n        // @computed({ options })\n        return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n    }\n\n    // computed(expr, options?)\n    if (__DEV__) {\n        if (!isFunction(arg1)) {\n            die(\"First argument to `computed` should be an expression.\")\n        }\n        if (isFunction(arg2)) {\n            die(\n                \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n            )\n        }\n    }\n    const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n    opts.get = arg1\n    opts.name ||= arg1.name || \"\" /* for generated name */\n\n    return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n    IDerivation,\n    endBatch,\n    globalState,\n    isSpyEnabled,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    untrackedEnd,\n    untrackedStart,\n    isFunction,\n    allowStateReadsStart,\n    allowStateReadsEnd,\n    ACTION,\n    EMPTY_ARRAY,\n    die,\n    getDescriptor,\n    defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n    value: \"action\",\n    configurable: true,\n    writable: false,\n    enumerable: false\n}\n\nexport function createAction(\n    actionName: string,\n    fn: Function,\n    autoAction: boolean = false,\n    ref?: Object\n): Function {\n    if (__DEV__) {\n        if (!isFunction(fn)) {\n            die(\"`action` can only be invoked on functions\")\n        }\n        if (typeof actionName !== \"string\" || !actionName) {\n            die(`actions should have valid names, got: '${actionName}'`)\n        }\n    }\n    function res() {\n        return executeAction(actionName, autoAction, fn, ref || this, arguments)\n    }\n    res.isMobxAction = true\n    res.toString = () => fn.toString()\n    if (isFunctionNameConfigurable) {\n        tmpNameDescriptor.value = actionName\n        defineProperty(res, \"name\", tmpNameDescriptor)\n    }\n    return res\n}\n\nexport function executeAction(\n    actionName: string,\n    canRunAsDerivation: boolean,\n    fn: Function,\n    scope?: any,\n    args?: IArguments\n) {\n    const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n    try {\n        return fn.apply(scope, args)\n    } catch (err) {\n        runInfo.error_ = err\n        throw err\n    } finally {\n        _endAction(runInfo)\n    }\n}\n\nexport interface IActionRunInfo {\n    prevDerivation_: IDerivation | null\n    prevAllowStateChanges_: boolean\n    prevAllowStateReads_: boolean\n    notifySpy_: boolean\n    startTime_: number\n    error_?: any\n    parentActionId_: number\n    actionId_: number\n    runAsAction_?: boolean\n}\n\nexport function _startAction(\n    actionName: string,\n    canRunAsDerivation: boolean, // true for autoAction\n    scope: any,\n    args?: IArguments\n): IActionRunInfo {\n    const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n    let startTime_: number = 0\n    if (__DEV__ && notifySpy_) {\n        startTime_ = Date.now()\n        const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n        spyReportStart({\n            type: ACTION,\n            name: actionName,\n            object: scope,\n            arguments: flattenedArgs\n        })\n    }\n    const prevDerivation_ = globalState.trackingDerivation\n    const runAsAction = !canRunAsDerivation || !prevDerivation_\n    startBatch()\n    let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n    if (runAsAction) {\n        untrackedStart()\n        prevAllowStateChanges_ = allowStateChangesStart(true)\n    }\n    const prevAllowStateReads_ = allowStateReadsStart(true)\n    const runInfo = {\n        runAsAction_: runAsAction,\n        prevDerivation_,\n        prevAllowStateChanges_,\n        prevAllowStateReads_,\n        notifySpy_,\n        startTime_,\n        actionId_: nextActionId++,\n        parentActionId_: currentActionId\n    }\n    currentActionId = runInfo.actionId_\n    return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n    if (currentActionId !== runInfo.actionId_) {\n        die(30)\n    }\n    currentActionId = runInfo.parentActionId_\n\n    if (runInfo.error_ !== undefined) {\n        globalState.suppressReactionErrors = true\n    }\n    allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n    allowStateReadsEnd(runInfo.prevAllowStateReads_)\n    endBatch()\n    if (runInfo.runAsAction_) {\n        untrackedEnd(runInfo.prevDerivation_)\n    }\n    if (__DEV__ && runInfo.notifySpy_) {\n        spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n    }\n    globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n    const prev = allowStateChangesStart(allowStateChanges)\n    try {\n        return func()\n    } finally {\n        allowStateChangesEnd(prev)\n    }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n    const prev = globalState.allowStateChanges\n    globalState.allowStateChanges = allowStateChanges\n    return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n    globalState.allowStateChanges = prev\n}\n","import {\n    Atom,\n    IEnhancer,\n    IInterceptable,\n    IEqualsComparer,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    checkIfStateModificationsAreAllowed,\n    comparer,\n    createInstanceofPredicate,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isSpyEnabled,\n    notifyListeners,\n    registerInterceptor,\n    registerListener,\n    spyReport,\n    spyReportEnd,\n    spyReportStart,\n    toPrimitive,\n    globalState,\n    IUNCHANGED,\n    UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n    object: IObservableValue<T>\n    type: \"update\"\n    newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n    type: \"update\"\n    observableKind: \"value\"\n    object: IObservableValue<T>\n    debugObjectName: string\n    newValue: T\n    oldValue: T | undefined\n}\nexport type IBoxDidChange<T = any> =\n    | {\n          type: \"create\"\n          observableKind: \"value\"\n          object: IObservableValue<T>\n          debugObjectName: string\n          newValue: T\n      }\n    | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n    get(): T\n    set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n    extends Atom\n    implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n    hasUnreportedChange_ = false\n    interceptors_\n    changeListeners_\n    value_\n    dehancer: any\n\n    constructor(\n        value: T,\n        public enhancer: IEnhancer<T>,\n        public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n        notifySpy = true,\n        private equals: IEqualsComparer<any> = comparer.default\n    ) {\n        super(name_)\n        this.value_ = enhancer(value, undefined, name_)\n        if (__DEV__ && notifySpy && isSpyEnabled()) {\n            // only notify spy if this is a stand-alone observable\n            spyReport({\n                type: CREATE,\n                object: this,\n                observableKind: \"value\",\n                debugObjectName: this.name_,\n                newValue: \"\" + this.value_\n            })\n        }\n    }\n\n    private dehanceValue(value: T): T {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    public set(newValue: T) {\n        const oldValue = this.value_\n        newValue = this.prepareNewValue_(newValue) as any\n        if (newValue !== globalState.UNCHANGED) {\n            const notifySpy = isSpyEnabled()\n            if (__DEV__ && notifySpy) {\n                spyReportStart({\n                    type: UPDATE,\n                    object: this,\n                    observableKind: \"value\",\n                    debugObjectName: this.name_,\n                    newValue,\n                    oldValue\n                })\n            }\n            this.setNewValue_(newValue)\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n    }\n\n    private prepareNewValue_(newValue): T | IUNCHANGED {\n        checkIfStateModificationsAreAllowed(this)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IValueWillChange<T>>(this, {\n                object: this,\n                type: UPDATE,\n                newValue\n            })\n            if (!change) {\n                return globalState.UNCHANGED\n            }\n            newValue = change.newValue\n        }\n        // apply modifier\n        newValue = this.enhancer(newValue, this.value_, this.name_)\n        return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n    }\n\n    setNewValue_(newValue: T) {\n        const oldValue = this.value_\n        this.value_ = newValue\n        this.reportChanged()\n        if (hasListeners(this)) {\n            notifyListeners(this, {\n                type: UPDATE,\n                object: this,\n                newValue,\n                oldValue\n            })\n        }\n    }\n\n    public get(): T {\n        this.reportObserved()\n        return this.dehanceValue(this.value_)\n    }\n\n    intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        if (fireImmediately) {\n            listener({\n                observableKind: \"value\",\n                debugObjectName: this.name_,\n                object: this,\n                type: UPDATE,\n                newValue: this.value_,\n                oldValue: undefined\n            })\n        }\n        return registerListener(this, listener)\n    }\n\n    raw() {\n        // used by MST ot get undehanced value\n        return this.value_\n    }\n\n    toJSON() {\n        return this.get()\n    }\n\n    toString() {\n        return `${this.name_}[${this.value_}]`\n    }\n\n    valueOf(): T {\n        return toPrimitive(this.get())\n    }\n\n    [Symbol.toPrimitive]() {\n        return this.valueOf()\n    }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n    x: any\n) => x is IObservableValue<any>\n","import {\n    CaughtException,\n    IDerivation,\n    IDerivationState_,\n    IEqualsComparer,\n    IObservable,\n    Lambda,\n    TraceMode,\n    autorun,\n    clearObserving,\n    comparer,\n    createAction,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    globalState,\n    isCaughtException,\n    isSpyEnabled,\n    propagateChangeConfirmed,\n    propagateMaybeChanged,\n    reportObserved,\n    shouldCompute,\n    spyReport,\n    startBatch,\n    toPrimitive,\n    trackDerivedFunction,\n    untrackedEnd,\n    untrackedStart,\n    UPDATE,\n    die,\n    allowStateChangesStart,\n    allowStateChangesEnd\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport interface IComputedValue<T> {\n    get(): T\n    set(value: T): void\n}\n\nexport interface IComputedValueOptions<T> {\n    get?: () => T\n    set?: (value: T) => void\n    name?: string\n    equals?: IEqualsComparer<T>\n    context?: any\n    requiresReaction?: boolean\n    keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n    type: \"update\"\n    observableKind: \"computed\"\n    object: unknown\n    debugObjectName: string\n    newValue: T\n    oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n *    give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n *    if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n *    go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n    dependenciesState_ = IDerivationState_.NOT_TRACKING_\n    observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n    newObserving_ = null // during tracking it's an array with new observed observers\n    observers_ = new Set<IDerivation>()\n    runId_ = 0\n    lastAccessedBy_ = 0\n    lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n    unboundDepsCount_ = 0\n    protected value_: T | undefined | CaughtException = new CaughtException(null)\n    name_: string\n    triggeredBy_?: string\n\n    private static readonly isComputingMask_ = 0b00001\n    private static readonly isRunningSetterMask_ = 0b00010\n    private static readonly isBeingObservedMask_ = 0b00100\n    private static readonly isPendingUnobservationMask_ = 0b01000\n    private static readonly diffValueMask_ = 0b10000\n    private flags_ = 0b00000\n\n    derivation: () => T // N.B: unminified as it is used by MST\n    setter_?: (value: T) => void\n    isTracing_: TraceMode = TraceMode.NONE\n    scope_: Object | undefined\n    private equals_: IEqualsComparer<any>\n    private requiresReaction_: boolean | undefined\n    keepAlive_: boolean\n\n    /**\n     * Create a new computed value based on a function expression.\n     *\n     * The `name` property is for debug purposes only.\n     *\n     * The `equals` property specifies the comparer function to use to determine if a newly produced\n     * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n     * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n     * Structural comparison can be convenient if you always produce a new aggregated object and\n     * don't want to notify observers if it is structurally the same.\n     * This is useful for working with vectors, mouse coordinates etc.\n     */\n    constructor(options: IComputedValueOptions<T>) {\n        if (!options.get) {\n            die(31)\n        }\n        this.derivation = options.get!\n        this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n        if (options.set) {\n            this.setter_ = createAction(\n                __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n                options.set\n            ) as any\n        }\n        this.equals_ =\n            options.equals ||\n            ((options as any).compareStructural || (options as any).struct\n                ? comparer.structural\n                : comparer.default)\n        this.scope_ = options.context\n        this.requiresReaction_ = options.requiresReaction\n        this.keepAlive_ = !!options.keepAlive\n    }\n\n    onBecomeStale_() {\n        propagateMaybeChanged(this)\n    }\n\n    public onBOL: Set<Lambda> | undefined\n    public onBUOL: Set<Lambda> | undefined\n\n    public onBO() {\n        if (this.onBOL) {\n            this.onBOL.forEach(listener => listener())\n        }\n    }\n\n    public onBUO() {\n        if (this.onBUOL) {\n            this.onBUOL.forEach(listener => listener())\n        }\n    }\n\n    // to check for cycles\n    private get isComputing(): boolean {\n        return getFlag(this.flags_, ComputedValue.isComputingMask_)\n    }\n    private set isComputing(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isComputingMask_, newValue)\n    }\n\n    private get isRunningSetter(): boolean {\n        return getFlag(this.flags_, ComputedValue.isRunningSetterMask_)\n    }\n    private set isRunningSetter(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isRunningSetterMask_, newValue)\n    }\n\n    get isBeingObserved(): boolean {\n        return getFlag(this.flags_, ComputedValue.isBeingObservedMask_)\n    }\n    set isBeingObserved(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isBeingObservedMask_, newValue)\n    }\n\n    get isPendingUnobservation(): boolean {\n        return getFlag(this.flags_, ComputedValue.isPendingUnobservationMask_)\n    }\n    set isPendingUnobservation(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, ComputedValue.isPendingUnobservationMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, ComputedValue.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(\n            this.flags_,\n            ComputedValue.diffValueMask_,\n            newValue === 1 ? true : false\n        )\n    }\n\n    /**\n     * Returns the current value of this computed value.\n     * Will evaluate its computation first if needed.\n     */\n    public get(): T {\n        if (this.isComputing) {\n            die(32, this.name_, this.derivation)\n        }\n        if (\n            globalState.inBatch === 0 &&\n            // !globalState.trackingDerivatpion &&\n            this.observers_.size === 0 &&\n            !this.keepAlive_\n        ) {\n            if (shouldCompute(this)) {\n                this.warnAboutUntrackedRead_()\n                startBatch() // See perf test 'computed memoization'\n                this.value_ = this.computeValue_(false)\n                endBatch()\n            }\n        } else {\n            reportObserved(this)\n            if (shouldCompute(this)) {\n                let prevTrackingContext = globalState.trackingContext\n                if (this.keepAlive_ && !prevTrackingContext) {\n                    globalState.trackingContext = this\n                }\n                if (this.trackAndCompute()) {\n                    propagateChangeConfirmed(this)\n                }\n                globalState.trackingContext = prevTrackingContext\n            }\n        }\n        const result = this.value_!\n\n        if (isCaughtException(result)) {\n            throw result.cause\n        }\n        return result\n    }\n\n    public set(value: T) {\n        if (this.setter_) {\n            if (this.isRunningSetter) {\n                die(33, this.name_)\n            }\n            this.isRunningSetter = true\n            try {\n                this.setter_.call(this.scope_, value)\n            } finally {\n                this.isRunningSetter = false\n            }\n        } else {\n            die(34, this.name_)\n        }\n    }\n\n    trackAndCompute(): boolean {\n        // N.B: unminified as it is used by MST\n        const oldValue = this.value_\n        const wasSuspended =\n            /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n        const newValue = this.computeValue_(true)\n\n        const changed =\n            wasSuspended ||\n            isCaughtException(oldValue) ||\n            isCaughtException(newValue) ||\n            !this.equals_(oldValue, newValue)\n\n        if (changed) {\n            this.value_ = newValue\n\n            if (__DEV__ && isSpyEnabled()) {\n                spyReport({\n                    observableKind: \"computed\",\n                    debugObjectName: this.name_,\n                    object: this.scope_,\n                    type: \"update\",\n                    oldValue,\n                    newValue\n                } as IComputedDidChange)\n            }\n        }\n\n        return changed\n    }\n\n    computeValue_(track: boolean) {\n        this.isComputing = true\n        // don't allow state changes during computation\n        const prev = allowStateChangesStart(false)\n        let res: T | CaughtException\n        if (track) {\n            res = trackDerivedFunction(this, this.derivation, this.scope_)\n        } else {\n            if (globalState.disableErrorBoundaries === true) {\n                res = this.derivation.call(this.scope_)\n            } else {\n                try {\n                    res = this.derivation.call(this.scope_)\n                } catch (e) {\n                    res = new CaughtException(e)\n                }\n            }\n        }\n        allowStateChangesEnd(prev)\n        this.isComputing = false\n        return res\n    }\n\n    suspend_() {\n        if (!this.keepAlive_) {\n            clearObserving(this)\n            this.value_ = undefined // don't hold on to computed value!\n            if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n                console.log(\n                    `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n                )\n            }\n        }\n    }\n\n    observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        let firstTime = true\n        let prevValue: T | undefined = undefined\n        return autorun(() => {\n            // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n            let newValue = this.get()\n            if (!firstTime || fireImmediately) {\n                const prevU = untrackedStart()\n                listener({\n                    observableKind: \"computed\",\n                    debugObjectName: this.name_,\n                    type: UPDATE,\n                    object: this,\n                    newValue,\n                    oldValue: prevValue\n                })\n                untrackedEnd(prevU)\n            }\n            firstTime = false\n            prevValue = newValue\n        })\n    }\n\n    warnAboutUntrackedRead_() {\n        if (!__DEV__) {\n            return\n        }\n        if (this.isTracing_ !== TraceMode.NONE) {\n            console.log(\n                `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n            )\n        }\n        if (\n            typeof this.requiresReaction_ === \"boolean\"\n                ? this.requiresReaction_\n                : globalState.computedRequiresReaction\n        ) {\n            console.warn(\n                `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n            )\n        }\n    }\n\n    toString() {\n        return `${this.name_}[${this.derivation.toString()}]`\n    }\n\n    valueOf(): T {\n        return toPrimitive(this.get())\n    }\n\n    [Symbol.toPrimitive]() {\n        return this.valueOf()\n    }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n    Lambda,\n    ComputedValue,\n    IDependencyTree,\n    IDerivation,\n    IDerivationState_,\n    TraceMode,\n    getDependencyTree,\n    globalState,\n    runReactions,\n    checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n    name_: string\n    observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n    diffValue: number\n    /**\n     * Id of the derivation *run* that last accessed this observable.\n     * If this id equals the *run* id of the current derivation,\n     * the dependency is already established\n     */\n    lastAccessedBy_: number\n    isBeingObserved: boolean\n\n    lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n    isPendingUnobservation: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n    observers_: Set<IDerivation>\n\n    onBUO(): void\n    onBO(): void\n\n    onBUOL: Set<Lambda> | undefined\n    onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n    return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n    return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n//     const list = observable.observers\n//     const map = observable.observersIndexes\n//     const l = list.length\n//     for (let i = 0; i < l; i++) {\n//         const id = list[i].__mapid\n//         if (i) {\n//             invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n//         } else {\n//             invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n//         }\n//     }\n//     invariant(\n//         list.length === 0 || Object.keys(map).length === list.length - 1,\n//         \"INTERNAL ERROR there is no junk in map\"\n//     )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n    // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n    // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n    // invariantObservers(observable);\n\n    observable.observers_.add(node)\n    if (observable.lowestObserverState_ > node.dependenciesState_) {\n        observable.lowestObserverState_ = node.dependenciesState_\n    }\n\n    // invariantObservers(observable);\n    // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n    // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n    // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n    // invariantObservers(observable);\n    observable.observers_.delete(node)\n    if (observable.observers_.size === 0) {\n        // deleting last observer\n        queueForUnobservation(observable)\n    }\n    // invariantObservers(observable);\n    // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n    if (observable.isPendingUnobservation === false) {\n        // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n        observable.isPendingUnobservation = true\n        globalState.pendingUnobservations.push(observable)\n    }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n    globalState.inBatch++\n}\n\nexport function endBatch() {\n    if (--globalState.inBatch === 0) {\n        runReactions()\n        // the batch is actually about to finish, all unobserving should happen here.\n        const list = globalState.pendingUnobservations\n        for (let i = 0; i < list.length; i++) {\n            const observable = list[i]\n            observable.isPendingUnobservation = false\n            if (observable.observers_.size === 0) {\n                if (observable.isBeingObserved) {\n                    // if this observable had reactive observers, trigger the hooks\n                    observable.isBeingObserved = false\n                    observable.onBUO()\n                }\n                if (observable instanceof ComputedValue) {\n                    // computed values are automatically teared down when the last observer leaves\n                    // this process happens recursively, this computed might be the last observabe of another, etc..\n                    observable.suspend_()\n                }\n            }\n        }\n        globalState.pendingUnobservations = []\n    }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n    checkIfStateReadsAreAllowed(observable)\n\n    const derivation = globalState.trackingDerivation\n    if (derivation !== null) {\n        /**\n         * Simple optimization, give each derivation run an unique id (runId)\n         * Check if last time this observable was accessed the same runId is used\n         * if this is the case, the relation is already known\n         */\n        if (derivation.runId_ !== observable.lastAccessedBy_) {\n            observable.lastAccessedBy_ = derivation.runId_\n            // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n            derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n            if (!observable.isBeingObserved && globalState.trackingContext) {\n                observable.isBeingObserved = true\n                observable.onBO()\n            }\n        }\n        return observable.isBeingObserved\n    } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n        queueForUnobservation(observable)\n    }\n\n    return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n//     // it's expensive so better not run it in produciton. but temporarily helpful for testing\n//     const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n//     if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n//     throw new Error(\n//         \"lowestObserverState is wrong for \" +\n//             msg +\n//             \" because \" +\n//             min +\n//             \" < \" +\n//             observable.lowestObserverState\n//     )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n    // invariantLOS(observable, \"changed start\");\n    if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.STALE_\n\n    // Ideally we use for..of here, but the downcompiled version is really slow...\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n            if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n                logTraceInfo(d, observable)\n            }\n            d.onBecomeStale_()\n        }\n        d.dependenciesState_ = IDerivationState_.STALE_\n    })\n    // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n    // invariantLOS(observable, \"confirmed start\");\n    if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.STALE_\n\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n            d.dependenciesState_ = IDerivationState_.STALE_\n            if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n                logTraceInfo(d, observable)\n            }\n        } else if (\n            d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n        ) {\n            observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n        }\n    })\n    // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n    // invariantLOS(observable, \"maybe start\");\n    if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n        return\n    }\n    observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n    observable.observers_.forEach(d => {\n        if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n            d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n            d.onBecomeStale_()\n        }\n    })\n    // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n    console.log(\n        `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n    )\n    if (derivation.isTracing_ === TraceMode.BREAK) {\n        const lines = []\n        printDepTree(getDependencyTree(derivation), lines, 1)\n\n        // prettier-ignore\n        new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n    `)()\n    }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n    if (lines.length >= 1000) {\n        lines.push(\"(and many more)\")\n        return\n    }\n    lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n    if (tree.dependencies) {\n        tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n    }\n}\n","import {\n    IAtom,\n    IDepTreeNode,\n    IObservable,\n    addObserver,\n    globalState,\n    isComputedValue,\n    removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n    // before being run or (outside batch and not being observed)\n    // at this point derivation is not holding any data about dependency tree\n    NOT_TRACKING_ = -1,\n    // no shallow dependency changed since last computation\n    // won't recalculate derivation\n    // this is what makes mobx fast\n    UP_TO_DATE_ = 0,\n    // some deep dependency changed, but don't know if shallow dependency changed\n    // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n    // currently only ComputedValue will propagate POSSIBLY_STALE\n    //\n    // having this state is second big optimization:\n    // don't have to recompute on every dependency change, but only when it's needed\n    POSSIBLY_STALE_ = 1,\n    // A shallow dependency has changed since last computation and the derivation\n    // will need to recompute when it's needed next.\n    STALE_ = 2\n}\n\nexport enum TraceMode {\n    NONE,\n    LOG,\n    BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n    observing_: IObservable[]\n    newObserving_: null | IObservable[]\n    dependenciesState_: IDerivationState_\n    /**\n     * Id of the current run of a derivation. Each time the derivation is tracked\n     * this number is increased by one. This number is globally unique\n     */\n    runId_: number\n    /**\n     * amount of dependencies used by the derivation in this run, which has not been bound yet.\n     */\n    unboundDepsCount_: number\n    onBecomeStale_(): void\n    isTracing_: TraceMode\n\n    /**\n     *  warn if the derivation has no dependencies after creation/update\n     */\n    requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n    constructor(public cause: any) {\n        // Empty\n    }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n    return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n    switch (derivation.dependenciesState_) {\n        case IDerivationState_.UP_TO_DATE_:\n            return false\n        case IDerivationState_.NOT_TRACKING_:\n        case IDerivationState_.STALE_:\n            return true\n        case IDerivationState_.POSSIBLY_STALE_: {\n            // state propagation can occur outside of action/reactive context #2195\n            const prevAllowStateReads = allowStateReadsStart(true)\n            const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n            const obs = derivation.observing_,\n                l = obs.length\n            for (let i = 0; i < l; i++) {\n                const obj = obs[i]\n                if (isComputedValue(obj)) {\n                    if (globalState.disableErrorBoundaries) {\n                        obj.get()\n                    } else {\n                        try {\n                            obj.get()\n                        } catch (e) {\n                            // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n                            untrackedEnd(prevUntracked)\n                            allowStateReadsEnd(prevAllowStateReads)\n                            return true\n                        }\n                    }\n                    // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n                    // and `derivation` is an observer of `obj`\n                    // invariantShouldCompute(derivation)\n                    if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n                        untrackedEnd(prevUntracked)\n                        allowStateReadsEnd(prevAllowStateReads)\n                        return true\n                    }\n                }\n            }\n            changeDependenciesStateTo0(derivation)\n            untrackedEnd(prevUntracked)\n            allowStateReadsEnd(prevAllowStateReads)\n            return false\n        }\n    }\n}\n\nexport function isComputingDerivation() {\n    return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n    if (!__DEV__) {\n        return\n    }\n    const hasObservers = atom.observers_.size > 0\n    // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n    if (\n        !globalState.allowStateChanges &&\n        (hasObservers || globalState.enforceActions === \"always\")\n    ) {\n        console.warn(\n            \"[MobX] \" +\n                (globalState.enforceActions\n                    ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n                    : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n                atom.name_\n        )\n    }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n    if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n        console.warn(\n            `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n        )\n    }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n    const prevAllowStateReads = allowStateReadsStart(true)\n    changeDependenciesStateTo0(derivation)\n    // Preallocate array; will be trimmed by bindDependencies.\n    derivation.newObserving_ = new Array(\n        // Reserve constant space for initial dependencies, dynamic space otherwise.\n        // See https://github.com/mobxjs/mobx/pull/3833\n        derivation.runId_ === 0 ? 100 : derivation.observing_.length\n    )\n    derivation.unboundDepsCount_ = 0\n    derivation.runId_ = ++globalState.runId\n    const prevTracking = globalState.trackingDerivation\n    globalState.trackingDerivation = derivation\n    globalState.inBatch++\n    let result\n    if (globalState.disableErrorBoundaries === true) {\n        result = f.call(context)\n    } else {\n        try {\n            result = f.call(context)\n        } catch (e) {\n            result = new CaughtException(e)\n        }\n    }\n    globalState.inBatch--\n    globalState.trackingDerivation = prevTracking\n    bindDependencies(derivation)\n\n    warnAboutDerivationWithoutDependencies(derivation)\n    allowStateReadsEnd(prevAllowStateReads)\n    return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n    if (!__DEV__) {\n        return\n    }\n\n    if (derivation.observing_.length !== 0) {\n        return\n    }\n\n    if (\n        typeof derivation.requiresObservable_ === \"boolean\"\n            ? derivation.requiresObservable_\n            : globalState.reactionRequiresObservable\n    ) {\n        console.warn(\n            `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n        )\n    }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n    // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n    const prevObserving = derivation.observing_\n    const observing = (derivation.observing_ = derivation.newObserving_!)\n    let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n    // Go through all new observables and check diffValue: (this list can contain duplicates):\n    //   0: first occurrence, change to 1 and keep it\n    //   1: extra occurrence, drop it\n    let i0 = 0,\n        l = derivation.unboundDepsCount_\n    for (let i = 0; i < l; i++) {\n        const dep = observing[i]\n        if (dep.diffValue === 0) {\n            dep.diffValue = 1\n            if (i0 !== i) {\n                observing[i0] = dep\n            }\n            i0++\n        }\n\n        // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n        // not hitting the condition\n        if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n            lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n        }\n    }\n    observing.length = i0\n\n    derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n    // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n    //   0: it's not in new observables, unobserve it\n    //   1: it keeps being observed, don't want to notify it. change to 0\n    l = prevObserving.length\n    while (l--) {\n        const dep = prevObserving[l]\n        if (dep.diffValue === 0) {\n            removeObserver(dep, derivation)\n        }\n        dep.diffValue = 0\n    }\n\n    // Go through all new observables and check diffValue: (now it should be unique)\n    //   0: it was set to 0 in last loop. don't need to do anything.\n    //   1: it wasn't observed, let's observe it. set back to 0\n    while (i0--) {\n        const dep = observing[i0]\n        if (dep.diffValue === 1) {\n            dep.diffValue = 0\n            addObserver(dep, derivation)\n        }\n    }\n\n    // Some new observed derivations may become stale during this derivation computation\n    // so they have had no chance to propagate staleness (#916)\n    if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n        derivation.dependenciesState_ = lowestNewObservingDerivationState\n        derivation.onBecomeStale_()\n    }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n    // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n    const obs = derivation.observing_\n    derivation.observing_ = []\n    let i = obs.length\n    while (i--) {\n        removeObserver(obs[i], derivation)\n    }\n\n    derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n    const prev = untrackedStart()\n    try {\n        return action()\n    } finally {\n        untrackedEnd(prev)\n    }\n}\n\nexport function untrackedStart(): IDerivation | null {\n    const prev = globalState.trackingDerivation\n    globalState.trackingDerivation = null\n    return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n    globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n    const prev = globalState.allowStateReads\n    globalState.allowStateReads = allowStateReads\n    return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n    globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n    if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n        return\n    }\n    derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n    const obs = derivation.observing_\n    let i = obs.length\n    while (i--) {\n        obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n    }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n    \"mobxGuid\",\n    \"spyListeners\",\n    \"enforceActions\",\n    \"computedRequiresReaction\",\n    \"reactionRequiresObservable\",\n    \"observableRequiresReaction\",\n    \"allowStateReads\",\n    \"disableErrorBoundaries\",\n    \"runId\",\n    \"UNCHANGED\",\n    \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n    /**\n     * MobXGlobals version.\n     * MobX compatiblity with other versions loaded in memory as long as this version matches.\n     * It indicates that the global state still stores similar information\n     *\n     * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n     * internal state storage of MobX, and can be the same across many different package versions\n     */\n    version = 6\n\n    /**\n     * globally unique token to signal unchanged\n     */\n    UNCHANGED: IUNCHANGED = {}\n\n    /**\n     * Currently running derivation\n     */\n    trackingDerivation: IDerivation | null = null\n\n    /**\n     * Currently running reaction. This determines if we currently have a reactive context.\n     * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n     * but trackingReaction can only be set by a form of Reaction)\n     */\n    trackingContext: Reaction | ComputedValue<any> | null = null\n\n    /**\n     * Each time a derivation is tracked, it is assigned a unique run-id\n     */\n    runId = 0\n\n    /**\n     * 'guid' for general purpose. Will be persisted amongst resets.\n     */\n    mobxGuid = 0\n\n    /**\n     * Are we in a batch block? (and how many of them)\n     */\n    inBatch: number = 0\n\n    /**\n     * Observables that don't have observers anymore, and are about to be\n     * suspended, unless somebody else accesses it in the same batch\n     *\n     * @type {IObservable[]}\n     */\n    pendingUnobservations: IObservable[] = []\n\n    /**\n     * List of scheduled, not yet executed, reactions.\n     */\n    pendingReactions: Reaction[] = []\n\n    /**\n     * Are we currently processing reactions?\n     */\n    isRunningReactions = false\n\n    /**\n     * Is it allowed to change observables at this point?\n     * In general, MobX doesn't allow that when running computations and React.render.\n     * To ensure that those functions stay pure.\n     */\n    allowStateChanges = false\n\n    /**\n     * Is it allowed to read observables at this point?\n     * Used to hold the state needed for `observableRequiresReaction`\n     */\n    allowStateReads = true\n\n    /**\n     * If strict mode is enabled, state changes are by default not allowed\n     */\n    enforceActions: boolean | \"always\" = true\n\n    /**\n     * Spy callbacks\n     */\n    spyListeners: { (change: any): void }[] = []\n\n    /**\n     * Globally attached error handlers that react specifically to errors in reactions\n     */\n    globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n    /**\n     * Warn if computed values are accessed outside a reactive context\n     */\n    computedRequiresReaction = false\n\n    /**\n     * (Experimental)\n     * Warn if you try to create to derivation / reactive context without accessing any observable.\n     */\n    reactionRequiresObservable = false\n\n    /**\n     * (Experimental)\n     * Warn if observables are accessed outside a reactive context\n     */\n    observableRequiresReaction = false\n\n    /*\n     * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n     * the stack when an exception occurs while debugging.\n     */\n    disableErrorBoundaries = false\n\n    /*\n     * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n     * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n     */\n    suppressReactionErrors = false\n\n    useProxies = true\n    /*\n     * print warnings about code that would fail if proxies weren't available\n     */\n    verifyProxies = false\n\n    /**\n     * False forces all object's descriptors to\n     * writable: true\n     * configurable: true\n     */\n    safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n    let global = getGlobal()\n    if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n        canMergeGlobalState = false\n    }\n    if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n        canMergeGlobalState = false\n    }\n\n    if (!canMergeGlobalState) {\n        // Because this is a IIFE we need to let isolateCalled a chance to change\n        // so we run it after the event loop completed at least 1 iteration\n        setTimeout(() => {\n            if (!isolateCalled) {\n                die(35)\n            }\n        }, 1)\n        return new MobXGlobals()\n    } else if (global.__mobxGlobals) {\n        global.__mobxInstanceCount += 1\n        if (!global.__mobxGlobals.UNCHANGED) {\n            global.__mobxGlobals.UNCHANGED = {}\n        } // make merge backward compatible\n        return global.__mobxGlobals\n    } else {\n        global.__mobxInstanceCount = 1\n        return (global.__mobxGlobals = new MobXGlobals())\n    }\n})()\n\nexport function isolateGlobalState() {\n    if (\n        globalState.pendingReactions.length ||\n        globalState.inBatch ||\n        globalState.isRunningReactions\n    ) {\n        die(36)\n    }\n    isolateCalled = true\n    if (canMergeGlobalState) {\n        let global = getGlobal()\n        if (--global.__mobxInstanceCount === 0) {\n            global.__mobxGlobals = undefined\n        }\n        globalState = new MobXGlobals()\n    }\n}\n\nexport function getGlobalState(): any {\n    return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n    const defaultGlobals = new MobXGlobals()\n    for (let key in defaultGlobals) {\n        if (persistentKeys.indexOf(key as any) === -1) {\n            globalState[key] = defaultGlobals[key]\n        }\n    }\n    globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n    $mobx,\n    IDerivation,\n    IDerivationState_,\n    IObservable,\n    Lambda,\n    TraceMode,\n    clearObserving,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    globalState,\n    isCaughtException,\n    isSpyEnabled,\n    shouldCompute,\n    spyReport,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    trace,\n    trackDerivedFunction,\n    GenericAbortSignal\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n    dispose(): void\n    trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n    (): void\n    [$mobx]: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n    observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n    newObserving_: IObservable[] = []\n    dependenciesState_ = IDerivationState_.NOT_TRACKING_\n    runId_ = 0\n    unboundDepsCount_ = 0\n\n    private static readonly isDisposedMask_ = 0b00001\n    private static readonly isScheduledMask_ = 0b00010\n    private static readonly isTrackPendingMask_ = 0b00100\n    private static readonly isRunningMask_ = 0b01000\n    private static readonly diffValueMask_ = 0b10000\n    private flags_ = 0b00000\n\n    isTracing_: TraceMode = TraceMode.NONE\n\n    constructor(\n        public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n        private onInvalidate_: () => void,\n        private errorHandler_?: (error: any, derivation: IDerivation) => void,\n        public requiresObservable_?\n    ) {}\n\n    get isDisposed() {\n        return getFlag(this.flags_, Reaction.isDisposedMask_)\n    }\n    set isDisposed(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isDisposedMask_, newValue)\n    }\n\n    get isScheduled() {\n        return getFlag(this.flags_, Reaction.isScheduledMask_)\n    }\n    set isScheduled(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isScheduledMask_, newValue)\n    }\n\n    get isTrackPending() {\n        return getFlag(this.flags_, Reaction.isTrackPendingMask_)\n    }\n    set isTrackPending(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isTrackPendingMask_, newValue)\n    }\n\n    get isRunning() {\n        return getFlag(this.flags_, Reaction.isRunningMask_)\n    }\n    set isRunning(newValue: boolean) {\n        this.flags_ = setFlag(this.flags_, Reaction.isRunningMask_, newValue)\n    }\n\n    get diffValue(): 0 | 1 {\n        return getFlag(this.flags_, Reaction.diffValueMask_) ? 1 : 0\n    }\n    set diffValue(newValue: 0 | 1) {\n        this.flags_ = setFlag(this.flags_, Reaction.diffValueMask_, newValue === 1 ? true : false)\n    }\n\n    onBecomeStale_() {\n        this.schedule_()\n    }\n\n    schedule_() {\n        if (!this.isScheduled) {\n            this.isScheduled = true\n            globalState.pendingReactions.push(this)\n            runReactions()\n        }\n    }\n\n    /**\n     * internal, use schedule() if you intend to kick off a reaction\n     */\n    runReaction_() {\n        if (!this.isDisposed) {\n            startBatch()\n            this.isScheduled = false\n            const prev = globalState.trackingContext\n            globalState.trackingContext = this\n            if (shouldCompute(this)) {\n                this.isTrackPending = true\n\n                try {\n                    this.onInvalidate_()\n                    if (__DEV__ && this.isTrackPending && isSpyEnabled()) {\n                        // onInvalidate didn't trigger track right away..\n                        spyReport({\n                            name: this.name_,\n                            type: \"scheduled-reaction\"\n                        })\n                    }\n                } catch (e) {\n                    this.reportExceptionInDerivation_(e)\n                }\n            }\n            globalState.trackingContext = prev\n            endBatch()\n        }\n    }\n\n    track(fn: () => void) {\n        if (this.isDisposed) {\n            return\n            // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n        }\n        startBatch()\n        const notify = isSpyEnabled()\n        let startTime\n        if (__DEV__ && notify) {\n            startTime = Date.now()\n            spyReportStart({\n                name: this.name_,\n                type: \"reaction\"\n            })\n        }\n        this.isRunning = true\n        const prevReaction = globalState.trackingContext // reactions could create reactions...\n        globalState.trackingContext = this\n        const result = trackDerivedFunction(this, fn, undefined)\n        globalState.trackingContext = prevReaction\n        this.isRunning = false\n        this.isTrackPending = false\n        if (this.isDisposed) {\n            // disposed during last run. Clean up everything that was bound after the dispose call.\n            clearObserving(this)\n        }\n        if (isCaughtException(result)) {\n            this.reportExceptionInDerivation_(result.cause)\n        }\n        if (__DEV__ && notify) {\n            spyReportEnd({\n                time: Date.now() - startTime\n            })\n        }\n        endBatch()\n    }\n\n    reportExceptionInDerivation_(error: any) {\n        if (this.errorHandler_) {\n            this.errorHandler_(error, this)\n            return\n        }\n\n        if (globalState.disableErrorBoundaries) {\n            throw error\n        }\n\n        const message = __DEV__\n            ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n            : `[mobx] uncaught error in '${this}'`\n        if (!globalState.suppressReactionErrors) {\n            console.error(message, error)\n            /** If debugging brought you here, please, read the above message :-). Tnx! */\n        } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n        if (__DEV__ && isSpyEnabled()) {\n            spyReport({\n                type: \"error\",\n                name: this.name_,\n                message,\n                error: \"\" + error\n            })\n        }\n\n        globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n    }\n\n    dispose() {\n        if (!this.isDisposed) {\n            this.isDisposed = true\n            if (!this.isRunning) {\n                // if disposed while running, clean up later. Maybe not optimal, but rare case\n                startBatch()\n                clearObserving(this)\n                endBatch()\n            }\n        }\n    }\n\n    getDisposer_(abortSignal?: GenericAbortSignal): IReactionDisposer {\n        const dispose = (() => {\n            this.dispose()\n            abortSignal?.removeEventListener?.(\"abort\", dispose)\n        }) as IReactionDisposer\n        abortSignal?.addEventListener?.(\"abort\", dispose)\n        dispose[$mobx] = this\n\n        return dispose\n    }\n\n    toString() {\n        return `Reaction[${this.name_}]`\n    }\n\n    trace(enterBreakPoint: boolean = false) {\n        trace(this, enterBreakPoint)\n    }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n    globalState.globalReactionErrorHandlers.push(handler)\n    return () => {\n        const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n        if (idx >= 0) {\n            globalState.globalReactionErrorHandlers.splice(idx, 1)\n        }\n    }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n    // Trampolining, if runReactions are already running, new reactions will be picked up\n    if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n        return\n    }\n    reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n    globalState.isRunningReactions = true\n    const allReactions = globalState.pendingReactions\n    let iterations = 0\n\n    // While running reactions, new reactions might be triggered.\n    // Hence we work with two variables and check whether\n    // we converge to no remaining reactions after a while.\n    while (allReactions.length > 0) {\n        if (++iterations === MAX_REACTION_ITERATIONS) {\n            console.error(\n                __DEV__\n                    ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n                          ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n                    : `[mobx] cycle in reaction: ${allReactions[0]}`\n            )\n            allReactions.splice(0) // clear reactions\n        }\n        let remainingReactions = allReactions.splice(0)\n        for (let i = 0, l = remainingReactions.length; i < l; i++) {\n            remainingReactions[i].runReaction_()\n        }\n    }\n    globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n    const baseScheduler = reactionScheduler\n    reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n    return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n    | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n    | { type: \"scheduled-reaction\"; name: string }\n    | { type: \"reaction\"; name: string }\n    | { type: \"error\"; name: string; message: string; error: string }\n    | IComputedDidChange<unknown>\n    | IObjectDidChange<unknown>\n    | IArrayDidChange<unknown>\n    | IMapDidChange<unknown, unknown>\n    | ISetDidChange<unknown>\n    | IValueDidChange<unknown>\n    | IBoxDidChange<unknown>\n    | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n    if (!__DEV__) {\n        return\n    } // dead code elimination can do the rest\n    if (!globalState.spyListeners.length) {\n        return\n    }\n    const listeners = globalState.spyListeners\n    for (let i = 0, l = listeners.length; i < l; i++) {\n        listeners[i](event)\n    }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n    if (!__DEV__) {\n        return\n    }\n    const change = { ...event, spyReportStart: true as const }\n    spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n    if (!__DEV__) {\n        return\n    }\n    if (change) {\n        spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n    } else {\n        spyReport(END_EVENT)\n    }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n    if (!__DEV__) {\n        console.warn(`[mobx.spy] Is a no-op in production builds`)\n        return function () {}\n    } else {\n        globalState.spyListeners.push(listener)\n        return once(() => {\n            globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n        })\n    }\n}\n","import {\n    createAction,\n    executeAction,\n    Annotation,\n    storeAnnotation,\n    die,\n    isFunction,\n    isStringish,\n    createDecoratorAnnotation,\n    createActionAnnotation,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassFieldDecorator, ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n    bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n    autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n    autoAction: true,\n    bound: true\n})\n\nexport interface IActionFactory\n    extends Annotation,\n        PropertyDecorator,\n        ClassMethodDecorator,\n        ClassFieldDecorator {\n    // nameless actions\n    <T extends Function | undefined | null>(fn: T): T\n    // named actions\n    <T extends Function | undefined | null>(name: string, fn: T): T\n\n    // named decorator\n    (customName: string): PropertyDecorator &\n        Annotation &\n        ClassMethodDecorator &\n        ClassFieldDecorator\n\n    // decorator (name no longer supported)\n    bound: Annotation & PropertyDecorator & ClassMethodDecorator & ClassFieldDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n    const res: IActionFactory = function action(arg1, arg2?): any {\n        // action(fn() {})\n        if (isFunction(arg1)) {\n            return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n        }\n        // action(\"name\", fn() {})\n        if (isFunction(arg2)) {\n            return createAction(arg1, arg2, autoAction)\n        }\n        // @action (2022.3 Decorators)\n        if (is20223Decorator(arg2)) {\n            return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(\n                arg1,\n                arg2\n            )\n        }\n        // @action\n        if (isStringish(arg2)) {\n            return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n        }\n        // action(\"name\") & @action(\"name\")\n        if (isStringish(arg1)) {\n            return createDecoratorAnnotation(\n                createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n                    name: arg1,\n                    autoAction\n                })\n            )\n        }\n\n        if (__DEV__) {\n            die(\"Invalid arguments for `action`\")\n        }\n    } as IActionFactory\n    return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n    return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n    return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n    EMPTY_OBJECT,\n    IEqualsComparer,\n    IReactionDisposer,\n    IReactionPublic,\n    Lambda,\n    Reaction,\n    action,\n    comparer,\n    getNextId,\n    isAction,\n    isFunction,\n    isPlainObject,\n    die,\n    allowStateChanges,\n    GenericAbortSignal\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n    delay?: number\n    name?: string\n    /**\n     * Experimental.\n     * Warns if the view doesn't track observables\n     */\n    requiresObservable?: boolean\n    scheduler?: (callback: () => void) => any\n    onError?: (error: any) => void\n    signal?: GenericAbortSignal\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n    view: (r: IReactionPublic) => any,\n    opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n    if (__DEV__) {\n        if (!isFunction(view)) {\n            die(\"Autorun expects a function as first argument\")\n        }\n        if (isAction(view)) {\n            die(\"Autorun does not accept actions since actions are untrackable\")\n        }\n    }\n\n    const name: string =\n        opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n    const runSync = !opts.scheduler && !opts.delay\n    let reaction: Reaction\n\n    if (runSync) {\n        // normal autorun\n        reaction = new Reaction(\n            name,\n            function (this: Reaction) {\n                this.track(reactionRunner)\n            },\n            opts.onError,\n            opts.requiresObservable\n        )\n    } else {\n        const scheduler = createSchedulerFromOptions(opts)\n        // debounced autorun\n        let isScheduled = false\n\n        reaction = new Reaction(\n            name,\n            () => {\n                if (!isScheduled) {\n                    isScheduled = true\n                    scheduler(() => {\n                        isScheduled = false\n                        if (!reaction.isDisposed) {\n                            reaction.track(reactionRunner)\n                        }\n                    })\n                }\n            },\n            opts.onError,\n            opts.requiresObservable\n        )\n    }\n\n    function reactionRunner() {\n        view(reaction)\n    }\n\n    if (!opts?.signal?.aborted) {\n        reaction.schedule_()\n    }\n    return reaction.getDisposer_(opts?.signal)\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n    fireImmediately?: FireImmediately\n    equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n    return opts.scheduler\n        ? opts.scheduler\n        : opts.delay\n        ? (f: Lambda) => setTimeout(f, opts.delay!)\n        : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n    expression: (r: IReactionPublic) => T,\n    effect: (\n        arg: T,\n        prev: FireImmediately extends true ? T | undefined : T,\n        r: IReactionPublic\n    ) => void,\n    opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n    if (__DEV__) {\n        if (!isFunction(expression) || !isFunction(effect)) {\n            die(\"First and second argument to reaction should be functions\")\n        }\n        if (!isPlainObject(opts)) {\n            die(\"Third argument of reactions should be an object\")\n        }\n    }\n    const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n    const effectAction = action(\n        name,\n        opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n    )\n    const runSync = !opts.scheduler && !opts.delay\n    const scheduler = createSchedulerFromOptions(opts)\n\n    let firstTime = true\n    let isScheduled = false\n    let value: T\n\n    const equals: IEqualsComparer<T> = (opts as any).compareStructural\n        ? comparer.structural\n        : opts.equals || comparer.default\n\n    const r = new Reaction(\n        name,\n        () => {\n            if (firstTime || runSync) {\n                reactionRunner()\n            } else if (!isScheduled) {\n                isScheduled = true\n                scheduler!(reactionRunner)\n            }\n        },\n        opts.onError,\n        opts.requiresObservable\n    )\n\n    function reactionRunner() {\n        isScheduled = false\n        if (r.isDisposed) {\n            return\n        }\n        let changed: boolean = false\n        const oldValue = value\n        r.track(() => {\n            const nextValue = allowStateChanges(false, () => expression(r))\n            changed = firstTime || !equals(value, nextValue)\n            value = nextValue\n        })\n\n        // This casting is nesessary as TS cannot infer proper type in current function implementation\n        type OldValue = FireImmediately extends true ? T | undefined : T\n        if (firstTime && opts.fireImmediately!) {\n            effectAction(value, oldValue as OldValue, r)\n        } else if (!firstTime && changed) {\n            effectAction(value, oldValue as OldValue, r)\n        }\n        firstTime = false\n    }\n\n    if (!opts?.signal?.aborted) {\n        r.schedule_()\n    }\n    return r.getDisposer_(opts?.signal)\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n    return function () {\n        try {\n            return baseFn.apply(this, arguments)\n        } catch (e) {\n            errorHandler.call(this, e)\n        }\n    }\n}\n","import {\n    IComputedValue,\n    IObservable,\n    IObservableArray,\n    Lambda,\n    ObservableMap,\n    getAtom,\n    ObservableSet,\n    isFunction,\n    IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n    value:\n        | IObservable\n        | IComputedValue<any>\n        | IObservableArray<any>\n        | ObservableMap<any, any>\n        | ObservableSet<any>\n        | IObservableValue<any>,\n    listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n    value: ObservableMap<K, V> | Object,\n    property: K,\n    listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n    return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n    value:\n        | IObservable\n        | IComputedValue<any>\n        | IObservableArray<any>\n        | ObservableMap<any, any>\n        | ObservableSet<any>\n        | IObservableValue<any>,\n    listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n    value: ObservableMap<K, V> | Object,\n    property: K,\n    listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n    return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n    const atom: IObservable =\n        typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n    const cb = isFunction(arg3) ? arg3 : arg2\n    const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n    if (atom[listenersKey]) {\n        atom[listenersKey]!.add(cb)\n    } else {\n        atom[listenersKey] = new Set<Lambda>([cb])\n    }\n\n    return function () {\n        const hookListeners = atom[listenersKey]\n        if (hookListeners) {\n            hookListeners.delete(cb)\n            if (hookListeners.size === 0) {\n                delete atom[listenersKey]\n            }\n        }\n    }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n    enforceActions?: \"never\" | \"always\" | \"observed\"\n    computedRequiresReaction?: boolean\n    /**\n     * Warn if you try to create to derivation / reactive context without accessing any observable.\n     */\n    reactionRequiresObservable?: boolean\n    /**\n     * Warn if observables are accessed outside a reactive context\n     */\n    observableRequiresReaction?: boolean\n    isolateGlobalState?: boolean\n    disableErrorBoundaries?: boolean\n    safeDescriptors?: boolean\n    reactionScheduler?: (f: () => void) => void\n    useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n    if (options.isolateGlobalState === true) {\n        isolateGlobalState()\n    }\n    const { useProxies, enforceActions } = options\n    if (useProxies !== undefined) {\n        globalState.useProxies =\n            useProxies === ALWAYS\n                ? true\n                : useProxies === NEVER\n                ? false\n                : typeof Proxy !== \"undefined\"\n    }\n    if (useProxies === \"ifavailable\") {\n        globalState.verifyProxies = true\n    }\n    if (enforceActions !== undefined) {\n        const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n        globalState.enforceActions = ea\n        globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n    }\n    ;[\n        \"computedRequiresReaction\",\n        \"reactionRequiresObservable\",\n        \"observableRequiresReaction\",\n        \"disableErrorBoundaries\",\n        \"safeDescriptors\"\n    ].forEach(key => {\n        if (key in options) {\n            globalState[key] = !!options[key]\n        }\n    })\n    globalState.allowStateReads = !globalState.observableRequiresReaction\n    if (__DEV__ && globalState.disableErrorBoundaries === true) {\n        console.warn(\n            \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n        )\n    }\n    if (options.reactionScheduler) {\n        setReactionScheduler(options.reactionScheduler)\n    }\n}\n","import {\n    CreateObservableOptions,\n    isObservableMap,\n    AnnotationsMap,\n    asObservableObject,\n    isPlainObject,\n    ObservableObjectAdministration,\n    isObservable,\n    die,\n    getOwnPropertyDescriptors,\n    $mobx,\n    ownKeys,\n    initObservable\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n    target: A,\n    properties: B,\n    annotations?: AnnotationsMap<B, never>,\n    options?: CreateObservableOptions\n): A & B {\n    if (__DEV__) {\n        if (arguments.length > 4) {\n            die(\"'extendObservable' expected 2-4 arguments\")\n        }\n        if (typeof target !== \"object\") {\n            die(\"'extendObservable' expects an object as first argument\")\n        }\n        if (isObservableMap(target)) {\n            die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n        }\n        if (!isPlainObject(properties)) {\n            die(`'extendObservable' only accepts plain objects as second argument`)\n        }\n        if (isObservable(properties) || isObservable(annotations)) {\n            die(`Extending an object with another observable (object) is not supported`)\n        }\n    }\n    // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n    const descriptors = getOwnPropertyDescriptors(properties)\n\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n        ownKeys(descriptors).forEach(key => {\n            adm.extend_(\n                key,\n                descriptors[key as any],\n                // must pass \"undefined\" for { key: undefined }\n                !annotations ? true : key in annotations ? annotations[key] : true\n            )\n        })\n    })\n\n    return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n    name: string\n    dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n    name: string\n    observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n    return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n    const result: IDependencyTree = {\n        name: node.name_\n    }\n    if (node.observing_ && node.observing_.length > 0) {\n        result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n    }\n    return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n    return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n    const result: IObserverTree = {\n        name: node.name_\n    }\n    if (hasObservers(node as any)) {\n        result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n    }\n    return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n    return Array.from(new Set(list))\n}\n","import {\n    action,\n    noop,\n    die,\n    isFunction,\n    Annotation,\n    isStringish,\n    storeAnnotation,\n    createFlowAnnotation,\n    createDecoratorAnnotation,\n    is20223Decorator\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n    this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n    return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator, ClassMethodDecorator {\n    <R, Args extends any[]>(\n        generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n    ): (...args: Args) => CancellablePromise<R>\n    bound: Annotation & PropertyDecorator & ClassMethodDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n    function flow(arg1, arg2?) {\n        // @flow (2022.3 Decorators)\n        if (is20223Decorator(arg2)) {\n            return flowAnnotation.decorate_20223_(arg1, arg2)\n        }\n        // @flow\n        if (isStringish(arg2)) {\n            return storeAnnotation(arg1, arg2, flowAnnotation)\n        }\n        // flow(fn)\n        if (__DEV__ && arguments.length !== 1) {\n            die(`Flow expects single argument with generator function`)\n        }\n        const generator = arg1\n        const name = generator.name || \"<unnamed flow>\"\n\n        // Implementation based on https://github.com/tj/co/blob/master/index.js\n        const res = function () {\n            const ctx = this\n            const args = arguments\n            const runId = ++generatorId\n            const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n            let rejector: (error: any) => void\n            let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n            const promise = new Promise(function (resolve, reject) {\n                let stepId = 0\n                rejector = reject\n\n                function onFulfilled(res: any) {\n                    pendingPromise = undefined\n                    let ret\n                    try {\n                        ret = action(\n                            `${name} - runid: ${runId} - yield ${stepId++}`,\n                            gen.next\n                        ).call(gen, res)\n                    } catch (e) {\n                        return reject(e)\n                    }\n\n                    next(ret)\n                }\n\n                function onRejected(err: any) {\n                    pendingPromise = undefined\n                    let ret\n                    try {\n                        ret = action(\n                            `${name} - runid: ${runId} - yield ${stepId++}`,\n                            gen.throw!\n                        ).call(gen, err)\n                    } catch (e) {\n                        return reject(e)\n                    }\n                    next(ret)\n                }\n\n                function next(ret: any) {\n                    if (isFunction(ret?.then)) {\n                        // an async iterator\n                        ret.then(next, reject)\n                        return\n                    }\n                    if (ret.done) {\n                        return resolve(ret.value)\n                    }\n                    pendingPromise = Promise.resolve(ret.value) as any\n                    return pendingPromise!.then(onFulfilled, onRejected)\n                }\n\n                onFulfilled(undefined) // kick off the process\n            }) as any\n\n            promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n                try {\n                    if (pendingPromise) {\n                        cancelPromise(pendingPromise)\n                    }\n                    // Finally block can return (or yield) stuff..\n                    const res = gen.return!(undefined as any)\n                    // eat anything that promise would do, it's cancelled!\n                    const yieldedPromise = Promise.resolve(res.value)\n                    yieldedPromise.then(noop, noop)\n                    cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n                    // reject our original promise\n                    rejector(new FlowCancellationError())\n                } catch (e) {\n                    rejector(e) // there could be a throwing finally block\n                }\n            })\n            return promise\n        }\n        res.isMobXFlow = true\n        return res\n    } as any,\n    flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n    if (isFunction(promise.cancel)) {\n        promise.cancel()\n    }\n}\n\nexport function flowResult<T>(\n    result: T\n): T extends Generator<any, infer R, any>\n    ? CancellablePromise<R>\n    : T extends CancellablePromise<any>\n    ? T\n    : never {\n    return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n    return fn?.isMobXFlow === true\n}\n","import {\n    IObservableArray,\n    IObservableValue,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isObservableValue,\n    ObservableSet,\n    die,\n    isStringish\n} from \"../internal\"\n\nexport type ReadInterceptor<T> = (value: any) => T\n\n/** Experimental feature right now, tested indirectly via Mobx-State-Tree */\nexport function interceptReads<T>(value: IObservableValue<T>, handler: ReadInterceptor<T>): Lambda\nexport function interceptReads<T>(\n    observableArray: IObservableArray<T>,\n    handler: ReadInterceptor<T>\n): Lambda\nexport function interceptReads<K, V>(\n    observableMap: ObservableMap<K, V>,\n    handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads<V>(\n    observableSet: ObservableSet<V>,\n    handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads(\n    object: Object,\n    property: string,\n    handler: ReadInterceptor<any>\n): Lambda\nexport function interceptReads(thing, propOrHandler?, handler?): Lambda {\n    let target\n    if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n        target = getAdministration(thing)\n    } else if (isObservableObject(thing)) {\n        if (__DEV__ && !isStringish(propOrHandler)) {\n            return die(\n                `InterceptReads can only be used with a specific property, not with an object in general`\n            )\n        }\n        target = getAdministration(thing, propOrHandler)\n    } else if (__DEV__) {\n        return die(`Expected observable map, object or array as first array`)\n    }\n    if (__DEV__ && target.dehancer !== undefined) {\n        return die(`An intercept reader was already established`)\n    }\n    target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler\n    return () => {\n        target.dehancer = undefined\n    }\n}\n","import {\n    IArrayWillChange,\n    IArrayWillSplice,\n    IInterceptor,\n    IMapWillChange,\n    IObjectWillChange,\n    IObservableArray,\n    IObservableValue,\n    IValueWillChange,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    ObservableSet,\n    ISetWillChange,\n    isFunction\n} from \"../internal\"\n\nexport function intercept<T>(\n    value: IObservableValue<T>,\n    handler: IInterceptor<IValueWillChange<T>>\n): Lambda\nexport function intercept<T>(\n    observableArray: IObservableArray<T> | Array<T>,\n    handler: IInterceptor<IArrayWillChange<T> | IArrayWillSplice<T>>\n): Lambda\nexport function intercept<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    handler: IInterceptor<IMapWillChange<K, V>>\n): Lambda\nexport function intercept<V>(\n    observableSet: ObservableSet<V> | Set<V>,\n    handler: IInterceptor<ISetWillChange<V>>\n): Lambda\nexport function intercept<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    property: K,\n    handler: IInterceptor<IValueWillChange<V>>\n): Lambda\nexport function intercept(object: object, handler: IInterceptor<IObjectWillChange>): Lambda\nexport function intercept<T extends object, K extends keyof T>(\n    object: T,\n    property: K,\n    handler: IInterceptor<IValueWillChange<T[K]>>\n): Lambda\nexport function intercept(thing, propOrHandler?, handler?): Lambda {\n    if (isFunction(handler)) {\n        return interceptProperty(thing, propOrHandler, handler)\n    } else {\n        return interceptInterceptable(thing, propOrHandler)\n    }\n}\n\nfunction interceptInterceptable(thing, handler) {\n    return getAdministration(thing).intercept_(handler)\n}\n\nfunction interceptProperty(thing, property, handler) {\n    return getAdministration(thing, property).intercept_(handler)\n}\n","import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n    if (property === undefined) {\n        return isComputedValue(value)\n    }\n    if (isObservableObject(value) === false) {\n        return false\n    }\n    if (!value[$mobx].values_.has(property)) {\n        return false\n    }\n    const atom = getAtom(value, property)\n    return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n    if (__DEV__ && arguments.length > 1) {\n        return die(\n            `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n        )\n    }\n    return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n    if (__DEV__ && !isStringish(propName)) {\n        return die(`isComputed expected a property name as second argument`)\n    }\n    return _isComputed(value, propName)\n}\n","import {\n    $mobx,\n    isAtom,\n    isComputedValue,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isReaction,\n    die,\n    isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n    if (!value) {\n        return false\n    }\n    if (property !== undefined) {\n        if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n            return die(\n                \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n            )\n        }\n        if (isObservableObject(value)) {\n            return value[$mobx].values_.has(property)\n        }\n        return false\n    }\n    // For first check, see #701\n    return (\n        isObservableObject(value) ||\n        !!value[$mobx] ||\n        isAtom(value) ||\n        isReaction(value) ||\n        isComputedValue(value)\n    )\n}\n\nexport function isObservable(value: any): boolean {\n    if (__DEV__ && arguments.length !== 1) {\n        die(\n            `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n        )\n    }\n    return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n    if (__DEV__ && !isStringish(propName)) {\n        return die(`expected a property name as second argument`)\n    }\n    return _isObservable(value, propName)\n}\n","import {\n    $mobx,\n    IIsObservableObject,\n    IObservableArray,\n    ObservableMap,\n    ObservableSet,\n    ObservableObjectAdministration,\n    endBatch,\n    isObservableArray,\n    isObservableMap,\n    isObservableSet,\n    isObservableObject,\n    startBatch,\n    die\n} from \"../internal\"\n\nexport function keys<K>(map: ObservableMap<K, any>): ReadonlyArray<K>\nexport function keys<T>(ar: IObservableArray<T>): ReadonlyArray<number>\nexport function keys<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function keys<T extends Object>(obj: T): ReadonlyArray<PropertyKey>\nexport function keys(obj: any): any {\n    if (isObservableObject(obj)) {\n        return (\n            (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n        ).keys_()\n    }\n    if (isObservableMap(obj) || isObservableSet(obj)) {\n        return Array.from(obj.keys())\n    }\n    if (isObservableArray(obj)) {\n        return obj.map((_, index) => index)\n    }\n    die(5)\n}\n\nexport function values<K, T>(map: ObservableMap<K, T>): ReadonlyArray<T>\nexport function values<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function values<T>(ar: IObservableArray<T>): ReadonlyArray<T>\nexport function values<T = any>(obj: T): ReadonlyArray<T extends object ? T[keyof T] : any>\nexport function values(obj: any): string[] {\n    if (isObservableObject(obj)) {\n        return keys(obj).map(key => obj[key])\n    }\n    if (isObservableMap(obj)) {\n        return keys(obj).map(key => obj.get(key))\n    }\n    if (isObservableSet(obj)) {\n        return Array.from(obj.values())\n    }\n    if (isObservableArray(obj)) {\n        return obj.slice()\n    }\n    die(6)\n}\n\nexport function entries<K, T>(map: ObservableMap<K, T>): ReadonlyArray<[K, T]>\nexport function entries<T>(set: ObservableSet<T>): ReadonlyArray<[T, T]>\nexport function entries<T>(ar: IObservableArray<T>): ReadonlyArray<[number, T]>\nexport function entries<T = any>(\n    obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n    if (isObservableObject(obj)) {\n        return keys(obj).map(key => [key, obj[key]])\n    }\n    if (isObservableMap(obj)) {\n        return keys(obj).map(key => [key, obj.get(key)])\n    }\n    if (isObservableSet(obj)) {\n        return Array.from(obj.entries())\n    }\n    if (isObservableArray(obj)) {\n        return obj.map((key, index) => [index, key])\n    }\n    die(7)\n}\n\nexport function set<V>(obj: ObservableMap<PropertyKey, V>, values: { [key: string]: V })\nexport function set<K, V>(obj: ObservableMap<K, V>, key: K, value: V)\nexport function set<T>(obj: ObservableSet<T>, value: T)\nexport function set<T>(obj: IObservableArray<T>, index: number, value: T)\nexport function set<T extends Object>(obj: T, values: { [key: string]: any })\nexport function set<T extends Object>(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n    if (arguments.length === 2 && !isObservableSet(obj)) {\n        startBatch()\n        const values = key\n        try {\n            for (let key in values) {\n                set(obj, key, values[key])\n            }\n        } finally {\n            endBatch()\n        }\n        return\n    }\n    if (isObservableObject(obj)) {\n        ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n    } else if (isObservableMap(obj)) {\n        obj.set(key, value)\n    } else if (isObservableSet(obj)) {\n        obj.add(key)\n    } else if (isObservableArray(obj)) {\n        if (typeof key !== \"number\") {\n            key = parseInt(key, 10)\n        }\n        if (key < 0) {\n            die(`Invalid index: '${key}'`)\n        }\n        startBatch()\n        if (key >= obj.length) {\n            obj.length = key + 1\n        }\n        obj[key] = value\n        endBatch()\n    } else {\n        die(8)\n    }\n}\n\nexport function remove<K, V>(obj: ObservableMap<K, V>, key: K)\nexport function remove<T>(obj: ObservableSet<T>, key: T)\nexport function remove<T>(obj: IObservableArray<T>, index: number)\nexport function remove<T extends Object>(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n    if (isObservableObject(obj)) {\n        ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n    } else if (isObservableMap(obj)) {\n        obj.delete(key)\n    } else if (isObservableSet(obj)) {\n        obj.delete(key)\n    } else if (isObservableArray(obj)) {\n        if (typeof key !== \"number\") {\n            key = parseInt(key, 10)\n        }\n        obj.splice(key, 1)\n    } else {\n        die(9)\n    }\n}\n\nexport function has<K>(obj: ObservableMap<K, any>, key: K): boolean\nexport function has<T>(obj: ObservableSet<T>, key: T): boolean\nexport function has<T>(obj: IObservableArray<T>, index: number): boolean\nexport function has<T extends Object>(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].has_(key)\n    } else if (isObservableMap(obj)) {\n        return obj.has(key)\n    } else if (isObservableSet(obj)) {\n        return obj.has(key)\n    } else if (isObservableArray(obj)) {\n        return key >= 0 && key < obj.length\n    }\n    die(10)\n}\n\nexport function get<K, V>(obj: ObservableMap<K, V>, key: K): V | undefined\nexport function get<T>(obj: IObservableArray<T>, index: number): T | undefined\nexport function get<T extends Object>(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n    if (!has(obj, key)) {\n        return undefined\n    }\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].get_(key)\n    } else if (isObservableMap(obj)) {\n        return obj.get(key)\n    } else if (isObservableArray(obj)) {\n        return obj[key]\n    }\n    die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n    }\n    die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n    if (isObservableObject(obj)) {\n        return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n    }\n    die(38)\n}\n","import {\n    IArrayDidChange,\n    IComputedValue,\n    IMapDidChange,\n    IObjectDidChange,\n    IObservableArray,\n    IObservableValue,\n    IValueDidChange,\n    Lambda,\n    ObservableMap,\n    getAdministration,\n    ObservableSet,\n    ISetDidChange,\n    isFunction\n} from \"../internal\"\n\nexport function observe<T>(\n    value: IObservableValue<T> | IComputedValue<T>,\n    listener: (change: IValueDidChange<T>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<T>(\n    observableArray: IObservableArray<T> | Array<T>,\n    listener: (change: IArrayDidChange<T>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<V>(\n    // ObservableSet/ObservableMap are required despite they implement Set/Map: https://github.com/mobxjs/mobx/pull/3180#discussion_r746542929\n    observableSet: ObservableSet<V> | Set<V>,\n    listener: (change: ISetDidChange<V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    listener: (change: IMapDidChange<K, V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n    observableMap: ObservableMap<K, V> | Map<K, V>,\n    property: K,\n    listener: (change: IValueDidChange<V>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe(\n    object: Object,\n    listener: (change: IObjectDidChange) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe<T, K extends keyof T>(\n    object: T,\n    property: K,\n    listener: (change: IValueDidChange<T[K]>) => void,\n    fireImmediately?: boolean\n): Lambda\nexport function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {\n    if (isFunction(cbOrFire)) {\n        return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)\n    } else {\n        return observeObservable(thing, propOrCb, cbOrFire)\n    }\n}\n\nfunction observeObservable(thing, listener, fireImmediately: boolean) {\n    return getAdministration(thing).observe_(listener, fireImmediately)\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately: boolean) {\n    return getAdministration(thing, property).observe_(listener, fireImmediately)\n}\n","import {\n    isObservable,\n    isObservableArray,\n    isObservableValue,\n    isObservableMap,\n    isObservableSet,\n    isComputedValue,\n    die,\n    apiOwnKeys,\n    objectPrototype\n} from \"../internal\"\n\nfunction cache<K, V>(map: Map<any, any>, key: K, value: V): V {\n    map.set(key, value)\n    return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map<any, any>) {\n    if (\n        source == null ||\n        typeof source !== \"object\" ||\n        source instanceof Date ||\n        !isObservable(source)\n    ) {\n        return source\n    }\n\n    if (isObservableValue(source) || isComputedValue(source)) {\n        return toJSHelper(source.get(), __alreadySeen)\n    }\n    if (__alreadySeen.has(source)) {\n        return __alreadySeen.get(source)\n    }\n    if (isObservableArray(source)) {\n        const res = cache(__alreadySeen, source, new Array(source.length))\n        source.forEach((value, idx) => {\n            res[idx] = toJSHelper(value, __alreadySeen)\n        })\n        return res\n    }\n    if (isObservableSet(source)) {\n        const res = cache(__alreadySeen, source, new Set())\n        source.forEach(value => {\n            res.add(toJSHelper(value, __alreadySeen))\n        })\n        return res\n    }\n    if (isObservableMap(source)) {\n        const res = cache(__alreadySeen, source, new Map())\n        source.forEach((value, key) => {\n            res.set(key, toJSHelper(value, __alreadySeen))\n        })\n        return res\n    } else {\n        // must be observable object\n        const res = cache(__alreadySeen, source, {})\n        apiOwnKeys(source).forEach((key: any) => {\n            if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n                res[key] = toJSHelper(source[key], __alreadySeen)\n            }\n        })\n        return res\n    }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS<T>(source: T, options?: any): T {\n    if (__DEV__ && options) {\n        die(\"toJS no longer supports options\")\n    }\n    return toJSHelper(source, new Map())\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n    if (!__DEV__) {\n        return\n    }\n    let enterBreakPoint = false\n    if (typeof args[args.length - 1] === \"boolean\") {\n        enterBreakPoint = args.pop()\n    }\n    const derivation = getAtomFromArgs(args)\n    if (!derivation) {\n        return die(\n            `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n        )\n    }\n    if (derivation.isTracing_ === TraceMode.NONE) {\n        console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n    }\n    derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n    switch (args.length) {\n        case 0:\n            return globalState.trackingDerivation\n        case 1:\n            return getAtom(args[0])\n        case 2:\n            return getAtom(args[0], args[1])\n    }\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n    startBatch()\n    try {\n        return action.apply(thisArg)\n    } finally {\n        endBatch()\n    }\n}\n","import {\n    $mobx,\n    IReactionDisposer,\n    Lambda,\n    autorun,\n    createAction,\n    getNextId,\n    die,\n    allowStateChanges,\n    GenericAbortSignal\n} from \"../internal\"\n\nexport interface IWhenOptions {\n    name?: string\n    timeout?: number\n    onError?: (error: any) => void\n    signal?: GenericAbortSignal\n}\n\nexport function when(\n    predicate: () => boolean,\n    opts?: IWhenOptions\n): Promise<void> & { cancel(): void }\nexport function when(\n    predicate: () => boolean,\n    effect: Lambda,\n    opts?: IWhenOptions\n): IReactionDisposer\nexport function when(predicate: any, arg1?: any, arg2?: any): any {\n    if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\")) {\n        return whenPromise(predicate, arg1)\n    }\n    return _when(predicate, arg1, arg2 || {})\n}\n\nfunction _when(predicate: () => boolean, effect: Lambda, opts: IWhenOptions): IReactionDisposer {\n    let timeoutHandle: any\n    if (typeof opts.timeout === \"number\") {\n        const error = new Error(\"WHEN_TIMEOUT\")\n        timeoutHandle = setTimeout(() => {\n            if (!disposer[$mobx].isDisposed) {\n                disposer()\n                if (opts.onError) {\n                    opts.onError(error)\n                } else {\n                    throw error\n                }\n            }\n        }, opts.timeout)\n    }\n\n    opts.name = __DEV__ ? opts.name || \"When@\" + getNextId() : \"When\"\n    const effectAction = createAction(\n        __DEV__ ? opts.name + \"-effect\" : \"When-effect\",\n        effect as Function\n    )\n    // eslint-disable-next-line\n    var disposer = autorun(r => {\n        // predicate should not change state\n        let cond = allowStateChanges(false, predicate)\n        if (cond) {\n            r.dispose()\n            if (timeoutHandle) {\n                clearTimeout(timeoutHandle)\n            }\n            effectAction()\n        }\n    }, opts)\n    return disposer\n}\n\nfunction whenPromise(\n    predicate: () => boolean,\n    opts?: IWhenOptions\n): Promise<void> & { cancel(): void } {\n    if (__DEV__ && opts && opts.onError) {\n        return die(`the options 'onError' and 'promise' cannot be combined`)\n    }\n    if (opts?.signal?.aborted) {\n        return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), { cancel: () => null })\n    }\n    let cancel\n    let abort\n    const res = new Promise((resolve, reject) => {\n        let disposer = _when(predicate, resolve as Lambda, { ...opts, onError: reject })\n        cancel = () => {\n            disposer()\n            reject(new Error(\"WHEN_CANCELLED\"))\n        }\n        abort = () => {\n            disposer()\n            reject(new Error(\"WHEN_ABORTED\"))\n        }\n        opts?.signal?.addEventListener?.(\"abort\", abort)\n    }).finally(() => opts?.signal?.removeEventListener?.(\"abort\", abort))\n    ;(res as any).cancel = cancel\n    return res as any\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n    interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n    return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n    interceptable: IInterceptable<T>,\n    handler: IInterceptor<T>\n): Lambda {\n    const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n    interceptors.push(handler)\n    return once(() => {\n        const idx = interceptors.indexOf(handler)\n        if (idx !== -1) {\n            interceptors.splice(idx, 1)\n        }\n    })\n}\n\nexport function interceptChange<T>(\n    interceptable: IInterceptable<T | null>,\n    change: T | null\n): T | null {\n    const prevU = untrackedStart()\n    try {\n        // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n        const interceptors = [...(interceptable.interceptors_ || [])]\n        for (let i = 0, l = interceptors.length; i < l; i++) {\n            change = interceptors[i](change)\n            if (change && !(change as any).type) {\n                die(14)\n            }\n            if (!change) {\n                break\n            }\n        }\n        return change\n    } finally {\n        untrackedEnd(prevU)\n    }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n    changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n    return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n    const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n    listeners.push(handler)\n    return once(() => {\n        const idx = listeners.indexOf(handler)\n        if (idx !== -1) {\n            listeners.splice(idx, 1)\n        }\n    })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n    const prevU = untrackedStart()\n    let listeners = listenable.changeListeners_\n    if (!listeners) {\n        return\n    }\n    listeners = listeners.slice()\n    for (let i = 0, l = listeners.length; i < l; i++) {\n        listeners[i](change)\n    }\n    untrackedEnd(prevU)\n}\n","import {\n    $mobx,\n    asObservableObject,\n    AnnotationsMap,\n    CreateObservableOptions,\n    ObservableObjectAdministration,\n    collectStoredAnnotations,\n    isPlainObject,\n    isObservableObject,\n    die,\n    ownKeys,\n    extendObservable,\n    addHiddenProp,\n    storedAnnotationsSymbol,\n    initObservable\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\ntype MakeObservableOptions = Omit<CreateObservableOptions, \"proxy\">\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n    target: T,\n    annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n    options?: MakeObservableOptions\n): T {\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n        if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n            die(\n                `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n            )\n        }\n        // Default to decorators\n        annotations ??= collectStoredAnnotations(target)\n\n        // Annotate\n        ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n    })\n    return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n    target: T,\n    overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n    options?: MakeObservableOptions\n): T {\n    if (__DEV__) {\n        if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n            die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n        }\n        if (isObservableObject(target)) {\n            die(`makeAutoObservable can only be used on objects not already made observable`)\n        }\n    }\n\n    // Optimization: avoid visiting protos\n    // Assumes that annotation.make_/.extend_ works the same for plain objects\n    if (isPlainObject(target)) {\n        return extendObservable(target, target, overrides, options)\n    }\n\n    initObservable(() => {\n        const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n        // Optimization: cache keys on proto\n        // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n        if (!target[keysSymbol]) {\n            const proto = Object.getPrototypeOf(target)\n            const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n            keys.delete(\"constructor\")\n            keys.delete($mobx)\n            addHiddenProp(proto, keysSymbol, keys)\n        }\n\n        target[keysSymbol].forEach(key =>\n            adm.make_(\n                key,\n                // must pass \"undefined\" for { key: undefined }\n                !overrides ? true : key in overrides ? overrides[key] : true\n            )\n        )\n    })\n\n    return target\n}\n","import {\n    $mobx,\n    Atom,\n    EMPTY_ARRAY,\n    IAtom,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    addHiddenFinalProp,\n    checkIfStateModificationsAreAllowed,\n    createInstanceofPredicate,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isObject,\n    isSpyEnabled,\n    notifyListeners,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    assertProxies,\n    reserveArrayBuffer,\n    hasProp,\n    die,\n    globalState,\n    initObservable\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n    spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n    clear(): T[]\n    replace(newItems: T[]): T[]\n    remove(value: T): boolean\n    toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n    object: IObservableArray<T>\n    observableKind: \"array\"\n    debugObjectName: string\n    index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n    type: \"update\"\n    newValue: T\n    oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n    type: \"splice\"\n    added: T[]\n    addedCount: number\n    removed: T[]\n    removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n    object: IObservableArray<T>\n    index: number\n    type: \"update\"\n    newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n    object: IObservableArray<T>\n    index: number\n    type: \"splice\"\n    added: T[]\n    removedCount: number\n}\n\nconst arrayTraps = {\n    get(target, name) {\n        const adm: ObservableArrayAdministration = target[$mobx]\n        if (name === $mobx) {\n            return adm\n        }\n        if (name === \"length\") {\n            return adm.getArrayLength_()\n        }\n        if (typeof name === \"string\" && !isNaN(name as any)) {\n            return adm.get_(parseInt(name))\n        }\n        if (hasProp(arrayExtensions, name)) {\n            return arrayExtensions[name]\n        }\n        return target[name]\n    },\n    set(target, name, value): boolean {\n        const adm: ObservableArrayAdministration = target[$mobx]\n        if (name === \"length\") {\n            adm.setArrayLength_(value)\n        }\n        if (typeof name === \"symbol\" || isNaN(name)) {\n            target[name] = value\n        } else {\n            // numeric string\n            adm.set_(parseInt(name), value)\n        }\n        return true\n    },\n    preventExtensions() {\n        die(15)\n    }\n}\n\nexport class ObservableArrayAdministration\n    implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n    atom_: IAtom\n    readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n    interceptors_\n    changeListeners_\n    enhancer_: (newV: any, oldV: any | undefined) => any\n    dehancer: any\n    proxy_!: IObservableArray<any>\n    lastKnownLength_ = 0\n\n    constructor(\n        name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n        enhancer: IEnhancer<any>,\n        public owned_: boolean,\n        public legacyMode_: boolean\n    ) {\n        this.atom_ = new Atom(name)\n        this.enhancer_ = (newV, oldV) =>\n            enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n    }\n\n    dehanceValue_(value: any): any {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    dehanceValues_(values: any[]): any[] {\n        if (this.dehancer !== undefined && values.length > 0) {\n            return values.map(this.dehancer) as any\n        }\n        return values\n    }\n\n    intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n        return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n    }\n\n    observe_(\n        listener: (changeData: IArrayDidChange<any>) => void,\n        fireImmediately = false\n    ): Lambda {\n        if (fireImmediately) {\n            listener(<IArraySplice<any>>{\n                observableKind: \"array\",\n                object: this.proxy_ as any,\n                debugObjectName: this.atom_.name_,\n                type: \"splice\",\n                index: 0,\n                added: this.values_.slice(),\n                addedCount: this.values_.length,\n                removed: [],\n                removedCount: 0\n            })\n        }\n        return registerListener(this, listener)\n    }\n\n    getArrayLength_(): number {\n        this.atom_.reportObserved()\n        return this.values_.length\n    }\n\n    setArrayLength_(newLength: number) {\n        if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n            die(\"Out of range: \" + newLength)\n        }\n        let currentLength = this.values_.length\n        if (newLength === currentLength) {\n            return\n        } else if (newLength > currentLength) {\n            const newItems = new Array(newLength - currentLength)\n            for (let i = 0; i < newLength - currentLength; i++) {\n                newItems[i] = undefined\n            } // No Array.fill everywhere...\n            this.spliceWithArray_(currentLength, 0, newItems)\n        } else {\n            this.spliceWithArray_(newLength, currentLength - newLength)\n        }\n    }\n\n    updateArrayLength_(oldLength: number, delta: number) {\n        if (oldLength !== this.lastKnownLength_) {\n            die(16)\n        }\n        this.lastKnownLength_ += delta\n        if (this.legacyMode_ && delta > 0) {\n            reserveArrayBuffer(oldLength + delta + 1)\n        }\n    }\n\n    spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n        checkIfStateModificationsAreAllowed(this.atom_)\n        const length = this.values_.length\n\n        if (index === undefined) {\n            index = 0\n        } else if (index > length) {\n            index = length\n        } else if (index < 0) {\n            index = Math.max(0, length + index)\n        }\n\n        if (arguments.length === 1) {\n            deleteCount = length - index\n        } else if (deleteCount === undefined || deleteCount === null) {\n            deleteCount = 0\n        } else {\n            deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n        }\n\n        if (newItems === undefined) {\n            newItems = EMPTY_ARRAY\n        }\n\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n                object: this.proxy_ as any,\n                type: SPLICE,\n                index,\n                removedCount: deleteCount,\n                added: newItems\n            })\n            if (!change) {\n                return EMPTY_ARRAY\n            }\n            deleteCount = change.removedCount\n            newItems = change.added\n        }\n\n        newItems =\n            newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n        if (this.legacyMode_ || __DEV__) {\n            const lengthDelta = newItems.length - deleteCount\n            this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n        }\n        const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n        if (deleteCount !== 0 || newItems.length !== 0) {\n            this.notifyArraySplice_(index, newItems, res)\n        }\n        return this.dehanceValues_(res)\n    }\n\n    spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n        if (newItems.length < MAX_SPLICE_SIZE) {\n            return this.values_.splice(index, deleteCount, ...newItems)\n        } else {\n            // The items removed by the splice\n            const res = this.values_.slice(index, index + deleteCount)\n            // The items that that should remain at the end of the array\n            let oldItems = this.values_.slice(index + deleteCount)\n            // New length is the previous length + addition count - deletion count\n            this.values_.length += newItems.length - deleteCount\n            for (let i = 0; i < newItems.length; i++) {\n                this.values_[index + i] = newItems[i]\n            }\n            for (let i = 0; i < oldItems.length; i++) {\n                this.values_[index + newItems.length + i] = oldItems[i]\n            }\n            return res\n        }\n    }\n\n    notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n        const notifySpy = !this.owned_ && isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IArrayDidChange | null =\n            notify || notifySpy\n                ? ({\n                      observableKind: \"array\",\n                      object: this.proxy_,\n                      type: UPDATE,\n                      debugObjectName: this.atom_.name_,\n                      index,\n                      newValue,\n                      oldValue\n                  } as const)\n                : null\n\n        // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n        // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change!)\n        }\n        this.atom_.reportChanged()\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    notifyArraySplice_(index: number, added: any[], removed: any[]) {\n        const notifySpy = !this.owned_ && isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IArraySplice | null =\n            notify || notifySpy\n                ? ({\n                      observableKind: \"array\",\n                      object: this.proxy_,\n                      debugObjectName: this.atom_.name_,\n                      type: SPLICE,\n                      index,\n                      removed,\n                      added,\n                      removedCount: removed.length,\n                      addedCount: added.length\n                  } as const)\n                : null\n\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change!)\n        }\n        this.atom_.reportChanged()\n        // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    get_(index: number): any | undefined {\n        if (this.legacyMode_ && index >= this.values_.length) {\n            console.warn(\n                __DEV__\n                    ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n                    : `[mobx] Out of bounds read: ${index}`\n            )\n            return undefined\n        }\n        this.atom_.reportObserved()\n        return this.dehanceValue_(this.values_[index])\n    }\n\n    set_(index: number, newValue: any) {\n        const values = this.values_\n        if (this.legacyMode_ && index > values.length) {\n            // out of bounds\n            die(17, index, values.length)\n        }\n        if (index < values.length) {\n            // update at index in range\n            checkIfStateModificationsAreAllowed(this.atom_)\n            const oldValue = values[index]\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IArrayWillChange<any>>(this as any, {\n                    type: UPDATE,\n                    object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n                    index,\n                    newValue\n                })\n                if (!change) {\n                    return\n                }\n                newValue = change.newValue\n            }\n            newValue = this.enhancer_(newValue, oldValue)\n            const changed = newValue !== oldValue\n            if (changed) {\n                values[index] = newValue\n                this.notifyArrayChildUpdate_(index, newValue, oldValue)\n            }\n        } else {\n            // For out of bound index, we don't create an actual sparse array,\n            // but rather fill the holes with undefined (same as setArrayLength_).\n            // This could be considered a bug.\n            const newItems = new Array(index + 1 - values.length)\n            for (let i = 0; i < newItems.length - 1; i++) {\n                newItems[i] = undefined\n            } // No Array.fill everywhere...\n            newItems[newItems.length - 1] = newValue\n            this.spliceWithArray_(values.length, 0, newItems)\n        }\n    }\n}\n\nexport function createObservableArray<T>(\n    initialValues: T[] | undefined,\n    enhancer: IEnhancer<T>,\n    name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n    owned = false\n): IObservableArray<T> {\n    assertProxies()\n    return initObservable(() => {\n        const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n        addHiddenFinalProp(adm.values_, $mobx, adm)\n        const proxy = new Proxy(adm.values_, arrayTraps) as any\n        adm.proxy_ = proxy\n        if (initialValues && initialValues.length) {\n            adm.spliceWithArray_(0, 0, initialValues)\n        }\n        return proxy\n    })\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n    clear(): any[] {\n        return this.splice(0)\n    },\n\n    replace(newItems: any[]) {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        return adm.spliceWithArray_(0, adm.values_.length, newItems)\n    },\n\n    // Used by JSON.stringify\n    toJSON(): any[] {\n        return this.slice()\n    },\n\n    /*\n     * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n     * since these functions alter the inner structure of the array, the have side effects.\n     * Because the have side effects, they should not be used in computed function,\n     * and for that reason the do not call dependencyState.notifyObserved\n     */\n    splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        switch (arguments.length) {\n            case 0:\n                return []\n            case 1:\n                return adm.spliceWithArray_(index)\n            case 2:\n                return adm.spliceWithArray_(index, deleteCount)\n        }\n        return adm.spliceWithArray_(index, deleteCount, newItems)\n    },\n\n    spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n        return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n            index,\n            deleteCount,\n            newItems\n        )\n    },\n\n    push(...items: any[]): number {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.spliceWithArray_(adm.values_.length, 0, items)\n        return adm.values_.length\n    },\n\n    pop() {\n        return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n    },\n\n    shift() {\n        return this.splice(0, 1)[0]\n    },\n\n    unshift(...items: any[]): number {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.spliceWithArray_(0, 0, items)\n        return adm.values_.length\n    },\n\n    reverse(): any[] {\n        // reverse by default mutates in place before returning the result\n        // which makes it both a 'derivation' and a 'mutation'.\n        if (globalState.trackingDerivation) {\n            die(37, \"reverse\")\n        }\n        this.replace(this.slice().reverse())\n        return this\n    },\n\n    sort(): any[] {\n        // sort by default mutates in place before returning the result\n        // which goes against all good practices. Let's not change the array in place!\n        if (globalState.trackingDerivation) {\n            die(37, \"sort\")\n        }\n        const copy = this.slice()\n        copy.sort.apply(copy, arguments)\n        this.replace(copy)\n        return this\n    },\n\n    remove(value: any): boolean {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n        if (idx > -1) {\n            this.splice(idx, 1)\n            return true\n        }\n        return false\n    }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc)\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\naddArrayExtension(\"toSorted\", simpleFunc)\naddArrayExtension(\"toSpliced\", simpleFunc)\naddArrayExtension(\"with\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"findLast\", mapLikeFunc)\naddArrayExtension(\"findLastIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\naddArrayExtension(\"toReversed\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n    if (typeof Array.prototype[funcName] === \"function\") {\n        arrayExtensions[funcName] = funcFactory(funcName)\n    }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n    return function () {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        return dehancedValues[funcName].apply(dehancedValues, arguments)\n    }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction mapLikeFunc(funcName) {\n    return function (callback, thisArg) {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        return dehancedValues[funcName]((element, index) => {\n            return callback.call(thisArg, element, index, this)\n        })\n    }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n    return function () {\n        const adm: ObservableArrayAdministration = this[$mobx]\n        adm.atom_.reportObserved()\n        const dehancedValues = adm.dehanceValues_(adm.values_)\n        // #2432 - reduce behavior depends on arguments.length\n        const callback = arguments[0]\n        arguments[0] = (accumulator, currentValue, index) => {\n            return callback(accumulator, currentValue, index, this)\n        }\n        return dehancedValues[funcName].apply(dehancedValues, arguments)\n    }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n    \"ObservableArrayAdministration\",\n    ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n    return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import {\n    $mobx,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    Lambda,\n    ObservableValue,\n    checkIfStateModificationsAreAllowed,\n    createAtom,\n    createInstanceofPredicate,\n    deepEnhancer,\n    getNextId,\n    getPlainObjectKeys,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isES6Map,\n    isPlainES6Map,\n    isPlainObject,\n    isSpyEnabled,\n    makeIterable,\n    notifyListeners,\n    referenceEnhancer,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    stringifyKey,\n    transaction,\n    untracked,\n    onBecomeUnobserved,\n    globalState,\n    die,\n    isFunction,\n    UPDATE,\n    IAtom,\n    PureSpyEvent,\n    initObservable\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n    [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IReadonlyMapEntry<K = any, V = any> = readonly [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\nexport type IReadonlyMapEntries<K = any, V = any> = IReadonlyMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n    | {\n          object: ObservableMap<K, V>\n          name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n          type: \"update\"\n          newValue: V\n          oldValue: V\n      }\n    | {\n          object: ObservableMap<K, V>\n          name: K\n          type: \"add\"\n          newValue: V\n      }\n    | {\n          object: ObservableMap<K, V>\n          name: K\n          type: \"delete\"\n          oldValue: V\n      }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n    object: ObservableMap<K, V>\n    type: \"update\" | \"add\" | \"delete\"\n    name: K\n    newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n    | IMapEntries<K, V>\n    | IReadonlyMapEntries<K, V>\n    | IKeyValueMap<V>\n    | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n    implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable\n{\n    [$mobx] = ObservableMapMarker\n    data_!: Map<K, ObservableValue<V>>\n    hasMap_!: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n    keysAtom_!: IAtom\n    interceptors_\n    changeListeners_\n    dehancer: any\n\n    constructor(\n        initialData?: IObservableMapInitialValues<K, V>,\n        public enhancer_: IEnhancer<V> = deepEnhancer,\n        public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n    ) {\n        if (!isFunction(Map)) {\n            die(18)\n        }\n        initObservable(() => {\n            this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n            this.data_ = new Map()\n            this.hasMap_ = new Map()\n            if (initialData) {\n                this.merge(initialData)\n            }\n        })\n    }\n\n    private has_(key: K): boolean {\n        return this.data_.has(key)\n    }\n\n    has(key: K): boolean {\n        if (!globalState.trackingDerivation) {\n            return this.has_(key)\n        }\n\n        let entry = this.hasMap_.get(key)\n        if (!entry) {\n            const newEntry = (entry = new ObservableValue(\n                this.has_(key),\n                referenceEnhancer,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n                false\n            ))\n            this.hasMap_.set(key, newEntry)\n            onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n        }\n\n        return entry.get()\n    }\n\n    set(key: K, value: V) {\n        const hasKey = this.has_(key)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IMapWillChange<K, V>>(this, {\n                type: hasKey ? UPDATE : ADD,\n                object: this,\n                newValue: value,\n                name: key\n            })\n            if (!change) {\n                return this\n            }\n            value = change.newValue!\n        }\n        if (hasKey) {\n            this.updateValue_(key, value)\n        } else {\n            this.addValue_(key, value)\n        }\n        return this\n    }\n\n    delete(key: K): boolean {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IMapWillChange<K, V>>(this, {\n                type: DELETE,\n                object: this,\n                name: key\n            })\n            if (!change) {\n                return false\n            }\n        }\n        if (this.has_(key)) {\n            const notifySpy = isSpyEnabled()\n            const notify = hasListeners(this)\n            const change: IMapDidChange<K, V> | null =\n                notify || notifySpy\n                    ? {\n                          observableKind: \"map\",\n                          debugObjectName: this.name_,\n                          type: DELETE,\n                          object: this,\n                          oldValue: (<any>this.data_.get(key)).value_,\n                          name: key\n                      }\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change! as PureSpyEvent)\n            } // TODO fix type\n            transaction(() => {\n                this.keysAtom_.reportChanged()\n                this.hasMap_.get(key)?.setNewValue_(false)\n                const observable = this.data_.get(key)!\n                observable.setNewValue_(undefined as any)\n                this.data_.delete(key)\n            })\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n            return true\n        }\n        return false\n    }\n\n    private updateValue_(key: K, newValue: V | undefined) {\n        const observable = this.data_.get(key)!\n        newValue = (observable as any).prepareNewValue_(newValue) as V\n        if (newValue !== globalState.UNCHANGED) {\n            const notifySpy = isSpyEnabled()\n            const notify = hasListeners(this)\n            const change: IMapDidChange<K, V> | null =\n                notify || notifySpy\n                    ? {\n                          observableKind: \"map\",\n                          debugObjectName: this.name_,\n                          type: UPDATE,\n                          object: this,\n                          oldValue: (observable as any).value_,\n                          name: key,\n                          newValue\n                      }\n                    : null\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change! as PureSpyEvent)\n            } // TODO fix type\n            observable.setNewValue_(newValue as V)\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n    }\n\n    private addValue_(key: K, newValue: V) {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        transaction(() => {\n            const observable = new ObservableValue(\n                newValue,\n                this.enhancer_,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n                false\n            )\n            this.data_.set(key, observable)\n            newValue = (observable as any).value_ // value might have been changed\n            this.hasMap_.get(key)?.setNewValue_(true)\n            this.keysAtom_.reportChanged()\n        })\n        const notifySpy = isSpyEnabled()\n        const notify = hasListeners(this)\n        const change: IMapDidChange<K, V> | null =\n            notify || notifySpy\n                ? {\n                      observableKind: \"map\",\n                      debugObjectName: this.name_,\n                      type: ADD,\n                      object: this,\n                      name: key,\n                      newValue\n                  }\n                : null\n        if (__DEV__ && notifySpy) {\n            spyReportStart(change! as PureSpyEvent)\n        } // TODO fix type\n        if (notify) {\n            notifyListeners(this, change)\n        }\n        if (__DEV__ && notifySpy) {\n            spyReportEnd()\n        }\n    }\n\n    get(key: K): V | undefined {\n        if (this.has(key)) {\n            return this.dehanceValue_(this.data_.get(key)!.get())\n        }\n        return this.dehanceValue_(undefined)\n    }\n\n    private dehanceValue_<X extends V | undefined>(value: X): X {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    keys(): IterableIterator<K> {\n        this.keysAtom_.reportObserved()\n        return this.data_.keys()\n    }\n\n    values(): IterableIterator<V> {\n        const self = this\n        const keys = this.keys()\n        return makeIterable({\n            next() {\n                const { done, value } = keys.next()\n                return {\n                    done,\n                    value: done ? (undefined as any) : self.get(value)\n                }\n            }\n        })\n    }\n\n    entries(): IterableIterator<IMapEntry<K, V>> {\n        const self = this\n        const keys = this.keys()\n        return makeIterable({\n            next() {\n                const { done, value } = keys.next()\n                return {\n                    done,\n                    value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n                }\n            }\n        })\n    }\n\n    [Symbol.iterator]() {\n        return this.entries()\n    }\n\n    forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n        for (const [key, value] of this) {\n            callback.call(thisArg, value, key, this)\n        }\n    }\n\n    /** Merge another object into this object, returns this. */\n    merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n        if (isObservableMap(other)) {\n            other = new Map(other)\n        }\n        transaction(() => {\n            if (isPlainObject(other)) {\n                getPlainObjectKeys(other).forEach((key: any) =>\n                    this.set(key as K, (other as IKeyValueMap)[key])\n                )\n            } else if (Array.isArray(other)) {\n                other.forEach(([key, value]) => this.set(key, value))\n            } else if (isES6Map(other)) {\n                if (!isPlainES6Map(other)) {\n                    die(19, other)\n                }\n                other.forEach((value, key) => this.set(key, value))\n            } else if (other !== null && other !== undefined) {\n                die(20, other)\n            }\n        })\n        return this\n    }\n\n    clear() {\n        transaction(() => {\n            untracked(() => {\n                for (const key of this.keys()) {\n                    this.delete(key)\n                }\n            })\n        })\n    }\n\n    replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n        // Implementation requirements:\n        // - respect ordering of replacement map\n        // - allow interceptors to run and potentially prevent individual operations\n        // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n        // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n        // - note that result map may differ from replacement map due to the interceptors\n        transaction(() => {\n            // Convert to map so we can do quick key lookups\n            const replacementMap = convertToMap(values)\n            const orderedData = new Map()\n            // Used for optimization\n            let keysReportChangedCalled = false\n            // Delete keys that don't exist in replacement map\n            // if the key deletion is prevented by interceptor\n            // add entry at the beginning of the result map\n            for (const key of this.data_.keys()) {\n                // Concurrently iterating/deleting keys\n                // iterator should handle this correctly\n                if (!replacementMap.has(key)) {\n                    const deleted = this.delete(key)\n                    // Was the key removed?\n                    if (deleted) {\n                        // _keysAtom.reportChanged() was already called\n                        keysReportChangedCalled = true\n                    } else {\n                        // Delete prevented by interceptor\n                        const value = this.data_.get(key)\n                        orderedData.set(key, value)\n                    }\n                }\n            }\n            // Merge entries\n            for (const [key, value] of replacementMap.entries()) {\n                // We will want to know whether a new key is added\n                const keyExisted = this.data_.has(key)\n                // Add or update value\n                this.set(key, value)\n                // The addition could have been prevent by interceptor\n                if (this.data_.has(key)) {\n                    // The update could have been prevented by interceptor\n                    // and also we want to preserve existing values\n                    // so use value from _data map (instead of replacement map)\n                    const value = this.data_.get(key)\n                    orderedData.set(key, value)\n                    // Was a new key added?\n                    if (!keyExisted) {\n                        // _keysAtom.reportChanged() was already called\n                        keysReportChangedCalled = true\n                    }\n                }\n            }\n            // Check for possible key order change\n            if (!keysReportChangedCalled) {\n                if (this.data_.size !== orderedData.size) {\n                    // If size differs, keys are definitely modified\n                    this.keysAtom_.reportChanged()\n                } else {\n                    const iter1 = this.data_.keys()\n                    const iter2 = orderedData.keys()\n                    let next1 = iter1.next()\n                    let next2 = iter2.next()\n                    while (!next1.done) {\n                        if (next1.value !== next2.value) {\n                            this.keysAtom_.reportChanged()\n                            break\n                        }\n                        next1 = iter1.next()\n                        next2 = iter2.next()\n                    }\n                }\n            }\n            // Use correctly ordered map\n            this.data_ = orderedData\n        })\n        return this\n    }\n\n    get size(): number {\n        this.keysAtom_.reportObserved()\n        return this.data_.size\n    }\n\n    toString(): string {\n        return \"[object ObservableMap]\"\n    }\n\n    toJSON(): [K, V][] {\n        return Array.from(this)\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Map\"\n    }\n\n    /**\n     * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n     * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n     * for callback details\n     */\n    observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n        }\n        return registerListener(this, listener)\n    }\n\n    intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n    thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n    if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n        return dataStructure\n    } else if (Array.isArray(dataStructure)) {\n        return new Map(dataStructure)\n    } else if (isPlainObject(dataStructure)) {\n        const map = new Map()\n        for (const key in dataStructure) {\n            map.set(key, dataStructure[key])\n        }\n        return map\n    } else {\n        return die(21, dataStructure)\n    }\n}\n","import {\n    $mobx,\n    createAtom,\n    deepEnhancer,\n    getNextId,\n    IEnhancer,\n    isSpyEnabled,\n    hasListeners,\n    IListenable,\n    registerListener,\n    Lambda,\n    spyReportStart,\n    notifyListeners,\n    spyReportEnd,\n    createInstanceofPredicate,\n    hasInterceptors,\n    interceptChange,\n    IInterceptable,\n    IInterceptor,\n    registerInterceptor,\n    checkIfStateModificationsAreAllowed,\n    untracked,\n    makeIterable,\n    transaction,\n    isES6Set,\n    IAtom,\n    DELETE,\n    ADD,\n    die,\n    isFunction,\n    initObservable\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n    | {\n          object: ObservableSet<T>\n          observableKind: \"set\"\n          debugObjectName: string\n          type: \"add\"\n          newValue: T\n      }\n    | {\n          object: ObservableSet<T>\n          observableKind: \"set\"\n          debugObjectName: string\n          type: \"delete\"\n          oldValue: T\n      }\n\nexport type ISetWillChange<T = any> =\n    | {\n          type: \"delete\"\n          object: ObservableSet<T>\n          oldValue: T\n      }\n    | {\n          type: \"add\"\n          object: ObservableSet<T>\n          newValue: T\n      }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n    [$mobx] = ObservableSetMarker\n    private data_: Set<any> = new Set()\n    atom_!: IAtom\n    changeListeners_\n    interceptors_\n    dehancer: any\n    enhancer_: (newV: any, oldV: any | undefined) => any\n\n    constructor(\n        initialData?: IObservableSetInitialValues<T>,\n        enhancer: IEnhancer<T> = deepEnhancer,\n        public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n    ) {\n        if (!isFunction(Set)) {\n            die(22)\n        }\n        this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n        initObservable(() => {\n            this.atom_ = createAtom(this.name_)\n            if (initialData) {\n                this.replace(initialData)\n            }\n        })\n    }\n\n    private dehanceValue_<X extends T | undefined>(value: X): X {\n        if (this.dehancer !== undefined) {\n            return this.dehancer(value)\n        }\n        return value\n    }\n\n    clear() {\n        transaction(() => {\n            untracked(() => {\n                for (const value of this.data_.values()) {\n                    this.delete(value)\n                }\n            })\n        })\n    }\n\n    forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n        for (const value of this) {\n            callbackFn.call(thisArg, value, value, this)\n        }\n    }\n\n    get size() {\n        this.atom_.reportObserved()\n        return this.data_.size\n    }\n\n    add(value: T) {\n        checkIfStateModificationsAreAllowed(this.atom_)\n        if (hasInterceptors(this)) {\n            const change = interceptChange<ISetWillChange<T>>(this, {\n                type: ADD,\n                object: this,\n                newValue: value\n            })\n            if (!change) {\n                return this\n            }\n            // ideally, value = change.value would be done here, so that values can be\n            // changed by interceptor. Same applies for other Set and Map api's.\n        }\n        if (!this.has(value)) {\n            transaction(() => {\n                this.data_.add(this.enhancer_(value, undefined))\n                this.atom_.reportChanged()\n            })\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const notify = hasListeners(this)\n            const change =\n                notify || notifySpy\n                    ? <ISetDidChange<T>>{\n                          observableKind: \"set\",\n                          debugObjectName: this.name_,\n                          type: ADD,\n                          object: this,\n                          newValue: value\n                      }\n                    : null\n            if (notifySpy && __DEV__) {\n                spyReportStart(change!)\n            }\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (notifySpy && __DEV__) {\n                spyReportEnd()\n            }\n        }\n\n        return this\n    }\n\n    delete(value: T) {\n        if (hasInterceptors(this)) {\n            const change = interceptChange<ISetWillChange<T>>(this, {\n                type: DELETE,\n                object: this,\n                oldValue: value\n            })\n            if (!change) {\n                return false\n            }\n        }\n        if (this.has(value)) {\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const notify = hasListeners(this)\n            const change =\n                notify || notifySpy\n                    ? <ISetDidChange<T>>{\n                          observableKind: \"set\",\n                          debugObjectName: this.name_,\n                          type: DELETE,\n                          object: this,\n                          oldValue: value\n                      }\n                    : null\n\n            if (notifySpy && __DEV__) {\n                spyReportStart(change!)\n            }\n            transaction(() => {\n                this.atom_.reportChanged()\n                this.data_.delete(value)\n            })\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (notifySpy && __DEV__) {\n                spyReportEnd()\n            }\n            return true\n        }\n        return false\n    }\n\n    has(value: T) {\n        this.atom_.reportObserved()\n        return this.data_.has(this.dehanceValue_(value))\n    }\n\n    entries() {\n        let nextIndex = 0\n        const keys = Array.from(this.keys())\n        const values = Array.from(this.values())\n        return makeIterable<[T, T]>({\n            next() {\n                const index = nextIndex\n                nextIndex += 1\n                return index < values.length\n                    ? { value: [keys[index], values[index]], done: false }\n                    : { done: true }\n            }\n        } as any)\n    }\n\n    keys(): IterableIterator<T> {\n        return this.values()\n    }\n\n    values(): IterableIterator<T> {\n        this.atom_.reportObserved()\n        const self = this\n        let nextIndex = 0\n        const observableValues = Array.from(this.data_.values())\n        return makeIterable<T>({\n            next() {\n                return nextIndex < observableValues.length\n                    ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n                    : { done: true }\n            }\n        } as any)\n    }\n\n    intersection<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T & U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.intersection(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.intersection(otherSet)\n        }\n    }\n\n    union<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.union(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.union(otherSet)\n        }\n    }\n\n    difference<U>(otherSet: ReadonlySetLike<U>): Set<T> {\n        return new Set(this).difference(otherSet)\n    }\n\n    symmetricDifference<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U> {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.symmetricDifference(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.symmetricDifference(otherSet)\n        }\n    }\n\n    isSubsetOf(otherSet: ReadonlySetLike<unknown>): boolean {\n        return new Set(this).isSubsetOf(otherSet)\n    }\n\n    isSupersetOf(otherSet: ReadonlySetLike<unknown>): boolean {\n        return new Set(this).isSupersetOf(otherSet)\n    }\n\n    isDisjointFrom(otherSet: ReadonlySetLike<unknown> | Set<unknown>): boolean {\n        if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n            return otherSet.isDisjointFrom(this)\n        } else {\n            const dehancedSet = new Set(this)\n            return dehancedSet.isDisjointFrom(otherSet)\n        }\n    }\n\n    replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n        if (isObservableSet(other)) {\n            other = new Set(other)\n        }\n\n        transaction(() => {\n            if (Array.isArray(other)) {\n                this.clear()\n                other.forEach(value => this.add(value))\n            } else if (isES6Set(other)) {\n                this.clear()\n                other.forEach(value => this.add(value))\n            } else if (other !== null && other !== undefined) {\n                die(\"Cannot initialize set from \" + other)\n            }\n        })\n\n        return this\n    }\n    observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n        // ... 'fireImmediately' could also be true?\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n        }\n        return registerListener(this, listener)\n    }\n\n    intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    toJSON(): T[] {\n        return Array.from(this)\n    }\n\n    toString(): string {\n        return \"[object ObservableSet]\"\n    }\n\n    [Symbol.iterator]() {\n        return this.values()\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Set\"\n    }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n    thing: any\n) => thing is ObservableSet<any>\n","import {\n    CreateObservableOptions,\n    getAnnotationFromOptions,\n    propagateChanged,\n    isAnnotation,\n    $mobx,\n    Atom,\n    Annotation,\n    ComputedValue,\n    IAtom,\n    IComputedValueOptions,\n    IEnhancer,\n    IInterceptable,\n    IListenable,\n    Lambda,\n    ObservableValue,\n    addHiddenProp,\n    createInstanceofPredicate,\n    endBatch,\n    getNextId,\n    hasInterceptors,\n    hasListeners,\n    interceptChange,\n    isObject,\n    isPlainObject,\n    isSpyEnabled,\n    notifyListeners,\n    referenceEnhancer,\n    registerInterceptor,\n    registerListener,\n    spyReportEnd,\n    spyReportStart,\n    startBatch,\n    stringifyKey,\n    globalState,\n    ADD,\n    UPDATE,\n    die,\n    hasProp,\n    getDescriptor,\n    storedAnnotationsSymbol,\n    ownKeys,\n    isOverride,\n    defineProperty,\n    autoAnnotation,\n    getAdministration,\n    getDebugName,\n    objectPrototype,\n    MakeResult,\n    checkIfStateModificationsAreAllowed\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n    observableKind: \"object\"\n    name: PropertyKey\n    object: T\n    debugObjectName: string\n} & (\n    | {\n          type: \"add\"\n          newValue: any\n      }\n    | {\n          type: \"update\"\n          oldValue: any\n          newValue: any\n      }\n    | {\n          type: \"remove\"\n          oldValue: any\n      }\n)\n\nexport type IObjectWillChange<T = any> =\n    | {\n          object: T\n          type: \"update\" | \"add\"\n          name: PropertyKey\n          newValue: any\n      }\n    | {\n          object: T\n          type: \"remove\"\n          name: PropertyKey\n      }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n    implements IInterceptable<IObjectWillChange>, IListenable\n{\n    keysAtom_: IAtom\n    changeListeners_\n    interceptors_\n    proxy_: any\n    isPlainObject_: boolean\n    appliedAnnotations_?: object\n    private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n    constructor(\n        public target_: any,\n        public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n        public name_: string,\n        // Used anytime annotation is not explicitely provided\n        public defaultAnnotation_: Annotation = autoAnnotation\n    ) {\n        this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n        // Optimization: we use this frequently\n        this.isPlainObject_ = isPlainObject(this.target_)\n        if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n            die(`defaultAnnotation must be valid annotation`)\n        }\n        if (__DEV__) {\n            // Prepare structure for tracking which fields were already annotated\n            this.appliedAnnotations_ = {}\n        }\n    }\n\n    getObservablePropValue_(key: PropertyKey): any {\n        return this.values_.get(key)!.get()\n    }\n\n    setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n        const observable = this.values_.get(key)\n        if (observable instanceof ComputedValue) {\n            observable.set(newValue)\n            return true\n        }\n\n        // intercept\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IObjectWillChange>(this, {\n                type: UPDATE,\n                object: this.proxy_ || this.target_,\n                name: key,\n                newValue\n            })\n            if (!change) {\n                return null\n            }\n            newValue = (change as any).newValue\n        }\n        newValue = (observable as any).prepareNewValue_(newValue)\n\n        // notify spy & observers\n        if (newValue !== globalState.UNCHANGED) {\n            const notify = hasListeners(this)\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const change: IObjectDidChange | null =\n                notify || notifySpy\n                    ? {\n                          type: UPDATE,\n                          observableKind: \"object\",\n                          debugObjectName: this.name_,\n                          object: this.proxy_ || this.target_,\n                          oldValue: (observable as any).value_,\n                          name: key,\n                          newValue\n                      }\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change!)\n            }\n            ;(observable as ObservableValue<any>).setNewValue_(newValue)\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n        return true\n    }\n\n    get_(key: PropertyKey): any {\n        if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n            // Key doesn't exist yet, subscribe for it in case it's added later\n            this.has_(key)\n        }\n        return this.target_[key]\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {any} value\n     * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n        // Don't use .has(key) - we care about own\n        if (hasProp(this.target_, key)) {\n            // Existing prop\n            if (this.values_.has(key)) {\n                // Observable (can be intercepted)\n                return this.setObservablePropValue_(key, value)\n            } else if (proxyTrap) {\n                // Non-observable - proxy\n                return Reflect.set(this.target_, key, value)\n            } else {\n                // Non-observable\n                this.target_[key] = value\n                return true\n            }\n        } else {\n            // New prop\n            return this.extend_(\n                key,\n                { value, enumerable: true, writable: true, configurable: true },\n                this.defaultAnnotation_,\n                proxyTrap\n            )\n        }\n    }\n\n    // Trap for \"in\"\n    has_(key: PropertyKey): boolean {\n        if (!globalState.trackingDerivation) {\n            // Skip key subscription outside derivation\n            return key in this.target_\n        }\n        this.pendingKeys_ ||= new Map()\n        let entry = this.pendingKeys_.get(key)\n        if (!entry) {\n            entry = new ObservableValue(\n                key in this.target_,\n                referenceEnhancer,\n                __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n                false\n            )\n            this.pendingKeys_.set(key, entry)\n        }\n        return entry.get()\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n     */\n    make_(key: PropertyKey, annotation: Annotation | boolean): void {\n        if (annotation === true) {\n            annotation = this.defaultAnnotation_\n        }\n        if (annotation === false) {\n            return\n        }\n        assertAnnotable(this, annotation, key)\n        if (!(key in this.target_)) {\n            // Throw on missing key, except for decorators:\n            // Decorator annotations are collected from whole prototype chain.\n            // When called from super() some props may not exist yet.\n            // However we don't have to worry about missing prop,\n            // because the decorator must have been applied to something.\n            if (this.target_[storedAnnotationsSymbol]?.[key]) {\n                return // will be annotated by subclass constructor\n            } else {\n                die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n            }\n        }\n        let source = this.target_\n        while (source && source !== objectPrototype) {\n            const descriptor = getDescriptor(source, key)\n            if (descriptor) {\n                const outcome = annotation.make_(this, key, descriptor, source)\n                if (outcome === MakeResult.Cancel) {\n                    return\n                }\n                if (outcome === MakeResult.Break) {\n                    break\n                }\n            }\n            source = Object.getPrototypeOf(source)\n        }\n        recordAnnotationApplied(this, annotation, key)\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    extend_(\n        key: PropertyKey,\n        descriptor: PropertyDescriptor,\n        annotation: Annotation | boolean,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        if (annotation === true) {\n            annotation = this.defaultAnnotation_\n        }\n        if (annotation === false) {\n            return this.defineProperty_(key, descriptor, proxyTrap)\n        }\n        assertAnnotable(this, annotation, key)\n        const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n        if (outcome) {\n            recordAnnotationApplied(this, annotation, key)\n        }\n        return outcome\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    defineProperty_(\n        key: PropertyKey,\n        descriptor: PropertyDescriptor,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: descriptor.value\n                })\n                if (!change) {\n                    return null\n                }\n                const { newValue } = change as any\n                if (descriptor.value !== newValue) {\n                    descriptor = {\n                        ...descriptor,\n                        value: newValue\n                    }\n                }\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            // Notify\n            this.notifyPropertyAddition_(key, descriptor.value)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    // If original descriptor becomes relevant, move this to annotation directly\n    defineObservableProperty_(\n        key: PropertyKey,\n        value: any,\n        enhancer: IEnhancer<any>,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: value\n                })\n                if (!change) {\n                    return null\n                }\n                value = (change as any).newValue\n            }\n\n            const cachedDescriptor = getCachedObservablePropDescriptor(key)\n            const descriptor = {\n                configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n                enumerable: true,\n                get: cachedDescriptor.get,\n                set: cachedDescriptor.set\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            const observable = new ObservableValue(\n                value,\n                enhancer,\n                __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n                false\n            )\n\n            this.values_.set(key, observable)\n\n            // Notify (value possibly changed by ObservableValue)\n            this.notifyPropertyAddition_(key, observable.value_)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    // If original descriptor becomes relevant, move this to annotation directly\n    defineComputedProperty_(\n        key: PropertyKey,\n        options: IComputedValueOptions<any>,\n        proxyTrap: boolean = false\n    ): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        try {\n            startBatch()\n\n            // Delete\n            const deleteOutcome = this.delete_(key)\n            if (!deleteOutcome) {\n                // Failure or intercepted\n                return deleteOutcome\n            }\n\n            // ADD interceptor\n            if (hasInterceptors(this)) {\n                const change = interceptChange<IObjectWillChange>(this, {\n                    object: this.proxy_ || this.target_,\n                    name: key,\n                    type: ADD,\n                    newValue: undefined\n                })\n                if (!change) {\n                    return null\n                }\n            }\n            options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n            options.context = this.proxy_ || this.target_\n            const cachedDescriptor = getCachedObservablePropDescriptor(key)\n            const descriptor = {\n                configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n                enumerable: false,\n                get: cachedDescriptor.get,\n                set: cachedDescriptor.set\n            }\n\n            // Define\n            if (proxyTrap) {\n                if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n                    return false\n                }\n            } else {\n                defineProperty(this.target_, key, descriptor)\n            }\n\n            this.values_.set(key, new ComputedValue(options))\n\n            // Notify\n            this.notifyPropertyAddition_(key, undefined)\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    /**\n     * @param {PropertyKey} key\n     * @param {PropertyDescriptor} descriptor\n     * @param {boolean} proxyTrap whether it's called from proxy trap\n     * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n     */\n    delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n        checkIfStateModificationsAreAllowed(this.keysAtom_)\n        // No such prop\n        if (!hasProp(this.target_, key)) {\n            return true\n        }\n\n        // Intercept\n        if (hasInterceptors(this)) {\n            const change = interceptChange<IObjectWillChange>(this, {\n                object: this.proxy_ || this.target_,\n                name: key,\n                type: REMOVE\n            })\n            // Cancelled\n            if (!change) {\n                return null\n            }\n        }\n\n        // Delete\n        try {\n            startBatch()\n            const notify = hasListeners(this)\n            const notifySpy = __DEV__ && isSpyEnabled()\n            const observable = this.values_.get(key)\n            // Value needed for spies/listeners\n            let value = undefined\n            // Optimization: don't pull the value unless we will need it\n            if (!observable && (notify || notifySpy)) {\n                value = getDescriptor(this.target_, key)?.value\n            }\n            // delete prop (do first, may fail)\n            if (proxyTrap) {\n                if (!Reflect.deleteProperty(this.target_, key)) {\n                    return false\n                }\n            } else {\n                delete this.target_[key]\n            }\n            // Allow re-annotating this field\n            if (__DEV__) {\n                delete this.appliedAnnotations_![key]\n            }\n            // Clear observable\n            if (observable) {\n                this.values_.delete(key)\n                // for computed, value is undefined\n                if (observable instanceof ObservableValue) {\n                    value = observable.value_\n                }\n                // Notify: autorun(() => obj[key]), see #1796\n                propagateChanged(observable)\n            }\n            // Notify \"keys/entries/values\" observers\n            this.keysAtom_.reportChanged()\n\n            // Notify \"has\" observers\n            // \"in\" as it may still exist in proto\n            this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n            // Notify spies/listeners\n            if (notify || notifySpy) {\n                const change: IObjectDidChange = {\n                    type: REMOVE,\n                    observableKind: \"object\",\n                    object: this.proxy_ || this.target_,\n                    debugObjectName: this.name_,\n                    oldValue: value,\n                    name: key\n                }\n                if (__DEV__ && notifySpy) {\n                    spyReportStart(change!)\n                }\n                if (notify) {\n                    notifyListeners(this, change)\n                }\n                if (__DEV__ && notifySpy) {\n                    spyReportEnd()\n                }\n            }\n        } finally {\n            endBatch()\n        }\n        return true\n    }\n\n    /**\n     * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n     * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n     * for callback details\n     */\n    observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n        if (__DEV__ && fireImmediately === true) {\n            die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n        }\n        return registerListener(this, callback)\n    }\n\n    intercept_(handler): Lambda {\n        return registerInterceptor(this, handler)\n    }\n\n    notifyPropertyAddition_(key: PropertyKey, value: any) {\n        const notify = hasListeners(this)\n        const notifySpy = __DEV__ && isSpyEnabled()\n        if (notify || notifySpy) {\n            const change: IObjectDidChange | null =\n                notify || notifySpy\n                    ? ({\n                          type: ADD,\n                          observableKind: \"object\",\n                          debugObjectName: this.name_,\n                          object: this.proxy_ || this.target_,\n                          name: key,\n                          newValue: value\n                      } as const)\n                    : null\n\n            if (__DEV__ && notifySpy) {\n                spyReportStart(change!)\n            }\n            if (notify) {\n                notifyListeners(this, change)\n            }\n            if (__DEV__ && notifySpy) {\n                spyReportEnd()\n            }\n        }\n\n        this.pendingKeys_?.get(key)?.set(true)\n\n        // Notify \"keys/entries/values\" observers\n        this.keysAtom_.reportChanged()\n    }\n\n    ownKeys_(): Array<string | symbol> {\n        this.keysAtom_.reportObserved()\n        return ownKeys(this.target_)\n    }\n\n    keys_(): PropertyKey[] {\n        // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n        // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n        // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n        // We choose to over-report in Object.keys(object), because:\n        // - typically it's used with simple data objects\n        // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n        this.keysAtom_.reportObserved()\n        return Object.keys(this.target_)\n    }\n}\n\nexport interface IIsObservableObject {\n    [$mobx]: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n    target: any,\n    options?: CreateObservableOptions\n): IIsObservableObject {\n    if (__DEV__ && options && isObservableObject(target)) {\n        die(`Options can't be provided for already observable objects.`)\n    }\n\n    if (hasProp(target, $mobx)) {\n        if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n            die(\n                `Cannot convert '${getDebugName(target)}' into observable object:` +\n                    `\\nThe target is already observable of different type.` +\n                    `\\nExtending builtins is not supported.`\n            )\n        }\n        return target\n    }\n\n    if (__DEV__ && !Object.isExtensible(target)) {\n        die(\"Cannot make the designated object observable; it is not extensible\")\n    }\n\n    const name =\n        options?.name ??\n        (__DEV__\n            ? `${\n                  isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n              }@${getNextId()}`\n            : \"ObservableObject\")\n\n    const adm = new ObservableObjectAdministration(\n        target,\n        new Map(),\n        String(name),\n        getAnnotationFromOptions(options)\n    )\n\n    addHiddenProp(target, $mobx, adm)\n\n    return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n    \"ObservableObjectAdministration\",\n    ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n    return (\n        descriptorCache[key] ||\n        (descriptorCache[key] = {\n            get() {\n                return this[$mobx].getObservablePropValue_(key)\n            },\n            set(value) {\n                return this[$mobx].setObservablePropValue_(key, value)\n            }\n        })\n    )\n}\n\nexport function isObservableObject(thing: any): boolean {\n    if (isObject(thing)) {\n        return isObservableObjectAdministration((thing as any)[$mobx])\n    }\n    return false\n}\n\nexport function recordAnnotationApplied(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey\n) {\n    if (__DEV__) {\n        adm.appliedAnnotations_![key] = annotation\n    }\n    // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n    delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n    adm: ObservableObjectAdministration,\n    annotation: Annotation,\n    key: PropertyKey\n) {\n    // Valid annotation\n    if (__DEV__ && !isAnnotation(annotation)) {\n        die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n    }\n\n    /*\n    // Configurable, not sealed, not frozen\n    // Possibly not needed, just a little better error then the one thrown by engine.\n    // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n    if (__DEV__) {\n        const configurable = getDescriptor(adm.target_, key)?.configurable\n        const frozen = Object.isFrozen(adm.target_)\n        const sealed = Object.isSealed(adm.target_)\n        if (!configurable || frozen || sealed) {\n            const fieldName = `${adm.name_}.${key.toString()}`\n            const requestedAnnotationType = annotation.annotationType_\n            let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n            if (frozen) {\n                error += `\\nObject is frozen.`\n            }\n            if (sealed) {\n                error += `\\nObject is sealed.`\n            }\n            if (!configurable) {\n                error += `\\nproperty is not configurable.`\n                // Mention only if caused by us to avoid confusion\n                if (hasProp(adm.appliedAnnotations!, key)) {\n                    error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n                    error += `all annotated fields of non-plain objects (classes) are not configurable.`\n                }\n            }\n            die(error)\n        }\n    }\n    */\n\n    // Not annotated\n    if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n        const fieldName = `${adm.name_}.${key.toString()}`\n        const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n        const requestedAnnotationType = annotation.annotationType_\n        die(\n            `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n                `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n                `\\nRe-annotating fields is not allowed.` +\n                `\\nUse 'override' annotation for methods overridden by subclass.`\n        )\n    }\n}\n","import {\n    getNextId,\n    addHiddenFinalProp,\n    makeIterable,\n    addHiddenProp,\n    ObservableArrayAdministration,\n    $mobx,\n    arrayExtensions,\n    IEnhancer,\n    isObservableArray,\n    IObservableArray,\n    defineProperty,\n    initObservable\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n    let v = false\n    const p = {}\n    Object.defineProperty(p, \"0\", {\n        set: () => {\n            v = true\n        }\n    })\n    Object.create(p)[\"0\"] = 1\n    return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n    if (Object.setPrototypeOf) {\n        Object.setPrototypeOf(ctor.prototype, proto)\n    } else if (ctor.prototype.__proto__ !== undefined) {\n        ctor.prototype.__proto__ = proto\n    } else {\n        ctor.prototype = proto\n    }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nexport class LegacyObservableArray<T> extends StubArray {\n    constructor(\n        initialValues: T[] | undefined,\n        enhancer: IEnhancer<T>,\n        name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n        owned = false\n    ) {\n        super()\n        initObservable(() => {\n            const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n            adm.proxy_ = this as any\n            addHiddenFinalProp(this, $mobx, adm)\n\n            if (initialValues && initialValues.length) {\n                // @ts-ignore\n                this.spliceWithArray(0, 0, initialValues)\n            }\n\n            if (safariPrototypeSetterInheritanceBug) {\n                // Seems that Safari won't use numeric prototype setter until any * numeric property is\n                // defined on the instance. After that it works fine, even if this property is deleted.\n                Object.defineProperty(this, \"0\", ENTRY_0)\n            }\n        })\n    }\n\n    concat(...arrays: T[][]): T[] {\n        ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n        return Array.prototype.concat.apply(\n            (this as any).slice(),\n            //@ts-ignore\n            arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n        )\n    }\n\n    get length(): number {\n        return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n    }\n\n    set length(newLength: number) {\n        ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n    }\n\n    get [Symbol.toStringTag]() {\n        return \"Array\"\n    }\n\n    [Symbol.iterator]() {\n        const self = this\n        let nextIndex = 0\n        return makeIterable({\n            next() {\n                return nextIndex < self.length\n                    ? { value: self[nextIndex++], done: false }\n                    : { done: true, value: undefined }\n            }\n        })\n    }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n    if (prop !== \"concat\") {\n        addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n    }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n    return {\n        enumerable: false,\n        configurable: true,\n        get: function () {\n            return this[$mobx].get_(index)\n        },\n        set: function (value) {\n            this[$mobx].set_(index, value)\n        }\n    }\n}\n\nfunction createArrayBufferItem(index: number) {\n    defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n    if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n        for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n            createArrayBufferItem(index)\n        }\n        OBSERVABLE_ARRAY_BUFFER_SIZE = max\n    }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n    initialValues: T[] | undefined,\n    enhancer: IEnhancer<T>,\n    name?: string\n): IObservableArray<T> {\n    return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n    $mobx,\n    IDepTreeNode,\n    isAtom,\n    isComputedValue,\n    isObservableArray,\n    isObservableMap,\n    isObservableObject,\n    isReaction,\n    isObservableSet,\n    die,\n    isFunction,\n    allowStateChangesStart,\n    untrackedStart,\n    allowStateChangesEnd,\n    untrackedEnd,\n    startBatch,\n    endBatch\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n    if (typeof thing === \"object\" && thing !== null) {\n        if (isObservableArray(thing)) {\n            if (property !== undefined) {\n                die(23)\n            }\n            return (thing as any)[$mobx].atom_\n        }\n        if (isObservableSet(thing)) {\n            return thing.atom_\n        }\n        if (isObservableMap(thing)) {\n            if (property === undefined) {\n                return thing.keysAtom_\n            }\n            const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n            if (!observable) {\n                die(25, property, getDebugName(thing))\n            }\n            return observable\n        }\n        if (property && !thing[$mobx]) {\n            thing[property]\n        } // See #1072\n        if (isObservableObject(thing)) {\n            if (!property) {\n                return die(26)\n            }\n            const observable = (thing as any)[$mobx].values_.get(property)\n            if (!observable) {\n                die(27, property, getDebugName(thing))\n            }\n            return observable\n        }\n        if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n            return thing\n        }\n    } else if (isFunction(thing)) {\n        if (isReaction(thing[$mobx])) {\n            // disposer function\n            return thing[$mobx]\n        }\n    }\n    die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n    if (!thing) {\n        die(29)\n    }\n    if (property !== undefined) {\n        return getAdministration(getAtom(thing, property))\n    }\n    if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n        return thing\n    }\n    if (isObservableMap(thing) || isObservableSet(thing)) {\n        return thing\n    }\n    if (thing[$mobx]) {\n        return thing[$mobx]\n    }\n    die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n    let named\n    if (property !== undefined) {\n        named = getAtom(thing, property)\n    } else if (isAction(thing)) {\n        return thing.name\n    } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n        named = getAdministration(thing)\n    } else {\n        // valid for arrays as well\n        named = getAtom(thing)\n    }\n    return named.name_\n}\n\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nexport function initObservable<T>(cb: () => T): T {\n    const derivation = untrackedStart()\n    const allowStateChanges = allowStateChangesStart(true)\n    startBatch()\n    try {\n        return cb()\n    } finally {\n        endBatch()\n        allowStateChangesEnd(allowStateChanges)\n        untrackedEnd(derivation)\n    }\n}\n","import {\n    isES6Map,\n    isObservableArray,\n    isObservableMap,\n    isES6Set,\n    isObservableSet,\n    hasProp,\n    isFunction,\n    objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n    return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n    if (a === b) {\n        return a !== 0 || 1 / a === 1 / b\n    }\n    // `null` or `undefined` only equal to itself (strict comparison).\n    if (a == null || b == null) {\n        return false\n    }\n    // `NaN`s are equivalent, but non-reflexive.\n    if (a !== a) {\n        return b !== b\n    }\n    // Exhaust primitive checks\n    const type = typeof a\n    if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n        return false\n    }\n\n    // Compare `[[Class]]` names.\n    const className = toString.call(a)\n    if (className !== toString.call(b)) {\n        return false\n    }\n    switch (className) {\n        // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n        case \"[object RegExp]\":\n        // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n        case \"[object String]\":\n            // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n            // equivalent to `new String(\"5\")`.\n            return \"\" + a === \"\" + b\n        case \"[object Number]\":\n            // `NaN`s are equivalent, but non-reflexive.\n            // Object(NaN) is equivalent to NaN.\n            if (+a !== +a) {\n                return +b !== +b\n            }\n            // An `egal` comparison is performed for other numeric values.\n            return +a === 0 ? 1 / +a === 1 / b : +a === +b\n        case \"[object Date]\":\n        case \"[object Boolean]\":\n            // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n            // millisecond representations. Note that invalid dates with millisecond representations\n            // of `NaN` are not equivalent.\n            return +a === +b\n        case \"[object Symbol]\":\n            return (\n                typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n            )\n        case \"[object Map]\":\n        case \"[object Set]\":\n            // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n            // Hide this extra level by increasing the depth.\n            if (depth >= 0) {\n                depth++\n            }\n            break\n    }\n    // Unwrap any wrapped objects.\n    a = unwrap(a)\n    b = unwrap(b)\n\n    const areArrays = className === \"[object Array]\"\n    if (!areArrays) {\n        if (typeof a != \"object\" || typeof b != \"object\") {\n            return false\n        }\n\n        // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n        // from different frames are.\n        const aCtor = a.constructor,\n            bCtor = b.constructor\n        if (\n            aCtor !== bCtor &&\n            !(\n                isFunction(aCtor) &&\n                aCtor instanceof aCtor &&\n                isFunction(bCtor) &&\n                bCtor instanceof bCtor\n            ) &&\n            \"constructor\" in a &&\n            \"constructor\" in b\n        ) {\n            return false\n        }\n    }\n\n    if (depth === 0) {\n        return false\n    } else if (depth < 0) {\n        depth = -1\n    }\n\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n    // Initializing stack of traversed objects.\n    // It's done here since we only need them for objects and arrays comparison.\n    aStack = aStack || []\n    bStack = bStack || []\n    let length = aStack.length\n    while (length--) {\n        // Linear search. Performance is inversely proportional to the number of\n        // unique nested structures.\n        if (aStack[length] === a) {\n            return bStack[length] === b\n        }\n    }\n\n    // Add the first object to the stack of traversed objects.\n    aStack.push(a)\n    bStack.push(b)\n\n    // Recursively compare objects and arrays.\n    if (areArrays) {\n        // Compare array lengths to determine if a deep comparison is necessary.\n        length = a.length\n        if (length !== b.length) {\n            return false\n        }\n        // Deep compare the contents, ignoring non-numeric properties.\n        while (length--) {\n            if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n                return false\n            }\n        }\n    } else {\n        // Deep compare objects.\n        const keys = Object.keys(a)\n        let key\n        length = keys.length\n        // Ensure that both objects contain the same number of properties before comparing deep equality.\n        if (Object.keys(b).length !== length) {\n            return false\n        }\n        while (length--) {\n            // Deep compare each member\n            key = keys[length]\n            if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n                return false\n            }\n        }\n    }\n    // Remove the first object from the stack of traversed objects.\n    aStack.pop()\n    bStack.pop()\n    return true\n}\n\nfunction unwrap(a: any) {\n    if (isObservableArray(a)) {\n        return a.slice()\n    }\n    if (isES6Map(a) || isObservableMap(a)) {\n        return Array.from(a.entries())\n    }\n    if (isES6Set(a) || isObservableSet(a)) {\n        return Array.from(a.entries())\n    }\n    return a\n}\n","export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n    iterator[Symbol.iterator] = getSelf\n    return iterator as any\n}\n\nfunction getSelf() {\n    return this\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/     Most of the public static methods exposed by the module can be found here.\n * - core/    Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/   All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/   Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n    let g = getGlobal()\n    if (typeof g[m] === \"undefined\") {\n        die(`MobX requires global '${m}' to be available or polyfilled`)\n    }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n    IObservable,\n    IDepTreeNode,\n    Reaction,\n    IReactionPublic,\n    IReactionDisposer,\n    untracked,\n    IAtom,\n    createAtom,\n    spy,\n    IComputedValue,\n    IEqualsComparer,\n    comparer,\n    IEnhancer,\n    IInterceptable,\n    IInterceptor,\n    IListenable,\n    IObjectWillChange,\n    IObjectDidChange,\n    isObservableObject,\n    IValueDidChange,\n    IValueWillChange,\n    IObservableValue,\n    isObservableValue as isBoxedObservable,\n    IObservableArray,\n    IArrayWillChange,\n    IArrayWillSplice,\n    IArraySplice,\n    IArrayUpdate,\n    IArrayDidChange,\n    isObservableArray,\n    IKeyValueMap,\n    ObservableMap,\n    IMapEntries,\n    IMapEntry,\n    IMapWillChange,\n    IMapDidChange,\n    isObservableMap,\n    IObservableMapInitialValues,\n    ObservableSet,\n    isObservableSet,\n    ISetDidChange,\n    ISetWillChange,\n    IObservableSetInitialValues,\n    transaction,\n    observable,\n    IObservableFactory,\n    CreateObservableOptions,\n    computed,\n    IComputedFactory,\n    isObservable,\n    isObservableProp,\n    isComputed,\n    isComputedProp,\n    extendObservable,\n    observe,\n    intercept,\n    autorun,\n    IAutorunOptions,\n    reaction,\n    IReactionOptions,\n    when,\n    IWhenOptions,\n    action,\n    isAction,\n    runInAction,\n    IActionFactory,\n    keys,\n    values,\n    entries,\n    set,\n    remove,\n    has,\n    get,\n    apiOwnKeys as ownKeys,\n    apiDefineProperty as defineProperty,\n    configure,\n    onBecomeObserved,\n    onBecomeUnobserved,\n    flow,\n    isFlow,\n    flowResult,\n    FlowCancellationError,\n    isFlowCancellationError,\n    toJS,\n    trace,\n    IObserverTree,\n    IDependencyTree,\n    getDependencyTree,\n    getObserverTree,\n    resetGlobalState as _resetGlobalState,\n    getGlobalState as _getGlobalState,\n    getDebugName,\n    getAtom,\n    getAdministration as _getAdministration,\n    allowStateChanges as _allowStateChanges,\n    runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n    Lambda,\n    $mobx,\n    isComputingDerivation as _isComputingDerivation,\n    onReactionError,\n    interceptReads as _interceptReads,\n    IComputedValueOptions,\n    IActionRunInfo,\n    _startAction,\n    _endAction,\n    allowStateReadsStart as _allowStateReadsStart,\n    allowStateReadsEnd as _allowStateReadsEnd,\n    makeObservable,\n    makeAutoObservable,\n    autoAction as _autoAction,\n    AnnotationsMap,\n    AnnotationMapEntry,\n    override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n    // See: https://github.com/andykog/mobx-devtools/\n    __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n        spy,\n        extras: {\n            getDebugName\n        },\n        $mobx\n    })\n}\n","import { useState } from \"react\";\nfunction makeAdapter() {\n  const adapter = {\n    replace(location) {\n      window.history.replaceState(location.state, \"\", location.search || \"?\");\n    },\n    push(location) {\n      window.history.pushState(location.state, \"\", location.search || \"?\");\n    },\n    get location() {\n      return window.location;\n    }\n  };\n  return adapter;\n}\nconst WindowHistoryAdapter = ({\n  children\n}) => {\n  const [adapter] = useState(makeAdapter);\n  return children(adapter);\n};\nexport {\n  WindowHistoryAdapter\n};\n","import * as Serialize from './serialize';\nimport { QueryParamConfig } from './types';\n\n/**\n * String values\n */\nexport const StringParam: QueryParamConfig<\n  string | null | undefined,\n  string | null | undefined\n> = {\n  encode: Serialize.encodeString,\n  decode: Serialize.decodeString,\n};\n\n/**\n * String enum\n */\nexport const createEnumParam = <T extends string>(\n  enumValues: T[]\n): QueryParamConfig<T | null | undefined, T | null | undefined> => ({\n  encode: Serialize.encodeString,\n  decode: (input) => Serialize.decodeEnum(input, enumValues),\n});\n\n/**\n * Array enum\n */\nexport const createEnumArrayParam = <T extends string>(\n  enumValues: T[]\n): QueryParamConfig<T[] | null | undefined, T[] | null | undefined> => ({\n  encode: (text) =>\n    Serialize.encodeArray(text == null || Array.isArray(text) ? text : [text]),\n  decode: (input) => Serialize.decodeArrayEnum(input, enumValues),\n});\n\n/**\n * Array delimited enum\n */\nexport const createEnumDelimitedArrayParam = <T extends string>(\n  enumValues: T[],\n  entrySeparator = '_'\n): QueryParamConfig<T[] | null | undefined, T[] | null | undefined> => ({\n  encode: (text) =>\n    Serialize.encodeDelimitedArray(\n      text == null || Array.isArray(text) ? text : [text],\n      entrySeparator\n    ),\n  decode: (input) =>\n    Serialize.decodeDelimitedArrayEnum(input, enumValues, entrySeparator),\n});\n\n/**\n * Numbers (integers or floats)\n */\nexport const NumberParam: QueryParamConfig<\n  number | null | undefined,\n  number | null | undefined\n> = {\n  encode: Serialize.encodeNumber,\n  decode: Serialize.decodeNumber,\n};\n\n/**\n * For flat objects where values are strings\n */\nexport const ObjectParam: QueryParamConfig<\n  { [key: string]: string | undefined } | null | undefined,\n  { [key: string]: string | undefined } | null | undefined\n> = {\n  encode: Serialize.encodeObject,\n  decode: Serialize.decodeObject,\n};\n\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport const ArrayParam: QueryParamConfig<\n  (string | null)[] | null | undefined,\n  (string | null)[] | null | undefined\n> = {\n  encode: Serialize.encodeArray,\n  decode: Serialize.decodeArray,\n};\n\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport const NumericArrayParam: QueryParamConfig<\n  (number | null)[] | null | undefined,\n  (number | null)[] | null | undefined\n> = {\n  encode: Serialize.encodeNumericArray,\n  decode: Serialize.decodeNumericArray,\n};\n\n/**\n * For any type of data, encoded via JSON.stringify\n */\nexport const JsonParam: QueryParamConfig<any, any> = {\n  encode: Serialize.encodeJson,\n  decode: Serialize.decodeJson,\n};\n\n/**\n * For simple dates (YYYY-MM-DD)\n */\nexport const DateParam: QueryParamConfig<\n  Date | null | undefined,\n  Date | null | undefined\n> = {\n  encode: Serialize.encodeDate,\n  decode: Serialize.decodeDate,\n  equals: (\n    valueA: Date | null | undefined,\n    valueB: Date | null | undefined\n  ) => {\n    if (valueA === valueB) return true;\n    if (valueA == null || valueB == null) return valueA === valueB;\n\n    // ignore time of day\n    return (\n      valueA.getFullYear() === valueB.getFullYear() &&\n      valueA.getMonth() === valueB.getMonth() &&\n      valueA.getDate() === valueB.getDate()\n    );\n  },\n};\n\n/**\n * For dates in simplified extended ISO format (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ)\n */\nexport const DateTimeParam: QueryParamConfig<\n  Date | null | undefined,\n  Date | null | undefined\n> = {\n  encode: Serialize.encodeDateTime,\n  decode: Serialize.decodeDateTime,\n  equals: (\n    valueA: Date | null | undefined,\n    valueB: Date | null | undefined\n  ) => {\n    if (valueA === valueB) return true;\n    if (valueA == null || valueB == null) return valueA === valueB;\n\n    return valueA.valueOf() === valueB.valueOf();\n  },\n};\n\n/**\n * For boolean values: 1 = true, 0 = false\n */\nexport const BooleanParam: QueryParamConfig<\n  boolean | null | undefined,\n  boolean | null | undefined\n> = {\n  encode: Serialize.encodeBoolean,\n  decode: Serialize.decodeBoolean,\n};\n\n/**\n * For flat objects where the values are numbers\n */\nexport const NumericObjectParam: QueryParamConfig<\n  { [key: string]: number | null | undefined } | null | undefined,\n  { [key: string]: number | null | undefined } | null | undefined\n> = {\n  encode: Serialize.encodeNumericObject,\n  decode: Serialize.decodeNumericObject,\n};\n\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport const DelimitedArrayParam: QueryParamConfig<\n  (string | null)[] | null | undefined,\n  (string | null)[] | null | undefined\n> = {\n  encode: Serialize.encodeDelimitedArray,\n  decode: Serialize.decodeDelimitedArray,\n};\n\n/**\n * For flat arrays where the values are numbers, filters out undefined values during decode\n */\nexport const DelimitedNumericArrayParam: QueryParamConfig<\n  (number | null)[] | null | undefined,\n  (number | null)[] | null | undefined\n> = {\n  encode: Serialize.encodeDelimitedNumericArray,\n  decode: Serialize.decodeDelimitedNumericArray,\n};\n","/**\n * Interprets an encoded string and returns either the string or null/undefined if not available.\n * Ignores array inputs (takes just first element in array)\n * @param input encoded string\n */\nfunction getEncodedValue(\n  input: string | (string | null)[] | null | undefined,\n  allowEmptyString?: boolean\n): string | null | undefined {\n  if (input == null) {\n    return input;\n  }\n  // '' or []\n  if (\n    input.length === 0 &&\n    (!allowEmptyString || (allowEmptyString && input !== ''))\n  ) {\n    return null;\n  }\n\n  const str = input instanceof Array ? input[0] : input;\n  if (str == null) {\n    return str;\n  }\n  if (!allowEmptyString && str === '') {\n    return null;\n  }\n\n  return str;\n}\n\n/**\n * Interprets an encoded string and return null/undefined or an array with\n * the encoded string contents\n * @param input encoded string\n */\nfunction getEncodedValueArray(\n  input: string | (string | null)[] | null | undefined\n): (string | null)[] | null | undefined {\n  if (input == null) {\n    return input;\n  }\n\n  return input instanceof Array ? input : input === '' ? [] : [input];\n}\n\n/**\n * Encodes a date as a string in YYYY-MM-DD format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDate(\n  date: Date | null | undefined\n): string | null | undefined {\n  if (date == null) {\n    return date;\n  }\n\n  const year = date.getFullYear();\n  const month = date.getMonth() + 1;\n  const day = date.getDate();\n\n  return `${year}-${month < 10 ? `0${month}` : month}-${\n    day < 10 ? `0${day}` : day\n  }`;\n}\n\n/**\n * Converts a date in the format 'YYYY-mm-dd...' into a proper date, because\n * new Date() does not do that correctly. The date can be as complete or incomplete\n * as necessary (aka, '2015', '2015-10', '2015-10-01').\n * It will not work for dates that have times included in them.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param  {String} input String date form like '2015-10-01'\n * @return {Date} parsed date\n */\nexport function decodeDate(\n  input: string | (string | null)[] | null | undefined\n): Date | null | undefined {\n  const dateString = getEncodedValue(input);\n  if (dateString == null) return dateString;\n\n  const parts = dateString.split('-') as any;\n  // may only be a year so won't even have a month\n  if (parts[1] != null) {\n    parts[1] -= 1; // Note: months are 0-based\n  } else {\n    // just a year, set the month and day to the first\n    parts[1] = 0;\n    parts[2] = 1;\n  }\n\n  const decoded = new Date(...(parts as [number, number, number]));\n\n  if (isNaN(decoded.getTime())) {\n    return null;\n  }\n\n  return decoded;\n}\n\n/**\n * Encodes a date as a string in ISO 8601 (\"2019-05-28T10:58:40Z\") format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDateTime(\n  date: Date | null | undefined\n): string | null | undefined {\n  if (date == null) {\n    return date;\n  }\n\n  return date.toISOString();\n}\n\n/**\n * Converts a date in the https://en.wikipedia.org/wiki/ISO_8601 format.\n * For allowed inputs see specs:\n *  - https://tools.ietf.org/html/rfc2822#page-14\n *  - http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n *\n * If an array is provided, only the first entry is used.\n *\n * @param  {String} input String date form like '1995-12-17T03:24:00'\n * @return {Date} parsed date\n */\nexport function decodeDateTime(\n  input: string | (string | null)[] | null | undefined\n): Date | null | undefined {\n  const dateString = getEncodedValue(input);\n  if (dateString == null) return dateString;\n\n  const decoded = new Date(dateString);\n\n  if (isNaN(decoded.getTime())) {\n    return null;\n  }\n\n  return decoded;\n}\n\n/**\n * Encodes a boolean as a string. true -> \"1\", false -> \"0\".\n *\n * @param {Boolean} bool\n * @return {String} the encoded boolean\n */\nexport function encodeBoolean(\n  bool: boolean | null | undefined\n): string | null | undefined {\n  if (bool == null) {\n    return bool;\n  }\n\n  return bool ? '1' : '0';\n}\n\n/**\n * Decodes a boolean from a string. \"1\" -> true, \"0\" -> false.\n * Everything else maps to undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded boolean string\n * @return {Boolean} the boolean value\n */\nexport function decodeBoolean(\n  input: string | (string | null)[] | null | undefined\n): boolean | null | undefined {\n  const boolStr = getEncodedValue(input);\n  if (boolStr == null) return boolStr;\n\n  if (boolStr === '1') {\n    return true;\n  } else if (boolStr === '0') {\n    return false;\n  }\n\n  return null;\n}\n\n/**\n * Encodes a number as a string.\n *\n * @param {Number} num\n * @return {String} the encoded number\n */\nexport function encodeNumber(\n  num: number | null | undefined\n): string | null | undefined {\n  if (num == null) {\n    return num;\n  }\n\n  return String(num);\n}\n\n/**\n * Decodes a number from a string. If the number is invalid,\n * it returns undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded number string\n * @return {Number} the number value\n */\nexport function decodeNumber(\n  input: string | (string | null)[] | null | undefined\n): number | null | undefined {\n  const numStr = getEncodedValue(input);\n  if (numStr == null) return numStr;\n  if (numStr === '') return null;\n\n  const result = +numStr;\n  return result;\n}\n\n/**\n * Encodes a string while safely handling null and undefined values.\n *\n * @param {String} str a string to encode\n * @return {String} the encoded string\n */\nexport function encodeString(\n  str: string | (string | null)[] | null | undefined\n): string | null | undefined {\n  if (str == null) {\n    return str;\n  }\n\n  return String(str);\n}\n\n/**\n * Decodes a string while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @return {String} the string value\n */\nexport function decodeString(\n  input: string | (string | null)[] | null | undefined\n): string | null | undefined {\n  const str = getEncodedValue(input, true);\n  if (str == null) return str;\n\n  return String(str);\n}\n\n/**\n * Decodes an enum value while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @param {String[]} enumValues allowed enum values\n * @return {String} the string value from enumValues\n */\nexport function decodeEnum<T extends string>(\n  input: string | (string | null)[] | null | undefined,\n  enumValues: T[]\n): T | null | undefined {\n  const str = decodeString(input);\n  if (str == null) return str;\n  return enumValues.includes(str as any) ? (str as T) : undefined;\n}\n\n/**\n * Decodes an enum value from arrays while safely handling null and undefined values.\n *\n * @template T\n * @param {String} input the encoded string\n * @param {T[]} enumValues allowed enum values\n * @return {T[]} the string value from enumValues\n */\nexport function decodeArrayEnum<T extends string>(\n  input: string | (string | null)[] | null | undefined,\n  enumValues: T[]\n): T[] | null | undefined {\n  const arr = decodeArray(input);\n  if (arr == null) return arr;\n  if (!arr.length) return undefined;\n  return arr.every((str) => str != null && enumValues.includes(str as T))\n    ? (arr as T[])\n    : undefined;\n}\n\n/**\n * Decodes an enum value from arrays while safely handling null and undefined values.\n *\n * @template T\n * @param {String} input the encoded string\n * @param {T[]} enumValues allowed enum values\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {T[]} the string value from enumValues\n */\nexport function decodeDelimitedArrayEnum<T extends string>(\n  input: string | (string | null)[] | null | undefined,\n  enumValues: T[],\n  entrySeparator = '_'\n): T[] | null | undefined {\n  if (input != null && Array.isArray(input) && !input.length) return undefined;\n  const arr = decodeDelimitedArray(input, entrySeparator);\n  return decodeArrayEnum(arr, enumValues);\n}\n\n/**\n * Encodes anything as a JSON string.\n *\n * @param {Any} any The thing to be encoded\n * @return {String} The JSON string representation of any\n */\nexport function encodeJson(\n  any: any | null | undefined\n): string | null | undefined {\n  if (any == null) {\n    return any;\n  }\n\n  return JSON.stringify(any);\n}\n\n/**\n * Decodes a JSON string into javascript\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @return {Any} The javascript representation\n */\nexport function decodeJson(\n  input: string | (string | null)[] | null | undefined\n): any | null | undefined {\n  const jsonStr = getEncodedValue(input);\n  if (jsonStr == null) return jsonStr;\n\n  let result = null;\n  try {\n    result = JSON.parse(jsonStr);\n  } catch (e) {\n    /* ignore errors, returning undefined */\n  }\n\n  return result;\n}\n\n/**\n * Encodes an array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeArray(\n  array: (string | null)[] | null | undefined\n): (string | null)[] | null | undefined {\n  if (array == null) {\n    return array;\n  }\n\n  return array;\n}\n\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeArray(\n  input: string | (string | null)[] | null | undefined\n): (string | null)[] | null | undefined {\n  const arr = getEncodedValueArray(input);\n  if (arr == null) return arr;\n\n  return arr;\n}\n\n/**\n * Encodes a numeric array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeNumericArray(\n  array: (number | null)[] | null | undefined\n): (string | null)[] | null | undefined {\n  if (array == null) {\n    return array;\n  }\n\n  return array.map(String);\n}\n\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined and NaN values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeNumericArray(\n  input: string | (string | null)[] | null | undefined\n): (number | null)[] | null | undefined {\n  const arr = decodeArray(input);\n  if (arr == null) return arr;\n\n  return arr.map((d) => (d === '' || d == null ? null : +d));\n}\n\n/**\n * Encodes an array as a delimited string. For example,\n * ['a', 'b'] -> 'a_b' with entrySeparator='_'\n *\n * @param array The array to be encoded\n * @param entrySeparator The string used to delimit entries\n * @return The array as a string with elements joined by the\n * entry separator\n */\nexport function encodeDelimitedArray(\n  array: (string | null)[] | null | undefined,\n  entrySeparator = '_'\n): string | null | undefined {\n  if (array == null) {\n    return array;\n  }\n\n  return array.join(entrySeparator);\n}\n\n/**\n * Decodes a delimited string into javascript array. For example,\n * 'a_b' -> ['a', 'b'] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedArray(\n  input: string | (string | null)[] | null | undefined,\n  entrySeparator = '_'\n): (string | null)[] | null | undefined {\n  const arrayStr = getEncodedValue(input, true);\n  if (arrayStr == null) return arrayStr;\n  if (arrayStr === '') return [];\n\n  return arrayStr.split(entrySeparator);\n}\n\n/**\n * Encodes a numeric array as a delimited string. (alias of encodeDelimitedArray)\n * For example, [1, 2] -> '1_2' with entrySeparator='_'\n *\n * @param {Array} array The array to be encoded\n * @return {String} The JSON string representation of array\n */\nexport const encodeDelimitedNumericArray = encodeDelimitedArray as (\n  array: (number | null)[] | null | undefined,\n  entrySeparator?: string\n) => string | null | undefined;\n\n/**\n * Decodes a delimited string into javascript array where all entries are numbers\n * For example, '1_2' -> [1, 2] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} jsonStr The JSON string representation\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedNumericArray(\n  arrayStr: string | (string | null)[] | null | undefined,\n  entrySeparator = '_'\n): (number | null)[] | null | undefined {\n  const decoded = decodeDelimitedArray(arrayStr, entrySeparator);\n  if (decoded == null) return decoded;\n\n  return decoded.map((d) => (d === '' || d == null ? null : +d));\n}\n\n/**\n * Encode simple objects as readable strings. Works only for simple,\n * flat objects where values are numbers, strings.\n *\n * For example { foo: bar, boo: baz } -> \"foo-bar_boo-baz\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport function encodeObject(\n  obj: { [key: string]: string | null | number | undefined } | null | undefined,\n  keyValSeparator = '-',\n  entrySeparator = '_'\n): string | null | undefined {\n  if (obj == null) return obj; // null or undefined\n  if (!Object.keys(obj).length) return ''; // {} case\n\n  return Object.keys(obj)\n    .map((key) => `${key}${keyValSeparator}${obj[key]}`)\n    .join(entrySeparator);\n}\n\n/**\n * Decodes a simple object to javascript. Currently works only for simple,\n * flat objects where values are strings.\n *\n * For example \"foo-bar_boo-baz\" -> { foo: bar, boo: baz }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeObject(\n  input: string | (string | null)[] | null | undefined,\n  keyValSeparator = '-',\n  entrySeparator = '_'\n): { [key: string]: string } | null | undefined {\n  const objStr = getEncodedValue(input, true);\n  if (objStr == null) return objStr;\n  if (objStr === '') return {};\n\n  const obj: { [key: string]: string } = {};\n\n  const keyValSeparatorRegExp = new RegExp(`${keyValSeparator}(.*)`);\n  objStr.split(entrySeparator).forEach((entryStr) => {\n    const [key, value] = entryStr.split(keyValSeparatorRegExp);\n    obj[key] = value;\n  });\n\n  return obj;\n}\n\n/**\n * Encode simple objects as readable strings. Alias of encodeObject.\n *\n * For example { foo: 123, boo: 521 } -> \"foo-123_boo-521\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport const encodeNumericObject = encodeObject as (\n  obj: { [key: string]: number | null | undefined } | null | undefined,\n  keyValSeparator?: string,\n  entrySeparator?: string\n) => string | null | undefined;\n\n/**\n * Decodes a simple object to javascript where all values are numbers.\n * Currently works only for simple, flat objects.\n *\n * For example \"foo-123_boo-521\" -> { foo: 123, boo: 521 }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeNumericObject(\n  input: string | (string | null)[] | null | undefined,\n  keyValSeparator = '-',\n  entrySeparator = '_'\n): { [key: string]: number | null | undefined } | null | undefined {\n  const decoded: { [key: string]: string } | null | undefined = decodeObject(\n    input,\n    keyValSeparator,\n    entrySeparator\n  );\n\n  if (decoded == null) return decoded;\n\n  // convert to numbers\n  const decodedNumberObj: { [key: string]: number | null | undefined } = {};\n  for (const key of Object.keys(decoded)) {\n    decodedNumberObj[key] = decodeNumber(decoded[key]);\n  }\n\n  return decodedNumberObj;\n}\n","import { EncodedQuery } from './types';\nimport { objectToSearchString } from './objectToSearchString';\nimport { searchStringToObject } from '.';\n\n/**\n * An example of a transformSearchString function that undoes encoding of\n * common JSON characters that are technically allowed in URLs.\n */\nconst JSON_SAFE_CHARS = `{}[],\":`\n  .split('')\n  .map((d) => [d, encodeURIComponent(d)]);\n\nfunction getHrefFromLocation(location: Location, search: string): string {\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL\n  let href: string = search;\n\n  if (location.href) {\n      // TODO - implement base option if location.href is relative\n      //  see https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#syntax\n    try {\n      const url = new URL(location.href);\n      href = `${url.origin}${url.pathname}${search}`;\n    } catch (e) {\n      href = '';\n    }\n  }\n\n  return href;\n}\n\nexport function transformSearchStringJsonSafe(searchString: string): string {\n  let str = searchString;\n  for (let [char, code] of JSON_SAFE_CHARS) {\n    str = str.replace(new RegExp('\\\\' + code, 'g'), char);\n  }\n  return str;\n}\n\n/**\n * Update a location, wiping out parameters not included in encodedQuery\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateLocation(\n  encodedQuery: EncodedQuery,\n  location: Location,\n  objectToSearchStringFn = objectToSearchString\n): Location {\n  let encodedSearchString = objectToSearchStringFn(encodedQuery);\n\n  const search = encodedSearchString.length ? `?${encodedSearchString}` : '';\n\n  const newLocation: Location & {\n    key: string;\n    query: EncodedQuery;\n  } = {\n    ...location,\n    key: `${Date.now()}`, // needed for some routers (e.g. react-router)\n    href: getHrefFromLocation(location, search),\n    search,\n    query: encodedQuery, // needed for some routers (e.g. found)\n  };\n\n  return newLocation;\n}\n\n/**\n * Update a location while retaining existing parameters.\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateInLocation(\n  encodedQueryReplacements: EncodedQuery,\n  location: Location,\n  objectToSearchStringFn = objectToSearchString,\n  searchStringToObjectFn = searchStringToObject\n): Location {\n  // explicitly avoid parsing numbers to ensure the\n  // return type has the same shape as EncodeQuery\n  const currQuery = searchStringToObjectFn(location.search);\n\n  const newQuery = {\n    ...currQuery,\n    ...encodedQueryReplacements,\n  };\n\n  return updateLocation(newQuery, location, objectToSearchStringFn);\n}\n","type EncodedValue = string | (string | null)[] | null | undefined;\n\ntype CachedParam = {\n  stringified: EncodedValue;\n  decoded: any;\n  decode: Function;\n};\n\n/**\n * simple cache that keeps values around so long as something\n * has registered interest in it (typically via calling useQueryParams).\n * Caches based on the stringified value as the key and the\n * last passed in decode function.\n */\nexport class DecodedParamCache {\n  private paramsMap: Map<string, CachedParam>;\n  private registeredParams: Map<string, number>;\n\n  constructor() {\n    this.paramsMap = new Map();\n    this.registeredParams = new Map();\n  }\n\n  set(\n    param: string,\n    stringifiedValue: EncodedValue,\n    decodedValue: any,\n    decode: Function\n  ) {\n    this.paramsMap.set(param, {\n      stringified: stringifiedValue,\n      decoded: decodedValue,\n      decode,\n    });\n  }\n\n  /**\n   * A param has been cached if the stringified value and decode function matches\n   */\n  has(param: string, stringifiedValue: EncodedValue, decode?: Function) {\n    if (!this.paramsMap.has(param)) return false;\n    const cachedParam = this.paramsMap.get(param);\n    if (!cachedParam) return false;\n\n    return (\n      cachedParam.stringified === stringifiedValue &&\n      (decode == null || cachedParam.decode === decode)\n    );\n  }\n\n  get(param: string) {\n    if (this.paramsMap.has(param)) return this.paramsMap.get(param)?.decoded;\n    return undefined;\n  }\n\n  /**\n   * Register interest in a set of param names. When these go to 0 they are cleaned out.\n   */\n  registerParams(paramNames: string[]) {\n    for (const param of paramNames) {\n      const currValue = this.registeredParams.get(param) || 0;\n      this.registeredParams.set(param, currValue + 1);\n    }\n  }\n\n  /**\n   * Unregister interest in a set of param names. If there is no remaining interest,\n   * remove the decoded value from the cache to prevent memory leaks.\n   */\n  unregisterParams(paramNames: string[]) {\n    for (const param of paramNames) {\n      const value = (this.registeredParams.get(param) || 0) - 1;\n      if (value <= 0) {\n        this.registeredParams.delete(param);\n        if (this.paramsMap.has(param)) {\n          this.paramsMap.delete(param);\n        }\n      } else {\n        this.registeredParams.set(param, value);\n      }\n    }\n  }\n\n  clear() {\n    this.paramsMap.clear();\n    this.registeredParams.clear();\n  }\n}\n\nexport const decodedParamCache = new DecodedParamCache();\n","import {\n  QueryParamConfig,\n  QueryParamConfigMap,\n  StringParam,\n} from 'serialize-query-params';\nimport { QueryParamOptions } from './options';\nimport { QueryParamConfigMapWithInherit } from './types';\n\n/**\n * Convert inherit strings from a query param config to actual\n * parameters based on predefined ('inherited') mappings.\n * Defaults to StringParam.\n */\nexport function convertInheritedParamStringsToParams(\n  paramConfigMapWithInherit: QueryParamConfigMapWithInherit,\n  options: QueryParamOptions\n): QueryParamConfigMap {\n  const paramConfigMap: QueryParamConfigMap = {};\n  let hasInherit = false;\n\n  const hookKeys = Object.keys(paramConfigMapWithInherit);\n  let paramKeys = hookKeys;\n\n  // include known params if asked for explicitly, or no params were configured and we didn't\n  // explicitly say not to\n  const includeKnownParams =\n    options.includeKnownParams ||\n    (options.includeKnownParams !== false && hookKeys.length === 0);\n\n  if (includeKnownParams) {\n    const knownKeys = Object.keys(options.params ?? {});\n    paramKeys.push(...knownKeys);\n  }\n\n  for (const key of paramKeys) {\n    const param = paramConfigMapWithInherit[key];\n    // does it have an existing parameter definition? use it\n    if (param != null && typeof param === 'object') {\n      paramConfigMap[key] = param;\n      continue;\n    }\n\n    // otherwise, we have to inherit or use the default\n    hasInherit = true;\n\n    // default is StringParam\n    paramConfigMap[key] = options.params?.[key] ?? StringParam;\n  }\n\n  // if we didn't inherit anything, just return the input\n  if (!hasInherit) return paramConfigMapWithInherit as QueryParamConfigMap;\n\n  return paramConfigMap;\n}\n\n/**\n * Extends a config to include params for all specified keys,\n * defaulting to StringParam if not found in the inheritedParams\n * map.\n */\nexport function extendParamConfigForKeys(\n  baseParamConfigMap: QueryParamConfigMap,\n  paramKeys: string[],\n  inheritedParams?: QueryParamOptions['params'] | undefined,\n  defaultParam?: QueryParamConfig<any> | undefined\n) {\n  // if we aren't inheriting anything or there are no params, return the input\n  if (!inheritedParams || !paramKeys.length) return baseParamConfigMap;\n\n  let paramConfigMap = { ...baseParamConfigMap };\n  let hasInherit = false;\n  for (const paramKey of paramKeys) {\n    // if it is missing a parameter, fill it in\n    if (!Object.prototype.hasOwnProperty.call(paramConfigMap, paramKey)) {\n      paramConfigMap[paramKey] = inheritedParams[paramKey] ?? defaultParam;\n      hasInherit = true;\n    }\n  }\n\n  if (!hasInherit) return baseParamConfigMap;\n  return paramConfigMap;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license at\n * https://github.com/facebook/fbjs/blob/master/LICENSE\n */\n\n/*eslint-disable no-self-compare */\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x: any, y: any): boolean {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    // Added the nonzero y check to make Flow happy, but it is redundant\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    // Step 6.a: NaN == NaN\n    return x !== x && y !== y;\n  }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n\n * @pbeshai modification of shallowEqual to take into consideration a map providing\n * equals functions\n */\nexport default function shallowEqual(\n  objA: any,\n  objB: any,\n  equalMap?: any\n): boolean {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if (\n    typeof objA !== 'object' ||\n    objA === null ||\n    typeof objB !== 'object' ||\n    objB === null\n  ) {\n    return false;\n  }\n\n  const keysA = Object.keys(objA);\n  const keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  for (let i = 0; i < keysA.length; i++) {\n    const isEqual = equalMap?.[keysA[i]]?.equals ?? is;\n    if (\n      !hasOwnProperty.call(objB, keysA[i]) ||\n      !isEqual(objA[keysA[i]], objB[keysA[i]])\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","import {\n  DecodedValueMap,\n  EncodedQuery,\n  QueryParamConfigMap,\n} from 'serialize-query-params';\nimport { DecodedParamCache } from './decodedParamCache';\nimport shallowEqual from './shallowEqual';\n\n/**\n * Helper to get the latest decoded values with smart caching.\n * Abstracted into its own function to allow re-use in a functional setter (#26)\n */\nexport function getLatestDecodedValues<QPCMap extends QueryParamConfigMap>(\n  parsedParams: EncodedQuery,\n  paramConfigMap: QPCMap,\n  decodedParamCache: DecodedParamCache\n) {\n  const decodedValues: Partial<DecodedValueMap<QPCMap>> = {};\n\n  // we have new encoded values, so let's get new decoded values.\n  // recompute new values but only for those that changed\n  const paramNames = Object.keys(paramConfigMap);\n  for (const paramName of paramNames) {\n    // do we have a new encoded value?\n    const paramConfig = paramConfigMap[paramName];\n    const encodedValue = parsedParams[paramName];\n\n    // if we have a new encoded value, re-decode. otherwise reuse cache\n    let decodedValue;\n    if (decodedParamCache.has(paramName, encodedValue, paramConfig.decode)) {\n      decodedValue = decodedParamCache.get(paramName);\n    } else {\n      decodedValue = paramConfig.decode(encodedValue);\n\n      // check if we had a cached value for this encoded value but a different encoder\n      // (sometimes people inline decode functions, e.g. withDefault...)\n      // AND we had a different equals check than ===\n      if (\n        paramConfig.equals &&\n        decodedParamCache.has(paramName, encodedValue)\n      ) {\n        const oldDecodedValue = decodedParamCache.get(paramName);\n        if (paramConfig.equals(decodedValue, oldDecodedValue)) {\n          decodedValue = oldDecodedValue;\n        }\n      }\n\n      // do not cache undefined values\n      if (decodedValue !== undefined) {\n        decodedParamCache.set(\n          paramName,\n          encodedValue,\n          decodedValue,\n          paramConfig.decode\n        );\n      }\n    }\n\n    // in case the decode function didn't interpret `default` for some reason,\n    // we can interpret it here as a backup\n    if (decodedValue === undefined && paramConfig.default !== undefined) {\n      decodedValue = paramConfig.default;\n    }\n\n    decodedValues[paramName as keyof QPCMap] = decodedValue;\n  }\n\n  return decodedValues as DecodedValueMap<QPCMap>;\n}\n\n/**\n * Wrap get latest so we use the same exact object if the current\n * values are shallow equal to the previous.\n */\nexport function makeStableGetLatestDecodedValues() {\n  let prevDecodedValues: DecodedValueMap<any> | undefined;\n\n  function stableGetLatest<QPCMap extends QueryParamConfigMap>(\n    parsedParams: EncodedQuery,\n    paramConfigMap: QPCMap,\n    decodedParamCache: DecodedParamCache\n  ) {\n    const decodedValues = getLatestDecodedValues(\n      parsedParams,\n      paramConfigMap,\n      decodedParamCache\n    );\n    if (\n      prevDecodedValues != null &&\n      shallowEqual(prevDecodedValues, decodedValues)\n    ) {\n      return prevDecodedValues;\n    }\n    prevDecodedValues = decodedValues;\n    return decodedValues;\n  }\n\n  return stableGetLatest;\n}\n","import { EncodedQuery } from 'serialize-query-params';\nimport shallowEqual from './shallowEqual';\nimport { deserializeUrlNameMap } from './urlName';\n\nlet cachedSearchString: string | undefined;\nlet cachedUrlNameMapString: string | undefined;\nlet cachedSearchStringToObjectFn:\n  | ((searchString: string) => EncodedQuery)\n  | undefined;\nlet cachedParsedQuery: EncodedQuery = {};\n\n/**\n * cached conversion of ?foo=1&bar=2 to { foo: '1', bar: '2' }\n */\nexport const memoSearchStringToObject = (\n  searchStringToObject: (searchString: string) => EncodedQuery,\n  searchString?: string | undefined,\n  /** optionally provide a mapping string to handle renames via `urlName`\n   * mapping are separated by \\n and mappings are urlName\\0paramName\n   */\n  urlNameMapStr?: string | undefined\n) => {\n  // if we have a cached version, just return it\n  if (\n    cachedSearchString === searchString &&\n    cachedSearchStringToObjectFn === searchStringToObject &&\n    cachedUrlNameMapString === urlNameMapStr\n  ) {\n    return cachedParsedQuery;\n  }\n\n  cachedSearchString = searchString;\n  cachedSearchStringToObjectFn = searchStringToObject;\n  const newParsedQuery = searchStringToObject(searchString ?? '');\n  cachedUrlNameMapString = urlNameMapStr;\n\n  const urlNameMap = deserializeUrlNameMap(urlNameMapStr);\n\n  // keep old values for keys if they are the same\n  for (let [key, value] of Object.entries(newParsedQuery)) {\n    // handle url name mapping\n    if (urlNameMap?.[key]) {\n      delete newParsedQuery[key];\n      key = urlNameMap[key];\n      newParsedQuery[key] = value;\n    }\n\n    const oldValue = cachedParsedQuery[key];\n    if (shallowEqual(value, oldValue)) {\n      newParsedQuery[key] = oldValue;\n    }\n  }\n\n  cachedParsedQuery = newParsedQuery;\n  return newParsedQuery;\n};\n","import { EncodedValueMap, QueryParamConfigMap } from 'serialize-query-params';\n\n/**\n * Create an alias mapping using the optional `urlName` property on params\n */\nexport function serializeUrlNameMap(\n  paramConfigMap: QueryParamConfigMap\n): string | undefined {\n  let urlNameMapParts: string[] | undefined;\n  for (const paramName in paramConfigMap) {\n    if (paramConfigMap[paramName].urlName) {\n      const urlName = paramConfigMap[paramName].urlName;\n      const part = `${urlName}\\0${paramName}`;\n      if (!urlNameMapParts) urlNameMapParts = [part];\n      else urlNameMapParts.push(part);\n    }\n  }\n\n  return urlNameMapParts ? urlNameMapParts.join('\\n') : undefined;\n}\n\n/**\n * Converts the stringified alias/urlName map back into an object\n */\nexport function deserializeUrlNameMap(\n  urlNameMapStr: string | undefined\n): Record<string, string> | undefined {\n  if (!urlNameMapStr) return undefined;\n\n  return Object.fromEntries(\n    urlNameMapStr.split('\\n').map((part) => part.split('\\0'))\n  );\n}\n\n/**\n * converts { searchString: 'foo'} to { q: 'foo'} if the searchString\n * is configured to have \"q\" as its urlName.\n */\nexport function applyUrlNames(\n  encodedValues: Partial<EncodedValueMap<any>>,\n  paramConfigMap: QueryParamConfigMap\n) {\n  let newEncodedValues: Partial<EncodedValueMap<any>> = {};\n  for (const paramName in encodedValues) {\n    if (paramConfigMap[paramName]?.urlName != null) {\n      newEncodedValues[paramConfigMap[paramName].urlName!] =\n        encodedValues[paramName];\n    } else {\n      newEncodedValues[paramName] = encodedValues[paramName];\n    }\n  }\n\n  return newEncodedValues;\n}\n","import {\n  EncodedQuery,\n  QueryParamConfigMap,\n  searchStringToObject,\n  objectToSearchString,\n} from 'serialize-query-params';\nimport { UrlUpdateType } from './types';\n\nexport const defaultOptions: QueryParamOptionsWithRequired = {\n  searchStringToObject: searchStringToObject,\n  objectToSearchString: objectToSearchString,\n  updateType: 'pushIn',\n  includeKnownParams: undefined,\n  includeAllParams: false,\n  removeDefaultsFromUrl: false,\n  enableBatching: false,\n  skipUpdateWhenNoChange: true,\n};\n\nexport interface QueryParamOptions {\n  searchStringToObject?: (searchString: string) => EncodedQuery;\n  objectToSearchString?: (encodedParams: EncodedQuery) => string;\n  updateType?: UrlUpdateType;\n  includeKnownParams?: boolean;\n  includeAllParams?: boolean;\n  /** whether sets that result in no change to the location search string should be ignored (default: true) */\n  skipUpdateWhenNoChange?: boolean;\n  params?: QueryParamConfigMap;\n\n  /** when a value equals its default, do not encode it in the URL when updating */\n  removeDefaultsFromUrl?: boolean;\n\n  /**\n   * @experimental this is an experimental option to combine multiple `set` calls\n   * into a single URL update.\n   */\n  enableBatching?: boolean;\n}\n\ntype RequiredOptions = 'searchStringToObject' | 'objectToSearchString';\nexport type QueryParamOptionsWithRequired = Required<\n  Pick<QueryParamOptions, RequiredOptions>\n> &\n  Omit<QueryParamOptions, RequiredOptions>;\n\nexport function mergeOptions(\n  parentOptions: QueryParamOptionsWithRequired,\n  currOptions: QueryParamOptions | null | undefined\n): QueryParamOptionsWithRequired {\n  if (currOptions == null) {\n    currOptions = {};\n  }\n\n  const merged = { ...parentOptions, ...currOptions };\n\n  // deep merge param objects\n  if (currOptions.params && parentOptions.params) {\n    merged.params = { ...parentOptions.params, ...currOptions.params };\n  }\n\n  return merged;\n}\n","import * as React from 'react';\nimport {\n  mergeOptions,\n  defaultOptions,\n  QueryParamOptions,\n  QueryParamOptionsWithRequired,\n} from './options';\nimport { QueryParamAdapter, QueryParamAdapterComponent } from './types';\n\n/**\n * Shape of the QueryParamContext, which the hooks consume to read and\n * update the URL state.\n */\ntype QueryParamContextValue = {\n  adapter: QueryParamAdapter;\n  options: QueryParamOptionsWithRequired;\n};\n\nconst providerlessContextValue: QueryParamContextValue = {\n  adapter: {} as QueryParamAdapter,\n  options: defaultOptions,\n};\n\nexport const QueryParamContext = React.createContext<QueryParamContextValue>(\n  providerlessContextValue\n);\n\nexport function useQueryParamContext() {\n  const value = React.useContext(QueryParamContext);\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    (value === undefined || value === providerlessContextValue)\n  ) {\n    throw new Error('useQueryParams must be used within a QueryParamProvider');\n  }\n\n  return value;\n}\n\n/**\n * Props for the Provider component, used to hook the active routing\n * system into our controls. Note only the root provider requires\n * `adapter`. We try to encourage that via intellisense by writing\n * the types this way (you must provide at least one of adapter or options,\n * default intellisense suggests adapter required.)\n */\ntype QueryParamProviderProps = {\n  /** Main app goes here */\n  children: React.ReactNode;\n} & (\n  | {\n      adapter?: never;\n      options: QueryParamOptions;\n    }\n  | {\n      /** required for the root provider but not for nested ones */\n      adapter: QueryParamAdapterComponent;\n      options?: QueryParamOptions;\n    }\n);\n\nfunction QueryParamProviderInner({\n  children,\n  adapter,\n  options,\n}: {\n  children: React.ReactNode;\n  adapter?: QueryParamAdapter | undefined;\n  options?: QueryParamOptions;\n}) {\n  // allow merging in parent options\n  const { adapter: parentAdapter, options: parentOptions } =\n    React.useContext(QueryParamContext);\n\n  const value = React.useMemo(() => {\n    return {\n      adapter: adapter ?? parentAdapter,\n      options: mergeOptions(\n        parentOptions,\n        options\n      ) as QueryParamOptionsWithRequired,\n    };\n  }, [adapter, options, parentAdapter, parentOptions]);\n\n  return (\n    <QueryParamContext.Provider value={value}>\n      {children}\n    </QueryParamContext.Provider>\n  );\n}\n\n/**\n * Context provider for query params to have access to the\n * active routing system, enabling updates to the URL.\n */\nexport function QueryParamProvider({\n  children,\n  adapter,\n  options,\n}: QueryParamProviderProps) {\n  const Adapter = adapter;\n  return Adapter ? (\n    <Adapter>\n      {(adapter) => (\n        <QueryParamProviderInner adapter={adapter} options={options}>\n          {children}\n        </QueryParamProviderInner>\n      )}\n    </Adapter>\n  ) : (\n    <QueryParamProviderInner options={options}>\n      {children}\n    </QueryParamProviderInner>\n  );\n}\n\nexport default QueryParamProvider;\n","import { EncodedQuery } from './types';\n\n/**\n * Default implementation of searchStringToObject powered by URLSearchParams\n * This converts a search string like `?foo=123&bar=x` to { foo: '123', bar: 'x' }\n * This is only a very basic version, you may prefer the advanced versions offered\n * by third party libraries like query-string (\"parse\") or qs.\n */\nexport function searchStringToObject(searchString: string): EncodedQuery {\n  const params = new URLSearchParams(searchString);\n  const parsed: EncodedQuery = {};\n  for (let [key, value] of params) {\n    if (Object.prototype.hasOwnProperty.call(parsed, key)) {\n      if (Array.isArray(parsed[key])) {\n        (parsed[key] as string[]).push(value);\n      } else {\n        parsed[key] = [parsed[key] as string, value];\n      }\n    } else {\n      parsed[key] = value;\n    }\n  }\n\n  return parsed;\n}\n","import { EncodedQuery } from './types';\n\n/**\n * Default implementation of objectToSearchString powered by URLSearchParams.\n * Does not support null values. Does not prefix with \"?\"\n * This converts an object { foo: '123', bar: 'x' } to a search string `?foo=123&bar=x`\n * This is only a very basic version, you may prefer the advanced versions offered\n * by third party libraries like query-string (\"stringify\") or qs.\n */\nexport function objectToSearchString(encodedParams: EncodedQuery): string {\n  const params = new URLSearchParams();\n  const entries = Object.entries(encodedParams);\n\n  for (const [key, value] of entries) {\n    if (value === undefined) continue;\n    if (value === null) continue;\n\n    if (Array.isArray(value)) {\n      for (const item of value) {\n        params.append(key, item ?? '');\n      }\n    } else {\n      params.append(key, value);\n    }\n  }\n\n  return params.toString();\n}\n","import {\n  DecodedValueMap,\n  encodeQueryParams,\n  QueryParamConfigMap,\n} from 'serialize-query-params';\nimport { decodedParamCache } from './decodedParamCache';\nimport { extendParamConfigForKeys } from './inheritedParams';\nimport { getLatestDecodedValues } from './latestValues';\nimport { memoSearchStringToObject } from './memoSearchStringToObject';\nimport { QueryParamOptionsWithRequired } from './options';\nimport { removeDefaults } from './removeDefaults';\nimport { PartialLocation, QueryParamAdapter, UrlUpdateType } from './types';\nimport { applyUrlNames } from './urlName';\n\n// for multiple param config\ntype ChangesType<DecodedValueMapType> =\n  | Partial<DecodedValueMapType>\n  | ((latestValues: DecodedValueMapType) => Partial<DecodedValueMapType>);\n\n/**\n * Given a ?foo=1&bar=2 and { bar: 3, baz: true } produce ?foo=1&bar=3&baz=1\n * or similar, depending on updateType. The result will be prefixed with \"?\"\n * or just be the empty string.\n */\nexport function getUpdatedSearchString({\n  changes,\n  updateType,\n  currentSearchString,\n  paramConfigMap: baseParamConfigMap,\n  options,\n}: {\n  changes: ChangesType<DecodedValueMap<any>>;\n  updateType?: UrlUpdateType;\n  currentSearchString: string;\n  paramConfigMap: QueryParamConfigMap;\n  options: QueryParamOptionsWithRequired;\n}): string {\n  const { searchStringToObject, objectToSearchString } = options;\n  if (updateType == null) updateType = options.updateType;\n\n  let encodedChanges;\n  const parsedParams = memoSearchStringToObject(\n    searchStringToObject,\n    currentSearchString\n  );\n\n  // see if we have unconfigured params in the changes that we can\n  // inherit to expand our config map instead of just using strings\n  const paramConfigMap = extendParamConfigForKeys(\n    baseParamConfigMap,\n    Object.keys(changes),\n    options.params\n  );\n\n  // update changes prior to encoding to handle removing defaults\n  // getting latest values when functional update\n  let changesToUse: Partial<DecodedValueMap<any>>;\n\n  // functional updates here get the latest values\n  if (typeof changes === 'function') {\n    const latestValues = getLatestDecodedValues(\n      parsedParams,\n      paramConfigMap,\n      decodedParamCache\n    );\n\n    changesToUse = (changes as Function)(latestValues);\n  } else {\n    // simple update here\n    changesToUse = changes;\n  }\n\n  encodedChanges = encodeQueryParams(paramConfigMap, changesToUse);\n\n  // remove defaults\n  if (options.removeDefaultsFromUrl) {\n    removeDefaults(encodedChanges, paramConfigMap);\n  }\n\n  // interpret urlNames\n  encodedChanges = applyUrlNames(encodedChanges, paramConfigMap);\n\n  let newSearchString: string;\n  if (updateType === 'push' || updateType === 'replace') {\n    newSearchString = objectToSearchString(encodedChanges);\n  } else {\n    newSearchString = objectToSearchString({\n      ...parsedParams,\n      ...encodedChanges,\n    });\n  }\n\n  if (newSearchString?.length && newSearchString[0] !== '?') {\n    (newSearchString as any) = `?${newSearchString}`;\n  }\n\n  return newSearchString ?? '';\n}\n\n/**\n * uses an adapter to update a location object and optionally\n * navigate based on the updateType\n */\nexport function updateSearchString({\n  searchString,\n  adapter,\n  navigate,\n  updateType,\n}: {\n  searchString: string;\n  adapter: QueryParamAdapter;\n  navigate: boolean;\n  updateType?: UrlUpdateType;\n}) {\n  const currentLocation = adapter.location;\n\n  // update the location and URL\n  const newLocation: PartialLocation = {\n    ...currentLocation,\n    search: searchString,\n  };\n\n  if (navigate) {\n    // be defensive about checking updateType since it is somewhat easy to\n    // accidentally pass a second argument to the setter.\n    if (typeof updateType === 'string' && updateType.startsWith('replace')) {\n      adapter.replace(newLocation);\n    } else {\n      adapter.push(newLocation);\n    }\n  }\n}\n\ntype UpdateArgs = Parameters<typeof getUpdatedSearchString>[0] & {\n  adapter: QueryParamAdapter;\n};\n\nconst immediateTask = (task: Function) => task();\nconst timeoutTask = (task: Function) => setTimeout(() => task(), 0);\n// alternative could be native `queueMicrotask`\n\nconst updateQueue: UpdateArgs[] = [];\n\n/**\n * support batching by enqueuing updates (if immediate is not true)\n */\nexport function enqueueUpdate(\n  args: UpdateArgs,\n  { immediate }: { immediate?: boolean } = {}\n) {\n  updateQueue.push(args);\n  let scheduleTask = immediate ? immediateTask : timeoutTask;\n\n  if (updateQueue.length === 1) {\n    scheduleTask(() => {\n      const updates = updateQueue.slice();\n      updateQueue.length = 0;\n      const initialSearchString = updates[0].currentSearchString;\n\n      let searchString: string | undefined;\n      for (let i = 0; i < updates.length; ++i) {\n        const modifiedUpdate: UpdateArgs =\n          i === 0\n            ? updates[i]\n            : { ...updates[i], currentSearchString: searchString! };\n        searchString = getUpdatedSearchString(modifiedUpdate);\n      }\n\n      // do not update unnecessarily #234\n      if (\n        args.options.skipUpdateWhenNoChange &&\n        searchString === initialSearchString\n      ) {\n        return;\n      }\n\n      updateSearchString({\n        searchString: searchString ?? '',\n        adapter: updates[updates.length - 1].adapter,\n        navigate: true,\n        updateType: updates[updates.length - 1].updateType,\n      });\n    });\n  }\n}\n","import { DecodedValueMap, QueryParamConfigMap, EncodedValueMap } from './types';\n\n/**\n * Convert the values in query to strings via the encode functions configured\n * in paramConfigMap\n *\n * @param paramConfigMap Map from query name to { encode, decode } config\n * @param query Query updates mapping param name to decoded value\n */\nexport function encodeQueryParams<QPCMap extends QueryParamConfigMap>(\n  paramConfigMap: QPCMap,\n  query: Partial<DecodedValueMap<QPCMap>>\n): Partial<EncodedValueMap<QPCMap>> {\n  const encodedQuery: Partial<EncodedValueMap<QPCMap>> = {};\n\n  const paramNames = Object.keys(query);\n  for (const paramName of paramNames) {\n    const decodedValue = query[paramName];\n\n    if (!paramConfigMap[paramName]) {\n      // NOTE: we could just not encode it, but it is probably convenient to have\n      // it be included by default as a string type.\n      (encodedQuery as any)[paramName] =\n        decodedValue == null ? decodedValue : String(decodedValue);\n    } else {\n      encodedQuery[paramName as keyof QPCMap] = paramConfigMap[\n        paramName\n      ].encode(query[paramName]);\n    }\n  }\n\n  return encodedQuery;\n}\nexport default encodeQueryParams;\n","import { EncodedValueMap, QueryParamConfigMap } from 'serialize-query-params';\n\n/**\n * Note: This function is destructive - it mutates encodedValues.\n * Remove values that match the encoded defaults from the encodedValues object\n */\nexport function removeDefaults(\n  encodedValues: Partial<EncodedValueMap<any>>,\n  paramConfigMap: QueryParamConfigMap\n) {\n  for (const paramName in encodedValues) {\n    // does it have a configured default and does it have a non-undefined value?\n    if (\n      paramConfigMap[paramName]?.default !== undefined &&\n      encodedValues[paramName] !== undefined\n    ) {\n      // does its current value match the encoded default\n      const encodedDefault = paramConfigMap[paramName].encode(\n        paramConfigMap[paramName].default\n      );\n      if (encodedDefault === encodedValues[paramName]) {\n        encodedValues[paramName] = undefined;\n      }\n    }\n  }\n}\n","import { useCallback, useMemo } from 'react';\nimport { QueryParamConfig } from 'serialize-query-params';\nimport { QueryParamOptions } from './options';\nimport { UrlUpdateType } from './types';\nimport useQueryParams from './useQueryParams';\n\ntype NewValueType<D> = D | ((latestValue: D) => D);\n\n/**\n * Given a query param name and query parameter configuration ({ encode, decode })\n * return the decoded value and a setter for updating it.\n *\n * The setter takes two arguments (newValue, updateType) where updateType\n * is one of 'replace' | 'replaceIn' | 'push' | 'pushIn', defaulting to\n * 'pushIn'.\n */\nexport const useQueryParam = <TypeToEncode, TypeFromDecode = TypeToEncode>(\n  name: string,\n  paramConfig?: QueryParamConfig<TypeToEncode, TypeFromDecode>,\n  options?: QueryParamOptions\n): [\n  TypeFromDecode,\n  (newValue: NewValueType<TypeToEncode>, updateType?: UrlUpdateType) => void\n] => {\n  const paramConfigMap = useMemo(\n    () => ({ [name]: paramConfig ?? 'inherit' }),\n    [name, paramConfig]\n  );\n  const [query, setQuery] = useQueryParams(paramConfigMap, options);\n  const decodedValue = query[name];\n  const setValue = useCallback(\n    (newValue: NewValueType<TypeToEncode>, updateType?: UrlUpdateType) => {\n      if (typeof newValue === 'function') {\n        return setQuery((latestValues) => {\n          const newValueFromLatest = (newValue as Function)(latestValues[name]);\n          return { [name]: newValueFromLatest };\n        }, updateType);\n      }\n      return setQuery({ [name]: newValue } as any, updateType);\n    },\n    [name, setQuery]\n  );\n\n  return [decodedValue, setValue];\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n  DecodedValueMap,\n  QueryParamConfig,\n  QueryParamConfigMap,\n  StringParam,\n} from 'serialize-query-params';\nimport { decodedParamCache } from './decodedParamCache';\nimport {\n  extendParamConfigForKeys,\n  convertInheritedParamStringsToParams,\n} from './inheritedParams';\nimport { makeStableGetLatestDecodedValues } from './latestValues';\nimport { memoSearchStringToObject } from './memoSearchStringToObject';\nimport { mergeOptions, QueryParamOptions } from './options';\nimport { useQueryParamContext } from './QueryParamProvider';\nimport {\n  QueryParamConfigMapWithInherit,\n  SetQuery,\n  UrlUpdateType,\n} from './types';\nimport { enqueueUpdate } from './updateSearchString';\nimport { serializeUrlNameMap } from './urlName';\n\n// for multiple param config\ntype ChangesType<DecodedValueMapType> =\n  | Partial<DecodedValueMapType>\n  | ((latestValues: DecodedValueMapType) => Partial<DecodedValueMapType>);\n\ntype UseQueryParamsResult<QPCMap extends QueryParamConfigMap> = [\n  DecodedValueMap<QPCMap>,\n  SetQuery<QPCMap>\n];\ntype ExpandInherits<QPCMap extends QueryParamConfigMapWithInherit> = {\n  [ParamName in keyof QPCMap]: QPCMap[ParamName] extends string\n    ? typeof StringParam\n    : QPCMap[ParamName] extends QueryParamConfig<any>\n    ? QPCMap[ParamName]\n    : never;\n};\n\n/**\n * Given a query parameter configuration (mapping query param name to { encode, decode }),\n * return an object with the decoded values and a setter for updating them.\n */\nexport function useQueryParams<\n  QPCMap extends QueryParamConfigMap = QueryParamConfigMap\n>(): UseQueryParamsResult<QPCMap>;\nexport function useQueryParams<QPCMap extends QueryParamConfigMapWithInherit>(\n  names: string[],\n  options?: QueryParamOptions\n): UseQueryParamsResult<ExpandInherits<QPCMap>>;\nexport function useQueryParams<\n  QPCMap extends QueryParamConfigMapWithInherit,\n  OutputQPCMap extends QueryParamConfigMap = ExpandInherits<QPCMap>\n>(\n  paramConfigMap: QPCMap,\n  options?: QueryParamOptions\n): UseQueryParamsResult<OutputQPCMap>;\nexport function useQueryParams(\n  arg1?: string[] | QueryParamConfigMapWithInherit,\n  arg2?: QueryParamConfig<any> | QueryParamOptions\n): UseQueryParamsResult<any> {\n  const { adapter, options: contextOptions } = useQueryParamContext();\n  const [stableGetLatest] = useState(makeStableGetLatestDecodedValues);\n\n  // intepret the overloaded arguments\n  const { paramConfigMap: paramConfigMapWithInherit, options } = parseArguments(\n    arg1,\n    arg2\n  );\n\n  const mergedOptions = useMemo(() => {\n    return mergeOptions(contextOptions, options);\n  }, [contextOptions, options]);\n\n  // interpret params that were configured up the chain\n  let paramConfigMap = convertInheritedParamStringsToParams(\n    paramConfigMapWithInherit,\n    mergedOptions\n  );\n\n  // what is the current stringified value?\n  const parsedParams = memoSearchStringToObject(\n    mergedOptions.searchStringToObject,\n    adapter.location.search,\n    serializeUrlNameMap(paramConfigMap) // note we serialize for memo purposes\n  );\n\n  // do we want to include all params from the URL even if not configured?\n  if (mergedOptions.includeAllParams) {\n    paramConfigMap = extendParamConfigForKeys(\n      paramConfigMap,\n      Object.keys(parsedParams),\n      mergedOptions.params,\n      StringParam\n    );\n  }\n\n  // run decode on each key\n  const decodedValues = stableGetLatest(\n    parsedParams,\n    paramConfigMap,\n    decodedParamCache\n  );\n\n  // clear out unused values in cache\n  // use string for relatively stable effect dependency\n  const paramKeyString = Object.keys(paramConfigMap).join('\\0');\n  useEffect(() => {\n    const paramNames = paramKeyString.split('\\0');\n    decodedParamCache.registerParams(paramNames);\n    return () => {\n      decodedParamCache.unregisterParams(paramNames);\n    };\n  }, [paramKeyString]);\n\n  // create a setter for updating multiple query params at once\n  // use a ref for callback dependencies so we don't generate a new one unnecessarily\n  const callbackDependencies = {\n    adapter,\n    paramConfigMap,\n    options: mergedOptions,\n  };\n  const callbackDependenciesRef =\n    useRef<typeof callbackDependencies>(callbackDependencies);\n  if (callbackDependenciesRef.current == null) {\n    callbackDependenciesRef.current = callbackDependencies;\n  }\n  useEffect(() => {\n    callbackDependenciesRef.current.adapter = adapter;\n    callbackDependenciesRef.current.paramConfigMap = paramConfigMap;\n    callbackDependenciesRef.current.options = mergedOptions;\n  }, [adapter, paramConfigMap, mergedOptions]);\n\n  // create callback with stable identity\n  const [setQuery] = useState(() => {\n    const setQuery = (\n      changes: ChangesType<DecodedValueMap<any>>,\n      updateType?: UrlUpdateType\n    ) => {\n      // read from a ref so we don't generate new setters each time any change\n      const { adapter, paramConfigMap, options } =\n        callbackDependenciesRef.current!;\n      if (updateType == null) updateType = options.updateType;\n\n      enqueueUpdate(\n        {\n          changes,\n          updateType,\n          currentSearchString: adapter.location.search,\n          paramConfigMap,\n          options,\n          adapter,\n        },\n        { immediate: !options.enableBatching }\n      );\n    };\n\n    return setQuery;\n  });\n\n  return [decodedValues, setQuery];\n}\n\nexport default useQueryParams;\n\nfunction parseArguments(\n  arg1: string[] | QueryParamConfigMapWithInherit | undefined,\n  arg2: QueryParamConfig<any> | QueryParamOptions | undefined\n): {\n  paramConfigMap: QueryParamConfigMapWithInherit;\n  options: QueryParamOptions | undefined;\n} {\n  let paramConfigMap: QueryParamConfigMapWithInherit;\n  let options: QueryParamOptions | undefined;\n\n  if (arg1 === undefined) {\n    // useQueryParams()\n    paramConfigMap = {};\n    options = arg2 as QueryParamOptions | undefined;\n  } else if (Array.isArray(arg1)) {\n    // useQueryParams(['geo', 'other'])\n    // useQueryParams(['geo', 'other'], options)\n    paramConfigMap = Object.fromEntries(\n      arg1.map((key) => [key, 'inherit' as const])\n    );\n    options = arg2 as QueryParamOptions | undefined;\n  } else {\n    // useQueryParams({ geo: NumberParam })\n    // useQueryParams({ geo: NumberParam }, options)\n    paramConfigMap = arg1;\n    options = arg2 as QueryParamOptions | undefined;\n  }\n\n  return { paramConfigMap, options };\n}\n"],"names":["NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","signal","this","aborted","Error","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","callback","currentMessage","message","elt","AbortablePromiseCache","constructor","fill","cache","TypeError","get","set","fillCallback","isAbortException","exception","name","code","evict","key","entry","data","statusCallback","aborter","statusReporter","newEntry","promise","settled","then","catch","error","console","checkSinglePromise","checkForSingleAbort","Object","assign","result","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","keys","deleteCount","next","done","value","d","getAppBarUtilityClass","slot","generateUtilityClass","generateUtilityClasses","joinVars","var1","var2","replace","AppBarRoot","styled","Paper","overridesResolver","props","styles","ownerState","root","capitalize","position","color","memoTheme","theme","display","flexDirection","width","boxSizing","flexShrink","variants","style","zIndex","vars","appBar","top","left","right","palette","AppBar","defaultBg","grey","text","primary","getContrastText","applyStyles","entries","filter","createSimplePaletteValueFilter","map","main","contrastText","enableColorOnDark","includes","backgroundColor","darkBg","darkColor","backgroundImage","inProps","ref","className","other","classes","slots","composeClasses","useUtilityClasses","square","component","elevation","clsx","isDynamicSupport","html","enableColorScheme","WebkitFontSmoothing","MozOsxFontSmoothing","WebkitTextSizeAdjust","colorScheme","mode","body","typography","body1","background","default","common","white","colorSchemeStyles","colorSchemes","getColorSchemeSelector","forEach","scheme","selector","startsWith","defaultStyles","fontWeight","fontWeightBold","margin","themeOverrides","components","MuiCssBaseline","styleOverrides","SELECTOR","GlobalStyles","baseStyles","Array","isArray","staticStyles","children","FabRoot","shouldForwardProp","prop","variant","colorInherit","button","minHeight","transition","transitions","create","duration","short","borderRadius","padding","minWidth","height","fab","boxShadow","shadows","A100","textDecoration","focusVisible","dark","disabled","action","disabledBackground","disableFocusRipple","focusVisibleClassName","composedClasses","focusRipple","getFabUtilityClass","ToolbarRoot","disableGutters","gutters","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","mixins","toolbar","as","getToolbarUtilityClass","isMergeableObject","isNonNullObject","stringValue","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","defaultArrayMerge","target","source","concat","element","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","reduce","prev","deepmerge_1","module","exports","getMessage","e","RemoteFile","getBufferFromResponse","response","resp","arrayBuffer","from","opts","baseOverrides","url","fetch","globalThis","bind","overrides","fetchImplementation","input","init","cause","warn","read","buffer","offset","length","headers","Infinity","range","res","method","redirect","ok","status","resData","bytesCopied","copy","Math","min","contentRange","sizeMatch","exec","_stat","parseInt","bytesRead","readFile","encoding","stat","buf","allocUnsafe","close","hasSymbol","isFunctionNameConfigurable","getOwnPropertyDescriptor","configurable","ReactForwardRefSymbol","forwardRef","ReactMemoSymbol","memo","observer","baseComponent","useForwardRef","render","baseComponentName","displayName","base","observerComponent","defineProperty","writable","contextTypes","hoistBlackList","compare","type","Hook","livelinessChecking","setLivelinessChecking","getLivelinessChecking","setLivelynessChecking","extendStatics","b","setPrototypeOf","__proto__","p","__extends","String","__","__assign","t","s","i","n","arguments","apply","__generator","thisArg","f","y","g","label","sent","trys","ops","verb","iterator","v","op","pop","push","step","__values","o","m","__read","r","ar","__spread","getType","assertIsStateTreeNode","getStateTreeNode","getChildType","propertyName","onPatch","assertIsFunction","onSnapshot","applyPatch","patch","assertArg","applyPatches","asArray","recordPatches","subject","disposer","patches","inversePatches","publicData","recorder","recording","slice","reversedInversePatches","reverse","stop","undefined","resume","inversePatch","getRunningActionContext","replay","undo","protect","node","isRoot","fail","isProtectionEnabled","unprotect","isProtected","applySnapshot","snapshot","getSnapshot","applyPostProcess","hasParent","depth","assertIsNumber","parent","getParent","storedValue","hasParentOfType","assertIsType","is","getParentOfType","getRoot","getPath","path","getPathParts","splitJsonPath","resolvePath","assertIsString","resolveNodeByPath","resolveIdentifier","identifier","identifierCache","resolve","normalizeIdentifier","getIdentifier","tryReference","getter","checkIfAlive","isStateTreeNode","isAlive","InvalidReferenceError","isValidReference","tryResolve","getRelativePath","getRelativePathBetweenNodes","keepEnvironment","environment","detach","destroy","die","removeChild","subpath","observableIsAlive","addDisposer","getEnv","EMPTY_OBJECT","walk","processor","getChildren","child","getPropertyMembers","typeOrNode","properties","getMembers","reflected","actions","volatile","views","flowActions","getOwnPropertyNames","descriptor","isComputedProp","_isFlowAction","_isMSTAction","isObservableProp","cast","snapshotOrInstance","castToSnapshot","castToReferenceSnapshot","instance","getNodeId","nodeId","BaseNode","enumerable","NodeLifeCycle","INITIALIZING","baseSetParent","_subpath","_subpathUponDeath","_pathUponDeath","getValue","_state","wasAlive","aliveAtom","reportChanged","_hookSubscribers","emit","hook","hookHandler","EventHandlers","register","_parent","_escapedSubpath","pathAtom","getEscapedPath","reportObserved","createAtom","escapeJsonPath","state","DEAD","DETACHING","whenFinalized","CREATED","FINALIZED","fireHook","afterAttach","clearAll","beforeDestroy","ScalarNode","_super","simpleType","initialSnapshot","_this","createNewInstance","finalizeCreation","newParent","parentChanged","subpathChanged","pathUponDeath","aboutToDie","finalizeDeath","baseFinalizeCreation","baseAboutToDie","baseFinalizeDeath","fireInternalHook","_a","TypeFlags","nextNodeId","snapshotReactionOptions","onError","ObjectNode","complexType","initialValue","_snapshotComputed","computed","unbox","_initialSnapshot","identifierAttribute","IdentifierCache","_childNodes","initializeChildNodes","unnormalizedIdentifier","id","childNode","addNodeToCache","createObservableInstanceIfNeeded","_applyPatches","_applySnapshot","fireHooks","_observableInstanceState","createObservableInstance","e_1","e_2","_b","parentChain","unshift","parentChain_1","parentChain_1_1","e_1_1","return","preboot","_isRunningAction","finalizeNewInstance","trackAndCompute","_addSnapshotReaction","afterCreate","_c","_d","e_2_1","beforeDetach","previousState","newEnv","newIdCache","splitCache","mergeCache","fn","_allowStateChangesInsideComputed","hasSnapshotPostProcessor","_getActualSnapshot","_getCachedInitialSnapshot","_snapshotUponDeath","_cachedInitialSnapshotCreated","childNodes","_cachedInitialSnapshot","processInitialSnapshot","isRunningAction","context","msg","_getAssertAliveError","escapedPath","actionContext","getCurrentActionContext","parentActionEvent","actionFullPath","assertAlive","_autoUnbox","getChildNode","convertChildNodesToArray","subpathUponDeath","e_3","e_3_1","afterCreationFinalization","clearParent","self","createActionInvoker","parts","resolveNodeByPathParts","applyPatchLocally","addHiddenFinalProp","toJSON","_internalEventsEmit","_internalEventsClear","notifyDied","_internalEventsClearAll","onChange","_internalEventsRegister","handler","basePatch","_internalEventsHasSubscribers","localizedPatch","a","_i","current","extend","substr","stripPatch","invertPatch","splitPatch","reversePatch","emitPatch","_internalEventsHas","hasDisposer","_internalEventsUnregister","middleware","middlewares","index","indexOf","splice","includeHooks","removeMiddleware","assertWritable","_hasSnapshotReaction","snapshotDisposer","reaction","emitSnapshot","event","_internalEvents","hasSubscribers","eventHandler","atTheBeginning","unregister","args","cannotDetermineSubtype","$type","BaseType","typecheckInternal","instantiate","getStateTreeNodeSafe","valueType","isAssignableFrom","typeCheckSuccess","typeCheckFailure","isValidSnapshot","thing","validate","ComplexType","getDefaultSnapshot","newValue","isDetaching","isMutable","isMatchingSnapshotId","tryToReconcileNode","setParent","newNode","SimpleType","isType","argNumber","runningActions","Map","createActionTrackingMiddleware","hooks","onStart","onResume","async","onSuspend","onSuccess","onFail","rootId","RunningAction","running","onFinish","flowsPending","createActionTrackingMiddleware2","middlewareHooks","parentRunningAction","newCall","env","parentCall","passesFilter","runningAction","finish","hasFlowsPending","incFlowsPending","decFlowsPending","serializeTheUnserializable","baseType","$MST_UNSERIALIZABLE","applyAction","runInAction","resolvedTarget","Date","baseApplyAction","recordActions","listener","onAction","attachAfter","addMiddleware","rawCall","sourceNode_1","info","arg","actionName","$MST_DATE","getTime","isPrimitive","isPlainObject","JSON","stringify","serializeArgument","currentActionContext","nextActionId","getNextActionId","runWithActionContext","baseIsRunningAction","previousContext","baseCall","originalFn","CollectedMiddlewares","isEmpty","runNextMiddleware","getNextMiddleware","call2","runMiddleWares","getParentActionContext","parentContext","parentActionContext","argsToArray","tree","parentId","allParentIds","parentEvent","addMiddleWare","decorate","$mst_middleware","arrayIndex","inArrayIndex","_isActionContextThisOrChildOf","sameOrParent","includeSame","isActionContextChildOf","isActionContextThisOrChildOf","parentOrThis","prettyPrintValue","safeStringify","toErrorString","fullPath","join","pathPrefix","currentTypename","isSnapshotCompatible","isPrimitiveType","describe","getContextForPath","EMPTY_ARRAY","flattenTypeErrors","errors","process","typecheck","valueInString","substring","validationErrorsToString","identifierCacheId","observable","lcm","lastCacheModificationPerId","modificationId","cacheId","lastCacheUpdate","mobxShallow","updateLastCacheModificationPerId","values","nodes","remove","splitNode","newCache","basePath","modified","some","candidate","matches","createObjectNode","existingNode","createScalarNode","$treenode","doubleDot","baseParts","targetParts","joinJsonPath","failIfResolveFails","pathParts","part","DEPRECATION_MESSAGE","process$1","asyncAction","deprecated","flow","plainObjectString","freeze","_getGlobalState","useProxies","deep","proxy","identity","isInteger","Number","isObservableArray","proto","getPrototypeOf","RegExp","includeDate","isSerializable","propName","isObservableObject","EventHandler","handlers","eventHandlers","stringStartsWith","str","beginning","typeName","max","canBeEmpty","setImmediateWithFallback","queueMicrotask","setImmediate","setTimeout","generator","spawner","runId","contextBase","wrap","Promise","reject","gen","onFulfilled","ret","cancelError","throw","onRejected","err","createFlowSpawner","castFlowReturn","toGeneratorFunction","toGenerator","oldValue","unescapeJsonPath","getPathStr","split","shift","ids","MapIdentifierMode","$preProcessorFailed","SnapshotProcessor","_subtype","_processors","flags","sn","preProcessor","preProcessSnapshot","postProcessor","nodeType","snapshotProcessorType","methods","methods_1","methods_1_1","proxyNodeTypeMethods","oldGetSnapshot","postProcessSnapshot","isUnionType","getReconciliationType","processedInitialValue","_fixNode","reconcile","processedSn","preProcessSnapshotSafe","needsIdentifierError","tryCollectModelTypes","modelTypes","subtypes","getSubTypes","subtypesArray","subtypesArray_1","subtypesArray_1_1","ModelType","MSTMap","initialData","enhancer","mapNode","mapType","identifierMode","YES","mapIdentifierAttribute","isValidIdentifier","put","ObservableMap","MapType","_subType","hookInitializers","UNKNOWN","_determineIdentifierMode","NO","objNode","subType","_interceptReads","initializer","actionInvoker","intercept","willChange","observe","didChange","change","processIdentifier","expected","processed","oldSnapshot","currentKeys","isMapType","ArrayType","item","_getAdministration","dehancer","updatedNodes","reconcileArrayChildren","index_1","removedCount","added","addedNodes","removed","addedCount","childType","oldNodes","newValues","newPaths","nothingChanged","hasNewNode","oldNode","newPath","areSame","valueAsNode","oldMatch","j","getNewNode","oldNodeType","isArrayType","PRE_PROCESS_SNAPSHOT","POST_PROCESS_SNAPSHOT","objectTypeToString","defaultObjectOptions","initializers","declaredProps","keysList","alreadySeenKeys","cloneAndEnhance","currentPreprocessor","currentPostprocessor","optional","string","number","boolean","DatePrimitive","getPrimitiveFactoryFromValue","propertyNames","_getIdentifierAttribute","forAllProps","propType","Identifier","instantiateActions","action2","baseAction","specializedAction_1","boundAction","instantiateVolatileState","rest","__rest","instantiateViews","makeObservable","applySnapshotPreProcessor","chg","oldChildValue","adm","raw","getAtom","applySnapshotPostProcessor","preProcessedSnapshot","isModelType","CoreType","checker","integer","Integer","float","Float","finite","Finite","isFinite","Boolean","nullType","Null","undefinedType","Undefined","_DatePrimitive","Literal","literal","isLiteralType","Refinement","_predicate","_message","subtypeErrors","isRefinementType","Union","_types","eager","dispatcher","_dispatcher","_eager","factory","determineType","reconcileCurrentType","find","allErrors","applicableTypes","union","optionsOrType","otherTypes","types","OptionalValue","_defaultValue","optionalValues","Optional","defaultInstanceOrSnapshot","getDefaultInstanceOrSnapshot","defaultValueOrFunction","checkOptionalPreconditions","undefinedAsOptionalValues","isOptionalType","optionalUndefinedType","optionalNullType","maybe","Late","_definition","mustSucceed","ReferenceError","getSubType","isLateType","Lazy","when","pendingNodeList","shouldLoadPredicate","loadType","loadedType","Frozen","untypedFrozenInstance","isFrozenType","StoredReference","targetType","targetNode","normalizedId","lastCacheModification","getLastCacheModificationPerId","resolvedReference","updateResolvedReference","BaseReferenceType","onInvalidated","Reference","storedRefNode","referenceId","refTargetNode","storedRefParentNode","storedRefParentValue","invalidTarget","invalidId","replaceRef","newRef","removeRef","refTargetValue","refTargetNodeHook","getInvalidationCause","fireInvalidated","refTargetDetachHookDisposer","registerHook","refTargetDestroyHookDisposer","customGetSet","onRefTargetDestroyedHookDisposer","startWatching","sync","addTargetNodeWatcher","IdentifierReferenceType","resolvedValue","storedRef","watchTargetNodeForInvalidations","compareByValue","CustomReferenceType","newIdentifier","reference","getSetOptions","isReferenceType","BaseIdentifierType","validType","IdentifierType","IdentifierNumberType","identifierNumber","isIdentifierType","CustomType","Custom","isTargetType","typeError","getValidationMessage","toSnapshot","fromSnapshot","isSnapshot","valueToStore","enumeration","realOptions","option","model","compose","hasTypename","cur","named","custom","safeReference","refType","ev","acceptsUndefined","maybeNull","refinement","predicate","subtype","frozen","late","nameOrType","maybeType","lazy","null","snapshotProcessor","processors","_len","_key","mockGlobal","getGlobal","window","global","getDescriptor","objectPrototype","hasProxy","Proxy","assertProxies","once","func","invoked","noop","isFunction","isStringish","isObject","protoConstructor","isGenerator","obj","addHiddenProp","createInstanceofPredicate","theClass","x","isES6Map","isES6Set","hasGetOwnPropertySymbols","ownKeys","Reflect","toPrimitive","hasProp","getOwnPropertyDescriptors","getFlag","mask","setFlag","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","_extends","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","flags_","observers_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","_proto","onBO","onBUO","startBatch","propagateChanged","endBatch","_createClass","isBeingObservedMask_","isPendingUnobservationMask_","diffValueMask_","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","onBecomeObserved","onBecomeUnobserved","comparer","structural","deepEqual","shallow","deepEnhancer","isObservable","isAction","isFlow","autoAction","referenceEnhancer","override","make_","extend_","proxyTrap","desc","createActionAnnotation","options_","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","defineProperty_","mthd","kind","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","isMobxAction","safeDescriptors","_ref2","globalState","_adm$proxy_","_annotation$options_","proxy_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","isPlainObject_","createFlowAnnotation","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","defineObservableProperty_","_this$options_$enhanc","initializedObjects","WeakSet","initializeObservable","ObservableValue","_ann$options_$enhance","setObservablePropValue_","AUTO","autoAnnotation","createAutoAnnotation","autoBind","observableAnnotation","_this$options_4","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","arg3","box","equals","initialValues","createLegacyArray","createObservableArray","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","currentActionId","_getDescriptor$config","_getDescriptor","tmpNameDescriptor","executeAction","canRunAsDerivation","scope","runInfo","_startAction","error_","_endAction","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","runAsAction_","prevAllowStateReads_","allowStateReadsStart","notifySpy_","startTime_","actionId_","parentActionId_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","_inheritsLoose","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","hasInterceptors","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","valueOf","isObservableValue","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","derivation","setter_","isTracing_","TraceMode","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","isComputing","inBatch","shouldCompute","prevTrackingContext","trackingContext","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","isRunningSetter","wasSuspended","changed","track","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","prevValue","autorun","prevU","isComputingMask_","isRunningSetterMask_","isComputedValue","prevAllowStateReads","prevUntracked","obs","l","changeDependenciesStateTo0","isComputingDerivation","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","diffValue","removeObserver","addObserver","bindDependencies","untracked","allowStateReads","persistentKeys","MobXGlobals","version","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","getGlobalState","resetGlobalState","defaultGlobals","queueForUnobservation","isPendingUnobservation","runReactions","list","isBeingObserved","Reaction","onInvalidate_","errorHandler_","requiresObservable_","schedule_","isScheduled","runReaction_","isDisposed","isTrackPending","reportExceptionInDerivation_","isRunning","prevReaction","dispose","getDisposer_","abortSignal","_this2","removeEventListener","trace","enterBreakPoint","isDisposedMask_","isScheduledMask_","isTrackPendingMask_","isRunningMask_","onReactionError","idx","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","spy","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","scheduler","delay","createSchedulerFromOptions","reactionRunner","requiresObservable","_opts2","_opts3","run","expression","effect","errorHandler","baseFn","_opts$name2","effectAction","runSync","nextValue","_opts4","_opts5","ON_BECOME_OBSERVED","ON_BECOME_UNOBSERVED","interceptHook","cb","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","configure","isolateGlobalState","baseScheduler","ea","annotations","descriptors","getDependencyTree","nodeToDependencyTree","dependencies","getObserverTree","nodeToObserverTree","hasObservers","observers","getObservers","generatorId","FlowCancellationError","isFlowCancellationError","flowAnnotation","flowBoundAnnotation","rejector","pendingPromise","stepId","cancel","cancelPromise","yieldedPromise","flowResult","interceptReads","propOrHandler","getAdministration","interceptProperty","interceptInterceptable","_isComputed","isComputed","_isObservable","keys_","set_","delete_","has_","get_","apiDefineProperty","apiOwnKeys","ownKeys_","propOrCb","cbOrFire","observeObservableProperty","observeObservable","toJSHelper","__alreadySeen","toJS","transaction","_opts$signal","_when","_opts$signal2","_opts$signal3","whenPromise","timeoutHandle","timeout","clearTimeout","getAdm","_getAdm$set_","deleteProperty","_getAdm$delete_","_getAdm$definePropert","preventExtensions","interceptable","interceptors","listenable","listeners","collectStoredAnnotations","keysSymbol","makeAutoObservable","SPLICE","arrayTraps","getArrayLength_","isNaN","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","notify","owned","spliceWithArray","_len2","items","_key2","_len3","_key3","sort","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","accumulator","currentValue","_this3","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","data_","hasMap_","keysAtom_","merge","hasKey","updateValue_","addValue_","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_createForOfIteratorHelperLoose","_step$value","mapProto","objectProto","symbols","getPlainObjectKeys","_this5","_ref","_step2","_iterator2","_this6","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_this7","_step4","_iterator4","_step4$value","keyExisted","iter1","iter2","next1","next2","toStringTag","ObservableSetMarker","callbackFn","nextIndex","observableValues","intersection","otherSet","difference","symmetricDifference","isSubsetOf","isSupersetOf","isDisjointFrom","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_2","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","getDebugName","eq","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","extras","makeAdapter","location","history","replaceState","search","pushState","WindowHistoryAdapter","adapter","useState","StringParam","encode","decode","allowEmptyString","getEncodedValue","encodeURIComponent","decodedParamCache","paramsMap","registeredParams","param","stringifiedValue","decodedValue","stringified","decoded","cachedParam","registerParams","paramNames","currValue","unregisterParams","extendParamConfigForKeys","baseParamConfigMap","paramKeys","inheritedParams","defaultParam","paramConfigMap","hasInherit","paramKey","objA","objB","equalMap","keysA","keysB","isEqual","getLatestDecodedValues","parsedParams","decodedValues","paramName","paramConfig","encodedValue","oldDecodedValue","makeStableGetLatestDecodedValues","prevDecodedValues","shallowEqual","cachedSearchString","cachedUrlNameMapString","cachedSearchStringToObjectFn","cachedParsedQuery","memoSearchStringToObject","searchStringToObject","searchString","urlNameMapStr","newParsedQuery","urlNameMap","fromEntries","deserializeUrlNameMap","mergeOptions","parentOptions","currOptions","merged","params","providerlessContextValue","URLSearchParams","parsed","objectToSearchString","encodedParams","append","updateType","includeKnownParams","includeAllParams","removeDefaultsFromUrl","enableBatching","skipUpdateWhenNoChange","QueryParamContext","QueryParamProviderInner","parentAdapter","Provider","QueryParamProvider","Adapter","getUpdatedSearchString","changes","currentSearchString","encodedChanges","changesToUse","newSearchString","query","encodedQuery","encodeQueryParams","encodedValues","removeDefaults","newEncodedValues","urlName","applyUrlNames","immediateTask","task","timeoutTask","updateQueue","useQueryParam","useMemo","setQuery","contextOptions","useQueryParamContext","stableGetLatest","paramConfigMapWithInherit","parseArguments","mergedOptions","hookKeys","knownKeys","convertInheritedParamStringsToParams","urlNameMapParts","serializeUrlNameMap","paramKeyString","useEffect","callbackDependencies","callbackDependenciesRef","useRef","immediate","scheduleTask","updates","initialSearchString","navigate","newLocation","updateSearchString","enqueueUpdate","useCallback","latestValues","newValueFromLatest"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8009.a65f1b78.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8009],{18009:(e,t,a)=>{a.r(t),a.d(t,{default:()=>F});var o=a(7552),n=a(68446),r=a(29499),l=a(58507),i=a(5401),s=a(49823),c=a(374),d=a(31647),p=a(943),m=a(64111),u=a(95767),y=a(82565),A=a(75199),b=a(73451),g=a(61723),v=a(68584),h=a(74893),f=a(69500);const w=(0,h.A)((0,f.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Create");var E=a(25762);const C=(0,n.observer)((function({rootModel:e,setIsAssemblyBeingEdited:t,setAssemblyBeingEdited:a}){const{assemblies:n}=e.jbrowse;return o.createElement(d.A,{component:p.A},o.createElement(m.A,null,o.createElement(u.A,null,o.createElement(y.A,null,o.createElement(A.A,null,"Name"),o.createElement(A.A,null,"Display name"),o.createElement(A.A,null,"Aliases"),o.createElement(A.A,null,"Actions"))),o.createElement(b.A,null,n.map((n=>{const r=(0,v.readConfObject)(n,"name"),l=(0,v.readConfObject)(n,"displayName"),i=(0,v.readConfObject)(n,"aliases");return o.createElement(y.A,{key:r},o.createElement(A.A,null,r),o.createElement(A.A,null,l),o.createElement(A.A,null,i?i.toString():""),o.createElement(A.A,null,o.createElement(g.A,{"data-testid":`${r}-edit`,onClick:()=>{t(!0),a(n)}},o.createElement(w,{color:"primary"})),o.createElement(g.A,{"data-testid":`${r}-delete`,onClick:()=>{!function(t){e.jbrowse.removeAssemblyConf(t)}(r)}},o.createElement(E.A,{color:"error"}))))})))))}));var x=a(1343),S=a(29629),T=a(67314);const k=(0,n.observer)((function({adapterSelection:e,setAdapterSelection:t,adapterTypes:a}){return o.createElement(x.A,{value:e,label:"Type",select:!0,helperText:"Type of adapter to use",fullWidth:!0,onChange:e=>{t(e.target.value)}},a.map((e=>o.createElement(S.A,{key:e,value:e},e))))})),L=(0,n.observer)((function({adapterSelection:e,fastaLocation:t,faiLocation:a,gziLocation:n,twoBitLocation:r,chromSizesLocation:l,setFaiLocation:i,setGziLocation:c,setTwoBitLocation:d,setFastaLocation:p,setChromSizesLocation:m}){return"IndexedFastaAdapter"===e||"BgzipFastaAdapter"===e?o.createElement(T.Ay,{container:!0,spacing:2},o.createElement(T.Ay,{item:!0},o.createElement(s.FileSelector,{name:"fastaLocation",location:t,setLocation:e=>{p(e)}})),o.createElement(T.Ay,{item:!0},o.createElement(s.FileSelector,{name:"faiLocation",location:a,setLocation:e=>{i(e)}})),"BgzipFastaAdapter"===e?o.createElement(T.Ay,{item:!0},o.createElement(s.FileSelector,{name:"gziLocation",location:n,setLocation:e=>{c(e)}})):null):"TwoBitAdapter"===e?o.createElement(T.Ay,{container:!0,spacing:2},o.createElement(T.Ay,{item:!0},o.createElement(s.FileSelector,{name:"twoBitLocation",location:r,setLocation:e=>{d(e)}})),o.createElement(T.Ay,{item:!0},o.createElement(s.FileSelector,{name:"chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)",location:l,setLocation:e=>{m(e)}}))):null})),z={uri:""},M=["IndexedFastaAdapter","BgzipFastaAdapter","TwoBitAdapter"],B=(0,n.observer)((function({rootModel:e,setFormOpen:t}){const[a,n]=(0,o.useState)(""),[r,l]=(0,o.useState)(""),[s,d]=(0,o.useState)(M[0]),[m,u]=(0,o.useState)(z),[y,A]=(0,o.useState)(z),[b,g]=(0,o.useState)(z),[v,h]=(0,o.useState)(z),[f,w]=(0,o.useState)(z);return o.createElement("div",null,o.createElement(p.A,null,o.createElement(x.A,{id:"assembly-name",inputProps:{"data-testid":"assembly-name"},label:"Assembly name",helperText:"The assembly name e.g. hg38",variant:"outlined",value:a,onChange:e=>{n(e.target.value)}}),o.createElement(x.A,{id:"assembly-name",inputProps:{"data-testid":"assembly-display-name"},label:"Assembly display name",helperText:'A human readable display name for the assembly e.g. "Homo sapiens (hg38)"',variant:"outlined",value:r,onChange:e=>{l(e.target.value)}}),o.createElement(k,{adapterSelection:s,adapterTypes:M,setAdapterSelection:d}),o.createElement(L,{adapterSelection:s,fastaLocation:m,faiLocation:y,gziLocation:b,twoBitLocation:v,chromSizesLocation:f,setFaiLocation:A,setGziLocation:g,setTwoBitLocation:h,setFastaLocation:u,setChromSizesLocation:w})),o.createElement(i.A,{variant:"contained",color:"secondary",startIcon:o.createElement(c.A,null),onClick:function(){if(""===a)e.session?.notify("Can't create an assembly without a name");else{let o;if(t(!1),"IndexedFastaAdapter"===s)o={name:a,displayName:r,sequence:{adapter:{type:"IndexedFastaAdapter",fastaLocation:m,faiLocation:y}}};else if("BgzipFastaAdapter"===s)o={name:a,displayName:r,sequence:{adapter:{type:"BgzipFastaAdapter",fastaLocation:m,faiLocation:y,gziLocation:b}}};else{if("TwoBitAdapter"!==s)throw new Error(`unknown ${s}`);o={name:a,displayName:r,sequence:{adapter:{type:"TwoBitAdapter",twoBitLocation:v,chromSizesLocation:f}}}}e.jbrowse.addAssemblyConf(o),e.session?.notify(`Successfully added ${a} assembly to JBrowse 2`,"success")}}},"Create new assembly"))}));var H=a(59099);const R=(0,a(75785).n9)()({container:{overflow:"auto",maxHeight:600}}),j=(0,n.observer)((function({assembly:e}){const{classes:t}=R();return o.createElement("div",{className:t.container},e?o.createElement(H.SS,{model:{target:e}}):o.createElement("div",null,"No assembly"))})),F=(0,n.observer)((function({rootModel:e,onClose:t}){const[a,n]=(0,o.useState)(!1),[d,p]=(0,o.useState)(!1),[m,u]=(0,o.useState)(),y=!a&&!d;return o.createElement(s.Dialog,{open:!0,onClose:()=>{t(!1)},title:"Assembly manager"},o.createElement(r.A,null,y?o.createElement(C,{rootModel:e,setIsAssemblyBeingEdited:p,setAssemblyBeingEdited:u}):null,d?o.createElement(j,{assembly:m}):null,a?o.createElement(B,{rootModel:e,setFormOpen:n}):null),o.createElement(l.A,null,a?o.createElement(i.A,{variant:"contained",onClick:()=>{n(!1)}},"Back"):null,d?o.createElement(i.A,{variant:"contained",onClick:()=>{p(!1)}},"Back"):null,y?o.createElement(o.Fragment,null,o.createElement(i.A,{color:"secondary",variant:"contained",onClick:()=>{t(!1)}},"Close"),o.createElement(i.A,{variant:"contained",startIcon:o.createElement(c.A,null),onClick:()=>{n(!0)}},"Add new assembly")):null))}))},25762:(e,t,a)=>{a.d(t,{A:()=>r});var o=a(74893),n=a(69500);const r=(0,o.A)((0,n.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},64111:(e,t,a)=>{a.d(t,{A:()=>y});var o=a(7552),n=a(93878),r=a(70799),l=a(15560),i=a(51148),s=a(60129),c=a(4785),d=a(12667),p=a(69500);const m=(0,i.Ay)("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.stickyHeader&&t.stickyHeader]}})((0,s.A)((({theme:e})=>({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":{...e.typography.body2,padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"},variants:[{props:({ownerState:e})=>e.stickyHeader,style:{borderCollapse:"separate"}}]})))),u="table",y=o.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiTable"}),{className:i,component:s=u,padding:y="normal",size:A="medium",stickyHeader:b=!1,...g}=a,v={...a,component:s,padding:y,size:A,stickyHeader:b},h=(e=>{const{classes:t,stickyHeader:a}=e,o={root:["root",a&&"stickyHeader"]};return(0,r.A)(o,d.l,t)})(v),f=o.useMemo((()=>({padding:y,size:A,stickyHeader:b})),[y,A,b]);return(0,p.jsx)(l.A.Provider,{value:f,children:(0,p.jsx)(m,{as:s,role:s===u?null:"table",ref:t,className:(0,n.A)(h.root,i),ownerState:v,...g})})}))},15560:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext()},70156:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext()},12667:(e,t,a)=>{a.d(t,{A:()=>l,l:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTable",e)}const l=(0,o.A)("MuiTable",["root","stickyHeader"])},73451:(e,t,a)=>{a.d(t,{A:()=>y});var o=a(7552),n=a(93878),r=a(70799),l=a(70156),i=a(51148),s=a(4785),c=a(20255),d=a(69500);const p=(0,i.Ay)("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-row-group"}),m={variant:"body"},u="tbody",y=o.forwardRef((function(e,t){const a=(0,s.b)({props:e,name:"MuiTableBody"}),{className:o,component:i=u,...y}=a,A={...a,component:i},b=(e=>{const{classes:t}=e;return(0,r.A)({root:["root"]},c.b,t)})(A);return(0,d.jsx)(l.A.Provider,{value:m,children:(0,d.jsx)(p,{className:(0,n.A)(b.root,o),as:i,ref:t,role:i===u?null:"rowgroup",ownerState:A,...y})})}))},20255:(e,t,a)=>{a.d(t,{A:()=>l,b:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTableBody",e)}const l=(0,o.A)("MuiTableBody",["root"])},75199:(e,t,a)=>{a.d(t,{A:()=>b});var o=a(7552),n=a(93878),r=a(70799),l=a(72639),i=a(15622),s=a(15560),c=a(70156),d=a(51148),p=a(60129),m=a(4785),u=a(48459),y=a(69500);const A=(0,d.Ay)("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant],t[`size${(0,i.A)(a.size)}`],"normal"!==a.padding&&t[`padding${(0,i.A)(a.padding)}`],"inherit"!==a.align&&t[`align${(0,i.A)(a.align)}`],a.stickyHeader&&t.stickyHeader]}})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid\n    ${"light"===e.palette.mode?(0,l.a)((0,l.X4)(e.palette.divider,1),.88):(0,l.e$)((0,l.X4)(e.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(e.vars||e).palette.text.primary}},{props:{variant:"footer"},style:{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${u.A.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:e})=>e.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default}}]})))),b=o.forwardRef((function(e,t){const a=(0,m.b)({props:e,name:"MuiTableCell"}),{align:l="inherit",className:d,component:p,padding:b,scope:g,size:v,sortDirection:h,variant:f,...w}=a,E=o.useContext(s.A),C=o.useContext(c.A),x=C&&"head"===C.variant;let S;S=p||(x?"th":"td");let T=g;"td"===S?T=void 0:!T&&x&&(T="col");const k=f||C&&C.variant,L={...a,align:l,component:S,padding:b||(E&&E.padding?E.padding:"normal"),size:v||(E&&E.size?E.size:"medium"),sortDirection:h,stickyHeader:"head"===k&&E&&E.stickyHeader,variant:k},z=(e=>{const{classes:t,variant:a,align:o,padding:n,size:l,stickyHeader:s}=e,c={root:["root",a,s&&"stickyHeader","inherit"!==o&&`align${(0,i.A)(o)}`,"normal"!==n&&`padding${(0,i.A)(n)}`,`size${(0,i.A)(l)}`]};return(0,r.A)(c,u.r,t)})(L);let M=null;return h&&(M="asc"===h?"ascending":"descending"),(0,y.jsx)(A,{as:S,ref:t,className:(0,n.A)(z.root,d),"aria-sort":M,scope:T,ownerState:L,...w})}))},48459:(e,t,a)=>{a.d(t,{A:()=>l,r:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTableCell",e)}const l=(0,o.A)("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"])},31647:(e,t,a)=>{a.d(t,{A:()=>p});var o=a(7552),n=a(93878),r=a(70799),l=a(51148),i=a(4785),s=a(39339),c=a(69500);const d=(0,l.Ay)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,t)=>t.root})({width:"100%",overflowX:"auto"}),p=o.forwardRef((function(e,t){const a=(0,i.b)({props:e,name:"MuiTableContainer"}),{className:o,component:l="div",...p}=a,m={...a,component:l},u=(e=>{const{classes:t}=e;return(0,r.A)({root:["root"]},s.I,t)})(m);return(0,c.jsx)(d,{ref:t,as:l,className:(0,n.A)(u.root,o),ownerState:m,...p})}))},39339:(e,t,a)=>{a.d(t,{A:()=>l,I:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTableContainer",e)}const l=(0,o.A)("MuiTableContainer",["root"])},95767:(e,t,a)=>{a.d(t,{A:()=>y});var o=a(7552),n=a(93878),r=a(70799),l=a(70156),i=a(51148),s=a(4785),c=a(14627),d=a(69500);const p=(0,i.Ay)("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-header-group"}),m={variant:"head"},u="thead",y=o.forwardRef((function(e,t){const a=(0,s.b)({props:e,name:"MuiTableHead"}),{className:o,component:i=u,...y}=a,A={...a,component:i},b=(e=>{const{classes:t}=e;return(0,r.A)({root:["root"]},c.X,t)})(A);return(0,d.jsx)(l.A.Provider,{value:m,children:(0,d.jsx)(p,{as:i,className:(0,n.A)(b.root,o),ref:t,role:i===u?null:"rowgroup",ownerState:A,...y})})}))},14627:(e,t,a)=>{a.d(t,{A:()=>l,X:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTableHead",e)}const l=(0,o.A)("MuiTableHead",["root"])},82565:(e,t,a)=>{a.d(t,{A:()=>A});var o=a(7552),n=a(93878),r=a(70799),l=a(72639),i=a(70156),s=a(51148),c=a(60129),d=a(4785),p=a(36317),m=a(69500);const u=(0,s.Ay)("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.head&&t.head,a.footer&&t.footer]}})((0,c.A)((({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${p.A.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${p.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)}}})))),y="tr",A=o.forwardRef((function(e,t){const a=(0,d.b)({props:e,name:"MuiTableRow"}),{className:l,component:s=y,hover:c=!1,selected:A=!1,...b}=a,g=o.useContext(i.A),v={...a,component:s,hover:c,selected:A,head:g&&"head"===g.variant,footer:g&&"footer"===g.variant},h=(e=>{const{classes:t,selected:a,hover:o,head:n,footer:l}=e,i={root:["root",a&&"selected",o&&"hover",n&&"head",l&&"footer"]};return(0,r.A)(i,p.r,t)})(v);return(0,m.jsx)(u,{as:s,ref:t,className:(0,n.A)(h.root,l),role:s===y?null:"row",ownerState:v,...b})}))},36317:(e,t,a)=>{a.d(t,{A:()=>l,r:()=>r});var o=a(33761),n=a(85693);function r(e){return(0,n.Ay)("MuiTableRow",e)}const l=(0,o.A)("MuiTableRow",["root","selected","hover","head","footer"])}}]);
+//# sourceMappingURL=8009.a65f1b78.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8009.a65f1b78.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8009.a65f1b78.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/Create.js","../../../plugins/data-management/src/AssemblyManager/AssemblyTable.tsx","../../../plugins/data-management/src/AssemblyManager/AssemblyAddForm.tsx","../../../plugins/data-management/src/AssemblyManager/AssemblyEditor.tsx","../../../plugins/data-management/src/AssemblyManager/AssemblyManager.tsx","../../../node_modules/@mui/icons-material/esm/Delete.js","../../../node_modules/@mui/material/Table/Table.js","../../../node_modules/@mui/material/Table/TableContext.js","../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/Table/tableClasses.js","../../../node_modules/@mui/material/TableBody/TableBody.js","../../../node_modules/@mui/material/TableBody/tableBodyClasses.js","../../../node_modules/@mui/material/TableCell/TableCell.js","../../../node_modules/@mui/material/TableCell/tableCellClasses.js","../../../node_modules/@mui/material/TableContainer/TableContainer.js","../../../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../../../node_modules/@mui/material/TableHead/TableHead.js","../../../node_modules/@mui/material/TableHead/tableHeadClasses.js","../../../node_modules/@mui/material/TableRow/TableRow.js","../../../node_modules/@mui/material/TableRow/tableRowClasses.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"\n}), 'Create');","import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  Paper,\n} from '@mui/material'\nimport {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\n\nimport CreateIcon from '@mui/icons-material/Create'\nimport DeleteIcon from '@mui/icons-material/Delete'\n\nconst AssemblyTable = observer(function ({\n  rootModel,\n  setIsAssemblyBeingEdited,\n  setAssemblyBeingEdited,\n}: {\n  rootModel: {\n    jbrowse: {\n      removeAssemblyConf: (arg: string) => void\n      assemblies: AnyConfigurationModel[]\n    }\n  }\n  setIsAssemblyBeingEdited(arg: boolean): void\n  setAssemblyBeingEdited(arg: AnyConfigurationModel): void\n}) {\n  function removeAssembly(name: string) {\n    rootModel.jbrowse.removeAssemblyConf(name)\n  }\n\n  const { assemblies } = rootModel.jbrowse\n\n  return (\n    <TableContainer component={Paper}>\n      <Table>\n        <TableHead>\n          <TableRow>\n            <TableCell>Name</TableCell>\n            <TableCell>Display name</TableCell>\n            <TableCell>Aliases</TableCell>\n            <TableCell>Actions</TableCell>\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {assemblies.map(assembly => {\n            const name = readConfObject(assembly, 'name')\n            const displayName = readConfObject(assembly, 'displayName')\n            const aliases = readConfObject(assembly, 'aliases')\n            return (\n              <TableRow key={name}>\n                <TableCell>{name}</TableCell>\n                <TableCell>{displayName}</TableCell>\n                <TableCell>{aliases ? aliases.toString() : ''}</TableCell>\n                <TableCell>\n                  <IconButton\n                    data-testid={`${name}-edit`}\n                    onClick={() => {\n                      setIsAssemblyBeingEdited(true)\n                      setAssemblyBeingEdited(assembly)\n                    }}\n                  >\n                    <CreateIcon color=\"primary\" />\n                  </IconButton>\n                  <IconButton\n                    data-testid={`${name}-delete`}\n                    onClick={() => {\n                      removeAssembly(name)\n                    }}\n                  >\n                    <DeleteIcon color=\"error\" />\n                  </IconButton>\n                </TableCell>\n              </TableRow>\n            )\n          })}\n        </TableBody>\n      </Table>\n    </TableContainer>\n  )\n})\n\nexport default AssemblyTable\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, Grid, MenuItem, Paper, TextField } from '@mui/material'\nimport { FileSelector } from '@jbrowse/core/ui'\nimport { AbstractRootModel, FileLocation } from '@jbrowse/core/util/types'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\n\nconst AdapterSelector = observer(function ({\n  adapterSelection,\n  setAdapterSelection,\n  adapterTypes,\n}: {\n  adapterSelection: string\n  setAdapterSelection: (arg: string) => void\n  adapterTypes: readonly string[]\n}) {\n  return (\n    <TextField\n      value={adapterSelection}\n      label=\"Type\"\n      select\n      helperText=\"Type of adapter to use\"\n      fullWidth\n      onChange={event => {\n        setAdapterSelection(event.target.value)\n      }}\n    >\n      {adapterTypes.map(str => (\n        <MenuItem key={str} value={str}>\n          {str}\n        </MenuItem>\n      ))}\n    </TextField>\n  )\n})\n\nconst AdapterInput = observer(function ({\n  adapterSelection,\n  fastaLocation,\n  faiLocation,\n  gziLocation,\n  twoBitLocation,\n  chromSizesLocation,\n  setFaiLocation,\n  setGziLocation,\n  setTwoBitLocation,\n  setFastaLocation,\n  setChromSizesLocation,\n}: {\n  adapterSelection: string\n  fastaLocation: FileLocation\n  faiLocation: FileLocation\n  gziLocation: FileLocation\n  twoBitLocation: FileLocation\n  chromSizesLocation: FileLocation\n  setGziLocation: (arg: FileLocation) => void\n  setTwoBitLocation: (arg: FileLocation) => void\n  setChromSizesLocation: (arg: FileLocation) => void\n  setFastaLocation: (arg: FileLocation) => void\n  setFaiLocation: (arg: FileLocation) => void\n}) {\n  if (\n    adapterSelection === 'IndexedFastaAdapter' ||\n    adapterSelection === 'BgzipFastaAdapter'\n  ) {\n    return (\n      <Grid container spacing={2}>\n        <Grid item>\n          <FileSelector\n            name=\"fastaLocation\"\n            location={fastaLocation}\n            setLocation={loc => {\n              setFastaLocation(loc)\n            }}\n          />\n        </Grid>\n        <Grid item>\n          <FileSelector\n            name=\"faiLocation\"\n            location={faiLocation}\n            setLocation={loc => {\n              setFaiLocation(loc)\n            }}\n          />\n        </Grid>\n        {adapterSelection === 'BgzipFastaAdapter' ? (\n          <Grid item>\n            <FileSelector\n              name=\"gziLocation\"\n              location={gziLocation}\n              setLocation={loc => {\n                setGziLocation(loc)\n              }}\n            />\n          </Grid>\n        ) : null}\n      </Grid>\n    )\n  }\n\n  if (adapterSelection === 'TwoBitAdapter') {\n    return (\n      <Grid container spacing={2}>\n        <Grid item>\n          <FileSelector\n            name=\"twoBitLocation\"\n            location={twoBitLocation}\n            setLocation={loc => {\n              setTwoBitLocation(loc)\n            }}\n          />\n        </Grid>\n        <Grid item>\n          <FileSelector\n            name=\"chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)\"\n            location={chromSizesLocation}\n            setLocation={loc => {\n              setChromSizesLocation(loc)\n            }}\n          />\n        </Grid>\n      </Grid>\n    )\n  }\n\n  return null\n})\n\nconst blank = { uri: '' } as FileLocation\n\nconst adapterTypes = [\n  'IndexedFastaAdapter',\n  'BgzipFastaAdapter',\n  'TwoBitAdapter',\n] as const\n\nconst AssemblyAddForm = observer(function ({\n  rootModel,\n  setFormOpen,\n}: {\n  rootModel: AbstractRootModel\n  setFormOpen: (arg: boolean) => void\n}) {\n  const [assemblyName, setAssemblyName] = useState('')\n  const [assemblyDisplayName, setAssemblyDisplayName] = useState('')\n  const [adapterSelection, setAdapterSelection] = useState(\n    adapterTypes[0] as string,\n  )\n  const [fastaLocation, setFastaLocation] = useState(blank)\n  const [faiLocation, setFaiLocation] = useState(blank)\n  const [gziLocation, setGziLocation] = useState(blank)\n  const [twoBitLocation, setTwoBitLocation] = useState(blank)\n  const [chromSizesLocation, setChromSizesLocation] = useState(blank)\n\n  function createAssembly() {\n    if (assemblyName === '') {\n      rootModel.session?.notify(\"Can't create an assembly without a name\")\n    } else {\n      setFormOpen(false)\n      let newAssembly: Record<string, unknown>\n      if (adapterSelection === 'IndexedFastaAdapter') {\n        newAssembly = {\n          name: assemblyName,\n          displayName: assemblyDisplayName,\n          sequence: {\n            adapter: {\n              type: 'IndexedFastaAdapter',\n              fastaLocation,\n              faiLocation,\n            },\n          },\n        }\n      } else if (adapterSelection === 'BgzipFastaAdapter') {\n        newAssembly = {\n          name: assemblyName,\n          displayName: assemblyDisplayName,\n          sequence: {\n            adapter: {\n              type: 'BgzipFastaAdapter',\n              fastaLocation,\n              faiLocation,\n              gziLocation,\n            },\n          },\n        }\n      } else if (adapterSelection === 'TwoBitAdapter') {\n        newAssembly = {\n          name: assemblyName,\n          displayName: assemblyDisplayName,\n          sequence: {\n            adapter: {\n              type: 'TwoBitAdapter',\n              twoBitLocation,\n              chromSizesLocation,\n            },\n          },\n        }\n      } else {\n        throw new Error(`unknown ${adapterSelection}`)\n      }\n      rootModel.jbrowse.addAssemblyConf(newAssembly)\n      rootModel.session?.notify(\n        `Successfully added ${assemblyName} assembly to JBrowse 2`,\n        'success',\n      )\n    }\n  }\n\n  return (\n    <div>\n      <Paper>\n        <TextField\n          id=\"assembly-name\"\n          inputProps={{ 'data-testid': 'assembly-name' }}\n          label=\"Assembly name\"\n          helperText=\"The assembly name e.g. hg38\"\n          variant=\"outlined\"\n          value={assemblyName}\n          onChange={event => {\n            setAssemblyName(event.target.value)\n          }}\n        />\n        <TextField\n          id=\"assembly-name\"\n          inputProps={{ 'data-testid': 'assembly-display-name' }}\n          label=\"Assembly display name\"\n          helperText='A human readable display name for the assembly e.g. \"Homo sapiens (hg38)\"'\n          variant=\"outlined\"\n          value={assemblyDisplayName}\n          onChange={event => {\n            setAssemblyDisplayName(event.target.value)\n          }}\n        />\n        <AdapterSelector\n          adapterSelection={adapterSelection}\n          adapterTypes={adapterTypes}\n          setAdapterSelection={setAdapterSelection}\n        />\n        <AdapterInput\n          adapterSelection={adapterSelection}\n          fastaLocation={fastaLocation}\n          faiLocation={faiLocation}\n          gziLocation={gziLocation}\n          twoBitLocation={twoBitLocation}\n          chromSizesLocation={chromSizesLocation}\n          setFaiLocation={setFaiLocation}\n          setGziLocation={setGziLocation}\n          setTwoBitLocation={setTwoBitLocation}\n          setFastaLocation={setFastaLocation}\n          setChromSizesLocation={setChromSizesLocation}\n        />\n      </Paper>\n      <Button\n        variant=\"contained\"\n        color=\"secondary\"\n        startIcon={<AddIcon />}\n        onClick={createAssembly}\n      >\n        Create new assembly\n      </Button>\n    </div>\n  )\n})\n\nexport default AssemblyAddForm\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ConfigurationEditor } from '@jbrowse/plugin-config'\nimport { makeStyles } from 'tss-react/mui'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\nconst useStyles = makeStyles()({\n  container: {\n    overflow: 'auto',\n    maxHeight: 600,\n  },\n})\nconst AssemblyEditor = observer(function ({\n  assembly,\n}: {\n  assembly?: AnyConfigurationModel\n}) {\n  const { classes } = useStyles()\n  return (\n    <div className={classes.container}>\n      {assembly ? (\n        <ConfigurationEditor model={{ target: assembly }} />\n      ) : (\n        <div>No assembly</div>\n      )}\n    </div>\n  )\n})\n\nexport default AssemblyEditor\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { Button, DialogActions, DialogContent } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\n// icons\nimport AddIcon from '@mui/icons-material/Add'\n\n// locals\nimport AssemblyTable from './AssemblyTable'\nimport AssemblyAddForm from './AssemblyAddForm'\nimport AssemblyEditor from './AssemblyEditor'\n\nconst AssemblyManager = observer(function ({\n  rootModel,\n  onClose,\n}: {\n  rootModel: any\n  onClose: (arg: boolean) => void\n}) {\n  const [isFormOpen, setFormOpen] = useState(false)\n  const [isAssemblyBeingEdited, setIsAssemblyBeingEdited] = useState(false)\n  const [assemblyBeingEdited, setAssemblyBeingEdited] =\n    useState<AnyConfigurationModel>()\n\n  const showAssemblyTable = !isFormOpen && !isAssemblyBeingEdited\n\n  return (\n    <Dialog\n      open\n      onClose={() => {\n        onClose(false)\n      }}\n      title=\"Assembly manager\"\n    >\n      <DialogContent>\n        {showAssemblyTable ? (\n          <AssemblyTable\n            rootModel={rootModel}\n            setIsAssemblyBeingEdited={setIsAssemblyBeingEdited}\n            setAssemblyBeingEdited={setAssemblyBeingEdited}\n          />\n        ) : null}\n        {isAssemblyBeingEdited ? (\n          <AssemblyEditor assembly={assemblyBeingEdited} />\n        ) : null}\n        {isFormOpen ? (\n          <AssemblyAddForm rootModel={rootModel} setFormOpen={setFormOpen} />\n        ) : null}\n      </DialogContent>\n      <DialogActions>\n        {isFormOpen ? (\n          <Button\n            variant=\"contained\"\n            onClick={() => {\n              setFormOpen(false)\n            }}\n          >\n            Back\n          </Button>\n        ) : null}\n        {isAssemblyBeingEdited ? (\n          <Button\n            variant=\"contained\"\n            onClick={() => {\n              setIsAssemblyBeingEdited(false)\n            }}\n          >\n            Back\n          </Button>\n        ) : null}\n        {showAssemblyTable ? (\n          <>\n            <Button\n              color=\"secondary\"\n              variant=\"contained\"\n              onClick={() => {\n                onClose(false)\n              }}\n            >\n              Close\n            </Button>\n            <Button\n              variant=\"contained\"\n              startIcon={<AddIcon />}\n              onClick={() => {\n                setFormOpen(true)\n              }}\n            >\n              Add new assembly\n            </Button>\n          </>\n        ) : null}\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default AssemblyManager\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport TableContext from \"./TableContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableUtilityClass } from \"./tableClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', stickyHeader && 'stickyHeader']\n  };\n  return composeClasses(slots, getTableUtilityClass, classes);\n};\nconst TableRoot = styled('table', {\n  name: 'MuiTable',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'table',\n  width: '100%',\n  borderCollapse: 'collapse',\n  borderSpacing: 0,\n  '& caption': {\n    ...theme.typography.body2,\n    padding: theme.spacing(2),\n    color: (theme.vars || theme).palette.text.secondary,\n    textAlign: 'left',\n    captionSide: 'bottom'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      borderCollapse: 'separate'\n    }\n  }]\n})));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTable'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    padding = 'normal',\n    size = 'medium',\n    stickyHeader = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    padding,\n    size,\n    stickyHeader\n  };\n  const classes = useUtilityClasses(ownerState);\n  const table = React.useMemo(() => ({\n    padding,\n    size,\n    stickyHeader\n  }), [padding, size, stickyHeader]);\n  return /*#__PURE__*/_jsx(TableContext.Provider, {\n    value: table,\n    children: /*#__PURE__*/_jsx(TableRoot, {\n      as: component,\n      role: component === defaultComponent ? null : 'table',\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   * @default 'normal'\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Allows TableCells to inherit size of the Table.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set the header sticky.\n   * @default false\n   */\n  stickyHeader: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Table;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableUtilityClass(slot) {\n  return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableBodyUtilityClass } from \"./tableBodyClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = styled('tbody', {\n  name: 'MuiTableBody',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-row-group'\n});\nconst tablelvl2 = {\n  variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/React.forwardRef(function TableBody(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableBody'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableBodyRoot, {\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableBody;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableBodyUtilityClass(slot) {\n  return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, alpha, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport TableContext from \"../Table/TableContext.js\";\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableCellClasses, { getTableCellUtilityClass } from \"./tableCellClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16,\n  variants: [{\n    props: {\n      variant: 'head'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary,\n      lineHeight: theme.typography.pxToRem(24),\n      fontWeight: theme.typography.fontWeightMedium\n    }\n  }, {\n    props: {\n      variant: 'body'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary\n    }\n  }, {\n    props: {\n      variant: 'footer'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      lineHeight: theme.typography.pxToRem(21),\n      fontSize: theme.typography.pxToRem(12)\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: '6px 16px',\n      [`&.${tableCellClasses.paddingCheckbox}`]: {\n        width: 24,\n        // prevent the checkbox column from growing\n        padding: '0 12px 0 16px',\n        '& > *': {\n          padding: 0\n        }\n      }\n    }\n  }, {\n    props: {\n      padding: 'checkbox'\n    },\n    style: {\n      width: 48,\n      // prevent the checkbox column from growing\n      padding: '0 0 0 4px'\n    }\n  }, {\n    props: {\n      padding: 'none'\n    },\n    style: {\n      padding: 0\n    }\n  }, {\n    props: {\n      align: 'left'\n    },\n    style: {\n      textAlign: 'left'\n    }\n  }, {\n    props: {\n      align: 'center'\n    },\n    style: {\n      textAlign: 'center'\n    }\n  }, {\n    props: {\n      align: 'right'\n    },\n    style: {\n      textAlign: 'right',\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      align: 'justify'\n    },\n    style: {\n      textAlign: 'justify'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 2,\n      backgroundColor: (theme.vars || theme).palette.background.default\n    }\n  }]\n})));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/React.forwardRef(function TableCell(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n    align = 'inherit',\n    className,\n    component: componentProp,\n    padding: paddingProp,\n    scope: scopeProp,\n    size: sizeProp,\n    sortDirection,\n    variant: variantProp,\n    ...other\n  } = props;\n  const table = React.useContext(TableContext);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = {\n    ...props,\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/_jsx(TableCellRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body', 'footer', 'head']), PropTypes.string])\n} : void 0;\nexport default TableCell;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n  return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableContainerUtilityClass } from \"./tableContainerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n  name: 'MuiTableContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  width: '100%',\n  overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableContainer'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableContainerRoot, {\n    ref: ref,\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `Table`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableHeadUtilityClass } from \"./tableHeadClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n  name: 'MuiTableHead',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-header-group'\n});\nconst tablelvl2 = {\n  variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableHead'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableHeadRoot, {\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n  return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableRowClasses, { getTableRowUtilityClass } from \"./tableRowClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    selected,\n    hover,\n    head,\n    footer\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', hover && 'hover', head && 'head', footer && 'footer']\n  };\n  return composeClasses(slots, getTableRowUtilityClass, classes);\n};\nconst TableRowRoot = styled('tr', {\n  name: 'MuiTableRow',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.head && styles.head, ownerState.footer && styles.footer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: 'inherit',\n  display: 'table-row',\n  verticalAlign: 'middle',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  [`&.${tableRowClasses.hover}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${tableRowClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n    }\n  }\n})));\nconst defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\nconst TableRow = /*#__PURE__*/React.forwardRef(function TableRow(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableRow'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    hover = false,\n    selected = false,\n    ...other\n  } = props;\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const ownerState = {\n    ...props,\n    component,\n    hover,\n    selected,\n    head: tablelvl2 && tablelvl2.variant === 'head',\n    footer: tablelvl2 && tablelvl2.variant === 'footer'\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableRowRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    role: component === defaultComponent ? null : 'row',\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Should be valid `<tr>` children such as `TableCell`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the table row will shade on hover.\n   * @default false\n   */\n  hover: PropTypes.bool,\n  /**\n   * If `true`, the table row will have the selected shading.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableRow;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableRowUtilityClass(slot) {\n  return generateUtilityClass('MuiTableRow', slot);\n}\nconst tableRowClasses = generateUtilityClasses('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\nexport default tableRowClasses;"],"names":["createSvgIcon","d","observer","rootModel","setIsAssemblyBeingEdited","setAssemblyBeingEdited","assemblies","jbrowse","React","TableContainer","component","Paper","Table","TableHead","TableRow","TableCell","TableBody","map","assembly","name","readConfObject","displayName","aliases","key","toString","IconButton","onClick","CreateIcon","color","removeAssemblyConf","removeAssembly","DeleteIcon","AdapterSelector","adapterSelection","setAdapterSelection","adapterTypes","TextField","value","label","select","helperText","fullWidth","onChange","event","target","str","MenuItem","AdapterInput","fastaLocation","faiLocation","gziLocation","twoBitLocation","chromSizesLocation","setFaiLocation","setGziLocation","setTwoBitLocation","setFastaLocation","setChromSizesLocation","Grid","container","spacing","item","FileSelector","location","setLocation","loc","blank","uri","setFormOpen","assemblyName","setAssemblyName","useState","assemblyDisplayName","setAssemblyDisplayName","id","inputProps","variant","Button","startIcon","AddIcon","session","notify","newAssembly","sequence","adapter","type","Error","addAssemblyConf","useStyles","makeStyles","overflow","maxHeight","classes","className","ConfigurationEditor","model","onClose","isFormOpen","isAssemblyBeingEdited","assemblyBeingEdited","showAssemblyTable","Dialog","open","title","DialogContent","AssemblyTable","AssemblyEditor","AssemblyAddForm","DialogActions","TableRoot","slot","overridesResolver","props","styles","ownerState","root","stickyHeader","theme","display","width","borderCollapse","borderSpacing","typography","body2","padding","vars","palette","text","secondary","textAlign","captionSide","variants","style","defaultComponent","inProps","ref","size","other","slots","useUtilityClasses","table","Provider","children","as","role","getTableUtilityClass","TableBodyRoot","tablelvl2","getTableBodyUtilityClass","TableCellRoot","align","verticalAlign","borderBottom","border","mode","divider","primary","lineHeight","pxToRem","fontWeight","fontWeightMedium","fontSize","paddingCheckbox","flexDirection","position","top","zIndex","backgroundColor","background","default","componentProp","paddingProp","scope","scopeProp","sizeProp","sortDirection","variantProp","isHeadCell","undefined","ariaSort","getTableCellUtilityClass","TableContainerRoot","overflowX","getTableContainerUtilityClass","TableHeadRoot","getTableHeadUtilityClass","TableRowRoot","head","footer","outline","hover","action","selected","mainChannel","selectedOpacity","main","hoverOpacity","getTableRowUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8052.7d772984.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8052],{68052:(s,a,e)=>{e.r(a),e.d(a,{default:()=>l.A,dialogActionsClasses:()=>i.A,getDialogActionsUtilityClass:()=>i.C});var l=e(58507),i=e(94911)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8076.fc478e91.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8076],{88076:(e,t,n)=>{n.r(t),n.d(t,{default:()=>N});var r=n(7552),a=n(82725),o=n(68446),l=n(99546),i=n(49823),s=n(943),c=n(75785),d=n(66684);const m=(0,c.n9)()((e=>({paper:{overflowY:"auto",height:"100%",position:"relative",zIndex:e.zIndex.drawer,outline:"none",background:e.palette.background.default},resizeHandle:{width:4,position:"fixed",top:0,zIndex:e.zIndex.drawer+1}}))),u=(0,o.observer)((function({children:e,session:t}){const{drawerPosition:n,drawerWidth:a}=t,{classes:o}=m(),l=(0,r.useRef)(null);return(0,r.useEffect)((()=>{function e(e){if(e.target instanceof Element&&l.current?.contains(e.target)){const e=t.visibleWidget?.view?.id;e&&t.setFocusedViewId(e)}}return document.addEventListener("mousedown",e),document.addEventListener("keydown",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",e)}}),[t]),r.createElement(s.A,{ref:l,className:o.paper,elevation:16,square:!0},"right"===n?r.createElement(d.A,{onDrag:t.resizeDrawer,className:o.resizeHandle,vertical:!0}):null,e,"left"===n?r.createElement(d.A,{onDrag:t.resizeDrawer,className:o.resizeHandle,style:{left:a},vertical:!0}):null)}));var g=n(27281),E=n(17515),p=n(89003),w=n(61723),v=n(48171),h=n(98360),f=n(36715),b=n(29629),A=n(25762);const k=(0,c.n9)()((e=>({formControl:{margin:0},drawerSelect:{margin:0,color:e.palette.secondary.contrastText},dropDownIcon:{color:e.palette.secondary.contrastText}}))),y=(0,o.observer)((function({session:e}){const{visibleWidget:t,activeWidgets:n}=e,{classes:a}=k(),{pluginManager:o}=(0,l.getEnv)(e);return r.createElement(v.A,{className:a.formControl},r.createElement(h.A,{value:t?.id,"data-testid":"widget-drawer-selects",className:a.drawerSelect,classes:{icon:a.dropDownIcon},renderValue:t=>{const n=e.activeWidgets.get(t);if(!n)return r.createElement(f.A,{variant:"h6",color:"inherit"},"Unknown widget");const a=o.getWidgetType(n.type),{HeadingComponent:l,heading:i}=a;return l?r.createElement(l,{model:n}):r.createElement(f.A,{variant:"h6",color:"inherit"},i)},onChange:t=>{const n=e.activeWidgets.get(t.target.value);n?e.showWidget(n):e.notify(`Widget not found ${t.target.value}`,"warning")}},[...n.values()].map((t=>{const n=o.getWidgetType(t.type),{HeadingComponent:a,heading:l}=n;return r.createElement(b.A,{"data-testid":`widget-drawer-selects-item-${t.type}`,key:t.id,value:t.id},a?r.createElement(a,{model:t}):r.createElement(f.A,{variant:"h6",color:"inherit"},l),r.createElement(w.A,{"data-testid":`${t.type}-drawer-delete`,color:"inherit","aria-label":"Delete",onClick:()=>{e.hideWidget(t)}},r.createElement(A.A,null)))}))))}));var C=n(2051),W=n(30157),z=n(16217),D=n(17307);const T=(0,o.observer)((function({session:e}){const[t,n]=(0,r.useState)(null),{drawerPosition:a,visibleWidget:o}=e;return r.createElement(r.Fragment,null,r.createElement(w.A,{color:"inherit",onClick:e=>{n(e.currentTarget)}},r.createElement(D.A,null)),r.createElement(p.A,{title:"Minimize drawer"},r.createElement(w.A,{"data-testid":"drawer-minimize",color:"inherit",onClick:()=>{e.notify(`Drawer minimized, click button on ${a} side of screen to re-open`,"info"),e.minimizeWidgetDrawer()}},r.createElement(z.A,null))),r.createElement(p.A,{title:"Close drawer"},r.createElement(w.A,{color:"inherit",onClick:()=>{e.hideWidget(o)}},r.createElement(W.A,null))),r.createElement(C.A,{anchorEl:t,open:Boolean(t),onClose:()=>{n(null)}},["left","right"].map((t=>r.createElement(b.A,{key:t,selected:"option"===a,onClick:()=>{e.setDrawerPosition(t),n(null)}},t)))))}));var x=n(67386);const H=(0,c.n9)()((e=>({spacer:{flexGrow:1},headerFocused:{background:e.palette.secondary.main},headerUnfocused:{background:e.palette.secondary.dark}}))),I=(0,o.observer)((function({session:e,setToolbarHeight:t,onPopoutDrawer:n}){const{classes:a}=H(),o=e.focusedViewId,l=e.visibleWidget?.view?.id;return r.createElement(g.A,{position:"sticky",className:o===l?a.headerFocused:a.headerUnfocused,ref:e=>{t(e?.getBoundingClientRect().height||0)}},r.createElement(E.A,{disableGutters:!0},r.createElement(y,{session:e}),r.createElement(p.A,{title:"Open drawer in dialog"},r.createElement(w.A,{color:"inherit",onClick:()=>{n()}},r.createElement(x.A,null))),r.createElement("div",{className:a.spacer}),r.createElement(T,{session:e})))})),F=(0,r.lazy)((()=>n.e(2968).then(n.bind(n,12968)))),N=(0,o.observer)((function({session:e}){const{visibleWidget:t}=e,{pluginManager:n}=(0,l.getEnv)(e),o=t?n.evaluateExtensionPoint("Core-replaceWidget",n.getWidgetType(t.type).ReactComponent,{session:e,model:t}):null,[s,c]=(0,r.useState)(0),[d,m]=(0,r.useState)(!1);return r.createElement(u,{session:e},r.createElement(I,{onPopoutDrawer:()=>{m(!0)},session:e,setToolbarHeight:c}),r.createElement(r.Suspense,{fallback:r.createElement(i.LoadingEllipses,null)},r.createElement(a.tH,{FallbackComponent:({error:e})=>r.createElement(i.ErrorMessage,{error:e})},o?d?r.createElement(r.Fragment,null,r.createElement("div",null,"Opened in dialog..."),r.createElement(F,{session:e,onClose:()=>{m(!1)}})):r.createElement(r.Fragment,null,r.createElement(o,{model:t,session:e,toolbarHeight:s}),r.createElement("div",{style:{height:300}})):null)))}))}}]);
+//# sourceMappingURL=8076.fc478e91.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8076.fc478e91.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8076.fc478e91.chunk.js","mappings":"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","sources":["../../../packages/app-core/src/ui/App/Drawer.tsx","../../../packages/app-core/src/ui/App/DrawerWidgetSelector.tsx","../../../packages/app-core/src/ui/App/DrawerControls.tsx","../../../packages/app-core/src/ui/App/DrawerHeader.tsx","../../../packages/app-core/src/ui/App/DrawerWidget.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\nimport { Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport ResizeHandle from '@jbrowse/core/ui/ResizeHandle'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types'\n\nconst useStyles = makeStyles()(theme => ({\n  paper: {\n    overflowY: 'auto',\n    height: '100%',\n    position: 'relative',\n    zIndex: theme.zIndex.drawer,\n    outline: 'none',\n    background: theme.palette.background.default,\n  },\n  resizeHandle: {\n    width: 4,\n    position: 'fixed',\n    top: 0,\n    zIndex: theme.zIndex.drawer + 1,\n  },\n}))\n\nconst Drawer = observer(function ({\n  children,\n  session,\n}: {\n  children: React.ReactNode\n  session: SessionWithFocusedViewAndDrawerWidgets\n}) {\n  const { drawerPosition, drawerWidth } = session\n  const { classes } = useStyles()\n  const ref = useRef<HTMLDivElement>(null)\n\n  useEffect(() => {\n    function handleSelectView(e: Event) {\n      if (e.target instanceof Element && ref.current?.contains(e.target)) {\n        // @ts-ignore\n        const visibleWidgetId = session.visibleWidget?.view?.id\n        if (visibleWidgetId) {\n          session.setFocusedViewId(visibleWidgetId)\n        }\n      }\n    }\n\n    document.addEventListener('mousedown', handleSelectView)\n    document.addEventListener('keydown', handleSelectView)\n    return () => {\n      document.removeEventListener('mousedown', handleSelectView)\n      document.removeEventListener('keydown', handleSelectView)\n    }\n  }, [session])\n\n  return (\n    <Paper ref={ref} className={classes.paper} elevation={16} square>\n      {drawerPosition === 'right' ? (\n        <ResizeHandle\n          onDrag={session.resizeDrawer}\n          className={classes.resizeHandle}\n          vertical\n        />\n      ) : null}\n      {children}\n      {drawerPosition === 'left' ? (\n        <ResizeHandle\n          onDrag={session.resizeDrawer}\n          className={classes.resizeHandle}\n          style={{ left: drawerWidth }}\n          vertical\n        />\n      ) : null}\n    </Paper>\n  )\n})\n\nexport default Drawer\n","import React from 'react'\nimport {\n  FormControl,\n  IconButton,\n  MenuItem,\n  Select,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getEnv } from '@jbrowse/core/util'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\n\nconst useStyles = makeStyles()(theme => ({\n  formControl: {\n    margin: 0,\n  },\n\n  drawerSelect: {\n    margin: 0,\n    color: theme.palette.secondary.contrastText,\n  },\n\n  dropDownIcon: {\n    color: theme.palette.secondary.contrastText,\n  },\n}))\n\nconst DrawerWidgetSelector = observer(function ({\n  session,\n}: {\n  session: SessionWithFocusedViewAndDrawerWidgets\n}) {\n  const { visibleWidget, activeWidgets } = session\n  const { classes } = useStyles()\n  const { pluginManager } = getEnv(session)\n  return (\n    <FormControl className={classes.formControl}>\n      <Select\n        value={visibleWidget?.id}\n        data-testid=\"widget-drawer-selects\"\n        className={classes.drawerSelect}\n        classes={{ icon: classes.dropDownIcon }}\n        renderValue={widgetId => {\n          const widget = session.activeWidgets.get(widgetId)\n          if (!widget) {\n            return (\n              <Typography variant=\"h6\" color=\"inherit\">\n                Unknown widget\n              </Typography>\n            )\n          }\n          const widgetType = pluginManager.getWidgetType(widget.type)!\n          const { HeadingComponent, heading } = widgetType\n          return HeadingComponent ? (\n            <HeadingComponent model={widget} />\n          ) : (\n            <Typography variant=\"h6\" color=\"inherit\">\n              {heading}\n            </Typography>\n          )\n        }}\n        onChange={e => {\n          const w = session.activeWidgets.get(e.target.value)\n          if (w) {\n            session.showWidget(w)\n          } else {\n            session.notify(`Widget not found ${e.target.value}`, 'warning')\n          }\n        }}\n      >\n        {[...activeWidgets.values()].map(widget => {\n          const widgetType = pluginManager.getWidgetType(widget.type)!\n          const { HeadingComponent, heading } = widgetType\n          return (\n            <MenuItem\n              data-testid={`widget-drawer-selects-item-${widget.type}`}\n              key={widget.id}\n              value={widget.id}\n            >\n              {HeadingComponent ? (\n                <HeadingComponent model={widget} />\n              ) : (\n                <Typography variant=\"h6\" color=\"inherit\">\n                  {heading}\n                </Typography>\n              )}\n              <IconButton\n                data-testid={`${widget.type}-drawer-delete`}\n                color=\"inherit\"\n                aria-label=\"Delete\"\n                onClick={() => {\n                  session.hideWidget(widget)\n                }}\n              >\n                <DeleteIcon />\n              </IconButton>\n            </MenuItem>\n          )\n        })}\n      </Select>\n    </FormControl>\n  )\n})\n\nexport default DrawerWidgetSelector\n","import React, { useState } from 'react'\nimport { IconButton, Menu, MenuItem, Tooltip } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\nimport MinimizeIcon from '@mui/icons-material/Minimize'\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\n\nconst DrawerControls = observer(function ({\n  session,\n}: {\n  session: SessionWithFocusedViewAndDrawerWidgets\n}) {\n  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n  const { drawerPosition, visibleWidget } = session\n  return (\n    <>\n      <IconButton\n        color=\"inherit\"\n        onClick={event => {\n          setAnchorEl(event.currentTarget)\n        }}\n      >\n        <MoreVertIcon />\n      </IconButton>\n      <Tooltip title=\"Minimize drawer\">\n        <IconButton\n          data-testid=\"drawer-minimize\"\n          color=\"inherit\"\n          onClick={() => {\n            session.notify(\n              `Drawer minimized, click button on ${drawerPosition} side of screen to re-open`,\n              'info',\n            )\n            session.minimizeWidgetDrawer()\n          }}\n        >\n          <MinimizeIcon />\n        </IconButton>\n      </Tooltip>\n      <Tooltip title=\"Close drawer\">\n        <IconButton\n          color=\"inherit\"\n          onClick={() => {\n            session.hideWidget(visibleWidget)\n          }}\n        >\n          <CloseIcon />\n        </IconButton>\n      </Tooltip>\n      <Menu\n        anchorEl={anchorEl}\n        open={Boolean(anchorEl)}\n        onClose={() => {\n          setAnchorEl(null)\n        }}\n      >\n        {['left', 'right'].map(option => (\n          <MenuItem\n            key={option}\n            selected={drawerPosition === 'option'}\n            onClick={() => {\n              session.setDrawerPosition(option)\n              setAnchorEl(null)\n            }}\n          >\n            {option}\n          </MenuItem>\n        ))}\n      </Menu>\n    </>\n  )\n})\n\nexport default DrawerControls\n","import React from 'react'\nimport { AppBar, IconButton, Toolbar, Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types'\n\n// locals\nimport DrawerWidgetSelector from './DrawerWidgetSelector'\nimport DrawerControls from './DrawerControls'\n\n// icons\nimport LaunchIcon from '@mui/icons-material/Launch'\n\nconst useStyles = makeStyles()(theme => ({\n  spacer: {\n    flexGrow: 1,\n  },\n\n  headerFocused: {\n    background: theme.palette.secondary.main,\n  },\n  headerUnfocused: {\n    background: theme.palette.secondary.dark,\n  },\n}))\n\nconst DrawerHeader = observer(function ({\n  session,\n  setToolbarHeight,\n  onPopoutDrawer,\n}: {\n  session: SessionWithFocusedViewAndDrawerWidgets\n  setToolbarHeight: (arg: number) => void\n  onPopoutDrawer: () => void\n}) {\n  const { classes } = useStyles()\n  const focusedViewId = session.focusedViewId\n  // @ts-ignore\n  const viewWidgetId = session.visibleWidget?.view?.id\n\n  return (\n    <AppBar\n      position=\"sticky\"\n      className={\n        focusedViewId === viewWidgetId\n          ? classes.headerFocused\n          : classes.headerUnfocused\n      }\n      ref={ref => {\n        setToolbarHeight(ref?.getBoundingClientRect().height || 0)\n      }}\n    >\n      <Toolbar disableGutters>\n        <DrawerWidgetSelector session={session} />\n        <Tooltip title=\"Open drawer in dialog\">\n          <IconButton\n            color=\"inherit\"\n            onClick={() => {\n              onPopoutDrawer()\n            }}\n          >\n            <LaunchIcon />\n          </IconButton>\n        </Tooltip>\n        <div className={classes.spacer} />\n        <DrawerControls session={session} />\n      </Toolbar>\n    </AppBar>\n  )\n})\n\nexport default DrawerHeader\n","import React, { Suspense, lazy, useState } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport { observer } from 'mobx-react'\nimport { getEnv } from '@jbrowse/core/util'\nimport { ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui'\nimport { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types'\n\n// locals\nimport Drawer from './Drawer'\nimport DrawerHeader from './DrawerHeader'\n\nconst ModalWidget = lazy(() => import('./ModalWidget'))\n\nconst DrawerWidget = observer(function ({\n  session,\n}: {\n  session: SessionWithFocusedViewAndDrawerWidgets\n}) {\n  const { visibleWidget } = session\n  const { pluginManager } = getEnv(session)\n\n  const DrawerComponent = visibleWidget\n    ? (pluginManager.evaluateExtensionPoint(\n        'Core-replaceWidget',\n        pluginManager.getWidgetType(visibleWidget.type)!.ReactComponent,\n        {\n          session,\n          model: visibleWidget,\n        },\n      ) as React.FC<any>)\n    : null\n\n  // we track the toolbar height because components that use virtualized\n  // height want to be able to fill the contained, minus the toolbar height\n  // (the position static/sticky is included in AutoSizer estimates)\n  const [toolbarHeight, setToolbarHeight] = useState(0)\n  const [popoutDrawer, setPopoutDrawer] = useState(false)\n\n  return (\n    <Drawer session={session}>\n      <DrawerHeader\n        onPopoutDrawer={() => {\n          setPopoutDrawer(true)\n        }}\n        session={session}\n        setToolbarHeight={setToolbarHeight}\n      />\n      <Suspense fallback={<LoadingEllipses />}>\n        <ErrorBoundary\n          FallbackComponent={({ error }) => <ErrorMessage error={error} />}\n        >\n          {DrawerComponent ? (\n            popoutDrawer ? (\n              <>\n                <div>Opened in dialog...</div>\n                <ModalWidget\n                  session={session}\n                  onClose={() => {\n                    setPopoutDrawer(false)\n                  }}\n                />\n              </>\n            ) : (\n              <>\n                <DrawerComponent\n                  model={visibleWidget}\n                  session={session}\n                  toolbarHeight={toolbarHeight}\n                />\n                <div style={{ height: 300 }} />\n              </>\n            )\n          ) : null}\n        </ErrorBoundary>\n      </Suspense>\n    </Drawer>\n  )\n})\n\nexport default DrawerWidget\n"],"names":["useStyles","makeStyles","theme","paper","overflowY","height","position","zIndex","drawer","outline","background","palette","default","resizeHandle","width","top","observer","children","session","drawerPosition","drawerWidth","classes","ref","useRef","useEffect","handleSelectView","e","target","Element","current","contains","visibleWidgetId","visibleWidget","view","id","setFocusedViewId","document","addEventListener","removeEventListener","React","Paper","className","elevation","square","ResizeHandle","onDrag","resizeDrawer","vertical","style","left","formControl","margin","drawerSelect","color","secondary","contrastText","dropDownIcon","activeWidgets","pluginManager","getEnv","FormControl","Select","value","icon","renderValue","widgetId","widget","get","Typography","variant","widgetType","getWidgetType","type","HeadingComponent","heading","model","onChange","w","showWidget","notify","values","map","MenuItem","key","IconButton","onClick","hideWidget","DeleteIcon","anchorEl","setAnchorEl","useState","event","currentTarget","MoreVertIcon","Tooltip","title","minimizeWidgetDrawer","MinimizeIcon","CloseIcon","Menu","open","Boolean","onClose","option","selected","setDrawerPosition","spacer","flexGrow","headerFocused","main","headerUnfocused","dark","setToolbarHeight","onPopoutDrawer","focusedViewId","viewWidgetId","AppBar","getBoundingClientRect","Toolbar","disableGutters","DrawerWidgetSelector","LaunchIcon","DrawerControls","ModalWidget","lazy","DrawerComponent","evaluateExtensionPoint","ReactComponent","toolbarHeight","popoutDrawer","setPopoutDrawer","Drawer","DrawerHeader","Suspense","fallback","LoadingEllipses","ErrorBoundary","FallbackComponent","error","ErrorMessage"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8105.4fd35586.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8105],{74379:(t,e,a)=>{a.r(e),a.d(e,{default:()=>r.A,getTablePaginationUtilityClass:()=>s.B,tablePaginationClasses:()=>s.A});var r=a(8565),s=a(85663)},17515:(t,e,a)=>{a.d(e,{A:()=>g});var r=a(7552),s=a(93878),o=a(70799),n=a(51148),i=a(60129),l=a(4785),u=a(89663),p=a(69500);const d=(0,n.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:a}=t;return[e.root,!a.disableGutters&&e.gutters,e[a.variant]]}})((0,i.A)((({theme:t})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:t})=>!t.disableGutters,style:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:t.mixins.toolbar}]})))),g=r.forwardRef((function(t,e){const a=(0,l.b)({props:t,name:"MuiToolbar"}),{className:r,component:n="div",disableGutters:i=!1,variant:g="regular",...b}=a,c={...a,component:n,disableGutters:i,variant:g},v=(t=>{const{classes:e,disableGutters:a,variant:r}=t,s={root:["root",!a&&"gutters",r]};return(0,o.A)(s,u.U,e)})(c);return(0,p.jsx)(d,{as:n,className:(0,s.A)(v.root,r),ref:e,ownerState:c,...b})}))},89663:(t,e,a)=>{a.d(e,{A:()=>n,U:()=>o});var r=a(33761),s=a(85693);function o(t){return(0,s.Ay)("MuiToolbar",t)}const n=(0,r.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=8105.4fd35586.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8105.4fd35586.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8105.4fd35586.chunk.js","mappings":"oXAWA,MAWMA,GAAc,QAAO,MAAO,CAChCC,KAAM,aACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,MAAOD,EAAWE,gBAAkBH,EAAOI,QAASJ,EAAOC,EAAWI,SAAS,GAP9E,EASjB,QAAU,EACXC,YACI,CACJC,SAAU,WACVC,QAAS,OACTC,WAAY,SACZC,SAAU,CAAC,CACTX,MAAO,EACLE,iBACKA,EAAWE,eAClBQ,MAAO,CACLC,YAAaN,EAAMO,QAAQ,GAC3BC,aAAcR,EAAMO,QAAQ,GAC5B,CAACP,EAAMS,YAAYC,GAAG,OAAQ,CAC5BJ,YAAaN,EAAMO,QAAQ,GAC3BC,aAAcR,EAAMO,QAAQ,MAG/B,CACDd,MAAO,CACLM,QAAS,SAEXM,MAAO,CACLM,UAAW,KAEZ,CACDlB,MAAO,CACLM,QAAS,WAEXM,MAAOL,EAAMY,OAAOC,eAoExB,EAjE6B,cAAiB,SAAiBC,EAASC,GACtE,MAAMtB,GAAQ,OAAgB,CAC5BA,MAAOqB,EACPxB,KAAM,gBAEF,UACJ0B,EAAS,UACTC,EAAY,MAAK,eACjBpB,GAAiB,EAAK,QACtBE,EAAU,aACPmB,GACDzB,EACEE,EAAa,IACdF,EACHwB,YACApB,iBACAE,WAEIoB,EAtEkBxB,KACxB,MAAM,QACJwB,EAAO,eACPtB,EAAc,QACdE,GACEJ,EACEyB,EAAQ,CACZxB,KAAM,CAAC,QAASC,GAAkB,UAAWE,IAE/C,OAAO,OAAeqB,EAAO,IAAwBD,EAAQ,EA6D7CE,CAAkB1B,GAClC,OAAoB,SAAKN,EAAa,CACpCiC,GAAIL,EACJD,WAAW,OAAKG,EAAQvB,KAAMoB,GAC9BD,IAAKA,EACLpB,WAAYA,KACTuB,GAEP,G,qECvFO,SAASK,EAAuBhC,GACrC,OAAO,QAAqB,aAAcA,EAC5C,CACA,MACA,GADuB,OAAuB,aAAc,CAAC,OAAQ,UAAW,UAAW,S","sources":["../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["ToolbarRoot","name","slot","overridesResolver","props","styles","ownerState","root","disableGutters","gutters","variant","theme","position","display","alignItems","variants","style","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","inProps","ref","className","component","other","classes","slots","useUtilityClasses","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8109.344e1845.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8109],{88109:(e,t,n)=>{n.r(t),n.d(t,{default:()=>S});var r=n(7552),a=n(68446),l=n(943),i=n(68984),s=n(9502),o=n(36715),c=n(1343),u=n(33371),d=n(32808),m=n(85676),f=n(76157),p=n(99546);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},h.apply(null,arguments)}function b({columns:e,filter:t,setFilter:n}){return r.createElement(r.Fragment,null,r.createElement(o.A,null,"These filters can use a plain text search or regex style query, e.g. in the genotype field, entering 1 will query for all genotypes that include the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find any non-zero allele e.g. 0|2 or 2/33"),e.map((({field:e})=>r.createElement(c.A,{key:`filter-${e}`,placeholder:`Filter ${e}`,value:t[e]||"",onChange:r=>{n({...t,[e]:r.target.value})}}))))}function g(e){const{feature:t,descriptions:n={}}=e,[a,l]=(0,r.useState)({}),s=t.samples||{},c=Object.entries(s);let g,E=[];const O=Object.keys(a);try{E=c.map((e=>({...Object.fromEntries(Object.entries(e[1]).map((e=>[e[0],`${e[1]}`]))),sample:e[0],id:e[0]}))).filter((e=>!O.length||O.every((t=>{const n=a[t];return!n||new RegExp(n,"i").exec(e[t])}))))}catch(e){g=e}const w=["sample",...Object.keys(c[0]?.[1]||{})],[y,A]=(0,r.useState)(!1),N=w.map((e=>(0,p.measureGridWidth)(E.map((t=>t[e]))))),v=w.map(((e,t)=>({field:e,description:n?.FORMAT?.[e]?.Description,width:N[t]})));return c.length?r.createElement(i.BaseCard,h({},e,{title:"Samples"}),g?r.createElement(o.A,{color:"error"},`${g}`):null,r.createElement(u.A,{control:r.createElement(d.A,{checked:y,onChange:e=>{A(e.target.checked)}}),label:r.createElement(o.A,{variant:"body2"},"Show options")}),y?r.createElement(b,{setFilter:l,columns:v,filter:a}):null,r.createElement(m.z,{autoHeight:!0,rows:E,hideFooter:E.length<100,columns:v,disableRowSelectionOnClick:!0,rowHeight:25,columnHeaderHeight:35,disableColumnMenu:!0,slots:{toolbar:y?f.O:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}}})):null}function E({rows:e,columns:t}){const[n,a]=(0,r.useState)(!1),l=t.map((t=>(0,p.measureGridWidth)(e.map((e=>e[t.field])))));return e.length?r.createElement("div",null,r.createElement(u.A,{control:r.createElement(d.A,{checked:n,onChange:e=>{a(e.target.checked)}}),label:r.createElement(o.A,{variant:"body2"},"Show options")}),r.createElement(m.z,{rowHeight:25,rows:e,columns:t.map(((e,t)=>({...e,width:l[t]}))),slots:{toolbar:n?f.O:null}})):null}function O({data:e,fields:t,title:n}){return e.length?r.createElement(i.BaseCard,{title:n},r.createElement(E,{rows:e.map(((e,n)=>({id:n,...Object.fromEntries(e.split("|").map(((e,n)=>[t[n],e])))}))),columns:t.map((e=>({field:e})))})):null}const w={CHROM:"chromosome: An identifier from the reference genome",POS:"position: The reference position, with the 1st base having position 1",ID:"identifier: Semi-colon separated list of unique identifiers where available",REF:"reference base(s): Each base must be one of A,C,G,T,N (case insensitive).",ALT:"alternate base(s): Comma-separated list of alternate non-reference alleles",QUAL:"quality: Phred-scaled quality score for the assertion made in ALT",FILTER:"filter status: PASS if this position has passed all filters, otherwise a semicolon-separated list of codes for filters that fail"};function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},y.apply(null,arguments)}const A=(0,r.lazy)((()=>n.e(7087).then(n.bind(n,67087))));function N({descriptions:e,feature:t}){const n=e?.INFO?.ANN?.Description,a=n?.match(/.*Functional annotations:'(.*)'$/)?.[1]?.split("|")||[],l=t.INFO?.ANN||[];return r.createElement(O,{fields:a,data:l,title:"Variant ANN field"})}function v({descriptions:e,feature:t}){const n=e?.INFO?.CSQ?.Description,a=n?.match(/.*Format: (.*)/)?.[1]?.split("|")||[],l=t.INFO?.CSQ||[];return r.createElement(O,{fields:a,data:l,title:"Variant CSQ field"})}const S=(0,a.observer)((function(e){const{model:t}=e,{featureData:n,descriptions:a}=t,o=JSON.parse(JSON.stringify(n)),{samples:c,ALT:u,type:d="",...m}=o;return r.createElement(l.A,{"data-testid":"variant-side-drawer"},r.createElement(i.FeatureDetails,y({feature:m,descriptions:{...w,...a}},e)),r.createElement(v,{feature:m,descriptions:a}),r.createElement(N,{feature:m,descriptions:a}),r.createElement(r.Suspense,{fallback:null},"breakend"===d?r.createElement(A,{feature:o,locStrings:o.ALT.map((e=>(0,s.h)(e)?.MatePosition||"")),model:t}):null,"translocation"===d?r.createElement(A,{feature:o,model:t,locStrings:[`${o.INFO.CHR2[0]}:${o.INFO.END}`]}):null,"paired_feature"===d?r.createElement(A,{feature:o,model:t,locStrings:[`${o.mate.refName}:${o.mate.start}`]}):null,d.includes("inversion")||d.includes("deletion")||d.includes("duplication")||d.includes("cnv")||d.includes("sv")?r.createElement(A,{feature:{uniqueId:"random",refName:o.refName,start:o.start,end:o.start+1,mate:{refName:o.refName,start:o.end,end:o.end+1}},model:t,locStrings:[`${o.refName}:${o.end}`]}):null),r.createElement(g,y({feature:o},e,{descriptions:a})))}))}}]);
+//# sourceMappingURL=8109.344e1845.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8109.344e1845.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8109.344e1845.chunk.js","mappings":"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","sources":["../../../plugins/variants/src/VariantFeatureWidget/VariantSampleGrid.tsx","../../../plugins/variants/src/VariantFeatureWidget/AnnotGrid.tsx","../../../plugins/variants/src/VariantFeatureWidget/VariantAnnotationTable.tsx","../../../plugins/variants/src/VariantFeatureWidget/variantFieldDescriptions.ts","../../../plugins/variants/src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"sourcesContent":["import React, { useState } from 'react'\n\nimport {\n  FormControlLabel,\n  Checkbox,\n  TextField,\n  Typography,\n} from '@mui/material'\n\nimport { DataGrid, GridToolbar } from '@mui/x-data-grid'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { measureGridWidth, SimpleFeatureSerialized } from '@jbrowse/core/util'\n\ninterface Entry {\n  sample: string\n  id: string\n  [key: string]: string\n}\n\ntype InfoFields = Record<string, unknown>\ntype Filters = Record<string, string>\n\nfunction SampleFilters({\n  columns,\n  filter,\n  setFilter,\n}: {\n  columns: { field: string }[]\n  filter: Filters\n  setFilter: (arg: Filters) => void\n}) {\n  return (\n    <>\n      <Typography>\n        These filters can use a plain text search or regex style query, e.g. in\n        the genotype field, entering 1 will query for all genotypes that include\n        the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find\n        any non-zero allele e.g. 0|2 or 2/33\n      </Typography>\n      {columns.map(({ field }) => (\n        <TextField\n          key={`filter-${field}`}\n          placeholder={`Filter ${field}`}\n          value={filter[field] || ''}\n          onChange={event => {\n            setFilter({ ...filter, [field]: event.target.value })\n          }}\n        />\n      ))}\n    </>\n  )\n}\n\nexport default function VariantSamples(props: {\n  feature: SimpleFeatureSerialized\n  descriptions?: { FORMAT?: Record<string, { Description?: string }> } | null\n}) {\n  const { feature, descriptions = {} } = props\n  const [filter, setFilter] = useState<Filters>({})\n  const samples = (feature.samples || {}) as Record<string, InfoFields>\n  const preFilteredRows = Object.entries(samples)\n\n  let error: unknown\n  let rows = [] as Entry[]\n  const filters = Object.keys(filter)\n\n  // catch some error thrown from regex\n  // note: maps all values into a string, if this is not done rows are not\n  // sortable by the data-grid\n  try {\n    rows = preFilteredRows\n      .map(row => {\n        return {\n          ...Object.fromEntries(\n            Object.entries(row[1]).map(e => [e[0], `${e[1]}`]),\n          ),\n          sample: row[0],\n          id: row[0],\n        } as Entry\n      })\n      .filter(row =>\n        filters.length\n          ? filters.every(key => {\n              const currFilter = filter[key]\n              return currFilter\n                ? new RegExp(currFilter, 'i').exec(row[key]!)\n                : true\n            })\n          : true,\n      )\n  } catch (e) {\n    error = e\n  }\n\n  const keys = ['sample', ...Object.keys(preFilteredRows[0]?.[1] || {})]\n  const [checked, setChecked] = useState(false)\n  const widths = keys.map(e => measureGridWidth(rows.map(r => r[e])))\n  const columns = keys.map((field, index) => ({\n    field,\n    description: descriptions?.FORMAT?.[field]?.Description,\n    width: widths[index],\n  }))\n\n  // disableRowSelectionOnClick helps avoid\n  // https://github.com/mui-org/material-ui-x/issues/1197\n  return !preFilteredRows.length ? null : (\n    <BaseCard {...props} title=\"Samples\">\n      {error ? <Typography color=\"error\">{`${error}`}</Typography> : null}\n      <FormControlLabel\n        control={\n          <Checkbox\n            checked={checked}\n            onChange={event => {\n              setChecked(event.target.checked)\n            }}\n          />\n        }\n        label={<Typography variant=\"body2\">Show options</Typography>}\n      />\n      {checked ? (\n        <SampleFilters\n          setFilter={setFilter}\n          columns={columns}\n          filter={filter}\n        />\n      ) : null}\n\n      <DataGrid\n        autoHeight\n        rows={rows}\n        hideFooter={rows.length < 100}\n        columns={columns}\n        disableRowSelectionOnClick\n        rowHeight={25}\n        columnHeaderHeight={35}\n        disableColumnMenu\n        slots={{ toolbar: checked ? GridToolbar : null }}\n        slotProps={{\n          toolbar: {\n            printOptions: {\n              disableToolbarButton: true,\n            },\n          },\n        }}\n      />\n    </BaseCard>\n  )\n}\n","import React, { useState } from 'react'\nimport {\n  DataGrid,\n  GridColDef,\n  GridToolbar,\n  GridValidRowModel,\n} from '@mui/x-data-grid'\nimport { Checkbox, FormControlLabel, Typography } from '@mui/material'\nimport { measureGridWidth } from '@jbrowse/core/util'\n\nexport default function VariantAnnotPanel({\n  rows,\n  columns,\n}: {\n  rows: GridValidRowModel[]\n  columns: GridColDef[]\n}) {\n  const [checked, setChecked] = useState(false)\n  const widths = columns.map(e => measureGridWidth(rows.map(r => r[e.field])))\n\n  return rows.length ? (\n    <div>\n      <FormControlLabel\n        control={\n          <Checkbox\n            checked={checked}\n            onChange={event => {\n              setChecked(event.target.checked)\n            }}\n          />\n        }\n        label={<Typography variant=\"body2\">Show options</Typography>}\n      />\n\n      <DataGrid\n        rowHeight={25}\n        rows={rows}\n        columns={columns.map((c, i) => ({ ...c, width: widths[i] }))}\n        slots={{ toolbar: checked ? GridToolbar : null }}\n      />\n    </div>\n  ) : null\n}\n","import React from 'react'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport AnnotGrid from './AnnotGrid'\n\nexport default function VariantAnnotationTable({\n  data,\n  fields,\n  title,\n}: {\n  data: string[]\n  fields: string[]\n  title: string\n}) {\n  return data.length ? (\n    <BaseCard title={title}>\n      <AnnotGrid\n        rows={data.map((elt, id) => ({\n          id,\n          ...Object.fromEntries(elt.split('|').map((e, i) => [fields[i], e])),\n        }))}\n        columns={fields.map(c => ({ field: c }))}\n      />\n    </BaseCard>\n  ) : null\n}\n","export const variantFieldDescriptions = {\n  CHROM: 'chromosome: An identifier from the reference genome',\n  POS: 'position: The reference position, with the 1st base having position 1',\n  ID: 'identifier: Semi-colon separated list of unique identifiers where available',\n  REF: 'reference base(s): Each base must be one of A,C,G,T,N (case insensitive).',\n  ALT: 'alternate base(s): Comma-separated list of alternate non-reference alleles',\n  QUAL: 'quality: Phred-scaled quality score for the assertion made in ALT',\n  FILTER:\n    'filter status: PASS if this position has passed all filters, otherwise a semicolon-separated list of codes for filters that fail',\n}\n","import React, { lazy, Suspense } from 'react'\nimport { observer } from 'mobx-react'\nimport { Paper } from '@mui/material'\nimport { FeatureDetails } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { parseBreakend } from '@gmod/vcf'\n\n// locals\nimport VariantSampleGrid from './VariantSampleGrid'\nimport VariantAnnotationTable from './VariantAnnotationTable'\nimport { VariantFeatureWidgetModel } from './stateModelFactory'\nimport { variantFieldDescriptions } from './variantFieldDescriptions'\n\n// lazies\nconst LaunchBreakendPanel = lazy(() => import('./LaunchBreakendPanel'))\n\nfunction AnnPanel({\n  descriptions,\n  feature,\n}: {\n  descriptions?: {\n    INFO?: {\n      ANN?: {\n        Description?: string\n      }\n    }\n  }\n  feature: {\n    INFO?: {\n      ANN?: string[]\n    }\n  }\n}) {\n  const annDesc = descriptions?.INFO?.ANN?.Description\n  const annFields =\n    annDesc?.match(/.*Functional annotations:'(.*)'$/)?.[1]?.split('|') || []\n  const ann = feature.INFO?.ANN || []\n  return (\n    <VariantAnnotationTable\n      fields={annFields}\n      data={ann}\n      title=\"Variant ANN field\"\n    />\n  )\n}\n\nfunction CsqPanel({\n  descriptions,\n  feature,\n}: {\n  descriptions?: { INFO?: { CSQ?: { Description?: string } } }\n  feature: { INFO?: { CSQ?: string[] } }\n}) {\n  const csqDescription = descriptions?.INFO?.CSQ?.Description\n  const csqFields =\n    csqDescription?.match(/.*Format: (.*)/)?.[1]?.split('|') || []\n  const csq = feature.INFO?.CSQ || []\n  return (\n    <VariantAnnotationTable\n      fields={csqFields}\n      data={csq}\n      title=\"Variant CSQ field\"\n    />\n  )\n}\n\nconst VariantFeatureWidget = observer(function (props: {\n  model: VariantFeatureWidgetModel\n}) {\n  const { model } = props\n  const { featureData, descriptions } = model\n  const feat = JSON.parse(JSON.stringify(featureData))\n  const { samples, ALT, type = '', ...rest } = feat\n\n  return (\n    <Paper data-testid=\"variant-side-drawer\">\n      <FeatureDetails\n        feature={rest}\n        descriptions={{ ...variantFieldDescriptions, ...descriptions }}\n        {...props}\n      />\n      <CsqPanel feature={rest} descriptions={descriptions} />\n      <AnnPanel feature={rest} descriptions={descriptions} />\n      <Suspense fallback={null}>\n        {type === 'breakend' ? (\n          <LaunchBreakendPanel\n            feature={feat}\n            locStrings={feat.ALT.map(\n              (alt: string) => parseBreakend(alt)?.MatePosition || '',\n            )}\n            model={model}\n          />\n        ) : null}\n        {type === 'translocation' ? (\n          <LaunchBreakendPanel\n            feature={feat}\n            model={model}\n            locStrings={[`${feat.INFO.CHR2[0]}:${feat.INFO.END}`]}\n          />\n        ) : null}\n        {type === 'paired_feature' ? (\n          <LaunchBreakendPanel\n            feature={feat}\n            model={model}\n            locStrings={[`${feat.mate.refName}:${feat.mate.start}`]}\n          />\n        ) : null}\n        {type.includes('inversion') ||\n        type.includes('deletion') ||\n        type.includes('duplication') ||\n        type.includes('cnv') ||\n        type.includes('sv') ? (\n          <LaunchBreakendPanel\n            feature={{\n              uniqueId: 'random',\n              refName: feat.refName,\n              start: feat.start,\n              end: feat.start + 1,\n              mate: {\n                refName: feat.refName,\n                start: feat.end,\n                end: feat.end + 1,\n              },\n            }}\n            model={model}\n            locStrings={[`${feat.refName}:${feat.end}`]}\n          />\n        ) : null}\n      </Suspense>\n      <VariantSampleGrid\n        feature={feat}\n        {...props}\n        descriptions={descriptions}\n      />\n    </Paper>\n  )\n})\n\nexport default VariantFeatureWidget\n"],"names":["SampleFilters","columns","filter","setFilter","React","Typography","map","field","TextField","key","placeholder","value","onChange","event","target","VariantSamples","props","feature","descriptions","useState","samples","preFilteredRows","Object","entries","error","rows","filters","keys","row","fromEntries","e","sample","id","length","every","currFilter","RegExp","exec","checked","setChecked","widths","measureGridWidth","r","index","description","FORMAT","Description","width","BaseCard","_extends","title","color","FormControlLabel","control","Checkbox","label","variant","DataGrid","autoHeight","hideFooter","disableRowSelectionOnClick","rowHeight","columnHeaderHeight","disableColumnMenu","slots","toolbar","GridToolbar","slotProps","printOptions","disableToolbarButton","VariantAnnotPanel","c","i","VariantAnnotationTable","data","fields","AnnotGrid","elt","split","variantFieldDescriptions","CHROM","POS","ID","REF","ALT","QUAL","FILTER","LaunchBreakendPanel","lazy","AnnPanel","annDesc","INFO","ANN","annFields","match","ann","CsqPanel","csqDescription","CSQ","csqFields","csq","observer","model","featureData","feat","JSON","parse","stringify","type","rest","Paper","FeatureDetails","Suspense","fallback","locStrings","alt","parseBreakend","MatePosition","CHR2","END","mate","refName","start","includes","uniqueId","end","VariantSampleGrid"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8114.eb856986.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8114],{48114:(s,b,e)=>{e.r(b),e.d(b,{boxClasses:()=>l.A,default:()=>a.A});var a=e(17776),l=e(92239)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8120.85042513.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8120,7706],{47046:(e,t,n)=>{n.d(t,{A:()=>s});class i{}class r{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new i){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(e),e.aborted?this.handleAborted(e):"function"==typeof e.addEventListener&&e.addEventListener("abort",(()=>{this.handleAborted(e)}))}handleAborted(e){this.signals.delete(e),0===this.signals.size&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class a{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),e(this.currentMessage)}callback(e){this.currentMessage=e;for(const t of this.callbacks)t(e)}}class s{constructor({fill:e,cache:t}){if("function"!=typeof e)throw new TypeError("must pass a fill function");if("object"!=typeof t)throw new TypeError("must pass a cache object");if("function"!=typeof t.get||"function"!=typeof t.set||"function"!=typeof t.delete)throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=t,this.fillCallback=e}static isAbortException(e){return"AbortError"===e.name||"ERR_ABORTED"===e.code||"AbortError: aborted"===e.message||"Error: aborted"===e.message}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,n,i){const s=new r,o=new a;o.addCallback(i);const l={aborter:s,promise:this.fillCallback(t,s.signal,(e=>{o.callback(e)})),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};l.aborter.addSignal(n),l.aborter.signal.addEventListener("abort",(()=>{l.settled||this.evict(e,l)})),l.promise.then((()=>{l.settled=!0}),(()=>{l.settled=!0,this.evict(e,l)})).catch((e=>{throw console.error(e),e})),this.cache.set(e,l)}static checkSinglePromise(e,t){function n(){if(null==t?void 0:t.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return e.then((e=>(n(),e)),(e=>{throw n(),e}))}has(e){return this.cache.has(e)}get(e,t,n,i){if(!n&&t instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const r=this.cache.get(e);return r?r.aborted&&!r.settled?(this.evict(e,r),this.get(e,t,n,i)):r.settled?r.promise:(r.aborter.addSignal(n),r.statusReporter.addCallback(i),s.checkSinglePromise(r.promise,n)):(this.fill(e,t,n,i),s.checkSinglePromise(this.cache.get(e).promise,n))}delete(e){const t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){const e=this.cache.keys();let t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}},7706:(e,t,n)=>{n.d(t,{sG:()=>d,unzip:()=>s,i2:()=>o});var i=n(35451),r=n(45834),a=n(57864);async function s(e){try{let t,n=0,r=0;const s=[];let o,l=0;do{const i=e.subarray(n);if(o=new a.Inflate,({strm:t}=o),o.push(i,a.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);n+=t.next_in,s[r]=o.result,l+=s[r].length,r+=1}while(t.avail_in);const h=new Uint8Array(l);for(let e=0,t=0;e<s.length;e++)h.set(s[e],t),t+=s[e].length;return i.hp.from(h)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let n;const{minv:r,maxv:s}=t;let o=r.blockPosition,l=r.dataPosition;const h=[],c=[],d=[];let f=0,u=0;do{const t=e.subarray(o-r.blockPosition),i=new a.Inflate;if(({strm:n}=i),i.push(t,a.Z_SYNC_FLUSH),i.err)throw new Error(i.msg);const m=i.result;h.push(m);let w=m.length;c.push(o),d.push(l),1===h.length&&r.dataPosition&&(h[0]=h[0].subarray(r.dataPosition),w=h[0].length);const b=o;if(o+=n.next_in,l+=w,b>=s.blockPosition){h[u]=h[u].subarray(0,s.blockPosition===r.blockPosition?s.dataPosition-r.dataPosition+1:s.dataPosition+1),c.push(o),d.push(l),f+=h[u].length;break}f+=h[u].length,u++}while(n.avail_in);const m=new Uint8Array(f);for(let e=0,t=0;e<h.length;e++)m.set(h[e],t),t+=h[e].length;return{buffer:i.hp.from(m),cpositions:c,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var l=n(59086),h=n.n(l);class c{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new r.EY(t)}}_readLongWithOverflow(e,t=0,n=!0){const i=h().fromBytesLE(e.slice(t,t+8),n);if(i.greaterThan(Number.MAX_SAFE_INTEGER)||i.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return i.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=i.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const n=new Array(t+1);n[0]=[0,0];const r=16*t;if(r>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=i.hp.allocUnsafe(r),await this.filehandle.read(e,0,r,8);for(let i=0;i<t;i+=1){const t=this._readLongWithOverflow(e,16*i),r=this._readLongWithOverflow(e,16*i+8);n[i+1]=[t,r]}return n}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const n=t+e;if(0===e)return[];const i=await this._getIndex(),r=[],a=(e,n)=>{const i=e[1],r=n?n[1]:1/0;return i<=t&&r>t?0:i<t?-1:1};let s=0,o=i.length-1,l=Math.floor(i.length/2),h=a(i[l],i[l+1]);for(;0!==h;)h>0?o=l-1:h<0&&(s=l+1),l=Math.ceil((o-s)/2)+s,h=a(i[l],i[l+1]);r.push(i[l]);let c=l+1;for(;c<i.length&&(r.push(i[c]),!(i[c][1]>=n));c+=1);return r[r.length-1][1]<n&&r.push([]),r}}class d{constructor({filehandle:e,path:t,gziFilehandle:n,gziPath:i}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new r.EY(t)}if(!n&&!i&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:n,path:n||i||!t?`${t}.gzi`:i})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),n=i.hp.allocUnsafe(4),{bytesRead:r}=await this.filehandle.read(n,0,4,t-28-4);if(4!==r)throw new Error("read error");return e+n.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[n]){let i=n;i||(i=(await this.filehandle.stat()).size);const r=i-t;return await this.filehandle.read(e,0,r,t),await s(e.slice(0,r))}async read(e,t,n,r){const a=await this.gzi.getRelevantBlocksForRead(n,r),s=i.hp.allocUnsafe(65536);let o=t,l=0;for(let t=0;t<a.length-1;t+=1){const i=await this._readAndUncompressBlock(s,a[t],a[t+1]),[,h]=a[t],c=h>=r?0:r-h,d=Math.min(r+n,h+i.length)-h;c>=0&&c<i.length&&(i.copy(e,o,c,d),o+=d-c,l+=d-c)}return{bytesRead:l,buffer:e}}}},68120:(e,t,n)=>{n.d(t,{wD:()=>k});var i=n(47046),r=n(16308),a=n.n(r),s=n(35451),o=n(45834),l=n(7706);function h(e){if(e.greaterThan(Number.MAX_SAFE_INTEGER)||e.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return e.toNumber()}class c extends Error{}function d(e){if(e&&e.aborted){if("undefined"!=typeof DOMException)throw new DOMException("aborted","AbortError");{const e=new c("aborted");throw e.code="ERR_ABORTED",e}}}function f(e,t){const n=[];let i=null;return 0===e.length?e:(e.sort((function(e,t){const n=e.minv.blockPosition-t.minv.blockPosition;return 0!==n?n:e.minv.dataPosition-t.minv.dataPosition})),e.forEach((e=>{var r,a;(!t||e.maxv.compareTo(t)>0)&&(null===i?(n.push(e),i=e):(r=i,(a=e).minv.blockPosition-r.maxv.blockPosition<65e3&&a.maxv.blockPosition-r.minv.blockPosition<5e6?e.maxv.compareTo(i.maxv)>0&&(i.maxv=e.maxv):(n.push(e),i=e)))})),n)}var u=n(59086),m=n.n(u);class w{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}function b(e,t=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new w(1099511627776*e[t+7]+4294967296*e[t+6]+16777216*e[t+5]+65536*e[t+4]+256*e[t+3]+e[t+2],e[t+1]<<8|e[t])}class p{constructor(e,t,n,i=void 0){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return void 0!==this._fetchedSize?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class g{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){const{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||(this.parseP=this._parse(e).catch((e=>{throw this.parseP=void 0,e}))),this.parseP}async hasRefSeq(e,t={}){var n;return!!(null===(n=(await this.parse(t)).indices[e])||void 0===n?void 0:n.binIndex)}}class E extends g{async lineCount(e,t={}){const n=await this.parse(t),i=n.refNameToId[e];if(void 0===i)return-1;if(!n.indices[i])return-1;const{stats:r}=n.indices[i];return r?r.lineCount:-1}async _parse(e={}){const t=await this.filehandle.readFile(e),n=await(0,l.unzip)(t);if(d(e.signal),21578324!==n.readUInt32LE(0))throw new Error("Not a TBI file");const i=n.readInt32LE(4),r=n.readInt32LE(8),a=65536&r?"zero-based-half-open":"1-based-closed",s={0:"generic",1:"SAM",2:"VCF"}[15&r];if(!s)throw new Error(`invalid Tabix preset format flags ${r}`);const o={ref:n.readInt32LE(12),start:n.readInt32LE(16),end:n.readInt32LE(20)},h=n.readInt32LE(24),c=h?String.fromCharCode(h):null,f=n.readInt32LE(28),u=n.readInt32LE(32),{refNameToId:m,refIdToName:w}=this._parseNameBytes(n.slice(36,36+u));let g,E=36+u;return{indices:new Array(i).fill(0).map((()=>{const e=n.readInt32LE(E);E+=4;const t={};let i;for(let r=0;r<e;r+=1){const e=n.readUInt32LE(E);if(E+=4,e>37450)throw new Error("tabix index contains too many bins, please use a CSI index");if(37450===e){const e=n.readInt32LE(E);E+=4,2===e&&(i=this.parsePseudoBin(n,E)),E+=16*e}else{const i=n.readInt32LE(E);E+=4;const r=new Array(i);for(let t=0;t<i;t+=1){const i=b(n,E),a=b(n,E+8);E+=16,g=this._findFirstData(g,i),r[t]=new p(i,a,e)}t[e]=r}}const r=n.readInt32LE(E);E+=4;const a=new Array(r);for(let e=0;e<r;e+=1)a[e]=b(n,E),E+=8,g=this._findFirstData(g,a[e]);return{binIndex:t,linearIndex:a,stats:i}})),metaChar:c,maxBinNumber:37449,maxRefLength:536870912,skipLines:f,firstDataLine:g,columnNumbers:o,coordinateType:a,format:s,refIdToName:w,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:h(m().fromBytesLE(e.slice(t+16,t+24),!0))}}_parseNameBytes(e){let t=0,n=0;const i=[],r={};for(let a=0;a<e.length;a+=1)if(!e[a]){if(n<a){let s=e.toString("utf8",n,a);s=this.renameRefSeq(s),i[t]=s,r[s]=t}n=a+1,t+=1}return{refNameToId:r,refIdToName:i}}async blocksForRange(e,t,n,i={}){t<0&&(t=0);const r=await this.parse(i),a=r.refNameToId[e];if(void 0===a)return[];const s=r.indices[a];if(!s)return[];(s.linearIndex.length?s.linearIndex[t>>14>=s.linearIndex.length?s.linearIndex.length-1:t>>14]:new w(0,0))||console.warn("querying outside of possible tabix range");const o=(l=t,h=n,[[0,0],[1+((l+=1)>>26),1+((h-=1)>>26)],[9+(l>>23),9+(h>>23)],[73+(l>>20),73+(h>>20)],[585+(l>>17),585+(h>>17)],[4681+(l>>14),4681+(h>>14)]]);var l,h;const c=[];for(const[e,t]of o)for(let n=e;n<=t;n++)if(s.binIndex[n])for(const e of s.binIndex[n])c.push(new p(e.minv,e.maxv,n));const d=s.linearIndex.length;let u=null;const m=Math.min(t>>14,d-1),b=Math.min(n>>14,d-1);for(let e=m;e<=b;++e){const t=s.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return f(c,u)}}function x(e,t){return Math.floor(e/2**t)}class v extends g{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){const n=await this.parse(t),i=n.refNameToId[e];if(void 0===i)return-1;if(!n.indices[i])return-1;const{stats:r}=n.indices[i];return r?r.lineCount:-1}indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(e,t){const n=e.readInt32LE(t),i=65536&n?"zero-based-half-open":"1-based-closed",r={0:"generic",1:"SAM",2:"VCF"}[15&n];if(!r)throw new Error(`invalid Tabix preset format flags ${n}`);const a={ref:e.readInt32LE(t+4),start:e.readInt32LE(t+8),end:e.readInt32LE(t+12)},s=e.readInt32LE(t+16),o=s?String.fromCharCode(s):null,l=e.readInt32LE(t+20),h=e.readInt32LE(t+24),{refIdToName:c,refNameToId:d}=this._parseNameBytes(e.slice(t+28,t+28+h));return{refIdToName:c,refNameToId:d,skipLines:l,metaChar:o,columnNumbers:a,format:r,coordinateType:i}}_parseNameBytes(e){let t=0,n=0;const i=[],r={};for(let a=0;a<e.length;a+=1)if(!e[a]){if(n<a){let s=e.toString("utf8",n,a);s=this.renameRefSeq(s),i[t]=s,r[s]=t}n=a+1,t+=1}return{refNameToId:r,refIdToName:i}}async _parse(e={}){const t=await(0,l.unzip)(await this.filehandle.readFile(e));let n;if(21582659===t.readUInt32LE(0))n=1;else{if(38359875!==t.readUInt32LE(0))throw new Error("Not a CSI file");n=2}this.minShift=t.readInt32LE(4),this.depth=t.readInt32LE(8),this.maxBinNumber=((1<<3*(this.depth+1))-1)/7;const i=2**(this.minShift+3*this.depth),r=t.readInt32LE(12),a=r&&r>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:null,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},s=t.readInt32LE(16+r);let o,h=16+r+4;const c=new Array(s).fill(0).map((()=>{const e=t.readInt32LE(h);h+=4;const n={};let i;for(let r=0;r<e;r+=1){const e=t.readUInt32LE(h);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,h+4),h+=48;else{const i=b(t,h+4);o=this._findFirstData(o,i);const r=t.readInt32LE(h+12);h+=16;const a=new Array(r);for(let n=0;n<r;n+=1){const i=b(t,h),r=b(t,h+8);h+=16,a[n]=new p(i,r,e)}n[e]=a}}return{binIndex:n,stats:i}}));return{...a,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:o,csiVersion:n,indices:c,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:h(m().fromBytesLE(e.slice(t+28,t+36),!0))}}async blocksForRange(e,t,n,i={}){t<0&&(t=0);const r=await this.parse(i),a=r.refNameToId[e];if(void 0===a)return[];const s=r.indices[a];if(!s)return[];const o=this.reg2bins(t,n),l=[];for(const[e,t]of o)for(let n=e;n<=t;n++)if(s.binIndex[n])for(const e of s.binIndex[n])l.push(new p(e.minv,e.maxv,n));return f(l,new w(0,0))}reg2bins(e,t){(e-=1)<1&&(e=1),t>2**50&&(t=2**34),t-=1;let n=0,i=0,r=this.minShift+3*this.depth;const a=[];for(;n<=this.depth;r-=3,i+=1*2**(3*n),n+=1){const n=i+x(e,r),s=i+x(t,r);if(s-n+a.length>this.maxBinNumber)throw new Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,s])}return a}}const y="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e){return new Promise((t=>setTimeout(t,e)))}class k{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:s,tbiFilehandle:l,csiPath:h,csiUrl:c,csiFilehandle:d,yieldTime:f=500,renameRefSeqs:u=e=>e,chunkCacheSize:m=5242880}){if(t)this.filehandle=t;else if(e)this.filehandle=new o.EY(e);else{if(!n)throw new TypeError("must provide either filehandle or path");this.filehandle=new o.Tx(n)}if(l)this.index=new E({filehandle:l,renameRefSeqs:u});else if(d)this.index=new v({filehandle:d,renameRefSeqs:u});else if(r)this.index=new E({filehandle:new o.EY(r),renameRefSeqs:u});else if(h)this.index=new v({filehandle:new o.EY(h),renameRefSeqs:u});else if(e)this.index=new E({filehandle:new o.EY(`${e}.tbi`),renameRefSeqs:u});else if(c)this.index=new v({filehandle:new o.Tx(c)});else if(s)this.index=new E({filehandle:new o.Tx(s)});else{if(!n)throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl");this.index=new E({filehandle:new o.Tx(`${n}.tbi`)})}this.renameRefSeq=u,this.yieldTime=f,this.chunkCache=new i.A({cache:new(a())({maxSize:Math.floor(m/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}async getLines(e,t,n,i){var r;let a,s,o={};"function"==typeof i?s=i:(o=i,s=i.lineCallback,a=i.signal);const l=await this.index.getMetadata(o);d(a);const h=null!=t?t:0,c=null!=n?n:l.maxRefLength;if(!(h<=c))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(h===c)return;const f=await this.index.blocksForRange(e,h,c,o);d(a);let u=Date.now();for(const t of f){let n;const{buffer:i,cpositions:o,dpositions:f}=await this.chunkCache.get(t.toString(),t,a);d(a);let m=0,w=0;for(;m<i.length;){const b=i.indexOf("\n",m);if(-1===b)break;const p=i.slice(m,b),g=null!==(r=null==y?void 0:y.decode(p))&&void 0!==r?r:p.toString();if(f){for(;m+t.minv.dataPosition>=f[w++];);w--}const{startCoordinate:E,overlaps:x}=this.checkLine(l,e,h,c,g);if(void 0!==n&&void 0!==E&&n>E)throw new Error(`Lines not sorted by start coordinate (${n} > ${E}), this file is not usable with Tabix.`);if(n=E,x)s(g.trim(),256*o[w]+(m-f[w])+t.minv.dataPosition+1);else if(void 0!==E&&E>=c)return;this.yieldTime&&u-Date.now()>this.yieldTime&&(u=Date.now(),d(a),await I(1)),m=b+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){const{firstDataLine:t,metaChar:n,maxBlockSize:i}=await this.getMetadata(e);d(e.signal);const r=((null==t?void 0:t.blockPosition)||0)+i,a=await this._readRegion(0,r,e),s=await(0,l.unzip)(a);if(n){let e=-1;const t="\n".charCodeAt(0),i=n.charCodeAt(0);for(let n=0;n<s.length&&(n!==e+1||s[n]===i);n+=1)s[n]===t&&(e=n);return s.slice(0,e+1)}return s}async getHeader(e={}){return(await this.getHeaderBuffer(e)).toString("utf8")}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,n,i,r){const{columnNumbers:a,metaChar:s,coordinateType:o,format:l}=e;if(s&&r.startsWith(s))return{overlaps:!1};let{ref:h,start:c,end:d}=a;h||(h=0),c||(c=0),d||(d=0),"VCF"===l&&(d=8);const f=Math.max(h,c,d);let u=1,m=0,w="",b=-1/0;for(let e=0;e<r.length+1;e+=1)if("\t"===r[e]||e===r.length){if(u===h){if(this.renameRefSeq(r.slice(m,e))!==t)return{overlaps:!1}}else if(u===c){if(b=parseInt(r.slice(m,e),10),"1-based-closed"===o&&(b-=1),b>=i)return{startCoordinate:b,overlaps:!1};if((0===d||d===c)&&b+1<=n)return{startCoordinate:b,overlaps:!1}}else if("VCF"===l&&4===u)w=r.slice(m,e);else if(u===d&&("VCF"===l?this._getVcfEnd(b,w,r.slice(m,e)):parseInt(r.slice(m,e),10))<=n)return{overlaps:!1};if(m=e+1,u+=1,u>f)break}return{startCoordinate:b,overlaps:!0}}_getVcfEnd(e,t,n){let i=e+t.length;const r=n.includes("SVTYPE=TRA");if("."===n[0]||r){if(r)return e+1}else{let e=";";for(let t=0;t<n.length;t+=1){if(";"===e&&"END="===n.slice(t,t+4)){let e=n.indexOf(";",t);-1===e&&(e=n.length),i=parseInt(n.slice(t+4,e),10);break}e=n[t]}}return i}async lineCount(e,t={}){return this.index.lineCount(e,t)}async _readRegion(e,t,n={}){const i=s.hp.alloc(t),{bytesRead:r,buffer:a}=await this.filehandle.read(i,0,t,e,n);return a.slice(0,r)}async readChunk(e,t={}){const n=await this._readRegion(e.minv.blockPosition,e.fetchedSize(),t);return(0,l.i2)(n,e)}}}}]);
+//# sourceMappingURL=8120.85042513.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8120.85042513.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8120.85042513.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/abortable-promise-cache/src/AggregateAbortController.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AggregateStatusReporter.ts","../../../node_modules/@gmod/abortable-promise-cache/src/AbortablePromiseCache.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts","../../../node_modules/@gmod/tabix/src/util.ts","../../../node_modules/@gmod/tabix/src/virtualOffset.ts","../../../node_modules/@gmod/tabix/src/chunk.ts","../../../node_modules/@gmod/tabix/src/indexFile.ts","../../../node_modules/@gmod/tabix/src/tbi.ts","../../../node_modules/@gmod/tabix/src/csi.ts","../../../node_modules/@gmod/tabix/src/tabixIndexedFile.ts"],"sourcesContent":["class NullSignal {}\n\n/**\n * aggregates a number of abort signals, will only fire the aggregated\n * abort if all of the input signals have been aborted\n */\nexport default class AggregateAbortController {\n  signals = new Set()\n  abortController = new AbortController()\n\n  /**\n   * @param {AbortSignal} [signal] optional AbortSignal to add. if falsy,\n   *  will be treated as a null-signal, and this abortcontroller will no\n   *  longer be abortable.\n   */\n  //@ts-ignore\n  addSignal(signal: AbortSignal = new NullSignal()): void {\n    if (this.signal.aborted) {\n      throw new Error('cannot add a signal, already aborted!')\n    }\n\n    // note that a NullSignal will never fire, so if we\n    // have one this thing will never actually abort\n    this.signals.add(signal)\n    if (signal.aborted) {\n      // handle the abort immediately if it is already aborted\n      // for some reason\n      this.handleAborted(signal)\n    } else if (typeof signal.addEventListener === 'function') {\n      signal.addEventListener('abort', () => {\n        this.handleAborted(signal)\n      })\n    }\n  }\n\n  handleAborted(signal: AbortSignal): void {\n    this.signals.delete(signal)\n    if (this.signals.size === 0) {\n      this.abortController.abort()\n    }\n  }\n\n  get signal(): AbortSignal {\n    return this.abortController.signal\n  }\n\n  abort(): void {\n    this.abortController.abort()\n  }\n}\n","export default class AggregateStatusReporter {\n  callbacks = new Set<Function>()\n  currentMessage: unknown\n\n  addCallback(callback: Function = () => {}): void {\n    this.callbacks.add(callback)\n    callback(this.currentMessage)\n  }\n\n  callback(message: unknown) {\n    this.currentMessage = message\n    for (const elt of this.callbacks) {\n      elt(message)\n    }\n  }\n}\n","import AggregateAbortController from './AggregateAbortController'\nimport AggregateStatusReporter from './AggregateStatusReporter'\n\ninterface Cache<U> {\n  delete: (key: string) => void\n  keys: () => Iterator<string>\n  get: (key: string) => U | undefined\n  set: (key: string, value: U) => void\n  has: (key: string) => boolean\n}\ntype FillCallback<T, U> = (\n  data: T,\n  signal?: AbortSignal,\n  statusCallback?: Function,\n) => Promise<U>\n\ninterface Entry<U> {\n  aborter: AggregateAbortController\n  settled: boolean\n  readonly aborted: boolean\n  statusReporter: AggregateStatusReporter\n  promise: Promise<U>\n}\nexport default class AbortablePromiseCache<T, U> {\n  /**\n   * @param {object} args constructor args\n   * @param {Function} args.fill fill callback, will be called with sig `fill(data, signal)`\n   * @param {object} args.cache backing store to use, must implement `get(key)`, `set(key, val)`,\n   *   `delete(key)`, and `keys() -> iterator`\n   */\n\n  private cache: Cache<Entry<U>>\n  private fillCallback: FillCallback<T, U>\n\n  constructor({\n    fill,\n    cache,\n  }: {\n    fill: FillCallback<T, U>\n    cache: Cache<Entry<U>>\n  }) {\n    if (typeof fill !== 'function') {\n      throw new TypeError('must pass a fill function')\n    }\n    if (typeof cache !== 'object') {\n      throw new TypeError('must pass a cache object')\n    }\n    if (\n      typeof cache.get !== 'function' ||\n      typeof cache.set !== 'function' ||\n      typeof cache.delete !== 'function'\n    ) {\n      throw new TypeError(\n        'cache must implement get(key), set(key, val), and and delete(key)',\n      )\n    }\n\n    this.cache = cache\n    this.fillCallback = fill\n  }\n\n  static isAbortException(exception: Error) {\n    return (\n      // DOMException\n      exception.name === 'AbortError' ||\n      // standard-ish non-DOM abort exception\n      //@ts-ignore\n      exception.code === 'ERR_ABORTED' ||\n      // stringified DOMException\n      exception.message === 'AbortError: aborted' ||\n      // stringified standard-ish exception\n      exception.message === 'Error: aborted'\n    )\n  }\n\n  evict(key: string, entry: Entry<U>) {\n    if (this.cache.get(key) === entry) {\n      this.cache.delete(key)\n    }\n  }\n\n  fill(key: string, data: T, signal?: AbortSignal, statusCallback?: Function) {\n    const aborter = new AggregateAbortController()\n    const statusReporter = new AggregateStatusReporter()\n    statusReporter.addCallback(statusCallback)\n    const newEntry: Entry<U> = {\n      aborter: aborter,\n      promise: this.fillCallback(data, aborter.signal, (message: unknown) => {\n        statusReporter.callback(message)\n      }),\n      settled: false,\n      statusReporter,\n      get aborted() {\n        return this.aborter.signal.aborted\n      },\n    }\n    newEntry.aborter.addSignal(signal)\n\n    // remove the fill from the cache when its abortcontroller fires, if still in there\n    newEntry.aborter.signal.addEventListener('abort', () => {\n      if (!newEntry.settled) {\n        this.evict(key, newEntry)\n      }\n    })\n\n    // chain off the cached promise to record when it settles\n    newEntry.promise\n      .then(\n        () => {\n          newEntry.settled = true\n        },\n        () => {\n          newEntry.settled = true\n\n          // if the fill throws an error (including abort) and is still in the cache, remove it\n          this.evict(key, newEntry)\n        },\n      )\n      .catch(error => {\n        // this will only be reached if there is some kind of\n        // bad bug in this library\n        console.error(error)\n        throw error\n      })\n\n    this.cache.set(key, newEntry)\n  }\n\n  static checkSinglePromise<U>(promise: Promise<U>, signal?: AbortSignal) {\n    // check just this signal for having been aborted, and abort the\n    // promise if it was, regardless of what happened with the cached\n    // response\n    function checkForSingleAbort() {\n      if (signal?.aborted) {\n        throw Object.assign(new Error('aborted'), { code: 'ERR_ABORTED' })\n      }\n    }\n\n    return promise.then(\n      result => {\n        checkForSingleAbort()\n        return result\n      },\n      error => {\n        checkForSingleAbort()\n        throw error\n      },\n    )\n  }\n\n  has(key: string): boolean {\n    return this.cache.has(key)\n  }\n\n  /**\n   * Callback for getting status of the pending async\n   *\n   * @callback statusCallback\n   * @param {any} status, current status string or message object\n   */\n\n  /**\n   * @param {any} key cache key to use for this request\n   * @param {any} data data passed as the first argument to the fill callback\n   * @param {AbortSignal} [signal] optional AbortSignal object that aborts the request\n   * @param {statusCallback} a callback to get the current status of a pending async operation\n   */\n  get(\n    key: string,\n    data: T,\n    signal?: AbortSignal,\n    statusCallback?: Function,\n  ): Promise<U> {\n    if (!signal && data instanceof AbortSignal) {\n      throw new TypeError(\n        'second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?',\n      )\n    }\n    const cacheEntry = this.cache.get(key)\n\n    if (cacheEntry) {\n      if (cacheEntry.aborted && !cacheEntry.settled) {\n        // if it's aborted but has not realized it yet, evict it and redispatch\n        this.evict(key, cacheEntry)\n        return this.get(key, data, signal, statusCallback)\n      }\n\n      if (cacheEntry.settled) {\n        // too late to abort, just return it\n        return cacheEntry.promise\n      }\n\n      // request is in-flight, add this signal to its list of signals,\n      // or if there is no signal, the aborter will become non-abortable\n      cacheEntry.aborter.addSignal(signal)\n      cacheEntry.statusReporter.addCallback(statusCallback)\n\n      return AbortablePromiseCache.checkSinglePromise(\n        cacheEntry.promise,\n        signal,\n      )\n    }\n\n    // if we got here, it is not in the cache. fill.\n    this.fill(key, data, signal, statusCallback)\n    return AbortablePromiseCache.checkSinglePromise(\n      //see https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-\n\n      this.cache.get(key)!.promise,\n      signal,\n    )\n  }\n\n  /**\n   * delete the given entry from the cache. if it exists and its fill request has\n   * not yet settled, the fill will be signaled to abort.\n   *\n   * @param {any} key\n   */\n  delete(key: string) {\n    const cachedEntry = this.cache.get(key)\n    if (cachedEntry) {\n      if (!cachedEntry.settled) {\n        cachedEntry.aborter.abort()\n      }\n      this.cache.delete(key)\n    }\n  }\n\n  /**\n   * Clear all requests from the cache. Aborts any that have not settled.\n   * @returns {number} count of entries deleted\n   */\n  clear() {\n    // iterate without needing regenerator-runtime\n    const keyIter = this.cache.keys()\n    let deleteCount = 0\n    for (let result = keyIter.next(); !result.done; result = keyIter.next()) {\n      this.delete(result.value)\n      deleteCount += 1\n    }\n    return deleteCount\n  }\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n","import Chunk from './chunk'\nimport VirtualOffset from './virtualOffset'\n\nexport function longToNumber(long: Long) {\n  if (\n    long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n    long.lessThan(Number.MIN_SAFE_INTEGER)\n  ) {\n    throw new Error('integer overflow')\n  }\n  return long.toNumber()\n}\n\nclass AbortError extends Error {\n  public code: string | undefined\n}\n/**\n * Properly check if the given AbortSignal is aborted. Per the standard, if the\n * signal reads as aborted, this function throws either a DOMException\n * AbortError, or a regular error with a `code` attribute set to `ERR_ABORTED`.\n *\n * For convenience, passing `undefined` is a no-op\n *\n * @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted`\n * attribute\n *\n * @returns nothing\n */\nexport function checkAbortSignal(signal?: AbortSignal) {\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    if (typeof DOMException !== 'undefined') {\n      throw new DOMException('aborted', 'AbortError')\n    } else {\n      const e = new AbortError('aborted')\n      e.code = 'ERR_ABORTED'\n      throw e\n    }\n  }\n}\n\n/**\n * Skips to the next tick, then runs `checkAbortSignal`.\n * Await this to inside an otherwise synchronous loop to\n * provide a place to break when an abort signal is received.\n * @param {AbortSignal} signal\n */\nexport async function abortBreakPoint(signal?: AbortSignal) {\n  await Promise.resolve()\n  checkAbortSignal(signal)\n}\n\nexport function canMergeBlocks(chunk1: Chunk, chunk2: Chunk) {\n  return (\n    chunk2.minv.blockPosition - chunk1.maxv.blockPosition < 65000 &&\n    chunk2.maxv.blockPosition - chunk1.minv.blockPosition < 5000000\n  )\n}\n\nexport function optimizeChunks(chunks: Chunk[], lowest?: VirtualOffset) {\n  const mergedChunks: Chunk[] = []\n  let lastChunk: Chunk | null = null\n\n  if (chunks.length === 0) {\n    return chunks\n  }\n\n  chunks.sort(function (c0, c1) {\n    const dif = c0.minv.blockPosition - c1.minv.blockPosition\n    return dif !== 0 ? dif : c0.minv.dataPosition - c1.minv.dataPosition\n  })\n\n  chunks.forEach(chunk => {\n    if (!lowest || chunk.maxv.compareTo(lowest) > 0) {\n      if (lastChunk === null) {\n        mergedChunks.push(chunk)\n        lastChunk = chunk\n      } else {\n        if (canMergeBlocks(lastChunk, chunk)) {\n          if (chunk.maxv.compareTo(lastChunk.maxv) > 0) {\n            lastChunk.maxv = chunk.maxv\n          }\n        } else {\n          mergedChunks.push(chunk)\n          lastChunk = chunk\n        }\n      }\n    }\n  })\n\n  return mergedChunks\n}\n","import { Buffer } from 'buffer'\nexport default class VirtualOffset {\n  public blockPosition: number\n  public dataPosition: number\n  constructor(blockPosition: number, dataPosition: number) {\n    this.blockPosition = blockPosition // < offset of the compressed data block\n    this.dataPosition = dataPosition // < offset into the uncompressed data\n  }\n\n  toString() {\n    return `${this.blockPosition}:${this.dataPosition}`\n  }\n\n  compareTo(b: VirtualOffset) {\n    return (\n      this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition\n    )\n  }\n}\nexport function fromBytes(bytes: Buffer, offset = 0, bigendian = false) {\n  if (bigendian) {\n    throw new Error('big-endian virtual file offsets not implemented')\n  }\n\n  return new VirtualOffset(\n    bytes[offset + 7]! * 0x10000000000 +\n      bytes[offset + 6]! * 0x100000000 +\n      bytes[offset + 5]! * 0x1000000 +\n      bytes[offset + 4]! * 0x10000 +\n      bytes[offset + 3]! * 0x100 +\n      bytes[offset + 2]!,\n    (bytes[offset + 1]! << 8) | bytes[offset]!,\n  )\n}\n","import VirtualOffset from './virtualOffset'\n\n// little class representing a chunk in the index\nexport default class Chunk {\n  public minv: VirtualOffset\n  public maxv: VirtualOffset\n  public bin: number\n  public _fetchedSize?: number\n\n  constructor(\n    minv: VirtualOffset,\n    maxv: VirtualOffset,\n    bin: number,\n    fetchedSize = undefined,\n  ) {\n    this.minv = minv\n    this.maxv = maxv\n    this.bin = bin\n    this._fetchedSize = fetchedSize\n  }\n\n  toUniqueString() {\n     \n    return `${this.minv}..${this.maxv} (bin ${\n      this.bin\n    }, fetchedSize ${this.fetchedSize()})`\n  }\n\n  toString() {\n    return this.toUniqueString()\n  }\n\n  compareTo(b: Chunk) {\n    return (\n      this.minv.compareTo(b.minv) ||\n      this.maxv.compareTo(b.maxv) ||\n      this.bin - b.bin\n    )\n  }\n\n  fetchedSize() {\n    if (this._fetchedSize !== undefined) {\n      return this._fetchedSize\n    }\n    return this.maxv.blockPosition + (1 << 16) - this.minv.blockPosition\n  }\n}\n","import { GenericFilehandle } from 'generic-filehandle'\nimport VirtualOffset from './virtualOffset'\nimport Chunk from './chunk'\n\nexport interface Options {\n  // support having some unknown parts of the options\n  [key: string]: unknown\n  signal?: AbortSignal\n}\n\nexport interface IndexData {\n  refNameToId: Record<string, number>\n  refIdToName: string[]\n  metaChar: string | null\n  columnNumbers: { ref: number; start: number; end: number }\n  coordinateType: string\n  format: string\n  [key: string]: any\n}\n\nexport default abstract class IndexFile {\n  public filehandle: GenericFilehandle\n  public renameRefSeq: (arg0: string) => string\n  private parseP?: Promise<IndexData>\n\n  constructor({\n    filehandle,\n    renameRefSeqs = (n: string) => n,\n  }: {\n    filehandle: GenericFilehandle\n    renameRefSeqs?: (a: string) => string\n  }) {\n    this.filehandle = filehandle\n    this.renameRefSeq = renameRefSeqs\n  }\n\n  public abstract lineCount(refName: string, args: Options): Promise<number>\n\n  protected abstract _parse(opts: Options): Promise<IndexData>\n\n  public async getMetadata(opts: Options = {}) {\n    const { indices: _indices, ...rest } = await this.parse(opts)\n    return rest\n  }\n\n  public abstract blocksForRange(\n    refName: string,\n    start: number,\n    end: number,\n    opts: Options,\n  ): Promise<Chunk[]>\n\n  _findFirstData(\n    currentFdl: VirtualOffset | undefined,\n    virtualOffset: VirtualOffset,\n  ) {\n    if (currentFdl) {\n      return currentFdl.compareTo(virtualOffset) > 0\n        ? virtualOffset\n        : currentFdl\n    } else {\n      return virtualOffset\n    }\n  }\n\n  async parse(opts: Options = {}) {\n    if (!this.parseP) {\n      this.parseP = this._parse(opts).catch((e: unknown) => {\n        this.parseP = undefined\n        throw e\n      })\n    }\n    return this.parseP\n  }\n\n  async hasRefSeq(seqId: number, opts: Options = {}) {\n    const idx = await this.parse(opts)\n    return !!idx.indices[seqId]?.binIndex\n  }\n}\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport VirtualOffset, { fromBytes } from './virtualOffset'\nimport Chunk from './chunk'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { longToNumber, optimizeChunks, checkAbortSignal } from './util'\nimport IndexFile, { Options } from './indexFile'\n\nconst TBI_MAGIC = 21578324 // TBI\\1\nconst TAD_LIDX_SHIFT = 14\n\n/**\n * calculate the list of bins that may overlap with region [beg,end)\n * (zero-based half-open)\n */\nfunction reg2bins(beg: number, end: number) {\n  beg += 1 // < convert to 1-based closed\n  end -= 1\n  return [\n    [0, 0],\n    [1 + (beg >> 26), 1 + (end >> 26)],\n    [9 + (beg >> 23), 9 + (end >> 23)],\n    [73 + (beg >> 20), 73 + (end >> 20)],\n    [585 + (beg >> 17), 585 + (end >> 17)],\n    [4681 + (beg >> 14), 4681 + (end >> 14)],\n  ] as const\n}\n\nexport default class TabixIndex extends IndexFile {\n  async lineCount(refName: string, opts: Options = {}) {\n    const indexData = await this.parse(opts)\n    const refId = indexData.refNameToId[refName]\n    if (refId === undefined) {\n      return -1\n    }\n    const idx = indexData.indices[refId]\n    if (!idx) {\n      return -1\n    }\n    const { stats } = indexData.indices[refId]\n    if (stats) {\n      return stats.lineCount\n    }\n    return -1\n  }\n\n  // fetch and parse the index\n  async _parse(opts: Options = {}) {\n    const buf = await this.filehandle.readFile(opts)\n    const bytes = await unzip(buf)\n    checkAbortSignal(opts.signal)\n\n    // check TBI magic numbers\n    if (bytes.readUInt32LE(0) !== TBI_MAGIC /* \"TBI\\1\" */) {\n      throw new Error('Not a TBI file')\n      // TODO: do we need to support big-endian TBI files?\n    }\n\n    // number of reference sequences in the index\n    const refCount = bytes.readInt32LE(4)\n    const formatFlags = bytes.readInt32LE(8)\n    const coordinateType =\n      formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed'\n    const formatOpts: Record<number, string> = {\n      0: 'generic',\n      1: 'SAM',\n      2: 'VCF',\n    }\n    const format = formatOpts[formatFlags & 0xf]\n    if (!format) {\n      throw new Error(`invalid Tabix preset format flags ${formatFlags}`)\n    }\n    const columnNumbers = {\n      ref: bytes.readInt32LE(12),\n      start: bytes.readInt32LE(16),\n      end: bytes.readInt32LE(20),\n    }\n    const metaValue = bytes.readInt32LE(24)\n    const depth = 5\n    const maxBinNumber = ((1 << ((depth + 1) * 3)) - 1) / 7\n    const maxRefLength = 2 ** (14 + depth * 3)\n    const metaChar = metaValue ? String.fromCharCode(metaValue) : null\n    const skipLines = bytes.readInt32LE(28)\n\n    // read sequence dictionary\n    const nameSectionLength = bytes.readInt32LE(32)\n    const { refNameToId, refIdToName } = this._parseNameBytes(\n      bytes.slice(36, 36 + nameSectionLength),\n    )\n\n    // read the indexes for each reference sequence\n    let currOffset = 36 + nameSectionLength\n    let firstDataLine: VirtualOffset | undefined\n    const indices = new Array(refCount).fill(0).map(() => {\n      // the binning index\n      const binCount = bytes.readInt32LE(currOffset)\n      currOffset += 4\n      const binIndex: Record<number, Chunk[]> = {}\n      let stats\n      for (let j = 0; j < binCount; j += 1) {\n        const bin = bytes.readUInt32LE(currOffset)\n        currOffset += 4\n        if (bin > maxBinNumber + 1) {\n          throw new Error(\n            'tabix index contains too many bins, please use a CSI index',\n          )\n        } else if (bin === maxBinNumber + 1) {\n          const chunkCount = bytes.readInt32LE(currOffset)\n          currOffset += 4\n          if (chunkCount === 2) {\n            stats = this.parsePseudoBin(bytes, currOffset)\n          }\n          currOffset += 16 * chunkCount\n        } else {\n          const chunkCount = bytes.readInt32LE(currOffset)\n          currOffset += 4\n          const chunks = new Array(chunkCount)\n          for (let k = 0; k < chunkCount; k += 1) {\n            const u = fromBytes(bytes, currOffset)\n            const v = fromBytes(bytes, currOffset + 8)\n            currOffset += 16\n            firstDataLine = this._findFirstData(firstDataLine, u)\n            chunks[k] = new Chunk(u, v, bin)\n          }\n          binIndex[bin] = chunks\n        }\n      }\n\n      // the linear index\n      const linearCount = bytes.readInt32LE(currOffset)\n      currOffset += 4\n      const linearIndex = new Array(linearCount)\n      for (let k = 0; k < linearCount; k += 1) {\n        linearIndex[k] = fromBytes(bytes, currOffset)\n        currOffset += 8\n        firstDataLine = this._findFirstData(firstDataLine, linearIndex[k])\n      }\n      return { binIndex, linearIndex, stats }\n    })\n\n    return {\n      indices,\n      metaChar,\n      maxBinNumber,\n      maxRefLength,\n      skipLines,\n      firstDataLine,\n      columnNumbers,\n      coordinateType,\n      format,\n      refIdToName,\n      refNameToId,\n      maxBlockSize: 1 << 16,\n    }\n  }\n\n  parsePseudoBin(bytes: Buffer, offset: number) {\n    const lineCount = longToNumber(\n      Long.fromBytesLE(\n        bytes.slice(offset + 16, offset + 24) as unknown as number[],\n        true,\n      ),\n    )\n    return { lineCount }\n  }\n\n  _parseNameBytes(namesBytes: Buffer) {\n    let currRefId = 0\n    let currNameStart = 0\n    const refIdToName: string[] = []\n    const refNameToId: Record<string, number> = {}\n    for (let i = 0; i < namesBytes.length; i += 1) {\n      if (!namesBytes[i]) {\n        if (currNameStart < i) {\n          let refName = namesBytes.toString('utf8', currNameStart, i)\n          refName = this.renameRefSeq(refName)\n          refIdToName[currRefId] = refName\n          refNameToId[refName] = currRefId\n        }\n        currNameStart = i + 1\n        currRefId += 1\n      }\n    }\n    return { refNameToId, refIdToName }\n  }\n\n  async blocksForRange(\n    refName: string,\n    min: number,\n    max: number,\n    opts: Options = {},\n  ) {\n    if (min < 0) {\n      min = 0\n    }\n\n    const indexData = await this.parse(opts)\n    const refId = indexData.refNameToId[refName]\n    if (refId === undefined) {\n      return []\n    }\n    const ba = indexData.indices[refId]\n    if (!ba) {\n      return []\n    }\n\n    const minOffset = ba.linearIndex.length\n      ? ba.linearIndex[\n          min >> TAD_LIDX_SHIFT >= ba.linearIndex.length\n            ? ba.linearIndex.length - 1\n            : min >> TAD_LIDX_SHIFT\n        ]\n      : new VirtualOffset(0, 0)\n    if (!minOffset) {\n      console.warn('querying outside of possible tabix range')\n    }\n\n    // const { linearIndex, binIndex } = indexes\n\n    const overlappingBins = reg2bins(min, max) // List of bin #s that overlap min, max\n    const chunks: Chunk[] = []\n\n    // Find chunks in overlapping bins.  Leaf bins (< 4681) are not pruned\n    for (const [start, end] of overlappingBins) {\n      for (let bin = start; bin <= end; bin++) {\n        if (ba.binIndex[bin]) {\n          for (const c of ba.binIndex[bin]) {\n            chunks.push(new Chunk(c.minv, c.maxv, bin))\n          }\n        }\n      }\n    }\n\n    // Use the linear index to find minimum file position of chunks that could\n    // contain alignments in the region\n    const nintv = ba.linearIndex.length\n    let lowest = null\n    const minLin = Math.min(min >> 14, nintv - 1)\n    const maxLin = Math.min(max >> 14, nintv - 1)\n    for (let i = minLin; i <= maxLin; ++i) {\n      const vp = ba.linearIndex[i]\n      if (vp) {\n        if (!lowest || vp.compareTo(lowest) < 0) {\n          lowest = vp\n        }\n      }\n    }\n\n    return optimizeChunks(chunks, lowest)\n  }\n}\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { unzip } from '@gmod/bgzf-filehandle'\n\nimport VirtualOffset, { fromBytes } from './virtualOffset'\nimport Chunk from './chunk'\nimport { longToNumber, optimizeChunks } from './util'\n\nimport IndexFile, { Options } from './indexFile'\n\nconst CSI1_MAGIC = 21582659 // CSI\\1\nconst CSI2_MAGIC = 38359875 // CSI\\2\n\nfunction lshift(num: number, bits: number) {\n  return num * 2 ** bits\n}\nfunction rshift(num: number, bits: number) {\n  return Math.floor(num / 2 ** bits)\n}\n\nexport default class CSI extends IndexFile {\n  private maxBinNumber: number\n  private depth: number\n  private minShift: number\n  constructor(args: any) {\n    super(args)\n    this.maxBinNumber = 0\n    this.depth = 0\n    this.minShift = 0\n  }\n  async lineCount(refName: string, opts: Options = {}): Promise<number> {\n    const indexData = await this.parse(opts)\n    const refId = indexData.refNameToId[refName]\n    if (refId === undefined) {\n      return -1\n    }\n    const idx = indexData.indices[refId]\n    if (!idx) {\n      return -1\n    }\n    const { stats } = indexData.indices[refId]\n    if (stats) {\n      return stats.lineCount\n    }\n    return -1\n  }\n\n  indexCov() {\n    throw new Error('CSI indexes do not support indexcov')\n  }\n\n  parseAuxData(bytes: Buffer, offset: number) {\n    const formatFlags = bytes.readInt32LE(offset)\n    const coordinateType =\n      formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed'\n    const format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[formatFlags & 0xf]\n    if (!format) {\n      throw new Error(`invalid Tabix preset format flags ${formatFlags}`)\n    }\n    const columnNumbers = {\n      ref: bytes.readInt32LE(offset + 4),\n      start: bytes.readInt32LE(offset + 8),\n      end: bytes.readInt32LE(offset + 12),\n    }\n    const metaValue = bytes.readInt32LE(offset + 16)\n    const metaChar = metaValue ? String.fromCharCode(metaValue) : null\n    const skipLines = bytes.readInt32LE(offset + 20)\n    const nameSectionLength = bytes.readInt32LE(offset + 24)\n\n    const { refIdToName, refNameToId } = this._parseNameBytes(\n      bytes.slice(offset + 28, offset + 28 + nameSectionLength),\n    )\n\n    return {\n      refIdToName,\n      refNameToId,\n      skipLines,\n      metaChar,\n      columnNumbers,\n      format,\n      coordinateType,\n    }\n  }\n\n  _parseNameBytes(namesBytes: Buffer) {\n    let currRefId = 0\n    let currNameStart = 0\n    const refIdToName = []\n    const refNameToId: Record<string, number> = {}\n    for (let i = 0; i < namesBytes.length; i += 1) {\n      if (!namesBytes[i]) {\n        if (currNameStart < i) {\n          let refName = namesBytes.toString('utf8', currNameStart, i)\n          refName = this.renameRefSeq(refName)\n          refIdToName[currRefId] = refName\n          refNameToId[refName] = currRefId\n        }\n        currNameStart = i + 1\n        currRefId += 1\n      }\n    }\n    return { refNameToId, refIdToName }\n  }\n\n  // fetch and parse the index\n\n  async _parse(opts: Options = {}) {\n    const bytes = await unzip(await this.filehandle.readFile(opts))\n\n    // check TBI magic numbers\n    let csiVersion\n    if (bytes.readUInt32LE(0) === CSI1_MAGIC) {\n      csiVersion = 1\n    } else if (bytes.readUInt32LE(0) === CSI2_MAGIC) {\n      csiVersion = 2\n    } else {\n      throw new Error('Not a CSI file')\n      // TODO: do we need to support big-endian CSI files?\n    }\n\n    this.minShift = bytes.readInt32LE(4)\n    this.depth = bytes.readInt32LE(8)\n    this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7\n    const maxRefLength = 2 ** (this.minShift + this.depth * 3)\n    const auxLength = bytes.readInt32LE(12)\n    const aux =\n      auxLength && auxLength >= 30\n        ? this.parseAuxData(bytes, 16)\n        : {\n            refIdToName: [],\n            refNameToId: {},\n            metaChar: null,\n            columnNumbers: { ref: 0, start: 1, end: 2 },\n            coordinateType: 'zero-based-half-open',\n            format: 'generic',\n          }\n    const refCount = bytes.readInt32LE(16 + auxLength)\n\n    // read the indexes for each reference sequence\n    let firstDataLine: VirtualOffset | undefined\n    let currOffset = 16 + auxLength + 4\n    const indices = new Array(refCount).fill(0).map(() => {\n      // the binning index\n      const binCount = bytes.readInt32LE(currOffset)\n      currOffset += 4\n      const binIndex: Record<string, Chunk[]> = {}\n      let stats // < provided by parsing a pseudo-bin, if present\n      for (let j = 0; j < binCount; j += 1) {\n        const bin = bytes.readUInt32LE(currOffset)\n        if (bin > this.maxBinNumber) {\n          // this is a fake bin that actually has stats information\n          // about the reference sequence in it\n          stats = this.parsePseudoBin(bytes, currOffset + 4)\n          currOffset += 4 + 8 + 4 + 16 + 16\n        } else {\n          const loffset = fromBytes(bytes, currOffset + 4)\n          firstDataLine = this._findFirstData(firstDataLine, loffset)\n          const chunkCount = bytes.readInt32LE(currOffset + 12)\n          currOffset += 16\n          const chunks = new Array(chunkCount)\n          for (let k = 0; k < chunkCount; k += 1) {\n            const u = fromBytes(bytes, currOffset)\n            const v = fromBytes(bytes, currOffset + 8)\n            currOffset += 16\n            // this._findFirstData(data, u)\n            chunks[k] = new Chunk(u, v, bin)\n          }\n          binIndex[bin] = chunks\n        }\n      }\n\n      return { binIndex, stats }\n    })\n\n    return {\n      ...aux,\n      csi: true,\n      refCount,\n      maxBlockSize: 1 << 16,\n      firstDataLine,\n      csiVersion,\n      indices,\n      depth: this.depth,\n      maxBinNumber: this.maxBinNumber,\n      maxRefLength,\n    }\n  }\n\n  parsePseudoBin(bytes: Buffer, offset: number) {\n    const lineCount = longToNumber(\n      Long.fromBytesLE(\n        bytes.slice(offset + 28, offset + 36) as unknown as number[],\n        true,\n      ),\n    )\n    return { lineCount }\n  }\n\n  async blocksForRange(\n    refName: string,\n    min: number,\n    max: number,\n    opts: Options = {},\n  ) {\n    if (min < 0) {\n      min = 0\n    }\n\n    const indexData = await this.parse(opts)\n    const refId = indexData.refNameToId[refName]\n    if (refId === undefined) {\n      return []\n    }\n    const ba = indexData.indices[refId]\n    if (!ba) {\n      return []\n    }\n\n    // const { linearIndex, binIndex } = indexes\n\n    const overlappingBins = this.reg2bins(min, max) // List of bin #s that overlap min, max\n    const chunks: Chunk[] = []\n\n    // Find chunks in overlapping bins.  Leaf bins (< 4681) are not pruned\n    for (const [start, end] of overlappingBins) {\n      for (let bin = start; bin <= end; bin++) {\n        if (ba.binIndex[bin]) {\n          for (const c of ba.binIndex[bin]) {\n            chunks.push(new Chunk(c.minv, c.maxv, bin))\n          }\n        }\n      }\n    }\n\n    return optimizeChunks(chunks, new VirtualOffset(0, 0))\n  }\n\n  /**\n   * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)\n   */\n  reg2bins(beg: number, end: number) {\n    beg -= 1 // < convert to 1-based closed\n    if (beg < 1) {\n      beg = 1\n    }\n    if (end > 2 ** 50) {\n      end = 2 ** 34\n    } // 17 GiB ought to be enough for anybody\n    end -= 1\n    let l = 0\n    let t = 0\n    let s = this.minShift + this.depth * 3\n    const bins = []\n    for (; l <= this.depth; s -= 3, t += lshift(1, l * 3), l += 1) {\n      const b = t + rshift(beg, s)\n      const e = t + rshift(end, s)\n      if (e - b + bins.length > this.maxBinNumber) {\n        throw new Error(\n          `query ${beg}-${end} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`,\n        )\n      }\n      bins.push([b, e] as const)\n    }\n    return bins\n  }\n}\n","import AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport LRU from 'quick-lru'\nimport { Buffer } from 'buffer'\nimport { GenericFilehandle, RemoteFile, LocalFile } from 'generic-filehandle'\nimport { unzip, unzipChunkSlice } from '@gmod/bgzf-filehandle'\nimport { checkAbortSignal } from './util'\nimport IndexFile, { Options, IndexData } from './indexFile'\n\nimport Chunk from './chunk'\nimport TBI from './tbi'\nimport CSI from './csi'\n\ntype GetLinesCallback = (line: string, fileOffset: number) => void\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\ninterface GetLinesOpts {\n  [key: string]: unknown\n  signal?: AbortSignal\n  lineCallback: GetLinesCallback\n}\n\ninterface ReadChunk {\n  buffer: Buffer\n  cpositions: number[]\n  dpositions: number[]\n}\n\nfunction timeout(time: number) {\n  return new Promise(resolve => setTimeout(resolve, time))\n}\nexport default class TabixIndexedFile {\n  private filehandle: GenericFilehandle\n  private index: IndexFile\n  private yieldTime: number\n  private renameRefSeq: (n: string) => string\n  private chunkCache: AbortablePromiseCache<Chunk, ReadChunk>\n\n  /**\n   * @param {object} args\n   *\n   * @param {string} [args.path]\n   *\n   * @param {filehandle} [args.filehandle]\n   *\n   * @param {string} [args.tbiPath]\n   *\n   * @param {filehandle} [args.tbiFilehandle]\n   *\n   * @param {string} [args.csiPath]\n   *\n   * @param {filehandle} [args.csiFilehandle]\n   *\n   * @param {number} [args.yieldTime] yield to main thread after N milliseconds\n   * if reading features is taking a long time to avoid hanging main thread\n   *\n   * @param {function} [args.renameRefSeqs] optional function with sig `string\n   * => string` to transform reference sequence names for the purpose of\n   * indexing and querying. note that the data that is returned is not altered,\n   * just the names of the reference sequences that are used for querying.\n   */\n  constructor({\n    path,\n    filehandle,\n    url,\n    tbiPath,\n    tbiUrl,\n    tbiFilehandle,\n    csiPath,\n    csiUrl,\n    csiFilehandle,\n    yieldTime = 500,\n    renameRefSeqs = n => n,\n    chunkCacheSize = 5 * 2 ** 20,\n  }: {\n    path?: string\n    filehandle?: GenericFilehandle\n    url?: string\n    tbiPath?: string\n    tbiUrl?: string\n    tbiFilehandle?: GenericFilehandle\n    csiPath?: string\n    csiUrl?: string\n    csiFilehandle?: GenericFilehandle\n    yieldTime?: number\n    renameRefSeqs?: (n: string) => string\n    chunkCacheSize?: number\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else if (url) {\n      this.filehandle = new RemoteFile(url)\n    } else {\n      throw new TypeError('must provide either filehandle or path')\n    }\n\n    if (tbiFilehandle) {\n      this.index = new TBI({\n        filehandle: tbiFilehandle,\n        renameRefSeqs,\n      })\n    } else if (csiFilehandle) {\n      this.index = new CSI({\n        filehandle: csiFilehandle,\n        renameRefSeqs,\n      })\n    } else if (tbiPath) {\n      this.index = new TBI({\n        filehandle: new LocalFile(tbiPath),\n        renameRefSeqs,\n      })\n    } else if (csiPath) {\n      this.index = new CSI({\n        filehandle: new LocalFile(csiPath),\n        renameRefSeqs,\n      })\n    } else if (path) {\n      this.index = new TBI({\n        filehandle: new LocalFile(`${path}.tbi`),\n        renameRefSeqs,\n      })\n    } else if (csiUrl) {\n      this.index = new CSI({\n        filehandle: new RemoteFile(csiUrl),\n      })\n    } else if (tbiUrl) {\n      this.index = new TBI({\n        filehandle: new RemoteFile(tbiUrl),\n      })\n    } else if (url) {\n      this.index = new TBI({\n        filehandle: new RemoteFile(`${url}.tbi`),\n      })\n    } else {\n      throw new TypeError(\n        'must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl',\n      )\n    }\n\n    this.renameRefSeq = renameRefSeqs\n    this.yieldTime = yieldTime\n    this.chunkCache = new AbortablePromiseCache<Chunk, ReadChunk>({\n      cache: new LRU({ maxSize: Math.floor(chunkCacheSize / (1 << 16)) }),\n      fill: (args: Chunk, signal?: AbortSignal) =>\n        this.readChunk(args, { signal }),\n    })\n  }\n\n  /**\n   * @param refName name of the reference sequence\n   *\n   * @param start start of the region (in 0-based half-open coordinates)\n   *\n   * @param end end of the region (in 0-based half-open coordinates)\n   *\n   * @param opts callback called for each line in the region. can also pass a\n   * object param containing obj.lineCallback, obj.signal, etc\n   *\n   * @returns promise that is resolved when the whole read is finished,\n   * rejected on error\n   */\n  async getLines(\n    refName: string,\n    s: number | undefined,\n    e: number | undefined,\n    opts: GetLinesOpts | GetLinesCallback,\n  ) {\n    let signal: AbortSignal | undefined\n    let options: Options = {}\n    let callback: (line: string, lineOffset: number) => void\n\n    if (typeof opts === 'function') {\n      callback = opts\n    } else {\n      options = opts\n      callback = opts.lineCallback\n      signal = opts.signal\n    }\n\n    const metadata = await this.index.getMetadata(options)\n    checkAbortSignal(signal)\n    const start = s ?? 0\n    const end = e ?? metadata.maxRefLength\n    if (!(start <= end)) {\n      throw new TypeError(\n        'invalid start and end coordinates. start must be less than or equal to end',\n      )\n    }\n    if (start === end) {\n      return\n    }\n\n    const chunks = await this.index.blocksForRange(refName, start, end, options)\n    checkAbortSignal(signal)\n\n    // now go through each chunk and parse and filter the lines out of it\n    let last = Date.now()\n    for (const c of chunks) {\n      let previousStartCoordinate: number | undefined\n      const { buffer, cpositions, dpositions } = await this.chunkCache.get(\n        c.toString(),\n        c,\n        signal,\n      )\n\n      checkAbortSignal(signal)\n      let blockStart = 0\n      let pos = 0\n      while (blockStart < buffer.length) {\n        const n = buffer.indexOf('\\n', blockStart)\n        if (n === -1) {\n          break\n        }\n        const b = buffer.slice(blockStart, n)\n        const line = decoder?.decode(b) ?? b.toString()\n\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        if (dpositions) {\n          while (blockStart + c.minv.dataPosition >= dpositions[pos++]!) {}\n          pos--\n        }\n\n        // filter the line for whether it is within the requested range\n        const { startCoordinate, overlaps } = this.checkLine(\n          metadata,\n          refName,\n          start,\n          end,\n          line,\n        )\n\n        // do a small check just to make sure that the lines are really sorted\n        // by start coordinate\n        if (\n          previousStartCoordinate !== undefined &&\n          startCoordinate !== undefined &&\n          previousStartCoordinate > startCoordinate\n        ) {\n          throw new Error(\n            `Lines not sorted by start coordinate (${previousStartCoordinate} > ${startCoordinate}), this file is not usable with Tabix.`,\n          )\n        }\n        previousStartCoordinate = startCoordinate\n\n        if (overlaps) {\n          callback(\n            line.trim(),\n            // cpositions[pos] refers to actual file offset of a bgzip block boundaries\n            //\n            // we multiply by (1 <<8) in order to make sure each block has a \"unique\"\n            // address space so that data in that block could never overlap\n            //\n            // then the blockStart-dpositions is an uncompressed file offset from\n            // that bgzip block boundary, and since the cpositions are multiplied by\n            // (1 << 8) these uncompressed offsets get a unique space\n            cpositions[pos]! * (1 << 8) +\n              (blockStart - dpositions[pos]!) +\n              c.minv.dataPosition +\n              1,\n          )\n        } else if (startCoordinate !== undefined && startCoordinate >= end) {\n          // the lines were overlapping the region, but now have stopped, so\n          // we must be at the end of the relevant data and we can stop\n          // processing data now\n          return\n        }\n\n        // yield if we have emitted beyond the yield limit\n        if (this.yieldTime && last - Date.now() > this.yieldTime) {\n          last = Date.now()\n          checkAbortSignal(signal)\n          await timeout(1)\n        }\n        blockStart = n + 1\n      }\n    }\n  }\n\n  async getMetadata(opts: Options = {}) {\n    return this.index.getMetadata(opts)\n  }\n\n  /**\n   * get a buffer containing the \"header\" region of the file, which are the\n   * bytes up to the first non-meta line\n   */\n  async getHeaderBuffer(opts: Options = {}) {\n    const { firstDataLine, metaChar, maxBlockSize } =\n      await this.getMetadata(opts)\n    checkAbortSignal(opts.signal)\n\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    const maxFetch = (firstDataLine?.blockPosition || 0) + maxBlockSize\n    // TODO: what if we don't have a firstDataLine, and the header\n    // actually takes up more than one block? this case is not covered here\n\n    const buf = await this._readRegion(0, maxFetch, opts)\n    const bytes = await unzip(buf)\n\n    // trim off lines after the last non-meta line\n    if (metaChar) {\n      // trim backward from the end\n      let lastNewline = -1\n      const newlineByte = '\\n'.charCodeAt(0)\n      const metaByte = metaChar.charCodeAt(0)\n      for (let i = 0; i < bytes.length; i += 1) {\n        if (i === lastNewline + 1 && bytes[i] !== metaByte) {\n          break\n        }\n        if (bytes[i] === newlineByte) {\n          lastNewline = i\n        }\n      }\n      return bytes.slice(0, lastNewline + 1)\n    }\n    return bytes\n  }\n\n  /**\n   * get a string containing the \"header\" region of the file, is the portion up\n   * to the first non-meta line\n   *\n   * @returns {Promise} for a string\n   */\n  async getHeader(opts: Options = {}) {\n    const bytes = await this.getHeaderBuffer(opts)\n    return bytes.toString('utf8')\n  }\n\n  /**\n   * get an array of reference sequence names, in the order in which they occur\n   * in the file. reference sequence renaming is not applied to these names.\n   */\n  async getReferenceSequenceNames(opts: Options = {}) {\n    const metadata = await this.getMetadata(opts)\n    return metadata.refIdToName\n  }\n\n  /**\n   * @param {object} metadata metadata object from the parsed index, containing\n   * columnNumbers, metaChar, and format\n   *\n   * @param {string} regionRefName\n   *\n   * @param {number} regionStart region start coordinate (0-based-half-open)\n   *\n   * @param {number} regionEnd region end coordinate (0-based-half-open)\n   *\n   * @param {array[string]} line\n   *\n   * @returns {object} like `{startCoordinate, overlaps}`. overlaps is boolean,\n   * true if line is a data line that overlaps the given region\n   */\n  checkLine(\n    metadata: IndexData,\n    regionRefName: string,\n    regionStart: number,\n    regionEnd: number,\n    line: string,\n  ) {\n    const { columnNumbers, metaChar, coordinateType, format } = metadata\n    // skip meta lines\n    if (metaChar && line.startsWith(metaChar)) {\n      return { overlaps: false }\n    }\n\n    // check ref/start/end using column metadata from index\n    let { ref, start, end } = columnNumbers\n    if (!ref) {\n      ref = 0\n    }\n    if (!start) {\n      start = 0\n    }\n    if (!end) {\n      end = 0\n    }\n    if (format === 'VCF') {\n      end = 8\n    }\n    const maxColumn = Math.max(ref, start, end)\n\n    // this code is kind of complex, but it is fairly fast. basically, we want\n    // to avoid doing a split, because if the lines are really long that could\n    // lead to us allocating a bunch of extra memory, which is slow\n\n    let currentColumnNumber = 1 // cols are numbered starting at 1 in the index metadata\n    let currentColumnStart = 0\n    let refSeq = ''\n    let startCoordinate = -Infinity\n    for (let i = 0; i < line.length + 1; i += 1) {\n      if (line[i] === '\\t' || i === line.length) {\n        if (currentColumnNumber === ref) {\n          if (\n            this.renameRefSeq(line.slice(currentColumnStart, i)) !==\n            regionRefName\n          ) {\n            return { overlaps: false }\n          }\n        } else if (currentColumnNumber === start) {\n          startCoordinate = parseInt(line.slice(currentColumnStart, i), 10)\n          // we convert to 0-based-half-open\n          if (coordinateType === '1-based-closed') {\n            startCoordinate -= 1\n          }\n          if (startCoordinate >= regionEnd) {\n            return { startCoordinate, overlaps: false }\n          }\n          if (end === 0 || end === start) {\n            // if we have no end, we assume the feature is 1 bp long\n            if (startCoordinate + 1 <= regionStart) {\n              return { startCoordinate, overlaps: false }\n            }\n          }\n        } else if (format === 'VCF' && currentColumnNumber === 4) {\n          refSeq = line.slice(currentColumnStart, i)\n        } else if (currentColumnNumber === end) {\n          // this will never match if there is no end column\n          const endCoordinate =\n            format === 'VCF'\n              ? this._getVcfEnd(\n                  startCoordinate,\n                  refSeq,\n                  line.slice(currentColumnStart, i),\n                )\n              : parseInt(line.slice(currentColumnStart, i), 10)\n          if (endCoordinate <= regionStart) {\n            return { overlaps: false }\n          }\n        }\n        currentColumnStart = i + 1\n        currentColumnNumber += 1\n        if (currentColumnNumber > maxColumn) {\n          break\n        }\n      }\n    }\n    return { startCoordinate, overlaps: true }\n  }\n\n  _getVcfEnd(startCoordinate: number, refSeq: string, info: any) {\n    let endCoordinate = startCoordinate + refSeq.length\n    // ignore TRA features as they specify CHR2 and END as being on a different\n    // chromosome\n    //\n    // if CHR2 is on the same chromosome, still ignore it because there should\n    // be another pairwise feature at the end of this one\n    const isTRA = info.includes('SVTYPE=TRA')\n    if (info[0] !== '.' && !isTRA) {\n      let prevChar = ';'\n      for (let j = 0; j < info.length; j += 1) {\n        if (prevChar === ';' && info.slice(j, j + 4) === 'END=') {\n          let valueEnd = info.indexOf(';', j)\n          if (valueEnd === -1) {\n            valueEnd = info.length\n          }\n          endCoordinate = parseInt(info.slice(j + 4, valueEnd), 10)\n          break\n        }\n        prevChar = info[j]\n      }\n    } else if (isTRA) {\n      return startCoordinate + 1\n    }\n    return endCoordinate\n  }\n\n  /**\n   * return the approximate number of data lines in the given reference\n   * sequence\n   *\n   * @param refSeq reference sequence name\n   *\n   * @returns number of data lines present on that reference sequence\n   */\n  async lineCount(refName: string, opts: Options = {}) {\n    return this.index.lineCount(refName, opts)\n  }\n\n  async _readRegion(pos: number, size: number, opts: Options = {}) {\n    const b = Buffer.alloc(size)\n    const { bytesRead, buffer } = await this.filehandle.read(\n      b,\n      0,\n      size,\n      pos,\n      opts,\n    )\n\n    return buffer.slice(0, bytesRead)\n  }\n\n  /**\n   * read and uncompress the data in a chunk (composed of one or more\n   * contiguous bgzip blocks) of the file\n   */\n  async readChunk(c: Chunk, opts: Options = {}) {\n    // fetch the uncompressed data, uncompress carefully a block at a time, and\n    // stop when done\n\n    const data = await this._readRegion(\n      c.minv.blockPosition,\n      c.fetchedSize(),\n      opts,\n    )\n    return unzipChunkSlice(data, c)\n  }\n}\n"],"names":["NullSignal","AggregateAbortController","signals","Set","abortController","AbortController","addSignal","signal","this","aborted","Error","add","handleAborted","addEventListener","delete","size","abort","AggregateStatusReporter","callbacks","addCallback","callback","currentMessage","message","elt","AbortablePromiseCache","constructor","fill","cache","TypeError","get","set","fillCallback","isAbortException","exception","name","code","evict","key","entry","data","statusCallback","aborter","statusReporter","newEntry","promise","settled","then","catch","error","console","checkSinglePromise","checkForSingleAbort","Object","assign","result","has","AbortSignal","cacheEntry","cachedEntry","clear","keyIter","keys","deleteCount","next","done","value","async","unzip","inputData","strm","pos","i","chunks","inflator","totalSize","remainingInput","subarray","Inflate","push","Z_SYNC_FLUSH","err","msg","next_in","length","avail_in","Uint8Array","offset","from","e","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","buffer","len","origCpos","GziIndex","filehandle","path","_readLongWithOverflow","buf","unsigned","long","slice","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","index","_readIndex","allocUnsafe","read","numEntries","entries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","getUncompressedFileSize","blocks","undefined","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy","longToNumber","AbortError","checkAbortSignal","DOMException","optimizeChunks","lowest","mergedChunks","lastChunk","sort","c0","c1","dif","forEach","chunk1","chunk2","compareTo","VirtualOffset","toString","b","fromBytes","bytes","bigendian","Chunk","bin","fetchedSize","_fetchedSize","toUniqueString","IndexFile","renameRefSeqs","n","renameRefSeq","getMetadata","opts","indices","_indices","rest","parse","_findFirstData","currentFdl","virtualOffset","parseP","_parse","hasRefSeq","seqId","binIndex","TabixIndex","lineCount","refName","indexData","refId","refNameToId","stats","readFile","refCount","readInt32LE","formatFlags","coordinateType","format","columnNumbers","ref","start","end","metaValue","metaChar","String","fromCharCode","skipLines","nameSectionLength","refIdToName","_parseNameBytes","firstDataLine","currOffset","map","binCount","j","maxBinNumber","chunkCount","parsePseudoBin","k","u","v","linearCount","linearIndex","maxRefLength","maxBlockSize","namesBytes","currRefId","currNameStart","blocksForRange","max","ba","warn","overlappingBins","beg","c","nintv","minLin","maxLin","vp","rshift","num","bits","CSI","args","super","depth","minShift","indexCov","parseAuxData","csiVersion","auxLength","aux","loffset","csi","reg2bins","l","t","s","bins","decoder","TextDecoder","timeout","time","Promise","resolve","setTimeout","TabixIndexedFile","url","tbiPath","tbiUrl","tbiFilehandle","csiPath","csiUrl","csiFilehandle","yieldTime","chunkCacheSize","chunkCache","A","maxSize","readChunk","getLines","options","lineCallback","metadata","last","Date","now","previousStartCoordinate","blockStart","indexOf","line","decode","startCoordinate","overlaps","checkLine","trim","getHeaderBuffer","maxFetch","_readRegion","lastNewline","newlineByte","charCodeAt","metaByte","getHeader","getReferenceSequenceNames","regionRefName","regionStart","regionEnd","startsWith","maxColumn","currentColumnNumber","currentColumnStart","refSeq","parseInt","_getVcfEnd","info","endCoordinate","isTRA","includes","prevChar","valueEnd","alloc"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8150.09c54606.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8150],{98150:(a,s,e)=>{e.r(s),e.d(s,{ModalManager:()=>l.P,default:()=>b.A,getModalUtilityClass:()=>o.M,modalClasses:()=>o.A});var l=e(28276),b=e(31694),o=e(48331)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8165.d07843b4.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8165],{28165:(e,o,t)=>{t.r(o),t.d(o,{default:()=>w,getTabUtilityClass:()=>h,tabClasses:()=>m});var i=t(7552),l=t(93878),a=t(70799),r=t(48054),n=t(15622),s=t(51148),c=t(60129),p=t(4785),d=t(33761),b=t(85693);function h(e){return(0,b.Ay)("MuiTab",e)}const m=(0,d.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]);var u=t(69500);const x=(0,s.Ay)(r.A,{name:"MuiTab",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:t}=e;return[o.root,t.label&&t.icon&&o.labelIcon,o[`textColor${(0,n.A)(t.textColor)}`],t.fullWidth&&o.fullWidth,t.wrapped&&o.wrapped,{[`& .${m.iconWrapper}`]:o.iconWrapper},{[`& .${m.icon}`]:o.icon}]}})((0,c.A)((({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:e})=>e.label&&("top"===e.iconPosition||"bottom"===e.iconPosition),style:{flexDirection:"column"}},{props:({ownerState:e})=>e.label&&"top"!==e.iconPosition&&"bottom"!==e.iconPosition,style:{flexDirection:"row"}},{props:({ownerState:e})=>e.icon&&e.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:e,iconPosition:o})=>e.icon&&e.label&&"top"===o,style:{[`& > .${m.icon}`]:{marginBottom:6}}},{props:({ownerState:e,iconPosition:o})=>e.icon&&e.label&&"bottom"===o,style:{[`& > .${m.icon}`]:{marginTop:6}}},{props:({ownerState:e,iconPosition:o})=>e.icon&&e.label&&"start"===o,style:{[`& > .${m.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:e,iconPosition:o})=>e.icon&&e.label&&"end"===o,style:{[`& > .${m.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${m.selected}`]:{opacity:1},[`&.${m.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${m.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${m.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${m.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${m.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:e})=>e.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:e})=>e.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]})))),w=i.forwardRef((function(e,o){const t=(0,p.b)({props:e,name:"MuiTab"}),{className:r,disabled:s=!1,disableFocusRipple:c=!1,fullWidth:d,icon:b,iconPosition:m="top",indicator:w,label:y,onChange:f,onClick:g,onFocus:C,selected:S,selectionFollowsFocus:v,textColor:W="inherit",value:$,wrapped:A=!1,...P}=t,T={...t,disabled:s,disableFocusRipple:c,selected:S,icon:!!b,iconPosition:m,label:!!y,fullWidth:d,textColor:W,wrapped:A},k=(e=>{const{classes:o,textColor:t,fullWidth:i,wrapped:l,icon:r,label:s,selected:c,disabled:p}=e,d={root:["root",r&&s&&"labelIcon",`textColor${(0,n.A)(t)}`,i&&"fullWidth",l&&"wrapped",c&&"selected",p&&"disabled"],icon:["iconWrapper","icon"]};return(0,a.A)(d,h,o)})(T),F=b&&y&&i.isValidElement(b)?i.cloneElement(b,{className:(0,l.A)(k.icon,b.props.className)}):b;return(0,u.jsxs)(x,{focusRipple:!c,className:(0,l.A)(k.root,r),ref:o,role:"tab","aria-selected":S,disabled:s,onClick:e=>{!S&&f&&f(e,$),g&&g(e)},onFocus:e=>{v&&!S&&f&&f(e,$),C&&C(e)},ownerState:T,tabIndex:S?0:-1,...P,children:["top"===m||"start"===m?(0,u.jsxs)(i.Fragment,{children:[F,y]}):(0,u.jsxs)(i.Fragment,{children:[y,F]}),w]})}))}}]);
+//# sourceMappingURL=8165.d07843b4.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8165.d07843b4.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8165.d07843b4.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Tab/tabClasses.js","../../../node_modules/@mui/material/Tab/Tab.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabUtilityClass(slot) {\n  return generateUtilityClass('MuiTab', slot);\n}\nconst tabClasses = generateUtilityClasses('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper', 'icon']);\nexport default tabClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport unsupportedProp from \"../utils/unsupportedProp.js\";\nimport tabClasses, { getTabUtilityClass } from \"./tabClasses.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    textColor,\n    fullWidth,\n    wrapped,\n    icon,\n    label,\n    selected,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', icon && label && 'labelIcon', `textColor${capitalize(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n    icon: ['iconWrapper', 'icon']\n  };\n  return composeClasses(slots, getTabUtilityClass, classes);\n};\nconst TabRoot = styled(ButtonBase, {\n  name: 'MuiTab',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${capitalize(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped, {\n      [`& .${tabClasses.iconWrapper}`]: styles.iconWrapper\n    }, {\n      [`& .${tabClasses.icon}`]: styles.icon\n    }];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  maxWidth: 360,\n  minWidth: 90,\n  position: 'relative',\n  minHeight: 48,\n  flexShrink: 0,\n  padding: '12px 16px',\n  overflow: 'hidden',\n  whiteSpace: 'normal',\n  textAlign: 'center',\n  lineHeight: 1.25,\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.label && (ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom'),\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.label && ownerState.iconPosition !== 'top' && ownerState.iconPosition !== 'bottom',\n    style: {\n      flexDirection: 'row'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.icon && ownerState.label,\n    style: {\n      minHeight: 72,\n      paddingTop: 9,\n      paddingBottom: 9\n    }\n  }, {\n    props: ({\n      ownerState,\n      iconPosition\n    }) => ownerState.icon && ownerState.label && iconPosition === 'top',\n    style: {\n      [`& > .${tabClasses.icon}`]: {\n        marginBottom: 6\n      }\n    }\n  }, {\n    props: ({\n      ownerState,\n      iconPosition\n    }) => ownerState.icon && ownerState.label && iconPosition === 'bottom',\n    style: {\n      [`& > .${tabClasses.icon}`]: {\n        marginTop: 6\n      }\n    }\n  }, {\n    props: ({\n      ownerState,\n      iconPosition\n    }) => ownerState.icon && ownerState.label && iconPosition === 'start',\n    style: {\n      [`& > .${tabClasses.icon}`]: {\n        marginRight: theme.spacing(1)\n      }\n    }\n  }, {\n    props: ({\n      ownerState,\n      iconPosition\n    }) => ownerState.icon && ownerState.label && iconPosition === 'end',\n    style: {\n      [`& > .${tabClasses.icon}`]: {\n        marginLeft: theme.spacing(1)\n      }\n    }\n  }, {\n    props: {\n      textColor: 'inherit'\n    },\n    style: {\n      color: 'inherit',\n      opacity: 0.6,\n      // same opacity as theme.palette.text.secondary\n      [`&.${tabClasses.selected}`]: {\n        opacity: 1\n      },\n      [`&.${tabClasses.disabled}`]: {\n        opacity: (theme.vars || theme).palette.action.disabledOpacity\n      }\n    }\n  }, {\n    props: {\n      textColor: 'primary'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      [`&.${tabClasses.selected}`]: {\n        color: (theme.vars || theme).palette.primary.main\n      },\n      [`&.${tabClasses.disabled}`]: {\n        color: (theme.vars || theme).palette.text.disabled\n      }\n    }\n  }, {\n    props: {\n      textColor: 'secondary'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      [`&.${tabClasses.selected}`]: {\n        color: (theme.vars || theme).palette.secondary.main\n      },\n      [`&.${tabClasses.disabled}`]: {\n        color: (theme.vars || theme).palette.text.disabled\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.fullWidth,\n    style: {\n      flexShrink: 1,\n      flexGrow: 1,\n      flexBasis: 0,\n      maxWidth: 'none'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.wrapped,\n    style: {\n      fontSize: theme.typography.pxToRem(12)\n    }\n  }]\n})));\nconst Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTab'\n  });\n  const {\n    className,\n    disabled = false,\n    disableFocusRipple = false,\n    // eslint-disable-next-line react/prop-types\n    fullWidth,\n    icon: iconProp,\n    iconPosition = 'top',\n    // eslint-disable-next-line react/prop-types\n    indicator,\n    label,\n    onChange,\n    onClick,\n    onFocus,\n    // eslint-disable-next-line react/prop-types\n    selected,\n    // eslint-disable-next-line react/prop-types\n    selectionFollowsFocus,\n    // eslint-disable-next-line react/prop-types\n    textColor = 'inherit',\n    value,\n    wrapped = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableFocusRipple,\n    selected,\n    icon: !!iconProp,\n    iconPosition,\n    label: !!label,\n    fullWidth,\n    textColor,\n    wrapped\n  };\n  const classes = useUtilityClasses(ownerState);\n  const icon = iconProp && label && /*#__PURE__*/React.isValidElement(iconProp) ? /*#__PURE__*/React.cloneElement(iconProp, {\n    className: clsx(classes.icon, iconProp.props.className)\n  }) : iconProp;\n  const handleClick = event => {\n    if (!selected && onChange) {\n      onChange(event, value);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const handleFocus = event => {\n    if (selectionFollowsFocus && !selected && onChange) {\n      onChange(event, value);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(TabRoot, {\n    focusRipple: !disableFocusRipple,\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: \"tab\",\n    \"aria-selected\": selected,\n    disabled: disabled,\n    onClick: handleClick,\n    onFocus: handleFocus,\n    ownerState: ownerState,\n    tabIndex: selected ? 0 : -1,\n    ...other,\n    children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [icon, label]\n    }) : /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [label, icon]\n    }), indicator]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display.\n   */\n  icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n  /**\n   * The position of the icon relative to the label.\n   * @default 'top'\n   */\n  iconPosition: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * The label element.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * You can provide your own value. Otherwise, we fallback to the child position index.\n   */\n  value: PropTypes.any,\n  /**\n   * Tab labels appear in a single row.\n   * They can use a second line if needed.\n   * @default false\n   */\n  wrapped: PropTypes.bool\n} : void 0;\nexport default Tab;"],"names":["getTabUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TabRoot","styled","ButtonBase","name","overridesResolver","props","styles","ownerState","root","label","icon","labelIcon","capitalize","textColor","fullWidth","wrapped","iconWrapper","memoTheme","theme","typography","button","maxWidth","minWidth","position","minHeight","flexShrink","padding","overflow","whiteSpace","textAlign","lineHeight","variants","iconPosition","style","flexDirection","paddingTop","paddingBottom","marginBottom","marginTop","marginRight","spacing","marginLeft","color","opacity","selected","disabled","vars","palette","action","disabledOpacity","text","secondary","primary","main","flexGrow","flexBasis","fontSize","pxToRem","inProps","ref","className","disableFocusRipple","iconProp","indicator","onChange","onClick","onFocus","selectionFollowsFocus","value","other","classes","slots","composeClasses","useUtilityClasses","clsx","focusRipple","role","event","tabIndex","children"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8187.383aefbf.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8187],{85283:(e,a,t)=>{t.d(a,{A:()=>k});var n=t(7552),r=t(93878),o=t(70799),s=t(72639),i=t(51148),l=t(60129),c=t(4785),d=t(943),b=t(27799),u=t(69500);const p=(0,i.Ay)(d.A,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(e,a)=>a.root})((0,l.A)((({theme:e})=>{const a="light"===e.palette.mode?.8:.98,t=(0,s.tL)(e.palette.background.default,a);return{...e.typography.body2,color:e.vars?e.vars.palette.SnackbarContent.color:e.palette.getContrastText(t),backgroundColor:e.vars?e.vars.palette.SnackbarContent.bg:t,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,flexGrow:1,[e.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}}}))),g=(0,i.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(e,a)=>a.message})({padding:"8px 0"}),m=(0,i.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(e,a)=>a.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),k=n.forwardRef((function(e,a){const t=(0,c.b)({props:e,name:"MuiSnackbarContent"}),{action:n,className:s,message:i,role:l="alert",...d}=t,k=t,v=(e=>{const{classes:a}=e;return(0,o.A)({root:["root"],action:["action"],message:["message"]},b.d,a)})(k);return(0,u.jsxs)(p,{role:l,square:!0,elevation:6,className:(0,r.A)(v.root,s),ownerState:k,ref:a,...d,children:[(0,u.jsx)(g,{className:v.message,ownerState:k,children:i}),n?(0,u.jsx)(m,{className:v.action,ownerState:k,children:n}):null]})}))},58187:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n.A,getSnackbarContentUtilityClass:()=>r.d,snackbarContentClasses:()=>r.A});var n=t(85283),r=t(27799)},27799:(e,a,t)=>{t.d(a,{A:()=>s,d:()=>o});var n=t(33761),r=t(85693);function o(e){return(0,r.Ay)("MuiSnackbarContent",e)}const s=(0,n.A)("MuiSnackbarContent",["root","message","action"])}}]);
+//# sourceMappingURL=8187.383aefbf.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8187.383aefbf.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8187.383aefbf.chunk.js","mappings":"wPAaA,MAWMA,GAAsB,QAAO,IAAO,CACxCC,KAAM,qBACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHnB,EAIzB,QAAU,EACXC,YAEA,MAAMC,EAAkC,UAAvBD,EAAME,QAAQC,KAAmB,GAAM,IAClDC,GAAkB,QAAUJ,EAAME,QAAQG,WAAWC,QAASL,GACpE,MAAO,IACFD,EAAMO,WAAWC,MACpBC,MAAOT,EAAMU,KAAOV,EAAMU,KAAKR,QAAQS,gBAAgBF,MAAQT,EAAME,QAAQU,gBAAgBR,GAC7FA,gBAAiBJ,EAAMU,KAAOV,EAAMU,KAAKR,QAAQS,gBAAgBE,GAAKT,EACtEU,QAAS,OACTC,WAAY,SACZC,SAAU,OACVC,QAAS,WACTC,cAAelB,EAAMU,MAAQV,GAAOmB,MAAMD,aAC1CE,SAAU,EACV,CAACpB,EAAMqB,YAAYC,GAAG,OAAQ,CAC5BF,SAAU,UACVG,SAAU,KAEb,KAEGC,GAAyB,QAAO,MAAO,CAC3C9B,KAAM,qBACNC,KAAM,UACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO2B,SAHhB,CAI5B,CACDR,QAAS,UAELS,GAAwB,QAAO,MAAO,CAC1ChC,KAAM,qBACNC,KAAM,SACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAO6B,QAHjB,CAI3B,CACDb,QAAS,OACTC,WAAY,SACZa,WAAY,OACZC,YAAa,GACbC,aAAc,IAkEhB,EAhEqC,cAAiB,SAAyBC,EAASC,GACtF,MAAMnC,GAAQ,OAAgB,CAC5BA,MAAOkC,EACPrC,KAAM,wBAEF,OACJiC,EAAM,UACNM,EAAS,QACTR,EAAO,KACPS,EAAO,WACJC,GACDtC,EACEuC,EAAavC,EACbwC,EAnEkBD,KACxB,MAAM,QACJC,GACED,EAMJ,OAAO,OALO,CACZrC,KAAM,CAAC,QACP4B,OAAQ,CAAC,UACTF,QAAS,CAAC,YAEiB,IAAgCY,EAAQ,EA0DrDC,CAAkBF,GAClC,OAAoB,UAAM3C,EAAqB,CAC7CyC,KAAMA,EACNK,QAAQ,EACRC,UAAW,EACXP,WAAW,OAAKI,EAAQtC,KAAMkC,GAC9BG,WAAYA,EACZJ,IAAKA,KACFG,EACHM,SAAU,EAAc,SAAKjB,EAAwB,CACnDS,UAAWI,EAAQZ,QACnBW,WAAYA,EACZK,SAAUhB,IACRE,GAAsB,SAAKD,EAAuB,CACpDO,UAAWI,EAAQV,OACnBS,WAAYA,EACZK,SAAUd,IACP,OAET,G,sNCjGO,SAASe,EAA+B/C,GAC7C,OAAO,QAAqB,qBAAsBA,EACpD,CACA,MACA,GAD+B,OAAuB,qBAAsB,CAAC,OAAQ,UAAW,U","sources":["../../../node_modules/@mui/material/SnackbarContent/SnackbarContent.js","../../../node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { emphasize } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getSnackbarContentUtilityClass } from \"./snackbarContentClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    action: ['action'],\n    message: ['message']\n  };\n  return composeClasses(slots, getSnackbarContentUtilityClass, classes);\n};\nconst SnackbarContentRoot = styled(Paper, {\n  name: 'MuiSnackbarContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const emphasis = theme.palette.mode === 'light' ? 0.8 : 0.98;\n  const backgroundColor = emphasize(theme.palette.background.default, emphasis);\n  return {\n    ...theme.typography.body2,\n    color: theme.vars ? theme.vars.palette.SnackbarContent.color : theme.palette.getContrastText(backgroundColor),\n    backgroundColor: theme.vars ? theme.vars.palette.SnackbarContent.bg : backgroundColor,\n    display: 'flex',\n    alignItems: 'center',\n    flexWrap: 'wrap',\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    flexGrow: 1,\n    [theme.breakpoints.up('sm')]: {\n      flexGrow: 'initial',\n      minWidth: 288\n    }\n  };\n}));\nconst SnackbarContentMessage = styled('div', {\n  name: 'MuiSnackbarContent',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0'\n});\nconst SnackbarContentAction = styled('div', {\n  name: 'MuiSnackbarContent',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'center',\n  marginLeft: 'auto',\n  paddingLeft: 16,\n  marginRight: -8\n});\nconst SnackbarContent = /*#__PURE__*/React.forwardRef(function SnackbarContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSnackbarContent'\n  });\n  const {\n    action,\n    className,\n    message,\n    role = 'alert',\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SnackbarContentRoot, {\n    role: role,\n    square: true,\n    elevation: 6,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    children: [/*#__PURE__*/_jsx(SnackbarContentMessage, {\n      className: classes.message,\n      ownerState: ownerState,\n      children: message\n    }), action ? /*#__PURE__*/_jsx(SnackbarContentAction, {\n      className: classes.action,\n      ownerState: ownerState,\n      children: action\n    }) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the snackbar.\n   */\n  action: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The message to display.\n   */\n  message: PropTypes.node,\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default SnackbarContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSnackbarContentUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbarContent', slot);\n}\nconst snackbarContentClasses = generateUtilityClasses('MuiSnackbarContent', ['root', 'message', 'action']);\nexport default snackbarContentClasses;"],"names":["SnackbarContentRoot","name","slot","overridesResolver","props","styles","root","theme","emphasis","palette","mode","backgroundColor","background","default","typography","body2","color","vars","SnackbarContent","getContrastText","bg","display","alignItems","flexWrap","padding","borderRadius","shape","flexGrow","breakpoints","up","minWidth","SnackbarContentMessage","message","SnackbarContentAction","action","marginLeft","paddingLeft","marginRight","inProps","ref","className","role","other","ownerState","classes","useUtilityClasses","square","elevation","children","getSnackbarContentUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8216.16f39607.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8216],{68216:(e,s,a)=>{a.r(s),a.d(s,{default:()=>b.A,getListSubheaderUtilityClass:()=>l.g,listSubheaderClasses:()=>l.A});var b=a(55851),l=a(15423)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8301.877076ce.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8301],{682:(e,t,a)=>{a.r(t),a.d(t,{default:()=>L});var n=a(7552),o=a(48171),r=a(22679),s=a(56089),l=a(33371),i=a(33248),c=a(75653),m=a(67314),d=a(943),u=a(5401),p=a(75785),h=a(68446),b=a(99546),y=a(49823),A=a(36715);function f({radioOption:e,assembly1:t,assembly2:a,fileLocation:n,indexFileLocation:o,bed1Location:r,bed2Location:s}){if(".paf"===e)return{type:"PAFAdapter",pafLocation:n,queryAssembly:t,targetAssembly:a};if(".out"===e)return{type:"MashMapAdapter",outLocation:n,queryAssembly:t,targetAssembly:a};if(".delta"===e)return{type:"DeltaAdapter",deltaLocation:n,queryAssembly:t,targetAssembly:a};if(".chain"===e)return{type:"ChainAdapter",chainLocation:n,queryAssembly:t,targetAssembly:a};if(".anchors"===e)return{type:"MCScanAnchorsAdapter",mcscanAnchorsLocation:n,bed1Location:r,bed2Location:s,assemblyNames:[t,a]};if(".anchors.simple"===e)return{type:"MCScanSimpleAnchorsAdapter",mcscanSimpleAnchorsLocation:n,bed1Location:r,bed2Location:s,assemblyNames:[t,a]};if(".pif.gz"===e)return{type:"PairwiseIndexedPAFAdapter",pifGzLocation:n,index:{location:o},assemblyNames:[t,a]};throw new Error(`Unknown to detect type ${e} from filename (select radio button to clarify)`)}const v=(0,h.observer)((function({assembly1:e,assembly2:t,setSessionTrackData:a}){const[o,r]=(0,n.useState)(),[c,u]=(0,n.useState)(),[p,h]=(0,n.useState)(),[b,v]=(0,n.useState)(),[g,E]=(0,n.useState)(""),[S,k]=(0,n.useState)(),x=(w=p)?w.uri||w.localPath||w.name:void 0;var w;const C=g||(x?function(e){const t=e.split(".").pop();return t?`.${t}`:""}(function(e){return e.endsWith(".gz")?e.slice(0,-3):e}(x)):"");return(0,n.useEffect)((()=>{try{if(p){const n=x?x.split("#")[0].split("?")[0].split("/").pop():"MyTrack",r=`${n}-${Date.now()}`;k(void 0),a({trackId:r,name:n,assemblyNames:[t,e],type:"SyntenyTrack",adapter:f({radioOption:C,assembly1:e,assembly2:t,fileLocation:p,indexFileLocation:b,bed1Location:c,bed2Location:o})})}}catch(e){console.error(e),k(e)}}),[x,e,t,c,o,p,b,C,a]),n.createElement(d.A,{style:{padding:12}},S?n.createElement(y.ErrorMessage,{error:S}):null,n.createElement(A.A,{style:{textAlign:"center"}},"Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view. These file types can also be gzipped. The first assembly should be the query sequence (e.g. left column of the PAF) and the second assembly should be the target sequence (e.g. right column of the PAF)"),n.createElement(s.A,{value:C,onChange:e=>{E(e.target.value)}},n.createElement(m.Ay,{container:!0,justifyContent:"center"},n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".paf",control:n.createElement(i.A,null),label:".paf"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".out",control:n.createElement(i.A,null),label:".out"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".delta",control:n.createElement(i.A,null),label:".delta"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".chain",control:n.createElement(i.A,null),label:".chain"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".anchors",control:n.createElement(i.A,null),label:".anchors"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".anchors.simple",control:n.createElement(i.A,null),label:".anchors.simple"})),n.createElement(m.Ay,{item:!0},n.createElement(l.A,{value:".pif.gz",control:n.createElement(i.A,null),label:".pif.gz"})))),n.createElement(m.Ay,{container:!0,justifyContent:"center"},n.createElement(m.Ay,{item:!0},".anchors"===g||".anchors.simple"===g?n.createElement("div",null,n.createElement("div",{style:{margin:20}},"Open the ",g," and .bed files for both genome assemblies from the MCScan (Python version) pipeline"," ",n.createElement("a",{href:"https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)"},"(more info)")),n.createElement("div",{style:{display:"flex"}},n.createElement("div",null,n.createElement(y.FileSelector,{name:".anchors file",description:"",location:p,setLocation:e=>{h(e)}})),n.createElement("div",null,n.createElement(y.FileSelector,{name:"genome 1 .bed (left column of anchors file)",description:"",location:c,setLocation:e=>{u(e)}})),n.createElement("div",null,n.createElement(y.FileSelector,{name:"genome 2 .bed (right column of anchors file)",description:"",location:o,setLocation:e=>{r(e)}})))):".pif.gz"===g?n.createElement("div",{style:{display:"flex"}},n.createElement("div",null,n.createElement(y.FileSelector,{name:`${g} location`,description:"",location:p,setLocation:e=>{h(e)}})),n.createElement("div",null,n.createElement(y.FileSelector,{name:`${g} index location`,description:"",location:b,setLocation:e=>{v(e)}}))):n.createElement(y.FileSelector,{name:g?`${g} location`:"",description:"",location:p,setLocation:e=>{h(e)}}))))}));var g=a(98360),E=a(29629),S=a(91468),k=a(68584);const x=(0,h.observer)((({model:e,assembly1:t,assembly2:a,setShowTrackId:o})=>{const r=(0,b.getSession)(e),{tracks:s=[],sessionTracks:l=[]}=r,i=[...s,...l].filter((e=>function(e,t,a){const n=(0,k.readConfObject)(e,"assemblyNames");return n.includes(t)&&n.includes(a)&&e.type.includes("Synteny")}(e,a,t))),c=i[0]?.trackId||"",[m,u]=(0,n.useState)(c);return(0,n.useEffect)((()=>{u(c)}),[c]),(0,n.useEffect)((()=>{o(m)}),[m,o]),n.createElement(d.A,{style:{padding:12}},n.createElement(A.A,{paragraph:!0},'Select a track from the select box below, the track will be shown when you hit "Launch".'),i.length?n.createElement(g.A,{value:m,onChange:e=>{u(e.target.value)}},i.map((e=>n.createElement(E.A,{key:e.trackId,value:e.trackId},(0,S.getTrackName)(e,r))))):n.createElement(y.ErrorMessage,{error:`No synteny tracks found for ${t},${a}`}))})),w=(0,p.n9)()((e=>({importFormContainer:{padding:e.spacing(4),margin:"0 auto"},assemblySelector:{width:"75%",margin:"0 auto"}})));function C({setSessionTrackData:e,setShowTrackId:t,sessionTrackData:a,assembly1:c,assembly2:m,model:d}){const[u,p]=(0,n.useState)("tracklist");return(0,n.useEffect)((()=>{"none"===u&&(e(void 0),t(void 0))}),[u,e,t]),n.createElement(n.Fragment,null,n.createElement(o.A,null,n.createElement(r.A,{id:"group-label"},"(Optional) Select or add a synteny track"),n.createElement(s.A,{row:!0,value:u,onChange:e=>{p(e.target.value)},"aria-labelledby":"group-label"},n.createElement(l.A,{value:"none",control:n.createElement(i.A,null),label:"None"}),n.createElement(l.A,{value:"tracklist",control:n.createElement(i.A,null),label:"Existing track"}),n.createElement(l.A,{value:"custom",control:n.createElement(i.A,null),label:"New track"}))),"custom"===u?n.createElement(v,{setSessionTrackData:e,sessionTrackData:a,assembly2:m,assembly1:c}):null,"tracklist"===u?n.createElement(x,{model:d,assembly1:c,assembly2:m,setShowTrackId:t}):null)}const L=(0,h.observer)((function({model:e}){const{classes:t}=w(),a=(0,b.getSession)(e),{assemblyNames:r}=a,[s,l]=(0,n.useState)(r[0]||""),[i,p]=(0,n.useState)(r[0]||""),[h,A]=(0,n.useState)(),[f,v]=(0,n.useState)(),[g,E]=(0,n.useState)(),S=h;return n.createElement(c.A,{className:t.importFormContainer},S?n.createElement(y.ErrorMessage,{error:S}):null,n.createElement(m.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center",className:t.assemblySelector},n.createElement(m.Ay,{item:!0},n.createElement(d.A,{style:{padding:12}},n.createElement("p",{style:{textAlign:"center"}},"Select assemblies for linear synteny view"),n.createElement(m.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},n.createElement(m.Ay,{item:!0},n.createElement(y.AssemblySelector,{selected:i,onChange:e=>{p(e)},session:a})),n.createElement(m.Ay,{item:!0},n.createElement(y.AssemblySelector,{selected:s,onChange:e=>{l(e)},session:a})),n.createElement(m.Ay,{item:!0},n.createElement(o.A,null,n.createElement(u.A,{onClick:async function(){try{if(!(0,b.isSessionWithAddTracks)(a))return;A(void 0);const{assemblyManager:t}=a,n=[i,s];e.setViews(await Promise.all(n.map((async e=>{const a=await t.waitForAssembly(e);if(!a)throw new Error(`Assembly ${e} failed to load`);return{type:"LinearGenomeView",bpPerPx:1,offsetPx:0,hideHeader:!0,displayedRegions:a.regions}})))),e.views.forEach((t=>{t.setWidth(e.width)})),e.views.forEach((e=>{e.showAllRegions()})),f?(a.addTrackConf(f),e.toggleTrack(f.trackId)):g&&e.showTrack(g)}catch(e){console.error(e),A(e)}},variant:"contained",color:"primary"},"Launch"))))),n.createElement(C,{setShowTrackId:E,assembly2:s,assembly1:i,setSessionTrackData:v,sessionTrackData:f,model:e}))))}))},75653:(e,t,a)=>{a.d(t,{A:()=>v});var n=a(7552),o=a(93878),r=a(85693),s=a(70799),l=a(33283),i=a(82081),c=a(24959),m=a(72861),d=a(69500);const u=(0,m.A)(),p=(0,c.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[`maxWidth${(0,l.A)(String(a.maxWidth))}`],a.fixed&&t.fixed,a.disableGutters&&t.disableGutters]}}),h=e=>(0,i.A)({props:e,name:"MuiContainer",defaultTheme:u});var b=a(15622),y=a(51148),A=a(31049);const f=function(e={}){const{createStyledComponent:t=p,useThemeProps:a=h,componentName:i="MuiContainer"}=e,c=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,a)=>{const n=a,o=e.breakpoints.values[n];return 0!==o&&(t[e.breakpoints.up(n)]={maxWidth:`${o}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),m=n.forwardRef((function(e,t){const n=a(e),{className:m,component:u="div",disableGutters:p=!1,fixed:h=!1,maxWidth:b="lg",classes:y,...A}=n,f={...n,component:u,disableGutters:p,fixed:h,maxWidth:b},v=((e,t)=>{const{classes:a,fixed:n,disableGutters:o,maxWidth:i}=e,c={root:["root",i&&`maxWidth${(0,l.A)(String(i))}`,n&&"fixed",o&&"disableGutters"]};return(0,s.A)(c,(e=>(0,r.Ay)(t,e)),a)})(f,i);return(0,d.jsx)(c,{as:u,ownerState:f,className:(0,o.A)(v.root,m),ref:t,...A})}));return m}({createStyledComponent:(0,y.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[`maxWidth${(0,b.A)(String(a.maxWidth))}`],a.fixed&&t.fixed,a.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,A.A)({props:e,name:"MuiContainer"})}),v=f},33248:(e,t,a)=>{a.d(t,{A:()=>R});var n=a(7552),o=a(93878),r=a(70799),s=a(72639),l=a(15110),i=a(74893),c=a(69500);const m=(0,i.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),d=(0,i.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var u=a(55270),p=a(51148),h=a(60129);const b=(0,p.Ay)("span",{shouldForwardProp:u.A})({position:"relative",display:"flex"}),y=(0,p.Ay)(m)({transform:"scale(1)"}),A=(0,p.Ay)(d)((0,h.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),f=function(e){const{checked:t=!1,classes:a={},fontSize:n}=e,o={...e,checked:t};return(0,c.jsxs)(b,{className:a.root,ownerState:o,children:[(0,c.jsx)(y,{fontSize:n,className:a.background,ownerState:o}),(0,c.jsx)(A,{fontSize:n,className:a.dot,ownerState:o})]})};var v=a(15622),g=a(4402),E=a(33960),S=a(39006),k=a(38127),x=a(58520),w=a(4785);const C=(0,p.Ay)(l.A,{shouldForwardProp:e=>(0,u.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,"medium"!==a.size&&t[`size${(0,v.A)(a.size)}`],t[`color${(0,v.A)(a.color)}`]]}})((0,h.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${k.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,x.A)()).map((([t])=>({props:{color:t,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette[t].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,x.A)()).map((([t])=>({props:{color:t,disabled:!1},style:{[`&.${k.A.checked}`]:{color:(e.vars||e).palette[t].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),L=(0,c.jsx)(f,{checked:!0}),M=(0,c.jsx)(f,{}),R=n.forwardRef((function(e,t){const a=(0,w.b)({props:e,name:"MuiRadio"}),{checked:s,checkedIcon:l=L,color:i="primary",icon:m=M,name:d,onChange:u,size:p="medium",className:h,disabled:b,disableRipple:y=!1,...A}=a,f=(0,E.A)();let x=b;f&&void 0===x&&(x=f.disabled),x??=!1;const R={...a,disabled:x,disableRipple:y,color:i,size:p},$=(e=>{const{classes:t,color:a,size:n}=e,o={root:["root",`color${(0,v.A)(a)}`,"medium"!==n&&`size${(0,v.A)(n)}`]};return{...t,...(0,r.A)(o,k.q,t)}})(R),T=(0,S.A)();let z=s;const j=(0,g.A)(u,T&&T.onChange);let N=d;var W,F;return T&&(void 0===z&&(W=T.value,z="object"==typeof(F=a.value)&&null!==F?W===F:String(W)===String(F)),void 0===N&&(N=T.name)),(0,c.jsx)(C,{type:"radio",icon:n.cloneElement(m,{fontSize:M.props.fontSize??p}),checkedIcon:n.cloneElement(l,{fontSize:L.props.fontSize??p}),disabled:x,ownerState:R,classes:$,name:N,checked:z,onChange:j,ref:t,className:(0,o.A)($.root,h),...A})}))},38127:(e,t,a)=>{a.d(t,{A:()=>s,q:()=>r});var n=a(33761),o=a(85693);function r(e){return(0,o.Ay)("MuiRadio",e)}const s=(0,n.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},56089:(e,t,a)=>{a.d(t,{A:()=>p});var n=a(7552),o=a(93878),r=a(70799),s=a(83867),l=a(87625),i=a(51584),c=a(77259),m=a(76258),d=a(89456),u=a(69500);const p=n.forwardRef((function(e,t){const{actions:a,children:p,className:h,defaultValue:b,name:y,onChange:A,value:f,...v}=e,g=n.useRef(null),E=(e=>{const{classes:t,row:a,error:n}=e,o={root:["root",a&&"row",n&&"error"]};return(0,r.A)(o,l.B,t)})(e),[S,k]=(0,c.A)({controlled:f,default:b,name:"RadioGroup"});n.useImperativeHandle(a,(()=>({focus:()=>{let e=g.current.querySelector("input:not(:disabled):checked");e||(e=g.current.querySelector("input:not(:disabled)")),e&&e.focus()}})),[]);const x=(0,i.A)(t,g),w=(0,d.A)(y),C=n.useMemo((()=>({name:w,onChange(e){k(e.target.value),A&&A(e,e.target.value)},value:S})),[w,A,k,S]);return(0,u.jsx)(m.A.Provider,{value:C,children:(0,u.jsx)(s.A,{role:"radiogroup",ref:x,className:(0,o.A)(E.root,h),...v,children:p})})}))},76258:(e,t,a)=>{a.d(t,{A:()=>n});const n=a(7552).createContext(void 0)},87625:(e,t,a)=>{a.d(t,{A:()=>s,B:()=>r});var n=a(33761),o=a(85693);function r(e){return(0,o.Ay)("MuiRadioGroup",e)}const s=(0,n.A)("MuiRadioGroup",["root","row","error"])},39006:(e,t,a)=>{a.d(t,{A:()=>r});var n=a(7552),o=a(76258);function r(){return n.useContext(o.A)}},24959:(e,t,a)=>{a.d(t,{A:()=>n});const n=(0,a(15543).Ay)()}}]);
+//# sourceMappingURL=8301.877076ce.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8301.877076ce.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8301.877076ce.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/index.tsx","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport {\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n  Typography,\n} from '@mui/material'\nimport { ErrorMessage, FileSelector } from '@jbrowse/core/ui'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { basename, extName, getName, stripGz } from './util'\n\nfunction getAdapter({\n  radioOption,\n  assembly1,\n  assembly2,\n  fileLocation,\n  indexFileLocation,\n  bed1Location,\n  bed2Location,\n}: {\n  radioOption: string\n  assembly1: string\n  assembly2: string\n  fileLocation?: FileLocation\n  indexFileLocation?: FileLocation\n  bed1Location?: FileLocation\n  bed2Location?: FileLocation\n}) {\n  if (radioOption === '.paf') {\n    return {\n      type: 'PAFAdapter',\n      pafLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.out') {\n    return {\n      type: 'MashMapAdapter',\n      outLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.delta') {\n    return {\n      type: 'DeltaAdapter',\n      deltaLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.chain') {\n    return {\n      type: 'ChainAdapter',\n      chainLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.anchors') {\n    return {\n      type: 'MCScanAnchorsAdapter',\n      mcscanAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.anchors.simple') {\n    return {\n      type: 'MCScanSimpleAnchorsAdapter',\n      mcscanSimpleAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.pif.gz') {\n    return {\n      type: 'PairwiseIndexedPAFAdapter',\n      pifGzLocation: fileLocation,\n      index: { location: indexFileLocation },\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else {\n    throw new Error(\n      `Unknown to detect type ${radioOption} from filename (select radio button to clarify)`,\n    )\n  }\n}\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nconst ImportCustomTrack = observer(function ({\n  assembly1,\n  assembly2,\n  setSessionTrackData,\n}: {\n  sessionTrackData: Conf\n  assembly1: string\n  assembly2: string\n  setSessionTrackData: (arg: Conf) => void\n}) {\n  const [bed2Location, setBed2Location] = useState<FileLocation>()\n  const [bed1Location, setBed1Location] = useState<FileLocation>()\n  const [fileLocation, setFileLocation] = useState<FileLocation>()\n  const [indexFileLocation, setIndexFileLocation] = useState<FileLocation>()\n  const [value, setValue] = useState('')\n  const [error, setError] = useState<unknown>()\n  const fileName = getName(fileLocation)\n\n  const radioOption = value || (fileName ? extName(stripGz(fileName)) : '')\n\n  useEffect(() => {\n    try {\n      if (fileLocation) {\n        const fn = fileName ? basename(fileName) : 'MyTrack'\n        const trackId = `${fn}-${Date.now()}`\n        setError(undefined)\n\n        setSessionTrackData({\n          trackId,\n          name: fn,\n          assemblyNames: [assembly2, assembly1],\n          type: 'SyntenyTrack',\n          adapter: getAdapter({\n            radioOption,\n            assembly1,\n            assembly2,\n            fileLocation,\n            indexFileLocation,\n            bed1Location,\n            bed2Location,\n          }),\n        })\n      }\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }, [\n    fileName,\n    assembly1,\n    assembly2,\n    bed1Location,\n    bed2Location,\n    fileLocation,\n    indexFileLocation,\n    radioOption,\n    setSessionTrackData,\n  ])\n  return (\n    <Paper style={{ padding: 12 }}>\n      {error ? <ErrorMessage error={error} /> : null}\n      <Typography style={{ textAlign: 'center' }}>\n        Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or\n        .anchors.simple (MCScan) file to view. These file types can also be\n        gzipped. The first assembly should be the query sequence (e.g. left\n        column of the PAF) and the second assembly should be the target sequence\n        (e.g. right column of the PAF)\n      </Typography>\n      <RadioGroup\n        value={radioOption}\n        onChange={event => {\n          setValue(event.target.value)\n        }}\n      >\n        <Grid container justifyContent=\"center\">\n          <Grid item>\n            <FormControlLabel value=\".paf\" control={<Radio />} label=\".paf\" />\n          </Grid>\n          <Grid item>\n            <FormControlLabel value=\".out\" control={<Radio />} label=\".out\" />\n          </Grid>\n\n          <Grid item>\n            <FormControlLabel\n              value=\".delta\"\n              control={<Radio />}\n              label=\".delta\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".chain\"\n              control={<Radio />}\n              label=\".chain\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors\"\n              control={<Radio />}\n              label=\".anchors\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors.simple\"\n              control={<Radio />}\n              label=\".anchors.simple\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".pif.gz\"\n              control={<Radio />}\n              label=\".pif.gz\"\n            />\n          </Grid>\n        </Grid>\n      </RadioGroup>\n      <Grid container justifyContent=\"center\">\n        <Grid item>\n          {value === '.anchors' || value === '.anchors.simple' ? (\n            <div>\n              <div style={{ margin: 20 }}>\n                Open the {value} and .bed files for both genome assemblies from\n                the MCScan (Python version) pipeline{' '}\n                <a href=\"https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)\">\n                  (more info)\n                </a>\n              </div>\n              <div style={{ display: 'flex' }}>\n                <div>\n                  <FileSelector\n                    name=\".anchors file\"\n                    description=\"\"\n                    location={fileLocation}\n                    setLocation={loc => {\n                      setFileLocation(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 1 .bed (left column of anchors file)\"\n                    description=\"\"\n                    location={bed1Location}\n                    setLocation={loc => {\n                      setBed1Location(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 2 .bed (right column of anchors file)\"\n                    description=\"\"\n                    location={bed2Location}\n                    setLocation={loc => {\n                      setBed2Location(loc)\n                    }}\n                  />\n                </div>\n              </div>\n            </div>\n          ) : value === '.pif.gz' ? (\n            <div style={{ display: 'flex' }}>\n              <div>\n                <FileSelector\n                  name={`${value} location`}\n                  description=\"\"\n                  location={fileLocation}\n                  setLocation={loc => {\n                    setFileLocation(loc)\n                  }}\n                />\n              </div>\n              <div>\n                <FileSelector\n                  name={`${value} index location`}\n                  description=\"\"\n                  location={indexFileLocation}\n                  setLocation={loc => {\n                    setIndexFileLocation(loc)\n                  }}\n                />\n              </div>\n            </div>\n          ) : (\n            <FileSelector\n              name={value ? `${value} location` : ''}\n              description=\"\"\n              location={fileLocation}\n              setLocation={loc => {\n                setFileLocation(loc)\n              }}\n            />\n          )}\n        </Grid>\n      </Grid>\n    </Paper>\n  )\n})\n\nexport default ImportCustomTrack\n","export function getName(\n  sessionTrackData?: { uri: string } | { localPath: string } | { name: string },\n) {\n  return sessionTrackData\n    ? // @ts-expect-error\n      sessionTrackData.uri ||\n        // @ts-expect-error\n        sessionTrackData.localPath ||\n        // @ts-expect-error\n        sessionTrackData.name\n    : undefined\n}\n\nexport function stripGz(fileName: string) {\n  return fileName.endsWith('.gz') ? fileName.slice(0, -3) : fileName\n}\n\nexport function basename(str: string) {\n  return str.split('#')[0]!.split('?')[0]!.split('/').pop()\n}\n\nexport function extName(str: string) {\n  const r = str.split('.').pop()\n  return r ? `.${r}` : ''\n}\n","import React, { useState, useEffect } from 'react'\nimport { Select, MenuItem, Paper, Typography } from '@mui/material'\nimport { getSession } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearSyntenyViewModel } from '../../model'\n\nfunction f(track: AnyConfigurationModel, assembly1: string, assembly2: string) {\n  const assemblyNames = readConfObject(track, 'assemblyNames')\n  return (\n    assemblyNames.includes(assembly1) &&\n    assemblyNames.includes(assembly2) &&\n    track.type.includes('Synteny')\n  )\n}\n\nconst Selector = observer(\n  ({\n    model,\n    assembly1,\n    assembly2,\n    setShowTrackId,\n  }: {\n    model: LinearSyntenyViewModel\n    assembly1: string\n    assembly2: string\n    setShowTrackId: (arg: string) => void\n  }) => {\n    const session = getSession(model)\n    const { tracks = [], sessionTracks = [] } = session\n    const allTracks = [...tracks, ...sessionTracks] as AnyConfigurationModel[]\n    const filteredTracks = allTracks.filter(t => f(t, assembly2, assembly1))\n    const resetTrack = filteredTracks[0]?.trackId || ''\n    const [value, setValue] = useState(resetTrack)\n    useEffect(() => {\n      // if assembly1/assembly2 changes, then we will want to use this effect to\n      // change the state of the useState because it otherwise gets locked to a\n      // stale value\n      setValue(resetTrack)\n    }, [resetTrack])\n\n    useEffect(() => {\n      // sets track data in a useEffect because the initial load is needed as well\n      // as onChange's to the select box\n      setShowTrackId(value)\n    }, [value, setShowTrackId])\n    return (\n      <Paper style={{ padding: 12 }}>\n        <Typography paragraph>\n          Select a track from the select box below, the track will be shown when\n          you hit \"Launch\".\n        </Typography>\n\n        {filteredTracks.length ? (\n          <Select\n            value={value}\n            onChange={event => {\n              setValue(event.target.value)\n            }}\n          >\n            {filteredTracks.map(track => (\n              <MenuItem key={track.trackId} value={track.trackId}>\n                {getTrackName(track, session)}\n              </MenuItem>\n            ))}\n          </Select>\n        ) : (\n          <ErrorMessage\n            error={`No synteny tracks found for ${assembly1},${assembly2}`}\n          />\n        )}\n      </Paper>\n    )\n  },\n)\n\nexport default Selector\n","import React, { useState, useEffect } from 'react'\nimport {\n  Button,\n  Container,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'\nimport { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearSyntenyViewModel } from '../../model'\nimport ImportCustomTrack from './ImportCustomTrack'\nimport ImportSyntenyTrackSelector from './ImportSyntenyTrackSelector'\n\nconst useStyles = makeStyles()(theme => ({\n  importFormContainer: {\n    padding: theme.spacing(4),\n    margin: '0 auto',\n  },\n  assemblySelector: {\n    width: '75%',\n    margin: '0 auto',\n  },\n}))\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nfunction TrackSelector({\n  setSessionTrackData,\n  setShowTrackId,\n  sessionTrackData,\n  assembly1,\n  assembly2,\n  model,\n}: {\n  sessionTrackData: Conf\n  setSessionTrackData: (arg: Conf) => void\n  setShowTrackId: (arg?: string) => void\n  model: LinearSyntenyViewModel\n  assembly1: string\n  assembly2: string\n}) {\n  const [choice, setChoice] = useState('tracklist')\n\n  useEffect(() => {\n    if (choice === 'none') {\n      setSessionTrackData(undefined)\n      setShowTrackId(undefined)\n    }\n  }, [choice, setSessionTrackData, setShowTrackId])\n  return (\n    <>\n      <FormControl>\n        <FormLabel id=\"group-label\">\n          (Optional) Select or add a synteny track\n        </FormLabel>\n        <RadioGroup\n          row\n          value={choice}\n          onChange={event => {\n            setChoice(event.target.value)\n          }}\n          aria-labelledby=\"group-label\"\n        >\n          <FormControlLabel value=\"none\" control={<Radio />} label=\"None\" />\n          <FormControlLabel\n            value=\"tracklist\"\n            control={<Radio />}\n            label=\"Existing track\"\n          />\n          <FormControlLabel\n            value=\"custom\"\n            control={<Radio />}\n            label=\"New track\"\n          />\n        </RadioGroup>\n      </FormControl>\n      {choice === 'custom' ? (\n        <ImportCustomTrack\n          setSessionTrackData={setSessionTrackData}\n          sessionTrackData={sessionTrackData}\n          assembly2={assembly2}\n          assembly1={assembly1}\n        />\n      ) : null}\n      {choice === 'tracklist' ? (\n        <ImportSyntenyTrackSelector\n          model={model}\n          assembly1={assembly1}\n          assembly2={assembly2}\n          setShowTrackId={setShowTrackId}\n        />\n      ) : null}\n    </>\n  )\n}\n\nconst LinearSyntenyViewImportForm = observer(function ({\n  model,\n}: {\n  model: LinearSyntenyViewModel\n}) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { assemblyNames } = session\n  const [assembly2, setAssembly2] = useState(assemblyNames[0] || '')\n  const [assembly1, setAssembly1] = useState(assemblyNames[0] || '')\n  const [error, setError] = useState<unknown>()\n  const [sessionTrackData, setSessionTrackData] = useState<Conf>()\n  const [showTrackId, setShowTrackId] = useState<string>()\n\n  async function onOpenClick() {\n    try {\n      if (!isSessionWithAddTracks(session)) {\n        return\n      }\n      setError(undefined)\n\n      const { assemblyManager } = session\n      const assemblies = [assembly1, assembly2]\n      model.setViews(\n        await Promise.all(\n          assemblies.map(async sel => {\n            const asm = await assemblyManager.waitForAssembly(sel)\n            if (!asm) {\n              throw new Error(`Assembly ${sel} failed to load`)\n            }\n            return {\n              type: 'LinearGenomeView' as const,\n              bpPerPx: 1,\n              offsetPx: 0,\n              hideHeader: true,\n              displayedRegions: asm.regions,\n            }\n          }),\n        ),\n      )\n      model.views.forEach(view => {\n        view.setWidth(model.width)\n      })\n      model.views.forEach(view => {\n        view.showAllRegions()\n      })\n      if (sessionTrackData) {\n        session.addTrackConf(sessionTrackData)\n        model.toggleTrack(sessionTrackData.trackId)\n      } else if (showTrackId) {\n        model.showTrack(showTrackId)\n      }\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }\n\n  // this is a combination of any displayed error message we have\n  const displayError = error\n  return (\n    <Container className={classes.importFormContainer}>\n      {displayError ? <ErrorMessage error={displayError} /> : null}\n      <Grid\n        container\n        spacing={1}\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        className={classes.assemblySelector}\n      >\n        <Grid item>\n          <Paper style={{ padding: 12 }}>\n            <p style={{ textAlign: 'center' }}>\n              Select assemblies for linear synteny view\n            </p>\n            <Grid\n              container\n              spacing={1}\n              justifyContent=\"center\"\n              alignItems=\"center\"\n            >\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly1}\n                  onChange={val => {\n                    setAssembly1(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly2}\n                  onChange={val => {\n                    setAssembly2(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <FormControl>\n                  <Button\n                    onClick={onOpenClick}\n                    variant=\"contained\"\n                    color=\"primary\"\n                  >\n                    Launch\n                  </Button>\n                </FormControl>\n              </Grid>\n            </Grid>\n          </Paper>\n          <TrackSelector\n            setShowTrackId={setShowTrackId}\n            assembly2={assembly2}\n            assembly1={assembly1}\n            setSessionTrackData={setSessionTrackData}\n            sessionTrackData={sessionTrackData}\n            model={model}\n          />\n        </Grid>\n      </Grid>\n    </Container>\n  )\n})\n\nexport default LinearSyntenyViewImportForm\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["getAdapter","radioOption","assembly1","assembly2","fileLocation","indexFileLocation","bed1Location","bed2Location","type","pafLocation","queryAssembly","targetAssembly","outLocation","deltaLocation","chainLocation","mcscanAnchorsLocation","assemblyNames","mcscanSimpleAnchorsLocation","pifGzLocation","index","location","Error","observer","setSessionTrackData","setBed2Location","useState","setBed1Location","setFileLocation","setIndexFileLocation","value","setValue","error","setError","fileName","sessionTrackData","uri","localPath","name","undefined","str","r","split","pop","extName","endsWith","slice","stripGz","useEffect","fn","trackId","Date","now","adapter","e","console","React","Paper","style","padding","ErrorMessage","Typography","textAlign","RadioGroup","onChange","event","target","Grid","container","justifyContent","item","FormControlLabel","control","Radio","label","margin","href","display","FileSelector","description","setLocation","loc","model","setShowTrackId","session","getSession","tracks","sessionTracks","filteredTracks","filter","t","track","readConfObject","includes","f","resetTrack","paragraph","length","Select","map","MenuItem","key","getTrackName","useStyles","makeStyles","theme","importFormContainer","spacing","assemblySelector","width","TrackSelector","choice","setChoice","FormControl","FormLabel","id","row","ImportCustomTrack","ImportSyntenyTrackSelector","classes","setAssembly2","setAssembly1","showTrackId","displayError","Container","className","alignItems","AssemblySelector","selected","val","Button","onClick","async","isSessionWithAddTracks","assemblyManager","assemblies","setViews","Promise","all","asm","waitForAssembly","sel","bpPerPx","offsetPx","hideHeader","displayedRegions","regions","views","forEach","view","setWidth","showAllRegions","addTrackConf","toggleTrack","showTrack","variant","color","defaultTheme","createTheme","defaultCreateStyledComponent","slot","overridesResolver","props","styles","ownerState","root","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","inProps","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","marginLeft","boxSizing","marginRight","paddingLeft","paddingRight","breakpoints","up","Object","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","Math","max","xs","ref","component","classesProp","other","slots","composeClasses","generateUtilityClass","useUtilityClasses","as","clsx","createContainer","createSvgIcon","d","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","checked","easeOut","fontSize","children","background","dot","RadioRoot","SwitchBase","prop","size","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","entries","createSimplePaletteValueFilter","mainChannel","main","defaultCheckedIcon","defaultIcon","checkedProp","checkedIcon","icon","nameProp","onChangeProp","disabledProp","muiFormControl","useFormControl","radioGroup","useRadioGroup","createChainedFunction","a","b","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","Provider","role","getRadioGroupUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8341.fa84fa67.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8341,722,5484,7865,246,2627,5008],{59705:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(7552),s=t(93878),i=t(70799),o=t(64761),a=t(51148),c=t(60129),l=t(4785),u=t(15622),d=t(58520),p=t(72489),m=t(69500);const v=o.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=o.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,h="string"!=typeof v?o.AH`
+        animation: ${v} 1.4s linear infinite;
+      `:null,g="string"!=typeof f?o.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,b=(0,a.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,u.A)(t.color)}`]]}})((0,c.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:h||{animation:`${v} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),y=(0,a.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),A=(0,a.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,u.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,c.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:g||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),k=n.forwardRef((function(e,r){const t=(0,l.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,size:c=40,style:d,thickness:v=3.6,value:f=0,variant:h="indeterminate",...g}=t,k={...t,color:o,disableShrink:a,size:c,thickness:v,value:f,variant:h},x=(e=>{const{classes:r,variant:t,color:n,disableShrink:s}=e,o={root:["root",t,`color${(0,u.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,u.A)(t)}`,s&&"circleDisableShrink"]};return(0,i.A)(o,p.b,r)})(k),w={},S={},E={};if("determinate"===h){const e=2*Math.PI*((44-v)/2);w.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(f),w.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,S.transform="rotate(-90deg)"}return(0,m.jsx)(b,{className:(0,s.A)(x.root,n),style:{width:c,height:c,...S,...d},ownerState:k,ref:r,role:"progressbar",...E,...g,children:(0,m.jsx)(y,{className:x.svg,ownerState:k,viewBox:"22 22 44 44",children:(0,m.jsx)(A,{className:x.circle,style:w,ownerState:k,cx:44,cy:44,r:(44-v)/2,fill:"none",strokeWidth:v})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>o,b:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiCircularProgress",e)}const o=(0,n.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},88215:(e,r,t)=>{t.d(r,{x:()=>u});var n=t(7552),s=t(29527),i=t(89887),o=t(99305),a=t(28325),c=t(69500);function l(e){return e.substring(2).toLowerCase()}function u(e){const{children:r,disableReactTree:t=!1,mouseEvent:u="onClick",onClickAway:d,touchEvent:p="onTouchEnd"}=e,m=n.useRef(!1),v=n.useRef(null),f=n.useRef(!1),h=n.useRef(!1);n.useEffect((()=>(setTimeout((()=>{f.current=!0}),0),()=>{f.current=!1})),[]);const g=(0,s.A)((0,a.A)(r),v),b=(0,i.A)((e=>{const r=h.current;h.current=!1;const n=(0,o.A)(v.current);if(!f.current||!v.current||"clientX"in e&&function(e,r){return r.documentElement.clientWidth<e.clientX||r.documentElement.clientHeight<e.clientY}(e,n))return;if(m.current)return void(m.current=!1);let s;s=e.composedPath?e.composedPath().includes(v.current):!n.documentElement.contains(e.target)||v.current.contains(e.target),s||!t&&r||d(e)})),y=e=>t=>{h.current=!0;const n=r.props[e];n&&n(t)},A={ref:g};return!1!==p&&(A[p]=y(p)),n.useEffect((()=>{if(!1!==p){const e=l(p),r=(0,o.A)(v.current),t=()=>{m.current=!0};return r.addEventListener(e,b),r.addEventListener("touchmove",t),()=>{r.removeEventListener(e,b),r.removeEventListener("touchmove",t)}}}),[b,p]),!1!==u&&(A[u]=y(u)),n.useEffect((()=>{if(!1!==u){const e=l(u),r=(0,o.A)(v.current);return r.addEventListener(e,b),()=>{r.removeEventListener(e,b)}}}),[b,u]),(0,c.jsx)(n.Fragment,{children:n.cloneElement(r,A)})}},17515:(e,r,t)=>{t.d(r,{A:()=>p});var n=t(7552),s=t(93878),i=t(70799),o=t(51148),a=t(60129),c=t(4785),l=t(89663),u=t(69500);const d=(0,o.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})((0,a.A)((({theme:e})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:e.mixins.toolbar}]})))),p=n.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiToolbar"}),{className:n,component:o="div",disableGutters:a=!1,variant:p="regular",...m}=t,v={...t,component:o,disableGutters:a,variant:p},f=(e=>{const{classes:r,disableGutters:t,variant:n}=e,s={root:["root",!t&&"gutters",n]};return(0,i.A)(s,l.U,r)})(v);return(0,u.jsx)(d,{as:o,className:(0,s.A)(f.root,n),ref:r,ownerState:v,...m})}))},89663:(e,r,t)=>{t.d(r,{A:()=>o,U:()=>i});var n=t(33761),s=t(85693);function i(e){return(0,s.Ay)("MuiToolbar",e)}const o=(0,n.A)("MuiToolbar",["root","gutters","regular","dense"])}}]);
+//# sourceMappingURL=8341.fa84fa67.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8341.fa84fa67.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8341.fa84fa67.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../../../node_modules/@mui/material/Toolbar/Toolbar.js","../../../node_modules/@mui/material/Toolbar/toolbarClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(getReactNodeRef(children), nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().includes(nodeRef.current);\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getToolbarUtilityClass } from \"./toolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    }\n  }, {\n    props: {\n      variant: 'dense'\n    },\n    style: {\n      minHeight: 48\n    }\n  }, {\n    props: {\n      variant: 'regular'\n    },\n    style: theme.mixins.toolbar\n  }]\n})));\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n    className,\n    component = 'div',\n    disableGutters = false,\n    variant = 'regular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    disableGutters,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;"],"names":["circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","color","theme","display","variants","style","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","size","thickness","value","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","mapEventPropToEvent","eventProp","substring","toLowerCase","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","setTimeout","current","handleRef","handleClickAway","event","insideReactTree","doc","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","insideDOM","composedPath","includes","contains","target","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","addEventListener","removeEventListener","mappedMouseEvent","ToolbarRoot","disableGutters","gutters","position","alignItems","paddingLeft","spacing","paddingRight","breakpoints","up","minHeight","mixins","toolbar","component","as","getToolbarUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8343.dd515382.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8343],{98343:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var s=a(46377),r=a(99546),n=a(99834),i=a(66885),c=a(32598),o=a(7706),u=a(9502),l=a(54702);class h extends s.BaseFeatureDataAdapter{calculatedIntervalTreeMap={};static capabilities=["getFeatures","getRefNames"];async getHeader(){const{header:e}=await this.setup();return e}async getMetadata(){const{header:e}=await this.setup();return new u.A({header:e}).getMetadata()}async setupP(e){const{statusCallback:t=()=>{}}=e||{},a=await(0,n.openLocation)(this.getConf("vcfLocation"),this.pluginManager).readFile(e),s=(0,r.isGzip)(a)?await(0,r.updateStatus)("Unzipping",t,(()=>(0,o.unzip)(a))):a,i=[],h={};let d=0;const p="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;let f=0;for(;d<s.length;){const e=s.indexOf("\n",d),a=-1===e?s.subarray(d):s.subarray(d,e),r=(p?.decode(a)||a.toString()).trim();if(r)if(r.startsWith("#"))i.push(r);else{const e=r.indexOf("\t"),t=r.slice(0,e);h[t]||(h[t]=[]),h[t].push(r)}f++%1e4==0&&t(`Loading ${Math.floor(d/1e6).toLocaleString("en-US")}/${Math.floor(s.length/1e6).toLocaleString("en-US")} MB`),d=e+1}const g=i.join("\n"),b=new u.A({header:g});return{header:g,intervalTreeMap:Object.fromEntries(Object.entries(h).map((([e,t])=>[e,a=>{if(!this.calculatedIntervalTreeMap[e]){a?.("Parsing VCF data");let s=0;const r=new c.Ay;for(const a of t){const t=new l.A({variant:b.parseLine(a),parser:b,id:`${this.id}-${e}-${s++}`});r.insert([t.get("start"),t.get("end")],t)}this.calculatedIntervalTreeMap[e]=r}return this.calculatedIntervalTreeMap[e]}])))}}async setup(){return this.vcfFeatures||(this.vcfFeatures=this.setupP().catch((e=>{throw this.vcfFeatures=void 0,e}))),this.vcfFeatures}async getRefNames(e={}){const{intervalTreeMap:t}=await this.setup();return Object.keys(t)}getFeatures(e,t={}){return(0,i.ObservableCreate)((async a=>{try{const{start:s,end:r,refName:n}=e,{intervalTreeMap:i}=await this.setup();i[n]?.(t.statusCallback).search([s,r]).forEach((e=>{a.next(e)})),a.complete()}catch(e){a.error(e)}}),t.signal)}freeResources(){}}}}]);
+//# sourceMappingURL=8343.dd515382.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8343.dd515382.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8343.dd515382.chunk.js","mappings":"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","sources":["../../../plugins/variants/src/VcfAdapter/VcfAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region, Feature, updateStatus, isGzip } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport VCF from '@gmod/vcf'\nimport type { Buffer } from 'buffer'\n\n// local\nimport VcfFeature from '../VcfFeature'\n\ntype StatusCallback = (arg: string) => void\n\nexport default class VcfAdapter extends BaseFeatureDataAdapter {\n  calculatedIntervalTreeMap: Record<string, IntervalTree> = {}\n\n  vcfFeatures?: Promise<{\n    header: string\n    intervalTreeMap: Record<string, (sc?: StatusCallback) => IntervalTree>\n  }>\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  public async getHeader() {\n    const { header } = await this.setup()\n    return header\n  }\n\n  async getMetadata() {\n    const { header } = await this.setup()\n    const parser = new VCF({ header })\n    return parser.getMetadata()\n  }\n\n  public async setupP(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    const buf = (await openLocation(\n      this.getConf('vcfLocation'),\n      this.pluginManager,\n    ).readFile(opts)) as Buffer\n    const buffer = isGzip(buf)\n      ? await updateStatus('Unzipping', statusCallback, () => unzip(buf))\n      : buf\n    const headerLines = []\n    const featureMap = {} as Record<string, string[]>\n    let blockStart = 0\n\n    const decoder =\n      typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\n    let i = 0\n    while (blockStart < buffer.length) {\n      const n = buffer.indexOf('\\n', blockStart)\n      // could be a non-newline ended file, so slice to end of file if n===-1\n      const b =\n        n === -1 ? buffer.subarray(blockStart) : buffer.subarray(blockStart, n)\n      const line = (decoder?.decode(b) || b.toString()).trim()\n      if (line) {\n        if (line.startsWith('#')) {\n          headerLines.push(line)\n        } else {\n          const ret = line.indexOf('\\t')\n          const refName = line.slice(0, ret)\n          if (!featureMap[refName]) {\n            featureMap[refName] = []\n          }\n          featureMap[refName].push(line)\n        }\n      }\n      if (i++ % 10_000 === 0) {\n        statusCallback(\n          `Loading ${Math.floor(blockStart / 1_000_000).toLocaleString('en-US')}/${Math.floor(buffer.length / 1_000_000).toLocaleString('en-US')} MB`,\n        )\n      }\n\n      blockStart = n + 1\n    }\n\n    const header = headerLines.join('\\n')\n    const parser = new VCF({ header })\n\n    const intervalTreeMap = Object.fromEntries(\n      Object.entries(featureMap).map(([refName, lines]) => [\n        refName,\n        (sc?: (arg: string) => void) => {\n          if (!this.calculatedIntervalTreeMap[refName]) {\n            sc?.('Parsing VCF data')\n            let idx = 0\n            const intervalTree = new IntervalTree()\n            for (const line of lines) {\n              const f = new VcfFeature({\n                variant: parser.parseLine(line),\n                parser,\n                id: `${this.id}-${refName}-${idx++}`,\n              })\n              intervalTree.insert([f.get('start'), f.get('end')], f)\n            }\n            this.calculatedIntervalTreeMap[refName] = intervalTree\n          }\n          return this.calculatedIntervalTreeMap[refName]\n        },\n      ]),\n    )\n\n    return {\n      header,\n      intervalTreeMap,\n    }\n  }\n\n  public async setup() {\n    if (!this.vcfFeatures) {\n      this.vcfFeatures = this.setupP().catch((e: unknown) => {\n        this.vcfFeatures = undefined\n        throw e\n      })\n    }\n    return this.vcfFeatures\n  }\n\n  public async getRefNames(_: BaseOptions = {}) {\n    const { intervalTreeMap } = await this.setup()\n    return Object.keys(intervalTreeMap)\n  }\n\n  public getFeatures(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      try {\n        const { start, end, refName } = region\n        const { intervalTreeMap } = await this.setup()\n        intervalTreeMap[refName]?.(opts.statusCallback)\n          .search([start, end])\n          .forEach(f => {\n            observer.next(f)\n          })\n        observer.complete()\n      } catch (e) {\n        observer.error(e)\n      }\n    }, opts.signal)\n  }\n\n  public freeResources(): void {}\n}\n"],"names":["VcfAdapter","BaseFeatureDataAdapter","calculatedIntervalTreeMap","getHeader","header","this","setup","getMetadata","VCF","setupP","opts","statusCallback","buf","openLocation","getConf","pluginManager","readFile","buffer","isGzip","updateStatus","unzip","headerLines","featureMap","blockStart","decoder","TextDecoder","undefined","i","length","n","indexOf","b","subarray","line","decode","toString","trim","startsWith","push","ret","refName","slice","Math","floor","toLocaleString","join","parser","intervalTreeMap","Object","fromEntries","entries","map","lines","sc","idx","intervalTree","IntervalTree","f","VcfFeature","variant","parseLine","id","insert","get","vcfFeatures","catch","e","getRefNames","_","keys","getFeatures","region","ObservableCreate","async","start","end","search","forEach","observer","next","complete","error","signal","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8408.2e2896bf.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8408],{26027:(e,t,n)=>{n.r(t),n.d(t,{default:()=>s});var a=n(7552),o=n(68446),r=n(99546),l=n(49792);const i=(0,o.observer)((function({model:e}){const t=(0,r.getContainingView)(e),n=Math.round(t.dynamicBlocks.totalWidthPx),o=e.height,l=(0,a.useCallback)((t=>{e.setRef(t)}),[e,n,o]);return a.createElement("canvas",{"data-testid":"cloud-canvas",ref:l,style:{width:n,height:o,position:"absolute"},width:2*n,height:2*o})})),s=(0,o.observer)((function({model:e}){return a.createElement(l.A,{model:e},a.createElement(i,{model:e}))}))},49792:(e,t,n)=>{n.d(t,{A:()=>h});var a=n(7552),o=n(49823),r=n(20529),l=n(75785),i=n(68446),s=n(99546),d=n(89003),c=n(5401);const g=(0,l.n9)()((e=>({loading:{backgroundColor:e.palette.background.default,backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 5px, ${e.palette.action.disabledBackground} 5px, ${e.palette.action.disabledBackground} 10px)`,position:"absolute",bottom:0,height:50,width:300,right:0,pointerEvents:"none",textAlign:"center"}}))),u=(0,i.observer)((function({model:e,children:t}){const{error:n,regionTooLarge:o}=e;return n?a.createElement(r.LW,{message:`${n}`,severity:"error",action:a.createElement(d.A,{title:"Reload"},a.createElement(c.A,{"data-testid":"reload_button",onClick:()=>{e.reload()}},"Reload"))}):o?e.regionCannotBeRendered():a.createElement(m,{model:e},t)})),m=(0,i.observer)((function({model:e,children:t}){const{drawn:n,loading:o}=e,r=(0,s.getContainingView)(e),l=(e.lastDrawnOffsetPx||0)-r.offsetPx;return a.createElement("div",{"data-testid":`drawn-${n}`},a.createElement("div",{style:{position:"absolute",left:l}},t),0!==l||o?a.createElement(b,{model:e}):null)})),b=(0,i.observer)((function({model:e}){const{classes:t}=g(),{message:n}=e;return a.createElement("div",{className:t.loading},a.createElement(o.LoadingEllipses,{message:n}))})),h=u}}]);
+//# sourceMappingURL=8408.2e2896bf.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8408.2e2896bf.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8408.2e2896bf.chunk.js","mappings":"sMAWA,MAAMA,GAAQC,EAAAA,EAAAA,WAAS,UAAU,MAC/BC,IAIA,MAAMC,GAAOC,EAAAA,EAAAA,mBAAkBF,GACzBG,EAAQC,KAAKC,MAAMJ,EAAKK,cAAcC,cACtCC,EAASR,EAAMQ,OAGfC,GAAKC,EAAAA,EAAAA,cACRC,IACCX,EAAMY,OAAOD,EAAI,GAGnB,CAACX,EAAOG,EAAOK,IAIjB,OACEK,EAAAA,cAAA,UACE,cAAY,eACZF,IAAKF,EACLK,MAAO,CAAEX,QAAOK,SAAQO,SAAU,YAClCZ,MAAe,EAARA,EACPK,OAAiB,EAATA,GAGd,IAaA,GAXsCT,EAAAA,EAAAA,WAAS,UAAU,MACvDC,IAIA,OACEa,EAAAA,cAACG,EAAAA,EAAoB,CAAChB,MAAOA,GAC3Ba,EAAAA,cAACf,EAAK,CAACE,MAAOA,IAGpB,G,6HCpCA,MAAMiB,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,QAAS,CACPC,gBAAiBF,EAAMG,QAAQC,WAAWC,QAC1CC,gBAAiB,kEAAkEN,EAAMG,QAAQI,OAAOC,2BAA2BR,EAAMG,QAAQI,OAAOC,2BACxJZ,SAAU,WACVa,OAAQ,EACRpB,OAAQ,GACRL,MAAO,IACP0B,MAAO,EACPC,cAAe,OACfC,UAAW,cAITf,GAAuBjB,EAAAA,EAAAA,WAAS,UAAU,MAC9CC,EAAK,SACLgC,IAKA,MAAM,MAAEC,EAAK,eAAEC,GAAmBlC,EAClC,OAAOiC,EACLpB,EAAAA,cAACsB,EAAAA,GAAQ,CACPC,QAAS,GAAGH,IACZI,SAAS,QACTX,OACEb,EAAAA,cAACyB,EAAAA,EAAO,CAACC,MAAM,UACb1B,EAAAA,cAAC2B,EAAAA,EAAM,CACL,cAAY,gBACZC,QAASA,KACPzC,EAAM0C,QAAQ,GAEjB,aAMLR,EACFlC,EAAM2C,yBAEN9B,EAAAA,cAAC+B,EAAW,CAAC5C,MAAOA,GAAQgC,EAEhC,IAEMY,GAAc7C,EAAAA,EAAAA,WAAS,UAAU,MACrCC,EAAK,SACLgC,IAKA,MAAM,MAAEa,EAAK,QAAEzB,GAAYpB,EACrBC,GAAOC,EAAAA,EAAAA,mBAAkBF,GACzB8C,GAAQ9C,EAAM+C,mBAAqB,GAAK9C,EAAK+C,SACnD,OAGEnC,EAAAA,cAAA,OAAK,cAAa,SAASgC,KACzBhC,EAAAA,cAAA,OAAKC,MAAO,CAAEC,SAAU,WAAY+B,SAASd,GACnC,IAATc,GAAc1B,EAAUP,EAAAA,cAACoC,EAAU,CAACjD,MAAOA,IAAY,KAG9D,IAEMiD,GAAalD,EAAAA,EAAAA,WAAS,UAAU,MACpCC,IAIA,MAAM,QAAEkD,GAAYjC,KACd,QAAEmB,GAAYpC,EACpB,OACEa,EAAAA,cAAA,OAAKsC,UAAWD,EAAQ9B,SACtBP,EAAAA,cAACuC,EAAAA,gBAAe,CAAChB,QAASA,IAGhC,IAEA,G","sources":["../../../plugins/alignments/src/LinearReadCloudDisplay/components/ReactComponent.tsx","../../../plugins/alignments/src/shared/BaseDisplayComponent.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// local\nimport { LinearReadCloudDisplayModel } from '../model'\nimport BaseDisplayComponent from '../../shared/BaseDisplayComponent'\n\ntype LGV = LinearGenomeViewModel\n\nconst Cloud = observer(function ({\n  model,\n}: {\n  model: LinearReadCloudDisplayModel\n}) {\n  const view = getContainingView(model) as LGV\n  const width = Math.round(view.dynamicBlocks.totalWidthPx)\n  const height = model.height\n\n  // biome-ignore lint/correctness/useExhaustiveDependencies:\n  const cb = useCallback(\n    (ref: HTMLCanvasElement) => {\n      model.setRef(ref)\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [model, width, height],\n  )\n\n  // note: the position absolute below avoids scrollbar from appearing on track\n  return (\n    <canvas\n      data-testid=\"cloud-canvas\"\n      ref={cb}\n      style={{ width, height, position: 'absolute' }}\n      width={width * 2}\n      height={height * 2}\n    />\n  )\n})\n\nconst LinearReadCloudReactComponent = observer(function ({\n  model,\n}: {\n  model: LinearReadCloudDisplayModel\n}) {\n  return (\n    <BaseDisplayComponent model={model}>\n      <Cloud model={model} />\n    </BaseDisplayComponent>\n  )\n})\nexport default LinearReadCloudReactComponent\n","import React from 'react'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\nimport {\n  BlockMsg,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { Button, Tooltip } from '@mui/material'\n\n// local\nimport { LinearReadCloudDisplayModel } from '../LinearReadCloudDisplay/model'\nimport { LinearReadArcsDisplayModel } from '../LinearReadArcsDisplay/model'\n\nconst useStyles = makeStyles()(theme => ({\n  loading: {\n    backgroundColor: theme.palette.background.default,\n    backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${theme.palette.action.disabledBackground} 5px, ${theme.palette.action.disabledBackground} 10px)`,\n    position: 'absolute',\n    bottom: 0,\n    height: 50,\n    width: 300,\n    right: 0,\n    pointerEvents: 'none',\n    textAlign: 'center',\n  },\n}))\n\nconst BaseDisplayComponent = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n  children?: React.ReactNode\n}) {\n  const { error, regionTooLarge } = model\n  return error ? (\n    <BlockMsg\n      message={`${error}`}\n      severity=\"error\"\n      action={\n        <Tooltip title=\"Reload\">\n          <Button\n            data-testid=\"reload_button\"\n            onClick={() => {\n              model.reload()\n            }}\n          >\n            Reload\n          </Button>\n        </Tooltip>\n      }\n    />\n  ) : regionTooLarge ? (\n    model.regionCannotBeRendered()\n  ) : (\n    <DataDisplay model={model}>{children}</DataDisplay>\n  )\n})\n\nconst DataDisplay = observer(function ({\n  model,\n  children,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n  children?: React.ReactNode\n}) {\n  const { drawn, loading } = model\n  const view = getContainingView(model) as LinearGenomeViewModel\n  const left = (model.lastDrawnOffsetPx || 0) - view.offsetPx\n  return (\n    // this data-testid is located here because changing props on the canvas\n    // itself is very sensitive to triggering ref invalidation\n    <div data-testid={`drawn-${drawn}`}>\n      <div style={{ position: 'absolute', left }}>{children}</div>\n      {left !== 0 || loading ? <LoadingBar model={model} /> : null}\n    </div>\n  )\n})\n\nconst LoadingBar = observer(function ({\n  model,\n}: {\n  model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel\n}) {\n  const { classes } = useStyles()\n  const { message } = model\n  return (\n    <div className={classes.loading}>\n      <LoadingEllipses message={message} />\n    </div>\n  )\n})\n\nexport default BaseDisplayComponent\n"],"names":["Cloud","observer","model","view","getContainingView","width","Math","round","dynamicBlocks","totalWidthPx","height","cb","useCallback","ref","setRef","React","style","position","BaseDisplayComponent","useStyles","makeStyles","theme","loading","backgroundColor","palette","background","default","backgroundImage","action","disabledBackground","bottom","right","pointerEvents","textAlign","children","error","regionTooLarge","BlockMsg","message","severity","Tooltip","title","Button","onClick","reload","regionCannotBeRendered","DataDisplay","drawn","left","lastDrawnOffsetPx","offsetPx","LoadingBar","classes","className","LoadingEllipses"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8424.a1a3e663.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8424,5156],{27181:function(r,e,t){var s;r.exports=(s=t(17753),function(r){var e=s,t=e.lib,n=t.WordArray,o=t.Hasher,a=e.algo,i=[],h=[];!function(){function e(e){for(var t=r.sqrt(e),s=2;s<=t;s++)if(!(e%s))return!1;return!0}function t(r){return 4294967296*(r-(0|r))|0}for(var s=2,n=0;n<64;)e(s)&&(n<8&&(i[n]=t(r.pow(s,.5))),h[n]=t(r.pow(s,1/3)),n++),s++}();var c=[],l=a.SHA256=o.extend({_doReset:function(){this._hash=new n.init(i.slice(0))},_doProcessBlock:function(r,e){for(var t=this._hash.words,s=t[0],n=t[1],o=t[2],a=t[3],i=t[4],l=t[5],u=t[6],_=t[7],f=0;f<64;f++){if(f<16)c[f]=0|r[e+f];else{var w=c[f-15],v=(w<<25|w>>>7)^(w<<14|w>>>18)^w>>>3,b=c[f-2],p=(b<<15|b>>>17)^(b<<13|b>>>19)^b>>>10;c[f]=v+c[f-7]+p+c[f-16]}var H=s&n^s&o^n&o,d=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),g=_+((i<<26|i>>>6)^(i<<21|i>>>11)^(i<<7|i>>>25))+(i&l^~i&u)+h[f]+c[f];_=u,u=l,l=i,i=a+g|0,a=o,o=n,n=s,s=g+(d+H)|0}t[0]=t[0]+s|0,t[1]=t[1]+n|0,t[2]=t[2]+o|0,t[3]=t[3]+a|0,t[4]=t[4]+i|0,t[5]=t[5]+l|0,t[6]=t[6]+u|0,t[7]=t[7]+_|0},_doFinalize:function(){var e=this._data,t=e.words,s=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=r.floor(s/4294967296),t[15+(n+64>>>9<<4)]=s,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var r=o.clone.call(this);return r._hash=this._hash.clone(),r}});e.SHA256=o._createHelper(l),e.HmacSHA256=o._createHmacHelper(l)}(Math),s.SHA256)},2775:()=>{}}]);
+//# sourceMappingURL=8424.a1a3e663.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8424.a1a3e663.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8424.a1a3e663.chunk.js","mappings":"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","sources":["../../../node_modules/crypto-js/sha256.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));"],"names":["CryptoJS","module","exports","Math","C","C_lib","lib","WordArray","Hasher","C_algo","algo","H","K","isPrime","n","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","W","SHA256","extend","_doReset","this","_hash","init","slice","_doProcessBlock","M","offset","words","a","b","c","d","e","f","g","h","i","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","_doFinalize","data","_data","dataWords","nBitsTotal","_nDataBytes","nBitsLeft","sigBytes","floor","length","_process","clone","call","_createHelper","HmacSHA256","_createHmacHelper"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8435.484d30f8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8435],{48435:(n,e,a)=>{a.d(e,{doConnect:()=>L});class t{constructor(n=[],e){this.data={};const{checkIndent:a=!0,skipValidation:t=!1}=null!=e?e:{};let r,i,o;r="string"==typeof n?n.trimEnd().split(/\r?\n/):n||[];for(const n of r){if(""===n)throw new Error("Invalid stanza, contained blank lines");if(n.trim().startsWith("#"))continue;if(n.trimEnd().endsWith("\\")){const e=n.trimEnd().slice(0,-1);o?o+=e.trimStart():o=e;continue}let e=n;if(o&&(e=o+e.trimStart(),o=void 0),null!=i?i:a){const n=e.match(/^([ \t]+)/);if(void 0===i)n?[,i]=n:i="";else if(""===i&&null!==n||i&&n&&i!==n[1])throw new Error("Inconsistent indentation of stanza")}else i="";const t=e.trim(),r=t.indexOf(" ");if(-1===r){if(!this.nameKey)throw new Error("First line in a stanza must have both a key and a value");if(this.data[t])continue;this.data[t]="";continue}const s=t.slice(0,r),c=t.slice(r+1);if(this.data[s]&&c!==this.data[s])throw new Error(`Got duplicate key with a different value in stanza: "${s}" key has both ${this.data[s]} and ${c}`);this.nameKey||(this.nameKey=s,this.name=t.slice(r+1)),this.data[s]=c}t||this.validate()}validate(){}}class r{constructor(n=[],e){this.data={};const{checkIndent:a=!0,skipValidation:r=!1}=null!=e?e:{};let i;i="string"==typeof n?n.trimEnd().split(/(?:[\t ]*\r?\n){2,}/):n||[];for(const n of i){if(""===n)throw new Error("Invalid stanza, was empty");if(n.trim().startsWith("#")&&n.trimEnd().split(/\r?\n/).map((n=>n.trim())).every((n=>n.startsWith("#"))))continue;const e=new t(n,{checkIndent:a});if(this.nameKey){if(e.nameKey!==this.nameKey)throw new Error(`The first line in each stanza must have the same key. Saw both ${this.nameKey} and ${e.nameKey}`)}else this.nameKey=e.nameKey;if(!e.name)throw new Error(`No stanza name: ${e.name}`);if(this.data[e.name])throw new Error(`Got duplicate stanza name: ${e.name}`);this.data[e.name]=e}r||this.validate()}validate(){}}function i(n,e,a=""){const t=[];for(const a of e)n.data[a]||t.push(a);if(t.length>0)throw new Error(`${a} is missing required entr${1===t.length?"y":"ies"}: ${t.join(", ")}`)}class o extends r{constructor(n,e){super(n,{...e,checkIndent:!1})}validate(){var n;if("track"!==this.nameKey)throw new Error(`trackDb has "${this.nameKey}" instead of "track" as the first line in each track`);for(const[e,a]of Object.entries(this.data)){const t=Object.keys(a.data);i(a,["track","shortLabel"],`Track ${e}`);const r=new Set(["superTrack","compositeTrack","container","view"]);if(!t.some((n=>r.has(n)))){if(!t.includes("bigDataUrl"))throw new Error(`Track ${e} is missing required key "bigDataUrl"`);if(!t.includes("type")&&!Object.keys(this.settings(e)).includes("type"))throw new Error(`Neither track ${e} nor any of its parent tracks have the required key "type"`)}let o=e;do{o=null===(n=this.data[o])||void 0===n?void 0:n.parent,o&&([o]=o.split(" "))}while(o);const s=this.data[e];s&&(this.data[e]=s)}}settings(n){var e;if(!this.data[n])throw new Error(`Track ${n} does not exist`);const a=[n];let t=n;do{t=null===(e=this.data[t])||void 0===e?void 0:e.parent,t&&a.push(t)}while(t);const r={};a.reverse();for(const n of a){const e=this.data[n];if(e)for(const[n,a]of Object.entries(e))r[n]=a}return r}}class s extends r{validate(n=["genome","trackDb"]){if("genome"!==this.nameKey)throw new Error('Genomes file must begin with a line like "genome <genome_name>"');for(const[e,a]of Object.entries(this.data))i(a,n,`genome ${e}`)}}class c extends t{validate(){i(this,["hub","shortLabel","longLabel","genomesFile","email"],"Hub file")}}class l{constructor(n){const[e,a,...r]=n.trimEnd().split(/(?:[\t ]*\r?\n){2,}/);this.hubData=new t(e),this.validateHub(),this.genome=new t(a),this.validateGenomeSection(),this.tracks=new o(r.join("\n\n"),{skipValidation:!1})}validateHub(){if("hub"!==this.hubData.nameKey)throw new Error('Hub file must begin with a line like "hub <hub_name>"');i(this.hubData,["hub","shortLabel","longLabel","email","descriptionUrl"])}validateGenomeSection(){if("genome"!==this.genome.nameKey)throw new Error('Genomes file must begin with a line like "genome <genome_name>"')}}var d=a(99546),h=a(99834),m=a(91468);async function u(n){const e=await(0,h.openLocation)(n).readFile("utf8");return new o(e)}function p(n,e){return{uri:new URL(n,new URL(e.uri,e.baseUri)).href,locationType:"UriLocation"}}function b(n,e,a){return p(n||e,a)}function f(n,e){return n?{uri:n,locationType:"LocalPath"}:{uri:e,locationType:"UriLocation"}}function g({trackDb:n,trackDbLoc:e,assemblyName:a,sequenceAdapter:t}){return Object.entries(n.data).map((([r,i])=>{const o=Object.keys(i),s=new Set(["superTrack","compositeTrack","container","view"]);if(o.some((n=>s.has(n))))return;const c=[];let l=r;do{l=n.data[l]?.data.parent||"",l&&(l=l.split(" ")[0],c.push(n.data[l]))}while(l);c.reverse();const h=function({track:n,categories:e,trackDbLoc:a,trackDb:t,sequenceAdapter:r}){const i=n.data.type||t.data[n.data.parent||""]?.data.type||"",o=n.data.shortLabel||"",s=n.data.bigDataUrl||"",c=n.data.bigDataIndex||"",l=(0,d.isUriLocation)(a);let h=i.split(" ")[0]||"";"bam"===h&&s.toLowerCase().endsWith("cram")&&(h="cram");const u=l?p(s,a):f(s);switch(h){case"bam":return{type:"AlignmentsTrack",name:n.data.longLabel,description:n.data.longLabel,category:e,adapter:{type:"BamAdapter",bamLocation:u,index:{location:l?b(c,`${s}.bai`,a):f(c,`${s}.bai`)}}};case"cram":return{type:"AlignmentsTrack",name:o,description:n.data.longLabel,category:e,adapter:{type:"CramAdapter",cramLocation:u,craiLocation:l?b(c,`${s}.crai`,a):f(c,`${s}.crai`),sequenceAdapter:r}};case"bigBarChart":case"bigBed":case"bigGenePred":case"bigChain":case"bigInteract":case"bigMaf":case"bigNarrowPeak":case"bigPsl":return{type:"FeatureTrack",name:o,description:n.data.longLabel,category:e,adapter:{type:"BigBedAdapter",bigBedLocation:u}};case"bigWig":return{type:"QuantitativeTrack",name:o,description:n.data.longLabel,category:e,adapter:{type:"BigWigAdapter",bigWigLocation:u}};case"vcfTabix":return{type:"VariantTrack",name:o,description:n.data.longLabel,category:e,adapter:{type:"VcfTabixAdapter",vcfGzLocation:u,index:{location:l?b(c,`${s}.tbi`,a):f(c,`${s}.tbi`)}}};case"hic":return{type:"HicTrack",name:o,description:n.data.longLabel,category:e,adapter:{type:"HicAdapter",hicLocation:u}};default:return(0,m.generateUnknownTrackConf)(o,h,e)}}({track:i,categories:c.map((n=>n?.data.shortLabel)).filter((n=>!!n)),trackDbLoc:e,trackDb:n,sequenceAdapter:t});return{...h,trackId:`ucsc-trackhub-${(0,d.objectHash)(h)}`,assemblyNames:[a]}})).filter(d.notEmpty)}"ailMel1\nallMis1\nanoCar1\nanoCar2\nanoGam1\nanoGam3\napiMel1\napiMel2\naplCal1\naptMan1\naquChr2\nbalAcu1\nbisBis1\nbosTau2\nbosTau3\nbosTau4\nbosTau6\nbosTau7\nbosTau8\nbraFlo1\ncaeJap1\ncaePb1\ncaePb2\ncaeRem2\ncaeRem3\ncalJac1\ncalJac3\ncalMil1\ncanFam1\ncanFam3\ncavPor3\ncb3\nce10\nce11\nce2\nce4\nce6\ncerSim1\nchlSab2\nchoHof1\nchrPic1\nci1\nci2\nci3\ncriGri1\ncriGriChoV1\ndanRer10\ndanRer11\ndanRer3\ndanRer4\ndanRer5\ndanRer6\ndanRer7\ndasNov3\ndipOrd1\ndm1\ndm2\ndm3\ndm6\ndp2\ndp3\ndroAna1\ndroAna2\ndroEre1\ndroGri1\ndroMoj1\ndroMoj2\ndroPer1\ndroSec1\ndroSim1\ndroVir1\ndroVir2\ndroYak1\ndroYak2\neboVir3\nechTel1\nechTel2\nequCab1\nequCab2\neriEur1\neriEur2\nfelCat3\nfelCat4\nfelCat5\nfelCat8\nfr1\nfr2\nfr3\ngadMor1\ngalGal2\ngalGal3\ngalGal4\ngalGal5\ngalGal6\ngalVar1\ngasAcu1\ngeoFor1\ngorGor3\ngorGor4\ngorGor5\nhetGla1\nhetGla2\nhg16\nhg18\nhg19\nhg38\nlatCha1\nloxAfr3\nmacEug2\nmacFas5\nmanPen1\nmelGal1\nmelGal5\nmelUnd1\nmicMur1\nmicMur2\nmm10\nmm7\nmm8\nmm9\nmonDom2\nmonDom4\nmonDom5\nmusFur1\nmyoLuc2\nnanPar1\nnasLar1\nnomLeu1\nnomLeu2\nnomLeu3\nochPri2\nochPri3\noreNil2\nornAna1\nornAna2\noryCun2\noryLat2\notoGar3\noviAri1\noviAri3\noviAri4\npanPan1\npanPan2\npanTro1\npanTro2\npanTro3\npanTro4\npanTro5\npanTro6\npapAnu2\npapHam1\npetMar1\npetMar2\nponAbe2\nponAbe3\npriPac1\nproCap1\npteVam1\nrheMac2\nrheMac3\nrheMac8\nrhiRox1\nrn4\nrn5\nrn6\nsacCer1\nsacCer2\nsacCer3\nsaiBol1\nsarHar1\nsorAra1\nsorAra2\nspeTri2\nstrPur1\nstrPur2\nsusScr11\nsusScr2\nsusScr3\ntaeGut1\ntaeGut2\ntarSyr1\ntarSyr2\ntetNig1\ntetNig2\nthaSir1\ntriMan1\ntupBel1\nturTru2\nventer1\nvicPac1\nvicPac2\nxenLae2\nxenTro1\nxenTro2\nxenTro3\nxenTro7\nxenTro9".split(/\r?\n/);var y=a(68584),w=a(32761);function k(n,e){return new URL(n,e).href}async function L(n){const e=(0,d.getSession)(n),a=[];try{const t=(0,y.getConf)(n,"hubTxtLocation"),r=await(0,h.openLocation)(t).readFile("utf8"),i=k(t.uri,t.baseUri),{assemblyManager:o}=e;if(r.includes("useOneFile on")){const a=new l(r),{genome:s,tracks:c}=a,d=s.name;o.get(d)||e.addSessionAssembly({name:d,sequence:{type:"ReferenceSequenceTrack",trackId:`${d}-${(0,w.Ak)()}`,adapter:{type:"TwoBitAdapter",twoBitLocation:{uri:k(s.data.twoBitPath,i)},chromSizesLocation:{uri:k(s.data.chromSizes,i)}}}});const h=o.get(d),m=g({trackDb:c,trackDbLoc:t,assemblyName:d,sequenceAdapter:(0,y.getConf)(h,["sequence","adapter"])});n.addTrackConfs(m)}else{const i=new c(r).data.genomesFile;if(!i)throw new Error("genomesFile not found on hub");const l=k(t.uri,t.baseUri),d=l?{uri:k(i,l),locationType:"UriLocation"}:{localPath:i,locationType:"LocalPathLocation"},m=await async function(n){const e=await(0,h.openLocation)(n).readFile("utf8");return new s(e)}(d),p={};for(const[e,t]of Object.entries(m.data)){const r=(0,y.getConf)(n,"assemblyNames");if(r.length>0&&!r.includes(e))continue;const s=o.get(e);if(!s){a.push(e);continue}const c=t.data.trackDb;if(!c)throw new Error("genomesFile not found on hub");const d=new URL(i,l),h=l?{uri:new URL(c,d).href,locationType:"UriLocation"}:{localPath:c,locationType:"LocalPathLocation"},m=g({trackDb:await u(h),trackDbLoc:h,assemblyName:e,sequenceAdapter:(0,y.getConf)(s,["sequence","adapter"])});n.addTrackConfs(m),p[e]=m.length}const b=Object.entries(p),f=b.length?`Loaded data from these assemblies: ${b.map((([n,e])=>`${n} (${e} tracks)`)).join(", ")}`:"",w=a.length?`Skipped data from these assemblies: ${a.join(", ")}`:"";e.notify([f,w].filter((n=>!!n)).join(". "),"success")}}catch(a){console.error(a),e.notifyError(`${(0,y.getConf)(n,"name")}: "${a}"`,a),e.breakConnection?.(n.configuration)}}}}]);
+//# sourceMappingURL=8435.484d30f8.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8435.484d30f8.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8435.484d30f8.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/ucsc-hub/src/raStanza.ts","../../../node_modules/@gmod/ucsc-hub/src/raFile.ts","../../../node_modules/@gmod/ucsc-hub/src/util.ts","../../../node_modules/@gmod/ucsc-hub/src/trackDbFile.ts","../../../node_modules/@gmod/ucsc-hub/src/genomesFile.ts","../../../node_modules/@gmod/ucsc-hub/src/hubFile.ts","../../../node_modules/@gmod/ucsc-hub/src/singleFileHub.ts","../../../plugins/data-management/src/ucsc-trackhub/ucscTrackHub.ts","../../../plugins/data-management/src/ucsc-trackhub/ucscAssemblies.ts","../../../plugins/data-management/src/ucsc-trackhub/doConnect.ts"],"sourcesContent":["/**\n * Class representing an ra file stanza. Each stanza line is split into its key\n * and value and stored as a Map, so the usual Map methods can be used on the\n * stanza.\n */\nexport default class RaStanza {\n  data: Record<string, string> = {}\n\n  name?: string\n\n  nameKey?: string\n\n  constructor(\n    stanza: string | string[] = [],\n    options?: { checkIndent?: boolean; skipValidation?: boolean },\n  ) {\n    const { checkIndent = true, skipValidation = false } = options ?? {}\n    let stanzaLines: string[]\n    if (typeof stanza === 'string') {\n      stanzaLines = stanza.trimEnd().split(/\\r?\\n/)\n    } else if (stanza) {\n      stanzaLines = stanza\n    } else {\n      stanzaLines = []\n    }\n\n    let currentIndent: string | undefined\n\n    let continuedLine: string | undefined\n    for (const line of stanzaLines) {\n      if (line === '') {\n        throw new Error('Invalid stanza, contained blank lines')\n      }\n      if (line.trim().startsWith('#')) {\n        continue\n      }\n      if (line.trimEnd().endsWith('\\\\')) {\n        const trimmedLine = line.trimEnd().slice(0, -1)\n        if (continuedLine) {\n          continuedLine += trimmedLine.trimStart()\n        } else {\n          continuedLine = trimmedLine\n        }\n        continue\n      }\n      let combinedLine = line\n      if (continuedLine) {\n        combinedLine = continuedLine + combinedLine.trimStart()\n        continuedLine = undefined\n      }\n      if (currentIndent ?? checkIndent) {\n        const indent = combinedLine.match(/^([ \\t]+)/)\n        if (currentIndent === undefined) {\n          if (indent) {\n            ;[, currentIndent] = indent\n          } else {\n            currentIndent = ''\n          }\n        } else if (\n          (currentIndent === '' && indent !== null) ||\n          (currentIndent && indent && currentIndent !== indent[1])\n        ) {\n          throw new Error('Inconsistent indentation of stanza')\n        }\n      } else {\n        currentIndent = ''\n      }\n      const trimmedLine = combinedLine.trim()\n      const sep = trimmedLine.indexOf(' ')\n      if (sep === -1) {\n        if (!this.nameKey) {\n          throw new Error(\n            'First line in a stanza must have both a key and a value',\n          )\n        }\n        // Adding a key that already exists and has no value is a no-op\n        if (this.data[trimmedLine]) {\n          continue\n        }\n        this.data[trimmedLine] = ''\n        continue\n      }\n      const key = trimmedLine.slice(0, sep)\n      const value = trimmedLine.slice(sep + 1)\n      if (this.data[key] && value !== this.data[key]) {\n        throw new Error(\n          'Got duplicate key with a different value in stanza: ' +\n            `\"${key}\" key has both ${this.data[key]} and ${value}`,\n        )\n      }\n      if (!this.nameKey) {\n        this.nameKey = key\n        this.name = trimmedLine.slice(sep + 1)\n      }\n      this.data[key] = value\n    }\n\n    if (!skipValidation) {\n      this.validate()\n    }\n  }\n\n  protected validate() {}\n}\n","import RaStanza from './raStanza'\n\n/**\n * Class representing an ra file. Each file is composed of multiple stanzas, and\n * each stanza is separated by one or more blank lines. Each stanza is stored in\n * a Map with the key being the value of the first key-value pair in the stanza.\n * The usual Map methods can be used on the file. An additional method `add()`\n * is available to take a raw line of text and break it up into a key and value\n * and add them to the class. This should be favored over `set()` when possible,\n * as it performs more validity checks than using `set()`.\n * @extends Map\n * @property {undefined|string} nameKey - The key of the first line of all the\n * stanzas (`undefined` if the stanza has no lines yet).\n * @throws {Error} Throws if an empty stanza is added, if the key in the first\n * key-value pair of each stanze isn't the same, or if two stanzas have the same\n * value for the key-value pair in their first lines.\n * @param {(string|string[])} [raFile=[]] - An ra file, either as a single\n * string or an array of strings with one stanza per entry. Supports both LF\n * and CRLF line terminators.\n * @param {object} options\n * @param {boolean} options.checkIndent [true] - Check if a the stanzas within\n * the file are indented consistently and keep track of the indentation\n */\nexport default class RaFile {\n  data: Record<string, RaStanza | undefined> = {}\n\n  nameKey?: string\n\n  constructor(\n    raFile: string | string[] = [],\n    options?: { checkIndent?: boolean; skipValidation?: boolean },\n  ) {\n    const { checkIndent = true, skipValidation = false } = options ?? {}\n    let stanzas: string[]\n    if (typeof raFile === 'string') {\n      stanzas = raFile.trimEnd().split(/(?:[\\t ]*\\r?\\n){2,}/)\n    } else if (raFile) {\n      stanzas = raFile\n    } else {\n      stanzas = []\n    }\n    for (const stanza of stanzas) {\n      if (stanza === '') {\n        throw new Error('Invalid stanza, was empty')\n      }\n      if (stanza.trim().startsWith('#')) {\n        const stanzaLines = stanza\n          .trimEnd()\n          .split(/\\r?\\n/)\n          .map(line => line.trim())\n        if (stanzaLines.every(line => line.startsWith('#'))) {\n          continue\n        }\n      }\n      const raStanza = new RaStanza(stanza, { checkIndent })\n      if (!this.nameKey) {\n        this.nameKey = raStanza.nameKey\n      } else if (raStanza.nameKey !== this.nameKey) {\n        throw new Error(\n          'The first line in each stanza must have the same key. ' +\n            `Saw both ${this.nameKey} and ${raStanza.nameKey}`,\n        )\n      }\n      if (!raStanza.name) {\n        throw new Error(`No stanza name: ${raStanza.name}`)\n      }\n      if (this.data[raStanza.name]) {\n        throw new Error(`Got duplicate stanza name: ${raStanza.name}`)\n      }\n\n      this.data[raStanza.name] = raStanza\n    }\n\n    if (!skipValidation) {\n      this.validate()\n    }\n  }\n\n  protected validate() {}\n}\n","import RaStanza from './raStanza'\n\n// validate that all required fields are present in the map\nexport function validateRequiredFieldsArePresent(\n  map: RaStanza,\n  requiredFields: string[],\n  description = '',\n) {\n  const missingFields: string[] = []\n  for (const field of requiredFields) {\n    if (!map.data[field]) {\n      missingFields.push(field)\n    }\n  }\n  if (missingFields.length > 0) {\n    throw new Error(\n      `${description} is missing required entr${\n        missingFields.length === 1 ? 'y' : 'ies'\n      }: ${missingFields.join(', ')}`,\n    )\n  }\n}\n","import RaFile from './raFile'\nimport { validateRequiredFieldsArePresent } from './util'\n\n/**\n * Class representing a genomes.txt file.\n * @extends RaFile\n * @param {(string|string[])} [trackDbFile=[]] - A trackDb.txt file as a string\n * @throws {Error} Throws if \"track\" is not the first key in each track or if a\n * track is missing required keys\n */\nexport default class TrackDbFile extends RaFile {\n  constructor(\n    trackDbFile: string,\n    options?: ConstructorParameters<typeof RaFile>[1],\n  ) {\n    super(trackDbFile, { ...options, checkIndent: false })\n  }\n\n  protected validate() {\n    if (this.nameKey !== 'track') {\n      throw new Error(\n        `trackDb has \"${this.nameKey}\" instead of \"track\" as the first line in each track`,\n      )\n    }\n    for (const [trackName, track] of Object.entries(this.data)) {\n      const trackKeys = Object.keys(track!.data)\n      validateRequiredFieldsArePresent(\n        track!,\n        ['track', 'shortLabel'],\n        `Track ${trackName}`,\n      )\n\n      const parentTrackKeys = new Set([\n        'superTrack',\n        'compositeTrack',\n        'container',\n        'view',\n      ])\n      if (!trackKeys.some(key => parentTrackKeys.has(key))) {\n        if (!trackKeys.includes('bigDataUrl')) {\n          throw new Error(\n            `Track ${trackName} is missing required key \"bigDataUrl\"`,\n          )\n        }\n        if (!trackKeys.includes('type')) {\n          const settingsKeys = Object.keys(this.settings(trackName))\n          if (!settingsKeys.includes('type')) {\n            throw new Error(\n              `Neither track ${trackName} nor any of its parent tracks have the required key \"type\"`,\n            )\n          }\n        }\n      }\n      let currentTrackName: string | undefined = trackName\n      do {\n        // @ts-expect-error\n        currentTrackName = this.data[currentTrackName]?.parent as\n          | string\n          | undefined\n        if (currentTrackName) {\n          ;[currentTrackName] = currentTrackName.split(' ')\n        }\n      } while (currentTrackName)\n      const currentTrack = this.data[trackName]\n      if (currentTrack) {\n        this.data[trackName] = currentTrack\n      }\n    }\n  }\n\n  /**\n   * Gets all track entries including those of parent tracks, with closer\n   * entries overriding more distant ones\n   * @param {string} trackName The name of a track\n   * @throws {Error} Throws if track name does not exist in the trackDb\n   */\n  settings(trackName: string) {\n    if (!this.data[trackName]) {\n      throw new Error(`Track ${trackName} does not exist`)\n    }\n    const parentTracks = [trackName]\n    let currentTrackName: string | undefined = trackName\n    do {\n      // @ts-expect-error\n      currentTrackName = this.data[currentTrackName]?.parent as\n        | string\n        | undefined\n      if (currentTrackName) {\n        parentTracks.push(currentTrackName)\n      }\n    } while (currentTrackName)\n    const settings = {} as Record<string, unknown>\n    parentTracks.reverse()\n    for (const parentTrack of parentTracks) {\n      const ret = this.data[parentTrack]\n      if (ret) {\n        for (const [key, value] of Object.entries(ret)) {\n          settings[key] = value\n        }\n      }\n    }\n    return settings\n  }\n}\n","import RaFile from './raFile'\nimport { validateRequiredFieldsArePresent } from './util'\n\n/**\n * Class representing a genomes.txt file.\n * @extends RaFile\n * @param {(string|string[])} [genomesFile=[]] - A genomes.txt file as a string\n * @throws {Error} Throws if the first line of the hub.txt file doesn't start\n * with \"genome <genome_name>\" or if it has invalid entries\n */\nexport default class GenomesFile extends RaFile {\n  public validate(requiredFields = ['genome', 'trackDb']) {\n    // TODO: check if genome is hosted by UCSC and if not, require twoBitPath and groups\n\n    if (this.nameKey !== 'genome') {\n      throw new Error(\n        'Genomes file must begin with a line like \"genome <genome_name>\"',\n      )\n    }\n\n    for (const [genomeName, genome] of Object.entries(this.data)) {\n      validateRequiredFieldsArePresent(\n        genome!,\n        requiredFields,\n        `genome ${genomeName}`,\n      )\n    }\n  }\n}\n","import RaStanza from './raStanza'\nimport { validateRequiredFieldsArePresent } from './util'\n\n/**\n * Class representing a hub.txt file.\n * @extends RaStanza\n * @param {(string|string[])} [hubFile=[]] - A hub.txt file as a string\n * @throws {Error} Throws if the first line of the hub.txt file doesn't start\n * with \"hub <hub_name>\", if it has invalid entries, or is missing required\n * entries\n */\nexport default class HubFile extends RaStanza {\n  protected validate() {\n    validateRequiredFieldsArePresent(\n      this,\n      ['hub', 'shortLabel', 'longLabel', 'genomesFile', 'email'],\n      'Hub file',\n    )\n  }\n}\n","import RaStanza from './raStanza'\nimport TrackDbFile from './trackDbFile'\nimport { validateRequiredFieldsArePresent } from './util'\n\n/**\n * Class representing a \"single-file\" hub.txt file that contains all the\n * sections of a hub in a single file.\n */\nexport default class SingleFileHub {\n  public genome: RaStanza\n\n  public tracks: TrackDbFile\n\n  public hubData: RaStanza\n\n  constructor(hubText: string) {\n    const [hubSection, genomeSection, ...trackSections] = hubText\n      .trimEnd()\n      .split(/(?:[\\t ]*\\r?\\n){2,}/)\n    this.hubData = new RaStanza(hubSection)\n    this.validateHub()\n\n    this.genome = new RaStanza(genomeSection)\n    this.validateGenomeSection()\n\n    this.tracks = new TrackDbFile(trackSections.join('\\n\\n'), {\n      skipValidation: false,\n    })\n  }\n\n  protected validateHub() {\n    if (this.hubData.nameKey !== 'hub') {\n      throw new Error('Hub file must begin with a line like \"hub <hub_name>\"')\n    }\n\n    validateRequiredFieldsArePresent(this.hubData, [\n      'hub',\n      'shortLabel',\n      'longLabel',\n      'email',\n      'descriptionUrl',\n    ])\n  }\n\n  protected validateGenomeSection() {\n    if (this.genome.nameKey !== 'genome') {\n      throw new Error(\n        'Genomes file must begin with a line like \"genome <genome_name>\"',\n      )\n    }\n  }\n}\n","import {\n  FileLocation,\n  isUriLocation,\n  notEmpty,\n  objectHash,\n} from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { generateUnknownTrackConf } from '@jbrowse/core/util/tracks'\nimport { RaStanza, GenomesFile, TrackDbFile } from '@gmod/ucsc-hub'\n\nexport async function fetchGenomesFile(genomesLoc: FileLocation) {\n  const genomesFileText = await openLocation(genomesLoc).readFile('utf8')\n  return new GenomesFile(genomesFileText)\n}\n\nexport async function fetchTrackDbFile(trackDbLoc: FileLocation) {\n  const text = await openLocation(trackDbLoc).readFile('utf8')\n  return new TrackDbFile(text)\n}\n\nexport function makeLoc(\n  first: string,\n  base: { uri: string; baseUri?: string },\n) {\n  return {\n    uri: new URL(first, new URL(base.uri, base.baseUri)).href,\n    locationType: 'UriLocation',\n  }\n}\n\nexport function makeLocAlt(first: string, alt: string, base: { uri: string }) {\n  return first ? makeLoc(first, base) : makeLoc(alt, base)\n}\n\nexport function makeLoc2(first: string, alt?: string) {\n  return first\n    ? {\n        uri: first,\n        locationType: 'LocalPath',\n      }\n    : {\n        uri: alt,\n        locationType: 'UriLocation',\n      }\n}\n\nexport function generateTracks({\n  trackDb,\n  trackDbLoc,\n  assemblyName,\n  sequenceAdapter,\n}: {\n  trackDb: TrackDbFile\n  trackDbLoc: FileLocation\n  assemblyName: string\n  sequenceAdapter: any\n}) {\n  return Object.entries(trackDb.data)\n    .map(([trackName, track]) => {\n      const trackKeys = Object.keys(track!)\n      const parentTrackKeys = new Set([\n        'superTrack',\n        'compositeTrack',\n        'container',\n        'view',\n      ])\n      if (trackKeys.some(key => parentTrackKeys.has(key))) {\n        return undefined\n      }\n      const parentTracks = []\n      let currentTrackName = trackName\n      do {\n        currentTrackName = trackDb.data[currentTrackName]?.data.parent || ''\n        if (currentTrackName) {\n          currentTrackName = currentTrackName.split(' ')[0]!\n          parentTracks.push(trackDb.data[currentTrackName])\n        }\n      } while (currentTrackName)\n      parentTracks.reverse()\n      const categories = parentTracks\n        .map(p => p?.data.shortLabel)\n        .filter((f): f is string => !!f)\n      const res = makeTrackConfig({\n        track: track!,\n        categories,\n        trackDbLoc,\n        trackDb,\n        sequenceAdapter,\n      })\n      return {\n        ...res,\n        trackId: `ucsc-trackhub-${objectHash(res)}`,\n        assemblyNames: [assemblyName],\n      }\n    })\n    .filter(notEmpty)\n}\n\nfunction makeTrackConfig({\n  track,\n  categories,\n  trackDbLoc,\n  trackDb,\n  sequenceAdapter,\n}: {\n  track: RaStanza\n  categories: string[]\n  trackDbLoc: FileLocation\n  trackDb: TrackDbFile\n  sequenceAdapter: any\n}) {\n  const trackType =\n    track.data.type || trackDb.data[track.data.parent || '']?.data.type || ''\n  const name = track.data.shortLabel || ''\n  const bigDataUrl = track.data.bigDataUrl || ''\n  const bigDataIdx = track.data.bigDataIndex || ''\n  const isUri = isUriLocation(trackDbLoc)\n  let baseTrackType = trackType.split(' ')[0] || ''\n  if (baseTrackType === 'bam' && bigDataUrl.toLowerCase().endsWith('cram')) {\n    baseTrackType = 'cram'\n  }\n  const bigDataLocation = isUri\n    ? makeLoc(bigDataUrl, trackDbLoc)\n    : makeLoc2(bigDataUrl)\n\n  switch (baseTrackType) {\n    case 'bam':\n      return {\n        type: 'AlignmentsTrack',\n        name: track.data.longLabel,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'BamAdapter',\n          bamLocation: bigDataLocation,\n          index: {\n            location: isUri\n              ? makeLocAlt(bigDataIdx, `${bigDataUrl}.bai`, trackDbLoc)\n              : makeLoc2(bigDataIdx, `${bigDataUrl}.bai`),\n          },\n        },\n      }\n\n    case 'cram':\n      return {\n        type: 'AlignmentsTrack',\n        name,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'CramAdapter',\n          cramLocation: bigDataLocation,\n          craiLocation: isUri\n            ? makeLocAlt(bigDataIdx, `${bigDataUrl}.crai`, trackDbLoc)\n            : makeLoc2(bigDataIdx, `${bigDataUrl}.crai`),\n          sequenceAdapter,\n        },\n      }\n    case 'bigBarChart':\n    case 'bigBed':\n    case 'bigGenePred':\n    case 'bigChain':\n    case 'bigInteract':\n    case 'bigMaf':\n    case 'bigNarrowPeak':\n    case 'bigPsl':\n      return {\n        type: 'FeatureTrack',\n        name,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'BigBedAdapter',\n          bigBedLocation: bigDataLocation,\n        },\n      }\n    case 'bigWig':\n      return {\n        type: 'QuantitativeTrack',\n        name,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'BigWigAdapter',\n          bigWigLocation: bigDataLocation,\n        },\n      }\n\n    case 'vcfTabix':\n      return {\n        type: 'VariantTrack',\n        name,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'VcfTabixAdapter',\n          vcfGzLocation: bigDataLocation,\n          index: {\n            location: isUri\n              ? makeLocAlt(bigDataIdx, `${bigDataUrl}.tbi`, trackDbLoc)\n              : makeLoc2(bigDataIdx, `${bigDataUrl}.tbi`),\n          },\n        },\n      }\n\n    case 'hic':\n      return {\n        type: 'HicTrack',\n        name,\n        description: track.data.longLabel,\n        category: categories,\n        adapter: {\n          type: 'HicAdapter',\n          hicLocation: bigDataLocation,\n        },\n      }\n\n    // unsupported types\n    //     case 'peptideMapping':\n    //     case 'gvf':\n    //     case 'ld2':\n    //     case 'narrowPeak':\n    //     case 'wig':\n    //     case 'wigMaf':\n    //     case 'halSnake':\n    //     case 'bed':\n    //     case 'bed5FloatScore':\n    //     case 'bedGraph':\n    //     case 'bedRnaElements':\n    //     case 'broadPeak':\n    //     case 'coloredExon':\n    default:\n      return generateUnknownTrackConf(name, baseTrackType, categories)\n  }\n}\n\nexport { default as ucscAssemblies } from './ucscAssemblies'\n","// These are the assemblies for which there is a sequence file located at\n// http://hgdownload.soe.ucsc.edu/goldenPath/${assemblyName}/bigZips/${assemblyName}.2bit\n// This list was generated by `getUcscAssemblies.js`\n\nexport default `ailMel1\nallMis1\nanoCar1\nanoCar2\nanoGam1\nanoGam3\napiMel1\napiMel2\naplCal1\naptMan1\naquChr2\nbalAcu1\nbisBis1\nbosTau2\nbosTau3\nbosTau4\nbosTau6\nbosTau7\nbosTau8\nbraFlo1\ncaeJap1\ncaePb1\ncaePb2\ncaeRem2\ncaeRem3\ncalJac1\ncalJac3\ncalMil1\ncanFam1\ncanFam3\ncavPor3\ncb3\nce10\nce11\nce2\nce4\nce6\ncerSim1\nchlSab2\nchoHof1\nchrPic1\nci1\nci2\nci3\ncriGri1\ncriGriChoV1\ndanRer10\ndanRer11\ndanRer3\ndanRer4\ndanRer5\ndanRer6\ndanRer7\ndasNov3\ndipOrd1\ndm1\ndm2\ndm3\ndm6\ndp2\ndp3\ndroAna1\ndroAna2\ndroEre1\ndroGri1\ndroMoj1\ndroMoj2\ndroPer1\ndroSec1\ndroSim1\ndroVir1\ndroVir2\ndroYak1\ndroYak2\neboVir3\nechTel1\nechTel2\nequCab1\nequCab2\neriEur1\neriEur2\nfelCat3\nfelCat4\nfelCat5\nfelCat8\nfr1\nfr2\nfr3\ngadMor1\ngalGal2\ngalGal3\ngalGal4\ngalGal5\ngalGal6\ngalVar1\ngasAcu1\ngeoFor1\ngorGor3\ngorGor4\ngorGor5\nhetGla1\nhetGla2\nhg16\nhg18\nhg19\nhg38\nlatCha1\nloxAfr3\nmacEug2\nmacFas5\nmanPen1\nmelGal1\nmelGal5\nmelUnd1\nmicMur1\nmicMur2\nmm10\nmm7\nmm8\nmm9\nmonDom2\nmonDom4\nmonDom5\nmusFur1\nmyoLuc2\nnanPar1\nnasLar1\nnomLeu1\nnomLeu2\nnomLeu3\nochPri2\nochPri3\noreNil2\nornAna1\nornAna2\noryCun2\noryLat2\notoGar3\noviAri1\noviAri3\noviAri4\npanPan1\npanPan2\npanTro1\npanTro2\npanTro3\npanTro4\npanTro5\npanTro6\npapAnu2\npapHam1\npetMar1\npetMar2\nponAbe2\nponAbe3\npriPac1\nproCap1\npteVam1\nrheMac2\nrheMac3\nrheMac8\nrhiRox1\nrn4\nrn5\nrn6\nsacCer1\nsacCer2\nsacCer3\nsaiBol1\nsarHar1\nsorAra1\nsorAra2\nspeTri2\nstrPur1\nstrPur2\nsusScr11\nsusScr2\nsusScr3\ntaeGut1\ntaeGut2\ntarSyr1\ntarSyr2\ntetNig1\ntetNig2\nthaSir1\ntriMan1\ntupBel1\nturTru2\nventer1\nvicPac1\nvicPac2\nxenLae2\nxenTro1\nxenTro2\nxenTro3\nxenTro7\nxenTro9`.split(/\\r?\\n/)\n","import { HubFile, SingleFileHub } from '@gmod/ucsc-hub'\nimport {\n  generateTracks,\n  fetchGenomesFile,\n  fetchTrackDbFile,\n} from './ucscTrackHub'\n\nimport { AnyConfigurationModel, getConf } from '@jbrowse/core/configuration'\nimport { FileLocation, getSession } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { nanoid } from '@jbrowse/core/util/nanoid'\n\nfunction resolve(uri: string, baseUri: string) {\n  return new URL(uri, baseUri).href\n}\n\nexport async function doConnect(self: {\n  configuration: AnyConfigurationModel\n  addTrackConfs: (arg: Record<string, unknown>[]) => void\n}) {\n  const session = getSession(self)\n  const notLoadedAssemblies = [] as string[]\n  try {\n    const hubFileLocation = getConf(self, 'hubTxtLocation') as FileLocation\n    const hubFileText = await openLocation(hubFileLocation).readFile('utf8')\n    // @ts-expect-error\n    const hubUri = resolve(hubFileLocation.uri, hubFileLocation.baseUri)\n    const { assemblyManager } = session\n    if (hubFileText.includes('useOneFile on')) {\n      const hub = new SingleFileHub(hubFileText)\n      const { genome, tracks } = hub\n      const genomeName = genome.name!\n\n      const asm = assemblyManager.get(genomeName)\n      if (!asm) {\n        // @ts-expect-error\n        session.addSessionAssembly({\n          name: genomeName,\n          sequence: {\n            type: 'ReferenceSequenceTrack',\n            trackId: `${genomeName}-${nanoid()}`,\n            adapter: {\n              type: 'TwoBitAdapter',\n              twoBitLocation: {\n                uri: resolve(genome.data.twoBitPath!, hubUri),\n              },\n              chromSizesLocation: {\n                uri: resolve(genome.data.chromSizes!, hubUri),\n              },\n            },\n          },\n        })\n      }\n      const asm2 = assemblyManager.get(genomeName)\n      const sequenceAdapter = getConf(asm2!, ['sequence', 'adapter'])\n      const tracksNew = generateTracks({\n        trackDb: tracks,\n        trackDbLoc: hubFileLocation,\n        assemblyName: genomeName,\n        sequenceAdapter,\n      })\n      self.addTrackConfs(tracksNew)\n    } else {\n      const hubFile = new HubFile(hubFileText)\n      const genomeFile = hubFile.data.genomesFile\n      if (!genomeFile) {\n        throw new Error('genomesFile not found on hub')\n      }\n\n      // @ts-expect-error\n      const hubUri = resolve(hubFileLocation.uri, hubFileLocation.baseUri)\n      const genomesFileLocation = hubUri\n        ? {\n            uri: resolve(genomeFile, hubUri),\n            locationType: 'UriLocation' as const,\n          }\n        : {\n            localPath: genomeFile,\n            locationType: 'LocalPathLocation' as const,\n          }\n      const genomesFile = await fetchGenomesFile(genomesFileLocation)\n      const map = {} as Record<string, number>\n      for (const [genomeName, genome] of Object.entries(genomesFile.data)) {\n        const assemblyNames = getConf(self, 'assemblyNames')\n        if (assemblyNames.length > 0 && !assemblyNames.includes(genomeName)) {\n          continue\n        }\n\n        const asm = assemblyManager.get(genomeName)\n        if (!asm) {\n          notLoadedAssemblies.push(genomeName)\n          continue\n        }\n\n        // @ts-expect-error\n        const db = genome.data.trackDb\n        if (!db) {\n          throw new Error('genomesFile not found on hub')\n        }\n        const base = new URL(genomeFile, hubUri)\n        const loc = hubUri\n          ? {\n              uri: new URL(db, base).href,\n              locationType: 'UriLocation' as const,\n            }\n          : {\n              localPath: db,\n              locationType: 'LocalPathLocation' as const,\n            }\n        const trackDb = await fetchTrackDbFile(loc)\n        const sequenceAdapter = getConf(asm, ['sequence', 'adapter'])\n        const tracks = generateTracks({\n          trackDb,\n          trackDbLoc: loc,\n          assemblyName: genomeName,\n          sequenceAdapter,\n        })\n        self.addTrackConfs(tracks)\n        map[genomeName] = tracks.length\n      }\n\n      const loadedAssemblies = Object.entries(map)\n      const str1 = loadedAssemblies.length\n        ? `Loaded data from these assemblies: ${loadedAssemblies\n            .map(([key, val]) => `${key} (${val} tracks)`)\n            .join(', ')}`\n        : ''\n      const str2 = notLoadedAssemblies.length\n        ? `Skipped data from these assemblies: ${notLoadedAssemblies.join(\n            ', ',\n          )}`\n        : ''\n      session.notify([str1, str2].filter(f => !!f).join('. '), 'success')\n    }\n  } catch (e) {\n    console.error(e)\n    session.notifyError(`${getConf(self, 'name')}: \"${e}\"`, e)\n    session.breakConnection?.(self.configuration)\n  }\n}\n"],"names":["RaStanza","constructor","stanza","options","data","checkIndent","skipValidation","stanzaLines","currentIndent","continuedLine","trimEnd","split","line","Error","trim","startsWith","endsWith","trimmedLine","slice","trimStart","combinedLine","undefined","indent","match","sep","indexOf","this","nameKey","key","value","name","validate","RaFile","raFile","stanzas","map","every","raStanza","validateRequiredFieldsArePresent","requiredFields","description","missingFields","field","push","length","join","TrackDbFile","trackDbFile","super","trackName","track","Object","entries","trackKeys","keys","parentTrackKeys","Set","some","has","includes","settings","currentTrackName","parent","currentTrack","parentTracks","reverse","parentTrack","ret","GenomesFile","genomeName","genome","HubFile","SingleFileHub","hubText","hubSection","genomeSection","trackSections","hubData","validateHub","validateGenomeSection","tracks","async","fetchTrackDbFile","trackDbLoc","text","openLocation","readFile","makeLoc","first","base","uri","URL","baseUri","href","locationType","makeLocAlt","alt","makeLoc2","generateTracks","trackDb","assemblyName","sequenceAdapter","res","categories","trackType","type","shortLabel","bigDataUrl","bigDataIdx","bigDataIndex","isUri","isUriLocation","baseTrackType","toLowerCase","bigDataLocation","longLabel","category","adapter","bamLocation","index","location","cramLocation","craiLocation","bigBedLocation","bigWigLocation","vcfGzLocation","hicLocation","generateUnknownTrackConf","makeTrackConfig","p","filter","f","trackId","objectHash","assemblyNames","notEmpty","resolve","doConnect","self","session","getSession","notLoadedAssemblies","hubFileLocation","getConf","hubFileText","hubUri","assemblyManager","hub","get","addSessionAssembly","sequence","nanoid","twoBitLocation","twoBitPath","chromSizesLocation","chromSizes","asm2","tracksNew","addTrackConfs","genomeFile","genomesFile","genomesFileLocation","localPath","genomesLoc","genomesFileText","fetchGenomesFile","asm","db","loc","loadedAssemblies","str1","val","str2","notify","e","console","error","notifyError","breakConnection","configuration"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8483.7fadf4ea.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8483],{38483:(o,i,t)=>{t.r(i),t.d(i,{cardActionAreaClasses:()=>d,default:()=>p,getCardActionAreaUtilityClass:()=>h});var e=t(7552),s=t(93878),r=t(70799),a=t(51148),n=t(60129),c=t(4785),l=t(33761),u=t(85693);function h(o){return(0,u.Ay)("MuiCardActionArea",o)}const d=(0,l.A)("MuiCardActionArea",["root","focusVisible","focusHighlight"]);var A=t(48054),g=t(69500);const f=(0,a.Ay)(A.A,{name:"MuiCardActionArea",slot:"Root",overridesResolver:(o,i)=>i.root})((0,n.A)((({theme:o})=>({display:"block",textAlign:"inherit",borderRadius:"inherit",width:"100%",[`&:hover .${d.focusHighlight}`]:{opacity:(o.vars||o).palette.action.hoverOpacity,"@media (hover: none)":{opacity:0}},[`&.${d.focusVisible} .${d.focusHighlight}`]:{opacity:(o.vars||o).palette.action.focusOpacity}})))),b=(0,a.Ay)("span",{name:"MuiCardActionArea",slot:"FocusHighlight",overridesResolver:(o,i)=>i.focusHighlight})((0,n.A)((({theme:o})=>({overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:o.transitions.create("opacity",{duration:o.transitions.duration.short})})))),p=e.forwardRef((function(o,i){const t=(0,c.b)({props:o,name:"MuiCardActionArea"}),{children:e,className:a,focusVisibleClassName:n,...l}=t,u=t,d=(o=>{const{classes:i}=o;return(0,r.A)({root:["root"],focusHighlight:["focusHighlight"]},h,i)})(u);return(0,g.jsxs)(f,{className:(0,s.A)(d.root,a),focusVisibleClassName:(0,s.A)(n,d.focusVisible),ref:i,ownerState:u,...l,children:[e,(0,g.jsx)(b,{className:d.focusHighlight,ownerState:u})]})}))}}]);
+//# sourceMappingURL=8483.7fadf4ea.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8483.7fadf4ea.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8483.7fadf4ea.chunk.js","mappings":"iTAEO,SAASA,EAA8BC,GAC5C,OAAO,EAAAC,EAAA,IAAqB,oBAAqBD,EACnD,CACA,MACA,GAD8B,EAAAE,EAAA,GAAuB,oBAAqB,CAAC,OAAQ,eAAgB,mB,0BCOnG,MAUMC,GAAqB,EAAAC,EAAA,IAAOC,EAAA,EAAY,CAC5CC,KAAM,oBACNN,KAAM,OACNO,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHpB,EAIxB,EAAAC,EAAA,IAAU,EACXC,YACI,CACJC,QAAS,QACTC,UAAW,UACXC,aAAc,UAEdC,MAAO,OACP,CAAC,YAAY,EAAsBC,kBAAmB,CACpDC,SAAUN,EAAMO,MAAQP,GAAOQ,QAAQC,OAAOC,aAC9C,uBAAwB,CACtBJ,QAAS,IAGb,CAAC,KAAK,EAAsBK,iBAAiB,EAAsBN,kBAAmB,CACpFC,SAAUN,EAAMO,MAAQP,GAAOQ,QAAQC,OAAOG,mBAG5CC,GAA+B,EAAArB,EAAA,IAAO,OAAQ,CAClDE,KAAM,oBACNN,KAAM,iBACNO,kBAAmB,CAACC,EAAOC,IAAWA,EAAOQ,gBAHV,EAIlC,EAAAN,EAAA,IAAU,EACXC,YACI,CACJc,SAAU,SACVC,cAAe,OACfC,SAAU,WACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,EACNjB,aAAc,UACdG,QAAS,EACTe,gBAAiB,eACjBC,WAAYtB,EAAMuB,YAAYC,OAAO,UAAW,CAC9CC,SAAUzB,EAAMuB,YAAYE,SAASC,aAsDzC,EAnDoC,cAAiB,SAAwBC,EAASC,GACpF,MAAMhC,GAAQ,OAAgB,CAC5BA,MAAO+B,EACPjC,KAAM,uBAEF,SACJmC,EAAQ,UACRC,EAAS,sBACTC,KACGC,GACDpC,EACEqC,EAAarC,EACbsC,EAjEkBD,KACxB,MAAM,QACJC,GACED,EAKJ,OAAO,EAAAE,EAAA,GAJO,CACZrC,KAAM,CAAC,QACPO,eAAgB,CAAC,mBAEUlB,EAA+B+C,EAAQ,EAyDpDE,CAAkBH,GAClC,OAAoB,UAAM1C,EAAoB,CAC5CuC,WAAW,EAAAO,EAAA,GAAKH,EAAQpC,KAAMgC,GAC9BC,uBAAuB,EAAAM,EAAA,GAAKN,EAAuBG,EAAQvB,cAC3DiB,IAAKA,EACLK,WAAYA,KACTD,EACHH,SAAU,CAACA,GAAuB,SAAKhB,EAA8B,CACnEiB,UAAWI,EAAQ7B,eACnB4B,WAAYA,MAGlB,G","sources":["../../../node_modules/@mui/material/CardActionArea/cardActionAreaClasses.js","../../../node_modules/@mui/material/CardActionArea/CardActionArea.js"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardActionAreaUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActionArea', slot);\n}\nconst cardActionAreaClasses = generateUtilityClasses('MuiCardActionArea', ['root', 'focusVisible', 'focusHighlight']);\nexport default cardActionAreaClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport cardActionAreaClasses, { getCardActionAreaUtilityClass } from \"./cardActionAreaClasses.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    focusHighlight: ['focusHighlight']\n  };\n  return composeClasses(slots, getCardActionAreaUtilityClass, classes);\n};\nconst CardActionAreaRoot = styled(ButtonBase, {\n  name: 'MuiCardActionArea',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'block',\n  textAlign: 'inherit',\n  borderRadius: 'inherit',\n  // for Safari to work https://github.com/mui/material-ui/issues/36285.\n  width: '100%',\n  [`&:hover .${cardActionAreaClasses.focusHighlight}`]: {\n    opacity: (theme.vars || theme).palette.action.hoverOpacity,\n    '@media (hover: none)': {\n      opacity: 0\n    }\n  },\n  [`&.${cardActionAreaClasses.focusVisible} .${cardActionAreaClasses.focusHighlight}`]: {\n    opacity: (theme.vars || theme).palette.action.focusOpacity\n  }\n})));\nconst CardActionAreaFocusHighlight = styled('span', {\n  name: 'MuiCardActionArea',\n  slot: 'FocusHighlight',\n  overridesResolver: (props, styles) => styles.focusHighlight\n})(memoTheme(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit',\n  opacity: 0,\n  backgroundColor: 'currentcolor',\n  transition: theme.transitions.create('opacity', {\n    duration: theme.transitions.duration.short\n  })\n})));\nconst CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardActionArea'\n  });\n  const {\n    children,\n    className,\n    focusVisibleClassName,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(CardActionAreaRoot, {\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [children, /*#__PURE__*/_jsx(CardActionAreaFocusHighlight, {\n      className: classes.focusHighlight,\n      ownerState: ownerState\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActionArea.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActionArea;"],"names":["getCardActionAreaUtilityClass","slot","generateUtilityClass","generateUtilityClasses","CardActionAreaRoot","styled","ButtonBase","name","overridesResolver","props","styles","root","memoTheme","theme","display","textAlign","borderRadius","width","focusHighlight","opacity","vars","palette","action","hoverOpacity","focusVisible","focusOpacity","CardActionAreaFocusHighlight","overflow","pointerEvents","position","top","right","bottom","left","backgroundColor","transition","transitions","create","duration","short","inProps","ref","children","className","focusVisibleClassName","other","ownerState","classes","composeClasses","useUtilityClasses","clsx"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8526.5dd9c712.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8526],{8526:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var r=n(7552),l=n(20529),o=n(68446),a=n(26842);const i=(0,o.observer)((function(e){const{model:t}=e;return r.createElement("div",null,r.createElement(l.GQ,e),r.createElement(a.A,{model:t}))}))},26842:(e,t,n)=>{n.d(t,{A:()=>h});var r=n(7552),l=n(99546),o=n(68446),a=n(90461);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(null,arguments)}const c=e=>{const{color:t="rgb(255,255,255,0.8)"}=e;return r.createElement("rect",i({},e,(0,l.getFillProps)(t)))},s=(0,o.observer)((function({model:e,rowHeight:t,labelWidth:n,exportSVG:l}){const{needsCustomLegend:o,needsScalebar:a,needsFullHeightScalebar:i,rowHeightTooSmallForScalebar:s,renderColorBoxes:m,sources:u}=e,g=Math.min(t,12),h=t>11,d=m?15:0,f=n+d+5,p=(l?10:0)||(a&&!s?50:0);return u?r.createElement(r.Fragment,null,i?r.createElement(c,{y:0,x:p,width:f,height:(u.length+.25)*t}):null,u.map(((e,n)=>{const l=Math.min(20,t);return r.createElement(r.Fragment,{key:`${e.name}-${n}`},i?null:r.createElement(c,{y:n*t+1,x:p,width:f,height:l}),e.color?r.createElement(c,{y:n*t+1,x:p,width:d,height:o?t:l,color:e.color}):null,h?r.createElement("text",{y:n*t+13,x:p+d+2,fontSize:g},e.name):null)}))):null})),m=(0,o.observer)((({model:e})=>{const{ticks:t,scaleType:n}=e,{width:o}=(0,l.getContainingView)(e),a=`[${t?.values[0]}-${t?.values[1]}]${"log"===n?" (log scale)":""}`,i=(0,l.measureText)(a,14),s=o-i-25;return r.createElement(r.Fragment,null,r.createElement(c,{y:0,x:s,width:i+6,height:16}),r.createElement("text",{y:13,x:s},a))}));var u=n(58474);const g=(0,o.observer)((function({children:e,model:t,exportSVG:n}){const{height:o}=t;return n?e:r.createElement("svg",{style:{position:"absolute",top:0,left:0,pointerEvents:"none",height:o,width:(0,l.getContainingView)(t).width}},e)})),h=(0,o.observer)((function(e){const{model:t,orientation:n,exportSVG:o}=e,{stats:i,needsCustomLegend:c,needsFullHeightScalebar:h,rowHeightTooSmallForScalebar:d,rowHeight:f,sources:p,ticks:b}=t,w=Math.min(f,12),E=f>11,{width:x}=(0,l.getContainingView)(t);if(!i||!p)return null;const v=Math.max(...p.map((e=>(0,l.measureText)(e.name,w))).map((e=>E?e:20)));return r.createElement(g,e,h?r.createElement(r.Fragment,null,r.createElement("g",{transform:`translate(${o?0:(0,u.A3)(t)},0)`},r.createElement(a.A,{model:t,orientation:n})),r.createElement("g",{transform:`translate(${x-v-100},0)`},r.createElement(s,{exportSVG:o,model:t,rowHeight:12,labelWidth:v}))):r.createElement(r.Fragment,null,r.createElement(s,{exportSVG:o,model:t,rowHeight:t.rowHeight,labelWidth:v}),d||c?r.createElement(m,e):p.map(((e,l)=>r.createElement("g",{transform:`translate(0 ${f*l})`,key:`${JSON.stringify(b)}-${l}`},r.createElement(a.A,{model:t,orientation:n}))))))}))},58474:(e,t,n)=>{n.d(t,{A3:()=>c,BO:()=>o,oJ:()=>a});var r=n(99546),l=n(68584);function o(e,t,n=1){const r=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>e-t));let l=0;for(const t of r){const r=Math.max(l,t-n);r>=l&&e.splice(r,0,e.splice(t,1)[0]),l+=1}return e}function a(e,t,n=1){const r=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>t-e));let l=e.length-1;for(const t of r){const r=Math.min(l,t+n);r<=l&&e.splice(r,0,e.splice(t,1)[0]),l-=1}return e}const i=12.8;function c(e){const{prefersOffset:t}=e,{trackLabels:n}=(0,r.getContainingView)(e),o=(0,r.getContainingTrack)(e),a=(0,l.getConf)(o,"name");return"overlapping"!==n||t?10:(0,r.measureText)(a,i)+100}}}]);
+//# sourceMappingURL=8526.5dd9c712.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8526.5dd9c712.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8526.5dd9c712.chunk.js","mappings":"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","sources":["../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/RectBg.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/ColorLegend.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/ScoreLegend.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/YScaleBars.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/util.ts"],"sourcesContent":["import React from 'react'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport YScaleBars from './YScaleBars'\n\nconst MultiLinearWiggleDisplayComponent = observer(function (props: {\n  model: WiggleDisplayModel\n}) {\n  const { model } = props\n\n  return (\n    <div>\n      <BaseLinearDisplayComponent {...props} />\n      <YScaleBars model={model} />\n    </div>\n  )\n})\n\nexport default MultiLinearWiggleDisplayComponent\n","import { getFillProps } from '@jbrowse/core/util'\nimport React from 'react'\n\nconst RectBg = (props: {\n  x: number\n  y: number\n  width: number\n  height: number\n  color?: string\n}) => {\n  const { color = 'rgb(255,255,255,0.8)' } = props\n  return <rect {...props} {...getFillProps(color)} />\n}\n\nexport default RectBg\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport RectBg from './RectBg'\n\nconst ColorLegend = observer(function ({\n  model,\n  rowHeight,\n  labelWidth,\n  exportSVG,\n}: {\n  model: WiggleDisplayModel\n  rowHeight: number\n  labelWidth: number\n  exportSVG?: boolean\n}) {\n  const {\n    needsCustomLegend,\n    needsScalebar,\n    needsFullHeightScalebar,\n    rowHeightTooSmallForScalebar,\n    renderColorBoxes,\n    sources,\n  } = model\n  const svgFontSize = Math.min(rowHeight, 12)\n  const canDisplayLabel = rowHeight > 11\n  const colorBoxWidth = renderColorBoxes ? 15 : 0\n  const legendWidth = labelWidth + colorBoxWidth + 5\n  const svgOffset = exportSVG ? 10 : 0\n  const extraOffset =\n    svgOffset || (needsScalebar && !rowHeightTooSmallForScalebar ? 50 : 0)\n\n  return sources ? (\n    <>\n      {\n        /* 0.25 for hanging letters like g */\n        needsFullHeightScalebar ? (\n          <RectBg\n            y={0}\n            x={extraOffset}\n            width={legendWidth}\n            height={(sources.length + 0.25) * rowHeight}\n          />\n        ) : null\n      }\n      {sources.map((source, idx) => {\n        const boxHeight = Math.min(20, rowHeight)\n        return (\n          <React.Fragment key={`${source.name}-${idx}`}>\n            {needsFullHeightScalebar ? null : (\n              <RectBg\n                y={idx * rowHeight + 1}\n                x={extraOffset}\n                width={legendWidth}\n                height={boxHeight}\n              />\n            )}\n            {source.color ? (\n              <RectBg\n                y={idx * rowHeight + 1}\n                x={extraOffset}\n                width={colorBoxWidth}\n                height={needsCustomLegend ? rowHeight : boxHeight}\n                color={source.color}\n              />\n            ) : null}\n            {canDisplayLabel ? (\n              <text\n                y={idx * rowHeight + 13}\n                x={extraOffset + colorBoxWidth + 2}\n                fontSize={svgFontSize}\n              >\n                {source.name}\n              </text>\n            ) : null}\n          </React.Fragment>\n        )\n      })}\n    </>\n  ) : null\n})\n\nexport default ColorLegend\n","import React from 'react'\nimport { measureText, getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport RectBg from './RectBg'\n\ntype LGV = LinearGenomeViewModel\n\nconst ScoreLegend = observer(({ model }: { model: WiggleDisplayModel }) => {\n  const { ticks, scaleType } = model\n  const { width } = getContainingView(model) as LGV\n  const legend = `[${ticks?.values[0]}-${ticks?.values[1]}]${scaleType === 'log' ? ' (log scale)' : ''}`\n  const len = measureText(legend, 14)\n  const padding = 25\n  const xpos = width - len - padding\n  return (\n    <>\n      <RectBg y={0} x={xpos} width={len + 6} height={16} />\n      <text y={13} x={xpos}>\n        {legend}\n      </text>\n    </>\n  )\n})\n\nexport default ScoreLegend\n","import React from 'react'\nimport { measureText, getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport YScaleBar from '../../shared/YScaleBar'\nimport ColorLegend from './ColorLegend'\nimport ScoreLegend from './ScoreLegend'\nimport { getOffset } from './util'\n\ntype LGV = LinearGenomeViewModel\n\nconst Wrapper = observer(function ({\n  children,\n  model,\n  exportSVG,\n}: {\n  model: WiggleDisplayModel\n  children: React.ReactNode\n  exportSVG?: boolean\n}) {\n  const { height } = model\n  return exportSVG ? (\n    children\n  ) : (\n    <svg\n      style={{\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        pointerEvents: 'none',\n        height,\n        width: getContainingView(model).width,\n      }}\n    >\n      {children}\n    </svg>\n  )\n})\n\nexport const YScaleBars = observer(function (props: {\n  model: WiggleDisplayModel\n  orientation?: string\n  exportSVG?: boolean\n}) {\n  const { model, orientation, exportSVG } = props\n  const {\n    stats,\n    needsCustomLegend,\n    needsFullHeightScalebar,\n    rowHeightTooSmallForScalebar,\n    rowHeight,\n    sources,\n    ticks,\n  } = model\n  const svgFontSize = Math.min(rowHeight, 12)\n  const canDisplayLabel = rowHeight > 11\n  const { width: viewWidth } = getContainingView(model) as LGV\n  const minWidth = 20\n\n  const ready = stats && sources\n  if (!ready) {\n    return null\n  }\n\n  const labelWidth = Math.max(\n    ...sources\n      .map(s => measureText(s.name, svgFontSize))\n      .map(width => (canDisplayLabel ? width : minWidth)),\n  )\n\n  return (\n    <Wrapper {...props}>\n      {needsFullHeightScalebar ? (\n        <>\n          <g transform={`translate(${!exportSVG ? getOffset(model) : 0},0)`}>\n            <YScaleBar model={model} orientation={orientation} />\n          </g>\n          <g transform={`translate(${viewWidth - labelWidth - 100},0)`}>\n            <ColorLegend\n              exportSVG={exportSVG}\n              model={model}\n              rowHeight={12}\n              labelWidth={labelWidth}\n            />\n          </g>\n        </>\n      ) : (\n        <>\n          <ColorLegend\n            exportSVG={exportSVG}\n            model={model}\n            rowHeight={model.rowHeight}\n            labelWidth={labelWidth}\n          />\n\n          {rowHeightTooSmallForScalebar || needsCustomLegend ? (\n            <ScoreLegend {...props} />\n          ) : (\n            sources.map((_source, idx) => (\n              <g\n                transform={`translate(0 ${rowHeight * idx})`}\n                key={`${JSON.stringify(ticks)}-${idx}`}\n              >\n                <YScaleBar model={model} orientation={orientation} />\n              </g>\n            ))\n          )}\n        </>\n      )}\n    </Wrapper>\n  )\n})\n\nexport default YScaleBars\n","import {\n  getContainingTrack,\n  getContainingView,\n  measureText,\n} from '@jbrowse/core/util'\nimport { WiggleDisplayModel } from '../models/model'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\nexport function moveUp(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => a - b)\n  let lastIdx = 0\n  for (const old of idxs) {\n    const idx = Math.max(lastIdx, old - by)\n    if (idx >= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx + 1\n  }\n\n  return arr\n}\n\nexport function moveDown(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => b - a)\n  let lastIdx = arr.length - 1\n  for (const old of idxs) {\n    const idx = Math.min(lastIdx, old + by)\n    if (idx <= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx - 1\n  }\n\n  return arr\n}\n\nconst trackLabelFontSize = 12.8\n\nexport function getOffset(model: WiggleDisplayModel) {\n  const { prefersOffset } = model\n  const { trackLabels } = getContainingView(model) as LinearGenomeViewModel\n  const track = getContainingTrack(model)\n  const trackName = getConf(track, 'name')\n  return trackLabels === 'overlapping' && !prefersOffset\n    ? measureText(trackName, trackLabelFontSize) + 100\n    : 10\n}\n"],"names":["observer","props","model","React","BaseLinearDisplayComponent","YScaleBars","color","_extends","getFillProps","rowHeight","labelWidth","exportSVG","needsCustomLegend","needsScalebar","needsFullHeightScalebar","rowHeightTooSmallForScalebar","renderColorBoxes","sources","svgFontSize","Math","min","canDisplayLabel","colorBoxWidth","legendWidth","extraOffset","RectBg","y","x","width","height","length","map","source","idx","boxHeight","key","name","fontSize","ticks","scaleType","getContainingView","legend","values","len","measureText","xpos","Wrapper","children","style","position","top","left","pointerEvents","orientation","stats","viewWidth","max","s","transform","getOffset","YScaleBar","ColorLegend","ScoreLegend","_source","JSON","stringify","moveUp","arr","sel","by","idxs","l","findIndex","v","sort","a","b","lastIdx","old","splice","moveDown","trackLabelFontSize","prefersOffset","trackLabels","track","getContainingTrack","trackName","getConf"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8528.f68ff14f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8528],{98528:(e,t,r)=>{r.r(t),r.d(t,{default:()=>g});var a=r(7552),n=r(59705),s=r(36715),i=r(1343),l=r(29499),o=r(29629),c=r(33371),m=r(32808),u=r(58507),d=r(5401),v=r(49823),h=r(99546);function f(){return a.createElement("div",null,a.createElement(n.A,{size:20,style:{marginRight:20}}),a.createElement(s.A,{display:"inline"},"Creating SVG"))}function p(e,t){return(0,h.useLocalStorage)(`svg-${e}`,t)}function y({children:e,...t}){return a.createElement("div",null,a.createElement(i.A,t,e))}function g({model:e,handleClose:t}){const r=(0,h.getSession)(e),n="undefined"!=typeof OffscreenCanvas,[i,g]=(0,a.useState)(n),[k,b]=(0,a.useState)(!1),[A,S]=(0,a.useState)(),[E,w]=p("file","jbrowse.svg"),[x,C]=p("tracklabels","offset"),[$,D]=p("theme",r.themeName||"default");return a.createElement(v.Dialog,{open:!0,onClose:t,title:"Export SVG"},a.createElement(l.A,null,A?a.createElement(v.ErrorMessage,{error:A}):k?a.createElement(f,null):null,a.createElement(y,{helperText:"filename",value:E,onChange:e=>{w(e.target.value)}}),a.createElement(y,{select:!0,label:"Track label positioning",variant:"outlined",style:{width:150},value:x,onChange:e=>{C(e.target.value)}},a.createElement(o.A,{value:"offset"},"Offset"),a.createElement(o.A,{value:"overlay"},"Overlay"),a.createElement(o.A,{value:"left"},"Left"),a.createElement(o.A,{value:"none"},"None")),r.allThemes?a.createElement(y,{select:!0,label:"Theme",variant:"outlined",value:$,onChange:e=>{D(e.target.value)}},Object.entries(r.allThemes()).map((([e,t])=>a.createElement(o.A,{key:e,value:e},t.name||"(Unknown name)")))):null,n?a.createElement(c.A,{control:a.createElement(m.A,{checked:i,onChange:()=>{g((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):a.createElement(s.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),a.createElement(u.A,null,a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{b(!0),S(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:E,trackLabels:x,themeName:$}),t()}catch(e){console.error(e),S(e)}finally{b(!1)}}},"Submit")))}},59705:(e,t,r)=>{r.d(t,{A:()=>A});var a=r(7552),n=r(93878),s=r(70799),i=r(64761),l=r(51148),o=r(60129),c=r(4785),m=r(15622),u=r(58520),d=r(72489),v=r(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,p="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,y="string"!=typeof f?i.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,g=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,m.A)(r.color)}`]]}})((0,o.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:p||{animation:`${h} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),k=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),b=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,m.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,o.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:l=!1,size:o=40,style:u,thickness:h=3.6,value:f=0,variant:p="indeterminate",...y}=r,A={...r,color:i,disableShrink:l,size:o,thickness:h,value:f,variant:p},S=(e=>{const{classes:t,variant:r,color:a,disableShrink:n}=e,i={root:["root",r,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(r)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,d.b,t)})(A),E={},w={},x={};if("determinate"===p){const e=2*Math.PI*((44-h)/2);E.strokeDasharray=e.toFixed(3),x["aria-valuenow"]=Math.round(f),E.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,v.jsx)(g,{className:(0,n.A)(S.root,a),style:{width:o,height:o,...w,...u},ownerState:A,ref:t,role:"progressbar",...x,...y,children:(0,v.jsx)(k,{className:S.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,v.jsx)(b,{className:S.circle,style:E,ownerState:A,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>s});var a=r(33761),n=r(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=8528.f68ff14f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8528.f68ff14f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8528.f68ff14f.chunk.js","mappings":"4RAmBA,SAASA,IACP,OACEC,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAgB,CAACC,KAAM,GAAIC,MAAO,CAAEC,YAAa,MAClDJ,EAAAA,cAACK,EAAAA,EAAU,CAACC,QAAQ,UAAS,gBAGnC,CAEA,SAASC,EAAeC,EAAaC,GACnC,OAAOC,EAAAA,EAAAA,iBAAgB,OAAOF,IAAOC,EACvC,CAEA,SAASE,GAAW,SAAEC,KAAaC,IACjC,OACEb,EAAAA,cAAA,WACEA,EAAAA,cAACc,EAAAA,EAAcD,EAAOD,GAG5B,CAEe,SAASG,GAAgB,MACtCC,EAAK,YACLC,IAKA,MAAMC,GAAUC,EAAAA,EAAAA,YAAWH,GACrBI,EAA6C,oBAApBC,iBACxBC,EAAiBC,IAAsBC,EAAAA,EAAAA,UAASJ,IAChDK,EAASC,IAAcF,EAAAA,EAAAA,WAAS,IAChCG,EAAOC,IAAYJ,EAAAA,EAAAA,aACnBK,EAAUC,GAAevB,EAAY,OAAQ,gBAC7CwB,EAAaC,GAAkBzB,EAAY,cAAe,WAC1D0B,EAAWC,GAAgB3B,EAChC,QACAW,EAAQe,WAAa,WAEvB,OACEjC,EAAAA,cAACmC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASpB,EAAaqB,MAAM,cACvCtC,EAAAA,cAACuC,EAAAA,EAAa,KACXZ,EACC3B,EAAAA,cAACwC,EAAAA,aAAY,CAACb,MAAOA,IACnBF,EACFzB,EAAAA,cAACD,EAAc,MACb,KACJC,EAAAA,cAACW,EAAU,CACT8B,WAAW,WACXC,MAAOb,EACPc,SAAUC,IACRd,EAAYc,EAAMC,OAAOH,MAAM,IAGnC1C,EAAAA,cAACW,EAAU,CACTmC,QAAM,EACNC,MAAM,0BACNC,QAAQ,WACR7C,MAAO,CAAE8C,MAAO,KAChBP,MAAOX,EACPY,SAAUC,IACRZ,EAAeY,EAAMC,OAAOH,MAAM,GAGpC1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,UAAS,UACzB1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,WAAU,WAC1B1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,QAAO,QACvB1C,EAAAA,cAACkD,EAAAA,EAAQ,CAACR,MAAM,QAAO,SAExBxB,EAAQiC,UACPnD,EAAAA,cAACW,EAAU,CACTmC,QAAM,EACNC,MAAM,QACNC,QAAQ,WACRN,MAAOT,EACPU,SAAUC,IACRV,EAAaU,EAAMC,OAAOH,MAAM,GAGjCU,OAAOC,QAAQnC,EAAQiC,aAAaG,KAAI,EAAE9C,EAAKC,KAC9CT,EAAAA,cAACkD,EAAAA,EAAQ,CAAC1C,IAAKA,EAAKkC,MAAOlC,GAGvBC,EAAI8C,MAAQ,qBAKlB,KAEHnC,EACCpB,EAAAA,cAACwD,EAAAA,EAAgB,CACfC,QACEzD,EAAAA,cAAC0D,EAAAA,EAAQ,CACPC,QAASrC,EACTqB,SAAUA,KACRpB,GAAmBd,IAAQA,GAAI,IAIrCsC,MAAM,iFAGR/C,EAAAA,cAACK,EAAAA,EAAU,KAAC,yFAMhBL,EAAAA,cAAC4D,EAAAA,EAAa,KACZ5D,EAAAA,cAAC6D,EAAAA,EAAM,CACLb,QAAQ,YACRc,MAAM,YACNC,QAASA,KACP9C,GAAa,GAEhB,UAGDjB,EAAAA,cAAC6D,EAAAA,EAAM,CACLb,QAAQ,YACRc,MAAM,UACNE,KAAK,SACLD,QAASE,UACPvC,GAAW,GACXE,OAASsC,GACT,UACQlD,EAAMmD,UAAU,CACpB7C,kBACAO,WACAE,cACAE,cAEFhB,GACF,CAAE,MAAOmD,GACPC,QAAQ1C,MAAMyC,GACdxC,EAASwC,EACX,CAAE,QACA1C,GAAW,EACb,IAEH,WAMT,C,8JCxJA,MACM4C,EAAyB,IAAS;;;;;;;;EASlCC,EAAuB,IAAS;;;;;;;;;;;;;;;EAoBhCC,EAAoD,iBAA3BF,EAAsC,IAAG;qBACnDA;QACX,KACJG,EAAgD,iBAAzBF,EAAoC,IAAG;qBAC/CA;QACX,KAeJG,GAAuB,QAAO,OAAQ,CAC1CnB,KAAM,sBACNoB,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMF,EAAOC,EAAW/B,SAAU8B,EAAO,SAAQ,OAAWC,EAAWjB,UAAU,GAPvE,EAS1B,QAAU,EACXmB,YACI,CACJ3E,QAAS,eACT4E,SAAU,CAAC,CACTL,MAAO,CACL7B,QAAS,eAEX7C,MAAO,CACLgF,WAAYF,EAAMG,YAAYC,OAAO,eAEtC,CACDR,MAAO,CACL7B,QAAS,iBAEX7C,MAAOqE,GAAmB,CACxBc,UAAW,GAAGhB,8BAEZlB,OAAOC,QAAQ4B,EAAMM,SAASC,QAAO,UAAkClC,KAAI,EAAEQ,MAAW,CAC5Fe,MAAO,CACLf,SAEF3D,MAAO,CACL2D,OAAQmB,EAAMQ,MAAQR,GAAOM,QAAQzB,GAAO4B,gBAI5CC,GAAsB,QAAO,MAAO,CACxCpC,KAAM,sBACNoB,KAAM,MACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOc,KAHnB,CAIzB,CACDtF,QAAS,UAELuF,GAAyB,QAAO,SAAU,CAC9CtC,KAAM,sBACNoB,KAAM,SACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOgB,OAAQhB,EAAO,UAAS,OAAWC,EAAW/B,YAAa+B,EAAWgB,eAAiBjB,EAAOkB,oBAAoB,GAPtG,EAS5B,QAAU,EACXf,YACI,CACJgB,OAAQ,eACRf,SAAU,CAAC,CACTL,MAAO,CACL7B,QAAS,eAEX7C,MAAO,CACLgF,WAAYF,EAAMG,YAAYC,OAAO,uBAEtC,CACDR,MAAO,CACL7B,QAAS,iBAEX7C,MAAO,CAEL+F,gBAAiB,cACjBC,iBAAkB,IAEnB,CACDtB,MAAO,EACLE,gBAC2B,kBAAvBA,EAAW/B,UAAgC+B,EAAWgB,cAC5D5F,MAAOsE,GAAiB,CAEtBa,UAAW,GAAGf,sCA8IpB,EAlIsC,cAAiB,SAA0B6B,EAASC,GACxF,MAAMxB,GAAQ,OAAgB,CAC5BA,MAAOuB,EACP7C,KAAM,yBAEF,UACJ+C,EAAS,MACTxC,EAAQ,UAAS,cACjBiC,GAAgB,EAAK,KACrB7F,EAAO,GAAE,MACTC,EAAK,UACLoG,EAAY,IAAG,MACf7D,EAAQ,EAAC,QACTM,EAAU,mBACPwD,GACD3B,EACEE,EAAa,IACdF,EACHf,QACAiC,gBACA7F,OACAqG,YACA7D,QACAM,WAEIyD,EAjIkB1B,KACxB,MAAM,QACJ0B,EAAO,QACPzD,EAAO,MACPc,EAAK,cACLiC,GACEhB,EACE2B,EAAQ,CACZ1B,KAAM,CAAC,OAAQhC,EAAS,SAAQ,OAAWc,MAC3C8B,IAAK,CAAC,OACNE,OAAQ,CAAC,SAAU,UAAS,OAAW9C,KAAY+C,GAAiB,wBAEtE,OAAO,OAAeW,EAAO,IAAiCD,EAAQ,EAqHtDE,CAAkB5B,GAC5B6B,EAAc,CAAC,EACfC,EAAY,CAAC,EACbC,EAAY,CAAC,EACnB,GAAgB,gBAAZ9D,EAA2B,CAC7B,MAAM+D,EAAgB,EAAIC,KAAKC,KA1KtB,GA0KoCV,GAAa,GAC1DK,EAAYV,gBAAkBa,EAAcG,QAAQ,GACpDJ,EAAU,iBAAmBE,KAAKG,MAAMzE,GACxCkE,EAAYT,iBAAmB,KAAK,IAAMzD,GAAS,IAAMqE,GAAeG,QAAQ,OAChFL,EAAUO,UAAY,gBACxB,CACA,OAAoB,SAAK1C,EAAsB,CAC7C4B,WAAW,OAAKG,EAAQzB,KAAMsB,GAC9BnG,MAAO,CACL8C,MAAO/C,EACPmH,OAAQnH,KACL2G,KACA1G,GAEL4E,WAAYA,EACZsB,IAAKA,EACLiB,KAAM,iBACHR,KACAN,EACH5F,UAAuB,SAAK+E,EAAqB,CAC/CW,UAAWG,EAAQb,IACnBb,WAAYA,EACZwC,QAAS,cACT3G,UAAuB,SAAKiF,EAAwB,CAClDS,UAAWG,EAAQX,OACnB3F,MAAOyG,EACP7B,WAAYA,EACZyC,GArMK,GAsMLC,GAtMK,GAuMLC,GAvMK,GAuMMnB,GAAa,EACxBoB,KAAM,OACNC,YAAarB,OAIrB,G,qECzNO,SAASsB,EAAgClD,GAC9C,OAAO,QAAqB,sBAAuBA,EACrD,CACA,MACA,GADgC,OAAuB,sBAAuB,CAAC,OAAQ,cAAe,gBAAiB,eAAgB,iBAAkB,MAAO,SAAU,oBAAqB,sBAAuB,uB","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/ExportSvgDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\n// locals\nimport { ExportSvgOptions } from '..'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\n\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [trackLabels, setTrackLabels] = useSvgLocal('tracklabels', 'offset')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n        <TextField2\n          select\n          label=\"Track label positioning\"\n          variant=\"outlined\"\n          style={{ width: 150 }}\n          value={trackLabels}\n          onChange={event => {\n            setTrackLabels(event.target.value)\n          }}\n        >\n          <MenuItem value=\"offset\">Offset</MenuItem>\n          <MenuItem value=\"overlay\">Overlay</MenuItem>\n          <MenuItem value=\"left\">Left</MenuItem>\n          <MenuItem value=\"none\">None</MenuItem>\n        </TextField2>\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            variant=\"outlined\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                trackLabels,\n                themeName,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["LoadingMessage","React","CircularProgress","size","style","marginRight","Typography","display","useSvgLocal","key","val","useLocalStorage","TextField2","children","rest","TextField","ExportSvgDialog","model","handleClose","session","getSession","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","useState","loading","setLoading","error","setError","filename","setFilename","trackLabels","setTrackLabels","themeName","setThemeName","Dialog","open","onClose","title","DialogContent","ErrorMessage","helperText","value","onChange","event","target","select","label","variant","width","MenuItem","allThemes","Object","entries","map","name","FormControlLabel","control","Checkbox","checked","DialogActions","Button","color","onClick","type","async","undefined","exportSvg","e","console","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","root","theme","variants","transition","transitions","create","animation","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8535.189d090a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8535],{64111:(e,t,a)=>{a.d(t,{A:()=>y});var r=a(7552),o=a(93878),s=a(70799),l=a(15560),i=a(51148),n=a(60129),d=a(4785),c=a(12667),p=a(69500);const b=(0,i.Ay)("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.stickyHeader&&t.stickyHeader]}})((0,n.A)((({theme:e})=>({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":{...e.typography.body2,padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"},variants:[{props:({ownerState:e})=>e.stickyHeader,style:{borderCollapse:"separate"}}]})))),u="table",y=r.forwardRef((function(e,t){const a=(0,d.b)({props:e,name:"MuiTable"}),{className:i,component:n=u,padding:y="normal",size:k="medium",stickyHeader:A=!1,...m}=a,g={...a,component:n,padding:y,size:k,stickyHeader:A},w=(e=>{const{classes:t,stickyHeader:a}=e,r={root:["root",a&&"stickyHeader"]};return(0,s.A)(r,c.l,t)})(g),h=r.useMemo((()=>({padding:y,size:k,stickyHeader:A})),[y,k,A]);return(0,p.jsx)(l.A.Provider,{value:h,children:(0,p.jsx)(b,{as:n,role:n===u?null:"table",ref:t,className:(0,o.A)(w.root,i),ownerState:g,...m})})}))},15560:(e,t,a)=>{a.d(t,{A:()=>r});const r=a(7552).createContext()},78535:(e,t,a)=>{a.r(t),a.d(t,{default:()=>r.A,getTableUtilityClass:()=>o.l,tableClasses:()=>o.A});var r=a(64111),o=a(12667)},12667:(e,t,a)=>{a.d(t,{A:()=>l,l:()=>s});var r=a(33761),o=a(85693);function s(e){return(0,o.Ay)("MuiTable",e)}const l=(0,r.A)("MuiTable",["root","stickyHeader"])}}]);
+//# sourceMappingURL=8535.189d090a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8535.189d090a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8535.189d090a.chunk.js","mappings":"+OAYA,MAUMA,GAAY,QAAO,QAAS,CAChCC,KAAM,WACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOE,KAAMD,EAAWE,cAAgBH,EAAOG,aAAa,GAPtD,EASf,QAAU,EACXC,YACI,CACJC,QAAS,QACTC,MAAO,OACPC,eAAgB,WAChBC,cAAe,EACf,YAAa,IACRJ,EAAMK,WAAWC,MACpBC,QAASP,EAAMQ,QAAQ,GACvBC,OAAQT,EAAMU,MAAQV,GAAOW,QAAQC,KAAKC,UAC1CC,UAAW,OACXC,YAAa,UAEfC,SAAU,CAAC,CACTrB,MAAO,EACLE,gBACIA,EAAWE,aACjBkB,MAAO,CACLd,eAAgB,mBAIhBe,EAAmB,QAiFzB,EAhF2B,cAAiB,SAAeC,EAASC,GAClE,MAAMzB,GAAQ,OAAgB,CAC5BA,MAAOwB,EACP3B,KAAM,cAEF,UACJ6B,EAAS,UACTC,EAAYJ,EAAgB,QAC5BX,EAAU,SAAQ,KAClBgB,EAAO,SAAQ,aACfxB,GAAe,KACZyB,GACD7B,EACEE,EAAa,IACdF,EACH2B,YACAf,UACAgB,OACAxB,gBAEI0B,EA/DkB5B,KACxB,MAAM,QACJ4B,EAAO,aACP1B,GACEF,EACE6B,EAAQ,CACZ5B,KAAM,CAAC,OAAQC,GAAgB,iBAEjC,OAAO,OAAe2B,EAAO,IAAsBD,EAAQ,EAuD3CE,CAAkB9B,GAC5B+B,EAAQ,WAAc,KAAM,CAChCrB,UACAgB,OACAxB,kBACE,CAACQ,EAASgB,EAAMxB,IACpB,OAAoB,SAAK,IAAa8B,SAAU,CAC9CC,MAAOF,EACPG,UAAuB,SAAKxC,EAAW,CACrCyC,GAAIV,EACJW,KAAMX,IAAcJ,EAAmB,KAAO,QAC9CE,IAAKA,EACLC,WAAW,OAAKI,EAAQ3B,KAAMuB,GAC9BxB,WAAYA,KACT2B,KAGT,G,mCCjFA,Q,QAJkC,e,kMCL3B,SAASU,EAAqBzC,GACnC,OAAO,QAAqB,WAAYA,EAC1C,CACA,MACA,GADqB,OAAuB,WAAY,CAAC,OAAQ,gB","sources":["../../../node_modules/@mui/material/Table/Table.js","../../../node_modules/@mui/material/Table/TableContext.js","../../../node_modules/@mui/material/Table/tableClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport TableContext from \"./TableContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableUtilityClass } from \"./tableClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', stickyHeader && 'stickyHeader']\n  };\n  return composeClasses(slots, getTableUtilityClass, classes);\n};\nconst TableRoot = styled('table', {\n  name: 'MuiTable',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'table',\n  width: '100%',\n  borderCollapse: 'collapse',\n  borderSpacing: 0,\n  '& caption': {\n    ...theme.typography.body2,\n    padding: theme.spacing(2),\n    color: (theme.vars || theme).palette.text.secondary,\n    textAlign: 'left',\n    captionSide: 'bottom'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      borderCollapse: 'separate'\n    }\n  }]\n})));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTable'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    padding = 'normal',\n    size = 'medium',\n    stickyHeader = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    padding,\n    size,\n    stickyHeader\n  };\n  const classes = useUtilityClasses(ownerState);\n  const table = React.useMemo(() => ({\n    padding,\n    size,\n    stickyHeader\n  }), [padding, size, stickyHeader]);\n  return /*#__PURE__*/_jsx(TableContext.Provider, {\n    value: table,\n    children: /*#__PURE__*/_jsx(TableRoot, {\n      as: component,\n      role: component === defaultComponent ? null : 'table',\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   * @default 'normal'\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Allows TableCells to inherit size of the Table.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set the header sticky.\n   * @default false\n   */\n  stickyHeader: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Table;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableUtilityClass(slot) {\n  return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;"],"names":["TableRoot","name","slot","overridesResolver","props","styles","ownerState","root","stickyHeader","theme","display","width","borderCollapse","borderSpacing","typography","body2","padding","spacing","color","vars","palette","text","secondary","textAlign","captionSide","variants","style","defaultComponent","inProps","ref","className","component","size","other","classes","slots","useUtilityClasses","table","Provider","value","children","as","role","getTableUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8546.0a89cbee.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8546],{78546:(e,t,n)=>{n.r(t),n.d(t,{default:()=>me});var o=n(7552),l=n(67314),r=n(75785),a=n(68446),s=n(49823),c=n(48171),i=n(22679),m=n(83867),d=n(56089),u=n(33371),p=n(33248),g=n(32808),b=n(5401),h=n(36422),E=n(99546),f=n(1343);const w=(0,r.n9)()({textField:{width:"2rem",verticalAlign:"baseline"}}),v=(0,a.observer)((function({model:e,disabled:t,modelPropName:n,modelSetterName:l}){const[r,a]=(0,o.useState)(e[n]),{classes:s}=w();return(0,o.useEffect)((()=>{const t=Number.parseInt(r,10);Number.isNaN(t)||(t>0?e[l](t):a(1))}),[e,l,r]),o.createElement(f.A,{value:r,disabled:t,type:"number",onChange:e=>{a(e.target.value)},className:s.textField})})),N=(0,r.n9)()({container:{margin:"0 auto",maxWidth:"25em",padding:20}}),C=(0,a.observer)((({model:e})=>{const t=(0,E.getSession)(e),{classes:n}=N(),{assemblyNames:l,assemblyManager:r}=t,{fileType:a,canCancel:f,fileSource:w,isReadyToOpen:C,fileTypes:y,hasColumnNameLine:A,error:M}=e,[k,S]=(0,o.useState)(l[0]),P=r.get(k)?.error||M,x="CSV"===a||"TSV"===a,F=(0,h.getRoot)(e);return o.createElement("div",{className:n.container},P?o.createElement(s.ErrorMessage,{error:P}):null,o.createElement("div",null,o.createElement(c.A,{component:"fieldset"},o.createElement(i.A,{component:"legend"},"Tabular file"),o.createElement(m.A,null,o.createElement(s.FileSelector,{location:w,setLocation:t=>{e.setFileSource(t)},rootModel:F})))),o.createElement("div",null,o.createElement(c.A,{component:"fieldset"},o.createElement(i.A,{component:"legend"},"File Type"),o.createElement(d.A,{row:!0,"aria-label":"file type",name:"type",value:a},y.map((t=>o.createElement(u.A,{key:t,checked:a===t,value:t,onClick:()=>{e.setFileType(t)},control:o.createElement(p.A,null),label:t})))))),x?o.createElement("div",null,o.createElement(c.A,{component:"fieldset"},o.createElement(i.A,{component:"legend"},"Column Names"),o.createElement(u.A,{disabled:!x,label:"has column names on line",labelPlacement:"end",control:o.createElement(g.A,{checked:A,onClick:()=>{e.toggleHasColumnNameLine()}})}),o.createElement(v,{model:e,disabled:!A,modelPropName:"columnNameLineNumber",modelSetterName:"setColumnNameLineNumber"}))):null,o.createElement("div",null,o.createElement(s.AssemblySelector,{session:t,selected:k,onChange:e=>{S(e)}})),o.createElement("div",null,f?o.createElement(b.A,{variant:"contained",color:"secondary",onClick:()=>{e.cancelButton()},disabled:!f},"Cancel"):null," ",o.createElement(b.A,{disabled:!C||!!P,variant:"contained","data-testid":"open_spreadsheet",color:"primary",onClick:()=>{e.import(k)}},"Open")))})),y=(0,a.observer)((function({viewModel:e,spreadsheetModel:t}){const n=t.rowMenuPosition,{setRowMenuPosition:l}=t,r=()=>{l(null)},a=t.rowMenuPosition?.rowNumber;if(void 0===a)return null;const c=t.rowSet.rows[+a-1],i=e.rowMenuItems.map((n=>{if("function"==typeof n.disabled){const o=n.disabled(e,t,+a,c);return{...n,disabled:o}}return n}));return o.createElement(s.Menu,{anchorEl:n?.anchorEl,open:Boolean(n),onMenuItemClick:function(n,o){o(e,t,a,c),r()},onClose:r,menuItems:i,anchorOrigin:{vertical:"bottom",horizontal:"right"}})}));var A=n(61723),M=n(86743),k=n(32813);const S=(0,a.observer)((function({cell:e,spreadsheetModel:t,columnNumber:n}){const l=t.columns[n];return l&&"dataType"in l&&l.dataType.DataCellReactComponent?o.createElement(l.dataType.DataCellReactComponent,{cell:e,dataType:l.dataType,columnNumber:n,spreadsheet:t}):e.text})),P=(0,r.n9)()((e=>({rowNumCell:{textAlign:"left",border:`1px solid ${e.palette.action.disabledBackground}`,position:"relative",padding:"0 2px 0 0",whiteSpace:"nowrap",userSelect:"none"},rowNumber:{fontWeight:"normal",display:"inline-block",flex:"none",paddingRight:"20px",margin:0,whiteSpace:"nowrap"},rowMenuButton:{padding:0,margin:0,position:"absolute",right:0,display:"inline-block",whiteSpace:"nowrap",flex:"none"},rowMenuButtonIcon:{},rowSelector:{position:"relative",top:"-2px",margin:0,padding:"0 0.2rem"},dataRowSelected:{background:M.A[100],"& th":{background:M.A[100]}}}))),x=(0,a.observer)((function({rowModel:e,rowNumber:t,spreadsheetModel:n}){const{classes:l}=P(),{hideRowSelection:r,columnDisplayOrder:a}=n;let s="";function c(t){e.toggleSelect(),t.stopPropagation(),t.preventDefault()}return e.isSelected&&(s+=l.dataRowSelected),o.createElement("tr",{className:s},o.createElement("td",{className:l.rowNumCell,onClick:c},r?o.createElement(u.A,{className:l.rowNumber,control:o.createElement(g.A,{className:l.rowSelector,checked:e.isSelected,onClick:c}),label:e.id}):null,o.createElement(A.A,{className:l.rowMenuButton,onClick:e=>{n.setRowMenuPosition({anchorEl:e.currentTarget,rowNumber:t}),e.preventDefault(),e.stopPropagation()}},o.createElement(k.A,{className:l.rowMenuButtonIcon}))),a.map((t=>o.createElement("td",{key:t},o.createElement(S,{cell:e.cellsWithDerived[t],spreadsheetModel:n,columnNumber:t})))))}));var F=n(89003),T=n(52521),I=n(79529),R=n(47103),B=n(35099),z=n(91049);const L=(0,a.observer)((function({viewModel:e,spreadsheetModel:t,currentColumnMenu:n,setColumnMenu:l}){const r=()=>{l(void 0)},a=n?.colNumber||0,c=e=>{t.setSortColumns([{columnNumber:a,descending:e}])},{dataTypeChoices:i}=t,m=new Map;i.forEach((e=>{const{displayName:t,categoryName:n}=e;if(n){let t=m.get(n);t||(t={isCategory:!0,subMenuItems:[]},m.set(n,t)),t.subMenuItems.push(e)}else m.set(t,e)}));const{columns:d,sortColumns:u}=t,p=n&&d[a].dataType,g=p?.type||"",b=n&&d[a].dataType.displayName||"",h=!!n&&u.some((e=>e.columnNumber===n.colNumber&&!e.descending)),f=!!n&&u.some((e=>e.columnNumber===n.colNumber&&e.descending)),w=[{label:"Sort ascending",icon:z.A,type:"radio",checked:h,onClick:()=>{c(!1)}},{label:"Sort descending",icon:z.A,type:"radio",checked:f,onClick:()=>{c(!0)}},{label:"No sort",icon:z.A,type:"radio",checked:!f&&!h,onClick:()=>{t.setSortColumns([])}},{label:`Type: ${b}`,icon:B.A,subMenu:(0,E.iterMap)(m.entries(),(([e,n])=>{if("typeName"in n&&n.typeName){const{typeName:o}=n;return{label:e||o,icon:g===o?I.A:void 0,onClick:()=>{t.setColumnType(a,o)}}}if("subMenuItems"in n&&n.subMenuItems){const{subMenuItems:o}=n;return{label:e,icon:o.some((e=>e.typeName===g))?I.A:void 0,subMenu:o.map((({typeName:e,displayName:n})=>({label:n,icon:e===g?I.A:void 0,onClick:()=>{t.setColumnType(a,e)}})))}}return null})).filter(Boolean)}];return p?.hasFilter&&w.push({label:"Create filter",icon:R.A,onClick:()=>{e.filterControls.addBlankColumnFilter(a)}}),o.createElement(s.Menu,{anchorEl:n?.anchorEl,open:Boolean(n),onMenuItemClick:(e,t)=>{t(),r()},onClose:r,menuItems:w,anchorOrigin:{vertical:"bottom",horizontal:"right"}})}));var $=n(21430),D=n(66195);const O=(0,r.n9)()({sortIndicator:{position:"relative",top:"0.2rem",fontSize:"1rem"}});function H({model:e,columnNumber:t}){const{classes:n}=O(),l=e.sortColumns.find((e=>e.columnNumber===t));if(l){const{descending:e}=l;return e?o.createElement($.A,{className:n.sortIndicator}):o.createElement(D.A,{className:n.sortIndicator})}return null}function W(e){return String.fromCharCode(e+65)}const _=(0,r.n9)()((e=>({columnHead:{fontWeight:"normal",background:"dark"===e.palette.mode?"#333":"#eee",position:"sticky",top:0,zIndex:2,whiteSpace:"nowrap"},columnButtonContainer:{display:"none",position:"absolute",right:0,top:0,background:e.palette.background.paper,height:"100%"},topLeftCorner:{background:"dark"===e.palette.mode?"#333":"#eee",zIndex:2,position:"sticky",top:0,minWidth:e.spacing(2),textAlign:"left"}}))),j=(0,a.observer)((function({model:e}){const{classes:t}=_(),{columnDisplayOrder:n,columns:l,hasColumnNames:r,rowSet:a}=e,[s,c]=(0,o.useState)(),[i,m]=(0,o.useState)();return o.createElement(o.Fragment,null,o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",{className:t.topLeftCorner},o.createElement(F.A,{title:"Unselect all",placement:"right"},o.createElement("span",null,o.createElement(A.A,{onClick:()=>{e.unselectAll()},disabled:!a.selectedCount},o.createElement(T.A,null))))),n.map((n=>o.createElement("th",{className:t.columnHead,key:n,onMouseOver:()=>{m(n)},onMouseOut:()=>{m(void 0)}},o.createElement(H,{model:e,columnNumber:n}),r&&l[n].name||function(e){if(e>=0){if(e<26)return W(e);if(e<702)return W(Math.floor(e/26-1))+W(e%26)}throw new RangeError("column number out of range")}(n),o.createElement("div",{className:t.columnButtonContainer,style:{display:i===n||s?.colNumber===n?"block":"none"}},o.createElement(A.A,{onClick:e=>{c({colNumber:n,anchorEl:e.currentTarget})}},o.createElement(k.A,null)))))))),o.createElement(L,{viewModel:(0,h.getParent)(e),spreadsheetModel:e,currentColumnMenu:s,setColumnMenu:c}))})),V=(0,r.n9)()((e=>({dataTable:{borderCollapse:"collapse","& td":{border:`1px solid ${e.palette.action.disabledBackground}`,padding:"0.2rem",maxWidth:"50em",overflow:"hidden",textOverflow:"ellipsis"}},emptyMessage:{captionSide:"bottom"}}))),G=(0,a.observer)((function({rows:e,spreadsheetModel:t,page:n,rowsPerPage:l}){return o.createElement("tbody",null,e.slice(l*n,l*(n+1)).map((e=>o.createElement(x,{key:e.id,rowNumber:e.id,spreadsheetModel:t,rowModel:e}))))})),U=(0,a.observer)((function({model:e,page:t,rowsPerPage:n}){const{rowSet:l}=e,{classes:r}=V(),a=l.sortedFilteredRows;return o.createElement(o.Fragment,null,o.createElement(y,{viewModel:(0,h.getParent)(e),spreadsheetModel:e}),o.createElement("table",{className:r.dataTable},o.createElement(j,{model:e}),o.createElement(G,{rows:a,spreadsheetModel:e,page:t,rowsPerPage:n}),a.length?null:o.createElement("caption",{className:r.emptyMessage},l.count?"no rows match criteria":"no rows present")))})),q=(0,r.n9)()((e=>({root:{position:"relative",marginBottom:e.spacing(1),background:e.palette.background.paper,overflow:"auto"}}))),J=(0,a.observer)((function({model:e,height:t,page:n,rowsPerPage:l}){const{classes:r}=q();return o.createElement("div",{className:r.root,style:{height:t}},e.rowSet.isLoaded&&e.initialized?o.createElement(U,{model:e,page:n,rowsPerPage:l}):o.createElement(s.LoadingEllipses,{variant:"h6"}))}));var K=n(93117),Q=n(31892);const X=(0,r.n9)()({textFilterControlEndAdornment:{marginRight:"-18px"}}),Y=(0,a.observer)((function({textFilter:e}){const{classes:t}=X(),[n,l]=(0,o.useState)(e.stringToFind),r=(0,E.useDebounce)(n,500);return(0,o.useEffect)((()=>{e.setString(r)}),[r,e]),o.createElement("div",null,o.createElement(f.A,{label:"text filter",value:n,onChange:e=>{l(e.target.value)},variant:"outlined",InputProps:{startAdornment:o.createElement(K.A,{position:"start"},o.createElement(R.A,null)),endAdornment:o.createElement(K.A,{className:t.textFilterControlEndAdornment,position:"end"},o.createElement(A.A,{"aria-label":"clear filter",onClick:()=>{l("")}},o.createElement(Q.A,null)))}}))})),Z=(0,a.observer)((({model:e})=>{const t=e.filterControls.rowFullText;return o.createElement(Y,{textFilter:t})}));var ee=n(36715),te=n(30157);const ne=(0,r.n9)()((e=>({columnName:{verticalAlign:"middle",paddingRight:"0.3em"},columnFilter:{overflow:"hidden",whiteSpace:"nowrap",boxSizing:"border-box",width:"100%",position:"relative"},filterIcon:{position:"relative",top:"12px"},filterIconBg:{background:e.palette.tertiary.main,color:"white",padding:e.spacing(1.5)}})));function oe({filterModel:e}){return e?o.createElement(e.ReactComponent,{filterModel:e}):null}const le=(0,a.observer)((function({viewModel:e,filterModel:t,columnNumber:n,height:r}){const{classes:a}=ne(),s=e.spreadsheet.columns[n];if(!s)throw new Error("no column definition! filters are probably out of date");return o.createElement(l.Ay,{container:!0,direction:"row",className:a.columnFilter,style:{height:r}},o.createElement(l.Ay,{item:!0,className:a.filterIconBg},o.createElement(R.A,{className:a.filterIcon})),o.createElement(l.Ay,{item:!0},o.createElement(A.A,{onClick:()=>(0,h.getParent)(t,2).removeColumnFilter(t),title:"remove filter"},o.createElement(te.A,null)),o.createElement(ee.A,{className:a.columnName,component:"span"},s.name)," ",o.createElement(oe,{filterModel:t})))}));var re=n(8565);const ae=(0,a.observer)((function({spreadsheet:e}){if(e.rowSet.isLoaded){const{passingFiltersCount:t,count:n,selectedCount:l,selectedAndPassingFiltersCount:r}=e.rowSet;let a;if(t!==n){if(a=`${e.rowSet.passingFiltersCount} rows of ${e.rowSet.count} total`,l){a+=`, ${r} selected`;const e=l-r;e&&(a+=` (${e} selected rows do not pass filters)`)}}else a=`${e.rowSet.count} rows`,l&&(a+=`, ${l} selected`);return o.createElement(o.Fragment,null,a)}return null})),se=(0,r.n9)()((e=>({statusBar:{height:40,boxSizing:"border-box",borderTop:"1px outset #b1b1b1",paddingLeft:e.spacing(1)},verticallyCenter:{display:"flex",justifyContent:"center",flexDirection:"column"},spacer:{flexGrow:1}}))),ce=(0,a.observer)((function({page:e,rowsPerPage:t,setPage:n,setRowsPerPage:l,spreadsheet:r,mode:a}){const{classes:s}=se();return o.createElement("div",{className:s.statusBar,style:{display:"display"===a?void 0:"none"}},o.createElement(m.A,{row:!0},o.createElement("div",{className:s.verticallyCenter},o.createElement(ae,{spreadsheet:r})),o.createElement("div",{className:s.spacer}),o.createElement(re.A,{rowsPerPageOptions:[10,25,100,1e3],count:r.rowSet.count,component:"div",rowsPerPage:t,page:e,onPageChange:(e,t)=>{n(t)},onRowsPerPageChange:e=>{l(+e.target.value),n(0)}}),o.createElement("div",{className:s.spacer})))})),ie=(0,r.n9)()((e=>({header:{overflow:"hidden",whiteSpace:"nowrap",boxSizing:"border-box",height:52,paddingLeft:e.spacing(1)},contentArea:{overflow:"auto"},resizeHandle:{height:3,position:"absolute",bottom:0,left:0,background:e.palette.action.disabled,boxSizing:"border-box",borderTop:"1px solid #fafafa"}}))),me=(0,a.observer)((function({model:e}){const{classes:t}=ie(),{spreadsheet:n,filterControls:r,hideFilterControls:a,hideVerticalResizeHandle:c,mode:i,height:m}=e,[d,u]=(0,o.useState)(0),[p,g]=(0,o.useState)(100);return o.createElement("div",null,"display"!==i||a?null:o.createElement(o.Fragment,null,o.createElement(l.Ay,{container:!0,direction:"row",className:t.header},o.createElement(l.Ay,{item:!0},o.createElement(Z,{model:e}))),r.columnFilters.map(((t,n)=>o.createElement(le,{key:`${t.columnNumber}-${n}`,viewModel:e,filterModel:t,columnNumber:t.columnNumber,height:46})))),"import"===i?o.createElement(C,{model:e.importWizard}):o.createElement("div",{className:t.contentArea},o.createElement("div",{style:{position:"relative",display:"display"===i?void 0:"none"}},n?o.createElement(J,{page:d,rowsPerPage:p,model:n,height:m-52-46*r.columnFilters.length-40}):null)),n?o.createElement(ce,{page:d,setPage:u,rowsPerPage:p,setRowsPerPage:g,mode:i,spreadsheet:n}):null,c?null:o.createElement(s.ResizeHandle,{onDrag:e.resizeHeight,className:t.resizeHandle}))}))}}]);
+//# sourceMappingURL=8546.0a89cbee.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8546.0a89cbee.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8546.0a89cbee.chunk.js","mappings":"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","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/components/NumberEditor.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ImportWizard.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/RowMenu.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/CellData.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataRow.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ColumnMenu.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/SortIndicator.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/util.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataTableHeader.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataTable.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/GlobalFilterControls.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ColumnFilterControls.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/RowCountMessage.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/StatusBar.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/SpreadsheetView.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { ImportWizardModel } from '../models/ImportWizard'\n\nconst useStyles = makeStyles()({\n  textField: {\n    width: '2rem',\n    verticalAlign: 'baseline',\n  },\n})\n\nconst NumberEditor = observer(function ({\n  model,\n  disabled,\n  modelPropName,\n  modelSetterName,\n}: {\n  model: ImportWizardModel\n  disabled: boolean\n  modelPropName: string\n  modelSetterName: string\n}) {\n  // @ts-expect-error\n  const [val, setVal] = useState(model[modelPropName])\n  const { classes } = useStyles()\n  useEffect(() => {\n    const num = Number.parseInt(val, 10)\n    if (!Number.isNaN(num)) {\n      if (num > 0) {\n        // @ts-expect-error\n        model[modelSetterName](num)\n      } else {\n        setVal(1)\n      }\n    }\n  }, [model, modelSetterName, val])\n  return (\n    <TextField\n      value={val}\n      disabled={disabled}\n      type=\"number\"\n      onChange={evt => {\n        setVal(evt.target.value)\n      }}\n      className={classes.textField}\n    />\n  )\n})\n\nexport default NumberEditor\n","import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  FormControl,\n  FormGroup,\n  FormLabel,\n  FormControlLabel,\n  RadioGroup,\n  Radio,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getRoot } from 'mobx-state-tree'\nimport { AbstractRootModel, getSession } from '@jbrowse/core/util'\nimport { FileSelector, ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { ImportWizardModel } from '../models/ImportWizard'\nimport NumberEditor from './NumberEditor'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  container: {\n    margin: '0 auto',\n    maxWidth: '25em',\n    padding: 20,\n  },\n})\n\nconst ImportWizard = observer(({ model }: { model: ImportWizardModel }) => {\n  const session = getSession(model)\n  const { classes } = useStyles()\n  const { assemblyNames, assemblyManager } = session\n  const {\n    fileType,\n    canCancel,\n    fileSource,\n    isReadyToOpen,\n    fileTypes,\n    hasColumnNameLine,\n    error,\n  } = model\n  const [selected, setSelected] = useState(assemblyNames[0])\n  const err = assemblyManager.get(selected!)?.error || error\n  const showRowControls = fileType === 'CSV' || fileType === 'TSV'\n  const rootModel = getRoot(model)\n\n  return (\n    <div className={classes.container}>\n      {err ? <ErrorMessage error={err} /> : null}\n      <div>\n        <FormControl component=\"fieldset\">\n          <FormLabel component=\"legend\">Tabular file</FormLabel>\n          <FormGroup>\n            <FileSelector\n              location={fileSource}\n              setLocation={arg => {\n                model.setFileSource(arg)\n              }}\n              rootModel={rootModel as AbstractRootModel}\n            />\n          </FormGroup>\n        </FormControl>\n      </div>\n      <div>\n        <FormControl component=\"fieldset\">\n          <FormLabel component=\"legend\">File Type</FormLabel>\n          <RadioGroup row aria-label=\"file type\" name=\"type\" value={fileType}>\n            {fileTypes.map(fileTypeName => (\n              <FormControlLabel\n                key={fileTypeName}\n                checked={fileType === fileTypeName}\n                value={fileTypeName}\n                onClick={() => {\n                  model.setFileType(fileTypeName)\n                }}\n                control={<Radio />}\n                label={fileTypeName}\n              />\n            ))}\n          </RadioGroup>\n        </FormControl>\n      </div>\n      {showRowControls ? (\n        <div>\n          <FormControl component=\"fieldset\">\n            <FormLabel component=\"legend\">Column Names</FormLabel>\n            <FormControlLabel\n              disabled={!showRowControls}\n              label=\"has column names on line\"\n              labelPlacement=\"end\"\n              control={\n                <Checkbox\n                  checked={hasColumnNameLine}\n                  onClick={() => {\n                    model.toggleHasColumnNameLine()\n                  }}\n                />\n              }\n            />\n            <NumberEditor\n              model={model}\n              disabled={!hasColumnNameLine}\n              modelPropName=\"columnNameLineNumber\"\n              modelSetterName=\"setColumnNameLineNumber\"\n            />\n          </FormControl>\n        </div>\n      ) : null}\n      <div>\n        <AssemblySelector\n          session={session}\n          selected={selected}\n          onChange={val => {\n            setSelected(val)\n          }}\n        />\n      </div>\n      <div>\n        {canCancel ? (\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              model.cancelButton()\n            }}\n            disabled={!canCancel}\n          >\n            Cancel\n          </Button>\n        ) : null}{' '}\n        <Button\n          disabled={!isReadyToOpen || !!err}\n          variant=\"contained\"\n          data-testid=\"open_spreadsheet\"\n          color=\"primary\"\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            model.import(selected!)\n          }}\n        >\n          Open\n        </Button>\n      </div>\n    </div>\n  )\n})\n\nexport default ImportWizard\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Menu, MenuItem } from '@jbrowse/core/ui'\nimport { Instance } from 'mobx-state-tree'\n\n// locals\nimport type SpreadsheetModel from '../models/Spreadsheet'\nimport type ViewModel from '../models/SpreadsheetView'\n\nconst RowMenu = observer(function ({\n  viewModel,\n  spreadsheetModel,\n}: {\n  viewModel: Instance<typeof ViewModel>\n  spreadsheetModel: Instance<typeof SpreadsheetModel>\n}) {\n  const currentRowMenu = spreadsheetModel.rowMenuPosition\n  const { setRowMenuPosition } = spreadsheetModel\n\n  const rowMenuClose = () => {\n    setRowMenuPosition(null)\n  }\n\n  const rowNumber = spreadsheetModel.rowMenuPosition?.rowNumber\n  if (rowNumber === undefined) {\n    return null\n  }\n\n  const row = spreadsheetModel.rowSet.rows[+rowNumber - 1]\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n  function handleMenuItemClick(_event: unknown, callback: Function) {\n    callback(viewModel, spreadsheetModel, rowNumber, row)\n    rowMenuClose()\n  }\n\n  // got through and evaluate all the `disabled` callbacks of the menu items\n  const menuItems: MenuItem[] = viewModel.rowMenuItems.map(item => {\n    if (typeof item.disabled === 'function') {\n      const disabled = item.disabled(\n        viewModel,\n        spreadsheetModel,\n        +rowNumber,\n        row!,\n      )\n      return { ...item, disabled }\n    }\n    return item\n  })\n\n  return (\n    <Menu\n      anchorEl={currentRowMenu?.anchorEl}\n      open={Boolean(currentRowMenu)}\n      onMenuItemClick={handleMenuItemClick}\n      onClose={rowMenuClose}\n      menuItems={menuItems}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n      }}\n    />\n  )\n})\n\nexport default RowMenu\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\n\nconst CellData = observer(function ({\n  cell,\n  spreadsheetModel,\n  columnNumber,\n}: {\n  cell: any\n  spreadsheetModel: SpreadsheetModel\n  columnNumber: number\n}) {\n  const column = spreadsheetModel.columns[columnNumber]\n  return column &&\n    'dataType' in column &&\n    column.dataType.DataCellReactComponent ? (\n    <column.dataType.DataCellReactComponent\n      cell={cell}\n      dataType={column.dataType}\n      columnNumber={columnNumber}\n      spreadsheet={spreadsheetModel}\n    />\n  ) : (\n    cell.text\n  )\n})\n\nexport default CellData\n","import React from 'react'\nimport { Checkbox, IconButton, FormControlLabel } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { indigo } from '@mui/material/colors'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport type RowStateModel from '../models/Row'\n\nimport CellData from './CellData'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\ntype RowModel = Instance<typeof RowStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  rowNumCell: {\n    textAlign: 'left',\n    border: `1px solid ${theme.palette.action.disabledBackground}`,\n    position: 'relative',\n    padding: '0 2px 0 0',\n    whiteSpace: 'nowrap',\n    userSelect: 'none',\n  },\n  rowNumber: {\n    fontWeight: 'normal',\n    display: 'inline-block',\n    flex: 'none',\n    paddingRight: '20px',\n    margin: 0,\n    whiteSpace: 'nowrap',\n  },\n  rowMenuButton: {\n    padding: 0,\n    margin: 0,\n    position: 'absolute',\n    right: 0,\n    display: 'inline-block',\n    whiteSpace: 'nowrap',\n    flex: 'none',\n  },\n  rowMenuButtonIcon: {},\n  rowSelector: {\n    position: 'relative',\n    top: '-2px',\n    margin: 0,\n    padding: '0 0.2rem',\n  },\n\n  dataRowSelected: {\n    background: indigo[100],\n    '& th': {\n      background: indigo[100],\n    },\n  },\n}))\n\nconst DataRow = observer(function ({\n  rowModel,\n  rowNumber,\n  spreadsheetModel,\n}: {\n  rowModel: RowModel\n  rowNumber: string\n  spreadsheetModel: SpreadsheetModel\n}) {\n  const { classes } = useStyles()\n  const { hideRowSelection, columnDisplayOrder } = spreadsheetModel\n  let rowClass = ''\n  if (rowModel.isSelected) {\n    rowClass += classes.dataRowSelected\n  }\n\n  function labelClick(evt: React.MouseEvent) {\n    rowModel.toggleSelect()\n    evt.stopPropagation()\n    evt.preventDefault()\n  }\n\n  return (\n    <tr className={rowClass}>\n      <td className={classes.rowNumCell} onClick={labelClick}>\n        {hideRowSelection ? (\n          <FormControlLabel\n            className={classes.rowNumber}\n            control={\n              <Checkbox\n                className={classes.rowSelector}\n                checked={rowModel.isSelected}\n                onClick={labelClick}\n              />\n            }\n            label={rowModel.id}\n          />\n        ) : null}\n        <IconButton\n          className={classes.rowMenuButton}\n          onClick={event => {\n            spreadsheetModel.setRowMenuPosition({\n              anchorEl: event.currentTarget,\n              rowNumber,\n            })\n            event.preventDefault()\n            event.stopPropagation()\n          }}\n        >\n          <ArrowDropDown className={classes.rowMenuButtonIcon} />\n        </IconButton>\n      </td>\n      {columnDisplayOrder.map(colNumber => (\n        <td key={colNumber}>\n          <CellData\n            cell={rowModel.cellsWithDerived[colNumber]}\n            spreadsheetModel={spreadsheetModel}\n            columnNumber={colNumber}\n          />\n        </td>\n      ))}\n    </tr>\n  )\n})\n\nexport default DataRow\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { iterMap } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { MenuItem } from '@jbrowse/core/ui/Menu'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport { SpreadsheetViewModel } from '../models/SpreadsheetView'\n\n// icons\nimport CheckIcon from '@mui/icons-material/Check'\nimport FilterListIcon from '@mui/icons-material/FilterList'\nimport PermDataSettingIcon from '@mui/icons-material/PermDataSetting'\nimport SortIcon from '@mui/icons-material/Sort'\n\nconst ColumnMenu = observer(function ({\n  viewModel,\n  spreadsheetModel,\n  currentColumnMenu,\n  setColumnMenu,\n}: {\n  spreadsheetModel: SpreadsheetModel\n  viewModel: SpreadsheetViewModel\n  currentColumnMenu?: { colNumber: number; anchorEl: HTMLElement }\n  setColumnMenu: (arg?: { anchorEl: HTMLElement; colNumber: number }) => void\n}) {\n  const columnMenuClose = () => {\n    setColumnMenu(undefined)\n  }\n  const columnNumber = currentColumnMenu?.colNumber || 0\n  const sortMenuClick = (descending: boolean) => {\n    spreadsheetModel.setSortColumns([\n      {\n        columnNumber,\n        descending,\n      },\n    ])\n  }\n\n  const { dataTypeChoices } = spreadsheetModel\n\n  // make a Map of categoryName => [entry...]\n  type Record = (typeof dataTypeChoices)[0]\n  interface RecordGroup {\n    isCategory: boolean\n    subMenuItems: Record[]\n  }\n  const dataTypeTopLevelMenu = new Map<string, Record | RecordGroup>()\n  dataTypeChoices.forEach(dataTypeRecord => {\n    const { displayName, categoryName } = dataTypeRecord\n    if (categoryName) {\n      let entry = dataTypeTopLevelMenu.get(categoryName) as\n        | RecordGroup\n        | undefined\n      if (!entry) {\n        entry = {\n          isCategory: true,\n          subMenuItems: [],\n        }\n        dataTypeTopLevelMenu.set(categoryName, entry)\n      }\n      entry.subMenuItems.push(dataTypeRecord)\n    } else {\n      dataTypeTopLevelMenu.set(displayName, dataTypeRecord)\n    }\n  })\n\n  const { columns, sortColumns } = spreadsheetModel\n  const dataType = currentColumnMenu && columns[columnNumber]!.dataType\n  const dataTypeName = dataType?.type || ''\n  const dataTypeDisplayName =\n    (currentColumnMenu && columns[columnNumber]!.dataType.displayName) || ''\n\n  const isSortingAscending =\n    !!currentColumnMenu &&\n    sortColumns.some(\n      c => c.columnNumber === currentColumnMenu.colNumber && !c.descending,\n    )\n  const isSortingDescending =\n    !!currentColumnMenu &&\n    sortColumns.some(\n      c => c.columnNumber === currentColumnMenu.colNumber && c.descending,\n    )\n\n  const menuItems = [\n    // top-level column menu\n    {\n      label: 'Sort ascending',\n      icon: SortIcon,\n      type: 'radio',\n      checked: isSortingAscending,\n      onClick: () => {\n        sortMenuClick(false)\n      },\n    },\n    {\n      label: 'Sort descending',\n      icon: SortIcon,\n      type: 'radio',\n      checked: isSortingDescending,\n      onClick: () => {\n        sortMenuClick(true)\n      },\n    },\n    {\n      label: 'No sort',\n      icon: SortIcon,\n      type: 'radio',\n      checked: !isSortingDescending && !isSortingAscending,\n      onClick: () => {\n        spreadsheetModel.setSortColumns([])\n      },\n    },\n    // data type menu\n    {\n      label: `Type: ${dataTypeDisplayName}`,\n      icon: PermDataSettingIcon,\n      subMenu: iterMap(\n        dataTypeTopLevelMenu.entries(),\n        ([displayName, record]) => {\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          if ('typeName' in record && record.typeName) {\n            const { typeName } = record\n            return {\n              label: displayName || typeName,\n              icon: dataTypeName === typeName ? CheckIcon : undefined,\n              onClick: () => {\n                spreadsheetModel.setColumnType(columnNumber, typeName)\n              },\n            }\n          }\n\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          if ('subMenuItems' in record && record.subMenuItems) {\n            const { subMenuItems } = record\n            return {\n              label: displayName,\n              icon: subMenuItems.some(i => i.typeName === dataTypeName)\n                ? CheckIcon\n                : undefined,\n              subMenu: subMenuItems.map(({ typeName, displayName }) => ({\n                label: displayName,\n                icon: typeName === dataTypeName ? CheckIcon : undefined,\n                onClick: () => {\n                  spreadsheetModel.setColumnType(columnNumber, typeName)\n                },\n              })),\n            }\n          }\n          return null\n        },\n      ).filter(Boolean),\n    },\n  ] as MenuItem[]\n\n  // don't display the filter item if this data type doesn't have filtering\n  // implemented\n  if (dataType?.hasFilter) {\n    menuItems.push({\n      label: 'Create filter',\n      icon: FilterListIcon,\n      onClick: () => {\n        viewModel.filterControls.addBlankColumnFilter(columnNumber)\n      },\n    })\n  }\n\n  return (\n    <Menu\n      anchorEl={currentColumnMenu?.anchorEl}\n      open={Boolean(currentColumnMenu)}\n      onMenuItemClick={(_event, callback) => {\n        callback()\n        columnMenuClose()\n      }}\n      onClose={columnMenuClose}\n      menuItems={menuItems}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n      }}\n    />\n  )\n})\n\nexport default ColumnMenu\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\n\nconst useStyles = makeStyles()({\n  sortIndicator: {\n    position: 'relative',\n    top: '0.2rem',\n    fontSize: '1rem',\n  },\n})\n\nexport default function SortIndicator({\n  model,\n  columnNumber,\n}: {\n  model: SpreadsheetModel\n  columnNumber: number\n}) {\n  const { classes } = useStyles()\n  const sortSpec = model.sortColumns.find(c => c.columnNumber === columnNumber)\n\n  if (sortSpec) {\n    const { descending } = sortSpec\n    return descending ? (\n      <KeyboardArrowUpIcon className={classes.sortIndicator} />\n    ) : (\n      <KeyboardArrowDownIcon className={classes.sortIndicator} />\n    )\n  }\n  return null\n}\n","function letterFor(n: number) {\n  return String.fromCharCode(n + 65)\n}\n\nexport function numToColName(num: number) {\n  if (num >= 0) {\n    if (num < 26) {\n      return letterFor(num)\n    }\n    if (num < 27 * 26) {\n      return letterFor(Math.floor(num / 26 - 1)) + letterFor(num % 26)\n    }\n  }\n\n  throw new RangeError('column number out of range')\n}\n","import React, { useState } from 'react'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport CropFreeIcon from '@mui/icons-material/CropFree'\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\n\n// locals\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport ColumnMenu from './ColumnMenu'\nimport SortIndicator from './SortIndicator'\nimport { numToColName } from './util'\n\ninterface ColMenu {\n  colNumber: number\n  anchorEl: HTMLElement\n}\n\nconst useStyles = makeStyles()(theme => ({\n  columnHead: {\n    fontWeight: 'normal',\n    background: theme.palette.mode === 'dark' ? '#333' : '#eee',\n    position: 'sticky',\n    top: 0,\n    zIndex: 2,\n    whiteSpace: 'nowrap',\n  },\n\n  columnButtonContainer: {\n    display: 'none',\n    position: 'absolute',\n    right: 0,\n    top: 0,\n    background: theme.palette.background.paper,\n    height: '100%',\n  },\n\n  topLeftCorner: {\n    background: theme.palette.mode === 'dark' ? '#333' : '#eee',\n    zIndex: 2,\n    position: 'sticky',\n    top: 0,\n    minWidth: theme.spacing(2),\n    textAlign: 'left',\n  },\n}))\n\nconst DataTableHeader = observer(function ({\n  model,\n}: {\n  model: SpreadsheetModel\n}) {\n  const { classes } = useStyles()\n  const { columnDisplayOrder, columns, hasColumnNames, rowSet } = model\n  const [currentColumnMenu, setColumnMenu] = useState<ColMenu>()\n  const [currentHoveredColumn, setHoveredColumn] = useState<number>()\n\n  return (\n    <>\n      <thead>\n        <tr>\n          <th className={classes.topLeftCorner}>\n            <Tooltip title=\"Unselect all\" placement=\"right\">\n              <span>\n                <IconButton\n                  onClick={() => {\n                    model.unselectAll()\n                  }}\n                  disabled={!rowSet.selectedCount}\n                >\n                  <CropFreeIcon />\n                </IconButton>\n              </span>\n            </Tooltip>\n          </th>\n          {columnDisplayOrder.map(colNumber => (\n            <th\n              className={classes.columnHead}\n              key={colNumber}\n              onMouseOver={() => {\n                setHoveredColumn(colNumber)\n              }}\n              onMouseOut={() => {\n                setHoveredColumn(undefined)\n              }}\n            >\n              <SortIndicator model={model} columnNumber={colNumber} />\n              {(hasColumnNames && columns[colNumber]!.name) ||\n                numToColName(colNumber)}\n              <div\n                className={classes.columnButtonContainer}\n                style={{\n                  display:\n                    currentHoveredColumn === colNumber ||\n                    currentColumnMenu?.colNumber === colNumber\n                      ? 'block'\n                      : 'none',\n                }}\n              >\n                <IconButton\n                  onClick={evt => {\n                    setColumnMenu({\n                      colNumber,\n                      anchorEl: evt.currentTarget,\n                    })\n                  }}\n                >\n                  <ArrowDropDown />\n                </IconButton>\n              </div>\n            </th>\n          ))}\n        </tr>\n      </thead>\n      <ColumnMenu\n        viewModel={getParent(model)}\n        spreadsheetModel={model}\n        currentColumnMenu={currentColumnMenu}\n        setColumnMenu={setColumnMenu}\n      />\n    </>\n  )\n})\n\nexport default DataTableHeader\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getParent, Instance } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport type RowStateModel from '../models/Row'\nimport RowMenu from './RowMenu'\nimport DataRow from './DataRow'\nimport DataTableHeader from './DataTableHeader'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\ntype RowModel = Instance<typeof RowStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  dataTable: {\n    borderCollapse: 'collapse',\n    '& td': {\n      border: `1px solid ${theme.palette.action.disabledBackground}`,\n      padding: '0.2rem',\n      maxWidth: '50em',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    },\n  },\n\n  emptyMessage: {\n    captionSide: 'bottom',\n  },\n}))\n\nconst DataTableBody = observer(function ({\n  rows,\n  spreadsheetModel,\n  page,\n  rowsPerPage,\n}: {\n  rows: RowModel[]\n  spreadsheetModel: SpreadsheetModel\n  page: number\n  rowsPerPage: number\n}) {\n  return (\n    <tbody>\n      {rows.slice(rowsPerPage * page, rowsPerPage * (page + 1)).map(row => (\n        <DataRow\n          key={row.id}\n          rowNumber={row.id}\n          spreadsheetModel={spreadsheetModel}\n          rowModel={row}\n        />\n      ))}\n    </tbody>\n  )\n})\n\nconst DataTable = observer(function ({\n  model,\n  page,\n  rowsPerPage,\n}: {\n  model: SpreadsheetModel\n  page: number\n  rowsPerPage: number\n}) {\n  const { rowSet } = model\n  const { classes } = useStyles()\n  const rows = rowSet.sortedFilteredRows\n  return (\n    <>\n      <RowMenu viewModel={getParent(model)} spreadsheetModel={model} />\n      <table className={classes.dataTable}>\n        <DataTableHeader model={model} />\n        <DataTableBody\n          rows={rows}\n          spreadsheetModel={model}\n          page={page}\n          rowsPerPage={rowsPerPage}\n        />\n        {!rows.length ? (\n          <caption className={classes.emptyMessage}>\n            {rowSet.count ? 'no rows match criteria' : 'no rows present'}\n          </caption>\n        ) : null}\n      </table>\n    </>\n  )\n})\n\nexport default DataTable\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport DataTable from './DataTable'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    position: 'relative',\n    marginBottom: theme.spacing(1),\n    background: theme.palette.background.paper,\n    overflow: 'auto',\n  },\n}))\n\nconst Spreadsheet = observer(function ({\n  model,\n  height,\n  page,\n  rowsPerPage,\n}: {\n  model: SpreadsheetModel\n  height: number\n  page: number\n  rowsPerPage: number\n}) {\n  const { classes } = useStyles()\n\n  return (\n    <div className={classes.root} style={{ height }}>\n      {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        model.rowSet.isLoaded && model.initialized ? (\n          <DataTable model={model} page={page} rowsPerPage={rowsPerPage} />\n        ) : (\n          <LoadingEllipses variant=\"h6\" />\n        )\n      }\n    </div>\n  )\n})\n\nexport default Spreadsheet\n","import React, { useState, useEffect } from 'react'\n\nimport { IconButton, InputAdornment, TextField } from '@mui/material'\nimport ClearIcon from '@mui/icons-material/Clear'\nimport FilterIcon from '@mui/icons-material/FilterList'\n\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { useDebounce } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()({\n  textFilterControlEndAdornment: {\n    marginRight: '-18px',\n  },\n})\n\nconst TextFilter = observer(function ({\n  textFilter,\n}: {\n  textFilter: { stringToFind: string; setString: (arg: string) => void }\n}) {\n  const { classes } = useStyles()\n  // this paragraph is silliness to debounce the text filter input\n  const [textFilterValue, setTextFilterValue] = useState(\n    textFilter.stringToFind,\n  )\n  const debouncedTextFilter = useDebounce(textFilterValue, 500)\n  useEffect(() => {\n    textFilter.setString(debouncedTextFilter)\n  }, [debouncedTextFilter, textFilter])\n\n  return (\n    <div>\n      <TextField\n        label=\"text filter\"\n        value={textFilterValue}\n        onChange={evt => {\n          setTextFilterValue(evt.target.value)\n        }}\n        variant=\"outlined\"\n        InputProps={{\n          startAdornment: (\n            <InputAdornment position=\"start\">\n              <FilterIcon />\n            </InputAdornment>\n          ),\n          endAdornment: (\n            <InputAdornment\n              className={classes.textFilterControlEndAdornment}\n              position=\"end\"\n            >\n              <IconButton\n                aria-label=\"clear filter\"\n                onClick={() => {\n                  setTextFilterValue('')\n                }}\n              >\n                <ClearIcon />\n              </IconButton>\n            </InputAdornment>\n          ),\n        }}\n      />\n    </div>\n  )\n})\n\nconst GlobalFilterControls = observer(({ model }: { model: any }) => {\n  const textFilter = model.filterControls.rowFullText\n  return <TextFilter textFilter={textFilter} />\n})\n\nexport default GlobalFilterControls\n","import React from 'react'\nimport { Grid, IconButton, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport FilterIcon from '@mui/icons-material/FilterList'\nimport CloseIcon from '@mui/icons-material/Close'\n\nconst useStyles = makeStyles()(theme => ({\n  columnName: {\n    verticalAlign: 'middle',\n    paddingRight: '0.3em',\n  },\n  columnFilter: {\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    boxSizing: 'border-box',\n    width: '100%',\n    position: 'relative',\n  },\n  filterIcon: {\n    position: 'relative',\n    top: '12px',\n  },\n  filterIconBg: {\n    background: theme.palette.tertiary.main,\n    color: 'white',\n    padding: theme.spacing(1.5),\n  },\n}))\n\nfunction FilterOperations({ filterModel }: { filterModel: any }) {\n  if (filterModel) {\n    return <filterModel.ReactComponent filterModel={filterModel} />\n  }\n  return null\n}\n\nconst ColumnFilterControls = observer(function ({\n  viewModel,\n  filterModel,\n  columnNumber,\n  height,\n}: any) {\n  const { classes } = useStyles()\n\n  const columnDefinition = viewModel.spreadsheet.columns[columnNumber]\n  if (!columnDefinition) {\n    throw new Error('no column definition! filters are probably out of date')\n  }\n  return (\n    <Grid\n      container\n      direction=\"row\"\n      className={classes.columnFilter}\n      style={{ height }}\n    >\n      <Grid item className={classes.filterIconBg}>\n        <FilterIcon className={classes.filterIcon} />\n      </Grid>\n      <Grid item>\n        <IconButton\n          onClick={() =>\n            getParent<any>(filterModel, 2).removeColumnFilter(filterModel)\n          }\n          title=\"remove filter\"\n        >\n          <CloseIcon />\n        </IconButton>\n        <Typography className={classes.columnName} component=\"span\">\n          {columnDefinition.name}\n        </Typography>{' '}\n        <FilterOperations filterModel={filterModel} />\n      </Grid>\n    </Grid>\n  )\n})\n\nexport default ColumnFilterControls\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport type { SpreadsheetModel } from '../models/Spreadsheet'\n\nconst RowCountMessage = observer(function ({\n  spreadsheet,\n}: {\n  spreadsheet: SpreadsheetModel\n}) {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (spreadsheet.rowSet.isLoaded) {\n    const {\n      passingFiltersCount,\n      count,\n      selectedCount,\n      selectedAndPassingFiltersCount,\n    } = spreadsheet.rowSet\n\n    let rowMessage: string\n    if (passingFiltersCount !== count) {\n      rowMessage = `${spreadsheet.rowSet.passingFiltersCount} rows of ${spreadsheet.rowSet.count} total`\n      if (selectedCount) {\n        rowMessage += `, ${selectedAndPassingFiltersCount} selected`\n        const selectedAndNotPassingFiltersCount =\n          selectedCount - selectedAndPassingFiltersCount\n        if (selectedAndNotPassingFiltersCount) {\n          rowMessage += ` (${selectedAndNotPassingFiltersCount} selected rows do not pass filters)`\n        }\n      }\n    } else {\n      rowMessage = `${spreadsheet.rowSet.count} rows`\n      if (selectedCount) {\n        rowMessage += `, ${selectedCount} selected`\n      }\n    }\n    return <>{rowMessage}</>\n  }\n  return null\n})\nexport default RowCountMessage\n","import React from 'react'\nimport { FormGroup, TablePagination } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport RowCountMessage from './RowCountMessage'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport { observer } from 'mobx-react'\n\nconst statusBarHeight = 40\n\nconst useStyles = makeStyles()(theme => ({\n  statusBar: {\n    height: statusBarHeight,\n    boxSizing: 'border-box',\n    borderTop: '1px outset #b1b1b1',\n    paddingLeft: theme.spacing(1),\n  },\n  verticallyCenter: {\n    display: 'flex',\n    justifyContent: 'center',\n    flexDirection: 'column',\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n}))\n\nconst StatusBar = observer(function StatusBar({\n  page,\n  rowsPerPage,\n  setPage,\n  setRowsPerPage,\n  spreadsheet,\n  mode,\n}: {\n  page: number\n  mode: string\n  spreadsheet: SpreadsheetModel\n  rowsPerPage: number\n  setPage: (arg: number) => void\n  setRowsPerPage: (arg: number) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <div\n      className={classes.statusBar}\n      style={{ display: mode === 'display' ? undefined : 'none' }}\n    >\n      <FormGroup row>\n        <div className={classes.verticallyCenter}>\n          <RowCountMessage spreadsheet={spreadsheet} />\n        </div>\n        <div className={classes.spacer} />\n        <TablePagination\n          rowsPerPageOptions={[10, 25, 100, 1000]}\n          count={spreadsheet.rowSet.count}\n          component=\"div\"\n          rowsPerPage={rowsPerPage}\n          page={page}\n          onPageChange={(_, newPage) => {\n            setPage(newPage)\n          }}\n          onRowsPerPageChange={event => {\n            setRowsPerPage(+event.target.value)\n            setPage(0)\n          }}\n        />\n        <div className={classes.spacer} />\n      </FormGroup>\n    </div>\n  )\n})\n\nexport default StatusBar\n","import React, { useState } from 'react'\nimport { Grid } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport ImportWizard from './ImportWizard'\nimport Spreadsheet from './Spreadsheet'\nimport GlobalFilterControls from './GlobalFilterControls'\nimport ColumnFilterControls from './ColumnFilterControls'\nimport { SpreadsheetViewModel } from '../models/SpreadsheetView'\nimport StatusBar from './StatusBar'\n\nconst headerHeight = 52\nconst colFilterHeight = 46\nconst statusBarHeight = 40\n\nconst useStyles = makeStyles()(theme => ({\n  header: {\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    boxSizing: 'border-box',\n    height: headerHeight,\n    paddingLeft: theme.spacing(1),\n  },\n  contentArea: {\n    overflow: 'auto',\n  },\n  resizeHandle: {\n    height: 3,\n    position: 'absolute',\n    bottom: 0,\n    left: 0,\n    background: theme.palette.action.disabled,\n    boxSizing: 'border-box',\n    borderTop: '1px solid #fafafa',\n  },\n}))\n\nconst SpreadsheetView = observer(function ({\n  model,\n}: {\n  model: SpreadsheetViewModel\n}) {\n  const { classes } = useStyles()\n  const {\n    spreadsheet,\n    filterControls,\n    hideFilterControls,\n    hideVerticalResizeHandle,\n    mode,\n    height,\n  } = model\n  const [page, setPage] = useState(0)\n  const [rowsPerPage, setRowsPerPage] = useState(100)\n\n  return (\n    <div>\n      {mode !== 'display' || hideFilterControls ? null : (\n        <>\n          <Grid container direction=\"row\" className={classes.header}>\n            <Grid item>\n              <GlobalFilterControls model={model} />\n            </Grid>\n          </Grid>\n          {filterControls.columnFilters.map((f, i) => (\n            <ColumnFilterControls\n              key={`${f.columnNumber}-${i}`}\n              viewModel={model}\n              filterModel={f}\n              columnNumber={f.columnNumber}\n              height={colFilterHeight}\n            />\n          ))}\n        </>\n      )}\n\n      {mode === 'import' ? (\n        <ImportWizard model={model.importWizard} />\n      ) : (\n        <div className={classes.contentArea}>\n          <div\n            style={{\n              position: 'relative',\n              display: mode === 'display' ? undefined : 'none',\n            }}\n          >\n            {spreadsheet ? (\n              <Spreadsheet\n                page={page}\n                rowsPerPage={rowsPerPage}\n                model={spreadsheet}\n                height={\n                  height -\n                  headerHeight -\n                  filterControls.columnFilters.length * colFilterHeight -\n                  statusBarHeight\n                }\n              />\n            ) : null}\n          </div>\n        </div>\n      )}\n      {spreadsheet ? (\n        <StatusBar\n          page={page}\n          setPage={setPage}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          mode={mode}\n          spreadsheet={spreadsheet}\n        />\n      ) : null}\n      {hideVerticalResizeHandle ? null : (\n        <ResizeHandle\n          onDrag={model.resizeHeight}\n          className={classes.resizeHandle}\n        />\n      )}\n    </div>\n  )\n})\n\nexport default SpreadsheetView\n"],"names":["useStyles","makeStyles","textField","width","verticalAlign","observer","model","disabled","modelPropName","modelSetterName","val","setVal","useState","classes","useEffect","num","Number","parseInt","isNaN","React","TextField","value","type","onChange","evt","target","className","container","margin","maxWidth","padding","session","getSession","assemblyNames","assemblyManager","fileType","canCancel","fileSource","isReadyToOpen","fileTypes","hasColumnNameLine","error","selected","setSelected","err","get","showRowControls","rootModel","getRoot","ErrorMessage","FormControl","component","FormLabel","FormGroup","FileSelector","location","setLocation","arg","setFileSource","RadioGroup","row","name","map","fileTypeName","FormControlLabel","key","checked","onClick","setFileType","control","Radio","label","labelPlacement","Checkbox","toggleHasColumnNameLine","NumberEditor","AssemblySelector","Button","variant","color","cancelButton","import","viewModel","spreadsheetModel","currentRowMenu","rowMenuPosition","setRowMenuPosition","rowMenuClose","rowNumber","undefined","rowSet","rows","menuItems","rowMenuItems","item","Menu","anchorEl","open","Boolean","onMenuItemClick","_event","callback","onClose","anchorOrigin","vertical","horizontal","cell","columnNumber","column","columns","dataType","DataCellReactComponent","spreadsheet","text","theme","rowNumCell","textAlign","border","palette","action","disabledBackground","position","whiteSpace","userSelect","fontWeight","display","flex","paddingRight","rowMenuButton","right","rowMenuButtonIcon","rowSelector","top","dataRowSelected","background","indigo","rowModel","hideRowSelection","columnDisplayOrder","rowClass","labelClick","toggleSelect","stopPropagation","preventDefault","isSelected","id","IconButton","event","currentTarget","ArrowDropDown","colNumber","CellData","cellsWithDerived","currentColumnMenu","setColumnMenu","columnMenuClose","sortMenuClick","descending","setSortColumns","dataTypeChoices","dataTypeTopLevelMenu","Map","forEach","dataTypeRecord","displayName","categoryName","entry","isCategory","subMenuItems","set","push","sortColumns","dataTypeName","dataTypeDisplayName","isSortingAscending","some","c","isSortingDescending","icon","SortIcon","PermDataSettingIcon","subMenu","iterMap","entries","record","typeName","CheckIcon","setColumnType","i","filter","hasFilter","FilterListIcon","filterControls","addBlankColumnFilter","sortIndicator","fontSize","SortIndicator","sortSpec","find","KeyboardArrowUpIcon","KeyboardArrowDownIcon","letterFor","n","String","fromCharCode","columnHead","mode","zIndex","columnButtonContainer","paper","height","topLeftCorner","minWidth","spacing","hasColumnNames","currentHoveredColumn","setHoveredColumn","Tooltip","title","placement","unselectAll","selectedCount","CropFreeIcon","onMouseOver","onMouseOut","Math","floor","RangeError","numToColName","style","ColumnMenu","getParent","dataTable","borderCollapse","overflow","textOverflow","emptyMessage","captionSide","DataTableBody","page","rowsPerPage","slice","DataRow","sortedFilteredRows","RowMenu","DataTableHeader","length","count","root","marginBottom","isLoaded","initialized","DataTable","LoadingEllipses","textFilterControlEndAdornment","marginRight","TextFilter","textFilter","textFilterValue","setTextFilterValue","stringToFind","debouncedTextFilter","useDebounce","setString","InputProps","startAdornment","InputAdornment","FilterIcon","endAdornment","ClearIcon","rowFullText","columnName","columnFilter","boxSizing","filterIcon","filterIconBg","tertiary","main","FilterOperations","filterModel","ReactComponent","columnDefinition","Error","Grid","direction","removeColumnFilter","CloseIcon","Typography","passingFiltersCount","selectedAndPassingFiltersCount","rowMessage","selectedAndNotPassingFiltersCount","statusBar","borderTop","paddingLeft","verticallyCenter","justifyContent","flexDirection","spacer","flexGrow","setPage","setRowsPerPage","RowCountMessage","TablePagination","rowsPerPageOptions","onPageChange","_","newPage","onRowsPerPageChange","header","contentArea","resizeHandle","bottom","left","hideFilterControls","hideVerticalResizeHandle","GlobalFilterControls","columnFilters","f","ColumnFilterControls","ImportWizard","importWizard","Spreadsheet","StatusBar","ResizeHandle","onDrag","resizeHeight"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8556.0053a402.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8556],{78556:(e,n,o)=>{o.r(n),o.d(n,{default:()=>c});var t=o(7552),l=o(29499),r=o(36715),a=o(58507),i=o(5401),s=o(49823);function c({onClose:e,plugin:n}){return t.createElement(s.Dialog,{open:!0,onClose:()=>{e()},title:`Remove ${n}`},t.createElement(l.A,null,t.createElement(r.A,null,"Please confirm that you want to remove ",n,"."),t.createElement(r.A,{color:"error"},"Note: if any resources in this session still use this plugin, it may cause your session to crash")),t.createElement(a.A,null,t.createElement(i.A,{variant:"contained",color:"primary",onClick:()=>{window.setTimeout((()=>{e(n)}),500)}},"Confirm"),t.createElement(i.A,{variant:"contained",color:"secondary",onClick:()=>{e()}},"Cancel")))}}}]);
+//# sourceMappingURL=8556.0053a402.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8556.0053a402.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8556.0053a402.chunk.js","mappings":"2NAIe,SAASA,GAAmB,QACzCC,EAAO,OACPC,IAKA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CACLC,MAAI,EACJJ,QAASA,KACPA,GAAS,EAEXK,MAAO,UAAUJ,KAEjBC,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAU,KAAC,0CAC8BN,EAAO,KAEjDC,EAAAA,cAACK,EAAAA,EAAU,CAACC,MAAM,SAAQ,qGAK5BN,EAAAA,cAACO,EAAAA,EAAa,KACZP,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAAQ,YACRH,MAAM,UACNI,QAASA,KAEPC,OAAOC,YAAW,KAChBd,EAAQC,EAAO,GACd,IAAI,GAEV,WAGDC,EAAAA,cAACQ,EAAAA,EAAM,CACLC,QAAQ,YACRH,MAAM,YACNI,QAASA,KACPZ,GAAS,GAEZ,WAMT,C","sources":["../../../plugins/data-management/src/PluginStoreWidget/components/DeletePluginDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Button, DialogActions, DialogContent, Typography } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport default function DeletePluginDialog({\n  onClose,\n  plugin,\n}: {\n  plugin: string\n  onClose: (s?: string) => void\n}) {\n  return (\n    <Dialog\n      open\n      onClose={() => {\n        onClose()\n      }}\n      title={`Remove ${plugin}`}\n    >\n      <DialogContent>\n        <Typography>\n          Please confirm that you want to remove {plugin}.\n        </Typography>\n        <Typography color=\"error\">\n          Note: if any resources in this session still use this plugin, it may\n          cause your session to crash\n        </Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={() => {\n            // avoid showing runtime plugin warning\n            window.setTimeout(() => {\n              onClose(plugin)\n            }, 500)\n          }}\n        >\n          Confirm\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            onClose()\n          }}\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["DeletePluginDialog","onClose","plugin","React","Dialog","open","title","DialogContent","Typography","color","DialogActions","Button","variant","onClick","window","setTimeout"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8565.c4ea9980.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8565],{15560:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(7552).createContext()},70156:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(7552).createContext()},75199:(e,t,o)=>{o.d(t,{A:()=>b});var a=o(7552),n=o(93878),s=o(70799),i=o(72639),l=o(15622),r=o(15560),c=o(70156),d=o(51148),p=o(60129),g=o(4785),u=o(48459),h=o(69500);const A=(0,d.Ay)("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`size${(0,l.A)(o.size)}`],"normal"!==o.padding&&t[`padding${(0,l.A)(o.padding)}`],"inherit"!==o.align&&t[`align${(0,l.A)(o.align)}`],o.stickyHeader&&t.stickyHeader]}})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid\n    ${"light"===e.palette.mode?(0,i.a)((0,i.X4)(e.palette.divider,1),.88):(0,i.e$)((0,i.X4)(e.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(e.vars||e).palette.text.primary}},{props:{variant:"footer"},style:{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${u.A.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:e})=>e.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default}}]})))),b=a.forwardRef((function(e,t){const o=(0,g.b)({props:e,name:"MuiTableCell"}),{align:i="inherit",className:d,component:p,padding:b,scope:m,size:x,sortDirection:y,variant:v,...f}=o,w=a.useContext(r.A),B=a.useContext(c.A),I=B&&"head"===B.variant;let P;P=p||(I?"th":"td");let R=m;"td"===P?R=void 0:!R&&I&&(R="col");const k=v||B&&B.variant,j={...o,align:i,component:P,padding:b||(w&&w.padding?w.padding:"normal"),size:x||(w&&w.size?w.size:"medium"),sortDirection:y,stickyHeader:"head"===k&&w&&w.stickyHeader,variant:k},M=(e=>{const{classes:t,variant:o,align:a,padding:n,size:i,stickyHeader:r}=e,c={root:["root",o,r&&"stickyHeader","inherit"!==a&&`align${(0,l.A)(a)}`,"normal"!==n&&`padding${(0,l.A)(n)}`,`size${(0,l.A)(i)}`]};return(0,s.A)(c,u.r,t)})(j);let C=null;return y&&(C="asc"===y?"ascending":"descending"),(0,h.jsx)(A,{as:P,ref:t,className:(0,n.A)(M.root,d),"aria-sort":C,scope:R,ownerState:j,...f})}))},48459:(e,t,o)=>{o.d(t,{A:()=>i,r:()=>s});var a=o(33761),n=o(85693);function s(e){return(0,n.Ay)("MuiTableCell",e)}const i=(0,a.A)("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"])},8565:(e,t,o)=>{o.d(t,{A:()=>S});var a=o(7552),n=o(93878),s=o(70799),i=o(23879),l=o(51148),r=o(60129),c=o(4785),d=o(98879),p=o(29629),g=o(98360),u=o(75199),h=o(17515),A=o(93876),b=o(129),m=o(20168),x=o(61723),y=o(27103),v=o(30627),f=o(69500);const w=a.forwardRef((function(e,t){const{backIconButtonProps:o,count:a,disabled:n=!1,getItemAriaLabel:s,nextIconButtonProps:i,onPageChange:l,page:r,rowsPerPage:c,showFirstButton:d,showLastButton:p,slots:g={},slotProps:u={},...h}=e,w=(0,A.I)(),B=g.firstButton??x.A,I=g.lastButton??x.A,P=g.nextButton??x.A,R=g.previousButton??x.A,k=g.firstButtonIcon??v.A,j=g.lastButtonIcon??y.A,M=g.nextButtonIcon??m.A,C=g.previousButtonIcon??b.A,L=w?I:B,T=w?P:R,z=w?R:P,$=w?B:I,S=w?u.lastButton:u.firstButton,H=w?u.nextButton:u.previousButton,N=w?u.previousButton:u.nextButton,D=w?u.firstButton:u.lastButton;return(0,f.jsxs)("div",{ref:t,...h,children:[d&&(0,f.jsx)(L,{onClick:e=>{l(e,0)},disabled:n||0===r,"aria-label":s("first",r),title:s("first",r),...S,children:w?(0,f.jsx)(j,{...u.lastButtonIcon}):(0,f.jsx)(k,{...u.firstButtonIcon})}),(0,f.jsx)(T,{onClick:e=>{l(e,r-1)},disabled:n||0===r,color:"inherit","aria-label":s("previous",r),title:s("previous",r),...H??o,children:w?(0,f.jsx)(M,{...u.nextButtonIcon}):(0,f.jsx)(C,{...u.previousButtonIcon})}),(0,f.jsx)(z,{onClick:e=>{l(e,r+1)},disabled:n||-1!==a&&r>=Math.ceil(a/c)-1,color:"inherit","aria-label":s("next",r),title:s("next",r),...N??i,children:w?(0,f.jsx)(C,{...u.previousButtonIcon}):(0,f.jsx)(M,{...u.nextButtonIcon})}),p&&(0,f.jsx)($,{onClick:e=>{l(e,Math.max(0,Math.ceil(a/c)-1))},disabled:n||r>=Math.ceil(a/c)-1,"aria-label":s("last",r),title:s("last",r),...D,children:w?(0,f.jsx)(k,{...u.firstButtonIcon}):(0,f.jsx)(j,{...u.lastButtonIcon})})]})}));var B,I=o(89456),P=o(85663);const R=(0,l.Ay)(u.A,{name:"MuiTablePagination",slot:"Root",overridesResolver:(e,t)=>t.root})((0,r.A)((({theme:e})=>({overflow:"auto",color:(e.vars||e).palette.text.primary,fontSize:e.typography.pxToRem(14),"&:last-child":{padding:0}})))),k=(0,l.Ay)(h.A,{name:"MuiTablePagination",slot:"Toolbar",overridesResolver:(e,t)=>({[`& .${P.A.actions}`]:t.actions,...t.toolbar})})((0,r.A)((({theme:e})=>({minHeight:52,paddingRight:2,[`${e.breakpoints.up("xs")} and (orientation: landscape)`]:{minHeight:52},[e.breakpoints.up("sm")]:{minHeight:52,paddingRight:2},[`& .${P.A.actions}`]:{flexShrink:0,marginLeft:20}})))),j=(0,l.Ay)("div",{name:"MuiTablePagination",slot:"Spacer",overridesResolver:(e,t)=>t.spacer})({flex:"1 1 100%"}),M=(0,l.Ay)("p",{name:"MuiTablePagination",slot:"SelectLabel",overridesResolver:(e,t)=>t.selectLabel})((0,r.A)((({theme:e})=>({...e.typography.body2,flexShrink:0})))),C=(0,l.Ay)(g.A,{name:"MuiTablePagination",slot:"Select",overridesResolver:(e,t)=>({[`& .${P.A.selectIcon}`]:t.selectIcon,[`& .${P.A.select}`]:t.select,...t.input,...t.selectRoot})})({color:"inherit",fontSize:"inherit",flexShrink:0,marginRight:32,marginLeft:8,[`& .${P.A.select}`]:{paddingLeft:8,paddingRight:24,textAlign:"right",textAlignLast:"right"}}),L=(0,l.Ay)(p.A,{name:"MuiTablePagination",slot:"MenuItem",overridesResolver:(e,t)=>t.menuItem})({}),T=(0,l.Ay)("p",{name:"MuiTablePagination",slot:"DisplayedRows",overridesResolver:(e,t)=>t.displayedRows})((0,r.A)((({theme:e})=>({...e.typography.body2,flexShrink:0}))));function z({from:e,to:t,count:o}){return`${e}–${t} of ${-1!==o?o:`more than ${t}`}`}function $(e){return`Go to ${e} page`}const S=a.forwardRef((function(e,t){const o=(0,c.b)({props:e,name:"MuiTablePagination"}),{ActionsComponent:l=w,backIconButtonProps:r,className:p,colSpan:g,component:h=u.A,count:A,disabled:b=!1,getItemAriaLabel:m=$,labelDisplayedRows:x=z,labelRowsPerPage:y="Rows per page:",nextIconButtonProps:v,onPageChange:S,onRowsPerPageChange:H,page:N,rowsPerPage:D,rowsPerPageOptions:F=[10,25,50,100],SelectProps:_={},showFirstButton:K=!1,showLastButton:W=!1,slotProps:X={},slots:E={},...G}=o,J=o,O=(e=>{const{classes:t}=e;return(0,s.A)({root:["root"],toolbar:["toolbar"],spacer:["spacer"],selectLabel:["selectLabel"],select:["select"],input:["input"],selectIcon:["selectIcon"],menuItem:["menuItem"],displayedRows:["displayedRows"],actions:["actions"]},P.B,t)})(J),q=X?.select??_,Q=q.native?"option":L;let U;h!==u.A&&"td"!==h||(U=g||1e3);const V=(0,I.A)(q.id),Y=(0,I.A)(q.labelId);return(0,f.jsx)(R,{colSpan:U,ref:t,as:h,ownerState:J,className:(0,n.A)(O.root,p),...G,children:(0,f.jsxs)(k,{className:O.toolbar,children:[(0,f.jsx)(j,{className:O.spacer}),F.length>1&&(0,f.jsx)(M,{className:O.selectLabel,id:Y,children:y}),F.length>1&&(0,f.jsx)(C,{variant:"standard",...!q.variant&&{input:B||(B=(0,f.jsx)(d.Ay,{}))},value:D,onChange:H,id:V,labelId:Y,...q,classes:{...q.classes,root:(0,n.A)(O.input,O.selectRoot,(q.classes||{}).root),select:(0,n.A)(O.select,(q.classes||{}).select),icon:(0,n.A)(O.selectIcon,(q.classes||{}).icon)},disabled:b,children:F.map((e=>(0,a.createElement)(Q,{...!(0,i.A)(Q)&&{ownerState:J},className:O.menuItem,key:e.label?e.label:e,value:e.value?e.value:e},e.label?e.label:e)))}),(0,f.jsx)(T,{className:O.displayedRows,children:x({from:0===A?0:N*D+1,to:-1===A?(N+1)*D:-1===D?A:Math.min(A,(N+1)*D),count:-1===A?-1:A,page:N})}),(0,f.jsx)(l,{className:O.actions,backIconButtonProps:r,count:A,nextIconButtonProps:v,onPageChange:S,page:N,rowsPerPage:D,showFirstButton:K,showLastButton:W,slotProps:X.actions,slots:E.actions,getItemAriaLabel:m,disabled:b})]})})}))},85663:(e,t,o)=>{o.d(t,{A:()=>i,B:()=>s});var a=o(33761),n=o(85693);function s(e){return(0,n.Ay)("MuiTablePagination",e)}const i=(0,a.A)("MuiTablePagination",["root","toolbar","spacer","selectLabel","selectRoot","select","selectIcon","input","menuItem","displayedRows","actions"])},30627:(e,t,o)=>{o.d(t,{A:()=>s}),o(7552);var a=o(74893),n=o(69500);const s=(0,a.A)((0,n.jsx)("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"}),"FirstPage")},129:(e,t,o)=>{o.d(t,{A:()=>s}),o(7552);var a=o(74893),n=o(69500);const s=(0,a.A)((0,n.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft")},20168:(e,t,o)=>{o.d(t,{A:()=>s}),o(7552);var a=o(74893),n=o(69500);const s=(0,a.A)((0,n.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight")},27103:(e,t,o)=>{o.d(t,{A:()=>s}),o(7552);var a=o(74893),n=o(69500);const s=(0,a.A)((0,n.jsx)("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"}),"LastPage")}}]);
+//# sourceMappingURL=8565.c4ea9980.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8565.c4ea9980.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8565.c4ea9980.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Table/TableContext.js","../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableCell/TableCell.js","../../../node_modules/@mui/material/TableCell/tableCellClasses.js","../../../node_modules/@mui/material/TablePagination/TablePaginationActions.js","../../../node_modules/@mui/material/TablePagination/TablePagination.js","../../../node_modules/@mui/material/TablePagination/tablePaginationClasses.js","../../../node_modules/@mui/material/internal/svg-icons/FirstPage.js","../../../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../../../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../../../node_modules/@mui/material/internal/svg-icons/LastPage.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, alpha, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport TableContext from \"../Table/TableContext.js\";\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableCellClasses, { getTableCellUtilityClass } from \"./tableCellClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16,\n  variants: [{\n    props: {\n      variant: 'head'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary,\n      lineHeight: theme.typography.pxToRem(24),\n      fontWeight: theme.typography.fontWeightMedium\n    }\n  }, {\n    props: {\n      variant: 'body'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary\n    }\n  }, {\n    props: {\n      variant: 'footer'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      lineHeight: theme.typography.pxToRem(21),\n      fontSize: theme.typography.pxToRem(12)\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: '6px 16px',\n      [`&.${tableCellClasses.paddingCheckbox}`]: {\n        width: 24,\n        // prevent the checkbox column from growing\n        padding: '0 12px 0 16px',\n        '& > *': {\n          padding: 0\n        }\n      }\n    }\n  }, {\n    props: {\n      padding: 'checkbox'\n    },\n    style: {\n      width: 48,\n      // prevent the checkbox column from growing\n      padding: '0 0 0 4px'\n    }\n  }, {\n    props: {\n      padding: 'none'\n    },\n    style: {\n      padding: 0\n    }\n  }, {\n    props: {\n      align: 'left'\n    },\n    style: {\n      textAlign: 'left'\n    }\n  }, {\n    props: {\n      align: 'center'\n    },\n    style: {\n      textAlign: 'center'\n    }\n  }, {\n    props: {\n      align: 'right'\n    },\n    style: {\n      textAlign: 'right',\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      align: 'justify'\n    },\n    style: {\n      textAlign: 'justify'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 2,\n      backgroundColor: (theme.vars || theme).palette.background.default\n    }\n  }]\n})));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/React.forwardRef(function TableCell(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n    align = 'inherit',\n    className,\n    component: componentProp,\n    padding: paddingProp,\n    scope: scopeProp,\n    size: sizeProp,\n    sortDirection,\n    variant: variantProp,\n    ...other\n  } = props;\n  const table = React.useContext(TableContext);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = {\n    ...props,\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/_jsx(TableCellRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body', 'footer', 'head']), PropTypes.string])\n} : void 0;\nexport default TableCell;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n  return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport KeyboardArrowLeft from \"../internal/svg-icons/KeyboardArrowLeft.js\";\nimport KeyboardArrowRight from \"../internal/svg-icons/KeyboardArrowRight.js\";\nimport IconButton from \"../IconButton/index.js\";\nimport LastPageIconDefault from \"../internal/svg-icons/LastPage.js\";\nimport FirstPageIconDefault from \"../internal/svg-icons/FirstPage.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TablePaginationActions = /*#__PURE__*/React.forwardRef(function TablePaginationActions(props, ref) {\n  const {\n    backIconButtonProps,\n    count,\n    disabled = false,\n    getItemAriaLabel,\n    nextIconButtonProps,\n    onPageChange,\n    page,\n    rowsPerPage,\n    showFirstButton,\n    showLastButton,\n    slots = {},\n    slotProps = {},\n    ...other\n  } = props;\n  const isRtl = useRtl();\n  const handleFirstPageButtonClick = event => {\n    onPageChange(event, 0);\n  };\n  const handleBackButtonClick = event => {\n    onPageChange(event, page - 1);\n  };\n  const handleNextButtonClick = event => {\n    onPageChange(event, page + 1);\n  };\n  const handleLastPageButtonClick = event => {\n    onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n  };\n  const FirstButton = slots.firstButton ?? IconButton;\n  const LastButton = slots.lastButton ?? IconButton;\n  const NextButton = slots.nextButton ?? IconButton;\n  const PreviousButton = slots.previousButton ?? IconButton;\n  const FirstButtonIcon = slots.firstButtonIcon ?? FirstPageIconDefault;\n  const LastButtonIcon = slots.lastButtonIcon ?? LastPageIconDefault;\n  const NextButtonIcon = slots.nextButtonIcon ?? KeyboardArrowRight;\n  const PreviousButtonIcon = slots.previousButtonIcon ?? KeyboardArrowLeft;\n  const FirstButtonSlot = isRtl ? LastButton : FirstButton;\n  const PreviousButtonSlot = isRtl ? NextButton : PreviousButton;\n  const NextButtonSlot = isRtl ? PreviousButton : NextButton;\n  const LastButtonSlot = isRtl ? FirstButton : LastButton;\n  const firstButtonSlotProps = isRtl ? slotProps.lastButton : slotProps.firstButton;\n  const previousButtonSlotProps = isRtl ? slotProps.nextButton : slotProps.previousButton;\n  const nextButtonSlotProps = isRtl ? slotProps.previousButton : slotProps.nextButton;\n  const lastButtonSlotProps = isRtl ? slotProps.firstButton : slotProps.lastButton;\n  return /*#__PURE__*/_jsxs(\"div\", {\n    ref: ref,\n    ...other,\n    children: [showFirstButton && /*#__PURE__*/_jsx(FirstButtonSlot, {\n      onClick: handleFirstPageButtonClick,\n      disabled: disabled || page === 0,\n      \"aria-label\": getItemAriaLabel('first', page),\n      title: getItemAriaLabel('first', page),\n      ...firstButtonSlotProps,\n      children: isRtl ? /*#__PURE__*/_jsx(LastButtonIcon, {\n        ...slotProps.lastButtonIcon\n      }) : /*#__PURE__*/_jsx(FirstButtonIcon, {\n        ...slotProps.firstButtonIcon\n      })\n    }), /*#__PURE__*/_jsx(PreviousButtonSlot, {\n      onClick: handleBackButtonClick,\n      disabled: disabled || page === 0,\n      color: \"inherit\",\n      \"aria-label\": getItemAriaLabel('previous', page),\n      title: getItemAriaLabel('previous', page),\n      ...(previousButtonSlotProps ?? backIconButtonProps),\n      children: isRtl ? /*#__PURE__*/_jsx(NextButtonIcon, {\n        ...slotProps.nextButtonIcon\n      }) : /*#__PURE__*/_jsx(PreviousButtonIcon, {\n        ...slotProps.previousButtonIcon\n      })\n    }), /*#__PURE__*/_jsx(NextButtonSlot, {\n      onClick: handleNextButtonClick,\n      disabled: disabled || (count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false),\n      color: \"inherit\",\n      \"aria-label\": getItemAriaLabel('next', page),\n      title: getItemAriaLabel('next', page),\n      ...(nextButtonSlotProps ?? nextIconButtonProps),\n      children: isRtl ? /*#__PURE__*/_jsx(PreviousButtonIcon, {\n        ...slotProps.previousButtonIcon\n      }) : /*#__PURE__*/_jsx(NextButtonIcon, {\n        ...slotProps.nextButtonIcon\n      })\n    }), showLastButton && /*#__PURE__*/_jsx(LastButtonSlot, {\n      onClick: handleLastPageButtonClick,\n      disabled: disabled || page >= Math.ceil(count / rowsPerPage) - 1,\n      \"aria-label\": getItemAriaLabel('last', page),\n      title: getItemAriaLabel('last', page),\n      ...lastButtonSlotProps,\n      children: isRtl ? /*#__PURE__*/_jsx(FirstButtonIcon, {\n        ...slotProps.firstButtonIcon\n      }) : /*#__PURE__*/_jsx(LastButtonIcon, {\n        ...slotProps.lastButtonIcon\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TablePaginationActions.propTypes = {\n  /**\n   * Props applied to the back arrow [`IconButton`](/material-ui/api/icon-button/) element.\n   */\n  backIconButtonProps: PropTypes.object,\n  /**\n   * The total number of rows.\n   */\n  count: PropTypes.number.isRequired,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   *\n   * @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous'). Defaults to 'page'.\n   * @param {number} page The page number to format.\n   * @returns {string}\n   */\n  getItemAriaLabel: PropTypes.func.isRequired,\n  /**\n   * Props applied to the next arrow [`IconButton`](/material-ui/api/icon-button/) element.\n   */\n  nextIconButtonProps: PropTypes.object,\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onPageChange: PropTypes.func.isRequired,\n  /**\n   * The zero-based index of the current page.\n   */\n  page: PropTypes.number.isRequired,\n  /**\n   * The number of rows per page.\n   */\n  rowsPerPage: PropTypes.number.isRequired,\n  /**\n   * If `true`, show the first-page button.\n   */\n  showFirstButton: PropTypes.bool.isRequired,\n  /**\n   * If `true`, show the last-page button.\n   */\n  showLastButton: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the TablePaginationActions.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    firstButton: PropTypes.object,\n    firstButtonIcon: PropTypes.object,\n    lastButton: PropTypes.object,\n    lastButtonIcon: PropTypes.object,\n    nextButton: PropTypes.object,\n    nextButtonIcon: PropTypes.object,\n    previousButton: PropTypes.object,\n    previousButtonIcon: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside the TablePaginationActions.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    firstButton: PropTypes.elementType,\n    firstButtonIcon: PropTypes.elementType,\n    lastButton: PropTypes.elementType,\n    lastButtonIcon: PropTypes.elementType,\n    nextButton: PropTypes.elementType,\n    nextButtonIcon: PropTypes.elementType,\n    previousButton: PropTypes.elementType,\n    previousButtonIcon: PropTypes.elementType\n  })\n} : void 0;\nexport default TablePaginationActions;","'use client';\n\nvar _InputBase;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport InputBase from \"../InputBase/index.js\";\nimport MenuItem from \"../MenuItem/index.js\";\nimport Select from \"../Select/index.js\";\nimport TableCell from \"../TableCell/index.js\";\nimport Toolbar from \"../Toolbar/index.js\";\nimport TablePaginationActions from \"./TablePaginationActions.js\";\nimport useId from \"../utils/useId.js\";\nimport tablePaginationClasses, { getTablePaginationUtilityClass } from \"./tablePaginationClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nconst TablePaginationRoot = styled(TableCell, {\n  name: 'MuiTablePagination',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => ({\n  overflow: 'auto',\n  color: (theme.vars || theme).palette.text.primary,\n  fontSize: theme.typography.pxToRem(14),\n  // Increase the specificity to override TableCell.\n  '&:last-child': {\n    padding: 0\n  }\n})));\nconst TablePaginationToolbar = styled(Toolbar, {\n  name: 'MuiTablePagination',\n  slot: 'Toolbar',\n  overridesResolver: (props, styles) => ({\n    [`& .${tablePaginationClasses.actions}`]: styles.actions,\n    ...styles.toolbar\n  })\n})(memoTheme(({\n  theme\n}) => ({\n  minHeight: 52,\n  paddingRight: 2,\n  [`${theme.breakpoints.up('xs')} and (orientation: landscape)`]: {\n    minHeight: 52\n  },\n  [theme.breakpoints.up('sm')]: {\n    minHeight: 52,\n    paddingRight: 2\n  },\n  [`& .${tablePaginationClasses.actions}`]: {\n    flexShrink: 0,\n    marginLeft: 20\n  }\n})));\nconst TablePaginationSpacer = styled('div', {\n  name: 'MuiTablePagination',\n  slot: 'Spacer',\n  overridesResolver: (props, styles) => styles.spacer\n})({\n  flex: '1 1 100%'\n});\nconst TablePaginationSelectLabel = styled('p', {\n  name: 'MuiTablePagination',\n  slot: 'SelectLabel',\n  overridesResolver: (props, styles) => styles.selectLabel\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  flexShrink: 0\n})));\nconst TablePaginationSelect = styled(Select, {\n  name: 'MuiTablePagination',\n  slot: 'Select',\n  overridesResolver: (props, styles) => ({\n    [`& .${tablePaginationClasses.selectIcon}`]: styles.selectIcon,\n    [`& .${tablePaginationClasses.select}`]: styles.select,\n    ...styles.input,\n    ...styles.selectRoot\n  })\n})({\n  color: 'inherit',\n  fontSize: 'inherit',\n  flexShrink: 0,\n  marginRight: 32,\n  marginLeft: 8,\n  [`& .${tablePaginationClasses.select}`]: {\n    paddingLeft: 8,\n    paddingRight: 24,\n    textAlign: 'right',\n    textAlignLast: 'right' // Align <select> on Chrome.\n  }\n});\nconst TablePaginationMenuItem = styled(MenuItem, {\n  name: 'MuiTablePagination',\n  slot: 'MenuItem',\n  overridesResolver: (props, styles) => styles.menuItem\n})({});\nconst TablePaginationDisplayedRows = styled('p', {\n  name: 'MuiTablePagination',\n  slot: 'DisplayedRows',\n  overridesResolver: (props, styles) => styles.displayedRows\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  flexShrink: 0\n})));\nfunction defaultLabelDisplayedRows({\n  from,\n  to,\n  count\n}) {\n  return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;\n}\nfunction defaultGetAriaLabel(type) {\n  return `Go to ${type} page`;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    toolbar: ['toolbar'],\n    spacer: ['spacer'],\n    selectLabel: ['selectLabel'],\n    select: ['select'],\n    input: ['input'],\n    selectIcon: ['selectIcon'],\n    menuItem: ['menuItem'],\n    displayedRows: ['displayedRows'],\n    actions: ['actions']\n  };\n  return composeClasses(slots, getTablePaginationUtilityClass, classes);\n};\n\n/**\n * A `TableCell` based component for placing inside `TableFooter` for pagination.\n */\nconst TablePagination = /*#__PURE__*/React.forwardRef(function TablePagination(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTablePagination'\n  });\n  const {\n    ActionsComponent = TablePaginationActions,\n    backIconButtonProps,\n    className,\n    colSpan: colSpanProp,\n    component = TableCell,\n    count,\n    disabled = false,\n    getItemAriaLabel = defaultGetAriaLabel,\n    labelDisplayedRows = defaultLabelDisplayedRows,\n    labelRowsPerPage = 'Rows per page:',\n    nextIconButtonProps,\n    onPageChange,\n    onRowsPerPageChange,\n    page,\n    rowsPerPage,\n    rowsPerPageOptions = [10, 25, 50, 100],\n    SelectProps = {},\n    showFirstButton = false,\n    showLastButton = false,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const selectProps = slotProps?.select ?? SelectProps;\n  const MenuItemComponent = selectProps.native ? 'option' : TablePaginationMenuItem;\n  let colSpan;\n  if (component === TableCell || component === 'td') {\n    colSpan = colSpanProp || 1000; // col-span over everything\n  }\n  const selectId = useId(selectProps.id);\n  const labelId = useId(selectProps.labelId);\n  const getLabelDisplayedRowsTo = () => {\n    if (count === -1) {\n      return (page + 1) * rowsPerPage;\n    }\n    return rowsPerPage === -1 ? count : Math.min(count, (page + 1) * rowsPerPage);\n  };\n  return /*#__PURE__*/_jsx(TablePaginationRoot, {\n    colSpan: colSpan,\n    ref: ref,\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ...other,\n    children: /*#__PURE__*/_jsxs(TablePaginationToolbar, {\n      className: classes.toolbar,\n      children: [/*#__PURE__*/_jsx(TablePaginationSpacer, {\n        className: classes.spacer\n      }), rowsPerPageOptions.length > 1 && /*#__PURE__*/_jsx(TablePaginationSelectLabel, {\n        className: classes.selectLabel,\n        id: labelId,\n        children: labelRowsPerPage\n      }), rowsPerPageOptions.length > 1 && /*#__PURE__*/_jsx(TablePaginationSelect, {\n        variant: \"standard\",\n        ...(!selectProps.variant && {\n          input: _InputBase || (_InputBase = /*#__PURE__*/_jsx(InputBase, {}))\n        }),\n        value: rowsPerPage,\n        onChange: onRowsPerPageChange,\n        id: selectId,\n        labelId: labelId,\n        ...selectProps,\n        classes: {\n          ...selectProps.classes,\n          // TODO v5 remove `classes.input`\n          root: clsx(classes.input, classes.selectRoot, (selectProps.classes || {}).root),\n          select: clsx(classes.select, (selectProps.classes || {}).select),\n          // TODO v5 remove `selectIcon`\n          icon: clsx(classes.selectIcon, (selectProps.classes || {}).icon)\n        },\n        disabled: disabled,\n        children: rowsPerPageOptions.map(rowsPerPageOption => /*#__PURE__*/_createElement(MenuItemComponent, {\n          ...(!isHostComponent(MenuItemComponent) && {\n            ownerState\n          }),\n          className: classes.menuItem,\n          key: rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption,\n          value: rowsPerPageOption.value ? rowsPerPageOption.value : rowsPerPageOption\n        }, rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption))\n      }), /*#__PURE__*/_jsx(TablePaginationDisplayedRows, {\n        className: classes.displayedRows,\n        children: labelDisplayedRows({\n          from: count === 0 ? 0 : page * rowsPerPage + 1,\n          to: getLabelDisplayedRowsTo(),\n          count: count === -1 ? -1 : count,\n          page\n        })\n      }), /*#__PURE__*/_jsx(ActionsComponent, {\n        className: classes.actions,\n        backIconButtonProps: backIconButtonProps,\n        count: count,\n        nextIconButtonProps: nextIconButtonProps,\n        onPageChange: onPageChange,\n        page: page,\n        rowsPerPage: rowsPerPage,\n        showFirstButton: showFirstButton,\n        showLastButton: showLastButton,\n        slotProps: slotProps.actions,\n        slots: slots.actions,\n        getItemAriaLabel: getItemAriaLabel,\n        disabled: disabled\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TablePagination.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The component used for displaying the actions.\n   * Either a string to use a HTML element or a component.\n   * @default TablePaginationActions\n   */\n  ActionsComponent: PropTypes.elementType,\n  /**\n   * Props applied to the back arrow [`IconButton`](https://mui.com/material-ui/api/icon-button/) component.\n   *\n   * This prop is an alias for `slotProps.actions.previousButton` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.actions.previousButton` instead.\n   */\n  backIconButtonProps: PropTypes.object,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  colSpan: PropTypes.number,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The total number of rows.\n   *\n   * To enable server side pagination for an unknown number of items, provide -1.\n   */\n  count: integerPropType.isRequired,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   * This is important for screen reader users.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @param {string} type The link or button type to format ('first' | 'last' | 'next' | 'previous').\n   * @returns {string}\n   * @default function defaultGetAriaLabel(type) {\n   *   return `Go to ${type} page`;\n   * }\n   */\n  getItemAriaLabel: PropTypes.func,\n  /**\n   * Customize the displayed rows label. Invoked with a `{ from, to, count, page }`\n   * object.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default function defaultLabelDisplayedRows({ from, to, count }) {\n   *   return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;\n   * }\n   */\n  labelDisplayedRows: PropTypes.func,\n  /**\n   * Customize the rows per page label.\n   *\n   * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/).\n   * @default 'Rows per page:'\n   */\n  labelRowsPerPage: PropTypes.node,\n  /**\n   * Props applied to the next arrow [`IconButton`](https://mui.com/material-ui/api/icon-button/) element.\n   *\n   * This prop is an alias for `slotProps.actions.nextButton` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.actions.nextButton` instead.\n   */\n  nextIconButtonProps: PropTypes.object,\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {React.MouseEvent<HTMLButtonElement> | null} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onPageChange: PropTypes.func.isRequired,\n  /**\n   * Callback fired when the number of rows per page is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   */\n  onRowsPerPageChange: PropTypes.func,\n  /**\n   * The zero-based index of the current page.\n   */\n  page: chainPropTypes(integerPropType.isRequired, props => {\n    const {\n      count,\n      page,\n      rowsPerPage\n    } = props;\n    if (count === -1) {\n      return null;\n    }\n    const newLastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1);\n    if (page < 0 || page > newLastPage) {\n      return new Error('MUI: The page prop of a TablePagination is out of range ' + `(0 to ${newLastPage}, but page is ${page}).`);\n    }\n    return null;\n  }),\n  /**\n   * The number of rows per page.\n   *\n   * Set -1 to display all the rows.\n   */\n  rowsPerPage: integerPropType.isRequired,\n  /**\n   * Customizes the options of the rows per page select field. If less than two options are\n   * available, no select field will be displayed.\n   * Use -1 for the value with a custom label to show all the rows.\n   * @default [10, 25, 50, 100]\n   */\n  rowsPerPageOptions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    label: PropTypes.string.isRequired,\n    value: PropTypes.number.isRequired\n  })]).isRequired),\n  /**\n   * Props applied to the rows per page [`Select`](https://mui.com/material-ui/api/select/) element.\n   *\n   * This prop is an alias for `slotProps.select` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.select` instead.\n   *\n   * @default {}\n   */\n  SelectProps: PropTypes.object,\n  /**\n   * If `true`, show the first-page button.\n   * @default false\n   */\n  showFirstButton: PropTypes.bool,\n  /**\n   * If `true`, show the last-page button.\n   * @default false\n   */\n  showLastButton: PropTypes.bool,\n  /**\n   * The props used for each slot inside the TablePagination.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    actions: PropTypes.shape({\n      firstButton: PropTypes.object,\n      firstButtonIcon: PropTypes.object,\n      lastButton: PropTypes.object,\n      lastButtonIcon: PropTypes.object,\n      nextButton: PropTypes.object,\n      nextButtonIcon: PropTypes.object,\n      previousButton: PropTypes.object,\n      previousButtonIcon: PropTypes.object\n    }),\n    select: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside the TablePagination.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    actions: PropTypes.shape({\n      firstButton: PropTypes.elementType,\n      firstButtonIcon: PropTypes.elementType,\n      lastButton: PropTypes.elementType,\n      lastButtonIcon: PropTypes.elementType,\n      nextButton: PropTypes.elementType,\n      nextButtonIcon: PropTypes.elementType,\n      previousButton: PropTypes.elementType,\n      previousButtonIcon: PropTypes.elementType\n    })\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TablePagination;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTablePaginationUtilityClass(slot) {\n  return generateUtilityClass('MuiTablePagination', slot);\n}\nconst tablePaginationClasses = generateUtilityClasses('MuiTablePagination', ['root', 'toolbar', 'spacer', 'selectLabel', 'selectRoot', 'select', 'selectIcon', 'input', 'menuItem', 'displayedRows', 'actions']);\nexport default tablePaginationClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"\n}), 'FirstPage');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"\n}), 'LastPage');"],"names":["TableCellRoot","name","slot","overridesResolver","props","styles","ownerState","root","variant","size","padding","align","stickyHeader","theme","typography","body2","display","verticalAlign","borderBottom","vars","palette","TableCell","border","mode","divider","textAlign","variants","style","color","text","primary","lineHeight","pxToRem","fontWeight","fontWeightMedium","secondary","fontSize","paddingCheckbox","width","flexDirection","position","top","zIndex","backgroundColor","background","default","inProps","ref","className","component","componentProp","paddingProp","scope","scopeProp","sizeProp","sortDirection","variantProp","other","table","tablelvl2","isHeadCell","undefined","classes","slots","useUtilityClasses","ariaSort","as","getTableCellUtilityClass","backIconButtonProps","count","disabled","getItemAriaLabel","nextIconButtonProps","onPageChange","page","rowsPerPage","showFirstButton","showLastButton","slotProps","isRtl","FirstButton","firstButton","IconButton","LastButton","lastButton","NextButton","nextButton","PreviousButton","previousButton","FirstButtonIcon","firstButtonIcon","FirstPage","LastButtonIcon","lastButtonIcon","LastPage","NextButtonIcon","nextButtonIcon","KeyboardArrowRight","PreviousButtonIcon","previousButtonIcon","KeyboardArrowLeft","FirstButtonSlot","PreviousButtonSlot","NextButtonSlot","LastButtonSlot","firstButtonSlotProps","previousButtonSlotProps","nextButtonSlotProps","lastButtonSlotProps","children","onClick","event","title","Math","ceil","max","_InputBase","TablePaginationRoot","styled","memoTheme","overflow","TablePaginationToolbar","Toolbar","tablePaginationClasses","actions","toolbar","minHeight","paddingRight","breakpoints","up","flexShrink","marginLeft","TablePaginationSpacer","spacer","flex","TablePaginationSelectLabel","selectLabel","TablePaginationSelect","Select","selectIcon","select","input","selectRoot","marginRight","paddingLeft","textAlignLast","TablePaginationMenuItem","MenuItem","menuItem","TablePaginationDisplayedRows","displayedRows","defaultLabelDisplayedRows","from","to","defaultGetAriaLabel","type","ActionsComponent","colSpan","colSpanProp","labelDisplayedRows","labelRowsPerPage","onRowsPerPageChange","rowsPerPageOptions","SelectProps","composeClasses","selectProps","MenuItemComponent","native","selectId","useId","id","labelId","clsx","length","InputBase","value","onChange","icon","map","rowsPerPageOption","isHostComponent","key","label","min","getTablePaginationUtilityClass","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8582.9b93fffc.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8582],{18582:(e,s,a)=>{a.r(s),a.d(s,{default:()=>l.A,dialogContentClasses:()=>t.A,getDialogContentUtilityClass:()=>t.E});var l=a(29499),t=a(64271)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8615.0950a86f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8615],{8615:(e,r,a)=>{a.r(r),a.d(r,{default:()=>i});var t=a(7552),l=a(29499),n=a(36715),o=a(1343),c=a(58507),s=a(5401),m=a(49823);function i(e){const{model:r,handleClose:a}=e,{minScore:i,maxScore:u,scaleType:b}=r,[N,E]=(0,t.useState)(`${i!==Number.MIN_VALUE?i:""}`),[h,d]=(0,t.useState)(`${u!==Number.MAX_VALUE?u:""}`),g=!(""!==N&&""!==h&&!Number.isNaN(+N)&&!Number.isNaN(+h))||+h>+N,A=!("log"===b&&""!==N&&!Number.isNaN(+N))||+N>0;return t.createElement(m.Dialog,{open:!0,onClose:a,title:"Set min/max score for track"},t.createElement(l.A,null,t.createElement(n.A,null,"Enter min/max score: "),g?null:t.createElement(n.A,{color:"error"},"Max is greater than or equal to min"),A?null:t.createElement(n.A,{color:"error"},"Min score should be greater than 0 for log scale"),t.createElement(o.A,{value:N,onChange:e=>{E(e.target.value)},placeholder:"Enter min score"}),t.createElement(o.A,{value:h,onChange:e=>{d(e.target.value)},placeholder:"Enter max score"})),t.createElement(c.A,null,t.createElement(s.A,{variant:"contained",color:"primary",type:"submit",style:{marginLeft:20},disabled:!g,onClick:()=>{r.setMinScore(""===N||Number.isNaN(+N)?void 0:+N),r.setMaxScore(""===h||Number.isNaN(+h)?void 0:+h),a()}},"Submit")))}}}]);
+//# sourceMappingURL=8615.0950a86f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8615.0950a86f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8615.0950a86f.chunk.js","mappings":"oOAUe,SAASA,EAAgBC,GAUtC,MAAM,MAAEC,EAAK,YAAEC,GAAgBF,GACzB,SAAEG,EAAQ,SAAEC,EAAQ,UAAEC,GAAcJ,GAEnCK,EAAKC,IAAUC,EAAAA,EAAAA,UACpB,GAAGL,IAAaM,OAAOC,UAAYP,EAAW,OAEzCQ,EAAKC,IAAUJ,EAAAA,EAAAA,UACpB,GAAGJ,IAAaK,OAAOI,UAAYT,EAAW,MAG1CU,IACI,KAARR,GAAsB,KAARK,IAAeF,OAAOM,OAAOT,KAASG,OAAOM,OAAOJ,MAC7DA,GAAOL,EAGRU,IACU,QAAdX,GAA+B,KAARC,IAAeG,OAAOM,OAAOT,MAAQA,EAAM,EAEpE,OACEW,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAASlB,EAAamB,MAAM,+BACvCJ,EAAAA,cAACK,EAAAA,EAAa,KACZL,EAAAA,cAACM,EAAAA,EAAU,KAAC,yBACVT,EAIE,KAHFG,EAAAA,cAACM,EAAAA,EAAU,CAACC,MAAM,SAAQ,uCAK1BR,EAIE,KAHFC,EAAAA,cAACM,EAAAA,EAAU,CAACC,MAAM,SAAQ,oDAK5BP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAOpB,EACPqB,SAAUC,IACRrB,EAAOqB,EAAMC,OAAOH,MAAM,EAE5BI,YAAY,oBAEdb,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAOf,EACPgB,SAAUC,IACRhB,EAAOgB,EAAMC,OAAOH,MAAM,EAE5BI,YAAY,qBAGhBb,EAAAA,cAACc,EAAAA,EAAa,KACZd,EAAAA,cAACe,EAAAA,EAAM,CACLC,QAAQ,YACRT,MAAM,UACNU,KAAK,SACLC,MAAO,CAAEC,WAAY,IACrBC,UAAWvB,EACXwB,QAASA,KACPrC,EAAMsC,YACI,KAARjC,GAAeG,OAAOM,OAAOT,QAAckC,GAANlC,GAEvCL,EAAMwC,YACI,KAAR9B,GAAeF,OAAOM,OAAOJ,QAAc6B,GAAN7B,GAEvCT,GAAa,GAEhB,WAMT,C","sources":["../../../plugins/wiggle/src/shared/SetMinMaxDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport default function SetMinMaxDialog(props: {\n  model: {\n    minScore: number\n    maxScore: number\n    scaleType: string\n    setMinScore: (arg?: number) => void\n    setMaxScore: (arg?: number) => void\n  }\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const { minScore, maxScore, scaleType } = model\n\n  const [min, setMin] = useState(\n    `${minScore !== Number.MIN_VALUE ? minScore : ''}`,\n  )\n  const [max, setMax] = useState(\n    `${maxScore !== Number.MAX_VALUE ? maxScore : ''}`,\n  )\n\n  const ok =\n    min !== '' && max !== '' && !Number.isNaN(+min) && !Number.isNaN(+max)\n      ? +max > +min\n      : true\n\n  const logOk =\n    scaleType === 'log' && min !== '' && !Number.isNaN(+min) ? +min > 0 : true\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set min/max score for track\">\n      <DialogContent>\n        <Typography>Enter min/max score: </Typography>\n        {!ok ? (\n          <Typography color=\"error\">\n            Max is greater than or equal to min\n          </Typography>\n        ) : null}\n\n        {!logOk ? (\n          <Typography color=\"error\">\n            Min score should be greater than 0 for log scale\n          </Typography>\n        ) : null}\n\n        <TextField\n          value={min}\n          onChange={event => {\n            setMin(event.target.value)\n          }}\n          placeholder=\"Enter min score\"\n        />\n        <TextField\n          value={max}\n          onChange={event => {\n            setMax(event.target.value)\n          }}\n          placeholder=\"Enter max score\"\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          style={{ marginLeft: 20 }}\n          disabled={!ok}\n          onClick={() => {\n            model.setMinScore(\n              min !== '' && !Number.isNaN(+min) ? +min : undefined,\n            )\n            model.setMaxScore(\n              max !== '' && !Number.isNaN(+max) ? +max : undefined,\n            )\n            handleClose()\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["SetMinMaxDialog","props","model","handleClose","minScore","maxScore","scaleType","min","setMin","useState","Number","MIN_VALUE","max","setMax","MAX_VALUE","ok","isNaN","logOk","React","Dialog","open","onClose","title","DialogContent","Typography","color","TextField","value","onChange","event","target","placeholder","DialogActions","Button","variant","type","style","marginLeft","disabled","onClick","setMinScore","undefined","setMaxScore"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8624.190dd7af.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8624],{38624:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var l=n(7552),c=n(29499),a=n(36715),r=n(58507),o=n(5401),s=n(49823),i=n(22168);function u({handleClose:e}){return l.createElement(s.Dialog,{maxWidth:"xl",open:!0,onClose:()=>{e()},title:"Feature sequence panel help"},l.createElement(c.A,null,l.createElement(a.A,{paragraph:!0},'The "Feature sequence" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.'),l.createElement(a.A,null,"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),l.createElement("ul",null,l.createElement("li",null,"CDS - shows the stitched together CDS sequences"),l.createElement("li",null,'Protein - the translated coding sequence, with the "standard" genetic code'),l.createElement("li",null,"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),l.createElement("li",null,"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),l.createElement(a.A,{paragraph:!0},"For other feature types, the options are:"),l.createElement("ul",null,l.createElement("li",null,"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),l.createElement(a.A,null,'Note 1: you can use the "gear icon" ',l.createElement(i.A,null)," to edit the number of bp displayed up/downstream and in the intron region"),l.createElement(a.A,null,"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),l.createElement(r.A,null,l.createElement(o.A,{onClick:()=>{e()},autoFocus:!0,variant:"contained"},"Close")))}},22168:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(74893),c=n(69500);const a=(0,l.A)((0,c.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")}}]);
+//# sourceMappingURL=8624.190dd7af.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8624.190dd7af.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8624.190dd7af.chunk.js","mappings":"sOAOe,SAASA,GAAW,YACjCC,IAIA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CACLC,SAAS,KACTC,MAAI,EACJC,QAASA,KACPL,GAAa,EAEfM,MAAM,+BAENL,EAAAA,cAACM,EAAAA,EAAa,KACZN,EAAAA,cAACO,EAAAA,EAAU,CAACC,WAAS,GAAC,8HAItBR,EAAAA,cAACO,EAAAA,EAAU,KAAC,yHAIZP,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,mDACJA,EAAAA,cAAA,UAAI,8EAIJA,EAAAA,cAAA,UAAI,yEAIJA,EAAAA,cAAA,UAAI,kJAMNA,EAAAA,cAACO,EAAAA,EAAU,CAACC,WAAS,GAAC,6CAGtBR,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,+HAKNA,EAAAA,cAACO,EAAAA,EAAU,KAAC,uCAC0BP,EAAAA,cAACS,EAAAA,EAAY,MAAG,8EAGtDT,EAAAA,cAACO,EAAAA,EAAU,KAAC,kKAOdP,EAAAA,cAACU,EAAAA,EAAa,KACZV,EAAAA,cAACW,EAAAA,EAAM,CACLC,QAASA,KACPb,GAAa,EAEfc,WAAS,EACTC,QAAQ,aACT,UAMT,C,6DC3EA,SAAe,QAA4B,SAAK,OAAQ,CACtDC,EAAG,orBACD,W","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.tsx","../../../node_modules/@mui/icons-material/esm/Settings.js"],"sourcesContent":["import React from 'react'\nimport { Button, DialogContent, DialogActions, Typography } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\n// icons\nimport SettingsIcon from '@mui/icons-material/Settings'\n\nexport default function HelpDialog({\n  handleClose,\n}: {\n  handleClose: () => void\n}) {\n  return (\n    <Dialog\n      maxWidth=\"xl\"\n      open\n      onClose={() => {\n        handleClose()\n      }}\n      title=\"Feature sequence panel help\"\n    >\n      <DialogContent>\n        <Typography paragraph>\n          The \"Feature sequence\" panel shows the underlying genomic sequence for\n          a given feature, fetched from the reference genome.\n        </Typography>\n        <Typography>\n          For gene features, this panel does special calculations to e.g. stitch\n          together the coding sequence, the options are:\n        </Typography>\n        <ul>\n          <li>CDS - shows the stitched together CDS sequences</li>\n          <li>\n            Protein - the translated coding sequence, with the \"standard\"\n            genetic code\n          </li>\n          <li>\n            cDNA - shows the 'copy DNA' of transcript, formed from exon\n            sequences\n          </li>\n          <li>\n            Genomic w/ introns +/- Nbp up+down stream - the sequence underlying\n            the entire gene including including introns, with UTR and CDS\n            highlighted\n          </li>\n        </ul>\n        <Typography paragraph>\n          For other feature types, the options are:\n        </Typography>\n        <ul>\n          <li>\n            Genomic +/- Nbp up+down stream - the reference genome sequence\n            underlying the feature, with the up and downstream sequence\n          </li>\n        </ul>\n        <Typography>\n          Note 1: you can use the \"gear icon\" <SettingsIcon /> to edit the\n          number of bp displayed up/downstream and in the intron region\n        </Typography>\n        <Typography>\n          Note 2: The 'Copy HTML' function retains the colors from the sequence\n          panel but cannot be pasted into some programs like notepad that only\n          expect plain text.\n        </Typography>\n      </DialogContent>\n\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          autoFocus\n          variant=\"contained\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');"],"names":["HelpDialog","handleClose","React","Dialog","maxWidth","open","onClose","title","DialogContent","Typography","paragraph","SettingsIcon","DialogActions","Button","onClick","autoFocus","variant","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8678.8424d5dc.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8678],{98459:(e,t,n)=>{n.d(t,{A:()=>A});var i=n(7552),r=n(93878),o=n(16157),s=n(26218),a=n(70799),l=n(51148),d=n(48231),p=n(60129),u=n(4785),c=n(94479),h=n(46302),y=n(51584),w=n(72367),g=n(69500);const m=(0,l.Ay)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],"entered"===n.state&&t.entered,"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&t.hidden]}})((0,p.A)((({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:e})=>"exited"===e.state&&!e.in&&"0px"===e.collapsedSize,style:{visibility:"hidden"}}]})))),v=(0,l.Ay)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),x=(0,l.Ay)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),f=i.forwardRef((function(e,t){const n=(0,u.b)({props:e,name:"MuiCollapse"}),{addEndListener:l,children:p,className:f,collapsedSize:A="0px",component:E,easing:b,in:C,onEnter:z,onEntered:S,onEntering:$,onExit:R,onExited:j,onExiting:D,orientation:I="vertical",style:M,timeout:T=c.p0.standard,TransitionComponent:k=o.Ay,...H}=n,N={...n,orientation:I,collapsedSize:A},W=(e=>{const{orientation:t,classes:n}=e,i={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return(0,a.A)(i,w.E,n)})(N),_=(0,d.A)(),F=(0,s.A)(),L=i.useRef(null),U=i.useRef(),q="number"==typeof A?`${A}px`:A,B="horizontal"===I,G=B?"width":"height",J=i.useRef(null),K=(0,y.A)(t,J),O=e=>t=>{if(e){const n=J.current;void 0===t?e(n):e(n,t)}},P=()=>L.current?L.current[B?"clientWidth":"clientHeight"]:0,Q=O(((e,t)=>{L.current&&B&&(L.current.style.position="absolute"),e.style[G]=q,z&&z(e,t)})),V=O(((e,t)=>{const n=P();L.current&&B&&(L.current.style.position="");const{duration:i,easing:r}=(0,h.c)({style:M,timeout:T,easing:b},{mode:"enter"});if("auto"===T){const t=_.transitions.getAutoHeightDuration(n);e.style.transitionDuration=`${t}ms`,U.current=t}else e.style.transitionDuration="string"==typeof i?i:`${i}ms`;e.style[G]=`${n}px`,e.style.transitionTimingFunction=r,$&&$(e,t)})),X=O(((e,t)=>{e.style[G]="auto",S&&S(e,t)})),Y=O((e=>{e.style[G]=`${P()}px`,R&&R(e)})),Z=O(j),ee=O((e=>{const t=P(),{duration:n,easing:i}=(0,h.c)({style:M,timeout:T,easing:b},{mode:"exit"});if("auto"===T){const n=_.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${n}ms`,U.current=n}else e.style.transitionDuration="string"==typeof n?n:`${n}ms`;e.style[G]=q,e.style.transitionTimingFunction=i,D&&D(e)}));return(0,g.jsx)(k,{in:C,onEnter:Q,onEntered:X,onEntering:V,onExit:Y,onExited:Z,onExiting:ee,addEndListener:e=>{"auto"===T&&F.start(U.current||0,e),l&&l(J.current,e)},nodeRef:J,timeout:"auto"===T?null:T,...H,children:(e,t)=>(0,g.jsx)(m,{as:E,className:(0,r.A)(W.root,f,{entered:W.entered,exited:!C&&"0px"===q&&W.hidden}[e]),style:{[B?"minWidth":"minHeight"]:q,...M},ref:K,...t,ownerState:{...N,state:e},children:(0,g.jsx)(v,{ownerState:{...N,state:e},className:W.wrapper,ref:L,children:(0,g.jsx)(x,{ownerState:{...N,state:e},className:W.wrapperInner,children:p})})})})}));f&&(f.muiSupportAuto=!0);const A=f},72367:(e,t,n)=>{n.d(t,{A:()=>s,E:()=>o});var i=n(33761),r=n(85693);function o(e){return(0,r.Ay)("MuiCollapse",e)}const s=(0,i.A)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"])},78678:(e,t,n)=>{n.r(t),n.d(t,{collapseClasses:()=>r.A,default:()=>i.A,getCollapseUtilityClass:()=>r.E});var i=n(98459),r=n(72367)}}]);
+//# sourceMappingURL=8678.8424d5dc.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8678.8424d5dc.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8678.8424d5dc.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Collapse/Collapse.js","../../../node_modules/@mui/material/Collapse/collapseClasses.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { duration } from \"../styles/createTransitions.js\";\nimport { getTransitionProps } from \"../transitions/utils.js\";\nimport { useForkRef } from \"../utils/index.js\";\nimport { getCollapseUtilityClass } from \"./collapseClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height'),\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      height: 'auto',\n      width: 0,\n      transition: theme.transitions.create('width')\n    }\n  }, {\n    props: {\n      state: 'entered'\n    },\n    style: {\n      height: 'auto',\n      overflow: 'visible'\n    }\n  }, {\n    props: {\n      state: 'entered',\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px',\n    style: {\n      visibility: 'hidden'\n    }\n  }]\n})));\nconst CollapseWrapper = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\nconst CollapseWrapperInner = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})({\n  width: '100%',\n  variants: [{\n    props: {\n      orientation: 'horizontal'\n    },\n    style: {\n      width: 'auto',\n      height: '100%'\n    }\n  }]\n});\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n    addEndListener,\n    children,\n    className,\n    collapsedSize: collapsedSizeProp = '0px',\n    component,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    orientation = 'vertical',\n    style,\n    timeout = duration.standard,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    orientation,\n    collapsedSize: collapsedSizeProp\n  };\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const timer = useTimeout();\n  const wrapperRef = React.useRef(null);\n  const autoTransitionDuration = React.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTransitionDuration.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout,\n    ...other,\n    children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, {\n      as: component,\n      className: clsx(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: {\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize,\n        ...style\n      },\n      ref: handleRef,\n      ...childProps,\n      // `ownerState` is set after `childProps` to override any existing `ownerState` property in `childProps`\n      // that might have been forwarded from the Transition component.\n      ownerState: {\n        ...ownerState,\n        state\n      },\n      children: /*#__PURE__*/_jsx(CollapseWrapper, {\n        ownerState: {\n          ...ownerState,\n          state\n        },\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n          ownerState: {\n            ...ownerState,\n            state\n          },\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * The content node to be collapsed.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nif (Collapse) {\n  Collapse.muiSupportAuto = true;\n}\nexport default Collapse;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n  return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;"],"names":["CollapseRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","state","entered","in","collapsedSize","hidden","theme","height","overflow","transition","transitions","create","variants","style","width","visibility","CollapseWrapper","wrapper","display","CollapseWrapperInner","wrapperInner","Collapse","inProps","ref","addEndListener","children","className","collapsedSizeProp","component","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","timeout","standard","TransitionComponent","other","classes","slots","useUtilityClasses","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","nodeRef","handleRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","current","undefined","getWrapperSize","handleEnter","isAppearing","position","handleEntering","wrapperSize","duration","transitionDuration","transitionTimingFunction","mode","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","next","start","childProps","as","muiSupportAuto","getCollapseUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8704.ae4808df.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8704],{58704:(e,t,a)=>{a.r(t),a.d(t,{default:()=>ee});var n=a(7552),r=a(68446),l=a(48171),s=a(98360),c=a(29629),o=a(25467),i=a(99546),d=a(36715),m=a(85059),p=a(27897),u=a(96403),g=a(22133),f=a(5401),k=a(9937),E=a(75785),h=a(36422),b=a(68584),y=a(87731),A=a(1343),v=a(33371),N=a(32808),T=a(91468),w=a(49823),S=a(943),x=a(17125),C=a(1773),D=a(25355),I=a(58181),M=a(45331),P=a(93117),W=a(61723),O=a(25762),j=a(374);const B=(0,E.n9)()((e=>({paper:{display:"flex",flexDirection:"column",padding:e.spacing(1)},card:{marginTop:e.spacing(1)}}))),U=(0,r.observer)((function({model:e}){const{classes:t}=B(),[a,r]=(0,n.useState)(""),[l,s]=(0,n.useState)(""),[c,o]=(0,n.useState)(["Name","ID"]),[i,d]=(0,n.useState)(["CDS","exon"]),m=[{label:"Indexing attributes",values:c},{label:"Feature types to exclude",values:i}];return(0,n.useEffect)((()=>{e.setTextIndexingConf({attributes:c,exclude:i})}),[e,c,i]),n.createElement(S.A,{className:t.paper},n.createElement(x.A,null,"Indexing configuration"),m.map(((e,m)=>n.createElement(C.A,{raised:!0,key:e.label,className:t.card},n.createElement(D.A,null,n.createElement(x.A,null,e.label),n.createElement(I.A,{disablePadding:!0},e.values.map(((t,a)=>n.createElement(M.Ay,{key:`${t}-${a}`,disableGutters:!0},n.createElement(A.A,{value:t,InputProps:{endAdornment:n.createElement(P.A,{position:"end"},n.createElement(W.A,{onClick:()=>{const t=e.values.filter(((e,t)=>t!==a));0===m?o(t):d(t)}},n.createElement(O.A,null)))}})))),n.createElement(M.Ay,{disableGutters:!0},n.createElement(A.A,{value:0===m?a:l,placeholder:"add new",onChange:e=>{0===m?r(e.target.value):s(e.target.value)},InputProps:{endAdornment:n.createElement(P.A,{position:"end"},n.createElement(W.A,{onClick:()=>{0===m?(o([...c,a]),r("")):(d([...i,l]),s(""))},disabled:0===m?""===a:""===l,"data-testid":"stringArrayAdd-Feat"},n.createElement(j.A,null)))}}))))))))})),F=(0,E.n9)()((e=>({spacing:{marginBottom:e.spacing(3)}}))),J=(0,r.observer)((({model:e})=>{const{classes:t}=F(),{pluginManager:a}=(0,i.getEnv)(e),{trackType:r}=e,l=a.getTrackElements();return n.createElement(A.A,{className:t.spacing,value:r,variant:"outlined",label:"Track type",helperText:"Select track type",select:!0,fullWidth:!0,onChange:t=>{e.setTrackType(t.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"trackTypeSelect"}}},l.map((({name:e,displayName:t})=>n.createElement(c.A,{key:e,value:e},t))))}));var _=a(55851);const G=(0,E.n9)()((e=>({spacing:{marginBottom:e.spacing(3)}}))),$=(0,r.observer)((({model:e})=>{const{classes:t}=G(),{trackAdapter:a}=e,{pluginManager:r}=(0,i.getEnv)(e);return n.createElement(A.A,{className:t.spacing,value:"UNKNOWN"!==a?.type?a?.type:"",label:"Adapter type",variant:"outlined",helperText:"Select an adapter type",select:!0,fullWidth:!0,onChange:t=>{e.setAdapterHint(t.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"adapterTypeSelect"}}},Object.entries(function(e){const t={};return e.forEach((e=>{const a=e.adapterMetadata?.category||"Default";t[a]||(t[a]=[]),t[a].push(e)})),t}(r.getAdapterElements().filter((e=>!e.adapterMetadata?.hiddenFromGUI)))).map((([e,t])=>[n.createElement(_.A,{key:e},e),t.map((e=>n.createElement(c.A,{key:e.name,value:e.name},e.displayName)))])))})),R=(0,E.n9)()((e=>({spacing:{marginBottom:e.spacing(3)}})));function q({trackAdapter:e,trackType:t}){const{classes:a}=R(),{type:r,subadapter:l}=e;return"SNPCoverageAdapter"===r?n.createElement(d.A,{className:a.spacing},"Selected ",n.createElement("code",null,t),". Using adapter ",n.createElement("code",null,r)," with subadapter ",n.createElement("code",null,l?.type),". Please enter a track name and, if necessary, update the track type."):n.createElement(d.A,{className:a.spacing},"Using adapter ",n.createElement("code",null,r)," and guessing track type"," ",n.createElement("code",null,t),". Please enter a track name and, if necessary, update the track type.")}function L({model:e}){const{classes:t}=R();return n.createElement(n.Fragment,null,n.createElement(d.A,{className:t.spacing},"JBrowse was not able to guess the adapter type for this data, but it may be in the list below. If not, you can"," ",n.createElement(y.A,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse to see if they support this data type or"," ",n.createElement(y.A,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type."),n.createElement($,{model:e}))}const H=(0,r.observer)((function({model:e}){const{classes:t}=R(),[a,r]=(0,n.useState)(!0),s=(0,i.getSession)(e),{trackName:c,unsupported:o,trackAdapter:m,trackType:p,warningMessage:u,adapterHint:g}=e;if((0,n.useEffect)((()=>{""===g&&m&&e.setAdapterHint(m.type)}),[g,m,m?.type,e]),o)return n.createElement(d.A,{className:t.spacing},"This version of JBrowse cannot display data of this type. It is possible, however, that there is a newer version that can display them. You can"," ",n.createElement(y.A,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse or"," ",n.createElement(y.A,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type.");if(m?.type===T.UNKNOWN)return n.createElement(L,{model:e});if(!m?.type)return n.createElement(d.A,null,"Could not recognize this data type.");const f=(0,i.isSupportedIndexingAdapter)(m.type);return n.createElement("div",null,n.createElement(q,{trackAdapter:m,trackType:p}),u?n.createElement(d.A,{style:{color:"orange"}},u):null,n.createElement(A.A,{className:t.spacing,label:"trackName",helperText:"A name for this track",fullWidth:!0,value:c,onChange:t=>{e.setTrackName(t.target.value)},inputProps:{"data-testid":"trackNameInput"}}),n.createElement($,{model:e}),n.createElement(J,{model:e}),n.createElement(w.AssemblySelector,{session:s,helperText:"Select assembly to add track to",selected:e.assembly,onChange:t=>{e.setAssembly(t)},TextFieldProps:{fullWidth:!0,SelectProps:{SelectDisplayProps:{"data-testid":"assemblyNameSelect"}}}}),i.isElectron&&f&&n.createElement(l.A,null,n.createElement(v.A,{label:"Index track for text searching?",control:n.createElement(N.A,{checked:a,onChange:t=>{r(t.target.checked),e.setTextIndexTrack(t.target.checked)}})})),i.isElectron&&a&&f?n.createElement(U,{model:e}):null)})),K=(0,E.n9)()((e=>({paper:{padding:e.spacing(2)},spacer:{height:e.spacing(8)}}))),z=(0,r.observer)((function({model:e}){const{classes:t}=K(),a=(0,h.getRoot)(e);return n.createElement(S.A,{className:t.paper},n.createElement(w.FileSelector,{name:"Main file",description:"",location:e.trackData,setLocation:e.setTrackData,setName:e.setTrackName,rootModel:a}),n.createElement("div",{className:t.spacer}),n.createElement(w.FileSelector,{name:"Index file",description:"(Optional) The URL of the index file is automatically inferred from the URL of the main file if it is not supplied.",location:e.indexTrackData,setLocation:e.setIndexTrackData,setName:e.setTrackName,rootModel:a}))})),Y=(0,E.n9)()((e=>({root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginRight:e.spacing(1)},actionsContainer:{marginTop:e.spacing(10),marginBottom:e.spacing(2)},alertContainer:{padding:`${e.spacing(2)}px 0px ${e.spacing(2)}px 0px`}}))),Q=["Enter track data","Confirm track type"],V=(0,r.observer)((function({model:e}){const[t,a]=(0,n.useState)(0),{classes:r}=Y(),{jobsManager:l}=(0,h.getRoot)(e),s=(0,i.getSession)(e),{assembly:c,trackAdapter:o,trackData:E,trackName:y,trackType:A,textIndexTrack:v,textIndexingConf:N}=e,[T,w]=(0,n.useState)();async function S(){if(t!==Q.length-1)return void a(t+1);const n=[`${y.toLowerCase().replaceAll(" ","_")}-${Date.now()}`,s.adminMode?"":"-sessionTrack"].join(""),r=s.assemblyManager.get(c);if((0,i.isSessionWithAddTracks)(s))if(r&&o&&"UNKNOWN"!==o.type){if(s.addTrackConf({trackId:n,type:A,name:y,assemblyNames:[c],adapter:{...o,sequenceAdapter:(0,b.getConf)(r,["sequence","adapter"])}}),e.view.showTrack?.(n),i.isElectron&&v&&(0,i.isSupportedIndexingAdapter)(o.type)){const e=`${y}-index`,t={indexingParams:{...N||{attributes:["Name","ID"],exclude:["CDS","exon"]},assemblies:[c],tracks:[n],indexType:"perTrack",name:e,timestamp:(new Date).toISOString()},name:e,cancelCallback:()=>l.abortJob()};l.queueJob(t)}e.clearData(),(0,i.isSessionModelWithWidgets)(s)&&s.hideWidget(e)}else w("Failed to add track.\nThe configuration of this file is not currently supported.");else w("Unable to add tracks to this model")}function x(){switch(t){case 0:return!E;case 1:return!(y&&A&&o?.type&&c);default:return!0}}return n.createElement("div",{className:r.root},n.createElement(m.A,{className:r.stepper,activeStep:t,orientation:"vertical"},Q.map(((l,s)=>n.createElement(p.A,{key:l},n.createElement(u.A,null,l),n.createElement(g.A,null,function(t){switch(t){case 0:return n.createElement(z,{model:e});case 1:return n.createElement(H,{model:e});default:return n.createElement(d.A,null,"Unknown step")}}(s),n.createElement("div",{className:r.actionsContainer},n.createElement(f.A,{disabled:0===t,onClick:()=>{w(void 0),a(t-1)},className:r.button},"Back"),n.createElement(f.A,{disabled:x(),variant:"contained",color:"primary",onClick:S,className:r.button,"data-testid":"addTrackNextButton"},t===Q.length-1?"Add":"Next")),T?n.createElement("div",{className:r.alertContainer},n.createElement(k.A,{severity:"error"},T)):null))))))})),X=(0,E.n9)()({textbox:{width:"100%"},submit:{marginTop:25,marginBottom:100,display:"block"}}),Z=(0,r.observer)((function({model:e}){const{classes:t}=X(),[a,r]=(0,n.useState)(""),[l,s]=(0,n.useState)();return n.createElement("div",null,l?n.createElement(w.ErrorMessage,{error:l}):null,n.createElement(A.A,{multiline:!0,rows:10,value:a,onChange:e=>{r(e.target.value)},placeholder:"Paste track config or array of track configs in JSON format",variant:"outlined",className:t.textbox}),n.createElement(f.A,{variant:"contained",className:t.submit,onClick:()=>{try{s(void 0);const t=(0,i.getSession)(e),n=JSON.parse(a),r=Array.isArray(n)?n:[n];(0,i.isSessionWithAddTracks)(t)&&(0,i.isSessionModelWithWidgets)(t)&&(r.forEach((e=>{t.addTrackConf(e)})),r.forEach((t=>e.view.showTrack(t.trackId))),e.clearData(),t.hideWidget(e))}catch(e){console.error(e),s(e)}}},"Submit"))})),ee=(0,r.observer)((function({model:e}){const[t,a]=(0,n.useState)("Default add track workflow"),{pluginManager:r}=(0,i.getEnv)(e),d=r.getAddTrackWorkflowElements(),m={"Default add track workflow":V,"Add track JSON":Z,...Object.fromEntries(d.map((e=>[e.name,e.ReactComponent])))},p=m[t]?t:"Default add track workflow",u=m[p];return n.createElement(n.Fragment,null,n.createElement(l.A,null,n.createElement(s.A,{value:p,onChange:e=>{a(e.target.value)}},Object.keys(m).map((e=>n.createElement(c.A,{key:e,value:e},e)))),n.createElement(o.A,null,"Type of add track workflow")),n.createElement("br",null),n.createElement(u,{model:e}))}))}}]);
+//# sourceMappingURL=8704.ae4808df.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8704.ae4808df.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8704.ae4808df.chunk.js","mappings":"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","sources":["../../../plugins/data-management/src/AddTrackWidget/components/TextIndexingConfig.tsx","../../../plugins/data-management/src/AddTrackWidget/components/TrackTypeSelector.tsx","../../../plugins/data-management/src/AddTrackWidget/components/TrackAdapterSelector.tsx","../../../plugins/data-management/src/AddTrackWidget/components/ConfirmTrack.tsx","../../../plugins/data-management/src/AddTrackWidget/components/TrackSourceSelect.tsx","../../../plugins/data-management/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx","../../../plugins/data-management/src/AddTrackWidget/components/PasteConfigWorkflow.tsx","../../../plugins/data-management/src/AddTrackWidget/components/AddTrackWidget.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport {\n  Card,\n  CardContent,\n  IconButton,\n  InputLabel,\n  InputAdornment,\n  List,\n  ListItem,\n  Paper,\n  TextField,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport AddIcon from '@mui/icons-material/Add'\n\n// locals\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  paper: {\n    display: 'flex',\n    flexDirection: 'column',\n    padding: theme.spacing(1),\n  },\n\n  card: {\n    marginTop: theme.spacing(1),\n  },\n}))\n\nconst TextIndexingConfig = observer(function ({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const { classes } = useStyles()\n  const [value1, setValue1] = useState('')\n  const [value2, setValue2] = useState('')\n  const [attributes, setAttributes] = useState(['Name', 'ID'])\n  const [exclude, setExclude] = useState(['CDS', 'exon'])\n  const sections = [\n    {\n      label: 'Indexing attributes',\n      values: attributes,\n    },\n    {\n      label: 'Feature types to exclude',\n      values: exclude,\n    },\n  ]\n  useEffect(() => {\n    model.setTextIndexingConf({ attributes, exclude })\n  }, [model, attributes, exclude])\n\n  return (\n    <Paper className={classes.paper}>\n      <InputLabel>Indexing configuration</InputLabel>\n      {sections.map((section, index) => (\n        <Card raised key={section.label} className={classes.card}>\n          <CardContent>\n            <InputLabel>{section.label}</InputLabel>\n            <List disablePadding>\n              {section.values.map((val, idx) => (\n                /* biome-ignore lint/suspicious/noArrayIndexKey: */\n                <ListItem key={`${val}-${idx}`} disableGutters>\n                  <TextField\n                    value={val}\n                    InputProps={{\n                      endAdornment: (\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            onClick={() => {\n                              const newAttr = section.values.filter(\n                                (_, i) => i !== idx,\n                              )\n                              if (index === 0) {\n                                setAttributes(newAttr)\n                              } else {\n                                setExclude(newAttr)\n                              }\n                            }}\n                          >\n                            <DeleteIcon />\n                          </IconButton>\n                        </InputAdornment>\n                      ),\n                    }}\n                  />\n                </ListItem>\n              ))}\n              <ListItem disableGutters>\n                <TextField\n                  value={index === 0 ? value1 : value2}\n                  placeholder=\"add new\"\n                  onChange={event => {\n                    if (index === 0) {\n                      setValue1(event.target.value)\n                    } else {\n                      setValue2(event.target.value)\n                    }\n                  }}\n                  InputProps={{\n                    endAdornment: (\n                      <InputAdornment position=\"end\">\n                        <IconButton\n                          onClick={() => {\n                            if (index === 0) {\n                              setAttributes([...attributes, value1])\n                              setValue1('')\n                            } else {\n                              setExclude([...exclude, value2])\n                              setValue2('')\n                            }\n                          }}\n                          disabled={index === 0 ? value1 === '' : value2 === ''}\n                          data-testid=\"stringArrayAdd-Feat\"\n                        >\n                          <AddIcon />\n                        </IconButton>\n                      </InputAdornment>\n                    ),\n                  }}\n                />\n              </ListItem>\n            </List>\n          </CardContent>\n        </Card>\n      ))}\n    </Paper>\n  )\n})\n\nexport default TextIndexingConfig\n","import React from 'react'\nimport { MenuItem, TextField } from '@mui/material'\nimport { getEnv } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  spacing: {\n    marginBottom: theme.spacing(3),\n  },\n}))\n\nconst TrackTypeSelector = observer(({ model }: { model: AddTrackModel }) => {\n  const { classes } = useStyles()\n  const { pluginManager } = getEnv(model)\n  const { trackType } = model\n  const trackTypes = pluginManager.getTrackElements()\n\n  return (\n    <TextField\n      className={classes.spacing}\n      value={trackType}\n      variant=\"outlined\"\n      label=\"Track type\"\n      helperText=\"Select track type\"\n      select\n      fullWidth\n      onChange={event => {\n        model.setTrackType(event.target.value)\n      }}\n      SelectProps={{\n        // @ts-expect-error\n        SelectDisplayProps: { 'data-testid': 'trackTypeSelect' },\n      }}\n    >\n      {trackTypes.map(({ name, displayName }) => (\n        <MenuItem key={name} value={name}>\n          {displayName}\n        </MenuItem>\n      ))}\n    </TextField>\n  )\n})\n\nexport default TrackTypeSelector\n","import React from 'react'\nimport { ListSubheader, MenuItem, TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getEnv } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\n// locals\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  spacing: {\n    marginBottom: theme.spacing(3),\n  },\n}))\n\n// collate adapters into a map with\n// key: category\n// value: array of adapters with that category\nfunction categorizeAdapters(adaptersList: AdapterType[]) {\n  const map = {} as Record<string, AdapterType[]>\n  adaptersList.forEach(adapter => {\n    const key = adapter.adapterMetadata?.category || 'Default'\n    if (!map[key]) {\n      map[key] = []\n    }\n    map[key].push(adapter)\n  })\n  return map\n}\n\nconst TrackAdapterSelector = observer(({ model }: { model: AddTrackModel }) => {\n  const { classes } = useStyles()\n  const { trackAdapter } = model\n  const { pluginManager } = getEnv(model)\n  return (\n    <TextField\n      className={classes.spacing}\n      value={trackAdapter?.type !== 'UNKNOWN' ? trackAdapter?.type : ''}\n      label=\"Adapter type\"\n      variant=\"outlined\"\n      helperText=\"Select an adapter type\"\n      select\n      fullWidth\n      onChange={event => {\n        model.setAdapterHint(event.target.value)\n      }}\n      SelectProps={{\n        // @ts-expect-error\n        SelectDisplayProps: { 'data-testid': 'adapterTypeSelect' },\n      }}\n    >\n      {Object.entries(\n        categorizeAdapters(\n          pluginManager\n            .getAdapterElements()\n            .filter(e => !e.adapterMetadata?.hiddenFromGUI),\n        ),\n      ).map(([key, val]) => {\n        // returning array avoids needing to use a react fragment which\n        // Select/TextField sub-elements disagree with\n        return [\n          <ListSubheader key={key}>{key}</ListSubheader>,\n          val.map(elt => (\n            <MenuItem key={elt.name} value={elt.name}>\n              {elt.displayName}\n            </MenuItem>\n          )),\n        ]\n      })}\n    </TextField>\n  )\n})\n\nexport default TrackAdapterSelector\n","import React, { useEffect, useState } from 'react'\nimport {\n  Checkbox,\n  FormControl,\n  FormControlLabel,\n  Link,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  isSupportedIndexingAdapter,\n  getSession,\n  isElectron,\n} from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport { UNKNOWN } from '@jbrowse/core/util/tracks'\nimport { AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { AddTrackModel } from '../model'\nimport TextIndexingConfig from './TextIndexingConfig'\nimport TrackTypeSelector from './TrackTypeSelector'\nimport TrackAdapterSelector from './TrackAdapterSelector'\n\nconst useStyles = makeStyles()(theme => ({\n  spacing: {\n    marginBottom: theme.spacing(3),\n  },\n}))\n\nfunction StatusMessage({\n  trackAdapter,\n  trackType,\n}: {\n  trackAdapter: { type: string; subadapter?: { type: string } }\n  trackType: string\n}) {\n  const { classes } = useStyles()\n  const { type, subadapter } = trackAdapter\n  return type === 'SNPCoverageAdapter' ? (\n    <Typography className={classes.spacing}>\n      Selected <code>{trackType}</code>. Using adapter <code>{type}</code> with\n      subadapter <code>{subadapter?.type}</code>. Please enter a track name and,\n      if necessary, update the track type.\n    </Typography>\n  ) : (\n    <Typography className={classes.spacing}>\n      Using adapter <code>{type}</code> and guessing track type{' '}\n      <code>{trackType}</code>. Please enter a track name and, if necessary,\n      update the track type.\n    </Typography>\n  )\n}\n\nfunction UnknownAdapterPrompt({ model }: { model: AddTrackModel }) {\n  const { classes } = useStyles()\n  return (\n    <>\n      <Typography className={classes.spacing}>\n        JBrowse was not able to guess the adapter type for this data, but it may\n        be in the list below. If not, you can{' '}\n        <Link\n          href=\"https://github.com/GMOD/jbrowse-components/releases\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          check for new releases\n        </Link>{' '}\n        of JBrowse to see if they support this data type or{' '}\n        <Link\n          href=\"https://github.com/GMOD/jbrowse-components/issues/new\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          file an issue\n        </Link>{' '}\n        and add a feature request for this data type.\n      </Typography>\n      <TrackAdapterSelector model={model} />\n    </>\n  )\n}\n\nconst ConfirmTrack = observer(function ConfirmTrack({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const { classes } = useStyles()\n  const [check, setCheck] = useState(true)\n  const session = getSession(model)\n  const {\n    trackName,\n    unsupported,\n    trackAdapter,\n    trackType,\n    warningMessage,\n    adapterHint,\n  } = model\n\n  useEffect(() => {\n    if (adapterHint === '' && trackAdapter) {\n      model.setAdapterHint(trackAdapter.type)\n    }\n  }, [adapterHint, trackAdapter, trackAdapter?.type, model])\n\n  if (unsupported) {\n    return (\n      <Typography className={classes.spacing}>\n        This version of JBrowse cannot display data of this type. It is\n        possible, however, that there is a newer version that can display them.\n        You can{' '}\n        <Link\n          href=\"https://github.com/GMOD/jbrowse-components/releases\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          check for new releases\n        </Link>{' '}\n        of JBrowse or{' '}\n        <Link\n          href=\"https://github.com/GMOD/jbrowse-components/issues/new\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          file an issue\n        </Link>{' '}\n        and add a feature request for this data type.\n      </Typography>\n    )\n  }\n  if (trackAdapter?.type === UNKNOWN) {\n    return <UnknownAdapterPrompt model={model} />\n  }\n\n  if (!trackAdapter?.type) {\n    return <Typography>Could not recognize this data type.</Typography>\n  }\n\n  const supportedForIndexing = isSupportedIndexingAdapter(trackAdapter.type)\n  return (\n    <div>\n      <StatusMessage trackAdapter={trackAdapter} trackType={trackType} />\n      {warningMessage ? (\n        <Typography style={{ color: 'orange' }}>{warningMessage}</Typography>\n      ) : null}\n      <TextField\n        className={classes.spacing}\n        label=\"trackName\"\n        helperText=\"A name for this track\"\n        fullWidth\n        value={trackName}\n        onChange={event => {\n          model.setTrackName(event.target.value)\n        }}\n        inputProps={{ 'data-testid': 'trackNameInput' }}\n      />\n      <TrackAdapterSelector model={model} />\n      <TrackTypeSelector model={model} />\n      <AssemblySelector\n        session={session}\n        helperText=\"Select assembly to add track to\"\n        selected={model.assembly}\n        onChange={asm => {\n          model.setAssembly(asm)\n        }}\n        TextFieldProps={{\n          fullWidth: true,\n          SelectProps: {\n            // @ts-expect-error\n            SelectDisplayProps: { 'data-testid': 'assemblyNameSelect' },\n          },\n        }}\n      />\n      {isElectron && supportedForIndexing && (\n        <FormControl>\n          <FormControlLabel\n            label={'Index track for text searching?'}\n            control={\n              <Checkbox\n                checked={check}\n                onChange={e => {\n                  setCheck(e.target.checked)\n                  model.setTextIndexTrack(e.target.checked)\n                }}\n              />\n            }\n          />\n        </FormControl>\n      )}\n      {isElectron && check && supportedForIndexing ? (\n        <TextIndexingConfig model={model} />\n      ) : null}\n    </div>\n  )\n})\n\nexport default ConfirmTrack\n","import React from 'react'\nimport { FileSelector } from '@jbrowse/core/ui'\nimport { AbstractRootModel } from '@jbrowse/core/util'\nimport { Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getRoot } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  paper: {\n    padding: theme.spacing(2),\n  },\n  spacer: {\n    height: theme.spacing(8),\n  },\n}))\n\nconst TrackSourceSelect = observer(function ({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const { classes } = useStyles()\n  const rootModel = getRoot<AbstractRootModel>(model)\n\n  return (\n    <Paper className={classes.paper}>\n      <FileSelector\n        name=\"Main file\"\n        description=\"\"\n        location={model.trackData}\n        setLocation={model.setTrackData}\n        setName={model.setTrackName}\n        rootModel={rootModel}\n      />\n      <div className={classes.spacer} />\n      <FileSelector\n        name=\"Index file\"\n        description=\"(Optional) The URL of the index file is automatically inferred from the URL of the main file if it is not supplied.\"\n        location={model.indexTrackData}\n        setLocation={model.setIndexTrackData}\n        setName={model.setTrackName}\n        rootModel={rootModel}\n      />\n    </Paper>\n  )\n})\n\nexport default TrackSourceSelect\n","import React, { useState } from 'react'\nimport {\n  Alert,\n  Button,\n  Step,\n  StepContent,\n  StepLabel,\n  Stepper,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { getRoot } from 'mobx-state-tree'\n\nimport {\n  getSession,\n  isElectron,\n  isSessionModelWithWidgets,\n  isSessionWithAddTracks,\n  isSupportedIndexingAdapter,\n} from '@jbrowse/core/util'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\n\n// locals\nimport ConfirmTrack from './ConfirmTrack'\nimport TrackSourceSelect from './TrackSourceSelect'\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    marginTop: theme.spacing(1),\n  },\n  stepper: {\n    backgroundColor: theme.palette.background.default,\n  },\n  button: {\n    marginRight: theme.spacing(1),\n  },\n  actionsContainer: {\n    marginTop: theme.spacing(10),\n    marginBottom: theme.spacing(2),\n  },\n  alertContainer: {\n    padding: `${theme.spacing(2)}px 0px ${theme.spacing(2)}px 0px`,\n  },\n}))\n\nconst steps = ['Enter track data', 'Confirm track type']\n\nconst DefaultAddTrackWorkflow = observer(function ({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const [activeStep, setActiveStep] = useState(0)\n  const { classes } = useStyles()\n\n  const { jobsManager } = getRoot<any>(model)\n  const session = getSession(model)\n  const {\n    assembly,\n    trackAdapter,\n    trackData,\n    trackName,\n    trackType,\n    textIndexTrack,\n    textIndexingConf,\n  } = model\n  const [trackErrorMessage, setTrackErrorMessage] = useState<string>()\n\n  function getStepContent(step: number) {\n    switch (step) {\n      case 0:\n        return <TrackSourceSelect model={model} />\n      case 1:\n        return <ConfirmTrack model={model} />\n      default:\n        return <Typography>Unknown step</Typography>\n    }\n  }\n\n  async function handleNext() {\n    if (activeStep !== steps.length - 1) {\n      setActiveStep(activeStep + 1)\n      return\n    }\n\n    const trackId = [\n      `${trackName.toLowerCase().replaceAll(' ', '_')}-${Date.now()}`,\n      session.adminMode ? '' : '-sessionTrack',\n    ].join('')\n\n    const assemblyInstance = session.assemblyManager.get(assembly)\n    if (!isSessionWithAddTracks(session)) {\n      setTrackErrorMessage('Unable to add tracks to this model')\n      return\n    }\n    if (assemblyInstance && trackAdapter && trackAdapter.type !== 'UNKNOWN') {\n      session.addTrackConf({\n        trackId,\n        type: trackType,\n        name: trackName,\n        assemblyNames: [assembly],\n        adapter: {\n          ...trackAdapter,\n          sequenceAdapter: getConf(assemblyInstance, ['sequence', 'adapter']),\n        },\n      })\n      model.view.showTrack?.(trackId)\n      if (\n        isElectron &&\n        textIndexTrack &&\n        isSupportedIndexingAdapter(trackAdapter.type)\n      ) {\n        const attr = textIndexingConf || {\n          attributes: ['Name', 'ID'],\n          exclude: ['CDS', 'exon'],\n        }\n        const indexName = `${trackName}-index`\n        const newEntry = {\n          indexingParams: {\n            ...attr,\n            assemblies: [assembly],\n            tracks: [trackId],\n            indexType: 'perTrack',\n            name: indexName,\n            timestamp: new Date().toISOString(),\n          },\n          name: indexName,\n          cancelCallback: () => jobsManager.abortJob(),\n        }\n        jobsManager.queueJob(newEntry)\n      }\n      model.clearData()\n      if (isSessionModelWithWidgets(session)) {\n        session.hideWidget(model)\n      }\n    } else {\n      setTrackErrorMessage(\n        'Failed to add track.\\nThe configuration of this file is not currently supported.',\n      )\n    }\n  }\n\n  function isNextDisabled() {\n    switch (activeStep) {\n      case 0:\n        return !trackData\n      case 1:\n        return !(trackName && trackType && trackAdapter?.type && assembly)\n      default:\n        return true\n    }\n  }\n\n  return (\n    <div className={classes.root}>\n      <Stepper\n        className={classes.stepper}\n        activeStep={activeStep}\n        orientation=\"vertical\"\n      >\n        {steps.map((label, idx) => (\n          <Step key={label}>\n            <StepLabel>{label}</StepLabel>\n            <StepContent>\n              {getStepContent(idx)}\n              <div className={classes.actionsContainer}>\n                <Button\n                  disabled={activeStep === 0}\n                  onClick={() => {\n                    setTrackErrorMessage(undefined)\n                    setActiveStep(activeStep - 1)\n                  }}\n                  className={classes.button}\n                >\n                  Back\n                </Button>\n                <Button\n                  disabled={isNextDisabled()}\n                  variant=\"contained\"\n                  color=\"primary\"\n                  onClick={handleNext}\n                  className={classes.button}\n                  data-testid=\"addTrackNextButton\"\n                >\n                  {activeStep === steps.length - 1 ? 'Add' : 'Next'}\n                </Button>\n              </div>\n              {trackErrorMessage ? (\n                <div className={classes.alertContainer}>\n                  <Alert severity=\"error\">{trackErrorMessage}</Alert>\n                </div>\n              ) : null}\n            </StepContent>\n          </Step>\n        ))}\n      </Stepper>\n    </div>\n  )\n})\nexport default DefaultAddTrackWorkflow\n","import React, { useState } from 'react'\nimport { Button, TextField } from '@mui/material'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  getSession,\n  isSessionModelWithWidgets,\n  isSessionWithAddTracks,\n} from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { AddTrackModel } from '../model'\n\nconst useStyles = makeStyles()({\n  textbox: {\n    width: '100%',\n  },\n  submit: {\n    marginTop: 25,\n    marginBottom: 100,\n    display: 'block',\n  },\n})\n\nconst PasteConfigAddTrackWorkflow = observer(function ({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const { classes } = useStyles()\n  const [val, setVal] = useState('')\n  const [error, setError] = useState<unknown>()\n\n  return (\n    <div>\n      {error ? <ErrorMessage error={error} /> : null}\n      <TextField\n        multiline\n        rows={10}\n        value={val}\n        onChange={event => {\n          setVal(event.target.value)\n        }}\n        placeholder={\n          'Paste track config or array of track configs in JSON format'\n        }\n        variant=\"outlined\"\n        className={classes.textbox}\n      />\n      <Button\n        variant=\"contained\"\n        className={classes.submit}\n        onClick={() => {\n          try {\n            setError(undefined)\n            const session = getSession(model)\n            const conf = JSON.parse(val)\n            const confs = Array.isArray(conf) ? conf : [conf]\n            if (\n              isSessionWithAddTracks(session) &&\n              isSessionModelWithWidgets(session)\n            ) {\n              confs.forEach(c => {\n                session.addTrackConf(c)\n              })\n              confs.forEach(c => model.view.showTrack(c.trackId))\n              model.clearData()\n              session.hideWidget(model)\n            }\n          } catch (e) {\n            console.error(e)\n            setError(e)\n          }\n        }}\n      >\n        Submit\n      </Button>\n    </div>\n  )\n})\nexport default PasteConfigAddTrackWorkflow\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { FormControl, FormHelperText, Select, MenuItem } from '@mui/material'\nimport { getEnv } from '@jbrowse/core/util'\n\n// locals\nimport { AddTrackModel } from '../model'\nimport DefaultAddTrackWorkflow from './DefaultAddTrackWorkflow'\nimport PasteConfigWorkflow from './PasteConfigWorkflow'\n\nconst AddTrackSelector = observer(function ({\n  model,\n}: {\n  model: AddTrackModel\n}) {\n  const [val, setVal] = useState('Default add track workflow')\n  const { pluginManager } = getEnv(model)\n  const widgets = pluginManager.getAddTrackWorkflowElements()\n  const ComponentMap = {\n    'Default add track workflow': DefaultAddTrackWorkflow,\n    'Add track JSON': PasteConfigWorkflow,\n    ...Object.fromEntries(widgets.map(w => [w.name, w.ReactComponent])),\n  } as Record<string, React.FC<{ model: AddTrackModel }>>\n\n  // make sure the selected value is in the list\n  const val2 = ComponentMap[val] ? val : 'Default add track workflow'\n  const Component = ComponentMap[val2]!\n  return (\n    <>\n      <FormControl>\n        <Select\n          value={val2}\n          onChange={event => {\n            setVal(event.target.value)\n          }}\n        >\n          {Object.keys(ComponentMap).map(e => (\n            <MenuItem key={e} value={e}>\n              {e}\n            </MenuItem>\n          ))}\n        </Select>\n        <FormHelperText>Type of add track workflow</FormHelperText>\n      </FormControl>\n\n      <br />\n      <Component model={model} />\n    </>\n  )\n})\n\nexport default AddTrackSelector\n"],"names":["useStyles","makeStyles","theme","paper","display","flexDirection","padding","spacing","card","marginTop","observer","model","classes","value1","setValue1","useState","value2","setValue2","attributes","setAttributes","exclude","setExclude","sections","label","values","useEffect","setTextIndexingConf","React","Paper","className","InputLabel","map","section","index","Card","raised","key","CardContent","List","disablePadding","val","idx","ListItem","disableGutters","TextField","value","InputProps","endAdornment","InputAdornment","position","IconButton","onClick","newAttr","filter","_","i","DeleteIcon","placeholder","onChange","event","target","disabled","AddIcon","marginBottom","pluginManager","getEnv","trackType","trackTypes","getTrackElements","variant","helperText","select","fullWidth","setTrackType","SelectProps","SelectDisplayProps","name","displayName","MenuItem","trackAdapter","type","setAdapterHint","Object","entries","adaptersList","forEach","adapter","adapterMetadata","category","push","categorizeAdapters","getAdapterElements","e","hiddenFromGUI","ListSubheader","elt","StatusMessage","subadapter","Typography","UnknownAdapterPrompt","Link","href","rel","TrackAdapterSelector","check","setCheck","session","getSession","trackName","unsupported","warningMessage","adapterHint","UNKNOWN","supportedForIndexing","isSupportedIndexingAdapter","style","color","setTrackName","inputProps","TrackTypeSelector","AssemblySelector","selected","assembly","asm","setAssembly","TextFieldProps","isElectron","FormControl","FormControlLabel","control","Checkbox","checked","setTextIndexTrack","TextIndexingConfig","spacer","height","rootModel","getRoot","FileSelector","description","location","trackData","setLocation","setTrackData","setName","indexTrackData","setIndexTrackData","root","stepper","backgroundColor","palette","background","default","button","marginRight","actionsContainer","alertContainer","steps","activeStep","setActiveStep","jobsManager","textIndexTrack","textIndexingConf","trackErrorMessage","setTrackErrorMessage","async","handleNext","length","trackId","toLowerCase","replaceAll","Date","now","adminMode","join","assemblyInstance","assemblyManager","get","isSessionWithAddTracks","addTrackConf","assemblyNames","sequenceAdapter","getConf","view","showTrack","indexName","newEntry","indexingParams","assemblies","tracks","indexType","timestamp","toISOString","cancelCallback","abortJob","queueJob","clearData","isSessionModelWithWidgets","hideWidget","isNextDisabled","Stepper","orientation","Step","StepLabel","StepContent","step","TrackSourceSelect","ConfirmTrack","getStepContent","Button","undefined","Alert","severity","textbox","width","submit","setVal","error","setError","ErrorMessage","multiline","rows","conf","JSON","parse","confs","Array","isArray","c","console","widgets","getAddTrackWorkflowElements","ComponentMap","DefaultAddTrackWorkflow","PasteConfigWorkflow","fromEntries","w","ReactComponent","val2","Component","Select","keys","FormHelperText"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8762.3d2b9142.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8762],{58762:(e,t,a)=>{a.r(t),a.d(t,{default:()=>D});var s=a(7552),n=a(68446),o=a(943),r=a(58181),i=a(55851),l=a(75785),c=a(45331),d=a(70087),m=a(66765),p=a(81453),u=a(93091),v=a.n(u),g=a(74893),b=a(69500);const h=(0,g.A)((0,b.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList");var A=a(99546);const y=(0,n.observer)((function({session:e,sessionSnapshot:t,onClick:a,secondaryAction:n}){const{views:o=[]}=t,r=(0,A.sum)(o.map((e=>e.tracks?.length??0))),i=o.length;return s.createElement(c.Ay,{secondaryAction:n},s.createElement(d.A,{onClick:a},s.createElement(m.A,null,s.createElement(h,null)),s.createElement(p.A,{primary:t.name,secondary:e.name===t.name?"Currently open":`${i} ${v()("view",i)}; ${r} open ${v()("track",r)}`})))})),f=(0,l.n9)()((e=>({root:{margin:e.spacing(1)}}))),C=(0,n.observer)((function({session:e}){const{classes:t}=f(),a=JSON.parse(localStorage.getItem(e.previousAutosaveId)||"{}").session;return a?s.createElement(o.A,{className:t.root},s.createElement(r.A,{subheader:s.createElement(i.A,null,"Previous autosaved entry")},s.createElement(y,{session:e,sessionSnapshot:a,onClick:()=>{e.loadAutosaveSession()}}))):null}));var E=a(61723),k=a(36715),S=a(25762),$=a(29499),x=a(99123),w=a(58507),I=a(5401),O=a(49823);function N({open:e,sessionNameToDelete:t,handleClose:a}){return s.createElement(O.Dialog,{open:e,title:`Delete session "${t}"?`},s.createElement($.A,null,s.createElement(x.A,null,"This action cannot be undone")),s.createElement(w.A,null,s.createElement(I.A,{onClick:()=>{a()},color:"primary"},"Cancel"),s.createElement(I.A,{onClick:()=>{a(!0)},color:"primary",autoFocus:!0},"Delete")))}const V=(0,l.n9)()((e=>({root:{margin:e.spacing(1)},message:{padding:e.spacing(3)}}))),z=(0,n.observer)((function({session:e}){const{classes:t}=V(),[a,n]=(0,s.useState)(),l=void 0!==a?e.savedSessions[a].name:"";return s.createElement(o.A,{className:t.root},s.createElement(r.A,{subheader:s.createElement(i.A,null,"Saved sessions")},e.savedSessions.length?e.savedSessions.map(((t,a)=>s.createElement(y,{onClick:()=>{e.activateSession(t.name)},sessionSnapshot:t,session:e,key:t.name,secondaryAction:s.createElement(E.A,{edge:"end",disabled:e.name===t.name,onClick:()=>{n(a)}},s.createElement(S.A,null))}))):s.createElement(k.A,{className:t.message},"No saved sessions found")),l?s.createElement(s.Suspense,{fallback:null},s.createElement(N,{open:!0,sessionNameToDelete:l,handleClose:function(t=!1){t&&void 0!==a&&e.removeSavedSession(e.savedSessions[a]),n(void 0)}})):null)})),D=(0,n.observer)((function({session:e}){return s.createElement(s.Fragment,null,s.createElement(C,{session:e}),s.createElement(z,{session:e}))}))},70087:(e,t,a)=>{a.d(t,{A:()=>A});var s=a(7552),n=a(93878),o=a(70799),r=a(72639),i=a(51148),l=a(60129),c=a(4785),d=a(55270),m=a(48054),p=a(82910),u=a(51584),v=a(57406),g=a(2451),b=a(69500);const h=(0,i.Ay)(m.A,{shouldForwardProp:e=>(0,d.A)(e)||"classes"===e,name:"MuiListItemButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.dense&&t.dense,"flex-start"===a.alignItems&&t.alignItemsFlexStart,a.divider&&t.divider,!a.disableGutters&&t.gutters]}})((0,l.A)((({theme:e})=>({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${g.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,r.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${g.A.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,r.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${g.A.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,r.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,r.X4)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${g.A.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${g.A.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},variants:[{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.dense,style:{paddingTop:4,paddingBottom:4}}]})))),A=s.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiListItemButton"}),{alignItems:r="center",autoFocus:i=!1,component:l="div",children:d,dense:m=!1,disableGutters:A=!1,divider:y=!1,focusVisibleClassName:f,selected:C=!1,className:E,...k}=a,S=s.useContext(v.A),$=s.useMemo((()=>({dense:m||S.dense||!1,alignItems:r,disableGutters:A})),[r,S.dense,m,A]),x=s.useRef(null);(0,p.A)((()=>{i&&x.current&&x.current.focus()}),[i]);const w={...a,alignItems:r,dense:$.dense,disableGutters:A,divider:y,selected:C},I=(e=>{const{alignItems:t,classes:a,dense:s,disabled:n,disableGutters:r,divider:i,selected:l}=e,c={root:["root",s&&"dense",!r&&"gutters",i&&"divider",n&&"disabled","flex-start"===t&&"alignItemsFlexStart",l&&"selected"]},d=(0,o.A)(c,g.Y,a);return{...a,...d}})(w),O=(0,u.A)(x,t);return(0,b.jsx)(v.A.Provider,{value:$,children:(0,b.jsx)(h,{ref:O,href:k.href||k.to,component:(k.href||k.to)&&"div"===l?"button":l,focusVisibleClassName:(0,n.A)(I.focusVisible,f),ownerState:w,className:(0,n.A)(I.root,E),...k,classes:I,children:d})})}))}}]);
+//# sourceMappingURL=8762.3d2b9142.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8762.3d2b9142.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8762.3d2b9142.chunk.js","mappings":"gTAIA,SAAe,EAAAA,EAAA,IAA4B,SAAK,OAAQ,CACtDC,EAAG,+EACD,Y,eCYJ,MAqCA,GArCwBC,EAAAA,EAAAA,WAAS,UAAU,QACzCC,EAAO,gBACPC,EAAe,QACfC,EAAO,gBACPC,IAOA,MAAM,MAAEC,EAAQ,IAAOH,EACjBI,GAAcC,EAAAA,EAAAA,KAAIF,EAAMG,KAAIC,GAAQA,EAAKC,QAAQC,QAAU,KAC3DC,EAAIP,EAAMM,OAEhB,OACEE,EAAAA,cAACC,EAAAA,GAAQ,CAACV,gBAAiBA,GACzBS,EAAAA,cAACE,EAAAA,EAAc,CAACZ,QAASA,GACvBU,EAAAA,cAACG,EAAAA,EAAY,KACXH,EAAAA,cAACI,EAAY,OAEfJ,EAAAA,cAACK,EAAAA,EAAY,CACXC,QAASjB,EAAgBkB,KACzBC,UACEpB,EAAQmB,OAASlB,EAAgBkB,KAC7B,iBACA,GAAGR,KAAKU,IAAU,OAAQV,OAAON,UAAoBgB,IACnD,QACAhB,QAOlB,IC3CMiB,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,KAAM,CACJC,OAAQF,EAAMG,QAAQ,QA6B1B,GAzB6B5B,EAAAA,EAAAA,WAAS,UAAU,QAC9CC,IAIA,MAAM,QAAE4B,GAAYN,IACdO,EAAmBC,KAAKC,MAC5BC,aAAaC,QAAQjC,EAAQkC,qBAAuB,MACpDlC,QAEF,OAAO6B,EACLjB,EAAAA,cAACuB,EAAAA,EAAK,CAACC,UAAWR,EAAQH,MACxBb,EAAAA,cAACyB,EAAAA,EAAI,CAACC,UAAW1B,EAAAA,cAAC2B,EAAAA,EAAa,KAAC,6BAC9B3B,EAAAA,cAAC4B,EAAe,CACdxC,QAASA,EACTC,gBAAiB4B,EACjB3B,QAASA,KACPF,EAAQyC,qBAAqB,MAKnC,IACN,I,2FC9Be,SAASC,GAAyB,KAC/CC,EAAI,oBACJC,EAAmB,YACnBC,IAMA,OACEjC,EAAAA,cAACkC,EAAAA,OAAM,CAACH,KAAMA,EAAMI,MAAO,mBAAmBH,OAC5ChC,EAAAA,cAACoC,EAAAA,EAAa,KACZpC,EAAAA,cAACqC,EAAAA,EAAiB,KAAC,iCAErBrC,EAAAA,cAACsC,EAAAA,EAAa,KACZtC,EAAAA,cAACuC,EAAAA,EAAM,CACLjD,QAASA,KACP2C,GAAa,EAEfO,MAAM,WACP,UAGDxC,EAAAA,cAACuC,EAAAA,EAAM,CACLjD,QAASA,KACP2C,GAAY,EAAK,EAEnBO,MAAM,UACNC,WAAS,GACV,WAMT,CCxBA,MAAM/B,GAAYC,EAAAA,EAAAA,KAAAA,EAAaC,IAAS,CACtCC,KAAM,CACJC,OAAQF,EAAMG,QAAQ,IAExB2B,QAAS,CACPC,QAAS/B,EAAMG,QAAQ,QAmE3B,GA/DiC5B,EAAAA,EAAAA,WAAS,UAAU,QAClDC,IAIA,MAAM,QAAE4B,GAAYN,KACbkC,EAAsBC,IAA2BC,EAAAA,EAAAA,YASlDd,OACqBe,IAAzBH,EACIxD,EAAQ4D,cAAcJ,GAAuBrC,KAC7C,GACN,OACEP,EAAAA,cAACuB,EAAAA,EAAK,CAACC,UAAWR,EAAQH,MACxBb,EAAAA,cAACyB,EAAAA,EAAI,CAACC,UAAW1B,EAAAA,cAAC2B,EAAAA,EAAa,KAAC,mBAC7BvC,EAAQ4D,cAAclD,OACrBV,EAAQ4D,cAAcrD,KAAI,CAACN,EAAiB4D,IAC1CjD,EAAAA,cAAC4B,EAAe,CACdtC,QAASA,KACPF,EAAQ8D,gBAAgB7D,EAAgBkB,KAAK,EAE/ClB,gBAAiBA,EACjBD,QAASA,EACT+D,IAAK9D,EAAgBkB,KACrBhB,gBACES,EAAAA,cAACoD,EAAAA,EAAU,CACTC,KAAK,MACLC,SAAUlE,EAAQmB,OAASlB,EAAgBkB,KAC3CjB,QAASA,KACPuD,EAAwBI,EAAI,GAG9BjD,EAAAA,cAACuD,EAAAA,EAAU,WAMnBvD,EAAAA,cAACwD,EAAAA,EAAU,CAAChC,UAAWR,EAAQ0B,SAAS,4BAK3CV,EACChC,EAAAA,cAACA,EAAAA,SAAc,CAACyD,SAAU,MACxBzD,EAAAA,cAAC8B,EAAwB,CACvBC,MAAI,EACJC,oBAAqBA,EACrBC,YA/CV,SAA2ByB,GAAgB,GACrCA,QAA0CX,IAAzBH,GACnBxD,EAAQuE,mBAAmBvE,EAAQ4D,cAAcJ,IAEnDC,OAAwBE,EAC1B,KA6CQ,KAGV,ICrEA,GAbuB5D,EAAAA,EAAAA,WAAS,UAAU,QACxCC,IAIA,OACEY,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC4D,EAAoB,CAACxE,QAASA,IAC/BY,EAAAA,cAAC6D,EAAwB,CAACzE,QAASA,IAGzC,G,8LCFO,MAyBD0E,GAAqB,QAAO,IAAY,CAC5CC,kBAAmBC,IAAQ,OAAsBA,IAAkB,YAATA,EAC1DzD,KAAM,oBACN0D,KAAM,OACNC,kBA7B+B,CAACC,EAAOC,KACvC,MAAM,WACJC,GACEF,EACJ,MAAO,CAACC,EAAOvD,KAAMwD,EAAWC,OAASF,EAAOE,MAAiC,eAA1BD,EAAWE,YAA+BH,EAAOI,oBAAqBH,EAAWI,SAAWL,EAAOK,SAAUJ,EAAWK,gBAAkBN,EAAOO,QAAQ,GAqBvL,EAKxB,QAAU,EACX/D,YACI,CACJgE,QAAS,OACTC,SAAU,EACVC,eAAgB,aAChBP,WAAY,SACZQ,SAAU,WACVC,eAAgB,OAChBC,SAAU,EACVC,UAAW,aACXC,UAAW,OACXC,WAAY,EACZC,cAAe,EACfC,WAAY1E,EAAM2E,YAAYC,OAAO,mBAAoB,CACvDC,SAAU7E,EAAM2E,YAAYE,SAASC,WAEvC,UAAW,CACTV,eAAgB,OAChBW,iBAAkB/E,EAAMgF,MAAQhF,GAAOiF,QAAQC,OAAOC,MAEtD,uBAAwB,CACtBJ,gBAAiB,gBAGrB,CAAC,KAAK,IAAsBK,YAAa,CACvCL,gBAAiB/E,EAAMgF,KAAO,QAAQhF,EAAMgF,KAAKC,QAAQvF,QAAQ2F,iBAAiBrF,EAAMgF,KAAKC,QAAQC,OAAOI,oBAAqB,QAAMtF,EAAMiF,QAAQvF,QAAQ6F,KAAMvF,EAAMiF,QAAQC,OAAOI,iBACxL,CAAC,KAAK,IAAsBE,gBAAiB,CAC3CT,gBAAiB/E,EAAMgF,KAAO,QAAQhF,EAAMgF,KAAKC,QAAQvF,QAAQ2F,sBAAsBrF,EAAMgF,KAAKC,QAAQC,OAAOI,qBAAqBtF,EAAMgF,KAAKC,QAAQC,OAAOO,kBAAmB,QAAMzF,EAAMiF,QAAQvF,QAAQ6F,KAAMvF,EAAMiF,QAAQC,OAAOI,gBAAkBtF,EAAMiF,QAAQC,OAAOO,gBAGrR,CAAC,KAAK,IAAsBL,kBAAmB,CAC7CL,gBAAiB/E,EAAMgF,KAAO,QAAQhF,EAAMgF,KAAKC,QAAQvF,QAAQ2F,sBAAsBrF,EAAMgF,KAAKC,QAAQC,OAAOI,qBAAqBtF,EAAMgF,KAAKC,QAAQC,OAAOQ,kBAAmB,QAAM1F,EAAMiF,QAAQvF,QAAQ6F,KAAMvF,EAAMiF,QAAQC,OAAOI,gBAAkBtF,EAAMiF,QAAQC,OAAOQ,cAEjR,uBAAwB,CACtBX,gBAAiB/E,EAAMgF,KAAO,QAAQhF,EAAMgF,KAAKC,QAAQvF,QAAQ2F,iBAAiBrF,EAAMgF,KAAKC,QAAQC,OAAOI,oBAAqB,QAAMtF,EAAMiF,QAAQvF,QAAQ6F,KAAMvF,EAAMiF,QAAQC,OAAOI,mBAG5L,CAAC,KAAK,IAAsBE,gBAAiB,CAC3CT,iBAAkB/E,EAAMgF,MAAQhF,GAAOiF,QAAQC,OAAOS,OAExD,CAAC,KAAK,IAAsBjD,YAAa,CACvCkD,SAAU5F,EAAMgF,MAAQhF,GAAOiF,QAAQC,OAAOW,iBAEhDC,SAAU,CAAC,CACTvC,MAAO,EACLE,gBACIA,EAAWI,QACjBkC,MAAO,CACLC,aAAc,cAAchG,EAAMgF,MAAQhF,GAAOiF,QAAQpB,UACzDoC,eAAgB,gBAEjB,CACD1C,MAAO,CACLI,WAAY,cAEdoC,MAAO,CACLpC,WAAY,eAEb,CACDJ,MAAO,EACLE,iBACKA,EAAWK,eAClBiC,MAAO,CACLG,YAAa,GACbC,aAAc,KAEf,CACD5C,MAAO,EACLE,gBACIA,EAAWC,MACjBqC,MAAO,CACLvB,WAAY,EACZC,cAAe,UA+IrB,EA3IoC,cAAiB,SAAwB2B,EAASC,GACpF,MAAM9C,GAAQ,OAAgB,CAC5BA,MAAO6C,EACPzG,KAAM,uBAEF,WACJgE,EAAa,SAAQ,UACrB9B,GAAY,EAAK,UACjByE,EAAY,MAAK,SACjBC,EAAQ,MACR7C,GAAQ,EAAK,eACbI,GAAiB,EAAK,QACtBD,GAAU,EAAK,sBACf2C,EAAqB,SACrBpB,GAAW,EAAK,UAChBxE,KACG6F,GACDlD,EACEmD,EAAU,aAAiB,KAC3BC,EAAe,WAAc,KAAM,CACvCjD,MAAOA,GAASgD,EAAQhD,QAAS,EACjCC,aACAG,oBACE,CAACH,EAAY+C,EAAQhD,MAAOA,EAAOI,IACjC8C,EAAc,SAAa,OACjC,QAAkB,KACZ/E,GACE+E,EAAYC,SACdD,EAAYC,QAAQlB,OAIxB,GACC,CAAC9D,IACJ,MAAM4B,EAAa,IACdF,EACHI,aACAD,MAAOiD,EAAajD,MACpBI,iBACAD,UACAuB,YAEIhF,EA/IkBqD,KACxB,MAAM,WACJE,EAAU,QACVvD,EAAO,MACPsD,EAAK,SACLhB,EAAQ,eACRoB,EAAc,QACdD,EAAO,SACPuB,GACE3B,EACEqD,EAAQ,CACZ7G,KAAM,CAAC,OAAQyD,GAAS,SAAUI,GAAkB,UAAWD,GAAW,UAAWnB,GAAY,WAA2B,eAAfiB,GAA+B,sBAAuByB,GAAY,aAE3K2B,GAAkB,OAAeD,EAAO,IAA+B1G,GAC7E,MAAO,IACFA,KACA2G,EACJ,EA8HeC,CAAkBvD,GAC5BwD,GAAY,OAAWL,EAAaP,GAC1C,OAAoB,SAAK,IAAYa,SAAU,CAC7CC,MAAOR,EACPJ,UAAuB,SAAKrD,EAAoB,CAC9CmD,IAAKY,EACLG,KAAMX,EAAMW,MAAQX,EAAMY,GAG1Bf,WAAYG,EAAMW,MAAQX,EAAMY,KAAqB,QAAdf,EAAsB,SAAWA,EACxEE,uBAAuB,OAAKpG,EAAQoF,aAAcgB,GAClD/C,WAAYA,EACZ7C,WAAW,OAAKR,EAAQH,KAAMW,MAC3B6F,EACHrG,QAASA,EACTmG,SAAUA,KAGhB,G","sources":["../../../node_modules/@mui/icons-material/esm/ViewList.js","../../../plugins/menus/src/SessionManager/components/SessionListItem.tsx","../../../plugins/menus/src/SessionManager/components/AutosavedSessionsList.tsx","../../../plugins/menus/src/SessionManager/components/DeleteSavedSessionDialog.tsx","../../../plugins/menus/src/SessionManager/components/RegularSavedSessionsList.tsx","../../../plugins/menus/src/SessionManager/components/SessionManager.tsx","../../../node_modules/@mui/material/ListItemButton/ListItemButton.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z\"\n}), 'ViewList');","import React from 'react'\nimport {\n  ListItem,\n  ListItemButton,\n  ListItemIcon,\n  ListItemText,\n} from '@mui/material'\n\nimport { observer } from 'mobx-react'\nimport pluralize from 'pluralize'\n\n// icons\nimport ViewListIcon from '@mui/icons-material/ViewList'\nimport { AbstractSessionModel, sum } from '@jbrowse/core/util'\n\n// locals\nimport { SessionSnap } from './util'\n\nconst SessionListItem = observer(function ({\n  session,\n  sessionSnapshot,\n  onClick,\n  secondaryAction,\n}: {\n  sessionSnapshot: SessionSnap\n  session: AbstractSessionModel\n  onClick: () => void\n  secondaryAction?: React.ReactNode\n}) {\n  const { views = [] } = sessionSnapshot\n  const totalTracks = sum(views.map(view => view.tracks?.length ?? 0))\n  const n = views.length\n\n  return (\n    <ListItem secondaryAction={secondaryAction}>\n      <ListItemButton onClick={onClick}>\n        <ListItemIcon>\n          <ViewListIcon />\n        </ListItemIcon>\n        <ListItemText\n          primary={sessionSnapshot.name}\n          secondary={\n            session.name === sessionSnapshot.name\n              ? 'Currently open'\n              : `${n} ${pluralize('view', n)}; ${totalTracks} open ${pluralize(\n                  'track',\n                  totalTracks,\n                )}`\n          }\n        />\n      </ListItemButton>\n    </ListItem>\n  )\n})\n\nexport default SessionListItem\n","import React from 'react'\nimport { List, ListSubheader, Paper } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nimport { observer } from 'mobx-react'\n\n// icons\nimport { SessionModel, SessionSnap } from './util'\nimport SessionListItem from './SessionListItem'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(1),\n  },\n}))\n\nconst AutosaveSessionsList = observer(function ({\n  session,\n}: {\n  session: SessionModel\n}) {\n  const { classes } = useStyles()\n  const autosavedSession = JSON.parse(\n    localStorage.getItem(session.previousAutosaveId) || '{}',\n  ).session as SessionSnap | undefined\n\n  return autosavedSession ? (\n    <Paper className={classes.root}>\n      <List subheader={<ListSubheader>Previous autosaved entry</ListSubheader>}>\n        <SessionListItem\n          session={session}\n          sessionSnapshot={autosavedSession}\n          onClick={() => {\n            session.loadAutosaveSession()\n          }}\n        />\n      </List>\n    </Paper>\n  ) : null\n})\n\nexport default AutosaveSessionsList\n","import React from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport default function DeleteSavedSessionDialog({\n  open,\n  sessionNameToDelete,\n  handleClose,\n}: {\n  sessionNameToDelete: string\n  open: boolean\n  handleClose: (arg?: boolean) => void\n}) {\n  return (\n    <Dialog open={open} title={`Delete session \"${sessionNameToDelete}\"?`}>\n      <DialogContent>\n        <DialogContentText>This action cannot be undone</DialogContentText>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          onClick={() => {\n            handleClose(true)\n          }}\n          color=\"primary\"\n          autoFocus\n        >\n          Delete\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import React, { useState } from 'react'\nimport {\n  IconButton,\n  List,\n  ListSubheader,\n  Paper,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nimport { observer } from 'mobx-react'\n\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete'\n\n// locals\nimport { SessionModel } from './util'\nimport DeleteSavedSessionDialog from './DeleteSavedSessionDialog'\nimport SessionListItem from './SessionListItem'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(1),\n  },\n  message: {\n    padding: theme.spacing(3),\n  },\n}))\n\nconst RegularSavedSessionsList = observer(function ({\n  session,\n}: {\n  session: SessionModel\n}) {\n  const { classes } = useStyles()\n  const [sessionIndexToDelete, setSessionIndexToDelete] = useState<number>()\n\n  function handleDialogClose(deleteSession = false) {\n    if (deleteSession && sessionIndexToDelete !== undefined) {\n      session.removeSavedSession(session.savedSessions[sessionIndexToDelete]!)\n    }\n    setSessionIndexToDelete(undefined)\n  }\n\n  const sessionNameToDelete =\n    sessionIndexToDelete !== undefined\n      ? session.savedSessions[sessionIndexToDelete]!.name\n      : ''\n  return (\n    <Paper className={classes.root}>\n      <List subheader={<ListSubheader>Saved sessions</ListSubheader>}>\n        {session.savedSessions.length ? (\n          session.savedSessions.map((sessionSnapshot, idx) => (\n            <SessionListItem\n              onClick={() => {\n                session.activateSession(sessionSnapshot.name)\n              }}\n              sessionSnapshot={sessionSnapshot}\n              session={session}\n              key={sessionSnapshot.name}\n              secondaryAction={\n                <IconButton\n                  edge=\"end\"\n                  disabled={session.name === sessionSnapshot.name}\n                  onClick={() => {\n                    setSessionIndexToDelete(idx)\n                  }}\n                >\n                  <DeleteIcon />\n                </IconButton>\n              }\n            />\n          ))\n        ) : (\n          <Typography className={classes.message}>\n            No saved sessions found\n          </Typography>\n        )}\n      </List>\n      {sessionNameToDelete ? (\n        <React.Suspense fallback={null}>\n          <DeleteSavedSessionDialog\n            open\n            sessionNameToDelete={sessionNameToDelete}\n            handleClose={handleDialogClose}\n          />\n        </React.Suspense>\n      ) : null}\n    </Paper>\n  )\n})\n\nexport default RegularSavedSessionsList\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// icons\nimport { SessionModel } from './util'\nimport AutosaveSessionsList from './AutosavedSessionsList'\nimport RegularSavedSessionsList from './RegularSavedSessionsList'\n\nconst SessionManager = observer(function ({\n  session,\n}: {\n  session: SessionModel\n}) {\n  return (\n    <>\n      <AutosaveSessionsList session={session} />\n      <RegularSavedSessionsList session={session} />\n    </>\n  )\n})\n\nexport default SessionManager\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport listItemButtonClasses, { getListItemButtonUtilityClass } from \"./listItemButtonClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disabled,\n    disableGutters,\n    divider,\n    selected\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', divider && 'divider', disabled && 'disabled', alignItems === 'flex-start' && 'alignItemsFlexStart', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getListItemButtonUtilityClass, classes);\n  return {\n    ...classes,\n    ...composedClasses\n  };\n};\nconst ListItemButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiListItemButton',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minWidth: 0,\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  paddingTop: 8,\n  paddingBottom: 8,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${listItemButtonClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${listItemButtonClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${listItemButtonClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }]\n})));\nconst ListItemButton = /*#__PURE__*/React.forwardRef(function ListItemButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemButton'\n  });\n  const {\n    alignItems = 'center',\n    autoFocus = false,\n    component = 'div',\n    children,\n    dense = false,\n    disableGutters = false,\n    divider = false,\n    focusVisibleClassName,\n    selected = false,\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (listItemRef.current) {\n        listItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a ListItemButton whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    divider,\n    selected\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(ListItemButtonRoot, {\n      ref: handleRef,\n      href: other.href || other.to\n      // `ButtonBase` processes `href` or `to` if `component` is set to 'button'\n      ,\n      component: (other.href || other.to) && component === 'div' ? 'button' : component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ...other,\n      classes: classes,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes.string,\n  /**\n   * Use to apply selected styling.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemButton;"],"names":["createSvgIcon","d","observer","session","sessionSnapshot","onClick","secondaryAction","views","totalTracks","sum","map","view","tracks","length","n","React","ListItem","ListItemButton","ListItemIcon","ViewListIcon","ListItemText","primary","name","secondary","pluralize","useStyles","makeStyles","theme","root","margin","spacing","classes","autosavedSession","JSON","parse","localStorage","getItem","previousAutosaveId","Paper","className","List","subheader","ListSubheader","SessionListItem","loadAutosaveSession","DeleteSavedSessionDialog","open","sessionNameToDelete","handleClose","Dialog","title","DialogContent","DialogContentText","DialogActions","Button","color","autoFocus","message","padding","sessionIndexToDelete","setSessionIndexToDelete","useState","undefined","savedSessions","idx","activateSession","key","IconButton","edge","disabled","DeleteIcon","Typography","fallback","deleteSession","removeSavedSession","AutosaveSessionsList","RegularSavedSessionsList","ListItemButtonRoot","shouldForwardProp","prop","slot","overridesResolver","props","styles","ownerState","dense","alignItems","alignItemsFlexStart","divider","disableGutters","gutters","display","flexGrow","justifyContent","position","textDecoration","minWidth","boxSizing","textAlign","paddingTop","paddingBottom","transition","transitions","create","duration","shortest","backgroundColor","vars","palette","action","hover","selected","mainChannel","selectedOpacity","main","focusVisible","focusOpacity","hoverOpacity","focus","opacity","disabledOpacity","variants","style","borderBottom","backgroundClip","paddingLeft","paddingRight","inProps","ref","component","children","focusVisibleClassName","other","context","childContext","listItemRef","current","slots","composedClasses","useUtilityClasses","handleRef","Provider","value","href","to"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8797.3168365d.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8797],{58797:(t,e,a)=>{a.r(e),a.d(e,{default:()=>i});var r=a(46377),s=a(8656),n=a(68584),c=a(91454),h=a(35451);class o{constructor(t){this.url=t.url.endsWith("/")?t.url:`${t.url}/`}async readMeta(){const t=await this.loadFile("meta.json"),{compress:e,track_names:a}=t;return{hashHexCharacters:Math.ceil(t.hash_bits/4),compress:e,tracks:a}}async getHashHexCharacters(){return(await this.readMeta()).hashHexCharacters}async getCompress(){return(await this.readMeta()).compress}async getTrackNames(){return(await this.readMeta()).tracks}async get(t){return(await this.getBucket(t))[t]}async getBucket(t){const e=this.hash(t),a=await this.hexToDirPath(e);return this.loadFile(a)}async loadFile(t){const e=await fetch(`${this.url}${t}`);if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText}`);return e.json()}async hexToDirPath(t){const e=await this.getHashHexCharacters();if(e){const a=await this.getCompress();for(;t.length<8;)t=`0${t}`;t=t.slice(8-e);const r=[];for(let e=0;e<t.length;e+=3)r.push(t.slice(e,e+3));return`${r.join("/")}.json${a?"z":""}`}return""}hash(t){return(0,c.A)(h.hp.from(t)).toString(16).toLowerCase().replace("-","n")}}class i extends r.BaseAdapter{constructor(t,e,a){super(t,e,a);const r=(0,n.readConfObject)(t,"namesIndexLocation"),{baseUri:s,uri:c}=r;this.httpMap=new o({url:s?new URL(c,s).href:c})}async loadIndexFile(t){return this.httpMap.getBucket(t)}async searchIndex(t){const{searchType:e,queryString:a}=t,r=this.tracksNames||await this.httpMap.getTrackNames(),s=a.toLowerCase(),n=await this.loadIndexFile(s);return n[s]?this.formatResults(n[s],r,e):[]}formatResults(t,e,a){return[..."exact"===a?[]:t.prefix.map((t=>new s.A({label:"object"==typeof t?t.name:t,matchedAttribute:"name",matchedObject:{result:t}}))),...t.exact.map((t=>{const a=t[0],r=t[1],n=`${t[3]||a}:${t[4]}-${t[5]}`;return new s.A({locString:n,label:a,matchedAttribute:"name",matchedObject:t,trackId:e[r]})}))].filter((t=>"too many matches"!==t.getLabel()))}freeResources(){}}},91454:(t,e,a)=>{a.d(e,{A:()=>c});let r=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(r=new Int32Array(r));var s=a(35451);const n=(t,e)=>s.hp.from(t,e),c=function(t,e){const a=(t,a)=>e(n(t),a)>>>0;return a.signed=(t,a)=>e(n(t),a),a.unsigned=a,a.model="crc-32",a}(0,((t,e)=>{let a=0===e?0:~e;for(let e=0;e<t.length;e++)a=r[255&(a^t[e])]^a>>>8;return~a}))}}]);
+//# sourceMappingURL=8797.3168365d.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8797.3168365d.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8797.3168365d.chunk.js","mappings":"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","sources":["../../../plugins/legacy-jbrowse/src/JBrowse1TextSearchAdapter/HttpMap.ts","../../../plugins/legacy-jbrowse/src/JBrowse1TextSearchAdapter/JBrowse1TextSearchAdapter.ts","../../../node_modules/crc/mjs/calculators/crc32.js","../../../node_modules/crc/mjs/create_buffer.js","../../../node_modules/crc/mjs/crc32.js","../../../node_modules/crc/mjs/define_crc.js"],"sourcesContent":["/**\n * Helper class allows reading names index generated in JBrowse1\n * Adapted from https://github.com/GMOD/jbrowse/blob/master/src/JBrowse/Store/Hash.js\n */\nimport crc32 from 'crc/crc32'\nimport { Buffer } from 'buffer'\n\nexport default class HttpMap {\n  url: string\n\n  constructor(args: { url: string }) {\n    // make sure url has a trailing slash\n    this.url = args.url.endsWith('/') ? args.url : `${args.url}/`\n  }\n\n  /**\n   * loads meta.json file from names directory and reads number of hash_bits used\n   */\n  async readMeta() {\n    const meta = await this.loadFile('meta.json')\n    const { compress, track_names: tracks } = meta\n    const hashHexCharacters = Math.ceil(meta.hash_bits / 4)\n    return { hashHexCharacters, compress, tracks }\n  }\n\n  async getHashHexCharacters() {\n    const meta = await this.readMeta()\n    return meta.hashHexCharacters\n  }\n\n  async getCompress() {\n    const meta = await this.readMeta()\n    return meta.compress\n  }\n\n  async getTrackNames() {\n    const meta = await this.readMeta()\n    return meta.tracks\n  }\n\n  /**\n   * Returns contents of a bucket given a key\n   * @param key - string\n   */\n  async get(key: string) {\n    const bucket = await this.getBucket(key)\n    return bucket[key]\n  }\n\n  /**\n   * Returns a bucket given a key\n   * @param key - string\n   */\n  async getBucket(key: string) {\n    const bucketIdent = this.hash(key)\n    const hexToDirPath = await this.hexToDirPath(bucketIdent)\n    return this.loadFile(hexToDirPath)\n  }\n\n  /**\n   * Loads a file using the url and provided id.\n   * Returns response object with contents of the file\n   * @param id - string\n   */\n  async loadFile(id: string) {\n    const response = await fetch(`${this.url}${id}`)\n    if (!response.ok) {\n      throw new Error(`HTTP ${response.status} ${response.statusText}`)\n    }\n    return response.json()\n  }\n\n  /**\n   * Returns the corresponding path of the file given a hex string\n   * @param hex - hex string\n   */\n  async hexToDirPath(hex: string) {\n    // zero-pad the hex string to be 8 chars if necessary\n    const hashHexCharacters = await this.getHashHexCharacters()\n    if (hashHexCharacters) {\n      const compress = await this.getCompress()\n      while (hex.length < 8) {\n        hex = `0${hex}`\n      }\n      hex = hex.slice(8 - hashHexCharacters)\n      const dirpath = []\n      for (let i = 0; i < hex.length; i += 3) {\n        dirpath.push(hex.slice(i, i + 3))\n      }\n      return `${dirpath.join('/')}.json${compress ? 'z' : ''}`\n    }\n    return ''\n  }\n\n  hash(data: string) {\n    return crc32(Buffer.from(data)).toString(16).toLowerCase().replace('-', 'n')\n  }\n}\n","import {\n  BaseTextSearchAdapter,\n  BaseTextSearchArgs,\n  BaseAdapter,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport HttpMap from './HttpMap'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nexport interface TooManyHits {\n  name: string\n  hitLimit: number\n}\n\ninterface SearchResults {\n  prefix: ({ name: string } | string)[]\n  exact: [string, number, string, string, number, number][]\n}\n\nexport type NamesIndexRecord = string | (string | number)[]\n\ntype IndexFile = Record<string, SearchResults>\n\n// Uses index built by generate-names.pl\nexport default class JBrowse1TextSearchAdapter\n  extends BaseAdapter\n  implements BaseTextSearchAdapter\n{\n  httpMap: HttpMap\n\n  tracksNames?: string[]\n\n  constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const namesIndex = readConfObject(config, 'namesIndexLocation')\n    const { baseUri, uri } = namesIndex\n    this.httpMap = new HttpMap({\n      url: baseUri ? new URL(uri, baseUri).href : uri,\n    })\n  }\n\n  /**\n   * Returns the contents of the file containing the query if it exists\n   * else it returns empty\n   * @param query - string query\n   */\n  async loadIndexFile(query: string): Promise<IndexFile> {\n    return this.httpMap.getBucket(query)\n  }\n\n  async searchIndex(args: BaseTextSearchArgs) {\n    const { searchType, queryString } = args\n    const tracks = this.tracksNames || (await this.httpMap.getTrackNames())\n    const str = queryString.toLowerCase()\n    const entries = await this.loadIndexFile(str)\n    return entries[str]\n      ? this.formatResults(entries[str], tracks, searchType)\n      : []\n  }\n  formatResults(results: SearchResults, tracks: string[], searchType?: string) {\n    return [\n      ...(searchType === 'exact'\n        ? []\n        : results.prefix.map(\n            result =>\n              new BaseResult({\n                label: typeof result === 'object' ? result.name : result,\n                matchedAttribute: 'name',\n                matchedObject: { result: result },\n              }),\n          )),\n      ...results.exact.map(result => {\n        const name = result[0]\n        const trackIndex = result[1]\n        const refName = result[3]\n        const start = result[4]\n        const end = result[5]\n        const locstring = `${refName || name}:${start}-${end}`\n        return new BaseResult({\n          locString: locstring,\n          label: name,\n          matchedAttribute: 'name',\n          matchedObject: result,\n          trackId: tracks[trackIndex],\n        })\n      }),\n    ].filter(result => result.getLabel() !== 'too many matches')\n  }\n\n  freeResources() {}\n}\n","// Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c`\nlet TABLE = [\n    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n];\nif (typeof Int32Array !== 'undefined') {\n    TABLE = new Int32Array(TABLE);\n}\nconst crc32 = (current, previous) => {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    let crc = previous === 0 ? 0 : ~~previous ^ -1;\n    for (let index = 0; index < current.length; index++) {\n        crc = TABLE[(crc ^ current[index]) & 0xff] ^ (crc >>> 8);\n    }\n    return crc ^ -1;\n};\nexport default crc32;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-prototype-builtins */\nimport { Buffer } from 'buffer';\nconst createBuffer = (value, encoding) => Buffer.from(value, encoding);\nexport default createBuffer;\n","import crc32 from './calculators/crc32.js';\nimport defineCrc from './define_crc.js';\nexport default defineCrc('crc-32', crc32);\n","import createBuffer from './create_buffer.js';\nexport default function defineCrc(model, calculator) {\n    const result = (value, previous) => calculator(createBuffer(value), previous) >>> 0;\n    result.signed = (value, previous) => calculator(createBuffer(value), previous);\n    result.unsigned = result;\n    result.model = model;\n    return result;\n}\n"],"names":["HttpMap","constructor","args","this","url","endsWith","readMeta","meta","loadFile","compress","track_names","tracks","hashHexCharacters","Math","ceil","hash_bits","getHashHexCharacters","getCompress","getTrackNames","get","key","getBucket","bucketIdent","hash","hexToDirPath","id","response","fetch","ok","Error","status","statusText","json","hex","length","slice","dirpath","i","push","join","data","crc32","Buffer","from","toString","toLowerCase","replace","JBrowse1TextSearchAdapter","BaseAdapter","config","getSubAdapter","pluginManager","super","namesIndex","readConfObject","baseUri","uri","httpMap","URL","href","loadIndexFile","query","searchIndex","searchType","queryString","tracksNames","str","entries","formatResults","results","prefix","map","result","BaseResult","label","name","matchedAttribute","matchedObject","exact","trackIndex","locstring","locString","trackId","filter","getLabel","freeResources","TABLE","Int32Array","value","encoding","model","calculator","previous","signed","unsigned","current","crc","index"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8856.4593419f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8856],{28856:(t,e,i)=>{i.d(e,{doAfterAttach:()=>c});var o=i(36422),n=i(99546),a=i(95095),s=i(82727),r=i(42489),f=i(30385);function c(t){(0,o.addDisposer)(t,(0,r.autorun)((()=>{const e=(0,n.getContainingView)(t);if(!e.initialized)return;const i=t.mainCanvas?.getContext("2d"),o=t.cigarClickMapCanvas?.getContext("2d");if(!i||!o)return;const a=e.middleComparativeHeight,s=e.width;i.clearRect(0,0,s,a),o.clearRect(0,0,s,a),(0,f.Ww)(t,i,o)}))),(0,o.addDisposer)(t,(0,r.autorun)((()=>{(0,n.getContainingView)(t).initialized&&(0,f.C4)(t)}))),(0,o.addDisposer)(t,(0,r.reaction)((()=>{const e=(0,n.getContainingView)(t);return{bpPerPx:e.views.map((t=>t.bpPerPx)),displayedRegions:JSON.stringify(e.views.map((t=>t.displayedRegions))),features:t.features,initialized:e.initialized}}),(({initialized:e})=>{if(!e)return;const{assemblyManager:i}=(0,n.getSession)(t),r=(0,n.getContainingView)(t).views.map((t=>({...(0,o.getSnapshot)(t),width:t.width,staticBlocks:t.staticBlocks,interRegionPaddingWidth:t.interRegionPaddingWidth,minimumBlockWidth:t.minimumBlockWidth}))),f=[],c=t.features||[];for(const t of c){const e=t.get("mate");let o=t.get("start"),n=t.get("end");const c=e.start,l=e.end;-1===t.get("strand")&&([n,o]=[o,n]);const d=i.get(t.get("assemblyName")),g=i.get(e.assemblyName),h=t.get("refName"),m=e.refName,u=d?.getCanonicalRefName(h)||h,C=g?.getCanonicalRefName(m)||m,b=r[0],p=r[1],v=(0,a.eB)({self:b,refName:u,coord:o}),w=(0,a.eB)({self:b,refName:u,coord:n}),M=(0,a.eB)({self:p,refName:C,coord:c}),x=(0,a.eB)({self:p,refName:C,coord:l});if(void 0===v||void 0===w||void 0===M||void 0===x)continue;const P=t.get("CIGAR");f.push({p11:v,p12:w,p21:M,p22:x,f:t,cigar:s.aF.parseCigar(P)})}t.setFeatPositions(f)}),{fireImmediately:!0}))}},79610:(t,e,i)=>{i.d(e,{$2:()=>s,Eg:()=>c,WT:()=>r,f0:()=>f,mr:()=>a});var o=i(99546),n=i(30385);function a({feature:t,ctx:e,offsets:i,cb:n,height:a,drawCurves:r,oobLimit:f,viewWidth:c,hideTiny:l}){const{p11:d,p12:g,p21:h,p22:m}=t,u=d.offsetPx-i[0],C=g.offsetPx-i[0],b=h.offsetPx-i[1],p=m.offsetPx-i[1],v=Math.abs(C-u),w=Math.abs(p-b),M=a,x=(M-0)/2,P=Math.min(b,p),k=Math.max(b,p);(0,o.doesIntersect2)(P,k,-f,c+f)&&(v<=1&&w<=1?l||(e.beginPath(),e.moveTo(u,0),r?e.bezierCurveTo(u,x,b,x,b,M):e.lineTo(b,M),e.stroke()):(s(e,u,C,0,p,b,M,x,r),n(e)))}function s(t,e,i,o,n,a,s,r,f){f?function(t,e,i,o,n,a,s,r){const f=Math.abs(e-i),c=Math.abs(e-i);if(f<5&&c<5&&i<e&&Math.abs(e-n)>100){const t=e;e=i,i=t}t.beginPath(),t.moveTo(e,o),t.lineTo(i,o),t.bezierCurveTo(i,r,n,r,n,s),t.lineTo(a,s),t.bezierCurveTo(a,r,e,r,e,o),t.closePath(),t.fill()}(t,e,i,o,n,a,s,r):function(t,e,i,o,n,a,s){t.beginPath(),t.moveTo(e,o),t.lineTo(i,o),t.lineTo(n,s),t.lineTo(a,s),t.closePath(),t.fill()}(t,e,i,o,n,a,s)}function r(t,e){const i=(0,o.getContainingView)(e),a=(0,o.getContainingTrack)(e),s=e.clickMapCanvas,r=e.cigarClickMapCanvas;if(!s||!r)return;const f=s.getBoundingClientRect(),c=s.getContext("2d"),l=r.getContext("2d");if(!c||!l)return;const d=t.clientX-f.left,g=t.clientY-f.top,[h,m,u]=c.getImageData(d,g,1,1).data,C=Math.floor(n.xx/e.numFeats),b=(0,n.OX)(h,m,u,C),p=e.featPositions[b];if(p){const{f:t}=p;e.setClickId(t.id());const n=(0,o.getSession)(e);(0,o.isSessionModelWithWidgets)(n)&&n.showWidget(n.addWidget("BaseFeatureWidget","baseFeature",{view:i,track:a,featureData:t.toJSON()}))}return p}function f(t,e,i){t.preventDefault();const o=e.clickMapCanvas,a=e.cigarClickMapCanvas;if(!o||!a)return;const s=o.getBoundingClientRect(),r=o.getContext("2d"),f=a.getContext("2d");if(!r||!f)return;const{clientX:c,clientY:l}=t,d=c-s.left,g=l-s.top,[h,m,u]=r.getImageData(d,g,1,1).data,C=Math.floor(n.xx/e.numFeats),b=(0,n.OX)(h,m,u,C),p=e.featPositions[b];p&&(e.setClickId(p.f.id()),i({clientX:c,clientY:l,feature:p}))}function c(t,e,i){const n=t.toJSON(),a=n.mate,s=n.end-n.start,r=a.end-a.start,f=n.identity,c=n.name,l=a.name;return[`Loc1: ${(0,o.assembleLocString)(n)}`,`Loc2: ${(0,o.assembleLocString)(a)}`,`Inverted: ${-1===n.strand}`,`Query len: ${s.toLocaleString("en-US")}`,`Target len: ${r.toLocaleString("en-US")}`,f?`Identity: ${f.toPrecision(2)}`:"",e?`CIGAR operator: ${e}${i}`:"",c?`Name 1: ${c}`:"",l?`Name 1: ${l}`:""].filter((t=>!!t)).join("<br/>")}},30385:(t,e,i)=>{i.d(e,{C4:()=>g,OX:()=>l,Ww:()=>d,xx:()=>a});var o=i(99546),n=i(79610);const a=16581375;function s(t){return`rgb(${Math.floor(t/65025)%255},${Math.floor(t/255)%255},${t%255})`}const r={I:"#ff03",N:"#0a03",D:"#00f3",X:"brown",M:"#f003","=":"#f003"},f=3,c=1600;function l(t,e,i,o){return Math.floor((255*t*255+255*e+i-1)/o)}function d(t,e,i){const l=(0,o.getContainingView)(t),d=l.drawCurves,g=l.drawCIGAR,h=l.middleComparativeHeight,m=l.width,u=l.views.map((t=>t.bpPerPx));i&&(i.imageSmoothingEnabled=!1),e.beginPath();const C=t.featPositions,b=l.views.map((t=>t.offsetPx)),p=Math.floor(a/C.length);e.fillStyle=r.M,e.strokeStyle=r.M;for(const{p11:t,p12:i,p21:o,p22:n}of C){const a=t.offsetPx-b[0],s=i.offsetPx-b[0],r=o.offsetPx-b[1],l=n.offsetPx-b[1],g=Math.abs(s-a),u=Math.abs(l-r),C=0,p=h,v=(p-C)/2;g<=f&&u<=f&&r<m+c&&r>-c&&(e.moveTo(a,C),d?e.bezierCurveTo(a,v,r,v,r,p):e.lineTo(r,p))}e.stroke(),e.fillStyle=r.M,e.strokeStyle=r.M;for(const{p11:t,p12:p,p21:v,p22:w,f:M,cigar:x}of C){const C=t.offsetPx-b[0],P=p.offsetPx-b[0],k=v.offsetPx-b[1],S=w.offsetPx-b[1],T=Math.abs(P-C),y=Math.abs(S-k),N=Math.min(k,S),$=Math.max(k,S),I=0,W=h,R=(W-I)/2;if(!(T<=f&&y<=f)&&(0,o.doesIntersect2)(N,$,-c,l.width+c)){const t=M.get("strand"),o=-1===t?P:C,f=o<(-1===t?C:P)?1:-1,c=(k<S?1:-1)*t;let l=o,h=-1===t?S:k;if(x.length&&g){let t=!1,o=0,g=0;const C=Math.floor(a/x.length);for(let a=0;a<x.length;a+=2){const b=a*C+1,p=+x[a],v=x[a+1];t||(o=l,g=h);const w=p/u[0],M=p/u[1];if("M"===v||"="===v||"X"===v?(l+=w*f,h+=M*c):"D"===v||"N"===v?l+=w*f:"I"===v&&(h+=M*c),!(Math.max(o,g,l,h)<0||Math.min(o,g,l,h)>m)){const f=a<x.length-2;Math.abs(l-o)<=1&&Math.abs(h-g)<=1&&f?t=!0:(e.fillStyle=r[t&&w>1||M>1?v:"M"],t=!1,(0,n.$2)(e,o,l,I,h,g,W,R,d),i&&(i.fillStyle=s(b),(0,n.$2)(i,o,l,I,h,g,W,R,d)))}}}else(0,n.$2)(e,C,P,I,S,k,W,R,d)}}const v=t.clickMapCanvas?.getContext("2d");if(v){v.imageSmoothingEnabled=!1,v.clearRect(0,0,m,h);for(let t=0;t<C.length;t++){const e=C[t],i=t*p+1;v.fillStyle=s(i),(0,n.mr)({cb:t=>{t.fill()},feature:e,ctx:v,drawCurves:d,offsets:b,oobLimit:c,viewWidth:l.width,hideTiny:!0,height:h})}}}function g(t){const{clickId:e,mouseoverId:i}=t,a=(0,o.getContainingView)(t),s=a.drawCurves,r=a.middleComparativeHeight,f=a.width,l=t.mouseoverCanvas?.getContext("2d"),d=a.views.map((t=>t.offsetPx));if(!l)return;l.resetTransform(),l.scale(1,1),l.clearRect(0,0,f,r);const g=t.featMap[i||""];g&&(l.fillStyle="rgb(0,0,0,0.1)",(0,n.mr)({cb:t=>{t.fill()},feature:g,ctx:l,oobLimit:c,viewWidth:a.width,drawCurves:s,offsets:d,height:r}));const h=t.featMap[e||""];h&&(l.strokeStyle="rgb(0, 0, 0, 0.9)",(0,n.mr)({cb:t=>{t.stroke()},feature:h,ctx:l,oobLimit:c,viewWidth:a.width,drawCurves:s,offsets:d,height:r}))}}}]);
+//# sourceMappingURL=8856.4593419f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8856.4593419f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8856.4593419f.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/afterAttach.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/drawSynteny.ts"],"sourcesContent":["import { addDisposer, getSnapshot } from 'mobx-state-tree'\n\nimport { Feature, getContainingView, getSession } from '@jbrowse/core/util'\nimport { bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\nimport { reaction, autorun } from 'mobx'\n\n// locals\nimport { LinearSyntenyViewModel } from '../LinearSyntenyView/model'\nimport { drawMouseoverSynteny, drawRef } from './drawSynteny'\nimport { LinearSyntenyDisplayModel } from './model'\n\ninterface Pos {\n  offsetPx: number\n}\n\ninterface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\ntype LSV = LinearSyntenyViewModel\n\nexport function doAfterAttach(self: LinearSyntenyDisplayModel) {\n  addDisposer(\n    self,\n    autorun(() => {\n      const view = getContainingView(self) as LinearSyntenyViewModel\n      if (!view.initialized) {\n        return\n      }\n      const ctx1 = self.mainCanvas?.getContext('2d')\n      const ctx3 = self.cigarClickMapCanvas?.getContext('2d')\n      if (!ctx1 || !ctx3) {\n        return\n      }\n\n      const height = view.middleComparativeHeight\n      const width = view.width\n      ctx1.clearRect(0, 0, width, height)\n      ctx3.clearRect(0, 0, width, height)\n      drawRef(self, ctx1, ctx3)\n    }),\n  )\n\n  addDisposer(\n    self,\n    autorun(() => {\n      const view = getContainingView(self) as LinearSyntenyViewModel\n      if (!view.initialized) {\n        return\n      }\n      drawMouseoverSynteny(self)\n    }),\n  )\n\n  // this attempts to reduce recalculation of feature positions drawn by\n  // the synteny view\n  //\n  // uses a reaction to say \"we know the positions don't change in any\n  // relevant way unless bpPerPx changes or displayedRegions changes\"\n  addDisposer(\n    self,\n    reaction(\n      () => {\n        const view = getContainingView(self) as LSV\n        return {\n          bpPerPx: view.views.map(v => v.bpPerPx),\n\n          // stringifying 'deeply' accesses the displayed regions, see\n          // issue #3456\n          displayedRegions: JSON.stringify(\n            view.views.map(v => v.displayedRegions),\n          ),\n          features: self.features,\n          initialized: view.initialized,\n        }\n      },\n      ({ initialized }) => {\n        if (!initialized) {\n          return\n        }\n        const { assemblyManager } = getSession(self)\n        const view = getContainingView(self) as LSV\n        const viewSnaps = view.views.map(view => ({\n          ...getSnapshot(view),\n          width: view.width,\n          staticBlocks: view.staticBlocks,\n          interRegionPaddingWidth: view.interRegionPaddingWidth,\n          minimumBlockWidth: view.minimumBlockWidth,\n        }))\n\n        const map = [] as FeatPos[]\n        const feats = self.features || []\n\n        for (const f of feats) {\n          const mate = f.get('mate')\n          let f1s = f.get('start')\n          let f1e = f.get('end')\n          const f2s = mate.start\n          const f2e = mate.end\n\n          if (f.get('strand') === -1) {\n            ;[f1e, f1s] = [f1s, f1e]\n          }\n          const a1 = assemblyManager.get(f.get('assemblyName'))\n          const a2 = assemblyManager.get(mate.assemblyName)\n          const r1 = f.get('refName')\n          const r2 = mate.refName\n          const ref1 = a1?.getCanonicalRefName(r1) || r1\n          const ref2 = a2?.getCanonicalRefName(r2) || r2\n          const v1 = viewSnaps[0]!\n          const v2 = viewSnaps[1]!\n          const p11 = bpToPx({ self: v1, refName: ref1, coord: f1s })\n          const p12 = bpToPx({ self: v1, refName: ref1, coord: f1e })\n          const p21 = bpToPx({ self: v2, refName: ref2, coord: f2s })\n          const p22 = bpToPx({ self: v2, refName: ref2, coord: f2e })\n\n          if (\n            p11 === undefined ||\n            p12 === undefined ||\n            p21 === undefined ||\n            p22 === undefined\n          ) {\n            continue\n          }\n\n          const cigar = f.get('CIGAR') as string | undefined\n          map.push({\n            p11,\n            p12,\n            p21,\n            p22,\n            f,\n            cigar: MismatchParser.parseCigar(cigar),\n          })\n        }\n\n        self.setFeatPositions(map)\n      },\n      { fireImmediately: true },\n    ),\n  )\n}\n","import React from 'react'\nimport {\n  assembleLocString,\n  doesIntersect2,\n  getSession,\n  isSessionModelWithWidgets,\n  Feature,\n  getContainingTrack,\n  getContainingView,\n} from '@jbrowse/core/util'\n\n// locals\nimport { getId, MAX_COLOR_RANGE } from '../drawSynteny'\nimport { LinearSyntenyDisplayModel } from '../model'\n\ninterface Pos {\n  offsetPx: number\n}\n\nexport interface ClickCoord {\n  clientX: number\n  clientY: number\n  feature: { f: Feature }\n}\n\ninterface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\nexport function drawMatchSimple({\n  feature,\n  ctx,\n  offsets,\n  cb,\n  height,\n  drawCurves,\n  oobLimit,\n  viewWidth,\n  hideTiny,\n}: {\n  feature: FeatPos\n  ctx: CanvasRenderingContext2D\n  offsets: number[]\n  oobLimit: number\n  viewWidth: number\n  cb: (ctx: CanvasRenderingContext2D) => void\n  height: number\n  drawCurves?: boolean\n  hideTiny?: boolean\n}) {\n  const { p11, p12, p21, p22 } = feature\n\n  const x11 = p11.offsetPx - offsets[0]!\n  const x12 = p12.offsetPx - offsets[0]!\n  const x21 = p21.offsetPx - offsets[1]!\n  const x22 = p22.offsetPx - offsets[1]!\n\n  const l1 = Math.abs(x12 - x11)\n  const l2 = Math.abs(x22 - x21)\n  const y1 = 0\n  const y2 = height\n  const mid = (y2 - y1) / 2\n  const minX = Math.min(x21, x22)\n  const maxX = Math.max(x21, x22)\n\n  if (!doesIntersect2(minX, maxX, -oobLimit, viewWidth + oobLimit)) {\n    return\n  }\n\n  // drawing a line if the results are thin: drawing a line results in much\n  // less pixellation than filling in a thin polygon\n  if (l1 <= 1 && l2 <= 1) {\n    // hideTiny can be used to avoid drawing mouseover for thin lines in this\n    // case\n    if (!hideTiny) {\n      ctx.beginPath()\n      ctx.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx.lineTo(x21, y2)\n      }\n      ctx.stroke()\n    }\n  } else {\n    draw(ctx, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n    cb(ctx)\n  }\n}\n\nexport function draw(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n  drawCurves?: boolean,\n) {\n  if (drawCurves) {\n    drawBezierBox(ctx, x1, x2, y1, x3, x4, y2, mid)\n  } else {\n    drawBox(ctx, x1, x2, y1, x3, x4, y2)\n  }\n}\n\nexport function drawBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n) {\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.lineTo(x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function drawBezierBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n) {\n  const len1 = Math.abs(x1 - x2)\n  const len2 = Math.abs(x1 - x2)\n\n  // heuristic to not draw hourglass inversions with bezier curves when they\n  // are thin and far apart because it results in areas that are not drawn well\n  // demo https://codesandbox.io/s/fast-glitter-q3b1or?file=/src/index.js\n  if (len1 < 5 && len2 < 5 && x2 < x1 && Math.abs(x1 - x3) > 100) {\n    const tmp = x1\n    x1 = x2\n    x2 = tmp\n  }\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.bezierCurveTo(x2, mid, x3, mid, x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.bezierCurveTo(x4, mid, x1, mid, x1, y1)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function onSynClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n) {\n  const view = getContainingView(model)\n  const track = getContainingTrack(model)\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const x = event.clientX - rect.left\n  const y = event.clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const feat = model.featPositions[id]\n  if (feat) {\n    const { f } = feat\n    model.setClickId(f.id())\n    const session = getSession(model)\n    if (isSessionModelWithWidgets(session)) {\n      session.showWidget(\n        session.addWidget('BaseFeatureWidget', 'baseFeature', {\n          view,\n          track,\n          featureData: f.toJSON(),\n        }),\n      )\n    }\n  }\n  return feat\n}\n\nexport function onSynContextClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n  setAnchorEl: (arg: ClickCoord) => void,\n) {\n  event.preventDefault()\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const { clientX, clientY } = event\n  const x = clientX - rect.left\n  const y = clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const f = model.featPositions[id]\n  if (f) {\n    model.setClickId(f.f.id())\n    setAnchorEl({ clientX, clientY, feature: f })\n  }\n}\n\nexport function getTooltip(f: Feature, cigarOp?: string, cigarOpLen?: string) {\n  // @ts-expect-error\n  const f1 = f.toJSON() as {\n    refName: string\n    start: number\n    end: number\n    strand?: number\n    assemblyName: string\n    identity?: number\n    name?: string\n    mate: {\n      start: number\n      end: number\n      refName: string\n      name: string\n    }\n  }\n  const f2 = f1.mate\n  const l1 = f1.end - f1.start\n  const l2 = f2.end - f2.start\n  const identity = f1.identity\n  const n1 = f1.name\n  const n2 = f2.name\n  return [\n    `Loc1: ${assembleLocString(f1)}`,\n    `Loc2: ${assembleLocString(f2)}`,\n    `Inverted: ${f1.strand === -1}`,\n    `Query len: ${l1.toLocaleString('en-US')}`,\n    `Target len: ${l2.toLocaleString('en-US')}`,\n    identity ? `Identity: ${identity.toPrecision(2)}` : '',\n    cigarOp ? `CIGAR operator: ${cigarOp}${cigarOpLen}` : '',\n    n1 ? `Name 1: ${n1}` : '',\n    n2 ? `Name 1: ${n2}` : '',\n  ]\n    .filter(f => !!f)\n    .join('<br/>')\n}\n","import { doesIntersect2, getContainingView } from '@jbrowse/core/util'\n// locals\nimport { LinearSyntenyViewModel } from '../LinearSyntenyView/model'\nimport { LinearSyntenyDisplayModel } from './model'\nimport { draw, drawMatchSimple } from './components/util'\n\nexport const MAX_COLOR_RANGE = 255 * 255 * 255 // max color range\n\nfunction makeColor(idx: number) {\n  const r = Math.floor(idx / (255 * 255)) % 255\n  const g = Math.floor(idx / 255) % 255\n  const b = idx % 255\n  return `rgb(${r},${g},${b})`\n}\n\nconst colorMap = {\n  I: '#ff03',\n  N: '#0a03',\n  D: '#00f3',\n  X: 'brown',\n  M: '#f003',\n  '=': '#f003',\n}\n\nconst lineLimit = 3\n\nconst oobLimit = 1600\n\nexport function getId(r: number, g: number, b: number, unitMultiplier: number) {\n  return Math.floor((r * 255 * 255 + g * 255 + b - 1) / unitMultiplier)\n}\n\nexport function drawRef(\n  model: LinearSyntenyDisplayModel,\n  ctx1: CanvasRenderingContext2D,\n  ctx3?: CanvasRenderingContext2D,\n) {\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const drawCIGAR = view.drawCIGAR\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const bpPerPxs = view.views.map(v => v.bpPerPx)\n\n  if (ctx3) {\n    ctx3.imageSmoothingEnabled = false\n  }\n\n  ctx1.beginPath()\n  const featPos = model.featPositions\n  const offsets = view.views.map(v => v.offsetPx)\n\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / featPos.length)\n\n  // this loop is optimized to draw many thin lines with a single ctx.stroke\n  // call, a separate loop below draws larger boxes\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22 } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    // drawing a line if the results are thin results in much less pixellation\n    // than filling in a thin polygon\n    if (\n      l1 <= lineLimit &&\n      l2 <= lineLimit &&\n      x21 < width + oobLimit &&\n      x21 > -oobLimit\n    ) {\n      ctx1.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx1.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx1.lineTo(x21, y2)\n      }\n    }\n  }\n  ctx1.stroke()\n\n  // this loop only draws small lines as a polyline, the polyline calls\n  // ctx.stroke once is much more efficient than calling stroke() many times\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22, f, cigar } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const minX = Math.min(x21, x22)\n    const maxX = Math.max(x21, x22)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    if (\n      !(l1 <= lineLimit && l2 <= lineLimit) &&\n      doesIntersect2(minX, maxX, -oobLimit, view.width + oobLimit)\n    ) {\n      const s1 = f.get('strand')\n      const k1 = s1 === -1 ? x12 : x11\n      const k2 = s1 === -1 ? x11 : x12\n\n      // rev1/rev2 flip the direction of the CIGAR drawing in horizontally flipped\n      // modes. somewhat heuristically determined, but tested for\n      const rev1 = k1 < k2 ? 1 : -1\n      const rev2 = (x21 < x22 ? 1 : -1) * s1\n\n      // cx1/cx2 are the current x positions on top and bottom rows\n      let cx1 = k1\n      let cx2 = s1 === -1 ? x22 : x21\n      if (cigar.length && drawCIGAR) {\n        // continuingFlag skips drawing commands on very small CIGAR features\n        let continuingFlag = false\n\n        // px1/px2 are the previous x positions on the top and bottom rows\n        let px1 = 0\n        let px2 = 0\n        const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length)\n        for (let j = 0; j < cigar.length; j += 2) {\n          const idx = j * unitMultiplier2 + 1\n\n          const len = +cigar[j]!\n          const op = cigar[j + 1] as keyof typeof colorMap\n\n          if (!continuingFlag) {\n            px1 = cx1\n            px2 = cx2\n          }\n\n          const d1 = len / bpPerPxs[0]!\n          const d2 = len / bpPerPxs[1]!\n\n          if (op === 'M' || op === '=' || op === 'X') {\n            cx1 += d1 * rev1\n            cx2 += d2 * rev2\n          } else if (op === 'D' || op === 'N') {\n            cx1 += d1 * rev1\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          else if (op === 'I') {\n            cx2 += d2 * rev2\n          }\n\n          // check that we are even drawing in view here, e.g. that all\n          // points are not all less than 0 or greater than width\n          if (\n            !(\n              Math.max(px1, px2, cx1, cx2) < 0 ||\n              Math.min(px1, px2, cx1, cx2) > width\n            )\n          ) {\n            // if it is a small feature and not the last element of the\n            // CIGAR (which could skip rendering it entire if we did turn\n            // it on), then turn on continuing flag\n            const isNotLast = j < cigar.length - 2\n            if (\n              Math.abs(cx1 - px1) <= 1 &&\n              Math.abs(cx2 - px2) <= 1 &&\n              isNotLast\n            ) {\n              continuingFlag = true\n            } else {\n              // allow rendering the dominant color when using continuing flag\n              // if the last element of continuing was a large feature, else\n              // just use match\n              ctx1.fillStyle =\n                colorMap[(continuingFlag && d1 > 1) || d2 > 1 ? op : 'M']\n              continuingFlag = false\n\n              draw(ctx1, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              if (ctx3) {\n                ctx3.fillStyle = makeColor(idx)\n                draw(ctx3, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              }\n            }\n          }\n        }\n      } else {\n        draw(ctx1, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n      }\n    }\n  }\n\n  // draw click map\n  const ctx2 = model.clickMapCanvas?.getContext('2d')\n  if (!ctx2) {\n    return\n  }\n  ctx2.imageSmoothingEnabled = false\n  ctx2.clearRect(0, 0, width, height)\n  for (let i = 0; i < featPos.length; i++) {\n    const feature = featPos[i]!\n    const idx = i * unitMultiplier + 1\n    ctx2.fillStyle = makeColor(idx)\n\n    // too many click map false positives with colored stroked lines\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature,\n      ctx: ctx2,\n      drawCurves,\n      offsets,\n      oobLimit,\n      viewWidth: view.width,\n      hideTiny: true,\n      height,\n    })\n  }\n  return undefined\n}\n\nexport function drawMouseoverSynteny(model: LinearSyntenyDisplayModel) {\n  const { clickId, mouseoverId } = model\n  const highResolutionScaling = 1\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const ctx = model.mouseoverCanvas?.getContext('2d')\n  const offsets = view.views.map(v => v.offsetPx)\n\n  if (!ctx) {\n    return\n  }\n  ctx.resetTransform()\n  ctx.scale(highResolutionScaling, highResolutionScaling)\n  ctx.clearRect(0, 0, width, height)\n  const feature1 = model.featMap[mouseoverId || '']\n  if (feature1) {\n    ctx.fillStyle = 'rgb(0,0,0,0.1)'\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature: feature1,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n  const feature2 = model.featMap[clickId || '']\n  if (feature2) {\n    ctx.strokeStyle = 'rgb(0, 0, 0, 0.9)'\n\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.stroke()\n      },\n      feature: feature2,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n}\n"],"names":["doAfterAttach","self","addDisposer","autorun","view","getContainingView","initialized","ctx1","mainCanvas","getContext","ctx3","cigarClickMapCanvas","height","middleComparativeHeight","width","clearRect","drawRef","drawMouseoverSynteny","reaction","bpPerPx","views","map","v","displayedRegions","JSON","stringify","features","assemblyManager","getSession","viewSnaps","getSnapshot","staticBlocks","interRegionPaddingWidth","minimumBlockWidth","feats","f","mate","get","f1s","f1e","f2s","start","f2e","end","a1","a2","assemblyName","r1","r2","refName","ref1","getCanonicalRefName","ref2","v1","v2","p11","bpToPx","coord","p12","p21","p22","undefined","cigar","push","MismatchParser","setFeatPositions","fireImmediately","drawMatchSimple","feature","ctx","offsets","cb","drawCurves","oobLimit","viewWidth","hideTiny","x11","offsetPx","x12","x21","x22","l1","Math","abs","l2","y2","mid","minX","min","maxX","max","doesIntersect2","beginPath","moveTo","bezierCurveTo","lineTo","stroke","draw","x1","x2","y1","x3","x4","len1","len2","tmp","closePath","fill","drawBezierBox","drawBox","onSynClick","event","model","track","getContainingTrack","clickMapCanvas","rect","getBoundingClientRect","ctx2","x","clientX","left","y","clientY","top","g1","b1","getImageData","data","unitMultiplier","floor","MAX_COLOR_RANGE","numFeats","id","getId","feat","featPositions","setClickId","session","isSessionModelWithWidgets","showWidget","addWidget","featureData","toJSON","onSynContextClick","setAnchorEl","preventDefault","getTooltip","cigarOp","cigarOpLen","f1","f2","identity","n1","name","n2","assembleLocString","strand","toLocaleString","toPrecision","filter","join","makeColor","idx","colorMap","I","N","D","X","M","lineLimit","r","g","b","drawCIGAR","bpPerPxs","imageSmoothingEnabled","featPos","length","fillStyle","strokeStyle","s1","k1","rev1","rev2","cx1","cx2","continuingFlag","px1","px2","unitMultiplier2","j","len","op","d1","d2","isNotLast","i","clickId","mouseoverId","mouseoverCanvas","resetTransform","scale","feature1","featMap","feature2"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8859.efb2561f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8859],{78859:(e,r,t)=>{t.r(r),t.d(r,{default:()=>g});var a=t(7552),n=t(59705),s=t(36715),i=t(1343),o=t(29499),l=t(29629),c=t(33371),m=t(32808),u=t(58507),d=t(5401),h=t(49823),p=t(99546);function v(){return a.createElement("div",null,a.createElement(n.A,{size:20,style:{marginRight:20}}),a.createElement(s.A,{display:"inline"},"Creating SVG"))}function f({children:e,...r}){return a.createElement("div",null,a.createElement(i.A,r,e))}function y(e,r){return(0,p.useLocalStorage)(`svg-${e}`,r)}function g({model:e,handleClose:r}){const t=(0,p.getSession)(e),n="undefined"!=typeof OffscreenCanvas,[i,g]=(0,a.useState)(n),[k,b]=(0,a.useState)(!1),[A,S]=(0,a.useState)(),[x,w]=y("file","jbrowse.svg"),[C,E]=y("theme",t.themeName||"default");return a.createElement(h.Dialog,{open:!0,onClose:r,title:"Export SVG"},a.createElement(o.A,null,A?a.createElement(h.ErrorMessage,{error:A}):k?a.createElement(v,null):null,a.createElement(f,{helperText:"filename",value:x,onChange:e=>{w(e.target.value)}}),t.allThemes?a.createElement(f,{select:!0,label:"Theme",value:C,onChange:e=>{E(e.target.value)}},Object.entries(t.allThemes()).map((([e,r])=>a.createElement(l.A,{key:e,value:e},r.name||"(Unknown name)")))):null,n?a.createElement(c.A,{control:a.createElement(m.A,{checked:i,onChange:()=>{g((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):a.createElement(s.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),a.createElement(u.A,null,a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{b(!0),S(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:x,themeName:C}),r()}catch(e){console.error(e),S(e)}finally{b(!1)}}},"Submit")))}},59705:(e,r,t)=>{t.d(r,{A:()=>A});var a=t(7552),n=t(93878),s=t(70799),i=t(64761),o=t(51148),l=t(60129),c=t(4785),m=t(15622),u=t(58520),d=t(72489),h=t(69500);const p=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,v=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,f="string"!=typeof p?i.AH`
+        animation: ${p} 1.4s linear infinite;
+      `:null,y="string"!=typeof v?i.AH`
+        animation: ${v} 1.4s ease-in-out infinite;
+      `:null,g=(0,o.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[t.variant],r[`color${(0,m.A)(t.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:f||{animation:`${p} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([r])=>({props:{color:r},style:{color:(e.vars||e).palette[r].main}})))]})))),k=(0,o.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),b=(0,o.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.circle,r[`circle${(0,m.A)(t.variant)}`],t.disableShrink&&r.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${v} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,r){const t=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:o=!1,size:l=40,style:u,thickness:p=3.6,value:v=0,variant:f="indeterminate",...y}=t,A={...t,color:i,disableShrink:o,size:l,thickness:p,value:v,variant:f},S=(e=>{const{classes:r,variant:t,color:a,disableShrink:n}=e,i={root:["root",t,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(t)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,d.b,r)})(A),x={},w={},C={};if("determinate"===f){const e=2*Math.PI*((44-p)/2);x.strokeDasharray=e.toFixed(3),C["aria-valuenow"]=Math.round(v),x.strokeDashoffset=`${((100-v)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,h.jsx)(g,{className:(0,n.A)(S.root,a),style:{width:l,height:l,...w,...u},ownerState:A,ref:r,role:"progressbar",...C,...y,children:(0,h.jsx)(k,{className:S.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,h.jsx)(b,{className:S.circle,style:x,ownerState:A,cx:44,cy:44,r:(44-p)/2,fill:"none",strokeWidth:p})})})}))},72489:(e,r,t)=>{t.d(r,{A:()=>i,b:()=>s});var a=t(33761),n=t(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=8859.efb2561f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8859.efb2561f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8859.efb2561f.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotView/components/ExportSvgDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport { ExportSvgOptions } from '../model'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState<unknown>()\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                themeName,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["LoadingMessage","React","CircularProgress","size","style","marginRight","Typography","display","TextField2","children","rest","TextField","useSvgLocal","key","val","useLocalStorage","ExportSvgDialog","model","handleClose","session","getSession","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","useState","loading","setLoading","error","setError","filename","setFilename","themeName","setThemeName","Dialog","open","onClose","title","DialogContent","ErrorMessage","helperText","value","onChange","event","target","allThemes","select","label","Object","entries","map","MenuItem","name","FormControlLabel","control","Checkbox","checked","DialogActions","Button","variant","color","onClick","type","async","undefined","exportSvg","e","console","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","root","theme","variants","transition","transitions","create","animation","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8869.74066774.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8869],{78869:(e,t,r)=>{r.r(t),r.d(t,{default:()=>g});var a=r(7552),n=r(59705),s=r(36715),i=r(1343),l=r(29499),o=r(29629),c=r(33371),m=r(32808),u=r(58507),d=r(5401),v=r(49823),h=r(99546);function f(){return a.createElement("div",null,a.createElement(n.A,{size:20,style:{marginRight:20}}),a.createElement(s.A,{display:"inline"},"Creating SVG"))}function p(e,t){return(0,h.useLocalStorage)(`svg-${e}`,t)}function y({children:e,...t}){return a.createElement("div",null,a.createElement(i.A,t,e))}function g({model:e,handleClose:t}){const r=(0,h.getSession)(e),n="undefined"!=typeof OffscreenCanvas,[i,g]=(0,a.useState)(n),[b,k]=(0,a.useState)(!1),[A,E]=p("file","jbrowse.svg"),[S,w]=p("tracklabels","offset"),[x,C]=p("theme",r.themeName||"default"),[$,D]=(0,a.useState)();return a.createElement(v.Dialog,{open:!0,onClose:t,title:"Export SVG"},a.createElement(l.A,null,$?a.createElement(v.ErrorMessage,{error:$}):b?a.createElement(f,null):null,a.createElement(y,{helperText:"filename",value:A,onChange:e=>{E(e.target.value)}}),a.createElement(y,{select:!0,label:"Track label positioning",variant:"outlined",value:S,style:{width:150},onChange:e=>{w(e.target.value)}},a.createElement(o.A,{value:"offset"},"Offset"),a.createElement(o.A,{value:"overlay"},"Overlay"),a.createElement(o.A,{value:"left"},"Left"),a.createElement(o.A,{value:"none"},"None")),a.createElement("br",null),r.allThemes?a.createElement(y,{select:!0,label:"Theme",variant:"outlined",value:x,onChange:e=>{C(e.target.value)}},Object.entries(r.allThemes()).map((([e,t])=>a.createElement(o.A,{key:e,value:e},t.name||"(Unknown name)")))):null,n?a.createElement(c.A,{control:a.createElement(m.A,{checked:i,onChange:()=>{g((e=>!e))}}),label:"Rasterize canvas based tracks? File may be much larger if this is turned off"}):a.createElement(s.A,null,"Note: rasterizing layers not yet supported in this browser, so SVG size may be large")),a.createElement(u.A,null,a.createElement(d.A,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel"),a.createElement(d.A,{variant:"contained",color:"primary",type:"submit",onClick:async()=>{k(!0),D(void 0);try{await e.exportSvg({rasterizeLayers:i,filename:A,themeName:x,trackLabels:S}),t()}catch(e){console.error(e),D(e)}finally{k(!1)}}},"Submit")))}},59705:(e,t,r)=>{r.d(t,{A:()=>A});var a=r(7552),n=r(93878),s=r(70799),i=r(64761),l=r(51148),o=r(60129),c=r(4785),m=r(15622),u=r(58520),d=r(72489),v=r(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,f=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,p="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,y="string"!=typeof f?i.AH`
+        animation: ${f} 1.4s ease-in-out infinite;
+      `:null,g=(0,l.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,m.A)(r.color)}`]]}})((0,o.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:p||{animation:`${h} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),b=(0,l.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,l.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,m.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,o.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${f} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:l=!1,size:o=40,style:u,thickness:h=3.6,value:f=0,variant:p="indeterminate",...y}=r,A={...r,color:i,disableShrink:l,size:o,thickness:h,value:f,variant:p},E=(e=>{const{classes:t,variant:r,color:a,disableShrink:n}=e,i={root:["root",r,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(r)}`,n&&"circleDisableShrink"]};return(0,s.A)(i,d.b,t)})(A),S={},w={},x={};if("determinate"===p){const e=2*Math.PI*((44-h)/2);S.strokeDasharray=e.toFixed(3),x["aria-valuenow"]=Math.round(f),S.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,v.jsx)(g,{className:(0,n.A)(E.root,a),style:{width:o,height:o,...w,...u},ownerState:A,ref:t,role:"progressbar",...x,...y,children:(0,v.jsx)(b,{className:E.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,v.jsx)(k,{className:E.circle,style:S,ownerState:A,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>s});var a=r(33761),n=r(85693);function s(e){return(0,n.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])}}]);
+//# sourceMappingURL=8869.74066774.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8869.74066774.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8869.74066774.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ExportSvgDialog.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  FormControlLabel,\n  MenuItem,\n  TextField,\n  TextFieldProps,\n  Typography,\n} from '@mui/material'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport { ExportSvgOptions } from '../model'\nimport { getSession, useLocalStorage } from '@jbrowse/core/util'\n\nfunction LoadingMessage() {\n  return (\n    <div>\n      <CircularProgress size={20} style={{ marginRight: 20 }} />\n      <Typography display=\"inline\">Creating SVG</Typography>\n    </div>\n  )\n}\n\nfunction useSvgLocal<T>(key: string, val: T) {\n  return useLocalStorage(`svg-${key}`, val)\n}\n\nfunction TextField2({ children, ...rest }: TextFieldProps) {\n  return (\n    <div>\n      <TextField {...rest}>{children}</TextField>\n    </div>\n  )\n}\nexport default function ExportSvgDialog({\n  model,\n  handleClose,\n}: {\n  model: { exportSvg(opts: ExportSvgOptions): Promise<void> }\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n  const [rasterizeLayers, setRasterizeLayers] = useState(offscreenCanvas)\n  const [loading, setLoading] = useState(false)\n  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg')\n  const [trackLabels, setTrackLabels] = useSvgLocal('tracklabels', 'offset')\n  const [themeName, setThemeName] = useSvgLocal(\n    'theme',\n    session.themeName || 'default',\n  )\n  const [error, setError] = useState<unknown>()\n  return (\n    <Dialog open onClose={handleClose} title=\"Export SVG\">\n      <DialogContent>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : loading ? (\n          <LoadingMessage />\n        ) : null}\n        <TextField2\n          helperText=\"filename\"\n          value={filename}\n          onChange={event => {\n            setFilename(event.target.value)\n          }}\n        />\n\n        <TextField2\n          select\n          label=\"Track label positioning\"\n          variant=\"outlined\"\n          value={trackLabels}\n          style={{ width: 150 }}\n          onChange={event => {\n            setTrackLabels(event.target.value)\n          }}\n        >\n          <MenuItem value=\"offset\">Offset</MenuItem>\n          <MenuItem value=\"overlay\">Overlay</MenuItem>\n          <MenuItem value=\"left\">Left</MenuItem>\n          <MenuItem value=\"none\">None</MenuItem>\n        </TextField2>\n        <br />\n        {session.allThemes ? (\n          <TextField2\n            select\n            label=\"Theme\"\n            variant=\"outlined\"\n            value={themeName}\n            onChange={event => {\n              setThemeName(event.target.value)\n            }}\n          >\n            {Object.entries(session.allThemes()).map(([key, val]) => (\n              <MenuItem key={key} value={key}>\n                {\n                  // @ts-expect-error\n                  val.name || '(Unknown name)'\n                }\n              </MenuItem>\n            ))}\n          </TextField2>\n        ) : null}\n        {offscreenCanvas ? (\n          <FormControlLabel\n            control={\n              <Checkbox\n                checked={rasterizeLayers}\n                onChange={() => {\n                  setRasterizeLayers(val => !val)\n                }}\n              />\n            }\n            label=\"Rasterize canvas based tracks? File may be much larger if this is turned off\"\n          />\n        ) : (\n          <Typography>\n            Note: rasterizing layers not yet supported in this browser, so SVG\n            size may be large\n          </Typography>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {\n            handleClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"primary\"\n          type=\"submit\"\n          onClick={async () => {\n            setLoading(true)\n            setError(undefined)\n            try {\n              await model.exportSvg({\n                rasterizeLayers,\n                filename,\n                themeName,\n                trackLabels,\n              })\n              handleClose()\n            } catch (e) {\n              console.error(e)\n              setError(e)\n            } finally {\n              setLoading(false)\n            }\n          }}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;"],"names":["LoadingMessage","React","CircularProgress","size","style","marginRight","Typography","display","useSvgLocal","key","val","useLocalStorage","TextField2","children","rest","TextField","ExportSvgDialog","model","handleClose","session","getSession","offscreenCanvas","OffscreenCanvas","rasterizeLayers","setRasterizeLayers","useState","loading","setLoading","filename","setFilename","trackLabels","setTrackLabels","themeName","setThemeName","error","setError","Dialog","open","onClose","title","DialogContent","ErrorMessage","helperText","value","onChange","event","target","select","label","variant","width","MenuItem","allThemes","Object","entries","map","name","FormControlLabel","control","Checkbox","checked","DialogActions","Button","color","onClick","type","async","undefined","exportSvg","e","console","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","root","theme","variants","transition","transitions","create","animation","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","className","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8876.24bf6aed.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8876],{98876:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});var r=n(7552),a=n(75785),o=n(68446),l=n(68584),i=n(99546),s=n(49823),c=n(72639),m=n(9555),d=n(36715),u=n(89003);const p=(0,a.n9)()({guide:{pointerEvents:"none",height:"100%",width:1,position:"absolute",zIndex:10},sm:{fontSize:10}}),v=(0,o.observer)((function({model:e,coordX:t}){const{classes:n}=p();return r.createElement(u.A,{open:!0,placement:"top",title:e.views.map((e=>e.pxToBp(t))).map(((e,t)=>r.createElement(d.A,{className:n.sm,key:[JSON.stringify(e),t].join("-")},(0,i.stringify)(e,!0)))),arrow:!0},r.createElement("div",{className:n.guide,style:{left:t,background:"red"}}))})),g=(0,a.n9)()((e=>({rubberband:{height:"100%",background:(0,c.X4)(e.palette.tertiary.main,.7),position:"absolute",zIndex:10,textAlign:"center",overflow:"hidden"},rubberbandControl:{cursor:"crosshair",width:"100%",minHeight:8},rubberbandText:{color:e.palette.tertiary.contrastText},popover:{mouseEvents:"none",cursor:"crosshair"},paper:{paddingLeft:e.spacing(1),paddingRight:e.spacing(1)}}))),b=(0,o.observer)((function({model:e,ControlComponent:t=r.createElement("div",null)}){const[n,a]=(0,r.useState)(),[o,l]=(0,r.useState)(),[c,u]=(0,r.useState)(),[p,b]=(0,r.useState)(),f=(0,r.useRef)(null),E=(0,r.useRef)(null),{classes:h}=g(),w=void 0!==n&&void 0===c;function y(e){e.preventDefault(),e.stopPropagation();const t=e.clientX-e.target.getBoundingClientRect().left;a(t),l(t)}function C(e){const t=e.target;b(e.clientX-t.getBoundingClientRect().left)}function k(){b(void 0),e.views.forEach((e=>{e.setOffsets(void 0,void 0)}))}function N(){u(void 0),a(void 0),l(void 0)}(0,r.useEffect)((()=>{function t(e){if(f.current&&w){const t=e.clientX-f.current.getBoundingClientRect().left;l(t)}}function r(t){if(void 0!==n&&f.current){const{clientX:r,clientY:a}=t,o=r-f.current.getBoundingClientRect().left;u({offsetX:o,clientX:r,clientY:a}),e.views.forEach((e=>{const t=function(e,t){if(void 0===n)return;let r=n,a=e;return a<r&&([r,a]=[a,r]),{leftOffset:t.pxToBp(r),rightOffset:t.pxToBp(a)}}(o,e);if(t){const{leftOffset:n,rightOffset:r}=t;e.setOffsets(n,r)}})),b(void 0)}}return w?(window.addEventListener("mousemove",t),window.addEventListener("mouseup",r),()=>{window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",r)}):()=>{}}),[n,w,e]),(0,r.useEffect)((()=>{!w&&void 0!==o&&void 0!==n&&Math.abs(o-n)<=3&&N()}),[w,o,n]);const M=Boolean(c);if(void 0===n)return r.createElement(r.Fragment,null,void 0!==p?r.createElement(v,{model:e,coordX:p}):null,r.createElement("div",{ref:f,className:h.rubberbandControl,onMouseDown:y,onMouseOut:k,onMouseMove:C},t));const x=c?c.offsetX:o||0,B=x<n?x:n,S=Math.abs(x-n),{views:A}=e,T=A.map((e=>e.pxToBp(B))),O=A.map((e=>e.pxToBp(B+S))),R=A.map((e=>Math.ceil(S*e.bpPerPx)));return r.createElement(r.Fragment,null,E.current?r.createElement(r.Fragment,null,r.createElement(m.Ay,{className:h.popover,classes:{paper:h.paper},open:!0,anchorEl:E.current,anchorOrigin:{vertical:"top",horizontal:"left"},transformOrigin:{vertical:"bottom",horizontal:"right"},keepMounted:!0,disableRestoreFocus:!0},T.map(((e,t)=>r.createElement(d.A,{key:[JSON.stringify(e),t,"left"].join("-")},(0,i.stringify)(e,!0))))),r.createElement(m.Ay,{className:h.popover,classes:{paper:h.paper},open:!0,anchorEl:E.current,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"bottom",horizontal:"left"},keepMounted:!0,disableRestoreFocus:!0},O.map(((e,t)=>r.createElement(d.A,{key:[JSON.stringify(e),t,"right"].join("-")},(0,i.stringify)(e,!0)))))):null,r.createElement("div",{ref:E,className:h.rubberband,style:{left:B,width:S}},r.createElement(d.A,{variant:"h6",className:h.rubberbandText},R.map(((e,t)=>r.createElement(d.A,{key:`${e}_${t}`},`${e.toLocaleString("en-US")}bp`))))),r.createElement("div",{className:h.rubberbandControl,ref:f,onMouseDown:y,onMouseOut:k,onMouseMove:C},t),c?r.createElement(s.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:c.clientX,top:c.clientY},onMenuItemClick:function(e,t){t(),N()},open:M,onClose:N,menuItems:e.rubberBandMenuItems()}):null)}));var f=n(61723),E=n(20529),h=n(17307),w=n(90542),y=n(23758);const C=(0,a.n9)()((()=>({headerBar:{gridArea:"1/1/auto/span 2",display:"flex"},spacer:{flexGrow:1},iconButton:{margin:5},bp:{display:"flex",alignItems:"center",marginLeft:10},searchContainer:{marginLeft:5},searchBox:{display:"flex"}}))),k=(0,o.observer)((({model:e})=>r.createElement(y.A,{menuItems:[{label:"Synteny track selector",onClick:()=>e.activateTrackSelector()},...e.views.map(((e,t)=>({label:`View ${t+1} track selector`,onClick:()=>e.activateTrackSelector()})))]},r.createElement(w.xU,null)))),N=(0,o.observer)((function({model:e}){const{classes:t}=C(),[n,a]=(0,r.useState)(),o=e.views.some((e=>!e.hideHeader));return r.createElement("div",{className:t.headerBar},r.createElement(k,{model:e}),r.createElement(f.A,{onClick:e=>{a(e.currentTarget)},className:t.iconButton},r.createElement(h.A,null)),o?null:e.views.map((e=>r.createElement("div",{key:e.id,className:t.searchBox},r.createElement("div",{className:t.searchContainer},r.createElement(E.Gd,{model:e,showHelp:!1})),r.createElement("div",{className:t.bp},r.createElement(d.A,{variant:"body2",color:"textSecondary",className:t.bp},Math.round(e.coarseTotalBp).toLocaleString("en-US")," bp"))))),r.createElement("div",{className:t.spacer}),n?r.createElement(s.Menu,{anchorEl:n,open:!0,onMenuItemClick:(e,t)=>{t(),a(void 0)},menuItems:e.headerMenuItems(),onClose:()=>{a(void 0)}}):null)})),M=(0,a.n9)()((e=>({container:{display:"grid"},overlay:{zIndex:100,gridArea:"1/1"},content:{gridArea:"1/1",position:"relative"},grid:{display:"grid"},relative:{position:"relative"},rubberbandContainer:{position:"relative",overflow:"hidden"},rubberbandDiv:{width:"100%",background:e.palette.action.disabledBackground,height:15,"&:hover":{background:e.palette.action.selected}}}))),x=(0,o.observer)((({model:e})=>{const{classes:t}=M();return r.createElement(r.Fragment,null,e.tracks.map((n=>{const[a]=n.displays,{RenderingComponent:o}=a,i=(0,l.getConf)(n,"trackId");return o?r.createElement("div",{className:t.overlay,key:i,style:{height:e.middleComparativeHeight,overflow:"hidden"}},r.createElement(o,{model:a})):null})))})),B=(0,o.observer)((({model:e})=>{const{classes:t}=M(),{views:n}=e,{pluginManager:a}=(0,i.getEnv)(e),{ReactComponent:o}=a.getViewType(n[0].type);return r.createElement("div",{className:t.rubberbandContainer},r.createElement(N,{model:e}),r.createElement(b,{model:e,ControlComponent:r.createElement("div",{className:t.rubberbandDiv})}),r.createElement("div",{className:t.container},r.createElement(o,{model:n[0]}),r.createElement("div",{className:t.grid},r.createElement(x,{model:e})),r.createElement(s.ResizeHandle,{onDrag:t=>e.setMiddleComparativeHeight(e.middleComparativeHeight+t),style:{height:4,background:"#ccc"}}),r.createElement(o,{model:n[1]})))})),S=(0,o.observer)((({model:e})=>{const{classes:t}=M(),{views:n}=e,{pluginManager:a}=(0,i.getEnv)(e);return r.createElement("div",{className:t.rubberbandContainer},r.createElement(N,{model:e}),r.createElement(b,{model:e,ControlComponent:r.createElement("div",{className:t.rubberbandDiv})}),r.createElement("div",{className:t.container},r.createElement("div",{className:t.content},r.createElement("div",{className:t.relative},n.map((e=>{const{ReactComponent:t}=a.getViewType(e.type);return r.createElement(t,{key:e.id,model:e})}))),r.createElement(x,{model:e}))))})),A=(0,o.observer)((function(e){const{model:t}=e;return t.tracks.some((({displays:e})=>e.some((e=>(0,l.getConf)(e,"middle")))))?r.createElement(B,e):r.createElement(S,e)}))}}]);
+//# sourceMappingURL=8876.24bf6aed.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8876.24bf6aed.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8876.24bf6aed.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearComparativeView/components/VerticalGuide.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/Rubberband.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/Header.tsx","../../../plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx"],"sourcesContent":["import React from 'react'\nimport { Tooltip, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { stringify } from '@jbrowse/core/util'\nimport { makeStyles } from 'tss-react/mui'\nimport { LinearComparativeViewModel } from '../model'\n\ntype LCV = LinearComparativeViewModel\n\nconst useStyles = makeStyles()({\n  guide: {\n    pointerEvents: 'none',\n    height: '100%',\n    width: 1,\n    position: 'absolute',\n    zIndex: 10,\n  },\n  sm: {\n    fontSize: 10,\n  },\n})\n\nconst VerticalGuide = observer(function ({\n  model,\n  coordX,\n}: {\n  model: LCV\n  coordX: number\n}) {\n  const { classes } = useStyles()\n  return (\n    <Tooltip\n      open\n      placement=\"top\"\n      title={model.views\n        .map(view => view.pxToBp(coordX))\n        .map((elt, idx) => (\n          <Typography\n            className={classes.sm}\n            key={[JSON.stringify(elt), idx].join('-')}\n          >\n            {stringify(elt, true)}\n          </Typography>\n        ))}\n      arrow\n    >\n      <div\n        className={classes.guide}\n        style={{\n          left: coordX,\n          background: 'red',\n        }}\n      />\n    </Tooltip>\n  )\n})\n\nexport default VerticalGuide\n","import React, { useRef, useEffect, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport { Popover, Typography, alpha } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { stringify } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport VerticalGuide from './VerticalGuide'\n\ntype LCV = LinearComparativeViewModel\ntype LGV = LinearGenomeViewModel\n\nconst useStyles = makeStyles()(theme => {\n  return {\n    rubberband: {\n      height: '100%',\n      background: alpha(theme.palette.tertiary.main, 0.7),\n      position: 'absolute',\n      zIndex: 10,\n      textAlign: 'center',\n      overflow: 'hidden',\n    },\n    rubberbandControl: {\n      cursor: 'crosshair',\n      width: '100%',\n      minHeight: 8,\n    },\n    rubberbandText: {\n      color: theme.palette.tertiary.contrastText,\n    },\n    popover: {\n      mouseEvents: 'none',\n      cursor: 'crosshair',\n    },\n    paper: {\n      paddingLeft: theme.spacing(1),\n      paddingRight: theme.spacing(1),\n    },\n  }\n})\n\nconst LinearComparativeRubberband = observer(function Rubberband({\n  model,\n  ControlComponent = <div />,\n}: {\n  model: LCV\n  ControlComponent?: React.ReactElement\n}) {\n  const [startX, setStartX] = useState<number>()\n  const [currentX, setCurrentX] = useState<number>()\n\n  // clientX and clientY used for anchorPosition for menu\n  // offsetX used for calculations about width of selection\n  const [anchorPosition, setAnchorPosition] = useState<{\n    offsetX: number\n    clientX: number\n    clientY: number\n  }>()\n  const [guideX, setGuideX] = useState<number>()\n  const controlsRef = useRef<HTMLDivElement>(null)\n  const rubberbandRef = useRef<HTMLDivElement>(null)\n  const { classes } = useStyles()\n  const mouseDragging = startX !== undefined && anchorPosition === undefined\n\n  useEffect(() => {\n    function computeOffsets(offsetX: number, view: LGV) {\n      if (startX === undefined) {\n        return\n      }\n      let leftPx = startX\n      let rightPx = offsetX\n      // handles clicking and dragging to the left\n      if (rightPx < leftPx) {\n        ;[leftPx, rightPx] = [rightPx, leftPx]\n      }\n      const leftOffset = view.pxToBp(leftPx)\n      const rightOffset = view.pxToBp(rightPx)\n\n      return { leftOffset, rightOffset }\n    }\n\n    function globalMouseMove(event: MouseEvent) {\n      if (controlsRef.current && mouseDragging) {\n        const relativeX =\n          event.clientX - controlsRef.current.getBoundingClientRect().left\n        setCurrentX(relativeX)\n      }\n    }\n\n    function globalMouseUp(event: MouseEvent) {\n      if (startX !== undefined && controlsRef.current) {\n        const { clientX, clientY } = event\n        const ref = controlsRef.current\n        const offsetX = clientX - ref.getBoundingClientRect().left\n        // as stated above, store both clientX/Y and offsetX for different\n        // purposes\n        setAnchorPosition({\n          offsetX,\n          clientX,\n          clientY,\n        })\n        model.views.forEach(view => {\n          const args = computeOffsets(offsetX, view)\n          if (args) {\n            const { leftOffset, rightOffset } = args\n            view.setOffsets(leftOffset, rightOffset)\n          }\n        })\n        setGuideX(undefined)\n      }\n    }\n    if (mouseDragging) {\n      window.addEventListener('mousemove', globalMouseMove)\n      window.addEventListener('mouseup', globalMouseUp)\n      return () => {\n        window.removeEventListener('mousemove', globalMouseMove)\n        window.removeEventListener('mouseup', globalMouseUp)\n      }\n    }\n    return () => {}\n  }, [startX, mouseDragging, model])\n\n  useEffect(() => {\n    if (\n      !mouseDragging &&\n      currentX !== undefined &&\n      startX !== undefined &&\n      Math.abs(currentX - startX) <= 3\n    ) {\n      handleClose()\n    }\n  }, [mouseDragging, currentX, startX])\n\n  function mouseDown(event: React.MouseEvent<HTMLDivElement>) {\n    event.preventDefault()\n    event.stopPropagation()\n    const relativeX =\n      event.clientX -\n      (event.target as HTMLDivElement).getBoundingClientRect().left\n    setStartX(relativeX)\n    setCurrentX(relativeX)\n  }\n\n  function mouseMove(event: React.MouseEvent<HTMLDivElement>) {\n    const target = event.target as HTMLDivElement\n    setGuideX(event.clientX - target.getBoundingClientRect().left)\n  }\n\n  function mouseOut() {\n    setGuideX(undefined)\n    model.views.forEach(view => {\n      view.setOffsets(undefined, undefined)\n    })\n  }\n\n  function handleClose() {\n    setAnchorPosition(undefined)\n    setStartX(undefined)\n    setCurrentX(undefined)\n  }\n\n  const open = Boolean(anchorPosition)\n\n  function handleMenuItemClick(_: unknown, callback: () => void) {\n    callback()\n    handleClose()\n  }\n\n  if (startX === undefined) {\n    return (\n      <>\n        {guideX !== undefined ? (\n          <VerticalGuide model={model} coordX={guideX} />\n        ) : null}\n        <div\n          ref={controlsRef}\n          className={classes.rubberbandControl}\n          onMouseDown={mouseDown}\n          onMouseOut={mouseOut}\n          onMouseMove={mouseMove}\n        >\n          {ControlComponent}\n        </div>\n      </>\n    )\n  }\n\n  const right = anchorPosition ? anchorPosition.offsetX : currentX || 0\n  const left = right < startX ? right : startX\n  const width = Math.abs(right - startX)\n  const { views } = model\n  const leftBpOffset = views.map(view => view.pxToBp(left))\n  const rightBpOffset = views.map(view => view.pxToBp(left + width))\n  const numOfBpSelected = views.map(view => Math.ceil(width * view.bpPerPx))\n  return (\n    <>\n      {rubberbandRef.current ? (\n        <>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={rubberbandRef.current}\n            anchorOrigin={{\n              vertical: 'top',\n              horizontal: 'left',\n            }}\n            transformOrigin={{\n              vertical: 'bottom',\n              horizontal: 'right',\n            }}\n            keepMounted\n            disableRestoreFocus\n          >\n            {leftBpOffset.map((l, idx) => (\n              <Typography key={[JSON.stringify(l), idx, 'left'].join('-')}>\n                {stringify(l, true)}\n              </Typography>\n            ))}\n          </Popover>\n          <Popover\n            className={classes.popover}\n            classes={{ paper: classes.paper }}\n            open\n            anchorEl={rubberbandRef.current}\n            anchorOrigin={{\n              vertical: 'top',\n              horizontal: 'right',\n            }}\n            transformOrigin={{\n              vertical: 'bottom',\n              horizontal: 'left',\n            }}\n            keepMounted\n            disableRestoreFocus\n          >\n            {rightBpOffset.map((l, idx) => (\n              <Typography key={[JSON.stringify(l), idx, 'right'].join('-')}>\n                {stringify(l, true)}\n              </Typography>\n            ))}\n          </Popover>\n        </>\n      ) : null}\n      <div\n        ref={rubberbandRef}\n        className={classes.rubberband}\n        style={{ left, width }}\n      >\n        <Typography variant=\"h6\" className={classes.rubberbandText}>\n          {numOfBpSelected.map((n, i) => (\n            /* biome-ignore lint/suspicious/noArrayIndexKey: */\n            <Typography key={`${n}_${i}`}>\n              {`${n.toLocaleString('en-US')}bp`}\n            </Typography>\n          ))}\n        </Typography>\n      </div>\n      <div\n        className={classes.rubberbandControl}\n        ref={controlsRef}\n        onMouseDown={mouseDown}\n        onMouseOut={mouseOut}\n        onMouseMove={mouseMove}\n      >\n        {ControlComponent}\n      </div>\n      {anchorPosition ? (\n        <Menu\n          anchorReference=\"anchorPosition\"\n          anchorPosition={{\n            left: anchorPosition.clientX,\n            top: anchorPosition.clientY,\n          }}\n          onMenuItemClick={handleMenuItemClick}\n          open={open}\n          onClose={handleClose}\n          menuItems={model.rubberBandMenuItems()}\n        />\n      ) : null}\n    </>\n  )\n})\n\nexport default LinearComparativeRubberband\n","import React, { useState } from 'react'\nimport { IconButton, Typography } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { SearchBox } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\nimport { Menu } from '@jbrowse/core/ui'\n\n// icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'\nimport CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'\n\ntype LCV = LinearComparativeViewModel\n\nconst useStyles = makeStyles()(() => ({\n  headerBar: {\n    gridArea: '1/1/auto/span 2',\n    display: 'flex',\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n  iconButton: {\n    margin: 5,\n  },\n  bp: {\n    display: 'flex',\n    alignItems: 'center',\n    marginLeft: 10,\n  },\n  searchContainer: {\n    marginLeft: 5,\n  },\n  searchBox: {\n    display: 'flex',\n  },\n}))\n\nconst TrackSelector = observer(({ model }: { model: LCV }) => {\n  return (\n    <CascadingMenuButton\n      menuItems={[\n        {\n          label: 'Synteny track selector',\n          onClick: () => model.activateTrackSelector(),\n        },\n        ...model.views.map((view, idx) => ({\n          label: `View ${idx + 1} track selector`,\n          onClick: () => view.activateTrackSelector(),\n        })),\n      ]}\n    >\n      <TrackSelectorIcon />\n    </CascadingMenuButton>\n  )\n})\n\nconst Header = observer(function ({ model }: { model: LCV }) {\n  const { classes } = useStyles()\n  const [menuAnchorEl, setMenuAnchorEl] = useState<HTMLElement>()\n  const anyShowHeaders = model.views.some(view => !view.hideHeader)\n  return (\n    <div className={classes.headerBar}>\n      <TrackSelector model={model} />\n\n      <IconButton\n        onClick={event => {\n          setMenuAnchorEl(event.currentTarget)\n        }}\n        className={classes.iconButton}\n      >\n        <MoreVertIcon />\n      </IconButton>\n      {!anyShowHeaders\n        ? model.views.map(view => (\n            <div key={view.id} className={classes.searchBox}>\n              <div className={classes.searchContainer}>\n                <SearchBox model={view} showHelp={false} />\n              </div>\n              <div className={classes.bp}>\n                <Typography\n                  variant=\"body2\"\n                  color=\"textSecondary\"\n                  className={classes.bp}\n                >\n                  {Math.round(view.coarseTotalBp).toLocaleString('en-US')} bp\n                </Typography>\n              </div>\n            </div>\n          ))\n        : null}\n\n      <div className={classes.spacer} />\n\n      {menuAnchorEl ? (\n        <Menu\n          anchorEl={menuAnchorEl}\n          open\n          onMenuItemClick={(_event, callback) => {\n            callback()\n            setMenuAnchorEl(undefined)\n          }}\n          menuItems={model.headerMenuItems()}\n          onClose={() => {\n            setMenuAnchorEl(undefined)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default Header\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { getEnv } from '@jbrowse/core/util'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearComparativeViewModel } from '../model'\nimport Rubberband from './Rubberband'\nimport Header from './Header'\n\nconst useStyles = makeStyles()(theme => ({\n  container: {\n    display: 'grid',\n  },\n  overlay: {\n    zIndex: 100,\n    gridArea: '1/1',\n  },\n  content: {\n    gridArea: '1/1',\n    position: 'relative',\n  },\n  grid: {\n    display: 'grid',\n  },\n  relative: {\n    position: 'relative',\n  },\n\n  // this helps keep the vertical guide inside the parent view container,\n  // similar style exists in the single LGV's trackscontainer\n  rubberbandContainer: {\n    position: 'relative',\n    overflow: 'hidden',\n  },\n\n  rubberbandDiv: {\n    width: '100%',\n    background: theme.palette.action.disabledBackground,\n    height: 15,\n    '&:hover': {\n      background: theme.palette.action.selected,\n    },\n  },\n}))\n\ntype LCV = LinearComparativeViewModel\n\nconst Overlays = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  return (\n    <>\n      {model.tracks.map(track => {\n        const [display] = track.displays\n        const { RenderingComponent } = display\n        const trackId = getConf(track, 'trackId')\n        return RenderingComponent ? (\n          <div\n            className={classes.overlay}\n            key={trackId}\n            style={{\n              height: model.middleComparativeHeight,\n              overflow: 'hidden',\n            }}\n          >\n            <RenderingComponent model={display} />\n          </div>\n        ) : null\n      })}\n    </>\n  )\n})\n\n// The comparative is in the middle of the views\nconst MiddleComparativeView = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  const { views } = model\n  const { pluginManager } = getEnv(model)\n  const { ReactComponent } = pluginManager.getViewType(views[0]!.type)!\n\n  return (\n    <div className={classes.rubberbandContainer}>\n      <Header model={model} />\n      <Rubberband\n        model={model}\n        ControlComponent={<div className={classes.rubberbandDiv} />}\n      />\n      <div className={classes.container}>\n        <ReactComponent model={views[0]} />\n        <div className={classes.grid}>\n          <Overlays model={model} />\n        </div>\n        <ResizeHandle\n          onDrag={n =>\n            model.setMiddleComparativeHeight(model.middleComparativeHeight + n)\n          }\n          style={{\n            height: 4,\n            background: '#ccc',\n          }}\n        />\n        <ReactComponent model={views[1]} />\n      </div>\n    </div>\n  )\n})\nconst OverlayComparativeView = observer(({ model }: { model: LCV }) => {\n  const { classes } = useStyles()\n  const { views } = model\n  const { pluginManager } = getEnv(model)\n  return (\n    <div className={classes.rubberbandContainer}>\n      <Header model={model} />\n      <Rubberband\n        model={model}\n        ControlComponent={<div className={classes.rubberbandDiv} />}\n      />\n\n      <div className={classes.container}>\n        <div className={classes.content}>\n          <div className={classes.relative}>\n            {views.map(view => {\n              const { ReactComponent } = pluginManager.getViewType(view.type)!\n              return <ReactComponent key={view.id} model={view} />\n            })}\n          </div>\n          <Overlays model={model} />\n        </div>\n      </div>\n    </div>\n  )\n})\n\nconst LinearComparativeView = observer(function (props: {\n  ExtraButtons?: React.ReactNode\n  model: LCV\n}) {\n  const { model } = props\n\n  const middle = model.tracks.some(({ displays }) =>\n    displays.some((d: { configuration: AnyConfigurationModel }) =>\n      getConf(d, 'middle'),\n    ),\n  )\n  return middle ? (\n    <MiddleComparativeView {...props} />\n  ) : (\n    <OverlayComparativeView {...props} />\n  )\n})\n\nexport default LinearComparativeView\n"],"names":["useStyles","makeStyles","guide","pointerEvents","height","width","position","zIndex","sm","fontSize","observer","model","coordX","classes","React","Tooltip","open","placement","title","views","map","view","pxToBp","elt","idx","Typography","className","key","JSON","stringify","join","arrow","style","left","background","theme","rubberband","alpha","palette","tertiary","main","textAlign","overflow","rubberbandControl","cursor","minHeight","rubberbandText","color","contrastText","popover","mouseEvents","paper","paddingLeft","spacing","paddingRight","ControlComponent","startX","setStartX","useState","currentX","setCurrentX","anchorPosition","setAnchorPosition","guideX","setGuideX","controlsRef","useRef","rubberbandRef","mouseDragging","undefined","mouseDown","event","preventDefault","stopPropagation","relativeX","clientX","target","getBoundingClientRect","mouseMove","mouseOut","forEach","setOffsets","handleClose","useEffect","globalMouseMove","current","globalMouseUp","clientY","offsetX","args","leftPx","rightPx","leftOffset","rightOffset","computeOffsets","window","addEventListener","removeEventListener","Math","abs","Boolean","VerticalGuide","ref","onMouseDown","onMouseOut","onMouseMove","right","leftBpOffset","rightBpOffset","numOfBpSelected","ceil","bpPerPx","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","disableRestoreFocus","l","variant","n","i","toLocaleString","Menu","anchorReference","top","onMenuItemClick","_","callback","onClose","menuItems","rubberBandMenuItems","headerBar","gridArea","display","spacer","flexGrow","iconButton","margin","bp","alignItems","marginLeft","searchContainer","searchBox","TrackSelector","CascadingMenuButton","label","onClick","activateTrackSelector","TrackSelectorIcon","menuAnchorEl","setMenuAnchorEl","anyShowHeaders","some","hideHeader","IconButton","currentTarget","MoreVertIcon","id","SearchBox","showHelp","round","coarseTotalBp","_event","headerMenuItems","container","overlay","content","grid","relative","rubberbandContainer","rubberbandDiv","action","disabledBackground","selected","Overlays","tracks","track","displays","RenderingComponent","trackId","getConf","middleComparativeHeight","MiddleComparativeView","pluginManager","getEnv","ReactComponent","getViewType","type","Header","Rubberband","ResizeHandle","onDrag","setMiddleComparativeHeight","OverlayComparativeView","props","d"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8880.6ae9d985.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8880],{26842:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(7552),a=n(99546),o=n(68446),l=n(90461);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(null,arguments)}const s=e=>{const{color:t="rgb(255,255,255,0.8)"}=e;return r.createElement("rect",i({},e,(0,a.getFillProps)(t)))},c=(0,o.observer)((function({model:e,rowHeight:t,labelWidth:n,exportSVG:a}){const{needsCustomLegend:o,needsScalebar:l,needsFullHeightScalebar:i,rowHeightTooSmallForScalebar:c,renderColorBoxes:m,sources:g}=e,h=Math.min(t,12),u=t>11,d=m?15:0,f=n+d+5,p=(a?10:0)||(l&&!c?50:0);return g?r.createElement(r.Fragment,null,i?r.createElement(s,{y:0,x:p,width:f,height:(g.length+.25)*t}):null,g.map(((e,n)=>{const a=Math.min(20,t);return r.createElement(r.Fragment,{key:`${e.name}-${n}`},i?null:r.createElement(s,{y:n*t+1,x:p,width:f,height:a}),e.color?r.createElement(s,{y:n*t+1,x:p,width:d,height:o?t:a,color:e.color}):null,u?r.createElement("text",{y:n*t+13,x:p+d+2,fontSize:h},e.name):null)}))):null})),m=(0,o.observer)((({model:e})=>{const{ticks:t,scaleType:n}=e,{width:o}=(0,a.getContainingView)(e),l=`[${t?.values[0]}-${t?.values[1]}]${"log"===n?" (log scale)":""}`,i=(0,a.measureText)(l,14),c=o-i-25;return r.createElement(r.Fragment,null,r.createElement(s,{y:0,x:c,width:i+6,height:16}),r.createElement("text",{y:13,x:c},l))}));var g=n(58474);const h=(0,o.observer)((function({children:e,model:t,exportSVG:n}){const{height:o}=t;return n?e:r.createElement("svg",{style:{position:"absolute",top:0,left:0,pointerEvents:"none",height:o,width:(0,a.getContainingView)(t).width}},e)})),u=(0,o.observer)((function(e){const{model:t,orientation:n,exportSVG:o}=e,{stats:i,needsCustomLegend:s,needsFullHeightScalebar:u,rowHeightTooSmallForScalebar:d,rowHeight:f,sources:p,ticks:w}=t,E=Math.min(f,12),b=f>11,{width:x}=(0,a.getContainingView)(t);if(!i||!p)return null;const v=Math.max(...p.map((e=>(0,a.measureText)(e.name,E))).map((e=>b?e:20)));return r.createElement(h,e,u?r.createElement(r.Fragment,null,r.createElement("g",{transform:`translate(${o?0:(0,g.A3)(t)},0)`},r.createElement(l.A,{model:t,orientation:n})),r.createElement("g",{transform:`translate(${x-v-100},0)`},r.createElement(c,{exportSVG:o,model:t,rowHeight:12,labelWidth:v}))):r.createElement(r.Fragment,null,r.createElement(c,{exportSVG:o,model:t,rowHeight:t.rowHeight,labelWidth:v}),d||s?r.createElement(m,e):p.map(((e,a)=>r.createElement("g",{transform:`translate(0 ${f*a})`,key:`${JSON.stringify(w)}-${a}`},r.createElement(l.A,{model:t,orientation:n}))))))}))},58474:(e,t,n)=>{n.d(t,{A3:()=>s,BO:()=>o,oJ:()=>l});var r=n(99546),a=n(68584);function o(e,t,n=1){const r=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>e-t));let a=0;for(const t of r){const r=Math.max(a,t-n);r>=a&&e.splice(r,0,e.splice(t,1)[0]),a+=1}return e}function l(e,t,n=1){const r=t.map((t=>e.findIndex((e=>e.name===t)))).sort(((e,t)=>t-e));let a=e.length-1;for(const t of r){const r=Math.min(a,t+n);r<=a&&e.splice(r,0,e.splice(t,1)[0]),a-=1}return e}const i=12.8;function s(e){const{prefersOffset:t}=e,{trackLabels:n}=(0,r.getContainingView)(e),o=(0,r.getContainingTrack)(e),l=(0,a.getConf)(o,"name");return"overlapping"!==n||t?10:(0,r.measureText)(l,i)+100}},28880:(e,t,n)=>{n.d(t,{renderSvg:()=>i});var r=n(7552),a=n(99546),o=n(42489),l=n(26842);async function i(e,t,n){await(0,o.when)((()=>!!e.stats&&!!e.regionCannotBeRenderedText));const{offsetPx:i}=(0,a.getContainingView)(e);return r.createElement(r.Fragment,null,r.createElement("g",{id:"snpcov"},await n(t)),r.createElement("g",{transform:`translate(${Math.max(-i,0)})`},r.createElement(l.A,{model:e,orientation:"left",exportSVG:!0})))}}}]);
+//# sourceMappingURL=8880.6ae9d985.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8880.6ae9d985.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8880.6ae9d985.chunk.js","mappings":"iZAGA,MAWA,EAXgBA,IAOd,MAAM,MAAEC,EAAQ,wBAA2BD,EAC3C,OAAOE,EAAAA,cAAA,OAAAC,EAAA,GAAUH,GAAWI,EAAAA,EAAAA,cAAaH,IAAU,ECyErD,GA7EoBI,EAAAA,EAAAA,WAAS,UAAU,MACrCC,EAAK,UACLC,EAAS,WACTC,EAAU,UACVC,IAOA,MAAM,kBACJC,EAAiB,cACjBC,EAAa,wBACbC,EAAuB,6BACvBC,EAA4B,iBAC5BC,EAAgB,QAChBC,GACET,EACEU,EAAcC,KAAKC,IAAIX,EAAW,IAClCY,EAAkBZ,EAAY,GAC9Ba,EAAgBN,EAAmB,GAAK,EACxCO,EAAcb,EAAaY,EAAgB,EAE3CE,GADYb,EAAY,GAAK,KAEnBE,IAAkBE,EAA+B,GAAK,GAEtE,OAAOE,EACLb,EAAAA,cAAAA,EAAAA,SAAA,KAGIU,EACEV,EAAAA,cAACqB,EAAM,CACLC,EAAG,EACHC,EAAGH,EACHI,MAAOL,EACPM,QAASZ,EAAQa,OAAS,KAAQrB,IAElC,KAELQ,EAAQc,KAAI,CAACC,EAAQC,KACpB,MAAMC,EAAYf,KAAKC,IAAI,GAAIX,GAC/B,OACEL,EAAAA,cAACA,EAAAA,SAAc,CAAC+B,IAAK,GAAGH,EAAOI,QAAQH,KACpCnB,EAA0B,KACzBV,EAAAA,cAACqB,EAAM,CACLC,EAAGO,EAAMxB,EAAY,EACrBkB,EAAGH,EACHI,MAAOL,EACPM,OAAQK,IAGXF,EAAO7B,MACNC,EAAAA,cAACqB,EAAM,CACLC,EAAGO,EAAMxB,EAAY,EACrBkB,EAAGH,EACHI,MAAON,EACPO,OAAQjB,EAAoBH,EAAYyB,EACxC/B,MAAO6B,EAAO7B,QAEd,KACHkB,EACCjB,EAAAA,cAAA,QACEsB,EAAGO,EAAMxB,EAAY,GACrBkB,EAAGH,EAAcF,EAAgB,EACjCe,SAAUnB,GAETc,EAAOI,MAER,KACW,KAIrB,IACN,ICtDA,GAjBoB7B,EAAAA,EAAAA,WAAS,EAAGC,YAC9B,MAAM,MAAE8B,EAAK,UAAEC,GAAc/B,GACvB,MAAEoB,IAAUY,EAAAA,EAAAA,mBAAkBhC,GAC9BiC,EAAS,IAAIH,GAAOI,OAAO,MAAMJ,GAAOI,OAAO,MAAoB,QAAdH,EAAsB,eAAiB,KAC5FI,GAAMC,EAAAA,EAAAA,aAAYH,EAAQ,IAE1BI,EAAOjB,EAAQe,EADL,GAEhB,OACEvC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACqB,EAAM,CAACC,EAAG,EAAGC,EAAGkB,EAAMjB,MAAOe,EAAM,EAAGd,OAAQ,KAC/CzB,EAAAA,cAAA,QAAMsB,EAAG,GAAIC,EAAGkB,GACbJ,GAEF,I,eCVP,MAAMK,GAAUvC,EAAAA,EAAAA,WAAS,UAAU,SACjCwC,EAAQ,MACRvC,EAAK,UACLG,IAMA,MAAM,OAAEkB,GAAWrB,EACnB,OAAOG,EACLoC,EAEA3C,EAAAA,cAAA,OACE4C,MAAO,CACLC,SAAU,WACVC,IAAK,EACLC,KAAM,EACNC,cAAe,OACfvB,SACAD,OAAOY,EAAAA,EAAAA,mBAAkBhC,GAAOoB,QAGjCmB,EAGP,IA4EA,GA1E0BxC,EAAAA,EAAAA,WAAS,SAAUL,GAK3C,MAAM,MAAEM,EAAK,YAAE6C,EAAW,UAAE1C,GAAcT,GACpC,MACJoD,EAAK,kBACL1C,EAAiB,wBACjBE,EAAuB,6BACvBC,EAA4B,UAC5BN,EAAS,QACTQ,EAAO,MACPqB,GACE9B,EACEU,EAAcC,KAAKC,IAAIX,EAAW,IAClCY,EAAkBZ,EAAY,IAC5BmB,MAAO2B,IAAcf,EAAAA,EAAAA,mBAAkBhC,GAI/C,IADc8C,IAASrC,EAErB,OAAO,KAGT,MAAMP,EAAaS,KAAKqC,OACnBvC,EACAc,KAAI0B,IAAKb,EAAAA,EAAAA,aAAYa,EAAErB,KAAMlB,KAC7Ba,KAAIH,GAAUP,EAAkBO,EAVpB,MAajB,OACExB,EAAAA,cAAC0C,EAAY5C,EACVY,EACCV,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,KAAGsD,UAAW,aAAc/C,EAA+B,GAAnBgD,EAAAA,EAAAA,IAAUnD,SAChDJ,EAAAA,cAACwD,EAAAA,EAAS,CAACpD,MAAOA,EAAO6C,YAAaA,KAExCjD,EAAAA,cAAA,KAAGsD,UAAW,aAAaH,EAAY7C,EAAa,UAClDN,EAAAA,cAACyD,EAAW,CACVlD,UAAWA,EACXH,MAAOA,EACPC,UAAW,GACXC,WAAYA,MAKlBN,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACyD,EAAW,CACVlD,UAAWA,EACXH,MAAOA,EACPC,UAAWD,EAAMC,UACjBC,WAAYA,IAGbK,GAAgCH,EAC/BR,EAAAA,cAAC0D,EAAgB5D,GAEjBe,EAAQc,KAAI,CAACgC,EAAS9B,IACpB7B,EAAAA,cAAA,KACEsD,UAAW,eAAejD,EAAYwB,KACtCE,IAAK,GAAG6B,KAAKC,UAAU3B,MAAUL,KAEjC7B,EAAAA,cAACwD,EAAAA,EAAS,CAACpD,MAAOA,EAAO6C,YAAaA,QAQtD,G,gFCzGO,SAASa,EAAOC,EAAyBC,EAAeC,EAAK,GAClE,MAAMC,EAAOF,EACVrC,KAAIwC,GAAKJ,EAAIK,WAAUC,GAAKA,EAAErC,OAASmC,MACvCG,MAAK,CAACC,EAAGC,IAAMD,EAAIC,IACtB,IAAIC,EAAU,EACd,IAAK,MAAMC,KAAOR,EAAM,CACtB,MAAMrC,EAAMd,KAAKqC,IAAIqB,EAASC,EAAMT,GAChCpC,GAAO4C,GACTV,EAAIY,OAAO9C,EAAK,EAAGkC,EAAIY,OAAOD,EAAK,GAAG,IAExCD,GAAoB,CACtB,CAEA,OAAOV,CACT,CAEO,SAASa,EAASb,EAAyBC,EAAeC,EAAK,GACpE,MAAMC,EAAOF,EACVrC,KAAIwC,GAAKJ,EAAIK,WAAUC,GAAKA,EAAErC,OAASmC,MACvCG,MAAK,CAACC,EAAGC,IAAMA,EAAID,IACtB,IAAIE,EAAUV,EAAIrC,OAAS,EAC3B,IAAK,MAAMgD,KAAOR,EAAM,CACtB,MAAMrC,EAAMd,KAAKC,IAAIyD,EAASC,EAAMT,GAChCpC,GAAO4C,GACTV,EAAIY,OAAO9C,EAAK,EAAGkC,EAAIY,OAAOD,EAAK,GAAG,IAExCD,GAAoB,CACtB,CAEA,OAAOV,CACT,CAEA,MAAMc,EAAqB,KAEpB,SAAStB,EAAUnD,GACxB,MAAM,cAAE0E,GAAkB1E,GACpB,YAAE2E,IAAgB3C,EAAAA,EAAAA,mBAAkBhC,GACpC4E,GAAQC,EAAAA,EAAAA,oBAAmB7E,GAC3B8E,GAAYC,EAAAA,EAAAA,SAAQH,EAAO,QACjC,MAAuB,gBAAhBD,GAAkCD,EAErC,IADAtC,EAAAA,EAAAA,aAAY0C,EAAWL,GAAsB,GAEnD,C,0FCvCOO,eAAeC,EACpBC,EACAC,EACAC,SAEMC,EAAAA,EAAAA,OAAK,MAAQH,EAAKpC,SAAWoC,EAAKI,6BACxC,MAAM,SAAEC,IAAavD,EAAAA,EAAAA,mBAAkBkD,GACvC,OACEtF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,KAAG4F,GAAG,gBAAgBJ,EAAeD,IACrCvF,EAAAA,cAAA,KAAGsD,UAAW,aAAavC,KAAKqC,KAAKuC,EAAU,OAC7C3F,EAAAA,cAAC6F,EAAAA,EAAU,CAACzF,MAAOkF,EAAMrC,YAAY,OAAO1C,WAAS,KAI7D,C","sources":["../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/RectBg.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/ColorLegend.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/ScoreLegend.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/YScaleBars.tsx","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/components/util.ts","../../../plugins/wiggle/src/MultiLinearWiggleDisplay/models/renderSvg.tsx"],"sourcesContent":["import { getFillProps } from '@jbrowse/core/util'\nimport React from 'react'\n\nconst RectBg = (props: {\n  x: number\n  y: number\n  width: number\n  height: number\n  color?: string\n}) => {\n  const { color = 'rgb(255,255,255,0.8)' } = props\n  return <rect {...props} {...getFillProps(color)} />\n}\n\nexport default RectBg\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport RectBg from './RectBg'\n\nconst ColorLegend = observer(function ({\n  model,\n  rowHeight,\n  labelWidth,\n  exportSVG,\n}: {\n  model: WiggleDisplayModel\n  rowHeight: number\n  labelWidth: number\n  exportSVG?: boolean\n}) {\n  const {\n    needsCustomLegend,\n    needsScalebar,\n    needsFullHeightScalebar,\n    rowHeightTooSmallForScalebar,\n    renderColorBoxes,\n    sources,\n  } = model\n  const svgFontSize = Math.min(rowHeight, 12)\n  const canDisplayLabel = rowHeight > 11\n  const colorBoxWidth = renderColorBoxes ? 15 : 0\n  const legendWidth = labelWidth + colorBoxWidth + 5\n  const svgOffset = exportSVG ? 10 : 0\n  const extraOffset =\n    svgOffset || (needsScalebar && !rowHeightTooSmallForScalebar ? 50 : 0)\n\n  return sources ? (\n    <>\n      {\n        /* 0.25 for hanging letters like g */\n        needsFullHeightScalebar ? (\n          <RectBg\n            y={0}\n            x={extraOffset}\n            width={legendWidth}\n            height={(sources.length + 0.25) * rowHeight}\n          />\n        ) : null\n      }\n      {sources.map((source, idx) => {\n        const boxHeight = Math.min(20, rowHeight)\n        return (\n          <React.Fragment key={`${source.name}-${idx}`}>\n            {needsFullHeightScalebar ? null : (\n              <RectBg\n                y={idx * rowHeight + 1}\n                x={extraOffset}\n                width={legendWidth}\n                height={boxHeight}\n              />\n            )}\n            {source.color ? (\n              <RectBg\n                y={idx * rowHeight + 1}\n                x={extraOffset}\n                width={colorBoxWidth}\n                height={needsCustomLegend ? rowHeight : boxHeight}\n                color={source.color}\n              />\n            ) : null}\n            {canDisplayLabel ? (\n              <text\n                y={idx * rowHeight + 13}\n                x={extraOffset + colorBoxWidth + 2}\n                fontSize={svgFontSize}\n              >\n                {source.name}\n              </text>\n            ) : null}\n          </React.Fragment>\n        )\n      })}\n    </>\n  ) : null\n})\n\nexport default ColorLegend\n","import React from 'react'\nimport { measureText, getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport RectBg from './RectBg'\n\ntype LGV = LinearGenomeViewModel\n\nconst ScoreLegend = observer(({ model }: { model: WiggleDisplayModel }) => {\n  const { ticks, scaleType } = model\n  const { width } = getContainingView(model) as LGV\n  const legend = `[${ticks?.values[0]}-${ticks?.values[1]}]${scaleType === 'log' ? ' (log scale)' : ''}`\n  const len = measureText(legend, 14)\n  const padding = 25\n  const xpos = width - len - padding\n  return (\n    <>\n      <RectBg y={0} x={xpos} width={len + 6} height={16} />\n      <text y={13} x={xpos}>\n        {legend}\n      </text>\n    </>\n  )\n})\n\nexport default ScoreLegend\n","import React from 'react'\nimport { measureText, getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { WiggleDisplayModel } from '../models/model'\nimport YScaleBar from '../../shared/YScaleBar'\nimport ColorLegend from './ColorLegend'\nimport ScoreLegend from './ScoreLegend'\nimport { getOffset } from './util'\n\ntype LGV = LinearGenomeViewModel\n\nconst Wrapper = observer(function ({\n  children,\n  model,\n  exportSVG,\n}: {\n  model: WiggleDisplayModel\n  children: React.ReactNode\n  exportSVG?: boolean\n}) {\n  const { height } = model\n  return exportSVG ? (\n    children\n  ) : (\n    <svg\n      style={{\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        pointerEvents: 'none',\n        height,\n        width: getContainingView(model).width,\n      }}\n    >\n      {children}\n    </svg>\n  )\n})\n\nexport const YScaleBars = observer(function (props: {\n  model: WiggleDisplayModel\n  orientation?: string\n  exportSVG?: boolean\n}) {\n  const { model, orientation, exportSVG } = props\n  const {\n    stats,\n    needsCustomLegend,\n    needsFullHeightScalebar,\n    rowHeightTooSmallForScalebar,\n    rowHeight,\n    sources,\n    ticks,\n  } = model\n  const svgFontSize = Math.min(rowHeight, 12)\n  const canDisplayLabel = rowHeight > 11\n  const { width: viewWidth } = getContainingView(model) as LGV\n  const minWidth = 20\n\n  const ready = stats && sources\n  if (!ready) {\n    return null\n  }\n\n  const labelWidth = Math.max(\n    ...sources\n      .map(s => measureText(s.name, svgFontSize))\n      .map(width => (canDisplayLabel ? width : minWidth)),\n  )\n\n  return (\n    <Wrapper {...props}>\n      {needsFullHeightScalebar ? (\n        <>\n          <g transform={`translate(${!exportSVG ? getOffset(model) : 0},0)`}>\n            <YScaleBar model={model} orientation={orientation} />\n          </g>\n          <g transform={`translate(${viewWidth - labelWidth - 100},0)`}>\n            <ColorLegend\n              exportSVG={exportSVG}\n              model={model}\n              rowHeight={12}\n              labelWidth={labelWidth}\n            />\n          </g>\n        </>\n      ) : (\n        <>\n          <ColorLegend\n            exportSVG={exportSVG}\n            model={model}\n            rowHeight={model.rowHeight}\n            labelWidth={labelWidth}\n          />\n\n          {rowHeightTooSmallForScalebar || needsCustomLegend ? (\n            <ScoreLegend {...props} />\n          ) : (\n            sources.map((_source, idx) => (\n              <g\n                transform={`translate(0 ${rowHeight * idx})`}\n                key={`${JSON.stringify(ticks)}-${idx}`}\n              >\n                <YScaleBar model={model} orientation={orientation} />\n              </g>\n            ))\n          )}\n        </>\n      )}\n    </Wrapper>\n  )\n})\n\nexport default YScaleBars\n","import {\n  getContainingTrack,\n  getContainingView,\n  measureText,\n} from '@jbrowse/core/util'\nimport { WiggleDisplayModel } from '../models/model'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\nexport function moveUp(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => a - b)\n  let lastIdx = 0\n  for (const old of idxs) {\n    const idx = Math.max(lastIdx, old - by)\n    if (idx >= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx + 1\n  }\n\n  return arr\n}\n\nexport function moveDown(arr: { name: string }[], sel: string[], by = 1) {\n  const idxs = sel\n    .map(l => arr.findIndex(v => v.name === l))\n    .sort((a, b) => b - a)\n  let lastIdx = arr.length - 1\n  for (const old of idxs) {\n    const idx = Math.min(lastIdx, old + by)\n    if (idx <= lastIdx) {\n      arr.splice(idx, 0, arr.splice(old, 1)[0]!)\n    }\n    lastIdx = lastIdx - 1\n  }\n\n  return arr\n}\n\nconst trackLabelFontSize = 12.8\n\nexport function getOffset(model: WiggleDisplayModel) {\n  const { prefersOffset } = model\n  const { trackLabels } = getContainingView(model) as LinearGenomeViewModel\n  const track = getContainingTrack(model)\n  const trackName = getConf(track, 'name')\n  return trackLabels === 'overlapping' && !prefersOffset\n    ? measureText(trackName, trackLabelFontSize) + 100\n    : 10\n}\n","import React from 'react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { when } from 'mobx'\nimport {\n  ExportSvgDisplayOptions,\n  LinearGenomeViewModel,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport { WiggleDisplayModel } from './model'\nimport YScaleBars from '../components/YScaleBars'\n\nexport async function renderSvg(\n  self: WiggleDisplayModel,\n  opts: ExportSvgDisplayOptions,\n  superRenderSvg: (opts: ExportSvgDisplayOptions) => Promise<React.ReactNode>,\n) {\n  await when(() => !!self.stats && !!self.regionCannotBeRenderedText)\n  const { offsetPx } = getContainingView(self) as LinearGenomeViewModel\n  return (\n    <>\n      <g id=\"snpcov\">{await superRenderSvg(opts)}</g>\n      <g transform={`translate(${Math.max(-offsetPx, 0)})`}>\n        <YScaleBars model={self} orientation=\"left\" exportSVG />\n      </g>\n    </>\n  )\n}\n"],"names":["props","color","React","_extends","getFillProps","observer","model","rowHeight","labelWidth","exportSVG","needsCustomLegend","needsScalebar","needsFullHeightScalebar","rowHeightTooSmallForScalebar","renderColorBoxes","sources","svgFontSize","Math","min","canDisplayLabel","colorBoxWidth","legendWidth","extraOffset","RectBg","y","x","width","height","length","map","source","idx","boxHeight","key","name","fontSize","ticks","scaleType","getContainingView","legend","values","len","measureText","xpos","Wrapper","children","style","position","top","left","pointerEvents","orientation","stats","viewWidth","max","s","transform","getOffset","YScaleBar","ColorLegend","ScoreLegend","_source","JSON","stringify","moveUp","arr","sel","by","idxs","l","findIndex","v","sort","a","b","lastIdx","old","splice","moveDown","trackLabelFontSize","prefersOffset","trackLabels","track","getContainingTrack","trackName","getConf","async","renderSvg","self","opts","superRenderSvg","when","regionCannotBeRenderedText","offsetPx","id","YScaleBars"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8929.70ce258f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8929],{98929:(t,e,n)=>{n.r(e),n.d(e,{default:()=>l});var a=n(99834),s=n(99546),i=n(7706),o=n(35904);const r="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function c(t,e,n,a,s,i,o,r,c){return{qname:t,qstart:e,qend:n,tname:s,tstart:i,tend:o,strand:"-"===a?-1:1,extra:{numMatches:c,blockLen:Math.max(n-e,o-i),mappingQual:0,cg:r}}}class l extends o.default{async setupPre(t){const e=(0,a.openLocation)(this.getConf("chainLocation"),this.pluginManager),n=await e.readFile(t);return function(t){let e="",n=0,a=0,s="",i="",o="",l=0,u=0,d=0,h="";const p=[];let f=0;for(;f<t.length;){const b=t.indexOf("\n",f);if(-1===b)break;const g=t.subarray(f,b);f=b+1;const w=(r?.decode(g)||g.toString()).trim().replaceAll(" ","\t").split("\t");if("chain"===w[0]){if(h&&p.push(c(s,l,u,o,e,n,a,h,d)),e=w[2],n=+w[5],a=+w[6],s=w[7],i=w[8],o=w[9],l=+w[10],u=+w[11],"-"===o){const t=l;l=+i-u,u=+i-t}d=0,h=""}else{const t=+w[0]||0,e=w.length>1?+w[1]:0,n=w.length>2?+w[2]:0;0!==t&&(d+=+t,h+=`${t}M`),0!==n&&(h+=`${n}I`),0!==e&&(h+=`${e}D`)}}return h&&c(s,l,u,o,e,n,a,h,d),p}((0,s.isGzip)(n)?await(0,i.unzip)(n):n)}}}}]);
+//# sourceMappingURL=8929.70ce258f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8929.70ce258f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8929.70ce258f.chunk.js","mappings":"sMACA,MAAMA,EACmB,oBAAhBC,YAA8B,IAAIA,YAAY,aAAUC,EA2BjE,SAASC,EACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAO,CACLR,QACAC,SACAC,OACAE,QACAC,SACAC,OACAG,OAAoB,MAAZN,GAAmB,EAAI,EAC/BO,MAAO,CACLF,aACAG,SAAUC,KAAKC,IAAIX,EAAOD,EAAQK,EAAOD,GACzCS,YAAa,EACbC,GAAIR,GAGV,CC7Ce,MAAMS,UAAqBC,EAAAA,QACxC,cAAMC,CAASC,GACb,MAAMC,GAAMC,EAAAA,EAAAA,cAAaC,KAAKC,QAAQ,iBAAkBD,KAAKE,eACvDC,QAAgBL,EAAIM,SAASP,GAEnC,OD0CG,SAAuBM,GAC5B,IAAIE,EAAS,GACTC,EAAU,EACVC,EAAQ,EACRC,EAAS,GACTC,EAAS,GACTC,EAAW,GACXC,EAAU,EACVC,EAAQ,EACRC,EAAc,EACd5B,EAAQ,GACZ,MAAM6B,EAAU,GAEhB,IAAIC,EAAa,EACjB,KAAOA,EAAaZ,EAAOa,QAAQ,CACjC,MAAMC,EAAId,EAAOe,QAAQ,KAAMH,GAC/B,IAAW,IAAPE,EACF,MAEF,MAAME,EAAIhB,EAAOiB,SAASL,EAAYE,GAEtCF,EAAaE,EAAI,EACjB,MACMI,GAHK/C,GAASgD,OAAOH,IAAMA,EAAEI,YAAYC,OAE/BC,WAAW,IAAK,MACZC,MAAM,MAE1B,GAAiB,UAAbL,EAAM,GAAgB,CAuCxB,GArCIpC,GACF6B,EAAQa,KACNlD,EACE+B,EACAG,EACAC,EACAF,EACAL,EACAC,EACAC,EACAtB,EACA4B,IAkBNR,EAASgB,EAAM,GACff,GAAWe,EAAM,GACjBd,GAASc,EAAM,GACfb,EAASa,EAAM,GACfZ,EAASY,EAAM,GACfX,EAAWW,EAAM,GACjBV,GAAWU,EAAM,IACjBT,GAASS,EAAM,IACE,MAAbX,EAAkB,CACpB,MAAMkB,EAAMjB,EACZA,GAAWF,EAASG,EACpBA,GAASH,EAASmB,CACpB,CAGAf,EAAc,EACd5B,EAAQ,EACV,KAAO,CAQL,MAAM4C,GAA2BR,EAAM,IAAO,EACxCS,EAAiBT,EAAML,OAAS,GAAKK,EAAM,GAAM,EACjDU,EAAgBV,EAAML,OAAS,GAAKK,EAAM,GAAM,EAEtB,IAA5BQ,IACFhB,IAAgBgB,EAChB5C,GAAS,GAAG4C,MAEQ,IAAlBE,IACF9C,GAAS,GAAG8C,MAES,IAAnBD,IACF7C,GAAS,GAAG6C,KAEhB,CACF,CAgBA,OAbI7C,GACFR,EACE+B,EACAG,EACAC,EACAF,EACAL,EACAC,EACAC,EACAtB,EACA4B,GAGGC,CACT,CC3JWkB,EADKC,EAAAA,EAAAA,QAAO9B,SAAgB+B,EAAAA,EAAAA,OAAM/B,GAAUA,EAErD,E","sources":["../../../plugins/comparative-adapters/src/ChainAdapter/util.ts","../../../plugins/comparative-adapters/src/ChainAdapter/ChainAdapter.ts"],"sourcesContent":["import type { Buffer } from 'buffer'\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\n/* adapted from chain2paf by Andrea Guarracino, license reproduced below\n *\n * MIT License\n *\n * Copyright (c) 2021 Andrea Guarracino\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nfunction generate_record(\n  qname: string,\n  qstart: number,\n  qend: number,\n  qstrand: string,\n  tname: string,\n  tstart: number,\n  tend: number,\n  cigar: string,\n  numMatches: number,\n) {\n  return {\n    qname,\n    qstart,\n    qend,\n    tname,\n    tstart,\n    tend,\n    strand: qstrand === '-' ? -1 : 1,\n    extra: {\n      numMatches,\n      blockLen: Math.max(qend - qstart, tend - tstart),\n      mappingQual: 0,\n      cg: cigar,\n    },\n  }\n}\n\nexport function paf_chain2paf(buffer: Buffer) {\n  let t_name = ''\n  let t_start = 0\n  let t_end = 0\n  let q_name = ''\n  let q_size = ''\n  let q_strand = ''\n  let q_start = 0\n  let q_end = 0\n  let num_matches = 0\n  let cigar = ''\n  const records = []\n\n  let blockStart = 0\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const l = (decoder?.decode(b) || b.toString()).trim()\n    blockStart = n + 1\n    const l_tab = l.replaceAll(' ', '\\t') // There are CHAIN files with space-separated fields\n    const l_vec = l_tab.split('\\t')\n\n    if (l_vec[0] === 'chain') {\n      // Emit previous PAF row, if available\n      if (cigar) {\n        records.push(\n          generate_record(\n            q_name,\n            q_start,\n            q_end,\n            q_strand,\n            t_name,\n            t_start,\n            t_end,\n            cigar,\n            num_matches,\n          ),\n        )\n      }\n\n      // Save query/target information\n      // score -- chain score\n      // tName -- chromosome (reference sequence)\n      // tSize -- chromosome size (reference sequence)\n      // tStrand -- strand (reference sequence)\n      // tStart -- alignment start position (reference sequence)\n      // tEnd -- alignment end position (reference sequence)\n      // qName -- chromosome (query sequence)\n      // qSize -- chromosome size (query sequence)\n      // qStrand -- strand (query sequence)\n      // qStart -- alignment start position (query sequence)\n      // qEnd -- alignment end position (query sequence)\n      // id -- chain ID\n      t_name = l_vec[2]!\n      t_start = +l_vec[5]!\n      t_end = +l_vec[6]!\n      q_name = l_vec[7]!\n      q_size = l_vec[8]!\n      q_strand = l_vec[9]!\n      q_start = +l_vec[10]!\n      q_end = +l_vec[11]!\n      if (q_strand === '-') {\n        const tmp = q_start\n        q_start = +q_size - q_end\n        q_end = +q_size - tmp\n      }\n\n      // Initialize PAF fields\n      num_matches = 0\n      cigar = ''\n    } else {\n      // size -- the size of the ungapped alignment\n      //\n      // dt -- the difference between the end of this block and the beginning\n      //    of the next block (reference sequence)\n      //\n      // dq -- the difference between the end of this block and the beginning\n      //    of the next block (query sequence)\n      const size_ungapped_alignment = +l_vec[0]! || 0\n      const diff_in_target = l_vec.length > 1 ? +l_vec[1]! : 0\n      const diff_in_query = l_vec.length > 2 ? +l_vec[2]! : 0\n\n      if (size_ungapped_alignment !== 0) {\n        num_matches += +size_ungapped_alignment\n        cigar += `${size_ungapped_alignment}M`\n      }\n      if (diff_in_query !== 0) {\n        cigar += `${diff_in_query}I`\n      }\n      if (diff_in_target !== 0) {\n        cigar += `${diff_in_target}D`\n      }\n    }\n  }\n\n  // Emit last PAF row, if available\n  if (cigar) {\n    generate_record(\n      q_name,\n      q_start,\n      q_end,\n      q_strand,\n      t_name,\n      t_start,\n      t_end,\n      cigar,\n      num_matches,\n    )\n  }\n  return records\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { isGzip } from '@jbrowse/core/util'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport type { Buffer } from 'buffer'\n\n// locals\nimport PAFAdapter from '../PAFAdapter/PAFAdapter'\nimport { paf_chain2paf } from './util'\n\nexport default class ChainAdapter extends PAFAdapter {\n  async setupPre(opts?: BaseOptions) {\n    const loc = openLocation(this.getConf('chainLocation'), this.pluginManager)\n    const buffer = (await loc.readFile(opts)) as Buffer\n    const buf = isGzip(buffer) ? await unzip(buffer) : buffer\n    return paf_chain2paf(buf)\n  }\n}\n"],"names":["decoder","TextDecoder","undefined","generate_record","qname","qstart","qend","qstrand","tname","tstart","tend","cigar","numMatches","strand","extra","blockLen","Math","max","mappingQual","cg","ChainAdapter","PAFAdapter","setupPre","opts","loc","openLocation","this","getConf","pluginManager","buffer","readFile","t_name","t_start","t_end","q_name","q_size","q_strand","q_start","q_end","num_matches","records","blockStart","length","n","indexOf","b","subarray","l_vec","decode","toString","trim","replaceAll","split","push","tmp","size_ungapped_alignment","diff_in_target","diff_in_query","paf_chain2paf","isGzip","unzip"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8965.51db703f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8965,7706],{28965:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(46377),s=n(99834),a=n(99546),i=n(66885),o=n(78054);class l extends r.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async setupPre(e){const t=this.getConf("assemblyNames"),n=this.pluginManager,r=(0,s.openLocation)(this.getConf("bed1Location"),n),a=(0,s.openLocation)(this.getConf("bed2Location"),n),i=(0,s.openLocation)(this.getConf("mcscanAnchorsLocation"),n),[l,c,h]=await Promise.all([r,a,i].map((t=>(0,o.TA)(t,e)))),d=(0,o.fY)(l),f=(0,o.fY)(c);return{assemblyNames:t,feats:h.split(/\n|\r\n|\r/).filter((e=>!!e&&"###"!==e)).map(((e,t)=>{const[n,r,s]=e.split("\t"),a=d.get(n),i=f.get(r);if(!a||!i)throw new Error(`feature not found, ${n} ${r} ${a} ${i}`);return[a,i,+s,t]}))}}async hasDataForRefName(){return!0}async getRefNames(){return[]}getFeatures(e,t={}){return(0,i.ObservableCreate)((async n=>{const{assemblyNames:r,feats:s}=await this.setup(t),i=r.indexOf(e.assemblyName);if(-1!==i){const t=0===i;s.forEach((s=>{const[o,l,c,h]=s,[d,f]=t?[o,l]:[l,o];d.refName===e.refName&&(0,a.doesIntersect2)(e.start,e.end,d.start,d.end)&&n.next(new a.SimpleFeature({...d,uniqueId:`${i}-${h}`,syntenyId:h,strand:d.strand*f.strand,assemblyName:r[+!t],score:c,mate:{...f,assemblyName:r[+t]}}))}))}n.complete()}))}freeResources(){}}},78054:(e,t,n)=>{n.d(t,{PX:()=>c,TA:()=>i,fY:()=>a,gJ:()=>f,qm:()=>d,xI:()=>h,yU:()=>o});var r=n(7706),s=n(99546);function a(e){return new Map(e.split(/\n|\r\n|\r/).filter((e=>!!e||e.startsWith("#"))).map((e=>{const[t,n,r,s,a,i]=e.split("\t");return[s,{refName:t,start:+n,end:+r,score:+a,name:s,strand:"-"===i?-1:1}]})))}async function i(e,t){const n=await e.readFile(t);return new TextDecoder("utf8",{fatal:!0}).decode((0,s.isGzip)(n)?await(0,r.unzip)(n):n)}function o(e,t){return e.map(((e,n)=>[e,t[n]]))}const l="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function c(e,t){let n=0;const r=[];for(;n<e.length;){const s=e.indexOf("\n",n);if(-1===s)break;const a=e.subarray(n,s),i=(l?.decode(a)||a.toString()).trim();i&&r.push(t(i)),n=s+1}return r}function h(e){const[t,,n,r,s,a,,i,o,l,c,h,...d]=e.split("\t");return{tname:a,tstart:+i,tend:+o,qname:t,qstart:+n,qend:+r,strand:"-"===s?-1:1,extra:{numMatches:+l,blockLen:+c,mappingQual:+h,...Object.fromEntries(d.map((e=>{const t=e.indexOf(":");return[e.slice(0,t),e.slice(t+3)]})))}}}function d(e){const t=[];for(let n=e.length-2;n>=0;n-=2){t.push(e[n]);const r=e[n+1];"D"===r?t.push("I"):"I"===r?t.push("D"):t.push(r)}return t}function f(e){return e.replaceAll("D","K").replaceAll("I","D").replaceAll("K","I")}},7706:(e,t,n)=>{n.d(t,{sG:()=>d,unzip:()=>i,i2:()=>o});var r=n(35451),s=n(45834),a=n(57864);async function i(e){try{let t,n=0,s=0;const i=[];let o,l=0;do{const r=e.subarray(n);if(o=new a.Inflate,({strm:t}=o),o.push(r,a.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);n+=t.next_in,i[s]=o.result,l+=i[s].length,s+=1}while(t.avail_in);const c=new Uint8Array(l);for(let e=0,t=0;e<i.length;e++)c.set(i[e],t),t+=i[e].length;return r.hp.from(c)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let n;const{minv:s,maxv:i}=t;let o=s.blockPosition,l=s.dataPosition;const c=[],h=[],d=[];let f=0,u=0;do{const t=e.subarray(o-s.blockPosition),r=new a.Inflate;if(({strm:n}=r),r.push(t,a.Z_SYNC_FLUSH),r.err)throw new Error(r.msg);const p=r.result;c.push(p);let g=p.length;h.push(o),d.push(l),1===c.length&&s.dataPosition&&(c[0]=c[0].subarray(s.dataPosition),g=c[0].length);const w=o;if(o+=n.next_in,l+=g,w>=i.blockPosition){c[u]=c[u].subarray(0,i.blockPosition===s.blockPosition?i.dataPosition-s.dataPosition+1:i.dataPosition+1),h.push(o),d.push(l),f+=c[u].length;break}f+=c[u].length,u++}while(n.avail_in);const p=new Uint8Array(f);for(let e=0,t=0;e<c.length;e++)p.set(c[e],t),t+=c[e].length;return{buffer:r.hp.from(p),cpositions:h,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var l=n(59086),c=n.n(l);class h{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new s.EY(t)}}_readLongWithOverflow(e,t=0,n=!0){const r=c().fromBytesLE(e.slice(t,t+8),n);if(r.greaterThan(Number.MAX_SAFE_INTEGER)||r.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return r.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=r.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const n=new Array(t+1);n[0]=[0,0];const s=16*t;if(s>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=r.hp.allocUnsafe(s),await this.filehandle.read(e,0,s,8);for(let r=0;r<t;r+=1){const t=this._readLongWithOverflow(e,16*r),s=this._readLongWithOverflow(e,16*r+8);n[r+1]=[t,s]}return n}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const n=t+e;if(0===e)return[];const r=await this._getIndex(),s=[],a=(e,n)=>{const r=e[1],s=n?n[1]:1/0;return r<=t&&s>t?0:r<t?-1:1};let i=0,o=r.length-1,l=Math.floor(r.length/2),c=a(r[l],r[l+1]);for(;0!==c;)c>0?o=l-1:c<0&&(i=l+1),l=Math.ceil((o-i)/2)+i,c=a(r[l],r[l+1]);s.push(r[l]);let h=l+1;for(;h<r.length&&(s.push(r[h]),!(r[h][1]>=n));h+=1);return s[s.length-1][1]<n&&s.push([]),s}}class d{constructor({filehandle:e,path:t,gziFilehandle:n,gziPath:r}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new s.EY(t)}if(!n&&!r&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new h({filehandle:n,path:n||r||!t?`${t}.gzi`:r})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),n=r.hp.allocUnsafe(4),{bytesRead:s}=await this.filehandle.read(n,0,4,t-28-4);if(4!==s)throw new Error("read error");return e+n.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[n]){let r=n;r||(r=(await this.filehandle.stat()).size);const s=r-t;return await this.filehandle.read(e,0,s,t),await i(e.slice(0,s))}async read(e,t,n,s){const a=await this.gzi.getRelevantBlocksForRead(n,s),i=r.hp.allocUnsafe(65536);let o=t,l=0;for(let t=0;t<a.length-1;t+=1){const r=await this._readAndUncompressBlock(i,a[t],a[t+1]),[,c]=a[t],h=c>=s?0:s-c,d=Math.min(s+n,c+r.length)-c;h>=0&&h<r.length&&(r.copy(e,o,h,d),o+=d-h,l+=d-h)}return{bytesRead:l,buffer:e}}}}}]);
+//# sourceMappingURL=8965.51db703f.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8965.51db703f.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8965.51db703f.chunk.js","mappings":"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","sources":["../../../plugins/comparative-adapters/src/MCScanAnchorsAdapter/MCScanAnchorsAdapter.ts","../../../plugins/comparative-adapters/src/util.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport {\n  doesIntersect2,\n  SimpleFeature,\n  Feature,\n  Region,\n} from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { readFile, parseBed } from '../util'\n\ninterface BareFeature {\n  strand: number\n  refName: string\n  start: number\n  end: number\n  score: number\n  name: string\n}\n\ntype Row = [BareFeature, BareFeature, number, number]\n\nexport default class MCScanAnchorsAdapter extends BaseFeatureDataAdapter {\n  private setupP?: Promise<{\n    assemblyNames: string[]\n    feats: Row[]\n  }>\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  async setup(opts: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n  async setupPre(opts: BaseOptions) {\n    const assemblyNames = this.getConf('assemblyNames') as string[]\n\n    const pm = this.pluginManager\n    const bed1 = openLocation(this.getConf('bed1Location'), pm)\n    const bed2 = openLocation(this.getConf('bed2Location'), pm)\n    const mcscan = openLocation(this.getConf('mcscanAnchorsLocation'), pm)\n    const [bed1text, bed2text, mcscantext] = await Promise.all(\n      [bed1, bed2, mcscan].map(r => readFile(r, opts)),\n    )\n\n    const bed1Map = parseBed(bed1text!)\n    const bed2Map = parseBed(bed2text!)\n    const feats = mcscantext!\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f && f !== '###')\n      .map((line, index) => {\n        const [name1, name2, score] = line.split('\\t')\n        const r1 = bed1Map.get(name1)\n        const r2 = bed2Map.get(name2)\n        if (!r1 || !r2) {\n          throw new Error(`feature not found, ${name1} ${name2} ${r1} ${r2}`)\n        }\n        return [r1, r2, +score!, index] as Row\n      })\n\n    return {\n      assemblyNames,\n      feats,\n    }\n  }\n\n  async hasDataForRefName() {\n    // determining this properly is basically a call to getFeatures\n    // so is not really that important, and has to be true or else\n    // getFeatures is never called (BaseFeatureDataAdapter filters it out)\n    return true\n  }\n\n  async getRefNames() {\n    // we cannot determine this accurately\n    return []\n  }\n\n  getFeatures(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { assemblyNames, feats } = await this.setup(opts)\n\n      // The index of the assembly name in the region list corresponds to\n      // the adapter in the subadapters list\n      const index = assemblyNames.indexOf(region.assemblyName)\n      if (index !== -1) {\n        const flip = index === 0\n        feats.forEach(f => {\n          const [r1, r2, score, rowNum] = f\n          const [f1, f2] = !flip ? [r2, r1] : [r1, r2]\n          if (\n            f1.refName === region.refName &&\n            doesIntersect2(region.start, region.end, f1.start, f1.end)\n          ) {\n            observer.next(\n              new SimpleFeature({\n                ...f1,\n                uniqueId: `${index}-${rowNum}`,\n                syntenyId: rowNum,\n\n                // note: strand would be -1 if the two features are on opposite\n                // strands, indicating inverted alignment\n                strand: f1.strand * f2.strand,\n                assemblyName: assemblyNames[+!flip],\n                score,\n                mate: {\n                  ...f2,\n                  assemblyName: assemblyNames[+flip],\n                },\n              }),\n            )\n          }\n        })\n      }\n\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  freeResources(/* { region } */): void {}\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport { PAFRecord } from './PAFAdapter/util'\n\nexport function parseBed(text: string) {\n  return new Map(\n    text\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f || f.startsWith('#'))\n      .map(line => {\n        const [refName, start, end, name, score, strand] = line.split('\\t')\n        return [\n          name,\n          {\n            refName,\n            start: +start!,\n            end: +end!,\n            score: +score!,\n            name,\n            strand: strand === '-' ? -1 : 1,\n          },\n        ]\n      }),\n  )\n}\n\nexport async function readFile(file: GenericFilehandle, opts?: BaseOptions) {\n  const buffer = (await file.readFile(opts)) as Buffer\n  return new TextDecoder('utf8', { fatal: true }).decode(\n    isGzip(buffer) ? await unzip(buffer) : buffer,\n  )\n}\n\nexport function zip(a: number[], b: number[]) {\n  return a.map((e, i) => [e, b[i]] as [number, number])\n}\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\nexport function parseLineByLine(\n  buffer: Buffer,\n  cb: (line: string) => PAFRecord,\n) {\n  let blockStart = 0\n  const entries = []\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const line = (decoder?.decode(b) || b.toString()).trim()\n    if (line) {\n      entries.push(cb(line))\n    }\n\n    blockStart = n + 1\n  }\n  return entries\n}\n\nexport function parsePAFLine(line: string) {\n  const [\n    qname,\n    ,\n    qstart,\n    qend,\n    strand,\n    tname,\n    ,\n    tstart,\n    tend,\n    numMatches,\n    blockLen,\n    mappingQual,\n    ...fields\n  ] = line.split('\\t')\n\n  const rest = Object.fromEntries(\n    fields.map(field => {\n      const r = field.indexOf(':')\n      const fieldName = field.slice(0, r)\n      const fieldValue = field.slice(r + 3)\n      return [fieldName, fieldValue]\n    }),\n  )\n\n  return {\n    tname,\n    tstart: +tstart!,\n    tend: +tend!,\n    qname,\n    qstart: +qstart!,\n    qend: +qend!,\n    strand: strand === '-' ? -1 : 1,\n    extra: {\n      numMatches: +numMatches!,\n      blockLen: +blockLen!,\n      mappingQual: +mappingQual!,\n      ...rest,\n    },\n  } as PAFRecord\n}\n\nexport function flipCigar(cigar: string[]) {\n  const arr = []\n  for (let i = cigar.length - 2; i >= 0; i -= 2) {\n    arr.push(cigar[i])\n    const op = cigar[i + 1]\n    if (op === 'D') {\n      arr.push('I')\n    } else if (op === 'I') {\n      arr.push('D')\n    } else {\n      arr.push(op)\n    }\n  }\n  return arr\n}\n\nexport function swapIndelCigar(cigar: string) {\n  return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I')\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n"],"names":["MCScanAnchorsAdapter","BaseFeatureDataAdapter","setup","opts","this","setupP","setupPre","catch","e","undefined","assemblyNames","getConf","pm","pluginManager","bed1","openLocation","bed2","mcscan","bed1text","bed2text","mcscantext","Promise","all","map","r","readFile","bed1Map","parseBed","bed2Map","feats","split","filter","f","line","index","name1","name2","score","r1","get","r2","Error","hasDataForRefName","getRefNames","getFeatures","region","ObservableCreate","async","indexOf","assemblyName","flip","forEach","rowNum","f1","f2","refName","doesIntersect2","start","end","observer","next","SimpleFeature","uniqueId","syntenyId","strand","mate","complete","freeResources","text","Map","startsWith","name","file","buffer","TextDecoder","fatal","decode","isGzip","unzip","zip","a","b","i","decoder","parseLineByLine","cb","blockStart","entries","length","n","subarray","toString","trim","push","parsePAFLine","qname","qstart","qend","tname","tstart","tend","numMatches","blockLen","mappingQual","fields","extra","Object","fromEntries","field","slice","flipCigar","cigar","arr","op","swapIndelCigar","replaceAll","inputData","strm","pos","chunks","inflator","totalSize","remainingInput","Inflate","Z_SYNC_FLUSH","err","msg","next_in","result","avail_in","Uint8Array","offset","set","from","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","len","origCpos","GziIndex","constructor","filehandle","path","TypeError","_readLongWithOverflow","buf","unsigned","long","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","_readIndex","allocUnsafe","read","numEntries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","entry","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","Math","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","assign","size","getUncompressedFileSize","blocks","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","min","copy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8984.1a816123.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[8984],{28055:(e,t,n)=>{n.d(t,{A:()=>m});var r=n(7552),a=n(75785),l=n(503),i=n.n(l),s=n(87731),c=n(49823);const o=(0,a.n9)()((e=>({fieldValue:{wordBreak:"break-word",maxHeight:300,fontSize:12,padding:e.spacing(.5),overflow:"auto"}})));function m({value:e}){const{classes:t}=o(),n=/^https?:\/\//.exec(`${e}`);return r.createElement("div",{className:t.fieldValue},r.isValidElement(e)?e:n?r.createElement(s.A,{href:`${e}`},`${e}`):r.createElement(c.SanitizedHTML,{html:i()(e)?JSON.stringify(e):String(e)}))}},36441:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(7552),a=n(89003);const l=(0,n(75785).n9)()((e=>({fieldDescription:{"&:hover":{background:"dark"===e.palette.mode?"#e65100":"yellow"}},fieldName:{wordBreak:"break-all",minWidth:90,borderBottom:"1px solid #0003",fontSize:12,background:e.palette.action.disabledBackground,marginRight:e.spacing(1),padding:e.spacing(.5)}})));function i({description:e,name:t,width:n,prefix:i=[]}){const{classes:s,cx:c}=l(),o=[...i,t].join(".");return e?r.createElement(a.A,{title:e,placement:"left"},r.createElement("div",{className:c(s.fieldDescription,s.fieldName)},o)):r.createElement("div",{className:s.fieldName,style:{width:n}},o)}},32106:(e,t,n)=>{n.d(t,{A:()=>c});var r=n(7552),a=n(75785),l=n(36441),i=n(28055);const s=(0,a.n9)()({field:{display:"flex",flexWrap:"wrap"}});function c({name:e,value:t,description:n,prefix:a,width:c}){const{classes:o}=s();return null!=t?r.createElement("div",{className:o.field},r.createElement(l.A,{prefix:a,description:n,name:e,width:c}),r.createElement(i.A,{value:t})):null}},68984:(e,t,n)=>{n.r(t),n.d(t,{Attributes:()=>U,BaseAttributes:()=>Y,BaseCard:()=>V,BaseCoreDetails:()=>Q,FeatureDetails:()=>K,default:()=>Z});var r=n(7552),a=n(82725),l=n(63011),i=n(41578),s=n(36715),c=n(63165),o=n(24387),m=n(75785),u=n(68446),d=n(7720),f=n(99546),p=n(49823),E=n(48171),g=n(5401),h=n(61723),b=n(25914);const v=(0,r.lazy)((()=>n.e(7428).then(n.bind(n,27428)))),x=(0,r.lazy)((()=>n.e(8624).then(n.bind(n,38624)))),y=(0,m.n9)()((e=>({formControl:{margin:0},container:{marginTop:e.spacing(4),marginBottom:e.spacing(4)}}))),A=(0,u.observer)((function({model:e,feature:t}){const{classes:n}=y(),[a,l]=(0,r.useState)(!1);return r.createElement("div",{className:n.container},r.createElement(E.A,{className:n.formControl},r.createElement(g.A,{variant:"contained",onClick:()=>{l(!a)}},a?"Hide feature sequence":"Show feature sequence")),r.createElement(h.A,{onClick:()=>{(0,f.getSession)(e).queueDialog((e=>[x,{handleClose:e}]))}},r.createElement(b.A,null)),a?r.createElement(r.Suspense,{fallback:r.createElement(p.LoadingEllipses,null)},r.createElement(v,{key:t.uniqueId,model:e,feature:t})):null)}));var w=n(32106),k=n(503),S=n.n(k),N=n(373);function O(e,t,n){return[(0,N.SX)(`${e||t||""}`),`${n}`].filter((e=>!!e)).join(" - ")}var $=n(85676),j=n(76157),_=n(33371),C=n(32808),T=n(36441);const D=(0,m.n9)()((e=>({margin:{marginBottom:e.spacing(4)},cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}})));function B({value:e,prefix:t,name:n}){const{classes:a}=D(),[l,i]=(0,r.useState)(!1),c=Object.keys(e[0]).sort(),o=new Set(c),m=Object.entries(e).map((([e,t])=>{const{id:n,...r}=t;return{id:e,identifier:n,...r}}));for(const t of e)for(const e of Object.keys(t))o.add(e);let u;o.has("id")?(o.delete("id"),u=["identifier",...o]):u=[...o];const d=u.map((e=>(0,f.measureGridWidth)(m.map((t=>t[e])))));return o.size<c.length+5?r.createElement("div",{className:a.margin},r.createElement(T.A,{prefix:t,name:n}),r.createElement(_.A,{control:r.createElement(C.A,{checked:l,onChange:e=>{i(e.target.checked)}}),label:r.createElement(s.A,{variant:"body2"},"Show options")}),r.createElement($.z,{autoHeight:!0,disableRowSelectionOnClick:!0,rows:m,rowHeight:20,columnHeaderHeight:35,hideFooter:m.length<25,slots:{toolbar:l?j.O:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}},columns:u.map(((e,t)=>({field:e,renderCell:e=>{const t=e.value;return r.createElement("div",{className:a.cell},r.createElement(p.SanitizedHTML,{html:(0,f.getStr)(t||"")}))},width:d[t]})))})):null}var F=n(28055);const L=(0,m.n9)()((e=>({field:{display:"flex",flexWrap:"wrap"},fieldSubvalue:{wordBreak:"break-word",maxHeight:300,padding:e.spacing(.5),border:`1px solid ${e.palette.action.selected}`,boxSizing:"border-box",overflow:"auto"}})));function H({name:e,value:t,description:n,prefix:a=[]}){const{classes:l}=L();return 1===t.length?S()(t[0])?r.createElement(U,{attributes:t[0],prefix:[...a,e]}):r.createElement("div",{className:l.field},r.createElement(T.A,{prefix:a,description:n,name:e}),r.createElement(F.A,{value:t[0]})):t.every((e=>S()(e)))?r.createElement(r.Fragment,null,t.map(((t,n)=>r.createElement(U,{key:`${JSON.stringify(t)}-${n}`,attributes:t,prefix:[...a,`${e}-${n}`]})))):r.createElement("div",{className:l.field},r.createElement(T.A,{prefix:a,description:n,name:e}),t.map(((e,t)=>r.createElement("div",{key:`${JSON.stringify(e)}-${t}`,className:l.fieldSubvalue},r.createElement(F.A,{value:e})))))}const q=(0,m.n9)()({field:{display:"flex",flexWrap:"wrap"}});function z({value:e,prefix:t,name:n}){const{classes:a}=q(),{uri:l,baseUri:i=""}=e;let s;try{s=new URL(l,i).href}catch(e){s=l}return r.createElement("div",{className:a.field},r.createElement(T.A,{prefix:t,name:n}),r.createElement(F.A,{value:s}))}function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},I.apply(null,arguments)}const P=170,M=["__jbrowsefmt","length","position","subfeatures","uniqueId","exonFrames","parentId","thickStart","thickEnd"];function U(e){const{attributes:t,omit:n=[],omitSingleLevel:a=[],descriptions:l,formatter:i=e=>e,hideUris:s,prefix:c=[]}=e,o=new Set([...n,...M,...a]),{__jbrowsefmt:m,...u}=t,d={...u,...m},p=function(e,t){return Math.ceil((0,f.max)(e.map((e=>(0,f.measureText)([...t,e[0]].join("."),12)))))+10}(Object.entries(d).filter((([e,t])=>void 0!==t&&!o.has(e))),c);return r.createElement(r.Fragment,null,Object.entries(d).filter((([e,t])=>void 0!==t&&!o.has(e))).map((([t,n])=>{const a=function(e,t={}){let n=t;return e.forEach((e=>{S()(n)&&(n=n[e])})),"string"==typeof n?n:S()(n)&&"string"==typeof n.Description?n.Description:void 0}([...c,t],l);if(Array.isArray(n))return n.length>1&&n.every((e=>S()(e)))?r.createElement(B,{key:t,name:t,prefix:c,value:n}):r.createElement(H,{key:t,name:t,value:n,description:a,prefix:c});if(S()(n)){const{omitSingleLevel:a,...i}=e;return(0,f.isUriLocation)(n)?s?null:r.createElement(z,{key:t,name:t,prefix:c,value:n}):r.createElement(U,I({key:t},i,{attributes:n,descriptions:l,prefix:[...c,t]}))}return r.createElement(w.A,{key:t,name:t,value:i(n,t),description:a,prefix:c,width:Math.min(p,P)})})))}function R(){return R=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},R.apply(null,arguments)}const J=["name","start","end","strand","refName","description","type"],W=(0,m.n9)()((e=>({expansionPanelDetails:{display:"block",padding:e.spacing(1)},icon:{color:e.palette.tertiary.contrastText||"#fff"}})));function V({children:e,title:t,defaultExpanded:n=!0}){const{classes:a}=W();return r.createElement(l.A,{defaultExpanded:n},r.createElement(i.A,{expandIcon:r.createElement(d.A,{className:a.icon})},r.createElement(s.A,{variant:"button"},t)),r.createElement(c.A,{className:a.expansionPanelDetails},e))}function X(e){const{feature:t}=e,n=t.strand,a={"-1":"-",0:"",1:"+"},l=a[n]?`(${a[n]})`:"",i=(0,f.assembleLocString)(t);return r.createElement(r.Fragment,null,`${i} ${l}`)}function G(e){const{feature:t}=e,n=t,a={...n,...n.__jbrowsefmt},{start:l,end:i}=a,s={...a,length:(0,f.toLocale)(i-l)};return r.createElement(r.Fragment,null,r.createElement(w.A,{name:"Position",value:r.createElement(X,R({},e,{feature:a}))}),Object.entries({description:"Description",name:"Name",length:"Length",type:"Type"}).map((([e,t])=>[t,s[e]])).filter((([,e])=>null!=e)).map((([e,t])=>r.createElement(w.A,{key:e,name:e,value:t}))))}const Q=e=>{const{title:t="Primary data"}=e;return r.createElement(V,R({},e,{title:t}),r.createElement(G,e))},Y=e=>{const{feature:t}=e;return r.createElement(V,R({},e,{title:"Attributes"}),r.createElement(U,R({},e,{attributes:t})))};function K(e){const{omit:t=[],model:n,feature:l,depth:i=0}=e,{maxDepth:c}=n,{mate:m,name:u="",id:d="",type:E="",subfeatures:g,uniqueId:h}=l,b=(0,f.getEnv)(n).pluginManager,v=(0,f.getSession)(n),x=b.evaluateExtensionPoint("Core-extraFeaturePanel",null,{session:v,feature:l,model:n}),y=m;return r.createElement(V,{title:O(u,d,E)},r.createElement(s.A,null,"Core details"),r.createElement(G,e),y?r.createElement(r.Fragment,null,r.createElement(o.A,null),r.createElement(s.A,null,"Mate details"),r.createElement(G,R({},e,{feature:{...y,start:y.start,end:y.end,refName:y.refName,uniqueId:`${h}-mate`}}))):null,r.createElement(o.A,null),r.createElement(s.A,null,"Attributes"),r.createElement(U,R({attributes:l},e,{omit:t,omitSingleLevel:J})),r.createElement(a.tH,{FallbackComponent:e=>r.createElement(p.ErrorMessage,{error:e.error})},r.createElement(A,e)),x?r.createElement(r.Fragment,null,r.createElement(o.A,null),r.createElement(V,{title:x.name},r.createElement(x.Component,e))):null,i<c&&g?.length?r.createElement(V,{title:"Subfeatures",defaultExpanded:i<1},g.map(((e,t)=>r.createElement(K,{key:JSON.stringify(e),feature:{...e,uniqueId:`${h}_${t}`},model:n,depth:i+1})))):null)}const Z=(0,u.observer)((function({model:e}){const{error:t,featureData:n}=e;if(t)return r.createElement(p.ErrorMessage,{error:t});if(!n)return null;const a=JSON.parse(JSON.stringify(n,((e,t)=>void 0===t?null:t)));return l=a,0===Object.keys(l).length?null:r.createElement(K,{model:e,feature:a});var l}))},373:(e,t,n)=>{function r(e,t){return e.map((e=>t.slice(e.start,e.end))).join("")}function a(e){return`${e.start}-${e.end}`}function l(e){return e.filter(((e,t,n)=>!t||a(e)!==a(n[t-1])))}function i(e,t){return e.map((e=>({...e,start:t-e.end,end:t-e.start}))).sort(((e,t)=>e.start-t.start))}function s(e,t){if(!e.length)return[];const n=e.at(0),r=e.at(-1),a=t.findIndex((e=>e.end>=n.start&&e.start<=n.start)),l=t.findIndex((e=>e.end>=r.end&&e.start<=r.end)),i=t[l],s=t[a];return[...[...t.slice(0,a),{start:s.start,end:n.start}].map((e=>({...e,type:"five_prime_UTR"}))),...[{start:r.end,end:i.end},...t.slice(l+1)].map((e=>({...e,type:"three_prime_UTR"})))]}function c(e,t){if(!e.length)return[];const n=e.at(0),r=e.at(-1);return[...[{start:t.start,end:n.start}].map((e=>({...e,type:"five_prime_UTR"}))),...[{start:r.end,end:t.end}].map((e=>({...e,type:"three_prime_UTR"})))]}function o(e){return e.length>20?`${e.slice(0,20)}...`:e}n.d(t,{Qq:()=>l,SX:()=>o,V4:()=>c,YC:()=>i,h8:()=>s,o9:()=>r})}}]);
+//# sourceMappingURL=8984.1a816123.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8984.1a816123.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8984.1a816123.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/BasicValue.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/FieldName.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/SimpleField.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/util.ts","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/UriField.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/Attributes.tsx","../../../packages/core/BaseFeatureWidget/BaseFeatureDetail/index.tsx","../../../packages/core/BaseFeatureWidget/util.tsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport isObject from 'is-object'\nimport { Link } from '@mui/material'\n\n// locals\nimport { SanitizedHTML } from '../../ui'\n\nconst useStyles = makeStyles()(theme => ({\n  fieldValue: {\n    wordBreak: 'break-word',\n    maxHeight: 300,\n    fontSize: 12,\n    padding: theme.spacing(0.5),\n    overflow: 'auto',\n  },\n}))\n\nexport default function BasicValue({ value }: { value: unknown }) {\n  const { classes } = useStyles()\n  const isLink = /^https?:\\/\\//.exec(`${value}`)\n  return (\n    <div className={classes.fieldValue}>\n      {React.isValidElement(value) ? (\n        value\n      ) : isLink ? (\n        <Link href={`${value}`}>{`${value}`}</Link>\n      ) : (\n        <SanitizedHTML\n          html={isObject(value) ? JSON.stringify(value) : String(value)}\n        />\n      )}\n    </div>\n  )\n}\n","import React from 'react'\nimport { Tooltip } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()(theme => ({\n  fieldDescription: {\n    '&:hover': {\n      background: theme.palette.mode === 'dark' ? '#e65100' : 'yellow',\n    },\n  },\n  fieldName: {\n    wordBreak: 'break-all',\n    minWidth: 90,\n    borderBottom: '1px solid #0003',\n    fontSize: 12,\n    background: theme.palette.action.disabledBackground,\n    marginRight: theme.spacing(1),\n    padding: theme.spacing(0.5),\n  },\n}))\n\nexport default function FieldName({\n  description,\n  name,\n  width,\n  prefix = [],\n}: {\n  description?: React.ReactNode\n  name: string\n  prefix?: string[]\n  width?: number\n}) {\n  const { classes, cx } = useStyles()\n  const val = [...prefix, name].join('.')\n  return description ? (\n    <Tooltip title={description} placement=\"left\">\n      <div className={cx(classes.fieldDescription, classes.fieldName)}>\n        {val}\n      </div>\n    </Tooltip>\n  ) : (\n    <div className={classes.fieldName} style={{ width: width }}>\n      {val}\n    </div>\n  )\n}\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport FieldName from './FieldName'\nimport BasicValue from './BasicValue'\n\nconst useStyles = makeStyles()({\n  field: {\n    display: 'flex',\n    flexWrap: 'wrap',\n  },\n})\n\nexport default function SimpleField({\n  name,\n  value,\n  description,\n  prefix,\n  width,\n}: {\n  description?: React.ReactNode\n  name: string\n  value: unknown\n  prefix?: string[]\n  width?: number\n}) {\n  const { classes } = useStyles()\n  return value !== null && value !== undefined ? (\n    <div className={classes.field}>\n      <FieldName\n        prefix={prefix}\n        description={description}\n        name={name}\n        width={width}\n      />\n      <BasicValue value={value} />\n    </div>\n  ) : null\n}\n","import React, { lazy, useState, Suspense } from 'react'\nimport { Button, FormControl, IconButton } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport { LoadingEllipses } from '../../ui'\nimport { BaseFeatureWidgetModel } from '../stateModelFactory'\nimport { SimpleFeatureSerialized, getSession } from '../../util'\n\n// icons\nimport Help from '@mui/icons-material/Help'\n\n// lazies\nconst SequenceFeatureDetails = lazy(() => import('./SequenceFeatureDetails'))\nconst HelpDialog = lazy(() => import('./dialogs/HelpDialog'))\n\nconst useStyles = makeStyles()(theme => ({\n  formControl: {\n    margin: 0,\n  },\n\n  container: {\n    marginTop: theme.spacing(4),\n    marginBottom: theme.spacing(4),\n  },\n}))\n\n// display the stitched-together sequence of a gene's CDS, cDNA, or protein\n// sequence. this is a best effort and weird genomic phenomena could lead these\n// to not be 100% accurate\nconst SequenceFeaturePanel = observer(function ({\n  model,\n  feature,\n}: {\n  model: BaseFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { classes } = useStyles()\n  const [shown, setShown] = useState(false)\n\n  return (\n    <div className={classes.container}>\n      <FormControl className={classes.formControl}>\n        <Button\n          variant=\"contained\"\n          onClick={() => {\n            setShown(!shown)\n          }}\n        >\n          {shown ? 'Hide feature sequence' : 'Show feature sequence'}\n        </Button>\n      </FormControl>\n\n      <IconButton\n        onClick={() => {\n          getSession(model).queueDialog(handleClose => [\n            HelpDialog,\n            { handleClose },\n          ])\n        }}\n      >\n        <Help />\n      </IconButton>\n      {shown ? (\n        <Suspense fallback={<LoadingEllipses />}>\n          <SequenceFeatureDetails\n            key={feature.uniqueId}\n            model={model}\n            feature={feature}\n          />\n        </Suspense>\n      ) : null}\n    </div>\n  )\n})\n\nexport default SequenceFeaturePanel\n","import isObject from 'is-object'\nimport { max, measureText } from '../../util'\nimport { ellipses } from '../util'\n\nexport function isEmpty(obj: Record<string, unknown>) {\n  return Object.keys(obj).length === 0\n}\n\nexport function generateTitle(name: unknown, id: unknown, type: unknown) {\n  return [ellipses(`${name || id || ''}`), `${type}`]\n    .filter(f => !!f)\n    .join(' - ')\n}\n\nexport function generateMaxWidth(array: unknown[][], prefix: string[]) {\n  return (\n    Math.ceil(\n      max(array.map(key => measureText([...prefix, key[0]].join('.'), 12))),\n    ) + 10\n  )\n}\n\n// pick using a path from an object, similar to _.get from lodash with special\n// logic for Descriptions from e.g. VCF headers\n//\n// @param arr  example ['a','b'], obj = {a:{b:'hello}}\n// @returns hello (with special addition to grab description also)\nexport function accessNested(arr: string[], obj: Record<string, unknown> = {}) {\n  let obj2: unknown = obj\n  arr.forEach(elt => {\n    if (isObject(obj2)) {\n      obj2 = obj2[elt]\n    }\n  })\n  return typeof obj2 === 'string'\n    ? obj2\n    : isObject(obj2) && typeof obj2.Description === 'string'\n      ? obj2.Description\n      : undefined\n}\n","import React, { useState } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { DataGrid, GridColDef, GridToolbar } from '@mui/x-data-grid'\nimport { Checkbox, FormControlLabel, Typography } from '@mui/material'\n\n// locals\nimport { measureGridWidth, getStr } from '../../util'\nimport FieldName from './FieldName'\nimport { SanitizedHTML } from '../../ui'\n\nconst useStyles = makeStyles()(theme => ({\n  margin: {\n    marginBottom: theme.spacing(4),\n  },\n\n  cell: {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n  },\n}))\n\ninterface Entry {\n  id: string\n  [key: string]: string\n}\n\nexport default function DataGridDetails({\n  value,\n  prefix,\n  name,\n}: {\n  name: string\n  prefix?: string[]\n  value: Record<string, unknown>[]\n}) {\n  const { classes } = useStyles()\n  const [checked, setChecked] = useState(false)\n  const keys = Object.keys(value[0]!).sort()\n  const unionKeys = new Set(keys)\n\n  // avoids key 'id' from being used in row data\n  const rows = Object.entries(value).map(([k, val]) => {\n    const { id, ...rest } = val\n    return {\n      id: k, // used by material UI\n      identifier: id, // renamed from id to identifier\n      ...rest,\n    } as Entry\n  })\n\n  for (const val of value) {\n    for (const k of Object.keys(val)) {\n      unionKeys.add(k)\n    }\n  }\n  // avoids key 'id' from being used in column names, and tries\n  // to make it at the start of the colNames array\n  let colNames: string[]\n  if (unionKeys.has('id')) {\n    unionKeys.delete('id')\n    colNames = ['identifier', ...unionKeys]\n  } else {\n    colNames = [...unionKeys]\n  }\n  const widths = colNames.map(e => measureGridWidth(rows.map(r => r[e])))\n  if (unionKeys.size < keys.length + 5) {\n    return (\n      <div className={classes.margin}>\n        <FieldName prefix={prefix} name={name} />\n        <FormControlLabel\n          control={\n            <Checkbox\n              checked={checked}\n              onChange={event => {\n                setChecked(event.target.checked)\n              }}\n            />\n          }\n          label={<Typography variant=\"body2\">Show options</Typography>}\n        />\n        <DataGrid\n          autoHeight\n          disableRowSelectionOnClick\n          rows={rows}\n          rowHeight={20}\n          columnHeaderHeight={35}\n          hideFooter={rows.length < 25}\n          slots={{\n            toolbar: checked ? GridToolbar : null,\n          }}\n          slotProps={{\n            toolbar: {\n              printOptions: {\n                disableToolbarButton: true,\n              },\n            },\n          }}\n          columns={colNames.map(\n            (val, index) =>\n              ({\n                field: val,\n                renderCell: params => {\n                  const value = params.value as string\n                  return (\n                    <div className={classes.cell}>\n                      <SanitizedHTML html={getStr(value || '')} />\n                    </div>\n                  )\n                },\n                width: widths[index],\n              }) satisfies GridColDef<(typeof rows)[0]>,\n          )}\n        />\n      </div>\n    )\n  }\n  return null\n}\n","import React from 'react'\nimport isObject from 'is-object'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport Attributes from './Attributes'\nimport FieldName from './FieldName'\nimport BasicValue from './BasicValue'\n\nconst useStyles = makeStyles()(theme => ({\n  field: {\n    display: 'flex',\n    flexWrap: 'wrap',\n  },\n\n  fieldSubvalue: {\n    wordBreak: 'break-word',\n    maxHeight: 300,\n    padding: theme.spacing(0.5),\n    border: `1px solid ${theme.palette.action.selected}`,\n    boxSizing: 'border-box',\n    overflow: 'auto',\n  },\n}))\n\nexport default function ArrayValue({\n  name,\n  value,\n  description,\n  prefix = [],\n}: {\n  description?: React.ReactNode\n  name: string\n  value: unknown[]\n  prefix?: string[]\n}) {\n  const { classes } = useStyles()\n  if (value.length === 1) {\n    return isObject(value[0]) ? (\n      <Attributes attributes={value[0]} prefix={[...prefix, name]} />\n    ) : (\n      <div className={classes.field}>\n        <FieldName prefix={prefix} description={description} name={name} />\n        <BasicValue value={value[0]} />\n      </div>\n    )\n  } else if (value.every(val => isObject(val))) {\n    return (\n      <>\n        {value.map((val, i) => (\n          <Attributes\n            key={`${JSON.stringify(val)}-${i}`}\n            attributes={val as Record<string, unknown>}\n            prefix={[...prefix, `${name}-${i}`]}\n          />\n        ))}\n      </>\n    )\n  } else {\n    return (\n      <div className={classes.field}>\n        <FieldName prefix={prefix} description={description} name={name} />\n        {value.map((val, i) => (\n          <div\n            key={`${JSON.stringify(val)}-${i}`}\n            className={classes.fieldSubvalue}\n          >\n            <BasicValue value={val} />\n          </div>\n        ))}\n      </div>\n    )\n  }\n}\n","import React from 'react'\nimport FieldName from './FieldName'\nimport { makeStyles } from 'tss-react/mui'\nimport BasicValue from './BasicValue'\n\nconst useStyles = makeStyles()({\n  field: {\n    display: 'flex',\n    flexWrap: 'wrap',\n  },\n})\n\nexport default function UriField({\n  value,\n  prefix,\n  name,\n}: {\n  value: { uri: string; baseUri?: string }\n  name: string\n  prefix: string[]\n}) {\n  const { classes } = useStyles()\n  const { uri, baseUri = '' } = value\n  let href: string\n  try {\n    href = new URL(uri, baseUri).href\n  } catch (e) {\n    href = uri\n  }\n  return (\n    <div className={classes.field}>\n      <FieldName prefix={prefix} name={name} />\n      <BasicValue value={href} />\n    </div>\n  )\n}\n","import React from 'react'\nimport isObject from 'is-object'\n\n// locals\nimport { accessNested, generateMaxWidth } from './util'\nimport { isUriLocation } from '../../util'\nimport DataGridDetails from './DataGridDetails'\nimport ArrayValue from './ArrayValue'\nimport UriAttribute from './UriField'\nimport SimpleField from './SimpleField'\n\nconst MAX_FIELD_NAME_WIDTH = 170\n\n// these are always omitted as too detailed\nconst globalOmit = [\n  '__jbrowsefmt',\n  'length',\n  'position',\n  'subfeatures',\n  'uniqueId',\n  'exonFrames',\n  'parentId',\n  'thickStart',\n  'thickEnd',\n]\n\nexport default function Attributes(props: {\n  attributes: {\n    [key: string]: unknown\n    __jbrowsefmt?: Record<string, unknown>\n  }\n  omit?: string[]\n  omitSingleLevel?: string[]\n  formatter?: (val: unknown, key: string) => React.ReactNode\n  descriptions?: Record<string, React.ReactNode>\n  prefix?: string[]\n  hideUris?: boolean\n}) {\n  const {\n    attributes,\n    omit = [],\n    omitSingleLevel = [],\n    descriptions,\n    formatter = val => val,\n    hideUris,\n    prefix = [],\n  } = props\n\n  const omits = new Set([...omit, ...globalOmit, ...omitSingleLevel])\n  const { __jbrowsefmt, ...rest } = attributes\n  const formattedAttributes = { ...rest, ...__jbrowsefmt }\n\n  const maxLabelWidth = generateMaxWidth(\n    Object.entries(formattedAttributes).filter(\n      ([k, v]) => v !== undefined && !omits.has(k),\n    ),\n    prefix,\n  )\n\n  return (\n    <>\n      {Object.entries(formattedAttributes)\n        .filter(([k, v]) => v !== undefined && !omits.has(k))\n        .map(([key, value]) => {\n          const description = accessNested([...prefix, key], descriptions)\n          if (Array.isArray(value)) {\n            // check if it looks like an array of objects, which could be used\n            // in data grid\n            return value.length > 1 && value.every(val => isObject(val)) ? (\n              <DataGridDetails\n                key={key}\n                name={key}\n                prefix={prefix}\n                value={value}\n              />\n            ) : (\n              <ArrayValue\n                key={key}\n                name={key}\n                value={value}\n                description={description}\n                prefix={prefix}\n              />\n            )\n          } else if (isObject(value)) {\n            const { omitSingleLevel, ...rest } = props\n            return isUriLocation(value) ? (\n              hideUris ? null : (\n                <UriAttribute\n                  key={key}\n                  name={key}\n                  prefix={prefix}\n                  value={value}\n                />\n              )\n            ) : (\n              <Attributes\n                key={key}\n                {...rest}\n                attributes={value}\n                descriptions={descriptions}\n                prefix={[...prefix, key]}\n              />\n            )\n          } else {\n            return (\n              <SimpleField\n                key={key}\n                name={key}\n                value={formatter(value, key)}\n                description={description}\n                prefix={prefix}\n                width={Math.min(maxLabelWidth, MAX_FIELD_NAME_WIDTH)}\n              />\n            )\n          }\n        })}\n    </>\n  )\n}\n","import React from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport {\n  Accordion,\n  AccordionDetails,\n  AccordionSummary,\n  Divider,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\n\n// icons\nimport ExpandMore from '@mui/icons-material/ExpandMore'\n\n// locals\nimport {\n  getEnv,\n  getSession,\n  assembleLocString,\n  toLocale,\n  SimpleFeatureSerialized,\n} from '../../util'\nimport { ErrorMessage } from '../../ui'\nimport SequenceFeatureDetails from '../SequenceFeatureDetails'\nimport { BaseCardProps, BaseProps } from '../types'\nimport SimpleField from './SimpleField'\nimport Attributes from './Attributes'\nimport { generateTitle, isEmpty } from './util'\n\n// coreDetails are omitted in some circumstances\nconst coreDetails = [\n  'name',\n  'start',\n  'end',\n  'strand',\n  'refName',\n  'description',\n  'type',\n]\n\nconst useStyles = makeStyles()(theme => ({\n  expansionPanelDetails: {\n    display: 'block',\n    padding: theme.spacing(1),\n  },\n  icon: {\n    color: theme.palette.tertiary.contrastText || '#fff',\n  },\n}))\n\nexport function BaseCard({\n  children,\n  title,\n  defaultExpanded = true,\n}: BaseCardProps) {\n  const { classes } = useStyles()\n  return (\n    <Accordion defaultExpanded={defaultExpanded}>\n      <AccordionSummary expandIcon={<ExpandMore className={classes.icon} />}>\n        <Typography variant=\"button\">{title}</Typography>\n      </AccordionSummary>\n      <AccordionDetails className={classes.expansionPanelDetails}>\n        {children}\n      </AccordionDetails>\n    </Accordion>\n  )\n}\n\nfunction Position(props: BaseProps) {\n  const { feature } = props\n  const strand = feature.strand as number\n  const strandMap: Record<string, string> = {\n    '-1': '-',\n    '0': '',\n    '1': '+',\n  }\n  const str = strandMap[strand] ? `(${strandMap[strand]})` : ''\n  const loc = assembleLocString(feature)\n  return <>{`${loc} ${str}`}</>\n}\n\nfunction CoreDetails(props: BaseProps) {\n  const { feature } = props\n  const obj = feature as SimpleFeatureSerialized & {\n    start: number\n    end: number\n    assemblyName?: string\n    strand: number\n    refName: string\n    __jbrowsefmt: {\n      start?: number\n      assemblyName?: string\n      end?: number\n      refName?: string\n      name?: string\n    }\n  }\n\n  const formattedFeat = { ...obj, ...obj.__jbrowsefmt }\n  const { start, end } = formattedFeat\n\n  const displayedDetails: Record<string, any> = {\n    ...formattedFeat,\n    length: toLocale(end - start),\n  }\n\n  const coreRenderedDetails = {\n    description: 'Description',\n    name: 'Name',\n    length: 'Length',\n    type: 'Type',\n  }\n  return (\n    <>\n      <SimpleField\n        name=\"Position\"\n        value={<Position {...props} feature={formattedFeat} />}\n      />\n      {Object.entries(coreRenderedDetails)\n        .map(([key, name]) => [name, displayedDetails[key]])\n        .filter(([, value]) => value != null)\n        .map(([name, value]) => (\n          <SimpleField key={name} name={name} value={value} />\n        ))}\n    </>\n  )\n}\n\nexport const BaseCoreDetails = (props: BaseProps) => {\n  const { title = 'Primary data' } = props\n  return (\n    <BaseCard {...props} title={title}>\n      <CoreDetails {...props} />\n    </BaseCard>\n  )\n}\n\nexport const BaseAttributes = (props: BaseProps) => {\n  const { feature } = props\n  return (\n    <BaseCard {...props} title=\"Attributes\">\n      <Attributes {...props} attributes={feature} />\n    </BaseCard>\n  )\n}\n\nexport interface BaseInputProps extends BaseCardProps {\n  omit?: string[]\n  model: any\n  descriptions?: Record<string, React.ReactNode>\n  formatter?: (val: unknown, key: string) => React.ReactNode\n}\n\ninterface PanelDescriptor {\n  name: string\n  Component: React.FC<any>\n}\n\nexport function FeatureDetails(props: {\n  model: IAnyStateTreeNode\n  feature: SimpleFeatureSerialized\n  depth?: number\n  omit?: string[]\n  descriptions?: Record<string, React.ReactNode>\n  formatter?: (val: unknown, key: string) => React.ReactNode\n}) {\n  const { omit = [], model, feature, depth = 0 } = props\n  const { maxDepth } = model\n  const { mate, name = '', id = '', type = '', subfeatures, uniqueId } = feature\n  const pm = getEnv(model).pluginManager\n  const session = getSession(model)\n\n  const ExtraPanel = pm.evaluateExtensionPoint('Core-extraFeaturePanel', null, {\n    session,\n    feature,\n    model,\n  }) as PanelDescriptor | undefined\n  const m = mate as { start: number; end: number; refName: string } | undefined\n  return (\n    <BaseCard title={generateTitle(name, id, type)}>\n      <Typography>Core details</Typography>\n      <CoreDetails {...props} />\n      {m ? (\n        <>\n          <Divider />\n          <Typography>Mate details</Typography>\n          <CoreDetails\n            {...props}\n            feature={{\n              ...m,\n              start: m.start,\n              end: m.end,\n              refName: m.refName,\n              uniqueId: `${uniqueId}-mate`,\n            }}\n          />\n        </>\n      ) : null}\n\n      <Divider />\n      <Typography>Attributes</Typography>\n      <Attributes\n        attributes={feature}\n        {...props}\n        omit={omit}\n        omitSingleLevel={coreDetails}\n      />\n\n      <ErrorBoundary FallbackComponent={e => <ErrorMessage error={e.error} />}>\n        <SequenceFeatureDetails {...props} />\n      </ErrorBoundary>\n\n      {ExtraPanel ? (\n        <>\n          <Divider />\n          <BaseCard title={ExtraPanel.name}>\n            <ExtraPanel.Component {...props} />\n          </BaseCard>\n        </>\n      ) : null}\n\n      {depth < maxDepth && subfeatures?.length ? (\n        <BaseCard title=\"Subfeatures\" defaultExpanded={depth < 1}>\n          {subfeatures.map((sub, idx) => (\n            <FeatureDetails\n              key={JSON.stringify(sub)}\n              feature={{\n                ...sub,\n                uniqueId: `${uniqueId}_${idx}`,\n              }}\n              model={model}\n              depth={depth + 1}\n            />\n          ))}\n        </BaseCard>\n      ) : null}\n    </BaseCard>\n  )\n}\n\nconst BaseFeatureDetail = observer(function ({ model }: BaseInputProps) {\n  const { error, featureData } = model\n\n  if (error) {\n    return <ErrorMessage error={error} />\n  }\n  if (!featureData) {\n    return null\n  }\n\n  // replacing undefined with null helps with allowing fields to be hidden,\n  // setting null is not allowed by jexl so we set it to undefined to hide. see\n  // config guide. this replacement happens both here and when snapshotting the\n  // featureData\n  const g = JSON.parse(\n    JSON.stringify(featureData, (_, v) => (v === undefined ? null : v)),\n  )\n  return isEmpty(g) ? null : <FeatureDetails model={model} feature={g} />\n})\n\nexport default BaseFeatureDetail\n\nexport { default as Attributes } from './Attributes'\n","export interface Feat {\n  start: number\n  end: number\n  type?: string\n  name?: string\n  id?: string\n}\nexport interface ParentFeat extends Feat {\n  uniqueId: string\n  strand?: number\n  refName: string\n  subfeatures?: Feat[]\n  parentId?: string\n}\nexport interface SeqState {\n  seq: string\n  upstream?: string\n  downstream?: string\n}\n\nexport interface ErrorState {\n  error: string\n}\n\nexport function stitch(subfeats: Feat[], sequence: string) {\n  return subfeats.map(sub => sequence.slice(sub.start, sub.end)).join('')\n}\n\n// filter items if they have the same \"ID\" or location\nfunction getItemId(feat: Feat) {\n  return `${feat.start}-${feat.end}`\n}\n\n// filters if successive elements share same start/end\nexport function dedupe(list: Feat[]) {\n  return list.filter(\n    (item, pos, ary) => !pos || getItemId(item) !== getItemId(ary[pos - 1]!),\n  )\n}\n\nexport function revlist(list: Feat[], seqlen: number) {\n  return list\n    .map(sub => ({\n      ...sub,\n      start: seqlen - sub.end,\n      end: seqlen - sub.start,\n    }))\n    .sort((a, b) => a.start - b.start)\n}\n\nexport function calculateUTRs(cds: Feat[], exons: Feat[]) {\n  // checking length ensures the .at below are valid\n  if (!cds.length) {\n    return []\n  }\n\n  const firstCds = cds.at(0)!\n\n  const lastCds = cds.at(-1)!\n  const firstCdsIdx = exons.findIndex(\n    exon => exon.end >= firstCds.start && exon.start <= firstCds.start,\n  )\n  const lastCdsIdx = exons.findIndex(\n    exon => exon.end >= lastCds.end && exon.start <= lastCds.end,\n  )\n  const lastCdsExon = exons[lastCdsIdx]!\n  const firstCdsExon = exons[firstCdsIdx]!\n\n  const fiveUTRs = [\n    ...exons.slice(0, firstCdsIdx),\n    { start: firstCdsExon.start, end: firstCds.start },\n  ].map(elt => ({ ...elt, type: 'five_prime_UTR' }))\n\n  const threeUTRs = [\n    { start: lastCds.end, end: lastCdsExon.end },\n    ...exons.slice(lastCdsIdx + 1),\n  ].map(elt => ({ ...elt, type: 'three_prime_UTR' }))\n\n  return [...fiveUTRs, ...threeUTRs]\n}\n\n// calculates UTRs using impliedUTRs logic, but there are no exon subfeatures\nexport function calculateUTRs2(cds: Feat[], parentFeat: Feat) {\n  if (!cds.length) {\n    return []\n  }\n\n  const firstCds = cds.at(0)!\n\n  const lastCds = cds.at(-1)!\n\n  const fiveUTRs = [{ start: parentFeat.start, end: firstCds.start }].map(\n    elt => ({ ...elt, type: 'five_prime_UTR' }),\n  )\n\n  const threeUTRs = [{ start: lastCds.end, end: parentFeat.end }].map(elt => ({\n    ...elt,\n    type: 'three_prime_UTR',\n  }))\n\n  return [...fiveUTRs, ...threeUTRs]\n}\n\nexport function ellipses(slug: string) {\n  return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug\n}\n"],"names":["useStyles","makeStyles","theme","fieldValue","wordBreak","maxHeight","fontSize","padding","spacing","overflow","BasicValue","value","classes","isLink","exec","React","className","Link","href","SanitizedHTML","html","isObject","JSON","stringify","String","fieldDescription","background","palette","mode","fieldName","minWidth","borderBottom","action","disabledBackground","marginRight","FieldName","description","name","width","prefix","cx","val","join","Tooltip","title","placement","style","field","display","flexWrap","SimpleField","SequenceFeatureDetails","lazy","HelpDialog","formControl","margin","container","marginTop","marginBottom","observer","model","feature","shown","setShown","useState","FormControl","Button","variant","onClick","IconButton","getSession","queueDialog","handleClose","Help","Suspense","fallback","LoadingEllipses","key","uniqueId","generateTitle","id","type","ellipses","filter","f","cell","whiteSpace","textOverflow","DataGridDetails","checked","setChecked","keys","Object","sort","unionKeys","Set","rows","entries","map","k","rest","identifier","add","colNames","has","delete","widths","e","measureGridWidth","r","size","length","FormControlLabel","control","Checkbox","onChange","event","target","label","Typography","DataGrid","autoHeight","disableRowSelectionOnClick","rowHeight","columnHeaderHeight","hideFooter","slots","toolbar","GridToolbar","slotProps","printOptions","disableToolbarButton","columns","index","renderCell","params","getStr","fieldSubvalue","border","selected","boxSizing","ArrayValue","Attributes","attributes","every","i","UriField","uri","baseUri","URL","MAX_FIELD_NAME_WIDTH","globalOmit","props","omit","omitSingleLevel","descriptions","formatter","hideUris","omits","__jbrowsefmt","formattedAttributes","maxLabelWidth","array","Math","ceil","max","measureText","generateMaxWidth","v","undefined","arr","obj","obj2","forEach","elt","Description","accessNested","Array","isArray","isUriLocation","UriAttribute","_extends","min","coreDetails","expansionPanelDetails","icon","color","tertiary","contrastText","BaseCard","children","defaultExpanded","Accordion","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","Position","strand","strandMap","str","loc","assembleLocString","CoreDetails","formattedFeat","start","end","displayedDetails","toLocale","BaseCoreDetails","BaseAttributes","FeatureDetails","depth","maxDepth","mate","subfeatures","pm","getEnv","pluginManager","session","ExtraPanel","evaluateExtensionPoint","m","Divider","refName","ErrorBoundary","FallbackComponent","ErrorMessage","error","Component","sub","idx","featureData","g","parse","_","stitch","subfeats","sequence","slice","getItemId","feat","dedupe","list","item","pos","ary","revlist","seqlen","a","b","calculateUTRs","cds","exons","firstCds","at","lastCds","firstCdsIdx","findIndex","exon","lastCdsIdx","lastCdsExon","firstCdsExon","calculateUTRs2","parentFeat","slug"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9028.12f6efe2.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9028],{59028:(e,t,n)=>{n.d(t,{renderSvg:()=>r});var a=n(7552),i=n(99546);async function r(e,t,r){const c=(0,i.getContainingView)(e).dynamicBlocks.totalWidthPx,l=e.height;if(t.rasterizeLayers){const t=document.createElement("canvas");t.width=2*c,t.height=2*l;const n=t.getContext("2d");if(!n)return;return n.scale(2,2),r(e,n,c,l),a.createElement("image",{width:c,height:l,xlinkHref:t.toDataURL("image/png")})}{const t=new((await n.e(3109).then(n.t.bind(n,63109,23))).default)(c,l);r(e,t,c,l);const i=(s=e.id,`arc-clip-${"undefined"==typeof jest?s:"jest"}`);return a.createElement(a.Fragment,null,a.createElement("defs",null,a.createElement("clipPath",{id:i},a.createElement("rect",{x:0,y:0,width:c,height:l}))),a.createElement("g",{dangerouslySetInnerHTML:{__html:t.getSvg().innerHTML},clipPath:`url(#${i})`}))}var s}}}]);
+//# sourceMappingURL=9028.12f6efe2.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9028.12f6efe2.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9028.12f6efe2.chunk.js","mappings":"2KAYOA,eAAeC,EACpBC,EACAC,EACAC,GAOA,MACMC,GADOC,EAAAA,EAAAA,mBAAkBJ,GACZK,cAAcC,aAC3BC,EAASP,EAAKO,OACpB,GAAIN,EAAKO,gBAAiB,CACxB,MAAMC,EAASC,SAASC,cAAc,UACtCF,EAAON,MAAgB,EAARA,EACfM,EAAOF,OAAkB,EAATA,EAChB,MAAMK,EAAMH,EAAOI,WAAW,MAC9B,IAAKD,EACH,OAIF,OAFAA,EAAIE,MAAM,EAAG,GACbZ,EAAGF,EAAMY,EAAKT,EAAOI,GAEnBQ,EAAAA,cAAA,SACEZ,MAAOA,EACPI,OAAQA,EACRS,UAAWP,EAAOQ,UAAU,cAGlC,CAAO,CAEL,MACML,EAAM,WADM,sCACEM,SAAQf,EAAOI,GACnCL,EAAGF,EAAMY,EAAKT,EAAOI,GACrB,MAAMY,GA1CKC,EA0CUpB,EAAKoB,GAxCrB,YADwB,oBAATC,KACMD,EAAK,UAyC/B,OACEL,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,YACEA,EAAAA,cAAA,YAAUK,GAAID,GACZJ,EAAAA,cAAA,QAAMO,EAAG,EAAGC,EAAG,EAAGpB,MAAOA,EAAOI,OAAQA,MAG5CQ,EAAAA,cAAA,KACES,wBAAyB,CAAEC,OAAQb,EAAIc,SAASC,WAChDC,SAAU,QAAQT,OAI1B,CAxDF,IAAeC,CAyDf,C","sources":["../../../plugins/alignments/src/shared/renderSvg.tsx"],"sourcesContent":["import React from 'react'\nimport { getContainingView } from '@jbrowse/core/util'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// stabilize clipid under test for snapshot\nfunction getId(id: string) {\n  const isJest = typeof jest === 'undefined'\n  return `arc-clip-${isJest ? id : 'jest'}`\n}\n\ntype LGV = LinearGenomeViewModel\n\nexport async function renderSvg<T extends { id: string; height: number }>(\n  self: T,\n  opts: { rasterizeLayers?: boolean },\n  cb: (\n    model: T,\n    ctx: CanvasRenderingContext2D,\n    width: number,\n    height: number,\n  ) => void,\n) {\n  const view = getContainingView(self) as LGV\n  const width = view.dynamicBlocks.totalWidthPx\n  const height = self.height\n  if (opts.rasterizeLayers) {\n    const canvas = document.createElement('canvas')\n    canvas.width = width * 2\n    canvas.height = height * 2\n    const ctx = canvas.getContext('2d')\n    if (!ctx) {\n      return\n    }\n    ctx.scale(2, 2)\n    cb(self, ctx, width, height)\n    return (\n      <image\n        width={width}\n        height={height}\n        xlinkHref={canvas.toDataURL('image/png')}\n      />\n    )\n  } else {\n    // @ts-ignore\n    const C2S = await import('canvas2svg')\n    const ctx = new C2S.default(width, height)\n    cb(self, ctx, width, height)\n    const clipid = getId(self.id)\n    return (\n      <>\n        <defs>\n          <clipPath id={clipid}>\n            <rect x={0} y={0} width={width} height={height} />\n          </clipPath>\n        </defs>\n        <g\n          dangerouslySetInnerHTML={{ __html: ctx.getSvg().innerHTML }}\n          clipPath={`url(#${clipid})`}\n        />\n      </>\n    )\n  }\n}\n"],"names":["async","renderSvg","self","opts","cb","width","getContainingView","dynamicBlocks","totalWidthPx","height","rasterizeLayers","canvas","document","createElement","ctx","getContext","scale","React","xlinkHref","toDataURL","default","clipid","id","jest","x","y","dangerouslySetInnerHTML","__html","getSvg","innerHTML","clipPath"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9032.b54e1975.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9032],{99032:(e,n,r)=>{r.r(n),r.d(n,{default:()=>u});var t=r(7552),o=r(68446),a=r(36422),l=r(99546),i=r(36715),s=r(87731);const c=(0,r(75785).n9)()((e=>({root:{margin:e.spacing(2),paddingTop:e.spacing(2)},subtitle:{margin:e.spacing(1)},pluginList:{margin:e.spacing(1),marginTop:e.spacing(5)}}))),u=(0,o.observer)((function({model:e}){const{classes:n}=c(),{version:r}=(0,l.getSession)(e),{pluginManager:o}=(0,a.getEnv)(e),{plugins:u}=o,p=new Set(u.filter((e=>o.pluginMetadata[e.name]?.isCore)).map((e=>e.name)));return t.createElement("div",{className:n.root},t.createElement(i.A,{variant:"h4",align:"center"},"JBrowse 2"),t.createElement(i.A,{variant:"h6",align:"center",className:n.subtitle},r),t.createElement(i.A,{align:"center"},"JBrowse is a"," ",t.createElement(s.A,{href:"http://gmod.org/",target:"_blank",rel:"noopener noreferrer"},"GMOD")," ","project"),t.createElement("br",null),t.createElement(i.A,{align:"center"},"© 2019-2022 The Evolutionary Software Foundation"),t.createElement("div",{className:n.pluginList},t.createElement(i.A,null,"External plugins loaded"),t.createElement("ul",null,u.filter((e=>!p.has(e.name))).map((e=>{const{url:n,name:r,version:o=""}=e,a=`${r} ${o||""}`;return t.createElement("li",{key:e.name},e.url?t.createElement(s.A,{target:"_blank",rel:"noopener noreferrer",href:n},a):t.createElement(i.A,null,a))}))),t.createElement(i.A,null,"Core plugins loaded"),t.createElement("ul",null,u.filter((e=>p.has(e.name))).map((e=>t.createElement("li",{key:e.name},t.createElement(i.A,null,e.name," ",e.version||"")))))))}))},87731:(e,n,r)=>{r.d(n,{A:()=>f});var t=r(7552),o=r(93878),a=r(72639),l=r(70799),i=r(91527),s=r(15622),c=r(51148),u=r(48231),p=r(60129),d=r(58520),m=r(4785),g=r(36715),y=r(58161),b=r(39995);const v=({theme:e,ownerState:n})=>{const r=n.color,t=(0,b.Yn)(e,`palette.${r}`,!1)||n.color,o=(0,b.Yn)(e,`palette.${r}Channel`);return"vars"in e&&o?`rgba(${o} / 0.4)`:(0,a.X4)(t,.4)};var A=r(69500);const h={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},w=(0,c.Ay)(g.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:r}=e;return[n.root,n[`underline${(0,s.A)(r.underline)}`],"button"===r.component&&n.button]}})((0,p.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:n})=>"always"===e&&"inherit"!==n.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,d.A)()).map((([n])=>({props:{underline:"always",color:n},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[n].mainChannel} / 0.4)`:(0,a.X4)(e.palette[n].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,a.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${y.A.focusVisible}`]:{outline:"auto"}}}]})))),f=t.forwardRef((function(e,n){const r=(0,m.b)({props:e,name:"MuiLink"}),a=(0,u.A)(),{className:c,color:p="primary",component:d="a",onBlur:g,onFocus:b,TypographyClasses:f,underline:k="always",variant:x="inherit",sx:E,...C}=r,[S,L]=t.useState(!1),$={...r,color:p,component:d,focusVisible:S,underline:k,variant:x},D=(e=>{const{classes:n,component:r,focusVisible:t,underline:o}=e,a={root:["root",`underline${(0,s.A)(o)}`,"button"===r&&"button",t&&"focusVisible"]};return(0,l.A)(a,y.t,n)})($);return(0,A.jsx)(w,{color:p,className:(0,o.A)(D.root,c),classes:f,component:d,onBlur:e=>{(0,i.A)(e.target)||L(!1),g&&g(e)},onFocus:e=>{(0,i.A)(e.target)&&L(!0),b&&b(e)},ref:n,ownerState:$,variant:x,...C,sx:[...void 0===h[p]?[{color:p}]:[],...Array.isArray(E)?E:[E]],style:{...C.style,..."always"===k&&"inherit"!==p&&!h[p]&&{"--Link-underlineColor":v({theme:a,ownerState:$})}}})}))},58161:(e,n,r)=>{r.d(n,{A:()=>l,t:()=>a});var t=r(33761),o=r(85693);function a(e){return(0,o.Ay)("MuiLink",e)}const l=(0,t.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])}}]);
+//# sourceMappingURL=9032.b54e1975.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9032.b54e1975.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9032.b54e1975.chunk.js","mappings":"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","sources":["../../../plugins/menus/src/AboutWidget/components/AboutWidget.tsx","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { IAnyStateTreeNode, getEnv } from 'mobx-state-tree'\nimport { getSession } from '@jbrowse/core/util'\nimport { Typography, Link } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(2),\n    paddingTop: theme.spacing(2),\n  },\n  subtitle: {\n    margin: theme.spacing(1),\n  },\n  pluginList: {\n    margin: theme.spacing(1),\n    marginTop: theme.spacing(5),\n  },\n}))\n\nconst AboutWidget = observer(function ({\n  model,\n}: {\n  model: IAnyStateTreeNode\n}) {\n  const { classes } = useStyles()\n  const { version } = getSession(model)\n  const { pluginManager } = getEnv(model)\n  const { plugins } = pluginManager as PluginManager\n  const corePlugins = new Set(\n    plugins\n      .filter(p => pluginManager.pluginMetadata[p.name]?.isCore)\n      .map(p => p.name),\n  )\n\n  return (\n    <div className={classes.root}>\n      <Typography variant=\"h4\" align=\"center\">\n        JBrowse 2\n      </Typography>\n      <Typography variant=\"h6\" align=\"center\" className={classes.subtitle}>\n        {version}\n      </Typography>\n      <Typography align=\"center\">\n        JBrowse is a{' '}\n        <Link href=\"http://gmod.org/\" target=\"_blank\" rel=\"noopener noreferrer\">\n          GMOD\n        </Link>{' '}\n        project\n      </Typography>\n      <br />\n      <Typography align=\"center\">\n        © 2019-2022 The Evolutionary Software Foundation\n      </Typography>\n      <div className={classes.pluginList}>\n        <Typography>External plugins loaded</Typography>\n        <ul>\n          {plugins\n            .filter(plugin => !corePlugins.has(plugin.name))\n            .map(plugin => {\n              const { url, name, version = '' } = plugin\n              const text = `${name} ${version || ''}`\n              return (\n                <li key={plugin.name}>\n                  {plugin.url ? (\n                    <Link target=\"_blank\" rel=\"noopener noreferrer\" href={url}>\n                      {text}\n                    </Link>\n                  ) : (\n                    <Typography>{text}</Typography>\n                  )}\n                </li>\n              )\n            })}\n        </ul>\n        <Typography>Core plugins loaded</Typography>\n        <ul>\n          {plugins\n            .filter(plugin => corePlugins.has(plugin.name))\n            .map(plugin => (\n              <li key={plugin.name}>\n                <Typography>\n                  {plugin.name} {plugin.version || ''}\n                </Typography>\n              </li>\n            ))}\n        </ul>\n      </div>\n    </div>\n  )\n})\n\nexport default AboutWidget\n","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;"],"names":["useStyles","makeStyles","theme","root","margin","spacing","paddingTop","subtitle","pluginList","marginTop","observer","model","classes","version","getSession","pluginManager","getEnv","plugins","corePlugins","Set","filter","p","pluginMetadata","name","isCore","map","React","className","Typography","variant","align","Link","href","target","rel","plugin","has","url","text","key","ownerState","transformedColor","color","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","slot","overridesResolver","props","styles","capitalize","underline","component","button","memoTheme","variants","style","textDecoration","textDecorationColor","Object","entries","palette","createSimplePaletteValueFilter","vars","mainChannel","main","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","inProps","ref","useTheme","onBlur","onFocus","TypographyClasses","sx","other","setFocusVisible","slots","composeClasses","useUtilityClasses","clsx","event","isFocusVisible","undefined","Array","isArray","getLinkUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9037.03715b7f.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9037],{29037:(b,e,s)=>{s.r(e),s.d(e,{default:()=>a.A});var a=s(26549)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9067.1cc02121.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9067],{79067:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});var o=a(7552),r=a(49823),n=a(29499),l=a(36715),i=a(24387),s=a(58507),c=a(5401),d=a(31647),p=a(943),u=a(64111),m=a(95767),g=a(82565),y=a(75199),A=a(73451),h=a(36422),v=a(99546);function b({searchResults:e,assemblyName:t,model:a,handleClose:r}){const n=(0,v.getSession)(a),{pluginManager:l}=(0,v.getEnv)(n),{assemblyManager:i}=n,s=t||a.displayedRegions[0].assemblyName,b=i.get(s);if(!b)throw new Error(`assembly ${s} not found`);if(!b.regions)throw new Error(`assembly ${s} regions not loaded`);return o.createElement(d.A,{component:p.A},o.createElement(u.A,null,o.createElement(m.A,null,o.createElement(g.A,null,o.createElement(y.A,null,"Name"),o.createElement(y.A,{align:"right"},"Location"),o.createElement(y.A,{align:"right"},"Track"),o.createElement(y.A,{align:"right"}))),o.createElement(A.A,null,e.map((e=>o.createElement(g.A,{key:e.getId()},o.createElement(y.A,{component:"th",scope:"row"},e.getLabel()),o.createElement(y.A,{align:"right"},e.getLocation()),o.createElement(y.A,{align:"right"},function(e){if(e){const t=l.pluggableConfigSchemaType("track"),o=(0,h.resolveIdentifier)(t,(0,h.getRoot)(a),e);return o?.name?.value||""}return""}(e.getTrackId())||"N/A"),o.createElement(y.A,{align:"right"},o.createElement(c.A,{onClick:async()=>{try{const t=e.getLocation();if(t){await async function(e){try{const t=b?.regions?.find((t=>e===t.refName));t?(a.setDisplayedRegions([t]),a.showAllRegions()):await a.navToLocString(e,s)}catch(e){console.warn(e),n.notify(`${e}`,"warning")}}(t);const o=e.getTrackId();o&&a.showTrack(o)}}catch(e){console.error(e),n.notifyError(`${e}`,e)}r()},color:"primary",variant:"contained"},"Go"))))))))}function f({model:e,assemblyName:t,searchQuery:a,searchResults:d,handleClose:p}){return o.createElement(r.Dialog,{open:!0,maxWidth:"xl",onClose:p,title:"Search results"},o.createElement(n.A,null,d?.length?o.createElement(o.Fragment,null,o.createElement(l.A,null,"Showing results for ",o.createElement("b",null,a)),o.createElement(b,{model:e,handleClose:p,assemblyName:t,searchResults:d})):o.createElement(l.A,null,"No results found for ",o.createElement("b",null,a))),o.createElement(i.A,null),o.createElement(s.A,null,o.createElement(c.A,{onClick:()=>{p()},color:"primary"},"Cancel")))}},64111:(e,t,a)=>{a.d(t,{A:()=>g});var o=a(7552),r=a(93878),n=a(70799),l=a(15560),i=a(51148),s=a(60129),c=a(4785),d=a(12667),p=a(69500);const u=(0,i.Ay)("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.stickyHeader&&t.stickyHeader]}})((0,s.A)((({theme:e})=>({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":{...e.typography.body2,padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"},variants:[{props:({ownerState:e})=>e.stickyHeader,style:{borderCollapse:"separate"}}]})))),m="table",g=o.forwardRef((function(e,t){const a=(0,c.b)({props:e,name:"MuiTable"}),{className:i,component:s=m,padding:g="normal",size:y="medium",stickyHeader:A=!1,...h}=a,v={...a,component:s,padding:g,size:y,stickyHeader:A},b=(e=>{const{classes:t,stickyHeader:a}=e,o={root:["root",a&&"stickyHeader"]};return(0,n.A)(o,d.l,t)})(v),f=o.useMemo((()=>({padding:g,size:y,stickyHeader:A})),[g,y,A]);return(0,p.jsx)(l.A.Provider,{value:f,children:(0,p.jsx)(u,{as:s,role:s===m?null:"table",ref:t,className:(0,r.A)(b.root,i),ownerState:v,...h})})}))},15560:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext()},70156:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(7552).createContext()},12667:(e,t,a)=>{a.d(t,{A:()=>l,l:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTable",e)}const l=(0,o.A)("MuiTable",["root","stickyHeader"])},73451:(e,t,a)=>{a.d(t,{A:()=>g});var o=a(7552),r=a(93878),n=a(70799),l=a(70156),i=a(51148),s=a(4785),c=a(20255),d=a(69500);const p=(0,i.Ay)("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-row-group"}),u={variant:"body"},m="tbody",g=o.forwardRef((function(e,t){const a=(0,s.b)({props:e,name:"MuiTableBody"}),{className:o,component:i=m,...g}=a,y={...a,component:i},A=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},c.b,t)})(y);return(0,d.jsx)(l.A.Provider,{value:u,children:(0,d.jsx)(p,{className:(0,r.A)(A.root,o),as:i,ref:t,role:i===m?null:"rowgroup",ownerState:y,...g})})}))},20255:(e,t,a)=>{a.d(t,{A:()=>l,b:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableBody",e)}const l=(0,o.A)("MuiTableBody",["root"])},75199:(e,t,a)=>{a.d(t,{A:()=>A});var o=a(7552),r=a(93878),n=a(70799),l=a(72639),i=a(15622),s=a(15560),c=a(70156),d=a(51148),p=a(60129),u=a(4785),m=a(48459),g=a(69500);const y=(0,d.Ay)("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,t[a.variant],t[`size${(0,i.A)(a.size)}`],"normal"!==a.padding&&t[`padding${(0,i.A)(a.padding)}`],"inherit"!==a.align&&t[`align${(0,i.A)(a.align)}`],a.stickyHeader&&t.stickyHeader]}})((0,p.A)((({theme:e})=>({...e.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid\n    ${"light"===e.palette.mode?(0,l.a)((0,l.X4)(e.palette.divider,1),.88):(0,l.e$)((0,l.X4)(e.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(e.vars||e).palette.text.primary}},{props:{variant:"footer"},style:{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${m.A.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:e})=>e.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default}}]})))),A=o.forwardRef((function(e,t){const a=(0,u.b)({props:e,name:"MuiTableCell"}),{align:l="inherit",className:d,component:p,padding:A,scope:h,size:v,sortDirection:b,variant:f,...w}=a,x=o.useContext(s.A),k=o.useContext(c.A),T=k&&"head"===k.variant;let C;C=p||(T?"th":"td");let R=h;"td"===C?R=void 0:!R&&T&&(R="col");const E=f||k&&k.variant,M={...a,align:l,component:C,padding:A||(x&&x.padding?x.padding:"normal"),size:v||(x&&x.size?x.size:"medium"),sortDirection:b,stickyHeader:"head"===E&&x&&x.stickyHeader,variant:E},H=(e=>{const{classes:t,variant:a,align:o,padding:r,size:l,stickyHeader:s}=e,c={root:["root",a,s&&"stickyHeader","inherit"!==o&&`align${(0,i.A)(o)}`,"normal"!==r&&`padding${(0,i.A)(r)}`,`size${(0,i.A)(l)}`]};return(0,n.A)(c,m.r,t)})(M);let N=null;return b&&(N="asc"===b?"ascending":"descending"),(0,g.jsx)(y,{as:C,ref:t,className:(0,r.A)(H.root,d),"aria-sort":N,scope:R,ownerState:M,...w})}))},48459:(e,t,a)=>{a.d(t,{A:()=>l,r:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableCell",e)}const l=(0,o.A)("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"])},31647:(e,t,a)=>{a.d(t,{A:()=>p});var o=a(7552),r=a(93878),n=a(70799),l=a(51148),i=a(4785),s=a(39339),c=a(69500);const d=(0,l.Ay)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,t)=>t.root})({width:"100%",overflowX:"auto"}),p=o.forwardRef((function(e,t){const a=(0,i.b)({props:e,name:"MuiTableContainer"}),{className:o,component:l="div",...p}=a,u={...a,component:l},m=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},s.I,t)})(u);return(0,c.jsx)(d,{ref:t,as:l,className:(0,r.A)(m.root,o),ownerState:u,...p})}))},39339:(e,t,a)=>{a.d(t,{A:()=>l,I:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableContainer",e)}const l=(0,o.A)("MuiTableContainer",["root"])},95767:(e,t,a)=>{a.d(t,{A:()=>g});var o=a(7552),r=a(93878),n=a(70799),l=a(70156),i=a(51148),s=a(4785),c=a(14627),d=a(69500);const p=(0,i.Ay)("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-header-group"}),u={variant:"head"},m="thead",g=o.forwardRef((function(e,t){const a=(0,s.b)({props:e,name:"MuiTableHead"}),{className:o,component:i=m,...g}=a,y={...a,component:i},A=(e=>{const{classes:t}=e;return(0,n.A)({root:["root"]},c.X,t)})(y);return(0,d.jsx)(l.A.Provider,{value:u,children:(0,d.jsx)(p,{as:i,className:(0,r.A)(A.root,o),ref:t,role:i===m?null:"rowgroup",ownerState:y,...g})})}))},14627:(e,t,a)=>{a.d(t,{A:()=>l,X:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableHead",e)}const l=(0,o.A)("MuiTableHead",["root"])},82565:(e,t,a)=>{a.d(t,{A:()=>y});var o=a(7552),r=a(93878),n=a(70799),l=a(72639),i=a(70156),s=a(51148),c=a(60129),d=a(4785),p=a(36317),u=a(69500);const m=(0,s.Ay)("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.head&&t.head,a.footer&&t.footer]}})((0,c.A)((({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${p.A.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${p.A.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,l.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)}}})))),g="tr",y=o.forwardRef((function(e,t){const a=(0,d.b)({props:e,name:"MuiTableRow"}),{className:l,component:s=g,hover:c=!1,selected:y=!1,...A}=a,h=o.useContext(i.A),v={...a,component:s,hover:c,selected:y,head:h&&"head"===h.variant,footer:h&&"footer"===h.variant},b=(e=>{const{classes:t,selected:a,hover:o,head:r,footer:l}=e,i={root:["root",a&&"selected",o&&"hover",r&&"head",l&&"footer"]};return(0,n.A)(i,p.r,t)})(v);return(0,u.jsx)(m,{as:s,ref:t,className:(0,r.A)(b.root,l),role:s===g?null:"row",ownerState:v,...A})}))},36317:(e,t,a)=>{a.d(t,{A:()=>l,r:()=>n});var o=a(33761),r=a(85693);function n(e){return(0,r.Ay)("MuiTableRow",e)}const l=(0,o.A)("MuiTableRow",["root","selected","hover","head","footer"])}}]);
+//# sourceMappingURL=9067.1cc02121.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9067.1cc02121.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9067.1cc02121.chunk.js","mappings":"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","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsTable.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsDialog.tsx","../../../node_modules/@mui/material/Table/Table.js","../../../node_modules/@mui/material/Table/TableContext.js","../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/Table/tableClasses.js","../../../node_modules/@mui/material/TableBody/TableBody.js","../../../node_modules/@mui/material/TableBody/tableBodyClasses.js","../../../node_modules/@mui/material/TableCell/TableCell.js","../../../node_modules/@mui/material/TableCell/tableCellClasses.js","../../../node_modules/@mui/material/TableContainer/TableContainer.js","../../../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../../../node_modules/@mui/material/TableHead/TableHead.js","../../../node_modules/@mui/material/TableHead/tableHeadClasses.js","../../../node_modules/@mui/material/TableRow/TableRow.js","../../../node_modules/@mui/material/TableRow/tableRowClasses.js"],"sourcesContent":["import React from 'react'\nimport {\n  Button,\n  Paper,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n} from '@mui/material'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport { getRoot, resolveIdentifier } from 'mobx-state-tree'\nimport { getEnv, getSession } from '@jbrowse/core/util'\n\n// locals\nimport { LinearGenomeViewModel } from '../..'\n\nexport default function SearchResultsTable({\n  searchResults,\n  assemblyName: optAssemblyName,\n  model,\n  handleClose,\n}: {\n  searchResults: BaseResult[]\n  assemblyName?: string\n  model: LinearGenomeViewModel\n  handleClose: () => void\n}) {\n  const session = getSession(model)\n  const { pluginManager } = getEnv(session)\n  const { assemblyManager } = session\n  const assemblyName =\n    optAssemblyName || model.displayedRegions[0]!.assemblyName\n\n  const assembly = assemblyManager.get(assemblyName)\n  if (!assembly) {\n    throw new Error(`assembly ${assemblyName} not found`)\n  }\n  if (!assembly.regions) {\n    throw new Error(`assembly ${assemblyName} regions not loaded`)\n  }\n\n  function getTrackName(trackId: string | undefined) {\n    if (trackId) {\n      const schema = pluginManager.pluggableConfigSchemaType('track')\n      const configuration = resolveIdentifier(schema, getRoot(model), trackId)\n      return configuration?.name?.value || ''\n    }\n    return ''\n  }\n  async function handleClick(location: string) {\n    try {\n      const newRegion = assembly?.regions?.find(\n        region => location === region.refName,\n      )\n      if (newRegion) {\n        model.setDisplayedRegions([newRegion])\n        // we use showAllRegions after setDisplayedRegions to make the entire\n        // region visible, xref #1703\n        model.showAllRegions()\n      } else {\n        await model.navToLocString(location, assemblyName)\n      }\n    } catch (e) {\n      console.warn(e)\n      session.notify(`${e}`, 'warning')\n    }\n  }\n  return (\n    <TableContainer component={Paper}>\n      <Table>\n        <TableHead>\n          <TableRow>\n            <TableCell>Name</TableCell>\n            <TableCell align=\"right\">Location</TableCell>\n            <TableCell align=\"right\">Track</TableCell>\n            <TableCell align=\"right\" />\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {searchResults.map(result => (\n            <TableRow key={result.getId()}>\n              <TableCell component=\"th\" scope=\"row\">\n                {result.getLabel()}\n              </TableCell>\n              <TableCell align=\"right\">{result.getLocation()}</TableCell>\n              <TableCell align=\"right\">\n                {getTrackName(result.getTrackId()) || 'N/A'}\n              </TableCell>\n              <TableCell align=\"right\">\n                <Button\n                  onClick={async () => {\n                    try {\n                      const location = result.getLocation()\n                      if (location) {\n                        await handleClick(location)\n                        const resultTrackId = result.getTrackId()\n                        if (resultTrackId) {\n                          model.showTrack(resultTrackId)\n                        }\n                      }\n                    } catch (e) {\n                      console.error(e)\n                      session.notifyError(`${e}`, e)\n                    }\n                    handleClose()\n                  }}\n                  color=\"primary\"\n                  variant=\"contained\"\n                >\n                  Go\n                </Button>\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </TableContainer>\n  )\n}\n","import React from 'react'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  Divider,\n  Typography,\n} from '@mui/material'\n\nimport { LinearGenomeViewModel } from '../..'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport SearchResultsTable from './SearchResultsTable'\n\nexport default function SearchResultsDialog({\n  model,\n  assemblyName,\n  searchQuery,\n  searchResults,\n  handleClose,\n}: {\n  model: LinearGenomeViewModel\n  assemblyName?: string\n  searchQuery: string\n  searchResults?: BaseResult[]\n  handleClose: () => void\n}) {\n  return (\n    <Dialog open maxWidth=\"xl\" onClose={handleClose} title=\"Search results\">\n      <DialogContent>\n        {!searchResults?.length ? (\n          <Typography>\n            No results found for <b>{searchQuery}</b>\n          </Typography>\n        ) : (\n          <>\n            <Typography>\n              Showing results for <b>{searchQuery}</b>\n            </Typography>\n            <SearchResultsTable\n              model={model}\n              handleClose={handleClose}\n              assemblyName={assemblyName}\n              searchResults={searchResults}\n            />\n          </>\n        )}\n      </DialogContent>\n      <Divider />\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport TableContext from \"./TableContext.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableUtilityClass } from \"./tableClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', stickyHeader && 'stickyHeader']\n  };\n  return composeClasses(slots, getTableUtilityClass, classes);\n};\nconst TableRoot = styled('table', {\n  name: 'MuiTable',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'table',\n  width: '100%',\n  borderCollapse: 'collapse',\n  borderSpacing: 0,\n  '& caption': {\n    ...theme.typography.body2,\n    padding: theme.spacing(2),\n    color: (theme.vars || theme).palette.text.secondary,\n    textAlign: 'left',\n    captionSide: 'bottom'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      borderCollapse: 'separate'\n    }\n  }]\n})));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTable'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    padding = 'normal',\n    size = 'medium',\n    stickyHeader = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component,\n    padding,\n    size,\n    stickyHeader\n  };\n  const classes = useUtilityClasses(ownerState);\n  const table = React.useMemo(() => ({\n    padding,\n    size,\n    stickyHeader\n  }), [padding, size, stickyHeader]);\n  return /*#__PURE__*/_jsx(TableContext.Provider, {\n    value: table,\n    children: /*#__PURE__*/_jsx(TableRoot, {\n      as: component,\n      role: component === defaultComponent ? null : 'table',\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   * @default 'normal'\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Allows TableCells to inherit size of the Table.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set the header sticky.\n   * @default false\n   */\n  stickyHeader: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Table;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableUtilityClass(slot) {\n  return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableBodyUtilityClass } from \"./tableBodyClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = styled('tbody', {\n  name: 'MuiTableBody',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-row-group'\n});\nconst tablelvl2 = {\n  variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/React.forwardRef(function TableBody(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableBody'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableBodyRoot, {\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableBody;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableBodyUtilityClass(slot) {\n  return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, alpha, lighten } from '@mui/system/colorManipulator';\nimport capitalize from \"../utils/capitalize.js\";\nimport TableContext from \"../Table/TableContext.js\";\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableCellClasses, { getTableCellUtilityClass } from \"./tableCellClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.body2,\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16,\n  variants: [{\n    props: {\n      variant: 'head'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary,\n      lineHeight: theme.typography.pxToRem(24),\n      fontWeight: theme.typography.fontWeightMedium\n    }\n  }, {\n    props: {\n      variant: 'body'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.primary\n    }\n  }, {\n    props: {\n      variant: 'footer'\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary,\n      lineHeight: theme.typography.pxToRem(21),\n      fontSize: theme.typography.pxToRem(12)\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      padding: '6px 16px',\n      [`&.${tableCellClasses.paddingCheckbox}`]: {\n        width: 24,\n        // prevent the checkbox column from growing\n        padding: '0 12px 0 16px',\n        '& > *': {\n          padding: 0\n        }\n      }\n    }\n  }, {\n    props: {\n      padding: 'checkbox'\n    },\n    style: {\n      width: 48,\n      // prevent the checkbox column from growing\n      padding: '0 0 0 4px'\n    }\n  }, {\n    props: {\n      padding: 'none'\n    },\n    style: {\n      padding: 0\n    }\n  }, {\n    props: {\n      align: 'left'\n    },\n    style: {\n      textAlign: 'left'\n    }\n  }, {\n    props: {\n      align: 'center'\n    },\n    style: {\n      textAlign: 'center'\n    }\n  }, {\n    props: {\n      align: 'right'\n    },\n    style: {\n      textAlign: 'right',\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      align: 'justify'\n    },\n    style: {\n      textAlign: 'justify'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.stickyHeader,\n    style: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 2,\n      backgroundColor: (theme.vars || theme).palette.background.default\n    }\n  }]\n})));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/React.forwardRef(function TableCell(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n    align = 'inherit',\n    className,\n    component: componentProp,\n    padding: paddingProp,\n    scope: scopeProp,\n    size: sizeProp,\n    sortDirection,\n    variant: variantProp,\n    ...other\n  } = props;\n  const table = React.useContext(TableContext);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = {\n    ...props,\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/_jsx(TableCellRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body', 'footer', 'head']), PropTypes.string])\n} : void 0;\nexport default TableCell;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n  return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableContainerUtilityClass } from \"./tableContainerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n  name: 'MuiTableContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  width: '100%',\n  overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableContainer'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableContainerRoot, {\n    ref: ref,\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `Table`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableHeadUtilityClass } from \"./tableHeadClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n  name: 'MuiTableHead',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-header-group'\n});\nconst tablelvl2 = {\n  variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableHead'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableHeadRoot, {\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n  return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport tableRowClasses, { getTableRowUtilityClass } from \"./tableRowClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    selected,\n    hover,\n    head,\n    footer\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', hover && 'hover', head && 'head', footer && 'footer']\n  };\n  return composeClasses(slots, getTableRowUtilityClass, classes);\n};\nconst TableRowRoot = styled('tr', {\n  name: 'MuiTableRow',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.head && styles.head, ownerState.footer && styles.footer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: 'inherit',\n  display: 'table-row',\n  verticalAlign: 'middle',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  [`&.${tableRowClasses.hover}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${tableRowClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n    }\n  }\n})));\nconst defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\nconst TableRow = /*#__PURE__*/React.forwardRef(function TableRow(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableRow'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    hover = false,\n    selected = false,\n    ...other\n  } = props;\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const ownerState = {\n    ...props,\n    component,\n    hover,\n    selected,\n    head: tablelvl2 && tablelvl2.variant === 'head',\n    footer: tablelvl2 && tablelvl2.variant === 'footer'\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableRowRoot, {\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    role: component === defaultComponent ? null : 'row',\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Should be valid `<tr>` children such as `TableCell`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the table row will shade on hover.\n   * @default false\n   */\n  hover: PropTypes.bool,\n  /**\n   * If `true`, the table row will have the selected shading.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableRow;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableRowUtilityClass(slot) {\n  return generateUtilityClass('MuiTableRow', slot);\n}\nconst tableRowClasses = generateUtilityClasses('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\nexport default tableRowClasses;"],"names":["SearchResultsTable","searchResults","assemblyName","optAssemblyName","model","handleClose","session","getSession","pluginManager","getEnv","assemblyManager","displayedRegions","assembly","get","Error","regions","React","TableContainer","component","Paper","Table","TableHead","TableRow","TableCell","align","TableBody","map","result","key","getId","scope","getLabel","getLocation","trackId","schema","pluggableConfigSchemaType","configuration","resolveIdentifier","getRoot","name","value","getTrackName","getTrackId","Button","onClick","async","location","newRegion","find","region","refName","setDisplayedRegions","showAllRegions","navToLocString","e","console","warn","notify","handleClick","resultTrackId","showTrack","error","notifyError","color","variant","SearchResultsDialog","searchQuery","Dialog","open","maxWidth","onClose","title","DialogContent","length","Typography","Divider","DialogActions","TableRoot","slot","overridesResolver","props","styles","ownerState","root","stickyHeader","theme","display","width","borderCollapse","borderSpacing","typography","body2","padding","spacing","vars","palette","text","secondary","textAlign","captionSide","variants","style","defaultComponent","inProps","ref","className","size","other","classes","slots","useUtilityClasses","table","Provider","children","as","role","getTableUtilityClass","TableBodyRoot","tablelvl2","getTableBodyUtilityClass","TableCellRoot","verticalAlign","borderBottom","border","mode","divider","primary","lineHeight","pxToRem","fontWeight","fontWeightMedium","fontSize","paddingCheckbox","flexDirection","position","top","zIndex","backgroundColor","background","default","componentProp","paddingProp","scopeProp","sizeProp","sortDirection","variantProp","isHeadCell","undefined","ariaSort","getTableCellUtilityClass","TableContainerRoot","overflowX","getTableContainerUtilityClass","TableHeadRoot","getTableHeadUtilityClass","TableRowRoot","head","footer","outline","hover","action","selected","mainChannel","selectedOpacity","main","hoverOpacity","getTableRowUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9070.d49de235.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9070],{9070:(e,t,n)=>{n.d(t,{doAfterAttach:()=>o});var a=n(99546),i=n(86576),s=n(36422);function o(e,t){function n(n){const a=e.ref;if(!a)return;const i=a.getContext("2d");i&&e.chainData&&(i.clearRect(0,0,a.width,2*e.height),i.resetTransform(),i.scale(2,2),t(e,i,a.width,e.height),e.setLastDrawnOffsetPx(n.offsetPx),e.setLastDrawnBpPerPx(n.bpPerPx))}(0,i.vi)(e,(async()=>{await async function(e){const{rpcSessionId:t}=(0,a.getContainingTrack)(e),{rpcManager:n}=(0,a.getSession)(e),i=(0,a.getContainingView)(e);if(!i.initialized||e.error||e.regionTooLarge)return;e.setLoading(!0);const o=await n.call(t,"PileupGetReducedFeatures",{sessionId:t,regions:i.staticBlocks.contentBlocks,filterBy:(0,s.getSnapshot)(e.filterBy),adapterConfig:e.adapterConfig});e.setChainData(o),e.setLoading(!1)}(e)}),{delay:1e3}),(0,i.vi)(e,(async()=>{const t=(0,a.getContainingView)(e);t.bpPerPx!==e.lastDrawnBpPerPx&&n(t)})),(0,i.vi)(e,(async()=>{n((0,a.getContainingView)(e))}),{delay:1e3})}}}]);
+//# sourceMappingURL=9070.d49de235.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9070.d49de235.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9070.d49de235.chunk.js","mappings":"0LAQO,SAASA,EACdC,EACAC,GAeA,SAASC,EAAKC,GACZ,MAAMC,EAASJ,EAAKK,IACpB,IAAKD,EACH,OAGF,MAAME,EAAMF,EAAOG,WAAW,MACzBD,GAIAN,EAAKQ,YAIVF,EAAIG,UAAU,EAAG,EAAGL,EAAOM,MAAqB,EAAdV,EAAKW,QACvCL,EAAIM,iBACJN,EAAIO,MAAM,EAAG,GACbZ,EAAGD,EAAMM,EAAKF,EAAOM,MAAOV,EAAKW,QACjCX,EAAKc,qBAAqBX,EAAKY,UAC/Bf,EAAKgB,oBAAoBb,EAAKc,SAChC,EA7BAC,EAAAA,EAAAA,IACElB,GACAmB,gBCqBGA,eACLnB,GAGA,MAAQoB,aAAcC,IAAcC,EAAAA,EAAAA,oBAAmBtB,IACjD,WAAEuB,IAAeC,EAAAA,EAAAA,YAAWxB,GAC5BG,GAAOsB,EAAAA,EAAAA,mBAAkBzB,GAE/B,IAAKG,EAAKuB,aAAe1B,EAAK2B,OAAS3B,EAAK4B,eAC1C,OAGF5B,EAAK6B,YAAW,GAChB,MAAMC,QAAaP,EAAWQ,KAAKV,EAAW,2BAA4B,CACxEA,YACAW,QAAS7B,EAAK8B,aAAaC,cAC3BC,UAAUC,EAAAA,EAAAA,aAAYpC,EAAKmC,UAC3BE,cAAerC,EAAKqC,gBAGtBrC,EAAKsC,aAAaR,GAClB9B,EAAK6B,YAAW,EAClB,CD1CYU,CAAYvC,EAAK,GAEzB,CAAEwC,MAAO,OA2BXtB,EAAAA,EAAAA,IAAclB,GAAMmB,UAClB,MAAMhB,GAAOsB,EAAAA,EAAAA,mBAAkBzB,GAC3BG,EAAKc,UAAYjB,EAAKyC,kBACxBvC,EAAKC,EACP,KAIFe,EAAAA,EAAAA,IACElB,GACAmB,UAEEjB,GADauB,EAAAA,EAAAA,mBAAkBzB,GACrB,GAEZ,CAAEwC,MAAO,KAEb,C","sources":["../../../plugins/alignments/src/shared/afterAttach.tsx","../../../plugins/alignments/src/shared/fetchChains.ts"],"sourcesContent":["import { getContainingView } from '@jbrowse/core/util'\nimport { createAutorun } from '../util'\nimport { fetchChains } from './fetchChains'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\n\ntype LGV = LinearGenomeViewModel\n\nexport function doAfterAttach<T extends IAnyStateTreeNode>(\n  self: T,\n  cb: (\n    self: T,\n    ctx: CanvasRenderingContext2D,\n    width: number,\n    height: number,\n  ) => void,\n) {\n  createAutorun(\n    self,\n    async () => {\n      await fetchChains(self)\n    },\n    { delay: 1000 },\n  )\n\n  function draw(view: LGV) {\n    const canvas = self.ref\n    if (!canvas) {\n      return\n    }\n\n    const ctx = canvas.getContext('2d')\n    if (!ctx) {\n      return\n    }\n\n    if (!self.chainData) {\n      return\n    }\n\n    ctx.clearRect(0, 0, canvas.width, self.height * 2)\n    ctx.resetTransform()\n    ctx.scale(2, 2)\n    cb(self, ctx, canvas.width, self.height)\n    self.setLastDrawnOffsetPx(view.offsetPx)\n    self.setLastDrawnBpPerPx(view.bpPerPx)\n  }\n\n  // first autorun instantly draws if bpPerPx changes\n  createAutorun(self, async () => {\n    const view = getContainingView(self) as LGV\n    if (view.bpPerPx !== self.lastDrawnBpPerPx) {\n      draw(view)\n    }\n  })\n\n  // second autorun draws after delay 1000 e.g. if offsetPx changes\n  createAutorun(\n    self,\n    async () => {\n      const view = getContainingView(self) as LGV\n      draw(view)\n    },\n    { delay: 1000 },\n  )\n}\n","import {\n  getContainingTrack,\n  getContainingView,\n  getSession,\n} from '@jbrowse/core/util'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\nimport { LinearReadArcsDisplayModel } from '../LinearReadArcsDisplay/model'\nimport { LinearReadCloudDisplayModel } from '../LinearReadCloudDisplay/model'\n\ntype LGV = LinearGenomeViewModel\n\nexport interface ReducedFeature {\n  name: string\n  strand: number\n  refName: string\n  start: number\n  end: number\n  id: string\n  flags: number\n  tlen: number\n  pair_orientation: string\n  next_ref?: string\n  next_pos?: number\n  clipPos: number\n  SA?: string\n}\n\nexport interface ChainStats {\n  max: number\n  min: number\n  upper: number\n  lower: number\n}\n\nexport interface ChainData {\n  chains: ReducedFeature[][]\n  stats?: ChainStats\n}\n\nexport async function fetchChains(\n  self: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel,\n) {\n  // @ts-expect-error\n  const { rpcSessionId: sessionId } = getContainingTrack(self)\n  const { rpcManager } = getSession(self)\n  const view = getContainingView(self) as LGV\n\n  if (!view.initialized || self.error || self.regionTooLarge) {\n    return\n  }\n\n  self.setLoading(true)\n  const ret = (await rpcManager.call(sessionId, 'PileupGetReducedFeatures', {\n    sessionId,\n    regions: view.staticBlocks.contentBlocks,\n    filterBy: getSnapshot(self.filterBy),\n    adapterConfig: self.adapterConfig,\n  })) as ChainData\n\n  self.setChainData(ret)\n  self.setLoading(false)\n}\n"],"names":["doAfterAttach","self","cb","draw","view","canvas","ref","ctx","getContext","chainData","clearRect","width","height","resetTransform","scale","setLastDrawnOffsetPx","offsetPx","setLastDrawnBpPerPx","bpPerPx","createAutorun","async","rpcSessionId","sessionId","getContainingTrack","rpcManager","getSession","getContainingView","initialized","error","regionTooLarge","setLoading","ret","call","regions","staticBlocks","contentBlocks","filterBy","getSnapshot","adapterConfig","setChainData","fetchChains","delay","lastDrawnBpPerPx"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9086.035adaa3.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9086],{59086:i=>{i.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(i){}function n(i,t,n){this.low=0|i,this.high=0|t,this.unsigned=!!n}function h(i){return!0===(i&&i.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=h;var s={},e={};function r(i,t){var n,h,r;return t?(r=0<=(i>>>=0)&&i<256)&&(h=e[i])?h:(n=o(i,(0|i)<0?-1:0,!0),r&&(e[i]=n),n):(r=-128<=(i|=0)&&i<128)&&(h=s[i])?h:(n=o(i,i<0?-1:0,!1),r&&(s[i]=n),n)}function u(i,t){if(isNaN(i))return t?m:v;if(t){if(i<0)return m;if(i>=d)return p}else{if(i<=-w)return _;if(i+1>=w)return y}return i<0?u(-i,t).neg():o(i%a|0,i/a|0,t)}function o(i,t,h){return new n(i,t,h)}n.fromInt=r,n.fromNumber=u,n.fromBits=o;var g=Math.pow;function f(i,t,n){if(0===i.length)throw Error("empty string");if("NaN"===i||"Infinity"===i||"+Infinity"===i||"-Infinity"===i)return v;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||36<n)throw RangeError("radix");var h;if((h=i.indexOf("-"))>0)throw Error("interior hyphen");if(0===h)return f(i.substring(1),t,n).neg();for(var s=u(g(n,8)),e=v,r=0;r<i.length;r+=8){var o=Math.min(8,i.length-r),l=parseInt(i.substring(r,r+o),n);if(o<8){var a=u(g(n,o));e=e.mul(a).add(u(l))}else e=(e=e.mul(s)).add(u(l))}return e.unsigned=t,e}function l(i,t){return"number"==typeof i?u(i,t):"string"==typeof i?f(i,t):o(i.low,i.high,"boolean"==typeof t?t:i.unsigned)}n.fromString=f,n.fromValue=l;var a=4294967296,d=a*a,w=d/2,c=r(1<<24),v=r(0);n.ZERO=v;var m=r(0,!0);n.UZERO=m;var b=r(1);n.ONE=b;var N=r(1,!0);n.UONE=N;var E=r(-1);n.NEG_ONE=E;var y=o(-1,2147483647,!1);n.MAX_VALUE=y;var p=o(-1,-1,!0);n.MAX_UNSIGNED_VALUE=p;var _=o(0,-2147483648,!1);n.MIN_VALUE=_;var q=n.prototype;q.toInt=function(){return this.unsigned?this.low>>>0:this.low},q.toNumber=function(){return this.unsigned?(this.high>>>0)*a+(this.low>>>0):this.high*a+(this.low>>>0)},q.toString=function(i){if((i=i||10)<2||36<i)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(_)){var t=u(i),n=this.div(t),h=n.mul(t).sub(this);return n.toString(i)+h.toInt().toString(i)}return"-"+this.neg().toString(i)}for(var s=u(g(i,6),this.unsigned),e=this,r="";;){var o=e.div(s),f=(e.sub(o.mul(s)).toInt()>>>0).toString(i);if((e=o).isZero())return f+r;for(;f.length<6;)f="0"+f;r=""+f+r}},q.getHighBits=function(){return this.high},q.getHighBitsUnsigned=function(){return this.high>>>0},q.getLowBits=function(){return this.low},q.getLowBitsUnsigned=function(){return this.low>>>0},q.getNumBitsAbs=function(){if(this.isNegative())return this.eq(_)?64:this.neg().getNumBitsAbs();for(var i=0!=this.high?this.high:this.low,t=31;t>0&&!(i&1<<t);t--);return 0!=this.high?t+33:t+1},q.isZero=function(){return 0===this.high&&0===this.low},q.eqz=q.isZero,q.isNegative=function(){return!this.unsigned&&this.high<0},q.isPositive=function(){return this.unsigned||this.high>=0},q.isOdd=function(){return!(1&~this.low)},q.isEven=function(){return!(1&this.low)},q.equals=function(i){return h(i)||(i=l(i)),(this.unsigned===i.unsigned||this.high>>>31!=1||i.high>>>31!=1)&&this.high===i.high&&this.low===i.low},q.eq=q.equals,q.notEquals=function(i){return!this.eq(i)},q.neq=q.notEquals,q.ne=q.notEquals,q.lessThan=function(i){return this.comp(i)<0},q.lt=q.lessThan,q.lessThanOrEqual=function(i){return this.comp(i)<=0},q.lte=q.lessThanOrEqual,q.le=q.lessThanOrEqual,q.greaterThan=function(i){return this.comp(i)>0},q.gt=q.greaterThan,q.greaterThanOrEqual=function(i){return this.comp(i)>=0},q.gte=q.greaterThanOrEqual,q.ge=q.greaterThanOrEqual,q.compare=function(i){if(h(i)||(i=l(i)),this.eq(i))return 0;var t=this.isNegative(),n=i.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?i.high>>>0>this.high>>>0||i.high===this.high&&i.low>>>0>this.low>>>0?-1:1:this.sub(i).isNegative()?-1:1},q.comp=q.compare,q.negate=function(){return!this.unsigned&&this.eq(_)?_:this.not().add(b)},q.neg=q.negate,q.add=function(i){h(i)||(i=l(i));var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,e=65535&this.low,r=i.high>>>16,u=65535&i.high,g=i.low>>>16,f=0,a=0,d=0,w=0;return d+=(w+=e+(65535&i.low))>>>16,a+=(d+=s+g)>>>16,f+=(a+=n+u)>>>16,f+=t+r,o((d&=65535)<<16|(w&=65535),(f&=65535)<<16|(a&=65535),this.unsigned)},q.subtract=function(i){return h(i)||(i=l(i)),this.add(i.neg())},q.sub=q.subtract,q.multiply=function(i){if(this.isZero())return v;if(h(i)||(i=l(i)),t)return o(t.mul(this.low,this.high,i.low,i.high),t.get_high(),this.unsigned);if(i.isZero())return v;if(this.eq(_))return i.isOdd()?_:v;if(i.eq(_))return this.isOdd()?_:v;if(this.isNegative())return i.isNegative()?this.neg().mul(i.neg()):this.neg().mul(i).neg();if(i.isNegative())return this.mul(i.neg()).neg();if(this.lt(c)&&i.lt(c))return u(this.toNumber()*i.toNumber(),this.unsigned);var n=this.high>>>16,s=65535&this.high,e=this.low>>>16,r=65535&this.low,g=i.high>>>16,f=65535&i.high,a=i.low>>>16,d=65535&i.low,w=0,m=0,b=0,N=0;return b+=(N+=r*d)>>>16,m+=(b+=e*d)>>>16,b&=65535,m+=(b+=r*a)>>>16,w+=(m+=s*d)>>>16,m&=65535,w+=(m+=e*a)>>>16,m&=65535,w+=(m+=r*f)>>>16,w+=n*d+s*a+e*f+r*g,o((b&=65535)<<16|(N&=65535),(w&=65535)<<16|(m&=65535),this.unsigned)},q.mul=q.multiply,q.divide=function(i){if(h(i)||(i=l(i)),i.isZero())throw Error("division by zero");var n,s,e;if(t)return this.unsigned||-2147483648!==this.high||-1!==i.low||-1!==i.high?o((this.unsigned?t.div_u:t.div_s)(this.low,this.high,i.low,i.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(i.unsigned||(i=i.toUnsigned()),i.gt(this))return m;if(i.gt(this.shru(1)))return N;e=m}else{if(this.eq(_))return i.eq(b)||i.eq(E)?_:i.eq(_)?b:(n=this.shr(1).div(i).shl(1)).eq(v)?i.isNegative()?b:E:(s=this.sub(i.mul(n)),e=n.add(s.div(i)));if(i.eq(_))return this.unsigned?m:v;if(this.isNegative())return i.isNegative()?this.neg().div(i.neg()):this.neg().div(i).neg();if(i.isNegative())return this.div(i.neg()).neg();e=v}for(s=this;s.gte(i);){n=Math.max(1,Math.floor(s.toNumber()/i.toNumber()));for(var r=Math.ceil(Math.log(n)/Math.LN2),f=r<=48?1:g(2,r-48),a=u(n),d=a.mul(i);d.isNegative()||d.gt(s);)d=(a=u(n-=f,this.unsigned)).mul(i);a.isZero()&&(a=b),e=e.add(a),s=s.sub(d)}return e},q.div=q.divide,q.modulo=function(i){return h(i)||(i=l(i)),t?o((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,i.low,i.high),t.get_high(),this.unsigned):this.sub(this.div(i).mul(i))},q.mod=q.modulo,q.rem=q.modulo,q.not=function(){return o(~this.low,~this.high,this.unsigned)},q.and=function(i){return h(i)||(i=l(i)),o(this.low&i.low,this.high&i.high,this.unsigned)},q.or=function(i){return h(i)||(i=l(i)),o(this.low|i.low,this.high|i.high,this.unsigned)},q.xor=function(i){return h(i)||(i=l(i)),o(this.low^i.low,this.high^i.high,this.unsigned)},q.shiftLeft=function(i){return h(i)&&(i=i.toInt()),0==(i&=63)?this:i<32?o(this.low<<i,this.high<<i|this.low>>>32-i,this.unsigned):o(0,this.low<<i-32,this.unsigned)},q.shl=q.shiftLeft,q.shiftRight=function(i){return h(i)&&(i=i.toInt()),0==(i&=63)?this:i<32?o(this.low>>>i|this.high<<32-i,this.high>>i,this.unsigned):o(this.high>>i-32,this.high>=0?0:-1,this.unsigned)},q.shr=q.shiftRight,q.shiftRightUnsigned=function(i){if(h(i)&&(i=i.toInt()),0==(i&=63))return this;var t=this.high;return i<32?o(this.low>>>i|t<<32-i,t>>>i,this.unsigned):o(32===i?t:t>>>i-32,0,this.unsigned)},q.shru=q.shiftRightUnsigned,q.shr_u=q.shiftRightUnsigned,q.toSigned=function(){return this.unsigned?o(this.low,this.high,!1):this},q.toUnsigned=function(){return this.unsigned?this:o(this.low,this.high,!0)},q.toBytes=function(i){return i?this.toBytesLE():this.toBytesBE()},q.toBytesLE=function(){var i=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&i,i>>>8&255,i>>>16&255,i>>>24]},q.toBytesBE=function(){var i=this.high,t=this.low;return[i>>>24,i>>>16&255,i>>>8&255,255&i,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(i,t,h){return h?n.fromBytesLE(i,t):n.fromBytesBE(i,t)},n.fromBytesLE=function(i,t){return new n(i[0]|i[1]<<8|i[2]<<16|i[3]<<24,i[4]|i[5]<<8|i[6]<<16|i[7]<<24,t)},n.fromBytesBE=function(i,t){return new n(i[4]<<24|i[5]<<16|i[6]<<8|i[7],i[0]<<24|i[1]<<16|i[2]<<8|i[3],t)}}}]);
+//# sourceMappingURL=9086.035adaa3.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9086.035adaa3.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9086.035adaa3.chunk.js","mappings":"sGAAAA,EAAOC,QAAUC,EAKjB,IAAIC,EAAO,KAEX,IACEA,EAAO,IAAIC,YAAYC,SAAS,IAAID,YAAYE,OAAO,IAAIC,WAAW,CACpE,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,MACvnC,CAAC,GAAGN,OACX,CAAE,MAAOO,GAET,CAYA,SAASN,EAAKO,EAAKC,EAAMC,GAMrBC,KAAKH,IAAY,EAANA,EAMXG,KAAKF,KAAc,EAAPA,EAMZE,KAAKD,WAAaA,CACtB,CAmCA,SAASE,EAAOC,GACZ,OAAsC,KAA9BA,GAAOA,EAAgB,WACnC,CAZAZ,EAAKa,UAAUC,WAEfC,OAAOC,eAAehB,EAAKa,UAAW,aAAc,CAAEI,OAAO,IAkB7DjB,EAAKW,OAASA,EAOd,IAAIO,EAAY,CAAC,EAObC,EAAa,CAAC,EAQlB,SAASC,EAAQH,EAAOR,GACpB,IAAIG,EAAKS,EAAWC,EACpB,OAAIb,GAEIa,EAAS,IADbL,KAAW,IACgBA,EAAQ,OAC/BI,EAAYF,EAAWF,IAEZI,GAEfT,EAAMW,EAASN,GAAgB,EAARA,GAAa,GAAK,EAAI,GAAG,GAC5CK,IACAH,EAAWF,GAASL,GACjBA,IAGHU,GAAU,MADdL,GAAS,IACqBA,EAAQ,OAClCI,EAAYH,EAAUD,IAEXI,GAEfT,EAAMW,EAASN,EAAOA,EAAQ,GAAK,EAAI,GAAG,GACtCK,IACAJ,EAAUD,GAASL,GAChBA,EAEf,CAiBA,SAASY,EAAWP,EAAOR,GACvB,GAAIgB,MAAMR,GACN,OAAOR,EAAWiB,EAAQC,EAC9B,GAAIlB,EAAU,CACV,GAAIQ,EAAQ,EACR,OAAOS,EACX,GAAIT,GAASW,EACT,OAAOC,CACf,KAAO,CACH,GAAIZ,IAAUa,EACV,OAAOC,EACX,GAAId,EAAQ,GAAKa,EACb,OAAOE,CACf,CACA,OAAIf,EAAQ,EACDO,GAAYP,EAAOR,GAAUwB,MACjCV,EAAUN,EAAQiB,EAAkB,EAAIjB,EAAQiB,EAAkB,EAAGzB,EAChF,CAkBA,SAASc,EAASY,EAASC,EAAU3B,GACjC,OAAO,IAAIT,EAAKmC,EAASC,EAAU3B,EACvC,CA7CAT,EAAKoB,QAAUA,EAkCfpB,EAAKwB,WAAaA,EAsBlBxB,EAAKuB,SAAWA,EAShB,IAAIc,EAAUC,KAAKC,IASnB,SAASC,EAAWC,EAAKhC,EAAUiC,GAC/B,GAAmB,IAAfD,EAAIE,OACJ,MAAMC,MAAM,gBAChB,GAAY,QAARH,GAAyB,aAARA,GAA8B,cAARA,GAA+B,cAARA,EAC9D,OAAOd,EASX,GARwB,iBAAblB,GAEPiC,EAAQjC,EACRA,GAAW,GAEXA,IAAcA,GAElBiC,EAAQA,GAAS,IACL,GAAK,GAAKA,EAClB,MAAMG,WAAW,SAErB,IAAIC,EACJ,IAAKA,EAAIL,EAAIM,QAAQ,MAAQ,EACzB,MAAMH,MAAM,mBACX,GAAU,IAANE,EACL,OAAON,EAAWC,EAAIO,UAAU,GAAIvC,EAAUiC,GAAOT,MAQzD,IAHA,IAAIgB,EAAezB,EAAWa,EAAQK,EAAO,IAEzCQ,EAASvB,EACJwB,EAAI,EAAGA,EAAIV,EAAIE,OAAQQ,GAAK,EAAG,CACpC,IAAIC,EAAOd,KAAKe,IAAI,EAAGZ,EAAIE,OAASQ,GAChClC,EAAQqC,SAASb,EAAIO,UAAUG,EAAGA,EAAIC,GAAOV,GACjD,GAAIU,EAAO,EAAG,CACV,IAAIG,EAAQ/B,EAAWa,EAAQK,EAAOU,IACtCF,EAASA,EAAOM,IAAID,GAAOE,IAAIjC,EAAWP,GAC9C,MAEIiC,GADAA,EAASA,EAAOM,IAAIP,IACJQ,IAAIjC,EAAWP,GAEvC,CAEA,OADAiC,EAAOzC,SAAWA,EACXyC,CACX,CAmBA,SAASQ,EAAUC,EAAKlD,GACpB,MAAmB,iBAARkD,EACAnC,EAAWmC,EAAKlD,GACR,iBAARkD,EACAnB,EAAWmB,EAAKlD,GAEpBc,EAASoC,EAAIpD,IAAKoD,EAAInD,KAA0B,kBAAbC,EAAyBA,EAAWkD,EAAIlD,SACtF,CAhBAT,EAAKwC,WAAaA,EAyBlBxC,EAAK0D,UAAYA,EAUjB,IAcIxB,EAAiB0B,WAOjBhC,EAAiBM,EAAiBA,EAOlCJ,EAAiBF,EAAiB,EAOlCiC,EAAazC,EA5BI,GAAK,IAkCtBO,EAAOP,EAAQ,GAMnBpB,EAAK2B,KAAOA,EAMZ,IAAID,EAAQN,EAAQ,GAAG,GAMvBpB,EAAK0B,MAAQA,EAMb,IAAIoC,EAAM1C,EAAQ,GAMlBpB,EAAK8D,IAAMA,EAMX,IAAIC,EAAO3C,EAAQ,GAAG,GAMtBpB,EAAK+D,KAAOA,EAMZ,IAAIC,EAAU5C,GAAS,GAMvBpB,EAAKgE,QAAUA,EAMf,IAAIhC,EAAYT,GAAS,EAAc,YAAc,GAMrDvB,EAAKgC,UAAYA,EAMjB,IAAIH,EAAqBN,GAAS,GAAc,GAAc,GAM9DvB,EAAK6B,mBAAqBA,EAM1B,IAAIE,EAAYR,EAAS,GAAG,YAAc,GAM1CvB,EAAK+B,UAAYA,EAMjB,IAAIkC,EAAgBjE,EAAKa,UAMzBoD,EAAcC,MAAQ,WAClB,OAAOxD,KAAKD,SAAWC,KAAKH,MAAQ,EAAIG,KAAKH,GACjD,EAMA0D,EAAcE,SAAW,WACrB,OAAIzD,KAAKD,UACIC,KAAKF,OAAS,GAAK0B,GAAmBxB,KAAKH,MAAQ,GACzDG,KAAKF,KAAO0B,GAAkBxB,KAAKH,MAAQ,EACtD,EASA0D,EAAcG,SAAW,SAAkB1B,GAEvC,IADAA,EAAQA,GAAS,IACL,GAAK,GAAKA,EAClB,MAAMG,WAAW,SACrB,GAAInC,KAAK2D,SACL,MAAO,IACX,GAAI3D,KAAK4D,aAAc,CACnB,GAAI5D,KAAK6D,GAAGxC,GAAY,CAGpB,IAAIyC,EAAYhD,EAAWkB,GACvB+B,EAAM/D,KAAK+D,IAAID,GACfE,EAAOD,EAAIjB,IAAIgB,GAAWG,IAAIjE,MAClC,OAAO+D,EAAIL,SAAS1B,GAASgC,EAAKR,QAAQE,SAAS1B,EACvD,CACI,MAAO,IAAMhC,KAAKuB,MAAMmC,SAAS1B,EACzC,CAOA,IAHA,IAAIO,EAAezB,EAAWa,EAAQK,EAAO,GAAIhC,KAAKD,UAClDmE,EAAMlE,KACNwC,EAAS,KACA,CACT,IAAI2B,EAASD,EAAIH,IAAIxB,GAEjB6B,GADSF,EAAID,IAAIE,EAAOrB,IAAIP,IAAeiB,UAAY,GACvCE,SAAS1B,GAE7B,IADAkC,EAAMC,GACER,SACJ,OAAOS,EAAS5B,EAEhB,KAAO4B,EAAOnC,OAAS,GACnBmC,EAAS,IAAMA,EACnB5B,EAAS,GAAK4B,EAAS5B,CAE/B,CACJ,EAMAe,EAAcc,YAAc,WACxB,OAAOrE,KAAKF,IAChB,EAMAyD,EAAce,oBAAsB,WAChC,OAAOtE,KAAKF,OAAS,CACzB,EAMAyD,EAAcgB,WAAa,WACvB,OAAOvE,KAAKH,GAChB,EAMA0D,EAAciB,mBAAqB,WAC/B,OAAOxE,KAAKH,MAAQ,CACxB,EAMA0D,EAAckB,cAAgB,WAC1B,GAAIzE,KAAK4D,aACL,OAAO5D,KAAK6D,GAAGxC,GAAa,GAAKrB,KAAKuB,MAAMkD,gBAEhD,IADA,IAAIxB,EAAmB,GAAbjD,KAAKF,KAAYE,KAAKF,KAAOE,KAAKH,IACnC6E,EAAM,GAAIA,EAAM,KAChBzB,EAAO,GAAKyB,GADOA,KAG5B,OAAoB,GAAb1E,KAAKF,KAAY4E,EAAM,GAAKA,EAAM,CAC7C,EAMAnB,EAAcI,OAAS,WACnB,OAAqB,IAAd3D,KAAKF,MAA2B,IAAbE,KAAKH,GACnC,EAMA0D,EAAcoB,IAAMpB,EAAcI,OAMlCJ,EAAcK,WAAa,WACvB,OAAQ5D,KAAKD,UAAYC,KAAKF,KAAO,CACzC,EAMAyD,EAAcqB,WAAa,WACvB,OAAO5E,KAAKD,UAAYC,KAAKF,MAAQ,CACzC,EAMAyD,EAAcsB,MAAQ,WAClB,QAA0B,GAAlB7E,KAAKH,IACjB,EAMA0D,EAAcuB,OAAS,WACnB,QAAmB,EAAX9E,KAAKH,IACjB,EAOA0D,EAAcwB,OAAS,SAAgBC,GAGnC,OAFK/E,EAAO+E,KACRA,EAAQhC,EAAUgC,KAClBhF,KAAKD,WAAaiF,EAAMjF,UAAaC,KAAKF,OAAS,IAAQ,GAAMkF,EAAMlF,OAAS,IAAQ,IAErFE,KAAKF,OAASkF,EAAMlF,MAAQE,KAAKH,MAAQmF,EAAMnF,GAC1D,EAQA0D,EAAcM,GAAKN,EAAcwB,OAOjCxB,EAAc0B,UAAY,SAAmBD,GACzC,OAAQhF,KAAK6D,GAAmBmB,EACpC,EAQAzB,EAAc2B,IAAM3B,EAAc0B,UAQlC1B,EAAc4B,GAAK5B,EAAc0B,UAOjC1B,EAAc6B,SAAW,SAAkBJ,GACvC,OAAOhF,KAAKqF,KAAqBL,GAAS,CAC9C,EAQAzB,EAAc+B,GAAK/B,EAAc6B,SAOjC7B,EAAcgC,gBAAkB,SAAyBP,GACrD,OAAOhF,KAAKqF,KAAqBL,IAAU,CAC/C,EAQAzB,EAAciC,IAAMjC,EAAcgC,gBAQlChC,EAAckC,GAAKlC,EAAcgC,gBAOjChC,EAAcmC,YAAc,SAAqBV,GAC7C,OAAOhF,KAAKqF,KAAqBL,GAAS,CAC9C,EAQAzB,EAAcoC,GAAKpC,EAAcmC,YAOjCnC,EAAcqC,mBAAqB,SAA4BZ,GAC3D,OAAOhF,KAAKqF,KAAqBL,IAAU,CAC/C,EAQAzB,EAAcsC,IAAMtC,EAAcqC,mBAQlCrC,EAAcuC,GAAKvC,EAAcqC,mBAQjCrC,EAAcwC,QAAU,SAAiBf,GAGrC,GAFK/E,EAAO+E,KACRA,EAAQhC,EAAUgC,IAClBhF,KAAK6D,GAAGmB,GACR,OAAO,EACX,IAAIgB,EAAUhG,KAAK4D,aACfqC,EAAWjB,EAAMpB,aACrB,OAAIoC,IAAYC,GACJ,GACPD,GAAWC,EACL,EAENjG,KAAKD,SAGFiF,EAAMlF,OAAS,EAAME,KAAKF,OAAS,GAAOkF,EAAMlF,OAASE,KAAKF,MAASkF,EAAMnF,MAAQ,EAAMG,KAAKH,MAAQ,GAAO,EAAI,EAFhHG,KAAKiE,IAAIe,GAAOpB,cAAgB,EAAI,CAGnD,EASAL,EAAc8B,KAAO9B,EAAcwC,QAMnCxC,EAAc2C,OAAS,WACnB,OAAKlG,KAAKD,UAAYC,KAAK6D,GAAGxC,GACnBA,EACJrB,KAAKmG,MAAMpD,IAAIK,EAC1B,EAOAG,EAAchC,IAAMgC,EAAc2C,OAOlC3C,EAAcR,IAAM,SAAaqD,GACxBnG,EAAOmG,KACRA,EAASpD,EAAUoD,IAIvB,IAAIC,EAAMrG,KAAKF,OAAS,GACpBwG,EAAkB,MAAZtG,KAAKF,KACXyG,EAAMvG,KAAKH,MAAQ,GACnB2G,EAAiB,MAAXxG,KAAKH,IAEX4G,EAAML,EAAOtG,OAAS,GACtB4G,EAAoB,MAAdN,EAAOtG,KACb6G,EAAMP,EAAOvG,MAAQ,GAGrB+G,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAYrC,OAVAD,IADAC,GAAOP,GAHgB,MAAbJ,EAAOvG,QAIF,GAGfgH,IADAC,GAAOP,EAAMI,KACE,GAGfC,IADAC,GAAOP,EAAMI,KACE,GAEfE,GAAOP,EAAMI,EAEN5F,GANPiG,GAAO,QAMiB,IATxBC,GAAO,QAQPH,GAAO,QACoC,IAH3CC,GAAO,OAG+C7G,KAAKD,SAC/D,EAOAwD,EAAcyD,SAAW,SAAkBC,GAGvC,OAFKhH,EAAOgH,KACRA,EAAajE,EAAUiE,IACpBjH,KAAK+C,IAAIkE,EAAW1F,MAC/B,EAQAgC,EAAcU,IAAMV,EAAcyD,SAOlCzD,EAAc2D,SAAW,SAAkBC,GACvC,GAAInH,KAAK2D,SACL,OAAO1C,EAKX,GAJKhB,EAAOkH,KACRA,EAAanE,EAAUmE,IAGvB5H,EAKA,OAAOsB,EAJGtB,EAAKuD,IAAI9C,KAAKH,IACLG,KAAKF,KACLqH,EAAWtH,IACXsH,EAAWrH,MACTP,EAAK6H,WAAYpH,KAAKD,UAG/C,GAAIoH,EAAWxD,SACX,OAAO1C,EACX,GAAIjB,KAAK6D,GAAGxC,GACR,OAAO8F,EAAWtC,QAAUxD,EAAYJ,EAC5C,GAAIkG,EAAWtD,GAAGxC,GACd,OAAOrB,KAAK6E,QAAUxD,EAAYJ,EAEtC,GAAIjB,KAAK4D,aACL,OAAIuD,EAAWvD,aACJ5D,KAAKuB,MAAMuB,IAAIqE,EAAW5F,OAE1BvB,KAAKuB,MAAMuB,IAAIqE,GAAY5F,MACnC,GAAI4F,EAAWvD,aAClB,OAAO5D,KAAK8C,IAAIqE,EAAW5F,OAAOA,MAGtC,GAAIvB,KAAKsF,GAAGnC,IAAegE,EAAW7B,GAAGnC,GACrC,OAAOrC,EAAWd,KAAKyD,WAAa0D,EAAW1D,WAAYzD,KAAKD,UAKpE,IAAIsG,EAAMrG,KAAKF,OAAS,GACpBwG,EAAkB,MAAZtG,KAAKF,KACXyG,EAAMvG,KAAKH,MAAQ,GACnB2G,EAAiB,MAAXxG,KAAKH,IAEX4G,EAAMU,EAAWrH,OAAS,GAC1B4G,EAAwB,MAAlBS,EAAWrH,KACjB6G,EAAMQ,EAAWtH,MAAQ,GACzBwH,EAAuB,MAAjBF,EAAWtH,IAEjB+G,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAqBrC,OAnBAD,IADAC,GAAOP,EAAMa,KACE,GAGfR,IADAC,GAAOP,EAAMc,KACE,GACfP,GAAO,MAEPD,IADAC,GAAON,EAAMG,KACE,GAGfC,IADAC,GAAOP,EAAMe,KACE,GACfR,GAAO,MAEPD,IADAC,GAAON,EAAMI,KACE,GACfE,GAAO,MAEPD,IADAC,GAAOL,EAAME,KACE,GAEfE,GAAOP,EAAMgB,EAAMf,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAE1C5F,GAZPiG,GAAO,QAYiB,IAlBxBC,GAAO,QAiBPH,GAAO,QACoC,IAH3CC,GAAO,OAG+C7G,KAAKD,SAC/D,EAQAwD,EAAcT,IAAMS,EAAc2D,SAQlC3D,EAAc+D,OAAS,SAAgBC,GAGnC,GAFKtH,EAAOsH,KACRA,EAAUvE,EAAUuE,IACpBA,EAAQ5D,SACR,MAAMzB,MAAM,oBAaZ,IAWAsF,EAAQtD,EAAKuD,EArBjB,GAAIlI,EAIA,OAAKS,KAAKD,WACS,aAAfC,KAAKF,OACY,IAAjByH,EAAQ1H,MAAgC,IAAlB0H,EAAQzH,KAU3Be,GANIb,KAAKD,SAAWR,EAAKmI,MAAQnI,EAAKoI,OACzC3H,KAAKH,IACLG,KAAKF,KACLyH,EAAQ1H,IACR0H,EAAQzH,MAESP,EAAK6H,WAAYpH,KAAKD,UARhCC,KAWf,GAAIA,KAAK2D,SACL,OAAO3D,KAAKD,SAAWiB,EAAQC,EAEnC,GAAKjB,KAAKD,SA6BH,CAKH,GAFKwH,EAAQxH,WACTwH,EAAUA,EAAQK,cAClBL,EAAQ5B,GAAG3F,MACX,OAAOgB,EACX,GAAIuG,EAAQ5B,GAAG3F,KAAK6H,KAAK,IACrB,OAAOxE,EACXoE,EAAMzG,CACV,KAvCoB,CAGhB,GAAIhB,KAAK6D,GAAGxC,GACR,OAAIkG,EAAQ1D,GAAGT,IAAQmE,EAAQ1D,GAAGP,GACvBjC,EACFkG,EAAQ1D,GAAGxC,GACT+B,GAIPoE,EADexH,KAAK8H,IAAI,GACN/D,IAAIwD,GAASQ,IAAI,IACxBlE,GAAG5C,GACHsG,EAAQ3D,aAAeR,EAAME,GAEpCY,EAAMlE,KAAKiE,IAAIsD,EAAQzE,IAAI0E,IAC3BC,EAAMD,EAAOzE,IAAImB,EAAIH,IAAIwD,KAI9B,GAAIA,EAAQ1D,GAAGxC,GAClB,OAAOrB,KAAKD,SAAWiB,EAAQC,EACnC,GAAIjB,KAAK4D,aACL,OAAI2D,EAAQ3D,aACD5D,KAAKuB,MAAMwC,IAAIwD,EAAQhG,OAC3BvB,KAAKuB,MAAMwC,IAAIwD,GAAShG,MAC5B,GAAIgG,EAAQ3D,aACf,OAAO5D,KAAK+D,IAAIwD,EAAQhG,OAAOA,MACnCkG,EAAMxG,CACV,CAkBA,IADAiD,EAAMlE,KACCkE,EAAI2B,IAAI0B,IAAU,CAGrBC,EAAS5F,KAAKoG,IAAI,EAAGpG,KAAKqG,MAAM/D,EAAIT,WAAa8D,EAAQ9D,aAWzD,IAPA,IAAIyE,EAAOtG,KAAKuG,KAAKvG,KAAKwG,IAAIZ,GAAU5F,KAAKyG,KACzCC,EAASJ,GAAQ,GAAM,EAAIvG,EAAQ,EAAGuG,EAAO,IAI7CK,EAAYzH,EAAW0G,GACvBgB,EAAYD,EAAUzF,IAAIyE,GACvBiB,EAAU5E,cAAgB4E,EAAU7C,GAAGzB,IAG1CsE,GADAD,EAAYzH,EADZ0G,GAAUc,EACqBtI,KAAKD,WACd+C,IAAIyE,GAK1BgB,EAAU5E,WACV4E,EAAYnF,GAEhBqE,EAAMA,EAAI1E,IAAIwF,GACdrE,EAAMA,EAAID,IAAIuE,EAClB,CACA,OAAOf,CACX,EAQAlE,EAAcQ,IAAMR,EAAc+D,OAOlC/D,EAAckF,OAAS,SAAgBlB,GAKnC,OAJKtH,EAAOsH,KACRA,EAAUvE,EAAUuE,IAGpBhI,EAOOsB,GANIb,KAAKD,SAAWR,EAAKmJ,MAAQnJ,EAAKoJ,OACzC3I,KAAKH,IACLG,KAAKF,KACLyH,EAAQ1H,IACR0H,EAAQzH,MAESP,EAAK6H,WAAYpH,KAAKD,UAGxCC,KAAKiE,IAAIjE,KAAK+D,IAAIwD,GAASzE,IAAIyE,GAC1C,EAQAhE,EAAcqF,IAAMrF,EAAckF,OAQlClF,EAAcW,IAAMX,EAAckF,OAMlClF,EAAc4C,IAAM,WAChB,OAAOtF,GAAUb,KAAKH,KAAMG,KAAKF,KAAME,KAAKD,SAChD,EAOAwD,EAAcsF,IAAM,SAAa7D,GAG7B,OAFK/E,EAAO+E,KACRA,EAAQhC,EAAUgC,IACfnE,EAASb,KAAKH,IAAMmF,EAAMnF,IAAKG,KAAKF,KAAOkF,EAAMlF,KAAME,KAAKD,SACvE,EAOAwD,EAAcuF,GAAK,SAAY9D,GAG3B,OAFK/E,EAAO+E,KACRA,EAAQhC,EAAUgC,IACfnE,EAASb,KAAKH,IAAMmF,EAAMnF,IAAKG,KAAKF,KAAOkF,EAAMlF,KAAME,KAAKD,SACvE,EAOAwD,EAAcwF,IAAM,SAAa/D,GAG7B,OAFK/E,EAAO+E,KACRA,EAAQhC,EAAUgC,IACfnE,EAASb,KAAKH,IAAMmF,EAAMnF,IAAKG,KAAKF,KAAOkF,EAAMlF,KAAME,KAAKD,SACvE,EAOAwD,EAAcyF,UAAY,SAAmBC,GAGzC,OAFIhJ,EAAOgJ,KACPA,EAAUA,EAAQzF,SACE,IAAnByF,GAAW,IACLjJ,KACFiJ,EAAU,GACRpI,EAASb,KAAKH,KAAOoJ,EAAUjJ,KAAKF,MAAQmJ,EAAYjJ,KAAKH,MAAS,GAAKoJ,EAAWjJ,KAAKD,UAE3Fc,EAAS,EAAGb,KAAKH,KAAQoJ,EAAU,GAAKjJ,KAAKD,SAC5D,EAQAwD,EAAcwE,IAAMxE,EAAcyF,UAOlCzF,EAAc2F,WAAa,SAAoBD,GAG3C,OAFIhJ,EAAOgJ,KACPA,EAAUA,EAAQzF,SACE,IAAnByF,GAAW,IACLjJ,KACFiJ,EAAU,GACRpI,EAAUb,KAAKH,MAAQoJ,EAAYjJ,KAAKF,MAAS,GAAKmJ,EAAWjJ,KAAKF,MAAQmJ,EAASjJ,KAAKD,UAE5Fc,EAASb,KAAKF,MAASmJ,EAAU,GAAKjJ,KAAKF,MAAQ,EAAI,GAAK,EAAGE,KAAKD,SACnF,EAQAwD,EAAcuE,IAAMvE,EAAc2F,WAOlC3F,EAAc4F,mBAAqB,SAA4BF,GAI3D,GAHIhJ,EAAOgJ,KACPA,EAAUA,EAAQzF,SAEN,IADhByF,GAAW,IAEP,OAAOjJ,KAEP,IAAIF,EAAOE,KAAKF,KAChB,OAAImJ,EAAU,GAEHpI,EADGb,KAAKH,MACUoJ,EAAYnJ,GAAS,GAAKmJ,EAAWnJ,IAASmJ,EAASjJ,KAAKD,UAE9Ec,EADY,KAAZoI,EACSnJ,EAEAA,IAAUmJ,EAAU,GAFd,EAAGjJ,KAAKD,SAI1C,EAQAwD,EAAcsE,KAAOtE,EAAc4F,mBAQnC5F,EAAc6F,MAAQ7F,EAAc4F,mBAMpC5F,EAAc8F,SAAW,WACrB,OAAKrJ,KAAKD,SAEHc,EAASb,KAAKH,IAAKG,KAAKF,MAAM,GAD1BE,IAEf,EAMAuD,EAAcqE,WAAa,WACvB,OAAI5H,KAAKD,SACEC,KACJa,EAASb,KAAKH,IAAKG,KAAKF,MAAM,EACzC,EAOAyD,EAAc+F,QAAU,SAAiB7D,GACrC,OAAOA,EAAKzF,KAAKuJ,YAAcvJ,KAAKwJ,WACxC,EAMAjG,EAAcgG,UAAY,WACtB,IAAIE,EAAKzJ,KAAKF,KACV4J,EAAK1J,KAAKH,IACd,MAAO,CACS,IAAZ6J,EACAA,IAAQ,EAAI,IACZA,IAAO,GAAK,IACZA,IAAO,GACK,IAAZD,EACAA,IAAQ,EAAI,IACZA,IAAO,GAAK,IACZA,IAAO,GAEf,EAMAlG,EAAciG,UAAY,WACtB,IAAIC,EAAKzJ,KAAKF,KACV4J,EAAK1J,KAAKH,IACd,MAAO,CACH4J,IAAO,GACPA,IAAO,GAAK,IACZA,IAAQ,EAAI,IACA,IAAZA,EACAC,IAAO,GACPA,IAAO,GAAK,IACZA,IAAQ,EAAI,IACA,IAAZA,EAER,EASApK,EAAKqK,UAAY,SAAmBC,EAAO7J,EAAU0F,GACjD,OAAOA,EAAKnG,EAAKuK,YAAYD,EAAO7J,GAAYT,EAAKwK,YAAYF,EAAO7J,EAC5E,EAQAT,EAAKuK,YAAc,SAAqBD,EAAO7J,GAC3C,OAAO,IAAIT,EACPsK,EAAM,GACNA,EAAM,IAAO,EACbA,EAAM,IAAM,GACZA,EAAM,IAAM,GACZA,EAAM,GACNA,EAAM,IAAO,EACbA,EAAM,IAAM,GACZA,EAAM,IAAM,GACZ7J,EAER,EAQAT,EAAKwK,YAAc,SAAqBF,EAAO7J,GAC3C,OAAO,IAAIT,EACPsK,EAAM,IAAM,GACZA,EAAM,IAAM,GACZA,EAAM,IAAO,EACbA,EAAM,GACNA,EAAM,IAAM,GACZA,EAAM,IAAM,GACZA,EAAM,IAAO,EACbA,EAAM,GACN7J,EAER,C","sources":["../../../node_modules/long/src/long.js"],"sourcesContent":["module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n  wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n    0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n  ])), {}).exports;\r\n} catch (e) {\r\n  // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n *  See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n    /**\r\n     * The low 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.low = low | 0;\r\n\r\n    /**\r\n     * The high 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.high = high | 0;\r\n\r\n    /**\r\n     * Whether unsigned or not.\r\n     * @type {boolean}\r\n     */\r\n    this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations.  For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative).  Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n    return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n    var obj, cachedObj, cache;\r\n    if (unsigned) {\r\n        value >>>= 0;\r\n        if (cache = (0 <= value && value < 256)) {\r\n            cachedObj = UINT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n        if (cache)\r\n            UINT_CACHE[value] = obj;\r\n        return obj;\r\n    } else {\r\n        value |= 0;\r\n        if (cache = (-128 <= value && value < 128)) {\r\n            cachedObj = INT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n        if (cache)\r\n            INT_CACHE[value] = obj;\r\n        return obj;\r\n    }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n    if (isNaN(value))\r\n        return unsigned ? UZERO : ZERO;\r\n    if (unsigned) {\r\n        if (value < 0)\r\n            return UZERO;\r\n        if (value >= TWO_PWR_64_DBL)\r\n            return MAX_UNSIGNED_VALUE;\r\n    } else {\r\n        if (value <= -TWO_PWR_63_DBL)\r\n            return MIN_VALUE;\r\n        if (value + 1 >= TWO_PWR_63_DBL)\r\n            return MAX_VALUE;\r\n    }\r\n    if (value < 0)\r\n        return fromNumber(-value, unsigned).neg();\r\n    return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n    return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n *  assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n    if (str.length === 0)\r\n        throw Error('empty string');\r\n    if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n        return ZERO;\r\n    if (typeof unsigned === 'number') {\r\n        // For goog.math.long compatibility\r\n        radix = unsigned,\r\n        unsigned = false;\r\n    } else {\r\n        unsigned = !! unsigned;\r\n    }\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n\r\n    var p;\r\n    if ((p = str.indexOf('-')) > 0)\r\n        throw Error('interior hyphen');\r\n    else if (p === 0) {\r\n        return fromString(str.substring(1), unsigned, radix).neg();\r\n    }\r\n\r\n    // Do several (8) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n    var result = ZERO;\r\n    for (var i = 0; i < str.length; i += 8) {\r\n        var size = Math.min(8, str.length - i),\r\n            value = parseInt(str.substring(i, i + size), radix);\r\n        if (size < 8) {\r\n            var power = fromNumber(pow_dbl(radix, size));\r\n            result = result.mul(power).add(fromNumber(value));\r\n        } else {\r\n            result = result.mul(radixToPower);\r\n            result = result.add(fromNumber(value));\r\n        }\r\n    }\r\n    result.unsigned = unsigned;\r\n    return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n    if (typeof val === 'number')\r\n        return fromNumber(val, unsigned);\r\n    if (typeof val === 'string')\r\n        return fromString(val, unsigned);\r\n    // Throws for non-objects, converts non-instanceof Long:\r\n    return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n    return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n    if (this.unsigned)\r\n        return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n    return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n    if (this.isZero())\r\n        return '0';\r\n    if (this.isNegative()) { // Unsigned Longs are never negative\r\n        if (this.eq(MIN_VALUE)) {\r\n            // We need to change the Long value before it can be negated, so we remove\r\n            // the bottom-most digit in this base and then recurse to do the rest.\r\n            var radixLong = fromNumber(radix),\r\n                div = this.div(radixLong),\r\n                rem1 = div.mul(radixLong).sub(this);\r\n            return div.toString(radix) + rem1.toInt().toString(radix);\r\n        } else\r\n            return '-' + this.neg().toString(radix);\r\n    }\r\n\r\n    // Do several (6) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n        rem = this;\r\n    var result = '';\r\n    while (true) {\r\n        var remDiv = rem.div(radixToPower),\r\n            intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n            digits = intval.toString(radix);\r\n        rem = remDiv;\r\n        if (rem.isZero())\r\n            return digits + result;\r\n        else {\r\n            while (digits.length < 6)\r\n                digits = '0' + digits;\r\n            result = '' + digits + result;\r\n        }\r\n    }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n    return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n    return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n    return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n    return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n    if (this.isNegative()) // Unsigned Longs are never negative\r\n        return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n    var val = this.high != 0 ? this.high : this.low;\r\n    for (var bit = 31; bit > 0; bit--)\r\n        if ((val & (1 << bit)) != 0)\r\n            break;\r\n    return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n    return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n    return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n    return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n    return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n    return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n        return false;\r\n    return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n    return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n    return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n    return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.eq(other))\r\n        return 0;\r\n    var thisNeg = this.isNegative(),\r\n        otherNeg = other.isNegative();\r\n    if (thisNeg && !otherNeg)\r\n        return -1;\r\n    if (!thisNeg && otherNeg)\r\n        return 1;\r\n    // At this point the sign bits are the same\r\n    if (!this.unsigned)\r\n        return this.sub(other).isNegative() ? -1 : 1;\r\n    // Both are positive if at least one is unsigned\r\n    return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n    if (!this.unsigned && this.eq(MIN_VALUE))\r\n        return MIN_VALUE;\r\n    return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n    if (!isLong(addend))\r\n        addend = fromValue(addend);\r\n\r\n    // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = addend.high >>> 16;\r\n    var b32 = addend.high & 0xFFFF;\r\n    var b16 = addend.low >>> 16;\r\n    var b00 = addend.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 + b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 + b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 + b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 + b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n    if (!isLong(subtrahend))\r\n        subtrahend = fromValue(subtrahend);\r\n    return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n    if (this.isZero())\r\n        return ZERO;\r\n    if (!isLong(multiplier))\r\n        multiplier = fromValue(multiplier);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = wasm.mul(this.low,\r\n                           this.high,\r\n                           multiplier.low,\r\n                           multiplier.high);\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (multiplier.isZero())\r\n        return ZERO;\r\n    if (this.eq(MIN_VALUE))\r\n        return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n    if (multiplier.eq(MIN_VALUE))\r\n        return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n    if (this.isNegative()) {\r\n        if (multiplier.isNegative())\r\n            return this.neg().mul(multiplier.neg());\r\n        else\r\n            return this.neg().mul(multiplier).neg();\r\n    } else if (multiplier.isNegative())\r\n        return this.mul(multiplier.neg()).neg();\r\n\r\n    // If both longs are small, use float multiplication\r\n    if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n        return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n    // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n    // We can skip products that would overflow.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = multiplier.high >>> 16;\r\n    var b32 = multiplier.high & 0xFFFF;\r\n    var b16 = multiplier.low >>> 16;\r\n    var b00 = multiplier.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 * b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 * b00;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c16 += a00 * b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 * b00;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a16 * b16;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a00 * b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n *  unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n    if (divisor.isZero())\r\n        throw Error('division by zero');\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        // guard against signed division overflow: the largest\r\n        // negative number / -1 would be 1 larger than the largest\r\n        // positive number, due to two's complement.\r\n        if (!this.unsigned &&\r\n            this.high === -0x80000000 &&\r\n            divisor.low === -1 && divisor.high === -1) {\r\n            // be consistent with non-wasm code path\r\n            return this;\r\n        }\r\n        var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (this.isZero())\r\n        return this.unsigned ? UZERO : ZERO;\r\n    var approx, rem, res;\r\n    if (!this.unsigned) {\r\n        // This section is only relevant for signed longs and is derived from the\r\n        // closure library as a whole.\r\n        if (this.eq(MIN_VALUE)) {\r\n            if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n                return MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE\r\n            else if (divisor.eq(MIN_VALUE))\r\n                return ONE;\r\n            else {\r\n                // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n                var halfThis = this.shr(1);\r\n                approx = halfThis.div(divisor).shl(1);\r\n                if (approx.eq(ZERO)) {\r\n                    return divisor.isNegative() ? ONE : NEG_ONE;\r\n                } else {\r\n                    rem = this.sub(divisor.mul(approx));\r\n                    res = approx.add(rem.div(divisor));\r\n                    return res;\r\n                }\r\n            }\r\n        } else if (divisor.eq(MIN_VALUE))\r\n            return this.unsigned ? UZERO : ZERO;\r\n        if (this.isNegative()) {\r\n            if (divisor.isNegative())\r\n                return this.neg().div(divisor.neg());\r\n            return this.neg().div(divisor).neg();\r\n        } else if (divisor.isNegative())\r\n            return this.div(divisor.neg()).neg();\r\n        res = ZERO;\r\n    } else {\r\n        // The algorithm below has not been made for unsigned longs. It's therefore\r\n        // required to take special care of the MSB prior to running it.\r\n        if (!divisor.unsigned)\r\n            divisor = divisor.toUnsigned();\r\n        if (divisor.gt(this))\r\n            return UZERO;\r\n        if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n            return UONE;\r\n        res = UZERO;\r\n    }\r\n\r\n    // Repeat the following until the remainder is less than other:  find a\r\n    // floating-point that approximates remainder / other *from below*, add this\r\n    // into the result, and subtract it from the remainder.  It is critical that\r\n    // the approximate value is less than or equal to the real value so that the\r\n    // remainder never becomes negative.\r\n    rem = this;\r\n    while (rem.gte(divisor)) {\r\n        // Approximate the result of division. This may be a little greater or\r\n        // smaller than the actual value.\r\n        approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n        // We will tweak the approximate result by changing it in the 48-th digit or\r\n        // the smallest non-fractional digit, whichever is larger.\r\n        var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n            delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n        // Decrease the approximation until it is smaller than the remainder.  Note\r\n        // that if it is too large, the product overflows and is negative.\r\n            approxRes = fromNumber(approx),\r\n            approxRem = approxRes.mul(divisor);\r\n        while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n            approx -= delta;\r\n            approxRes = fromNumber(approx, this.unsigned);\r\n            approxRem = approxRes.mul(divisor);\r\n        }\r\n\r\n        // We know the answer can't be zero... and actually, zero would cause\r\n        // infinite recursion since we would make no progress.\r\n        if (approxRes.isZero())\r\n            approxRes = ONE;\r\n\r\n        res = res.add(approxRes);\r\n        rem = rem.sub(approxRem);\r\n    }\r\n    return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n    return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n    else\r\n        return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n    else\r\n        return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    numBits &= 63;\r\n    if (numBits === 0)\r\n        return this;\r\n    else {\r\n        var high = this.high;\r\n        if (numBits < 32) {\r\n            var low = this.low;\r\n            return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n        } else if (numBits === 32)\r\n            return fromBits(high, 0, this.unsigned);\r\n        else\r\n            return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n    }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n    if (!this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n    if (this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n    return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        lo        & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo >>> 16 & 0xff,\r\n        lo >>> 24       ,\r\n        hi        & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi >>> 16 & 0xff,\r\n        hi >>> 24\r\n    ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        hi >>> 24       ,\r\n        hi >>> 16 & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi        & 0xff,\r\n        lo >>> 24       ,\r\n        lo >>> 16 & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo        & 0xff\r\n    ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n    return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[0]       |\r\n        bytes[1] <<  8 |\r\n        bytes[2] << 16 |\r\n        bytes[3] << 24,\r\n        bytes[4]       |\r\n        bytes[5] <<  8 |\r\n        bytes[6] << 16 |\r\n        bytes[7] << 24,\r\n        unsigned\r\n    );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[4] << 24 |\r\n        bytes[5] << 16 |\r\n        bytes[6] <<  8 |\r\n        bytes[7],\r\n        bytes[0] << 24 |\r\n        bytes[1] << 16 |\r\n        bytes[2] <<  8 |\r\n        bytes[3],\r\n        unsigned\r\n    );\r\n};\r\n"],"names":["module","exports","Long","wasm","WebAssembly","Instance","Module","Uint8Array","e","low","high","unsigned","this","isLong","obj","prototype","__isLong__","Object","defineProperty","value","INT_CACHE","UINT_CACHE","fromInt","cachedObj","cache","fromBits","fromNumber","isNaN","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","Math","pow","fromString","str","radix","length","Error","RangeError","p","indexOf","substring","radixToPower","result","i","size","min","parseInt","power","mul","add","fromValue","val","TWO_PWR_16_DBL","TWO_PWR_24","ONE","UONE","NEG_ONE","LongPrototype","toInt","toNumber","toString","isZero","isNegative","eq","radixLong","div","rem1","sub","rem","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","eqz","isPositive","isOdd","isEven","equals","other","notEquals","neq","ne","lessThan","comp","lt","lessThanOrEqual","lte","le","greaterThan","gt","greaterThanOrEqual","gte","ge","compare","thisNeg","otherNeg","negate","not","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","get_high","b00","divide","divisor","approx","res","div_u","div_s","toUnsigned","shru","shr","shl","max","floor","log2","ceil","log","LN2","delta","approxRes","approxRem","modulo","rem_u","rem_s","mod","and","or","xor","shiftLeft","numBits","shiftRight","shiftRightUnsigned","shr_u","toSigned","toBytes","toBytesLE","toBytesBE","hi","lo","fromBytes","bytes","fromBytesLE","fromBytesBE"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9088.9fbbeb5c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9088],{49088:(e,a,c)=>{c.d(a,{makeImageData:()=>M});var n=c(99546),t=c(68584),d=c(3496),r=c(87485),b=c(20314),o=c(61300),f=c(90493),i=c(6219),u=c(45824),l=c(35873);function s(){var e,a,c,n,t,d=0,r=1,i=f.D_,u=!1;function l(a){return null==a||isNaN(a=+a)?t:i(0===c?.5:(a=(n(a)-e)*c,u?Math.max(0,Math.min(1,a)):a))}function s(e){return function(a){var c,n;return arguments.length?([c,n]=a,i=e(c,n),l):[i(0),i(1)]}}return l.domain=function(t){return arguments.length?([d,r]=t,e=n(d=+d),a=n(r=+r),c=e===a?0:1/(a-e),l):[d,r]},l.clamp=function(e){return arguments.length?(u=!!e,l):u},l.interpolator=function(e){return arguments.length?(i=e,l):i},l.range=s(b.A),l.rangeRound=s(o.A),l.unknown=function(e){return arguments.length?(t=e,l):t},function(t){return n=t,e=t(d),a=t(r),c=e===a?0:1/(a-e),l}}function g(e,a){return a.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function h(){var e=(0,u.C)(s()(f.D_));return e.copy=function(){return g(e,h())},i.K.apply(e,arguments)}function m(){var e=(0,l.g)(s()).domain([1,10]);return e.copy=function(){return g(e,m()).base(e.base())},i.K.apply(e,arguments)}var p=c(20095);const w=function(e){const a=e.length;return function(c){return e[Math.max(0,Math.min(a-1,Math.floor(c*a)))]}}(function(e){const a=new Array(256);let c=0;for(;c<256;)a[c]=`#${e.slice(6*c,6*++c)}`;return a}("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));async function M(e,a){const{features:c,config:b,bpPerPx:o,signal:f,resolution:i,sessionId:u,adapterConfig:l,useLogScale:s,colorScheme:g,regions:M,pluginManager:k}=a,v=M[0],{dataAdapter:x}=await(0,d.cK)(k,u,l),C=await x.getResolution(o/i),y=(v.end-v.start)/o,j=C/(o*Math.sqrt(2)),D=(0,r.M)((0,t.readConfObject)(b,"baseColor")),P=Math.floor(v.start/C);if(c.length){let a=0,d=0,r=0;await(0,n.abortBreakPoint)(f);for(const{bin1:e,bin2:n,counts:t}of c)a=Math.max(t,a),d=Math.min(Math.min(e,n),d),r=Math.max(Math.max(e,n),r);await(0,n.abortBreakPoint)(f);const o={juicebox:["rgba(0,0,0,0)","red"],fall:(0,p.Ik)(["rgb(255, 255, 255)","rgb(255, 255, 204)","rgb(255, 237, 160)","rgb(254, 217, 118)","rgb(254, 178, 76)","rgb(253, 141, 60)","rgb(252, 78, 42)","rgb(227, 26, 28)","rgb(189, 0, 38)","rgb(128, 0, 38)","rgb(0, 0, 0)"]),viridis:w},i=s?a:a/20,u=o[g]||o.juicebox,l=s?m(u).domain([1,i]):h(u).domain([0,i]);e.save(),!0===v.reversed&&(e.scale(-1,1),e.translate(-y,0)),e.rotate(-Math.PI/4);let M=Date.now();for(const{bin1:d,bin2:r,counts:o}of c)e.fillStyle=(0,t.readConfObject)(b,"color",{count:o,maxScore:a,baseColor:D,scale:l,useLogScale:s}),e.fillRect((d-P)*j,(r-P)*j,j,j),+Date.now()-M>400&&(await(0,n.abortBreakPoint)(f),M=+Date.now());e.restore()}}}}]);
+//# sourceMappingURL=9088.9fbbeb5c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9088.9fbbeb5c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9088.9fbbeb5c.chunk.js","mappings":"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","sources":["../../../node_modules/d3-scale/src/sequential.js","../../../plugins/hic/src/HicRenderer/viridis.ts","../../../plugins/hic/src/HicRenderer/makeImageData.ts"],"sourcesContent":["import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","// @ts-nocheck\n// vendored from\n// https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/viridis.js,\n// license reproduced below\n//\n// Copyright 2010-2024 Mike Bostock\n\n// Permission to use, copy, modify, and/or distribute this software for any purpose\n// with or without fee is hereby granted, provided that the above copyright notice\n// and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n// THIS SOFTWARE.\nfunction colors(specifier) {\n  const n = (specifier.length / 6) | 0\n  const colors = new Array(n)\n  let i = 0\n  while (i < n) {\n    colors[i] = `#${specifier.slice(i * 6, ++i * 6)}`\n  }\n  return colors\n}\n\nfunction ramp(range) {\n  const n = range.length\n  return function (t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]\n  }\n}\n\nexport default ramp(\n  colors(\n    '44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725',\n  ),\n)\n","import { RenderArgs as ServerSideRenderArgs } from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType'\nimport { Region } from '@jbrowse/core/util/types'\nimport { abortBreakPoint } from '@jbrowse/core/util'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { colord } from '@jbrowse/core/util/colord'\nimport {\n  scaleSequential,\n  scaleSequentialLog,\n} from '@mui/x-charts-vendor/d3-scale'\nimport { interpolateRgbBasis } from '@mui/x-charts-vendor/d3-interpolate'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport interpolateViridis from './viridis'\nimport { RenderArgsDeserializedWithFeatures } from './HicRenderer'\n\ninterface HicDataAdapter extends BaseFeatureDataAdapter {\n  getResolution: (bp: number) => Promise<number>\n}\n\nexport interface RenderArgs extends ServerSideRenderArgs {\n  regions: Region[]\n}\n\nexport async function makeImageData(\n  ctx: CanvasRenderingContext2D,\n  props: RenderArgsDeserializedWithFeatures & { pluginManager: PluginManager },\n) {\n  const {\n    features,\n    config,\n    bpPerPx,\n    signal,\n    resolution,\n    sessionId,\n    adapterConfig,\n    useLogScale,\n    colorScheme,\n    regions,\n    pluginManager,\n  } = props\n  const region = regions[0]!\n  const { dataAdapter } = await getAdapter(\n    pluginManager,\n    sessionId,\n    adapterConfig,\n  )\n  const res = await (dataAdapter as HicDataAdapter).getResolution(\n    bpPerPx / resolution,\n  )\n\n  const width = (region.end - region.start) / bpPerPx\n  const w = res / (bpPerPx * Math.sqrt(2))\n  const baseColor = colord(readConfObject(config, 'baseColor'))\n  const offset = Math.floor(region.start / res)\n  if (features.length) {\n    let maxScore = 0\n    let minBin = 0\n    let maxBin = 0\n    await abortBreakPoint(signal)\n    for (const { bin1, bin2, counts } of features) {\n      maxScore = Math.max(counts, maxScore)\n      minBin = Math.min(Math.min(bin1, bin2), minBin)\n      maxBin = Math.max(Math.max(bin1, bin2), maxBin)\n    }\n    await abortBreakPoint(signal)\n    const colorSchemes = {\n      juicebox: ['rgba(0,0,0,0)', 'red'],\n      fall: interpolateRgbBasis([\n        'rgb(255, 255, 255)',\n        'rgb(255, 255, 204)',\n        'rgb(255, 237, 160)',\n        'rgb(254, 217, 118)',\n        'rgb(254, 178, 76)',\n        'rgb(253, 141, 60)',\n        'rgb(252, 78, 42)',\n        'rgb(227, 26, 28)',\n        'rgb(189, 0, 38)',\n        'rgb(128, 0, 38)',\n        'rgb(0, 0, 0)',\n      ]),\n      viridis: interpolateViridis,\n    }\n    const m = useLogScale ? maxScore : maxScore / 20\n\n    // @ts-expect-error\n    const x1 = colorSchemes[colorScheme] || colorSchemes.juicebox\n    const scale = useLogScale\n      ? scaleSequentialLog(x1).domain([1, m])\n      : scaleSequential(x1).domain([0, m])\n    ctx.save()\n\n    if (region.reversed === true) {\n      ctx.scale(-1, 1)\n      ctx.translate(-width, 0)\n    }\n    ctx.rotate(-Math.PI / 4)\n    let start = Date.now()\n    for (const { bin1, bin2, counts } of features) {\n      ctx.fillStyle = readConfObject(config, 'color', {\n        count: counts,\n        maxScore,\n        baseColor,\n        scale,\n        useLogScale,\n      })\n      ctx.fillRect((bin1 - offset) * w, (bin2 - offset) * w, w, w)\n      if (+Date.now() - start > 400) {\n        await abortBreakPoint(signal)\n        start = +Date.now()\n      }\n    }\n    ctx.restore()\n  }\n  return undefined\n}\n"],"names":["transformer","t0","t1","k10","transform","unknown","x0","x1","interpolator","clamp","scale","x","isNaN","Math","max","min","range","interpolate","_","r0","r1","arguments","length","domain","rangeRound","t","copy","source","target","sequential","linear","init","apply","sequentialLog","log","base","n","floor","specifier","colors","Array","i","slice","async","makeImageData","ctx","props","features","config","bpPerPx","signal","resolution","sessionId","adapterConfig","useLogScale","colorScheme","regions","pluginManager","region","dataAdapter","getAdapter","res","getResolution","width","end","start","w","sqrt","baseColor","colord","readConfObject","offset","maxScore","minBin","maxBin","abortBreakPoint","bin1","bin2","counts","colorSchemes","juicebox","fall","interpolateRgbBasis","viridis","interpolateViridis","m","scaleSequentialLog","scaleSequential","save","reversed","translate","rotate","PI","Date","now","fillStyle","count","fillRect","restore"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9106.b274c701.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9106],{25762:(e,t,o)=>{o.d(t,{A:()=>s});var n=o(74893),r=o(69500);const s=(0,n.A)((0,r.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},1773:(e,t,o)=>{o.d(t,{A:()=>p});var n=o(7552),r=o(93878),s=o(70799),a=o(51148),i=o(4785),l=o(943),d=o(50885),c=o(69500);const u=(0,a.Ay)(l.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),p=n.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCard"}),{className:n,raised:a=!1,...l}=o,p={...o,raised:a},m=(e=>{const{classes:t}=e;return(0,s.A)({root:["root"]},d.T,t)})(p);return(0,c.jsx)(u,{className:(0,r.A)(m.root,n),elevation:a?8:void 0,ref:t,ownerState:p,...l})}))},50885:(e,t,o)=>{o.d(t,{A:()=>a,T:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiCard",e)}const a=(0,n.A)("MuiCard",["root"])},25355:(e,t,o)=>{o.d(t,{A:()=>u});var n=o(7552),r=o(93878),s=o(70799),a=o(51148),i=o(4785),l=o(61823),d=o(69500);const c=(0,a.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:16,"&:last-child":{paddingBottom:24}}),u=n.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiCardContent"}),{className:n,component:a="div",...u}=o,p={...o,component:a},m=(e=>{const{classes:t}=e;return(0,s.A)({root:["root"]},l.h,t)})(p);return(0,d.jsx)(c,{as:a,className:(0,r.A)(m.root,n),ownerState:p,ref:t,...u})}))},61823:(e,t,o)=>{o.d(t,{A:()=>a,h:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiCardContent",e)}const a=(0,n.A)("MuiCardContent",["root"])},87731:(e,t,o)=>{o.d(t,{A:()=>f});var n=o(7552),r=o(93878),s=o(72639),a=o(70799),i=o(91527),l=o(15622),d=o(51148),c=o(48231),u=o(60129),p=o(58520),m=o(4785),A=o(36715),v=o(58161),y=o(39995);const b=({theme:e,ownerState:t})=>{const o=t.color,n=(0,y.Yn)(e,`palette.${o}`,!1)||t.color,r=(0,y.Yn)(e,`palette.${o}Channel`);return"vars"in e&&r?`rgba(${r} / 0.4)`:(0,s.X4)(n,.4)};var g=o(69500);const h={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},x=(0,d.Ay)(A.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`underline${(0,l.A)(o.underline)}`],"button"===o.component&&t.button]}})((0,u.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:t})=>"always"===e&&"inherit"!==t.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,p.A)()).map((([t])=>({props:{underline:"always",color:t},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.4)`:(0,s.X4)(e.palette[t].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,s.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,s.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${v.A.focusVisible}`]:{outline:"auto"}}}]})))),f=n.forwardRef((function(e,t){const o=(0,m.b)({props:e,name:"MuiLink"}),s=(0,c.A)(),{className:d,color:u="primary",component:p="a",onBlur:A,onFocus:y,TypographyClasses:f,underline:w="always",variant:S="inherit",sx:C,...M}=o,[I,L]=n.useState(!1),R={...o,color:u,component:p,focusVisible:I,underline:w,variant:S},k=(e=>{const{classes:t,component:o,focusVisible:n,underline:r}=e,s={root:["root",`underline${(0,l.A)(r)}`,"button"===o&&"button",n&&"focusVisible"]};return(0,a.A)(s,v.t,t)})(R);return(0,g.jsx)(x,{color:u,className:(0,r.A)(k.root,d),classes:f,component:p,onBlur:e=>{(0,i.A)(e.target)||L(!1),A&&A(e)},onFocus:e=>{(0,i.A)(e.target)&&L(!0),y&&y(e)},ref:t,ownerState:R,variant:S,...M,sx:[...void 0===h[u]?[{color:u}]:[],...Array.isArray(C)?C:[C]],style:{...M.style,..."always"===w&&"inherit"!==u&&!h[u]&&{"--Link-underlineColor":b({theme:s,ownerState:R})}}})}))},58161:(e,t,o)=>{o.d(t,{A:()=>a,t:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiLink",e)}const a=(0,n.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])},45331:(e,t,o)=>{o.d(t,{Ay:()=>h});var n=o(7552),r=o(93878),s=o(70799),a=o(23879),i=o(51148),l=o(60129),d=o(4785),c=o(3755),u=o(51584),p=o(57406),m=o(74823),A=o(2451),v=o(77999),y=o(69500);const b=(0,i.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.dense&&t.dense,"flex-start"===o.alignItems&&t.alignItemsFlexStart,o.divider&&t.divider,!o.disableGutters&&t.gutters,!o.disablePadding&&t.padding,o.hasSecondaryAction&&t.secondaryAction]}})((0,l.A)((({theme:e})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>!e.disablePadding&&e.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:e})=>!e.disablePadding&&!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>!e.disablePadding&&!!e.secondaryAction,style:{paddingRight:48}},{props:({ownerState:e})=>!!e.secondaryAction,style:{[`& > .${A.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>e.button,style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:e})=>e.hasSecondaryAction,style:{paddingRight:48}}]})))),g=(0,i.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),h=n.forwardRef((function(e,t){const o=(0,d.b)({props:e,name:"MuiListItem"}),{alignItems:i="center",children:l,className:A,component:h,components:x={},componentsProps:f={},ContainerComponent:w="li",ContainerProps:{className:S,...C}={},dense:M=!1,disableGutters:I=!1,disablePadding:L=!1,divider:R=!1,secondaryAction:k,slotProps:j={},slots:N={},...P}=o,G=n.useContext(p.A),D=n.useMemo((()=>({dense:M||G.dense||!1,alignItems:i,disableGutters:I})),[i,G.dense,M,I]),$=n.useRef(null),B=n.Children.toArray(l),T=B.length&&(0,c.A)(B[B.length-1],["ListItemSecondaryAction"]),V={...o,alignItems:i,dense:D.dense,disableGutters:I,disablePadding:L,divider:R,hasSecondaryAction:T},F=(e=>{const{alignItems:t,classes:o,dense:n,disableGutters:r,disablePadding:a,divider:i,hasSecondaryAction:l}=e,d={root:["root",n&&"dense",!r&&"gutters",!a&&"padding",i&&"divider","flex-start"===t&&"alignItemsFlexStart",l&&"secondaryAction"],container:["container"]};return(0,s.A)(d,m._,o)})(V),_=(0,u.A)($,t),z=N.root||x.Root||b,H=j.root||f.root||{},X={className:(0,r.A)(F.root,H.className,A),...P};let Y=h||"li";return T?(Y=X.component||h?Y:"div","li"===w&&("li"===Y?Y="div":"li"===X.component&&(X.component="div")),(0,y.jsx)(p.A.Provider,{value:D,children:(0,y.jsxs)(g,{as:w,className:(0,r.A)(F.container,S),ref:_,ownerState:V,...C,children:[(0,y.jsx)(z,{...H,...!(0,a.A)(z)&&{as:Y,ownerState:{...V,...H.ownerState}},...X,children:B}),B.pop()]})})):(0,y.jsx)(p.A.Provider,{value:D,children:(0,y.jsxs)(z,{...H,as:Y,ref:_,...!(0,a.A)(z)&&{ownerState:{...V,...H.ownerState}},...X,children:[B,k&&(0,y.jsx)(v.A,{children:k})]})})}))},74823:(e,t,o)=>{o.d(t,{A:()=>a,_:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItem",e)}const a=(0,n.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"])},2451:(e,t,o)=>{o.d(t,{A:()=>a,Y:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItemButton",e)}const a=(0,n.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},77999:(e,t,o)=>{o.d(t,{A:()=>m});var n=o(7552),r=o(93878),s=o(70799),a=o(51148),i=o(4785),l=o(57406),d=o(87739),c=o(69500);const u=(0,a.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:e})=>e.disableGutters,style:{right:0}}]}),p=n.forwardRef((function(e,t){const o=(0,i.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:a,...p}=o,m=n.useContext(l.A),A={...o,disableGutters:m.disableGutters},v=(e=>{const{disableGutters:t,classes:o}=e,n={root:["root",t&&"disableGutters"]};return(0,s.A)(n,d.g,o)})(A);return(0,c.jsx)(u,{className:(0,r.A)(v.root,a),ownerState:A,ref:t,...p})}));p.muiName="ListItemSecondaryAction";const m=p},87739:(e,t,o)=>{o.d(t,{A:()=>a,g:()=>s});var n=o(33761),r=o(85693);function s(e){return(0,r.Ay)("MuiListItemSecondaryAction",e)}const a=(0,n.A)("MuiListItemSecondaryAction",["root","disableGutters"])}}]);
+//# sourceMappingURL=9106.b274c701.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9106.b274c701.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9106.b274c701.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/icons-material/esm/Delete.js","../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js","../../../node_modules/@mui/material/CardContent/CardContent.js","../../../node_modules/@mui/material/CardContent/cardContentClasses.js","../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 16,\n  '&:last-child': {\n    paddingBottom: 24\n  }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport isHostComponent from \"../utils/isHostComponent.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemUtilityClass } from \"./listItemClasses.js\";\nimport { listItemButtonClasses } from \"../ListItemButton/index.js\";\nimport ListItemSecondaryAction from \"../ListItemSecondaryAction/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding,\n    style: {\n      paddingTop: 8,\n      paddingBottom: 8\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && ownerState.dense,\n    style: {\n      paddingTop: 4,\n      paddingBottom: 4\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !ownerState.disableGutters,\n    style: {\n      paddingLeft: 16,\n      paddingRight: 16\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !ownerState.disablePadding && !!ownerState.secondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => !!ownerState.secondaryAction,\n    style: {\n      [`& > .${listItemButtonClasses.root}`]: {\n        paddingRight: 48\n      }\n    }\n  }, {\n    props: {\n      alignItems: 'flex-start'\n    },\n    style: {\n      alignItems: 'flex-start'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.divider,\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      backgroundClip: 'padding-box'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.button,\n    style: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (theme.vars || theme).palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.hasSecondaryAction,\n    style: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positioned.\n      paddingRight: 48\n    }\n  }]\n})));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n    alignItems = 'center',\n    children: childrenProp,\n    className,\n    component: componentProp,\n    components = {},\n    componentsProps = {},\n    ContainerComponent = 'li',\n    ContainerProps: {\n      className: ContainerClassName,\n      ...ContainerProps\n    } = {},\n    dense = false,\n    disableGutters = false,\n    disablePadding = false,\n    divider = false,\n    secondaryAction,\n    slotProps = {},\n    slots = {},\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = {\n    ...props,\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = {\n    className: clsx(classes.root, rootProps.className, className),\n    ...other\n  };\n  let Component = componentProp || 'li';\n\n  // v4 implementation, deprecated in v6, will be removed in v7\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, {\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState,\n        ...ContainerProps,\n        children: [/*#__PURE__*/_jsx(Root, {\n          ...rootProps,\n          ...(!isHostComponent(Root) && {\n            as: Component,\n            ownerState: {\n              ...ownerState,\n              ...rootProps.ownerState\n            }\n          }),\n          ...componentProps,\n          children: children\n        }), children.pop()]\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, {\n      ...rootProps,\n      as: Component,\n      ref: handleRef,\n      ...(!isHostComponent(Root) && {\n        ownerState: {\n          ...ownerState,\n          ...rootProps.ownerState\n        }\n      }),\n      ...componentProps,\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated Use the `component` or `slots.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated Use the `slotProps.root` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'dense', 'alignItemsFlexStart', 'divider', 'gutters', 'padding', 'secondaryAction']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"../List/ListContext.js\";\nimport { getListItemSecondaryActionClassesUtilityClass } from \"./listItemSecondaryActionClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)',\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.disableGutters,\n    style: {\n      right: 0\n    }\n  }]\n});\n\n/**\n * Must be used as the last child of ListItem to function properly.\n *\n * @deprecated Use the `secondaryAction` prop in the `ListItem` component instead. This component will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n    className,\n    ...other\n  } = props;\n  const context = React.useContext(ListContext);\n  const ownerState = {\n    ...props,\n    disableGutters: context.disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;"],"names":["d","CardRoot","name","slot","overridesResolver","props","styles","root","overflow","inProps","ref","className","raised","other","ownerState","classes","useUtilityClasses","elevation","undefined","getCardUtilityClass","CardContentRoot","padding","paddingBottom","component","as","getCardContentUtilityClass","theme","transformedColor","color","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","Typography","capitalize","underline","button","memoTheme","variants","style","textDecoration","textDecorationColor","Object","entries","palette","filter","createSimplePaletteValueFilter","map","vars","mainChannel","main","text","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","margin","borderRadius","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","useTheme","onBlur","onFocus","TypographyClasses","variant","sx","setFocusVisible","slots","composeClasses","clsx","event","isFocusVisible","target","Array","isArray","getLinkUtilityClass","ListItemRoot","dense","alignItems","alignItemsFlexStart","divider","disableGutters","gutters","disablePadding","hasSecondaryAction","secondaryAction","display","justifyContent","width","boxSizing","textAlign","paddingTop","paddingLeft","paddingRight","borderBottom","backgroundClip","transition","transitions","create","duration","shortest","action","hover","ListItemContainer","container","children","childrenProp","componentProp","components","componentsProps","ContainerComponent","ContainerProps","ContainerClassName","slotProps","context","childContext","listItemRef","toArray","length","handleRef","Root","rootProps","componentProps","Component","Provider","value","pop","getListItemUtilityClass","getListItemButtonUtilityClass","ListItemSecondaryActionRoot","right","top","transform","ListItemSecondaryAction","g","muiName","getListItemSecondaryActionClassesUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9114.d412d44e.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9114],{9114:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var n=a(7552),l=a(68984),r=a(99546),i=a(36715),s=a(87731);const u=(0,n.lazy)((()=>a.e(5930).then(a.bind(a,45930)))),o=(0,n.lazy)((()=>a.e(457).then(a.bind(a,80457))));function m({model:e,feature:t,viewType:a}){const l=(0,r.getSession)(e),m={uniqueId:t.uniqueId,refName:t.refName,start:t.start,end:t.end,strand:t.strand},d={uniqueId:`${t.id}-mate`,refName:t.next_ref,start:t.next_pos,end:t.next_pos+1,strand:t.strand};return n.createElement("div",null,n.createElement(i.A,null,"Launch split view"),n.createElement("ul",null,n.createElement("li",null,m.refName,":",(0,r.toLocale)(m.start)," -> ",d.refName,":",(0,r.toLocale)(d.start)," ",n.createElement(s.A,{href:"#",onClick:t=>{t.preventDefault(),l.queueDialog((t=>[u,{handleClose:t,model:e,feature:new r.SimpleFeature({...m,mate:d}),viewType:a,view:e.view,assemblyName:e.view.displayedRegions[0].assemblyName}]))}},"(top/bottom)")," ",n.createElement(s.A,{href:"#",onClick:t=>{t.preventDefault(),l.queueDialog((t=>[o,{handleClose:t,model:e,feature:new r.SimpleFeature({...m,mate:d}),viewType:a,view:e.view,assemblyName:e.view.displayedRegions[0].assemblyName}]))}},"(single row)"))))}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},d.apply(null,arguments)}function c(e){const{model:t,feature:a}=e,i=(0,r.getSession)(t),{pluginManager:s}=(0,r.getEnv)(i);let u;try{u=s.getViewType("BreakpointSplitView")}catch(e){}return n.createElement(l.BaseCard,d({},e,{title:"Supplementary alignments"}),u?n.createElement(m,{viewType:u,model:t,feature:a}):null)}}}]);
+//# sourceMappingURL=9114.d412d44e.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9114.d412d44e.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9114.d412d44e.chunk.js","mappings":"gNAcA,MAAMA,GAAiCC,EAAAA,EAAAA,OACrC,IAAM,kCAEFC,GAAkCD,EAAAA,EAAAA,OACtC,IAAM,iCAGO,SAASE,GAAwC,MAC9DC,EAAK,QACLC,EAAO,SACPC,IAMA,MAAMC,GAAUC,EAAAA,EAAAA,YAAWJ,GACrBK,EAAK,CACTC,SAAUL,EAAQK,SAClBC,QAASN,EAAQM,QACjBC,MAAOP,EAAQO,MACfC,IAAKR,EAAQQ,IACbC,OAAQT,EAAQS,QAEZC,EAAK,CACTL,SAAU,GAAGL,EAAQW,UACrBL,QAASN,EAAQY,SACjBL,MAAOP,EAAQa,SACfL,IAAMR,EAAQa,SAAsB,EACpCJ,OAAQT,EAAQS,QAElB,OACEK,EAAAA,cAAA,WACEA,EAAAA,cAACC,EAAAA,EAAU,KAAC,qBACZD,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACGV,EAAGE,QAAQ,KAAEU,EAAAA,EAAAA,UAASZ,EAAGG,OAAO,OAAQG,EAAGJ,QAAQ,KACnDU,EAAAA,EAAAA,UAASN,EAAGH,OAAQ,IACrBO,EAAAA,cAACG,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,IACPA,EAAMC,iBACNnB,EAAQoB,aAAYC,GAAe,CACjC5B,EACA,CACE4B,cACAxB,QACAC,QAAS,IAAIwB,EAAAA,cAAc,IAAKpB,EAAIqB,KAAMf,IAE1CT,WACAyB,KAAM3B,EAAM2B,KACZC,aAAc5B,EAAM2B,KAAKE,iBAAiB,GAAGD,gBAE/C,GAEL,gBAEO,IACRb,EAAAA,cAACG,EAAAA,EAAI,CACHC,KAAK,IACLC,QAASC,IACPA,EAAMC,iBACNnB,EAAQoB,aAAYC,GAAe,CACjC1B,EACA,CACE0B,cACAxB,QACAC,QAAS,IAAIwB,EAAAA,cAAc,IAAKpB,EAAIqB,KAAMf,IAE1CT,WACAyB,KAAM3B,EAAM2B,KACZC,aAAc5B,EAAM2B,KAAKE,iBAAiB,GAAGD,gBAE/C,GAEL,kBAOX,C,wNCvFe,SAASE,EAAeC,GAIrC,MAAM,MAAE/B,EAAK,QAAEC,GAAY8B,EACrB5B,GAAUC,EAAAA,EAAAA,YAAWJ,IACrB,cAAEgC,IAAkBC,EAAAA,EAAAA,QAAO9B,GACjC,IAAID,EAEJ,IACEA,EAAW8B,EAAcE,YAAY,sBACvC,CAAE,MAAOC,GACP,CAGF,OACEpB,EAAAA,cAACqB,EAAAA,SAAQC,EAAA,GAAKN,EAAK,CAAEO,MAAM,6BACxBpC,EACCa,EAAAA,cAAChB,EAAuC,CACtCG,SAAUA,EACVF,MAAOA,EACPC,QAASA,IAET,KAGV,C","sources":["../../../plugins/alignments/src/AlignmentsFeatureDetail/LaunchPairedEndBreakpointSplitViewPanel.tsx","../../../plugins/alignments/src/AlignmentsFeatureDetail/LinkedPairedAlignments.tsx"],"sourcesContent":["import React, { lazy } from 'react'\nimport { Typography, Link } from '@mui/material'\nimport {\n  SimpleFeature,\n  SimpleFeatureSerialized,\n  getSession,\n  toLocale,\n} from '@jbrowse/core/util'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\n\n// lazies\nconst BreakendMultiLevelOptionDialog = lazy(\n  () => import('./BreakendMultiLevelOptionDialog'),\n)\nconst BreakendSingleLevelOptionDialog = lazy(\n  () => import('./BreakendSingleLevelOptionDialog'),\n)\n\nexport default function LaunchPairedEndBreakpointSplitViewPanel({\n  model,\n  feature,\n  viewType,\n}: {\n  model: AlignmentFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n  viewType: ViewType\n}) {\n  const session = getSession(model)\n  const f1 = {\n    uniqueId: feature.uniqueId,\n    refName: feature.refName,\n    start: feature.start,\n    end: feature.end,\n    strand: feature.strand,\n  }\n  const f2 = {\n    uniqueId: `${feature.id}-mate`,\n    refName: feature.next_ref as string,\n    start: feature.next_pos as number,\n    end: (feature.next_pos as number) + 1,\n    strand: feature.strand as number,\n  }\n  return (\n    <div>\n      <Typography>Launch split view</Typography>\n      <ul>\n        <li>\n          {f1.refName}:{toLocale(f1.start)} -&gt; {f2.refName}:\n          {toLocale(f2.start)}{' '}\n          <Link\n            href=\"#\"\n            onClick={event => {\n              event.preventDefault()\n              session.queueDialog(handleClose => [\n                BreakendMultiLevelOptionDialog,\n                {\n                  handleClose,\n                  model,\n                  feature: new SimpleFeature({ ...f1, mate: f2 }),\n                  // @ts-expect-error\n                  viewType,\n                  view: model.view,\n                  assemblyName: model.view.displayedRegions[0].assemblyName,\n                },\n              ])\n            }}\n          >\n            (top/bottom)\n          </Link>{' '}\n          <Link\n            href=\"#\"\n            onClick={event => {\n              event.preventDefault()\n              session.queueDialog(handleClose => [\n                BreakendSingleLevelOptionDialog,\n                {\n                  handleClose,\n                  model,\n                  feature: new SimpleFeature({ ...f1, mate: f2 }),\n                  // @ts-expect-error\n                  viewType,\n                  view: model.view,\n                  assemblyName: model.view.displayedRegions[0].assemblyName,\n                },\n              ])\n            }}\n          >\n            (single row)\n          </Link>\n        </li>\n      </ul>\n    </div>\n  )\n}\n","import React from 'react'\nimport { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { SimpleFeatureSerialized, getEnv, getSession } from '@jbrowse/core/util'\nimport { ViewType } from '@jbrowse/core/pluggableElementTypes'\n\n// locals\nimport { AlignmentFeatureWidgetModel } from './stateModelFactory'\nimport LaunchPairedEndBreakpointSplitViewPanel from './LaunchPairedEndBreakpointSplitViewPanel'\n\nexport default function SuppAlignments(props: {\n  model: AlignmentFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { model, feature } = props\n  const session = getSession(model)\n  const { pluginManager } = getEnv(session)\n  let viewType: ViewType | undefined\n\n  try {\n    viewType = pluginManager.getViewType('BreakpointSplitView')\n  } catch (e) {\n    // ignore\n  }\n\n  return (\n    <BaseCard {...props} title=\"Supplementary alignments\">\n      {viewType ? (\n        <LaunchPairedEndBreakpointSplitViewPanel\n          viewType={viewType}\n          model={model}\n          feature={feature}\n        />\n      ) : null}\n    </BaseCard>\n  )\n}\n"],"names":["BreakendMultiLevelOptionDialog","lazy","BreakendSingleLevelOptionDialog","LaunchPairedEndBreakpointSplitViewPanel","model","feature","viewType","session","getSession","f1","uniqueId","refName","start","end","strand","f2","id","next_ref","next_pos","React","Typography","toLocale","Link","href","onClick","event","preventDefault","queueDialog","handleClose","SimpleFeature","mate","view","assemblyName","displayedRegions","SuppAlignments","props","pluginManager","getEnv","getViewType","e","BaseCard","_extends","title"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9168.6afdec67.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,53 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9168],{29168:(e,t,r)=>{r.r(t),r.d(t,{default:()=>y});var a=r(7552),n=r(63011),o=r(41578),i=r(36715),s=r(1773),l=r(25355),c=r(75785),d=r(68446),u=r(7720);const m=(0,d.observer)((function({job:e}){return a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},a.createElement("strong",null,"Name: "),e.name),e.statusMessage?a.createElement(i.A,{variant:"body1"},a.createElement("strong",null,"Message: "),e.statusMessage):null))}));var p=r(17776),b=r(84421),f=r(71379),A=r(5401);const v=(0,d.observer)((function({job:e}){const[t,r]=(0,a.useState)(!1);return a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},a.createElement("strong",null,"Name: "),e.name),a.createElement(i.A,{variant:"body1"},a.createElement("strong",null,"Message: "),e.statusMessage||"No message provided"),a.createElement(p.A,{sx:{display:"flex",alignItems:"center",marginTop:10,marginBottom:10,marginLeft:10}},0===e.progressPct||100===e.progressPct?a.createElement(p.A,{sx:{width:"100%"}},a.createElement(b.A,{variant:"indeterminate"})):a.createElement(a.Fragment,null,a.createElement(p.A,{sx:{width:"100%"}},a.createElement(b.A,{variant:"determinate",value:e.progressPct})),a.createElement(p.A,{sx:{m:1}},a.createElement(i.A,null,`${Math.round(e.progressPct||0)}%`))))),a.createElement(f.A,null,a.createElement(A.A,{variant:"contained",color:"inherit",disabled:t||0===e.progressPct,onClick:()=>{e.setStatusMessage("Aborted via cancel button"),e.cancelCallback(),r(!0)}},"Cancel")))})),g=(0,c.n9)()((e=>({root:{margin:e.spacing(1)},expandIcon:{color:e.palette.tertiary.contrastText}}))),y=(0,d.observer)((function({model:e}){const{classes:t}=g(),{jobs:r,finished:c,queued:d,aborted:p}=e;return a.createElement("div",{className:t.root},a.createElement(n.A,{defaultExpanded:!0},a.createElement(o.A,{expandIcon:a.createElement(u.A,{className:t.expandIcon})},a.createElement(i.A,{variant:"h5"},"Running jobs")),r.length?r.map(((e,t)=>a.createElement(v,{job:e,key:`${JSON.stringify(e)}-${t}`}))):a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},"No running jobs")))),a.createElement(n.A,{defaultExpanded:!0},a.createElement(o.A,{expandIcon:a.createElement(u.A,{className:t.expandIcon})},a.createElement(i.A,{variant:"h5"},"Queued jobs")),d.length?d.map(((e,t)=>a.createElement(m,{job:e,key:`${JSON.stringify(e)}-${t}`}))):a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},"No queued jobs")))),a.createElement(n.A,{defaultExpanded:!0},a.createElement(o.A,{expandIcon:a.createElement(u.A,{className:t.expandIcon})},a.createElement(i.A,{variant:"h5"},"Completed jobs")),c.length?c.map(((e,t)=>a.createElement(m,{key:`${JSON.stringify(e)}-${t}`,job:e}))):a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},"No completed jobs")))),a.createElement(n.A,{defaultExpanded:!0},a.createElement(o.A,{expandIcon:a.createElement(u.A,{className:t.expandIcon})},a.createElement(i.A,{variant:"h5"},"Aborted jobs")),p.length?p.map(((e,t)=>a.createElement(m,{key:`${JSON.stringify(e)}-${t}`,job:e}))):a.createElement(s.A,{variant:"outlined"},a.createElement(l.A,null,a.createElement(i.A,{variant:"body1"},"No aborted jobs")))))}))},7720:(e,t,r)=>{r.d(t,{A:()=>o});var a=r(74893),n=r(69500);const o=(0,a.A)((0,n.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},41578:(e,t,r)=>{r.d(t,{A:()=>y});var a=r(7552),n=r(93878),o=r(70799),i=r(51148),s=r(60129),l=r(4785),c=r(48054),d=r(51132),u=r(33761),m=r(85693);function p(e){return(0,m.Ay)("MuiAccordionSummary",e)}const b=(0,u.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var f=r(69500);const A=(0,i.Ay)(c.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(e,t)=>t.root})((0,s.A)((({theme:e})=>{const t={duration:e.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create(["min-height","background-color"],t),[`&.${b.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${b.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${b.disabled})`]:{cursor:"pointer"},variants:[{props:e=>!e.disableGutters,style:{[`&.${b.expanded}`]:{minHeight:64}}}]}}))),v=(0,i.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(e,t)=>t.content})((0,s.A)((({theme:e})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create(["margin"],{duration:e.transitions.duration.shortest}),[`&.${b.expanded}`]:{margin:"20px 0"}}}]})))),g=(0,i.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(e,t)=>t.expandIconWrapper})((0,s.A)((({theme:e})=>({display:"flex",color:(e.vars||e).palette.action.active,transform:"rotate(0deg)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest}),[`&.${b.expanded}`]:{transform:"rotate(180deg)"}})))),y=a.forwardRef((function(e,t){const r=(0,l.b)({props:e,name:"MuiAccordionSummary"}),{children:i,className:s,expandIcon:c,focusVisibleClassName:u,onClick:m,...b}=r,{disabled:y=!1,disableGutters:h,expanded:x,toggle:E}=a.useContext(d.A),C={...r,expanded:x,disabled:y,disableGutters:h},w=(e=>{const{classes:t,expanded:r,disabled:a,disableGutters:n}=e,i={root:["root",r&&"expanded",a&&"disabled",!n&&"gutters"],focusVisible:["focusVisible"],content:["content",r&&"expanded",!n&&"contentGutters"],expandIconWrapper:["expandIconWrapper",r&&"expanded"]};return(0,o.A)(i,p,t)})(C);return(0,f.jsxs)(A,{focusRipple:!1,disableRipple:!0,disabled:y,component:"div","aria-expanded":x,className:(0,n.A)(w.root,s),focusVisibleClassName:(0,n.A)(w.focusVisible,u),onClick:e=>{E&&E(e),m&&m(e)},ref:t,ownerState:C,...b,children:[(0,f.jsx)(v,{className:w.content,ownerState:C,children:i}),c&&(0,f.jsx)(g,{className:w.expandIconWrapper,ownerState:C,children:c})]})}))},1773:(e,t,r)=>{r.d(t,{A:()=>m});var a=r(7552),n=r(93878),o=r(70799),i=r(51148),s=r(4785),l=r(943),c=r(50885),d=r(69500);const u=(0,i.Ay)(l.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),m=a.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiCard"}),{className:a,raised:i=!1,...l}=r,m={...r,raised:i},p=(e=>{const{classes:t}=e;return(0,o.A)({root:["root"]},c.T,t)})(m);return(0,d.jsx)(u,{className:(0,n.A)(p.root,a),elevation:i?8:void 0,ref:t,ownerState:m,...l})}))},50885:(e,t,r)=>{r.d(t,{A:()=>i,T:()=>o});var a=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiCard",e)}const i=(0,a.A)("MuiCard",["root"])},71379:(e,t,r)=>{r.d(t,{A:()=>u});var a=r(7552),n=r(93878),o=r(70799),i=r(51148),s=r(4785),l=r(93863),c=r(69500);const d=(0,i.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),u=a.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiCardActions"}),{disableSpacing:a=!1,className:i,...u}=r,m={...r,disableSpacing:a},p=(e=>{const{classes:t,disableSpacing:r}=e,a={root:["root",!r&&"spacing"]};return(0,o.A)(a,l.E,t)})(m);return(0,c.jsx)(d,{className:(0,n.A)(p.root,i),ownerState:m,ref:t,...u})}))},93863:(e,t,r)=>{r.d(t,{A:()=>i,E:()=>o});var a=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiCardActions",e)}const i=(0,a.A)("MuiCardActions",["root","spacing"])},25355:(e,t,r)=>{r.d(t,{A:()=>u});var a=r(7552),n=r(93878),o=r(70799),i=r(51148),s=r(4785),l=r(61823),c=r(69500);const d=(0,i.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:16,"&:last-child":{paddingBottom:24}}),u=a.forwardRef((function(e,t){const r=(0,s.b)({props:e,name:"MuiCardContent"}),{className:a,component:i="div",...u}=r,m={...r,component:i},p=(e=>{const{classes:t}=e;return(0,o.A)({root:["root"]},l.h,t)})(m);return(0,c.jsx)(d,{as:i,className:(0,n.A)(p.root,a),ownerState:m,ref:t,...u})}))},61823:(e,t,r)=>{r.d(t,{A:()=>i,h:()=>o});var a=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiCardContent",e)}const i=(0,a.A)("MuiCardContent",["root"])},84421:(e,t,r)=>{r.d(t,{A:()=>M});var a=r(7552),n=r(93878),o=r(70799),i=r(72639),s=r(93876),l=r(64761),c=r(51148),d=r(60129),u=r(58520),m=r(4785),p=r(15622),b=r(50077),f=r(69500);const A=l.i7`
+  0% {
+    left: -35%;
+    right: 100%;
+  }
+
+  60% {
+    left: 100%;
+    right: -90%;
+  }
+
+  100% {
+    left: 100%;
+    right: -90%;
+  }
+`,v="string"!=typeof A?l.AH`
+        animation: ${A} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+      `:null,g=l.i7`
+  0% {
+    left: -200%;
+    right: 100%;
+  }
+
+  60% {
+    left: 107%;
+    right: -8%;
+  }
+
+  100% {
+    left: 107%;
+    right: -8%;
+  }
+`,y="string"!=typeof g?l.AH`
+        animation: ${g} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;
+      `:null,h=l.i7`
+  0% {
+    opacity: 1;
+    background-position: 0 -23px;
+  }
+
+  60% {
+    opacity: 0;
+    background-position: 0 -23px;
+  }
+
+  100% {
+    opacity: 1;
+    background-position: -200px -23px;
+  }
+`,x="string"!=typeof h?l.AH`
+        animation: ${h} 3s infinite linear;
+      `:null,E=(e,t)=>e.vars?e.vars.palette.LinearProgress[`${t}Bg`]:"light"===e.palette.mode?(0,i.a)(e.palette[t].main,.62):(0,i.e$)(e.palette[t].main,.5),C=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`color${(0,p.A)(r.color)}`],t[r.variant]]}})((0,d.A)((({theme:e})=>({position:"relative",overflow:"hidden",display:"block",height:4,zIndex:0,"@media print":{colorAdjust:"exact"},variants:[...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{backgroundColor:E(e,t)}}))),{props:({ownerState:e})=>"inherit"===e.color&&"buffer"!==e.variant,style:{"&::before":{content:'""',position:"absolute",left:0,top:0,right:0,bottom:0,backgroundColor:"currentColor",opacity:.3}}},{props:{variant:"buffer"},style:{backgroundColor:"transparent"}},{props:{variant:"query"},style:{transform:"rotate(180deg)"}}]})))),w=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Dashed",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.dashed,t[`dashedColor${(0,p.A)(r.color)}`]]}})((0,d.A)((({theme:e})=>({position:"absolute",marginTop:0,height:"100%",width:"100%",backgroundSize:"10px 10px",backgroundPosition:"0 -23px",variants:[{props:{color:"inherit"},style:{opacity:.3,backgroundImage:"radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)"}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>{const r=E(e,t);return{props:{color:t},style:{backgroundImage:`radial-gradient(${r} 0%, ${r} 16%, transparent 42%)`}}}))]}))),x||{animation:`${h} 3s infinite linear`}),S=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Bar1",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.bar,t[`barColor${(0,p.A)(r.color)}`],("indeterminate"===r.variant||"query"===r.variant)&&t.bar1Indeterminate,"determinate"===r.variant&&t.bar1Determinate,"buffer"===r.variant&&t.bar1Buffer]}})((0,d.A)((({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[{props:{color:"inherit"},style:{backgroundColor:"currentColor"}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main}}))),{props:{variant:"determinate"},style:{transition:"transform .4s linear"}},{props:{variant:"buffer"},style:{zIndex:1,transition:"transform .4s linear"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:v||{animation:`${A} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`}}]})))),$=(0,c.Ay)("span",{name:"MuiLinearProgress",slot:"Bar2",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.bar,t[`barColor${(0,p.A)(r.color)}`],("indeterminate"===r.variant||"query"===r.variant)&&t.bar2Indeterminate,"buffer"===r.variant&&t.bar2Buffer]}})((0,d.A)((({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t},style:{"--LinearProgressBar2-barColor":(e.vars||e).palette[t].main}}))),{props:({ownerState:e})=>"buffer"!==e.variant&&"inherit"!==e.color,style:{backgroundColor:"var(--LinearProgressBar2-barColor, currentColor)"}},{props:{color:"inherit"},style:{opacity:.3}},...Object.entries(e.palette).filter((0,u.A)()).map((([t])=>({props:{color:t,variant:"buffer"},style:{backgroundColor:E(e,t),transition:"transform .4s linear"}}))),{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:y||{animation:`${g} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`}}]})))),M=a.forwardRef((function(e,t){const r=(0,m.b)({props:e,name:"MuiLinearProgress"}),{className:a,color:i="primary",value:l,valueBuffer:c,variant:d="indeterminate",...u}=r,A={...r,color:i,variant:d},v=(e=>{const{classes:t,variant:r,color:a}=e,n={root:["root",`color${(0,p.A)(a)}`,r],dashed:["dashed",`dashedColor${(0,p.A)(a)}`],bar1:["bar",`barColor${(0,p.A)(a)}`,("indeterminate"===r||"query"===r)&&"bar1Indeterminate","determinate"===r&&"bar1Determinate","buffer"===r&&"bar1Buffer"],bar2:["bar","buffer"!==r&&`barColor${(0,p.A)(a)}`,"buffer"===r&&`color${(0,p.A)(a)}`,("indeterminate"===r||"query"===r)&&"bar2Indeterminate","buffer"===r&&"bar2Buffer"]};return(0,o.A)(n,b.l,t)})(A),g=(0,s.I)(),y={},h={bar1:{},bar2:{}};if(("determinate"===d||"buffer"===d)&&void 0!==l){y["aria-valuenow"]=Math.round(l),y["aria-valuemin"]=0,y["aria-valuemax"]=100;let e=l-100;g&&(e=-e),h.bar1.transform=`translateX(${e}%)`}if("buffer"===d&&void 0!==c){let e=(c||0)-100;g&&(e=-e),h.bar2.transform=`translateX(${e}%)`}return(0,f.jsxs)(C,{className:(0,n.A)(v.root,a),ownerState:A,role:"progressbar",...y,ref:t,...u,children:["buffer"===d?(0,f.jsx)(w,{className:v.dashed,ownerState:A}):null,(0,f.jsx)(S,{className:v.bar1,ownerState:A,style:h.bar1}),"determinate"===d?null:(0,f.jsx)($,{className:v.bar2,ownerState:A,style:h.bar2})]})}))},50077:(e,t,r)=>{r.d(t,{A:()=>i,l:()=>o});var a=r(33761),n=r(85693);function o(e){return(0,n.Ay)("MuiLinearProgress",e)}const i=(0,a.A)("MuiLinearProgress",["root","colorPrimary","colorSecondary","determinate","indeterminate","buffer","query","dashed","dashedColorPrimary","dashedColorSecondary","bar","barColorPrimary","barColorSecondary","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer"])}}]);
+//# sourceMappingURL=9168.6afdec67.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9168.6afdec67.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9168.6afdec67.chunk.js","mappings":"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","sources":["../../../plugins/jobs-management/src/JobsListWidget/components/JobCard.tsx","../../../plugins/jobs-management/src/JobsListWidget/components/CurrentJobCard.tsx","../../../plugins/jobs-management/src/JobsListWidget/components/JobsListWidget.tsx","../../../node_modules/@mui/icons-material/esm/ExpandMore.js","../../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../../../node_modules/@mui/material/Card/Card.js","../../../node_modules/@mui/material/Card/cardClasses.js","../../../node_modules/@mui/material/CardActions/CardActions.js","../../../node_modules/@mui/material/CardActions/cardActionsClasses.js","../../../node_modules/@mui/material/CardContent/CardContent.js","../../../node_modules/@mui/material/CardContent/cardContentClasses.js","../../../node_modules/@mui/material/LinearProgress/LinearProgress.js","../../../node_modules/@mui/material/LinearProgress/linearProgressClasses.js"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Card, CardContent, Typography } from '@mui/material'\nimport { NewJob } from '../model'\n\nconst JobCard = observer(function JobCard({ job }: { job: NewJob }) {\n  return (\n    <Card variant=\"outlined\">\n      <CardContent>\n        <Typography variant=\"body1\">\n          <strong>{'Name: '}</strong>\n          {job.name}\n        </Typography>\n        {job.statusMessage ? (\n          <Typography variant=\"body1\">\n            <strong>{'Message: '}</strong>\n            {job.statusMessage}\n          </Typography>\n        ) : null}\n      </CardContent>\n    </Card>\n  )\n})\n\nexport default JobCard\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Box,\n  Button,\n  Card,\n  CardActions,\n  CardContent,\n  LinearProgress,\n  Typography,\n} from '@mui/material'\nimport { NewJob } from '../model'\n\nconst CurrentJobCard = observer(function CurrentJobCard({\n  job,\n}: {\n  job: NewJob\n}) {\n  const [clicked, setClicked] = useState(false)\n  return (\n    <Card variant=\"outlined\">\n      <CardContent>\n        <Typography variant=\"body1\">\n          <strong>{'Name: '}</strong>\n          {job.name}\n        </Typography>\n        <Typography variant=\"body1\">\n          <strong>{'Message: '}</strong>\n          {job.statusMessage || 'No message provided'}\n        </Typography>\n        <Box\n          sx={{\n            display: 'flex',\n            alignItems: 'center',\n            marginTop: 10,\n            marginBottom: 10,\n            marginLeft: 10,\n          }}\n        >\n          {job.progressPct === 0 || job.progressPct === 100 ? (\n            <Box sx={{ width: '100%' }}>\n              <LinearProgress variant=\"indeterminate\" />\n            </Box>\n          ) : (\n            <>\n              <Box sx={{ width: '100%' }}>\n                <LinearProgress variant=\"determinate\" value={job.progressPct} />\n              </Box>\n              <Box sx={{ m: 1 }}>\n                <Typography>{`${Math.round(\n                  job.progressPct || 0,\n                )}%`}</Typography>\n              </Box>\n            </>\n          )}\n        </Box>\n      </CardContent>\n      <CardActions>\n        <Button\n          variant=\"contained\"\n          color=\"inherit\"\n          disabled={clicked || job.progressPct === 0}\n          onClick={() => {\n            job.setStatusMessage('Aborted via cancel button')\n            job.cancelCallback()\n            setClicked(true)\n          }}\n        >\n          Cancel\n        </Button>\n      </CardActions>\n    </Card>\n  )\n})\n\nexport default CurrentJobCard\n","import React from 'react'\nimport {\n  Accordion,\n  AccordionSummary,\n  Card,\n  CardContent,\n  Typography,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// icons\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\n\nimport JobCard from './JobCard'\nimport CurrentJobCard from './CurrentJobCard'\nimport { JobsListModel, NewJob } from '../model'\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    margin: theme.spacing(1),\n  },\n  expandIcon: {\n    color: theme.palette.tertiary.contrastText,\n  },\n}))\n\nconst JobsListWidget = observer(function ({ model }: { model: JobsListModel }) {\n  const { classes } = useStyles()\n  const { jobs, finished, queued, aborted } = model\n  return (\n    <div className={classes.root}>\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Running jobs</Typography>\n        </AccordionSummary>\n        {jobs.length ? (\n          jobs.map((job: NewJob, index: number) => (\n            <CurrentJobCard job={job} key={`${JSON.stringify(job)}-${index}`} />\n          ))\n        ) : (\n          <Card variant=\"outlined\">\n            <CardContent>\n              <Typography variant=\"body1\">No running jobs</Typography>\n            </CardContent>\n          </Card>\n        )}\n      </Accordion>\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Queued jobs</Typography>\n        </AccordionSummary>\n        {queued.length ? (\n          queued.map((job: NewJob, index: number) => (\n            <JobCard job={job} key={`${JSON.stringify(job)}-${index}`} />\n          ))\n        ) : (\n          <Card variant=\"outlined\">\n            <CardContent>\n              <Typography variant=\"body1\">No queued jobs</Typography>\n            </CardContent>\n          </Card>\n        )}\n      </Accordion>\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Completed jobs</Typography>\n        </AccordionSummary>\n        {finished.length ? (\n          finished.map((job: NewJob, index: number) => (\n            <JobCard key={`${JSON.stringify(job)}-${index}`} job={job} />\n          ))\n        ) : (\n          <Card variant=\"outlined\">\n            <CardContent>\n              <Typography variant=\"body1\">No completed jobs</Typography>\n            </CardContent>\n          </Card>\n        )}\n      </Accordion>\n      <Accordion defaultExpanded>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon className={classes.expandIcon} />}\n        >\n          <Typography variant=\"h5\">Aborted jobs</Typography>\n        </AccordionSummary>\n        {aborted.length ? (\n          aborted.map((job: NewJob, index: number) => (\n            <JobCard key={`${JSON.stringify(job)}-${index}`} job={job} />\n          ))\n        ) : (\n          <Card variant=\"outlined\">\n            <CardContent>\n              <Typography variant=\"body1\">No aborted jobs</Typography>\n            </CardContent>\n          </Card>\n        )}\n      </Accordion>\n    </div>\n  )\n})\n\nexport default JobsListWidget\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport AccordionContext from \"../Accordion/AccordionContext.js\";\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from \"./accordionSummaryClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(memoTheme(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    },\n    variants: [{\n      props: props => !props.disableGutters,\n      style: {\n        [`&.${accordionSummaryClasses.expanded}`]: {\n          minHeight: 64\n        }\n      }\n    }]\n  };\n}));\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0',\n  variants: [{\n    props: props => !props.disableGutters,\n    style: {\n      transition: theme.transitions.create(['margin'], {\n        duration: theme.transitions.duration.shortest\n      }),\n      [`&.${accordionSummaryClasses.expanded}`]: {\n        margin: '20px 0'\n      }\n    }\n  }]\n})));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n})));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n    children,\n    className,\n    expandIcon,\n    focusVisibleClassName,\n    onClick,\n    ...other\n  } = props;\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    expanded,\n    disabled,\n    disableGutters\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, {\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport { getCardUtilityClass } from \"./cardClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  overflow: 'hidden'\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n    className,\n    raised = false,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    raised\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, {\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardActionsUtilityClass } from \"./cardActionsClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getCardActionsUtilityClass, classes);\n};\nconst CardActionsRoot = styled('div', {\n  name: 'MuiCardActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  variants: [{\n    props: {\n      disableSpacing: false\n    },\n    style: {\n      '& > :not(style) ~ :not(style)': {\n        marginLeft: 8\n      }\n    }\n  }]\n});\nconst CardActions = /*#__PURE__*/React.forwardRef(function CardActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardActions'\n  });\n  const {\n    disableSpacing = false,\n    className,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    disableSpacing\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardActionsRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActions', slot);\n}\nconst cardActionsClasses = generateUtilityClasses('MuiCardActions', ['root', 'spacing']);\nexport default cardActionsClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 16,\n  '&:last-child': {\n    paddingBottom: 24\n  }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n    className,\n    component = 'div',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, {\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { getLinearProgressUtilityClass } from \"./linearProgressClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes`\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst indeterminate1Animation = typeof indeterminate1Keyframe !== 'string' ? css`\n        animation: ${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n      ` : null;\nconst indeterminate2Keyframe = keyframes`\n  0% {\n    left: -200%;\n    right: 100%;\n  }\n\n  60% {\n    left: 107%;\n    right: -8%;\n  }\n\n  100% {\n    left: 107%;\n    right: -8%;\n  }\n`;\nconst indeterminate2Animation = typeof indeterminate2Keyframe !== 'string' ? css`\n        animation: ${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n      ` : null;\nconst bufferKeyframe = keyframes`\n  0% {\n    opacity: 1;\n    background-position: 0 -23px;\n  }\n\n  60% {\n    opacity: 0;\n    background-position: 0 -23px;\n  }\n\n  100% {\n    opacity: 1;\n    background-position: -200px -23px;\n  }\n`;\nconst bufferAnimation = typeof bufferKeyframe !== 'string' ? css`\n        animation: ${bufferKeyframe} 3s infinite linear;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, variant],\n    dashed: ['dashed', `dashedColor${capitalize(color)}`],\n    bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n    bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n  };\n  return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n  if (theme.vars) {\n    return theme.vars.palette.LinearProgress[`${color}Bg`];\n  }\n  return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'relative',\n  overflow: 'hidden',\n  display: 'block',\n  height: 4,\n  // Fix Safari's bug during composition of different paint.\n  zIndex: 0,\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color)\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.color === 'inherit' && ownerState.variant !== 'buffer',\n    style: {\n      '&::before': {\n        content: '\"\"',\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'currentColor',\n        opacity: 0.3\n      }\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: 'transparent'\n    }\n  }, {\n    props: {\n      variant: 'query'\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n})));\nconst LinearProgressDashed = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Dashed',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  position: 'absolute',\n  marginTop: 0,\n  height: '100%',\n  width: '100%',\n  backgroundSize: '10px 10px',\n  backgroundPosition: '0 -23px',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3,\n      backgroundImage: `radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => {\n    const backgroundColor = getColorShade(theme, color);\n    return {\n      props: {\n        color\n      },\n      style: {\n        backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`\n      }\n    };\n  })]\n})), bufferAnimation || {\n  // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n  animation: `${bufferKeyframe} 3s infinite linear`\n});\nconst LinearProgressBar1 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar1',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [{\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      backgroundColor: 'currentColor'\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      backgroundColor: (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: {\n      variant: 'buffer'\n    },\n    style: {\n      zIndex: 1,\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate1Animation || {\n      animation: `${indeterminate1Keyframe} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`\n    }\n  }]\n})));\nconst LinearProgressBar2 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar2',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      '--LinearProgressBar2-barColor': (theme.vars || theme).palette[color].main\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant !== 'buffer' && ownerState.color !== 'inherit',\n    style: {\n      backgroundColor: 'var(--LinearProgressBar2-barColor, currentColor)'\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      opacity: 0.3\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      variant: 'buffer'\n    },\n    style: {\n      backgroundColor: getColorShade(theme, color),\n      transition: `transform .${TRANSITION_DURATION}s linear`\n    }\n  })), {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: {\n      width: 'auto'\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' || ownerState.variant === 'query',\n    style: indeterminate2Animation || {\n      animation: `${indeterminate2Keyframe} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLinearProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    value,\n    valueBuffer,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const isRtl = useRtl();\n  const rootProps = {};\n  const inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      let transform = value - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar1.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      let transform = (valueBuffer || 0) - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar2.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(LinearProgressRoot, {\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"progressbar\",\n    ...rootProps,\n    ref: ref,\n    ...other,\n    children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n      className: classes.dashed,\n      ownerState: ownerState\n    }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n      className: classes.bar1,\n      ownerState: ownerState,\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n      className: classes.bar2,\n      ownerState: ownerState,\n      style: inlineStyles.bar2\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;"],"names":["observer","job","React","Card","variant","CardContent","Typography","name","statusMessage","clicked","setClicked","useState","Box","sx","display","alignItems","marginTop","marginBottom","marginLeft","progressPct","width","LinearProgress","value","m","Math","round","CardActions","Button","color","disabled","onClick","setStatusMessage","cancelCallback","useStyles","makeStyles","theme","root","margin","spacing","expandIcon","palette","tertiary","contrastText","model","classes","jobs","finished","queued","aborted","className","Accordion","defaultExpanded","AccordionSummary","ExpandMoreIcon","length","map","index","CurrentJobCard","key","JSON","stringify","JobCard","d","getAccordionSummaryUtilityClass","slot","generateUtilityClass","generateUtilityClasses","AccordionSummaryRoot","styled","ButtonBase","overridesResolver","props","styles","memoTheme","transition","duration","transitions","shortest","minHeight","padding","create","focusVisible","backgroundColor","vars","action","focus","opacity","disabledOpacity","cursor","variants","disableGutters","style","expanded","AccordionSummaryContent","content","flexGrow","AccordionSummaryExpandIconWrapper","expandIconWrapper","active","transform","inProps","ref","children","focusVisibleClassName","other","toggle","AccordionContext","A","ownerState","slots","composeClasses","useUtilityClasses","focusRipple","disableRipple","component","clsx","event","CardRoot","overflow","raised","elevation","undefined","getCardUtilityClass","CardActionsRoot","disableSpacing","getCardActionsUtilityClass","CardContentRoot","paddingBottom","as","getCardContentUtilityClass","indeterminate1Keyframe","indeterminate1Animation","indeterminate2Keyframe","indeterminate2Animation","bufferKeyframe","bufferAnimation","getColorShade","mode","main","LinearProgressRoot","position","height","zIndex","colorAdjust","Object","entries","filter","left","top","right","bottom","LinearProgressDashed","dashed","backgroundSize","backgroundPosition","backgroundImage","animation","LinearProgressBar1","bar","bar1Indeterminate","bar1Determinate","bar1Buffer","transformOrigin","LinearProgressBar2","bar2Indeterminate","bar2Buffer","valueBuffer","bar1","bar2","isRtl","rootProps","inlineStyles","role","getLinearProgressUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9206.bbf34514.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9206,7489],{79206:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});var s=a(71616),n=a(99834),i=a(69870);class o extends i.default{async setupPre(){const e=this.getConf("fastaLocation"),t=this.getConf("faiLocation"),a=this.getConf("gziLocation"),i={fasta:(0,n.openLocation)(e,this.pluginManager),fai:(0,n.openLocation)(t,this.pluginManager),gzi:(0,n.openLocation)(a,this.pluginManager)};return{fasta:new s.tP(i)}}}},69870:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});var s=a(71616),n=a(46377),i=a(99834),o=a(66885),r=a(99546),c=a(47046),u=a(43334);class f extends n.BaseSequenceAdapter{seqCache=new c.A({cache:new u.A({maxSize:200}),fill:async(e,t)=>{const{refName:a,start:s,end:n,fasta:i}=e;return i.getSequence(a,s,n,{...e,signal:t})}});async getRefNames(e){const{fasta:t}=await this.setup();return t.getSequenceNames(e)}async getRegions(e){const{fasta:t}=await this.setup(),a=await t.getSequenceSizes(e);return Object.keys(a).map((e=>({refName:e,start:0,end:a[e]})))}async setupPre(){const e=this.getConf("fastaLocation"),t=this.getConf("faiLocation");return{fasta:new s.BL({fasta:(0,i.openLocation)(e,this.pluginManager),fai:(0,i.openLocation)(t,this.pluginManager)})}}async getHeader(){const e=this.getConf("metadataLocation");return""===e.uri||"/path/to/fa.metadata.yaml"===e.uri?null:(0,i.openLocation)(e,this.pluginManager).readFile("utf8")}async setup(){return this.setupP||(this.setupP=this.setupPre().catch((e=>{throw this.setupP=void 0,e}))),this.setupP}getFeatures(e,t){const{refName:a,start:s,end:n}=e;return(0,o.ObservableCreate)((async e=>{const{fasta:i}=await this.setup(),o=await i.getSequenceSize(a,t),c=Math.min(o,n),u=[],f=128e3,g=s-s%f,h=n+(f-n%f);for(let e=g;e<h;e+=f){const s={refName:a,start:e,end:e+f};u.push(this.seqCache.get(JSON.stringify(s),{...s,fasta:i},t?.signal))}const p=(await Promise.all(u)).join("").slice(s-g).slice(0,n-s);p&&e.next(new r.SimpleFeature({id:`${a} ${s}-${c}`,data:{refName:a,start:s,end:c,seq:p}})),e.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=9206.bbf34514.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9206.bbf34514.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9206.bbf34514.chunk.js","mappings":"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","sources":["../../../plugins/sequence/src/BgzipFastaAdapter/BgzipFastaAdapter.ts","../../../plugins/sequence/src/IndexedFastaAdapter/IndexedFastaAdapter.ts"],"sourcesContent":["import { BgzipIndexedFasta } from '@gmod/indexedfasta'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport IndexedFasta from '../IndexedFastaAdapter/IndexedFastaAdapter'\n\nexport default class BgzipFastaAdapter extends IndexedFasta {\n  public async setupPre() {\n    const fastaLocation = this.getConf('fastaLocation')\n    const faiLocation = this.getConf('faiLocation')\n    const gziLocation = this.getConf('gziLocation')\n    const fastaOpts = {\n      fasta: openLocation(fastaLocation as FileLocation, this.pluginManager),\n      fai: openLocation(faiLocation as FileLocation, this.pluginManager),\n      gzi: openLocation(gziLocation as FileLocation, this.pluginManager),\n    }\n\n    return { fasta: new BgzipIndexedFasta(fastaOpts) }\n  }\n}\n","import { IndexedFasta } from '@gmod/indexedfasta'\nimport {\n  BaseSequenceAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { FileLocation, NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { SimpleFeature, Feature } from '@jbrowse/core/util'\nimport AbortablePromiseCache from '@gmod/abortable-promise-cache'\nimport QuickLRU from '@jbrowse/core/util/QuickLRU'\n\ninterface T {\n  refName: string\n  start: number\n  end: number\n  fasta: IndexedFasta\n}\n\nexport default class IndexedFastaAdapter extends BaseSequenceAdapter {\n  protected setupP?: Promise<{ fasta: IndexedFasta }>\n\n  private seqCache = new AbortablePromiseCache<T, string | undefined>({\n    cache: new QuickLRU({ maxSize: 200 }),\n    fill: async (args: T, signal?: AbortSignal) => {\n      const { refName, start, end, fasta } = args\n      return fasta.getSequence(refName, start, end, { ...args, signal })\n    },\n  })\n\n  public async getRefNames(opts?: BaseOptions) {\n    const { fasta } = await this.setup()\n    return fasta.getSequenceNames(opts)\n  }\n\n  public async getRegions(opts?: BaseOptions) {\n    const { fasta } = await this.setup()\n    const seqSizes = await fasta.getSequenceSizes(opts)\n    return Object.keys(seqSizes).map(refName => ({\n      refName,\n      start: 0,\n      end: seqSizes[refName]!,\n    }))\n  }\n\n  public async setupPre() {\n    const fastaLocation = this.getConf('fastaLocation') as FileLocation\n    const faiLocation = this.getConf('faiLocation') as FileLocation\n\n    return {\n      fasta: new IndexedFasta({\n        fasta: openLocation(fastaLocation, this.pluginManager),\n        fai: openLocation(faiLocation, this.pluginManager),\n      }),\n    }\n  }\n\n  public async getHeader() {\n    const loc = this.getConf('metadataLocation')\n    return loc.uri === '' || loc.uri === '/path/to/fa.metadata.yaml'\n      ? null\n      : openLocation(loc, this.pluginManager).readFile('utf8')\n  }\n\n  public async setup() {\n    if (!this.setupP) {\n      this.setupP = this.setupPre().catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n\n  public getFeatures(region: NoAssemblyRegion, opts?: BaseOptions) {\n    const { refName, start, end } = region\n    return ObservableCreate<Feature>(async observer => {\n      const { fasta } = await this.setup()\n      const size = await fasta.getSequenceSize(refName, opts)\n      const regionEnd = Math.min(size, end)\n      const chunks = []\n      const chunkSize = 128000\n\n      const s = start - (start % chunkSize)\n      const e = end + (chunkSize - (end % chunkSize))\n      for (let chunkStart = s; chunkStart < e; chunkStart += chunkSize) {\n        const r = {\n          refName,\n          start: chunkStart,\n          end: chunkStart + chunkSize,\n        }\n        chunks.push(\n          this.seqCache.get(JSON.stringify(r), { ...r, fasta }, opts?.signal),\n        )\n      }\n      const seq = (await Promise.all(chunks))\n        .join('')\n        .slice(start - s)\n        .slice(0, end - start)\n      if (seq) {\n        observer.next(\n          new SimpleFeature({\n            id: `${refName} ${start}-${regionEnd}`,\n            data: { refName, start, end: regionEnd, seq },\n          }),\n        )\n      }\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["BgzipFastaAdapter","IndexedFasta","setupPre","fastaLocation","this","getConf","faiLocation","gziLocation","fastaOpts","fasta","openLocation","pluginManager","fai","gzi","BgzipIndexedFasta","IndexedFastaAdapter","BaseSequenceAdapter","seqCache","AbortablePromiseCache","cache","QuickLRU","maxSize","fill","async","args","signal","refName","start","end","getSequence","getRefNames","opts","setup","getSequenceNames","getRegions","seqSizes","getSequenceSizes","Object","keys","map","getHeader","loc","uri","readFile","setupP","catch","e","undefined","getFeatures","region","ObservableCreate","size","getSequenceSize","regionEnd","Math","min","chunks","chunkSize","s","chunkStart","r","push","get","JSON","stringify","seq","Promise","all","join","slice","observer","next","SimpleFeature","id","data","complete","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9245.d882c265.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9245],{87731:(e,n,r)=>{"use strict";r.d(n,{A:()=>A});var t=r(7552),o=r(93878),i=r(72639),s=r(70799),a=r(91527),l=r(15622),u=r(51148),c=r(48231),g=r(60129),p=r(58520),h=r(4785),d=r(36715),f=r(58161),m=r(39995);const _=({theme:e,ownerState:n})=>{const r=n.color,t=(0,m.Yn)(e,`palette.${r}`,!1)||n.color,o=(0,m.Yn)(e,`palette.${r}Channel`);return"vars"in e&&o?`rgba(${o} / 0.4)`:(0,i.X4)(t,.4)};var v=r(69500);const y={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},C=(0,u.Ay)(d.A,{name:"MuiLink",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:r}=e;return[n.root,n[`underline${(0,l.A)(r.underline)}`],"button"===r.component&&n.button]}})((0,g.A)((({theme:e})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:e,ownerState:n})=>"always"===e&&"inherit"!==n.color,style:{textDecorationColor:"var(--Link-underlineColor)"}},...Object.entries(e.palette).filter((0,p.A)()).map((([n])=>({props:{underline:"always",color:n},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette[n].mainChannel} / 0.4)`:(0,i.X4)(e.palette[n].main,.4)}}))),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,i.X4)(e.palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":e.vars?`rgba(${e.vars.palette.text.secondaryChannel} / 0.4)`:(0,i.X4)(e.palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(e.vars||e).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${f.A.focusVisible}`]:{outline:"auto"}}}]})))),A=t.forwardRef((function(e,n){const r=(0,h.b)({props:e,name:"MuiLink"}),i=(0,c.A)(),{className:u,color:g="primary",component:p="a",onBlur:d,onFocus:m,TypographyClasses:A,underline:L="always",variant:S="inherit",sx:w,...b}=r,[M,O]=t.useState(!1),R={...r,color:g,component:p,focusVisible:M,underline:L,variant:S},E=(e=>{const{classes:n,component:r,focusVisible:t,underline:o}=e,i={root:["root",`underline${(0,l.A)(o)}`,"button"===r&&"button",t&&"focusVisible"]};return(0,s.A)(i,f.t,n)})(R);return(0,v.jsx)(C,{color:g,className:(0,o.A)(E.root,u),classes:A,component:p,onBlur:e=>{(0,a.A)(e.target)||O(!1),d&&d(e)},onFocus:e=>{(0,a.A)(e.target)&&O(!0),m&&m(e)},ref:n,ownerState:R,variant:S,...b,sx:[...void 0===y[g]?[{color:g}]:[],...Array.isArray(w)?w:[w]],style:{...b.style,..."always"===L&&"inherit"!==g&&!y[g]&&{"--Link-underlineColor":_({theme:i,ownerState:R})}}})}))},58161:(e,n,r)=>{"use strict";r.d(n,{A:()=>s,t:()=>i});var t=r(33761),o=r(85693);function i(e){return(0,o.Ay)("MuiLink",e)}const s=(0,t.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"])},96605:(e,n,r)=>{var t=r(25113),o=Object.prototype.hasOwnProperty,i="undefined"!=typeof Map;function s(){this._array=[],this._set=i?new Map:Object.create(null)}s.fromArray=function(e,n){for(var r=new s,t=0,o=e.length;t<o;t++)r.add(e[t],n);return r},s.prototype.size=function(){return i?this._set.size:Object.getOwnPropertyNames(this._set).length},s.prototype.add=function(e,n){var r=i?e:t.toSetString(e),s=i?this.has(e):o.call(this._set,r),a=this._array.length;s&&!n||this._array.push(e),s||(i?this._set.set(e,a):this._set[r]=a)},s.prototype.has=function(e){if(i)return this._set.has(e);var n=t.toSetString(e);return o.call(this._set,n)},s.prototype.indexOf=function(e){if(i){var n=this._set.get(e);if(n>=0)return n}else{var r=t.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},s.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},s.prototype.toArray=function(){return this._array.slice()},n.C=s},62778:(e,n,r)=>{var t=r(28710);n.encode=function(e){var n,r="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{n=31&o,(o>>>=5)>0&&(n|=32),r+=t.encode(n)}while(o>0);return r},n.decode=function(e,n,r){var o,i,s,a,l=e.length,u=0,c=0;do{if(n>=l)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=t.decode(e.charCodeAt(n++))))throw new Error("Invalid base64 digit: "+e.charAt(n-1));o=!!(32&i),u+=(i&=31)<<c,c+=5}while(o);r.value=(a=(s=u)>>1,1&~s?a:-a),r.rest=n}},28710:(e,n)=>{var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},n.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},61669:(e,n)=>{function r(e,t,o,i,s,a){var l=Math.floor((t-e)/2)+e,u=s(o,i[l],!0);return 0===u?l:u>0?t-l>1?r(l,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t<i.length?t:-1:l:l-e>1?r(e,l,o,i,s,a):a==n.LEAST_UPPER_BOUND?l:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},73912:(e,n,r)=>{var t=r(25113);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){var n,r,o,i,s,a;r=e,o=(n=this._last).generatedLine,i=r.generatedLine,s=n.generatedColumn,a=r.generatedColumn,i>o||i==o&&a>=s||t.compareByGeneratedPositionsInflated(n,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(t.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.P=o},86539:(e,n)=>{function r(e){function n(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}return function e(r,t,o,i){if(o<i){var s=o-1;n(r,(c=o,g=i,Math.round(c+Math.random()*(g-c))),i);for(var a=r[i],l=o;l<i;l++)t(r[l],a,!1)<=0&&n(r,s+=1,l);n(r,s+1,l);var u=s+1;e(r,t,o,u-1),e(r,t,u+1,i)}var c,g}}let t=new WeakMap;n.g=function(e,n,o=0){let i=t.get(n);void 0===i&&(i=function(e){let n=r.toString();return new Function(`return ${n}`)()(e)}(n),t.set(n,i)),i(e,n,o,e.length-1)}},40396:(e,n,r)=>{var t=r(25113),o=r(61669),i=r(96605).C,s=r(62778),a=r(86539).g;function l(e,n){var r=e;return"string"==typeof e&&(r=t.parseSourceMapInput(e)),null!=r.sections?new h(r,n):new u(r,n)}function u(e,n){var r=e;"string"==typeof e&&(r=t.parseSourceMapInput(e));var o=t.getArg(r,"version"),s=t.getArg(r,"sources"),a=t.getArg(r,"names",[]),l=t.getArg(r,"sourceRoot",null),u=t.getArg(r,"sourcesContent",null),c=t.getArg(r,"mappings"),g=t.getArg(r,"file",null);if(o!=this._version)throw new Error("Unsupported version: "+o);l&&(l=t.normalize(l)),s=s.map(String).map(t.normalize).map((function(e){return l&&t.isAbsolute(l)&&t.isAbsolute(e)?t.relative(l,e):e})),this._names=i.fromArray(a.map(String),!0),this._sources=i.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map((function(e){return t.computeSourceURL(l,e,n)})),this.sourceRoot=l,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=n,this.file=g}function c(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}l.fromSourceMap=function(e,n){return u.fromSourceMap(e,n)},l.prototype._version=3,l.prototype.__generatedMappings=null,Object.defineProperty(l.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),l.prototype.__originalMappings=null,Object.defineProperty(l.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),l.prototype._charIsMappingSeparator=function(e,n){var r=e.charAt(n);return";"===r||","===r},l.prototype._parseMappings=function(e,n){throw new Error("Subclasses must implement _parseMappings")},l.GENERATED_ORDER=1,l.ORIGINAL_ORDER=2,l.GREATEST_LOWER_BOUND=1,l.LEAST_UPPER_BOUND=2,l.prototype.eachMapping=function(e,n,r){var o,i=n||null;switch(r||l.GENERATED_ORDER){case l.GENERATED_ORDER:o=this._generatedMappings;break;case l.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}for(var s=this.sourceRoot,a=e.bind(i),u=this._names,c=this._sources,g=this._sourceMapURL,p=0,h=o.length;p<h;p++){var d=o[p],f=null===d.source?null:c.at(d.source);null!==f&&(f=t.computeSourceURL(s,f,g)),a({source:f,generatedLine:d.generatedLine,generatedColumn:d.generatedColumn,originalLine:d.originalLine,originalColumn:d.originalColumn,name:null===d.name?null:u.at(d.name)})}},l.prototype.allGeneratedPositionsFor=function(e){var n=t.getArg(e,"line"),r={source:t.getArg(e,"source"),originalLine:n,originalColumn:t.getArg(e,"column",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var i=[],s=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",t.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(s>=0){var a=this._originalMappings[s];if(void 0===e.column)for(var l=a.originalLine;a&&a.originalLine===l;)i.push({line:t.getArg(a,"generatedLine",null),column:t.getArg(a,"generatedColumn",null),lastColumn:t.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s];else for(var u=a.originalColumn;a&&a.originalLine===n&&a.originalColumn==u;)i.push({line:t.getArg(a,"generatedLine",null),column:t.getArg(a,"generatedColumn",null),lastColumn:t.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s]}return i},n.SourceMapConsumer=l,u.prototype=Object.create(l.prototype),u.prototype.consumer=l,u.prototype._findSourceIndex=function(e){var n,r=e;if(null!=this.sourceRoot&&(r=t.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(n=0;n<this._absoluteSources.length;++n)if(this._absoluteSources[n]==e)return n;return-1},u.fromSourceMap=function(e,n){var r=Object.create(u.prototype),o=r._names=i.fromArray(e._names.toArray(),!0),s=r._sources=i.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=n,r._absoluteSources=r._sources.toArray().map((function(e){return t.computeSourceURL(r.sourceRoot,e,n)}));for(var l=e._mappings.toArray().slice(),g=r.__generatedMappings=[],p=r.__originalMappings=[],h=0,d=l.length;h<d;h++){var f=l[h],m=new c;m.generatedLine=f.generatedLine,m.generatedColumn=f.generatedColumn,f.source&&(m.source=s.indexOf(f.source),m.originalLine=f.originalLine,m.originalColumn=f.originalColumn,f.name&&(m.name=o.indexOf(f.name)),p.push(m)),g.push(m)}return a(r.__originalMappings,t.compareByOriginalPositions),r},u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){return this._absoluteSources.slice()}});const g=t.compareByGeneratedPositionsDeflatedNoLine;function p(e,n){let r=e.length,t=e.length-n;if(!(t<=1))if(2==t){let r=e[n],t=e[n+1];g(r,t)>0&&(e[n]=t,e[n+1]=r)}else if(t<20)for(let t=n;t<r;t++)for(let r=t;r>n;r--){let n=e[r-1],t=e[r];if(g(n,t)<=0)break;e[r-1]=t,e[r]=n}else a(e,g,n)}function h(e,n){var r=e;"string"==typeof e&&(r=t.parseSourceMapInput(e));var o=t.getArg(r,"version"),s=t.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new i,this._names=new i;var a={line:-1,column:0};this._sections=s.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=t.getArg(e,"offset"),o=t.getArg(r,"line"),i=t.getArg(r,"column");if(o<a.line||o===a.line&&i<a.column)throw new Error("Section offsets must be ordered and non-overlapping.");return a=r,{generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:new l(t.getArg(e,"map"),n)}}))}u.prototype._parseMappings=function(e,n){var r,o,i,l,u=1,g=0,h=0,d=0,f=0,m=0,_=e.length,v=0,y={},C=[],A=[];let L=0;for(;v<_;)if(";"===e.charAt(v))u++,v++,g=0,p(A,L),L=A.length;else if(","===e.charAt(v))v++;else{for((r=new c).generatedLine=u,i=v;i<_&&!this._charIsMappingSeparator(e,i);i++);for(e.slice(v,i),o=[];v<i;)s.decode(e,v,y),l=y.value,v=y.rest,o.push(l);if(2===o.length)throw new Error("Found a source, but no line and column");if(3===o.length)throw new Error("Found a source and line, but no column");if(r.generatedColumn=g+o[0],g=r.generatedColumn,o.length>1&&(r.source=f+o[1],f+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=d+o[3],d=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),A.push(r),"number"==typeof r.originalLine){let e=r.source;for(;C.length<=e;)C.push(null);null===C[e]&&(C[e]=[]),C[e].push(r)}}p(A,L),this.__generatedMappings=A;for(var S=0;S<C.length;S++)null!=C[S]&&a(C[S],t.compareByOriginalPositionsNoSource);this.__originalMappings=[].concat(...C)},u.prototype._findMapping=function(e,n,r,t,i,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return o.search(e,n,i,s)},u.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var n=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(n.generatedLine===r.generatedLine){n.lastGeneratedColumn=r.generatedColumn-1;continue}}n.lastGeneratedColumn=1/0}},u.prototype.originalPositionFor=function(e){var n={generatedLine:t.getArg(e,"line"),generatedColumn:t.getArg(e,"column")},r=this._findMapping(n,this._generatedMappings,"generatedLine","generatedColumn",t.compareByGeneratedPositionsDeflated,t.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(r>=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=t.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=t.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=t.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:t.getArg(o,"originalLine",null),column:t.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},u.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e}))},u.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var o,i=e;if(null!=this.sourceRoot&&(i=t.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=t.urlParse(this.sourceRoot))){var s=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(n)return null;throw new Error('"'+i+'" is not in the SourceMap.')},u.prototype.generatedPositionFor=function(e){var n=t.getArg(e,"source");if((n=this._findSourceIndex(n))<0)return{line:null,column:null,lastColumn:null};var r={source:n,originalLine:t.getArg(e,"line"),originalColumn:t.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",t.compareByOriginalPositions,t.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:t.getArg(i,"generatedLine",null),column:t.getArg(i,"generatedColumn",null),lastColumn:t.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},h.prototype=Object.create(l.prototype),h.prototype.constructor=l,h.prototype._version=3,Object.defineProperty(h.prototype,"sources",{get:function(){for(var e=[],n=0;n<this._sections.length;n++)for(var r=0;r<this._sections[n].consumer.sources.length;r++)e.push(this._sections[n].consumer.sources[r]);return e}}),h.prototype.originalPositionFor=function(e){var n={generatedLine:t.getArg(e,"line"),generatedColumn:t.getArg(e,"column")},r=o.search(n,this._sections,(function(e,n){return e.generatedLine-n.generatedOffset.generatedLine||e.generatedColumn-n.generatedOffset.generatedColumn})),i=this._sections[r];return i?i.consumer.originalPositionFor({line:n.generatedLine-(i.generatedOffset.generatedLine-1),column:n.generatedColumn-(i.generatedOffset.generatedLine===n.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},h.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},h.prototype.sourceContentFor=function(e,n){for(var r=0;r<this._sections.length;r++){var t=this._sections[r].consumer.sourceContentFor(e,!0);if(t||""===t)return t}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},h.prototype.generatedPositionFor=function(e){for(var n=0;n<this._sections.length;n++){var r=this._sections[n];if(-1!==r.consumer._findSourceIndex(t.getArg(e,"source"))){var o=r.consumer.generatedPositionFor(e);if(o)return{line:o.line+(r.generatedOffset.generatedLine-1),column:o.column+(r.generatedOffset.generatedLine===o.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},h.prototype._parseMappings=function(e,n){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var o=this._sections[r],i=o.consumer._generatedMappings,s=0;s<i.length;s++){var l=i[s],u=o.consumer._sources.at(l.source);null!==u&&(u=t.computeSourceURL(o.consumer.sourceRoot,u,this._sourceMapURL)),this._sources.add(u),u=this._sources.indexOf(u);var c=null;l.name&&(c=o.consumer._names.at(l.name),this._names.add(c),c=this._names.indexOf(c));var g={source:u,generatedLine:l.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:l.generatedColumn+(o.generatedOffset.generatedLine===l.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:l.originalLine,originalColumn:l.originalColumn,name:c};this.__generatedMappings.push(g),"number"==typeof g.originalLine&&this.__originalMappings.push(g)}a(this.__generatedMappings,t.compareByGeneratedPositionsDeflated),a(this.__originalMappings,t.compareByOriginalPositions)}},58203:(e,n,r)=>{var t=r(62778),o=r(25113),i=r(96605).C,s=r(73912).P;function a(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._ignoreInvalidMapping=o.getArg(e,"ignoreInvalidMapping",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}a.prototype._version=3,a.fromSourceMap=function(e,n){var r=e.sourceRoot,t=new a(Object.assign(n||{},{file:e.file,sourceRoot:r}));return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=r&&(n.source=o.relative(r,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),t.addMapping(n)})),e.sources.forEach((function(n){var i=n;null!==r&&(i=o.relative(r,n)),t._sources.has(i)||t._sources.add(i);var s=e.sourceContentFor(n);null!=s&&t.setSourceContent(n,s)})),t},a.prototype.addMapping=function(e){var n=o.getArg(e,"generated"),r=o.getArg(e,"original",null),t=o.getArg(e,"source",null),i=o.getArg(e,"name",null);(this._skipValidation||!1!==this._validateMapping(n,r,t,i))&&(null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:i}))},a.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=o.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},a.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var s=this._sourceRoot;null!=s&&(t=o.relative(s,t));var a=new i,l=new i;this._mappings.unsortedForEach((function(n){if(n.source===t&&null!=n.originalLine){var i=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=i.source&&(n.source=i.source,null!=r&&(n.source=o.join(r,n.source)),null!=s&&(n.source=o.relative(s,n.source)),n.originalLine=i.line,n.originalColumn=i.column,null!=i.name&&(n.name=i.name))}var u=n.source;null==u||a.has(u)||a.add(u);var c=n.name;null==c||l.has(c)||l.add(c)}),this),this._sources=a,this._names=l,e.sources.forEach((function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=o.join(r,n)),null!=s&&(n=o.relative(s,n)),this.setSourceContent(n,t))}),this)},a.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column){var o="original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";if(this._ignoreInvalidMapping)return"undefined"!=typeof console&&console.warn&&console.warn(o),!1;throw new Error(o)}if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r)){if(o="Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}),this._ignoreInvalidMapping)return"undefined"!=typeof console&&console.warn&&console.warn(o),!1;throw new Error(o)}},a.prototype._serializeMappings=function(){for(var e,n,r,i,s=0,a=1,l=0,u=0,c=0,g=0,p="",h=this._mappings.toArray(),d=0,f=h.length;d<f;d++){if(e="",(n=h[d]).generatedLine!==a)for(s=0;n.generatedLine!==a;)e+=";",a++;else if(d>0){if(!o.compareByGeneratedPositionsInflated(n,h[d-1]))continue;e+=","}e+=t.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(i=this._sources.indexOf(n.source),e+=t.encode(i-g),g=i,e+=t.encode(n.originalLine-1-u),u=n.originalLine-1,e+=t.encode(n.originalColumn-l),l=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=t.encode(r-c),c=r)),p+=e}return p},a.prototype._generateSourcesContent=function(e,n){return e.map((function(e){if(!this._sourcesContents)return null;null!=n&&(e=o.relative(n,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},a.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},a.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.x=a},2573:(e,n,r)=>{var t=r(58203).x,o=r(25113),i=/(\r?\n)/,s="$$$isSourceNode$$$";function a(e,n,r,t,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==n?null:n,this.source=null==r?null:r,this.name=null==o?null:o,this[s]=!0,null!=t&&this.add(t)}a.fromStringWithSourceMap=function(e,n,r){var t=new a,s=e.split(i),l=0,u=function(){return e()+(e()||"");function e(){return l<s.length?s[l++]:void 0}},c=1,g=0,p=null;return n.eachMapping((function(e){if(null!==p){if(!(c<e.generatedLine)){var n=(r=s[l]||"").substr(0,e.generatedColumn-g);return s[l]=r.substr(e.generatedColumn-g),g=e.generatedColumn,h(p,n),void(p=e)}h(p,u()),c++,g=0}for(;c<e.generatedLine;)t.add(u()),c++;if(g<e.generatedColumn){var r=s[l]||"";t.add(r.substr(0,e.generatedColumn)),s[l]=r.substr(e.generatedColumn),g=e.generatedColumn}p=e}),this),l<s.length&&(p&&h(p,u()),t.add(s.splice(l).join(""))),n.sources.forEach((function(e){var i=n.sourceContentFor(e);null!=i&&(null!=r&&(e=o.join(r,e)),t.setSourceContent(e,i))})),t;function h(e,n){if(null===e||void 0===e.source)t.add(n);else{var i=r?o.join(r,e.source):e.source;t.add(new a(e.originalLine,e.originalColumn,i,n,e.name))}}},a.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},a.prototype.prepend=function(e){if(Array.isArray(e))for(var n=e.length-1;n>=0;n--)this.prepend(e[n]);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},a.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r<t;r++)(n=this.children[r])[s]?n.walk(e):""!==n&&e(n,{source:this.source,line:this.line,column:this.column,name:this.name})},a.prototype.join=function(e){var n,r,t=this.children.length;if(t>0){for(n=[],r=0;r<t-1;r++)n.push(this.children[r]),n.push(e);n.push(this.children[r]),this.children=n}return this},a.prototype.replaceRight=function(e,n){var r=this.children[this.children.length-1];return r[s]?r.replaceRight(e,n):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,n):this.children.push("".replace(e,n)),this},a.prototype.setSourceContent=function(e,n){this.sourceContents[o.toSetString(e)]=n},a.prototype.walkSourceContents=function(e){for(var n=0,r=this.children.length;n<r;n++)this.children[n][s]&&this.children[n].walkSourceContents(e);var t=Object.keys(this.sourceContents);for(n=0,r=t.length;n<r;n++)e(o.fromSetString(t[n]),this.sourceContents[t[n]])},a.prototype.toString=function(){var e="";return this.walk((function(n){e+=n})),e},a.prototype.toStringWithSourceMap=function(e){var n={code:"",line:1,column:0},r=new t(e),o=!1,i=null,s=null,a=null,l=null;return this.walk((function(e,t){n.code+=e,null!==t.source&&null!==t.line&&null!==t.column?(i===t.source&&s===t.line&&a===t.column&&l===t.name||r.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name}),i=t.source,s=t.line,a=t.column,l=t.name,o=!0):o&&(r.addMapping({generated:{line:n.line,column:n.column}}),i=null,o=!1);for(var u=0,c=e.length;u<c;u++)10===e.charCodeAt(u)?(n.line++,n.column=0,u+1===c?(i=null,o=!1):o&&r.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name})):n.column++})),this.walkSourceContents((function(e,n){r.setSourceContent(e,n)})),{code:n.code,map:r}}},25113:(e,n)=>{n.getArg=function(e,n,r){if(n in e)return e[n];if(3===arguments.length)return r;throw new Error('"'+n+'" is a required argument.')};var r=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,t=/^data:.+\,.+$/;function o(e){var n=e.match(r);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function i(e){var n="";return e.scheme&&(n+=e.scheme+":"),n+="//",e.auth&&(n+=e.auth+"@"),e.host&&(n+=e.host),e.port&&(n+=":"+e.port),e.path&&(n+=e.path),n}n.urlParse=o,n.urlGenerate=i;var s,a,l=(s=function(e){var r=e,t=o(e);if(t){if(!t.path)return e;r=t.path}for(var s=n.isAbsolute(r),a=[],l=0,u=0;;){if(l=u,-1===(u=r.indexOf("/",l))){a.push(r.slice(l));break}for(a.push(r.slice(l,u));u<r.length&&"/"===r[u];)u++}var c,g=0;for(u=a.length-1;u>=0;u--)"."===(c=a[u])?a.splice(u,1):".."===c?g++:g>0&&(""===c?(a.splice(u+1,g),g=0):(a.splice(u,2),g--));return""===(r=a.join("/"))&&(r=s?"/":"."),t?(t.path=r,i(t)):r},a=[],function(e){for(var n=0;n<a.length;n++)if(a[n].input===e){var r=a[0];return a[0]=a[n],a[n]=r,a[0].result}var t=s(e);return a.unshift({input:e,result:t}),a.length>32&&a.pop(),t});function u(e,n){""===e&&(e="."),""===n&&(n=".");var r=o(n),s=o(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),i(r);if(r||n.match(t))return n;if(s&&!s.host&&!s.path)return s.host=n,i(s);var a="/"===n.charAt(0)?n:l(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,i(s)):a}n.normalize=l,n.join=u,n.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},n.relative=function(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if((e=e.slice(0,t)).match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)};var c=!("__proto__"in Object.create(null));function g(e){return e}function p(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function h(e,n){return e===n?0:null===e?1:null===n?-1:e>n?1:-1}n.toSetString=c?g:function(e){return p(e)?"$"+e:e},n.fromSetString=c?g:function(e){return p(e)?e.slice(1):e},n.compareByOriginalPositions=function(e,n,r){var t=h(e.source,n.source);return 0!==t||0!=(t=e.originalLine-n.originalLine)||0!=(t=e.originalColumn-n.originalColumn)||r||0!=(t=e.generatedColumn-n.generatedColumn)||0!=(t=e.generatedLine-n.generatedLine)?t:h(e.name,n.name)},n.compareByOriginalPositionsNoSource=function(e,n,r){var t;return 0!=(t=e.originalLine-n.originalLine)||0!=(t=e.originalColumn-n.originalColumn)||r||0!=(t=e.generatedColumn-n.generatedColumn)||0!=(t=e.generatedLine-n.generatedLine)?t:h(e.name,n.name)},n.compareByGeneratedPositionsDeflated=function(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t||0!=(t=e.generatedColumn-n.generatedColumn)||r||0!==(t=h(e.source,n.source))||0!=(t=e.originalLine-n.originalLine)||0!=(t=e.originalColumn-n.originalColumn)?t:h(e.name,n.name)},n.compareByGeneratedPositionsDeflatedNoLine=function(e,n,r){var t=e.generatedColumn-n.generatedColumn;return 0!==t||r||0!==(t=h(e.source,n.source))||0!=(t=e.originalLine-n.originalLine)||0!=(t=e.originalColumn-n.originalColumn)?t:h(e.name,n.name)},n.compareByGeneratedPositionsInflated=function(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r||0!=(r=e.generatedColumn-n.generatedColumn)||0!==(r=h(e.source,n.source))||0!=(r=e.originalLine-n.originalLine)||0!=(r=e.originalColumn-n.originalColumn)?r:h(e.name,n.name)},n.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},n.computeSourceURL=function(e,n,r){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),r){var t=o(r);if(!t)throw new Error("sourceMapURL could not be parsed");if(t.path){var s=t.path.lastIndexOf("/");s>=0&&(t.path=t.path.substring(0,s+1))}n=u(i(t),n)}return l(n)}},1631:(e,n,r)=>{r(58203).x,n.SourceMapConsumer=r(40396).SourceMapConsumer,r(2573)}}]);
+//# sourceMappingURL=9245.d882c265.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9245.d882c265.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9245.d882c265.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/@mui/material/Link/Link.js","../../../node_modules/@mui/material/Link/linkClasses.js","../../../node_modules/source-map-js/lib/array-set.js","../../../node_modules/source-map-js/lib/base64-vlq.js","../../../node_modules/source-map-js/lib/base64.js","../../../node_modules/source-map-js/lib/binary-search.js","../../../node_modules/source-map-js/lib/mapping-list.js","../../../node_modules/source-map-js/lib/quick-sort.js","../../../node_modules/source-map-js/lib/source-map-consumer.js","../../../node_modules/source-map-js/lib/source-map-generator.js","../../../node_modules/source-map-js/lib/source-node.js","../../../node_modules/source-map-js/lib/util.js","../../../node_modules/source-map-js/source-map.js"],"sourcesContent":["import { getPath } from '@mui/system/style';\nimport { alpha } from '@mui/system/colorManipulator';\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = ownerState.color;\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/system/colorManipulator';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Typography from \"../Typography/index.js\";\nimport linkClasses, { getLinkUtilityClass } from \"./linkClasses.js\";\nimport getTextDecoration from \"./getTextDecoration.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst v6Colors = {\n  primary: true,\n  secondary: true,\n  error: true,\n  info: true,\n  success: true,\n  warning: true,\n  textPrimary: true,\n  textSecondary: true,\n  textDisabled: true\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(memoTheme(({\n  theme\n}) => {\n  return {\n    variants: [{\n      props: {\n        underline: 'none'\n      },\n      style: {\n        textDecoration: 'none'\n      }\n    }, {\n      props: {\n        underline: 'hover'\n      },\n      style: {\n        textDecoration: 'none',\n        '&:hover': {\n          textDecoration: 'underline'\n        }\n      }\n    }, {\n      props: {\n        underline: 'always'\n      },\n      style: {\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecorationColor: 'inherit'\n        }\n      }\n    }, {\n      props: ({\n        underline,\n        ownerState\n      }) => underline === 'always' && ownerState.color !== 'inherit',\n      style: {\n        textDecorationColor: 'var(--Link-underlineColor)'\n      }\n    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n      props: {\n        underline: 'always',\n        color\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.4)` : alpha(theme.palette[color].main, 0.4)\n      }\n    })), {\n      props: {\n        underline: 'always',\n        color: 'textPrimary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textSecondary'\n      },\n      style: {\n        '--Link-underlineColor': theme.vars ? `rgba(${theme.vars.palette.text.secondaryChannel} / 0.4)` : alpha(theme.palette.text.secondary, 0.4)\n      }\n    }, {\n      props: {\n        underline: 'always',\n        color: 'textDisabled'\n      },\n      style: {\n        '--Link-underlineColor': (theme.vars || theme).palette.text.disabled\n      }\n    }, {\n      props: {\n        component: 'button'\n      },\n      style: {\n        position: 'relative',\n        WebkitTapHighlightColor: 'transparent',\n        backgroundColor: 'transparent',\n        // Reset default value\n        // We disable the focus ring for mouse, touch and keyboard users.\n        outline: 0,\n        border: 0,\n        margin: 0,\n        // Remove the margin in Safari\n        borderRadius: 0,\n        padding: 0,\n        // Remove the padding in Firefox\n        cursor: 'pointer',\n        userSelect: 'none',\n        verticalAlign: 'middle',\n        MozAppearance: 'none',\n        // Reset\n        WebkitAppearance: 'none',\n        // Reset\n        '&::-moz-focus-inner': {\n          borderStyle: 'none' // Remove Firefox dotted outline.\n        },\n        [`&.${linkClasses.focusVisible}`]: {\n          outline: 'auto'\n        }\n      }\n    }]\n  };\n}));\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const theme = useTheme();\n  const {\n    className,\n    color = 'primary',\n    component = 'a',\n    onBlur,\n    onFocus,\n    TypographyClasses,\n    underline = 'always',\n    variant = 'inherit',\n    sx,\n    ...other\n  } = props;\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    if (!isFocusVisible(event.target)) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    if (isFocusVisible(event.target)) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, {\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: ref,\n    ownerState: ownerState,\n    variant: variant,\n    ...other,\n    sx: [...(v6Colors[color] === undefined ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])],\n    style: {\n      ...other.style,\n      ...(underline === 'always' && color !== 'inherit' && !v6Colors[color] && {\n        '--Link-underlineColor': getTextDecoration({\n          theme,\n          ownerState\n        })\n      })\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](https://mui.com/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\nfunction SortTemplate(comparator) {\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot, false) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n  return doQuickSort;\n}\n\nfunction cloneSort(comparator) {\n  let template = SortTemplate.toString();\n  let templateFn = new Function(`return ${template}`)();\n  return templateFn(comparator);\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\n\nlet sortCache = new WeakMap();\nexports.quickSort = function (ary, comparator, start = 0) {\n  let doQuickSort = sortCache.get(comparator);\n  if (doQuickSort === void 0) {\n    doQuickSort = cloneSort(comparator);\n    sortCache.set(comparator, doQuickSort);\n  }\n  doQuickSort(ary, comparator, start, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    var boundCallback = aCallback.bind(context);\n    var names = this._names;\n    var sources = this._sources;\n    var sourceMapURL = this._sourceMapURL;\n\n    for (var i = 0, n = mappings.length; i < n; i++) {\n      var mapping = mappings[i];\n      var source = mapping.source === null ? null : sources.at(mapping.source);\n      if(source !== null) {\n        source = util.computeSourceURL(sourceRoot, source, sourceMapURL);\n      }\n      boundCallback({\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : names.at(mapping.name)\n      });\n    }\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n\nconst compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine;\nfunction sortGenerated(array, start) {\n  let l = array.length;\n  let n = array.length - start;\n  if (n <= 1) {\n    return;\n  } else if (n == 2) {\n    let a = array[start];\n    let b = array[start + 1];\n    if (compareGenerated(a, b) > 0) {\n      array[start] = b;\n      array[start + 1] = a;\n    }\n  } else if (n < 20) {\n    for (let i = start; i < l; i++) {\n      for (let j = i; j > start; j--) {\n        let a = array[j - 1];\n        let b = array[j];\n        if (compareGenerated(a, b) <= 0) {\n          break;\n        }\n        array[j - 1] = b;\n        array[j] = a;\n      }\n    }\n  } else {\n    quickSort(array, compareGenerated, start);\n  }\n}\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    let subarrayStart = 0;\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n\n        sortGenerated(generatedMappings, subarrayStart);\n        subarrayStart = generatedMappings.length;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = [];\n        while (index < end) {\n          base64VLQ.decode(aStr, index, temp);\n          value = temp.value;\n          index = temp.rest;\n          segment.push(value);\n        }\n\n        if (segment.length === 2) {\n          throw new Error('Found a source, but no line and column');\n        }\n\n        if (segment.length === 3) {\n          throw new Error('Found a source and line, but no column');\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          let currentSource = mapping.source;\n          while (originalMappings.length <= currentSource) {\n            originalMappings.push(null);\n          }\n          if (originalMappings[currentSource] === null) {\n            originalMappings[currentSource] = [];\n          }\n          originalMappings[currentSource].push(mapping);\n        }\n      }\n    }\n\n    sortGenerated(generatedMappings, subarrayStart);\n    this.__generatedMappings = generatedMappings;\n\n    for (var i = 0; i < originalMappings.length; i++) {\n      if (originalMappings[i] != null) {\n        quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource);\n      }\n    }\n    this.__originalMappings = [].concat(...originalMappings);\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content || content === '') {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        if(source !== null) {\n          source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        }\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    }));\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      if (this._validateMapping(generated, original, source, name) === false) {\n        return;\n      }\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n      var message = 'original.line and original.column are not numbers -- you probably meant to omit ' +\n      'the original mapping entirely and only map the generated position. If so, pass ' +\n      'null for the original mapping instead of an object with empty or null values.'\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message);\n      }\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      var message = 'Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      });\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message)\n      }\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n  var cache = [];\n\n  return function(input) {\n    for (var i = 0; i < cache.length; i++) {\n      if (cache[i].input === input) {\n        var temp = cache[0];\n        cache[0] = cache[i];\n        cache[i] = temp;\n        return cache[0].result;\n      }\n    }\n\n    var result = f(input);\n\n    cache.unshift({\n      input,\n      result,\n    });\n\n    if (cache.length > MAX_CACHED_INPUTS) {\n      cache.pop();\n    }\n\n    return result;\n  };\n}\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nvar normalize = lruMemoize(function normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n  // Split the path into parts between `/` characters. This is much faster than\n  // using `.split(/\\/+/g)`.\n  var parts = [];\n  var start = 0;\n  var i = 0;\n  while (true) {\n    start = i;\n    i = path.indexOf(\"/\", start);\n    if (i === -1) {\n      parts.push(path.slice(start));\n      break;\n    } else {\n      parts.push(path.slice(start, i));\n      while (i < path.length && path[i] === \"/\") {\n        i++;\n      }\n    }\n  }\n\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n});\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\nfunction compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n"],"names":["theme","ownerState","transformedColor","color","channelColor","v6Colors","primary","secondary","error","info","success","warning","textPrimary","textSecondary","textDisabled","LinkRoot","styled","Typography","name","slot","overridesResolver","props","styles","root","capitalize","underline","component","button","memoTheme","variants","style","textDecoration","textDecorationColor","Object","entries","palette","filter","createSimplePaletteValueFilter","map","vars","mainChannel","main","text","primaryChannel","secondaryChannel","disabled","position","WebkitTapHighlightColor","backgroundColor","outline","border","margin","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","focusVisible","inProps","ref","useTheme","className","onBlur","onFocus","TypographyClasses","variant","sx","other","setFocusVisible","classes","slots","composeClasses","useUtilityClasses","clsx","event","isFocusVisible","target","undefined","Array","isArray","getLinkUtilityClass","util","has","prototype","hasOwnProperty","hasNativeMap","Map","ArraySet","this","_array","_set","create","fromArray","aArray","aAllowDuplicates","set","i","len","length","add","size","getOwnPropertyNames","aStr","sStr","toSetString","isDuplicate","call","idx","push","indexOf","get","Error","at","aIdx","toArray","slice","exports","base64","encode","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","result","shift","charCodeAt","charAt","value","rest","intToCharMap","split","number","TypeError","charCode","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","Math","floor","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","search","index","MappingList","_sorted","_last","generatedLine","generatedColumn","unsortedForEach","aCallback","aThisArg","forEach","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","sort","SortTemplate","comparator","swap","ary","x","y","temp","doQuickSort","p","r","low","high","round","random","pivot","j","q","sortCache","WeakMap","start","template","toString","Function","templateFn","cloneSort","binarySearch","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","aSourceMapURL","sourceMap","parseSourceMapInput","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","version","getArg","sources","names","sourceRoot","sourcesContent","mappings","file","_version","normalize","String","source","isAbsolute","relative","_names","_sources","_absoluteSources","s","computeSourceURL","_mappings","_sourceMapURL","Mapping","originalLine","originalColumn","fromSourceMap","__generatedMappings","defineProperty","configurable","enumerable","_parseMappings","__originalMappings","_charIsMappingSeparator","c","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","context","_generatedMappings","_originalMappings","boundCallback","bind","sourceMapURL","n","mapping","allGeneratedPositionsFor","aArgs","line","needle","_findSourceIndex","_findMapping","compareByOriginalPositions","column","lastColumn","consumer","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","compareGenerated","compareByGeneratedPositionsDeflatedNoLine","sortGenerated","array","l","a","b","lastOffset","_sections","url","offset","offsetLine","offsetColumn","generatedOffset","segment","end","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","originalMappings","subarrayStart","currentSource","compareByOriginalPositionsNoSource","concat","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","originalPositionFor","compareByGeneratedPositionsDeflated","hasContentsOfAllSources","some","sc","sourceContentFor","nullOnMissing","urlParse","fileUriAbsPath","replace","scheme","path","generatedPositionFor","constructor","sectionIndex","section","bias","every","content","generatedPosition","sectionMappings","adjustedMapping","SourceMapGenerator","_skipValidation","_ignoreInvalidMapping","_sourcesContents","aSourceMapConsumer","generatorOps","generator","assign","newMapping","generated","original","addMapping","sourceFile","sourceRelative","setSourceContent","_validateMapping","aSourceFile","aSourceContent","keys","applySourceMap","aSourceMapPath","newSources","newNames","join","aGenerated","aOriginal","aName","message","console","warn","JSON","stringify","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedLine","aSources","key","toJSON","REGEX_NEWLINE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","code","nextLine","substr","addMappingWithCode","splice","aChunk","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","fromSetString","str","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","arguments","urlRegexp","dataUrlRegexp","aUrl","match","auth","host","port","urlGenerate","aParsedUrl","f","cache","aPath","parts","part","up","input","pop","aRoot","aPathUrl","aRootUrl","joined","test","level","lastIndexOf","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","parse","sourceURL","parsed","substring"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9280.6e897b98.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9280],{79280:(e,t,n)=>{n.r(t),n.d(t,{default:()=>b});var s=n(46377),i=n(99834),a=n(66885),r=n(6434);const o=BigInt(32);"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(e,t){return function(e,t,n){const s=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*s)<<o|BigInt(e.getUint32(t,n)*s+e.getUint32(t+4,n)*i)}(this,e,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(e,t){return function(e,t,n){const s=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),r=Number(!n);return BigInt(s*r+i*a)<<o|BigInt(s*a+i*r)}(this,e,t)});var c=n(45834),l=n(35451);const f=440477507;function h(e,t){const n=e.prototype[t],s=`_memo_${t}`;e.prototype[t]=function(){return s in this||(this[s]=n.call(this)),this[s]}}const u=["T","C","A","G"],g=[];for(let e=0;e<256;e++)g.push(u[e>>6&3]+u[e>>4&3]+u[e>>2&3]+u[3&e]);const d=g.map((e=>e.toLowerCase()));class w{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new Error("must supply path or filehandle");this.filehandle=new c.EY(t)}}async _detectEndianness(){const e=await this.filehandle.read(l.hp.allocUnsafe(8),0,8,0),{buffer:t}=e;if(t.readInt32LE(0)!==f)throw t.readInt32BE(0)===f?new Error("big endian not supported"):new Error("not a 2bit file");this.version=t.readInt32LE(4)}async getHeader(){await this._detectEndianness();const{buffer:e}=await this.filehandle.read(l.hp.allocUnsafe(16),0,16,0),t=e,n=!0,s=new DataView(t.buffer,t.byteOffset,t.length);let i=0;const a=s.getInt32(i,n);if(i+=4,440477507!==a)throw new Error(`Wrong magic number ${a}`);const r=s.getInt32(i,n);i+=4;const o=s.getUint32(i,n);return i+=4,{version:r,magic:a,sequenceCount:o,reserved:s.getUint32(i,n)}}async getIndex(){const e=await this.getHeader(),t=8+e.sequenceCount*(257+(1===this.version?8:4)),{buffer:n}=await this.filehandle.read(l.hp.allocUnsafe(t),0,t,8),s=!0,i=n,a=new DataView(i.buffer,i.byteOffset,i.length);let r=0;const o=a.getUint32(r,s);r+=4,r+=4;const c=[];for(let t=0;t<o;t++){const t=a.getUint8(r);r+=1;const i=n.subarray(r,r+t).toString();if(r+=t,1===e.version){const e=Number(a.getBigUint64(r,s));r+=8,c.push({offset:e,name:i})}else{const e=a.getUint32(r,s);r+=4,c.push({offset:e,name:i})}}return Object.fromEntries(c.map((({name:e,offset:t})=>[e,t])))}async getSequenceNames(){const e=await this.getIndex();return Object.keys(e)}async getSequenceSizes(){const e=await this.getIndex(),t=Object.keys(e),n=Object.values(e).map((e=>this._getSequenceSize(e))),s=await Promise.all(n),i={};for(const[e,n]of t.entries())i[n]=s[e];return i}async getSequenceSize(e){const t=(await this.getIndex())[e];if(t)return this._getSequenceSize(t)}async _getSequenceSize(e){return this._record1(e).then((e=>e.dnaSize))}async _record1(e,t=8){const{buffer:n}=await this.filehandle.read(l.hp.allocUnsafe(t),0,t,e),s=n,i=!0;let a=0;const r=new DataView(s.buffer,s.byteOffset,s.length),o=r.getUint32(a,i);a+=4;const c=r.getUint32(a,i);return a+=4,{dnaSize:o,nBlockCount:c}}async _record2(e,t){const{buffer:n}=await this.filehandle.read(l.hp.allocUnsafe(t),0,t,e),s=n,i=!0;let a=0;const r=new DataView(s.buffer,s.byteOffset,s.length),o=r.getUint32(a,i);a+=4;const c=[];for(let e=0;e<o;e++){const e=r.getUint32(a,i);a+=4,c.push(e)}const f=[];for(let e=0;e<o;e++){const e=r.getUint32(a,i);a+=4,f.push(e)}return{maskBlockCount:r.getUint32(a,i),nBlockSizes:f,nBlockStarts:c}}async _record3(e,t){const{buffer:n}=await this.filehandle.read(l.hp.allocUnsafe(t),0,t,e),s=n,i=!0;let a=0;const r=new DataView(s.buffer,s.byteOffset,s.length),o=r.getUint32(a,i);a+=4;const c=[];for(let e=0;e<o;e++){const e=r.getUint32(a,i);a+=4,c.push(e)}const f=[];for(let e=0;e<o;e++){const e=r.getUint32(a,i);a+=4,f.push(e)}return{maskBlockCount:o,maskBlockSizes:f,maskBlockStarts:c,reserved:r.getInt32(a,i)}}async _getSequenceRecord(e){const t=await this._record1(e),n=8*t.nBlockCount+8,s=await this._record2(e+4,n),i=8*s.maskBlockCount+8,a=await this._record3(e+4+n-4,i);return{dnaSize:t.dnaSize,nBlocks:{starts:s.nBlockStarts,sizes:s.nBlockSizes},maskBlocks:{starts:a.maskBlockStarts,sizes:a.maskBlockSizes},dnaPosition:e+4+n-4+i}}async getSequence(e,t=0,n=Number.POSITIVE_INFINITY){const s=(await this.getIndex())[e];if(!s)return;const i=await this._getSequenceRecord(s);if(t<0)throw new TypeError("regionStart cannot be less than 0");(void 0===n||n>i.dnaSize)&&(n=i.dnaSize);const a=this._getOverlappingBlocks(t,n,i.nBlocks.starts,i.nBlocks.sizes),r=this._getOverlappingBlocks(t,n,i.maskBlocks.starts,i.maskBlocks.sizes),o=l.hp.allocUnsafe(Math.ceil((n-t)/4)+1),c=Math.floor(t/4),{buffer:f}=await this.filehandle.read(o,0,o.length,i.dnaPosition+c);let h="";for(let e=t;e<n;e+=1){for(;r.length>0&&r[0].end<=e;)r.shift();const t=r[0]&&r[0].start<=e&&r[0].end>e;if(a[0]&&e>=a[0].start&&e<a[0].end){const s=a.shift();for(;e<s.end&&e<n;e+=1)h+=t?"n":"N";e-=1}else{const n=e%4,s=f[Math.floor(e/4)-c];h+=t?d[s][n]:g[s][n]}}return h}_getOverlappingBlocks(e,t,n,s){let i,a;for(const[r,o]of n.entries())if(e>=o+s[r]||t<=o){if(void 0!==i){a=r;break}}else void 0===i&&(i=r);if(void 0===i)return[];void 0===a&&(a=n.length);const r=new Array(a-i);for(let e=i;e<a;e+=1)r[e-i]={start:n[e],end:n[e]+s[e],size:s[e]};return r}}h(w,"getIndex"),h(w,"getHeader");var p=n(68584);class b extends s.BaseSequenceAdapter{async initChromSizes(){const e=(0,p.readConfObject)(this.config,"chromSizesLocation");if("/path/to/default.chrom.sizes"!==e.uri&&""!==e.uri){const t=(0,i.openLocation)(e,this.pluginManager),n=await t.readFile("utf8");return Object.fromEntries(n.split(/\n|\r\n|\r/).filter((e=>!!e.trim())).map((e=>{const[t,n]=e.split("\t");return[t,+n]})))}}constructor(e,t,n){super(e,t,n);const s=this.pluginManager;this.chromSizesData=this.initChromSizes(),this.twobit=new w({filehandle:(0,i.openLocation)(this.getConf("twoBitLocation"),s)})}async getRefNames(){const e=await this.chromSizesData;return e?Object.keys(e):this.twobit.getSequenceNames()}async getRegions(){const e=await this.chromSizesData;if(e)return Object.keys(e).map((t=>({refName:t,start:0,end:e[t]})));const t=await this.twobit.getSequenceSizes();return Object.keys(t).map((e=>({refName:e,start:0,end:t[e]})))}getFeatures({refName:e,start:t,end:n}){return(0,a.ObservableCreate)((async s=>{const i=await this.twobit.getSequenceSize(e),a=void 0!==i?Math.min(i,n):n,o=await this.twobit.getSequence(e,t,a);o&&s.next(new r.A({id:`${e} ${t}-${a}`,data:{refName:e,start:t,end:a,seq:o}})),s.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=9280.6e897b98.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9280.6e897b98.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9280.6e897b98.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/twobit/src/bigint-polyfill/pure.ts","../../../node_modules/@gmod/twobit/src/bigint-polyfill/polyfill.ts","../../../node_modules/@gmod/twobit/src/twoBitFile.ts","../../../plugins/sequence/src/TwoBitAdapter/TwoBitAdapter.ts"],"sourcesContent":["const BigInt32 = BigInt(32)\n\nexport function getBigInt64(\n  dataView: DataView,\n  byteOffset: number,\n  littleEndian: boolean | undefined,\n): bigint {\n  const littleEndianMask = Number(!!littleEndian)\n  const bigEndianMask = Number(!littleEndian)\n\n  return (\n    (BigInt(\n      dataView.getInt32(byteOffset, littleEndian) * bigEndianMask +\n        dataView.getInt32(byteOffset + 4, littleEndian) * littleEndianMask,\n    ) <<\n      BigInt32) |\n    BigInt(\n      dataView.getUint32(byteOffset, littleEndian) * littleEndianMask +\n        dataView.getUint32(byteOffset + 4, littleEndian) * bigEndianMask,\n    )\n  )\n}\n\nexport function getBigUint64(\n  dataView: DataView,\n  byteOffset: number,\n  littleEndian: boolean | undefined,\n): bigint {\n  const a = dataView.getUint32(byteOffset, littleEndian)\n  const b = dataView.getUint32(byteOffset + 4, littleEndian)\n\n  const littleEndianMask = Number(!!littleEndian)\n  const bigEndianMask = Number(!littleEndian)\n\n  // This branch-less optimization is 77x faster than normal ternary operator.\n  // and only 3% slower than native implementation\n  // https://jsbench.me/p8kyhg1eqv/1\n  return (\n    (BigInt(a * bigEndianMask + b * littleEndianMask) << BigInt32) |\n    BigInt(a * littleEndianMask + b * bigEndianMask)\n  )\n}\n","import { getBigInt64, getBigUint64 } from './pure'\n\nif (!('getBigInt64' in DataView)) {\n  DataView.prototype.getBigInt64 = function (byteOffset, littleEndian) {\n    return getBigInt64(this, byteOffset, littleEndian)\n  }\n}\n\nif (!('getBigUint64' in DataView)) {\n  DataView.prototype.getBigUint64 = function (byteOffset, littleEndian) {\n    return getBigUint64(this, byteOffset, littleEndian)\n  }\n}\n","import { LocalFile, GenericFilehandle } from 'generic-filehandle'\nimport { Buffer } from 'buffer'\n\nconst TWOBIT_MAGIC = 0x1a412743\n\nfunction tinyMemoize(_class: any, methodName: string) {\n  const method = _class.prototype[methodName]\n  const memoAttributeName = `_memo_${methodName}`\n  _class.prototype[methodName] = function _tinyMemoized() {\n    if (!(memoAttributeName in this)) {\n      this[memoAttributeName] = method.call(this)\n    }\n    return this[memoAttributeName]\n  }\n}\n\nconst twoBit = ['T', 'C', 'A', 'G']\n// byteTo4Bases is an array of byteValue -> 'ACTG'\nconst byteTo4Bases = [] as string[]\nfor (let index = 0; index < 256; index++) {\n  byteTo4Bases.push(\n    twoBit[(index >> 6) & 3] +\n      twoBit[(index >> 4) & 3] +\n      twoBit[(index >> 2) & 3] +\n      twoBit[index & 3],\n  )\n}\n\nconst maskedByteTo4Bases = byteTo4Bases.map(bases => bases.toLowerCase())\n\nexport default class TwoBitFile {\n  private filehandle: GenericFilehandle\n  private version?: number\n\n  /**\n   * @param {object} args\n   * @param {string} [args.path] filesystem path for the .2bit file to open\n   * @param {Filehandle} [args.filehandle] node fs.promises-like filehandle for the .2bit file.\n   *  Only needs to support `filehandle.read(buffer, offset, length, position)`\n   */\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new Error('must supply path or filehandle')\n    }\n  }\n\n  async _detectEndianness() {\n    const returnValue = await this.filehandle.read(\n      Buffer.allocUnsafe(8),\n      0,\n      8,\n      0,\n    )\n    const { buffer } = returnValue\n    if (buffer.readInt32LE(0) === TWOBIT_MAGIC) {\n      this.version = buffer.readInt32LE(4)\n    } else if (buffer.readInt32BE(0) === TWOBIT_MAGIC) {\n      throw new Error('big endian not supported')\n    } else {\n      throw new Error('not a 2bit file')\n    }\n  }\n\n  // memoize\n  /**\n   * @returns {Promise} for object with the file's header information, like\n   *  `{ magic: 0x1a412743, version: 0, sequenceCount: 42, reserved: 0 }`\n   */\n  async getHeader() {\n    await this._detectEndianness()\n\n    const { buffer } = await this.filehandle.read(\n      Buffer.allocUnsafe(16),\n      0,\n      16,\n      0,\n    )\n\n    const b = buffer\n    const le = true\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    const magic = dataView.getInt32(offset, le)\n    offset += 4\n    if (magic !== 0x1a412743) {\n      throw new Error(`Wrong magic number ${magic}`)\n    }\n    const version = dataView.getInt32(offset, le)\n    offset += 4\n    const sequenceCount = dataView.getUint32(offset, le)\n    offset += 4\n    const reserved = dataView.getUint32(offset, le)\n\n    return { version, magic, sequenceCount, reserved }\n  }\n\n  // memoize\n  /**\n   * @returns {Promise} for object with the file's index of offsets, like `{ seqName: fileOffset, ...}`\n   */\n  async getIndex() {\n    const header = await this.getHeader()\n    const maxIndexLength =\n      8 + header.sequenceCount * (1 + 256 + (this.version === 1 ? 8 : 4))\n    const { buffer } = await this.filehandle.read(\n      Buffer.allocUnsafe(maxIndexLength),\n      0,\n      maxIndexLength,\n      8,\n    )\n\n    const le = true\n    const b = buffer\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n    let offset = 0\n    const sequenceCount = dataView.getUint32(offset, le)\n    offset += 4\n    // const reserved = dataView.getUint32(offset, le)\n    offset += 4\n    const indexData = []\n    for (let i = 0; i < sequenceCount; i++) {\n      const nameLength = dataView.getUint8(offset)\n      offset += 1\n      const name = buffer.subarray(offset, offset + nameLength).toString()\n      offset += nameLength\n      if (header.version === 1) {\n        const dataOffset = Number(dataView.getBigUint64(offset, le))\n        offset += 8\n        indexData.push({ offset: dataOffset, name })\n      } else {\n        const dataOffset = dataView.getUint32(offset, le)\n        offset += 4\n        indexData.push({ offset: dataOffset, name })\n      }\n    }\n\n    return Object.fromEntries(\n      indexData.map(({ name, offset }) => [name, offset]),\n    )\n  }\n\n  /**\n   * @returns {Promise} for an array of string sequence names that are found in the file\n   */\n  async getSequenceNames() {\n    const index = await this.getIndex()\n    return Object.keys(index)\n  }\n\n  /**\n   * @returns {Promise} for an object listing the lengths of all sequences like\n   * `{seqName: length, ...}`.\n   *\n   * note: this is a relatively slow operation especially if there are many\n   * refseqs in the file, if you can get this information from a different file\n   * e.g. a chrom.sizes file, it will be much faster\n   */\n  async getSequenceSizes() {\n    const index = await this.getIndex()\n    const seqNames = Object.keys(index)\n    const sizePromises = Object.values(index).map(offset =>\n      this._getSequenceSize(offset),\n    )\n    const sizes = await Promise.all(sizePromises)\n    const returnObject = {} as Record<string, number>\n    for (const [index_, seqName] of seqNames.entries()) {\n      returnObject[seqName] = sizes[index_]\n    }\n    return returnObject\n  }\n\n  /**\n   * @param {string} seqName name of the sequence\n   * @returns {Promise} for the sequence's length, or undefined if it is not in the file\n   */\n  async getSequenceSize(seqName: string) {\n    const index = await this.getIndex()\n    const offset = index[seqName]\n    if (!offset) {\n      return undefined\n    }\n    return this._getSequenceSize(offset)\n  }\n\n  async _getSequenceSize(offset: number) {\n    return this._record1(offset).then(f => f.dnaSize)\n  }\n\n  async _record1(offset2: number, len = 8) {\n    const { buffer } = await this.filehandle.read(\n      Buffer.allocUnsafe(len),\n      0,\n      len,\n      offset2,\n    )\n    const b = buffer\n    const le = true\n    let offset = 0\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n\n    const dnaSize = dataView.getUint32(offset, le)\n    offset += 4\n    const nBlockCount = dataView.getUint32(offset, le)\n    offset += 4\n    return { dnaSize, nBlockCount }\n  }\n\n  async _record2(offset2: number, len: number) {\n    const { buffer } = await this.filehandle.read(\n      Buffer.allocUnsafe(len),\n      0,\n      len,\n      offset2,\n    )\n    const b = buffer\n    const le = true\n    let offset = 0\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n\n    const nBlockCount = dataView.getUint32(offset, le)\n    offset += 4\n    const nBlockStarts = [] as number[]\n    for (let i = 0; i < nBlockCount; i++) {\n      const elt = dataView.getUint32(offset, le)\n      offset += 4\n      nBlockStarts.push(elt)\n    }\n    const nBlockSizes = [] as number[]\n    for (let i = 0; i < nBlockCount; i++) {\n      const elt = dataView.getUint32(offset, le)\n      offset += 4\n      nBlockSizes.push(elt)\n    }\n    const maskBlockCount = dataView.getUint32(offset, le)\n    return {\n      maskBlockCount,\n      nBlockSizes,\n      nBlockStarts,\n    }\n  }\n  async _record3(offset2: number, len: number) {\n    const { buffer } = await this.filehandle.read(\n      Buffer.allocUnsafe(len),\n      0,\n      len,\n      offset2,\n    )\n    const b = buffer\n    const le = true\n    let offset = 0\n    const dataView = new DataView(b.buffer, b.byteOffset, b.length)\n\n    const maskBlockCount = dataView.getUint32(offset, le)\n    offset += 4\n    const maskBlockStarts = [] as number[]\n    for (let i = 0; i < maskBlockCount; i++) {\n      const elt = dataView.getUint32(offset, le)\n      offset += 4\n      maskBlockStarts.push(elt)\n    }\n    const maskBlockSizes = [] as number[]\n    for (let i = 0; i < maskBlockCount; i++) {\n      const elt = dataView.getUint32(offset, le)\n      offset += 4\n      maskBlockSizes.push(elt)\n    }\n    const reserved = dataView.getInt32(offset, le)\n    return {\n      maskBlockCount,\n      maskBlockSizes,\n      maskBlockStarts,\n      reserved,\n    }\n  }\n\n  async _getSequenceRecord(offset: number) {\n    const rec1 = await this._record1(offset)\n    const rec2DataLen = rec1.nBlockCount * 8 + 8\n    const rec2 = await this._record2(offset + 4, rec2DataLen)\n    const rec3DataLen = rec2.maskBlockCount * 8 + 8\n    const rec3 = await this._record3(offset + 4 + rec2DataLen - 4, rec3DataLen)\n\n    const rec = {\n      dnaSize: rec1.dnaSize,\n      nBlocks: {\n        starts: rec2.nBlockStarts,\n        sizes: rec2.nBlockSizes,\n      },\n      maskBlocks: {\n        starts: rec3.maskBlockStarts,\n        sizes: rec3.maskBlockSizes,\n      },\n      dnaPosition: offset + 4 + rec2DataLen - 4 + rec3DataLen,\n    }\n    return rec\n  }\n\n  /**\n   * @param {string} seqName name of the sequence you want\n   * @param {number} [regionStart] optional 0-based half-open start of the sequence region to fetch.\n   * @param {number} [regionEnd] optional 0-based half-open end of the sequence region to fetch. defaults to end of the sequence\n   * @returns {Promise} for a string of sequence bases\n   */\n  async getSequence(\n    seqName: string,\n    regionStart = 0,\n    regionEnd = Number.POSITIVE_INFINITY,\n  ) {\n    const index = await this.getIndex()\n    const offset = index[seqName]\n    if (!offset) {\n      return undefined\n    }\n    // fetch the record for the seq\n    const record = await this._getSequenceRecord(offset)\n\n    if (regionStart < 0) {\n      throw new TypeError('regionStart cannot be less than 0')\n    }\n    // end defaults to the end of the sequence\n    if (regionEnd === undefined || regionEnd > record.dnaSize) {\n      regionEnd = record.dnaSize\n    }\n\n    const nBlocks = this._getOverlappingBlocks(\n      regionStart,\n      regionEnd,\n      record.nBlocks.starts,\n      record.nBlocks.sizes,\n    )\n    const maskBlocks = this._getOverlappingBlocks(\n      regionStart,\n      regionEnd,\n      record.maskBlocks.starts,\n      record.maskBlocks.sizes,\n    )\n\n    const baseBytes = Buffer.allocUnsafe(\n      Math.ceil((regionEnd - regionStart) / 4) + 1,\n    )\n    const baseBytesOffset = Math.floor(regionStart / 4)\n    const { buffer } = await this.filehandle.read(\n      baseBytes,\n      0,\n      baseBytes.length,\n      record.dnaPosition + baseBytesOffset,\n    )\n\n    let sequenceBases = ''\n    for (\n      let genomicPosition = regionStart;\n      genomicPosition < regionEnd;\n      genomicPosition += 1\n    ) {\n      // check whether we are currently masked\n      while (maskBlocks.length > 0 && maskBlocks[0].end <= genomicPosition) {\n        maskBlocks.shift()\n      }\n      const baseIsMasked =\n        maskBlocks[0] &&\n        maskBlocks[0].start <= genomicPosition &&\n        maskBlocks[0].end > genomicPosition\n\n      // process the N block if we have one\n      if (\n        nBlocks[0] &&\n        genomicPosition >= nBlocks[0].start &&\n        genomicPosition < nBlocks[0].end\n      ) {\n        const currentNBlock = nBlocks.shift()\n        for (\n          ;\n          genomicPosition < currentNBlock.end && genomicPosition < regionEnd;\n          genomicPosition += 1\n        ) {\n          sequenceBases += baseIsMasked ? 'n' : 'N'\n        }\n        genomicPosition -= 1\n      } else {\n        const bytePosition = Math.floor(genomicPosition / 4) - baseBytesOffset\n        const subPosition = genomicPosition % 4\n        const byte = buffer[bytePosition]\n        sequenceBases += baseIsMasked\n          ? maskedByteTo4Bases[byte][subPosition]\n          : byteTo4Bases[byte][subPosition]\n      }\n    }\n\n    return sequenceBases\n  }\n\n  _getOverlappingBlocks(\n    regionStart: number,\n    regionEnd: number,\n    blockStarts: number[],\n    blockSizes: number[],\n  ) {\n    // find the start and end indexes of the blocks that match\n    let startIndex: number | undefined\n    let endIndex: number | undefined\n    for (const [index, blockStart] of blockStarts.entries()) {\n      const blockSize = blockSizes[index]\n      if (regionStart >= blockStart + blockSize || regionEnd <= blockStart) {\n        // block does not overlap the region\n        if (startIndex !== undefined) {\n          endIndex = index\n          break\n        }\n      } else if (startIndex === undefined) {\n        startIndex = index\n      } // block does overlap the region, record this if it is the first\n    }\n\n    if (startIndex === undefined) {\n      return []\n    }\n\n    // now format some block objects to return\n    if (endIndex === undefined) {\n      endIndex = blockStarts.length\n    }\n\n    const blocks = new Array(endIndex - startIndex)\n    for (\n      let blockNumber = startIndex;\n      blockNumber < endIndex;\n      blockNumber += 1\n    ) {\n      blocks[blockNumber - startIndex] = {\n        start: blockStarts[blockNumber],\n        end: blockStarts[blockNumber] + blockSizes[blockNumber],\n        size: blockSizes[blockNumber],\n      }\n    }\n    return blocks\n  }\n}\n\ntinyMemoize(TwoBitFile, 'getIndex')\ntinyMemoize(TwoBitFile, 'getHeader')\n","import { BaseSequenceAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { TwoBitFile } from '@gmod/twobit'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nexport default class TwoBitAdapter extends BaseSequenceAdapter {\n  private twobit: TwoBitFile\n\n  // the chromSizesData can be used to speed up loading since TwoBit has to do\n  // many range requests at startup to perform the getRegions request\n  protected chromSizesData: Promise<Record<string, number> | undefined>\n\n  private async initChromSizes() {\n    const conf = readConfObject(this.config, 'chromSizesLocation')\n    // check against default and empty in case someone makes the field blank in\n    // config editor, may want better way to check \"optional config slots\" in\n    // future\n    if (conf.uri !== '/path/to/default.chrom.sizes' && conf.uri !== '') {\n      const file = openLocation(conf, this.pluginManager)\n      const data = await file.readFile('utf8')\n      return Object.fromEntries(\n        data\n          .split(/\\n|\\r\\n|\\r/)\n          .filter(line => !!line.trim())\n          .map(line => {\n            const [name, length] = line.split('\\t')\n            return [name!, +length!]\n          }),\n      )\n    }\n    return undefined\n  }\n\n  constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const pm = this.pluginManager\n    this.chromSizesData = this.initChromSizes()\n    this.twobit = new TwoBitFile({\n      filehandle: openLocation(this.getConf('twoBitLocation'), pm),\n    })\n  }\n\n  public async getRefNames() {\n    const chromSizesData = await this.chromSizesData\n    if (chromSizesData) {\n      return Object.keys(chromSizesData)\n    }\n    return this.twobit.getSequenceNames()\n  }\n\n  public async getRegions(): Promise<NoAssemblyRegion[]> {\n    const chromSizesData = await this.chromSizesData\n    if (chromSizesData) {\n      return Object.keys(chromSizesData).map(refName => ({\n        refName,\n        start: 0,\n        end: chromSizesData[refName]!,\n      }))\n    }\n    const refSizes = await this.twobit.getSequenceSizes()\n    return Object.keys(refSizes).map(refName => ({\n      refName,\n      start: 0,\n      end: refSizes[refName]!,\n    }))\n  }\n\n  /**\n   * Fetch features for a certain region\n   * @param param -\n   * @returns Observable of Feature objects in the region\n   */\n  public getFeatures({ refName, start, end }: NoAssemblyRegion) {\n    return ObservableCreate<Feature>(async observer => {\n      const size = await this.twobit.getSequenceSize(refName)\n      const regionEnd = size !== undefined ? Math.min(size, end) : end\n      const seq = await this.twobit.getSequence(refName, start, regionEnd)\n      if (seq) {\n        observer.next(\n          new SimpleFeature({\n            id: `${refName} ${start}-${regionEnd}`,\n            data: { refName, start, end: regionEnd, seq },\n          }),\n        )\n      }\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  public freeResources(/* { region } */): void {}\n}\n"],"names":["BigInt32","BigInt","DataView","prototype","getBigInt64","byteOffset","littleEndian","dataView","littleEndianMask","Number","bigEndianMask","getInt32","getUint32","this","getBigUint64","a","b","TWOBIT_MAGIC","tinyMemoize","_class","methodName","method","memoAttributeName","call","twoBit","byteTo4Bases","index","push","maskedByteTo4Bases","map","bases","toLowerCase","TwoBitFile","constructor","filehandle","path","Error","_detectEndianness","returnValue","read","allocUnsafe","buffer","readInt32LE","readInt32BE","version","getHeader","le","length","offset","magic","sequenceCount","reserved","getIndex","header","maxIndexLength","indexData","i","nameLength","getUint8","name","subarray","toString","dataOffset","Object","fromEntries","getSequenceNames","keys","getSequenceSizes","seqNames","sizePromises","values","_getSequenceSize","sizes","Promise","all","returnObject","index_","seqName","entries","getSequenceSize","_record1","then","f","dnaSize","offset2","len","nBlockCount","_record2","nBlockStarts","elt","nBlockSizes","maskBlockCount","_record3","maskBlockStarts","maskBlockSizes","_getSequenceRecord","rec1","rec2DataLen","rec2","rec3DataLen","rec3","nBlocks","starts","maskBlocks","dnaPosition","getSequence","regionStart","regionEnd","POSITIVE_INFINITY","record","TypeError","undefined","_getOverlappingBlocks","baseBytes","Math","ceil","baseBytesOffset","floor","sequenceBases","genomicPosition","end","shift","baseIsMasked","start","currentNBlock","subPosition","byte","blockStarts","blockSizes","startIndex","endIndex","blockStart","blocks","Array","blockNumber","size","TwoBitAdapter","BaseSequenceAdapter","initChromSizes","conf","readConfObject","config","uri","file","openLocation","pluginManager","data","readFile","split","filter","line","trim","getSubAdapter","super","pm","chromSizesData","twobit","getConf","getRefNames","getRegions","refName","refSizes","getFeatures","ObservableCreate","async","min","seq","observer","next","SimpleFeature","id","complete","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9292.96b77fb0.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9292],{62859:(e,t,o)=>{o.d(t,{A:()=>v});var r=o(7552),n=o(93878),i=o(70799),a=o(48054),s=o(15622),l=o(1791),c=o(55270),d=o(51148),p=o(60129),u=o(58520),m=o(4785),h=o(69500);const f=(0,d.Ay)(a.A,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,c.A)(e)||"classes"===e,overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`size${(0,s.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,t[(0,s.A)(o.size)],t[o.color]]}})((0,p.A)((({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${l.A.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}))),(0,p.A)((({theme:e})=>({variants:[...Object.entries(e.palette).filter((0,u.A)(["dark","contrastText"])).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}})))]}))),(0,p.A)((({theme:e})=>({[`&.${l.A.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})))),v=r.forwardRef((function(e,t){const o=(0,m.b)({props:e,name:"MuiFab"}),{children:r,className:a,color:c="default",component:d="button",disabled:p=!1,disableFocusRipple:u=!1,focusVisibleClassName:v,size:b="large",variant:g="circular",...y}=o,w={...o,color:c,component:d,disabled:p,disableFocusRipple:u,size:b,variant:g},x=(e=>{const{color:t,variant:o,classes:r,size:n}=e,a={root:["root",o,`size${(0,s.A)(n)}`,"inherit"===t?"colorInherit":t]},c=(0,i.A)(a,l.C,r);return{...r,...c}})(w);return(0,h.jsx)(f,{className:(0,n.A)(x.root,a),component:d,disabled:p,focusRipple:!u,focusVisibleClassName:(0,n.A)(x.focusVisible,v),ownerState:w,ref:t,...y,classes:x,children:r})}))},1791:(e,t,o)=>{o.d(t,{A:()=>a,C:()=>i});var r=o(33761),n=o(85693);function i(e){return(0,n.Ay)("MuiFab",e)}const a=(0,r.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"])},99292:(e,t,o)=>{o.r(t),o.d(t,{default:()=>$,getSpeedDialUtilityClass:()=>S,speedDialClasses:()=>D});var r=o(7552),n=(o(19487),o(93878)),i=o(70799),a=o(26218),s=o(93801),l=o(51148),c=o(48231),d=o(60129),p=o(4785),u=o(16157),m=o(28325),h=o(46302),f=o(51584),v=o(69500);const b={entering:{transform:"none"},entered:{transform:"none"}},g=r.forwardRef((function(e,t){const o=(0,c.A)(),n={enter:o.transitions.duration.enteringScreen,exit:o.transitions.duration.leavingScreen},{addEndListener:i,appear:a=!0,children:s,easing:l,in:d,onEnter:p,onEntered:g,onEntering:y,onExit:w,onExited:x,onExiting:A,style:C,timeout:E=n,TransitionComponent:S=u.Ay,...D}=e,R=r.useRef(null),k=(0,f.A)(R,(0,m.A)(s),t),z=e=>t=>{if(e){const o=R.current;void 0===t?e(o):e(o,t)}},M=z(y),F=z(((e,t)=>{(0,h.q)(e);const r=(0,h.c)({style:C,timeout:E,easing:l},{mode:"enter"});e.style.webkitTransition=o.transitions.create("transform",r),e.style.transition=o.transitions.create("transform",r),p&&p(e,t)})),$=z(g),T=z(A),L=z((e=>{const t=(0,h.c)({style:C,timeout:E,easing:l},{mode:"exit"});e.style.webkitTransition=o.transitions.create("transform",t),e.style.transition=o.transitions.create("transform",t),w&&w(e)})),I=z(x);return(0,v.jsx)(S,{appear:a,in:d,nodeRef:R,onEnter:F,onEntered:$,onEntering:M,onExit:L,onExited:I,onExiting:T,addEndListener:e=>{i&&i(R.current,e)},timeout:E,...D,children:(e,t)=>r.cloneElement(s,{style:{transform:"scale(0)",visibility:"exited"!==e||d?void 0:"hidden",...b[e],...C,...s.props.style},ref:k,...t})})}));var y=o(62859),w=o(15622),x=o(3755),A=o(77259),C=o(33761),E=o(85693);function S(e){return(0,E.Ay)("MuiSpeedDial",e)}const D=(0,C.A)("MuiSpeedDial",["root","fab","directionUp","directionDown","directionLeft","directionRight","actions","actionsClosed"]);var R=o(43045);function k(e){return"up"===e||"down"===e?"vertical":"right"===e||"left"===e?"horizontal":void 0}const z=(0,l.Ay)("div",{name:"MuiSpeedDial",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`direction${(0,w.A)(o.direction)}`]]}})((0,d.A)((({theme:e})=>({zIndex:(e.vars||e).zIndex.speedDial,display:"flex",alignItems:"center",pointerEvents:"none",variants:[{props:{direction:"up"},style:{flexDirection:"column-reverse",[`& .${D.actions}`]:{flexDirection:"column-reverse",marginBottom:-32,paddingBottom:48}}},{props:{direction:"down"},style:{flexDirection:"column",[`& .${D.actions}`]:{flexDirection:"column",marginTop:-32,paddingTop:48}}},{props:{direction:"left"},style:{flexDirection:"row-reverse",[`& .${D.actions}`]:{flexDirection:"row-reverse",marginRight:-32,paddingRight:48}}},{props:{direction:"right"},style:{flexDirection:"row",[`& .${D.actions}`]:{flexDirection:"row",marginLeft:-32,paddingLeft:48}}}]})))),M=(0,l.Ay)(y.A,{name:"MuiSpeedDial",slot:"Fab",overridesResolver:(e,t)=>t.fab})({pointerEvents:"auto"}),F=(0,l.Ay)("div",{name:"MuiSpeedDial",slot:"Actions",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.actions,!o.open&&t.actionsClosed]}})({display:"flex",pointerEvents:"auto",variants:[{props:({ownerState:e})=>!e.open,style:{transition:"top 0s linear 0.2s",pointerEvents:"none"}}]}),$=r.forwardRef((function(e,t){const o=(0,p.b)({props:e,name:"MuiSpeedDial"}),l=(0,c.A)(),d={enter:l.transitions.duration.enteringScreen,exit:l.transitions.duration.leavingScreen},{ariaLabel:u,FabProps:{ref:m,...h}={},children:b,className:y,direction:C="up",hidden:E=!1,icon:D,onBlur:$,onClose:T,onFocus:L,onKeyDown:I,onMouseEnter:P,onMouseLeave:j,onOpen:N,open:V,openIcon:B,slots:W={},slotProps:_={},TransitionComponent:K,TransitionProps:O,transitionDuration:H=d,...U}=o,[q,G]=(0,A.A)({controlled:V,default:!1,name:"SpeedDial",state:"open"}),J={...o,open:q,direction:C},Q=(e=>{const{classes:t,open:o,direction:r}=e,n={root:["root",`direction${(0,w.A)(r)}`],fab:["fab"],actions:["actions",!o&&"actionsClosed"]};return(0,i.A)(n,S,t)})(J),X=(0,a.A)(),Y=r.useRef(0),Z=r.useRef(),ee=r.useRef([]);ee.current=[ee.current[0]];const te=r.useCallback((e=>{ee.current[0]=e}),[]),oe=(0,f.A)(m,te),re=(e,t)=>o=>{ee.current[e+1]=o,t&&t(o)};r.useEffect((()=>{q||(Y.current=0,Z.current=void 0)}),[q]);const ne=e=>{"mouseleave"===e.type&&j&&j(e),"blur"===e.type&&$&&$(e),X.clear(),"blur"===e.type?X.start(0,(()=>{G(!1),T&&T(e,"blur")})):(G(!1),T&&T(e,"mouseLeave"))},ie=e=>{"mouseenter"===e.type&&P&&P(e),"focus"===e.type&&L&&L(e),X.clear(),q||X.start(0,(()=>{G(!0),N&&N(e,{focus:"focus",mouseenter:"mouseEnter"}[e.type])}))},ae=u.replace(/^[^a-z]+|[^\w:.-]+/gi,""),se=r.Children.toArray(b).filter((e=>r.isValidElement(e))),le=se.map(((e,t)=>{const{FabProps:{ref:o,...n}={},tooltipPlacement:i}=e.props,a=i||("vertical"===k(C)?"left":"top");return r.cloneElement(e,{FabProps:{...n,ref:re(t,o)},delay:30*(q?t:se.length-t),open:q,tooltipPlacement:a,id:`${ae}-action-${t}`})})),ce={slots:{transition:K,...W},slotProps:{transition:O,..._}},[de,pe]=(0,R.A)("transition",{elementType:g,externalForwardedProps:ce,ownerState:J});return(0,v.jsxs)(z,{className:(0,n.A)(Q.root,y),ref:t,role:"presentation",onKeyDown:e=>{I&&I(e);const t=e.key.replace("Arrow","").toLowerCase(),{current:o=t}=Z;if("Escape"===e.key)return G(!1),ee.current[0].focus(),void(T&&T(e,"escapeKeyDown"));if(k(t)===k(o)&&void 0!==k(t)){e.preventDefault();const r=t===o?1:-1,n=(0,s.A)(Y.current+r,0,ee.current.length-1);ee.current[n].focus(),Y.current=n,Z.current=o}},onBlur:ne,onFocus:ie,onMouseEnter:ie,onMouseLeave:ne,ownerState:J,...U,children:[(0,v.jsx)(de,{in:!E,timeout:H,unmountOnExit:!0,...pe,children:(0,v.jsx)(M,{color:"primary","aria-label":u,"aria-haspopup":"true","aria-expanded":q,"aria-controls":`${ae}-actions`,...h,onClick:e=>{h.onClick&&h.onClick(e),X.clear(),q?(G(!1),T&&T(e,"toggle")):(G(!0),N&&N(e,"toggle"))},className:(0,n.A)(Q.fab,h.className),ref:oe,ownerState:J,children:r.isValidElement(D)&&(0,x.A)(D,["SpeedDialIcon"])?r.cloneElement(D,{open:q}):D})}),(0,v.jsx)(F,{id:`${ae}-actions`,role:"menu","aria-orientation":k(C),className:(0,n.A)(Q.actions,!q&&Q.actionsClosed),ownerState:J,children:le})]})}))}}]);
+//# sourceMappingURL=9292.96b77fb0.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9292.96b77fb0.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9292.96b77fb0.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/Fab/Fab.js","../../../node_modules/@mui/material/Fab/fabClasses.js","../../../node_modules/@mui/material/Zoom/Zoom.js","../../../node_modules/@mui/material/SpeedDial/speedDialClasses.js","../../../node_modules/@mui/material/SpeedDial/SpeedDial.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from \"../ButtonBase/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return {\n    ...classes,\n    // forward the focused, disabled, etc. classes to the ButtonBase\n    ...composedClasses\n  };\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  ...theme.typography.button,\n  minHeight: 36,\n  transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  borderRadius: '50%',\n  padding: 0,\n  minWidth: 0,\n  width: 56,\n  height: 56,\n  zIndex: (theme.vars || theme).zIndex.fab,\n  boxShadow: (theme.vars || theme).shadows[6],\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[12]\n  },\n  color: theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText?.(theme.palette.grey[300]),\n  backgroundColor: (theme.vars || theme).palette.grey[300],\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.grey.A100,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette.grey[300]\n    },\n    textDecoration: 'none'\n  },\n  [`&.${fabClasses.focusVisible}`]: {\n    boxShadow: (theme.vars || theme).shadows[6]\n  },\n  variants: [{\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      size: 'medium'\n    },\n    style: {\n      width: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended'\n    },\n    style: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'small'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 8px',\n      borderRadius: 34 / 2,\n      minWidth: 34,\n      height: 34\n    }\n  }, {\n    props: {\n      variant: 'extended',\n      size: 'medium'\n    },\n    style: {\n      width: 'auto',\n      padding: '0 16px',\n      borderRadius: 40 / 2,\n      minWidth: 40,\n      height: 40\n    }\n  }, {\n    props: {\n      color: 'inherit'\n    },\n    style: {\n      color: 'inherit'\n    }\n  }]\n})), memoTheme(({\n  theme\n}) => ({\n  variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(['dark', 'contrastText'])) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].contrastText,\n      backgroundColor: (theme.vars || theme).palette[color].main,\n      '&:hover': {\n        backgroundColor: (theme.vars || theme).palette[color].dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }\n  }))]\n})), memoTheme(({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n})));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n    children,\n    className,\n    color = 'default',\n    component = 'button',\n    disabled = false,\n    disableFocusRipple = false,\n    focusVisibleClassName,\n    size = 'large',\n    variant = 'circular',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, {\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref,\n    ...other,\n    classes: classes,\n    children: children\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactNodeRef from '@mui/utils/getReactNodeRef';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { reflow, getTransitionProps } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  entering: {\n    transform: 'none'\n  },\n  entered: {\n    transform: 'none'\n  }\n};\n\n/**\n * The Zoom transition can be used for the floating variant of the\n * [Button](/material-ui/react-button/#floating-action-buttons) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Zoom = /*#__PURE__*/React.forwardRef(function Zoom(props, ref) {\n  const theme = useTheme();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    addEndListener,\n    appear = true,\n    children,\n    easing,\n    in: inProp,\n    onEnter,\n    onEntered,\n    onEntering,\n    onExit,\n    onExited,\n    onExiting,\n    style,\n    timeout = defaultTimeout,\n    // eslint-disable-next-line react/prop-types\n    TransitionComponent = Transition,\n    ...other\n  } = props;\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, getReactNodeRef(children), ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('transform', transitionProps);\n    node.style.transition = theme.transitions.create('transform', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('transform', transitionProps);\n    node.style.transition = theme.transitions.create('transform', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, {\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout,\n    ...other,\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, {\n        style: {\n          transform: 'scale(0)',\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n          ...styles[state],\n          ...style,\n          ...children.props.style\n        },\n        ref: handleRef,\n        ...childProps\n      });\n    }\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Zoom.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Zoom;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSpeedDialUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDial', slot);\n}\nconst speedDialClasses = generateUtilityClasses('MuiSpeedDial', ['root', 'fab', 'directionUp', 'directionDown', 'directionLeft', 'directionRight', 'actions', 'actionsClosed']);\nexport default speedDialClasses;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useTimeout from '@mui/utils/useTimeout';\nimport clamp from '@mui/utils/clamp';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Zoom from \"../Zoom/index.js\";\nimport Fab from \"../Fab/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport speedDialClasses, { getSpeedDialUtilityClass } from \"./speedDialClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    open,\n    direction\n  } = ownerState;\n  const slots = {\n    root: ['root', `direction${capitalize(direction)}`],\n    fab: ['fab'],\n    actions: ['actions', !open && 'actionsClosed']\n  };\n  return composeClasses(slots, getSpeedDialUtilityClass, classes);\n};\nfunction getOrientation(direction) {\n  if (direction === 'up' || direction === 'down') {\n    return 'vertical';\n  }\n  if (direction === 'right' || direction === 'left') {\n    return 'horizontal';\n  }\n  return undefined;\n}\nconst dialRadius = 32;\nconst spacingActions = 16;\nconst SpeedDialRoot = styled('div', {\n  name: 'MuiSpeedDial',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`direction${capitalize(ownerState.direction)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.speedDial,\n  display: 'flex',\n  alignItems: 'center',\n  pointerEvents: 'none',\n  variants: [{\n    props: {\n      direction: 'up'\n    },\n    style: {\n      flexDirection: 'column-reverse',\n      [`& .${speedDialClasses.actions}`]: {\n        flexDirection: 'column-reverse',\n        marginBottom: -dialRadius,\n        paddingBottom: spacingActions + dialRadius\n      }\n    }\n  }, {\n    props: {\n      direction: 'down'\n    },\n    style: {\n      flexDirection: 'column',\n      [`& .${speedDialClasses.actions}`]: {\n        flexDirection: 'column',\n        marginTop: -dialRadius,\n        paddingTop: spacingActions + dialRadius\n      }\n    }\n  }, {\n    props: {\n      direction: 'left'\n    },\n    style: {\n      flexDirection: 'row-reverse',\n      [`& .${speedDialClasses.actions}`]: {\n        flexDirection: 'row-reverse',\n        marginRight: -dialRadius,\n        paddingRight: spacingActions + dialRadius\n      }\n    }\n  }, {\n    props: {\n      direction: 'right'\n    },\n    style: {\n      flexDirection: 'row',\n      [`& .${speedDialClasses.actions}`]: {\n        flexDirection: 'row',\n        marginLeft: -dialRadius,\n        paddingLeft: spacingActions + dialRadius\n      }\n    }\n  }]\n})));\nconst SpeedDialFab = styled(Fab, {\n  name: 'MuiSpeedDial',\n  slot: 'Fab',\n  overridesResolver: (props, styles) => styles.fab\n})({\n  pointerEvents: 'auto'\n});\nconst SpeedDialActions = styled('div', {\n  name: 'MuiSpeedDial',\n  slot: 'Actions',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.actions, !ownerState.open && styles.actionsClosed];\n  }\n})({\n  display: 'flex',\n  pointerEvents: 'auto',\n  variants: [{\n    props: ({\n      ownerState\n    }) => !ownerState.open,\n    style: {\n      transition: 'top 0s linear 0.2s',\n      pointerEvents: 'none'\n    }\n  }]\n});\nconst SpeedDial = /*#__PURE__*/React.forwardRef(function SpeedDial(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSpeedDial'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n    ariaLabel,\n    FabProps: {\n      ref: origDialButtonRef,\n      ...FabProps\n    } = {},\n    children: childrenProp,\n    className,\n    direction = 'up',\n    hidden = false,\n    icon,\n    onBlur,\n    onClose,\n    onFocus,\n    onKeyDown,\n    onMouseEnter,\n    onMouseLeave,\n    onOpen,\n    open: openProp,\n    openIcon,\n    slots = {},\n    slotProps = {},\n    TransitionComponent: TransitionComponentProp,\n    TransitionProps: TransitionPropsProp,\n    transitionDuration = defaultTransitionDuration,\n    ...other\n  } = props;\n  const [open, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: 'SpeedDial',\n    state: 'open'\n  });\n  const ownerState = {\n    ...props,\n    open,\n    direction\n  };\n  const classes = useUtilityClasses(ownerState);\n  const eventTimer = useTimeout();\n\n  /**\n   * an index in actions.current\n   */\n  const focusedAction = React.useRef(0);\n\n  /**\n   * pressing this key while the focus is on a child SpeedDialAction focuses\n   * the next SpeedDialAction.\n   * It is equal to the first arrow key pressed while focus is on the SpeedDial\n   * that is not orthogonal to the direction.\n   * @type {utils.ArrowKey?}\n   */\n  const nextItemArrowKey = React.useRef();\n\n  /**\n   * refs to the Button that have an action associated to them in this SpeedDial\n   * [Fab, ...(SpeedDialActions > Button)]\n   * @type {HTMLButtonElement[]}\n   */\n  const actions = React.useRef([]);\n  actions.current = [actions.current[0]];\n  const handleOwnFabRef = React.useCallback(fabFef => {\n    actions.current[0] = fabFef;\n  }, []);\n  const handleFabRef = useForkRef(origDialButtonRef, handleOwnFabRef);\n\n  /**\n   * creates a ref callback for the Button in a SpeedDialAction\n   * Is called before the original ref callback for Button that was set in buttonProps\n   *\n   * @param dialActionIndex {number}\n   * @param origButtonRef {React.RefObject?}\n   */\n  const createHandleSpeedDialActionButtonRef = (dialActionIndex, origButtonRef) => {\n    return buttonRef => {\n      actions.current[dialActionIndex + 1] = buttonRef;\n      if (origButtonRef) {\n        origButtonRef(buttonRef);\n      }\n    };\n  };\n  const handleKeyDown = event => {\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n    const key = event.key.replace('Arrow', '').toLowerCase();\n    const {\n      current: nextItemArrowKeyCurrent = key\n    } = nextItemArrowKey;\n    if (event.key === 'Escape') {\n      setOpenState(false);\n      actions.current[0].focus();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n      return;\n    }\n    if (getOrientation(key) === getOrientation(nextItemArrowKeyCurrent) && getOrientation(key) !== undefined) {\n      event.preventDefault();\n      const actionStep = key === nextItemArrowKeyCurrent ? 1 : -1;\n\n      // stay within array indices\n      const nextAction = clamp(focusedAction.current + actionStep, 0, actions.current.length - 1);\n      actions.current[nextAction].focus();\n      focusedAction.current = nextAction;\n      nextItemArrowKey.current = nextItemArrowKeyCurrent;\n    }\n  };\n  React.useEffect(() => {\n    // actions were closed while navigation state was not reset\n    if (!open) {\n      focusedAction.current = 0;\n      nextItemArrowKey.current = undefined;\n    }\n  }, [open]);\n  const handleClose = event => {\n    if (event.type === 'mouseleave' && onMouseLeave) {\n      onMouseLeave(event);\n    }\n    if (event.type === 'blur' && onBlur) {\n      onBlur(event);\n    }\n    eventTimer.clear();\n    if (event.type === 'blur') {\n      eventTimer.start(0, () => {\n        setOpenState(false);\n        if (onClose) {\n          onClose(event, 'blur');\n        }\n      });\n    } else {\n      setOpenState(false);\n      if (onClose) {\n        onClose(event, 'mouseLeave');\n      }\n    }\n  };\n  const handleClick = event => {\n    if (FabProps.onClick) {\n      FabProps.onClick(event);\n    }\n    eventTimer.clear();\n    if (open) {\n      setOpenState(false);\n      if (onClose) {\n        onClose(event, 'toggle');\n      }\n    } else {\n      setOpenState(true);\n      if (onOpen) {\n        onOpen(event, 'toggle');\n      }\n    }\n  };\n  const handleOpen = event => {\n    if (event.type === 'mouseenter' && onMouseEnter) {\n      onMouseEnter(event);\n    }\n    if (event.type === 'focus' && onFocus) {\n      onFocus(event);\n    }\n\n    // When moving the focus between two items,\n    // a chain if blur and focus event is triggered.\n    // We only handle the last event.\n    eventTimer.clear();\n    if (!open) {\n      // Wait for a future focus or click event\n      eventTimer.start(0, () => {\n        setOpenState(true);\n        if (onOpen) {\n          const eventMap = {\n            focus: 'focus',\n            mouseenter: 'mouseEnter'\n          };\n          onOpen(event, eventMap[event.type]);\n        }\n      });\n    }\n  };\n\n  // Filter the label for valid id characters.\n  const id = ariaLabel.replace(/^[^a-z]+|[^\\w:.-]+/gi, '');\n  const allItems = React.Children.toArray(childrenProp).filter(child => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The SpeedDial component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    return /*#__PURE__*/React.isValidElement(child);\n  });\n  const children = allItems.map((child, index) => {\n    const {\n      FabProps: {\n        ref: origButtonRef,\n        ...ChildFabProps\n      } = {},\n      tooltipPlacement: tooltipPlacementProp\n    } = child.props;\n    const tooltipPlacement = tooltipPlacementProp || (getOrientation(direction) === 'vertical' ? 'left' : 'top');\n    return /*#__PURE__*/React.cloneElement(child, {\n      FabProps: {\n        ...ChildFabProps,\n        ref: createHandleSpeedDialActionButtonRef(index, origButtonRef)\n      },\n      delay: 30 * (open ? index : allItems.length - index),\n      open,\n      tooltipPlacement,\n      id: `${id}-action-${index}`\n    });\n  });\n  const backwardCompatibleSlots = {\n    transition: TransitionComponentProp,\n    ...slots\n  };\n  const backwardCompatibleSlotProps = {\n    transition: TransitionPropsProp,\n    ...slotProps\n  };\n  const externalForwardedProps = {\n    slots: backwardCompatibleSlots,\n    slotProps: backwardCompatibleSlotProps\n  };\n  const [TransitionSlot, transitionProps] = useSlot('transition', {\n    elementType: Zoom,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(SpeedDialRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: \"presentation\",\n    onKeyDown: handleKeyDown,\n    onBlur: handleClose,\n    onFocus: handleOpen,\n    onMouseEnter: handleOpen,\n    onMouseLeave: handleClose,\n    ownerState: ownerState,\n    ...other,\n    children: [/*#__PURE__*/_jsx(TransitionSlot, {\n      in: !hidden,\n      timeout: transitionDuration,\n      unmountOnExit: true,\n      ...transitionProps,\n      children: /*#__PURE__*/_jsx(SpeedDialFab, {\n        color: \"primary\",\n        \"aria-label\": ariaLabel,\n        \"aria-haspopup\": \"true\",\n        \"aria-expanded\": open,\n        \"aria-controls\": `${id}-actions`,\n        ...FabProps,\n        onClick: handleClick,\n        className: clsx(classes.fab, FabProps.className),\n        ref: handleFabRef,\n        ownerState: ownerState,\n        children: /*#__PURE__*/React.isValidElement(icon) && isMuiElement(icon, ['SpeedDialIcon']) ? /*#__PURE__*/React.cloneElement(icon, {\n          open\n        }) : icon\n      })\n    }), /*#__PURE__*/_jsx(SpeedDialActions, {\n      id: `${id}-actions`,\n      role: \"menu\",\n      \"aria-orientation\": getOrientation(direction),\n      className: clsx(classes.actions, !open && classes.actionsClosed),\n      ownerState: ownerState,\n      children: children\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SpeedDial.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The aria-label of the button element.\n   * Also used to provide the `id` for the `SpeedDial` element and its children.\n   */\n  ariaLabel: PropTypes.string.isRequired,\n  /**\n   * SpeedDialActions to display when the SpeedDial is `open`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The direction the actions open relative to the floating action button.\n   * @default 'up'\n   */\n  direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n  /**\n   * Props applied to the [`Fab`](https://mui.com/material-ui/api/fab/) element.\n   * @default {}\n   */\n  FabProps: PropTypes.object,\n  /**\n   * If `true`, the SpeedDial is hidden.\n   * @default false\n   */\n  hidden: PropTypes.bool,\n  /**\n   * The icon to display in the SpeedDial Fab. The `SpeedDialIcon` component\n   * provides a default Icon with animation.\n   */\n  icon: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggle\"`, `\"blur\"`, `\"mouseLeave\"`, `\"escapeKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be open.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggle\"`, `\"focus\"`, `\"mouseEnter\"`.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * The icon to display in the SpeedDial Fab when the SpeedDial is open.\n   */\n  openIcon: PropTypes.node,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    transition: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Zoom\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default SpeedDial;"],"names":["FabRoot","name","slot","shouldForwardProp","prop","overridesResolver","props","styles","ownerState","root","variant","size","color","colorInherit","theme","typography","button","minHeight","transition","transitions","create","duration","short","borderRadius","padding","minWidth","width","height","zIndex","vars","fab","boxShadow","shadows","palette","text","primary","getContrastText","grey","backgroundColor","A100","textDecoration","focusVisible","variants","style","Object","entries","filter","map","contrastText","main","dark","disabled","action","disabledBackground","inProps","ref","children","className","component","disableFocusRipple","focusVisibleClassName","other","classes","slots","composedClasses","useUtilityClasses","focusRipple","getFabUtilityClass","entering","transform","entered","useTheme","defaultTimeout","enter","enteringScreen","exit","leavingScreen","addEndListener","appear","easing","in","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","timeout","TransitionComponent","Transition","nodeRef","handleRef","useForkRef","getReactNodeRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","current","undefined","handleEntering","handleEnter","isAppearing","transitionProps","mode","webkitTransition","handleEntered","handleExiting","handleExit","handleExited","next","state","childProps","visibility","getSpeedDialUtilityClass","generateUtilityClass","generateUtilityClasses","getOrientation","direction","SpeedDialRoot","styled","capitalize","memoTheme","speedDial","display","alignItems","pointerEvents","flexDirection","actions","marginBottom","paddingBottom","spacingActions","marginTop","paddingTop","marginRight","paddingRight","marginLeft","paddingLeft","SpeedDialFab","Fab","SpeedDialActions","open","actionsClosed","defaultTransitionDuration","ariaLabel","FabProps","origDialButtonRef","childrenProp","hidden","icon","onBlur","onClose","onFocus","onKeyDown","onMouseEnter","onMouseLeave","onOpen","openProp","openIcon","slotProps","TransitionComponentProp","TransitionProps","TransitionPropsProp","transitionDuration","setOpenState","useControlled","controlled","default","composeClasses","eventTimer","useTimeout","focusedAction","nextItemArrowKey","handleOwnFabRef","fabFef","handleFabRef","createHandleSpeedDialActionButtonRef","dialActionIndex","origButtonRef","buttonRef","handleClose","event","type","clear","start","handleOpen","focus","mouseenter","id","replace","allItems","toArray","child","index","ChildFabProps","tooltipPlacement","tooltipPlacementProp","delay","length","externalForwardedProps","TransitionSlot","useSlot","elementType","clsx","role","key","toLowerCase","nextItemArrowKeyCurrent","preventDefault","actionStep","nextAction","clamp","unmountOnExit","onClick","isMuiElement"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9305.4d748fb5.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9305],{69305:(e,t,a)=>{a.r(t),a.d(t,{default:()=>k});var l=a(7552),n=a(29499),r=a(36715),c=a(1343),o=a(58507),i=a(5401),u=a(92562),m=a(68584);const k=({tracks:e,onClose:t})=>{const[a,k]=(0,l.useState)(`MultiWiggle ${Date.now()}`),s=e.every((e=>"QuantitativeTrack"===e.type));return l.createElement(u.A,{open:!0,onClose:()=>{t(!1)},title:"Confirm multi-wiggle track create"},l.createElement(n.A,null,l.createElement(r.A,null,s?null:"Not every track looks like a QuantitativeTrack. This could have unexpected behavior, confirm if it looks ok.","Listing:"),l.createElement("ul",null,e.map((e=>l.createElement("li",{key:e.trackId},(0,m.readConfObject)(e,"name")," - ",e.type)))),l.createElement(c.A,{value:a,onChange:e=>{k(e.target.value)},helperText:"Track name"}),l.createElement(r.A,null,"Confirm creation of track?")),l.createElement(o.A,null,l.createElement(i.A,{onClick:()=>{t(!1)},color:"primary"},"Cancel"),l.createElement(i.A,{onClick:()=>{t(!0,{name:a})},color:"primary",variant:"contained",autoFocus:!0},"Submit")))}}}]);
+//# sourceMappingURL=9305.4d748fb5.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9305.4d748fb5.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9305.4d748fb5.chunk.js","mappings":"gPAcA,MAgEA,EAhEsBA,EACpBC,SACAC,cAKA,MAAOC,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,eAAeC,KAAKC,SAC7CC,EAAWP,EAAOQ,OAAMC,GAAgB,sBAAXA,EAAEC,OACrC,OACEC,EAAAA,cAACC,EAAAA,EAAM,CACLC,MAAI,EACJZ,QAASA,KACPA,GAAQ,EAAM,EAEhBa,MAAM,qCAENH,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAU,KACPT,EAEE,KADA,+GACK,YAGXI,EAAAA,cAAA,UACGX,EAAOiB,KAAIC,GACVP,EAAAA,cAAA,MAAIQ,IAAKD,EAAME,UACZC,EAAAA,EAAAA,gBAAeH,EAAO,QAAQ,MAAIA,EAAMR,SAI/CC,EAAAA,cAACW,EAAAA,EAAS,CACRC,MAAOrB,EACPsB,SAAUC,IACRtB,EAAOsB,EAAMC,OAAOH,MAAM,EAE5BI,WAAW,eAEbhB,EAAAA,cAACK,EAAAA,EAAU,KAAC,+BAEdL,EAAAA,cAACiB,EAAAA,EAAa,KACZjB,EAAAA,cAACkB,EAAAA,EAAM,CACLC,QAASA,KACP7B,GAAQ,EAAM,EAEhB8B,MAAM,WACP,UAGDpB,EAAAA,cAACkB,EAAAA,EAAM,CACLC,QAASA,KACP7B,GAAQ,EAAM,CAAE+B,KAAM9B,GAAM,EAE9B6B,MAAM,UACNE,QAAQ,YACRC,WAAS,GACV,WAII,C","sources":["../../../plugins/wiggle/src/CreateMultiWiggleExtension/ConfirmDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport Dialog from '@jbrowse/core/ui/Dialog'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\n\nconst ConfirmDialog = ({\n  tracks,\n  onClose,\n}: {\n  tracks: AnyConfigurationModel[]\n  onClose: (arg: boolean, arg1?: { name: string }) => void\n}) => {\n  const [val, setVal] = useState(`MultiWiggle ${Date.now()}`)\n  const allQuant = tracks.every(t => t.type === 'QuantitativeTrack')\n  return (\n    <Dialog\n      open\n      onClose={() => {\n        onClose(false)\n      }}\n      title=\"Confirm multi-wiggle track create\"\n    >\n      <DialogContent>\n        <Typography>\n          {!allQuant\n            ? 'Not every track looks like a QuantitativeTrack. This could have unexpected behavior, confirm if it looks ok.'\n            : null}\n          Listing:\n        </Typography>\n        <ul>\n          {tracks.map(track => (\n            <li key={track.trackId}>\n              {readConfObject(track, 'name')} - {track.type}\n            </li>\n          ))}\n        </ul>\n        <TextField\n          value={val}\n          onChange={event => {\n            setVal(event.target.value)\n          }}\n          helperText=\"Track name\"\n        />\n        <Typography>Confirm creation of track?</Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          onClick={() => {\n            onClose(false)\n          }}\n          color=\"primary\"\n        >\n          Cancel\n        </Button>\n        <Button\n          onClick={() => {\n            onClose(true, { name: val })\n          }}\n          color=\"primary\"\n          variant=\"contained\"\n          autoFocus\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n\nexport default ConfirmDialog\n"],"names":["ConfirmDialog","tracks","onClose","val","setVal","useState","Date","now","allQuant","every","t","type","React","Dialog","open","title","DialogContent","Typography","map","track","key","trackId","readConfObject","TextField","value","onChange","event","target","helperText","DialogActions","Button","onClick","color","name","variant","autoFocus"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9314.3e43d34c.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9314,9870],{59870:(e,t,n)=>{n.r(t),n.d(t,{bufferToString:()=>r,parseCsvBuffer:()=>u,parseTsvBuffer:()=>l});var a=n(99546);function r(e){return new TextDecoder("utf8",{fatal:!0}).decode(e)}async function s(e,t={}){return(await n.e(2847).then(n.t.bind(n,82847,23)).then((e=>e.default)))({noheader:!0,output:"csv",...t}).fromString(r(e))}function o(e,t,n){const r=e.rows[0].cells[t].text||"";let s,o="Text";try{s=(0,a.parseLocString)(r,n)}catch(e){}return s?.refName&&"number"==typeof s.start?o="LocString":/^\d+(\.\d+)?$/.test(r)&&(o="Number"),o}function c(e,t={}){const{hasColumnNameLine:n=!1,columnNameLineNumber:r=1,isValidRefName:s=()=>!1,selectedAssemblyName:c}=t;let u=0;const l={isLoaded:!0,rows:e.map(((e,t)=>{const a=t+(n?0:1);return e.length>u&&(u=e.length),{id:String(a),cells:e.map(((e,t)=>({columnNumber:t,text:e})))}}))},d={};if(n&&void 0!==r){const[e]=l.rows.splice(r-1,1);e&&e.cells.forEach(((e,t)=>{d[t]=e.text||""}))}const i=[],m=[];for(let e=0;e<u;e+=1){m.push(e);const t=o(l,e,s);if("LocString"===t)for(const t of l.rows){const n=t.cells[e];n.extendedData=(0,a.parseLocString)(n.text,s)}i[e]={name:d[e],dataType:{type:t}}}return{rowSet:l,columnDisplayOrder:m,hasColumnNames:!!n,columns:i,assemblyName:c}}async function u(e,t){return c(await s(e),t)}async function l(e,t){return c(await s(e,{delimiter:"\t"}),t)}},99314:(e,t,n)=>{n.r(t),n.d(t,{parseVcfBuffer:()=>c,splitVcfFileHeaderAndBody:()=>u});var a=n(9502),r=n(79230),s=n(59870);const o=[{name:"CHROM",type:"Text"},{name:"POS",type:"Number"},{name:"ID",type:"Text"},{name:"REF",type:"Text"},{name:"ALT",type:"Text"},{name:"QUAL",type:"Number"},{name:"FILTER",type:"Text"},{name:"INFO",type:"Text"},{name:"FORMAT",type:"Text"}];function c(e,t={}){const{selectedAssemblyName:n}=t;let{header:c,body:l}=u((0,s.bufferToString)(e));const d=[],i=new a.A({header:c});c="",l.split(/\n|\r\n|\r/).forEach(((e,t)=>{/\S/.test(e)&&d.push(function(e,t,n){const a=e.parseLine(t),s=new r._({variant:a,parser:e,id:`vcf-${n}`}),o=t.split("\t").map((e=>"."===e?"":e));return 8===o.length&&o.push(""),{id:String(n+1),extendedData:{vcfFeature:s.toJSON()},cells:o.map(((e,t)=>({columnNumber:t,text:e})))}}(i,e,t))})),l="";const m={isLoaded:!0,rows:d},f=[],p=[];for(let e=0;e<o.length;e+=1)f.push(e),p[e]={name:o[e].name,dataType:{type:o[e].type}};for(let e=0;e<i.samples.length;e+=1){const t=o.length+e;f.push(t),p[t]={name:i.samples[e],dataType:{type:"Text"}}}return f.push(f.length),p.unshift({name:"Location",dataType:{type:"LocString"},isDerived:!0,derivationFunctionText:"jexl:{text:row.extendedData.vcfFeature.refName+':'\n\n    +row.extendedData.vcfFeature.start+'..'+row.extendedData.vcfFeature.end, extendedData:\n\n    {refName:row.extendedData.vcfFeature.refName,start:row.extendedData.vcfFeature.start,end:row.extendedData.vcfFeature.end}}"}),{rowSet:m,columnDisplayOrder:f,hasColumnNames:!0,columns:p,assemblyName:n}}function u(e){let t,n=0;for(;n<e.length;n+=1){const a=e[n];if("\n"===t&&"#"!==a)break;t=a}return{header:e.slice(0,Math.max(0,n)),body:e.slice(n)}}}}]);
+//# sourceMappingURL=9314.3e43d34c.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9314.3e43d34c.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9314.3e43d34c.chunk.js","mappings":"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","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/ImportUtils.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/VcfImport.ts"],"sourcesContent":["import { ParsedLocString, parseLocString } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nexport function bufferToString(buffer: Buffer) {\n  return new TextDecoder('utf8', { fatal: true }).decode(buffer)\n}\n\nasync function parseWith(buffer: Buffer, options = {}) {\n  const csv = await import('csvtojson').then(module => module.default)\n  return csv({ noheader: true, output: 'csv', ...options }).fromString(\n    bufferToString(buffer),\n  )\n}\n\nexport interface Row {\n  id: string\n\n  extendedData?: any\n  cells: {\n    text: string\n\n    extendedData?: any\n  }[]\n}\n\nexport interface RowSet {\n  isLoaded: boolean\n  rows: Row[]\n}\n\nexport interface ParseOptions {\n  hasColumnNameLine?: boolean\n  columnNameLineNumber?: number\n  selectedAssemblyName?: string\n  isValidRefName?: (refName: string, assemblyName?: string) => boolean\n}\n\nexport interface Column {\n  name: string\n  dataType: { type: string }\n  isDerived?: boolean\n  derivationFunctionText?: string\n}\n\nfunction guessColumnType(\n  rowSet: RowSet,\n  columnNumber: number,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const text = rowSet.rows[0]!.cells[columnNumber]!.text || ''\n\n  let guessedType = 'Text'\n\n  let parsedLoc: ParsedLocString | undefined\n  try {\n    parsedLoc = parseLocString(text, isValidRefName)\n  } catch (error) {\n    //\n  }\n  if (parsedLoc?.refName && typeof parsedLoc.start === 'number') {\n    guessedType = 'LocString'\n  } else if (/^\\d+(\\.\\d+)?$/.test(text)) {\n    guessedType = 'Number'\n  }\n\n  // MAYBE TODO: iterate over the rest of the rows to confirm\n  // the type for all the rows\n\n  return guessedType\n}\n\nfunction dataToSpreadsheetSnapshot(\n  rows: string[][],\n  options: ParseOptions = {},\n) {\n  const {\n    hasColumnNameLine = false,\n    columnNameLineNumber = 1,\n    isValidRefName = () => false,\n    selectedAssemblyName,\n  } = options\n  // rows is an array of row objects and columnNames\n  // is an array of column names (in import order)\n  let maxCols = 0\n  const rowSet: RowSet = {\n    isLoaded: true,\n    rows: rows.map((row, rowNumber) => {\n      const id = rowNumber + (hasColumnNameLine ? 0 : 1)\n      if (row.length > maxCols) {\n        maxCols = row.length\n      }\n      return {\n        id: String(id),\n        cells: row.map((text, columnNumber) => {\n          return { columnNumber, text }\n        }),\n      }\n    }),\n  }\n\n  // process the column names row if present\n  const columnNames: Record<string, string> = {}\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (hasColumnNameLine && columnNameLineNumber !== undefined) {\n    const [colNamesRow] = rowSet.rows.splice(columnNameLineNumber - 1, 1)\n\n    if (colNamesRow) {\n      colNamesRow.cells.forEach((cell, columnNumber) => {\n        columnNames[columnNumber] = cell.text || ''\n      })\n    }\n  }\n\n  // make our column definitions\n  const columns: Column[] = []\n  const columnDisplayOrder = []\n  for (let columnNumber = 0; columnNumber < maxCols; columnNumber += 1) {\n    columnDisplayOrder.push(columnNumber)\n    const guessedType = guessColumnType(rowSet, columnNumber, isValidRefName)\n\n    // store extendeddata for LocString column\n    if (guessedType === 'LocString') {\n      for (const row of rowSet.rows) {\n        const cell = row.cells[columnNumber]!\n        cell.extendedData = parseLocString(cell.text, isValidRefName)\n      }\n    }\n\n    columns[columnNumber] = {\n      name: columnNames[columnNumber]!,\n      dataType: {\n        type: guessedType,\n      },\n    }\n  }\n\n  return {\n    rowSet,\n    columnDisplayOrder,\n    hasColumnNames: !!hasColumnNameLine,\n    columns,\n    assemblyName: selectedAssemblyName,\n  }\n}\n\nexport async function parseCsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer)\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n\nexport async function parseTsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer, { delimiter: '\\t' })\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n","import VCF from '@gmod/vcf'\nimport { VcfFeature } from '@jbrowse/plugin-variants'\nimport {\n  bufferToString,\n  Row,\n  RowSet,\n  Column,\n  ParseOptions,\n} from './ImportUtils'\nimport type { Buffer } from 'buffer'\n\nconst vcfCoreColumns: { name: string; type: string }[] = [\n  { name: 'CHROM', type: 'Text' }, // 0\n  { name: 'POS', type: 'Number' }, // 1\n  { name: 'ID', type: 'Text' }, // 2\n  { name: 'REF', type: 'Text' }, // 3\n  { name: 'ALT', type: 'Text' }, // 4\n  { name: 'QUAL', type: 'Number' }, // 5\n  { name: 'FILTER', type: 'Text' }, // 6\n  { name: 'INFO', type: 'Text' }, // 7\n  { name: 'FORMAT', type: 'Text' }, // 8\n]\n\nfunction vcfRecordToRow(vcfParser: any, line: string, lineNumber: number): Row {\n  const vcfVariant = vcfParser.parseLine(line)\n  const vcfFeature = new VcfFeature({\n    variant: vcfVariant,\n    parser: vcfParser,\n    id: `vcf-${lineNumber}`,\n  })\n\n  const data = line.split('\\t').map(d => (d === '.' ? '' : d))\n  // no format column, add blank\n  if (data.length === 8) {\n    data.push('')\n  }\n  const row: Row = {\n    id: String(lineNumber + 1),\n    extendedData: { vcfFeature: vcfFeature.toJSON() },\n    cells: data.map((text, columnNumber) => {\n      return {\n        columnNumber,\n        text,\n      }\n    }),\n  }\n  return row\n}\n\nexport function parseVcfBuffer(buffer: Buffer, options: ParseOptions = {}) {\n  const { selectedAssemblyName } = options\n  let { header, body } = splitVcfFileHeaderAndBody(bufferToString(buffer))\n  const rows: Row[] = []\n  const vcfParser = new VCF({ header })\n  header = '' // garbage collect\n  body.split(/\\n|\\r\\n|\\r/).forEach((line: string, lineNumber) => {\n    if (/\\S/.test(line)) {\n      rows.push(vcfRecordToRow(vcfParser, line, lineNumber))\n    }\n  })\n  body = '' // garbage collect\n\n  const rowSet: RowSet = {\n    isLoaded: true,\n    rows,\n  }\n\n  const columnDisplayOrder: number[] = []\n  const columns: Column[] = []\n  for (let i = 0; i < vcfCoreColumns.length; i += 1) {\n    columnDisplayOrder.push(i)\n    columns[i] = {\n      name: vcfCoreColumns[i]!.name,\n      dataType: { type: vcfCoreColumns[i]!.type },\n    }\n  }\n  for (let i = 0; i < vcfParser.samples.length; i += 1) {\n    const oi = vcfCoreColumns.length + i\n    columnDisplayOrder.push(oi)\n    columns[oi] = {\n      name: vcfParser.samples[i]!,\n      dataType: { type: 'Text' },\n    }\n  }\n\n  columnDisplayOrder.push(columnDisplayOrder.length)\n  columns.unshift({\n    name: 'Location',\n    dataType: { type: 'LocString' },\n    isDerived: true,\n    derivationFunctionText: `jexl:{text:row.extendedData.vcfFeature.refName+':'\\n\n    +row.extendedData.vcfFeature.start+'..'+row.extendedData.vcfFeature.end, extendedData:\\n\n    {refName:row.extendedData.vcfFeature.refName,start:row.extendedData.vcfFeature.start,end:row.extendedData.vcfFeature.end}}`,\n  })\n\n  return {\n    rowSet,\n    columnDisplayOrder,\n    hasColumnNames: true,\n    columns,\n    assemblyName: selectedAssemblyName,\n  }\n}\n\nexport function splitVcfFileHeaderAndBody(wholeFile: string) {\n  // split into header and the rest of the file\n  let headerEndIndex = 0\n  let prevChar: string | undefined\n  for (; headerEndIndex < wholeFile.length; headerEndIndex += 1) {\n    const c = wholeFile[headerEndIndex]\n    if (prevChar === '\\n' && c !== '#') {\n      break\n    }\n    prevChar = c\n  }\n\n  return {\n    header: wholeFile.slice(0, Math.max(0, headerEndIndex)),\n    body: wholeFile.slice(headerEndIndex),\n  }\n}\n"],"names":["bufferToString","buffer","TextDecoder","fatal","decode","async","parseWith","options","then","module","default","noheader","output","fromString","guessColumnType","rowSet","columnNumber","isValidRefName","text","rows","cells","parsedLoc","guessedType","parseLocString","error","refName","start","test","dataToSpreadsheetSnapshot","hasColumnNameLine","columnNameLineNumber","selectedAssemblyName","maxCols","isLoaded","map","row","rowNumber","id","length","String","columnNames","undefined","colNamesRow","splice","forEach","cell","columns","columnDisplayOrder","push","extendedData","name","dataType","type","hasColumnNames","assemblyName","parseCsvBuffer","parseTsvBuffer","delimiter","vcfCoreColumns","parseVcfBuffer","header","body","splitVcfFileHeaderAndBody","vcfParser","VCF","split","line","lineNumber","vcfVariant","parseLine","vcfFeature","VcfFeature","variant","parser","data","d","toJSON","vcfRecordToRow","i","samples","oi","unshift","isDerived","derivationFunctionText","wholeFile","prevChar","headerEndIndex","c","slice","Math","max"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9329.c269472b.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9329],{79329:(e,s,t)=>{t.r(s),t.d(s,{autocompleteClasses:()=>o.A,createFilterOptions:()=>a.Z,default:()=>l.A,getAutocompleteUtilityClass:()=>o.r});var l=t(48901),a=t(25419),o=t(73917)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/937.4f610bdf.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[937],{90937:(e,t,s)=>{s.r(t),s.d(t,{default:()=>l,openFilehandleWrapper:()=>u});var a=s(46377),n=s(66885),r=s(99834),o=s(6514),c=s(35451);class i{constructor(e){this.filehandle=e}async read(e,t){const{buffer:s}=await this.filehandle.read(c.hp.alloc(t),0,t,e);return s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength)}}function u(e,t){return new i((0,r.openLocation)(e,t))}class l extends a.BaseFeatureDataAdapter{constructor(e,t,s){super(e,t,s);const a=this.getConf("hicLocation");this.hic=new o.A({file:u(a,this.pluginManager)})}async setup(e){const{statusCallback:t=()=>{}}=e||{};t("Downloading .hic header");const s=await this.hic.getMetaData();return t(""),s}async getHeader(e){const t=await this.setup(e),{chromosomes:s,...a}=t;return a}async getRefNames(e){return(await this.setup(e)).chromosomes.map((e=>e.name))}async getResolution(e,t){const{resolutions:s}=await this.setup(t);let a=s.at(-1);for(let t=s.length-1;t>=0;t-=1){const n=s[t];n<=2*e&&(a=n)}return a}getFeatures(e,t={}){return(0,n.ObservableCreate)((async s=>{const{refName:a,start:n,end:r}=e,{resolution:o,bpPerPx:c=1,statusCallback:i=()=>{}}=t,u=await this.getResolution(c/(o||1e3),t);i("Downloading .hic data");const l=await this.hic.getContactRecords("KR",{start:n,chr:a,end:r},{start:n,chr:a,end:r},"BP",u);for(const e of l)s.next(e);i(""),s.complete()}),t.signal)}async getMultiRegionFeatureDensityStats(e){return{featureDensity:0}}freeResources(){}}}}]);
+//# sourceMappingURL=937.4f610bdf.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/937.4f610bdf.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/937.4f610bdf.chunk.js","mappings":"4OA0CA,MAAMA,EACJC,WAAAA,CAAoBC,GAA+B,KAA/BA,WAAAA,CAAgC,CAEpD,UAAMC,CAAKC,EAAkBC,GAC3B,MAAM,OAAEC,SAAiBC,KAAKL,WAAWC,KACvCK,EAAAA,GAAOC,MAAMJ,GACb,EACAA,EACAD,GAEF,OAAOE,EAAOA,OAAOI,MACnBJ,EAAOK,WACPL,EAAOK,WAAaL,EAAOM,WAE/B,EAEK,SAASC,EACdC,EACAC,GAEA,OAAO,IAAIf,GAAyBgB,EAAAA,EAAAA,cAAaF,EAAUC,GAC7D,CAae,MAAME,UAAmBC,EAAAA,uBAG/BjB,WAAAA,CACLkB,EACAC,EACAL,GAEAM,MAAMF,EAAQC,EAAeL,GAC7B,MAAMO,EAAcf,KAAKgB,QAAQ,eACjChB,KAAKiB,IAAM,IAAIC,EAAAA,EAAS,CACtBC,KAAMb,EAAsBS,EAAaf,KAAKQ,gBAElD,CAEA,WAAcY,CAAMC,GAClB,MAAM,eAAEC,EAAiBA,QAAaD,GAAQ,CAAC,EAC/CC,EAAe,2BACf,MAAMC,QAAevB,KAAKiB,IAAIO,cAE9B,OADAF,EAAe,IACRC,CACT,CAEA,eAAaE,CAAUJ,GACrB,MAAMK,QAAY1B,KAAKoB,MAAMC,IACvB,YAAEM,KAAgBC,GAASF,EACjC,OAAOE,CACT,CAEA,iBAAMC,CAAYR,GAEhB,aADuBrB,KAAKoB,MAAMC,IAClBM,YAAYG,KAAIC,GAAOA,EAAIC,MAC7C,CAEA,mBAAMC,CAAcC,EAAiBb,GACnC,MAAM,YAAEc,SAAsBnC,KAAKoB,MAAMC,GAEzC,IAAIe,EAAmBD,EAAYE,IAAI,GAEvC,IAAK,IAAIC,EAAIH,EAAYrC,OAAS,EAAGwC,GAAK,EAAGA,GAAK,EAAG,CACnD,MAAMC,EAAIJ,EAAYG,GAClBC,GAAK,EAAIL,IACXE,EAAmBG,EAEvB,CACA,OAAOH,CACT,CAEAI,WAAAA,CAAYC,EAAgBpB,EAAmB,CAAC,GAC9C,OAAOqB,EAAAA,EAAAA,mBAAgCC,UACrC,MAAQC,QAASb,EAAG,MAAEc,EAAK,IAAEC,GAAQL,GAC/B,WAAEM,EAAU,QAAEb,EAAU,EAAC,eAAEZ,EAAiBA,QAAaD,EACzD2B,QAAYhD,KAAKiC,cAAcC,GAAWa,GAAc,KAAO1B,GACrEC,EAAe,yBAEf,MAAM2B,QAAgBjD,KAAKiB,IAAIiC,kBAC7B,KACA,CAAEL,QAAOd,MAAKe,OACd,CAAED,QAAOd,MAAKe,OACd,KACAE,GAEF,IAAK,MAAMG,KAAUF,EACnBG,EAASC,KAAKF,GAEhB7B,EAAe,IACf8B,EAASE,UAAU,GAClBjC,EAAKkC,OACV,CAGA,uCAAMC,CAAkCC,GACtC,MAAO,CAAEC,eAAgB,EAC3B,CAEAC,aAAAA,GAAuC,E","sources":["../../../plugins/hic/src/HicAdapter/HicAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region, FileLocation } from '@jbrowse/core/util/types'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport type { GenericFilehandle } from 'generic-filehandle'\nimport HicStraw from 'hic-straw'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { Buffer } from 'buffer'\n\ninterface ContactRecord {\n  bin1: number\n  bin2: number\n  counts: number\n}\n\ninterface HicMetadata {\n  chromosomes: {\n    name: string\n    length: number\n    id: number\n  }[]\n  resolutions: number[]\n}\ninterface Ref {\n  chr: string\n  start: number\n  end: number\n}\n\ninterface HicOptions extends BaseOptions {\n  resolution?: number\n  bpPerPx?: number\n}\n\n// wraps generic-filehandle so the read function only takes a position and\n// length in some ways, generic-filehandle wishes it was just this but it has\n// to adapt to the node.js fs promises API\nclass GenericFilehandleWrapper {\n  constructor(private filehandle: GenericFilehandle) {}\n\n  async read(position: number, length: number) {\n    const { buffer } = await this.filehandle.read(\n      Buffer.alloc(length),\n      0,\n      length,\n      position,\n    )\n    return buffer.buffer.slice(\n      buffer.byteOffset,\n      buffer.byteOffset + buffer.byteLength,\n    )\n  }\n}\nexport function openFilehandleWrapper(\n  location: FileLocation,\n  pluginManager?: PluginManager,\n) {\n  return new GenericFilehandleWrapper(openLocation(location, pluginManager))\n}\n\ninterface HicParser {\n  getContactRecords: (\n    normalize: string,\n    ref: Ref,\n    ref2: Ref,\n    units: string,\n    binsize: number,\n  ) => Promise<ContactRecord[]>\n  getMetaData: () => Promise<HicMetadata>\n}\n\nexport default class HicAdapter extends BaseFeatureDataAdapter {\n  private hic: HicParser\n\n  public constructor(\n    config: AnyConfigurationModel,\n    getSubAdapter?: getSubAdapterType,\n    pluginManager?: PluginManager,\n  ) {\n    super(config, getSubAdapter, pluginManager)\n    const hicLocation = this.getConf('hicLocation')\n    this.hic = new HicStraw({\n      file: openFilehandleWrapper(hicLocation, this.pluginManager),\n    })\n  }\n\n  private async setup(opts?: BaseOptions) {\n    const { statusCallback = () => {} } = opts || {}\n    statusCallback('Downloading .hic header')\n    const result = await this.hic.getMetaData()\n    statusCallback('')\n    return result\n  }\n\n  public async getHeader(opts?: BaseOptions) {\n    const ret = await this.setup(opts)\n    const { chromosomes, ...rest } = ret\n    return rest\n  }\n\n  async getRefNames(opts?: BaseOptions) {\n    const metadata = await this.setup(opts)\n    return metadata.chromosomes.map(chr => chr.name)\n  }\n\n  async getResolution(bpPerPx: number, opts?: BaseOptions) {\n    const { resolutions } = await this.setup(opts)\n\n    let chosenResolution = resolutions.at(-1)!\n\n    for (let i = resolutions.length - 1; i >= 0; i -= 1) {\n      const r = resolutions[i]!\n      if (r <= 2 * bpPerPx) {\n        chosenResolution = r\n      }\n    }\n    return chosenResolution\n  }\n\n  getFeatures(region: Region, opts: HicOptions = {}) {\n    return ObservableCreate<ContactRecord>(async observer => {\n      const { refName: chr, start, end } = region\n      const { resolution, bpPerPx = 1, statusCallback = () => {} } = opts\n      const res = await this.getResolution(bpPerPx / (resolution || 1000), opts)\n      statusCallback('Downloading .hic data')\n\n      const records = await this.hic.getContactRecords(\n        'KR',\n        { start, chr, end },\n        { start, chr, end },\n        'BP',\n        res,\n      )\n      for (const record of records) {\n        observer.next(record)\n      }\n      statusCallback('')\n      observer.complete()\n    }, opts.signal) as any\n  }\n\n  // don't do feature stats estimation, similar to bigwigadapter\n  async getMultiRegionFeatureDensityStats(_regions: Region[]) {\n    return { featureDensity: 0 }\n  }\n\n  freeResources(/* { region } */): void {}\n}\n"],"names":["GenericFilehandleWrapper","constructor","filehandle","read","position","length","buffer","this","Buffer","alloc","slice","byteOffset","byteLength","openFilehandleWrapper","location","pluginManager","openLocation","HicAdapter","BaseFeatureDataAdapter","config","getSubAdapter","super","hicLocation","getConf","hic","HicStraw","file","setup","opts","statusCallback","result","getMetaData","getHeader","ret","chromosomes","rest","getRefNames","map","chr","name","getResolution","bpPerPx","resolutions","chosenResolution","at","i","r","getFeatures","region","ObservableCreate","async","refName","start","end","resolution","res","records","getContactRecords","record","observer","next","complete","signal","getMultiRegionFeatureDensityStats","_regions","featureDensity","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9372.67d6f914.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,29 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9372],{29372:(e,t,r)=>{r.r(t),r.d(t,{default:()=>y});var a=r(7552),s=r(75785),n=r(68446),i=r(99546),o=r(75653),l=r(67314),c=r(48171),m=r(59705),d=r(5401),u=r(49823),p=r(30157),h=r(6184),g=r(5658),b=r(50574);const f=(0,n.observer)((function({model:e,selectedAsm:t,value:r,setValue:s,setOption:n}){const o=(0,i.getSession)(e),{assemblyManager:l,textSearchManager:c}=o,{rankSearchResults:m}=e,d=e.searchScope(t),u=l.get(t);return a.createElement(g.A,{fetchResults:e=>(0,b.Jf)({queryString:e,assembly:u,textSearchManager:c,rankSearchResults:m,searchScope:d}),model:e,assemblyName:t,value:r,minWidth:270,onChange:e=>{s(e)},onSelect:e=>{n(e)},TextFieldProps:{variant:"outlined",helperText:"Enter sequence name, feature name, or location"}})})),v=(0,s.n9)()((e=>({importFormContainer:{padding:e.spacing(2)},button:{margin:e.spacing(2)},container:{padding:e.spacing(4)}}))),y=(0,n.observer)((function({model:e}){const{classes:t}=v(),r=(0,i.getSession)(e),{assemblyNames:s,assemblyManager:n}=r,{error:g}=e,[b,y]=(0,a.useState)(s[0]),[x,A]=(0,a.useState)(),S=n.get(b),k=s.length?S?.error:"No configured assemblies",w=k||g,[E,C]=(0,a.useState)(""),M=S?.regions,R=!!M,W=M&&M[0]?.refName||"";return(0,a.useEffect)((()=>{C(W)}),[W,b]),a.createElement("div",{className:t.container},w?a.createElement(u.ErrorMessage,{error:w}):null,a.createElement(o.A,{className:t.importFormContainer},a.createElement("form",{onSubmit:async t=>{if(t.preventDefault(),e.setError(void 0),E)try{x?.getDisplayString()===E&&x.hasLocation()?await(0,h.Kd)({option:x,model:e,assemblyName:b}):x?.results?.length?e.setSearchResults(x.results,x.getLabel(),b):S&&await(0,h.cm)({input:E,assembly:S,model:e})}catch(e){console.error(e),r.notify(`${e}`,"warning")}}},a.createElement(l.Ay,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},a.createElement(l.Ay,{item:!0},a.createElement(c.A,null,a.createElement(u.AssemblySelector,{onChange:e=>{y(e)},localStorageKey:"lgv",session:r,selected:b}))),a.createElement(l.Ay,{item:!0},b?k?a.createElement(p.A,{style:{color:"red"}}):R?a.createElement(c.A,null,a.createElement(f,{value:E,setValue:C,selectedAsm:b,setOption:A,model:e})):a.createElement(m.A,{size:20,disableShrink:!0}):null),a.createElement(l.Ay,{item:!0},a.createElement(c.A,null,a.createElement(d.A,{type:"submit",disabled:!E,className:t.button,variant:"contained",color:"primary"},"Open")),a.createElement(c.A,null,a.createElement(d.A,{disabled:!E,className:t.button,onClick:()=>{e.setError(void 0),e.showAllRegionsInAssembly(b)},variant:"contained",color:"secondary"},"Show all regions in assembly")))))))}))},59705:(e,t,r)=>{r.d(t,{A:()=>A});var a=r(7552),s=r(93878),n=r(70799),i=r(64761),o=r(51148),l=r(60129),c=r(4785),m=r(15622),d=r(58520),u=r(72489),p=r(69500);const h=i.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,g=i.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,b="string"!=typeof h?i.AH`
+        animation: ${h} 1.4s linear infinite;
+      `:null,f="string"!=typeof g?i.AH`
+        animation: ${g} 1.4s ease-in-out infinite;
+      `:null,v=(0,o.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,m.A)(r.color)}`]]}})((0,l.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:b||{animation:`${h} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,d.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),y=(0,o.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),x=(0,o.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,m.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((0,l.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:f||{animation:`${g} 1.4s ease-in-out infinite`}}]})))),A=a.forwardRef((function(e,t){const r=(0,c.b)({props:e,name:"MuiCircularProgress"}),{className:a,color:i="primary",disableShrink:o=!1,size:l=40,style:d,thickness:h=3.6,value:g=0,variant:b="indeterminate",...f}=r,A={...r,color:i,disableShrink:o,size:l,thickness:h,value:g,variant:b},S=(e=>{const{classes:t,variant:r,color:a,disableShrink:s}=e,i={root:["root",r,`color${(0,m.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,m.A)(r)}`,s&&"circleDisableShrink"]};return(0,n.A)(i,u.b,t)})(A),k={},w={},E={};if("determinate"===b){const e=2*Math.PI*((44-h)/2);k.strokeDasharray=e.toFixed(3),E["aria-valuenow"]=Math.round(g),k.strokeDashoffset=`${((100-g)/100*e).toFixed(3)}px`,w.transform="rotate(-90deg)"}return(0,p.jsx)(v,{className:(0,s.A)(S.root,a),style:{width:l,height:l,...w,...d},ownerState:A,ref:t,role:"progressbar",...E,...f,children:(0,p.jsx)(y,{className:S.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,p.jsx)(x,{className:S.circle,style:k,ownerState:A,cx:44,cy:44,r:(44-h)/2,fill:"none",strokeWidth:h})})})}))},72489:(e,t,r)=>{r.d(t,{A:()=>i,b:()=>n});var a=r(33761),s=r(85693);function n(e){return(0,s.Ay)("MuiCircularProgress",e)}const i=(0,a.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},75653:(e,t,r)=>{r.d(t,{A:()=>y});var a=r(7552),s=r(93878),n=r(85693),i=r(70799),o=r(33283),l=r(82081),c=r(24959),m=r(72861),d=r(69500);const u=(0,m.A)(),p=(0,c.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,o.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),h=e=>(0,l.A)({props:e,name:"MuiContainer",defaultTheme:u});var g=r(15622),b=r(51148),f=r(31049);const v=function(e={}){const{createStyledComponent:t=p,useThemeProps:r=h,componentName:l="MuiContainer"}=e,c=t((({theme:e,ownerState:t})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}})),(({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce(((t,r)=>{const a=r,s=e.breakpoints.values[a];return 0!==s&&(t[e.breakpoints.up(a)]={maxWidth:`${s}${e.breakpoints.unit}`}),t}),{})),(({theme:e,ownerState:t})=>({..."xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},...t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}}}))),m=a.forwardRef((function(e,t){const a=r(e),{className:m,component:u="div",disableGutters:p=!1,fixed:h=!1,maxWidth:g="lg",classes:b,...f}=a,v={...a,component:u,disableGutters:p,fixed:h,maxWidth:g},y=((e,t)=>{const{classes:r,fixed:a,disableGutters:s,maxWidth:l}=e,c={root:["root",l&&`maxWidth${(0,o.A)(String(l))}`,a&&"fixed",s&&"disableGutters"]};return(0,i.A)(c,(e=>(0,n.Ay)(t,e)),r)})(v,l);return(0,d.jsx)(c,{as:u,ownerState:v,className:(0,s.A)(y.root,m),ref:t,...f})}));return m}({createStyledComponent:(0,b.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,g.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,f.A)({props:e,name:"MuiContainer"})}),y=v},24959:(e,t,r)=>{r.d(t,{A:()=>a});const a=(0,r(15543).Ay)()}}]);
+//# sourceMappingURL=9372.67d6f914.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9372.67d6f914.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9372.67d6f914.chunk.js","mappings":"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","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/ImportFormRefNameAutocomplete.tsx","../../../plugins/linear-genome-view/src/LinearGenomeView/components/ImportForm.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\n// locals\nimport RefNameAutocomplete from './RefNameAutocomplete'\nimport { fetchResults } from './util'\nimport { LinearGenomeViewModel } from '..'\n\ntype LGV = LinearGenomeViewModel\n\nconst ImportFormRefNameAutocomplete = observer(function ({\n  model,\n  selectedAsm,\n  value,\n  setValue,\n  setOption,\n}: {\n  value: string\n  setValue: (arg: string) => void\n  model: LGV\n  selectedAsm: string\n  setOption: (arg: BaseResult) => void\n}) {\n  const session = getSession(model)\n  const { assemblyManager, textSearchManager } = session\n  const { rankSearchResults } = model\n  const searchScope = model.searchScope(selectedAsm)\n  const assembly = assemblyManager.get(selectedAsm)\n  return (\n    <RefNameAutocomplete\n      fetchResults={queryString =>\n        fetchResults({\n          queryString,\n          assembly,\n          textSearchManager,\n          rankSearchResults,\n          searchScope,\n        })\n      }\n      model={model}\n      assemblyName={selectedAsm}\n      value={value}\n      minWidth={270}\n      onChange={str => {\n        setValue(str)\n      }}\n      onSelect={val => {\n        setOption(val)\n      }}\n      TextFieldProps={{\n        variant: 'outlined',\n        helperText: 'Enter sequence name, feature name, or location',\n      }}\n    />\n  )\n})\n\nexport default ImportFormRefNameAutocomplete\n","import React, { useState, useEffect } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n  Button,\n  FormControl,\n  Container,\n  Grid,\n  CircularProgress,\n} from '@mui/material'\nimport { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\n\n// icons\nimport CloseIcon from '@mui/icons-material/Close'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\nimport { handleSelectedRegion, navToOption } from '../../searchUtils'\nimport ImportFormRefNameAutocomplete from './ImportFormRefNameAutocomplete'\n\nconst useStyles = makeStyles()(theme => ({\n  importFormContainer: {\n    padding: theme.spacing(2),\n  },\n  button: {\n    margin: theme.spacing(2),\n  },\n  container: {\n    padding: theme.spacing(4),\n  },\n}))\n\ntype LGV = LinearGenomeViewModel\n\nconst LinearGenomeViewImportForm = observer(function ({\n  model,\n}: {\n  model: LGV\n}) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { assemblyNames, assemblyManager } = session\n  const { error } = model\n  const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0]!)\n  const [option, setOption] = useState<BaseResult>()\n  const assembly = assemblyManager.get(selectedAsm)\n  const assemblyError = assemblyNames.length\n    ? assembly?.error\n    : 'No configured assemblies'\n  const displayError = assemblyError || error\n  const [value, setValue] = useState('')\n  const regions = assembly?.regions\n  const assemblyLoaded = !!regions\n  const r0 = regions ? regions[0]?.refName || '' : ''\n\n  // useEffect resets to an \"initial state\" of displaying first region from\n  // assembly after assembly change. needs to react to selectedAsm as well as\n  // r0 because changing assembly will run setValue('') and then r0 may not\n  // change if assembly names are the same across assemblies, but it still\n  // needs to be reset\n  /* biome-ignore lint/correctness/useExhaustiveDependencies: */\n  useEffect(() => {\n    setValue(r0)\n  }, [r0, selectedAsm])\n\n  // implementation notes:\n  // having this wrapped in a form allows intuitive use of enter key to submit\n  return (\n    <div className={classes.container}>\n      {displayError ? <ErrorMessage error={displayError} /> : null}\n      <Container className={classes.importFormContainer}>\n        <form\n          onSubmit={async event => {\n            event.preventDefault()\n            model.setError(undefined)\n            if (value) {\n              // has it's own error handling\n              try {\n                if (\n                  option?.getDisplayString() === value &&\n                  option.hasLocation()\n                ) {\n                  await navToOption({\n                    option,\n                    model,\n                    assemblyName: selectedAsm,\n                  })\n                } else if (option?.results?.length) {\n                  model.setSearchResults(\n                    option.results,\n                    option.getLabel(),\n                    selectedAsm,\n                  )\n                } else if (assembly) {\n                  await handleSelectedRegion({ input: value, assembly, model })\n                }\n              } catch (e) {\n                console.error(e)\n                session.notify(`${e}`, 'warning')\n              }\n            }\n          }}\n        >\n          <Grid\n            container\n            spacing={1}\n            justifyContent=\"center\"\n            alignItems=\"center\"\n          >\n            <Grid item>\n              <FormControl>\n                <AssemblySelector\n                  onChange={val => {\n                    setSelectedAsm(val)\n                  }}\n                  localStorageKey=\"lgv\"\n                  session={session}\n                  selected={selectedAsm}\n                />\n              </FormControl>\n            </Grid>\n            <Grid item>\n              {selectedAsm ? (\n                assemblyError ? (\n                  <CloseIcon style={{ color: 'red' }} />\n                ) : assemblyLoaded ? (\n                  <FormControl>\n                    <ImportFormRefNameAutocomplete\n                      value={value}\n                      setValue={setValue}\n                      selectedAsm={selectedAsm}\n                      setOption={setOption}\n                      model={model}\n                    />\n                  </FormControl>\n                ) : (\n                  <CircularProgress size={20} disableShrink />\n                )\n              ) : null}\n            </Grid>\n            <Grid item>\n              <FormControl>\n                <Button\n                  type=\"submit\"\n                  disabled={!value}\n                  className={classes.button}\n                  variant=\"contained\"\n                  color=\"primary\"\n                >\n                  Open\n                </Button>\n              </FormControl>\n              <FormControl>\n                <Button\n                  disabled={!value}\n                  className={classes.button}\n                  onClick={() => {\n                    model.setError(undefined)\n                    model.showAllRegionsInAssembly(selectedAsm)\n                  }}\n                  variant=\"contained\"\n                  color=\"secondary\"\n                >\n                  Show all regions in assembly\n                </Button>\n              </FormControl>\n            </Grid>\n          </Grid>\n        </form>\n      </Container>\n    </div>\n  )\n})\n\nexport default LinearGenomeViewImportForm\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["observer","model","selectedAsm","value","setValue","setOption","session","getSession","assemblyManager","textSearchManager","rankSearchResults","searchScope","assembly","get","React","RefNameAutocomplete","fetchResults","queryString","assemblyName","minWidth","onChange","str","onSelect","val","TextFieldProps","variant","helperText","useStyles","makeStyles","theme","importFormContainer","padding","spacing","button","margin","container","classes","assemblyNames","error","setSelectedAsm","useState","option","assemblyError","length","displayError","regions","assemblyLoaded","r0","refName","useEffect","className","ErrorMessage","Container","onSubmit","async","event","preventDefault","setError","undefined","getDisplayString","hasLocation","navToOption","results","setSearchResults","getLabel","handleSelectedRegion","input","e","console","notify","Grid","justifyContent","alignItems","item","FormControl","AssemblySelector","localStorageKey","selected","CloseIcon","style","color","ImportFormRefNameAutocomplete","CircularProgress","size","disableShrink","Button","type","disabled","onClick","showAllRegionsInAssembly","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","display","variants","transition","transitions","create","animation","Object","entries","palette","filter","map","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","width","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","defaultTheme","createTheme","defaultCreateStyledComponent","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","marginLeft","boxSizing","marginRight","paddingLeft","paddingRight","breakpoints","up","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","max","xs","component","classesProp","composeClasses","generateUtilityClass","as","clsx","createContainer"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9374.8ac7e6d7.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9374],{39374:(e,l,t)=>{t.r(l),t.d(l,{default:()=>m});var n=t(7552),r=t(29499),a=t(24387),c=t(58507),o=t(5401),i=t(49823);function m({handleClose:e}){return n.createElement(i.Dialog,{open:!0,maxWidth:"xl",onClose:e,title:"Using the search box"},n.createElement(r.A,null,n.createElement("h3",null,"Searching"),n.createElement("ul",null,n.createElement("li",null,"Jump to a feature or reference sequence by typing its name in the location box and pressing Enter."),n.createElement("li",null,"Jump to a specific region by typing the region into the location box as: ",n.createElement("code",null,"ref:start..end")," or ",n.createElement("code",null,"ref:start-end"),". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time")),n.createElement("h3",null,"Example Searches"),n.createElement("ul",null,n.createElement("li",null,n.createElement("code",null,"BRCA")," - searches for the feature named BRCA"),n.createElement("li",null,n.createElement("code",null,"chr4")," - jumps to chromosome 4"),n.createElement("li",null,n.createElement("code",null,"chr4:79,500,000..80,000,000")," - jumps the region on chromosome 4 between 79.5Mb and 80Mb."),n.createElement("li",null,n.createElement("code",null,"chr1:1-100 chr2:1-100")," - create a split view of chr1:1-100 and chr2:1-100"),n.createElement("li",null,n.createElement("code",null,"chr1 chr2 chr3")," - open up multiple chromosomes at once"),n.createElement("li",null,n.createElement("code",null,"chr1:1-100[rev] chr2:1-100")," - open up the first region in the horizontally flipped orientation"),n.createElement("li",null,n.createElement("code",null,"chr1 100 200")," - use whitespace separated refname, start, end"))),n.createElement(a.A,null),n.createElement(c.A,null,n.createElement(o.A,{onClick:()=>{e()},color:"primary"},"Close")))}}}]);
+//# sourceMappingURL=9374.8ac7e6d7.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9374.8ac7e6d7.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9374.8ac7e6d7.chunk.js","mappings":"2NAIe,SAASA,GAAW,YACjCC,IAIA,OACEC,EAAAA,cAACC,EAAAA,OAAM,CACLC,MAAI,EACJC,SAAS,KACTC,QAASL,EACTM,MAAM,wBAENL,EAAAA,cAACM,EAAAA,EAAa,KACZN,EAAAA,cAAA,UAAI,aACJA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAI,sGAIJA,EAAAA,cAAA,UAAI,4EAEEA,EAAAA,cAAA,YAAM,kBAAqB,OAAIA,EAAAA,cAAA,YAAM,iBAAoB,sJAMjEA,EAAAA,cAAA,UAAI,oBACJA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,QAAW,0CAEnBA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,QAAW,4BAEnBA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,+BAAkC,gEAG1CA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,yBAA4B,uDAGpCA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,kBAAqB,2CAE7BA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,8BAAiC,uEAGzCA,EAAAA,cAAA,UACEA,EAAAA,cAAA,YAAM,gBAAmB,qDAK/BA,EAAAA,cAACO,EAAAA,EAAO,MACRP,EAAAA,cAACQ,EAAAA,EAAa,KACZR,EAAAA,cAACS,EAAAA,EAAM,CACLC,QAASA,KACPX,GAAa,EAEfY,MAAM,WACP,UAMT,C","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { Button, DialogActions, DialogContent, Divider } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nexport default function HelpDialog({\n  handleClose,\n}: {\n  handleClose: () => void\n}) {\n  return (\n    <Dialog\n      open\n      maxWidth=\"xl\"\n      onClose={handleClose}\n      title=\"Using the search box\"\n    >\n      <DialogContent>\n        <h3>Searching</h3>\n        <ul>\n          <li>\n            Jump to a feature or reference sequence by typing its name in the\n            location box and pressing Enter.\n          </li>\n          <li>\n            Jump to a specific region by typing the region into the location box\n            as: <code>ref:start..end</code> or <code>ref:start-end</code>.\n            Commas are allowed in the start and end coordinates. A\n            space-separated list of locstrings can be used to open up multiple\n            chromosomes at a time\n          </li>\n        </ul>\n        <h3>Example Searches</h3>\n        <ul>\n          <li>\n            <code>BRCA</code> - searches for the feature named BRCA\n          </li>\n          <li>\n            <code>chr4</code> - jumps to chromosome 4\n          </li>\n          <li>\n            <code>chr4:79,500,000..80,000,000</code> - jumps the region on\n            chromosome 4 between 79.5Mb and 80Mb.\n          </li>\n          <li>\n            <code>chr1:1-100 chr2:1-100</code> - create a split view of\n            chr1:1-100 and chr2:1-100\n          </li>\n          <li>\n            <code>chr1 chr2 chr3</code> - open up multiple chromosomes at once\n          </li>\n          <li>\n            <code>chr1:1-100[rev] chr2:1-100</code> - open up the first region\n            in the horizontally flipped orientation\n          </li>\n          <li>\n            <code>chr1 100 200</code> - use whitespace separated refname, start,\n            end\n          </li>\n        </ul>\n      </DialogContent>\n      <Divider />\n      <DialogActions>\n        <Button\n          onClick={() => {\n            handleClose()\n          }}\n          color=\"primary\"\n        >\n          Close\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n"],"names":["HelpDialog","handleClose","React","Dialog","open","maxWidth","onClose","title","DialogContent","Divider","DialogActions","Button","onClick","color"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9384.a4e7a69a.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9384],{33248:(e,o,t)=>{t.d(o,{A:()=>$});var a=t(7552),s=t(93878),r=t(70799),n=t(72639),i=t(15110),l=t(74893),c=t(69500);const d=(0,l.A)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),p=(0,l.A)((0,c.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var u=t(55270),h=t(51148),v=t(60129);const m=(0,h.Ay)("span",{shouldForwardProp:u.A})({position:"relative",display:"flex"}),b=(0,h.Ay)(d)({transform:"scale(1)"}),A=(0,h.Ay)(p)((0,v.A)((({theme:e})=>({left:0,position:"absolute",transform:"scale(0)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeIn,duration:e.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:e.transitions.create("transform",{easing:e.transitions.easing.easeOut,duration:e.transitions.duration.shortest})}}]})))),f=function(e){const{checked:o=!1,classes:t={},fontSize:a}=e,s={...e,checked:o};return(0,c.jsxs)(m,{className:t.root,ownerState:s,children:[(0,c.jsx)(b,{fontSize:a,className:t.background,ownerState:s}),(0,c.jsx)(A,{fontSize:a,className:t.dot,ownerState:s})]})};var y=t(15622),C=t(4402),k=t(33960),g=t(39006),z=t(38127),S=t(58520),R=t(4785);const w=(0,h.Ay)(i.A,{shouldForwardProp:e=>(0,u.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:t}=e;return[o.root,"medium"!==t.size&&o[`size${(0,y.A)(t.size)}`],o[`color${(0,y.A)(t.color)}`]]}})((0,v.A)((({theme:e})=>({color:(e.vars||e).palette.text.secondary,[`&.${z.A.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter((0,S.A)()).map((([o])=>({props:{color:o,disabled:!1,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[o].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,n.X4)(e.palette[o].main,e.palette.action.hoverOpacity)}}}))),...Object.entries(e.palette).filter((0,S.A)()).map((([o])=>({props:{color:o,disabled:!1},style:{[`&.${z.A.checked}`]:{color:(e.vars||e).palette[o].main}}}))),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]})))),j=(0,c.jsx)(f,{checked:!0}),x=(0,c.jsx)(f,{}),$=a.forwardRef((function(e,o){const t=(0,R.b)({props:e,name:"MuiRadio"}),{checked:n,checkedIcon:i=j,color:l="primary",icon:d=x,name:p,onChange:u,size:h="medium",className:v,disabled:m,disableRipple:b=!1,...A}=t,f=(0,k.A)();let S=m;f&&void 0===S&&(S=f.disabled),S??=!1;const $={...t,disabled:S,disableRipple:b,color:l,size:h},O=(e=>{const{classes:o,color:t,size:a}=e,s={root:["root",`color${(0,y.A)(t)}`,"medium"!==a&&`size${(0,y.A)(a)}`]};return{...o,...(0,r.A)(s,z.q,o)}})($),M=(0,g.A)();let N=n;const _=(0,C.A)(u,M&&M.onChange);let q=p;var I,P;return M&&(void 0===N&&(I=M.value,N="object"==typeof(P=t.value)&&null!==P?I===P:String(I)===String(P)),void 0===q&&(q=M.name)),(0,c.jsx)(w,{type:"radio",icon:a.cloneElement(d,{fontSize:x.props.fontSize??h}),checkedIcon:a.cloneElement(i,{fontSize:j.props.fontSize??h}),disabled:S,ownerState:$,classes:O,name:q,checked:N,onChange:_,ref:o,className:(0,s.A)(O.root,v),...A})}))},79384:(e,o,t)=>{t.r(o),t.d(o,{default:()=>a.A,getRadioUtilityClass:()=>s.q,radioClasses:()=>s.A});var a=t(33248),s=t(38127)},38127:(e,o,t)=>{t.d(o,{A:()=>n,q:()=>r});var a=t(33761),s=t(85693);function r(e){return(0,s.Ay)("MuiRadio",e)}const n=(0,a.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"])},76258:(e,o,t)=>{t.d(o,{A:()=>a});const a=t(7552).createContext(void 0)},39006:(e,o,t)=>{t.d(o,{A:()=>r});var a=t(7552),s=t(76258);function r(){return a.useContext(s.A)}}}]);
+//# sourceMappingURL=9384.a4e7a69a.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9384.a4e7a69a.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9384.a4e7a69a.chunk.js","mappings":"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","sources":["../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}"],"names":["createSvgIcon","d","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","display","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","theme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","props","checked","style","easeOut","classes","fontSize","ownerState","className","root","children","background","dot","RadioRoot","SwitchBase","prop","name","slot","overridesResolver","styles","size","capitalize","color","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","Object","entries","filter","createSimplePaletteValueFilter","map","mainChannel","main","defaultCheckedIcon","defaultIcon","inProps","ref","checkedProp","checkedIcon","icon","nameProp","onChange","onChangeProp","disabledProp","other","muiFormControl","useFormControl","slots","composeClasses","useUtilityClasses","radioGroup","useRadioGroup","createChainedFunction","a","b","value","String","type","clsx","getRadioUtilityClass","undefined"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9409.c7569196.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9409,7706],{69409:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var r=n(46377),a=n(99834),s=n(99546),i=n(66885),o=n(6434),l=n(78054);class h extends r.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];async setup(e){return this.setupP||(this.setupP=this.setupPre(e).catch((e=>{throw this.setupP=void 0,e}))),this.setupP}async setupPre(e){const t=this.getConf("assemblyNames"),n=this.pluginManager,r=(0,a.openLocation)(this.getConf("bed1Location"),n),s=(0,a.openLocation)(this.getConf("bed2Location"),n),i=(0,a.openLocation)(this.getConf("mcscanSimpleAnchorsLocation"),n),[o,h,c]=await Promise.all([r,s,i].map((t=>(0,l.TA)(t,e)))),d=(0,l.fY)(o),f=(0,l.fY)(h);return{assemblyNames:t,feats:c.split(/\n|\r\n|\r/).filter((e=>!!e&&"###"!==e)).map(((e,t)=>{const[n,r,a,s,i,o]=e.split("\t"),l=d.get(n),h=d.get(r),c=f.get(a),u=f.get(s);if(!(l&&h&&c&&u))throw new Error(`feature not found, ${n} ${r} ${a} ${s} ${l} ${h} ${c} ${u}`);return[l,h,c,u,+i,"-"===o?-1:1,t]}))}}async hasDataForRefName(){return!0}async getRefNames(){return[]}getFeatures(e,t={}){return(0,i.ObservableCreate)((async n=>{const{assemblyNames:r,feats:a}=await this.setup(t),i=r.indexOf(e.assemblyName);if(-1!==i){const t=0===i;a.forEach((a=>{const[i,l,h,c,d,f,u]=a;let p={refName:i.refName,start:Math.min(i.start,l.start),end:Math.max(i.end,l.end)},g={refName:h.refName,start:Math.min(h.start,c.start),end:Math.max(h.end,c.end)};t||([g,p]=[p,g]),p.refName===e.refName&&(0,s.doesIntersect2)(p.start,p.end,e.start,e.end)&&n.next(new o.A({...p,uniqueId:`${u}`,syntenyId:u,assemblyName:r[+!t],score:d,strand:f,mate:{...g,assemblyName:r[+t]}}))}))}n.complete()}))}freeResources(){}}},78054:(e,t,n)=>{n.d(t,{PX:()=>h,TA:()=>i,fY:()=>s,gJ:()=>f,qm:()=>d,xI:()=>c,yU:()=>o});var r=n(7706),a=n(99546);function s(e){return new Map(e.split(/\n|\r\n|\r/).filter((e=>!!e||e.startsWith("#"))).map((e=>{const[t,n,r,a,s,i]=e.split("\t");return[a,{refName:t,start:+n,end:+r,score:+s,name:a,strand:"-"===i?-1:1}]})))}async function i(e,t){const n=await e.readFile(t);return new TextDecoder("utf8",{fatal:!0}).decode((0,a.isGzip)(n)?await(0,r.unzip)(n):n)}function o(e,t){return e.map(((e,n)=>[e,t[n]]))}const l="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function h(e,t){let n=0;const r=[];for(;n<e.length;){const a=e.indexOf("\n",n);if(-1===a)break;const s=e.subarray(n,a),i=(l?.decode(s)||s.toString()).trim();i&&r.push(t(i)),n=a+1}return r}function c(e){const[t,,n,r,a,s,,i,o,l,h,c,...d]=e.split("\t");return{tname:s,tstart:+i,tend:+o,qname:t,qstart:+n,qend:+r,strand:"-"===a?-1:1,extra:{numMatches:+l,blockLen:+h,mappingQual:+c,...Object.fromEntries(d.map((e=>{const t=e.indexOf(":");return[e.slice(0,t),e.slice(t+3)]})))}}}function d(e){const t=[];for(let n=e.length-2;n>=0;n-=2){t.push(e[n]);const r=e[n+1];"D"===r?t.push("I"):"I"===r?t.push("D"):t.push(r)}return t}function f(e){return e.replaceAll("D","K").replaceAll("I","D").replaceAll("K","I")}},7706:(e,t,n)=>{n.d(t,{sG:()=>d,unzip:()=>i,i2:()=>o});var r=n(35451),a=n(45834),s=n(57864);async function i(e){try{let t,n=0,a=0;const i=[];let o,l=0;do{const r=e.subarray(n);if(o=new s.Inflate,({strm:t}=o),o.push(r,s.Z_SYNC_FLUSH),o.err)throw new Error(o.msg);n+=t.next_in,i[a]=o.result,l+=i[a].length,a+=1}while(t.avail_in);const h=new Uint8Array(l);for(let e=0,t=0;e<i.length;e++)h.set(i[e],t),t+=i[e].length;return r.hp.from(h)}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}async function o(e,t){try{let n;const{minv:a,maxv:i}=t;let o=a.blockPosition,l=a.dataPosition;const h=[],c=[],d=[];let f=0,u=0;do{const t=e.subarray(o-a.blockPosition),r=new s.Inflate;if(({strm:n}=r),r.push(t,s.Z_SYNC_FLUSH),r.err)throw new Error(r.msg);const p=r.result;h.push(p);let g=p.length;c.push(o),d.push(l),1===h.length&&a.dataPosition&&(h[0]=h[0].subarray(a.dataPosition),g=h[0].length);const m=o;if(o+=n.next_in,l+=g,m>=i.blockPosition){h[u]=h[u].subarray(0,i.blockPosition===a.blockPosition?i.dataPosition-a.dataPosition+1:i.dataPosition+1),c.push(o),d.push(l),f+=h[u].length;break}f+=h[u].length,u++}while(n.avail_in);const p=new Uint8Array(f);for(let e=0,t=0;e<h.length;e++)p.set(h[e],t),t+=h[e].length;return{buffer:r.hp.from(p),cpositions:c,dpositions:d}}catch(e){if(`${e}`.match(/incorrect header check/))throw new Error("problem decompressing block: incorrect gzip header check");throw e}}var l=n(59086),h=n.n(l);class c{constructor({filehandle:e,path:t}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new a.EY(t)}}_readLongWithOverflow(e,t=0,n=!0){const r=h().fromBytesLE(e.slice(t,t+8),n);if(r.greaterThan(Number.MAX_SAFE_INTEGER)||r.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return r.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=r.hp.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const t=this._readLongWithOverflow(e,0,!0);if(!t)return[[0,0]];const n=new Array(t+1);n[0]=[0,0];const a=16*t;if(a>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=r.hp.allocUnsafe(a),await this.filehandle.read(e,0,a,8);for(let r=0;r<t;r+=1){const t=this._readLongWithOverflow(e,16*r),a=this._readLongWithOverflow(e,16*r+8);n[r+1]=[t,a]}return n}async getLastBlock(){const e=await this._getIndex();if(e.length)return e[e.length-1]}async getRelevantBlocksForRead(e,t){const n=t+e;if(0===e)return[];const r=await this._getIndex(),a=[],s=(e,n)=>{const r=e[1],a=n?n[1]:1/0;return r<=t&&a>t?0:r<t?-1:1};let i=0,o=r.length-1,l=Math.floor(r.length/2),h=s(r[l],r[l+1]);for(;0!==h;)h>0?o=l-1:h<0&&(i=l+1),l=Math.ceil((o-i)/2)+i,h=s(r[l],r[l+1]);a.push(r[l]);let c=l+1;for(;c<r.length&&(a.push(r[c]),!(r[c][1]>=n));c+=1);return a[a.length-1][1]<n&&a.push([]),a}}class d{constructor({filehandle:e,path:t,gziFilehandle:n,gziPath:r}){if(e)this.filehandle=e;else{if(!t)throw new TypeError("either filehandle or path must be defined");this.filehandle=new a.EY(t)}if(!n&&!r&&!t)throw new TypeError("either gziFilehandle or gziPath must be defined");this.gzi=new c({filehandle:n,path:n||r||!t?`${t}.gzi`:r})}async stat(){const e=await this.filehandle.stat();return Object.assign(e,{size:await this.getUncompressedFileSize(),blocks:void 0,blksize:void 0})}async getUncompressedFileSize(){const[,e]=await this.gzi.getLastBlock(),{size:t}=await this.filehandle.stat(),n=r.hp.allocUnsafe(4),{bytesRead:a}=await this.filehandle.read(n,0,4,t-28-4);if(4!==a)throw new Error("read error");return e+n.readUInt32LE(0)}async _readAndUncompressBlock(e,[t],[n]){let r=n;r||(r=(await this.filehandle.stat()).size);const a=r-t;return await this.filehandle.read(e,0,a,t),await i(e.slice(0,a))}async read(e,t,n,a){const s=await this.gzi.getRelevantBlocksForRead(n,a),i=r.hp.allocUnsafe(65536);let o=t,l=0;for(let t=0;t<s.length-1;t+=1){const r=await this._readAndUncompressBlock(i,s[t],s[t+1]),[,h]=s[t],c=h>=a?0:a-h,d=Math.min(a+n,h+r.length)-h;c>=0&&c<r.length&&(r.copy(e,o,c,d),o+=d-c,l+=d-c)}return{bytesRead:l,buffer:e}}}}}]);
+//# sourceMappingURL=9409.c7569196.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9409.c7569196.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9409.c7569196.chunk.js","mappings":"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","sources":["../../../plugins/comparative-adapters/src/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.ts","../../../plugins/comparative-adapters/src/util.ts","../../../node_modules/@gmod/bgzf-filehandle/src/unzip-pako.ts","../../../node_modules/@gmod/bgzf-filehandle/src/gziIndex.ts","../../../node_modules/@gmod/bgzf-filehandle/src/bgzFilehandle.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { doesIntersect2 } from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { readFile, parseBed } from '../util'\n\ninterface BareFeature {\n  refName: string\n  start: number\n  end: number\n  score: number\n  name: string\n}\n\ntype Row = [\n  BareFeature,\n  BareFeature,\n  BareFeature,\n  BareFeature,\n  number,\n  number,\n  number,\n]\n\nexport default class MCScanAnchorsAdapter extends BaseFeatureDataAdapter {\n  private setupP?: Promise<{\n    assemblyNames: string[]\n    feats: Row[]\n  }>\n\n  public static capabilities = ['getFeatures', 'getRefNames']\n\n  async setup(opts: BaseOptions) {\n    if (!this.setupP) {\n      this.setupP = this.setupPre(opts).catch((e: unknown) => {\n        this.setupP = undefined\n        throw e\n      })\n    }\n    return this.setupP\n  }\n  async setupPre(opts: BaseOptions) {\n    const assemblyNames = this.getConf('assemblyNames') as string[]\n    const pm = this.pluginManager\n    const bed1 = openLocation(this.getConf('bed1Location'), pm)\n    const bed2 = openLocation(this.getConf('bed2Location'), pm)\n    const mcscan = openLocation(this.getConf('mcscanSimpleAnchorsLocation'), pm)\n    const [bed1text, bed2text, mcscantext] = await Promise.all(\n      [bed1, bed2, mcscan].map(r => readFile(r, opts)),\n    )\n    const bed1Map = parseBed(bed1text!)\n    const bed2Map = parseBed(bed2text!)\n    const feats = mcscantext!\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f && f !== '###')\n      .map((line, index) => {\n        const [n11, n12, n21, n22, score, strand] = line.split('\\t')\n        const r11 = bed1Map.get(n11)\n        const r12 = bed1Map.get(n12)\n        const r21 = bed2Map.get(n21)\n        const r22 = bed2Map.get(n22)\n        if (!r11 || !r12 || !r21 || !r22) {\n          throw new Error(\n            `feature not found, ${n11} ${n12} ${n21} ${n22} ${r11} ${r12} ${r21} ${r22}`,\n          )\n        }\n        return [\n          r11,\n          r12,\n          r21,\n          r22,\n          +score!,\n          strand === '-' ? -1 : 1,\n          index,\n        ] as Row\n      })\n\n    return {\n      assemblyNames,\n      feats,\n    }\n  }\n\n  async hasDataForRefName() {\n    // determining this properly is basically a call to getFeatures\n    // so is not really that important, and has to be true or else\n    // getFeatures is never called (BaseFeatureDataAdapter filters it out)\n    return true\n  }\n\n  async getRefNames() {\n    // we cannot determine this accurately\n    return []\n  }\n\n  getFeatures(region: Region, opts: BaseOptions = {}) {\n    return ObservableCreate<Feature>(async observer => {\n      const { assemblyNames, feats } = await this.setup(opts)\n\n      // The index of the assembly name in the region list corresponds to\n      // the adapter in the subadapters list\n      const index = assemblyNames.indexOf(region.assemblyName)\n      if (index !== -1) {\n        const flip = index === 0\n        feats.forEach(f => {\n          const [f11, f12, f21, f22, score, strand, rowNum] = f\n          let r1 = {\n            refName: f11.refName,\n            start: Math.min(f11.start, f12.start),\n            end: Math.max(f11.end, f12.end),\n          }\n          let r2 = {\n            refName: f21.refName,\n            start: Math.min(f21.start, f22.start),\n            end: Math.max(f21.end, f22.end),\n          }\n          if (!flip) {\n            ;[r2, r1] = [r1, r2]\n          }\n          if (\n            r1.refName === region.refName &&\n            doesIntersect2(r1.start, r1.end, region.start, region.end)\n          ) {\n            observer.next(\n              new SimpleFeature({\n                ...r1,\n                uniqueId: `${rowNum}`,\n                syntenyId: rowNum,\n                assemblyName: assemblyNames[+!flip],\n                score,\n                strand,\n                mate: {\n                  ...r2,\n                  assemblyName: assemblyNames[+flip],\n                },\n              }),\n            )\n          }\n        })\n      }\n\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  freeResources(/* { region } */): void {}\n}\n","import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { GenericFilehandle } from 'generic-filehandle'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport { PAFRecord } from './PAFAdapter/util'\n\nexport function parseBed(text: string) {\n  return new Map(\n    text\n      .split(/\\n|\\r\\n|\\r/)\n      .filter(f => !!f || f.startsWith('#'))\n      .map(line => {\n        const [refName, start, end, name, score, strand] = line.split('\\t')\n        return [\n          name,\n          {\n            refName,\n            start: +start!,\n            end: +end!,\n            score: +score!,\n            name,\n            strand: strand === '-' ? -1 : 1,\n          },\n        ]\n      }),\n  )\n}\n\nexport async function readFile(file: GenericFilehandle, opts?: BaseOptions) {\n  const buffer = (await file.readFile(opts)) as Buffer\n  return new TextDecoder('utf8', { fatal: true }).decode(\n    isGzip(buffer) ? await unzip(buffer) : buffer,\n  )\n}\n\nexport function zip(a: number[], b: number[]) {\n  return a.map((e, i) => [e, b[i]] as [number, number])\n}\n\nconst decoder =\n  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\nexport function parseLineByLine(\n  buffer: Buffer,\n  cb: (line: string) => PAFRecord,\n) {\n  let blockStart = 0\n  const entries = []\n  while (blockStart < buffer.length) {\n    const n = buffer.indexOf('\\n', blockStart)\n    if (n === -1) {\n      break\n    }\n    const b = buffer.subarray(blockStart, n)\n    const line = (decoder?.decode(b) || b.toString()).trim()\n    if (line) {\n      entries.push(cb(line))\n    }\n\n    blockStart = n + 1\n  }\n  return entries\n}\n\nexport function parsePAFLine(line: string) {\n  const [\n    qname,\n    ,\n    qstart,\n    qend,\n    strand,\n    tname,\n    ,\n    tstart,\n    tend,\n    numMatches,\n    blockLen,\n    mappingQual,\n    ...fields\n  ] = line.split('\\t')\n\n  const rest = Object.fromEntries(\n    fields.map(field => {\n      const r = field.indexOf(':')\n      const fieldName = field.slice(0, r)\n      const fieldValue = field.slice(r + 3)\n      return [fieldName, fieldValue]\n    }),\n  )\n\n  return {\n    tname,\n    tstart: +tstart!,\n    tend: +tend!,\n    qname,\n    qstart: +qstart!,\n    qend: +qend!,\n    strand: strand === '-' ? -1 : 1,\n    extra: {\n      numMatches: +numMatches!,\n      blockLen: +blockLen!,\n      mappingQual: +mappingQual!,\n      ...rest,\n    },\n  } as PAFRecord\n}\n\nexport function flipCigar(cigar: string[]) {\n  const arr = []\n  for (let i = cigar.length - 2; i >= 0; i -= 2) {\n    arr.push(cigar[i])\n    const op = cigar[i + 1]\n    if (op === 'D') {\n      arr.push('I')\n    } else if (op === 'I') {\n      arr.push('D')\n    } else {\n      arr.push(op)\n    }\n  }\n  return arr\n}\n\nexport function swapIndelCigar(cigar: string) {\n  return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I')\n}\n","import { Buffer } from 'buffer'\n//@ts-ignore\nimport { Z_SYNC_FLUSH, Inflate } from 'pako'\n\ninterface VirtualOffset {\n  blockPosition: number\n  dataPosition: number\n}\ninterface Chunk {\n  minv: VirtualOffset\n  maxv: VirtualOffset\n}\n\n// browserify-zlib, which is the zlib shim used by default in webpacked code,\n// does not properly uncompress bgzf chunks that contain more than\n// one bgzf block, so export an unzip function that uses pako directly\n// if we are running in a browser.\nasync function unzip(inputData: Buffer) {\n  try {\n    let strm\n    let pos = 0\n    let i = 0\n    const chunks = []\n    let totalSize = 0\n    let inflator\n    do {\n      const remainingInput = inputData.subarray(pos)\n      inflator = new Inflate()\n      //@ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      pos += strm.next_in\n      chunks[i] = inflator.result as Uint8Array\n      totalSize += chunks[i].length\n      i += 1\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    return Buffer.from(result)\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to pakounzip, except it does extra counting\n// to return the positions of compressed and decompressed\n// data offsets\nasync function unzipChunk(inputData: Buffer) {\n  try {\n    let strm\n    let cpos = 0\n    let dpos = 0\n    const blocks = []\n    const cpositions = []\n    const dpositions = []\n    do {\n      const remainingInput = inputData.slice(cpos)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = Buffer.from(inflator.result)\n      blocks.push(buffer)\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n\n      cpos += strm.next_in\n      dpos += buffer.length\n    } while (strm.avail_in)\n\n    const buffer = Buffer.concat(blocks)\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\n// similar to unzipChunk above but slices (0,minv.dataPosition) and\n// (maxv.dataPosition,end) off\nasync function unzipChunkSlice(inputData: Buffer, chunk: Chunk) {\n  try {\n    let strm\n    const { minv, maxv } = chunk\n    let cpos = minv.blockPosition\n    let dpos = minv.dataPosition\n    const chunks = []\n    const cpositions = []\n    const dpositions = []\n\n    let totalSize = 0\n    let i = 0\n    do {\n      const remainingInput = inputData.subarray(cpos - minv.blockPosition)\n      const inflator = new Inflate()\n      // @ts-ignore\n      ;({ strm } = inflator)\n      inflator.push(remainingInput, Z_SYNC_FLUSH)\n      if (inflator.err) {\n        throw new Error(inflator.msg)\n      }\n\n      const buffer = inflator.result\n      chunks.push(buffer as Uint8Array)\n      let len = buffer.length\n\n      cpositions.push(cpos)\n      dpositions.push(dpos)\n      if (chunks.length === 1 && minv.dataPosition) {\n        // this is the first chunk, trim it\n        chunks[0] = chunks[0].subarray(minv.dataPosition)\n        len = chunks[0].length\n      }\n      const origCpos = cpos\n      cpos += strm.next_in\n      dpos += len\n\n      if (origCpos >= maxv.blockPosition) {\n        // this is the last chunk, trim it and stop decompressing\n        // note if it is the same block is minv it subtracts that already\n        // trimmed part of the slice length\n\n        chunks[i] = chunks[i].subarray(\n          0,\n          maxv.blockPosition === minv.blockPosition\n            ? maxv.dataPosition - minv.dataPosition + 1\n            : maxv.dataPosition + 1,\n        )\n\n        cpositions.push(cpos)\n        dpositions.push(dpos)\n        totalSize += chunks[i].length\n        break\n      }\n      totalSize += chunks[i].length\n      i++\n    } while (strm.avail_in)\n\n    const result = new Uint8Array(totalSize)\n    for (let i = 0, offset = 0; i < chunks.length; i++) {\n      result.set(chunks[i], offset)\n      offset += chunks[i].length\n    }\n    const buffer = Buffer.from(result)\n\n    return { buffer, cpositions, dpositions }\n  } catch (e) {\n    //cleanup error message\n    if (`${e}`.match(/incorrect header check/)) {\n      throw new Error(\n        'problem decompressing block: incorrect gzip header check',\n      )\n    }\n    throw e\n  }\n}\n\nfunction nodeUnzip() {\n  throw new Error('nodeUnzip not implemented.')\n}\n\nexport { unzip, unzipChunk, unzipChunkSlice, unzip as pakoUnzip, nodeUnzip }\n","import Long from 'long'\nimport { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// const COMPRESSED_POSITION = 0\nconst UNCOMPRESSED_POSITION = 1\n\nexport default class GziIndex {\n  filehandle: GenericFilehandle\n\n  index?: any\n\n  constructor({\n    filehandle,\n    path,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n  }\n\n  _readLongWithOverflow(buf: Buffer, offset = 0, unsigned = true) {\n    //@ts-ignore\n    const long = Long.fromBytesLE(buf.slice(offset, offset + 8), unsigned)\n    if (\n      long.greaterThan(Number.MAX_SAFE_INTEGER) ||\n      long.lessThan(Number.MIN_SAFE_INTEGER)\n    ) {\n      throw new TypeError('integer overflow')\n    }\n\n    return long.toNumber()\n  }\n\n  _getIndex() {\n    if (!this.index) {\n      this.index = this._readIndex()\n    }\n    return this.index\n  }\n\n  async _readIndex() {\n    let buf = Buffer.allocUnsafe(8)\n    await this.filehandle.read(buf, 0, 8, 0)\n    const numEntries = this._readLongWithOverflow(buf, 0, true)\n    if (!numEntries) {\n      return [[0, 0]]\n    }\n\n    const entries = new Array(numEntries + 1)\n    entries[0] = [0, 0]\n\n    // TODO rewrite this to make an index-index that stays in memory\n    const bufSize = 8 * 2 * numEntries\n    if (bufSize > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError('integer overflow')\n    }\n    buf = Buffer.allocUnsafe(bufSize)\n    await this.filehandle.read(buf, 0, bufSize, 8)\n    for (let entryNumber = 0; entryNumber < numEntries; entryNumber += 1) {\n      const compressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16,\n      )\n      const uncompressedPosition = this._readLongWithOverflow(\n        buf,\n        entryNumber * 16 + 8,\n      )\n      entries[entryNumber + 1] = [compressedPosition, uncompressedPosition]\n    }\n\n    return entries\n  }\n\n  async getLastBlock() {\n    const entries = await this._getIndex()\n    if (!entries.length) {\n      return undefined\n    }\n    return entries[entries.length - 1]\n  }\n\n  async getRelevantBlocksForRead(length: number, position: number) {\n    const endPosition = position + length\n    if (length === 0) {\n      return []\n    }\n    const entries = await this._getIndex()\n    const relevant = []\n\n    // binary search to find the block that the\n    // read starts in and extend forward from that\n    const compare = (entry: any, nextEntry: any) => {\n      const uncompressedPosition = entry[UNCOMPRESSED_POSITION]\n      const nextUncompressedPosition = nextEntry\n        ? nextEntry[UNCOMPRESSED_POSITION]\n        : Infinity\n      // block overlaps read start\n      if (\n        uncompressedPosition <= position &&\n        nextUncompressedPosition > position\n      ) {\n        return 0\n        // block is before read start\n      }\n      if (uncompressedPosition < position) {\n        return -1\n      }\n      // block is after read start\n      return 1\n    }\n\n    let lowerBound = 0\n    let upperBound = entries.length - 1\n    let searchPosition = Math.floor(entries.length / 2)\n\n    let comparison = compare(\n      entries[searchPosition],\n      entries[searchPosition + 1],\n    )\n    while (comparison !== 0) {\n      if (comparison > 0) {\n        upperBound = searchPosition - 1\n      } else if (comparison < 0) {\n        lowerBound = searchPosition + 1\n      }\n      searchPosition = Math.ceil((upperBound - lowerBound) / 2) + lowerBound\n      comparison = compare(entries[searchPosition], entries[searchPosition + 1])\n    }\n\n    // here's where we read forward\n    relevant.push(entries[searchPosition])\n    let i = searchPosition + 1\n    for (; i < entries.length; i += 1) {\n      relevant.push(entries[i])\n      if (entries[i][UNCOMPRESSED_POSITION] >= endPosition) {\n        break\n      }\n    }\n    if (relevant[relevant.length - 1][UNCOMPRESSED_POSITION] < endPosition) {\n      relevant.push([])\n    }\n    return relevant\n  }\n}\n","import { Buffer } from 'buffer'\nimport { LocalFile, GenericFilehandle } from 'generic-filehandle'\n\n// locals\nimport { unzip } from './unzip'\nimport GziIndex from './gziIndex'\n\nexport default class BgzFilehandle {\n  filehandle: GenericFilehandle\n  gzi: GziIndex\n\n  constructor({\n    filehandle,\n    path,\n    gziFilehandle,\n    gziPath,\n  }: {\n    filehandle?: GenericFilehandle\n    path?: string\n    gziFilehandle?: GenericFilehandle\n    gziPath?: string\n  }) {\n    if (filehandle) {\n      this.filehandle = filehandle\n    } else if (path) {\n      this.filehandle = new LocalFile(path)\n    } else {\n      throw new TypeError('either filehandle or path must be defined')\n    }\n\n    if (!gziFilehandle && !gziPath && !path) {\n      throw new TypeError('either gziFilehandle or gziPath must be defined')\n    }\n\n    this.gzi = new GziIndex({\n      filehandle: gziFilehandle,\n      path: !gziFilehandle && !gziPath && path ? gziPath : `${path}.gzi`,\n    })\n  }\n\n  async stat() {\n    const compressedStat = await this.filehandle.stat()\n    return Object.assign(compressedStat, {\n      size: await this.getUncompressedFileSize(),\n      blocks: undefined,\n      blksize: undefined,\n    })\n  }\n\n  async getUncompressedFileSize() {\n    // read the last block's ISIZE (see gzip RFC),\n    // and add it to its uncompressedPosition\n    const [, uncompressedPosition] = await this.gzi.getLastBlock()\n\n    const { size } = await this.filehandle.stat()\n\n    const buf = Buffer.allocUnsafe(4)\n    // note: there should be a 28-byte EOF marker (an empty block) at\n    // the end of the file, so we skip backward past that\n    const { bytesRead } = await this.filehandle.read(buf, 0, 4, size - 28 - 4)\n    if (bytesRead !== 4) {\n      throw new Error('read error')\n    }\n    const lastBlockUncompressedSize = buf.readUInt32LE(0)\n    return uncompressedPosition + lastBlockUncompressedSize\n  }\n\n  async _readAndUncompressBlock(\n    blockBuffer: Buffer,\n    [compressedPosition]: [number],\n    [nextCompressedPosition]: [number],\n  ) {\n    let next = nextCompressedPosition\n    if (!next) {\n      next = (await this.filehandle.stat()).size\n    }\n\n    // read the compressed data into the block buffer\n    const blockCompressedLength = next - compressedPosition\n\n    await this.filehandle.read(\n      blockBuffer,\n      0,\n      blockCompressedLength,\n      compressedPosition,\n    )\n\n    // uncompress it\n    const unzippedBuffer = await unzip(\n      blockBuffer.slice(0, blockCompressedLength),\n    )\n\n    return unzippedBuffer as Buffer\n  }\n\n  async read(buf: Buffer, offset: number, length: number, position: number) {\n    // get the block positions for this read\n    const blockPositions = await this.gzi.getRelevantBlocksForRead(\n      length,\n      position,\n    )\n    const blockBuffer = Buffer.allocUnsafe(32768 * 2)\n    // uncompress the blocks and read from them one at a time to keep memory usage down\n    let destinationOffset = offset\n    let bytesRead = 0\n    for (\n      let blockNum = 0;\n      blockNum < blockPositions.length - 1;\n      blockNum += 1\n    ) {\n      // eslint-disable-next-line no-await-in-loop\n      const uncompressedBuffer = await this._readAndUncompressBlock(\n        blockBuffer,\n        blockPositions[blockNum],\n        blockPositions[blockNum + 1],\n      )\n      const [, uncompressedPosition] = blockPositions[blockNum]\n      const sourceOffset =\n        uncompressedPosition >= position ? 0 : position - uncompressedPosition\n      const sourceEnd =\n        Math.min(\n          position + length,\n          uncompressedPosition + uncompressedBuffer.length,\n        ) - uncompressedPosition\n      if (sourceOffset >= 0 && sourceOffset < uncompressedBuffer.length) {\n        uncompressedBuffer.copy(buf, destinationOffset, sourceOffset, sourceEnd)\n        destinationOffset += sourceEnd - sourceOffset\n        bytesRead += sourceEnd - sourceOffset\n      }\n    }\n\n    return { bytesRead, buffer: buf }\n  }\n}\n"],"names":["MCScanAnchorsAdapter","BaseFeatureDataAdapter","setup","opts","this","setupP","setupPre","catch","e","undefined","assemblyNames","getConf","pm","pluginManager","bed1","openLocation","bed2","mcscan","bed1text","bed2text","mcscantext","Promise","all","map","r","readFile","bed1Map","parseBed","bed2Map","feats","split","filter","f","line","index","n11","n12","n21","n22","score","strand","r11","get","r12","r21","r22","Error","hasDataForRefName","getRefNames","getFeatures","region","ObservableCreate","async","indexOf","assemblyName","flip","forEach","f11","f12","f21","f22","rowNum","r1","refName","start","Math","min","end","max","r2","doesIntersect2","observer","next","SimpleFeature","uniqueId","syntenyId","mate","complete","freeResources","text","Map","startsWith","name","file","buffer","TextDecoder","fatal","decode","isGzip","unzip","zip","a","b","i","decoder","parseLineByLine","cb","blockStart","entries","length","n","subarray","toString","trim","push","parsePAFLine","qname","qstart","qend","tname","tstart","tend","numMatches","blockLen","mappingQual","fields","extra","Object","fromEntries","field","slice","flipCigar","cigar","arr","op","swapIndelCigar","replaceAll","inputData","strm","pos","chunks","inflator","totalSize","remainingInput","Inflate","Z_SYNC_FLUSH","err","msg","next_in","result","avail_in","Uint8Array","offset","set","from","match","unzipChunkSlice","chunk","minv","maxv","cpos","blockPosition","dpos","dataPosition","cpositions","dpositions","len","origCpos","GziIndex","constructor","filehandle","path","TypeError","_readLongWithOverflow","buf","unsigned","long","greaterThan","Number","MAX_SAFE_INTEGER","lessThan","MIN_SAFE_INTEGER","toNumber","_getIndex","_readIndex","allocUnsafe","read","numEntries","Array","bufSize","entryNumber","compressedPosition","uncompressedPosition","getLastBlock","getRelevantBlocksForRead","position","endPosition","relevant","compare","entry","nextEntry","nextUncompressedPosition","Infinity","lowerBound","upperBound","searchPosition","floor","comparison","ceil","BgzFilehandle","gziFilehandle","gziPath","gzi","stat","compressedStat","assign","size","getUncompressedFileSize","blocks","blksize","bytesRead","readUInt32LE","_readAndUncompressBlock","blockBuffer","nextCompressedPosition","blockCompressedLength","blockPositions","destinationOffset","blockNum","uncompressedBuffer","sourceOffset","sourceEnd","copy"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9449.2e1d2652.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9449],{29449:(t,e,a)=>{a.r(e),a.d(e,{default:()=>l});var n=a(99834),r=a(7706),s=a(99546),i=a(35904),o=a(78054);class l extends i.default{async setupPre(t){const e=(0,n.openLocation)(this.getConf("outLocation"),this.pluginManager),a=await e.readFile(t),i=(0,s.isGzip)(a)?await(0,r.unzip)(a):a;return(0,o.PX)(i,u)}}function u(t){const e=t.split(" ");if(e.length<9)throw new Error(`improperly formatted line: ${t}`);const[a,,n,r,s,i,,o,l,u]=e;return{tname:i,tstart:+o,tend:+l,qname:a,qstart:+n,qend:+r,strand:"-"===s?-1:1,extra:{mappingQual:+u}}}}}]);
+//# sourceMappingURL=9449.2e1d2652.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9449.2e1d2652.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9449.2e1d2652.chunk.js","mappings":"iNASe,MAAMA,UAAuBC,EAAAA,QAC1C,cAAMC,CAASC,GACb,MAAMC,GAASC,EAAAA,EAAAA,cAAaC,KAAKC,QAAQ,eAAgBD,KAAKE,eACxDC,QAAgBL,EAAOM,SAASP,GAChCQ,GAAMC,EAAAA,EAAAA,QAAOH,SAAgBI,EAAAA,EAAAA,OAAMJ,GAAUA,EACnD,OAAOK,EAAAA,EAAAA,IAAgBH,EAAKI,EAC9B,EAGF,SAASA,EAAiBC,GACxB,MAAMC,EAASD,EAAKE,MAAM,KAC1B,GAAID,EAAOE,OAAS,EAElB,MAAM,IAAIC,MAAM,8BAA8BJ,KAEhD,MAAOK,EAAM,CAAGC,EAAQC,EAAMC,EAAQC,EAAM,CAAGC,EAAQC,EAAMC,GAAMX,EAEnE,MAAO,CACLQ,MAAOA,EACPC,QAASA,EACTC,MAAOA,EACPN,MAAOA,EACPC,QAASA,EACTC,MAAOA,EACPC,OAAmB,MAAXA,GAAkB,EAAI,EAC9BK,MAAO,CACLC,aAAcF,GAGpB,C","sources":["../../../plugins/comparative-adapters/src/MashMapAdapter/MashMapAdapter.ts"],"sourcesContent":["import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { isGzip } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nimport PAFAdapter from '../PAFAdapter/PAFAdapter'\nimport { parseLineByLine } from '../util'\n\nexport default class MashMapAdapter extends PAFAdapter {\n  async setupPre(opts?: BaseOptions) {\n    const outLoc = openLocation(this.getConf('outLocation'), this.pluginManager)\n    const buffer = (await outLoc.readFile(opts)) as Buffer\n    const buf = isGzip(buffer) ? await unzip(buffer) : buffer\n    return parseLineByLine(buf, parseMashMapLine)\n  }\n}\n\nfunction parseMashMapLine(line: string) {\n  const fields = line.split(' ')\n  if (fields.length < 9) {\n    // xref https://github.com/marbl/MashMap/issues/38\n    throw new Error(`improperly formatted line: ${line}`)\n  }\n  const [qname, , qstart, qend, strand, tname, , tstart, tend, mq] = fields\n\n  return {\n    tname: tname!,\n    tstart: +tstart!,\n    tend: +tend!,\n    qname: qname!,\n    qstart: +qstart!,\n    qend: +qend!,\n    strand: strand === '-' ? -1 : 1,\n    extra: {\n      mappingQual: +mq!,\n    },\n  }\n}\n"],"names":["MashMapAdapter","PAFAdapter","setupPre","opts","outLoc","openLocation","this","getConf","pluginManager","buffer","readFile","buf","isGzip","unzip","parseLineByLine","parseMashMapLine","line","fields","split","length","Error","qname","qstart","qend","strand","tname","tstart","tend","mq","extra","mappingQual"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9458.07f0ae54.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9458],{9458:(n,o,e)=>{e.r(o),e.d(o,{default:()=>O,getSpeedDialIconUtilityClass:()=>h,speedDialIconClasses:()=>m});var t=e(7552),c=e(93878),i=e(70799),s=e(51148),a=e(60129),r=e(4785),p=e(74893),l=e(69500);const I=(0,p.A)((0,l.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");var u=e(33761),d=e(85693);function h(n){return(0,d.Ay)("MuiSpeedDialIcon",n)}const m=(0,u.A)("MuiSpeedDialIcon",["root","icon","iconOpen","iconWithOpenIconOpen","openIcon","openIconOpen"]),f=(0,s.Ay)("span",{name:"MuiSpeedDialIcon",slot:"Root",overridesResolver:(n,o)=>{const{ownerState:e}=n;return[{[`& .${m.icon}`]:o.icon},{[`& .${m.icon}`]:e.open&&o.iconOpen},{[`& .${m.icon}`]:e.open&&e.openIcon&&o.iconWithOpenIconOpen},{[`& .${m.openIcon}`]:o.openIcon},{[`& .${m.openIcon}`]:e.open&&o.openIconOpen},o.root]}})((0,a.A)((({theme:n})=>({height:24,[`& .${m.icon}`]:{transition:n.transitions.create(["transform","opacity"],{duration:n.transitions.duration.short})},[`& .${m.openIcon}`]:{position:"absolute",transition:n.transitions.create(["transform","opacity"],{duration:n.transitions.duration.short}),opacity:0,transform:"rotate(-45deg)"},variants:[{props:({ownerState:n})=>n.open,style:{[`& .${m.icon}`]:{transform:"rotate(45deg)"}}},{props:({ownerState:n})=>n.open&&n.openIcon,style:{[`& .${m.icon}`]:{opacity:0}}},{props:({ownerState:n})=>n.open,style:{[`& .${m.openIcon}`]:{transform:"rotate(0deg)",opacity:1}}}]})))),w=t.forwardRef((function(n,o){const e=(0,r.b)({props:n,name:"MuiSpeedDialIcon"}),{className:s,icon:a,open:p,openIcon:u,...d}=e,m=e,w=(n=>{const{classes:o,open:e,openIcon:t}=n,c={root:["root"],icon:["icon",e&&"iconOpen",t&&e&&"iconWithOpenIconOpen"],openIcon:["openIcon",e&&"openIconOpen"]};return(0,i.A)(c,h,o)})(m);function O(n,o){return t.isValidElement(n)?t.cloneElement(n,{className:o}):n}return(0,l.jsxs)(f,{className:(0,c.A)(w.root,s),ref:o,ownerState:m,...d,children:[u?O(u,w.openIcon):null,a?O(a,w.icon):(0,l.jsx)(I,{className:w.icon})]})}));w.muiName="SpeedDialIcon";const O=w}}]);
+//# sourceMappingURL=9458.07f0ae54.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9458.07f0ae54.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9458.07f0ae54.chunk.js","mappings":"8SASA,SAAe,EAAAA,EAAA,IAA2B,SAAK,OAAQ,CACrDC,EAAG,wCACD,O,0BCTG,SAASC,EAA6BC,GAC3C,OAAO,EAAAC,EAAA,IAAqB,mBAAoBD,EAClD,CACA,MACA,GAD6B,EAAAE,EAAA,GAAuB,mBAAoB,CAAC,OAAQ,OAAQ,WAAY,uBAAwB,WAAY,iBCoBnIC,GAAoB,EAAAC,EAAA,IAAO,OAAQ,CACvCC,KAAM,mBACNL,KAAM,OACNM,kBAAmB,CAACC,EAAOC,KACzB,MAAM,WACJC,GACEF,EACJ,MAAO,CAAC,CACN,CAAC,MAAM,EAAqBG,QAASF,EAAOE,MAC3C,CACD,CAAC,MAAM,EAAqBA,QAASD,EAAWE,MAAQH,EAAOI,UAC9D,CACD,CAAC,MAAM,EAAqBF,QAASD,EAAWE,MAAQF,EAAWI,UAAYL,EAAOM,sBACrF,CACD,CAAC,MAAM,EAAqBD,YAAaL,EAAOK,UAC/C,CACD,CAAC,MAAM,EAAqBA,YAAaJ,EAAWE,MAAQH,EAAOO,cAClEP,EAAOQ,KAAK,GAjBO,EAmBvB,EAAAC,EAAA,IAAU,EACXC,YACI,CACJC,OAAQ,GACR,CAAC,MAAM,EAAqBT,QAAS,CACnCU,WAAYF,EAAMG,YAAYC,OAAO,CAAC,YAAa,WAAY,CAC7DC,SAAUL,EAAMG,YAAYE,SAASC,SAGzC,CAAC,MAAM,EAAqBX,YAAa,CACvCY,SAAU,WACVL,WAAYF,EAAMG,YAAYC,OAAO,CAAC,YAAa,WAAY,CAC7DC,SAAUL,EAAMG,YAAYE,SAASC,QAEvCE,QAAS,EACTC,UAAW,kBAEbC,SAAU,CAAC,CACTrB,MAAO,EACLE,gBACIA,EAAWE,KACjBkB,MAAO,CACL,CAAC,MAAM,EAAqBnB,QAAS,CACnCiB,UAAW,mBAGd,CACDpB,MAAO,EACLE,gBACIA,EAAWE,MAAQF,EAAWI,SACpCgB,MAAO,CACL,CAAC,MAAM,EAAqBnB,QAAS,CACnCgB,QAAS,KAGZ,CACDnB,MAAO,EACLE,gBACIA,EAAWE,KACjBkB,MAAO,CACL,CAAC,MAAM,EAAqBhB,YAAa,CACvCc,UAAW,eACXD,QAAS,WAKXI,EAA6B,cAAiB,SAAuBC,EAASC,GAClF,MAAMzB,GAAQ,OAAgB,CAC5BA,MAAOwB,EACP1B,KAAM,sBAEF,UACJ4B,EACAvB,KAAMwB,EAAQ,KACdvB,EACAE,SAAUsB,KACPC,GACD7B,EACEE,EAAaF,EACb8B,EA5FkB5B,KACxB,MAAM,QACJ4B,EAAO,KACP1B,EAAI,SACJE,GACEJ,EACE6B,EAAQ,CACZtB,KAAM,CAAC,QACPN,KAAM,CAAC,OAAQC,GAAQ,WAAYE,GAAYF,GAAQ,wBACvDE,SAAU,CAAC,WAAYF,GAAQ,iBAEjC,OAAO,EAAA4B,EAAA,GAAeD,EAAOvC,EAA8BsC,EAAQ,EAiFnDG,CAAkB/B,GAClC,SAASgC,EAAW/B,EAAMgC,GACxB,OAAiB,iBAAqBhC,GAChB,eAAmBA,EAAM,CAC3CuB,UAAWS,IAGRhC,CACT,CACA,OAAoB,UAAMP,EAAmB,CAC3C8B,WAAW,EAAAU,EAAA,GAAKN,EAAQrB,KAAMiB,GAC9BD,IAAKA,EACLvB,WAAYA,KACT2B,EACHQ,SAAU,CAACT,EAAeM,EAAWN,EAAcE,EAAQxB,UAAY,KAAMqB,EAAWO,EAAWP,EAAUG,EAAQ3B,OAAqB,SAAKmC,EAAS,CACtJZ,UAAWI,EAAQ3B,SAGzB,IAgCAoB,EAAcgB,QAAU,gBACxB,S","sources":["../../../node_modules/@mui/material/internal/svg-icons/Add.js","../../../node_modules/@mui/material/SpeedDialIcon/speedDialIconClasses.js","../../../node_modules/@mui/material/SpeedDialIcon/SpeedDialIcon.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { createSvgIcon } from \"../../utils/index.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSpeedDialIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDialIcon', slot);\n}\nconst speedDialIconClasses = generateUtilityClasses('MuiSpeedDialIcon', ['root', 'icon', 'iconOpen', 'iconWithOpenIconOpen', 'openIcon', 'openIconOpen']);\nexport default speedDialIconClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport AddIcon from \"../internal/svg-icons/Add.js\";\nimport speedDialIconClasses, { getSpeedDialIconUtilityClass } from \"./speedDialIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    open,\n    openIcon\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    icon: ['icon', open && 'iconOpen', openIcon && open && 'iconWithOpenIconOpen'],\n    openIcon: ['openIcon', open && 'openIconOpen']\n  };\n  return composeClasses(slots, getSpeedDialIconUtilityClass, classes);\n};\nconst SpeedDialIconRoot = styled('span', {\n  name: 'MuiSpeedDialIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${speedDialIconClasses.icon}`]: styles.icon\n    }, {\n      [`& .${speedDialIconClasses.icon}`]: ownerState.open && styles.iconOpen\n    }, {\n      [`& .${speedDialIconClasses.icon}`]: ownerState.open && ownerState.openIcon && styles.iconWithOpenIconOpen\n    }, {\n      [`& .${speedDialIconClasses.openIcon}`]: styles.openIcon\n    }, {\n      [`& .${speedDialIconClasses.openIcon}`]: ownerState.open && styles.openIconOpen\n    }, styles.root];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  height: 24,\n  [`& .${speedDialIconClasses.icon}`]: {\n    transition: theme.transitions.create(['transform', 'opacity'], {\n      duration: theme.transitions.duration.short\n    })\n  },\n  [`& .${speedDialIconClasses.openIcon}`]: {\n    position: 'absolute',\n    transition: theme.transitions.create(['transform', 'opacity'], {\n      duration: theme.transitions.duration.short\n    }),\n    opacity: 0,\n    transform: 'rotate(-45deg)'\n  },\n  variants: [{\n    props: ({\n      ownerState\n    }) => ownerState.open,\n    style: {\n      [`& .${speedDialIconClasses.icon}`]: {\n        transform: 'rotate(45deg)'\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.open && ownerState.openIcon,\n    style: {\n      [`& .${speedDialIconClasses.icon}`]: {\n        opacity: 0\n      }\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.open,\n    style: {\n      [`& .${speedDialIconClasses.openIcon}`]: {\n        transform: 'rotate(0deg)',\n        opacity: 1\n      }\n    }\n  }]\n})));\nconst SpeedDialIcon = /*#__PURE__*/React.forwardRef(function SpeedDialIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSpeedDialIcon'\n  });\n  const {\n    className,\n    icon: iconProp,\n    open,\n    openIcon: openIconProp,\n    ...other\n  } = props;\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  function formatIcon(icon, newClassName) {\n    if (/*#__PURE__*/React.isValidElement(icon)) {\n      return /*#__PURE__*/React.cloneElement(icon, {\n        className: newClassName\n      });\n    }\n    return icon;\n  }\n  return /*#__PURE__*/_jsxs(SpeedDialIconRoot, {\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    ...other,\n    children: [openIconProp ? formatIcon(openIconProp, classes.openIcon) : null, iconProp ? formatIcon(iconProp, classes.icon) : /*#__PURE__*/_jsx(AddIcon, {\n      className: classes.icon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SpeedDialIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display.\n   */\n  icon: PropTypes.node,\n  /**\n   * @ignore\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * The icon to display in the SpeedDial Floating Action Button when the SpeedDial is open.\n   */\n  openIcon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nSpeedDialIcon.muiName = 'SpeedDialIcon';\nexport default SpeedDialIcon;"],"names":["createSvgIcon","d","getSpeedDialIconUtilityClass","slot","generateUtilityClass","generateUtilityClasses","SpeedDialIconRoot","styled","name","overridesResolver","props","styles","ownerState","icon","open","iconOpen","openIcon","iconWithOpenIconOpen","openIconOpen","root","memoTheme","theme","height","transition","transitions","create","duration","short","position","opacity","transform","variants","style","SpeedDialIcon","inProps","ref","className","iconProp","openIconProp","other","classes","slots","composeClasses","useUtilityClasses","formatIcon","newClassName","clsx","children","Add","muiName"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/946.245d7df9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[946],{90946:(e,t,s)=>{s.r(t),s.d(t,{default:()=>c});var a=s(46377),r=s(66885),n=s(99546),i=s(82088),o=s(44728);class c extends a.BaseFeatureDataAdapter{async configure(){const e=await(this.getSubAdapter?.(this.getConf("sequenceAdapter")));if(!e)throw new Error("Error getting subadapter");return e.dataAdapter}async getRefNames(){return(await this.configure()).getRefNames()}getFeatures(e,t){return(0,r.ObservableCreate)((async s=>{const a=await this.configure(),r=e.end+1e4,c=Math.max(0,e.start-1e4);if(r<0||c>r)return void s.complete();const d=a.getFeatures({...e,start:c,end:r},t),f=await(0,o._)(d.pipe((0,i.$)())),u=f[0]?.get("seq")||"",h=this.getConf("search"),g=this.getConf("searchForward"),l=this.getConf("searchReverse"),m=this.getConf("caseInsensitive"),p=new RegExp(h,"g"+(m?"i":""));if(h){if(g){const t=u.matchAll(p);for(const a of t){const t=c+a.index,r=c+a.index+a[0].length;(0,n.doesIntersect2)(t,r,e.start,e.end)&&s.next(new n.SimpleFeature({uniqueId:`${this.id}-${t}-${a[0]}-pos`,refName:e.refName,start:t,end:r,name:a[0],strand:1}))}}if(l){const t=(0,n.revcom)(u).matchAll(p);for(const a of t){const t=r-a.index,i=r-a.index-a[0].length;(0,n.doesIntersect2)(i,t,e.start,e.end)&&s.next(new n.SimpleFeature({uniqueId:`${this.id}-${i}-${a[0]}-neg`,refName:e.refName,start:i,end:t,name:a[0],strand:-1}))}}}s.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=946.245d7df9.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/946.245d7df9.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/946.245d7df9.chunk.js","mappings":"iNAee,MAAMA,UAA8BC,EAAAA,uBACjD,eAAaC,GACX,MAAMC,QAAgBC,KAAKC,gBAAgBD,KAAKE,QAAQ,qBACxD,IAAKH,EACH,MAAM,IAAII,MAAM,4BAElB,OAAOJ,EAAQK,WACjB,CAEA,iBAAaC,GAEX,aADsBL,KAAKF,aACZO,aACjB,CAEOC,WAAAA,CAAYC,EAAeC,GAChC,OAAOC,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAMC,QAAwBX,KAAKF,YAE7Bc,EAAWL,EAAMM,IADZ,IAELC,EAAaC,KAAKC,IAAI,EAAGT,EAAMU,MAF1B,KAIX,GAAIL,EAAW,GAAKE,EAAaF,EAE/B,YADAM,EAASC,WAIX,MAAMC,EAAMT,EAAgBL,YAC1B,IACKC,EACHU,MAAOH,EACPD,IAAKD,GAEPJ,GAEIa,QAAcC,EAAAA,EAAAA,GAAeF,EAAIG,MAAKC,EAAAA,EAAAA,OACtCC,EAAmBJ,EAAM,IAAIK,IAAI,QAAU,GAC3CC,EAAS3B,KAAKE,QAAQ,UACtB0B,EAAgB5B,KAAKE,QAAQ,iBAC7B2B,EAAgB7B,KAAKE,QAAQ,iBAC7B4B,EAAkB9B,KAAKE,QAAQ,mBAC/B6B,EAAK,IAAIC,OAAOL,EAAQ,KAAIG,EAAkB,IAAM,KAE1D,GAAIH,EAAQ,CACV,GAAIC,EAAe,CACjB,MAAMK,EAAUR,EAASS,SAASH,GAClC,IAAK,MAAMI,KAASF,EAAS,CAC3B,MAAMG,EAAItB,EAAaqB,EAAME,MACvBC,EAAIxB,EAAaqB,EAAME,MAAQF,EAAM,GAAGI,QAC1CC,EAAAA,EAAAA,gBAAeJ,EAAGE,EAAG/B,EAAMU,MAAOV,EAAMM,MAC1CK,EAASuB,KACP,IAAIC,EAAAA,cAAc,CAChBC,SAAU,GAAG3C,KAAK4C,MAAMR,KAAKD,EAAM,SACnCU,QAAStC,EAAMsC,QACf5B,MAAOmB,EACPvB,IAAKyB,EACLQ,KAAMX,EAAM,GACZY,OAAQ,IAIhB,CACF,CACA,GAAIlB,EAAe,CACjB,MAAMI,GAAUe,EAAAA,EAAAA,QAAOvB,GAAUS,SAASH,GAC1C,IAAK,MAAMI,KAASF,EAAS,CAC3B,MAAMK,EAAI1B,EAAWuB,EAAME,MACrBD,EAAIxB,EAAWuB,EAAME,MAAQF,EAAM,GAAGI,QACxCC,EAAAA,EAAAA,gBAAeJ,EAAGE,EAAG/B,EAAMU,MAAOV,EAAMM,MAC1CK,EAASuB,KACP,IAAIC,EAAAA,cAAc,CAChBC,SAAU,GAAG3C,KAAK4C,MAAMR,KAAKD,EAAM,SACnCU,QAAStC,EAAMsC,QACf5B,MAAOmB,EACPvB,IAAKyB,EACLQ,KAAMX,EAAM,GACZY,QAAS,IAIjB,CACF,CACF,CAEA7B,EAASC,UAAU,GAEvB,CAEO8B,aAAAA,GAAiB,E","sources":["../../../plugins/sequence/src/SequenceSearchAdapter/SequenceSearchAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport {\n  SimpleFeature,\n  Feature,\n  Region,\n  revcom,\n  doesIntersect2,\n} from '@jbrowse/core/util'\nimport { toArray } from 'rxjs/operators'\nimport { firstValueFrom } from 'rxjs'\n\nexport default class SequenceSearchAdapter extends BaseFeatureDataAdapter {\n  public async configure() {\n    const adapter = await this.getSubAdapter?.(this.getConf('sequenceAdapter'))\n    if (!adapter) {\n      throw new Error('Error getting subadapter')\n    }\n    return adapter.dataAdapter as BaseFeatureDataAdapter\n  }\n\n  public async getRefNames() {\n    const adapter = await this.configure()\n    return adapter.getRefNames()\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions) {\n    return ObservableCreate<Feature>(async observer => {\n      const sequenceAdapter = await this.configure()\n      const hw = 10000\n      const queryEnd = query.end + hw\n      const queryStart = Math.max(0, query.start - hw)\n\n      if (queryEnd < 0 || queryStart > queryEnd) {\n        observer.complete()\n        return\n      }\n\n      const ret = sequenceAdapter.getFeatures(\n        {\n          ...query,\n          start: queryStart,\n          end: queryEnd,\n        },\n        opts,\n      )\n      const feats = await firstValueFrom(ret.pipe(toArray()))\n      const residues: string = feats[0]?.get('seq') || ''\n      const search = this.getConf('search') as string\n      const searchForward = this.getConf('searchForward')\n      const searchReverse = this.getConf('searchReverse')\n      const caseInsensitive = this.getConf('caseInsensitive')\n      const re = new RegExp(search, `g${caseInsensitive ? 'i' : ''}`)\n\n      if (search) {\n        if (searchForward) {\n          const matches = residues.matchAll(re)\n          for (const match of matches) {\n            const s = queryStart + match.index\n            const e = queryStart + match.index + match[0].length\n            if (doesIntersect2(s, e, query.start, query.end)) {\n              observer.next(\n                new SimpleFeature({\n                  uniqueId: `${this.id}-${s}-${match[0]}-pos`,\n                  refName: query.refName,\n                  start: s,\n                  end: e,\n                  name: match[0],\n                  strand: 1,\n                }),\n              )\n            }\n          }\n        }\n        if (searchReverse) {\n          const matches = revcom(residues).matchAll(re)\n          for (const match of matches) {\n            const e = queryEnd - match.index\n            const s = queryEnd - match.index - match[0].length\n            if (doesIntersect2(s, e, query.start, query.end)) {\n              observer.next(\n                new SimpleFeature({\n                  uniqueId: `${this.id}-${s}-${match[0]}-neg`,\n                  refName: query.refName,\n                  start: s,\n                  end: e,\n                  name: match[0],\n                  strand: -1,\n                }),\n              )\n            }\n          }\n        }\n      }\n\n      observer.complete()\n    })\n  }\n\n  public freeResources() {}\n}\n"],"names":["SequenceSearchAdapter","BaseFeatureDataAdapter","configure","adapter","this","getSubAdapter","getConf","Error","dataAdapter","getRefNames","getFeatures","query","opts","ObservableCreate","async","sequenceAdapter","queryEnd","end","queryStart","Math","max","start","observer","complete","ret","feats","firstValueFrom","pipe","toArray","residues","get","search","searchForward","searchReverse","caseInsensitive","re","RegExp","matches","matchAll","match","s","index","e","length","doesIntersect2","next","SimpleFeature","uniqueId","id","refName","name","strand","revcom","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9589.9087e0ea.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9589],{49589:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var o=a(7552),l=a(68446),n=a(29499),r=a(36715),c=a(1343),s=a(58507),i=a(5401),h=a(49823);const u=(0,a(75785).n9)()({root:{width:500}}),m=(0,l.observer)((function(e){const{model:t,handleClose:a}=e,{classes:l}=u(),{maxHeight:m=""}=t,[b,d]=(0,o.useState)(`${m}`);return o.createElement(h.Dialog,{open:!0,onClose:a,title:"Set max height"},o.createElement(n.A,{className:l.root},o.createElement(r.A,null,'Set max height for the track. For example, you can increase this if the layout says "Max height reached"'),o.createElement(c.A,{value:b,autoFocus:!0,onChange:e=>{d(e.target.value)},placeholder:"Enter max height for layout"}),o.createElement(s.A,null,o.createElement(i.A,{variant:"contained",color:"primary",type:"submit",autoFocus:!0,onClick:()=>{t.setMaxHeight(""===b||Number.isNaN(+b)?void 0:+b),a()}},"Submit"),o.createElement(i.A,{variant:"contained",color:"secondary",onClick:()=>{a()}},"Cancel"))))}))}}]);
+//# sourceMappingURL=9589.9087e0ea.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9589.9087e0ea.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9589.9087e0ea.chunk.js","mappings":"gPAYA,MAAMA,GAAYC,E,SAAAA,KAAAA,CAAa,CAC7BC,KAAM,CACJC,MAAO,OA4DX,GAxD2BC,EAAAA,EAAAA,WAAS,SAAUC,GAO5C,MAAM,MAAEC,EAAK,YAAEC,GAAgBF,GACzB,QAAEG,GAAYR,KACd,UAAES,EAAY,IAAOH,GACpBI,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,GAAGH,KAElC,OACEI,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACC,QAAST,EAAaU,MAAM,kBACvCJ,EAAAA,cAACK,EAAAA,EAAa,CAACC,UAAWX,EAAQN,MAChCW,EAAAA,cAACO,EAAAA,EAAU,KAAC,4GAIZP,EAAAA,cAACQ,EAAAA,EAAS,CACRC,MAAOZ,EACPa,WAAS,EACTC,SAAUC,IACRd,EAAOc,EAAMC,OAAOJ,MAAM,EAE5BK,YAAY,gCAEdd,EAAAA,cAACe,EAAAA,EAAa,KACZf,EAAAA,cAACgB,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,UACNC,KAAK,SACLT,WAAS,EACTU,QAASA,KACP3B,EAAM4B,aACI,KAARxB,GAAeyB,OAAOC,OAAO1B,QAAc2B,GAAN3B,GAEvCH,GAAa,GAEhB,UAGDM,EAAAA,cAACgB,EAAAA,EAAM,CACLC,QAAQ,YACRC,MAAM,YACNE,QAASA,KACP1B,GAAa,GAEhB,YAOX,G","sources":["../../../plugins/alignments/src/LinearPileupDisplay/components/SetMaxHeightDialog.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  root: {\n    width: 500,\n  },\n})\n\nconst SetMaxHeightDialog = observer(function (props: {\n  model: {\n    maxHeight?: number\n    setMaxHeight: (arg?: number) => void\n  }\n  handleClose: () => void\n}) {\n  const { model, handleClose } = props\n  const { classes } = useStyles()\n  const { maxHeight = '' } = model\n  const [max, setMax] = useState(`${maxHeight}`)\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set max height\">\n      <DialogContent className={classes.root}>\n        <Typography>\n          Set max height for the track. For example, you can increase this if\n          the layout says &quot;Max height reached&quot;\n        </Typography>\n        <TextField\n          value={max}\n          autoFocus\n          onChange={event => {\n            setMax(event.target.value)\n          }}\n          placeholder=\"Enter max height for layout\"\n        />\n        <DialogActions>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            type=\"submit\"\n            autoFocus\n            onClick={() => {\n              model.setMaxHeight(\n                max !== '' && !Number.isNaN(+max) ? +max : undefined,\n              )\n              handleClose()\n            }}\n          >\n            Submit\n          </Button>\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              handleClose()\n            }}\n          >\n            Cancel\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n})\nexport default SetMaxHeightDialog\n"],"names":["useStyles","makeStyles","root","width","observer","props","model","handleClose","classes","maxHeight","max","setMax","useState","React","Dialog","open","onClose","title","DialogContent","className","Typography","TextField","value","autoFocus","onChange","event","target","placeholder","DialogActions","Button","variant","color","type","onClick","setMaxHeight","Number","isNaN","undefined"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/965.8524fdac.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[965],{40965:(e,t,n)=>{n.r(t),n.d(t,{default:()=>N});var a=n(7552),o=n(92562),r=n(99546),s=n(91468),i=n(68446),c=n(33039),l=n.n(c),f=n(31409),m=n.n(f),u=n(5401),g=n(75785),d=n(68584),b=n(68984),p=n(49823);function C({config:e}){const[t,n]=(0,a.useState)(),[o,s]=(0,a.useState)(),i=(0,r.getSession)(e),{rpcManager:c}=i;(0,a.useEffect)((()=>{(async()=>{try{const t=(0,d.readConfObject)(e,"adapter"),n=await c.call(e.trackId,"CoreGetInfo",{adapterConfig:t});s(n)}catch(e){console.error(e),n(e)}})()}),[e,c]);const l="string"==typeof o?{header:`<pre>${o.replaceAll("<","&lt;").replaceAll(">","&gt;")}</pre>`}:o||{};return a.createElement(b.BaseCard,{title:"File info"},t?a.createElement(p.ErrorMessage,{error:t}):void 0===o?a.createElement(p.LoadingEllipses,{message:"Loading file data"}):a.createElement(b.Attributes,{attributes:l}))}var E=n(29499);const h=(0,g.n9)()((e=>({container:{minWidth:800},refNames:{maxHeight:300,overflow:"auto",flexGrow:1,background:e.palette.background.default}}))),A=(0,i.observer)((function({config:e,onClose:t}){const{classes:n}=h(),[o,i]=(0,a.useState)(),[c,l]=(0,a.useState)(),[f,g]=(0,a.useState)(!1),{rpcManager:b}=(0,r.getSession)(e);(0,a.useEffect)((()=>{(async()=>{try{const t=await Promise.all([...new Set((0,s.getConfAssemblyNames)(e))].map((async t=>{const n=(0,d.readConfObject)(e,"adapter");return[t,await b.call(e.trackId,"CoreGetRefNames",{adapterConfig:n,regions:[{assemblyName:t}]})]})));l(Object.fromEntries(t))}catch(e){console.error(e),i(e)}})()}),[e,b]);const C=c?Object.entries(c):[],A=C.flatMap((([e,t])=>[`--- ${e} ---`,...t.slice(0,1e4),t.length>1e4?`\nToo many refNames to show in browser for ${e}, use "Copy ref names" button to copy to clipboard`:""])).filter((e=>!!e)).join("\n");return a.createElement(p.Dialog,{open:!0,title:"Reference sequence names used in track",onClose:t,maxWidth:"xl"},a.createElement(E.A,{className:n.container},o?a.createElement(p.ErrorMessage,{error:o}):void 0===c?a.createElement(p.LoadingEllipses,{message:"Loading refNames"}):a.createElement(a.Fragment,null,a.createElement(u.A,{variant:"contained",onClick:()=>{m()(C.flatMap((([e,t])=>[`--- ${e} ---`,...t])).filter((e=>!!e)).join("\n")),g(!0),setTimeout((()=>{g(!1)}),1e3)}},f?"Copied to clipboard!":"Copy ref names"),a.createElement("pre",{className:n.refNames},A))))})),y=(0,g.n9)()({content:{minWidth:800},button:{float:"right"}});function v(e,t){for(const n in e)n===t?delete e[n]:"object"==typeof e[n]&&v(e[n],t);return e}const w=(0,i.observer)((function({config:e}){const[t,n]=(0,a.useState)(!1),o=(0,d.readConfObject)(e),s=(0,r.getSession)(e),{classes:i}=y(),[c,f]=(0,a.useState)(!1),g=(0,d.getConf)(s,["formatAbout","hideUris"])||(0,d.readConfObject)(e,["formatAbout","hideUris"]),{pluginManager:p}=(0,r.getEnv)(s),E=p.evaluateExtensionPoint("Core-customizeAbout",{config:{...o,...(0,d.getConf)(s,["formatAbout","config"],{config:o}),...(0,d.readConfObject)(e,["formatAbout","config"],{config:o})}},{session:s,config:e}),h=p.evaluateExtensionPoint("Core-extraAboutPanel",null,{session:s,config:e});return a.createElement("div",{className:i.content},a.createElement(b.BaseCard,{title:"Configuration"},g?null:a.createElement("span",{className:i.button},a.createElement(u.A,{variant:"contained",color:"secondary",onClick:()=>{f(!0)}},"Show ref names"),a.createElement(u.A,{variant:"contained",onClick:()=>{const e=v(l()(o),"baseUri");m()(JSON.stringify(e,null,2)),n(!0),setTimeout((()=>{n(!1)}),1e3)}},t?"Copied to clipboard!":"Copy config")),a.createElement(b.Attributes,{attributes:E,omit:["displays","baseUri","refNames","formatAbout"],hideUris:g})),h?a.createElement(b.BaseCard,{title:h.name},a.createElement(h.Component,{config:e})):null,a.createElement(C,{config:e}),c?a.createElement(A,{config:e,onClose:()=>{f(!1)}}):null)}));function N({config:e,handleClose:t}){const n=(0,r.getSession)(e),i=(0,s.getTrackName)(e,n),{pluginManager:c}=(0,r.getEnv)(n),l=c.evaluateExtensionPoint("Core-replaceAbout",w,{session:n,config:e});return a.createElement(o.A,{open:!0,onClose:t,title:i,maxWidth:"xl"},a.createElement(l,{config:e}))}}}]);
+//# sourceMappingURL=965.8524fdac.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/965.8524fdac.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/965.8524fdac.chunk.js","mappings":"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","sources":["../../../packages/product-core/src/ui/FileInfoPanel.tsx","../../../packages/product-core/src/ui/RefNameInfoDialog.tsx","../../../packages/product-core/src/ui/AboutDialogContents.tsx","../../../packages/product-core/src/ui/AboutDialog.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { getSession } from '@jbrowse/core/util'\nimport {\n  BaseCard,\n  Attributes,\n} from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui'\n\ntype FileInfo = Record<string, unknown> | string\n\nexport default function FileInfoPanel({\n  config,\n}: {\n  config: AnyConfigurationModel\n}) {\n  const [error, setError] = useState<unknown>()\n  const [info, setInfo] = useState<FileInfo>()\n  const session = getSession(config)\n  const { rpcManager } = session\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        const adapterConfig = readConfObject(config, 'adapter')\n        const result = await rpcManager.call(config.trackId, 'CoreGetInfo', {\n          adapterConfig,\n        })\n        setInfo(result as FileInfo)\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [config, rpcManager])\n\n  const details =\n    typeof info === 'string'\n      ? {\n          header: `<pre>${info\n            .replaceAll('<', '&lt;')\n            .replaceAll('>', '&gt;')}</pre>`,\n        }\n      : info || {}\n\n  return (\n    <BaseCard title=\"File info\">\n      {error ? (\n        <ErrorMessage error={error} />\n      ) : info === undefined ? (\n        <LoadingEllipses message=\"Loading file data\" />\n      ) : (\n        <Attributes attributes={details} />\n      )}\n    </BaseCard>\n  )\n}\n","import React, { useState, useEffect } from 'react'\nimport { Button, DialogContent } from '@mui/material'\nimport {\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { Dialog, ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui'\nimport { getSession } from '@jbrowse/core/util'\nimport { getConfAssemblyNames } from '@jbrowse/core/util/tracks'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport copy from 'copy-to-clipboard'\n\nconst MAX_REF_NAMES = 10_000\n\nconst useStyles = makeStyles()(theme => ({\n  container: {\n    minWidth: 800,\n  },\n  refNames: {\n    maxHeight: 300,\n    overflow: 'auto',\n    flexGrow: 1,\n    background: theme.palette.background.default,\n  },\n}))\n\nconst RefNameInfoDialog = observer(function ({\n  config,\n  onClose,\n}: {\n  config: AnyConfigurationModel\n  onClose: () => void\n}) {\n  const { classes } = useStyles()\n  const [error, setError] = useState<unknown>()\n  const [refNames, setRefNames] = useState<Record<string, string[]>>()\n  const [copied, setCopied] = useState(false)\n  const { rpcManager } = getSession(config)\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        const map = await Promise.all(\n          [...new Set(getConfAssemblyNames(config))].map(async assemblyName => {\n            const adapterConfig = readConfObject(config, 'adapter')\n            return [\n              assemblyName,\n              (await rpcManager.call(config.trackId, 'CoreGetRefNames', {\n                adapterConfig,\n                // hack for synteny adapters\n                regions: [\n                  {\n                    assemblyName,\n                  },\n                ],\n              })) as string[],\n            ] as const\n          }),\n        )\n        setRefNames(Object.fromEntries(map))\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [config, rpcManager])\n\n  const names = refNames ? Object.entries(refNames) : []\n  const result = names\n    .flatMap(([assemblyName, refNames]) => {\n      return [\n        `--- ${assemblyName} ---`,\n        ...refNames.slice(0, MAX_REF_NAMES),\n        refNames.length > MAX_REF_NAMES\n          ? `\\nToo many refNames to show in browser for ${assemblyName}, use \"Copy ref names\" button to copy to clipboard`\n          : '',\n      ]\n    })\n    .filter(f => !!f)\n    .join('\\n')\n\n  return (\n    <Dialog\n      open\n      title=\"Reference sequence names used in track\"\n      onClose={onClose}\n      maxWidth=\"xl\"\n    >\n      <DialogContent className={classes.container}>\n        {error ? (\n          <ErrorMessage error={error} />\n        ) : refNames === undefined ? (\n          <LoadingEllipses message=\"Loading refNames\" />\n        ) : (\n          <>\n            <Button\n              variant=\"contained\"\n              onClick={() => {\n                copy(\n                  names\n                    .flatMap(([assemblyName, refNames]) => [\n                      `--- ${assemblyName} ---`,\n                      ...refNames,\n                    ])\n                    .filter(f => !!f)\n                    .join('\\n'),\n                )\n                setCopied(true)\n                setTimeout(() => {\n                  setCopied(false)\n                }, 1000)\n              }}\n            >\n              {copied ? 'Copied to clipboard!' : 'Copy ref names'}\n            </Button>\n\n            <pre className={classes.refNames}>{result}</pre>\n          </>\n        )}\n      </DialogContent>\n    </Dialog>\n  )\n})\n\nexport default RefNameInfoDialog\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport clone from 'clone'\nimport copy from 'copy-to-clipboard'\nimport { Button } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n  getConf,\n  readConfObject,\n  AnyConfigurationModel,\n} from '@jbrowse/core/configuration'\nimport { getSession, getEnv } from '@jbrowse/core/util'\nimport {\n  BaseCard,\n  Attributes,\n} from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport FileInfoPanel from './FileInfoPanel'\nimport RefNameInfoDialog from './RefNameInfoDialog'\n\nconst useStyles = makeStyles()({\n  content: {\n    minWidth: 800,\n  },\n  button: {\n    float: 'right',\n  },\n})\n\nfunction removeAttr(obj: Record<string, unknown>, attr: string) {\n  for (const prop in obj) {\n    if (prop === attr) {\n      delete obj[prop]\n    } else if (typeof obj[prop] === 'object') {\n      removeAttr(obj[prop] as Record<string, unknown>, attr)\n    }\n  }\n  return obj\n}\n\nconst AboutDialogContents = observer(function ({\n  config,\n}: {\n  config: AnyConfigurationModel\n}) {\n  const [copied, setCopied] = useState(false)\n  const conf = readConfObject(config)\n  const session = getSession(config)\n  const { classes } = useStyles()\n  const [showRefNames, setShowRefNames] = useState(false)\n\n  const hideUris =\n    getConf(session, ['formatAbout', 'hideUris']) ||\n    readConfObject(config, ['formatAbout', 'hideUris'])\n\n  const { pluginManager } = getEnv(session)\n\n  const confPostExt = pluginManager.evaluateExtensionPoint(\n    'Core-customizeAbout',\n    {\n      config: {\n        ...conf,\n        ...getConf(session, ['formatAbout', 'config'], { config: conf }),\n        ...readConfObject(config, ['formatAbout', 'config'], { config: conf }),\n      },\n    },\n    { session, config },\n  ) as Record<string, unknown>\n\n  const ExtraPanel = pluginManager.evaluateExtensionPoint(\n    'Core-extraAboutPanel',\n    null,\n    { session, config },\n  ) as { name: string; Component: React.FC<any> } | null\n\n  return (\n    <div className={classes.content}>\n      <BaseCard title=\"Configuration\">\n        {!hideUris ? (\n          <span className={classes.button}>\n            <Button\n              variant=\"contained\"\n              color=\"secondary\"\n              onClick={() => {\n                setShowRefNames(true)\n              }}\n            >\n              Show ref names\n            </Button>\n            <Button\n              variant=\"contained\"\n              onClick={() => {\n                const snap = removeAttr(clone(conf), 'baseUri')\n                copy(JSON.stringify(snap, null, 2))\n                setCopied(true)\n                setTimeout(() => {\n                  setCopied(false)\n                }, 1000)\n              }}\n            >\n              {copied ? 'Copied to clipboard!' : 'Copy config'}\n            </Button>\n          </span>\n        ) : null}\n        <Attributes\n          attributes={confPostExt}\n          omit={['displays', 'baseUri', 'refNames', 'formatAbout']}\n          hideUris={hideUris}\n        />\n      </BaseCard>\n      {ExtraPanel ? (\n        <BaseCard title={ExtraPanel.name}>\n          <ExtraPanel.Component config={config} />\n        </BaseCard>\n      ) : null}\n      <FileInfoPanel config={config} />\n      {showRefNames ? (\n        <RefNameInfoDialog\n          config={config}\n          onClose={() => {\n            setShowRefNames(false)\n          }}\n        />\n      ) : null}\n    </div>\n  )\n})\n\nexport default AboutDialogContents\n","import React from 'react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport Dialog from '@jbrowse/core/ui/Dialog'\nimport { getSession, getEnv } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport AboutContents from './AboutDialogContents'\n\nexport function AboutDialog({\n  config,\n  handleClose,\n}: {\n  config: AnyConfigurationModel\n  handleClose: () => void\n}) {\n  const session = getSession(config)\n  const trackName = getTrackName(config, session)\n  const { pluginManager } = getEnv(session)\n\n  const AboutComponent = pluginManager.evaluateExtensionPoint(\n    'Core-replaceAbout',\n    AboutContents,\n    { session, config },\n  ) as React.FC<any>\n\n  return (\n    <Dialog open onClose={handleClose} title={trackName} maxWidth=\"xl\">\n      <AboutComponent config={config} />\n    </Dialog>\n  )\n}\n"],"names":["FileInfoPanel","config","error","setError","useState","info","setInfo","session","getSession","rpcManager","useEffect","adapterConfig","readConfObject","result","call","trackId","e","console","details","header","replaceAll","React","BaseCard","title","ErrorMessage","undefined","LoadingEllipses","message","Attributes","attributes","useStyles","makeStyles","theme","container","minWidth","refNames","maxHeight","overflow","flexGrow","background","palette","default","observer","onClose","classes","setRefNames","copied","setCopied","map","Promise","all","Set","getConfAssemblyNames","async","assemblyName","regions","Object","fromEntries","names","entries","flatMap","slice","length","filter","f","join","Dialog","open","maxWidth","DialogContent","className","Button","variant","onClick","copy","setTimeout","content","button","float","removeAttr","obj","attr","prop","conf","showRefNames","setShowRefNames","hideUris","getConf","pluginManager","getEnv","confPostExt","evaluateExtensionPoint","ExtraPanel","color","snap","clone","JSON","stringify","omit","name","Component","RefNameInfoDialog","AboutDialog","handleClose","trackName","getTrackName","AboutComponent","AboutContents"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9657.0cccd5bf.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9657],{70156:(e,a,o)=>{o.d(a,{A:()=>r});const r=o(7552).createContext()},95767:(e,a,o)=>{o.d(a,{A:()=>h});var r=o(7552),t=o(93878),s=o(70799),l=o(70156),n=o(51148),d=o(4785),u=o(14627),c=o(69500);const b=(0,n.Ay)("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,a)=>a.root})({display:"table-header-group"}),i={variant:"head"},A="thead",h=r.forwardRef((function(e,a){const o=(0,d.b)({props:e,name:"MuiTableHead"}),{className:r,component:n=A,...h}=o,p={...o,component:n},w=(e=>{const{classes:a}=e;return(0,s.A)({root:["root"]},u.X,a)})(p);return(0,c.jsx)(l.A.Provider,{value:i,children:(0,c.jsx)(b,{as:n,className:(0,t.A)(w.root,r),ref:a,role:n===A?null:"rowgroup",ownerState:p,...h})})}))},79657:(e,a,o)=>{o.r(a),o.d(a,{default:()=>r.A,getTableHeadUtilityClass:()=>t.X,tableHeadClasses:()=>t.A});var r=o(95767),t=o(14627)},14627:(e,a,o)=>{o.d(a,{A:()=>l,X:()=>s});var r=o(33761),t=o(85693);function s(e){return(0,t.Ay)("MuiTableHead",e)}const l=(0,r.A)("MuiTableHead",["root"])}}]);
+//# sourceMappingURL=9657.0cccd5bf.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9657.0cccd5bf.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9657.0cccd5bf.chunk.js","mappings":"0IASA,Q,QAJsC,e,6HCMtC,MASMA,GAAgB,QAAO,QAAS,CACpCC,KAAM,eACNC,KAAM,OACNC,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHzB,CAInB,CACDC,QAAS,uBAELC,EAAY,CAChBC,QAAS,QAELC,EAAmB,QAuDzB,EAtD+B,cAAiB,SAAmBC,EAASC,GAC1E,MAAMR,GAAQ,OAAgB,CAC5BA,MAAOO,EACPV,KAAM,kBAEF,UACJY,EAAS,UACTC,EAAYJ,KACTK,GACDX,EACEY,EAAa,IACdZ,EACHU,aAEIG,EAlCkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,OAHO,CACZV,KAAM,CAAC,SAEoB,IAA0BW,EAAQ,EA2B/CC,CAAkBF,GAClC,OAAoB,SAAK,IAAiBG,SAAU,CAClDC,MAAOZ,EACPa,UAAuB,SAAKrB,EAAe,CACzCsB,GAAIR,EACJD,WAAW,OAAKI,EAAQX,KAAMO,GAC9BD,IAAKA,EACLW,KAAMT,IAAcJ,EAAmB,KAAO,WAC9CM,WAAYA,KACTD,KAGT,G,0MCvDO,SAASS,EAAyBtB,GACvC,OAAO,QAAqB,eAAgBA,EAC9C,CACA,MACA,GADyB,OAAuB,eAAgB,CAAC,Q","sources":["../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableHead/TableHead.js","../../../node_modules/@mui/material/TableHead/tableHeadClasses.js"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableHeadUtilityClass } from \"./tableHeadClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n  name: 'MuiTableHead',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-header-group'\n});\nconst tablelvl2 = {\n  variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableHead'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableHeadRoot, {\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n  return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;"],"names":["TableHeadRoot","name","slot","overridesResolver","props","styles","root","display","tablelvl2","variant","defaultComponent","inProps","ref","className","component","other","ownerState","classes","useUtilityClasses","Provider","value","children","as","role","getTableHeadUtilityClass"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9658.33669a59.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9658],{79610:(e,t,a)=>{a.d(t,{$2:()=>r,Eg:()=>c,WT:()=>s,f0:()=>l,mr:()=>o});var n=a(99546),i=a(30385);function o({feature:e,ctx:t,offsets:a,cb:i,height:o,drawCurves:s,oobLimit:l,viewWidth:c,hideTiny:f}){const{p11:h,p12:m,p21:d,p22:g}=e,u=h.offsetPx-a[0],w=m.offsetPx-a[0],p=d.offsetPx-a[1],b=g.offsetPx-a[1],v=Math.abs(w-u),x=Math.abs(b-p),C=o,M=(C-0)/2,y=Math.min(p,b),k=Math.max(p,b);(0,n.doesIntersect2)(y,k,-l,c+l)&&(v<=1&&x<=1?f||(t.beginPath(),t.moveTo(u,0),s?t.bezierCurveTo(u,M,p,M,p,C):t.lineTo(p,C),t.stroke()):(r(t,u,w,0,b,p,C,M,s),i(t)))}function r(e,t,a,n,i,o,r,s,l){l?function(e,t,a,n,i,o,r,s){const l=Math.abs(t-a),c=Math.abs(t-a);if(l<5&&c<5&&a<t&&Math.abs(t-i)>100){const e=t;t=a,a=e}e.beginPath(),e.moveTo(t,n),e.lineTo(a,n),e.bezierCurveTo(a,s,i,s,i,r),e.lineTo(o,r),e.bezierCurveTo(o,s,t,s,t,n),e.closePath(),e.fill()}(e,t,a,n,i,o,r,s):function(e,t,a,n,i,o,r){e.beginPath(),e.moveTo(t,n),e.lineTo(a,n),e.lineTo(i,r),e.lineTo(o,r),e.closePath(),e.fill()}(e,t,a,n,i,o,r)}function s(e,t){const a=(0,n.getContainingView)(t),o=(0,n.getContainingTrack)(t),r=t.clickMapCanvas,s=t.cigarClickMapCanvas;if(!r||!s)return;const l=r.getBoundingClientRect(),c=r.getContext("2d"),f=s.getContext("2d");if(!c||!f)return;const h=e.clientX-l.left,m=e.clientY-l.top,[d,g,u]=c.getImageData(h,m,1,1).data,w=Math.floor(i.xx/t.numFeats),p=(0,i.OX)(d,g,u,w),b=t.featPositions[p];if(b){const{f:e}=b;t.setClickId(e.id());const i=(0,n.getSession)(t);(0,n.isSessionModelWithWidgets)(i)&&i.showWidget(i.addWidget("BaseFeatureWidget","baseFeature",{view:a,track:o,featureData:e.toJSON()}))}return b}function l(e,t,a){e.preventDefault();const n=t.clickMapCanvas,o=t.cigarClickMapCanvas;if(!n||!o)return;const r=n.getBoundingClientRect(),s=n.getContext("2d"),l=o.getContext("2d");if(!s||!l)return;const{clientX:c,clientY:f}=e,h=c-r.left,m=f-r.top,[d,g,u]=s.getImageData(h,m,1,1).data,w=Math.floor(i.xx/t.numFeats),p=(0,i.OX)(d,g,u,w),b=t.featPositions[p];b&&(t.setClickId(b.f.id()),a({clientX:c,clientY:f,feature:b}))}function c(e,t,a){const i=e.toJSON(),o=i.mate,r=i.end-i.start,s=o.end-o.start,l=i.identity,c=i.name,f=o.name;return[`Loc1: ${(0,n.assembleLocString)(i)}`,`Loc2: ${(0,n.assembleLocString)(o)}`,`Inverted: ${-1===i.strand}`,`Query len: ${r.toLocaleString("en-US")}`,`Target len: ${s.toLocaleString("en-US")}`,l?`Identity: ${l.toPrecision(2)}`:"",t?`CIGAR operator: ${t}${a}`:"",c?`Name 1: ${c}`:"",f?`Name 1: ${f}`:""].filter((e=>!!e)).join("<br/>")}},30385:(e,t,a)=>{a.d(t,{C4:()=>m,OX:()=>f,Ww:()=>h,xx:()=>o});var n=a(99546),i=a(79610);const o=16581375;function r(e){return`rgb(${Math.floor(e/65025)%255},${Math.floor(e/255)%255},${e%255})`}const s={I:"#ff03",N:"#0a03",D:"#00f3",X:"brown",M:"#f003","=":"#f003"},l=3,c=1600;function f(e,t,a,n){return Math.floor((255*e*255+255*t+a-1)/n)}function h(e,t,a){const f=(0,n.getContainingView)(e),h=f.drawCurves,m=f.drawCIGAR,d=f.middleComparativeHeight,g=f.width,u=f.views.map((e=>e.bpPerPx));a&&(a.imageSmoothingEnabled=!1),t.beginPath();const w=e.featPositions,p=f.views.map((e=>e.offsetPx)),b=Math.floor(o/w.length);t.fillStyle=s.M,t.strokeStyle=s.M;for(const{p11:e,p12:a,p21:n,p22:i}of w){const o=e.offsetPx-p[0],r=a.offsetPx-p[0],s=n.offsetPx-p[1],f=i.offsetPx-p[1],m=Math.abs(r-o),u=Math.abs(f-s),w=0,b=d,v=(b-w)/2;m<=l&&u<=l&&s<g+c&&s>-c&&(t.moveTo(o,w),h?t.bezierCurveTo(o,v,s,v,s,b):t.lineTo(s,b))}t.stroke(),t.fillStyle=s.M,t.strokeStyle=s.M;for(const{p11:e,p12:b,p21:v,p22:x,f:C,cigar:M}of w){const w=e.offsetPx-p[0],y=b.offsetPx-p[0],k=v.offsetPx-p[1],S=x.offsetPx-p[1],P=Math.abs(y-w),T=Math.abs(S-k),$=Math.min(k,S),E=Math.max(k,S),z=0,L=d,I=(L-z)/2;if(!(P<=l&&T<=l)&&(0,n.doesIntersect2)($,E,-c,f.width+c)){const e=C.get("strand"),n=-1===e?y:w,l=n<(-1===e?w:y)?1:-1,c=(k<S?1:-1)*e;let f=n,d=-1===e?S:k;if(M.length&&m){let e=!1,n=0,m=0;const w=Math.floor(o/M.length);for(let o=0;o<M.length;o+=2){const p=o*w+1,b=+M[o],v=M[o+1];e||(n=f,m=d);const x=b/u[0],C=b/u[1];if("M"===v||"="===v||"X"===v?(f+=x*l,d+=C*c):"D"===v||"N"===v?f+=x*l:"I"===v&&(d+=C*c),!(Math.max(n,m,f,d)<0||Math.min(n,m,f,d)>g)){const l=o<M.length-2;Math.abs(f-n)<=1&&Math.abs(d-m)<=1&&l?e=!0:(t.fillStyle=s[e&&x>1||C>1?v:"M"],e=!1,(0,i.$2)(t,n,f,z,d,m,L,I,h),a&&(a.fillStyle=r(p),(0,i.$2)(a,n,f,z,d,m,L,I,h)))}}}else(0,i.$2)(t,w,y,z,S,k,L,I,h)}}const v=e.clickMapCanvas?.getContext("2d");if(v){v.imageSmoothingEnabled=!1,v.clearRect(0,0,g,d);for(let e=0;e<w.length;e++){const t=w[e],a=e*b+1;v.fillStyle=r(a),(0,i.mr)({cb:e=>{e.fill()},feature:t,ctx:v,drawCurves:h,offsets:p,oobLimit:c,viewWidth:f.width,hideTiny:!0,height:d})}}}function m(e){const{clickId:t,mouseoverId:a}=e,o=(0,n.getContainingView)(e),r=o.drawCurves,s=o.middleComparativeHeight,l=o.width,f=e.mouseoverCanvas?.getContext("2d"),h=o.views.map((e=>e.offsetPx));if(!f)return;f.resetTransform(),f.scale(1,1),f.clearRect(0,0,l,s);const m=e.featMap[a||""];m&&(f.fillStyle="rgb(0,0,0,0.1)",(0,i.mr)({cb:e=>{e.fill()},feature:m,ctx:f,oobLimit:c,viewWidth:o.width,drawCurves:r,offsets:h,height:s}));const d=e.featMap[t||""];d&&(f.strokeStyle="rgb(0, 0, 0, 0.9)",(0,i.mr)({cb:e=>{e.stroke()},feature:d,ctx:f,oobLimit:c,viewWidth:o.width,drawCurves:r,offsets:h,height:s}))}},69658:(e,t,a)=>{a.d(t,{renderToSvg:()=>u});var n=a(7552),i=a(20139),o=a(36422),r=a(42489),s=a(99546),l=a(91468),c=a(49823),f=a(20529),h=a(48231);function m({width:e,height:t,shift:a}){const i=(0,h.A)();return n.createElement("rect",{width:e+2*a,height:t,fill:(0,s.stripAlpha)(i.palette.background.default)})}var d=a(30385);function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},g.apply(null,arguments)}async function u(e,t){await(0,r.when)((()=>e.initialized));const{textHeight:a=18,headerHeight:h=30,rulerHeight:u=30,fontSize:w=13,trackLabels:p="offset",Wrapper:b=({children:e})=>e,themeName:v="default"}=t,x=(0,s.getSession)(e),C=x.allThemes?.()[v],{width:M,views:y,middleComparativeHeight:k,tracks:S}=e,P=h+u,{createRootFn:T}=(0,o.getRoot)(e),$=y.map((e=>(0,f.mJ)(e.tracks,a,p)+P)),E=(0,s.sum)($)+k+100,z=await Promise.all(y.map((async e=>({view:e,data:await Promise.all(e.tracks.map((async e=>{const a=e.displays[0];return await(0,r.when)((()=>void 0===a.ready||a.ready)),{track:e,result:await a.renderSvg({...t,theme:C})}})))})))),L=await Promise.all(S.map((async e=>{const a=e.displays[0];await(0,r.when)((()=>void 0===a.ready||a.ready));const n=await(0,s.renderToAbstractCanvas)(M,k,{exportSVG:t},(e=>{(0,d.Ww)(a,e)}));if("imageData"in n)throw new Error("found a canvas in svg export, probably a bug");return"canvasRecordedData"in n?{html:await(0,s.getSerializedSvg)({...n,width:M,height:k})}:n}))),I=(0,s.max)(y.flatMap((e=>e.tracks.map((e=>(0,s.measureText)((0,l.getTrackName)(e.configuration,x),w))))),0)+40,R="left"===p?I:0,W=M+R,N=(0,c.createJBrowseTheme)(C);return(0,s.renderToStaticMarkup)(n.createElement(i.A,{theme:N},n.createElement(b,null,n.createElement("svg",{width:M,height:E,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:[0,0,W+100,E].toString()},n.createElement(m,{width:W,height:E,shift:50}),n.createElement("g",{transform:`translate(50 ${w})`},n.createElement("g",{transform:`translate(${R})`},n.createElement("text",g({x:0,fontSize:w},(0,s.getFillProps)(N.palette.text.primary)),y[0].assemblyNames.join(", ")),n.createElement(f.$m,{model:z[0].view,fontSize:w})),n.createElement(f.zh,{textHeight:a,trackLabels:p,fontSize:w,model:z[0].view,displayResults:z[0].data,offset:P,trackLabelOffset:R})),n.createElement("defs",null,n.createElement("clipPath",{id:"synclip"},n.createElement("rect",{x:0,y:0,width:M,height:k}))),n.createElement("g",{transform:`translate(${50+R} ${w+$[0]})`,clipPath:"url(#synclip)"},L.map(((e,t)=>n.createElement(s.ReactRendering,{key:t,rendering:e})))),n.createElement("g",{transform:`translate(50 ${w+$[0]+k})`},n.createElement("g",{transform:`translate(${R})`},n.createElement("text",g({x:0,fontSize:w},(0,s.getFillProps)(N.palette.text.primary)),y[1].assemblyNames.join(", ")),n.createElement(f.$m,{model:z[1].view,fontSize:w})),n.createElement(f.zh,{textHeight:a,trackLabels:p,fontSize:w,model:z[1].view,displayResults:z[1].data,offset:P,trackLabelOffset:R}))))),T)}}}]);
+//# sourceMappingURL=9658.33669a59.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9658.33669a59.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9658.33669a59.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/drawSynteny.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/svgcomponents/SVGBackground.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  assembleLocString,\n  doesIntersect2,\n  getSession,\n  isSessionModelWithWidgets,\n  Feature,\n  getContainingTrack,\n  getContainingView,\n} from '@jbrowse/core/util'\n\n// locals\nimport { getId, MAX_COLOR_RANGE } from '../drawSynteny'\nimport { LinearSyntenyDisplayModel } from '../model'\n\ninterface Pos {\n  offsetPx: number\n}\n\nexport interface ClickCoord {\n  clientX: number\n  clientY: number\n  feature: { f: Feature }\n}\n\ninterface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\nexport function drawMatchSimple({\n  feature,\n  ctx,\n  offsets,\n  cb,\n  height,\n  drawCurves,\n  oobLimit,\n  viewWidth,\n  hideTiny,\n}: {\n  feature: FeatPos\n  ctx: CanvasRenderingContext2D\n  offsets: number[]\n  oobLimit: number\n  viewWidth: number\n  cb: (ctx: CanvasRenderingContext2D) => void\n  height: number\n  drawCurves?: boolean\n  hideTiny?: boolean\n}) {\n  const { p11, p12, p21, p22 } = feature\n\n  const x11 = p11.offsetPx - offsets[0]!\n  const x12 = p12.offsetPx - offsets[0]!\n  const x21 = p21.offsetPx - offsets[1]!\n  const x22 = p22.offsetPx - offsets[1]!\n\n  const l1 = Math.abs(x12 - x11)\n  const l2 = Math.abs(x22 - x21)\n  const y1 = 0\n  const y2 = height\n  const mid = (y2 - y1) / 2\n  const minX = Math.min(x21, x22)\n  const maxX = Math.max(x21, x22)\n\n  if (!doesIntersect2(minX, maxX, -oobLimit, viewWidth + oobLimit)) {\n    return\n  }\n\n  // drawing a line if the results are thin: drawing a line results in much\n  // less pixellation than filling in a thin polygon\n  if (l1 <= 1 && l2 <= 1) {\n    // hideTiny can be used to avoid drawing mouseover for thin lines in this\n    // case\n    if (!hideTiny) {\n      ctx.beginPath()\n      ctx.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx.lineTo(x21, y2)\n      }\n      ctx.stroke()\n    }\n  } else {\n    draw(ctx, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n    cb(ctx)\n  }\n}\n\nexport function draw(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n  drawCurves?: boolean,\n) {\n  if (drawCurves) {\n    drawBezierBox(ctx, x1, x2, y1, x3, x4, y2, mid)\n  } else {\n    drawBox(ctx, x1, x2, y1, x3, x4, y2)\n  }\n}\n\nexport function drawBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n) {\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.lineTo(x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function drawBezierBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n) {\n  const len1 = Math.abs(x1 - x2)\n  const len2 = Math.abs(x1 - x2)\n\n  // heuristic to not draw hourglass inversions with bezier curves when they\n  // are thin and far apart because it results in areas that are not drawn well\n  // demo https://codesandbox.io/s/fast-glitter-q3b1or?file=/src/index.js\n  if (len1 < 5 && len2 < 5 && x2 < x1 && Math.abs(x1 - x3) > 100) {\n    const tmp = x1\n    x1 = x2\n    x2 = tmp\n  }\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.bezierCurveTo(x2, mid, x3, mid, x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.bezierCurveTo(x4, mid, x1, mid, x1, y1)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function onSynClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n) {\n  const view = getContainingView(model)\n  const track = getContainingTrack(model)\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const x = event.clientX - rect.left\n  const y = event.clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const feat = model.featPositions[id]\n  if (feat) {\n    const { f } = feat\n    model.setClickId(f.id())\n    const session = getSession(model)\n    if (isSessionModelWithWidgets(session)) {\n      session.showWidget(\n        session.addWidget('BaseFeatureWidget', 'baseFeature', {\n          view,\n          track,\n          featureData: f.toJSON(),\n        }),\n      )\n    }\n  }\n  return feat\n}\n\nexport function onSynContextClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n  setAnchorEl: (arg: ClickCoord) => void,\n) {\n  event.preventDefault()\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const { clientX, clientY } = event\n  const x = clientX - rect.left\n  const y = clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const f = model.featPositions[id]\n  if (f) {\n    model.setClickId(f.f.id())\n    setAnchorEl({ clientX, clientY, feature: f })\n  }\n}\n\nexport function getTooltip(f: Feature, cigarOp?: string, cigarOpLen?: string) {\n  // @ts-expect-error\n  const f1 = f.toJSON() as {\n    refName: string\n    start: number\n    end: number\n    strand?: number\n    assemblyName: string\n    identity?: number\n    name?: string\n    mate: {\n      start: number\n      end: number\n      refName: string\n      name: string\n    }\n  }\n  const f2 = f1.mate\n  const l1 = f1.end - f1.start\n  const l2 = f2.end - f2.start\n  const identity = f1.identity\n  const n1 = f1.name\n  const n2 = f2.name\n  return [\n    `Loc1: ${assembleLocString(f1)}`,\n    `Loc2: ${assembleLocString(f2)}`,\n    `Inverted: ${f1.strand === -1}`,\n    `Query len: ${l1.toLocaleString('en-US')}`,\n    `Target len: ${l2.toLocaleString('en-US')}`,\n    identity ? `Identity: ${identity.toPrecision(2)}` : '',\n    cigarOp ? `CIGAR operator: ${cigarOp}${cigarOpLen}` : '',\n    n1 ? `Name 1: ${n1}` : '',\n    n2 ? `Name 1: ${n2}` : '',\n  ]\n    .filter(f => !!f)\n    .join('<br/>')\n}\n","import { doesIntersect2, getContainingView } from '@jbrowse/core/util'\n// locals\nimport { LinearSyntenyViewModel } from '../LinearSyntenyView/model'\nimport { LinearSyntenyDisplayModel } from './model'\nimport { draw, drawMatchSimple } from './components/util'\n\nexport const MAX_COLOR_RANGE = 255 * 255 * 255 // max color range\n\nfunction makeColor(idx: number) {\n  const r = Math.floor(idx / (255 * 255)) % 255\n  const g = Math.floor(idx / 255) % 255\n  const b = idx % 255\n  return `rgb(${r},${g},${b})`\n}\n\nconst colorMap = {\n  I: '#ff03',\n  N: '#0a03',\n  D: '#00f3',\n  X: 'brown',\n  M: '#f003',\n  '=': '#f003',\n}\n\nconst lineLimit = 3\n\nconst oobLimit = 1600\n\nexport function getId(r: number, g: number, b: number, unitMultiplier: number) {\n  return Math.floor((r * 255 * 255 + g * 255 + b - 1) / unitMultiplier)\n}\n\nexport function drawRef(\n  model: LinearSyntenyDisplayModel,\n  ctx1: CanvasRenderingContext2D,\n  ctx3?: CanvasRenderingContext2D,\n) {\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const drawCIGAR = view.drawCIGAR\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const bpPerPxs = view.views.map(v => v.bpPerPx)\n\n  if (ctx3) {\n    ctx3.imageSmoothingEnabled = false\n  }\n\n  ctx1.beginPath()\n  const featPos = model.featPositions\n  const offsets = view.views.map(v => v.offsetPx)\n\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / featPos.length)\n\n  // this loop is optimized to draw many thin lines with a single ctx.stroke\n  // call, a separate loop below draws larger boxes\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22 } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    // drawing a line if the results are thin results in much less pixellation\n    // than filling in a thin polygon\n    if (\n      l1 <= lineLimit &&\n      l2 <= lineLimit &&\n      x21 < width + oobLimit &&\n      x21 > -oobLimit\n    ) {\n      ctx1.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx1.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx1.lineTo(x21, y2)\n      }\n    }\n  }\n  ctx1.stroke()\n\n  // this loop only draws small lines as a polyline, the polyline calls\n  // ctx.stroke once is much more efficient than calling stroke() many times\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22, f, cigar } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const minX = Math.min(x21, x22)\n    const maxX = Math.max(x21, x22)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    if (\n      !(l1 <= lineLimit && l2 <= lineLimit) &&\n      doesIntersect2(minX, maxX, -oobLimit, view.width + oobLimit)\n    ) {\n      const s1 = f.get('strand')\n      const k1 = s1 === -1 ? x12 : x11\n      const k2 = s1 === -1 ? x11 : x12\n\n      // rev1/rev2 flip the direction of the CIGAR drawing in horizontally flipped\n      // modes. somewhat heuristically determined, but tested for\n      const rev1 = k1 < k2 ? 1 : -1\n      const rev2 = (x21 < x22 ? 1 : -1) * s1\n\n      // cx1/cx2 are the current x positions on top and bottom rows\n      let cx1 = k1\n      let cx2 = s1 === -1 ? x22 : x21\n      if (cigar.length && drawCIGAR) {\n        // continuingFlag skips drawing commands on very small CIGAR features\n        let continuingFlag = false\n\n        // px1/px2 are the previous x positions on the top and bottom rows\n        let px1 = 0\n        let px2 = 0\n        const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length)\n        for (let j = 0; j < cigar.length; j += 2) {\n          const idx = j * unitMultiplier2 + 1\n\n          const len = +cigar[j]!\n          const op = cigar[j + 1] as keyof typeof colorMap\n\n          if (!continuingFlag) {\n            px1 = cx1\n            px2 = cx2\n          }\n\n          const d1 = len / bpPerPxs[0]!\n          const d2 = len / bpPerPxs[1]!\n\n          if (op === 'M' || op === '=' || op === 'X') {\n            cx1 += d1 * rev1\n            cx2 += d2 * rev2\n          } else if (op === 'D' || op === 'N') {\n            cx1 += d1 * rev1\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          else if (op === 'I') {\n            cx2 += d2 * rev2\n          }\n\n          // check that we are even drawing in view here, e.g. that all\n          // points are not all less than 0 or greater than width\n          if (\n            !(\n              Math.max(px1, px2, cx1, cx2) < 0 ||\n              Math.min(px1, px2, cx1, cx2) > width\n            )\n          ) {\n            // if it is a small feature and not the last element of the\n            // CIGAR (which could skip rendering it entire if we did turn\n            // it on), then turn on continuing flag\n            const isNotLast = j < cigar.length - 2\n            if (\n              Math.abs(cx1 - px1) <= 1 &&\n              Math.abs(cx2 - px2) <= 1 &&\n              isNotLast\n            ) {\n              continuingFlag = true\n            } else {\n              // allow rendering the dominant color when using continuing flag\n              // if the last element of continuing was a large feature, else\n              // just use match\n              ctx1.fillStyle =\n                colorMap[(continuingFlag && d1 > 1) || d2 > 1 ? op : 'M']\n              continuingFlag = false\n\n              draw(ctx1, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              if (ctx3) {\n                ctx3.fillStyle = makeColor(idx)\n                draw(ctx3, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              }\n            }\n          }\n        }\n      } else {\n        draw(ctx1, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n      }\n    }\n  }\n\n  // draw click map\n  const ctx2 = model.clickMapCanvas?.getContext('2d')\n  if (!ctx2) {\n    return\n  }\n  ctx2.imageSmoothingEnabled = false\n  ctx2.clearRect(0, 0, width, height)\n  for (let i = 0; i < featPos.length; i++) {\n    const feature = featPos[i]!\n    const idx = i * unitMultiplier + 1\n    ctx2.fillStyle = makeColor(idx)\n\n    // too many click map false positives with colored stroked lines\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature,\n      ctx: ctx2,\n      drawCurves,\n      offsets,\n      oobLimit,\n      viewWidth: view.width,\n      hideTiny: true,\n      height,\n    })\n  }\n  return undefined\n}\n\nexport function drawMouseoverSynteny(model: LinearSyntenyDisplayModel) {\n  const { clickId, mouseoverId } = model\n  const highResolutionScaling = 1\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const ctx = model.mouseoverCanvas?.getContext('2d')\n  const offsets = view.views.map(v => v.offsetPx)\n\n  if (!ctx) {\n    return\n  }\n  ctx.resetTransform()\n  ctx.scale(highResolutionScaling, highResolutionScaling)\n  ctx.clearRect(0, 0, width, height)\n  const feature1 = model.featMap[mouseoverId || '']\n  if (feature1) {\n    ctx.fillStyle = 'rgb(0,0,0,0.1)'\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature: feature1,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n  const feature2 = model.featMap[clickId || '']\n  if (feature2) {\n    ctx.strokeStyle = 'rgb(0, 0, 0, 0.9)'\n\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.stroke()\n      },\n      feature: feature2,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n}\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n  shift,\n}: {\n  width: number\n  height: number\n  shift: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      width={width + shift * 2}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\nimport { ThemeProvider } from '@mui/material'\nimport { getRoot } from 'mobx-state-tree'\nimport { when } from 'mobx'\nimport {\n  getSession,\n  getSerializedSvg,\n  max,\n  measureText,\n  ReactRendering,\n  renderToAbstractCanvas,\n  renderToStaticMarkup,\n  sum,\n  getFillProps,\n} from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport {\n  SVGTracks,\n  SVGRuler,\n  totalHeight,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport SVGBackground from './SVGBackground'\nimport { ExportSvgOptions, LinearSyntenyViewModel } from '../model'\nimport { drawRef } from '../../LinearSyntenyDisplay/drawSynteny'\n\ntype LSV = LinearSyntenyViewModel\n\n// render LGV to SVG\nexport async function renderToSvg(model: LSV, opts: ExportSvgOptions) {\n  await when(() => model.initialized)\n  const {\n    textHeight = 18,\n    headerHeight = 30,\n    rulerHeight = 30,\n    fontSize = 13,\n    trackLabels = 'offset',\n    Wrapper = ({ children }) => children,\n    themeName = 'default',\n  } = opts\n  const session = getSession(model)\n  const themeVar = session.allThemes?.()[themeName]\n  const { width, views, middleComparativeHeight: synH, tracks } = model\n  const shift = 50\n  const offset = headerHeight + rulerHeight\n\n  const { createRootFn } = getRoot<any>(model)\n  const heights = views.map(\n    v => totalHeight(v.tracks, textHeight, trackLabels) + offset,\n  )\n  const totalHeightSvg = sum(heights) + synH + 100\n  const displayResults = await Promise.all(\n    views.map(\n      async view =>\n        ({\n          view,\n          data: await Promise.all(\n            view.tracks.map(async track => {\n              const d = track.displays[0]\n              await when(() => (d.ready !== undefined ? d.ready : true))\n              return {\n                track,\n                result: await d.renderSvg({ ...opts, theme: themeVar }),\n              }\n            }),\n          ),\n        }) as const,\n    ),\n  )\n\n  const renderings = await Promise.all(\n    tracks.map(async track => {\n      const d = track.displays[0]\n      await when(() => (d.ready !== undefined ? d.ready : true))\n      const r = await renderToAbstractCanvas(\n        width,\n        synH,\n        { exportSVG: opts },\n        ctx => {\n          drawRef(d, ctx)\n          return undefined\n        },\n      )\n\n      if ('imageData' in r) {\n        throw new Error('found a canvas in svg export, probably a bug')\n      }\n      if ('canvasRecordedData' in r) {\n        return {\n          html: await getSerializedSvg({\n            ...r,\n            width,\n            height: synH,\n          }),\n        }\n      }\n      return r\n    }),\n  )\n\n  const trackLabelMaxLen =\n    max(\n      views.flatMap(view =>\n        view.tracks.map(t =>\n          measureText(getTrackName(t.configuration, session), fontSize),\n        ),\n      ),\n      0,\n    ) + 40\n  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0\n  const w = width + trackLabelOffset\n  const theme = createJBrowseTheme(themeVar)\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={theme}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={totalHeightSvg}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, w + shift * 2, totalHeightSvg].toString()}\n        >\n          <SVGBackground width={w} height={totalHeightSvg} shift={shift} />\n          <g transform={`translate(${shift} ${fontSize})`}>\n            <g transform={`translate(${trackLabelOffset})`}>\n              <text\n                x={0}\n                fontSize={fontSize}\n                {...getFillProps(theme.palette.text.primary)}\n              >\n                {views[0]!.assemblyNames.join(', ')}\n              </text>\n\n              <SVGRuler model={displayResults[0]!.view} fontSize={fontSize} />\n            </g>\n            <SVGTracks\n              textHeight={textHeight}\n              trackLabels={trackLabels}\n              fontSize={fontSize}\n              model={displayResults[0]!.view}\n              displayResults={displayResults[0]!.data}\n              offset={offset}\n              trackLabelOffset={trackLabelOffset}\n            />\n          </g>\n\n          <defs>\n            <clipPath id={'synclip'}>\n              <rect x={0} y={0} width={width} height={synH} />\n            </clipPath>\n          </defs>\n          <g\n            transform={`translate(${shift + trackLabelOffset} ${\n              fontSize + heights[0]!\n            })`}\n            clipPath={'url(#synclip)'}\n          >\n            {renderings.map((r, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <ReactRendering key={i} rendering={r} />\n            ))}\n          </g>\n          <g transform={`translate(${shift} ${fontSize + heights[0]! + synH})`}>\n            <g transform={`translate(${trackLabelOffset})`}>\n              <text\n                x={0}\n                fontSize={fontSize}\n                {...getFillProps(theme.palette.text.primary)}\n              >\n                {views[1]!.assemblyNames.join(', ')}\n              </text>\n              <SVGRuler model={displayResults[1]!.view} fontSize={fontSize} />\n            </g>\n            <SVGTracks\n              textHeight={textHeight}\n              trackLabels={trackLabels}\n              fontSize={fontSize}\n              model={displayResults[1]!.view}\n              displayResults={displayResults[1]!.data}\n              offset={offset}\n              trackLabelOffset={trackLabelOffset}\n            />\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n"],"names":["drawMatchSimple","feature","ctx","offsets","cb","height","drawCurves","oobLimit","viewWidth","hideTiny","p11","p12","p21","p22","x11","offsetPx","x12","x21","x22","l1","Math","abs","l2","y2","mid","minX","min","maxX","max","doesIntersect2","beginPath","moveTo","bezierCurveTo","lineTo","stroke","draw","x1","x2","y1","x3","x4","len1","len2","tmp","closePath","fill","drawBezierBox","drawBox","onSynClick","event","model","view","getContainingView","track","getContainingTrack","ref1","clickMapCanvas","ref2","cigarClickMapCanvas","rect","getBoundingClientRect","ctx1","getContext","ctx2","x","clientX","left","y","clientY","top","r1","g1","b1","getImageData","data","unitMultiplier","floor","MAX_COLOR_RANGE","numFeats","id","getId","feat","featPositions","f","setClickId","session","getSession","isSessionModelWithWidgets","showWidget","addWidget","featureData","toJSON","onSynContextClick","setAnchorEl","preventDefault","getTooltip","cigarOp","cigarOpLen","f1","f2","mate","end","start","identity","n1","name","n2","assembleLocString","strand","toLocaleString","toPrecision","filter","join","makeColor","idx","colorMap","I","N","D","X","M","lineLimit","r","g","b","drawRef","ctx3","drawCIGAR","middleComparativeHeight","width","bpPerPxs","views","map","v","bpPerPx","imageSmoothingEnabled","featPos","length","fillStyle","strokeStyle","cigar","s1","get","k1","rev1","rev2","cx1","cx2","continuingFlag","px1","px2","unitMultiplier2","j","len","op","d1","d2","isNotLast","clearRect","i","drawMouseoverSynteny","clickId","mouseoverId","mouseoverCanvas","resetTransform","scale","feature1","featMap","feature2","SVGBackground","shift","theme","useTheme","React","stripAlpha","palette","background","default","async","renderToSvg","opts","when","initialized","textHeight","headerHeight","rulerHeight","fontSize","trackLabels","Wrapper","children","themeName","themeVar","allThemes","synH","tracks","offset","createRootFn","getRoot","heights","totalHeight","totalHeightSvg","sum","displayResults","Promise","all","d","displays","undefined","ready","result","renderSvg","renderings","renderToAbstractCanvas","exportSVG","Error","html","getSerializedSvg","trackLabelMaxLen","flatMap","t","measureText","getTrackName","configuration","trackLabelOffset","w","createJBrowseTheme","renderToStaticMarkup","ThemeProvider","xmlns","xmlnsXlink","viewBox","toString","transform","_extends","getFillProps","text","primary","assemblyNames","SVGRuler","SVGTracks","clipPath","ReactRendering","key","rendering"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9675.b4f16970.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9675],{79675:(e,n,s)=>{s.r(n),s.d(n,{default:()=>u});var o=s(7552),t=s(68446),a=s(29499),l=s(36715),r=s(58507),i=s(5401),c=s(49823);const u=(0,t.observer)((function({rootModel:e,onClose:n}){const{jbrowse:s,session:t}=e;return o.createElement(c.Dialog,{open:!0,onClose:n,title:"Set default session"},o.createElement(a.A,null,o.createElement(l.A,null,'Select "Set current session as default" to make your current session saved to the config file. You can also hit "Clear default session", which would remove the default session from the config.')),o.createElement(r.A,null,o.createElement(i.A,{color:"secondary",variant:"contained",onClick:()=>{n()}},"Cancel"),o.createElement(i.A,{variant:"contained",onClick:()=>{s.setDefaultSessionConf({name:"New session"}),n()}},"Clear default session"),o.createElement(i.A,{color:"primary",variant:"contained",onClick:()=>{s.setDefaultSessionConf(t),n()}},"Set current session as default session")))}))}}]);
+//# sourceMappingURL=9675.b4f16970.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9675.b4f16970.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9675.b4f16970.chunk.js","mappings":"sOAKA,MA2DA,GA3D0BA,EAAAA,EAAAA,WAAS,UAAU,UAC3CC,EAAS,QACTC,IAUA,MAAM,QAAEC,EAAO,QAAEC,GAAYH,EAE7B,OACEI,EAAAA,cAACC,EAAAA,OAAM,CAACC,MAAI,EAACL,QAASA,EAASM,MAAM,uBACnCH,EAAAA,cAACI,EAAAA,EAAa,KACZJ,EAAAA,cAACK,EAAAA,EAAU,KAAC,qMAMdL,EAAAA,cAACM,EAAAA,EAAa,KACZN,EAAAA,cAACO,EAAAA,EAAM,CACLC,MAAM,YACNC,QAAQ,YACRC,QAASA,KACPb,GAAS,GAEZ,UAGDG,EAAAA,cAACO,EAAAA,EAAM,CACLE,QAAQ,YACRC,QAASA,KACPZ,EAAQa,sBAAsB,CAC5BC,KAAM,gBAERf,GAAS,GAEZ,yBAGDG,EAAAA,cAACO,EAAAA,EAAM,CACLC,MAAM,UACNC,QAAQ,YACRC,QAASA,KACPZ,EAAQa,sBAAsBZ,GAC9BF,GAAS,GAEZ,2CAMT,G","sources":["components/SetDefaultSession.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport { DialogContent, DialogActions, Button, Typography } from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\n\nconst SetDefaultSession = observer(function ({\n  rootModel,\n  onClose,\n}: {\n  rootModel: {\n    jbrowse: {\n      setDefaultSessionConf: (arg: unknown) => void\n    }\n    session?: unknown\n  }\n  onClose: () => void\n}) {\n  const { jbrowse, session } = rootModel\n\n  return (\n    <Dialog open onClose={onClose} title=\"Set default session\">\n      <DialogContent>\n        <Typography>\n          Select &quot;Set current session as default&quot; to make your current\n          session saved to the config file. You can also hit &quot;Clear default\n          session&quot;, which would remove the default session from the config.\n        </Typography>\n      </DialogContent>\n      <DialogActions>\n        <Button\n          color=\"secondary\"\n          variant=\"contained\"\n          onClick={() => {\n            onClose()\n          }}\n        >\n          Cancel\n        </Button>\n        <Button\n          variant=\"contained\"\n          onClick={() => {\n            jbrowse.setDefaultSessionConf({\n              name: 'New session',\n            })\n            onClose()\n          }}\n        >\n          Clear default session\n        </Button>\n        <Button\n          color=\"primary\"\n          variant=\"contained\"\n          onClick={() => {\n            jbrowse.setDefaultSessionConf(session)\n            onClose()\n          }}\n        >\n          Set current session as default session\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n})\n\nexport default SetDefaultSession\n"],"names":["observer","rootModel","onClose","jbrowse","session","React","Dialog","open","title","DialogContent","Typography","DialogActions","Button","color","variant","onClick","setDefaultSessionConf","name"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9690.0cd8a2c8.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9690],{49690:(e,s,l)=>{l.r(s),l.d(s,{default:()=>t.A,getTextFieldUtilityClass:()=>a._,textFieldClasses:()=>a.A});var t=l(1343),a=l(96555)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/972.c0d17685.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[972],{4365:e=>{function t(e,n,r,o){this.message=e,this.expected=n,this.found=r,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(t,Error),t.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t,n="";for(t=0;t<e.parts.length;t++)n+=e.parts[t]instanceof Array?i(e.parts[t][0])+"-"+i(e.parts[t][1]):i(e.parts[t]);return"["+(e.inverted?"^":"")+n+"]"},any:function(e){return"any character"},end:function(e){return"end of input"},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function o(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+r(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+r(e)}))}function i(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+r(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+r(e)}))}return"Expected "+function(e){var t,r,o,i=new Array(e.length);for(t=0;t<e.length;t++)i[t]=(o=e[t],n[o.type](o));if(i.sort(),i.length>0){for(t=1,r=1;t<i.length;t++)i[t-1]!==i[t]&&(i[r]=i[t],r++);i.length=r}switch(i.length){case 1:return i[0];case 2:return i[0]+" or "+i[1];default:return i.slice(0,-1).join(", ")+", or "+i[i.length-1]}}(e)+" but "+function(e){return e?'"'+o(e)+'"':"end of input"}(t)+" found."},e.exports={SyntaxError:t,parse:function(e,n){n=void 0!==n?n:{};var r,o,i,a,s={},c={declaration:$e},u=$e,h="(",m=Oe("(",!1),l=")",f=Oe(")",!1),d=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},p="simple",g=Oe("simple",!1),b="object",S=Oe("object",!1),y="table",k=Oe("table",!1),E="auto",C=Oe("auto",!1),A="primary",w=Oe("primary",!1),v="index",q=Oe("index",!1),x="unique",N=Oe("unique",!1),F=function(e,t){return t},z=function(e,t){return e.name&&t.unshift(e),t},R="#",B=Oe("#",!1),D=";",T=Oe(";",!1),I=function(e,t,n){return{type:e,name:t,comment:n}},G="[",P=Oe("[",!1),M="]",_=Oe("]",!1),j=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},U=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},O=",",L=Oe(",",!1),Z=function(e,t){return t.unshift(e),t},V="int",W=Oe("int",!1),Y="uint",$=Oe("uint",!1),H="short",J=Oe("short",!1),K="ushort",Q=Oe("ushort",!1),X="byte",ee=Oe("byte",!1),te="ubyte",ne=Oe("ubyte",!1),re="float",oe=Oe("float",!1),ie="char",ae=Oe("char",!1),se="string",ce=Oe("string",!1),ue="lstring",he=Oe("lstring",!1),me="enum",le=Oe("enum",!1),fe="double",de=Oe("double",!1),pe="bigint",ge=Oe("bigint",!1),be="set",Se=Oe("set",!1),ye=function(e,t){return e+" "+t},ke=/^[a-zA-Z_]/,Ee=Le([["a","z"],["A","Z"],"_"],!1,!1),Ce=/^[a-zA-Z0-9_]/,Ae=Le([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),we=function(e){return Ue()},ve=(Oe('"',!1),Le(['"'],!0,!1),/^[^\n\r]/),qe=Le(["\n","\r"],!0,!1),xe=function(e){return e.join("").replace(/^"/,"").replace(/"$/,"")},Ne=Ze("integer"),Fe=/^[0-9]/,ze=Le([["0","9"]],!1,!1),Re=function(){return parseInt(Ue(),10)},Be=Ze("whitespace"),De=/^[ \t\n\r]/,Te=Le([" ","\t","\n","\r"],!1,!1),Ie=0,Ge=0,Pe=[{line:1,column:1}],Me=0,_e=[],je=0;if("startRule"in n){if(!(n.startRule in c))throw new Error("Can't start parsing from rule \""+n.startRule+'".');u=c[n.startRule]}function Ue(){return e.substring(Ge,Ie)}function Oe(e,t){return{type:"literal",text:e,ignoreCase:t}}function Le(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function Ze(e){return{type:"other",description:e}}function Ve(t){var n,r=Pe[t];if(r)return r;for(n=t-1;!Pe[n];)n--;for(r={line:(r=Pe[n]).line,column:r.column};n<t;)10===e.charCodeAt(n)?(r.line++,r.column=1):r.column++,n++;return Pe[t]=r,r}function We(e,t){var n=Ve(e),r=Ve(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function Ye(e){Ie<Me||(Ie>Me&&(Me=Ie,_e=[]),_e.push(e))}function $e(){var t,n,r,o,i,a,c;return t=Ie,rt()!==s&&(n=He())!==s&&rt()!==s&&(r=Je())!==s&&rt()!==s&&(o=Qe())!==s&&rt()!==s?(40===e.charCodeAt(Ie)?(i=h,Ie++):(i=s,0===je&&Ye(m)),i!==s&&rt()!==s?(a=function(){var e,t,n,r,o;if(e=Ie,(t=Xe())!==s)if(rt()!==s){for(n=[],r=Ie,rt()!==s&&(o=Xe())!==s?(Ge=r,r=F(t,o)):(Ie=r,r=s);r!==s;)n.push(r),r=Ie,rt()!==s&&(o=Xe())!==s?(Ge=r,r=F(t,o)):(Ie=r,r=s);n!==s&&(r=rt())!==s?(Ge=e,e=t=z(t,n)):(Ie=e,e=s)}else Ie=e,e=s;else Ie=e,e=s;return e}(),a!==s&&rt()!==s?(41===e.charCodeAt(Ie)?(c=l,Ie++):(c=s,0===je&&Ye(f)),c!==s&&rt()!==s?(Ge=t,t=d(n,r,o,a)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s),t}function He(){var t;return e.substr(Ie,6)===p?(t=p,Ie+=6):(t=s,0===je&&Ye(g)),t===s&&(e.substr(Ie,6)===b?(t=b,Ie+=6):(t=s,0===je&&Ye(S)),t===s&&(e.substr(Ie,5)===y?(t=y,Ie+=5):(t=s,0===je&&Ye(k)))),t}function Je(){var t,n,r,o;return(t=tt())===s&&(t=Ie,(n=tt())!==s&&(r=Ke())!==s?t=n=[n,r]:(Ie=t,t=s),t===s&&(t=Ie,(n=tt())!==s?(e.substr(Ie,4)===E?(r=E,Ie+=4):(r=s,0===je&&Ye(C)),r!==s?t=n=[n,r]:(Ie=t,t=s)):(Ie=t,t=s),t===s&&(t=Ie,(n=tt())!==s&&(r=Ke())!==s?(e.substr(Ie,4)===E?(o=E,Ie+=4):(o=s,0===je&&Ye(C)),o!==s?t=n=[n,r,o]:(Ie=t,t=s)):(Ie=t,t=s)))),t}function Ke(){var t;return e.substr(Ie,7)===A?(t=A,Ie+=7):(t=s,0===je&&Ye(w)),t===s&&(e.substr(Ie,5)===v?(t=v,Ie+=5):(t=s,0===je&&Ye(q)),t===s&&(e.substr(Ie,6)===x?(t=x,Ie+=6):(t=s,0===je&&Ye(N)))),t}function Qe(){var e;return(e=nt())===s&&(e=rt()),e}function Xe(){var t,n,r,o,i,a,c,u;return t=Ie,(n=et())!==s&&rt()!==s&&(r=tt())!==s&&rt()!==s?(59===e.charCodeAt(Ie)?(o=D,Ie++):(o=s,0===je&&Ye(T)),o!==s&&rt()!==s&&(i=Qe())!==s?(Ge=t,t=n=I(n,r,i)):(Ie=t,t=s)):(Ie=t,t=s),t===s&&(t=Ie,(n=et())!==s&&rt()!==s?(91===e.charCodeAt(Ie)?(r=G,Ie++):(r=s,0===je&&Ye(P)),r!==s&&rt()!==s?(o=function(){var t;return t=function(){var t,n,r;if(je++,t=Ie,rt()!==s){if(n=[],Fe.test(e.charAt(Ie))?(r=e.charAt(Ie),Ie++):(r=s,0===je&&Ye(ze)),r!==s)for(;r!==s;)n.push(r),Fe.test(e.charAt(Ie))?(r=e.charAt(Ie),Ie++):(r=s,0===je&&Ye(ze));else n=s;n!==s?(Ge=t,t=Re()):(Ie=t,t=s)}else Ie=t,t=s;return je--,t===s&&(0===je&&Ye(Ne)),t}(),t===s&&(t=tt()),t}(),o!==s&&rt()!==s?(93===e.charCodeAt(Ie)?(i=M,Ie++):(i=s,0===je&&Ye(_)),i!==s&&rt()!==s&&(a=tt())!==s&&rt()!==s?(59===e.charCodeAt(Ie)?(c=D,Ie++):(c=s,0===je&&Ye(T)),c!==s&&rt()!==s&&(u=Qe())!==s?(Ge=t,t=n=j(n,o,a,u)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s),t===s&&(t=Ie,(n=et())!==s&&rt()!==s?(40===e.charCodeAt(Ie)?(r=h,Ie++):(r=s,0===je&&Ye(m)),r!==s&&rt()!==s?(o=function(){var t,n,r,o,i,a;if(t=Ie,(n=tt())!==s){for(r=[],o=Ie,44===e.charCodeAt(Ie)?(i=O,Ie++):(i=s,0===je&&Ye(L)),i!==s&&rt()!==s&&(a=tt())!==s?(Ge=o,o=i=F(n,a)):(Ie=o,o=s);o!==s;)r.push(o),o=Ie,44===e.charCodeAt(Ie)?(i=O,Ie++):(i=s,0===je&&Ye(L)),i!==s&&rt()!==s&&(a=tt())!==s?(Ge=o,o=i=F(n,a)):(Ie=o,o=s);r!==s?(Ge=t,t=n=Z(n,r)):(Ie=t,t=s)}else Ie=t,t=s;return t}(),o!==s&&rt()!==s?(41===e.charCodeAt(Ie)?(i=l,Ie++):(i=s,0===je&&Ye(f)),i!==s&&rt()!==s&&(a=tt())!==s&&rt()!==s?(59===e.charCodeAt(Ie)?(c=D,Ie++):(c=s,0===je&&Ye(T)),c!==s&&rt()!==s&&(u=Qe())!==s?(Ge=t,t=n=U(n,o,a,u)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s)):(Ie=t,t=s),t===s&&(t=function(){var t,n,r,o,i;return t=Ie,(n=rt())!==s?(r=function(){var t;return 35===e.charCodeAt(Ie)?(t=R,Ie++):(t=s,0===je&&Ye(B)),t}(),r!==s&&(o=nt())!==s&&(i=rt())!==s?t=n=[n,r,o,i]:(Ie=t,t=s)):(Ie=t,t=s),t}()))),t}function et(){var t,n,r;return e.substr(Ie,3)===V?(t=V,Ie+=3):(t=s,0===je&&Ye(W)),t===s&&(e.substr(Ie,4)===Y?(t=Y,Ie+=4):(t=s,0===je&&Ye($)),t===s&&(e.substr(Ie,5)===H?(t=H,Ie+=5):(t=s,0===je&&Ye(J)),t===s&&(e.substr(Ie,6)===K?(t=K,Ie+=6):(t=s,0===je&&Ye(Q)),t===s&&(e.substr(Ie,4)===X?(t=X,Ie+=4):(t=s,0===je&&Ye(ee)),t===s&&(e.substr(Ie,5)===te?(t=te,Ie+=5):(t=s,0===je&&Ye(ne)),t===s&&(e.substr(Ie,5)===re?(t=re,Ie+=5):(t=s,0===je&&Ye(oe)),t===s&&(e.substr(Ie,4)===ie?(t=ie,Ie+=4):(t=s,0===je&&Ye(ae)),t===s&&(e.substr(Ie,6)===se?(t=se,Ie+=6):(t=s,0===je&&Ye(ce)),t===s&&(e.substr(Ie,7)===ue?(t=ue,Ie+=7):(t=s,0===je&&Ye(he)),t===s&&(e.substr(Ie,4)===me?(t=me,Ie+=4):(t=s,0===je&&Ye(le)),t===s&&(e.substr(Ie,6)===fe?(t=fe,Ie+=6):(t=s,0===je&&Ye(de)),t===s&&(e.substr(Ie,6)===pe?(t=pe,Ie+=6):(t=s,0===je&&Ye(ge)),t===s&&(e.substr(Ie,3)===be?(t=be,Ie+=3):(t=s,0===je&&Ye(Se)),t===s&&(t=Ie,(n=He())!==s&&rt()!==s&&(r=Je())!==s?(Ge=t,t=n=ye(n,r)):(Ie=t,t=s))))))))))))))),t}function tt(){var t,n,r,o,i;if(t=Ie,n=Ie,ke.test(e.charAt(Ie))?(r=e.charAt(Ie),Ie++):(r=s,0===je&&Ye(Ee)),r!==s){for(o=[],Ce.test(e.charAt(Ie))?(i=e.charAt(Ie),Ie++):(i=s,0===je&&Ye(Ae));i!==s;)o.push(i),Ce.test(e.charAt(Ie))?(i=e.charAt(Ie),Ie++):(i=s,0===je&&Ye(Ae));o!==s?n=r=[r,o]:(Ie=n,n=s)}else Ie=n,n=s;return n!==s&&(Ge=t,n=we(n)),n}function nt(){var t,n,r;for(t=Ie,n=[],ve.test(e.charAt(Ie))?(r=e.charAt(Ie),Ie++):(r=s,0===je&&Ye(qe));r!==s;)n.push(r),ve.test(e.charAt(Ie))?(r=e.charAt(Ie),Ie++):(r=s,0===je&&Ye(qe));return n!==s&&(Ge=t,n=xe(n)),n}function rt(){var t,n;for(je++,t=[],De.test(e.charAt(Ie))?(n=e.charAt(Ie),Ie++):(n=s,0===je&&Ye(Te));n!==s;)t.push(n),De.test(e.charAt(Ie))?(n=e.charAt(Ie),Ie++):(n=s,0===je&&Ye(Te));return je--,t===s&&(n=s,0===je&&Ye(Be)),t}if((r=u())!==s&&Ie===e.length)return r;throw r!==s&&Ie<e.length&&Ye({type:"end"}),o=_e,i=Me<e.length?e.charAt(Me):null,a=Me<e.length?We(Me,Me+1):We(Me,Me),new t(t.buildMessage(o,i),o,i,a)}}},60972:(e,t,n)=>{n.d(t,{A:()=>y});var r={};n.r(r),n.d(r,{bigChain:()=>a,bigGenePred:()=>s,bigInteract:()=>c,bigLink:()=>u,bigMaf:()=>h,bigNarrowPeak:()=>m,bigPsl:()=>l,defaultBedSchema:()=>f,mafFrames:()=>d,mafSummary:()=>p});var o=n(4365),i=n.n(o);const a='table bigChain\n"bigChain pairwise alignment"\n    (\n    string chrom;       "Reference sequence chromosome or scaffold"\n    uint   chromStart;  "Start position in chromosome"\n    uint   chromEnd;    "End position in chromosome"\n    string name;        "Name or ID of item, ideally both human readable and unique"\n    uint score;         "Score (0-1000)"\n    char[1] strand;     "+ or - for strand"\n    uint tSize;         "size of target sequence"\n    string qName;       "name of query sequence"\n    uint qSize;         "size of query sequence"\n    uint qStart;        "start of alignment on query sequence"\n    uint qEnd;          "end of alignment on query sequence"\n    uint chainScore;    "score from chain"\n    )',s='table bigGenePred\n"bigGenePred gene models"\n   (\n   string chrom;       "Reference sequence chromosome or scaffold"\n   uint   chromStart;  "Start position in chromosome"\n   uint   chromEnd;    "End position in chromosome"\n   string name;        "Name or ID of item, ideally both human readable and unique"\n   uint score;         "Score (0-1000)"\n   char[1] strand;     "+ or - for strand"\n   uint thickStart;    "Start of where display should be thick (start codon)"\n   uint thickEnd;      "End of where display should be thick (stop codon)"\n   uint reserved;       "RGB value (use R,G,B string in input file)"\n   int blockCount;     "Number of blocks"\n   int[blockCount] blockSizes; "Comma separated list of block sizes"\n   int[blockCount] chromStarts; "Start positions relative to chromStart"\n   string name2;       "Alternative/human readable name"\n   string cdsStartStat; "Status of CDS start annotation (none, unknown, incomplete, or complete)"\n   string cdsEndStat;   "Status of CDS end annotation (none, unknown, incomplete, or complete)"\n   int[blockCount] exonFrames; "Exon frame {0,1,2}, or -1 if no frame for exon"\n   string type;        "Transcript type"\n   string geneName;    "Primary identifier for gene"\n   string geneName2;   "Alternative/human readable gene name"\n   string geneType;    "Gene type"\n   )',c='table interact\n"interaction between two regions"\n    (\n    string chrom;        "Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records"\n    uint chromStart;     "Start position of lower region. For interchromosomal, set to chromStart of this region"\n    uint chromEnd;       "End position of upper region. For interchromosomal, set to chromEnd of this region"\n    string name;         "Name of item, for display.  Usually \'sourceName/targetName/exp\' or empty"\n    uint score;          "Score (0-1000)"\n    double value;        "Strength of interaction or other data value. Typically basis for score"\n    string exp;          "Experiment name (metadata for filtering). Use . if not applicable"\n    string color;        "Item color.  Specified as r,g,b or hexadecimal #RRGGBB or html color name, as in //www.w3.org/TR/css3-color/#html4. Use 0 and spectrum setting to shade by score"\n    string sourceChrom;  "Chromosome of source region (directional) or lower region. For non-directional interchromosomal, chrom of this region."\n    uint sourceStart;    "Start position in chromosome of source/lower/this region"\n    uint sourceEnd;      "End position in chromosome of source/lower/this region"\n    string sourceName;   "Identifier of source/lower/this region"\n    string sourceStrand; "Orientation of source/lower/this region: + or -.  Use . if not applicable"\n    string targetChrom;  "Chromosome of target region (directional) or upper region. For non-directional interchromosomal, chrom of other region"\n    uint targetStart;    "Start position in chromosome of target/upper/this region"\n    uint targetEnd;      "End position in chromosome of target/upper/this region"\n    string targetName;   "Identifier of target/upper/this region"\n    string targetStrand; "Orientation of target/upper/this region: + or -.  Use . if not applicable"\n\n    )',u='table bigLink\n"bigLink pairwise alignment"\n    (\n    string chrom;       "Reference sequence chromosome or scaffold"\n    uint   chromStart;  "Start position in chromosome"\n    uint   chromEnd;    "End position in chromosome"\n    string name;        "Name or ID of item, ideally both human readable and unique"\n    uint qStart;        "start of alignment on query sequence"\n    )',h='table bedMaf\n"Bed3 with MAF block"\n    (\n    string chrom;      "Reference sequence chromosome or scaffold"\n    uint   chromStart; "Start position in chromosome"\n    uint   chromEnd;   "End position in chromosome"\n    lstring mafBlock;   "MAF block"\n    )',m='table bigNarrowPeak\n"BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data."\n(\n    string chrom;        "Reference sequence chromosome or scaffold"\n    uint   chromStart;   "Start position in chromosome"\n    uint   chromEnd;     "End position in chromosome"\n    string name;\t "Name given to a region (preferably unique). Use . if no name is assigned"\n    uint   score;        "Indicates how dark the peak will be displayed in the browser (0-1000) "\n    char[1]  strand;     "+ or - or . for unknown"\n    float  signalValue;  "Measurement of average enrichment for the region"\n    float  pValue;       "Statistical significance of signal value (-log10). Set to -1 if not used."\n    float  qValue;       "Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used."\n    int   peak;         "Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called."\n)',l='table bigPsl\n"bigPsl pairwise alignment"\n    (\n    string chrom;       "Reference sequence chromosome or scaffold"\n    uint   chromStart;  "Start position in chromosome"\n    uint   chromEnd;    "End position in chromosome"\n    string name;        "Name or ID of item, ideally both human readable and unique"\n    uint score;         "Score (0-1000)"\n    char[1] strand;     "+ or - indicates whether the query aligns to the + or - strand on the reference"\n    uint thickStart;    "Start of where display should be thick (start codon)"\n    uint thickEnd;      "End of where display should be thick (stop codon)"\n    uint reserved;       "RGB value (use R,G,B string in input file)"\n    int blockCount;     "Number of blocks"\n    int[blockCount] blockSizes; "Comma separated list of block sizes"\n    int[blockCount] chromStarts; "Start positions relative to chromStart"\n\n    uint    oChromStart;"Start position in other chromosome"\n    uint    oChromEnd;  "End position in other chromosome"\n    char[1] oStrand;    "+ or -, - means that psl was reversed into BED-compatible coordinates"\n    uint    oChromSize; "Size of other chromosome."\n    int[blockCount] oChromStarts; "Start positions relative to oChromStart or from oChromStart+oChromSize depending on strand"\n\n    lstring  oSequence;  "Sequence on other chrom (or empty)"\n    string   oCDS;       "CDS in NCBI format"\n\n    uint    chromSize;"Size of target chromosome"\n\n    uint match;        "Number of bases matched."\n    uint misMatch; " Number of bases that don\'t match "\n    uint repMatch; " Number of bases that match but are part of repeats "\n    uint nCount;   " Number of \'N\' bases "\n    uint seqType;    "0=empty, 1=nucleotide, 2=amino_acid"\n    )',f='table defaultBedSchema\n"BED12"\n    (\n    string chrom;      "The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671)."\n    uint   chromStart; "The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0."\n    uint   chromEnd;   "The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99."\n    string   name;   "Defines the name of the BED line."\n    float   score;   "Feature score, doesn\'t care about the 0-1000 limit as in bed"\n    char   strand;   "Defines the strand. Either \'.\' (=no strand) or \'+\' or \'-\'"\n    uint thickStart; "The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position."\n    uint thickEnd; "The ending position at which the feature is drawn thickly (for example the stop codon in gene displays)."\n    string itemRgb; "An RGB value of the form R,G,B (e.g. 255,0,0). "\n    uint blockCount; " The number of blocks (exons) in the BED line."\n    uint[blockCount] blockSizes; " A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount."\n    uint[blockCount] blockStarts; "A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount."\n    )',d='table mafFrames\n"codon frame assignment for MAF components"\n    (\n    string chrom;      "Reference sequence chromosome or scaffold"\n    uint   chromStart; "Start range in chromosome"\n    uint   chromEnd;   "End range in chromosome"\n    string src;        "Name of sequence source in MAF"\n    ubyte frame;       "frame (0,1,2) for first base(+) or last bast(-)"\n    char[1] strand;    "+ or -"\n    string name;       "Name of gene used to define frame"\n    int    prevFramePos;  "target position of the previous base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"\n    int    nextFramePos;  "target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"\n    ubyte  isExonStart;  "does this start the CDS portion of an exon?"\n    ubyte  isExonEnd;    "does this end the CDS portion of an exon?"\n    )',p='table mafSummary\n"Positions and scores for alignment blocks"\n    (\n    string chrom;      "Reference sequence chromosome or scaffold"\n    uint   chromStart; "Start position in chromosome"\n    uint   chromEnd;   "End position in chromosome"\n    string src;        "Sequence name or database of alignment"\n    float  score;      "Floating point score."\n    char[1] leftStatus;  "Gap/break annotation for preceding block"\n    char[1] rightStatus; "Gap/break annotation for following block"\n    )',g=Object.fromEntries(Object.entries(r).map((([e,t])=>[e,(0,o.parse)(t.trim())])));function b(e){const t=new Set(["uint","int","float","long"]);return{...e,fields:e.fields.map((e=>({...e,isArray:e.size&&"char"!==e.type,arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)}))).filter((e=>!!e.name))}}const S={".":0,"-":-1,"+":1};class y{constructor(e={}){if(e.autoSql)this.autoSql=b(i().parse(e.autoSql));else if(e.type){if(!g[e.type])throw new Error("Type not found");this.autoSql=b(g[e.type])}else this.autoSql=b(g.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){const{autoSql:n}=this,{uniqueId:r}=t,o=Array.isArray(e)?e:e.split("\t");let i={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&function(e){var t;return e.length>=12&&!Number.isNaN(parseInt(e[9],10))&&(null===(t=e[10])||void 0===t?void 0:t.split(",").filter((e=>!!e)).length)===parseInt(e[9],10)}(o))for(let e=0;e<n.fields.length;e++){const t=n.fields[e];let r=o[e];const{isNumeric:a,isArray:s,arrayIsNumeric:c,name:u}=t;if(null==r)break;if("."!==r){if(a){const e=Number(r);r=Number.isNaN(e)?r:e}else s&&(r=r.split(","),""===r[r.length-1]&&r.pop(),c&&(r=r.map(Number)));i[u]=r}}else{const e=["chrom","chromStart","chromEnd","name"];i=Object.fromEntries(o.map(((t,n)=>[e[n]||"field"+n,t]))),i.chromStart=+i.chromStart,i.chromEnd=+i.chromEnd,Number.isNaN(Number.parseFloat(i.field4))||(i.score=+i.field4,delete i.field4),"+"!==i.field5&&"-"!==i.field5||(i.strand=i.field5,delete i.field5)}return r&&(i.uniqueId=r),i.strand=S[i.strand]||0,i.chrom=decodeURIComponent(i.chrom),i}}}}]);
+//# sourceMappingURL=972.c0d17685.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/972.c0d17685.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/972.c0d17685.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/bed/src/autoSql.js","../../../node_modules/@gmod/bed/src/as/autoSqlSchemas.ts","../../../node_modules/@gmod/bed/src/defaultTypes.ts","../../../node_modules/@gmod/bed/src/util.ts","../../../node_modules/@gmod/bed/src/parser.ts"],"sourcesContent":["/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n  function ctor() { this.constructor = child; }\n  ctor.prototype = parent.prototype;\n  child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  this.message  = message;\n  this.expected = expected;\n  this.found    = found;\n  this.location = location;\n  this.name     = \"SyntaxError\";\n\n  if (typeof Error.captureStackTrace === \"function\") {\n    Error.captureStackTrace(this, peg$SyntaxError);\n  }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n        literal: function(expectation) {\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        },\n\n        \"class\": function(expectation) {\n          var escapedParts = \"\",\n              i;\n\n          for (i = 0; i < expectation.parts.length; i++) {\n            escapedParts += expectation.parts[i] instanceof Array\n              ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n              : classEscape(expectation.parts[i]);\n          }\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        },\n\n        any: function(expectation) {\n          return \"any character\";\n        },\n\n        end: function(expectation) {\n          return \"end of input\";\n        },\n\n        other: function(expectation) {\n          return expectation.description;\n        }\n      };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g,  '\\\\\"')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\\]/g, '\\\\]')\n      .replace(/\\^/g, '\\\\^')\n      .replace(/-/g,  '\\\\-')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = new Array(expected.length),\n        i, j;\n\n    for (i = 0; i < expected.length; i++) {\n      descriptions[i] = describeExpectation(expected[i]);\n    }\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== void 0 ? options : {};\n\n  var peg$FAILED = {},\n\n      peg$startRuleFunctions = { declaration: peg$parsedeclaration },\n      peg$startRuleFunction  = peg$parsedeclaration,\n\n      peg$c0 = \"(\",\n      peg$c1 = peg$literalExpectation(\"(\", false),\n      peg$c2 = \")\",\n      peg$c3 = peg$literalExpectation(\")\", false),\n      peg$c4 = function(type, name, comment, fields) { return { type, name, comment, fields } },\n      peg$c5 = \"simple\",\n      peg$c6 = peg$literalExpectation(\"simple\", false),\n      peg$c7 = \"object\",\n      peg$c8 = peg$literalExpectation(\"object\", false),\n      peg$c9 = \"table\",\n      peg$c10 = peg$literalExpectation(\"table\", false),\n      peg$c11 = \"auto\",\n      peg$c12 = peg$literalExpectation(\"auto\", false),\n      peg$c13 = \"primary\",\n      peg$c14 = peg$literalExpectation(\"primary\", false),\n      peg$c15 = \"index\",\n      peg$c16 = peg$literalExpectation(\"index\", false),\n      peg$c17 = \"unique\",\n      peg$c18 = peg$literalExpectation(\"unique\", false),\n      peg$c19 = function(f1, w) { return w; },\n      peg$c20 = function(f1, fds) {\n            if(f1.name) {\n              fds.unshift(f1);\n            }\n            return fds;\n          },\n      peg$c21 = \"#\",\n      peg$c22 = peg$literalExpectation(\"#\", false),\n      peg$c23 = \";\",\n      peg$c24 = peg$literalExpectation(\";\", false),\n      peg$c25 = function(type, name, comment) { return { type, name, comment } },\n      peg$c26 = \"[\",\n      peg$c27 = peg$literalExpectation(\"[\", false),\n      peg$c28 = \"]\",\n      peg$c29 = peg$literalExpectation(\"]\", false),\n      peg$c30 = function(type, size, name, comment) { return { type, size, name, comment } },\n      peg$c31 = function(type, vals, name, comment) { return { type, vals, name, comment } },\n      peg$c32 = \",\",\n      peg$c33 = peg$literalExpectation(\",\", false),\n      peg$c34 = function(f1, fds) {\n              fds.unshift(f1);\n              return fds;\n          },\n      peg$c35 = \"int\",\n      peg$c36 = peg$literalExpectation(\"int\", false),\n      peg$c37 = \"uint\",\n      peg$c38 = peg$literalExpectation(\"uint\", false),\n      peg$c39 = \"short\",\n      peg$c40 = peg$literalExpectation(\"short\", false),\n      peg$c41 = \"ushort\",\n      peg$c42 = peg$literalExpectation(\"ushort\", false),\n      peg$c43 = \"byte\",\n      peg$c44 = peg$literalExpectation(\"byte\", false),\n      peg$c45 = \"ubyte\",\n      peg$c46 = peg$literalExpectation(\"ubyte\", false),\n      peg$c47 = \"float\",\n      peg$c48 = peg$literalExpectation(\"float\", false),\n      peg$c49 = \"char\",\n      peg$c50 = peg$literalExpectation(\"char\", false),\n      peg$c51 = \"string\",\n      peg$c52 = peg$literalExpectation(\"string\", false),\n      peg$c53 = \"lstring\",\n      peg$c54 = peg$literalExpectation(\"lstring\", false),\n      peg$c55 = \"enum\",\n      peg$c56 = peg$literalExpectation(\"enum\", false),\n      peg$c57 = \"double\",\n      peg$c58 = peg$literalExpectation(\"double\", false),\n      peg$c59 = \"bigint\",\n      peg$c60 = peg$literalExpectation(\"bigint\", false),\n      peg$c61 = \"set\",\n      peg$c62 = peg$literalExpectation(\"set\", false),\n      peg$c63 = function(t, n) { return t+' '+n },\n      peg$c64 = /^[a-zA-Z_]/,\n      peg$c65 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"_\"], false, false),\n      peg$c66 = /^[a-zA-Z0-9_]/,\n      peg$c67 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\"], false, false),\n      peg$c68 = function(t) { return text() },\n      peg$c69 = \"\\\"\",\n      peg$c70 = peg$literalExpectation(\"\\\"\", false),\n      peg$c71 = /^[^\"]/,\n      peg$c72 = peg$classExpectation([\"\\\"\"], true, false),\n      peg$c73 = function(t) { return t.join('') },\n      peg$c74 = /^[^\\n\\r]/,\n      peg$c75 = peg$classExpectation([\"\\n\", \"\\r\"], true, false),\n      peg$c76 = function(t) { return t.join('').replace(/^\"/,'').replace(/\"$/,'') },\n      peg$c77 = peg$otherExpectation(\"integer\"),\n      peg$c78 = /^[0-9]/,\n      peg$c79 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n      peg$c80 = function() { return parseInt(text(), 10); },\n      peg$c81 = peg$otherExpectation(\"whitespace\"),\n      peg$c82 = /^[ \\t\\n\\r]/,\n      peg$c83 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false),\n\n      peg$currPos          = 0,\n      peg$savedPos         = 0,\n      peg$posDetailsCache  = [{ line: 1, column: 1 }],\n      peg$maxFailPos       = 0,\n      peg$maxFailExpected  = [],\n      peg$silentFails      = 0,\n\n      peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos], p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line:   details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos),\n        endPosDetails   = peg$computePosDetails(endPos);\n\n    return {\n      start: {\n        offset: startPos,\n        line:   startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line:   endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parsedeclaration() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsedeclareType();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsedeclareName();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsecomment();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 40) {\n                    s8 = peg$c0;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1); }\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parse_();\n                    if (s9 !== peg$FAILED) {\n                      s10 = peg$parsefieldList();\n                      if (s10 !== peg$FAILED) {\n                        s11 = peg$parse_();\n                        if (s11 !== peg$FAILED) {\n                          if (input.charCodeAt(peg$currPos) === 41) {\n                            s12 = peg$c2;\n                            peg$currPos++;\n                          } else {\n                            s12 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c3); }\n                          }\n                          if (s12 !== peg$FAILED) {\n                            s13 = peg$parse_();\n                            if (s13 !== peg$FAILED) {\n                              peg$savedPos = s0;\n                              s1 = peg$c4(s2, s4, s6, s10);\n                              s0 = s1;\n                            } else {\n                              peg$currPos = s0;\n                              s0 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsedeclareType() {\n    var s0;\n\n    if (input.substr(peg$currPos, 6) === peg$c5) {\n      s0 = peg$c5;\n      peg$currPos += 6;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c6); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 6) === peg$c7) {\n        s0 = peg$c7;\n        peg$currPos += 6;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c8); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c9) {\n          s0 = peg$c9;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c10); }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsedeclareName() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$parsename();\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parsename();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseindexType();\n        if (s2 !== peg$FAILED) {\n          s1 = [s1, s2];\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parsename();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c11) {\n            s2 = peg$c11;\n            peg$currPos += 4;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c12); }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [s1, s2];\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parsename();\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parseindexType();\n            if (s2 !== peg$FAILED) {\n              if (input.substr(peg$currPos, 4) === peg$c11) {\n                s3 = peg$c11;\n                peg$currPos += 4;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c12); }\n              }\n              if (s3 !== peg$FAILED) {\n                s1 = [s1, s2, s3];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseindexType() {\n    var s0;\n\n    if (input.substr(peg$currPos, 7) === peg$c13) {\n      s0 = peg$c13;\n      peg$currPos += 7;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c14); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 5) === peg$c15) {\n        s0 = peg$c15;\n        peg$currPos += 5;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c16); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 6) === peg$c17) {\n          s0 = peg$c17;\n          peg$currPos += 6;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c18); }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsecomment() {\n    var s0;\n\n    s0 = peg$parsenonQuotedString();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parse_();\n    }\n\n    return s0;\n  }\n\n  function peg$parsefieldList() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parsefield();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$currPos;\n        s5 = peg$parse_();\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parsefield();\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = s4;\n            s5 = peg$c19(s1, s6);\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$currPos;\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parsefield();\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s4;\n              s5 = peg$c19(s1, s6);\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c20(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecommentStart() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 35) {\n      s0 = peg$c21;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c22); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseinternalComment() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecommentStart();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenonQuotedString();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s1 = [s1, s2, s3, s4];\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsefield() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n    s0 = peg$currPos;\n    s1 = peg$parsefieldType();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsename();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s5 = peg$c23;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c24); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsecomment();\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c25(s1, s3, s7);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parsefieldType();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 91) {\n            s3 = peg$c26;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c27); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsefieldSize();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parse_();\n                if (s6 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 93) {\n                    s7 = peg$c28;\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c29); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parse_();\n                    if (s8 !== peg$FAILED) {\n                      s9 = peg$parsename();\n                      if (s9 !== peg$FAILED) {\n                        s10 = peg$parse_();\n                        if (s10 !== peg$FAILED) {\n                          if (input.charCodeAt(peg$currPos) === 59) {\n                            s11 = peg$c23;\n                            peg$currPos++;\n                          } else {\n                            s11 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c24); }\n                          }\n                          if (s11 !== peg$FAILED) {\n                            s12 = peg$parse_();\n                            if (s12 !== peg$FAILED) {\n                              s13 = peg$parsecomment();\n                              if (s13 !== peg$FAILED) {\n                                peg$savedPos = s0;\n                                s1 = peg$c30(s1, s5, s9, s13);\n                                s0 = s1;\n                              } else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                              }\n                            } else {\n                              peg$currPos = s0;\n                              s0 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parsefieldType();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parse_();\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 40) {\n              s3 = peg$c0;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1); }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parse_();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsefieldValues();\n                if (s5 !== peg$FAILED) {\n                  s6 = peg$parse_();\n                  if (s6 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 41) {\n                      s7 = peg$c2;\n                      peg$currPos++;\n                    } else {\n                      s7 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c3); }\n                    }\n                    if (s7 !== peg$FAILED) {\n                      s8 = peg$parse_();\n                      if (s8 !== peg$FAILED) {\n                        s9 = peg$parsename();\n                        if (s9 !== peg$FAILED) {\n                          s10 = peg$parse_();\n                          if (s10 !== peg$FAILED) {\n                            if (input.charCodeAt(peg$currPos) === 59) {\n                              s11 = peg$c23;\n                              peg$currPos++;\n                            } else {\n                              s11 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c24); }\n                            }\n                            if (s11 !== peg$FAILED) {\n                              s12 = peg$parse_();\n                              if (s12 !== peg$FAILED) {\n                                s13 = peg$parsecomment();\n                                if (s13 !== peg$FAILED) {\n                                  peg$savedPos = s0;\n                                  s1 = peg$c31(s1, s5, s9, s13);\n                                  s0 = s1;\n                                } else {\n                                  peg$currPos = s0;\n                                  s0 = peg$FAILED;\n                                }\n                              } else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                              }\n                            } else {\n                              peg$currPos = s0;\n                              s0 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseinternalComment();\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefieldValues() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parsename();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s4 = peg$c32;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c33); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parsename();\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = s3;\n            s4 = peg$c19(s1, s6);\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s4 = peg$c32;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c33); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parsename();\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s4 = peg$c19(s1, s6);\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c34(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsefieldType() {\n    var s0, s1, s2, s3;\n\n    if (input.substr(peg$currPos, 3) === peg$c35) {\n      s0 = peg$c35;\n      peg$currPos += 3;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c37) {\n        s0 = peg$c37;\n        peg$currPos += 4;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c38); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c39) {\n          s0 = peg$c39;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c40); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 6) === peg$c41) {\n            s0 = peg$c41;\n            peg$currPos += 6;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c42); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c43) {\n              s0 = peg$c43;\n              peg$currPos += 4;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c44); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 5) === peg$c45) {\n                s0 = peg$c45;\n                peg$currPos += 5;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c46); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 5) === peg$c47) {\n                  s0 = peg$c47;\n                  peg$currPos += 5;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c48); }\n                }\n                if (s0 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 4) === peg$c49) {\n                    s0 = peg$c49;\n                    peg$currPos += 4;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c50); }\n                  }\n                  if (s0 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 6) === peg$c51) {\n                      s0 = peg$c51;\n                      peg$currPos += 6;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c52); }\n                    }\n                    if (s0 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 7) === peg$c53) {\n                        s0 = peg$c53;\n                        peg$currPos += 7;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c54); }\n                      }\n                      if (s0 === peg$FAILED) {\n                        if (input.substr(peg$currPos, 4) === peg$c55) {\n                          s0 = peg$c55;\n                          peg$currPos += 4;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c56); }\n                        }\n                        if (s0 === peg$FAILED) {\n                          if (input.substr(peg$currPos, 6) === peg$c57) {\n                            s0 = peg$c57;\n                            peg$currPos += 6;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c58); }\n                          }\n                          if (s0 === peg$FAILED) {\n                            if (input.substr(peg$currPos, 6) === peg$c59) {\n                              s0 = peg$c59;\n                              peg$currPos += 6;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c60); }\n                            }\n                            if (s0 === peg$FAILED) {\n                              if (input.substr(peg$currPos, 3) === peg$c61) {\n                                s0 = peg$c61;\n                                peg$currPos += 3;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c62); }\n                              }\n                              if (s0 === peg$FAILED) {\n                                s0 = peg$currPos;\n                                s1 = peg$parsedeclareType();\n                                if (s1 !== peg$FAILED) {\n                                  s2 = peg$parse_();\n                                  if (s2 !== peg$FAILED) {\n                                    s3 = peg$parsedeclareName();\n                                    if (s3 !== peg$FAILED) {\n                                      peg$savedPos = s0;\n                                      s1 = peg$c63(s1, s3);\n                                      s0 = s1;\n                                    } else {\n                                      peg$currPos = s0;\n                                      s0 = peg$FAILED;\n                                    }\n                                  } else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                  }\n                                } else {\n                                  peg$currPos = s0;\n                                  s0 = peg$FAILED;\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefieldSize() {\n    var s0;\n\n    s0 = peg$parsenumber();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsename();\n    }\n\n    return s0;\n  }\n\n  function peg$parsename() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (peg$c64.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c65); }\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = [];\n      if (peg$c66.test(input.charAt(peg$currPos))) {\n        s4 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c67); }\n      }\n      while (s4 !== peg$FAILED) {\n        s3.push(s4);\n        if (peg$c66.test(input.charAt(peg$currPos))) {\n          s4 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c67); }\n        }\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c68(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsequotedString() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c69;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c70); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      if (peg$c71.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c72); }\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c71.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c72); }\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 34) {\n          s3 = peg$c69;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c70); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c73(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsenonQuotedString() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c74.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c75); }\n    }\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      if (peg$c74.test(input.charAt(peg$currPos))) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c75); }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c76(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsenumber() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      if (peg$c78.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c79); }\n      }\n      if (s3 !== peg$FAILED) {\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          if (peg$c78.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c79); }\n          }\n        }\n      } else {\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c80();\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c77); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    if (peg$c82.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c83); }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      if (peg$c82.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c83); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c81); }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse:       peg$parse\n};\n","export const bigChain = `table bigChain\n\"bigChain pairwise alignment\"\n    (\n    string chrom;       \"Reference sequence chromosome or scaffold\"\n    uint   chromStart;  \"Start position in chromosome\"\n    uint   chromEnd;    \"End position in chromosome\"\n    string name;        \"Name or ID of item, ideally both human readable and unique\"\n    uint score;         \"Score (0-1000)\"\n    char[1] strand;     \"+ or - for strand\"\n    uint tSize;         \"size of target sequence\"\n    string qName;       \"name of query sequence\"\n    uint qSize;         \"size of query sequence\"\n    uint qStart;        \"start of alignment on query sequence\"\n    uint qEnd;          \"end of alignment on query sequence\"\n    uint chainScore;    \"score from chain\"\n    )`\n\nexport const bigGenePred = `table bigGenePred\n\"bigGenePred gene models\"\n   (\n   string chrom;       \"Reference sequence chromosome or scaffold\"\n   uint   chromStart;  \"Start position in chromosome\"\n   uint   chromEnd;    \"End position in chromosome\"\n   string name;        \"Name or ID of item, ideally both human readable and unique\"\n   uint score;         \"Score (0-1000)\"\n   char[1] strand;     \"+ or - for strand\"\n   uint thickStart;    \"Start of where display should be thick (start codon)\"\n   uint thickEnd;      \"End of where display should be thick (stop codon)\"\n   uint reserved;       \"RGB value (use R,G,B string in input file)\"\n   int blockCount;     \"Number of blocks\"\n   int[blockCount] blockSizes; \"Comma separated list of block sizes\"\n   int[blockCount] chromStarts; \"Start positions relative to chromStart\"\n   string name2;       \"Alternative/human readable name\"\n   string cdsStartStat; \"Status of CDS start annotation (none, unknown, incomplete, or complete)\"\n   string cdsEndStat;   \"Status of CDS end annotation (none, unknown, incomplete, or complete)\"\n   int[blockCount] exonFrames; \"Exon frame {0,1,2}, or -1 if no frame for exon\"\n   string type;        \"Transcript type\"\n   string geneName;    \"Primary identifier for gene\"\n   string geneName2;   \"Alternative/human readable gene name\"\n   string geneType;    \"Gene type\"\n   )`\n\nexport const bigInteract = `table interact\n\"interaction between two regions\"\n    (\n    string chrom;        \"Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records\"\n    uint chromStart;     \"Start position of lower region. For interchromosomal, set to chromStart of this region\"\n    uint chromEnd;       \"End position of upper region. For interchromosomal, set to chromEnd of this region\"\n    string name;         \"Name of item, for display.  Usually 'sourceName/targetName/exp' or empty\"\n    uint score;          \"Score (0-1000)\"\n    double value;        \"Strength of interaction or other data value. Typically basis for score\"\n    string exp;          \"Experiment name (metadata for filtering). Use . if not applicable\"\n    string color;        \"Item color.  Specified as r,g,b or hexadecimal #RRGGBB or html color name, as in //www.w3.org/TR/css3-color/#html4. Use 0 and spectrum setting to shade by score\"\n    string sourceChrom;  \"Chromosome of source region (directional) or lower region. For non-directional interchromosomal, chrom of this region.\"\n    uint sourceStart;    \"Start position in chromosome of source/lower/this region\"\n    uint sourceEnd;      \"End position in chromosome of source/lower/this region\"\n    string sourceName;   \"Identifier of source/lower/this region\"\n    string sourceStrand; \"Orientation of source/lower/this region: + or -.  Use . if not applicable\"\n    string targetChrom;  \"Chromosome of target region (directional) or upper region. For non-directional interchromosomal, chrom of other region\"\n    uint targetStart;    \"Start position in chromosome of target/upper/this region\"\n    uint targetEnd;      \"End position in chromosome of target/upper/this region\"\n    string targetName;   \"Identifier of target/upper/this region\"\n    string targetStrand; \"Orientation of target/upper/this region: + or -.  Use . if not applicable\"\n\n    )`\n\nexport const bigLink = `table bigLink\n\"bigLink pairwise alignment\"\n    (\n    string chrom;       \"Reference sequence chromosome or scaffold\"\n    uint   chromStart;  \"Start position in chromosome\"\n    uint   chromEnd;    \"End position in chromosome\"\n    string name;        \"Name or ID of item, ideally both human readable and unique\"\n    uint qStart;        \"start of alignment on query sequence\"\n    )`\n\nexport const bigMaf = `table bedMaf\n\"Bed3 with MAF block\"\n    (\n    string chrom;      \"Reference sequence chromosome or scaffold\"\n    uint   chromStart; \"Start position in chromosome\"\n    uint   chromEnd;   \"End position in chromosome\"\n    lstring mafBlock;   \"MAF block\"\n    )`\nexport const bigNarrowPeak = `table bigNarrowPeak\n\"BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data.\"\n(\n    string chrom;        \"Reference sequence chromosome or scaffold\"\n    uint   chromStart;   \"Start position in chromosome\"\n    uint   chromEnd;     \"End position in chromosome\"\n    string name;\t \"Name given to a region (preferably unique). Use . if no name is assigned\"\n    uint   score;        \"Indicates how dark the peak will be displayed in the browser (0-1000) \"\n    char[1]  strand;     \"+ or - or . for unknown\"\n    float  signalValue;  \"Measurement of average enrichment for the region\"\n    float  pValue;       \"Statistical significance of signal value (-log10). Set to -1 if not used.\"\n    float  qValue;       \"Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used.\"\n    int   peak;         \"Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called.\"\n)`\nexport const bigPsl = `table bigPsl\n\"bigPsl pairwise alignment\"\n    (\n    string chrom;       \"Reference sequence chromosome or scaffold\"\n    uint   chromStart;  \"Start position in chromosome\"\n    uint   chromEnd;    \"End position in chromosome\"\n    string name;        \"Name or ID of item, ideally both human readable and unique\"\n    uint score;         \"Score (0-1000)\"\n    char[1] strand;     \"+ or - indicates whether the query aligns to the + or - strand on the reference\"\n    uint thickStart;    \"Start of where display should be thick (start codon)\"\n    uint thickEnd;      \"End of where display should be thick (stop codon)\"\n    uint reserved;       \"RGB value (use R,G,B string in input file)\"\n    int blockCount;     \"Number of blocks\"\n    int[blockCount] blockSizes; \"Comma separated list of block sizes\"\n    int[blockCount] chromStarts; \"Start positions relative to chromStart\"\n\n    uint    oChromStart;\"Start position in other chromosome\"\n    uint    oChromEnd;  \"End position in other chromosome\"\n    char[1] oStrand;    \"+ or -, - means that psl was reversed into BED-compatible coordinates\"\n    uint    oChromSize; \"Size of other chromosome.\"\n    int[blockCount] oChromStarts; \"Start positions relative to oChromStart or from oChromStart+oChromSize depending on strand\"\n\n    lstring  oSequence;  \"Sequence on other chrom (or empty)\"\n    string   oCDS;       \"CDS in NCBI format\"\n\n    uint    chromSize;\"Size of target chromosome\"\n\n    uint match;        \"Number of bases matched.\"\n    uint misMatch; \" Number of bases that don't match \"\n    uint repMatch; \" Number of bases that match but are part of repeats \"\n    uint nCount;   \" Number of 'N' bases \"\n    uint seqType;    \"0=empty, 1=nucleotide, 2=amino_acid\"\n    )`\n\nexport const defaultBedSchema = `table defaultBedSchema\n\"BED12\"\n    (\n    string chrom;      \"The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).\"\n    uint   chromStart; \"The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0.\"\n    uint   chromEnd;   \"The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.\"\n    string   name;   \"Defines the name of the BED line.\"\n    float   score;   \"Feature score, doesn't care about the 0-1000 limit as in bed\"\n    char   strand;   \"Defines the strand. Either '.' (=no strand) or '+' or '-'\"\n    uint thickStart; \"The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position.\"\n    uint thickEnd; \"The ending position at which the feature is drawn thickly (for example the stop codon in gene displays).\"\n    string itemRgb; \"An RGB value of the form R,G,B (e.g. 255,0,0). \"\n    uint blockCount; \" The number of blocks (exons) in the BED line.\"\n    uint[blockCount] blockSizes; \" A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount.\"\n    uint[blockCount] blockStarts; \"A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount.\"\n    )`\n\nexport const mafFrames = `table mafFrames\n\"codon frame assignment for MAF components\"\n    (\n    string chrom;      \"Reference sequence chromosome or scaffold\"\n    uint   chromStart; \"Start range in chromosome\"\n    uint   chromEnd;   \"End range in chromosome\"\n    string src;        \"Name of sequence source in MAF\"\n    ubyte frame;       \"frame (0,1,2) for first base(+) or last bast(-)\"\n    char[1] strand;    \"+ or -\"\n    string name;       \"Name of gene used to define frame\"\n    int    prevFramePos;  \"target position of the previous base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous\"\n    int    nextFramePos;  \"target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous\"\n    ubyte  isExonStart;  \"does this start the CDS portion of an exon?\"\n    ubyte  isExonEnd;    \"does this end the CDS portion of an exon?\"\n    )`\n\nexport const mafSummary = `table mafSummary\n\"Positions and scores for alignment blocks\"\n    (\n    string chrom;      \"Reference sequence chromosome or scaffold\"\n    uint   chromStart; \"Start position in chromosome\"\n    uint   chromEnd;   \"End position in chromosome\"\n    string src;        \"Sequence name or database of alignment\"\n    float  score;      \"Floating point score.\"\n    char[1] leftStatus;  \"Gap/break annotation for preceding block\"\n    char[1] rightStatus; \"Gap/break annotation for following block\"\n    )`\n","import { parse } from './autoSql'\nimport { AutoSqlPreSchema } from './util'\nimport * as types from './as/autoSqlSchemas'\n\nexport default Object.fromEntries(\n  Object.entries(types).map(([key, val]) => [\n    key,\n    parse(val.trim()) as AutoSqlPreSchema,\n  ]),\n)\n","export interface AutoSqlPreSchema {\n  fields: { size: number; type: string; name: string; comment: string }[]\n}\n\n/*\n * adds some type annotations to the autoSql schema\n * for numeric fields ['uint', 'int', 'float', 'long'] \"isNumeric\" is added\n * for array types \"isArray\" is added\n * for numeric array types \"isArray\" and \"arrayIsNumeric\" is set\n *\n * @param autoSql - an autoSql schema from the peg parser\n * @return autoSql with type annotations added\n */\nexport function detectTypes(autoSql: AutoSqlPreSchema) {\n  const numericTypes = new Set(['uint', 'int', 'float', 'long'])\n  return {\n    ...autoSql,\n    fields: autoSql.fields\n      .map(autoField => ({\n        ...autoField,\n        isArray: autoField.size && autoField.type !== 'char',\n        arrayIsNumeric: autoField.size && numericTypes.has(autoField.type),\n        isNumeric: !autoField.size && numericTypes.has(autoField.type),\n      }))\n\n      // this is needed because the autoSql doesn't properly parse comments in the autoSql\n      .filter(f => !!f.name),\n  }\n}\n\nexport type AutoSqlSchema = ReturnType<typeof detectTypes>\n","import parser from './autoSql'\nimport types from './defaultTypes'\nimport { detectTypes, AutoSqlSchema, AutoSqlPreSchema } from './util'\n\nconst strandMap = { '.': 0, '-': -1, '+': 1 }\n\n// heuristic that a BED file is BED12 like...the number in col 10 is blockCount-like\nfunction isBed12Like(fields: string[]) {\n  return (\n    fields.length >= 12 &&\n    !Number.isNaN(parseInt(fields[9], 10)) &&\n    fields[10]?.split(',').filter(f => !!f).length === parseInt(fields[9], 10)\n  )\n}\nexport default class BED {\n  public autoSql: AutoSqlSchema\n\n  private attemptDefaultBed?: boolean\n\n  constructor(args: { autoSql?: string; type?: string } = {}) {\n    if (args.autoSql) {\n      this.autoSql = detectTypes(parser.parse(args.autoSql) as AutoSqlPreSchema)\n    } else if (args.type) {\n      if (!types[args.type]) {\n        throw new Error('Type not found')\n      }\n      this.autoSql = detectTypes(types[args.type])\n    } else {\n      this.autoSql = detectTypes(types.defaultBedSchema)\n      this.attemptDefaultBed = true\n    }\n  }\n\n  /*\n   * parses a line of text as a BED line with the loaded autoSql schema\n   *\n   * @param line - a BED line as tab delimited text or array\n   * @param opts - supply opts.uniqueId\n   * @return a object representing a feature\n   */\n  parseLine(line: string | string[], opts: { uniqueId?: string } = {}) {\n    const { autoSql } = this\n    const { uniqueId } = opts\n    const fields = Array.isArray(line) ? line : line.split('\\t')\n\n    let feature = {} as Record<string, any>\n    if (\n      !this.attemptDefaultBed ||\n      (this.attemptDefaultBed && isBed12Like(fields))\n    ) {\n      for (let i = 0; i < autoSql.fields.length; i++) {\n        const autoField = autoSql.fields[i]\n        let columnVal: any = fields[i]\n        const { isNumeric, isArray, arrayIsNumeric, name } = autoField\n        if (columnVal === null || columnVal === undefined) {\n          break\n        }\n        if (columnVal !== '.') {\n          if (isNumeric) {\n            const num = Number(columnVal)\n            columnVal = Number.isNaN(num) ? columnVal : num\n          } else if (isArray) {\n            columnVal = columnVal.split(',')\n            if (columnVal[columnVal.length - 1] === '') {\n              columnVal.pop()\n            }\n            if (arrayIsNumeric) {\n              columnVal = columnVal.map(Number)\n            }\n          }\n\n          feature[name] = columnVal\n        }\n      }\n    } else {\n      const fieldNames = ['chrom', 'chromStart', 'chromEnd', 'name']\n      feature = Object.fromEntries(\n        fields.map((f, i) => [fieldNames[i] || 'field' + i, f]),\n      )\n      feature.chromStart = +feature.chromStart\n      feature.chromEnd = +feature.chromEnd\n      if (!Number.isNaN(Number.parseFloat(feature.field4))) {\n        feature.score = +feature.field4\n        delete feature.field4\n      }\n      if (feature.field5 === '+' || feature.field5 === '-') {\n        feature.strand = feature.field5\n        delete feature.field5\n      }\n    }\n    if (uniqueId) {\n      feature.uniqueId = uniqueId\n    }\n    feature.strand = strandMap[feature.strand as keyof typeof strandMap] || 0\n\n    feature.chrom = decodeURIComponent(feature.chrom)\n    return feature\n  }\n}\n"],"names":["peg$SyntaxError","message","expected","found","location","this","name","Error","captureStackTrace","child","parent","ctor","constructor","prototype","peg$subclass","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","text","i","escapedParts","parts","length","Array","classEscape","inverted","any","end","other","description","hex","ch","charCodeAt","toString","toUpperCase","s","replace","j","descriptions","type","sort","slice","join","describeExpected","describeFound","module","exports","SyntaxError","parse","input","options","peg$result","peg$FAILED","peg$startRuleFunctions","declaration","peg$parsedeclaration","peg$startRuleFunction","peg$c0","peg$c1","peg$literalExpectation","peg$c2","peg$c3","peg$c4","comment","fields","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","f1","w","peg$c20","fds","unshift","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","size","peg$c31","vals","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","t","n","peg$c64","peg$c65","peg$classExpectation","peg$c66","peg$c67","peg$c68","peg$c74","peg$c75","peg$c76","peg$c77","peg$otherExpectation","peg$c78","peg$c79","peg$c80","parseInt","peg$c81","peg$c82","peg$c83","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","substring","ignoreCase","peg$computePosDetails","pos","p","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","start","offset","peg$fail","push","s0","s2","s4","s6","s8","s10","s12","peg$parse_","peg$parsedeclareType","peg$parsedeclareName","peg$parsecomment","s1","s3","peg$parsefield","peg$parsefieldList","substr","peg$parsename","peg$parseindexType","peg$parsenonQuotedString","s5","s7","s9","s11","s13","peg$parsefieldType","test","charAt","peg$parsenumber","peg$parsefieldSize","peg$parsefieldValues","peg$parsecommentStart","peg$parseinternalComment","bigChain","bigGenePred","bigInteract","bigLink","bigMaf","bigNarrowPeak","bigPsl","defaultBedSchema","mafFrames","mafSummary","Object","fromEntries","entries","map","key","val","trim","detectTypes","autoSql","numericTypes","Set","autoField","isArray","arrayIsNumeric","has","isNumeric","filter","f","strandMap","BED","args","attemptDefaultBed","parseLine","opts","uniqueId","split","feature","Number","isNaN","isBed12Like","columnVal","num","pop","fieldNames","chromStart","chromEnd","parseFloat","field4","score","field5","strand","chrom","decodeURIComponent"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9756.4ac80c37.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9756],{49756:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var s=a(46377),r=a(44728),n=a(66885),i=a(99546),o=a(82088);class c extends s.BaseFeatureDataAdapter{gcMode="content";static capabilities=["hasLocalStats"];async configure(){const e=await(this.getSubAdapter?.(this.getConf("sequenceAdapter")));if(!e)throw new Error("Error getting subadapter");return e.dataAdapter}async getRefNames(){return(await this.configure()).getRefNames()}getFeatures(e,t){return(0,n.ObservableCreate)((async a=>{const s=await this.configure(),n=this.getConf("windowSize"),c=this.getConf("windowDelta"),u=1===n?1:n/2,g=1===n;let{start:d,end:h}=e;if(d=Math.max(0,d-u),h+=u,h<0||d>h)return void a.complete();const l=s.getFeatures({...e,start:d,end:h},t),w=await(0,r._)(l.pipe((0,o.$)())),f=w[0]?.get("seq")||"";for(let t=u;t<f.length-u;t+=c){const s=g?f[t]:f.slice(t-u,t+u);let r=0,n=0,o=0;for(const e of s)"c"===e||"C"===e?r++:"g"!==e&&"G"!==e||n++,"N"!==e&&o++;const h=d,l="content"===this.gcMode?(n+r)/(o||1):"skew"===this.gcMode?(n-r)/(n+r||1):0;a.next(new i.SimpleFeature({uniqueId:`${this.id}_${h+t}`,refName:e.refName,start:h+t,end:h+t+c,score:l}))}a.complete()}))}freeResources(){}}}}]);
+//# sourceMappingURL=9756.4ac80c37.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9756.4ac80c37.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9756.4ac80c37.chunk.js","mappings":"kNASe,MAAMA,UAAyBC,EAAAA,uBACpCC,OAAS,UAEjB,oBAA6B,CAAC,iBAE9B,eAAaC,GACX,MAAMC,QAAgBC,KAAKC,gBAAgBD,KAAKE,QAAQ,qBACxD,IAAKH,EACH,MAAM,IAAII,MAAM,4BAElB,OAAOJ,EAAQK,WACjB,CAEA,iBAAaC,GAEX,aADsBL,KAAKF,aACZO,aACjB,CAEOC,WAAAA,CAAYC,EAAeC,GAChC,OAAOC,EAAAA,EAAAA,mBAA0BC,UAC/B,MAAMC,QAAwBX,KAAKF,YAC7Bc,EAAaZ,KAAKE,QAAQ,cAC1BW,EAAcb,KAAKE,QAAQ,eAC3BY,EAAoB,IAAfF,EAAmB,EAAIA,EAAa,EACzCG,EAAmB,IAAfH,EAEV,IAAMI,MAAOC,EAAYC,IAAKC,GAAaZ,EAI3C,GAHAU,EAAaG,KAAKC,IAAI,EAAGJ,EAAaH,GACtCK,GAAYL,EAERK,EAAW,GAAKF,EAAaE,EAE/B,YADAG,EAASC,WAIX,MAAMC,EAAMb,EAAgBL,YAC1B,IACKC,EACHS,MAAOC,EACPC,IAAKC,GAEPX,GAEIiB,QAAcC,EAAAA,EAAAA,GAAeF,EAAIG,MAAKC,EAAAA,EAAAA,OACtCC,EAAWJ,EAAM,IAAIK,IAAI,QAAU,GAEzC,IAAK,IAAIC,EAAIjB,EAAIiB,EAAIF,EAASG,OAASlB,EAAIiB,GAAKlB,EAAa,CAC3D,MAAMoB,EAAIlB,EAAIc,EAASE,GAAKF,EAASK,MAAMH,EAAIjB,EAAIiB,EAAIjB,GACvD,IAAIqB,EAAK,EACLC,EAAK,EACLC,EAAM,EACV,IAAK,MAAMC,KAAUL,EACJ,MAAXK,GAA6B,MAAXA,EACpBH,IACoB,MAAXG,GAA6B,MAAXA,GAC3BF,IAEa,MAAXE,GACFD,IAGJ,MAAME,EAAMtB,EACNuB,EACY,YAAhBxC,KAAKH,QACAuC,EAAKD,IAAOE,GAAO,GACJ,SAAhBrC,KAAKH,QACFuC,EAAKD,IAAOC,EAAKD,GAAM,GACxB,EAERb,EAASmB,KACP,IAAIC,EAAAA,cAAc,CAChBC,SAAU,GAAG3C,KAAK4C,MAAML,EAAMR,IAC9Bc,QAAStC,EAAMsC,QACf7B,MAAOuB,EAAMR,EACbb,IAAKqB,EAAMR,EAAIlB,EACf2B,UAGN,CACAlB,EAASC,UAAU,GAEvB,CAOOuB,aAAAA,GAAiC,E","sources":["../../../plugins/gccontent/src/GCContentAdapter/GCContentAdapter.ts"],"sourcesContent":["import {\n  BaseFeatureDataAdapter,\n  BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { firstValueFrom } from 'rxjs'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { SimpleFeature, Feature, Region } from '@jbrowse/core/util'\nimport { toArray } from 'rxjs/operators'\n\nexport default class GCContentAdapter extends BaseFeatureDataAdapter {\n  private gcMode = 'content'\n\n  public static capabilities = ['hasLocalStats']\n\n  public async configure() {\n    const adapter = await this.getSubAdapter?.(this.getConf('sequenceAdapter'))\n    if (!adapter) {\n      throw new Error('Error getting subadapter')\n    }\n    return adapter.dataAdapter as BaseFeatureDataAdapter\n  }\n\n  public async getRefNames() {\n    const adapter = await this.configure()\n    return adapter.getRefNames()\n  }\n\n  public getFeatures(query: Region, opts: BaseOptions) {\n    return ObservableCreate<Feature>(async observer => {\n      const sequenceAdapter = await this.configure()\n      const windowSize = this.getConf('windowSize')\n      const windowDelta = this.getConf('windowDelta')\n      const hw = windowSize === 1 ? 1 : windowSize / 2 // Half the window size\n      const f = windowSize === 1\n\n      let { start: queryStart, end: queryEnd } = query\n      queryStart = Math.max(0, queryStart - hw)\n      queryEnd += hw\n\n      if (queryEnd < 0 || queryStart > queryEnd) {\n        observer.complete()\n        return\n      }\n\n      const ret = sequenceAdapter.getFeatures(\n        {\n          ...query,\n          start: queryStart,\n          end: queryEnd,\n        },\n        opts,\n      )\n      const feats = await firstValueFrom(ret.pipe(toArray()))\n      const residues = feats[0]?.get('seq') || ''\n\n      for (let i = hw; i < residues.length - hw; i += windowDelta) {\n        const r = f ? residues[i] : residues.slice(i - hw, i + hw)\n        let nc = 0\n        let ng = 0\n        let len = 0\n        for (const letter of r) {\n          if (letter === 'c' || letter === 'C') {\n            nc++\n          } else if (letter === 'g' || letter === 'G') {\n            ng++\n          }\n          if (letter !== 'N') {\n            len++\n          }\n        }\n        const pos = queryStart\n        const score =\n          this.gcMode === 'content'\n            ? (ng + nc) / (len || 1)\n            : this.gcMode === 'skew'\n              ? (ng - nc) / (ng + nc || 1)\n              : 0\n\n        observer.next(\n          new SimpleFeature({\n            uniqueId: `${this.id}_${pos + i}`,\n            refName: query.refName,\n            start: pos + i,\n            end: pos + i + windowDelta,\n            score,\n          }),\n        )\n      }\n      observer.complete()\n    })\n  }\n\n  /**\n   * called to provide a hint that data tied to a certain region\n   * will not be needed for the foreseeable future and can be purged\n   * from caches, etc\n   */\n  public freeResources(/* { region } */) {}\n}\n"],"names":["GCContentAdapter","BaseFeatureDataAdapter","gcMode","configure","adapter","this","getSubAdapter","getConf","Error","dataAdapter","getRefNames","getFeatures","query","opts","ObservableCreate","async","sequenceAdapter","windowSize","windowDelta","hw","f","start","queryStart","end","queryEnd","Math","max","observer","complete","ret","feats","firstValueFrom","pipe","toArray","residues","get","i","length","r","slice","nc","ng","len","letter","pos","score","next","SimpleFeature","uniqueId","id","refName","freeResources"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9824.b9ece376.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9824],{70156:(o,e,t)=>{t.d(e,{A:()=>r});const r=t(7552).createContext()},39824:(o,e,t)=>{t.r(e),t.d(e,{default:()=>A,getTableFooterUtilityClass:()=>i,tableFooterClasses:()=>f});var r=t(7552),s=t(93878),a=t(70799),l=t(70156),n=t(51148),u=t(4785),c=t(33761),b=t(85693);function i(o){return(0,b.Ay)("MuiTableFooter",o)}const f=(0,c.A)("MuiTableFooter",["root"]);var p=t(69500);const w=(0,n.Ay)("tfoot",{name:"MuiTableFooter",slot:"Root",overridesResolver:(o,e)=>e.root})({display:"table-footer-group"}),d={variant:"footer"},v="tfoot",A=r.forwardRef((function(o,e){const t=(0,u.b)({props:o,name:"MuiTableFooter"}),{className:r,component:n=v,...c}=t,b={...t,component:n},f=(o=>{const{classes:e}=o;return(0,a.A)({root:["root"]},i,e)})(b);return(0,p.jsx)(l.A.Provider,{value:d,children:(0,p.jsx)(w,{as:n,className:(0,s.A)(f.root,r),ref:e,role:n===v?null:"rowgroup",ownerState:b,...c})})}))}}]);
+//# sourceMappingURL=9824.b9ece376.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9824.b9ece376.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9824.b9ece376.chunk.js","mappings":"0IASA,Q,QAJsC,e,oMCH/B,SAASA,EAA2BC,GACzC,OAAO,EAAAC,EAAA,IAAqB,iBAAkBD,EAChD,CACA,MACA,GAD2B,EAAAE,EAAA,GAAuB,iBAAkB,CAAC,S,eCMrE,MASMC,GAAkB,EAAAC,EAAA,IAAO,QAAS,CACtCC,KAAM,iBACNL,KAAM,OACNM,kBAAmB,CAACC,EAAOC,IAAWA,EAAOC,MAHvB,CAIrB,CACDC,QAAS,uBAELC,EAAY,CAChBC,QAAS,UAELC,EAAmB,QAuDzB,EAtDiC,cAAiB,SAAqBC,EAASC,GAC9E,MAAMR,GAAQ,OAAgB,CAC5BA,MAAOO,EACPT,KAAM,oBAEF,UACJW,EAAS,UACTC,EAAYJ,KACTK,GACDX,EACEY,EAAa,IACdZ,EACHU,aAEIG,EAlCkBD,KACxB,MAAM,QACJC,GACED,EAIJ,OAAO,EAAAE,EAAA,GAHO,CACZZ,KAAM,CAAC,SAEoBV,EAA4BqB,EAAQ,EA2BjDE,CAAkBH,GAClC,OAAoB,SAAKI,EAAA,EAAiBC,SAAU,CAClDC,MAAOd,EACPe,UAAuB,SAAKvB,EAAiB,CAC3CwB,GAAIV,EACJD,WAAW,EAAAY,EAAA,GAAKR,EAAQX,KAAMO,GAC9BD,IAAKA,EACLc,KAAMZ,IAAcJ,EAAmB,KAAO,WAC9CM,WAAYA,KACTD,KAGT,G","sources":["../../../node_modules/@mui/material/Table/Tablelvl2Context.js","../../../node_modules/@mui/material/TableFooter/tableFooterClasses.js","../../../node_modules/@mui/material/TableFooter/TableFooter.js"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableFooterUtilityClass(slot) {\n  return generateUtilityClass('MuiTableFooter', slot);\n}\nconst tableFooterClasses = generateUtilityClasses('MuiTableFooter', ['root']);\nexport default tableFooterClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Tablelvl2Context from \"../Table/Tablelvl2Context.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getTableFooterUtilityClass } from \"./tableFooterClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableFooterUtilityClass, classes);\n};\nconst TableFooterRoot = styled('tfoot', {\n  name: 'MuiTableFooter',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-footer-group'\n});\nconst tablelvl2 = {\n  variant: 'footer'\n};\nconst defaultComponent = 'tfoot';\nconst TableFooter = /*#__PURE__*/React.forwardRef(function TableFooter(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTableFooter'\n  });\n  const {\n    className,\n    component = defaultComponent,\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    component\n  };\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableFooterRoot, {\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState,\n      ...other\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableFooter.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableFooter;"],"names":["getTableFooterUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TableFooterRoot","styled","name","overridesResolver","props","styles","root","display","tablelvl2","variant","defaultComponent","inProps","ref","className","component","other","ownerState","classes","composeClasses","useUtilityClasses","Tablelvl2Context","Provider","value","children","as","clsx","role"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9831.de8b3aa9.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9831],{29831:function(e,t,r){var i;e.exports=(i=r(17753),r(29038),r(1224),r(59982),r(47089),function(){var e=i,t=e.lib.BlockCipher,r=e.algo,n=[],s=[],o=[],c=[],a=[],h=[],f=[],u=[],d=[],l=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var _=e[r],v=e[_],y=e[v],g=257*e[p]^16843008*p;o[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,a[r]=g<<8|g>>>24,h[r]=g,g=16843009*y^65537*v^257*_^16843008*r,f[p]=g<<24|g>>>8,u[p]=g<<16|g>>>16,d[p]=g<<8|g>>>24,l[p]=g,r?(r=_^e[e[e[y^_]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o<i;o++)o<r?s[o]=t[o]:(h=s[o-1],o%r?r>6&&o%r==4&&(h=n[h>>>24]<<24|n[h>>>16&255]<<16|n[h>>>8&255]<<8|n[255&h]):(h=n[(h=h<<8|h>>>24)>>>24]<<24|n[h>>>16&255]<<16|n[h>>>8&255]<<8|n[255&h],h^=p[o/r|0]<<24),s[o]=s[o-r]^h);for(var c=this._invKeySchedule=[],a=0;a<i;a++){if(o=i-a,a%4)var h=s[o];else h=s[o-4];c[a]=a<4||o<=4?h:f[n[h>>>24]]^u[n[h>>>16&255]]^d[n[h>>>8&255]]^l[n[255&h]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,c,a,h,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,f,u,d,l,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,c){for(var a=this._nRounds,h=e[t]^r[0],f=e[t+1]^r[1],u=e[t+2]^r[2],d=e[t+3]^r[3],l=4,p=1;p<a;p++){var _=i[h>>>24]^n[f>>>16&255]^s[u>>>8&255]^o[255&d]^r[l++],v=i[f>>>24]^n[u>>>16&255]^s[d>>>8&255]^o[255&h]^r[l++],y=i[u>>>24]^n[d>>>16&255]^s[h>>>8&255]^o[255&f]^r[l++],g=i[d>>>24]^n[h>>>16&255]^s[f>>>8&255]^o[255&u]^r[l++];h=_,f=v,u=y,d=g}_=(c[h>>>24]<<24|c[f>>>16&255]<<16|c[u>>>8&255]<<8|c[255&d])^r[l++],v=(c[f>>>24]<<24|c[u>>>16&255]<<16|c[d>>>8&255]<<8|c[255&h])^r[l++],y=(c[u>>>24]<<24|c[d>>>16&255]<<16|c[h>>>8&255]<<8|c[255&f])^r[l++],g=(c[d>>>24]<<24|c[h>>>16&255]<<16|c[f>>>8&255]<<8|c[255&u])^r[l++],e[t]=_,e[t+1]=v,e[t+2]=y,e[t+3]=g},keySize:8});e.AES=t._createHelper(_)}(),i.AES)},47089:function(e,t,r){var i,n,s,o,c,a,h,f,u,d,l,p,_,v,y,g,k,B,x;e.exports=(i=r(17753),r(59982),void(i.lib.Cipher||(n=i,s=n.lib,o=s.Base,c=s.WordArray,a=s.BufferedBlockAlgorithm,h=n.enc,h.Utf8,f=h.Base64,u=n.algo.EvpKDF,d=s.Cipher=a.extend({cfg:o.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,r){this.cfg=this.cfg.extend(r),this._xformMode=e,this._key=t,this.reset()},reset:function(){a.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?x:k}return function(t){return{encrypt:function(r,i,n){return e(i).encrypt(t,r,i,n)},decrypt:function(r,i,n){return e(i).decrypt(t,r,i,n)}}}}()}),s.StreamCipher=d.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),l=n.mode={},p=s.BlockCipherMode=o.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),_=l.CBC=function(){var e=p.extend();function t(e,t,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var s=0;s<r;s++)e[t+s]^=i[s]}return e.Encryptor=e.extend({processBlock:function(e,r){var i=this._cipher,n=i.blockSize;t.call(this,e,r,n),i.encryptBlock(e,r),this._prevBlock=e.slice(r,r+n)}}),e.Decryptor=e.extend({processBlock:function(e,r){var i=this._cipher,n=i.blockSize,s=e.slice(r,r+n);i.decryptBlock(e,r),t.call(this,e,r,n),this._prevBlock=s}}),e}(),v=(n.pad={}).Pkcs7={pad:function(e,t){for(var r=4*t,i=r-e.sigBytes%r,n=i<<24|i<<16|i<<8|i,s=[],o=0;o<i;o+=4)s.push(n);var a=c.create(s,i);e.concat(a)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},s.BlockCipher=d.extend({cfg:d.cfg.extend({mode:_,padding:v}),reset:function(){var e;d.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4}),y=s.CipherParams=o.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(n.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?c.create([1398893684,1701076831]).concat(r).concat(t):t).toString(f)},parse:function(e){var t,r=f.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=c.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),y.create({ciphertext:r,salt:t})}},k=s.SerializableCipher=o.extend({cfg:o.extend({format:g}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return y.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),B=(n.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=c.random(8)),n)s=u.create({keySize:t+r,hasher:n}).compute(e,i);else var s=u.create({keySize:t+r}).compute(e,i);var o=c.create(s.words.slice(t),4*r);return s.sigBytes=4*t,y.create({key:s,iv:o,salt:i})}},x=s.PasswordBasedCipher=k.extend({cfg:k.cfg.extend({kdf:B}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=k.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,k.decrypt.call(this,e,t,n.key,i)}}))))},29038:function(e,t,r){var i,n,s;e.exports=(i=r(17753),s=(n=i).lib.WordArray,n.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s<r;s+=3)for(var o=(t[s>>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,c=0;c<4&&s+.75*c<r;c++)n.push(i.charAt(o>>>6*(3-c)&63));var a=i.charAt(64);if(a)for(;n.length%4;)n.push(a);return n.join("")},parse:function(e){var t=e.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n<r.length;n++)i[r.charCodeAt(n)]=n}var o=r.charAt(64);if(o){var c=e.indexOf(o);-1!==c&&(t=c)}return function(e,t,r){for(var i=[],n=0,o=0;o<t;o++)if(o%4){var c=r[e.charCodeAt(o-1)]<<o%4*2|r[e.charCodeAt(o)]>>>6-o%4*2;i[n>>>2]|=c<<24-n%4*8,n++}return s.create(i,n)}(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},i.enc.Base64)},59982:function(e,t,r){var i,n,s,o,c,a,h,f;e.exports=(f=r(17753),r(62555),r(19557),s=(n=(i=f).lib).Base,o=n.WordArray,a=(c=i.algo).MD5,h=c.EvpKDF=s.extend({cfg:s.extend({keySize:4,hasher:a,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r,i=this.cfg,n=i.hasher.create(),s=o.create(),c=s.words,a=i.keySize,h=i.iterations;c.length<a;){r&&n.update(r),r=n.update(e).finalize(t),n.reset();for(var f=1;f<h;f++)r=n.finalize(r),n.reset();s.concat(r)}return s.sigBytes=4*a,s}}),i.EvpKDF=function(e,t,r){return h.create(r).compute(e,t)},f.EvpKDF)},19557:function(e,t,r){var i,n,s;e.exports=(n=(i=r(17753)).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=n.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),o=this._iKey=t.clone(),c=n.words,a=o.words,h=0;h<r;h++)c[h]^=1549556828,a[h]^=909522486;n.sigBytes=o.sigBytes=i,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var t=this._hasher,r=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(r))}})))},1224:function(e,t,r){var i;e.exports=(i=r(17753),function(e){var t=i,r=t.lib,n=r.WordArray,s=r.Hasher,o=t.algo,c=[];!function(){for(var t=0;t<64;t++)c[t]=4294967296*e.abs(e.sin(t+1))|0}();var a=o.MD5=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],a=e[t+1],l=e[t+2],p=e[t+3],_=e[t+4],v=e[t+5],y=e[t+6],g=e[t+7],k=e[t+8],B=e[t+9],x=e[t+10],m=e[t+11],S=e[t+12],z=e[t+13],b=e[t+14],C=e[t+15],M=s[0],w=s[1],D=s[2],E=s[3];M=h(M,w,D,E,o,7,c[0]),E=h(E,M,w,D,a,12,c[1]),D=h(D,E,M,w,l,17,c[2]),w=h(w,D,E,M,p,22,c[3]),M=h(M,w,D,E,_,7,c[4]),E=h(E,M,w,D,v,12,c[5]),D=h(D,E,M,w,y,17,c[6]),w=h(w,D,E,M,g,22,c[7]),M=h(M,w,D,E,k,7,c[8]),E=h(E,M,w,D,B,12,c[9]),D=h(D,E,M,w,x,17,c[10]),w=h(w,D,E,M,m,22,c[11]),M=h(M,w,D,E,S,7,c[12]),E=h(E,M,w,D,z,12,c[13]),D=h(D,E,M,w,b,17,c[14]),M=f(M,w=h(w,D,E,M,C,22,c[15]),D,E,a,5,c[16]),E=f(E,M,w,D,y,9,c[17]),D=f(D,E,M,w,m,14,c[18]),w=f(w,D,E,M,o,20,c[19]),M=f(M,w,D,E,v,5,c[20]),E=f(E,M,w,D,x,9,c[21]),D=f(D,E,M,w,C,14,c[22]),w=f(w,D,E,M,_,20,c[23]),M=f(M,w,D,E,B,5,c[24]),E=f(E,M,w,D,b,9,c[25]),D=f(D,E,M,w,p,14,c[26]),w=f(w,D,E,M,k,20,c[27]),M=f(M,w,D,E,z,5,c[28]),E=f(E,M,w,D,l,9,c[29]),D=f(D,E,M,w,g,14,c[30]),M=u(M,w=f(w,D,E,M,S,20,c[31]),D,E,v,4,c[32]),E=u(E,M,w,D,k,11,c[33]),D=u(D,E,M,w,m,16,c[34]),w=u(w,D,E,M,b,23,c[35]),M=u(M,w,D,E,a,4,c[36]),E=u(E,M,w,D,_,11,c[37]),D=u(D,E,M,w,g,16,c[38]),w=u(w,D,E,M,x,23,c[39]),M=u(M,w,D,E,z,4,c[40]),E=u(E,M,w,D,o,11,c[41]),D=u(D,E,M,w,p,16,c[42]),w=u(w,D,E,M,y,23,c[43]),M=u(M,w,D,E,B,4,c[44]),E=u(E,M,w,D,S,11,c[45]),D=u(D,E,M,w,C,16,c[46]),M=d(M,w=u(w,D,E,M,l,23,c[47]),D,E,o,6,c[48]),E=d(E,M,w,D,g,10,c[49]),D=d(D,E,M,w,b,15,c[50]),w=d(w,D,E,M,v,21,c[51]),M=d(M,w,D,E,S,6,c[52]),E=d(E,M,w,D,p,10,c[53]),D=d(D,E,M,w,x,15,c[54]),w=d(w,D,E,M,a,21,c[55]),M=d(M,w,D,E,k,6,c[56]),E=d(E,M,w,D,C,10,c[57]),D=d(D,E,M,w,y,15,c[58]),w=d(w,D,E,M,z,21,c[59]),M=d(M,w,D,E,_,6,c[60]),E=d(E,M,w,D,m,10,c[61]),D=d(D,E,M,w,l,15,c[62]),w=d(w,D,E,M,B,21,c[63]),s[0]=s[0]+M|0,s[1]=s[1]+w|0,s[2]=s[2]+D|0,s[3]=s[3]+E|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var c=this._hash,a=c.words,h=0;h<4;h++){var f=a[h];a[h]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return c},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function h(e,t,r,i,n,s,o){var c=e+(t&r|~t&i)+n+o;return(c<<s|c>>>32-s)+t}function f(e,t,r,i,n,s,o){var c=e+(t&i|r&~i)+n+o;return(c<<s|c>>>32-s)+t}function u(e,t,r,i,n,s,o){var c=e+(t^r^i)+n+o;return(c<<s|c>>>32-s)+t}function d(e,t,r,i,n,s,o){var c=e+(r^(t|~i))+n+o;return(c<<s|c>>>32-s)+t}t.MD5=s._createHelper(a),t.HmacMD5=s._createHmacHelper(a)}(Math),i.MD5)},62555:function(e,t,r){var i,n,s,o,c,a,h,f;e.exports=(n=(i=f=r(17753)).lib,s=n.WordArray,o=n.Hasher,c=i.algo,a=[],h=c.SHA1=o.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],c=r[4],h=0;h<80;h++){if(h<16)a[h]=0|e[t+h];else{var f=a[h-3]^a[h-8]^a[h-14]^a[h-16];a[h]=f<<1|f>>>31}var u=(i<<5|i>>>27)+c+a[h];u+=h<20?1518500249+(n&s|~n&o):h<40?1859775393+(n^s^o):h<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,c=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(h),i.HmacSHA1=o._createHmacHelper(h),f.SHA1)}}]);
+//# sourceMappingURL=9831.de8b3aa9.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9831.de8b3aa9.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9831.de8b3aa9.chunk.js","mappings":"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","sources":["../../../node_modules/crypto-js/aes.js","../../../node_modules/crypto-js/cipher-core.js","../../../node_modules/crypto-js/enc-base64.js","../../../node_modules/crypto-js/evpkdf.js","../../../node_modules/crypto-js/hmac.js","../../../node_modules/crypto-js/md5.js","../../../node_modules/crypto-js/sha1.js"],"sourcesContent":[";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Lookup tables\n\t    var SBOX = [];\n\t    var INV_SBOX = [];\n\t    var SUB_MIX_0 = [];\n\t    var SUB_MIX_1 = [];\n\t    var SUB_MIX_2 = [];\n\t    var SUB_MIX_3 = [];\n\t    var INV_SUB_MIX_0 = [];\n\t    var INV_SUB_MIX_1 = [];\n\t    var INV_SUB_MIX_2 = [];\n\t    var INV_SUB_MIX_3 = [];\n\n\t    // Compute lookup tables\n\t    (function () {\n\t        // Compute double table\n\t        var d = [];\n\t        for (var i = 0; i < 256; i++) {\n\t            if (i < 128) {\n\t                d[i] = i << 1;\n\t            } else {\n\t                d[i] = (i << 1) ^ 0x11b;\n\t            }\n\t        }\n\n\t        // Walk GF(2^8)\n\t        var x = 0;\n\t        var xi = 0;\n\t        for (var i = 0; i < 256; i++) {\n\t            // Compute sbox\n\t            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t            SBOX[x] = sx;\n\t            INV_SBOX[sx] = x;\n\n\t            // Compute multiplication\n\t            var x2 = d[x];\n\t            var x4 = d[x2];\n\t            var x8 = d[x4];\n\n\t            // Compute sub bytes, mix columns tables\n\t            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n\t            SUB_MIX_3[x] = t;\n\n\t            // Compute inv sub bytes, inv mix columns tables\n\t            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n\t            INV_SUB_MIX_3[sx] = t;\n\n\t            // Compute next counter\n\t            if (!x) {\n\t                x = xi = 1;\n\t            } else {\n\t                x = x2 ^ d[d[d[x8 ^ x2]]];\n\t                xi ^= d[d[xi]];\n\t            }\n\t        }\n\t    }());\n\n\t    // Precomputed Rcon lookup\n\t    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t    /**\n\t     * AES block cipher algorithm.\n\t     */\n\t    var AES = C_algo.AES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            var t;\n\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._nRounds && this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            // Compute number of rounds\n\t            var nRounds = this._nRounds = keySize + 6;\n\n\t            // Compute number of key schedule rows\n\t            var ksRows = (nRounds + 1) * 4;\n\n\t            // Compute key schedule\n\t            var keySchedule = this._keySchedule = [];\n\t            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t                if (ksRow < keySize) {\n\t                    keySchedule[ksRow] = keyWords[ksRow];\n\t                } else {\n\t                    t = keySchedule[ksRow - 1];\n\n\t                    if (!(ksRow % keySize)) {\n\t                        // Rot word\n\t                        t = (t << 8) | (t >>> 24);\n\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t                        // Mix Rcon\n\t                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t                    } else if (keySize > 6 && ksRow % keySize == 4) {\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t                    }\n\n\t                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t                }\n\t            }\n\n\t            // Compute inv key schedule\n\t            var invKeySchedule = this._invKeySchedule = [];\n\t            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t                var ksRow = ksRows - invKsRow;\n\n\t                if (invKsRow % 4) {\n\t                    var t = keySchedule[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 4];\n\t                }\n\n\t                if (invKsRow < 4 || ksRow <= 4) {\n\t                    invKeySchedule[invKsRow] = t;\n\t                } else {\n\t                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t                }\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            // Swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\n\t            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t            // Inv swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\t        },\n\n\t        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t            // Shortcut\n\t            var nRounds = this._nRounds;\n\n\t            // Get input, add round key\n\t            var s0 = M[offset]     ^ keySchedule[0];\n\t            var s1 = M[offset + 1] ^ keySchedule[1];\n\t            var s2 = M[offset + 2] ^ keySchedule[2];\n\t            var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t            // Key schedule row counter\n\t            var ksRow = 4;\n\n\t            // Rounds\n\t            for (var round = 1; round < nRounds; round++) {\n\t                // Shift rows, sub bytes, mix columns, add round key\n\t                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t                // Update state\n\t                s0 = t0;\n\t                s1 = t1;\n\t                s2 = t2;\n\t                s3 = t3;\n\t            }\n\n\t            // Shift rows, sub bytes, add round key\n\t            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t            // Set output\n\t            M[offset]     = t0;\n\t            M[offset + 1] = t1;\n\t            M[offset + 2] = t2;\n\t            M[offset + 3] = t3;\n\t        },\n\n\t        keySize: 256/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var Base64 = C_enc.Base64;\n\t    var C_algo = C.algo;\n\t    var EvpKDF = C_algo.EvpKDF;\n\n\t    /**\n\t     * Abstract base cipher template.\n\t     *\n\t     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t     */\n\t    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {WordArray} iv The IV to use for this operation.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Creates this cipher in encryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createEncryptor: function (key, cfg) {\n\t            return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Creates this cipher in decryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createDecryptor: function (key, cfg) {\n\t            return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created cipher.\n\t         *\n\t         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t         */\n\t        init: function (xformMode, key, cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Store transform mode and key\n\t            this._xformMode = xformMode;\n\t            this._key = key;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this cipher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     cipher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-cipher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Adds data to be encrypted or decrypted.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.process('data');\n\t         *     var encrypted = cipher.process(wordArray);\n\t         */\n\t        process: function (dataUpdate) {\n\t            // Append\n\t            this._append(dataUpdate);\n\n\t            // Process available blocks\n\t            return this._process();\n\t        },\n\n\t        /**\n\t         * Finalizes the encryption or decryption process.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after final processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.finalize();\n\t         *     var encrypted = cipher.finalize('data');\n\t         *     var encrypted = cipher.finalize(wordArray);\n\t         */\n\t        finalize: function (dataUpdate) {\n\t            // Final data update\n\t            if (dataUpdate) {\n\t                this._append(dataUpdate);\n\t            }\n\n\t            // Perform concrete-cipher logic\n\t            var finalProcessedData = this._doFinalize();\n\n\t            return finalProcessedData;\n\t        },\n\n\t        keySize: 128/32,\n\n\t        ivSize: 128/32,\n\n\t        _ENC_XFORM_MODE: 1,\n\n\t        _DEC_XFORM_MODE: 2,\n\n\t        /**\n\t         * Creates shortcut functions to a cipher's object interface.\n\t         *\n\t         * @param {Cipher} cipher The cipher to create a helper for.\n\t         *\n\t         * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t         */\n\t        _createHelper: (function () {\n\t            function selectCipherStrategy(key) {\n\t                if (typeof key == 'string') {\n\t                    return PasswordBasedCipher;\n\t                } else {\n\t                    return SerializableCipher;\n\t                }\n\t            }\n\n\t            return function (cipher) {\n\t                return {\n\t                    encrypt: function (message, key, cfg) {\n\t                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t                    },\n\n\t                    decrypt: function (ciphertext, key, cfg) {\n\t                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t                    }\n\t                };\n\t            };\n\t        }())\n\t    });\n\n\t    /**\n\t     * Abstract base stream cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t     */\n\t    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t        _doFinalize: function () {\n\t            // Process partial blocks\n\t            var finalProcessedBlocks = this._process(!!'flush');\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 1\n\t    });\n\n\t    /**\n\t     * Mode namespace.\n\t     */\n\t    var C_mode = C.mode = {};\n\n\t    /**\n\t     * Abstract base block cipher mode template.\n\t     */\n\t    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t        /**\n\t         * Creates this mode for encryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t         */\n\t        createEncryptor: function (cipher, iv) {\n\t            return this.Encryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Creates this mode for decryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t         */\n\t        createDecryptor: function (cipher, iv) {\n\t            return this.Decryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created mode.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t         */\n\t        init: function (cipher, iv) {\n\t            this._cipher = cipher;\n\t            this._iv = iv;\n\t        }\n\t    });\n\n\t    /**\n\t     * Cipher Block Chaining mode.\n\t     */\n\t    var CBC = C_mode.CBC = (function () {\n\t        /**\n\t         * Abstract base CBC mode.\n\t         */\n\t        var CBC = BlockCipherMode.extend();\n\n\t        /**\n\t         * CBC encryptor.\n\t         */\n\t        CBC.Encryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // XOR and encrypt\n\t                xorBlock.call(this, words, offset, blockSize);\n\t                cipher.encryptBlock(words, offset);\n\n\t                // Remember this block to use with next block\n\t                this._prevBlock = words.slice(offset, offset + blockSize);\n\t            }\n\t        });\n\n\t        /**\n\t         * CBC decryptor.\n\t         */\n\t        CBC.Decryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // Remember this block to use with next block\n\t                var thisBlock = words.slice(offset, offset + blockSize);\n\n\t                // Decrypt and XOR\n\t                cipher.decryptBlock(words, offset);\n\t                xorBlock.call(this, words, offset, blockSize);\n\n\t                // This block becomes the previous block\n\t                this._prevBlock = thisBlock;\n\t            }\n\t        });\n\n\t        function xorBlock(words, offset, blockSize) {\n\t            var block;\n\n\t            // Shortcut\n\t            var iv = this._iv;\n\n\t            // Choose mixing block\n\t            if (iv) {\n\t                block = iv;\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            } else {\n\t                block = this._prevBlock;\n\t            }\n\n\t            // XOR blocks\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= block[i];\n\t            }\n\t        }\n\n\t        return CBC;\n\t    }());\n\n\t    /**\n\t     * Padding namespace.\n\t     */\n\t    var C_pad = C.pad = {};\n\n\t    /**\n\t     * PKCS #5/7 padding strategy.\n\t     */\n\t    var Pkcs7 = C_pad.Pkcs7 = {\n\t        /**\n\t         * Pads data using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to pad.\n\t         * @param {number} blockSize The multiple that the data should be padded to.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t         */\n\t        pad: function (data, blockSize) {\n\t            // Shortcut\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count padding bytes\n\t            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t            // Create padding word\n\t            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t            // Create padding\n\t            var paddingWords = [];\n\t            for (var i = 0; i < nPaddingBytes; i += 4) {\n\t                paddingWords.push(paddingWord);\n\t            }\n\t            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t            // Add padding\n\t            data.concat(padding);\n\t        },\n\n\t        /**\n\t         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to unpad.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t         */\n\t        unpad: function (data) {\n\t            // Get number of padding bytes from last byte\n\t            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t            // Remove padding\n\t            data.sigBytes -= nPaddingBytes;\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract base block cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t     */\n\t    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Mode} mode The block mode to use. Default: CBC\n\t         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t         */\n\t        cfg: Cipher.cfg.extend({\n\t            mode: CBC,\n\t            padding: Pkcs7\n\t        }),\n\n\t        reset: function () {\n\t            var modeCreator;\n\n\t            // Reset cipher\n\t            Cipher.reset.call(this);\n\n\t            // Shortcuts\n\t            var cfg = this.cfg;\n\t            var iv = cfg.iv;\n\t            var mode = cfg.mode;\n\n\t            // Reset block mode\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                modeCreator = mode.createEncryptor;\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                modeCreator = mode.createDecryptor;\n\t                // Keep at least one block in the buffer for unpadding\n\t                this._minBufferSize = 1;\n\t            }\n\n\t            if (this._mode && this._mode.__creator == modeCreator) {\n\t                this._mode.init(this, iv && iv.words);\n\t            } else {\n\t                this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t                this._mode.__creator = modeCreator;\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (words, offset) {\n\t            this._mode.processBlock(words, offset);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var finalProcessedBlocks;\n\n\t            // Shortcut\n\t            var padding = this.cfg.padding;\n\n\t            // Finalize\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                // Pad data\n\t                padding.pad(this._data, this.blockSize);\n\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\n\t                // Unpad data\n\t                padding.unpad(finalProcessedBlocks);\n\t            }\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 128/32\n\t    });\n\n\t    /**\n\t     * A collection of cipher parameters.\n\t     *\n\t     * @property {WordArray} ciphertext The raw ciphertext.\n\t     * @property {WordArray} key The key to this ciphertext.\n\t     * @property {WordArray} iv The IV used in the ciphering operation.\n\t     * @property {WordArray} salt The salt used with a key derivation function.\n\t     * @property {Cipher} algorithm The cipher algorithm.\n\t     * @property {Mode} mode The block mode used in the ciphering operation.\n\t     * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t     * @property {number} blockSize The block size of the cipher.\n\t     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t     */\n\t    var CipherParams = C_lib.CipherParams = Base.extend({\n\t        /**\n\t         * Initializes a newly created cipher params object.\n\t         *\n\t         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n\t         *         ciphertext: ciphertextWordArray,\n\t         *         key: keyWordArray,\n\t         *         iv: ivWordArray,\n\t         *         salt: saltWordArray,\n\t         *         algorithm: CryptoJS.algo.AES,\n\t         *         mode: CryptoJS.mode.CBC,\n\t         *         padding: CryptoJS.pad.PKCS7,\n\t         *         blockSize: 4,\n\t         *         formatter: CryptoJS.format.OpenSSL\n\t         *     });\n\t         */\n\t        init: function (cipherParams) {\n\t            this.mixIn(cipherParams);\n\t        },\n\n\t        /**\n\t         * Converts this cipher params object to a string.\n\t         *\n\t         * @param {Format} formatter (Optional) The formatting strategy to use.\n\t         *\n\t         * @return {string} The stringified cipher params.\n\t         *\n\t         * @throws Error If neither the formatter nor the default formatter is set.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = cipherParams + '';\n\t         *     var string = cipherParams.toString();\n\t         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t         */\n\t        toString: function (formatter) {\n\t            return (formatter || this.formatter).stringify(this);\n\t        }\n\t    });\n\n\t    /**\n\t     * Format namespace.\n\t     */\n\t    var C_format = C.format = {};\n\n\t    /**\n\t     * OpenSSL formatting strategy.\n\t     */\n\t    var OpenSSLFormatter = C_format.OpenSSL = {\n\t        /**\n\t         * Converts a cipher params object to an OpenSSL-compatible string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The OpenSSL-compatible string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            var wordArray;\n\n\t            // Shortcuts\n\t            var ciphertext = cipherParams.ciphertext;\n\t            var salt = cipherParams.salt;\n\n\t            // Format\n\t            if (salt) {\n\t                wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t            } else {\n\t                wordArray = ciphertext;\n\t            }\n\n\t            return wordArray.toString(Base64);\n\t        },\n\n\t        /**\n\t         * Converts an OpenSSL-compatible string to a cipher params object.\n\t         *\n\t         * @param {string} openSSLStr The OpenSSL-compatible string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t         */\n\t        parse: function (openSSLStr) {\n\t            var salt;\n\n\t            // Parse base64\n\t            var ciphertext = Base64.parse(openSSLStr);\n\n\t            // Shortcut\n\t            var ciphertextWords = ciphertext.words;\n\n\t            // Test for salt\n\t            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t                // Extract salt\n\t                salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t                // Remove salt from ciphertext\n\t                ciphertextWords.splice(0, 4);\n\t                ciphertext.sigBytes -= 16;\n\t            }\n\n\t            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t         */\n\t        cfg: Base.extend({\n\t            format: OpenSSLFormatter\n\t        }),\n\n\t        /**\n\t         * Encrypts a message.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Encrypt\n\t            var encryptor = cipher.createEncryptor(key, cfg);\n\t            var ciphertext = encryptor.finalize(message);\n\n\t            // Shortcut\n\t            var cipherCfg = encryptor.cfg;\n\n\t            // Create and return serializable cipher params\n\t            return CipherParams.create({\n\t                ciphertext: ciphertext,\n\t                key: key,\n\t                iv: cipherCfg.iv,\n\t                algorithm: cipher,\n\t                mode: cipherCfg.mode,\n\t                padding: cipherCfg.padding,\n\t                blockSize: cipher.blockSize,\n\t                formatter: cfg.format\n\t            });\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Decrypt\n\t            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t            return plaintext;\n\t        },\n\n\t        /**\n\t         * Converts serialized ciphertext to CipherParams,\n\t         * else assumed CipherParams already and returns ciphertext unchanged.\n\t         *\n\t         * @param {CipherParams|string} ciphertext The ciphertext.\n\t         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t         *\n\t         * @return {CipherParams} The unserialized ciphertext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t         */\n\t        _parse: function (ciphertext, format) {\n\t            if (typeof ciphertext == 'string') {\n\t                return format.parse(ciphertext, this);\n\t            } else {\n\t                return ciphertext;\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Key derivation function namespace.\n\t     */\n\t    var C_kdf = C.kdf = {};\n\n\t    /**\n\t     * OpenSSL key derivation function.\n\t     */\n\t    var OpenSSLKdf = C_kdf.OpenSSL = {\n\t        /**\n\t         * Derives a key and IV from a password.\n\t         *\n\t         * @param {string} password The password to derive from.\n\t         * @param {number} keySize The size in words of the key to generate.\n\t         * @param {number} ivSize The size in words of the IV to generate.\n\t         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t         *\n\t         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t         */\n\t        execute: function (password, keySize, ivSize, salt, hasher) {\n\t            // Generate random salt\n\t            if (!salt) {\n\t                salt = WordArray.random(64/8);\n\t            }\n\n\t            // Derive key and IV\n\t            if (!hasher) {\n\t                var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t            } else {\n\t                var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t            }\n\n\n\t            // Separate key and IV\n\t            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t            key.sigBytes = keySize * 4;\n\n\t            // Return params\n\t            return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A serializable cipher wrapper that derives the key from a password,\n\t     * and returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t         */\n\t        cfg: SerializableCipher.cfg.extend({\n\t            kdf: OpenSSLKdf\n\t        }),\n\n\t        /**\n\t         * Encrypts a message using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Encrypt\n\t            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t            // Mix in derived params\n\t            ciphertext.mixIn(derivedParams);\n\n\t            return ciphertext;\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Decrypt\n\t            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t            return plaintext;\n\t        }\n\t    });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var MD5 = C_algo.MD5;\n\n\t    /**\n\t     * This key derivation function is meant to conform with EVP_BytesToKey.\n\t     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t     */\n\t    var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: MD5,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create();\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Derives a key from a password.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            var block;\n\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init hasher\n\t            var hasher = cfg.hasher.create();\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                if (block) {\n\t                    hasher.update(block);\n\t                }\n\t                block = hasher.update(password).finalize(salt);\n\t                hasher.reset();\n\n\t                // Iterations\n\t                for (var i = 1; i < iterations; i++) {\n\t                    block = hasher.finalize(block);\n\t                    hasher.reset();\n\t                }\n\n\t                derivedKey.concat(block);\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Derives a key from a password.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.EvpKDF(password, salt);\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.EvpKDF = function (password, salt, cfg) {\n\t        return EvpKDF.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-1 hash algorithm.\n\t     */\n\t    var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476,\n\t                0xc3d2e1f0\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\n\t            // Computation\n\t            for (var i = 0; i < 80; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t                    W[i] = (n << 1) | (n >>> 31);\n\t                }\n\n\t                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t                if (i < 20) {\n\t                    t += ((b & c) | (~b & d)) + 0x5a827999;\n\t                } else if (i < 40) {\n\t                    t += (b ^ c ^ d) + 0x6ed9eba1;\n\t                } else if (i < 60) {\n\t                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t                } else /* if (i < 80) */ {\n\t                    t += (b ^ c ^ d) - 0x359d3e2a;\n\t                }\n\n\t                e = d;\n\t                d = c;\n\t                c = (b << 30) | (b >>> 2);\n\t                b = a;\n\t                a = t;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA1('message');\n\t     *     var hash = CryptoJS.SHA1(wordArray);\n\t     */\n\t    C.SHA1 = Hasher._createHelper(SHA1);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA1(message, key);\n\t     */\n\t    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));"],"names":["CryptoJS","module","exports","C","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","d","i","x","xi","sx","x2","x4","x8","t","RCON","AES","extend","_doReset","this","_nRounds","_keyPriorReset","_key","key","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","offset","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","round","t0","t1","t2","t3","_createHelper","C_lib","Base","WordArray","BufferedBlockAlgorithm","C_enc","Base64","EvpKDF","Cipher","C_mode","BlockCipherMode","CBC","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","enc","Utf8","cfg","createEncryptor","create","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","init","xformMode","_xformMode","reset","call","process","dataUpdate","_append","_process","finalize","_doFinalize","ivSize","selectCipherStrategy","cipher","encrypt","message","decrypt","ciphertext","StreamCipher","blockSize","mode","iv","Encryptor","Decryptor","_cipher","_iv","xorBlock","block","_prevBlock","processBlock","slice","thisBlock","pad","data","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","push","padding","concat","unpad","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","toString","formatter","stringify","format","OpenSSL","salt","parse","openSSLStr","ciphertextWords","splice","encryptor","cipherCfg","algorithm","_parse","kdf","execute","password","hasher","random","compute","derivedParams","wordArray","map","_map","clamp","base64Chars","triplet","j","charAt","paddingChar","length","join","base64Str","base64StrLength","reverseMap","_reverseMap","charCodeAt","paddingIndex","indexOf","nBytes","bitsCombined","parseLoop","MD5","iterations","derivedKey","derivedKeyWords","update","HMAC","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","clone","iKey","_iKey","oKeyWords","iKeyWords","messageUpdate","innerHash","Math","Hasher","T","abs","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","a","b","c","FF","GG","HH","II","dataWords","nBitsTotal","_nDataBytes","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","hash","H_i","s","n","HmacMD5","_createHmacHelper","W","SHA1","e","HmacSHA1"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9870.f395e633.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,2 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9870],{59870:(e,t,n)=>{n.r(t),n.d(t,{bufferToString:()=>s,parseCsvBuffer:()=>u,parseTsvBuffer:()=>i});var r=n(99546);function s(e){return new TextDecoder("utf8",{fatal:!0}).decode(e)}async function o(e,t={}){return(await n.e(2847).then(n.t.bind(n,82847,23)).then((e=>e.default)))({noheader:!0,output:"csv",...t}).fromString(s(e))}function a(e,t,n){const s=e.rows[0].cells[t].text||"";let o,a="Text";try{o=(0,r.parseLocString)(s,n)}catch(e){}return o?.refName&&"number"==typeof o.start?a="LocString":/^\d+(\.\d+)?$/.test(s)&&(a="Number"),a}function c(e,t={}){const{hasColumnNameLine:n=!1,columnNameLineNumber:s=1,isValidRefName:o=()=>!1,selectedAssemblyName:c}=t;let u=0;const i={isLoaded:!0,rows:e.map(((e,t)=>{const r=t+(n?0:1);return e.length>u&&(u=e.length),{id:String(r),cells:e.map(((e,t)=>({columnNumber:t,text:e})))}}))},l={};if(n&&void 0!==s){const[e]=i.rows.splice(s-1,1);e&&e.cells.forEach(((e,t)=>{l[t]=e.text||""}))}const f=[],m=[];for(let e=0;e<u;e+=1){m.push(e);const t=a(i,e,o);if("LocString"===t)for(const t of i.rows){const n=t.cells[e];n.extendedData=(0,r.parseLocString)(n.text,o)}f[e]={name:l[e],dataType:{type:t}}}return{rowSet:i,columnDisplayOrder:m,hasColumnNames:!!n,columns:f,assemblyName:c}}async function u(e,t){return c(await o(e),t)}async function i(e,t){return c(await o(e,{delimiter:"\t"}),t)}}}]);
+//# sourceMappingURL=9870.f395e633.chunk.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9870.f395e633.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/9870.f395e633.chunk.js","mappings":"uNAGO,SAASA,EAAeC,GAC7B,OAAO,IAAIC,YAAY,OAAQ,CAAEC,OAAO,IAAQC,OAAOH,EACzD,CAEAI,eAAeC,EAAUL,EAAgBM,EAAU,CAAC,GAElD,aADkB,qCAAoBC,MAAKC,GAAUA,EAAOC,WACjD,CAAEC,UAAU,EAAMC,OAAQ,SAAUL,IAAWM,WACxDb,EAAeC,GAEnB,CAgCA,SAASa,EACPC,EACAC,EACAC,GAEA,MAAMC,EAAOH,EAAOI,KAAK,GAAIC,MAAMJ,GAAeE,MAAQ,GAE1D,IAEIG,EAFAC,EAAc,OAGlB,IACED,GAAYE,EAAAA,EAAAA,gBAAeL,EAAMD,EACnC,CAAE,MAAOO,GACP,CAWF,OATIH,GAAWI,SAAsC,iBAApBJ,EAAUK,MACzCJ,EAAc,YACL,gBAAgBK,KAAKT,KAC9BI,EAAc,UAMTA,CACT,CAEA,SAASM,EACPT,EACAZ,EAAwB,CAAC,GAEzB,MAAM,kBACJsB,GAAoB,EAAK,qBACzBC,EAAuB,EAAC,eACxBb,EAAiBA,KAAM,EAAK,qBAC5Bc,GACExB,EAGJ,IAAIyB,EAAU,EACd,MAAMjB,EAAiB,CACrBkB,UAAU,EACVd,KAAMA,EAAKe,KAAI,CAACC,EAAKC,KACnB,MAAMC,EAAKD,GAAaP,EAAoB,EAAI,GAIhD,OAHIM,EAAIG,OAASN,IACfA,EAAUG,EAAIG,QAET,CACLD,GAAIE,OAAOF,GACXjB,MAAOe,EAAID,KAAI,CAAChB,EAAMF,KACb,CAAEA,eAAcE,WAE1B,KAKCsB,EAAsC,CAAC,EAE7C,GAAIX,QAA8CY,IAAzBX,EAAoC,CAC3D,MAAOY,GAAe3B,EAAOI,KAAKwB,OAAOb,EAAuB,EAAG,GAE/DY,GACFA,EAAYtB,MAAMwB,SAAQ,CAACC,EAAM7B,KAC/BwB,EAAYxB,GAAgB6B,EAAK3B,MAAQ,EAAE,GAGjD,CAGA,MAAM4B,EAAoB,GACpBC,EAAqB,GAC3B,IAAK,IAAI/B,EAAe,EAAGA,EAAegB,EAAShB,GAAgB,EAAG,CACpE+B,EAAmBC,KAAKhC,GACxB,MAAMM,EAAcR,EAAgBC,EAAQC,EAAcC,GAG1D,GAAoB,cAAhBK,EACF,IAAK,MAAMa,KAAOpB,EAAOI,KAAM,CAC7B,MAAM0B,EAAOV,EAAIf,MAAMJ,GACvB6B,EAAKI,cAAe1B,EAAAA,EAAAA,gBAAesB,EAAK3B,KAAMD,EAChD,CAGF6B,EAAQ9B,GAAgB,CACtBkC,KAAMV,EAAYxB,GAClBmC,SAAU,CACRC,KAAM9B,GAGZ,CAEA,MAAO,CACLP,SACAgC,qBACAM,iBAAkBxB,EAClBiB,UACAQ,aAAcvB,EAElB,CAEO1B,eAAekD,EAAetD,EAAgBM,GAEnD,OAAOqB,QADYtB,EAAUL,GACUM,EACzC,CAEOF,eAAemD,EAAevD,EAAgBM,GAEnD,OAAOqB,QADYtB,EAAUL,EAAQ,CAAEwD,UAAW,OACXlD,EACzC,C","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/ImportUtils.ts"],"sourcesContent":["import { ParsedLocString, parseLocString } from '@jbrowse/core/util'\nimport type { Buffer } from 'buffer'\n\nexport function bufferToString(buffer: Buffer) {\n  return new TextDecoder('utf8', { fatal: true }).decode(buffer)\n}\n\nasync function parseWith(buffer: Buffer, options = {}) {\n  const csv = await import('csvtojson').then(module => module.default)\n  return csv({ noheader: true, output: 'csv', ...options }).fromString(\n    bufferToString(buffer),\n  )\n}\n\nexport interface Row {\n  id: string\n\n  extendedData?: any\n  cells: {\n    text: string\n\n    extendedData?: any\n  }[]\n}\n\nexport interface RowSet {\n  isLoaded: boolean\n  rows: Row[]\n}\n\nexport interface ParseOptions {\n  hasColumnNameLine?: boolean\n  columnNameLineNumber?: number\n  selectedAssemblyName?: string\n  isValidRefName?: (refName: string, assemblyName?: string) => boolean\n}\n\nexport interface Column {\n  name: string\n  dataType: { type: string }\n  isDerived?: boolean\n  derivationFunctionText?: string\n}\n\nfunction guessColumnType(\n  rowSet: RowSet,\n  columnNumber: number,\n  isValidRefName: (refName: string, assemblyName?: string) => boolean,\n) {\n  const text = rowSet.rows[0]!.cells[columnNumber]!.text || ''\n\n  let guessedType = 'Text'\n\n  let parsedLoc: ParsedLocString | undefined\n  try {\n    parsedLoc = parseLocString(text, isValidRefName)\n  } catch (error) {\n    //\n  }\n  if (parsedLoc?.refName && typeof parsedLoc.start === 'number') {\n    guessedType = 'LocString'\n  } else if (/^\\d+(\\.\\d+)?$/.test(text)) {\n    guessedType = 'Number'\n  }\n\n  // MAYBE TODO: iterate over the rest of the rows to confirm\n  // the type for all the rows\n\n  return guessedType\n}\n\nfunction dataToSpreadsheetSnapshot(\n  rows: string[][],\n  options: ParseOptions = {},\n) {\n  const {\n    hasColumnNameLine = false,\n    columnNameLineNumber = 1,\n    isValidRefName = () => false,\n    selectedAssemblyName,\n  } = options\n  // rows is an array of row objects and columnNames\n  // is an array of column names (in import order)\n  let maxCols = 0\n  const rowSet: RowSet = {\n    isLoaded: true,\n    rows: rows.map((row, rowNumber) => {\n      const id = rowNumber + (hasColumnNameLine ? 0 : 1)\n      if (row.length > maxCols) {\n        maxCols = row.length\n      }\n      return {\n        id: String(id),\n        cells: row.map((text, columnNumber) => {\n          return { columnNumber, text }\n        }),\n      }\n    }),\n  }\n\n  // process the column names row if present\n  const columnNames: Record<string, string> = {}\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (hasColumnNameLine && columnNameLineNumber !== undefined) {\n    const [colNamesRow] = rowSet.rows.splice(columnNameLineNumber - 1, 1)\n\n    if (colNamesRow) {\n      colNamesRow.cells.forEach((cell, columnNumber) => {\n        columnNames[columnNumber] = cell.text || ''\n      })\n    }\n  }\n\n  // make our column definitions\n  const columns: Column[] = []\n  const columnDisplayOrder = []\n  for (let columnNumber = 0; columnNumber < maxCols; columnNumber += 1) {\n    columnDisplayOrder.push(columnNumber)\n    const guessedType = guessColumnType(rowSet, columnNumber, isValidRefName)\n\n    // store extendeddata for LocString column\n    if (guessedType === 'LocString') {\n      for (const row of rowSet.rows) {\n        const cell = row.cells[columnNumber]!\n        cell.extendedData = parseLocString(cell.text, isValidRefName)\n      }\n    }\n\n    columns[columnNumber] = {\n      name: columnNames[columnNumber]!,\n      dataType: {\n        type: guessedType,\n      },\n    }\n  }\n\n  return {\n    rowSet,\n    columnDisplayOrder,\n    hasColumnNames: !!hasColumnNameLine,\n    columns,\n    assemblyName: selectedAssemblyName,\n  }\n}\n\nexport async function parseCsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer)\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n\nexport async function parseTsvBuffer(buffer: Buffer, options?: ParseOptions) {\n  const rows = await parseWith(buffer, { delimiter: '\\t' })\n  return dataToSpreadsheetSnapshot(rows, options)\n}\n"],"names":["bufferToString","buffer","TextDecoder","fatal","decode","async","parseWith","options","then","module","default","noheader","output","fromString","guessColumnType","rowSet","columnNumber","isValidRefName","text","rows","cells","parsedLoc","guessedType","parseLocString","error","refName","start","test","dataToSpreadsheetSnapshot","hasColumnNameLine","columnNameLineNumber","selectedAssemblyName","maxCols","isLoaded","map","row","rowNumber","id","length","String","columnNames","undefined","colNamesRow","splice","forEach","cell","columns","columnDisplayOrder","push","extendedData","name","dataType","type","hasColumnNames","assemblyName","parseCsvBuffer","parseTsvBuffer","delimiter"],"sourceRoot":""}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/9943.d3ab0f18.chunk.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+"use strict";(globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[]).push([[9943],{29943:(e,l,s)=>{s.r(l),s.d(l,{default:()=>a.A,filledInputClasses:()=>b.A,getFilledInputUtilityClass:()=>b.N});var a=s(29287),b=s(25075)}}]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/main.1532dd54.js	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,30 @@
+/*! For license information please see main.1532dd54.js.LICENSE.txt */
+(()=>{"use strict";var e,t,n,r,a={25122:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(7552),a=n(59705);function o(){return r.createElement(a.A,{disableShrink:!0,style:{position:"fixed",top:"50%",left:"50%",marginTop:-25,marginLeft:-25},size:50})}},85120:(e,t,n)=>{n.d(t,{A:()=>re});var r=n(73123),a=Math.abs,o=String.fromCharCode,l=Object.assign;function i(e){return e.trim()}function u(e,t,n){return e.replace(t,n)}function s(e,t){return e.indexOf(t)}function c(e,t){return 0|e.charCodeAt(t)}function f(e,t,n){return e.slice(t,n)}function d(e){return e.length}function p(e){return e.length}function m(e,t){return t.push(e),e}var h=1,g=1,y=0,b=0,v=0,k="";function w(e,t,n,r,a,o,l){return{value:e,root:t,parent:n,type:r,props:a,children:o,line:h,column:g,length:l,return:""}}function S(e,t){return l(w("",null,null,"",null,null,0),e,{length:-e.length},t)}function x(){return v=b>0?c(k,--b):0,g--,10===v&&(g=1,h--),v}function C(){return v=b<y?c(k,b++):0,g++,10===v&&(g=1,h++),v}function A(){return c(k,b)}function E(){return b}function _(e,t){return f(k,e,t)}function P(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function T(e){return h=g=1,y=d(k=e),b=0,[]}function N(e){return k="",e}function O(e){return i(_(b-1,L(91===e?e+2:40===e?e+1:e)))}function $(e){for(;(v=A())&&v<33;)C();return P(e)>2||P(v)>3?"":" "}function z(e,t){for(;--t&&C()&&!(v<48||v>102||v>57&&v<65||v>70&&v<97););return _(e,E()+(t<6&&32==A()&&32==C()))}function L(e){for(;C();)switch(v){case e:return b;case 34:case 39:34!==e&&39!==e&&L(v);break;case 40:41===e&&L(e);break;case 92:C()}return b}function M(e,t){for(;C()&&e+v!==57&&(e+v!==84||47!==A()););return"/*"+_(t,b-1)+"*"+o(47===e?e:C())}function R(e){for(;!P(A());)C();return _(e,b)}var I="-ms-",F="-moz-",j="-webkit-",D="comm",B="rule",U="decl",W="@keyframes";function H(e,t){for(var n="",r=p(e),a=0;a<r;a++)n+=t(e[a],a,e,t)||"";return n}function V(e,t,n,r){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case U:return e.return=e.return||e.value;case D:return"";case W:return e.return=e.value+"{"+H(e.children,r)+"}";case B:e.value=e.props.join(",")}return d(n=H(e.children,r))?e.return=e.value+"{"+n+"}":""}function Q(e){return N(K("",null,null,null,[""],e=T(e),0,[0],e))}function K(e,t,n,r,a,l,i,f,p){for(var h=0,g=0,y=i,b=0,v=0,k=0,w=1,S=1,_=1,P=0,T="",N=a,L=l,I=r,F=T;S;)switch(k=P,P=C()){case 40:if(108!=k&&58==c(F,y-1)){-1!=s(F+=u(O(P),"&","&\f"),"&\f")&&(_=-1);break}case 34:case 39:case 91:F+=O(P);break;case 9:case 10:case 13:case 32:F+=$(k);break;case 92:F+=z(E()-1,7);continue;case 47:switch(A()){case 42:case 47:m(Y(M(C(),E()),t,n),p);break;default:F+="/"}break;case 123*w:f[h++]=d(F)*_;case 125*w:case 59:case 0:switch(P){case 0:case 125:S=0;case 59+g:-1==_&&(F=u(F,/\f/g,"")),v>0&&d(F)-y&&m(v>32?G(F+";",r,n,y-1):G(u(F," ","")+";",r,n,y-2),p);break;case 59:F+=";";default:if(m(I=q(F,t,n,h,g,a,f,T,N=[],L=[],y),l),123===P)if(0===g)K(F,t,I,I,N,l,y,f,L);else switch(99===b&&110===c(F,3)?100:b){case 100:case 108:case 109:case 115:K(e,I,I,r&&m(q(e,I,I,0,0,a,f,T,a,N=[],y),L),a,L,y,f,r?N:L);break;default:K(F,I,I,I,[""],L,0,f,L)}}h=g=v=0,w=_=1,T=F="",y=i;break;case 58:y=1+d(F),v=k;default:if(w<1)if(123==P)--w;else if(125==P&&0==w++&&125==x())continue;switch(F+=o(P),P*w){case 38:_=g>0?1:(F+="\f",-1);break;case 44:f[h++]=(d(F)-1)*_,_=1;break;case 64:45===A()&&(F+=O(C())),b=A(),g=y=d(T=F+=R(E())),P++;break;case 45:45===k&&2==d(F)&&(w=0)}}return l}function q(e,t,n,r,o,l,s,c,d,m,h){for(var g=o-1,y=0===o?l:[""],b=p(y),v=0,k=0,S=0;v<r;++v)for(var x=0,C=f(e,g+1,g=a(k=s[v])),A=e;x<b;++x)(A=i(k>0?y[x]+" "+C:u(C,/&\f/g,y[x])))&&(d[S++]=A);return w(e,t,n,0===o?B:c,d,m,h)}function Y(e,t,n){return w(e,t,n,D,o(v),f(e,2,-2),0)}function G(e,t,n,r){return w(e,t,n,U,f(e,0,r),f(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,a=0;r=a,a=A(),38===r&&12===a&&(t[n]=1),!P(a);)C();return _(e,b)},J=new WeakMap,Z=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||J.get(n))&&!r){J.set(e,!0);for(var a=[],l=function(e,t){return N(function(e,t){var n=-1,r=44;do{switch(P(r)){case 0:38===r&&12===A()&&(t[n]=1),e[n]+=X(b-1,t,n);break;case 2:e[n]+=O(r);break;case 4:if(44===r){e[++n]=58===A()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=o(r)}}while(r=C());return e}(T(e),t))}(t,a),i=n.props,u=0,s=0;u<l.length;u++)for(var c=0;c<i.length;c++,s++)e.props[s]=a[u]?l[u].replace(/&\f/g,i[c]):i[c]+" "+l[u]}}},ee=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function te(e,t){switch(function(e,t){return 45^c(e,0)?(((t<<2^c(e,0))<<2^c(e,1))<<2^c(e,2))<<2^c(e,3):0}(e,t)){case 5103:return j+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return j+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return j+e+F+e+I+e+e;case 6828:case 4268:return j+e+I+e+e;case 6165:return j+e+I+"flex-"+e+e;case 5187:return j+e+u(e,/(\w+).+(:[^]+)/,j+"box-$1$2"+I+"flex-$1$2")+e;case 5443:return j+e+I+"flex-item-"+u(e,/flex-|-self/,"")+e;case 4675:return j+e+I+"flex-line-pack"+u(e,/align-content|flex-|-self/,"")+e;case 5548:return j+e+I+u(e,"shrink","negative")+e;case 5292:return j+e+I+u(e,"basis","preferred-size")+e;case 6060:return j+"box-"+u(e,"-grow","")+j+e+I+u(e,"grow","positive")+e;case 4554:return j+u(e,/([^-])(transform)/g,"$1"+j+"$2")+e;case 6187:return u(u(u(e,/(zoom-|grab)/,j+"$1"),/(image-set)/,j+"$1"),e,"")+e;case 5495:case 3959:return u(e,/(image-set\([^]*)/,j+"$1$`$1");case 4968:return u(u(e,/(.+:)(flex-)?(.*)/,j+"box-pack:$3"+I+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+j+e+e;case 4095:case 3583:case 4068:case 2532:return u(e,/(.+)-inline(.+)/,j+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(d(e)-1-t>6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return u(e,/(.+:)(.+)-([^]+)/,"$1"+j+"$2-$3$1"+F+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~s(e,"stretch")?te(u(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,d(e)-3-(~s(e,"!important")&&10))){case 107:return u(e,":",":"+j)+e;case 101:return u(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+j+(45===c(e,14)?"inline-":"")+"box$3$1"+j+"$2$3$1"+I+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return j+e+I+u(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return j+e+I+u(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return j+e+I+u(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return j+e+I+e+e}return e}var ne=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=te(e.value,e.length);break;case W:return H([S(e,{value:u(e.value,"@","@"+j)})],r);case B:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return H([S(e,{props:[u(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return H([S(e,{props:[u(t,/:(plac\w+)/,":"+j+"input-$1")]}),S(e,{props:[u(t,/:(plac\w+)/,":-moz-$1")]}),S(e,{props:[u(t,/:(plac\w+)/,I+"input-$1")]})],r)}return""}))}}],re=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var a,o,l=e.stylisPlugins||ne,i={},u=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)i[t[n]]=!0;u.push(e)}));var s,c,f,d,m=[V,(d=function(e){s.insert(e)},function(e){e.root||(e=e.return)&&d(e)})],h=(c=[Z,ee].concat(l,m),f=p(c),function(e,t,n,r){for(var a="",o=0;o<f;o++)a+=c[o](e,t,n,r)||"";return a});o=function(e,t,n,r){s=n,H(Q(e?e+"{"+t.styles+"}":t.styles),h),r&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new r.v({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:o};return g.sheet.hydrate(u),g}},39389:(e,t,n)=>{function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{A:()=>r})},90722:(e,t,n)=>{n.d(t,{C:()=>l,T:()=>s,_:()=>i,w:()=>u});var r=n(7552),a=n(85120),o=(n(53760),n(20387),r.createContext("undefined"!=typeof HTMLElement?(0,a.A)({key:"css"}):null)),l=o.Provider,i=function(){return(0,r.useContext)(o)},u=function(e){return(0,r.forwardRef)((function(t,n){var a=(0,r.useContext)(o);return e(t,a,n)}))},s=r.createContext({})},64761:(e,t,n)=>{n.d(t,{AH:()=>s,i7:()=>c,mL:()=>u});var r=n(90722),a=n(7552),o=n(92005),l=n(20387),i=n(53760),u=(n(85120),n(806),(0,r.w)((function(e,t){var n=e.styles,u=(0,i.J)([n],void 0,a.useContext(r.T)),s=a.useRef();return(0,l.i)((function(){var e=t.key+"-global",n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),r=!1,a=document.querySelector('style[data-emotion="'+e+" "+u.name+'"]');return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),null!==a&&(r=!0,a.setAttribute("data-emotion",e),n.hydrate([a])),s.current=[n,r],function(){n.flush()}}),[t]),(0,l.i)((function(){var e=s.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==u.next&&(0,o.sk)(t,u.next,!0),n.tags.length){var r=n.tags[n.tags.length-1].nextElementSibling;n.before=r,n.flush()}t.insert("",u,n,!1)}}),[t,u.name]),null})));function s(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.J)(t)}var c=function(){var e=s.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}},53760:(e,t,n)=>{n.d(t,{J:()=>g});var r={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},a=n(39389),o=!1,l=/[A-Z]|^ms/g,i=/_EMO_([^_]+?)_([^]*?)_EMO_/g,u=function(e){return 45===e.charCodeAt(1)},s=function(e){return null!=e&&"boolean"!=typeof e},c=(0,a.A)((function(e){return u(e)?e:e.replace(l,"-$&").toLowerCase()})),f=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(i,(function(e,t,n){return m={name:t,styles:n,next:m},t}))}return 1===r[e]||u(e)||"number"!=typeof t||0===t?t:t+"px"},d="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function p(e,t,n){if(null==n)return"";var r=n;if(void 0!==r.__emotion_styles)return r;switch(typeof n){case"boolean":return"";case"object":var a=n;if(1===a.anim)return m={name:a.name,styles:a.styles,next:m},a.name;var l=n;if(void 0!==l.styles){var i=l.next;if(void 0!==i)for(;void 0!==i;)m={name:i.name,styles:i.styles,next:m},i=i.next;return l.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a<n.length;a++)r+=p(e,t,n[a])+";";else for(var l in n){var i=n[l];if("object"!=typeof i){var u=i;null!=t&&void 0!==t[u]?r+=l+"{"+t[u]+"}":s(u)&&(r+=c(l)+":"+f(l,u)+";")}else{if("NO_COMPONENT_SELECTOR"===l&&o)throw new Error(d);if(!Array.isArray(i)||"string"!=typeof i[0]||null!=t&&void 0!==t[i[0]]){var m=p(e,t,i);switch(l){case"animation":case"animationName":r+=c(l)+":"+m+";";break;default:r+=l+"{"+m+"}"}}else for(var h=0;h<i.length;h++)s(i[h])&&(r+=c(l)+":"+f(l,i[h])+";")}}return r}(e,t,n);case"function":if(void 0!==e){var u=m,h=n(e);return m=u,p(e,t,h)}}var g=n;if(null==t)return g;var y=t[g];return void 0!==y?y:g}var m,h=/label:\s*([^\s;\n{]+)\s*(;|$)/g;function g(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var r=!0,a="";m=void 0;var o=e[0];null==o||void 0===o.raw?(r=!1,a+=p(n,t,o)):a+=o[0];for(var l=1;l<e.length;l++)a+=p(n,t,e[l]),r&&(a+=o[l]);h.lastIndex=0;for(var i,u="";null!==(i=h.exec(a));)u+="-"+i[1];var s=function(e){for(var t,n=0,r=0,a=e.length;a>=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+u;return{name:s,styles:a,next:m}}},73123:(e,t,n)=>{n.d(t,{v:()=>r});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(e){}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)})),this.tags=[],this.ctr=0},e}()},20387:(e,t,n)=>{var r;n.d(t,{i:()=>i,s:()=>l});var a=n(7552),o=!!(r||(r=n.t(a,2))).useInsertionEffect&&(r||(r=n.t(a,2))).useInsertionEffect,l=o||function(e){return e()},i=o||a.useLayoutEffect},92005:(e,t,n)=>{function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}n.d(t,{Rk:()=>r,SF:()=>a,sk:()=>o});var a=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},o=function(e,t,n){a(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},59705:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(7552),a=n(93878),o=n(70799),l=n(64761),i=n(51148),u=n(60129),s=n(4785),c=n(15622),f=n(58520),d=n(72489),p=n(69500);const m=l.i7`
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+`,h=l.i7`
+  0% {
+    stroke-dasharray: 1px, 200px;
+    stroke-dashoffset: 0;
+  }
+
+  50% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -15px;
+  }
+
+  100% {
+    stroke-dasharray: 100px, 200px;
+    stroke-dashoffset: -125px;
+  }
+`,g="string"!=typeof m?l.AH`
+        animation: ${m} 1.4s linear infinite;
+      `:null,y="string"!=typeof h?l.AH`
+        animation: ${h} 1.4s ease-in-out infinite;
+      `:null,b=(0,i.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`color${(0,c.A)(n.color)}`]]}})((0,u.A)((({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:g||{animation:`${m} 1.4s linear infinite`}},...Object.entries(e.palette).filter((0,f.A)()).map((([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})))]})))),v=(0,i.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,i.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t[`circle${(0,c.A)(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})((0,u.A)((({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:y||{animation:`${h} 1.4s ease-in-out infinite`}}]})))),w=r.forwardRef((function(e,t){const n=(0,s.b)({props:e,name:"MuiCircularProgress"}),{className:r,color:l="primary",disableShrink:i=!1,size:u=40,style:f,thickness:m=3.6,value:h=0,variant:g="indeterminate",...y}=n,w={...n,color:l,disableShrink:i,size:u,thickness:m,value:h,variant:g},S=(e=>{const{classes:t,variant:n,color:r,disableShrink:a}=e,l={root:["root",n,`color${(0,c.A)(r)}`],svg:["svg"],circle:["circle",`circle${(0,c.A)(n)}`,a&&"circleDisableShrink"]};return(0,o.A)(l,d.b,t)})(w),x={},C={},A={};if("determinate"===g){const e=2*Math.PI*((44-m)/2);x.strokeDasharray=e.toFixed(3),A["aria-valuenow"]=Math.round(h),x.strokeDashoffset=`${((100-h)/100*e).toFixed(3)}px`,C.transform="rotate(-90deg)"}return(0,p.jsx)(b,{className:(0,a.A)(S.root,r),style:{width:u,height:u,...C,...f},ownerState:w,ref:t,role:"progressbar",...A,...y,children:(0,p.jsx)(v,{className:S.svg,ownerState:w,viewBox:"22 22 44 44",children:(0,p.jsx)(k,{className:S.circle,style:x,ownerState:w,cx:44,cy:44,r:(44-m)/2,fill:"none",strokeWidth:m})})})}))},72489:(e,t,n)=>{n.d(t,{A:()=>l,b:()=>o});var r=n(33761),a=n(85693);function o(e){return(0,a.Ay)("MuiCircularProgress",e)}const l=(0,r.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"])},4785:(e,t,n)=>{n.d(t,{b:()=>a}),n(7552);var r=n(53173);function a(e){return(0,r.b)(e)}n(69500)},46033:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"}},53954:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"}},55194:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"}},37231:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"}},8998:(e,t,n)=>{n.d(t,{A:()=>r});const r={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"}},21699:(e,t,n)=>{n.d(t,{Ay:()=>u,Qw:()=>i,UL:()=>l});var r=n(4705),a=n(28875);const o=[...Array(25)].map(((e,t)=>{if(0===t)return"none";const n=(0,a.A)(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`}));function l(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function i(e){return"dark"===e?o:[]}function u(e){const{palette:t={mode:"light"},opacity:n,overlays:a,...o}=e,u=(0,r.Ay)(t);return{palette:u,opacity:{...l(u.mode),...n},overlays:a||i(u.mode),...o}}},90841:(e,t,n)=>{function r(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}n.d(t,{A:()=>r})},4705:(e,t,n)=>{n.d(t,{Ay:()=>y});var r=n(51569),a=n(78745),o=n(72639);const l={black:"#000",white:"#fff"};var i=n(55194);const u={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"};var s=n(8998),c=n(37231),f=n(46033);const d={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"};var p=n(53954);const m={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:l.white,default:l.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},h={text:{primary:l.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:l.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function g(e,t,n,r){const a=r.light||r,l=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,o.a)(e.main,a):"dark"===t&&(e.dark=(0,o.e$)(e.main,l)))}function y(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:y=.2,...b}=e,v=e.primary||function(e="light"){return"dark"===e?{main:f.A[200],light:f.A[50],dark:f.A[400]}:{main:f.A[700],light:f.A[400],dark:f.A[800]}}(t),k=e.secondary||function(e="light"){return"dark"===e?{main:u[200],light:u[50],dark:u[400]}:{main:u[500],light:u[300],dark:u[700]}}(t),w=e.error||function(e="light"){return"dark"===e?{main:s.A[500],light:s.A[300],dark:s.A[700]}:{main:s.A[700],light:s.A[400],dark:s.A[800]}}(t),S=e.info||function(e="light"){return"dark"===e?{main:d[400],light:d[300],dark:d[700]}:{main:d[700],light:d[500],dark:d[900]}}(t),x=e.success||function(e="light"){return"dark"===e?{main:p.A[400],light:p.A[300],dark:p.A[700]}:{main:p.A[800],light:p.A[500],dark:p.A[900]}}(t),C=e.warning||function(e="light"){return"dark"===e?{main:c.A[400],light:c.A[300],dark:c.A[700]}:{main:"#ed6c02",light:c.A[500],dark:c.A[900]}}(t);function A(e){return(0,o.eM)(e,h.text.primary)>=n?h.text.primary:m.text.primary}const E=({color:e,name:t,mainShade:n=500,lightShade:a=300,darkShade:o=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error((0,r.A)(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error((0,r.A)(12,t?` (${t})`:"",JSON.stringify(e.main)));return g(e,"light",a,y),g(e,"dark",o,y),e.contrastText||(e.contrastText=A(e.main)),e},_={dark:h,light:m};return(0,a.A)({common:{...l},mode:t,primary:E({color:v,name:"primary"}),secondary:E({color:k,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:E({color:w,name:"error"}),warning:E({color:C,name:"warning"}),info:E({color:S,name:"info"}),success:E({color:x,name:"success"}),grey:i.A,contrastThreshold:n,getContrastText:A,augmentColor:E,tonalOffset:y,..._[t]},b)}},89022:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(4705),a=n(17405),o=n(86501);function l(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:(0,r.Ay)({...!0===n?{}:n.palette,mode:t})})}function i(e={},...t){const{palette:n,cssVariables:r=!1,colorSchemes:i=(n?void 0:{light:!0}),defaultColorScheme:u=n?.mode,...s}=e,c=u||"light",f=i?.[c],d={...i,...n?{[c]:{..."boolean"!=typeof f&&f,palette:n}}:void 0};if(!1===r){if(!("colorSchemes"in e))return(0,o.A)(e,...t);let r=n;"palette"in e||d[c]&&(!0!==d[c]?r=d[c].palette:"dark"===c&&(r={mode:"dark"}));const a=(0,o.A)({...e,palette:r},...t);return a.defaultColorScheme=c,a.colorSchemes=d,"light"===a.palette.mode&&(a.colorSchemes.light={...!0!==d.light&&d.light,palette:a.palette},l(a,"dark",d.dark)),"dark"===a.palette.mode&&(a.colorSchemes.dark={...!0!==d.dark&&d.dark,palette:a.palette},l(a,"light",d.light)),a}return n||"light"in d||"light"!==c||(d.light=!0),(0,a.A)({...s,colorSchemes:d,defaultColorScheme:c,..."boolean"!=typeof r&&r},...t)}},86501:(e,t,n)=>{n.d(t,{D:()=>g,A:()=>y});var r=n(51569),a=n(78745),o=n(94177),l=n(76795),i=n(72861),u=n(90841),s=n(4705),c=n(34558);function f(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const d=["none",f(0,2,1,-1,0,1,1,0,0,1,3,0),f(0,3,1,-2,0,2,2,0,0,1,5,0),f(0,3,3,-2,0,3,4,0,0,1,8,0),f(0,2,4,-1,0,4,5,0,0,1,10,0),f(0,3,5,-1,0,5,8,0,0,1,14,0),f(0,3,5,-1,0,6,10,0,0,1,18,0),f(0,4,5,-2,0,7,10,1,0,2,16,1),f(0,5,5,-3,0,8,10,1,0,3,14,2),f(0,5,6,-3,0,9,12,1,0,3,16,2),f(0,6,6,-3,0,10,14,1,0,4,18,3),f(0,6,7,-4,0,11,15,1,0,4,20,3),f(0,7,8,-4,0,12,17,2,0,5,22,4),f(0,7,8,-4,0,13,19,2,0,5,24,4),f(0,7,9,-4,0,14,21,2,0,5,26,4),f(0,8,9,-5,0,15,22,2,0,6,28,5),f(0,8,10,-5,0,16,24,2,0,6,30,5),f(0,8,11,-5,0,17,26,2,0,6,32,5),f(0,9,11,-5,0,18,28,2,0,7,34,6),f(0,9,12,-6,0,19,29,2,0,7,36,6),f(0,10,13,-6,0,20,31,3,0,8,38,7),f(0,10,13,-6,0,21,33,3,0,8,40,7),f(0,10,14,-6,0,22,35,3,0,8,42,7),f(0,11,14,-7,0,23,36,3,0,9,44,8),f(0,11,15,-7,0,24,38,3,0,9,46,8)];var p=n(94479);const m={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function h(e={},...t){const{breakpoints:n,mixins:f={},spacing:h,palette:g={},transitions:y={},typography:b={},shape:v,...k}=e;if(e.vars)throw new Error((0,r.A)(20));const w=(0,s.Ay)(g),S=(0,i.A)(e);let x=(0,a.A)(S,{mixins:(0,u.A)(S.breakpoints,f),palette:w,shadows:d.slice(),typography:(0,c.A)(w,b),transitions:(0,p.Ay)(y),zIndex:{...m}});return x=(0,a.A)(x,k),x=t.reduce(((e,t)=>(0,a.A)(e,t)),x),x.unstable_sxConfig={...o.A,...k?.unstable_sxConfig},x.unstable_sx=function(e){return(0,l.A)({sx:e,theme:this})},x}function g(...e){return h(...e)}const y=h},17405:(e,t,n)=>{n.d(t,{A:()=>_});var r=n(51569),a=n(78745);function o(e=""){function t(...n){if(!n.length)return"";const r=n[0];return"string"!=typeof r||r.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${r}`:`, var(--${e?`${e}-`:""}${r}${t(...n.slice(1))})`}return(n,...r)=>`var(--${e?`${e}-`:""}${n}${t(...r)})`}var l=n(81459),i=n(34901);function u(e){const t={};return Object.entries(e).forEach((e=>{const[n,r]=e;"object"==typeof r&&(t[n]=`${r.fontStyle?`${r.fontStyle} `:""}${r.fontVariant?`${r.fontVariant} `:""}${r.fontWeight?`${r.fontWeight} `:""}${r.fontStretch?`${r.fontStretch} `:""}${r.fontSize||""}${r.lineHeight?`/${r.lineHeight} `:""}${r.fontFamily||""}`)})),t}const s=(e,t,n,r=[])=>{let a=e;t.forEach(((e,o)=>{o===t.length-1?Array.isArray(a)?a[Number(e)]=n:a&&"object"==typeof a&&(a[e]=n):a&&"object"==typeof a&&(a[e]||(a[e]=r.includes(e)?[]:{}),a=a[e])}))};function c(e,t){const{prefix:n,shouldSkipGeneratingVar:r}=t||{},a={},o={},l={};var i,u;return i=(e,t,i)=>{if(!("string"!=typeof t&&"number"!=typeof t||r&&r(e,t))){const r=`--${n?`${n}-`:""}${e.join("-")}`,u=((e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some((t=>e.includes(t)))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t)(e,t);Object.assign(a,{[r]:u}),s(o,e,`var(${r})`,i),s(l,e,`var(${r}, ${u})`,i)}},u=e=>"vars"===e[0],function e(t,n=[],r=[]){Object.entries(t).forEach((([t,a])=>{(!u||u&&!u([...n,t]))&&null!=a&&("object"==typeof a&&Object.keys(a).length>0?e(a,[...n,t],Array.isArray(a)?[...r,t]:r):i([...n,t],a,r))}))}(e),{css:a,vars:o,varsWithDefaults:l}}const f=function(e,t={}){const{getSelector:n=b,disableCssColorScheme:r,colorSchemeSelector:o}=t,{colorSchemes:l={},components:i,defaultColorScheme:u="light",...s}=e,{vars:f,css:d,varsWithDefaults:p}=c(s,t);let m=p;const h={},{[u]:g,...y}=l;if(Object.entries(y||{}).forEach((([e,n])=>{const{vars:r,css:o,varsWithDefaults:l}=c(n,t);m=(0,a.A)(m,l),h[e]={css:o,vars:r}})),g){const{css:e,vars:n,varsWithDefaults:r}=c(g,t);m=(0,a.A)(m,r),h[u]={css:e,vars:n}}function b(t,n){let r=o;if("class"===o&&(r=".%s"),"data"===o&&(r="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(r=`[${o}="%s"]`),t){if("media"===r){if(e.defaultColorScheme===t)return":root";const r=l[t]?.palette?.mode||t;return{[`@media (prefers-color-scheme: ${r})`]:{":root":n}}}if(r)return e.defaultColorScheme===t?`:root, ${r.replace("%s",String(t))}`:r.replace("%s",String(t))}return":root"}return{vars:m,generateThemeVars:()=>{let e={...f};return Object.entries(h).forEach((([,{vars:t}])=>{e=(0,a.A)(e,t)})),e},generateStyleSheets:()=>{const t=[],a=e.defaultColorScheme||"light";function o(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}o(n(void 0,{...d}),d);const{[a]:i,...u}=h;if(i){const{css:e}=i,t=l[a]?.palette?.mode,u=!r&&t?{colorScheme:t,...e}:{...e};o(n(a,{...u}),u)}return Object.entries(u).forEach((([e,{css:t}])=>{const a=l[e]?.palette?.mode,i=!r&&a?{colorScheme:a,...t}:{...t};o(n(e,{...i}),i)})),t}}};var d=n(94177),p=n(76795),m=n(72639),h=n(86501),g=n(21699),y=n(59542),b=n(80040);const v=e=>(t,n)=>{const r=e.colorSchemeSelector;let a=r;if("class"===r&&(a=".%s"),"data"===r&&(a="[data-%s]"),r?.startsWith("data-")&&!r.includes("%s")&&(a=`[${r}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const r={};return(0,b.A)(e.cssVarPrefix).forEach((e=>{r[e]=n[e],delete n[e]})),"media"===a?{":root":n,"@media (prefers-color-scheme: dark)":{":root":r}}:a?{[a.replace("%s",t)]:r,[`:root, ${a.replace("%s",t)}`]:n}:{":root":{...n,...r}}}if(a&&"media"!==a)return`:root, ${a.replace("%s",String(t))}`}else if(t){if("media"===a)return{[`@media (prefers-color-scheme: ${String(t)})`]:{":root":n}};if(a)return a.replace("%s",String(t))}return":root"};function k(e={}){const t={...e};return function e(t){const n=Object.entries(t);for(let o=0;o<n.length;o++){const[l,i]=n[o];r=i,!(0,a.Q)(r)&&void 0!==r&&"string"!=typeof r&&"boolean"!=typeof r&&"number"!=typeof r&&!Array.isArray(r)||l.startsWith("unstable_")?delete t[l]:(0,a.Q)(i)&&(t[l]={...i},e(t[l]))}var r}(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function w(e,t,n){!e[t]&&n&&(e[t]=n)}function S(e){return e&&e.startsWith("hsl")?(0,m.YL)(e):e}function x(e,t){`${t}Channel`in e||(e[`${t}Channel`]=(0,m.Me)(S(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}const C=e=>{try{return e()}catch(e){}},A=(e="mui")=>o(e);function E(e,t,n,r){if(!t)return;t=!0===t?{}:t;const a="dark"===r?"dark":"light";if(!n)return void(e[r]=(0,g.Ay)({...t,palette:{mode:a,...t?.palette}}));const{palette:o,...l}=(0,h.A)({...n,palette:{mode:a,...t?.palette}});return e[r]={...t,palette:o,opacity:{...(0,g.UL)(a),...t?.opacity},overlays:t?.overlays||(0,g.Qw)(a)},l}function _(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:o,disableCssColorScheme:s=!1,cssVarPrefix:c="mui",shouldSkipGeneratingVar:h=y.A,colorSchemeSelector:g=(n.light&&n.dark?"media":void 0),...b}=e,_=Object.keys(n)[0],P=o||(n.light&&"light"!==_?"light":_),T=A(c),{[P]:N,light:O,dark:$,...z}=n,L={...z};let M=N;if(("dark"===P&&!("dark"in n)||"light"===P&&!("light"in n))&&(M=!0),!M)throw new Error((0,r.A)(21,P));const R=E(L,M,b,P);O&&!L.light&&E(L,O,void 0,"light"),$&&!L.dark&&E(L,$,void 0,"dark");let I={defaultColorScheme:P,...R,cssVarPrefix:c,colorSchemeSelector:g,getCssVar:T,colorSchemes:L,font:{...u(R.typography),...R.font},spacing:(F=b.spacing,"number"==typeof F?`${F}px`:"string"==typeof F||"function"==typeof F||Array.isArray(F)?F:"8px")};var F;Object.keys(I.colorSchemes).forEach((e=>{const t=I.colorSchemes[e].palette,n=e=>{const n=e.split("-"),r=n[1],a=n[2];return T(e,t[r][a])};var r;if("light"===t.mode&&(w(t.common,"background","#fff"),w(t.common,"onBackground","#000")),"dark"===t.mode&&(w(t.common,"background","#000"),w(t.common,"onBackground","#fff")),r=t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"].forEach((e=>{r[e]||(r[e]={})})),"light"===t.mode){w(t.Alert,"errorColor",(0,m.Nd)(t.error.light,.6)),w(t.Alert,"infoColor",(0,m.Nd)(t.info.light,.6)),w(t.Alert,"successColor",(0,m.Nd)(t.success.light,.6)),w(t.Alert,"warningColor",(0,m.Nd)(t.warning.light,.6)),w(t.Alert,"errorFilledBg",n("palette-error-main")),w(t.Alert,"infoFilledBg",n("palette-info-main")),w(t.Alert,"successFilledBg",n("palette-success-main")),w(t.Alert,"warningFilledBg",n("palette-warning-main")),w(t.Alert,"errorFilledColor",C((()=>t.getContrastText(t.error.main)))),w(t.Alert,"infoFilledColor",C((()=>t.getContrastText(t.info.main)))),w(t.Alert,"successFilledColor",C((()=>t.getContrastText(t.success.main)))),w(t.Alert,"warningFilledColor",C((()=>t.getContrastText(t.warning.main)))),w(t.Alert,"errorStandardBg",(0,m.j4)(t.error.light,.9)),w(t.Alert,"infoStandardBg",(0,m.j4)(t.info.light,.9)),w(t.Alert,"successStandardBg",(0,m.j4)(t.success.light,.9)),w(t.Alert,"warningStandardBg",(0,m.j4)(t.warning.light,.9)),w(t.Alert,"errorIconColor",n("palette-error-main")),w(t.Alert,"infoIconColor",n("palette-info-main")),w(t.Alert,"successIconColor",n("palette-success-main")),w(t.Alert,"warningIconColor",n("palette-warning-main")),w(t.AppBar,"defaultBg",n("palette-grey-100")),w(t.Avatar,"defaultBg",n("palette-grey-400")),w(t.Button,"inheritContainedBg",n("palette-grey-300")),w(t.Button,"inheritContainedHoverBg",n("palette-grey-A100")),w(t.Chip,"defaultBorder",n("palette-grey-400")),w(t.Chip,"defaultAvatarColor",n("palette-grey-700")),w(t.Chip,"defaultIconColor",n("palette-grey-700")),w(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),w(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),w(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),w(t.LinearProgress,"primaryBg",(0,m.j4)(t.primary.main,.62)),w(t.LinearProgress,"secondaryBg",(0,m.j4)(t.secondary.main,.62)),w(t.LinearProgress,"errorBg",(0,m.j4)(t.error.main,.62)),w(t.LinearProgress,"infoBg",(0,m.j4)(t.info.main,.62)),w(t.LinearProgress,"successBg",(0,m.j4)(t.success.main,.62)),w(t.LinearProgress,"warningBg",(0,m.j4)(t.warning.main,.62)),w(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.11)`),w(t.Slider,"primaryTrack",(0,m.j4)(t.primary.main,.62)),w(t.Slider,"secondaryTrack",(0,m.j4)(t.secondary.main,.62)),w(t.Slider,"errorTrack",(0,m.j4)(t.error.main,.62)),w(t.Slider,"infoTrack",(0,m.j4)(t.info.main,.62)),w(t.Slider,"successTrack",(0,m.j4)(t.success.main,.62)),w(t.Slider,"warningTrack",(0,m.j4)(t.warning.main,.62));const e=(0,m.Y9)(t.background.default,.8);w(t.SnackbarContent,"bg",e),w(t.SnackbarContent,"color",C((()=>t.getContrastText(e)))),w(t.SpeedDialAction,"fabHoverBg",(0,m.Y9)(t.background.paper,.15)),w(t.StepConnector,"border",n("palette-grey-400")),w(t.StepContent,"border",n("palette-grey-400")),w(t.Switch,"defaultColor",n("palette-common-white")),w(t.Switch,"defaultDisabledColor",n("palette-grey-100")),w(t.Switch,"primaryDisabledColor",(0,m.j4)(t.primary.main,.62)),w(t.Switch,"secondaryDisabledColor",(0,m.j4)(t.secondary.main,.62)),w(t.Switch,"errorDisabledColor",(0,m.j4)(t.error.main,.62)),w(t.Switch,"infoDisabledColor",(0,m.j4)(t.info.main,.62)),w(t.Switch,"successDisabledColor",(0,m.j4)(t.success.main,.62)),w(t.Switch,"warningDisabledColor",(0,m.j4)(t.warning.main,.62)),w(t.TableCell,"border",(0,m.j4)((0,m.Cg)(t.divider,1),.88)),w(t.Tooltip,"bg",(0,m.Cg)(t.grey[700],.92))}if("dark"===t.mode){w(t.Alert,"errorColor",(0,m.j4)(t.error.light,.6)),w(t.Alert,"infoColor",(0,m.j4)(t.info.light,.6)),w(t.Alert,"successColor",(0,m.j4)(t.success.light,.6)),w(t.Alert,"warningColor",(0,m.j4)(t.warning.light,.6)),w(t.Alert,"errorFilledBg",n("palette-error-dark")),w(t.Alert,"infoFilledBg",n("palette-info-dark")),w(t.Alert,"successFilledBg",n("palette-success-dark")),w(t.Alert,"warningFilledBg",n("palette-warning-dark")),w(t.Alert,"errorFilledColor",C((()=>t.getContrastText(t.error.dark)))),w(t.Alert,"infoFilledColor",C((()=>t.getContrastText(t.info.dark)))),w(t.Alert,"successFilledColor",C((()=>t.getContrastText(t.success.dark)))),w(t.Alert,"warningFilledColor",C((()=>t.getContrastText(t.warning.dark)))),w(t.Alert,"errorStandardBg",(0,m.Nd)(t.error.light,.9)),w(t.Alert,"infoStandardBg",(0,m.Nd)(t.info.light,.9)),w(t.Alert,"successStandardBg",(0,m.Nd)(t.success.light,.9)),w(t.Alert,"warningStandardBg",(0,m.Nd)(t.warning.light,.9)),w(t.Alert,"errorIconColor",n("palette-error-main")),w(t.Alert,"infoIconColor",n("palette-info-main")),w(t.Alert,"successIconColor",n("palette-success-main")),w(t.Alert,"warningIconColor",n("palette-warning-main")),w(t.AppBar,"defaultBg",n("palette-grey-900")),w(t.AppBar,"darkBg",n("palette-background-paper")),w(t.AppBar,"darkColor",n("palette-text-primary")),w(t.Avatar,"defaultBg",n("palette-grey-600")),w(t.Button,"inheritContainedBg",n("palette-grey-800")),w(t.Button,"inheritContainedHoverBg",n("palette-grey-700")),w(t.Chip,"defaultBorder",n("palette-grey-700")),w(t.Chip,"defaultAvatarColor",n("palette-grey-300")),w(t.Chip,"defaultIconColor",n("palette-grey-300")),w(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),w(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),w(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),w(t.LinearProgress,"primaryBg",(0,m.Nd)(t.primary.main,.5)),w(t.LinearProgress,"secondaryBg",(0,m.Nd)(t.secondary.main,.5)),w(t.LinearProgress,"errorBg",(0,m.Nd)(t.error.main,.5)),w(t.LinearProgress,"infoBg",(0,m.Nd)(t.info.main,.5)),w(t.LinearProgress,"successBg",(0,m.Nd)(t.success.main,.5)),w(t.LinearProgress,"warningBg",(0,m.Nd)(t.warning.main,.5)),w(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.13)`),w(t.Slider,"primaryTrack",(0,m.Nd)(t.primary.main,.5)),w(t.Slider,"secondaryTrack",(0,m.Nd)(t.secondary.main,.5)),w(t.Slider,"errorTrack",(0,m.Nd)(t.error.main,.5)),w(t.Slider,"infoTrack",(0,m.Nd)(t.info.main,.5)),w(t.Slider,"successTrack",(0,m.Nd)(t.success.main,.5)),w(t.Slider,"warningTrack",(0,m.Nd)(t.warning.main,.5));const e=(0,m.Y9)(t.background.default,.98);w(t.SnackbarContent,"bg",e),w(t.SnackbarContent,"color",C((()=>t.getContrastText(e)))),w(t.SpeedDialAction,"fabHoverBg",(0,m.Y9)(t.background.paper,.15)),w(t.StepConnector,"border",n("palette-grey-600")),w(t.StepContent,"border",n("palette-grey-600")),w(t.Switch,"defaultColor",n("palette-grey-300")),w(t.Switch,"defaultDisabledColor",n("palette-grey-600")),w(t.Switch,"primaryDisabledColor",(0,m.Nd)(t.primary.main,.55)),w(t.Switch,"secondaryDisabledColor",(0,m.Nd)(t.secondary.main,.55)),w(t.Switch,"errorDisabledColor",(0,m.Nd)(t.error.main,.55)),w(t.Switch,"infoDisabledColor",(0,m.Nd)(t.info.main,.55)),w(t.Switch,"successDisabledColor",(0,m.Nd)(t.success.main,.55)),w(t.Switch,"warningDisabledColor",(0,m.Nd)(t.warning.main,.55)),w(t.TableCell,"border",(0,m.Nd)((0,m.Cg)(t.divider,1),.68)),w(t.Tooltip,"bg",(0,m.Cg)(t.grey[700],.92))}x(t.background,"default"),x(t.background,"paper"),x(t.common,"background"),x(t.common,"onBackground"),x(t,"divider"),Object.keys(t).forEach((e=>{const n=t[e];n&&"object"==typeof n&&(n.main&&w(t[e],"mainChannel",(0,m.Me)(S(n.main))),n.light&&w(t[e],"lightChannel",(0,m.Me)(S(n.light))),n.dark&&w(t[e],"darkChannel",(0,m.Me)(S(n.dark))),n.contrastText&&w(t[e],"contrastTextChannel",(0,m.Me)(S(n.contrastText))),"text"===e&&(x(t[e],"primary"),x(t[e],"secondary")),"action"===e&&(n.active&&x(t[e],"active"),n.selected&&x(t[e],"selected")))}))})),I=t.reduce(((e,t)=>(0,a.A)(e,t)),I);const j={prefix:c,disableCssColorScheme:s,shouldSkipGeneratingVar:h,getSelector:v(I)},{vars:D,generateThemeVars:B,generateStyleSheets:U}=f(I,j);return I.vars=D,Object.entries(I.colorSchemes[I.defaultColorScheme]).forEach((([e,t])=>{I[e]=t})),I.generateThemeVars=B,I.generateStyleSheets=U,I.generateSpacing=function(){return(0,l.A)(b.spacing,(0,i.LX)(this))},I.getColorSchemeSelector=function(e){return function(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}(g),I.spacing=I.generateSpacing(),I.shouldSkipGeneratingVar=h,I.unstable_sxConfig={...d.A,...b?.unstable_sxConfig},I.unstable_sx=function(e){return(0,p.A)({sx:e,theme:this})},I.toRuntimeSource=k,I}},94479:(e,t,n)=>{n.d(t,{Ay:()=>i,cz:()=>r,p0:()=>a});const r={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},a={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function o(e){return`${Math.round(e)}ms`}function l(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function i(e){const t={...r,...e.easing},n={...a,...e.duration};return{getAutoHeightDuration:l,create:(e=["all"],r={})=>{const{duration:a=n.standard,easing:l=t.easeInOut,delay:i=0,...u}=r;return(Array.isArray(e)?e:[e]).map((e=>`${e} ${"string"==typeof a?a:o(a)} ${l} ${"string"==typeof i?i:o(i)}`)).join(",")},...e,easing:t,duration:n}}},34558:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(78745);const a={textTransform:"uppercase"},o='"Roboto", "Helvetica", "Arial", sans-serif';function l(e,t){const{fontFamily:n=o,fontSize:l=14,fontWeightLight:i=300,fontWeightRegular:u=400,fontWeightMedium:s=500,fontWeightBold:c=700,htmlFontSize:f=16,allVariants:d,pxToRem:p,...m}="function"==typeof t?t(e):t,h=l/14,g=p||(e=>e/f*h+"rem"),y=(e,t,r,a,l)=>{return{fontFamily:n,fontWeight:e,fontSize:g(t),lineHeight:r,...n===o?{letterSpacing:(i=a/t,Math.round(1e5*i)/1e5+"em")}:{},...l,...d};var i},b={h1:y(i,96,1.167,-1.5),h2:y(i,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(s,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(s,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(s,14,1.75,.4,a),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,a),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,r.A)({htmlFontSize:f,pxToRem:g,fontFamily:n,fontSize:l,fontWeightLight:i,fontWeightRegular:u,fontWeightMedium:s,fontWeightBold:c,...b},m,{clone:!1})}},23121:(e,t,n)=>{n.d(t,{A:()=>r});const r=(0,n(89022).A)()},80040:(e,t,n)=>{n.d(t,{A:()=>r});const r=e=>[...[...Array(25)].map(((t,n)=>`--${e?`${e}-`:""}overlays-${n}`)),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`]},28875:(e,t,n)=>{function r(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}n.d(t,{A:()=>r})},74988:(e,t,n)=>{n.d(t,{A:()=>r});const r="$$material"},55270:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(36674);const a=e=>(0,r.A)(e)&&"classes"!==e},59542:(e,t,n)=>{function r(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}n.d(t,{A:()=>r})},36674:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},51148:(e,t,n)=>{n.d(t,{Ay:()=>i});var r=n(15543),a=n(23121),o=n(74988),l=n(55270);const i=(0,r.Ay)({themeId:o.A,defaultTheme:a.A,rootShouldForwardProp:l.A})},15622:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(33283).A},58520:(e,t,n)=>{function r(e=[]){return([,t])=>t&&function(e,t=[]){if(!function(e){return"string"==typeof e.main}(e))return!1;for(const n of t)if(!e.hasOwnProperty(n)||"string"!=typeof e[n])return!1;return!0}(t,e)}n.d(t,{A:()=>r})},60129:(e,t,n)=>{n.d(t,{A:()=>a});const r={theme:void 0};function a(e){let t,n;return a=>{let o=t;return void 0!==o&&a.theme===n||(r.theme=a.theme,o=e(r),t=o,n=a.theme),o}}},53791:(e,t,n)=>{n.d(t,{Ay:()=>b,q_:()=>v});var r=n(6614),a=n(7552),o=n(39389),l=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,i=(0,o.A)((function(e){return l.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),u=n(90722),s=n(92005),c=n(53760),f=n(20387),d=i,p=function(e){return"theme"!==e},m=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?d:p},h=function(e,t,n){var r;if(t){var a=t.shouldForwardProp;r=e.__emotion_forwardProp&&a?function(t){return e.__emotion_forwardProp(t)&&a(t)}:a}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},g=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,s.SF)(t,n,r),(0,f.s)((function(){return(0,s.sk)(t,n,r)})),null},y=function e(t,n){var o,l,i=t.__emotion_real===t,f=i&&t.__emotion_base||t;void 0!==n&&(o=n.label,l=n.target);var d=h(t,n,i),p=d||m(f),y=!p("as");return function(){var b=arguments,v=i&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==o&&v.push("label:"+o+";"),null==b[0]||void 0===b[0].raw)v.push.apply(v,b);else{v.push(b[0][0]);for(var k=b.length,w=1;w<k;w++)v.push(b[w],b[0][w])}var S=(0,u.w)((function(e,t,n){var r=y&&e.as||f,o="",i=[],h=e;if(null==e.theme){for(var b in h={},e)h[b]=e[b];h.theme=a.useContext(u.T)}"string"==typeof e.className?o=(0,s.Rk)(t.registered,i,e.className):null!=e.className&&(o=e.className+" ");var k=(0,c.J)(v.concat(i),t.registered,h);o+=t.key+"-"+k.name,void 0!==l&&(o+=" "+l);var w=y&&void 0===d?m(r):p,S={};for(var x in e)y&&"as"===x||w(x)&&(S[x]=e[x]);return S.className=o,n&&(S.ref=n),a.createElement(a.Fragment,null,a.createElement(g,{cache:t,serialized:k,isStringTag:"string"==typeof r}),a.createElement(r,S))}));return S.displayName=void 0!==o?o:"Styled("+("string"==typeof f?f:f.displayName||f.name||"Component")+")",S.defaultProps=t.defaultProps,S.__emotion_real=S,S.__emotion_base=f,S.__emotion_styles=v,S.__emotion_forwardProp=d,Object.defineProperty(S,"toString",{value:function(){return"."+l}}),S.withComponent=function(t,a){return e(t,(0,r.A)({},n,a,{shouldForwardProp:h(S,a,!0)})).apply(void 0,v)},S}}.bind();function b(e,t){return y(e,t)}["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){y[e]=y(e)}));const v=(e,t)=>{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},53173:(e,t,n)=>{n.d(t,{A:()=>u,b:()=>i});var r=n(7552),a=n(80007),o=n(69500);const l=r.createContext(void 0);function i({props:e,name:t}){return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const o=t.components[n];return o.defaultProps?(0,a.A)(o.defaultProps,r):o.styleOverrides||o.variants?r:(0,a.A)(o,r)}({props:e,name:t,theme:{components:r.useContext(l)}})}const u=function({value:e,children:t}){return(0,o.jsx)(l.Provider,{value:e,children:t})}},43059:(e,t,n)=>{n.d(t,{EU:()=>s,NI:()=>u,iZ:()=>f,kW:()=>d,vf:()=>c,zu:()=>o});var r=n(78745),a=n(91939);const o={xs:0,sm:600,md:900,lg:1200,xl:1536},l={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`},i={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:o[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function u(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||l;return t.reduce(((r,a,o)=>(r[e.up(e.keys[o])]=n(t[o]),r)),{})}if("object"==typeof t){const e=r.breakpoints||l;return Object.keys(t).reduce(((l,u)=>{if((0,a.ob)(e.keys,u)){const e=(0,a.CT)(r.containerQueries?r:i,u);e&&(l[e]=n(t[u],u))}else if(Object.keys(e.values||o).includes(u))l[e.up(u)]=n(t[u],u);else{const e=u;l[e]=t[e]}return l}),{})}return n(t)}function s(e={}){const t=e.keys?.reduce(((t,n)=>(t[e.up(n)]={},t)),{});return t||{}}function c(e,t){return e.reduce(((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function f(e,...t){const n=s(e),a=[n,...t].reduce(((e,t)=>(0,r.A)(e,t)),{});return c(Object.keys(n),a)}function d({values:e,breakpoints:t,base:n}){const r=n||function(e,t){if("object"!=typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach(((t,r)=>{r<e.length&&(n[t]=!0)})):r.forEach((t=>{null!=e[t]&&(n[t]=!0)})),n}(e,t),a=Object.keys(r);if(0===a.length)return e;let o;return a.reduce(((t,n,r)=>(Array.isArray(e)?(t[n]=null!=e[r]?e[r]:e[o],o=r):"object"==typeof e?(t[n]=null!=e[n]?e[n]:e[o],o=n):t[n]=e,t)),{})}},72639:(e,t,n)=>{n.d(t,{Cg:()=>h,E2:()=>l,J1:()=>d,Me:()=>u,Nd:()=>y,Ob:()=>c,X0:()=>s,X4:()=>m,Y9:()=>w,YL:()=>f,a:()=>b,e$:()=>g,eM:()=>p,j4:()=>v,rP:()=>i,tL:()=>k});var r=n(51569),a=n(93801);function o(e,t=0,n=1){return(0,a.A)(e,t,n)}function l(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}function i(e){if(e.type)return e;if("#"===e.charAt(0))return i(l(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error((0,r.A)(9,e));let a,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),a=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(a))throw new Error((0,r.A)(10,a))}else o=o.split(",");return o=o.map((e=>parseFloat(e))),{type:n,values:o,colorSpace:a}}const u=(e,t)=>{try{return(e=>{const t=i(e);return t.values.slice(0,3).map(((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e)).join(" ")})(e)}catch(t){return e}};function s(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function c(e){if(e.startsWith("#"))return e;const{values:t}=i(e);return`#${t.map(((e,t)=>function(e){const t=e.toString(16);return 1===t.length?`0${t}`:t}(3===t?Math.round(255*e):e))).join("")}`}function f(e){e=i(e);const{values:t}=e,n=t[0],r=t[1]/100,a=t[2]/100,o=r*Math.min(a,1-a),l=(e,t=(e+n/30)%12)=>a-o*Math.max(Math.min(t-3,9-t,1),-1);let u="rgb";const c=[Math.round(255*l(0)),Math.round(255*l(8)),Math.round(255*l(4))];return"hsla"===e.type&&(u+="a",c.push(t[3])),s({type:u,values:c})}function d(e){let t="hsl"===(e=i(e)).type||"hsla"===e.type?i(f(e)).values:e.values;return t=t.map((t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function p(e,t){const n=d(e),r=d(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function m(e,t){return e=i(e),t=o(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,s(e)}function h(e,t,n){try{return m(e,t)}catch(t){return e}}function g(e,t){if(e=i(e),t=o(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return s(e)}function y(e,t,n){try{return g(e,t)}catch(t){return e}}function b(e,t){if(e=i(e),t=o(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return s(e)}function v(e,t,n){try{return b(e,t)}catch(t){return e}}function k(e,t=.15){return d(e)>.5?g(e,t):b(e,t)}function w(e,t,n){try{return k(e,t)}catch(t){return e}}},92271:(e,t,n)=>{n.d(t,{A:()=>a});const r=e=>{const t=Object.keys(e).map((t=>({key:t,val:e[t]})))||[];return t.sort(((e,t)=>e.val-t.val)),t.reduce(((e,t)=>({...e,[t.key]:t.val})),{})};function a(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:a=5,...o}=e,l=r(t),i=Object.keys(l);function u(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function s(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-a/100}${n})`}function c(e,r){const o=i.indexOf(r);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[i[o]]?t[i[o]]:r)-a/100}${n})`}return{keys:i,values:l,up:u,down:s,between:c,only:function(e){return i.indexOf(e)+1<i.length?c(e,i[i.indexOf(e)+1]):u(e)},not:function(e){const t=i.indexOf(e);return 0===t?u(i[1]):t===i.length-1?s(i[t]):c(e,i[i.indexOf(e)+1]).replace("@media","@media not all and")},unit:n,...o}}},15543:(e,t,n)=>{n.d(t,{Ay:()=>m});var r=n(53791),a=n(78745),o=n(72861),l=n(76795);const i=(0,o.A)();function u(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function s(e,t,n){return function(e){for(const t in e)return!1;return!0}(t)?n:t[e]||t}const c=Symbol("mui.processed_props");function f(e,t,n){if(c in e)return e[c];const r={...e,theme:s(t,e.theme,n)};return e[c]=r,r[c]=r,r}function d(e){return e?(t,n)=>n[e]:null}function p(e,t){const n="function"==typeof e?e(t):e;if(Array.isArray(n))return n.flatMap((e=>p(e,t)));if(Array.isArray(n?.variants)){const{variants:e,...r}=n;let a,o=r;e:for(let n=0;n<e.length;n+=1){const r=e[n];if("function"==typeof r.props){if(a??={...t,...t.ownerState,ownerState:t.ownerState},!r.props(a))continue}else for(const e in r.props)if(t[e]!==r.props[e]&&t.ownerState?.[e]!==r.props[e])continue e;Array.isArray(o)||(o=[o]),"function"==typeof r.style?(a??={...t,...t.ownerState,ownerState:t.ownerState},o.push(r.style(a))):o.push(r.style)}return o}return n}function m(e={}){const{themeId:t,defaultTheme:n=i,rootShouldForwardProp:o=u,slotShouldForwardProp:c=u}=e,m=e=>(0,l.A)(f(e,t,n));return m.__mui_systemSx=!0,(e,l={})=>{(0,r.q_)(e,(e=>e.filter((e=>!e?.__mui_systemSx))));const{name:i,slot:g,skipVariantsResolver:y,skipSx:b,overridesResolver:v=d(h(g)),...k}=l,w=void 0!==y?y:g&&"Root"!==g&&"root"!==g||!1,S=b||!1;let x=u;"Root"===g||"root"===g?x=o:g?x=c:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(x=void 0);const C=(0,r.Ay)(e,{shouldForwardProp:x,label:void 0,...k}),A=e=>"function"==typeof e&&e.__emotion_real!==e||(0,a.Q)(e)?r=>p(e,f(r,t,n)):e,E=(r,...a)=>{let o=A(r);const l=a?a.map(A):[];i&&v&&l.push((e=>{const r=s(t,e.theme,n);if(!r.components||!r.components[i]||!r.components[i].styleOverrides)return null;const a=r.components[i].styleOverrides,o={},l=f(e,t,n);for(const e in a)o[e]=p(a[e],l);return v(e,o)})),i&&!w&&l.push((e=>{const r=s(t,e.theme,n),a=r?.components?.[i]?.variants;return a?p({variants:a},f(e,t,n)):null})),S||l.push(m);const u=l.length-a.length;if(Array.isArray(r)&&u>0){const e=new Array(u).fill("");o=[...r,...e],o.raw=[...r.raw,...e]}const c=C(o,...l);return e.muiName&&(c.muiName=e.muiName),c};return C.withConfig&&(E.withConfig=C.withConfig),E}}function h(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}},81459:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(34901);function a(e=8,t=(0,r.LX)({spacing:e})){if(e.mui)return e;const n=(...e)=>(0===e.length?[1]:e).map((e=>{const n=t(e);return"number"==typeof n?`${n}px`:n})).join(" ");return n.mui=!0,n}},72861:(e,t,n)=>{n.d(t,{A:()=>f});var r=n(78745),a=n(92271),o=n(91939);const l={borderRadius:4};var i=n(81459),u=n(76795),s=n(94177);function c(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const f=function(e={},...t){const{breakpoints:n={},palette:f={},spacing:d,shape:p={},...m}=e,h=(0,a.A)(n),g=(0,i.A)(d);let y=(0,r.A)({breakpoints:h,direction:"ltr",components:{},palette:{mode:"light",...f},spacing:g,shape:{...l,...p}},m);return y=(0,o.Ay)(y),y.applyStyles=c,y=t.reduce(((e,t)=>(0,r.A)(e,t)),y),y.unstable_sxConfig={...s.A,...m?.unstable_sxConfig},y.unstable_sx=function(e){return(0,u.A)({sx:e,theme:this})},y}},91939:(e,t,n)=>{function r(e,t){if(!e.containerQueries)return t;const n=Object.keys(t).filter((e=>e.startsWith("@container"))).sort(((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)}));return n.length?n.reduce(((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e}),{...t}):t}function a(e,t){return"@"===t||t.startsWith("@")&&(e.some((e=>t.startsWith(`@${e}`)))||!!t.match(/^@\d/))}function o(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,a]=n,o=Number.isNaN(+r)?r||0:+r;return e.containerQueries(a).up(o)}function l(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const a=t(e.breakpoints.not(...n),r);return a.includes("not all and")?a.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):a}}const r={},a=e=>(n(r,e),r);return n(a),{...e,containerQueries:a}}n.d(t,{Ay:()=>l,CT:()=>o,_S:()=>r,ob:()=>a})},99091:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(78745);const a=function(e,t){return t?(0,r.A)(e,t,{clone:!1}):e}},34901:(e,t,n)=>{n.d(t,{LX:()=>m,MA:()=>p,_W:()=>h,Lc:()=>y,Ms:()=>b});var r=n(43059),a=n(39995),o=n(99091);const l={m:"margin",p:"padding"},i={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},u={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},s=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!u[e])return[e];e=u[e]}const[t,n]=e.split(""),r=l[t],a=i[n]||"";return Array.isArray(a)?a.map((e=>r+e)):[r+a]})(t)),e[t])}(),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],f=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],d=[...c,...f];function p(e,t,n,r){const o=(0,a.Yn)(e,t,!0)??n;return"number"==typeof o||"string"==typeof o?e=>"string"==typeof e?e:"string"==typeof o?`calc(${e} * ${o})`:o*e:Array.isArray(o)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=o[t];return e>=0?n:"number"==typeof n?-n:`-${n}`}:"function"==typeof o?o:()=>{}}function m(e){return p(e,"spacing",8)}function h(e,t){return"string"==typeof t||null==t?t:e(t)}function g(e,t){const n=m(e.theme);return Object.keys(e).map((a=>function(e,t,n,a){if(!t.includes(n))return null;const o=function(e,t){return n=>e.reduce(((e,r)=>(e[r]=h(t,n),e)),{})}(s(n),a),l=e[n];return(0,r.NI)(e,l,o)}(e,t,a,n))).reduce(o.A,{})}function y(e){return g(e,c)}function b(e){return g(e,f)}function v(e){return g(e,d)}y.propTypes={},y.filterProps=c,b.propTypes={},b.filterProps=f,v.propTypes={},v.filterProps=d},39995:(e,t,n)=>{n.d(t,{Ay:()=>i,BO:()=>l,Yn:()=>o});var r=n(33283),a=n(43059);function o(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce(((e,t)=>e&&e[t]?e[t]:null),e);if(null!=n)return n}return t.split(".").reduce(((e,t)=>e&&null!=e[t]?e[t]:null),e)}function l(e,t,n,r=n){let a;return a="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:o(e,n)||r,t&&(a=t(a,r,e)),a}const i=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:i,transform:u}=e,s=e=>{if(null==e[t])return null;const s=e[t],c=o(e.theme,i)||{};return(0,a.NI)(e,s,(e=>{let a=l(c,u,e);return e===a&&"string"==typeof e&&(a=l(c,u,`${t}${"default"===e?"":(0,r.A)(e)}`,e)),!1===n?a:{[n]:a}}))};return s.propTypes={},s.filterProps=[t],s}},94177:(e,t,n)=>{n.d(t,{A:()=>L});var r=n(34901),a=n(39995),o=n(99091);const l=function(...e){const t=e.reduce(((e,t)=>(t.filterProps.forEach((n=>{e[n]=t})),e)),{}),n=e=>Object.keys(e).reduce(((n,r)=>t[r]?(0,o.A)(n,t[r](e)):n),{});return n.propTypes={},n.filterProps=e.reduce(((e,t)=>e.concat(t.filterProps)),[]),n};var i=n(43059);function u(e){return"number"!=typeof e?e:`${e}px solid`}function s(e,t){return(0,a.Ay)({prop:e,themeKey:"borders",transform:t})}const c=s("border",u),f=s("borderTop",u),d=s("borderRight",u),p=s("borderBottom",u),m=s("borderLeft",u),h=s("borderColor"),g=s("borderTopColor"),y=s("borderRightColor"),b=s("borderBottomColor"),v=s("borderLeftColor"),k=s("outline",u),w=s("outlineColor"),S=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=(0,r.MA)(e.theme,"shape.borderRadius",4,"borderRadius"),n=e=>({borderRadius:(0,r._W)(t,e)});return(0,i.NI)(e,e.borderRadius,n)}return null};S.propTypes={},S.filterProps=["borderRadius"],l(c,f,d,p,m,h,g,y,b,v,S,k,w);const x=e=>{if(void 0!==e.gap&&null!==e.gap){const t=(0,r.MA)(e.theme,"spacing",8,"gap"),n=e=>({gap:(0,r._W)(t,e)});return(0,i.NI)(e,e.gap,n)}return null};x.propTypes={},x.filterProps=["gap"];const C=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=(0,r.MA)(e.theme,"spacing",8,"columnGap"),n=e=>({columnGap:(0,r._W)(t,e)});return(0,i.NI)(e,e.columnGap,n)}return null};C.propTypes={},C.filterProps=["columnGap"];const A=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=(0,r.MA)(e.theme,"spacing",8,"rowGap"),n=e=>({rowGap:(0,r._W)(t,e)});return(0,i.NI)(e,e.rowGap,n)}return null};function E(e,t){return"grey"===t?t:e}function _(e){return e<=1&&0!==e?100*e+"%":e}A.propTypes={},A.filterProps=["rowGap"],l(x,C,A,(0,a.Ay)({prop:"gridColumn"}),(0,a.Ay)({prop:"gridRow"}),(0,a.Ay)({prop:"gridAutoFlow"}),(0,a.Ay)({prop:"gridAutoColumns"}),(0,a.Ay)({prop:"gridAutoRows"}),(0,a.Ay)({prop:"gridTemplateColumns"}),(0,a.Ay)({prop:"gridTemplateRows"}),(0,a.Ay)({prop:"gridTemplateAreas"}),(0,a.Ay)({prop:"gridArea"})),l((0,a.Ay)({prop:"color",themeKey:"palette",transform:E}),(0,a.Ay)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:E}),(0,a.Ay)({prop:"backgroundColor",themeKey:"palette",transform:E}));const P=(0,a.Ay)({prop:"width",transform:_}),T=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||i.zu[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:_(t)}};return(0,i.NI)(e,e.maxWidth,t)}return null};T.filterProps=["maxWidth"];const N=(0,a.Ay)({prop:"minWidth",transform:_}),O=(0,a.Ay)({prop:"height",transform:_}),$=(0,a.Ay)({prop:"maxHeight",transform:_}),z=(0,a.Ay)({prop:"minHeight",transform:_}),L=((0,a.Ay)({prop:"size",cssProperty:"width",transform:_}),(0,a.Ay)({prop:"size",cssProperty:"height",transform:_}),l(P,T,N,O,$,z,(0,a.Ay)({prop:"boxSizing"})),{border:{themeKey:"borders",transform:u},borderTop:{themeKey:"borders",transform:u},borderRight:{themeKey:"borders",transform:u},borderBottom:{themeKey:"borders",transform:u},borderLeft:{themeKey:"borders",transform:u},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:u},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:S},color:{themeKey:"palette",transform:E},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:E},backgroundColor:{themeKey:"palette",transform:E},p:{style:r.Ms},pt:{style:r.Ms},pr:{style:r.Ms},pb:{style:r.Ms},pl:{style:r.Ms},px:{style:r.Ms},py:{style:r.Ms},padding:{style:r.Ms},paddingTop:{style:r.Ms},paddingRight:{style:r.Ms},paddingBottom:{style:r.Ms},paddingLeft:{style:r.Ms},paddingX:{style:r.Ms},paddingY:{style:r.Ms},paddingInline:{style:r.Ms},paddingInlineStart:{style:r.Ms},paddingInlineEnd:{style:r.Ms},paddingBlock:{style:r.Ms},paddingBlockStart:{style:r.Ms},paddingBlockEnd:{style:r.Ms},m:{style:r.Lc},mt:{style:r.Lc},mr:{style:r.Lc},mb:{style:r.Lc},ml:{style:r.Lc},mx:{style:r.Lc},my:{style:r.Lc},margin:{style:r.Lc},marginTop:{style:r.Lc},marginRight:{style:r.Lc},marginBottom:{style:r.Lc},marginLeft:{style:r.Lc},marginX:{style:r.Lc},marginY:{style:r.Lc},marginInline:{style:r.Lc},marginInlineStart:{style:r.Lc},marginInlineEnd:{style:r.Lc},marginBlock:{style:r.Lc},marginBlockStart:{style:r.Lc},marginBlockEnd:{style:r.Lc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:x},rowGap:{style:A},columnGap:{style:C},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:_},maxWidth:{style:T},minWidth:{transform:_},height:{transform:_},maxHeight:{transform:_},minHeight:{transform:_},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}})},76795:(e,t,n)=>{n.d(t,{A:()=>c});var r=n(33283),a=n(99091),o=n(39995),l=n(43059),i=n(91939),u=n(94177);const s=function(){function e(e,t,n,a){const i={[e]:t,theme:n},u=a[e];if(!u)return{[e]:t};const{cssProperty:s=e,themeKey:c,transform:f,style:d}=u;if(null==t)return null;if("typography"===c&&"inherit"===t)return{[e]:t};const p=(0,o.Yn)(n,c)||{};return d?d(i):(0,l.NI)(i,t,(t=>{let n=(0,o.BO)(p,f,t);return t===n&&"string"==typeof t&&(n=(0,o.BO)(p,f,`${e}${"default"===t?"":(0,r.A)(t)}`,t)),!1===s?n:{[s]:n}}))}return function t(n){const{sx:r,theme:o={}}=n||{};if(!r)return null;const s=o.unstable_sxConfig??u.A;function c(n){let r=n;if("function"==typeof n)r=n(o);else if("object"!=typeof n)return n;if(!r)return null;const u=(0,l.EU)(o.breakpoints),c=Object.keys(u);let f=u;return Object.keys(r).forEach((n=>{const i="function"==typeof(u=r[n])?u(o):u;var u;if(null!=i)if("object"==typeof i)if(s[n])f=(0,a.A)(f,e(n,i,o,s));else{const e=(0,l.NI)({theme:o},i,(e=>({[n]:e})));!function(...e){const t=e.reduce(((e,t)=>e.concat(Object.keys(t))),[]),n=new Set(t);return e.every((e=>n.size===Object.keys(e).length))}(e,i)?f=(0,a.A)(f,e):f[n]=t({sx:i,theme:o})}else f=(0,a.A)(f,e(n,i,o,s))})),(0,i._S)(o,(0,l.vf)(c,f))}return Array.isArray(r)?r.map(c):c(r)}}();s.filterProps=["sx"];const c=s},23043:(e,t,n)=>{n.d(t,{A:()=>a});const r=e=>e,a=(()=>{let e=r;return{configure(t){e=t},generate:t=>e(t),reset(){e=r}}})()},33283:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(51569);function a(e){if("string"!=typeof e)throw new Error((0,r.A)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},93801:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}},70799:(e,t,n)=>{function r(e,t,n=void 0){const r={};for(const a in e){const o=e[a];let l="",i=!0;for(let e=0;e<o.length;e+=1){const r=o[e];r&&(l+=(!0===i?"":" ")+t(r),i=!1,n&&n[r]&&(l+=" "+n[r]))}r[a]=l}return r}n.d(t,{A:()=>r})},78745:(e,t,n)=>{function r(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function a(e){if(!r(e))return e;const t={};return Object.keys(e).forEach((n=>{t[n]=a(e[n])})),t}function o(e,t,n={clone:!0}){const l=n.clone?{...e}:e;return r(e)&&r(t)&&Object.keys(t).forEach((i=>{r(t[i])&&Object.prototype.hasOwnProperty.call(e,i)&&r(e[i])?l[i]=o(e[i],t[i],n):n.clone?l[i]=r(t[i])?a(t[i]):t[i]:l[i]=t[i]})),l}n.d(t,{A:()=>o,Q:()=>r})},51569:(e,t,n)=>{function r(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;e<arguments.length;e+=1)t+="&args[]="+encodeURIComponent(arguments[e]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}n.d(t,{A:()=>r})},85693:(e,t,n)=>{n.d(t,{Ay:()=>o});var r=n(23043);const a={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function o(e,t,n="Mui"){const o=a[t];return o?`${n}-${o}`:`${r.A.generate(e)}-${t}`}},33761:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(85693);function a(e,t,n="Mui"){const a={};return t.forEach((t=>{a[t]=(0,r.Ay)(e,t,n)})),a}},80007:(e,t,n)=>{function r(e,t){const n={...t};for(const a in e)if(Object.prototype.hasOwnProperty.call(e,a)){const o=a;if("components"===o||"slots"===o)n[o]={...e[o],...n[o]};else if("componentsProps"===o||"slotProps"===o){const a=e[o],l=t[o];if(l)if(a){n[o]={...l};for(const e in a)if(Object.prototype.hasOwnProperty.call(a,e)){const t=e;n[o][t]=r(a[t],l[t])}}else n[o]=l;else n[o]=a||{}}else void 0===n[o]&&(n[o]=e[o])}return n}n.d(t,{A:()=>r})},806:(e,t,n)=>{var r=n(76896),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},l={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function u(e){return r.isMemo(e)?l:i[e.$$typeof]||a}i[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[r.Memo]=l;var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var l=c(n);f&&(l=l.concat(f(n)));for(var i=u(t),h=u(n),g=0;g<l.length;++g){var y=l[g];if(!(o[y]||r&&r[y]||h&&h[y]||i&&i[y])){var b=d(n,y);try{s(t,y,b)}catch(e){}}}}return t}},29116:(e,t)=>{var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,l=n?Symbol.for("react.strict_mode"):60108,i=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,s=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,k=n?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case o:case i:case l:case p:return e;default:switch(e=e&&e.$$typeof){case s:case d:case g:case h:case u:return e;default:return t}}case a:return t}}}function S(e){return w(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=s,t.ContextProvider=u,t.Element=r,t.ForwardRef=d,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=i,t.StrictMode=l,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||w(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return w(e)===d},t.isFragment=function(e){return w(e)===o},t.isLazy=function(e){return w(e)===g},t.isMemo=function(e){return w(e)===h},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===i},t.isStrictMode=function(e){return w(e)===l},t.isSuspense=function(e){return w(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===f||e===i||e===l||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===u||e.$$typeof===s||e.$$typeof===d||e.$$typeof===b||e.$$typeof===v||e.$$typeof===k||e.$$typeof===y)},t.typeOf=w},76896:(e,t,n)=>{e.exports=n(29116)},45555:(e,t,n)=>{var r=n(7552),a=n(13754);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var l=new Set,i={};function u(e,t){s(e,t),s(e+"Capture",t)}function s(e,t){for(i[e]=t,e=0;e<t.length;e++)l.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},m={};function h(e,t,n,r,a,o,l){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=l}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(m,e)||!f.call(p,e)&&(d.test(e)?m[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),S=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),E=Symbol.for("react.provider"),_=Symbol.for("react.context"),P=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),$=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var z=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var L=Symbol.iterator;function M(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=L&&e[L]||e["@@iterator"])?e:null}var R,I=Object.assign;function F(e){if(void 0===R)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);R=t&&t[1]||""}return"\n"+R+e}var j=!1;function D(e,t){if(!e||j)return"";j=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var a=t.stack.split("\n"),o=r.stack.split("\n"),l=a.length-1,i=o.length-1;1<=l&&0<=i&&a[l]!==o[i];)i--;for(;1<=l&&0<=i;l--,i--)if(a[l]!==o[i]){if(1!==l||1!==i)do{if(l--,0>--i||a[l]!==o[i]){var u="\n"+a[l].replace(" at new "," at ");return e.displayName&&u.includes("<anonymous>")&&(u=u.replace("<anonymous>",e.displayName)),u}}while(1<=l&&0<=i);break}}}finally{j=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function B(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return D(e.type,!1);case 11:return D(e.type.render,!1);case 1:return D(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case A:return"Profiler";case C:return"StrictMode";case T:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case _:return(e.displayName||"Context")+".Consumer";case E:return(e._context.displayName||"Context")+".Provider";case P:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case O:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case $:t=e._payload,e=e._init;try{return U(e(t))}catch(e){}}return null}function W(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function V(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Q(e){e._valueTracker||(e._valueTracker=function(e){var t=V(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function K(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=V(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return I({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function G(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function J(e,t){X(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Z(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return I({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function le(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function ie(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function ue(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?ie(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var se,ce,fe=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((se=se||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(pe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ye=I({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ke=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Se=null,xe=null,Ce=null;function Ae(e){if(e=va(e)){if("function"!=typeof Se)throw Error(o(280));var t=e.stateNode;t&&(t=wa(t),Se(e.stateNode,e.type,t))}}function Ee(e){xe?Ce?Ce.push(e):Ce=[e]:xe=e}function _e(){if(xe){var e=xe,t=Ce;if(Ce=xe=null,Ae(e),t)for(e=0;e<t.length;e++)Ae(t[e])}}function Pe(e,t){return e(t)}function Te(){}var Ne=!1;function Oe(e,t,n){if(Ne)return e(t,n);Ne=!0;try{return Pe(e,t,n)}finally{Ne=!1,(null!==xe||null!==Ce)&&(Te(),_e())}}function $e(e,t){var n=e.stateNode;if(null===n)return null;var r=wa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var ze=!1;if(c)try{var Le={};Object.defineProperty(Le,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Le,Le),window.removeEventListener("test",Le,Le)}catch(ce){ze=!1}function Me(e,t,n,r,a,o,l,i,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var Re=!1,Ie=null,Fe=!1,je=null,De={onError:function(e){Re=!0,Ie=e}};function Be(e,t,n,r,a,o,l,i,u){Re=!1,Ie=null,Me.apply(De,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function We(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function Ve(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var l=a.alternate;if(null===l){if(null!==(r=a.return)){n=r;continue}break}if(a.child===l.child){for(l=a.child;l;){if(l===n)return He(a),e;if(l===r)return He(a),t;l=l.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=l;else{for(var i=!1,u=a.child;u;){if(u===n){i=!0,n=a,r=l;break}if(u===r){i=!0,r=a,n=l;break}u=u.sibling}if(!i){for(u=l.child;u;){if(u===n){i=!0,n=l,r=a;break}if(u===r){i=!0,r=l,n=a;break}u=u.sibling}if(!i)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Qe(e):null}function Qe(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Qe(e);if(null!==t)return t;e=e.sibling}return null}var Ke=a.unstable_scheduleCallback,qe=a.unstable_cancelCallback,Ye=a.unstable_shouldYield,Ge=a.unstable_requestPaint,Xe=a.unstable_now,Je=a.unstable_getCurrentPriorityLevel,Ze=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null,lt=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(it(e)/ut|0)|0},it=Math.log,ut=Math.LN2,st=64,ct=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,l=268435455&n;if(0!==l){var i=l&~a;0!==i?r=ft(i):0!=(o&=l)&&(r=ft(o))}else 0!=(l=n&~a)?r=ft(l):0!==o&&(r=ft(o));if(0===r)return 0;if(0!==t&&t!==r&&!(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&4194240&o))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-lt(t)),r|=e[n],t&=~a;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=st;return!(4194240&(st<<=1))&&(st=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-lt(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-lt(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function kt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var wt,St,xt,Ct,At,Et=!1,_t=[],Pt=null,Tt=null,Nt=null,Ot=new Map,$t=new Map,zt=[],Lt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Mt(e,t){switch(e){case"focusin":case"focusout":Pt=null;break;case"dragenter":case"dragleave":Tt=null;break;case"mouseover":case"mouseout":Nt=null;break;case"pointerover":case"pointerout":Ot.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":$t.delete(t.pointerId)}}function Rt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&null!==(t=va(t))&&St(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function It(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=We(n)))return e.blockedOn=t,void At(e.priority,(function(){xt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&St(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);ke=r,n.target.dispatchEvent(r),ke=null,t.shift()}return!0}function jt(e,t,n){Ft(e)&&n.delete(t)}function Dt(){Et=!1,null!==Pt&&Ft(Pt)&&(Pt=null),null!==Tt&&Ft(Tt)&&(Tt=null),null!==Nt&&Ft(Nt)&&(Nt=null),Ot.forEach(jt),$t.forEach(jt)}function Bt(e,t){e.blockedOn===t&&(e.blockedOn=null,Et||(Et=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Dt)))}function Ut(e){function t(t){return Bt(t,e)}if(0<_t.length){Bt(_t[0],e);for(var n=1;n<_t.length;n++){var r=_t[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Pt&&Bt(Pt,e),null!==Tt&&Bt(Tt,e),null!==Nt&&Bt(Nt,e),Ot.forEach(t),$t.forEach(t),n=0;n<zt.length;n++)(r=zt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<zt.length&&null===(n=zt[0]).blockedOn;)It(n),null===n.blockedOn&&zt.shift()}var Wt=k.ReactCurrentBatchConfig,Ht=!0;function Vt(e,t,n,r){var a=vt,o=Wt.transition;Wt.transition=null;try{vt=1,Kt(e,t,n,r)}finally{vt=a,Wt.transition=o}}function Qt(e,t,n,r){var a=vt,o=Wt.transition;Wt.transition=null;try{vt=4,Kt(e,t,n,r)}finally{vt=a,Wt.transition=o}}function Kt(e,t,n,r){if(Ht){var a=Yt(e,t,n,r);if(null===a)Hr(e,t,r,qt,n),Mt(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Pt=Rt(Pt,e,t,n,r,a),!0;case"dragenter":return Tt=Rt(Tt,e,t,n,r,a),!0;case"mouseover":return Nt=Rt(Nt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Ot.set(o,Rt(Ot.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,$t.set(o,Rt($t.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Mt(e,r),4&t&&-1<Lt.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&wt(o),null===(o=Yt(e,t,n,r))&&Hr(e,t,r,qt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var qt=null;function Yt(e,t,n,r){if(qt=null,null!==(e=ba(e=we(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=We(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return qt=e,null}function Gt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Ze:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,Jt=null,Zt=null;function en(){if(Zt)return Zt;var e,t,n=Jt,r=n.length,a="value"in Xt?Xt.value:Xt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var l=r-e;for(t=1;t<=l&&n[r-t]===a[o-t];t++);return Zt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var l in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(l)&&(t=e[l],this[l]=t?t(a):a[l]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return I(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,un,sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(sn),fn=I({},sn,{view:0,detail:0}),dn=an(fn),pn=I({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:An,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(on=e.screenX-un.screenX,ln=e.screenY-un.screenY):ln=on=0,un=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=an(pn),hn=an(I({},pn,{dataTransfer:0})),gn=an(I({},fn,{relatedTarget:0})),yn=an(I({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=I({},sn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),kn=an(I({},sn,{data:0})),wn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=xn[e])&&!!t[e]}function An(){return Cn}var En=I({},fn,{key:function(e){if(e.key){var t=wn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:An,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),_n=an(En),Pn=an(I({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Tn=an(I({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:An})),Nn=an(I({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=I({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),$n=an(On),zn=[9,13,27,32],Ln=c&&"CompositionEvent"in window,Mn=null;c&&"documentMode"in document&&(Mn=document.documentMode);var Rn=c&&"TextEvent"in window&&!Mn,In=c&&(!Ln||Mn&&8<Mn&&11>=Mn),Fn=String.fromCharCode(32),jn=!1;function Dn(e,t){switch(e){case"keyup":return-1!==zn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Bn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1,Wn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Wn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ee(r),0<(t=Qr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Qn=null,Kn=null;function qn(e){Fr(e,0)}function Yn(e){if(K(ka(e)))return e}function Gn(e,t){if("change"===e)return t}var Xn=!1;if(c){var Jn;if(c){var Zn="oninput"in document;if(!Zn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Zn="function"==typeof er.oninput}Jn=Zn}else Jn=!1;Xn=Jn&&(!document.documentMode||9<document.documentMode)}function tr(){Qn&&(Qn.detachEvent("onpropertychange",nr),Kn=Qn=null)}function nr(e){if("value"===e.propertyName&&Yn(Kn)){var t=[];Vn(t,Kn,e,we(e)),Oe(qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Kn=n,(Qn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Kn)}function or(e,t){if("click"===e)return Yn(t)}function lr(e,t){if("input"===e||"change"===e)return Yn(t)}var ir="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function ur(e,t){if(ir(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!f.call(t,a)||!ir(e[a],t[a]))return!1}return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=q((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=cr(n,o);var l=cr(n,r);a&&l&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=c&&"documentMode"in document&&11>=document.documentMode,gr=null,yr=null,br=null,vr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==gr||gr!==q(r)||(r="selectionStart"in(r=gr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&ur(br,r)||(br=r,0<(r=Qr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Sr={animationend:wr("Animation","AnimationEnd"),animationiteration:wr("Animation","AnimationIteration"),animationstart:wr("Animation","AnimationStart"),transitionend:wr("Transition","TransitionEnd")},xr={},Cr={};function Ar(e){if(xr[e])return xr[e];if(!Sr[e])return e;var t,n=Sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Cr)return xr[e]=n[t];return e}c&&(Cr=document.createElement("div").style,"AnimationEvent"in window||(delete Sr.animationend.animation,delete Sr.animationiteration.animation,delete Sr.animationstart.animation),"TransitionEvent"in window||delete Sr.transitionend.transition);var Er=Ar("animationend"),_r=Ar("animationiteration"),Pr=Ar("animationstart"),Tr=Ar("transitionend"),Nr=new Map,Or="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function $r(e,t){Nr.set(e,t),u(t,[e])}for(var zr=0;zr<Or.length;zr++){var Lr=Or[zr];$r(Lr.toLowerCase(),"on"+(Lr[0].toUpperCase()+Lr.slice(1)))}$r(Er,"onAnimationEnd"),$r(_r,"onAnimationIteration"),$r(Pr,"onAnimationStart"),$r("dblclick","onDoubleClick"),$r("focusin","onFocus"),$r("focusout","onBlur"),$r(Tr,"onTransitionEnd"),s("onMouseEnter",["mouseout","mouseover"]),s("onMouseLeave",["mouseout","mouseover"]),s("onPointerEnter",["pointerout","pointerover"]),s("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Mr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Rr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Mr));function Ir(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,l,i,u,s){if(Be.apply(this,arguments),Re){if(!Re)throw Error(o(198));var c=Ie;Re=!1,Ie=null,Fe||(Fe=!0,je=c)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var l=r.length-1;0<=l;l--){var i=r[l],u=i.instance,s=i.currentTarget;if(i=i.listener,u!==o&&a.isPropagationStopped())break e;Ir(a,i,s),o=u}else for(l=0;l<r.length;l++){if(u=(i=r[l]).instance,s=i.currentTarget,i=i.listener,u!==o&&a.isPropagationStopped())break e;Ir(a,i,s),o=u}}}if(Fe)throw e=je,Fe=!1,je=null,e}function jr(e,t){var n=t[ha];void 0===n&&(n=t[ha]=new Set);var r=e+"__bubble";n.has(r)||(Wr(t,e,2,!1),n.add(r))}function Dr(e,t,n){var r=0;t&&(r|=4),Wr(n,e,r,t)}var Br="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[Br]){e[Br]=!0,l.forEach((function(t){"selectionchange"!==t&&(Rr.has(t)||Dr(t,!1,e),Dr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Br]||(t[Br]=!0,Dr("selectionchange",!1,t))}}function Wr(e,t,n,r){switch(Gt(t)){case 1:var a=Vt;break;case 4:a=Qt;break;default:a=Kt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var l=r.tag;if(3===l||4===l){var i=r.stateNode.containerInfo;if(i===a||8===i.nodeType&&i.parentNode===a)break;if(4===l)for(l=r.return;null!==l;){var u=l.tag;if((3===u||4===u)&&((u=l.stateNode.containerInfo)===a||8===u.nodeType&&u.parentNode===a))return;l=l.return}for(;null!==i;){if(null===(l=ba(i)))return;if(5===(u=l.tag)||6===u){r=o=l;continue e}i=i.parentNode}}r=r.return}Oe((function(){var r=o,a=we(n),l=[];e:{var i=Nr.get(e);if(void 0!==i){var u=cn,s=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":u=_n;break;case"focusin":s="focus",u=gn;break;case"focusout":s="blur",u=gn;break;case"beforeblur":case"afterblur":u=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=Tn;break;case Er:case _r:case Pr:u=yn;break;case Tr:u=Nn;break;case"scroll":u=dn;break;case"wheel":u=$n;break;case"copy":case"cut":case"paste":u=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=Pn}var c=!!(4&t),f=!c&&"scroll"===e,d=c?null!==i?i+"Capture":null:i;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==d&&null!=(h=$e(m,d))&&c.push(Vr(m,h,p))),f)break;m=m.return}0<c.length&&(i=new u(i,s,null,n,a),l.push({event:i,listeners:c}))}}if(!(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(i="mouseover"===e||"pointerover"===e)||n===ke||!(s=n.relatedTarget||n.fromElement)||!ba(s)&&!s[ma])&&(u||i)&&(i=a.window===a?a:(i=a.ownerDocument)?i.defaultView||i.parentWindow:window,u?(u=r,null!==(s=(s=n.relatedTarget||n.toElement)?ba(s):null)&&(s!==(f=Ue(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(u=null,s=r),u!==s)){if(c=mn,h="onMouseLeave",d="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,h="onPointerLeave",d="onPointerEnter",m="pointer"),f=null==u?i:ka(u),p=null==s?i:ka(s),(i=new c(h,m+"leave",u,n,a)).target=f,i.relatedTarget=p,h=null,ba(a)===r&&((c=new c(d,m+"enter",s,n,a)).target=p,c.relatedTarget=f,h=c),f=h,u&&s)e:{for(d=s,m=0,p=c=u;p;p=Kr(p))m++;for(p=0,h=d;h;h=Kr(h))p++;for(;0<m-p;)c=Kr(c),m--;for(;0<p-m;)d=Kr(d),p--;for(;m--;){if(c===d||null!==d&&c===d.alternate)break e;c=Kr(c),d=Kr(d)}c=null}else c=null;null!==u&&qr(l,i,u,c,!1),null!==s&&null!==f&&qr(l,f,s,c,!0)}if("select"===(u=(i=r?ka(r):window).nodeName&&i.nodeName.toLowerCase())||"input"===u&&"file"===i.type)var g=Gn;else if(Hn(i))if(Xn)g=lr;else{g=ar;var y=rr}else(u=i.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===i.type||"radio"===i.type)&&(g=or);switch(g&&(g=g(e,r))?Vn(l,g,n,a):(y&&y(e,i,r),"focusout"===e&&(y=i._wrapperState)&&y.controlled&&"number"===i.type&&ee(i,"number",i.value)),y=r?ka(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(gr=y,yr=r,br=null);break;case"focusout":br=yr=gr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,kr(l,n,a);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":kr(l,n,a)}var b;if(Ln)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Dn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(In&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Jt="value"in(Xt=a)?Xt.value:Xt.textContent,Un=!0)),0<(y=Qr(r,v)).length&&(v=new kn(v,e,null,n,a),l.push({event:v,listeners:y}),(b||null!==(b=Bn(n)))&&(v.data=b))),(b=Rn?function(e,t){switch(e){case"compositionend":return Bn(t);case"keypress":return 32!==t.which?null:(jn=!0,Fn);case"textInput":return(e=t.data)===Fn&&jn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!Ln&&Dn(e,t)?(e=en(),Zt=Jt=Xt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return In&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Qr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),l.push({event:a,listeners:r}),a.data=b)}Fr(l,t)}))}function Vr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Qr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=$e(e,n))&&r.unshift(Vr(e,o,a)),null!=(o=$e(e,t))&&r.push(Vr(e,o,a))),e=e.return}return r}function Kr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function qr(e,t,n,r,a){for(var o=t._reactName,l=[];null!==n&&n!==r;){var i=n,u=i.alternate,s=i.stateNode;if(null!==u&&u===r)break;5===i.tag&&null!==s&&(i=s,a?null!=(u=$e(n,o))&&l.unshift(Vr(n,u,i)):a||null!=(u=$e(n,o))&&l.push(Vr(n,u,i))),n=n.return}0!==l.length&&e.push({event:t,listeners:l})}var Yr=/\r\n?/g,Gr=/\u0000|\uFFFD/g;function Xr(e){return("string"==typeof e?e:""+e).replace(Yr,"\n").replace(Gr,"")}function Jr(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(o(425))}function Zr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,la="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(ia)}:ra;function ia(e){setTimeout((function(){throw e}))}function ua(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function sa(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var fa=Math.random().toString(36).slice(2),da="__reactFiber$"+fa,pa="__reactProps$"+fa,ma="__reactContainer$"+fa,ha="__reactEvents$"+fa,ga="__reactListeners$"+fa,ya="__reactHandles$"+fa;function ba(e){var t=e[da];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ma]||n[da]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[da])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[da]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ka(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function wa(e){return e[pa]||null}var Sa=[],xa=-1;function Ca(e){return{current:e}}function Aa(e){0>xa||(e.current=Sa[xa],Sa[xa]=null,xa--)}function Ea(e,t){xa++,Sa[xa]=e.current,e.current=t}var _a={},Pa=Ca(_a),Ta=Ca(!1),Na=_a;function Oa(e,t){var n=e.type.contextTypes;if(!n)return _a;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function $a(e){return null!=e.childContextTypes}function za(){Aa(Ta),Aa(Pa)}function La(e,t,n){if(Pa.current!==_a)throw Error(o(168));Ea(Pa,t),Ea(Ta,n)}function Ma(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,W(e)||"Unknown",a));return I({},n,r)}function Ra(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_a,Na=Pa.current,Ea(Pa,e),Ea(Ta,Ta.current),!0}function Ia(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Ma(e,t,Na),r.__reactInternalMemoizedMergedChildContext=e,Aa(Ta),Aa(Pa),Ea(Pa,e)):Aa(Ta),Ea(Ta,n)}var Fa=null,ja=!1,Da=!1;function Ba(e){null===Fa?Fa=[e]:Fa.push(e)}function Ua(){if(!Da&&null!==Fa){Da=!0;var e=0,t=vt;try{var n=Fa;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fa=null,ja=!1}catch(t){throw null!==Fa&&(Fa=Fa.slice(e+1)),Ke(Ze,Ua),t}finally{vt=t,Da=!1}}return null}var Wa=[],Ha=0,Va=null,Qa=0,Ka=[],qa=0,Ya=null,Ga=1,Xa="";function Ja(e,t){Wa[Ha++]=Qa,Wa[Ha++]=Va,Va=e,Qa=t}function Za(e,t,n){Ka[qa++]=Ga,Ka[qa++]=Xa,Ka[qa++]=Ya,Ya=e;var r=Ga;e=Xa;var a=32-lt(r)-1;r&=~(1<<a),n+=1;var o=32-lt(t)+a;if(30<o){var l=a-a%5;o=(r&(1<<l)-1).toString(32),r>>=l,a-=l,Ga=1<<32-lt(t)+a|n<<a|r,Xa=o+e}else Ga=1<<o|n<<a|r,Xa=e}function eo(e){null!==e.return&&(Ja(e,1),Za(e,1,0))}function to(e){for(;e===Va;)Va=Wa[--Ha],Wa[Ha]=null,Qa=Wa[--Ha],Wa[Ha]=null;for(;e===Ya;)Ya=Ka[--qa],Ka[qa]=null,Xa=Ka[--qa],Ka[qa]=null,Ga=Ka[--qa],Ka[qa]=null}var no=null,ro=null,ao=!1,oo=null;function lo(e,t){var n=Os(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function io(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=sa(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ya?{id:Ga,overflow:Xa}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Os(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function uo(e){return!(!(1&e.mode)||128&e.flags)}function so(e){if(ao){var t=ro;if(t){var n=t;if(!io(e,t)){if(uo(e))throw Error(o(418));t=sa(n.nextSibling);var r=no;t&&io(e,t)?lo(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(uo(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function fo(e){if(e!==no)return!1;if(!ao)return co(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(uo(e))throw po(),Error(o(418));for(;t;)lo(e,t),t=sa(t.nextSibling)}if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=sa(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?sa(e.stateNode.nextSibling):null;return!0}function po(){for(var e=ro;e;)e=sa(e.nextSibling)}function mo(){ro=no=null,ao=!1}function ho(e){null===oo?oo=[e]:oo.push(e)}var go=k.ReactCurrentBatchConfig;function yo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,l=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===l?t.ref:(t=function(e){var t=a.refs;null===e?delete t[l]:t[l]=e},t._stringRef=l,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function bo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function vo(e){return(0,e._init)(e._payload)}function ko(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=zs(e,t)).index=0,e.sibling=null,e}function l(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function i(t){return e&&null===t.alternate&&(t.flags|=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=Is(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function s(e,t,n,r){var o=n.type;return o===x?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===$&&vo(o)===t.type)?((r=a(t,n.props)).ref=yo(e,t,n),r.return=e,r):((r=Ls(n.type,n.key,n.props,null,e.mode,r)).ref=yo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function f(e,t,n,r,o){return null===t||7!==t.tag?((t=Ms(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Is(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case w:return(n=Ls(t.type,t.key,t.props,null,e.mode,n)).ref=yo(e,null,t),n.return=e,n;case S:return(t=Fs(t,e.mode,n)).return=e,t;case $:return d(e,(0,t._init)(t._payload),n)}if(te(t)||M(t))return(t=Ms(t,e.mode,n,null)).return=e,t;bo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case w:return n.key===a?s(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null;case $:return p(e,t,(a=n._init)(n._payload),r)}if(te(n)||M(n))return null!==a?null:f(e,t,n,r,null);bo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case w:return s(t,e=e.get(null===r.key?n:r.key)||null,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case $:return m(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||M(r))return f(t,e=e.get(n)||null,r,a,null);bo(t,r)}return null}function h(a,o,i,u){for(var s=null,c=null,f=o,h=o=0,g=null;null!==f&&h<i.length;h++){f.index>h?(g=f,f=null):g=f.sibling;var y=p(a,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(a,f),o=l(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(a,f),ao&&Ja(a,h),s;if(null===f){for(;h<i.length;h++)null!==(f=d(a,i[h],u))&&(o=l(f,o,h),null===c?s=f:c.sibling=f,c=f);return ao&&Ja(a,h),s}for(f=r(a,f);h<i.length;h++)null!==(g=m(f,a,h,i[h],u))&&(e&&null!==g.alternate&&f.delete(null===g.key?h:g.key),o=l(g,o,h),null===c?s=g:c.sibling=g,c=g);return e&&f.forEach((function(e){return t(a,e)})),ao&&Ja(a,h),s}function g(a,i,u,s){var c=M(u);if("function"!=typeof c)throw Error(o(150));if(null==(u=c.call(u)))throw Error(o(151));for(var f=c=null,h=i,g=i=0,y=null,b=u.next();null!==h&&!b.done;g++,b=u.next()){h.index>g?(y=h,h=null):y=h.sibling;var v=p(a,h,b.value,s);if(null===v){null===h&&(h=y);break}e&&h&&null===v.alternate&&t(a,h),i=l(v,i,g),null===f?c=v:f.sibling=v,f=v,h=y}if(b.done)return n(a,h),ao&&Ja(a,g),c;if(null===h){for(;!b.done;g++,b=u.next())null!==(b=d(a,b.value,s))&&(i=l(b,i,g),null===f?c=b:f.sibling=b,f=b);return ao&&Ja(a,g),c}for(h=r(a,h);!b.done;g++,b=u.next())null!==(b=m(h,a,g,b.value,s))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),i=l(b,i,g),null===f?c=b:f.sibling=b,f=b);return e&&h.forEach((function(e){return t(a,e)})),ao&&Ja(a,g),c}return function e(r,o,l,u){if("object"==typeof l&&null!==l&&l.type===x&&null===l.key&&(l=l.props.children),"object"==typeof l&&null!==l){switch(l.$$typeof){case w:e:{for(var s=l.key,c=o;null!==c;){if(c.key===s){if((s=l.type)===x){if(7===c.tag){n(r,c.sibling),(o=a(c,l.props.children)).return=r,r=o;break e}}else if(c.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===$&&vo(s)===c.type){n(r,c.sibling),(o=a(c,l.props)).ref=yo(r,c,l),o.return=r,r=o;break e}n(r,c);break}t(r,c),c=c.sibling}l.type===x?((o=Ms(l.props.children,r.mode,u,l.key)).return=r,r=o):((u=Ls(l.type,l.key,l.props,null,r.mode,u)).ref=yo(r,o,l),u.return=r,r=u)}return i(r);case S:e:{for(c=l.key;null!==o;){if(o.key===c){if(4===o.tag&&o.stateNode.containerInfo===l.containerInfo&&o.stateNode.implementation===l.implementation){n(r,o.sibling),(o=a(o,l.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Fs(l,r.mode,u)).return=r,r=o}return i(r);case $:return e(r,o,(c=l._init)(l._payload),u)}if(te(l))return h(r,o,l,u);if(M(l))return g(r,o,l,u);bo(r,l)}return"string"==typeof l&&""!==l||"number"==typeof l?(l=""+l,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,l)).return=r,r=o):(n(r,o),(o=Is(l,r.mode,u)).return=r,r=o),i(r)):n(r,o)}}var wo=ko(!0),So=ko(!1),xo=Ca(null),Co=null,Ao=null,Eo=null;function _o(){Eo=Ao=Co=null}function Po(e){var t=xo.current;Aa(xo),e._currentValue=t}function To(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function No(e,t){Co=e,Eo=Ao=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vi=!0),e.firstContext=null)}function Oo(e){var t=e._currentValue;if(Eo!==e)if(e={context:e,memoizedValue:t,next:null},null===Ao){if(null===Co)throw Error(o(308));Ao=e,Co.dependencies={lanes:0,firstContext:e}}else Ao=Ao.next=e;return t}var $o=null;function zo(e){null===$o?$o=[e]:$o.push(e)}function Lo(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,zo(t)):(n.next=a.next,a.next=n),t.interleaved=n,Mo(e,r)}function Mo(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ro=!1;function Io(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function jo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Do(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Pu){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Mo(e,n)}return null===(a=r.interleaved)?(t.next=t,zo(r)):(t.next=a.next,a.next=t),r.interleaved=t,Mo(e,n)}function Bo(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Uo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=l:o=o.next=l,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Wo(e,t,n,r){var a=e.updateQueue;Ro=!1;var o=a.firstBaseUpdate,l=a.lastBaseUpdate,i=a.shared.pending;if(null!==i){a.shared.pending=null;var u=i,s=u.next;u.next=null,null===l?o=s:l.next=s,l=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==l&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==o){var f=a.baseState;for(l=0,c=s=u=null,i=o;;){var d=i.lane,p=i.eventTime;if((r&d)===d){null!==c&&(c=c.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(d=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,d);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(d="function"==typeof(m=h.payload)?m.call(p,f,d):m))break e;f=I({},f,d);break e;case 2:Ro=!0}}null!==i.callback&&0!==i.lane&&(e.flags|=64,null===(d=a.effects)?a.effects=[i]:d.push(i))}else p={eventTime:p,lane:d,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=p,u=f):c=c.next=p,l|=d;if(null===(i=i.next)){if(null===(i=a.shared.pending))break;i=(d=i).next,d.next=null,a.lastBaseUpdate=d,a.shared.pending=null}}if(null===c&&(u=f),a.baseState=u,a.firstBaseUpdate=s,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{l|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ru|=l,e.lanes=l,e.memoizedState=f}}function Ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Vo={},Qo=Ca(Vo),Ko=Ca(Vo),qo=Ca(Vo);function Yo(e){if(e===Vo)throw Error(o(174));return e}function Go(e,t){switch(Ea(qo,t),Ea(Ko,e),Ea(Qo,Vo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ue(null,"");break;default:t=ue(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Aa(Qo),Ea(Qo,t)}function Xo(){Aa(Qo),Aa(Ko),Aa(qo)}function Jo(e){Yo(qo.current);var t=Yo(Qo.current),n=ue(t,e.type);t!==n&&(Ea(Ko,e),Ea(Qo,n))}function Zo(e){Ko.current===e&&(Aa(Qo),Aa(Ko))}var el=Ca(0);function tl(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var nl=[];function rl(){for(var e=0;e<nl.length;e++)nl[e]._workInProgressVersionPrimary=null;nl.length=0}var al=k.ReactCurrentDispatcher,ol=k.ReactCurrentBatchConfig,ll=0,il=null,ul=null,sl=null,cl=!1,fl=!1,dl=0,pl=0;function ml(){throw Error(o(321))}function hl(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ir(e[n],t[n]))return!1;return!0}function gl(e,t,n,r,a,l){if(ll=l,il=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,al.current=null===e||null===e.memoizedState?Zl:ei,e=n(r,a),fl){l=0;do{if(fl=!1,dl=0,25<=l)throw Error(o(301));l+=1,sl=ul=null,t.updateQueue=null,al.current=ti,e=n(r,a)}while(fl)}if(al.current=Jl,t=null!==ul&&null!==ul.next,ll=0,sl=ul=il=null,cl=!1,t)throw Error(o(300));return e}function yl(){var e=0!==dl;return dl=0,e}function bl(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===sl?il.memoizedState=sl=e:sl=sl.next=e,sl}function vl(){if(null===ul){var e=il.alternate;e=null!==e?e.memoizedState:null}else e=ul.next;var t=null===sl?il.memoizedState:sl.next;if(null!==t)sl=t,ul=e;else{if(null===e)throw Error(o(310));e={memoizedState:(ul=e).memoizedState,baseState:ul.baseState,baseQueue:ul.baseQueue,queue:ul.queue,next:null},null===sl?il.memoizedState=sl=e:sl=sl.next=e}return sl}function kl(e,t){return"function"==typeof t?t(e):t}function wl(e){var t=vl(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=ul,a=r.baseQueue,l=n.pending;if(null!==l){if(null!==a){var i=a.next;a.next=l.next,l.next=i}r.baseQueue=a=l,n.pending=null}if(null!==a){l=a.next,r=r.baseState;var u=i=null,s=null,c=l;do{var f=c.lane;if((ll&f)===f)null!==s&&(s=s.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var d={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===s?(u=s=d,i=r):s=s.next=d,il.lanes|=f,Ru|=f}c=c.next}while(null!==c&&c!==l);null===s?i=r:s.next=u,ir(r,t.memoizedState)||(vi=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=s,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{l=a.lane,il.lanes|=l,Ru|=l,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Sl(e){var t=vl(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,l=t.memoizedState;if(null!==a){n.pending=null;var i=a=a.next;do{l=e(l,i.action),i=i.next}while(i!==a);ir(l,t.memoizedState)||(vi=!0),t.memoizedState=l,null===t.baseQueue&&(t.baseState=l),n.lastRenderedState=l}return[l,r]}function xl(){}function Cl(e,t){var n=il,r=vl(),a=t(),l=!ir(r.memoizedState,a);if(l&&(r.memoizedState=a,vi=!0),r=r.queue,Rl(_l.bind(null,n,r,e),[e]),r.getSnapshot!==t||l||null!==sl&&1&sl.memoizedState.tag){if(n.flags|=2048,Ol(9,El.bind(null,n,r,a,t),void 0,null),null===Tu)throw Error(o(349));30&ll||Al(n,t,a)}return a}function Al(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=il.updateQueue)?(t={lastEffect:null,stores:null},il.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function El(e,t,n,r){t.value=n,t.getSnapshot=r,Pl(t)&&Tl(e)}function _l(e,t,n){return n((function(){Pl(t)&&Tl(e)}))}function Pl(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ir(e,n)}catch(e){return!0}}function Tl(e){var t=Mo(e,1);null!==t&&ns(t,e,1,-1)}function Nl(e){var t=bl();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:kl,lastRenderedState:e},t.queue=e,e=e.dispatch=ql.bind(null,il,e),[t.memoizedState,e]}function Ol(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=il.updateQueue)?(t={lastEffect:null,stores:null},il.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function $l(){return vl().memoizedState}function zl(e,t,n,r){var a=bl();il.flags|=e,a.memoizedState=Ol(1|t,n,void 0,void 0===r?null:r)}function Ll(e,t,n,r){var a=vl();r=void 0===r?null:r;var o=void 0;if(null!==ul){var l=ul.memoizedState;if(o=l.destroy,null!==r&&hl(r,l.deps))return void(a.memoizedState=Ol(t,n,o,r))}il.flags|=e,a.memoizedState=Ol(1|t,n,o,r)}function Ml(e,t){return zl(8390656,8,e,t)}function Rl(e,t){return Ll(2048,8,e,t)}function Il(e,t){return Ll(4,2,e,t)}function Fl(e,t){return Ll(4,4,e,t)}function jl(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Dl(e,t,n){return n=null!=n?n.concat([e]):null,Ll(4,4,jl.bind(null,t,e),n)}function Bl(){}function Ul(e,t){var n=vl();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&hl(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Wl(e,t){var n=vl();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&hl(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Hl(e,t,n){return 21&ll?(ir(n,t)||(n=ht(),il.lanes|=n,Ru|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vi=!0),e.memoizedState=n)}function Vl(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=ol.transition;ol.transition={};try{e(!1),t()}finally{vt=n,ol.transition=r}}function Ql(){return vl().memoizedState}function Kl(e,t,n){var r=ts(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Yl(e)?Gl(t,n):null!==(n=Lo(e,t,n,r))&&(ns(n,e,r,es()),Xl(n,t,r))}function ql(e,t,n){var r=ts(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Yl(e))Gl(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var l=t.lastRenderedState,i=o(l,n);if(a.hasEagerState=!0,a.eagerState=i,ir(i,l)){var u=t.interleaved;return null===u?(a.next=a,zo(t)):(a.next=u.next,u.next=a),void(t.interleaved=a)}}catch(e){}null!==(n=Lo(e,t,a,r))&&(ns(n,e,r,a=es()),Xl(n,t,r))}}function Yl(e){var t=e.alternate;return e===il||null!==t&&t===il}function Gl(e,t){fl=cl=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Xl(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Jl={readContext:Oo,useCallback:ml,useContext:ml,useEffect:ml,useImperativeHandle:ml,useInsertionEffect:ml,useLayoutEffect:ml,useMemo:ml,useReducer:ml,useRef:ml,useState:ml,useDebugValue:ml,useDeferredValue:ml,useTransition:ml,useMutableSource:ml,useSyncExternalStore:ml,useId:ml,unstable_isNewReconciler:!1},Zl={readContext:Oo,useCallback:function(e,t){return bl().memoizedState=[e,void 0===t?null:t],e},useContext:Oo,useEffect:Ml,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,zl(4194308,4,jl.bind(null,t,e),n)},useLayoutEffect:function(e,t){return zl(4194308,4,e,t)},useInsertionEffect:function(e,t){return zl(4,2,e,t)},useMemo:function(e,t){var n=bl();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bl();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Kl.bind(null,il,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bl().memoizedState=e},useState:Nl,useDebugValue:Bl,useDeferredValue:function(e){return bl().memoizedState=e},useTransition:function(){var e=Nl(!1),t=e[0];return e=Vl.bind(null,e[1]),bl().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=il,a=bl();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Tu)throw Error(o(349));30&ll||Al(r,t,n)}a.memoizedState=n;var l={value:n,getSnapshot:t};return a.queue=l,Ml(_l.bind(null,r,l,e),[e]),r.flags|=2048,Ol(9,El.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=bl(),t=Tu.identifierPrefix;if(ao){var n=Xa;t=":"+t+"R"+(n=(Ga&~(1<<32-lt(Ga)-1)).toString(32)+n),0<(n=dl++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=pl++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ei={readContext:Oo,useCallback:Ul,useContext:Oo,useEffect:Rl,useImperativeHandle:Dl,useInsertionEffect:Il,useLayoutEffect:Fl,useMemo:Wl,useReducer:wl,useRef:$l,useState:function(){return wl(kl)},useDebugValue:Bl,useDeferredValue:function(e){return Hl(vl(),ul.memoizedState,e)},useTransition:function(){return[wl(kl)[0],vl().memoizedState]},useMutableSource:xl,useSyncExternalStore:Cl,useId:Ql,unstable_isNewReconciler:!1},ti={readContext:Oo,useCallback:Ul,useContext:Oo,useEffect:Rl,useImperativeHandle:Dl,useInsertionEffect:Il,useLayoutEffect:Fl,useMemo:Wl,useReducer:Sl,useRef:$l,useState:function(){return Sl(kl)},useDebugValue:Bl,useDeferredValue:function(e){var t=vl();return null===ul?t.memoizedState=e:Hl(t,ul.memoizedState,e)},useTransition:function(){return[Sl(kl)[0],vl().memoizedState]},useMutableSource:xl,useSyncExternalStore:Cl,useId:Ql,unstable_isNewReconciler:!1};function ni(e,t){if(e&&e.defaultProps){for(var n in t=I({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function ri(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:I({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ai={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=es(),a=ts(e),o=jo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Do(e,o,a))&&(ns(t,e,a,r),Bo(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=es(),a=ts(e),o=jo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Do(e,o,a))&&(ns(t,e,a,r),Bo(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=es(),r=ts(e),a=jo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Do(e,a,r))&&(ns(t,e,r,n),Bo(t,e,r))}};function oi(e,t,n,r,a,o,l){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,l):!(t.prototype&&t.prototype.isPureReactComponent&&ur(n,r)&&ur(a,o))}function li(e,t,n){var r=!1,a=_a,o=t.contextType;return"object"==typeof o&&null!==o?o=Oo(o):(a=$a(t)?Na:Pa.current,o=(r=null!=(r=t.contextTypes))?Oa(e,a):_a),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ai,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ii(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ai.enqueueReplaceState(t,t.state,null)}function ui(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs={},Io(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Oo(o):(o=$a(t)?Na:Pa.current,a.context=Oa(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(ri(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&ai.enqueueReplaceState(a,a.state,null),Wo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function si(e,t){try{var n="",r=t;do{n+=B(r),r=r.return}while(r);var a=n}catch(e){a="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:a,digest:null}}function ci(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function fi(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var di="function"==typeof WeakMap?WeakMap:Map;function pi(e,t,n){(n=jo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hu||(Hu=!0,Vu=r),fi(0,t)},n}function mi(e,t,n){(n=jo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){fi(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){fi(0,t),"function"!=typeof r&&(null===Qu?Qu=new Set([this]):Qu.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function hi(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new di;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=As.bind(null,e,t,n),t.then(e,e))}function gi(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yi(e,t,n,r,a){return 1&e.mode?(e.flags|=65536,e.lanes=a,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=jo(-1,1)).tag=2,Do(n,t,1))),n.lanes|=1),e)}var bi=k.ReactCurrentOwner,vi=!1;function ki(e,t,n,r){t.child=null===e?So(t,null,n,r):wo(t,e.child,n,r)}function wi(e,t,n,r,a){n=n.render;var o=t.ref;return No(t,a),r=gl(e,t,n,r,o,a),n=yl(),null===e||vi?(ao&&n&&eo(t),t.flags|=1,ki(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hi(e,t,a))}function Si(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||$s(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ls(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,xi(e,t,o,r,a))}if(o=e.child,!(e.lanes&a)){var l=o.memoizedProps;if((n=null!==(n=n.compare)?n:ur)(l,r)&&e.ref===t.ref)return Hi(e,t,a)}return t.flags|=1,(e=zs(o,r)).ref=t.ref,e.return=t,t.child=e}function xi(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(ur(o,r)&&e.ref===t.ref){if(vi=!1,t.pendingProps=r=o,!(e.lanes&a))return t.lanes=e.lanes,Hi(e,t,a);131072&e.flags&&(vi=!0)}}return Ei(e,t,n,r,a)}function Ci(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ea(zu,$u),$u|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Ea(zu,$u),$u|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ea(zu,$u),$u|=n;else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Ea(zu,$u),$u|=r;return ki(e,t,a,n),t.child}function Ai(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ei(e,t,n,r,a){var o=$a(n)?Na:Pa.current;return o=Oa(t,o),No(t,a),n=gl(e,t,n,r,o,a),r=yl(),null===e||vi?(ao&&r&&eo(t),t.flags|=1,ki(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hi(e,t,a))}function _i(e,t,n,r,a){if($a(n)){var o=!0;Ra(t)}else o=!1;if(No(t,a),null===t.stateNode)Wi(e,t),li(t,n,r),ui(t,n,r,a),r=!0;else if(null===e){var l=t.stateNode,i=t.memoizedProps;l.props=i;var u=l.context,s=n.contextType;s="object"==typeof s&&null!==s?Oo(s):Oa(t,s=$a(n)?Na:Pa.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof l.getSnapshotBeforeUpdate;f||"function"!=typeof l.UNSAFE_componentWillReceiveProps&&"function"!=typeof l.componentWillReceiveProps||(i!==r||u!==s)&&ii(t,l,r,s),Ro=!1;var d=t.memoizedState;l.state=d,Wo(t,r,l,a),u=t.memoizedState,i!==r||d!==u||Ta.current||Ro?("function"==typeof c&&(ri(t,n,c,r),u=t.memoizedState),(i=Ro||oi(t,n,i,r,d,u,s))?(f||"function"!=typeof l.UNSAFE_componentWillMount&&"function"!=typeof l.componentWillMount||("function"==typeof l.componentWillMount&&l.componentWillMount(),"function"==typeof l.UNSAFE_componentWillMount&&l.UNSAFE_componentWillMount()),"function"==typeof l.componentDidMount&&(t.flags|=4194308)):("function"==typeof l.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),l.props=r,l.state=u,l.context=s,r=i):("function"==typeof l.componentDidMount&&(t.flags|=4194308),r=!1)}else{l=t.stateNode,Fo(e,t),i=t.memoizedProps,s=t.type===t.elementType?i:ni(t.type,i),l.props=s,f=t.pendingProps,d=l.context,u="object"==typeof(u=n.contextType)&&null!==u?Oo(u):Oa(t,u=$a(n)?Na:Pa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof l.getSnapshotBeforeUpdate)||"function"!=typeof l.UNSAFE_componentWillReceiveProps&&"function"!=typeof l.componentWillReceiveProps||(i!==f||d!==u)&&ii(t,l,r,u),Ro=!1,d=t.memoizedState,l.state=d,Wo(t,r,l,a);var m=t.memoizedState;i!==f||d!==m||Ta.current||Ro?("function"==typeof p&&(ri(t,n,p,r),m=t.memoizedState),(s=Ro||oi(t,n,s,r,d,m,u)||!1)?(c||"function"!=typeof l.UNSAFE_componentWillUpdate&&"function"!=typeof l.componentWillUpdate||("function"==typeof l.componentWillUpdate&&l.componentWillUpdate(r,m,u),"function"==typeof l.UNSAFE_componentWillUpdate&&l.UNSAFE_componentWillUpdate(r,m,u)),"function"==typeof l.componentDidUpdate&&(t.flags|=4),"function"==typeof l.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof l.componentDidUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof l.getSnapshotBeforeUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),l.props=r,l.state=m,l.context=u,r=s):("function"!=typeof l.componentDidUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof l.getSnapshotBeforeUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Pi(e,t,n,r,o,a)}function Pi(e,t,n,r,a,o){Ai(e,t);var l=!!(128&t.flags);if(!r&&!l)return a&&Ia(t,n,!1),Hi(e,t,o);r=t.stateNode,bi.current=t;var i=l&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&l?(t.child=wo(t,e.child,null,o),t.child=wo(t,null,i,o)):ki(e,t,i,o),t.memoizedState=r.state,a&&Ia(t,n,!0),t.child}function Ti(e){var t=e.stateNode;t.pendingContext?La(0,t.pendingContext,t.pendingContext!==t.context):t.context&&La(0,t.context,!1),Go(e,t.containerInfo)}function Ni(e,t,n,r,a){return mo(),ho(a),t.flags|=256,ki(e,t,n,r),t.child}var Oi,$i,zi,Li,Mi={dehydrated:null,treeContext:null,retryLane:0};function Ri(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ii(e,t,n){var r,a=t.pendingProps,l=el.current,i=!1,u=!!(128&t.flags);if((r=u)||(r=(null===e||null!==e.memoizedState)&&!!(2&l)),r?(i=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(l|=1),Ea(el,1&l),null===e)return so(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(u=a.children,e=a.fallback,i?(a=t.mode,i=t.child,u={mode:"hidden",children:u},1&a||null===i?i=Rs(u,a,0,null):(i.childLanes=0,i.pendingProps=u),e=Ms(e,a,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=Ri(n),t.memoizedState=Mi,e):Fi(t,u));if(null!==(l=e.memoizedState)&&null!==(r=l.dehydrated))return function(e,t,n,r,a,l,i){if(n)return 256&t.flags?(t.flags&=-257,ji(e,t,i,r=ci(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(l=r.fallback,a=t.mode,r=Rs({mode:"visible",children:r.children},a,0,null),(l=Ms(l,a,i,null)).flags|=2,r.return=t,l.return=t,r.sibling=l,t.child=r,1&t.mode&&wo(t,e.child,null,i),t.child.memoizedState=Ri(i),t.memoizedState=Mi,l);if(!(1&t.mode))return ji(e,t,i,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var u=r.dgst;return r=u,ji(e,t,i,r=ci(l=Error(o(419)),r,void 0))}if(u=!!(i&e.childLanes),vi||u){if(null!==(r=Tu)){switch(i&-i){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=a&(r.suspendedLanes|i)?0:a)&&a!==l.retryLane&&(l.retryLane=a,Mo(e,a),ns(r,e,a,-1))}return hs(),ji(e,t,i,r=ci(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=_s.bind(null,e),a._reactRetry=t,null):(e=l.treeContext,ro=sa(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Ka[qa++]=Ga,Ka[qa++]=Xa,Ka[qa++]=Ya,Ga=e.id,Xa=e.overflow,Ya=t),(t=Fi(t,r.children)).flags|=4096,t)}(e,t,u,a,r,l,n);if(i){i=a.fallback,u=t.mode,r=(l=e.child).sibling;var s={mode:"hidden",children:a.children};return 1&u||t.child===l?(a=zs(l,s)).subtreeFlags=14680064&l.subtreeFlags:((a=t.child).childLanes=0,a.pendingProps=s,t.deletions=null),null!==r?i=zs(r,i):(i=Ms(i,u,n,null)).flags|=2,i.return=t,a.return=t,a.sibling=i,t.child=a,a=i,i=t.child,u=null===(u=e.child.memoizedState)?Ri(n):{baseLanes:u.baseLanes|n,cachePool:null,transitions:u.transitions},i.memoizedState=u,i.childLanes=e.childLanes&~n,t.memoizedState=Mi,a}return e=(i=e.child).sibling,a=zs(i,{mode:"visible",children:a.children}),!(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Fi(e,t){return(t=Rs({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function ji(e,t,n,r){return null!==r&&ho(r),wo(t,e.child,null,n),(e=Fi(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Di(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),To(e.return,t,n)}function Bi(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Ui(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(ki(e,t,r.children,n),2&(r=el.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Di(e,n,t);else if(19===e.tag)Di(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ea(el,r),1&t.mode)switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===tl(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Bi(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===tl(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Bi(t,!0,n,null,o);break;case"together":Bi(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function Wi(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hi(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ru|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vi(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Qi(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ki(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Qi(t),null;case 1:case 17:return $a(t.type)&&za(),Qi(t),null;case 3:return r=t.stateNode,Xo(),Aa(Ta),Aa(Pa),rl(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fo(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==oo&&(ls(oo),oo=null))),$i(e,t),Qi(t),null;case 5:Zo(t);var a=Yo(qo.current);if(n=t.type,null!==e&&null!=t.stateNode)zi(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Qi(t),null}if(e=Yo(Qo.current),fo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[da]=t,r[pa]=l,e=!!(1&t.mode),n){case"dialog":jr("cancel",r),jr("close",r);break;case"iframe":case"object":case"embed":jr("load",r);break;case"video":case"audio":for(a=0;a<Mr.length;a++)jr(Mr[a],r);break;case"source":jr("error",r);break;case"img":case"image":case"link":jr("error",r),jr("load",r);break;case"details":jr("toggle",r);break;case"input":G(r,l),jr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},jr("invalid",r);break;case"textarea":ae(r,l),jr("invalid",r)}for(var u in be(n,l),a=null,l)if(l.hasOwnProperty(u)){var s=l[u];"children"===u?"string"==typeof s?r.textContent!==s&&(!0!==l.suppressHydrationWarning&&Jr(r.textContent,s,e),a=["children",s]):"number"==typeof s&&r.textContent!==""+s&&(!0!==l.suppressHydrationWarning&&Jr(r.textContent,s,e),a=["children",""+s]):i.hasOwnProperty(u)&&null!=s&&"onScroll"===u&&jr("scroll",r)}switch(n){case"input":Q(r),Z(r,l,!0);break;case"textarea":Q(r),le(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Zr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{u=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=ie(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[da]=t,e[pa]=r,Oi(e,t,!1,!1),t.stateNode=e;e:{switch(u=ve(n,r),n){case"dialog":jr("cancel",e),jr("close",e),a=r;break;case"iframe":case"object":case"embed":jr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Mr.length;a++)jr(Mr[a],e);a=r;break;case"source":jr("error",e),a=r;break;case"img":case"image":case"link":jr("error",e),jr("load",e),a=r;break;case"details":jr("toggle",e),a=r;break;case"input":G(e,r),a=Y(e,r),jr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=I({},r,{value:void 0}),jr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),jr("invalid",e)}for(l in be(n,a),s=a)if(s.hasOwnProperty(l)){var c=s[l];"style"===l?ge(e,c):"dangerouslySetInnerHTML"===l?null!=(c=c?c.__html:void 0)&&fe(e,c):"children"===l?"string"==typeof c?("textarea"!==n||""!==c)&&de(e,c):"number"==typeof c&&de(e,""+c):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(i.hasOwnProperty(l)?null!=c&&"onScroll"===l&&jr("scroll",e):null!=c&&v(e,l,c,u))}switch(n){case"input":Q(e),Z(e,r,!1);break;case"textarea":Q(e),le(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ne(e,!!r.multiple,l,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Zr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Qi(t),null;case 6:if(e&&null!=t.stateNode)Li(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=Yo(qo.current),Yo(Qo.current),fo(t)){if(r=t.stateNode,n=t.memoizedProps,r[da]=t,(l=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Jr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Jr(r.nodeValue,n,!!(1&e.mode))}l&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[da]=t,t.stateNode=r}return Qi(t),null;case 13:if(Aa(el),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&1&t.mode&&!(128&t.flags))po(),mo(),t.flags|=98560,l=!1;else if(l=fo(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(o(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(o(317));l[da]=t}else mo(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Qi(t),l=!1}else null!==oo&&(ls(oo),oo=null),l=!0;if(!l)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&el.current?0===Lu&&(Lu=3):hs())),null!==t.updateQueue&&(t.flags|=4),Qi(t),null);case 4:return Xo(),$i(e,t),null===e&&Ur(t.stateNode.containerInfo),Qi(t),null;case 10:return Po(t.type._context),Qi(t),null;case 19:if(Aa(el),null===(l=t.memoizedState))return Qi(t),null;if(r=!!(128&t.flags),null===(u=l.rendering))if(r)Vi(l,!1);else{if(0!==Lu||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(u=tl(e))){for(t.flags|=128,Vi(l,!1),null!==(r=u.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=14680066,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ea(el,1&el.current|2),t.child}e=e.sibling}null!==l.tail&&Xe()>Uu&&(t.flags|=128,r=!0,Vi(l,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=tl(u))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vi(l,!0),null===l.tail&&"hidden"===l.tailMode&&!u.alternate&&!ao)return Qi(t),null}else 2*Xe()-l.renderingStartTime>Uu&&1073741824!==n&&(t.flags|=128,r=!0,Vi(l,!1),t.lanes=4194304);l.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=l.last)?n.sibling=u:t.child=u,l.last=u)}return null!==l.tail?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Xe(),t.sibling=null,n=el.current,Ea(el,r?1&n|2:1&n),t):(Qi(t),null);case 22:case 23:return fs(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&$u)&&(Qi(t),6&t.subtreeFlags&&(t.flags|=8192)):Qi(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function qi(e,t){switch(to(t),t.tag){case 1:return $a(t.type)&&za(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Xo(),Aa(Ta),Aa(Pa),rl(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Zo(t),null;case 13:if(Aa(el),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));mo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Aa(el),null;case 4:return Xo(),null;case 10:return Po(t.type._context),null;case 22:case 23:return fs(),null;default:return null}}Oi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},$i=function(){},zi=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Yo(Qo.current);var o,l=null;switch(n){case"input":a=Y(e,a),r=Y(e,r),l=[];break;case"select":a=I({},a,{value:void 0}),r=I({},r,{value:void 0}),l=[];break;case"textarea":a=re(e,a),r=re(e,r),l=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Zr)}for(c in be(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var u=a[c];for(o in u)u.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(i.hasOwnProperty(c)?l||(l=[]):(l=l||[]).push(c,null));for(c in r){var s=r[c];if(u=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&s!==u&&(null!=s||null!=u))if("style"===c)if(u){for(o in u)!u.hasOwnProperty(o)||s&&s.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in s)s.hasOwnProperty(o)&&u[o]!==s[o]&&(n||(n={}),n[o]=s[o])}else n||(l||(l=[]),l.push(c,n)),n=s;else"dangerouslySetInnerHTML"===c?(s=s?s.__html:void 0,u=u?u.__html:void 0,null!=s&&u!==s&&(l=l||[]).push(c,s)):"children"===c?"string"!=typeof s&&"number"!=typeof s||(l=l||[]).push(c,""+s):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(i.hasOwnProperty(c)?(null!=s&&"onScroll"===c&&jr("scroll",e),l||u===s||(l=[])):(l=l||[]).push(c,s))}n&&(l=l||[]).push("style",n);var c=l;(t.updateQueue=c)&&(t.flags|=4)}},Li=function(e,t,n,r){n!==r&&(t.flags|=4)};var Yi=!1,Gi=!1,Xi="function"==typeof WeakSet?WeakSet:Set,Ji=null;function Zi(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Cs(e,t,n)}else n.current=null}function eu(e,t,n){try{n()}catch(n){Cs(e,t,n)}}var tu=!1;function nu(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&eu(t,n,o)}a=a.next}while(a!==r)}}function ru(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function au(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function ou(e){var t=e.alternate;null!==t&&(e.alternate=null,ou(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[da],delete t[pa],delete t[ha],delete t[ga],delete t[ya]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function lu(e){return 5===e.tag||3===e.tag||4===e.tag}function iu(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||lu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function uu(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Zr));else if(4!==r&&null!==(e=e.child))for(uu(e,t,n),e=e.sibling;null!==e;)uu(e,t,n),e=e.sibling}function su(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(su(e,t,n),e=e.sibling;null!==e;)su(e,t,n),e=e.sibling}var cu=null,fu=!1;function du(e,t,n){for(n=n.child;null!==n;)pu(e,t,n),n=n.sibling}function pu(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(e){}switch(n.tag){case 5:Gi||Zi(n,t);case 6:var r=cu,a=fu;cu=null,du(e,t,n),fu=a,null!==(cu=r)&&(fu?(e=cu,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cu.removeChild(n.stateNode));break;case 18:null!==cu&&(fu?(e=cu,n=n.stateNode,8===e.nodeType?ua(e.parentNode,n):1===e.nodeType&&ua(e,n),Ut(e)):ua(cu,n.stateNode));break;case 4:r=cu,a=fu,cu=n.stateNode.containerInfo,fu=!0,du(e,t,n),cu=r,fu=a;break;case 0:case 11:case 14:case 15:if(!Gi&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){a=r=r.next;do{var o=a,l=o.destroy;o=o.tag,void 0!==l&&(2&o||4&o)&&eu(n,t,l),a=a.next}while(a!==r)}du(e,t,n);break;case 1:if(!Gi&&(Zi(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Cs(n,t,e)}du(e,t,n);break;case 21:du(e,t,n);break;case 22:1&n.mode?(Gi=(r=Gi)||null!==n.memoizedState,du(e,t,n),Gi=r):du(e,t,n);break;default:du(e,t,n)}}function mu(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xi),t.forEach((function(t){var r=Ps.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function hu(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var l=e,i=t,u=i;e:for(;null!==u;){switch(u.tag){case 5:cu=u.stateNode,fu=!1;break e;case 3:case 4:cu=u.stateNode.containerInfo,fu=!0;break e}u=u.return}if(null===cu)throw Error(o(160));pu(l,i,a),cu=null,fu=!1;var s=a.alternate;null!==s&&(s.return=null),a.return=null}catch(e){Cs(a,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gu(t,e),t=t.sibling}function gu(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(hu(t,e),yu(e),4&r){try{nu(3,e,e.return),ru(3,e)}catch(t){Cs(e,e.return,t)}try{nu(5,e,e.return)}catch(t){Cs(e,e.return,t)}}break;case 1:hu(t,e),yu(e),512&r&&null!==n&&Zi(n,n.return);break;case 5:if(hu(t,e),yu(e),512&r&&null!==n&&Zi(n,n.return),32&e.flags){var a=e.stateNode;try{de(a,"")}catch(t){Cs(e,e.return,t)}}if(4&r&&null!=(a=e.stateNode)){var l=e.memoizedProps,i=null!==n?n.memoizedProps:l,u=e.type,s=e.updateQueue;if(e.updateQueue=null,null!==s)try{"input"===u&&"radio"===l.type&&null!=l.name&&X(a,l),ve(u,i);var c=ve(u,l);for(i=0;i<s.length;i+=2){var f=s[i],d=s[i+1];"style"===f?ge(a,d):"dangerouslySetInnerHTML"===f?fe(a,d):"children"===f?de(a,d):v(a,f,d,c)}switch(u){case"input":J(a,l);break;case"textarea":oe(a,l);break;case"select":var p=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!l.multiple;var m=l.value;null!=m?ne(a,!!l.multiple,m,!1):p!==!!l.multiple&&(null!=l.defaultValue?ne(a,!!l.multiple,l.defaultValue,!0):ne(a,!!l.multiple,l.multiple?[]:"",!1))}a[pa]=l}catch(t){Cs(e,e.return,t)}}break;case 6:if(hu(t,e),yu(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,l=e.memoizedProps;try{a.nodeValue=l}catch(t){Cs(e,e.return,t)}}break;case 3:if(hu(t,e),yu(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(t){Cs(e,e.return,t)}break;case 4:default:hu(t,e),yu(e);break;case 13:hu(t,e),yu(e),8192&(a=e.child).flags&&(l=null!==a.memoizedState,a.stateNode.isHidden=l,!l||null!==a.alternate&&null!==a.alternate.memoizedState||(Bu=Xe())),4&r&&mu(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Gi=(c=Gi)||f,hu(t,e),Gi=c):hu(t,e),yu(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!f&&1&e.mode)for(Ji=e,f=e.child;null!==f;){for(d=Ji=f;null!==Ji;){switch(m=(p=Ji).child,p.tag){case 0:case 11:case 14:case 15:nu(4,p,p.return);break;case 1:Zi(p,p.return);var h=p.stateNode;if("function"==typeof h.componentWillUnmount){r=p,n=p.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(e){Cs(r,n,e)}}break;case 5:Zi(p,p.return);break;case 22:if(null!==p.memoizedState){wu(d);continue}}null!==m?(m.return=p,Ji=m):wu(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{a=d.stateNode,c?"function"==typeof(l=a.style).setProperty?l.setProperty("display","none","important"):l.display="none":(u=d.stateNode,i=null!=(s=d.memoizedProps.style)&&s.hasOwnProperty("display")?s.display:null,u.style.display=he("display",i))}catch(t){Cs(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=c?"":d.memoizedProps}catch(t){Cs(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&&(f=null),d=d.return}f===d&&(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:hu(t,e),yu(e),4&r&&mu(e);case 21:}}function yu(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(lu(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(de(a,""),r.flags&=-33),su(e,iu(e),a);break;case 3:case 4:var l=r.stateNode.containerInfo;uu(e,iu(e),l);break;default:throw Error(o(161))}}catch(t){Cs(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bu(e,t,n){Ji=e,vu(e,t,n)}function vu(e,t,n){for(var r=!!(1&e.mode);null!==Ji;){var a=Ji,o=a.child;if(22===a.tag&&r){var l=null!==a.memoizedState||Yi;if(!l){var i=a.alternate,u=null!==i&&null!==i.memoizedState||Gi;i=Yi;var s=Gi;if(Yi=l,(Gi=u)&&!s)for(Ji=a;null!==Ji;)u=(l=Ji).child,22===l.tag&&null!==l.memoizedState?Su(a):null!==u?(u.return=l,Ji=u):Su(a);for(;null!==o;)Ji=o,vu(o,t,n),o=o.sibling;Ji=a,Yi=i,Gi=s}ku(e)}else 8772&a.subtreeFlags&&null!==o?(o.return=a,Ji=o):ku(e)}}function ku(e){for(;null!==Ji;){var t=Ji;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Gi||ru(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Gi)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:ni(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var l=t.updateQueue;null!==l&&Ho(t,l,r);break;case 3:var i=t.updateQueue;if(null!==i){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ho(t,i,n)}break;case 5:var u=t.stateNode;if(null===n&&4&t.flags){n=u;var s=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":s.autoFocus&&n.focus();break;case"img":s.src&&(n.src=s.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&&Ut(d)}}}break;default:throw Error(o(163))}Gi||512&t.flags&&au(t)}catch(e){Cs(t,t.return,e)}}if(t===e){Ji=null;break}if(null!==(n=t.sibling)){n.return=t.return,Ji=n;break}Ji=t.return}}function wu(e){for(;null!==Ji;){var t=Ji;if(t===e){Ji=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Ji=n;break}Ji=t.return}}function Su(e){for(;null!==Ji;){var t=Ji;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ru(4,t)}catch(e){Cs(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(e){Cs(t,a,e)}}var o=t.return;try{au(t)}catch(e){Cs(t,o,e)}break;case 5:var l=t.return;try{au(t)}catch(e){Cs(t,l,e)}}}catch(e){Cs(t,t.return,e)}if(t===e){Ji=null;break}var i=t.sibling;if(null!==i){i.return=t.return,Ji=i;break}Ji=t.return}}var xu,Cu=Math.ceil,Au=k.ReactCurrentDispatcher,Eu=k.ReactCurrentOwner,_u=k.ReactCurrentBatchConfig,Pu=0,Tu=null,Nu=null,Ou=0,$u=0,zu=Ca(0),Lu=0,Mu=null,Ru=0,Iu=0,Fu=0,ju=null,Du=null,Bu=0,Uu=1/0,Wu=null,Hu=!1,Vu=null,Qu=null,Ku=!1,qu=null,Yu=0,Gu=0,Xu=null,Ju=-1,Zu=0;function es(){return 6&Pu?Xe():-1!==Ju?Ju:Ju=Xe()}function ts(e){return 1&e.mode?2&Pu&&0!==Ou?Ou&-Ou:null!==go.transition?(0===Zu&&(Zu=ht()),Zu):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Gt(e.type):1}function ns(e,t,n,r){if(50<Gu)throw Gu=0,Xu=null,Error(o(185));yt(e,n,r),2&Pu&&e===Tu||(e===Tu&&(!(2&Pu)&&(Iu|=n),4===Lu&&is(e,Ou)),rs(e,r),1===n&&0===Pu&&!(1&t.mode)&&(Uu=Xe()+500,ja&&Ua()))}function rs(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var l=31-lt(o),i=1<<l,u=a[l];-1===u?i&n&&!(i&r)||(a[l]=pt(i,t)):u<=t&&(e.expiredLanes|=i),o&=~i}}(e,t);var r=dt(e,e===Tu?Ou:0);if(0===r)null!==n&&qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&qe(n),1===t)0===e.tag?function(e){ja=!0,Ba(e)}(us.bind(null,e)):Ba(us.bind(null,e)),la((function(){!(6&Pu)&&Ua()})),n=null;else{switch(kt(r)){case 1:n=Ze;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Ts(n,as.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function as(e,t){if(Ju=-1,Zu=0,6&Pu)throw Error(o(327));var n=e.callbackNode;if(Ss()&&e.callbackNode!==n)return null;var r=dt(e,e===Tu?Ou:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=gs(e,r);else{t=r;var a=Pu;Pu|=2;var l=ms();for(Tu===e&&Ou===t||(Wu=null,Uu=Xe()+500,ds(e,t));;)try{bs();break}catch(t){ps(e,t)}_o(),Au.current=l,Pu=a,null!==Nu?t=0:(Tu=null,Ou=0,t=Lu)}if(0!==t){if(2===t&&0!==(a=mt(e))&&(r=a,t=os(e,a)),1===t)throw n=Mu,ds(e,0),is(e,r),rs(e,Xe()),n;if(6===t)is(e,r);else{if(a=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!ir(o(),a))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)||(t=gs(e,r),2===t&&(l=mt(e),0!==l&&(r=l,t=os(e,l))),1!==t)))throw n=Mu,ds(e,0),is(e,r),rs(e,Xe()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:ws(e,Du,Wu);break;case 3:if(is(e,r),(130023424&r)===r&&10<(t=Bu+500-Xe())){if(0!==dt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){es(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(ws.bind(null,e,Du,Wu),t);break}ws(e,Du,Wu);break;case 4:if(is(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var i=31-lt(r);l=1<<i,(i=t[i])>a&&(a=i),r&=~l}if(r=a,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Cu(r/1960))-r)){e.timeoutHandle=ra(ws.bind(null,e,Du,Wu),r);break}ws(e,Du,Wu);break;default:throw Error(o(329))}}}return rs(e,Xe()),e.callbackNode===n?as.bind(null,e):null}function os(e,t){var n=ju;return e.current.memoizedState.isDehydrated&&(ds(e,t).flags|=256),2!==(e=gs(e,t))&&(t=Du,Du=n,null!==t&&ls(t)),e}function ls(e){null===Du?Du=e:Du.push.apply(Du,e)}function is(e,t){for(t&=~Fu,t&=~Iu,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-lt(t),r=1<<n;e[n]=-1,t&=~r}}function us(e){if(6&Pu)throw Error(o(327));Ss();var t=dt(e,0);if(!(1&t))return rs(e,Xe()),null;var n=gs(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=os(e,r))}if(1===n)throw n=Mu,ds(e,0),is(e,t),rs(e,Xe()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,ws(e,Du,Wu),rs(e,Xe()),null}function ss(e,t){var n=Pu;Pu|=1;try{return e(t)}finally{0===(Pu=n)&&(Uu=Xe()+500,ja&&Ua())}}function cs(e){null!==qu&&0===qu.tag&&!(6&Pu)&&Ss();var t=Pu;Pu|=1;var n=_u.transition,r=vt;try{if(_u.transition=null,vt=1,e)return e()}finally{vt=r,_u.transition=n,!(6&(Pu=t))&&Ua()}}function fs(){$u=zu.current,Aa(zu)}function ds(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==Nu)for(n=Nu.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&za();break;case 3:Xo(),Aa(Ta),Aa(Pa),rl();break;case 5:Zo(r);break;case 4:Xo();break;case 13:case 19:Aa(el);break;case 10:Po(r.type._context);break;case 22:case 23:fs()}n=n.return}if(Tu=e,Nu=e=zs(e.current,null),Ou=$u=t,Lu=0,Mu=null,Fu=Iu=Ru=0,Du=ju=null,null!==$o){for(t=0;t<$o.length;t++)if(null!==(r=(n=$o[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var l=o.next;o.next=a,r.next=l}n.pending=r}$o=null}return e}function ps(e,t){for(;;){var n=Nu;try{if(_o(),al.current=Jl,cl){for(var r=il.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}cl=!1}if(ll=0,sl=ul=il=null,fl=!1,dl=0,Eu.current=null,null===n||null===n.return){Lu=1,Mu=t,Nu=null;break}e:{var l=e,i=n.return,u=n,s=t;if(t=Ou,u.flags|=32768,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s,f=u,d=f.tag;if(!(1&f.mode||0!==d&&11!==d&&15!==d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var m=gi(i);if(null!==m){m.flags&=-257,yi(m,i,u,0,t),1&m.mode&&hi(l,c,t),s=c;var h=(t=m).updateQueue;if(null===h){var g=new Set;g.add(s),t.updateQueue=g}else h.add(s);break e}if(!(1&t)){hi(l,c,t),hs();break e}s=Error(o(426))}else if(ao&&1&u.mode){var y=gi(i);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yi(y,i,u,0,t),ho(si(s,u));break e}}l=s=si(s,u),4!==Lu&&(Lu=2),null===ju?ju=[l]:ju.push(l),l=i;do{switch(l.tag){case 3:l.flags|=65536,t&=-t,l.lanes|=t,Uo(l,pi(0,s,t));break e;case 1:u=s;var b=l.type,v=l.stateNode;if(!(128&l.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==Qu&&Qu.has(v)))){l.flags|=65536,t&=-t,l.lanes|=t,Uo(l,mi(l,u,t));break e}}l=l.return}while(null!==l)}ks(n)}catch(e){t=e,Nu===n&&null!==n&&(Nu=n=n.return);continue}break}}function ms(){var e=Au.current;return Au.current=Jl,null===e?Jl:e}function hs(){0!==Lu&&3!==Lu&&2!==Lu||(Lu=4),null===Tu||!(268435455&Ru)&&!(268435455&Iu)||is(Tu,Ou)}function gs(e,t){var n=Pu;Pu|=2;var r=ms();for(Tu===e&&Ou===t||(Wu=null,ds(e,t));;)try{ys();break}catch(t){ps(e,t)}if(_o(),Pu=n,Au.current=r,null!==Nu)throw Error(o(261));return Tu=null,Ou=0,Lu}function ys(){for(;null!==Nu;)vs(Nu)}function bs(){for(;null!==Nu&&!Ye();)vs(Nu)}function vs(e){var t=xu(e.alternate,e,$u);e.memoizedProps=e.pendingProps,null===t?ks(e):Nu=t,Eu.current=null}function ks(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=qi(n,t)))return n.flags&=32767,void(Nu=n);if(null===e)return Lu=6,void(Nu=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Ki(n,t,$u)))return void(Nu=n);if(null!==(t=t.sibling))return void(Nu=t);Nu=t=e}while(null!==t);0===Lu&&(Lu=5)}function ws(e,t,n){var r=vt,a=_u.transition;try{_u.transition=null,vt=1,function(e,t,n,r){do{Ss()}while(null!==qu);if(6&Pu)throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var l=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-lt(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,l),e===Tu&&(Nu=Tu=null,Ou=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Ku||(Ku=!0,Ts(tt,(function(){return Ss(),null}))),l=!!(15990&n.flags),15990&n.subtreeFlags||l){l=_u.transition,_u.transition=null;var i=vt;vt=1;var u=Pu;Pu|=4,Eu.current=null,function(e,t){if(ea=Ht,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch(e){n=null;break e}var i=0,u=-1,s=-1,c=0,f=0,d=e,p=null;t:for(;;){for(var m;d!==n||0!==a&&3!==d.nodeType||(u=i+a),d!==l||0!==r&&3!==d.nodeType||(s=i+r),3===d.nodeType&&(i+=d.nodeValue.length),null!==(m=d.firstChild);)p=d,d=m;for(;;){if(d===e)break t;if(p===n&&++c===a&&(u=i),p===l&&++f===r&&(s=i),null!==(m=d.nextSibling))break;p=(d=p).parentNode}d=m}n=-1===u||-1===s?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Ji=t;null!==Ji;)if(e=(t=Ji).child,1028&t.subtreeFlags&&null!==e)e.return=t,Ji=e;else for(;null!==Ji;){t=Ji;try{var h=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var g=h.memoizedProps,y=h.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:ni(t.type,g),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var k=t.stateNode.containerInfo;1===k.nodeType?k.textContent="":9===k.nodeType&&k.documentElement&&k.removeChild(k.documentElement);break;default:throw Error(o(163))}}catch(e){Cs(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Ji=e;break}Ji=t.return}h=tu,tu=!1}(e,n),gu(n,e),mr(ta),Ht=!!ea,ta=ea=null,e.current=n,bu(n,e,a),Ge(),Pu=u,vt=i,_u.transition=l}else e.current=n;if(Ku&&(Ku=!1,qu=e,Yu=a),0===(l=e.pendingLanes)&&(Qu=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,!(128&~e.current.flags))}catch(e){}}(n.stateNode),rs(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((a=t[n]).value,{componentStack:a.stack,digest:a.digest});if(Hu)throw Hu=!1,e=Vu,Vu=null,e;!!(1&Yu)&&0!==e.tag&&Ss(),1&(l=e.pendingLanes)?e===Xu?Gu++:(Gu=0,Xu=e):Gu=0,Ua()}(e,t,n,r)}finally{_u.transition=a,vt=r}return null}function Ss(){if(null!==qu){var e=kt(Yu),t=_u.transition,n=vt;try{if(_u.transition=null,vt=16>e?16:e,null===qu)var r=!1;else{if(e=qu,qu=null,Yu=0,6&Pu)throw Error(o(331));var a=Pu;for(Pu|=4,Ji=e.current;null!==Ji;){var l=Ji,i=l.child;if(16&Ji.flags){var u=l.deletions;if(null!==u){for(var s=0;s<u.length;s++){var c=u[s];for(Ji=c;null!==Ji;){var f=Ji;switch(f.tag){case 0:case 11:case 15:nu(8,f,l)}var d=f.child;if(null!==d)d.return=f,Ji=d;else for(;null!==Ji;){var p=(f=Ji).sibling,m=f.return;if(ou(f),f===c){Ji=null;break}if(null!==p){p.return=m,Ji=p;break}Ji=m}}}var h=l.alternate;if(null!==h){var g=h.child;if(null!==g){h.child=null;do{var y=g.sibling;g.sibling=null,g=y}while(null!==g)}}Ji=l}}if(2064&l.subtreeFlags&&null!==i)i.return=l,Ji=i;else e:for(;null!==Ji;){if(2048&(l=Ji).flags)switch(l.tag){case 0:case 11:case 15:nu(9,l,l.return)}var b=l.sibling;if(null!==b){b.return=l.return,Ji=b;break e}Ji=l.return}}var v=e.current;for(Ji=v;null!==Ji;){var k=(i=Ji).child;if(2064&i.subtreeFlags&&null!==k)k.return=i,Ji=k;else e:for(i=v;null!==Ji;){if(2048&(u=Ji).flags)try{switch(u.tag){case 0:case 11:case 15:ru(9,u)}}catch(e){Cs(u,u.return,e)}if(u===i){Ji=null;break e}var w=u.sibling;if(null!==w){w.return=u.return,Ji=w;break e}Ji=u.return}}if(Pu=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(e){}r=!0}return r}finally{vt=n,_u.transition=t}}return!1}function xs(e,t,n){e=Do(e,t=pi(0,t=si(n,t),1),1),t=es(),null!==e&&(yt(e,1,t),rs(e,t))}function Cs(e,t,n){if(3===e.tag)xs(e,e,n);else for(;null!==t;){if(3===t.tag){xs(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Qu||!Qu.has(r))){t=Do(t,e=mi(t,e=si(n,e),1),1),e=es(),null!==t&&(yt(t,1,e),rs(t,e));break}}t=t.return}}function As(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=es(),e.pingedLanes|=e.suspendedLanes&n,Tu===e&&(Ou&n)===n&&(4===Lu||3===Lu&&(130023424&Ou)===Ou&&500>Xe()-Bu?ds(e,0):Fu|=n),rs(e,t)}function Es(e,t){0===t&&(1&e.mode?(t=ct,!(130023424&(ct<<=1))&&(ct=4194304)):t=1);var n=es();null!==(e=Mo(e,t))&&(yt(e,t,n),rs(e,n))}function _s(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Es(e,n)}function Ps(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Es(e,n)}function Ts(e,t){return Ke(e,t)}function Ns(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Os(e,t,n,r){return new Ns(e,t,n,r)}function $s(e){return!(!(e=e.prototype)||!e.isReactComponent)}function zs(e,t){var n=e.alternate;return null===n?((n=Os(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ls(e,t,n,r,a,l){var i=2;if(r=e,"function"==typeof e)$s(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case x:return Ms(n.children,a,l,t);case C:i=8,a|=8;break;case A:return(e=Os(12,n,t,2|a)).elementType=A,e.lanes=l,e;case T:return(e=Os(13,n,t,a)).elementType=T,e.lanes=l,e;case N:return(e=Os(19,n,t,a)).elementType=N,e.lanes=l,e;case z:return Rs(n,a,l,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case E:i=10;break e;case _:i=9;break e;case P:i=11;break e;case O:i=14;break e;case $:i=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Os(i,n,t,a)).elementType=e,t.type=r,t.lanes=l,t}function Ms(e,t,n,r){return(e=Os(7,e,r,t)).lanes=n,e}function Rs(e,t,n,r){return(e=Os(22,e,r,t)).elementType=z,e.lanes=n,e.stateNode={isHidden:!1},e}function Is(e,t,n){return(e=Os(6,e,null,t)).lanes=n,e}function Fs(e,t,n){return(t=Os(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function js(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Ds(e,t,n,r,a,o,l,i,u){return e=new js(e,t,n,i,u),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Os(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Io(o),e}function Bs(e){if(!e)return _a;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if($a(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if($a(n))return Ma(e,n,t)}return t}function Us(e,t,n,r,a,o,l,i,u){return(e=Ds(n,r,!0,e,0,o,0,i,u)).context=Bs(null),n=e.current,(o=jo(r=es(),a=ts(n))).callback=null!=t?t:null,Do(n,o,a),e.current.lanes=a,yt(e,a,r),rs(e,r),e}function Ws(e,t,n,r){var a=t.current,o=es(),l=ts(a);return n=Bs(n),null===t.context?t.context=n:t.pendingContext=n,(t=jo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Do(a,t,l))&&(ns(e,a,l,o),Bo(e,a,l)),l}function Hs(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vs(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Qs(e,t){Vs(e,t),(e=e.alternate)&&Vs(e,t)}xu=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Ta.current)vi=!0;else{if(!(e.lanes&n||128&t.flags))return vi=!1,function(e,t,n){switch(t.tag){case 3:Ti(t),mo();break;case 5:Jo(t);break;case 1:$a(t.type)&&Ra(t);break;case 4:Go(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Ea(xo,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ea(el,1&el.current),t.flags|=128,null):n&t.child.childLanes?Ii(e,t,n):(Ea(el,1&el.current),null!==(e=Hi(e,t,n))?e.sibling:null);Ea(el,1&el.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Ui(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Ea(el,el.current),r)break;return null;case 22:case 23:return t.lanes=0,Ci(e,t,n)}return Hi(e,t,n)}(e,t,n);vi=!!(131072&e.flags)}else vi=!1,ao&&1048576&t.flags&&Za(t,Qa,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Wi(e,t),e=t.pendingProps;var a=Oa(t,Pa.current);No(t,n),a=gl(null,t,r,e,a,n);var l=yl();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,$a(r)?(l=!0,Ra(t)):l=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Io(t),a.updater=ai,t.stateNode=a,a._reactInternals=t,ui(t,r,e,n),t=Pi(null,t,r,!0,l,n)):(t.tag=0,ao&&l&&eo(t),ki(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Wi(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return $s(e)?1:0;if(null!=e){if((e=e.$$typeof)===P)return 11;if(e===O)return 14}return 2}(r),e=ni(r,e),a){case 0:t=Ei(null,t,r,e,n);break e;case 1:t=_i(null,t,r,e,n);break e;case 11:t=wi(null,t,r,e,n);break e;case 14:t=Si(null,t,r,ni(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Ei(e,t,r,a=t.elementType===r?a:ni(r,a),n);case 1:return r=t.type,a=t.pendingProps,_i(e,t,r,a=t.elementType===r?a:ni(r,a),n);case 3:e:{if(Ti(t),null===e)throw Error(o(387));r=t.pendingProps,a=(l=t.memoizedState).element,Fo(e,t),Wo(t,r,null,n);var i=t.memoizedState;if(r=i.element,l.isDehydrated){if(l={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,256&t.flags){t=Ni(e,t,r,n,a=si(Error(o(423)),t));break e}if(r!==a){t=Ni(e,t,r,n,a=si(Error(o(424)),t));break e}for(ro=sa(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=So(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(mo(),r===a){t=Hi(e,t,n);break e}ki(e,t,r,n)}t=t.child}return t;case 5:return Jo(t),null===e&&so(t),r=t.type,a=t.pendingProps,l=null!==e?e.memoizedProps:null,i=a.children,na(r,a)?i=null:null!==l&&na(r,l)&&(t.flags|=32),Ai(e,t),ki(e,t,i,n),t.child;case 6:return null===e&&so(t),null;case 13:return Ii(e,t,n);case 4:return Go(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=wo(t,null,r,n):ki(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,wi(e,t,r,a=t.elementType===r?a:ni(r,a),n);case 7:return ki(e,t,t.pendingProps,n),t.child;case 8:case 12:return ki(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,l=t.memoizedProps,i=a.value,Ea(xo,r._currentValue),r._currentValue=i,null!==l)if(ir(l.value,i)){if(l.children===a.children&&!Ta.current){t=Hi(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){i=l.child;for(var s=u.firstContext;null!==s;){if(s.context===r){if(1===l.tag){(s=jo(-1,n&-n)).tag=2;var c=l.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?s.next=s:(s.next=f.next,f.next=s),c.pending=s}}l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),To(l.return,n,t),u.lanes|=n;break}s=s.next}}else if(10===l.tag)i=l.type===t.type?null:l.child;else if(18===l.tag){if(null===(i=l.return))throw Error(o(341));i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),To(i,n,t),i=l.sibling}else i=l.child;if(null!==i)i.return=l;else for(i=l;null!==i;){if(i===t){i=null;break}if(null!==(l=i.sibling)){l.return=i.return,i=l;break}i=i.return}l=i}ki(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,No(t,n),r=r(a=Oo(a)),t.flags|=1,ki(e,t,r,n),t.child;case 14:return a=ni(r=t.type,t.pendingProps),Si(e,t,r,a=ni(r.type,a),n);case 15:return xi(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ni(r,a),Wi(e,t),t.tag=1,$a(r)?(e=!0,Ra(t)):e=!1,No(t,n),li(t,r,a),ui(t,r,a,n),Pi(null,t,r,!0,e,n);case 19:return Ui(e,t,n);case 22:return Ci(e,t,n)}throw Error(o(156,t.tag))};var Ks="function"==typeof reportError?reportError:function(e){console.error(e)};function qs(e){this._internalRoot=e}function Ys(e){this._internalRoot=e}function Gs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Js(){}function Zs(e,t,n,r,a){var o=n._reactRootContainer;if(o){var l=o;if("function"==typeof a){var i=a;a=function(){var e=Hs(l);i.call(e)}}Ws(t,l,e,a)}else l=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Hs(l);o.call(e)}}var l=Us(t,r,e,0,null,!1,0,"",Js);return e._reactRootContainer=l,e[ma]=l.current,Ur(8===e.nodeType?e.parentNode:e),cs(),l}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var i=r;r=function(){var e=Hs(u);i.call(e)}}var u=Ds(e,0,!1,null,0,!1,0,"",Js);return e._reactRootContainer=u,e[ma]=u.current,Ur(8===e.nodeType?e.parentNode:e),cs((function(){Ws(t,u,n,r)})),u}(n,t,e,a,r);return Hs(l)}Ys.prototype.render=qs.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Ws(e,t,null,null)},Ys.prototype.unmount=qs.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cs((function(){Ws(null,e,null,null)})),t[ma]=null}},Ys.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<zt.length&&0!==t&&t<zt[n].priority;n++);zt.splice(n,0,e),0===n&&It(e)}},wt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(bt(t,1|n),rs(t,Xe()),!(6&Pu)&&(Uu=Xe()+500,Ua()))}break;case 13:cs((function(){var t=Mo(e,1);if(null!==t){var n=es();ns(t,e,1,n)}})),Qs(e,1)}},St=function(e){if(13===e.tag){var t=Mo(e,134217728);null!==t&&ns(t,e,134217728,es()),Qs(e,134217728)}},xt=function(e){if(13===e.tag){var t=ts(e),n=Mo(e,t);null!==n&&ns(n,e,t,es()),Qs(e,t)}},Ct=function(){return vt},At=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},Se=function(e,t,n){switch(t){case"input":if(J(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=wa(r);if(!a)throw Error(o(90));K(r),J(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Pe=ss,Te=cs;var ec={usingClientEntryPoint:!1,Events:[va,ka,wa,Ee,_e,ss]},tc={findFiberByHostInstance:ba,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nc={bundleType:tc.bundleType,version:tc.version,rendererPackageName:tc.rendererPackageName,rendererConfig:tc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ve(e))?null:e.stateNode},findFiberByHostInstance:tc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var rc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!rc.isDisabled&&rc.supportsFiber)try{at=rc.inject(nc),ot=rc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ec,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Gs(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Gs(e))throw Error(o(299));var n=!1,r="",a=Ks;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=Ds(e,1,!1,null,0,n,0,r,a),e[ma]=t.current,Ur(8===e.nodeType?e.parentNode:e),new qs(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return null===(e=Ve(t))?null:e.stateNode},t.flushSync=function(e){return cs(e)},t.hydrate=function(e,t,n){if(!Xs(t))throw Error(o(200));return Zs(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Gs(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,l="",i=Ks;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(l=n.identifierPrefix),void 0!==n.onRecoverableError&&(i=n.onRecoverableError)),t=Us(t,null,e,1,null!=n?n:null,a,0,l,i),e[ma]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ys(t)},t.render=function(e,t,n){if(!Xs(t))throw Error(o(200));return Zs(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xs(e))throw Error(o(40));return!!e._reactRootContainer&&(cs((function(){Zs(null,null,e,!1,(function(){e._reactRootContainer=null,e[ma]=null}))})),!0)},t.unstable_batchedUpdates=ss,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xs(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return Zs(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},81886:(e,t,n)=>{var r=n(28485);t.H=r.createRoot,t.c=r.hydrateRoot},28485:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(45555)},68736:(e,t,n)=>{var r=n(7552),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,i=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,n){var r,o={},s=null,c=null;for(r in void 0!==n&&(s=""+n),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(c=t.ref),t)l.call(t,r)&&!u.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:s,ref:c,props:o,_owner:i.current}}t.Fragment=o,t.jsx=s,t.jsxs=s},78931:(e,t)=>{var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),i=Symbol.for("react.provider"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator,m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var k=v.prototype=new b;k.constructor=v,h(k,y.prototype),k.isPureReactComponent=!0;var w=Array.isArray,S=Object.prototype.hasOwnProperty,x={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function A(e,t,r){var a,o={},l=null,i=null;if(null!=t)for(a in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(l=""+t.key),t)S.call(t,a)&&!C.hasOwnProperty(a)&&(o[a]=t[a]);var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];o.children=s}if(e&&e.defaultProps)for(a in u=e.defaultProps)void 0===o[a]&&(o[a]=u[a]);return{$$typeof:n,type:e,key:l,ref:i,props:o,_owner:x.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var _=/\/+/g;function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,a,o,l){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var u=!1;if(null===e)u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case n:case r:u=!0}}if(u)return l=l(u=e),e=""===o?"."+P(u,0):o,w(l)?(a="",null!=e&&(a=e.replace(_,"$&/")+"/"),T(l,t,a,"",(function(e){return e}))):null!=l&&(E(l)&&(l=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(l,a+(!l.key||u&&u.key===l.key?"":(""+l.key).replace(_,"$&/")+"/")+e)),t.push(l)),1;if(u=0,o=""===o?".":o+":",w(e))for(var s=0;s<e.length;s++){var c=o+P(i=e[s],s);u+=T(i,t,a,c,l)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),s=0;!(i=e.next()).done;)u+=T(i=i.value,t,a,c=o+P(i,s++),l);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function N(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function O(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var $={current:null},z={transition:null},L={ReactCurrentDispatcher:$,ReactCurrentBatchConfig:z,ReactCurrentOwner:x};function M(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:N,forEach:function(e,t,n){N(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return N(e,(function(){t++})),t},toArray:function(e){return N(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=l,t.PureComponent=v,t.StrictMode=o,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.act=M,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=h({},e.props),o=e.key,l=e.ref,i=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,i=x.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(s in t)S.call(t,s)&&!C.hasOwnProperty(s)&&(a[s]=void 0===t[s]&&void 0!==u?u[s]:t[s])}var s=arguments.length-2;if(1===s)a.children=r;else if(1<s){u=Array(s);for(var c=0;c<s;c++)u[c]=arguments[c+2];a.children=u}return{$$typeof:n,type:e.type,key:o,ref:l,props:a,_owner:i}},t.createContext=function(e){return(e={$$typeof:u,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=A,t.createFactory=function(e){var t=A.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:O}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=z.transition;z.transition={};try{e()}finally{z.transition=t}},t.unstable_act=M,t.useCallback=function(e,t){return $.current.useCallback(e,t)},t.useContext=function(e){return $.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return $.current.useDeferredValue(e)},t.useEffect=function(e,t){return $.current.useEffect(e,t)},t.useId=function(){return $.current.useId()},t.useImperativeHandle=function(e,t,n){return $.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return $.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return $.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return $.current.useMemo(e,t)},t.useReducer=function(e,t,n){return $.current.useReducer(e,t,n)},t.useRef=function(e){return $.current.useRef(e)},t.useState=function(e){return $.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return $.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return $.current.useTransition()},t.version="18.3.1"},7552:(e,t,n)=>{e.exports=n(78931)},69500:(e,t,n)=>{e.exports=n(68736)},79763:(e,t)=>{function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,l=a>>>1;r<l;){var i=2*(r+1)-1,u=e[i],s=i+1,c=e[s];if(0>o(u,n))s<a&&0>o(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else{if(!(s<a&&0>o(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var l=performance;t.unstable_now=function(){return l.now()}}else{var i=Date,u=i.now();t.unstable_now=function(){return i.now()-u}}var s=[],c=[],f=1,d=null,p=3,m=!1,h=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(s,t)}t=r(c)}}function w(e){if(g=!1,k(e),!h)if(null!==r(s))h=!0,z(S);else{var t=r(c);null!==t&&L(w,t.startTime-e)}}function S(e,n){h=!1,g&&(g=!1,b(E),E=-1),m=!0;var o=p;try{for(k(n),d=r(s);null!==d&&(!(d.expirationTime>n)||e&&!T());){var l=d.callback;if("function"==typeof l){d.callback=null,p=d.priorityLevel;var i=l(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof i?d.callback=i:d===r(s)&&a(s),k(n)}else a(s);d=r(s)}if(null!==d)var u=!0;else{var f=r(c);null!==f&&L(w,f.startTime-n),u=!1}return u}finally{d=null,p=o,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,C=!1,A=null,E=-1,_=5,P=-1;function T(){return!(t.unstable_now()-P<_)}function N(){if(null!==A){var e=t.unstable_now();P=e;var n=!0;try{n=A(!0,e)}finally{n?x():(C=!1,A=null)}}else C=!1}if("function"==typeof v)x=function(){v(N)};else if("undefined"!=typeof MessageChannel){var O=new MessageChannel,$=O.port2;O.port1.onmessage=N,x=function(){$.postMessage(null)}}else x=function(){y(N,0)};function z(e){A=e,C||(C=!0,x())}function L(e,n){E=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,z(S))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):_=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(s)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var l=t.unstable_now();switch(o="object"==typeof o&&null!==o&&"number"==typeof(o=o.delay)&&0<o?l+o:l,e){case 1:var i=-1;break;case 2:i=250;break;case 5:i=1073741823;break;case 4:i=1e4;break;default:i=5e3}return e={id:f++,callback:a,priorityLevel:e,startTime:o,expirationTime:i=o+i,sortIndex:-1},o>l?(e.sortIndex=o,n(c,e),null===r(s)&&e===r(c)&&(g?(b(E),E=-1):g=!0,L(w,o-l))):(e.sortIndex=i,n(s,e),h||m||(h=!0,z(S))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},13754:(e,t,n)=>{e.exports=n(79763)},6614:(e,t,n)=>{function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},93878:(e,t,n)=>{function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}}},o={};function l(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return a[e].call(n.exports,n,n.exports,l),n.exports}l.m=a,l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var a=Object.create(null);l.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>o[e]=()=>n[e]));return o.default=()=>n,l.d(a,o),a},l.d=(e,t)=>{for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce(((t,n)=>(l.f[n](e,t),t)),[])),l.u=e=>"static/js/"+e+"."+{12:"c0c7bdf9",14:"b9913d1d",26:"604133d9",120:"a447052d",246:"9848bd41",266:"94eb2bf9",311:"2c004784",366:"b00bf6ca",399:"e36b7683",419:"021427b6",439:"bdc14632",457:"6d7b716d",489:"43cb4a5f",491:"0011d1ad",518:"7222a328",561:"8b38948f",596:"84c38eb7",722:"4329bc98",741:"a9772d36",759:"9c32be0d",765:"20669bca",772:"83c2d2db",937:"4f610bdf",946:"245d7df9",965:"8524fdac",972:"c0d17685",1012:"a7d14de3",1029:"8c806427",1051:"8e1641e2",1110:"702cba94",1157:"c0d4652e",1189:"f18c6e1f",1260:"ee4ecbf4",1266:"cd6d9354",1281:"1d836fc4",1304:"a512b560",1310:"8a044016",1326:"19289940",1345:"aaaaf175",1354:"ded982ce",1503:"cc48d25a",1516:"ca4ab8f0",1537:"4fdb4e95",1598:"3b48685f",1637:"21a8cf01",1696:"8a290cef",1725:"795fc4d3",1752:"a727a500",1757:"a6d05bc3",1811:"7cfd8419",1822:"2cbe112a",1824:"c2ed4bca",1978:"1faf7d31",1996:"a37d9ec7",1999:"2554e815",2018:"9ce7fb06",2047:"b1e80504",2062:"a28f26f8",2141:"d36fb4a8",2189:"3c65daf8",2197:"a5134ce4",2212:"116fbbf4",2241:"3d359b22",2246:"e5e65a4f",2249:"b91f0bb3",2306:"f8d640f4",2321:"ef211da9",2398:"731eb1c6",2412:"10574f7d",2418:"0b1f308b",2424:"7cd6703f",2493:"20e8e76c",2583:"db78b17f",2627:"300bea43",2645:"4b79a04c",2697:"4ab94d07",2729:"9660c29b",2775:"e25b4dd4",2777:"56f29f41",2820:"3c0e09be",2847:"009c96ee",2861:"aa6cd5b7",2872:"5129bbd8",2885:"8a30e856",2928:"4ac8c386",2968:"4d90773a",2977:"aa562b03",2989:"031b43a0",3003:"0f0cbacd",3011:"9da53e7c",3012:"9940fd01",3029:"cd8dcca2",3103:"4dfe3f78",3106:"e1981605",3109:"3173f682",3116:"fa0100fd",3120:"3940249f",3162:"eb9bf76d",3167:"312d0953",3175:"af2c93a5",3199:"a36b17a7",3266:"accbd4dc",3274:"053c3df5",3304:"65e5d8dd",3311:"92fac4a6",3368:"6e9b017b",3384:"e146a796",3416:"f7c72cbe",3425:"be85a6ad",3474:"8c1888be",3497:"9db6611b",3525:"e74d3ff0",3550:"089089a8",3578:"058bdae5",3614:"af493134",3682:"840e721c",3728:"99a63442",3778:"e18101e6",3795:"0386c297",3862:"9fd8e870",3902:"69c7ff0c",3940:"c8b3da50",4033:"df8ecd0d",4060:"8757dbe8",4133:"451f5e47",4138:"57ad92a3",4234:"63e1ba57",4284:"61dbc58f",4345:"0a9072cc",4395:"8fda7b8b",4414:"7f4caeab",4435:"a57cabe2",4456:"93a06b74",4499:"3f0b2e70",4615:"dc35870f",4629:"1f1a55a3",4630:"f0bdb9f0",4659:"b65d8547",4704:"9b3995ff",4741:"5a289f5d",4753:"834007ba",4755:"8d938db2",4770:"3d757d6b",4773:"6cd74b80",4806:"7e497d7a",4861:"6244e4c0",4863:"9dfed19c",4864:"28cfc358",4902:"452e575b",4947:"2e80fd2d",4974:"cf97ef5b",5008:"f8d32f92",5031:"6eccfd35",5090:"bc77ac67",5099:"14f82444",5101:"993a6b6e",5132:"00a31df0",5156:"75195722",5189:"3e22269d",5243:"9de20396",5255:"af554ced",5260:"e7b7aeb6",5327:"8f1dcfc1",5331:"28d667f0",5369:"993afa3f",5461:"5c8cf5d1",5484:"3ceeebff",5511:"154ce441",5515:"671905b2",5595:"b4517d69",5608:"1b8d39e1",5640:"33b8306c",5668:"73016b9c",5676:"818528e8",5677:"28a25579",5682:"ea285a50",5727:"f7a524b6",5736:"48705208",5746:"39e4296b",5763:"48010c9a",5896:"622b5e88",5903:"9145cef7",5904:"240caa72",5930:"0ffd2546",5951:"251be759",5998:"22bd8296",6021:"21769087",6043:"e402bf73",6054:"e0881c55",6149:"c6c4af73",6157:"96f40683",6205:"903f897d",6214:"0ed0ac32",6235:"93768761",6310:"ae82dc58",6323:"1c706a2d",6342:"62a02e7b",6391:"aabba4a1",6395:"f6027b24",6397:"8fc250af",6423:"1e8da08b",6435:"b4633aa1",6499:"aac79904",6514:"d36ecbb8",6526:"b2c8fd93",6621:"cf64e54c",6658:"fe512b5a",6683:"2a35f0fe",6703:"faa93a20",6746:"8d3f75be",6785:"07d4b66b",6799:"754a77ae",6823:"6e35b0cf",6833:"c77c5928",6834:"bc9e9f2b",6837:"a706c464",6861:"66a2e4c0",6932:"a37ea756",6946:"dd09a891",6999:"3486cca0",7013:"5240d550",7067:"e9508417",7087:"79101e8e",7117:"b3239756",7126:"b4b7d70b",7181:"938de865",7203:"03e2b86a",7309:"f9d18abb",7348:"40afbdc0",7374:"932d083d",7389:"fa6a1eb0",7407:"4421929d",7409:"8e71acc1",7418:"2ac24978",7428:"1e6f676f",7489:"b8a76d29",7564:"3a461e67",7579:"1b98701c",7584:"a162e3d6",7627:"31dfd44e",7663:"e79b053a",7706:"430ce07e",7753:"87963fd9",7761:"0cf7cf29",7773:"7e072552",7790:"3790bece",7809:"eb2c5f08",7812:"6bb31bfb",7831:"cfcb0221",7842:"cbff451c",7864:"59d0de32",7865:"e02aee95",7902:"f48e3002",7909:"8f1d759d",7911:"764ec401",7974:"3f19c570",7991:"5d96c772",8007:"3025c802",8009:"a65f1b78",8052:"7d772984",8076:"fc478e91",8105:"4fd35586",8109:"344e1845",8114:"eb856986",8120:"85042513",8150:"09c54606",8165:"d07843b4",8187:"383aefbf",8216:"16f39607",8301:"877076ce",8341:"fa84fa67",8343:"dd515382",8408:"2e2896bf",8424:"a1a3e663",8435:"484d30f8",8483:"7fadf4ea",8526:"5dd9c712",8528:"f68ff14f",8535:"189d090a",8546:"0a89cbee",8556:"0053a402",8565:"c4ea9980",8582:"9b93fffc",8615:"0950a86f",8624:"190dd7af",8678:"8424d5dc",8704:"ae4808df",8762:"3d2b9142",8797:"3168365d",8856:"4593419f",8859:"efb2561f",8869:"74066774",8876:"24bf6aed",8880:"6ae9d985",8929:"70ce258f",8965:"51db703f",8984:"1a816123",9028:"12f6efe2",9032:"b54e1975",9037:"03715b7f",9067:"1cc02121",9070:"d49de235",9086:"035adaa3",9088:"9fbbeb5c",9106:"b274c701",9114:"d412d44e",9168:"6afdec67",9206:"bbf34514",9245:"d882c265",9280:"6e897b98",9292:"96b77fb0",9305:"4d748fb5",9314:"3e43d34c",9329:"c269472b",9372:"67d6f914",9374:"8ac7e6d7",9384:"a4e7a69a",9409:"c7569196",9449:"2e1d2652",9458:"07f0ae54",9589:"9087e0ea",9657:"0cccd5bf",9658:"33669a59",9675:"b4f16970",9690:"0cd8a2c8",9756:"4ac80c37",9824:"b9ece376",9831:"de8b3aa9",9870:"f395e633",9943:"d3ab0f18"}[e]+".chunk.js",l.miniCssF=e=>"static/css/"+e+".6d3f3959.chunk.css",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},r="@jbrowse/web:",l.l=(e,t,a,o)=>{if(n[e])n[e].push(t);else{var i,u;if(void 0!==a)for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++){var f=s[c];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==r+a){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,l.nc&&i.setAttribute("nonce",l.nc),i.setAttribute("data-webpack",r+a),i.src=e),n[e]=[t];var d=(t,r)=>{i.onerror=i.onload=null,clearTimeout(p);var a=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(r))),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),u&&document.head.appendChild(i)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.j=8792,(()=>{var e;l.g.importScripts&&(e=l.g.location+"");var t=l.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),l.p=e+"../../"})(),(()=>{if("undefined"!=typeof document){var e={8792:0};l.f.miniCss=(t,n)=>{e[t]?n.push(e[t]):0!==e[t]&&{3120:1}[t]&&n.push(e[t]=(e=>new Promise(((t,n)=>{var r=l.miniCssF(e),a=l.p+r;if(((e,t)=>{for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var a=(l=n[r]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(a===e||a===t))return l}var o=document.getElementsByTagName("style");for(r=0;r<o.length;r++){var l;if((a=(l=o[r]).getAttribute("data-href"))===e||a===t)return l}})(r,a))return t();((e,t,n,r,a)=>{var o=document.createElement("link");o.rel="stylesheet",o.type="text/css",l.nc&&(o.nonce=l.nc),o.onerror=o.onload=n=>{if(o.onerror=o.onload=null,"load"===n.type)r();else{var l=n&&n.type,i=n&&n.target&&n.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+l+": "+i+")");u.name="ChunkLoadError",u.code="CSS_CHUNK_LOAD_FAILED",u.type=l,u.request=i,o.parentNode&&o.parentNode.removeChild(o),a(u)}},o.href=t,document.head.appendChild(o)})(e,a,0,t,n)})))(t).then((()=>{e[t]=0}),(n=>{throw delete e[t],n})))}}})(),(()=>{l.b=document.baseURI||self.location.href;var e={8792:0};l.f.j=(t,n)=>{var r=l.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var a=new Promise(((n,a)=>r=e[t]=[n,a]));n.push(r[2]=a);var o=l.p+l.u(t),i=new Error;l.l(o,(n=>{if(l.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,r[1](i)}}),"chunk-"+t,t)}};var t=(t,n)=>{var r,a,[o,i,u]=n,s=0;if(o.some((t=>0!==e[t]))){for(r in i)l.o(i,r)&&(l.m[r]=i[r]);u&&u(l)}for(t&&t(n);s<o.length;s++)a=o[s],l.o(e,a)&&e[a]&&e[a][0](),e[a]=0},n=globalThis.webpackChunk_jbrowse_web=globalThis.webpackChunk_jbrowse_web||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),l.nc=void 0;var i=l(7552),u=l(81886),s=l(25122);const c=(0,i.lazy)((()=>Promise.all([l.e(5255),l.e(2418),l.e(8007),l.e(6837),l.e(3120)]).then(l.bind(l,87579)))),f=Date.now();if(window.name.startsWith("JBrowseAuthWindow")){const e=window.opener;e&&e.postMessage({name:window.name,redirectUri:window.location.href}),window.close()}(0,u.H)(document.getElementById("root")).render(i.createElement(i.StrictMode,null,i.createElement(i.Suspense,{fallback:i.createElement(s.A,null)},i.createElement(c,{initialTimestamp:f}))))})();
+//# sourceMappingURL=main.1532dd54.js.map
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/main.1532dd54.js.LICENSE.txt	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,56 @@
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @mui/styled-engine v6.1.1
+ *
+ * @license MIT
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/main.1532dd54.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/main.1532dd54.js","mappings":"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AW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,YCF30LT,EAAoBY,SAAYH,GAExB,cAAgBA,EAAhB,sBCHRT,EAAoBvmC,EAAI,WACvB,GAA0B,iBAAfonC,WAAyB,OAAOA,WAC3C,IACC,OAAO1+D,MAAQ,IAAI2+D,SAAS,cAAb,EAChB,CAAE,MAAO/3D,GACR,GAAsB,iBAAXizB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBgkC,EAAoBF,EAAI,CAACt5D,EAAKqQ,IAAUrf,OAAOkG,UAAU+S,eAAe7S,KAAK4I,EAAKqQ,GhHA9EtgB,EAAa,CAAC,EACdC,EAAoB,gBAExBwpE,EAAoB15C,EAAI,CAAC0P,EAAKisB,EAAM5kD,EAAKojE,KACxC,GAAGlqE,EAAWy/B,GAAQz/B,EAAWy/B,GAAKv9B,KAAKwpD,OAA3C,CACA,IAAI8e,EAAQC,EACZ,QAAWjhE,IAAR1C,EAEF,IADA,IAAI4jE,EAAU1jE,SAAS2jE,qBAAqB,UACpC5mE,EAAI,EAAGA,EAAI2mE,EAAQ1oE,OAAQ+B,IAAK,CACvC,IAAI+rB,EAAI46C,EAAQ3mE,GAChB,GAAG+rB,EAAExoB,aAAa,QAAUm4B,GAAO3P,EAAExoB,aAAa,iBAAmBrH,EAAoB6G,EAAK,CAAE0jE,EAAS16C,EAAG,KAAO,CACpH,CAEG06C,IACHC,GAAa,GACbD,EAASxjE,SAASgL,cAAc,WAEzB44D,QAAU,QACjBJ,EAAOK,QAAU,IACbpB,EAAoBqB,IACvBN,EAAO/iE,aAAa,QAASgiE,EAAoBqB,IAElDN,EAAO/iE,aAAa,eAAgBxH,EAAoB6G,GAExD0jE,EAAO5M,IAAMn+B,GAEdz/B,EAAWy/B,GAAO,CAACisB,GACnB,IAAIqf,EAAmB,CAACjoE,EAAMy7C,KAE7BisB,EAAOQ,QAAUR,EAAOS,OAAS,KACjChlB,aAAa4kB,GACb,IAAIK,EAAUlrE,EAAWy/B,GAIzB,UAHOz/B,EAAWy/B,GAClB+qC,EAAO93D,YAAc83D,EAAO93D,WAAWC,YAAY63D,GACnDU,GAAWA,EAAQ9jE,SAASiC,GAAQA,EAAGk1C,KACpCz7C,EAAM,OAAOA,EAAKy7C,EAAM,EAExBssB,EAAU9kB,WAAWglB,EAAiBl/C,KAAK,UAAMriB,EAAW,CAAE9G,KAAM,UAAWooB,OAAQ0/C,IAAW,MACtGA,EAAOQ,QAAUD,EAAiBl/C,KAAK,KAAM2+C,EAAOQ,SACpDR,EAAOS,OAASF,EAAiBl/C,KAAK,KAAM2+C,EAAOS,QACnDR,GAAczjE,SAASO,KAAKC,YAAYgjE,EApCkB,CAoCX,EiHvChDf,EAAoBnzD,EAAKgsB,IACH,oBAAXjQ,QAA0BA,OAAO8M,aAC1Cl+B,OAAOwqB,eAAe6W,EAASjQ,OAAO8M,YAAa,CAAE/9B,MAAO,WAE7DH,OAAOwqB,eAAe6W,EAAS,aAAc,CAAElhC,OAAO,GAAO,ECL9DqoE,EAAoBlkE,EAAI,WCAxB,IAAI4lE,EACA1B,EAAoBvmC,EAAEkoC,gBAAeD,EAAY1B,EAAoBvmC,EAAEiY,SAAW,IACtF,IAAIn0C,EAAWyiE,EAAoBvmC,EAAEl8B,SACrC,IAAKmkE,GAAankE,IACbA,EAASqkE,eAAkE,WAAjDrkE,EAASqkE,cAAct/C,QAAQ2S,gBAC5DysC,EAAYnkE,EAASqkE,cAAczN,MAC/BuN,GAAW,CACf,IAAIT,EAAU1jE,EAAS2jE,qBAAqB,UAC5C,GAAGD,EAAQ1oE,OAEV,IADA,IAAI+B,EAAI2mE,EAAQ1oE,OAAS,EAClB+B,GAAK,KAAOonE,IAAc,aAAaxhD,KAAKwhD,KAAaA,EAAYT,EAAQ3mE,KAAK65D,GAE3F,CAID,IAAKuN,EAAW,MAAM,IAAI96D,MAAM,yDAChC86D,EAAYA,EAAU5pE,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFkoE,EAAoBxzC,EAAIk1C,EAAY,mBClBpC,GAAwB,oBAAbnkE,SAAX,CACA,IA2DIskE,EAAqB,CACxB,KAAM,GAGP7B,EAAoBx5C,EAAEs7C,QAAU,CAACrB,EAASE,KAEtCkB,EAAmBpB,GAAUE,EAASloE,KAAKopE,EAAmBpB,IACzB,IAAhCoB,EAAmBpB,IAFX,CAAC,KAAO,GAE+BA,IACtDE,EAASloE,KAAKopE,EAAmBpB,GAjBd,CAACA,GACd,IAAI/jB,SAAQ,CAACG,EAASklB,KAC5B,IAAIlrB,EAAOmpB,EAAoBY,SAASH,GACpCuB,EAAWhC,EAAoBxzC,EAAIqqB,EACvC,GAlBmB,EAACA,EAAMmrB,KAE3B,IADA,IAAIC,EAAmB1kE,SAAS2jE,qBAAqB,QAC7C5mE,EAAI,EAAGA,EAAI2nE,EAAiB1pE,OAAQ+B,IAAK,CAChD,IACI4nE,GADAl6D,EAAMi6D,EAAiB3nE,IACRuD,aAAa,cAAgBmK,EAAInK,aAAa,QACjE,GAAe,eAAZmK,EAAIm6D,MAAyBD,IAAarrB,GAAQqrB,IAAaF,GAAW,OAAOh6D,CACrF,CACA,IAAIo6D,EAAoB7kE,SAAS2jE,qBAAqB,SACtD,IAAQ5mE,EAAI,EAAGA,EAAI8nE,EAAkB7pE,OAAQ+B,IAAK,CACjD,IAAI0N,EAEJ,IADIk6D,GADAl6D,EAAMo6D,EAAkB9nE,IACTuD,aAAa,gBAChBg5C,GAAQqrB,IAAaF,EAAU,OAAOh6D,CACvD,GAMIq6D,CAAexrB,EAAMmrB,GAAW,OAAOnlB,IAtDrB,EAAC4jB,EAASuB,EAAUM,EAAQzlB,EAASklB,KAC3D,IAAIQ,EAAUhlE,SAASgL,cAAc,QAErCg6D,EAAQJ,IAAM,aACdI,EAAQtpE,KAAO,WACX+mE,EAAoBqB,KACvBkB,EAAQljE,MAAQ2gE,EAAoBqB,IAmBrCkB,EAAQhB,QAAUgB,EAAQf,OAjBJ1sB,IAGrB,GADAytB,EAAQhB,QAAUgB,EAAQf,OAAS,KAChB,SAAf1sB,EAAM77C,KACT4jD,QACM,CACN,IAAI2lB,EAAY1tB,GAASA,EAAM77C,KAC3BwpE,EAAW3tB,GAASA,EAAMzzB,QAAUyzB,EAAMzzB,OAAOw1B,MAAQmrB,EACzDvF,EAAM,IAAI71D,MAAM,qBAAuB65D,EAAU,cAAgB+B,EAAY,KAAOC,EAAW,KACnGhG,EAAIr9D,KAAO,iBACXq9D,EAAI1mC,KAAO,wBACX0mC,EAAIxjE,KAAOupE,EACX/F,EAAIiG,QAAUD,EACVF,EAAQt5D,YAAYs5D,EAAQt5D,WAAWC,YAAYq5D,GACvDR,EAAOtF,EACR,GAGD8F,EAAQ1rB,KAAOmrB,EAMdzkE,SAASO,KAAKC,YAAYwkE,EAEb,EAqBbI,CAAiBlC,EAASuB,EAAU,EAAMnlB,EAASklB,EAAO,IAYda,CAAenC,GAAS3jB,MAAK,KACxE+kB,EAAmBpB,GAAW,CAAC,IAC5B13D,IAEH,aADO84D,EAAmBpB,GACpB13D,CAAC,IAET,CA1E0C,YCA3Ci3D,EAAoBt0C,EAAInuB,SAASslE,SAAWC,KAAKpxB,SAASmF,KAK1D,IAAIksB,EAAkB,CACrB,KAAM,GAGP/C,EAAoBx5C,EAAE1qB,EAAI,CAAC2kE,EAASE,KAElC,IAAIqC,EAAqBhD,EAAoBF,EAAEiD,EAAiBtC,GAAWsC,EAAgBtC,QAAW1gE,EACtG,GAA0B,IAAvBijE,EAGF,GAAGA,EACFrC,EAASloE,KAAKuqE,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIvmB,SAAQ,CAACG,EAASklB,IAAYiB,EAAqBD,EAAgBtC,GAAW,CAAC5jB,EAASklB,KAC1GpB,EAASloE,KAAKuqE,EAAmB,GAAKC,GAGtC,IAAIjtC,EAAMgqC,EAAoBxzC,EAAIwzC,EAAoBpmC,EAAE6mC,GAEpD1vD,EAAQ,IAAInK,MAgBhBo5D,EAAoB15C,EAAE0P,GAfF8e,IACnB,GAAGkrB,EAAoBF,EAAEiD,EAAiBtC,KAEf,KAD1BuC,EAAqBD,EAAgBtC,MACRsC,EAAgBtC,QAAW1gE,GACrDijE,GAAoB,CACtB,IAAIR,EAAY1tB,IAAyB,SAAfA,EAAM77C,KAAkB,UAAY67C,EAAM77C,MAChEiqE,EAAUpuB,GAASA,EAAMzzB,QAAUyzB,EAAMzzB,OAAO8yC,IACpDpjD,EAAM47C,QAAU,iBAAmB8T,EAAU,cAAgB+B,EAAY,KAAOU,EAAU,IAC1FnyD,EAAM3R,KAAO,iBACb2R,EAAM9X,KAAOupE,EACbzxD,EAAM2xD,QAAUQ,EAChBF,EAAmB,GAAGjyD,EACvB,CACD,GAEwC,SAAW0vD,EAASA,EAE/D,CACD,EAcF,IAAI0C,EAAuB,CAACC,EAA4BhzB,KACvD,IAGI6vB,EAAUQ,GAHT4C,EAAUC,EAAaC,GAAWnzB,EAGhB91C,EAAI,EAC3B,GAAG+oE,EAASzsD,MAAMi1B,GAAgC,IAAxBk3B,EAAgBl3B,KAAa,CACtD,IAAIo0B,KAAYqD,EACZtD,EAAoBF,EAAEwD,EAAarD,KACrCD,EAAoBzzC,EAAE0zC,GAAYqD,EAAYrD,IAG7CsD,GAAsBA,EAAQvD,EAClC,CAEA,IADGoD,GAA4BA,EAA2BhzB,GACrD91C,EAAI+oE,EAAS9qE,OAAQ+B,IACzBmmE,EAAU4C,EAAS/oE,GAChB0lE,EAAoBF,EAAEiD,EAAiBtC,IAAYsC,EAAgBtC,IACrEsC,EAAgBtC,GAAS,KAE1BsC,EAAgBtC,GAAW,CAC5B,EAIG+C,EAAqB3C,WAAqC,yBAAIA,WAAqC,0BAAK,GAC5G2C,EAAmB7lE,QAAQwlE,EAAqB/gD,KAAK,KAAM,IAC3DohD,EAAmB/qE,KAAO0qE,EAAqB/gD,KAAK,KAAMohD,EAAmB/qE,KAAK2pB,KAAKohD,QCrFvFxD,EAAoBqB,QAAKthE,sCCKzB,MAAM0jE,GAAOxF,EAAAA,EAAAA,OAAK,IAAM,yFAElByF,EAAmB71B,KAAKC,MAE9B,GAAI9R,OAAO58B,KAAK4Y,WAAW,qBAAsB,CAC/C,MAAMhf,EAASgjC,OAAO2nC,OAClB3qE,GACFA,EAAOmmE,YAAY,CACjB//D,KAAM48B,OAAO58B,KACbwkE,YAAa5nC,OAAO0V,SAASmF,OAGjC7a,OAAO6nC,OACT,EAEahI,EAAAA,EAAAA,GAAWt+D,SAASumE,eAAe,SAE3CxrC,OACH5hC,EAAAA,cAACA,EAAAA,WAAgB,KACfA,EAAAA,cAAC+jC,EAAAA,SAAQ,CAACm1B,SAAUl5D,EAAAA,cAACD,EAAAA,EAAO,OAC1BC,EAAAA,cAAC+sE,EAAI,CAACM,iBAAkBL","sources":["../webpack/runtime/create fake namespace object","../webpack/runtime/load script","components/Loading.tsx","../../../node_modules/stylis/src/Utility.js","../../../node_modules/stylis/src/Tokenizer.js","../../../node_modules/stylis/src/Enum.js","../../../node_modules/stylis/src/Serializer.js","../../../node_modules/stylis/src/Parser.js","../../../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/stylis/src/Middleware.js","../../../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../../../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/styles/createColorScheme.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createThemeNoVars.js","../../../node_modules/@mui/system/cssVars/createGetCssVar.js","../../../node_modules/@mui/system/cssVars/prepareTypographyVars.js","../../../node_modules/@mui/system/cssVars/cssVarsParser.js","../../../node_modules/@mui/system/cssVars/prepareCssVars.js","../../../node_modules/@mui/material/styles/createGetSelector.js","../../../node_modules/@mui/material/styles/stringifyTheme.js","../../../node_modules/@mui/material/styles/createThemeWithVars.js","../../../node_modules/@mui/system/cssVars/getColorSchemeSelector.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/excludeVariablesFromRoot.js","../../../node_modules/@mui/material/styles/getOverlayAlpha.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/rootShouldForwardProp.js","../../../node_modules/@mui/material/styles/shouldSkipGeneratingVar.js","../../../node_modules/@mui/material/styles/slotShouldForwardProp.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/utils/capitalize.js","../../../node_modules/@mui/material/utils/createSimplePaletteValueFilter.js","../../../node_modules/@mui/material/utils/memoTheme.js","../../../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../../../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../../../node_modules/@mui/styled-engine/index.js","../../../node_modules/@mui/system/DefaultPropsProvider/DefaultPropsProvider.js","../../../node_modules/@mui/system/breakpoints/breakpoints.js","../../../node_modules/@mui/system/colorManipulator/colorManipulator.js","../../../node_modules/@mui/system/createBreakpoints/createBreakpoints.js","../../../node_modules/@mui/system/createStyled/createStyled.js","../../../node_modules/@mui/system/createTheme/createSpacing.js","../../../node_modules/@mui/system/createTheme/shape.js","../../../node_modules/@mui/system/createTheme/applyStyles.js","../../../node_modules/@mui/system/createTheme/createTheme.js","../../../node_modules/@mui/system/cssContainerQueries/cssContainerQueries.js","../../../node_modules/@mui/system/merge/merge.js","../../../node_modules/@mui/system/spacing/spacing.js","../../../node_modules/@mui/system/memoize/memoize.js","../../../node_modules/@mui/system/style/style.js","../../../node_modules/@mui/system/compose/compose.js","../../../node_modules/@mui/system/borders/borders.js","../../../node_modules/@mui/system/cssGrid/cssGrid.js","../../../node_modules/@mui/system/palette/palette.js","../../../node_modules/@mui/system/sizing/sizing.js","../../../node_modules/@mui/system/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/esm/capitalize/capitalize.js","../../../node_modules/@mui/utils/esm/clamp/clamp.js","../../../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../../../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/client.js","../../../node_modules/react-dom/index.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/clsx/dist/clsx.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/runtimeId","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","index.tsx"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@jbrowse/web:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import React from 'react'\nimport { CircularProgress } from '@mui/material'\n\nexport default function Loading() {\n  return (\n    <CircularProgress\n      disableShrink\n      style={{\n        position: 'fixed',\n        top: '50%',\n        left: '50%',\n        marginTop: -25,\n        marginLeft: -25,\n      }}\n      size={50}\n    />\n  )\n}\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n  /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node\n    /*: HTMLStyleElement */\n    ) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  /* : Node */\n\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n    /*: HTMLStyleElement */\n    ) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n  /*: (\n  selector: string,\n  serialized: SerializedStyles,\n  sheet: StyleSheet,\n  shouldCache: boolean\n  ) => string | void */\n\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function\n      /*: void */\n    insert(selector\n    /*: string */\n    , serialized\n    /*: SerializedStyles */\n    , sheet\n    /*: StyleSheet */\n    , shouldCache\n    /*: boolean */\n    ) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache\n  /*: EmotionCache */\n  = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context<EmotionCache | null> */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* <Props, Ref: React.Ref<*>> */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent<Props> */\n{\n  return /*#__PURE__*/forwardRef(function (props\n  /*: Props */\n  , ref\n  /*: Ref */\n  ) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    return mergedTheme;\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\n/*\ntype ThemeProviderProps = {\n  theme: Object | (Object => Object),\n  children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme\n/* <Config: {}> */\n(Component\n/*: React.AbstractComponent<Config> */\n)\n/*: React.AbstractComponent<$Diff<Config, { theme: Object }>> */\n{\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  };\n\n  var WithTheme = /*#__PURE__*/React.forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n  var newProps\n  /*: any */\n  = {};\n\n  for (var key in props) {\n    if (hasOwn.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* <any, any> */\nfunction (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.className = className;\n\n  if (ref) {\n    newProps.ref = ref;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  }\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node\n    /*: HTMLStyleElement | null*/\n    = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n  name: string,\n  styles: string,\n  anim: 1,\n  toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n  /*: Keyframes */\nkeyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\n/*\ntype ClassNameArg =\n  | string\n  | boolean\n  | { [key: string]: boolean }\n  | Array<ClassNameArg>\n  | null\n  | void\n*/\n\nvar classnames = function\n  /*: string */\nclassnames(args\n/*: Array<ClassNameArg> */\n) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array<any>) => string */\n, className\n/*: string */\n) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n/*\ntype Props = {\n  children: ({\n    css: (...args: any) => string,\n    cx: (...args: Array<ClassNameArg>) => string,\n    theme: Object\n  }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent<Props>*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  }\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst circularDashKeyframe = keyframes`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n        animation: ${circularRotateKeyframe} 1.4s linear infinite;\n      ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n      ` : null;\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  display: 'inline-block',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('transform')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: rotateAnimation || {\n      animation: `${circularRotateKeyframe} 1.4s linear infinite`\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      color: (theme.vars || theme).palette[color].main\n    }\n  }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  stroke: 'currentColor',\n  variants: [{\n    props: {\n      variant: 'determinate'\n    },\n    style: {\n      transition: theme.transitions.create('stroke-dashoffset')\n    }\n  }, {\n    props: {\n      variant: 'indeterminate'\n    },\n    style: {\n      // Some default value that looks fine waiting for the animation to kicks in.\n      strokeDasharray: '80px, 200px',\n      strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n    }\n  }, {\n    props: ({\n      ownerState\n    }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n    style: dashAnimation || {\n      // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n      animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n    }\n  }]\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n    className,\n    color = 'primary',\n    disableShrink = false,\n    size = 40,\n    style,\n    thickness = 3.6,\n    value = 0,\n    variant = 'indeterminate',\n    ...other\n  } = props;\n  const ownerState = {\n    ...props,\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  };\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, {\n    className: clsx(classes.root, className),\n    style: {\n      width: size,\n      height: size,\n      ...rootStyle,\n      ...style\n    },\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\",\n    ...rootProps,\n    ...other,\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n  return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n    ...props\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n  return useSystemDefaultProps(params);\n}","const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;","const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;","const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;","const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;","const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n  if (index === 0) {\n    return 'none';\n  }\n  const overlay = getOverlayAlpha(index);\n  return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n  return {\n    inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n    inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n    switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n    switchTrack: mode === 'dark' ? 0.3 : 0.38\n  };\n}\nexport function getOverlays(mode) {\n  return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n  const {\n    palette: paletteInput = {\n      mode: 'light'\n    },\n    // need to cast to avoid module augmentation test\n    opacity,\n    overlays,\n    ...rest\n  } = options;\n  const palette = createPalette(paletteInput);\n  return {\n    palette,\n    opacity: {\n      ...getOpacity(palette.mode),\n      ...opacity\n    },\n    overlays: overlays || getOverlays(palette.mode),\n    ...rest\n  };\n}","export default function createMixins(breakpoints, mixins) {\n  return {\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    },\n    ...mixins\n  };\n}","const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;","const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;","const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n    mode = 'light',\n    contrastThreshold = 3,\n    tonalOffset = 0.2,\n    ...other\n  } = palette;\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = {\n      ...color\n    };\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge({\n    // A collection of common colors.\n    common: {\n      ...common\n    },\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset,\n    // The light and dark mode object.\n    ...modes[mode]\n  }, other);\n  return paletteOutput;\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nexport { createMuiTheme } from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n  if (!theme.colorSchemes) {\n    return undefined;\n  }\n  if (colorScheme) {\n    theme.colorSchemes[scheme] = {\n      ...(colorScheme !== true && colorScheme),\n      palette: createPalette({\n        ...(colorScheme === true ? {} : colorScheme.palette),\n        mode: scheme\n      }) // cast type to skip module augmentation test\n    };\n  }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n  const {\n    palette,\n    cssVariables = false,\n    colorSchemes: initialColorSchemes = !palette ? {\n      light: true\n    } : undefined,\n    defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n    ...rest\n  } = options;\n  const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n  const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n  const colorSchemesInput = {\n    ...initialColorSchemes,\n    ...(palette ? {\n      [defaultColorSchemeInput]: {\n        ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n        palette\n      }\n    } : undefined)\n  };\n  if (cssVariables === false) {\n    if (!('colorSchemes' in options)) {\n      // Behaves exactly as v5\n      return createThemeNoVars(options, ...args);\n    }\n    let paletteOptions = palette;\n    if (!('palette' in options)) {\n      if (colorSchemesInput[defaultColorSchemeInput]) {\n        if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n          paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n        } else if (defaultColorSchemeInput === 'dark') {\n          // @ts-ignore to prevent the module augmentation test from failing\n          paletteOptions = {\n            mode: 'dark'\n          };\n        }\n      }\n    }\n    const theme = createThemeNoVars({\n      ...options,\n      palette: paletteOptions\n    }, ...args);\n    theme.defaultColorScheme = defaultColorSchemeInput;\n    theme.colorSchemes = colorSchemesInput;\n    if (theme.palette.mode === 'light') {\n      theme.colorSchemes.light = {\n        ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n        palette: theme.palette\n      };\n      attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n    }\n    if (theme.palette.mode === 'dark') {\n      theme.colorSchemes.dark = {\n        ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n        palette: theme.palette\n      };\n      attachColorScheme(theme, 'light', colorSchemesInput.light);\n    }\n    return theme;\n  }\n  if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n    colorSchemesInput.light = true;\n  }\n  return createThemeWithVars({\n    ...rest,\n    colorSchemes: colorSchemesInput,\n    defaultColorScheme: defaultColorSchemeInput,\n    ...(typeof cssVariables !== 'boolean' && cssVariables)\n  }, ...args);\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nfunction createThemeNoVars(options = {}, ...args) {\n  const {\n    breakpoints: breakpointsInput,\n    mixins: mixinsInput = {},\n    spacing: spacingInput,\n    palette: paletteInput = {},\n    transitions: transitionsInput = {},\n    typography: typographyInput = {},\n    shape: shapeInput,\n    ...other\n  } = options;\n  if (options.vars) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(20));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: {\n      ...zIndex\n    }\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.startsWith('Mui')) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...other?.unstable_sxConfig\n  };\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createThemeNoVars(...args);\n}\nexport default createThemeNoVars;","/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n  function appendVar(...vars) {\n    if (!vars.length) {\n      return '';\n    }\n    const value = vars[0];\n    if (typeof value === 'string' && !value.match(/(#|\\(|\\)|(-?(\\d*\\.)?\\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\\d*\\.)?\\d+)$|(\\d+ \\d+ \\d+)/)) {\n      return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n    }\n    return `, ${value}`;\n  }\n\n  // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n  const getCssVar = (field, ...fallbacks) => {\n    return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n  };\n  return getCssVar;\n}","export default function prepareTypographyVars(typography) {\n  const vars = {};\n  const entries = Object.entries(typography);\n  entries.forEach(entry => {\n    const [key, value] = entry;\n    if (typeof value === 'object') {\n      vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n    }\n  });\n  return vars;\n}","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n  let temp = obj;\n  keys.forEach((k, index) => {\n    if (index === keys.length - 1) {\n      if (Array.isArray(temp)) {\n        temp[Number(k)] = value;\n      } else if (temp && typeof temp === 'object') {\n        temp[k] = value;\n      }\n    } else if (temp && typeof temp === 'object') {\n      if (!temp[k]) {\n        temp[k] = arrayKeys.includes(k) ? [] : {};\n      }\n      temp = temp[k];\n    }\n  });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n *                   - the deepest key in source object is reached\n *                   - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n  function recurse(object, parentKeys = [], arrayKeys = []) {\n    Object.entries(object).forEach(([key, value]) => {\n      if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n        if (value !== undefined && value !== null) {\n          if (typeof value === 'object' && Object.keys(value).length > 0) {\n            recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n          } else {\n            callback([...parentKeys, key], value, arrayKeys);\n          }\n        }\n      }\n    });\n  }\n  recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n  if (typeof value === 'number') {\n    if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n      // CSS property that are unitless\n      return value;\n    }\n    const lastKey = keys[keys.length - 1];\n    if (lastKey.toLowerCase().includes('opacity')) {\n      // opacity values are unitless\n      return value;\n    }\n    return `${value}px`;\n  }\n  return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n *  prefix?: string,\n *  shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean\n * }} options.\n *  `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n *   fontSize: 12,\n *   lineHeight: 1.2,\n *   palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n  const {\n    prefix,\n    shouldSkipGeneratingVar\n  } = options || {};\n  const css = {};\n  const vars = {};\n  const varsWithDefaults = {};\n  walkObjectDeep(theme, (keys, value, arrayKeys) => {\n    if (typeof value === 'string' || typeof value === 'number') {\n      if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n        // only create css & var if `shouldSkipGeneratingVar` return false\n        const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n        const resolvedValue = getCssValue(keys, value);\n        Object.assign(css, {\n          [cssVar]: resolvedValue\n        });\n        assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n        assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n      }\n    }\n  }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n  );\n  return {\n    css,\n    vars,\n    varsWithDefaults\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n  const {\n    getSelector = defaultGetSelector,\n    disableCssColorScheme,\n    colorSchemeSelector: selector\n  } = parserConfig;\n  // @ts-ignore - ignore components do not exist\n  const {\n    colorSchemes = {},\n    components,\n    defaultColorScheme = 'light',\n    ...otherTheme\n  } = theme;\n  const {\n    vars: rootVars,\n    css: rootCss,\n    varsWithDefaults: rootVarsWithDefaults\n  } = cssVarsParser(otherTheme, parserConfig);\n  let themeVars = rootVarsWithDefaults;\n  const colorSchemesMap = {};\n  const {\n    [defaultColorScheme]: defaultScheme,\n    ...otherColorSchemes\n  } = colorSchemes;\n  Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n    const {\n      vars,\n      css,\n      varsWithDefaults\n    } = cssVarsParser(scheme, parserConfig);\n    themeVars = deepmerge(themeVars, varsWithDefaults);\n    colorSchemesMap[key] = {\n      css,\n      vars\n    };\n  });\n  if (defaultScheme) {\n    // default color scheme vars should be merged last to set as default\n    const {\n      css,\n      vars,\n      varsWithDefaults\n    } = cssVarsParser(defaultScheme, parserConfig);\n    themeVars = deepmerge(themeVars, varsWithDefaults);\n    colorSchemesMap[defaultColorScheme] = {\n      css,\n      vars\n    };\n  }\n  function defaultGetSelector(colorScheme, cssObject) {\n    let rule = selector;\n    if (selector === 'class') {\n      rule = '.%s';\n    }\n    if (selector === 'data') {\n      rule = '[data-%s]';\n    }\n    if (selector?.startsWith('data-') && !selector.includes('%s')) {\n      // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n      rule = `[${selector}=\"%s\"]`;\n    }\n    if (colorScheme) {\n      if (rule === 'media') {\n        if (theme.defaultColorScheme === colorScheme) {\n          return ':root';\n        }\n        const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n        return {\n          [`@media (prefers-color-scheme: ${mode})`]: {\n            ':root': cssObject\n          }\n        };\n      }\n      if (rule) {\n        if (theme.defaultColorScheme === colorScheme) {\n          return `:root, ${rule.replace('%s', String(colorScheme))}`;\n        }\n        return rule.replace('%s', String(colorScheme));\n      }\n    }\n    return ':root';\n  }\n  const generateThemeVars = () => {\n    let vars = {\n      ...rootVars\n    };\n    Object.entries(colorSchemesMap).forEach(([, {\n      vars: schemeVars\n    }]) => {\n      vars = deepmerge(vars, schemeVars);\n    });\n    return vars;\n  };\n  const generateStyleSheets = () => {\n    const stylesheets = [];\n    const colorScheme = theme.defaultColorScheme || 'light';\n    function insertStyleSheet(key, css) {\n      if (Object.keys(css).length) {\n        stylesheets.push(typeof key === 'string' ? {\n          [key]: {\n            ...css\n          }\n        } : key);\n      }\n    }\n    insertStyleSheet(getSelector(undefined, {\n      ...rootCss\n    }), rootCss);\n    const {\n      [colorScheme]: defaultSchemeVal,\n      ...other\n    } = colorSchemesMap;\n    if (defaultSchemeVal) {\n      // default color scheme has to come before other color schemes\n      const {\n        css\n      } = defaultSchemeVal;\n      const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n      const finalCss = !disableCssColorScheme && cssColorSheme ? {\n        colorScheme: cssColorSheme,\n        ...css\n      } : {\n        ...css\n      };\n      insertStyleSheet(getSelector(colorScheme, {\n        ...finalCss\n      }), finalCss);\n    }\n    Object.entries(other).forEach(([key, {\n      css\n    }]) => {\n      const cssColorSheme = colorSchemes[key]?.palette?.mode;\n      const finalCss = !disableCssColorScheme && cssColorSheme ? {\n        colorScheme: cssColorSheme,\n        ...css\n      } : {\n        ...css\n      };\n      insertStyleSheet(getSelector(key, {\n        ...finalCss\n      }), finalCss);\n    });\n    return stylesheets;\n  };\n  return {\n    vars: themeVars,\n    generateThemeVars,\n    generateStyleSheets\n  };\n}\nexport default prepareCssVars;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n  const selector = theme.colorSchemeSelector;\n  let rule = selector;\n  if (selector === 'class') {\n    rule = '.%s';\n  }\n  if (selector === 'data') {\n    rule = '[data-%s]';\n  }\n  if (selector?.startsWith('data-') && !selector.includes('%s')) {\n    // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n    rule = `[${selector}=\"%s\"]`;\n  }\n  if (theme.defaultColorScheme === colorScheme) {\n    if (colorScheme === 'dark') {\n      const excludedVariables = {};\n      excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n        excludedVariables[cssVar] = css[cssVar];\n        delete css[cssVar];\n      });\n      if (rule === 'media') {\n        return {\n          ':root': css,\n          [`@media (prefers-color-scheme: dark)`]: {\n            ':root': excludedVariables\n          }\n        };\n      }\n      if (rule) {\n        return {\n          [rule.replace('%s', colorScheme)]: excludedVariables,\n          [`:root, ${rule.replace('%s', colorScheme)}`]: css\n        };\n      }\n      return {\n        ':root': {\n          ...css,\n          ...excludedVariables\n        }\n      };\n    }\n    if (rule && rule !== 'media') {\n      return `:root, ${rule.replace('%s', String(colorScheme))}`;\n    }\n  } else if (colorScheme) {\n    if (rule === 'media') {\n      return {\n        [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n          ':root': css\n        }\n      };\n    }\n    if (rule) {\n      return rule.replace('%s', String(colorScheme));\n    }\n  }\n  return ':root';\n};","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n  return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme` or `extendTheme`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n *  theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n  const serializableTheme = {\n    ...baseTheme\n  };\n  function serializeTheme(object) {\n    const array = Object.entries(object);\n    // eslint-disable-next-line no-plusplus\n    for (let index = 0; index < array.length; index++) {\n      const [key, value] = array[index];\n      if (!isSerializable(value) || key.startsWith('unstable_')) {\n        delete object[key];\n      } else if (isPlainObject(value)) {\n        object[key] = {\n          ...value\n        };\n        serializeTheme(object[key]);\n      }\n    }\n  }\n  serializeTheme(serializableTheme);\n  return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction assignNode(obj, keys) {\n  keys.forEach(k => {\n    if (!obj[k]) {\n      obj[k] = {};\n    }\n  });\n}\nfunction setColor(obj, key, defaultValue) {\n  if (!obj[key] && defaultValue) {\n    obj[key] = defaultValue;\n  }\n}\nfunction toRgb(color) {\n  if (!color || !color.startsWith('hsl')) {\n    return color;\n  }\n  return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n  if (!(`${key}Channel` in obj)) {\n    // custom channel token is not provided, generate one.\n    // if channel token can't be generated, show a warning.\n    obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n  }\n}\nfunction getSpacingVal(spacingInput) {\n  if (typeof spacingInput === 'number') {\n    return `${spacingInput}px`;\n  }\n  if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n    return spacingInput;\n  }\n  return '8px';\n}\nconst silent = fn => {\n  try {\n    return fn();\n  } catch (error) {\n    // ignore error\n  }\n  return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {\n  if (!scheme) {\n    return undefined;\n  }\n  scheme = scheme === true ? {} : scheme;\n  const mode = colorScheme === 'dark' ? 'dark' : 'light';\n  if (!restTheme) {\n    colorSchemes[colorScheme] = createColorScheme({\n      ...scheme,\n      palette: {\n        mode,\n        ...scheme?.palette\n      }\n    });\n    return undefined;\n  }\n  const {\n    palette,\n    ...muiTheme\n  } = createThemeNoVars({\n    ...restTheme,\n    palette: {\n      mode,\n      ...scheme?.palette\n    }\n  });\n  colorSchemes[colorScheme] = {\n    ...scheme,\n    palette,\n    opacity: {\n      ...getOpacity(mode),\n      ...scheme?.opacity\n    },\n    overlays: scheme?.overlays || getOverlays(mode)\n  };\n  return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n  const {\n    colorSchemes: colorSchemesInput = {\n      light: true\n    },\n    defaultColorScheme: defaultColorSchemeInput,\n    disableCssColorScheme = false,\n    cssVarPrefix = 'mui',\n    shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n    colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n    ...input\n  } = options;\n  const firstColorScheme = Object.keys(colorSchemesInput)[0];\n  const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n  const getCssVar = createGetCssVar(cssVarPrefix);\n  const {\n    [defaultColorScheme]: defaultSchemeInput,\n    light: builtInLight,\n    dark: builtInDark,\n    ...customColorSchemes\n  } = colorSchemesInput;\n  const colorSchemes = {\n    ...customColorSchemes\n  };\n  let defaultScheme = defaultSchemeInput;\n\n  // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n  if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n    defaultScheme = true;\n  }\n  if (!defaultScheme) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatMuiErrorMessage(21, defaultColorScheme));\n  }\n\n  // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n  const muiTheme = attachColorScheme(colorSchemes, defaultScheme, input, defaultColorScheme);\n  if (builtInLight && !colorSchemes.light) {\n    attachColorScheme(colorSchemes, builtInLight, undefined, 'light');\n  }\n  if (builtInDark && !colorSchemes.dark) {\n    attachColorScheme(colorSchemes, builtInDark, undefined, 'dark');\n  }\n  let theme = {\n    defaultColorScheme,\n    ...muiTheme,\n    cssVarPrefix,\n    colorSchemeSelector: selector,\n    getCssVar,\n    colorSchemes,\n    font: {\n      ...prepareTypographyVars(muiTheme.typography),\n      ...muiTheme.font\n    },\n    spacing: getSpacingVal(input.spacing)\n  };\n  Object.keys(theme.colorSchemes).forEach(key => {\n    const palette = theme.colorSchemes[key].palette;\n    const setCssVarColor = cssVar => {\n      const tokens = cssVar.split('-');\n      const color = tokens[1];\n      const colorToken = tokens[2];\n      return getCssVar(cssVar, palette[color][colorToken]);\n    };\n\n    // attach black & white channels to common node\n    if (palette.mode === 'light') {\n      setColor(palette.common, 'background', '#fff');\n      setColor(palette.common, 'onBackground', '#000');\n    }\n    if (palette.mode === 'dark') {\n      setColor(palette.common, 'background', '#000');\n      setColor(palette.common, 'onBackground', '#fff');\n    }\n\n    // assign component variables\n    assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n    if (palette.mode === 'light') {\n      setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n      setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n      setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n      setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n      setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n      setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n      setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n      setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n      setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n      setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n      setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n      setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n      setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n      setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n      setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    }\n    if (palette.mode === 'dark') {\n      setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n      setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n      setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n      setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n      setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n      setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n      setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n      setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n      setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n      setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n      setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n      setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n      setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n      setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n      setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n      setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n      setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n      setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n      setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n      setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n      setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n      setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n      setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n      setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n      setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n      setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n      setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    }\n\n    // MUI X - DataGrid needs this token.\n    setColorChannel(palette.background, 'default');\n\n    // added for consistency with the `background.default` token\n    setColorChannel(palette.background, 'paper');\n    setColorChannel(palette.common, 'background');\n    setColorChannel(palette.common, 'onBackground');\n    setColorChannel(palette, 'divider');\n    Object.keys(palette).forEach(color => {\n      const colors = palette[color];\n\n      // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n      if (colors && typeof colors === 'object') {\n        // Silent the error for custom palettes.\n        if (colors.main) {\n          setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n        }\n        if (colors.light) {\n          setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n        }\n        if (colors.dark) {\n          setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n        }\n        if (colors.contrastText) {\n          setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n        }\n        if (color === 'text') {\n          // Text colors: text.primary, text.secondary\n          setColorChannel(palette[color], 'primary');\n          setColorChannel(palette[color], 'secondary');\n        }\n        if (color === 'action') {\n          // Action colors: action.active, action.selected\n          if (colors.active) {\n            setColorChannel(palette[color], 'active');\n          }\n          if (colors.selected) {\n            setColorChannel(palette[color], 'selected');\n          }\n        }\n      }\n    });\n  });\n  theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n  const parserConfig = {\n    prefix: cssVarPrefix,\n    disableCssColorScheme,\n    shouldSkipGeneratingVar,\n    getSelector: defaultGetSelector(theme)\n  };\n  const {\n    vars,\n    generateThemeVars,\n    generateStyleSheets\n  } = prepareCssVars(theme, parserConfig);\n  theme.vars = vars;\n  Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n    theme[key] = value;\n  });\n  theme.generateThemeVars = generateThemeVars;\n  theme.generateStyleSheets = generateStyleSheets;\n  theme.generateSpacing = function generateSpacing() {\n    return createSpacing(input.spacing, createUnarySpacing(this));\n  };\n  theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n  theme.spacing = theme.generateSpacing();\n  theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n  theme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...input?.unstable_sxConfig\n  };\n  theme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n  return theme;\n}","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n  return function getColorSchemeSelector(colorScheme) {\n    if (selector === 'media') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (colorScheme !== 'light' && colorScheme !== 'dark') {\n          console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n        }\n      }\n      return `@media (prefers-color-scheme: ${colorScheme})`;\n    }\n    if (selector) {\n      if (selector.startsWith('data-') && !selector.includes('%s')) {\n        return `[${selector}=\"${colorScheme}\"] &`;\n      }\n      if (selector === 'class') {\n        return `.${colorScheme} &`;\n      }\n      if (selector === 'data') {\n        return `[data-${colorScheme}] &`;\n      }\n      return `${selector.replace('%s', colorScheme)} &`;\n    }\n    return '&';\n  };\n}","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.desmos.com/calculator/vbrp3ggqet\n  return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = {\n    ...easing,\n    ...inputTransitions.easing\n  };\n  const mergedDuration = {\n    ...duration,\n    ...inputTransitions.duration\n  };\n  const create = (props = ['all'], options = {}) => {\n    const {\n      duration: durationOption = mergedDuration.standard,\n      easing: easingOption = mergedEasing.easeInOut,\n      delay = 0,\n      ...other\n    } = options;\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      const isNumber = value => !Number.isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (typeof options !== 'object') {\n        console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return {\n    getAutoHeightDuration,\n    create,\n    ...inputTransitions,\n    easing: mergedEasing,\n    duration: mergedDuration\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const {\n    fontFamily = defaultFontFamily,\n    // The default font size of the Material Specification.\n    fontSize = 14,\n    // px\n    fontWeightLight = 300,\n    fontWeightRegular = 400,\n    fontWeightMedium = 500,\n    fontWeightBold = 700,\n    // Tell MUI what's the font-size on the html element.\n    // 16px is the default font-size used by browsers.\n    htmlFontSize = 16,\n    // Apply the CSS properties to all the variants.\n    allVariants,\n    pxToRem: pxToRem2,\n    ...other\n  } = typeof typography === 'function' ? typography(palette) : typography;\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight,\n    // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n    // across font-families can cause issues with the kerning.\n    ...(fontFamily === defaultFontFamily ? {\n      letterSpacing: `${round(letterSpacing / size)}em`\n    } : {}),\n    ...casing,\n    ...allVariants\n  });\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n    // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n    inherit: {\n      fontFamily: 'inherit',\n      fontWeight: 'inherit',\n      fontSize: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  };\n  return deepmerge({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold,\n    ...variants\n  }, other, {\n    clone: false // No need to clone deep\n  });\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return Math.round(alphaValue * 10) / 1000;\n}","export default '$$material';","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","export default function shouldSkipGeneratingVar(keys) {\n  return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n  // ends with sxConfig\n  keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n  themeId: THEME_ID,\n  defaultTheme,\n  rootShouldForwardProp\n});\nexport default styled;","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","/**\n * Type guard to check if the object has a \"main\" property of type string.\n *\n * @param obj - the object to check\n * @returns boolean\n */\nfunction hasCorrectMainProperty(obj) {\n  return typeof obj.main === 'string';\n}\n/**\n * Checks if the object conforms to the SimplePaletteColorOptions type.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param obj - The object to check\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns boolean\n */\nfunction checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {\n  if (!hasCorrectMainProperty(obj)) {\n    return false;\n  }\n  for (const value of additionalPropertiesToCheck) {\n    if (!obj.hasOwnProperty(value) || typeof obj[value] !== 'string') {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Creates a filter function used to filter simple palette color options.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns ([, value]: [any, PaletteColorOptions]) => boolean\n */\nexport default function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {\n  return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);\n}","// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to\n// allocate more objects.\nconst arg = {\n  theme: undefined\n};\n\n/**\n * Memoize style function on theme.\n * Intended to be used in styled() calls that only need access to the theme.\n */\nexport default function memoTheme(styleFn) {\n  let lastValue;\n  let lastTheme;\n  return props => {\n    let value = lastValue;\n    if (value === undefined || props.theme !== lastTheme) {\n      arg.theme = props.theme;\n      value = styleFn(arg);\n      lastValue = value;\n      lastTheme = props.theme;\n    }\n    return value;\n  };\n}","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\n/* import type {\n  ElementType,\n  StatelessFunctionalComponent,\n  AbstractComponent\n} from 'react' */\n/*\nexport type Interpolations = Array<any>\n\nexport type StyledElementType<Props> =\n  | string\n  | AbstractComponent<{ ...Props, className: string }, mixed>\n\nexport type StyledOptions = {\n  label?: string,\n  shouldForwardProp?: string => boolean,\n  target?: string\n}\n\nexport type StyledComponent<Props> = StatelessFunctionalComponent<Props> & {\n  defaultProps: any,\n  toString: () => string,\n  withComponent: (\n    nextTag: StyledElementType<Props>,\n    nextOptions?: StyledOptions\n  ) => StyledComponent<Props>\n}\n\nexport type PrivateStyledComponent<Props> = StyledComponent<Props> & {\n  __emotion_real: StyledComponent<Props>,\n  __emotion_base: any,\n  __emotion_styles: any,\n  __emotion_forwardProp: any\n}\n*/\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key\n/*: string */\n) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag\n/*: ElementType */\n) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag\n/*: PrivateStyledComponent<any> */\n, options\n/*: StyledOptions | void */\n, isReal\n/*: boolean */\n) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName\n    /*: string */\n    ) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\n/*\nexport type CreateStyledComponent = <Props>(\n  ...args: Interpolations\n) => StyledComponent<Props>\n\nexport type CreateStyled = {\n  <Props>(\n    tag: StyledElementType<Props>,\n    options?: StyledOptions\n  ): (...args: Interpolations) => StyledComponent<Props>,\n  [key: string]: CreateStyledComponent,\n  bind: () => CreateStyled\n}\n*/\n\nvar isDevelopment = false;\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled\n/*: CreateStyled */\n= function createStyled\n/*: CreateStyled */\n(tag\n/*: any */\n, options\n/* ?: StyledOptions */\n) {\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  /* return function<Props>(): PrivateStyledComponent<Props> { */\n\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n\n        styles.push(args[i], args[0][i]);\n      }\n    }\n\n    var Styled\n    /*: PrivateStyledComponent<Props> */\n    = withEmotionCache(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = React.useContext(ThemeContext);\n      }\n\n      if (typeof props.className === 'string') {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if (finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n\n      if (ref) {\n        newProps.ref = ref;\n      }\n\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && isDevelopment) {\n          return 'NO_COMPONENT_SELECTOR';\n        }\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag\n    /*: StyledElementType<Props> */\n    , nextOptions\n    /* ?: StyledOptions */\n    ) {\n      return createStyled(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","/**\n * @mui/styled-engine v6.1.1\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n  value,\n  children\n}) {\n  return /*#__PURE__*/_jsx(PropsContext.Provider, {\n    value: value,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name]) {\n    return props;\n  }\n  const config = theme.components[name];\n  if (config.defaultProps) {\n    // compatible with v5 signature\n    return resolveProps(config.defaultProps, props);\n  }\n  if (!config.styleOverrides && !config.variants) {\n    // v6 signature, no property 'defaultProps'\n    return resolveProps(config, props);\n  }\n  return props;\n}\nexport function useDefaultProps({\n  props,\n  name\n}) {\n  const ctx = React.useContext(PropsContext);\n  return getThemeProps({\n    props,\n    name,\n    theme: {\n      components: ctx\n    }\n  });\n}\nexport default DefaultPropsProvider;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n  containerQueries: containerName => ({\n    up: key => {\n      let result = typeof key === 'number' ? key : values[key] || key;\n      if (typeof result === 'number') {\n        result = `${result}px`;\n      }\n      return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n    }\n  })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n        const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n        if (containerKey) {\n          acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n        }\n      }\n      // key is breakpoint\n      else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction({\n          theme,\n          ...props[key]\n        });\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n    ...styleFunction.propTypes,\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  } : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.includes('rgb')) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.includes('hsl')) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.includes('color')) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n  // Idempotent\n  if (color.startsWith('#')) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.includes('hsl')) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.includes('rgb') || color.type.includes('color')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.includes('hsl')) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.includes('rgb')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.includes('color')) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return emphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return {\n      ...acc,\n      [obj.key]: obj.val\n    };\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n    // The breakpoint **start** at this value.\n    // For instance with the first breakpoint xs: [xs, sm).\n    values = {\n      xs: 0,\n      // phone\n      sm: 600,\n      // tablet\n      md: 900,\n      // small laptop\n      lg: 1200,\n      // desktop\n      xl: 1536 // large screen\n    },\n    unit = 'px',\n    step = 5,\n    ...other\n  } = breakpoints;\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return {\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit,\n    ...other\n  };\n}","/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction resolveTheme(themeId, theme, defaultTheme) {\n  return isObjectEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nconst PROCESSED_PROPS = Symbol('mui.processed_props');\nfunction attachTheme(props, themeId, defaultTheme) {\n  if (PROCESSED_PROPS in props) {\n    return props[PROCESSED_PROPS];\n  }\n  const processedProps = {\n    ...props,\n    theme: resolveTheme(themeId, props.theme, defaultTheme)\n  };\n  props[PROCESSED_PROPS] = processedProps;\n  processedProps[PROCESSED_PROPS] = processedProps;\n  return processedProps;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (_props, styles) => styles[slot];\n}\nfunction processStyle(style, props) {\n  const resolvedStyle = typeof style === 'function' ? style(props) : style;\n  if (Array.isArray(resolvedStyle)) {\n    return resolvedStyle.flatMap(subStyle => processStyle(subStyle, props));\n  }\n  if (Array.isArray(resolvedStyle?.variants)) {\n    const {\n      variants,\n      ...otherStyles\n    } = resolvedStyle;\n    let result = otherStyles;\n    let mergedState; // We might not need it, initalized lazily\n\n    /* eslint-disable no-labels */\n    variantLoop: for (let i = 0; i < variants.length; i += 1) {\n      const variant = variants[i];\n      if (typeof variant.props === 'function') {\n        mergedState ??= {\n          ...props,\n          ...props.ownerState,\n          ownerState: props.ownerState\n        };\n        if (!variant.props(mergedState)) {\n          continue;\n        }\n      } else {\n        for (const key in variant.props) {\n          if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n            continue variantLoop;\n          }\n        }\n      }\n      if (!Array.isArray(result)) {\n        result = [result];\n      }\n      if (typeof variant.style === 'function') {\n        mergedState ??= {\n          ...props,\n          ...props.ownerState,\n          ownerState: props.ownerState\n        };\n        result.push(variant.style(mergedState));\n      } else {\n        result.push(variant.style);\n      }\n    }\n    /* eslint-enable no-labels */\n\n    return result;\n  }\n  return resolvedStyle;\n}\nexport default function createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return styleFunctionSx(attachTheme(props, themeId, defaultTheme));\n  };\n  systemSx.__mui_systemSx = true;\n  const styled = (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    processStyles(tag, styles => styles.filter(style => !style?.__mui_systemSx));\n    const {\n      name: componentName,\n      slot: componentSlot,\n      skipVariantsResolver: inputSkipVariantsResolver,\n      skipSx: inputSkipSx,\n      // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n      // For more details: https://github.com/mui/material-ui/pull/37908\n      overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n      ...options\n    } = inputOptions;\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = styledEngineStyled(tag, {\n      shouldForwardProp: shouldForwardPropOption,\n      label,\n      ...options\n    });\n    const transformStyleArg = style => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof style === 'function' && style.__emotion_real !== style || isPlainObject(style)) {\n        return props => processStyle(style, attachTheme(props, themeId, defaultTheme));\n      }\n      return style;\n    };\n    const muiStyledResolver = (style, ...expressions) => {\n      let transformedStyle = transformStyleArg(style);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(themeId, props.theme, defaultTheme);\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          const propsWithTheme = attachTheme(props, themeId, defaultTheme);\n\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          // eslint-disable-next-line guard-for-in\n          for (const slotKey in styleOverrides) {\n            resolvedStyleOverrides[slotKey] = processStyle(styleOverrides[slotKey], propsWithTheme);\n          }\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(themeId, props.theme, defaultTheme);\n          const themeVariants = theme?.components?.[componentName]?.variants;\n          if (!themeVariants) {\n            return null;\n          }\n          return processStyle({\n            variants: themeVariants\n          }, attachTheme(props, themeId, defaultTheme));\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(style) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyle = [...style, ...placeholders];\n        transformedStyle.raw = [...style.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyle, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${capitalize(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${getDisplayName(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n  return styled;\n}\nfunction isObjectEmpty(object) {\n  // eslint-disable-next-line\n  for (const _ in object) {\n    return false;\n  }\n  return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n}","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n  spacing: spacingInput\n})) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","const shape = {\n  borderRadius: 4\n};\nexport default shape;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n *  - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n *  - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n *  - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n *   const Component = styled('div')(({ theme }) => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *       background: '#1c1c1c',\n *       color: '#fff',\n *     }),\n *   ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n *   <Box sx={theme => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *        background: '#1c1c1c',\n *        color: '#fff',\n *      }),\n *     ]}\n *   />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n *   extendTheme({\n *     components: {\n *       MuiButton: {\n *         styleOverrides: {\n *           root: ({ theme }) => [\n *             { background: '#e5e5e5' },\n *             theme.applyStyles('dark', {\n *               background: '#1c1c1c',\n *               color: '#fff',\n *             }),\n *           ],\n *         },\n *       }\n *     }\n *   })\n *```\n */\nexport default function applyStyles(key, styles) {\n  // @ts-expect-error this is 'any' type\n  const theme = this;\n  if (theme.vars) {\n    if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n      return {};\n    }\n    // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n    let selector = theme.getColorSchemeSelector(key);\n    if (selector === '&') {\n      return styles;\n    }\n    if (selector.includes('data-') || selector.includes('.')) {\n      // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n      selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n    }\n    return {\n      [selector]: styles\n    };\n  }\n  if (theme.palette.mode === key) {\n    return styles;\n  }\n  return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n  const {\n    breakpoints: breakpointsInput = {},\n    palette: paletteInput = {},\n    spacing: spacingInput,\n    shape: shapeInput = {},\n    ...other\n  } = options;\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: {\n      mode: 'light',\n      ...paletteInput\n    },\n    spacing,\n    shape: {\n      ...shape,\n      ...shapeInput\n    }\n  }, other);\n  muiTheme = cssContainerQueries(muiTheme);\n  muiTheme.applyStyles = applyStyles;\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = {\n    ...defaultSxConfig,\n    ...other?.unstable_sxConfig\n  };\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n *       e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n *            output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n  if (!theme.containerQueries) {\n    return css;\n  }\n  const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n    const regex = /min-width:\\s*([0-9.]+)/;\n    return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n  });\n  if (!sorted.length) {\n    return css;\n  }\n  return sorted.reduce((acc, key) => {\n    const value = css[key];\n    delete acc[key];\n    acc[key] = value;\n    return acc;\n  }, {\n    ...css\n  });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n  return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n  const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n  if (!matches) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\nFor example, \\`@sm\\` or \\`@600\\` or \\`@40rem/sidebar\\`.` : _formatMuiErrorMessage(18, `(${shorthand})`));\n    }\n    return null;\n  }\n  const [, containerQuery, containerName] = matches;\n  const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n  return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n  const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n  function attachCq(node, name) {\n    node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n    node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n    node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n    node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n    node.not = (...args) => {\n      const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n      if (result.includes('not all and')) {\n        // `@container` does not work with `not all and`, so need to invert the logic\n        return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n      }\n      return result;\n    };\n  }\n  const node = {};\n  const containerQueries = name => {\n    attachCq(node, name);\n    return node;\n  };\n  attachCq(containerQueries);\n  return {\n    ...themeInput,\n    containerQueries\n  };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n  if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n    return val => {\n      if (typeof val === 'string') {\n        return val;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof val !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n        }\n      }\n      if (typeof themeSpacing === 'string') {\n        return `calc(${val} * ${themeSpacing})`;\n      }\n      return themeSpacing * val;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return val => {\n      if (typeof val === 'string') {\n        return val;\n      }\n      const abs = Math.abs(val);\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      const transformed = themeSpacing[abs];\n      if (val >= 0) {\n        return transformed;\n      }\n      if (typeof transformed === 'number') {\n        return -transformed;\n      }\n      return `-${transformed}`;\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (!keys.includes(prop)) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (props.theme?.breakpoints?.unit !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  font: {\n    themeKey: 'font'\n  },\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n  return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n   ---\n   These rules are preventing the performance optimizations below.\n */\n\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  for (const slotName in slots) {\n    const slot = slots[slotName];\n    let buffer = '';\n    let start = true;\n    for (let i = 0; i < slot.length; i += 1) {\n      const value = slot[i];\n      if (value) {\n        buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n        start = false;\n        if (classes && classes[value]) {\n          buffer += ' ' + classes[value];\n        }\n      }\n    }\n    output[slotName] = buffer;\n  }\n  return output;\n}","// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n  if (typeof item !== 'object' || item === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(item);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? {\n    ...target\n  } : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      if (isPlainObject(source[key]) &&\n      // Avoid prototype pollution\n      Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = {\n    ...props\n  };\n  for (const key in defaultProps) {\n    if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n      const propName = key;\n      if (propName === 'components' || propName === 'slots') {\n        output[propName] = {\n          ...defaultProps[propName],\n          ...output[propName]\n        };\n      } else if (propName === 'componentsProps' || propName === 'slotProps') {\n        const defaultSlotProps = defaultProps[propName];\n        const slotProps = props[propName];\n        if (!slotProps) {\n          output[propName] = defaultSlotProps || {};\n        } else if (!defaultSlotProps) {\n          output[propName] = slotProps;\n        } else {\n          output[propName] = {\n            ...slotProps\n          };\n          for (const slotKey in defaultSlotProps) {\n            if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n              const slotPropName = slotKey;\n              output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n            }\n          }\n        }\n      } else if (output[propName] === undefined) {\n        output[propName] = defaultProps[propName];\n      }\n    }\n  }\n  return output;\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"12\":\"c0c7bdf9\",\"14\":\"b9913d1d\",\"26\":\"604133d9\",\"120\":\"a447052d\",\"246\":\"9848bd41\",\"266\":\"94eb2bf9\",\"311\":\"2c004784\",\"366\":\"b00bf6ca\",\"399\":\"e36b7683\",\"419\":\"021427b6\",\"439\":\"bdc14632\",\"457\":\"6d7b716d\",\"489\":\"43cb4a5f\",\"491\":\"0011d1ad\",\"518\":\"7222a328\",\"561\":\"8b38948f\",\"596\":\"84c38eb7\",\"722\":\"4329bc98\",\"741\":\"a9772d36\",\"759\":\"9c32be0d\",\"765\":\"20669bca\",\"772\":\"83c2d2db\",\"937\":\"4f610bdf\",\"946\":\"245d7df9\",\"965\":\"8524fdac\",\"972\":\"c0d17685\",\"1012\":\"a7d14de3\",\"1029\":\"8c806427\",\"1051\":\"8e1641e2\",\"1110\":\"702cba94\",\"1157\":\"c0d4652e\",\"1189\":\"f18c6e1f\",\"1260\":\"ee4ecbf4\",\"1266\":\"cd6d9354\",\"1281\":\"1d836fc4\",\"1304\":\"a512b560\",\"1310\":\"8a044016\",\"1326\":\"19289940\",\"1345\":\"aaaaf175\",\"1354\":\"ded982ce\",\"1503\":\"cc48d25a\",\"1516\":\"ca4ab8f0\",\"1537\":\"4fdb4e95\",\"1598\":\"3b48685f\",\"1637\":\"21a8cf01\",\"1696\":\"8a290cef\",\"1725\":\"795fc4d3\",\"1752\":\"a727a500\",\"1757\":\"a6d05bc3\",\"1811\":\"7cfd8419\",\"1822\":\"2cbe112a\",\"1824\":\"c2ed4bca\",\"1978\":\"1faf7d31\",\"1996\":\"a37d9ec7\",\"1999\":\"2554e815\",\"2018\":\"9ce7fb06\",\"2047\":\"b1e80504\",\"2062\":\"a28f26f8\",\"2141\":\"d36fb4a8\",\"2189\":\"3c65daf8\",\"2197\":\"a5134ce4\",\"2212\":\"116fbbf4\",\"2241\":\"3d359b22\",\"2246\":\"e5e65a4f\",\"2249\":\"b91f0bb3\",\"2306\":\"f8d640f4\",\"2321\":\"ef211da9\",\"2398\":\"731eb1c6\",\"2412\":\"10574f7d\",\"2418\":\"0b1f308b\",\"2424\":\"7cd6703f\",\"2493\":\"20e8e76c\",\"2583\":\"db78b17f\",\"2627\":\"300bea43\",\"2645\":\"4b79a04c\",\"2697\":\"4ab94d07\",\"2729\":\"9660c29b\",\"2775\":\"e25b4dd4\",\"2777\":\"56f29f41\",\"2820\":\"3c0e09be\",\"2847\":\"009c96ee\",\"2861\":\"aa6cd5b7\",\"2872\":\"5129bbd8\",\"2885\":\"8a30e856\",\"2928\":\"4ac8c386\",\"2968\":\"4d90773a\",\"2977\":\"aa562b03\",\"2989\":\"031b43a0\",\"3003\":\"0f0cbacd\",\"3011\":\"9da53e7c\",\"3012\":\"9940fd01\",\"3029\":\"cd8dcca2\",\"3103\":\"4dfe3f78\",\"3106\":\"e1981605\",\"3109\":\"3173f682\",\"3116\":\"fa0100fd\",\"3120\":\"3940249f\",\"3162\":\"eb9bf76d\",\"3167\":\"312d0953\",\"3175\":\"af2c93a5\",\"3199\":\"a36b17a7\",\"3266\":\"accbd4dc\",\"3274\":\"053c3df5\",\"3304\":\"65e5d8dd\",\"3311\":\"92fac4a6\",\"3368\":\"6e9b017b\",\"3384\":\"e146a796\",\"3416\":\"f7c72cbe\",\"3425\":\"be85a6ad\",\"3474\":\"8c1888be\",\"3497\":\"9db6611b\",\"3525\":\"e74d3ff0\",\"3550\":\"089089a8\",\"3578\":\"058bdae5\",\"3614\":\"af493134\",\"3682\":\"840e721c\",\"3728\":\"99a63442\",\"3778\":\"e18101e6\",\"3795\":\"0386c297\",\"3862\":\"9fd8e870\",\"3902\":\"69c7ff0c\",\"3940\":\"c8b3da50\",\"4033\":\"df8ecd0d\",\"4060\":\"8757dbe8\",\"4133\":\"451f5e47\",\"4138\":\"57ad92a3\",\"4234\":\"63e1ba57\",\"4284\":\"61dbc58f\",\"4345\":\"0a9072cc\",\"4395\":\"8fda7b8b\",\"4414\":\"7f4caeab\",\"4435\":\"a57cabe2\",\"4456\":\"93a06b74\",\"4499\":\"3f0b2e70\",\"4615\":\"dc35870f\",\"4629\":\"1f1a55a3\",\"4630\":\"f0bdb9f0\",\"4659\":\"b65d8547\",\"4704\":\"9b3995ff\",\"4741\":\"5a289f5d\",\"4753\":\"834007ba\",\"4755\":\"8d938db2\",\"4770\":\"3d757d6b\",\"4773\":\"6cd74b80\",\"4806\":\"7e497d7a\",\"4861\":\"6244e4c0\",\"4863\":\"9dfed19c\",\"4864\":\"28cfc358\",\"4902\":\"452e575b\",\"4947\":\"2e80fd2d\",\"4974\":\"cf97ef5b\",\"5008\":\"f8d32f92\",\"5031\":\"6eccfd35\",\"5090\":\"bc77ac67\",\"5099\":\"14f82444\",\"5101\":\"993a6b6e\",\"5132\":\"00a31df0\",\"5156\":\"75195722\",\"5189\":\"3e22269d\",\"5243\":\"9de20396\",\"5255\":\"af554ced\",\"5260\":\"e7b7aeb6\",\"5327\":\"8f1dcfc1\",\"5331\":\"28d667f0\",\"5369\":\"993afa3f\",\"5461\":\"5c8cf5d1\",\"5484\":\"3ceeebff\",\"5511\":\"154ce441\",\"5515\":\"671905b2\",\"5595\":\"b4517d69\",\"5608\":\"1b8d39e1\",\"5640\":\"33b8306c\",\"5668\":\"73016b9c\",\"5676\":\"818528e8\",\"5677\":\"28a25579\",\"5682\":\"ea285a50\",\"5727\":\"f7a524b6\",\"5736\":\"48705208\",\"5746\":\"39e4296b\",\"5763\":\"48010c9a\",\"5896\":\"622b5e88\",\"5903\":\"9145cef7\",\"5904\":\"240caa72\",\"5930\":\"0ffd2546\",\"5951\":\"251be759\",\"5998\":\"22bd8296\",\"6021\":\"21769087\",\"6043\":\"e402bf73\",\"6054\":\"e0881c55\",\"6149\":\"c6c4af73\",\"6157\":\"96f40683\",\"6205\":\"903f897d\",\"6214\":\"0ed0ac32\",\"6235\":\"93768761\",\"6310\":\"ae82dc58\",\"6323\":\"1c706a2d\",\"6342\":\"62a02e7b\",\"6391\":\"aabba4a1\",\"6395\":\"f6027b24\",\"6397\":\"8fc250af\",\"6423\":\"1e8da08b\",\"6435\":\"b4633aa1\",\"6499\":\"aac79904\",\"6514\":\"d36ecbb8\",\"6526\":\"b2c8fd93\",\"6621\":\"cf64e54c\",\"6658\":\"fe512b5a\",\"6683\":\"2a35f0fe\",\"6703\":\"faa93a20\",\"6746\":\"8d3f75be\",\"6785\":\"07d4b66b\",\"6799\":\"754a77ae\",\"6823\":\"6e35b0cf\",\"6833\":\"c77c5928\",\"6834\":\"bc9e9f2b\",\"6837\":\"a706c464\",\"6861\":\"66a2e4c0\",\"6932\":\"a37ea756\",\"6946\":\"dd09a891\",\"6999\":\"3486cca0\",\"7013\":\"5240d550\",\"7067\":\"e9508417\",\"7087\":\"79101e8e\",\"7117\":\"b3239756\",\"7126\":\"b4b7d70b\",\"7181\":\"938de865\",\"7203\":\"03e2b86a\",\"7309\":\"f9d18abb\",\"7348\":\"40afbdc0\",\"7374\":\"932d083d\",\"7389\":\"fa6a1eb0\",\"7407\":\"4421929d\",\"7409\":\"8e71acc1\",\"7418\":\"2ac24978\",\"7428\":\"1e6f676f\",\"7489\":\"b8a76d29\",\"7564\":\"3a461e67\",\"7579\":\"1b98701c\",\"7584\":\"a162e3d6\",\"7627\":\"31dfd44e\",\"7663\":\"e79b053a\",\"7706\":\"430ce07e\",\"7753\":\"87963fd9\",\"7761\":\"0cf7cf29\",\"7773\":\"7e072552\",\"7790\":\"3790bece\",\"7809\":\"eb2c5f08\",\"7812\":\"6bb31bfb\",\"7831\":\"cfcb0221\",\"7842\":\"cbff451c\",\"7864\":\"59d0de32\",\"7865\":\"e02aee95\",\"7902\":\"f48e3002\",\"7909\":\"8f1d759d\",\"7911\":\"764ec401\",\"7974\":\"3f19c570\",\"7991\":\"5d96c772\",\"8007\":\"3025c802\",\"8009\":\"a65f1b78\",\"8052\":\"7d772984\",\"8076\":\"fc478e91\",\"8105\":\"4fd35586\",\"8109\":\"344e1845\",\"8114\":\"eb856986\",\"8120\":\"85042513\",\"8150\":\"09c54606\",\"8165\":\"d07843b4\",\"8187\":\"383aefbf\",\"8216\":\"16f39607\",\"8301\":\"877076ce\",\"8341\":\"fa84fa67\",\"8343\":\"dd515382\",\"8408\":\"2e2896bf\",\"8424\":\"a1a3e663\",\"8435\":\"484d30f8\",\"8483\":\"7fadf4ea\",\"8526\":\"5dd9c712\",\"8528\":\"f68ff14f\",\"8535\":\"189d090a\",\"8546\":\"0a89cbee\",\"8556\":\"0053a402\",\"8565\":\"c4ea9980\",\"8582\":\"9b93fffc\",\"8615\":\"0950a86f\",\"8624\":\"190dd7af\",\"8678\":\"8424d5dc\",\"8704\":\"ae4808df\",\"8762\":\"3d2b9142\",\"8797\":\"3168365d\",\"8856\":\"4593419f\",\"8859\":\"efb2561f\",\"8869\":\"74066774\",\"8876\":\"24bf6aed\",\"8880\":\"6ae9d985\",\"8929\":\"70ce258f\",\"8965\":\"51db703f\",\"8984\":\"1a816123\",\"9028\":\"12f6efe2\",\"9032\":\"b54e1975\",\"9037\":\"03715b7f\",\"9067\":\"1cc02121\",\"9070\":\"d49de235\",\"9086\":\"035adaa3\",\"9088\":\"9fbbeb5c\",\"9106\":\"b274c701\",\"9114\":\"d412d44e\",\"9168\":\"6afdec67\",\"9206\":\"bbf34514\",\"9245\":\"d882c265\",\"9280\":\"6e897b98\",\"9292\":\"96b77fb0\",\"9305\":\"4d748fb5\",\"9314\":\"3e43d34c\",\"9329\":\"c269472b\",\"9372\":\"67d6f914\",\"9374\":\"8ac7e6d7\",\"9384\":\"a4e7a69a\",\"9409\":\"c7569196\",\"9449\":\"2e1d2652\",\"9458\":\"07f0ae54\",\"9589\":\"9087e0ea\",\"9657\":\"0cccd5bf\",\"9658\":\"33669a59\",\"9675\":\"b4f16970\",\"9690\":\"0cd8a2c8\",\"9756\":\"4ac80c37\",\"9824\":\"b9ece376\",\"9831\":\"de8b3aa9\",\"9870\":\"f395e633\",\"9943\":\"d3ab0f18\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + \"6d3f3959\" + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 8792;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"3120\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunk_jbrowse_web\"] = globalThis[\"webpackChunk_jbrowse_web\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","import React, { lazy, Suspense } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport Loading from './components/Loading'\n\n// eslint-disable-next-line react-refresh/only-export-components\nconst Main = lazy(() => import('./components/Loader'))\n\nconst initialTimeStamp = Date.now()\n\nif (window.name.startsWith('JBrowseAuthWindow')) {\n  const parent = window.opener\n  if (parent) {\n    parent.postMessage({\n      name: window.name,\n      redirectUri: window.location.href,\n    })\n  }\n  window.close()\n}\n\nconst root = createRoot(document.getElementById('root')!)\n\nroot.render(\n  <React.StrictMode>\n    <Suspense fallback={<Loading />}>\n      <Main initialTimestamp={initialTimeStamp} />\n    </Suspense>\n  </React.StrictMode>,\n)\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","Loading","React","CircularProgress","disableShrink","style","position","top","left","marginTop","marginLeft","size","abs","Math","String","fromCharCode","Object","assign","trim","value","pattern","replacement","replace","indexof","search","indexOf","index","charCodeAt","begin","end","slice","length","array","push","line","column","character","characters","node","root","parent","type","props","children","return","prev","next","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","COMMENT","callback","output","i","stringify","element","join","compile","parse","rule","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","j","k","x","y","z","identifierWithPointTracking","fixedElements","WeakMap","compat","isImplicitRule","get","set","parsed","toRules","getRules","parentRules","removeLabel","hash","defaultStylisPlugins","map","exec","createCache","options","key","ssrStyles","document","querySelectorAll","Array","prototype","forEach","call","getAttribute","head","appendChild","setAttribute","container","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","split","currentSheet","collection","finalizingPlugins","insert","serializer","concat","selector","serialized","sheet","shouldCache","styles","cache","name","nonce","speedy","prepend","insertionPoint","registered","hydrate","memoize","fn","create","arg","undefined","EmotionCacheContext","HTMLElement","CacheProvider","Provider","__unsafe_useEmotionCache","useContext","withEmotionCache","func","forwardRef","ref","ThemeContext","Global","w","T","sheetRef","constructor","isSpeedy","rehydrating","querySelector","tags","before","current","flush","sheetRefCurrent","nextElementSibling","css","_len","arguments","args","_key","keyframes","insertable","apply","anim","toString","this","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","isDevelopment","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","toLowerCase","processStyleValue","match","p1","p2","cursor","noComponentSelectorMessage","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","serializedStyles","obj","string","isArray","asString","Error","interpolated","_i","createStringFromObject","previousCursor","result","cached","labelPattern","serializeStyles","stringMode","strings","raw","lastIndex","identifierName","str","h","len","StyleSheet","_this","_insertTag","tag","nextSibling","firstChild","insertBefore","ctr","_proto","nodes","createElement","createTextNode","createStyleElement","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","_tag$parentNode","parentNode","removeChild","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","useInsertionEffectWithLayoutFallback","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","registerStyles","isStringTag","insertStyles","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","ownerState","variant","color","theme","display","variants","transition","transitions","animation","entries","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","circleDisableShrink","stroke","inProps","thickness","other","classes","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","PI","toFixed","round","transform","width","height","role","viewBox","cx","cy","r","fill","getCircularProgressUtilityClass","useDefaultProps","params","A100","A200","A400","A700","defaultDarkOverlays","_","overlay","getOpacity","mode","inputPlaceholder","inputUnderline","switchTrackDisabled","switchTrack","getOverlays","createColorScheme","paletteInput","overlays","rest","createMixins","breakpoints","mixins","toolbar","minHeight","up","black","white","light","text","primary","secondary","disabled","divider","background","paper","default","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","createPalette","contrastThreshold","blue","getDefaultPrimary","getDefaultSecondary","error","red","getDefaultError","info","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastText","augmentColor","mainShade","lightShade","darkShade","JSON","contrastText","modes","deepmerge","common","grey","attachColorScheme","scheme","colorScheme","colorSchemes","createTheme","cssVariables","initialColorSchemes","defaultColorScheme","initialDefaultColorScheme","defaultColorSchemeInput","defaultScheme","colorSchemesInput","paletteOptions","createShadow","px","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","tooltip","createThemeNoVars","breakpointsInput","mixinsInput","spacing","spacingInput","transitionsInput","typography","typographyInput","shape","shapeInput","systemTheme","muiTheme","shadows","createTypography","createTransitions","reduce","acc","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","sx","createMuiTheme","createGetCssVar","prefix","appendVar","field","fallbacks","prepareTypographyVars","entry","fontStyle","fontVariant","fontStretch","fontSize","fontFamily","assignNestedKeys","keys","arrayKeys","temp","Number","includes","cssVarsParser","shouldSkipGeneratingVar","varsWithDefaults","shouldSkipPaths","cssVar","resolvedValue","some","prop","getCssValue","recurse","object","parentKeys","parserConfig","getSelector","defaultGetSelector","disableCssColorScheme","colorSchemeSelector","components","otherTheme","rootVars","rootCss","rootVarsWithDefaults","themeVars","colorSchemesMap","otherColorSchemes","cssObject","startsWith","generateThemeVars","schemeVars","generateStyleSheets","stylesheets","insertStyleSheet","defaultSchemeVal","cssColorSheme","finalCss","excludedVariables","excludeVariablesFromRoot","cssVarPrefix","stringifyTheme","baseTheme","serializableTheme","serializeTheme","val","setColor","defaultValue","toRgb","setColorChannel","silent","restTheme","createThemeWithVars","input","firstColorScheme","getCssVar","defaultSchemeInput","builtInLight","builtInDark","customColorSchemes","font","setCssVarColor","tokens","colorToken","Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","snackbarContentBackground","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip","colors","generateSpacing","createSpacing","getColorSchemeSelector","createGetColorSchemeSelector","toRuntimeSource","easing","easeInOut","easeOut","easeIn","sharp","duration","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","getAutoHeightDuration","constant","min","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","caseAllCaps","textTransform","defaultFontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","letterSpacing","casing","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","clone","getOverlayAlpha","elevation","alphaValue","log","themeId","defaultTheme","rootShouldForwardProp","createSimplePaletteValueFilter","additionalPropertiesToCheck","hasCorrectMainProperty","checkSimplePaletteColorValues","memoTheme","styleFn","lastValue","lastTheme","reactPropsRegex","isPropValid","test","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","propName","Insertion","_ref","newStyled","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","label","target","defaultShouldForwardProp","shouldUseAs","Styled","FinalTag","as","classInterpolations","finalShouldForwardProp","newProps","displayName","defaultProps","defineProperty","withComponent","nextTag","nextOptions","bind","styled","tagName","internal_processStyles","processor","PropsContext","config","styleOverrides","getThemeProps","values","xs","sm","md","lg","xl","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","item","breakpoint","containerKey","cssKey","createEmptyBreakpointObject","breakpointsInOrder","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","mergeBreakpointsInOrder","emptyBreakpoints","mergedOutput","resolveBreakpointValues","breakpointValues","base","customBase","breakpointsKeys","computeBreakpointsBase","clampWrapper","max","hexToRgb","re","RegExp","n","parseInt","decomposeColor","charAt","marker","substring","colorSpace","shift","parseFloat","private_safeColorChannel","decomposedColor","idx","colorChannel","recomposeColor","rgbToHex","int","hex","intToHex","hslToRgb","s","l","a","f","rgb","getLuminance","getContrastRatio","foreground","lumA","lumB","alpha","private_safeAlpha","darken","coefficient","private_safeDarken","lighten","private_safeLighten","emphasize","private_safeEmphasize","sortBreakpointsValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","createBreakpoints","unit","step","sortedValues","down","between","start","endIndex","only","not","keyIndex","systemDefaultTheme","resolveTheme","isObjectEmpty","PROCESSED_PROPS","Symbol","attachTheme","processedProps","defaultOverridesResolver","_props","processStyle","resolvedStyle","flatMap","subStyle","otherStyles","mergedState","variantLoop","slotShouldForwardProp","systemSx","__mui_systemSx","inputOptions","componentName","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","lowercaseFirstLetter","shouldForwardPropOption","defaultStyledResolver","transformStyleArg","muiStyledResolver","expressions","transformedStyle","expressionsWithDefaultTheme","resolvedStyleOverrides","propsWithTheme","slotKey","themeVariants","numOfCustomFnsApplied","placeholders","Component","muiName","withConfig","mui","argsInput","borderRadius","applyStyles","cssContainerQueries","sortContainerQueries","sorted","b","regex","isCqShorthand","getContainerQuery","shorthand","matches","containerQuery","isNaN","themeInput","toContainerQuery","mediaQuery","attachCq","properties","m","p","directions","t","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","themeSpacing","transformed","createUnarySpacing","getValue","transformer","cssProperties","cssProperty","getStyleFromPropValue","resolveCssProperty","merge","margin","padding","propTypes","filterProps","getPath","path","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","minWidth","maxHeight","bgcolor","backgroundColor","pt","pr","pb","pl","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginRight","marginBottom","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","justifyItems","justifySelf","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","right","bottom","boxShadow","boxSizing","textAlign","getThemeValue","traverse","sxInput","sxObject","styleKey","maybeFn","breakpointsValues","objects","allKeys","union","Set","every","objectsHaveSameKeys","unstable_createStyleFunctionSx","defaultGenerator","generate","configure","generator","reset","createClassNameGenerator","capitalize","toUpperCase","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","composeClasses","getUtilityClass","slotName","buffer","isPlainObject","getPrototypeOf","toStringTag","iterator","deepClone","source","formatMuiErrorMessage","code","url","encodeURIComponent","globalStateClasses","checked","completed","expanded","focused","focusVisible","open","readOnly","required","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","resolveProps","defaultSlotProps","slotProps","slotPropName","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","for","c","d","g","q","v","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","aa","ca","da","ea","fa","ha","add","ia","window","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","stack","Na","Oa","prepareStackTrace","Reflect","construct","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","configurable","enumerable","setValue","stopTracking","Ua","Wa","Xa","activeElement","body","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","nb","namespaceURI","innerHTML","valueOf","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","lineClamp","qb","rb","sb","setProperty","tb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","location","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","number","password","range","tel","time","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","console","Mi","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","nl","ol","rl","ql","unmount","unstable_scheduleHydration","splice","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","toArray","PureComponent","act","cloneElement","createContext","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","_extends","o","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","ns","def","definition","chunkId","all","promises","miniCssF","globalThis","Function","script","needAttach","scripts","getElementsByTagName","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","scriptUrl","importScripts","currentScript","installedCssChunks","miniCss","reject","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","request","createStylesheet","loadStylesheet","baseURI","self","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","Main","initialTimeStamp","opener","redirectUri","close","getElementById","initialTimestamp"],"sourceRoot":""}
\ No newline at end of file
Binary file x/static/media/roboto-cyrillic-400-normal.5d2930082227d172f62c.woff has changed
Binary file x/static/media/roboto-cyrillic-400-normal.a9e19870cf6c4b973427.woff2 has changed
Binary file x/static/media/roboto-cyrillic-ext-400-normal.135d076fa32aa0b4d105.woff has changed
Binary file x/static/media/roboto-cyrillic-ext-400-normal.5cec61a21cc20180fbe1.woff2 has changed
Binary file x/static/media/roboto-greek-400-normal.160a791a8e4f46bca3cc.woff has changed
Binary file x/static/media/roboto-greek-400-normal.2c32b1315be61477013a.woff2 has changed
Binary file x/static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff has changed
Binary file x/static/media/roboto-greek-ext-400-normal.1df4abad55796d11a0c8.woff2 has changed
Binary file x/static/media/roboto-latin-400-normal.047a7839f69b209db815.woff has changed
Binary file x/static/media/roboto-latin-400-normal.297d48e1b5a10c0831a9.woff2 has changed
Binary file x/static/media/roboto-latin-ext-400-normal.27da5b36b6d3a16f53f4.woff has changed
Binary file x/static/media/roboto-latin-ext-400-normal.2eeae187764baf05867d.woff2 has changed
Binary file x/static/media/roboto-vietnamese-400-normal.0dc97c66f9b542d6fa17.woff has changed
Binary file x/static/media/roboto-vietnamese-400-normal.d3f8e26d6c27de8102b6.woff2 has changed